diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..70e3dd5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,66 @@ +# User properties # +**/src/main/resources/application-i*.yml + +**/src/main/resources/rebel-remote.xml +**/src/main/resources/rebel.xml + +# Compiled class file # +*.class +target/ +.factorypath +.ipynb_checkpoints/ +.apt_generated/ +.apt_generated_tests/ + +# Log file # +*.log + +# Frontend +**/src-frontend/node/ +**/src-frontend/node_modules/ +**/src-frontend/mix-manifest.json + +# BlueJ files # +*.ctxt + +# Mobile Tools for Java (J2ME) # +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# Eclipse Files # +.eclipse/ +.project +.settings/ +.classpath +.metadata/ + +# IntelliJ Files # +.idea/ +*.iml +*.iws + +# OsX Files # +.DS_Store + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml # +hs_err_pid* + +# Misc # +*.vpp.bak* +*.vpp.lck* +~\$*.pptx +*.sh +bin/ +pom.xml.versionsBackup + + +/.run/ + diff --git a/e-rights-back-office/pom.xml b/e-rights-back-office/pom.xml new file mode 100644 index 0000000..47d3ee2 --- /dev/null +++ b/e-rights-back-office/pom.xml @@ -0,0 +1,458 @@ + + + + 4.0.0 + + eu.europa.eeas + e-rights + 5.0.1 + ../pom.xml + + + e-rights-back-office + ${e-rights.version} + war + + e-RIGHTS - Back Office + EEAS' e-RIGHTS - Back Office + + + + eu.europa.eeas + e-rights-common + ${e-rights.version} + + + + + + eu.europa.eeas + ananke-core-starter-scheduler + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + org.apache.tomcat.embed + tomcat-embed-jasper + provided + + + eu.europa.ec.digit.iam.ecas.client + ecas-tomcat-8.0 + provided + + + org.apache.logging.log4j + log4j-1.2-api + provided + + + org.apache.activemq + activemq-core + 5.7.0 + provided + + + org.springframework.boot + spring-boot-devtools + true + provided + + + org.springframework.security + spring-security-test + test + + + + org.projectlombok + lombok + provided + + + + org.springframework.boot + spring-boot-starter-cache + + + javax.cache + cache-api + + + org.ehcache + ehcache + + + + + + + + + + + + + + + com.oracle.weblogic + wlthint3client + + + + + com.google.crypto.tink + tink + 1.6.1 + runtime + + + + net.serenity-bdd + serenity-core + ${serenity.version} + test + + + net.serenity-bdd + serenity-cucumber + ${serenity.version} + test + + + net.serenity-bdd + serenity-screenplay + ${serenity.version} + test + + + net.serenity-bdd + serenity-screenplay-webdriver + ${serenity.version} + test + + + net.serenity-bdd + serenity-ensure + ${serenity.version} + test + + + org.junit.jupiter + junit-jupiter-api + 5.8.2 + test + + + + + org.junit.jupiter + junit-jupiter-engine + 5.8.2 + test + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + ${project.artifactId} + + + + maven-surefire-plugin + + false + + **/*Spec.java + **/*Test.java + **/*UT.java + **/*IT.java + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + e-rights-back-office + + + + + + org.projectlombok + lombok + + + + + + it.ninjatech + swagger-codegen-maven-plugin + + + e-rights-back-office + + generate-api + generate-model + + + e-rights-back-office + ${project.build.directory}/generated-sources + eu.europa.eeas.erights.backoffice.api.http.rest.api.internal + eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal + RestApi + TransferObject + + ${urlPrefix}${basedir}/src/main/resources/swagger/internal/e-rights-back-office.yml + ${urlPrefix}${basedir}/src/main/resources/swagger/internal/e-rights-back-office-abac.yml + ${urlPrefix}${basedir}/src/main/resources/swagger/internal/e-rights-back-office-summa.yml + + + + + + + + javax.money.CurrencyUnit + org.javamoney.moneta.Money + + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.CityTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.CountryTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementFileTransferObject + eu.europa.eeas.erights.common.tools.statemachine.MovementFileState + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementTypeTransferObject + eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VJobTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VPersonTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VReportMovementFileTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VAllowancesTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementContextTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.FunctionCodeTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StatutoryLinkCodeTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.InstitutionCodeTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PersonnelTypeTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.IataAirportTransferObject + eu.europa.eeas.erights.common.tools.statemachine.TravelAllowanceState + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PostingAllowanceTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VReportPostingAllowanceTransferObject + + eu.europa.eeas.ananke.tools.edms.connector.service.model.enums.Status + eu.europa.eeas.ananke.core.api.transferobject.AbstractTransferObject + eu.europa.eeas.ananke.core.audit.provider.api.transferobject.AbstractAuditableTransferObject + eu.europa.eeas.erights.web.p2phub.client.transferobject.BusinessPartnerResponseTransferObject + eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.AllowanceRequestInternalTransferObject + eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.OrderResponseInternalTransferObject + eu.europa.eeas.erights.web.p2phub.client.transferobject.OrderStatusResponseTransferObject + eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.SummaFundSourceTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestTransferObject + + + + + + + + + + org.openapitools + openapi-generator-maven-plugin + 7.6.0 + + + p2p-hub-client + + generate + + + RestApi + TransferObject + e-rights-back-office/src/main/resources/swagger/clients/p2p-hub.json + java + ${project.build.directory}/generated-sources + false + false + false + false + ${project.basedir}/src/main/resources/openapi-templates + + + false + false + true + + + + false + false + false + src/main/java + eu.europa.eeas.erights.web.p2phub.client + eu.europa.eeas.erights.web.p2phub.client.transferobject + java8-localdatetime + false + true + false + resttemplate + false + false + true + jackson + camelCase + camelCase + + + camelCase + + AbstractTransferObject + AbstractTransferObject + eu.europa.eeas.ananke.core.api.transferobject + + + modelPropertyNaming=camelCase + + + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.0.0 + + + enforce-versions + + enforce + + + + + + org.apache.logging.log4j:*:2.0.0 + + + org.apache.logging.log4j:*:2.16.0 + + + + + + + + + org.zeroturnaround + jrebel-maven-plugin + 1.1.10 + + + generate-rebel-xml + process-resources + + generate + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.5.0 + + + add-test-source + generate-test-sources + + add-test-source + + + + ${project.build.directory}/target/generated-sources/src/test + ${project.build.directory}/target/generated-sources/src/test/java + ${project.build.directory}/generated-sources/src/test + ${project.build.directory}/generated-sources/src/test/java + + + + + + + + + + add-webapp-as-resource + + true + + + + + src/main/resources + true + + **/*.properties + **/*.yml + **/*.yaml + **/*.xml + + + + src/main/resources + false + + certs/** + **/*.p12 + **/*.pfx + **/*.jks + + + + src/main/webapp + true + + + + + + + diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/AbacController.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/AbacController.java new file mode 100644 index 0000000..4ff3151 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/AbacController.java @@ -0,0 +1,196 @@ +package eu.europa.eeas.erights.backoffice.api.http.mvc.controller; + +import eu.europa.eeas.ananke.core.api.provider.http.mvc.AbstractMvcController; +import eu.europa.eeas.ananke.core.base.exception.AuthorizationRuntimeException; +import eu.europa.eeas.erights.backoffice.service.model.RequestPaymentAbacInfoModel; +import eu.europa.eeas.erights.backoffice.service.provider.abac.AbacBankAccountServiceProvider; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.security.PostingAllowancePermission; +import eu.europa.eeas.erights.common.security.PostingAllowanceSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.RequestJpaServiceProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import static eu.europa.eeas.erights.common.security.PostingAllowancePermission.ACCOMMODATION_PAYMENT_PAY; +import static java.lang.Long.valueOf; + +@Controller +@RequestMapping("/abac") +public class AbacController extends AbstractMvcController { + + public static final String WELCOME = "welcome"; + + public static final String YOU_ARE_NOT_AUTHORIZED_TO_CONSULT_THE_REQUEST = "You are not authorized to consult the request: "; + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + private MovementFileSecurityChecker securityChecker; + + @Autowired + @Qualifier(ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER) + private PostingAllowanceSecurityChecker postingAllowanceSecurityChecker; + + @Autowired + private RequestJpaServiceProvider requestJpaServiceProvider; + + + + @Autowired + private AbacBankAccountServiceProvider abacBankAccountServiceProvider; + + @GetMapping(path = "/abac-payments-details.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String abacPaymentDetailsRem(@RequestParam(required = true) String requestId, @RequestParam(required = true) String requestType, @RequestParam(required = true) String movementFileId, Model model) { + + // TODO This condition does not cause problems but does no make sense. It's not "TUD", its "TudRequest" + // Might be related to RIGD-1877 + if ((!requestType.equals("TUD") && securityChecker.canPayRemRequestAbac(requestJpaServiceProvider.getMovementFileId(valueOf(requestId)))) || + (requestType.equals("TUD") && securityChecker.canPayTudRequestAbac(requestJpaServiceProvider.getMovementFileId(valueOf(requestId))))) { + + model.addAttribute("requestId", requestId); + model.addAttribute("requestType", requestType); + model.addAttribute("movementFileId", movementFileId); + + return "abac-payments/abac.details.form"; + } + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008, YOU_ARE_NOT_AUTHORIZED_TO_CONSULT_THE_REQUEST + requestId); + + } + + @GetMapping(path = "/abac-payments-details-accommodation.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String abacPaymentDetailsAccommodation(@RequestParam(required = true) String postingAllowanceId, @RequestParam(required = true) String requestType, Model model) { + if (requestType.equals("AccommodationPayment") && postingAllowanceSecurityChecker.hasOrganisationIndependentAuthority(ACCOMMODATION_PAYMENT_PAY)) { + + model.addAttribute("postingAllowanceId", postingAllowanceId); + model.addAttribute("requestType", requestType); + + return "abac-payments/abac.details.accommodation"; + } + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008, YOU_ARE_NOT_AUTHORIZED_TO_CONSULT_THE_REQUEST + postingAllowanceId); + + } + + @GetMapping(path = "/send-to-abac.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String sendToAbac(@RequestParam(required = true) Long requestId, @RequestParam(required = true) String requestType, @RequestParam(required = true) String movementFileId, Model model) { + + // TODO This condition does not cause problems but does no make sense. It's not "TUD", its "TudRequest" + // Might be related to RIGD-1877 + + if ((!requestType.equals("TUD") && securityChecker.canPayRemRequestAbac(requestJpaServiceProvider.getMovementFileId(valueOf(requestId)))) || + (requestType.equals("TUD") && securityChecker.canPayTudRequestAbac(requestJpaServiceProvider.getMovementFileId(valueOf(requestId))))) { + RequestPaymentAbacInfoModel requestPaymentAbacInfoModel = new RequestPaymentAbacInfoModel(); + + + return "abac-payments/abac.details.form"; + } + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008, YOU_ARE_NOT_AUTHORIZED_TO_CONSULT_THE_REQUEST + requestId); + } + + @GetMapping(path = "/response-from-abac.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String responseFromAbac(@RequestParam(required = true) Long requestId, @RequestParam(required = true) String requestType, @RequestParam(required = true) String movementFileId, Model model) throws InterruptedException { + + if ((!requestType.equals("TUD") && securityChecker.canPayRemRequestAbac(requestJpaServiceProvider.getMovementFileId(requestId))) || + (requestType.equals("TUD") && securityChecker.canPayTudRequestAbac(requestJpaServiceProvider.getMovementFileId(requestId)))) { + + model.addAttribute("requestId", requestId); + model.addAttribute("isBackOffice", true); + + Thread.sleep(10000); + + switch (requestType) { + case "ClearingRequest": + // in common + return "e-rights-common:request/edit.clr.rem.request"; + case "AdvanceRequest": + // not in common + return "request/edit.adv.rem.request"; + case "TotalRemRequest": + // in common + return "e-rights-common:request/edit.total.rem.request"; + case "TudRequest": + // not in common + return "request/edit.tud.request"; + case "TopUpRequest": + // not in common + return "e-rights-common:request/edit.topup.request"; + default: + break; + } + } + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008, YOU_ARE_NOT_AUTHORIZED_TO_CONSULT_THE_REQUEST + requestId); + } + + @GetMapping(path = "/abac-info.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CONSULT_ENTITLEMENTS) + public String abacInfo(@RequestParam(required = true) String requestId, @RequestParam(required = true) String requestType, @RequestParam(required = true) String movementFileId, Model model) { + model.addAttribute("requestId", requestId); + model.addAttribute("requestType", requestType); + model.addAttribute("movementFileId", movementFileId); + + return "abac-payments/abac.info"; + } + + + + @GetMapping(path = "/refresh-all-bank-accounts.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CONSULT_ENTITLEMENTS) + public String refreshAllBankAccountsNup(){ + + + + return WELCOME; + } + + @GetMapping(path = "/refresh-all-bank-accounts-per-id.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CONSULT_ENTITLEMENTS) + public String refreshAllBankAccountsPerId(){ + + return WELCOME; + } + + @GetMapping(path = "/refresh-bank.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CONSULT_ENTITLEMENTS) + public String refreshPerIdBankAccountsNup(@RequestParam(required = true) Long perId){ + + + + return WELCOME; + } + + @GetMapping(path = "/refresh-bank-per-id.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CONSULT_ENTITLEMENTS) + public String refreshPerIdBankAccountsPerId(@RequestParam(required = true) Long perId){ + + + + return WELCOME; + } + + + @GetMapping(path = "/continueWithAbacProcess.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CONSULT_ENTITLEMENTS) + public String refreshAbacStatus(@RequestParam(required = true) Long requestId){ + + return WELCOME; + } + + @GetMapping(path = "/continueWithAbacProcessUUID.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CONSULT_ENTITLEMENTS) + public String refreshAbacStatus(@RequestParam(required = true) String uuid){ +// Thread thread = new Thread(() -> this.abacItemServiceProvider.restartAbacProcessUuid(uuid)); +// thread.start(); + return WELCOME; + } +} + diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/ListControllerBackOffice.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/ListControllerBackOffice.java new file mode 100644 index 0000000..bc47fb3 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/ListControllerBackOffice.java @@ -0,0 +1,46 @@ +package eu.europa.eeas.erights.backoffice.api.http.mvc.controller; + +import eu.europa.eeas.ananke.core.api.provider.http.mvc.AbstractMvcController; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.Breadcrumb; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.CascadingBreadcrumb; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +@RequestMapping("/list") +public class ListControllerBackOffice extends AbstractMvcController { + + @GetMapping(path = {"/movement-files.do"}) + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.list.movement_files")) + @PreAuthorize(MovementFileSecurityChecker.CAN_LIST) + public String listMovementFiles() { + + return "e-rights-common:list/list.file"; + } + + @GetMapping(path = "/allowances.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String listRequest(Model model) { + model.addAttribute("isBackOffice", true); + + return "reports/allowances"; + + } + + + @GetMapping(path = "/posting-allowances.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.list.posting_allowances")) + public String listPostingAllowances(Model model) { + + model.addAttribute("isBackOffice", true); + model.addAttribute("isShowYearDropDown", true); + return "reports/posting.allowances"; + + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/MovementDocsControllerBackOffice.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/MovementDocsControllerBackOffice.java new file mode 100644 index 0000000..45f25ed --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/MovementDocsControllerBackOffice.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.backoffice.api.http.mvc.controller; + +import eu.europa.eeas.ananke.core.api.provider.http.mvc.AbstractMvcController; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.Breadcrumb; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.CascadingBreadcrumb; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * Created by tapiafo on 15/03/2021; e-rights. + * + + * + * @author Fernando Tapia. + * + */ +@Controller +@RequestMapping("/movement-docs") +public class MovementDocsControllerBackOffice extends AbstractMvcController { + + /** + * Edit information Setion for staff member + * + * @param model s + * @return s + */ + @GetMapping(path = "/edit.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.movement-docs.edit")) + @PreAuthorize(MovementFileSecurityChecker.CAN_MANGE_GUIDELINES) + public String editMovementFileCommon(Model model) { + + return "movement-docs/edit"; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/MovementFileControllerBackOffice.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/MovementFileControllerBackOffice.java new file mode 100644 index 0000000..a6ba3e4 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/MovementFileControllerBackOffice.java @@ -0,0 +1,153 @@ +package eu.europa.eeas.erights.backoffice.api.http.mvc.controller; + +import eu.europa.eeas.ananke.core.api.provider.http.mvc.AbstractMvcController; +import eu.europa.eeas.ananke.core.base.exception.AuthorizationRuntimeException; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.Breadcrumb; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.CascadingBreadcrumb; +import eu.europa.eeas.erights.backoffice.tools.MovementFileFieldNames; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.boot.configuration.data.ERightsRootConfiguration; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.provider.ProceduresForMovementFileServiceProvider; +import org.apache.http.client.utils.URIBuilder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import org.springframework.web.servlet.view.RedirectView; + +/** + * Created by iliessu on 19/11/2019; e-rights. + * + *

+ * TODO : comment class ! + *

+ * + * @author Silviu Ilie. + * + */ +@Controller +@RequestMapping("/movement-files") +public class MovementFileControllerBackOffice extends AbstractMvcController { + + @Autowired + private ProceduresForMovementFileServiceProvider proceduresForMovementFileServiceProvider; + + @Autowired + private ERightsRootConfiguration eRightsRootConfiguration; + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + private MovementFileSecurityChecker securityChecker; + + @GetMapping(path = "/create-details.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CREATE) + public String createMovementFileDetails(Model model, @RequestParam(required = false, defaultValue = "0") Long jobId, + @RequestParam(required = false, defaultValue = "0") Long perId, @RequestParam(required = false, defaultValue = "0") Long jobIdTo) { + + model.addAttribute(MovementFileFieldNames.JOB_ID, jobId); + model.addAttribute(MovementFileFieldNames.PERSON_ID, perId); + + return "movement-file/file.details"; + } + + + @GetMapping(path = "/create-details-no-job.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CREATE) + public String createMovementFileDetailsNoJob(Model model, @RequestParam(required = false, defaultValue = "0") Long jobId, + @RequestParam(required = false, defaultValue = "0") Long perId, + @RequestParam(required = false, defaultValue = "0") Long jobIdTo, + @RequestParam(required = false) String movementContext) { + + model.addAttribute(MovementFileFieldNames.JOB_ID, jobId); + model.addAttribute(MovementFileFieldNames.PERSON_ID, perId); + model.addAttribute(MovementFileFieldNames.MOVEMENT_CONTEXT, movementContext); + return "movement-file/file.details-no-job"; + } + + @GetMapping(path = "/create-job-holder.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CREATE) + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.movement_files.add_new")) + public String createMovementFileJobHolder(Model model) { + + return "movement-file/file.job-holder"; + } + + @GetMapping(path = "/create-future-assignment.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CREATE) + public String createMovementFileFutureAssignment(Model model, @RequestParam(required = false, defaultValue = "0") Long jobId) { + + model.addAttribute(MovementFileFieldNames.JOB_ID, jobId); + + return "movement-file/file.future-assignment"; + } + + @GetMapping(path = "/staff-member-data.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CREATE) + public String staffMemberData(@RequestParam(required = false, defaultValue = "0") Long perId, Model model) { + + model.addAttribute(MovementFileFieldNames.PERSON_ID, perId); + + return "movement-file/file.staff-member-data"; + } + + @GetMapping(path = "/summary.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.movement_files.view")) + @PreAuthorize(MovementFileSecurityChecker.CAN_CREATE) + public String summaryMovementFile(Model model) { + + return "movement-file/file.summary"; + } + + @GetMapping(path = "/view.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.movement_files.view")) + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String editMovementFileCommon(@RequestParam(required = true) String id, @RequestParam(required = false, defaultValue = "false") Boolean fromWizard, Model model) { + if (this.securityChecker.canView(Long.valueOf(id))) { + model.addAttribute("fileId", id); + model.addAttribute("fromWizard", fromWizard); + + return "e-rights-common:movement-file/edit/file"; + } + + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008); + } + + @GetMapping("/goToFrontOffice.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public RedirectView redirectWithUsingRedirectView(RedirectAttributes attributes, @RequestParam String id, @RequestParam String path, @RequestParam String goToTab) { + //Generate URL for movement file + String frontOfficeUrl = eRightsRootConfiguration.getHostName(); + if (eRightsRootConfiguration.getFrontOfficeHostName() != null) { + frontOfficeUrl = eRightsRootConfiguration.getFrontOfficeHostName(); + } + + URIBuilder builder = new URIBuilder() + .setScheme(eRightsRootConfiguration.getProtocol()) + .setHost(frontOfficeUrl) + .setPath(path); + + attributes.addAttribute("id", id); + attributes.addAttribute("gototab", goToTab); + return new RedirectView(builder.toString()); + } + + //TODO Delete after running first time + @GetMapping(path = "/deleteMovemntFiles.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.movement_files.view")) + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String updateVolumeAndKg(@RequestParam Long movementFileId) { + proceduresForMovementFileServiceProvider.removeMovementFiles(movementFileId); + return null; + + } + + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/PostingAllowanceControllerBackOffice.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/PostingAllowanceControllerBackOffice.java new file mode 100644 index 0000000..ddab744 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/PostingAllowanceControllerBackOffice.java @@ -0,0 +1,92 @@ +package eu.europa.eeas.erights.backoffice.api.http.mvc.controller; + +import eu.europa.eeas.ananke.core.api.provider.http.mvc.AbstractMvcController; +import eu.europa.eeas.ananke.core.base.exception.AuthorizationRuntimeException; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.Breadcrumb; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.CascadingBreadcrumb; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.security.PostingAllowanceSecurityChecker; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * Created by tapiafo on 15/03/2021; e-rights. + * + *

+ * TODO : comment class ! + *

+ * + * @author Fernando Tapia. + * + */ +@Controller +@RequestMapping("/posting-allowances") +public class PostingAllowanceControllerBackOffice extends AbstractMvcController { + + @Autowired + @Qualifier(ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER) + private PostingAllowanceSecurityChecker postingAllowanceSecurityChecker; + + + @GetMapping(path = "/view-tar.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.posting_allowances.view")) + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String editTarRequestBackOffice(@RequestParam(required = true) String postingAllowanceId, Model model) { + model.addAttribute("postingAllowanceId", postingAllowanceId); + model.addAttribute("isBackOffice", true); + + return "e-rights-common:posting-allowance/view.tar"; + } + + @GetMapping(path = "/regularization-view-tar.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.posting_allowances.view")) + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String editTarRegularizationRequestBackOffice(@RequestParam(required = true) String postingAllowanceId, Model model) { + model.addAttribute("postingAllowanceId", postingAllowanceId); + model.addAttribute("isBackOffice", true); + return "e-rights-common:posting-allowance/regularization-view.tar"; + } + + @GetMapping(path = "/accommodation-declaration-view.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.posting_allowances.view")) + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String editAccommodationDeclarationBackOffice( + @RequestParam(required = true) String postingAllowanceId, Model model) { + if(Boolean.TRUE.equals(postingAllowanceSecurityChecker.canViewAccommodationDeclaration(Long.valueOf(postingAllowanceId)))){ + model.addAttribute("postingAllowanceId", postingAllowanceId); + model.addAttribute("isBackOffice", true); + return "e-rights-common:posting-allowance/accommodation-declaration-view"; + } + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008); + } + + @GetMapping(path = "/accommodation-declaration-create.do") + @PreAuthorize(PostingAllowanceSecurityChecker.CAN_CREATE_ACCOMMODATION_DECLARATION) + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.accommodation_declarations.add_new")) + public String createAccDeclarationJobHolder(Model model) { + + return "accommodation/declaration.job-holder"; + } + + @GetMapping(path = "/accommodation-payment-view.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.posting_allowances.view")) + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String editAccommodationPaymentBackOffice( + @RequestParam(required = true) String postingAllowanceId, Model model) { + if(Boolean.TRUE.equals(postingAllowanceSecurityChecker.canViewAccommodationDeclaration(Long.valueOf(postingAllowanceId)))){ + model.addAttribute("postingAllowanceId", postingAllowanceId); + model.addAttribute("isBackOffice", true); + return "e-rights-common:posting-allowance/accommodation-payment-view"; + } + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/ReportingBackOffice.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/ReportingBackOffice.java new file mode 100644 index 0000000..9be2a05 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/ReportingBackOffice.java @@ -0,0 +1,49 @@ +package eu.europa.eeas.erights.backoffice.api.http.mvc.controller; + +import eu.europa.eeas.ananke.core.api.provider.http.mvc.AbstractMvcController; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.Breadcrumb; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.CascadingBreadcrumb; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +@RequestMapping("/reports") +public class ReportingBackOffice extends AbstractMvcController { + + @GetMapping(path = {"/empty-rates-entitlements.do"}) + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.reports.empty_rates_entitlements")) + @PreAuthorize(MovementFileSecurityChecker.CAN_VIEW_REPORTS) + public String listMovementFiles() { + + return "reports/empty.rates.entitlements"; + } + + @GetMapping(path = {"/entitlement-max-default.do"}) + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.reports.empty_rates_entitlements")) + @PreAuthorize(MovementFileSecurityChecker.CAN_VIEW_REPORTS) + public String entitlementMaxDefault() { + + return "reports/entitlement.max.default"; + } + + + @GetMapping(path = {"/iata-routes-calculation.do"}) + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.reports.empty_rates_entitlements")) + @PreAuthorize(MovementFileSecurityChecker.CAN_CALCULATE_ROUTE_PRICE) + public String iataRoutesCalculation() { + + return "admin/iata-routes-calculation"; + } + + @GetMapping(path = {"/it-admin.do"}) + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.admin.it_support")) + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_ADMIN_IT_SUPPORT) + public String itAdmin() { + + return "admin/it-admin"; + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/RequestsControllerBackOffice.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/RequestsControllerBackOffice.java new file mode 100644 index 0000000..32eb06c --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/RequestsControllerBackOffice.java @@ -0,0 +1,148 @@ +package eu.europa.eeas.erights.backoffice.api.http.mvc.controller; + +import eu.europa.eeas.ananke.core.api.provider.http.mvc.AbstractMvcController; +import eu.europa.eeas.ananke.core.base.exception.AuthorizationRuntimeException; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.Breadcrumb; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.CascadingBreadcrumb; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.RequestJpaServiceProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * Created by tapiafo on 15/03/2021; e-rights. + * + *

+ * TODO : comment class ! + *

+ * + * @author Fernando Tapia. + * + */ +@Controller +@RequestMapping("/requests") +public class RequestsControllerBackOffice extends AbstractMvcController { + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + private MovementFileSecurityChecker securityChecker; + + @Autowired + private RequestJpaServiceProvider requestJpaServiceProvider; + + @GetMapping(path = "/view-tud.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String editTudRequestBackOffice(@RequestParam(required = true) String requestId, Model model) { + if (securityChecker.canView(requestJpaServiceProvider.getMovementFileId(Long.valueOf(requestId))) && + securityChecker.canConsultEntitlements(requestJpaServiceProvider.getMovementFileId(Long.valueOf(requestId)))) { + model.addAttribute("requestId", requestId); + + return "request/edit.tud.request"; + } + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008, "You are not authorized to consult the TUD request: " + requestId); + } + + @GetMapping(path = "/view-adv-rem.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String editAdvanceRequestBackOffice(@RequestParam(required = true) String requestId, Model model) { + + if (securityChecker.canView(requestJpaServiceProvider.getMovementFileId(Long.valueOf(requestId))) && + securityChecker.canConsultEntitlements(requestJpaServiceProvider.getMovementFileId(Long.valueOf(requestId)))) { + model.addAttribute("requestId", requestId); + + return "request/edit.adv.rem.request"; + } + + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008, "You are not authorized to consult the Advance request: " + requestId); + + } + + @GetMapping(path = "/view-total-rem.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String editTotalRemRequestBackOffice(@RequestParam(required = true) String requestId, Model model) { + if (securityChecker.canView(requestJpaServiceProvider.getMovementFileId(Long.valueOf(requestId)))) { + model.addAttribute("requestId", requestId); + model.addAttribute("isBackOffice", true); + return "e-rights-common:request/edit.total.rem.request"; + } + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008, "You are not authorized to consult the Total REM request: " + requestId); + } + + @GetMapping(path = "/view-clr-rem.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String editClrRemRequestBackOffice(@RequestParam(required = true) String requestId, Model model) { + if (securityChecker.canView(requestJpaServiceProvider.getMovementFileId(Long.valueOf(requestId)))) { + model.addAttribute("requestId", requestId); + model.addAttribute("isBackOffice", true); + return "e-rights-common:request/edit.clr.rem.request"; + } + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008, "You are not authorized to consult the Clearing request: " + requestId); + } + + @GetMapping(path = "/view-installation.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String viewInstallationBackOffice(@RequestParam(required = true) String requestId, Model model) { + if (securityChecker.canView(requestJpaServiceProvider.getMovementFileId(Long.valueOf(requestId)))) { + model.addAttribute("requestId", requestId); + model.addAttribute("isBackOffice", true); + return "e-rights-common:request/edit.install.request"; + } + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008, "You are not authorized to consult the Installation request: " + requestId); + } + + @GetMapping(path = "/view-topup.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String viewTopupBackOffice( + // We'll use one of the two: + // If 'requestId' is used, it means that the Topup request already exists + // If 'parentRequestId' are 'parentRequestType' are used, it means that the Topup request is being created + @RequestParam(required = false) String requestId, + @RequestParam(required = false) String parentRequestId, + @RequestParam(required = false) String parentRequestType, + Model model) { + if (canView(requestId, parentRequestId)) { + model.addAttribute("requestId", requestId); + model.addAttribute("parentRequestId", parentRequestId); + model.addAttribute("parentRequestType", parentRequestType); + model.addAttribute("isBackOffice", true); + return "e-rights-common:request/edit.topup.request"; + } + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008, "You are not authorized to consult the TopUp request: " + requestId); + } + + private Boolean canView(String requestId, String parentRequestId) { + if (requestId != null) { + return securityChecker.canView(requestJpaServiceProvider.getMovementFileId(Long.valueOf(requestId))); + } else if (parentRequestId != null) { + return securityChecker.canView(requestJpaServiceProvider.getMovementFileId(Long.valueOf(parentRequestId))); + } + return false; + } + + @GetMapping(path = "/view-resettlement.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String viewResettlementBackOffice(@RequestParam(required = true) String requestId, Model model) { + if (securityChecker.canView(requestJpaServiceProvider.getMovementFileId(Long.valueOf(requestId)))) { + model.addAttribute("requestId", requestId); + model.addAttribute("isBackOffice", true); + return "e-rights-common:request/edit.resettlement.request"; + } + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008, "You are not authorized to consult the Resettlement request: " + requestId); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/SummaController.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/SummaController.java new file mode 100644 index 0000000..e35601c --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/mvc/controller/SummaController.java @@ -0,0 +1,158 @@ +package eu.europa.eeas.erights.backoffice.api.http.mvc.controller; + +import eu.europa.eeas.ananke.core.api.provider.http.mvc.AbstractMvcController; +import eu.europa.eeas.ananke.core.base.exception.AuthorizationRuntimeException; +import eu.europa.eeas.erights.backoffice.service.provider.abac.AbacBankAccountServiceProvider; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.RequestJpaServiceProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import static java.lang.Long.valueOf; + +@Controller +@RequestMapping("/summa") +public class SummaController extends AbstractMvcController { + + public static final String WELCOME = "welcome"; + + public static final String YOU_ARE_NOT_AUTHORIZED_TO_CONSULT_THE_REQUEST = "You are not authorized to consult the request: "; + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + private MovementFileSecurityChecker securityChecker; + + @Autowired + private RequestJpaServiceProvider requestJpaServiceProvider; + + + + @Autowired + private AbacBankAccountServiceProvider abacBankAccountServiceProvider; + + @GetMapping(path = "/p2p-payments-details.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String summaPaymentDetailsRem(@RequestParam(required = true) String requestId, @RequestParam(required = true) String requestType, @RequestParam(required = true) String movementFileId, Model model) { + + // TODO This condition does not cause problems but does no make sense. It's not "TUD", its "TudRequest" + // Might be related to RIGD-1877 + if ((!requestType.equals("TUD") && securityChecker.canPayRemRequestAbac(requestJpaServiceProvider.getMovementFileId(valueOf(requestId)))) || + (requestType.equals("TUD") && securityChecker.canPayTudRequestAbac(requestJpaServiceProvider.getMovementFileId(valueOf(requestId))))) { + + model.addAttribute("requestId", requestId); + model.addAttribute("requestType", requestType); + model.addAttribute("movementFileId", movementFileId); + + return "abac-payments/abac.details.form"; + } + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008, YOU_ARE_NOT_AUTHORIZED_TO_CONSULT_THE_REQUEST + requestId); + + } + + + @GetMapping(path = "/response-from-p2p.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public String responseFromAbac(@RequestParam(required = true) Long requestId, @RequestParam(required = true) String requestType, @RequestParam(required = true) String movementFileId, Model model) throws InterruptedException { + + if ((!requestType.equals("TUD") && securityChecker.canPayRemRequestAbac(requestJpaServiceProvider.getMovementFileId(requestId))) || + (requestType.equals("TUD") && securityChecker.canPayTudRequestAbac(requestJpaServiceProvider.getMovementFileId(requestId)))) { + + model.addAttribute("requestId", requestId); + model.addAttribute("isBackOffice", true); + + Thread.sleep(10000); + + switch (requestType) { + case "ClearingRequest": + // in common + return "e-rights-common:request/edit.clr.rem.request"; + case "AdvanceRequest": + // not in common + return "request/edit.adv.rem.request"; + case "TotalRemRequest": + // in common + return "e-rights-common:request/edit.total.rem.request"; + case "TudRequest": + // not in common + return "request/edit.tud.request"; + case "TopUpRequest": + // not in common + return "e-rights-common:request/edit.topup.request"; + default: + break; + } + } + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008, YOU_ARE_NOT_AUTHORIZED_TO_CONSULT_THE_REQUEST + requestId); + } + + @GetMapping(path = "/abac-info.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CONSULT_ENTITLEMENTS) + public String abacInfo(@RequestParam(required = true) String requestId, @RequestParam(required = true) String requestType, @RequestParam(required = true) String movementFileId, Model model) { + model.addAttribute("requestId", requestId); + model.addAttribute("requestType", requestType); + model.addAttribute("movementFileId", movementFileId); + + return "abac-payments/abac.info"; + } + + + + @GetMapping(path = "/refresh-all-bank-accounts.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CONSULT_ENTITLEMENTS) + public String refreshAllBankAccountsNup(){ + + + + return WELCOME; + } + + @GetMapping(path = "/refresh-all-bank-accounts-per-id.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CONSULT_ENTITLEMENTS) + public String refreshAllBankAccountsPerId(){ + + return WELCOME; + } + + @GetMapping(path = "/refresh-bank.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CONSULT_ENTITLEMENTS) + public String refreshPerIdBankAccountsNup(@RequestParam(required = true) Long perId){ + + + + return WELCOME; + } + + @GetMapping(path = "/refresh-bank-per-id.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CONSULT_ENTITLEMENTS) + public String refreshPerIdBankAccountsPerId(@RequestParam(required = true) Long perId){ + + + + return WELCOME; + } + + + @GetMapping(path = "/continueWithAbacProcess.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CONSULT_ENTITLEMENTS) + public String refreshAbacStatus(@RequestParam(required = true) Long requestId){ + + return WELCOME; + } + + @GetMapping(path = "/continueWithAbacProcessUUID.do") + @PreAuthorize(MovementFileSecurityChecker.CAN_CONSULT_ENTITLEMENTS) + public String refreshAbacStatus(@RequestParam(required = true) String uuid){ +// Thread thread = new Thread(() -> this.abacItemServiceProvider.restartAbacProcessUuid(uuid)); +// thread.start(); + return WELCOME; + } +} + diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/AbacInfoRestController.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/AbacInfoRestController.java new file mode 100644 index 0000000..e9c43c0 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/AbacInfoRestController.java @@ -0,0 +1,156 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.backoffice.api.http.rest.api.internal.AbacInfoRestApi; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.*; +import eu.europa.eeas.erights.backoffice.service.data.provider.*; +import eu.europa.eeas.erights.backoffice.service.model.*; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.util.List; + +import static java.util.Objects.nonNull; + +/** + * Rest controller to retrieve Abac info about Budget Lines, Budgdel delegations, etc. + * + * @author idominju + */ +@RestController +public class AbacInfoRestController extends AbstractRestController implements AbacInfoRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + + @Autowired + private AbstractUserHandler userHandler; + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity> findBudgetLineInfos(@NotNull @Valid String budgetPosition, + @Valid String delegation, @Valid Integer exerciseId) { + + BudgetLineInfoJpaServiceProvider budgetInfoProvider = (BudgetLineInfoJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(BudgetLineInfoModel.class); + + List modelList = budgetInfoProvider.findByBudgetPositionAndDelegationAndExerciseId( + budgetPosition, delegation, exerciseId); + + return ResponseEntity.ok(getBeanMapper().mapAsList(modelList, BudgetLineInfoTransferObject.class)); + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity> findDelegationCodes(@NotNull @Valid Integer exerciseId) { + + DelegationCodesJpaServiceProvider provider = (DelegationCodesJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(DelegationCodesModel.class); + + List modelList = provider.findByOrgExerciseId(exerciseId); + + return ResponseEntity.ok(getBeanMapper().mapAsList(modelList, DelegationCodesTransferObject.class)); + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity findAbacInfoPersonById(Long personId) { + + PersonAbacCriteriaInfoJpaServiceProvider provider = (PersonAbacCriteriaInfoJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + PersonAbacInfoModel.class); + + List personAbacInfoModels = provider.findPersonAbacInfoByPersonId( + personId); + if (CollectionUtils.isEmpty(personAbacInfoModels)) { + return ResponseEntity.noContent().build(); + } else if (personAbacInfoModels.size() > 1) { + return ResponseEntity.status(HttpStatus.CONFLICT).build(); + } + PersonAbacInfoModel personAbacInfoModel = personAbacInfoModels.get(0); + return nonNull(personAbacInfoModel.getCriteriaCode()) ? + ResponseEntity.ok( + getBeanMapper().map(personAbacInfoModel, PersonAbacInfoTransferObject.class)) + : ResponseEntity.noContent().build(); + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity> findBudgetLineForErights(String movementContext) { + BudgetLineSubpostJpaServiceProvider provider = (BudgetLineSubpostJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(BudgetLineSubpostModel.class); + + List listOfBudgetLines = provider.findBudgetLineForErights(movementContext); + return ResponseEntity.ok(listOfBudgetLines); + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity> findBudgetLineSubposts( + @Valid String budgetPositionBudgdel, + @Valid String budgetPositionErights, + @Valid String requestType, + @Valid String lstCd, + @Valid String subpostType, + @Valid Integer personnelTypeId) { + + BudgetLineSubpostJpaServiceProvider provider = (BudgetLineSubpostJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(BudgetLineSubpostModel.class); + + List modelList = provider.findBudgetLineSubpostsUsingOptionalFilters(budgetPositionBudgdel, + budgetPositionErights, requestType, lstCd, subpostType, personnelTypeId); + + return ResponseEntity.ok(getBeanMapper().mapAsList(modelList, BudgetLineSubpostTransferObject.class)); + } + + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity> findRequestSubposts(@Valid Long requestId, @Valid Long requestPaymentAbacInfoId) { + + RequestSubpostJpaServiceProvider provider = (RequestSubpostJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RequestSubpostModel.class); + List modelList = null; + if (requestPaymentAbacInfoId == null) { + modelList = provider.findRequestSubpostByRequestPaymentAbacInfoId(requestPaymentAbacInfoId); + } else { + modelList = provider.findRequestSubpostByRequestId(requestId); + } + + return ResponseEntity.ok(getBeanMapper().mapAsList(modelList, RequestSubpostTransferObject.class)); + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity findRequestPersonAbacInfoByRequestId(Long requestId) { + + RequestPaymentAbacInfoJpaServiceProvider provider = (RequestPaymentAbacInfoJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RequestPaymentAbacInfoModel.class); + + RequestPaymentAbacInfoModel modelList = provider.findRequestPaymentAbacInfoByRequestId(requestId); + + return ResponseEntity.ok(getBeanMapper().map(modelList, RequestPaymentAbacInfoTransferObject.class)); + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity createAbacEntitiesForRequest(@Valid RequestPaymentAbacInfoTransferObject data) { + Long result; + + //Create + data.setAgentName(userHandler.getUser().getUid().toUpperCase()); + RequestPaymentAbacInfoJpaServiceProvider service = (RequestPaymentAbacInfoJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RequestPaymentAbacInfoModel.class); + RequestPaymentAbacInfoModel requestPaymentAbacInfoModel = service.create(getBeanMapper().map(data, RequestPaymentAbacInfoModel.class)); + result = requestPaymentAbacInfoModel.getId(); + + //Send to ABAC +// Thread thread = new Thread(() -> abacInvoiceServiceProvider.create(requestPaymentAbacInfoModel)); +// thread.start(); + + return ResponseEntity.ok(result); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/AbacRestController.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/AbacRestController.java new file mode 100644 index 0000000..ed1c1d2 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/AbacRestController.java @@ -0,0 +1,85 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.erights.backoffice.api.http.rest.api.internal.AbacRestApi; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.AbacCommunicationTransferObject; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.AbacItemTransferObject; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.RequestAbacPaymentReferenceTransferObject; +import eu.europa.eeas.erights.backoffice.service.provider.abac.AbacItemServiceProvider; +import eu.europa.eeas.erights.common.data.jpa.dto.AbacCommunicationDTO; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.RequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.AbacItemModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class AbacRestController extends AbstractRestController implements AbacRestApi { + + public static final Logger logger = LoggerFactory.getLogger(AbacRestController.class); + + @Autowired + private RequestJpaServiceProvider requestJpaServiceProvider; + + @Autowired + private AbacItemServiceProvider abacItemServiceProvider; + + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity> getAbacCommunicationItems(Long requestId) { + List modelList = abacItemServiceProvider.getAbacCommunicationItemsByRequestId(requestId); + return ResponseEntity.ok(getBeanMapper().mapAsList(modelList, AbacCommunicationTransferObject.class)); + + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity> getAbacItems(Long requestId) { + List modelList = abacItemServiceProvider.getItemsByRequestId(requestId); + return ResponseEntity.ok(getBeanMapper().mapAsList(modelList, AbacItemTransferObject.class)); + + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity updatePaymentReference(Long requestId, RequestAbacPaymentReferenceTransferObject requestAbacPaymentReference) { +// + return null; + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity updateWorkFlow(Long requestId) { + + logger.info("Updating workflow for request ID: {} ...", requestId); + + RequestModel requestModel = requestJpaServiceProvider.read(requestId); + String abacPaymentOrderId = requestModel.getPaymentOrder(); + + logger.info("Updating workflow: abacPaymentOrder = {}", abacPaymentOrderId); + + + logger.info("Updating workflow: abacPaymentOrder is NULL. Returning OK with empty body."); + + return ResponseEntity.ok(""); + } + + @Override + public ResponseEntity validatePaymentOrder(String abacId) { + // return ResponseEntity.ok(abacPaymentOrderServiceProvider.isPaymentOrderValid(abacId)); + return null; + } + + @Override + public ResponseEntity updateAccommodationPaymentWorkFlow(Long postingAllowanceId) { + return null; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/AllowancesFilterRestController.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/AllowancesFilterRestController.java new file mode 100644 index 0000000..143261a --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/AllowancesFilterRestController.java @@ -0,0 +1,112 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.backoffice.api.http.rest.api.internal.AllowancesFilterRestApi; +import eu.europa.eeas.erights.common.tools.allowances.AllowancePage; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.InlineResponse200TransferObject; +import eu.europa.eeas.erights.backoffice.service.provider.SessionDataCollectorServiceProvider; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VAllowancesTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.VAllowanceJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.VAllowanceModel; +import eu.europa.eeas.erights.common.tools.utils.KendoParamConverter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +public class AllowancesFilterRestController extends AbstractRestController implements AllowancesFilterRestApi { + + @Autowired + public SessionDataCollectorServiceProvider sessionCollectorService; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + + + + @Override + public ResponseEntity getAllowancesBackOfficeFiltered( + String additionalQueryParams) { + + // 1ï¸âƒ£ Get all real query parameters sent by Kendo + Map params = extractAllQueryParams(); + + // 2ï¸âƒ£ Extract pagination + int page = params.containsKey("page") ? Integer.parseInt(params.get("page")) : 1; + int pageSize = params.containsKey("pageSize") ? Integer.parseInt(params.get("pageSize")) : 25; + + // 3ï¸âƒ£ Convert Kendo nested params → JSON + String sortJson = KendoParamConverter.extractSortJson(params); + String filterJson = KendoParamConverter.extractFilterJson(params); + + VAllowanceJpaServiceProvider service = + (VAllowanceJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(VAllowanceModel.class); + + // 4ï¸âƒ£ Query backend + AllowancePage pageResult = + service.getAllowancesBackOfficeFiltered(page, pageSize, sortJson, filterJson); + + // 5ï¸âƒ£ Convert entity results to DTOs + List dtoList = + getBeanMapper().mapAsList(pageResult.getData(), VAllowancesTransferObject.class); + + // 6ï¸âƒ£ Build the Kendo response object + InlineResponse200TransferObject response = + new InlineResponse200TransferObject() + .data(dtoList) + .total((int) pageResult.getTotal()); + + return ResponseEntity.ok(response); + } + + private Map extractAllQueryParams() { + HttpServletRequest request = + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()) + .getRequest(); + + Map map = new HashMap<>(); + + request.getParameterMap().forEach((key, values) -> { + if (values != null && values.length > 0) { + map.put(key, values[0]); + } + }); + + return map; + } + + private Map parseQueryParams(String query) throws UnsupportedEncodingException { + Map map = new HashMap<>(); + + if (query == null || query.isEmpty()) { + return map; + } + + String[] pairs = query.split("&"); + for (String pair : pairs) { + int idx = pair.indexOf('='); + if (idx > -1) { + String key = URLDecoder.decode(pair.substring(0, idx), "UTF-8"); + String value = URLDecoder.decode(pair.substring(idx + 1), "UTF-8"); + map.put(key, value); + } + } + + return map; + } + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/AllowancesRestController.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/AllowancesRestController.java new file mode 100644 index 0000000..df3616e --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/AllowancesRestController.java @@ -0,0 +1,60 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.backoffice.api.http.rest.api.internal.AllowancesRestApi; +import eu.europa.eeas.erights.backoffice.service.provider.SessionDataCollectorServiceProvider; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VAllowancesTransferObject; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.VAllowanceJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.VAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.TravelAllowanceModel; +import eu.europa.eeas.erights.common.service.provider.allowances.TravelAllowanceServiceProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class AllowancesRestController extends AbstractRestController implements AllowancesRestApi { + + @Autowired + public SessionDataCollectorServiceProvider sessionCollectorService; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + + @Override + public ResponseEntity createAllAsDraftNumberRequest(Integer numberRequests) { + + + TravelAllowanceServiceProvider service = (TravelAllowanceServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TravelAllowanceModel.class); + Long allTravelAllowances = service.createAllTravelAllowances(numberRequests); + return ResponseEntity.ok(allTravelAllowances); + } + + @Override + public ResponseEntity> createTravelAllowanceAsDraft(Long personId) { + + TravelAllowanceServiceProvider service = (TravelAllowanceServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TravelAllowanceModel.class); + List createdResourceIds = service.createTravelAllowanceFromVNewTravelPostingAllowance(personId); + return ResponseEntity.ok(createdResourceIds); + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_CONSULT_ENTITLEMENTS) + public ResponseEntity> getAllowancesBackOffice() { + VAllowanceJpaServiceProvider service = (VAllowanceJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + VAllowanceModel.class); + List transferObject = getBeanMapper().mapAsList(service.getAllowancesBackOffice(), VAllowancesTransferObject.class); + return ResponseEntity.ok(transferObject); + } + + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/AuditMovementFilesRestController.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/AuditMovementFilesRestController.java new file mode 100644 index 0000000..88da710 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/AuditMovementFilesRestController.java @@ -0,0 +1,54 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.backoffice.api.http.rest.api.internal.AuditMovementFilesRestApi; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.AuditMovementFileTransferObject; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.AuditMovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.AuditMovementFileModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class AuditMovementFilesRestController extends AbstractRestController implements AuditMovementFilesRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity> getAuditMovementFiles() { + ResponseEntity> result; + + AuditMovementFileJpaServiceProvider reportMovementFileProvider = (AuditMovementFileJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(AuditMovementFileModel.class); + List models = reportMovementFileProvider.getActiveMovementFiles(); + List transferObjects = getBeanMapper().mapAsList(models, AuditMovementFileTransferObject.class); + result = ResponseEntity.ok(transferObjects); + return result; + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity> getAuditMovementFilesByFileId(Long id) { + return null; + } + + public ResponseEntity> getAuditMovementFilesByFileId(String fileId) { + ResponseEntity> result; + + AuditMovementFileJpaServiceProvider auditMovementFileProvider = (AuditMovementFileJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(AuditMovementFileModel.class); + List auditMovementFileModel = auditMovementFileProvider.getAuditMovementFilesByFileID(fileId); + List transferObjects = getBeanMapper().mapAsList(auditMovementFileModel, AuditMovementFileTransferObject.class); + result = ResponseEntity.ok(transferObjects); + + return result; + } + +} \ No newline at end of file diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/EntitlementMaxDefaultController.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/EntitlementMaxDefaultController.java new file mode 100644 index 0000000..7db3e1f --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/EntitlementMaxDefaultController.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.erights.backoffice.api.http.rest.api.internal.EntitlementsMaxDefaultRestApi; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.EntitlementMaxDefaultTransferObject; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementMaxDefaultJpaServiceProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class EntitlementMaxDefaultController extends AbstractRestController implements EntitlementsMaxDefaultRestApi { + + @Autowired + private final EntitlementMaxDefaultJpaServiceProvider entitlementMaxDefaultJpaServiceProvider; + + public EntitlementMaxDefaultController(EntitlementMaxDefaultJpaServiceProvider entitlementMaxDefaultJpaServiceProvider) { + this.entitlementMaxDefaultJpaServiceProvider = entitlementMaxDefaultJpaServiceProvider; + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity newEntitlementMaxDefault(EntitlementMaxDefaultTransferObject entitlementMaxDefault) { + entitlementMaxDefaultJpaServiceProvider.newEntitlementMaxDefault(entitlementMaxDefault.getYear(), + entitlementMaxDefault.getAmount(), + entitlementMaxDefault.getCountryFrom(), + entitlementMaxDefault.getCountryTo(), + entitlementMaxDefault.getRateType()); + return ResponseEntity.status(HttpStatus.OK).build(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/JobsRestController.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/JobsRestController.java new file mode 100644 index 0000000..c9b1405 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/JobsRestController.java @@ -0,0 +1,48 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.backoffice.api.http.rest.api.internal.JobsRestApi; +import eu.europa.eeas.erights.backoffice.exceptionhandling.ERightsBackOfficeExceptionCode; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VJobTransferObject; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.PostingTravelAllowanceTransitionService; +import eu.europa.eeas.erights.common.service.data.provider.VJobJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.VJobModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class JobsRestController extends AbstractRestController implements JobsRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + private PostingTravelAllowanceTransitionService postingTravelAllowanceTransitionService; + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity getJob(Long jobId) { + VJobJpaServiceProvider jobJpaServiceProvider = (VJobJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(VJobModel.class); + VJobModel jobModel = jobJpaServiceProvider.get(jobId); + if (jobModel == null) { + throw new ResourceNotFoundRuntimeException(ERightsBackOfficeExceptionCode.ERBO001, jobId.toString()); + } + + return ResponseEntity.ok(getBeanMapper().map(jobModel, VJobTransferObject.class)); + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity postingTravelAllowanceTransitionJob() { + //postingTravelAllowanceTransitionService.execute(); + return null; + } + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/MovementFilesRestController.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/MovementFilesRestController.java new file mode 100644 index 0000000..314955c --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/MovementFilesRestController.java @@ -0,0 +1,103 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.backoffice.api.http.rest.api.internal.MovementFilesRestApi; +import eu.europa.eeas.erights.backoffice.service.provider.SessionDataCollectorServiceProvider; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementFileTransferObject; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + + +@RestController("BackOfficeMovementFilesRestController") +public class MovementFilesRestController extends AbstractRestController implements MovementFilesRestApi { + + @Autowired + public SessionDataCollectorServiceProvider sessionCollectorService; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity createMovementFile(@Valid MovementFileTransferObject data) { + Long result; + + MovementFileJpaServiceProvider service = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + MovementFileModel movementFile = service.create(getBeanMapper().map(data, MovementFileModel.class)); + result = movementFile.getId(); + + return ResponseEntity.ok(result); + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity delete(Long id) { + MovementFileJpaServiceProvider movementFileProvider = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(MovementFileModel.class); + movementFileProvider.deleteMovementFile(id); + return ResponseEntity.ok().build(); + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity createAsDraft(@Valid MovementFileTransferObject data) { + MovementFileJpaServiceProvider service = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + Long id = service.createDraft(getBeanMapper().map(data, MovementFileModel.class)); + sessionCollectorService.clearDataFromSession(); + return ResponseEntity.ok(id); + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity updateDraft(@Valid MovementFileTransferObject data) { + MovementFileJpaServiceProvider service = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + Long id = service.updateDraft(getBeanMapper().map(data, MovementFileModel.class)); + sessionCollectorService.clearDataFromSession(); + return ResponseEntity.ok(id); + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity createAsPending(@Valid MovementFileTransferObject data) { + MovementFileJpaServiceProvider service = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + Long id = service.createPending(getBeanMapper().map(data, MovementFileModel.class)); + sessionCollectorService.clearDataFromSession(); + return ResponseEntity.ok(id); + } + + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity draftToPending(@Valid MovementFileTransferObject data) { + MovementFileJpaServiceProvider service = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + Long id = service.draftToPending((getBeanMapper().map(data, MovementFileModel.class))); + sessionCollectorService.clearDataFromSession(); + return ResponseEntity.ok(id); + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity getMovementFile(Long id) { + ResponseEntity result; + + MovementFileJpaServiceProvider movementFileProvider = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(MovementFileModel.class); + MovementFileModel movementFileModel = movementFileProvider.get(id); + result = ResponseEntity.ok(getBeanMapper().map(movementFileModel, MovementFileTransferObject.class)); + + return result; + } + + + + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/P2pHubRestController.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/P2pHubRestController.java new file mode 100644 index 0000000..e463f90 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/P2pHubRestController.java @@ -0,0 +1,211 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.backoffice.api.http.rest.api.internal.SummaRestApi; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.AllowanceRequestInternalTransferObject; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.OrderResponseInternalTransferObject; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.SummaFundSourceTransferObject; +import eu.europa.eeas.erights.backoffice.boot.configuration.p2phub.P2pHubRestClientConfiguration; +import eu.europa.eeas.erights.backoffice.service.data.provider.AllowancePaymentJpaServiceProvider; +import eu.europa.eeas.erights.backoffice.service.data.provider.SummaFundSourceJpaServiceProvider; +import eu.europa.eeas.erights.backoffice.service.data.provider.p2phub.OrderResponseJpaServiceProvider; +import eu.europa.eeas.erights.backoffice.service.model.SummaFundSourceModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.AllowancePaymentModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderResponseModel; +import eu.europa.eeas.erights.backoffice.service.provider.p2p.AllowanceOrderConsumerServiceProvider; +import eu.europa.eeas.erights.backoffice.service.provider.p2p.AuthTokenProviderServiceProvider; +import eu.europa.eeas.erights.backoffice.service.provider.p2p.BusinessPartnerConsumerServiceProvider; +import eu.europa.eeas.erights.backoffice.service.provider.p2p.P2pOrderUpdaterServiceProvider; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestTransferObject; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.AppParameterJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.tools.app.AppParamType; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.BusinessPartnerResponseTransferObject; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.OrderStatusResponseTransferObject; +import org.apache.coyote.Request; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Objects; + +@RestController +public class P2pHubRestController extends AbstractRestController implements SummaRestApi { + + + public static final Logger logger = LoggerFactory.getLogger(P2pHubRestController.class); + + private final DataServiceProviderRegistry dataServiceProviderRegistry; + + private final BusinessPartnerConsumerServiceProvider businessPartnerConsumerServiceProvider; + private final AllowanceOrderConsumerServiceProvider allowanceOrderConsumerServiceProvider; + private final AllowancePaymentJpaServiceProvider allowancePaymentJpaServiceProvider; + private final OrderResponseJpaServiceProvider orderResponseJpaServiceProvider ; + private final AppParameterJpaServiceProvider appParameterService; + private final AuthTokenProviderServiceProvider authTokenProviderServiceProvider; + private final P2pOrderUpdaterServiceProvider p2pOrderUpdaterServiceProvider; + + + public P2pHubRestController(DataServiceProviderRegistry dataServiceProviderRegistry, BusinessPartnerConsumerServiceProvider businessPartnerConsumerServiceProvider, AllowancePaymentJpaServiceProvider allowancePaymentJpaServiceProvider, AppParameterJpaServiceProvider appParameterService, AuthTokenProviderServiceProvider authTokenProviderServiceProvider, AllowanceOrderConsumerServiceProvider allowanceOrderConsumerServiceProvider, OrderResponseJpaServiceProvider orderResponseJpaServiceProvider, P2pOrderUpdaterServiceProvider p2pOrderUpdaterServiceProvider) { + this.dataServiceProviderRegistry = dataServiceProviderRegistry; + + this.businessPartnerConsumerServiceProvider = businessPartnerConsumerServiceProvider; + this.allowancePaymentJpaServiceProvider = allowancePaymentJpaServiceProvider; + this.appParameterService = appParameterService; + this.authTokenProviderServiceProvider = authTokenProviderServiceProvider; + this.allowanceOrderConsumerServiceProvider = allowanceOrderConsumerServiceProvider; + this.orderResponseJpaServiceProvider = orderResponseJpaServiceProvider; + this.p2pOrderUpdaterServiceProvider = p2pOrderUpdaterServiceProvider; + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity> getFundSources() { + ResponseEntity> result = null; + + SummaFundSourceJpaServiceProvider service = (SummaFundSourceJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(SummaFundSourceModel.class); + List summaFundSource = service.findAll(); + result = ResponseEntity.ok(getBeanMapper().mapAsList(summaFundSource, SummaFundSourceTransferObject.class)); + + return result; + } + + + @Override + public ResponseEntity getBusinessPartnerFromSumma(Long perid) { + + BusinessPartnerResponseTransferObject BusinessPartnerResponseTransferObject = businessPartnerConsumerServiceProvider.getBusinessPartnerResponseTransferObjectByPerId(perid); + return ResponseEntity.ok(BusinessPartnerResponseTransferObject); + + } + + + + @Override + public ResponseEntity refreshFromSummaPerIdBankAccountsPerId(String perId) { + + if (perId == null || perId.trim().isEmpty()) { + return ResponseEntity.badRequest().body("Invalid perId"); + } + + String[] parts = perId.split(","); + + for (String part : parts) { + String trimmed = part.trim(); + if (trimmed.isEmpty()) { + continue; + } + + try { + Long id = Long.valueOf(trimmed); + this.businessPartnerConsumerServiceProvider + .saveOrUpdateBankAccountsFromSummaByPerId(id); + } catch (NumberFormatException ex) { + return ResponseEntity.badRequest() + .body("Invalid perId value: " + trimmed); + } + } + + return ResponseEntity.ok("OK"); + } + + + + @Override + public ResponseEntity refreshAllBankAccountsFromSumma() { + this.businessPartnerConsumerServiceProvider.saveOrUpdateBankAccountsForAllMovementFilesBankAccountsFromSumma(); + return ResponseEntity.ok(null); + } + + @Override + public ResponseEntity refreshAllOldBankAccountsFromSumma() { + this.businessPartnerConsumerServiceProvider.saveOrUpdateOldBankAccountsForAllMovementFilesBankAccountsFromSumma(); + return ResponseEntity.ok(null); + } + + + @Override + public ResponseEntity getPopToken() { + return ResponseEntity.ok(authTokenProviderServiceProvider.getSystemPoPToken()); + } + + @Override + public ResponseEntity createSummaPayment(AllowanceRequestInternalTransferObject allowanceRequest) { + + ResponseEntity responseEntity = allowanceOrderConsumerServiceProvider.submitAllowanceCreation(allowanceRequest); + return responseEntity; + + } + + @Override + public ResponseEntity> getAllowanceRequestByRequestId(Long requestId) { + List allowancePaymentModel = this.allowancePaymentJpaServiceProvider.getAllowancePaymentModelByRequestId(requestId); + + return ResponseEntity.ok(getBeanMapper().mapAsList(allowancePaymentModel, AllowanceRequestInternalTransferObject.class)); + + } + + @Override + public ResponseEntity getAllowanceRequestEmptyByRequestId(Long requestId) { + ResponseEntity responseEntity = null; + String clientId = this.appParameterService.getAppParametersByTypeAndKey(AppParamType.SUMMA, "CLIENT_ID").get(0).getValue(); + AllowancePaymentModel allowancePaymentModel = this.allowancePaymentJpaServiceProvider.createAllowancePaymentModel(requestId); + //allowancePaymentModel.getHeader().set + responseEntity = ResponseEntity.ok(getBeanMapper().map(allowancePaymentModel, AllowanceRequestInternalTransferObject.class)); + return responseEntity; + + } + + @Override + public ResponseEntity> getOrderResponseInternalByRequestId(Long requestId) { + List orderResponseModels = this.orderResponseJpaServiceProvider.findAllByRequestId(requestId); + + return ResponseEntity.ok(getBeanMapper().mapAsList(orderResponseModels, OrderResponseInternalTransferObject.class)); + + } + + + @Override + public ResponseEntity getOrderIdStatus(Long orderId) { + OrderStatusResponseTransferObject orderStatusResponseTransferObject = this.allowanceOrderConsumerServiceProvider.getOrderStatus(orderId); + return ResponseEntity.ok(orderStatusResponseTransferObject); + } + + @Override + public ResponseEntity refreshAllowanceP2pOrderStatus(Long requestId) { + RequestModel requestModel = p2pOrderUpdaterServiceProvider.updateRequestP2pOrderStatusById(requestId); + return ResponseEntity.ok(getBeanMapper().map(requestModel, RequestTransferObject.class)); + } + + @Override + public ResponseEntity validateOrder(Long orderId) { + try { + OrderStatusResponseTransferObject orderStatus = + allowanceOrderConsumerServiceProvider.getOrderStatus(orderId); + + // If no response returned → invalid + if (orderStatus == null) { + logger.warn("No status returned for order {}", orderId); + return ResponseEntity.ok(false); + } + + // Compare String orderId from response with Long input + + if (Objects.equals(orderId, Long.valueOf(orderStatus.getOrderId()))) { + return ResponseEntity.ok(true); + } else { + logger.warn("Order ID mismatch. Expected {}, got {}", orderId, orderStatus.getOrderId()); + return ResponseEntity.ok(false); + } + + } catch (Exception ex) { + logger.error("Error validating order {}: {}", orderId, ex.getMessage()); + return ResponseEntity.ok(false); + } + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/PersonsRestController.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/PersonsRestController.java new file mode 100644 index 0000000..f8df193 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/PersonsRestController.java @@ -0,0 +1,51 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.backoffice.api.http.rest.api.internal.PersonsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VPersonTransferObject; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.VPersonJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.VPersonModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.List; + +@RestController +public class PersonsRestController extends AbstractRestController implements PersonsRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity> getPersons(@Valid Long perId, @Valid String firstName, @Valid String lastName, + @Valid String orgName) { + ResponseEntity> result = null; + + VPersonJpaServiceProvider service = (VPersonJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(VPersonModel.class); + List persons = service.findPersonsBy(perId, firstName, lastName, orgName); + result = ResponseEntity.ok(getBeanMapper().mapAsList(persons, VPersonTransferObject.class)); + + return result; + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity getPerson(Long perId) { + ResponseEntity result = null; + + VPersonJpaServiceProvider service = (VPersonJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(VPersonModel.class); + VPersonModel person = service.findById(perId); + result = ResponseEntity.ok(getBeanMapper().map(person, VPersonTransferObject.class)); + + return result; + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/PlaceOriginAirportRestController.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/PlaceOriginAirportRestController.java new file mode 100644 index 0000000..2da1349 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/PlaceOriginAirportRestController.java @@ -0,0 +1,58 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.erights.backoffice.api.http.rest.api.internal.PlaceOriginAirportRestApi; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.PlaceOriginAirportTransferObject; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.PlaceOriginAirportJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.PlaceOriginAirportModel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class PlaceOriginAirportRestController extends AbstractRestController implements PlaceOriginAirportRestApi { + + public static final Logger logger = LoggerFactory.getLogger(PlaceOriginAirportRestController.class); + + @Autowired + private PlaceOriginAirportJpaServiceProvider placeOriginAirportJpaServiceProvider; + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity placeOriginAirportByCityNameAndCountryCode(String cityName, String countryCode) { + PlaceOriginAirportModel placeOriginAirportModel = placeOriginAirportJpaServiceProvider.findIataCodeByCityNameAndCountryCode(cityName, countryCode); + if(countryCode == null){ + return ResponseEntity.noContent().build(); + } + return ResponseEntity.ok(getBeanMapper().map(placeOriginAirportModel, PlaceOriginAirportTransferObject.class)); + + + } + + @Override + public ResponseEntity savePlaceOriginAirportByCityNameAndCountryCode(PlaceOriginAirportTransferObject placeOriginAirport) { + PlaceOriginAirportModel placeOriginAirportModel = getBeanMapper().map(placeOriginAirport, PlaceOriginAirportModel.class); + if(!placeOriginAirportJpaServiceProvider.checkIfPlaceOriginExists(placeOriginAirportModel)){ + placeOriginAirportModel=placeOriginAirportJpaServiceProvider.create(placeOriginAirportModel); + return ResponseEntity.ok(getBeanMapper().map(placeOriginAirportJpaServiceProvider.read(placeOriginAirportModel.getId()), PlaceOriginAirportTransferObject.class)); + }else{ + return ResponseEntity + .status(HttpStatus.CONFLICT) + .body(placeOriginAirport); + } + + + + + + } + + + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/ReportRestController.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/ReportRestController.java new file mode 100644 index 0000000..f0f54af --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/ReportRestController.java @@ -0,0 +1,64 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.backoffice.api.http.rest.api.internal.ReportRestApi; +import eu.europa.eeas.erights.backoffice.api.http.rest.api.internal.VReportPostingAllowancesRestApi; +import eu.europa.eeas.erights.backoffice.service.data.provider.VReportMovementFileJpaServiceProvider; +import eu.europa.eeas.erights.backoffice.service.data.provider.allowance.VReportPostingAllowanceServiceProvider; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VReportMovementFileTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VReportPostingAllowanceTransferObject; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.security.PostingAllowanceSecurityChecker; +import eu.europa.eeas.erights.common.service.model.VReportMovementFileModel; +import eu.europa.eeas.erights.common.service.model.allowances.VReportPostingAllowanceModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class ReportRestController extends AbstractRestController implements ReportRestApi, VReportPostingAllowancesRestApi { + + private final DataServiceProviderRegistry dataServiceProviderRegistry; + private final VReportPostingAllowanceServiceProvider vReportPostingAllowanceServiceProvider; + + @Autowired + @Qualifier(ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER) + private PostingAllowanceSecurityChecker postingAllowanceSecurityChecker; + + public ReportRestController(DataServiceProviderRegistry dataServiceProviderRegistry, + VReportPostingAllowanceServiceProvider vReportPostingAllowanceServiceProvider) { + this.dataServiceProviderRegistry = dataServiceProviderRegistry; + this.vReportPostingAllowanceServiceProvider = vReportPostingAllowanceServiceProvider; + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity> getReportMovementFiles() { + ResponseEntity> result; + + VReportMovementFileJpaServiceProvider reportMovementFileProvider = (VReportMovementFileJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(VReportMovementFileModel.class); + List models = reportMovementFileProvider.getAllMovementFiles(); + List transferObjects = getBeanMapper().mapAsList(models, VReportMovementFileTransferObject.class); + result = ResponseEntity.ok(transferObjects); + return result; + } + + @Override + public ResponseEntity> getVReportPostingAllowances(Long personId, Integer year) { + + if (postingAllowanceSecurityChecker.hasOrganisationIndependentListAuthority() + || postingAllowanceSecurityChecker.hasOrganisationsWithListAuthority()) { + List reportPostingAllowanceModels = vReportPostingAllowanceServiceProvider.getVReportPostingAllowances(personId, year); + return ResponseEntity.ok(getBeanMapper().mapAsList(reportPostingAllowanceModels, VReportPostingAllowanceTransferObject.class)); + } + return ResponseEntity.status(HttpStatus.FORBIDDEN).build(); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/SessionRestController.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/SessionRestController.java new file mode 100644 index 0000000..2e88808 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/controller/internal/SessionRestController.java @@ -0,0 +1,82 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.erights.backoffice.api.http.rest.api.internal.SessionRestApi; +import eu.europa.eeas.erights.backoffice.service.provider.SessionDataCollectorServiceProvider; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementFileTransferObject; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +import static org.springframework.http.HttpStatus.OK; + +@RestController +@RequestMapping("/internal/api") +public class SessionRestController extends AbstractRestController implements SessionRestApi { + + @Autowired + public SessionDataCollectorServiceProvider sessionDataCollectorServiceProvider; + + @Autowired + public MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity saveMovementFileData(@Valid MovementFileTransferObject movementFileTransferObject) { + ResponseEntity result; + + MovementFileModel movementFileModel = getBeanMapper().map(movementFileTransferObject, MovementFileModel.class); + MovementFileModel model = sessionDataCollectorServiceProvider.saveDataInSession(movementFileModel); + + Long id = movementFileJpaServiceProvider.saveOrUpdate(model); + + // Set id when creating, so the client receives it: + if (id != null && model.getId() == null) { + model.setId(id); + } + + sessionDataCollectorServiceProvider.clearDataFromSession(); + result = ResponseEntity.ok(getBeanMapper().map(model, MovementFileTransferObject.class)); + return result; + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity saveMovementFileDataInSession(@Valid MovementFileTransferObject movementFileTransferObject) { + ResponseEntity result; + + MovementFileModel movementFileModel = getBeanMapper().map(movementFileTransferObject, MovementFileModel.class); + + MovementFileModel model = sessionDataCollectorServiceProvider.saveDataInSession(movementFileModel); + result = ResponseEntity.ok(getBeanMapper().map(model, MovementFileTransferObject.class)); + return result; + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity deleteMovementFileFromSession() { + sessionDataCollectorServiceProvider.clearDataFromSession(); + return new ResponseEntity<>(OK); + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity getMovementFileDataFromSession() { + ResponseEntity result; + MovementFileModel model = sessionDataCollectorServiceProvider.getMovementFileDataFromSession(); + result = ResponseEntity.ok(getBeanMapper().map(model, MovementFileTransferObject.class)); + return result; + } + + + + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/AbacCommunicationTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/AbacCommunicationTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..4aade67 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/AbacCommunicationTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,42 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.AbacCommunicationTransferObject; +import eu.europa.eeas.erights.backoffice.service.model.BudgetLineInfoModel; +import eu.europa.eeas.erights.common.data.jpa.dto.AbacCommunicationDTO; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link BudgetLineInfoModel} + * + * @author idominju + */ +public class AbacCommunicationTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(AbacCommunicationTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(AbacCommunicationDTO.class); + + public AbacCommunicationTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/AbacItemTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/AbacItemTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..363841f --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/AbacItemTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,42 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.AbacItemTransferObject; +import eu.europa.eeas.erights.backoffice.service.model.BudgetLineInfoModel; +import eu.europa.eeas.erights.common.service.model.AbacItemModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link BudgetLineInfoModel} + * + * @author idominju + */ +public class AbacItemTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(AbacItemTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(AbacItemModel.class); + + public AbacItemTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/BudgetLineInfoTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/BudgetLineInfoTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..ad858ab --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/BudgetLineInfoTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.BudgetLineInfoTransferObject; +import eu.europa.eeas.erights.backoffice.service.model.BudgetLineInfoModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link BudgetLineInfoModel} + * + * @author idominju + */ +public class BudgetLineInfoTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(BudgetLineInfoTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(BudgetLineInfoModel.class); + + public BudgetLineInfoTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/BudgetLineSubpostTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/BudgetLineSubpostTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..b87922f --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/BudgetLineSubpostTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.BudgetLineSubpostTransferObject; +import eu.europa.eeas.erights.backoffice.service.model.BudgetLineSubpostModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link BudgetLineSubpostModel} + * + * @author idominju + */ +public class BudgetLineSubpostTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(BudgetLineSubpostTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(BudgetLineSubpostModel.class); + + public BudgetLineSubpostTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/BusinessPartnerBankAccountTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/BusinessPartnerBankAccountTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..644daaf --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/BusinessPartnerBankAccountTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,52 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.BusinessPartnerBankAccountModel; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.BusinessPartnerBankAccountTransferObject; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Map builder for {@link BusinessPartnerBankAccountModel}. + */ +public class BusinessPartnerBankAccountTransferObjectToModelClassMapBuilder + extends AbstractTransferObjectToModelClassMapBuilder< + BusinessPartnerBankAccountTransferObject, + BusinessPartnerBankAccountModel> { + + private static final Type A_TYPE = + TypeFactory.valueOf(BusinessPartnerBankAccountTransferObject.class); + + private static final Type B_TYPE = + TypeFactory.valueOf(BusinessPartnerBankAccountModel.class); + + public BusinessPartnerBankAccountTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap( + ClassMapBuilder classMapBuilder) { + + // If your Extended TO delegates with same accessor names, this will work. + // Otherwise, add explicit field mappings below. + classMapBuilder.byDefault(); + + // Examples if names differ: + // classMapBuilder.field("iban", "iban"); + // classMapBuilder.field("bic", "bic"); + // classMapBuilder.field("accountHolderName", "holderName"); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/BusinessPartnerInternalTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/BusinessPartnerInternalTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..d927620 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/BusinessPartnerInternalTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,106 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder; + + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.BusinessPartnerInternalTransferObject; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.BusinessPartnerBankAccountModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.BusinessPartnerModel; + +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link BusinessPartnerModel} + * + * @author tapiafo + */ +public class BusinessPartnerInternalTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(BusinessPartnerInternalTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(BusinessPartnerModel.class); + + public BusinessPartnerInternalTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder + .byDefault() + .customize(new CustomMapper() { + @Override + public void mapAtoB(BusinessPartnerInternalTransferObject src, + BusinessPartnerModel dst, + MappingContext context) { + // Default mapping first + super.mapAtoB(src, dst, context); + + if (dst.getBankAccounts() == null || dst.getBankAccounts().isEmpty()) { + return; + } + + // -------- perId from MappingContext (your existing logic) -------- + Long perId = null; + if (context != null) { + Object perIdObj = context.getProperty("perId"); + if (perIdObj instanceof Number) { + perId = ((Number) perIdObj).longValue(); + } else if (perIdObj != null) { + try { + perId = Long.valueOf(perIdObj.toString()); + } catch (NumberFormatException ignored) {} + } + } + + if (perId != null) { + // optional top-level perId + try { + dst.setPerId(perId); + } catch (NoSuchMethodError | UnsupportedOperationException ignored) { + // ignore if top-level setter doesn't exist + } + // propagate to bank accounts + for (BusinessPartnerBankAccountModel m : dst.getBankAccounts()) { + if (m != null) { + m.setPerId(perId); + } + } + } + + // -------- businessPartnerIdByExtSystem → bankAccount.lef -------- + // This value may be absent in the payload; handle null safely. + Object extIdObj = src.getBusinessPartnerIdByExtSystem(); // may be null + if (extIdObj != null) { + // Assuming bankAccount.lef is a String; if it's numeric, parse accordingly. + String extId = extIdObj.toString().trim(); + if (!extId.isEmpty()) { + for (BusinessPartnerBankAccountModel m : dst.getBankAccounts()) { + if (m != null) { + m.setLef(extId); + // If lef is Long, use: + // try { m.setLef(Long.valueOf(extId)); } catch (NumberFormatException ignored) {} + } + } + } + } + } + }); + } + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/DelegationCodesTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/DelegationCodesTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..40ab1d3 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/DelegationCodesTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.DelegationCodesTransferObject; +import eu.europa.eeas.erights.backoffice.service.model.DelegationCodesModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link DelegationCodesModel} + * + * @author idominju + */ +public class DelegationCodesTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(DelegationCodesTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(DelegationCodesModel.class); + + public DelegationCodesTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/MovementFileDetailTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/MovementFileDetailTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..fcf2fb3 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/MovementFileDetailTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.MovementFileDetailTransferObject; +import eu.europa.eeas.erights.common.service.model.MovementFileDetailModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class MovementFileDetailTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(MovementFileDetailTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(MovementFileDetailModel.class); + + public MovementFileDetailTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/PersonAbacInfoTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/PersonAbacInfoTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..226d8ce --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/PersonAbacInfoTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.PersonAbacInfoTransferObject; +import eu.europa.eeas.erights.backoffice.service.model.PersonAbacInfoModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link PersonAbacInfoModel} + * + * @author idominju + */ +public class PersonAbacInfoTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(PersonAbacInfoTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(PersonAbacInfoModel.class); + + public PersonAbacInfoTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/PlaceOriginAirportTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/PlaceOriginAirportTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..0195b7c --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/PlaceOriginAirportTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.PlaceOriginAirportTransferObject; +import eu.europa.eeas.erights.common.service.model.PlaceOriginAirportModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PlaceOriginAirportTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(PlaceOriginAirportTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(PlaceOriginAirportModel.class); + + public PlaceOriginAirportTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/RequestPaymentAbacInfoTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/RequestPaymentAbacInfoTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..7b12a63 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/RequestPaymentAbacInfoTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,43 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.RequestPaymentAbacInfoTransferObject; +import eu.europa.eeas.erights.backoffice.service.model.RequestPaymentAbacInfoModel; +import eu.europa.eeas.erights.backoffice.service.model.RequestSubpostModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link RequestSubpostModel} + * + * @author idominju + */ +public class RequestPaymentAbacInfoTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder< + RequestPaymentAbacInfoTransferObject, RequestPaymentAbacInfoModel> { + + private static final Type A_TYPE = TypeFactory.valueOf(RequestPaymentAbacInfoTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(RequestPaymentAbacInfoModel.class); + + public RequestPaymentAbacInfoTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/RequestSubpostTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/RequestSubpostTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..0defd13 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/RequestSubpostTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.RequestSubpostTransferObject; +import eu.europa.eeas.erights.backoffice.service.model.RequestSubpostModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link RequestSubpostModel} + * + * @author idominju + */ +public class RequestSubpostTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(RequestSubpostTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(RequestSubpostModel.class); + + public RequestSubpostTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/SummaFundSourceTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/SummaFundSourceTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..7659268 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/SummaFundSourceTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,42 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder; + + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.internal.SummaFundSourceTransferObject; +import eu.europa.eeas.erights.backoffice.service.model.SummaFundSourceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link SummaFundSourceModel} + * + * @author idominju + */ +public class SummaFundSourceTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(SummaFundSourceTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(SummaFundSourceModel.class); + + public SummaFundSourceTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/AllowanceRequestInternalTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/AllowanceRequestInternalTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..e06d1f1 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/AllowanceRequestInternalTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,47 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder.p2phub; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.AllowanceRequestInternalTransferObject; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.AllowancePaymentModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link AllowancePaymentModel} + */ +public class AllowanceRequestInternalTransferObjectToModelClassMapBuilder + extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = + TypeFactory.valueOf(AllowanceRequestInternalTransferObject.class); + + private static final Type B_TYPE = + TypeFactory.valueOf(AllowancePaymentModel.class); + + public AllowanceRequestInternalTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + // If field names match (runId, batchId, hrRequestId, payMethodEnum, value), this is enough. + classMapBuilder.byDefault(); + + // If the enum or any field names differ, add explicit mappings here, e.g.: + // classMapBuilder.field("payMethod", "payMethodEnum"); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/BusinessPartnerIdentificationTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/BusinessPartnerIdentificationTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..c44c515 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/BusinessPartnerIdentificationTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,47 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder.p2phub; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.BusinessPartnerIdentificationModel; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.BusinessPartnerIdentificationTransferObject; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link BusinessPartnerIdentificationModel} + */ +public class BusinessPartnerIdentificationTransferObjectToModelClassMapBuilder + extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = + TypeFactory.valueOf(BusinessPartnerIdentificationTransferObject.class); + + private static final Type B_TYPE = + TypeFactory.valueOf(BusinessPartnerIdentificationModel.class); + + public BusinessPartnerIdentificationTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + // If field names match (runId, batchId, hrRequestId, payMethodEnum, value), this is enough. + classMapBuilder.byDefault(); + + // If the enum or any field names differ, add explicit mappings here, e.g.: + // classMapBuilder.field("payMethod", "payMethodEnum"); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/DetailsAllowanceRequestTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/DetailsAllowanceRequestTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..504bd76 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/DetailsAllowanceRequestTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,47 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder.p2phub; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.AllowanceDetailModel; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.AllowanceDetailTransferObject; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link AllowanceDetailModel} + */ +public class DetailsAllowanceRequestTransferObjectToModelClassMapBuilder + extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = + TypeFactory.valueOf(AllowanceDetailTransferObject.class); + + private static final Type B_TYPE = + TypeFactory.valueOf(AllowanceDetailModel.class); + + public DetailsAllowanceRequestTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + // If field names match (runId, batchId, hrRequestId, payMethodEnum, value), this is enough. + classMapBuilder.byDefault(); + + // If the enum or any field names differ, add explicit mappings here, e.g.: + // classMapBuilder.field("payMethod", "payMethodEnum"); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/HeaderAllowanceRequestTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/HeaderAllowanceRequestTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..aa7a322 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/HeaderAllowanceRequestTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,47 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder.p2phub; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.AllowanceHeaderModel; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.AllowanceHeaderTransferObject; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link AllowanceHeaderModel} + */ +public class HeaderAllowanceRequestTransferObjectToModelClassMapBuilder + extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = + TypeFactory.valueOf(AllowanceHeaderTransferObject.class); + + private static final Type B_TYPE = + TypeFactory.valueOf(AllowanceHeaderModel.class); + + public HeaderAllowanceRequestTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + // If field names match (runId, batchId, hrRequestId, payMethodEnum, value), this is enough. + classMapBuilder.byDefault(); + + // If the enum or any field names differ, add explicit mappings here, e.g.: + // classMapBuilder.field("payMethod", "payMethodEnum"); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/OrderErrorResponseTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/OrderErrorResponseTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..435a78a --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/OrderErrorResponseTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,47 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder.p2phub; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderErrorResponseModel; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.OrderErrorResponseTransferObject; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link OrderErrorResponseModel} + */ +public class OrderErrorResponseTransferObjectToModelClassMapBuilder + extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = + TypeFactory.valueOf(OrderErrorResponseTransferObject.class); + + private static final Type B_TYPE = + TypeFactory.valueOf(OrderErrorResponseModel.class); + + public OrderErrorResponseTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + // If field names match (runId, batchId, hrRequestId, payMethodEnum, value), this is enough. + classMapBuilder.byDefault(); + + // If the enum or any field names differ, add explicit mappings here, e.g.: + // classMapBuilder.field("payMethod", "payMethodEnum"); + } +} \ No newline at end of file diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/OrderResponseInternalTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/OrderResponseInternalTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..0660512 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/OrderResponseInternalTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,48 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder.p2phub; + + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; + + +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.OrderResponseInternalTransferObject; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderResponseModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link OrderResponseModel} + * + * @author tapiafo + */ +public class OrderResponseInternalTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(OrderResponseInternalTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(OrderResponseModel.class); + + public OrderResponseInternalTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder + .byDefault(); + } + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/OrderStatusResponseTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/OrderStatusResponseTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..a128a69 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/OrderStatusResponseTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,62 @@ + +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder.p2phub; + + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.api.http.rest.mapping.custommapper.OrderStatusResponseTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.OrderStatusResponseTransferObject; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderStatusResponseModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link OrderStatusResponseModel} + * + * @author tapiafo + */ +public class OrderStatusResponseTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(OrderStatusResponseTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(OrderStatusResponseModel.class); + + public OrderStatusResponseTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + + @Override + protected void buildMap( + ClassMapBuilder classMapBuilder) { + + classMapBuilder + // Excluded field + .fieldMap("lastModificationDate", "lastModificationDate") + .exclude() + .add() + + // Explicit mapping for different field names + .field("paymentReference", "paymentDirectiveReference") + + // Custom mapper + .customize(new OrderStatusResponseTransferObjectToModelCustomMapper()) + + // Map remaining same-name fields automatically + .byDefault(); + } + + +} + diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/SupplierTransferObjectToModelClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/SupplierTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..dd676c7 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/classmapbuilder/p2phub/SupplierTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,47 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder.p2phub; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.SupplierModel; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.SupplierTransferObject; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Simple map builder for {@link SupplierModel} + */ +public class SupplierTransferObjectToModelClassMapBuilder + extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = + TypeFactory.valueOf(SupplierTransferObject.class); + + private static final Type B_TYPE = + TypeFactory.valueOf(SupplierModel.class); + + public SupplierTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + // If field names match (runId, batchId, hrRequestId, payMethodEnum, value), this is enough. + classMapBuilder.byDefault(); + + // If the enum or any field names differ, add explicit mappings here, e.g.: + // classMapBuilder.field("payMethod", "payMethodEnum"); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/custommapper/BusinessPartnerTransferObjectToModelCustomMapper.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/custommapper/BusinessPartnerTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..0d4a183 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/custommapper/BusinessPartnerTransferObjectToModelCustomMapper.java @@ -0,0 +1,29 @@ +//package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.custommapper; +// +// +//import eu.europa.eeas.erights.common.service.model.declaration.PersonBankInfoModel; +//import eu.europa.eeas.erights.common.service.model.document.MovementDocModel; +//import eu.europa.eeas.erights.common.service.model.document.MovementDocSectionModel; +//import eu.europa.eeas.erights.web.p2phub.client.transferobject.BusinessPartnerResponseTransferObject; +//import ma.glasnost.orika.CustomMapper; +//import ma.glasnost.orika.MappingContext; +//import ma.glasnost.orika.metadata.ClassMapBuilder; +//import ma.glasnost.orika.metadata.Type; +//import ma.glasnost.orika.metadata.TypeFactory; +//import org.springframework.context.ApplicationContext; +// +//public class BusinessPartnerResponseTransferObjectToModelCustomMapper extends CustomMapper { +// +//// @Override +//// public void mapAtoB(BusinessPartnerResponseTransferObject transferObject, MovementDocModel model, MappingContext context) { +//// MovementDocSectionModel movementDocSection = new MovementDocSectionModel(); +//// movementDocSection.setId(transferObject.getMovementDocSectionId()); +//// +//// model.setMovementDocSection(movementDocSection); +//// } +//// +//// @Override +//// public void mapBtoA(MovementDocModel model, BusinessPartnerResponseTransferObject transferObject, MappingContext context) { +//// transferObject.setMovementDocSectionId(model.getMovementDocSection().getId()); +//// } +//} \ No newline at end of file diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/custommapper/OrderStatusResponseTransferObjectToModelCustomMapper.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/custommapper/OrderStatusResponseTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..9d161af --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/mapping/custommapper/OrderStatusResponseTransferObjectToModelCustomMapper.java @@ -0,0 +1,54 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.mapping.custommapper; + + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderStatusResponseModel; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.OrderStatusResponseTransferObject; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +/** + * Simple map builder for {@link OrderStatusResponseModel} + * + * @author tapiafo + */ +public class OrderStatusResponseTransferObjectToModelCustomMapper extends CustomMapper { + + private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS"); + + @Override + public void mapAtoB(OrderStatusResponseTransferObject a, + OrderStatusResponseModel b, + MappingContext context) { + + String dateStr = a.getLastModificationDate(); + + if (dateStr == null || dateStr.trim().isEmpty()) { + // default to sysdate + b.setLastModificationDate(LocalDateTime.now()); + } else { + LocalDateTime ldt = LocalDateTime.parse(dateStr, FORMATTER); + b.setLastModificationDate(ldt); + } + } + + + @Override + public void mapBtoA(OrderStatusResponseModel b, + OrderStatusResponseTransferObject a, + MappingContext context) { + + if (b.getLastModificationDate() != null) { + String formatted = b.getLastModificationDate().format(FORMATTER); + a.setLastModificationDate(formatted); + } + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/transferobject/AllowanceRequestInternalTransferObject.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/transferobject/AllowanceRequestInternalTransferObject.java new file mode 100644 index 0000000..9c00595 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/transferobject/AllowanceRequestInternalTransferObject.java @@ -0,0 +1,24 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.transferobject; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.AllowanceRequestTransferObject; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.OrderResponseTransferObject; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.Valid; + +@Setter +@Getter +public class AllowanceRequestInternalTransferObject extends AllowanceRequestTransferObject { + + + private Long id; + + private Long requestId; + + private Long perId; + + @Valid + private OrderResponseTransferObject order; +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/transferobject/BusinessPartnerInternalTransferObject.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/transferobject/BusinessPartnerInternalTransferObject.java new file mode 100644 index 0000000..a9c7041 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/transferobject/BusinessPartnerInternalTransferObject.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.transferobject; + +import eu.europa.eeas.erights.web.p2phub.client.transferobject.BusinessPartnerResponseTransferObject; +import lombok.Getter; +import lombok.Setter; +import org.springframework.beans.BeanUtils; + +@Setter +@Getter +public class BusinessPartnerInternalTransferObject extends BusinessPartnerResponseTransferObject { + + private Long id; + + private Long perId; + + public BusinessPartnerInternalTransferObject(BusinessPartnerResponseTransferObject response) { + // Copy all fields from parent using BeanUtils + BeanUtils.copyProperties(response, this); + // id and perId remain null + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/transferobject/OrderResponseInternalTransferObject.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/transferobject/OrderResponseInternalTransferObject.java new file mode 100644 index 0000000..b367090 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/api/http/rest/transferobject/OrderResponseInternalTransferObject.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.transferobject; + + +import eu.europa.eeas.erights.web.p2phub.client.transferobject.OrderResponseTransferObject; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.Valid; +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Setter +@Getter +public class OrderResponseInternalTransferObject extends OrderResponseTransferObject { + + + private Long id; + + private Long requestId; + + private Long perId; + + private String message; + + private String errorCode; + + private String errorText; + + private LocalDateTime responseDateTime; + + private String orderComment; + + private String orderStatus; + + private String paymentDirectiveReference; + + private String jsonSent; + + @Valid + private OrderResponseTransferObject order; +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/ERightsBackOffice.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/ERightsBackOffice.java new file mode 100644 index 0000000..941f1c3 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/ERightsBackOffice.java @@ -0,0 +1,11 @@ +package eu.europa.eeas.erights.backoffice.boot; + +import eu.europa.eeas.ananke.core.base.boot.AnankeStarter; + +public class ERightsBackOffice extends AnankeStarter { + + public static void main(String[] args) throws Exception { + start(new ERightsBackOffice(), args); + } + +} \ No newline at end of file diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/CacheConfiguration.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/CacheConfiguration.java new file mode 100644 index 0000000..6ffb634 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/CacheConfiguration.java @@ -0,0 +1,14 @@ +package eu.europa.eeas.erights.backoffice.boot.configuration; + + +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Configuration; + +/** + * @author ienaccat + */ +@Configuration +@EnableCaching +public class CacheConfiguration { + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/ERightsBackOfficeBeanNames.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/ERightsBackOfficeBeanNames.java new file mode 100644 index 0000000..5175d57 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/ERightsBackOfficeBeanNames.java @@ -0,0 +1,53 @@ +package eu.europa.eeas.erights.backoffice.boot.configuration; + +public final class ERightsBackOfficeBeanNames { + /** + * PREFIX. + */ + private static final String PREFIX = "ERightsBackOffice"; + + public static final String EMAIL_NOTIFICATIONS_UPDATER_JOB = PREFIX + "EmailNotificationsUpdaterJob"; + + public static final String EMAIL_NOTIFICATIONS_UPDATER_TRIGGER = PREFIX + "EmailNotificationUpdaterTrigger"; + + public static final String NIGHTLY_UPDATER_JOB = PREFIX + "NightlyUpdaterJob"; + + public static final String NIGHTLY_UPDATER_TRIGGER = PREFIX + "NightlyUpdaterTrigger"; + + public static final String NIGHTLY_BANK_UPDATER_JOB = PREFIX + "NightlyBankUpdaterJob"; + + public static final String NIGHTLY_BANK_UPDATER_TRIGGER = PREFIX + "NightlyBankUpdaterTrigger"; + + public static final String CLEARING_EMAIL_NOTIFICATIONS_JOB = PREFIX + "ClearingRequestEmailNotificationJob"; + + public static final String CLEARING_EMAIL_NOTIFICATIONS_TRIGGER = PREFIX + "ClearingRequestEmailNotificationTrigger"; + + public static final String INSTALLATION_UPDATER_JOB = PREFIX + "InstallationUpdaterJob"; + + public static final String INSTALLATION_UPDATER_TRIGGER = PREFIX + "InstallationUpdaterTrigger"; + + public static final String P2P_ORDER_UPDATER_JOB = PREFIX + "P2POrderUpdaterJob"; + public static final String P2P_ORDER_UPDATER_TRIGGER = PREFIX + "P2POrderUpdaterTrigger"; + + public static final String RATE_MISSING_UPDATER_JOB = PREFIX + "RateMissingUpdaterJob"; + public static final String RATE_MISSING_UPDATER_TRIGGER = PREFIX + "RateMissingUpdaterTrigger"; + + public static final String TUD_FARE_UPDATER_JOB = PREFIX + "TudFareUpdaterJob"; + public static final String TUD_FARE_UPDATER_TRIGGER = PREFIX + "TudFareUpdaterTrigger"; + + public static final String POSTING_TRAVEL_ALLOWANCE_TRINSITION_JOB = PREFIX + "PostingTravelAllowanceTransitionJob"; + public static final String POSTING_TRAVEL_ALLOWANCE_TRINSITION_TRIGGER = PREFIX + "PostingTravelAllowanceTransitionTrigger"; + + public static final String TRAVEL_ALLOWANCE_CREATION_JOB = PREFIX + "TravelAllowanceCreationJob"; + public static final String TRAVEL_ALLOWANCE_CREATION_TRIGGER = PREFIX + "TravelAllowanceCreationTrigger"; + + public static final String ACCOMMODATION_BANK_ACCOUNTS_SYNC_JOB = PREFIX + "AccommodationBankAccountsSyncJob"; + public static final String ACCOMMODATION_BANK_ACCOUNTS_SYNC_TRIGGER = PREFIX + "AccommodationBankAccountsSyncTrigger"; + + public static final String ACCOMMODATION_CREATE_PAYMENT_JOB = PREFIX + "AccommodationCreatePaymentJob"; + public static final String ACCOMMODATION_CREATE_PAYMENT_TRIGGER = PREFIX + "AccommodationCreatePaymentTrigger"; + + private ERightsBackOfficeBeanNames() { + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/ERightsBackOfficeBootAutoConfiguration.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/ERightsBackOfficeBootAutoConfiguration.java new file mode 100644 index 0000000..8d91df1 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/ERightsBackOfficeBootAutoConfiguration.java @@ -0,0 +1,44 @@ +package eu.europa.eeas.erights.backoffice.boot.configuration; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.support.AnankeCoreAuditProviderDataJpaRepositoryFactoryBean; +import eu.europa.eeas.ananke.core.data.provider.jpa.AnankeCoreDataProviderJpaBeanNames; +import eu.europa.eeas.erights.backoffice.api.http.mvc.controller.MovementFileControllerBackOffice; +import eu.europa.eeas.erights.backoffice.api.http.rest.controller.internal.AuditMovementFilesRestController; +import eu.europa.eeas.erights.backoffice.boot.statemachine.configurations.AbacItemStateMachineConfiguration; +import eu.europa.eeas.erights.backoffice.boot.statemachine.configurations.AbacRequestMachineConfiguration; +import eu.europa.eeas.erights.backoffice.data.jpa.repository.VBudgetLineJpaRepository; +import eu.europa.eeas.erights.backoffice.service.data.provider.VReportMovementFileJpaServiceProvider; +import eu.europa.eeas.erights.backoffice.service.provider.MenuServiceProvider; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBootAutoConfiguration; +import eu.europa.eeas.erights.common.boot.configuration.skyscanner.SkyscannerWSConfiguration; +import eu.europa.eeas.erights.common.service.data.provider.LocationJpaServiceProvider; +import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; + +@Configuration +@ImportAutoConfiguration({ + AbacItemStateMachineConfiguration.class, + AbacRequestMachineConfiguration.class, + ERightsBootAutoConfiguration.class, + QuartzJobConfiguration.class, + SkyscannerWSConfiguration.class, + CacheConfiguration.class}) +@EnableJpaRepositories(entityManagerFactoryRef = AnankeCoreDataProviderJpaBeanNames.ENTITY_MANAGER_FACTORY, + transactionManagerRef = AnankeCoreDataProviderJpaBeanNames.TRANSACTION_MANAGER, + repositoryFactoryBeanClass = AnankeCoreAuditProviderDataJpaRepositoryFactoryBean.class, + basePackageClasses = { + VBudgetLineJpaRepository.class + }) +@ComponentScan(basePackageClasses = { + MovementFileControllerBackOffice.class, + AuditMovementFilesRestController.class, + MenuServiceProvider.class, + VReportMovementFileJpaServiceProvider.class, + LocationJpaServiceProvider.class + +}) +public class ERightsBackOfficeBootAutoConfiguration { + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/QuartzJobConfiguration.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/QuartzJobConfiguration.java new file mode 100644 index 0000000..e5ea2e5 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/QuartzJobConfiguration.java @@ -0,0 +1,332 @@ +package eu.europa.eeas.erights.backoffice.boot.configuration; + +import eu.europa.eeas.ananke.core.base.Profiles; +import eu.europa.eeas.ananke.core.base.context.AnankeContext; +import eu.europa.eeas.erights.backoffice.service.provider.allowances.AccommodationBankAccountsSyncService; +import eu.europa.eeas.erights.backoffice.service.provider.allowances.PostingAllowancesAppParamsServiceHelper; +import eu.europa.eeas.erights.backoffice.tools.scheduler.AccommodationBankAccountsSyncJob; +import eu.europa.eeas.erights.backoffice.tools.scheduler.AccommodationCreatePaymentJob; +import eu.europa.eeas.erights.backoffice.tools.scheduler.BankAccountUpdaterJob; +import eu.europa.eeas.erights.backoffice.tools.scheduler.ClearingRequestEmailNotificationJob; +import eu.europa.eeas.erights.backoffice.tools.scheduler.EmailNotificationsUpdaterJob; +import eu.europa.eeas.erights.backoffice.tools.scheduler.InstallationRequestUpdaterJob; +import eu.europa.eeas.erights.backoffice.tools.scheduler.NightlyUpdaterJob; +import eu.europa.eeas.erights.backoffice.tools.scheduler.PostingTravelAllowanceTransitionJob; +import eu.europa.eeas.erights.backoffice.tools.scheduler.RateMissingUpdaterJob; +import eu.europa.eeas.erights.backoffice.tools.scheduler.TravelAllowanceCreationJob; +import eu.europa.eeas.erights.backoffice.tools.scheduler.TudFareUpdaterJob; +import org.quartz.CronScheduleBuilder; +import org.quartz.JobBuilder; +import org.quartz.JobDetail; +import org.quartz.Trigger; +import org.quartz.TriggerBuilder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import eu.europa.eeas.erights.backoffice.tools.scheduler.P2pOrderUpdaterJob; + +@Configuration +public class QuartzJobConfiguration { + + public static final String EVERY_DAY_3H_AM = "0 0 3 * * ? *"; + + public static final String EVERY_2DAYS_3H_30MIN_AM = "0 30 3 1/2 * ? *"; + + public static final String EVERY_DAY_4H_AM = "0 0 4 * * ? *"; + + public static final String EVERY_DAY_4H_30M_AM = "0 30 4 * * ?"; + + public static final String EVERY_DAY_5H_30M_AM = "0 30 5 * * ?"; + + public static final String EVERY_DAY_5H_AM = "0 0 5 * * ?"; + + public static final String EVERY_3_HOURS = "0 0 0/3 1/1 * ? *"; + + public static final String EVERY_1_HOURS = "0 0 0/1 1/1 * ? *"; + + public static final String EVERY_2_HOURS = "0 0 0/2 1/1 * ? *"; + + public static final String EVERY_5_HOURS = "0 0 0/5 1/1 * ? *"; + + public static final String EVERY_8_HOURS = "0 0 0/8 1/1 * ? *"; + + public static final String EVERY_4_HOURS = "0 0 0/4 1/1 * ? *"; + + //FOR TEST + public static final String EVERY_3_HOURS_10MIN = "0 10 0/3 1/1 * ? *"; + + public static final String EVERY_5_MIN = "0 0/5 * * * ?"; + + + public static final String EVERY_20_MIN = "0 0/20 * * * ?"; + + public static final String EVERY_12_MIN = "0 0/12 * * * ?"; + + public static final String EVERY_10_MIN = "0 0/10 * * * ?"; + + public static final String EVERY_15_MIN = "0 0/15 * * * ?"; + + public static final String EVERY_1_MIN = "0 0/1 * * * ?"; + + public static final String EVERY_30_MIN = "0 0/30 * * * ?"; + + @Autowired + private AnankeContext anankeContext; + + @Autowired + private PostingAllowancesAppParamsServiceHelper postingAllowancesAppParamsServiceHelper; + + @Bean(ERightsBackOfficeBeanNames.NIGHTLY_UPDATER_JOB) + public JobDetail nightlyJobDetails() { + return JobBuilder.newJob(NightlyUpdaterJob.class).withIdentity(ERightsBackOfficeBeanNames.NIGHTLY_UPDATER_JOB).storeDurably().build(); + } + + @Bean(ERightsBackOfficeBeanNames.NIGHTLY_UPDATER_TRIGGER) + public Trigger nightlyJobTrigger(@Qualifier(ERightsBackOfficeBeanNames.NIGHTLY_UPDATER_JOB) JobDetail nightlyJobDetails) { + String frequencyToRunJob = EVERY_DAY_4H_30M_AM; + if (!(anankeContext.getProfiles().contains(Profiles.PRODUCTION) || anankeContext.getProfiles().contains(Profiles.ACCEPTANCE))) { //EASREFN is refresh around 2 we should use EVERY_DAY_5H_AM in PRD , if not we will send + frequencyToRunJob = EVERY_2DAYS_3H_30MIN_AM; + } + + return TriggerBuilder.newTrigger().forJob(nightlyJobDetails) + .withIdentity(ERightsBackOfficeBeanNames.NIGHTLY_UPDATER_TRIGGER) + .withSchedule(CronScheduleBuilder.cronSchedule(frequencyToRunJob).withMisfireHandlingInstructionFireAndProceed()) + .build(); + } + + @Bean(ERightsBackOfficeBeanNames.EMAIL_NOTIFICATIONS_UPDATER_JOB) + public JobDetail emailNotificationsJobDetails() { + return JobBuilder.newJob(EmailNotificationsUpdaterJob.class).withIdentity(ERightsBackOfficeBeanNames.EMAIL_NOTIFICATIONS_UPDATER_JOB).storeDurably().build(); + } + + @Bean(ERightsBackOfficeBeanNames.EMAIL_NOTIFICATIONS_UPDATER_TRIGGER) + public Trigger emailNotificationJobTrigger(@Qualifier(ERightsBackOfficeBeanNames.EMAIL_NOTIFICATIONS_UPDATER_JOB) JobDetail emailNotificationsJobDetails) { + + String frequencyToRunJob = EVERY_4_HOURS; + if (anankeContext.getProfiles().contains(Profiles.TEST)) { + frequencyToRunJob = EVERY_DAY_3H_AM; + } else if (anankeContext.getProfiles().contains(Profiles.STANDALONE) || anankeContext.getProfiles().contains(Profiles.DEVELOPMENT)) { + frequencyToRunJob = EVERY_DAY_3H_AM; + } else if (anankeContext.getProfiles().contains(Profiles.PRODUCTION) || anankeContext.getProfiles().contains(Profiles.ACCEPTANCE)) { + frequencyToRunJob = EVERY_4_HOURS; + } + return TriggerBuilder.newTrigger().forJob(emailNotificationsJobDetails) + .withIdentity(ERightsBackOfficeBeanNames.EMAIL_NOTIFICATIONS_UPDATER_TRIGGER) + .withSchedule(CronScheduleBuilder.cronSchedule(frequencyToRunJob).withMisfireHandlingInstructionFireAndProceed()) + .build(); + } + + @Bean(ERightsBackOfficeBeanNames.NIGHTLY_BANK_UPDATER_JOB) + public JobDetail nightlyBankAccountUpdaterJobDetails() { + return JobBuilder.newJob(BankAccountUpdaterJob.class).withIdentity(ERightsBackOfficeBeanNames.NIGHTLY_BANK_UPDATER_JOB).storeDurably().build(); + } + + @Bean(ERightsBackOfficeBeanNames.NIGHTLY_BANK_UPDATER_TRIGGER) + public Trigger nightlyBankAccountUpdaterJobTrigger(@Qualifier(ERightsBackOfficeBeanNames.NIGHTLY_BANK_UPDATER_JOB) JobDetail nightlyBankAccountUpdaterJobDetails) { + String frequencyToRunJob = EVERY_2DAYS_3H_30MIN_AM; + if (anankeContext.getProfiles().contains(Profiles.PRODUCTION) || anankeContext.getProfiles().contains(Profiles.ACCEPTANCE)) { + frequencyToRunJob = EVERY_2DAYS_3H_30MIN_AM ; + } + + + return TriggerBuilder.newTrigger().forJob(nightlyBankAccountUpdaterJobDetails) + .withIdentity(ERightsBackOfficeBeanNames.NIGHTLY_BANK_UPDATER_TRIGGER) + .withSchedule(CronScheduleBuilder.cronSchedule(frequencyToRunJob).withMisfireHandlingInstructionFireAndProceed()) + .build(); + } + + @Bean(ERightsBackOfficeBeanNames.CLEARING_EMAIL_NOTIFICATIONS_JOB) + public JobDetail clearingEmailNotificationsJobDetails() { + return JobBuilder.newJob(ClearingRequestEmailNotificationJob.class).withIdentity(ERightsBackOfficeBeanNames.CLEARING_EMAIL_NOTIFICATIONS_JOB).storeDurably().build(); + } + + @Bean(ERightsBackOfficeBeanNames.CLEARING_EMAIL_NOTIFICATIONS_TRIGGER) + public Trigger clearingEmailNotificationsJobTrigger(@Qualifier(ERightsBackOfficeBeanNames.CLEARING_EMAIL_NOTIFICATIONS_JOB) JobDetail job) { + return TriggerBuilder.newTrigger().forJob(job) + .withIdentity(ERightsBackOfficeBeanNames.CLEARING_EMAIL_NOTIFICATIONS_TRIGGER) + .withSchedule(CronScheduleBuilder.cronSchedule(EVERY_DAY_3H_AM).withMisfireHandlingInstructionFireAndProceed()) + .build(); + } + + @Bean(ERightsBackOfficeBeanNames.INSTALLATION_UPDATER_JOB) + public JobDetail installationUpdaterJobDetails() { + return JobBuilder.newJob(InstallationRequestUpdaterJob.class).withIdentity(ERightsBackOfficeBeanNames.INSTALLATION_UPDATER_JOB).storeDurably().build(); + } + + @Bean(ERightsBackOfficeBeanNames.INSTALLATION_UPDATER_TRIGGER) + public Trigger installationUpdaterJobTrigger(@Qualifier(ERightsBackOfficeBeanNames.INSTALLATION_UPDATER_JOB) JobDetail job) { + //As comref is updating from sysper once a day we will run this once a day.If we change the frequency, we need to check the email notification.If we run this more than once a day, we will send several reminders + String frequencyToRunJob = EVERY_2DAYS_3H_30MIN_AM; + if (anankeContext.getProfiles().contains(Profiles.PRODUCTION) || anankeContext.getProfiles().contains(Profiles.ACCEPTANCE)) { + frequencyToRunJob = EVERY_DAY_5H_AM; + } + + return TriggerBuilder.newTrigger().forJob(job) + .withIdentity(ERightsBackOfficeBeanNames.INSTALLATION_UPDATER_TRIGGER) + .withSchedule(CronScheduleBuilder.cronSchedule(frequencyToRunJob).withMisfireHandlingInstructionFireAndProceed()) + .build(); + } + + @Bean(ERightsBackOfficeBeanNames.P2P_ORDER_UPDATER_JOB) + public JobDetail p2pOrderUpdaterJobDetails() { + return JobBuilder.newJob(P2pOrderUpdaterJob.class).withIdentity(ERightsBackOfficeBeanNames.P2P_ORDER_UPDATER_JOB).storeDurably().build(); + } + + @Bean(ERightsBackOfficeBeanNames.P2P_ORDER_UPDATER_TRIGGER) + public Trigger p2pOrderUpdaterJobTrigger(@Qualifier(ERightsBackOfficeBeanNames.P2P_ORDER_UPDATER_JOB) JobDetail job) { + String frequencyToRunJob = EVERY_5_MIN; + if (anankeContext.getProfiles().contains(Profiles.TEST)) { + frequencyToRunJob = EVERY_15_MIN; + } else if (anankeContext.getProfiles().contains(Profiles.STANDALONE) || anankeContext.getProfiles().contains(Profiles.DEVELOPMENT)) { + frequencyToRunJob = EVERY_2DAYS_3H_30MIN_AM; + } else if (anankeContext.getProfiles().contains(Profiles.PRODUCTION) || anankeContext.getProfiles().contains(Profiles.ACCEPTANCE)) { + frequencyToRunJob = EVERY_15_MIN; + } + return TriggerBuilder.newTrigger().forJob(job) + .withIdentity(ERightsBackOfficeBeanNames.P2P_ORDER_UPDATER_TRIGGER) + .withSchedule(CronScheduleBuilder.cronSchedule(frequencyToRunJob).withMisfireHandlingInstructionFireAndProceed()) + .build(); + } + + + + @Bean(ERightsBackOfficeBeanNames.RATE_MISSING_UPDATER_JOB) + public JobDetail rateMissingUpdaterJobDetails() { + return JobBuilder.newJob(RateMissingUpdaterJob.class).withIdentity(ERightsBackOfficeBeanNames.RATE_MISSING_UPDATER_JOB).storeDurably().build(); + } + + @Bean(ERightsBackOfficeBeanNames.RATE_MISSING_UPDATER_TRIGGER) + public Trigger rateMissingUpdaterJobTrigger(@Qualifier(ERightsBackOfficeBeanNames.RATE_MISSING_UPDATER_JOB) JobDetail job) { + String frequencyToRunJob = EVERY_12_MIN; + if (anankeContext.getProfiles().contains(Profiles.TEST)) { + frequencyToRunJob = EVERY_DAY_3H_AM; + } else if (anankeContext.getProfiles().contains(Profiles.STANDALONE) || anankeContext.getProfiles().contains(Profiles.DEVELOPMENT)) { + frequencyToRunJob = EVERY_DAY_3H_AM; + } else if (anankeContext.getProfiles().contains(Profiles.PRODUCTION) || anankeContext.getProfiles().contains(Profiles.ACCEPTANCE)) { + frequencyToRunJob = EVERY_3_HOURS; + } + return TriggerBuilder.newTrigger().forJob(job) + .withIdentity(ERightsBackOfficeBeanNames.RATE_MISSING_UPDATER_TRIGGER) + .withSchedule(CronScheduleBuilder.cronSchedule(frequencyToRunJob).withMisfireHandlingInstructionFireAndProceed()) + .build(); + } + + + @Bean(ERightsBackOfficeBeanNames.TUD_FARE_UPDATER_JOB) + public JobDetail tudFareUpdaterJobDetails() { + return JobBuilder.newJob(TudFareUpdaterJob.class).withIdentity(ERightsBackOfficeBeanNames.TUD_FARE_UPDATER_JOB).storeDurably().build(); + } + + @Bean(ERightsBackOfficeBeanNames.TUD_FARE_UPDATER_TRIGGER) + public Trigger tudFareUpdaterJobTrigger(@Qualifier(ERightsBackOfficeBeanNames.TUD_FARE_UPDATER_JOB) JobDetail job) { + String frequencyToRunJob = EVERY_DAY_4H_30M_AM; + if (anankeContext.getProfiles().contains(Profiles.TEST)) { + frequencyToRunJob = EVERY_DAY_4H_30M_AM; + } else if (anankeContext.getProfiles().contains(Profiles.STANDALONE) || anankeContext.getProfiles().contains(Profiles.DEVELOPMENT)) { + frequencyToRunJob = EVERY_DAY_4H_30M_AM; + } else if (anankeContext.getProfiles().contains(Profiles.PRODUCTION) || anankeContext.getProfiles().contains(Profiles.ACCEPTANCE)) { + frequencyToRunJob = EVERY_10_MIN; + } + return TriggerBuilder.newTrigger().forJob(job) + .withIdentity(ERightsBackOfficeBeanNames.TUD_FARE_UPDATER_TRIGGER) + .withSchedule(CronScheduleBuilder.cronSchedule(frequencyToRunJob).withMisfireHandlingInstructionFireAndProceed()) + .build(); + } + + + @Bean(ERightsBackOfficeBeanNames.POSTING_TRAVEL_ALLOWANCE_TRINSITION_JOB) + public JobDetail postingTravelAllowanceTransitionJobDetails() { + return JobBuilder.newJob(PostingTravelAllowanceTransitionJob.class).withIdentity(ERightsBackOfficeBeanNames.POSTING_TRAVEL_ALLOWANCE_TRINSITION_JOB).storeDurably().build(); + } + + @Bean(ERightsBackOfficeBeanNames.POSTING_TRAVEL_ALLOWANCE_TRINSITION_TRIGGER) + public Trigger postingTravelAllowanceTransitionJobTrigger(@Qualifier(ERightsBackOfficeBeanNames.POSTING_TRAVEL_ALLOWANCE_TRINSITION_JOB) JobDetail job) { + String frequencyToRunJob = EVERY_DAY_5H_30M_AM; + if (anankeContext.getProfiles().contains(Profiles.PRODUCTION) || anankeContext.getProfiles().contains(Profiles.ACCEPTANCE)) { + frequencyToRunJob = EVERY_1_HOURS; + } + return TriggerBuilder.newTrigger().forJob(job) + .withIdentity(ERightsBackOfficeBeanNames.POSTING_TRAVEL_ALLOWANCE_TRINSITION_TRIGGER) + .withSchedule(CronScheduleBuilder.cronSchedule(frequencyToRunJob).withMisfireHandlingInstructionFireAndProceed()) + .build(); + } + + + @Bean(ERightsBackOfficeBeanNames.TRAVEL_ALLOWANCE_CREATION_JOB) + public JobDetail travelAllowanceCreationJobDetails() { + + return JobBuilder.newJob(TravelAllowanceCreationJob.class) + .withIdentity(ERightsBackOfficeBeanNames.TRAVEL_ALLOWANCE_CREATION_JOB) + .storeDurably() + .build(); + } + + + @Bean(ERightsBackOfficeBeanNames.TRAVEL_ALLOWANCE_CREATION_TRIGGER) + public Trigger travelAllowanceCreationJobTrigger(@Qualifier(ERightsBackOfficeBeanNames.TRAVEL_ALLOWANCE_CREATION_JOB) JobDetail job) { + + return TriggerBuilder.newTrigger() + .forJob(job) + .withIdentity(ERightsBackOfficeBeanNames.TRAVEL_ALLOWANCE_CREATION_TRIGGER) + .withSchedule(CronScheduleBuilder.cronSchedule(EVERY_DAY_3H_AM) + .withMisfireHandlingInstructionFireAndProceed()) + .build(); + } + + + @Bean(ERightsBackOfficeBeanNames.ACCOMMODATION_BANK_ACCOUNTS_SYNC_JOB) + public JobDetail accommodationBankAccountsSyncJobDetails() { + + return JobBuilder.newJob(AccommodationBankAccountsSyncJob.class) + .withIdentity(ERightsBackOfficeBeanNames.ACCOMMODATION_BANK_ACCOUNTS_SYNC_JOB) + .storeDurably() + .build(); + } + + + @Bean(ERightsBackOfficeBeanNames.ACCOMMODATION_BANK_ACCOUNTS_SYNC_TRIGGER) + public Trigger accommodationBankAccountsSyncJobTrigger(@Qualifier(ERightsBackOfficeBeanNames.ACCOMMODATION_BANK_ACCOUNTS_SYNC_JOB) JobDetail job) { + String cronExpression = EVERY_10_MIN; + int cronjobFrequencyMin = + postingAllowancesAppParamsServiceHelper.getAppParameterInteger(AccommodationBankAccountsSyncService.SYNC_DELAY); + if (20 == cronjobFrequencyMin) { + cronExpression = EVERY_20_MIN; + } else if (30 == cronjobFrequencyMin) { + cronExpression = EVERY_30_MIN; + } else if (60 == cronjobFrequencyMin) { + cronExpression = EVERY_1_HOURS; + } + + return TriggerBuilder.newTrigger() + .forJob(job) + .withIdentity(ERightsBackOfficeBeanNames.ACCOMMODATION_BANK_ACCOUNTS_SYNC_TRIGGER) + .withSchedule(CronScheduleBuilder.cronSchedule(cronExpression) + .withMisfireHandlingInstructionFireAndProceed()) + .build(); + } + + @Bean(ERightsBackOfficeBeanNames.ACCOMMODATION_CREATE_PAYMENT_JOB) + public JobDetail accommodationCreatePaymentJobDetails() { + + return JobBuilder.newJob(AccommodationCreatePaymentJob.class) + .withIdentity(ERightsBackOfficeBeanNames.ACCOMMODATION_CREATE_PAYMENT_JOB) + .storeDurably() + .build(); + } + + @Bean(ERightsBackOfficeBeanNames.ACCOMMODATION_CREATE_PAYMENT_TRIGGER) + public Trigger accommodationCreatePaymentJobTrigger(@Qualifier(ERightsBackOfficeBeanNames.ACCOMMODATION_CREATE_PAYMENT_JOB) JobDetail job) { + + + return TriggerBuilder.newTrigger() + .forJob(job) + .withIdentity(ERightsBackOfficeBeanNames.ACCOMMODATION_CREATE_PAYMENT_TRIGGER) + .withSchedule(CronScheduleBuilder.cronSchedule(EVERY_DAY_4H_AM) + .withMisfireHandlingInstructionFireAndProceed()) + .build(); + } + +} + diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/p2phub/P2PHubHttpConfig.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/p2phub/P2PHubHttpConfig.java new file mode 100644 index 0000000..a93fe92 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/p2phub/P2PHubHttpConfig.java @@ -0,0 +1,18 @@ +package eu.europa.eeas.erights.backoffice.boot.configuration.p2phub; + +import eu.europa.eeas.erights.backoffice.web.p2phub.auth.P2PHubSslFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.ResourceLoader; + +@Configuration +public class P2PHubHttpConfig { + + + @Bean + public P2PHubSslFactory p2pHubSslFactory( + ResourceLoader resourceLoader, + P2pHubRestClientConfiguration props) { + return new P2PHubSslFactory(resourceLoader, props); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/p2phub/P2pHubApiClientConfig.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/p2phub/P2pHubApiClientConfig.java new file mode 100644 index 0000000..6aae34d --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/p2phub/P2pHubApiClientConfig.java @@ -0,0 +1,77 @@ +package eu.europa.eeas.erights.backoffice.boot.configuration.p2phub; + + +import eu.europa.eeas.erights.backoffice.boot.configuration.security.AuthorizationHeaderInterceptor; +import eu.europa.eeas.erights.web.p2phub.ApiClient; +import org.apache.http.conn.ssl.NoopHostnameVerifier; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.ssl.SSLContexts; +import org.apache.http.ssl.TrustStrategy; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; + +import javax.net.ssl.SSLContext; +import java.security.KeyManagementException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.X509Certificate; + +@Configuration +public class P2pHubApiClientConfig { + + /** + * Insecure HTTP client (trusts all) — only for DEV. + * Keep this in a dev-only profile if possible. + */ + private final P2pHubRestClientConfiguration p2pConfig; + private final AuthorizationHeaderInterceptor authInterceptor; + + @Autowired + public P2pHubApiClientConfig(P2pHubRestClientConfiguration p2pConfig, + AuthorizationHeaderInterceptor authInterceptor) { + this.p2pConfig = p2pConfig; + this.authInterceptor = authInterceptor; + } + + @Bean + public ApiClient summaApiClient() { + if (p2pConfig.isSecureConnection()) { + return createSecureApiClient(); + } else { + return createInsecureApiClient(); + } + } + + private ApiClient createSecureApiClient() { + RestTemplate restTemplate = new RestTemplate(); + restTemplate.getInterceptors().add(authInterceptor); + return new ApiClient(restTemplate); + } + + private ApiClient createInsecureApiClient() { + try { + TrustStrategy trustAll = (X509Certificate[] chain, String authType) -> true; + SSLContext sslContext = SSLContexts.custom() + .loadTrustMaterial(null, trustAll) + .build(); + + CloseableHttpClient httpClient = HttpClients.custom() + .setSSLContext(sslContext) + .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE) + .build(); + + RestTemplate insecureRestTemplate = + new RestTemplate(new HttpComponentsClientHttpRequestFactory(httpClient)); + insecureRestTemplate.getInterceptors().add(authInterceptor); + + return new ApiClient(insecureRestTemplate); + } catch (NoSuchAlgorithmException | KeyManagementException | KeyStoreException e) { + throw new IllegalStateException("Failed to create insecure ApiClient", e); + } + } +} + diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/p2phub/P2pHubBusinessValuesConfiguration.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/p2phub/P2pHubBusinessValuesConfiguration.java new file mode 100644 index 0000000..bfb26a4 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/p2phub/P2pHubBusinessValuesConfiguration.java @@ -0,0 +1,23 @@ +package eu.europa.eeas.erights.backoffice.boot.configuration.p2phub; + +import eu.europa.eeas.ananke.core.starter.base.configuration.RootConfiguration; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Configuration; +import org.springframework.validation.annotation.Validated; + +@EnableConfigurationProperties(P2pHubBusinessValuesConfiguration.class) +@ConfigurationProperties(P2pHubBusinessValuesConfiguration.PREFIX) +@Validated +@Configuration +/* +* Class that holds the static values that are pushed to ABAC HUB, subject to rare changes. +* */ +public class P2pHubBusinessValuesConfiguration implements RootConfiguration { + + public static final String PREFIX = "p2p-hub-business-values"; + +// @NotNull +// private String euloginOidcJwkKid; + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/p2phub/P2pHubRestClientConfiguration.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/p2phub/P2pHubRestClientConfiguration.java new file mode 100644 index 0000000..2bfa1bc --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/p2phub/P2pHubRestClientConfiguration.java @@ -0,0 +1,60 @@ +package eu.europa.eeas.erights.backoffice.boot.configuration.p2phub; + +import eu.europa.eeas.ananke.core.starter.base.configuration.RootConfiguration; +import eu.europa.eeas.ananke.core.starter.base.support.EncryptedConfigurationProperty; +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.NotNull; + +@Getter +@Setter +@Validated +@Component +@ConfigurationProperties(P2pHubRestClientConfiguration.PREFIX) +public class P2pHubRestClientConfiguration implements RootConfiguration { + + public static final String PREFIX = "p2p-hub"; + + @NotNull + private EncryptedConfigurationProperty euloginOidcJwkKid; + + @NotNull + private EncryptedConfigurationProperty euloginOidcPrivateKey; + + @NotNull + private EncryptedConfigurationProperty euloginOidcClientId; + + @NotNull + private String euloginOidcTokenEndpoint; + + @NotNull + private EncryptedConfigurationProperty restClientId; + + @NotNull + private String url; + + @NotNull + private boolean secureConnection = true; + + @NotNull + private boolean mtlsEnabled = false; + + + private String keyStore ; + + + private String keyStorePassword ; + + + private String keyStoreType ; + + + private String keyAlias ; + + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/security/AuthorizationHeaderInterceptor.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/security/AuthorizationHeaderInterceptor.java new file mode 100644 index 0000000..16b7020 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/security/AuthorizationHeaderInterceptor.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.backoffice.boot.configuration.security; + +import eu.europa.eeas.erights.backoffice.service.provider.p2p.AuthTokenProviderServiceProvider; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpRequest; +import org.springframework.http.client.ClientHttpRequestExecution; +import org.springframework.http.client.ClientHttpRequestInterceptor; +import org.springframework.http.client.ClientHttpResponse; +import org.springframework.stereotype.Component; + +import java.io.IOException; + +/** + * Adds "Authorization: Bearer " to every outgoing request. + * Token is fetched per request to avoid stale tokens. + */ +@Component +public class AuthorizationHeaderInterceptor implements ClientHttpRequestInterceptor { + + private final AuthTokenProviderServiceProvider authTokenProviderServiceProvider; + + public AuthorizationHeaderInterceptor(AuthTokenProviderServiceProvider authTokenProviderServiceProvider) { + this.authTokenProviderServiceProvider = authTokenProviderServiceProvider; + } + + @Override + public ClientHttpResponse intercept( + HttpRequest request, byte[] body, ClientHttpRequestExecution execution + ) throws IOException { + String token = authTokenProviderServiceProvider.getSystemPoPToken(); + request.getHeaders().set(HttpHeaders.AUTHORIZATION, "Bearer " + token); + return execution.execute(request, body); + } +} + diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/security/CoopHeaderFilter.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/security/CoopHeaderFilter.java new file mode 100644 index 0000000..041338d --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/configuration/security/CoopHeaderFilter.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.backoffice.boot.configuration.security; + + +import org.springframework.stereotype.Component; + +import javax.servlet.*; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@Component +public class CoopHeaderFilter implements Filter { + + @Override + public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) + throws IOException, ServletException { + HttpServletResponse response = (HttpServletResponse) res; + response.setHeader("Cross-Origin-Opener-Policy", "unsafe-none"); + chain.doFilter(req, res); + } +} \ No newline at end of file diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/statemachine/configurations/AbacItemStateMachineConfiguration.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/statemachine/configurations/AbacItemStateMachineConfiguration.java new file mode 100644 index 0000000..3aeaa5f --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/statemachine/configurations/AbacItemStateMachineConfiguration.java @@ -0,0 +1,33 @@ +package eu.europa.eeas.erights.backoffice.boot.statemachine.configurations; + +import eu.europa.eeas.erights.common.tools.statemachine.AbacItemEvent; +import eu.europa.eeas.erights.common.tools.statemachine.AbacItemState; +import org.springframework.statemachine.config.EnableStateMachineFactory; +import org.springframework.statemachine.config.StateMachineConfigurerAdapter; +import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; +import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; + +import java.util.EnumSet; + +//@Configuration +@EnableStateMachineFactory(name = "abacOperationStateMachineFactory") +public class AbacItemStateMachineConfiguration extends StateMachineConfigurerAdapter { + + @Override + public void configure(StateMachineStateConfigurer states) throws Exception { + states.withStates().initial(AbacItemState.REQUESTED) + .states(EnumSet.allOf(AbacItemState.class)) + .end(AbacItemState.SUCCESS) + .end(AbacItemState.FAILED); + } + + @Override + public void configure(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal().source(AbacItemState.REQUESTED).target(AbacItemState.REQUESTED).event(AbacItemEvent.REQUEST) + .and() + .withExternal().source(AbacItemState.REQUESTED).target(AbacItemState.SUCCESS).event(AbacItemEvent.SUCCESS) + .and() + .withExternal().source(AbacItemState.REQUESTED).target(AbacItemState.FAILED).event(AbacItemEvent.FAIL); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/statemachine/configurations/AbacRequestMachineConfiguration.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/statemachine/configurations/AbacRequestMachineConfiguration.java new file mode 100644 index 0000000..994edbe --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/boot/statemachine/configurations/AbacRequestMachineConfiguration.java @@ -0,0 +1,64 @@ +package eu.europa.eeas.erights.backoffice.boot.statemachine.configurations; + +import eu.europa.eeas.erights.common.tools.statemachine.AbacRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.AbacRequestState; +import org.springframework.statemachine.config.EnableStateMachineFactory; +import org.springframework.statemachine.config.StateMachineConfigurerAdapter; +import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; +import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; + +import java.util.EnumSet; + +//@Configuration +@EnableStateMachineFactory(name = "abacRequestStateMachineFactory") +public class AbacRequestMachineConfiguration extends StateMachineConfigurerAdapter { + + @Override + public void configure(StateMachineStateConfigurer states) throws Exception { + states.withStates().initial(AbacRequestState.INVOICE_REQUESTED) + .states(EnumSet.allOf(AbacRequestState.class)) + .end(AbacRequestState.PAYMENT_ORDER_CREATED) + .end(AbacRequestState.MANUAL_PAYMENT) + .end(AbacRequestState.FAILED); + } + + @Override + public void configure(StateMachineTransitionConfigurer transitions) throws Exception { + appendInvoiceTransitions(transitions); + appendInvoiceSecondVisaTransitions(transitions); + appendPaymentRequestTransitions(transitions); + appendPaymentOrderTransitions(transitions); + } + + private void appendInvoiceTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal().source(AbacRequestState.NEW).target(AbacRequestState.INVOICE_REQUESTED).event(AbacRequestEvent.REQUEST_INVOICE) + .and() + .withExternal().source(AbacRequestState.INVOICE_REQUESTED).target(AbacRequestState.INVOICE_CREATED).event(AbacRequestEvent.SUCCESS) + .and() + .withExternal().source(AbacRequestState.INVOICE_REQUESTED).target(AbacRequestState.FAILED).event(AbacRequestEvent.FAIL) + .and() + .withExternal().source(AbacRequestState.INVOICE_CREATED).target(AbacRequestState.INVOICE_SECOND_VISA_REQUESTED).event(AbacRequestEvent.REQUEST_SECOND_INVOICE_VISA); + } + + private void appendInvoiceSecondVisaTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal().source(AbacRequestState.INVOICE_SECOND_VISA_REQUESTED).target(AbacRequestState.INVOICE_SECOND_VISA_CREATED).event(AbacRequestEvent.SUCCESS) + .and() + .withExternal().source(AbacRequestState.INVOICE_SECOND_VISA_REQUESTED).target(AbacRequestState.FAILED).event(AbacRequestEvent.FAIL) + .and() + .withExternal().source(AbacRequestState.INVOICE_SECOND_VISA_CREATED).target(AbacRequestState.PAYMENT_REQUEST_REQUESTED).event(AbacRequestEvent.REQUEST_PAYMENT_REQUEST); + } + + private void appendPaymentRequestTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal().source(AbacRequestState.PAYMENT_REQUEST_REQUESTED).target(AbacRequestState.PAYMENT_REQUEST_CREATED).event(AbacRequestEvent.SUCCESS) + .and() + .withExternal().source(AbacRequestState.PAYMENT_REQUEST_REQUESTED).target(AbacRequestState.FAILED).event(AbacRequestEvent.FAIL) + .and() + .withExternal().source(AbacRequestState.PAYMENT_REQUEST_CREATED).target(AbacRequestState.PAYMENT_ORDER_REQUESTED).event(AbacRequestEvent.REQUEST_PAYMENT_ORDER); + } + + private void appendPaymentOrderTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal().source(AbacRequestState.PAYMENT_ORDER_REQUESTED).target(AbacRequestState.PAYMENT_ORDER_CREATED).event(AbacRequestEvent.SUCCESS) + .and() + .withExternal().source(AbacRequestState.PAYMENT_ORDER_REQUESTED).target(AbacRequestState.FAILED).event(AbacRequestEvent.FAIL); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/BudgetLineInfoId.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/BudgetLineInfoId.java new file mode 100644 index 0000000..e9d5448 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/BudgetLineInfoId.java @@ -0,0 +1,61 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity; + +import javax.persistence.Column; +import javax.persistence.Embeddable; +import java.io.Serializable; +import java.math.BigInteger; +import java.util.Objects; + +/** + * Complex ID because "ID" is not unique in table "MV_BUDGET_LINE_DATA" + * + * @author idominju + */ +@Embeddable +public class BudgetLineInfoId implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 1L; + + @Column(name = "ID") + private BigInteger id; + + @Column(name = "FUND_SOURCE") + private String fundSource; + + public BigInteger getId() { + return id; + } + + public void setId(BigInteger id) { + this.id = id; + } + + public String getFundSource() { + return fundSource; + } + + public void setFundSource(String fundSource) { + this.fundSource = fundSource; + } + + @Override + public int hashCode() { + return Objects.hash(fundSource, id); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + BudgetLineInfoId other = (BudgetLineInfoId) obj; + return Objects.equals(fundSource, other.fundSource) && Objects.equals(id, other.id); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/BudgetLineInfoJpaEntity.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/BudgetLineInfoJpaEntity.java new file mode 100644 index 0000000..17d460d --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/BudgetLineInfoJpaEntity.java @@ -0,0 +1,230 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Immutable; +import org.hibernate.annotations.Parameter; +import org.hibernate.annotations.Type; +import org.javamoney.moneta.Money; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.time.LocalDateTime; + +/** + * @author idominju + */ +@Entity +@Immutable +@Table(name = BudgetLineInfoJpaEntity.TABLE_NAME) +public class BudgetLineInfoJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "MV_BUDGET_LINE_DATA"; + + public static final String MONEY_AMOUNT = "org.jadira.usertype.moneyandcurrency.moneta.PersistentMoneyAmount"; + + public static final String MONETARY_UNIT = "EUR"; + + public static final String CURRENCY_CODE_PARAMETER = "currencyCode"; + + public static final long serialVersionUID = 1L; + + @Id + @Column(name = "BUDGET_LINE_DATA_ID") + private String budgetLineInfoId; + + @Column(name = "PARENT_LOCAL_KEY") + private String parentLocalKey; + + @Column(name = "BUDGET_LINE") + private String budgetLine; + + @Column(name = "MAIN_ACCOUNT") + private String mainAccount; + + @Column(name = "BUDGET_POSITION") + private String budgetPosition; + + @Column(name = "DELEGATION") + private String delegation; + + @Column(name = "LVL_CODE") + private String lvlCode; + + @Column(name = "LVL_NAME") + private String lvlName; + + @Column(name = "COMMITMENT_ID") + private String commitmentId; + + @Column(name = "COMMITMENT_HEADER_ID") + private String commitmentHeaderId; + + @Column(name = "EXERCISE_ID") + private Integer exerciseId; + + @Column(name = "FUND_SOURCE_GROUP") + private String fundSourceGroup; + + @Column(name = "FUND_SOURCE") + private String fundSource; + + @Column(name = "PAYMENT_CREDITS_AVAILABLE_EUR") + @Type(type = MONEY_AMOUNT, parameters = {@Parameter(name = CURRENCY_CODE_PARAMETER, value = MONETARY_UNIT)}) + private Money paymentCreditsAvailableEur; + + @Column(name = "RAL") + @Type(type = MONEY_AMOUNT, parameters = {@Parameter(name = CURRENCY_CODE_PARAMETER, value = MONETARY_UNIT)}) + private Money ral; + + @Column(name = "TOTAL_COMMITMENTS_EUR") + @Type(type = MONEY_AMOUNT, parameters = {@Parameter(name = CURRENCY_CODE_PARAMETER, value = MONETARY_UNIT)}) + private Money totalCommitmentsEur; + + @Column(name = "SYNC_COMMITMENTS_DATE") + private LocalDateTime syncCommitmentsDate; + /** + * Methods + */ + @Override + public String getId() { + return null; + } + + public String getBudgetLineInfoId() { + return budgetLineInfoId; + } + + public void setBudgetLineInfoId(String budgetLineInfoId) { + this.budgetLineInfoId = budgetLineInfoId; + } + + public String getParentLocalKey() { + return parentLocalKey; + } + + public void setParentLocalKey(String parentLocalKey) { + this.parentLocalKey = parentLocalKey; + } + + public String getBudgetLine() { + return budgetLine; + } + + public void setBudgetLine(String budgetLine) { + this.budgetLine = budgetLine; + } + + public String getMainAccount() { + return mainAccount; + } + + public void setMainAccount(String mainAccount) { + this.mainAccount = mainAccount; + } + + public String getBudgetPosition() { + return budgetPosition; + } + + public void setBudgetPosition(String budgetPosition) { + this.budgetPosition = budgetPosition; + } + + public String getDelegation() { + return delegation; + } + + public void setDelegation(String delegation) { + this.delegation = delegation; + } + + public String getLvlCode() { + return lvlCode; + } + + public void setLvlCode(String lvlCode) { + this.lvlCode = lvlCode; + } + + public String getLvlName() { + return lvlName; + } + + public void setLvlName(String lvlName) { + this.lvlName = lvlName; + } + + public String getCommitmentId() { + return commitmentId; + } + + public void setCommitmentId(String commitmentId) { + this.commitmentId = commitmentId; + } + + public Integer getExerciseId() { + return exerciseId; + } + + public void setExerciseId(Integer exerciseId) { + this.exerciseId = exerciseId; + } + + public String getFundSourceGroup() { + return fundSourceGroup; + } + + public void setFundSourceGroup(String fundSourceGroup) { + this.fundSourceGroup = fundSourceGroup; + } + + public Money getPaymentCreditsAvailableEur() { + return paymentCreditsAvailableEur; + } + + public void setPaymentCreditsAvailableEur(Money paymentCreditsAvailableEur) { + this.paymentCreditsAvailableEur = paymentCreditsAvailableEur; + } + + public Money getRal() { + return ral; + } + + public void setRal(Money ral) { + this.ral = ral; + } + + public Money getTotalCommitmentsEur() { + return totalCommitmentsEur; + } + + public void setTotalCommitmentsEur(Money totalCommitmentsEur) { + this.totalCommitmentsEur = totalCommitmentsEur; + } + + public String getFundSource() { + return fundSource; + } + + public void setFundSource(String fundSource) { + this.fundSource = fundSource; + } + + public String getCommitmentHeaderId() { + return commitmentHeaderId; + } + + public void setCommitmentHeaderId(String commitmentHeaderId) { + this.commitmentHeaderId = commitmentHeaderId; + } + + public LocalDateTime getSyncCommitmentsDate() { + return syncCommitmentsDate; + } + + public void setSyncCommitmentsDate(LocalDateTime syncCommitmentsDate) { + this.syncCommitmentsDate = syncCommitmentsDate; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/BudgetLineSubpostJpaEntity.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/BudgetLineSubpostJpaEntity.java new file mode 100644 index 0000000..3e48b49 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/BudgetLineSubpostJpaEntity.java @@ -0,0 +1,93 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Immutable; +import org.hibernate.annotations.Type; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * @author idominju + */ +@Entity +@Immutable +@Setter +@Getter +@Table(name = BudgetLineSubpostJpaEntity.TABLE_NAME) +public class BudgetLineSubpostJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "BUDGET_LINES_SUBPOSTS_MAPPING"; + + public static final long serialVersionUID = 1L; + + @Id + @Column(name = "BUDGET_LINES_SUBPOSTS_MAPPING_ID") + private Long budgetLinesSubpostsMappingId; + + @Column(name = "BUDGET_LINES") + private String budgetLines; + + @Column(name = "BUDGET_POSITION_BUDGDEL") + private String budgetPositionBudgdel; + + @Column(name = "BUDGET_POSITION_ERIGHTS") + private String budgetPositionErights; + + @Column(name = "FUND_SOURCE") + private String fundSource; + + @Column(name = "SUMMA_FUND_SOURCE_ID") + private Long summaFundSourceId; + + + + @Column(name = "REQUEST_TYPE") + private String requestType; + + @Column(name = "STATUTORY_LINK") + private String statutoryLink; + + @Column(name = "SUBPOST_CODE") + private String subpostCode; + + @Column(name = "SUBPOST_DESCRIPTION") + private String subpostDescription; + + @Column(name = "PERSONNEL_TYPE_ID") + private Integer personnelTypeId; + + @Column(name = "LST_CD") + private String lstCd; + + @Column(name = "SUBPOST_TYPE") + private String subpostType; + + @Column(name = "MOVEMENT_CONTEXT") + private String movementContext; + + @Column(name = "COMMITMENT_LVL_4") + private String commitmentLvl4; + + @Column(name = "BUDGET_PERIODS") + private String budgetPeriods; + + @Column(name = "EARMARKED_FUND") + private String earmarkedFund; + + @Type(type = "yes_no") + @Column(name = "DEFAULT_EARMARKED_FUND") + private Boolean defaultEarmarkedFund; + + + @Override + public String getId() { + return budgetLinesSubpostsMappingId != null + ? String.valueOf(budgetLinesSubpostsMappingId) + : null; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/DelegationCodesJpaEntity.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/DelegationCodesJpaEntity.java new file mode 100644 index 0000000..97f5e6e --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/DelegationCodesJpaEntity.java @@ -0,0 +1,84 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Immutable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * @author idominju + */ +@Entity +@Immutable +@Table(name = DelegationCodesJpaEntity.TABLE_NAME) +public class DelegationCodesJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_DELEGATION_CODES"; + + public static final long serialVersionUID = 1L; + + @Id + @Column(name = "ORG_ID") + private Long orgId; + + @Column(name = "ORG_CODE") + private String orgCode; + + @Column(name = "APPLICATION_VIEW") + private String applicationView; + + @Column(name = "ORG_EXERCISE_ID") + private Integer orgExerciseId; + + @Column(name = "NAME") + private String name; + + @Override + public Long getId() { + return getOrgId(); + } + + public Long getOrgId() { + return orgId; + } + + public void setOrgId(Long orgId) { + this.orgId = orgId; + } + + public String getOrgCode() { + return orgCode; + } + + public void setOrgCode(String orgCode) { + this.orgCode = orgCode; + } + + public String getApplicationView() { + return applicationView; + } + + public void setApplicationView(String applicationView) { + this.applicationView = applicationView; + } + + public Integer getOrgExerciseId() { + return orgExerciseId; + } + + public void setOrgExerciseId(Integer orgExerciseId) { + this.orgExerciseId = orgExerciseId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/PersonAbacCriteriaInfoJpaEntity.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/PersonAbacCriteriaInfoJpaEntity.java new file mode 100644 index 0000000..f54ead5 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/PersonAbacCriteriaInfoJpaEntity.java @@ -0,0 +1,44 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Immutable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * @author idominju + * @author ienaccat + */ +@Entity +@Immutable +@Table(name = PersonAbacCriteriaInfoJpaEntity.TABLE_NAME) +@Getter +@Setter +public class PersonAbacCriteriaInfoJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "MV_RGH_ANALYTICAL_POSTING_CRITERIA"; + + public static final long serialVersionUID = 1L; + + @Id + @Column(name = "PER_ID") + private Long personId; + + @Column(name = "CRITERIA_TYPE") + private String criteriaType; + + @Column(name = "CRITERIA_CODE") + private String criteriaCode; + + @Override + public Long getId() { + return getPersonId(); + } + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/PersonAbacNupInfoJpaEntity.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/PersonAbacNupInfoJpaEntity.java new file mode 100644 index 0000000..5b021f9 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/PersonAbacNupInfoJpaEntity.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Immutable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * @author ienaccat + */ +@Entity +@Immutable +@Table(name = PersonAbacNupInfoJpaEntity.TABLE_NAME) +@Getter +@Setter +public class PersonAbacNupInfoJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "MV_NUP"; + + public static final long serialVersionUID = 1L; + + @Id + @Column(name = "PER_ID") + private Long personId; + + @Column(name = "NUP") + private String nup; + + @Override + public Long getId() { + return getPersonId(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/RequestPaymentAbacInfoJpaEntity.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/RequestPaymentAbacInfoJpaEntity.java new file mode 100644 index 0000000..e738f39 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/RequestPaymentAbacInfoJpaEntity.java @@ -0,0 +1,313 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import org.hibernate.annotations.Type; + +import javax.persistence.*; +import java.util.LinkedList; +import java.util.List; +import java.util.UUID; + +import static javax.persistence.GenerationType.SEQUENCE; + +@Entity + +@Table(name = RequestPaymentAbacInfoJpaEntity.TABLE_NAME) +public class RequestPaymentAbacInfoJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "REQUEST_PAYMENT_ABAC_INFO"; + + public static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + public static final long serialVersionUID = 1L; + + @Id + @Column(name = "REQUEST_PAYMENT_ABAC_INFO_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "REQUEST_ID") + private Long requestId; + + @Column(name = "ANALYTICAL_CODE") + private String analyticalCode; + + @Column(name = "BUDGET_LINE") + private String budgetLine; + + @Column(name = "BUDGET_POSITION") + private String budgetPosition; + + @Column(name = "COMMITMENT_ID") + private String commitmentId; + + @Column(name = "COMMITMENT_HEADER_ID") + private String commitmentHeaderId; + + @Column(name = "EXERCISE_ID") + private String exerciseId; + + @Column(name = "FUND_SOURCE_GROUP") + private String fundSourceGroup; + + @Column(name = "FUND_SOURCE") + private String fundSource; + + @Column(name = "DELEGATION") + private String delegation; + + @Column(name = "LVL_CODE") + private String lvlCode; + + @Column(name = "LVL_NAME") + private String lvlName; + + @Column(name = "MAIN_ACCOUNT") + private String mainAccount; + + @Column(name = "PARENT_LOCAL_KEY") + private String parentLocalKey; + + @Column(name = "PAYMENT_CREDITS_AVAILABLE_EUR") + private Double paymentCreditsAvailableEur; + + @Column(name = "RAL") + private Double ral; + + @Column(name = "TOTAL_COMMITMENTS_EUR") + private Double totalCommitmentsEur; + + @Column(name = "WORKFLOW") + private String workflow; + + @Column(name = "LOCAL_DELEGATION_CODE") + private String localDelegationCode; + + @OneToMany(mappedBy = "requestPaymentAbacInfo", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true) + private List requestSubpostList = new LinkedList<>(); + + @Type(type = "uuid-binary") + @Column(name = "ABAC_COMM_ID", length = 16, unique = true) + private UUID abacCommunicationId; + + @Column(name = "AGENT_NAME") + private String agentName; + + @Column(name = "RESPONSIBLE_ORGANIZATION") + private String responsibleOrganization; + + @Column(name = "RESPONSIBLE_ORGANIZATION_TYPE") + private String responsibleOrganizationType; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getRequestId() { + return requestId; + } + + public void setRequestId(Long requestId) { + this.requestId = requestId; + } + + public String getAnalyticalCode() { + return analyticalCode; + } + + public void setAnalyticalCode(String analyticalCode) { + this.analyticalCode = analyticalCode; + } + + public String getBudgetLine() { + return budgetLine; + } + + public void setBudgetLine(String budgetLine) { + this.budgetLine = budgetLine; + } + + public String getBudgetPosition() { + return budgetPosition; + } + + public void setBudgetPosition(String budgetPosition) { + this.budgetPosition = budgetPosition; + } + + public String getCommitmentId() { + return commitmentId; + } + + public void setCommitmentId(String commitmentId) { + this.commitmentId = commitmentId; + } + + public String getExerciseId() { + return exerciseId; + } + + public void setExerciseId(String exerciseId) { + this.exerciseId = exerciseId; + } + + public String getFundSourceGroup() { + return fundSourceGroup; + } + + public void setFundSourceGroup(String fundSourceGroup) { + this.fundSourceGroup = fundSourceGroup; + } + + public String getFundSource() { + return fundSource; + } + + public void setFundSource(String fundSource) { + this.fundSource = fundSource; + } + + public String getDelegation() { + return delegation; + } + + public void setDelegation(String delegation) { + this.delegation = delegation; + } + + public String getLvlCode() { + return lvlCode; + } + + public void setLvlCode(String lvlCode) { + this.lvlCode = lvlCode; + } + + public String getLvlName() { + return lvlName; + } + + public void setLvlName(String lvlName) { + this.lvlName = lvlName; + } + + public String getMainAccount() { + return mainAccount; + } + + public void setMainAccount(String mainAccount) { + this.mainAccount = mainAccount; + } + + public String getParentLocalKey() { + return parentLocalKey; + } + + public void setParentLocalKey(String parentLocalKey) { + this.parentLocalKey = parentLocalKey; + } + + public Double getPaymentCreditsAvailableEur() { + return paymentCreditsAvailableEur; + } + + public void setPaymentCreditsAvailableEur(Double paymentCreditsAvailableEur) { + this.paymentCreditsAvailableEur = paymentCreditsAvailableEur; + } + + public Double getRal() { + return ral; + } + + public void setRal(Double ral) { + this.ral = ral; + } + + public Double getTotalCommitmentsEur() { + return totalCommitmentsEur; + } + + public void setTotalCommitmentsEur(Double totalCommitmentsEur) { + this.totalCommitmentsEur = totalCommitmentsEur; + } + + public String getWorkflow() { + return workflow; + } + + public void setWorkflow(String workflow) { + this.workflow = workflow; + } + + public String getLocalDelegationCode() { + return localDelegationCode; + } + + public void setLocalDelegationCode(String localDelegationCode) { + this.localDelegationCode = localDelegationCode; + } + + public List getRequestSubpostList() { + return requestSubpostList; + } + + /** + * Please don't delete this and generate again is the mechanism to update the attachment with the latest ones + * + * @param requestSubpostList list of requestSubposts + */ + public void setRequestSubpostList(List requestSubpostList) { + if (requestSubpostList != null) { + this.requestSubpostList.clear(); + this.requestSubpostList.addAll(requestSubpostList); + for (RequestSubpostJpaEntity requestSubpost : this.requestSubpostList) + requestSubpost.setRequestPaymentAbacInfo(this); + } + } + + public UUID getAbacCommunicationId() { + return abacCommunicationId; + } + + public void setAbacCommunicationId(UUID abacCommunicationId) { + this.abacCommunicationId = abacCommunicationId; + } + + public String getAgentName() { + return agentName; + } + + public void setAgentName(String agentName) { + this.agentName = agentName; + } + + public String getCommitmentHeaderId() { + return commitmentHeaderId; + } + + public void setCommitmentHeaderId(String commitmentHeaderId) { + this.commitmentHeaderId = commitmentHeaderId; + } + + public String getResponsibleOrganization() { + return responsibleOrganization; + } + + public void setResponsibleOrganization(String responsibleOrganization) { + this.responsibleOrganization = responsibleOrganization; + } + + public String getResponsibleOrganizationType() { + return responsibleOrganizationType; + } + + public void setResponsibleOrganizationType(String responsibleOrganizationType) { + this.responsibleOrganizationType = responsibleOrganizationType; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/RequestSubpostJpaEntity.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/RequestSubpostJpaEntity.java new file mode 100644 index 0000000..74c504d --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/RequestSubpostJpaEntity.java @@ -0,0 +1,145 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.TypeDefinition; +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Columns; +import org.hibernate.annotations.Type; +import org.javamoney.moneta.Money; + +import javax.persistence.*; + +import static javax.persistence.GenerationType.SEQUENCE; + +@Entity + +@Table(name = RequestSubpostJpaEntity.TABLE_NAME) +public class RequestSubpostJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "REQUEST_SUBPOSTS"; + + public static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + public static final long serialVersionUID = 1L; + + @Id + @Column(name = "REQUEST_SUBPOSTS_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long requestSubpostsId; + + @Column(name = "BUDGET_LINES_SUBPOSTS_MAPPING_ID") + private Long budgetLinesSubpostsMappingId; + + @Column(name = "SUBPOST_CODE") + private String subpostCode; + + @Column(name = "SUBPOST_TYPE") + private String subpostType; + + @Column(name = "SUBPOST_DESCRIPTION") + private String subpostDescription; + + @Columns(columns = {@Column(name = "AMOUNT_CURRENCY"), + @Column(name = "AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money amount; + + @Column(name = "REQUEST_ID") + private Long requestId; + + @JoinColumn(name = "REQUEST_PAYMENT_ABAC_INFO_ID", nullable = false) + @ManyToOne(fetch = FetchType.LAZY) + private RequestPaymentAbacInfoJpaEntity requestPaymentAbacInfo; + + @Column(name = "COMMITMENT_LVL_4") + private String commitmentLvl4; + + @Column(name = "EARMARKED_FUND") + private String earmarkedFund; + + @Override + public String getId() { + return null; + } + + public Long getRequestSubpostsId() { + return requestSubpostsId; + } + + public void setRequestSubpostsId(Long requestSubpostsId) { + this.requestSubpostsId = requestSubpostsId; + } + + public Long getBudgetLinesSubpostsMappingId() { + return budgetLinesSubpostsMappingId; + } + + public void setBudgetLinesSubpostsMappingId(Long budgetLinesSubpostsMappingId) { + this.budgetLinesSubpostsMappingId = budgetLinesSubpostsMappingId; + } + + public String getSubpostCode() { + return subpostCode; + } + + public void setSubpostCode(String subpostCode) { + this.subpostCode = subpostCode; + } + + public String getSubpostType() { + return subpostType; + } + + public void setSubpostType(String subpostType) { + this.subpostType = subpostType; + } + + public String getSubpostDescription() { + return subpostDescription; + } + + public void setSubpostDescription(String subpostDescription) { + this.subpostDescription = subpostDescription; + } + + public Money getAmount() { + return amount; + } + + public void setAmount(Money amount) { + this.amount = amount; + } + + public Long getRequestId() { + return requestId; + } + + public void setRequestId(Long requestId) { + this.requestId = requestId; + } + + public RequestPaymentAbacInfoJpaEntity getRequestPaymentAbacInfo() { + return requestPaymentAbacInfo; + } + + public void setRequestPaymentAbacInfo(RequestPaymentAbacInfoJpaEntity requestPaymentAbacInfo) { + this.requestPaymentAbacInfo = requestPaymentAbacInfo; + } + + public String getCommitmentLvl4() { + return commitmentLvl4; + } + + public void setCommitmentLvl4(String commitmentLvl4) { + this.commitmentLvl4 = commitmentLvl4; + } + + public String getEarmarkedFund() { + return earmarkedFund; + } + + public void setEarmarkedFund(String earmarkedFund) { + this.earmarkedFund = earmarkedFund; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/StateMachineCurrentStatesEntity.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/StateMachineCurrentStatesEntity.java new file mode 100644 index 0000000..fd06f55 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/StateMachineCurrentStatesEntity.java @@ -0,0 +1,79 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import eu.europa.eeas.erights.common.tools.statemachine.RequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.RequestState; +import org.hibernate.annotations.Type; + +import javax.persistence.*; +import java.time.LocalDateTime; +import java.util.UUID; + +/** + * Reimbursement Claim Entity. + * + * @author igianpan + * + */ +@Entity +@Table(name = StateMachineCurrentStatesEntity.TABLE_NAME) +public class StateMachineCurrentStatesEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "ANK_SM_CURRENT_STATES"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "ID", length = 16) + @Type(type = "uuid-binary") + private UUID id; + + @Column(name = "EVENT") + @Enumerated(EnumType.STRING) + private RequestEvent event; + + @Column(name = "ARRIVAL_STATE") + @Enumerated(EnumType.STRING) + private RequestState arrivalState; + + @Column(name = "SAVED_BY") + private Long savedByUserId; + + @Column(name = "SAVED_AT") + private LocalDateTime savedAt; + + + @Override + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public RequestEvent getEvent() { + return event; + } + + public void setEvent( + RequestEvent event) { + this.event = event; + } + + public Long getSavedByUserId() { + return savedByUserId; + } + + public void setSavedByUserId(Long savedByUserId) { + this.savedByUserId = savedByUserId; + } + + public LocalDateTime getSavedAt() { + return savedAt; + } + + public void setSavedAt(LocalDateTime savedAt) { + this.savedAt = savedAt; + } +} \ No newline at end of file diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/StateMachinePreviousStatesEntity.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/StateMachinePreviousStatesEntity.java new file mode 100644 index 0000000..54cb6b5 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/StateMachinePreviousStatesEntity.java @@ -0,0 +1,76 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import eu.europa.eeas.erights.common.tools.statemachine.RequestEvent; +import org.hibernate.annotations.Type; + +import javax.persistence.*; +import java.util.UUID; + +import static javax.persistence.GenerationType.SEQUENCE; + +/** + * Reimbursement Claim Entity. + * + * @author itadephe + * + */ +@Entity +@Table(name = StateMachinePreviousStatesEntity.TABLE_NAME) +public class StateMachinePreviousStatesEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "ANK_SM_PREVIOUS_STATES"; + public static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + private Long id; + + @Column(name = "CURRENT_STATE_ID", length = 16) + @Type(type = "uuid-binary") + private UUID smId; + + @Column(name = "EVENT") + @Enumerated(EnumType.STRING) + private RequestEvent event; + + @Column(name = "SAVED_BY") + private Long savedByUserId; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public UUID getSmId() { + return smId; + } + + public void setSmId(UUID smId) { + this.smId = smId; + } + + public RequestEvent getEvent() { + return event; + } + + public void setEvent( + RequestEvent event) { + this.event = event; + } + + public Long getSavedByUserId() { + return savedByUserId; + } + + public void setSavedByUserId(Long savedByUserId) { + this.savedByUserId = savedByUserId; + } +} \ No newline at end of file diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/SummaFundSourceJpaEntity.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/SummaFundSourceJpaEntity.java new file mode 100644 index 0000000..3e3efd8 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/SummaFundSourceJpaEntity.java @@ -0,0 +1,52 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; + +import javax.persistence.*; + +@Entity +@Table(name = SummaFundSourceJpaEntity.TABLE_NAME) +public class SummaFundSourceJpaEntity extends AbstractJpaEntity { + public static final String TABLE_NAME = "SUMMA_FUND_SOURCE"; + public static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + @Column(name = "ID") + private Long id; + + @Column(name = "ABAC_CODE") + private String abacCode; + + @Column(name = "SUMMA_CODE") + private String summaCode; + + @Column(name = "DESCRIPTION") + private String description; + + @Column(name = "BUDGET_REGIME") + private String budgetRegime; + + // Getters only (since @Immutable) + public Long getId() { + return id; + } + + public String getAbacCode() { + return abacCode; + } + + public String getSummaCode() { + return summaCode; + } + + public String getDescription() { + return description; + } + + public String getBudgetRegime() { + return budgetRegime; + } +} + diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/VBudgetLineJpaEntity.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/VBudgetLineJpaEntity.java new file mode 100644 index 0000000..54e4479 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/VBudgetLineJpaEntity.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Immutable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Immutable +@Table(name = VBudgetLineJpaEntity.TABLE_NAME) +public class VBudgetLineJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_BUDGET_LINES"; + + public static final long serialVersionUID = 1L; + + @Id + @Column(name = "BUDGET_LINE") + private String budgetLine; + + //JOB_ID + + @Override + public String getId() { + return this.budgetLine; + } + + public void setId(String budgetLine) { + this.budgetLine = budgetLine; + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/AllowanceDetailJpaEntity.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/AllowanceDetailJpaEntity.java new file mode 100644 index 0000000..dc3a60b --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/AllowanceDetailJpaEntity.java @@ -0,0 +1,61 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub; + + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.envers.Audited; + +import javax.persistence.*; + +@Audited +@Getter +@Setter +@Entity +@Table(name = AllowanceDetailJpaEntity.TABLE_NAME) +public class AllowanceDetailJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "DETAILS_ALLOWANCE_PAYMENT"; + public static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + @Column(name = "ID") + private Long id; + + @Column(name = "REQUEST_DET_ID") + private String requestDetId; + + @Column(name = "BP_ID") + private String bpId; + + @Column(name = "BANK_ACCOUNT") + private String bankAccount; + + @Column(name = "REQUEST_HED_TITLE") + private String requestHedTitle; + + @Column(name = "QUANTITY") + private String quantity; + + @Column(name = "NET_AMOUNT_LCY") + private Float netAmountLcy; + + @Column(name = "CURRENCY_CD_HED") + private String currencyCdHed; + + @Column(name = "BUDGET_LINE_HED") + private String budgetLineHed; + + @Column(name = "GL_ACCOUNT_HED") + private String glAccountHed; + + @Column(name = "EMAIL_NOTIF") + private String emailNotif; + + @ManyToOne(optional = false, fetch = FetchType.LAZY) + @JoinColumn(name = "ALLOWANCE_PAYMENT_ID", nullable = false, + foreignKey = @ForeignKey(name = "FK_DAP_AP")) + private AllowancePaymentJpaEntity allowancePayment; +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/AllowanceHeaderJpaEntity.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/AllowanceHeaderJpaEntity.java new file mode 100644 index 0000000..4b1f66b --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/AllowanceHeaderJpaEntity.java @@ -0,0 +1,45 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; + +import eu.europa.eeas.erights.backoffice.tools.p2phub.PayMethodEnum; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.envers.Audited; + +import javax.persistence.*; + +@Audited +@Getter +@Setter +@Entity +@Table(name = AllowanceHeaderJpaEntity.TABLE_NAME) +public class AllowanceHeaderJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "HEADER_ALLOWANCE_PAYMENT"; + public static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + @Column(name = "ID") + private Long id; + + @Column(name = "RUN_ID") + private String runId; + + @Column(name = "BATCH_ID") + private String batchId; + + @Column(name = "HR_REQUEST_ID") + private String hrRequestId; + + @Enumerated(EnumType.STRING) + @Column(name = "PAY_METHOD") + private PayMethodEnum payMethodEnum; + + @Column(name = "VALUE") + private String value; + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/AllowancePaymentJpaEntity.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/AllowancePaymentJpaEntity.java new file mode 100644 index 0000000..ab37fd5 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/AllowancePaymentJpaEntity.java @@ -0,0 +1,69 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.AllowanceHeaderJpaEntity; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.envers.Audited; +import org.hibernate.envers.NotAudited; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; + +@Audited +@Getter +@Setter +@Entity +@Table(name = AllowancePaymentJpaEntity.TABLE_NAME) +public class AllowancePaymentJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "ALLOWANCE_PAYMENT"; + public static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + @Column(name = "ID") + private Long id; + + @Column(name = "REQUEST_ID") + private Long requestId; + + @Column(name = "PER_ID") + private Long perId; + + @NotAudited + @OneToMany(mappedBy = "allowancePayment", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY) + private List orderResponses = new ArrayList<>(); + + + @OneToOne(optional = false, fetch = FetchType.LAZY) + @JoinColumn(name = "HEADER_ID", nullable = false, + foreignKey = @ForeignKey(name = "FK_AP_HEADER")) + private AllowanceHeaderJpaEntity header; + + @OneToMany(mappedBy = "allowancePayment", cascade = CascadeType.ALL, orphanRemoval = true) + private List details = new ArrayList<>(); + + // Helper methods + public void addDetail(AllowanceDetailJpaEntity detail) { + details.add(detail); + detail.setAllowancePayment(this); + } + + public void removeDetail(AllowanceDetailJpaEntity detail) { + details.remove(detail); + detail.setAllowancePayment(null); + } + + public void addOrderResponse(OrderResponseJpaEntity orderResponse) { + orderResponses.add(orderResponse); + orderResponse.setAllowancePayment(this); + } + + public void removeOrderResponse(OrderResponseJpaEntity orderResponse) { + orderResponses.remove(orderResponse); + orderResponse.setAllowancePayment(null); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/OrderErrorResponseJpaEntity.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/OrderErrorResponseJpaEntity.java new file mode 100644 index 0000000..c060b62 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/OrderErrorResponseJpaEntity.java @@ -0,0 +1,52 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.envers.Audited; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; + + +@Getter +@Setter +@Entity +@Table(name = OrderErrorResponseJpaEntity.TABLE_NAME) +public class OrderErrorResponseJpaEntity extends AbstractAuditableJpaEntity { + + + public static final String TABLE_NAME = "ORDER_ERROR_RESPONSE"; + public static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + @Column(name = "ID") + private Long id; + + @Column(name = "ORDER_ID") + private Integer orderId; + + @Column(name = "MESSAGE") + private String message; + + @Column(name = "REQUEST_ID") + private Long requestId; + + @Column(name = "PER_ID") + private Long perId; + + @Column(name = "ERROR_CODE") + private String errorCode; + + @Column(name = "ERROR_TEXT") + private String errorText; + + @Column(name = "JSON_SENT") + private String jsonSent; + + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/OrderResponseJpaEntity.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/OrderResponseJpaEntity.java new file mode 100644 index 0000000..a138a0d --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/OrderResponseJpaEntity.java @@ -0,0 +1,72 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.envers.AuditOverride; +import org.hibernate.envers.Audited; + + +import javax.persistence.*; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + + +@Getter +@Setter +@Entity +@Table(name = OrderResponseJpaEntity.TABLE_NAME) +public class OrderResponseJpaEntity extends AbstractAuditableJpaEntity { + + + public static final String TABLE_NAME = "ORDER_RESPONSE"; + public static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + @Column(name = "ID") + private Long id; + + @Column(name = "ORDER_ID") + private Integer orderId; + + @Column(name = "MESSAGE") + private String message; + + @Column(name = "REQUEST_ID") + private Long requestId; + + @Column(name = "PER_ID") + private Long perId; + + @Column(name = "ORDER_STATUS") + private String orderStatus; + + @Column(name = "ORDER_COMMENT") + private String orderComment; + + @Column(name = "LAST_MODIFICATION_DATE") // DATE + private LocalDateTime lastModificationDate; + + @Column(name = "PAYMENT_DIRECTIVE_REFERENCE") + private String paymentDirectiveReference; + + @Column(name = "JSON_SENT") + private String jsonSent; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ALLOWANCE_PAYMENT_ID", nullable = false, + foreignKey = @ForeignKey(name = "FK_ORDER_RESPONSE_ALLOWANCE_PAYMENT")) + private AllowancePaymentJpaEntity allowancePayment; + + + // One OrderResponse can have many statuses + @OneToMany(mappedBy = "orderResponse", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY) + private List orderStatuses = new ArrayList<>(); + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/OrderStatusResponseJpaEntity.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/OrderStatusResponseJpaEntity.java new file mode 100644 index 0000000..274ca92 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/entity/p2phub/OrderStatusResponseJpaEntity.java @@ -0,0 +1,50 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.*; +import java.time.LocalDateTime; + + +@Getter +@Setter +@Entity +@Table(name = OrderStatusResponseJpaEntity.TABLE_NAME) +public class OrderStatusResponseJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "ORDER_STATUS_RESPONSE"; + public static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + @Column(name = "ID", nullable = false) + private Long id; + + @Column(name = "ORDER_ID") + private Integer orderId; + + @Column(name = "ORDER_STATUS") + private String orderStatus; + + @Column(name = "LAST_MODIFICATION_DATE") + private LocalDateTime lastModificationDate; + + @Column(name = "ORDER_COMMENT") + private String orderComment; + + @Column(name = "PAYMENT_DIRECTIVE_REFERENCE") + private String paymentDirectiveReference; + + + + + // Many statuses belong to one order response + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ORDER_RESPONSE_ID", referencedColumnName = "ID", + foreignKey = @ForeignKey(name = "FK_STATUS_ORDER_RESPONSE")) + private OrderResponseJpaEntity orderResponse; + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/BudgetLineInfoJpaRepository.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/BudgetLineInfoJpaRepository.java new file mode 100644 index 0000000..eb49730 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/BudgetLineInfoJpaRepository.java @@ -0,0 +1,15 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.BudgetLineInfoJpaEntity; + +/** + * @author idominju + */ +public interface BudgetLineInfoJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return BudgetLineInfoJpaEntity.class; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/BudgetLineSubpostJpaRepository.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/BudgetLineSubpostJpaRepository.java new file mode 100644 index 0000000..847e104 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/BudgetLineSubpostJpaRepository.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.BudgetLineSubpostJpaEntity; + +import java.util.List; + +/** + * @author idominju + */ +public interface BudgetLineSubpostJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return BudgetLineSubpostJpaEntity.class; + } + + List findAllByMovementContextContains(String content); + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/DelegationCodesJpaRepository.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/DelegationCodesJpaRepository.java new file mode 100644 index 0000000..c0e3087 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/DelegationCodesJpaRepository.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.DelegationCodesJpaEntity; + +import java.util.List; + +/** + * @author idominju + */ +public interface DelegationCodesJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return DelegationCodesJpaEntity.class; + } + + List findByOrgExerciseIdOrderByOrgCodeAsc(Integer orgExerciseId); + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/PersonAbacCriteriaInfoJpaRepository.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/PersonAbacCriteriaInfoJpaRepository.java new file mode 100644 index 0000000..43cf2be --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/PersonAbacCriteriaInfoJpaRepository.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.PersonAbacCriteriaInfoJpaEntity; + +import java.util.List; + +/** + * @author idominju + * @author ienaccat + */ +public interface PersonAbacCriteriaInfoJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return PersonAbacCriteriaInfoJpaEntity.class; + } + + List findByPersonIdAndCriteriaType(Long personId, String criteriaType); + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/PersonAbacNupInfoJpaRepository.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/PersonAbacNupInfoJpaRepository.java new file mode 100644 index 0000000..4f4ebe2 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/PersonAbacNupInfoJpaRepository.java @@ -0,0 +1,18 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.PersonAbacNupInfoJpaEntity; + +/** + * @author ienaccat + */ +public interface PersonAbacNupInfoJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return PersonAbacNupInfoJpaEntity.class; + } + + PersonAbacNupInfoJpaEntity findByPersonId(Long personId); + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/RequestPaymentAbacInfoJpaRepository.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/RequestPaymentAbacInfoJpaRepository.java new file mode 100644 index 0000000..2931401 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/RequestPaymentAbacInfoJpaRepository.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.RequestPaymentAbacInfoJpaEntity; + +/** + * @author idominju + */ +public interface RequestPaymentAbacInfoJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository { + + @Override + default Class getEntityType() { + return RequestPaymentAbacInfoJpaEntity.class; + } + + RequestPaymentAbacInfoJpaEntity findByRequestId(Long requestId); + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/RequestSubpostJpaRepository.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/RequestSubpostJpaRepository.java new file mode 100644 index 0000000..fb00bea --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/RequestSubpostJpaRepository.java @@ -0,0 +1,22 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.RequestSubpostJpaEntity; + +import java.util.List; + +/** + * @author idominju + */ +public interface RequestSubpostJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return RequestSubpostJpaEntity.class; + } + + List findByRequestId(Long requestId); + + List findByRequestPaymentAbacInfo(Long requestPaymentAbacInfoId); + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/StateMachineCurrentStateJpaRepository.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/StateMachineCurrentStateJpaRepository.java new file mode 100644 index 0000000..c376ba5 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/StateMachineCurrentStateJpaRepository.java @@ -0,0 +1,22 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.StateMachineCurrentStatesEntity; +import eu.europa.eeas.erights.common.tools.statemachine.RequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.RequestState; + +import java.util.List; +import java.util.UUID; + +public interface StateMachineCurrentStateJpaRepository extends EntityReaderJpaRepository { + + @Override + public default Class getEntityType() { + return StateMachineCurrentStatesEntity.class; + } + public StateMachineCurrentStatesEntity findFirstByIdAndEventOrderById(UUID id , RequestEvent event); + public StateMachineCurrentStatesEntity findFirstByIdAndArrivalStateOrderById(UUID id , RequestState state); + + public List findAll(); + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/StateMachinePreviousStateJpaRepository.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/StateMachinePreviousStateJpaRepository.java new file mode 100644 index 0000000..c1b9f45 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/StateMachinePreviousStateJpaRepository.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.repository; + + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.StateMachinePreviousStatesEntity; +import eu.europa.eeas.erights.common.tools.statemachine.RequestEvent; + +import java.util.List; +import java.util.UUID; + +public interface StateMachinePreviousStateJpaRepository extends EntityReaderJpaRepository { + + @Override + public default Class getEntityType() { + return StateMachinePreviousStatesEntity.class; + } + public StateMachinePreviousStatesEntity findFirstBySmIdAndEventOrderById(UUID smId , RequestEvent event); + + public List findAll(); + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/SummaFundSourceJpaRepository.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/SummaFundSourceJpaRepository.java new file mode 100644 index 0000000..dd4a8b2 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/SummaFundSourceJpaRepository.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.SummaFundSourceJpaEntity; + +import java.util.List; + +/** + * Repository for SUMMA fund source reference data. + */ +public interface SummaFundSourceJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return SummaFundSourceJpaEntity.class; + } + + + List findAll(); +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/VBudgetLineJpaRepository.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/VBudgetLineJpaRepository.java new file mode 100644 index 0000000..d58917f --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/VBudgetLineJpaRepository.java @@ -0,0 +1,23 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.VBudgetLineJpaEntity; + +/** + * Created by ipatelav on 10/12/2019; e-rights. + * + *

+ * {@link VBudgetLineJpaRepository} jpa repository. + *

+ * + * @author Lavinia Pate. + * @see VBudgetLineJpaRepository + */ +public interface VBudgetLineJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return VBudgetLineJpaEntity.class; + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/p2pbhub/AllowancePaymentJpaRepository.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/p2pbhub/AllowancePaymentJpaRepository.java new file mode 100644 index 0000000..ac68d8f --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/p2pbhub/AllowancePaymentJpaRepository.java @@ -0,0 +1,26 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.repository.p2pbhub; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.AllowancePaymentJpaEntity; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.AllowancePaymentModel; + +import java.util.List; + +public interface AllowancePaymentJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository{ + + @Override + default Class getEntityType() { + return AllowancePaymentJpaEntity.class; + } + + + List findAllByPerId(Long perId); + + List findAllByRequestId(Long requestId); + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/p2pbhub/OrderErrorResponseJpaRepository.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/p2pbhub/OrderErrorResponseJpaRepository.java new file mode 100644 index 0000000..a05d6a9 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/p2pbhub/OrderErrorResponseJpaRepository.java @@ -0,0 +1,24 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.repository.p2pbhub; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.OrderErrorResponseJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.OrderResponseJpaEntity; + +import java.util.List; + +public interface OrderErrorResponseJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository{ + + @Override + default Class getEntityType() { + return OrderErrorResponseJpaEntity.class; + } + + + public List findAllByRequestId(Long requestId); + + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/p2pbhub/OrderResponseJpaRepository.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/p2pbhub/OrderResponseJpaRepository.java new file mode 100644 index 0000000..d2b66de --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/p2pbhub/OrderResponseJpaRepository.java @@ -0,0 +1,24 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.repository.p2pbhub; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.OrderResponseJpaEntity; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderResponseModel; + +import java.util.List; + +public interface OrderResponseJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository{ + + @Override + default Class getEntityType() { + return OrderResponseJpaEntity.class; + } + + public List findAllByRequestId(Long requestId); + + public OrderResponseJpaEntity findByOrderId(Integer orderId); + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/p2pbhub/OrderStatusResponseJpaRepository.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/p2pbhub/OrderStatusResponseJpaRepository.java new file mode 100644 index 0000000..0b9414d --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/data/jpa/repository/p2pbhub/OrderStatusResponseJpaRepository.java @@ -0,0 +1,22 @@ +package eu.europa.eeas.erights.backoffice.data.jpa.repository.p2pbhub; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.OrderStatusResponseJpaEntity; + +import java.util.List; + +public interface OrderStatusResponseJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository{ + + @Override + default Class getEntityType() { + return OrderStatusResponseJpaEntity.class; + } + + public List findAllByOrderId(Long orderId); + + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/exceptionhandling/ERightsBackOfficeExceptionCode.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/exceptionhandling/ERightsBackOfficeExceptionCode.java new file mode 100644 index 0000000..0ce03cb --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/exceptionhandling/ERightsBackOfficeExceptionCode.java @@ -0,0 +1,31 @@ +package eu.europa.eeas.erights.backoffice.exceptionhandling; + +import eu.europa.eeas.ananke.core.base.exception.ExceptionCode; + +public enum ERightsBackOfficeExceptionCode implements ExceptionCode { + + ERBO001("Job not found"), + ERBO002("Error during sending reminder emails for movement files in PENDING state"), + ERBO003("Error during updating the movement files to ONGOING state"), + ERBO004("Error during updating the email notifications sent date and status"), + ERBO005("Error during updating the MF email notifications sent date and status"), + ERBO006("Error during updating the Request email notifications sent date and status"), + ERBO007("There is no expense amounting to more than 0 in the claim"); + + private final String description; + + ERightsBackOfficeExceptionCode(String description) { + this.description = description; + } + + @Override + public String getCode() { + return name(); + } + + @Override + public String getDescription() { + return this.description; + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/listeners/events/AbacRequestApplicationEvent.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/listeners/events/AbacRequestApplicationEvent.java new file mode 100644 index 0000000..b369cd5 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/listeners/events/AbacRequestApplicationEvent.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.backoffice.listeners.events; + +import eu.europa.eeas.erights.common.tools.statemachine.AbacRequestEvent; +import org.springframework.context.ApplicationEvent; + +public class AbacRequestApplicationEvent extends ApplicationEvent { + + private final AbacRequestEvent abacRequestEvent; + + private final Long requestId; + + private final Long requestPaymentAbacInfoId; + + private final String abacId; + + public AbacRequestApplicationEvent(Object source, AbacRequestEvent abacRequestEvent, Long requestId, Long requestPaymentAbacInfoId, String abacId) { + super(source); + this.abacRequestEvent = abacRequestEvent; + this.requestId = requestId; + this.requestPaymentAbacInfoId = requestPaymentAbacInfoId; + this.abacId = abacId; + } + + public AbacRequestEvent getAbacRequestEvent() { + return abacRequestEvent; + } + + public Long getRequestId() { + return requestId; + } + + public Long getRequestPaymentAbacInfoId() { + return requestPaymentAbacInfoId; + } + + public String getAbacId() { + return abacId; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/AllowanceDetailModelToJpaEntityClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/AllowanceDetailModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..5719ca1 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/AllowanceDetailModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,42 @@ +package eu.europa.eeas.erights.backoffice.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.AllowanceDetailJpaEntity; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.AllowanceDetailModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + + * + * @author tapiafo + */ +public class AllowanceDetailModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(AllowanceDetailModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(AllowanceDetailJpaEntity.class); + + public AllowanceDetailModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/AllowanceHeaderModelToJpaEntityClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/AllowanceHeaderModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..0d24b47 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/AllowanceHeaderModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,42 @@ +package eu.europa.eeas.erights.backoffice.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.AllowanceHeaderJpaEntity; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.AllowanceHeaderModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + + * + * @author tapiafo + */ +public class AllowanceHeaderModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(AllowanceHeaderModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(AllowanceHeaderJpaEntity.class); + + public AllowanceHeaderModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/AllowancePaymentModelToJpaEntityClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/AllowancePaymentModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..5c86fdc --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/AllowancePaymentModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,42 @@ +package eu.europa.eeas.erights.backoffice.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.AllowancePaymentJpaEntity; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.AllowancePaymentModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + + * + * @author tapiafo + */ +public class AllowancePaymentModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(AllowancePaymentModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(AllowancePaymentJpaEntity.class); + + public AllowancePaymentModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/BudgetLineInfoModelToJpaEntityClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/BudgetLineInfoModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..0d5ab81 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/BudgetLineInfoModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,49 @@ +package eu.europa.eeas.erights.backoffice.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.BudgetLineInfoJpaEntity; +import eu.europa.eeas.erights.backoffice.service.data.mapping.custommapper.BudgetLineInfoModelToJpaEntityCustomMapper; +import eu.europa.eeas.erights.backoffice.service.model.BudgetLineInfoModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * See {@link BudgetLineInfoModelToJpaEntityCustomMapper} for the custom treatment of Money fields. + * + * @author idominju + */ +public class BudgetLineInfoModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(BudgetLineInfoModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(BudgetLineInfoJpaEntity.class); + + public BudgetLineInfoModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder + .exclude("paymentCreditsAvailableEur") + .exclude("ral") + .exclude("totalCommitmentsEur") + // Customized to map Money <==> Double + .customize(new BudgetLineInfoModelToJpaEntityCustomMapper()) + .byDefault(); + + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/BudgetLineSubpostModelToJpaEntityClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/BudgetLineSubpostModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..a5f9687 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/BudgetLineSubpostModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.backoffice.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.BudgetLineSubpostJpaEntity; +import eu.europa.eeas.erights.backoffice.service.model.BudgetLineSubpostModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author idominju + */ +public class BudgetLineSubpostModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(BudgetLineSubpostModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(BudgetLineSubpostJpaEntity.class); + + public BudgetLineSubpostModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/BusinessPartnerBankAccountModelToJpaEntityClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/BusinessPartnerBankAccountModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..4a92364 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/BusinessPartnerBankAccountModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,46 @@ +package eu.europa.eeas.erights.backoffice.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; + +import eu.europa.eeas.erights.backoffice.service.model.p2phub.BusinessPartnerBankAccountModel; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.PersonBankInfoJpaEntity; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * + * @author tapiafo + */ +public class BusinessPartnerBankAccountModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(BusinessPartnerBankAccountModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(PersonBankInfoJpaEntity.class); + + public BusinessPartnerBankAccountModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder + .field("iban", "ibanCode") // model.iban -> entity.ibanCode + .field("bankAccount", "bankAccountCode") + .field("bankAccountHolderName", "accountHolder") + .byDefault(); + + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/DelegationCodesModelToJpaEntityClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/DelegationCodesModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..c8b5f2f --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/DelegationCodesModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.backoffice.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.DelegationCodesJpaEntity; +import eu.europa.eeas.erights.backoffice.service.model.DelegationCodesModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author idominju + */ +public class DelegationCodesModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(DelegationCodesModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(DelegationCodesJpaEntity.class); + + public DelegationCodesModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/OrderErrorResponseModelToJpaEntityClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/OrderErrorResponseModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..34d2bb9 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/OrderErrorResponseModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,42 @@ +package eu.europa.eeas.erights.backoffice.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.OrderErrorResponseJpaEntity; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderErrorResponseModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + + * + * @author tapiafo + */ +public class OrderErrorResponseModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(OrderErrorResponseModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(OrderErrorResponseJpaEntity.class); + + public OrderErrorResponseModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/OrderResponseModelToJpaEntityClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/OrderResponseModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..de0d4d2 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/OrderResponseModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,43 @@ +package eu.europa.eeas.erights.backoffice.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; + +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.OrderResponseJpaEntity; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderResponseModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + + * + * @author tapiafo + */ +public class OrderResponseModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(OrderResponseModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(OrderResponseJpaEntity.class); + + public OrderResponseModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/OrderStatusResponseModelToJpaEntityClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/OrderStatusResponseModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..cb19fc8 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/OrderStatusResponseModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,42 @@ +package eu.europa.eeas.erights.backoffice.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.OrderStatusResponseJpaEntity; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderStatusResponseModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + + * + * @author tapiafo + */ +public class OrderStatusResponseModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(OrderStatusResponseModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(OrderStatusResponseJpaEntity.class); + + public OrderStatusResponseModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/PersonAbacInfoModelToJpaEntityClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/PersonAbacInfoModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..9e76011 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/PersonAbacInfoModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,40 @@ +package eu.europa.eeas.erights.backoffice.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.PersonAbacCriteriaInfoJpaEntity; +import eu.europa.eeas.erights.backoffice.service.model.PersonAbacInfoModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class PersonAbacInfoModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(PersonAbacInfoModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf( + PersonAbacCriteriaInfoJpaEntity.class); + + public PersonAbacInfoModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/PersonAbacNupInfoModelToJpaEntityClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/PersonAbacNupInfoModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..cb68db2 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/PersonAbacNupInfoModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,40 @@ +package eu.europa.eeas.erights.backoffice.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.PersonAbacNupInfoJpaEntity; +import eu.europa.eeas.erights.backoffice.service.model.PersonAbacNupInfoModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class PersonAbacNupInfoModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(PersonAbacNupInfoModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf( + PersonAbacNupInfoJpaEntity.class); + + public PersonAbacNupInfoModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/PlaceOriginAirportModelToJpaEntityClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/PlaceOriginAirportModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..cf01745 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/PlaceOriginAirportModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.backoffice.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.PlaceOriginAirportJpaEntity; +import eu.europa.eeas.erights.common.service.model.PlaceOriginAirportModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author tapiafo + */ +public class PlaceOriginAirportModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(PlaceOriginAirportModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(PlaceOriginAirportJpaEntity.class); + + public PlaceOriginAirportModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/RequestPaymentAbacInfoModelToJpaEntityClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/RequestPaymentAbacInfoModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..1611b6f --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/RequestPaymentAbacInfoModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.backoffice.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.RequestPaymentAbacInfoJpaEntity; +import eu.europa.eeas.erights.backoffice.service.model.RequestPaymentAbacInfoModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author idominju + */ +public class RequestPaymentAbacInfoModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(RequestPaymentAbacInfoModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(RequestPaymentAbacInfoJpaEntity.class); + + public RequestPaymentAbacInfoModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/RequestSubpostModelToJpaEntityClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/RequestSubpostModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..2603995 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/RequestSubpostModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.backoffice.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.RequestSubpostJpaEntity; +import eu.europa.eeas.erights.backoffice.service.model.RequestSubpostModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author idominju + */ +public class RequestSubpostModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(RequestSubpostModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(RequestSubpostJpaEntity.class); + + public RequestSubpostModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/SummaFundSourceModelToJpaEntityClassMapBuilder.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/SummaFundSourceModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..78cb10b --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/classmapbuilder/SummaFundSourceModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,42 @@ +package eu.europa.eeas.erights.backoffice.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.SummaFundSourceJpaEntity; +import eu.europa.eeas.erights.backoffice.service.model.SummaFundSourceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + + * + * @author tapiafo + */ +public class SummaFundSourceModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(SummaFundSourceModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(SummaFundSourceJpaEntity.class); + + public SummaFundSourceModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/custommapper/BudgetLineInfoModelToJpaEntityCustomMapper.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/custommapper/BudgetLineInfoModelToJpaEntityCustomMapper.java new file mode 100644 index 0000000..23636be --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/custommapper/BudgetLineInfoModelToJpaEntityCustomMapper.java @@ -0,0 +1,46 @@ +package eu.europa.eeas.erights.backoffice.service.data.mapping.custommapper; + +import eu.europa.eeas.erights.backoffice.data.jpa.entity.BudgetLineInfoJpaEntity; +import eu.europa.eeas.erights.backoffice.service.model.BudgetLineInfoModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; +import org.javamoney.moneta.Money; + +/** + * Custom mapper for Entity's Money fields (mapped as Double in model and transfer object) + * + * @author idominju + */ +public class BudgetLineInfoModelToJpaEntityCustomMapper extends CustomMapper { + + @Override + public void mapBtoA(BudgetLineInfoJpaEntity entity, BudgetLineInfoModel model, MappingContext context) { + + // Set monetary value as double: + + model.setPaymentCreditsAvailableEur(entity.getPaymentCreditsAvailableEur() == null ? null : + entity.getPaymentCreditsAvailableEur().getNumber().doubleValue()); + + model.setRal(entity.getRal() == null ? null : entity.getRal().getNumber().doubleValue()); + + model.setTotalCommitmentsEur(entity.getTotalCommitmentsEur() == null ? null : + entity.getTotalCommitmentsEur().getNumber().doubleValue()); + + } + + @Override + public void mapAtoB(BudgetLineInfoModel model, BudgetLineInfoJpaEntity entity, MappingContext context) { + + // Set monetary value as Money (EUR assumed) + + entity.setPaymentCreditsAvailableEur(model.getPaymentCreditsAvailableEur() == null ? null : + Money.of(model.getPaymentCreditsAvailableEur(), BudgetLineInfoJpaEntity.MONETARY_UNIT)); + + entity.setRal(model.getRal() == null ? null : Money.of(model.getRal(), BudgetLineInfoJpaEntity.MONETARY_UNIT)); + + entity.setTotalCommitmentsEur(model.getTotalCommitmentsEur() == null ? null : + Money.of(model.getTotalCommitmentsEur(), BudgetLineInfoJpaEntity.MONETARY_UNIT)); + + } + +} \ No newline at end of file diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/custommapper/BusinessPartnerBankAccountModelToJpaCustomMapper.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/custommapper/BusinessPartnerBankAccountModelToJpaCustomMapper.java new file mode 100644 index 0000000..b39bf11 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/custommapper/BusinessPartnerBankAccountModelToJpaCustomMapper.java @@ -0,0 +1,44 @@ + + +package eu.europa.eeas.erights.backoffice.service.data.mapping.custommapper; + +import eu.europa.eeas.erights.backoffice.service.model.p2phub.BusinessPartnerBankAccountModel; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.PersonBankInfoJpaEntity; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class BusinessPartnerBankAccountModelToJpaCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(BusinessPartnerBankAccountModel model, PersonBankInfoJpaEntity entity, MappingContext context) { + entity.setBaf(model.getBankAccount()); //undertand is baf need to check with Financial team + entity.setAccountHolder(model.getBankAccountHolderName()); + entity.setBusinessPartner(model.getBusinessPartner()); + // entity.setBankAccountCode(model.getBankAccount()); // + entity.setBankIdentification(model.getBankIdentification()); + entity.setBankName(model.getBankName()); + entity.setIbanCode(model.getIban()); + + + + + } + + @Override + public void mapBtoA(PersonBankInfoJpaEntity entity, BusinessPartnerBankAccountModel model, MappingContext context) { + // Reverse mapping: JPA -> Model + model.setBankAccount(entity.getBaf()); + model.setBankAccountHolderName(entity.getAccountHolder()); + + // Long -> String conversion (null-safe); adjust if model expects Long + model.setBusinessPartner(entity.getBusinessPartner()); + + // entity.getBankAccountCode() left out intentionally as it was commented in A->B + model.setBankIdentification(entity.getBankIdentification()); + model.setBankName(entity.getBankName()); + model.setIban(entity.getIbanCode()); + } + + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/custommapper/BusinessPartnerModelToJpaCustomMapper.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/custommapper/BusinessPartnerModelToJpaCustomMapper.java new file mode 100644 index 0000000..22f1552 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/mapping/custommapper/BusinessPartnerModelToJpaCustomMapper.java @@ -0,0 +1,23 @@ + + +package eu.europa.eeas.erights.common.service.data.mapping.custommapper; + +import eu.europa.eeas.erights.backoffice.service.model.p2phub.BusinessPartnerModel; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.PersonBankInfoJpaEntity; +import ma.glasnost.orika.CustomMapper; + +public class BusinessPartnerModelToJpaCustomMapper extends CustomMapper { + +// @Override +// public void mapAtoB(BusinessPartnerModel model, PersonBankInfoJpaEntity entity, MappingContext context) { +// MovementFileJpaEntity movementFile = new MovementFileJpaEntity(); +// movementFile.setId(model.getMovementFileId()); +// +// entity.setMovementFile(movementFile); +// } +// +// @Override +// public void mapBtoA(PersonBankInfoJpaEntity entity, BusinessPartnerModel model, MappingContext context) { +// model.setMovementFileId(entity.getMovementFile().getId()); +// } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/BudgetLineInfoJpaServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/BudgetLineInfoJpaServiceProvider.java new file mode 100644 index 0000000..d54215e --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/BudgetLineInfoJpaServiceProvider.java @@ -0,0 +1,80 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.BudgetLineInfoJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.repository.BudgetLineInfoJpaRepository; +import eu.europa.eeas.erights.backoffice.service.model.BudgetLineInfoModel; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class BudgetLineInfoJpaServiceProvider extends AbstractDataServiceProvider implements + EntityReader { + + @Override + public Class getModelType() { + return BudgetLineInfoModel.class; + } + + @Override + public Class getEntityType() { + return BudgetLineInfoJpaEntity.class; + } + + public List findByBudgetPositionAndDelegationAndExerciseId(String budgetPosition, String delegation, Integer exerciseId) { + + BudgetLineInfoJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + BudgetLineInfoJpaEntity.class, BudgetLineInfoJpaRepository.class); + + Specification filter = getFilter(budgetPosition, delegation, exerciseId); + + List entities = repo.findAll(filter); + + return getBeanMapper().mapAsList(entities, BudgetLineInfoModel.class); + } + + /** + * Compose {@link Specification} based on field values received by the Controller ('null' means don't use that condition) + * + * @param budgetPosition + * @param delegation + * @param exerciseId + * + * @return + */ + private Specification getFilter(String budgetPosition, String delegation, Integer exerciseId) { + + // First condition: Match 'budgetPosition' + Specification accumFilter = (root, query, criteriaBuilder) -> { + return criteriaBuilder.equal(root.get("budgetPosition"), budgetPosition); + }; + + // Also mandatory: commitmentId is not null + accumFilter = accumFilter.and((root, query, criteriaBuilder) -> { + return criteriaBuilder.isNotNull(root.get("commitmentId")); + }); + + // Apply others (AND) if parameter is not null: + + // delegation + if (delegation != null) { + accumFilter = accumFilter.and((root, query, criteriaBuilder) -> { + return criteriaBuilder.equal(root.get("delegation"), delegation); + }); + } + + // exerciseId + if (exerciseId != null) { + accumFilter = accumFilter.and((root, query, criteriaBuilder) -> { + return criteriaBuilder.equal(root.get("exerciseId"), exerciseId); + }); + } + // Return accumulated conditions + return accumFilter; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/BudgetLineSubpostJpaServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/BudgetLineSubpostJpaServiceProvider.java new file mode 100644 index 0000000..2c5dae9 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/BudgetLineSubpostJpaServiceProvider.java @@ -0,0 +1,144 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.BudgetLineSubpostJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.repository.BudgetLineSubpostJpaRepository; +import eu.europa.eeas.erights.backoffice.service.model.BudgetLineSubpostModel; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +@Service +@Transactional +public class BudgetLineSubpostJpaServiceProvider extends AbstractDataServiceProvider implements + EntityReader { + + @Override + public Class getModelType() { + return BudgetLineSubpostModel.class; + } + + @Override + public Class getEntityType() { + return BudgetLineSubpostJpaEntity.class; + } + + /** + * Compose AND multi-filter based on field values. + * Null value means: Don't use that field to filter. + * + * @param budgetPositionBudgdel s + * @param budgetPositionErights s + * @param requestType s + * @param lstCd s + * @param subpostType s + * @param personnelTypeId s + * + * @return s + */ + public List findBudgetLineSubpostsUsingOptionalFilters( + String budgetPositionBudgdel, + String budgetPositionErights, + String requestType, + String lstCd, + String subpostType, + Integer personnelTypeId) { + + BudgetLineSubpostJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + BudgetLineSubpostJpaEntity.class, BudgetLineSubpostJpaRepository.class); + + Specification multiFilter = getFilter(budgetPositionBudgdel, budgetPositionErights, + requestType, lstCd, subpostType, personnelTypeId); + + // If 'multiFilter' is null, then there is no filter: + Iterable entities = (multiFilter == null) ? repo.findAll() : repo.findAll(multiFilter); + + return getBeanMapper().mapAsList(entities, BudgetLineSubpostModel.class); + } + + /** + * Get multi-filter based on field values, using EQUALS operator, and using AND to combine them. + * Null value means: Ignore that field, don't use that condition. + * + * @param budgetPositionBudgdel s + * @param budgetPositionErights s + * @param requestType s + * @param lstCd s + * @param subpostType s + * @param personnelTypeId s + * + * @return s + */ + private Specification getFilter( + String budgetPositionBudgdel, + String budgetPositionErights, + String requestType, + String lstCd, + String subpostType, + Integer personnelTypeId) { + + Specification accumFilter = null; + + accumFilter = addConditionIfValueProvided(accumFilter, "budgetPositionBudgdel", budgetPositionBudgdel); + accumFilter = addConditionIfValueProvided(accumFilter, "budgetPositionErights", budgetPositionErights); + accumFilter = addConditionIfValueProvided(accumFilter, "requestType", requestType); + accumFilter = addConditionIfValueProvided(accumFilter, "lstCd", lstCd); + accumFilter = addConditionIfValueProvided(accumFilter, "subpostType", subpostType); + accumFilter = addConditionIfValueProvided(accumFilter, "personnelTypeId", personnelTypeId); + + return accumFilter; + } + + /** + * Add condition to current filter (with AND), if 'fieldValue' is provided (is not null). + * This method supports null value in 'currentFilter' (it means that there is no current filter), + * and may also return null. + * + * @param currentFilter s + * @param fieldName s + * @param fieldValue s + * + * @return s + */ + private Specification addConditionIfValueProvided( + Specification currentFilter, String fieldName, Object fieldValue) { + + if (fieldValue == null) { + // No additional condition, preserve current filter: + return currentFilter; + } + + // New condition + Specification additionalFilter = (root, query, criteriaBuilder) -> { + return criteriaBuilder.equal(root.get(fieldName), fieldValue); + }; + + if (currentFilter == null) { + // If current filter is non-existing (null) then simply return new filter: + return additionalFilter; + } else { + // Compose with AND: + return currentFilter.and(additionalFilter); + } + } + + public List findBudgetLineForErights(String movementContext) { + + BudgetLineSubpostJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + BudgetLineSubpostJpaEntity.class, BudgetLineSubpostJpaRepository.class); + List entities = new ArrayList<>(); + if(movementContext != null) { + entities = repo.findAllByMovementContextContains(movementContext.toUpperCase()); + } + + entities = entities.size() == 0 ? (List) repo.findAll() : entities; + + return entities.stream().map(BudgetLineSubpostJpaEntity::getBudgetPositionErights).distinct().collect(Collectors.toList()); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/DelegationCodesJpaServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/DelegationCodesJpaServiceProvider.java new file mode 100644 index 0000000..cd7db41 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/DelegationCodesJpaServiceProvider.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.DelegationCodesJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.repository.DelegationCodesJpaRepository; +import eu.europa.eeas.erights.backoffice.service.model.DelegationCodesModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class DelegationCodesJpaServiceProvider extends AbstractDataServiceProvider implements + EntityReader { + + @Override + public Class getModelType() { + return DelegationCodesModel.class; + } + + @Override + public Class getEntityType() { + return DelegationCodesJpaEntity.class; + } + + public List findByOrgExerciseId(Integer orgExerciseId) { + + DelegationCodesJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + DelegationCodesJpaEntity.class, DelegationCodesJpaRepository.class); + + List entities = repo.findByOrgExerciseIdOrderByOrgCodeAsc(orgExerciseId); + + return getBeanMapper().mapAsList(entities, DelegationCodesModel.class); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/PersonAbacCriteriaInfoJpaServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/PersonAbacCriteriaInfoJpaServiceProvider.java new file mode 100644 index 0000000..968a6a8 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/PersonAbacCriteriaInfoJpaServiceProvider.java @@ -0,0 +1,60 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.PersonAbacCriteriaInfoJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.repository.PersonAbacCriteriaInfoJpaRepository; +import eu.europa.eeas.erights.backoffice.service.model.PersonAbacInfoModel; +import eu.europa.eeas.erights.common.service.data.provider.AppParameterJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.AppParameterModel; +import eu.europa.eeas.erights.common.tools.app.AppParamType; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +/** + * @author ienaccat + */ +@Service +@Transactional +@RequiredArgsConstructor +public class PersonAbacCriteriaInfoJpaServiceProvider extends + AbstractDataServiceProvider implements + EntityReader { + + private final String PARAM_POSTING_CRITERIA_ANALYTICAL_TYPE_CODE = "POSTING_CRITERIA_ANALITICAL_TYPE_CODE"; + + private final AppParameterJpaServiceProvider appParameterService; + + @Override + public Class getModelType() { + return PersonAbacInfoModel.class; + } + + @Override + public Class getEntityType() { + return PersonAbacCriteriaInfoJpaEntity.class; + } + + public List findPersonAbacInfoByPersonId(final Long personId) { + + PersonAbacCriteriaInfoJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + PersonAbacCriteriaInfoJpaEntity.class, PersonAbacCriteriaInfoJpaRepository.class); + + List personAbacCriteriaInfoJpaEntities = repo.findByPersonIdAndCriteriaType(personId, + getParameterOrDefault(PARAM_POSTING_CRITERIA_ANALYTICAL_TYPE_CODE, "1AE-M")); + return getBeanMapper().mapAsList(personAbacCriteriaInfoJpaEntities, PersonAbacInfoModel.class); + } + + private String getParameterOrDefault(String key, String defVal) { + List list = appParameterService.getAppParametersByTypeAndKey( + AppParamType.ABAC, key); + if (list.isEmpty()) { + return defVal; + + } + return list.get(0).getValue(); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/PersonAbacNupInfoJpaServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/PersonAbacNupInfoJpaServiceProvider.java new file mode 100644 index 0000000..b17e67f --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/PersonAbacNupInfoJpaServiceProvider.java @@ -0,0 +1,46 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.PersonAbacNupInfoJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.repository.PersonAbacNupInfoJpaRepository; +import eu.europa.eeas.erights.backoffice.service.model.PersonAbacInfoModel; +import eu.europa.eeas.erights.backoffice.service.model.PersonAbacNupInfoModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.Optional; + +/** + * @author ienaccat + */ +@Service +@Transactional +public class PersonAbacNupInfoJpaServiceProvider extends + AbstractDataServiceProvider implements + EntityReader { + + @Override + public Class getModelType() { + return PersonAbacInfoModel.class; + } + + @Override + public Class getEntityType() { + return PersonAbacNupInfoJpaEntity.class; + } + + public Optional findByPersonId(final Long personId) { + + PersonAbacNupInfoJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + PersonAbacNupInfoJpaEntity.class, PersonAbacNupInfoJpaRepository.class); + + PersonAbacNupInfoJpaEntity entity = repo.findByPersonId(personId); + if (entity == null) { + return Optional.empty(); + } + getLogger().info("personAbacNupInfo was found for personId={} ", personId); + return Optional.of(getBeanMapper().map(entity, PersonAbacNupInfoModel.class)); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/PersonBankInfoBackOfficeJpaServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/PersonBankInfoBackOfficeJpaServiceProvider.java new file mode 100644 index 0000000..fe81758 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/PersonBankInfoBackOfficeJpaServiceProvider.java @@ -0,0 +1,45 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.BusinessPartnerBankAccountModel; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.PersonBankInfoJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.PersonBankInfoJpaRepository; +import eu.europa.eeas.erights.common.service.data.provider.declaration.PersonBankInfoJpaServiceProvider; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Transactional +public class PersonBankInfoBackOfficeJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, EntityCreator, +EntityUpdater, EntityDeleter { + + PersonBankInfoJpaServiceProvider personBankInfoJpaServiceProvider; + + + @Override + public Class getModelType() { + return BusinessPartnerBankAccountModel.class; + } + + @Override + public Class getEntityType() { + return PersonBankInfoJpaEntity.class; + } + + public List getBankInfoForPerson(Long personId) { + PersonBankInfoJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(PersonBankInfoJpaEntity.class, PersonBankInfoJpaRepository.class); + return getBeanMapper().mapAsList(repo.findAllByPerId(personId), BusinessPartnerBankAccountModel.class); + } + public boolean isBankAccountAssigned(Long id) { + + return personBankInfoJpaServiceProvider.isBankAccountAssigned(id); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/RequestPaymentAbacInfoJpaServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/RequestPaymentAbacInfoJpaServiceProvider.java new file mode 100644 index 0000000..fcb916d --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/RequestPaymentAbacInfoJpaServiceProvider.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.RequestPaymentAbacInfoJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.repository.RequestPaymentAbacInfoJpaRepository; +import eu.europa.eeas.erights.backoffice.service.model.RequestPaymentAbacInfoModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; + +@Service +@Transactional +public class RequestPaymentAbacInfoJpaServiceProvider extends AbstractDataServiceProvider implements + EntityReader, + EntityCreator { + + @Override + public Class getModelType() { + return RequestPaymentAbacInfoModel.class; + } + + @Override + public Class getEntityType() { + return RequestPaymentAbacInfoJpaEntity.class; + } + + public RequestPaymentAbacInfoModel findRequestPaymentAbacInfoByRequestId(Long requestId) { + + RequestPaymentAbacInfoJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + RequestPaymentAbacInfoJpaEntity.class, RequestPaymentAbacInfoJpaRepository.class); + + RequestPaymentAbacInfoJpaEntity entities = repo.findByRequestId(requestId); + + return getBeanMapper().map(entities, RequestPaymentAbacInfoModel.class); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/RequestSubpostJpaServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/RequestSubpostJpaServiceProvider.java new file mode 100644 index 0000000..abb7afe --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/RequestSubpostJpaServiceProvider.java @@ -0,0 +1,52 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.RequestSubpostJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.repository.RequestSubpostJpaRepository; +import eu.europa.eeas.erights.backoffice.service.model.RequestSubpostModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class RequestSubpostJpaServiceProvider extends AbstractDataServiceProvider implements + EntityReader { + + @Override + public Class getModelType() { + return RequestSubpostModel.class; + } + + @Override + public Class getEntityType() { + return RequestSubpostJpaEntity.class; + } + + public List findRequestSubpostByRequestId( + Long requestId + ) { + + RequestSubpostJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + RequestSubpostJpaEntity.class, RequestSubpostJpaRepository.class); + + // If 'multiFilter' is null, then there is no filter: + List entities = repo.findByRequestId(requestId); + + return getBeanMapper().mapAsList(entities, RequestSubpostModel.class); + } + + public List findRequestSubpostByRequestPaymentAbacInfoId(Long requestPaymentAbacInfoId) { + + RequestSubpostJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + RequestSubpostJpaEntity.class, RequestSubpostJpaRepository.class); + + // If 'multiFilter' is null, then there is no filter: + List entities = repo.findByRequestPaymentAbacInfo(requestPaymentAbacInfoId); + + return getBeanMapper().mapAsList(entities, RequestSubpostModel.class); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/SummaFundSourceJpaServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/SummaFundSourceJpaServiceProvider.java new file mode 100644 index 0000000..c8c172a --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/SummaFundSourceJpaServiceProvider.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.SummaFundSourceJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.repository.SummaFundSourceJpaRepository; +import eu.europa.eeas.erights.backoffice.service.model.SummaFundSourceModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class SummaFundSourceJpaServiceProvider extends AbstractDataServiceProvider implements EntityReader { + + @Override + public Class getModelType() { + return SummaFundSourceModel.class; + } + + @Override + public Class getEntityType() { + return SummaFundSourceJpaEntity.class; + } + + public List findAll() { + + SummaFundSourceJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + SummaFundSourceJpaEntity.class, SummaFundSourceJpaRepository.class); + + List entities = repo.findAll(); + + return getBeanMapper().mapAsList(entities, SummaFundSourceModel.class); + } + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/VReportMovementFileJpaServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/VReportMovementFileJpaServiceProvider.java new file mode 100644 index 0000000..447d2e7 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/VReportMovementFileJpaServiceProvider.java @@ -0,0 +1,54 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.VReportMovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.VReportMovementFileJpaRepository; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.model.VReportMovementFileModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.Collections; +import java.util.List; +import java.util.Set; + +@Service +@Transactional +public class VReportMovementFileJpaServiceProvider extends AbstractDataServiceProvider implements + EntityReader { + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + private MovementFileSecurityChecker movementFileSecurityChecker; + + @Override + public Class getModelType() { + return VReportMovementFileModel.class; + } + + @Override + public Class getEntityType() { + return VReportMovementFileJpaEntity.class; + } + + public List getAllMovementFiles() { + VReportMovementFileJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(VReportMovementFileJpaEntity.class, VReportMovementFileJpaRepository.class); + + if (this.movementFileSecurityChecker.hasOrganisationIndependentListAuthority()) { + List files = repo.findAll(); + + return getBeanMapper().mapAsList(files, VReportMovementFileModel.class); + } else { + Set orgIds = this.movementFileSecurityChecker.getOrganisationsWithListAuthority(); + if (orgIds != null && !orgIds.isEmpty()) { + return getBeanMapper().mapAsList(repo.findByDelegationOrgIdFromIn(orgIds), VReportMovementFileModel.class); + } + } + + return Collections.emptyList(); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/allowance/VReportPostingAllowanceServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/allowance/VReportPostingAllowanceServiceProvider.java new file mode 100644 index 0000000..0353633 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/allowance/VReportPostingAllowanceServiceProvider.java @@ -0,0 +1,69 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider.allowance; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.VReportPostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.allowances.VReportPostingAllowancesJpaRepository; +import eu.europa.eeas.erights.common.security.PostingAllowanceSecurityChecker; +import eu.europa.eeas.erights.common.service.model.allowances.VReportPostingAllowanceModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Collections; +import java.util.List; +import java.util.Set; + +@Service +@Transactional +public class VReportPostingAllowanceServiceProvider extends AbstractDataServiceProvider + implements EntityReader { + + @Autowired + private VReportPostingAllowancesJpaRepository repository; + @Autowired + @Qualifier(ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER) + private PostingAllowanceSecurityChecker postingAllowanceSecurityChecker; + @Override + public Class getModelType() { + return VReportPostingAllowanceModel.class; + } + + @Override + public Class getEntityType() { + return VReportPostingAllowanceJpaEntity.class; + } + + public List getVReportPostingAllowances(Long personId, Integer year) { + + if (this.postingAllowanceSecurityChecker.hasOrganisationIndependentListAuthority()) { + if (personId != null && year != null) { + return getBeanMapper().mapAsList(repository.getByPerIdAndExerciseYear(personId, year), VReportPostingAllowanceModel.class); + } else if (personId == null && year != null) { + return getBeanMapper().mapAsList(repository.getByExerciseYear(year), VReportPostingAllowanceModel.class); + } else if (personId != null) { + return getBeanMapper().mapAsList(repository.getByPerId(personId), VReportPostingAllowanceModel.class); + } else { + return getBeanMapper().mapAsList(repository.findAll(), VReportPostingAllowanceModel.class); + } + }else{ + + Set orgIds = this.postingAllowanceSecurityChecker.getOrganisationsWithListAuthority(); + if (orgIds != null && !orgIds.isEmpty()) { + if (personId != null && year != null) { + return getBeanMapper().mapAsList(repository.getByPerIdAndExerciseYearAndDelegationOrgIdIn(personId, year,orgIds), VReportPostingAllowanceModel.class); + } else if (personId == null && year != null) { + return getBeanMapper().mapAsList(repository.getByExerciseYearAndDelegationOrgIdIn(year,orgIds), VReportPostingAllowanceModel.class); + } else if (personId != null) { + return getBeanMapper().mapAsList(repository.getByPerIdAndDelegationOrgIdIn(personId,orgIds), VReportPostingAllowanceModel.class); + } else { + return getBeanMapper().mapAsList(repository.findByDelegationOrgIdIn(orgIds), VReportPostingAllowanceModel.class); + } + } + + } + return Collections.emptyList(); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/AllowancePaymentJpaServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/AllowancePaymentJpaServiceProvider.java new file mode 100644 index 0000000..f8b91cd --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/AllowancePaymentJpaServiceProvider.java @@ -0,0 +1,88 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.AllowancePaymentJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.repository.p2pbhub.AllowancePaymentJpaRepository; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.AllowanceDetailModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.AllowanceHeaderModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.AllowancePaymentModel; +import org.springframework.stereotype.Service; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class AllowancePaymentJpaServiceProvider extends AbstractDataServiceProvider implements + EntityReader, EntityCreator, + EntityUpdater, EntityDeleter { + + + + + + @Override + public Class getModelType() { + return AllowancePaymentModel.class; + } + + @Override + public Class getEntityType() { + return AllowancePaymentJpaEntity.class; + } + + @PersistenceContext + private EntityManager em; + + private String nextBatchId() { + Object result = em.createNativeQuery("SELECT SEQ_ALLOWANCE_BATCH_ID.NEXTVAL FROM DUAL") + .getSingleResult(); + return result != null ? result.toString() : null; + } + + private String nextRunId() { + Object result = em.createNativeQuery("SELECT SEQ_ALLOWANCE_RUN_ID.NEXTVAL FROM DUAL") + .getSingleResult(); + return result != null ? result.toString() : null; + } + + public List getAllowancePaymentModelByPerId(Long personId) { + AllowancePaymentJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(AllowancePaymentJpaEntity.class, AllowancePaymentJpaRepository.class); + return getBeanMapper().mapAsList(repo.findAllByPerId(personId), AllowancePaymentModel.class); + } + + + public List getAllowancePaymentModelByRequestId(Long requestId) { + AllowancePaymentJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(AllowancePaymentJpaEntity.class, AllowancePaymentJpaRepository.class); + return getBeanMapper().mapAsList(repo.findAllByRequestId(requestId), AllowancePaymentModel.class); + } + + public AllowancePaymentModel createAllowancePaymentModel(Long requestId){ + + AllowancePaymentModel allowancePaymentModel = new AllowancePaymentModel(); + allowancePaymentModel.setRequestId(requestId); + + // Create and set an empty header + AllowanceHeaderModel header = new AllowanceHeaderModel(); + header.setRequestId(requestId.toString()); + header.setBatchId(nextBatchId()); + header.setRunId(nextRunId()); + + allowancePaymentModel.setHeader(header); + + // Create a single empty detail and add it to the list + AllowanceDetailModel detail = new AllowanceDetailModel(); + allowancePaymentModel.getDetails().add(detail); + return allowancePaymentModel; + + + } + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/OrderErrorResponseJpaServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/OrderErrorResponseJpaServiceProvider.java new file mode 100644 index 0000000..b4b3dc0 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/OrderErrorResponseJpaServiceProvider.java @@ -0,0 +1,44 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider.p2phub; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.OrderErrorResponseJpaEntity; + +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.OrderErrorResponseJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.OrderResponseJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.repository.p2pbhub.OrderErrorResponseJpaRepository; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderErrorResponseModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderErrorResponseModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderResponseModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class OrderErrorResponseJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, + EntityCreator { + + @Override + public Class getModelType() { + return OrderErrorResponseModel.class; + } + + @Override + public Class getEntityType() { + return OrderErrorResponseJpaEntity.class; + } + + public List findAllByRequestId(Long requestId){ + OrderErrorResponseJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(OrderErrorResponseJpaEntity.class, OrderErrorResponseJpaRepository.class); + + List appParams = repo.findAllByRequestId(requestId); + return getBeanMapper().mapAsList(appParams, OrderErrorResponseModel.class); + + } ; + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/OrderResponseJpaServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/OrderResponseJpaServiceProvider.java new file mode 100644 index 0000000..82a55c0 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/OrderResponseJpaServiceProvider.java @@ -0,0 +1,56 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider.p2phub; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.OrderErrorResponseJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.OrderResponseJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.repository.p2pbhub.OrderResponseJpaRepository; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderErrorResponseModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderResponseModel; +import eu.europa.eeas.erights.common.data.jpa.entity.AppParameterJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.AppParameterJpaRepository; +import eu.europa.eeas.erights.common.service.model.AppParameterModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class OrderResponseJpaServiceProvider extends AbstractDataServiceProvider implements + EntityReader, + EntityCreator, + EntityUpdater { + + + @Override + public Class getModelType() { + return OrderResponseModel.class; + } + + @Override + public Class getEntityType() { + return OrderResponseJpaEntity.class; + } + + public List findAllByRequestId(Long requestId){ + OrderResponseJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(OrderResponseJpaEntity.class, OrderResponseJpaRepository.class); + + List appParams = repo.findAllByRequestId(requestId); + return getBeanMapper().mapAsList(appParams, OrderResponseModel.class); + + } ; + + public OrderResponseModel findByOrderId(Long orderId){ + OrderResponseJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(OrderResponseJpaEntity.class, OrderResponseJpaRepository.class); + + OrderResponseJpaEntity appParams = repo.findByOrderId(Math.toIntExact(orderId)); + return getBeanMapper().map(appParams, OrderResponseModel.class); + + } ; + + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/OrderStatusResponseJpaServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/OrderStatusResponseJpaServiceProvider.java new file mode 100644 index 0000000..cfef99b --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/OrderStatusResponseJpaServiceProvider.java @@ -0,0 +1,44 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider.p2phub; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.OrderErrorResponseJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.OrderStatusResponseJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.repository.p2pbhub.OrderStatusResponseJpaRepository; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderErrorResponseModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderStatusResponseModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class OrderStatusResponseJpaServiceProvider extends AbstractDataServiceProvider implements + EntityReader, + EntityCreator, + EntityUpdater { + + @Override + public Class getModelType() { + return OrderStatusResponseModel.class; + } + + @Override + public Class getEntityType() { + return OrderStatusResponseJpaEntity.class; + } + + public List findAllByOrderId(Long orderId){ + OrderStatusResponseJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(OrderStatusResponseJpaEntity.class, OrderStatusResponseJpaRepository.class); + + List appParams = repo.findAllByOrderId(orderId); + return getBeanMapper().mapAsList(appParams, OrderStatusResponseModel.class); + + } ; + + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/P2pHubHelperServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/P2pHubHelperServiceProvider.java new file mode 100644 index 0000000..8b24f1d --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/P2pHubHelperServiceProvider.java @@ -0,0 +1,252 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider.p2phub; + +import eu.europa.eeas.ananke.core.base.exception.ValidationRuntimeException; +import eu.europa.eeas.ananke.core.data.support.EntityRepositoryRegistry; +import eu.europa.eeas.ananke.core.locale.AnankeCoreLocaleBeanNames; +import eu.europa.eeas.ananke.core.locale.Localization; +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.StateMachineCurrentStatesEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.repository.StateMachineCurrentStateJpaRepository; +import eu.europa.eeas.erights.backoffice.exceptionhandling.ERightsBackOfficeExceptionCode; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.P2pHubRequestModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.P2pHubRequestPaymentDetailModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.P2pHubResponseModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.RequestExpenseAdminDetailModel; +import eu.europa.eeas.erights.backoffice.service.provider.p2p.AuthTokenProviderServiceProvider; +import eu.europa.eeas.erights.backoffice.service.provider.p2p.P2pHubRestClient; +import eu.europa.eeas.erights.backoffice.service.provider.p2p.StateMachinePreviousStatesServiceProvider; +import eu.europa.eeas.erights.common.boot.configuration.data.ERightsRootConfiguration; +import eu.europa.eeas.erights.common.data.jpa.entity.VPersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.VPersonJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.RequestJpaRepository; +import eu.europa.eeas.erights.common.service.data.provider.declaration.PersonBankInfoJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.tools.statemachine.RequestState; +import org.apache.commons.lang3.StringUtils; +import org.apache.http.client.utils.URIBuilder; +import org.javamoney.moneta.Money; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.*; + +import static eu.europa.eeas.erights.common.service.provider.allowances.TravelAllowanceServiceProvider.EUR_CURRENCY; + +@Service +@Transactional +public class P2pHubHelperServiceProvider extends AbstractServiceProvider { + + public static final Logger logger = LoggerFactory.getLogger(P2pHubHelperServiceProvider.class); + + @Autowired + private EntityRepositoryRegistry entityRepositoryRegistry; + + @Autowired + ApplicationContext applicationContext; + + @Autowired + AuthTokenProviderServiceProvider authTokenProviderServiceProvider; + + @Autowired + StateMachinePreviousStatesServiceProvider stateMachinePreviousStatesServiceProvider; + + @Autowired + P2pHubRestClient p2pHubRestClient; + + @Autowired + PersonBankInfoJpaServiceProvider personsBankInfoJpaDataServiceProvider; + + @Autowired + private ERightsRootConfiguration rootConfiguration; + + + + + + // Get the token, populate the request and send it to the hub via the P2pHubRestClient, parse the response from the Hub and persist it along with timestamp + public P2pHubResponseModel prepareAndSendPaymentRequestToRestClient (RequestModel requestModel , List adminDetails) { + P2pHubRequestModel p2pHubRequestModel = prepareAbacPaymentRequest( requestModel , adminDetails); + logger.info("Sending payment to abac hub {} ", p2pHubRequestModel); + P2pHubResponseModel p2pHubResponse = p2pHubRestClient.sendPaymentToP2pHub(p2pHubRequestModel, authTokenProviderServiceProvider.getSystemPoPToken()); + logger.info(" Response from abac hub{} ", p2pHubResponse.toString()); + p2pHubResponse.setP2pHubRequestModel(p2pHubRequestModel.toString()); + return p2pHubResponse; + + } + + public P2pHubRequestModel getPaymentFromAbac( Long p2pHubId) { + logger.info("Sending delete payment request to abac hub {} " , p2pHubId); + P2pHubRequestModel paymentDetailsInAbac = p2pHubRestClient.getPaymentFromP2pHub(p2pHubId , authTokenProviderServiceProvider.getSystemPoPToken() ); + logger.info(" Response from abac hub{} ", paymentDetailsInAbac.toString()); + return paymentDetailsInAbac; + + } + + public P2pHubResponseModel rejectPaymentInAbac(Long claimId) { + RequestJpaRepository requestJpaRepository = this.entityRepositoryRegistry.getReaderRepositoryFor( + RequestJpaEntity.class, + RequestJpaRepository.class); + RequestJpaEntity requestJpaEntity = requestJpaRepository.findById(claimId); + //logger.info("Sending delete payment request to abac hub {} " , requestJpaEntity.getP2pHubId()); + P2pHubResponseModel p2pHubResponse = p2pHubRestClient.rejectPaymentInP2pHub(authTokenProviderServiceProvider.getSystemPoPToken() , requestJpaEntity.getP2pHubOrderId()); + logger.info(" Response from abac hub{} ", p2pHubResponse.toString()); + return p2pHubResponse; + } + + private P2pHubRequestModel prepareAbacPaymentRequest(RequestModel requestModel , List adminDetails){ + logger.info("Preparing payment to send to abac hub"); + P2pHubRequestModel p2pHubRequestModel = new P2pHubRequestModel(); + p2pHubRequestModel.setExternalId(requestModel.getId()); + p2pHubRequestModel.setTitle(buildPaymentRequestTitle(requestModel)); + + p2pHubRequestModel.setLegalEntityAbacKey(buildPaymentRequestBankAccountLef(requestModel)); + p2pHubRequestModel.setBankAccountAbacKey(buildPaymentRequestBankAccountBaf(requestModel)); + p2pHubRequestModel.setReferenceUrl(buildPaymentRequestReferenceUrl(requestModel)); + p2pHubRequestModel = stateMachinePreviousStatesServiceProvider.setActors(requestModel , p2pHubRequestModel); + p2pHubRequestModel.setRequestReference(String.valueOf(requestModel.getRequestNumber())); + p2pHubRequestModel.setReceptionDate(getLastUpdateDateTime(requestModel).toString()); + p2pHubRequestModel.setLanguageCode(getLanguageCode()); + setTotalAmount(p2pHubRequestModel , adminDetails , requestModel); + List p2pHubRequestPaymentDetailModelList = buildP2pHubRequestPaymentDetails(requestModel , adminDetails); + p2pHubRequestModel.setDetails(p2pHubRequestPaymentDetailModelList); + return p2pHubRequestModel; + + } + + private LocalDateTime getLastUpdateDateTime (RequestModel requestModel) { + StateMachineCurrentStateJpaRepository repository = this.entityRepositoryRegistry.getReaderRepositoryFor( + StateMachineCurrentStatesEntity.class, + StateMachineCurrentStateJpaRepository.class); + return repository.findFirstByIdAndArrivalStateOrderById(requestModel.getSmId(), RequestState.CLOSED).getSavedAt(); + } + + + + private String getLanguageCode(){ + Localization localization = this.applicationContext.getBean(AnankeCoreLocaleBeanNames.LOCALIZATION, Localization.class); + String languageCode = null; + + Locale locale = localization.getLocale(); + if (StringUtils.equals(locale.getLanguage(), Locale.ENGLISH.getLanguage())) { + languageCode= "EN"; + } else if (StringUtils.equals(locale.getLanguage(), Locale.FRENCH.getLanguage())) { + languageCode = "FR"; + } + return languageCode; + } + private void setTotalAmount(P2pHubRequestModel p2pHubRequestModel , List adminDetailModels , RequestModel requestModel){ + BigDecimal totalAmount = BigDecimal.ZERO; + for(RequestExpenseAdminDetailModel expenseAdminDetailModel : adminDetailModels){ + BigDecimal amountToAdd = expenseAdminDetailModel.getReimbursementAmount().getNumber().numberValue(BigDecimal.class); + + + totalAmount = totalAmount.add(amountToAdd); + } + + Money totalAmountMoney = Money.of(totalAmount,EUR_CURRENCY); + requestModel.setTotalAmount(totalAmountMoney); + } + + + private List buildP2pHubRequestPaymentDetails(RequestModel requestModel , List adminDetailModels){ + + + long detailNumber = 0L; + List p2pHubRequestPaymentDetailModel = new ArrayList<>(); + Map> map = new HashMap<>(); + + + //build AbacDetail for each claim expense admin detail + Iterator claimExpenseAdminDetailIterator = map.keySet().iterator(); + while (claimExpenseAdminDetailIterator.hasNext()) { + detailNumber = detailNumber+1L; + String key = claimExpenseAdminDetailIterator.next(); + List claimExpenseModellist = map.get(key); + BigDecimal totalAmount = BigDecimal.ZERO; + for (RequestExpenseAdminDetailModel expense : claimExpenseModellist) { + BigDecimal reimbursementAmountToAdd = expense.getReimbursementAmount().getNumber().numberValue(BigDecimal.class); + + + totalAmount = totalAmount.add(reimbursementAmountToAdd); + } + + P2pHubRequestPaymentDetailModel detailModel = new P2pHubRequestPaymentDetailModel(); + + detailModel.setDetailAmount(totalAmount.doubleValue()); + + detailModel.setDetailNumber(detailNumber); + + + + // Zero amount expenses are not allowed by ABAC + if (detailModel.getDetailAmount() > 0) { + p2pHubRequestPaymentDetailModel.add(detailModel); + } + + } + + if (p2pHubRequestPaymentDetailModel.size() <= 0) { + throw new ValidationRuntimeException(ERightsBackOfficeExceptionCode.ERBO007, ERightsBackOfficeExceptionCode.ERBO007.getDescription()); + } + + return p2pHubRequestPaymentDetailModel; + + } + + + private VPersonJpaRepository getVpersonJpaRepository(){ + return this.entityRepositoryRegistry.getReaderRepositoryFor( + VPersonJpaEntity.class, + VPersonJpaRepository.class); + } + + private String buildPaymentRequestTitle (RequestModel requestModel) { + + VPersonJpaEntity entity = getVpersonJpaRepository().findById(requestModel.getStaffMember().getId()); + StringBuilder str = new StringBuilder("DEL"); + str.append("-DELCODE_"); //TODO get code if needed + str.append("-MEC-"); + str.append(entity.getFirstName().charAt(0)); + str.append("."); + str.append(entity.getLastName().toUpperCase()); + str.append("-"); + str.append(requestModel.getRequestNumber()); + + return str.toString(); + } + + private String buildPaymentRequestBankAccountLef (RequestModel requestModel) { + return requestModel.getPersonBankInfo().getLef(); + } + + private String buildPaymentRequestBankAccountBaf (RequestModel requestModel) { + return requestModel.getPersonBankInfo().getBaf(); + } + + private String buildPaymentRequestReferenceUrl (RequestModel requestModel) { + String environmentHost = rootConfiguration.getHostName(); + String environmentProtocol = rootConfiguration.getProtocol(); + + URIBuilder builder = new URIBuilder() + .setScheme(environmentProtocol) + .setHost(environmentHost); + + builder.setPath("/reimbursement/claim/view.do"); + builder.addParameter("id", requestModel.getId().toString()); + + return builder.toString(); + + } + public void save(RequestJpaEntity requestJpaEntity){ + RequestJpaRepository repository = this.entityRepositoryRegistry.getReaderRepositoryFor( + RequestJpaEntity.class, RequestJpaRepository.class); + repository.save(requestJpaEntity); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/P2pHubOrderErrorApiException.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/P2pHubOrderErrorApiException.java new file mode 100644 index 0000000..e38b173 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/P2pHubOrderErrorApiException.java @@ -0,0 +1,29 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider.p2phub; + + + + +import eu.europa.eeas.erights.web.p2phub.client.transferobject.OrderErrorResponseTransferObject; +import lombok.Getter; +import org.springframework.http.HttpStatus; + +@Getter +public class P2pHubOrderErrorApiException extends RuntimeException { + private final HttpStatus status; + private final String rawBody; + private final OrderErrorResponseTransferObject error; + + public P2pHubOrderErrorApiException(HttpStatus status, + String message, + String rawBody, + OrderErrorResponseTransferObject error, + Throwable cause) { + super(message, cause); + this.status = status; + this.rawBody = rawBody; + this.error = error; + } + + +} + diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/P2pStatusScheduler.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/P2pStatusScheduler.java new file mode 100644 index 0000000..cab4ce1 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/data/provider/p2phub/P2pStatusScheduler.java @@ -0,0 +1,10 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider.p2phub; + +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; + +@Configuration +@EnableScheduling +public class P2pStatusScheduler { + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/BudgetLineInfoModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/BudgetLineInfoModel.java new file mode 100644 index 0000000..2a1d5b1 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/BudgetLineInfoModel.java @@ -0,0 +1,189 @@ +package eu.europa.eeas.erights.backoffice.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +import java.time.LocalDateTime; + +/** + * @author idominju + */ +public class BudgetLineInfoModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private String budgetLineInfoId; + + private String parentLocalKey; + + private String budgetLine; + + private String mainAccount; + + private String budgetPosition; + + private String delegation; + + private String lvlCode; + + private String lvlName; + + private String commitmentId; + + private String commitmentHeaderId; + + private Integer exerciseId; + + private String fundSourceGroup; + + private String fundSource; + + private Double paymentCreditsAvailableEur; + + private Double ral; + + private Double totalCommitmentsEur; + + private LocalDateTime syncCommitmentsDate; + + /** + * Methods + * @return s + */ + public String getBudgetLineInfoId() { + return budgetLineInfoId; + } + + public void setBudgetLineInfoId(String budgetLineInfoId) { + this.budgetLineInfoId = budgetLineInfoId; + } + + public String getParentLocalKey() { + return parentLocalKey; + } + + public void setParentLocalKey(String parentLocalKey) { + this.parentLocalKey = parentLocalKey; + } + + public String getBudgetLine() { + return budgetLine; + } + + public void setBudgetLine(String budgetLine) { + this.budgetLine = budgetLine; + } + + public String getMainAccount() { + return mainAccount; + } + + public void setMainAccount(String mainAccount) { + this.mainAccount = mainAccount; + } + + public String getBudgetPosition() { + return budgetPosition; + } + + public void setBudgetPosition(String budgetPosition) { + this.budgetPosition = budgetPosition; + } + + public String getDelegation() { + return delegation; + } + + public void setDelegation(String delegation) { + this.delegation = delegation; + } + + public String getLvlCode() { + return lvlCode; + } + + public void setLvlCode(String lvlCode) { + this.lvlCode = lvlCode; + } + + public String getLvlName() { + return lvlName; + } + + public void setLvlName(String lvlName) { + this.lvlName = lvlName; + } + + public String getCommitmentId() { + return commitmentId; + } + + public void setCommitmentId(String commitmentId) { + this.commitmentId = commitmentId; + } + + public Integer getExerciseId() { + return exerciseId; + } + + public void setExerciseId(Integer exerciseId) { + this.exerciseId = exerciseId; + } + + public String getFundSourceGroup() { + return fundSourceGroup; + } + + public void setFundSourceGroup(String fundSourceGroup) { + this.fundSourceGroup = fundSourceGroup; + } + + public Double getPaymentCreditsAvailableEur() { + return paymentCreditsAvailableEur; + } + + public void setPaymentCreditsAvailableEur(Double paymentCreditsAvailableEur) { + this.paymentCreditsAvailableEur = paymentCreditsAvailableEur; + } + + public Double getRal() { + return ral; + } + + public void setRal(Double ral) { + this.ral = ral; + } + + public Double getTotalCommitmentsEur() { + return totalCommitmentsEur; + } + + public void setTotalCommitmentsEur(Double totalCommitmentsEur) { + this.totalCommitmentsEur = totalCommitmentsEur; + } + + public String getFundSource() { + return fundSource; + } + + public void setFundSource(String fundSource) { + this.fundSource = fundSource; + } + + public String getCommitmentHeaderId() { + return commitmentHeaderId; + } + + public void setCommitmentHeaderId(String commitmentHeaderId) { + this.commitmentHeaderId = commitmentHeaderId; + } + + + public LocalDateTime getSyncCommitmentsDate() { + return syncCommitmentsDate; + } + + public void setSyncCommitmentsDate(LocalDateTime syncCommitmentsDate) { + this.syncCommitmentsDate = syncCommitmentsDate; + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/BudgetLineSubpostModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/BudgetLineSubpostModel.java new file mode 100644 index 0000000..4fda40f --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/BudgetLineSubpostModel.java @@ -0,0 +1,53 @@ +package eu.europa.eeas.erights.backoffice.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.Column; + +/** + * @author idominju + */ +@Getter +@Setter +public class BudgetLineSubpostModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long budgetLinesSubpostsMappingId; + + private String budgetLines; + + private String budgetPositionBudgdel; + + private String budgetPositionErights; + + private String fundSource; + + private String requestType; + + private String statutoryLink; + + private String subpostCode; + + private String subpostDescription; + + private Integer personnelTypeId; + + private String lstCd; + + private String subpostType; + + private String commitmentLvl4; + + private String budgetPeriods; + + private String earmarkedFund; + + private Long summaFundSourceId; + + private Boolean defaultEarmarkedFund; + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/DelegationCodesModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/DelegationCodesModel.java new file mode 100644 index 0000000..902dbc8 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/DelegationCodesModel.java @@ -0,0 +1,62 @@ +package eu.europa.eeas.erights.backoffice.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +/** + * @author idominju + */ +public class DelegationCodesModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long orgId; + + private String orgCode; + + private String applicationView; + + private Integer orgExerciseId; + + private String name; + + public Long getOrgId() { + return orgId; + } + + public void setOrgId(Long orgId) { + this.orgId = orgId; + } + + public String getOrgCode() { + return orgCode; + } + + public void setOrgCode(String orgCode) { + this.orgCode = orgCode; + } + + public String getApplicationView() { + return applicationView; + } + + public void setApplicationView(String applicationView) { + this.applicationView = applicationView; + } + + public Integer getOrgExerciseId() { + return orgExerciseId; + } + + public void setOrgExerciseId(Integer orgExerciseId) { + this.orgExerciseId = orgExerciseId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/PersonAbacInfoModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/PersonAbacInfoModel.java new file mode 100644 index 0000000..ed8c360 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/PersonAbacInfoModel.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.backoffice.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import lombok.Getter; +import lombok.Setter; + +/** + * @author idominju + */ +@Getter +@Setter +public class PersonAbacInfoModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long personId; + + private String criteriaCode; + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/PersonAbacNupInfoModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/PersonAbacNupInfoModel.java new file mode 100644 index 0000000..a952f15 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/PersonAbacNupInfoModel.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.backoffice.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import lombok.Getter; +import lombok.Setter; + +/** + * @author ienaccat + */ +@Getter +@Setter +public class PersonAbacNupInfoModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long personId; + + private String nup; + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/RequestPaymentAbacInfoModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/RequestPaymentAbacInfoModel.java new file mode 100644 index 0000000..a7fc634 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/RequestPaymentAbacInfoModel.java @@ -0,0 +1,264 @@ +package eu.europa.eeas.erights.backoffice.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +import java.util.List; +import java.util.UUID; + +/** + * @author idominju + */ +public class RequestPaymentAbacInfoModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long id; + + private Long requestId; + + private String analyticalCode; + + private String budgetLine; + + private String budgetPosition; + + private String commitmentId; + + private String commitmentHeaderId; + + private String exerciseId; + + private String fundSourceGroup; + + private String fundSource; + + private String delegation; + + private String lvlCode; + + private String lvlName; + + private String mainAccount; + + private String parentLocalKey; + + private Double paymentCreditsAvailableEur; + + private Double ral; + + private Double totalCommitmentsEur; + + private String workflow; + + private String localDelegationCode; + + private List requestSubpostList; + + private UUID abacCommunicationId; + + private String agentName; + + private String responsibleOrganization; + + private String responsibleOrganizationType; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getRequestId() { + return requestId; + } + + public void setRequestId(Long requestId) { + this.requestId = requestId; + } + + public String getAnalyticalCode() { + return analyticalCode; + } + + public void setAnalyticalCode(String analyticalCode) { + this.analyticalCode = analyticalCode; + } + + public String getBudgetLine() { + return budgetLine; + } + + public void setBudgetLine(String budgetLine) { + this.budgetLine = budgetLine; + } + + public String getBudgetPosition() { + return budgetPosition; + } + + public void setBudgetPosition(String budgetPosition) { + this.budgetPosition = budgetPosition; + } + + public String getCommitmentId() { + return commitmentId; + } + + public void setCommitmentId(String commitmentId) { + this.commitmentId = commitmentId; + } + + public String getExerciseId() { + return exerciseId; + } + + public void setExerciseId(String exerciseId) { + this.exerciseId = exerciseId; + } + + public String getFundSourceGroup() { + return fundSourceGroup; + } + + public void setFundSourceGroup(String fundSourceGroup) { + this.fundSourceGroup = fundSourceGroup; + } + + public String getFundSource() { + return fundSource; + } + + public void setFundSource(String fundSource) { + this.fundSource = fundSource; + } + + public String getDelegation() { + return delegation; + } + + public void setDelegation(String delegation) { + this.delegation = delegation; + } + + public String getLvlCode() { + return lvlCode; + } + + public void setLvlCode(String lvlCode) { + this.lvlCode = lvlCode; + } + + public String getLvlName() { + return lvlName; + } + + public void setLvlName(String lvlName) { + this.lvlName = lvlName; + } + + public String getMainAccount() { + return mainAccount; + } + + public void setMainAccount(String mainAccount) { + this.mainAccount = mainAccount; + } + + public String getParentLocalKey() { + return parentLocalKey; + } + + public void setParentLocalKey(String parentLocalKey) { + this.parentLocalKey = parentLocalKey; + } + + public Double getPaymentCreditsAvailableEur() { + return paymentCreditsAvailableEur; + } + + public void setPaymentCreditsAvailableEur(Double paymentCreditsAvailableEur) { + this.paymentCreditsAvailableEur = paymentCreditsAvailableEur; + } + + public Double getRal() { + return ral; + } + + public void setRal(Double ral) { + this.ral = ral; + } + + public Double getTotalCommitmentsEur() { + return totalCommitmentsEur; + } + + public void setTotalCommitmentsEur(Double totalCommitmentsEur) { + this.totalCommitmentsEur = totalCommitmentsEur; + } + + public String getWorkflow() { + return workflow; + } + + public void setWorkflow(String workflow) { + this.workflow = workflow; + } + + public String getLocalDelegationCode() { + return localDelegationCode; + } + + public void setLocalDelegationCode(String localDelegationCode) { + this.localDelegationCode = localDelegationCode; + } + + public List getRequestSubpostList() { + return requestSubpostList; + } + + public void setRequestSubpostList(List requestSubpostList) { + this.requestSubpostList = requestSubpostList; + } + + public UUID getAbacCommunicationId() { + return abacCommunicationId; + } + + public void setAbacCommunicationId(UUID abacCommunicationId) { + this.abacCommunicationId = abacCommunicationId; + } + + public String getAgentName() { + return agentName; + } + + public void setAgentName(String agentName) { + this.agentName = agentName; + } + + public String getCommitmentHeaderId() { + return commitmentHeaderId; + } + + public void setCommitmentHeaderId(String commitmentHeaderId) { + this.commitmentHeaderId = commitmentHeaderId; + } + + public String getResponsibleOrganization() { + return responsibleOrganization; + } + + public void setResponsibleOrganization(String responsibleOrganization) { + this.responsibleOrganization = responsibleOrganization; + } + + public String getResponsibleOrganizationType() { + return responsibleOrganizationType; + } + + public void setResponsibleOrganizationType(String responsibleOrganizationType) { + this.responsibleOrganizationType = responsibleOrganizationType; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/RequestSubpostModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/RequestSubpostModel.java new file mode 100644 index 0000000..649ba85 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/RequestSubpostModel.java @@ -0,0 +1,102 @@ +package eu.europa.eeas.erights.backoffice.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import org.javamoney.moneta.Money; + +/** + * @author idominju + */ +public class RequestSubpostModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long requestSubpostsId; + + private Long budgetLinesSubpostsMappingId; + + private String subpostCode; + + private String subpostType; + + private String subpostDescription; + + private Money amount; + + private Long requestId; + + private RequestPaymentAbacInfoModel requestPaymentAbacInfo; + + private String commitmentLvl4; + + public Long getRequestSubpostsId() { + return requestSubpostsId; + } + + public void setRequestSubpostsId(Long requestSubpostsId) { + this.requestSubpostsId = requestSubpostsId; + } + + public Long getBudgetLinesSubpostsMappingId() { + return budgetLinesSubpostsMappingId; + } + + public void setBudgetLinesSubpostsMappingId(Long budgetLinesSubpostsMappingId) { + this.budgetLinesSubpostsMappingId = budgetLinesSubpostsMappingId; + } + + public String getSubpostCode() { + return subpostCode; + } + + public void setSubpostCode(String subpostCode) { + this.subpostCode = subpostCode; + } + + public String getSubpostType() { + return subpostType; + } + + public void setSubpostType(String subpostType) { + this.subpostType = subpostType; + } + + public String getSubpostDescription() { + return subpostDescription; + } + + public void setSubpostDescription(String subpostDescription) { + this.subpostDescription = subpostDescription; + } + + public Money getAmount() { + return amount; + } + + public void setAmount(Money amount) { + this.amount = amount; + } + + public Long getRequestId() { + return requestId; + } + + public void setRequestId(Long requestId) { + this.requestId = requestId; + } + + public RequestPaymentAbacInfoModel getRequestPaymentAbacInfo() { + return requestPaymentAbacInfo; + } + + public void setRequestPaymentAbacInfo(RequestPaymentAbacInfoModel requestPaymentAbacInfo) { + this.requestPaymentAbacInfo = requestPaymentAbacInfo; + } + + public String getCommitmentLvl4() { + return commitmentLvl4; + } + + public void setCommitmentLvl4(String commitmentLvl4) { + this.commitmentLvl4 = commitmentLvl4; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/StateMachinePreviousStateModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/StateMachinePreviousStateModel.java new file mode 100644 index 0000000..b8e9158 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/StateMachinePreviousStateModel.java @@ -0,0 +1,55 @@ +package eu.europa.eeas.erights.backoffice.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.erights.common.tools.statemachine.RequestEvent; + +import java.util.UUID; + +/** + * Currency Model. + * + * @author ilealpro + * + */ +public class StateMachinePreviousStateModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long id; + private UUID smid; + private RequestEvent event; + private Long savedByUserId; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public UUID getSmid() { + return smid; + } + + public void setSmid(UUID smid) { + this.smid = smid; + } + + public RequestEvent getEvent() { + return event; + } + + public void setEvent( + RequestEvent event) { + this.event = event; + } + + public Long getSavedByUserId() { + return savedByUserId; + } + + public void setSavedByUserId(Long savedByUserId) { + this.savedByUserId = savedByUserId; + } +} \ No newline at end of file diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/SummaFundSourceModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/SummaFundSourceModel.java new file mode 100644 index 0000000..6a7388a --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/SummaFundSourceModel.java @@ -0,0 +1,66 @@ +package eu.europa.eeas.erights.backoffice.service.model; + + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + + + +public class SummaFundSourceModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long id; + + + private String abacCode; + + + private String summaCode; + + + private String description; + + + private String budgetRegime; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getAbacCode() { + return abacCode; + } + + public void setAbacCode(String abacCode) { + this.abacCode = abacCode; + } + + public String getSummaCode() { + return summaCode; + } + + public void setSummaCode(String summaCode) { + this.summaCode = summaCode; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getBudgetRegime() { + return budgetRegime; + } + + public void setBudgetRegime(String budgetRegime) { + this.budgetRegime = budgetRegime; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/AllowanceDetailModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/AllowanceDetailModel.java new file mode 100644 index 0000000..9b62e75 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/AllowanceDetailModel.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import lombok.Getter; +import lombok.Setter; + + +@Getter +@Setter +public class AllowanceDetailModel extends AbstractModel { + + private String requestDetId; + + private String bpId; + + private String bankAccount; + + private String requestHedTitle; + + private String quantity; + + private Float netAmountLcy; + + private String currencyCdHed; + + private String budgetLineHed; + + private String glAccountHed; + + private String emailNotif; + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/AllowanceHeaderModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/AllowanceHeaderModel.java new file mode 100644 index 0000000..e382887 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/AllowanceHeaderModel.java @@ -0,0 +1,22 @@ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.erights.backoffice.tools.p2phub.PayMethodEnum; +import lombok.Getter; +import lombok.Setter; + + +@Getter +@Setter +public class AllowanceHeaderModel extends AbstractModel { + + private String runId; + + private String batchId; + + private String requestId; + + public PayMethodEnum payMethodEnum; + + private String value; +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/AllowancePaymentModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/AllowancePaymentModel.java new file mode 100644 index 0000000..c4f6c8e --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/AllowancePaymentModel.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +import lombok.Getter; +import lombok.Setter; + +import javax.validation.Valid; +import java.util.ArrayList; +import java.util.List; + +@Getter +@Setter +public class AllowancePaymentModel extends AbstractModel { + + private Long id; + + private Long requestId; + + private Long perId; + + private Long orderId; + + private OrderResponseModel order; + + private AllowanceHeaderModel header; + + private List<@Valid AllowanceDetailModel> details = new ArrayList<>(); + + +} + diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/BusinessPartnerBankAccountModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/BusinessPartnerBankAccountModel.java new file mode 100644 index 0000000..1e8e81c --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/BusinessPartnerBankAccountModel.java @@ -0,0 +1,82 @@ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDate; + +@Getter +@Setter +public class BusinessPartnerBankAccountModel extends AbstractModel { + + private Long id; + + private String businessPartner; + + private String bankIdentification; + + private String bankCountryKey; + + private String bankName; + + private String bankNumber; + + private String swiftCode; + + private String bankControlKey; + + private String bankAccountHolderName; + + private String bankAccountName; + + private LocalDate validityStartDate; + + private LocalDate validityEndDate; + + private String iban; + + private LocalDate ibanValidityStartDate; + + private String bankAccount; + + private String bankAccountReferenceText; + + private Boolean collectionAuthInd; + + private String cityName; + + private String authorizationGroup; + + private String addressNumber; + + private String businessPartnerBankFullName; + + private String businessPartnerBankStreetName; + + private String businessPartnerBankHouseNb; + + private String businessPartnerBankPostalCode; + + private String businessPartnerBankCity; + + private String businessPartnerBankCountry; + + private Long perId; + + private String lef; + + private String baf; + + private String legalEntity; + + private String ibanCode; // entity column IBAN_CODE + + private String bankAccountCode; // entity column BANK_ACCOUNT_CODE + + private Long mainBankAccount; + + private String accountHolder; + + private String accountCurrency; +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/BusinessPartnerIdentificationModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/BusinessPartnerIdentificationModel.java new file mode 100644 index 0000000..792b0fe --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/BusinessPartnerIdentificationModel.java @@ -0,0 +1,33 @@ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDate; + +@Getter +@Setter +public class BusinessPartnerIdentificationModel extends AbstractModel { + + private String businessPartner; + + private String identificationType; + + private String identificationNumber; + + private String idnbrIssuingInstitute; + + private LocalDate identificationEntryDate; + + private String country; + + private String region; + + private LocalDate validityStartDate; + + private LocalDate validityEndDate; + + private String authorizationGroup; + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/BusinessPartnerModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/BusinessPartnerModel.java new file mode 100644 index 0000000..40459fd --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/BusinessPartnerModel.java @@ -0,0 +1,142 @@ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + + +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + + +@Getter +@Setter +public class BusinessPartnerModel extends AbstractModel { + + private String businessPartner; + + private String customer; + + private SupplierModel supplierModel; + + private String academicTitle; + + private String authorizationGroup; + + private String businessPartnerCategory; + + private String businessPartnerFullName; + + private String businessPartnerGrouping; + + private String businessPartnerName; + + private UUID businessPartnerUuid; + + private String correspondenceLanguage; + + private String createdByUser; + + private LocalDateTime creationDate; + + private String creationTime; + + private String firstName; + + private String formOfAddress; + + private String industry; + + private String internationalLocationNumber1; + + private String internationalLocationNumber2; + + private Boolean isFemale; + + private Boolean isMale; + + private String isNaturalPerson; + + private Boolean isSexUnknown; + + private String genderCodeName; + + private String language; + + private LocalDateTime lastChangeDate; + + private String lastChangeTime; + + private String lastChangedByUser; + + private String lastName; + + private String legalForm; + + private String organizationBpName1; + + private String organizationBpName2; + + private String organizationBpName3; + + private String organizationBpName4; + + private LocalDate organizationFoundationDate; + + private LocalDate organizationLiquidationDate; + + private String searchTerm1; + + private String searchTerm2; + + private String additionalLastName; + + private LocalDate birthDate; + + private String businessPartnerBirthplaceName; + + private Boolean businessPartnerIsBlocked; + + private String businessPartnerType; + + private String groupBusinessPartnerName1; + + private String groupBusinessPartnerName2; + + private String independentAddressId; + + private String internationalLocationNumber3; + + private String middleName; + + private String nameCountry; + + private String nameFormat; + + private String personFullName; + + private String personNumber; + + private Boolean isMarkedForArchiving; + + private String businessPartnerIdByExtSystem; + + private String tradingPartner; + + private String targetGroup; + + private List bankAccounts = new ArrayList<>(); + + private List identifications = new ArrayList<>(); + + private String existsInP2p; + + private String linkedToCostCentre; + + private Long perId; + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/OrderErrorResponseModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/OrderErrorResponseModel.java new file mode 100644 index 0000000..d851028 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/OrderErrorResponseModel.java @@ -0,0 +1,27 @@ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import lombok.Getter; +import lombok.Setter; + + +@Getter +@Setter +public class OrderErrorResponseModel extends AbstractModel { + + private Integer orderId; + + private String message; + + private Long allowanceRequestId; + + private Long requestId; + + private Long perId; + + private String errorCode; + + private String errorText; + + private String jsonSent; +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/OrderResponseModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/OrderResponseModel.java new file mode 100644 index 0000000..f6dd87e --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/OrderResponseModel.java @@ -0,0 +1,44 @@ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.AllowancePaymentJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.OrderStatusResponseJpaEntity; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.Column; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + + +@Getter +@Setter +public class OrderResponseModel extends AbstractAuditableModel { + + private Long id; + + private Integer orderId; + + private String message; + + private Long allowanceRequestId; + + private Long requestId; + + private Long perId; + + private String orderStatus; + + private String orderComment; + + private LocalDateTime lastModificationDate; + + private AllowancePaymentJpaEntity allowancePayment; + + private String paymentDirectiveReference; + + private String jsonSent; + + private List orderStatuses = new ArrayList<>(); +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/OrderStatusResponseModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/OrderStatusResponseModel.java new file mode 100644 index 0000000..9c70444 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/OrderStatusResponseModel.java @@ -0,0 +1,30 @@ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDate; +import java.time.LocalDateTime; + + +@Getter +@Setter +public class OrderStatusResponseModel extends AbstractModel { + + private Integer orderId; + + private Long allowanceRequestId; + + private Long requestId; + + private Long perId; + + private String orderStatus; + + private LocalDateTime lastModificationDate; + + private String orderComment; + + private String paymentDirectiveReference; +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pAnalyticalCodeModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pAnalyticalCodeModel.java new file mode 100644 index 0000000..b729a42 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pAnalyticalCodeModel.java @@ -0,0 +1,83 @@ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +import java.time.LocalDate; + +public class P2pAnalyticalCodeModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long id; + private String code; + private String description; + private String descriptionEn; + private String descriptionFr; + private Boolean pharmaceuticalProduct; + private LocalDate validFrom; + private LocalDate validTo; + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCode() { + return this.code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Boolean getPharmaceuticalProduct() { + return this.pharmaceuticalProduct; + } + + public void setPharmaceuticalProduct(Boolean pharmaceuticalProduct) { + this.pharmaceuticalProduct = pharmaceuticalProduct; + } + + public LocalDate getValidFrom() { + return this.validFrom; + } + + public void setValidFrom(LocalDate validFrom) { + this.validFrom = validFrom; + } + + public LocalDate getValidTo() { + return this.validTo; + } + + public void setValidTo(LocalDate validTo) { + this.validTo = validTo; + } + + public String getDescriptionEn() { + return descriptionEn; + } + + public void setDescriptionEn(String descriptionEn) { + this.descriptionEn = descriptionEn; + } + + public String getDescriptionFr() { + return descriptionFr; + } + + public void setDescriptionFr(String descriptionFr) { + this.descriptionFr = descriptionFr; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pHubRequestModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pHubRequestModel.java new file mode 100644 index 0000000..7f99f78 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pHubRequestModel.java @@ -0,0 +1,267 @@ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +import java.util.List; + +public class P2pHubRequestModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + // Claim ID + private Long externalId; + + private String requestReference; + + // Delegation name e.g. DELMYSK + private String costCentreCode; + + // Title of the request e.g. ' Panagiotis GIANNOPOULOS' + private String title; + + // Claim status + private String status; + + private String abacPoStatus; + + private String languageCode; + + // YYYY-mm-dd e.g. 2023-11-19 + private String receptionDate; + + private String localAgentName; + + // PerID of local agent + private String legalEntityAbacKey; + + // Bank account id + private String bankAccountAbacKey; + + private String paymentRequestAbacKey; + + private String paymentOrderAbacKey; + + private String paymentExecutionMethod; + + private String currencyCode; + + private Double totalAmount; + + private String referenceUrl; + + private String initiatingUserLogin; + + private String verifyingUserLogin; + + private String certifyingUserLogin; + + private String lastErrorMessage; + + private List details; + + public Long getExternalId() { + return externalId; + } + + public void setExternalId(Long externalId) { + this.externalId = externalId; + } + + public String getRequestReference() { + return requestReference; + } + + public void setRequestReference(String requestReference) { + this.requestReference = requestReference; + } + + public String getCostCentreCode() { + return costCentreCode; + } + + public void setCostCentreCode(String costCentreCode) { + this.costCentreCode = costCentreCode; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getAbacPoStatus() { + return abacPoStatus; + } + + public void setAbacPoStatus(String abacPoStatus) { + this.abacPoStatus = abacPoStatus; + } + + public String getLanguageCode() { + return languageCode; + } + + public void setLanguageCode(String languageCode) { + this.languageCode = languageCode; + } + + public String getReceptionDate() { + return receptionDate; + } + + public void setReceptionDate(String receptionDate) { + this.receptionDate = receptionDate; + } + + public String getLocalAgentName() { + return localAgentName; + } + + public void setLocalAgentName(String localAgentName) { + this.localAgentName = localAgentName; + } + + public String getLegalEntityAbacKey() { + return legalEntityAbacKey; + } + + public void setLegalEntityAbacKey(String legalEntityAbacKey) { + this.legalEntityAbacKey = legalEntityAbacKey; + } + + public String getBankAccountAbacKey() { + return bankAccountAbacKey; + } + + public void setBankAccountAbacKey(String bankAccountAbacKey) { + this.bankAccountAbacKey = bankAccountAbacKey; + } + + public String getPaymentRequestAbacKey() { + return paymentRequestAbacKey; + } + + public void setPaymentRequestAbacKey(String paymentRequestAbacKey) { + this.paymentRequestAbacKey = paymentRequestAbacKey; + } + + public String getPaymentOrderAbacKey() { + return paymentOrderAbacKey; + } + + public void setPaymentOrderAbacKey(String paymentOrderAbacKey) { + this.paymentOrderAbacKey = paymentOrderAbacKey; + } + + public String getPaymentExecutionMethod() { + return paymentExecutionMethod; + } + + public String getCurrencyCode() { + return currencyCode; + } + + public void setCurrencyCode(String currencyCode) { + this.currencyCode = currencyCode; + } + + public Double getTotalAmount() { + return totalAmount; + } + + public void setTotalAmount(Double totalAmount) { + this.totalAmount = totalAmount; + } + + public String getReferenceUrl() { + return referenceUrl; + } + + public void setReferenceUrl(String referenceUrl) { + this.referenceUrl = referenceUrl; + } + + public String getInitiatingUserLogin() { + return initiatingUserLogin; + } + + public void setInitiatingUserLogin(String initiatingUserLogin) { + this.initiatingUserLogin = initiatingUserLogin; + } + + public String getVerifyingUserLogin() { + return verifyingUserLogin; + } + + public void setVerifyingUserLogin(String verifyingUserLogin) { + this.verifyingUserLogin = verifyingUserLogin; + } + + public String getCertifyingUserLogin() { + return certifyingUserLogin; + } + + public void setCertifyingUserLogin(String certifyingUserLogin) { + this.certifyingUserLogin = certifyingUserLogin; + } + + public String getLastErrorMessage() { + return lastErrorMessage; + } + + public void setLastErrorMessage(String lastErrorMessage) { + this.lastErrorMessage = lastErrorMessage; + } + + public List getDetails() { + return details; + } + + public void setDetails(List details) { + this.details = details; + } + + public void setPaymentExecutionMethod(String paymentExecutionMethod) { + this.paymentExecutionMethod = paymentExecutionMethod; + } + + @Override + public String toString() { + return "P2pHubRequestModel{" + + "externalId=" + externalId + + ", requestReference='" + requestReference + '\'' + + ", costCentreCode='" + costCentreCode + '\'' + + ", title='" + title + '\'' + + ", status='" + status + '\'' + + ", abacPoStatus='" + abacPoStatus + '\'' + + ", languageCode='" + languageCode + '\'' + + ", receptionDate='" + receptionDate + '\'' + + ", localAgentName='" + localAgentName + '\'' + + ", legalEntityAbacKey='" + legalEntityAbacKey + '\'' + + ", bankAccountAbacKey='" + bankAccountAbacKey + '\'' + + ", paymentRequestAbacKey='" + paymentRequestAbacKey + '\'' + + ", paymentOrderAbacKey='" + paymentOrderAbacKey + '\'' + + ", paymentExecutionMethod='" + paymentExecutionMethod + '\'' + + ", currencyCode='" + currencyCode + '\'' + + ", totalAmount=" + totalAmount + + ", referenceUrl='" + referenceUrl + '\'' + + ", initiatingUserLogin='" + initiatingUserLogin + '\'' + + ", verifyingUserLogin='" + verifyingUserLogin + '\'' + + ", certifyingUserLogin='" + certifyingUserLogin + '\'' + + ", lastErrorMessage='" + lastErrorMessage + '\'' + + ", details=" + details + + '}'; + } +} + diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pHubRequestPaymentDetailModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pHubRequestPaymentDetailModel.java new file mode 100644 index 0000000..076b7df --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pHubRequestPaymentDetailModel.java @@ -0,0 +1,59 @@ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +import java.util.List; + +public class P2pHubRequestPaymentDetailModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + //TODO: not needed + private Long id; + private Long detailNumber; + private Double detailAmount; + + private List postingCriteria; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getDetailNumber() { + return detailNumber; + } + + public void setDetailNumber(Long detailNumber) { + this.detailNumber = detailNumber; + } + + public Double getDetailAmount() { + return detailAmount; + } + + public void setDetailAmount(Double detailAmount) { + this.detailAmount = detailAmount; + } + + public List getPostingCriteria() { + return postingCriteria; + } + + public void setPostingCriteria(List postingCriteria) { + this.postingCriteria = postingCriteria; + } + + @Override + public String toString() { + return "P2pHubRequestPaymentDetailModel{" + + "id=" + id + + ", detailNumber=" + detailNumber + + ", detailAmount=" + detailAmount + + ", postingCriteria=" + postingCriteria + + '}'; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pHubRequestPostingCriterionModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pHubRequestPostingCriterionModel.java new file mode 100644 index 0000000..6245b40 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pHubRequestPostingCriterionModel.java @@ -0,0 +1,46 @@ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +public class P2pHubRequestPostingCriterionModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long id; + // e.g. 1AE-L, 1AE-D etc. + private String codeType; + private String codeValue; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCodeType() { + return codeType; + } + + public void setCodeType(String codeType) { + this.codeType = codeType; + } + + public String getCodeValue() { + return codeValue; + } + + public void setCodeValue(String codeValue) { + this.codeValue = codeValue; + } + + @Override + public String toString() { + return "AbacHubRequestPostingCriterionModel{" + + "id=" + id + + ", codeType='" + codeType + '\'' + + ", codeValue='" + codeValue + '\'' + + '}'; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pHubResponseModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pHubResponseModel.java new file mode 100644 index 0000000..631fd86 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pHubResponseModel.java @@ -0,0 +1,56 @@ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +public class P2pHubResponseModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long id; + private Boolean isUpdated; + private String errorMessage; + + private String p2pHubRequestModel; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Boolean getUpdated() { + return isUpdated; + } + + public void setUpdated(Boolean updated) { + isUpdated = updated; + } + + public String getErrorMessage() { + return errorMessage; + } + + public void setErrorMessage(String errorMessage) { + this.errorMessage = errorMessage; + } + + public String getP2pHubRequestModel() { + return p2pHubRequestModel; + } + + public void setP2pHubRequestModel(String p2pHubRequestModel) { + this.p2pHubRequestModel = p2pHubRequestModel; + } + + @Override + public String toString() { + return "P2pHubResponseModel{" + + "id=" + id + + ", isUpdated=" + isUpdated + + ", errorMessage='" + errorMessage + '\'' + + '}'; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pStatuses.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pStatuses.java new file mode 100644 index 0000000..f2f9004 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/P2pStatuses.java @@ -0,0 +1,38 @@ +/** + * + */ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + +public class P2pStatuses { + + public static String FAILED = "FAILED"; + public static String PROCESSING = "PROCESSING"; + public static String MOD0 = "MOD0"; + public static String PEND3 = "PEND3"; + public static String PEND_3 = "PEND-3"; + public static String PEND10 = "PEND10"; + public static String PEND20 = "PEND20"; + public static String PEND25 = "PEND25"; + public static String PEND30 = "PEND30"; + public static String CLO0 = "CLO0"; + public static String CLO100 = "CLO100"; + + // Below are abac hub statues + public static String DEMOTED = "DEMOTED"; + public static String PAYMENT_CANCELLED = "PAYMENT_CANCELLED"; + public static String CANCELLED = "CANCELLED"; + + + + //P2P-HUB statuses + public static String ERR = "ERR"; + public static String INIT = "INIT"; + public static String VERIF = "VERIF"; + public static String EXEC = "EXEC"; + public static String SUCCESS = "SUCCESS"; + public static String REJ = "REJ"; + public static String SENT_TO_P2P = "SENT_TO_P2P"; + + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/RequestExpenseAdminDetailModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/RequestExpenseAdminDetailModel.java new file mode 100644 index 0000000..8aa167a --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/RequestExpenseAdminDetailModel.java @@ -0,0 +1,85 @@ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import org.javamoney.moneta.Money; + +import java.math.BigDecimal; + +/** + * Claim Expense Admin Detail Model. + * + * @author ityagiks + * + */ +public class RequestExpenseAdminDetailModel extends AbstractAuditableModel { + + private static final long serialVersionUID = 1L; + + private Long id; + + private P2pAnalyticalCodeModel abacAnalyticalCode; + + private Money ceilingAmount; + + private BigDecimal reimbursementPercentage; + + private Money reimbursementAmount; + + private String remarks; + + private RequestExpenseModel claimExpense; + + + + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + + public Money getCeilingAmount() { + return this.ceilingAmount; + } + + public void setCeilingAmount(Money ceilingAmount) { + this.ceilingAmount = ceilingAmount; + } + + public BigDecimal getReimbursementPercentage() { + return this.reimbursementPercentage; + } + + public void setReimbursementPercentage(BigDecimal reimbursementPercentage) { + this.reimbursementPercentage = reimbursementPercentage; + } + + public Money getReimbursementAmount() { + return this.reimbursementAmount; + } + + public void setReimbursementAmount(Money reimbursementAmount) { + this.reimbursementAmount = reimbursementAmount; + } + + public String getRemarks() { + return this.remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public RequestExpenseModel getClaimExpense() { + return this.claimExpense; + } + + public void setClaimExpense(RequestExpenseModel claimExpense) { + this.claimExpense = claimExpense; + } + + +} \ No newline at end of file diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/RequestExpenseModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/RequestExpenseModel.java new file mode 100644 index 0000000..6b83ef1 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/RequestExpenseModel.java @@ -0,0 +1,171 @@ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import org.javamoney.moneta.Money; + +import java.time.LocalDate; + +/** + * Expense Model. + * + * @author ityagiks + * + */ +public class RequestExpenseModel extends AbstractAuditableModel { + + private static final long serialVersionUID = 1L; + + private Long id; + + private Long claimId; + + private String medicalServiceProvider; + + private LocalDate serviceDate; + + private Boolean csislaCoverage; + + private Boolean fromPar; + + private Money expenseAmount; + + private Money otherInsuranceAmount; + + private Money maxReimbursementAmount; + + private String expenseDetails; + + private String associatedPar; + + private Long expenseNumber; + + private String viewParUrl; + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((id == null) ? 0 : id.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + + return true; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getClaimId() { + return this.claimId; + } + + public void setClaimId(Long claimId) { + this.claimId = claimId; + } + + + + public String getMedicalServiceProvider() { + return this.medicalServiceProvider; + } + + public void setMedicalServiceProvider(String medicalServiceProvider) { + this.medicalServiceProvider = medicalServiceProvider; + } + + public LocalDate getServiceDate() { + return this.serviceDate; + } + + public void setServiceDate(LocalDate serviceDate) { + this.serviceDate = serviceDate; + } + + public Boolean getCsislaCoverage() { + return this.csislaCoverage; + } + + public void setCsislaCoverage(Boolean csislaCoverage) { + this.csislaCoverage = csislaCoverage; + } + + public Boolean getFromPar() { + return fromPar; + } + + public void setFromPar(Boolean fromPar) { + this.fromPar = fromPar; + } + + public Money getExpenseAmount() { + return this.expenseAmount; + } + + public void setExpenseAmount(Money expenseAmount) { + this.expenseAmount = expenseAmount; + } + + public Money getOtherInsuranceAmount() { + return this.otherInsuranceAmount; + } + + public void setOtherInsuranceAmount(Money otherInsuranceAmount) { + this.otherInsuranceAmount = otherInsuranceAmount; + } + + public Money getMaxReimbursementAmount() { + return this.maxReimbursementAmount; + } + + public void setMaxReimbursementAmount(Money maxReimbursementAmount) { + this.maxReimbursementAmount = maxReimbursementAmount; + } + + public String getExpenseDetails() { + return this.expenseDetails; + } + + public void setExpenseDetails(String expenseDetails) { + this.expenseDetails = expenseDetails; + } + + public String getAssociatedPar() { + return this.associatedPar; + } + + public void setAssociatedPar(String associatedPar) { + this.associatedPar = associatedPar; + } + + + + public Long getExpenseNumber() { + return this.expenseNumber; + } + + public void setExpenseNumber(Long expenseNumber) { + this.expenseNumber = expenseNumber; + } + + public String getViewParUrl() { + return viewParUrl; + } + + public void setViewParUrl(String viewParUrl) { + this.viewParUrl = viewParUrl; + } +} \ No newline at end of file diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/SupplierModel.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/SupplierModel.java new file mode 100644 index 0000000..3ee4091 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/model/p2phub/SupplierModel.java @@ -0,0 +1,31 @@ +package eu.europa.eeas.erights.backoffice.service.model.p2phub; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.Pattern; +import javax.validation.constraints.Size; +import java.util.ArrayList; +import java.util.List; + +@Setter +@Getter +public class SupplierModel extends AbstractModel { + + + private String supplier; + + + private String accountGroup; + + + private Boolean isNaturalPerson; + + + private String groupKey; + + + private List<@Pattern(regexp = "^[PSACDG]$")@Size(max = 1)String> paymentMethods = new ArrayList<>(); + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/ClearingEmailNotificationSenderProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/ClearingEmailNotificationSenderProvider.java new file mode 100644 index 0000000..7992140 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/ClearingEmailNotificationSenderProvider.java @@ -0,0 +1,90 @@ +package eu.europa.eeas.erights.backoffice.service.provider; + +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.AdvanceRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.ClearingRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.entitlement.request.AdvanceRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.ClearingRequestModel; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.ClearingRequestState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; +import java.util.List; + +@Service +public class ClearingEmailNotificationSenderProvider extends AbstractServiceProvider { + + public static final long DAYS_SIX_MONTHS = 30L * 6L; + + public static final long DAYS_NINE_MONTHS = 30L * 9L; + + public static final long DAYS_ELEVEN_MONTHS = 30L * 11L; + + private final AdvanceRequestJpaServiceProvider advanceRequestJpaServiceProvider; + + private final ClearingRequestJpaServiceProvider clearingRequestJpaServiceProvider; + + private final MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + private final EmailEdmsServiceProvider emailEdmsServiceProvider; + + @Autowired + public ClearingEmailNotificationSenderProvider(AdvanceRequestJpaServiceProvider advanceRequestJpaServiceProvider, + ClearingRequestJpaServiceProvider clearingRequestJpaServiceProvider, + MovementFileJpaServiceProvider movementFileJpaServiceProvider, + EmailEdmsServiceProvider emailEdmsServiceProvider) { + this.advanceRequestJpaServiceProvider = advanceRequestJpaServiceProvider; + this.clearingRequestJpaServiceProvider = clearingRequestJpaServiceProvider; + this.movementFileJpaServiceProvider = movementFileJpaServiceProvider; + this.emailEdmsServiceProvider = emailEdmsServiceProvider; + } + + public void execute() { + List modelList = advanceRequestJpaServiceProvider.getAllByState(AdvanceRequestState.PAID); + modelList.forEach(this::sendEmail); + } + + private void sendEmail(AdvanceRequestModel request) { + if (canReminder(request)) + emailEdmsServiceProvider.notifyClearingRequest(request, movementFileJpaServiceProvider.read(request.getDeclaration().getMovementFileId())); + } + + private boolean canReminder(AdvanceRequestModel request) { + ClearingRequestModel clearingRequestModel = clearingRequestJpaServiceProvider.getClearingRequestByAdvanceId(request.getId()); + boolean canReminder = canReminder(request, clearingRequestModel); + if (canReminder) { + getLogger().info("Sending clearing reminder for advance request " + request.getId()); + } + return canReminder; + } + + private boolean canReminder(AdvanceRequestModel request, ClearingRequestModel clearingRequestModel) { + return isTodayAReminderDay(request) && (isAdvanceRequestInReminderStatus(request, clearingRequestModel) || isClearingRequestInReminderStatus(clearingRequestModel)); + } + + private boolean isTodayAReminderDay(AdvanceRequestModel request) { + if (request.getPaymentDate() == null) { + // We cannot find out amount of time since payment + return false; + } + long daysFromPaymentDate = ChronoUnit.DAYS.between(request.getPaymentDate(), LocalDate.now()); + return daysFromPaymentDate == DAYS_SIX_MONTHS || daysFromPaymentDate == DAYS_NINE_MONTHS || daysFromPaymentDate == DAYS_ELEVEN_MONTHS; + } + + private boolean isClearingRequestInReminderStatus(ClearingRequestModel clearingRequestModel) { + return isClearingRequestExist(clearingRequestModel) && ClearingRequestState.DRAFT.equals(clearingRequestModel.getState()); + } + + private boolean isAdvanceRequestInReminderStatus(AdvanceRequestModel request, ClearingRequestModel clearingRequestModel) { + return AdvanceRequestState.PAID.equals(request.getState()) && !isClearingRequestExist(clearingRequestModel); + } + + private boolean isClearingRequestExist(ClearingRequestModel clearingRequestModel) { + return clearingRequestModel != null; + } +} \ No newline at end of file diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/MenuServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/MenuServiceProvider.java new file mode 100644 index 0000000..bb7dc8b --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/MenuServiceProvider.java @@ -0,0 +1,172 @@ +package eu.europa.eeas.erights.backoffice.service.provider; + +import eu.europa.eeas.ananke.tools.web.service.MenuService; +import eu.europa.eeas.ananke.tools.web.service.model.MenuItemModel; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.security.PostingAllowanceSecurityChecker; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +import java.util.LinkedList; +import java.util.List; + +/** + * Created by iliessu on 20/11/2019; e-rights. + * + *

+ * TODO : comment class ! + *

+ * + * @author Silviu Ilie. + * + */ +@Service +public class MenuServiceProvider implements MenuService { + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + private MovementFileSecurityChecker securityChecker; + + @Autowired + @Qualifier(ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER) + private PostingAllowanceSecurityChecker postingAllowanceSecurityChecker; + + @Override + public List getMenuItems() { + List result = new LinkedList<>(); + + MenuItemModel item005 = new MenuItemModel(); + item005.setId(5L); + item005.setLabel("Dashboard"); + item005.setLink("/welcome.do"); + item005.setIcon("home"); + item005.setOrder(5L); + + MenuItemModel item010 = new MenuItemModel(); + item010.setId(10L); + item010.setLabel("Movement Files"); + item010.setLink("/list/movement-files.do"); + item010.setIcon("swap_horizontal_circle"); + item010.setOrder(10L); + + MenuItemModel item015 = new MenuItemModel(); + item015.setId(15L); + item015.setLabel("Rotation Entitlements"); + item015.setLink("/list/allowances.do"); + item015.setIcon("article"); + item015.setOrder(15L); + + MenuItemModel item020 = new MenuItemModel(); + item020.setId(20L); + item020.setLabel("Posting Entitlements"); + item020.setLink("/list/posting-allowances.do"); + item020.setIcon("event"); + item020.setOrder(20L); + + MenuItemModel item025 = new MenuItemModel(); + item025.setId(25L); + item025.setLabel("Administration"); + item025.setIcon("settings"); + item025.setOrder(25L); + + MenuItemModel item030 = new MenuItemModel(); + item030.setId(30L); + item030.setLabel("Audit"); + item030.setIcon("fa-folder"); + item030.setOrder(30L); + + MenuItemModel item035 = new MenuItemModel(); + item035.setId(35L); + item035.setLabel("Movement Files"); + item035.setLink("/audit/movement-files.do"); + item035.setIcon("person-arrow-right"); + item035.setOrder(35L); + + MenuItemModel item040 = new MenuItemModel(); + item040.setId(40L); + item040.setLabel("Guidelines"); + item040.setLink("/movement-docs/edit.do"); + item040.setIcon("help"); + item040.setOrder(40L); + + MenuItemModel item045 = new MenuItemModel(); + item045.setId(45L); + item045.setLabel("Empty Rates Entitlements"); + item045.setLink("/reports/empty-rates-entitlements.do"); + item045.setIcon("fa-info"); + item045.setOrder(45L); + + MenuItemModel item050 = new MenuItemModel(); + item050.setId(50L); + item050.setLabel("Entitlement Max Default"); + item050.setLink("/reports/entitlement-max-default.do"); + item050.setIcon("fa-info"); + item050.setOrder(50L); + + MenuItemModel item055 = new MenuItemModel(); + item055.setId(55L); + item055.setLabel("Calculation of Route Price"); + item055.setLink("/reports/iata-routes-calculation.do"); + item055.setIcon("fa-info"); + item055.setOrder(55L); + + MenuItemModel item085 = new MenuItemModel(); + item085.setId(85L); + item085.setLabel("IT Admin"); + item085.setLink("/reports/it-admin.do"); + item085.setIcon("fa-info"); + item085.setOrder(85L); + + if (Boolean.TRUE.equals(securityChecker.canViewAudit())) { + item025.addItem(item030); + item030.addItem(item035); + + } + if (Boolean.TRUE.equals(securityChecker.canManageGuidelines())) { + + item025.addItem(item040); + } + if (Boolean.TRUE.equals(securityChecker.canViewReports())) { + item025.addItem(item045); + item025.addItem(item050); + } + + if (Boolean.TRUE.equals(securityChecker.canCalculateRoutes())) { + item025.addItem(item055); + + + } + if (Boolean.TRUE.equals(securityChecker.canAccessAdminItSupport())) { + item025.addItem(item085); + } + + //dashboard + if (securityChecker.canViewHomePage()) { + result.add(item005); + } + //movement file list + if (securityChecker.canList()) { + result.add(item010); + } + if (Boolean.TRUE.equals(securityChecker.canConsultEntitlements())) { + result.add(item015); + } + + if (Boolean.TRUE.equals(postingAllowanceSecurityChecker.canConsult()) + || postingAllowanceSecurityChecker.hasOrganisationIndependentListAuthority() + || postingAllowanceSecurityChecker.hasOrganisationsWithListAuthority()) { + result.add(item020); + } + + //Administration + if (securityChecker.canAdminManage() || securityChecker.canViewAudit() || securityChecker.canManageGuidelines() + || securityChecker.canAccessBackOffice()) { + result.add(item025); + } + + return result; + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/RatesMissingUpdaterServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/RatesMissingUpdaterServiceProvider.java new file mode 100644 index 0000000..b055914 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/RatesMissingUpdaterServiceProvider.java @@ -0,0 +1,238 @@ +package eu.europa.eeas.erights.backoffice.service.provider; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxDefaultJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.RateMissingJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementMaxDefaultJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementMaxJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.RateMissingJpaRepository; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementMaxDefaultJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.AdvanceRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.TotalRemRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.entitlement.request.AdvanceRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TotalRemRequestModel; +import eu.europa.eeas.erights.common.service.provider.email.NotificationSenderProvider; +import eu.europa.eeas.erights.common.service.provider.gosselin.RatesWSService; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode; +import org.javamoney.moneta.Money; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.time.LocalDateTime; +import java.util.List; + +@Service +public class RatesMissingUpdaterServiceProvider extends AbstractServiceProvider { + + public static final Logger logger = LoggerFactory.getLogger(RatesMissingUpdaterServiceProvider.class); + public static final String HR_SOURCE_DATA = "HR"; + public static final int ENTRY_INTO_STORAGE_CAT_ID = 3; + + private final RateMissingJpaRepository rateMissingJpaRepository; + + private final RatesWSService ratesWSService; + + private final EntitlementMaxDefaultJpaRepository entitlementMaxDefaultJpaRepository; + + private final AbstractUserHandler userHandler; + + private final EntitlementMaxJpaRepository entitlementMaxJpaRepository; + + private final DataServiceProviderRegistry dataServiceProviderRegistry; + + private final NotificationSenderProvider notificationSenderProvider; + + private final MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + @Autowired + public RatesMissingUpdaterServiceProvider(RateMissingJpaRepository rateMissingJpaRepository, RatesWSService ratesWSService, EntitlementMaxDefaultJpaRepository entitlementMaxDefaultJpaRepository, AbstractUserHandler userHandler, EntitlementMaxJpaRepository entitlementMaxJpaRepository, DataServiceProviderRegistry dataServiceProviderRegistry, NotificationSenderProvider notificationSenderProvider, MovementFileJpaServiceProvider movementFileJpaServiceProvider) { + this.rateMissingJpaRepository = rateMissingJpaRepository; + this.ratesWSService = ratesWSService; + this.entitlementMaxDefaultJpaRepository = entitlementMaxDefaultJpaRepository; + this.userHandler = userHandler; + this.entitlementMaxJpaRepository = entitlementMaxJpaRepository; + this.dataServiceProviderRegistry = dataServiceProviderRegistry; + this.notificationSenderProvider = notificationSenderProvider; + this.movementFileJpaServiceProvider = movementFileJpaServiceProvider; + } + + public void doExecute() { + userHandler.setSystemUserAsUser(); + List missingRates = rateMissingJpaRepository.findAllByReceived(false); + logger.info("Missing Rates To Update: {}", missingRates.size()); + missingRates.stream().filter(entity -> !isTud(entity)).forEach(this::updateEntitlementMaxDefault); + } + + private boolean isTud(RateMissingJpaEntity entity) { + return EntitlementMaxCatCode.TUD_STAFF_MEMBER.name().equals(entity.getRateType()) || + EntitlementMaxCatCode.TUD_DEPENDENT.name().equals(entity.getRateType()); + } + + private void updateEntitlementMaxDefault(RateMissingJpaEntity entity) { + if (isEntitlementMaxDefaultAlreadyExistHR(entity)) { + try { + logger.info("EntitlementMaxDefaultAlreadyExistHR - Deleting Rate year {}, cityFrom {}, cityTo {}, entitlementMaxCatCode {}", entity.getYear(), entity.getCityCodeFrom(), entity.getCityCodeTo(), entity.getRateType()); + rateMissingJpaRepository.delete(entity); + } catch (Exception e) { + logger.info(e.getMessage()); + } + } else { + try { + Money rate; + if (entity.getKg() != null) { + rate = ratesWSService.getRate(Integer.valueOf(entity.getYear()), + entity.getCityCodeFrom(), + entity.getCityCodeTo(), + entity.getRateType(), + entity.getKg(), + movementFileJpaServiceProvider.getClosestDateForGosselin(Integer.valueOf(entity.getYear()), + entity.getCityCodeFrom(), + entity.getCityCodeTo())); + } else { + rate = ratesWSService.getRate(Integer.valueOf(entity.getYear()), + entity.getCityCodeFrom(), + entity.getCityCodeTo(), + entity.getRateType(), + movementFileJpaServiceProvider.getClosestDateForGosselin(Integer.valueOf(entity.getYear()), + entity.getCityCodeFrom(), + entity.getCityCodeTo())); + } + entity.setReceived(true); + entity.setReceivedDate(LocalDateTime.now()); + rateMissingJpaRepository.save(entity); + if (entitlementMaxDefaultDoesNotExist(entity)) { + entitlementMaxDefaultJpaRepository.save(buildEntitlementMaxDefaultModel(entity, rate)); + if (entity.getKg() != null) { + updateEntitlementMax(entity.getCityCodeFrom(), entity.getCityCodeTo(), entity.getStartDate().getYear(), rate, entity.getEntitlementMaxCatId(), entity.getKg()); + } else { + updateEntitlementMax(entity.getCityCodeFrom(), entity.getCityCodeTo(), entity.getStartDate().getYear(), rate, entity.getEntitlementMaxCatId()); + } + + } + } catch (Exception e) { + logger.info("Exception: " + e.getMessage()); + } + } + } + + private boolean entitlementMaxDefaultDoesNotExist(RateMissingJpaEntity entity) { + List entitlementMaxList; + if (entity.getKg() != null) { + entitlementMaxList = entitlementMaxDefaultJpaRepository + .findByCityCodeFromAndCityCodeToAndStartDateAndEntitlementMaxCatIdAndLatestAndKg(entity.getCityCodeFrom(), + entity.getCityCodeTo(), entity.getStartDate(), entity.getEntitlementMaxCatId(), Boolean.TRUE, new BigDecimal(entity.getKg())); + } else { + entitlementMaxList = entitlementMaxDefaultJpaRepository + .findByCityCodeFromAndCityCodeToAndStartDateAndEntitlementMaxCatIdAndLatest(entity.getCityCodeFrom(), + entity.getCityCodeTo(), entity.getStartDate(), entity.getEntitlementMaxCatId(), Boolean.TRUE); + } + return entitlementMaxList.isEmpty(); + } + + private boolean isEntitlementMaxDefaultAlreadyExistHR(RateMissingJpaEntity entity) { + if (entity.getKg() != null) { + return entitlementMaxDefaultJpaRepository.countEntitlementMaxDefaultSourceData(entity.getCityCodeFrom(), + entity.getCityCodeTo(), + entity.getStartDate(), + entity.getEntitlementMaxCatId(), + Boolean.TRUE, + HR_SOURCE_DATA, + new BigDecimal(entity.getKg())) > 0; + } + return entitlementMaxDefaultJpaRepository.countEntitlementMaxDefaultSourceData(entity.getCityCodeFrom(), + entity.getCityCodeTo(), + entity.getStartDate(), + entity.getEntitlementMaxCatId(), + Boolean.TRUE, + HR_SOURCE_DATA) > 0; + } + + private EntitlementMaxDefaultJpaEntity buildEntitlementMaxDefaultModel(RateMissingJpaEntity entity, Money rate) { + EntitlementMaxDefaultJpaEntity entitlementMaxDefault = new EntitlementMaxDefaultJpaEntity(); + entitlementMaxDefault.setAmount(rate); + entitlementMaxDefault.setCityCodeFrom(entity.getCityCodeFrom()); + entitlementMaxDefault.setCountryCodeFrom(entity.getCountryCodeFrom()); + entitlementMaxDefault.setCityCodeTo(entity.getCityCodeTo()); + entitlementMaxDefault.setCountryCodeTo(entity.getCountryCodeTo()); + entitlementMaxDefault.setEntitlementMaxCatId(entity.getEntitlementMaxCatId()); + entitlementMaxDefault.setLatest(Boolean.TRUE); + entitlementMaxDefault.setStartDate(entity.getStartDate()); + entitlementMaxDefault.setSourceData(EntitlementMaxDefaultJpaServiceProvider.GOSSELIN_SOURCE_DATA); + if(entity.getKg() != null) { + entitlementMaxDefault.setKg(new BigDecimal(entity.getKg())); + } + return entitlementMaxDefault; + } + + private void updateEntitlementMax(String cityFromCode, String cityToCode, Integer year, Money rate, Long entitlementMaxCatId) { + if (entitlementMaxCatId == ENTRY_INTO_STORAGE_CAT_ID) { + entitlementMaxJpaRepository + .getEntitlementMaxStorageJpaEntitiesToUpdate(cityFromCode, cityToCode, year, entitlementMaxCatId) + .stream() + .map(entitlementMaxJpaRepository::findById) + .peek(entitlementMaxJpaEntity -> entitlementMaxJpaEntity.setMaxValue(rate)) + .forEach(this::updateEntitlementMax); + } else { + entitlementMaxJpaRepository + .getEntitlementMaxJpaEntitiesToUpdate(cityFromCode, cityToCode, year, entitlementMaxCatId) + .stream() + .map(entitlementMaxJpaRepository::findById) + .peek(entitlementMaxJpaEntity -> entitlementMaxJpaEntity.setMaxValue(rate)) + .forEach(this::updateEntitlementMax); + } + } + + private void updateEntitlementMax(String cityFromCode, String cityToCode, Integer year, Money rate, Long entitlementMaxCatId, BigInteger kg) { + entitlementMaxJpaRepository + .getEntitlementMaxJpaEntitiesToUpdate(cityFromCode, cityToCode, year, entitlementMaxCatId, kg) + .stream() + .map(entitlementMaxJpaRepository::findById) + .peek(entitlementMaxJpaEntity -> entitlementMaxJpaEntity.setMaxValue(rate)) + .forEach(this::updateEntitlementMaxWithKg); + } + + private void updateEntitlementMaxWithKg(EntitlementMaxJpaEntity entitlementMaxJpaEntity) { + + entitlementMaxJpaRepository.save(entitlementMaxJpaEntity); + notificationSenderProvider.sendNotification(entitlementMaxJpaEntity.getEntitlementType().getMovementFile().getId()); + } + + private void updateEntitlementMax(EntitlementMaxJpaEntity entitlementMaxJpaEntity) { + entitlementMaxJpaRepository.save(entitlementMaxJpaEntity); + if (entitlementMaxJpaEntity.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.STORAGE) { + entitlementMaxJpaEntity.getEntitlementType().getRequests().forEach(requestJpaEntity -> updateRequest(requestJpaEntity, entitlementMaxJpaEntity)); + } + notificationSenderProvider.sendNotification(entitlementMaxJpaEntity.getEntitlementType().getMovementFile().getId()); + } + + private void updateRequest(RequestJpaEntity request, EntitlementMaxJpaEntity entitlementMaxJpaEntity) { + if ("TotalRemRequest".equals(request.getRequestType())) { + TotalRemRequestJpaServiceProvider service = (TotalRemRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TotalRemRequestModel.class); + TotalRemRequestModel requestModel = service.getRequest(request.getId()); + if (service.canUpdateRequestEISCeiling(requestModel)) { + requestModel.setStorageRate(entitlementMaxJpaEntity.getMaxValue()); + service.update(requestModel); + } + } else if ("AdvanceRequest".equals(request.getRequestType())) { + AdvanceRequestJpaServiceProvider service = (AdvanceRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + AdvanceRequestModel.class); + AdvanceRequestModel requestModel = service.getRequest(request.getId()); + if (service.canUpdateRequestEISCeiling(requestModel)) { + requestModel.setStorageRate(entitlementMaxJpaEntity.getMaxValue()); + service.update(requestModel); + } + } + } + +} + diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/SessionDataCollectorServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/SessionDataCollectorServiceProvider.java new file mode 100644 index 0000000..bde08e3 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/SessionDataCollectorServiceProvider.java @@ -0,0 +1,42 @@ +package eu.europa.eeas.erights.backoffice.service.provider; + +import eu.europa.eeas.ananke.core.api.transferobject.AbstractTransferObject; +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.erights.backoffice.tools.MovementFileFieldNames; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class SessionDataCollectorServiceProvider extends AbstractServiceProvider { + + @Autowired + private AbstractUserHandler userHandler; + + public MovementFileModel getMovementFileDataFromSession() { + MovementFileModel movementFileModel = (MovementFileModel) userHandler.getUser().getSessionData(MovementFileFieldNames.MOVEMENT_FILE); + if (movementFileModel == null) { + // save in session + movementFileModel = new MovementFileModel(); + + movementFileModel.setState(MovementFileState.START); + + userHandler.putSessionData(MovementFileFieldNames.MOVEMENT_FILE, movementFileModel); + } + return movementFileModel; + } + + public void clearDataFromSession() { + userHandler.removeSessionData(MovementFileFieldNames.MOVEMENT_FILE); + } + + public MovementFileModel saveDataInSession(MovementFileModel movementFileModel) { + + userHandler.putSessionData(MovementFileFieldNames.MOVEMENT_FILE, movementFileModel); + + return movementFileModel; + } + +} \ No newline at end of file diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/TudFareUpdaterProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/TudFareUpdaterProvider.java new file mode 100644 index 0000000..e28c339 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/TudFareUpdaterProvider.java @@ -0,0 +1,204 @@ +package eu.europa.eeas.erights.backoffice.service.provider; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxDefaultJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.tud.RatesTUDJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.CityJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementMaxDefaultJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementMaxJpaRepository; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementMaxDefaultJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementTypeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.provider.email.NotificationSenderProvider; +import eu.europa.eeas.erights.common.service.provider.tud.TUDRatesWSServiceProvider; +import eu.europa.eeas.erights.common.service.provider.tud.skyscanner.SkyScannerHelper; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; +import org.javamoney.moneta.Money; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Comparator; +import java.util.List; + +@Service +public class TudFareUpdaterProvider extends AbstractServiceProvider { + + public static final int EXTRA_MONEY = 200; + public static final String ENTIT_MAX_CAT_CODE_ALL = "ALL"; + public static final long ENTITLEMENT_MAX_CAT_ID_STAFF = 6L; + public static final long ENTITLEMENT_MAX_CAT_ID_DEPENDENT = 10L; + + private final TUDRatesWSServiceProvider tudRatesWSService; + + private final EntitlementMaxJpaRepository entitlementMaxJpaRepository; + + private final AbstractUserHandler userHandler; + + private final EntitlementMaxDefaultJpaRepository entitlementMaxDefaultJpaRepository; + + private final CityJpaRepository cityJpaRepository; + + private final EntitlementTypeJpaServiceProvider entitlementTypeJpaServiceProvider; + + private final NotificationSenderProvider notificationSenderProvider; + + @Autowired + public TudFareUpdaterProvider(TUDRatesWSServiceProvider tudRatesWSService, EntitlementMaxJpaRepository entitlementMaxJpaRepository, AbstractUserHandler userHandler, EntitlementMaxDefaultJpaRepository entitlementMaxDefaultJpaRepository, CityJpaRepository cityJpaRepository, EntitlementTypeJpaServiceProvider entitlementTypeJpaServiceProvider, NotificationSenderProvider notificationSenderProvider) { + this.tudRatesWSService = tudRatesWSService; + this.entitlementMaxJpaRepository = entitlementMaxJpaRepository; + this.userHandler = userHandler; + this.entitlementMaxDefaultJpaRepository = entitlementMaxDefaultJpaRepository; + this.cityJpaRepository = cityJpaRepository; + this.entitlementTypeJpaServiceProvider = entitlementTypeJpaServiceProvider; + this.notificationSenderProvider = notificationSenderProvider; + } + + public void execute() { + userHandler.setSystemUserAsUser(); + tudRatesWSService.updateIncompleteItineraryRequests(); + List completeRequests = tudRatesWSService.findCompleteRequests(); + completeRequests.stream().sorted(Comparator.comparing(RatesTUDJpaEntity::getUsedOutboundDate).reversed()).forEach(completeRate -> { + try { + Money rate = Money.of(BigDecimal.valueOf(completeRate.getSelectedItineraryPrice()).add(BigDecimal.valueOf(EXTRA_MONEY)), completeRate.getCurrency()); + getLogger().info("Complete Request TUD Rate Origin = {}, Destination = {}, Date = {}, Price = {}, Currency = {}", + completeRate.getOriginPlace(), + completeRate.getDestinationPlace(), + completeRate.getRequestedOutboundDate(), + completeRate.getSelectedItineraryPrice(), + completeRate.getCurrency()); + if (completeRate.getEntitlementSpecific()) { + updateSpecificEntitlementMax(completeRate, rate); + } else { + updateAllEntitlementMax(completeRate, rate); + } + completeRate.setDeleted(true); + tudRatesWSService.save(completeRate); + } catch (Exception e) { + getLogger().error("Cannot update TUD Request {}: {}", completeRate.getId(), e.getMessage()); + } + }); + } + + private void updateSpecificEntitlementMax(RatesTUDJpaEntity completeRate, Money rate) { + + + if (ENTIT_MAX_CAT_CODE_ALL.equals(completeRate.getEntitlementMaxsCatCode())) { + + entitlementTypeJpaServiceProvider.getEntitlementsTypeList(completeRate.getMovementFileId()).stream().filter(entType -> entType.getEntitlementTypeCat().getCode() == EntitlementTypeCatCode.TUD) + // Update both entitlementMax + .forEach(entType -> { + List entitlementMaxs = entitlementMaxJpaRepository.findByEntitlementTypeId(entType.getId()); + // Get and update entity + entitlementMaxs.forEach(entitlementMax -> { + getLogger().info("Updating specific Movement File {}, Entitlement Max {}", completeRate.getMovementFileId(), entType.getId()); + entitlementMax.setMaxValue(rate); + entitlementMaxJpaRepository.save(entitlementMax); + setAsDefaultEntitlementMax(completeRate, rate); + }); + }); + } else { + EntitlementMaxJpaEntity entitlementMax = entitlementMaxJpaRepository.findById(completeRate.getEntitlementMaxsId()); + entitlementMax.setMaxValue(rate); + entitlementMaxJpaRepository.save(entitlementMax); + setAsDefaultEntitlementMax(completeRate, rate); + } + notificationSenderProvider.sendNotification(completeRate.getMovementFileId()); + } + + private void updateAllEntitlementMax(RatesTUDJpaEntity completeRate, Money rate) { + if (LocalDate.now().isBefore(completeRate.getUsedOutboundDate().minusMonths(2))) { + entitlementMaxJpaRepository.getJobToTudEntitlementMaxJpaEntitiesToUpdate(completeRate.getOriginPlace(), + completeRate.getDestinationPlace(), completeRate.getUsedOutboundDate().getYear(), + completeRate.getUsedOutboundDate().getMonth().getValue()) + .stream() + .map(entitlementMaxJpaRepository::findById) + .peek(entitlementMaxJpaEntity -> entitlementMaxJpaEntity.setMaxValue(rate)) + .forEach(entitlementMaxJpaEntity -> { + entitlementMaxJpaRepository.save(entitlementMaxJpaEntity); + notificationSenderProvider.sendNotification(entitlementMaxJpaEntity.getEntitlementType().getMovementFile().getId()); + }); + entitlementMaxJpaRepository.getJobToTudEndOfContractEntitlementMaxJpaEntitiesToUpdate(completeRate.getOriginPlace(), + completeRate.getDestinationPlace(), completeRate.getUsedOutboundDate().getYear(), + completeRate.getUsedOutboundDate().getMonth().getValue()) + .stream() + .map(entitlementMaxJpaRepository::findById) + .peek(entitlementMaxJpaEntity -> entitlementMaxJpaEntity.setMaxValue(rate)) + .forEach(entitlementMaxJpaEntity -> { + entitlementMaxJpaRepository.save(entitlementMaxJpaEntity); + notificationSenderProvider.sendNotification(entitlementMaxJpaEntity.getEntitlementType().getMovementFile().getId()); + }); + setAsDefaultEntitlementMax(completeRate, rate); + } else { + entitlementMaxJpaRepository.getJobToTudEntitlementMaxJpaEntitiesToUpdate(completeRate.getOriginPlace(), + completeRate.getDestinationPlace(), completeRate.getUsedOutboundDate()) + .stream() + .map(entitlementMaxJpaRepository::findById) + .peek(entitlementMaxJpaEntity -> entitlementMaxJpaEntity.setMaxValue(rate)) + .forEach(entitlementMaxJpaEntity -> { + entitlementMaxJpaRepository.save(entitlementMaxJpaEntity); + notificationSenderProvider.sendNotification(entitlementMaxJpaEntity.getEntitlementType().getMovementFile().getId()); + }); + entitlementMaxJpaRepository.getJobToTudEndOfContractEntitlementMaxJpaEntitiesToUpdate(completeRate.getOriginPlace(), + completeRate.getDestinationPlace(), completeRate.getUsedOutboundDate()) + .stream() + .map(entitlementMaxJpaRepository::findById) + .peek(entitlementMaxJpaEntity -> entitlementMaxJpaEntity.setMaxValue(rate)) + .forEach(entitlementMaxJpaEntity -> { + entitlementMaxJpaRepository.save(entitlementMaxJpaEntity); + notificationSenderProvider.sendNotification(entitlementMaxJpaEntity.getEntitlementType().getMovementFile().getId()); + }); + } + + } + + private void setAsDefaultEntitlementMax(RatesTUDJpaEntity completeRate, Money rate) { + if (LocalDate.now().isBefore(completeRate.getUsedOutboundDate().minusMonths(2))) { + setAsDefault(completeRate, rate, ENTITLEMENT_MAX_CAT_ID_STAFF); + setAsDefault(completeRate, rate, ENTITLEMENT_MAX_CAT_ID_DEPENDENT); + } + } + + private void setAsDefault(RatesTUDJpaEntity completeRate, Money rate, long entitlementMaxCatId) { + List latestMaxDefaults = entitlementMaxDefaultJpaRepository.findByCityCodeFromAndCityCodeToAndStartDateAndEntitlementMaxCatIdAndLatest(completeRate.getOriginPlace(), + completeRate.getDestinationPlace(), + LocalDate.of(completeRate.getUsedOutboundDate().getYear(), completeRate.getUsedOutboundDate().getMonth().getValue(), 1), + entitlementMaxCatId, + true); + latestMaxDefaults.forEach(EntitlemenMaxDefault -> { + EntitlemenMaxDefault.setLatest(false); + entitlementMaxDefaultJpaRepository.save(EntitlemenMaxDefault); + }); + entitlementMaxDefaultJpaRepository.save(buildEntitlementMaxDefaultModel(completeRate.getOriginPlace(), + completeRate.getDestinationPlace(), completeRate.getUsedOutboundDate().getYear(), + completeRate.getUsedOutboundDate().getMonth().getValue(), rate, entitlementMaxCatId, + + // The ID indicates if it was capped by the algorithm + SkyScannerHelper.CAPPED_ID.equals(completeRate.getSelectedItineraryId()) + )); + } + + private EntitlementMaxDefaultJpaEntity buildEntitlementMaxDefaultModel(String cityFromCode, String cityToCode, + int year, int month, Money rate, Long entitlementMaxCatId, boolean capped) { + EntitlementMaxDefaultJpaEntity entitlementMaxDefault = new EntitlementMaxDefaultJpaEntity(); + entitlementMaxDefault.setAmount(rate); + entitlementMaxDefault.setCityCodeFrom(cityFromCode); + entitlementMaxDefault.setCountryCodeFrom(cityJpaRepository.getCountryCodeByCity(cityFromCode)); + entitlementMaxDefault.setCityCodeTo(cityToCode); + entitlementMaxDefault.setCountryCodeTo(cityJpaRepository.getCountryCodeByCity(cityToCode)); + entitlementMaxDefault.setEntitlementMaxCatId(entitlementMaxCatId); + entitlementMaxDefault.setLatest(Boolean.TRUE); + entitlementMaxDefault.setStartDate(LocalDate.of(year, month, 1)); + + if (capped) { + entitlementMaxDefault.setSourceData(EntitlementMaxDefaultJpaServiceProvider.SKYSCANNER_SRC_CAPPED); + } else { + entitlementMaxDefault.setSourceData(EntitlementMaxDefaultJpaServiceProvider.SKYSCANNER_SRC); + } + + return entitlementMaxDefault; + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/abac/AbacBankAccountServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/abac/AbacBankAccountServiceProvider.java new file mode 100644 index 0000000..7be45df --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/abac/AbacBankAccountServiceProvider.java @@ -0,0 +1,139 @@ +package eu.europa.eeas.erights.backoffice.service.provider.abac; + +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.erights.backoffice.service.data.provider.PersonAbacNupInfoJpaServiceProvider; +import eu.europa.eeas.erights.backoffice.service.model.PersonAbacNupInfoModel; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.declaration.PersonBankInfoJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.declaration.PersonBankInfoModel; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class AbacBankAccountServiceProvider extends AbstractServiceProvider { + + public static final String BANK_ACCOUNT_STATUS_VALID = "VALID"; + + + private final PersonBankInfoJpaServiceProvider personBankInfoJpaServiceProvider; + + + private final MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + + private final PersonAbacNupInfoJpaServiceProvider personAbacNupInfoJpaServiceProvider; + + + public void saveOrUpdateBankAccountsPerId(Long personId) { + List abacBankInfo = getPersonBankAccountsPerId(personId); + this.saveOrUpdateBankAccounts(personId, abacBankInfo); + } + + public void saveOrUpdateBankAccountsNup(Long personId) { + + Optional personAbacNupInfoModelOptional = personAbacNupInfoJpaServiceProvider.findByPersonId( + personId); + if (personAbacNupInfoModelOptional.isPresent()) { + List abacBankInfo = getPersonBankAccountsNup(personId, + personAbacNupInfoModelOptional.get().getNup()); + this.saveOrUpdateBankAccounts(personId, abacBankInfo); + } else { + getLogger().warn("NUP code not found for per_id={}", personId); + } + + } + + public void saveOrUpdateBankAccountsFromSummaByPerId(Long personId) { + + Optional personAbacNupInfoModelOptional = personAbacNupInfoJpaServiceProvider.findByPersonId( + personId); + if (personAbacNupInfoModelOptional.isPresent()) { + List abacBankInfo = getPersonBankAccountsNup(personId, + personAbacNupInfoModelOptional.get().getNup()); + this.saveOrUpdateBankAccounts(personId, abacBankInfo); + } else { + getLogger().warn("NUP code not found for per_id={}", personId); + } + + } + + + public void saveOrUpdateBankAccounts(Long personId, List abacBankInfo) { + + if (abacBankInfo != null && !abacBankInfo.isEmpty()) { + List dbBankInfo = personBankInfoJpaServiceProvider.getBankInfoForPerson(personId); + + // update or create the bank account based of its existence in DB + abacBankInfo.forEach(abacAccount -> { + Optional dbAccount + = dbBankInfo.stream().filter(dBc -> Objects.equals(dBc.getBaf(), abacAccount.getBaf()) && Objects.equals(dBc.getLef(), abacAccount.getLef())).findFirst(); + if (dbAccount.isPresent()) { + // update the bank account with latest data + personBankInfoJpaServiceProvider.update(this.updatePersonBankAccount(abacAccount, dbAccount.get())); + } else { + // save new bank account + personBankInfoJpaServiceProvider.create(abacAccount); + } + }); + + //find all the bank accounts removed from ABAC + List toBeDeleted = dbBankInfo.stream() + .filter(dBc -> abacBankInfo.stream().noneMatch(bc -> Objects.equals(bc.getBaf(), dBc.getBaf()) && Objects.equals(bc.getLef(), dBc.getLef()))) + .collect(Collectors.toList()); + + //delete the ones that are not assigned to a declaration or a request + toBeDeleted.stream().filter(bc -> !personBankInfoJpaServiceProvider.isBankAccountAssigned(bc.getId())) + .forEach(personBankInfoJpaServiceProvider::delete); + } + } + + + public void saveOrUpdateBankAccountsForAllMovementFilesNup() { + List personIds = movementFileJpaServiceProvider.getAllPersonsAssignedToAMovementFile(); + getLogger().info("Save/update bank account for person ids: {}", personIds); + personIds.forEach( + personId -> { + try { + this.saveOrUpdateBankAccountsNup(personId); + } catch (Exception e) { + getLogger().error("Exception when trying to save/update bank accounts for person with id: {}", personId, e); + } + } + ); + } + + public void saveOrUpdateBankAccountsForAllMovementFilesPerId() { + saveOrUpdateBankAccountsForAllMovementFilesNup(); + } + + private List getPersonBankAccountsPerId(Long personId) { + + + return null; + } + + + private List getPersonBankAccountsNup(Long personId, String nup) { + + + return null; + } + + + private PersonBankInfoModel updatePersonBankAccount(PersonBankInfoModel abacAccount, PersonBankInfoModel dbAccount) { + dbAccount.setIbanCode(abacAccount.getIbanCode()); + dbAccount.setBankName(abacAccount.getBankName()); + dbAccount.setAccountCurrency(abacAccount.getAccountCurrency()); + dbAccount.setAccountHolder(abacAccount.getAccountHolder()); + dbAccount.setBankAccountCode(abacAccount.getBankAccountCode()); + return dbAccount; + } + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/abac/AbacItemServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/abac/AbacItemServiceProvider.java new file mode 100644 index 0000000..15a4232 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/abac/AbacItemServiceProvider.java @@ -0,0 +1,80 @@ +package eu.europa.eeas.erights.backoffice.service.provider.abac; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.data.jpa.dto.AbacCommunicationDTO; +import eu.europa.eeas.erights.common.data.jpa.entity.AbacItemJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.AbacItemJpaRepository; +import eu.europa.eeas.erights.common.service.model.AbacItemModel; +import eu.europa.eeas.erights.common.service.model.AbacItemType; +import eu.europa.eeas.erights.common.tools.statemachine.AbacItemState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.UUID; + +@Service +@Transactional +public class AbacItemServiceProvider extends AbstractDataServiceProvider + implements EntityReader, EntityCreator, + EntityUpdater { + + @Autowired + private AbacItemJpaRepository repository; + + + @Autowired + private AbstractUserHandler userHandler; + + @Override + public Class getModelType() { + return AbacItemModel.class; + } + + @Override + public Class getEntityType() { + return AbacItemJpaEntity.class; + } + + public Long createOperation(AbacItemModel requestAbacModel) { + return this.create(requestAbacModel).getId(); + } + + public void addUuid(Long id, UUID uuid) { + userHandler.setSystemUserAsUser(); + AbacItemModel model = this.read(id); + model.setAbacCommunicationId(uuid); + model.setAbacId("RGH." + id); + this.update(model); + } + + public String getAbacId(Long requestPaymentAbacInfoId, AbacItemType abacItemType) { + return getBeanMapper().map(repository.findByRequestPaymentAbacInfoIdAndItemTypeAndItemState(requestPaymentAbacInfoId, abacItemType, AbacItemState.SUCCESS), AbacItemModel.class).getAbacId(); + } + + public long getSequence() { + return repository.getSequence(); + } + + public List getItemsByRequestId(Long requestId) { + return getBeanMapper().mapAsList(repository.findByRequestIdOrderByAbacId(requestId), AbacItemModel.class); + } + + public List getItemsByUuid(String uuid) { + + return getBeanMapper().mapAsList(repository.findByAbacCommunicationIdOrderByAbacId(UUID.fromString(uuid)), AbacItemModel.class); + } + public List getAbacCommunicationItemsByRequestId(Long requestId) { + return repository.getAbacCommunicationItemsByRequestId(requestId); + } + public AbacItemModel getAbacItemByRequestId(Long requestId) { + return getBeanMapper().map(repository.findByRequestId(requestId), AbacItemModel.class); + } + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/abac/AbacRequestEventServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/abac/AbacRequestEventServiceProvider.java new file mode 100644 index 0000000..a149c86 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/abac/AbacRequestEventServiceProvider.java @@ -0,0 +1,57 @@ +package eu.europa.eeas.erights.backoffice.service.provider.abac; + +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.erights.backoffice.listeners.events.AbacRequestApplicationEvent; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.RequestJpaServiceProvider; +import eu.europa.eeas.erights.common.tools.statemachine.AbacRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.AbacRequestState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.messaging.support.MessageBuilder; +import org.springframework.statemachine.StateMachine; +import org.springframework.statemachine.config.StateMachineFactory; +import org.springframework.statemachine.support.DefaultStateMachineContext; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +public class AbacRequestEventServiceProvider extends AbstractServiceProvider { + + @Autowired + private RequestJpaServiceProvider requestJpaServiceProvider; + + + private final StateMachineFactory abacRequestStateMachineFactory; + + public AbacRequestEventServiceProvider(StateMachineFactory abacRequestStateMachineFactory) { + this.abacRequestStateMachineFactory = abacRequestStateMachineFactory; + + } + + + public void sendEvent(AbacRequestApplicationEvent abacRequestApplicationEvent) { + AbacRequestState currentAbacState = requestJpaServiceProvider.getRequestAbacState(abacRequestApplicationEvent.getRequestId()); + StateMachine sm = buildStateMachine(currentAbacState == null ? AbacRequestState.NEW : currentAbacState); + sendEvent(abacRequestApplicationEvent, sm); + } + + private void sendEvent(AbacRequestApplicationEvent abacRequestApplicationEvent, StateMachine sm) { + Message msg = MessageBuilder.withPayload(abacRequestApplicationEvent.getAbacRequestEvent()) +// .setHeader(AbacRequestStateChangeInterceptor.ABAC_REQUEST_APPLICATION_EVENT, abacRequestApplicationEvent) + .build(); + sm.sendEvent(msg); + } + + private StateMachine buildStateMachine(AbacRequestState currentState) { + StateMachine sm = abacRequestStateMachineFactory.getStateMachine(); + sm.stop(); + sm.getStateMachineAccessor() + .doWithAllRegions(sma -> { +// sma.addStateMachineInterceptor(abacRequestStateChangeInterceptor); + sma.resetStateMachine(new DefaultStateMachineContext<>(currentState, null, null, null)); + }); + sm.start(); + return sm; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/abac/AbacServiceHelper.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/abac/AbacServiceHelper.java new file mode 100644 index 0000000..dd3cd09 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/abac/AbacServiceHelper.java @@ -0,0 +1,31 @@ +package eu.europa.eeas.erights.backoffice.service.provider.abac; + +import eu.europa.eeas.erights.common.service.data.provider.AppParameterJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.AppParameterModel; +import eu.europa.eeas.erights.common.tools.app.AppParamType; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + + +/** + * Helper class for ABAC service classes + * @author ienaccat + * @since 4.1.0 + */ +@Service +@RequiredArgsConstructor +public class AbacServiceHelper { + + private final AppParameterJpaServiceProvider appParameterService; + + public String getAppParameter(String key) { + List list = appParameterService.getAppParametersByTypeAndKey( + AppParamType.ABAC, key); + if (list.isEmpty()) { + throw new IllegalArgumentException("Parameter " + key + " not found for param type=" + AppParamType.ABAC); + } + return list.get(0).getValue(); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/allowances/AccommodationBankAccountsSyncService.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/allowances/AccommodationBankAccountsSyncService.java new file mode 100644 index 0000000..5d21a1c --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/allowances/AccommodationBankAccountsSyncService.java @@ -0,0 +1,115 @@ +package eu.europa.eeas.erights.backoffice.service.provider.allowances; + + +import eu.europa.eeas.ananke.core.base.exception.ValidationRuntimeException; +import eu.europa.eeas.erights.backoffice.service.provider.abac.AbacBankAccountServiceProvider; +import eu.europa.eeas.erights.backoffice.service.provider.p2p.BusinessPartnerConsumerServiceProvider; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.AccommodationBankAccountsSyncFailedJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.allowances.AccommodationBankAccountsSyncFailedJpaRepository; +import eu.europa.eeas.erights.common.service.data.provider.declaration.MVPersonAccommodationJpaServiceProvider; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +/** + * @author ienaccat + * @since 5.0.0 + */ +@Service +@RequiredArgsConstructor +public class AccommodationBankAccountsSyncService { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + private final MVPersonAccommodationJpaServiceProvider personAccommodationJpaServiceProvider; + private final PostingAllowancesAppParamsServiceHelper appParamsServiceHelper; + private final AbacBankAccountServiceProvider abacBankAccountServiceProvider; + private final AccommodationBankAccountsSyncFailedJpaRepository accommodationBankAccountsSyncFailedRepository; + private final BusinessPartnerConsumerServiceProvider businessPartnerConsumerServiceProvider; + + + public static String NUM_ROWS = "ACCOMMODATION_BANK_ACCOUNTS_SYNC_NUM_ROWS"; + public static String MAX_RETRIES = "ACCOMMODATION_BANK_ACCOUNTS_SYNC_MAX_RETRIES"; + public static String SYNC_DELAY = "ACCOMMODATION_BANK_ACCOUNTS_SYNC_DELAY"; + + /** + * Syncs bank accounts for eligible Accommodation declaration staff + */ + public void findStaffMembersAndSyncBankAccounts() { + int numRowsToSync = appParamsServiceHelper.getAppParameterInteger(NUM_ROWS); + int maxRetries = appParamsServiceHelper.getAppParameterInteger(MAX_RETRIES); + int cronjobFreqMin = appParamsServiceHelper.getAppParameterInteger(SYNC_DELAY); //cronjob frequency in minutes + int abacCallDelayMin = cronjobFreqMin / numRowsToSync; //delay in minutes before any new call to sync the bank accounts + + List perIdsToSync = personAccommodationJpaServiceProvider.findAllNotHavingBankAccountsAndNotFailed(numRowsToSync, maxRetries); + logger.info("findStaffMembersAndSyncBankAccounts -> started to sync {} bankAccounts with a delay of {} minutes", + numRowsToSync, + abacCallDelayMin); + + List perIdsSynced = new ArrayList<>(); + + perIdsToSync.stream().forEach(perId -> { + processBankAccount(perId, abacCallDelayMin, perIdsSynced); + }); + perIdsToSync.removeAll(perIdsSynced); + logger.info("findStaffMembersAndSyncBankAccounts perIds left to sync={}", perIdsToSync.size()); + } + + private void processBankAccount(Long perId, long delay, List perIdsSynced) { + try { + businessPartnerConsumerServiceProvider.saveOrUpdateBankAccountsFromSummaByPerId(perId); + } catch (Exception e) { + logger.error("saveOrUpdateBankAccountsNupForSync error for personId={}", perId, e); + saveFailure(perId, e); + } + logger.info("findStaffMembersAndSyncBankAccounts -> saveOrUpdateBankAccountsNup executed for perId={}", perId); + perIdsSynced.add(perId); + try { + Thread.sleep(delay * 60 * 1000 - 10 * 1000); //wait the given delay minus 10 seconds + } catch (InterruptedException e) { + logger.error("processBankAccount sleep error", e); + } + } + + private void saveFailure(Long personId, Exception e) { + AccommodationBankAccountsSyncFailedJpaEntity entity = accommodationBankAccountsSyncFailedRepository.findByPersonId(personId); + + if (entity == null) { + //insert + AccommodationBankAccountsSyncFailedJpaEntity newEntity = new AccommodationBankAccountsSyncFailedJpaEntity(); + newEntity.setPersonId(personId); + newEntity.setFailureNo(1); + newEntity.setFailureDescription(getFailureDescription(e)); + newEntity.setCreatedDate(LocalDateTime.now()); + newEntity.setUpdatedDate(LocalDateTime.now()); + accommodationBankAccountsSyncFailedRepository.save(newEntity); + } else { + //update + entity.setFailureNo(entity.getFailureNo() + 1); + entity.setFailureDescription(getFailureDescription(e)); + entity.setUpdatedDate(LocalDateTime.now()); + accommodationBankAccountsSyncFailedRepository.save(entity); + } + } + + private String getFailureDescription(Exception e) { + String errorMessage = StringUtils.EMPTY; + if (e instanceof ValidationRuntimeException) { + ValidationRuntimeException validationRuntimeException = (ValidationRuntimeException) e; + if (CollectionUtils.isNotEmpty(validationRuntimeException.getItems())) { + errorMessage = validationRuntimeException.getItems().stream().map(item -> item.getMessage()).collect(Collectors.joining(". ")); + } + } else { + errorMessage = e.getMessage(); + } + return StringUtils.substring(errorMessage, 0, 4000); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/allowances/PostingAllowancesAppParamsServiceHelper.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/allowances/PostingAllowancesAppParamsServiceHelper.java new file mode 100644 index 0000000..82de39f --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/allowances/PostingAllowancesAppParamsServiceHelper.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.backoffice.service.provider.allowances; + +import eu.europa.eeas.erights.common.service.data.provider.AppParameterJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.AppParameterModel; +import eu.europa.eeas.erights.common.tools.app.AppParamType; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + + +/** + * Helper class for PostingAllowances service classes + * @author ienaccat + * @since 5.0.0 + */ +@Service +@RequiredArgsConstructor +public class PostingAllowancesAppParamsServiceHelper { + + private final AppParameterJpaServiceProvider appParameterService; + + public String getAppParameter(String key) { + List list = appParameterService.getAppParametersByTypeAndKey( + AppParamType.POSTING_ALLOWANCES, key); + if (list.isEmpty()) { + throw new IllegalArgumentException("Parameter " + key + " not found for param type=" + AppParamType.POSTING_ALLOWANCES); + } + return list.get(0).getValue(); + } + + public Integer getAppParameterInteger(String key) { + String value = getAppParameter(key); + return Integer.parseInt(value); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/AllowanceOrderConsumerServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/AllowanceOrderConsumerServiceProvider.java new file mode 100644 index 0000000..6450310 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/AllowanceOrderConsumerServiceProvider.java @@ -0,0 +1,360 @@ +package eu.europa.eeas.erights.backoffice.service.provider.p2p; + + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.base.user.User; +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.AllowanceRequestInternalTransferObject; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.OrderResponseInternalTransferObject; +import eu.europa.eeas.erights.backoffice.boot.configuration.p2phub.P2pHubRestClientConfiguration; +import eu.europa.eeas.erights.backoffice.service.data.provider.AllowancePaymentJpaServiceProvider; +import eu.europa.eeas.erights.backoffice.service.data.provider.p2phub.OrderErrorResponseJpaServiceProvider; +import eu.europa.eeas.erights.backoffice.service.data.provider.p2phub.OrderResponseJpaServiceProvider; +import eu.europa.eeas.erights.backoffice.service.data.provider.p2phub.OrderStatusResponseJpaServiceProvider; +import eu.europa.eeas.erights.backoffice.service.data.provider.p2phub.P2pHubOrderErrorApiException; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderErrorResponseModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderResponseModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderStatusResponseModel; +import eu.europa.eeas.erights.common.service.data.provider.VAllowanceJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.RequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.VAllowanceModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.tools.p2p.OrderStatusEnum; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.OrderResponseTransferObject; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.OrderStatusResponseTransferObject; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.HttpStatusCodeException; +import org.springframework.web.client.ResourceAccessException; + +import java.time.LocalDateTime; + + +@Service +public class AllowanceOrderConsumerServiceProvider extends AbstractServiceProvider { + + public static final Logger log = LoggerFactory.getLogger(AllowanceOrderConsumerServiceProvider.class); + + private final SummaClient summaClient; + private final AllowancePaymentJpaServiceProvider allowancePaymentJpaServiceProvider; + + private final P2pHubRestClientConfiguration p2pHubRestClientConfiguration; + private final AbstractUserHandler userHandler; + private final DataServiceProviderRegistry dataServiceProviderRegistry; + private final ObjectMapper objectMapper; + + + + @Autowired + public AllowanceOrderConsumerServiceProvider( + SummaClient summaClient, + AllowancePaymentJpaServiceProvider allowancePaymentJpaServiceProvider, + P2pHubRestClientConfiguration p2pHubRestClientConfiguration, + AbstractUserHandler userHandler, + DataServiceProviderRegistry dataServiceProviderRegistry, + ObjectMapper objectMapper + ) { + this.summaClient = summaClient; + this.allowancePaymentJpaServiceProvider = allowancePaymentJpaServiceProvider; + this.p2pHubRestClientConfiguration = p2pHubRestClientConfiguration; + this.userHandler = userHandler; + this.dataServiceProviderRegistry = dataServiceProviderRegistry; + this.objectMapper = objectMapper; + + } + + private static String truncate(String s, int max) { + if (s == null) return null; + return s.length() <= max ? s : s.substring(0, max); + } + + public ResponseEntity submitAllowanceCreation( + AllowanceRequestInternalTransferObject allowanceRequestTransferObject) { + + OrderResponseJpaServiceProvider service = + (OrderResponseJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor(OrderResponseModel.class); + + VAllowanceJpaServiceProvider vAllowanceJpaServiceProvider = (VAllowanceJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(VAllowanceModel.class); + + OrderErrorResponseJpaServiceProvider errorService = + (OrderErrorResponseJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor(OrderErrorResponseModel.class); + + RequestJpaServiceProvider requestJpaServiceProvider = + (RequestJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor(RequestModel.class); + + OrderErrorResponseModel errModel = new OrderErrorResponseModel(); + OrderResponseInternalTransferObject internalErr; + + VAllowanceModel vAllowanceModel = vAllowanceJpaServiceProvider.read(allowanceRequestTransferObject.getRequestId()); + + if (!"APPROVED".equals(vAllowanceModel.getStatus())) { + errModel.setMessage("Failed to send to P2P-HUB request status is not APPROVED. "); + errModel.setErrorCode("Current State: " + vAllowanceModel.getStatus()); + errModel.setErrorText("Wrong State"); + log.error("Failed to send to P2P-HUB request status is {} - {} ", vAllowanceModel.getStatus(), errModel); + internalErr = + buildInternalErrorResponse(allowanceRequestTransferObject, errModel); + + return ResponseEntity.ok(internalErr); + } + requestJpaServiceProvider.newStateMachineEvent("SEND_TO_P2P", allowanceRequestTransferObject.getRequestId()); + User user = userHandler.getUser(); + allowanceRequestTransferObject.getHeader().setRequestSenderOia(user.getUid()); + allowanceRequestTransferObject.getDetails() + .forEach(detail -> detail.setEmailNotif(user.getEmail())); + log.info(allowanceRequestTransferObject.toString()); + try { + + OrderResponseTransferObject res = + summaClient.submitAllowanceCreation(allowanceRequestTransferObject); + + OrderResponseInternalTransferObject internal = + this.toInternal(res); + + OrderResponseModel orderResponseModel = + getBeanMapper().map(internal, OrderResponseModel.class); + + orderResponseModel.setRequestId(allowanceRequestTransferObject.getRequestId()); + orderResponseModel.setPerId(allowanceRequestTransferObject.getPerId()); + orderResponseModel.setOrderStatus("SENT_TO_P2P"); + String jsonSent = allowanceRequestTransferObject.toString(); + orderResponseModel.setJsonSent(jsonSent.length() > 4000 ? jsonSent.substring(0, 4000) : jsonSent); + service.create(orderResponseModel); + + requestJpaServiceProvider.updateRequestP2pOrder( + OrderStatusEnum.SENT_TO_P2P, + Long.valueOf(orderResponseModel.getOrderId()), + orderResponseModel.getOrderComment(), + orderResponseModel.getRequestId() + + ); + + return ResponseEntity.ok(internal); + } + + // ========================================================= + // ✅ P2P BUSINESS ERROR (Custom Exception) + // ========================================================= + catch (P2pHubOrderErrorApiException ex) { + + errModel = parseBusinessError(ex.getRawBody(), allowanceRequestTransferObject); + + errorService.create(errModel); + + requestJpaServiceProvider.newStateMachineEvent( + "ERROR_IN_P2P", + allowanceRequestTransferObject.getRequestId() + ); + + return ResponseEntity.ok(buildInternalErrorResponse(allowanceRequestTransferObject, errModel)); + } + + // ========================================================= + // ✅ P2P BUSINESS ERROR (HTTP 400/401/403/404/500) + // ========================================================= + catch (HttpStatusCodeException ex) { + + errModel = parseBusinessError(ex.getResponseBodyAsString(), allowanceRequestTransferObject); + + errorService.create(errModel); + + // IMPORTANT: this is business error → move back to ERROR_IN_P2P + requestJpaServiceProvider.newStateMachineEvent( + "ERROR_IN_P2P", + allowanceRequestTransferObject.getRequestId() + ); + + return ResponseEntity.ok(buildInternalErrorResponse(allowanceRequestTransferObject, errModel)); + } + + // ========================================================= + // ⌠TECHNICAL ERROR (NO RESPONSE FROM P2P) + // ========================================================= + catch (ResourceAccessException ex) { + + errModel = buildTechnicalErrorModel( + allowanceRequestTransferObject, + "Technical error calling P2P-Hub", + ex.getMessage() + ); + + errorService.create(errModel); + + // DO NOT ERROR_IN_P2P + return ResponseEntity.ok(buildInternalErrorResponse(allowanceRequestTransferObject, errModel)); + } + + catch (Exception ex) { + + errModel = buildTechnicalErrorModel( + allowanceRequestTransferObject, + "Unexpected technical error", + ex.getMessage() + ); + + errorService.create(errModel); + + // DO NOT ERROR_IN_P2P + return ResponseEntity.ok(buildInternalErrorResponse(allowanceRequestTransferObject, errModel)); + } + } + + + private OrderErrorResponseModel parseBusinessError( + String rawBody, + AllowanceRequestInternalTransferObject request) { + + OrderErrorResponseModel errorModel; + + ObjectMapper localMapper = objectMapper.copy(); + localMapper.setPropertyNamingStrategy( + PropertyNamingStrategies.SNAKE_CASE); + + + + try { + if (rawBody != null && rawBody.trim().startsWith("{")) { + errorModel = localMapper.readValue(rawBody, OrderErrorResponseModel.class); + } else { + errorModel = new OrderErrorResponseModel(); + errorModel.setMessage(rawBody); + } + } catch (Exception ex) { + errorModel = new OrderErrorResponseModel(); + errorModel.setMessage("P2P-Hub error (unparsable response)"); + errorModel.setErrorText(rawBody); + } + + errorModel.setRequestId(request.getRequestId()); + errorModel.setPerId(request.getPerId()); + String jsonSent = request.toString(); + errorModel.setJsonSent(jsonSent.length() > 4000 ? jsonSent.substring(0, 4000) : jsonSent); + + return errorModel; + } + + + private OrderErrorResponseModel buildTechnicalErrorModel( + AllowanceRequestInternalTransferObject request, + String message, + String errorText) { + + OrderErrorResponseModel errorModel = new OrderErrorResponseModel(); + errorModel.setMessage(message); + errorModel.setErrorCode("TECHNICAL_ERROR"); + errorModel.setErrorText(errorText); + errorModel.setRequestId(request.getRequestId()); + errorModel.setPerId(request.getPerId()); + String jsonSent = request.toString(); + errorModel.setJsonSent(jsonSent.length() > 4000 ? jsonSent.substring(0, 4000) : jsonSent); + + return errorModel; + } + + private OrderErrorResponseModel buildErrorModel( + AllowanceRequestInternalTransferObject request, + String message, + String errorCode, + String errorText) { + + OrderErrorResponseModel errorModel = new OrderErrorResponseModel(); + errorModel.setMessage(message); + errorModel.setErrorCode(errorCode); + errorModel.setErrorText(errorText); + errorModel.setRequestId(request.getRequestId()); + errorModel.setPerId(request.getPerId()); + + return errorModel; + } + + private boolean isValidJson(String body) { + try { + new ObjectMapper().readTree(body); + return true; + } catch (Exception e) { + return false; + } + } + + private OrderResponseInternalTransferObject buildInternalErrorResponse( + AllowanceRequestInternalTransferObject allowanceRequest, + OrderErrorResponseModel errModel) { + + OrderResponseInternalTransferObject internalErr = new OrderResponseInternalTransferObject(); + + internalErr.setRequestId(allowanceRequest.getRequestId()); + internalErr.setPerId(allowanceRequest.getPerId()); + internalErr.setMessage(errModel.getMessage()); + internalErr.setErrorCode(errModel.getErrorCode()); + internalErr.setErrorText(errModel.getErrorText()); + internalErr.setResponseDateTime(LocalDateTime.now()); + internalErr.setOrder(null); // no success order returned + + + return internalErr; + } + + public OrderResponseInternalTransferObject toInternal(OrderResponseTransferObject src) { + // Copies matching properties; extra fields in Internal stay null/default. + return objectMapper.convertValue(src, OrderResponseInternalTransferObject.class); + } + + public OrderStatusResponseTransferObject getOrderStatus(Long orderId) { + //here We got OrderStatusRespons from summa and save it in db + OrderStatusResponseJpaServiceProvider service = (OrderStatusResponseJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(OrderStatusResponseModel.class); + OrderStatusResponseTransferObject orderStatusResponseTransferObject = summaClient.getOrderStatusFromP2p(String.valueOf(orderId)); + OrderStatusResponseModel orderStatusResponseModel = getBeanMapper().map(orderStatusResponseTransferObject, OrderStatusResponseModel.class); + service.create(orderStatusResponseModel); + + + //here we update the orderresponse + OrderResponseJpaServiceProvider orderResponseJpaServiceProvider = (OrderResponseJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(OrderResponseModel.class); + OrderResponseModel orderResponseModel = orderResponseJpaServiceProvider.findByOrderId(orderId); + orderResponseModel = updateOrderResponseWithStatus(orderResponseModel,orderStatusResponseModel); + if (orderResponseModel != null) { + orderResponseJpaServiceProvider.update(orderResponseModel); + } + return orderStatusResponseTransferObject; + } + + public OrderResponseModel updateOrderResponseWithStatus(OrderResponseModel target, + OrderStatusResponseModel source) { + + if (target == null || source == null) { + return null; + } + + applyIfNotNull(source.getOrderId(), target::setOrderId); + applyIfNotNull(source.getAllowanceRequestId(), target::setAllowanceRequestId); + applyIfNotNull(source.getRequestId(), target::setRequestId); + applyIfNotNull(source.getPerId(), target::setPerId); + applyIfNotNull(source.getOrderStatus(), target::setOrderStatus); + applyIfNotNull(source.getOrderComment(), target::setOrderComment); + applyIfNotNull(source.getLastModificationDate(), target::setLastModificationDate); + applyIfNotNull(source.getPaymentDirectiveReference(), target::setPaymentDirectiveReference); + + return target; + } + + private void applyIfNotNull(T value, java.util.function.Consumer setter) { + if (value != null) { + setter.accept(value); + } + } + + + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/AuthTokenProviderServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/AuthTokenProviderServiceProvider.java new file mode 100644 index 0000000..bbd65a1 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/AuthTokenProviderServiceProvider.java @@ -0,0 +1,91 @@ +package eu.europa.eeas.erights.backoffice.service.provider.p2p; + +import com.nimbusds.jose.JOSEException; +import com.nimbusds.jose.JWSAlgorithm; +import com.nimbusds.jose.jwk.ECKey; +import com.nimbusds.jose.jwk.JWK; +import com.nimbusds.jose.jwk.JWKSet; +import com.nimbusds.oauth2.sdk.auth.ClientAuthenticationMethod; +import eu.europa.ec.ecas.client.oidc.ClientKeyGenerator; +import eu.europa.ec.ecas.client.oidc.OidcScriptClient; +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.erights.backoffice.boot.configuration.p2phub.P2pHubRestClientConfiguration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import java.io.IOException; +import java.security.NoSuchAlgorithmException; +import java.text.ParseException; + +@Service +public class AuthTokenProviderServiceProvider extends AbstractServiceProvider { + + public static final Logger logger = LoggerFactory.getLogger(AuthTokenProviderServiceProvider.class); + + @Autowired + private P2pHubRestClientConfiguration p2pHubRestClientConfiguration; + + + + public String getSystemPoPToken() { + try { + return getSystemPoPToken(SSLContext.getDefault()); + } catch (NoSuchAlgorithmException e) { + throw new IllegalStateException("Cannot obtain default SSLContext", e); + } + } + + + public String getSystemPoPToken( SSLContext sslContext) { + String popToken = ""; + String euloginOidcPrivateKey = p2pHubRestClientConfiguration.getEuloginOidcPrivateKey().getValue(); + String euloginOidcClientId = p2pHubRestClientConfiguration.getEuloginOidcClientId().getValue(); + String restClientId = p2pHubRestClientConfiguration.getRestClientId().getValue(); + String euloginOidcJwkKid = p2pHubRestClientConfiguration.getEuloginOidcJwkKid().getValue(); +// logger.info("euloginOidcPrivateKey"); +// logger.info(euloginOidcPrivateKey.toString()); +// logger.info("restClientId"); +// logger.info(restClientId); +// logger.info("euloginOidcClientId"); +// logger.info(euloginOidcClientId); +// logger.info("euloginOidcJwkKid"); +// logger.info(euloginOidcJwkKid); + + try { + + SSLSocketFactory jsseFactory = sslContext.getSocketFactory(); + JWK clientPrivateKey = JWKSet.parse(euloginOidcPrivateKey.replace("\\\\", "")) + .getKeyByKeyId(euloginOidcJwkKid); + + OidcScriptClient oidcScriptClient = OidcScriptClient.builder() + .clientId(euloginOidcClientId.toCharArray()) + .clientPrivateKey(clientPrivateKey) + .tokenEndpointUrl(p2pHubRestClientConfiguration.getEuloginOidcTokenEndpoint()) + .tokenEndpointAuthJWSAlg(JWSAlgorithm.EdDSA) + .tokenEndpointAuthMethod(ClientAuthenticationMethod.PRIVATE_KEY_JWT) + .configureHttpClient(b -> b.sslSocketFactory(jsseFactory)) + .build(); + + //String bearerAccessToken = oidcScriptClient.getBearerAccessToken(euloginOidcClientId); + //logger.debug(String.format("[EU-LOGIN] bearerAccessToken = " + bearerAccessToken)); + + ECKey popKeyPair = new ClientKeyGenerator().generatePoPEcKeyPair(); + ECKey publicPopKey = popKeyPair.toPublicJWK(); + + popToken = oidcScriptClient.getPopAccessToken(restClientId, publicPopKey); + logger.debug(String.format("[EU-LOGIN] popToken = " + popToken)); + + } catch (ParseException | com.nimbusds.oauth2.sdk.ParseException | IOException | JOSEException e) { + logger.error("[EU-LOGIN] Not able to retrieve popToken", e); + } + + logger.info("[EU-LOGIN] popToken generated and is: " + popToken); + + return popToken; + + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/BusinessPartnerConsumerServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/BusinessPartnerConsumerServiceProvider.java new file mode 100644 index 0000000..3f3ba6c --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/BusinessPartnerConsumerServiceProvider.java @@ -0,0 +1,253 @@ +package eu.europa.eeas.erights.backoffice.service.provider.p2p; + + +import eu.europa.eeas.ananke.core.base.exception.ValidationRuntimeException; +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.BusinessPartnerInternalTransferObject; +import eu.europa.eeas.erights.backoffice.boot.configuration.p2phub.P2pHubRestClientConfiguration; +import eu.europa.eeas.erights.backoffice.service.data.provider.PersonBankInfoBackOfficeJpaServiceProvider; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.BusinessPartnerBankAccountModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.BusinessPartnerModel; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.BusinessPartnerResponseTransferObject; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + + +@Service +@RequiredArgsConstructor +public class BusinessPartnerConsumerServiceProvider extends AbstractServiceProvider { + + public static final Logger log = LoggerFactory.getLogger(SummaClient.class); + + @Autowired + private P2pHubRestClientConfiguration p2pHubRestClientConfiguration; + + @Autowired + private MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + private final SummaClient summaClient; + + + private final PersonBankInfoBackOfficeJpaServiceProvider personBankInfoJpaServiceProvider; + + + /** + * For controllers (keeps ResponseEntity) + */ + public ResponseEntity getBusinessPartnerFromSumma(Long perId) { + BusinessPartnerResponseTransferObject res = summaClient.getByPersonIdTransferObject(perId.toString()); + return ResponseEntity.ok(res); + } + + /** + * For internal services (returns plain DTO) + */ + public BusinessPartnerInternalTransferObject getBusinessPartnerResponseTransferObjectByPerId(Long perId) { + Optional result = + summaClient.getByPersonIdResponseTransferObject(perId.toString()); + + if (!result.isPresent()) { + log.warn("No BusinessPartner found for perId={}", perId); + return null; + } + + return result.get(); + + } + + public BusinessPartnerModel getBusinessPartnerModelByPerId(Long perId) { + BusinessPartnerModel businessPartnerModel; + return getBeanMapper().map(summaClient.getByPersonIdResponseTransferObject(perId.toString()), BusinessPartnerModel.class); + + + } + + + public void saveOrUpdateBankAccountsFromSummaByPerId(Long personId) { + + BusinessPartnerModel businessPartnerModel = + summaClient.getByPersonIdModel(personId.toString()); + + if (businessPartnerModel == null) { + // propagate info to frontend + + throw new ValidationRuntimeException( ERightsExceptionCode.ER047 , " Person Id: " + personId + " You may proceed with the movement file, but the person has no bank account yet. The system will update it automatically once SUMMA provides the data."); + + + } + + + + this.saveOrUpdateBankAccounts(personId, businessPartnerModel); + + } + public void saveOrUpdateOldBankAccountsFromAbacWithSummaData(Long personId) { + + BusinessPartnerModel businessPartnerModel = summaClient.getByPersonIdModel(personId.toString()); + this.saveOrUpdateOldBankAccountsFromAbacWithSummaData(personId, businessPartnerModel); + + } + + + + public void saveOrUpdateBankAccounts(Long personId, BusinessPartnerModel bpModel) { + + if (bpModel != null && !bpModel.getBankAccounts().isEmpty()) { + + List dbBankInfo = personBankInfoJpaServiceProvider.getBankInfoForPerson(personId); + + // update or create the bank account based of its existence in DB + bpModel.getBankAccounts().forEach(abacAccount -> { + Optional dbAccount + = dbBankInfo.stream() .filter(dBc -> + // Rule 1: bank identification + business partner + ( + Objects.equals(dBc.getBankIdentification(), abacAccount.getBankIdentification()) + && Objects.equals(dBc.getBusinessPartner(), abacAccount.getBusinessPartner()) + ) + || + // Rule 2: lef + (bank account OR iban) for old bank accounts + ( + Objects.equals(dBc.getLef(), abacAccount.getLef()) + && ( + Objects.equals(dBc.getBankAccount(), abacAccount.getBankAccount()) + || Objects.equals(dBc.getIban(), abacAccount.getIban()) + ) + ) + ) + .findFirst(); + + if (dbAccount.isPresent()) { + // update the bank account with latest data + personBankInfoJpaServiceProvider.update(this.updatePersonBankAccount(abacAccount, dbAccount.get())); + } else { + // save new bank account + personBankInfoJpaServiceProvider.create(abacAccount); + } + }); + + //find all the bank accounts removed from ABAC + List toBeDeleted = dbBankInfo.stream() + .filter(dBc -> dbBankInfo.stream().noneMatch(bc -> Objects.equals(bc.getBankIdentification(), dBc.getBankIdentification()) && Objects.equals(bc.getBusinessPartner(), dBc.getBusinessPartner()))) + .collect(Collectors.toList()); + + //delete the ones that are not assigned to a declaration or a request + toBeDeleted.stream().filter(bc -> !personBankInfoJpaServiceProvider.isBankAccountAssigned(Long.valueOf(bpModel.getPersonNumber()))) + .forEach(personBankInfoJpaServiceProvider::delete); + } + } + + + public void saveOrUpdateOldBankAccountsFromAbacWithSummaData(Long personId, BusinessPartnerModel bpModel) { + + if (bpModel != null && !bpModel.getBankAccounts().isEmpty()) { + + List dbBankInfo = personBankInfoJpaServiceProvider.getBankInfoForPerson(personId); + + // update or create the bank account based of its existence in DB + bpModel.getBankAccounts().forEach(abacAccount -> { + Optional dbAccount + = dbBankInfo.stream().filter(dBc -> Objects.equals(dBc.getLef(), abacAccount.getLef()) && + (Objects.equals(dBc.getIban().replaceAll("\\s+", "").trim(), abacAccount.getIban().replaceAll("\\s+", "").trim()) + || Objects.equals(dBc.getBankAccount().replaceAll("\\s+", "").trim(), abacAccount.getBankAccount().replaceAll("\\s+", "").trim()) + ) + + ).findFirst(); + if (dbAccount.isPresent()) { + // update the bank account with latest data + log.info("Updating Abac account with Summa Data : IBAN: {}, PER_ID: {}, BusinessPartner: {}", + dbAccount.get().getIban(), + dbAccount.get().getPerId(), + dbAccount.get().getBusinessPartner()); + personBankInfoJpaServiceProvider.update(this.updatePersonBankAccount(abacAccount, dbAccount.get())); + } else { + // save new bank account + log.info("New Bank account with Summa Data : IBAN: {}, PER_ID: {}, BusinessPartner: {}", + abacAccount.getIban(), + abacAccount.getPerId(), + abacAccount.getBusinessPartner()); + personBankInfoJpaServiceProvider.create(abacAccount); + } + }); + + + } + } + private BusinessPartnerBankAccountModel updatePersonBankAccount(BusinessPartnerBankAccountModel summaAccount, BusinessPartnerBankAccountModel dbAccount) { + dbAccount.setIban(summaAccount.getIban()); + dbAccount.setBankName(summaAccount.getBankName()); + dbAccount.setBankAccountHolderName(summaAccount.getBankAccountHolderName()); + dbAccount.setBankIdentification(summaAccount.getBankIdentification()); + dbAccount.setBusinessPartner(summaAccount.getBusinessPartner()); + + + return dbAccount; + } + + + public void saveOrUpdateBankAccountsForAllMovementFilesBankAccountsFromSumma() { + + List personIds = movementFileJpaServiceProvider.getAllPersonsAssignedToAMovementFile(); + getLogger().info("Save/update bank account for person ids: {}", personIds); + + ExecutorService executor = Executors.newFixedThreadPool(2); + + for (Long personId : personIds) { + executor.submit(() -> { + try { + saveOrUpdateBankAccountsFromSummaByPerId(personId); + } catch (Exception e) { + getLogger().error("Exception when trying to save/update bank accounts for person with id: {}", personId, e); + } + }); + } + + executor.shutdown(); + try { + executor.awaitTermination(30, TimeUnit.MINUTES); + } catch (InterruptedException e) { + getLogger().error("Executor interrupted", e); + Thread.currentThread().interrupt(); + } + } + + public void saveOrUpdateOldBankAccountsForAllMovementFilesBankAccountsFromSumma() { + + List personIds = movementFileJpaServiceProvider.getAllPersonsAssignedToAMovementFile(); + getLogger().info("Save/update OLD bank accounts for person ids: {}", personIds); + + ExecutorService executor = Executors.newFixedThreadPool(2); + + for (Long personId : personIds) { + executor.submit(() -> { + try { + saveOrUpdateOldBankAccountsFromAbacWithSummaData(personId); + } catch (Exception e) { + getLogger().error("Exception when trying to save/update OLD bank accounts for person with id: {}", personId, e); + } + }); + } + + executor.shutdown(); + try { + executor.awaitTermination(30, TimeUnit.MINUTES); + } catch (InterruptedException e) { + getLogger().error("Executor interrupted", e); + Thread.currentThread().interrupt(); + } + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/InsecureApiClientFactory.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/InsecureApiClientFactory.java new file mode 100644 index 0000000..f3222ee --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/InsecureApiClientFactory.java @@ -0,0 +1,40 @@ +package eu.europa.eeas.erights.backoffice.service.provider.p2p; + +import eu.europa.eeas.erights.web.p2phub.ApiClient; +import org.apache.http.client.HttpClient; +import org.apache.http.conn.ssl.NoopHostnameVerifier; +import org.apache.http.conn.ssl.TrustStrategy; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.ssl.SSLContexts; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; + +import javax.net.ssl.SSLContext; +import java.security.cert.X509Certificate; + +public class InsecureApiClientFactory { + + public static ApiClient create(String baseUrl) throws Exception { + // Build trust-all SSL context + TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true; + + SSLContext sslContext = SSLContexts.custom() + .loadTrustMaterial(null, acceptingTrustStrategy) + .build(); + + HttpClient httpClient = HttpClients.custom() + .setSSLContext(sslContext) + .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE) // disable hostname check + .build(); + + RestTemplate insecureRestTemplate = new RestTemplate( + new HttpComponentsClientHttpRequestFactory(httpClient)); + + // Init ApiClient and inject insecure RestTemplate + ApiClient apiClient = new ApiClient(insecureRestTemplate); + apiClient.setBasePath(baseUrl); + + + return apiClient; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/P2pHubRestClient.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/P2pHubRestClient.java new file mode 100644 index 0000000..61b08d9 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/P2pHubRestClient.java @@ -0,0 +1,96 @@ +package eu.europa.eeas.erights.backoffice.service.provider.p2p; + +import eu.europa.eeas.erights.backoffice.boot.configuration.p2phub.P2pHubRestClientConfiguration; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.P2pHubRequestModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.P2pHubResponseModel; +import eu.europa.eeas.erights.web.p2phub.ApiClient; +import eu.europa.eeas.erights.web.p2phub.auth.OAuth; +import eu.europa.eeas.erights.web.p2phub.client.BusinessPartnersRestApi; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.BusinessPartnerResponseTransferObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +@Service +public class P2pHubRestClient { + + @Autowired + private P2pHubRestClientConfiguration p2pHubRestClientConfiguration; + + + RestTemplate restTemplate = new RestTemplate(); + + public BusinessPartnerResponseTransferObject getBusinessPartners() throws Exception { + ApiClient apiClient = new ApiClient(); + + // Use the server from your OpenAPI `servers:` list if you want: + apiClient.setBasePath("https://p2p-hub.test.app.eeas.europa.eu/eeashub/api/v1"); + + + OAuth euLoginAuth = (OAuth) apiClient.getAuthentication("eu-login_auth"); + euLoginAuth.setAccessToken(""); + + BusinessPartnersRestApi api = new BusinessPartnersRestApi(apiClient); + BusinessPartnerResponseTransferObject res = api.getBusinessPartnerByPersonId(""); + System.out.println(res); + return res; + } + public P2pHubResponseModel sendPaymentToP2pHub (P2pHubRequestModel request, String authToken) { + ResponseEntity httpResponse = null; + try { + HttpHeaders headers = new HttpHeaders(); + headers.setBearerAuth(authToken); + + HttpEntity httpRequest = new HttpEntity<>(request, headers); + httpResponse = restTemplate + .exchange(p2pHubRestClientConfiguration.getUrl(), HttpMethod.POST, httpRequest, + P2pHubResponseModel.class); + httpResponse.getBody().setUpdated(true); + } catch(Exception httpServerErrorException){ + P2pHubResponseModel responseModel =new P2pHubResponseModel(); + responseModel.setUpdated(false); + responseModel.setErrorMessage(httpServerErrorException.getMessage()); + return responseModel; + } + return httpResponse.getBody(); + } + + public P2pHubResponseModel rejectPaymentInP2pHub( String authToken , Long p2pHubId) { + ResponseEntity httpResponse = null; + try { + HttpHeaders headers = new HttpHeaders(); + headers.setBearerAuth(authToken); + + HttpEntity httpRequest = new HttpEntity<>(headers); + httpResponse = restTemplate + .exchange(p2pHubRestClientConfiguration.getUrl()+"/"+p2pHubId, HttpMethod.DELETE, httpRequest, + P2pHubResponseModel.class); + httpResponse.getBody().setUpdated(true); + } catch(Exception httpServerErrorException){ + P2pHubResponseModel responseModel =new P2pHubResponseModel(); + responseModel.setErrorMessage(httpServerErrorException.getMessage()); + return responseModel; + } + return httpResponse.getBody(); + } + + public P2pHubRequestModel getPaymentFromP2pHub (Long p2pHubId, String authToken) { + ResponseEntity httpResponse = null; + try { + HttpHeaders headers = new HttpHeaders(); + headers.setBearerAuth(authToken); + + HttpEntity httpRequest = new HttpEntity<>(headers); + httpResponse = restTemplate + .exchange(p2pHubRestClientConfiguration.getUrl()+"/"+p2pHubId, HttpMethod.GET, httpRequest, + P2pHubRequestModel.class); + } catch(Exception httpServerErrorException){ + httpServerErrorException.printStackTrace(); + } + return httpResponse!= null? httpResponse.getBody():null; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/P2pOrderUpdaterServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/P2pOrderUpdaterServiceProvider.java new file mode 100644 index 0000000..0059c99 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/P2pOrderUpdaterServiceProvider.java @@ -0,0 +1,173 @@ +package eu.europa.eeas.erights.backoffice.service.provider.p2p; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.base.user.User; +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderResponseModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderStatusResponseModel; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.RequestJpaRepository; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.RequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.service.provider.gosselin.RatesWSService; +import eu.europa.eeas.erights.common.tools.p2p.OrderStatusEnum; +import eu.europa.eeas.erights.common.tools.statemachine.AbacRequestState; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.OrderStatusResponseTransferObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +public class P2pOrderUpdaterServiceProvider extends AbstractServiceProvider { + + public static final Logger logger = LoggerFactory.getLogger(P2pOrderUpdaterServiceProvider.class); + public static final String HR_SOURCE_DATA = "HR"; + public static final int ENTRY_INTO_STORAGE_CAT_ID = 3; + + private final RequestJpaRepository requestJpaRepository; + + private final RequestJpaServiceProvider requestJpaServiceProvider; + + private final AllowanceOrderConsumerServiceProvider allowanceOrderConsumerServiceProvider; + + private final DataServiceProviderRegistry dataServiceProviderRegistry; + + private final AbstractUserHandler userHandler; + + + @Autowired + public P2pOrderUpdaterServiceProvider(RequestJpaRepository requestJpaRepository, + RatesWSService ratesWSService, RequestJpaServiceProvider requestJpaServiceProvider, AllowanceOrderConsumerServiceProvider allowanceOrderConsumerServiceProvider, + AbstractUserHandler userHandler, + DataServiceProviderRegistry dataServiceProviderRegistry + ) { + this.requestJpaServiceProvider = requestJpaServiceProvider; + this.allowanceOrderConsumerServiceProvider = allowanceOrderConsumerServiceProvider; + + this.userHandler = userHandler; + + this.requestJpaRepository = requestJpaRepository; + + this.dataServiceProviderRegistry = dataServiceProviderRegistry; + + } + + public void doExecute() { + userHandler.setSystemUserAsUser(); + User user = userHandler.getUser(); + + List updatableRequests = requestJpaServiceProvider.findRequestsWithActiveP2pHubOrders(); + + logger.info("Requests To Update: {}", updatableRequests.size()); + updatableRequests + .forEach(this::updateP2pStatusOrder); + } + + + public RequestModel updateRequestP2pOrderStatusById(Long requestId) { + + RequestModel requestModel = requestJpaServiceProvider.get(requestId); + this.updateP2pStatusOrder(requestModel); + logger.info("Requests update manually: {}", requestModel.getRequestStringId()); + requestModel = requestJpaServiceProvider.get(requestId); + return requestModel; + } + + + + public void updateP2pStatusOrder(RequestModel requestModel) { + + try { + Long requestId = requestModel.getId(); + Long orderId = requestModel.getP2pHubOrderId(); + OrderStatusEnum previousOrderStatusEnum = requestModel.getP2pHubOrderStatus(); + + OrderStatusResponseTransferObject orderStatusResponseTransferObject = + allowanceOrderConsumerServiceProvider.getOrderStatus(orderId); + + if (orderStatusResponseTransferObject == null) { + logger.warn( + "Null status returned for order {} (request {}). Skipping.", + orderId, + requestId + ); + return; + } + + String orderComment = orderStatusResponseTransferObject.getOrderComment(); + OrderStatusEnum remoteOrderStatusEnum = + OrderStatusEnum.valueOf(orderStatusResponseTransferObject.getOrderStatus()); + String paymentDirectiveReference = orderStatusResponseTransferObject.getPaymentReference(); + + // --- MANUAL PAYMENT: update order status only, no request transition --- + if (requestModel.getAbacRequestState() == AbacRequestState.MANUAL_PAYMENT_SUMMA) { + triggerTransition( + "NO_TRANSITION", + remoteOrderStatusEnum, + orderComment, + paymentDirectiveReference, + requestId + ); + return; + } + + switch (remoteOrderStatusEnum) { + case SUCCESS: + triggerTransition( + "SUCCESS_IN_P2P", + remoteOrderStatusEnum, + orderComment, + paymentDirectiveReference, + requestId + ); + break; + + case ERR: + case REJ: + triggerTransition( + "ERROR_IN_P2P", + remoteOrderStatusEnum, + orderComment, + paymentDirectiveReference, + requestId + ); + break; + + // INIT, VERIF, EXEC, SENT_TO_P2P + default: + if (!previousOrderStatusEnum.equals(remoteOrderStatusEnum)) { + triggerTransition( + "NO_TRANSITION", + remoteOrderStatusEnum, + orderComment, + paymentDirectiveReference, + requestId + ); + } + break; + } + + } catch (Exception e) { + logger.error("Exception occurred updateP2pStatusOrder", e); + } + } + + + private void triggerTransition(String event, OrderStatusEnum remoteOrderStatusEnum,String orderComment,String paymentDirectiveReference, Long requestId) { + requestJpaServiceProvider.updateRequestP2pOrderStatus(event,remoteOrderStatusEnum,orderComment, paymentDirectiveReference, requestId); + + logger.info("Request {}: (placeholder) trigger {} transition , statusOrder {}", requestId, event , remoteOrderStatusEnum.getCode()); + } + + + +} + + + + + diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/PopTokenCache.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/PopTokenCache.java new file mode 100644 index 0000000..56d0bbc --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/PopTokenCache.java @@ -0,0 +1,44 @@ +package eu.europa.eeas.erights.backoffice.service.provider.p2p; + + +import java.time.Instant; +import java.util.concurrent.locks.ReentrantLock; + +public class PopTokenCache { + + private volatile String token; + private volatile Instant issuedAt; + private final ReentrantLock lock = new ReentrantLock(); + + private static final long TTL_SECONDS = 300; // from expires_in + private static final long REFRESH_AFTER_SECONDS = 270; // refresh after 270 s + + public String getOrRefresh(TokenSupplier supplier) throws Exception { + Instant now = Instant.now(); + + // Fast path: still valid + if (token != null && issuedAt != null && + now.isBefore(issuedAt.plusSeconds(REFRESH_AFTER_SECONDS))) { + return token; + } + + // Slow path: one thread refreshes, others wait + lock.lock(); + try { + now = Instant.now(); + if (token == null || issuedAt == null || + now.isAfter(issuedAt.plusSeconds(REFRESH_AFTER_SECONDS))) { + token = supplier.get(); // call your real generator + issuedAt = now; + } + return token; + } finally { + lock.unlock(); + } + } + + @FunctionalInterface + public interface TokenSupplier { + String get() throws Exception; + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/StateMachinePreviousStatesServiceProvider.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/StateMachinePreviousStatesServiceProvider.java new file mode 100644 index 0000000..b11152e --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/StateMachinePreviousStatesServiceProvider.java @@ -0,0 +1,53 @@ +package eu.europa.eeas.erights.backoffice.service.provider.p2p; + + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.StateMachinePreviousStatesEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.repository.StateMachinePreviousStateJpaRepository; +import eu.europa.eeas.erights.backoffice.service.model.StateMachinePreviousStateModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.P2pHubRequestModel; +import eu.europa.eeas.erights.common.data.jpa.entity.VPersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.VPersonJpaRepository; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.tools.statemachine.RequestEvent; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.UUID; + +@Service +@Transactional +public class StateMachinePreviousStatesServiceProvider extends AbstractDataServiceProvider + implements EntityReader { + + @Override + public Class getModelType() { + return StateMachinePreviousStateModel.class; + } + + @Override + public Class getEntityType() { + return StateMachinePreviousStatesEntity.class; + } + + public P2pHubRequestModel setActors(RequestModel requestModel , P2pHubRequestModel p2pHubRequestModel) { + p2pHubRequestModel.setInitiatingUserLogin(findUserBySmIdAndEvent(requestModel.getSmId(), RequestEvent.VERIFY).toUpperCase()); + p2pHubRequestModel.setVerifyingUserLogin(findUserBySmIdAndEvent(requestModel.getSmId(), RequestEvent.VERIFY).toUpperCase()); + p2pHubRequestModel.setCertifyingUserLogin(findUserBySmIdAndEvent(requestModel.getSmId(), RequestEvent.VERIFY).toUpperCase()); + return p2pHubRequestModel; + } + + public String findUserBySmIdAndEvent(UUID smid, RequestEvent event) { + StateMachinePreviousStateJpaRepository repository = getEntityRepositoryRegistry().getReaderRepositoryFor(StateMachinePreviousStatesEntity.class, + StateMachinePreviousStateJpaRepository.class); + return findPersonUserId(repository.findFirstBySmIdAndEventOrderById(smid,event).getSavedByUserId()); + } + + public String findPersonUserId(Long perId){ + VPersonJpaRepository personJpaRepository = getEntityRepositoryRegistry().getReaderRepositoryFor( + VPersonJpaEntity.class, VPersonJpaRepository.class); + VPersonJpaEntity person = personJpaRepository.findById(perId); + return person.getUserId(); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/SummaClient.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/SummaClient.java new file mode 100644 index 0000000..abab61f --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/service/provider/p2p/SummaClient.java @@ -0,0 +1,251 @@ +package eu.europa.eeas.erights.backoffice.service.provider.p2p; + +import eu.europa.eeas.ananke.core.base.mapping.bean.BeanMapper; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.AllowanceRequestInternalTransferObject; +import eu.europa.eeas.erights.backoffice.api.http.rest.transferobject.BusinessPartnerInternalTransferObject; +import eu.europa.eeas.erights.backoffice.boot.configuration.p2phub.P2pHubRestClientConfiguration; +import eu.europa.eeas.erights.backoffice.data.jpa.entity.p2phub.OrderErrorResponseJpaEntity; +import eu.europa.eeas.erights.backoffice.data.jpa.repository.p2pbhub.OrderErrorResponseJpaRepository; +import eu.europa.eeas.erights.backoffice.service.data.provider.p2phub.OrderErrorResponseJpaServiceProvider; +import eu.europa.eeas.erights.backoffice.service.data.provider.p2phub.P2pHubOrderErrorApiException; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.BusinessPartnerModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderErrorResponseModel; +import eu.europa.eeas.erights.backoffice.service.model.p2phub.OrderResponseModel; +import eu.europa.eeas.erights.web.p2phub.ApiClient; +import eu.europa.eeas.erights.web.p2phub.client.AllowancesRestApi; +import eu.europa.eeas.erights.web.p2phub.client.BusinessPartnersRestApi; +import eu.europa.eeas.erights.web.p2phub.client.transferobject.*; +import ma.glasnost.orika.MappingContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.HttpStatusCodeException; +import org.springframework.web.client.ResourceAccessException; +import org.springframework.web.client.RestClientException; + +import java.util.Optional; + +/** + * Small wrapper over the generated API. Keeps basePath and API creation in one place. + */ +@Component +public class SummaClient { + + public static final Logger log = LoggerFactory.getLogger(SummaClient.class); + private static final Logger P2P_LOG = LoggerFactory.getLogger("p2p"); + + private final ApiClient apiClient; + private final P2pHubRestClientConfiguration p2pConfig; + private final BeanMapper beanMapper; + private final OrderErrorResponseJpaServiceProvider orderErrorResponseJpaServiceProvider; + +// private final ObjectMapper objectMapper = new ObjectMapper() +// .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + + public SummaClient(ApiClient summaApiClient, + P2pHubRestClientConfiguration p2pHubRestClientConfiguration, + BeanMapper beanMapper, OrderErrorResponseJpaServiceProvider orderErrorResponseJpaServiceProvider) { + this.apiClient = summaApiClient; + this.p2pConfig = p2pHubRestClientConfiguration; + this.beanMapper = beanMapper; + this.orderErrorResponseJpaServiceProvider = orderErrorResponseJpaServiceProvider; + } + + + + + + public BusinessPartnerModel getByPersonIdModel(String personId) { + apiClient.setBasePath(p2pConfig.getUrl()); + + MappingContext context = new MappingContext.Factory().getContext(); + context.setProperty("perId", personId); + + BusinessPartnersRestApi api = new BusinessPartnersRestApi(apiClient); + + try { + BusinessPartnerResponseTransferObject response = + api.getBusinessPartnerByPersonId(personId); + + BusinessPartnerInternalTransferObject internal = + new BusinessPartnerInternalTransferObject(response); + + return beanMapper.map(internal, BusinessPartnerModel.class, context); + + } catch (HttpClientErrorException.NotFound e) { + // Return null or optional clean outcome + log.warn("No business partner found in P2P for personId {}", personId); + return null; + } catch (HttpClientErrorException e) { + log.error("Error calling P2P for personId {}: {}", personId, e.getMessage(), e); + throw e; // other errors bubble up as usual + } + } + + + public OrderResponseModel sendAllowanceRequestToP2p(AllowanceRequestInternalTransferObject allowanceRequestInternalTransferObject) { + + + // Set basePath here to avoid leaking config to callers + apiClient.setBasePath(p2pConfig.getUrl()); + + + + AllowancesRestApi api = new AllowancesRestApi(apiClient); + + OrderResponseTransferObject orderResponseTransferObject = null; + orderResponseTransferObject = api.submitAllowanceCreation(allowanceRequestInternalTransferObject); + + // --- Create and populate Orika MappingContext --- + MappingContext context = new MappingContext.Factory().getContext(); + context.setProperty("id", allowanceRequestInternalTransferObject.getId()); + context.setProperty("requestId", allowanceRequestInternalTransferObject.getRequestId()); + context.setProperty("perId", allowanceRequestInternalTransferObject.getPerId()); + + OrderResponseModel orderResponseModel = beanMapper.map(orderResponseTransferObject, OrderResponseModel.class,context); + + return orderResponseModel; + + } + + public Optional getByPersonIdResponseTransferObject(String personId) { + // Avoid leaking base URL outside this call + apiClient.setBasePath(p2pConfig.getUrl()); + BusinessPartnersRestApi api = new BusinessPartnersRestApi(apiClient); + + try { + BusinessPartnerResponseTransferObject res = api.getBusinessPartnerByPersonId(personId); + + if (res == null) { + log.warn("No BusinessPartner found for personId={}", personId); + return Optional.empty(); + } + + BusinessPartnerInternalTransferObject internal = new BusinessPartnerInternalTransferObject(res); + internal.setPerId(Long.valueOf(personId)); // set perId if applicable + return Optional.of(internal); + + } catch (HttpStatusCodeException ex) { + // 4xx/5xx from remote — keep full stack in standard log + log.error("P2P Hub call failed for personId={} (HTTP {} {}), endpoint=/business-partners", + personId, ex.getRawStatusCode(), ex.getStatusText(), ex); + + // Log the upstream response body in dedicated p2p.log + String body = ex.getResponseBodyAsString(); + P2P_LOG.error("HTTP {} {} | endpoint=/business-partners | personId={} | body={}", + ex.getRawStatusCode(), ex.getStatusText(), personId, body); + + return Optional.empty(); + + } catch (ResourceAccessException ex) { + // Timeouts / I/O + log.error("P2P Hub I/O error for personId={} | endpoint=/business-partners", personId, ex); + P2P_LOG.error("I/O error | endpoint=/business-partners | personId={} | message={}", + personId, ex.getMessage()); + return Optional.empty(); + + } catch (RestClientException ex) { + // Any other RestTemplate-level error + log.error("P2P Hub unexpected client error for personId={} | endpoint=/business-partners", personId, ex); + P2P_LOG.error("Unexpected client error | endpoint=/business-partners | personId={} | message={}", + personId, ex.getMessage()); + return Optional.empty(); + } + } + + public BusinessPartnerResponseTransferObject getByPersonIdTransferObject(String personId) { + // Set basePath here to avoid leaking config to callers + apiClient.setBasePath(p2pConfig.getUrl()); + + BusinessPartnersRestApi api = new BusinessPartnersRestApi(apiClient); + + BusinessPartnerResponseTransferObject BusinessPartnerResponseTransferObject = api.getBusinessPartnerByPersonId(personId); + + return beanMapper.map(BusinessPartnerResponseTransferObject, BusinessPartnerResponseTransferObject.class); + + } + + public OrderStatusResponseTransferObject getOrderStatusFromP2p(String orderId) { + apiClient.setBasePath(p2pConfig.getUrl()); + + AllowancesRestApi api = new AllowancesRestApi(apiClient); + return api.getAllowanceStatus(Integer.valueOf(orderId)); + + + } + + + public OrderResponseTransferObject submitAllowanceCreation( + AllowanceRequestInternalTransferObject request) { + + apiClient.setBasePath(p2pConfig.getUrl()); + AllowancesRestApi api = new AllowancesRestApi(apiClient); + + try { + ResponseEntity response = + api.submitAllowanceCreationWithHttpInfo(request); + + if (response.getStatusCode().is2xxSuccessful()) { + log.info("P2P success. RequestId={}", request.getRequestId()); + return response.getBody(); + } + + throw new HttpStatusCodeException( + response.getStatusCode(), + "Non-2xx response from P2P") {}; + + } catch (HttpStatusCodeException e) { + log.error("P2P HTTP error {} {} {}", + e.getRawStatusCode(), + e.getStatusText(), + e.getMessage(), + e); // full stack trace + throw e; + + } catch (ResourceAccessException e) { + log.error("P2P network error: {}", + e.getMessage(), + e); // full stack trace + throw e; + + } catch (Exception e) { + log.error("Unexpected error during P2P allowance creation. RequestId={}", + request.getRequestId(), + e); // full stack trace + throw e; + } + } + + + + + private void createAndPersistErrorResponse( + String message, + Long perId, + Long requestId) { + + OrderErrorResponseModel errorModel = new OrderErrorResponseModel(); + + errorModel.setMessage(message); + errorModel.setPerId(perId); + errorModel.setRequestId(requestId); + + orderErrorResponseJpaServiceProvider.create(errorModel); + + log.info("OrderErrorResponse persisted for perId={} requestId={}", + perId, requestId); + } + private static String safeBody(HttpStatusCodeException e) { + try { return e.getResponseBodyAsString(); } catch (Exception ignore) { return ""; } + } + + private static String trimForLog(String s) { + if (s == null) return ""; + String oneLine = s.replaceAll("\\s+", " ").trim(); + return oneLine.length() > 200 ? oneLine.substring(0, 200) + " …" : oneLine; + } +} \ No newline at end of file diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/MovementFileFieldNames.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/MovementFileFieldNames.java new file mode 100644 index 0000000..502909b --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/MovementFileFieldNames.java @@ -0,0 +1,16 @@ +package eu.europa.eeas.erights.backoffice.tools; + +public final class MovementFileFieldNames { + + public static final String MOVEMENT_FILE = "movement-file"; + + public static final String PERSON_ID = "perId"; + + public static final String JOB_ID = "jobId"; + + public static final String MOVEMENT_CONTEXT = "movementContext"; + + private MovementFileFieldNames() { + + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/p2phub/PayMethodEnum.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/p2phub/PayMethodEnum.java new file mode 100644 index 0000000..8a8d06a --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/p2phub/PayMethodEnum.java @@ -0,0 +1,48 @@ +package eu.europa.eeas.erights.backoffice.tools.p2phub; + + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * Enumeration for payment methods. + * + * Possible values: + * P – Payment + * S – Settlement + * A – Advance + * C – Correction + * D – Deduction + * G – Grant + */ +public enum PayMethodEnum { + + P("P"), + S("S"), + A("A"), + C("C"), + D("D"), + G("G"); + + private final String value; + + PayMethodEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @JsonCreator + public static PayMethodEnum fromValue(String value) { + for (PayMethodEnum e : PayMethodEnum.values()) { + if (e.value.equalsIgnoreCase(value)) { + return e; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } +} + diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/AccommodationBankAccountsSyncJob.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/AccommodationBankAccountsSyncJob.java new file mode 100644 index 0000000..b9acae5 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/AccommodationBankAccountsSyncJob.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.backoffice.tools.scheduler; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.scheduler.AbstractJob; +import eu.europa.eeas.erights.backoffice.service.provider.allowances.AccommodationBankAccountsSyncService; +import lombok.RequiredArgsConstructor; +import org.quartz.JobExecutionContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author ienaccat + * @since 5.0.0 + */ +@RequiredArgsConstructor +public class AccommodationBankAccountsSyncJob extends AbstractJob { + + public static final Logger logger = LoggerFactory.getLogger(AccommodationBankAccountsSyncJob.class); + + + private final AccommodationBankAccountsSyncService accommodationBankAccountsSyncService; + private final AbstractUserHandler userHandler; + + @Override + protected void doExecute(JobExecutionContext jobExecutionContext) { + userHandler.setSystemUserAsUser(); + logger.info("AccommodationBankAccountsSyncJob STARTING ........."); + accommodationBankAccountsSyncService.findStaffMembersAndSyncBankAccounts(); + logger.info("AccommodationBankAccountsSyncJob END ........."); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/AccommodationCreatePaymentJob.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/AccommodationCreatePaymentJob.java new file mode 100644 index 0000000..4463229 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/AccommodationCreatePaymentJob.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.backoffice.tools.scheduler; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.scheduler.AbstractJob; +import eu.europa.eeas.erights.common.service.provider.allowances.AccommodationDeclarationAllowanceJpaServiceProvider; +import lombok.RequiredArgsConstructor; +import org.quartz.JobExecutionContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author ienaccat + * @since 5.0.0 + */ +@RequiredArgsConstructor +public class AccommodationCreatePaymentJob extends AbstractJob { + + public static final Logger logger = LoggerFactory.getLogger(AccommodationCreatePaymentJob.class); + + private final AccommodationDeclarationAllowanceJpaServiceProvider accommodationDeclarationService; + private final AbstractUserHandler userHandler; + + + @Override + protected void doExecute(JobExecutionContext jobExecutionContext) { + userHandler.setSystemUserAsUser(); + logger.info("AccommodationCreatePaymentJob STARTING ........."); + accommodationDeclarationService.findEligibleDeclarationsAndCreatePayment(); + logger.info("AccommodationCreatePaymentJob END ........."); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/BankAccountUpdaterJob.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/BankAccountUpdaterJob.java new file mode 100644 index 0000000..8842085 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/BankAccountUpdaterJob.java @@ -0,0 +1,33 @@ +package eu.europa.eeas.erights.backoffice.tools.scheduler; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.scheduler.AbstractJob; +import eu.europa.eeas.erights.backoffice.service.provider.p2p.BusinessPartnerConsumerServiceProvider; +import org.quartz.JobExecutionContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +public class BankAccountUpdaterJob extends AbstractJob { + + public static final Logger logger = LoggerFactory.getLogger(BankAccountUpdaterJob.class); + + @Autowired + private BusinessPartnerConsumerServiceProvider service; + + @Autowired + private AbstractUserHandler userHandler; + + @Override + protected void doExecute(JobExecutionContext jobExecutionContext) { + logger.info("Bank account updater cron has started."); + try { + userHandler.setSystemUserAsUser(); + service.saveOrUpdateBankAccountsForAllMovementFilesBankAccountsFromSumma(); + + } catch (Exception e) { + logger.error("Exception when trying to update bank accounts", e); + } + logger.info("Bank account updater cron has finished."); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/ClearingRequestEmailNotificationJob.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/ClearingRequestEmailNotificationJob.java new file mode 100644 index 0000000..1cfc6c4 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/ClearingRequestEmailNotificationJob.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.backoffice.tools.scheduler; + +import eu.europa.eeas.ananke.core.base.exception.ServerInternalException; +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.scheduler.AbstractJob; +import eu.europa.eeas.erights.backoffice.exceptionhandling.ERightsBackOfficeExceptionCode; +import eu.europa.eeas.erights.backoffice.service.provider.ClearingEmailNotificationSenderProvider; +import org.quartz.JobExecutionContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +public class ClearingRequestEmailNotificationJob extends AbstractJob { + + public static final Logger logger = LoggerFactory.getLogger(ClearingRequestEmailNotificationJob.class); + + @Autowired + private ClearingEmailNotificationSenderProvider clearingEmailNotificationSenderProvider; + + @Autowired + private AbstractUserHandler userHandler; + + @Override + protected void doExecute(JobExecutionContext jobExecutionContext) { + try { + logger.info("Clearing Email Notification Sender cron has started"); + userHandler.setSystemUserAsUser(); + clearingEmailNotificationSenderProvider.execute(); + } catch (Exception e) { + logger.error("Exception when trying to send clearing request reminders", e); + logException(new ServerInternalException(ERightsBackOfficeExceptionCode.ERBO004, e)); + } + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/EmailNotificationsUpdaterJob.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/EmailNotificationsUpdaterJob.java new file mode 100644 index 0000000..5fac61e --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/EmailNotificationsUpdaterJob.java @@ -0,0 +1,42 @@ +package eu.europa.eeas.erights.backoffice.tools.scheduler; + +import eu.europa.eeas.ananke.core.base.exception.ServerInternalException; +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.scheduler.AbstractJob; +import eu.europa.eeas.erights.backoffice.exceptionhandling.ERightsBackOfficeExceptionCode; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import org.quartz.JobExecutionContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +public class EmailNotificationsUpdaterJob extends AbstractJob { + + public static final Logger logger = LoggerFactory.getLogger(NightlyUpdaterJob.class); + + @Autowired + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @Autowired + private AbstractUserHandler userHandler; + + @Override + protected void doExecute(JobExecutionContext jobExecutionContext) { + userHandler.setSystemUserAsUser(); + try { + emailEdmsServiceProvider.updateMFNotificationsWithLatestStatusAndSendReport( + NotificationTemplateCode.REPORT_FAILED_COMMS); + } catch (Exception e) { + logException(new ServerInternalException(ERightsBackOfficeExceptionCode.ERBO005, e)); + } + + try { + emailEdmsServiceProvider.updateRequestNotificationsWithLatestStatusAndSendReport( + NotificationTemplateCode.REPORT_FAILED_COMMS); + } catch (Exception e) { + logException(new ServerInternalException(ERightsBackOfficeExceptionCode.ERBO006, e)); + } + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/InstallationRequestUpdaterJob.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/InstallationRequestUpdaterJob.java new file mode 100644 index 0000000..2731d5f --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/InstallationRequestUpdaterJob.java @@ -0,0 +1,34 @@ +package eu.europa.eeas.erights.backoffice.tools.scheduler; + +import eu.europa.eeas.ananke.core.base.exception.ServerInternalException; +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.scheduler.AbstractJob; +import eu.europa.eeas.erights.backoffice.exceptionhandling.ERightsBackOfficeExceptionCode; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.InstallationRequestUpdaterServiceProvider; +import org.quartz.JobExecutionContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +public class InstallationRequestUpdaterJob extends AbstractJob { + + public static final Logger logger = LoggerFactory.getLogger(InstallationRequestUpdaterJob.class); + + @Autowired + private AbstractUserHandler userHandler; + + @Autowired + private InstallationRequestUpdaterServiceProvider installationUpdaterServiceProvider; + + @Override + protected void doExecute(JobExecutionContext jobExecutionContext) { + try { + logger.info("Installation updater cron has started"); + userHandler.setSystemUserAsUser(); + installationUpdaterServiceProvider.updateInstallations(); + + } catch (Exception ex) { + logException(new ServerInternalException(ERightsBackOfficeExceptionCode.ERBO003, ex)); + } + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/NightlyUpdaterJob.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/NightlyUpdaterJob.java new file mode 100644 index 0000000..ee0cfce --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/NightlyUpdaterJob.java @@ -0,0 +1,53 @@ +package eu.europa.eeas.erights.backoffice.tools.scheduler; + +import eu.europa.eeas.ananke.core.base.exception.ServerInternalException; +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.scheduler.AbstractJob; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.backoffice.exceptionhandling.ERightsBackOfficeExceptionCode; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import org.quartz.JobExecutionContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * Nightly updater scheduler job is used to perform each night at 12 AM an update to all the movement files that are in a CONFIRMED + * state. + * If the movement file start date is in the future, it will be automatically shift to the ONGOING state. + * + * @author imironiu + */ +public class NightlyUpdaterJob extends AbstractJob { + + public static final Logger logger = LoggerFactory.getLogger(NightlyUpdaterJob.class); + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + private AbstractUserHandler userHandler; + + @Override + protected void doExecute(JobExecutionContext jobExecutionContext) { + logger.info("Nightly updater cron has started."); + + MovementFileJpaServiceProvider movementFileProvider = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(MovementFileModel.class); + + try { + userHandler.setSystemUserAsUser(); + movementFileProvider.updateConfirmedMovementFilesToOngoingState(); + } catch (Exception ex) { + logException(new ServerInternalException(ERightsBackOfficeExceptionCode.ERBO003, ex)); + } + + try { + movementFileProvider.sendRemainderEmails(); + } catch (Exception e) { + logException(new ServerInternalException(ERightsBackOfficeExceptionCode.ERBO002, e)); + } + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/P2pOrderUpdaterJob.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/P2pOrderUpdaterJob.java new file mode 100644 index 0000000..af4f263 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/P2pOrderUpdaterJob.java @@ -0,0 +1,27 @@ +package eu.europa.eeas.erights.backoffice.tools.scheduler; + +import eu.europa.eeas.ananke.core.scheduler.AbstractJob; +import eu.europa.eeas.erights.backoffice.service.provider.p2p.P2pOrderUpdaterServiceProvider; +import eu.europa.eeas.erights.common.boot.configuration.data.ERightsRootConfiguration; +import org.quartz.JobExecutionContext; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class P2pOrderUpdaterJob extends AbstractJob { + + private final P2pOrderUpdaterServiceProvider p2pOrderUpdaterServiceProvider; + private final ERightsRootConfiguration eRightsRootConfiguration; + + @Autowired + public P2pOrderUpdaterJob(P2pOrderUpdaterServiceProvider p2pOrderUpdaterServiceProvider, + ERightsRootConfiguration eRightsRootConfiguration) { + this.p2pOrderUpdaterServiceProvider = p2pOrderUpdaterServiceProvider; + this.eRightsRootConfiguration = eRightsRootConfiguration; + } + + @Override + protected void doExecute(JobExecutionContext jobExecutionContext) { + p2pOrderUpdaterServiceProvider.doExecute(); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/PostingTravelAllowanceTransitionJob.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/PostingTravelAllowanceTransitionJob.java new file mode 100644 index 0000000..30d8b96 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/PostingTravelAllowanceTransitionJob.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.backoffice.tools.scheduler; + +import eu.europa.eeas.ananke.core.scheduler.AbstractJob; +import eu.europa.eeas.erights.common.service.data.provider.PostingTravelAllowanceTransitionService; +import org.quartz.JobExecutionContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +public class PostingTravelAllowanceTransitionJob extends AbstractJob { + + public static final Logger logger = LoggerFactory.getLogger(PostingTravelAllowanceTransitionJob.class); + + @Autowired + private PostingTravelAllowanceTransitionService postingTravelAllowanceTransitionService; + + @Override + protected void doExecute(JobExecutionContext jobExecutionContext) { + postingTravelAllowanceTransitionService.execute(); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/RateMissingUpdaterJob.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/RateMissingUpdaterJob.java new file mode 100644 index 0000000..82e03d4 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/RateMissingUpdaterJob.java @@ -0,0 +1,28 @@ +package eu.europa.eeas.erights.backoffice.tools.scheduler; + +import eu.europa.eeas.ananke.core.scheduler.AbstractJob; +import eu.europa.eeas.erights.backoffice.service.provider.RatesMissingUpdaterServiceProvider; +import eu.europa.eeas.erights.common.boot.configuration.data.ERightsRootConfiguration; +import org.quartz.JobExecutionContext; +import org.springframework.beans.factory.annotation.Autowired; + +public class RateMissingUpdaterJob extends AbstractJob { + + private final RatesMissingUpdaterServiceProvider ratesMissingUpdaterServiceProvider; + + private final ERightsRootConfiguration eRightsRootConfiguration; + + @Autowired + public RateMissingUpdaterJob(RatesMissingUpdaterServiceProvider ratesMissingUpdaterServiceProvider, ERightsRootConfiguration eRightsRootConfiguration) { + this.ratesMissingUpdaterServiceProvider = ratesMissingUpdaterServiceProvider; + this.eRightsRootConfiguration = eRightsRootConfiguration; + } + + @Override + protected void doExecute(JobExecutionContext jobExecutionContext) { + if (eRightsRootConfiguration.isGosselinActive()) { + ratesMissingUpdaterServiceProvider.doExecute(); + } + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/TravelAllowanceCreationJob.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/TravelAllowanceCreationJob.java new file mode 100644 index 0000000..913323f --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/TravelAllowanceCreationJob.java @@ -0,0 +1,31 @@ +package eu.europa.eeas.erights.backoffice.tools.scheduler; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.scheduler.AbstractJob; +import eu.europa.eeas.erights.common.service.provider.allowances.TravelAllowanceServiceProvider; +import org.quartz.JobExecutionContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +public class TravelAllowanceCreationJob extends AbstractJob { + + public static final Logger logger = LoggerFactory.getLogger(TravelAllowanceCreationJob.class); + + @Autowired + private TravelAllowanceServiceProvider travelAllowanceServiceProvider; + + + @Autowired + private AbstractUserHandler userHandler; + + @Override + protected void doExecute(JobExecutionContext jobExecutionContext) { + userHandler.setSystemUserAsUser(); + logger.info("TravelAllowanceCreationJob STARTING ........."); + travelAllowanceServiceProvider.createAllTravelAllowances(Integer.MAX_VALUE); + logger.info("TravelAllowanceCreationJob END ........."); + + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/TudFareUpdaterJob.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/TudFareUpdaterJob.java new file mode 100644 index 0000000..a16d2c7 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/tools/scheduler/TudFareUpdaterJob.java @@ -0,0 +1,26 @@ +package eu.europa.eeas.erights.backoffice.tools.scheduler; + +import eu.europa.eeas.ananke.core.scheduler.AbstractJob; +import eu.europa.eeas.erights.backoffice.service.provider.TudFareUpdaterProvider; +import org.quartz.JobExecutionContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +public class TudFareUpdaterJob extends AbstractJob { + + public static final Logger logger = LoggerFactory.getLogger(TudFareUpdaterJob.class); + + private final TudFareUpdaterProvider tudFareUpdaterProvider; + + @Autowired + public TudFareUpdaterJob(TudFareUpdaterProvider tudFareUpdaterProvider) { + this.tudFareUpdaterProvider = tudFareUpdaterProvider; + } + + @Override + protected void doExecute(JobExecutionContext jobExecutionContext) { + tudFareUpdaterProvider.execute(); + } + +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/web/p2phub/auth/EuLoginTokenService.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/web/p2phub/auth/EuLoginTokenService.java new file mode 100644 index 0000000..ce965f0 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/web/p2phub/auth/EuLoginTokenService.java @@ -0,0 +1,85 @@ +package eu.europa.eeas.erights.backoffice.web.p2phub.auth; + +import com.nimbusds.jose.JOSEException; +import com.nimbusds.jose.JWSAlgorithm; +import com.nimbusds.jose.jwk.ECKey; +import com.nimbusds.jose.jwk.JWK; +import com.nimbusds.jose.jwk.JWKSet; +import com.nimbusds.oauth2.sdk.auth.ClientAuthenticationMethod; +import eu.europa.ec.ecas.client.oidc.ClientKeyGenerator; +import eu.europa.ec.ecas.client.oidc.OidcScriptClient; +import eu.europa.eeas.erights.backoffice.boot.configuration.p2phub.P2pHubRestClientConfiguration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +// If you also catch java.text.ParseException, fully qualify it in the catch +// to avoid clashing with com.nimbusds.oauth2.sdk.ParseException + +// Adjust these two imports to your actual classes/packages: + + +@Service // remove if not using Spring +public class EuLoginTokenService { + + private static final Logger logger = LoggerFactory.getLogger(EuLoginTokenService.class); + + private final P2pHubRestClientConfiguration p2pHubRestClientConfiguration; + + // Use constructor injection; if not on Spring, instantiate manually. + public EuLoginTokenService(P2pHubRestClientConfiguration p2pHubRestClientConfiguration) { + this.p2pHubRestClientConfiguration = p2pHubRestClientConfiguration; + } + + /** + * Builds a PoP access token using EU-Login (PRIVATE_KEY_JWT + EdDSA). + * Returns an empty string on failure (same behavior as your current code). + */ + public String getSystemPoPToken() { + String popToken = ""; + String euloginOidcPrivateKey = p2pHubRestClientConfiguration.getEuloginOidcPrivateKey().getValue(); + String euloginOidcClientId = p2pHubRestClientConfiguration.getEuloginOidcClientId().getValue(); + String restClientId = p2pHubRestClientConfiguration.getRestClientId().getValue(); + String euloginOidcJwkKid = p2pHubRestClientConfiguration.getEuloginOidcJwkKid().getValue(); + try { + // 1) Load client private key (JWK) and select by kid + JWK clientPrivateKey = JWKSet + .parse(euloginOidcPrivateKey.replace("\\\\", "")) + .getKeyByKeyId(euloginOidcJwkKid); + + // 2) Create OIDC client (private_key_jwt, EdDSA) against the EU-Login token endpoint + OidcScriptClient oidcScriptClient = OidcScriptClient.builder() + .clientId(euloginOidcClientId.toCharArray()) + .clientPrivateKey(clientPrivateKey) + .tokenEndpointUrl(p2pHubRestClientConfiguration.getEuloginOidcTokenEndpoint()) + .tokenEndpointAuthJWSAlg(JWSAlgorithm.EdDSA) + .tokenEndpointAuthMethod(ClientAuthenticationMethod.PRIVATE_KEY_JWT) + .build(); + + // 3) (Optional) Obtain bearer access token if you need it for diagnostics + String bearerAccessToken = + oidcScriptClient.getBearerAccessToken(euloginOidcClientId); + logger.debug("[EU-LOGIN] bearerAccessToken = {}", bearerAccessToken); + + // 4) Generate ephemeral PoP key pair (EC) and request PoP token for your resource server (audience) + ECKey popKeyPair = new ClientKeyGenerator().generatePoPEcKeyPair(); + ECKey publicPopKey = popKeyPair.toPublicJWK(); + + popToken = oidcScriptClient.getPopAccessToken( + restClientId, // audience / resource identifier + publicPopKey + ); + logger.debug("[EU-LOGIN] popToken = {}", popToken); + + } catch (java.text.ParseException + | com.nimbusds.oauth2.sdk.ParseException + | java.io.IOException + | JOSEException e) { + logger.error("[EU-LOGIN] Not able to retrieve popToken", e); + } + + logger.debug("[EU-LOGIN] popToken generated and is: {}", popToken); + return popToken; + } +} + diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/web/p2phub/auth/P2PHubSslFactory.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/web/p2phub/auth/P2PHubSslFactory.java new file mode 100644 index 0000000..99f3508 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/web/p2phub/auth/P2PHubSslFactory.java @@ -0,0 +1,74 @@ +package eu.europa.eeas.erights.backoffice.web.p2phub.auth; + +import eu.europa.eeas.erights.backoffice.boot.configuration.p2phub.P2pHubRestClientConfiguration; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.io.ResourceLoader; + +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManagerFactory; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.security.KeyStore; + +public class P2PHubSslFactory { + public static final Logger logger = LoggerFactory.getLogger(P2PHubSslFactory.class); + private final ResourceLoader resourceLoader; + private final P2pHubRestClientConfiguration props; + + public P2PHubSslFactory(ResourceLoader resourceLoader, P2pHubRestClientConfiguration props) { + this.resourceLoader = resourceLoader; + this.props = props; + } + + public SSLContext buildSslContext() { + String location = props.getKeyStore(); // e.g. "classpath:certs/j905b1e.p12" or "/opt/app/certs/j905b1e.p12" + char[] password = props.getKeyStorePassword().toCharArray(); + + try (InputStream in = openKeystore(location)) { + KeyStore ks = KeyStore.getInstance(props.getKeyStoreType()); + ks.load(in, password); + + KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); + kmf.init(ks, password); + + TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + tmf.init((KeyStore) null); // system CAs; change if you need a custom truststore + + SSLContext sc = SSLContext.getInstance("TLS"); + sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); + return sc; + } catch (Exception e) { + throw new RuntimeException("Failed to build SSLContext from " + location, e); + } + + } + private InputStream openKeystore(String location) throws IOException { + final String prefix = "classpath:"; + if (location.startsWith(prefix)) { + String cp = location.substring(prefix.length()); // "certs/j905b1e.p12" + InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(cp); + if (is == null) throw new FileNotFoundException("Classpath resource not found: " + cp); + return is; + } + return Files.newInputStream(Paths.get(location)); // filesystem path + } + + public SSLConnectionSocketFactory buildSocketFactory(SSLContext sslContext) { + return new SSLConnectionSocketFactory( + sslContext, + new String[]{"TLSv1.3", "TLSv1.2"}, // supported protocols + null, // all supported cipher suites + SSLConnectionSocketFactory.getDefaultHostnameVerifier() + ); + } + + private static char[] toChars(String s) { + return s == null ? null : s.toCharArray(); + } +} diff --git a/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/web/p2phub/auth/PoPAuthentication.java b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/web/p2phub/auth/PoPAuthentication.java new file mode 100644 index 0000000..75d0b29 --- /dev/null +++ b/e-rights-back-office/src/main/java/eu/europa/eeas/erights/backoffice/web/p2phub/auth/PoPAuthentication.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.backoffice.web.p2phub.auth; + +import eu.europa.eeas.erights.web.p2phub.auth.Authentication; +import org.springframework.http.HttpHeaders; +import org.springframework.util.MultiValueMap; + +import java.util.function.Supplier; + +/** Injects Authorization: PoP on each request. */ +public class PoPAuthentication implements Authentication { + + private final Supplier tokenSupplier; + private final String headerName; // usually "Authorization" + private final String schemePrefix; // "PoP " or "Bearer " + + public PoPAuthentication(Supplier tokenSupplier) { + this(tokenSupplier, "Authorization", "PoP "); + } + + public PoPAuthentication(Supplier tokenSupplier, String headerName, String schemePrefix) { + this.tokenSupplier = tokenSupplier; + this.headerName = headerName; + this.schemePrefix = schemePrefix; + } + + @Override + public void applyToParams(MultiValueMap queryParams, + HttpHeaders headerParams, + MultiValueMap cookieParams) { + String token = tokenSupplier.get(); + if (token != null && !token.isEmpty()) { + headerParams.set(headerName, schemePrefix + token); + } + } +} diff --git a/e-rights-back-office/src/main/resources/META-INF/spring-devtools.properties b/e-rights-back-office/src/main/resources/META-INF/spring-devtools.properties new file mode 100644 index 0000000..8bdfd05 --- /dev/null +++ b/e-rights-back-office/src/main/resources/META-INF/spring-devtools.properties @@ -0,0 +1 @@ +restart.include.ananke=/ananke-[\\w\\d-\.]+\.jar \ No newline at end of file diff --git a/e-rights-back-office/src/main/resources/application-acceptance.yml b/e-rights-back-office/src/main/resources/application-acceptance.yml new file mode 100644 index 0000000..dbb4bfa --- /dev/null +++ b/e-rights-back-office/src/main/resources/application-acceptance.yml @@ -0,0 +1,213 @@ +############ +# e-RIGHTS # +############ + +application: + protocol: HTTPS + host-name: webgate.acceptance.ec.testa.eu + test-mailbox: Martial-Franck.TCHEPGANG@ext.eeas.europa.eu + proxy-host: ps-lux-usr.cec.eu.int + proxy-port: 8012 + proxy-user: a00jqdke + proxy-pass: JkUjhA789ghL + gosselin-host: https://eeas.gosselingroup.eu + gosselin-path: /EEAS/rateTEST.php + gosselin-api-key: 60d8def0a9f5bebd66c78825ec14dd5e + gosselin-api-id: RequestorEEAS + gosselin-active: true + environment: ACCEPTANCE + sysper-api-key-header-name: testkey + sysper-proxy-ticket-header-name: proxy-ticket + sysper-api-key: 3bbf6f17-e113-4a16-acfc-a20dd656cac4 + sysper-base-path: https://api.acceptance.tech.ec.europa.eu/acceptance/SYSPER2/ajax + sysper-service-url: http://sysper2-t13.cc.cec.eu.int:7129/SYSPER2/ajax + sysper-context-path: /erights + +resilience4j.retry: + configs: + default: + maxAttempts: 3 + waitDuration: 100 + retryExceptions: + - org.springframework.web.client.HttpServerErrorException + - java.util.concurrent.TimeoutException + - java.net.SocketException + - java.io.IOException + - eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException + instances: + paymentExistSysper: + baseConfig: default + createSysper: + baseConfig: default +########## +# Spring # +########## + +management: + endpoints: + web: + exposure: + include: '*' + +############### +# Ananke Core # +############### + +base: + money: + currencies: + - code: STN + default-fraction-digits: 2 + numeric-code: 930 + - code: UYW + default-fraction-digits: 4 + numeric-code: 927 + +connector: + http: + secure: + socket-timeout: + value: 10 + time-unit: SECONDS + connection-timeout: + value: 10 + time-unit: SECONDS + connection-pool: + max-size: 20 + max-size-per-route: 20 + time-to-live: + value: 5 + time-unit: SECONDS + jms: + connection-factory: + broker-url: t3://localhost:1042 + jndi-factory-class-name: weblogic.jndi.WLInitialContextFactory + jndi-name: jms/erightsConnectionFactory + credentials: + enable: true + username: LSY_ERIGHT + password: gjO*&.x4@i^'kd#yQ + class-name: org.springframework.jndi.JndiObjectFactoryBean + queue: + jaxb: + enable: true + enable-mock: false + +data: + jpa: + show-sql: false + format-sql: false + connection-pool: + min-size: 10 + max-size: 20 + +security: + api: + http: + authentication: + managed: + assurance-level: HIGH + accept-strengths: PASSWORD + server: + protocol: ${application.protocol} + host-name: ${application.host-name} + ssl-port: 443 + security-headers: + content-security-policy: + policy-directives: default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://uap.dev.eeas.europa.eu; style-src 'self' 'unsafe-inline' ; img-src * data:; font-src 'self' data:; connect-src 'self' https://uap.dev.eeas.europa.eu; media-src 'none'; object-src 'self'; child-src 'self'; frame-ancestors 'self'; form-action 'self' webgate.ec.europa.eu:* ecas.cc.cec.eu.int:* intragate.test.ec.europa.eu:*; upgrade-insecure-requests; block-all-mixed-content; sandbox allow-downloads allow-forms allow-same-origin allow-scripts allow-popups allow-modals; base-uri 'self'; manifest-src 'self'; plugin-types application/pdf + + eu-login-server: + direct: + host-name: webgate.acceptance.ec.testa.eu + one-way-ssl-port: 443 + ticket: + proxy: + requestor: + type: FIXED + fixed: + source: BASE + +################ +# Ananke Tools # +################ + +hermes-connector: + environment: TEST + ecas: + environment: ACCEPTANCE + + +file-management: + file-system: + path: + root-folder: /ec/local/weblogic/app/files/file-management + + +# ------------------------------------------------- + +# e-DMS REST requests settings: All fields mandatory if enabled = true +edms: + enabled: true + + # Unused: We use "application: mailbox:" in application.yml + message-from: Unused + + # From the generated JWKS keys take kid value PublicJWKS + eulogin-oidc-jwk-kid: encrypted:WUPgynZQ/lc/1FY0bCX+KNEZnqZsYU70lzktos0oLbfvmNJnpeVpSXjT637Z2fK4XHMlFc0RkV9A6xGjKIPeNEu/aNZCA7Bw2PKMzizAGOQs4L5wAzGkTK4xPiZMRKaokFVUZItkN585HtLfn7VOsAQENIzmebTHSB2pE0ux4k3xNEvUPSomVhZwNqjv9NtEZmyJdZorQJKneX8eZJ8cbIHp4ij4KV10b2d8cvQXbky2urcccKmiiOe1FGoZuGDlASSuSp6awBQ71YsCatp24LU6OCccmJVmOQQmkPeaZtNOk4VhKG/raRJQMNjZCCeB2XB1ZY3GFTe3+yB5pfyh/3VRcyxvqB7i66SmpGBOeNxpMhfsK7+O2o72AW/JhIJpZX0Yyo9QbwLM69H7Ar80kCN86drch0+xpzSQB/0InxCSGoVK3ywSQNFAIIaYl9N4H41vyli7L/CQHyALNPqSx8z9kkEsOHw4ZydAzRas19jW0/fqVCzLXUqb+lcZNEBrpnW8SxRIpbw14V1yZU2cCHJ5MgPt6JTcBxtrsNcIZvWYJE5nCQYWnXmILpMmU307BVLPKwfqx1sg3YcZczzTL9y4+At0iFlOuexql/IQt1gZ5Q11hwJkaETq16yq1A1D6+FvQBBQyn25Qjm5EPYyCGfwPdueVsof0U93rqaRkng=|ZDG30WWIWJt2RoJhVd2DV6vXaUtPtExKChga+cDF9sXzTv/szytMzbN2/NibH8ovARZo4IvHiaVQNf2E2iBMJQ== + + # From the generated JWKS keys take, kid and x values from PublicJWKS, and d value from Private JWKS + eulogin-oidc-private-key: encrypted:faXzxbncs+uFRc2czJpb5NGAAomkttkGzPlq5sfsyklxy9AAtECgGjb2Mr7j20ApW/ejuI2DKz+qIrWkJ9MmCR6+xtZALuzzY/v3EAncnXZJkAm+YU3W+s3znQ9lZ5gEDSH+sKPFIvSkeZx4+Y1u4XwvwSbgLdxCvni2urVBGIqtg91XjijXnW9frZtD5foeFwRmXRKXRYr9gdM7Sti4o7LQagwJne+6J4WwD3FSRQt78SFukcbcYFAXpD66vkVsWwXh5uAgZBrcd1IevVW0I1jpMiJr0TwCFfOdBAilaQWu+IdpIPHX5ckd6qdLgem+2h/9n4qwOaUT1WrejudRROnL2Khrb7PUEN1dnmIwivwzr3yiZp1h/9mlz7za7WpBETlINfiF+jv5VWU0dpaFL8gdu9R8i7yOxkY2PWGkG3jMPmADJ1czOTtUDD2ZVL5lT7H0L91yPB3DiPgAZRJC6DOmbsp72fPIae8WIWkNxhdUKoaqZ00A1yg9XkJrIkAhQyvDrgxpsImUVsNs9skjPoY49qLaXctdbfoUP5aT2f+FG6+GJPMhznDtAPjQ4YqtmrQT70b4TlwHsUubM0pgd1IxRmVxxNeaPReSRa9GQe8UiS/HnJo6H0l1MUHCsMqqtLiWzi8eESwIKKmaa5Gp87VLIUPY74oCZTVFyn72C6U=|weg0CPlamml2ysvAolv/oJcnEQbkOriwdlNnYfwwRJ/Oug8LT8NtrgFIzL7vogbapKdPS+lG0yW7HLRviEKCCA== + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:huQAI8F4mbg+uJJEkhGXaOFQlF/XJS9kXQ3FaReUETatEFlkIcFvohqNpOvJhExpNG0jy9NuJkZI8N+pPyWiAcag2I92C0aKxrczgK5tVm0Gj43FSIuEAf/2HXxQW3DS8aPKtTJ2u1mambVbs7CzZaoRSWo+RHfXZhQloqMK6czOnSuc7aIuvafar5PQTtUicG1IAKn7uDUVFFyxozXP+l3qH3B2Bac5K0YUPcgi8+/zvHUZ/H+hxdZs+KaXWB8ItDCuhbvyvPwA6kjkQcJl86gBiCkBbVSX56NIT+8pXdYxl9wVH4N9sLf85lWY9e+9DIi51dAvsJCNwyNvvq3AcpO7IQHr1kDeStfEH9maeCakuO4BqxTE9iqcO0n2MO5V/XB2xVAihcQF2YE0utSFNLylstkLRQZXtLqGIMOIpX8xaAMUM9GUxGkpkusPHYWVek/cKU135yOPdHgbCcROLLu9QlnkgFmqfvOH3m5ZCFfVAM52+iuXGIV0isZJSSp4xh3uwJV8lzpAmBtRxdBIxCy7cGLaX1MKWsWpMPPCwDe8n3qwbo2qTim8hbqVtOVrbVSIa4Ju9iGDLBwuo/HKOTCo3NyfDt426XEzPLfrjmVXMLxkZsILq/LpbRxDYCz4GtGLUIo2ppEQ49ZdmxW6Zc57J/ifNbmA11X0g5pwamU=|Gh46ZtreuugTBJsWJ4K77Opk2lLPpuHmw09gNfEGCKiYBphs4GHfYG61yIpUimcsZOeI626q85R4Qk1arfwNLw== + + eulogin-oidc-token-endpoint: https://ecas.acceptance.ec.europa.eu/cas/oauth2/token + + # Rest config (previously with "rest:", now with prefix "rest-") + # ------------------------------------- + rest-pop-token-provider: edmsLoginPoPTokenProvider + # rest-send-messages-url: https://intragate.test.ec.europa.eu/e-dms-rest + rest-send-messages-url: https://webgate.acceptance.ec.testa.eu/e-dms-rest + # OIDC Client ID - It should be provided by the e-DMS team or the Deployment Manager + rest-edms-client-id: encrypted:fu033SWVy3PIi+iDMq35LLFNXnsIe5YyqFKiCVxOXCILwYuMXG0nkhFO5BnFTVzhnM5Cf70PLJ16CivuLNNJpESD3IxRKok8RqIz6pwu+743ZhGVcN8MTOZZnSWA7uLPK25p/RMz2nm4CSkBKg1BoosMgrTEipm8qxx4LfEt+MxDtr+rqoSt/y/dVk9CzgNY59I3dPPHUGyskttaTOVctupPtn/uAjeGKKmBKhUP+8aSYqYLqTHAuW+f7NHWoKZyx2oqwtyPz7ey0rxcIkijUDDUQgC9c4FisfyEs9NQL0WNevCWKmwEGoGCS9C6r3/8TXoe94S2if2ZLxrfzzTGa9DLuLPv371UL7I8cOuC3AlRYgX837E34HzqtazucpmKlDO+2s6QBDb6PYxIw4HzKp6J2BRTvbc766gRzYRa9FfBIk2XKOOOLAh2vikTqCZhcM1bL4e8WcmMS/j8My8BgUCoCHaQhti0LQb5TjkqH7h0vE7hfYemigfKDrpQEfNBXaSIUeBGHwq3Uc0R3+cuiPG/YUVu/ySzzN4iNWFjvf6FNd+3RYcmPickkqFtkKP3APHxFO5ZG9CuS2+Z1xp80jKzR+hxPUl3wSn8CtFjWd0LgQj7jcSJoPRam9Qhf1rFNJmgnSybWKIxsXrFyVwXRdNFTO/8J2v6JRUVicDBLls=|dHmhpHMJsWeq+QB/z2H7Iv0rcj6Ye2rfI0Vo/As99rbOUoDvF5e8Z5Ro/qY3JWrI2JCK6hK1NEufRBUrWxr5Fw== + # + # Other fields used in the notification request sent to e-DMS + # + batch-id: BATCH_999 + client-division-id: CLIENT_DIVISION_999 + application-id: E-RIGHTS + # In case of issues when sending notification, the number of days after which the message will not be sent anyway. + notification-expiration-days: 28 + + +################# +# Skyscanner WS # +################# + +skyscanner: + create-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/create + poll-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/poll/%s + api-key: encrypted:W6EC+V//Rusc6MCN3+c3RxMqBbQnSq8sVvH8ewal84CyaVIbWGRgzukwVlb9KIuxk/uVW08TFlyUc4TM8zimQ0EKdXg/FiY3GagItFUDfitED91lFO+NIvT2yde5TcqtkI9ig4krkfcelYzFQdO2Dxg9sUck8w4X/vBxRX38EwMK2aS098E2n7F1PraMUcx6BuAsqKovbCer3Y2+mIsAr7MetGhZsCIDaV+MADnoxOTFw2WkLoIpq6DynvurBnvlwO/OTz5lyve/vr6BB/+ic84iuJqWdM/Z5r11Zgbr4Mcc+a6KJhxbmS36KDDj6boKi9RZh+ZeipJeYk4nxSly9LGftR4RA3aQln9ZRjOP+yp5mcc8UwYjDNmpN63Ioqd6GJcK2Nr9AisoxtNoRQXTmaM+lTAROOxFD1y6n7y7Q1y1pAuBodqfuJimGN+87YCUjSCOLuwqp+DV5uaq+AWw0R8YHrZ6NTdVQho7nlREwGsZZgsQayFK8MGyEDscA0vU2l39KIGUnBWFFXwF+F+kP0867RjBQz5IlFOZLjHFBk9BXm50dcV97L2BhNSdUBzOlFyEQGjUrtF1FvHH8Eo+DqOVLWCarRXhM1ME9o8esqdEAQGILj11IpuPcOFVjc/v5mWYWdy65usXgY3bM/qEFF4TRXMAsfB/CIq1DBbDQv0=|6aqvplbtGeQbtDk8s9uZg4vcMna+VmZ5hzVXK7SjTAuYpKyp37nhONWTzZ2p8D6CmA1nSmkHdIJRRFXyn3lL0A== + +p2p-hub: + # From the generated JWKS keys take kid PublicJWKS + eulogin-oidc-jwk-kid: encrypted:WUPgynZQ/lc/1FY0bCX+KNEZnqZsYU70lzktos0oLbfvmNJnpeVpSXjT637Z2fK4XHMlFc0RkV9A6xGjKIPeNEu/aNZCA7Bw2PKMzizAGOQs4L5wAzGkTK4xPiZMRKaokFVUZItkN585HtLfn7VOsAQENIzmebTHSB2pE0ux4k3xNEvUPSomVhZwNqjv9NtEZmyJdZorQJKneX8eZJ8cbIHp4ij4KV10b2d8cvQXbky2urcccKmiiOe1FGoZuGDlASSuSp6awBQ71YsCatp24LU6OCccmJVmOQQmkPeaZtNOk4VhKG/raRJQMNjZCCeB2XB1ZY3GFTe3+yB5pfyh/3VRcyxvqB7i66SmpGBOeNxpMhfsK7+O2o72AW/JhIJpZX0Yyo9QbwLM69H7Ar80kCN86drch0+xpzSQB/0InxCSGoVK3ywSQNFAIIaYl9N4H41vyli7L/CQHyALNPqSx8z9kkEsOHw4ZydAzRas19jW0/fqVCzLXUqb+lcZNEBrpnW8SxRIpbw14V1yZU2cCHJ5MgPt6JTcBxtrsNcIZvWYJE5nCQYWnXmILpMmU307BVLPKwfqx1sg3YcZczzTL9y4+At0iFlOuexql/IQt1gZ5Q11hwJkaETq16yq1A1D6+FvQBBQyn25Qjm5EPYyCGfwPdueVsof0U93rqaRkng=|ZDG30WWIWJt2RoJhVd2DV6vXaUtPtExKChga+cDF9sXzTv/szytMzbN2/NibH8ovARZo4IvHiaVQNf2E2iBMJQ== + # From the generated JWKS keys take, kid and x from PublicJWKS, and d from Private JWKS + eulogin-oidc-private-key: encrypted:faXzxbncs+uFRc2czJpb5NGAAomkttkGzPlq5sfsyklxy9AAtECgGjb2Mr7j20ApW/ejuI2DKz+qIrWkJ9MmCR6+xtZALuzzY/v3EAncnXZJkAm+YU3W+s3znQ9lZ5gEDSH+sKPFIvSkeZx4+Y1u4XwvwSbgLdxCvni2urVBGIqtg91XjijXnW9frZtD5foeFwRmXRKXRYr9gdM7Sti4o7LQagwJne+6J4WwD3FSRQt78SFukcbcYFAXpD66vkVsWwXh5uAgZBrcd1IevVW0I1jpMiJr0TwCFfOdBAilaQWu+IdpIPHX5ckd6qdLgem+2h/9n4qwOaUT1WrejudRROnL2Khrb7PUEN1dnmIwivwzr3yiZp1h/9mlz7za7WpBETlINfiF+jv5VWU0dpaFL8gdu9R8i7yOxkY2PWGkG3jMPmADJ1czOTtUDD2ZVL5lT7H0L91yPB3DiPgAZRJC6DOmbsp72fPIae8WIWkNxhdUKoaqZ00A1yg9XkJrIkAhQyvDrgxpsImUVsNs9skjPoY49qLaXctdbfoUP5aT2f+FG6+GJPMhznDtAPjQ4YqtmrQT70b4TlwHsUubM0pgd1IxRmVxxNeaPReSRa9GQe8UiS/HnJo6H0l1MUHCsMqqtLiWzi8eESwIKKmaa5Gp87VLIUPY74oCZTVFyn72C6U=|weg0CPlamml2ysvAolv/oJcnEQbkOriwdlNnYfwwRJ/Oug8LT8NtrgFIzL7vogbapKdPS+lG0yW7HLRviEKCCA== + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:huQAI8F4mbg+uJJEkhGXaOFQlF/XJS9kXQ3FaReUETatEFlkIcFvohqNpOvJhExpNG0jy9NuJkZI8N+pPyWiAcag2I92C0aKxrczgK5tVm0Gj43FSIuEAf/2HXxQW3DS8aPKtTJ2u1mambVbs7CzZaoRSWo+RHfXZhQloqMK6czOnSuc7aIuvafar5PQTtUicG1IAKn7uDUVFFyxozXP+l3qH3B2Bac5K0YUPcgi8+/zvHUZ/H+hxdZs+KaXWB8ItDCuhbvyvPwA6kjkQcJl86gBiCkBbVSX56NIT+8pXdYxl9wVH4N9sLf85lWY9e+9DIi51dAvsJCNwyNvvq3AcpO7IQHr1kDeStfEH9maeCakuO4BqxTE9iqcO0n2MO5V/XB2xVAihcQF2YE0utSFNLylstkLRQZXtLqGIMOIpX8xaAMUM9GUxGkpkusPHYWVek/cKU135yOPdHgbCcROLLu9QlnkgFmqfvOH3m5ZCFfVAM52+iuXGIV0isZJSSp4xh3uwJV8lzpAmBtRxdBIxCy7cGLaX1MKWsWpMPPCwDe8n3qwbo2qTim8hbqVtOVrbVSIa4Ju9iGDLBwuo/HKOTCo3NyfDt426XEzPLfrjmVXMLxkZsILq/LpbRxDYCz4GtGLUIo2ppEQ49ZdmxW6Zc57J/ifNbmA11X0g5pwamU=|Gh46ZtreuugTBJsWJ4K77Opk2lLPpuHmw09gNfEGCKiYBphs4GHfYG61yIpUimcsZOeI626q85R4Qk1arfwNLw== + eulogin-oidc-token-endpoint: 'https://ecas.acceptance.ec.europa.eu/cas/oauth2/token' + rest-client-id: '4fzzKgzqr1uMXgzhCOlYzQxlXah008HLu8feGcVOGRWWNkIB8wbQ6kA0wkjzzbJhrrOmtLtXzJOzodxk8RziDDkpe-zGrcc7GCOy8Sl7JxHB7VJm' + url: 'https://p2p-hub.acc.eeas.testa.eu/eeashub/' + secure-connection: true + mtls-enabled: false + + + + +logging: + level: + org.springframework.transaction: DEBUG + org.hibernate.engine.transaction: DEBUG + org.hibernate.resource.jdbc: DEBUG diff --git a/e-rights-back-office/src/main/resources/application-dev-mnt-jms.yml b/e-rights-back-office/src/main/resources/application-dev-mnt-jms.yml new file mode 100644 index 0000000..773c157 --- /dev/null +++ b/e-rights-back-office/src/main/resources/application-dev-mnt-jms.yml @@ -0,0 +1,164 @@ +############ +# e-RIGHTS # +############ + +application: + protocol: HTTPS + host-name: localhost + front-office-host-name: localhost:6112 + test-mailbox: Fernando.TAPIA@ext.eeas.europa.eu + proxy-host: ps-bxl-usr.cec.eu.int + proxy-port: 8012 + proxy-user: a0099a5c + proxy-pass: encrypted:bVh4/iHDAg7gC/Vui/OyHLpgg3tVX65SFi71J/Q1QDNBSJnpvPfsmxnH+u+NVX1HbJGUbA1huSO5Ta2cfYCBXTpAwfSrQaxHQkK97Chp+IfqTdR+YkT74ahfW7fC8ryIgwp/prKPbZsHBTo72xg4HC87k08P5MI1ezKMP9HTFfmRFT4os5pwYbatqpaNJFhkCm2RH8LK2mKvmsGMtD1CUIvmqt+mffFTsCoCubjgbOVl+hh4xDkRBH3jzJ2rJfA2iwBoje2D0ZGO8t11juLA4syd9ecrAv27jdmfxMkG1z9J6bSUwrGlFSSd8h3kYqCscdD9I9Y1WZ/PMO+kofXwk+kOdUqrD2tDB8IfkoI8Mf+q7ToVdR5H5ZHUIrvHOGeDEBbrTA3H/fXiViNUZGLIQCj32ti0pEqoYXWlVkcBtURvO5RtgydgN9qRKmh8KWk7tnSrLbRkdg+4MF8sTLWlO43F+UjcrU76832LiNkjcmsm/PbtuSSaaOZ5p6wyWVoqJpKurquQiXD2bFJL0NDFSfoh9JHBEKR82RfjbJ8trHWRkTgyByLrb7xgQi2AxdOfd3O/4blPRexMZ9rPE911ux2lBVmpcE+PNKTc3WHYL25M+fkJQGSrXapMuy7fPVV2cqI5mLwesL2o9VIukeqXvfuWtD/SoOxEZ1OEuNMiGE8=|qEc63l7SBmnrV1H7tobrS2K1v1VCUt/HILFuS6aeZDyAX03b4o0AEdzgLlAbeakhF+59qbrPVeqCQYiBq5rQag== + gosselin-host: https://eeas.gosselingroup.eu + gosselin-api-key: 60d8def0a9f5bebd66c78825ec14dd5e + gosselin-api-id: RequestorEEAS +########## +# Spring # +########## + +#logging: +# level: +# org.springframework.security: DEBUG + +management: + endpoints: + web: + exposure: + include: '*' + +############### +# Ananke Core # +############### + +base: + money: + currencies: + - code: STN + default-fraction-digits: 2 + numeric-code: 930 + - code: UYW + default-fraction-digits: 4 + numeric-code: 927 + + +connector: + http: + secure: + socket-timeout: + value: 10 + time-unit: SECONDS + connection-timeout: + value: 10 + time-unit: SECONDS + connection-pool: + max-size: 20 + max-size-per-route: 20 + time-to-live: + value: 5 + time-unit: SECONDS + jms: + connection-factory: + broker-url: http://wlstd01009.cc.cec.eu.int:1042 + jndi-factory-class-name: weblogic.jndi.WLInitialContextFactory + jndi-name: jms/erightsConnectionFactory + credentials: + enable: true + username: LSY_ERIGHT + password: encrypted:IHN9jZyV6ZkHCJbXihGOGMqHFmhHPVoJF59y/uK0aTbDoMw61IXWU/qvObXhc7d3acOkdEQ4ePQI4yAOEzGEP64HREu8yGp0/GibKFO7wslP7YUjDDNBQ08yXL0/3XTSVkqA01I1SH/7TJ/FTnbBg95mRbIs13AceY6aE2DINosn8RpQG5n/tQWWhi7bgqI+loWcdgL5e+WwA7QMz+gSlQ1iaXy6OqlvBNsztD6S3gxoFdzh2vHNN/0fw+LJLWyXc3m17alHKEg5shyyFh1P5SVrxrgpnlNse5sY7QYeLJrgZj5lN1hoJDkDFwo+pQeGAWgqw3ih7f/XHQ6Op8QbBp+y3ky+JIboh6yZcN+U32+lDZIvYUmoo75gFfLXj36vMkqTDjHelBTj4MQ8Cu60oALKVscKFU25mVzlTDqnPS3yU+kPgLNUpUvrdQngU36hb5hjjB/sxJYzkBt2Alq3cE7Wcz5cWOAsvcBX42tbu5P17c4hHZXTwXvqc6BwGsEUTQq2MHxfK6VNopoo7NqpnjaoD26kqS7WTwDDDTDURDT+SnV3Npa8SEcrkNv5TD3Ll0EfMj5OJFMvm7WT9p8kBwFvD1I+ROKHnjdeKWkBIDU8AZWci7fnAX5E4thCc5E6Tcn+4fOLONuTymw4ljPKtvbcEtO1j0j+MstfGw6QOnQ=|MtznGa+xFfwW7MfSUkaqU0MikcwCnj7yWjsgLsbHGZIyylbuX1x2NOqnUrjUUjfQG3DIO4wjhwwudsx/zqfg/A== + class-name: org.springframework.jndi.JndiObjectFactoryBean + queue: + jaxb: + enable: true + enable-mock: false + +data: + jpa: + show-sql: true + format-sql: true + connection-pool: + min-size: 2 + max-size: 2 + +security: + api: + http: + authentication: + managed: + assurance-level: HIGH + accept-strengths: PASSWORD + server: + protocol: ${application.protocol} + host-name: ${application.host-name} + port: 6113 + ssl-port: 6114 + ticket: + proxy: + requestor: + type: PATH_BASED + path-based: + - pattern: http://playground:7013/Ares_pg/ecas/login.do + source: SUPPLIED + supplied: + mode: FIXED + fixed: + ticket: T1ck3t + + +################ +# Ananke Tools # +################ + + +#abac-connector: +# sync: +# environment: +# type: CUSTOM +# custom: https://intragate.test.ec.europa.eu/webpaxanwtst_nt_pub/summa/service +# credentials: +# password: encrypted:Car7Qtplqni0XqK2dhQfuNW6Y8ondoE5I1hq9cFedDyf36nn59CN64nUa9lljzZE3kbZu96WPoXyfziguVsLx7jM0GjWAC2SQ7hDCZTWLli+f6pU/vnJANw8LTY6eCl1wD5hknHFDA14+49/WJSNK+KXzXKKIPYyr/X9WCJqDmdnd9mKev/bQnxNRG2UeEwS/dzVHPvJlRFdp6K4XWveE9rq8pteNpOaRnPfgFe3qO/Znardv6DDmEtktiT3nlqhVaLxPg2XQFBsAZ2PRF46qCgxP/Wk7XHenDd9n42zB+YjkJZ7vlrLs7O49hXLLrH8uTHTl7UH6opljLZOBUKUqdAUfCmF1yERgvVj5sHdvCG1jdHXe3TPcwsbrnDCSM1sULTN/i2GbmwfjrsfJWXEddL7vADyz6xfAuhGYWAmfTebJzXnhVgOssw+5/p7k2Rs++jnQ10DSIBgH2OjD2fSaRYdzSpMFZIV6ePkOSZGZFkWmoxR9wC7wp9k2MrbHuQ0IfF+iRXFHY8g+hWry1YZHv9SA9OnI2Fs5AXueTvh0FRGgFSfdLlskBq4liYF/dXFxbC2+oFlcgJMGPH5s/8EQQ6xJQ9U4D3lDwHGRzZj/BnLa47lZqut4gO3ir6T1wrLhkJ5uT2RPbn/KHVt0ac9Cz3G7vp0oa/JZNAmM3mCpkM=|zUYRBLqYzdC+2vhwqylXsHhtYLRk4cpzcSjluBl8PWlcTdq8YvyyebufAP7SORd4BtCkFQPjcgHDa+N/VLmnDQ== + + + +hermes-connector: + environment: TEST + + + +# ------------------------------------------------- + +# e-DMS REST requests settings: All fields mandatory if enabled = true +edms: + enabled: true + + # Unused: We use "application: mailbox:" in application.yml + message-from: Unused + + # From the generated JWKS keys take kid value PublicJWKS + eulogin-oidc-jwk-kid: encrypted:skbeM9ikaCHZbecdZX5ho2HY6aW1gGdTY8pIUcwr2ExcEy6V1hV9lBAaVV23bUGpfqODRqx/c2oyq6fnASuguvX3fyKJC7oRXyt1f+QyvTL5UBLqA9Css1sUD5FsO/QkQgvjuV7Z1O6rgl81m9JkfviWmymuQlmlhw6/f44YGtsXD1rH0LBkFFiG4dVy59hBYS5/WFBnb+7bLwdKAMRa47rQDuqlveUt2zd+JaG02/3ZOHUl67h1BqzvfO5qAvR9qKlR7UwuJoIW9ZS1KpiwAnTKYhz0N/1vJsb1P3Ze2AmdK10xFl3tGqDpljI+5z1rAhLY+0IVgUbm4sz5MdXqcCWQZYJ9ju7Q+060lyFWQv2i8axwpSU/b53C1WNRGTcg63JaUWJvMpyMZLkZh8yR0Ety1C1GX5YHR9XBKttHmmDGfb/9ADr/qFsx+1ekQuEUwvYwv29E0GP1tW/JVtc4IG0GAW5Ppxp7VnRC2nT1NWN/rvoQLHMEtlL4HoXtgr1uamfdcnxMgYA2+5tfgl1/lMm17QrxeFYKklX3UCp0iifUoXo9FV07gCGYbyzRp7z34Irp7EZdeKk3sQNcVO0q8NUDdJZIQ4LVTz2ZGrUiLdLryqidCTlGwfxhQt7WLNvC3eRcJhANkbQEL/oMFiHtYTgEgMqCLBd6aHyVoZY6Rfk=|97LEaFaPlWV6fGjsuTZ/XKB2QgBgaUO5yz5euLsaSiyeLNmK6qRYD73ucGeI0TMLXn4/nHg3Eksxg97FMfvLzA== + + # From the generated JWKS keys take, kid and x values from PublicJWKS, and d value from Private JWKS + eulogin-oidc-private-key: encrypted:fOO10XL4KkvkevZW7HdsvmX7wv3LWXrJJk9YPjsVZ29chiETnybL+NAWef0qV9RHELGVi5Oc0WVMJh5PKIWDhCBlKCJpn/v1p1p8RXMa7Bds/i3PPsqe7EFh/yH4brt5656EldXXhMttKYwgxS1tojdGE15O5dP96ylcKafD1pus7J3ohdjUi4CziVafaj58B230jH8Q4WZIPPwm0aQ7r8JJWw2fbVy1mDFwUagewuztruKfanlPNVgsBi+vOimiQcoyxJ5j9CAZBcribwJC1HbL4a4n7Y4jwVkOcB2Mj37aJVDghtYsud3YvsUyi1QJm2ta5CsZ5vUmANPGRVw3kCgM8XexebS39Sx1Tc+lAsz2ufWw6ijFzHmH4Ls2n3zxJGmLBixGBt5rrlcQ1L20xwBP2r6EwgfOmFpXco2O4VlYwRFkAJWGDaaA/IxGOsLqlnRemkdV73H6ghSR4K3KnpHleDK2n0O+/BnSszMVtvORJHLiq0R15KP5GJLoC0ljxQ1LMtCkEn8mIqiXVd3RdUWhewfpUa2VJQl9AOylDGaNNCA+L/VuRGNF92Axe6qNtE0uBIOkyV44tIQ4p45uNcU6GaFica0Z49XAn7O2Dkr750tfCr8JxuCgcLEm3jidqGCk1E8sTpZG0QxZsMPtl9txN/jxE/sfK3opsbFYp98=|52SC6KQ0Bd/znJb9UkRvrP9xv4YB+uMDAkSyaZ98ijfQ14tLTtce9EOdndlmie7eoNSEjLY/nb50d3MGe+yqyA== + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:EJFavNxx0Ih+Yj7lndwi4eHbufQjneaCmQEcYJUYBD3AARbwgJqazVwur9IBEpylihNJnfmESGJwxjNVq6kWQM9+du+c14VrRfMkSmrOv8EfRF2oBD6etE/ZefsKdV8MZnEZZJvahykJIHcfqXL2horKHF2tRnhFTDwD2iYBx7F1SVfK7o7nW8x43qJiAlYP+r9KP6HD4A7vydlI6mfTp7KFcZU/IQbV5k6amHne/68ed4ClFRkH3QDZimUN+PXuWLmWBGxk68EXYCTHEGdsAqr+PnHpfuWqYyL9X+8YcsPi646i3ulWjxWrFlxQBtEZbECBmmRTE3D+VrKAUYQWgHsH5ZnldGZMnwYTCVfer+OLGTsvf70oqzX9SBUD0kw5MIxED4AejG+qDAVY75Bf4zHyncBlQDqxX2tPSK+4J9dtg0Gri8KhZA4kThEJohNYIiL2VCRac7Ok8sV1gNZ0ywayX4WzXS29S58KwFi7He4PUB6mnnhKCo2qw0xom17X7xI5IY2z14Of09zArdPDU2UfjcNVxDH2sihZH71ZckgDbtHOXwcxKk6Pen+94fzhWUoDY3l0p9pavIZ81UX33benMg5+szJrIuUNlf09rwRI3zn8dPJPb2fjR5tiFgXsKr4bDwRkefKAakS5kOT/GfaLK+6BLyP55cg7OLQqsSg=|j4oOlyoyXT1yNXdGf7r9JPM4LChByk00mWgCCdoLnAxOxTu6eHTLn6Dwo59WKDT7mMDsJXEdTuhTCaxOhF1fBQ== + + eulogin-oidc-token-endpoint: https://ecas.acceptance.ec.europa.eu/cas/oauth2/token + + # Rest config (previously with "rest:", now with prefix "rest-") + # ------------------------------------- + rest-pop-token-provider: edmsLoginPoPTokenProvider + # rest-send-messages-url: https://intragate.test.ec.europa.eu/e-dms-rest + rest-send-messages-url: https://webgate.acceptance.ec.testa.eu/e-dms-rest + # OIDC Client ID - It should be provided by the e-DMS team or the Deployment Manager + rest-edms-client-id: encrypted:hhlYoHgC4xRkpoegG+brzFjAbBGeHCEYLbKI9k4ROE6vCbWOiZaPyCYjl16p/S5hzCLBaKYnzUrGZv+jpQ4fypwl7JNyFo+CUd/nBrB3Hl8tckKlIss2JjQ+8EqmxIrxN5Eonb7cEkErmSVMX19jcNYikWeRgaFUEGJHKdkyORnDXXX0N8S7ARZrR1s9JUHr4LDUeq+rpPbaFECQuhEAX/tZWobrZC69NRlX1wqURoszEpi1Yni1GepnoXp9eDTfjTkVfjJYuFL3DUWdY2LuAj0PGKjSvMTlM93kLLXAvsuiD+DVzOWRUlR9rqijpxsH10Yzp4fiixG4qBjw0pr4LJLnmXgMe6ypc1QOZulshdloYr6NWzbyedRqhTuxx5wOtAvqH2Pj13TrtrvvO9xCp9Im25QX99gutM1nCNV4j00ESX2cn8sYNJWQZQFAgQOpkfY3k4ktwbD7xpxOuGr7hZUag5f5HlskQfkPYbHlGY/dIZTJLPNtLJ4Zienmsgp38cVp1uYT25phyq21fsIhYpP87YkD2TwviVRG4fxoe2NHBFlkGyq4B7eMacVgEaQwYW9dKyTgMMKqM7RDSNAE0vN4VOUNeqUk8jqvk0L4gz61tknhsdJPVPFI8xFtSFvI4yfyrc3tUjHocfW8NLhGC5aOZnI2qjnmP9FOUQmMlvs=|6O7Hk8OZNec6RytZ/H287r4S4aGfRFDf9RkL0B2SbfDx0YEiI5PjCzLZBpQD/HTfJ0X2HCpY23lg/jlQr3eMcA== + # + # Other fields used in the notification request sent to e-DMS + # + batch-id: BATCH_999 + client-division-id: CLIENT_DIVISION_999 + application-id: E-RIGHTS + # In case of issues when sending notification, the number of days after which the message will not be sent anyway. + notification-expiration-days: 28 + diff --git a/e-rights-back-office/src/main/resources/application-development-weblogic.yml b/e-rights-back-office/src/main/resources/application-development-weblogic.yml new file mode 100644 index 0000000..853ba0a --- /dev/null +++ b/e-rights-back-office/src/main/resources/application-development-weblogic.yml @@ -0,0 +1,155 @@ +############ +# e-RIGHTS # +############ + +application: + protocol: HTTPS + host-name: localhost + front-office-host-name: localhost:6112 + test-mailbox: Fernando.TAPIA@ext.eeas.europa.eu + proxy-host: ps-bxl-usr.cec.eu.int + proxy-port: 8012 + proxy-user: a0099a5c + proxy-pass: encrypted:bVh4/iHDAg7gC/Vui/OyHLpgg3tVX65SFi71J/Q1QDNBSJnpvPfsmxnH+u+NVX1HbJGUbA1huSO5Ta2cfYCBXTpAwfSrQaxHQkK97Chp+IfqTdR+YkT74ahfW7fC8ryIgwp/prKPbZsHBTo72xg4HC87k08P5MI1ezKMP9HTFfmRFT4os5pwYbatqpaNJFhkCm2RH8LK2mKvmsGMtD1CUIvmqt+mffFTsCoCubjgbOVl+hh4xDkRBH3jzJ2rJfA2iwBoje2D0ZGO8t11juLA4syd9ecrAv27jdmfxMkG1z9J6bSUwrGlFSSd8h3kYqCscdD9I9Y1WZ/PMO+kofXwk+kOdUqrD2tDB8IfkoI8Mf+q7ToVdR5H5ZHUIrvHOGeDEBbrTA3H/fXiViNUZGLIQCj32ti0pEqoYXWlVkcBtURvO5RtgydgN9qRKmh8KWk7tnSrLbRkdg+4MF8sTLWlO43F+UjcrU76832LiNkjcmsm/PbtuSSaaOZ5p6wyWVoqJpKurquQiXD2bFJL0NDFSfoh9JHBEKR82RfjbJ8trHWRkTgyByLrb7xgQi2AxdOfd3O/4blPRexMZ9rPE911ux2lBVmpcE+PNKTc3WHYL25M+fkJQGSrXapMuy7fPVV2cqI5mLwesL2o9VIukeqXvfuWtD/SoOxEZ1OEuNMiGE8=|qEc63l7SBmnrV1H7tobrS2K1v1VCUt/HILFuS6aeZDyAX03b4o0AEdzgLlAbeakhF+59qbrPVeqCQYiBq5rQag== + gosselin-host: https://eeas.gosselingroup.eu + gosselin-api-key: 60d8def0a9f5bebd66c78825ec14dd5e + gosselin-api-id: RequestorEEAS + sysper-api-key-name: testkey + sysper-api-key: 178b7f57-7130-49d1-9c3e-99f6a716cbc9 + +########## +# Spring # +########## + +#logging: +# level: +# org.springframework.security: DEBUG + +management: + endpoints: + web: + exposure: + include: '*' + +############### +# Ananke Core # +############### + +base: + money: + currencies: + - code: STN + default-fraction-digits: 2 + numeric-code: 930 + - code: UYW + default-fraction-digits: 4 + numeric-code: 927 + + +connector: + http: + secure: + socket-timeout: + value: 10 + time-unit: SECONDS + connection-timeout: + value: 10 + time-unit: SECONDS + connection-pool: + max-size: 20 + max-size-per-route: 20 + time-to-live: + value: 5 + time-unit: SECONDS + jms: + connection-factory: + broker-url: http://wlstd00999.cc.cec.eu.int:1042 + jndi-factory-class-name: weblogic.jndi.WLInitialContextFactory + jndi-name: jms/erightsConnectionFactory + credentials: + enable: true + username: LSY_ERIGHT + password: encrypted:KijqtmcakoNJ6FfsFpCqY4EupPIZ+QuyO0nAcmUvX81xllDPO0yLDlcancn6wPR0wIaW3tXjXsSf3qy4iSBBs8vMrluH6RtpgB/nhnhLTu7nA4fvjXGDNtfmg9IQgvY+W3145OZ2H5IVZMkpFlfflMoDC1DwHN3JwHAnqpLQH5OKsmiQml1oTSICBGa5igrVcLMq1ZUhfTLF4x8OAgH/ai8yLsoGT7yCb/YUeFfEKxN/sx0Bz6gMBW0jmJHq2YWivEBfRczz4P56CMTe8QeDccaYuvWb3IVMEwEiqjCYOSYdRjO6ECBGbrcDd76gY44F0zKzQrykEH5qJEi2VZk8JrHVE43ZSoGEXfqaUA1xwaRDC6xcJVER+LBW4okuJDrmOp31yv/F4amev5a4P7t7rp/70BW7i2JcHX17q4Bud8xgKu5bnP5fMfxSV06jFG5Kig70X2RN5es4n8f1G55KsiFeqLzFtaw4zgGm584xIlM3fCoomV/3IEg7Tzq+jmjjupVmefAxWIpMs94A3z3x2HzHwYjxs+kqqrzEcibqmx98lMmKdI5a5DEKKB228/FRE7GQuigG/aUf7PjL2TNo2AdZGMtEv0u0+QIWlHbvORit4cCNE1U0hZ4Sel/Ks1L1qxHei4e0jGS1DaE0XXhudG2gnNmh6Hq/axh1YqpEe1Q=|dMeRinOfjT8pvitDn+XnEmymQ2qcvHkD/3bRGQAAJarV7M5PhMXrtbX6Uw7xIDBTDTLXoYKN6TM42AHjdpb9hw== + class-name: org.springframework.jndi.JndiObjectFactoryBean + queue: + jaxb: + enable: true + enable-mock: false + +data: + jpa: + show-sql: true + format-sql: true + connection-pool: + min-size: 2 + max-size: 2 + +security: + api: + http: + authentication: + managed: + assurance-level: HIGH + accept-strengths: PASSWORD + server: + protocol: ${application.protocol} + host-name: ${application.host-name} + port: 6115 + ssl-port: 6116 + ticket: + proxy: + requestor: + type: PATH_BASED + path-based: + - pattern: http://playground:7013/Ares_pg/ecas/login.do + source: SUPPLIED + supplied: + mode: FIXED + fixed: + ticket: T1ck3t + + +################ +# Ananke Tools # +################ + + +hermes-connector: + environment: TEST + + +# ------------------------------------------------- + +# e-DMS REST requests settings: All fields mandatory if enabled = true +edms: + enabled: true + + # Unused: We use "application: mailbox:" in application.yml + message-from: Unused + + # From the generated JWKS keys take kid value PublicJWKS + eulogin-oidc-jwk-kid: encrypted:skbeM9ikaCHZbecdZX5ho2HY6aW1gGdTY8pIUcwr2ExcEy6V1hV9lBAaVV23bUGpfqODRqx/c2oyq6fnASuguvX3fyKJC7oRXyt1f+QyvTL5UBLqA9Css1sUD5FsO/QkQgvjuV7Z1O6rgl81m9JkfviWmymuQlmlhw6/f44YGtsXD1rH0LBkFFiG4dVy59hBYS5/WFBnb+7bLwdKAMRa47rQDuqlveUt2zd+JaG02/3ZOHUl67h1BqzvfO5qAvR9qKlR7UwuJoIW9ZS1KpiwAnTKYhz0N/1vJsb1P3Ze2AmdK10xFl3tGqDpljI+5z1rAhLY+0IVgUbm4sz5MdXqcCWQZYJ9ju7Q+060lyFWQv2i8axwpSU/b53C1WNRGTcg63JaUWJvMpyMZLkZh8yR0Ety1C1GX5YHR9XBKttHmmDGfb/9ADr/qFsx+1ekQuEUwvYwv29E0GP1tW/JVtc4IG0GAW5Ppxp7VnRC2nT1NWN/rvoQLHMEtlL4HoXtgr1uamfdcnxMgYA2+5tfgl1/lMm17QrxeFYKklX3UCp0iifUoXo9FV07gCGYbyzRp7z34Irp7EZdeKk3sQNcVO0q8NUDdJZIQ4LVTz2ZGrUiLdLryqidCTlGwfxhQt7WLNvC3eRcJhANkbQEL/oMFiHtYTgEgMqCLBd6aHyVoZY6Rfk=|97LEaFaPlWV6fGjsuTZ/XKB2QgBgaUO5yz5euLsaSiyeLNmK6qRYD73ucGeI0TMLXn4/nHg3Eksxg97FMfvLzA== + + # From the generated JWKS keys take, kid and x values from PublicJWKS, and d value from Private JWKS + eulogin-oidc-private-key: encrypted:fOO10XL4KkvkevZW7HdsvmX7wv3LWXrJJk9YPjsVZ29chiETnybL+NAWef0qV9RHELGVi5Oc0WVMJh5PKIWDhCBlKCJpn/v1p1p8RXMa7Bds/i3PPsqe7EFh/yH4brt5656EldXXhMttKYwgxS1tojdGE15O5dP96ylcKafD1pus7J3ohdjUi4CziVafaj58B230jH8Q4WZIPPwm0aQ7r8JJWw2fbVy1mDFwUagewuztruKfanlPNVgsBi+vOimiQcoyxJ5j9CAZBcribwJC1HbL4a4n7Y4jwVkOcB2Mj37aJVDghtYsud3YvsUyi1QJm2ta5CsZ5vUmANPGRVw3kCgM8XexebS39Sx1Tc+lAsz2ufWw6ijFzHmH4Ls2n3zxJGmLBixGBt5rrlcQ1L20xwBP2r6EwgfOmFpXco2O4VlYwRFkAJWGDaaA/IxGOsLqlnRemkdV73H6ghSR4K3KnpHleDK2n0O+/BnSszMVtvORJHLiq0R15KP5GJLoC0ljxQ1LMtCkEn8mIqiXVd3RdUWhewfpUa2VJQl9AOylDGaNNCA+L/VuRGNF92Axe6qNtE0uBIOkyV44tIQ4p45uNcU6GaFica0Z49XAn7O2Dkr750tfCr8JxuCgcLEm3jidqGCk1E8sTpZG0QxZsMPtl9txN/jxE/sfK3opsbFYp98=|52SC6KQ0Bd/znJb9UkRvrP9xv4YB+uMDAkSyaZ98ijfQ14tLTtce9EOdndlmie7eoNSEjLY/nb50d3MGe+yqyA== + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:EJFavNxx0Ih+Yj7lndwi4eHbufQjneaCmQEcYJUYBD3AARbwgJqazVwur9IBEpylihNJnfmESGJwxjNVq6kWQM9+du+c14VrRfMkSmrOv8EfRF2oBD6etE/ZefsKdV8MZnEZZJvahykJIHcfqXL2horKHF2tRnhFTDwD2iYBx7F1SVfK7o7nW8x43qJiAlYP+r9KP6HD4A7vydlI6mfTp7KFcZU/IQbV5k6amHne/68ed4ClFRkH3QDZimUN+PXuWLmWBGxk68EXYCTHEGdsAqr+PnHpfuWqYyL9X+8YcsPi646i3ulWjxWrFlxQBtEZbECBmmRTE3D+VrKAUYQWgHsH5ZnldGZMnwYTCVfer+OLGTsvf70oqzX9SBUD0kw5MIxED4AejG+qDAVY75Bf4zHyncBlQDqxX2tPSK+4J9dtg0Gri8KhZA4kThEJohNYIiL2VCRac7Ok8sV1gNZ0ywayX4WzXS29S58KwFi7He4PUB6mnnhKCo2qw0xom17X7xI5IY2z14Of09zArdPDU2UfjcNVxDH2sihZH71ZckgDbtHOXwcxKk6Pen+94fzhWUoDY3l0p9pavIZ81UX33benMg5+szJrIuUNlf09rwRI3zn8dPJPb2fjR5tiFgXsKr4bDwRkefKAakS5kOT/GfaLK+6BLyP55cg7OLQqsSg=|j4oOlyoyXT1yNXdGf7r9JPM4LChByk00mWgCCdoLnAxOxTu6eHTLn6Dwo59WKDT7mMDsJXEdTuhTCaxOhF1fBQ== + + eulogin-oidc-token-endpoint: https://ecas.acceptance.ec.europa.eu/cas/oauth2/token + + # Rest config (previously with "rest:", now with prefix "rest-") + # ------------------------------------- + rest-pop-token-provider: edmsLoginPoPTokenProvider + # rest-send-messages-url: https://intragate.test.ec.europa.eu/e-dms-rest + rest-send-messages-url: https://webgate.acceptance.ec.testa.eu/e-dms-rest + # OIDC Client ID - It should be provided by the e-DMS team or the Deployment Manager + rest-edms-client-id: encrypted:hhlYoHgC4xRkpoegG+brzFjAbBGeHCEYLbKI9k4ROE6vCbWOiZaPyCYjl16p/S5hzCLBaKYnzUrGZv+jpQ4fypwl7JNyFo+CUd/nBrB3Hl8tckKlIss2JjQ+8EqmxIrxN5Eonb7cEkErmSVMX19jcNYikWeRgaFUEGJHKdkyORnDXXX0N8S7ARZrR1s9JUHr4LDUeq+rpPbaFECQuhEAX/tZWobrZC69NRlX1wqURoszEpi1Yni1GepnoXp9eDTfjTkVfjJYuFL3DUWdY2LuAj0PGKjSvMTlM93kLLXAvsuiD+DVzOWRUlR9rqijpxsH10Yzp4fiixG4qBjw0pr4LJLnmXgMe6ypc1QOZulshdloYr6NWzbyedRqhTuxx5wOtAvqH2Pj13TrtrvvO9xCp9Im25QX99gutM1nCNV4j00ESX2cn8sYNJWQZQFAgQOpkfY3k4ktwbD7xpxOuGr7hZUag5f5HlskQfkPYbHlGY/dIZTJLPNtLJ4Zienmsgp38cVp1uYT25phyq21fsIhYpP87YkD2TwviVRG4fxoe2NHBFlkGyq4B7eMacVgEaQwYW9dKyTgMMKqM7RDSNAE0vN4VOUNeqUk8jqvk0L4gz61tknhsdJPVPFI8xFtSFvI4yfyrc3tUjHocfW8NLhGC5aOZnI2qjnmP9FOUQmMlvs=|6O7Hk8OZNec6RytZ/H287r4S4aGfRFDf9RkL0B2SbfDx0YEiI5PjCzLZBpQD/HTfJ0X2HCpY23lg/jlQr3eMcA== + # + # Other fields used in the notification request sent to e-DMS + # + batch-id: BATCH_999 + client-division-id: CLIENT_DIVISION_999 + application-id: E-RIGHTS + # In case of issues when sending notification, the number of days after which the message will not be sent anyway. + notification-expiration-days: 28 diff --git a/e-rights-back-office/src/main/resources/application-development.yml b/e-rights-back-office/src/main/resources/application-development.yml new file mode 100644 index 0000000..935816e --- /dev/null +++ b/e-rights-back-office/src/main/resources/application-development.yml @@ -0,0 +1,299 @@ +############ +############ +# e-RIGHTS # +############ + +application: + protocol: HTTPS + host-name: localhost + front-office-host-name: localhost:6112 + test-mailbox: Martial-Franck.TCHEPGANG@ext.eeas.europa.eu + proxy-host: iasproxy.eeas.europa.eu + proxy-port: 3128 + proxy-user: a0099a5c + proxy-pass: encrypted:bVh4/iHDAg7gC/Vui/OyHLpgg3tVX65SFi71J/Q1QDNBSJnpvPfsmxnH+u+NVX1HbJGUbA1huSO5Ta2cfYCBXTpAwfSrQaxHQkK97Chp+IfqTdR+YkT74ahfW7fC8ryIgwp/prKPbZsHBTo72xg4HC87k08P5MI1ezKMP9HTFfmRFT4os5pwYbatqpaNJFhkCm2RH8LK2mKvmsGMtD1CUIvmqt+mffFTsCoCubjgbOVl+hh4xDkRBH3jzJ2rJfA2iwBoje2D0ZGO8t11juLA4syd9ecrAv27jdmfxMkG1z9J6bSUwrGlFSSd8h3kYqCscdD9I9Y1WZ/PMO+kofXwk+kOdUqrD2tDB8IfkoI8Mf+q7ToVdR5H5ZHUIrvHOGeDEBbrTA3H/fXiViNUZGLIQCj32ti0pEqoYXWlVkcBtURvO5RtgydgN9qRKmh8KWk7tnSrLbRkdg+4MF8sTLWlO43F+UjcrU76832LiNkjcmsm/PbtuSSaaOZ5p6wyWVoqJpKurquQiXD2bFJL0NDFSfoh9JHBEKR82RfjbJ8trHWRkTgyByLrb7xgQi2AxdOfd3O/4blPRexMZ9rPE911ux2lBVmpcE+PNKTc3WHYL25M+fkJQGSrXapMuy7fPVV2cqI5mLwesL2o9VIukeqXvfuWtD/SoOxEZ1OEuNMiGE8=|qEc63l7SBmnrV1H7tobrS2K1v1VCUt/HILFuS6aeZDyAX03b4o0AEdzgLlAbeakhF+59qbrPVeqCQYiBq5rQag== + gosselin-host: https://eeas.gosselingroup.eu + gosselin-path: /EEAS/rateTEST.php + gosselin-api-key: 60d8def0a9f5bebd66c78825ec14dd5e + gosselin-api-id: RequestorEEAS + gosselin-active: true + environment: DEVELOPMENT + sysper-api-key-header-name: testkey + sysper-proxy-ticket-header-name: proxy-ticket + sysper-api-key: 178b7f57-7130-49d1-9c3e-99f6a716cbc9 + sysper-base-path: https://api.acceptance.tech.ec.europa.eu/acceptance/SYSPER2/ajax + sysper-service-url: https://api.acceptance.tech.ec.europa.eu/SYSPER2/ajax/v1 + sysper-context-path: /erights + +resilience4j.retry: + configs: + default: + maxAttempts: 3 + waitDuration: 100 + retryExceptions: + - org.springframework.web.client.HttpServerErrorException + - java.util.concurrent.TimeoutException + - java.io.IOException + - java.net.SocketException + - eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException + instances: + paymentExistSysper: + baseConfig: default + createSysper: + baseConfig: default +########## +# Spring # +########## + +#logging: +# level: +# org.springframework.security: DEBUG + +management: + endpoints: + web: + exposure: + include: '*' + +############### +# Ananke Core # +############### + +base: + money: + currencies: + - code: STN + default-fraction-digits: 2 + numeric-code: 930 + - code: UYW + default-fraction-digits: 4 + numeric-code: 927 + + +connector: + http: + secure: + socket-timeout: + value: 10 + time-unit: SECONDS + connection-timeout: + value: 10 + time-unit: SECONDS + connection-pool: + max-size: 20 + max-size-per-route: 20 + time-to-live: + value: 5 + time-unit: SECONDS +# jms: +# connection-factory: +# jndi-name: weblogic.jms.ConnectionFactory +# broker-url: http://wlstd00999.cc.cec.eu.int:1042 +# #class-name: weblogic.jndi.WLInitialContextFactory +# credentials: +# enable: true +# username: LSY_ERIGHT +# password: encrypted:EkUJIYIq5nPU4hR6qKEfSXc3SFTqPzXnPSO009E54EVm6KgOu4StF1+cLJ0wKwnfaiFhN4gR7FDugcRXLxFXPEmXB/22WeTVWt4yeR41xOWQhTuH5fUhwDkyhnjVfpbXrRsIHuAOwh0dNMoGgjmW7KrOicKEvEhzGkHoanafTjcxdf6gOtpoZkmOy567UpXPfkxyziB0hywqeC0G9/bu/Cg5Ot5GvxIBWAcmNxAHBS4hA9Qy1mQ+2n/ib1FIa0qj20okf5FxmH9lj0krMCXyKkPvhprO8KP8waYlSdYJ30QMVzx/WUQvydKN0Ee3W0aUvTViEPauclOLusybXjrVvMdZCM+4YX4CdoFIruikZKX/+V2UiZiHFtjIiUd/njwlI1501LJf2LbF9sR4JNu204OMEOhQ2YNw0/Qi+ym0et6SBjvp+S80hustqh09fS/rJvRguCpZxyjvy6jEyu3vCiqVVgTQQXZScoCgnJF4yGwdLNx6mYUwWYbc0X/MPdurUOizygOCm2qGwlqIGxrt9vf61s0+PFEP/poCXL4T5kmom3rKEy69lNjECPaIzKLuiX2xrRlHKZkWHKh7GlViAR4/R7MD9oTmhTIvAUW6EPZ7Q5MX/lmAVdiuVSf3z4S3KUKhai0bgrxQiMXKMd5lQxY/Rq09uPzu6c2nOJKs0aU=|BWZ18PmQikqTE2DJGywP2ysPfseVAGpTzlbBjhiKpa54PRZsRsDF31sPQzFReOsVJ1MOzoBK6wY8Nvwmg5n1Dg== + + queue: + jaxb: + enable: true + enable-mock: false + +data: + jpa: + show-sql: true + format-sql: true + connection-pool: + min-size: 2 + max-size: 2 + +security: + api: + http: + authentication: + managed: + assurance-level: HIGH + accept-strengths: PASSWORD + server: + protocol: ${application.protocol} + host-name: ${application.host-name} + port: 6113 + ssl-port: 6114 + security-headers: + content-security-policy: + policy-directives: default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://uap.dev.eeas.europa.eu; style-src 'self' 'unsafe-inline' ; img-src * data:; font-src 'self' data:; connect-src 'self' https://uap.dev.eeas.europa.eu; media-src 'none'; object-src 'self'; child-src 'self'; frame-ancestors 'self'; form-action 'self' webgate.ec.europa.eu:* ecas.cc.cec.eu.int:* intragate.test.ec.europa.eu:*; upgrade-insecure-requests; block-all-mixed-content; sandbox allow-downloads allow-forms allow-same-origin allow-scripts allow-popups allow-modals; base-uri 'self'; manifest-src 'self'; plugin-types application/pdf + + + eu-login-server: + direct: + host-name: webgate.acceptance.ec.europa.eu + one-way-ssl-port: 443 + ticket: + proxy: + requestor: + type: PATH_BASED + path-based: + - pattern: http://playground:7013/Ares_pg/ecas/login.do + source: SUPPLIED + supplied: + mode: FIXED + fixed: + ticket: T1ck3t + service: + requestor: + enable: true + key-store: + default-alias: j977c9j + name: ./src/main/resources/certs/j977c9j.jks + password: changeit + type: JKS + +################ +# Ananke Tools # +################ + + +#abac-connector: +# sync: +# environment: +# type: CUSTOM +# custom: https://intragate.test.ec.europa.eu/webpaxanwtst_nt_pub/summa/service +# credentials: +# password: encrypted:Car7Qtplqni0XqK2dhQfuNW6Y8ondoE5I1hq9cFedDyf36nn59CN64nUa9lljzZE3kbZu96WPoXyfziguVsLx7jM0GjWAC2SQ7hDCZTWLli+f6pU/vnJANw8LTY6eCl1wD5hknHFDA14+49/WJSNK+KXzXKKIPYyr/X9WCJqDmdnd9mKev/bQnxNRG2UeEwS/dzVHPvJlRFdp6K4XWveE9rq8pteNpOaRnPfgFe3qO/Znardv6DDmEtktiT3nlqhVaLxPg2XQFBsAZ2PRF46qCgxP/Wk7XHenDd9n42zB+YjkJZ7vlrLs7O49hXLLrH8uTHTl7UH6opljLZOBUKUqdAUfCmF1yERgvVj5sHdvCG1jdHXe3TPcwsbrnDCSM1sULTN/i2GbmwfjrsfJWXEddL7vADyz6xfAuhGYWAmfTebJzXnhVgOssw+5/p7k2Rs++jnQ10DSIBgH2OjD2fSaRYdzSpMFZIV6ePkOSZGZFkWmoxR9wC7wp9k2MrbHuQ0IfF+iRXFHY8g+hWry1YZHv9SA9OnI2Fs5AXueTvh0FRGgFSfdLlskBq4liYF/dXFxbC2+oFlcgJMGPH5s/8EQQ6xJQ9U4D3lDwHGRzZj/BnLa47lZqut4gO3ir6T1wrLhkJ5uT2RPbn/KHVt0ac9Cz3G7vp0oa/JZNAmM3mCpkM=|zUYRBLqYzdC+2vhwqylXsHhtYLRk4cpzcSjluBl8PWlcTdq8YvyyebufAP7SORd4BtCkFQPjcgHDa+N/VLmnDQ== + + + +hermes-connector: + environment: TEST + + +################# +# Skyscanner WS # +################# + +skyscanner: + create-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/create + poll-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/poll/%s + api-key: encrypted:0vVXCvl5kdwkak+nHnTQmM2rukrmLlbR8lQTe2wTHY1tafxhnqmbPR5SJzDM56XfHqnlPhFmyYNTF3GlFu1kZzfmseymgoPvX4R06CoMYxIJyQ0pVLhG3G0s7NnIJPdFUkKbjo2B2EsSwlhSihZ0+oZRHBb79xe10Fwye/8O2aF+YU1RCn42ns4E9hBZwnFDPtYnVXGYZ/vbfn0mHgq9tpLBAJlfRBVbgwVoi5dDoMoMnUHd2/FuWCj4PsA1GaiNzTP2mqyFv1ABd/Mg0Aw1gTfsiMIo10/ehNVm+nPUksHVoxLP7d704YXmIB9PZkpREovgTzkPumVpXktHZxEHgLeJxoJMa6u073XjAjxdWg2mHENEzxInT8UMrp8Gg9rqbhEQPLQy0lMYO9O9l38IVeZvplV6MiA+8Xq/aoSWxobbjmhIjk91fYK3S0cTVTDE1x3wm0UkoSLH9OzOXrRsXiqdc2Q/XrHac1g2M9wxA8FPVXNFHykKBztC1NLq9TluTTsbIZwoeCH09DajaQwZL9T4cYJ4H97y6vf5yJ7voQjJXEjKMwWd8DmTyOz3SQ2DMvxm8yBj5hCJfkAkuR2lbSElX0cUA2kceYaVdQZg9uAExr7LtV4cTedL24BFVqyit0oFhfEFytocw1+3HXfu6T0eGS0NVFD2uic0NUvdOMI=|ef5SrkI5p/3i4vnVXqhuDVt26g3belo1esWoDb7uPyzzqThW1b5IqIZeLTVnpElJzEFvfJayQzHD7cWjHwVMaA== + + +############################## +# e-DMS REST client settings # +############################## + + +# e-DMS REST requests settings: All fields mandatory if enabled = true +edms: + enabled: true + + # Unused: We use "application: mailbox:" in application.yml + message-from: Unused + + # From the generated JWKS keys take kid value PublicJWKS + eulogin-oidc-jwk-kid: encrypted:skbeM9ikaCHZbecdZX5ho2HY6aW1gGdTY8pIUcwr2ExcEy6V1hV9lBAaVV23bUGpfqODRqx/c2oyq6fnASuguvX3fyKJC7oRXyt1f+QyvTL5UBLqA9Css1sUD5FsO/QkQgvjuV7Z1O6rgl81m9JkfviWmymuQlmlhw6/f44YGtsXD1rH0LBkFFiG4dVy59hBYS5/WFBnb+7bLwdKAMRa47rQDuqlveUt2zd+JaG02/3ZOHUl67h1BqzvfO5qAvR9qKlR7UwuJoIW9ZS1KpiwAnTKYhz0N/1vJsb1P3Ze2AmdK10xFl3tGqDpljI+5z1rAhLY+0IVgUbm4sz5MdXqcCWQZYJ9ju7Q+060lyFWQv2i8axwpSU/b53C1WNRGTcg63JaUWJvMpyMZLkZh8yR0Ety1C1GX5YHR9XBKttHmmDGfb/9ADr/qFsx+1ekQuEUwvYwv29E0GP1tW/JVtc4IG0GAW5Ppxp7VnRC2nT1NWN/rvoQLHMEtlL4HoXtgr1uamfdcnxMgYA2+5tfgl1/lMm17QrxeFYKklX3UCp0iifUoXo9FV07gCGYbyzRp7z34Irp7EZdeKk3sQNcVO0q8NUDdJZIQ4LVTz2ZGrUiLdLryqidCTlGwfxhQt7WLNvC3eRcJhANkbQEL/oMFiHtYTgEgMqCLBd6aHyVoZY6Rfk=|97LEaFaPlWV6fGjsuTZ/XKB2QgBgaUO5yz5euLsaSiyeLNmK6qRYD73ucGeI0TMLXn4/nHg3Eksxg97FMfvLzA== + + # From the generated JWKS keys take, kid and x values from PublicJWKS, and d value from Private JWKS + eulogin-oidc-private-key: encrypted:fOO10XL4KkvkevZW7HdsvmX7wv3LWXrJJk9YPjsVZ29chiETnybL+NAWef0qV9RHELGVi5Oc0WVMJh5PKIWDhCBlKCJpn/v1p1p8RXMa7Bds/i3PPsqe7EFh/yH4brt5656EldXXhMttKYwgxS1tojdGE15O5dP96ylcKafD1pus7J3ohdjUi4CziVafaj58B230jH8Q4WZIPPwm0aQ7r8JJWw2fbVy1mDFwUagewuztruKfanlPNVgsBi+vOimiQcoyxJ5j9CAZBcribwJC1HbL4a4n7Y4jwVkOcB2Mj37aJVDghtYsud3YvsUyi1QJm2ta5CsZ5vUmANPGRVw3kCgM8XexebS39Sx1Tc+lAsz2ufWw6ijFzHmH4Ls2n3zxJGmLBixGBt5rrlcQ1L20xwBP2r6EwgfOmFpXco2O4VlYwRFkAJWGDaaA/IxGOsLqlnRemkdV73H6ghSR4K3KnpHleDK2n0O+/BnSszMVtvORJHLiq0R15KP5GJLoC0ljxQ1LMtCkEn8mIqiXVd3RdUWhewfpUa2VJQl9AOylDGaNNCA+L/VuRGNF92Axe6qNtE0uBIOkyV44tIQ4p45uNcU6GaFica0Z49XAn7O2Dkr750tfCr8JxuCgcLEm3jidqGCk1E8sTpZG0QxZsMPtl9txN/jxE/sfK3opsbFYp98=|52SC6KQ0Bd/znJb9UkRvrP9xv4YB+uMDAkSyaZ98ijfQ14tLTtce9EOdndlmie7eoNSEjLY/nb50d3MGe+yqyA== + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:EJFavNxx0Ih+Yj7lndwi4eHbufQjneaCmQEcYJUYBD3AARbwgJqazVwur9IBEpylihNJnfmESGJwxjNVq6kWQM9+du+c14VrRfMkSmrOv8EfRF2oBD6etE/ZefsKdV8MZnEZZJvahykJIHcfqXL2horKHF2tRnhFTDwD2iYBx7F1SVfK7o7nW8x43qJiAlYP+r9KP6HD4A7vydlI6mfTp7KFcZU/IQbV5k6amHne/68ed4ClFRkH3QDZimUN+PXuWLmWBGxk68EXYCTHEGdsAqr+PnHpfuWqYyL9X+8YcsPi646i3ulWjxWrFlxQBtEZbECBmmRTE3D+VrKAUYQWgHsH5ZnldGZMnwYTCVfer+OLGTsvf70oqzX9SBUD0kw5MIxED4AejG+qDAVY75Bf4zHyncBlQDqxX2tPSK+4J9dtg0Gri8KhZA4kThEJohNYIiL2VCRac7Ok8sV1gNZ0ywayX4WzXS29S58KwFi7He4PUB6mnnhKCo2qw0xom17X7xI5IY2z14Of09zArdPDU2UfjcNVxDH2sihZH71ZckgDbtHOXwcxKk6Pen+94fzhWUoDY3l0p9pavIZ81UX33benMg5+szJrIuUNlf09rwRI3zn8dPJPb2fjR5tiFgXsKr4bDwRkefKAakS5kOT/GfaLK+6BLyP55cg7OLQqsSg=|j4oOlyoyXT1yNXdGf7r9JPM4LChByk00mWgCCdoLnAxOxTu6eHTLn6Dwo59WKDT7mMDsJXEdTuhTCaxOhF1fBQ== + + eulogin-oidc-token-endpoint: https://ecas.acceptance.ec.europa.eu/cas/oauth2/token + + # Rest config (previously with "rest:", now with prefix "rest-") + # ------------------------------------- + rest-pop-token-provider: edmsLoginPoPTokenProvider + # rest-send-messages-url: https://intragate.test.ec.europa.eu/e-dms-rest + rest-send-messages-url: https://webgate.acceptance.ec.testa.eu/e-dms-rest + # OIDC Client ID - It should be provided by the e-DMS team or the Deployment Manager + rest-edms-client-id: encrypted:hhlYoHgC4xRkpoegG+brzFjAbBGeHCEYLbKI9k4ROE6vCbWOiZaPyCYjl16p/S5hzCLBaKYnzUrGZv+jpQ4fypwl7JNyFo+CUd/nBrB3Hl8tckKlIss2JjQ+8EqmxIrxN5Eonb7cEkErmSVMX19jcNYikWeRgaFUEGJHKdkyORnDXXX0N8S7ARZrR1s9JUHr4LDUeq+rpPbaFECQuhEAX/tZWobrZC69NRlX1wqURoszEpi1Yni1GepnoXp9eDTfjTkVfjJYuFL3DUWdY2LuAj0PGKjSvMTlM93kLLXAvsuiD+DVzOWRUlR9rqijpxsH10Yzp4fiixG4qBjw0pr4LJLnmXgMe6ypc1QOZulshdloYr6NWzbyedRqhTuxx5wOtAvqH2Pj13TrtrvvO9xCp9Im25QX99gutM1nCNV4j00ESX2cn8sYNJWQZQFAgQOpkfY3k4ktwbD7xpxOuGr7hZUag5f5HlskQfkPYbHlGY/dIZTJLPNtLJ4Zienmsgp38cVp1uYT25phyq21fsIhYpP87YkD2TwviVRG4fxoe2NHBFlkGyq4B7eMacVgEaQwYW9dKyTgMMKqM7RDSNAE0vN4VOUNeqUk8jqvk0L4gz61tknhsdJPVPFI8xFtSFvI4yfyrc3tUjHocfW8NLhGC5aOZnI2qjnmP9FOUQmMlvs=|6O7Hk8OZNec6RytZ/H287r4S4aGfRFDf9RkL0B2SbfDx0YEiI5PjCzLZBpQD/HTfJ0X2HCpY23lg/jlQr3eMcA== + # + # Other fields used in the notification request sent to e-DMS + # + batch-id: BATCH_999 + client-division-id: CLIENT_DIVISION_999 + application-id: E-RIGHTS + # In case of issues when sending notification, the number of days after which the message will not be sent anyway. + notification-expiration-days: 28 + + + # ABAC Hub - ACC +#p2p-hub: +# # From the generated JWKS keys take kid PublicJWKS +# eulogin-oidc-jwk-kid: encrypted:skbeM9ikaCHZbecdZX5ho2HY6aW1gGdTY8pIUcwr2ExcEy6V1hV9lBAaVV23bUGpfqODRqx/c2oyq6fnASuguvX3fyKJC7oRXyt1f+QyvTL5UBLqA9Css1sUD5FsO/QkQgvjuV7Z1O6rgl81m9JkfviWmymuQlmlhw6/f44YGtsXD1rH0LBkFFiG4dVy59hBYS5/WFBnb+7bLwdKAMRa47rQDuqlveUt2zd+JaG02/3ZOHUl67h1BqzvfO5qAvR9qKlR7UwuJoIW9ZS1KpiwAnTKYhz0N/1vJsb1P3Ze2AmdK10xFl3tGqDpljI+5z1rAhLY+0IVgUbm4sz5MdXqcCWQZYJ9ju7Q+060lyFWQv2i8axwpSU/b53C1WNRGTcg63JaUWJvMpyMZLkZh8yR0Ety1C1GX5YHR9XBKttHmmDGfb/9ADr/qFsx+1ekQuEUwvYwv29E0GP1tW/JVtc4IG0GAW5Ppxp7VnRC2nT1NWN/rvoQLHMEtlL4HoXtgr1uamfdcnxMgYA2+5tfgl1/lMm17QrxeFYKklX3UCp0iifUoXo9FV07gCGYbyzRp7z34Irp7EZdeKk3sQNcVO0q8NUDdJZIQ4LVTz2ZGrUiLdLryqidCTlGwfxhQt7WLNvC3eRcJhANkbQEL/oMFiHtYTgEgMqCLBd6aHyVoZY6Rfk=|97LEaFaPlWV6fGjsuTZ/XKB2QgBgaUO5yz5euLsaSiyeLNmK6qRYD73ucGeI0TMLXn4/nHg3Eksxg97FMfvLzA== +# # From the generated JWKS keys take, kid and x from PublicJWKS, and d from Private JWKS +# eulogin-oidc-private-key: encrypted:fOO10XL4KkvkevZW7HdsvmX7wv3LWXrJJk9YPjsVZ29chiETnybL+NAWef0qV9RHELGVi5Oc0WVMJh5PKIWDhCBlKCJpn/v1p1p8RXMa7Bds/i3PPsqe7EFh/yH4brt5656EldXXhMttKYwgxS1tojdGE15O5dP96ylcKafD1pus7J3ohdjUi4CziVafaj58B230jH8Q4WZIPPwm0aQ7r8JJWw2fbVy1mDFwUagewuztruKfanlPNVgsBi+vOimiQcoyxJ5j9CAZBcribwJC1HbL4a4n7Y4jwVkOcB2Mj37aJVDghtYsud3YvsUyi1QJm2ta5CsZ5vUmANPGRVw3kCgM8XexebS39Sx1Tc+lAsz2ufWw6ijFzHmH4Ls2n3zxJGmLBixGBt5rrlcQ1L20xwBP2r6EwgfOmFpXco2O4VlYwRFkAJWGDaaA/IxGOsLqlnRemkdV73H6ghSR4K3KnpHleDK2n0O+/BnSszMVtvORJHLiq0R15KP5GJLoC0ljxQ1LMtCkEn8mIqiXVd3RdUWhewfpUa2VJQl9AOylDGaNNCA+L/VuRGNF92Axe6qNtE0uBIOkyV44tIQ4p45uNcU6GaFica0Z49XAn7O2Dkr750tfCr8JxuCgcLEm3jidqGCk1E8sTpZG0QxZsMPtl9txN/jxE/sfK3opsbFYp98=|52SC6KQ0Bd/znJb9UkRvrP9xv4YB+uMDAkSyaZ98ijfQ14tLTtce9EOdndlmie7eoNSEjLY/nb50d3MGe+yqyA== +# # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account +# eulogin-oidc-client-id: encrypted:EJFavNxx0Ih+Yj7lndwi4eHbufQjneaCmQEcYJUYBD3AARbwgJqazVwur9IBEpylihNJnfmESGJwxjNVq6kWQM9+du+c14VrRfMkSmrOv8EfRF2oBD6etE/ZefsKdV8MZnEZZJvahykJIHcfqXL2horKHF2tRnhFTDwD2iYBx7F1SVfK7o7nW8x43qJiAlYP+r9KP6HD4A7vydlI6mfTp7KFcZU/IQbV5k6amHne/68ed4ClFRkH3QDZimUN+PXuWLmWBGxk68EXYCTHEGdsAqr+PnHpfuWqYyL9X+8YcsPi646i3ulWjxWrFlxQBtEZbECBmmRTE3D+VrKAUYQWgHsH5ZnldGZMnwYTCVfer+OLGTsvf70oqzX9SBUD0kw5MIxED4AejG+qDAVY75Bf4zHyncBlQDqxX2tPSK+4J9dtg0Gri8KhZA4kThEJohNYIiL2VCRac7Ok8sV1gNZ0ywayX4WzXS29S58KwFi7He4PUB6mnnhKCo2qw0xom17X7xI5IY2z14Of09zArdPDU2UfjcNVxDH2sihZH71ZckgDbtHOXwcxKk6Pen+94fzhWUoDY3l0p9pavIZ81UX33benMg5+szJrIuUNlf09rwRI3zn8dPJPb2fjR5tiFgXsKr4bDwRkefKAakS5kOT/GfaLK+6BLyP55cg7OLQqsSg=|j4oOlyoyXT1yNXdGf7r9JPM4LChByk00mWgCCdoLnAxOxTu6eHTLn6Dwo59WKDT7mMDsJXEdTuhTCaxOhF1fBQ== +# eulogin-oidc-token-endpoint: 'https://ecas.acceptance.ec.europa.eu/cas/oauth2/token' +# rest-client-id: 'GfukQA20tWyzkOEzYmItNb1ApnBhZq1zVc53UXESX3aaDbGzzbgi19DujkpfD4zboK0hm1C63hbOKcSpb7XWp9J0-NaAc23CqASe7kXiiv5CGx4' +# url: 'https://p2p-hub.test.app.eeas.europa.eu/eeashub/' +# secure-connection: false + + +###### BUENO +#p2p-hub: +# # From the generated JWKS keys take kid PublicJWKS +# eulogin-oidc-jwk-kid: 'A7nNSUFIK59Z6y1Pm4I0Hacsief4fDwuWzEnpt5ICPs' +# # From the generated JWKS keys take, kid and x from PublicJWKS, and d from Private JWKS +# eulogin-oidc-private-key: '{"keys":[{"kty":"OKP","use":"sig","crv":"Ed25519","kid":"A7nNSUFIK59Z6y1Pm4I0Hacsief4fDwuWzEnpt5ICPs","x":"cRL_mnoRMjwY6wFoRSEcYewdbcywU6-Nl-2APF8y6mQ","alg":"EdDSA","d":"5bNij9Gpn3gJYjavjJ9HcRCeuoYW1PjSBc-Vs-dsyE0"}]}' +# # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account +# eulogin-oidc-client-id: 'VWDbDCKPx5wZZ0ERypepb9U5QE0faqXdYzzgYlVxrhwuc6EbEFPF6HWzw81cH5sQNDyBiHKhIAxUdiy9zmyZU2a-zGrcc7GCOy8j5oE9Vjw5DC' +# eulogin-oidc-token-endpoint: 'https://ecas.acceptance.ec.europa.eu/cas/oauth2/token' +# rest-client-id: 'GfukQA20tWyzkOEzYmItNb1ApnBhZq1zVc53UXESX3aaDbGzzbgi19DujkpfD4zboK0hm1C63hbOKcSpb7XWp9J0-NaAc23CqASe7kXiiv5CGx4' +# url: 'https://p2p-hub.test.app.eeas.europa.eu/eeashub' +# secure-connection: false +# mtls-enabled: false + + +## +#p2p-hub: +# # From the generated JWKS keys take kid PublicJWKS +# eulogin-oidc-jwk-kid: 'F_Ui4u7igQSCf0dynlubuI-4iIg4q25l0poWhArpIbU' +# # From the generated JWKS keys take, kid and x from PublicJWKS, and d from Private JWKS +# eulogin-oidc-private-key: '{"keys":[{"kty":"OKP","use":"sig","crv":"Ed25519","kid":"F_Ui4u7igQSCf0dynlubuI-4iIg4q25l0poWhArpIbU","x":"BPF4HGLwBsJ0yoAXV1YeG6o0AXyA520NoMrBzbJRhls","alg":"EdDSA","d":"fO4mfo4xjfq5iOAiJ-94N1W6kPczsg6OU7iiVjZkfRQ"}]}' +# +# # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account +# eulogin-oidc-client-id: 'h2EJF1ZbEBQwON2cDWMfRRaRNGisuUx0RQ5UnpPl4rzJoEC2e5cyk0ULQw3oJv42uMxsC7zxqVeVZMszLsY7sW0-zGrcc7GCOy8uTt7QbK6zm6' +# eulogin-oidc-token-endpoint: 'https://ecas.acceptance.ec.europa.eu/cas/oauth2/token' +# rest-client-id: 'GfukQA20tWyzkOEzYmItNb1ApnBhZq1zVc53UXESX3aaDbGzzbgi19DujkpfD4zboK0hm1C63hbOKcSpb7XWp9J0-NaAc23CqASe7kXiiv5CGx4' +# url: 'https://p2p-hub.test.app.eeas.europa.eu/eeashub/' +# secure-connection: true +# mtls-enabled: true +# key-store: 'classpath:certs/j905b1e.p12' +# key-store-password: 'AaenFvcXMloGKcU9Lo7Q' +# key-store-type: 'PKCS12' +# key-alias: 'j905b1e' +# + +#TEST CONFIG +#p2p-hub: +# # From the generated JWKS keys take kid PublicJWKS +# eulogin-oidc-jwk-kid: 'F_Ui4u7igQSCf0dynlubuI-4iIg4q25l0poWhArpIbU' +# # From the generated JWKS keys take, kid and x from PublicJWKS, and d from Private JWKS +# eulogin-oidc-private-key: '{"keys":[{"kty":"OKP","use":"sig","crv":"Ed25519","kid":"F_Ui4u7igQSCf0dynlubuI-4iIg4q25l0poWhArpIbU","x":"BPF4HGLwBsJ0yoAXV1YeG6o0AXyA520NoMrBzbJRhls","alg":"EdDSA","d":"fO4mfo4xjfq5iOAiJ-94N1W6kPczsg6OU7iiVjZkfRQ"}]}' +# +# # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account +# eulogin-oidc-client-id: 'h2EJF1ZbEBQwON2cDWMfRRaRNGisuUx0RQ5UnpPl4rzJoEC2e5cyk0ULQw3oJv42uMxsC7zxqVeVZMszLsY7sW0-zGrcc7GCOy8uTt7QbK6zm6' +# eulogin-oidc-token-endpoint: 'https://ecas.acceptance.ec.europa.eu/cas/oauth2/token' +# rest-client-id: 'GfukQA20tWyzkOEzYmItNb1ApnBhZq1zVc53UXESX3aaDbGzzbgi19DujkpfD4zboK0hm1C63hbOKcSpb7XWp9J0-NaAc23CqASe7kXiiv5CGx4' +# url: 'https://p2p-hub.test.app.eeas.europa.eu/eeashub/' +# secure-connection: false +# mtls-enabled: false + +#ACC Config +p2p-hub: + # From the generated JWKS keys take kid PublicJWKS + eulogin-oidc-jwk-kid: 'F_Ui4u7igQSCf0dynlubuI-4iIg4q25l0poWhArpIbU' + # From the generated JWKS keys take, kid and x from PublicJWKS, and d from Private JWKS + eulogin-oidc-private-key: '{"keys":[{"kty":"OKP","use":"sig","crv":"Ed25519","kid":"F_Ui4u7igQSCf0dynlubuI-4iIg4q25l0poWhArpIbU","x":"BPF4HGLwBsJ0yoAXV1YeG6o0AXyA520NoMrBzbJRhls","alg":"EdDSA","d":"fO4mfo4xjfq5iOAiJ-94N1W6kPczsg6OU7iiVjZkfRQ"}]}' + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: 'h2EJF1ZbEBQwON2cDWMfRRaRNGisuUx0RQ5UnpPl4rzJoEC2e5cyk0ULQw3oJv42uMxsC7zxqVeVZMszLsY7sW0-zGrcc7GCOy8uTt7QbK6zm6' + eulogin-oidc-token-endpoint: 'https://ecas.acceptance.ec.europa.eu/cas/oauth2/token' + rest-client-id: '4fzzKgzqr1uMXgzhCOlYzQxlXah008HLu8feGcVOGRWWNkIB8wbQ6kA0wkjzzbJhrrOmtLtXzJOzodxk8RziDDkpe-zGrcc7GCOy8Sl7JxHB7VJm' + url: 'https://p2p-hub.acc.app.eeas.europa.eu/eeashub/' + secure-connection: false + mtls-enabled: false + + diff --git a/e-rights-back-office/src/main/resources/application-maintenance.yml b/e-rights-back-office/src/main/resources/application-maintenance.yml new file mode 100644 index 0000000..ef98305 --- /dev/null +++ b/e-rights-back-office/src/main/resources/application-maintenance.yml @@ -0,0 +1,190 @@ +############ +# e-RIGHTS # +############ + +application: + protocol: HTTPS + host-name: intragate.maintenance.ec.europa.eu + test-mailbox: Martial-Franck.TCHEPGANG@ext.eeas.europa.eu + proxy-host: ps-lux-usr.cec.eu.int + proxy-port: 8012 + proxy-user: a0099a5c + proxy-pass: k4B5yPe3 + gosselin-host: https://eeas.gosselingroup.eu + gosselin-path: /EEAS/rateTEST.php + gosselin-api-key: 60d8def0a9f5bebd66c78825ec14dd5e + gosselin-api-id: RequestorEEAS + gosselin-active: true + environment: MAINTENANCE + sysper-api-key-header-name: testkey + sysper-proxy-ticket-header-name: proxy-ticket + sysper-api-key: 3bbf6f17-e113-4a16-acfc-a20dd656cac4 + sysper-base-path: https://api.acceptance.tech.ec.europa.eu/acceptance/SYSPER2/ajax + sysper-service-url: http://sysper2-t13.cc.cec.eu.int:7129/SYSPER2/ajax + sysper-context-path: /erights + +resilience4j.retry: + configs: + default: + maxAttempts: 3 + waitDuration: 100 + retryExceptions: + - org.springframework.web.client.HttpServerErrorException + - java.util.concurrent.TimeoutException + - java.io.IOException + - java.net.SocketException + - eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException + instances: + paymentExistSysper: + baseConfig: default + createSysper: + baseConfig: default +########## +# Spring # +########## + +management: + endpoints: + web: + exposure: + include: '*' + +############### +# Ananke Core # +############### + +base: + money: + currencies: + - code: STN + default-fraction-digits: 2 + numeric-code: 930 + - code: UYW + default-fraction-digits: 4 + numeric-code: 927 + +connector: + http: + secure: + socket-timeout: + value: 10 + time-unit: SECONDS + connection-timeout: + value: 10 + time-unit: SECONDS + connection-pool: + max-size: 20 + max-size-per-route: 20 + time-to-live: + value: 5 + time-unit: SECONDS + jms: + connection-factory: + broker-url: t3://localhost:1042 + jndi-factory-class-name: weblogic.jndi.WLInitialContextFactory + jndi-name: jms/erightsConnectionFactory + credentials: + enable: true + username: LSY_ERIGHT + password: gjO*&.x4@i^'kd#yQ + class-name: org.springframework.jndi.JndiObjectFactoryBean + queue: + jaxb: + enable: true + enable-mock: false + +data: + jpa: + show-sql: false + format-sql: false + connection-pool: + min-size: 10 + max-size: 20 + +security: + api: + http: + authentication: + managed: + assurance-level: HIGH + accept-strengths: PASSWORD + server: + protocol: ${application.protocol} + host-name: ${application.host-name} + ssl-port: 443 + security-headers: + content-security-policy: + policy-directives: default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline' ; img-src * data:; font-src 'self' data:; connect-src 'self'; media-src 'none'; object-src 'self'; child-src 'self'; frame-ancestors 'self'; form-action 'self' webgate.ec.europa.eu:* ecas.cc.cec.eu.int:* intragate.test.ec.europa.eu:*; upgrade-insecure-requests; block-all-mixed-content; sandbox allow-downloads allow-forms allow-same-origin allow-scripts allow-popups allow-modals; base-uri 'self'; manifest-src 'self'; plugin-types application/pdf + + eu-login-server: + direct: + host-name: webgate.acceptance.ec.europa.eu + one-way-ssl-port: 443 + ticket: + proxy: + requestor: + type: FIXED + fixed: + source: BASE + +################ +# Ananke Tools # +################ + +hermes-connector: + environment: TEST + ecas: + environment: ACCEPTANCE + +file-management: + file-system: + path: + root-folder: /ec/local/weblogic/app/files/file-management + + +# ------------------------------------------------- + +# e-DMS REST requests settings: All fields mandatory if enabled = true +edms: + enabled: true + + # Unused: We use "application: mailbox:" in application.yml + message-from: Unused + + # From the generated JWKS keys take kid value PublicJWKS + eulogin-oidc-jwk-kid: F_Ui4u7igQSCf0dynlubuI-4iIg4q25l0poWhArpIbU + + # From the generated JWKS keys take, kid and x values from PublicJWKS, and d value from Private JWKS + eulogin-oidc-private-key: '{"keys":[{"kty":"OKP","use":"sig","crv":"Ed25519","kid":"F_Ui4u7igQSCf0dynlubuI-4iIg4q25l0poWhArpIbU","x":"BPF4HGLwBsJ0yoAXV1YeG6o0AXyA520NoMrBzbJRhls","alg":"EdDSA","d":"fO4mfo4xjfq5iOAiJ-94N1W6kPczsg6OU7iiVjZkfRQ"}]}' + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: h2EJF1ZbEBQwON2cDWMfRRaRNGisuUx0RQ5UnpPl4rzJoEC2e5cyk0ULQw3oJv42uMxsC7zxqVeVZMszLsY7sW0-zGrcc7GCOy8uTt7QbK6zm6 + + eulogin-oidc-token-endpoint: https://ecas.acceptance.ec.europa.eu/cas/oauth2/token + + # Rest config (previously with "rest:", now with prefix "rest-") + # ------------------------------------- + rest-pop-token-provider: edmsLoginPoPTokenProvider + # rest-send-messages-url: https://intragate.test.ec.europa.eu/e-dms-rest + rest-send-messages-url: https://webgate.acceptance.ec.testa.eu/e-dms-rest + # OIDC Client ID - It should be provided by the e-DMS team or the Deployment Manager + rest-edms-client-id: uUxqnUwzbilH06xc1aVP5COAGyqqFVQPgnga6JnTD8qpWdXAZ7t4AfzMYv4AQyBQ0kEwliLgkGnU3YAiimFPM9-ra8gnCF1lWact304rIzHJw + # + # Other fields used in the notification request sent to e-DMS + # + batch-id: BATCH_999 + client-division-id: CLIENT_DIVISION_999 + application-id: E-RIGHTS + # In case of issues when sending notification, the number of days after which the message will not be sent anyway. + notification-expiration-days: 28 + + +################# +# Skyscanner WS # +################# + +skyscanner: + create-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/create + poll-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/poll/%s + api-key: eu847462319462799979241421154933 + diff --git a/e-rights-back-office/src/main/resources/application-production.yml b/e-rights-back-office/src/main/resources/application-production.yml new file mode 100644 index 0000000..f208ee7 --- /dev/null +++ b/e-rights-back-office/src/main/resources/application-production.yml @@ -0,0 +1,203 @@ +############ +# e-RIGHTS # +############ + +application: + protocol: HTTPS + host-name: webgate.ec.testa.eu + front-office-host-name: webgate.ec.europa.eu + proxy-host: ps-lux-usr.cec.eu.int + proxy-port: 8012 + proxy-user: a00jqdke + proxy-pass: JkUjhA789ghL + gosselin-host: https://eeas.gosselingroup.eu + gosselin-path: /EEAS/rate.php + gosselin-api-key: encrypted:wmLvkpIrnt5WZsUbkEoFeszvk5sdYEyMVL51fkANIcw9bYTp69TzitfMcGKFvKbMea+spaOGfNK8mHneRkY2GVwM0frlUL6+svRIGXq8zWEyuRqUoyT/sUHvgcfketeBeetmQJ4VP9632EGlWL+9Vw7OKmaHYj0qeMTBXrdTcyPYT/lbtOhwo2SfoB+QfJofFeWAcrd0VVDNQZaatiZuGHOOfxTwB4VaZIRx5xAMYT9KE2TK77T5Luc2F/wtZvLZoc6PQOLC8Uig++cZcBHLaPeeXPQ4vxEadoFd3en0ov8IEg8WapUss4oa7yYsYNxWI8uDyuPtJsjrkCagx8DT79ID5TKFMS3tojHL/s1oQ2uROBNrNMDgJ5uiC0Tu5VirLvyj+UlIOKaXeP5FtUJKU9bBROLAfg1rZwjCCWRedGblrI0RZopxWpFEY5dRlSug0BbBvyGDwLXl02NeImnj3Z/ZWoilAH2owjglq7uS0ULuUplceRqU+FN+GzNBSd1sfgeW3A/XZOltZlJ9ZsnL75n/IaIdP3mY8ijRpTCb5efuOcKIaTEvyovDS0xWCzkF0RbKdTsGa21cXuVZhGcF88sG6D+RFBGe0ypiO2ctVXbak6m8YK8nDERR7D9PxiFcdpVqj8hJqcIpPpjelrhl6zHbAvLpfYqNSh9BWiTadPg=|xh8Mg/0pwBOoHB1HY/Jilk22oiieM7mnjmxELz5DBP+FtND0Cvg/JQxo1iO5WtfHiZaVoGQQskgGbAJrjs/0Nw== + gosselin-api-id: RequestorEEAS + gosselin-active: true + environment: PRODUCTION + # this key is only used if we hit APIM (API Gateway) https://api.tech.ec.europa.eu/ + # currently we are hitting directly their server https://intracomm.ec.testa.eu/SYSPER2/ + # so we do not need apikey because they ignore this sysper-api-key-header-name and sysper-api-key + # we keep this in case we move to APIM. If we move to APIM + # you need to request the sysper-api-key-header-name and sysper-api-key name to sysper team + sysper-api-key-header-name: not-used-key + sysper-api-key: 00000000-0000-0000-0000-000000000000 + + sysper-proxy-ticket-header-name: proxy-ticket + sysper-base-path: https://sysper2p.slb.ec.europa.eu:12309/SYSPER2/ajax + sysper-service-url: https://10.226.41.27:12309/SYSPER2/ajax + sysper-context-path: /erights + +resilience4j.retry: + configs: + default: + maxAttempts: 3 + waitDuration: 100 + retryExceptions: + - org.springframework.web.client.HttpServerErrorException + - java.util.concurrent.TimeoutException + - java.io.IOException + - java.net.SocketException + - eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException + instances: + paymentExistSysper: + baseConfig: default + createSysper: + baseConfig: default + +########## +# Spring # +########## + +management: + endpoints: + web: + exposure: + include: '*' + +############### +# Ananke Core # +############### + +base: + money: + currencies: + - code: STN + default-fraction-digits: 2 + numeric-code: 930 + - code: UYW + default-fraction-digits: 4 + numeric-code: 927 + +connector: + http: + secure: + socket-timeout: + value: 10 + time-unit: SECONDS + connection-timeout: + value: 10 + time-unit: SECONDS + connection-pool: + max-size: 20 + max-size-per-route: 20 + time-to-live: + value: 5 + time-unit: SECONDS +# jms: +# connection-factory: +# broker-url: t3://localhost:1042 +# jndi-factory-class-name: weblogic.jndi.WLInitialContextFactory +# jndi-name: jms/erightsConnectionFactory +# credentials: +# enable: true +# username: LSY_ERIGHT +# password: encrypted:n+d7M/6FG6ps+H8P59NhNjFvt0nL/03EGnHsZQBKJtTHlQmg4mFJPsBxV69XrXdQKrm2eyzGXuql7n61fKmwVfP0GwNmBWRga+A/WfI8BhqeUjBbDUsBPP9Bti4IRkXkPepNoO5Neiwb/u2GrsbA7IarFnM/yhjTRBhvPnRNbhgFLGsaDpGle3toQ0g/BfutoMkNM6Nhbwt6w5MPTufDp0FgvJEbBqhpDFYxEsrWN/m3rXb9DW6Cac0UQfSFDI6Hlx5vtEja1DKn+Mgg10NL7ClAiBNoRHfmjDQbnc2xejAjJH2o1HYG/AcEtIxWwyjE7KQfb9dJJ4InR6valmJuhNo7cWrLAdmyUoSTWlmYomaQ/k9F60fl0K0s6EBpDLpDvhl7C0KSa49QAOhYEfkUFHKxlripmvtnHpb//bng9YYN1w77DeIyw5R7YARjy7UwjgVC5w8Am0FFzCOSzuyuTFNC0fs39yqiyJ29yq2s2LmqFgACjhZbzhx514FnGneNVqzcgBL4eWQwo0wJrYcWcowHKOzMdcOCMPcqRfPTjvwvZAGwHIejGtOUAkZBiNhvXe6GBiWQ7GYEtYRrGbcNG8+ZkphWxxyCG4MyCxMD7G01NsT8BeJbXwdRER/CU2qPOQVb/cDU/qDJk3+Ac95qHg7a1+G4XtotL4GFe7NM8bo=|MR8O1k+4YSOIwZYoWmyIGZzc2Wo5RtNxd+UPNhCIUSdClPqs5VsuEgWIGiYZgIEEUj9HhrxGdl8a8Di0ZNVKSQ== +# class-name: org.springframework.jndi.JndiObjectFactoryBean + queue: + jaxb: + enable: true + enable-mock: false +data: + jpa: + show-sql: false + format-sql: false + connection-pool: + min-size: 10 + max-size: 20 + +security: + api: + http: + authentication: + managed: + assurance-level: HIGH + accept-strengths: PASSWORD + + server: + protocol: ${application.protocol} + host-name: ${application.host-name} + ssl-port: 443 + security-headers: + content-security-policy: + policy-directives: default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://uap.dev.eeas.europa.eu; style-src 'self' 'unsafe-inline' ; img-src * data:; font-src 'self' data:; connect-src 'self' https://uap.dev.eeas.europa.eu; media-src 'none'; object-src 'self'; child-src 'self'; frame-ancestors 'self'; form-action 'self' webgate.ec.europa.eu:* ecas.cc.cec.eu.int:* intragate.test.ec.europa.eu:*; upgrade-insecure-requests; block-all-mixed-content; sandbox allow-downloads allow-forms allow-same-origin allow-scripts allow-popups allow-modals; base-uri 'self'; manifest-src 'self'; plugin-types application/pdf + + ticket: + proxy: + requestor: + type: FIXED + fixed: + source: BASE + +################ +# Ananke Tools # +################ + +hermes-connector: + environment: PRODUCTION + ecas: + environment: PRODUCTION + + +# --- +# e-DMS REST requests settings: All fields mandatory if enabled = true +# ------------------------------------------------- +# These are the NON-PROD keys +# TODO: Obtain PROD keys and encrypt them +# ------------------------------------------------- +edms: + enabled: true + + # Unused: We use "application: mailbox:" in application.yml + message-from: Unused + + # From the generated JWKS keys take kid value PublicJWKS + eulogin-oidc-jwk-kid: encrypted:YS6QpLgzZzqO+UEqBnrFU9fWjJGTueaErb77R8meX/mQ6VHFW22jXQGR1fuQhEB1uiZEb0MKEMWd/JBvJViAC8t+WdpUSAA5JGys7oePXN9uEH7krybUGqYE0d3KZXCfD5O09uvU/5mpT6L/kaROnI92alXvfD0HLsZyZLNnLprrkxavzJ9kwfb88F5zbkuEPWPzUA41pOwJN8Ao2qspo5t6Ud5YN1Yd9noZOW+zQHbtepb+qhITAZciVeD/yMFMBg5gSmjxQrUgD/TasSnPq/01QmuvkAMjFm3zH022F92hmpfwAa6UAmpHVIq/XqGTGSTk1jdRzgyHh2WLHweBLYi0cMf01ZZL+yp0EoFf754C1vX8vCc4eXXuvG25Hy5XRdX2k2hs96D2KpabeIrpBjbM42G3nE/86POuktThsTz45dEyH7QC4YQRqWhcN3NyDhDwhcasUPWxcoZ98/fkkpOtGa3Bp3FPuBBA8etZOM2tEjWUfMGbI+NlyQGt7bgxM6dBRXfrEafN4qtNhH0eE5NmE2OZIN2cKlgQLUbAzoQC22JFikEWq+Np+4Qfyl3kz2S1QtTLxzWOdc+g1yalV8ASUIMhvaBGtc5FUXeHj0D+Izgk+pR6cWOxndYGJyxL1tPpov4a6j7So/VvQFCbuBArgkJgq/MK8+ytM4G6rBU=|kab4v2hPuU0f8EaXnjCsKr+/hK03wURImnSZ7yZkGp32ohJHAjZb0M2b018m1m4kXI6rP+bvjF4/FyYsR2pNrA== + + # From the generated JWKS keys take, kid and x values from PublicJWKS, and d value from Private JWKS + eulogin-oidc-private-key: encrypted:tat+GuEbVDiZwHqGwG7LRfn3ui0qm5kDzIsICOe+SRgeyrkcBR4hSJ/upsBSwN6Uq+4T1M2hVQrY63xTE7mFQ4l82taBbbURHCucByK97sljfoUhD6W8RlgQn8WfnZMkQ7TNC23oObHIFUQ4f4kHd4DijM6XQNA6TYC4uDzIMHJtd26ECJIe9BR/svHwfENjAnzgJyHNg0pMFM4oPGx1dX3Oo6v6QWRIFF63IDujRy2AFmPR9tRmN9daPSobPr8CER0W3A3q1VuPv5n4B3nxSCR8Zrfxo+GQLq54bRouX74JdsO7Ldw7Bq5QJJtkThLz1OQiWdEyvCEwFXDcEmOXhHbqNUeGvTSzQ2S3BdmFi1KX3Elem1IO1Etem4fhgLIookossEhuIZC4buj8nXSzRxTKa/piazv/WfkilcZ3ZAf7VFJOdqHT0qW4a7t1dOy0horY6suqUwnOMBgoJsSWRyRgIhwwoDJhM2dMJ0OL/ylfpwX87B0Pt5xfWTisscyHndfBdF2jGmdMZt8/Ct3FcLGUTNpVDgKND2+UnmLrryrcdRgG/17+FfpX5sTep/Bu+GGUXcGrmfzL29+Y1KlnXQSifcGVG1nbiQaFgfwkZ/8GGFV8MccABYUof0Z39x2g6cuZ7/Yhp7fwaqAM8aVEp6smdcAtJIdC5p2kXYcOJW0=|zS9Nf09sRpHULoMIWZ+D/yBiRiiI1eO41j8y25lkWqmn2DmJCcSOGWggEiEm3NHgSAw+TWL8VJxBFogMfs/v5A== + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:rNy73HfS2cPENON5aNe1NaftT9ImCYfUxp7T5hqoddbFcDA7fEU8TJfGVeWdrnYcQ99x34hbcyKMTSl02YhRKwc1UXnHPU9LkUS38fJVEIVKEuEn1R1RrqX7x0Z0fOeasWyytAwwYpV6C9qDHm9Dgpf74C2BmkBXcnYUgN8Z+HZUvuN0CV+GEZe6krBr5BFKJVnMe611GXvDXvQMjpeMalL/XUAVg/lYA+f2IcPYOUY23Mt5aif7RcO8Tk01BXObypJWkiGHEFlTZ5/DVTJomL9uAS3kteqNUsT5OyXUCWw0JpbBFrIhFU+Fs/F9JNGTvn550/EzYBKpzJCTI/LOWoi7pBM3I1RTzIf4ly2QRqv/xWD16JlRnjQjUCC/exHigGY/4NXDjPrUV7mXMgmrNbpJeMXGgGQiDI+KLAsdvFqRbceSjUePcXphzzpFzHN/CVIX48MWo9XLNqJ+ystZPqTJfHjAYe4hCDF4Gpg/BywXXcD3HPMi6j9rV2P13VaNdZIRRY2eHdGa+j0DBr9KYTUhsDlX8kQWVNYvIYiYZ1lp71YaC2BxoxcXNRVe9BgxpBmWar7pryuBMm7gBbGV/4zWjlSjNxkZs3rMpBrwmkV1ZhXOMWzyT/VArGWDQIeocuHS4NncM3aSqJFqEElzG+DdHmOx6AYq4Kqa2Rq8nwg=|Ehm9r7iJi8iUvdnohjyLkzW+Cr6WEOJT5l+Bpa4Qpi/1mZA1Zt17hNKQ2kC5yZQVgV3DlFGxBOkMCTYf4T/0fQ== + + eulogin-oidc-token-endpoint: https://ecas.ec.europa.eu/cas/oauth2/token + + # Rest config (previously with "rest:", now with prefix "rest-") + # ------------------------------------- + rest-pop-token-provider: edmsLoginPoPTokenProvider + rest-send-messages-url: https://webgate.ec.testa.eu/e-dms-rest + # OIDC Client ID - It should be provided by the e-DMS team or the Deployment Manager + rest-edms-client-id: encrypted:XsjltMKwRFLuxTcJYygonldv89RMfekBmUN3+q6cRvmd1ExjHG7tCmcNOLwCB6XL9QxWTMwE2uSF5F1HIhB17r1R0d5msod+f+Vc1Y0e9WiHjDC7GMppXVtbRBqJag+YJj1wDct1iya9I6ZRIhDfPvzlZccI8dluFrg8MrhlgaMyJklddLfKCrA2mRJjpY8A5oITaNpL3cP63+NYW5U+Db8hO7GmIUqMDkkW1pavKNmd+OfdKYNGNSx37FjVGuXIFGivdlN0n7s+LXFx0DSG7RvSpEunDRNfGbVKC1HqCa4DpCRN1KVw1lrtbMcEIV711dCOi2H8JluiVAagGEOPAk3Y6ff38+F8X7OYqy43okel1iH2v7FbN1XRCMjGb8mXJ0bwYIWxPZ3hBzikfXWZT3CGWeXc4jYV39zMeBF7OmLQXcazsZ+EIT43U0VjrQj8yHWRJTJmX1PLKXATO8gfForLebVfM29REIMS3ioK42t78949NlAlNWYO1xvzM8VLupcvcnjmy2+Gi2UF9mfp1E2GHVKmXfVHMWE5QFhOs3XRzOVh87yNvhMrlZsFFPYJpT2vL9yqdaNIRLvnsmNwQk72ZnMjINAYOYf88hEazKb2rAzUitYVqlXcZW9z4qFg0QK/Qieok2/mddZi84QhA+UOxy/Hm3++Q6Nf1vf26Z8=|w4qIoHmCFcKMaJkcpKh19cTVFiPyckKmjdxoOaBcsct33/2JhaFOlW1WiPm5e2WSjZCh9+2jwgw6odpJV+tUOA== + # + # Other fields used in the notification request sent to e-DMS + # + batch-id: BATCH_999 + client-division-id: CLIENT_DIVISION_999 + application-id: E-RIGHTS + # In case of issues when sending notification, the number of days after which the message will not be sent anyway. + notification-expiration-days: 28 + +################# +# Skyscanner WS # +################# + +skyscanner: + create-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/create + poll-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/poll/%s + api-key: eu847462319462799979241421154933 + + +p2p-hub: + # From the generated JWKS keys take kid PublicJWKS + eulogin-oidc-jwk-kid: encrypted:YS6QpLgzZzqO+UEqBnrFU9fWjJGTueaErb77R8meX/mQ6VHFW22jXQGR1fuQhEB1uiZEb0MKEMWd/JBvJViAC8t+WdpUSAA5JGys7oePXN9uEH7krybUGqYE0d3KZXCfD5O09uvU/5mpT6L/kaROnI92alXvfD0HLsZyZLNnLprrkxavzJ9kwfb88F5zbkuEPWPzUA41pOwJN8Ao2qspo5t6Ud5YN1Yd9noZOW+zQHbtepb+qhITAZciVeD/yMFMBg5gSmjxQrUgD/TasSnPq/01QmuvkAMjFm3zH022F92hmpfwAa6UAmpHVIq/XqGTGSTk1jdRzgyHh2WLHweBLYi0cMf01ZZL+yp0EoFf754C1vX8vCc4eXXuvG25Hy5XRdX2k2hs96D2KpabeIrpBjbM42G3nE/86POuktThsTz45dEyH7QC4YQRqWhcN3NyDhDwhcasUPWxcoZ98/fkkpOtGa3Bp3FPuBBA8etZOM2tEjWUfMGbI+NlyQGt7bgxM6dBRXfrEafN4qtNhH0eE5NmE2OZIN2cKlgQLUbAzoQC22JFikEWq+Np+4Qfyl3kz2S1QtTLxzWOdc+g1yalV8ASUIMhvaBGtc5FUXeHj0D+Izgk+pR6cWOxndYGJyxL1tPpov4a6j7So/VvQFCbuBArgkJgq/MK8+ytM4G6rBU=|kab4v2hPuU0f8EaXnjCsKr+/hK03wURImnSZ7yZkGp32ohJHAjZb0M2b018m1m4kXI6rP+bvjF4/FyYsR2pNrA== + # From the generated JWKS keys take, kid and x from PublicJWKS, and d from Private JWKS + eulogin-oidc-private-key: encrypted:tat+GuEbVDiZwHqGwG7LRfn3ui0qm5kDzIsICOe+SRgeyrkcBR4hSJ/upsBSwN6Uq+4T1M2hVQrY63xTE7mFQ4l82taBbbURHCucByK97sljfoUhD6W8RlgQn8WfnZMkQ7TNC23oObHIFUQ4f4kHd4DijM6XQNA6TYC4uDzIMHJtd26ECJIe9BR/svHwfENjAnzgJyHNg0pMFM4oPGx1dX3Oo6v6QWRIFF63IDujRy2AFmPR9tRmN9daPSobPr8CER0W3A3q1VuPv5n4B3nxSCR8Zrfxo+GQLq54bRouX74JdsO7Ldw7Bq5QJJtkThLz1OQiWdEyvCEwFXDcEmOXhHbqNUeGvTSzQ2S3BdmFi1KX3Elem1IO1Etem4fhgLIookossEhuIZC4buj8nXSzRxTKa/piazv/WfkilcZ3ZAf7VFJOdqHT0qW4a7t1dOy0horY6suqUwnOMBgoJsSWRyRgIhwwoDJhM2dMJ0OL/ylfpwX87B0Pt5xfWTisscyHndfBdF2jGmdMZt8/Ct3FcLGUTNpVDgKND2+UnmLrryrcdRgG/17+FfpX5sTep/Bu+GGUXcGrmfzL29+Y1KlnXQSifcGVG1nbiQaFgfwkZ/8GGFV8MccABYUof0Z39x2g6cuZ7/Yhp7fwaqAM8aVEp6smdcAtJIdC5p2kXYcOJW0=|zS9Nf09sRpHULoMIWZ+D/yBiRiiI1eO41j8y25lkWqmn2DmJCcSOGWggEiEm3NHgSAw+TWL8VJxBFogMfs/v5A== + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:rNy73HfS2cPENON5aNe1NaftT9ImCYfUxp7T5hqoddbFcDA7fEU8TJfGVeWdrnYcQ99x34hbcyKMTSl02YhRKwc1UXnHPU9LkUS38fJVEIVKEuEn1R1RrqX7x0Z0fOeasWyytAwwYpV6C9qDHm9Dgpf74C2BmkBXcnYUgN8Z+HZUvuN0CV+GEZe6krBr5BFKJVnMe611GXvDXvQMjpeMalL/XUAVg/lYA+f2IcPYOUY23Mt5aif7RcO8Tk01BXObypJWkiGHEFlTZ5/DVTJomL9uAS3kteqNUsT5OyXUCWw0JpbBFrIhFU+Fs/F9JNGTvn550/EzYBKpzJCTI/LOWoi7pBM3I1RTzIf4ly2QRqv/xWD16JlRnjQjUCC/exHigGY/4NXDjPrUV7mXMgmrNbpJeMXGgGQiDI+KLAsdvFqRbceSjUePcXphzzpFzHN/CVIX48MWo9XLNqJ+ystZPqTJfHjAYe4hCDF4Gpg/BywXXcD3HPMi6j9rV2P13VaNdZIRRY2eHdGa+j0DBr9KYTUhsDlX8kQWVNYvIYiYZ1lp71YaC2BxoxcXNRVe9BgxpBmWar7pryuBMm7gBbGV/4zWjlSjNxkZs3rMpBrwmkV1ZhXOMWzyT/VArGWDQIeocuHS4NncM3aSqJFqEElzG+DdHmOx6AYq4Kqa2Rq8nwg=|Ehm9r7iJi8iUvdnohjyLkzW+Cr6WEOJT5l+Bpa4Qpi/1mZA1Zt17hNKQ2kC5yZQVgV3DlFGxBOkMCTYf4T/0fQ== + eulogin-oidc-token-endpoint: https://ecas.ec.europa.eu/cas/oauth2/token + rest-client-id: 'l8L6OEN77OJdfXcvIkMadv1vH8aphIpL8xjNrcyLMFOJMegp4mC53fzkpf6AeigD0e1hwa5r2zXIRRNcwTKkkY-rS0vSrmBGYCqzSVlaxUyuM' + url: 'https://p2p-hub.eeas.testa.eu/eeashub/' + secure-connection: true + mtls-enabled: false diff --git a/e-rights-back-office/src/main/resources/application-standalone-activemq.yml b/e-rights-back-office/src/main/resources/application-standalone-activemq.yml new file mode 100644 index 0000000..966d022 --- /dev/null +++ b/e-rights-back-office/src/main/resources/application-standalone-activemq.yml @@ -0,0 +1,196 @@ +################################################### +# If you want to use JMS queues locally with ActiveMQ +# Just copy and paste this configuration on application-standalone.yml file +# Download any apache-activemq-5.16.* (example apache-activemq-5.16.5) +# Run: java -jar bin/activemq.jar start on your local machine +################################################### + +########## +# Spring # +########## + +server: + port: 6114 + servlet: + context-path: ${application.context-path} + +############### +# Ananke Core # +############### + + +# Embedded ActiveMQ Configuration +spring: + activemq: + pool: + enabled: true + max-connections: 50 + broker-url: tcp://localhost:61616 + user: admin + password: admin + packages: + trust-all: true + +api: + jms: + connection-factory: + use-connector-one: true +# connection-factory: +# broker-url: tcp://localhost:61616 +# class-name: org.apache.activemq.spring.ActiveMQConnectionFactory +# jndi-factory-class-name: org.apache.activemq.jndi.JNDIReferenceFactory + +connector: + jms: + # ACtiveMQ Configuration + connection-factory: + jndi-name: ConnectionFactory + broker-url: tcp://localhost:61616 + class-name: org.apache.activemq.spring.ActiveMQConnectionFactory + jndi-factory-class-name: org.apache.activemq.jndi.ActiveMQInitialContextFactory + + + queue: + jaxb: + enable: true + enable-mock: false + json: + enable-mock: true + topic: + jaxb: + enable-mock: true + json: + enable-mock: + +data: + jpa: + data-source: + driver-class-name: oracle.jdbc.OracleDriver + url: jdbc:oracle:thin:@OLRDEV13.CC.CEC.EU.INT:1597/ERIGHTS_EEAS_01_T_TAF.CC.CEC.EU.INT + username: ERIGHTS + password: encrypted:KqXrxoeQdSx1epV+0UTMndEXHnkJThGhCtHJv+VBOsXHz/WOeEe/wT7yZZi/q0OZ1vKethtT2DhwulQ3Csco2jCc+4W5sIP6lCPJMEFQ/qH3pr6UF0mc+xxI1tc9z/BysWXANxVj/NC1lS5PFTll7Z90WDnEVrYaWX9Za1FdDTuEsuNsz8y3S7YYHVNc7BEHQK6i4ZeAZyey8NgGmo/ZEcE/kDu7N8cySlXsk9fwzQTuJpKMqhujTk/pBxBiW92pfHmuxYOPuhJWpTNdIfllRQtuo9xMZwax1w8N+tA8wnI9mKfVCDG3uniu44/416B2XDQx1NssmNFmh+PfB0QdOD/3nhnt/8EQI3IBUCu0EHvEAh171MTrJ457CKhO4euXxB+1ceYXBKr2qmwQGxifUodWCBdM6jFqZJr8zG5vSanP4Z2zwXsJBV0RALeWRug+wPyFXgBuqpbQdFncrwB1QiAF2uasUAfdd2M0Ue0OuFGYSjM4olBo5awinRVMDHYyWFCAXV2PbB+OHAWcfpnHWSbHkpJIiORtLVKVJkjDu5O3SLbOADO4l1k/vc/CnFbvELHU9PSBWFuPjFxuaOWx6US28NCtlZajJc6v81R3mRH6gFLreeNvsIsMwk8eY0QDscHVPlFl21VplNdmSXzaot92OgnyIvrkaeDIPaZv6As=|OOKV/3EvgnUnUv5JdGCSAMS4NuuDILh1xVwGZHwkXrPFO41xTRpE/tcQpOGNDktQPEiUAqvLzAQJ5jOJWgnIPQ== + + + +#data: +# jpa: +# data-source: +# driver-class-name: oracle.jdbc.OracleDriver +# url: jdbc:oracle:thin:@OLRDEV15.CC.CEC.EU.INT:1597/ERIGHTS_EEAS_01_A_TAF.CC.CEC.EU.INT +# username: ERIGHTS +# password: f+.jc7bWvMP^PH8a +# + + + + + + + + + + +#connector: +# jms: +# connection-factory: +# broker-url: tcp://localhost:61616 +# class-name: org.apache.activemq.spring.ActiveMQConnectionFactory +# jndi-factory-class-name: org.apache.activemq.jndi.JNDIReferenceFactory +# jndi-name: jms/erightsConnectionFactory +# credentials: +# enable: true +# username: LSY_ERIGHT +# password: encrypted:IHN9jZyV6ZkHCJbXihGOGMqHFmhHPVoJF59y/uK0aTbDoMw61IXWU/qvObXhc7d3acOkdEQ4ePQI4yAOEzGEP64HREu8yGp0/GibKFO7wslP7YUjDDNBQ08yXL0/3XTSVkqA01I1SH/7TJ/FTnbBg95mRbIs13AceY6aE2DINosn8RpQG5n/tQWWhi7bgqI+loWcdgL5e+WwA7QMz+gSlQ1iaXy6OqlvBNsztD6S3gxoFdzh2vHNN/0fw+LJLWyXc3m17alHKEg5shyyFh1P5SVrxrgpnlNse5sY7QYeLJrgZj5lN1hoJDkDFwo+pQeGAWgqw3ih7f/XHQ6Op8QbBp+y3ky+JIboh6yZcN+U32+lDZIvYUmoo75gFfLXj36vMkqTDjHelBTj4MQ8Cu60oALKVscKFU25mVzlTDqnPS3yU+kPgLNUpUvrdQngU36hb5hjjB/sxJYzkBt2Alq3cE7Wcz5cWOAsvcBX42tbu5P17c4hHZXTwXvqc6BwGsEUTQq2MHxfK6VNopoo7NqpnjaoD26kqS7WTwDDDTDURDT+SnV3Npa8SEcrkNv5TD3Ll0EfMj5OJFMvm7WT9p8kBwFvD1I+ROKHnjdeKWkBIDU8AZWci7fnAX5E4thCc5E6Tcn+4fOLONuTymw4ljPKtvbcEtO1j0j+MstfGw6QOnQ=|MtznGa+xFfwW7MfSUkaqU0MikcwCnj7yWjsgLsbHGZIyylbuX1x2NOqnUrjUUjfQG3DIO4wjhwwudsx/zqfg/A== +# queue: +# jaxb: +# enable: true +# enable-mock: false + + +#data: +# jpa: +# data-source: +# driver-class-name: oracle.jdbc.OracleDriver +# url: jdbc:oracle:thin:@(DESCRIPTION_LIST= +# (LOAD_BALANCE=ON) +# (FAILOVER=ON) +# (DESCRIPTION= +# (SOURCE_ROUTE=ON) +# (ADDRESS=(PROTOCOL=TCP)(HOST=cmandmz1.ec.testa.eu)(PORT=1630)) +# (ADDRESS=(PROTOCOL=TCP)(HOST=cmanint1.cc.cec.eu.int)(PORT=1630)) +# (ADDRESS=(PROTOCOL=TCP)(HOST=olrdev26.cc.cec.eu.int)(PORT=1597)) +# (CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_D_TAF.cc.cec.eu.int)) +# ) +# (DESCRIPTION= +# (SOURCE_ROUTE=ON) +# (ADDRESS=(PROTOCOL=TCP)(HOST=cmandmz1.ec.testa.eu)(PORT=1630)) +# (ADDRESS=(PROTOCOL=TCP)(HOST=cmanint2.cc.cec.eu.int)(PORT=1630)) +# (ADDRESS=(PROTOCOL=TCP)(HOST=olrdev26.cc.cec.eu.int)(PORT=1597)) +# (CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_D_TAF.cc.cec.eu.int)) +# ) +# (DESCRIPTION= +# (SOURCE_ROUTE=ON) +# (ADDRESS=(PROTOCOL=TCP)(HOST=cmandmz2.ec.testa.eu)(PORT=1630)) +# (ADDRESS=(PROTOCOL=TCP)(HOST=cmanint1.cc.cec.eu.int)(PORT=1630)) +# (ADDRESS=(PROTOCOL=TCP)(HOST=olrdev26.cc.cec.eu.int)(PORT=1597)) +# (CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_D_TAF.cc.cec.eu.int)) +# ) +# (DESCRIPTION= +# (SOURCE_ROUTE=ON) +# (ADDRESS=(PROTOCOL=TCP)(HOST=cmandmz2.ec.testa.eu)(PORT=1630)) +# (ADDRESS=(PROTOCOL=TCP)(HOST=cmanint2.cc.cec.eu.int)(PORT=1630)) +# (ADDRESS=(PROTOCOL=TCP)(HOST=olrdev26.cc.cec.eu.int)(PORT=1597)) +# (CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_D_TAF.cc.cec.eu.int)) +# ) +# ) +# +# username: ERIGHTS +# password: encrypted:LzcIyotjbCnHEl+vSuwYJUvEHafmUt2zdpkciBNn5dQLIu49HILxyEJfPX98byc9uZmGTdBknxeP/eJEToUK7fG3fXFT5Vscw51SOv1D4EIKVeA5Wp6ZcPb5AsUHpzQ2iztt3T0YyeE4XoZh3T+69pzVu2ky0NCNqyolFeH4EkosLW22HePCWtQ2AbZZF8OhNEWn8xkN6KNRpAyCbGQsZsAg69Q1r0nE7ZGrw8JXv9TyaXt6Vqd7LRLAr3pa8SOu1L2iKDPCSWJDeoKcYDmyytzwGJruUrGsXs1iOGICqX+pfnOWfWS0P10wGabqDGqrWb5tWOab7OyHKTU9JF/njPGdFZMGTjr1TWrijU+6p3Ig9bWXCzusm1CVnGA3AXFIwDmBgkhdFgBhFkdjSSK0LuJPNGsp2PXxZhTvomEp4SfKlMLDCbJNfVWtgV/Du6810MYLbl9Dbc1F/ymMHh0PVMHAOHIvMI02P6KY/lEpX7YAX6UDRlUNJ4XfVLpTXNfzcBgeCsw1UUbVo6mL4cjvm8rU7ylJViRfFHnmLEO4dJw6KTOcdPacQIQN2mtpM6PzprnePfhbu1EbkQKsD8cWWECO+p+YCaLI4IyxJYuwf4037nDjz+IbAmRBDMJsLv/6u620vN1rtYJxjus3TOqRikPYgLpXyweRZlere4uLjCE=|vWDUd6+gEubvVqqf/7r9eQY1JQvuLYD4HHD+tCdur3QrcJXjaHUuy36jysuo/scNX/VILv3dGouOGw6R5FJSWg== + + +################ +# Ananke Tools # +################ + + +hermes-connector: + environment: TEST + ecas: + environment: ACCEPTANCE + + + # ------------------------------------------------- + +# e-DMS REST requests settings: All fields mandatory if enabled = true +edms: + enabled: true + + # Unused: We use "application: mailbox:" in application.yml + message-from: Unused + + # From the generated JWKS keys take kid value PublicJWKS + eulogin-oidc-jwk-kid: encrypted:skbeM9ikaCHZbecdZX5ho2HY6aW1gGdTY8pIUcwr2ExcEy6V1hV9lBAaVV23bUGpfqODRqx/c2oyq6fnASuguvX3fyKJC7oRXyt1f+QyvTL5UBLqA9Css1sUD5FsO/QkQgvjuV7Z1O6rgl81m9JkfviWmymuQlmlhw6/f44YGtsXD1rH0LBkFFiG4dVy59hBYS5/WFBnb+7bLwdKAMRa47rQDuqlveUt2zd+JaG02/3ZOHUl67h1BqzvfO5qAvR9qKlR7UwuJoIW9ZS1KpiwAnTKYhz0N/1vJsb1P3Ze2AmdK10xFl3tGqDpljI+5z1rAhLY+0IVgUbm4sz5MdXqcCWQZYJ9ju7Q+060lyFWQv2i8axwpSU/b53C1WNRGTcg63JaUWJvMpyMZLkZh8yR0Ety1C1GX5YHR9XBKttHmmDGfb/9ADr/qFsx+1ekQuEUwvYwv29E0GP1tW/JVtc4IG0GAW5Ppxp7VnRC2nT1NWN/rvoQLHMEtlL4HoXtgr1uamfdcnxMgYA2+5tfgl1/lMm17QrxeFYKklX3UCp0iifUoXo9FV07gCGYbyzRp7z34Irp7EZdeKk3sQNcVO0q8NUDdJZIQ4LVTz2ZGrUiLdLryqidCTlGwfxhQt7WLNvC3eRcJhANkbQEL/oMFiHtYTgEgMqCLBd6aHyVoZY6Rfk=|97LEaFaPlWV6fGjsuTZ/XKB2QgBgaUO5yz5euLsaSiyeLNmK6qRYD73ucGeI0TMLXn4/nHg3Eksxg97FMfvLzA== + + # From the generated JWKS keys take, kid and x values from PublicJWKS, and d value from Private JWKS + eulogin-oidc-private-key: encrypted:fOO10XL4KkvkevZW7HdsvmX7wv3LWXrJJk9YPjsVZ29chiETnybL+NAWef0qV9RHELGVi5Oc0WVMJh5PKIWDhCBlKCJpn/v1p1p8RXMa7Bds/i3PPsqe7EFh/yH4brt5656EldXXhMttKYwgxS1tojdGE15O5dP96ylcKafD1pus7J3ohdjUi4CziVafaj58B230jH8Q4WZIPPwm0aQ7r8JJWw2fbVy1mDFwUagewuztruKfanlPNVgsBi+vOimiQcoyxJ5j9CAZBcribwJC1HbL4a4n7Y4jwVkOcB2Mj37aJVDghtYsud3YvsUyi1QJm2ta5CsZ5vUmANPGRVw3kCgM8XexebS39Sx1Tc+lAsz2ufWw6ijFzHmH4Ls2n3zxJGmLBixGBt5rrlcQ1L20xwBP2r6EwgfOmFpXco2O4VlYwRFkAJWGDaaA/IxGOsLqlnRemkdV73H6ghSR4K3KnpHleDK2n0O+/BnSszMVtvORJHLiq0R15KP5GJLoC0ljxQ1LMtCkEn8mIqiXVd3RdUWhewfpUa2VJQl9AOylDGaNNCA+L/VuRGNF92Axe6qNtE0uBIOkyV44tIQ4p45uNcU6GaFica0Z49XAn7O2Dkr750tfCr8JxuCgcLEm3jidqGCk1E8sTpZG0QxZsMPtl9txN/jxE/sfK3opsbFYp98=|52SC6KQ0Bd/znJb9UkRvrP9xv4YB+uMDAkSyaZ98ijfQ14tLTtce9EOdndlmie7eoNSEjLY/nb50d3MGe+yqyA== + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:EJFavNxx0Ih+Yj7lndwi4eHbufQjneaCmQEcYJUYBD3AARbwgJqazVwur9IBEpylihNJnfmESGJwxjNVq6kWQM9+du+c14VrRfMkSmrOv8EfRF2oBD6etE/ZefsKdV8MZnEZZJvahykJIHcfqXL2horKHF2tRnhFTDwD2iYBx7F1SVfK7o7nW8x43qJiAlYP+r9KP6HD4A7vydlI6mfTp7KFcZU/IQbV5k6amHne/68ed4ClFRkH3QDZimUN+PXuWLmWBGxk68EXYCTHEGdsAqr+PnHpfuWqYyL9X+8YcsPi646i3ulWjxWrFlxQBtEZbECBmmRTE3D+VrKAUYQWgHsH5ZnldGZMnwYTCVfer+OLGTsvf70oqzX9SBUD0kw5MIxED4AejG+qDAVY75Bf4zHyncBlQDqxX2tPSK+4J9dtg0Gri8KhZA4kThEJohNYIiL2VCRac7Ok8sV1gNZ0ywayX4WzXS29S58KwFi7He4PUB6mnnhKCo2qw0xom17X7xI5IY2z14Of09zArdPDU2UfjcNVxDH2sihZH71ZckgDbtHOXwcxKk6Pen+94fzhWUoDY3l0p9pavIZ81UX33benMg5+szJrIuUNlf09rwRI3zn8dPJPb2fjR5tiFgXsKr4bDwRkefKAakS5kOT/GfaLK+6BLyP55cg7OLQqsSg=|j4oOlyoyXT1yNXdGf7r9JPM4LChByk00mWgCCdoLnAxOxTu6eHTLn6Dwo59WKDT7mMDsJXEdTuhTCaxOhF1fBQ== + + eulogin-oidc-token-endpoint: https://ecas.acceptance.ec.europa.eu/cas/oauth2/token + + # Rest config (previously with "rest:", now with prefix "rest-") + # ------------------------------------- + rest-pop-token-provider: edmsLoginPoPTokenProvider + # rest-send-messages-url: https://intragate.test.ec.europa.eu/e-dms-rest + rest-send-messages-url: https://webgate.acceptance.ec.testa.eu/e-dms-rest + # OIDC Client ID - It should be provided by the e-DMS team or the Deployment Manager + rest-edms-client-id: encrypted:hhlYoHgC4xRkpoegG+brzFjAbBGeHCEYLbKI9k4ROE6vCbWOiZaPyCYjl16p/S5hzCLBaKYnzUrGZv+jpQ4fypwl7JNyFo+CUd/nBrB3Hl8tckKlIss2JjQ+8EqmxIrxN5Eonb7cEkErmSVMX19jcNYikWeRgaFUEGJHKdkyORnDXXX0N8S7ARZrR1s9JUHr4LDUeq+rpPbaFECQuhEAX/tZWobrZC69NRlX1wqURoszEpi1Yni1GepnoXp9eDTfjTkVfjJYuFL3DUWdY2LuAj0PGKjSvMTlM93kLLXAvsuiD+DVzOWRUlR9rqijpxsH10Yzp4fiixG4qBjw0pr4LJLnmXgMe6ypc1QOZulshdloYr6NWzbyedRqhTuxx5wOtAvqH2Pj13TrtrvvO9xCp9Im25QX99gutM1nCNV4j00ESX2cn8sYNJWQZQFAgQOpkfY3k4ktwbD7xpxOuGr7hZUag5f5HlskQfkPYbHlGY/dIZTJLPNtLJ4Zienmsgp38cVp1uYT25phyq21fsIhYpP87YkD2TwviVRG4fxoe2NHBFlkGyq4B7eMacVgEaQwYW9dKyTgMMKqM7RDSNAE0vN4VOUNeqUk8jqvk0L4gz61tknhsdJPVPFI8xFtSFvI4yfyrc3tUjHocfW8NLhGC5aOZnI2qjnmP9FOUQmMlvs=|6O7Hk8OZNec6RytZ/H287r4S4aGfRFDf9RkL0B2SbfDx0YEiI5PjCzLZBpQD/HTfJ0X2HCpY23lg/jlQr3eMcA== + # + # Other fields used in the notification request sent to e-DMS + # + batch-id: BATCH_999 + client-division-id: CLIENT_DIVISION_999 + application-id: E-RIGHTS + # In case of issues when sending notification, the number of days after which the message will not be sent anyway. + notification-expiration-days: 28 diff --git a/e-rights-back-office/src/main/resources/application-standalone.yml b/e-rights-back-office/src/main/resources/application-standalone.yml new file mode 100644 index 0000000..727b6b5 --- /dev/null +++ b/e-rights-back-office/src/main/resources/application-standalone.yml @@ -0,0 +1,205 @@ +################################################### +# If you want to use JMS queues locally with ActiveMQ +# Just copy and paste this configuration on application-standalone.yml file +# Download any apache-activemq-5.16.* (example apache-activemq-5.16.5) +# Run: java -jar bin/activemq.jar start on your local machine + +# +# https://activemq.apache.org/components/classic/download/ + +################################################### + +########## +# Spring # +########## + +server: + port: 6114 + servlet: + context-path: ${application.context-path} + +############### +# Ananke Core # +############### + + + + + +api: + jms: + connection-factory: + use-connector-one: true +# connection-factory: +# broker-url: tcp://localhost:61616 +# class-name: org.apache.activemq.spring.ActiveMQConnectionFactory +# jndi-factory-class-name: org.apache.activemq.jndi.JNDIReferenceFactory + +connector: + jms: + connection-factory: + broker-url: https://erightsjms-test.acceptance.eeas.europa.eu:443 + jndi-factory-class-name: weblogic.jndi.WLInitialContextFactory + jndi-name: jms/erightsConnectionFactory + credentials: + enable: true + username: LSY_ERIGHT + password: encrypted:KijqtmcakoNJ6FfsFpCqY4EupPIZ+QuyO0nAcmUvX81xllDPO0yLDlcancn6wPR0wIaW3tXjXsSf3qy4iSBBs8vMrluH6RtpgB/nhnhLTu7nA4fvjXGDNtfmg9IQgvY+W3145OZ2H5IVZMkpFlfflMoDC1DwHN3JwHAnqpLQH5OKsmiQml1oTSICBGa5igrVcLMq1ZUhfTLF4x8OAgH/ai8yLsoGT7yCb/YUeFfEKxN/sx0Bz6gMBW0jmJHq2YWivEBfRczz4P56CMTe8QeDccaYuvWb3IVMEwEiqjCYOSYdRjO6ECBGbrcDd76gY44F0zKzQrykEH5qJEi2VZk8JrHVE43ZSoGEXfqaUA1xwaRDC6xcJVER+LBW4okuJDrmOp31yv/F4amev5a4P7t7rp/70BW7i2JcHX17q4Bud8xgKu5bnP5fMfxSV06jFG5Kig70X2RN5es4n8f1G55KsiFeqLzFtaw4zgGm584xIlM3fCoomV/3IEg7Tzq+jmjjupVmefAxWIpMs94A3z3x2HzHwYjxs+kqqrzEcibqmx98lMmKdI5a5DEKKB228/FRE7GQuigG/aUf7PjL2TNo2AdZGMtEv0u0+QIWlHbvORit4cCNE1U0hZ4Sel/Ks1L1qxHei4e0jGS1DaE0XXhudG2gnNmh6Hq/axh1YqpEe1Q=|dMeRinOfjT8pvitDn+XnEmymQ2qcvHkD/3bRGQAAJarV7M5PhMXrtbX6Uw7xIDBTDTLXoYKN6TM42AHjdpb9hw== + class-name: org.springframework.jndi.JndiObjectFactoryBean + + queue: + jaxb: + enable: true + enable-mock: false + +data: + jpa: + data-source: + driver-class-name: oracle.jdbc.OracleDriver + username: ERIGHTS + #ACC DB + url: "jdbc:oracle:thin:@(DESCRIPTION_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON)(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ1.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT1.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV15.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_A_TAF.CC.CEC.EU.INT)))(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ1.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT2.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV15.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_A_TAF.CC.CEC.EU.INT)))(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ2.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT1.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV15.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_A_TAF.CC.CEC.EU.INT)))(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ2.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT2.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV15.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_A_TAF.CC.CEC.EU.INT))))" # ACC DB + password: f+.jc7bWvMP^PH8a + + #TEST +# url: "jdbc:oracle:thin:@(DESCRIPTION_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON)(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ1.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT1.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV13.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_T_TAF.CC.CEC.EU.INT)))(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ1.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT2.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV13.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_T_TAF.CC.CEC.EU.INT)))(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ2.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT1.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV13.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_T_TAF.CC.CEC.EU.INT)))(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ2.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT2.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV13.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_T_TAF.CC.CEC.EU.INT))))" # TEST DB +# password: encrypted:KqXrxoeQdSx1epV+0UTMndEXHnkJThGhCtHJv+VBOsXHz/WOeEe/wT7yZZi/q0OZ1vKethtT2DhwulQ3Csco2jCc+4W5sIP6lCPJMEFQ/qH3pr6UF0mc+xxI1tc9z/BysWXANxVj/NC1lS5PFTll7Z90WDnEVrYaWX9Za1FdDTuEsuNsz8y3S7YYHVNc7BEHQK6i4ZeAZyey8NgGmo/ZEcE/kDu7N8cySlXsk9fwzQTuJpKMqhujTk/pBxBiW92pfHmuxYOPuhJWpTNdIfllRQtuo9xMZwax1w8N+tA8wnI9mKfVCDG3uniu44/416B2XDQx1NssmNFmh+PfB0QdOD/3nhnt/8EQI3IBUCu0EHvEAh171MTrJ457CKhO4euXxB+1ceYXBKr2qmwQGxifUodWCBdM6jFqZJr8zG5vSanP4Z2zwXsJBV0RALeWRug+wPyFXgBuqpbQdFncrwB1QiAF2uasUAfdd2M0Ue0OuFGYSjM4olBo5awinRVMDHYyWFCAXV2PbB+OHAWcfpnHWSbHkpJIiORtLVKVJkjDu5O3SLbOADO4l1k/vc/CnFbvELHU9PSBWFuPjFxuaOWx6US28NCtlZajJc6v81R3mRH6gFLreeNvsIsMwk8eY0QDscHVPlFl21VplNdmSXzaot92OgnyIvrkaeDIPaZv6As=|OOKV/3EvgnUnUv5JdGCSAMS4NuuDILh1xVwGZHwkXrPFO41xTRpE/tcQpOGNDktQPEiUAqvLzAQJ5jOJWgnIPQ== + +#data: +# jpa: +# data-source: +# driver-class-name: oracle.jdbc.OracleDriver +# url: jdbc:oracle:thin:@OLRDEV15.CC.CEC.EU.INT:1597/ERIGHTS_EEAS_01_A_TAF.CC.CEC.EU.INT +# username: ERIGHTS +# password: f+.jc7bWvMP^PH8a +# + +security: + ticket: + proxy: + requestor: + type: PATH_BASED + path-based: + - pattern: 'https://**' + source: FILE + file: + mode: FIXED + fixed: + path: C:/DEV/proxy_tickets/erights/pt.txt + + + + + + + + + +#connector: +# jms: +# connection-factory: +# broker-url: tcp://localhost:61616 +# class-name: org.apache.activemq.spring.ActiveMQConnectionFactory +# jndi-factory-class-name: org.apache.activemq.jndi.JNDIReferenceFactory +# jndi-name: jms/erightsConnectionFactory +# credentials: +# enable: true +# username: LSY_ERIGHT +# password: encrypted:IHN9jZyV6ZkHCJbXihGOGMqHFmhHPVoJF59y/uK0aTbDoMw61IXWU/qvObXhc7d3acOkdEQ4ePQI4yAOEzGEP64HREu8yGp0/GibKFO7wslP7YUjDDNBQ08yXL0/3XTSVkqA01I1SH/7TJ/FTnbBg95mRbIs13AceY6aE2DINosn8RpQG5n/tQWWhi7bgqI+loWcdgL5e+WwA7QMz+gSlQ1iaXy6OqlvBNsztD6S3gxoFdzh2vHNN/0fw+LJLWyXc3m17alHKEg5shyyFh1P5SVrxrgpnlNse5sY7QYeLJrgZj5lN1hoJDkDFwo+pQeGAWgqw3ih7f/XHQ6Op8QbBp+y3ky+JIboh6yZcN+U32+lDZIvYUmoo75gFfLXj36vMkqTDjHelBTj4MQ8Cu60oALKVscKFU25mVzlTDqnPS3yU+kPgLNUpUvrdQngU36hb5hjjB/sxJYzkBt2Alq3cE7Wcz5cWOAsvcBX42tbu5P17c4hHZXTwXvqc6BwGsEUTQq2MHxfK6VNopoo7NqpnjaoD26kqS7WTwDDDTDURDT+SnV3Npa8SEcrkNv5TD3Ll0EfMj5OJFMvm7WT9p8kBwFvD1I+ROKHnjdeKWkBIDU8AZWci7fnAX5E4thCc5E6Tcn+4fOLONuTymw4ljPKtvbcEtO1j0j+MstfGw6QOnQ=|MtznGa+xFfwW7MfSUkaqU0MikcwCnj7yWjsgLsbHGZIyylbuX1x2NOqnUrjUUjfQG3DIO4wjhwwudsx/zqfg/A== +# queue: +# jaxb: +# enable: true +# enable-mock: false + + +#data: +# jpa: +# data-source: +# driver-class-name: oracle.jdbc.OracleDriver +# url: jdbc:oracle:thin:@(DESCRIPTION_LIST= +# (LOAD_BALANCE=ON) +# (FAILOVER=ON) +# (DESCRIPTION= +# (SOURCE_ROUTE=ON) +# (ADDRESS=(PROTOCOL=TCP)(HOST=cmandmz1.ec.testa.eu)(PORT=1630)) +# (ADDRESS=(PROTOCOL=TCP)(HOST=cmanint1.cc.cec.eu.int)(PORT=1630)) +# (ADDRESS=(PROTOCOL=TCP)(HOST=olrdev26.cc.cec.eu.int)(PORT=1597)) +# (CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_D_TAF.cc.cec.eu.int)) +# ) +# (DESCRIPTION= +# (SOURCE_ROUTE=ON) +# (ADDRESS=(PROTOCOL=TCP)(HOST=cmandmz1.ec.testa.eu)(PORT=1630)) +# (ADDRESS=(PROTOCOL=TCP)(HOST=cmanint2.cc.cec.eu.int)(PORT=1630)) +# (ADDRESS=(PROTOCOL=TCP)(HOST=olrdev26.cc.cec.eu.int)(PORT=1597)) +# (CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_D_TAF.cc.cec.eu.int)) +# ) +# (DESCRIPTION= +# (SOURCE_ROUTE=ON) +# (ADDRESS=(PROTOCOL=TCP)(HOST=cmandmz2.ec.testa.eu)(PORT=1630)) +# (ADDRESS=(PROTOCOL=TCP)(HOST=cmanint1.cc.cec.eu.int)(PORT=1630)) +# (ADDRESS=(PROTOCOL=TCP)(HOST=olrdev26.cc.cec.eu.int)(PORT=1597)) +# (CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_D_TAF.cc.cec.eu.int)) +# ) +# (DESCRIPTION= +# (SOURCE_ROUTE=ON) +# (ADDRESS=(PROTOCOL=TCP)(HOST=cmandmz2.ec.testa.eu)(PORT=1630)) +# (ADDRESS=(PROTOCOL=TCP)(HOST=cmanint2.cc.cec.eu.int)(PORT=1630)) +# (ADDRESS=(PROTOCOL=TCP)(HOST=olrdev26.cc.cec.eu.int)(PORT=1597)) +# (CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_D_TAF.cc.cec.eu.int)) +# ) +# ) +# +# username: ERIGHTS +# password: encrypted:LzcIyotjbCnHEl+vSuwYJUvEHafmUt2zdpkciBNn5dQLIu49HILxyEJfPX98byc9uZmGTdBknxeP/eJEToUK7fG3fXFT5Vscw51SOv1D4EIKVeA5Wp6ZcPb5AsUHpzQ2iztt3T0YyeE4XoZh3T+69pzVu2ky0NCNqyolFeH4EkosLW22HePCWtQ2AbZZF8OhNEWn8xkN6KNRpAyCbGQsZsAg69Q1r0nE7ZGrw8JXv9TyaXt6Vqd7LRLAr3pa8SOu1L2iKDPCSWJDeoKcYDmyytzwGJruUrGsXs1iOGICqX+pfnOWfWS0P10wGabqDGqrWb5tWOab7OyHKTU9JF/njPGdFZMGTjr1TWrijU+6p3Ig9bWXCzusm1CVnGA3AXFIwDmBgkhdFgBhFkdjSSK0LuJPNGsp2PXxZhTvomEp4SfKlMLDCbJNfVWtgV/Du6810MYLbl9Dbc1F/ymMHh0PVMHAOHIvMI02P6KY/lEpX7YAX6UDRlUNJ4XfVLpTXNfzcBgeCsw1UUbVo6mL4cjvm8rU7ylJViRfFHnmLEO4dJw6KTOcdPacQIQN2mtpM6PzprnePfhbu1EbkQKsD8cWWECO+p+YCaLI4IyxJYuwf4037nDjz+IbAmRBDMJsLv/6u620vN1rtYJxjus3TOqRikPYgLpXyweRZlere4uLjCE=|vWDUd6+gEubvVqqf/7r9eQY1JQvuLYD4HHD+tCdur3QrcJXjaHUuy36jysuo/scNX/VILv3dGouOGw6R5FJSWg== + + +################ +# Ananke Tools # +################ + + +hermes-connector: + environment: TEST + ecas: + environment: ACCEPTANCE + + + # ------------------------------------------------- + +# e-DMS REST requests settings: All fields mandatory if enabled = true +edms: + enabled: true + + # Unused: We use "application: mailbox:" in application.yml + message-from: Unused + + # From the generated JWKS keys take kid value PublicJWKS + eulogin-oidc-jwk-kid: encrypted:skbeM9ikaCHZbecdZX5ho2HY6aW1gGdTY8pIUcwr2ExcEy6V1hV9lBAaVV23bUGpfqODRqx/c2oyq6fnASuguvX3fyKJC7oRXyt1f+QyvTL5UBLqA9Css1sUD5FsO/QkQgvjuV7Z1O6rgl81m9JkfviWmymuQlmlhw6/f44YGtsXD1rH0LBkFFiG4dVy59hBYS5/WFBnb+7bLwdKAMRa47rQDuqlveUt2zd+JaG02/3ZOHUl67h1BqzvfO5qAvR9qKlR7UwuJoIW9ZS1KpiwAnTKYhz0N/1vJsb1P3Ze2AmdK10xFl3tGqDpljI+5z1rAhLY+0IVgUbm4sz5MdXqcCWQZYJ9ju7Q+060lyFWQv2i8axwpSU/b53C1WNRGTcg63JaUWJvMpyMZLkZh8yR0Ety1C1GX5YHR9XBKttHmmDGfb/9ADr/qFsx+1ekQuEUwvYwv29E0GP1tW/JVtc4IG0GAW5Ppxp7VnRC2nT1NWN/rvoQLHMEtlL4HoXtgr1uamfdcnxMgYA2+5tfgl1/lMm17QrxeFYKklX3UCp0iifUoXo9FV07gCGYbyzRp7z34Irp7EZdeKk3sQNcVO0q8NUDdJZIQ4LVTz2ZGrUiLdLryqidCTlGwfxhQt7WLNvC3eRcJhANkbQEL/oMFiHtYTgEgMqCLBd6aHyVoZY6Rfk=|97LEaFaPlWV6fGjsuTZ/XKB2QgBgaUO5yz5euLsaSiyeLNmK6qRYD73ucGeI0TMLXn4/nHg3Eksxg97FMfvLzA== + #F_Ui4u7igQSCf0dynlubuI-4iIg4q25l0poWhArpIbU + + # From the generated JWKS keys take, kid and x values from PublicJWKS, and d value from Private JWKS + eulogin-oidc-private-key: encrypted:fOO10XL4KkvkevZW7HdsvmX7wv3LWXrJJk9YPjsVZ29chiETnybL+NAWef0qV9RHELGVi5Oc0WVMJh5PKIWDhCBlKCJpn/v1p1p8RXMa7Bds/i3PPsqe7EFh/yH4brt5656EldXXhMttKYwgxS1tojdGE15O5dP96ylcKafD1pus7J3ohdjUi4CziVafaj58B230jH8Q4WZIPPwm0aQ7r8JJWw2fbVy1mDFwUagewuztruKfanlPNVgsBi+vOimiQcoyxJ5j9CAZBcribwJC1HbL4a4n7Y4jwVkOcB2Mj37aJVDghtYsud3YvsUyi1QJm2ta5CsZ5vUmANPGRVw3kCgM8XexebS39Sx1Tc+lAsz2ufWw6ijFzHmH4Ls2n3zxJGmLBixGBt5rrlcQ1L20xwBP2r6EwgfOmFpXco2O4VlYwRFkAJWGDaaA/IxGOsLqlnRemkdV73H6ghSR4K3KnpHleDK2n0O+/BnSszMVtvORJHLiq0R15KP5GJLoC0ljxQ1LMtCkEn8mIqiXVd3RdUWhewfpUa2VJQl9AOylDGaNNCA+L/VuRGNF92Axe6qNtE0uBIOkyV44tIQ4p45uNcU6GaFica0Z49XAn7O2Dkr750tfCr8JxuCgcLEm3jidqGCk1E8sTpZG0QxZsMPtl9txN/jxE/sfK3opsbFYp98=|52SC6KQ0Bd/znJb9UkRvrP9xv4YB+uMDAkSyaZ98ijfQ14tLTtce9EOdndlmie7eoNSEjLY/nb50d3MGe+yqyA== + #{"keys":[{"kty":"OKP","use":"sig","crv":"Ed25519","kid":"F_Ui4u7igQSCf0dynlubuI-4iIg4q25l0poWhArpIbU","x":"BPF4HGLwBsJ0yoAXV1YeG6o0AXyA520NoMrBzbJRhls","alg":"EdDSA","d":"fO4mfo4xjfq5iOAiJ-94N1W6kPczsg6OU7iiVjZkfRQ"}]} + + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:EJFavNxx0Ih+Yj7lndwi4eHbufQjneaCmQEcYJUYBD3AARbwgJqazVwur9IBEpylihNJnfmESGJwxjNVq6kWQM9+du+c14VrRfMkSmrOv8EfRF2oBD6etE/ZefsKdV8MZnEZZJvahykJIHcfqXL2horKHF2tRnhFTDwD2iYBx7F1SVfK7o7nW8x43qJiAlYP+r9KP6HD4A7vydlI6mfTp7KFcZU/IQbV5k6amHne/68ed4ClFRkH3QDZimUN+PXuWLmWBGxk68EXYCTHEGdsAqr+PnHpfuWqYyL9X+8YcsPi646i3ulWjxWrFlxQBtEZbECBmmRTE3D+VrKAUYQWgHsH5ZnldGZMnwYTCVfer+OLGTsvf70oqzX9SBUD0kw5MIxED4AejG+qDAVY75Bf4zHyncBlQDqxX2tPSK+4J9dtg0Gri8KhZA4kThEJohNYIiL2VCRac7Ok8sV1gNZ0ywayX4WzXS29S58KwFi7He4PUB6mnnhKCo2qw0xom17X7xI5IY2z14Of09zArdPDU2UfjcNVxDH2sihZH71ZckgDbtHOXwcxKk6Pen+94fzhWUoDY3l0p9pavIZ81UX33benMg5+szJrIuUNlf09rwRI3zn8dPJPb2fjR5tiFgXsKr4bDwRkefKAakS5kOT/GfaLK+6BLyP55cg7OLQqsSg=|j4oOlyoyXT1yNXdGf7r9JPM4LChByk00mWgCCdoLnAxOxTu6eHTLn6Dwo59WKDT7mMDsJXEdTuhTCaxOhF1fBQ== + #h2EJF1ZbEBQwON2cDWMfRRaRNGisuUx0RQ5UnpPl4rzJoEC2e5cyk0ULQw3oJv42uMxsC7zxqVeVZMszLsY7sW0-zGrcc7GCOy8uTt7QbK6zm6 + + eulogin-oidc-token-endpoint: https://ecas.acceptance.ec.europa.eu/cas/oauth2/token + + # Rest config (previously with "rest:", now with prefix "rest-") + # ------------------------------------- + rest-pop-token-provider: edmsLoginPoPTokenProvider + # rest-send-messages-url: https://intragate.test.ec.europa.eu/e-dms-rest + rest-send-messages-url: https://webgate.acceptance.ec.testa.eu/e-dms-rest + # OIDC Client ID - It should be provided by the e-DMS team or the Deployment Manager + rest-edms-client-id: encrypted:"hhlYoHgC4xRkpoegG+brzFjAbBGeHCEYLbKI9k4ROE6vCbWOiZaPyCYjl16p/S5hzCLBaKYnzUrGZv+jpQ4fypwl7JNyFo+CUd/nBrB3Hl8tckKlIss2JjQ+8EqmxIrxN5Eonb7cEkErmSVMX19jcNYikWeRgaFUEGJHKdkyORnDXXX0N8S7ARZrR1s9JUHr4LDUeq+rpPbaFECQuhEAX/tZWobrZC69NRlX1wqURoszEpi1Yni1GepnoXp9eDTfjTkVfjJYuFL3DUWdY2LuAj0PGKjSvMTlM93kLLXAvsuiD+DVzOWRUlR9rqijpxsH10Yzp4fiixG4qBjw0pr4LJLnmXgMe6ypc1QOZulshdloYr6NWzbyedRqhTuxx5wOtAvqH2Pj13TrtrvvO9xCp9Im25QX99gutM1nCNV4j00ESX2cn8sYNJWQZQFAgQOpkfY3k4ktwbD7xpxOuGr7hZUag5f5HlskQfkPYbHlGY/dIZTJLPNtLJ4Zienmsgp38cVp1uYT25phyq21fsIhYpP87YkD2TwviVRG4fxoe2NHBFlkGyq4B7eMacVgEaQwYW9dKyTgMMKqM7RDSNAE0vN4VOUNeqUk8jqvk0L4gz61tknhsdJPVPFI8xFtSFvI4yfyrc3tUjHocfW8NLhGC5aOZnI2qjnmP9FOUQmMlvs=^|6O7Hk8OZNec6RytZ/H287r4S4aGfRFDf9RkL0B2SbfDx0YEiI5PjCzLZBpQD/HTfJ0X2HCpY23lg/jlQr3eMcA==" + #uUxqnUwzbilH06xc1aVP5COAGyqqFVQPgnga6JnTD8qpWdXAZ7t4AfzMYv4AQyBQ0kEwliLgkGnU3YAiimFPM9-ra8gnCF1lWact304rIzHJw + # Other fields used in the notification request sent to e-DMS + # + batch-id: BATCH_999 + client-division-id: CLIENT_DIVISION_999 + application-id: E-RIGHTS + # In case of issues when sending notification, the number of days after which the message will not be sent anyway. + notification-expiration-days: 28 diff --git a/e-rights-back-office/src/main/resources/application-tapiafo.yml b/e-rights-back-office/src/main/resources/application-tapiafo.yml new file mode 100644 index 0000000..fdeefd4 --- /dev/null +++ b/e-rights-back-office/src/main/resources/application-tapiafo.yml @@ -0,0 +1,12 @@ + +server: + ssl: + key-store: C:/Users/tapiafo/Projects/security/BELBRU-V2435032.eeas.europa.eu.jks + key-store-password: changeit + key-store-type: JKS + key-alias: BELBRU-V2435032.eeas.europa.eu + +file-management: + temporary-storage: + file-system: + root-folder: C:/tmp \ No newline at end of file diff --git a/e-rights-back-office/src/main/resources/application-test.yml b/e-rights-back-office/src/main/resources/application-test.yml new file mode 100644 index 0000000..3892778 --- /dev/null +++ b/e-rights-back-office/src/main/resources/application-test.yml @@ -0,0 +1,209 @@ +############ +# e-RIGHTS # +############ + +application: + protocol: HTTPS + host-name: intragate.test.ec.europa.eu + test-mailbox: Martial-Franck.TCHEPGANG@ext.eeas.europa.eu + proxy-host: ps-lux-usr.cec.eu.int + proxy-port: 8012 + proxy-user: a00jqdke + proxy-pass: JkUjhA789ghL + gosselin-host: https://eeas.gosselingroup.eu + gosselin-path: /EEAS/rateTEST.php + gosselin-api-key: 60d8def0a9f5bebd66c78825ec14dd5e + gosselin-api-id: RequestorEEAS + gosselin-active: true + environment: TEST + sysper-api-key-header-name: testkey + sysper-proxy-ticket-header-name: proxy-ticket + sysper-api-key: 3bbf6f17-e113-4a16-acfc-a20dd656cac4 + sysper-base-path: https://api.acceptance.tech.ec.europa.eu/acceptance/SYSPER2/ajax + sysper-service-url: http://sysper2-t13.cc.cec.eu.int:7129/SYSPER2/ajax + sysper-context-path: /erights + +resilience4j.retry: + configs: + default: + maxAttempts: 3 + waitDuration: 100 + retryExceptions: + - org.springframework.web.client.HttpServerErrorException + - java.util.concurrent.TimeoutException + - java.net.SocketException + - java.io.IOException + - eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException + instances: + paymentExistSysper: + baseConfig: default + createSysper: + baseConfig: default +########## +# Spring # +########## + +management: + endpoints: + web: + exposure: + include: '*' + +############### +# Ananke Core # +############### + +base: + money: + currencies: + - code: STN + default-fraction-digits: 2 + numeric-code: 930 + - code: UYW + default-fraction-digits: 4 + numeric-code: 927 + +connector: + http: + secure: + socket-timeout: + value: 10 + time-unit: SECONDS + connection-timeout: + value: 10 + time-unit: SECONDS + connection-pool: + max-size: 20 + max-size-per-route: 20 + time-to-live: + value: 5 + time-unit: SECONDS + jms: + connection-factory: + broker-url: t3://localhost:1042 + jndi-factory-class-name: weblogic.jndi.WLInitialContextFactory + jndi-name: jms/erightsConnectionFactory + credentials: + enable: true + username: LSY_ERIGHT + password: encrypted:FHxZxKLrWV+xyeBKbKTMyp+wrCRcjZG4c+4GErZEHms/pZFymtwCoM0mR60cFLMBFrhuB5Y7FaZZORy1mY9AX1Nqp/e7qypa9RKlwdTU2/oq9P4QmA0PygLScBnPuXJa7FgDKJXmVuN57xAfmS+Gj8LRFhPmvzNa+EVYhAXUmPxBLD+uJplXNJ/hXiiE4pr0WZxCIwGRh6o/QGZHwxtsQDoFyOI8iW5kZ6LgoGET4ZfTHsEOGE5bUa1OQf8yrSUxt+75dLBZK8fpfrp3GfewLARiHJdGkRvCmMRRNTJw489M7Suqe2Jt+h+yyUdq+alPhEgzdJONwcGzW+tgpeU4xZoYQQ7b0lpjCsm6MvyWfNIvD82WlA/PYlA0vtIWI3alC7BltoNyefMx6MEDxCQ9OkBGKGRwQ+p+CFwScKAZxZj9yuZMGEc3pyALSauw4J9xqe34qrxuXb0bPuZCMv9qx51mBbNNXZBg06ToMMz9Al0CLFTJ/Gdr0+ER5ckI1/ViNtSqnuSWsfvEYS6NE5B5TlgxCe94tt44EQFi87kKghE8Q17wPX2WKpg8IgHhE2CxtEuYMBQ+jpjaC25PVw3z/fxe+3tovG8UCVRPXq3+WMYunCkzWl4EVpVqkASbAgXwInVUx07d6vbYTQyBETv/xURmSihXNPZpJlN+bvpw81A=|e1zvT37EFu1uZXhl4dAIDmw5HN3Sk3AnFAtEsy9CoLNHPmJb1wkzMsYl+di1wOIutC9Q8UnlOHqw9F6/exoQsw== + class-name: org.springframework.jndi.JndiObjectFactoryBean + queue: + jaxb: + enable: true + enable-mock: false + +data: + jpa: + show-sql: false + format-sql: false + connection-pool: + min-size: 10 + max-size: 20 + +security: + api: + http: + authentication: + managed: + assurance-level: HIGH + accept-strengths: PASSWORD + server: + protocol: ${application.protocol} + host-name: ${application.host-name} + ssl-port: 443 + security-headers: + content-security-policy: + policy-directives: default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://uap.dev.eeas.europa.eu; style-src 'self' 'unsafe-inline' ; img-src * data:; font-src 'self' data:; connect-src 'self' https://uap.dev.eeas.europa.eu; media-src 'none'; object-src 'self'; child-src 'self'; frame-ancestors 'self'; form-action 'self' webgate.ec.europa.eu:* ecas.cc.cec.eu.int:* intragate.test.ec.europa.eu:*; upgrade-insecure-requests; block-all-mixed-content; sandbox allow-downloads allow-forms allow-same-origin allow-scripts allow-popups allow-modals; base-uri 'self'; manifest-src 'self'; plugin-types application/pdf + + + eu-login-server: + direct: + host-name: webgate.acceptance.ec.europa.eu + one-way-ssl-port: 443 + ticket: + proxy: + requestor: + type: FIXED + fixed: + source: BASE + +################ +# Ananke Tools # +################ + + +hermes-connector: + environment: TEST + ecas: + environment: ACCEPTANCE + +file-management: + file-system: + path: + root-folder: /ec/local/weblogic/app/files/file-management + +logging: + file: + name: ./logs/${application.name} + + +# ------------------------------------------------- + +# e-DMS REST requests settings: All fields mandatory if enabled = true +edms: + enabled: true + + # Unused: We use "application: mailbox:" in application.yml + message-from: Unused + + # From the generated JWKS keys take kid value PublicJWKS + eulogin-oidc-jwk-kid: encrypted:WUPgynZQ/lc/1FY0bCX+KNEZnqZsYU70lzktos0oLbfvmNJnpeVpSXjT637Z2fK4XHMlFc0RkV9A6xGjKIPeNEu/aNZCA7Bw2PKMzizAGOQs4L5wAzGkTK4xPiZMRKaokFVUZItkN585HtLfn7VOsAQENIzmebTHSB2pE0ux4k3xNEvUPSomVhZwNqjv9NtEZmyJdZorQJKneX8eZJ8cbIHp4ij4KV10b2d8cvQXbky2urcccKmiiOe1FGoZuGDlASSuSp6awBQ71YsCatp24LU6OCccmJVmOQQmkPeaZtNOk4VhKG/raRJQMNjZCCeB2XB1ZY3GFTe3+yB5pfyh/3VRcyxvqB7i66SmpGBOeNxpMhfsK7+O2o72AW/JhIJpZX0Yyo9QbwLM69H7Ar80kCN86drch0+xpzSQB/0InxCSGoVK3ywSQNFAIIaYl9N4H41vyli7L/CQHyALNPqSx8z9kkEsOHw4ZydAzRas19jW0/fqVCzLXUqb+lcZNEBrpnW8SxRIpbw14V1yZU2cCHJ5MgPt6JTcBxtrsNcIZvWYJE5nCQYWnXmILpMmU307BVLPKwfqx1sg3YcZczzTL9y4+At0iFlOuexql/IQt1gZ5Q11hwJkaETq16yq1A1D6+FvQBBQyn25Qjm5EPYyCGfwPdueVsof0U93rqaRkng=|ZDG30WWIWJt2RoJhVd2DV6vXaUtPtExKChga+cDF9sXzTv/szytMzbN2/NibH8ovARZo4IvHiaVQNf2E2iBMJQ== + + # From the generated JWKS keys take, kid and x values from PublicJWKS, and d value from Private JWKS + eulogin-oidc-private-key: encrypted:faXzxbncs+uFRc2czJpb5NGAAomkttkGzPlq5sfsyklxy9AAtECgGjb2Mr7j20ApW/ejuI2DKz+qIrWkJ9MmCR6+xtZALuzzY/v3EAncnXZJkAm+YU3W+s3znQ9lZ5gEDSH+sKPFIvSkeZx4+Y1u4XwvwSbgLdxCvni2urVBGIqtg91XjijXnW9frZtD5foeFwRmXRKXRYr9gdM7Sti4o7LQagwJne+6J4WwD3FSRQt78SFukcbcYFAXpD66vkVsWwXh5uAgZBrcd1IevVW0I1jpMiJr0TwCFfOdBAilaQWu+IdpIPHX5ckd6qdLgem+2h/9n4qwOaUT1WrejudRROnL2Khrb7PUEN1dnmIwivwzr3yiZp1h/9mlz7za7WpBETlINfiF+jv5VWU0dpaFL8gdu9R8i7yOxkY2PWGkG3jMPmADJ1czOTtUDD2ZVL5lT7H0L91yPB3DiPgAZRJC6DOmbsp72fPIae8WIWkNxhdUKoaqZ00A1yg9XkJrIkAhQyvDrgxpsImUVsNs9skjPoY49qLaXctdbfoUP5aT2f+FG6+GJPMhznDtAPjQ4YqtmrQT70b4TlwHsUubM0pgd1IxRmVxxNeaPReSRa9GQe8UiS/HnJo6H0l1MUHCsMqqtLiWzi8eESwIKKmaa5Gp87VLIUPY74oCZTVFyn72C6U=|weg0CPlamml2ysvAolv/oJcnEQbkOriwdlNnYfwwRJ/Oug8LT8NtrgFIzL7vogbapKdPS+lG0yW7HLRviEKCCA== + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:huQAI8F4mbg+uJJEkhGXaOFQlF/XJS9kXQ3FaReUETatEFlkIcFvohqNpOvJhExpNG0jy9NuJkZI8N+pPyWiAcag2I92C0aKxrczgK5tVm0Gj43FSIuEAf/2HXxQW3DS8aPKtTJ2u1mambVbs7CzZaoRSWo+RHfXZhQloqMK6czOnSuc7aIuvafar5PQTtUicG1IAKn7uDUVFFyxozXP+l3qH3B2Bac5K0YUPcgi8+/zvHUZ/H+hxdZs+KaXWB8ItDCuhbvyvPwA6kjkQcJl86gBiCkBbVSX56NIT+8pXdYxl9wVH4N9sLf85lWY9e+9DIi51dAvsJCNwyNvvq3AcpO7IQHr1kDeStfEH9maeCakuO4BqxTE9iqcO0n2MO5V/XB2xVAihcQF2YE0utSFNLylstkLRQZXtLqGIMOIpX8xaAMUM9GUxGkpkusPHYWVek/cKU135yOPdHgbCcROLLu9QlnkgFmqfvOH3m5ZCFfVAM52+iuXGIV0isZJSSp4xh3uwJV8lzpAmBtRxdBIxCy7cGLaX1MKWsWpMPPCwDe8n3qwbo2qTim8hbqVtOVrbVSIa4Ju9iGDLBwuo/HKOTCo3NyfDt426XEzPLfrjmVXMLxkZsILq/LpbRxDYCz4GtGLUIo2ppEQ49ZdmxW6Zc57J/ifNbmA11X0g5pwamU=|Gh46ZtreuugTBJsWJ4K77Opk2lLPpuHmw09gNfEGCKiYBphs4GHfYG61yIpUimcsZOeI626q85R4Qk1arfwNLw== + + eulogin-oidc-token-endpoint: https://ecas.acceptance.ec.europa.eu/cas/oauth2/token + + # Rest config (previously with "rest:", now with prefix "rest-") + # ------------------------------------- + rest-pop-token-provider: edmsLoginPoPTokenProvider + # rest-send-messages-url: https://intragate.test.ec.europa.eu/e-dms-rest + rest-send-messages-url: https://webgate.acceptance.ec.testa.eu/e-dms-rest + # OIDC Client ID - It should be provided by the e-DMS team or the Deployment Manager + rest-edms-client-id: encrypted:fu033SWVy3PIi+iDMq35LLFNXnsIe5YyqFKiCVxOXCILwYuMXG0nkhFO5BnFTVzhnM5Cf70PLJ16CivuLNNJpESD3IxRKok8RqIz6pwu+743ZhGVcN8MTOZZnSWA7uLPK25p/RMz2nm4CSkBKg1BoosMgrTEipm8qxx4LfEt+MxDtr+rqoSt/y/dVk9CzgNY59I3dPPHUGyskttaTOVctupPtn/uAjeGKKmBKhUP+8aSYqYLqTHAuW+f7NHWoKZyx2oqwtyPz7ey0rxcIkijUDDUQgC9c4FisfyEs9NQL0WNevCWKmwEGoGCS9C6r3/8TXoe94S2if2ZLxrfzzTGa9DLuLPv371UL7I8cOuC3AlRYgX837E34HzqtazucpmKlDO+2s6QBDb6PYxIw4HzKp6J2BRTvbc766gRzYRa9FfBIk2XKOOOLAh2vikTqCZhcM1bL4e8WcmMS/j8My8BgUCoCHaQhti0LQb5TjkqH7h0vE7hfYemigfKDrpQEfNBXaSIUeBGHwq3Uc0R3+cuiPG/YUVu/ySzzN4iNWFjvf6FNd+3RYcmPickkqFtkKP3APHxFO5ZG9CuS2+Z1xp80jKzR+hxPUl3wSn8CtFjWd0LgQj7jcSJoPRam9Qhf1rFNJmgnSybWKIxsXrFyVwXRdNFTO/8J2v6JRUVicDBLls=|dHmhpHMJsWeq+QB/z2H7Iv0rcj6Ye2rfI0Vo/As99rbOUoDvF5e8Z5Ro/qY3JWrI2JCK6hK1NEufRBUrWxr5Fw== + # + # Other fields used in the notification request sent to e-DMS + # + batch-id: BATCH_999 + client-division-id: CLIENT_DIVISION_999 + application-id: E-RIGHTS + # In case of issues when sending notification, the number of days after which the message will not be sent anyway. + notification-expiration-days: 28 + + +################# +# Skyscanner WS # +################# + +skyscanner: + create-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/create + poll-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/poll/%s + api-key: encrypted:W6EC+V//Rusc6MCN3+c3RxMqBbQnSq8sVvH8ewal84CyaVIbWGRgzukwVlb9KIuxk/uVW08TFlyUc4TM8zimQ0EKdXg/FiY3GagItFUDfitED91lFO+NIvT2yde5TcqtkI9ig4krkfcelYzFQdO2Dxg9sUck8w4X/vBxRX38EwMK2aS098E2n7F1PraMUcx6BuAsqKovbCer3Y2+mIsAr7MetGhZsCIDaV+MADnoxOTFw2WkLoIpq6DynvurBnvlwO/OTz5lyve/vr6BB/+ic84iuJqWdM/Z5r11Zgbr4Mcc+a6KJhxbmS36KDDj6boKi9RZh+ZeipJeYk4nxSly9LGftR4RA3aQln9ZRjOP+yp5mcc8UwYjDNmpN63Ioqd6GJcK2Nr9AisoxtNoRQXTmaM+lTAROOxFD1y6n7y7Q1y1pAuBodqfuJimGN+87YCUjSCOLuwqp+DV5uaq+AWw0R8YHrZ6NTdVQho7nlREwGsZZgsQayFK8MGyEDscA0vU2l39KIGUnBWFFXwF+F+kP0867RjBQz5IlFOZLjHFBk9BXm50dcV97L2BhNSdUBzOlFyEQGjUrtF1FvHH8Eo+DqOVLWCarRXhM1ME9o8esqdEAQGILj11IpuPcOFVjc/v5mWYWdy65usXgY3bM/qEFF4TRXMAsfB/CIq1DBbDQv0=|6aqvplbtGeQbtDk8s9uZg4vcMna+VmZ5hzVXK7SjTAuYpKyp37nhONWTzZ2p8D6CmA1nSmkHdIJRRFXyn3lL0A== + +p2p-hub: + # From the generated JWKS keys take kid PublicJWKS + eulogin-oidc-jwk-kid: encrypted:WUPgynZQ/lc/1FY0bCX+KNEZnqZsYU70lzktos0oLbfvmNJnpeVpSXjT637Z2fK4XHMlFc0RkV9A6xGjKIPeNEu/aNZCA7Bw2PKMzizAGOQs4L5wAzGkTK4xPiZMRKaokFVUZItkN585HtLfn7VOsAQENIzmebTHSB2pE0ux4k3xNEvUPSomVhZwNqjv9NtEZmyJdZorQJKneX8eZJ8cbIHp4ij4KV10b2d8cvQXbky2urcccKmiiOe1FGoZuGDlASSuSp6awBQ71YsCatp24LU6OCccmJVmOQQmkPeaZtNOk4VhKG/raRJQMNjZCCeB2XB1ZY3GFTe3+yB5pfyh/3VRcyxvqB7i66SmpGBOeNxpMhfsK7+O2o72AW/JhIJpZX0Yyo9QbwLM69H7Ar80kCN86drch0+xpzSQB/0InxCSGoVK3ywSQNFAIIaYl9N4H41vyli7L/CQHyALNPqSx8z9kkEsOHw4ZydAzRas19jW0/fqVCzLXUqb+lcZNEBrpnW8SxRIpbw14V1yZU2cCHJ5MgPt6JTcBxtrsNcIZvWYJE5nCQYWnXmILpMmU307BVLPKwfqx1sg3YcZczzTL9y4+At0iFlOuexql/IQt1gZ5Q11hwJkaETq16yq1A1D6+FvQBBQyn25Qjm5EPYyCGfwPdueVsof0U93rqaRkng=|ZDG30WWIWJt2RoJhVd2DV6vXaUtPtExKChga+cDF9sXzTv/szytMzbN2/NibH8ovARZo4IvHiaVQNf2E2iBMJQ== + # From the generated JWKS keys take, kid and x from PublicJWKS, and d from Private JWKS + eulogin-oidc-private-key: encrypted:faXzxbncs+uFRc2czJpb5NGAAomkttkGzPlq5sfsyklxy9AAtECgGjb2Mr7j20ApW/ejuI2DKz+qIrWkJ9MmCR6+xtZALuzzY/v3EAncnXZJkAm+YU3W+s3znQ9lZ5gEDSH+sKPFIvSkeZx4+Y1u4XwvwSbgLdxCvni2urVBGIqtg91XjijXnW9frZtD5foeFwRmXRKXRYr9gdM7Sti4o7LQagwJne+6J4WwD3FSRQt78SFukcbcYFAXpD66vkVsWwXh5uAgZBrcd1IevVW0I1jpMiJr0TwCFfOdBAilaQWu+IdpIPHX5ckd6qdLgem+2h/9n4qwOaUT1WrejudRROnL2Khrb7PUEN1dnmIwivwzr3yiZp1h/9mlz7za7WpBETlINfiF+jv5VWU0dpaFL8gdu9R8i7yOxkY2PWGkG3jMPmADJ1czOTtUDD2ZVL5lT7H0L91yPB3DiPgAZRJC6DOmbsp72fPIae8WIWkNxhdUKoaqZ00A1yg9XkJrIkAhQyvDrgxpsImUVsNs9skjPoY49qLaXctdbfoUP5aT2f+FG6+GJPMhznDtAPjQ4YqtmrQT70b4TlwHsUubM0pgd1IxRmVxxNeaPReSRa9GQe8UiS/HnJo6H0l1MUHCsMqqtLiWzi8eESwIKKmaa5Gp87VLIUPY74oCZTVFyn72C6U=|weg0CPlamml2ysvAolv/oJcnEQbkOriwdlNnYfwwRJ/Oug8LT8NtrgFIzL7vogbapKdPS+lG0yW7HLRviEKCCA== + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:huQAI8F4mbg+uJJEkhGXaOFQlF/XJS9kXQ3FaReUETatEFlkIcFvohqNpOvJhExpNG0jy9NuJkZI8N+pPyWiAcag2I92C0aKxrczgK5tVm0Gj43FSIuEAf/2HXxQW3DS8aPKtTJ2u1mambVbs7CzZaoRSWo+RHfXZhQloqMK6czOnSuc7aIuvafar5PQTtUicG1IAKn7uDUVFFyxozXP+l3qH3B2Bac5K0YUPcgi8+/zvHUZ/H+hxdZs+KaXWB8ItDCuhbvyvPwA6kjkQcJl86gBiCkBbVSX56NIT+8pXdYxl9wVH4N9sLf85lWY9e+9DIi51dAvsJCNwyNvvq3AcpO7IQHr1kDeStfEH9maeCakuO4BqxTE9iqcO0n2MO5V/XB2xVAihcQF2YE0utSFNLylstkLRQZXtLqGIMOIpX8xaAMUM9GUxGkpkusPHYWVek/cKU135yOPdHgbCcROLLu9QlnkgFmqfvOH3m5ZCFfVAM52+iuXGIV0isZJSSp4xh3uwJV8lzpAmBtRxdBIxCy7cGLaX1MKWsWpMPPCwDe8n3qwbo2qTim8hbqVtOVrbVSIa4Ju9iGDLBwuo/HKOTCo3NyfDt426XEzPLfrjmVXMLxkZsILq/LpbRxDYCz4GtGLUIo2ppEQ49ZdmxW6Zc57J/ifNbmA11X0g5pwamU=|Gh46ZtreuugTBJsWJ4K77Opk2lLPpuHmw09gNfEGCKiYBphs4GHfYG61yIpUimcsZOeI626q85R4Qk1arfwNLw== + eulogin-oidc-token-endpoint: 'https://ecas.acceptance.ec.europa.eu/cas/oauth2/token' + rest-client-id: 'GfukQA20tWyzkOEzYmItNb1ApnBhZq1zVc53UXESX3aaDbGzzbgi19DujkpfD4zboK0hm1C63hbOKcSpb7XWp9J0-NaAc23CqASe7kXiiv5CGx4' + url: 'https://p2p-hub.test.eeas.testa.eu/eeashub/' + secure-connection: true + mtls-enabled: false \ No newline at end of file diff --git a/e-rights-back-office/src/main/resources/application.yml b/e-rights-back-office/src/main/resources/application.yml new file mode 100644 index 0000000..74310d5 --- /dev/null +++ b/e-rights-back-office/src/main/resources/application.yml @@ -0,0 +1,308 @@ +############ +# e-RIGHTS # +############ + +application: + context-path: /erightsbo + name: ${project.artifactId} + full-name: ${project.name} + version: ${project.version} + build: + date-time: ${build-date-time} + id: ${build-id} + mailbox: automated-notifications@nomail.ec.europa.eu + +########## +# Spring # +########## + +spring: + application: + name: ${application.name} + web: + resources: + add-mappings: false + mvc: + pathmatch: + matching-strategy: ant_path_matcher + cache: + jcache: + config: classpath:ehcache.xml + + +logging: + file: + name: ./logs/${application.name}.log + +############### +# Ananke Core # +############### + +base: + mapping: + bean: + enable: true + auto-mapping: false + class-map-builder-packages-to-scan: + - eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder + - eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder + - eu.europa.eeas.erights.backoffice.api.http.rest.mapping.classmapbuilder + - eu.europa.eeas.erights.backoffice.service.data.mapping.classmapbuilder + pass-through-types: + - org.javamoney.moneta.Money + - java.util.UUID + + jaxb: + enable: true + json: + enable: true + inclusions: + - NON_EMPTY + serialization-features: + WRITE_DATES_AS_TIMESTAMPS: false + deserialization-features: + FAIL_ON_UNKNOWN_PROPERTIES: false + validation: + enable-entity-validation: true + user: + system: + enabled: true + +api: + http: + error-path: /ananke-error + default-error-mime-type: application/json + mvc: + error-view-resolver: + view-prefix: /ananke/v2/jsp/views/error/ + mime-type-exception-handler: + mime-types: + - text/html + rest: + mime-type-exception-handler: + mime-types: + - application/json +# jms: +# enable-transaction: false +# connection-factory: +# use-connector-one: true + +audit: + revision: + actor-type: eu.europa.eeas.ananke.core.audit.actor.AuditRevisionActor + +connector: + http: + secure: + enable: true + x509-hostname-verifier: + type: NOOP + modules: + rest: + enable: false + enable-mock: false + soap: + enable: true + enable-mock: false + + +# Database separation: eRights_back (Back Office) +data: + jpa: + data-source-jndi-name: jdbc/eRights_back + enable-lazy-load-no-trans: true + dialect: eu.europa.eeas.ananke.core.data.provider.jpa.dialect.CustomOracle10gDialect + connection-provider: org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl + bytecode-provider: bytebuddy + packages-to-scan: + - eu.europa.eeas.erights.common.data.jpa.entity + - eu.europa.eeas.erights.backoffice.data.jpa.entity + connection-pool: + max-statements: 0 + timeout: + value: 1 + time-unit: SECONDS + idle-test-period: + value: 5 + time-unit: SECONDS + second-level-cache: + enable: false + +locale: + api: + http: + enable-rest-apis: true + skip-localization-header-for-urls: + - /ananke/web/* + - /webjars/* + - /static/* + - '*.do' + default-language: en + default-country: GB + default-zone-id: Europe/Brussels + supported-locales: + - en-GB + +security: + api: + http: + authentication: + managed: + proxy-ticket-callback-url: /proxy-ticket-receptor + user-details: true + unmanaged: + retrieve-additional-data: false + retrieve-granted-authorities: false + retrieve-preferences: false + cookie: + regular: + - menu-appearance + csrf: + enable: true + server: + context-path: ${application.context-path} + system-user: + data-provider: + type: FIXED + fixed: + uid: SYSTEM + user-id: -1234 + last-name: SYSTEM + first-name: + granted-authorities-retriever: + type: FIXED + fixed: + - TEST_AUTHORITY + provider: + type: CACHED + ticket: + proxy: + requestor: + enable: true + connector: + http: + soap: + basic-authentication: + enabled: true + +################ +# Ananke Tools # +################ + +enhanced-language-bundle: + language-bundles-data: + - base-name: common.messages.e-rights + main: true + - base-name: ananke.messages.core + - base-name: ananke.messages.on-demand.act-on-behalf + - base-name: ananke.messages.on-demand.breadcrumbs + agents: + - type: CLASS_PATH_RESOURCE + class-path-resource: + types: + - YAML + enable-rest-apis: true + +hermes-connector: + application-id: SECp4iO1zq + #job-user: + +scheduler: + job-store-type: JDBC + overwrite-existing-jobs: true + +security-sentry: + user-granted-authorities-retriever: + type: JPA + jpa: + repository-suppliers: + user-permission: EMBEDDED + +state-machine: + persistent-storage: + type: DATABASE + +user-management: + user-additional-data-plugin: + provider-type: PERSON + allow-missing-people: true + user-preferences-plugin: + provider-type: JPA + +web: + layout: + version: VERSION_2 + v2: + contact-us-email-address : it-helpdesk@eeas.europa.eu + breadcrumbs: + enable: true + show-icons: false + rest-controllers: + enable-person: true + sitemesh: + decorator-paths: + - content-path: '*.do*' + decorator-paths: + - /ananke/%LAYOUT_VERSION%/jsp/layout/layout.jsp + excluded-paths: + - /logout + - '*.js' + - '*.css' + include-error-pages: true + view-mapping-handler: + head-addon: /WEB-INF/jsp/head-addon.jsp + welcome: welcome + + +file-management: + max-file-size: 10MB + cache-storage: + type: FILE_SYSTEM + temporary-storage: + type: FILE_SYSTEM + persistent-storage: + default-type: DATABASE + types: + - DATABASE + supported-formats: + - content-type: application/pdf + extensions: + - pdf + - content-type: application/rtf + extensions: + - rtf + - content-type: application/x-tika-msoffice + extensions: + - doc + - ppt + - xls + - msg + - content-type: application/x-tika-ooxml + extensions: + - docx + - pptx + - xlsx + - content-type: application/zip + extensions: + - zip + - content-type: image/bmp + extensions: + - bmp + - jpeg + - content-type: image/gif + extensions: + - gif + - content-type: image/jpeg + extensions: + - jpg + - content-type: image/png + extensions: + - png + - content-type: text/plain + extensions: + - txt +server: + servlet: + session: + cookie: + secure: true diff --git a/e-rights-back-office/src/main/resources/certs/j905b1e.p12 b/e-rights-back-office/src/main/resources/certs/j905b1e.p12 new file mode 100644 index 0000000..85fdcef Binary files /dev/null and b/e-rights-back-office/src/main/resources/certs/j905b1e.p12 differ diff --git a/e-rights-back-office/src/main/resources/certs/j977c9j.jks b/e-rights-back-office/src/main/resources/certs/j977c9j.jks new file mode 100644 index 0000000..193f331 Binary files /dev/null and b/e-rights-back-office/src/main/resources/certs/j977c9j.jks differ diff --git a/e-rights-back-office/src/main/resources/config/weblogic/ACC/ERIGHTS001_ACC_wlst.properties b/e-rights-back-office/src/main/resources/config/weblogic/ACC/ERIGHTS001_ACC_wlst.properties new file mode 100644 index 0000000..7eff2ad --- /dev/null +++ b/e-rights-back-office/src/main/resources/config/weblogic/ACC/ERIGHTS001_ACC_wlst.properties @@ -0,0 +1,316 @@ +############################################################ +############################################################ +## Script configuration +############################################################ +## Script option +#-------------------------------- +# Set whether or not the debug is activated +# Values: +# - true : Enable debug mode +# - disable: Disable debug mode +# Ex: script.log.enable = true +script.log.level = DEBUG +script.log.file = + +## Weblogic common installation +#------------------------------ +# BEA home directory +# Ex: bea.home = /home/bea/wls921 (Unix) C:/bea/wls921 (Windows) +bea.home = + +# Set the weblogic home directory +# Ex: +# (Unix) weblogic.home = /bea/wls921/weblogic92 or ${bea.home}/weblogic92 +# (Windows) weblogic.home = C:\bea\wls921\weblogic92 or ${bea.home}\weblogic92 +weblogic.home = ${bea.home}/wlserver + +## Domain definition +##--------------------- +# Specify a method to load the domain +# Values: +# read = Load the domain using the method readDomain +# connect = Load the domain using t3 connection +# Ex: domain.loading.type = connect +domain.loading.type = connect + +# Specify the connect url for the domain +domain.connect.url = t3://wlstd00997.cc.cec.eu.int:1042 + +# Specify the username for the connection +# Ex: domain.connect.username = weblogic +domain.connect.username = + +# Specify the password for the connection +# Ex: domain.connect.password = +domain.connect.password = + +# Domain name +# Ex: domain.name = myDomain +domain.name = ERIGHTS001_ACC + +# Location of the domain +# This variable contains the parent folder of the domain +# Ex: domain.location = /foo/bar (Unix) C:\foo\bar (Windows) +domain.location = + +############################################################ +## Environment specific variables (to be set by DC) +############################################################ + +#Server name +server.name=ERIGHTS001_ACCwls11 + +############################################################ +## Script specific variables - CONECTING TO ABAC ACC +############################################################ + +abac.user.name=LSY_ERIGHT +abac.user.password=UGJb-7GfmLBSxMjC0 +local.user.name=LSY_ERIGHT +local.user.password=gjO*&.x4@i^'kd#yQ +jms.connection.factory.jndi=jms/erightsConnectionFactory +abac.queue.incomming.jndi=jms/LSY_ERIGHT_BudgSoaRemoteQueue +abac.queue.incomming.error.jndi=jms/LSY_ERIGHT_BudgSoaRemoteErrorQueue +abac.queue.outgoing.local.jndi=jms/erights-out +abac.queue.outgoing.remote.jndi=jms/LSY_ERIGHT_REQ_OUT +abac.saf.remote.context.url=t3://webpix2jaacc.cc.cec.eu.int:1045,webpix2jbacc.cc.cec.eu.int:1045 + + + + + + + + +############################################################ +## JMS module configuration +############################################################ +jms.module.0.name =erights-jms-module +jms.module.0.targets=${server.name} + +############################################################ +## JMS module index +############################################################ +jms.module.items = 1 + +############################################################ +## File persistent store configuration +############################################################ + +############################################################ +## File Store [erightsFileStore] +############################################################ +persistent.filestore.0.name=erightsFileStore +persistent.filestore.0.target=${server.name} +persistent.filestore.0.location=./ERIGHT_FILE_STORE + +############################################################ +## File store Index definition +############################################################ +persistent.filestore.items = 1 + +############################################################ +## JMS server configuration +############################################################ + +############################################################ +## JMS Server [ErightsJMSServer] +############################################################ +jms.server.0.name=ErightsJMSServer +jms.server.0.target=${server.name} +jms.server.0.store=${persistent.filestore.0.name} + +############################################################ +## JSMServer Index definition +############################################################ +jms.server.items = 1 + +############################################################ +## JMS subdeployment configuration +############################################################ +jms.subdeployment.0.name =ErightsSubDeployment +jms.subdeployment.0.targets=${jms.server.0.name} +jms.subdeployment.0.module.name=${jms.module.0.name} + +############################################################ +## Subdeployment index +############################################################ +jms.subdeployment.items = 1 + +############################################################ +## JMS connection factory configuration +############################################################ + +############################################################ +## JMS connection factory [ErightsConnectionFactoryCN] +############################################################ +jms.connection.factory.0.name=ErightsConnectionFactoryCN +jms.connection.factory.0.jndi.name=${jms.connection.factory.jndi} +jms.connection.factory.0.module.name=${jms.module.0.name} +jms.connection.factory.0.subdeployment.name=${jms.subdeployment.0.name} +jms.connection.factory.0.default.target.enable=false +jms.connection.factory.0.xa.enable=false +jms.connection.factory.0.xa.timeout = 3600 + +############################################################ +## JMS Connection factory Index +############################################################ +jms.connection.factory.items = 1 + +############################################################ +## Uniform distributed queue configuration +############################################################ +jms.uniform.distributed.queue.1.name=IncommingAbacErrorQueue +jms.uniform.distributed.queue.1.jndi.name=${abac.queue.incomming.error.jndi} +jms.uniform.distributed.queue.1.subdeployment.name=${jms.subdeployment.0.name} +jms.uniform.distributed.queue.1.module.name=${jms.module.0.name} +jms.uniform.distributed.queue.1.default.target.enable=false +jms.uniform.distributed.queue.1.loadbalancing.ramdom = false +jms.uniform.distributed.queue.1.delivery.failure.redelivery.limit=-1 +jms.uniform.distributed.queue.1.delivery.failure.expiration.policy=Log +jms.uniform.distributed.queue.1.delivery.failure.expiration.data=None + + + +jms.uniform.distributed.queue.0.name=IncommingAbacQueue +jms.uniform.distributed.queue.0.jndi.name=${abac.queue.incomming.jndi} +jms.uniform.distributed.queue.0.subdeployment.name=${jms.subdeployment.0.name} +jms.uniform.distributed.queue.0.module.name=${jms.module.0.name} +jms.uniform.distributed.queue.0.default.target.enable=false +jms.uniform.distributed.queue.0.loadbalancing.ramdom = false +jms.uniform.distributed.queue.0.delivery.failure.redelivery.limit=-1 +jms.uniform.distributed.queue.0.delivery.failure.expiration.policy=Redirect +jms.uniform.distributed.queue.0.delivery.failure.expiration.data=IncommingAbacErrorQueue +jms.uniform.distributed.queue.0.message.logging.enabled=false +jms.uniform.distributed.queue.0.message.logging.format=%header% + + + +############################################################ +## JMS queue index +############################################################ +jms.uniform.distributed.queue.items = 2 + +############################################################ +## JMS SAF agent configuration +############################################################ +jms.saf.agent.0.name=ErightsSAFAgent +jms.saf.agent.0.target.name=${server.name} +jms.saf.agent.0.type=Sending-only +jms.saf.agent.0.store.name=${persistent.filestore.0.name} + +############################################################ +## JMS SAF agent index +############################################################ +jms.saf.agent.items = 1 + +############################################################ +## JMS SAF Remote context configuration +############################################################ + +############################################################ +## SAF Remote context [ErightsSAFRemoteContext] +############################################################ +jms.saf.remote.context.0.module.name=${jms.module.0.name} +jms.saf.remote.context.0.name=ErightsSAFRemoteContext +jms.saf.remote.context.0.login.url= ${abac.saf.remote.context.url} +jms.saf.remote.context.0.login.username=${abac.user.name} +jms.saf.remote.context.0.login.password=${abac.user.password} + +############################################################ +## SAF Remote context index +############################################################ +jms.saf.remote.context.items = 1 + +############################################################ +## JMS SAF Error handling configuration +############################################################ + +############################################################ +## SAF Error handling [ErightsSAFErrorHandler] +############################################################ +jms.saf.error.handling.0.module.name=${jms.module.0.name} +jms.saf.error.handling.0.name=ErightsSAFErrorHandler +jms.saf.error.handling.0.policy.type=Log +jms.saf.error.handling.0.policy.data=None +jms.saf.error.handling.0.policy.saf.destination.name=... + +############################################################ +## SAF Error index +############################################################ +jms.saf.error.handling.items = 1 + +############################################################ +## JMS SAF Imported destination configuration +############################################################ + +############################################################ +## SAF Imported destination [SAFErightsDestination] +############################################################ +jms.saf.imported.destination.0.module.name=${jms.module.0.name} +jms.saf.imported.destination.0.name=SAFErightsDestination +jms.saf.imported.destination.0.timetolivedefault.enable=true +jms.saf.imported.destination.0.timetolive.value = 0 +jms.saf.imported.destination.0.target.default.enable=true +jms.saf.imported.destination.0.remote.context=${jms.saf.remote.context.0.name} +jms.saf.imported.destination.0.jndi.prefix=SAF_ +jms.saf.imported.destination.0.error.handling=${jms.saf.error.handling.0.name} + +############################################################ +## JMS SAF Index definition +############################################################ +jms.saf.imported.destination.items = 1 + +############################################################ +## Policy configuration +############################################################ +security.policies.items = 1 + +security.policies.0.mode = CREATE +security.policies.0.resource = type=, application=${jms.module.0.name} +security.policies.0.realm = myrealm +security.policies.0.authorizer = XACMLAuthorizer +security.policies.0.expression= Usr(${local.user.name}) + + +############################################################ +## Policy configuration +############################################################ + +############################################################ +## Credential configuration +############################################################ + +############################################################ +## Users configuration +############################################################ +security.users.0.realm=myrealm +security.users.0.name=${local.user.name} +security.users.0.password=${local.user.password} +security.users.0.comment=Principal for accessing the ABAC incoming queue. +security.users.0.authenticator=DefaultAuthenticator +security.users.items=1 + + +############################################################ +## JMS SAF Queue configuration +############################################################ + +############################################################ +## SAF Queue [OutgoingErightsQueue] +############################################################ +jms.saf.queue.0.module.name=${jms.module.0.name} +jms.saf.queue.0.imported.destination=${jms.saf.imported.destination.0.name} +jms.saf.queue.0.name=OutgoingErightsQueue +jms.saf.queue.0.jndi.local=${abac.queue.outgoing.local.jndi} +jms.saf.queue.0.jndi.remote=${abac.queue.outgoing.remote.jndi} +jms.saf.queue.0.timetolive.default.enable=true +jms.saf.queue.0.timetolive.value = 0 +jms.saf.queue.0.nonpersistentQOS = At-Least-Once +jms.saf.queue.0.error.handling.name = ${jms.saf.error.handling.0.name} + +############################################################ +## SAF Queue index +############################################################ + +jms.saf.queue.items = 1 diff --git a/e-rights-back-office/src/main/resources/config/weblogic/DEV/ERIGHTS001_DEV_wlst.properties b/e-rights-back-office/src/main/resources/config/weblogic/DEV/ERIGHTS001_DEV_wlst.properties new file mode 100644 index 0000000..cda1cde --- /dev/null +++ b/e-rights-back-office/src/main/resources/config/weblogic/DEV/ERIGHTS001_DEV_wlst.properties @@ -0,0 +1,316 @@ +############################################################ +############################################################ +## Script configuration +############################################################ +## Script option +#-------------------------------- +# Set whether or not the debug is activated +# Values: +# - true : Enable debug mode +# - disable: Disable debug mode +# Ex: script.log.enable = true +script.log.level = DEBUG +script.log.file = + +## Weblogic common installation +#------------------------------ +# BEA home directory +# Ex: bea.home = /home/bea/wls921 (Unix) C:/bea/wls921 (Windows) +bea.home = C:/PGM/Oracle/WebLogic12cR2 + +# Set the weblogic home directory +# Ex: +# (Unix) weblogic.home = /bea/wls921/weblogic92 or ${bea.home}/weblogic92 +# (Windows) weblogic.home = C:\bea\wls921\weblogic92 or ${bea.home}\weblogic92 +weblogic.home = ${bea.home}/wlserver + +## Domain definition +##--------------------- +# Specify a method to load the domain +# Values: +# read = Load the domain using the method readDomain +# connect = Load the domain using t3 connection +# Ex: domain.loading.type = connect +domain.loading.type = connect + +# Specify the connect url for the domain +domain.connect.url = t3://localhost:6111 + +# Specify the username for the connection +# Ex: domain.connect.username = weblogic +domain.connect.username = weblogic + +# Specify the password for the connection +# Ex: domain.connect.password = +domain.connect.password = weblogic1 + +# Domain name +# Ex: domain.name = myDomain +domain.name = ERIGHT + +# Location of the domain +# This variable contains the parent folder of the domain +# Ex: domain.location = /foo/bar (Unix) C:\foo\bar (Windows) +domain.location = + +############################################################ +## Environment specific variables (to be set by DC) +############################################################ + +#Server name +server.name=AdminServer + +############################################################ +## Script specific variables +############################################################ + +abac.user.name=LSY_ERIGHT +abac.user.password=DapLQ!AaPe17EMSk +local.user.name=LSY_ERIGHT +local.user.password=weblogic2 +jms.connection.factory.jndi=jms/erightsConnectionFactory +abac.queue.incomming.jndi=jms/LSY_ERIGHT_BudgSoaRemoteQueue +abac.queue.incomming.error.jndi=jms/LSY_ERIGHT_BudgSoaRemoteErrorQueue +abac.queue.outgoing.local.jndi=jms/erights-out +abac.queue.outgoing.remote.jndi=jms/LSY_ERIGHT_REQ_OUT +abac.saf.remote.context.url=http://wlstd00999.cc.cec.eu.int:1042 + + + + + + + + +############################################################ +## JMS module configuration +############################################################ +jms.module.0.name =erights-jms-module +jms.module.0.targets=${server.name} + +############################################################ +## JMS module index +############################################################ +jms.module.items = 1 + +############################################################ +## File persistent store configuration +############################################################ + +############################################################ +## File Store [erightsFileStore] +############################################################ +persistent.filestore.0.name=erightsFileStore +persistent.filestore.0.target=${server.name} +persistent.filestore.0.location=./ERIGHT_FILE_STORE + +############################################################ +## File store Index definition +############################################################ +persistent.filestore.items = 1 + +############################################################ +## JMS server configuration +############################################################ + +############################################################ +## JMS Server [ErightsJMSServer] +############################################################ +jms.server.0.name=ErightsJMSServer +jms.server.0.target=${server.name} +jms.server.0.store=${persistent.filestore.0.name} + +############################################################ +## JSMServer Index definition +############################################################ +jms.server.items = 1 + +############################################################ +## JMS subdeployment configuration +############################################################ +jms.subdeployment.0.name =ErightsSubDeployment +jms.subdeployment.0.targets=${jms.server.0.name} +jms.subdeployment.0.module.name=${jms.module.0.name} + +############################################################ +## Subdeployment index +############################################################ +jms.subdeployment.items = 1 + +############################################################ +## JMS connection factory configuration +############################################################ + +############################################################ +## JMS connection factory [ErightsConnectionFactoryCN] +############################################################ +jms.connection.factory.0.name=ErightsConnectionFactoryCN +jms.connection.factory.0.jndi.name=${jms.connection.factory.jndi} +jms.connection.factory.0.module.name=${jms.module.0.name} +jms.connection.factory.0.subdeployment.name=${jms.subdeployment.0.name} +jms.connection.factory.0.default.target.enable=false +jms.connection.factory.0.xa.enable=false +jms.connection.factory.0.xa.timeout = 3600 + +############################################################ +## JMS Connection factory Index +############################################################ +jms.connection.factory.items = 1 + +############################################################ +## Uniform distributed queue configuration +############################################################ +jms.uniform.distributed.queue.1.name=IncommingAbacErrorQueue +jms.uniform.distributed.queue.1.jndi.name=${abac.queue.incomming.error.jndi} +jms.uniform.distributed.queue.1.subdeployment.name=${jms.subdeployment.0.name} +jms.uniform.distributed.queue.1.module.name=${jms.module.0.name} +jms.uniform.distributed.queue.1.default.target.enable=false +jms.uniform.distributed.queue.1.loadbalancing.ramdom = false +jms.uniform.distributed.queue.1.delivery.failure.redelivery.limit=-1 +jms.uniform.distributed.queue.1.delivery.failure.expiration.policy=Log +jms.uniform.distributed.queue.1.delivery.failure.expiration.data=None + + + +jms.uniform.distributed.queue.0.name=IncommingAbacQueue +jms.uniform.distributed.queue.0.jndi.name=${abac.queue.incomming.jndi} +jms.uniform.distributed.queue.0.subdeployment.name=${jms.subdeployment.0.name} +jms.uniform.distributed.queue.0.module.name=${jms.module.0.name} +jms.uniform.distributed.queue.0.default.target.enable=false +jms.uniform.distributed.queue.0.loadbalancing.ramdom = false +jms.uniform.distributed.queue.0.delivery.failure.redelivery.limit=-1 +jms.uniform.distributed.queue.0.delivery.failure.expiration.policy=Redirect +jms.uniform.distributed.queue.0.delivery.failure.expiration.data=IncommingAbacErrorQueue +jms.uniform.distributed.queue.0.message.logging.enabled=false +jms.uniform.distributed.queue.0.message.logging.format=%header% + + + +############################################################ +## JMS queue index +############################################################ +jms.uniform.distributed.queue.items = 2 + +############################################################ +## JMS SAF agent configuration +############################################################ +jms.saf.agent.0.name=ErightsSAFAgent +jms.saf.agent.0.target.name=${server.name} +jms.saf.agent.0.type=Sending-only +jms.saf.agent.0.store.name=${persistent.filestore.0.name} + +############################################################ +## JMS SAF agent index +############################################################ +jms.saf.agent.items = 1 + +############################################################ +## JMS SAF Remote context configuration +############################################################ + +############################################################ +## SAF Remote context [ErightsSAFRemoteContext] +############################################################ +jms.saf.remote.context.0.module.name=${jms.module.0.name} +jms.saf.remote.context.0.name=ErightsSAFRemoteContext +jms.saf.remote.context.0.login.url= ${abac.saf.remote.context.url} +jms.saf.remote.context.0.login.username=${abac.user.name} +jms.saf.remote.context.0.login.password=${abac.user.password} + +############################################################ +## SAF Remote context index +############################################################ +jms.saf.remote.context.items = 1 + +############################################################ +## JMS SAF Error handling configuration +############################################################ + +############################################################ +## SAF Error handling [ErightsSAFErrorHandler] +############################################################ +jms.saf.error.handling.0.module.name=${jms.module.0.name} +jms.saf.error.handling.0.name=ErightsSAFErrorHandler +jms.saf.error.handling.0.policy.type=Log +jms.saf.error.handling.0.policy.data=None +jms.saf.error.handling.0.policy.saf.destination.name=... + +############################################################ +## SAF Error index +############################################################ +jms.saf.error.handling.items = 1 + +############################################################ +## JMS SAF Imported destination configuration +############################################################ + +############################################################ +## SAF Imported destination [SAFErightsDestination] +############################################################ +jms.saf.imported.destination.0.module.name=${jms.module.0.name} +jms.saf.imported.destination.0.name=SAFErightsDestination +jms.saf.imported.destination.0.timetolivedefault.enable=true +jms.saf.imported.destination.0.timetolive.value = 0 +jms.saf.imported.destination.0.target.default.enable=true +jms.saf.imported.destination.0.remote.context=${jms.saf.remote.context.0.name} +jms.saf.imported.destination.0.jndi.prefix=SAF_ +jms.saf.imported.destination.0.error.handling=${jms.saf.error.handling.0.name} + +############################################################ +## JMS SAF Index definition +############################################################ +jms.saf.imported.destination.items = 1 + +############################################################ +## Policy configuration +############################################################ +security.policies.items = 1 + +security.policies.0.mode = CREATE +security.policies.0.resource = type=, application=${jms.module.0.name} +security.policies.0.realm = myrealm +security.policies.0.authorizer = XACMLAuthorizer +security.policies.0.expression= Usr(${local.user.name}) + + +############################################################ +## Policy configuration +############################################################ + +############################################################ +## Credential configuration +############################################################ + +############################################################ +## Users configuration +############################################################ +security.users.0.realm=myrealm +security.users.0.name=${local.user.name} +security.users.0.password=${local.user.password} +security.users.0.comment=Principal for accessing the ABAC incoming queue. +security.users.0.authenticator=DefaultAuthenticator +security.users.items=1 + + +############################################################ +## JMS SAF Queue configuration +############################################################ + +############################################################ +## SAF Queue [OutgoingErightsQueue] +############################################################ +jms.saf.queue.0.module.name=${jms.module.0.name} +jms.saf.queue.0.imported.destination=${jms.saf.imported.destination.0.name} +jms.saf.queue.0.name=OutgoingErightsQueue +jms.saf.queue.0.jndi.local=${abac.queue.outgoing.local.jndi} +jms.saf.queue.0.jndi.remote=${abac.queue.outgoing.remote.jndi} +jms.saf.queue.0.timetolive.default.enable=true +jms.saf.queue.0.timetolive.value = 0 +jms.saf.queue.0.nonpersistentQOS = At-Least-Once +jms.saf.queue.0.error.handling.name = ${jms.saf.error.handling.0.name} + +############################################################ +## SAF Queue index +############################################################ + +jms.saf.queue.items = 1 diff --git a/e-rights-back-office/src/main/resources/config/weblogic/MNT/ERIGHTS001_MNT_wlst.properties b/e-rights-back-office/src/main/resources/config/weblogic/MNT/ERIGHTS001_MNT_wlst.properties new file mode 100644 index 0000000..8d3dab1 --- /dev/null +++ b/e-rights-back-office/src/main/resources/config/weblogic/MNT/ERIGHTS001_MNT_wlst.properties @@ -0,0 +1,330 @@ +############################################################ +############################################################ +## Script configuration +############################################################ +## Script option +#-------------------------------- +# Set whether or not the debug is activated +# Values: +# - true : Enable debug mode +# - disable: Disable debug mode +# Ex: script.log.enable = true +script.log.level = DEBUG +script.log.file = + +## Weblogic common installation +#------------------------------ +# BEA home directory +# Ex: bea.home = /home/bea/wls921 (Unix) C:/bea/wls921 (Windows) +bea.home = + +# Set the weblogic home directory +# Ex: +# (Unix) weblogic.home = /bea/wls921/weblogic92 or ${bea.home}/weblogic92 +# (Windows) weblogic.home = C:\bea\wls921\weblogic92 or ${bea.home}\weblogic92 +weblogic.home = ${bea.home}/wlserver + +## Domain definition +##--------------------- +# Specify a method to load the domain +# Values: +# read = Load the domain using the method readDomain +# connect = Load the domain using t3 connection +# Ex: domain.loading.type = connect +domain.loading.type = connect + +# Specify the connect url for the domain +domain.connect.url = t3://wlstd01009.cc.cec.eu.int:1042 + +# Specify the username for the connection +# Ex: domain.connect.username = weblogic +domain.connect.username = + +# Specify the password for the connection +# Ex: domain.connect.password = +domain.connect.password = + +# Domain name +# Ex: domain.name = myDomain +domain.name = ERIGHTS001_MNT + +# Location of the domain +# This variable contains the parent folder of the domain +# Ex: domain.location = /foo/bar (Unix) C:\foo\bar (Windows) +domain.location = + +############################################################ +## Environment specific variables (to be set by DC) +############################################################ + +#Server name +server.name=ERIGHTS001_MNTwls11 + +############################################################ +## Script specific variables - CONECTING TO ABAC ACC +############################################################ + +abac.user.name=LSY_ERIGHT +abac.user.password=UGJb-7GfmLBSxMjC0 +local.user.name=LSY_ERIGHT +local.user.password=gjO*&.x4@i^'kd#yQ +jms.connection.factory.jndi=jms/erightsConnectionFactory +abac.queue.incomming.jndi=jms/LSY_ERIGHT_BudgSoaRemoteQueue +abac.queue.incomming.error.jndi=jms/LSY_ERIGHT_BudgSoaRemoteErrorQueue +abac.queue.outgoing.local.jndi=jms/erights-out +abac.queue.outgoing.remote.jndi=jms/LSY_ERIGHT_REQ_OUT +abac.saf.remote.context.url=t3://webpix2jaacc.cc.cec.eu.int:1045,webpix2jbacc.cc.cec.eu.int:1045 + + + + + + + + +############################################################ +## JMS module configuration +############################################################ +jms.module.0.name =erights-jms-module +jms.module.0.targets=${server.name} + +############################################################ +## JMS module index +############################################################ +jms.module.items = 1 + +############################################################ +## File persistent store configuration +############################################################ + +############################################################ +## File Store [erightsFileStore] +############################################################ +persistent.filestore.0.name=erightsFileStore +persistent.filestore.0.target=${server.name} +persistent.filestore.0.location=./ERIGHT_FILE_STORE + +############################################################ +## File store Index definition +############################################################ +persistent.filestore.items = 1 + +############################################################ +## JMS server configuration +############################################################ + +############################################################ +## JMS Server [ErightsJMSServer] +############################################################ +jms.server.0.name=ErightsJMSServer +jms.server.0.target=${server.name} +jms.server.0.store=${persistent.filestore.0.name} + +############################################################ +## JSMServer Index definition +############################################################ +jms.server.items = 1 + +############################################################ +## JMS subdeployment configuration +############################################################ +jms.subdeployment.0.name =ErightsSubDeployment +jms.subdeployment.0.targets=${jms.server.0.name} +jms.subdeployment.0.module.name=${jms.module.0.name} + +############################################################ +## Subdeployment index +############################################################ +jms.subdeployment.items = 1 + +############################################################ +## JMS connection factory configuration +############################################################ + +############################################################ +## JMS connection factory [ErightsConnectionFactoryCN] +############################################################ +jms.connection.factory.0.name=ErightsConnectionFactoryCN +jms.connection.factory.0.jndi.name=${jms.connection.factory.jndi} +jms.connection.factory.0.module.name=${jms.module.0.name} +jms.connection.factory.0.subdeployment.name=${jms.subdeployment.0.name} +jms.connection.factory.0.default.target.enable=false +jms.connection.factory.0.xa.enable=false +jms.connection.factory.0.xa.timeout = 3600 + +############################################################ +## JMS Connection factory Index +############################################################ +jms.connection.factory.items = 1 + +############################################################ +## Uniform distributed queue configuration +############################################################ +jms.uniform.distributed.queue.1.name=IncommingAbacErrorQueue +jms.uniform.distributed.queue.1.jndi.name=${abac.queue.incomming.error.jndi} +jms.uniform.distributed.queue.1.subdeployment.name=${jms.subdeployment.0.name} +jms.uniform.distributed.queue.1.module.name=${jms.module.0.name} +jms.uniform.distributed.queue.1.default.target.enable=false +jms.uniform.distributed.queue.1.loadbalancing.ramdom = false +jms.uniform.distributed.queue.1.delivery.failure.redelivery.limit=-1 +jms.uniform.distributed.queue.1.delivery.failure.expiration.policy=Log +jms.uniform.distributed.queue.1.delivery.failure.expiration.data=None + + + +jms.uniform.distributed.queue.0.name=IncommingAbacQueue +jms.uniform.distributed.queue.0.jndi.name=${abac.queue.incomming.jndi} +jms.uniform.distributed.queue.0.subdeployment.name=${jms.subdeployment.0.name} +jms.uniform.distributed.queue.0.module.name=${jms.module.0.name} +jms.uniform.distributed.queue.0.default.target.enable=false +jms.uniform.distributed.queue.0.loadbalancing.ramdom = false +jms.uniform.distributed.queue.0.delivery.failure.redelivery.limit=-1 +jms.uniform.distributed.queue.0.delivery.failure.expiration.policy=Redirect +jms.uniform.distributed.queue.0.delivery.failure.expiration.data=IncommingAbacErrorQueue +jms.uniform.distributed.queue.0.message.logging.enabled=false +jms.uniform.distributed.queue.0.message.logging.format=%header% + + + +############################################################ +## JMS queue index +############################################################ +jms.uniform.distributed.queue.items = 2 + +############################################################ +## JMS SAF agent configuration +############################################################ +jms.saf.agent.0.name=ErightsSAFAgent +jms.saf.agent.0.target.name=${server.name} +jms.saf.agent.0.type=Sending-only +jms.saf.agent.0.store.name=${persistent.filestore.0.name} + +############################################################ +## JMS SAF agent index +############################################################ +jms.saf.agent.items = 1 + +############################################################ +## JMS SAF Remote context configuration +############################################################ + +############################################################ +## SAF Remote context [ErightsSAFRemoteContext] +############################################################ +jms.saf.remote.context.0.module.name=${jms.module.0.name} +jms.saf.remote.context.0.name=ErightsSAFRemoteContext +jms.saf.remote.context.0.login.url= ${abac.saf.remote.context.url} +jms.saf.remote.context.0.login.username=${abac.user.name} +jms.saf.remote.context.0.login.password=${abac.user.password} + +############################################################ +## SAF Remote context index +############################################################ +jms.saf.remote.context.items = 1 + +############################################################ +## JMS SAF Error handling configuration +############################################################ + +############################################################ +## SAF Error handling [ErightsSAFErrorHandler] +############################################################ +jms.saf.error.handling.0.module.name=${jms.module.0.name} +jms.saf.error.handling.0.name=ErightsSAFErrorHandler +jms.saf.error.handling.0.policy.type=Log +jms.saf.error.handling.0.policy.data=None +jms.saf.error.handling.0.policy.saf.destination.name=... + +############################################################ +## SAF Error index +############################################################ +jms.saf.error.handling.items = 1 + +############################################################ +## JMS SAF Imported destination configuration +############################################################ + +############################################################ +## SAF Imported destination [SAFErightsDestination] +############################################################ +jms.saf.imported.destination.0.module.name=${jms.module.0.name} +jms.saf.imported.destination.0.name=SAFErightsDestination +jms.saf.imported.destination.0.timetolivedefault.enable=true +jms.saf.imported.destination.0.timetolive.value = 0 +jms.saf.imported.destination.0.target.default.enable=true +jms.saf.imported.destination.0.remote.context=${jms.saf.remote.context.0.name} +jms.saf.imported.destination.0.jndi.prefix=SAF_ +jms.saf.imported.destination.0.error.handling=${jms.saf.error.handling.0.name} + +############################################################ +## JMS SAF Index definition +############################################################ +jms.saf.imported.destination.items = 1 + +############################################################ +## Policy configuration +############################################################ +security.policies.items = 1 + +security.policies.0.mode = CREATE +security.policies.0.resource = type=, application=${jms.module.0.name} +security.policies.0.realm = myrealm +security.policies.0.authorizer = XACMLAuthorizer +security.policies.0.expression= Usr(${local.user.name}) + + +############################################################ +## Policy configuration +############################################################ + +############################################################ +## Credential configuration +############################################################ + +############################################################ +## Users configuration +############################################################ +security.users.0.realm=myrealm +security.users.0.name=${local.user.name} +security.users.0.password=${local.user.password} +security.users.0.comment=Principal for accessing the ABAC incoming queue. +security.users.0.authenticator=DefaultAuthenticator +security.users.items=1 + + +############################################################ +## JMS SAF Queue configuration +############################################################ + +############################################################ +## SAF Queue [OutgoingErightsQueue] +############################################################ +jms.saf.queue.0.module.name=${jms.module.0.name} +jms.saf.queue.0.imported.destination=${jms.saf.imported.destination.0.name} +jms.saf.queue.0.name=OutgoingErightsQueue +jms.saf.queue.0.jndi.local=${abac.queue.outgoing.local.jndi} +jms.saf.queue.0.jndi.remote=${abac.queue.outgoing.remote.jndi} +jms.saf.queue.0.timetolive.default.enable=true +jms.saf.queue.0.timetolive.value = 0 +jms.saf.queue.0.nonpersistentQOS = At-Least-Once +jms.saf.queue.0.error.handling.name = ${jms.saf.error.handling.0.name} + +############################################################ +## SAF Queue index +############################################################ + +jms.saf.queue.items = 1 + + + + + + + + + + + + + + diff --git a/e-rights-back-office/src/main/resources/config/weblogic/PRD/ERIGHTS001_PRD_wlst.properties b/e-rights-back-office/src/main/resources/config/weblogic/PRD/ERIGHTS001_PRD_wlst.properties new file mode 100644 index 0000000..8838a7a --- /dev/null +++ b/e-rights-back-office/src/main/resources/config/weblogic/PRD/ERIGHTS001_PRD_wlst.properties @@ -0,0 +1,321 @@ + + + + + +############################################################ +############################################################ +## Script configuration +############################################################ +## Script option +#-------------------------------- +# Set whether or not the debug is activated +# Values: +# - true : Enable debug mode +# - disable: Disable debug mode +# Ex: script.log.enable = true +script.log.level = DEBUG +script.log.file = + +## Weblogic common installation +#------------------------------ +# BEA home directory +# Ex: bea.home = /home/bea/wls921 (Unix) C:/bea/wls921 (Windows) +bea.home = + +# Set the weblogic home directory +# Ex: +# (Unix) weblogic.home = /bea/wls921/weblogic92 or ${bea.home}/weblogic92 +# (Windows) weblogic.home = C:\bea\wls921\weblogic92 or ${bea.home}\weblogic92 +weblogic.home = ${bea.home}/wlserver + +## Domain definition +##--------------------- +# Specify a method to load the domain +# Values: +# read = Load the domain using the method readDomain +# connect = Load the domain using t3 connection +# Ex: domain.loading.type = connect +domain.loading.type = connect + +# Specify the connect url for the domain +domain.connect.url = t3://wlmcl00199.cc.cec.eu.int:1042 + +# Specify the username for the connection +# Ex: domain.connect.username = weblogic +domain.connect.username = + +# Specify the password for the connection +# Ex: domain.connect.password = +domain.connect.password = + +# Domain name +# Ex: domain.name = myDomain +domain.name = ERIGHTS001_PRD + +# Location of the domain +# This variable contains the parent folder of the domain +# Ex: domain.location = /foo/bar (Unix) C:\foo\bar (Windows) +domain.location = + +############################################################ +## Environment specific variables (to be set by DC) +############################################################ + +#Server name +server.name=ERIGHTS001_PRDwls11 + +############################################################ +## Script specific variables - CONECTING TO ABAC PRD +############################################################ + +abac.user.name=LSY_ERIGHT +abac.user.password=***************** //TODO +local.user.name=LSY_ERIGHT +local.user.password=***************** //TODO +jms.connection.factory.jndi=jms/erightsConnectionFactory +abac.queue.incomming.jndi=jms/LSY_ERIGHT_BudgSoaRemoteQueue +abac.queue.incomming.error.jndi=jms/LSY_ERIGHT_BudgSoaRemoteErrorQueue +abac.queue.outgoing.local.jndi=jms/erights-out +abac.queue.outgoing.remote.jndi=jms/LSY_ERIGHT_REQ_OUT +abac.saf.remote.context.url=t3://webpix2japrd.cc.cec.eu.int:1045,webpix2jbprd.cc.cec.eu.int:1045 + + + + + + + + +############################################################ +## JMS module configuration +############################################################ +jms.module.0.name =erights-jms-module +jms.module.0.targets=${server.name} + +############################################################ +## JMS module index +############################################################ +jms.module.items = 1 + +############################################################ +## File persistent store configuration +############################################################ + +############################################################ +## File Store [erightsFileStore] +############################################################ +persistent.filestore.0.name=erightsFileStore +persistent.filestore.0.target=${server.name} +persistent.filestore.0.location=./ERIGHT_FILE_STORE + +############################################################ +## File store Index definition +############################################################ +persistent.filestore.items = 1 + +############################################################ +## JMS server configuration +############################################################ + +############################################################ +## JMS Server [ErightsJMSServer] +############################################################ +jms.server.0.name=ErightsJMSServer +jms.server.0.target=${server.name} +jms.server.0.store=${persistent.filestore.0.name} + +############################################################ +## JSMServer Index definition +############################################################ +jms.server.items = 1 + +############################################################ +## JMS subdeployment configuration +############################################################ +jms.subdeployment.0.name =ErightsSubDeployment +jms.subdeployment.0.targets=${jms.server.0.name} +jms.subdeployment.0.module.name=${jms.module.0.name} + +############################################################ +## Subdeployment index +############################################################ +jms.subdeployment.items = 1 + +############################################################ +## JMS connection factory configuration +############################################################ + +############################################################ +## JMS connection factory [ErightsConnectionFactoryCN] +############################################################ +jms.connection.factory.0.name=ErightsConnectionFactoryCN +jms.connection.factory.0.jndi.name=${jms.connection.factory.jndi} +jms.connection.factory.0.module.name=${jms.module.0.name} +jms.connection.factory.0.subdeployment.name=${jms.subdeployment.0.name} +jms.connection.factory.0.default.target.enable=false +jms.connection.factory.0.xa.enable=false +jms.connection.factory.0.xa.timeout = 3600 + +############################################################ +## JMS Connection factory Index +############################################################ +jms.connection.factory.items = 1 + +############################################################ +## Uniform distributed queue configuration +############################################################ +jms.uniform.distributed.queue.1.name=IncommingAbacErrorQueue +jms.uniform.distributed.queue.1.jndi.name=${abac.queue.incomming.error.jndi} +jms.uniform.distributed.queue.1.subdeployment.name=${jms.subdeployment.0.name} +jms.uniform.distributed.queue.1.module.name=${jms.module.0.name} +jms.uniform.distributed.queue.1.default.target.enable=false +jms.uniform.distributed.queue.1.loadbalancing.ramdom = false +jms.uniform.distributed.queue.1.delivery.failure.redelivery.limit=-1 +jms.uniform.distributed.queue.1.delivery.failure.expiration.policy=Log +jms.uniform.distributed.queue.1.delivery.failure.expiration.data=None + + + +jms.uniform.distributed.queue.0.name=IncommingAbacQueue +jms.uniform.distributed.queue.0.jndi.name=${abac.queue.incomming.jndi} +jms.uniform.distributed.queue.0.subdeployment.name=${jms.subdeployment.0.name} +jms.uniform.distributed.queue.0.module.name=${jms.module.0.name} +jms.uniform.distributed.queue.0.default.target.enable=false +jms.uniform.distributed.queue.0.loadbalancing.ramdom = false +jms.uniform.distributed.queue.0.delivery.failure.redelivery.limit=-1 +jms.uniform.distributed.queue.0.delivery.failure.expiration.policy=Redirect +jms.uniform.distributed.queue.0.delivery.failure.expiration.data=IncommingAbacErrorQueue +jms.uniform.distributed.queue.0.message.logging.enabled=false +jms.uniform.distributed.queue.0.message.logging.format=%header% + + + +############################################################ +## JMS queue index +############################################################ +jms.uniform.distributed.queue.items = 2 + +############################################################ +## JMS SAF agent configuration +############################################################ +jms.saf.agent.0.name=ErightsSAFAgent +jms.saf.agent.0.target.name=${server.name} +jms.saf.agent.0.type=Sending-only +jms.saf.agent.0.store.name=${persistent.filestore.0.name} + +############################################################ +## JMS SAF agent index +############################################################ +jms.saf.agent.items = 1 + +############################################################ +## JMS SAF Remote context configuration +############################################################ + +############################################################ +## SAF Remote context [ErightsSAFRemoteContext] +############################################################ +jms.saf.remote.context.0.module.name=${jms.module.0.name} +jms.saf.remote.context.0.name=ErightsSAFRemoteContext +jms.saf.remote.context.0.login.url= ${abac.saf.remote.context.url} +jms.saf.remote.context.0.login.username=${abac.user.name} +jms.saf.remote.context.0.login.password=${abac.user.password} + +############################################################ +## SAF Remote context index +############################################################ +jms.saf.remote.context.items = 1 + +############################################################ +## JMS SAF Error handling configuration +############################################################ + +############################################################ +## SAF Error handling [ErightsSAFErrorHandler] +############################################################ +jms.saf.error.handling.0.module.name=${jms.module.0.name} +jms.saf.error.handling.0.name=ErightsSAFErrorHandler +jms.saf.error.handling.0.policy.type=Log +jms.saf.error.handling.0.policy.data=None +jms.saf.error.handling.0.policy.saf.destination.name=... + +############################################################ +## SAF Error index +############################################################ +jms.saf.error.handling.items = 1 + +############################################################ +## JMS SAF Imported destination configuration +############################################################ + +############################################################ +## SAF Imported destination [SAFErightsDestination] +############################################################ +jms.saf.imported.destination.0.module.name=${jms.module.0.name} +jms.saf.imported.destination.0.name=SAFErightsDestination +jms.saf.imported.destination.0.timetolivedefault.enable=true +jms.saf.imported.destination.0.timetolive.value = 0 +jms.saf.imported.destination.0.target.default.enable=true +jms.saf.imported.destination.0.remote.context=${jms.saf.remote.context.0.name} +jms.saf.imported.destination.0.jndi.prefix=SAF_ +jms.saf.imported.destination.0.error.handling=${jms.saf.error.handling.0.name} + +############################################################ +## JMS SAF Index definition +############################################################ +jms.saf.imported.destination.items = 1 + +############################################################ +## Policy configuration +############################################################ +security.policies.items = 1 + +security.policies.0.mode = CREATE +security.policies.0.resource = type=, application=${jms.module.0.name} +security.policies.0.realm = myrealm +security.policies.0.authorizer = XACMLAuthorizer +security.policies.0.expression= Usr(${local.user.name}) + + +############################################################ +## Policy configuration +############################################################ + +############################################################ +## Credential configuration +############################################################ + +############################################################ +## Users configuration +############################################################ +security.users.0.realm=myrealm +security.users.0.name=${local.user.name} +security.users.0.password=${local.user.password} +security.users.0.comment=Principal for accessing the ABAC incoming queue. +security.users.0.authenticator=DefaultAuthenticator +security.users.items=1 + + +############################################################ +## JMS SAF Queue configuration +############################################################ + +############################################################ +## SAF Queue [OutgoingErightsQueue] +############################################################ +jms.saf.queue.0.module.name=${jms.module.0.name} +jms.saf.queue.0.imported.destination=${jms.saf.imported.destination.0.name} +jms.saf.queue.0.name=OutgoingErightsQueue +jms.saf.queue.0.jndi.local=${abac.queue.outgoing.local.jndi} +jms.saf.queue.0.jndi.remote=${abac.queue.outgoing.remote.jndi} +jms.saf.queue.0.timetolive.default.enable=true +jms.saf.queue.0.timetolive.value = 0 +jms.saf.queue.0.nonpersistentQOS = At-Least-Once +jms.saf.queue.0.error.handling.name = ${jms.saf.error.handling.0.name} + +############################################################ +## SAF Queue index +############################################################ + +jms.saf.queue.items = 1 diff --git a/e-rights-back-office/src/main/resources/config/weblogic/TST/ERIGHTS001_TST_wlst.properties b/e-rights-back-office/src/main/resources/config/weblogic/TST/ERIGHTS001_TST_wlst.properties new file mode 100644 index 0000000..89b7860 --- /dev/null +++ b/e-rights-back-office/src/main/resources/config/weblogic/TST/ERIGHTS001_TST_wlst.properties @@ -0,0 +1,316 @@ +############################################################ +############################################################ +## Script configuration +############################################################ +## Script option +#-------------------------------- +# Set whether or not the debug is activated +# Values: +# - true : Enable debug mode +# - disable: Disable debug mode +# Ex: script.log.enable = true +script.log.level = DEBUG +script.log.file = + +## Weblogic common installation +#------------------------------ +# BEA home directory +# Ex: bea.home = /home/bea/wls921 (Unix) C:/bea/wls921 (Windows) +bea.home = + +# Set the weblogic home directory +# Ex: +# (Unix) weblogic.home = /bea/wls921/weblogic92 or ${bea.home}/weblogic92 +# (Windows) weblogic.home = C:\bea\wls921\weblogic92 or ${bea.home}\weblogic92 +weblogic.home = ${bea.home}/wlserver + +## Domain definition +##--------------------- +# Specify a method to load the domain +# Values: +# read = Load the domain using the method readDomain +# connect = Load the domain using t3 connection +# Ex: domain.loading.type = connect +domain.loading.type = connect + +# Specify the connect url for the domain +domain.connect.url = t3://wlstd00999.cc.cec.eu.int:1042 + +# Specify the username for the connection +# Ex: domain.connect.username = weblogic +domain.connect.username = + +# Specify the password for the connection +# Ex: domain.connect.password = +domain.connect.password = + +# Domain name +# Ex: domain.name = myDomain +domain.name = ERIGHTS001_TST + +# Location of the domain +# This variable contains the parent folder of the domain +# Ex: domain.location = /foo/bar (Unix) C:\foo\bar (Windows) +domain.location = + +############################################################ +## Environment specific variables (to be set by DC) +############################################################ + +#Server name +server.name=ERIGHTS001_TSTwls11 + +############################################################ +## Script specific variables +############################################################ + +abac.user.name=LSY_ERIGHT +abac.user.password=kI!@2Mjg92Kj +local.user.name=LSY_ERIGHT +local.user.password=DapLQ!AaPe17EMSk +jms.connection.factory.jndi=jms/erightsConnectionFactory +abac.queue.incomming.jndi=jms/LSY_ERIGHT_BudgSoaRemoteQueue +abac.queue.incomming.error.jndi=jms/LSY_ERIGHT_BudgSoaRemoteErrorQueue +abac.queue.outgoing.local.jndi=jms/erights-out +abac.queue.outgoing.remote.jndi=jms/LSY_ERIGHT_REQ_OUT +abac.saf.remote.context.url=t3://webpix2jatst.cc.cec.eu.int:1045,webpix2jbtst.cc.cec.eu.int:1045 + + + + + + + + +############################################################ +## JMS module configuration +############################################################ +jms.module.0.name =erights-jms-module +jms.module.0.targets=${server.name} + +############################################################ +## JMS module index +############################################################ +jms.module.items = 1 + +############################################################ +## File persistent store configuration +############################################################ + +############################################################ +## File Store [erightsFileStore] +############################################################ +persistent.filestore.0.name=erightsFileStore +persistent.filestore.0.target=${server.name} +persistent.filestore.0.location=./ERIGHT_FILE_STORE + +############################################################ +## File store Index definition +############################################################ +persistent.filestore.items = 1 + +############################################################ +## JMS server configuration +############################################################ + +############################################################ +## JMS Server [ErightsJMSServer] +############################################################ +jms.server.0.name=ErightsJMSServer +jms.server.0.target=${server.name} +jms.server.0.store=${persistent.filestore.0.name} + +############################################################ +## JSMServer Index definition +############################################################ +jms.server.items = 1 + +############################################################ +## JMS subdeployment configuration +############################################################ +jms.subdeployment.0.name =ErightsSubDeployment +jms.subdeployment.0.targets=${jms.server.0.name} +jms.subdeployment.0.module.name=${jms.module.0.name} + +############################################################ +## Subdeployment index +############################################################ +jms.subdeployment.items = 1 + +############################################################ +## JMS connection factory configuration +############################################################ + +############################################################ +## JMS connection factory [ErightsConnectionFactoryCN] +############################################################ +jms.connection.factory.0.name=ErightsConnectionFactoryCN +jms.connection.factory.0.jndi.name=${jms.connection.factory.jndi} +jms.connection.factory.0.module.name=${jms.module.0.name} +jms.connection.factory.0.subdeployment.name=${jms.subdeployment.0.name} +jms.connection.factory.0.default.target.enable=false +jms.connection.factory.0.xa.enable=false +jms.connection.factory.0.xa.timeout = 3600 + +############################################################ +## JMS Connection factory Index +############################################################ +jms.connection.factory.items = 1 + +############################################################ +## Uniform distributed queue configuration +############################################################ +jms.uniform.distributed.queue.1.name=IncommingAbacErrorQueue +jms.uniform.distributed.queue.1.jndi.name=${abac.queue.incomming.error.jndi} +jms.uniform.distributed.queue.1.subdeployment.name=${jms.subdeployment.0.name} +jms.uniform.distributed.queue.1.module.name=${jms.module.0.name} +jms.uniform.distributed.queue.1.default.target.enable=false +jms.uniform.distributed.queue.1.loadbalancing.ramdom = false +jms.uniform.distributed.queue.1.delivery.failure.redelivery.limit=-1 +jms.uniform.distributed.queue.1.delivery.failure.expiration.policy=Log +jms.uniform.distributed.queue.1.delivery.failure.expiration.data=None + + + +jms.uniform.distributed.queue.0.name=IncommingAbacQueue +jms.uniform.distributed.queue.0.jndi.name=${abac.queue.incomming.jndi} +jms.uniform.distributed.queue.0.subdeployment.name=${jms.subdeployment.0.name} +jms.uniform.distributed.queue.0.module.name=${jms.module.0.name} +jms.uniform.distributed.queue.0.default.target.enable=false +jms.uniform.distributed.queue.0.loadbalancing.ramdom = false +jms.uniform.distributed.queue.0.delivery.failure.redelivery.limit=-1 +jms.uniform.distributed.queue.0.delivery.failure.expiration.policy=Redirect +jms.uniform.distributed.queue.0.delivery.failure.expiration.data=IncommingAbacErrorQueue +jms.uniform.distributed.queue.0.message.logging.enabled=false +jms.uniform.distributed.queue.0.message.logging.format=%header% + + + +############################################################ +## JMS queue index +############################################################ +jms.uniform.distributed.queue.items = 2 + +############################################################ +## JMS SAF agent configuration +############################################################ +jms.saf.agent.0.name=ErightsSAFAgent +jms.saf.agent.0.target.name=${server.name} +jms.saf.agent.0.type=Sending-only +jms.saf.agent.0.store.name=${persistent.filestore.0.name} + +############################################################ +## JMS SAF agent index +############################################################ +jms.saf.agent.items = 1 + +############################################################ +## JMS SAF Remote context configuration +############################################################ + +############################################################ +## SAF Remote context [ErightsSAFRemoteContext] +############################################################ +jms.saf.remote.context.0.module.name=${jms.module.0.name} +jms.saf.remote.context.0.name=ErightsSAFRemoteContext +jms.saf.remote.context.0.login.url= ${abac.saf.remote.context.url} +jms.saf.remote.context.0.login.username=${abac.user.name} +jms.saf.remote.context.0.login.password=${abac.user.password} + +############################################################ +## SAF Remote context index +############################################################ +jms.saf.remote.context.items = 1 + +############################################################ +## JMS SAF Error handling configuration +############################################################ + +############################################################ +## SAF Error handling [ErightsSAFErrorHandler] +############################################################ +jms.saf.error.handling.0.module.name=${jms.module.0.name} +jms.saf.error.handling.0.name=ErightsSAFErrorHandler +jms.saf.error.handling.0.policy.type=Log +jms.saf.error.handling.0.policy.data=None +jms.saf.error.handling.0.policy.saf.destination.name=... + +############################################################ +## SAF Error index +############################################################ +jms.saf.error.handling.items = 1 + +############################################################ +## JMS SAF Imported destination configuration +############################################################ + +############################################################ +## SAF Imported destination [SAFErightsDestination] +############################################################ +jms.saf.imported.destination.0.module.name=${jms.module.0.name} +jms.saf.imported.destination.0.name=SAFErightsDestination +jms.saf.imported.destination.0.timetolivedefault.enable=true +jms.saf.imported.destination.0.timetolive.value = 0 +jms.saf.imported.destination.0.target.default.enable=true +jms.saf.imported.destination.0.remote.context=${jms.saf.remote.context.0.name} +jms.saf.imported.destination.0.jndi.prefix=SAF_ +jms.saf.imported.destination.0.error.handling=${jms.saf.error.handling.0.name} + +############################################################ +## JMS SAF Index definition +############################################################ +jms.saf.imported.destination.items = 1 + +############################################################ +## Policy configuration +############################################################ +security.policies.items = 1 + +security.policies.0.mode = CREATE +security.policies.0.resource = type=, application=${jms.module.0.name} +security.policies.0.realm = myrealm +security.policies.0.authorizer = XACMLAuthorizer +security.policies.0.expression= Usr(${local.user.name}) + + +############################################################ +## Policy configuration +############################################################ + +############################################################ +## Credential configuration +############################################################ + +############################################################ +## Users configuration +############################################################ +security.users.0.realm=myrealm +security.users.0.name=${local.user.name} +security.users.0.password=${local.user.password} +security.users.0.comment=Principal for accessing the ABAC incoming queue. +security.users.0.authenticator=DefaultAuthenticator +security.users.items=1 + + +############################################################ +## JMS SAF Queue configuration +############################################################ + +############################################################ +## SAF Queue [OutgoingErightsQueue] +############################################################ +jms.saf.queue.0.module.name=${jms.module.0.name} +jms.saf.queue.0.imported.destination=${jms.saf.imported.destination.0.name} +jms.saf.queue.0.name=OutgoingErightsQueue +jms.saf.queue.0.jndi.local=${abac.queue.outgoing.local.jndi} +jms.saf.queue.0.jndi.remote=${abac.queue.outgoing.remote.jndi} +jms.saf.queue.0.timetolive.default.enable=true +jms.saf.queue.0.timetolive.value = 0 +jms.saf.queue.0.nonpersistentQOS = At-Least-Once +jms.saf.queue.0.error.handling.name = ${jms.saf.error.handling.0.name} + +############################################################ +## SAF Queue index +############################################################ + +jms.saf.queue.items = 1 diff --git a/e-rights-back-office/src/main/resources/ehcache.xml b/e-rights-back-office/src/main/resources/ehcache.xml new file mode 100644 index 0000000..59544d3 --- /dev/null +++ b/e-rights-back-office/src/main/resources/ehcache.xml @@ -0,0 +1,41 @@ + + + + + + 3600 + + 200 + + + + + 3600 + + 200 + + + + + 3600 + + 200 + + + + + 3600 + + 400 + + + + + 3600 + + 1 + + + \ No newline at end of file diff --git a/e-rights-back-office/src/main/resources/openapi-templates/model.mustache b/e-rights-back-office/src/main/resources/openapi-templates/model.mustache new file mode 100644 index 0000000..fdaaf7f --- /dev/null +++ b/e-rights-back-office/src/main/resources/openapi-templates/model.mustache @@ -0,0 +1,69 @@ +{{>licenseInfo}} + +package {{package}}; + +{{#useReflectionEqualsHashCode}} +import org.apache.commons.lang3.builder.EqualsBuilder; +import org.apache.commons.lang3.builder.HashCodeBuilder; +{{/useReflectionEqualsHashCode}} +import java.util.Objects; +import java.util.Arrays; +{{#imports}} +import {{import}}; +{{/imports}} +{{#serializableModel}} +import java.io.Serializable; +{{/serializableModel}} +{{#jackson}} +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; +{{#withXml}} +import com.fasterxml.jackson.dataformat.xml.annotation.*; +{{/withXml}} +{{#vendorExtensions.x-has-readonly-properties}} +import com.fasterxml.jackson.annotation.JsonCreator; +{{/vendorExtensions.x-has-readonly-properties}} +{{/jackson}} +{{#withXml}} +import {{javaxPackage}}.xml.bind.annotation.*; +import {{javaxPackage}}.xml.bind.annotation.adapters.*; +import io.github.threetenjaxb.core.*; +{{/withXml}} +{{#jsonb}} +import java.lang.reflect.Type; +import {{javaxPackage}}.json.bind.annotation.JsonbTypeDeserializer; +import {{javaxPackage}}.json.bind.annotation.JsonbTypeSerializer; +import {{javaxPackage}}.json.bind.serializer.DeserializationContext; +import {{javaxPackage}}.json.bind.serializer.JsonbDeserializer; +import {{javaxPackage}}.json.bind.serializer.JsonbSerializer; +import {{javaxPackage}}.json.bind.serializer.SerializationContext; +import {{javaxPackage}}.json.stream.JsonGenerator; +import {{javaxPackage}}.json.stream.JsonParser; +import {{javaxPackage}}.json.bind.annotation.JsonbProperty; +{{#vendorExtensions.x-has-readonly-properties}} +import {{javaxPackage}}.json.bind.annotation.JsonbCreator; +{{/vendorExtensions.x-has-readonly-properties}} +{{/jsonb}} +{{#parcelableModel}} +import android.os.Parcelable; +import android.os.Parcel; +{{/parcelableModel}} +{{#useBeanValidation}} +import {{javaxPackage}}.validation.constraints.*; +import {{javaxPackage}}.validation.Valid; +{{/useBeanValidation}} +{{#performBeanValidation}} +import org.hibernate.validator.constraints.*; +{{/performBeanValidation}} +{{#supportUrlQuery}} +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.StringJoiner; +{{/supportUrlQuery}} + + +{{#models}} +{{#model}} +{{#isEnum}}{{>modelEnum}}{{/isEnum}}{{^isEnum}}{{#vendorExtensions.x-is-one-of-interface}}{{>oneof_interface}}{{/vendorExtensions.x-is-one-of-interface}}{{^vendorExtensions.x-is-one-of-interface}}{{>pojo}}{{/vendorExtensions.x-is-one-of-interface}}{{/isEnum}} +{{/model}} +{{/models}} diff --git a/e-rights-back-office/src/main/resources/openapi-templates/pojo.mustache b/e-rights-back-office/src/main/resources/openapi-templates/pojo.mustache new file mode 100644 index 0000000..f5771aa --- /dev/null +++ b/e-rights-back-office/src/main/resources/openapi-templates/pojo.mustache @@ -0,0 +1,638 @@ +/** + * {{description}}{{^description}}{{classname}}{{/description}}{{#isDeprecated}} + * @deprecated{{/isDeprecated}} + */{{#isDeprecated}} +@Deprecated{{/isDeprecated}} +{{#swagger1AnnotationLibrary}} +{{#description}} +@ApiModel(description = "{{{.}}}") +{{/description}} +{{/swagger1AnnotationLibrary}} +{{#swagger2AnnotationLibrary}} +{{#description}} +@Schema(description = "{{{.}}}") +{{/description}} +{{/swagger2AnnotationLibrary}} +{{#jackson}} +@JsonPropertyOrder({ +{{#vars}} + {{classname}}.JSON_PROPERTY_{{nameInSnakeCase}}{{^-last}},{{/-last}} +{{/vars}} +}) +{{#isClassnameSanitized}} +{{^hasDiscriminatorWithNonEmptyMapping}} +@JsonTypeName("{{name}}") +{{/hasDiscriminatorWithNonEmptyMapping}} +{{/isClassnameSanitized}} +{{/jackson}} +{{>additionalModelTypeAnnotations}}{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{>xmlAnnotation}} +{{#vendorExtensions.x-class-extra-annotation}} +{{{vendorExtensions.x-class-extra-annotation}}} +{{/vendorExtensions.x-class-extra-annotation}} +public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}} {{^parent}}extends eu.europa.eeas.ananke.core.api.transferobject.AbstractTransferObject {{/parent}} +{{#vendorExtensions.x-implements}}{{#-first}}implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{#-last}} {{/-last}}{{/vendorExtensions.x-implements}}{ +{{#serializableModel}} + private static final long serialVersionUID = 1L; + +{{/serializableModel}} + {{#vars}} + {{#isEnum}} + {{^isContainer}} +{{>modelInnerEnum}} + {{/isContainer}} + {{#isContainer}} + {{#mostInnerItems}} +{{>modelInnerEnum}} + {{/mostInnerItems}} + {{/isContainer}} + {{/isEnum}} + {{#gson}} + public static final String SERIALIZED_NAME_{{nameInSnakeCase}} = "{{baseName}}"; + {{/gson}} + {{#jackson}} + public static final String JSON_PROPERTY_{{nameInSnakeCase}} = "{{baseName}}"; + {{/jackson}} + {{#withXml}} + {{#isXmlAttribute}} + @XmlAttribute(name = "{{xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}") + {{/isXmlAttribute}} + {{^isXmlAttribute}} + {{^isContainer}} + @XmlElement({{#xmlNamespace}}namespace="{{.}}", {{/xmlNamespace}}name = "{{xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}") + {{/isContainer}} + {{#isContainer}} + // Is a container wrapped={{isXmlWrapped}} + {{#items}} + // items.name={{name}} items.baseName={{baseName}} items.xmlName={{xmlName}} items.xmlNamespace={{xmlNamespace}} + // items.example={{example}} items.type={{dataType}} + @XmlElement({{#xmlNamespace}}namespace="{{.}}", {{/xmlNamespace}}name = "{{xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}") + {{/items}} + {{#isXmlWrapped}} + @XmlElementWrapper({{#xmlNamespace}}namespace="{{.}}", {{/xmlNamespace}}name = "{{xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}") + {{/isXmlWrapped}} + {{/isContainer}} + {{#isDateTime}} + @XmlJavaTypeAdapter(OffsetDateTimeXmlAdapter.class) + {{/isDateTime}} + {{/isXmlAttribute}} + {{/withXml}} + {{#gson}} + @SerializedName(SERIALIZED_NAME_{{nameInSnakeCase}}) + {{/gson}} + {{#vendorExtensions.x-field-extra-annotation}} + {{{vendorExtensions.x-field-extra-annotation}}} + {{/vendorExtensions.x-field-extra-annotation}} + {{#vendorExtensions.x-is-jackson-optional-nullable}} + {{#isContainer}} + {{#hasChildren}}protected{{/hasChildren}}{{^hasChildren}}private{{/hasChildren}} JsonNullable<{{{datatypeWithEnum}}}> {{name}} = JsonNullable.<{{{datatypeWithEnum}}}>undefined(); + {{/isContainer}} + {{^isContainer}} + {{#hasChildren}}protected{{/hasChildren}}{{^hasChildren}}private{{/hasChildren}} JsonNullable<{{{datatypeWithEnum}}}> {{name}} = JsonNullable.<{{{datatypeWithEnum}}}>{{#defaultValue}}of({{{.}}}){{/defaultValue}}{{^defaultValue}}undefined(){{/defaultValue}}; + {{/isContainer}} + {{/vendorExtensions.x-is-jackson-optional-nullable}} + {{^vendorExtensions.x-is-jackson-optional-nullable}} + {{#isContainer}} + {{#hasChildren}}protected{{/hasChildren}}{{^hasChildren}}private{{/hasChildren}} {{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}}; + {{/isContainer}} + {{^isContainer}} + {{#hasChildren}}protected{{/hasChildren}}{{^hasChildren}}private{{/hasChildren}} {{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}}; + {{/isContainer}} + {{/vendorExtensions.x-is-jackson-optional-nullable}} + + {{/vars}} + public {{classname}}() { + {{#parent}} + {{#parcelableModel}} + super();{{/parcelableModel}} + {{/parent}} + {{#gson}} + {{#discriminator}} + {{#discriminator.isEnum}} + this.{{{discriminatorName}}} = this.getClass().getSimpleName(); + {{/discriminator.isEnum}} + {{/discriminator}} + {{/gson}} + } + {{#vendorExtensions.x-has-readonly-properties}} + {{^withXml}} + /** + * Constructor with only readonly parameters{{#generateConstructorWithAllArgs}}{{^vendorExtensions.x-java-all-args-constructor}} and all parameters{{/vendorExtensions.x-java-all-args-constructor}}{{/generateConstructorWithAllArgs}} + */ + {{#jsonb}}@JsonbCreator{{/jsonb}}{{#jackson}}@JsonCreator{{/jackson}} + public {{classname}}( + {{#readOnlyVars}} + {{#jsonb}}@JsonbProperty(value = "{{baseName}}"{{^required}}, nullable = true{{/required}}){{/jsonb}}{{#jackson}}@JsonProperty(JSON_PROPERTY_{{nameInSnakeCase}}){{/jackson}} {{{datatypeWithEnum}}} {{name}}{{^-last}}, {{/-last}} + {{/readOnlyVars}} + ) { + this(); + {{#readOnlyVars}} + this.{{name}} = {{#vendorExtensions.x-is-jackson-optional-nullable}}{{name}} == null ? JsonNullable.<{{{datatypeWithEnum}}}>undefined() : JsonNullable.of({{name}}){{/vendorExtensions.x-is-jackson-optional-nullable}}{{^vendorExtensions.x-is-jackson-optional-nullable}}{{name}}{{/vendorExtensions.x-is-jackson-optional-nullable}}; + {{/readOnlyVars}} + } + {{/withXml}} + {{/vendorExtensions.x-has-readonly-properties}} +{{#vendorExtensions.x-java-all-args-constructor}} + + /** + * Constructor with all args parameters + */ + public {{classname}}({{#vendorExtensions.x-java-all-args-constructor-vars}}{{#jsonb}}@JsonbProperty(value = "{{baseName}}"{{^required}}, nullable = true{{/required}}){{/jsonb}}{{#jackson}}@JsonProperty(JSON_PROPERTY_{{nameInSnakeCase}}){{/jackson}} {{{datatypeWithEnum}}} {{name}}{{^-last}}, {{/-last}}{{/vendorExtensions.x-java-all-args-constructor-vars}}) { +{{#parent}} + super({{#parentVars}}{{name}}{{^-last}}, {{/-last}}{{/parentVars}}); +{{/parent}} + {{#vars}} + this.{{name}} = {{#vendorExtensions.x-is-jackson-optional-nullable}}{{name}} == null ? JsonNullable.<{{{datatypeWithEnum}}}>undefined() : JsonNullable.of({{name}}){{/vendorExtensions.x-is-jackson-optional-nullable}}{{^vendorExtensions.x-is-jackson-optional-nullable}}{{name}}{{/vendorExtensions.x-is-jackson-optional-nullable}}; +{{/vars}} + } +{{/vendorExtensions.x-java-all-args-constructor}} + +{{#vars}} + {{^isReadOnly}} + public {{classname}} {{name}}({{{datatypeWithEnum}}} {{name}}) { + {{#vendorExtensions.x-is-jackson-optional-nullable}}this.{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>of({{name}});{{/vendorExtensions.x-is-jackson-optional-nullable}} + {{^vendorExtensions.x-is-jackson-optional-nullable}}this.{{name}} = {{name}};{{/vendorExtensions.x-is-jackson-optional-nullable}} + return this; + } + {{#isArray}} + + public {{classname}} add{{nameInPascalCase}}Item({{{items.datatypeWithEnum}}} {{name}}Item) { + {{#vendorExtensions.x-is-jackson-optional-nullable}} + if (this.{{name}} == null || !this.{{name}}.isPresent()) { + this.{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>of({{{defaultValue}}}{{^defaultValue}}new {{#uniqueItems}}LinkedHashSet{{/uniqueItems}}{{^uniqueItems}}ArrayList{{/uniqueItems}}<>(){{/defaultValue}}); + } + try { + this.{{name}}.get().add({{name}}Item); + } catch (java.util.NoSuchElementException e) { + // this can never happen, as we make sure above that the value is present + } + return this; + {{/vendorExtensions.x-is-jackson-optional-nullable}} + {{^vendorExtensions.x-is-jackson-optional-nullable}} + if (this.{{name}} == null) { + this.{{name}} = {{{defaultValue}}}{{^defaultValue}}new {{#uniqueItems}}LinkedHashSet{{/uniqueItems}}{{^uniqueItems}}ArrayList{{/uniqueItems}}<>(){{/defaultValue}}; + } + this.{{name}}.add({{name}}Item); + return this; + {{/vendorExtensions.x-is-jackson-optional-nullable}} + } + {{/isArray}} + {{#isMap}} + + public {{classname}} put{{nameInPascalCase}}Item(String key, {{{items.datatypeWithEnum}}} {{name}}Item) { + {{#vendorExtensions.x-is-jackson-optional-nullable}} + if (this.{{name}} == null || !this.{{name}}.isPresent()) { + this.{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>of({{{defaultValue}}}{{^defaultValue}}new HashMap<>(){{/defaultValue}}); + } + try { + this.{{name}}.get().put(key, {{name}}Item); + } catch (java.util.NoSuchElementException e) { + // this can never happen, as we make sure above that the value is present + } + return this; + {{/vendorExtensions.x-is-jackson-optional-nullable}} + {{^vendorExtensions.x-is-jackson-optional-nullable}} + {{^required}} + if (this.{{name}} == null) { + this.{{name}} = {{{defaultValue}}}{{^defaultValue}}new HashMap<>(){{/defaultValue}}; + } + {{/required}} + this.{{name}}.put(key, {{name}}Item); + return this; + {{/vendorExtensions.x-is-jackson-optional-nullable}} + } + {{/isMap}} + + {{/isReadOnly}} + /** + {{#description}} + * {{.}} + {{/description}} + {{^description}} + * Get {{name}} + {{/description}} + {{#minimum}} + * minimum: {{.}} + {{/minimum}} + {{#maximum}} + * maximum: {{.}} + {{/maximum}} + * @return {{name}} + {{#deprecated}} + * @deprecated + {{/deprecated}} + **/ +{{#deprecated}} + @Deprecated +{{/deprecated}} +{{#required}} +{{#isNullable}} + @{{javaxPackage}}.annotation.Nullable +{{/isNullable}} +{{^isNullable}} + @{{javaxPackage}}.annotation.Nonnull +{{/isNullable}} +{{/required}} +{{^required}} + @{{javaxPackage}}.annotation.Nullable +{{/required}} +{{#jsonb}} + @JsonbProperty("{{baseName}}") +{{/jsonb}} +{{#useBeanValidation}} +{{>beanValidation}} +{{/useBeanValidation}} +{{#swagger1AnnotationLibrary}} + @ApiModelProperty({{#example}}example = "{{{.}}}", {{/example}}{{#required}}required = {{required}}, {{/required}}value = "{{{description}}}") +{{/swagger1AnnotationLibrary}} +{{#swagger2AnnotationLibrary}} + @Schema({{#example}}example = "{{{.}}}", {{/example}}requiredMode = {{#required}}Schema.RequiredMode.REQUIRED{{/required}}{{^required}}Schema.RequiredMode.NOT_REQUIRED{{/required}}, description = "{{{description}}}") +{{/swagger2AnnotationLibrary}} +{{#vendorExtensions.x-extra-annotation}} + {{{vendorExtensions.x-extra-annotation}}} +{{/vendorExtensions.x-extra-annotation}} +{{#vendorExtensions.x-is-jackson-optional-nullable}} + {{!unannotated, Jackson would pick this up automatically and add it *in addition* to the _JsonNullable getter field}} + @JsonIgnore +{{/vendorExtensions.x-is-jackson-optional-nullable}} +{{^vendorExtensions.x-is-jackson-optional-nullable}}{{#jackson}}{{> jackson_annotations}}{{/jackson}}{{/vendorExtensions.x-is-jackson-optional-nullable}} + public {{{datatypeWithEnum}}} {{getter}}() { + {{#vendorExtensions.x-is-jackson-optional-nullable}} + {{#isReadOnly}}{{! A readonly attribute doesn't have setter => jackson will set null directly if explicitly returned by API, so make sure we have an empty JsonNullable}} + if ({{name}} == null) { + {{name}} = JsonNullable.<{{{datatypeWithEnum}}}>{{#defaultValue}}of({{{.}}}){{/defaultValue}}{{^defaultValue}}undefined(){{/defaultValue}}; + } + {{/isReadOnly}} + return {{name}}.orElse(null); + {{/vendorExtensions.x-is-jackson-optional-nullable}} + {{^vendorExtensions.x-is-jackson-optional-nullable}} + return {{name}}; + {{/vendorExtensions.x-is-jackson-optional-nullable}} + } + + {{#vendorExtensions.x-is-jackson-optional-nullable}} +{{> jackson_annotations}} + public JsonNullable<{{{datatypeWithEnum}}}> {{getter}}_JsonNullable() { + return {{name}}; + } + {{/vendorExtensions.x-is-jackson-optional-nullable}}{{#vendorExtensions.x-is-jackson-optional-nullable}} + @JsonProperty(JSON_PROPERTY_{{nameInSnakeCase}}) + {{#isReadOnly}}private{{/isReadOnly}}{{^isReadOnly}}public{{/isReadOnly}} void {{setter}}_JsonNullable(JsonNullable<{{{datatypeWithEnum}}}> {{name}}) { + {{! For getters/setters that have name differing from attribute name, we must include setter (albeit private) for jackson to be able to set the attribute}} + this.{{name}} = {{name}}; + } + {{/vendorExtensions.x-is-jackson-optional-nullable}} + + {{^isReadOnly}} +{{#vendorExtensions.x-setter-extra-annotation}} {{{vendorExtensions.x-setter-extra-annotation}}} +{{/vendorExtensions.x-setter-extra-annotation}}{{#jackson}}{{^vendorExtensions.x-is-jackson-optional-nullable}}{{> jackson_annotations}}{{/vendorExtensions.x-is-jackson-optional-nullable}}{{/jackson}} public void {{setter}}({{{datatypeWithEnum}}} {{name}}) { + {{#vendorExtensions.x-is-jackson-optional-nullable}} + this.{{name}} = JsonNullable.<{{{datatypeWithEnum}}}>of({{name}}); + {{/vendorExtensions.x-is-jackson-optional-nullable}} + {{^vendorExtensions.x-is-jackson-optional-nullable}} + this.{{name}} = {{name}}; + {{/vendorExtensions.x-is-jackson-optional-nullable}} + } + {{/isReadOnly}} + + {{/vars}} + {{#parent}} + {{#readWriteVars}} + {{#isOverridden}} + @Override + public {{classname}} {{name}}({{{datatypeWithEnum}}} {{name}}) { + {{#vendorExtensions.x-is-jackson-optional-nullable}} + this.{{setter}}(JsonNullable.<{{{datatypeWithEnum}}}>of({{name}})); + {{/vendorExtensions.x-is-jackson-optional-nullable}} + {{^vendorExtensions.x-is-jackson-optional-nullable}} + this.{{setter}}({{name}}); + {{/vendorExtensions.x-is-jackson-optional-nullable}} + return this; + } + + {{/isOverridden}} + {{/readWriteVars}} + {{/parent}} + @Override + public boolean equals(Object o) { + {{#useReflectionEqualsHashCode}} + return EqualsBuilder.reflectionEquals(this, o, false, null, true); + {{/useReflectionEqualsHashCode}} + {{^useReflectionEqualsHashCode}} + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + }{{#hasVars}} + {{classname}} {{classVarName}} = ({{classname}}) o; + return {{#vars}}{{#vendorExtensions.x-is-jackson-optional-nullable}}equalsNullable(this.{{name}}, {{classVarName}}.{{name}}){{/vendorExtensions.x-is-jackson-optional-nullable}}{{^vendorExtensions.x-is-jackson-optional-nullable}}{{#isByteArray}}Arrays{{/isByteArray}}{{^isByteArray}}Objects{{/isByteArray}}.equals(this.{{name}}, {{classVarName}}.{{name}}){{/vendorExtensions.x-is-jackson-optional-nullable}}{{^-last}} && + {{/-last}}{{/vars}}{{#parent}} && + super.equals(o){{/parent}};{{/hasVars}}{{^hasVars}} + return {{#parent}}super.equals(o){{/parent}}{{^parent}}true{{/parent}};{{/hasVars}} + {{/useReflectionEqualsHashCode}} + }{{#vendorExtensions.x-jackson-optional-nullable-helpers}} + + private static boolean equalsNullable(JsonNullable a, JsonNullable b) { + return a == b || (a != null && b != null && a.isPresent() && b.isPresent() && Objects.deepEquals(a.get(), b.get())); + }{{/vendorExtensions.x-jackson-optional-nullable-helpers}} + + @Override + public int hashCode() { + {{#useReflectionEqualsHashCode}} + return HashCodeBuilder.reflectionHashCode(this); + {{/useReflectionEqualsHashCode}} + {{^useReflectionEqualsHashCode}} + return Objects.hash({{#vars}}{{#vendorExtensions.x-is-jackson-optional-nullable}}hashCodeNullable({{name}}){{/vendorExtensions.x-is-jackson-optional-nullable}}{{^vendorExtensions.x-is-jackson-optional-nullable}}{{^isByteArray}}{{name}}{{/isByteArray}}{{#isByteArray}}Arrays.hashCode({{name}}){{/isByteArray}}{{/vendorExtensions.x-is-jackson-optional-nullable}}{{^-last}}, {{/-last}}{{/vars}}{{#parent}}{{#hasVars}}, {{/hasVars}}super.hashCode(){{/parent}}); + {{/useReflectionEqualsHashCode}} + }{{#vendorExtensions.x-jackson-optional-nullable-helpers}} + + private static int hashCodeNullable(JsonNullable a) { + if (a == null) { + return 1; + } + return a.isPresent() ? Arrays.deepHashCode(new Object[]{a.get()}) : 31; + }{{/vendorExtensions.x-jackson-optional-nullable-helpers}} + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class {{classname}} {\n"); + {{#parent}} + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); + {{/parent}} + {{#vars}} + sb.append(" {{name}}: ").append({{#isPassword}}"*"{{/isPassword}}{{^isPassword}}toIndentedString({{name}}){{/isPassword}}).append("\n"); + {{/vars}} + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private{{#jsonb}} static{{/jsonb}} String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +{{#supportUrlQuery}} + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + String containerSuffix = ""; + String containerPrefix = ""; + if (prefix == null) { + // style=form, explode=true, e.g. /pet?name=cat&type=manx + prefix = ""; + } else { + // deepObject style e.g. /pet?id[name]=cat&id[type]=manx + prefix = prefix + "["; + suffix = "]"; + containerSuffix = "]"; + containerPrefix = "["; + } + + StringJoiner joiner = new StringJoiner("&"); + + {{#allVars}} + // add `{{baseName}}` to the URL query string + {{#isArray}} + {{#items.isPrimitiveType}} + {{#uniqueItems}} + if ({{getter}}() != null) { + int i = 0; + for ({{{items.dataType}}} _item : {{getter}}()) { + try { + joiner.add(String.format("%s{{baseName}}%s%s=%s", prefix, suffix, + "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix), + URLEncoder.encode(String.valueOf(_item), "UTF-8").replaceAll("\\+", "%20"))); + } catch (UnsupportedEncodingException e) { + // Should never happen, UTF-8 is always supported + throw new RuntimeException(e); + } + } + i++; + } + {{/uniqueItems}} + {{^uniqueItems}} + if ({{getter}}() != null) { + for (int i = 0; i < {{getter}}().size(); i++) { + try { + joiner.add(String.format("%s{{baseName}}%s%s=%s", prefix, suffix, + "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix), + URLEncoder.encode(String.valueOf({{getter}}().get(i)), "UTF-8").replaceAll("\\+", "%20"))); + } catch (UnsupportedEncodingException e) { + // Should never happen, UTF-8 is always supported + throw new RuntimeException(e); + } + } + } + {{/uniqueItems}} + {{/items.isPrimitiveType}} + {{^items.isPrimitiveType}} + {{#items.isModel}} + {{#uniqueItems}} + if ({{getter}}() != null) { + int i = 0; + for ({{{items.dataType}}} _item : {{getter}}()) { + if (_item != null) { + joiner.add(_item.toUrlQueryString(String.format("%s{{baseName}}%s%s", prefix, suffix, + "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix)))); + } + } + i++; + } + {{/uniqueItems}} + {{^uniqueItems}} + if ({{getter}}() != null) { + for (int i = 0; i < {{getter}}().size(); i++) { + if ({{getter}}().get(i) != null) { + joiner.add({{getter}}().get(i).toUrlQueryString(String.format("%s{{baseName}}%s%s", prefix, suffix, + "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix)))); + } + } + } + {{/uniqueItems}} + {{/items.isModel}} + {{^items.isModel}} + {{#uniqueItems}} + if ({{getter}}() != null) { + int i = 0; + for ({{{items.dataType}}} _item : {{getter}}()) { + if (_item != null) { + try { + joiner.add(String.format("%s{{baseName}}%s%s=%s", prefix, suffix, + "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix), + URLEncoder.encode(String.valueOf(_item), "UTF-8").replaceAll("\\+", "%20"))); + } catch (UnsupportedEncodingException e) { + // Should never happen, UTF-8 is always supported + throw new RuntimeException(e); + } + } + i++; + } + } + {{/uniqueItems}} + {{^uniqueItems}} + if ({{getter}}() != null) { + for (int i = 0; i < {{getter}}().size(); i++) { + if ({{getter}}().get(i) != null) { + try { + joiner.add(String.format("%s{{baseName}}%s%s=%s", prefix, suffix, + "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix), + URLEncoder.encode(String.valueOf({{getter}}().get(i)), "UTF-8").replaceAll("\\+", "%20"))); + } catch (UnsupportedEncodingException e) { + // Should never happen, UTF-8 is always supported + throw new RuntimeException(e); + } + } + } + } + {{/uniqueItems}} + {{/items.isModel}} + {{/items.isPrimitiveType}} + {{/isArray}} + {{^isArray}} + {{#isMap}} + {{^items.isModel}} + if ({{getter}}() != null) { + for (String _key : {{getter}}().keySet()) { + try { + joiner.add(String.format("%s{{baseName}}%s%s=%s", prefix, suffix, + "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, _key, containerSuffix), + {{getter}}().get(_key), URLEncoder.encode(String.valueOf({{getter}}().get(_key)), "UTF-8").replaceAll("\\+", "%20"))); + } catch (UnsupportedEncodingException e) { + // Should never happen, UTF-8 is always supported + throw new RuntimeException(e); + } + } + } + {{/items.isModel}} + {{#items.isModel}} + if ({{getter}}() != null) { + for (String _key : {{getter}}().keySet()) { + if ({{getter}}().get(_key) != null) { + joiner.add({{getter}}().get(_key).toUrlQueryString(String.format("%s{{baseName}}%s%s", prefix, suffix, + "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, _key, containerSuffix)))); + } + } + } + {{/items.isModel}} + {{/isMap}} + {{^isMap}} + {{#isPrimitiveType}} + if ({{getter}}() != null) { + try { + joiner.add(String.format("%s{{{baseName}}}%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf({{{getter}}}()), "UTF-8").replaceAll("\\+", "%20"))); + } catch (UnsupportedEncodingException e) { + // Should never happen, UTF-8 is always supported + throw new RuntimeException(e); + } + } + {{/isPrimitiveType}} + {{^isPrimitiveType}} + {{#isModel}} + if ({{getter}}() != null) { + joiner.add({{getter}}().toUrlQueryString(prefix + "{{{baseName}}}" + suffix)); + } + {{/isModel}} + {{^isModel}} + if ({{getter}}() != null) { + try { + joiner.add(String.format("%s{{{baseName}}}%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf({{{getter}}}()), "UTF-8").replaceAll("\\+", "%20"))); + } catch (UnsupportedEncodingException e) { + // Should never happen, UTF-8 is always supported + throw new RuntimeException(e); + } + } + {{/isModel}} + {{/isPrimitiveType}} + {{/isMap}} + {{/isArray}} + + {{/allVars}} + return joiner.toString(); + } +{{/supportUrlQuery}} +{{#parcelableModel}} + + public void writeToParcel(Parcel out, int flags) { +{{#model}} +{{#isArray}} + out.writeList(this); +{{/isArray}} +{{^isArray}} +{{#parent}} + super.writeToParcel(out, flags); +{{/parent}} +{{#vars}} + out.writeValue({{name}}); +{{/vars}} +{{/isArray}} +{{/model}} + } + + {{classname}}(Parcel in) { +{{#isArray}} + in.readTypedList(this, {{arrayModelType}}.CREATOR); +{{/isArray}} +{{^isArray}} +{{#parent}} + super(in); +{{/parent}} +{{#vars}} +{{#isPrimitiveType}} + {{name}} = ({{{datatypeWithEnum}}})in.readValue(null); +{{/isPrimitiveType}} +{{^isPrimitiveType}} + {{name}} = ({{{datatypeWithEnum}}})in.readValue({{complexType}}.class.getClassLoader()); +{{/isPrimitiveType}} +{{/vars}} +{{/isArray}} + } + + public int describeContents() { + return 0; + } + + public static final Parcelable.Creator<{{classname}}> CREATOR = new Parcelable.Creator<{{classname}}>() { + public {{classname}} createFromParcel(Parcel in) { +{{#model}} +{{#isArray}} + {{classname}} result = new {{classname}}(); + result.addAll(in.readArrayList({{arrayModelType}}.class.getClassLoader())); + return result; +{{/isArray}} +{{^isArray}} + return new {{classname}}(in); +{{/isArray}} +{{/model}} + } + public {{classname}}[] newArray(int size) { + return new {{classname}}[size]; + } + }; +{{/parcelableModel}} +{{#generateBuilders}} + + {{>javaBuilder}} +{{/generateBuilders}} + +} diff --git a/e-rights-back-office/src/main/resources/swagger/clients/p2p-hub.json b/e-rights-back-office/src/main/resources/swagger/clients/p2p-hub.json new file mode 100644 index 0000000..33bf7fc --- /dev/null +++ b/e-rights-back-office/src/main/resources/swagger/clients/p2p-hub.json @@ -0,0 +1,1701 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "P2P Hub REST API", + "version": "v1", + "description": "Describes OpenAPI specification for P2P Hub REST APIs" + }, + "servers": [ + { + "url": "https://p2p-hub.test.app.eeas.europa.eu/eeashub", + "description": "Test environment" + } + ], + "tags": [ + { + "name": "Payrolls", + "description": "HR Request Payroll related operations" + }, + { + "name": "Business Partners", + "description": "Operations on SUMMA Business Partners" + }, + { + "name": "Allowances", + "description": "Operations for allowance related operations" + }, + { + "name": "Reimbursement Claims", + "description": "Operations for claims related operations" + } + ], + "paths": { + "/api/v1/payrolls": { + "post": { + "summary": "Submit payroll request", + "description": "Accepts payroll request details including header, details, and lines. Validates the received HR request against business rules and send it to P2P Cloud to create payroll order.", + "operationId": "submit_payroll_request", + "tags": [ + "Payrolls" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PayrollRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Request successfully processed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrderResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "eeas-connect_auth": [ + "p2phub.read:hr-request" + ] + } + ] + } + }, + "/api/v1/payrolls/{order_id}/status": { + "get": { + "summary": "Get status of an HR Request", + "description": "Query P2P for payroll status, based on the order_id returned in HR Request response. Querying of status is allowed only for orders created by the same client.", + "operationId": "get_payroll_status", + "tags": [ + "Payrolls" + ], + "parameters": [ + { + "name": "order_id", + "description": "order_id returned in HR Request response", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "example": 106057 + } + } + ], + "responses": { + "200": { + "description": "Request found successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrderStatusResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "eeas-connect_auth": [ + "p2phub.read:hr-request" + ] + } + ] + } + }, + "/api/v1/allowances": { + "post": { + "summary": "Submit allowance creation request", + "description": "Create an allowance in P2P Cloud for clients that use EU Login authentication", + "operationId": "submit_allowance_creation", + "tags": [ + "Allowances" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AllowanceRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Request successfully processed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrderResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "eu-login_auth": [ + "/ALLOWANCES/CREATE" + ] + } + ] + } + }, + "/api/v1/allowances/{order_id}/status": { + "get": { + "summary": "Get status of an allowance Request", + "description": "Query P2P for allowance status, based on the order_id returned in Allowance Request response. Querying of status is allowed only for orders created by the same client.", + "operationId": "get_allowance_status", + "tags": [ + "Allowances" + ], + "parameters": [ + { + "name": "order_id", + "description": "order_id returned in Allowance Request response", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "example": 106057 + } + } + ], + "responses": { + "200": { + "description": "Request found successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrderStatusResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "eu-login_auth": [ + "/ALLOWANCES/VIEW" + ] + } + ] + } + }, + "/api/v2/claims": { + "post": { + "summary": "Submit reimbursement claim creation request", + "description": "Create a reimbursement claim in P2P Cloud for clients that use EU Login authentication", + "operationId": "submit_claim_creation", + "tags": [ + "Reimbursement Claims" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ClaimRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Request successfully processed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrderResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "eu-login_auth": [ + "/CLAIMS/CREATE" + ] + } + ] + } + }, + "/api/v2/claims/{order_id}/status": { + "get": { + "summary": "Get status of a reimbursement claim Request", + "description": "Query P2P for reimbursement claim status, based on the order_id returned in Allowance Request response. Querying of status is allowed only for orders created by the same client.", + "operationId": "get_claim_status", + "tags": [ + "Reimbursement Claims" + ], + "parameters": [ + { + "name": "order_id", + "description": "order_id returned in reimbursement claim Request response", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "example": 106057 + } + } + ], + "responses": { + "200": { + "description": "Request found successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrderStatusResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "eu-login_auth": [ + "/CLAIMS/VIEW" + ] + } + ] + } + }, + "/api/v1/business-partners": { + "get": { + "summary": "Get Business partner by Person Id", + "description": "Fetch the Business Partner by person identifier from Financial Hub and provide the result", + "operationId": "get_business_partner_by_person_id", + "tags": [ + "Business Partners" + ], + "parameters": [ + { + "name": "person_id", + "description": "person identifier of the Business Partner", + "in": "query", + "required": true, + "schema": { + "type": "string", + "example": "465465465" + } + } + ], + "responses": { + "200": { + "description": "Returns business partner object if found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BusinessPartnerResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "eu-login_auth": [ + "/BUSINESS_PARTNERS/VIEW" + ] + } + ] + } + } + }, + "components": { + "schemas": { + "Header": { + "title": "Header", + "type": "object", + "properties": { + "run_id": { + "type": "string", + "description": "Execution Id (1,2,3 … (Sequence number))", + "example": "1" + }, + "batch_id": { + "type": "string", + "description": "Batch Id --> grouping id of payment (1,2,3 … (Sequence number))", + "example": "1" + }, + "request_id": { + "type": "string", + "description": "Request ID --> unique id of the payment request (1,2,3 … (Sequence number))", + "example": "1" + }, + "pay_method": { + "type": "string", + "enum": [ + "A", + "C", + "D", + "P" + ], + "description": "Must be either 'A' (Cheque), 'C' (Cash), 'D' (Local) or 'P' (ASAP - Credit Transfer)", + "example": "P" + }, + "delegation_code": { + "type": "string", + "maxLength": 15, + "description": "Delegation code", + "example": "DELMOZM" + }, + "request_sender_oia": { + "type": "string", + "maxLength": 10, + "description": "Initiating Agent", + "example": "IRPIRARD" + }, + "request_sender_ova": { + "type": "string", + "maxLength": 10, + "description": "Verifying Agent", + "example": "IWENDROL" + } + }, + "required": [ + "run_id", + "batch_id", + "request_id", + "pay_method", + "delegation_code", + "request_sender_oia" + ] + }, + "Detail": { + "title": "Detail", + "type": "object", + "properties": { + "request_detail_id": { + "type": "string", + "description": "Line ID. 1 for first line, 2 for second. Etc", + "example": "1" + }, + "request_detail_title": { + "type": "string", + "description": "Description of the payment detail ( today in ABAC Posting Criteria + LNAME, FNAME)", + "maxLength": 50, + "example": "XXX001 JOHN DOE SALARY JULY 2025" + }, + "bp_id": { + "type": "string", + "description": "Business Partner ID", + "maxLength": 10, + "example": "1050424" + }, + "bank_account": { + "type": "string", + "description": "Bank Account ID (Business Partner + Bank Identification)", + "maxLength": 50, + "example": "1066928-0001" + }, + "quantity": { + "type": "string", + "description": "Quantity", + "example": "1" + }, + "net_amount_lcy": { + "type": "string", + "format": "decimal", + "description": "Net Amount in local currency", + "example": "4393.43" + }, + "currency_code": { + "type": "string", + "maxLength": 3, + "description": "Currency ID. If left empty, currency used of the selected product based on 'Business Partner ID'", + "example": "MZN" + }, + "budget_line": { + "type": "string", + "maxLength": 60, + "description": "Budget Line to use", + "example": "E.3000.OFFSAL" + }, + "email_notif": { + "type": "string", + "format": "email", + "maxLength": 100, + "description": "E-mail address where notification can be sent", + "example": "john.doe@ext.eeas.europa.eu" + } + }, + "required": [ + "request_detail_id", + "request_detail_title", + "bp_id", + "bank_account", + "quantity", + "net_amount_lcy", + "currency_code", + "email_notif" + ] + }, + "PayrollHeader": { + "title": "PayrollHeader", + "allOf": [ + { + "$ref": "#/components/schemas/Header" + }, + { + "type": "object", + "properties": { + "client_id": { + "type": "string", + "enum": [ + "1" + ], + "description": "Identification of the client application. Must be 1 (=Payrolls) or 2 (=Allowances) or 3 (=Claims)", + "example": "1" + }, + "exchange_rate": { + "type": "number", + "format": "decimal", + "description": "Exchange rate used for converting the amount EUR vs LCY", + "example": 1.155 + }, + "request_title": { + "type": "string", + "maxLength": 50, + "description": "Description of the payment request", + "example": "JANUARY 2026 - DELCMRY" + } + }, + "required": [ + "exchange_rate", + "request_title", + "client_id" + ] + } + ] + }, + "Line": { + "title": "Line", + "type": "object", + "properties": { + "dc_flag": { + "type": "string", + "enum": [ + "D", + "C" + ], + "description": "Debit/Credit Flag", + "example": "D" + }, + "regul_line_title": { + "type": "string", + "maxLength": 300, + "description": "Title/Description of the regul line", + "example": "COST" + }, + "gl_account": { + "type": "string", + "maxLength": 50, + "description": "GL Account", + "example": "45820000" + }, + "budget_line_detail": { + "type": "string", + "maxLength": 200, + "description": "Budget line to use (If dc_flag='C' then gl_account, else budget_line)", + "example": "E.3001.LOCAGT.01" + }, + "amount_lcy": { + "type": "number", + "format": "decimal", + "description": "Amount booked on this line", + "example": 6283.16 + }, + "currency_code": { + "type": "string", + "maxLength": 3, + "description": "Currency of the amount", + "example": "MZN" + } + }, + "required": [ + "dc_flag", + "regul_line_title", + "gl_account", + "budget_line_detail", + "amount_lcy", + "currency_code" + ] + }, + "PayrollDetail": { + "title": "PayrollDetail", + "allOf": [ + { + "$ref": "#/components/schemas/Detail" + }, + { + "type": "object", + "properties": { + "net_amount_eur": { + "type": "string", + "format": "decimal", + "description": "Net Amount in EUR currency", + "example": "4393.43" + }, + "lines": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Line" + } + } + }, + "required": [ + "net_amount_eur", + "budget_line", + "lines" + ] + } + ] + }, + "PayrollRequest": { + "title": "PayrollRequest", + "type": "object", + "description": "Payroll Request", + "properties": { + "header": { + "$ref": "#/components/schemas/PayrollHeader" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PayrollDetail" + } + } + }, + "required": [ + "header", + "details" + ] + }, + "OrderResponse": { + "description": "Order Response", + "title": "OrderResponse", + "type": "object", + "properties": { + "order_id": { + "type": "integer", + "example": 12345 + }, + "message": { + "type": "string", + "example": "Order created successfully." + } + }, + "required": [ + "order_id", + "message" + ] + }, + "OrderErrorResponse": { + "description": "Order Error Response", + "title": "OrderErrorResponse", + "type": "object", + "properties": { + "message": { + "type": "string", + "example": "P2P payroll failed" + }, + "error_code": { + "type": "string", + "example": "P2S-006" + }, + "error_text": { + "type": "string", + "example": "The transaction cannot be processed because the sum of line item details does not match the total payment amount." + } + }, + "required": [ + "message", + "error_code", + "error_text" + ] + }, + "OrderStatusResponse": { + "description": "Order status response", + "title": "OrderStatusResponse", + "type": "object", + "properties": { + "order_id": { + "type": "integer", + "example": 12345 + }, + "order_status": { + "type": "string", + "description": "Possible values are:\n - ERR: Payment Cancelled or Error\n - INIT: Payment Pending Approval\n - VERIF: Payment Approved\n - EXEC: Payment Under Execution\n - SUCCESS: Payment Executed\n - REJ: Payment Rejected\n", + "example": "SUCCESS" + }, + "last_modification_date": { + "type": "string", + "format": "datetime", + "example": "2025-09-18T15:49:33.893" + }, + "order_comment": { + "type": "string", + "description": "holds the refusal reason in case REJECTED or creation comment if ACCEPTED", + "example": "Create Payroll in P2P (OIA)" + }, + "payment_reference": { + "type": "string", + "description": "holds the identifier in SUMMA of the payment reference\n***Only present when payment has been created in SUMMA**\n", + "example": "2552000053" + } + }, + "required": [ + "order_id", + "order_status", + "last_modification_date", + "order_comment" + ] + }, + "AllowanceHeader": { + "title": "AllowanceHeader", + "allOf": [ + { + "$ref": "#/components/schemas/Header" + }, + { + "type": "object", + "properties": { + "client_id": { + "type": "string", + "enum": [ + "2" + ], + "description": "Identification of the client application. Must be 1 (=Payrolls) or 2 (=Allowances) or 3 (=Claims)", + "example": "2" + }, + "request_title": { + "type": "string", + "maxLength": 25, + "description": "Description of the payment request", + "example": "JANUARY 2026 - DELCMRY" + }, + "beneficiary_del_cd": { + "type": "string", + "maxLength": 4, + "description": "Delegation code / Delegation for which we create the allowance", + "example": "AFGK" + } + }, + "required": [ + "request_title", + "client_id", + "beneficiary_del_cd" + ] + } + ] + }, + "AllowanceDetail": { + "title": "AllowanceDetail", + "allOf": [ + { + "$ref": "#/components/schemas/Detail" + }, + { + "type": "object", + "properties": { + "gl_account": { + "type": "string", + "maxLength": 50, + "description": "GL Account", + "example": "34315520" + }, + "fund_source_det": { + "type": "string", + "maxLength": 15, + "description": "Fund Source code", + "example": "VOBU" + }, + "budget_period": { + "type": "integer", + "description": "Origin of the credits", + "example": 2025 + } + }, + "required": [ + "budget_line", + "gl_account", + "fund_source_det", + "budget_period" + ] + } + ] + }, + "AllowanceRequest": { + "title": "AllowanceRequest", + "type": "object", + "description": "Allowance Request", + "properties": { + "header": { + "$ref": "#/components/schemas/AllowanceHeader" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AllowanceDetail" + } + } + }, + "required": [ + "header", + "details" + ] + }, + "ClaimsHeader": { + "title": "ClaimsHeader", + "allOf": [ + { + "$ref": "#/components/schemas/Header" + }, + { + "type": "object", + "properties": { + "client_id": { + "type": "string", + "enum": [ + "3" + ], + "description": "Identification of the client application. Must be 1 (=Payrolls) or 2 (=Allowances) or 3 (=Claims)", + "example": "3" + }, + "request_title": { + "type": "string", + "maxLength": 25, + "description": "Description of the payment request", + "example": "JANUARY 2026 - DELCMRY" + } + }, + "required": [ + "request_title", + "client_id" + ] + } + ] + }, + "ClaimsDetail": { + "title": "ClaimsDetail", + "allOf": [ + { + "$ref": "#/components/schemas/Detail" + }, + { + "type": "object", + "properties": { + "gl_account": { + "type": "string", + "maxLength": 50, + "description": "GL Account", + "example": "34315520" + } + }, + "required": [ + "budget_line", + "gl_account" + ] + } + ] + }, + "ClaimRequest": { + "title": "ClaimRequest", + "type": "object", + "description": "Claim Request", + "properties": { + "header": { + "$ref": "#/components/schemas/ClaimsHeader" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ClaimsDetail" + } + } + }, + "required": [ + "header", + "details" + ] + }, + "Supplier": { + "title": "Supplier", + "type": "object", + "properties": { + "supplier": { + "type": "string", + "maxLength": 10, + "description": "Supplier identifier", + "example": "1065611" + }, + "account_group": { + "type": "string", + "maxLength": 4, + "description": "Account group", + "example": "Z002" + }, + "is_natural_person": { + "type": "boolean", + "description": "Is natural person", + "example": true + }, + "group_key": { + "type": "string", + "maxLength": 10, + "description": "Group key", + "example": "1065611" + }, + "payment_methods": { + "type": "array", + "items": { + "type": "string", + "maxLength": 1, + "pattern": "^[PSACDG]$", + "description": "Payment method. Possible values: P, S, A, C, D, G", + "example": "C" + } + } + } + }, + "BusinessPartnerBankAccount": { + "title": "Business Partner Bank Account", + "type": "object", + "properties": { + "business_partner": { + "type": "string", + "maxLength": 10, + "description": "Business partner identifier", + "example": "1065611" + }, + "bank_identification": { + "type": "string", + "maxLength": 4, + "description": "Bank identification number", + "example": "0001" + }, + "bank_country_key": { + "type": "string", + "maxLength": 3, + "description": "Bank country code", + "example": "FR" + }, + "bank_name": { + "type": "string", + "maxLength": 70, + "description": "Name of the bank", + "example": "SOCIETE GENERALE" + }, + "bank_number": { + "type": "string", + "maxLength": 15, + "description": "Bank number", + "example": "SP0000001U48" + }, + "swift_code": { + "type": "string", + "maxLength": 11, + "description": "SWIFT/BIC code", + "example": "SOGEFRPPLDE" + }, + "bank_control_key": { + "type": "string", + "maxLength": 2, + "description": "Bank control key", + "example": "33" + }, + "bank_account_holder_name": { + "type": "string", + "maxLength": 60, + "description": "Name of the account holder", + "example": "BUREAU VERITAS CERTIFICATION FRANCE" + }, + "bank_account_name": { + "type": "string", + "maxLength": 40, + "description": "Name of the bank account", + "example": "BUREAU VERITAS CERTIFICATION FRANCE" + }, + "validity_start_date": { + "type": "string", + "format": "date", + "description": "Start date of validity", + "example": "2021-11-17T00:00:00Z[GMT]" + }, + "validity_end_date": { + "type": "string", + "format": "date", + "description": "End date of validity", + "example": "9999-12-31T23:59:59Z[GMT]" + }, + "iban": { + "type": "string", + "maxLength": 34, + "description": "International Bank Account Number", + "example": "FR7630003041700002571225233" + }, + "iban_validity_start_date": { + "type": "string", + "format": "date", + "description": "IBAN validity start date", + "example": "2021-11-17T00:00:00" + }, + "bank_account": { + "type": "string", + "maxLength": 18, + "description": "Bank account number", + "example": "00025712252" + }, + "bank_account_reference_text": { + "type": "string", + "maxLength": 20, + "description": "Reference text for bank account" + }, + "collection_auth_ind": { + "type": "boolean", + "description": "Collection authorization indicator", + "example": false + }, + "city_name": { + "type": "string", + "maxLength": 35, + "description": "City name", + "example": "PARIS" + }, + "authorization_group": { + "type": "string", + "maxLength": 4, + "description": "Authorization group", + "example": "REGU" + }, + "address_number": { + "type": "string", + "maxLength": 10, + "description": "Address number", + "example": "1234" + }, + "business_partner_bank_full_name": { + "type": "string", + "maxLength": 80, + "description": "Full name of the business partner bank", + "example": "SOCIETE GENERALE" + }, + "business_partner_bank_street_name": { + "type": "string", + "maxLength": 60, + "description": "Street name of the business partner bank", + "example": "RUE DE LA LIBERTE" + }, + "business_partner_bank_house_nb": { + "type": "string", + "maxLength": 10, + "description": "House number of the business partner bank", + "example": "1234" + }, + "business_partner_bank_postal_code": { + "type": "string", + "maxLength": 10, + "description": "Postal code of the business partner bank", + "example": "75001" + }, + "business_partner_bank_city": { + "type": "string", + "maxLength": 40, + "description": "City of the business partner bank", + "example": "PARIS" + }, + "business_partner_bank_country": { + "type": "string", + "maxLength": 3, + "description": "Country of the business partner bank", + "example": "FRA" + } + } + }, + "BusinessPartnerIdentification": { + "title": "Business Partner Identification", + "type": "object", + "properties": { + "business_partner": { + "type": "string", + "maxLength": 10, + "description": "Business partner identifier", + "example": "1065611" + }, + "identification_type": { + "type": "string", + "maxLength": 6, + "description": "Identification type", + "example": "Z003" + }, + "identification_number": { + "type": "string", + "maxLength": 60, + "description": "Id number", + "example": "465465465" + }, + "idnbr_issuing_institute": { + "type": "string", + "maxLength": 40, + "description": "Responsible Institution for ID Number" + }, + "identification_entry_date": { + "type": "string", + "format": "date", + "description": "Date of Entry for ID Number" + }, + "country": { + "type": "string", + "maxLength": 3, + "description": "Country/Region in Which ID Number is Valid or Was Assigned" + }, + "region": { + "type": "string", + "maxLength": 3, + "description": "Region (State, Province, County)" + }, + "validity_start_date": { + "type": "string", + "format": "date", + "description": "Validity Start for ID Number" + }, + "validity_end_date": { + "type": "string", + "format": "date", + "description": "Validity End for ID Number" + }, + "authorization_group": { + "type": "string", + "maxLength": 4, + "description": "Authorization Group" + } + } + }, + "BusinessPartnerResponse": { + "title": "Business Partner", + "type": "object", + "properties": { + "business_partner": { + "type": "string", + "maxLength": 10, + "description": "Business partner identifier", + "example": "1065611" + }, + "customer": { + "type": "string", + "maxLength": 10, + "description": "Customer identifier", + "example": "1065611" + }, + "supplier": { + "type": "object", + "description": "Supplier identifier", + "$ref": "#/components/schemas/Supplier" + }, + "academic_title": { + "type": "string", + "maxLength": 4, + "description": "Academic title of the business partner" + }, + "authorization_group": { + "type": "string", + "maxLength": 4, + "description": "Authorization group", + "example": "REGU" + }, + "business_partner_category": { + "type": "string", + "maxLength": 1, + "description": "Category of business partner", + "example": "2" + }, + "business_partner_full_name": { + "type": "string", + "maxLength": 81, + "description": "Full name of the business partner", + "example": "BUREAU VERITAS CERTIFICATION FRANCE SAS" + }, + "business_partner_grouping": { + "type": "string", + "maxLength": 4, + "description": "Business partner grouping code", + "example": "Z003" + }, + "business_partner_name": { + "type": "string", + "maxLength": 81, + "description": "Business partner name", + "example": "BUREAU VERITAS CERTIFICATION FRANCE SAS" + }, + "business_partner_uuid": { + "type": "string", + "format": "uuid", + "description": "Unique identifier for business partner", + "example": "005056a9-b82b-1edf-bd8d-bcc24d908b23" + }, + "correspondence_language": { + "type": "string", + "maxLength": 2, + "description": "Language for correspondence", + "example": "EN" + }, + "created_by_user": { + "type": "string", + "maxLength": 12, + "description": "User who created the record", + "example": "SAP_WFRT" + }, + "creation_date": { + "type": "string", + "format": "date-time", + "description": "Date when record was created", + "example": "2025-02-26T00:00:00" + }, + "creation_time": { + "type": "string", + "description": "Time when record was created (ISO 8601 duration format)", + "example": "19:18:44" + }, + "first_name": { + "type": "string", + "maxLength": 40, + "description": "First name (for individual business partners)", + "example": "" + }, + "form_of_address": { + "type": "string", + "maxLength": 4, + "description": "Form of address" + }, + "industry": { + "type": "string", + "maxLength": 10, + "description": "Industry classification" + }, + "international_location_number1": { + "type": "string", + "maxLength": 7, + "description": "International location number 1", + "example": "0000000" + }, + "international_location_number2": { + "type": "string", + "maxLength": 5, + "description": "International location number 2", + "example": "00000" + }, + "is_female": { + "type": "boolean", + "description": "Indicates if business partner is female", + "example": false + }, + "is_male": { + "type": "boolean", + "description": "Indicates if business partner is male", + "example": false + }, + "is_natural_person": { + "type": "string", + "maxLength": 1, + "description": "Indicates if business partner is a natural person" + }, + "is_sex_unknown": { + "type": "boolean", + "description": "Indicates if sex is unknown", + "example": false + }, + "gender_code_name": { + "type": "string", + "maxLength": 1, + "description": "Gender code name" + }, + "language": { + "type": "string", + "maxLength": 2, + "description": "Language preference" + }, + "last_change_date": { + "type": "string", + "format": "date-time", + "description": "Date of last change", + "example": "2025-02-27T00:00:00" + }, + "last_change_time": { + "type": "string", + "description": "Time of last change (ISO 8601 duration format)", + "example": "08:45:42" + }, + "last_changed_by_user": { + "type": "string", + "maxLength": 12, + "description": "User who last changed the record", + "example": "SAP_WFRT" + }, + "last_name": { + "type": "string", + "maxLength": 40, + "description": "Last name (for individual business partners)" + }, + "legal_form": { + "type": "string", + "maxLength": 2, + "description": "Legal form of the organization", + "example": "" + }, + "organization_bp_name1": { + "type": "string", + "maxLength": 40, + "description": "Organization name line 1", + "example": "BUREAU VERITAS CERTIFICATION FRANCE" + }, + "organization_bp_name2": { + "type": "string", + "maxLength": 40, + "description": "Organization name line 2", + "example": "SAS" + }, + "organization_bp_name3": { + "type": "string", + "maxLength": 40, + "description": "Organization name line 3" + }, + "organization_bp_name4": { + "type": "string", + "maxLength": 40, + "description": "Organization name line 4" + }, + "organization_foundation_date": { + "type": "string", + "format": "date", + "description": "Date when organization was founded", + "example": "1995-02-06T00:00:00" + }, + "organization_liquidation_date": { + "type": "string", + "format": "date", + "description": "Date when organization was liquidated" + }, + "search_term1": { + "type": "string", + "maxLength": 20, + "description": "Search term 1", + "example": "BVQI FRANC" + }, + "search_term2": { + "type": "string", + "maxLength": 20, + "description": "Search term 2" + }, + "additional_last_name": { + "type": "string", + "description": "Additional last name" + }, + "birth_date": { + "type": "string", + "format": "date", + "description": "Birth date", + "example": "1980-05-24T00:00:00Z" + }, + "business_partner_birthplace_name": { + "type": "string", + "maxLength": 40, + "description": "Birthplace name" + }, + "business_partner_is_blocked": { + "type": "boolean", + "description": "Indicates if business partner is blocked", + "example": false + }, + "business_partner_type": { + "type": "string", + "maxLength": 4, + "description": "Type of business partner", + "example": "Z003" + }, + "group_business_partner_name1": { + "type": "string", + "maxLength": 40, + "description": "Group business partner name 1" + }, + "group_business_partner_name2": { + "type": "string", + "maxLength": 40, + "description": "Group business partner name 2" + }, + "independent_address_id": { + "type": "string", + "maxLength": 10, + "description": "Independent address identifier" + }, + "international_location_number3": { + "type": "string", + "maxLength": 1, + "description": "International location number 3", + "example": "0" + }, + "middle_name": { + "type": "string", + "maxLength": 40, + "description": "Middle name" + }, + "name_country": { + "type": "string", + "maxLength": 3, + "description": "Country for name formatting" + }, + "name_format": { + "type": "string", + "maxLength": 2, + "description": "Name format" + }, + "person_full_name": { + "type": "string", + "maxLength": 80, + "description": "Full name for person" + }, + "person_number": { + "type": "string", + "maxLength": 10, + "description": "Person number" + }, + "is_marked_for_archiving": { + "type": "boolean", + "description": "Indicates if marked for archiving", + "example": false + }, + "business_partner_id_by_ext_system": { + "type": "string", + "description": "Business partner ID from external system, also known as LEF id", + "minLength": 10, + "maxLength": 10, + "pattern": "^[0-9]{10}$", + "example": "6000278392" + }, + "trading_partner": { + "type": "string", + "maxLength": 6, + "description": "Trading partner identifier" + }, + "target_group": { + "type": "string", + "maxLength": 4, + "description": "Target Group" + }, + "bank_accounts": { + "description": "Bank accounts of the Business Partner", + "type": "array", + "items": { + "$ref": "#/components/schemas/BusinessPartnerBankAccount" + } + }, + "identifications": { + "description": "Business Partner identifications", + "type": "array", + "items": { + "$ref": "#/components/schemas/BusinessPartnerIdentification" + } + }, + "exists_in_p2p": { + "description": "Indicates whether the business partner is present in p2p", + "type": "string" + }, + "linked_to_cost_centre": { + "description": "Cost centre to which the business partner is linked to", + "type": "string" + } + } + } + }, + "securitySchemes": { + "eeas-connect_auth": { + "type": "oauth2", + "flows": { + "clientCredentials": { + "tokenUrl": "https://connect.acc.eeas.europa.eu/realms/eeas/protocol/openid-connect/token", + "scopes": { + "p2phub.read:hr-request": "Read HR Request" + } + } + } + }, + "eu-login_auth": { + "type": "oauth2", + "flows": { + "clientCredentials": { + "tokenUrl": "https://ecas.acceptance.ec.europa.eu/cas/oauth2", + "scopes": { + "/BUSINESS_PARTNERS/VIEW": "Read Business Partners", + "/ALLOWANCES/CREATE": "Create allowances", + "/ALLOWANCES/VIEW": "Get allowances status", + "/CLAIMS/CREATE": "Create reimbursement claims", + "/CLAIMS/VIEW": "Get reimbursement claims" + } + } + } + } + }, + "responses": { + "400": { + "description": "Bad Request", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/OrderErrorResponse" + }, + "examples": { + "invalid_parameters": { + "summary": "Invalid Parameters", + "value": { + "message": "P2P-Hub failure", + "error_code": "PE-0", + "error_text": "Bad request. Missing mandatory parameter 'xxx'" + } + }, + "validation_failure": { + "summary": "Invalid Parameters", + "value": { + "message": "P2P-Hub failure", + "error_code": "P2S-006", + "error_text": "The transaction cannot be processed because the sum of line item details does not match the total payment amount." + } + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/OrderErrorResponse" + }, + "examples": { + "expired-token": { + "summary": "Expired Token", + "value": { + "message": "P2P-Hub failure", + "error-code": "PE-0", + "error-text": "JWT token has expired" + } + }, + "invalid-token": { + "summary": "Invalid Authentication Token", + "value": { + "message": "P2P-Hub failure", + "error-code": "PE-0", + "error-text": "Invalid authentication credentials" + } + } + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/OrderErrorResponse" + }, + "examples": { + "insufficient-permissions": { + "summary": "Insufficient Permissions", + "value": { + "message": "P2P-Hub failure", + "error-code": "PE-0", + "error-text": "User does not have permission to read order status" + } + } + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/OrderErrorResponse" + }, + "examples": { + "not-found": { + "summary": "Object Not Found", + "value": { + "message": "P2P-Hub failure", + "error-code": "PE-0", + "error-text": "Object with the given attributes was not found" + } + } + } + } + } + }, + "422": { + "description": "Not Found", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/OrderErrorResponse" + }, + "examples": { + "not-found": { + "summary": "Object Not Found", + "value": { + "message": "P2P-Hub failure", + "error-code": "PE-0", + "error-text": "Object with the given attributes was not found" + } + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/OrderErrorResponse" + }, + "examples": { + "unexpected-error": { + "summary": "Unexpected server error", + "value": { + "message": "P2P-Hub failure", + "error-code": "PE-0", + "error-text": "An unexpected error occurred while processing the request" + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/e-rights-back-office/src/main/resources/swagger/internal/e-rights-back-office-abac.yml b/e-rights-back-office/src/main/resources/swagger/internal/e-rights-back-office-abac.yml new file mode 100644 index 0000000..70b16c7 --- /dev/null +++ b/e-rights-back-office/src/main/resources/swagger/internal/e-rights-back-office-abac.yml @@ -0,0 +1,738 @@ +swagger: '2.0' + +info: + description: EEAS e-RIGHTS Back Office + version: 1.0.0 + title: EEAS e-RIGHTS Back Office + termsOfService: 'http://swagger.io/terms/' + contact: + email: Fernando.TAPIA@ext.eeas.europa.eu + +host: intragate.test.ec.europa.eu + +tags: + - name: e-RIGHTS Back Office + description: e-RIGHTS Back Office + +schemes: + - https + +basePath: /internal/api + +paths: + /abac/workflow/{requestId}: + put: + tags: + - e-RIGHTS Back Office + description: updateWorkFlow + operationId: updateWorkFlow + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + responses: + '201': + description: Successful operation + schema: + type: string + '401': + description: Authentication failure + '403': + description: Not authorized + + /abac/workflow/posting-allowance/{postingAllowanceId}: + put: + tags: + - e-RIGHTS Back Office + description: updateAccommodationPaymentWorkFlow + operationId: updateAccommodationPaymentWorkFlow + parameters: + - in: path + name: postingAllowanceId + required: true + type: integer + format: int64 + responses: + '201': + description: Successful operation + schema: + type: string + '401': + description: Authentication failure + '403': + description: Not authorized + + /abac/paymentReference/{requestId}: + put: + tags: + - e-RIGHTS Back Office + description: updatePaymentReference + operationId: updatePaymentReference + consumes: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + - in: body + name: RequestAbacPaymentReference + required: true + schema: + $ref: '#/definitions/RequestAbacPaymentReference' + responses: + '201': + description: Successful operation + schema: + type: string + '401': + description: Authentication failure + '403': + description: Not authorized + + /abac/items/{requestId}: + get: + tags: + - e-RIGHTS Back Office + description: getAbacItems + operationId: getAbacItems + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + responses: + '201': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/AbacItem' + '401': + description: Authentication failure + '403': + description: Not authorized + + /abac/validatePaymentOrder/{abacId}: + get: + tags: + - e-RIGHTS Back Office + description: validatePaymentOrder + operationId: validatePaymentOrder + parameters: + - in: path + name: abacId + required: true + type: string + responses: + '200': + description: Successful operation + schema: + type: boolean + '401': + description: Authentication failure + '403': + description: Not authorized + + /abac/communication/{requestId}: + get: + tags: + - e-RIGHTS Back Office + description: getAbacCommunicationItems + operationId: getAbacCommunicationItems + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + responses: + '201': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/AbacCommunication' + '401': + description: Authentication failure + '403': + description: Not authorized + + /abac-info/budget-lines: + get: + tags: + - e-RIGHTS Back Office + operationId: findBudgetLineInfos + produces: + - application/json + parameters: + - in: query + name: budgetPosition + required: true + type: string + - in: query + name: delegation + required: false + type: string + - in: query + name: exerciseId + required: false + type: integer + format: int32 + description: Exercise ID, example '2021' + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/BudgetLineInfo' + '400': + description: Malformed syntax or a bad query + '401': + description: Not authorized + '403': + description: Not authorized + '500': + description: Internal server error + + /abac-info/delegation-codes: + get: + tags: + - e-RIGHTS Back Office + operationId: findDelegationCodes + produces: + - application/json + parameters: + - in: query + name: exerciseId + required: true + type: integer + format: int32 + description: Org Exercise ID, example '2021' + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/DelegationCodes' + '400': + description: Malformed syntax or a bad query + '401': + description: Not authorized + '403': + description: Not authorized + '500': + description: Internal server error + + /abac-info/person/{personId}: + get: + tags: + - e-RIGHTS Back Office + operationId: findAbacInfoPersonById + produces: + - application/json + parameters: + - in: path + name: personId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/PersonAbacInfo' + '400': + description: Malformed syntax or a bad query + '401': + description: Not authorized + '403': + description: Not authorized + '404': + description: Person ID not found in Abac Data table + '500': + description: Internal server error + /abac-info/budget-line-subposts: + get: + tags: + - e-RIGHTS Back Office + operationId: findBudgetLineSubposts + produces: + - application/json + parameters: + - in: query + name: budgetPositionBudgdel + required: false + type: string + - in: query + name: budgetPositionErights + required: false + type: string + - in: query + name: requestType + required: false + type: string + - in: query + name: lstCd + required: false + type: string + - in: query + name: subpostType + required: false + type: string + - in: query + name: personnelTypeId + required: false + type: integer + format: int32 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/BudgetLineSubpost' + '400': + description: Malformed syntax or a bad query + '401': + description: Not authorized + '403': + description: Not authorized + '500': + description: Internal server error + /abac-info/budget-line-erights: + get: + tags: + - e-RIGHTS Back Office + operationId: findBudgetLineForErights + produces: + - application/json + parameters: + - in: query + name: movementContext + required: false + type: string + description: Budged Line Movement Conext of the Movement File + responses: + '200': + description: Successful operation + schema: + type: array + items: + type: string + '400': + description: Malformed syntax or a bad query + '401': + description: Not authorized + '403': + description: Not authorized + '500': + description: Internal server error + + /abac-info/request-subposts: + get: + tags: + - e-RIGHTS Back Office + operationId: findRequestSubposts + produces: + - application/json + parameters: + - in: query + name: requestId + required: true + type: integer + format: int64 + - in: query + name: requestPaymentAbacInfoId + required: true + type: integer + format: int64 + + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/RequestSubpost' + '400': + description: Malformed syntax or a bad query + '401': + description: Not authorized + '403': + description: Not authorized + '500': + description: Internal server error + + + /abac-info/request-payment-abac-info/{requestId}: + get: + tags: + - e-RIGHTS Back Office + operationId: findRequestPersonAbacInfoByRequestId + produces: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/RequestPaymentAbacInfo' + '400': + description: Malformed syntax or a bad query + '401': + description: Not authorized + '403': + description: Not authorized + '404': + description: Person ID not found in Abac Data table + '500': + description: Internal server error + + /abac-info/create-abac-entities-for-request: + post: + tags: + - e-RIGHTS Back Office + description: createAbacEntitiesForRequest + operationId: createAbacEntitiesForRequest + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: RequestPaymentAbacInfo + required: true + schema: + $ref: '#/definitions/RequestPaymentAbacInfo' + responses: + '201': + description: Successful operation + schema: + type: integer + format: int64 + '401': + description: Authentication failure + '403': + description: Not authorized + + + +definitions: + + + AbacInvoice: + type: object + x-nt-super-class: + - TransferObject + properties: + beneficiaryName: + type: string + currencyIso3Code: + type: string + grossAmountInCurrency: + type: number + format: double + + AbacPayment: + type: object + x-nt-super-class: + - TransferObject + properties: + beneficiaryName: + type: string + currencyIso3Code: + type: string + grossAmountInCurrency: + type: number + format: double + + BudgetLineInfo: + type: object + x-nt-super-class: + - TransferObject + properties: + budgetLineInfoId: + type: string + parentLocalKey: + type: string + budgetLine: + type: string + mainAccount: + type: string + budgetPosition: + type: string + fundSource: + type: string + delegation: + type: string + lvlCode: + type: string + lvlName: + type: string + commitmentId: + type: string + exerciseId: + type: integer + format: int32 + fundSourceGroup: + type: string + # ------------ Monetary fields: + paymentCreditsAvailableEur: + type: number + format: double + ral: + type: number + format: double + totalCommitmentsEur: + type: number + format: double + commitmentHeaderId: + type: string + syncCommitmentsDate: + type: string + + DelegationCodes: + type: object + x-nt-super-class: + - TransferObject + properties: + orgId: + type: integer + format: int64 + description: Identifier + orgCode: + type: string + applicationView: + type: string + name: + type: string + orgExerciseId: + type: integer + format: int32 + + + PersonAbacInfo: + type: object + x-nt-super-class: + - TransferObject + properties: + personId: + type: integer + format: int64 + description: Identifier + criteriaCode: + type: string + + BudgetLineSubpost: + type: object + x-nt-super-class: + - TransferObject + properties: + budgetLinesSubpostsMappingId: + type: integer + description: Identifier + budgetLines: + type: string + budgetPositionBudgdel: + type: string + budgetPositionErights: + type: string + fundSource: + type: string + requestType: + type: string + statutoryLink: + type: string + subpostCode: + type: string + subpostDescription: + type: string + personnelTypeId: + type: integer + format: int32 + lstCd: + type: string + subpostType: + type: string + commitmentLvl4: + type: string + budgetPeriods: + type: string + earmarkedFund: + type: string + defaultEarmarkedFund: + type: boolean + summaFundSourceId: + type: integer + format: int32 + + + + RequestSubpost: + type: object + x-nt-super-class: + - TransferObject + properties: + requestSubpostsId: + type: integer + format: int64 + description: Identifier + budgetLinesSubpostsMappingId: + type: integer + format: int64 + subpostCode: + type: string + subpostDescription: + type: string + subpostType: + type: string + amount: + type: string + x-nt-type: Money + requestId: + type: integer + format: int64 + commitmentLvl4: + type: string + earmarkedFund: + type: string + summaFundSourceId: + type: integer + format: int32 + + RequestPaymentAbacInfo: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + requestId: + type: integer + format: int64 + parentLocalKey: + type: string + budgetLine: + type: string + mainAccount: + type: string + budgetPosition: + type: string + fundSource: + type: string + delegation: + type: string + lvlCode: + type: string + lvlName: + type: string + commitmentId: + type: string + exerciseId: + type: integer + format: int32 + fundSourceGroup: + type: string + requestSubpostList: + type: array + items: + $ref: '#/definitions/RequestSubpost' + paymentCreditsAvailableEur: + type: number + format: double + ral: + type: number + format: double + totalCommitmentsEur: + type: number + format: double + workflow: + type: string + localDelegationCode: + type: string + analyticalCode: + type: string + agentName: + type: string + commitmentHeaderId: + type: string + responsibleOrganization: + type: string + responsibleOrganizationType: + type: string + + AbacItem: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + itemType: + type: string + abacCommunicationId: + type: string + itemState: + type: string + requestId: + type: integer + format: int64 + messages: + type: string + abacId: + type: string + createdAt: + type: string + updatedAt: + type: string + + AbacCommunication: + type: object + x-nt-super-class: + - TransferObject + properties: + abacCommId: + type: string + service: + type: string + action: + type: string + status: + type: string + sentAt: + type: string + receivedAt: + type: string + requestData: + type: string + errorData: + type: string + responseData: + type: string + + RequestAbacPaymentReference: + type: object + x-nt-super-class: + - TransferObject + properties: + requestNumber: + type: string + orderNumber: + type: string + invoiceDate: + type: string + format: date diff --git a/e-rights-back-office/src/main/resources/swagger/internal/e-rights-back-office-summa.yml b/e-rights-back-office/src/main/resources/swagger/internal/e-rights-back-office-summa.yml new file mode 100644 index 0000000..5e942ae --- /dev/null +++ b/e-rights-back-office/src/main/resources/swagger/internal/e-rights-back-office-summa.yml @@ -0,0 +1,336 @@ +swagger: '2.0' + +info: + description: EEAS e-RIGHTS Back Office + version: 1.0.0 + title: EEAS e-RIGHTS Back Office + termsOfService: 'http://swagger.io/terms/' + contact: + email: Fernando.TAPIA@ext.eeas.europa.eu + +host: intragate.test.ec.europa.eu + +tags: + - name: e-RIGHTS Back Office + description: e-RIGHTS Back Office + +schemes: + - https + +basePath: /internal/api + +paths: + /summa/fund-sources: + get: + tags: + - summa + description: Get list of available fund sources from SUMMA + operationId: getFundSources + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/SummaFundSource' + '401': + description: Authentication failure + '403': + description: Not authorized + + /summa/business-partners/{perid}: + get: + tags: + - summa + description: get business partner from SUMMA + operationId: getBusinessPartnerFromSumma + parameters: + - in: path + name: perid + required: true + type: integer + format: int64 + responses: + '201': + description: Successful operation + schema: + type: string + x-nt-type: BusinessPartnerResponse + '401': + description: Authentication failure + '403': + description: Not authorized + + + /summa/send-payment-to-summa: + post: + tags: + - summa + description: createSummaPayment + operationId: createSummaPayment + parameters: + - in: body + name: AllowanceRequest + required: true + schema: + type: string + x-nt-type: AllowanceRequest + + responses: + '201': + description: Successful operation + schema: + type: string + x-nt-type: OrderResponseInternal + '400': + description: Bad request + '401': + description: Authentication failure + '403': + description: Not authorized + + + /summa/refresh-allowance-p2p-order-status/{requestId}: + put: + tags: + - summa + description: refreshAllowanceP2pOrderStatus + operationId: refreshAllowanceP2pOrderStatus + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + + responses: + '201': + description: Successful operation + schema: + type: string + x-nt-type: Request + '401': + description: Authentication failure + '403': + description: Not authorized + + /summa/order-response: + get: + tags: + - summa + description: getOrderResponseInternalByRequestId + operationId: getOrderResponseInternalByRequestId + parameters: + - in: query + name: requestId + required: true + type: integer + format: int64 + responses: + '201': + description: Successful operation + schema: + type: array + items: + type: string + x-nt-type: OrderResponseInternal + '401': + description: Authentication failure + '403': + description: Not authorized + + /summa/allowance-request/{requestId}: + get: + tags: + - summa + description: getAllowanceRequestByRequestId + operationId: getAllowanceRequestByRequestId + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + responses: + '201': + description: Successful operation + schema: + type: array + items: + type: string + x-nt-type: AllowanceRequest + '401': + description: Authentication failure + '403': + description: Not authorized + + + /summa/allowance-request-empty/{requestId}: + get: + tags: + - summa + description: getAllowanceRequestEmptyByRequestId + operationId: getAllowanceRequestEmptyByRequestId + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + responses: + '201': + description: Successful operation + schema: + type: string + x-nt-type: AllowanceRequest + '401': + description: Authentication failure + '403': + description: Not authorized + /summa/refresh-bank-from-summa-per-id: + get: + tags: + - summa + description: refreshFromSummaPerIdBankAccountsPerId + operationId: refreshFromSummaPerIdBankAccountsPerId + parameters: + - in: query + required: true + name: perId + type: string + responses: + '201': + description: Successful operation + schema: + type: string + '401': + description: Authentication failure + '403': + description: Not authorized + + + /summa/refresh-all-old-bank-from-summa: + post: + tags: + - summa + description: refreshAllOldBankAccountsFromSumma + operationId: refreshAllOldBankAccountsFromSumma + responses: + '201': + description: Successful operation + content: + application/json: + type: string + '401': + description: Authentication failure + '403': + description: Not authorized + + /summa/refresh-all-bank-from-summa: + post: + tags: + - summa + description: refreshAllBankAccountsFromSumma + operationId: refreshAllBankAccountsFromSumma + responses: + '201': + description: Successful operation + content: + application/json: + type: string + '401': + description: Authentication failure + '403': + description: Not authorized + + /summa/get-pop-token: + get: + tags: + - summa + description: getPopToken + operationId: getPopToken + responses: + '200': + description: Successful operation + schema: + type: string + '401': + description: Authentication failure + '403': + description: Not authorized + + /summa/order/{order_id}/status: + get: + tags: + - summa + description: getOrderIdStatus + operationId: getOrderIdStatus + parameters: + - in: path + name: order_id + required: true + type: integer + format: int64 + responses: + '201': + description: Successful operation + schema: + type: string + x-nt-type: OrderStatusResponse + '401': + description: Authentication failure + '403': + description: Not authorized + + /summa/validateOrder/{orderId}: + get: + tags: + - e-RIGHTS Back Office + description: validateOrder + operationId: validateOrder + parameters: + - in: path + name: orderId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: boolean + '401': + description: Authentication failure + '403': + description: Not authorized + +definitions: + SummaFundSource: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + description: Unique identifier of the fund source + abacCode: + type: string + description: ABAC code of the fund source + example: "C1" + summaCode: + type: string + description: SUMMA code associated with the fund source + example: "VOBU" + description: + type: string + description: Description of the fund source + example: "Voted Budget" + budgetRegime: + type: string + description: Budget regime classification + example: "E." + + diff --git a/e-rights-back-office/src/main/resources/swagger/internal/e-rights-back-office.yml b/e-rights-back-office/src/main/resources/swagger/internal/e-rights-back-office.yml new file mode 100644 index 0000000..b5e75bd --- /dev/null +++ b/e-rights-back-office/src/main/resources/swagger/internal/e-rights-back-office.yml @@ -0,0 +1,877 @@ +swagger: '2.0' + +info: + description: EEAS e-RIGHTS Back Office + version: 1.0.0 + title: EEAS e-RIGHTS Back Office + termsOfService: 'http://swagger.io/terms/' + contact: + email: Fernando.TAPIA@ext.eeas.europa.eu + +host: intragate.test.ec.europa.eu + +tags: + - name: e-RIGHTS Back Office + description: e-RIGHTS Back Office + +schemes: + - https + +basePath: /internal/api + +paths: + + /audit-movement-files: + get: + tags: + - e-RIGHTS Back Office + summary: get of auditing of Movement files + operationId: getAuditMovementFiles + description: get Audit Movement Files + produces: + - application/json + responses: + '201': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/AuditMovementFile' + '400': + description: Malformed syntax or a bad query + '401': + description: Permission Denied + '403': + description: Authentication failure + '500': + description: Internal server error + + /audit-movement-files/{id}: + get: + tags: + - e-RIGHTS Back Office + operationId: getAuditMovementFilesByFileId + produces: + - application/json + parameters: + - in: path + name: id + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/AuditMovementFile' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + + /jobs/{jobId}: + get: + tags: + - e-RIGHTS Back Office + operationId: getJob + produces: + - application/json + parameters: + - in: path + name: jobId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: string + x-nt-type: VJob + '401': + description: Not authorized + '404': + description: Not found + '403': + description: Not authorized + '500': + description: Internal server error + + /jobs/postingTravelAllowanceTransitionJob: + get: + tags: + - e-RIGHTS Back Office + operationId: postingTravelAllowanceTransitionJob + produces: + - application/json + responses: + '200': + description: Successful operation + '401': + description: Not authorized + '404': + description: Not found + '403': + description: Not authorized + '500': + description: Internal server error + + /movement-files: + post: + tags: + - e-RIGHTS Back Office + description: createMovementFile + operationId: createMovementFile + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: movementFile + required: true + schema: + type: string + x-nt-type: MovementFile + responses: + '201': + description: Successful operation + schema: + type: integer + format: int64 + '401': + description: Authentication failure + '403': + description: Not authorized + + + + /movement-files/draft: + post: + tags: + - e-RIGHTS Back Office + description: createAsDraft + operationId: createAsDraft + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: movementFile + required: true + schema: + type: string + x-nt-type: MovementFile + responses: + '201': + description: Successful operation + schema: + type: integer + format: int64 + '401': + description: Authentication failure + '403': + description: Not authorized + put: + tags: + - e-RIGHTS Back Office + description: updateDraft + operationId: updateDraft + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: movementFile + required: true + schema: + type: string + x-nt-type: MovementFile + responses: + '201': + description: Successful operation + schema: + type: integer + format: int64 + '401': + description: Authentication failure + '403': + description: Not authorized + + /movement-files/pending: + post: + tags: + - e-RIGHTS Back Office + description: createAsPending + operationId: createAsPending + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: movementFile + required: true + schema: + type: string + x-nt-type: MovementFile + responses: + '201': + description: Successful operation + schema: + type: integer + format: int64 + '401': + description: Authentication failure + '403': + description: Not authorized + + /movement-files/draft-to-pending: + post: + tags: + - e-RIGHTS Back Office + description: draftToPending + operationId: draftToPending + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: movementFile + required: true + schema: + type: string + x-nt-type: MovementFile + responses: + '201': + description: Successful operation + schema: + type: integer + format: int64 + '401': + description: Authentication failure + '403': + description: Not authorized + + /persons: + get: + tags: + - e-RIGHTS Back Office + operationId: getPersons + produces: + - application/json + parameters: + - in: query + name: perId + required: false + type: integer + format: int64 + description: Person ID + - in: query + name: firstName + required: false + type: string + description: First name + - in: query + name: lastName + required: false + type: string + description: Last name + - in: query + name: orgName + required: false + type: string + description: Organization name + responses: + '200': + description: Successful operation + schema: + type: array + items: + type: string + x-nt-type: VPerson + '400': + description: Malformed syntax or a bad query + '401': + description: Not authorized + '403': + description: Not authorized + '500': + description: Internal server error + + /persons/{perId}: + get: + tags: + - e-RIGHTS Back Office + produces: + - application/json + operationId: getPerson + parameters: + - in: path + name: perId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: string + x-nt-type: VPerson + '401': + description: Not authorized + '404': + description: Not found + '403': + description: Not authorized + '500': + description: Internal server error + + /session/collect-movement-file-data: + post: + tags: + - e-RIGHTS Back Office + operationId: saveMovementFileDataInSession + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: movementFile + required: true + schema: + type: string + x-nt-type: MovementFile + responses: + '201': + description: Successful operation + schema: + type: string + x-nt-type: MovementFile + '401': + description: Authentication failure + '403': + description: Not authorized + get: + tags: + - session collector + operationId: getMovementFileDataFromSession + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: string + x-nt-type: MovementFile + '401': + description: Authentication failure + '403': + description: Not authorized + delete: + tags: + - session MovementFile + operationId: deleteMovementFileFromSession + produces: + - application/json + responses: + '204': + description: Successful operation + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /session/save-movement-file-data: + post: + tags: + - e-RIGHTS Back Office + operationId: saveMovementFileData + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: movementFile + required: true + schema: + type: string + x-nt-type: MovementFile + responses: + '201': + description: Successful operation + schema: + type: string + x-nt-type: MovementFile + '401': + description: Authentication failure + '403': + description: Not authorized + + /report/movement-files: + get: + tags: + - e-RIGHTS Common + summary: get report of movement files + operationId: getReportMovementFiles + description: get report of movement files + produces: + - application/json + responses: + '201': + description: Successful operation + schema: + type: array + items: + type: string + x-nt-type: VReportMovementFile + '400': + description: Malformed syntax or a bad query + '401': + description: Permission Denied + '403': + description: Authentication failure + '500': + description: Internal server error + + /movement-files/{id}: + get: + tags: + - e-RIGHTS Common + operationId: getMovementFile + produces: + - application/json + parameters: + - in: path + name: id + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: string + x-nt-type: MovementFile + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + delete: + operationId: delete + produces: + - application/json + parameters: + - in: path + name: id + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /bank-accounts/{personId}/save: + post: + tags: + - e-RIGHTS Back Office + operationId: saveOrUpdateBankAccounts + parameters: + - in: path + name: personId + required: true + type: integer + format: int64 + responses: + '201': + description: Successful operation + schema: + type: string + '401': + description: Authentication failure + '403': + description: Not authorized + + /allowances: + get: + tags: + - e-RIGHTS Allowances + operationId: getAllowancesBackOffice + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/VAllowances' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /allowances-filter: + get: + tags: + - e-RIGHTS Allowances + operationId: getAllowancesBackOfficeFiltered + produces: + - application/json + parameters: + - name: additionalQueryParams + in: query + type: string + required: false + description: "Additional Kendo DataSource" + responses: + '200': + description: Successful operation + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/definitions/VAllowances' + total: + type: integer + description: Total number of matching items (for server paging) + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /entitlements-max-default: + post: + tags: + - e-RIGHTS Back Office + operationId: newEntitlementMaxDefault + consumes: + - application/json + parameters: + - in: body + name: entitlementMaxDefault + description: New Entitlement Max Default + required: true + schema: + $ref: '#/definitions/EntitlementMaxDefault' + responses: + '201': + description: Successful operation + schema: + type: string + '401': + description: Authentication failure + '403': + description: Not authorized + + /allowances/initialize-to-draft/numberRequest/{numberRequests}: + get: + tags: + - e-RIGHTS Back Office + description: create all allowances + operationId: createAllAsDraftNumberRequest + parameters: + - in: path + name: numberRequests + required: true + type: integer + format: int32 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: integer + format: int64 + '401': + description: Authentication failure + '403': + description: Not authorized + /allowances/initialize-to-draft/{personId}: + get: + tags: + - e-RIGHTS Back Office + description: create single travel allowance + operationId: createTravelAllowanceAsDraft + parameters: + - in: path + name: personId + required: true + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + type: integer + format: int64 + '401': + description: Authentication failure + '403': + description: Not authorized + /vReportPostingAllowances: + get: + tags: + - e-RIGHTS Posting Allowances Request + summary: lists Posting Allowances request for grid + operationId: getVReportPostingAllowances + description: getVReportPostingAllowances + parameters: + - in: query + name: personId + required: false + type: integer + format: int64 + description: Person who has Posting Allowances + - in: query + name: year + required: false + type: integer + format: int32 + description: Year of Posting Alowances + produces: + - application/json + responses: + '201': + description: Successful operation + schema: + type: array + items: + type: string + x-nt-type: VReportPostingAllowance + '400': + description: Malformed syntax or a bad query + '401': + description: Permission Denied + '403': + description: Authentication failure + '500': + description: Internal server error + + /placeOriginAirport: + get: + tags: + - e-RIGHTS Back Office + operationId: placeOriginAirportByCityNameAndCountryCode + produces: + - application/json + parameters: + - in: query + name: cityName + required: false + type: string + - in: query + name: countryCode + required: false + type: string + + + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/PlaceOriginAirport' + '400': + description: Malformed syntax or a bad query + '401': + description: Not authorized + '403': + description: Not authorized + '404': + description: Iata for Place of origin not found ID not found in Abac Data table + '500': + description: Internal server error + post: + tags: + - e-RIGHTS Back Office + operationId: savePlaceOriginAirportByCityNameAndCountryCode + produces: + - application/json + parameters: + - in: body + name: placeOriginAirport + description: New PlaceOriginAirport + required: true + schema: + $ref: '#/definitions/PlaceOriginAirport' + + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/PlaceOriginAirport' + '400': + description: Malformed syntax or a bad query + '401': + description: Not authorized + '403': + description: Not authorized + '404': + description: Iata for Place of origin not found + '500': + description: Internal server error + '409': + description : Conflict - Place origin ariport already exists + +definitions: + + AuditMovementFile: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + description: Identifier + fileId: + type: string + lastName: + type: string + firstName: + type: string + status: + type: string + x-nt-type: MovementFileState + description: Movement file state + startDateFuture: + type: string + format: date + description: Start date of future job + endDateFuture: + type: string + format: date + description: End date of future job + movementTo: + type: string + movementFrom: + type: string + budgetLineFuture: + type: string + movementYear: + type: string + movementType: + type: string + movementContext: + type: string + perId: + type: integer + format: int64 + description: Person ID + futureAssignment: + type: string + priority: + type: boolean + allocatedToCurrent: + type: string + allocatedToFuture: + type: string + aipnFileId: + type: string + aipnDocumentId: + type: string + aipnNotifDate: + type: string + format: date + reasonEoc: + type: string + withoutRights: + type: boolean + + MovementFileDetail: + type: object + x-nt-super-class: + - TransferObject + properties: + movementFileId: + type: integer + format: int64 + description: Identifier + detailDate: + type: string + format: date + detailName: + type: string + description: File Name + detailDescription: + type: string + description: detail Description + + EntitlementMaxDefault: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + amount: + type: number + description: Amount + year: + type: integer + format: int32 + description: Year + countryFrom: + type: string + description: Country from + countryTo: + type: string + description: Country to + rateType: + type: string + + PlaceOriginAirport: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: number + description: Id + cityCode: + type: string + countryCode: + type: string + cityName: + type: string + iataCode: + type: string + airportName: + type: string + + RightsListVO: + type: "object" + properties: + rightVOList: + type: "array" + items: + $ref: "#/definitions/RightVO" \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml b/e-rights-back-office/src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml new file mode 100644 index 0000000..8462938 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/abac-payments/abac.details.accommodation.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/abac-payments/abac.details.accommodation.jsp new file mode 100644 index 0000000..7661827 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/abac-payments/abac.details.accommodation.jsp @@ -0,0 +1,24 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/abac-payments/abac.details.form.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/abac-payments/abac.details.form.jsp new file mode 100644 index 0000000..68a9705 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/abac-payments/abac.details.form.jsp @@ -0,0 +1,27 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/abac-payments/abac.info.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/abac-payments/abac.info.jsp new file mode 100644 index 0000000..3d784c8 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/abac-payments/abac.info.jsp @@ -0,0 +1,25 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/accommodation/declaration.job-holder.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/accommodation/declaration.job-holder.jsp new file mode 100644 index 0000000..24b2a5b --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/accommodation/declaration.job-holder.jsp @@ -0,0 +1,20 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + <%@ include file="/static/templates/accommodation/declaration.job-holder.html" %> + + + + +
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/admin/iata-routes-calculation.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/admin/iata-routes-calculation.jsp new file mode 100644 index 0000000..77dee4a --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/admin/iata-routes-calculation.jsp @@ -0,0 +1,16 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + <%@ include file="/static/templates/admin/iata-routes-calculation.html" %> + + + +
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/admin/it-admin.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/admin/it-admin.jsp new file mode 100644 index 0000000..531b521 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/admin/it-admin.jsp @@ -0,0 +1,16 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + <%@ include file="/static/templates/admin/it-admin.html" %> + + + +
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/head-addon.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/head-addon.jsp new file mode 100644 index 0000000..03c26be --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/head-addon.jsp @@ -0,0 +1,8 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-docs/edit.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-docs/edit.jsp new file mode 100644 index 0000000..360fc90 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-docs/edit.jsp @@ -0,0 +1,18 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + <%-- --%> + + + + + +
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.details-no-job.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.details-no-job.jsp new file mode 100644 index 0000000..f70e451 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.details-no-job.jsp @@ -0,0 +1,34 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + + + <%@ include file="/static/templates/movement-file/file.details-no-job.html" %> + + + + + + + + +
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.details.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.details.jsp new file mode 100644 index 0000000..738f8ab --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.details.jsp @@ -0,0 +1,33 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + <%-- + + + --%> + + <%@ include file="/static/templates/movement-file/file.details.html" %> + + + + + + +
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.future-assignment.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.future-assignment.jsp new file mode 100644 index 0000000..239be11 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.future-assignment.jsp @@ -0,0 +1,35 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + + + <%-- + + + --%> + + <%@ include file="/static/templates/movement-file/file.future-assignment.html" %> + + + + + + +
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.job-holder.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.job-holder.jsp new file mode 100644 index 0000000..a80c517 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.job-holder.jsp @@ -0,0 +1,24 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + <%-- + + + --%> + + <%@ include file="/static/templates/movement-file/file.job-holder.html" %> + + + + +
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.staff-member-data.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.staff-member-data.jsp new file mode 100644 index 0000000..48544cb --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.staff-member-data.jsp @@ -0,0 +1,28 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + <%-- + + + --%> + + <%@ include file="/static/templates/movement-file/file.staff-member-data.html" %> + + + + + +
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.summary.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.summary.jsp new file mode 100644 index 0000000..26d176c --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/movement-file/file.summary.jsp @@ -0,0 +1,15 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + <%@ include file="/static/templates/movement-file/file.summary.html" %> + + +
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/reports/allowances.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/reports/allowances.jsp new file mode 100644 index 0000000..9272ce0 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/reports/allowances.jsp @@ -0,0 +1,23 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + <%@ include file="/static/templates/request/allowances.html" %> + + + + + +
+
+
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/reports/empty.rates.entitlements.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/reports/empty.rates.entitlements.jsp new file mode 100644 index 0000000..088cb61 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/reports/empty.rates.entitlements.jsp @@ -0,0 +1,27 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + <%-- + + + --%> + + <%@ include file="/static/templates/reports/empty.rates.entitlements.html" %> + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/reports/entitlement.max.default.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/reports/entitlement.max.default.jsp new file mode 100644 index 0000000..7dd60f7 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/reports/entitlement.max.default.jsp @@ -0,0 +1,14 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + <%@ include file="/static/templates/reports/entitlement.max.default.html" %> + + + + +
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/reports/posting.allowances.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/reports/posting.allowances.jsp new file mode 100644 index 0000000..4885198 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/reports/posting.allowances.jsp @@ -0,0 +1,23 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + <%@ include file="/static/templates/posting-allowances/posting.allowances.html" %> + + + + + +
+
+
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/request/edit.adv.rem.request.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/request/edit.adv.rem.request.jsp new file mode 100644 index 0000000..8d6e71c --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/request/edit.adv.rem.request.jsp @@ -0,0 +1,23 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + <%-- --%> + + + + + +
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/request/edit.tud.request.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/request/edit.tud.request.jsp new file mode 100644 index 0000000..61e0d79 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/request/edit.tud.request.jsp @@ -0,0 +1,23 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + + <%-- --%> + + + + + +
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/jsp/welcome.jsp b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/welcome.jsp new file mode 100644 index 0000000..1aa4e37 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/jsp/welcome.jsp @@ -0,0 +1,14 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + <%@ include file="/static/templates/welcome.html" %> + + + +
+
+ + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/web.xml b/e-rights-back-office/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..f0cdba0 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,66 @@ + + + + e-RIGHTS-Back-Office + + + + #public# + /common/web/* + + /ananke-error + /ananke/v2/web/* + /proxy-ticket-receptor + /static/* + /webjars/* + + + + + + #secure_managed# + /internal/api/* + + *.do + /actuator/* + /ananke-core/* + /ananke-tools/* + /logout + / + #EMPTY# + + + + * + + + NONE + + + + + Syntetic role that indicates if the principal is authenticated + authenticated + + + + eu.cec.digit.ecas.client.filter.externalConfigurationKey + AnankeCoreSecurityEULoginConfiguration + + + + 60 + + + + welcome.do + + + + + + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/WEB-INF/weblogic.xml b/e-rights-back-office/src/main/webapp/WEB-INF/weblogic.xml new file mode 100644 index 0000000..55329cc --- /dev/null +++ b/e-rights-back-office/src/main/webapp/WEB-INF/weblogic.xml @@ -0,0 +1,51 @@ + + + + erightsbo + + + + + /erightsbo + true + + + + + com.fasterxml.jackson.* + javax.persistence.* + javax.validation.* + org.hibernate.* + org.joda.time.* + org.slf4j.* + org.springframework.* + com.google.crypto.* + com.nimbusds.* + + + + + + + authenticated + authenticated + + + + 5 + true + + + + true + + + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/scripts/abac-payments/abac-details-accommodation.js b/e-rights-back-office/src/main/webapp/static/scripts/abac-payments/abac-details-accommodation.js new file mode 100644 index 0000000..7f3ed97 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/abac-payments/abac-details-accommodation.js @@ -0,0 +1,557 @@ +class AbacDetailsModel { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.model(); + }); + this._commonCss = { + headerAttributesCss: "text-right pl-0" + } + this.accPaymentPermisions = { + Pay: "PAY" + } + this._gridRowsId = 1; + this.urls = { + action: { + viewAccommodationDeclaration: $a.utils.url(null, + "/posting-allowances/accommodation-declaration-view.do"), + viewAccommodationPayment: $a.utils.url(null, + "/posting-allowances/accommodation-payment-view.do"), + } + }; + this._restCalls = { + + getPostingAllowance: new $a.GetRestCall(null,"/internal/api/accommodation-payments/{accommodationPaymentId}"), + getStateHistory: new $a.GetRestCall(null,"/internal/api/accommodation-payments/state-machine/history/{accommodationPaymentId}"), + permissions: new $a.GetRestCall(null,"/internal/api/posting-allowances-permissions"), + appParameters: new $a.GetRestCall(null, "/internal/api/app-parameters"), + getBankInfo: new $a.GetRestCall(null, "/internal/api/bank-accounts"), + getBudgetLines: new $a.GetRestCall(null, "/internal/api/abac-info/budget-lines"), + getdelegationCodes: new $a.GetRestCall(null, "/internal/api/abac-info/delegation-codes"), + getPersonAbacInfo: new $a.GetRestCall(null, "/internal/api/abac-info/person/{personId}"), + getBudgetLineSubposts: new $a.GetRestCall(null, "/internal/api/abac-info/budget-line-subposts"), + requestSubposts: new $a.GetRestCall(null, "/internal/api/abac-info/request-subposts"), + createAbacEntities: new $a.PostRestCall(null, "/internal/api/abac-info/create-abac-entities-for-request"), + + } + + } + init() { + + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model.onPostingAllowanceRetrieved); + + dataPoolExecutor.add("postingAllowance", $al.model._restCalls.getPostingAllowance, {accommodationPaymentId: $postingAllowanceId}); + dataPoolExecutor.add("appParameters", $al.model._restCalls.appParameters, null, {paramType: "ABAC"}); + dataPoolExecutor.add("stateMachineHistory", $al.model._restCalls.getStateHistory, {accommodationPaymentId: $postingAllowanceId}); + dataPoolExecutor.run(); + + } + onPostingAllowanceRetrieved(data){ + $al.model.postingAllowance = data.get("postingAllowance").data; + var AppParametersArr = data.get("appParameters").data; + $al.model.stateMachineHistory = data.get("stateMachineHistory").data; + $al.model.appParameters = new Map(AppParametersArr.map(i => [i.key, i.value])); + + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model.onPermissionsAndAbacInfoRetrieved); + dataPoolExecutor.add("delegationCodes", $al.model._restCalls.getdelegationCodes, null, {exerciseId: $al.model.appParameters.get("EXERCISE_YEAR")}); + dataPoolExecutor.add("permissions", $al.model._restCalls.permissions); + dataPoolExecutor.add("budgetLineSubposts", $al.model._restCalls.getBudgetLineSubposts, null, {budgetPositionErights: $al.model.postingAllowance.budgetLine}); + dataPoolExecutor.run(); + /*$al.view.configPostingAllowanceForPayment(); + $al.view._initializeView(); + $al.view.render(); + $al.view._bindView();*/ + } + + onPermissionsAndAbacInfoRetrieved(data){ + + $al.model.permissions = data.get("permissions").data; + + $al.model.delegationCodes = data.get("delegationCodes").data; + $al.model.budgetLineSubposts = data.get("budgetLineSubposts").data; + if (typeof $al.model.budgetLineSubposts !== 'undefined' && $al.model.budgetLineSubposts.length > 0) { + $al.model._restCalls.getBudgetLines.execute(null, { + budgetPosition: $al.model.budgetLineSubposts[0].budgetPositionBudgdel, + exerciseId: $al.model.appParameters.get("EXERCISE_YEAR"), + delegation: $al.model.appParameters.get("RESPONSIBLE_ORGANISATION_NAME_BS4") + }, $al.model.onBudgetLinesRetrive); + } else { + // No budgetLineSubposts found (?) + $al.view._showWarnDialog('Missing data', [ + ('Unexpected problem: No Budget Line Subposts available for Budget Line: ' + $al.model.movementFile.budgetLine) + ]); + } + + + } + + onBudgetLinesRetrive(data) { + $al.model.budgetLines = data; + $al.view._initializeView(); + + $al.view.render(); + + if (typeof $al.model.budgetLines != "undefined" && $al.model.budgetLines.length > 0) { + $al.view._setCommitmentAndBudget($al.model.budgetLines[0]); + } + + $al.view._bindView(); + } + +} + +class AbacDetailsView { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.view(); + }); + this._templates = new $a.DataContainer("abac-details-accommodation"); + this._elements = new $a.DataContainer("abac-details-accommodation"); + this._templates.data(new $a.KendoTemplateData()); + this._templates.node("selection_abac_info").data(new $a.KendoTemplateData()); + this._elements.data(new $a.KendoElementData()); + this._elements.node("analytical_code").data(new $a.KendoElementData()); + this._elements.node("selection_abac_info").data(new $a.KendoElementData()); + this._elements.node("workflow_organization").data(new $a.KendoElementData()) + this._elements.node("delegations_dropdown").data(new $a.KendoElementData()); + this._elements.node("subposts").node("grid").data(new $a.KendoElementData()); + this._elements.node("add_subposts_dropdown").data(new $a.KendoElementData()); + this._templates.node("subposts").node("grid").data(new $a.KendoTemplateData()); + this._elements.node("communication").data(new $a.KendoElementData()); + } + + _initializeView(){ + var viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel({ + isVisible: false, + message: " ", + name: $al.model.postingAllowance.staffMember.lastName + ' ' + $al.model.postingAllowance.staffMember.firstName , + perId: $al.model.postingAllowance.staffMember.perId , + postingAllowance: $al.model.postingAllowance, + titleForFrontEnd: $al.controller._languageBundle.accommodation.declaration.heading, + budgetLines: $al.model.budgetLines, + canPayAbac: false, + abacInfo: { + workflow: "EEAS_STANDARD", + localDelegationCode: "EEAS", + responsibleOrganization: $al.model.appParameters.get("RESPONSIBLE_ORGANISATION_NAME_BS4"), + analyticalCode: '', + postingAllowanceId: $postingAllowanceId, + responsibleOrganizationType: $al.model.appParameters.get("RESPONSIBLE_ORGANISATION_TYPE_CODE_BS4"), + removalClearingAmount: $al.model.postingAllowance.accommodationTotalAmount + }, + errorMessage: null, + canEditAnalyticalCode: false, + onSelectWorkFlow: function () { + $al.view._onSelectWorkFlow(); + }, + setCommitmentAndBudget: function (e) { + $al.view._setCommitmentAndBudget(e.dataItem); + }, + + }); + + if ($al.model._viewModel.postingAllowance.state == 'APPROVED') { + $al.model._viewModel.canPayAbac = $al.controller._hasPermission( + $al.model.accPaymentPermisions.Pay); + } + + $al.controller.getPersonCriteriaCode(); + + } + render() { + $al.view._templates.data.compile(); + $al.view._templates.selection_abac_info.data.compile(); + $al.view._templates.subposts.grid.data.compile(); + $al.view._renderSubPostsGrid(); + $al.view._renderAddSubpostsDropDown(); + $al.view._renderDelegationsDropDown(); + $al.view._renderCommunication(); + } + + _onSelectWorkFlow(){ + var selectedContext = $("input[name='workflow']:checked").val(); + + $al.model._viewModel.abacInfo.workflow = selectedContext; + if (selectedContext == "DEL_NORM") { + $al.model._viewModel.showDelegationCodes = true; + $al.model._viewModel.abacInfo.responsibleOrganizationType = $al.model.appParameters.get("RESP_ORG_TYPE_CODE_NOMRAL_WORKFLOW"); + $al.model._viewModel.abacInfo.localDelegationCode = ""; + + } else { + $al.model._viewModel.showDelegationCodes = false; + $al.model._viewModel.abacInfo.localDelegationCode = "EEAS"; + $al.model._viewModel.abacInfo.responsibleOrganization = $al.model.appParameters.get("RESPONSIBLE_ORGANISATION_NAME_BS4"); + $al.model._viewModel.abacInfo.responsibleOrganizationType = $al.model.appParameters.get("RESPONSIBLE_ORGANISATION_TYPE_CODE_BS4"); + + } + $al.view._bindView(); + + } + + _bindView() { + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + // Display the Request total amount + // $al.view._renderTotalAmount($al.model.request.requestType); + } + + configPostingAllowanceForPayment(){ + + } + + _renderCommunication() { + $al.view._elements.communication.data.element.kendoListView({ + dataSource: $al.view._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#abac-details-accommodation-communication-template").html()) + }).removeClass('k-widget k-listview'); + $al.view._elements.communication.data.component = "kendoListView"; + } + + _prepareCommunication(data) { + if (typeof data !== "undefined" && data !== null) { + data.forEach(n => { + n.arrivalState = $al.controller._languageBundle.stateMachine[n.arrivalState.toLowerCase()]; + }); + } + return data; + } + + + _renderDelegationsDropDown() { + return $al.view._elements.delegations_dropdown.data.element.kendoDropDownList({ + dataSource: $al.model.delegationCodes, + dataTextField: "name", + dataValueField: "orgCode", + valuePrimitive: true, + filter: "contains", + autoWidth: true, + optionLabel: {code: "", name: "Select Workflow"}, + template: "#: data.orgCode # - #: data.name #", + valueTemplate: "#: data.orgCode # - #: data.name #", + value: $al.model._viewModel.abacInfo.localDelegationCode, + //dataBound: $al.view._onChangeSelectWorkflowDelegation, + change: $al.view._onChangeSelectWorkflowDelegation, + filtering: function (ev) { + var filterValue = ev.filter != undefined ? ev.filter.value : ""; + ev.preventDefault(); + + this.dataSource.filter({ + logic: "or", + filters: [ + { + field: "orgCode", + operator: "contains", + value: filterValue + }, + { + field: "name", + operator: "contains", + value: filterValue + } + ] + }); + } + }); + + } + + //subposts grid + + calculateSubPostsForAccPostingAllowance() { + const subpostsList = []; + + const personalLineSubposts = JSON.parse(JSON.stringify($al.model.budgetLineSubposts.filter(a => a.subpostType == "RENT")[0])); + //const personalLineSubposts = $al.model.budgetLineSubposts; + if (typeof personalLineSubposts !== 'undefined') { + let personalAmount = Number($al.model.postingAllowance.accommodationTotalAmount); + personalLineSubposts.amount = {amount: Number(personalAmount.toFixed(2)), currency: "EUR"}; + personalLineSubposts.postingAllowanceId = $postingAllowanceId; + personalLineSubposts.id = $al.model._restCalls._gridRowsId++; + subpostsList.push(personalLineSubposts); + } + + return subpostsList; + + } + + _renderAddSubpostsDropDown() { + + + var grid = $al.view._elements.subposts.grid.data.element.data("kendoGrid"); + + $al.view._elements.add_subposts_dropdown.data.element.kendoDropDownList({ + dataSource: $al.model.budgetLineSubposts, + dataTextField: "subpostCode", + dataValueField: "subpostCode", + optionLabel: 'ADD INVOICE', + enable: true, + filter: "contains", + optionLabelTemplate: 'ADD SUBPOST', + // remove reduntant optionlabel inside the dropdown as we are using a kendoDropdownList + open: function () { + $al.view._elements.add_subposts_dropdown.data.element.getKendoDropDownList().list.find(".k-list-optionlabel").hide(); + }, + autoWidth: true, + change: function (e) { + const typeOfRemoval = this.value(); + const subPostSelected = $al.model.budgetLineSubposts.filter(d => d.subpostCode === typeOfRemoval)[0]; + + + // Add row in right group + var index = 100; //random hard-coded index to force row to appear last + + var dataSource = grid.dataSource; + subPostSelected.amount = {amount: 0, currency: "EUR"}; + var newItem = dataSource.insert(index, subPostSelected); + var newRow = grid.items().filter("[data-uid='" + newItem.uid + "']"); + grid.editRow(newRow); + + + // Restore the option label as selected value + $al.view._elements.add_subposts_dropdown.data.element.data("kendoDropDownList").value(0); + } + }); + + } + + _renderSubPostsGrid() { + + var dataSource = new kendo.data.DataSource({ + + autoSync: false, + data: $al.view.calculateSubPostsForAccPostingAllowance(), + dataType: "json", + schema: { + model: { + id: "id", + fields: { + id: {type: "number"}, + requestSubpostsId: {type: "number"}, + requestId: {type: "number"}, + budgetLinesSubpostsMappingId: {type: "number"}, + + subpostCode: {editable: true, type: "string"}, + subpostDescription: {editable: true, type: "string"}, + subpostType: {editable: true, type: "string"}, + amount: { + amount: {type: "number", validation: {required: true, min: 0}}, + currency: {type: "string"} + }, + }, + } + }, + aggregate: [ + {field: "amount.amount", aggregate: "sum"}, + ] + }); + + var columns_desc = [ + {hidden: true, field: "id"}, + { + field: "subpostCode", + title: $al.controller._languageBundle.subpost.code, + attributes: {class: "px-0 font-weight-medium"}, + headerAttributes: {class: "pl-0"}, + width: "10%", + }, + { + field: "subpostDescription", + title: $al.controller._languageBundle.subpost.description, + width: "70%", + footerTemplate: "
Total Amount:
", + }, + { + field: "amount.amount", + title: $al.controller._languageBundle.subpost.amount, + attributes: {class: $al.model._commonCss.headerAttributesCss}, + headerAttributes: {class: $al.model._commonCss.headerAttributesCss}, + template: "#= kendo.toString(amount.amount, \"n2\") # EUR", + editor: $al.view.invoiceAmountEditor, + format: '{0:n2}', + width: "15%", + aggregates: ["sum"], + footerTemplate: $al.view.subpostsFooterTemplate + }, + { + command: [ + { + name: "edit", + // template: "Add add", + template: "edit", + text: {edit: "", update: "", cancel: ""} + }, + { + name: "destroy", + template: "" + + "close", + text: "" + } + ], + width: "100px", + attributes: {class: "pr-0 pr-xxl-2 text-right text-nowrap"}, + headerAttributes: {class: "col-command"}, + //hidden: !$al.model._viewModel.canEditGrid + } + ]; + + $al.view._elements.subposts.grid.data.element.kendoGrid({ + + dataSource: dataSource, + + noRecords: { + template: "" + }, + scrollable: false, + sortable: false, + resizable: false, + columns: columns_desc, + editable: "inline", + dataBound: $al.view._onDataBound, + save: $al.controller._onSave + }); + + + $al.view._elements.subposts.grid.data.component = "kendoGrid"; + + $('textarea.autoSize').autosize(); + } + + invoiceAmountEditor(container, options) { + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "#.00 EUR", + decimals: 2, + spinners: false, + placeholder: "0" + }); + } + + subpostsFooterTemplate(e) { + $al.model._viewModel.abacInfo.totalPaymentAmount = e['amount.amount'].sum; + $al.model._viewModel.abacInfo.outOfBudget = $al.model._viewModel.abacInfo.totalPaymentAmount > $al.model._viewModel.abacInfo.ral; + $al.model._viewModel.abacInfo.amountsAligned = Number($al.model._viewModel.abacInfo.totalPaymentAmount.toFixed(2)) == Number($al.model._viewModel.abacInfo.removalClearingAmount.toFixed(2)); + $al.model._viewModel.abacInfo.cannotSendToAbac = $al.model._viewModel.abacInfo.outOfBudget || !$al.model._viewModel.abacInfo.amountsAligned; + return "
" + kendo.toString(e['amount.amount'].sum, "n2") + + " EUR
"; + } + + + _getFormattedDate(dateStr) { + let date = new Date(dateStr); + var dd = date.getDate(); + var mm = date.getMonth() + 1; + var yyyy = date.getFullYear(); + + if (dd < 10) { + dd = '0' + dd; + } + if (mm < 10) { + mm = '0' + mm; + } + + return dd + '/' + mm + '/' + yyyy; + } + + _getformattedTime = (dateStr) => { + let date = new Date(dateStr); + let hours = date.getHours(); + let minutes = date.getMinutes(); + + minutes = minutes.toString().padStart(2, '0'); + let strTime = hours + ':' + minutes ; + return strTime; + } + + _setCommitmentAndBudget(e) { + $al.model._viewModel.abacInfo.paymentCreditsAvailableEur = e.paymentCreditsAvailableEur; + $al.model._viewModel.abacInfo.budgetPosition = e.budgetPosition; + $al.model._viewModel.abacInfo.budgetLine = e.budgetLine; + $al.model._viewModel.abacInfo.exerciseId = e.exerciseId; + $al.model._viewModel.abacInfo.fundSourceGroup = e.fundSourceGroup; + $al.model._viewModel.abacInfo.commitmentId = e.commitmentId; + $al.model._viewModel.abacInfo.commitmentHeaderId = e.commitmentHeaderId; + + $al.model._viewModel.abacInfo.lvlCode = e.lvlCode; + $al.model._viewModel.abacInfo.lvlName = e.lvlName; + $al.model._viewModel.abacInfo.mainAccount = e.mainAccount; + $al.model._viewModel.abacInfo.totalCommitmentsEur = e.totalCommitmentsEur; + + $al.model._viewModel.abacInfo.parentLocalKey = e.parentLocalKey; + $al.model._viewModel.abacInfo.ral = e.ral; + + $al.model._viewModel.abacInfo.outOfBudget = $al.model._viewModel.abacInfo.totalPaymentAmount > $al.model._viewModel.abacInfo.ral; + $al.model._viewModel.abacInfo.budgetMsg = $al.model._viewModel.abacInfo.outOfBudget ? kendo.format($al.controller._languageBundle.abac_details.tooltips.ral_alert, $al.view._getFormattedDate(e.syncCommitmentsDate), $al.view._getformattedTime(e.syncCommitmentsDate)) : kendo.format($al.controller._languageBundle.abac_details.tooltips.ral_info, $al.view._getFormattedDate(e.syncCommitmentsDate), $al.view._getformattedTime(e.syncCommitmentsDate)); + $al.model._viewModel.abacInfo.amountsAligned = Number($al.model._viewModel.abacInfo.totalPaymentAmount.toFixed(2)) == Number($al.model._viewModel.abacInfo.removalClearingAmount.toFixed(2)); + $al.model._viewModel.abacInfo.cannotSendToAbac = $al.model._viewModel.abacInfo.outOfBudget || !$al.model._viewModel.abacInfo.amountsAligned; + + $al.view._bindView(); + } + +} + +class AbacDetailsController { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.controller(); + }); + this._languageBundle = null; + } + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, + "common.messages.e-rights", "e_rights.postingAllowances", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + + $al.model.init(); + $al.notifyOnReadyMvc(); + } + + getPersonCriteriaCode() { + const muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + $al.model._restCalls.getPersonAbacInfo.execute({personId: $al.model.postingAllowance.staffMember.perId }, null, null, null,(data)=>{ + if(data.status === 200){ + $al.model.personAbacInfo = data.responseJSON; + $al.model._viewModel.abacInfo.analyticalCode = $al.model.personAbacInfo.criteriaCode; + $('#analytical_code').val($al.model._viewModel.abacInfo.analyticalCode) + $('#defaultACDivers').attr("disabled", true); + }else if(data.status === 204 || data.status === 409){ + $('#analytical_code').val('NO_CODE_FOUND'); + $('#defaultACDivers').attr("disabled", false); + $("#defaultACDivers").click(function () { + if(!$al.model._viewModel.canEditAnalyticalCode){ + $('#analytical_code').val('DIVERS'); + $al.model._viewModel.abacInfo.analyticalCode = 'DIVERS'; + }else{ + $('#analytical_code').val('NO_CODE_FOUND'); + $al.model._viewModel.abacInfo.analyticalCode = 'NO_CODE_FOUND'; + } + }); + }else{ + const errorMessage = data.responseText; + $a.toast.showError(errorMessage); + $al.model._viewModel.errorMessage = errorMessage; + } + },null,muteAnankeErrorToast); + } + + _hasPermission(permission) { + let accPermissions = $al.model.permissions.accPaymentPermissions; + if (accPermissions) { + return accPermissions.includes(permission) + } + return false + } + + +} + +$al.mvc(AbacDetailsModel, AbacDetailsView, AbacDetailsController, true); \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/scripts/abac-payments/abac-details-form.js b/e-rights-back-office/src/main/webapp/static/scripts/abac-payments/abac-details-form.js new file mode 100644 index 0000000..f470e24 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/abac-payments/abac-details-form.js @@ -0,0 +1,1980 @@ + +// ─── Constants & Configuration ─────────────────────────────────────────────── + +const REQUEST_TYPE_CONFIG = { + ClearingRequest: { + endPoint: "/internal/api/clearing-requests", + removalRequest: true, + paymentType: "REM", + invoice: true, + titleKey: "clearing" + }, + AdvanceRequest: { + endPoint: "/internal/api/adv-rem-requests", + removalRequest: true, + paymentType: "REM", + invoice: false, + titleKey: "advance" + }, + TotalRemRequest: { + endPoint: "/internal/api/total-rem-requests", + removalRequest: true, + paymentType: "REM", + invoice: true, + titleKey: "total_removal" + }, + TudRequest: { + endPoint: "/internal/api/tud-requests", + removalRequest: false, + paymentType: "TUD", + titleKey: "tud" + }, + TopUpRequest: { + endPoint: "/internal/api/topup-requests", + removalRequest: false, + paymentType: null, // resolved dynamically + titleKey: "topup" + } +}; + +const ADV_TOTAL_AMOUNT_MULT_FACTOR = 0.9; +const MAX_MARK_AS_PAID_INT = 2147483647; +const HEADER_CSS = "text-right pl-0"; + +// ─── Helpers ───────────────────────────────────────────────────────────────── + +function formatEurAmount(amount) { + return kendo.toString(amount, "n2") + ' EUR'; +} + +function formatDate(dateStr) { + const date = new Date(dateStr); + const dd = String(date.getDate()).padStart(2, "0"); + const mm = String(date.getMonth() + 1).padStart(2, "0"); + return dd + "/" + mm + "/" + date.getFullYear(); +} + +function formatTime(dateStr) { + const date = new Date(dateStr); + return date.getHours() + ":" + String(date.getMinutes()).padStart(2, "0"); +} + +function extractDistinctValues(items, fieldName, splitDelimiter) { + const seen = Object.create(null); + const result = []; + + (items || []).forEach(item => { + const raw = item[fieldName]; + if (!raw) return; + + const values = splitDelimiter + ? raw.split(splitDelimiter).map(v => v.trim()).filter(v => v.length > 0) + : [raw]; + + values.forEach(v => { + if (!seen[v]) { + seen[v] = true; + result.push({ text: v, value: v }); + } + }); + }); + + return result; +} + +function buildKendoGrid(element, dataSource, columns, extraOptions) { + element.kendoGrid({ + dataSource: dataSource, + scrollable: false, + sortable: false, + resizable: false, + columns: columns, + ...extraOptions + }); +} + +function filterSubpostsByType(subposts, subpostType, paymentType, earMarkedFundFilter) { + let filtered = subposts.filter(a => + a.subpostType === subpostType && + a.requestType === paymentType && + earMarkedFundFilter(a) + ); + + // Fallback: no earmarked-fund match → ignore earmarked fund + if (filtered.length === 0) { + filtered = subposts.filter(a => + a.subpostType === subpostType && + a.requestType === paymentType + ); + } + + return filtered.length > 0 + ? JSON.parse(JSON.stringify(filtered[0])) + : null; +} + +function isNotZero(value) { + return Math.abs(value) >= 0.01; +} + +// â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• +// MODEL +// â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• + +class AbacDetailsModel { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.model(); + }); + + const config = REQUEST_TYPE_CONFIG[$requestType] || {}; + const endPoint = config.endPoint || ""; + + this.removalRequest = config.removalRequest ?? false; + this.invoice = config.invoice; + this.paymentType = config.paymentType + ?? ($requestType === "TopUpRequest" + ? ($requestType === "TopUpRequest" ? "TUD" : "REM") // TopUp resolves based on parent later + : "REM"); + + // TopUpRequest: paymentType depends on context, default to parent-based logic + if ($requestType === "TopUpRequest") { + this.paymentType = "TUD"; // overridden later if parent is not TudRequest + } + + this._commonCss = { headerAttributesCss: HEADER_CSS }; + this._gridRowsId = 1; + + this._restCalls = { + getRequest: new $a.GetRestCall(null, endPoint.concat("/{requestId}")), + getAdvanceRequest: new $a.GetRestCall(null, "/internal/api/adv-rem-requests/{requestId}"), + getBankInfo: new $a.GetRestCall(null, "/internal/api/bank-accounts"), + movementFile: new $a.GetRestCall(null, "/internal/api/movement-files/{fileId}"), + updateRequest: new $a.PutRestCall(null, endPoint), + getStateHistory: new $a.GetRestCall(null, endPoint.concat("/{requestId}/stateMachineHistory")), + changeStateRequest: new $a.PutRestCall(null, endPoint.concat("/stateMachineEvent/{stateMachineEvent}/{requestId}")), + permissions: new $a.GetRestCall(null, "/internal/api/permissions"), + abacPay: new $a.PostRestCall(null, "/internal/api/abac/invoices"), + appParameters: new $a.GetRestCall(null, "/internal/api/app-parameters"), + getBudgetLines: new $a.GetRestCall(null, "/internal/api/abac-info/budget-lines"), + getDelegationCodes: new $a.GetRestCall(null, "/internal/api/abac-info/delegation-codes"), + getPersonAbacInfo: new $a.GetRestCall(null, "/internal/api/abac-info/person/{personId}"), + getBudgetLineSubposts: new $a.GetRestCall(null, "/internal/api/abac-info/budget-line-subposts"), + requestSubposts: new $a.GetRestCall(null, "/internal/api/abac-info/request-subposts"), + createAbacEntities: new $a.PostRestCall(null, "/internal/api/abac-info/create-abac-entities-for-request"), + sendToSumma: new $a.PostRestCall(null, "/internal/api/summa/send-payment-to-summa"), + summaFundSource: new $a.GetRestCall(null, "/internal/api/summa/fund-sources"), + getEmptyAllowancePayment: new $a.GetRestCall(null, "/internal/api/summa/allowance-request-empty/{requestId}"), + getAllAllowancePaymentsForRequest: new $a.GetRestCall(null, "/internal/api/summa/allowance-request/{requestId}"), + getAllOrderResponses: new $a.GetRestCall(null, "/internal/api/summa/order-response?requestId={requestId}"), + exchangeRates: new $a.GetRestCall(null, "/internal/api/exchange-rates"), + markAsPaid: new $a.PutRestCall(null, "/internal/api/requests/markAsPaid"), + }; + + this.urls = { + action: { + viewMovementFile: $a.utils.url(null, "/movement-files/view.do"), + viewRequest: $a.utils.url(null, "/summa/response-from-p2p.do"), + goToAbacResponse: $a.utils.url(null, "/summa/response-from-p2p.do"), + viewAdvanceRequest: $a.utils.url(null, "/requests/view-adv-rem.do"), + abacPaymentsDetails: $a.utils.url(null, "/summa/p2p-payments-details.do") + } + }; + } + + init() { + const executor = new $a.RestCallPoolExecutor($al.model.onMovementFileRetrieved); + const rc = $al.model._restCalls; + + executor.add("request", rc.getRequest, { requestId: $requestId }); + executor.add("stateMachineHistory", rc.getStateHistory, { requestId: $requestId }); + executor.add("appParameters", rc.appParameters, null, { paramType: "SUMMA" }); + executor.add("movementFile", rc.movementFile, { fileId: $movementFileId }); + executor.add("summaFundSource", rc.summaFundSource); + executor.add("emptyAllowancePayment", rc.getEmptyAllowancePayment, { requestId: $requestId }); + executor.add("allAllowancePaymentsForRequest", rc.getAllAllowancePaymentsForRequest, { requestId: $requestId }); + executor.add("allOrderResponses", rc.getAllOrderResponses, { requestId: $requestId }); + executor.add("exchangeRates", rc.exchangeRates, null, null); + + executor.run(); + } + + onMovementFileRetrieved(data) { + const model = $al.model; + + model.request = data.get("request").data; + model.movementFile = data.get("movementFile").data; + model.stateMachineHistory = data.get("stateMachineHistory").data; + model.appParameters = new Map(data.get("appParameters").data.map(i => [i.key, i.value])); + model.summaFundSources = data.get("summaFundSource").data; + model.newAllowancePayment = data.get("emptyAllowancePayment").data; + model.newAllowancePayment.header.pay_method = "P"; + model.newAllowancePayment.header.delegation_code = model.appParameters.get("RESPONSIBLE_ORGANISATION_NAME_BS4"); + model.newAllowancePayment.header.beneficiary_del_cd = model.appParameters.get("RESPONSIBLE_ORGANISATION_NAME_BS4"); + model.allAllowancePaymentsForRequest = data.get("allAllowancePaymentsForRequest").data; + model.allOrderResponses = data.get("allOrderResponses").data; + model.exchangeRates = data.get("exchangeRates").data; + + $al.view.configRequestForPayment(); + + if (typeof model.movementFile.budgetLine === "undefined") { + $a.toast.showWarning($al.controller._languageBundle.alerts.no_budget_line_found); + } + + const executor = new $a.RestCallPoolExecutor($al.model.onPermissionsAndAbacInfoRetrieved); + const rc = model._restCalls; + + executor.add("delegationCodes", rc.getDelegationCodes, null, { + exerciseId: model.appParameters.get("EXERCISE_YEAR") + }); + executor.add("permissions", rc.permissions, null, { + movementFileId: model.movementFile.id + }); + executor.add("budgetLineSubposts", rc.getBudgetLineSubposts, null, { + budgetPositionErights: model.movementFile.budgetLine + }); + + if ($requestType !== "TopUpRequest" && model.request.parentId) { + executor.add("advanceRequest", rc.getAdvanceRequest, { requestId: model.request.parentId }); + } + + executor.run(); + } + + onPermissionsAndAbacInfoRetrieved(data) { + const model = $al.model; + + model.permissions = data.get("permissions").data; + model.delegationCodes = data.get("delegationCodes").data; + + model.budgetLineSubposts = data.get("budgetLineSubposts").data.map(item => ({ + ...item, + budgetPositionBudgdel: `${item.budgetPositionBudgdel}`, + subpostCode: `${item.subpostCode}`, + commitmentLevel4: item.commitmentLvl4 + ? item.commitmentLvl4.split(",")[0].trim() + : null, + })); + + if (data.get("advanceRequest")) { + model.advanceRequest = data.get("advanceRequest").data; + } + + if (model.budgetLineSubposts && model.budgetLineSubposts.length > 0) { + model._restCalls.getBudgetLines.execute(null, { + budgetPosition: model.budgetLineSubposts[0].budgetPositionBudgdel, + exerciseId: model.appParameters.get("EXERCISE_YEAR"), + delegation: model.appParameters.get("RESPONSIBLE_ORGANISATION_NAME_BS4") + }, model.onBudgetLinesRetrieved); + } else { + $al.view._showWarnDialog("Missing data", [ + "Unexpected problem: No Commitment Position Subposts available for Commitment Position: " + model.movementFile.budgetLine + ]); + } + + model.createDistinctCommitmentLvl4(); + model.createDistinctBusinessPeriodYear(); + model.applyDefaultBusinessPeriodYear(); + model.createDistinctEarmarkedFunds(); + } + + createDistinctCommitmentLvl4() { + $al.model.distinctCommitmentLvl4 = extractDistinctValues( + $al.model.budgetLineSubposts, "commitmentLvl4", "," + ); + } + + createDistinctEarmarkedFunds() { + const seen = Object.create(null); + const funds = []; + let firstDefault = null; + + ($al.model.budgetLineSubposts || []).forEach(item => { + if (!item.earmarkedFund) return; + + const fund = item.earmarkedFund; + if (!seen[fund]) { + seen[fund] = true; + funds.push(fund); + } + if (firstDefault === null && item.defaultEarmarkedFund === true) { + firstDefault = fund; + } + }); + + if (!$al.model.distinctEarmarkedFunds) { + $al.model.distinctEarmarkedFunds = {}; + } + + $al.model.distinctEarmarkedFunds.values = funds.map(v => ({ text: v, value: v })); + $al.model.distinctEarmarkedFunds.defaultValue = firstDefault; + $al.model.distinctEarmarkedFunds.selectedValue = firstDefault; + } + + createDistinctBusinessPeriodYear() { + const years = extractDistinctValues( + $al.model.budgetLineSubposts, "budgetPeriods", "," + ); + years.sort((a, b) => Number(a.value) - Number(b.value)); + + if (!$al.model.distinctbudgetPeriods) { + $al.model.distinctbudgetPeriods = {}; + } + $al.model.distinctbudgetPeriods.values = years; + } + + setBudgetPeriodValue(earmarkedFund) { + let selectedBudgetPeriod = null; + + for (const line of $al.model.budgetLineSubposts) { + if (line.earmarkedFund == earmarkedFund && line.budgetPeriods) { + selectedBudgetPeriod = line.budgetPeriods + .split(",").map(v => v.trim()).find(v => v.length > 0) || null; + break; + } + } + + const ddl = $("#budget_period").data("kendoDropDownList"); + if (!ddl || selectedBudgetPeriod === null) return; + + ddl.value(String(selectedBudgetPeriod)); + ddl.trigger("change"); + $al.model._viewModel.abacInfo.budgetPeriod = selectedBudgetPeriod; + } + + applyDefaultBusinessPeriodYear() { + let defaultYear = null; + + ($al.model.budgetLineSubposts || []).some(item => { + if (item.defaultEarmarkedFund === true && item.budgetPeriods) { + defaultYear = item.budgetPeriods + .split(",").map(v => v.trim()).find(v => v.length > 0) || null; + return defaultYear !== null; + } + return false; + }); + + if (!defaultYear || !$al.model.distinctbudgetPeriods) return; + + $al.model.distinctbudgetPeriods.defaultValue = defaultYear; + $al.model.distinctbudgetPeriods.selectedValue = defaultYear; + } + + applyFundSourceByEarmarkedFund(earmarkedFund) { + const model = $al.model; + if (!earmarkedFund || !model.budgetLineSubposts || + !model.summaFundSources || model.summaFundSources.length === 0) { + return; + } + + let selectedFundSource = null; + + for (const line of model.budgetLineSubposts) { + if (line.earmarkedFund === earmarkedFund && line.summaFundSourceId) { + const found = model.summaFundSources.find(fs => fs.id === line.summaFundSourceId); + if (found) { + selectedFundSource = found; + break; + } + } + } + + if (!selectedFundSource) return; + + $al.view._setFundSourceGroup(selectedFundSource); + + const ddl = $("#summaFundSourceDropdown").data("kendoDropDownList"); + if (ddl) { + ddl.value(selectedFundSource.id); + ddl.trigger("change"); + } + + $al.view._bindView(); + } + + onBudgetLinesRetrieved(data) { + $al.model.budgetLines = data; + $al.view._initializeView(); + $al.view.render(); + + const defaultSubpost = $al.model.getDefaultBudgetLineSubpost(); + + if (defaultSubpost && $al.model.summaFundSources && $al.model.summaFundSources.length > 0) { + $al.view._applyDefaultFundSourceAndBudgetPeriod(defaultSubpost); + } + + $al.view._bindView(); + } + + getDefaultBudgetLineSubpost() { + if (!$al.model.budgetLineSubposts) return null; + + return $al.model.budgetLineSubposts.find(s => s.defaultEarmarkedFund === true) || null; + } +} + +// â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• +// VIEW +// â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• + +class AbacDetailsView { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.view(); + }); + + this._templates = new $a.DataContainer("abac-details"); + this._elements = new $a.DataContainer("abac-details"); + + this._initTemplates(); + this._initElements(); + } + + _initTemplates() { + this._templates.data(new $a.KendoTemplateData()); + this._templates.node("basic").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("warn").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("selection_abac_info").data(new $a.KendoTemplateData()); + this._templates.node("mark_as_paid").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("subposts").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("paid").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("ok_cancel_send_to_p2p").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("pay_ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("analytical_code_ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("total_amounts").node("grid").data(new $a.KendoTemplateData()); + } + + _initElements() { + const simpleNodes = [ + "analytical_code", "workflow_organization", "delegation_codes", + "add_subposts_dropdown", "delegations_dropdown", "currencyPersonalDropDownList", + "selection_abac_info", "payment_date", "payment_order", "payment_directive", + "payment_request", "gross_amount", "iso_code", "payment_date_div", + "payment_order_div", "payment_directive_div", "payment_request_div", + "gross_amount_div", "communication" + ]; + + simpleNodes.forEach(name => { + this._elements.node(name).data(new $a.KendoElementData()); + }); + + this._elements.node("subposts").node("grid").data(new $a.KendoElementData()); + this._elements.node("total_amounts").node("grid").data(new $a.KendoElementData()); + } + + render() { + this._templates.data.compile(); + this._templates.selection_abac_info.data.compile(); + this._templates.subposts.grid.data.compile(); + this._templates.total_amounts.grid.data.compile(); + + this._renderSubPostsGrid(); + this._renderTotalAmountsGrid(); + this._renderAddSubpostsDropDown(); + this._renderDelegationsDropDown(); + this._currencyDropDownEditor(); + + $al.controller._renderCommunication(); + } + + renderEmptyTemplate() { + this._templates.data.compile(); + } + + // ─── Total Amounts Grid Rendering ──────────────────────────────────────── + + _renderTotalAmountsGrid() { + const renderers = { + ClearingRequest: () => this._renderTotalAmountsGridClearingRequest(), + TudRequest: () => this._renderTotalAmountsGridTudRequest(), + AdvanceRequest: () => this._renderTotalAmountsGridAdvOrTotalRem(true), + TotalRemRequest: () => this._renderTotalAmountsGridAdvOrTotalRem(false), + TopUpRequest: () => this._renderTotalAmountsGridTopUpRequest(), + }; + + const renderer = renderers[$al.model.request.requestType]; + if (renderer) renderer(); + } + + _renderTotalAmountsGridTudRequest() { + const request = $al.model.request; + const flatRate = request.flatRate.amount; + const dependentFlatRate = request.hasOwnProperty("flatRateFamily") + ? request.flatRateFamily.amount + : null; + + let numberRelatives = 0; + if (request.requestPersons) { + numberRelatives = request.requestPersons.filter(person => { + if (!person.declared) return false; + if (person.claim) { + return (typeof person.claimApproved === "undefined") || person.claimApproved; + } + return true; + }).length; + } + + const dsData = dependentFlatRate == null + ? [{ rateType: "Flat Rate", rate: flatRate, numberOfPeople: 1 + numberRelatives }] + : [ + { rateType: "Flat Rate", rate: flatRate, numberOfPeople: 1 }, + { rateType: "Dependent Flat Rate", rate: dependentFlatRate, numberOfPeople: numberRelatives } + ]; + + const columns = [ + { + field: "rateType", title: " ", width: "25%", + attributes: { class: "px-0 font-weight-medium" }, + headerAttributes: { class: "pl-0" }, + template: "#= rateType #" + }, + { + field: "rate", title: "Rate", width: "25%", + template: "#= kendo.toString(rate, 'n2') # EUR", + attributes: { class: "text-right" }, + headerAttributes: { class: HEADER_CSS } + }, + { + field: "numberOfPeople", title: "Entitled People", width: "25%", + template: "#= numberOfPeople #", + attributes: { class: "text-right" }, + headerAttributes: { class: HEADER_CSS } + }, + { + field: "amount", title: "Amount", width: "25%", + template: "#= kendo.toString(numberOfPeople * rate, 'n2') # EUR", + attributes: { class: "text-right" }, + headerAttributes: { class: HEADER_CSS } + } + ]; + + this._buildTotalAmountsGrid(dsData, columns); + } + + _renderTotalAmountsGridAdvOrTotalRem(isAdvance) { + const request = $al.model.request; + const dsData = [ + { detailType: $detailType.PERSONAL, amount: request.sumOfSectionsTotalPersonal }, + { detailType: $detailType.VEHICLE, amount: request.sumOfSectionsTotalVehicle }, + { detailType: $detailType.STORAGE, amount: request.sumOfSectionsTotalStorage } + ]; + + if (!isAdvance) { + dsData.push({ detailType: $detailType.UNFORESEEN, amount: request.sumOfSectionsUnforeseenAmount }); + } + + this._buildTotalAmountsGrid(dsData, this._detailTypeAmountColumns()); + } + + _renderTotalAmountsGridTopUpRequest() { + const dsData = [{ detailType: $detailType.TOPUP, amount: $al.model.request.totalAmount.amount }]; + + const columns = [ + { + field: "detailType", title: " ", width: "50%", + attributes: { class: "px-0 font-weight-medium" }, + headerAttributes: { class: "pl-0" }, + template: "Top Up" + }, + { + field: "amount", title: "Total Amount", width: "50%", + template: "#= kendo.toString(amount, 'n2') # EUR", + attributes: { class: "text-right" }, + headerAttributes: { class: HEADER_CSS } + } + ]; + + this._buildTotalAmountsGrid(dsData, columns); + } + + _renderTotalAmountsGridClearingRequest() { + const request = $al.model.request; + const advance = $al.model.advanceRequest; + + const advanceExists = request.requestType === "ClearingRequest" && + !(typeof advance.sumOfSectionsTotalPersonal === "undefined" && + typeof advance.sumOfSectionsTotalVehicle === "undefined" && + typeof advance.sumOfSectionsTotalStorage === "undefined" && + typeof advance.sumOfSectionsUnforeseenAmount === "undefined"); + + const dsData = [ + { detailType: $detailType.PERSONAL, amount: request.sumOfSectionsTotalPersonal, advanceSubtotal: advanceExists ? advance.sumOfSectionsTotalPersonal : null }, + { detailType: $detailType.VEHICLE, amount: request.sumOfSectionsTotalVehicle, advanceSubtotal: advanceExists ? advance.sumOfSectionsTotalVehicle : null }, + { detailType: $detailType.STORAGE, amount: request.sumOfSectionsTotalStorage, advanceSubtotal: advanceExists ? advance.sumOfSectionsTotalStorage : null }, + { detailType: $detailType.UNFORESEEN, amount: request.sumOfSectionsUnforeseenAmount, advanceSubtotal: advanceExists ? advance.sumOfSectionsUnforeseenAmount : null } + ]; + + const columns = [ + { + field: "detailType", title: " ", + attributes: { class: "px-0 font-weight-medium" }, + headerAttributes: { class: "pl-0" }, + template: $al.view._getDetailType, + width: advanceExists ? "50%" : "65%" + }, + { + field: "advanceSubtotal", title: "Advance paid", + template: "#= kendo.toString(advanceSubtotal, 'n2')# EUR", + attributes: { class: "text-right" }, + headerAttributes: { class: HEADER_CSS }, + width: "25%", + hidden: !advanceExists + }, + { + field: "amount", title: "Amount", + template: "#= kendo.toString(amount, 'n2') # EUR", + attributes: { class: "text-right" }, + headerAttributes: { class: HEADER_CSS }, + width: advanceExists ? "25%" : "35%" + } + ]; + + this._buildTotalAmountsGrid(dsData, columns); + } + + _detailTypeAmountColumns() { + return [ + { + field: "detailType", title: " ", width: "50%", + attributes: { class: "px-0 font-weight-medium" }, + headerAttributes: { class: "pl-0" }, + template: $al.view._getDetailType + }, + { + field: "amount", title: "Amount", width: "50%", + template: "#= kendo.toString(amount, 'n2') # EUR", + attributes: { class: "text-right" }, + headerAttributes: { class: HEADER_CSS } + } + ]; + } + + _buildTotalAmountsGrid(dsData, columns) { + const dataSource = new kendo.data.DataSource({ dataType: "json", data: dsData }); + + buildKendoGrid($al.view._elements.total_amounts.grid.data.element, dataSource, columns, { + detailExpand: function () { } + }); + + $al.view._elements.total_amounts.grid.data.component = "kendoGrid"; + } + + // ─── Total Amount Summary ──────────────────────────────────────────────── + + _renderTotalAmount(requestType) { + const wrapper = $(".summaryWrapper"); + const request = $al.model.request; + + const formatAmount = (val) => kendo.toString(parseFloat(val), "n2"); + const amountHtml = (val) => + "
" + val + " EUR
"; + + switch (requestType) { + case "ClearingRequest": { + const advance = $al.model.advanceRequest; + wrapper.find("#totalDeclaredAmount").html(amountHtml(formatAmount(request.totalAmount.amount + advance.totalAmount.amount))); + wrapper.find("#advancePaid").html(amountHtml("- " + formatAmount(advance.totalAmount.amount))); + wrapper.find("#clearingResult").html(amountHtml(formatAmount(request.totalAmount.amount))); + break; + } + case "AdvanceRequest": { + const declared = formatAmount( + parseFloat(request.sumOfSectionsTotalPersonal) + + parseFloat(request.sumOfSectionsTotalVehicle) + + parseFloat(request.sumOfSectionsTotalStorage) + + parseFloat(request.sumOfSectionsUnforeseenAmount) + ); + wrapper.find("#totalDeclaredAmount").html(amountHtml(declared)); + wrapper.find("#requestAmount").html(amountHtml(formatAmount(request.totalAmount.amount))); + break; + } + case "TopUpRequest": + case "TudRequest": + case "TotalRemRequest": + wrapper.find("#requestAmount").html(amountHtml(formatAmount(request.totalAmount.amount))); + break; + } + } + + // ─── View Initialization ───────────────────────────────────────────────── + + _initializeView() { + const viewModel = new kendo.data.Model.define(); + $al.model.request = $al.controller.requestCommon.prepareRequestForModelView(); + + const model = $al.model; + const request = model.request; + + $al.model._viewModel = new viewModel({ + isVisible: true, + message: " ", + name: model.movementFile.jobHolder.lastName + " " + model.movementFile.jobHolder.firstName, + perId: model.movementFile.jobHolder.perId, + request: request, + payData: { foo: "fooValue" }, + appParameters: model.appParameters, + movementFile: model.movementFile, + delegationCodes: model.delegationCodes, + budgetLines: model.budgetLines, + summaFundSources: model.summaFundSources, + newAllowancePayment: model.newAllowancePayment, + abacInfo: { + workflow: "P", + localDelegationCode: "EEAS", + responsibleOrganization: model.appParameters.get("RESPONSIBLE_ORGANISATION_NAME_BS4"), + analyticalCode: "", + requestId: $requestId, + removalClearingAmount: request.totalAmount.amount, + exerciseId: model.appParameters.get("EXERCISE_YEAR") + }, + personAbacInfo: model.personAbacInfo, + budgetLineSubposts: model.budgetLineSubposts, + onSelectWorkFlow: () => $al.view._onSelectWorkFlow(), + formatCurrency: (value) => kendo.toString(value, "n2"), + onUpdateAndApproveRequest: () => $al.controller.doUpdateAndApproveRequest(), + onRejectRequest: () => $al.controller.doUpdateAndRejectRequest(), + showMarkAsPaidDialog: () => $al.controller.doShowMarkAsPaidDialog(), + goSendToSumma: () => $al.controller.doGoSendToSumma(), + onDiscardChanges: () => $al.controller.refreshPage(), + setCommitmentAndBudget: (e) => $al.view._setCommitmentAndBudget(e.dataItem), + setFundSourceGroup: (e) => $al.view._setFundSourceGroup(e.dataItem), + setBudgetPeriod: (e) => $al.view._setBudgetPeriod(e.dataItem), + onBudgetPeriodChange: (e) => $al.view._setBudgetPeriod(e.dataItem), + setEarMarkedFund: (e) => $al.view._setEarMarkedFund(e.dataItem), + displayClaimApproveRejectButtons: false, + canApprove: false, + canReject: false, + canMarkAsPaid: false, + canPayAbac: false, + showPaymentInfo: false, + showPaymentAbacInfoLink: false, + showDelegationCodes: false, + showLinkToAdvRequest: request.requestType === "ClearingRequest" && + typeof $al.model.advanceRequest.sumOfSectionsTotalPersonal === "undefined", + errorMessage: null, + canEditAnalyticalCode: false, + isLocalWorkflowEnabled: function () { + const disableLocal = model.appParameters.get("DISABLE_LOCAL_PAYMENT"); + return !(typeof disableLocal === "string" && disableLocal === "Y"); + }, + distinctbudgetPeriods: model.distinctbudgetPeriods, + distinctEarmarkedFunds: model.distinctEarmarkedFunds + }); + + this._formatIbanCode(); + this._ensurePersonBankInfo(); + this._applyStatePermissions(); + + $al.controller.getPersonCriteriaCode(); + $al.controller._permissionForMarkAsPaid(); + } + + _formatIbanCode() { + const vm = $al.model._viewModel; + if (!$a.utils.isNull(vm.request.personBankInfo) && + !$a.utils.isNull(vm.request.personBankInfo.ibanCode) && + vm.request.personBankInfo.ibanCode.length > 0) { + vm.request.personBankInfo.ibanCode = + vm.request.personBankInfo.ibanCode.replace(/\W/gi, "").replace(/(.{4})/g, "$1 "); + } + } + + _ensurePersonBankInfo() { + if ($a.utils.isNull($al.model.request.personBankInfo)) { + $al.model.request.personBankInfo = { baf: "", ibanCode: "" }; + } + } + + _applyStatePermissions() { + const vm = $al.model._viewModel; + const request = $al.model.request; + const permissions = $al.model.permissions; + const isTud = request.requestType === "TudRequest"; + + if (vm.request.state === "APPROVED") { + vm.canPayAbac = isTud ? permissions.canPayTudRequestAbac : permissions.canPayRemRequestAbac; + } else if (vm.request.state === "PAID") { + vm.canPayAbac = false; + vm.canResubmit = isTud ? permissions.canResubmitTudRequest : permissions.canResubmitRemRequest; + } + + if (vm.request.state === "PAID" || vm.request.state === "CLO100" || + (vm.request.abacRequestState === "MANUAL_PAYMENT_SUMMA" && vm.request.paymentDirectiveReference != null)) { + vm.showPaymentInfo = true; + vm.requestPaymentDateFormatted = kendo.toString(kendo.parseDate(request.paymentDate), "MMM dd, yyyy"); + } + } + + configRequestForPayment() { + const config = REQUEST_TYPE_CONFIG[$al.model.request.requestType]; + if (config && config.titleKey) { + $al.model.request.titleForFrontEnd = $al.controller._languageBundle.full_title[config.titleKey]; + } else { + $al.model.request.titleForFrontEnd = "Unexpected Request Type: " + $al.model.request.requestType; + } + } + + // ─── Default Fund Source & Budget Period Application ───────────────────── + + _applyDefaultFundSourceAndBudgetPeriod(defaultSubpost) { + const model = $al.model; + + const selectedFundSource = model.summaFundSources.find(fs => + fs.id === defaultSubpost.summaFundSourceId + ) || model.summaFundSources[0]; + + $al.view._setFundSourceGroup(selectedFundSource); + + const fundSourceDdl = $("#summaFundSourceDropdown").data("kendoDropDownList"); + if (fundSourceDdl) { + fundSourceDdl.value(selectedFundSource.id); + fundSourceDdl.trigger("change"); + } + + if (defaultSubpost.budgetPeriods) { + const budgetPeriod = defaultSubpost.budgetPeriods + .split(",").map(v => v.trim()).find(v => v.length > 0); + + if (budgetPeriod) { + $al.view._setBudgetPeriod({ value: budgetPeriod }); + + const periodDdl = $("#budget_period").data("kendoDropDownList"); + if (periodDdl) { + periodDdl.value(String(budgetPeriod)); + periodDdl.trigger("change"); + } + } + } + } + + // ─── Earmarked Fund Filtering ──────────────────────────────────────────── + + earmarkedFundFilter(a, earMarkedFund) { + if (earMarkedFund === true) { + return a.defaultEarmarkedFund === true; + } + + if (earMarkedFund !== undefined && earMarkedFund !== null) { + const normalized = Number(earMarkedFund); + if (!Number.isNaN(normalized)) { + return Number(a.earmarkedFund) === normalized; + } + } + + return true; + } + + earmarkedFundFilter(a, earMarkedFund) { + + // Special case: default earmarked fund + if (earMarkedFund === true || earMarkedFund == null) { + return a.defaultEarmarkedFund === true; + } + + // Always compare as string + return String(a.earmarkedFund) === String(earMarkedFund); + } + + getSubpostsByEarMarkedFund(earMarkedFund) { + const grid = this._elements.subposts.grid.data.element.data("kendoGrid"); + if (!grid) return; + + const data = this.getSubpostsData(earMarkedFund) || []; + const newData = data.map(item => ({ ...item })); + + grid.dataSource.data([]); + grid.dataSource.data(newData); + grid.refresh(); + } + + getSubpostsDefaultData() { + return this.getSubpostsData(true); + } + + getSubpostsData(earMarkedFund) { + const calculators = { + ClearingRequest: () => $al.controller.calculateSubPostsForRemClrRequest(earMarkedFund), + AdvanceRequest: () => $al.controller.calculateSubPostsForAdvOrTotRequest(true, earMarkedFund), + TotalRemRequest: () => $al.controller.calculateSubPostsForAdvOrTotRequest(false, earMarkedFund), + TudRequest: () => $al.controller.calculateSubPostsForRemTudRequest(earMarkedFund), + TopUpRequest: () => $al.controller.calculateSubPostsForTopUpRequest(earMarkedFund), + }; + + const calculator = calculators[$requestType]; + return calculator ? calculator() : []; + } + + // ─── Subposts Grid ─────────────────────────────────────────────────────── + + _renderSubPostsGrid() { + const dataSource = new kendo.data.DataSource({ + autoSync: false, + data: this.getSubpostsDefaultData(), + dataType: "json", + schema: { + model: { + id: "id", + fields: { + id: { type: "number" }, + requestSubpostsId: { type: "number" }, + requestId: { type: "number" }, + budgetLinesSubpostsMappingId: { type: "number" }, + budgetPositionBudgdel: { type: "string", editable: true }, + commitmentLevel4: { type: "string", editable: true }, + subpostCode: { type: "string", editable: true }, + subpostDescription: { editable: true, type: "string" }, + subpostType: { editable: true, type: "string" }, + amount: { + amount: { type: "number", validation: { required: true, min: 0 } }, + currency: { type: "string" } + }, + }, + } + }, + aggregate: [{ field: "amount.amount", aggregate: "sum" }] + }); + + const columns = this._buildSubpostsColumns(); + + $al.view._elements.subposts.grid.data.element.kendoGrid({ + dataSource: dataSource, + noRecords: { + template: "" + }, + scrollable: false, + sortable: false, + resizable: false, + columns: columns, + editable: "inline", + dataBound: $al.view._onDataBound, + edit: function () { + this.showColumn("budgetPositionBudgdel"); + this.showColumn("commitmentLevel4"); + this.showColumn("subpostCode"); + this.hideColumn("fullBudgetPosition"); + }, + save: function (e) { + this.hideColumn("budgetPositionBudgdel"); + this.hideColumn("commitmentLevel4"); + this.hideColumn("subpostCode"); + this.showColumn("fullBudgetPosition"); + $al.controller._onSave(e); + }, + cancel: function () { + this.hideColumn("budgetPositionBudgdel"); + this.hideColumn("commitmentLevel4"); + this.hideColumn("subpostCode"); + this.showColumn("fullBudgetPosition"); + } + }); + + $al.view._elements.subposts.grid.data.component = "kendoGrid"; + + this._buildAllowancePaymentDetails(); + $("textarea.autoSize").autosize(); + } + + _buildSubpostsColumns() { + const lang = $al.controller._languageBundle; + return [ + { hidden: true, field: "id" }, + { + field: "fullBudgetPosition", title: "Budget Position", width: "35%", editable: false, + template: function (dataItem) { + return [dataItem.budgetPositionBudgdel, dataItem.commitmentLevel4, dataItem.subpostCode] + .filter(Boolean).join("."); + } + }, + { + field: "budgetPositionBudgdel", title: "Budget Line", width: "15%", hidden: true, + attributes: { class: "px-0 font-weight-medium" }, + headerAttributes: { class: "pl-0" } + }, + { + field: "commitmentLevel4", title: "ExCat", width: "10%", hidden: true, + editor: $al.view.commitmentLevel4Editor, + template: "#= commitmentLevel4 ? commitmentLevel4 : '' #" + }, + { + field: "subpostCode", title: "Code(Subpost)", width: "10%", hidden: true, + attributes: { class: "px-0 font-weight-medium" }, + headerAttributes: { class: "pl-0" } + }, + { + field: "subpostDescription", title: lang.subpost.description, width: "70%", + footerTemplate: "
Total Amount:
" + }, + { + field: "amount.amount", title: lang.subpost.amount, width: "15%", + attributes: { class: HEADER_CSS }, + headerAttributes: { class: HEADER_CSS }, + template: "#= kendo.toString(amount.amount, 'n2') # EUR", + editor: $al.view.invoiceAmountEditor, + format: "{0:n2}", + aggregates: ["sum"], + footerTemplate: $al.view.subpostsFooterTemplate + }, + { + command: [ + { + name: "edit", + template: "edit", + text: { edit: "", update: "", cancel: "" } + }, + { + name: "destroy", + template: "" + + "close", + text: "" + } + ], + width: "100px", + attributes: { class: "pr-0 pr-xxl-2 text-right text-nowrap" }, + headerAttributes: { class: "col-command" } + } + ]; + } + + _onDataBound() { + $al.view._bindView(); + $('[data-toggle="popover"]').popover({ trigger: "hover" }); + } + + _onChangeSelectWorkflowDelegation(e) { + const dataItem = e.sender.dataItem(e.sender.selectedIndex); + $al.model._viewModel.newAllowancePayment.header.beneficiary_del_cd = dataItem.orgCode; + $al.view._refreshSummaBudgetLine(); + } + + // ─── Currency Dropdown ─────────────────────────────────────────────────── + + _currencyDropDownEditor() { + const ddl = this._elements.currencyPersonalDropDownList.data.element + .kendoDropDownList({ + filter: "startswith", + dataTextField: "currency", + dataValueField: "currency", + dataSource: $al.model.exchangeRates, + autoWidth: true, + autoBind: true, + change: $al.view.onChangeCurrency + }) + .data("kendoDropDownList"); + + ddl.value("EUR"); + ddl.trigger("change"); + return ddl; + } + + onChangeCurrency(e) { + const selected = e.sender.dataItem(e.sender.select()); + if (!selected) return; + + const originalAmount = $al.model.request.totalAmount.amount; + const rate = selected.exchangeRate; + const decimals = selected.decimals; + + const convertedRounded = decimals + ? Math.round(originalAmount * rate * 100) / 100 + : Math.round(originalAmount * rate); + + $al.model._viewModel.request.totalAmountInSelectedCurrency = { + currency: selected.currency, + amount: convertedRounded, + amountFormatted: kendo.toString(convertedRounded, decimals ? "n2" : "n0"), + exchangeRate: rate, + decimals: decimals + }; + + $al.view._bindView(); + } + + _setCurrencyToEUR() { + const ddl = this._elements.currencyPersonalDropDownList.data.element.data("kendoDropDownList"); + if (!ddl) return; + + ddl.value("EUR"); + ddl.trigger("change"); + } + + // ─── Delegations Dropdown ──────────────────────────────────────────────── + + _renderDelegationsDropDown() { + return this._elements.delegations_dropdown.data.element.kendoDropDownList({ + dataSource: $al.model.delegationCodes, + dataTextField: "name", + dataValueField: "orgCode", + valuePrimitive: true, + filter: "contains", + autoWidth: true, + optionLabel: { code: "", name: "Select Delegation" }, + template: "#: data.orgCode # - #: data.name #", + valueTemplate: "#: data.orgCode # - #: data.name #", + value: $al.model._viewModel.abacInfo.localDelegationCode, + change: $al.view._onChangeSelectWorkflowDelegation, + filtering: function (ev) { + const filterValue = ev.filter != undefined ? ev.filter.value : ""; + ev.preventDefault(); + this.dataSource.filter({ + logic: "or", + filters: [ + { field: "orgCode", operator: "contains", value: filterValue }, + { field: "name", operator: "contains", value: filterValue } + ] + }); + } + }); + } + + // ─── Add Subposts Dropdown ─────────────────────────────────────────────── + + _renderAddSubpostsDropDown() { + const grid = this._elements.subposts.grid.data.element.data("kendoGrid"); + + this._elements.add_subposts_dropdown.data.element.kendoDropDownList({ + dataSource: $al.model.budgetLineSubposts, + dataTextField: "subpostCode", + dataValueField: "subpostCode", + optionLabel: "ADD INVOICE", + enable: true, + filter: "contains", + optionLabelTemplate: "ADD SUBPOST", + open: function () { + $al.view._elements.add_subposts_dropdown.data.element + .getKendoDropDownList().list.find(".k-list-optionlabel").hide(); + }, + autoWidth: true, + change: function () { + const typeOfRemoval = this.value(); + const subPostSelected = $al.model.budgetLineSubposts.find(d => d.subpostCode === typeOfRemoval); + if (!subPostSelected) return; + + const dataSource = grid.dataSource; + subPostSelected.amount = { amount: 0, currency: "EUR" }; + const newItem = dataSource.insert(100, subPostSelected); + const newRow = grid.items().filter("[data-uid='" + newItem.uid + "']"); + grid.editRow(newRow); + + $al.view._elements.add_subposts_dropdown.data.element.data("kendoDropDownList").value(0); + } + }); + } + + // ─── Workflow Selection ────────────────────────────────────────────────── + + _onSelectWorkFlow() { + const selectedContext = $("input[name='workflow']:checked").val(); + const vm = $al.model._viewModel; + const appParams = $al.model.appParameters; + + vm.abacInfo.workflow = selectedContext; + $al.model.newAllowancePayment.header.delegation_code = appParams.get("RESPONSIBLE_ORGANISATION_NAME_BS4"); + $al.model.newAllowancePayment.header.beneficiary_del_cd = appParams.get("RESPONSIBLE_ORGANISATION_NAME_BS4");; + + if (selectedContext === "D") { + vm.showDelegationCodes = true; + $al.model.newAllowancePayment.header.pay_method = "D"; + vm.abacInfo.summa_budget_line = ""; + } else { + vm.showDelegationCodes = false; + $al.model.newAllowancePayment.header.pay_method = "P"; + vm.abacInfo.summa_budget_line = appParams.get("RESPONSIBLE_ORGANISATION_NAME_BS4"); + vm.abacInfo.responsibleOrganization = appParams.get("RESPONSIBLE_ORGANISATION_NAME_BS4"); + } + const ddl = this._elements.delegations_dropdown.data.element.data("kendoDropDownList"); + ddl.select(0); + ddl.trigger("change"); + this._setCurrencyToEUR(); + + $al.view._refreshSummaBudgetLine(); + } + + // ─── Detail Type Rendering ─────────────────────────────────────────────── + + _getDetailType(item) { + const iconTpl = item.detailType.icon != null + ? "" + item.detailType.icon + "" + : ""; + + return "" + iconTpl + item.detailType.label + ""; + } + + _getFormattedDate(dateStr) { + return formatDate(dateStr); + } + + _getformattedTime = (dateStr) => formatTime(dateStr); + + // ─── Fund Source, Budget Period, Earmarked Fund ────────────────────────── + + _setFundSourceGroup(e) { + $al.model._viewModel.abacInfo.fundSourceGroup = e.summaCode; + $al.model._viewModel.abacInfo.budgetRegime = e.budgetRegime; + $al.view._refreshSummaBudgetLine(); + } + + _setBudgetPeriod(e) { + $al.model._viewModel.abacInfo.budgetPeriod = e.value; + } + + _setEarMarkedFund(e) { + $al.model.applyFundSourceByEarmarkedFund(e.value); + $al.view.getSubpostsByEarMarkedFund(e.value); + $al.model.setBudgetPeriodValue(e.value); + } + + // ─── Summa Budget Line Refresh ─────────────────────────────────────────── + + _refreshSummaBudgetLine() { + const grid = this._elements.subposts.grid.data.element.data("kendoGrid"); + $al.model._viewModel.abacInfo.requestSubpostList = grid.dataSource.data().slice(); + + this._buildAllowancePaymentDetails(); + + $al.model._viewModel.abacInfo.summa_budget_line = + $al.model.newAllowancePayment.header.delegation_code; + + $al.view._bindView(); + } + + // ─── Allowance Payment Details Builder ─────────────────────────────────── + + _buildAllowancePaymentDetails() { + const allowancePayment = $al.model.newAllowancePayment; + const request = $al.model.request; + + allowancePayment.perId = request.staffMember.id; + + // Header + const header = allowancePayment.header || {}; + header.request_id = request.id; + header.client_id = 2; + header.request_sender_oia = ""; + header.request_sender_ova = ""; + header.request_title = this.getRequestTitle(); + allowancePayment.header = header; + + // Details + const sourceList = $al.model._viewModel.abacInfo.requestSubpostList || []; + const personBankInfo = request.personBankInfo; + const bankIdPadded = String(personBankInfo.bankIdentification).padStart(4, "0"); + const selectedCurrency = $al.model._viewModel.request.totalAmountInSelectedCurrency; + + allowancePayment.details = sourceList.map((item, index) => { + let currencyCode = item.amount.currency; + let netAmount = item.amount.amount; + + if (selectedCurrency && item.amount.currency !== selectedCurrency.currency) { + + const convertedAmount = item.amount.amount * selectedCurrency.exchangeRate; + + if (selectedCurrency.decimals) { + // keep 2 decimals + netAmount = Math.round(convertedAmount * 100) / 100; + } else { + // remove decimals completely + netAmount = Math.round(convertedAmount); + } + + currencyCode = selectedCurrency.currency; + } + + return { + bank_account: personBankInfo.businessPartner + "-" + bankIdPadded, + bp_id: personBankInfo.businessPartner, + budget_line: $al.model._viewModel.abacInfo.budgetRegime + + item.budgetPositionBudgdel + "." + item.commitmentLevel4 + "." + item.subpostCode, + quantity: 1, + request_detail_id: index + 1, + request_detail_title: item.subpostDescription + ? item.subpostDescription.slice(0, 49) + : "", + currency_code: currencyCode, + net_amount_lcy: netAmount, + email_notif: "", + gl_account: $al.model.appParameters.get("GL_ACCOUNT"), + fund_source_det: $al.model._viewModel.abacInfo.fundSourceGroup, + budget_period: $al.model._viewModel.abacInfo.budgetPeriod, + }; + }); + + $al.model._viewModel.newAllowancePayment = allowancePayment; + } + + getRequestTitle() { + const movementFile = $al.model.movementFile; + const countryFrom = this.replaceCountryCode(movementFile.countryFrom.code); + const countryTo = this.replaceCountryCode(movementFile.countryTo.code); + const cleanedId = $al.model.request.requestStringId.substring(2); + + const reference = "BHR6 " + countryFrom + "-" + countryTo + " " + cleanedId; + return reference.substring(0, Math.min(reference.length, 25)).toUpperCase(); + } + + replaceCountryCode(code) { + return code === "BEL" ? "HQ" : code; + } + + // ─── Commitment & Budget ───────────────────────────────────────────────── + + _setCommitmentAndBudget(e) { + const abacInfo = $al.model._viewModel.abacInfo; + + abacInfo.paymentCreditsAvailableEur = e.paymentCreditsAvailableEur; + abacInfo.budgetPosition = e.budgetPosition; + abacInfo.budgetLine = e.budgetLine; + abacInfo.exerciseId = e.exerciseId; + abacInfo.fundSourceGroup = e.fundSourceGroup; + abacInfo.commitmentId = e.commitmentId; + abacInfo.commitmentHeaderId = e.commitmentHeaderId; + abacInfo.lvlCode = e.lvlCode; + abacInfo.lvlName = e.lvlName; + abacInfo.mainAccount = e.mainAccount; + abacInfo.totalCommitmentsEur = e.totalCommitmentsEur; + abacInfo.parentLocalKey = e.parentLocalKey; + abacInfo.ral = e.ral; + + abacInfo.outOfBudget = abacInfo.totalPaymentAmount > abacInfo.ral; + abacInfo.amountsAligned = Number(abacInfo.totalPaymentAmount.toFixed(2)) === Number(abacInfo.removalClearingAmount.toFixed(2)); + abacInfo.cannotSendToAbac = abacInfo.outOfBudget || !abacInfo.amountsAligned; + + const syncDateFormatted = formatDate(e.syncCommitmentsDate); + const syncTimeFormatted = formatTime(e.syncCommitmentsDate); + const tooltips = $al.controller._languageBundle.abac_details.tooltips; + abacInfo.budgetMsg = abacInfo.outOfBudget + ? kendo.format(tooltips.ral_alert, syncDateFormatted, syncTimeFormatted) + : kendo.format(tooltips.ral_info, syncDateFormatted, syncTimeFormatted); + + $al.view._bindView(); + } + + // ─── Editors ───────────────────────────────────────────────────────────── + + invoiceAmountEditor(container, options) { + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "#.00 EUR", + decimals: 2, + spinners: false, + placeholder: "0" + }); + } + + commitmentLevel4Editor(container, options) { + $('') + .appendTo(container) + .kendoDropDownList({ + dataSource: $al.model.distinctCommitmentLvl4, + dataTextField: "text", + dataValueField: "value", + valuePrimitive: true + }); + } + + // ─── Validations ───────────────────────────────────────────────────────── + + _validations() { + const validationErrors = this._validateBeforeSendToAbac(); + if (validationErrors.length > 0) { + this._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, + validationErrors + ); + return false; + } + return true; + } + + _validateBeforeSendToAbac() { + const errorMessages = []; + const vm = $al.model._viewModel; + const header = $al.model.newAllowancePayment.header; + const lang = $al.controller._languageBundle.alerts; + + if (header.pay_method === "D" && (!header.beneficiary_del_cd || header.beneficiary_del_cd === "")) { + errorMessages.push(lang.select_fund_delegation); + } + + if (vm.abacInfo.ral < vm.abacInfo.totalPaymentAmount) { + errorMessages.push(lang.no_available_budget); + } + if (vm.abacInfo.totalPaymentAmount < 0) { + errorMessages.push(lang.total_payment_should_be_positive); + } + if (!vm.abacInfo.amountsAligned) { + errorMessages.push(lang.total_subposts_should_be_equal_to_request_amount); + } + if (vm.errorMessage) { + errorMessages.push(vm.errorMessage); + } + + const subposts = vm.abacInfo.requestSubpostList; + if (!subposts || subposts.length === 0) { + errorMessages.push(lang.no_subposts_added); + } + + const validator = $("#abac-details-wrapper").kendoValidator({ + rules: { + movementContext: input => { + if (input.filter("[type=radio]") && input.is("[name=workflow]") && input.attr("required")) { + return $("#abac-details-wrapper").find("[type=radio][name=workflow]").is(":checked"); + } + return true; + }, + requiredFieldEmpty: input => { + return !input.attr("required") || input.length > 0; + } + }, + messages: { + movementContext: "WorkFlow is required", + requiredFieldEmpty: "Fill all mandatory fields" + } + }).data("kendoValidator"); + + if (errorMessages.length === 0 && validator.validate()) { + return true; + } + return errorMessages; + } + + // ─── Dialogs ───────────────────────────────────────────────────────────── + + _showWarningDialogWithPaymentDetails() { + const message = this.formatAllowancePaymentSummary($al.model._viewModel.newAllowancePayment); + + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.confirmation.submit_payment_to_P2P_title, + message, + this._templates.ok_cancel_send_to_p2p.dialog.footer.template({}) + ); + } + + formatAllowancePaymentSummary(payment) { + if (!payment) return "
No payment data available.
"; + + const header = payment.header || {}; + const details = payment.details || []; + + let html = "
\n";
+
+        html += "Title: " + (header.request_title || "") + "\n";
+        html += "Fund center: " + (header.delegation_code || "") + "\n";
+
+        if (header.beneficiary_del_cd && header.beneficiary_del_cd !==   $al.model.appParameters.get("RESPONSIBLE_ORGANISATION_NAME_BS4")) {
+            html += "Requesting Del: " + header.beneficiary_del_cd + "\n";
+        }
+
+        html += "Details: \n";
+        details.forEach(d => {
+            html += "     Comm. Item: " + (d.budget_line || "") + "\n";
+            html += "     Title: " + (d.request_detail_title || "") + "\n";
+            html += "     Amount: " + (d.net_amount_lcy != null ? kendo.toString(d.net_amount_lcy, "n2") : "") + " " + d.currency_code + "\n";
+            html += "     GL Account: " + (d.gl_account || "") + "\n";
+            html += "     Fund Source: " + (d.fund_source_det || "") + "\n";
+            html += "     Budget Period: " + (d.budget_period || "") + "\n\n";
+        });
+
+        html += "
"; + return html; + } + + _showWarnDialog(title, messages) { + $a.modalDialog.showAnswer(null, + title, + this._templates.warn.dialog.body.template({ body_message: messages.join(" ") }), + this._templates.basic.dialog.footer.template({}) + ); + } + + // ─── Footer Template ───────────────────────────────────────────────────── + + subpostsFooterTemplate(e) { + const abacInfo = $al.model._viewModel.abacInfo; + abacInfo.totalPaymentAmount = e["amount.amount"].sum; + abacInfo.outOfBudget = abacInfo.totalPaymentAmount > abacInfo.ral; + abacInfo.amountsAligned = Number(abacInfo.totalPaymentAmount.toFixed(2)) === Number(abacInfo.removalClearingAmount.toFixed(2)); + abacInfo.cannotSendToAbac = abacInfo.outOfBudget || !abacInfo.amountsAligned; + + return "
" + + kendo.toString(e["amount.amount"].sum, "n2") + + " EUR
"; + } + + // ─── Bind View ─────────────────────────────────────────────────────────── + + _bindView() { + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + $al.view._renderTotalAmount($al.model.request.requestType); + } + + isEmpty(str) { + return !str || str.length === 0; + } +} + +// â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• +// CONTROLLER +// â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• + +class AbacDetailsController { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.controller(); + }); + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve( + $al.controller._onLanguageBundleReady, + "common.messages.e-rights", "e_rights.requests", false + ); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.model.init(); + $al.notifyOnReadyMvc(); + } + + // ─── State Machine Actions ─────────────────────────────────────────────── + + doUpdateAndApproveRequest() { + if ($al.controller.validateBeforeUpdate("APPROVE")) { + $al.model._restCalls.updateRequest.execute( + null, null, $al.model._viewModel.request, $al.controller._updateRequestResponse + ); + } + } + + _updateRequestResponse(data) { + $al.model._restCalls.changeStateRequest.execute( + { requestId: $requestId, stateMachineEvent: "APPROVE" }, + null, null, $al.controller._approveResponse + ); + $al.model.refreshAfterUpdateState(data); + } + + _approveResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.approve_and_save_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doPayRequest() { + $al.model._restCalls.changeStateRequest.execute( + { requestId: $requestId, stateMachineEvent: "PAY" }, + null, null, $al.controller._payResponse + ); + } + + _payResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.pay_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doUpdateAndRejectRequest() { + if ($al.controller.validateBeforeUpdate("REJECT")) { + $al.model._restCalls.updateRequest.execute( + null, null, $al.model._viewModel.request, $al.controller.doRejectRequest + ); + } + } + + doRejectRequest() { + $al.model._restCalls.changeStateRequest.execute( + { requestId: $requestId, stateMachineEvent: "REJECT" }, + null, null, $al.controller._rejectRequestResponse + ); + } + + _rejectRequestResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.reject_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doResubmit() { + $al.model._restCalls.changeStateRequest.execute( + { requestId: $requestId, stateMachineEvent: "RESUBMIT" }, + null, null, $al.controller._resubmitResponse + ); + } + + _resubmitResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.resubmit_request_success); + $al.model.refreshAfterUpdateState(data); + } + + // ─── Mark as Paid ──────────────────────────────────────────────────────── + + doShowMarkAsPaidDialog() { + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.mark_as_paid_extra_data_title, + $al.view._templates.mark_as_paid.dialog.body.template({}), + $al.view._templates.ok_cancel.dialog.footer.template({}) + ); + + $al.view._elements.payment_date.data.element.kendoDatePicker({ + value: new Date(), + parseFormats: ["dd/MM/yyyy"] + }); + + kendo.bind("#mark_as_paid_data", $al.model._viewModel.request); + } + + doValidateAndSubmitMarkAsPaid() { + const elements = $al.view._elements; + const request = $al.model._viewModel.request; + + const paymentOrderVal = elements.payment_order.data.element.val().trim(); + const paymentDirectiveReferenceVal = elements.payment_directive.data.element.val().trim(); + + const validationError = this._validateMarkAsPaidFields(paymentOrderVal, paymentDirectiveReferenceVal); + if (validationError) { + alert(validationError); + return; + } + + if (paymentOrderVal || paymentDirectiveReferenceVal) { + if (paymentOrderVal) request.p2pHubOrderId = paymentOrderVal; + if (paymentDirectiveReferenceVal) request.paymentDirectiveReference = paymentDirectiveReferenceVal; + + $al.controller.requestCommon.doUpdateAndMarkAsPaidRequest(); + $a.modalDialog.hide(); + return; + } + + $("#mark_as_paid_data") + .kendoValidator({ + rules: { + atLeastOneRequired: input => + !input.is(`[name='${elements.payment_order.id}'],[name='${elements.payment_directive.id}']`) || + paymentOrderVal || paymentDirectiveReferenceVal + }, + messages: { + atLeastOneRequired: "Either Payment Order or Payment Directive must be provided" + } + }) + .data("kendoValidator") + .validate(); + } + + _validateMarkAsPaidFields(paymentOrderVal, paymentDirectiveReferenceVal) { + if (paymentOrderVal) { + if (!/^\d+$/.test(paymentOrderVal)) { + return "Payment Order must be a numeric value"; + } + if (Number(paymentOrderVal) > MAX_MARK_AS_PAID_INT) { + return "Payment Order value exceeds the allowed limit"; + } + } + + if (paymentDirectiveReferenceVal && paymentDirectiveReferenceVal.length > 200) { + return "Payment Directive must be less than 200 characters"; + } + + return null; + } + + // ─── Send to Summa / P2P ───────────────────────────────────────────────── + + doGoSendToSumma() { + const grid = $al.view._elements.subposts.grid.data.element.data("kendoGrid"); + $al.model._viewModel.abacInfo.requestSubpostList = grid.dataSource.data().slice(); + $al.view._buildAllowancePaymentDetails(); + + if ($al.view._validations()) { + $al.view._showWarningDialogWithPaymentDetails(); + } + } + + sendToP2pAfterConfirmation() { + $al.model._restCalls.sendToSumma.execute(null, $al.model._viewModel.newAllowancePayment, null,null,$al.controller._sentToSummaOnComplete,true); + $a.modalDialog.hide(); + } + + doValidateAndSubmitPay() { + $al.controller.doUpdateAndPayRequest(); + $a.modalDialog.hide(); + } + + // ─── Person Criteria Code ──────────────────────────────────────────────── + + getPersonCriteriaCode() { + const muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + const perId = $al.model.movementFile.jobHolder.perId; + + $al.model._restCalls.getPersonAbacInfo.execute( + { personId: perId }, null, null, null, + (data) => { + if (data.status === 200) { + $al.model.personAbacInfo = data.responseJSON; + $al.model._viewModel.abacInfo.analyticalCode = $al.model.personAbacInfo.criteriaCode; + $("#analytical_code").val($al.model._viewModel.abacInfo.analyticalCode); + $("#defaultACDivers").attr("disabled", true); + } else if (data.status === 204 || data.status === 409) { + $("#analytical_code").val("NO_CODE_FOUND"); + $("#defaultACDivers").attr("disabled", false); + $("#defaultACDivers").click(function () { + if (!$al.model._viewModel.canEditAnalyticalCode) { + $("#analytical_code").val("DIVERS"); + $al.model._viewModel.abacInfo.analyticalCode = "DIVERS"; + } else { + $("#analytical_code").val("NO_CODE_FOUND"); + $al.model._viewModel.abacInfo.analyticalCode = "NO_CODE_FOUND"; + } + }); + } else { + const errorMessage = data.responseText; + $a.toast.showError(errorMessage); + $al.model._viewModel.errorMessage = errorMessage; + } + }, + null, muteAnankeErrorToast + ); + } + + _goToAbacResponsePage() { + $a.navigation.navigateTo($a.utils.formatUrl( + $al.model.urls.action.goToAbacResponse, null, + { requestId: $requestId, requestType: $al.model.request.requestType, movementFileId: $movementFileId } + )); + } + + _sentToSummaOnComplete(response) { + const body = response.responseJSON || response.xhr?.responseJSON || response || {}; + const errorCode = body.errorCode; + const orderId = body.id || body.order_id; + const responseDateTime = body.responseDateTime; + + if (!errorCode && orderId && !isNaN(orderId)) { + $al.controller._goToAbacResponsePage(); + return; + } + + const msg = body.message || "Unknown error"; + const txt = body.errorText || ""; + $a.toast.showError( + `Error creating Order in P2P-HUB!
Error Code: ${errorCode}
Message: ${msg}
${txt}
Time: ${responseDateTime}` + ); + } + + // ─── Communication ─────────────────────────────────────────────────────── + + _renderCommunication() { + $al.view._elements.communication.data.element.kendoListView({ + dataSource: this._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#abac-details-communication-template").html()) + }).removeClass("k-widget k-listview"); + + $al.view._elements.communication.data.component = "kendoListView"; + } + + _prepareCommunication(data) { + if (data) { + data.forEach(n => { + if (n.arrivalState) { + n.arrivalState = $al.controller._languageBundle.stateMachine[n.arrivalState.toLowerCase()]; + } + }); + } + return data; + } + + + // ─── Page Refresh ──────────────────────────────────────────────────────── + + refreshPage() { + $a.navigation.navigateTo($a.utils.formatUrl( + $al.model.urls.action.abacPaymentsDetails, null, + { requestId: $requestId, requestType: $requestType, movementFileId: $movementFileId } + )); + } + + // ─── Subpost Calculators ───────────────────────────────────────────────── + + calculateSubPostsForAdvOrTotRequest(isAdvance, earMarkedFund) { + const subpostsList = []; + const request = $al.model.request; + const budgetLineSubposts = $al.model.budgetLineSubposts; + const earmarkedFilter = (a) => $al.view.earmarkedFundFilter(a, earMarkedFund); + + let totalStorage = 0; + const storageDetails = request.requestDetails.filter(el => el.detailType === $detailType.STORAGE.code); + const hasOtherThanStorage = request.requestDetails.length > storageDetails.length; + + if (typeof request.storageRate !== "undefined" && storageDetails.length > 0) { + totalStorage = typeof request.sumOfSectionsTotalStorage !== "undefined" + ? request.sumOfSectionsTotalStorage + : request.requestDetails + .filter(el => el.detailType === "STORAGE") + .reduce((sum, el) => sum + el.amount.amount, 0); + + if (request.storageRate < totalStorage) { + totalStorage = request.storageRate; + } + if (isAdvance) { + totalStorage = ADV_TOTAL_AMOUNT_MULT_FACTOR * totalStorage; + } + + if (request.calculatedTotalAmount.amount > 0) { + totalStorage = totalStorage * request.totalAmount.amount / request.calculatedTotalAmount.amount; + } + + const storageLineSubpost = filterSubpostsByType( + budgetLineSubposts, "STORAGE", $al.model.paymentType, earmarkedFilter + ); + + if (storageLineSubpost && isNotZero(totalStorage)) { + storageLineSubpost.amount = { amount: Number(totalStorage.toFixed(2)), currency: "EUR" }; + storageLineSubpost.requestId = $requestId; + storageLineSubpost.id = $al.model._restCalls._gridRowsId++; + subpostsList.push(storageLineSubpost); + } else { + totalStorage = 0; + } + } + + const personalLineSubpost = filterSubpostsByType( + budgetLineSubposts, "PERSONAL", $al.model.paymentType, earmarkedFilter + ); + + if (hasOtherThanStorage && personalLineSubpost && typeof request.totalAmount.amount !== "undefined") { + const personalAmount = Number(request.totalAmount.amount) - Number(totalStorage.toFixed(2)); + if (isNotZero(personalAmount)) { + personalLineSubpost.amount = { amount: Number(personalAmount.toFixed(2)), currency: "EUR" }; + personalLineSubpost.requestId = $requestId; + personalLineSubpost.id = $al.model._restCalls._gridRowsId++; + subpostsList.push(personalLineSubpost); + } + } + + return subpostsList; + } + + calculateSubPostsForRemTudRequest(earMarkedFund) { + const subpostsList = []; + const earmarkedFilter = (a) => $al.view.earmarkedFundFilter(a, earMarkedFund); + + const personalLineSubpost = filterSubpostsByType( + $al.model.budgetLineSubposts, "PERSONAL", $al.model.paymentType, earmarkedFilter + ); + + if (personalLineSubpost) { + const personalAmount = Number($al.model.request.totalAmount.amount); + personalLineSubpost.amount = { amount: Number(personalAmount.toFixed(2)), currency: "EUR" }; + personalLineSubpost.requestId = $requestId; + personalLineSubpost.id = $al.model._restCalls._gridRowsId++; + subpostsList.push(personalLineSubpost); + } + + return subpostsList; + } + calculateSubPostsForTopUpRequest(earMarkedFund) { + const subpostsList = []; + const parentType = $al.model.request.parent.requestType; + const requestType = parentType === "TudRequest" ? "TUD" : "REM"; + const earmarkedFilter = (a) => $al.view.earmarkedFundFilter(a, earMarkedFund); + + const personalLineSubpost = filterSubpostsByType( + $al.model.budgetLineSubposts, "PERSONAL", $al.model.paymentType, earmarkedFilter + ); + + if (personalLineSubpost) { + + const personalAmount = Number($al.model.request.totalAmount.amount); + personalLineSubpost.amount = { amount: Number(personalAmount.toFixed(2)), currency: "EUR" }; + personalLineSubpost.requestId = $requestId; + personalLineSubpost.id = $al.model._restCalls._gridRowsId++; + subpostsList.push(personalLineSubpost); + } + + return subpostsList; + } + + calculateSubPostsForRemClrRequest(earMarkedFund) { + const subpostsList = []; + const request = $al.model.request; + const advance = $al.model.advanceRequest; + const budgetLineSubposts = $al.model.budgetLineSubposts; + const earmarkedFilter = (a) => $al.view.earmarkedFundFilter(a, earMarkedFund); + + let totalStorage = 0; + let totalStorageAdv = 0; + let totalClearingStorage = 0; + + const clearingStorageList = request.requestDetails.filter(el => el.detailType === $detailType.STORAGE.code); + const advanceStorageList = advance.requestDetails.filter(el => el.detailType === $detailType.STORAGE.code); + + if (typeof request.storageRate !== "undefined" && (clearingStorageList.length > 0 || advanceStorageList.length > 0)) { + totalStorage = request.sumOfSectionsTotalStorage; + + totalStorageAdv = typeof advance.sumOfSectionsTotalStorage !== "undefined" + ? advance.sumOfSectionsTotalStorage + : advance.requestDetails + .filter(el => el.detailType === "STORAGE") + .reduce((sum, el) => sum + el.proforma.amount / el.exchangeRate, 0); + + if (request.storageRate < totalStorage) { + totalStorage = request.storageRate; + } + if (advance.storageRate < totalStorageAdv) { + totalStorageAdv = request.storageRate; + } + + totalClearingStorage = totalStorage - ADV_TOTAL_AMOUNT_MULT_FACTOR * totalStorageAdv; + + const storageLineSubpost = filterSubpostsByType( + budgetLineSubposts, "STORAGE", $al.model.paymentType, earmarkedFilter + ); + + if (storageLineSubpost && isNotZero(totalClearingStorage)) { + storageLineSubpost.amount = { amount: Number(totalClearingStorage.toFixed(2)), currency: "EUR" }; + storageLineSubpost.requestId = $requestId; + storageLineSubpost.id = $al.model._restCalls._gridRowsId++; + subpostsList.push(storageLineSubpost); + } + } + + const personalLineSubpost = filterSubpostsByType( + budgetLineSubposts, "PERSONAL", $al.model.paymentType, earmarkedFilter + ); + + if (personalLineSubpost && typeof request.totalAmount.amount !== "undefined" && typeof advance.totalAmount.amount !== "undefined") { + const personalAmount = Number(request.totalAmount.amount) - Number(totalClearingStorage.toFixed(2)); + if (isNotZero(personalAmount)) { + personalLineSubpost.amount = { amount: Number(personalAmount.toFixed(2)), currency: "EUR" }; + personalLineSubpost.requestId = $requestId; + personalLineSubpost.id = $al.model._restCalls._gridRowsId++; + subpostsList.push(personalLineSubpost); + } + } + + return subpostsList; + } + + // ─── Utilities ─────────────────────────────────────────────────────────── + + _onSave(event) { + if (!event.model.id) { + event.model.id = $al.model._restCalls._gridRowsId++; + } + } + + _permissionForMarkAsPaid() { + const request = $al.model.request; + const permissions = $al.model.permissions; + + $al.model._viewModel.canMarkAsPaid = + (request.requestType === "TudRequest" && permissions.canPayTudRequestManually) || + (request.requestType === "TopUpRequest" && permissions.canPayTopUpRequestManually) || + (request.requestType !== "TudRequest" && permissions.canPayRemRequestManually); + } +} + +$al.mvc(AbacDetailsModel, AbacDetailsView, AbacDetailsController, true); \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/scripts/abac-payments/abac-info.js b/e-rights-back-office/src/main/webapp/static/scripts/abac-payments/abac-info.js new file mode 100644 index 0000000..26c5598 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/abac-payments/abac-info.js @@ -0,0 +1,286 @@ +class AbacInfoModel { + + constructor() { + let endPoint = ""; + let topUpRequesType = ""; + if ($requestType === 'TopUpRequest') { + topUpRequesType = 'TUD'; + } else { + topUpRequesType = 'REM'; + } + this.requestTypes={ + ClearingRequest: "ClearingRequest", + AdvanceRequest: "AdvanceRequest", + TotalRemRequest: "TotalRemRequest", + TudRequest: "TudRequest", + TopUpRequest: "TopUpRequest", + ResettlementRequest: "ResettlementRequest" + } + switch ($requestType) { + case "ClearingRequest": + + endPoint = "/internal/api/clearing-requests"; + this.removalRequest = true; + this.paymentType = 'REM'; + this.invoice = true; + + break; + case "AdvanceRequest": + + endPoint = "/internal/api/adv-rem-requests"; + this.removalRequest = true; + this.invoice = false; + this.paymentType = 'REM'; + + break; + case "TotalRemRequest": + + endPoint = "/internal/api/total-rem-requests"; + this.removalRequest = true; + this.invoice = true; + this.paymentType = 'REM'; + break; + case "TudRequest": + + endPoint = "/internal/api/tud-requests"; + this.removalRequest = false; + this.paymentType = 'TUD'; + break; + case "TopUpRequest": + endPoint = "/internal/api/topup-requests"; + this.removalRequest = false; + this.paymentType = topUpRequesType; + break; + case this.requestTypes.ResettlementRequest: + endPoint = "/internal/api/resettlement-requests"; + break; + default: + break; + } + + this._restCalls = { + getRequest: new $a.GetRestCall(null, endPoint.concat("/{requestId}")), + getAbacItems: new $a.GetRestCall(null, "/internal/api/abac/items/{requestId}"), + getAbacCommunication: new $a.GetRestCall(null, "/internal/api/abac/communication/{requestId}"), + getMovementFile: new $a.GetRestCall(null, "/internal/api/movement-files/{fileId}"), + getStateHistory: new $a.GetRestCall(null, endPoint.concat("/{requestId}/stateMachineHistory")), + getStateHistoryResettlement: new $a.GetRestCall(null, endPoint.concat("/state-machine/history/{requestId}")) + }; + + this.urls = { + action: { + viewMovementFile: $a.utils.url(null, "/movement-files/view.do"), + viewTud: $a.utils.url(null, "/requests/view-tud.do"), + viewAdvRem: $a.utils.url(null, "/requests/view-adv-rem.do"), + viewTotalRem: $a.utils.url(null, "/requests/view-total-rem.do"), + viewClrRem: $a.utils.url(null, "/requests/view-clr-rem.do"), + viewTopUp: $a.utils.url(null, "/requests/view-topup.do"), + viewResettlement: $a.utils.url(null, "/requests/view-resettlement.do"), + } + }; + } + + notifyDataRetrieved(data) { + + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model.onDataRetrieved); + + dataPoolExecutor.add("request", $al.model._restCalls.getRequest, {requestId: $requestId}); + dataPoolExecutor.add("items", $al.model._restCalls.getAbacItems, {requestId: $requestId}); + dataPoolExecutor.add("communication", $al.model._restCalls.getAbacCommunication, {requestId: $requestId}); + dataPoolExecutor.add("movementFile", $al.model._restCalls.getMovementFile, {fileId: $movementFileId}); + if ($requestType === $al.model.requestTypes.ResettlementRequest) { + dataPoolExecutor.add("stateMachineHistory", + $al.model._restCalls.getStateHistoryResettlement, + {requestId: $requestId}); + } else { + dataPoolExecutor.add("stateMachineHistory", + $al.model._restCalls.getStateHistory, + {requestId: $requestId}); + } + + dataPoolExecutor.run(); + } + + linkItemWithCommunicationInfo(items, communication) { + items.forEach(item => { + communication.forEach(commEl => { + if(commEl.abacCommId == item.abacCommunicationId) + item.communication = commEl; + }) + }); + } + + onDataRetrieved(data) { + $al.model.movementFile = data.get("movementFile").data; + $al.model.request = data.get("request").data; + $al.model.items = data.get("items").data; + $al.model.communication = data.get("communication").data; + $al.model.stateMachineHistory = data.get("stateMachineHistory").data; + + $al.model.linkItemWithCommunicationInfo($al.model.items, $al.model.communication); + + + $al.view.enrichRequestInfo(); + + $al.view._initializeView(); + $al.view.render(); + } + + getRequestTypeDescription() { + switch ($requestType) { + case "ClearingRequest": + return $al.controller._languageBundle.type.clearing; + case "AdvanceRequest": + return $al.controller._languageBundle.type.advance; + case "TotalRemRequest": + return $al.controller._languageBundle.type.total_removal; + case "TudRequest": + return $al.controller._languageBundle.type.tud; + case "TopUpRequest": + return $al.controller._languageBundle.type.topup; + case $al.model.requestTypes.ResettlementRequest: + return $al.controller._languageBundle.type.resettlement; + default: + break; + } + } + + getRequestUrl() { + switch ($requestType) { + case "ClearingRequest": + return $a.utils.formatUrl($al.model.urls.action.viewClrRem, null, {requestId: $requestId}); + case "AdvanceRequest": + return $a.utils.formatUrl($al.model.urls.action.viewAdvRem, null, {requestId: $requestId}); + case "TotalRemRequest": + return $a.utils.formatUrl($al.model.urls.action.viewTotalRem, null, {requestId: $requestId}); + case "TudRequest": + return $a.utils.formatUrl($al.model.urls.action.viewTud, null, {requestId: $requestId}); + case "TopUpRequest": + return $a.utils.formatUrl($al.model.urls.action.viewTopUp, null, {requestId: $requestId}); + case $al.model.requestTypes.ResettlementRequest: + return $a.utils.formatUrl($al.model.urls.action.viewResettlement, null, {requestId: $requestId}); + default: + break; + } + } + +} + +class AbacInfoView { + + constructor() { + + + this._templates = new $a.DataContainer("abac-info"); + this._elements = new $a.DataContainer("abac-info"); + + this._templates.data(new $a.KendoTemplateData()); + this._elements.node("communication").data(new $a.KendoElementData()); + } + + render() { + $al.view._templates.data.compile(); + + $al.view._bindView(); + + $al.controller._renderCommunication(); + } + + _initializeView() { + + $al.model.request = $al.controller.requestCommon.prepareRequestForModelView(); + var viewModel = new kendo.data.Model.define(); + + $al.model._viewModel = new viewModel({ + movementFile: $al.model.movementFile, + request: $al.model.request, + items: $al.model.items, + communication: $al.model.communication, + name: $al.model.movementFile.jobHolder.lastName + ' ' + $al.model.movementFile.jobHolder.firstName, + perId: $al.model.movementFile.jobHolder.perId + }); + } + + enrichRequestInfo() { + $al.model.request.requestTypeDesc = $al.model.getRequestTypeDescription(); + + switch ($requestType) { + case "ClearingRequest": + $al.model.request.titleForFrontEnd = $al.controller._languageBundle.full_title.clearing; + break; + case "AdvanceRequest": + $al.model.request.titleForFrontEnd = $al.controller._languageBundle.full_title.advance; + break; + case "TotalRemRequest": + $al.model.request.titleForFrontEnd = $al.controller._languageBundle.full_title.total_removal; + break; + case "TudRequest": + $al.model.request.titleForFrontEnd = $al.controller._languageBundle.full_title.tud; + break; + case "TopUpRequest": + $al.model.request.titleForFrontEnd = $al.controller._languageBundle.full_title.topup; + break; + case $al.model.requestTypes.ResettlementRequest: + $al.model.request.titleForFrontEnd = $al.controller._languageBundle.full_title.resettlement; + break; + default: + $al.model.request.titleForFrontEnd = ""; + break; + } + + $al.model.requestUrl = $al.model.getRequestUrl(); + } + + + + _bindView() { + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } +} + +class AbacInfoController { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.controller(); + }); + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.requests", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + + $al.model.init(); + $al.notifyOnReadyMvc(); + } + + _renderCommunication() { + $al.view._elements.communication.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#abac-info-communication-template").html()) + }).removeClass('k-widget k-listview'); + + $al.view._elements.communication.data.component = "kendoListView"; + } + + _prepareCommunication(data) { + if (typeof data !== "undefined") { + data.forEach(n => { + if (n.arrivalState) + n.arrivalState = $al.controller._languageBundle.stateMachine[n.arrivalState.toLowerCase()]; + + }); + } + + return data; + } +} + +$al.mvc(AbacInfoModel, AbacInfoView, AbacInfoController, true); \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/scripts/abac-payments/support/detail-type.js b/e-rights-back-office/src/main/webapp/static/scripts/abac-payments/support/detail-type.js new file mode 100644 index 0000000..302c2e6 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/abac-payments/support/detail-type.js @@ -0,0 +1,73 @@ +class DetailType { + + constructor() { + this._personal = {code: "PERSONAL", label: null, icon: "inventory_2"}; + this._vehicle = {code: "VEHICLE", label: null, icon: "drive_eta"}; + this._storage = {code: "STORAGE", label: null, icon: "maps_home_work"}; + this._unforeseen = {code: "UNFORESEEN", label: null, icon: null}; + this._topup = {code: "TOPUP", label: null, icon: null}; + } + + get PERSONAL() { + return $detailType._personal; + } + + get VEHICLE() { + return $detailType._vehicle; + } + + get STORAGE() { + return $detailType._storage; + } + + get UNFORESEEN() { + return $detailType._unforeseen; + } + get TOPUP() { + return $detailType._topup; + } + + _getTypes() { + return [this._personal, this._vehicle, this._storage, this._unforeseen,this._topup]; + } + + _getTypeByCode(code) { + let types = this._getTypes(); + + for (let i = 0; i < types.length; i++) { + if (types[i].code == code) + return types[i]; + } + + return null; + } + + _getCodesList(code) { + let types = this._getTypes(); + let codes = []; + + for (let i = 0; i < types.length; i++) { + codes.push(types[i].code); + } + + return codes; + } + + _onReady() { + $a.languageBundle.retrieve($detailType._onLanguageBundleReady, "common.messages.e-rights", "e_rights.detail_type_order_categories", true); + } + + _onLanguageBundleReady(languageBundle) { + $detailType._personal.label = languageBundle.personal; + $detailType._vehicle.label = languageBundle.vehicle; + $detailType._storage.label = languageBundle.storage; + $detailType._unforeseen.label = languageBundle.unforeseen; + $detailType._topup.label = languageBundle.topup; + $al.notifyOnReadyComplete($detailType); + } + +} + +const $detailType = new DetailType(); +$al.registerOnReadyListener($detailType); + diff --git a/e-rights-back-office/src/main/webapp/static/scripts/accommodation/declaration.job-holder.js b/e-rights-back-office/src/main/webapp/static/scripts/accommodation/declaration.job-holder.js new file mode 100644 index 0000000..bcd68c2 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/accommodation/declaration.job-holder.js @@ -0,0 +1,303 @@ +class Model { + + constructor() { + + this.urls = { + action: { + viewAccDecl: $a.utils.url(null, + "/posting-allowances/accommodation-declaration-view.do") + } + }; + + this._restCalls = { + persons: new $a.GetRestCall(null, + "/internal/api/accommodation-declarations/persons?lastName={lastName}&firstName={firstName}&perId={perId}"), + clearData: new $a.GetRestCall(null, "/internal/api/persons"), + createAccDeclaration: new $a.PostRestCall(null, + "/internal/api/accommodation-declarations/{perId}"), + saveBankAccounts: new $a.PostRestCall(null, "/internal/api/bank-accounts/{personId}/save") + }; + + this._personsDS = new kendo.data.DataSource({ + pageSize: 200, + schema: { + data: "data", + model: { + fields: { + lastName: { + type: "string" + }, + firstName: { + type: "string" + }, + perId: { + type: "number" + } + } + } + } + }); + } + + _getPersonsData(lastName, firstName, perId) { + $al.model._restCalls.persons.execute({ + lastName: lastName, + firstName: firstName, + perId: perId + }, null, $al.controller._loadData, null, null, true); + } + + _getStaffMemberData(perId) { + $al.model._restCalls.persons.execute({perId: perId}, null, + $al.controller._loadData); + } + + _clearData() { + $al.model._restCalls.clearData.execute(null, null, $al.controller._loadData, + null, null, true); + } + + init() { + + var viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel(); + + $al.model._viewModel.set("isGridVisible", false); + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } + +} + +class View { + viewWizard; + + constructor() { + + this.viewWizard = new ViewWizard(); + + this._elements = new $a.DataContainer("jobHolder"); + this._templates = new $a.DataContainer("jobHolder"); + + this._templates.node("header").data(new $a.KendoTemplateData()); + this._templates.node("persons").node("search").data( + new $a.KendoTemplateData()); + this._templates.node("persons").node("grid").data( + new $a.KendoTemplateData()); + this._templates.node("persons").node("wizard").data( + new $a.KendoTemplateData()); + this._templates.node("persons").node("details").data( + new $a.KendoTemplateData()); + this._templates.node("persons").node("currentassignment").data( + new $a.KendoTemplateData()); + this._templates.node("persons").node("actions").data( + new $a.KendoTemplateData()); + this._templates.node("persons").node("actions").node("edit").data( + new $a.KendoTemplateData()); + + this._elements.node("persons").node("search").node("last_name").data( + new $a.KendoElementData()); + this._elements.node("persons").node("search").node("first_name").data( + new $a.KendoElementData()); + this._elements.node("persons").node("search").node("per_id").data( + new $a.KendoElementData()); + + this._elements.node("persons").node("grid").data(new $a.KendoElementData()); + this._elements.node("persons").node("wizard").data( + new $a.KendoElementData()); + this._elements.node("persons").node("details").data( + new $a.KendoElementData()); + this._elements.node("persons").node("currentassignment").data( + new $a.KendoElementData()); + + this._elements.node("persons").node("actions").data( + new $a.KendoElementData()); + this._elements.node("persons").node("actions").node("edit").data( + new $a.KendoElementData()); + + this._templates.data(new $a.KendoTemplateData()); + this._elements.data(new $a.KendoElementData()); + + //commons templates + this._templates_common = new $a.DataContainer("common"); + this._elements_common = new $a.DataContainer("common"); + this._templates_common.data(new $a.KendoTemplateData()); + this._templates_common.node("wizard").data(new $a.KendoTemplateData()); + this._elements_common.node("wizard").data(new $a.KendoElementData()); + + } + + render() { + $al.view._templates.data.compile(); + $al.view._templates.header.data.compile(); + $al.view._templates.persons.search.data.compile(); + $al.view._templates.persons.grid.data.compile(); + + $al.view._templates.persons.actions.edit.data.compile(); + + //commons templates + $al.view._templates_common.wizard.data.compile(); + + $al.view._renderPersonsGrid(); + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } + + _renderPersonsGrid() { + $al.view._elements.persons.grid.data.element.kendoGrid({ + dataSource: $al.model._personsDS, + scrollable: false, + sortable: true, + columns: [{ + title: "", + width: "38px", + attributes: { + "class": "p-2 pb-1", + }, + template: 'account_circle' + }, { + field: "lastName", + title: $al.controller._languageBundle.job_holder.last_name, + width: "40%", + attributes: {class: "font-weight-medium"} + }, { + field: "firstName", + title: $al.controller._languageBundle.job_holder.first_name, + width: "40%", + attributes: {class: "font-weight-medium"} + }, { + field: "perId", + title: $al.controller._languageBundle.job_holder.per_id, + width: "20%" + }, { + command: [ + { + name: "create", + text: "CREATE", + template: $al.view._templates.persons.actions.edit.data.template, + } + ], + attributes: {style: "white-space: nowrap;"}, + width: "100px" + }] + }); + $al.view._elements.persons.grid.data.component = "kendoGrid"; + + } + +} + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, + "common.messages.e-rights", "e_rights.postingAllowances.accommodation", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.view.render(); + $al.notifyOnReadyMvc(); + + $al.model.init(); + } + + _getPersonsData(source) { + var lastName = $al.view._elements.persons.search.last_name.data.element.val(); + var firstName = $al.view._elements.persons.search.first_name.data.element.val(); + var perId = $al.view._elements.persons.search.per_id.data.element.val(); + + $al.model._getPersonsData(lastName, firstName, perId); + } + + _clearData(source) { + $al.view._elements.persons.search.last_name.data.element.val(""); + $al.view._elements.persons.search.first_name.data.element.val(""); + $al.view._elements.persons.search.per_id.data.element.val(""); + + $al.model._clearData(); + } + + _getStaffMemberData(source) { + var perId = $al.view._elements.persons.search.per_id.data.element.val(); + + $al.model._getStaffMemberData(perId); + } + + _loadData(data) { + $al.model._personsDS.data(data); + $al.model._viewModel.set("isGridVisible", true); + } + + createAccommodationDeclaration(source) { + + var item = $al.view._elements.persons.grid.data.component.dataItem( + $(source).closest("tr")); + + $a.loading.toggle(true); + + $al.model._restCalls.saveBankAccounts.execute({personId: item.perId}); + + $al.model._restCalls.createAccDeclaration.execute( + /* pathParams */ {perId: item.perId}, + /* queryParams */ null, + /* onSuccess */ null, + /* onBeforeSend */ null, + /* onComplete */ $al.controller._onAccommodationDeclarationCreated); + } + + + _onAccommodationDeclarationCreated(data) { + if (data.status === 201) { + // show success + $a.toast.showSuccess( + $al.controller._languageBundle.alerts.declaration_created_successfully); + + // navigate to view the accommodation declaration + $a.navigation.navigateTo( + $a.utils.formatUrl($al.model.urls.action.viewAccDecl, null, + {postingAllowanceId: data.responseJSON})); + } else { + var validationErrors = $al.controller._extractMessagesFromErrorResponse( + data); + $a.toast.showError(validationErrors); + } + } + + _extractMessagesFromErrorResponse(response) { + var text = response.responseText; + var textObj = null; + try { + textObj = JSON.parse(text); + } catch (parseExc) { + // Do nothing, textObj remains null + } + var messages = []; + if (textObj && textObj.items && textObj.items.length > 0) { + textObj.items.forEach(item => { + messages.push(item.message); + }); + return messages; + } else { + // Cannot parse, just return 'responseText' + return [text]; + } + } + + + +} + +// Binding enter button click to form submit +$(document).keypress(function (e) { + if (e.which === 13) { + $("#search_data").click(); + } +}); + +$al.mvc(Model, View, Controller, true); + diff --git a/e-rights-back-office/src/main/webapp/static/scripts/admin/iata-routes-calculation.js b/e-rights-back-office/src/main/webapp/static/scripts/admin/iata-routes-calculation.js new file mode 100644 index 0000000..9ce170e --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/admin/iata-routes-calculation.js @@ -0,0 +1,317 @@ +class Model { + + constructor() { + + this.urls = { + action: { + } + }; + + this._restCalls = { + iataAirports: new $a.GetRestCall(null, "/internal/api/iata-airports"), + iataRoutePrice: new $a.GetRestCall(null, + "/internal/api/iata-airports/route-price?originId={originId}&destinationId={destinationId}&firstStopId={firstStopId}&secondStopId={secondStopId}&thirdStopId={thirdStopId}&exerciseYear={exerciseYear}") + }; + } + + init() { + const dataPoolExecutor = new $a.RestCallPoolExecutor( + $al.model.onRetrieved); + dataPoolExecutor.add("iataAirports", $al.model._restCalls.iataAirports, + null, null); + dataPoolExecutor.run(); + + } + + onRetrieved(data) { + $al.model.iataAirports = data.get("iataAirports").data; + $al.model._renderPage(); + } + + _renderPage() { + + const viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel(); + $al.model._viewModel.amount = 0; + $al.model._viewModel.year = new Date().getFullYear(); + $al.view._elements.origin_iata.data.element.kendoDropDownList({ + dataSource: $al.model.iataAirports, + dataTextField: "locationName", + dataValueField: "id", + optionLabel: "Select Airport", + required: "required", + validationMessage: "Select origin airport", + value: $al.model._viewModel.originIataCode, + autoWidth: true, + filter: "contains" + }); + + $al.view._elements.destination_iata.data.element.kendoDropDownList({ + dataSource: $al.model.iataAirports, + dataTextField: "locationName", + dataValueField: "id", + optionLabel: "Select Airport", + required: "required", + validationMessage: "Select destination airport", + value: $al.model._viewModel.destinationIataCode, + autoWidth: true, + filter: "contains" + }); + + $al.view._elements.first_intermediate_iata.data.element.kendoDropDownList({ + dataSource: $al.model.iataAirports, + dataTextField: "locationName", + dataValueField: "id", + optionLabel: "Select Airport", + value: $al.model._viewModel.firstIntermediateIataCode, + autoWidth: true, + filter: "contains", + change: function () { + $al.controller.onChangeFirstIntermediateAirportStop(); + } + }); + + $al.view._elements.second_intermediate_iata.data.element.kendoDropDownList({ + dataSource: $al.model.iataAirports, + dataTextField: "locationName", + dataValueField: "id", + optionLabel: "Select Airport", + value: $al.model._viewModel.secondIntermediateIataCode, + autoWidth: true, + filter: "contains", + change: function () { + $al.controller.onChangeSecondIntermediateAirportStop(); + } + }); + + $al.view._elements.third_intermediate_iata.data.element.kendoDropDownList({ + dataSource: $al.model.iataAirports, + dataTextField: "locationName", + dataValueField: "id", + optionLabel: "Select Airport", + value: $al.model._viewModel.thirdIntermediateIataCode, + autoWidth: true, + filter: "contains" + }); + $al.model._renderYearDropDown(); + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + $al.view._enableDisableFields(); + + } + + _renderYearDropDown() { + + let yearsObjects = []; + const now = new Date().getUTCFullYear(); + const years = Array(now - (now - 7)).fill('').map((v, idx) => now - idx); + years.forEach(value => { + yearsObjects.push({ + "id": value, + "display": `${value}` + }); + }); + + const dropdownlist = $al.view._elements.year.data.element.kendoDropDownList( + { + dataSource: yearsObjects, + dataTextField: "display", + dataValueField: "id", + enable: true, + open: function () { + }, + autoWidth: true, + value: $al.model._viewModel.year, + }); + dropdownlist.data("kendoDropDownList").select(0); + } +} + +class View { + viewWizard; + + constructor() { + + this._elements = new $a.DataContainer("iataRoutesCalculation"); + this._templates = new $a.DataContainer("iataRoutesCalculation"); + this._templates.node("header").data(new $a.KendoTemplateData()); + this._templates.data(new $a.KendoTemplateData()); + this._elements.data(new $a.KendoElementData()); + this._elements.node("origin_iata").data(new $a.KendoElementData()); + this._elements.node("first_intermediate_iata").data( + new $a.KendoElementData()); + this._elements.node("destination_iata").data(new $a.KendoElementData()); + this._elements.node("second_intermediate_iata").data( + new $a.KendoElementData()); + this._elements.node("third_intermediate_iata").data( + new $a.KendoElementData()); + this._elements.node("year").data(new $a.KendoElementData()); + + } + + render() { + $al.view._templates.data.compile(); + $al.view._templates.header.data.compile(); + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + } + + isEmpty(str) { + return (!str || (str && str.length === 0)); + } + + _enableDisableFields() { + $al.controller.onChangeFirstIntermediateAirportStop(); + $al.controller.onChangeSecondIntermediateAirportStop(); + } + + _validateOriginDestAirports() { + + const originDestAirportValidator = $( + "#originDestAirport").kendoValidator().data( + "kendoValidator"); + if (!originDestAirportValidator.validate()) { + $al.view._scrollToId('originDestAirport'); + return false; + } + return true; + } + + _scrollToId(id) { + document.getElementById(id).scrollIntoView({block: "center"}); + } + +} + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, + "common.messages.e-rights", "e_rights.admin.route", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.view.render(); + $al.notifyOnReadyMvc(); + $al.model.init(); + } + + _calculateRoutes(e) { + + if (!$al.view._validateOriginDestAirports()) { + return; + } + + const dropDownListOrigin = $al.view._elements.origin_iata.data.element.data( + "kendoDropDownList"); + const dropDownListFirstStop = $al.view._elements.first_intermediate_iata.data.element.data( + "kendoDropDownList"); + const dropDownListSecondStop = $al.view._elements.second_intermediate_iata.data.element.data( + "kendoDropDownList"); + const dropDownListThirdStop = $al.view._elements.third_intermediate_iata.data.element.data( + "kendoDropDownList"); + const dropDownListDestination = $al.view._elements.destination_iata.data.element.data( + "kendoDropDownList"); + const dropDownListYear = $al.view._elements.year.data.element.data( + "kendoDropDownList"); + + $al.model._restCalls.iataRoutePrice.execute( + { + originId: dropDownListOrigin.value(), + destinationId: dropDownListDestination.value(), + firstStopId: dropDownListFirstStop.value(), + secondStopId: dropDownListSecondStop.value(), + thirdStopId: dropDownListThirdStop.value(), + exerciseYear: dropDownListYear.value() + }, null, null, null, $al.controller._onCalculateRoutesResponse, true); + } + + _onCalculateRoutesResponse(data) { + if (data.status === 200) { + let price = Number(data.responseJSON); + $('#amount').val(price); + } else if (data.status === 204) { + $('#amount').val(''); + $a.toast.showError($al.controller._languageBundle.no_price_found); + } else { + const validationErrors = $al.controller._extractMessagesFromErrorResponse( + data); + $a.toast.showError(validationErrors); + } + } + + _extractMessagesFromErrorResponse(response) { + + const text = response.responseText; + let textObj = null; + try { + textObj = JSON.parse(text); + } catch (parseExc) { + } + const messages = []; + if (textObj && textObj.items && textObj.items.length > 0) { + textObj.items.forEach(item => { + messages.push(item.message); + }); + return messages; + } else { + return [text]; + } + } + + onChangeFirstIntermediateAirportStop() { + + const dropDownListFirst = $al.view._elements.first_intermediate_iata.data.element.data( + "kendoDropDownList"); + const dropDownListSecond = $al.view._elements.second_intermediate_iata.data.element.data( + "kendoDropDownList"); + const dropDownListThird = $al.view._elements.third_intermediate_iata.data.element.data( + "kendoDropDownList"); + const value = dropDownListFirst.value(); + if($al.view.isEmpty(value)){ + dropDownListSecond.enable(false); + dropDownListThird.enable(false); + dropDownListSecond.value(-1); + dropDownListThird.value(-1); + $al.model._viewModel.secondIntermediateIataCode = null; + $al.model._viewModel.thirdIntermediateIataCode = null; + } else { + dropDownListSecond.value(-1); + dropDownListSecond.enable(true); + } + } + + onChangeSecondIntermediateAirportStop() { + + const dropDownListSecond = $al.view._elements.second_intermediate_iata.data.element.data( + "kendoDropDownList"); + const dropDownListThird = $al.view._elements.third_intermediate_iata.data.element.data( + "kendoDropDownList"); + const value = dropDownListSecond.value(); + if($al.view.isEmpty(value)){ + dropDownListThird.enable(false); + dropDownListThird.value(-1); + $al.model._viewModel.thirdIntermediateIataCode = null; + } else { + dropDownListThird.value(-1); + dropDownListThird.enable(true); + } + } + +} + +// Binding enter button click to form submit +$(document).keypress(function (e) { + if (e.which === 13) { + $("#search_data").click(); + } +}); + +$al.mvc(Model, View, Controller, true); + diff --git a/e-rights-back-office/src/main/webapp/static/scripts/admin/it-admin.js b/e-rights-back-office/src/main/webapp/static/scripts/admin/it-admin.js new file mode 100644 index 0000000..fe4cd72 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/admin/it-admin.js @@ -0,0 +1,188 @@ +class Model { + + constructor() { + + this.urls = { + action: { + } + }; + + this._restCalls = { + iataAirports: new $a.GetRestCall(null, "/internal/api/iata-airports"), + refreshAllBankAccountsFromSumma: new $a.PostRestCall(null, "/internal/api/summa/refresh-all-bank-from-summa"), + refreshOneBankAccountsFromSumma: new $a.GetRestCall(null, "/internal/api/summa/refresh-bank-from-summa-per-id/?perId={perId}"), + getOrderStatus: new $a.GetRestCall(null, "/internal/api/summa/order/{order_id}/status"), + + + iataRoutePrice: new $a.GetRestCall(null, + "/internal/api/iata-airports/route-price?originId={originId}&destinationId={destinationId}&firstStopId={firstStopId}&secondStopId={secondStopId}&thirdStopId={thirdStopId}&exerciseYear={exerciseYear}") + }; + } + + init() { + const dataPoolExecutor = new $a.RestCallPoolExecutor( + $al.model.onRetrieved); + dataPoolExecutor.add("iataAirports", $al.model._restCalls.iataAirports, + null, null); + dataPoolExecutor.run(); + + } + + onRetrieved(data) { + $al.model.iataAirports = data.get("iataAirports").data; + $al.model._renderPage(); + } + + _renderPage() { + + const viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel(); + $al.model._viewModel.amount = 0; + $al.model._viewModel.year = new Date().getFullYear(); + + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + $al.view._enableDisableFields(); + + } + + +} + +class View { + viewWizard; + + constructor() { + + this._elements = new $a.DataContainer("iataRoutesCalculation"); + this._templates = new $a.DataContainer("iataRoutesCalculation"); + this._templates.node("header").data(new $a.KendoTemplateData()); + this._templates.data(new $a.KendoTemplateData()); + this._elements.data(new $a.KendoElementData()); + this._elements.node("origin_iata").data(new $a.KendoElementData()); + this._elements.node("first_intermediate_iata").data( + new $a.KendoElementData()); + this._elements.node("destination_iata").data(new $a.KendoElementData()); + this._elements.node("second_intermediate_iata").data( + new $a.KendoElementData()); + this._elements.node("third_intermediate_iata").data( + new $a.KendoElementData()); + this._elements.node("year").data(new $a.KendoElementData()); + this._elements.node("per_id_bankaccount").data( + new $a.KendoElementData()); + + } + + render() { + $al.view._templates.data.compile(); + $al.view._templates.header.data.compile(); + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + } + + isEmpty(str) { + return (!str || (str && str.length === 0)); + } + + _enableDisableFields() { + + } + + _validateOriginDestAirports() { + + const originDestAirportValidator = $( + "#originDestAirport").kendoValidator().data( + "kendoValidator"); + if (!originDestAirportValidator.validate()) { + $al.view._scrollToId('originDestAirport'); + return false; + } + return true; + } + + _scrollToId(id) { + document.getElementById(id).scrollIntoView({block: "center"}); + } + +} + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, + "common.messages.e-rights", "e_rights.admin.it_admin", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.view.render(); + $al.notifyOnReadyMvc(); + $al.model.init(); + } + + + _refreshAllBankAccount(e) { + + $al.model._restCalls.refreshAllBankAccountsFromSumma.execute(null, null, null,null); + + } + _refreshOneBankAccount(e) { + $al.model._restCalls.refreshOneBankAccountsFromSumma.execute({perId: $al.model._viewModel.per_id_bankaccount}, null, null,null); + } + _getOrderStatus(e) { + $al.model._restCalls.getOrderStatus.execute({order_id: $al.model._viewModel.order_id}, null, null,null); + } + + + + + _onCalculateRoutesResponse(data) { + if (data.status === 200) { + let price = Number(data.responseJSON); + $('#amount').val(price); + } else if (data.status === 204) { + $('#amount').val(''); + $a.toast.showError($al.controller._languageBundle.no_price_found); + } else { + const validationErrors = $al.controller._extractMessagesFromErrorResponse( + data); + $a.toast.showError(validationErrors); + } + } + + _extractMessagesFromErrorResponse(response) { + + const text = response.responseText; + let textObj = null; + try { + textObj = JSON.parse(text); + } catch (parseExc) { + } + const messages = []; + if (textObj && textObj.items && textObj.items.length > 0) { + textObj.items.forEach(item => { + messages.push(item.message); + }); + return messages; + } else { + return [text]; + } + } + + +} + +// Binding enter button click to form submit +/*$(document).keypress(function (e) { + if (e.which === 13) { + $("#search_data").click(); + } +});*/ + +$al.mvc(Model, View, Controller, true); + diff --git a/e-rights-back-office/src/main/webapp/static/scripts/movement-docs/edit.js b/e-rights-back-office/src/main/webapp/static/scripts/movement-docs/edit.js new file mode 100644 index 0000000..53c2141 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/movement-docs/edit.js @@ -0,0 +1,333 @@ +class RequestModel { + + constructor() { + this._restCalls = { + + + getDocumentSections: new $a.GetRestCall(null, "/internal/api/movement-docs/sections"), + updateDocumentSections: new $a.PutRestCall(null, "/internal/api/movement-docs/sections"), + + }; + this.urls = { + action: { + viewMovementFile: $a.utils.url(null, "/movement-files/view.do"), + viewRequest: $a.utils.url(null, "/documents/view.do") + + } + }; + } + + + // init() { + // + // $al.model._restCalls.getRequest.execute({documentId: 4},null , $al.model.onRequestRetrieved); + // + // + // + // } + + init() { + $al.view._initializeView(); + $al.view._bindView(); + + $al.view.render(); + + } + + +} + +class RequestView { + + constructor() { + + this._templates = new $a.DataContainer("document"); + this._elements = new $a.DataContainer("document"); + + this._templates.data(new $a.KendoTemplateData()); + + this._elements.node("documentDocs").data(new $a.KendoElementData()); + + + this._templates.node("section").data(new $a.KendoTemplateData()); + + + this._templates.node("section").node("edit").data(new $a.KendoTemplateData()); + + this._templates.node("section").node("edit").node("items").data(new $a.KendoTemplateData()); + + + this._templates.node("section").node("view").data(new $a.KendoTemplateData()); + + this._templates.node("section").node("view").node("items").data(new $a.KendoTemplateData()); + + + } + + render() { + + + $al.view._templates.data.compile(); + + $al.view._renderDocumentSections(); + + + } + + + _renderDocumentSections() { + + var dataSourceListView = new kendo.data.DataSource({ + transport: { + read: function (options) { + $.ajax({ + url: $al.model._restCalls.getDocumentSections._url, + dataType: "json", + + success: function (result) { + // notify the data source that the request succeeded + options.success(result); + }, + error: function (result) { + // notify the data source that the request failed + options.error(result); + } + }); + }, + update: function (options) { + + $al.model._restCalls.updateDocumentSections.execute(null, null, options.data, $al.controller.confirmUpdate); + options.success(); + + }/*, + destroy: function(options) { + + $al.model._restCalls.updateDocumentSections.execute(null, null, options.data, $al.controller.confirmUpdate); + options.success(); + + }*/ + }, + schema: { + model: { + id: "id", + description: "string", + movementType: "integer", + movementContext: "integer", + hod: "boolean", + nonFamilyPosting: "boolean", + familyPosting: "boolean", + sortOrder: "integer", + enabled: "Boolean", + movementDocs: [{ + id: "id", + description: "string", + linkText: "string", + link: "boolean", + movementDocSectionId: "integer", + sortOrder: "integer", + movementDocAttachment: { + id: "id", + fileUid: "string", + fileName: "string", + movementDocId: "integer", + + } + }], + + + } + } + + + }); + + + $al.model.dataSourceListView = dataSourceListView; + + $al.view._elements.documentDocs.data.element.kendoListView({ + dataSource: dataSourceListView, + template: $al.view._templates.section.view.data.template, + editTemplate: $al.view._templates.section.edit.data.template, + autoBind: true, + + + edit: function (e) { + + $al.controller._editInit(e); + } + }); + + $al.view._elements.documentDocs.data.component = "kendoListView"; + $al.view._elements.documentDocs.data.element.removeClass('k-widget k-listview'); + } + + + _initializeView() { + var viewModel = new kendo.data.Model.define(); + + $al.model._viewModel = new viewModel({ + + document: $al.model.document, + + onUpdateAndApproveRequest: function () { + $al.controller.doUpdateAndApproveRequest(); + }, + onRejectRequest: function () { + $al.controller.doUpdateAndRejectRequest(); + }, + showMarkAsPaidDialog: function () { + $al.controller.doShowMarkAsPaidDialog(); + }, + showToPayDialog: function () { + $al.controller.doShowToPayDialog(); + }, + onDiscardChanges: function () { + $al.controller.refreshPage(); + }, + + displayClaimApproveRejectButtons: false, + canApprove: false, + canReject: false, + canMarkAsPaid: false, + canPay: false, + isTotalAmountDisabled: true, + onResubmit: function () { + + $al.controller.doResubmit(); + }, + someClaimRejected: false, + }); + + + } + + _bindView() { + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + + } +} + +class RequestController { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.movement_files.documents", false); + } + + _onLanguageBundleReady(languageBundle) { + + $al.controller._languageBundle = languageBundle; + + $al.model.init(); + $al.notifyOnReadyMvc(); + } + + doUpdateAndApproveRequest() { + + + if ($al.controller.validateBeforeUpdate('APPROVE')) { + + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.document, $al.controller._updateRequestResponse); + } + + + } + + + confirmUpdate(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.section_update_success); + $al.model.init(); + } + + + _editInit(e) { + + + if (typeof e.model.movementDocs !== "undefined") { + for (var i = 0; i < e.model.movementDocs.length; i++) { + var item = e.model.movementDocs.at(i); + var files = []; + + if (typeof item.get("movementDocAttachment") !== "undefined" && typeof item.get("movementDocAttachment").fileName !== "undefined") { + var modelArray = item.get("movementDocAttachment"); + var attach = {}; + attach.id = modelArray.id; + attach.name = '' + modelArray.fileName + ''; + attach.title = modelArray.fileName; + attach.extension = '.' + modelArray.fileName.split('.').pop(); + attach.fileUid = modelArray.fileUid; + files.push(attach); + + + } + + //$("#claim-id").kendoUpload({ + e.item.find("#claim-id" + item.id).kendoUpload({ + multiple: false, + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id" + item.id), + remove: $al.fileManagement.onRemove, + success: $al.controller._onOperationSuccess, + localization: { + select: "Select File ..." + }, + + files: files + }); + } + } + + } + + _onOperationSuccess(event) { + + + if (typeof event.sender !== "undefined") { + + + var movDocId = event.sender.element.attr('id').replace('claim-id', ''); + + var dRow = $(event.sender.element.closest("div")); + var mRow = dRow.closest(".k-edit-item"); + + + var listView = $("#document-documentDocs").data("kendoListView"); + var dataItem = listView.dataItem(mRow); + + + for (var i = 0; i < dataItem.movementDocs.length; i++) { + var movementDoc = dataItem.movementDocs.at(i); + + if (movementDoc.id == movDocId) { + + var movementDocAttachment = {}; + if (event.operation == "remove") { + movementDocAttachment.fileUid = event.files[0].fileUid; + movementDocAttachment.remove = true; + } else { + movementDocAttachment.fileUid = event.response.uid; + movementDocAttachment.fileName = event.response.name; + } + + movementDoc.set("movementDocAttachment", movementDocAttachment); + dataItem.dirty = true; + + + } + } + + } + + + } + + +} + +$al.mvc(RequestModel, RequestView, RequestController, true); \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.details-no-job.js b/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.details-no-job.js new file mode 100644 index 0000000..abf2481 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.details-no-job.js @@ -0,0 +1,378 @@ +class Model { + + constructor() { + this._restCalls = { + movementTypes: new $a.GetRestCall(null, "/internal/api/movement-types"), + removeInSession: new $a.PostRestCall(null, "/internal/api/remove-data"), + saveMovement: new $a.PostRestCall(null, "/internal/api/movement-files"), + save: new $a.PostRestCall(null, "/internal/api/session/save-movement-file-data"), + jobHolder: new $a.GetRestCall(null, "/internal/api/persons/{perId}"), + getMovementFileFromSession: new $a.GetRestCall(null, "/internal/api/session/collect-movement-file-data"), + saveMovementFileInSession: new $a.PostRestCall(null, "/internal/api/session/collect-movement-file-data"), + deleteMovementFileFromSession: new $a.DeleteRestCall(null, "/internal/api/session/collect-movement-file-data"), + saveMovementFile: new $a.PostRestCall(null, "/internal/api/session/save-movement-file-data"), + contextValues: new $a.GetRestCall(null, "/internal/api/contexts"), + searchHrsDocument: new $a.GetRestCall(null, "/internal/api/document"), + + }; + + this.urls = { + action: { + previous: $a.utils.url(null, "/movement-files/create-future-assignment.do"), + nextSummary: $a.utils.url(null, "/movement-files/summary.do"), + nextView: $a.utils.url(null, "/movement-files/view.do"), + } + }; + + // Fixed movement type in case of Rotation + this.NO_JOB_ROTATION_MOVEMENT_TYPE = "DEL-HQ"; + } + + init() { + $al.view.viewWizard.activateStep(3); + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model._onDataRetrievedPool); + dataPoolExecutor.add("movementFile", $al.model._restCalls.getMovementFileFromSession, null, null, null); + dataPoolExecutor.add("contextValues", $al.model._restCalls.contextValues, null); + + dataPoolExecutor.add("movementTypes", $al.model._restCalls.movementTypes, null, {contextId: $noJobDestinationType._getTypeByCode($movementContext).id}); + dataPoolExecutor.run(); + + + // $al.model._restCalls.getMovementFileFromSession.execute(null, null, $al.model._onDataRetrievedMovementFile); + // $al.model._restCalls.contextValues.execute(null, null, $al.model._onDataRetrievedContextValues); + // Load the movement types according to the movement context + // $al.model._restCalls.movementTypes.execute(null, { contextId: $noJobDestinationType._getTypeByCode($movementContext).id }, ); + + } + + + _onDataRetrievedPool(data) { + $al.model.contextValues = data.get("contextValues").data; + $al.model.movementTypes = data.get("movementTypes").data; + + var viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel(data.get("movementFile").data); + + $followupFlags.expandFollowupFlags($al.model._viewModel); + + // Set movement context flags + $al.model._viewModel.set("eoc", $movementContext == $noJobDestinationType.END_OF_CONTRACT.code); + $al.model._viewModel.set("rotation", $movementContext == $noJobDestinationType.ROTATION.code); + $al.model._viewModel.set("secondment", $movementContext == $noJobDestinationType.SECONDMENT.code); + $al.model._viewModel.set("crisis", $movementContext == $noJobDestinationType.CRISIS.code); + + if (typeof $al.model._viewModel.aipnNotifDate !== 'undefined') { + var aipnNotifDateKendoDatePicker = $al.view._elements.aipn_notif_date.data.element.data("kendoDatePicker"); + aipnNotifDateKendoDatePicker.value($a.utils.setTimeToMidnight(new Date($al.model._viewModel.aipnNotifDate))); + } + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + $al.view._elements.movement_type.data.element.kendoDropDownList({ + dataSource: $al.model.movementTypes, + dataTextField: "movementType", + dataValueField: "id", + optionLabel: "Please select...", + dataBound: $al.controller._onMovementTypeDataBound + }); + + + } + +} + +class View { + + constructor() { + this.viewWizard = new ViewWizard(); + this._templates = new $a.DataContainer("detailsnojob"); + this._elements = new $a.DataContainer("detailsnojob"); + + this._templates.data(new $a.KendoTemplateData()); + this._templates.node("header").data(new $a.KendoTemplateData()); + this._templates.node("movement").data(new $a.KendoTemplateData()); + this._templates.node("actions").data(new $a.KendoTemplateData()); + this._templates.node("aipn").data(new $a.KendoTemplateData()); + this._templates.node("notes").data(new $a.KendoTemplateData()); + + this._elements.node("context_selection").data(new $a.KendoElementData()); + this._elements.node("year_selection").data(new $a.KendoElementData()); + + // Individual checkboes for Followup flags. + this._elements.node("followup_urgent").data(new $a.KendoElementData()); + this._elements.node("followup_derogation").data(new $a.KendoElementData()); + this._elements.node("followup_doubleposting").data(new $a.KendoElementData()); + + + this._elements.node("rights").data(new $a.KendoElementData()); + this._elements.node("notes").data(new $a.KendoElementData()); + + this._elements.node("movement_type").data(new $a.KendoElementData()); + this._elements.node("aipn_notif_date").data(new $a.KendoElementData()); + this._elements.node("aipn_file_id").data(new $a.KendoElementData()); + this._elements.node("aipn_document_id").data(new $a.KendoElementData()); + + this._elements.node("aipn_notif_date_div").data(new $a.KendoElementData()); + this._elements.node("aipn_file_id_div").data(new $a.KendoElementData()); + + //commons templates + this._templates_common = new $a.DataContainer("common"); + this._elements_common = new $a.DataContainer("common"); + this._templates_common.data(new $a.KendoTemplateData()); + this._templates_common.node("wizard").data(new $a.KendoTemplateData()); + this._elements_common.node("wizard").data(new $a.KendoElementData()); + } + + render() { + $al.view._templates.data.compile(); + $al.view._templates.header.data.compile(); + $al.view._templates.movement.data.compile(); + $al.view._templates.aipn.data.compile(); + $al.view._templates.notes.data.compile(); + $al.view._templates.actions.data.compile(); + + //commons templates + $al.view._templates_common.wizard.data.compile(); + + $al.view._elements.rights.data.element.kendoSwitch({ + messages: { + checked: "Yes", + unchecked: "No" + } + }); + + $al.view._elements.aipn_notif_date.data.element.kendoDatePicker({ + max: $a.utils.setTimeToMidnight(new Date()), + parseFormats: ["dd/MM/yyyy"] + }); + + $al.view._elements.movement_type.data.element.kendoDropDownList(); + + } +} + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.movement_files.create", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.view.render(); + $al.notifyOnReadyMvc(); + + $al.model.init(); + } + + validate() { + var validator = $("#detailsNoJobForm").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + + return input.length > 0; + } else { + return true; + } + }, +/* endDateOfServiceInvalid: input => { + if (input.is("[name=end-date]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + },*/ + // aipnDocumentIdExists: input => { + // if (input.is("[name=aipn_file_id]")) { + // if(input.val().length>0){ + // + // return ($al.view._elements.aipn_document_id.data.element.val().length > 0) ; + // }else{ + // return true; + // } + // } else { + // return true; + // } + // } + }, + messages: { +// endDateOfServiceInvalid: "Invalid format of End Date", + // aipnDocumentIdExists: "AIPN Decisison is INVALID, Please validate the file or clear AIPN decision" + } + }).data("kendoValidator"); + + if (validator.validate()) { + // If the form is valid, the Validator will return true + } + return validator.validate(); + } + + // Prepare the data and go to the next step: no validation at this phase, only after the wizard is completed + _goToNext() { + + var rightsSwitchInstance = $al.view._elements.rights.data.element.data("kendoSwitch"); + + var context = $al.model.contextValues.find(item => { + return item.name === $movementContext + }); + + var aipnNotifDateKendoDatePicker = $al.view._elements.aipn_notif_date.data.element.data("kendoDatePicker"); + var aipnNotifDate = aipnNotifDateKendoDatePicker.value(); + + var aipnFileId = $al.view._elements.aipn_file_id.data.element.val(); + var aipnDocumentId = $al.view._elements.aipn_document_id.data.element.val(); + + var movementType = null; + + if ($al.controller.validate()) { + + $al.model._viewModel.movementContext = context; + + // Consolidate followupFlags for the next step + $followupFlags.compressFollowupFlags($al.model._viewModel); + + $al.model._viewModel.withoutRights = rightsSwitchInstance.check(); + + $al.model._viewModel.aipnFileId = aipnFileId; + $al.model._viewModel.aipnDocumentId = aipnDocumentId; + $al.model._viewModel.aipnNotifDate = $a.utils.toLocalDateISO(aipnNotifDate); + + // Set the movement type properly according to the movement context + switch($movementContext) { + case $noJobDestinationType.ROTATION.code: + + // ROTATION: get default and unique value + movementType = $al.model._viewModel.movementType; + + break; + + case $noJobDestinationType.SECONDMENT.code: + + // SECONDMENT: get the selected value + var selectedMovementType = $al.view._elements.movement_type.data.element.val(); + + movementType = $al.model.movementTypes.find(item => { + return item.id == selectedMovementType; + }); + + break; + + case $noJobDestinationType.END_OF_CONTRACT.code: + + // EOC: get the selected value + var selectedMovementType = $al.view._elements.movement_type.data.element.val(); + + movementType = $al.model.movementTypes.find(item => { + return item.id == selectedMovementType; + }); + + $al.model._viewModel.startDate = undefined; + case $noJobDestinationType.CRISIS.code: + + // CRISIS: get the selected value + var selectedMovementType = $al.view._elements.movement_type.data.element.val(); + + movementType = $al.model.movementTypes.find(item => { + return item.id == selectedMovementType; + }); + + break; + default: + break; + } + + $al.model._viewModel.movementType = movementType; + + if(typeof movementType !== 'undefined') { + + if (movementType.budgetLineJob === "CURRENT"){ + if( $a.utils.isNotNull($al.model._viewModel.budgetLineJobFrom)) { + $al.model._viewModel.budgetLine = $al.model._viewModel.budgetLineJobFrom; + } + } else { + if( $a.utils.isNotNull($al.model._viewModel.budgetLineJobTo)) { + $al.model._viewModel.budgetLine = $al.model._viewModel.budgetLineJobTo; + } + + } + } + + var obj = JSON.parse(JSON.stringify($al.model._viewModel)); + obj["id"] = $al.model._viewModel.id; + + $al.model._restCalls.saveMovementFileInSession.execute(null, obj, $al.controller._nextPage(), null); + } + } + + + _goToPrevious() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.previous, null, null)); + } + + _previousPage() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.previous, null, null)); + } + + _nextPage() { + if(typeof $al.model._viewModel.id === 'undefined') + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.nextSummary, null, null)); + else + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.nextView, null, { + id: $al.model._viewModel.id, + fromWizard: true + })); + } + + + checkHrsDocumentAndNext() { + var aipn_file_id = $al.view._elements.aipn_file_id.data.element.val(); + $al.controller._loadAipnDataAndNext(null); + } + + _loadAipnDataAndNext(data) { + if (data !== null) { + $al.model._viewModel.set("aipnDocumentId", data.documentId); + } + + $al.controller._goToNext(); + + } + + _onMovementTypeDataBound(event) { + // Auto-select delegation if it returns a single one. + if (event.sender.dataSource && event.sender.dataSource.data().length === 1) { + event.sender.select(1); + event.sender.trigger("change"); + } else { + // Match the Rotation default movement type with the list coming from REST service + if ($movementContext == $noJobDestinationType.ROTATION.code) { + event.sender.dataSource._data.forEach((e) => { + + if (e.movementType == $al.model.NO_JOB_ROTATION_MOVEMENT_TYPE) + $al.model._viewModel.set("movementType", e); + }); + } + + // Restore the movement type already selected if there is one + if (typeof $al.model._viewModel.movementType !== "undefined") { + let types = $al.view._elements.movement_type.data.element.data("kendoDropDownList"); + types.select(function (dataItem) { + if ($movementContext == $noJobDestinationType.ROTATION.code) + return dataItem.movementType == $al.model.NO_JOB_ROTATION_MOVEMENT_TYPE; + else + return dataItem.id == $al.model._viewModel.movementType.id; + }); + } + + event.sender.trigger("change"); + } + } + +} + +$al.mvc(Model, View, Controller, true); \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.details.js b/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.details.js new file mode 100644 index 0000000..9480b2e --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.details.js @@ -0,0 +1,304 @@ +class Model { + + constructor() { + this._restCalls = { + movementTypes: new $a.GetRestCall(null, "/internal/api/movement-types"), + removeInSession: new $a.PostRestCall(null, "/internal/api/remove-data"), + saveMovement: new $a.PostRestCall(null, "/internal/api/movement-files"), + save: new $a.PostRestCall(null, "/internal/api/session/save-movement-file-data"), + jobHolder: new $a.GetRestCall(null, "/internal/api/persons/{perId}"), + getMovementFileFromSession: new $a.GetRestCall(null, "/internal/api/session/collect-movement-file-data"), + saveMovementFileInSession: new $a.PostRestCall(null, "/internal/api/session/collect-movement-file-data"), + deleteMovementFileFromSession: new $a.DeleteRestCall(null, "/internal/api/session/collect-movement-file-data"), + saveMovementFile: new $a.PostRestCall(null, "/internal/api/session/save-movement-file-data"), + contextValues: new $a.GetRestCall(null, "/internal/api/contexts"), + searchHrsDocument: new $a.GetRestCall(null, "/internal/api/document"), + documentUrlById: new $a.GetRestCall(null, "/internal/api/document/url/{documentId}"), + }; + + this.urls = { + action: { + previous: $a.utils.url(null, "/movement-files/create-future-assignment.do"), + nextSummary: $a.utils.url(null, "/movement-files/summary.do"), + nextView: $a.utils.url(null, "/movement-files/view.do"), + } + }; + } + + init() { + $al.model._restCalls.getMovementFileFromSession.execute(null, null, $al.model._onDataRetrievedMovementFile); + $al.model._restCalls.contextValues.execute(null, null, $al.model._onDataRetrievedContextValues); + $al.view.viewWizard.activateStep(3); + } + + _onMovementTypesRetrieved(data) { + $al.model.movementTypes = data; + $al.view._renderMovementTypes(data); + } + + _onDataRetrievedJobHolder(data) { + $al.model.jobHolder = data; + } + + _onMovementTypesBasedOnContextSession(data) { + $al.model.movementTypes = data; + + $al.view._renderMovementTypes(data); + + if (typeof $al.model.movementFile.movementType !== "undefined") { + + let types = $al.view._elements.movement_type.data.element.data("kendoDropDownList"); + types.select(function (dataItem) { + return dataItem.id == $al.model.movementFile.movementType.id; + }); + } + + if (typeof $al.model.movementFile.aipnNotifDate !== 'undefined') { + var aipnNotifDateKendoDatePicker = $al.view._elements.aipn_notif_date.data.element.data("kendoDatePicker"); + aipnNotifDateKendoDatePicker.value($a.utils.setTimeToMidnight(new Date($al.model.movementFile.aipnNotifDate))); + } + } + + _onDataRetrievedMovementFile(data) { + $al.model.movementFile = data; + + var viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel(data); + + $followupFlags.expandFollowupFlags($al.model._viewModel); + + $al.model._viewModel.onSelectContext = $al.controller._onSelectContext; + + if (typeof $al.model.movementFile.movementContext !== "undefined") + $al.model._viewModel.set("context", $al.model.movementFile.movementContext.id); + else + $al.model._viewModel.set("context", 1); + + $al.model._restCalls.movementTypes.execute(null, {contextId: $al.model._viewModel.context}, $al.model._onMovementTypesBasedOnContextSession); + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + } + + _onDataRetrievedContextValues(data) { + $al.model.contextValues = data; + + } + +} + +class View { + + constructor() { + + this.viewWizard = new ViewWizard(); + + this._templates = new $a.DataContainer("details"); + this._elements = new $a.DataContainer("details"); + + + this._templates.data(new $a.KendoTemplateData()); + this._templates.node("header").data(new $a.KendoTemplateData()); + this._templates.node("movement").data(new $a.KendoTemplateData()); + this._templates.node("actions").data(new $a.KendoTemplateData()); + this._templates.node("aipn").data(new $a.KendoTemplateData()); + this._templates.node("notes").data(new $a.KendoTemplateData()); + + this._elements.node("context_selection").data(new $a.KendoElementData()); + this._elements.node("year_selection").data(new $a.KendoElementData()); + + // Individual checkboes for Followup flags. + this._elements.node("followup_urgent").data(new $a.KendoElementData()); + this._elements.node("followup_derogation").data(new $a.KendoElementData()); + this._elements.node("followup_doubleposting").data(new $a.KendoElementData()); + + + this._elements.node("movement_type").data(new $a.KendoElementData()); + this._elements.node("aipn_notif_date").data(new $a.KendoElementData()); + this._elements.node("aipn_file_id").data(new $a.KendoElementData()); + this._elements.node("aipn_document_id").data(new $a.KendoElementData()); + this._elements.node("notes").data(new $a.KendoElementData()); + + this._elements.node("aipn_notif_date_div").data(new $a.KendoElementData()); + this._elements.node("aipn_file_id_div").data(new $a.KendoElementData()); + + + //commons templates + this._templates_common = new $a.DataContainer("common"); + this._elements_common = new $a.DataContainer("common"); + this._templates_common.data(new $a.KendoTemplateData()); + this._templates_common.node("wizard").data(new $a.KendoTemplateData()); + this._elements_common.node("wizard").data(new $a.KendoElementData()); + + + } + + render() { + $al.view._templates.data.compile(); + $al.view._templates.header.data.compile(); + $al.view._templates.movement.data.compile(); + $al.view._templates.aipn.data.compile(); + $al.view._templates.notes.data.compile(); + $al.view._templates.actions.data.compile(); + + //commons templates + $al.view._templates_common.wizard.data.compile(); + + $al.view._elements.aipn_notif_date.data.element.kendoDatePicker({ + max: $a.utils.setTimeToMidnight(new Date()), + parseFormats: ["dd/MM/yyyy"] + }); + + $al.view._elements.movement_type.data.element.kendoDropDownList(); + } + + _renderMovementTypes(data) { + $al.view._elements.movement_type.data.element.kendoDropDownList({ + dataSource: data, + dataTextField: "movementType", + dataValueField: "id", + optionLabel: "Please select...", + autoWidth: true + }); + } +} + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.movement_files.create", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.view.render(); + $al.notifyOnReadyMvc(); + + $al.model.init(); + } + + validate() { + var validator = $("#detailsForm").kendoValidator({ + rules: { + movementContext: input => { + if (input.filter("[type=radio]") && input.is("[name=context]") && input.attr("required")) { + return $("#detailsForm").find("[type=radio][name=" + "context" + "]").is(":checked"); + } + return true; + }, + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + } + }, + messages: { + movementContext: "Movement Context is required" + } + }).data("kendoValidator"); + + if (validator.validate()) { + // If the form is valid, the Validator will return true + } + return validator.validate(); + } + + _onSelectContext(event) { + $al.model._restCalls.movementTypes.execute(null, {contextId: event.target.value}, $al.model._onMovementTypesRetrieved); + } + + _goToPrevious() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.previous, null, null)); + } + + _previousPage() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.previous, null, null)); + } + + _goToNext() { + + var selectedContext = $("input[name='context']:checked").val(); + var context = $al.model.contextValues.find(item => { + return item.id == selectedContext + }); + + var aipnNotifDateKendoDatePicker = $al.view._elements.aipn_notif_date.data.element.data("kendoDatePicker"); + var aipnNotifDate = aipnNotifDateKendoDatePicker.value(); + + var selectedMovementType = $al.view._elements.movement_type.data.element.val(); + + if ($al.controller.validate()) { + + var aipnFileId = $al.view._elements.aipn_file_id.data.element.val(); + var movementType = $al.model.movementTypes.find(item => { + return item.id == selectedMovementType; + }); + + $al.model.movementFile.movementType = movementType; + + // Consolidate followupFlags for the next step + $followupFlags.compressFollowupFlags($al.model._viewModel); + $al.model.movementFile.followupFlags = $al.model._viewModel.followupFlags; + + + $al.model.movementFile.movementContext = context; + $al.model.movementFile.aipnFileId = aipnFileId; + $al.model.movementFile.aipnNotifDate = $a.utils.toLocalDateISO(aipnNotifDate); + $al.model.movementFile.aipnDocumentId = $al.model._viewModel.aipnDocumentId; + $al.model.movementFile.internalComment = $al.model._viewModel.internalComment; + $al.model.movementFile.estimatedEndDate = undefined; + + if (movementType.budgetLineJob === "FUTURE" && $a.utils.isNotNull($al.model.movementFile.jobTo)) { + + $al.model.movementFile.budgetLine = $al.model.movementFile.budgetLineJobTo; + + } else if (movementType.budgetLineJob === "CURRENT" && $a.utils.isNotNull($al.model.movementFile.jobFrom)) { + + $al.model.movementFile.budgetLine = $al.model.movementFile.budgetLineJobFrom; + + } else { + if( !$a.utils.isNotNull($al.model.movementFile.jobTo)){ + $al.model.movementFile.budgetLine = $al.model.movementFile.budgetLineJobTo; + }else if( !$a.utils.isNotNull($al.model.movementFile.jobFrom)){ + $al.model.movementFile.budgetLine = $al.model.movementFile.budgetLineJobFrom; + } + } + + + $al.model._restCalls.saveMovementFileInSession.execute(null, $al.model.movementFile, $al.controller._nextPage(), null); + } + } + + _nextPage() { + if(typeof $al.model._viewModel.id === 'undefined') + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.nextSummary, null, null)); + else + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.nextView, null, { + id: $al.model.movementFile.id, + fromWizard: true + })); + } + + + checkHrsDocumentAndNext() { + var aipn_file_id = $al.view._elements.aipn_file_id.data.element.val(); + $al.controller._loadAipnDataAndNext(null); + } + + _loadAipnDataAndNext(data) { + if (data !== null) { + $al.model._viewModel.set("aipnDocumentId", data.documentId); + } + $al.controller._goToNext(); + } + + +} + +$al.mvc(Model, View, Controller, true); \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.future-assignment.js b/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.future-assignment.js new file mode 100644 index 0000000..b7bccc9 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.future-assignment.js @@ -0,0 +1,1049 @@ +class Model { + + constructor() { + this._restCalls = { + job: new $a.GetRestCall(null, "/internal/api/jobs/{jobId}"), + collectInSession: new $a.GetRestCall(null, "/internal/api/session/collect-movement-file-data"), + removeInSession: new $a.PostRestCall(null, "/internal/api/remove-data"), + saveMovementFileSession: new $a.PostRestCall(null, "/internal/api/session/collect-movement-file-data"), + countries: new $a.GetRestCall(null, "/internal/api/countries"), + cities: new $a.GetRestCall(null, "/internal/api/countries/{countryCode}/cities"), + budgetLines: new $a.GetRestCall(null, "/internal/api/abac-info/budget-line-erights"), + institutionCodes: new $a.GetRestCall(null, "/internal/api/institution-codes"), + functionCodes: new $a.GetRestCall(null, "/internal/api/function-codes"), + personnelTypes: new $a.GetRestCall(null, "/internal/api/personnel-types"), + }; + + this.urls = { + action: { + previous: $a.utils.url(null, "/movement-files/staff-member-data.do"), + next: $a.utils.url(null, "/movement-files/create-details.do"), + nextNoJob: $a.utils.url(null, "/movement-files/create-details-no-job.do"), + } + }; + + this.noJobDestinationTypeDS = new kendo.data.DataSource({ + data: $noJobDestinationType._getTypes() + }); + + this.COUNTRY_DEFAULT_OPTION = { + code: "Select a country", + name: "Select a country", + }; + + this.CITY_DEFAULT_OPTION = { + code: "Select a city", + name: "Select a city", + }; + + this.BUDGET_LINE_DEFAULT_OPTION = "Select a Commitment Position"; + + this.institutionCodes = [ + {institutionCode: 'COM',institutionDesc: 'Commission'}, + {institutionCode: 'EEAS',institutionDesc: 'EEAS'} + ] + ; + + + this.PERSONNEL_TYPE_DEFAULT_OPTION = "Select Personnel Type"; + this.INSTITUTION_DEFAULT_OPTION = "Select Institution"; + this.JOB_FUNCTION_DEFAULT_OPTION = "Select Job Function"; + } + + _getDataRetriveMovementFileFromSession() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model._onDataRetrievedMovementFile); + dataPoolExecutor.add("movementFile", $al.model._restCalls.collectInSession, null, null, null); + + dataPoolExecutor.add("functionCodes", $al.model._restCalls.functionCodes, null); + dataPoolExecutor.add("personnelTypes", $al.model._restCalls.personnelTypes, null); + dataPoolExecutor.run(); + + } + + _onDataRetrievedMovementFile(data) { + + $al.model.functionCodes = data.get("functionCodes").data; + $al.model.personnelTypes = data.get("personnelTypes").data; + $al.model.movementFile = data.get("movementFile").data; + + + + $al.view._bindData(); + + $al.model._viewModel.set("jobTo", {}); + } + + _getJob(jobId) { + var jobNoErrorMessage = kendo.format($al.controller._languageBundle.alerts.no_JobNo, jobId); + var exceptionHandlingData = new $a.RestCallExceptionHandlingData().set404(jobNoErrorMessage); + $al.model._restCalls.job.execute({jobId: jobId}, null, $al.controller._loadJobData, null, null, null, exceptionHandlingData); + } + + init() { + $al.model._getDataRetriveMovementFileFromSession(); + $al.view.viewWizard.activateStep(2); + } + +} + +class View { + + constructor() { + this.viewWizard = new ViewWizard(); + this.viewNojob = new ViewFileFutureAssignmentNoJob(); + this._templates = new $a.DataContainer("assignment"); + this._elements = new $a.DataContainer("assignment"); + + this._templates.data(new $a.KendoTemplateData()); + this._templates.node("header").data(new $a.KendoTemplateData()); + this._templates.node("info").data(new $a.KendoTemplateData()); + this._templates.node("actions").data(new $a.KendoTemplateData()); + this._templates.node("evacuation").data(new $a.KendoTemplateData()); + + this._elements.node("job_number").data(new $a.KendoElementData()); + this._elements.node("perId").data(new $a.KendoElementData()); + // This field is not a checkbox now: + // this._elements.node("non_family_posting").data(new $a.KendoElementData()); + this._elements.node("child_free_posting").data(new $a.KendoElementData()); + + this._elements.node("start_date").data(new $a.KendoElementData()); + this._elements.node("start_date_div").data(new $a.KendoElementData()); + + this._elements.node("is_evacuation_location").data(new $a.KendoElementData()); + this._elements.node("evacuation_country").data(new $a.KendoElementData()); + this._elements.node("evacuation_city").data(new $a.KendoElementData()); + + this._elements.node("no_job_destination_type").data(new $a.KendoElementData()); + + //commons templates + this._templates_common = new $a.DataContainer("common"); + this._elements_common = new $a.DataContainer("common"); + this._templates_common.data(new $a.KendoTemplateData()); + this._templates_common.node("wizard").data(new $a.KendoTemplateData()); + this._elements_common.node("wizard").data(new $a.KendoElementData()); + + this._templates_common.node("nojob").data(new $a.KendoTemplateData()); + this._elements_common.node("nojob").data(new $a.KendoElementData()); + + this._elements_common.node("nojob").node("future_country").data(new $a.KendoElementData()); + this._elements_common.node("nojob").node("future_city").data(new $a.KendoElementData()); + + this._elements_common.node("nojob").node("budget_line").data(new $a.KendoElementData()); + + this._elements_common.node("nojob").node("start_date").data(new $a.KendoElementData()); + this._elements_common.node("nojob").node("start_date_div").data(new $a.KendoElementData()); + this._elements_common.node("nojob").node("end_date").data(new $a.KendoElementData()); + this._elements_common.node("nojob").node("end_date_div").data(new $a.KendoElementData()); + this._elements_common.node("nojob").node("head_of_delegation").data(new $a.KendoElementData()); + this._elements_common.node("nojob").node("personnel_type").data(new $a.KendoElementData()); + this._elements_common.node("nojob").node("job_function").data(new $a.KendoElementData()); + this._elements_common.node("nojob").node("institution").data(new $a.KendoElementData()); + this._elements_common.node("nojob").node("non_family_posting").data(new $a.KendoElementData()); + } + + _render() { + $al.view._templates.data.compile(); + $al.view._templates.header.data.compile(); + $al.view._templates.info.data.compile(); + $al.view._templates.actions.data.compile(); + $al.view._templates.evacuation.data.compile(); + + //commons templates + $al.view._templates_common.wizard.data.compile(); + + $al.view._templates_common.nojob.data.compile(); + + + let currentYear = new Date().getFullYear(); + // in javascript counts months from 0 to 11 so 8 = September + $al.view._elements.start_date.data.element.kendoDatePicker({ + value: new Date(currentYear, 8, 1), + parseFormats: ["dd/MM/yyyy"] + }); + + // Ending date for no job + $al.view._elements_common.nojob.start_date.data.element.kendoDatePicker({ + value: new Date(currentYear, 8, 1), + parseFormats: ["dd/MM/yyyy"] + }); + + // Default value for ending date only in case of EOC + $al.view._elements_common.nojob.end_date.data.element.kendoDatePicker({ + parseFormats: ["dd/MM/yyyy"] + }); + + $al.view._renderNoJobDestinationTypeDropDown(); + } + + // Render menu to choose the no job option + _renderNoJobDestinationTypeDropDown() { + $al.view._elements.no_job_destination_type.data.element.kendoDropDownList({ + dataSource: $al.model.noJobDestinationTypeDS, + dataTextField: "selectionText", + dataValueField: "code", + optionLabel: 'SELECT CONTEXT', //'WITHOUT JOB NUMBER', + enable: true, + autoWidth: true, + open: function () { + // Hide the not selectable default option label when the dropdown is open + $al.view._elements.no_job_destination_type.data.element.getKendoDropDownList().list.find(".k-list-optionlabel").hide(); + }, + change: function () { + // Load data when there is no job + $al.controller._loadNoJobData(this.value(), $al.model.movementFile); + } + }); + } + + _bindData() { + var viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel($al.model.movementFile); + + // Go to next step button disabled by default until a selection has not been made + $al.model._viewModel.set("nextStepEnabled", false); + + // Set default value for posting + $al.model._viewModel.set("posting", "FAMILY_POSTING"); + + if ($jobId != 0) { // if job id is not in the query parameter default is 0 in controller, we only check for 0 + $al.model._getJob($jobId); + + } else if (typeof $al.model.movementFile.jobTo === 'undefined') { //there is no jobid in query parameter and nothing in the session we show search job only and end of contract + $al.model._viewModel.set("whenGetData", false); + $al.model._viewModel.set("isGoToEocVisible", true); + // Movement context for no job already selected: load data previously filled + if(typeof $al.model.movementFile.movementContext !== 'undefined') + $al.controller._loadNoJobData($al.model.movementFile.movementContext.name, $al.model.movementFile); + + } else { //there is no jobid in query parameter, but there is jobto in the movement file in session we show.Means it is comming from a pending MF + + $al.model._viewModel.set("whenGetData", true); + $al.model._viewModel.set("isGoToEocVisible", false); + + //evacuation + if (typeof $al.model.movementFile.jobTo.evacuationLevelCodeId != 'undefined') { + $al.model._viewModel.set("displayEvacuation", true); + + if (typeof $al.model.movementFile.jobTo.evacuationCode !== 'undefined') { + $al.controller._setEvacuationInfo($al.model.movementFile.jobTo.evacuationCode); + } + $al.view._elements.is_evacuation_location.data.element.prop("checked", $al.model.movementFile.evacuated); + + if ($al.model.movementFile.evacuated) { + $al.model._viewModel.set("canChangeDestination", true); + $al.model._restCalls.countries.execute(null, null, $al.controller._onLoadCountries); + } + + } + + // Load data corresponding to the job previously selected + $al.controller._loadJobData($al.model.movementFile.jobTo); + } + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } + + getAllocatedToText(noJobDestinationType) { + let text = ""; + + switch (noJobDestinationType) { + case $noJobDestinationType.SECONDMENT.code: + text = $al.controller._languageBundle.future_assignment.no_job.allocated_to.secondment; + break; + case $noJobDestinationType.ROTATION.code: + text = $al.controller._languageBundle.future_assignment.no_job.allocated_to.rotation; + break; + case $noJobDestinationType.CRISIS.code: + text = $al.controller._languageBundle.future_assignment.no_job.allocated_to.crisis; + break; + + default: + break; + } + + return text; + } + + // Render dropdown to allow the personnel type selection + _renderPersonnelTypeJobFunctionInstitutionDropDown() { + $al.view._elements_common.nojob.personnel_type.data.element.kendoDropDownList({ + dataSource: $al.model.personnelTypes, + optionLabel: $al.model.PERSONNEL_TYPE_DEFAULT_OPTION, + enable: true, + autoWidth: false, + dataTextField: "personnelTypeDesc", + dataValueField: "id", + }); + $al.view._elements_common.nojob.job_function.data.element.kendoDropDownList({ + dataSource: $al.model.functionCodes, + optionLabel: $al.model.JOB_FUNCTION_DEFAULT_OPTION, + enable: true, + autoWidth: false, + dataTextField: "nameEn", + dataValueField: "id", + }); + $al.view._elements_common.nojob.institution.data.element.kendoDropDownList({ + dataSource: $al.model.institutionCodes, + optionLabel: $al.model.INSTITUTION_DEFAULT_OPTION, + enable: true, + autoWidth: false, + dataTextField: "institutionDesc", + dataValueField: "institutionCode", + }); + } + + getPlaceOfOrigin(jobHolder) { + //place of origin + let placeOfOrigin; + if ((typeof jobHolder.originCity === 'undefined' || jobHolder.originCity === null) && (typeof jobHolder.originCountryDesc === 'undefined' || jobHolder.originCountryDesc === null)) { + placeOfOrigin = "No place of origin"; + } else if (typeof jobHolder.originCountryDesc === 'undefined' || jobHolder.originCountryDesc === null) { + placeOfOrigin = jobHolder.originCity; + } else if (typeof jobHolder.originCity === 'undefined' || jobHolder.originCity === null) { + placeOfOrigin = jobHolder.originCountryDesc; + } else { + placeOfOrigin = jobHolder.originCountryDesc + ', ' + jobHolder.originCity; + } + + return placeOfOrigin; + } +} + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.movement_files.create", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.view._render(); + $al.notifyOnReadyMvc(); + + $al.model.init(); + } + + validate() { + var validator = $("#detailsForm").kendoValidator({ + rules: { + startDateOfServiceInvalid: input => { + if (input.is("[name=start-date]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + jobNoInvalid: input => { + if (input.is("[name=job_number]")) { + let inputValue = $('input[name="job_number"]').val(); + let jobNoData = $al.model.movementFile.jobTo.id; + if (inputValue == jobNoData) { + return true; + } + } else { + return true; + } + }, + /* evacuationCountryDestination: input => { + if (input.is("[name=evacuationCountry]")) { + let isEvacuated = $al.view._elements.is_evacuation_location.data.element.prop("checked"); + let evacCountry = $al.view._elements.evacuation_country.data.element.val(); + if (isEvacuated && evacCountry == "") { + return false; + } else { + return true; + } + } else { + return true; + } + }, + evacuationCityDestination: input => { + if (input.is("[name=evacuationCity]")) { + let isEvacuated = $al.view._elements.is_evacuation_location.data.element.prop("checked"); + let evacCity = $al.view._elements.evacuation_city.data.element.val(); + if (isEvacuated && evacCity == "") { + return false; + } else { + return true; + } + } else { + return true; + } + } + + */ + }, + messages: { + startDateOfServiceInvalid: "Invalid format of Start Date", + jobNoInvalid: "Please enter a valid Job Number", +// evacuationCountryDestination: "Please enter the evacuation country", +// evacuationCityDestination: "Please enter the evacuation city" + } + }).data("kendoValidator"); + + if (validator.validate()) { + // If the form is valid, the Validator will return true + } + return validator.validate(); + } + + _getJob() { + var jobId = $al.view._elements.job_number.data.element.val(); + $al.model._getJob(jobId); + } + + // Load data in case of no job + _loadNoJobData(noJobDestinationType, movementFile) { + var endDateKendoDatePicker; + + + + // Show the section for no job + $("#common-nojob-wrapper").show(); + // Hide the section for job populated + $("#job-wrapper").hide(); + // Reset the job number in the search field + $("#assignment-job_number").val(null); + + // Show the form as well as it happens for files with destination job + $al.model._viewModel.set("whenGetData", true); + // Hide tip + $al.model._viewModel.set("isGoToEocVisible", false); + + // Load the Commitment Positions + + if(noJobDestinationType == 'CRISIS'){ //Only for this case we send the movemnettype, for the others we show all of them + $al.model._restCalls.budgetLines.execute(null, { movementContext : noJobDestinationType}, $al.controller._onLoadBudgetLines); + }else{ + $al.model._restCalls.budgetLines.execute(null, null, $al.controller._onLoadBudgetLines); + } + + + // Fill the start date with the value previously selected + if (typeof $al.model.movementFile.startDate !== 'undefined') { + var startDateKendoDatePicker = $al.view._elements_common.nojob.start_date.data.element.data("kendoDatePicker"); + startDateKendoDatePicker.value($a.utils.setTimeToMidnight(new Date($al.model.movementFile.startDate))); + } + + // Fill the end date with the value previously selected + if (typeof $al.model.movementFile.estimatedEndDate !== 'undefined') { + endDateKendoDatePicker = $al.view._elements_common.nojob.end_date.data.element.data("kendoDatePicker"); + endDateKendoDatePicker.value($a.utils.setTimeToMidnight(new Date($al.model.movementFile.estimatedEndDate))); + } + + // Step of the wizard already performed: there are some values to restore + if(typeof movementFile !== 'undefined') { + $al.view._elements.no_job_destination_type.data.element.data("kendoDropDownList").value(noJobDestinationType); + $al.model._viewModel.set("noJobDestinationType", noJobDestinationType); + + $al.model._viewModel.futureCountry = movementFile.countryTo; + $al.model._viewModel.futureCity = movementFile.cityTo; + if(typeof $al.model._viewModel.futureCity == "undefined" && noJobDestinationType == "ROTATION" ){ + $al.model.movementFile.countryTo = { code: "BEL", name: "BELGIUM" }; + $al.model.movementFile.cityTo = { code: "BRU", name: "BRUSSELS" }; + } + $al.model._viewModel.hodJobTo = movementFile.hodJobTo; + + if(!(typeof $al.model._viewModel.jobToFamilyPosting == "undefined") && !$al.model._viewModel.jobToFamilyPosting) + $al.model._viewModel.set("posting", 'NON_FAMILY_POSTING'); + else + $al.model._viewModel.set("posting", 'FAMILY_POSTING'); + + + if(!(typeof $al.model._viewModel.jobToFamilyPosting == "undefined") && !$al.model._viewModel.jobToFamilyPosting) + $al.model._viewModel.set("posting", 'NON_FAMILY_POSTING'); + + + } + + + + // The form was previously populated with a destination job: delete the job data + if($al.model._viewModel.jobPopulated) { + delete $al.model.movementFile.jobTo; + $al.model._viewModel.set("jobTo", { + + }); + + // From job to selected to no nob jumber: movement type has to be reset + $al.model._viewModel.set("movementType", null); + + // Reload the countries + $al.model._restCalls.countries.execute(null, null, $al.controller._onLoadMovingToCountries); + } + // First time the user goes through this step of the wizard + if(typeof $al.model._viewModel.jobPopulated === 'undefined') { + // Load the countries + $al.model._restCalls.countries.execute(null, null, $al.controller._onLoadMovingToCountries); + } + + // Movement context changed: movement type has to be reset + if(typeof $al.model.movementFile.movementContext !== 'undefined' && $al.model.movementFile.movementContext.name != noJobDestinationType.code) { + $al.model._viewModel.set("movementType", null); + } + + // No destination job selected + $al.model._viewModel.set("jobPopulated", false); + // A movement context for no job was selected: next step of the wizard enabled + $al.model._viewModel.set("nextStepEnabled", true); + + $al.controller.setMovementFileContextLogic(); + + $al.model._viewModel.set("allocatedToText", $al.view.getAllocatedToText(noJobDestinationType)); + + $al.view._renderPersonnelTypeJobFunctionInstitutionDropDown(); + } + + // Case of destination job data populated + _loadJobData(data) { + + + + // Hide form for no job + $("#common-nojob-wrapper").hide(); + // Show form with selected destination job data + $("#job-wrapper").show(); + + // Fill the start date with the value previously selected + if (typeof $al.model.movementFile.startDate !== 'undefined') { + var startDateKendoDatePicker = $al.view._elements.start_date.data.element.data("kendoDatePicker"); + startDateKendoDatePicker.value($a.utils.setTimeToMidnight(new Date($al.model.movementFile.startDate))); + } + + // Reset the no job dropdown selection forcing the choice to the abstract option label + $al.view._elements.no_job_destination_type.data.element.data("kendoDropDownList").value(0); + + // Delete the selected no job option + $al.model._viewModel.set("noJobDestinationType", null); + + // If there is no field "familyPostingType", we set it to the default: "Family Posting" + if (!data.hasOwnProperty("familyPostingType") || data.familyPostingType === null) { + data.familyPostingType = "Family Posting"; + data.familyPostingTypeCategory = "FAMILY"; + } + + + // Populate origin and destination jobs with data coming from the REST API + $al.model._viewModel.set("jobTo", data); + $al.model.movementFile.jobTo = data; + $al.model.movementFile.hodJobTo = data.hod; + $al.model.movementFile.jobFrom = $al.model._viewModel.jobFrom; + + // Show the form + $al.model._viewModel.set("whenGetData", true); + $al.model._viewModel.set("isGoToEocVisible", false); + if (typeof data.evacuationLevelCodeId != 'undefined') { + $al.model._viewModel.set("displayEvacuation", true); + + if (typeof data.evacuationCode !== 'undefined') { + $al.controller._setEvacuationInfo(data.evacuationCode); + } + + } else { + $al.model._viewModel.set("displayEvacuation", false); + } + + //Commitment Position we put it in the form when we search + $al.model._viewModel.set("budgetLineJobTo", data.budgetLine); + + if(!$al.model._viewModel.jobPopulated) { + // From no nob jumber to job selection: movement type has to be reset + $al.model._viewModel.set("movementType", null); + } + + // Mark destination job data as populated + $al.model._viewModel.set("jobPopulated", true); + + // A valid job was selected therefore the Go to next step button can be enabled + $al.model._viewModel.set("nextStepEnabled", true); + + // Mark the individual movement context for no job flags to false + $al.model._viewModel.set("eoc", false); + $al.model._viewModel.set("rotation", false); + $al.model._viewModel.set("secondment", false); + $al.model._viewModel.set("crisis", false); + + $al.model._viewModel.set("personnelTypeId", data.personnelTypeId); + $al.model._viewModel.set("personnelTypeDesc", data.personnelTypeDesc); + $al.model._viewModel.set("jobFunctionCode", data.jobFunctionCode); + $al.model._viewModel.set("jobFunctionDesc", data.jobFunctionDesc); + $al.model._viewModel.set("institutionCode", data.institutionCode); + $al.model._viewModel.set("institutionDesc", data.institutionDesc); + + + + + + + + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } + setMovementFileContextLogic( ){ + var endDateKendoDatePicker; + // Set the value for some specific fields according to the selected movement context + switch($al.model._viewModel.noJobDestinationType) { + // EOC + case $noJobDestinationType.END_OF_CONTRACT.code: + $al.model._viewModel.set("eoc", true); + $al.model._viewModel.set("rotation", false); + $al.model._viewModel.set("secondment", false); + $al.model._viewModel.set("crisis", false); + + // Place of origin is determinated by the job holder origin location data + $al.model._viewModel.set("placeOfOrigin", $al.view.getPlaceOfOrigin($al.model.movementFile.jobHolder)); + + // Propose a default value for the ending date + if(typeof $al.model.movementFile.estimatedEndDate === 'undefined') { + let currentYear = new Date().getFullYear(); + + endDateKendoDatePicker = $al.view._elements_common.nojob.end_date.data.element.data("kendoDatePicker"); + endDateKendoDatePicker.value(new Date(currentYear, 8, 1)); + } + break; + // SECONDMENT + case $noJobDestinationType.SECONDMENT.code: + $al.model._viewModel.set("eoc", false); + $al.model._viewModel.set("rotation", false); + $al.model._viewModel.set("secondment", true); + $al.model._viewModel.set("crisis", false); + + break; + // ROTATION + case $noJobDestinationType.ROTATION.code: + $al.model._viewModel.set("eoc", false); + $al.model._viewModel.set("rotation", true); + $al.model._viewModel.set("secondment", false); + $al.model._viewModel.set("crisis", false); + + break; + case $noJobDestinationType.CRISIS.code: + $al.model._viewModel.set("eoc", false); + $al.model._viewModel.set("rotation", false); + $al.model._viewModel.set("secondment", false); + $al.model._viewModel.set("crisis", true); + + break; + + default: + break; + } + } + + _setEvacuationInfo(evacuationCode) { + + let evacuationMEssageSplitted = evacuationCode.split(':'); + $al.model._viewModel.set("evacuationLevel", evacuationMEssageSplitted[0]); + var levelNo = evacuationMEssageSplitted[0].replace(/[^0-9]/g, ''); + $al.model._viewModel.set('evacuationIcon', "warning"); + $al.model._viewModel.set("evacuationMessage", evacuationMEssageSplitted[1]); + } + + doEvacuation() { + let is_evacuation_location = $al.view._elements.is_evacuation_location.data.element.prop("checked"); + + if (is_evacuation_location) { + $al.model._viewModel.set("canChangeDestination", true); + $al.model._restCalls.countries.execute(null, null, $al.controller._onLoadCountries); + } else { + $al.model._viewModel.set("canChangeDestination", false); + } + } + + // Load destination cities by selected country code + _getMovingToCities(code) { + if (code != "") { + $al.model._restCalls.cities.execute({countryCode: code}, null, $al.controller._loadMovingToCitiesData,null,null,true); + } else { + $al.view._elements_common.nojob.future_city.data.element.kendoDropDownList({ + optionLabel: $al.model.CITY_DEFAULT_OPTION, + value: $al.model.CITY_DEFAULT_OPTION.code + }); + } + } + + _getCities(code) { + if (code != "") { + $al.model._restCalls.cities.execute({countryCode: code}, null, $al.controller._loadCitiesData); + } else { + $al.view._elements.evacuation_city.data.element.kendoDropDownList({ + optionLabel: $al.model.CITY_DEFAULT_OPTION.name, + value: $al.model.CITY_DEFAULT_OPTION.code + }); + } + } + + _getCitiesFromSession(code) { + $al.model._restCalls.cities.execute({countryCode: code}, null, $al.controller._getCitiesData); + } + + _getMovingToCitiesFromSession(code) { + $al.model._restCalls.cities.execute({countryCode: code}, null, $al.controller._getMovingToCitiesData); + } + + // Render destination cities dropdown once the REST API has retrieved the list of cities + _loadMovingToCitiesData(cities) { + $al.view._elements_common.nojob.future_city.data.element.kendoDropDownList({ + dataSource: cities, + dataTextField: "name", + dataValueField: "code", + optionLabel: $al.model.CITY_DEFAULT_OPTION, + autoWidth: true, + noDataTemplate: 'Select first a country.', + }); + } + + _loadCitiesData(cities) { + $al.view._elements.evacuation_city.data.element.kendoDropDownList({ + dataSource: cities, + dataTextField: "name", + dataValueField: "code", + optionLabel: $al.model.CITY_DEFAULT_OPTION, + autoWidth: true + }); + } + + _getCitiesData(cities) { + $al.view._elements.evacuation_city.data.element.kendoDropDownList({ + dataSource: cities, + dataTextField: "name", + dataValueField: "code", + }); + + let evacCity = $al.view._elements.evacuation_city.data.element.data("kendoDropDownList"); + if (typeof $al.model.movementFile.cityTo != 'undefined') { + evacCity.select(function (dataItem) { + return dataItem.code == $al.model.movementFile.cityTo.code; + }); + } + } + + // Load the destination cities and select by default the one already chosen + _getMovingToCitiesData(cities) { + $al.view._elements_common.nojob.future_city.data.element.kendoDropDownList({ + dataSource: cities, + dataTextField: "name", + dataValueField: "code", + }); + + let city = $al.view._elements_common.nojob.future_city.data.element.data("kendoDropDownList"); + if (typeof $al.model.movementFile.cityTo != 'undefined') { + city.select(function (dataItem) { + return dataItem.code == $al.model.movementFile.cityTo.code; + }); + } + } + + // Render the destination country dropdown + _onLoadMovingToCountries(countries) { + $al.view._elements_common.nojob.future_country.data.element.kendoDropDownList({ + dataSource: countries, + dataTextField: "name", + dataValueField: "code", + optionLabel: $al.model.COUNTRY_DEFAULT_OPTION, + value: $al.model.COUNTRY_DEFAULT_OPTION.code, + autoWidth: true, + filter: "contains", + change: function () { + // Load the cities according to the selected country + var index = this.selectedIndex, dataItem; + dataItem = this.dataItem(index); + $al.controller._getMovingToCities(dataItem.code) + } + }); + + let countryTo =$al.view._elements_common.nojob.future_country.data.element.data("kendoDropDownList"); + + // Select by default the one already chosen + if (typeof $al.model.movementFile.countryTo != 'undefined') { + countryTo.select(function (dataItem) { + return dataItem.code == $al.model.movementFile.countryTo.code; + }); + $al.controller._getMovingToCitiesFromSession($al.model.movementFile.countryTo.code); + } else { + let dataItem = countryTo.dataItem(); + $al.controller._getMovingToCities(dataItem.code); + } + } + + _onLoadBudgetLines(budgetLines) { + $al.view._elements_common.nojob.budget_line.data.element.kendoDropDownList({ + dataSource: budgetLines, + optionLabel: $al.model.BUDGET_LINE_DEFAULT_OPTION, + value: null, + autoWidth: true, + enable: true + }); + + if(typeof $al.model.movementFile.budgetLineJobTo !== 'undefined') { + $al.view._elements_common.nojob.budget_line.data.element.data("kendoDropDownList").value($al.model.movementFile.budgetLineJobTo); + } + } + + _onLoadCountries(countries) { + $al.view._elements.evacuation_country.data.element.kendoDropDownList({ + dataSource: countries, + dataTextField: "name", + dataValueField: "code", + optionLabel: $al.model.COUNTRY_DEFAULT_OPTION.name, + value: $al.model.COUNTRY_DEFAULT_OPTION.code, + autoWidth: true, + filter: "contains", + change: function () { + var index = this.selectedIndex, dataItem; + dataItem = this.dataItem(index); + $al.controller._getCities(dataItem.code) + } + }); + + let evacCountry = $al.view._elements.evacuation_country.data.element.data("kendoDropDownList"); + + if (typeof $al.model.movementFile.countryTo != 'undefined') { + evacCountry.select(function (dataItem) { + return dataItem.code == $al.model.movementFile.countryTo.code; + }); + $al.controller._getCitiesFromSession($al.model.movementFile.countryTo.code); + } else { + let dataItem = evacCountry.dataItem(); + $al.controller._getCities(dataItem.code); + } + } + + _goToPrevious() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.previous, null)); + } + + // Wrap data in case of data coming from a job before storing them to the session and going to the next step + _wrapModelFromJob() { + // Get start date from the date picker + var startDateKendoDatePicker = $al.view._elements.start_date.data.element.data("kendoDatePicker"); + var startDate = startDateKendoDatePicker.value(); + + $al.model.movementFile.startDate = $a.utils.toLocalDateISO(startDate); + + //family posting + + $al.model.movementFile.jobToFamilyPosting = ($al.model.movementFile.jobTo.familyPostingTypeCategory == 'FAMILY'); + + //Budgetline copy from form + $al.model.movementFile.budgetLineJobTo = $al.model._viewModel.budgetLineJobTo; + + $al.model.movementFile.orgIdTo = $al.model.movementFile.jobTo.orgId; + $al.model.movementFile.orgCdTo = $al.model.movementFile.jobTo.organizationName; + $al.model.movementFile.assignStartDateTo = $al.model.movementFile.jobTo.assignedStartDate; + $al.model.movementFile.assignEndDateTo = $al.model.movementFile.jobTo.assignedEndDate; + if(startDate != null) + $al.model.movementFile.year = startDate.getFullYear(); + + // Movement context not acceptable for a Movement File with job number as previous choice? Reset the movement context + if(typeof $al.model.movementFile.movementContext !== 'undefined' && $al.model.movementFile.movementContext.name == $noJobDestinationType.END_OF_CONTRACT.code) + $al.model.movementFile.movementContext = undefined; + + //evacuation + let is_evacuation_location = $al.view._elements.is_evacuation_location.data.element.prop("checked"); + $al.model.movementFile.evacuated = is_evacuation_location; + + if (is_evacuation_location) { + let evacCountry = $al.view._elements.evacuation_country.data.element.data("kendoDropDownList"); + + $al.model.movementFile.countryTo = evacCountry.dataItem(); + + let evacCity = $al.view._elements.evacuation_city.data.element.data("kendoDropDownList"); + + $al.model.movementFile.cityTo = evacCity.dataItem(); + } else { + + $al.model.movementFile.countryTo = { + code: $al.model.movementFile.jobTo.jobCountryCode, + name: $al.model.movementFile.jobTo.jobCountryName + }; + $al.model.movementFile.cityTo = { + code: $al.model.movementFile.jobTo.jobCityCode, + name: $al.model.movementFile.jobTo.jobCityName + } + } + $al.model.movementFile.personnelTypeId = $al.model._viewModel.personnelTypeId; + $al.model.movementFile.personnelTypeDesc = $al.model._viewModel.personnelTypeDesc; + $al.model.movementFile.jobFunctionCode = $al.model._viewModel.jobFunctionCode; + $al.model.movementFile.jobFunctionDesc = $al.model._viewModel.jobFunctionDesc; + $al.model.movementFile.institutionCode = $al.model._viewModel.institutionCode; + $al.model.movementFile.institutionDesc = $al.model._viewModel.institutionDesc; + + + } + + // Wrap data in case of data not coming from a job before storing them to the session and going to the next step + _wrapModelFromNoJob() { + // Get end date from the date picker + var endDateKendoDatePicker = $al.view._elements_common.nojob.end_date.data.element.data("kendoDatePicker"); + var endDate = endDateKendoDatePicker.value(); + $al.model.movementFile.estimatedEndDate = $a.utils.toLocalDateISO(endDate); + + // Get selected country from the dropdown + let countrySel = $al.view._elements_common.nojob.future_country.data.element.data("kendoDropDownList"); + if(typeof countrySel.dataItem() !== 'undefined' && countrySel.dataItem().name !== $al.model.COUNTRY_DEFAULT_OPTION.name) + $al.model.movementFile.countryTo = countrySel.dataItem(); + else + $al.model.movementFile.countryTo = undefined; + + // Get selected city from the dropdown + let citySel = $al.view._elements_common.nojob.future_city.data.element.data("kendoDropDownList") + if(typeof citySel.dataItem() !== 'undefined' && citySel.dataItem().name !== $al.model.CITY_DEFAULT_OPTION.name) + $al.model.movementFile.cityTo = citySel.dataItem(); + else + $al.model.movementFile.cityTo = undefined; + + // Get selected Commitment Position from the dropdown + let budgetLineSel = $al.view._elements_common.nojob.budget_line.data.element.data("kendoDropDownList"); + if(typeof budgetLineSel !== 'undefined' && budgetLineSel.dataItem() !== $al.model.BUDGET_LINE_DEFAULT_OPTION) + $al.model.movementFile.budgetLineJobTo = budgetLineSel.dataItem(); + else + $al.model.movementFile.budgetLineJobTo = undefined; + + // Get selected personnel type from the dropdown + let personnelTypesel = $al.view._elements_common.nojob.personnel_type.data.element.data("kendoDropDownList"); + if(typeof personnelTypesel !== 'undefined' && personnelTypesel.dataItem().personnelTypeDesc != $al.model.PERSONNEL_TYPE_DEFAULT_OPTION) { + $al.model.movementFile.personnelTypeDesc = personnelTypesel.dataItem().personnelTypeDesc; + $al.model.movementFile.personnelTypeId = personnelTypesel.dataItem().id; + }else { + $al.model.movementFile.personnelTypeDesc = undefined; + $al.model.movementFile.personnelTypeId = undefined; + } + + // Get selected job function from the dropdown + let jobfunctionSel = $al.view._elements_common.nojob.job_function.data.element.data("kendoDropDownList"); + if(typeof jobfunctionSel !== 'undefined' && jobfunctionSel.dataItem().nameEn !== $al.model.JOB_FUNCTION_DEFAULT_OPTION) { + $al.model.movementFile.jobFunctionDesc = jobfunctionSel.dataItem().nameEn; + $al.model.movementFile.jobFunctionCode = jobfunctionSel.dataItem().id; + }else { + $al.model.movementFile.jobFunctionDesc = undefined; + $al.model.movementFile.jobFunctionCode = undefined; + } + + // Get selected institution from the dropdown + let institutionSel = $al.view._elements_common.nojob.institution.data.element.data("kendoDropDownList"); + if(typeof institutionSel !== 'undefined' && institutionSel.dataItem().institutionDesc !== $al.model.INSTITUTION_DEFAULT_OPTION) { + $al.model.movementFile.institutionDesc = institutionSel.dataItem().institutionDesc; + $al.model.movementFile.institutionCode = institutionSel.dataItem().institutionCode; + }else { + $al.model.movementFile.institutionDesc = undefined; + $al.model.movementFile.institutionCode = undefined; + } + + // End of Contract case + if($al.model._viewModel.eoc && endDate != null) { + // Get year from end date + $al.model.movementFile.year = endDate.getFullYear(); + } + // Rotation and secondment + else { + // Get start date + var startDateKendoDatePicker = $al.view._elements_common.nojob.start_date.data.element.data("kendoDatePicker"); + var startDate = startDateKendoDatePicker.value(); + $al.model.movementFile.startDate = $a.utils.toLocalDateISO(startDate); + if(startDate != null) + $al.model.movementFile.year = startDate.getFullYear(); + + // Get Head of Administration flag value + $al.model.movementFile.hodJobTo = $al.view._elements_common.nojob.head_of_delegation.data.element.prop("checked"); + // Get personnel type text + $al.model.movementFile.personnelType = $al.model._viewModel.personnelType; + } + + // Set some values specific of the movement context + switch($al.model._viewModel.noJobDestinationType) { + case $noJobDestinationType.SECONDMENT.code: + + // SECONDMENT + $al.model.movementFile.movementContext = { id: $noJobDestinationType.SECONDMENT.id, name: $noJobDestinationType.SECONDMENT.code } + // Get Family posting and non family posting flags from radiobox + $al.model.movementFile.jobToFamilyPosting = $al.model._viewModel.posting == 'FAMILY_POSTING'; + + break; + + case $noJobDestinationType.ROTATION.code: + + // ROTATION + $al.model.movementFile.movementContext = { id: $noJobDestinationType.ROTATION.id, name: $noJobDestinationType.ROTATION.code } + // Get Family posting and non family posting flags from radiobox + $al.model.movementFile.jobToFamilyPosting = $al.model._viewModel.posting == 'FAMILY_POSTING'; + + + break; + + case $noJobDestinationType.END_OF_CONTRACT.code: + + // EOC + $al.model.movementFile.movementContext = { id: $noJobDestinationType.END_OF_CONTRACT.id, name: $noJobDestinationType.END_OF_CONTRACT.code } + $al.model.movementFile.startDate = undefined; + $al.model.movementFile.jobToFamilyPosting = true; + + if ($al.model.movementFile.jobFrom) { + // Prevents access to sub-fields of undefined field, but we should always get inside this 'if' bc the Wizard checks + // if there is jobFrom in creation of EOC MF + $al.model.movementFile.personnelTypeId = $al.model.movementFile.jobFrom.personnelTypeId; + $al.model.movementFile.personnelTypeDesc = $al.model.movementFile.jobFrom.personnelTypeDesc; + $al.model.movementFile.jobFunctionCode = $al.model.movementFile.jobFrom.jobFunctionCode; + $al.model.movementFile.jobFunctionDesc = $al.model.movementFile.jobFrom.jobFunctionDesc; + $al.model.movementFile.institutionCode = $al.model.movementFile.jobFrom.institutionCode; + $al.model.movementFile.institutionDesc = $al.model.movementFile.jobFrom.institutionDesc; + } + $al.model.movementFile.hodJobTo = false; + $al.model.movementFile.budgetLine = undefined; + $al.model.movementFile.budgetLineJobTo = undefined; + + + break; + case $noJobDestinationType.CRISIS.code: + + // CRISIS + $al.model.movementFile.movementContext = { id: $noJobDestinationType.CRISIS.id, name: $noJobDestinationType.CRISIS.code } + // Get Family posting and non family posting flags from radiobox + $al.model.movementFile.jobToFamilyPosting = $al.model._viewModel.posting == 'FAMILY_POSTING'; + + break; + default: + break; + } + } + + _goToNext() { + // Wrap data before going to the next step + if($al.model._viewModel.jobPopulated) + $al.controller._wrapModelFromJob(); + else + $al.controller._wrapModelFromNoJob(); + // Save Movement File data in session and go to the next step + $al.model._restCalls.saveMovementFileSession.execute(null, $al.model.movementFile, $al.controller._nextPage(), null, null); + } + + _nextPage() { + if($al.model._viewModel.jobPopulated) + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.next, null, null)); + // In case of no job pass the movement context selected as query param + else + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.nextNoJob, null, {movementContext: $al.model.movementFile.movementContext.name})); + } + +} + +// Binding enter button click to form submit +$(document).keypress(function (e) { + if (e.which === 13) { + $("#get_job").click(); + } +}); + + +$al.mvc(Model, View, Controller, true); \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.job-holder.js b/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.job-holder.js new file mode 100644 index 0000000..be13c6f --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.job-holder.js @@ -0,0 +1,260 @@ +class Model { + + constructor() { + + this.urls = { + action: { + move: $a.utils.url(null, "/movement-files/staff-member-data.do") + } + }; + + this._restCalls = { + persons: new $a.GetRestCall(null, "/internal/api/persons?lastName={lastName}&firstName={firstName}&perId={perId}"), + getStaffMemberData: new $a.GetRestCall(null, "/internal/api/persons/{perId}"), + clearData: new $a.GetRestCall(null, "/internal/api/persons"), + getMovementFileFromSession: new $a.GetRestCall(null, "/internal/api/session/collect-movement-file-data") + }; + + + this._personsDS = new kendo.data.DataSource({ + pageSize: 200, + schema: { + data: "data", + model: { + fields: { + lastName: { + type: "string" + }, + firstName: { + type: "string" + }, + perId: { + type: "number" + } + } + } + } + }); + } + + _getPersonsData(lastName, firstName, perId) { + $al.model._restCalls.persons.execute({ + lastName: lastName, + firstName: firstName, + perId: perId + }, null, $al.controller._loadData, null, null, true); + } + + _getStaffMemberData(perId) { + $al.model._restCalls.persons.execute({perId: perId}, null, $al.controller._loadData); + } + + _getData() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.getData, null, {id: perId})); + } + + _clearData() { + $al.model._restCalls.clearData.execute(null, null, $al.controller._loadData, null, null, true); + } + + init() { + $al.model._restCalls.getMovementFileFromSession.execute(null, null, $al.model._onDataRetrievedMovementFile); + } + + _onDataRetrievedMovementFile(data) { + $al.model.movementFile = data; + var viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel(data); + + $al.model._viewModel.set("isGridVisible", false); + + + $al.view.viewWizard.activateStep(1); + + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } +} + +class View { + viewWizard; + + constructor() { + + this.viewWizard = new ViewWizard(); + + this._elements = new $a.DataContainer("jobHolder"); + this._templates = new $a.DataContainer("jobHolder"); + + this._templates.node("header").data(new $a.KendoTemplateData()); + this._templates.node("persons").node("search").data(new $a.KendoTemplateData()); + this._templates.node("persons").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("persons").node("wizard").data(new $a.KendoTemplateData()); + this._templates.node("persons").node("details").data(new $a.KendoTemplateData()); + this._templates.node("persons").node("currentassignment").data(new $a.KendoTemplateData()); + this._templates.node("persons").node("actions").data(new $a.KendoTemplateData()); + this._templates.node("persons").node("actions").node("edit").data(new $a.KendoTemplateData()); + + + this._elements.node("persons").node("search").node("last_name").data(new $a.KendoElementData()); + this._elements.node("persons").node("search").node("first_name").data(new $a.KendoElementData()); + this._elements.node("persons").node("search").node("per_id").data(new $a.KendoElementData()); + + + this._elements.node("persons").node("grid").data(new $a.KendoElementData()); + this._elements.node("persons").node("wizard").data(new $a.KendoElementData()); + this._elements.node("persons").node("details").data(new $a.KendoElementData()); + this._elements.node("persons").node("currentassignment").data(new $a.KendoElementData()); + + this._elements.node("persons").node("actions").data(new $a.KendoElementData()); + this._elements.node("persons").node("actions").node("edit").data(new $a.KendoElementData()); + + this._templates.data(new $a.KendoTemplateData()); + this._elements.data(new $a.KendoElementData()); + + + //commons templates + this._templates_common = new $a.DataContainer("common"); + this._elements_common = new $a.DataContainer("common"); + this._templates_common.data(new $a.KendoTemplateData()); + this._templates_common.node("wizard").data(new $a.KendoTemplateData()); + this._elements_common.node("wizard").data(new $a.KendoElementData()); + + + } + + render() { + $al.view._templates.data.compile(); + $al.view._templates.header.data.compile(); + $al.view._templates.persons.search.data.compile(); + $al.view._templates.persons.grid.data.compile(); + + $al.view._templates.persons.actions.edit.data.compile(); + + //commons templates + $al.view._templates_common.wizard.data.compile(); + + + $al.view._renderPersonsGrid(); + + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + } + + + _renderPersonsGrid() { + $al.view._elements.persons.grid.data.element.kendoGrid({ + dataSource: $al.model._personsDS, + scrollable: false, + sortable: true, + columns: [{ + title: "", + width: "38px", + attributes: { + "class": "p-2 pb-1", + }, + template: 'account_circle' + }, { + field: "lastName", + title: $al.controller._languageBundle.job_holder.last_name, + width: "40%", + attributes: {class: "font-weight-medium"} + }, { + field: "firstName", + title: $al.controller._languageBundle.job_holder.first_name, + width: "40%", + attributes: {class: "font-weight-medium"} + }, { + field: "perId", + title: $al.controller._languageBundle.job_holder.per_id, + width: "20%" + }, { + command: [ + { + name: "select", + text: "SELECT", + template: $al.view._templates.persons.actions.edit.data.template, + } + ], + attributes: {style: "white-space: nowrap;"}, + width: "100px" + }] + }); + $al.view._elements.persons.grid.data.component = "kendoGrid"; + + // Make the row clickable since there is only 1 button. + $("#jobHolder-persons-grid").on("click", "tbody tr", function (e) { + $al.controller.moveToJobHolderScreen(this); + }); + } + +} + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.movement_files.create", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.view.render(); + $al.notifyOnReadyMvc(); + + $al.model.init(); + } + + _getPersonsData(source) { + var lastName = $al.view._elements.persons.search.last_name.data.element.val(); + var firstName = $al.view._elements.persons.search.first_name.data.element.val(); + var perId = $al.view._elements.persons.search.per_id.data.element.val(); + + $al.model._getPersonsData(lastName, firstName, perId); + } + + _clearData(source) { + $al.view._elements.persons.search.last_name.data.element.val(""); + $al.view._elements.persons.search.first_name.data.element.val(""); + $al.view._elements.persons.search.per_id.data.element.val(""); + + $al.model._clearData(); + } + + _getStaffMemberData(source) { + var perId = $al.view._elements.persons.search.per_id.data.element.val(); + + $al.model._getStaffMemberData(perId); + } + + _loadData(data) { + $al.model._personsDS.data(data); + $al.model._viewModel.set("isGridVisible", true); + } + + _getStaffData(source) { + $al.model._getData(); + } + + moveToJobHolderScreen(source) { + + var item = $al.view._elements.persons.grid.data.component.dataItem($(source).closest("tr")); + + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.move, null, {perId: item.perId})); + } + +} + +// Binding enter button click to form submit +$(document).keypress(function (e) { + if (e.which === 13) { + $("#search_data").click(); + } +}); + +$al.mvc(Model, View, Controller, true); + diff --git a/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.staff-member-data.js b/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.staff-member-data.js new file mode 100644 index 0000000..50b5f55 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.staff-member-data.js @@ -0,0 +1,516 @@ +class Model { + + constructor() { + + this.EMAIL_REGEX = '^(([^<>()[\\]\\\\.,;:\\s@"]+(\\.[^<>()[\\]\\\\.,;:\\s@"]+)*)|(".+"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$'; + + this.urls = { + action: { + previousCreate: $a.utils.url(null, "/movement-files/create-job-holder.do"), + nextCreate: $a.utils.url(null, "/movement-files/create-future-assignment.do"), + goToCreateMovementFileFor: $a.utils.url(null, "/movement-files/staff-member-data.do") + } + }; + + this._restCalls = { + getStaffMemberData: new $a.GetRestCall(null, "/internal/api/persons/{perId}"), + saveMovementFileSession: new $a.PostRestCall(null, "/internal/api/session/collect-movement-file-data"), + removeInSession: new $a.PostRestCall(null, "/internal/api/remove-data"), + movementFileSession: new $a.GetRestCall(null, "/internal/api/session/collect-movement-file-data"), + countries: new $a.GetRestCall(null, "/internal/api/countries"), + iataAirports: new $a.GetRestCall(null, "/internal/api/iata-airports"), + cities: new $a.GetRestCall(null, "/internal/api/countries/{countryCode}/cities"), + job: new $a.GetRestCall(null, "/internal/api/jobs/{jobId}"), + setPrivatePersonEmail: new $a.PostRestCall(null, "/internal/api/person-emails"), + deletePrivatePersonEmail: new $a.DeleteRestCall(null, "/internal/api/person-emails/{personId}") + }; + + this.COUNTRY_DEFAULT_OPTION = { + code: "Select a country", + name: "Select a country", + }; + + this.CITY_DEFAULT_OPTION = { + code: "Select a city", + name: "Select a city", + }; + } + + _getStaffMemberData(perId) { + $al.model._restCalls.getStaffMemberData.execute({perId: perId}, null, $al.controller._loadData); + } + + _getDataRetriveMovementFileFromSession() { + $al.model._restCalls.movementFileSession.execute(null, null, $al.model._onDataRetrievedMovementFile); + } + _getIataCodes() { + $al.model._restCalls.iataAirports.execute(null, null, $al.model._onDataIata); + } + _onDataIata(data){ + + $al.view._elements.origin_iata.data.element.kendoDropDownList({ + dataSource: data, + dataTextField: "locationName", + dataValueField: "id", + optionLabel: "Select Airport", + value: $al.model._viewModel.iataCode, + autoWidth: true, + filter: "contains" + }); + + $al.model._viewModel.set("iataReady",true); + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } + + _onDataRetrievedMovementFile(data) { + + var viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel(data); + $al.model._viewModel.set("id", data.id); + + if ($perId != 0) { // Per id in url we get the satff with the perid in url + $al.model._getStaffMemberData($perId); + } else if (typeof $al.model._viewModel.jobHolder === 'undefined') { //there is no perid in url and nothing in the session we go to search staff + $al.model._previous(); + } else { //perid in url is not defined so we get the staff from the movement file in the session. + $al.model._getStaffMemberData($al.model._viewModel.jobHolder.perId); + } + + } + + _loadJobFromData(job_data) { + var oldJob = $al.model._viewModel.jobFrom; + + $al.model._viewModel.set("jobFrom", job_data); + // Establishing fromCity / Country + if (job_data) { + // There is current job. Set "from" if it does not exist + if (!$al.model._viewModel.hasOwnProperty("cityFrom") + || !$al.model._viewModel.hasOwnProperty("countryFrom") || + (typeof oldJob !== "undefined" && job_data.id != oldJob.id)) { + $al.model._viewModel.cityFrom = {}; + $al.model._viewModel.cityFrom.name = job_data.jobCityName; + $al.model._viewModel.cityFrom.code = job_data.jobCityCode; + $al.model._viewModel.countryFrom = {}; + $al.model._viewModel.countryFrom.name = job_data.jobCountryName; + $al.model._viewModel.countryFrom.code = job_data.jobCountryCode; + } + + $al.model._viewModel.set("delegationOrgFromId", job_data.delegationOrgId); + $al.model._viewModel.set("budgetLineJobFrom", job_data.budgetLine); + $al.model._viewModel.set("hodJobFrom", job_data.hod); + $al.model._viewModel.set("familyPosting", (job_data.familyPostingTypeCategory == "FAMILY")); + }else{ + $al.model._viewModel.set("hodJobFrom", false); + $al.model._viewModel.set("familyPosting", true); + } + + // Finally show the lists + $al.view._showCountryCityLists(true); + $al.model._restCalls.countries.execute(null, null, $al.controller._onLoadCountries); + } + + + init() { + + $al.model._getDataRetriveMovementFileFromSession(); + $al.model._getIataCodes(); + $al.view.viewWizard.activateStep(1); + + + } + + _previous() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.previousCreate, null, null)); + } + + _next() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.nextCreate, null, null)); + } + +} + +class View { + + constructor() { + this.viewWizard = new ViewWizard(); + + this._elements = new $a.DataContainer("staffMember"); + this._templates = new $a.DataContainer("staffMember"); + + this._templates.node("header").data(new $a.KendoTemplateData()); + this._templates.node("persons").node("details").data(new $a.KendoTemplateData()); + this._templates.node("persons").node("currentassignment").data(new $a.KendoTemplateData()); + this._templates.node("persons").node("actions").data(new $a.KendoTemplateData()); + + + this._elements.node("persons").node("details").node("last_name").data(new $a.KendoElementData()); + this._elements.node("persons").node("details").node("first_name").data(new $a.KendoElementData()); + this._elements.node("persons").node("details").node("per_id").data(new $a.KendoElementData()); + this._elements.node("persons").node("details").node("org_name").data(new $a.KendoElementData()); + + this._elements.node("persons").node("details").data(new $a.KendoElementData()); + + this._elements.node("persons").node("currentassignment").data(new $a.KendoElementData()); + + this._elements.node("persons").node("actions").data(new $a.KendoElementData()); + + this._elements.node("missing_location_country").data(new $a.KendoElementData()); + this._elements.node("origin_iata").data(new $a.KendoElementData()); + this._elements.node("missing_location_city").data(new $a.KendoElementData()); + this._elements.node("location_updated").data(new $a.KendoElementData()); + + this._templates.data(new $a.KendoTemplateData()); + this._elements.data(new $a.KendoElementData()); + + + //commons templates + this._templates_common = new $a.DataContainer("common"); + this._elements_common = new $a.DataContainer("common"); + this._templates_common.data(new $a.KendoTemplateData()); + this._templates_common.node("wizard").data(new $a.KendoTemplateData()); + this._elements_common.node("wizard").data(new $a.KendoElementData()); + } + + + render() { + $al.view._templates.data.compile(); + $al.view._templates.header.data.compile(); + $al.view._templates.persons.details.data.compile(); + $al.view._templates.persons.currentassignment.data.compile(); + $al.view._templates.persons.actions.data.compile(); + + //commons templates + $al.view._templates_common.wizard.data.compile(); + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }) + } + + _showCountryCityLists(visible) { + if (visible) { + $(".missing_location").css("display", "inline-block"); + } else { + $(".missing_location").css("display", "none"); + } + } + +} + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.movement_files.create", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.view.render(); + $al.notifyOnReadyMvc(); + $al.model.init(); + } + + _loadData(data) { + let gender; + if (data.gender === "M") + gender = $al.controller._languageBundle.job_holder.gender_male; + else { + gender = $al.controller._languageBundle.job_holder.gender_female; + } + + data.name = data.lastName + ', ' + data.firstName; + if (typeof data.recruitmentCity === 'undefined' || data.recruitmentCity === null) { + data.recruitmentPlace = "No place of recruitment"; + } else { + data.recruitmentPlace = data.recruitmentCity + ', ' + data.recruitmentCountry; + } + + if ((typeof data.originCity === 'undefined' || data.originCity === null) && (typeof data.originCountryDesc === 'undefined' || data.originCountryDesc === null)) { + data.originPlace = "No place of origin"; + } else if (typeof data.originCity === 'undefined' || data.originCity === null) { + data.originPlace = data.originCountryDesc; + } else if (typeof data.originCountryDesc === 'undefined' || data.originCountryDesc === null) { + data.originPlace = data.originCity; + } else { + data.originPlace = data.originCity + ', ' + data.originCountryDesc; + } + + // ------------ Adding Private email functionality --------------- + // 'data' is jobHolder + // We have entered the wizard to create MF, so we have permission to create/update a MF: + // Can create/update MFs, AND ( priv email source is ERIGHTS or no private email ) + let canEditPrivateEmail = data.privateEmailSource === 'ERIGHTS' || data.privateEmail == null; + $al.model._viewModel.canEditPrivateEmail = canEditPrivateEmail; + // Switch to show/hide input text + $al.model._viewModel.showPrivateEmailInput = false; + // ---------------------------------------------------------------- + + data.privateEmail = data.privateEmail == null ? "No Private Email" : data.privateEmail; + + $al.model._viewModel.jobHolder = data; + $al.model._viewModel.set("jobHolder.displayGender", gender); + + + $al.model._viewModel.orgIdFrom = data.orgId; + $al.model._viewModel.jobIdFrom = data.jobId; + // In any case, load JobFrom data + if (data.hasOwnProperty("jobId")) { + $al.model._viewModel.locationUpdated = false; + // There is jobId. Get its data and fill the countryFrom/cityFrom and then show the lists + // (this method will show the lists) + $al.model._restCalls.job.execute({jobId: data.jobId}, null, $al.model._loadJobFromData); + } else { + // No jobId, we can now show the lists + $al.model._viewModel.locationUpdated = true; + $al.view._showCountryCityLists(true); + $al.model._restCalls.countries.execute(null, null, $al.controller._onLoadCountries); + $al.model._viewModel.set("hodJobFrom", false); + $al.model._viewModel.set("familyPosting",true); + } + + + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } + + + _previousCreate(source) { + + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.previousCreate, null, null)); + } + + _nextCreate(source) { + + if($al.model._viewModel.locationUpdated) + { + let countryDataItem = $al.view._elements.missing_location_country.data.element.data("kendoDropDownList").dataItem(); + if(typeof countryDataItem !== 'undefined' && countryDataItem.name !== $al.model.COUNTRY_DEFAULT_OPTION.name) + $al.model._viewModel.countryFrom = countryDataItem; + + let cityDataItem = $al.view._elements.missing_location_city.data.element.data("kendoDropDownList").dataItem(); + if(typeof cityDataItem !== 'undefined' && cityDataItem.name !== $al.model.CITY_DEFAULT_OPTION.name) + $al.model._viewModel.cityFrom = cityDataItem; + } + if(typeof $al.view._elements.origin_iata.data.element.data("kendoDropDownList") != "undefined"){ + $al.model._viewModel.iataCode = $al.view._elements.origin_iata.data.element.data("kendoDropDownList").dataItem().id; + } + + + var obj = JSON.parse(JSON.stringify($al.model._viewModel)); + obj["id"] = $al.model._viewModel.id; + + $al.model._restCalls.saveMovementFileSession.execute(null, obj, $al.model._next(), null, null); + } + + _onLoadCountries(countries) { + + var selValue = $al.model.COUNTRY_DEFAULT_OPTION.code; + var selLabel = $al.model.COUNTRY_DEFAULT_OPTION.name; + + if ($al.controller._isEOC()) { + // EOC ============================ + if ($al.model._viewModel.countryTo) { + // This is the case when Country/City refers to TO (future location) + selValue = $al.model._viewModel.countryTo.code; + selLabel = $al.model._viewModel.countryTo.name; + } + } else { + // SECONDMENT / ROTATION ======================== + // Check if one needs to be selected: + if ($al.model._viewModel.countryFrom) { + // This is the case when Country/City refers to FROM (current location) + selValue = $al.model._viewModel.countryFrom.code; + selLabel = $al.model._viewModel.countryFrom.name; + } + } + + + + $al.view._elements.missing_location_country.data.element.kendoDropDownList({ + dataSource: countries, + dataTextField: "name", + dataValueField: "code", + optionLabel: selLabel, + value: selValue, + autoWidth: true, + filter: "contains", + change: function () { + + var index = this.selectedIndex, dataItem; + dataItem = this.dataItem(index); + + $al.controller._getCities(dataItem.code); + } + }); + + + // Load cities + if ($al.controller._isEOC()) { + // EOC + if ($al.model._viewModel.countryTo) { + $al.controller._getCities($al.model._viewModel.countryTo.code); + } else { + $al.controller._getCities(""); + } + } else { + // SECONDMENT/ROTATION + if ($al.model._viewModel.countryFrom) { + $al.controller._getCities($al.model._viewModel.countryFrom.code); + } else { + $al.controller._getCities(""); + } + } + + } + + _isSecRot() { + if (!$al.model._viewModel.hasOwnProperty("movementContext")) { + return false; + } + var mov_name = $al.model._viewModel.movementContext.name; + return mov_name === "SECONDMENT" || mov_name === "ROTATION"; + } + + _isEOC() { + if (!$al.model._viewModel.hasOwnProperty("movementContext")) { + return false; + } + var mov_name = $al.model._viewModel.movementContext.name; + return mov_name === "EOC"; + } + + _getCities(code) { + if (code != "") { + $al.model._restCalls.cities.execute({countryCode: code}, null, $al.controller._loadCitiesData); + } else { + // Force instantiation of city list + $al.controller._getCityDropdownListInstance(); + } + } + + _loadCitiesData(cities) { + + var selValue = "Select a city"; + var selLabel = "Select a city"; + + if ($al.controller._isEOC()) { + // EOC + if ($al.model._viewModel.cityTo) { + // This is the case when Country/City refer to TO (future location) + selValue = $al.model._viewModel.cityTo.code; + selLabel = $al.model._viewModel.cityTo.name; + } + } else { + // SECONDMENT/ROTATION + if ($al.model._viewModel.cityFrom) { + // This is the case when Country/City refer to FROM (current location) + selValue = $al.model._viewModel.cityFrom.code; + selLabel = $al.model._viewModel.cityFrom.name; + } + } + + var city_list = $al.controller._getCityDropdownListInstance(); + var dataSource = new kendo.data.DataSource({data: cities}); + city_list.data("kendoDropDownList").setDataSource(dataSource); + city_list.data("kendoDropDownList").select(function (dataItem) { + return dataItem.code === selValue; + }); + } + + _onCityChange(e) { + var index = e.sender.selectedIndex, dataItem; + dataItem = e.sender.dataItem(index); + // Log + + // Set city + if ($al.controller._isEOC()) { + // EOC + $al.model._viewModel.cityTo = {}; + $al.model._viewModel.cityTo.code = dataItem.code; + $al.model._viewModel.cityTo.name = dataItem.name; + } else { + // SECONDMENT/ROTATION + $al.model._viewModel.cityFrom = {}; + $al.model._viewModel.cityFrom.code = dataItem.code; + $al.model._viewModel.cityFrom.name = dataItem.name; + } + } + + _getCityDropdownListInstance() { + if ($al.view._cityDropdownListInstance) { + return $al.view._cityDropdownListInstance; + } else { + var list = $al.view._elements.missing_location_city.data.element.kendoDropDownList({ + dataTextField: "name", + dataValueField: "code", + optionLabel: $al.model.CITY_DEFAULT_OPTION, + value: $al.model.CITY_DEFAULT_OPTION.code, + autoWidth: true, + noDataTemplate: 'Select a country first.', + change: $al.controller._onCityChange + }); + $al.view._cityDropdownListInstance = list; + return list; + } + + } + + // --- Adding new private email functionality + showEmailInputBox(event) { + $al.model._viewModel.set("showPrivateEmailInput", true); + + var initVal = $al.model._viewModel.jobHolder.privateEmail; + if (!initVal || initVal.toLowerCase().startsWith("no ")) { + initVal = ''; + $("#jobHolder-private-email-save").prop('disabled', true); + } else { + $("#jobHolder-private-email-save").prop('disabled', false); + } + $("#jobHolder-private-email-input").val(initVal); + } + saveNewPrivateEmail(event) { + var newEmail = $("#jobHolder-private-email-input").val(); + // If 'newEmail' is the empty string, then delete the private email + + var personId = $al.model._viewModel.jobHolder.perId; + + if (newEmail === '') { + // Delete the private email of the person (the one added from e-RIGHTS) + // For callback, we use the 5th parameter 'onComplete' because 3rd parameter 'onSuccess' does not work for DELETE (?) + $al.model._restCalls.deletePrivatePersonEmail.execute( { personId: personId }, null, null, null, $al.controller._onPrivateEmailSet); + } else { + $al.model._restCalls.setPrivatePersonEmail.execute(null, { perId: personId, email: newEmail, emailType: "PRIV" }, + $al.controller._onPrivateEmailSet); + } + } + + cancelNewPrivateEmail(event) { + // Restore visibility of empty private email + $al.model._viewModel.set("showPrivateEmailInput", false); + } + _onPrivateEmailSet(backend_response) { + // The private email has been set (created or updated) + // Refresh page (adding MF with current perId) + // $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.view, null, {id: $al.model.edit.movementFile.id})); + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.goToCreateMovementFileFor, null, + { perId: $al.model._viewModel.jobHolder.perId })); + } + + // Allows empty string, used to delete private email: + checkValidPrivateEmail() { + var newEmail = $("#jobHolder-private-email-input").val(); + + // Validates email with basic regex + var validEmail = (newEmail === '') || String(newEmail).toLowerCase().match($al.model.EMAIL_REGEX); + + $("#jobHolder-private-email-save").prop('disabled', !validEmail); + } + +} + +$al.mvc(Model, View, Controller, true); \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.summary.js b/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.summary.js new file mode 100644 index 0000000..1aef4e6 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/movement-file/file.summary.js @@ -0,0 +1,811 @@ +class Model { + + constructor() { + this._restCalls = { + movementFile: new $a.GetRestCall(null, "/internal/api/movement-files/{fileId}"), + movementTypes: new $a.GetRestCall(null, "/internal/api/movement-types"), + createAsPending: new $a.PostRestCall(null, "/internal/api/movement-files/pending"), + createAsDraft: new $a.PostRestCall(null, "/internal/api/movement-files/draft"), + draftToPending: new $a.PostRestCall(null, "/internal/api/movement-files/draft-to-pending"), + discard: new $a.DeleteRestCall(null, "/internal/api/session/collect-movement-file-data", true), + getMovementFileFromSession: new $a.GetRestCall(null, "/internal/api/session/collect-movement-file-data"), + permissions: new $a.GetRestCall(null, "/internal/api/permissions"), + documentUrlById: new $a.GetRestCall(null, "/internal/api/document/url/{documentId}"), + countries: new $a.GetRestCall(null, "/internal/api/countries"), + cities: new $a.GetRestCall(null, "/internal/api/countries/{countryCode}/cities"), + job: new $a.GetRestCall(null, "/internal/api/jobs/{jobId}"), + saveBankAccounts: new $a.GetRestCall(null, "/internal/api/summa/refresh-bank-from-summa-per-id?perId={personId}"), + deleteMovementFileFromSession: new $a.DeleteRestCall(null, "/internal/api/session/collect-movement-file-data"), + iataAirportCityCode : new $a.GetRestCall(null,"/internal/api/iata-airports/city/{cityCode}"), + iataAirport : new $a.GetRestCall(null,"/internal/api/iata-airports/{id}"), + + }; + + this.urls = { + action: { + view: $a.utils.url(null, "/movement-files/view.do"), + staffMembers: $a.utils.url(null, "/movement-files/create-job-holder.do"), + details: $a.utils.url(null, "/movement-files/create-details.do"), + noJobDetails: $a.utils.url(null, "/movement-files/create-details-no-job.do"), + futureAssignment: $a.utils.url(null, "/movement-files/create-future-assignment.do"), + navigateToList: $a.utils.url(null, "/list/movement-files.do"), + createMovementFile: $a.utils.url(null, "/movement-files/create-job-holder.do"), + jobHolderScreen: $a.utils.url(null, "/movement-files/staff-member-data.do") + } + }; + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.controller._loadData); + + dataPoolExecutor.add("permissions", $al.model._restCalls.permissions); + dataPoolExecutor.add("movementFile", $al.model._restCalls.getMovementFileFromSession); + dataPoolExecutor.run(); + + + + + } + + deleteMovementFile() { + $al.model._restCalls.delete.execute({fileId: $al.model.movementFile.id}, null, $al.controller.onMovementFileDeleted); + } + + _getMovementTypes() { + + var dataPoolExecutor2 = new $a.RestCallPoolExecutor($al.view._renderMovementTypes); + + + dataPoolExecutor2.add("movementContext",$al.model._restCalls.movementTypes,null,{contextId: $al.model.movementFile.movementContext.id}); + if (typeof $al.model.movementFile.cityFrom != "undefined") { + dataPoolExecutor2.add("iataFrom",$al.model._restCalls.iataAirportCityCode,{cityCode: $al.model.movementFile.cityFrom.code} ); + } + if (typeof $al.model.movementFile.cityTo != "undefined") { + dataPoolExecutor2.add("iataTo", $al.model._restCalls.iataAirportCityCode, {cityCode: $al.model.movementFile.cityTo.code}); + } + if($al.model.movementFile.iataCode) { + dataPoolExecutor2.add("iataOrigin", $al.model._restCalls.iataAirport, {id: $al.model.movementFile.iataCode}); + } + dataPoolExecutor2.run(); + + + + } +} + +class View { + + constructor() { + this._templates = new $a.DataContainer("edit"); + + this._elements = new $a.DataContainer("edit"); + + this._templates.data(new $a.KendoTemplateData()); + this._templates.node("basic").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("warn").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("staffMember").data(new $a.KendoTemplateData()); + this._templates.node("destination").data(new $a.KendoTemplateData()); + this._templates.node("details").data(new $a.KendoTemplateData()); + this._templates.node("actions").data(new $a.KendoTemplateData()); + this._templates.node("title").data(new $a.KendoTemplateData()); + this._templates.node("delete").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("validationRedirect").node("dialog").data(new $a.KendoTemplateData(), "footer"); + + // Individual checkboes for Followup flags. + this._elements.node("followup_urgent").data(new $a.KendoElementData()); + this._elements.node("followup_derogation").data(new $a.KendoElementData()); + this._elements.node("followup_doubleposting").data(new $a.KendoElementData()); + + + this._elements.node("start_date").data(new $a.KendoElementData()); + this._elements.node("end_date").data(new $a.KendoElementData()); + // this._elements.node("aipn_notif_date").data(new $a.KendoElementData()); + this._elements.node("year").data(new $a.KendoElementData()); + this._elements.node("context").data(new $a.KendoElementData()); + // This field is not a checkbox now: + // this._elements.node("non_family_posting").data(new $a.KendoElementData()); + this._elements.node("child_free_posting").data(new $a.KendoElementData()); + this._elements.node("movement_type").data(new $a.KendoElementData()); + this._elements.node("iata_code_from").data(new $a.KendoElementData()); + this._elements.node("iata_code_from_code").data(new $a.KendoElementData()); + this._elements.node("iata_code_from_container").data(new $a.KendoElementData()); + this._elements.node("iata_code_to").data(new $a.KendoElementData()); + this._elements.node("iata_code_to_code").data(new $a.KendoElementData()); + this._elements.node("iata_code_to_container").data(new $a.KendoElementData()); + this._elements.node("iata_code_origin").data(new $a.KendoElementData()); + this._elements.node("iata_code_origin_code").data(new $a.KendoElementData()); + this._elements.node("iata_code_origin_container").data(new $a.KendoElementData()); + + this._elements.node("notes").data(new $a.KendoElementData()); + + this._templates_eoc = new $a.DataContainer("eoc"); + this._elements_eoc = new $a.DataContainer("eoc"); + this._templates_eoc.data(new $a.KendoTemplateData()); + this._templates_eoc.node("details").data(new $a.KendoTemplateData()); + this._elements_eoc.node("details").data(new $a.KendoElementData()); + this._templates_eoc.node("destination").data(new $a.KendoTemplateData()); + this._elements_eoc.node("destination").data(new $a.KendoElementData()); + + this._elements_eoc.node("rights").data(new $a.KendoElementData()); + + //evacuation inside destination section + this._templates_evacuation = new $a.DataContainer("evacuation"); + this._elements_evacuation = new $a.DataContainer("evacuation"); + this._templates_evacuation.node("destination").data(new $a.KendoTemplateData()); + this._elements_evacuation.node("is_evacuation_location").data(new $a.KendoElementData()); + this._elements_evacuation.node("evacuation_country").data(new $a.KendoElementData()); + this._elements_evacuation.node("evacuation_city").data(new $a.KendoElementData()); + + } + + _render() { + $al.view._templates.data.compile(); + $al.view._templates.actions.data.compile(); + $al.view._templates.staffMember.data.compile(); + + $al.view._templates.details.data.compile(); + $al.view._templates.title.data.compile(); + + if ($al.model.movementFile.movementContext.name === 'EOC') { + $al.view._templates_eoc.details.data.compile(); + $al.view._templates_eoc.destination.data.compile(); + } else { + $al.view._templates.destination.data.compile(); + } + + $al.view._elements.start_date.data.element.kendoDatePicker(); + $al.view._elements.end_date.data.element.kendoDatePicker({ + parseFormats: ["yyyy-MM-dd"] + }); + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }) + } + + /* Unused (?) + _showDeleteDialog() { + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.actions.delete.dialog.title, + $al.controller._languageBundle.actions.delete.dialog.body, + $al.view._templates.delete.dialog.footer.template({})) + ; + } + */ + + _initializeView(data) { + var viewModel = new kendo.data.Model.define(); + $al.view.familyPostingLogic(data); + $al.view.budgetLineLogic(data); + $al.model._viewModel = new viewModel(data); + $al.model.movementFile = data; + + $followupFlags.expandFollowupFlags($al.model._viewModel); + + let jobHolder = data['jobHolder']; + + $al.model._viewModel.name = jobHolder.firstName + ', ' + jobHolder.lastName; + + //place of recruitment + let placeOfRecruitment; + if (typeof jobHolder.recruitmentCity === 'undefined' || jobHolder.recruitmentCity === null) { + placeOfRecruitment = "No place of recruitment"; + } else { + placeOfRecruitment = jobHolder.recruitmentCountry + ', ' + jobHolder.recruitmentCity; + } + $al.model._viewModel.placeOfRecruitment = placeOfRecruitment; + + //place of origin + let placeOfOrigin; + if ((typeof jobHolder.originCity === 'undefined' || jobHolder.originCity === null) && (typeof jobHolder.originCountryDesc === 'undefined' || jobHolder.originCountryDesc === null)) { + placeOfOrigin = "No place of origin"; + } else if (typeof jobHolder.originCountryDesc === 'undefined' || jobHolder.originCountryDesc === null) { + placeOfOrigin = jobHolder.originCity; + } else if (typeof jobHolder.originCity === 'undefined' || jobHolder.originCity === null) { + placeOfOrigin = jobHolder.originCountryDesc; + } else { + placeOfOrigin = jobHolder.originCountryDesc + ', ' + jobHolder.originCity; + } + $al.model._viewModel.placeOfOrigin = placeOfOrigin; + + //private email + let privateEmail = jobHolder.privateEmail == null ? "No Private Email" : jobHolder.privateEmail; + + $al.model._viewModel.privateEmail = privateEmail; + + $al.model._viewModel.aipnNotifDateFromatted = kendo.toString(kendo.parseDate($al.model._viewModel.aipnNotifDate), 'MMM dd, yyyy'); + + //gender + let gender; + if (jobHolder.gender === "M") { + gender = $al.controller._languageBundle.staff_member.gender_male; + } else { + gender = $al.controller._languageBundle.staff_member.gender_female; + } + $al.model._viewModel.gender = gender; + + //permissions + $al.model._viewModel.canCreate = $al.model.permissions.canCreate; + $al.model._viewModel.canUpdate = $al.model.permissions.canUpdate; + + // No job number: set the destination to the description corresponding to the movement context + if(typeof $al.model.movementFile.jobTo === 'undefined') + $al.model._viewModel.set("allocatedToText", $al.view.getAllocatedToText($al.model.movementFile.movementContext.name)); + + // Set as true if the Movement File has a value for destination job + $al.model._viewModel.set("hasJobTo", typeof data.jobTo !== 'undefined'); + + // Set job type description and Family Posting according to the destination job + if($al.model._viewModel.hasJobTo) { + $al.model._viewModel.jobTypeDesc = data.jobTo.jobType; + } + + if( $al.model.movementFile.hodJobFrom == true || $al.model.movementFile.hodJobTo == true ){ + $al.model._viewModel.hodPosting = true; + }else{ + $al.model._viewModel.hodPosting = false; + } + + if(typeof $al.model.movementFile.movementType !== 'undefined') { + + if ($al.model.movementFile.movementType.budgetLineJob === "CURRENT"){ + if( $a.utils.isNotNull($al.model.movementFile.budgetLineJobFrom)) { + $al.model.movementFile.budgetLine = $al.model.movementFile.budgetLineJobFrom; + } + } else { + if( $a.utils.isNotNull($al.model.movementFile.budgetLineJobTo)) { + $al.model.movementFile.budgetLine = $al.model.movementFile.budgetLineJobTo; + } + + } + } + + // Repeat the Follow up flag in the header of the MF + if($al.model._viewModel.followupFlags) { + $al.model._viewModel.set('urgentPresent', $al.model._viewModel.followupFlags.includes('Urgent') ); + $al.model._viewModel.set('derogationPresent', $al.model._viewModel.followupFlags.includes('Derogation') ); + $al.model._viewModel.set('doublepostingPresent', $al.model._viewModel.followupFlags.includes('DoublePosting') ); + } + + } + + familyPostingLogic(movementFile){ + if(typeof movementFile.jobTo != "undefined" && typeof movementFile.jobTo.familyPostingTypeCategory != "undefined" ){ + if(movementFile.jobTo.familyPostingTypeCategory == "NON_FAMILY") { + movementFile.jobToFamilyPosting = false; + }else { + movementFile.jobToFamilyPosting = true; + } + } + if (typeof movementFile.jobToFamilyPosting != "undefined" && !movementFile.jobToFamilyPosting ){ + movementFile.jobToFamilyPosting = false; + } + if(typeof movementFile.jobFrom != "undefined" && typeof movementFile.jobFrom.familyPostingTypeCategory != "undefined"){ + if(movementFile.jobFrom.familyPostingTypeCategory == "NON_FAMILY") { + movementFile.familyPosting = false; + }else { + movementFile.familyPosting = true; + } + } + if (typeof movementFile.jobFromFamilyPosting != "undefined" && !movementFile.familyPosting ){ + movementFile.familyPosting = false; + } + if(!movementFile.familyPosting){ + movementFile.familyPosting = "Non-Family Posting"; + movementFile.familyPosting = false; + }else{ + movementFile.familyPosting = "Family Posting"; + movementFile.familyPosting = true; + } + if(!movementFile.jobToFamilyPosting){ + movementFile.jobToFamilyPostingType = "Non-Family Posting"; + movementFile.jobToFamilyPosting = false; + }else{ + movementFile.jobToFamilyPostingType = "Family Posting"; + movementFile.jobToFamilyPosting = true; + } + } + + + budgetLineLogic(data){ + if(typeof data.movementType !== 'undefined') { + + if (data.movementType.budgetLineJob === "CURRENT"){ + if( $a.utils.isNotNull(data.budgetLineJobFrom)) { + data.budgetLine = data.budgetLineJobFrom; + } + } else { + if( $a.utils.isNotNull(data.budgetLineJobTo)) { + data.budgetLine = data.budgetLineJobTo; + } + + } + } + } + _bindView() { + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } + + _renderMovementTypes(data) { + $al.model.movementTypes = data.get("movementContext").data; + + if (typeof $al.model.movementFile.cityFrom != "undefined") { + + if(data.get("iataFrom").data == null){ + $al.model.movementFile.iataFrom = ""; + $al.model.movementFile.iataFromAirportName = ""; + }else{ + $al.model.movementFile.iataFrom = data.get("iataFrom").data.id; + $al.model.movementFile.iataFromAirportName = data.get("iataFrom").data.airportName; + } + + }else{ + $al.model.movementFile.iataFrom= "N/A"; + } + + if (typeof $al.model.movementFile.cityTo != "undefined") { + + if(data.get("iataTo").data == null){ + $al.model.movementFile.iataTo = ""; + $al.model.movementFile.iataToAirportName = ""; + }else{ + $al.model.movementFile.iataTo = data.get("iataTo").data.id; + $al.model.movementFile.iataToAirportName = data.get("iataTo").data.airportName; + } + + }else{ + $al.model.movementFile.iataTo= "N/A"; + } + + if($al.model.movementFile.iataCode) { + + if(data.get("iataOrigin").data == null){ + $al.model.movementFile.iataOrigin = ""; + $al.model.movementFile.iataOriginAirportName = ""; + }else{ + $al.model.movementFile.iataOrigin = data.get("iataOrigin").data.id; + $al.model.movementFile.iataOriginAirportName = data.get("iataOrigin").data.airportName; + } + }else{ + $al.model.movementFile.iataOrigin= "N/A"; + } + + + $al.view._elements.movement_type.data.element.kendoDropDownList({ + dataSource: $al.model.movementTypes, + dataTextField: "movementType", + dataValueField: "id", + enable: false + }); + + if(typeof $al.model.movementFile.movementType !== 'undefined') { + let types = $al.view._elements.movement_type.data.element.data("kendoDropDownList"); + types.select(function (dataItem) { + return dataItem.id == $al.model.movementFile.movementType.id; + }); + } + + if(typeof $al.model.movementFile.iataFromAirportName != "undefined") { + $al.view._elements.iata_code_from_code.data.element.html($al.model.movementFile.iataFrom ); + $al.view._elements.iata_code_from_container.data.element.attr("title", $al.model.movementFile.iataFromAirportName); + } + + if(typeof $al.model.movementFile.iataToAirportName != "undefined") { + $al.view._elements.iata_code_to_code.data.element.html($al.model.movementFile.iataTo ); + $al.view._elements.iata_code_to_container.data.element.attr("title", $al.model.movementFile.iataToAirportName); + } + + if(typeof $al.model.movementFile.iataOriginAirportName != "undefined") { + $al.view._elements.iata_code_origin_code.data.element.html($al.model.movementFile.iataOrigin ); + $al.view._elements.iata_code_origin_container.data.element.attr("title", $al.model.movementFile.iataOriginAirportName); + } + + + $('[data-toggle="tooltip"]').tooltip(); + $('textarea.autoSize').autosize(); + } + + _spaceParenthesis(value) { + if (!value || value.length == 0) { + return ''; + } else { + return ' (' + value + ')'; + } + } + + _renderEvacuation() { + if (typeof $al.model.movementFile.jobTo != 'undefined' && typeof $al.model.movementFile.jobTo.evacuationLevelCodeId != 'undefined') { + $al.controller._setEvacuationInfo($al.model.movementFile.jobTo.evacuationCode); + $al.view._templates_evacuation.destination.data.compile(); + $al.model._viewModel.canChangeDestination = false; + if ($al.model.movementFile.evacuated) { + $al.model._viewModel.set("canChangeDestination", true); + } + } + } + + getAllocatedToText(movementContextName) { + let text = ""; + + switch (movementContextName) { + case "SECONDMENT": + text = $al.controller._languageBundle.destination.allocated_to.secondment; + break; + case "ROTATION": + text = $al.controller._languageBundle.destination.allocated_to.rotation; + break; + case "CRISIS": + text = $al.controller._languageBundle.destination.allocated_to.crisis; + break; + default: + break; + } + + return text; + } +} + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.movement_files.edit", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + + $al.model.init(); + + $al.notifyOnReadyMvc(); + } + + _loadData(data) { + $al.model.movementFile = data.get("movementFile").data; + $al.model.permissions = data.get("permissions").data; + $al.model._restCalls.saveBankAccounts.execute({personId: $al.model.movementFile.jobHolder.perId}); + $al.view._initializeView($al.model.movementFile); + + $al.view._render(); + + $al.view._renderEvacuation(); + + $al.view._bindView(); + + $al.model._getMovementTypes(); + + $al.controller._getAipnFile(); + + } + + _getAipnFile() { + + var aipn_document_id = $al.model._viewModel.aipnDocumentId; + $al.model._viewModel.set("aipnVisible", false); + + + if (aipn_document_id) { + $al.model._restCalls.documentUrlById.execute({documentId: aipn_document_id}, null, $al.controller._loadAipnFile); + } + + } + + _loadAipnFile(data) { + $al.model._viewModel.set("aipnVisible", true); + $al.model._viewModel.set("aipnDocumentURL", data.documentURL); + } + + _isSecRot() { + var mov_name = $al.model.movementFile.movementContext.name; + return mov_name === "SECONDMENT" || mov_name === "ROTATION"; + } + + _doCreateAsPending(event) { + + // We prevent the red error message and we handle the error message in '_showCreateSuccessMessage' + var muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + + // The Movement File should be created only if it passes the validation check + if ($al.controller._performValidation()) { + $a.loading.toggle(true); + if(typeof $al.model.movementFile.id === 'undefined') + $al.model._restCalls.createAsPending.execute(null, $al.model.movementFile, null, null, $al.controller._showCreateSuccessMessage, null, muteAnankeErrorToast); + else + $al.model._restCalls.draftToPending.execute(null, $al.model.movementFile, null, null, $al.controller._showCreateSuccessMessage, null, muteAnankeErrorToast); + + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + /* + else { + + $al.controller._doRedirectBack(); + } + */ + } + + _doCreateAsDraft(event) { + + +// var validation = $al.controller.validate(); + + // The validation is not performed at this step but at the moment of actual file creation + var validation = { + value: true + }; + + if (validation.value) { + $a.loading.toggle(true); + $al.model._restCalls.createAsDraft.execute(null, $al.model.movementFile, null, null, $al.controller._showCreateDraftSuccessMessage); + } else { + $al.controller._doRedirectBack(); + } + } + doDeleteSessionData(event) { + + $al.model._restCalls.deleteMovementFileFromSession.execute(null, null, null, null, $al.controller.goToCreateMovementFile()); + + } + goToCreateMovementFile() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.createMovementFile, null, null)); + } + + _doRedirectBack() { + var message = ""; + if ($al.controller._isSecRot()) { + message = $al.controller._languageBundle.validation.message_indicate_current_location; + } else { + message = $al.controller._languageBundle.validation.message_eoc_indicate_future_location; + } + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.validation.validation_failed, + message, + $al.view._templates.validationRedirect.dialog.footer.template({})); + } + + + _doDiscard(event) { + $al.model._restCalls.discard.execute(null, null, $al.controller._navigateToList(), null); + } + + _goToStaffMembers(event) { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.staffMembers, null, null)); + } + + _goToFutureAssignment(event) { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.futureAssignment, null, null)); + } + + _goToDetails(event) { + + if (typeof $al.model.movementFile.jobTo !== 'undefined') { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.details, null, null)); + } else { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.noJobDetails, null, {movementContext: $al.model.movementFile.movementContext.name})); + } + } + + _goToViewMovementFile(movementFileId) { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.view, null, {id: movementFileId})); + } + + _goToJobHolderScreen() { + var personId = $al.model._viewModel.jobHolder.perId; + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.jobHolderScreen, null, {perId: personId})); + } + + _navigateToList() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.navigateToList, null, null)); + } + + _showCreateSuccessMessage(data) { + + $a.loading.toggle(false); + if (data.status == 200) { + // $al.model._restCalls.saveBankAccounts.execute({personId: $al.model.movementFile.jobHolder.perId}); + + $a.toast.showSuccess($al.controller._languageBundle.alerts.create_success); + $al.controller._goToViewMovementFile(data.responseJSON); + } else { + // Manage last minute validation errors, for example: FILE_ID already used or Skyscanner HTTP error response. + var validationErrors = $al.controller._extractMessagesFromErrorResponse(data); + $al.controller._showWarnDialog( + $al.controller._languageBundle.alerts.validation_title, validationErrors); + } + } + + + _extractMessagesFromErrorResponse(response) { + var text = response.responseText; + var textObj = null; + try { + textObj = JSON.parse(text); + } catch (parseExc) { + // Do nothing, textObj remains null + } + var messages = []; + if (textObj && textObj.items && textObj.items.length > 0) { + textObj.items.forEach(item => { + messages.push(item.message); + }); + return messages; + } else { + // Cannot parse, just return 'responseText' + return [ text ]; + } + } + + + + _showCreateDraftSuccessMessage(data) { + $a.loading.toggle(false); + + if (data.status == 200) { + + + $a.toast.showSuccess($al.controller._languageBundle.alerts.create_draft_success); + // $al.controller._navigateToList(); + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.view, null, {id: data.responseText})); + } + } + + _setEvacuationInfo(evacuationCode) { + let evacuationMEssageSplitted = evacuationCode.split(':'); + $al.model._viewModel.set("evacuationLevel", evacuationMEssageSplitted[0]); + var levelNo = evacuationMEssageSplitted[0].replace(/[^0-9]/g, ''); + $al.model._viewModel.set('evacuationIcon', "warning"); + $al.model._viewModel.set("evacuationMessage", evacuationMEssageSplitted[1]); + } + + _hasValue(location) { + return (typeof location != 'undefined') && location != null && + ((location.code && location.code !== "") || (location.name && location.name !== "")); + } + + + validate() { + + var response = {}; + // return false; + + if ($al.controller._hasValue($al.model._viewModel.countryFrom) + && $al.controller._hasValue($al.model._viewModel.cityFrom) + && $al.controller._hasValue($al.model._viewModel.countryTo) + && $al.controller._hasValue($al.model._viewModel.cityTo)) { + + // OK + response.value = true; + + } else { + // Something is missing: + response.value = false; + // The response explains what is missing + if ($al.controller._hasValue($al.model._viewModel.countryTo) + && $al.controller._hasValue($al.model._viewModel.cityTo)) { + + // Something in the FROM fields is missing + response.missing = "from"; + } else { + // Something in the TO fields is missing + response.missing = "to"; + } + } + return response; + } + + _doRedirectAfterValidation() { + var newPath = '/erightsbo/movement-files/staff-member-data.do?perId=' + $al.model._viewModel.jobHolder.perId; + window.location.href = newPath; + } + + + + // Invoke the validation method. Return true if there are any errors. + _performValidation() { + var validationErrors = $al.controller._validateBeforeCreatingFile(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.controller._showWarnDialog( + $al.controller._languageBundle.alerts.validation_title, validationErrors); + return false; + } + + return true; + } + + // Check if the data are OK for the actual creation of the Movement File + _validateBeforeCreatingFile() { + + var errorMessages = []; + + var jobHolder = $al.model.movementFile.jobHolder; + + // Distinguish EOC / non-EOC + if ($al.model.movementFile.movementContext.name === 'EOC') { + // EOC: Must have jobFrom: + if ( ! $al.model.movementFile.jobFrom) { + errorMessages.push($al.controller._languageBundle.alerts.cannot_create_eoc_mf_without_jobfrom); + } + // EOC: Must have private email + if (!$al.controller._emailFieldHasValue(jobHolder, 'privateEmail')) { + errorMessages.push($al.controller._languageBundle.alerts.must_have_private_email_address_in_eoc); + } + } else { + // Not EOC: Must have business or private email + if (!$al.controller._emailFieldHasValue(jobHolder, 'email') && !$al.controller._emailFieldHasValue(jobHolder, 'privateEmail')) { + errorMessages.push($al.controller._languageBundle.alerts.must_have_some_email_address); + } + } + + + if (typeof $al.model.movementFile.movementType == "undefined") { + errorMessages.push($al.controller._languageBundle.alerts.no_movement_type); + } + + if (typeof $al.model.movementFile.countryFrom == "undefined") { + errorMessages.push($al.controller._languageBundle.alerts.no_country_from); + } + + if (typeof $al.model.movementFile.cityFrom == "undefined") { + errorMessages.push($al.controller._languageBundle.alerts.no_city_from); + } + + if (typeof $al.model.movementFile.countryTo == "undefined") { + errorMessages.push($al.controller._languageBundle.alerts.no_country_to); + } + + if (typeof $al.model.movementFile.cityTo == "undefined") { + errorMessages.push($al.controller._languageBundle.alerts.no_city_to); + } + + + if (typeof $al.model.movementFile.budgetLine == "undefined") { + errorMessages.push($al.controller._languageBundle.alerts.no_budget_line); + } + + + + if($al.model.movementFile.movementContext.name != "EOC") { + if (typeof $al.model.movementFile.startDate == "undefined") { + errorMessages.push($al.controller._languageBundle.alerts.no_start_date); + } + } + else { + if (typeof $al.model.movementFile.estimatedEndDate == "undefined") { + errorMessages.push($al.controller._languageBundle.alerts.no_end_date); + } + } + if(typeof $al.model.movementFile.startDate !== "undefined" && typeof $al.model.movementFile.estimatedEndDate !== "undefined" && + $al.model.movementFile.startDate > $al.model.movementFile.estimatedEndDate) + { + errorMessages.push($al.controller._languageBundle.alerts.start_date_before_end_date); + } + + if (errorMessages.length == 0) { + // If the form is valid, the Validator will return true + return true; + } + return errorMessages; + + } + + _emailFieldHasValue(theObject, theFieldName) { + return theObject && theObject.hasOwnProperty(theFieldName) && theObject[theFieldName] != null && !theObject[theFieldName].toLowerCase().startsWith('no ') ; + } + + // Show all the error messages returned from the validation check in a dialog + _showWarnDialog(title, messages) { + $a.modalDialog.showAnswer(null, + title, + $al.view._templates.warn.dialog.body.template({body_message: "
  • " + messages.join("
  • "), validation_message: $al.controller._languageBundle.alerts.validation_message}), + $al.view._templates.basic.dialog.footer.template({}) + ); + } +} + +getSessionStorageID(); +$al.mvc(Model, View, Controller, true); \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/scripts/movement-file/support/no-job-destination-type.js b/e-rights-back-office/src/main/webapp/static/scripts/movement-file/support/no-job-destination-type.js new file mode 100644 index 0000000..ec54262 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/movement-file/support/no-job-destination-type.js @@ -0,0 +1,71 @@ +class NoJobDestinationType { + + constructor() { + this._rotation = {id: 1, code: "ROTATION", label: null, selectionText: null}; + this._secondment = {id: 2, code: "SECONDMENT", label: null, selectionText: null}; + this._end_of_contract = {id: 3, code: "EOC", label: null, selectionText: null}; + this._crisis = {id: 4, code: "CRISIS", label: null, selectionText: null}; + } + + get SECONDMENT() { + return $noJobDestinationType._secondment; + } + + get ROTATION() { + return $noJobDestinationType._rotation; + } + + get END_OF_CONTRACT() { + return $noJobDestinationType._end_of_contract; + } + + get CRISIS() { + return $noJobDestinationType._crisis; + } + + _getTypes() { + return [this._end_of_contract, this._rotation, this._secondment, this._crisis]; + } + + _getTypeByCode(code) { + let types = this._getTypes(); + + for (let i = 0; i < types.length; i++) { + if (types[i].code == code) + return types[i]; + } + + return null; + } + + _getCodesList(code) { + let types = this._getTypes(); + let codes = []; + + for (let i = 0; i < types.length; i++) { + codes.push(types[i].code); + } + + return codes; + } + + _onReady() { + $a.languageBundle.retrieve($noJobDestinationType._onLanguageBundleReady, "common.messages.e-rights", "e_rights.movement_files.create.no_job_destination_type", true); + } + + _onLanguageBundleReady(languageBundle) { + $noJobDestinationType._secondment.label = languageBundle.description.secondment; + $noJobDestinationType._rotation.label = languageBundle.description.rotation; + $noJobDestinationType._end_of_contract.label = languageBundle.description.end_of_contract; + $noJobDestinationType._crisis.label = languageBundle.description.crisis; + $noJobDestinationType._secondment.selectionText = languageBundle.selection_text.secondment; + $noJobDestinationType._rotation.selectionText = languageBundle.selection_text.rotation; + $noJobDestinationType._end_of_contract.selectionText = languageBundle.selection_text.end_of_contract; + $noJobDestinationType._crisis.selectionText = languageBundle.selection_text.crisis; + $al.notifyOnReadyComplete($noJobDestinationType); + } + +} + +const $noJobDestinationType = new NoJobDestinationType(); +$al.registerOnReadyListener($noJobDestinationType); \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/scripts/reports/empty.rates.entitlements.js b/e-rights-back-office/src/main/webapp/static/scripts/reports/empty.rates.entitlements.js new file mode 100644 index 0000000..e605dd6 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/reports/empty.rates.entitlements.js @@ -0,0 +1,360 @@ +class Model { + + constructor() { + this.urls = { + action: { + view: $a.utils.url(null, "/movement-files/view.do"), + create: $a.utils.url(null, "/movement-files/create-job-holder.do") + } + }; + + this._restCalls = { + list: new $a.GetRestCall(null, "/internal/api/entitlement-types/emptyRates"), + saveUserPreference: new $a.PostRestCall(null, "/internal/api/user-preferences"), + getUserPreferences: new $a.GetRestCall(null, "/internal/api/user-preferences"), + permissions: new $a.GetRestCall(null, "/internal/api/permissions") + }; + + // Default filter: + var iniFilter = { + logic: "or", + filters: [] + }; + // Check if there is filter in session: + var checkFilter = sessionStorage.getItem("e-rights_empty_entlmt_list_filter"); + if (checkFilter) { + iniFilter = JSON.parse(checkFilter); + } + + this.dataSource = new kendo.data.DataSource({ + pageSize: 25, + transport: { + read: this._restCalls.list.settings() + }, + dataType: "json", + schema: { + model: { + fields: { + id: { + type: "number" + }, + fileId: { + type: "string" + }, + startDateFuture: { + type: "date" + }, + endDateFuture: { + type: "date" + } + + + } + } + }, + serverFiltering: false, + serverPaging: false, + serverSorting: false, + sort: { + field: "lastName", + dir: "asc" + }, + // Initial filter, possibly found in sessionStorage + filter: iniFilter + }); + + } + + _create() { + $a.navigation.open($a.utils.formatUrl($al.model.urls.action.create, null, null), "_self"); + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.controller._onLoadData); + dataPoolExecutor.add("permissions", $al.model._restCalls.permissions); + dataPoolExecutor.add("userPreferences", $al.model._restCalls.getUserPreferences, null, {pagePath: "reports/empty-rates-entitlements.do"}); + dataPoolExecutor.run(); + } + +} + +class View { + + constructor() { + this._elements = new $a.DataContainer("view"); + this._templates = new $a.DataContainer("view"); + + this._templates.node("content").data(new $a.KendoTemplateData()); + this._templates.node("actions").data(new $a.KendoTemplateData()); + this._templates.node("actions").node("edit").data(new $a.KendoTemplateData()); + + this._templates.node("gridStatus").data(new $a.KendoTemplateData()); + this._elements.data(new $a.KendoElementData(), "grid"); + + this._filter_values = { + + + movementContextDS: [{movementContext: "ROTATION"}, {movementContext: "SECONDMENT"}, {movementContext: "EOC"}], + + movementTypeDS: [{movementType: "DEL-DEL EU"}, + {movementType: "DEL-Other"}, {movementType: "DEL-HQ"}, + {movementType: "PoR-DEL"}, {movementType: "HQ-DEL"}, {movementType: "DEL-PoOrg"}, + {movementType: "HQ-Other"}, + {movementType: "DEL EU-DEL"}, + {movementType: "DEL-DEL"}, + {movementType: "CRISIS"}] + + }; + // For the year, use current year and 10 years before: 2021, 2020, 2019... 2011 + var currYear = new Date().getFullYear() + 2; + var ds = []; + for (var y = currYear; y >= (currYear - 10); y--) { + ds.push({movementYear: y, label: ("" + y)}); + } + this._filter_values.movementYearDS = ds; + + } + + render(userPreference) { + + $al.view._templates.content.data.compile(); + //$al.view._templates.actions.data.compile(); + + $al.view._elements.grid.element.kendoGrid({ + dataSource: $al.model.dataSource, + pageable: { + pageSize: 25, + pageSizes: [25, 50, 100, 500] + }, + sortable: true, + resizable: true, + scrollable: true, + columnMenu: false, + filterable: { + extra: false, + search: true + }, + excel: { + fileName: "EmtyEntitlemtnsList.xlsx", + proxyURL: $al.model._restCalls.list, + filterable: true, + allPages: true + }, + columns: [ + + { + field: "movementFrom", + title: "From - City, Country (Current)", + headerTemplate: 'From info', + width: "200px" + }, + { + field: "movementTo", + title: "To - City, Country (Future)", + headerTemplate: 'To info', + width: "200px" + }, + { + field: "movementYear", title: "Year", + template: '#=data.movementYear?data.movementYear:""#', + filterable: { + multi: true, + dataSource: $al.view._filter_values.movementYearDS + }, + width: "90px" + }, + { + + field: "movementType", title: "Type", attributes: {style: "text-overflow: initial;"}, + template: '#=data.movementType?data.movementType:""#', + filterable: { + multi: true, + dataSource: $al.view._filter_values.movementTypeDS + }, + width: "110px" + }, + { + field: "perId", title: "PER ID", width: "110px" + }, + { + field: "entitlementTypeCat", title: "Entitlement Type", width: "150px" + }, + { + field: "entitlementMaxCatList", title: "Ceiling Type", width: "150px" + }, + { + field: "allocatedToFuture", title: "Dest. Org.", width: "150px" + }, + { + field: "fileId", title: "File ID", width: "200px" + }, + { + field: "lastName", title: "Last Name", hidden: true + }, + { + field: "firstName", title: "First Name", hidden: true + }, + { + headerTemplate: "", + id: "ColumnMenu", + command: [ + { + name: "edit", + text: "Edit",//$al.controller._languageBundle.actions.edit, + // JSON.stringify() cannot serialize function (the template function) + template: "", + } + ], + attributes: {style: "white-space: nowrap; position; relative"}, + width: "50px", + overflow: "never" + } + ], + + dataBound: function (e) { + // Data updated, save filter + var currentFilter = e.sender.dataSource.filter(); + if (!currentFilter) { + currentFilter = {logic: 'and', filters: []}; + } + var filterString = JSON.stringify(currentFilter); + sessionStorage.setItem("e-rights_empty_entlmt_list_filter", filterString); + + $al.view._updateClearFilterButton(); + }, + + filter: function (e) { + // Special treatment for some filter... + }, + + filterMenuOpen: function (e) { + // Special treatment for some filter... + } + + }); + + $al.view._elements.grid.component = "kendoGrid"; + + //set the user preferences if exists + if (userPreference.preferences) { + + var options = JSON.parse(userPreference.preferences); + if ((typeof options != 'undefined') && (options != null) && (options != '')) { + + $al.view._elements.grid.component.setOptions({ + columns: options.columns, + autoBind: false + }); + } + + } + + $("#columnMenuButton").kendoColumnMenu({ + filterable: false, + sortable: false, + dataSource: $al.view._elements.grid.element.data("kendoGrid").dataSource, + //dataSource: $al.model.dataSource, + columns: true, + owner: $al.view._elements.grid.element.data("kendoGrid"), + }); + + // save the user preferences when a column action is performed + $al.view._elements.grid.component.bind("columnShow", $al.controller._saveUserPreference); + $al.view._elements.grid.component.bind("columnHide", $al.controller._saveUserPreference); + + // Make the row clickable since there is only 1 button. + $("#view-grid").on("click", "tbody tr", function (e) { + $al.controller.goToEntitlementsTab(this); + }); + + // Everything rendered: Update Clear Filter Button + $al.view._updateClearFilterButton(); + + } + + _updateClearFilterButton() { + var currentFilter = $("#view-grid").data("kendoGrid").dataSource.filter(); + var emptyFilter = !currentFilter || currentFilter.filters.length == 0; + $("#clear_mfile_list_filters_button").css("display", emptyFilter ? "none" : "inline-block"); + } + + +} + + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.reports.empty_rates", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.model.init(); + } + + _onLoadData(data) { + $al.view.render(data.get("userPreferences").data); + + $al.controller._bindPermissions(data.get("permissions").data); + + $al.notifyOnReadyMvc(); + } + + _bindPermissions(permissions) { + $al.model.permissions = permissions; + + var viewModel = new kendo.data.Model.define({ + canCreate: permissions.canCreate, + canExport: permissions.canExport + }); + + kendo.bind($al.view._templates.content.data.wrapperSelector, new viewModel({})); + } + + _getUserPreferences() { + $al.model._restCalls.getUserPreferences.execute(null, {pagePath: "reports/empty-rates-entitlements.do"}, $al.controller._onLoadUserPreferences) + } + + _saveUserPreference(e) { + let options = $al.view._elements.grid.component.getOptions(); + + let optionsJson = kendo.stringify(options); + let userPref = { + pagePath: "reports/empty-rates-entitlements.do", + preferences: optionsJson + }; + + $al.model._restCalls.saveUserPreference.execute(null, userPref, null); + } + + + _exportEmptyEntitlementsRates(source) { + $al.view._elements.grid.component.saveAsExcel(); + } + + goToEntitlementsTab(source) { + + var item = $al.view._elements.grid.component.dataItem($(source).closest("tr")); + + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.view, null, { + id: item.movementFile, + gototab: 'entitlements-tab' + })); + } + + _clearAllFilters() { + // Reset filter, this will trigger the dataBound event + var emptyFilter = {logic: 'and', filters: []}; + $("#view-grid").data("kendoGrid").dataSource.filter(emptyFilter); + } + +} + +getSessionStorageID(); + +$al.mvc(Model, View, Controller, true); \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/scripts/reports/entitlement.max.default.js b/e-rights-back-office/src/main/webapp/static/scripts/reports/entitlement.max.default.js new file mode 100644 index 0000000..c0516de --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/reports/entitlement.max.default.js @@ -0,0 +1,202 @@ +class Model { + + constructor() { + + this.urls = { + action: { + move: $a.utils.url(null, "/movement-files/staff-member-data.do"), + refreshPage: $a.utils.url(null, "/reports/entitlement-max-default.do"), + } + }; + + this._restCalls = { + saveEntitlementMaxDefault: new $a.PostRestCall(null, "/internal/api/entitlements-max-default") + }; + + + this._personsDS = new kendo.data.DataSource({ + pageSize: 200, + schema: { + data: "data", + model: { + fields: { + lastName: { + type: "string" + }, + firstName: { + type: "string" + }, + perId: { + type: "number" + } + } + } + } + }); + } + + _getPersonsData(lastName, firstName, perId) { + $al.model._restCalls.persons.execute({ + lastName: lastName, + firstName: firstName, + perId: perId + }, null, $al.controller._loadData, null, null, true); + } + + _getStaffMemberData(perId) { + $al.model._restCalls.persons.execute({perId: perId}, null, $al.controller._loadData); + } + + _getData() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.getData, null, {id: perId})); + } + + _clearData() { + $al.model._restCalls.clearData.execute(null, null, $al.controller._loadData, null, null, true); + } + + init() { + $al.model._renderPage(); + } + + _renderPage() { + + var viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel(); + + $al.model._viewModel.rates = [ + 'CAR' + ,'STORAGE' + ,'SURFACE' + ]; + + $al.model._viewModel.amount = 0; + $al.model._viewModel.year = new Date().getFullYear(); + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } +} + +class View { + viewWizard; + + constructor() { + + + + this._elements = new $a.DataContainer("entMaxCreation"); + this._templates = new $a.DataContainer("entMaxCreation"); + + this._templates.node("header").data(new $a.KendoTemplateData()); + this._templates.node("persons").node("search").data(new $a.KendoTemplateData()); + + this._templates.node("persons").node("details").data(new $a.KendoTemplateData()); + this._templates.node("persons").node("currentassignment").data(new $a.KendoTemplateData()); + this._templates.node("persons").node("actions").data(new $a.KendoTemplateData()); + this._templates.node("persons").node("actions").node("edit").data(new $a.KendoTemplateData()); + + + this._elements.node("persons").node("search").node("last_name").data(new $a.KendoElementData()); + this._elements.node("persons").node("search").node("first_name").data(new $a.KendoElementData()); + this._elements.node("persons").node("search").node("per_id").data(new $a.KendoElementData()); + + + + + this._elements.node("persons").node("actions").data(new $a.KendoElementData()); + this._elements.node("persons").node("actions").node("edit").data(new $a.KendoElementData()); + + this._templates.data(new $a.KendoTemplateData()); + this._elements.data(new $a.KendoElementData()); + + + + + + } + + render() { + $al.view._templates.data.compile(); + $al.view._templates.header.data.compile(); + $al.view._templates.persons.search.data.compile(); + + + $al.view._templates.persons.actions.edit.data.compile(); + + + + + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + } + + + +} + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.movement_files.create", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.view.render(); + $al.notifyOnReadyMvc(); + + $al.model.init(); + } + + _createDefaultEntitlements() { + $al.model._restCalls.saveEntitlementMaxDefault.execute(null, $al.model._viewModel, $al.controller._refreshPage(), null, null); + } + _refreshPage(){ + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.refreshPage, null, null)); + } + _clearData(source) { + $al.view._elements.persons.search.last_name.data.element.val(""); + $al.view._elements.persons.search.first_name.data.element.val(""); + $al.view._elements.persons.search.per_id.data.element.val(""); + + $al.model._clearData(); + } + + _getStaffMemberData(source) { + var perId = $al.view._elements.persons.search.per_id.data.element.val(); + + $al.model._getStaffMemberData(perId); + } + + _loadData(data) { + $al.model._personsDS.data(data); + + } + + _getStaffData(source) { + $al.model._getData(); + } + + moveToJobHolderScreen(source) { + + + + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.move, null, {perId: item.perId})); + } + +} + +// Binding enter button click to form submit +$(document).keypress(function (e) { + if (e.which === 13) { + $("#search_data").click(); + } +}); + +$al.mvc(Model, View, Controller, true); + diff --git a/e-rights-back-office/src/main/webapp/static/scripts/request/edit.tud.request.js b/e-rights-back-office/src/main/webapp/static/scripts/request/edit.tud.request.js new file mode 100644 index 0000000..ea7393d --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/request/edit.tud.request.js @@ -0,0 +1,1077 @@ +class RequestModel { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.model(); + }); + this._restCalls = { + validatePaymentOrder: new $a.GetRestCall(null, "/internal/api/summa/validateOrder/{orderId}"), + getRequest: new $a.GetRestCall(null, "/internal/api/tud-requests/{requestId}"), + getBankInfo: new $a.GetRestCall(null, "/internal/api/bank-accounts"), + movementFile: new $a.GetRestCall(null, "/internal/api/movement-files/{fileId}"), + updateRequest: new $a.PutRestCall(null, "/internal/api/tud-requests"), + getStateHistory: new $a.GetRestCall(null, "/internal/api/tud-requests/{requestId}/stateMachineHistory"), + changeStateRequest: new $a.PutRestCall(null, "/internal/api/tud-requests/stateMachineEvent/{stateMachineEvent}/{requestId}"), + permissions: new $a.GetRestCall(null, "/internal/api/permissions"), + abacPay: new $a.PostRestCall(null, "/internal/api/abac/invoices"), + refreshAbacStateForRequest: new $a.PutRestCall(null, "/internal/api/abac/workflow/{requestId}"), + getAllOrderResposes: new $a.GetRestCall(null, "/internal/api/summa/order-response?requestId={requestId}"), + + appParameters: new $a.GetRestCall(null, "/internal/api/app-parameters"), + }; + this.urls = { + action: { + viewMovementFile: $a.utils.url(null, "/movement-files/view.do"), + viewRequest: $a.utils.url(null, "/requests/view-tud.do"), + abacDetailsForm: $a.utils.url(null, "/summa/p2p-payments-details.do"), + showAbacInfo: $a.utils.url(null, "/abac/abac-info.do") + } + }; + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model.onRequestRetrieved); + + dataPoolExecutor.add("request", $al.model._restCalls.getRequest, {requestId: $requestId}); + dataPoolExecutor.add("stateMachineHistory", $al.model._restCalls.getStateHistory, {requestId: $requestId}); + dataPoolExecutor.add("childrenRequest", $al.model.requestCommon._restCalls.getRequestsByParent, {requestId: $requestId}); + dataPoolExecutor.add("appParameters", $al.model._restCalls.appParameters, null, {paramType: "ADVANCE_REMOVAL"}); + dataPoolExecutor.add("requestComments", $al.model.requestCommon._restCalls.getRequestComments, {requestId: $requestId}); + dataPoolExecutor.add("allOrderResposes",$al.model._restCalls.getAllOrderResposes, {requestId: $requestId}); + + dataPoolExecutor.run(); + } + + + refreshRequest(requestId) { + $al.model.init(); + + } + + refreshAfterUpdateState(data) { + + + $al.model._viewModel.request.state = data.state; + $al.model.refreshRequest($al.model._viewModel.request.id); + } + + onRequestRetrieved(data) { + $al.model.request = data.get("request").data; + $al.model.stateMachineHistory = data.get("stateMachineHistory").data; + $al.model.requestComments = data.get("requestComments").data; + $al.model.request.children = data.get("childrenRequest").data; + $al.model.allOrderResposes =data.get("allOrderResposes").data; + var AppParametersArr = data.get("appParameters").data; + $al.model.appParameters = new Map(AppParametersArr.map(i => [i.key, i.value])); + $al.model._restCalls.movementFile.execute({fileId: $al.model.request.declaration.movementFileId}, null, $al.model.onMovementFileRetrieved); + } + + onMovementFileRetrieved(data) { + $al.model.movementFile = data; + $al.model._restCalls.permissions.execute(null, {movementFileId: data.id}, $al.model.onPermissionsRetrieved); + + } + + onPermissionsRetrieved(data) { + $al.model.permissions = data; + + $al.view._initializeView(); + $al.view._bindView(); + $al.view._calculateAmountData(); + $al.view.render(); + } + + _onDataRetrievedValidatePaymentOrder(data) { + var validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + invalidFormat: input => { + if (input.attr('required')) { + return input.val().length === input.val().trim().length; + } else { + return true; + } + }, + paymentDateInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_date.id + "]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + paymentOrderInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_order.id + "]") && !data) { + return false; + } else { + return true; + } + }, + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentDateInvalid: "Invalid format of Payment Date", + paymentOrderInvalid: "Payment Order invalid", + invalidFormat: "Invalid format: remove spaces" + } + }).data("kendoValidator"); + if (validator.validate()) { + $al.model.requestCommon.prepareRequestForMarkAsPaid(); + + $al.controller.requestCommon.doUpdateAndMarkAsPaidRequest(); + $a.modalDialog.hide(); + } + } +} + +class RequestView { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.view(); + }); + + this._templates = new $a.DataContainer("request"); + this._elements = new $a.DataContainer("request"); + + this._templates.data(new $a.KendoTemplateData()); + + + this._elements.node("relatives").node("grid").data(new $a.KendoElementData()); + this._elements.node("comments").node("grid").data(new $a.KendoElementData()); + + this._elements.node("payment_date").data(new $a.KendoElementData()); + this._elements.node("payment_order").data(new $a.KendoElementData()); + this._elements.node("payment_request").data(new $a.KendoElementData()); + this._elements.node("beneficiary_name").data(new $a.KendoElementData()); + this._elements.node("gross_amount").data(new $a.KendoElementData()); + this._elements.node("iso_code").data(new $a.KendoElementData()); + + this._elements.node("payment_date_div").data(new $a.KendoElementData()); + this._elements.node("payment_order_div").data(new $a.KendoElementData()); + this._elements.node("payment_request_div").data(new $a.KendoElementData()); + this._elements.node("beneficiary_name_div").data(new $a.KendoElementData()); + this._elements.node("gross_amount_div").data(new $a.KendoElementData()); + this._elements.node("iso_code_div").data(new $a.KendoElementData()); + this._elements.node("communication").data(new $a.KendoElementData()); + this._elements.node("communication_2").data(new $a.KendoElementData()); + + this._templates.node("relatives").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("comments").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("add_comment").data(new $a.KendoTemplateData()); + + this._templates.node("calculation").data(new $a.KendoTemplateData()); + this._templates.node("calculation").node("staff").data(new $a.KendoTemplateData()); + + this._templates.node("calculation").node("family").data(new $a.KendoTemplateData()); + this._templates.node("calculation").node("total").data(new $a.KendoTemplateData()); + + this._templates.node("mark_as_paid").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("paid").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("warn").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("basic").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("pay_ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + + } + + render() { + + + $al.view._templates.data.compile(); + $al.view._templates.relatives.grid.data.compile(); + $al.view._renderRelativesGrid(); + $al.controller._renderCommunication(); + + $al.view._templates.comments.grid.data.compile(); + $al.view._templates.add_comment.data.compile(); + + $al.view.requestCommon._renderCommentsGrid(); + + } + + renderEmptyTemplate() { + $al.view._templates.data.compile(); + } + + _renderRelativesGrid() { + + var dataSource = new kendo.data.DataSource({ + autoSync: true, + transport: { + read: function (options) { + options.success($al.model._viewModel.request.requestPersons); + }, + destroy: function (options) { + + $al.model._viewModel.request.requestPersons = dataSource.data().slice(); + options.success($al.model._viewModel.request.requestPersons); + }, + create: function (options) { + + + options.success($al.model._viewModel.request.requestPersons); + + }, + update: function (options) { + var data = options.data; + + + // Copy data back to dataList + $al.model._viewModel.request.requestPersons = dataSource.data().slice(); + options.success([data.models[0]]); + + + } + }, + data: $al.model._viewModel.request.requestPersons, + batch: true, + schema: { + model: { + id: "id", + fields: { + id: {type: "number", nullable: false}, + + + claim: {type: "boolean"}, + declared: {type: "boolean"}, + declarationId: {type: "number"}, + claimApproved: {type: "boolean"}, + remarks: {type: "string"}, + insEligible: {type: "boolean"}, + remEligible: {type: "boolean"}, + tudEligible: {type: "boolean"}, + tudEligibleReason: {type: "string"}, + relation: {type: "string"}, + person: { + id: {type: "number"}, + age: {type: "number"}, + firstName: {type: "string"}, + lastName: {type: "string"} + }, + relative: { + id: {type: "number"}, + age: {type: "number"}, + firstName: {type: "string"}, + lastName: {type: "string"} + }, attachments: [{ + declarationPersonId: {type: "number"}, + fileName: {type: "string"}, + fileUid: {type: "string"} + }] + + } + } + } + }); + + + var columnsDesc = [ + {hidden: true, field: "id"}, + { + field: "remarks", hidden: true + }, + { + field: "declared", + title: "Join", + width: "35px", + /*template: "done",*/ + template: "check_box" + + "check_box_outline_blank", + headerAttributes: { + "class": "pl-1 pr-0" + }, + attributes: { + "class": "pl-2 pr-0" + } + }, + { + field: "relative.lastName", + title: "Name", + width: "25%", + attributes: { + "class": "font-weight-medium" + }, + template: "#= relative.lastName #, #= relative.firstName #" + }, + /*{ + field: "relative.firstName", + title: "First Name", + width: "16%", + attributes: { + "class": "pl-2 pr-0 font-weight-medium" + } + },*/ + { + field: "relative.age", + title: "Age", + width: "50px" + }, + { + field: "relation", + title: "Relation", + width: "12%" + }, + { + field: "tudEligible", + title: "TUD Eligible", + width: "170px", + headerTemplate: "
    " + + "TUD Eligible information" + + "
    ", + template: "
    " + + "#if(tudEligible == false) {#" + + "
    " + + "cancel" + + "help
    " + + "" + + "#} else {#" + + "check_circle" + + "#}#" + + "
    ", + headerAttributes: { + "class": "pl-0" + }, + attributes: { + "class": "pl-0 pr-0 " + }, + }, + { + title: "Actions", + width: "25%", + hidden: !$al.model._viewModel.displayClaimApproveRejectButtons, + headerAttributes: { + style: "text-align: right;" + }, + attributes: { + style: "text-align: right", + "class": "pl-0 " + }, + command: [ + { + name: "remove", + template: "" + + "Refuse close" + + "", + + click(e) { + $al.view._calculateAmountData(); + var tr = $(e.target).closest("tr"); //get the row + this.select(tr); + var data = this.dataItem(tr); //get the row data so it can be referred later + data.set("claimApproved", false); + } + }, + { + name: "join", + template: "" + + "Accept done", + + click(e) { + $al.view._calculateAmountData(); + var tr = $(e.target).closest("tr"); //get the row + this.select(tr); + var data = this.dataItem(tr); //get the row data so it can be referred later + data.set("claimApproved", true); + } + }, + ] + }, + ]; + + + $al.view._elements.relatives.grid.data.element.kendoGrid({ + dataSource: dataSource, + scrollable: false, + noRecords: { + template: "" + }, + sortable: true, + detailTemplate: kendo.template($("#claims-edit-template").html()), + dataBound: $al.view._onDataBound, + columns: columnsDesc, + autoBind: true, + }); + + $al.view._elements.relatives.grid.data.component = "kendoGrid"; + + $al.view._templates.calculation.staff.data.compile(); + $al.view._templates.calculation.family.data.compile(); + $al.view._templates.calculation.total.data.compile(); + + $('textarea.autoSize').autosize(); + } + + _isTUDEnabled(entitlementList) { + for (var i = 0; i < entitlementList.total(); i++) { + var item = entitlementList.at(i); + if (item.enable && item.entitlementTypeCat.code === "TUD") { + return true; + } + } + return false; + } + + _onDataBound(e) { + + if (typeof e !== "undefined" && typeof $al.model._viewModel !== "undefined") { + e.preventDefault(); + /* Hide the first colum with the row expand toggle */ + this.wrapper.find(".k-hierarchy-col").remove();//remove col elements for hierarchy column + this.wrapper.find(".k-hierarchy-cell").hide();//remove cell elements for hierarchy column + // iterate the table rows and apply custom row and cell styling + var rows = e.sender.tbody.children(); + for (var j = 0; j < rows.length; j++) { + + var row = $(rows[j]); + var dataItem = e.sender.dataItem(row); + + var declared = dataItem.get("declared"); + var claimApproved = dataItem.get("claimApproved"); + var claim = dataItem.get("claim"); + if (declared) { + row.addClass("k-state-selected"); + + if (claim) { + this.expandRow(row); + row.addClass('eeas-has-claim'); + if (typeof (claimApproved) == "undefined") { + //person declare with claim pending to approve + if ($al.model._viewModel.displayClaimApproveRejectButtons) { + $(row).closest("tr").find(".k-grid-join").removeClass("d-none").addClass("d-inline-block"); + $(row).closest("tr").find(".k-grid-remove").removeClass("d-none").addClass("d-inline-block"); + } + $al.view.addEntitlePerson(); + + } else if (claimApproved) { + + //person declare with claim approved + if ($al.model._viewModel.displayClaimApproveRejectButtons) { + $(row).closest("tr").find(".k-grid-join").removeClass("d-inline-block").addClass("d-none"); + $(row).closest("tr").find(".k-grid-remove").removeClass("d-none").addClass("d-inline-block"); + } + $(row).closest("tr").find(".eeas-badge-status").removeClass("d-none badge-danger").addClass("badge-success").html("Claim accepted"); + $(row).closest("tr").addClass("k-state-selected"); + $(row).closest("tr").addClass("eeas-has-claim-reviewed"); + $al.view.addEntitlePerson(); + + } else if (!claimApproved) { + //person declare with claim denied + if ($al.model._viewModel.displayClaimApproveRejectButtons) { + $(row).closest("tr").find(".k-grid-join").removeClass("d-none").addClass("d-inline-block"); + $(row).closest("tr").find(".k-grid-remove").removeClass("d-inline-block").addClass("d-none"); + } + $(row).closest("tr").find(".eeas-badge-status").removeClass("d-none badge-success").addClass("badge-danger").html("Claim Refused"); + $(row).closest("tr").removeClass("k-state-selected"); + $(row).closest("tr").addClass("eeas-has-claim-reviewed"); + + } + } else { + //person declared and elegible + $al.view.addEntitlePerson(); + } + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }) + + + } + } + //when we do not have the calculated amount we create the structure + if (typeof $al.model._viewModel.request.calculatedTotalAmount == "undefined") { + $al.model._viewModel.request.calculatedTotalAmount = {}; + $al.model._viewModel.request.calculatedTotalAmount.amount = $al.model._viewModel.request.totalAmount.amount; + $al.model._viewModel.request.calculatedTotalAmount.currency = $al.model._viewModel.request.totalAmount.currency; + } + + if (typeof $al.model._viewModel.request.flatRateFamilyCalculations == "undefined") { + $al.model._viewModel.request.calculatedTotalAmount.amount = $al.model._viewModel.request.flatRateCalculations.amount; + + } else if (typeof $al.model._viewModel.request.flatRateCalculations.amount == "undefined") { + $al.model._viewModel.request.calculatedTotalAmount.amount = $al.model._viewModel.request.flatRateFamilyCalculations.amount; + + } else { + $al.model._viewModel.request.calculatedTotalAmount.amount = parseFloat($al.model._viewModel.request.flatRateCalculations.amount) + + parseFloat($al.model._viewModel.request.flatRateFamilyCalculations.amount); + } + + //when the total amount is set by HR we do not modify it with the calculated value + if (typeof $al.model._viewModel.request.totalAmount == "undefined" || typeof $al.model._viewModel.request.totalAmountNotSet != "undefined") { + //we enter when the totalamount has not been set up yet by HR + $al.model._viewModel.request.totalAmountNotSet = true; + $al.model._viewModel.request.totalAmount = {}; + $al.model._viewModel.request.totalAmount.amount = $al.model._viewModel.request.calculatedTotalAmount.amount; + $al.model._viewModel.request.totalAmount.currency = $al.model._viewModel.request.calculatedTotalAmount.currency; + + $al.model._viewModel.request.totalAmount.amount = parseFloat($al.model._viewModel.request.totalAmount.amount).toFixed(2); + $al.model._viewModel.request.calculatedTotalAmount.amount = parseFloat($al.model._viewModel.request.calculatedTotalAmount.amount).toFixed(2); + + } + // Formatted values for UI consistency + $al.model._viewModel.request.flatRate.amountFormatted = kendo.toString($al.model._viewModel.request.flatRate.amount, "n2"); + if ($al.model._viewModel.request.flatRateFamilyExists) { + $al.model._viewModel.request.flatRateFamily.amountFormatted = kendo.toString($al.model._viewModel.request.flatRateFamily.amount, "n2"); + $al.model._viewModel.request.flatRateFamilyCalculations.amountFormatted = kendo.toString( + parseFloat($al.model._viewModel.request.flatRateFamilyCalculations.amount) + , "n2"); + } + $al.model._viewModel.request.flatRateCalculations.amountFormatted = kendo.toString(parseFloat($al.model._viewModel.request.flatRateCalculations.amount), "n2"); + + $al.model._viewModel.request.calculatedTotalAmount.amountFormatted = kendo.toString(parseFloat($al.model._viewModel.request.calculatedTotalAmount.amount), "n2"); + $al.model._viewModel.request.totalAmount.amountFormatted = kendo.toString($al.model._viewModel.request.totalAmount.amount, "n2"); + + + $al.model._viewModel.request.calculatedTotalAmount.amount = parseFloat($al.model._viewModel.request.calculatedTotalAmount.amount).toFixed(2); + $al.model._viewModel.request.totalAmount.amount = parseFloat($al.model._viewModel.request.totalAmount.amount).toFixed(2); + + + //I need to bind this, it is not refreshing the template with the data + $al.view._bindView(); + + } + + + } + + addEntitlePerson() { + if ($al.model._viewModel.request.flatRateFamilyExists) { + $al.model._viewModel.set("request.flatRateFamilyCalculations.people", $al.model._viewModel.request.flatRateFamilyCalculations.people + 1); + + $al.model._viewModel.request.flatRateFamilyCalculations.amount = parseFloat($al.model._viewModel.request.flatRateFamilyCalculations.amount) + + parseFloat($al.model._viewModel.request.flatRateFamily.amount); + $al.model._viewModel.request.flatRateFamilyCalculations.amountFormatted = kendo.toString($al.model._viewModel.request.flatRateFamilyCalculations.amount, "n2"); + $al.model._viewModel.request.flatRateFamilyCalculations.amount = parseFloat($al.model._viewModel.request.flatRateFamilyCalculations.amount).toFixed(2); + + } else { + $al.model._viewModel.request.flatRateCalculations.people++; + $al.model._viewModel.request.flatRateCalculations.amount = parseFloat($al.model._viewModel.request.flatRateCalculations.amount) + + parseFloat($al.model._viewModel.request.flatRate.amount); + $al.model._viewModel.request.flatRateCalculations.amountFormatted = kendo.toString($al.model._viewModel.request.flatRateCalculations.amount, "n2"); + $al.model._viewModel.request.flatRateCalculations.amount = parseFloat($al.model._viewModel.request.flatRateCalculations.amount).toFixed(2); + + } + + + } + + _calculateAmountData() { + $al.model._viewModel.request.flatRateTotals = {}; + + + if ($a.utils.isNotNull($al.model._viewModel.request.flatRateFamily)) { + $al.model._viewModel.request.flatRateFamilyExists = true; + $al.model._viewModel.request.flatRateFamilyCalculations = {}; + $al.model._viewModel.set("request.flatRateFamilyCalculations.people", 0); + $al.model._viewModel.request.flatRateFamilyCalculations.amount = 0; + + + } else { + $al.model._viewModel.request.flatRateFamilyExists = false; + } + //check family member included if family member included + $al.model._viewModel.request.flatRateCalculations = {}; + + if ($al.model._viewModel.request.includesStaffMember) { + + $al.model._viewModel.request.flatRateCalculations.people = 1; + $al.model._viewModel.request.flatRateCalculations.amount = $al.model._viewModel.request.flatRate.amount; + $al.model._viewModel.request.flatRateCalculations.amountFormatted = kendo.toString($al.model._viewModel.request.flatRate.amount, "n2"); + } else { + $al.model._viewModel.request.flatRateCalculations.people = 0; + $al.model._viewModel.request.flatRateCalculations.amount = 0; + } + + + if ($a.utils.isNotNull($al.model._viewModel.request.flatRateFamily)) { + $al.model._viewModel.request.flatRateFamilyExists = true; + $al.model._viewModel.request.flatRateFamilyCalculations = {}; + $al.model._viewModel.set("request.flatRateFamilyCalculations.people", 0); + $al.model._viewModel.request.flatRateFamilyCalculations.amount = 0; + } else { + $al.model._viewModel.request.flatRateFamilyExists = false; + + } + + + } + + _initializeView() { + var viewModel = new kendo.data.Model.define(); + $al.model.request = $al.controller.requestCommon.prepareRequestForModelView(); + + var _movFileFrozen = $al.model.movementFile.state === 'CANCELLED' || $al.model.movementFile.state === 'COMPLETED'; + + $al.model._viewModel = new viewModel({ + isVisible: true, + message: " ", + name: $al.model.movementFile.jobHolder.lastName.concat(' ', $al.model.movementFile.jobHolder.firstName), + perId: $al.model.request.staffMember.id, + request: $al.model.request, + payData: {foo: "fooValue"}, + movementFile: $al.model.movementFile, + + movFileFrozen: _movFileFrozen, + allOrderResposes: $al.model.allOrderResposes, + + isBackOffice: true, + onUpdateAndApproveRequest: function () { + $al.controller.doUpdateAndApproveRequest(); + }, + onRejectRequest: function () { + $al.controller.doUpdateAndRejectRequest(); + }, + showMarkAsPaidDialog: function () { + $al.controller.doShowMarkAsPaidDialog(); + }, + goToAbacDetailsTud: function () { + $al.controller.doGoToAbacDetailsTud(); + }, + onDiscardChanges: function () { + $al.controller.refreshPage(); + }, + showAbacInfo: function () { + $al.controller.doShowAbacInfo(); + }, + + saveAndInitiatePayment: function () { + if ($al.view._initiatePaymentValidations()) { + $al.controller._saveAndInitiatePayment(); + } + }, + onCreateTopupRequest() { + $al.controller.requestCommon.createTopupRequest( $al.model.request.id, $al.model.request.requestType ); + }, + onRefreshAbacInfo: function () { + $al.controller.requestCommon.doRefreshAbacInfoAndRefresh(); + + }, + onRefreshP2pInfo: function () { + $al.controller.requestCommon.doRefreshP2pInfoAndRefresh(); + + }, + showActionsBox: !_movFileFrozen, + displayClaimApproveRejectButtons: false, + canApprove: false, + canReject: false, + canMarkAsPaid: false, + canPayAbac: false, + canDiscardChanges: false, + showDivider: false, + isTotalAmountDisabled: true, + showPaymentInfo: false, + showPaymentInfoP2P:false, + showPaymentInfoABAC:false, + showPaymentAbacInfoLink: false, + // --- Comments logic --- + commentsVisible: true, + canAddComments: true, + canDeleteComments: false, + displayChildrenRequest: false, + // This is a switch: the button disappears when the text area is visible. Initial value: visible + showCommentButton: true, + showCommentInput: function() { + this.set("showCommentButton", false); + $al.view.requestCommon._scrollToBottom(); + $('textarea.autoSize').autosize(); + }, + // ---------------------- + onResubmit: function () { + + $al.controller.doResubmit(); + }, + someClaimRejected: false, + }); + + + if ($a.utils.isNotNull($al.model.request.requestPersons)) { + $al.model._viewModel.request.requestPersons = $al.model.request.requestPersons; + } else { + $al.model._viewModel.request.requestPersons = []; + } + + // Format Iban code + if (!$a.utils.isNull($al.model._viewModel.request.personBankInfo) + && $al.model._viewModel.request.personBankInfo.ibanCode.length > 0) { + $al.model._viewModel.request.personBankInfo.ibanCode = $al.model._viewModel.request.personBankInfo.ibanCode.replace(/\W/gi, '').replace(/(.{4})/g, '$1 '); + } + + if ($a.utils.isNull($al.model.request.personBankInfo)) { + $al.model.request.personBankInfo = {baf: '', ibanCode: ''} + } + + $al.controller.requestCommon.modelPermissionsCommon(); + + + // Set flag to see the DELETE button in the comments (regardless of state) + $al.model._viewModel.canDeleteComments = $al.view.requestCommon.hasDeleteCommentsPermission(); + + //Permission to show buttons, in case of needing a security checker I do it here instead of a template + $al.view.requestCommon._logicForP2pOrderLink(); + if ($al.model._viewModel.request.state == 'DRAFT') { + // Show comments section only if there some. + $al.model._viewModel.commentsVisible = $al.view.requestCommon._thereAreComments(false); + // Cannot add/delete comments + $al.model._viewModel.canAddComments = false; + + } else if ($al.model._viewModel.request.state == 'APPROVED') { + $al.view._setCanReject($al.model.permissions.canReviewTudRequest); + $al.model._viewModel.canMarkAsPaid = $al.model.permissions.canPayTudRequestManually; + $al.model._viewModel.canPayAbac = $al.model.permissions.canPayTudRequestAbac; + $al.model._viewModel.showDivider = true; + } else if ($al.model._viewModel.request.state == 'DISPUTED') { + $al.model._viewModel.canApprove = $al.model.permissions.canReviewTudRequest; + } else if ($al.model._viewModel.request.state == 'REJECTED') { + $al.model._viewModel.canResubmit = $al.model.permissions.canResubmitTudRequest; + } else if ($al.model._viewModel.request.state == 'AWAITING') { + $al.model._viewModel.canDiscardChanges = true; + $al.model._viewModel.showDivider = true; + $al.model._viewModel.canApprove = $al.model.permissions.canReviewTudRequest; + $al.view._setCanReject($al.model.permissions.canReviewTudRequest); + $al.model._viewModel.isTotalAmountDisabled = !$al.model.permissions.canReviewTudRequest; + $al.model._viewModel.displayClaimApproveRejectButtons = $al.model.permissions.canReviewTudRequest; + } else if ($al.model._viewModel.request.state == 'PAID' || $al.model._viewModel.request.state == 'SENT_TO_P2P') { + + if ($al.model._viewModel.request.state == 'PAID'){ + $al.controller.requestCommon.setTopupPermission(true,_movFileFrozen); + $al.view.requestCommon._setCanRejectPaidType2($al.model.permissions.canRejectPaidTudRequest); + } + + + $al.model._viewModel.showPaymentAbacInfoLink = ($al.model._viewModel.request.state == 'PAID'); + $al.model._viewModel.requestPaymentDateFormatted = kendo.toString(kendo.parseDate($al.model.request.paymentDate), 'MMM dd, yyyy'); + $al.view.requestCommon._logiForShowingPaymentInfo(); + $al.model._viewModel.showActionsBox = $al.model._viewModel.showActionsBox && ($al.model._viewModel.canReject || $al.model._viewModel.canCreateTopupRequest); + } + } + + + + _setCanReject(boolean_value) { + // Set value of 'canReject' + $al.model._viewModel.canReject = boolean_value; + } + + _initiatePaymentValidations() { + let validationErrors = $al.view._validateBeforeInitiatingPayment(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + _validateBeforeInitiatingPayment() { + let messages = []; + + if($al.model._viewModel.request.totalAmount.amount < 0) + messages.push($al.controller._languageBundle.validations.tud_amount_should_be_positive); + + return messages; + } + + _showWarnDialog(title, messages) { + + $a.modalDialog.showAnswer(null, + title, + $al.view._templates.warn.dialog.body.template({body_message: messages.join(" ")}), + $al.view._templates.basic.dialog.footer.template({}) + ); + } + + + _bindView() { + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } +} + +class RequestController { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.controller(); + }); + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.requests", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + + $al.model.init(); + $al.notifyOnReadyMvc(); + } + + doUpdateAndApproveRequest() { + + if ($al.controller.validateBeforeUpdate('APPROVE')) { + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._updateRequestResponse); + } + + } + + //check all claims have been approve or rejected + validateBeforeUpdate(action) { + $al.model._viewModel.someClaimRejected = false; + let everythingOk = true; + if ($al.controller.validateJustification(action)) { //check the justification is empty for action REJECT + // Validate every justification in Claim is not empty: + var relativesLength = $al.model._viewModel.request.requestPersons.length; + if (relativesLength > 0) { + for (var i = 0; i < relativesLength; i++) { + var iperson = $al.model._viewModel.request.requestPersons[i]; + // all calaims should have claimApprove defined + + if (iperson.claim && typeof iperson.claimApproved === "undefined") { + everythingOk = false; + $a.toast.showError($al.controller._languageBundle.alerts.all_claims_must_be_reviewed); // Once is enough + break; + } else if (iperson.claimApproved == false) { + $al.model._viewModel.someClaimRejected = true; + + if (!$al.controller.validateJustification(action)) { + everythingOk = false; + break; + } + } + } + + } + } else { + everythingOk = false; + } + + return everythingOk; + + } + + + _updateRequestResponse(data) { + + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'APPROVE' + }, null, null, $al.controller._approveResponse); + $al.model.refreshAfterUpdateState(data); + + } + + _approveResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.approve_and_save_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doPayRequest() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'PAY' + }, null, null, $al.controller._payResponse); + } + + _payResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.pay_request_success); + $al.model.refreshAfterUpdateState(data); + } + + // Init. Payment button calls this + _saveAndInitiatePayment() { + if (typeof $al.model._viewModel.movementFile.budgetLine == "undefined") { + $a.toast.showWarning($al.controller._languageBundle.alerts.no_budget_line_found); + return null; + } + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._initiatePayment); + } + // Navigate after init. payment + _initiatePayment() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.abacDetailsForm, null, { + requestId: $requestId, + requestType: "TudRequest", + movementFileId: $al.model.movementFile.id + })); + } + + doShowAbacInfo() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.showAbacInfo, null, + { + requestId: $requestId, + requestType: "TudRequest", + movementFileId: $al.model.movementFile.id + }) + ); + } + + //Reject + + //update request and then call doRejectRequest to move request to rejected + doUpdateAndRejectRequest() { + if ($al.controller.validateBeforeUpdate('REJECT')) { + if($al.model._viewModel.request.state == 'PAID'){ // in case rejecting and paid we clean abac info + $al.model.requestCommon.clearPaymentInfo(); + } + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller.doRejectRequest); + } + } + + //change the state to reject and _rejectRequestResponse to message and refresh page + doRejectRequest() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'REJECT' + }, null, null, $al.controller._rejectRequestResponse); + } + + //message and refresh page + _rejectRequestResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.reject_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doResubmit() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'RESUBMIT' + }, null, null, $al.controller._resubmitResponse); + } + + _resubmitResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.resubmit_request_success); + $al.model.refreshAfterUpdateState(data); + } + + validateMarkAsPaid() { + $a.toast.showSuccess($al.controller._languageBundle.alerts.create_draft_success); + } + + //MARK as PAID + + //show model dialog and bind + doShowMarkAsPaidDialog() { + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.mark_as_paid_extra_data_title, + $al.view._templates.mark_as_paid.dialog.body.template({}), + $al.view._templates.ok_cancel.dialog.footer.template({}) + ); + $al.view._elements.payment_date.data.element.kendoDatePicker({ + value: new Date(), + parseFormats: ["dd/MM/yyyy"] + + }); + kendo.bind("#mark_as_paid_data", $al.model._viewModel.request); + + } + + doGoToAbacDetailsTud() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.abacDetailsForm, null, { + requestId: $requestId, + requestType: "TudRequest", + movementFileId: $al.model.movementFile.id + })); + + } + + //when user click ok , we validate and call doUpdateAndMarkAsPaidRequest + doValidateAndSubmitMarkAsPaid() { + if ($al.view._elements.payment_order.data.element.val() !== "") { + $al.model._restCalls.validatePaymentOrder.execute({orderId: $al.view._elements.payment_order.data.element.val()}, null, $al.model._onDataRetrievedValidatePaymentOrder); + } else { + var validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + paymentDateInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_date.id + "]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentDateInvalid: "Invalid format of Payment Date", + } + }).data("kendoValidator"); + validator.validate(); + } + + } + + doValidateAndSubmitPay() { + $al.controller.doUpdateAndPayRequest(); + $a.modalDialog.hide(); + + } + + + + _renderCommunication() { + $al.view._elements.communication.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + + $al.view._elements.communication.data.component = "kendoListView"; + + $al.view._elements.communication_2.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + + $al.view._elements.communication_2.data.component = "kendoListView"; + } + + + + _prepareCommunication(data) { + if (typeof data !== "undefined") { + data.forEach(n => { + if (n.arrivalState) + n.arrivalState = $al.controller._languageBundle.stateMachine[n.arrivalState.toLowerCase()]; + + }); + } + + return data; + } + + //discard changes + + refreshPage() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewRequest, null, {requestId: $requestId})); + } + + validateJustification(action) { + + var valid = true; + if ($al.model._viewModel.someClaimRejected || action == 'REJECT') { + // Check at least one comment + valid = $al.view.requestCommon._thereAreComments(true); + } + + if (!valid) { + $a.toast.showError($al.controller._languageBundle.alerts.justification_is_mandatory_for_reject); + $al.view.requestCommon.showMissingCommentMessage(); + } + return valid; + } + +} + +$al.mvc(RequestModel, RequestView, RequestController, true); + diff --git a/e-rights-back-office/src/main/webapp/static/scripts/welcome.js b/e-rights-back-office/src/main/webapp/static/scripts/welcome.js new file mode 100644 index 0000000..da762be --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/scripts/welcome.js @@ -0,0 +1,126 @@ +class Model { + + constructor() { + this.urls = { + action: { + create: $a.utils.url(null, "/movement-files/create-job-holder.do"), + list: $a.utils.url(null, "/list/movement-files.do"), + rotationalEntitlementList: $a.utils.url(null, "/list/allowances.do"), + postingEntitlementList: $a.utils.url(null, "/list/posting-allowances.do"), + createNewAccDeclaration: $a.utils.url(null, "/posting-allowances/accommodation-declaration-create.do"), + + } + }; + this._restCalls = { + permissions: new $a.GetRestCall(null, "/internal/api/permissions"), + deleteMovementFileFromSession: new $a.DeleteRestCall(null, "/internal/api/session/collect-movement-file-data"), + }; + + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.controller._onLoadData); + dataPoolExecutor.add("permissions", $al.model._restCalls.permissions); + dataPoolExecutor.run(); + } + +} + +class View { + + constructor() { + this._elements = new $a.DataContainer("dashboard"); + this._templates = new $a.DataContainer("dashboard"); + + this._templates.node("content").data(new $a.KendoTemplateData()); + this._templates.node("empty").data(new $a.KendoTemplateData()); + + } + + _render() { + const viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel(); + if ($al.model.permissions.canCreate || + $al.model.permissions.canCreateAccommodationDeclaration + || $al.model.permissions.canListMovementFiles + || $al.model.permissions.canListPostingEntitlements + || $al.model.permissions.canListRotationalEntitlements) { + + $al.model._viewModel.set("canCreateMovementFile", + $al.model.permissions.canCreate); + $al.model._viewModel.set("canCreateAccommodationDeclaration", + $al.model.permissions.canCreateAccommodationDeclaration); + $al.model._viewModel.set("canListMovementFiles", + $al.model.permissions.canListMovementFiles); + $al.model._viewModel.set("canListPostingEntitlements", + $al.model.permissions.canListPostingEntitlements); + $al.model._viewModel.set("canListRotationalEntitlements", + $al.model.permissions.canListRotationalEntitlements); + $al.view._templates.content.data.compile(); + } else { + $al.view._templates.empty.data.compile(); + } + } + + _initializeView() { + const viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel({ + canCreateAccommodationDeclaration: false + }); + } + + _bindView() { + kendo.bind($al.view._templates.content.data.wrapperSelector, $al.model._viewModel); + } + +} + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.movement_files.list", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + + $al.model.init(); + + $al.notifyOnReadyMvc(); + } + + _onLoadData(data) { + $al.model.permissions = data.get("permissions").data; + + $al.view._initializeView(); + $al.view._render(); + $al.view._bindView(); + $a.loading.toggle(false); + } + _createMovementFile() { + $al.model._restCalls.deleteMovementFileFromSession.execute(null, null, null, null, $al.controller.goToCreateMovementFile()); + } + goToCreateMovementFile() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.create, null, null)); + } + + goToListMovementFile() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.list, null, null)); + } + + goToListRotationalEntitlements() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.rotationalEntitlementList, null, null)); + } + goToListPostingEntitlements() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.postingEntitlementList, null, null)); + } + createNewAccommodationDeclaration() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.createNewAccDeclaration, null, null)); + } +} + +$al.mvc(Model, View, Controller, true); \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/templates/abac-payments/abac-details-accommodation.html b/e-rights-back-office/src/main/webapp/static/templates/abac-payments/abac-details-accommodation.html new file mode 100644 index 0000000..2190270 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/abac-payments/abac-details-accommodation.html @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + diff --git a/e-rights-back-office/src/main/webapp/static/templates/abac-payments/abac-details-form.html b/e-rights-back-office/src/main/webapp/static/templates/abac-payments/abac-details-form.html new file mode 100644 index 0000000..f95df03 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/abac-payments/abac-details-form.html @@ -0,0 +1,535 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-back-office/src/main/webapp/static/templates/abac-payments/abac-info.html b/e-rights-back-office/src/main/webapp/static/templates/abac-payments/abac-info.html new file mode 100644 index 0000000..21a6356 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/abac-payments/abac-info.html @@ -0,0 +1,224 @@ + + + + + + + diff --git a/e-rights-back-office/src/main/webapp/static/templates/accommodation/declaration.job-holder.html b/e-rights-back-office/src/main/webapp/static/templates/accommodation/declaration.job-holder.html new file mode 100644 index 0000000..4626968 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/accommodation/declaration.job-holder.html @@ -0,0 +1,74 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/templates/accommodation/wizard.html b/e-rights-back-office/src/main/webapp/static/templates/accommodation/wizard.html new file mode 100644 index 0000000..fa09859 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/accommodation/wizard.html @@ -0,0 +1,18 @@ +job \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/templates/admin/iata-routes-calculation.html b/e-rights-back-office/src/main/webapp/static/templates/admin/iata-routes-calculation.html new file mode 100644 index 0000000..62d6b3b --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/admin/iata-routes-calculation.html @@ -0,0 +1,114 @@ + + + + + + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/templates/admin/it-admin.html b/e-rights-back-office/src/main/webapp/static/templates/admin/it-admin.html new file mode 100644 index 0000000..812a8a7 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/admin/it-admin.html @@ -0,0 +1,80 @@ + + + + + + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/templates/movement-docs/edit.html b/e-rights-back-office/src/main/webapp/static/templates/movement-docs/edit.html new file mode 100644 index 0000000..687dd1a --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/movement-docs/edit.html @@ -0,0 +1,142 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.details-no-job.html b/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.details-no-job.html new file mode 100644 index 0000000..48de796 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.details-no-job.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.details.html b/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.details.html new file mode 100644 index 0000000..837e892 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.details.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + diff --git a/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.future-assignment.html b/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.future-assignment.html new file mode 100644 index 0000000..708c9ca --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.future-assignment.html @@ -0,0 +1,210 @@ + + + + + + + + + diff --git a/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.job-holder.html b/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.job-holder.html new file mode 100644 index 0000000..4a34502 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.job-holder.html @@ -0,0 +1,71 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.staff-member-data.html b/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.staff-member-data.html new file mode 100644 index 0000000..061965d --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.staff-member-data.html @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + diff --git a/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.summary.html b/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.summary.html new file mode 100644 index 0000000..0bb7662 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/movement-file/file.summary.html @@ -0,0 +1,599 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/templates/posting-allowances/posting.allowances.html b/e-rights-back-office/src/main/webapp/static/templates/posting-allowances/posting.allowances.html new file mode 100644 index 0000000..df14f21 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/posting-allowances/posting.allowances.html @@ -0,0 +1,60 @@ + + + + + + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/templates/reports/empty.rates.entitlements.html b/e-rights-back-office/src/main/webapp/static/templates/reports/empty.rates.entitlements.html new file mode 100644 index 0000000..183e63d --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/reports/empty.rates.entitlements.html @@ -0,0 +1,36 @@ + + + + + + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/templates/reports/entitlement.max.default.html b/e-rights-back-office/src/main/webapp/static/templates/reports/entitlement.max.default.html new file mode 100644 index 0000000..40d9226 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/reports/entitlement.max.default.html @@ -0,0 +1,90 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/templates/request/allowances.html b/e-rights-back-office/src/main/webapp/static/templates/request/allowances.html new file mode 100644 index 0000000..80763c1 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/request/allowances.html @@ -0,0 +1,36 @@ + + + + + + \ No newline at end of file diff --git a/e-rights-back-office/src/main/webapp/static/templates/request/edit.adv.rem.request.html b/e-rights-back-office/src/main/webapp/static/templates/request/edit.adv.rem.request.html new file mode 100644 index 0000000..1727e39 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/request/edit.adv.rem.request.html @@ -0,0 +1,432 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-back-office/src/main/webapp/static/templates/request/edit.tud.request.html b/e-rights-back-office/src/main/webapp/static/templates/request/edit.tud.request.html new file mode 100644 index 0000000..deacf3e --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/request/edit.tud.request.html @@ -0,0 +1,451 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-back-office/src/main/webapp/static/templates/welcome.html b/e-rights-back-office/src/main/webapp/static/templates/welcome.html new file mode 100644 index 0000000..1986d39 --- /dev/null +++ b/e-rights-back-office/src/main/webapp/static/templates/welcome.html @@ -0,0 +1,79 @@ + + + + \ No newline at end of file diff --git a/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/api/http/rest/provider/AbstractRestApiProviderUTBase.java b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/api/http/rest/provider/AbstractRestApiProviderUTBase.java new file mode 100644 index 0000000..fa84d54 --- /dev/null +++ b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/api/http/rest/provider/AbstractRestApiProviderUTBase.java @@ -0,0 +1,57 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.provider; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.base.mapping.bean.BeanMapper; +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.backoffice.api.http.rest.provider.configuration.DefaultRestApiProviderConfiguration; +import org.junit.Before; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Import; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +import static org.mockito.Mockito.when; + +/** + * Created by iliessu on 05/12/2019; e-rights. + * + *

    + * TODO : comment class ! + *

    + * + * @author Silviu Ilie. + * + */ +@RunWith(SpringRunner.class) +@Import(DefaultRestApiProviderConfiguration.class) +public abstract class AbstractRestApiProviderUTBase { + + @Autowired + protected BeanMapper beanMapper; + + @Autowired + protected DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + protected T restApiController; + + protected MockMvc mvc; + + @Before + public void setUp() { + this.mvc = MockMvcBuilders.standaloneSetup(this.restApiController).build(); + } + + protected void registerServiceProvider(Class modelType, AbstractDataServiceProvider service) { + when(this.dataServiceProviderRegistry.getDataServiceProviderFor(modelType)).thenReturn(service); + } + + protected > void registerServiceProvider(Class modelType, Class serviceType, S service) { + when(this.dataServiceProviderRegistry.getDataServiceProviderFor(modelType, serviceType)).thenReturn(service); + } + +} diff --git a/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/api/http/rest/provider/configuration/DefaultRestApiProviderConfiguration.java b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/api/http/rest/provider/configuration/DefaultRestApiProviderConfiguration.java new file mode 100644 index 0000000..40b0415 --- /dev/null +++ b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/api/http/rest/provider/configuration/DefaultRestApiProviderConfiguration.java @@ -0,0 +1,40 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.provider.configuration; + +import eu.europa.eeas.ananke.core.base.AnankeCoreBaseBeanNames; +import eu.europa.eeas.ananke.core.base.mapping.bean.BeanMapper; +import eu.europa.eeas.ananke.core.base.validation.AnankeValidator; +import eu.europa.eeas.ananke.core.service.provider.data.AnankeCoreServiceProviderDataBeanNames; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import org.mockito.Mockito; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Created by iliessu on 05/12/2019; e-rights. + * + *

    + * {@code erights.api.http.rest.provider} configuration. + *

    + * + * @author Silviu Ilie. + * + */ +@Configuration +public class DefaultRestApiProviderConfiguration { + + @Bean(AnankeCoreBaseBeanNames.BEAN_MAPPER) + public BeanMapper beanMapper() { + return Mockito.mock(BeanMapper.class); + } + + @Bean(AnankeCoreServiceProviderDataBeanNames.DATA_SERVICE_PROVIDER_REGISTRY) + public DataServiceProviderRegistry dataServiceProviderRegistry() { + return Mockito.mock(DataServiceProviderRegistry.class); + } + + @Bean + public AnankeValidator validator() { + return Mockito.mock(AnankeValidator.class); + } + +} diff --git a/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/api/http/rest/provider/configuration/SimpleTestConfiguration.java b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/api/http/rest/provider/configuration/SimpleTestConfiguration.java new file mode 100644 index 0000000..783ebe6 --- /dev/null +++ b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/api/http/rest/provider/configuration/SimpleTestConfiguration.java @@ -0,0 +1,13 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.provider.configuration; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ComponentScan({ + "eu.europa.eeas.erights.backoffice.service.data.provider", + "eu.europa.eeas.ananke.core.base.mapping.bean" +}) +public class SimpleTestConfiguration { + +} diff --git a/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/api/http/rest/provider/internal/MovementFilesRestControllerTest.java b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/api/http/rest/provider/internal/MovementFilesRestControllerTest.java new file mode 100644 index 0000000..a471c25 --- /dev/null +++ b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/api/http/rest/provider/internal/MovementFilesRestControllerTest.java @@ -0,0 +1,97 @@ +package eu.europa.eeas.erights.backoffice.api.http.rest.provider.internal; + +import eu.europa.eeas.ananke.core.locale.Localization; +import eu.europa.eeas.erights.backoffice.api.http.rest.controller.internal.MovementFilesRestController; +import eu.europa.eeas.erights.backoffice.api.http.rest.provider.AbstractRestApiProviderUTBase; +import eu.europa.eeas.erights.backoffice.service.provider.SessionDataCollectorServiceProvider; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementContextTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementFileTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementContextModel; +import eu.europa.eeas.erights.common.service.model.MovementContextType; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.junit.Test; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; + +import static org.hamcrest.CoreMatchers.is; +import static org.mockito.Mockito.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +/** + * @author imironiu + */ +@ContextConfiguration(classes = {MovementFilesRestController.class}) +public class MovementFilesRestControllerTest extends AbstractRestApiProviderUTBase { + + private static final Long ID = 1L; + + private static final Long CONTEXT_ID = 2l; + + @MockBean + private MovementFileJpaServiceProvider service; + + @MockBean + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @MockBean + private SessionDataCollectorServiceProvider sessionDataCollectorServiceProvider; + + @MockBean + private Localization localization; + + @Override + public void setUp() { + super.setUp(); + registerServiceProvider(MovementFileModel.class, this.service); + } + + @Test + public void getMovementFileSuccessful() throws Exception { + MovementFileModel movementFileModel = buildMovementFileModel(ID); + MovementFileTransferObject expectedTransferObject = buildMovementFileTransferObject(ID); + when(this.service.get(ID)).thenReturn(movementFileModel); + when(this.beanMapper.map(movementFileModel, MovementFileTransferObject.class)).thenReturn(expectedTransferObject); + + this.mvc.perform(get("/internal/api/movement-files/1") + .accept(MediaType.APPLICATION_JSON) + ).andExpect(status().isOk()) + .andExpect(jsonPath("$.movementContext.name", is(MovementContextType.EOC.name()))) + .andExpect(jsonPath("$.budgetLine", is("budget"))); + + verify(this.service, times(1)).get(ID); + verify(this.beanMapper).map(movementFileModel, MovementFileTransferObject.class); + + verifyNoMoreInteractions(this.service); + } + + private MovementFileModel buildMovementFileModel(Long id) { + MovementFileModel model = new MovementFileModel(); + model.setId(id); + MovementContextModel context = new MovementContextModel(); + context.setId(CONTEXT_ID); + context.setName(MovementContextType.EOC.name()); + model.setMovementContext(context); + model.setBudgetLine("budget"); + return model; + } + + private MovementFileTransferObject buildMovementFileTransferObject(Long id) { + MovementFileTransferObject transferObject = new MovementFileTransferObject(); + transferObject.setId(id); + transferObject.setState(MovementFileState.DELETED); + MovementContextTransferObject movementContextTransferObject = new MovementContextTransferObject(); + movementContextTransferObject.setId(CONTEXT_ID); + movementContextTransferObject.setName(MovementContextType.EOC.name()); + transferObject.setMovementContext(movementContextTransferObject); + transferObject.setBudgetLine("budget"); + transferObject.setYear(2020); + transferObject.setAllocatedOrganization(12L); + return transferObject; + } +} diff --git a/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/security/JwksGenerationTestJava8.java b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/security/JwksGenerationTestJava8.java new file mode 100644 index 0000000..2c5bb73 --- /dev/null +++ b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/security/JwksGenerationTestJava8.java @@ -0,0 +1,52 @@ +package eu.europa.eeas.erights.backoffice.security; + +import com.nimbusds.jose.JWSAlgorithm; +import com.nimbusds.jose.jwk.JWKSet; +import com.nimbusds.jose.jwk.KeyUse; +import com.nimbusds.jose.jwk.RSAKey; +import org.junit.Test; + +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.interfaces.RSAPrivateKey; +import java.security.interfaces.RSAPublicKey; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.UUID; + +public class JwksGenerationTestJava8 { + + @Test + public void testToPrivateKey_RSA_Java8() throws Exception { + // 1) Generate RSA key pair (Java 8 standard APIs) + KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); + kpg.initialize(2048); + KeyPair kp = kpg.generateKeyPair(); + RSAPublicKey pub = (RSAPublicKey) kp.getPublic(); + RSAPrivateKey priv = (RSAPrivateKey) kp.getPrivate(); + + // 2) Build Nimbus RSA JWK (private JWK includes 'd', 'p', 'q', etc.) + String kid = UUID.randomUUID().toString(); + RSAKey rsaJwk = new RSAKey.Builder(pub) + .privateKey(priv) + .keyUse(KeyUse.SIGNATURE) + .algorithm(JWSAlgorithm.RS256) + .keyID(kid) + .build(); + + // 3) Create JWKS objects + // Public JWKS: contains only public parameters (no 'd') + JWKSet publicJwkSet = new JWKSet(rsaJwk.toPublicJWK()); + // Private JWKS: contains private parameters + JWKSet privateJwkSet = new JWKSet(rsaJwk); + + // 4) Assemble a single JSON object with both + Map out = new LinkedHashMap(); + out.put("PublicJWKS", publicJwkSet.toJSONObject(false)); // public only + out.put("PrivateJWKS", privateJwkSet.toJSONObject(true)); // include private params + System.out.println("PublicJWKS: " + publicJwkSet.toString()); + System.out.println("PrivateJWKS: " + privateJwkSet.toString()); + // 5) Print compact JSON + + } +} diff --git a/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/service/configuration/DefaultServiceDataProviderConfiguration.java b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/service/configuration/DefaultServiceDataProviderConfiguration.java new file mode 100644 index 0000000..77b5306 --- /dev/null +++ b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/service/configuration/DefaultServiceDataProviderConfiguration.java @@ -0,0 +1,66 @@ +package eu.europa.eeas.erights.backoffice.service.configuration; + +import eu.europa.eeas.ananke.core.base.AnankeCoreBaseBeanNames; +import eu.europa.eeas.ananke.core.base.mapping.bean.BeanMapper; +import eu.europa.eeas.ananke.core.base.validation.AnankeValidator; +import eu.europa.eeas.ananke.core.data.AnankeCoreDataBeanNames; +import eu.europa.eeas.ananke.core.data.support.EntityRepositoryRegistry; +import eu.europa.eeas.ananke.core.security.AnankeCoreSecurityBeanNames; +import eu.europa.eeas.ananke.core.security.SecurityHelper; +import eu.europa.eeas.ananke.core.service.provider.data.AnankeCoreServiceProviderDataBeanNames; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.validation.MovementFileValidator; +import org.mockito.Mockito; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Created by iliessu on 06/12/2019; e-rights. + * + *

    + * TODO : comment class ! + *

    + * + * @author Silviu Ilie. + * + */ +@Configuration +public class DefaultServiceDataProviderConfiguration { + + @Bean(AnankeCoreBaseBeanNames.BEAN_MAPPER) + public BeanMapper beanMapper() { + return Mockito.mock(BeanMapper.class); + } + + @Bean(AnankeCoreServiceProviderDataBeanNames.DATA_SERVICE_PROVIDER_REGISTRY) + public DataServiceProviderRegistry dataServiceProviderRegistry() { + return Mockito.mock(DataServiceProviderRegistry.class); + } + + @Bean(AnankeCoreDataBeanNames.ENTITY_REPOSITORY_REGISTRY) + public EntityRepositoryRegistry entityRepositoryRegistry() { + return Mockito.mock(EntityRepositoryRegistry.class); + } + + @Bean(AnankeCoreSecurityBeanNames.SECURITY_HELPER) + public SecurityHelper securityHelper() { + return Mockito.mock(SecurityHelper.class); + } + + @Bean + public AnankeValidator validator() { + return Mockito.mock(AnankeValidator.class); + } + + @Bean(ERightsBeanNames.MOVEMENT_FILE_VALIDATOR) + public MovementFileValidator movementFileValidator() { + return Mockito.mock(MovementFileValidator.class); + } + + @Bean(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + public MovementFileSecurityChecker movementFileSecurityChecker() { + return Mockito.mock(MovementFileSecurityChecker.class); + } +} diff --git a/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/service/data/provider/AbstractRestApiProviderUTBase.java b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/service/data/provider/AbstractRestApiProviderUTBase.java new file mode 100644 index 0000000..66afde6 --- /dev/null +++ b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/service/data/provider/AbstractRestApiProviderUTBase.java @@ -0,0 +1,62 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.base.mapping.bean.BeanMapper; +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.backoffice.service.configuration.DefaultServiceDataProviderConfiguration; +import org.junit.Before; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +import static org.mockito.Mockito.when; + +/** + * Created by iliessu on 05/12/2019; e-rights. + * + *

    + * TODO : comment class ! + *

    + * + * @author Silviu Ilie. + * + */ +@RunWith(SpringRunner.class) +@Import(DefaultServiceDataProviderConfiguration.class) +public abstract class AbstractRestApiProviderUTBase { + + @Autowired + protected BeanMapper beanMapper; + + @Autowired + protected DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + protected T restApiController; + + protected MockMvc mvc; + + @MockBean + private AbstractUserHandler userHandler; + + @Before + public void setUp() { + this.mvc = MockMvcBuilders.standaloneSetup(this.restApiController).build(); + } + + protected void registerServiceProvider(Class modelType, AbstractDataServiceProvider service) { + when(this.dataServiceProviderRegistry.getDataServiceProviderFor(modelType)).thenReturn(service); + } + + protected > void registerServiceProvider(Class modelType, Class serviceType, S service) { + when(this.dataServiceProviderRegistry.getDataServiceProviderFor(modelType, serviceType)).thenReturn(service); + } + +} diff --git a/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/service/data/provider/VReportMovementFileJpaServiceProviderUT.java b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/service/data/provider/VReportMovementFileJpaServiceProviderUT.java new file mode 100644 index 0000000..d90def1 --- /dev/null +++ b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/service/data/provider/VReportMovementFileJpaServiceProviderUT.java @@ -0,0 +1,82 @@ +package eu.europa.eeas.erights.backoffice.service.data.provider; + +import eu.europa.eeas.ananke.core.locale.Localization; +import eu.europa.eeas.erights.backoffice.api.http.rest.controller.internal.ReportRestController; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VReportMovementFileTransferObject; +import eu.europa.eeas.erights.common.service.model.VReportMovementFileModel; +import org.junit.Test; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; + +import java.util.Arrays; +import java.util.List; + +import static org.hamcrest.CoreMatchers.is; +import static org.mockito.Mockito.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@ContextConfiguration(classes = {ReportRestController.class}) +public class VReportMovementFileJpaServiceProviderUT extends AbstractRestApiProviderUTBase { + + public static final String MOVEMENT_CONTEXT = "Rotation"; + + public static final String FIRST_NAME = "user first name"; + + public static final String LAST_NAME = "user last name"; + + private static final Long ID = -1L; + + @MockBean + private VReportMovementFileJpaServiceProvider service; + + @MockBean + private Localization localization; + + @Override + public void setUp() { + super.setUp(); + registerServiceProvider(VReportMovementFileModel.class, this.service); + } + + @Test + public void getAllMovementFilesSuccessful() throws Exception { + List movementFileModels = Arrays.asList(buildVReportMovementFileModel(ID)); + List expectedTransferObjects = Arrays.asList(buildVReportMovementFileTransferObject(ID)); + when(this.service.getAllMovementFiles()).thenReturn(movementFileModels); + when(this.beanMapper.mapAsList(movementFileModels, VReportMovementFileTransferObject.class)).thenReturn(expectedTransferObjects); + + this.mvc.perform(get("/internal/api/report/movement-files").accept(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$[0].movementContext", is(MOVEMENT_CONTEXT))) + .andExpect(jsonPath("$[0].firstName", is(FIRST_NAME))) + .andExpect(jsonPath("$[0].lastName", is(LAST_NAME))) + .andExpect(jsonPath("$[0].perId", is(123))); + + verify(this.service, times(1)).getAllMovementFiles(); + verify(this.beanMapper).mapAsList(movementFileModels, VReportMovementFileTransferObject.class); + verifyNoMoreInteractions(this.service); + } + + private VReportMovementFileTransferObject buildVReportMovementFileTransferObject(Long id) { + VReportMovementFileTransferObject transferObject = new VReportMovementFileTransferObject(); + transferObject.setId(id); + transferObject.setMovementContext(MOVEMENT_CONTEXT); + transferObject.setPerId(123L); + transferObject.setFirstName(FIRST_NAME); + transferObject.setLastName(LAST_NAME); + return transferObject; + } + + private VReportMovementFileModel buildVReportMovementFileModel(Long id) { + VReportMovementFileModel model = new VReportMovementFileModel(); + model.setId(id); + model.setMovementContext(MOVEMENT_CONTEXT); + model.setPerId(123L); + model.setFirstName(FIRST_NAME); + model.setLastName(LAST_NAME); + return model; + } +} diff --git a/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/service/provider/ClearingEmailNotificationSenderProviderTest.java b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/service/provider/ClearingEmailNotificationSenderProviderTest.java new file mode 100644 index 0000000..73df53c --- /dev/null +++ b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/service/provider/ClearingEmailNotificationSenderProviderTest.java @@ -0,0 +1,167 @@ +package eu.europa.eeas.erights.backoffice.service.provider; + +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.AdvanceRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.ClearingRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.AdvanceRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.ClearingRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.ClearingRequestState; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +import static org.mockito.BDDMockito.*; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +class ClearingEmailNotificationSenderProviderTest { + + @Mock + private AdvanceRequestJpaServiceProvider advanceRequestJpaServiceProvider; + + @Mock + private ClearingRequestJpaServiceProvider clearingRequestJpaServiceProvider; + + @Mock + private MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + @Mock + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @InjectMocks + private ClearingEmailNotificationSenderProvider senderProvider; + + @Test + void paidAdvanceRequestOneDraftClearingRequestSixMonths() { + // given + long advanceRequestPaidDays = ClearingEmailNotificationSenderProvider.DAYS_SIX_MONTHS; + ClearingRequestState clearingRequestState = ClearingRequestState.DRAFT; + givenScenario(advanceRequestPaidDays, getClearingRequest(clearingRequestState)); + given(movementFileJpaServiceProvider.read(any(Long.class))).willReturn(new MovementFileModel()); + // when + senderProvider.execute(); + // then + assertSendReminderEmail(1); + } + + @Test + void paidAdvanceRequestOneDraftClearingRequestNineMonths() { + // given + long advanceRequestPaidDays = ClearingEmailNotificationSenderProvider.DAYS_NINE_MONTHS; + ClearingRequestState clearingRequestState = ClearingRequestState.DRAFT; + givenScenario(advanceRequestPaidDays, getClearingRequest(clearingRequestState)); + given(movementFileJpaServiceProvider.read(any(Long.class))).willReturn(new MovementFileModel()); + // when + senderProvider.execute(); + // then + assertSendReminderEmail(1); + } + + @Test + void paidAdvanceRequestOneDraftClearingRequestElevenMonths() { + // given + long advanceRequestPaidDays = ClearingEmailNotificationSenderProvider.DAYS_ELEVEN_MONTHS; + ClearingRequestState clearingRequestState = ClearingRequestState.DRAFT; + givenScenario(advanceRequestPaidDays, getClearingRequest(clearingRequestState)); + given(movementFileJpaServiceProvider.read(any(Long.class))).willReturn(new MovementFileModel()); + // when + senderProvider.execute(); + // then + assertSendReminderEmail(1); + } + + @Test + void paidAdvanceRequestOneDraftClearingRequest() { + // given + long advanceRequestPaidDays = ClearingEmailNotificationSenderProvider.DAYS_SIX_MONTHS; + ClearingRequestState clearingRequestState = ClearingRequestState.DRAFT; + givenScenario(advanceRequestPaidDays, getClearingRequest(clearingRequestState)); + given(movementFileJpaServiceProvider.read(any(Long.class))).willReturn(new MovementFileModel()); + // when + senderProvider.execute(); + // then + assertSendReminderEmail(1); + } + + @Test + void paidAdvanceRequestOnePaidClearingRequestSixMonths() { + // given + long advanceRequestPaidDays = ClearingEmailNotificationSenderProvider.DAYS_SIX_MONTHS; + ClearingRequestState clearingRequestState = ClearingRequestState.PAID; + givenScenario(advanceRequestPaidDays, getClearingRequest(clearingRequestState)); + // when + senderProvider.execute(); + // then + assertSendReminderEmail(0); + } + + @Test + void paidAdvanceRequestNoClearingExist() { + // given + long advanceRequestPaidDays = ClearingEmailNotificationSenderProvider.DAYS_SIX_MONTHS; + givenScenario(advanceRequestPaidDays, null); + given(movementFileJpaServiceProvider.read(any(Long.class))).willReturn(new MovementFileModel()); + // when + senderProvider.execute(); + // then + assertSendReminderEmail(1); + } + + @Test + void paidAdvanceRequestNoDraftClearingExist() { + // given + long advanceRequestPaidDays = ClearingEmailNotificationSenderProvider.DAYS_SIX_MONTHS; + givenScenario(advanceRequestPaidDays, getClearingRequest(ClearingRequestState.PAID)); + // when + senderProvider.execute(); + // then + assertSendReminderEmail(0); + } + + private void givenScenario(long paidDays, ClearingRequestModel clearingRequest) { + given(advanceRequestJpaServiceProvider.getAllByState(AdvanceRequestState.PAID)).willReturn(getAdvanceRequestList(paidDays)); + given(clearingRequestJpaServiceProvider.getClearingRequestByAdvanceId(1L)).willReturn(getClearingRequest(ClearingRequestState.PAID)); + given(clearingRequestJpaServiceProvider.getClearingRequestByAdvanceId(2L)).willReturn(clearingRequest); + given(clearingRequestJpaServiceProvider.getClearingRequestByAdvanceId(3L)).willReturn(getClearingRequest(ClearingRequestState.AWAITING)); + } + + private void assertSendReminderEmail(int times) { + verify(emailEdmsServiceProvider, times(times)).notifyClearingRequest(any(RequestModel.class), any(MovementFileModel.class)); + } + + private List getAdvanceRequestList(long paidDays) { + List models = new ArrayList<>(); + models.add(getAdvanceRequest(1L, AdvanceRequestState.APPROVED, LocalDate.now().minusDays(paidDays + 1))); + models.add(getAdvanceRequest(2L, AdvanceRequestState.PAID, LocalDate.now().minusDays(paidDays))); + models.add(getAdvanceRequest(3L, AdvanceRequestState.PAID, LocalDate.now().minusDays(paidDays - 1))); + return models; + } + + private AdvanceRequestModel getAdvanceRequest(Long id, AdvanceRequestState state, LocalDate paymentDate) { + AdvanceRequestModel model = new AdvanceRequestModel(); + model.setId(id); + model.setState(state); + model.setPaymentDate(paymentDate); + DeclarationModel declaration = new DeclarationModel(); + declaration.setMovementFileId(1L); + model.setDeclaration(declaration); + return model; + } + + private ClearingRequestModel getClearingRequest(ClearingRequestState state) { + ClearingRequestModel model = new ClearingRequestModel(); + model.setState(state); + return model; + } +} \ No newline at end of file diff --git a/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/service/provider/SessionDataCollectorServiceProviderUT.java b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/service/provider/SessionDataCollectorServiceProviderUT.java new file mode 100644 index 0000000..3817993 --- /dev/null +++ b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/service/provider/SessionDataCollectorServiceProviderUT.java @@ -0,0 +1,81 @@ +package eu.europa.eeas.erights.backoffice.service.provider; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.security.user.AnankeSecurityUser; +import eu.europa.eeas.erights.backoffice.tools.DefaultConfiguration; +import eu.europa.eeas.erights.backoffice.tools.MovementFileFieldNames; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = {SessionDataCollectorServiceProvider.class, DefaultConfiguration.class}) +public class SessionDataCollectorServiceProviderUT { + + private static final Long ID = 1l; + + @Autowired + private AbstractUserHandler userHandlerMock; + + @MockBean + private AnankeSecurityUser user; + + @Autowired + private SessionDataCollectorServiceProvider collectorServiceProvider; + + @Test + public void getMovementFileDataFromSession_ifFileMissingFromSessionANewOneIsCreated() { + when(userHandlerMock.getUser()).thenReturn(user); + when(user.getSessionData(MovementFileFieldNames.MOVEMENT_FILE)).thenReturn(null); + + MovementFileModel result = collectorServiceProvider.getMovementFileDataFromSession(); + + assertThat(result, notNullValue()); + assertThat(result.getState(), is(MovementFileState.START)); + } + + @Test + public void getMovementFileDataFromSession_ifFileInSessionThenReturnIt() { + when(userHandlerMock.getUser()).thenReturn(user); + when(user.getSessionData(MovementFileFieldNames.MOVEMENT_FILE)).thenReturn(createMovementFileModel(ID)); + + MovementFileModel result = collectorServiceProvider.getMovementFileDataFromSession(); + + assertThat(result, notNullValue()); + assertThat(result.getState(), is(MovementFileState.CONFIRMED)); + } + + @Test + public void clearDataFromSession() { + collectorServiceProvider.clearDataFromSession(); + + verify(userHandlerMock).removeSessionData(MovementFileFieldNames.MOVEMENT_FILE); + } + + @Test + public void saveDataInSession() { + MovementFileModel model = createMovementFileModel(ID); + + collectorServiceProvider.saveDataInSession(model); + + verify(userHandlerMock).putSessionData(MovementFileFieldNames.MOVEMENT_FILE, model); + } + + private MovementFileModel createMovementFileModel(Long movementFileId) { + MovementFileModel model = new MovementFileModel(); + model.setId(movementFileId); + model.setState(MovementFileState.CONFIRMED); + return model; + } +} diff --git a/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/tools/DefaultConfiguration.java b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/tools/DefaultConfiguration.java new file mode 100644 index 0000000..a6d21bd --- /dev/null +++ b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/tools/DefaultConfiguration.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.backoffice.tools; + +import eu.europa.eeas.ananke.core.base.AnankeCoreBaseBeanNames; +import eu.europa.eeas.ananke.core.base.mapping.bean.BeanMapper; +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.base.validation.AnankeValidator; +import eu.europa.eeas.ananke.core.service.provider.data.AnankeCoreServiceProviderDataBeanNames; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import org.mockito.Mockito; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class DefaultConfiguration { + + @Bean(AnankeCoreBaseBeanNames.BEAN_MAPPER) + public BeanMapper beanMapper() { + return Mockito.mock(BeanMapper.class); + } + + @Bean(AnankeCoreServiceProviderDataBeanNames.DATA_SERVICE_PROVIDER_REGISTRY) + public DataServiceProviderRegistry dataServiceProviderRegistry() { + return Mockito.mock(DataServiceProviderRegistry.class); + } + + @Bean + public AbstractUserHandler abstractUserHandler() { + return Mockito.mock(AbstractUserHandler.class); + } + + @Bean + public AnankeValidator validator() { + return Mockito.mock(AnankeValidator.class); + } +} diff --git a/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/tools/scheduler/EmailNotificationsUpdaterJobUT.java b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/tools/scheduler/EmailNotificationsUpdaterJobUT.java new file mode 100644 index 0000000..5792a9c --- /dev/null +++ b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/tools/scheduler/EmailNotificationsUpdaterJobUT.java @@ -0,0 +1,59 @@ +package eu.europa.eeas.erights.backoffice.tools.scheduler; + +import eu.europa.eeas.ananke.core.base.exception.logger.ExceptionLogger; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.backoffice.tools.DefaultConfiguration; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.powermock.modules.junit4.PowerMockRunnerDelegate; +import org.quartz.JobExecutionContext; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.mockito.Mockito.verify; + +/** + * @author imironiu + */ +@RunWith(PowerMockRunner.class) +@PowerMockRunnerDelegate(SpringRunner.class) +@PrepareForTest(ExceptionLogger.class) +@ContextConfiguration(classes = {DefaultConfiguration.class, EmailNotificationsUpdaterJob.class}) +public class EmailNotificationsUpdaterJobUT { + + @Autowired + protected DataServiceProviderRegistry dataServiceProviderRegistry; + + @MockBean + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @Autowired + private EmailNotificationsUpdaterJob job; + + @MockBean + private JobExecutionContext context; + + @MockBean + private ExceptionLogger exceptionLogger; + + @Before + public void setUp() { + PowerMockito.mockStatic(ExceptionLogger.class); + } + + @Test + public void nightlyUpdaterSchedulerIsCallingUpdateService() { + job.doExecute(context); + + verify(this.emailEdmsServiceProvider).updateMFNotificationsWithLatestStatusAndSendReport(NotificationTemplateCode.REPORT_FAILED_COMMS); + verify(this.emailEdmsServiceProvider).updateRequestNotificationsWithLatestStatusAndSendReport(NotificationTemplateCode.REPORT_FAILED_COMMS); + } +} diff --git a/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/tools/scheduler/NightlyUpdaterJobUT.java b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/tools/scheduler/NightlyUpdaterJobUT.java new file mode 100644 index 0000000..a494506 --- /dev/null +++ b/e-rights-back-office/src/test/java/eu/europa/eeas/erights/backoffice/tools/scheduler/NightlyUpdaterJobUT.java @@ -0,0 +1,62 @@ +package eu.europa.eeas.erights.backoffice.tools.scheduler; + +import eu.europa.eeas.ananke.core.base.exception.logger.ExceptionLogger; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.backoffice.tools.DefaultConfiguration; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.powermock.modules.junit4.PowerMockRunnerDelegate; +import org.quartz.JobExecutionContext; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +/** + * @author imironiu + */ +@RunWith(PowerMockRunner.class) +@PowerMockRunnerDelegate(SpringRunner.class) +@PrepareForTest(ExceptionLogger.class) +@ContextConfiguration(classes = {DefaultConfiguration.class, NightlyUpdaterJob.class}) +public class NightlyUpdaterJobUT { + + @Autowired + protected DataServiceProviderRegistry dataServiceProviderRegistry; + + @MockBean + private MovementFileJpaServiceProvider service; + + @Autowired + private NightlyUpdaterJob job; + + @MockBean + private JobExecutionContext context; + + @MockBean + private ExceptionLogger exceptionLogger; + + @Before + public void setUp() { + PowerMockito.mockStatic(ExceptionLogger.class); + when(this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class)).thenReturn(this.service); + } + + @Test + public void nightlyUpdaterSchedulerIsCallingUpdateService() { + + job.doExecute(context); + + verify(this.service).sendRemainderEmails(); + verify(this.service).updateConfirmedMovementFilesToOngoingState(); + } +} \ No newline at end of file diff --git a/e-rights-back-office/src/test/resources/features/regularization.feature b/e-rights-back-office/src/test/resources/features/regularization.feature new file mode 100644 index 0000000..04e8ef4 --- /dev/null +++ b/e-rights-back-office/src/test/resources/features/regularization.feature @@ -0,0 +1,36 @@ +Feature: Regularization + The regularization is the difference between the initial payment and the new amount of the allowance to the Staff. + It is a way to correct the amount already paid to the Staff member based on some events occurs during asignment and even after + asignmetn. + + Scenario: Creating Regularization from paid Travel Allowance Request + Given a Travel Allowance in Paid status + And 1000 euros total amount paid + And there is not updated information of the staff from SYSPER + When create Regularization + Then Regularization initial total amount should be 1000 euros + And Regularization new total amount should be 1000 euros + And Regularization amount regularized is 0 euros + + Scenario Outline: Creating Regularization from unpaid Travel Allowance Request causes an error + Given a Travel Allowance in + When create Regularization + Then an error message is thrown + And error message should be 'Travel Allowance should be in Paid status' + Examples: + | unpaid-status | + | AWAITING | + | DRAFT | + | REJECTED | + | APPROVED | + + Scenario Outline: Creating Regularization ID based on exercise year + Given a Travel Allowance with an exercise year + When create Regularization + Then The regularization ID should have the format -FVO-XXX + Examples: + | exercise-year | + | 2019 | + | 2022 | + | 2023 | + | 2023 | \ No newline at end of file diff --git a/e-rights-common/WEB-INF/web.xml b/e-rights-common/WEB-INF/web.xml new file mode 100644 index 0000000..8aa8c1a --- /dev/null +++ b/e-rights-common/WEB-INF/web.xml @@ -0,0 +1,63 @@ + + + + e-RIGHTS-Front-Office + + + + #public# + /common/web/* + + /ananke-error + /ananke/v2/web/* + /proxy-ticket-receptor + /static/* + /webjars/* + + + + + + #secure_managed# + /internal/api/* + + *.do + /actuator/* + /ananke-core/* + /ananke-tools/* + /logout + / + #EMPTY# + + + + * + + + NONE + + + + + Syntetic role that indicates if the principal is authenticated + authenticated + + + + eu.cec.digit.ecas.client.filter.externalConfigurationKey + AnankeCoreSecurityEULoginConfiguration + + + + 60 + + + + welcome.do + + + \ No newline at end of file diff --git a/e-rights-common/pom.xml b/e-rights-common/pom.xml new file mode 100644 index 0000000..7b364e5 --- /dev/null +++ b/e-rights-common/pom.xml @@ -0,0 +1,382 @@ + + + + 4.0.0 + + + eu.europa.eeas + e-rights + 5.0.1 + + + + e-rights-common + ${e-rights.version} + jar + + e-RIGHTS - Common + EEAS' e-RIGHTS - Common + + + 1.4.0 + + + + + + + + eu.europa.eeas + ananke-core-starter-audit-provider-api + + + eu.europa.eeas + ananke-core-starter-audit-provider-data-jpa + + + eu.europa.eeas + ananke-core-starter-audit-provider-service + + + eu.europa.eeas + ananke-core-starter-locale-provider-api-http + + + eu.europa.eeas + ananke-core-starter-security-provider-api-http + + + + + + eu.europa.eeas + ananke-tools-e-dms-connector + + + + eu.europa.eeas + ananke-tools-starter-hermes-connector + + + eu.europa.eeas + ananke-tools-starter-security + + + eu.europa.eeas + ananke-tools-starter-security-sentry + + + eu.europa.eeas + ananke-tools-starter-service-data-jpa + + + eu.europa.eeas + ananke-tools-starter-state-machine + + + eu.europa.eeas + ananke-tools-starter-user-management + + + eu.europa.eeas + ananke-tools-starter-file-management + + + eu.europa.eeas + ananke-tools-starter-web + + + + + + com.oracle + ojdbc6 + + + io.swagger + swagger-annotations + compile + + + org.springframework.security + spring-security-test + test + + + + + + + org.apache.velocity + velocity-engine-core + 2.3 + + + + org.apache.commons + commons-collections4 + 4.4 + + + org.apache.commons + commons-lang3 + 3.13.0 + + + + + io.rest-assured + rest-assured + 4.5.1 + test + + + io.rest-assured + rest-assured-all + 4.5.1 + test + + + io.rest-assured + rest-assured-common + 4.5.1 + test + + + + + eu.eeas + e-dms-rest-client + ${edms-rest-client.version} + + + + com.nimbusds + nimbus-jose-jwt + 8.23 + + + + io.github.resilience4j + resilience4j-spring-boot2 + + + + org.springframework.boot + spring-boot-starter-aop + + + + org.projectlombok + lombok + provided + + + org.openapitools + jackson-databind-nullable + 0.2.6 + + + io.swagger.core.v3 + swagger-annotations + 2.2.22 + + + + + org.junit.jupiter + junit-jupiter + 5.10.2 + test + + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + org.springframework.boot + spring-boot-starter-validation + + + jakarta.validation + jakarta.validation-api + + + org.apache.tomcat.embed + tomcat-embed-el + + + + + javax.validation + validation-api + 1.1.0.Final + + + + + + ${project.artifactId} + + + org.apache.maven.plugins + maven-surefire-plugin + 3.0.0-M5 + + + **/*Test.java + **/*UT.java + **/*IT.java + + + + + it.ninjatech + swagger-codegen-maven-plugin + + + e-rights-common + + generate-api + generate-model + + + e-rights-common + ${project.build.directory}/generated-sources + eu.europa.eeas.erights.common.api.http.rest.api.internal + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal + RestApi + TransferObject + + ${urlPrefix}${basedir}/src/main/resources/swagger/internal/e-rights-entities.yml + ${urlPrefix}${basedir}/src/main/resources/swagger/internal/e-rights-common.yml + ${urlPrefix}${basedir}/src/main/resources/swagger/internal/e-rights-allowances.yml + + + + + javax.money.CurrencyUnit + org.javamoney.moneta.Money + + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementFileTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementTypeTransferObject + eu.europa.eeas.erights.common.tools.statemachine.MovementFileState + eu.europa.eeas.erights.common.service.model.declaration.DeclarationState + eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeStatus + eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode + eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode + eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode + eu.europa.eeas.ananke.tools.edms.connector.service.model.enums.Status + eu.europa.eeas.erights.common.tools.entitlements.FlatRateDuplicator + eu.europa.eeas.erights.common.service.model.BudgetLineJob + eu.europa.eeas.erights.common.tools.statemachine.RequestState + eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestState + eu.europa.eeas.erights.common.tools.statemachine.TotalRemRequestState + eu.europa.eeas.erights.common.tools.statemachine.ClearingRequestState + eu.europa.eeas.erights.common.tools.statemachine.InstallationState + eu.europa.eeas.erights.common.tools.statemachine.TopUpRequestState + eu.europa.eeas.erights.common.tools.statemachine.ResettlementState + eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.SupportingDocType + eu.europa.eeas.erights.common.service.model.declaration.TudEligibilityModel + eu.europa.eeas.erights.common.tools.app.AppParamType + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VPersonTransferObject + + + eu.europa.eeas.erights.common.api.http.rest.api.internal.client.DefaultApi + eu.europa.eeas.erights.common.api.http.rest.api.internal.ApiClient + + + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.FunctionCodeTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StatutoryLinkCodeTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.InstitutionCodeTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PersonnelTypeTransferObject + + + + eu.europa.eeas.ananke.core.audit.provider.api.transferobject.AbstractAuditableTransferObject + eu.europa.eeas.ananke.core.api.transferobject.AbstractTransferObject + + + eu.europa.eeas.erights.common.tools.statemachine.TravelAllowanceState + + + + + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.0.0 + + + enforce-versions + + enforce + + + + + + org.apache.logging.log4j:*:2.0.0 + + + org.apache.logging.log4j:*:2.16.0 + + + + + + + + + org.openapitools + openapi-generator-maven-plugin + 5.1.0 + + + + generate + + + ${basedir}/src/main/resources/swagger/internal/e-rights-sysper.yml + java + ${project.build.directory}/generated-sources + false + false + + eu.europa.eeas.erights.web.client + eu.europa.eeas.erights.web.client.model + java8-localdatetime + true + true + resttemplate + + + + + + + + + diff --git a/e-rights-common/src/main/database/backups/dev/20210208/MV_ASSIGNMENTS_EEAS.sql b/e-rights-common/src/main/database/backups/dev/20210208/MV_ASSIGNMENTS_EEAS.sql new file mode 100644 index 0000000..9a0fe50 --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/MV_ASSIGNMENTS_EEAS.sql @@ -0,0 +1,23 @@ +-------------------------------------------------------- +-- File created - Monday-February-08-2021 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for Materialized View MV_ASSIGNMENTS_EEAS +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "E_RIGHTS"."MV_ASSIGNMENTS_EEAS" ("SOJ_ID", "JOB_ID", "JCX_ID", "PER_ID", "TOJ_CD", "JOB_TYPE", "TYPE_OF_POST", "START_DATE", "END_DATE", "INS_CD", "CREATION_DATE", "MODIFICATION_DATE") + ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS_DATA" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE + AS select * FROM MV_ASSIGNMENTS_EEAS@EASREFN.CC.CEC.EU.INT +; + + COMMENT ON MATERIALIZED VIEW "E_RIGHTS"."MV_ASSIGNMENTS_EEAS" IS 'snapshot table for snapshot E_RIGHTS.MV_ASSIGNMENTS_EEAS'; diff --git a/e-rights-common/src/main/database/backups/dev/20210208/MV_DELEGATIONS.sql b/e-rights-common/src/main/database/backups/dev/20210208/MV_DELEGATIONS.sql new file mode 100644 index 0000000..c7da217 --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/MV_DELEGATIONS.sql @@ -0,0 +1,43 @@ +-------------------------------------------------------- +-- File created - Monday-February-08-2021 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for Materialized View MV_DELEGATIONS +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "E_RIGHTS"."MV_DELEGATIONS" ("ORG_ID", "ORG_NAME", "ORG_CODE", "ORG_DESCRIPTION", "DELEGATION_NAME", "COUNTRY_CODE", "COUNTRY_NAME", "CITY_CODE", "CITY_NAME", "CURRENCY_CODE") + ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS_DATA" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE + AS SELECT +/* +DESCRIPTION : EEAS Delegations +APPLICATION(s) : e-RIGHTS +VERSION : 1.0 +DATE : 20/11/2019 +*/ + D.MAIN_ORG_ID AS ORG_ID, + D.ORG_NAME AS ORG_NAME, + D.ORG_CD AS ORG_CODE, + D.ORG_DESC ORG_DESCRIPTION, + D.DELEGATION_NAME AS DELEGATION_NAME, + D.COUNTRY_ID AS COUNTRY_CODE, + D.ENG_COUNTRY AS COUNTRY_NAME, + D.CITY_CODE AS CITY_CODE, + D.ENG_CITY AS CITY_NAME, + C.CURRENCY_cODE AS CURRENCY_CODE +FROM + MV_DELEGATIONS@EASREF D, + MV_CURRENCY_COUNTRIES@EASREF C +WHERE D.COUNTRY_ID = C.COUNTRY_CODE +; + + COMMENT ON MATERIALIZED VIEW "E_RIGHTS"."MV_DELEGATIONS" IS 'snapshot table for snapshot E_RIGHTS.MV_DELEGATIONS'; diff --git a/e-rights-common/src/main/database/backups/dev/20210208/MV_JOBS_COM.sql b/e-rights-common/src/main/database/backups/dev/20210208/MV_JOBS_COM.sql new file mode 100644 index 0000000..b458123 --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/MV_JOBS_COM.sql @@ -0,0 +1,23 @@ +-------------------------------------------------------- +-- File created - Monday-February-08-2021 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for Materialized View MV_JOBS_COM +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "E_RIGHTS"."MV_JOBS_COM" ("JCX_ID", "JOB_ID", "SP2_DATE_CREAT", "SP2_DATE_MODIF", "SP2_USER_CREAT", "SP2_USER_MODIF", "SP2_CREATION_DATE", "SP2_MODIFICATION_DATE", "INS_CD", "ORG_ID", "START_DATE", "END_DATE", "JCX_ID_REMPLACE", "DECISION_COMM", "JOB_ID_ORIGINE", "RESPONSIBLE", "HEAD_OF_ENTITY", "COMMENTS", "CITY_CODE", "CITY_NAME", "COUNTRY_NAME", "JOB_TYPE", "JOB_STATUS", "JOB_TITLE", "JOB_NAME", "JOB_NAME_DIRECTORY", "JOB_PURPOSE") + ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS_DATA" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE + AS select * FROM mv_jobs_com@EASREFN.CC.CEC.EU.INT +; + + COMMENT ON MATERIALIZED VIEW "E_RIGHTS"."MV_JOBS_COM" IS 'snapshot table for snapshot E_RIGHTS.MV_JOBS_COM'; diff --git a/e-rights-common/src/main/database/backups/dev/20210208/MV_JOBS_EEAS.sql b/e-rights-common/src/main/database/backups/dev/20210208/MV_JOBS_EEAS.sql new file mode 100644 index 0000000..92be06e --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/MV_JOBS_EEAS.sql @@ -0,0 +1,23 @@ +-------------------------------------------------------- +-- File created - Monday-February-08-2021 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for Materialized View MV_JOBS_EEAS +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "E_RIGHTS"."MV_JOBS_EEAS" ("JCX_ID", "JOB_ID", "SP2_DATE_CREAT", "SP2_DATE_MODIF", "SP2_USER_CREAT", "SP2_USER_MODIF", "SP2_CREATION_DATE", "SP2_MODIFICATION_DATE", "INS_CD", "ORG_ID", "START_DATE", "END_DATE", "JCX_ID_REMPLACE", "DECISION_COMM", "JOB_ID_ORIGINE", "RESPONSIBLE", "HEAD_OF_ENTITY", "COMMENTS", "CITY_CODE", "CITY_NAME", "COUNTRY_CODE", "COUNTRY_NAME", "LOCATION_CITY_CODE", "LOCATION_CITY_NAME", "LOCATION_COUNTRY_CODE", "LOCATION_COUNTRY_NAME", "TFN_ID", "JOB_TYPE", "JOB_STATUS", "CGR_CD", "EXCLU_GSYS", "EXCLU_GSYS_INTERNE", "EXCLU_GSYS_COMMENT", "ORG_OFFICIEL", "MOBILITE_OBLIGATOIRE", "TABL_EFFECTIFS_UNIQ", "CCE_ID_RESTYPE", "PERSONNEL_TYPE_ID", "PERSONNEL_TYPE_DESC", "BUDGETARY_LINE", "DATE_CREAT", "USER_CREAT", "DATE_MODIF", "USER_MODIF", "DG_RESP_ID", "DG_RESP_CODE", "TSJ_ID", "JOB_TITLE", "JOB_NAME", "JOB_NAME_DIRECTORY", "JOB_PURPOSE", "EDEL_FUNCTION_CODE", "EDEL_FUNCTION_DESC", "SENSITIVE") + ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS_DATA" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE + AS select * FROM MV_JOBS_EEAS@EASREFN.CC.CEC.EU.INT +; + + COMMENT ON MATERIALIZED VIEW "E_RIGHTS"."MV_JOBS_EEAS" IS 'snapshot table for snapshot E_RIGHTS.MV_JOBS_EEAS'; diff --git a/e-rights-common/src/main/database/backups/dev/20210208/MV_PERSONS_WORK_HISTORY_COM.sql b/e-rights-common/src/main/database/backups/dev/20210208/MV_PERSONS_WORK_HISTORY_COM.sql new file mode 100644 index 0000000..71630c6 --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/MV_PERSONS_WORK_HISTORY_COM.sql @@ -0,0 +1,22 @@ +-------------------------------------------------------- +-- File created - Monday-February-08-2021 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for Materialized View MV_PERSONS_WORK_HISTORY_COM +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "E_RIGHTS"."MV_PERSONS_WORK_HISTORY_COM" ("PER_ID", "ORG_ID", "JOB_ID", "INS_CD", "ORG_CD", "TOJ_CD", "NOM", "DT_DEB", "DT_FIN") + ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS_DATA" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE + AS select * from MV_PERSONS_WORK_HISTORY_EEAS@EASREFN.CC.CEC.EU.INT; + + COMMENT ON MATERIALIZED VIEW "E_RIGHTS"."MV_PERSONS_WORK_HISTORY_COM" IS 'snapshot table for snapshot E_RIGHTS.MV_PERSONS_WORK_HISTORY_COM'; diff --git a/e-rights-common/src/main/database/backups/dev/20210208/MV_PERSONS_WORK_HISTORY_EEAS.sql b/e-rights-common/src/main/database/backups/dev/20210208/MV_PERSONS_WORK_HISTORY_EEAS.sql new file mode 100644 index 0000000..27060c9 --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/MV_PERSONS_WORK_HISTORY_EEAS.sql @@ -0,0 +1,22 @@ +-------------------------------------------------------- +-- File created - Monday-February-08-2021 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for Materialized View MV_PERSONS_WORK_HISTORY_EEAS +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "E_RIGHTS"."MV_PERSONS_WORK_HISTORY_EEAS" ("PER_ID", "ORG_ID", "JOB_ID", "INS_CD", "ORG_CD", "TOJ_CD", "NOM", "DT_DEB", "DT_FIN") + ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS_DATA" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE + AS select * from MV_PERSONS_WORK_HISTORY_EEAS@EASREFN.CC.CEC.EU.INT; + + COMMENT ON MATERIALIZED VIEW "E_RIGHTS"."MV_PERSONS_WORK_HISTORY_EEAS" IS 'snapshot table for snapshot E_RIGHTS.MV_PERSONS_WORK_HISTORY_EEAS'; diff --git a/e-rights-common/src/main/database/backups/dev/20210208/MV_PER_ASSG_JOB.sql b/e-rights-common/src/main/database/backups/dev/20210208/MV_PER_ASSG_JOB.sql new file mode 100644 index 0000000..0bf608f --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/MV_PER_ASSG_JOB.sql @@ -0,0 +1,32 @@ +-------------------------------------------------------- +-- File created - Monday-February-08-2021 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for Materialized View MV_PER_ASSG_JOB +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "E_RIGHTS"."MV_PER_ASSG_JOB" ("INSTITUTION", "PER_ID", "SURNAME", "FIRST_NAME", "DATE_OF_BIRTH", "TYPE_OF_POST", "START_DATE", "END_DATE", "JOB_ID", "ORG_ID", "JOB_TITLE", "PER_ORG_ID") + ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS_DATA" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE + AS select A.ins_cd institution , P.per_id, P.Surname, P.First_Name, P.date_of_birth, A.Type_Of_Post, A.Start_Date, A.End_Date, J.job_id, J.ORG_ID, J.JOB_TITLE,p.org_id as per_org_id + from MV_PERSONS_EEAS P + inner join MV_ASSIGNMENTS_EEAS A on P.per_id = A.per_id + inner join MV_JOBS_EEAS J on A.Job_Id = J.Job_Id --and A.Jcx_Id = J.Jcx_Id + where A.toj_cd = 'AFF' +UNION ALL + select A.ins_cd institution , P.per_id, P.Surname, P.First_Name, P.date_of_birth, A.Type_Of_Post, A.Start_Date, A.End_Date, J.job_id, J.ORG_ID, J.JOB_TITLE,p.org_id as per_org_id + from MV_PERSONS_COM P + inner join MV_ASSIGNMENTS_COM A on P.per_id = A.per_id + inner join MV_JOBS_COM J on A.Job_Id = J.Job_Id --and A.Jcx_Id = J.Jcx_Id + where A.toj_cd = 'AFF'; + + COMMENT ON MATERIALIZED VIEW "E_RIGHTS"."MV_PER_ASSG_JOB" IS 'snapshot table for snapshot E_RIGHTS.MV_PER_ASSG_JOB'; diff --git a/e-rights-common/src/main/database/backups/dev/20210208/PC_REFRESH_ALL_MVS.sql b/e-rights-common/src/main/database/backups/dev/20210208/PC_REFRESH_ALL_MVS.sql new file mode 100644 index 0000000..c4fbc6e --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/PC_REFRESH_ALL_MVS.sql @@ -0,0 +1,46 @@ +create or replace PROCEDURE PC_REFRESH_ALL_MVS AS + v_sql_compile varchar2(500); + v_SQLERRM varchar2(4000); +BEGIN + -- DBMS_MVIEW.REFRESH('CAL_MONTH_SALES_MV', method => '?', + -- atomic_refresh => FALSE, out_of_place => TRUE); + + for cur in (select * + from t_refresh_objects o + where o.system in('ABAC') -- other systems + AND trunc( mod(mod(sysdate - refresh_date,1)*24,1)*60 ) > 25 + order by o.priority) loop + begin + + v_sql_compile := 'ALTER MATERIALIZED VIEW ' || + cur.app_object_name || ' COMPILE'; + execute immediate v_sql_compile; + dbms_mview.refresh(cur.app_object_name, 'C'); + + update t_refresh_objects l + set l.is_refreshed = 'Y', + l.refresh_date = sysdate, + l.status = 'OK' + where l.app_object_name = cur.app_object_name; + + pkg_log.debug(cur.app_object_name || + ' has been refreshed succesfully.', + 'pr_refresh_objects'); + + exception + when others then + v_sqlerrm := sqlerrm; + update t_refresh_objects l + set l.is_refreshed = 'n', + l.refresh_date = sysdate, + l.status = v_sqlerrm + where l.app_object_name = cur.app_object_name; + pkg_log.ERROR(cur.app_object_name || + ' has encountered error during refresh ' || + v_sqlerrm, + 'pr_refresh_all_mvs'); + + end; + commit; + end loop; +END PC_REFRESH_ALL_MVS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/backups/dev/20210208/PC_REFRESH_EEAS_MVS.sql b/e-rights-common/src/main/database/backups/dev/20210208/PC_REFRESH_EEAS_MVS.sql new file mode 100644 index 0000000..9cada68 --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/PC_REFRESH_EEAS_MVS.sql @@ -0,0 +1,62 @@ +create or replace PROCEDURE PC_REFRESH_EEAS_MVS AS + v_sql_compile varchar2(500); + v_SQLERRM varchar2(4000); +BEGIN + -- DBMS_MVIEW.REFRESH('CAL_MONTH_SALES_MV', method => '?', + -- atomic_refresh => FALSE, out_of_place => TRUE); + + for cur in (select * from t_refresh_objects o where o.system = 'EASREFN' order by o.priority) loop + + for cur_easrefn in (select app.easrefn_object_name, + e.is_refreshed easrefn_is_refreshed, + e.refresh_date easrefn_refresh_date + from t_app_easrefn_objects app, + t_refresh_objects@EASREFN.CC.CEC.EU.INT e + where app.easrefn_object_name = e.object_name + and app.app_object_name_id = cur.id + order by app.priority) loop + + if (cur.is_refreshed = 'N' or + (cur_easrefn.easrefn_is_refreshed = 'Y' and + cur.refresh_date < cur_easrefn.easrefn_refresh_date)) then + + begin + + v_sql_compile := 'ALTER MATERIALIZED VIEW ' || + cur.app_object_name || ' COMPILE'; + execute immediate v_sql_compile; + dbms_mview.refresh(cur.app_object_name, 'C'); + + update t_refresh_objects l + set l.is_refreshed = 'Y', + l.refresh_date = sysdate, + l.status = 'OK' + where l.app_object_name = cur.app_object_name; + + pkg_log.debug(cur.app_object_name || + ' has been refreshed succesfully.', + 'pr_refresh_objects'); + + exception + when others then + v_sqlerrm := sqlerrm; + update t_refresh_objects l + set l.is_refreshed = 'n', + l.refresh_date = sysdate, + l.status = v_sqlerrm + where l.app_object_name = cur.app_object_name; + pkg_log.ERROR(cur.app_object_name || + ' has encountered error during refresh ' || + v_sqlerrm, + 'pr_refresh_objects'); + + end; + commit; + goto next_app_view; + end if; + end loop; + + <> + null; + end loop; +END PC_REFRESH_EEAS_MVS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/backups/dev/20210208/PKG_MOVEMENT_TYPE_BR.sql b/e-rights-common/src/main/database/backups/dev/20210208/PKG_MOVEMENT_TYPE_BR.sql new file mode 100644 index 0000000..d71bb31 --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/PKG_MOVEMENT_TYPE_BR.sql @@ -0,0 +1,17 @@ +CREATE OR REPLACE PACKAGE PKG_MOVEMENT_TYPE_BR AS + function movement_type_from_br return number; + /* TODO enter package declarations (types, exceptions, methods etc) here */ + +END PKG_MOVEMENT_TYPE_BR; +/ + + +CREATE OR REPLACE PACKAGE body PKG_MOVEMENT_TYPE_BR AS + function movement_type_from_br return number is + begin + return 1; + end; + /* TODO enter package declarations (types, exceptions, methods etc) here */ + +END PKG_MOVEMENT_TYPE_BR; +/ diff --git a/e-rights-common/src/main/database/backups/dev/20210208/PKG_SYNC_EASREFN.sql b/e-rights-common/src/main/database/backups/dev/20210208/PKG_SYNC_EASREFN.sql new file mode 100644 index 0000000..be6104f --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/PKG_SYNC_EASREFN.sql @@ -0,0 +1,254 @@ +CREATE OR REPLACE PACKAGE pkg_sync_easrefn IS + /******************************************************************************************************** + -- Author : IMARTBRU + -- Created : 05/11/2019 + -- Purpose : Import data from EASREFN into E-Rigths + -- Running order: + 1. sync_organizations; + 2. sync_jobs; + 3. sync_budget_lines; + 4. sync_persons;; + + ******************************************************************************************************* */ + PROCEDURE sync_all; + + PROCEDURE sync_organizations; + + PROCEDURE sync_jobs; + + PROCEDURE sync_budget_lines; + + PROCEDURE sync_persons; + +END pkg_sync_easrefn; +/ + + +CREATE OR REPLACE PACKAGE BODY pkg_sync_easrefn IS + + PROCEDURE sync_all AS + BEGIN + sync_organizations; + sync_jobs; + sync_budget_lines; + sync_persons; + END sync_all; + + PROCEDURE sync_organizations AS + v_date VARCHAR2(19) := to_char(SYSDATE, 'dd-mm-yyyy HH24:mi:ss'); + BEGIN + + pkg_log.debug('START SYNC ORGANIZATIONS', + 'PKG_SYNC_EASREFN.SYNC_ORGANIZATIONS'); + + EXECUTE IMMEDIATE 'ALTER TABLE organizations DISABLE CONSTRAINT FK_ORGANIZATIONS_ORG_PARENT'; + EXECUTE IMMEDIATE 'ALTER TABLE organizations DISABLE CONSTRAINT FK_ORGANIZATIONS_ORG_MAIN'; + + MERGE INTO organizations o -- Destination table 1 + USING (SELECT org_id, + (CASE + WHEN org_id_parent = 0 THEN + org_id + ELSE + org_id_parent + END) org_id_parent, + main_org_id, + org_name || ' - ' || delegation_name AS NAME, + city_code, + country_id, + is_hq + FROM mv_entities@EASREFN.CC.CEC.EU.INT + ORDER BY sort_order, org_id, org_id_parent) s + ON (o.org_id = s.org_id) -- Search/Join condition + WHEN MATCHED THEN -- update when differences exist + UPDATE + SET o.org_id_parent = s.org_id_parent, + o.main_org_id = s.main_org_id, + o.name = s.name, + o.city = s.city_code, + o.country = s.country_id, + --o.is_hq = s.is_hq + WHERE o.org_id_parent <> s.org_id_parent + OR o.main_org_id <> s.main_org_id + OR o.name <> s.name + OR o.city <> s.city_code + OR o.country <> s.country_id + -- OR o.is_hq <> s.is_hq + WHEN NOT MATCHED THEN -- insert if no join + INSERT + (org_id, org_id_parent, main_org_id, NAME, city, country + --, is_hq + ) + VALUES + (s.org_id + ,s.org_id_parent + ,s.main_org_id + ,s.name + ,s.city_code + ,s.country_id + -- ,s.is_hq + ) log errors INTO easrefn_organizations_log + ('Bad') reject LIMIT unlimited; + + EXECUTE IMMEDIATE 'ALTER TABLE organizations ENABLE CONSTRAINT FK_ORGANIZATIONS_ORG_PARENT'; + EXECUTE IMMEDIATE 'ALTER TABLE organizations ENABLE CONSTRAINT FK_ORGANIZATIONS_ORG_MAIN'; + pkg_log.debug('SYNC EASREFN JOBS : ' || v_date, 'SYNC_ORGANIZATIONS'); + + COMMIT; + + EXCEPTION + WHEN OTHERS THEN + pkg_log.error('failed to SYNC ORGANIZATIONS with : ' || SQLERRM, + 'PKG_SYNC_EASREFN.SYNC_ORGANIZATIONS'); + END sync_organizations; + + /************************************************************************************************************************************************************************/ + + PROCEDURE sync_jobs AS + v_date VARCHAR2(19) := to_char(SYSDATE, 'dd-mm-yyyy HH24:mi:ss'); + BEGIN + + pkg_log.debug('START SYNC JOBS', 'PKG_SYNC_EASREFN.SYNC_JOBS'); + + MERGE INTO jobs p -- Destination table 1 + USING (SELECT job_id, org_id, job_type, job_status, job_title, job_name + FROM mv_jobs_com@EASREFN.CC.CEC.EU.INT + UNION + SELECT job_id, org_id, job_type, job_status, job_title, job_name + FROM mv_jobs_eeas@EASREFN.CC.CEC.EU.INT + ORDER BY job_id) s + ON (p.job_number = s.job_id) -- Search/Join condition + WHEN MATCHED THEN -- update when differences exist + UPDATE + SET p.org_id = s.org_id, + p.job_type = s.job_type, + p.job_status = s.job_status, + p.job_title = s.job_title, + p.job_name = s.job_name + WHERE p.org_id <> s.org_id + OR p.job_type <> s.job_type + OR p.job_status <> s.job_status + OR p.job_title <> s.job_title + OR p.job_name <> s.job_name + WHEN NOT MATCHED THEN -- insert if no join + INSERT + (job_number, org_id, job_type, job_status, job_title, job_name) + VALUES + (s.job_id, + s.org_id, + s.job_type, + s.job_status, + s.job_title, + s.job_name) log errors INTO easrefn_sync_job_log + ('Bad') reject LIMIT unlimited; + + pkg_log.debug('sync EASREFN JOBS : ' || v_date, 'SYNC_JOBS'); + + COMMIT; + + EXCEPTION + WHEN OTHERS THEN + pkg_log.error('failed to SYNC JOBS with : ' || SQLERRM, + 'PKG_SYNC_EASREFN.SYNC_JOBS'); + END sync_jobs; + + /************************************************************************************************************************************************************************/ + + PROCEDURE sync_budget_lines AS + v_date VARCHAR2(19) := to_char(SYSDATE, 'dd-mm-yyyy HH24:mi:ss'); + BEGIN + + pkg_log.debug('START SYNC BUDGET LINES ', + 'PKG_SYNC_EASREFN.SYNC_BUDGET_LINES'); + + MERGE INTO budget_lines bl -- Destination table 1 + USING (SELECT budget_line, job_id FROM mv_job_budget_line@EASREFN.CC.CEC.EU.INT) s + ON (bl.budget_line = s.budget_line) -- Search/Join condition + WHEN MATCHED THEN -- update when differences exist + UPDATE SET bl.job_id = s.job_id WHERE bl.job_id <> s.job_id + WHEN NOT MATCHED THEN -- insert if no join + INSERT + (budget_line, job_id) + VALUES + (s.budget_line, s.job_id) log errors INTO easrefn_budget_lines_log + ('Bad') reject LIMIT unlimited; + + pkg_log.debug('sync EASREFN JOBS : ' || v_date, 'SYNC_BUDGET_LINES'); + + COMMIT; + + EXCEPTION + WHEN OTHERS THEN + pkg_log.error('failed to SYNC BUDGET LINES with : ' || SQLERRM, + 'PKG_SYNC_EASREFN.SYNC_BUDGET_LINES'); + END sync_budget_lines; + + /************************************************************************************************************************************************************************/ + + PROCEDURE sync_persons AS + v_date VARCHAR2(19) := to_char(SYSDATE, 'dd-mm-yyyy HH24:mi:ss'); + BEGIN + + pkg_log.debug('START SYNC PERSONS ', 'PKG_SYNC_EASREFN.SYNC_PERSONS'); + + MERGE INTO persons p -- Destination table 1 + USING (SELECT per_id, + surname, + first_name, + genre AS gender, + date_of_birth, + email, + job_id, + org_id + FROM mv_persons_com@EASREFN.CC.CEC.EU.INT + ORDER BY per_id ASC) s + ON (p.per_id = s.per_id) -- Search/Join condition + WHEN MATCHED THEN -- update when differences exist + UPDATE + SET p.last_name = s.surname, + p.first_name = s.first_name, + p.gender = s.gender, + p.date_of_birth = s.date_of_birth, + p.email = s.email, + p.job_id = s.job_id, + p.org_id = s.org_id + WHERE p.last_name <> s.surname + OR p.first_name <> s.first_name + OR p.gender <> s.gender + OR p.date_of_birth <> s.date_of_birth + OR p.email <> s.email + OR p.job_id <> s.job_id + OR p.org_id <> s.org_id + WHEN NOT MATCHED THEN -- insert if no join + INSERT + (per_id, + last_name, + first_name, + gender, + date_of_birth, + email, + job_id, + org_id) + VALUES + (s.per_id, + s.surname, + s.first_name, + s.gender, + s.date_of_birth, + s.email, + s.job_id, + s.org_id) log errors INTO easrefn_persons_log + ('Bad') reject LIMIT unlimited; + + pkg_log.debug('sync EASREFN JOBS : ' || v_date, 'SYNC_PERSONS'); + + COMMIT; + + EXCEPTION + WHEN OTHERS THEN + pkg_log.error('failed to SYNC PERSONS with : ' || SQLERRM, + 'PKG_SYNC_EASREFN.SYNC_PERSONS'); + END sync_persons; + +END pkg_sync_easrefn; +/ diff --git a/e-rights-common/src/main/database/backups/dev/20210208/V_AUD_MOVEMENT_FILES.sql b/e-rights-common/src/main/database/backups/dev/20210208/V_AUD_MOVEMENT_FILES.sql new file mode 100644 index 0000000..318b1d2 --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/V_AUD_MOVEMENT_FILES.sql @@ -0,0 +1,43 @@ +-------------------------------------------------------- +-- File created - Monday-February-08-2021 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for View V_AUD_MOVEMENT_FILES +-------------------------------------------------------- + + CREATE OR REPLACE FORCE VIEW "E_RIGHTS"."V_AUD_MOVEMENT_FILES" ("ID", "FIRST_NAME", "LAST_NAME", "STATUS", "STARTDATEFUTURE", "ENDDATEFUTURE", "MOVEMENTFROM", "MOVEMENTTO", "BUDGDET_LINE_FUTURE", "MOVEMENTTYPE", "MOVEMENTYEAR", "MOVEMENTCONTEXT", "PERID", "FUTUREASSIGNMENT", "FILEID", "PRIORITY", "ALLOCATEDTOCURRENT", "ALLOCATEDTOFUTURE", "REASON") AS + SELECT + f.id + , p.first_name as FIRST_NAME + , p.surname as LAST_NAME + , f.state as status + , coalesce(assign_start_date_to, start_date) as startDateFuture -- future assignment + ,coalesce(assign_end_date_to, estimated_end_date)as endDateFuture + , FR.eng_country ||',' || FR.eng_city as movementFrom + , MT.eng_country ||',' || MT.eng_city as movementTo + , budget_line as budgdet_line_future + , mvtp.movement_type as MovementType + ,F.Year as movementYear + ,C.Name as movementContext + ,F.per_id as perID + ,f.job_id_to as futureAssignment + ,F.file_id as fileId + ,f.priority + ,f.org_cd_from as allocatedToCurrent + ,f.org_cd_to as allocatedToFuture + ,'1' as reason +FROM AUD_movement_files F +inner join movement_context C on F.Context_Id = C.ID +inner join ( select per_id, first_name, surname + from mv_persons_eeas + union select per_id, first_name, surname + from mv_persons_com) p + on p.per_id = f.per_id + --inner join mv_entities +--inner join job_holder H on F.Per_Id = H.Per_Id +inner join movement_types mvtp on mvtp.id = f.movement_type_id +left join mv_entities FR on FR.org_id = F.org_id_from +left join mv_entities MT on MT.org_id = F.org_id_to +left join mv_countries C on MT.country_id = c.country_code +left join mv_entities_types T on MT.org_id = T.Org_Id +; diff --git a/e-rights-common/src/main/database/backups/dev/20210208/V_DELEGATIONS.sql b/e-rights-common/src/main/database/backups/dev/20210208/V_DELEGATIONS.sql new file mode 100644 index 0000000..5f2b03d --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/V_DELEGATIONS.sql @@ -0,0 +1,29 @@ +-------------------------------------------------------- +-- File created - Monday-February-08-2021 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for View V_DELEGATIONS +-------------------------------------------------------- + + CREATE OR REPLACE FORCE VIEW "E_RIGHTS"."V_DELEGATIONS" ("ORG_ID", "ORG_NAME", "ORG_CODE", "ORG_DESCRIPTION", "COUNTRY_CODE", "COUNTRY_NAME", "CITY_CODE", "CITY_NAME", "CURRENCY_CODE") AS + SELECT +/* +DESCRIPTION : EEAS Delegations perspective over MV_DELEGATIONS snapshot +APPLICATION(s) : e-RIGHTS +VERSION : 1.0 +DATE : 20/11/2019 +*/ + ORG_ID, + ORG_NAME, + ORG_CODE, + ORG_DESCRIPTION, + DELEGATION_NAME + COUNTRY_CODE, + COUNTRY_NAME, + CITY_CODE, + CITY_NAME, + CURRENCY_CODE +FROM MV_DELEGATIONS + + +; diff --git a/e-rights-common/src/main/database/backups/dev/20210208/V_JOBS_CURRENT.sql b/e-rights-common/src/main/database/backups/dev/20210208/V_JOBS_CURRENT.sql new file mode 100644 index 0000000..daaebd6 --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/V_JOBS_CURRENT.sql @@ -0,0 +1,43 @@ +-------------------------------------------------------- +-- File created - Monday-February-08-2021 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for View V_JOBS_CURRENT +-------------------------------------------------------- + + CREATE OR REPLACE FORCE VIEW "E_RIGHTS"."V_JOBS_CURRENT" ("JOB_ID", "JOB_TYPE", "PERSONNEL_TYPE_DESC", "ORGANIZATION_COUNTRY", "ORGANIZATION_CITY", "ORGANIZATION_NAME", "BUDGET_LINE", "ORGANIZATION_IN_EU", "INTERNATIONAL_ORGANIZATION", "ORG_ID") AS + select +job_eeas.job_id +,job_eeas.job_type +,job_eeas.personnel_type_desc +,ent.eng_country as ORGANIZATION_COUNTRY +,ent.eng_city as ORGANIZATION_CITY +,ent.org_cd as ORGANIZATION_NAME +,job_eeas.budgetary_line as budget_line +,ctr.eu_state as ORGANIZATION_IN_EU +,ent_typ.code as INTERNATIONAL_ORGANIZATION +,job_eeas.org_id as ORG_ID +from MV_JOBS_EEAS job_eeas + inner join mv_entities ent on job_eeas.org_id = ent.org_id + inner join mv_countries ctr on ent.country_id = ctr.country_code + left join mv_entities_types ent_typ on ent.org_id = ent_typ.Org_Id +UNION +select +job_com.job_id +,job_com.job_type +,null as personnel_type_desc +--,job_com.personnel_type_desc +,ent.eng_country as ORGANIZATION_COUNTRY +,ent.eng_city as ORGANIZATION_CITY +,ent.org_cd as ORGANIZATION_NAME +,bgl.budget_line as budget_line +--,job_com.budgetary_line as budget_line +,ctr.eu_state as ORGANIZATION_IN_EU +,ent_typ.code as INTERNATIONAL_ORGANIZATION +,job_com.org_id as ORG_ID +from MV_JOBS_COM job_COM + inner join MV_JOB_BUDGET_LINE bgl on bgl.job_id = job_com.job_id + inner join mv_entities ent on job_COM.org_id = ent.org_id + inner join mv_countries ctr on ent.country_id = ctr.country_code + left join mv_entities_types ent_typ on ent.org_id = ent_typ.Org_Id +; diff --git a/e-rights-common/src/main/database/backups/dev/20210208/V_MANAGE_MOVEMENT_FILES.sql b/e-rights-common/src/main/database/backups/dev/20210208/V_MANAGE_MOVEMENT_FILES.sql new file mode 100644 index 0000000..2a2c98e --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/V_MANAGE_MOVEMENT_FILES.sql @@ -0,0 +1,37 @@ +-------------------------------------------------------- +-- File created - Monday-February-08-2021 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for View V_MANAGE_MOVEMENT_FILES +-------------------------------------------------------- + + CREATE OR REPLACE FORCE VIEW "E_RIGHTS"."V_MANAGE_MOVEMENT_FILES" ("id", "fileId", "MOVEMENTCONTEXT", "MOVEMENTYEAR", "MOVEMENTFROM", "ALLOCATEDTOCURRENT", "LOCATIONCOUNTRYCURRENT", "LOCATIONCITYCURRENT", "MOVEMENTTO", "LOCATIONCOUNTRYFUTURE", "INEUFUTURE", "INTERNATIONALORG", "NONFAMILYPOSTING", "CHILDFREEPOSTING", "SECONDMENT", "STATUS", "currentStatus", "ASSIGNEDTO", "PERID", "LASTNAME", "FIRSTNAME", "STARTDATEFUTURE", "ESTIMATEDENDDATEFUTURE", "LINKEDMOVEMENTFILEID") AS + SELECT + -1 as "id", + -1 as "fileId", + 'Movement Context' as movementContext, + 2000 as movementYear, + 'movementFrom' as movementFrom, + 'allocatedToCurrent' as allocatedToCurrent, + 'locationCountryCurrent' as locationCountryCurrent, + 'locationCityCurrent' as locationCityCurrent, + 'movementTo' as movementTo, + 'locationCountryFuture' as locationCountryFuture, + 'inEuFuture' as inEuFuture, + 'Y' as internationalOrg, + 'Y' as nonFamilyPosting, + 'N' as childFreePosting, + 'N' as secondment, + 'On going' as status, + 'On going' as "currentStatus", + 'assignedTo' as assignedTo, + -1 as perID, + 'lastName' as lastName, + 'firstName' as firstName, + sysdate as startDateFuture, + sysdate as estimatedEndDateFuture, + 'xxx' as linkedMovementFileId + +FROM dual + +; diff --git a/e-rights-common/src/main/database/backups/dev/20210208/V_MOVEMENT_FILE_DETAIL.sql b/e-rights-common/src/main/database/backups/dev/20210208/V_MOVEMENT_FILE_DETAIL.sql new file mode 100644 index 0000000..4da8dc2 --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/V_MOVEMENT_FILE_DETAIL.sql @@ -0,0 +1,14 @@ +-------------------------------------------------------- +-- File created - Monday-February-08-2021 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for View V_MOVEMENT_FILE_DETAIL +-------------------------------------------------------- + + CREATE OR REPLACE FORCE VIEW "E_RIGHTS"."V_MOVEMENT_FILE_DETAIL" ("ID", "DETAIL_DESCRIPTION", "DETAIL_NAME", "DETAIL_DATE", "CURRENT_STATE_ID", "MOVEMENT_FILE_ID") AS + select ps.id, ps.state detail_description, ps.event detail_name,ps.saved_at detail_date ,ps.current_state_id,123 movement_file_id +from ANK_SM_PREVIOUS_STATES ps +order by saved_at; + + COMMENT ON TABLE "E_RIGHTS"."V_MOVEMENT_FILE_DETAIL" IS 'Created by FT, just to prototype details for movement file work in progress' +; diff --git a/e-rights-common/src/main/database/backups/dev/20210208/V_MOVEMENT_TYPES.sql b/e-rights-common/src/main/database/backups/dev/20210208/V_MOVEMENT_TYPES.sql new file mode 100644 index 0000000..6740414 --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/V_MOVEMENT_TYPES.sql @@ -0,0 +1,22 @@ +-------------------------------------------------------- +-- File created - Monday-February-08-2021 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for View V_MOVEMENT_TYPES +-------------------------------------------------------- + + CREATE OR REPLACE FORCE VIEW "E_RIGHTS"."V_MOVEMENT_TYPES" ("ID", "ID_FROM", "CODE_FROM", "ID_TO", "CODE_TO", "MOVEMENT_TYPE", "CONTEXT_ID") AS + select +brs.id +,mvmf.id as id_from +,mvmf.code as code_from +,mvmt.id as id_to +,mvmt.code as code_to +,mvmf.code || '-' || mvmt.code as movement_type +,brs.context_id +FROM MOVEMENT_TYPES_V1 mvmf +inner join MOVEMENT_TYPES_BRS_V1 brs +on brs.movement_from_id = mvmf.id +inner join MOVEMENT_TYPES_v1 mvmt +on brs.movement_to_id = mvmt.id +; diff --git a/e-rights-common/src/main/database/backups/dev/20210208/V_MV_ENTITIES.sql b/e-rights-common/src/main/database/backups/dev/20210208/V_MV_ENTITIES.sql new file mode 100644 index 0000000..98891e2 --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/V_MV_ENTITIES.sql @@ -0,0 +1,10 @@ +-------------------------------------------------------- +-- File created - Monday-February-08-2021 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for View V_MV_ENTITIES +-------------------------------------------------------- + + CREATE OR REPLACE FORCE VIEW "E_RIGHTS"."V_MV_ENTITIES" ("ORG_ID", "ORG_ID_PARENT", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "SORT_ORDER", "ORG_DESC", "ORG_DESC_FRE", "CITY_CODE", "ENG_CITY", "FRA_CITY", "COUNTRY_ID", "ENG_COUNTRY", "FRA_COUNTRY", "IS_DELEGATION", "TOR_ID", "TYPEOFENTITY_NAME", "DELEGATION_NAME", "DEL_ID", "ALERT_STATUS_ID", "ALERT_STATUS_CODE", "SEVERITY_LEVEL", "REGION_ID", "REGION_CODE", "FRA_REGION_DESC", "ENG_REGION_DESC", "IS_HQ") AS + select "ORG_ID","ORG_ID_PARENT","MAIN_ORG_ID","ORG_NAME","ORG_CD","SORT_ORDER","ORG_DESC","ORG_DESC_FRE","CITY_CODE","ENG_CITY","FRA_CITY","COUNTRY_ID","ENG_COUNTRY","FRA_COUNTRY","IS_DELEGATION","TOR_ID","TYPEOFENTITY_NAME","DELEGATION_NAME","DEL_ID","ALERT_STATUS_ID","ALERT_STATUS_CODE","SEVERITY_LEVEL","REGION_ID","REGION_CODE","FRA_REGION_DESC","ENG_REGION_DESC","IS_HQ" from mv_entities +; diff --git a/e-rights-common/src/main/database/backups/dev/20210208/V_MV_JOBS_EEAS.sql b/e-rights-common/src/main/database/backups/dev/20210208/V_MV_JOBS_EEAS.sql new file mode 100644 index 0000000..250f234 --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/V_MV_JOBS_EEAS.sql @@ -0,0 +1,10 @@ +-------------------------------------------------------- +-- File created - Monday-February-08-2021 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for View V_MV_JOBS_EEAS +-------------------------------------------------------- + + CREATE OR REPLACE FORCE VIEW "E_RIGHTS"."V_MV_JOBS_EEAS" ("JCX_ID", "JOB_ID", "SP2_DATE_CREAT", "SP2_DATE_MODIF", "SP2_USER_CREAT", "SP2_USER_MODIF", "SP2_CREATION_DATE", "SP2_MODIFICATION_DATE", "INS_CD", "ORG_ID", "START_DATE", "END_DATE", "JCX_ID_REMPLACE", "DECISION_COMM", "JOB_ID_ORIGINE", "RESPONSIBLE", "HEAD_OF_ENTITY", "COMMENTS", "CITY_CODE", "CITY_NAME", "COUNTRY_CODE", "COUNTRY_NAME", "LOCATION_CITY_CODE", "LOCATION_CITY_NAME", "LOCATION_COUNTRY_CODE", "LOCATION_COUNTRY_NAME", "TFN_ID", "JOB_TYPE", "JOB_STATUS", "CGR_CD", "EXCLU_GSYS", "EXCLU_GSYS_INTERNE", "EXCLU_GSYS_COMMENT", "ORG_OFFICIEL", "MOBILITE_OBLIGATOIRE", "TABL_EFFECTIFS_UNIQ", "CCE_ID_RESTYPE", "PERSONNEL_TYPE_ID", "PERSONNEL_TYPE_DESC", "BUDGETARY_LINE", "DATE_CREAT", "USER_CREAT", "DATE_MODIF", "USER_MODIF", "DG_RESP_ID", "DG_RESP_CODE", "TSJ_ID", "JOB_TITLE", "JOB_NAME", "JOB_NAME_DIRECTORY", "JOB_PURPOSE", "EDEL_FUNCTION_CODE", "EDEL_FUNCTION_DESC", "SENSITIVE") AS + select "JCX_ID","JOB_ID","SP2_DATE_CREAT","SP2_DATE_MODIF","SP2_USER_CREAT","SP2_USER_MODIF","SP2_CREATION_DATE","SP2_MODIFICATION_DATE","INS_CD","ORG_ID","START_DATE","END_DATE","JCX_ID_REMPLACE","DECISION_COMM","JOB_ID_ORIGINE","RESPONSIBLE","HEAD_OF_ENTITY","COMMENTS","CITY_CODE","CITY_NAME","COUNTRY_CODE","COUNTRY_NAME","LOCATION_CITY_CODE","LOCATION_CITY_NAME","LOCATION_COUNTRY_CODE","LOCATION_COUNTRY_NAME","TFN_ID","JOB_TYPE","JOB_STATUS","CGR_CD","EXCLU_GSYS","EXCLU_GSYS_INTERNE","EXCLU_GSYS_COMMENT","ORG_OFFICIEL","MOBILITE_OBLIGATOIRE","TABL_EFFECTIFS_UNIQ","CCE_ID_RESTYPE","PERSONNEL_TYPE_ID","PERSONNEL_TYPE_DESC","BUDGETARY_LINE","DATE_CREAT","USER_CREAT","DATE_MODIF","USER_MODIF","DG_RESP_ID","DG_RESP_CODE","TSJ_ID","JOB_TITLE","JOB_NAME","JOB_NAME_DIRECTORY","JOB_PURPOSE","EDEL_FUNCTION_CODE","EDEL_FUNCTION_DESC","SENSITIVE" from mv_jobs_eeas +; diff --git a/e-rights-common/src/main/database/backups/dev/20210208/V_USER_PERMISSIONS.sql b/e-rights-common/src/main/database/backups/dev/20210208/V_USER_PERMISSIONS.sql new file mode 100644 index 0000000..8380ff4 --- /dev/null +++ b/e-rights-common/src/main/database/backups/dev/20210208/V_USER_PERMISSIONS.sql @@ -0,0 +1,19 @@ +-------------------------------------------------------- +-- File created - Monday-February-08-2021 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for View V_USER_PERMISSIONS +-------------------------------------------------------- + + CREATE OR REPLACE FORCE VIEW "E_RIGHTS"."V_USER_PERMISSIONS" ("PER_ID", "ORG_ID", "PERMISSION", "ACCESS_MODE") AS + SELECT +/* +DESCRIPTION : Security [Authorisation] User Permissions (dummy) +APPLICATION(s) : e-RIGHTS +VERSION : 1.0 +DATE : 20/11/2019 +*/ +1 AS PER_ID,1 AS ORG_ID,'/NOP' AS PERMISSION ,'D' AS ACCESS_MODE FROM DUAL + + +; diff --git a/e-rights-common/src/main/database/inital/V0.0.1/10_create_envers_v1.sql b/e-rights-common/src/main/database/inital/V0.0.1/10_create_envers_v1.sql new file mode 100644 index 0000000..e6cc756 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/10_create_envers_v1.sql @@ -0,0 +1,75 @@ + + /* script sent by Fernando Publio */ + /*This sequeunce is use by envers, for REVINFO.ID and maybe other pk */ + --create sequence hibernate_sequence start with 1 increment by 1; + -- sequence renamed + CREATE SEQUENCE "SEQ_ANK_REVINFO" + MINVALUE 1 + MAXVALUE 9999999999999999999999999999 + INCREMENT BY 1 + START WITH 1; + + /*This is the table we use to audit the changes of movement files, this is created from the entity, and envers insert all the info in the entity, + when we modify the main entity MOVEMENT_FILES we need to update the entity table MOVEMENT_FILES and the audit table , if you see AUD_MOVEMENT_FILES has just some extra files than MOVEMENT_FILES + another posible improvement to this table will be some indexes to help the quering as this table can be very big, but we need to see first how are we going to query this audit table + */ + create table AUD_MOVEMENT_FILES ( + "MOVEMENT_FILE_ID" NUMBER(19,0) NOT NULL ENABLE, + "REV" NUMBER(10,0) NOT NULL ENABLE, + "REVTYPE" NUMBER(3,0), + "AIPN_FILE_ID" VARCHAR2(255 CHAR), + "ASSIGN_END_DATE_FROM" DATE, + "ASSIGN_END_DATE_TO" DATE, + "ASSIGN_START_DATE_FROM" DATE, + "ASSIGN_START_DATE_TO" DATE, + "BUDGET_LINE" VARCHAR2(255 CHAR), + "CHILD_FREE_POSTING" CHAR(1 CHAR), + "ESTIMATED_END_DATE" DATE, + "FILE_ID" VARCHAR2(255 CHAR), + "JOB_FROM_START_DATE" DATE, + "JOB_ID_FROM" NUMBER(19,0), + "NON_FAMILY_POSTING" CHAR(1 CHAR), + "ORG_CD_FROM" VARCHAR2(255 CHAR), + "ORG_CD_TO" VARCHAR2(255 CHAR), + "ORG_ID_FROM" NUMBER(19,0), + "ORG_ID_TO" NUMBER(19,0), + "PRIORITY" CHAR(1 CHAR), + "SM_ID" RAW(16), + "START_DATE" DATE, + "STATE" VARCHAR2(255 CHAR), + "YEAR" NUMBER(10,0), + "PER_ID" NUMBER(19,0), + "JOB_ID_TO" NUMBER(19,0), + "CONTEXT_ID" NUMBER(19,0), + "MOVEMENT_TYPE_ID" NUMBER(19,0), + + AIPN_NOTIF_DATE DATE , + WITHOUT_RIGHTS CHAR , + REASON_EOC VARCHAR2(3000), + MOVEMENT_NR NUMBER(2,0), + AIPN_DOCUMENT_ID VARCHAR2(225), + AIPN_DOCUMENT_ID VARCHAR2(225) + -- primary key (id, REV) + ); + ALTER TABLE AUD_MOVEMENT_FILES add constraint PK_AMFI primary key (movement_file_id, REV) + USING INDEX; + + /* where we keep the revision or version , and the person who did the change*/ + CREATE TABLE ANK_REVINFO + ( "ID" NUMBER NOT NULL ENABLE, + "TIMESTAMP" NUMBER NOT NULL ENABLE, + "USER_ID" VARCHAR2(255 BYTE) NOT NULL ENABLE, + "USER_FULL_NAME" VARCHAR2(255 BYTE) NOT NULL ENABLE, + "DELEGATOR_PER_ID" NUMBER + -- primary key (id) + ); + ALTER TABLE ANK_REVINFO add constraint PK_ANK_REVINFO primary key (id) + using index; + + /* Contraint you can change the name if you like , this is automatically created by envers */ + alter table AUD_MOVEMENT_FILES + add constraint FK_AMFI_R_REVI --- FKa7vcob6syu343rs1d06b0fscj + foreign key (REV) + references ANK_REVINFO(ID); + + diff --git a/e-rights-common/src/main/database/inital/V0.0.1/11_0_create_DB_LOG_seq_tab.sql b/e-rights-common/src/main/database/inital/V0.0.1/11_0_create_DB_LOG_seq_tab.sql new file mode 100644 index 0000000..ef06181 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/11_0_create_DB_LOG_seq_tab.sql @@ -0,0 +1,17 @@ + CREATE SEQUENCE "ERIGHTS"."SEQ_DB_LOG" + MINVALUE 1 MAXVALUE 9999999999 + INCREMENT BY 1 START WITH 1 + NOCACHE NOORDER NOCYCLE ; + + CREATE TABLE "ERIGHTS"."DB_LOG" + ( "ID" NUMBER NOT NULL ENABLE, + "PRIORITY" CHAR(1 BYTE), + "PROGRAM" VARCHAR2(1000 BYTE), + "MESSAGE" VARCHAR2(4000 BYTE), + "MOMENTUM" DATE DEFAULT SYSDATE, + CONSTRAINT "PK_DB_LOG" PRIMARY KEY ("ID") USING INDEX , + CONSTRAINT "CKC_PRIORITY_DB_LOG" CHECK (PRIORITY is null or (PRIORITY in ('D','I','E','F','W'))) ENABLE + ) + TABLESPACE "ERIGHTS" ; + + COMMENT ON TABLE "ERIGHTS"."DB_LOG" IS 'database log table.'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/inital/V0.0.1/11_1_create_PKG_Log_spc.sql b/e-rights-common/src/main/database/inital/V0.0.1/11_1_create_PKG_Log_spc.sql new file mode 100644 index 0000000..f7f7458 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/11_1_create_PKG_Log_spc.sql @@ -0,0 +1,37 @@ +create or replace PACKAGE "PKG_LOG" IS + + -- Author : ILIESSU + -- Created : 10/5/2010 2:25:28 PM + -- Purpose : logging + -- todo : add oracle session log-priority attribute (I,D,E,F). + -- updated: 19/08/2020 ipatelav add shrink method to release the empty space + /** + * saves p_message debug message. + **/ + PROCEDURE DEBUG(P_MESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2); + + /** + * saves p_message error message. + **/ + PROCEDURE ERROR(P_ERRORMESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2); + + /** + * saves p_message WARNING message. + **/ + PROCEDURE WARNING(P_ERRORMESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2); + + /** + * deletes log messages older than given date. + * only deletes the debug messages. + * if null date is passed it deletes for 90 days. + **/ + PROCEDURE DELETE_OLD_DEBUG_LOGS(P_DATE DATE); + + --PROCEDURE DELETE_OLD_SYNC_LOG; + + /** + * Skirinks tables - release the space. + **/ + PROCEDURE SHRINK_TABLE(p_table_name VARCHAR2); + +END PKG_LOG; diff --git a/e-rights-common/src/main/database/inital/V0.0.1/11_2_create_PKG_LOG_body.sql b/e-rights-common/src/main/database/inital/V0.0.1/11_2_create_PKG_LOG_body.sql new file mode 100644 index 0000000..8f25619 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/11_2_create_PKG_LOG_body.sql @@ -0,0 +1,124 @@ + +create or replace PACKAGE BODY PKG_LOG IS + + L_DEBUGENABLED BOOLEAN := TRUE; + + /** + * saves p_message debug message. + **/ + PROCEDURE DEBUG(P_MESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2) AS + PRAGMA AUTONOMOUS_TRANSACTION; + BEGIN + IF (L_DEBUGENABLED) THEN + INSERT INTO DB_LOG + (ID, PRIORITY, PROGRAM, MESSAGE, MOMENTUM) + VALUES + (SEQ_DB_LOG.NEXTVAL, 'D', P_PROGRAMNAME, P_MESSAGE, SYSDATE); + COMMIT; + END IF; + END; + + /** + * saves p_message error message. + **/ + PROCEDURE ERROR(P_ERRORMESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2) AS + PRAGMA AUTONOMOUS_TRANSACTION; + BEGIN + IF (L_DEBUGENABLED) THEN + INSERT INTO DB_LOG + (ID, PRIORITY, PROGRAM, MESSAGE, MOMENTUM) + VALUES + (SEQ_DB_LOG.NEXTVAL, 'E', P_PROGRAMNAME, P_ERRORMESSAGE, SYSDATE); + COMMIT; + END IF; + END; + + /** + * saves p_message error message. + **/ + PROCEDURE WARNING(P_ERRORMESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2) AS + PRAGMA AUTONOMOUS_TRANSACTION; + BEGIN + IF (L_DEBUGENABLED) THEN + INSERT INTO DB_LOG + (ID, PRIORITY, PROGRAM, MESSAGE, MOMENTUM) + VALUES + (SEQ_DB_LOG.NEXTVAL, 'W', P_PROGRAMNAME, P_ERRORMESSAGE, SYSDATE); + COMMIT; + END IF; + END; + + PROCEDURE DELETE_OLD_DEBUG_LOGS(P_DATE DATE) AS + V_DATE DATE; + V_SYSDATE DATE; + N_DAYS PLS_INTEGER := 90; + BEGIN + SELECT TRUNC(SYSDATE) INTO V_SYSDATE FROM DUAL; + IF (P_DATE IS NULL) THEN + SELECT (TRUNC(SYSDATE) - N_DAYS) INTO V_DATE FROM DUAL; + ELSE + SELECT TRUNC(P_DATE) INTO V_DATE FROM DUAL; + END IF; + + DELETE FROM DB_LOG D WHERE TRUNC(D.MOMENTUM) <= V_DATE AND D.PRIORITY = 'D'; + + PKG_LOG.DEBUG(SQL%ROWCOUNT || + ' records were deleted from db_log. momentum less then ' || + V_DATE, + 'DELETE_LOGS'); + COMMIT; + + SHRINK_TABLE('DB_LOG'); + + END; +/* +procedure DELETE_OLD_SYNC_LOG as + begin + + for rec in (select max(creation_date) max_creation_date ,loc_obj_foreign_id,SYNC_STATUS + from SYNC_TRANSACTION_LOG + group by loc_obj_foreign_id,SYNC_STATUS) loop + + delete from SYNC_TRANSACTION_LOG + where creation_date < rec.max_creation_date + and loc_obj_foreign_id = rec.loc_obj_foreign_id + and SYNC_STATUS = rec.SYNC_STATUS; + + end loop; + + commit; + + end; + */ + /** + * release space after deleting rows table's rows + **/ + PROCEDURE SHRINK_TABLE(p_table_name VARCHAR2) + IS + l_start_time NUMBER; + l_end_time NUMBER; + BEGIN + PKG_LOG.DEBUG('start shrinking ' || p_table_name + , + 'PKG_LOG.SHRINK_TABLE'); + + l_start_time := DBMS_UTILITY.get_time; + + EXECUTE IMMEDIATE 'alter table ' || p_table_name || ' enable row movement' ; + EXECUTE IMMEDIATE 'alter table ' || p_table_name || ' shrink space cascade' ; + + l_end_time := DBMS_UTILITY.get_time; + + PKG_LOG.DEBUG( 'end shrinking ' || p_table_name || + ' Elapsed Time (hsecs): ' || (l_end_time - l_start_time) + , + 'PKG_LOG.SHRINK_TABLE'); + EXCEPTION + WHEN OTHERS THEN + PKG_LOG.ERROR('failed to shrink: ' ||p_table_name || ' ' || SQLERRM, + 'PKG_LOG.SHRINK_TABLE'); + + END; +BEGIN + L_DEBUGENABLED := TRUE; +END PKG_LOG; \ No newline at end of file diff --git a/e-rights-common/src/main/database/inital/V0.0.1/11_3_create_J_CLEANUP_DB_LOG_job.sql b/e-rights-common/src/main/database/inital/V0.0.1/11_3_create_J_CLEANUP_DB_LOG_job.sql new file mode 100644 index 0000000..e2cba1c --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/11_3_create_J_CLEANUP_DB_LOG_job.sql @@ -0,0 +1,22 @@ +/* get_ddl from acc_sentry +SELECT DBMS_METADATA.get_ddl ('PROCOBJ', job_name, owner) +FROM all_scheduler_jobs +WHERE owner = user +AND job_name = 'J_CLEANUP_DB_LOG'; +*/ + +BEGIN +dbms_scheduler.create_job('"J_CLEANUP_DB_LOG"', +job_type=>'PLSQL_BLOCK', job_action=> +'begin pkg_log.delete_old_debug_logs(trunc(sysdate) - 20); end;' +, number_of_arguments=>0, +start_date=>TO_TIMESTAMP_TZ('18-MAR-2014 11.40.53.760248000 AM +01:00','DD-MON-RRRR HH.MI.SSXFF AM TZR','NLS_DATE_LANGUAGE=english'), repeat_interval=> +'FREQ=DAILY; BYHOUR=0; BYMINUTE=0; BYSECOND=1;' +, end_date=>NULL, +job_class=>'"DEFAULT_JOB_CLASS"', enabled=>FALSE, auto_drop=>TRUE,comments=> +'Job that deletes debug logs older than 90 days from DB_LOG.' +); +dbms_scheduler.enable('"J_CLEANUP_DB_LOG"'); +COMMIT; +END; + diff --git a/e-rights-common/src/main/database/inital/V0.0.1/12_create_MV_refresh_tabs.sql b/e-rights-common/src/main/database/inital/V0.0.1/12_create_MV_refresh_tabs.sql new file mode 100644 index 0000000..76efbcc --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/12_create_MV_refresh_tabs.sql @@ -0,0 +1,22 @@ + +CREATE TABLE "ERIGHTS"."T_REFRESH_OBJECTS" + ( "ID" NUMBER(*,0) NOT NULL ENABLE, + "APP_OBJECT_NAME" VARCHAR2(256 BYTE), + "PRIORITY" NUMBER(*,0), + "IS_REFRESHED" CHAR(1 BYTE) DEFAULT 'N', + "STATUS" VARCHAR2(4000 BYTE), + "REFRESH_DATE" DATE DEFAULT SYSDATE, + "SYSTEM" VARCHAR2(10 BYTE) NOT NULL ENABLE + ) + TABLESPACE "ERIGHTS" ; + + + CREATE TABLE "ERIGHTS"."T_APP_EASREFN_OBJECTS" + ( "APP_OBJECT_NAME_ID" NUMBER(*,0) NOT NULL ENABLE, + "EASREFN_OBJECT_NAME" VARCHAR2(256 BYTE) NOT NULL ENABLE, + "PRIORITY" NUMBER(*,0) + ) + TABLESPACE "ERIGHTS" ; + + + diff --git a/e-rights-common/src/main/database/inital/V0.0.1/13_create_PR_REFRESH_OBJECTS_prc.sql b/e-rights-common/src/main/database/inital/V0.0.1/13_create_PR_REFRESH_OBJECTS_prc.sql new file mode 100644 index 0000000..b99606f --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/13_create_PR_REFRESH_OBJECTS_prc.sql @@ -0,0 +1,62 @@ +create or replace PROCEDURE PR_REFRESH_OBJECTS AS + v_sql_compile varchar2(500); + v_SQLERRM varchar2(4000); +BEGIN + -- DBMS_MVIEW.REFRESH('CAL_MONTH_SALES_MV', method => '?', + -- atomic_refresh => FALSE, out_of_place => TRUE); + + for cur in (select * from t_refresh_objects o where o.system = 'EASREFN' order by o.priority) loop + + for cur_easrefn in (select app.easrefn_object_name, + e.is_refreshed easrefn_is_refreshed, + e.refresh_date easrefn_refresh_date + from t_app_easrefn_objects app, + t_refresh_objects@EASREFN.CC.CEC.EU.INT e + where app.easrefn_object_name = e.object_name + and app.app_object_name_id = cur.id + order by app.priority) loop + + if (cur.is_refreshed = 'N' or + (cur_easrefn.easrefn_is_refreshed = 'Y' and + cur.refresh_date < cur_easrefn.easrefn_refresh_date)) then + + begin + + v_sql_compile := 'ALTER MATERIALIZED VIEW ' || + cur.app_object_name || ' COMPILE'; + execute immediate v_sql_compile; + dbms_mview.refresh(cur.app_object_name, 'C'); + + update t_refresh_objects l + set l.is_refreshed = 'Y', + l.refresh_date = sysdate, + l.status = 'OK' + where l.app_object_name = cur.app_object_name; + + pkg_log.debug(cur.app_object_name || + ' has been refreshed succesfully.', + 'pr_refresh_objects'); + + exception + when others then + v_sqlerrm := sqlerrm; + update t_refresh_objects l + set l.is_refreshed = 'n', + l.refresh_date = sysdate, + l.status = v_sqlerrm + where l.app_object_name = cur.app_object_name; + pkg_log.ERROR(cur.app_object_name || + ' has encountered error during refresh ' || + v_sqlerrm, + 'pr_refresh_objects'); + + end; + commit; + goto next_app_view; + end if; + end loop; + + <> + null; + end loop; +END PR_REFRESH_OBJECTS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/inital/V0.0.1/14_create_SEQ_REFRESH_OBJECTS_seq.sql b/e-rights-common/src/main/database/inital/V0.0.1/14_create_SEQ_REFRESH_OBJECTS_seq.sql new file mode 100644 index 0000000..98c66d7 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/14_create_SEQ_REFRESH_OBJECTS_seq.sql @@ -0,0 +1,7 @@ +/* no need */ +/* + CREATE SEQUENCE "ERIGHTS"."SEQ_REFRESH_OBJECTS" + MINVALUE 1 MAXVALUE 999999 INCREMENT BY 1 + START WITH 17 NOCACHE NOORDER + NOCYCLE ; +*/ diff --git a/e-rights-common/src/main/database/inital/V0.0.1/15_insert_MV_Refresh_tabs.sql b/e-rights-common/src/main/database/inital/V0.0.1/15_insert_MV_Refresh_tabs.sql new file mode 100644 index 0000000..f7dcc46 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/15_insert_MV_Refresh_tabs.sql @@ -0,0 +1,39 @@ +insert into T_REFRESH_OBJECTS +select rownum,object_name, rownum, 'N','INIT',sysdate, 'EASREFN' +FROM( +select obj.object_name, priority +from user_objects obj inner join +t_refresh_objects@EASREFN.CC.CEC.EU.INT easrefn_mvs +on obj.object_name =easrefn_mvs.object_name +where object_type = 'MATERIALIZED VIEW' +order by easrefn_mvs.priority); + +insert into t_app_easrefn_objects +select s.id +,easrefn_obj_name +, row_number() OVER( + PARTITION BY id + ORDER BY priority asc + ) row_num +FROM + ( select distinct owner as schema_name, + refreshObj.ID, + name as mv_view_name, + referenced_name as EASREFN_obj_name, + e.priority +from sys.all_dependencies dependencies +inner join t_refresh_objects@EASREFN.CC.CEC.EU.INT e + on dependencies.referenced_name = e.object_name +inner join T_REFRESH_OBJECTS refreshObj +on refreshobj.app_object_name = dependencies.name +where type = 'MATERIALIZED VIEW' +and owner = user +order by id ) s ; + +commit; + + + + + + diff --git a/e-rights-common/src/main/database/inital/V0.0.1/16_create_REFRESH_MVS_job.sql b/e-rights-common/src/main/database/inital/V0.0.1/16_create_REFRESH_MVS_job.sql new file mode 100644 index 0000000..a1a6907 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/16_create_REFRESH_MVS_job.sql @@ -0,0 +1,13 @@ +begin + sys.dbms_scheduler.create_job(job_name => 'REFRESH_APP_MV', + job_type => 'PLSQL_BLOCK', + job_action => 'begin pr_refresh_objects; end;', + start_date => sysdate, + repeat_interval => 'Freq=MINUTELY;Interval=15', + end_date => to_date(null), + job_class => 'DEFAULT_JOB_CLASS', + enabled => true, + auto_drop => true, + comments => 'Job that refresh the all materialized views from T_REFRESH_OBJECTS table.'); +end; +/ diff --git a/e-rights-common/src/main/database/inital/V0.0.1/2_create_ANK_db_objects.sql b/e-rights-common/src/main/database/inital/V0.0.1/2_create_ANK_db_objects.sql new file mode 100644 index 0000000..39361ad --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/2_create_ANK_db_objects.sql @@ -0,0 +1,286 @@ +-------------------------------------------------------- +-- File created - Monday-September-28-2020 +-- +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for Sequence SEQ_ANK_SM_PREVIOUS_STATES +-------------------------------------------------------- + + CREATE SEQUENCE "ERIGHTS"."SEQ_ANK_SM_PREVIOUS_STATES" MINVALUE 1 MAXVALUE 99999999999 INCREMENT BY 1 START WITH 188 NOCACHE NOORDER NOCYCLE ; +-------------------------------------------------------- +-- DDL for Table ANANKE_FILES +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANANKE_FILES" + ( "ID" RAW(16), + "NAME" VARCHAR2(200 BYTE), + "CONTENT_TYPE" VARCHAR2(100 BYTE), + "DATA_SIZE" NUMBER, + "DATA" BLOB, + "CREATED_AT" DATE DEFAULT sysdate + ) + ; +-------------------------------------------------------- +-- DDL for Table ANK_SM_CURRENT_STATES +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" + ( "ID" RAW(16), + "MACHINE_ID" VARCHAR2(64 BYTE), + "STATE" VARCHAR2(64 BYTE), + "EVENT" VARCHAR2(64 BYTE), + "STATE_MACHINE_CONTEXT" BLOB, + "SAVED_BY" NUMBER, + "SAVED_AT" DATE DEFAULT sysdate + ) ; +-------------------------------------------------------- +-- DDL for Table ANK_SM_PREVIOUS_STATES +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" + ( "ID" NUMBER, + "CURRENT_STATE_ID" RAW(16), + "STATE" VARCHAR2(64 BYTE), + "EVENT" VARCHAR2(64 BYTE), + "SAVED_BY" NUMBER, + "SAVED_AT" DATE + ) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table ANK_USER_MGMT_PREFERENCES +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_USER_MGMT_PREFERENCES" + ( "PER_ID" NUMBER, + "LANGUAGE_ISO" VARCHAR2(3 BYTE), + "REGION_ISO" VARCHAR2(3 BYTE), + "ZONE_ID" VARCHAR2(50 BYTE), + "CREATED_BY" NUMBER, + "CREATED_AT" TIMESTAMP (6), + "UPDATED_BY" NUMBER, + "UPDATED_AT" TIMESTAMP (6) + ) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for View ANK_V_USER_IDENTITIES +-------------------------------------------------------- + + CREATE OR REPLACE FORCE VIEW "ERIGHTS"."ANK_V_USER_IDENTITIES" ("PER_ID", "ORG_ID", "USERID") AS + SELECT PER_ID, ORG_ID, USERID FROM ANK_MV_PERSONS_EEAS +; +-------------------------------------------------------- +-- DDL for View ANK_V_USER_PERMISSIONS +-------------------------------------------------------- + + CREATE OR REPLACE FORCE VIEW "ERIGHTS"."ANK_V_USER_PERMISSIONS" ("PER_ID", "ORG_ID", "PERMISSION", "ACCESS_MODE") AS + select + MV.PER_ID as PER_ID, + NVL(MV.ORG_ID, -1) as ORG_ID, + MV.FEATURE as PERMISSION, + MV.ACCESS_MODE as ACCESS_MODE +from ANK_MV_USER_SYS_ORG_PERMS MV +; +-------------------------------------------------------- +-- DDL for Materialized View ANK_MV_ENTITIES +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."ANK_MV_ENTITIES" ("ORG_ID", "ORG_ID_PARENT", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "SORT_ORDER", "ORG_DESC", "ORG_DESC_FRE", "CITY_CODE", "ENG_CITY", "FRA_CITY", "COUNTRY_ID", "ENG_COUNTRY", "FRA_COUNTRY", "IS_DELEGATION", "TOR_ID", "TYPEOFENTITY_NAME", "DELEGATION_NAME", "DEL_ID", "ALERT_STATUS_ID", "ALERT_STATUS_CODE", "SEVERITY_LEVEL", "REGION_ID", "REGION_CODE", "FRA_REGION_DESC", "ENG_REGION_DESC", "IS_HQ") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS SELECT "ORG_ID", "ORG_ID_PARENT", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "SORT_ORDER", "ORG_DESC", "ORG_DESC_FRE", "CITY_CODE", "ENG_CITY", "FRA_CITY", "COUNTRY_ID", "ENG_COUNTRY", "FRA_COUNTRY", "IS_DELEGATION", "TOR_ID", "TYPEOFENTITY_NAME", "DELEGATION_NAME", "DEL_ID", "ALERT_STATUS_ID", "ALERT_STATUS_CODE", "SEVERITY_LEVEL", "REGION_ID", "REGION_CODE", "FRA_REGION_DESC", "ENG_REGION_DESC", "IS_HQ" +FROM MV_ENTITIES@EASREFN.CC.CEC.EU.INT; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."ANK_MV_ENTITIES" IS 'snapshot table for snapshot E_RIGHTS.ANK_MV_ENTITIES'; +-------------------------------------------------------- +-- DDL for Materialized View ANK_MV_PERSON_PHONES +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."ANK_MV_PERSON_PHONES" ("PER_ID", "START_DATE", "END_DATE", "TLP_SEQ", "TLP_TYPE", "TLP_TYPE_CODE", "CTX_CD", "TADR_CD", "COUNTRY_PREFIX", "REGION_PREFIX", "PHONE_NUMBER", "EXTENSION", "FULL_PHONE", "BUILDING", "INS_CD", "CREATION_DATE", "MODIFICATION_DATE", "SRC_ID", "SOURCE", "AUTH_USAGE_ALLOWED_FLAG") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS SELECT "PER_ID", "START_DATE", "END_DATE", "TLP_SEQ", "TLP_TYPE", "TLP_TYPE_CODE", "CTX_CD", "TADR_CD", "COUNTRY_PREFIX", "REGION_PREFIX", "PHONE_NUMBER", "EXTENSION", "FULL_PHONE", "BUILDING", "INS_CD", "CREATION_DATE", "MODIFICATION_DATE", "SRC_ID", "SOURCE", "AUTH_USAGE_ALLOWED_FLAG" +FROM MV_PERSON_PHONES@EASREFN.CC.CEC.EU.INT; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."ANK_MV_PERSON_PHONES" IS 'snapshot table for snapshot E_RIGHTS.ANK_MV_PERSON_PHONES'; +-------------------------------------------------------- +-- DDL for Materialized View ANK_MV_PERSONS_EEAS +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."ANK_MV_PERSONS_EEAS" ("PER_ID", "NO_SYSPER", "TITLE", "SURNAME", "BIRTH_NAME", "FIRST_NAME", "FIRST_NAME2", "FIRST_NAME3", "FIRST_NAME4", "GENRE", "DATE_OF_BIRTH", "PLACE_OF_BIRTH", "COUNTRY_OF_BIRTH", "CREATION_DATE", "MODIFICATION_DATE", "USERID", "MONIKER", "DOMAIN", "DISPLAY_NAME", "COMPLET_NAME", "DISPLAY_SURNAME", "DISPLAY_FIRST_NAME", "JCX_ID", "JOB_ID", "TOJ_CD", "JOB_TYPE", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "INS_CD", "EMAIL", "WORK_PATTERN_DATE_FROM", "WORK_PATTERN_DATE_TO", "WORK_PATTERN_DESC", "LST_CD", "LST_CODE", "LST_BEG_DATE", "LST_ASS_DATE", "LST_END_DATE", "CGR_CD", "ORG_ID", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "ORG_DESC", "TOR_ID", "TYPEOFENTITY_NAME", "DEL_ID", "DELEGATION_NAME", "JOB_TITLE", "JOB_NAME", "JOB_NAME_DIRECTORY", "JOB_PURPOSE", "RESPONSIBLE", "HEAD_OF_ENTITY") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS SELECT + PER_ID, + NO_SYSPER, + TITLE, + SURNAME, + BIRTH_NAME, + FIRST_NAME, + FIRST_NAME2, + FIRST_NAME3, + FIRST_NAME4, + GENRE, + DATE_OF_BIRTH, + PLACE_OF_BIRTH, + COUNTRY_OF_BIRTH, + CREATION_DATE, + MODIFICATION_DATE, + USERID, + MONIKER, + DOMAIN, + DISPLAY_NAME, + COMPLET_NAME, + DISPLAY_SURNAME, + DISPLAY_FIRST_NAME, + JCX_ID, + JOB_ID, + TOJ_CD, + JOB_TYPE, + ASSIGN_START_DATE, + ASSIGN_END_DATE, + INS_CD, + EMAIL, + WORK_PATTERN_DATE_FROM, + WORK_PATTERN_DATE_TO, + WORK_PATTERN_DESC, + LST_CD, + LST_CODE, + LST_BEG_DATE, + LST_ASS_DATE, + LST_END_DATE, + CGR_CD, + ORG_ID, + MAIN_ORG_ID, + ORG_NAME, + ORG_CD, + ORG_DESC, + TOR_ID, + TYPEOFENTITY_NAME, + DEL_ID, + DELEGATION_NAME, + JOB_TITLE, + JOB_NAME, + JOB_NAME_DIRECTORY, + JOB_PURPOSE, + RESPONSIBLE, + HEAD_OF_ENTITY + FROM + mv_persons_eeas@easrefn.cc.cec.eu.int; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."ANK_MV_PERSONS_EEAS" IS 'snapshot table for snapshot E_RIGHTS.ANK_MV_PERSONS_EEAS'; +-------------------------------------------------------- +-- DDL for Materialized View ANK_MV_USER_SYS_ORG_PERMS +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."ANK_MV_USER_SYS_ORG_PERMS" ("PER_ID", "SYSTEM_ID", "FEATURE_ID", "FEATURE", "ORG_ID", "ACCESS_MODE", "SOURCE") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS SELECT + P.PER_ID, + P.SYSTEM_ID, + P.FEATURE_ID, + P.FEATURE, + P.ORG_ID, + P.ACCESS_MODE, + P.SOURCE + FROM MV_SENTRY_USER_ORG_SYS_PERMS@EASREFN.CC.CEC.EU.INT P, MV_SENTRY_SYSTEMS@EASREFN.CC.CEC.EU.INT S +WHERE S.DISPLAY = 'E_RIGHTS' + AND S.INFORMATION_SYSTEM_ID = P.SYSTEM_ID; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."ANK_MV_USER_SYS_ORG_PERMS" IS 'snapshot table for snapshot E_RIGHTS.ANK_MV_USER_SYS_ORG_PERMS'; +-------------------------------------------------------- +-- DDL for Index PK_FILES +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_FILES" ON "ERIGHTS"."ANANKE_FILES" ("ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_SM_CURRENT_STATES +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_SM_CURRENT_STATES" ON "ERIGHTS"."ANK_SM_CURRENT_STATES" ("ID") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_SM_PREVIOUS_STATES +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_SM_PREVIOUS_STATES" ON "ERIGHTS"."ANK_SM_PREVIOUS_STATES" ("ID") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_ANK_USER_MGMT_PREFERENCES +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_ANK_USER_MGMT_PREFERENCES" ON "ERIGHTS"."ANK_USER_MGMT_PREFERENCES" ("PER_ID") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- Constraints for Table ANANKE_FILES +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANANKE_FILES" ADD CONSTRAINT "PK_FILES" PRIMARY KEY ("ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ENABLE; + ALTER TABLE "ERIGHTS"."ANANKE_FILES" MODIFY ("CREATED_AT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANANKE_FILES" MODIFY ("DATA" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANANKE_FILES" MODIFY ("DATA_SIZE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANANKE_FILES" MODIFY ("CONTENT_TYPE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANANKE_FILES" MODIFY ("NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANANKE_FILES" MODIFY ("ID" NOT NULL ENABLE); +-------------------------------------------------------- +-- Constraints for Table ANK_SM_CURRENT_STATES +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" ADD CONSTRAINT "PK_SM_CURRENT_STATES" PRIMARY KEY ("ID") + USING INDEX + TABLESPACE "ERIGHTS" ENABLE; + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" MODIFY ("SAVED_AT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" MODIFY ("SAVED_BY" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" MODIFY ("STATE_MACHINE_CONTEXT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" MODIFY ("EVENT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" MODIFY ("STATE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" MODIFY ("MACHINE_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" MODIFY ("ID" NOT NULL ENABLE); +-------------------------------------------------------- +-- Constraints for Table ANK_SM_PREVIOUS_STATES +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" ADD CONSTRAINT "PK_SM_PREVIOUS_STATES" PRIMARY KEY ("ID") + USING INDEX + TABLESPACE "ERIGHTS" ENABLE; + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" MODIFY ("SAVED_AT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" MODIFY ("SAVED_BY" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" MODIFY ("EVENT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" MODIFY ("STATE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" MODIFY ("CURRENT_STATE_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" MODIFY ("ID" NOT NULL ENABLE); +-------------------------------------------------------- +-- Constraints for Table ANK_USER_MGMT_PREFERENCES +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_USER_MGMT_PREFERENCES" ADD CONSTRAINT "PK_ANK_USER_MGMT_PREFERENCES" PRIMARY KEY ("PER_ID") + USING INDEX + TABLESPACE "ERIGHTS" ENABLE; + ALTER TABLE "ERIGHTS"."ANK_USER_MGMT_PREFERENCES" MODIFY ("ZONE_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_USER_MGMT_PREFERENCES" MODIFY ("REGION_ISO" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_USER_MGMT_PREFERENCES" MODIFY ("LANGUAGE_ISO" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_USER_MGMT_PREFERENCES" MODIFY ("PER_ID" NOT NULL ENABLE); +-------------------------------------------------------- +-- Ref Constraints for Table ANK_SM_PREVIOUS_STATES +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" ADD CONSTRAINT "FK_SM_PREVIOUS_CURRENT" FOREIGN KEY ("CURRENT_STATE_ID") + REFERENCES "ERIGHTS"."ANK_SM_CURRENT_STATES" ("ID") ENABLE; + + +begin +DBMS_UTILITY.COMPILE_SCHEMA (user); +end; +/ diff --git a/e-rights-common/src/main/database/inital/V0.0.1/3_create_EASREFN_mvs.sql b/e-rights-common/src/main/database/inital/V0.0.1/3_create_EASREFN_mvs.sql new file mode 100644 index 0000000..8e4672e --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/3_create_EASREFN_mvs.sql @@ -0,0 +1,172 @@ +--------------------------------------------------- + -- v1 ipatelav 30-10-2020 +-------------------------------------------------------- +-- DDL for Materialized View MV_ASSIGNMENTS_COM +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_ASSIGNMENTS_COM" ("SOJ_ID", "JOB_ID", "PER_ID", "TOJ_CD", "JOB_TYPE", "START_DATE", "END_DATE", "TYPE_OF_POST", "INS_CD", "CREATION_DATE", "MODIFICATION_DATE") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select * FROM MV_ASSIGNMENTS_COM@EASREFN.CC.CEC.EU.INT +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_ASSIGNMENTS_COM" IS 'snapshot table for snapshot ERIGHTS.MV_ASSIGNMENTS_COM'; +-------------------------------------------------------- +-- DDL for Materialized View MV_ASSIGNMENTS_HIST_EEAS +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_ASSIGNMENTS_HIST_EEAS" ("SOJ_ID", "JCX_ID", "JOB_ID", "PER_ID", "TOJ_CD", "JOB_TYPE", "START_DATE", "END_DATE", "INS_CD", "CREATION_DATE", "MODIFICATION_DATE", "TYPE_OF_POST") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + AS select * from mv_assignments_hist_eeas@EASREFN.CC.CEC.EU.INT +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_ASSIGNMENTS_HIST_EEAS" IS 'snapshot table for snapshot ERIGHTS.MV_ASSIGNMENTS_HIST_EEAS'; +-------------------------------------------------------- +-- DDL for Materialized View MV_COUNTRIES +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_COUNTRIES" ("COUNTRY_CODE", "CD_ISO_A2", "CD_ISO_N3", "NAME_EN", "LONG_NAME_EN", "NAME_FR", "LONG_NAME_FR", "EU_STATE", "CAPITAL", "COUNTRY_PHONE_CODE", "CONTINENT_CODE", "STATUS", "CURRENCY_CODE", "CURRENCY_NAME") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select * from MV_COUNTRIES@EASREFN.CC.CEC.EU.INT +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_COUNTRIES" IS 'snapshot table for snapshot ERIGHTS.MV_COUNTRIES'; +-------------------------------------------------------- +-- DDL for Materialized View MV_ENTITIES +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES" ("ORG_ID", "ORG_ID_PARENT", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "SORT_ORDER", "ORG_DESC", "ORG_DESC_FRE", "CITY_CODE", "ENG_CITY", "FRA_CITY", "COUNTRY_ID", "ENG_COUNTRY", "FRA_COUNTRY", "IS_DELEGATION", "TOR_ID", "TYPEOFENTITY_NAME", "DELEGATION_NAME", "DEL_ID", "ALERT_STATUS_ID", "ALERT_STATUS_CODE", "SEVERITY_LEVEL", "REGION_ID", "REGION_CODE", "FRA_REGION_DESC", "ENG_REGION_DESC", "IS_HQ") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select * FROM MV_ENTITIES@EASREFN.CC.CEC.EU.INT +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES" IS 'snapshot table for snapshot ERIGHTS.MV_ENTITIES'; +-------------------------------------------------------- +-- DDL for Materialized View MV_ENTITIES_HIST +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES_HIST" ("HORG_ID", "ORG_ID", "ORG_ID_PARENT", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "ORG_DESC", "FR_ORG_DESC", "CITY_CODE", "ENG_CITY", "FRA_CITY", "COUNTRY_ID", "ENG_COUNTRY", "FRA_COUNTRY", "IS_DELEGATION", "TOR_ID", "TYPEOFENTITY_NAME", "DELEGATION_NAME", "DEL_ID", "ALERT_STATUS_ID", "ALERT_STATUS_CODE", "SEVERITY_LEVEL", "START_DATE", "END_DATE", "SHORT_CODE", "SORT_ORDER", "HIERARCHY_LEVEL", "OFFICIAL") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + AS select ent.* from mv_entities_hist@EASREFN.CC.CEC.EU.INT ent; + + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES_HIST" IS 'snapshot table for snapshot ERIGHTS.MV_ENTITIES_HIST'; +-------------------------------------------------------- +-- DDL for Materialized View MV_ENTITIES_TYPES +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES_TYPES" ("ORG_ID", "ID", "CODE", "IS_ACTIVE", "PRIORITY", "CREATION_USER", "CREATION_DATE", "MODIFICATION_USER", "MODIFICATION_DATE", "EN_NAME", "FR_NAME") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + AS select * from MV_ENTITIES_TYPES@EASREFN.CC.CEC.EU.INT +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES_TYPES" IS 'snapshot table for snapshot ERIGHTS.MV_ENTITIES_TYPES'; +-------------------------------------------------------- +-- DDL for Materialized View MV_JOBS_HIST_EEAS +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_JOBS_HIST_EEAS" ("JCX_ID", "JOB_ID", "SP2_DATE_CREAT", "SP2_DATE_MODIF", "SP2_USER_CREAT", "SP2_USER_MODIF", "SP2_CREATION_DATE", "SP2_MODIFICATION_DATE", "INS_CD", "ORG_ID", "START_DATE", "END_DATE", "JCX_ID_REMPLACE", "DECISION_COMM", "JOB_ID_ORIGINE", "RESPONSIBLE", "HEAD_OF_ENTITY", "COMMENTS", "CITY_CODE", "CITY_NAME", "COUNTRY_CODE", "COUNTRY_NAME", "LOCATION_CITY_CODE", "LOCATION_CITY_NAME", "LOCATION_COUNTRY_CODE", "LOCATION_COUNTRY_NAME", "TFN_ID", "JOB_TYPE", "JOB_STATUS", "CGR_CD", "EXCLU_GSYS", "EXCLU_GSYS_INTERNE", "EXCLU_GSYS_COMMENT", "ORG_OFFICIEL", "MOBILITE_OBLIGATOIRE", "TABL_EFFECTIFS_UNIQ", "CCE_ID_RESTYPE", "PERSONNEL_TYPE_ID", "PERSONNEL_TYPE_DESC", "BUDGETARY_LINE", "DATE_CREAT", "USER_CREAT", "DATE_MODIF", "USER_MODIF", "DG_RESP_ID", "DG_RESP_CODE") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + AS select * from mv_jobs_hist_eeas@EASREFN.CC.CEC.EU.INT +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_JOBS_HIST_EEAS" IS 'snapshot table for snapshot ERIGHTS.MV_JOBS_HIST_EEAS'; +-------------------------------------------------------- +-- DDL for Materialized View MV_PERSONS_COM +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_PERSONS_COM" ("PER_ID", "NO_SYSPER", "TITLE", "SURNAME", "BIRTH_NAME", "FIRST_NAME", "FIRST_NAME2", "FIRST_NAME3", "FIRST_NAME4", "GENRE", "DATE_OF_BIRTH", "PLACE_OF_BIRTH", "COUNTRY_OF_BIRTH", "CREATION_DATE", "MODIFICATION_DATE", "USERID", "MONIKER", "DOMAINE", "DISPLAY_NAME", "COMPLET_NAME", "JOB_ID", "TOJ_CD", "JOB_TYPE", "JOB_START_DATE", "JOB_END_DATE", "INS_CD", "EMAIL", "LST_CD", "LST_CODE", "LST_BEG_DATE", "LST_ASS_DATE", "LST_END_DATE", "CGR_CD", "ORG_ID", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "TOR_ID", "TYPEOFENTITY_NAME", "DELEGATION_NAME", "DEL_ID", "JOB_TITLE", "JOB_NAME", "JOB_NAME_DIRECTORY", "JOB_PURPOSE", "RESPONSIBLE", "HEAD_OF_ENTITY") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select * FROM MV_PERSONS_COM@EASREFN.CC.CEC.EU.INT +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_PERSONS_COM" IS 'snapshot table for snapshot ERIGHTS.MV_PERSONS_COM'; +-------------------------------------------------------- +-- DDL for Materialized View MV_PERSONS_EEAS +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_PERSONS_EEAS" ("PER_ID", "NO_SYSPER", "TITLE", "SURNAME", "BIRTH_NAME", "FIRST_NAME", "FIRST_NAME2", "FIRST_NAME3", "FIRST_NAME4", "GENRE", "DATE_OF_BIRTH", "PLACE_OF_BIRTH", "COUNTRY_OF_BIRTH", "CREATION_DATE", "MODIFICATION_DATE", "USERID", "MONIKER", "DOMAIN", "DISPLAY_NAME", "COMPLET_NAME", "DISPLAY_SURNAME", "DISPLAY_FIRST_NAME", "JCX_ID", "JOB_ID", "TOJ_CD", "JOB_TYPE", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "INS_CD", "EMAIL", "WORK_PATTERN_DATE_FROM", "WORK_PATTERN_DATE_TO", "WORK_PATTERN_DESC", "LST_CD", "LST_CODE", "LST_BEG_DATE", "LST_ASS_DATE", "LST_END_DATE", "CGR_CD", "ORG_ID", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "ORG_DESC", "TOR_ID", "TYPEOFENTITY_NAME", "DEL_ID", "DELEGATION_NAME", "JOB_TITLE", "JOB_NAME", "JOB_NAME_DIRECTORY", "JOB_PURPOSE", "RESPONSIBLE", "HEAD_OF_ENTITY") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select * FROM MV_PERSONS_EEAS@EASREFN.CC.CEC.EU.INT; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_PERSONS_EEAS" IS 'snapshot table for snapshot ERIGHTS.MV_PERSONS_EEAS'; +-------------------------------------------------------- +-- DDL for Materialized View MV_RECRUITMENT_PLACES +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_RECRUITMENT_PLACES" ("PER_ID", "RECR_INS_CD", "DT_RECR", "LIEU_RECR", "RECR_CODE_POSTAL", "RECR_PAY_CD", "INS_CD", "DT_CRE", "DT_MAJ") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select * from MV_RECRUITMENT_PLACES@EASREFN.CC.CEC.EU.INT where lieu_recr not like '%UNKNOWN%' +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_RECRUITMENT_PLACES" IS 'snapshot table for snapshot ERIGHTS.MV_RECRUITMENT_PLACES'; + +CREATE MATERIALIZED VIEW "MV_EMAILS" ("PER_ID", "START_DATE", "END_DATE", "CTX_CD", "EMAIL", "TADR_CD", "ADDRESS_TYPE", "ADDRESS_EMAIL_LINK", "INS_CD", "CREATION_DATE", "MODIFICATION_DATE") + AS select * from +( +select * from MV_EMAILS_COM@EASREFN.CC.CEC.EU.INT where tadr_cd = 11 +UNION +select * from MV_EMAILS_EEAS@EASREFN.CC.CEC.EU.INT where tadr_cd = 11 +) +; + + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_CITIES" + ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS_DATA" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE + AS select * from MV_CITIES@EASREFN.CC.CEC.EU.INT +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_CITIES" IS 'snapshot table for snapshot E_RIGHTS.MV_CITIES'; + +-- correction in v_staffmembers + CREATE MATERIALIZED VIEW "ERIGHTS".mv_entities_hist_com + ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS DISABLE ON QUERY COMPUTATION DISABLE QUERY REWRITE + AS select ent.* from mv_entities_hist_com@EASREFN.CC.CEC.EU.INT ent +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS".mv_entities_hist_com IS 'snapshot table for snapshot ERIGHTS.mv_entities_hist_com'; + diff --git a/e-rights-common/src/main/database/inital/V0.0.1/4_create_EASREFN_vws.sql b/e-rights-common/src/main/database/inital/V0.0.1/4_create_EASREFN_vws.sql new file mode 100644 index 0000000..a933d49 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/4_create_EASREFN_vws.sql @@ -0,0 +1,260 @@ +-------------------------------------------------------- +-- DDL for View V_STAFFMEMBERS +-- File created - Monday-September-28-2020 +-- ipatelav +-------------------------------------------------------- +/* + + CREATE OR REPLACE FORCE VIEW "ERIGHTS"."V_STAFFMEMBERS" ("PER_ID", "FIRST_NAME", "LAST_NAME", "GENDER" + , "EMAIL", "BIRTH_CITY", "BIRTH_COUNTRY" + , "RECRUITMENT_CITY", "RECRUITMENT_COUNTRY" + , "ORGANIZATION_NAME", "ORGANIZATION_CITY" + , "ORGANIZATION_COUNTRY", "ORGANIZATION_IN_EU" + , "INT_ORG_CODE", "INTERNATIONAL_ORGANIZATION", "ORG_ID", "JOB_ID", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "ORG_CD") AS + with recentRecruitmentDay as ( select per_id, max(dt_recr) max_dt_recr from mv_recruitment_places group by per_id) +select p.per_id as PER_ID +, p.first_name as FIRST_NAME +, p.surname as LAST_NAME +, p.genre as GENDER +, p.email as EMAIL +, p.place_of_birth as BIRTH_CITY +, p.country_of_birth || ' - ' || c1.name_en as BIRTH_COUNTRY +, r.lieu_recr as RECRUITMENT_CITY +, r.recr_pay_cd || ' - ' || c2.name_en as RECRUITMENT_COUNTRY +, p.org_cd as ORGANIZATION_NAME +, e.eng_city as ORGANIZATION_CITY +, e.eng_country as ORGANIZATION_COUNTRY +, c.eu_state as ORGANIZATION_IN_EU +, t.code as INT_ORG_CODE +, case +when t.id is null then 'N' +else 'Y' +end as INTERNATIONAL_ORGANIZATION +, p.org_id as ORG_ID +, p.job_id as JOB_ID +, p.assign_start_date as ASSIGN_START_DATE +, case + when (EXTRACT(year FROM p.assign_end_date)in (9999, 2099)) + then to_date(null) + else p.assign_end_date + end as ASSIGN_END_DATE +, p.org_cd as ORG_CD + from mv_persons_eeas P + inner join mv_recruitment_places R on p.per_id = r.per_id + INNER JOIN recentRecruitmentDay D on R.per_id = d.per_id and R.dt_recr = D.max_dt_recr + inner join mv_entities E on p.org_id = e.org_id + inner join mv_countries C on e.country_id = c.country_code + inner join mv_countries C1 on p.country_of_birth = c1.country_code + inner join mv_countries C2 on r.recr_pay_cd = c2.country_code + left join mv_entities_types T on p.org_id = T.Org_Id + and T.Is_Active = 'Y' + UNION + +select p.per_id as PER_ID, p.first_name as FIRST_NAME, p.surname as LAST_NAME , p.genre as GENDER, p.email as EMAIL , p.place_of_birth as BIRTH_CITY, p.country_of_birth || ' - ' || c1.name_en as BIRTH_COUNTRY, + r.lieu_recr as RECRUITMENT_CITY + , r.recr_pay_cd || ' - ' || c2.name_en as RECRUITMENT_COUNTRY + , p.org_cd as ORGANIZATION_NAME + , e.eng_city as ORGANIZATION_CITY + , e.eng_country as ORGANIZATION_COUNTRY + , c.eu_state as ORGANIZATION_IN_EU + , t.code as INT_ORG_CODE +, case +when t.id is null then 'N' +else 'Y' +end as INTERNATIONAL_ORGANIZATION + , p.org_id as ORG_ID + , p.job_id as JOB_ID + , assign.start_date as ASSIGN_START_DATE + ,case + when (EXTRACT(year FROM assign.end_date)IN (2099,9999)) + then to_date(null) + else assign.end_date + end as ASSIGN_END_DATE -- , assign.end_date as ASSIGN_END_DATE + , p.org_cd as ORG_CD + from mv_persons_com P + inner join mv_recruitment_places R on p.per_id = r.per_id + INNER JOIN recentRecruitmentDay D on R.per_id = d.per_id and R.dt_recr = D.max_dt_recr + inner join mv_entities E on p.org_id = e.org_id + inner join mv_countries C on e.country_id = c.country_code + inner join mv_countries C1 on p.country_of_birth = c1.country_code + inner join mv_countries C2 on r.recr_pay_cd = c2.country_code + left join mv_entities_types + T on p.org_id = T.Org_Id and T.Is_Active = 'Y' + inner join mv_assignments_com assign on assign.per_id = p.per_id + and assign.toj_cd = 'AFF'; + + +; +*/ + + + + CREATE OR REPLACE FORCE VIEW "E_RIGHTS"."V_STAFFMEMBERS" ("PER_ID", "FIRST_NAME", "LAST_NAME", "GENDER", "EMAIL", "BIRTH_CITY", "BIRTH_COUNTRY", "RECRUITMENT_CITY", "RECRUITMENT_COUNTRY", "ORGANIZATION_NAME", "ORGANIZATION_CITY", "ORGANIZATION_COUNTRY", "ORGANIZATION_IN_EU", "INT_ORG_CODE", "INTERNATIONAL_ORGANIZATION", "ORG_ID", "JOB_ID", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "ORG_CD", "PRIVATE_EMAIL") AS + with recentRecruitmentDay as ( select per_id, max(dt_recr) max_dt_recr from mv_recruitment_places group by per_id) +select p.per_id as PER_ID +, p.first_name as FIRST_NAME +, p.surname as LAST_NAME +, p.genre as GENDER +, p.email as EMAIL +, p.place_of_birth as BIRTH_CITY +, p.country_of_birth || ' - ' || c1.name_en as BIRTH_COUNTRY +, r.lieu_recr as RECRUITMENT_CITY +, r.recr_pay_cd || ' - ' || c2.name_en as RECRUITMENT_COUNTRY +, p.org_cd as ORGANIZATION_NAME +, e.eng_city as ORGANIZATION_CITY +, e.eng_country as ORGANIZATION_COUNTRY +, c.eu_state as ORGANIZATION_IN_EU +, t.code as INT_ORG_CODE +, case +when t.id is null then 'N' +else 'Y' +end as INTERNATIONAL_ORGANIZATION +, p.org_id as ORG_ID +, p.job_id as JOB_ID +, p.assign_start_date as ASSIGN_START_DATE +, case + when (EXTRACT(year FROM p.assign_end_date)in (9999, 2099)) + then to_date(null) + else p.assign_end_date + end as ASSIGN_END_DATE +, p.org_cd as ORG_CD +, em.email as private_email + from mv_persons_eeas P + inner join mv_recruitment_places R on p.per_id = r.per_id + INNER JOIN recentRecruitmentDay D on R.per_id = d.per_id and R.dt_recr = D.max_dt_recr + inner join mv_entities E on p.org_id = e.org_id + inner join mv_countries C on e.country_id = c.country_code + inner join mv_countries C1 on p.country_of_birth = c1.country_code + inner join mv_countries C2 on r.recr_pay_cd = c2.country_code + left join mv_entities_types T on p.org_id = T.Org_Id + and T.Is_Active = 'Y' + left join mv_emails em on em.per_id = p.per_id + UNION + +select p.per_id as PER_ID, p.first_name as FIRST_NAME, p.surname as LAST_NAME , p.genre as GENDER, p.email as EMAIL , p.place_of_birth as BIRTH_CITY, p.country_of_birth || ' - ' || c1.name_en as BIRTH_COUNTRY, + r.lieu_recr as RECRUITMENT_CITY + , r.recr_pay_cd || ' - ' || c2.name_en as RECRUITMENT_COUNTRY + , p.org_cd as ORGANIZATION_NAME + , e.eng_city as ORGANIZATION_CITY + , e.eng_country as ORGANIZATION_COUNTRY + , c.eu_state as ORGANIZATION_IN_EU + , t.code as INT_ORG_CODE +, case +when t.id is null then 'N' +else 'Y' +end as INTERNATIONAL_ORGANIZATION + , p.org_id as ORG_ID + , p.job_id as JOB_ID + , assign.start_date as ASSIGN_START_DATE + ,case + when (EXTRACT(year FROM assign.end_date)IN (2099,9999)) + then to_date(null) + else assign.end_date + end as ASSIGN_END_DATE -- , assign.end_date as ASSIGN_END_DATE + , p.org_cd as ORG_CD + , em.email as private_email + from mv_persons_com P + inner join mv_recruitment_places R on p.per_id = r.per_id + INNER JOIN recentRecruitmentDay D on R.per_id = d.per_id and R.dt_recr = D.max_dt_recr + inner join mv_entities E on p.org_id = e.org_id + inner join mv_countries C on e.country_id = c.country_code + inner join mv_countries C1 on p.country_of_birth = c1.country_code + inner join mv_countries C2 on r.recr_pay_cd = c2.country_code + left join mv_entities_types + T on p.org_id = T.Org_Id and T.Is_Active = 'Y' + inner join mv_assignments_com assign + on assign.per_id = p.per_id + and assign.toj_cd = 'AFF' + left join mv_emails em on em.per_id = p.per_id; + + + +-------------------------------------------------------- +-- DDL for View V_JOBS +-------------------------------------------------------- + + + CREATE OR REPLACE FORCE VIEW "V_JOBS" ("JOB_ID", "JOB_MOMENT", "JOB_TYPE", "PERSONNEL_TYPE_DESC", "BUDGETARY_LINE", "JOB_CITY_CODE", "JOB_CITY_NAME", "JOB_COUNTRY_CODE", "JOB_COUNTRY_NAME", "ORGANIZATION_COUNTRY", "ORGANIZATION_CITY", "ORGANIZATION_NAME", "ORGANIZATION_IN_EU", "INT_ORG_CODE", "INTERNATIONAL_ORGANIZATION", "ORG_ID", "ASSIGN_START_DATE_TO", "ASSIGN_END_DATE_TO", "PER_ID", "SEVERITY_LEVEL", "EVACUATION_LEVEL_CODE_ID", "ALERT_STATUS_ID", "EVACUATION_LEVEL_CODE", "ORGANIZATION_COUNTRY_CODE", "ORGANIZATION_CITY_CODE") AS + select +jobh.job_id +, +CASE + WHEN trunc(jobh.start_date)> trunc(sysdate) THEN 'FUTURE_JOB' + ELSE 'PRESENT_JOB' +END AS JOB_MOMENT +,jobh.job_type +,jobh.personnel_type_desc +,jobh.budgetary_line +, jobh.location_city_code as job_city_code +, jobh.location_city_name as job_city_name +, jobh.location_country_code as job_country_code +, jobh.location_country_name as job_country_name +,enth.eng_country as ORGANIZATION_COUNTRY +,enth.eng_city as ORGANIZATION_CITY +,enth.org_cd as ORGANIZATION_NAME +,ctr.eu_state as ORGANIZATION_IN_EU +,ent_typ.code as INT_ORG_code +,case +when ent_typ.id is null then 'N' +else 'Y' +end as INTERNATIONAL_ORGANIZATION +,enth.org_id +, asgh.start_date as assign_start_date_to +--, nullif(EXTRACT(year FROM asgh.end_date),2099) as assign_end_date_to +, case + when EXTRACT(year FROM asgh.end_date)in (2099, 9999) + then to_date(null) + else asgh.end_date + end as assign_end_date_to +, asgh.per_id +, delstat.severity_level +, delstat.evacuation_level_code_id +, delstat.alert_status_id +, delstat.evacuation_level_code +, enth.country_id as ORGANIZATION_COUNTRY_CODE +, enth.city_code as ORGANIZATION_CITY_CODE +from + /*( select + job_id + ,job_type + ,personnel_type_desc + ,budgetary_line as budget_line + , rank() over(partition by JOB_ID order by nvl(end_date, sysdate + 1) desc, jcx_id desc) recent_job + from mv_jobs_hist_eeas + where recent_job= 1 + ) jobh + */ + MV_JOBS_hist_EEAS jobh + inner join mv_entities_hist enth on jobh.org_id = enth.org_id + inner join mv_countries ctr on enth.country_id = ctr.country_code + left join ( select * from + (select per_id, job_id, start_date, end_date, + row_number() over(partition by job_id + order by start_date DESC) RW + from mv_assignments_hist_eeas + where trunc(sysdate)< trunc(end_date) + and per_id is not null ) where RW=1 + ) asgh + on asgh.job_id = jobh.job_id + --left join mv_assignments_hist_eeas asgh on asgh.job_id = jobh.job_id + left join MV_delegation_status delstat + on delstat.org_id = enth.org_id + left join mv_entities_types ent_typ on enth.org_id = ent_typ.Org_Id +where job_status= 'Active' +and trunc(enth.end_date) >trunc(sysdate); + +; + +--- create views for level of evacuation +create view V_COUNTRIES +as +select * from MV_COUNTRIES; + +create view v_cities +as +select * from MV_CITIES; + +--- + + + diff --git a/e-rights-common/src/main/database/inital/V0.0.1/5_create_eRIGHTS_seqs.sql b/e-rights-common/src/main/database/inital/V0.0.1/5_create_eRIGHTS_seqs.sql new file mode 100644 index 0000000..e3a6723 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/5_create_eRIGHTS_seqs.sql @@ -0,0 +1,47 @@ + +-- File created - Monday-September-28-2020 +-- ipatelav + +-------------------------------------------------------- +-- DDL for Sequence SEQ_MF_AIPN_ATTACHMENTS +-------------------------------------------------------- +-- drop SEQUENCE "ERIGHTS"."SEQ_MF_AIPN_ATTACHMENTS" ; + CREATE SEQUENCE "ERIGHTS"."SEQ_MF_AIPN_ATTACHMENTS" + MINVALUE 1 MAXVALUE 99999999999999 + INCREMENT BY 1 + START WITH 1 + CACHE 50 + NOORDER + NOCYCLE ; +-------------------------------------------------------- +-- DDL for Sequence SEQ_MOVEMENT_CONTEXT +-------------------------------------------------------- + + CREATE SEQUENCE "ERIGHTS"."SEQ_MOVEMENT_CONTEXT" + MINVALUE 1 + MAXVALUE 99999999999999 + INCREMENT BY 1 + START WITH 1 + NOCACHE + NOORDER NOCYCLE ; +-------------------------------------------------------- +-- DDL for Sequence SEQ_MOVEMENT_FILES +-------------------------------------------------------- + + CREATE SEQUENCE "ERIGHTS"."SEQ_MOVEMENT_FILES" + MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 + START WITH 1 + NOCACHE + NOORDER + NOCYCLE ; +-------------------------------------------------------- +-- DDL for Sequence SEQ_MOVEMENT_TYPES +-------------------------------------------------------- + + CREATE SEQUENCE "ERIGHTS"."SEQ_MOVEMENT_TYPES" + MINVALUE 1 MAXVALUE 999999 + INCREMENT BY 1 + START WITH 1 + NOCACHE + NOORDER + NOCYCLE ; diff --git a/e-rights-common/src/main/database/inital/V0.0.1/6_create_eRIGHTS_tabs.sql b/e-rights-common/src/main/database/inital/V0.0.1/6_create_eRIGHTS_tabs.sql new file mode 100644 index 0000000..925eaac --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/6_create_eRIGHTS_tabs.sql @@ -0,0 +1,178 @@ +-------------------------------------------------------- +-- DDL for Table MOVEMENT_FILES +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."MOVEMENT_FILES" + ( "MOVEMENT_FILE_ID" NUMBER, + "FILE_ID" VARCHAR2(50 BYTE), + "PER_ID" NUMBER, + "CONTEXT_ID" NUMBER, + "PRIORITY" CHAR(1 BYTE), + "YEAR" NUMBER, + "MOVEMENT_TYPE_ID" NUMBER, + "JOB_ID_TO" NUMBER, + "NON_FAMILY_POSTING" CHAR(1 BYTE), + "CHILD_FREE_POSTING" CHAR(1 BYTE), + "START_DATE" DATE, + "ESTIMATED_END_DATE" DATE, + "STATE" VARCHAR2(16 BYTE), + "BUDGET_LINE" VARCHAR2(256 BYTE), + "EOD_DATE" DATE, + "ORG_ID_FROM" NUMBER, + "ORG_ID_TO" NUMBER, + "JOB_ID_FROM" NUMBER, + "ASSIGN_START_DATE_FROM" DATE, + "ASSIGN_END_DATE_FROM" DATE, + "ASSIGN_START_DATE_TO" DATE, + "ASSIGN_END_DATE_TO" DATE, + "JOB_FROM_START_DATE" DATE, + "ORG_CD_FROM" VARCHAR2(50 BYTE), + "ORG_CD_TO" VARCHAR2(50 BYTE), + "SM_ID" RAW(16), + "AIPN_FILE_ID" VARCHAR2(255 BYTE), + AIPN_NOTIF_DATE DATE , + WITHOUT_RIGHTS CHAR (1), + REASON_EOC VARCHAR2(3000) , + MOVEMENT_NR NUMBER(2,0), + AIPN_DOCUMENT_ID VARCHAR2(225) ,F + "CREATED_AT" DATE, + "CREATED_BY" NUMBER, + "UPDATED_BY" NUMBER, + "UPDATED_AT" DATE + ) + TABLESPACE "ERIGHTS" ; + + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."MOVEMENT_FILE_ID" IS 'Movement File unique indentifier'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."FILE_ID" IS 'Unique code for the movement file - concatenated string defined by the system in the following format: +MovementContext + "-" +MovementYear + "-"+ MovementFileNo'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."PER_ID" IS 'Person ID, unique identifier of the Staff Member (or any member of his/her family composition).'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."CONTEXT_ID" IS 'Reference to the Movement Context'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."PRIORITY" IS 'Priority represents the flag of importance for prioritizing the administration of the rights for the Movement File.'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."YEAR" IS 'Movement year represents the calendar year (YYYY) for the selected Movement Context. +The value is inserted by the User.'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."MOVEMENT_TYPE_ID" IS ' --- TBD--'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."JOB_ID_TO" IS 'Reference to the future job'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."NON_FAMILY_POSTING" IS 'Is a flag indicating whether the job allows the job holder to consider taking his/her family members (FALSE) or not (TRUE).'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."CHILD_FREE_POSTING" IS 'Is a flag indicating whether the job allows the job holder to consider taking his/her children (FALSE) or not (TRUE).'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."START_DATE" IS 'Start Date of the future assignament'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."ESTIMATED_END_DATE" IS 'Estimated end date of the future assignement'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."STATE" IS 'Movement File Current status is an overall status (State Machine) that represents if the Movement File is active or not.'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."BUDGET_LINE" IS ' +Budget line: is retrieved from EASREFN (source: HR Delegation) for the provided Job No + is (optionally and sometimes) inserted manually by the User for Movement context = SECONDMENT +'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."EOD_DATE" IS 'End of contract date '; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."ORG_ID_FROM" IS 'The Organisational Entity of the user current aasignement +'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."ORG_ID_TO" IS 'The Organisational Entity of the user future aasignement'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."JOB_ID_FROM" IS 'Current job of the person '; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."JOB_FROM_START_DATE" IS '? maybe'; + COMMENT ON COLUMN MOVEMENT_FILES.AIPN_NOTIF_DATE IS 'AIPN Notification date'; + + + COMMENT ON COLUMN MOVEMENT_FILES.WITHOUT_RIGHTS IS 'Without rights for EOC'; + + COMMENT ON COLUMN MOVEMENT_FILES.REASON_EOC IS 'Reasons for EOC'; + COMMENT ON COLUMN MOVEMENT_FILES. MOVEMENT_NR IS ' Number of the movement per year and context type'; +-------------------------------------------------------- +-- DDL for Table MOVEMENT_TYPES +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."MOVEMENT_TYPES" + ( "MOVEMENT_TYPE_ID" NUMBER, + "CODE_FROM" VARCHAR2(16 BYTE), + "CODE_TO" VARCHAR2(16 BYTE), + "MOVEMENT_TYPE" VARCHAR2(33 BYTE), + "CONTEXT_ID" NUMBER + ) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table MOVEMENT_CONTEXT +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."MOVEMENT_CONTEXT" + ( "MOVEMENT_CONTEXT_ID" NUMBER, + "NAME" VARCHAR2(128 BYTE), + "CREATED_AT" DATE, + "CREATED_BY" NUMBER, + "UPDATED_BY" NUMBER, + "UPDATED_AT" DATE + ) + TABLESPACE "ERIGHTS" ; + + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_CONTEXT"."MOVEMENT_CONTEXT_ID" IS 'Unique Identifier of the Movement Context - value generated by seq'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_CONTEXT"."NAME" IS ' ROTATION provides support to Rotation Exercises (Rotation to EU Delegations); SECONDMENT - provides support to Secondment of the EEAS/EU Commission staff to other Offices/Delegations; EOC - t provides support to Termination of the service (End-of-Contract) due to a specific reason ( e.g. Retirement, Resignation) '; + COMMENT ON TABLE "ERIGHTS"."MOVEMENT_CONTEXT" IS 'MOVEMENT TYPE CONTEXT '; +-------------------------------------------------------- +-- DDL for Index PK_MOVEMENT_FILES +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_MOFI" ON "ERIGHTS"."MOVEMENT_FILES" ("MOVEMENT_FILE_ID") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index UK_MOVEMENT_FILES_ID +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."UK_MOFI_FILE_ID" ON "ERIGHTS"."MOVEMENT_FILES" ("FILE_ID") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_MOVEMENT_CONTEXT +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_MOCO" ON "ERIGHTS"."MOVEMENT_CONTEXT" ("MOVEMENT_CONTEXT_ID") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- Constraints for Table MOVEMENT_FILES +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."MOVEMENT_FILES" ADD CONSTRAINT "UK_MOFI" UNIQUE ("FILE_ID") + USING INDEX + TABLESPACE "ERIGHTS" ENABLE; + + ALTER TABLE "ERIGHTS"."MOVEMENT_FILES" ADD CONSTRAINT "PK_MOFI" PRIMARY KEY ("MOVEMENT_FILE_ID") + USING INDEX + TABLESPACE "ERIGHTS" ENABLE; + + ALTER TABLE "ERIGHTS"."MOVEMENT_FILES" MODIFY ("MOVEMENT_TYPE_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."MOVEMENT_FILES" MODIFY ("CONTEXT_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."MOVEMENT_FILES" MODIFY ("MOVEMENT_FILE_ID" NOT NULL ENABLE); +-------------------------------------------------------- +-- Constraints for Table MOVEMENT_TYPES +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."MOVEMENT_TYPES" MODIFY ("CONTEXT_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."MOVEMENT_TYPES" MODIFY ("MOVEMENT_TYPE_ID" NOT NULL ENABLE); +-------------------------------------------------------- +-- Constraints for Table MOVEMENT_CONTEXT +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."MOVEMENT_CONTEXT" ADD CONSTRAINT "PK_MOCO" PRIMARY KEY ("MOVEMENT_CONTEXT_ID") + USING INDEX + TABLESPACE "ERIGHTS" ENABLE; + ALTER TABLE "ERIGHTS"."MOVEMENT_CONTEXT" MODIFY ("MOVEMENT_CONTEXT_ID" NOT NULL ENABLE); +-------------------------------------------------------- +-- Ref Constraints for Table MOVEMENT_FILES +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."MOVEMENT_FILES" ADD CONSTRAINT "FK_MOFI_R_MOCO" FOREIGN KEY ("CONTEXT_ID") + REFERENCES "ERIGHTS"."MOVEMENT_CONTEXT" ("MOVEMENT_CONTEXT_ID") ENABLE; + -- ALTER TABLE "ERIGHTS"."MOVEMENT_FILES" ADD CONSTRAINT "FK_MOFI_R_MTBR" FOREIGN KEY --("MOVEMENT_TYPE_ID") + -- REFERENCES "ERIGHTS"."MOVEMENT_TYPES_BRS" ("ID") ENABLE; + -- + CREATE TABLE USER_PREFERENCES + ( + PER_ID NUMBER(8,0) NOT NULL ENABLE, + LOCALE VARCHAR2(5 BYTE), + PAGE_PATH VARCHAR2(250 BYTE), + PREFERENCES CLOB, + CREATED_AT DATE NOT NULL ENABLE, + CREATED_BY NUMBER NOT NULL ENABLE, + UPDATED_BY NUMBER, + UPDATED_AT DATE + ); + + alter table USER_PREFERENCES + add CONSTRAINT PK_USER_PREFERENCES PRIMARY KEY (PER_ID); + + + --- create the diff --git a/e-rights-common/src/main/database/inital/V0.0.1/7_create_eRIGHTS_vws.sql b/e-rights-common/src/main/database/inital/V0.0.1/7_create_eRIGHTS_vws.sql new file mode 100644 index 0000000..b83d735 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/7_create_eRIGHTS_vws.sql @@ -0,0 +1,63 @@ +/* +create or replace view v_movement_types + as + select + brs.id + ,mvmf.id as id_from + ,mvmf.code as code_from + ,mvmt.id as id_to + ,mvmt.code as code_to + ,mvmf.code || '-' || mvmt.code as movement_type + FROM MOVEMENT_TYPES mvmf + inner join MOVEMENT_TYPES_BRS brs + on brs.movement_from_id = mvmf.id + inner join MOVEMENT_TYPES mvmt + on brs.movement_to_id = mvmt.id; + +*/ + + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_REPORT_MOVEMENT_FILES" ("MOVEMENT_FILE_ID", "FIRST_NAME", "LAST_NAME", "STATUS", "STARTDATEFUTURE", "ENDDATEFUTURE", "MOVEMENTFROM", "MOVEMENTTO", "BUDGDET_LINE_FUTURE", "MOVEMENTTYPE", "MOVEMENTYEAR", "MOVEMENTCONTEXT", "PERID", "FUTUREASSIGNMENT", "FILEID", "PRIORITY", "ALLOCATEDTOCURRENT", "ALLOCATEDTOFUTURE", "REASON") AS + SELECT + f.movement_file_id + , p.first_name as FIRST_NAME + , p.surname as LAST_NAME + , f.state as status + , coalesce(f.start_date,assign_start_date_to) as startDateFuture -- future assignment +-- ,coalesce(f.estimated_end_date,assign_end_date_to )as endDateFuture + , case + when EXTRACT(year FROM ( coalesce(f.estimated_end_date,assign_end_date_to ))) in (2099,9999) + -- when (EXTRACT(year FROM p.assign_end_date)in (9999, 2099)) + then to_date(null) + else coalesce(f.estimated_end_date,assign_end_date_to ) + end as endDateFuture + -- , FR.eng_country ||',' || FR.eng_city as movementFrom + -- , MT.eng_country ||',' || MT.eng_city as movementTo + , initcap(FR.eng_city) ||', ' || FR.eng_country as movementFrom + , initcap(MT.eng_city) ||', ' || MT.eng_country as movementTo + , budget_line as budgdet_line_future + , mvtp.movement_type as MovementType + ,F.Year as movementYear + ,C.Name as movementContext + ,F.per_id as perID + ,f.job_id_to as futureAssignment + ,F.file_id as fileId + ,f.priority + ,f.org_cd_from as allocatedToCurrent + ,f.org_cd_to as allocatedToFuture + ,'1' as reason +FROM movement_files F +inner join movement_context C on F.Context_Id = C.movement_context_id +inner join ( select per_id, first_name, surname + from mv_persons_eeas + union select per_id, first_name, surname + from mv_persons_com) p + on p.per_id = f.per_id + --inner join mv_entities +--inner join job_holder H on F.Per_Id = H.Per_Id +inner join movement_types mvtp on mvtp.movement_type_id = f.movement_type_id +left join mv_entities FR on FR.org_id = F.org_id_from +left join mv_entities MT on MT.org_id = F.org_id_to +left join mv_countries C on MT.country_id = c.country_code +left join mv_entities_types T on MT.org_id = T.Org_Id; + diff --git a/e-rights-common/src/main/database/inital/V0.0.1/8_insert_eRIGHTS_reference_data.sql b/e-rights-common/src/main/database/inital/V0.0.1/8_insert_eRIGHTS_reference_data.sql new file mode 100644 index 0000000..d420165 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/8_insert_eRIGHTS_reference_data.sql @@ -0,0 +1,48 @@ +-- insert into MOVEMENT_CONTEXT -- +Insert into ERIGHTS.MOVEMENT_CONTEXT (MOVEMENT_CONTEXT_ID,NAME,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) +values (SEQ_MOVEMENT_CONTEXT.nextval,'ROTATION',sysdate,90284714,null,null); +Insert into ERIGHTS.MOVEMENT_CONTEXT (MOVEMENT_CONTEXT_ID,NAME,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) +values (SEQ_MOVEMENT_CONTEXT.nextval,'SECONDMENT',sysdate,90284714,null,null); +Insert into ERIGHTS.MOVEMENT_CONTEXT (MOVEMENT_CONTEXT_ID,NAME,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) +values (SEQ_MOVEMENT_CONTEXT.nextval,'EOC',sysdate,90284714,null,null); + +-- insert into MOVEMENT_TYPES +/* +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'HQ','DEL','HQ-DEL',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'HQ','DEL EU','HQ-DEL EU',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'HQ','PoOrg','HQ-PoOrg',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL','HQ','DEL-HQ',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL','DEL','DEL-DEL',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL','DEL EU','DEL-DEL EU',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL','PoOrg','DEL-PoOrg',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL EU','HQ','DEL EU-HQ',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL EU','DEL','DEL EU-DEL',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL EU','DEL EU','DEL EU-DEL EU',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL EU','PoOrg','DEL EU-PoOrg',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'PoR','HQ','PoR-HQ',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'PoR','DEL','PoR-DEL',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'PoR','DEL EU','PoR-DEL EU',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'HQ','Other','HQ-Other',2); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL','Other','DEL-Other',2); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL EU','PoOrg','DEL EU-PoOrg',3); +*/ + +--truncate table movement_types; +--select * from MOVEMENT_TYPES; +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'HQ','DEL','HQ-DEL',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'HQ','DEL EU','HQ-DEL EU',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL','HQ','DEL-HQ',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL','DEL','DEL-DEL',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL','DEL EU','DEL-DEL EU',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL EU','HQ','DEL EU-HQ',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL EU','DEL','DEL EU-DEL',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL EU','DEL EU','DEL EU-DEL EU',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'PoR','HQ','PoR-HQ',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'PoR','DEL','PoR-DEL',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'PoR','DEL EU','PoR-DEL EU',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'HQ','Other','HQ-Other',2); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL','Other','DEL-Other',2); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL EU','PoOrg','DEL EU-PoOrg',3); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'HQ','PoOrg','HQ-PoOrg',3); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL','PoOrg','DEL-PoOrg',3); +commit; diff --git a/e-rights-common/src/main/database/inital/V0.0.1/9_create_qrtz_objects.sql b/e-rights-common/src/main/database/inital/V0.0.1/9_create_qrtz_objects.sql new file mode 100644 index 0000000..9128974 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V0.0.1/9_create_qrtz_objects.sql @@ -0,0 +1,194 @@ +-- script received from Iulia + +-- A hint submitted by a user: Oracle DB MUST be created as "shared" and the +-- job_queue_processes parameter must be greater than 2 +-- However, these settings are pretty much standard after any +-- Oracle install, so most users need not worry about this. +-- +-- Many other users (including the primary author of Quartz) have had success +-- runing in dedicated mode, so only consider the above as a hint ;-) +-- + +delete from qrtz_fired_triggers; +delete from qrtz_simple_triggers; +delete from qrtz_simprop_triggers; +delete from qrtz_cron_triggers; +delete from qrtz_blob_triggers; +delete from qrtz_triggers; +delete from qrtz_job_details; +delete from qrtz_calendars; +delete from qrtz_paused_trigger_grps; +delete from qrtz_locks; +delete from qrtz_scheduler_state; + +drop table qrtz_calendars; +drop table qrtz_fired_triggers; +drop table qrtz_blob_triggers; +drop table qrtz_cron_triggers; +drop table qrtz_simple_triggers; +drop table qrtz_simprop_triggers; +drop table qrtz_triggers; +drop table qrtz_job_details; +drop table qrtz_paused_trigger_grps; +drop table qrtz_locks; +drop table qrtz_scheduler_state; + + +CREATE TABLE qrtz_job_details + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + JOB_NAME VARCHAR2(200) NOT NULL, + JOB_GROUP VARCHAR2(200) NOT NULL, + DESCRIPTION VARCHAR2(250) NULL, + JOB_CLASS_NAME VARCHAR2(250) NOT NULL, + IS_DURABLE VARCHAR2(1) NOT NULL, + IS_NONCONCURRENT VARCHAR2(1) NOT NULL, + IS_UPDATE_DATA VARCHAR2(1) NOT NULL, + REQUESTS_RECOVERY VARCHAR2(1) NOT NULL, + JOB_DATA BLOB NULL, + CONSTRAINT QRTZ_JOB_DETAILS_PK PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +); +CREATE TABLE qrtz_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + JOB_NAME VARCHAR2(200) NOT NULL, + JOB_GROUP VARCHAR2(200) NOT NULL, + DESCRIPTION VARCHAR2(250) NULL, + NEXT_FIRE_TIME NUMBER(13) NULL, + PREV_FIRE_TIME NUMBER(13) NULL, + PRIORITY NUMBER(13) NULL, + TRIGGER_STATE VARCHAR2(16) NOT NULL, + TRIGGER_TYPE VARCHAR2(8) NOT NULL, + START_TIME NUMBER(13) NOT NULL, + END_TIME NUMBER(13) NULL, + CALENDAR_NAME VARCHAR2(200) NULL, + MISFIRE_INSTR NUMBER(2) NULL, + JOB_DATA BLOB NULL, + CONSTRAINT QRTZ_TRIGGERS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT QRTZ_TRIGGER_TO_JOBS_FK FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) + REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP) +); +CREATE TABLE qrtz_simple_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + REPEAT_COUNT NUMBER(7) NOT NULL, + REPEAT_INTERVAL NUMBER(12) NOT NULL, + TIMES_TRIGGERED NUMBER(10) NOT NULL, + CONSTRAINT QRTZ_SIMPLE_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT QRTZ_SIMPLE_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); +CREATE TABLE qrtz_cron_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + CRON_EXPRESSION VARCHAR2(120) NOT NULL, + TIME_ZONE_ID VARCHAR2(80), + CONSTRAINT QRTZ_CRON_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT QRTZ_CRON_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); +CREATE TABLE qrtz_simprop_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + STR_PROP_1 VARCHAR2(512) NULL, + STR_PROP_2 VARCHAR2(512) NULL, + STR_PROP_3 VARCHAR2(512) NULL, + INT_PROP_1 NUMBER(10) NULL, + INT_PROP_2 NUMBER(10) NULL, + LONG_PROP_1 NUMBER(13) NULL, + LONG_PROP_2 NUMBER(13) NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR2(1) NULL, + BOOL_PROP_2 VARCHAR2(1) NULL, + CONSTRAINT QRTZ_SIMPROP_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT QRTZ_SIMPROP_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); +CREATE TABLE qrtz_blob_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + BLOB_DATA BLOB NULL, + CONSTRAINT QRTZ_BLOB_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + CONSTRAINT QRTZ_BLOB_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); +CREATE TABLE qrtz_calendars + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + CALENDAR_NAME VARCHAR2(200) NOT NULL, + CALENDAR BLOB NOT NULL, + CONSTRAINT QRTZ_CALENDARS_PK PRIMARY KEY (SCHED_NAME,CALENDAR_NAME) +); +CREATE TABLE qrtz_paused_trigger_grps + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + CONSTRAINT QRTZ_PAUSED_TRIG_GRPS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP) +); +CREATE TABLE qrtz_fired_triggers + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + ENTRY_ID VARCHAR2(95) NOT NULL, + TRIGGER_NAME VARCHAR2(200) NOT NULL, + TRIGGER_GROUP VARCHAR2(200) NOT NULL, + INSTANCE_NAME VARCHAR2(200) NOT NULL, + FIRED_TIME NUMBER(13) NOT NULL, + SCHED_TIME NUMBER(13) NOT NULL, + PRIORITY NUMBER(13) NOT NULL, + STATE VARCHAR2(16) NOT NULL, + JOB_NAME VARCHAR2(200) NULL, + JOB_GROUP VARCHAR2(200) NULL, + IS_NONCONCURRENT VARCHAR2(1) NULL, + REQUESTS_RECOVERY VARCHAR2(1) NULL, + CONSTRAINT QRTZ_FIRED_TRIGGER_PK PRIMARY KEY (SCHED_NAME,ENTRY_ID) +); +CREATE TABLE qrtz_scheduler_state + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + INSTANCE_NAME VARCHAR2(200) NOT NULL, + LAST_CHECKIN_TIME NUMBER(13) NOT NULL, + CHECKIN_INTERVAL NUMBER(13) NOT NULL, + CONSTRAINT QRTZ_SCHEDULER_STATE_PK PRIMARY KEY (SCHED_NAME,INSTANCE_NAME) +); +CREATE TABLE qrtz_locks + ( + SCHED_NAME VARCHAR2(120) NOT NULL, + LOCK_NAME VARCHAR2(40) NOT NULL, + CONSTRAINT QRTZ_LOCKS_PK PRIMARY KEY (SCHED_NAME,LOCK_NAME) +); + +create index idx_qrtz_j_req_recovery on qrtz_job_details(SCHED_NAME,REQUESTS_RECOVERY); +create index idx_qrtz_j_grp on qrtz_job_details(SCHED_NAME,JOB_GROUP); + +create index idx_qrtz_t_j on qrtz_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP); +create index idx_qrtz_t_jg on qrtz_triggers(SCHED_NAME,JOB_GROUP); +create index idx_qrtz_t_c on qrtz_triggers(SCHED_NAME,CALENDAR_NAME); +create index idx_qrtz_t_g on qrtz_triggers(SCHED_NAME,TRIGGER_GROUP); +create index idx_qrtz_t_state on qrtz_triggers(SCHED_NAME,TRIGGER_STATE); +create index idx_qrtz_t_n_state on qrtz_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE); +create index idx_qrtz_t_n_g_state on qrtz_triggers(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE); +create index idx_qrtz_t_next_fire_time on qrtz_triggers(SCHED_NAME,NEXT_FIRE_TIME); +create index idx_qrtz_t_nft_st on qrtz_triggers(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME); +create index idx_qrtz_t_nft_misfire on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME); +create index idx_qrtz_t_nft_st_misfire on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE); +create index idx_qrtz_t_nft_st_misfire_grp on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE); + +create index idx_qrtz_ft_trig_inst_name on qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME); +create index idx_qrtz_ft_inst_job_req_rcvry on qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY); +create index idx_qrtz_ft_j_g on qrtz_fired_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP); +create index idx_qrtz_ft_jg on qrtz_fired_triggers(SCHED_NAME,JOB_GROUP); +create index idx_qrtz_ft_t_g on qrtz_fired_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP); +create index idx_qrtz_ft_tg on qrtz_fired_triggers(SCHED_NAME,TRIGGER_GROUP); + + diff --git a/e-rights-common/src/main/database/inital/V1.0.0/1_create_db_links_ACC.sql b/e-rights-common/src/main/database/inital/V1.0.0/1_create_db_links_ACC.sql new file mode 100644 index 0000000..7ca564c --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/1_create_db_links_ACC.sql @@ -0,0 +1,10 @@ +prompt create link EASREFN.CC.CEC.EU.INT + +-- drop database link "EASREFN.CC.CEC.EU.INT"; +-- Create database link + CREATE DATABASE LINK "EASREFN.CC.CEC.EU.INT" + CONNECT TO "EASREFN_RO" IDENTIFIED BY "y85a!w4j$123" + USING '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV11.CC.CEC.EU.INT)(PORT=1597)))(CONNECT_DATA=(SERVICE_NAME=EASREFN_EEAS_01_A_TAF.CC.CEC.EU.INT)))' + + +prompt link EASREF done diff --git a/e-rights-common/src/main/database/inital/V1.0.0/1_create_db_links_DEV.sql b/e-rights-common/src/main/database/inital/V1.0.0/1_create_db_links_DEV.sql new file mode 100644 index 0000000..600b71f --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/1_create_db_links_DEV.sql @@ -0,0 +1,10 @@ +prompt create link EASREFN.CC.CEC.EU.INT + +-- drop database link EASREF; +-- Create database link + CREATE DATABASE LINK "EASREFN.CC.CEC.EU.INT" + CONNECT TO "EASREFN_RO" IDENTIFIED BY "EASREFN_RO$123" + USING '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = BELBRU-ORAP401.EEAS.EUROPA.EU)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = BODBD)))'; + + +prompt link EASREF done diff --git a/e-rights-common/src/main/database/inital/V1.0.0/1_create_db_links_TEST.sql b/e-rights-common/src/main/database/inital/V1.0.0/1_create_db_links_TEST.sql new file mode 100644 index 0000000..ce207bb --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/1_create_db_links_TEST.sql @@ -0,0 +1,11 @@ +prompt create link EASREFN.CC.CEC.EU.INT + +-- drop database link EASREFN; +-- Create database link + CREATE DATABASE LINK "EASREFN.CC.CEC.EU.INT" + CONNECT TO "EASREFN_RO" IDENTIFIED BY "xr1n-f1j$123" + USING '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV10.CC.CEC.EU.INT)(PORT=1597)))(CONNECT_DATA=(SERVICE_NAME=EASREFN_EEAS_01_T_TAF.CC.CEC.EU.INT)))' + + + +prompt link EASREF done diff --git a/e-rights-common/src/main/database/inital/V1.0.0/2.user_objects.sql b/e-rights-common/src/main/database/inital/V1.0.0/2.user_objects.sql new file mode 100644 index 0000000..6a49f55 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/2.user_objects.sql @@ -0,0 +1,8 @@ + +ALTER TABLE movement_files +ADD year NUMBER NOT NULL; + + +ALTER TABLE movement_files MODIFY FILE_ID NULL; + + diff --git a/e-rights-common/src/main/database/inital/V1.0.0/ANK_materialized_views.sql b/e-rights-common/src/main/database/inital/V1.0.0/ANK_materialized_views.sql new file mode 100644 index 0000000..5f4189b --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/ANK_materialized_views.sql @@ -0,0 +1,120 @@ +-------------------------------------------------------- +-- DDL for Materialized View ANK_MV_ENTITIES +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."ANK_MV_ENTITIES" ("ORG_ID", "ORG_ID_PARENT", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "SORT_ORDER", "ORG_DESC", "ORG_DESC_FRE", "CITY_CODE", "ENG_CITY", "FRA_CITY", "COUNTRY_ID", "ENG_COUNTRY", "FRA_COUNTRY", "IS_DELEGATION", "TOR_ID", "TYPEOFENTITY_NAME", "DELEGATION_NAME", "DEL_ID", "ALERT_STATUS_ID", "ALERT_STATUS_CODE", "SEVERITY_LEVEL", "REGION_ID", "REGION_CODE", "FRA_REGION_DESC", "ENG_REGION_DESC", "IS_HQ") +TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS SELECT "ORG_ID", "ORG_ID_PARENT", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "SORT_ORDER", "ORG_DESC", "ORG_DESC_FRE", "CITY_CODE", "ENG_CITY", "FRA_CITY", "COUNTRY_ID", "ENG_COUNTRY", "FRA_COUNTRY", "IS_DELEGATION", "TOR_ID", "TYPEOFENTITY_NAME", "DELEGATION_NAME", "DEL_ID", "ALERT_STATUS_ID", "ALERT_STATUS_CODE", "SEVERITY_LEVEL", "REGION_ID", "REGION_CODE", "FRA_REGION_DESC", "ENG_REGION_DESC", "IS_HQ" +FROM MV_ENTITIES@EASREFN.CC.CEC.EU.INT +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."ANK_MV_ENTITIES" IS 'snapshot table for snapshot E_RIGHTS.ANK_MV_ENTITIES'; +-------------------------------------------------------- +-- DDL for Materialized View ANK_MV_PERSON_PHONES +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."ANK_MV_PERSON_PHONES" ("PER_ID", "START_DATE", "END_DATE", "TLP_SEQ", "TLP_TYPE", "TLP_TYPE_CODE", "CTX_CD", "TADR_CD", "COUNTRY_PREFIX", "REGION_PREFIX", "PHONE_NUMBER", "EXTENSION", "FULL_PHONE", "BUILDING", "INS_CD", "CREATION_DATE", "MODIFICATION_DATE", "SRC_ID", "SOURCE", "AUTH_USAGE_ALLOWED_FLAG") +TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND +AS SELECT "PER_ID", "START_DATE", "END_DATE", "TLP_SEQ", "TLP_TYPE", "TLP_TYPE_CODE", "CTX_CD", "TADR_CD", "COUNTRY_PREFIX", "REGION_PREFIX", "PHONE_NUMBER", "EXTENSION", "FULL_PHONE", "BUILDING", "INS_CD", "CREATION_DATE", "MODIFICATION_DATE", "SRC_ID", "SOURCE", "AUTH_USAGE_ALLOWED_FLAG" +FROM MV_PERSON_PHONES@EASREFN.CC.CEC.EU.INT +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."ANK_MV_PERSON_PHONES" IS 'snapshot table for snapshot E_RIGHTS.ANK_MV_PERSON_PHONES'; +-------------------------------------------------------- +-- DDL for Materialized View ANK_MV_PERSONS_EEAS +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."ANK_MV_PERSONS_EEAS" ("PER_ID", "NO_SYSPER", "TITLE", "SURNAME", "BIRTH_NAME", "FIRST_NAME", "FIRST_NAME2", "FIRST_NAME3", "FIRST_NAME4", "GENRE", "DATE_OF_BIRTH", "PLACE_OF_BIRTH", "COUNTRY_OF_BIRTH", "CREATION_DATE", "MODIFICATION_DATE", "USERID", "MONIKER", "DOMAIN", "DISPLAY_NAME", "COMPLET_NAME", "DISPLAY_SURNAME", "DISPLAY_FIRST_NAME", "JCX_ID", "JOB_ID", "TOJ_CD", "JOB_TYPE", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "INS_CD", "EMAIL", "WORK_PATTERN_DATE_FROM", "WORK_PATTERN_DATE_TO", "WORK_PATTERN_DESC", "LST_CD", "LST_CODE", "LST_BEG_DATE", "LST_ASS_DATE", "LST_END_DATE", "CGR_CD", "ORG_ID", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "ORG_DESC", "TOR_ID", "TYPEOFENTITY_NAME", "DEL_ID", "DELEGATION_NAME", "JOB_TITLE", "JOB_NAME", "JOB_NAME_DIRECTORY", "JOB_PURPOSE", "RESPONSIBLE", "HEAD_OF_ENTITY") +TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS SELECT + PER_ID, + NO_SYSPER, + TITLE, + SURNAME, + BIRTH_NAME, + FIRST_NAME, + FIRST_NAME2, + FIRST_NAME3, + FIRST_NAME4, + GENRE, + DATE_OF_BIRTH, + PLACE_OF_BIRTH, + COUNTRY_OF_BIRTH, + CREATION_DATE, + MODIFICATION_DATE, + USERID, + MONIKER, + DOMAIN, + DISPLAY_NAME, + COMPLET_NAME, + DISPLAY_SURNAME, + DISPLAY_FIRST_NAME, + JCX_ID, + JOB_ID, + TOJ_CD, + JOB_TYPE, + ASSIGN_START_DATE, + ASSIGN_END_DATE, + INS_CD, + EMAIL, + WORK_PATTERN_DATE_FROM, + WORK_PATTERN_DATE_TO, + WORK_PATTERN_DESC, + LST_CD, + LST_CODE, + LST_BEG_DATE, + LST_ASS_DATE, + LST_END_DATE, + CGR_CD, + ORG_ID, + MAIN_ORG_ID, + ORG_NAME, + ORG_CD, + ORG_DESC, + TOR_ID, + TYPEOFENTITY_NAME, + DEL_ID, + DELEGATION_NAME, + JOB_TITLE, + JOB_NAME, + JOB_NAME_DIRECTORY, + JOB_PURPOSE, + RESPONSIBLE, + HEAD_OF_ENTITY + FROM + mv_persons_eeas@easrefn.cc.cec.eu.int +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."ANK_MV_PERSONS_EEAS" IS 'snapshot table for snapshot E_RIGHTS.ANK_MV_PERSONS_EEAS'; +-------------------------------------------------------- +-- DDL for Materialized View ANK_MV_USER_SYS_ORG_PERMS +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."ANK_MV_USER_SYS_ORG_PERMS" ("PER_ID", "SYSTEM_ID", "FEATURE_ID", "FEATURE", "ORG_ID", "ACCESS_MODE", "SOURCE") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND +AS SELECT + P.PER_ID, + P.SYSTEM_ID, + P.FEATURE_ID, + P.FEATURE, + P.ORG_ID, + P.ACCESS_MODE, + P.SOURCE + FROM MV_SENTRY_USER_ORG_SYS_PERMS@EASREFN.CC.CEC.EU.INT P, MV_SENTRY_SYSTEMS@EASREFN.CC.CEC.EU.INT S +WHERE S.DISPLAY = 'E_RIGHTS' + AND S.INFORMATION_SYSTEM_ID = P.SYSTEM_ID +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."ANK_MV_USER_SYS_ORG_PERMS" IS 'snapshot table for snapshot E_RIGHTS.ANK_MV_USER_SYS_ORG_PERMS'; diff --git a/e-rights-common/src/main/database/inital/V1.0.0/ANK_seq.sql b/e-rights-common/src/main/database/inital/V1.0.0/ANK_seq.sql new file mode 100644 index 0000000..159298d --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/ANK_seq.sql @@ -0,0 +1,30 @@ +-------------------------------------------------------- +-- DDL for Sequence SEQ_ANK_EDMS_EMAIL_RCPTS +-------------------------------------------------------- + + CREATE SEQUENCE "ERIGHTS"."SEQ_ANK_EDMS_EMAIL_RCPTS" MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 118 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ; +-------------------------------------------------------- +-- DDL for Sequence SEQ_ANK_EDMS_EMAILS +-------------------------------------------------------- + + CREATE SEQUENCE "ERIGHTS"."SEQ_ANK_EDMS_EMAILS" MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 118 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ; +-------------------------------------------------------- +-- DDL for Sequence SEQ_ANK_EDMS_SMS +-------------------------------------------------------- + + CREATE SEQUENCE "ERIGHTS"."SEQ_ANK_EDMS_SMS" MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ; +-------------------------------------------------------- +-- DDL for Sequence SEQ_ANK_EDMS_SMS_RCPTS +-------------------------------------------------------- + + CREATE SEQUENCE "ERIGHTS"."SEQ_ANK_EDMS_SMS_RCPTS" MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ; +-------------------------------------------------------- +-- DDL for Sequence SEQ_ANK_REVINFO +-------------------------------------------------------- + + CREATE SEQUENCE "ERIGHTS"."SEQ_ANK_REVINFO" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1450 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ; +-------------------------------------------------------- +-- DDL for Sequence SEQ_ANK_SM_PREVIOUS_STATES +-------------------------------------------------------- + + CREATE SEQUENCE "ERIGHTS"."SEQ_ANK_SM_PREVIOUS_STATES" MINVALUE 1 MAXVALUE 99999999999 INCREMENT BY 1 START WITH 508 NOCACHE NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ; diff --git a/e-rights-common/src/main/database/inital/V1.0.0/ANK_tables.sql b/e-rights-common/src/main/database/inital/V1.0.0/ANK_tables.sql new file mode 100644 index 0000000..3608f14 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/ANK_tables.sql @@ -0,0 +1,732 @@ +-------------------------------------------------------- +-- DDL for Table ANK_EDMS_EMAIL_COMM_DATA +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_EDMS_EMAIL_COMM_DATA" + ( "ID" NUMBER, + "CLIENT_COMMUNICATION_ID" RAW(16), + "SERVER_COMMUNICATION_ID" VARCHAR2(25 BYTE), + "SENT_AT" DATE, + "STATUS" VARCHAR2(10 BYTE), + "LAST_CHECK_AT" DATE + ) SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table ANK_EDMS_EMAIL_COMM_ERRORS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_EDMS_EMAIL_COMM_ERRORS" + ( "ID" NUMBER, + "UUID" CHAR(36 BYTE), + "CODE" VARCHAR2(25 BYTE), + "MESSAGE" VARCHAR2(1024 BYTE) + ) SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table ANK_EDMS_EMAIL_RCPT_COMM_DATA +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_EDMS_EMAIL_RCPT_COMM_DATA" + ( "ID" NUMBER, + "COMM_DATA_ID" NUMBER, + "REF_ID" VARCHAR2(50 BYTE), + "STATUS" VARCHAR2(10 BYTE) + ) SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table ANK_EDMS_EMAIL_RCPTS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_EDMS_EMAIL_RCPTS" + ( "ID" NUMBER, + "EMAIL_ID" NUMBER, + "REF_ID" VARCHAR2(50 BYTE), + "ADDRESS" VARCHAR2(255 BYTE), + "CUSTOMIZED_HEADER" VARCHAR2(255 CHAR), + "CUSTOMIZED_FOOTER" VARCHAR2(255 CHAR) + ) SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table ANK_EDMS_EMAILS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_EDMS_EMAILS" + ( "ID" NUMBER, + "BATCH_ID" VARCHAR2(50 BYTE), + "CLIENT_DIVISION_ID" VARCHAR2(50 BYTE), + "SOURCE_MESSAGE_ID" VARCHAR2(25 BYTE), + "EXPIRES_AT" DATE, + "FORMAT" VARCHAR2(10 BYTE), + "SENDER" VARCHAR2(255 CHAR), + "SUBJECT" VARCHAR2(1000 CHAR), + "BODY" CLOB, + "SIGNATURE" VARCHAR2(255 CHAR), + "CREATED_AT" DATE, + "CREATED_BY" NUMBER + ) SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" + LOB ("BODY") STORE AS SECUREFILE ( + TABLESPACE "ERIGHTS" ENABLE STORAGE IN ROW CHUNK 8192 + NOCACHE LOGGING NOCOMPRESS KEEP_DUPLICATES + STORAGE(INITIAL 106496 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)) ; +-------------------------------------------------------- +-- DDL for Table ANK_EDMS_SMS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_EDMS_SMS" + ( "ID" NUMBER, + "BATCH_ID" VARCHAR2(50 BYTE), + "CLIENT_DIVISION_ID" VARCHAR2(50 BYTE), + "SOURCE_MESSAGE_ID" VARCHAR2(25 BYTE), + "EXPIRES_AT" DATE, + "BODY" CLOB, + "CREATED_AT" DATE, + "CREATED_BY" NUMBER + ) SEGMENT CREATION DEFERRED + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + TABLESPACE "ERIGHTS" + LOB ("BODY") STORE AS SECUREFILE ( + TABLESPACE "ERIGHTS" ENABLE STORAGE IN ROW CHUNK 8192 + NOCACHE LOGGING NOCOMPRESS KEEP_DUPLICATES ) ; +-------------------------------------------------------- +-- DDL for Table ANK_EDMS_SMS_COMM_DATA +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_EDMS_SMS_COMM_DATA" + ( "ID" NUMBER, + "CLIENT_COMMUNICATION_ID" RAW(16), + "SERVER_COMMUNICATION_ID" VARCHAR2(25 BYTE), + "SENT_AT" DATE, + "STATUS" VARCHAR2(10 BYTE), + "LAST_CHECK_AT" DATE + ) SEGMENT CREATION DEFERRED + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table ANK_EDMS_SMS_COMM_ERRORS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_EDMS_SMS_COMM_ERRORS" + ( "ID" NUMBER, + "UUID" CHAR(36 BYTE), + "CODE" VARCHAR2(25 BYTE), + "MESSAGE" VARCHAR2(1024 BYTE) + ) SEGMENT CREATION DEFERRED + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table ANK_EDMS_SMS_RCPT_COMM_DATA +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_EDMS_SMS_RCPT_COMM_DATA" + ( "ID" NUMBER, + "COMM_DATA_ID" NUMBER, + "REF_ID" VARCHAR2(50 BYTE), + "STATUS" VARCHAR2(10 BYTE) + ) SEGMENT CREATION DEFERRED + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table ANK_EDMS_SMS_RCPTS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_EDMS_SMS_RCPTS" + ( "ID" NUMBER, + "SMS_ID" NUMBER, + "REF_ID" VARCHAR2(50 BYTE), + "PHONE_NUMBER" VARCHAR2(25 BYTE) + ) SEGMENT CREATION DEFERRED + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table ANK_REVINFO +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_REVINFO" + ( "ID" NUMBER, + "TIMESTAMP" NUMBER, + "USER_ID" VARCHAR2(255 BYTE), + "USER_FULL_NAME" VARCHAR2(255 BYTE), + "DELEGATOR_PER_ID" NUMBER + ) SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table ANK_SM_CURRENT_STATES +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" + ( "ID" RAW(16), + "MACHINE_ID" VARCHAR2(64 BYTE), + "DEPARTURE_STATE" VARCHAR2(64 BYTE), + "ARRIVAL_STATE" VARCHAR2(64 BYTE), + "EVENT" VARCHAR2(64 BYTE), + "STATE_MACHINE_CONTEXT" BLOB, + "SAVED_BY" NUMBER, + "SAVED_AT" DATE DEFAULT sysdate + ) SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" + LOB ("STATE_MACHINE_CONTEXT") STORE AS SECUREFILE ( + TABLESPACE "ERIGHTS" ENABLE STORAGE IN ROW CHUNK 8192 + NOCACHE LOGGING NOCOMPRESS KEEP_DUPLICATES + STORAGE(INITIAL 106496 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)) ; +-------------------------------------------------------- +-- DDL for Table ANK_SM_CURRENT_STATES_BCK +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES_BCK" + ( "ID" RAW(16), + "MACHINE_ID" VARCHAR2(64 BYTE), + "STATE" VARCHAR2(64 BYTE), + "EVENT" VARCHAR2(64 BYTE), + "STATE_MACHINE_CONTEXT" BLOB, + "SAVED_BY" NUMBER, + "SAVED_AT" DATE + ) SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" + LOB ("STATE_MACHINE_CONTEXT") STORE AS SECUREFILE ( + TABLESPACE "ERIGHTS" ENABLE STORAGE IN ROW CHUNK 8192 + NOCACHE LOGGING NOCOMPRESS KEEP_DUPLICATES + STORAGE(INITIAL 106496 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)) ; +-------------------------------------------------------- +-- DDL for Table ANK_SM_PREVIOUS_STATES +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" + ( "ID" NUMBER, + "CURRENT_STATE_ID" RAW(16), + "DEPARTURE_STATE" VARCHAR2(64 BYTE), + "ARRIVAL_STATE" VARCHAR2(64 BYTE), + "EVENT" VARCHAR2(64 BYTE), + "SAVED_BY" NUMBER, + "SAVED_AT" DATE + ) SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table ANK_SM_PREVIOUS_STATES_BCK +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES_BCK" + ( "ID" NUMBER, + "CURRENT_STATE_ID" RAW(16), + "STATE" VARCHAR2(64 BYTE), + "EVENT" VARCHAR2(64 BYTE), + "SAVED_BY" NUMBER, + "SAVED_AT" DATE + ) SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table ANK_USER_MGMT_PREFERENCES +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."ANK_USER_MGMT_PREFERENCES" + ( "PER_ID" NUMBER, + "LANGUAGE_ISO" VARCHAR2(3 BYTE), + "REGION_ISO" VARCHAR2(3 BYTE), + "ZONE_ID" VARCHAR2(50 BYTE), + "CREATED_BY" NUMBER, + "CREATED_AT" TIMESTAMP (6), + "UPDATED_BY" NUMBER, + "UPDATED_AT" TIMESTAMP (6) + ) SEGMENT CREATION DEFERRED + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_ANK_EDMS_EMAIL_COMM_DATA +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_ANK_EDMS_EMAIL_COMM_DATA" ON "ERIGHTS"."ANK_EDMS_EMAIL_COMM_DATA" ("ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_ANK_EDMS_ECD_STAT_LAST_CHK +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_ANK_EDMS_ECD_STAT_LAST_CHK" ON "ERIGHTS"."ANK_EDMS_EMAIL_COMM_DATA" ("STATUS", "LAST_CHECK_AT") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_ANK_EDMS_EMAIL_COMM_ERRORS +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_ANK_EDMS_EMAIL_COMM_ERRORS" ON "ERIGHTS"."ANK_EDMS_EMAIL_COMM_ERRORS" ("ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_ANK_EDMS_E_RCPT_COMM_DATA +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_ANK_EDMS_E_RCPT_COMM_DATA" ON "ERIGHTS"."ANK_EDMS_EMAIL_RCPT_COMM_DATA" ("ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_ANK_EDMS_EMAIL_RCPTS +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_ANK_EDMS_EMAIL_RCPTS" ON "ERIGHTS"."ANK_EDMS_EMAIL_RCPTS" ("ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index UN_ANK_EDMS_E_RCPTS_ID_EMA_REF +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."UN_ANK_EDMS_E_RCPTS_ID_EMA_REF" ON "ERIGHTS"."ANK_EDMS_EMAIL_RCPTS" ("ID", "EMAIL_ID", "REF_ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_ANK_EDMS_EMAILS +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_ANK_EDMS_EMAILS" ON "ERIGHTS"."ANK_EDMS_EMAILS" ("ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_ANK_EDMS_SMS +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_ANK_EDMS_SMS" ON "ERIGHTS"."ANK_EDMS_SMS" ("ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_ANK_EDMS_SMS_COMM_DATA +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_ANK_EDMS_SMS_COMM_DATA" ON "ERIGHTS"."ANK_EDMS_SMS_COMM_DATA" ("ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_ANK_EDMS_SCD_STAT_LAST_CHK +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_ANK_EDMS_SCD_STAT_LAST_CHK" ON "ERIGHTS"."ANK_EDMS_SMS_COMM_DATA" ("STATUS", "LAST_CHECK_AT") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_ANK_EDMS_SMS_COMM_ERRORS +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_ANK_EDMS_SMS_COMM_ERRORS" ON "ERIGHTS"."ANK_EDMS_SMS_COMM_ERRORS" ("ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_ANK_EDMS_S_RCPT_COMM_DATA +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_ANK_EDMS_S_RCPT_COMM_DATA" ON "ERIGHTS"."ANK_EDMS_SMS_RCPT_COMM_DATA" ("ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_ANK_EDMS_SMS_RCPTS +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_ANK_EDMS_SMS_RCPTS" ON "ERIGHTS"."ANK_EDMS_SMS_RCPTS" ("ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index UN_ANK_EDMS_S_RCPTS_ID_EMA_REF +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."UN_ANK_EDMS_S_RCPTS_ID_EMA_REF" ON "ERIGHTS"."ANK_EDMS_SMS_RCPTS" ("ID", "SMS_ID", "REF_ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_ANK_REVINFO +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_ANK_REVINFO" ON "ERIGHTS"."ANK_REVINFO" ("ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_ANK_SM_CURRENT_STATES +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_ANK_SM_CURRENT_STATES" ON "ERIGHTS"."ANK_SM_CURRENT_STATES" ("ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_ANK_SM_PREVIOUS_STATES +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_ANK_SM_PREVIOUS_STATES" ON "ERIGHTS"."ANK_SM_PREVIOUS_STATES" ("ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_ANK_USER_MGMT_PREFERENCES +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_ANK_USER_MGMT_PREFERENCES" ON "ERIGHTS"."ANK_USER_MGMT_PREFERENCES" ("PER_ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- Constraints for Table ANK_EDMS_EMAIL_COMM_DATA +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_COMM_DATA" MODIFY ("ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_COMM_DATA" MODIFY ("CLIENT_COMMUNICATION_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_COMM_DATA" MODIFY ("SENT_AT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_COMM_DATA" MODIFY ("STATUS" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_COMM_DATA" MODIFY ("LAST_CHECK_AT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_COMM_DATA" ADD CONSTRAINT "PK_ANK_EDMS_EMAIL_COMM_DATA" PRIMARY KEY ("ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ENABLE; + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_COMM_DATA" ADD CONSTRAINT "CHK_ANK_EDMS_ECD_STATUS" CHECK (status in ('ERROR', 'FAILED', 'INITIAL', 'PROCESSING', 'SENT_OK')) ENABLE; +-------------------------------------------------------- +-- Constraints for Table ANK_EDMS_EMAIL_COMM_ERRORS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_COMM_ERRORS" MODIFY ("ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_COMM_ERRORS" MODIFY ("UUID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_COMM_ERRORS" MODIFY ("CODE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_COMM_ERRORS" MODIFY ("MESSAGE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_COMM_ERRORS" ADD CONSTRAINT "PK_ANK_EDMS_EMAIL_COMM_ERRORS" PRIMARY KEY ("ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table ANK_EDMS_EMAIL_RCPT_COMM_DATA +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_RCPT_COMM_DATA" MODIFY ("ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_RCPT_COMM_DATA" MODIFY ("COMM_DATA_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_RCPT_COMM_DATA" MODIFY ("REF_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_RCPT_COMM_DATA" MODIFY ("STATUS" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_RCPT_COMM_DATA" ADD CONSTRAINT "PK_ANK_EDMS_E_RCPT_COMM_DATA" PRIMARY KEY ("ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ENABLE; + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_RCPT_COMM_DATA" ADD CONSTRAINT "CHK_ANK_EDMS_ERCD_STATUS" CHECK (status in ('ERROR', 'FAILED', 'INITIAL', 'PROCESSING', 'SENT_OK')) ENABLE; +-------------------------------------------------------- +-- Constraints for Table ANK_EDMS_EMAIL_RCPTS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_RCPTS" MODIFY ("ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_RCPTS" MODIFY ("EMAIL_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_RCPTS" MODIFY ("REF_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_RCPTS" MODIFY ("ADDRESS" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_RCPTS" ADD CONSTRAINT "PK_ANK_EDMS_EMAIL_RCPTS" PRIMARY KEY ("ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ENABLE; + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_RCPTS" ADD CONSTRAINT "UN_ANK_EDMS_E_RCPTS_ID_EMA_REF" UNIQUE ("ID", "EMAIL_ID", "REF_ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table ANK_EDMS_EMAILS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAILS" MODIFY ("ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAILS" MODIFY ("FORMAT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAILS" MODIFY ("SENDER" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAILS" MODIFY ("BODY" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAILS" MODIFY ("CREATED_AT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAILS" MODIFY ("CREATED_BY" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAILS" ADD CONSTRAINT "PK_ANK_EDMS_EMAILS" PRIMARY KEY ("ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ENABLE; + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAILS" ADD CONSTRAINT "CHK_ANK_EDMS_EMAILS_FORMAT" CHECK (format in ('HTML', 'PLAIN_TEXT', 'RICH_TEXT')) ENABLE; +-------------------------------------------------------- +-- Constraints for Table ANK_EDMS_SMS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS" MODIFY ("ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS" MODIFY ("BODY" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS" MODIFY ("CREATED_AT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS" MODIFY ("CREATED_BY" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS" ADD CONSTRAINT "PK_ANK_EDMS_SMS" PRIMARY KEY ("ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table ANK_EDMS_SMS_COMM_DATA +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_COMM_DATA" MODIFY ("ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_COMM_DATA" MODIFY ("CLIENT_COMMUNICATION_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_COMM_DATA" MODIFY ("SENT_AT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_COMM_DATA" MODIFY ("STATUS" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_COMM_DATA" MODIFY ("LAST_CHECK_AT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_COMM_DATA" ADD CONSTRAINT "PK_ANK_EDMS_SMS_COMM_DATA" PRIMARY KEY ("ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ENABLE; + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_COMM_DATA" ADD CONSTRAINT "CHK_ANK_EDMS_SCD_STATUS" CHECK (status in ('ERROR', 'FAILED', 'INITIAL', 'PROCESSING', 'SENT_OK')) ENABLE; +-------------------------------------------------------- +-- Constraints for Table ANK_EDMS_SMS_COMM_ERRORS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_COMM_ERRORS" MODIFY ("ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_COMM_ERRORS" MODIFY ("UUID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_COMM_ERRORS" MODIFY ("CODE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_COMM_ERRORS" MODIFY ("MESSAGE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_COMM_ERRORS" ADD CONSTRAINT "PK_ANK_EDMS_SMS_COMM_ERRORS" PRIMARY KEY ("ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table ANK_EDMS_SMS_RCPT_COMM_DATA +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_RCPT_COMM_DATA" MODIFY ("ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_RCPT_COMM_DATA" MODIFY ("COMM_DATA_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_RCPT_COMM_DATA" MODIFY ("REF_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_RCPT_COMM_DATA" MODIFY ("STATUS" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_RCPT_COMM_DATA" ADD CONSTRAINT "PK_ANK_EDMS_S_RCPT_COMM_DATA" PRIMARY KEY ("ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ENABLE; + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_RCPT_COMM_DATA" ADD CONSTRAINT "CHK_ANK_EDMS_SRCD_STATUS" CHECK (status in ('ERROR', 'FAILED', 'INITIAL', 'PROCESSING', 'SENT_OK')) ENABLE; +-------------------------------------------------------- +-- Constraints for Table ANK_EDMS_SMS_RCPTS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_RCPTS" MODIFY ("ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_RCPTS" MODIFY ("SMS_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_RCPTS" MODIFY ("REF_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_RCPTS" MODIFY ("PHONE_NUMBER" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_RCPTS" ADD CONSTRAINT "PK_ANK_EDMS_SMS_RCPTS" PRIMARY KEY ("ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ENABLE; + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_RCPTS" ADD CONSTRAINT "UN_ANK_EDMS_S_RCPTS_ID_EMA_REF" UNIQUE ("ID", "SMS_ID", "REF_ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table ANK_REVINFO +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_REVINFO" MODIFY ("ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_REVINFO" MODIFY ("TIMESTAMP" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_REVINFO" MODIFY ("USER_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_REVINFO" MODIFY ("USER_FULL_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_REVINFO" ADD CONSTRAINT "PK_ANK_REVINFO" PRIMARY KEY ("ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table ANK_SM_CURRENT_STATES +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" MODIFY ("ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" MODIFY ("MACHINE_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" MODIFY ("DEPARTURE_STATE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" MODIFY ("ARRIVAL_STATE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" MODIFY ("EVENT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" MODIFY ("STATE_MACHINE_CONTEXT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" MODIFY ("SAVED_BY" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" MODIFY ("SAVED_AT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES" ADD CONSTRAINT "PK_ANK_SM_CURRENT_STATES" PRIMARY KEY ("ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table ANK_SM_CURRENT_STATES_BCK +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES_BCK" MODIFY ("STATE_MACHINE_CONTEXT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES_BCK" MODIFY ("SAVED_BY" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES_BCK" MODIFY ("SAVED_AT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES_BCK" MODIFY ("ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES_BCK" MODIFY ("MACHINE_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES_BCK" MODIFY ("STATE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_CURRENT_STATES_BCK" MODIFY ("EVENT" NOT NULL ENABLE); +-------------------------------------------------------- +-- Constraints for Table ANK_SM_PREVIOUS_STATES +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" MODIFY ("ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" MODIFY ("CURRENT_STATE_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" MODIFY ("DEPARTURE_STATE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" MODIFY ("ARRIVAL_STATE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" MODIFY ("EVENT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" MODIFY ("SAVED_BY" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" MODIFY ("SAVED_AT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" ADD CONSTRAINT "PK_ANK_SM_PREVIOUS_STATES" PRIMARY KEY ("ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table ANK_SM_PREVIOUS_STATES_BCK +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES_BCK" MODIFY ("ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES_BCK" MODIFY ("CURRENT_STATE_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES_BCK" MODIFY ("STATE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES_BCK" MODIFY ("EVENT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES_BCK" MODIFY ("SAVED_BY" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES_BCK" MODIFY ("SAVED_AT" NOT NULL ENABLE); +-------------------------------------------------------- +-- Constraints for Table ANK_USER_MGMT_PREFERENCES +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_USER_MGMT_PREFERENCES" ADD CONSTRAINT "PK_ANK_USER_MGMT_PREFERENCES" PRIMARY KEY ("PER_ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ENABLE; + ALTER TABLE "ERIGHTS"."ANK_USER_MGMT_PREFERENCES" MODIFY ("ZONE_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_USER_MGMT_PREFERENCES" MODIFY ("REGION_ISO" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_USER_MGMT_PREFERENCES" MODIFY ("LANGUAGE_ISO" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."ANK_USER_MGMT_PREFERENCES" MODIFY ("PER_ID" NOT NULL ENABLE); +-------------------------------------------------------- +-- Ref Constraints for Table ANK_EDMS_EMAIL_COMM_DATA +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_COMM_DATA" ADD CONSTRAINT "FK_ANK_EDMS_EMAIL_COMM_DATA_ID" FOREIGN KEY ("ID") + REFERENCES "ERIGHTS"."ANK_EDMS_EMAILS" ("ID") ON DELETE CASCADE ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table ANK_EDMS_EMAIL_COMM_ERRORS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_COMM_ERRORS" ADD CONSTRAINT "FK_ANK_EDMS_E_COMM_ERRORS_ID" FOREIGN KEY ("ID") + REFERENCES "ERIGHTS"."ANK_EDMS_EMAIL_COMM_DATA" ("ID") ON DELETE CASCADE ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table ANK_EDMS_EMAIL_RCPT_COMM_DATA +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_RCPT_COMM_DATA" ADD CONSTRAINT "FK_ANK_EDMS_ERCD_COMM_DATA_ID" FOREIGN KEY ("COMM_DATA_ID") + REFERENCES "ERIGHTS"."ANK_EDMS_EMAIL_COMM_DATA" ("ID") ON DELETE CASCADE ENABLE; + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_RCPT_COMM_DATA" ADD CONSTRAINT "FK_ANK_EDMS_ERCD_ID_CDATA_REF" FOREIGN KEY ("ID", "COMM_DATA_ID", "REF_ID") + REFERENCES "ERIGHTS"."ANK_EDMS_EMAIL_RCPTS" ("ID", "EMAIL_ID", "REF_ID") ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table ANK_EDMS_EMAIL_RCPTS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_EMAIL_RCPTS" ADD CONSTRAINT "FK_ANK_EDMS_E_RCPTS_EMAIL_ID" FOREIGN KEY ("EMAIL_ID") + REFERENCES "ERIGHTS"."ANK_EDMS_EMAILS" ("ID") ON DELETE CASCADE ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table ANK_EDMS_SMS_COMM_DATA +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_COMM_DATA" ADD CONSTRAINT "FK_ANK_EDMS_SMS_COMM_DATA_ID" FOREIGN KEY ("ID") + REFERENCES "ERIGHTS"."ANK_EDMS_SMS" ("ID") ON DELETE CASCADE ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table ANK_EDMS_SMS_COMM_ERRORS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_COMM_ERRORS" ADD CONSTRAINT "FK_ANK_EDMS_S_COMM_ERRORS_ID" FOREIGN KEY ("ID") + REFERENCES "ERIGHTS"."ANK_EDMS_SMS_COMM_DATA" ("ID") ON DELETE CASCADE ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table ANK_EDMS_SMS_RCPT_COMM_DATA +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_RCPT_COMM_DATA" ADD CONSTRAINT "FK_ANK_EDMS_SRCD_COMM_DATA_ID" FOREIGN KEY ("COMM_DATA_ID") + REFERENCES "ERIGHTS"."ANK_EDMS_SMS_COMM_DATA" ("ID") ON DELETE CASCADE ENABLE; + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_RCPT_COMM_DATA" ADD CONSTRAINT "FK_ANK_EDMS_SRCD_ID_CDATA_REF" FOREIGN KEY ("ID", "COMM_DATA_ID", "REF_ID") + REFERENCES "ERIGHTS"."ANK_EDMS_SMS_RCPTS" ("ID", "SMS_ID", "REF_ID") ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table ANK_EDMS_SMS_RCPTS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_EDMS_SMS_RCPTS" ADD CONSTRAINT "FK_ANK_EDMS_S_RCPTS_SMS_ID" FOREIGN KEY ("SMS_ID") + REFERENCES "ERIGHTS"."ANK_EDMS_SMS" ("ID") ON DELETE CASCADE ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table ANK_SM_PREVIOUS_STATES +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."ANK_SM_PREVIOUS_STATES" ADD CONSTRAINT "FK_ANK_SM_PREVIOUS_CURRENT" FOREIGN KEY ("CURRENT_STATE_ID") + REFERENCES "ERIGHTS"."ANK_SM_CURRENT_STATES" ("ID") ENABLE; diff --git a/e-rights-common/src/main/database/inital/V1.0.0/ANK_views.sql b/e-rights-common/src/main/database/inital/V1.0.0/ANK_views.sql new file mode 100644 index 0000000..e1e2e6a --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/ANK_views.sql @@ -0,0 +1,23 @@ +-------------------------------------------------------- +-- DDL for View ANK_V_USER_IDENTITIES +-------------------------------------------------------- + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."ANK_V_USER_IDENTITIES" ("PER_ID", "ORG_ID", "USERID") AS + SELECT PER_ID, ORG_ID, USERID FROM ANK_MV_PERSONS_EEAS + + +; +-------------------------------------------------------- +-- DDL for View ANK_V_USER_PERMISSIONS +-------------------------------------------------------- + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."ANK_V_USER_PERMISSIONS" ("PER_ID", "ORG_ID", "PERMISSION", "ACCESS_MODE") AS + select + MV.PER_ID as PER_ID, + NVL(MV.ORG_ID, -1) as ORG_ID, + MV.FEATURE as PERMISSION, + MV.ACCESS_MODE as ACCESS_MODE +from ANK_MV_USER_SYS_ORG_PERMS MV + + +; diff --git a/e-rights-common/src/main/database/inital/V1.0.0/QRTZ_tables.sql b/e-rights-common/src/main/database/inital/V1.0.0/QRTZ_tables.sql new file mode 100644 index 0000000..37fa679 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/QRTZ_tables.sql @@ -0,0 +1,494 @@ +-------------------------------------------------------- +-- DDL for Table QRTZ_BLOB_TRIGGERS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."QRTZ_BLOB_TRIGGERS" + ( "SCHED_NAME" VARCHAR2(120 BYTE), + "TRIGGER_NAME" VARCHAR2(200 BYTE), + "TRIGGER_GROUP" VARCHAR2(200 BYTE), + "BLOB_DATA" BLOB + ) TABLESPACE "ERIGHTS" + LOB ("BLOB_DATA") STORE AS SECUREFILE ( + TABLESPACE "ERIGHTS" ENABLE STORAGE IN ROW CHUNK 8192 + NOCACHE LOGGING NOCOMPRESS KEEP_DUPLICATES ) ; +-------------------------------------------------------- +-- DDL for Table QRTZ_CALENDARS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."QRTZ_CALENDARS" + ( "SCHED_NAME" VARCHAR2(120 BYTE), + "CALENDAR_NAME" VARCHAR2(200 BYTE), + "CALENDAR" BLOB + ) TABLESPACE "ERIGHTS" + LOB ("CALENDAR") STORE AS SECUREFILE ( + TABLESPACE "ERIGHTS" ENABLE STORAGE IN ROW CHUNK 8192 + NOCACHE LOGGING NOCOMPRESS KEEP_DUPLICATES ) ; +-------------------------------------------------------- +-- DDL for Table QRTZ_CRON_TRIGGERS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."QRTZ_CRON_TRIGGERS" + ( "SCHED_NAME" VARCHAR2(120 BYTE), + "TRIGGER_NAME" VARCHAR2(200 BYTE), + "TRIGGER_GROUP" VARCHAR2(200 BYTE), + "CRON_EXPRESSION" VARCHAR2(120 BYTE), + "TIME_ZONE_ID" VARCHAR2(80 BYTE) + ) TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table QRTZ_FIRED_TRIGGERS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."QRTZ_FIRED_TRIGGERS" + ( "SCHED_NAME" VARCHAR2(120 BYTE), + "ENTRY_ID" VARCHAR2(95 BYTE), + "TRIGGER_NAME" VARCHAR2(200 BYTE), + "TRIGGER_GROUP" VARCHAR2(200 BYTE), + "INSTANCE_NAME" VARCHAR2(200 BYTE), + "FIRED_TIME" NUMBER(13,0), + "SCHED_TIME" NUMBER(13,0), + "PRIORITY" NUMBER(13,0), + "STATE" VARCHAR2(16 BYTE), + "JOB_NAME" VARCHAR2(200 BYTE), + "JOB_GROUP" VARCHAR2(200 BYTE), + "IS_NONCONCURRENT" VARCHAR2(1 BYTE), + "REQUESTS_RECOVERY" VARCHAR2(1 BYTE) + )TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table QRTZ_JOB_DETAILS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."QRTZ_JOB_DETAILS" + ( "SCHED_NAME" VARCHAR2(120 BYTE), + "JOB_NAME" VARCHAR2(200 BYTE), + "JOB_GROUP" VARCHAR2(200 BYTE), + "DESCRIPTION" VARCHAR2(250 BYTE), + "JOB_CLASS_NAME" VARCHAR2(250 BYTE), + "IS_DURABLE" VARCHAR2(1 BYTE), + "IS_NONCONCURRENT" VARCHAR2(1 BYTE), + "IS_UPDATE_DATA" VARCHAR2(1 BYTE), + "REQUESTS_RECOVERY" VARCHAR2(1 BYTE), + "JOB_DATA" BLOB + ) TABLESPACE "ERIGHTS" + LOB ("JOB_DATA") STORE AS SECUREFILE ( + TABLESPACE "ERIGHTS" ) ; +-------------------------------------------------------- +-- DDL for Table QRTZ_LOCKS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."QRTZ_LOCKS" + ( "SCHED_NAME" VARCHAR2(120 BYTE), + "LOCK_NAME" VARCHAR2(40 BYTE) + )TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table QRTZ_PAUSED_TRIGGER_GRPS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."QRTZ_PAUSED_TRIGGER_GRPS" + ( "SCHED_NAME" VARCHAR2(120 BYTE), + "TRIGGER_GROUP" VARCHAR2(200 BYTE) + )TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table QRTZ_SCHEDULER_STATE +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."QRTZ_SCHEDULER_STATE" + ( "SCHED_NAME" VARCHAR2(120 BYTE), + "INSTANCE_NAME" VARCHAR2(200 BYTE), + "LAST_CHECKIN_TIME" NUMBER(13,0), + "CHECKIN_INTERVAL" NUMBER(13,0) + ) TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table QRTZ_SIMPLE_TRIGGERS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."QRTZ_SIMPLE_TRIGGERS" + ( "SCHED_NAME" VARCHAR2(120 BYTE), + "TRIGGER_NAME" VARCHAR2(200 BYTE), + "TRIGGER_GROUP" VARCHAR2(200 BYTE), + "REPEAT_COUNT" NUMBER(7,0), + "REPEAT_INTERVAL" NUMBER(12,0), + "TIMES_TRIGGERED" NUMBER(10,0) + ) TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table QRTZ_SIMPROP_TRIGGERS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."QRTZ_SIMPROP_TRIGGERS" + ( "SCHED_NAME" VARCHAR2(120 BYTE), + "TRIGGER_NAME" VARCHAR2(200 BYTE), + "TRIGGER_GROUP" VARCHAR2(200 BYTE), + "STR_PROP_1" VARCHAR2(512 BYTE), + "STR_PROP_2" VARCHAR2(512 BYTE), + "STR_PROP_3" VARCHAR2(512 BYTE), + "INT_PROP_1" NUMBER(10,0), + "INT_PROP_2" NUMBER(10,0), + "LONG_PROP_1" NUMBER(13,0), + "LONG_PROP_2" NUMBER(13,0), + "DEC_PROP_1" NUMBER(13,4), + "DEC_PROP_2" NUMBER(13,4), + "BOOL_PROP_1" VARCHAR2(1 BYTE), + "BOOL_PROP_2" VARCHAR2(1 BYTE) + ) TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table QRTZ_TRIGGERS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."QRTZ_TRIGGERS" + ( "SCHED_NAME" VARCHAR2(120 BYTE), + "TRIGGER_NAME" VARCHAR2(200 BYTE), + "TRIGGER_GROUP" VARCHAR2(200 BYTE), + "JOB_NAME" VARCHAR2(200 BYTE), + "JOB_GROUP" VARCHAR2(200 BYTE), + "DESCRIPTION" VARCHAR2(250 BYTE), + "NEXT_FIRE_TIME" NUMBER(13,0), + "PREV_FIRE_TIME" NUMBER(13,0), + "PRIORITY" NUMBER(13,0), + "TRIGGER_STATE" VARCHAR2(16 BYTE), + "TRIGGER_TYPE" VARCHAR2(8 BYTE), + "START_TIME" NUMBER(13,0), + "END_TIME" NUMBER(13,0), + "CALENDAR_NAME" VARCHAR2(200 BYTE), + "MISFIRE_INSTR" NUMBER(2,0), + "JOB_DATA" BLOB + ) TABLESPACE "ERIGHTS" + LOB ("JOB_DATA") STORE AS SECUREFILE ( + TABLESPACE "ERIGHTS" ) ; +-------------------------------------------------------- +-- DDL for Index QRTZ_BLOB_TRIG_PK +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."QRTZ_BLOB_TRIG_PK" ON "ERIGHTS"."QRTZ_BLOB_TRIGGERS" ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index QRTZ_CALENDARS_PK +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."QRTZ_CALENDARS_PK" ON "ERIGHTS"."QRTZ_CALENDARS" ("SCHED_NAME", "CALENDAR_NAME") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index QRTZ_CRON_TRIG_PK +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."QRTZ_CRON_TRIG_PK" ON "ERIGHTS"."QRTZ_CRON_TRIGGERS" ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_FT_T_G +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_FT_T_G" ON "ERIGHTS"."QRTZ_FIRED_TRIGGERS" ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_FT_TG +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_FT_TG" ON "ERIGHTS"."QRTZ_FIRED_TRIGGERS" ("SCHED_NAME", "TRIGGER_GROUP") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index QRTZ_FIRED_TRIGGER_PK +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."QRTZ_FIRED_TRIGGER_PK" ON "ERIGHTS"."QRTZ_FIRED_TRIGGERS" ("SCHED_NAME", "ENTRY_ID") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_FT_TRIG_INST_NAME +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_FT_TRIG_INST_NAME" ON "ERIGHTS"."QRTZ_FIRED_TRIGGERS" ("SCHED_NAME", "INSTANCE_NAME") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_FT_INST_JOB_REQ_RCVRY +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_FT_INST_JOB_REQ_RCVRY" ON "ERIGHTS"."QRTZ_FIRED_TRIGGERS" ("SCHED_NAME", "INSTANCE_NAME", "REQUESTS_RECOVERY") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_FT_J_G +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_FT_J_G" ON "ERIGHTS"."QRTZ_FIRED_TRIGGERS" ("SCHED_NAME", "JOB_NAME", "JOB_GROUP") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_FT_JG +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_FT_JG" ON "ERIGHTS"."QRTZ_FIRED_TRIGGERS" ("SCHED_NAME", "JOB_GROUP") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_J_REQ_RECOVERY +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_J_REQ_RECOVERY" ON "ERIGHTS"."QRTZ_JOB_DETAILS" ("SCHED_NAME", "REQUESTS_RECOVERY") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_J_GRP +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_J_GRP" ON "ERIGHTS"."QRTZ_JOB_DETAILS" ("SCHED_NAME", "JOB_GROUP") +TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index QRTZ_JOB_DETAILS_PK +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."QRTZ_JOB_DETAILS_PK" ON "ERIGHTS"."QRTZ_JOB_DETAILS" ("SCHED_NAME", "JOB_NAME", "JOB_GROUP") +TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index QRTZ_LOCKS_PK +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."QRTZ_LOCKS_PK" ON "ERIGHTS"."QRTZ_LOCKS" ("SCHED_NAME", "LOCK_NAME") +TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index QRTZ_PAUSED_TRIG_GRPS_PK +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."QRTZ_PAUSED_TRIG_GRPS_PK" ON "ERIGHTS"."QRTZ_PAUSED_TRIGGER_GRPS" ("SCHED_NAME", "TRIGGER_GROUP") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index QRTZ_SCHEDULER_STATE_PK +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."QRTZ_SCHEDULER_STATE_PK" ON "ERIGHTS"."QRTZ_SCHEDULER_STATE" ("SCHED_NAME", "INSTANCE_NAME") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index QRTZ_SIMPLE_TRIG_PK +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."QRTZ_SIMPLE_TRIG_PK" ON "ERIGHTS"."QRTZ_SIMPLE_TRIGGERS" ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") +TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index QRTZ_SIMPROP_TRIG_PK +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."QRTZ_SIMPROP_TRIG_PK" ON "ERIGHTS"."QRTZ_SIMPROP_TRIGGERS" ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_T_J +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_T_J" ON "ERIGHTS"."QRTZ_TRIGGERS" ("SCHED_NAME", "JOB_NAME", "JOB_GROUP") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_T_JG +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_T_JG" ON "ERIGHTS"."QRTZ_TRIGGERS" ("SCHED_NAME", "JOB_GROUP") +TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_T_C +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_T_C" ON "ERIGHTS"."QRTZ_TRIGGERS" ("SCHED_NAME", "CALENDAR_NAME") +TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_T_G +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_T_G" ON "ERIGHTS"."QRTZ_TRIGGERS" ("SCHED_NAME", "TRIGGER_GROUP") +TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_T_STATE +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_T_STATE" ON "ERIGHTS"."QRTZ_TRIGGERS" ("SCHED_NAME", "TRIGGER_STATE") +TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_T_N_STATE +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_T_N_STATE" ON "ERIGHTS"."QRTZ_TRIGGERS" ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP", "TRIGGER_STATE") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_T_N_G_STATE +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_T_N_G_STATE" ON "ERIGHTS"."QRTZ_TRIGGERS" ("SCHED_NAME", "TRIGGER_GROUP", "TRIGGER_STATE") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_T_NEXT_FIRE_TIME +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_T_NEXT_FIRE_TIME" ON "ERIGHTS"."QRTZ_TRIGGERS" ("SCHED_NAME", "NEXT_FIRE_TIME") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_T_NFT_ST +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_T_NFT_ST" ON "ERIGHTS"."QRTZ_TRIGGERS" ("SCHED_NAME", "TRIGGER_STATE", "NEXT_FIRE_TIME") +TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_T_NFT_MISFIRE +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_T_NFT_MISFIRE" ON "ERIGHTS"."QRTZ_TRIGGERS" ("SCHED_NAME", "MISFIRE_INSTR", "NEXT_FIRE_TIME") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_T_NFT_ST_MISFIRE +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_T_NFT_ST_MISFIRE" ON "ERIGHTS"."QRTZ_TRIGGERS" ("SCHED_NAME", "MISFIRE_INSTR", "NEXT_FIRE_TIME", "TRIGGER_STATE") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index IDX_QRTZ_T_NFT_ST_MISFIRE_GRP +-------------------------------------------------------- + + CREATE INDEX "ERIGHTS"."IDX_QRTZ_T_NFT_ST_MISFIRE_GRP" ON "ERIGHTS"."QRTZ_TRIGGERS" ("SCHED_NAME", "MISFIRE_INSTR", "NEXT_FIRE_TIME", "TRIGGER_GROUP", "TRIGGER_STATE") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index QRTZ_TRIGGERS_PK +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."QRTZ_TRIGGERS_PK" ON "ERIGHTS"."QRTZ_TRIGGERS" ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- Constraints for Table QRTZ_BLOB_TRIGGERS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."QRTZ_BLOB_TRIGGERS" MODIFY ("SCHED_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_BLOB_TRIGGERS" MODIFY ("TRIGGER_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_BLOB_TRIGGERS" MODIFY ("TRIGGER_GROUP" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_BLOB_TRIGGERS" ADD CONSTRAINT "QRTZ_BLOB_TRIG_PK" PRIMARY KEY ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table QRTZ_CALENDARS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."QRTZ_CALENDARS" MODIFY ("SCHED_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_CALENDARS" MODIFY ("CALENDAR_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_CALENDARS" MODIFY ("CALENDAR" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_CALENDARS" ADD CONSTRAINT "QRTZ_CALENDARS_PK" PRIMARY KEY ("SCHED_NAME", "CALENDAR_NAME") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table QRTZ_CRON_TRIGGERS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."QRTZ_CRON_TRIGGERS" MODIFY ("SCHED_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_CRON_TRIGGERS" MODIFY ("TRIGGER_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_CRON_TRIGGERS" MODIFY ("TRIGGER_GROUP" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_CRON_TRIGGERS" MODIFY ("CRON_EXPRESSION" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_CRON_TRIGGERS" ADD CONSTRAINT "QRTZ_CRON_TRIG_PK" PRIMARY KEY ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") + USING INDEX TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table QRTZ_FIRED_TRIGGERS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."QRTZ_FIRED_TRIGGERS" MODIFY ("SCHED_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_FIRED_TRIGGERS" MODIFY ("ENTRY_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_FIRED_TRIGGERS" MODIFY ("TRIGGER_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_FIRED_TRIGGERS" MODIFY ("TRIGGER_GROUP" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_FIRED_TRIGGERS" MODIFY ("INSTANCE_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_FIRED_TRIGGERS" MODIFY ("FIRED_TIME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_FIRED_TRIGGERS" MODIFY ("SCHED_TIME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_FIRED_TRIGGERS" MODIFY ("PRIORITY" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_FIRED_TRIGGERS" MODIFY ("STATE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_FIRED_TRIGGERS" ADD CONSTRAINT "QRTZ_FIRED_TRIGGER_PK" PRIMARY KEY ("SCHED_NAME", "ENTRY_ID") + USING INDEX TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table QRTZ_JOB_DETAILS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."QRTZ_JOB_DETAILS" MODIFY ("SCHED_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_JOB_DETAILS" MODIFY ("JOB_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_JOB_DETAILS" MODIFY ("JOB_GROUP" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_JOB_DETAILS" MODIFY ("JOB_CLASS_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_JOB_DETAILS" MODIFY ("IS_DURABLE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_JOB_DETAILS" MODIFY ("IS_NONCONCURRENT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_JOB_DETAILS" MODIFY ("IS_UPDATE_DATA" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_JOB_DETAILS" MODIFY ("REQUESTS_RECOVERY" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_JOB_DETAILS" ADD CONSTRAINT "QRTZ_JOB_DETAILS_PK" PRIMARY KEY ("SCHED_NAME", "JOB_NAME", "JOB_GROUP") + USING INDEX TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table QRTZ_LOCKS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."QRTZ_LOCKS" MODIFY ("SCHED_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_LOCKS" MODIFY ("LOCK_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_LOCKS" ADD CONSTRAINT "QRTZ_LOCKS_PK" PRIMARY KEY ("SCHED_NAME", "LOCK_NAME") + USING INDEX TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table QRTZ_PAUSED_TRIGGER_GRPS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."QRTZ_PAUSED_TRIGGER_GRPS" MODIFY ("SCHED_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_PAUSED_TRIGGER_GRPS" MODIFY ("TRIGGER_GROUP" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_PAUSED_TRIGGER_GRPS" ADD CONSTRAINT "QRTZ_PAUSED_TRIG_GRPS_PK" PRIMARY KEY ("SCHED_NAME", "TRIGGER_GROUP") + USING INDEX + TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table QRTZ_SCHEDULER_STATE +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."QRTZ_SCHEDULER_STATE" MODIFY ("SCHED_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_SCHEDULER_STATE" MODIFY ("INSTANCE_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_SCHEDULER_STATE" MODIFY ("LAST_CHECKIN_TIME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_SCHEDULER_STATE" MODIFY ("CHECKIN_INTERVAL" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_SCHEDULER_STATE" ADD CONSTRAINT "QRTZ_SCHEDULER_STATE_PK" PRIMARY KEY ("SCHED_NAME", "INSTANCE_NAME") + USING INDEX + TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table QRTZ_SIMPLE_TRIGGERS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."QRTZ_SIMPLE_TRIGGERS" MODIFY ("SCHED_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_SIMPLE_TRIGGERS" MODIFY ("TRIGGER_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_SIMPLE_TRIGGERS" MODIFY ("TRIGGER_GROUP" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_SIMPLE_TRIGGERS" MODIFY ("REPEAT_COUNT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_SIMPLE_TRIGGERS" MODIFY ("REPEAT_INTERVAL" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_SIMPLE_TRIGGERS" MODIFY ("TIMES_TRIGGERED" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_SIMPLE_TRIGGERS" ADD CONSTRAINT "QRTZ_SIMPLE_TRIG_PK" PRIMARY KEY ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") + USING INDEX TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table QRTZ_SIMPROP_TRIGGERS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."QRTZ_SIMPROP_TRIGGERS" MODIFY ("SCHED_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_SIMPROP_TRIGGERS" MODIFY ("TRIGGER_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_SIMPROP_TRIGGERS" MODIFY ("TRIGGER_GROUP" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_SIMPROP_TRIGGERS" ADD CONSTRAINT "QRTZ_SIMPROP_TRIG_PK" PRIMARY KEY ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") + USING INDEX + TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table QRTZ_TRIGGERS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."QRTZ_TRIGGERS" MODIFY ("SCHED_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_TRIGGERS" MODIFY ("TRIGGER_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_TRIGGERS" MODIFY ("TRIGGER_GROUP" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_TRIGGERS" MODIFY ("JOB_NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_TRIGGERS" MODIFY ("JOB_GROUP" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_TRIGGERS" MODIFY ("TRIGGER_STATE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_TRIGGERS" MODIFY ("TRIGGER_TYPE" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_TRIGGERS" MODIFY ("START_TIME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."QRTZ_TRIGGERS" ADD CONSTRAINT "QRTZ_TRIGGERS_PK" PRIMARY KEY ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") + USING INDEX TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table QRTZ_BLOB_TRIGGERS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."QRTZ_BLOB_TRIGGERS" ADD CONSTRAINT "QRTZ_BLOB_TRIG_TO_TRIG_FK" FOREIGN KEY ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") + REFERENCES "ERIGHTS"."QRTZ_TRIGGERS" ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table QRTZ_CRON_TRIGGERS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."QRTZ_CRON_TRIGGERS" ADD CONSTRAINT "QRTZ_CRON_TRIG_TO_TRIG_FK" FOREIGN KEY ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") + REFERENCES "ERIGHTS"."QRTZ_TRIGGERS" ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table QRTZ_SIMPLE_TRIGGERS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."QRTZ_SIMPLE_TRIGGERS" ADD CONSTRAINT "QRTZ_SIMPLE_TRIG_TO_TRIG_FK" FOREIGN KEY ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") + REFERENCES "ERIGHTS"."QRTZ_TRIGGERS" ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table QRTZ_SIMPROP_TRIGGERS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."QRTZ_SIMPROP_TRIGGERS" ADD CONSTRAINT "QRTZ_SIMPROP_TRIG_TO_TRIG_FK" FOREIGN KEY ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") + REFERENCES "ERIGHTS"."QRTZ_TRIGGERS" ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table QRTZ_TRIGGERS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."QRTZ_TRIGGERS" ADD CONSTRAINT "QRTZ_TRIGGER_TO_JOBS_FK" FOREIGN KEY ("SCHED_NAME", "JOB_NAME", "JOB_GROUP") + REFERENCES "ERIGHTS"."QRTZ_JOB_DETAILS" ("SCHED_NAME", "JOB_NAME", "JOB_GROUP") ENABLE; diff --git a/e-rights-common/src/main/database/inital/V1.0.0/compile_all_objects_prc.sql b/e-rights-common/src/main/database/inital/V1.0.0/compile_all_objects_prc.sql new file mode 100644 index 0000000..d7a9234 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/compile_all_objects_prc.sql @@ -0,0 +1,45 @@ +create or replace procedure p_compile_all_objects is + v_sql varchar2(1000); +BEGIN + FOR cur_rec IN (SELECT object_name, + object_type, + DECODE(object_type, + 'PACKAGE', + 1, + 'PACKAGE BODY', + 2, + 2) AS recompile_order + FROM user_objects + WHERE object_type IN + ( + 'PACKAGE', 'PACKAGE BODY', + 'MATERIALIZED VIEW', + 'FUNCTION', 'PROCEDURE') + and object_name not in ('P_COMPILE_ALL_OBJECTS','PKG_LOG') + AND status != 'VALID' + ORDER BY 3) LOOP + BEGIN + IF (cur_rec.object_type = 'PACKAGE' or + cur_rec.object_type = 'FUNCTION' or + cur_rec.object_type = 'PROCEDURE' or + cur_rec.object_type = 'MATERIALIZED VIEW') THEN + v_sql := 'ALTER ' || cur_rec.object_type || ' ' || + cur_rec.object_name || ' COMPILE'; + -- dbms_output.put_line(v_sql); + ElSif cur_rec.object_type = 'PACKAGE BODY' then + v_sql := 'ALTER PACKAGE ' || cur_rec.object_name || ' COMPILE BODY'; + -- dbms_output.put_line(v_sql); + END IF; + EXECUTE IMMEDIATE v_sql; + pkg_log.debug(v_sql || '...ok.', 'p_compile_all_objects'); + EXCEPTION + WHEN OTHERS THEN + DBMS_OUTPUT.put_line(cur_rec.object_type || ' : ' || + cur_rec.object_name || sqlerrm); + pkg_log.error(cur_rec.object_type || ' : ' || cur_rec.object_name || + sqlerrm, + 'p_compile_all_objects'); + END; + END LOOP; +END; + diff --git a/e-rights-common/src/main/database/inital/V1.0.0/data.sql b/e-rights-common/src/main/database/inital/V1.0.0/data.sql new file mode 100644 index 0000000..71ce8be --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/data.sql @@ -0,0 +1,14 @@ +REM INSERTING into NOTIFICATION_TEMPLATES +SET DEFINE OFF; + +TRUNCATE TABLE NOTIFICATION_TEMPLATES; +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (1,'ROTATION','Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment on the post: ${JOB_ID_TO} has been created in e-Rights. The provisional start date for the new assignment is on the ${START_DATE} (The start date might be subject to changes if required).

    Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.

    ${MOVEMENT_FILE_ID}','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CREATE','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (2,'SECONDMENT','Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment on the post: ${JOB_ID_TO} has been created in e-Rights. The provisional start date for the new assignment is on the ${START_DATE} (The start date might be subject to changes if required).

    Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.

    ${MOVEMENT_FILE_ID}','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CREATE','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (3,'EOC','Your End of Contract file from ${MOVEMENT_FROM} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},


    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} has been created in e-Rights. The provisional end date of your assignment is on the ${ESTIMATED_END_DATE}.

    Please, log in to e-Rights using your EU Login and confirm your end of contract to initiate your entitlements.

    ${MOVEMENT_FILE_ID}','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CREATE','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (4,'ROTATION','Reminder: Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment on the post: ${JOB_ID_TO} is waiting for your confirmation in e-Rights. In the absence of your confirmation, your assignment will be considered withdrawn.

    Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.

    ${MOVEMENT_FILE_URL}','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','REMINDER_AFTER_CREATE','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (5,'SECONDMENT','Reminder: Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment on the post: ${JOB_ID_TO} is waiting for your confirmation in e-Rights. In the absence of your confirmation, your assignment will be considered withdrawn.

    Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.

    ${MOVEMENT_FILE_URL}','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','REMINDER_AFTER_CREATE','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (6,'EOC','Reminder: Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} is waiting for your confirmation in e-Rights. In the absence of your confirmation, your assignment will be considered withdrawn.

    Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.

    ${MOVEMENT_FILE_URL}','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','REMINDER_AFTER_CREATE','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (7,'ROTATION','Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},
    Your Movement file ${MOVEMENT_FILE_ID}<\a> from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your assignment ${JOB_ID_TO} has been withdrawn on your behalf.Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file
    ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your assignment ${JOB_ID_TO} has been withdrawn.','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','WITHDRAW','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (8,'SECONDMENT','Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your assignment ${JOB_ID_TO} has been withdrawn.','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','WITHDRAW','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (9,'EOC','Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} has been withdrawn.','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','WITHDRAW','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (10,'SYSTEM','Report with failed notification emails','The following email notifications are failed : ${MOVEMENT_FILES}','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','REPORT_FAILED_COMMS','Y'); diff --git a/e-rights-common/src/main/database/inital/V1.0.0/drop_all_objects_eRIghts.txt b/e-rights-common/src/main/database/inital/V1.0.0/drop_all_objects_eRIghts.txt new file mode 100644 index 0000000..9550f36 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/drop_all_objects_eRIghts.txt @@ -0,0 +1,66 @@ +--select user from dual +-- +-- Drop all objects from DB schema +-- +variable v_schema varchar2 + +--clear screen +set serveroutput on + +DECLARE + v_cmd varchar2(4000); +BEGIN + :v_schema := 'ERIGHTS'; + + dbms_output.put_line('Dropping all objects from schema '||:v_schema ); + dbms_output.new_line; + + FOR o IN (SELECT owner, object_name, object_type + FROM all_objects + WHERE owner = :v_schema + AND object_type IN + ('MATERIALIZED VIEW', 'TABLE', 'TABLE PARTITION', 'VIEW', + 'PACKAGE BODY', 'PACKAGE', 'PROCEDURE', 'FUNCTION', + 'SEQUENCE', 'SYNONYM') + ) + LOOP + BEGIN + IF o.object_type = 'TABLE' THEN + v_cmd := 'DROP ' ||o.object_type|| ' ' ||o.owner||'."' ||o.object_name|| '" CASCADE CONSTRAINTS'; + ELSE + v_cmd := 'DROP ' ||o.object_type|| ' ' ||o.owner||'."' ||o.object_name|| '"'; + END IF; + dbms_output.put_line(v_cmd); + EXECUTE IMMEDIATE v_cmd; + + EXCEPTION + WHEN OTHERS THEN + DBMS_OUTPUT.put_line('Error in: DROP ' ||o.object_type|| ' ' ||o.owner||'."' ||o.object_name || '" with ' ||sqlerrm); + END; + END LOOP; + + dbms_output.new_line; + dbms_output.put_line('Dropping jobs from schema '||:v_schema ); + dbms_output.new_line; + + BEGIN + FOR j IN ( select * + from all_scheduler_jobs + where owner = :v_schema + ) + LOOP + BEGIN +-- v_cmd := 'begin dbms_job.remove(' || j.job_name || '); commit; end;' --Only for DBMS Jobs + v_cmd := 'begin dbms_scheduler.drop_job( job_name => ''' || j.job_name || ''' ); commit; end;'; + dbms_output.put_line(v_cmd); + EXECUTE IMMEDIATE v_cmd; + EXCEPTION + WHEN OTHERS THEN + DBMS_OUTPUT.put_line('Error in: DROP job '||j.job_name||' with ' ||sqlerrm); + END; + END LOOP; + END; +end; +/ + + diff --git a/e-rights-common/src/main/database/inital/V1.0.0/eRights_jobs.sql b/e-rights-common/src/main/database/inital/V1.0.0/eRights_jobs.sql new file mode 100644 index 0000000..721677b --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/eRights_jobs.sql @@ -0,0 +1,29 @@ +BEGIN +dbms_scheduler.create_job('"J_CLEANUP_DB_LOG"', +job_type=>'PLSQL_BLOCK', job_action=> +'begin pkg_log.delete_old_debug_logs(trunc(sysdate) - 20); end;' +, number_of_arguments=>0, +start_date=>TO_TIMESTAMP_TZ('18-MAR-2014 11.40.53.760248000 AM +01:00','DD-MON-RRRR HH.MI.SSXFF AM TZR','NLS_DATE_LANGUAGE=english'), repeat_interval=> +'FREQ=DAILY; BYHOUR=0; BYMINUTE=0; BYSECOND=1;' +, end_date=>NULL, +job_class=>'"DEFAULT_JOB_CLASS"', enabled=>FALSE, auto_drop=>TRUE,comments=> +'Job that deletes debug logs older than 90 days from DB_LOG.' +); +dbms_scheduler.enable('"J_CLEANUP_DB_LOG"'); +COMMIT; +END; +/ + +begin + sys.dbms_scheduler.create_job(job_name => 'REFRESH_APP_MV', + job_type => 'PLSQL_BLOCK', + job_action => 'begin pr_refresh_objects; end;', + start_date => sysdate, + repeat_interval => 'Freq=MINUTELY;Interval=15', + end_date => to_date(null), + job_class => 'DEFAULT_JOB_CLASS', + enabled => true, + auto_drop => true, + comments => 'Job that refresh the all materialized views from T_REFRESH_OBJECTS table.'); +end; +/ \ No newline at end of file diff --git a/e-rights-common/src/main/database/inital/V1.0.0/eRights_materialized_views.sql b/e-rights-common/src/main/database/inital/V1.0.0/eRights_materialized_views.sql new file mode 100644 index 0000000..e3ffd2e --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/eRights_materialized_views.sql @@ -0,0 +1,194 @@ +-------------------------------------------------------- +-- DDL for Materialized View MV_ASSIGNMENTS_COM +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_ASSIGNMENTS_COM" ("SOJ_ID", "JOB_ID", "PER_ID", "TOJ_CD", "JOB_TYPE", "START_DATE", "END_DATE", "TYPE_OF_POST", "INS_CD", "CREATION_DATE", "MODIFICATION_DATE") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select * FROM MV_ASSIGNMENTS_COM@EASREFN.CC.CEC.EU.INT + +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_ASSIGNMENTS_COM" IS 'snapshot table for snapshot ERIGHTS.MV_ASSIGNMENTS_COM'; +-------------------------------------------------------- +-- DDL for Materialized View MV_ASSIGNMENTS_HIST_EEAS +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_ASSIGNMENTS_HIST_EEAS" ("SOJ_ID", "JCX_ID", "JOB_ID", "PER_ID", "TOJ_CD", "JOB_TYPE", "START_DATE", "END_DATE", "INS_CD", "CREATION_DATE", "MODIFICATION_DATE", "TYPE_OF_POST") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select * from mv_assignments_hist_eeas@EASREFN.CC.CEC.EU.INT + +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_ASSIGNMENTS_HIST_EEAS" IS 'snapshot table for snapshot ERIGHTS.MV_ASSIGNMENTS_HIST_EEAS'; +-------------------------------------------------------- +-- DDL for Materialized View MV_CITIES +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_CITIES" ("CITY_CODE", "COUNTRY_CODE", "CD_SYSPER", "CD2_SYSPER", "CD_SIRE", "NAP_CD", "RNG_ID", "DESCRIPTION_EN", "DESCRIPTION_FR", "LATITUDE", "LONGITUDE") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select * from MV_CITIES@EASREFN.CC.CEC.EU.INT; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_CITIES" IS 'snapshot table for snapshot E_RIGHTS.MV_CITIES'; +-------------------------------------------------------- +-- DDL for Materialized View MV_COUNTRIES +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_COUNTRIES" ("COUNTRY_CODE", "CD_ISO_A2", "CD_ISO_N3", "NAME_EN", "LONG_NAME_EN", "NAME_FR", "LONG_NAME_FR", "EU_STATE", "CAPITAL", "COUNTRY_PHONE_CODE", "CONTINENT_CODE", "STATUS", "CURRENCY_CODE", "CURRENCY_NAME") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select * from MV_COUNTRIES@EASREFN.CC.CEC.EU.INT + +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_COUNTRIES" IS 'snapshot table for snapshot ERIGHTS.MV_COUNTRIES'; +-------------------------------------------------------- +-- DDL for Materialized View MV_DELEGATION_STATUS +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_DELEGATION_STATUS" ("ALERT_STATUS_ID", "ORG_ID", "DESCRIPTION", "SEVERITY_LEVEL", "EVACUATION_LEVEL_CODE_ID", "EVACUATION_LEVEL_CODE") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS SELECT +* +FROM + MV_DELEGATION_STATUS@EASREFN.CC.CEC.EU.INT; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_DELEGATION_STATUS" IS 'snapshot table for snapshot ERIGHTS.MV_DELEGATION_STATUS'; +-------------------------------------------------------- +-- DDL for Materialized View MV_EMAILS +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_EMAILS" ("PER_ID", "START_DATE", "END_DATE", "CTX_CD", "EMAIL", "TADR_CD", "ADDRESS_TYPE", "ADDRESS_EMAIL_LINK", "INS_CD", "CREATION_DATE", "MODIFICATION_DATE") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select * from +( +select * from MV_EMAILS_COM@EASREFN.CC.CEC.EU.INT where tadr_cd = 11 +UNION +select * from MV_EMAILS_EEAS@EASREFN.CC.CEC.EU.INT where tadr_cd = 11 +); + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_EMAILS" IS 'snapshot table for snapshot ERIGHTS.MV_EMAILS'; +-------------------------------------------------------- +-- DDL for Materialized View MV_ENTITIES +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES" ("ORG_ID", "ORG_ID_PARENT", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "SORT_ORDER", "ORG_DESC", "ORG_DESC_FRE", "CITY_CODE", "ENG_CITY", "FRA_CITY", "COUNTRY_ID", "ENG_COUNTRY", "FRA_COUNTRY", "IS_DELEGATION", "TOR_ID", "TYPEOFENTITY_NAME", "DELEGATION_NAME", "DEL_ID", "ALERT_STATUS_ID", "ALERT_STATUS_CODE", "SEVERITY_LEVEL", "REGION_ID", "REGION_CODE", "FRA_REGION_DESC", "ENG_REGION_DESC", "IS_HQ") +TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select * FROM MV_ENTITIES@EASREFN.CC.CEC.EU.INT + +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES" IS 'snapshot table for snapshot ERIGHTS.MV_ENTITIES'; +-------------------------------------------------------- +-- DDL for Materialized View MV_ENTITIES_HIST +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES_HIST" ("HORG_ID", "ORG_ID", "ORG_ID_PARENT", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "ORG_DESC", "FR_ORG_DESC", "CITY_CODE", "ENG_CITY", "FRA_CITY", "COUNTRY_ID", "ENG_COUNTRY", "FRA_COUNTRY", "IS_DELEGATION", "TOR_ID", "TYPEOFENTITY_NAME", "DELEGATION_NAME", "DEL_ID", "ALERT_STATUS_ID", "ALERT_STATUS_CODE", "SEVERITY_LEVEL", "START_DATE", "END_DATE", "SHORT_CODE", "SORT_ORDER", "HIERARCHY_LEVEL", "OFFICIAL") +TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select ent.* from mv_entities_hist@EASREFN.CC.CEC.EU.INT ent +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES_HIST" IS 'snapshot table for snapshot ERIGHTS.MV_ENTITIES_HIST'; +-------------------------------------------------------- +-- DDL for Materialized View MV_ENTITIES_HIST_COM +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES_HIST_COM" ("ORG_ID", "ORG_ID_PARENT", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "ORG_DESC", "ORG_DESC_FRE", "CITY_CODE", "ENG_CITY", "FRA_CITY", "COUNTRY_ID", "ENG_COUNTRY", "FRA_COUNTRY", "TOR_ID", "TYPEOFENTITY_NAME", "START_DATE", "END_DATE") +TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select ent.* from mv_entities_hist_com@EASREFN.CC.CEC.EU.INT ent; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES_HIST_COM" IS 'snapshot table for snapshot ERIGHTS.mv_entities_hist_com'; +-------------------------------------------------------- +-- DDL for Materialized View MV_ENTITIES_TYPES +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES_TYPES" ("ORG_ID", "ID", "CODE", "IS_ACTIVE", "PRIORITY", "CREATION_USER", "CREATION_DATE", "MODIFICATION_USER", "MODIFICATION_DATE", "EN_NAME", "FR_NAME") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select * from MV_ENTITIES_TYPES@EASREFN.CC.CEC.EU.INT + +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES_TYPES" IS 'snapshot table for snapshot ERIGHTS.MV_ENTITIES_TYPES'; +-------------------------------------------------------- +-- DDL for Materialized View MV_JOBS_HIST_EEAS +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_JOBS_HIST_EEAS" ("JCX_ID", "JOB_ID", "SP2_DATE_CREAT", "SP2_DATE_MODIF", "SP2_USER_CREAT", "SP2_USER_MODIF", "SP2_CREATION_DATE", "SP2_MODIFICATION_DATE", "INS_CD", "ORG_ID", "START_DATE", "END_DATE", "JCX_ID_REMPLACE", "DECISION_COMM", "JOB_ID_ORIGINE", "RESPONSIBLE", "HEAD_OF_ENTITY", "COMMENTS", "CITY_CODE", "CITY_NAME", "COUNTRY_CODE", "COUNTRY_NAME", "LOCATION_CITY_CODE", "LOCATION_CITY_NAME", "LOCATION_COUNTRY_CODE", "LOCATION_COUNTRY_NAME", "TFN_ID", "JOB_TYPE", "JOB_STATUS", "CGR_CD", "EXCLU_GSYS", "EXCLU_GSYS_INTERNE", "EXCLU_GSYS_COMMENT", "ORG_OFFICIEL", "MOBILITE_OBLIGATOIRE", "TABL_EFFECTIFS_UNIQ", "CCE_ID_RESTYPE", "PERSONNEL_TYPE_ID", "PERSONNEL_TYPE_DESC", "BUDGETARY_LINE", "DATE_CREAT", "USER_CREAT", "DATE_MODIF", "USER_MODIF", "DG_RESP_ID", "DG_RESP_CODE") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select * from mv_jobs_hist_eeas@EASREFN.CC.CEC.EU.INT + +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_JOBS_HIST_EEAS" IS 'snapshot table for snapshot ERIGHTS.MV_JOBS_HIST_EEAS'; +-------------------------------------------------------- +-- DDL for Materialized View MV_PERSONS_COM +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_PERSONS_COM" ("PER_ID", "NO_SYSPER", "TITLE", "SURNAME", "BIRTH_NAME", "FIRST_NAME", "FIRST_NAME2", "FIRST_NAME3", "FIRST_NAME4", "GENRE", "DATE_OF_BIRTH", "PLACE_OF_BIRTH", "COUNTRY_OF_BIRTH", "CREATION_DATE", "MODIFICATION_DATE", "USERID", "MONIKER", "DOMAINE", "DISPLAY_NAME", "COMPLET_NAME", "JOB_ID", "TOJ_CD", "JOB_TYPE", "JOB_START_DATE", "JOB_END_DATE", "INS_CD", "EMAIL", "LST_CD", "LST_CODE", "LST_BEG_DATE", "LST_ASS_DATE", "LST_END_DATE", "CGR_CD", "ORG_ID", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "TOR_ID", "TYPEOFENTITY_NAME", "DELEGATION_NAME", "DEL_ID", "JOB_TITLE", "JOB_NAME", "JOB_NAME_DIRECTORY", "JOB_PURPOSE", "RESPONSIBLE", "HEAD_OF_ENTITY") +TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select * FROM MV_PERSONS_COM@EASREFN.CC.CEC.EU.INT + +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_PERSONS_COM" IS 'snapshot table for snapshot ERIGHTS.MV_PERSONS_COM'; +-------------------------------------------------------- +-- DDL for Materialized View MV_PERSONS_EEAS +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_PERSONS_EEAS" ("PER_ID", "NO_SYSPER", "TITLE", "SURNAME", "BIRTH_NAME", "FIRST_NAME", "FIRST_NAME2", "FIRST_NAME3", "FIRST_NAME4", "GENRE", "DATE_OF_BIRTH", "PLACE_OF_BIRTH", "COUNTRY_OF_BIRTH", "CREATION_DATE", "MODIFICATION_DATE", "USERID", "MONIKER", "DOMAIN", "DISPLAY_NAME", "COMPLET_NAME", "DISPLAY_SURNAME", "DISPLAY_FIRST_NAME", "JCX_ID", "JOB_ID", "TOJ_CD", "JOB_TYPE", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "INS_CD", "EMAIL", "WORK_PATTERN_DATE_FROM", "WORK_PATTERN_DATE_TO", "WORK_PATTERN_DESC", "LST_CD", "LST_CODE", "LST_BEG_DATE", "LST_ASS_DATE", "LST_END_DATE", "CGR_CD", "ORG_ID", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "ORG_DESC", "TOR_ID", "TYPEOFENTITY_NAME", "DEL_ID", "DELEGATION_NAME", "JOB_TITLE", "JOB_NAME", "JOB_NAME_DIRECTORY", "JOB_PURPOSE", "RESPONSIBLE", "HEAD_OF_ENTITY") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND +AS select * FROM MV_PERSONS_EEAS@EASREFN.CC.CEC.EU.INT +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_PERSONS_EEAS" IS 'snapshot table for snapshot ERIGHTS.MV_PERSONS_EEAS'; +-------------------------------------------------------- +-- DDL for Materialized View MV_RECRUITMENT_PLACES +-------------------------------------------------------- + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_RECRUITMENT_PLACES" ("PER_ID", "RECR_INS_CD", "DT_RECR", "LIEU_RECR", "RECR_CODE_POSTAL", "RECR_PAY_CD", "INS_CD", "DT_CRE", "DT_MAJ") + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS select * from MV_RECRUITMENT_PLACES@EASREFN.CC.CEC.EU.INT where lieu_recr not like '%UNKNOWN%' + +; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_RECRUITMENT_PLACES" IS 'snapshot table for snapshot ERIGHTS.MV_RECRUITMENT_PLACES'; diff --git a/e-rights-common/src/main/database/inital/V1.0.0/eRights_pkg_LOG.sql b/e-rights-common/src/main/database/inital/V1.0.0/eRights_pkg_LOG.sql new file mode 100644 index 0000000..58f87b7 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/eRights_pkg_LOG.sql @@ -0,0 +1,166 @@ +-------------------------------------------------------- +-- DDL for Package PKG_LOG +-------------------------------------------------------- + + CREATE OR REPLACE EDITIONABLE PACKAGE "ERIGHTS"."PKG_LOG" IS + + -- Author : ILIESSU + -- Created : 10/5/2010 2:25:28 PM + -- Purpose : logging + -- todo : add oracle session log-priority attribute (I,D,E,F). + -- updated: 19/08/2020 ipatelav add shrink method to release the empty space + /** + * saves p_message debug message. + **/ + PROCEDURE DEBUG(P_MESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2); + + /** + * saves p_message error message. + **/ + PROCEDURE ERROR(P_ERRORMESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2); + + /** + * saves p_message WARNING message. + **/ + PROCEDURE WARNING(P_ERRORMESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2); + + /** + * deletes log messages older than given date. + * only deletes the debug messages. + * if null date is passed it deletes for 90 days. + **/ + PROCEDURE DELETE_OLD_DEBUG_LOGS(P_DATE DATE); + + --PROCEDURE DELETE_OLD_SYNC_LOG; + + /** + * Skirinks tables - release the space. + **/ + PROCEDURE SHRINK_TABLE(p_table_name VARCHAR2); + +END PKG_LOG; + +/ +create or replace PACKAGE BODY PKG_LOG IS + + L_DEBUGENABLED BOOLEAN := TRUE; + + /** + * saves p_message debug message. + **/ + PROCEDURE DEBUG(P_MESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2) AS + PRAGMA AUTONOMOUS_TRANSACTION; + BEGIN + IF (L_DEBUGENABLED) THEN + INSERT INTO DB_LOG + (ID, PRIORITY, PROGRAM, MESSAGE, MOMENTUM) + VALUES + (SEQ_DB_LOG.NEXTVAL, 'D', P_PROGRAMNAME, P_MESSAGE, SYSDATE); + COMMIT; + END IF; + END; + + /** + * saves p_message error message. + **/ + PROCEDURE ERROR(P_ERRORMESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2) AS + PRAGMA AUTONOMOUS_TRANSACTION; + BEGIN + IF (L_DEBUGENABLED) THEN + INSERT INTO DB_LOG + (ID, PRIORITY, PROGRAM, MESSAGE, MOMENTUM) + VALUES + (SEQ_DB_LOG.NEXTVAL, 'E', P_PROGRAMNAME, P_ERRORMESSAGE, SYSDATE); + COMMIT; + END IF; + END; + + /** + * saves p_message error message. + **/ + PROCEDURE WARNING(P_ERRORMESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2) AS + PRAGMA AUTONOMOUS_TRANSACTION; + BEGIN + IF (L_DEBUGENABLED) THEN + INSERT INTO DB_LOG + (ID, PRIORITY, PROGRAM, MESSAGE, MOMENTUM) + VALUES + (SEQ_DB_LOG.NEXTVAL, 'W', P_PROGRAMNAME, P_ERRORMESSAGE, SYSDATE); + COMMIT; + END IF; + END; + + PROCEDURE DELETE_OLD_DEBUG_LOGS(P_DATE DATE) AS + V_DATE DATE; + V_SYSDATE DATE; + N_DAYS PLS_INTEGER := 90; + BEGIN + SELECT TRUNC(SYSDATE) INTO V_SYSDATE FROM DUAL; + IF (P_DATE IS NULL) THEN + SELECT (TRUNC(SYSDATE) - N_DAYS) INTO V_DATE FROM DUAL; + ELSE + SELECT TRUNC(P_DATE) INTO V_DATE FROM DUAL; + END IF; + + DELETE FROM DB_LOG D WHERE TRUNC(D.MOMENTUM) <= V_DATE AND D.PRIORITY = 'D'; + + PKG_LOG.DEBUG(SQL%ROWCOUNT || + ' records were deleted from db_log. momentum less then ' || + V_DATE, + 'DELETE_LOGS'); + COMMIT; + + SHRINK_TABLE('DB_LOG'); + + END; +/* +procedure DELETE_OLD_SYNC_LOG as + begin + + for rec in (select max(creation_date) max_creation_date ,loc_obj_foreign_id,SYNC_STATUS + from SYNC_TRANSACTION_LOG + group by loc_obj_foreign_id,SYNC_STATUS) loop + + delete from SYNC_TRANSACTION_LOG + where creation_date < rec.max_creation_date + and loc_obj_foreign_id = rec.loc_obj_foreign_id + and SYNC_STATUS = rec.SYNC_STATUS; + + end loop; + + commit; + + end; + */ + /** + * release space after deleting rows table's rows + **/ + PROCEDURE SHRINK_TABLE(p_table_name VARCHAR2) + IS + l_start_time NUMBER; + l_end_time NUMBER; + BEGIN + PKG_LOG.DEBUG('start shrinking ' || p_table_name + , + 'PKG_LOG.SHRINK_TABLE'); + + l_start_time := DBMS_UTILITY.get_time; + + EXECUTE IMMEDIATE 'alter table ' || p_table_name || ' enable row movement' ; + EXECUTE IMMEDIATE 'alter table ' || p_table_name || ' shrink space cascade' ; + + l_end_time := DBMS_UTILITY.get_time; + + PKG_LOG.DEBUG( 'end shrinking ' || p_table_name || + ' Elapsed Time (hsecs): ' || (l_end_time - l_start_time) + , + 'PKG_LOG.SHRINK_TABLE'); + EXCEPTION + WHEN OTHERS THEN + PKG_LOG.ERROR('failed to shrink: ' ||p_table_name || ' ' || SQLERRM, + 'PKG_LOG.SHRINK_TABLE'); + + END; +BEGIN + L_DEBUGENABLED := TRUE; +END PKG_LOG; \ No newline at end of file diff --git a/e-rights-common/src/main/database/inital/V1.0.0/eRights_pr_refresh_objects.sql b/e-rights-common/src/main/database/inital/V1.0.0/eRights_pr_refresh_objects.sql new file mode 100644 index 0000000..d900a31 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/eRights_pr_refresh_objects.sql @@ -0,0 +1,70 @@ +create or replace PROCEDURE PR_REFRESH_OBJECTS AS + v_sql_compile varchar2(500); + v_SQLERRM varchar2(4000); + l_refresh_start_time number; + l_refresh_end_time number; +BEGIN + -- DBMS_MVIEW.REFRESH('CAL_MONTH_SALES_MV', method => '?', + -- atomic_refresh => FALSE, out_of_place => TRUE); + + for cur in (select * from t_refresh_objects o where o.system = 'EASREFN' order by o.priority) loop + + for cur_easrefn in (select app.easrefn_object_name, + e.is_refreshed easrefn_is_refreshed, + e.refresh_date easrefn_refresh_date + from t_app_easrefn_objects app, + t_refresh_objects@EASREFN.CC.CEC.EU.INT e + where app.easrefn_object_name = e.object_name + and app.app_object_name_id = cur.id + order by app.priority) loop + + if ((upper(cur.is_refreshed) = 'N' )or + (cur_easrefn.easrefn_is_refreshed = 'Y' and + cur.refresh_date < cur_easrefn.easrefn_refresh_date)) then + + begin + + v_sql_compile := 'ALTER MATERIALIZED VIEW ' || + cur.app_object_name || ' COMPILE'; + execute immediate v_sql_compile; + l_refresh_start_time := DBMS_UTILITY.get_time; + dbms_mview.refresh(cur.app_object_name, 'C'); + + --DBMS_MVIEW.REFRESH(cur.app_object_name, method => 'C', + -- atomic_refresh => FALSE, out_of_place => TRUE); + l_refresh_end_time := DBMS_UTILITY.get_time; + + update t_refresh_objects l + set l.is_refreshed = 'Y', + l.refresh_date = sysdate, + l.status = 'OK' + where l.app_object_name = cur.app_object_name; + + pkg_log.debug(cur.app_object_name || + ' has been refreshed succesfully.' || ' Elapsed time: '|| to_char((l_refresh_end_time - l_refresh_start_time)/100) ||'s', + 'pr_refresh_objects'); + + exception + when others then + v_sqlerrm := sqlerrm; + update t_refresh_objects l + set l.is_refreshed = 'n', + l.refresh_date = sysdate, + l.status = v_sqlerrm + where l.app_object_name = cur.app_object_name; + pkg_log.ERROR(cur.app_object_name || + ' has encountered error during refresh ' || + v_sqlerrm, + 'pr_refresh_objects'); + + end; + commit; + goto next_app_view; + end if; + end loop; + + <> + null; + end loop; + +END PR_REFRESH_OBJECTS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/inital/V1.0.0/eRights_reference_data.sql b/e-rights-common/src/main/database/inital/V1.0.0/eRights_reference_data.sql new file mode 100644 index 0000000..d225ed4 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/eRights_reference_data.sql @@ -0,0 +1,26 @@ +--REM INSERTING into ERIGHTS.MOVEMENT_TYPES +--SET DEFINE OFF; +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'HQ','DEL','HQ-DEL',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'HQ','DEL EU','HQ-DEL EU',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL','HQ','DEL-HQ',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL','DEL','DEL-DEL',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL','DEL EU','DEL-DEL EU',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL EU','HQ','DEL EU-HQ',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL EU','DEL','DEL EU-DEL',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL EU','DEL EU','DEL EU-DEL EU',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'PoR','HQ','PoR-HQ',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'PoR','DEL','PoR-DEL',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'PoR','DEL EU','PoR-DEL EU',1); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'HQ','Other','HQ-Other',2); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL','Other','DEL-Other',2); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL EU','PoOrg','DEL EU-PoOrg',3); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'HQ','PoOrg','HQ-PoOrg',3); +Insert into ERIGHTS.MOVEMENT_TYPES (MOVEMENT_TYPE_ID,CODE_FROM,CODE_TO,MOVEMENT_TYPE,CONTEXT_ID) values (SEQ_MOVEMENT_TYPES.nextval,'DEL','PoOrg','DEL-PoOrg',3); +commit; + +--REM INSERTING into ERIGHTS.MOVEMENT_CONTEXT +--SET DEFINE OFF; +Insert into ERIGHTS.MOVEMENT_CONTEXT (MOVEMENT_CONTEXT_ID,NAME,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (SEQ_MOVEMENT_CONTEXT.nextval,'ROTATION',sysdate,90284714,90284714,sysdate); +Insert into ERIGHTS.MOVEMENT_CONTEXT (MOVEMENT_CONTEXT_ID,NAME,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (SEQ_MOVEMENT_CONTEXT.nextval,'SECONDMENT',sysdate,90284714,90284714,sysdate); +Insert into ERIGHTS.MOVEMENT_CONTEXT (MOVEMENT_CONTEXT_ID,NAME,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (SEQ_MOVEMENT_CONTEXT.nextval,'EOC',sysdate,90284714,90284714,sysdate); +commit; diff --git a/e-rights-common/src/main/database/inital/V1.0.0/eRights_seq.sql b/e-rights-common/src/main/database/inital/V1.0.0/eRights_seq.sql new file mode 100644 index 0000000..af8bdfa --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/eRights_seq.sql @@ -0,0 +1,35 @@ +-------------------------------------------------------- +-- DDL for Sequence SEQ_DB_LOG +-------------------------------------------------------- + + CREATE SEQUENCE "ERIGHTS"."SEQ_DB_LOG" MINVALUE 1 MAXVALUE 9999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ; +-------------------------------------------------------- +-- DDL for Sequence SEQ_MF_AIPN_ATTACHMENTS +-------------------------------------------------------- + + CREATE SEQUENCE "ERIGHTS"."SEQ_MF_AIPN_ATTACHMENTS" MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ; +-------------------------------------------------------- +-- DDL for Sequence SEQ_MOVEMENT_CONTEXT +-------------------------------------------------------- + + CREATE SEQUENCE "ERIGHTS"."SEQ_MOVEMENT_CONTEXT" MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ; +-------------------------------------------------------- +-- DDL for Sequence SEQ_MOVEMENT_FILES +-------------------------------------------------------- + + CREATE SEQUENCE "ERIGHTS"."SEQ_MOVEMENT_FILES" MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ; +-------------------------------------------------------- +-- DDL for Sequence SEQ_MOVEMENT_TYPES +-------------------------------------------------------- + + CREATE SEQUENCE "ERIGHTS"."SEQ_MOVEMENT_TYPES" MINVALUE 1 MAXVALUE 999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ; +-------------------------------------------------------- +-- DDL for Sequence SEQ_NOTIFICATION_TEMPLATES +-------------------------------------------------------- + + CREATE SEQUENCE "ERIGHTS"."SEQ_NOTIFICATION_TEMPLATES" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ; +-------------------------------------------------------- +-- DDL for Sequence SEQ_NOTIFICATIONS +-------------------------------------------------------- + + CREATE SEQUENCE "ERIGHTS"."SEQ_NOTIFICATIONS" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ; diff --git a/e-rights-common/src/main/database/inital/V1.0.0/eRights_tables.sql b/e-rights-common/src/main/database/inital/V1.0.0/eRights_tables.sql new file mode 100644 index 0000000..67cef19 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/eRights_tables.sql @@ -0,0 +1,374 @@ +-------------------------------------------------------- +-- DDL for Table DB_LOG +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."DB_LOG" + ( "ID" NUMBER, + "PRIORITY" CHAR(1 BYTE), + "PROGRAM" VARCHAR2(1000 BYTE), + "MESSAGE" VARCHAR2(4000 BYTE), + "MOMENTUM" DATE DEFAULT SYSDATE + ) SEGMENT CREATION IMMEDIATE + TABLESPACE "ERIGHTS" ; + + COMMENT ON TABLE "ERIGHTS"."DB_LOG" IS 'database log table.'; +-------------------------------------------------------- +-- DDL for Table MOVEMENT_CONTEXT +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."MOVEMENT_CONTEXT" + ( "MOVEMENT_CONTEXT_ID" NUMBER, + "NAME" VARCHAR2(128 BYTE), + "CREATED_AT" DATE, + "CREATED_BY" NUMBER, + "UPDATED_BY" NUMBER, + "UPDATED_AT" DATE + ) + TABLESPACE "ERIGHTS" ; + + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_CONTEXT"."MOVEMENT_CONTEXT_ID" IS 'Unique Identifier of the Movement Context - value generated by seq'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_CONTEXT"."NAME" IS ' ROTATION provides support to Rotation Exercises (Rotation to EU Delegations); SECONDMENT - provides support to Secondment of the EEAS/EU Commission staff to other Offices/Delegations; EOC - t provides support to Termination of the service (End-of-Contract) due to a specific reason ( e.g. Retirement, Resignation) '; + COMMENT ON TABLE "ERIGHTS"."MOVEMENT_CONTEXT" IS 'MOVEMENT TYPE CONTEXT '; +-------------------------------------------------------- +-- DDL for Table MOVEMENT_FILES +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."MOVEMENT_FILES" + ( "MOVEMENT_FILE_ID" NUMBER, + "FILE_ID" VARCHAR2(255 CHAR), + "PER_ID" NUMBER, + "CONTEXT_ID" NUMBER, + "PRIORITY" CHAR(1 BYTE), + "YEAR" NUMBER, + "MOVEMENT_TYPE_ID" NUMBER, + "JOB_ID_TO" NUMBER, + "NON_FAMILY_POSTING" CHAR(1 BYTE), + "CHILD_FREE_POSTING" CHAR(1 BYTE), + "START_DATE" DATE, + "ESTIMATED_END_DATE" DATE, + "STATE" VARCHAR2(16 CHAR), + "BUDGET_LINE" VARCHAR2(256 CHAR), + "EOD_DATE" DATE, + "ORG_ID_FROM" NUMBER, + "ORG_ID_TO" NUMBER, + "JOB_ID_FROM" NUMBER, + "ASSIGN_START_DATE_FROM" DATE, + "ASSIGN_END_DATE_FROM" DATE, + "ASSIGN_START_DATE_TO" DATE, + "ASSIGN_END_DATE_TO" DATE, + "JOB_FROM_START_DATE" DATE, + "ORG_CD_FROM" VARCHAR2(255 CHAR), + "ORG_CD_TO" VARCHAR2(255 CHAR), + "SM_ID" RAW(16), + "AIPN_FILE_ID" VARCHAR2(255 CHAR), + "CREATED_AT" DATE, + "CREATED_BY" NUMBER, + "UPDATED_BY" NUMBER, + "UPDATED_AT" DATE, + "AIPN_NOTIF_DATE" DATE, + "WITHOUT_RIGHTS" CHAR(1 BYTE), + "REASON_EOC" VARCHAR2(3000 CHAR), + "MOVEMENT_NR" NUMBER(10,0), + "AIPN_DOCUMENT_ID" VARCHAR2(255 CHAR), + "REASON_DELETION" VARCHAR2(3000 CHAR), + "COUNTRY_CODE_TO" VARCHAR2(3 CHAR), + "CITY_CODE_TO" VARCHAR2(3 CHAR), + "EVACUATION_STATUS" CHAR(1 BYTE), + "NOTIFICATION_ENTITY_ID" NUMBER + ) TABLESPACE "ERIGHTS" ; + + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."MOVEMENT_FILE_ID" IS 'Movement File unique indentifier'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."FILE_ID" IS 'Unique code for the movement file - concatenated string defined by the system in the following format: +MovementContext + "-" +MovementYear + "-"+ MovementFileNo'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."PER_ID" IS 'Person ID, unique identifier of the Staff Member (or any member of his/her family composition).'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."CONTEXT_ID" IS 'Reference to the Movement Context'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."PRIORITY" IS 'Priority represents the flag of importance for prioritizing the administration of the rights for the Movement File.'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."YEAR" IS 'Movement year represents the calendar year (YYYY) for the selected Movement Context. +The value is inserted by the User.'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."MOVEMENT_TYPE_ID" IS ' --- TBD--'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."JOB_ID_TO" IS 'Reference to the future job'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."NON_FAMILY_POSTING" IS 'Is a flag indicating whether the job allows the job holder to consider taking his/her family members (FALSE) or not (TRUE).'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."CHILD_FREE_POSTING" IS 'Is a flag indicating whether the job allows the job holder to consider taking his/her children (FALSE) or not (TRUE).'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."START_DATE" IS 'Start Date of the future assignament'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."ESTIMATED_END_DATE" IS 'Estimated end date of the future assignement'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."STATE" IS 'Movement File Current status is an overall status (State Machine) that represents if the Movement File is active or not.'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."BUDGET_LINE" IS ' +Budget line: is retrieved from EASREFN (source: HR Delegation) for the provided Job No + is (optionally and sometimes) inserted manually by the User for Movement context = SECONDMENT +'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."EOD_DATE" IS 'End of contract date '; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."ORG_ID_FROM" IS 'The Organisational Entity of the user current aasignement +'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."ORG_ID_TO" IS 'The Organisational Entity of the user future aasignement'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."JOB_ID_FROM" IS 'Current job of the person '; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."ASSIGN_START_DATE_FROM" IS 'Current assignement start date'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."ASSIGN_END_DATE_FROM" IS 'Current assignement end date'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."ASSIGN_START_DATE_TO" IS 'Future assignement start date'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."ASSIGN_END_DATE_TO" IS 'Future assignement end date'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."JOB_FROM_START_DATE" IS '? maybe'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."ORG_CD_FROM" IS 'Current organization code'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."ORG_CD_TO" IS 'Future organization code'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."AIPN_NOTIF_DATE" IS 'AIPN Notification date'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."WITHOUT_RIGHTS" IS 'Without rights for EOC'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."REASON_EOC" IS 'Reasons for EOC'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."MOVEMENT_NR" IS 'Nr of the movement file per year and context'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."COUNTRY_CODE_TO" IS 'Country code coming from destination org_id or selected by the user if the delegaton is under evacuation +'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."CITY_CODE_TO" IS 'City code comming from destination rg_id or selected by the user if the delegation is under evacuation'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_FILES"."EVACUATION_STATUS" IS 'Flag indicating if the delgation is under evacuation'; +-------------------------------------------------------- +-- DDL for Table MOVEMENT_TYPES +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."MOVEMENT_TYPES" + ( "MOVEMENT_TYPE_ID" NUMBER, + "CODE_FROM" VARCHAR2(16 BYTE), + "CODE_TO" VARCHAR2(16 BYTE), + "MOVEMENT_TYPE" VARCHAR2(33 BYTE), + "CONTEXT_ID" NUMBER + )TABLESPACE "ERIGHTS" ; + + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_TYPES"."MOVEMENT_TYPE_ID" IS 'Unique identifier for the movement type'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_TYPES"."CODE_FROM" IS 'Movement From'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_TYPES"."CODE_TO" IS 'Movement to'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_TYPES"."MOVEMENT_TYPE" IS 'Movement type - From-To'; + COMMENT ON COLUMN "ERIGHTS"."MOVEMENT_TYPES"."CONTEXT_ID" IS 'Reference to te movement context'; +-------------------------------------------------------- +-- DDL for Table USER_PREFERENCES +-------------------------------------------------------- + + -------------------------------------------------------- +-- DDL for Table USER_PREFERENCES +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."USER_PREFERENCES" + ( "PER_ID" NUMBER(8,0), + "LOCALE" VARCHAR2(5 BYTE), + "PAGE_PATH" VARCHAR2(250 BYTE), + "PREFERENCES" CLOB, + "CREATED_AT" DATE, + "CREATED_BY" NUMBER, + "UPDATED_BY" NUMBER, + "UPDATED_AT" DATE + ) + TABLESPACE "ERIGHTS" + LOB ("PREFERENCES") STORE AS SECUREFILE ( + TABLESPACE "ERIGHTS" ) ; + + +-------------------------------------------------------- +-- DDL for Table T_REFRESH_OBJECTS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."T_REFRESH_OBJECTS" + ( "ID" NUMBER(*,0), + "APP_OBJECT_NAME" VARCHAR2(256 BYTE), + "PRIORITY" NUMBER(*,0), + "IS_REFRESHED" CHAR(1 BYTE) DEFAULT 'N', + "STATUS" VARCHAR2(4000 BYTE), + "REFRESH_DATE" DATE DEFAULT SYSDATE, + "SYSTEM" VARCHAR2(10 BYTE) + ) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table T_APP_EASREFN_OBJECTS +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."T_APP_EASREFN_OBJECTS" + ( "APP_OBJECT_NAME_ID" NUMBER(*,0), + "EASREFN_OBJECT_NAME" VARCHAR2(256 BYTE), + "PRIORITY" NUMBER(*,0) + ) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_DB_LOG +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_DB_LOG" ON "ERIGHTS"."DB_LOG" ("ID") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_MOCO +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_MOCO" ON "ERIGHTS"."MOVEMENT_CONTEXT" ("MOVEMENT_CONTEXT_ID") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_MOFI +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_MOFI" ON "ERIGHTS"."MOVEMENT_FILES" ("MOVEMENT_FILE_ID") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index UK_MOFI_FILE_ID +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."UK_MOFI_FILE_ID" ON "ERIGHTS"."MOVEMENT_FILES" ("FILE_ID") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_MOTY +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_MOTY" ON "ERIGHTS"."MOVEMENT_TYPES" ("MOVEMENT_TYPE_ID") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- + +-------------------------------------------------------- +-- Constraints for Table DB_LOG +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."DB_LOG" MODIFY ("ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."DB_LOG" ADD CONSTRAINT "CKC_PRIORITY_DB_LOG" CHECK (PRIORITY is null or (PRIORITY in ('D','I','E','F','W'))) ENABLE; + ALTER TABLE "ERIGHTS"."DB_LOG" ADD CONSTRAINT "PK_DB_LOG" PRIMARY KEY ("ID") + USING INDEX + TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table MOVEMENT_CONTEXT +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."MOVEMENT_CONTEXT" MODIFY ("NAME" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."MOVEMENT_CONTEXT" ADD CONSTRAINT "PK_MOCO" PRIMARY KEY ("MOVEMENT_CONTEXT_ID") + USING INDEX TABLESPACE "ERIGHTS" ENABLE; + ALTER TABLE "ERIGHTS"."MOVEMENT_CONTEXT" MODIFY ("MOVEMENT_CONTEXT_ID" NOT NULL ENABLE); +-------------------------------------------------------- +-- Constraints for Table MOVEMENT_FILES +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."MOVEMENT_FILES" ADD CONSTRAINT "PK_MOFI" PRIMARY KEY ("MOVEMENT_FILE_ID") + USING INDEX TABLESPACE "ERIGHTS" ENABLE; + ALTER TABLE "ERIGHTS"."MOVEMENT_FILES" ADD CONSTRAINT "UK_MOFI" UNIQUE ("FILE_ID") + USING INDEX ENABLE; + ALTER TABLE "ERIGHTS"."MOVEMENT_FILES" MODIFY ("MOVEMENT_TYPE_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."MOVEMENT_FILES" MODIFY ("CONTEXT_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."MOVEMENT_FILES" MODIFY ("MOVEMENT_FILE_ID" NOT NULL ENABLE); +-------------------------------------------------------- +-- Constraints for Table MOVEMENT_TYPES +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."MOVEMENT_TYPES" ADD CONSTRAINT "PK_MOTY" PRIMARY KEY ("MOVEMENT_TYPE_ID") + USING INDEX TABLESPACE "ERIGHTS" ENABLE; + ALTER TABLE "ERIGHTS"."MOVEMENT_TYPES" MODIFY ("CONTEXT_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."MOVEMENT_TYPES" MODIFY ("MOVEMENT_TYPE_ID" NOT NULL ENABLE); +-------------------------------------------------------- +-- Constraints for Table USER_PREFERENCES +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for Index PK_USER_PREFERENCES +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_USER_PREFERENCES" ON "ERIGHTS"."USER_PREFERENCES" ("PER_ID") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- Constraints for Table USER_PREFERENCES +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."USER_PREFERENCES" MODIFY ("PER_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."USER_PREFERENCES" MODIFY ("CREATED_AT" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."USER_PREFERENCES" MODIFY ("CREATED_BY" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."USER_PREFERENCES" ADD CONSTRAINT "PK_USER_PREFERENCES" PRIMARY KEY ("PER_ID") + USING INDEX TABLESPACE "ERIGHTS" ENABLE; +-------------------------------------------------------- +-- Constraints for Table T_REFRESH_OBJECTS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."T_REFRESH_OBJECTS" MODIFY ("ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."T_REFRESH_OBJECTS" MODIFY ("SYSTEM" NOT NULL ENABLE); +-------------------------------------------------------- +-- Constraints for Table T_APP_EASREFN_OBJECTS +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."T_APP_EASREFN_OBJECTS" MODIFY ("APP_OBJECT_NAME_ID" NOT NULL ENABLE); + ALTER TABLE "ERIGHTS"."T_APP_EASREFN_OBJECTS" MODIFY ("EASREFN_OBJECT_NAME" NOT NULL ENABLE); +-------------------------------------------------------- +-- Ref Constraints for Table MOVEMENT_FILES +-------------------------------------------------------- + + ALTER TABLE "ERIGHTS"."MOVEMENT_FILES" ADD CONSTRAINT "FK_MOFI_R_MOCO" FOREIGN KEY ("CONTEXT_ID") + REFERENCES "ERIGHTS"."MOVEMENT_CONTEXT" ("MOVEMENT_CONTEXT_ID") ENABLE; + +-------------------------------------------------------- +-- DDL for Table NOTIFICATION_TEMPLATES +-------------------------------------------------------- + + CREATE TABLE "ERIGHTS"."NOTIFICATION_TEMPLATES" + ( "NOTIFICATION_TEMPLATE_ID" NUMBER, + "NOTIFICATION_TEMPLATE_TYPE" VARCHAR2(1000 CHAR), + "MESSAGE_SUBJECT" VARCHAR2(1000 CHAR), + "MESSAGE_BODY" VARCHAR2(4000 CHAR), + "MESSAGE_SIGNATURE" VARCHAR2(1000 CHAR), + "NOTIFICATION_TEMPLATE_CODE" VARCHAR2(1000 CHAR), + "DEFAULT_TEMPLATE" CHAR(1 CHAR) + ) TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Table NOTIFICATIONS +-------------------------------------------------------- + + CREATE TABLE "NOTIFICATIONS" + ( "NOTIFICATION_ID" NUMBER, + "STATUS" VARCHAR2(100 CHAR), + "NOTIFICATION_ENTITY_ID" NUMBER, + "NOTIFICATION_TEMPLATE_ID" NUMBER, + "NOTIFICATION_TEMPLATE_CODE" VARCHAR2(100 CHAR), + "EMAIL_ID" NUMBER, + "NOTIFICATION_TYPE" VARCHAR2(100 CHAR), + "SENDING_DATE" DATE, + "CREATED_DATE" DATE, + "UPDATED_AT" DATE, + "SENT_AT" DATE, + "ALERT_SENT" CHAR(1 CHAR) DEFAULT 'N' + ) +-------------------------------------------------------- +-- DDL for Index PK_NOTIFICATION_TEMPLATES +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_NOTIFICATION_TEMPLATES" ON "ERIGHTS"."NOTIFICATION_TEMPLATES" ("NOTIFICATION_TEMPLATE_ID") + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- DDL for Index PK_NOTIFICATIONS +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ERIGHTS"."PK_NOTIFICATIONS" ON "ERIGHTS"."NOTIFICATIONS" ("NOTIFICATION_ID") +TABLESPACE "ERIGHTS" ; + + + CREATE TABLE "AUD_MOVEMENT_FILES" + ( "MOVEMENT_FILE_ID" NUMBER(*,0) NOT NULL ENABLE, + "REV" NUMBER(10,0) NOT NULL ENABLE, + "REVTYPE" NUMBER(3,0), + "AIPN_FILE_ID" VARCHAR2(255 CHAR), + "ASSIGN_END_DATE_FROM" DATE, + "ASSIGN_END_DATE_TO" DATE, + "ASSIGN_START_DATE_FROM" DATE, + "ASSIGN_START_DATE_TO" DATE, + "BUDGET_LINE" VARCHAR2(255 CHAR), + "CHILD_FREE_POSTING" CHAR(1 BYTE), + "ESTIMATED_END_DATE" DATE, + "FILE_ID" VARCHAR2(255 CHAR), + "JOB_FROM_START_DATE" DATE, + "JOB_ID_FROM" NUMBER(19,0), + "NON_FAMILY_POSTING" CHAR(1 BYTE), + "ORG_CD_FROM" VARCHAR2(255 CHAR), + "ORG_CD_TO" VARCHAR2(255 CHAR), + "ORG_ID_FROM" NUMBER(19,0), + "ORG_ID_TO" NUMBER(19,0), + "PRIORITY" CHAR(1 BYTE), + "SM_ID" RAW(16), + "START_DATE" DATE, + "STATE" VARCHAR2(255 CHAR), + "YEAR" NUMBER(10,0), + "PER_ID" NUMBER(19,0), + "JOB_ID_TO" NUMBER(19,0), + "CONTEXT_ID" NUMBER(*,0), + "MOVEMENT_TYPE_ID" NUMBER(*,0), + "AIPN_NOTIF_DATE" DATE, + "WITHOUT_RIGHTS" CHAR(1 BYTE), + "REASON_EOC" VARCHAR2(3000 CHAR), + "MOVEMENT_NR" NUMBER(10,0), + "AIPN_DOCUMENT_ID" VARCHAR2(255 CHAR), + "REASON_DELETION" VARCHAR2(3000 CHAR), + "COUNTRY_CODE_TO" VARCHAR2(3 BYTE), + "CITY_CODE_TO" VARCHAR2(3 BYTE), + "EVACUATION_STATUS" CHAR(1 BYTE), + "NOTIFICATION_ENTITY_ID" NUMBER, + PRIMARY KEY ("MOVEMENT_FILE_ID", "REV") + ; + diff --git a/e-rights-common/src/main/database/inital/V1.0.0/eRights_views.sql b/e-rights-common/src/main/database/inital/V1.0.0/eRights_views.sql new file mode 100644 index 0000000..8d1edc5 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.0/eRights_views.sql @@ -0,0 +1,300 @@ +-------------------------------------------------------- +-- DDL for View V_CITIES +-------------------------------------------------------- + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_CITIES" ("CITY_CODE", "COUNTRY_CODE", "CD_SYSPER", "CD2_SYSPER", "CD_SIRE", "NAP_CD", "RNG_ID", "DESCRIPTION_EN", "DESCRIPTION_FR", "LATITUDE", "LONGITUDE") AS + select "CITY_CODE","COUNTRY_CODE","CD_SYSPER","CD2_SYSPER","CD_SIRE","NAP_CD","RNG_ID","DESCRIPTION_EN","DESCRIPTION_FR","LATITUDE","LONGITUDE" from MV_CITIES +; +-------------------------------------------------------- +-- DDL for View V_COUNTRIES +-------------------------------------------------------- + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_COUNTRIES" ("COUNTRY_CODE", "CD_ISO_A2", "CD_ISO_N3", "NAME_EN", "LONG_NAME_EN", "NAME_FR", "LONG_NAME_FR", "EU_STATE", "CAPITAL", "COUNTRY_PHONE_CODE", "CONTINENT_CODE", "STATUS", "CURRENCY_CODE", "CURRENCY_NAME") AS + select "COUNTRY_CODE","CD_ISO_A2","CD_ISO_N3","NAME_EN","LONG_NAME_EN","NAME_FR","LONG_NAME_FR","EU_STATE","CAPITAL","COUNTRY_PHONE_CODE","CONTINENT_CODE","STATUS","CURRENCY_CODE","CURRENCY_NAME" from MV_COUNTRIES +; +-------------------------------------------------------- +-- DDL for View V_JOBS +-------------------------------------------------------- + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_JOBS" ("JOB_ID", "JOB_MOMENT", "JOB_TYPE", "PERSONNEL_TYPE_DESC", "BUDGETARY_LINE", "JOB_CITY_CODE", "JOB_CITY_NAME", "JOB_COUNTRY_CODE", "JOB_COUNTRY_NAME", "ORGANIZATION_COUNTRY", "ORGANIZATION_CITY", "ORGANIZATION_NAME", "ORGANIZATION_IN_EU", "INT_ORG_CODE", "INTERNATIONAL_ORGANIZATION", "ORG_ID", "ASSIGN_START_DATE_TO", "ASSIGN_END_DATE_TO", "PER_ID", "SEVERITY_LEVEL", "EVACUATION_LEVEL_CODE_ID", "ALERT_STATUS_ID", "EVACUATION_LEVEL_CODE", "ORGANIZATION_COUNTRY_CODE", "ORGANIZATION_CITY_CODE") AS + select +jobh.job_id +, +CASE + WHEN trunc(jobh.start_date)> trunc(sysdate) THEN 'FUTURE_JOB' + ELSE 'PRESENT_JOB' +END AS JOB_MOMENT +,jobh.job_type +,jobh.personnel_type_desc +,jobh.budgetary_line +, jobh.location_city_code as job_city_code +, jobh.location_city_name as job_city_name +, jobh.location_country_code as job_country_code +, jobh.location_country_name as job_country_name +,enth.eng_country as ORGANIZATION_COUNTRY +,enth.eng_city as ORGANIZATION_CITY +,enth.org_cd as ORGANIZATION_NAME +,ctr.eu_state as ORGANIZATION_IN_EU +,ent_typ.code as INT_ORG_code +,case +when ent_typ.id is null then 'N' +else 'Y' +end as INTERNATIONAL_ORGANIZATION +,enth.org_id +, asgh.start_date as assign_start_date_to +--, nullif(EXTRACT(year FROM asgh.end_date),2099) as assign_end_date_to +, case + when EXTRACT(year FROM asgh.end_date)in (2099, 9999) + then to_date(null) + else asgh.end_date + end as assign_end_date_to +, asgh.per_id +, delstat.severity_level +, delstat.evacuation_level_code_id +, delstat.alert_status_id +, delstat.evacuation_level_code +, enth.country_id as ORGANIZATION_COUNTRY_CODE +, enth.city_code as ORGANIZATION_CITY_CODE +from + /*( select + job_id + ,job_type + ,personnel_type_desc + ,budgetary_line as budget_line + , rank() over(partition by JOB_ID order by nvl(end_date, sysdate + 1) desc, jcx_id desc) recent_job + from mv_jobs_hist_eeas + where recent_job= 1 + ) jobh + */ + MV_JOBS_hist_EEAS jobh + inner join mv_entities_hist enth on jobh.org_id = enth.org_id + inner join mv_countries ctr on enth.country_id = ctr.country_code + left join ( select * from + (select per_id, job_id, start_date, end_date, + row_number() over(partition by job_id + order by start_date DESC) RW + from mv_assignments_hist_eeas + where trunc(sysdate)< trunc(end_date) + and per_id is not null ) where RW=1 + ) asgh + on asgh.job_id = jobh.job_id + --left join mv_assignments_hist_eeas asgh on asgh.job_id = jobh.job_id + left join MV_delegation_status delstat + on delstat.org_id = enth.MAIN_ORG_ID + left join mv_entities_types ent_typ on enth.org_id = ent_typ.Org_Id +where job_status= 'Active' +and trunc(enth.end_date) >trunc(sysdate) +; +-------------------------------------------------------- +-- DDL for View V_REPORT_MOVEMENT_FILES +-------------------------------------------------------- + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_REPORT_MOVEMENT_FILES" ("MOVEMENT_FILE_ID", "FIRST_NAME", "LAST_NAME", "STATUS", "STARTDATEFUTURE", "ENDDATEFUTURE", "MOVEMENTFROM", "MOVEMENTTO", "EVACUATION_STATUS", "BUDGDET_LINE_FUTURE", "MOVEMENTTYPE", "MOVEMENTYEAR", "MOVEMENTCONTEXT", "PERID", "FUTUREASSIGNMENT", "FILEID", "PRIORITY", "ALLOCATEDTOCURRENT", "ALLOCATEDTOFUTURE", "REASON") AS + SELECT + F.movement_file_id + , P.first_name as FIRST_NAME + , P.surname as LAST_NAME + , F.state as status + , coalesce(f.start_date,assign_start_date_to) as startDateFuture + , case + when EXTRACT(year FROM ( coalesce(f.estimated_end_date,assign_end_date_to ))) in (2099,9999) + then to_date(null) + else coalesce(f.estimated_end_date,assign_end_date_to ) + end as endDateFuture + , initcap(FR.eng_city) ||', ' || FR.eng_country as movementFrom + , initcap(CI.DESCRIPTION_EN) ||', ' || CT.NAME_EN as movementTo + --, initcap(f.city_code_to) ||', ' || initcap(f.country_code_to) as movementTo + , F.evacuation_status + , budget_line as budgdet_line_future + , mvtp.movement_type as MovementType + , F.Year as movementYear + , C.Name as movementContext + , F.per_id as perID + , F.job_id_to as futureAssignment + , F.file_id as fileId + , F.priority + , F.org_cd_from as allocatedToCurrent + , F.org_cd_to as allocatedToFuture + ,'1' as reason +FROM movement_files F +inner join movement_context C on F.Context_Id = C.movement_context_ID +inner join mv_persons_eeas P + on P.per_id = F.per_id +inner join movement_types mvtp + on mvtp.movement_type_id = f.movement_type_id +left join + mv_entities_hist FR + on FR.org_id = F.org_id_from + and trunc(sysdate) TRUNC(SYSDATE) THEN 'FUTURE_JOB' + ELSE 'PRESENT_JOB' +END AS JOB_MOMENT +,JOBH.JOB_TYPE +,JOBH.PERSONNEL_TYPE_DESC +,JOBH.BUDGETARY_LINE +, JOBH.LOCATION_CITY_CODE AS JOB_CITY_CODE +, JOBH.LOCATION_CITY_NAME AS JOB_CITY_NAME +, JOBH.LOCATION_COUNTRY_CODE AS JOB_COUNTRY_CODE +, JOBH.LOCATION_COUNTRY_NAME AS JOB_COUNTRY_NAME +,ENTH.ENG_COUNTRY AS ORGANIZATION_COUNTRY +,ENTH.ENG_CITY AS ORGANIZATION_CITY +,ENTH.ORG_CD AS ORGANIZATION_NAME +,CTR.EU_STATE AS ORGANIZATION_IN_EU +,ENT_TYP.CODE AS INT_ORG_CODE +,CASE +WHEN ENT_TYP.ID IS NULL THEN 'N' +ELSE 'Y' +END AS INTERNATIONAL_ORGANIZATION +,ENTH.ORG_ID +, ASGH.START_DATE AS ASSIGN_START_DATE_TO +--, NULLIF(EXTRACT(YEAR FROM ASGH.END_DATE),2099) AS ASSIGN_END_DATE_TO +, CASE + WHEN EXTRACT(YEAR FROM ASGH.END_DATE)IN (2099, 9999) + THEN TO_DATE(NULL) + ELSE ASGH.END_DATE + END AS ASSIGN_END_DATE_TO +, ASGH.PER_ID +, DELSTAT.SEVERITY_LEVEL +, DELSTAT.EVACUATION_LEVEL_CODE_ID +, DELSTAT.ALERT_STATUS_ID +, DELSTAT.EVACUATION_LEVEL_CODE +, ENTH.COUNTRY_ID AS ORGANIZATION_COUNTRY_CODE +, ENTH.CITY_CODE AS ORGANIZATION_CITY_CODE +FROM + MV_JOBS_HIST_EEAS JOBH + INNER JOIN MV_ENTITIES_HIST ENTH ON JOBH.ORG_ID = ENTH.ORG_ID + INNER JOIN MV_COUNTRIES CTR ON ENTH.COUNTRY_ID = CTR.COUNTRY_CODE + LEFT JOIN ( SELECT * FROM + (SELECT PER_ID, JOB_ID, START_DATE, END_DATE, + ROW_NUMBER() OVER(PARTITION BY JOB_ID + ORDER BY START_DATE DESC) RW + FROM MV_ASSIGNMENTS_HIST_EEAS + WHERE TRUNC(SYSDATE)< TRUNC(END_DATE) + AND PER_ID IS NOT NULL ) WHERE RW=1 + ) ASGH + ON ASGH.JOB_ID = JOBH.JOB_ID + --LEFT JOIN MV_ASSIGNMENTS_HIST_EEAS ASGH ON ASGH.JOB_ID = JOBH.JOB_ID + LEFT JOIN MV_DELEGATION_STATUS DELSTAT + --ON DELSTAT.ORG_ID = ENTH.ORG_ID + ON DELSTAT.ORG_ID = ENTH.MAIN_ORG_ID + LEFT JOIN MV_ENTITIES_TYPES ENT_TYP ON ENTH.ORG_ID = ENT_TYP.ORG_ID +WHERE JOB_STATUS= 'Active' +AND TRUNC(ENTH.END_DATE) >TRUNC(SYSDATE) +UNION +SELECT +JOBH.JOB_ID, +CASE + WHEN TRUNC(JOBH.START_DATE)> TRUNC(SYSDATE) THEN 'FUTURE_JOB' + ELSE 'PRESENT_JOB' +END AS JOB_MOMENT +,JOBH.JOB_TYPE +,JOBH.PERSONNEL_TYPE_DESC +,JOBH.BUDGETARY_LINE +, JOBH.LOCATION_CITY_CODE AS JOB_CITY_CODE +, JOBH.LOCATION_CITY_NAME AS JOB_CITY_NAME +, JOBH.LOCATION_COUNTRY_CODE AS JOB_COUNTRY_CODE +, JOBH.LOCATION_COUNTRY_NAME AS JOB_COUNTRY_NAME +,ENTH.ENG_COUNTRY AS ORGANIZATION_COUNTRY +,ENTH.ENG_CITY AS ORGANIZATION_CITY +,ENTH.ORG_CD AS ORGANIZATION_NAME +,CTR.EU_STATE AS ORGANIZATION_IN_EU +,ENT_TYP.CODE AS INT_ORG_CODE +,CASE +WHEN ENT_TYP.ID IS NULL THEN 'N' +ELSE 'Y' +END AS INTERNATIONAL_ORGANIZATION +,ENTH.ORG_ID +, ASGH.START_DATE AS ASSIGN_START_DATE_TO +--, NULLIF(EXTRACT(YEAR FROM ASGH.END_DATE),2099) AS ASSIGN_END_DATE_TO +, CASE + WHEN EXTRACT(YEAR FROM ASGH.END_DATE)IN (2099, 9999) + THEN TO_DATE(NULL) + ELSE ASGH.END_DATE + END AS ASSIGN_END_DATE_TO +, ASGH.PER_ID +, DELSTAT.SEVERITY_LEVEL +, DELSTAT.EVACUATION_LEVEL_CODE_ID +, DELSTAT.ALERT_STATUS_ID +, DELSTAT.EVACUATION_LEVEL_CODE +, ENTH.COUNTRY_ID AS ORGANIZATION_COUNTRY_CODE +, ENTH.CITY_CODE AS ORGANIZATION_CITY_CODE +FROM MV_JOBS_HIST_COM JOBH + INNER JOIN MV_ENTITIES_HIST_COM ENTH ON JOBH.ORG_ID = ENTH.ORG_ID + INNER JOIN MV_COUNTRIES CTR ON ENTH.COUNTRY_ID = CTR.COUNTRY_CODE + LEFT JOIN ( SELECT * FROM + (SELECT PER_ID, JOB_ID, START_DATE, END_DATE, + ROW_NUMBER() OVER(PARTITION BY JOB_ID + ORDER BY START_DATE DESC) RW + FROM MV_ASSIGNMENTS_HIST_COM + WHERE TRUNC(SYSDATE)< TRUNC(END_DATE) + AND PER_ID IS NOT NULL ) WHERE RW=1 + ) ASGH + ON ASGH.JOB_ID = JOBH.JOB_ID + --LEFT JOIN MV_ASSIGNMENTS_HIST_EEAS ASGH ON ASGH.JOB_ID = JOBH.JOB_ID + LEFT JOIN MV_DELEGATION_STATUS DELSTAT + ON DELSTAT.ORG_ID = ENTH.MAIN_ORG_ID + --ON DELSTAT.ORG_ID = ENTH.ORG_ID + LEFT JOIN MV_ENTITIES_TYPES ENT_TYP ON ENTH.ORG_ID = ENT_TYP.ORG_ID +WHERE JOB_STATUS= 'Active' +AND TRUNC(ENTH.END_DATE) >TRUNC(SYSDATE); + diff --git a/e-rights-common/src/main/database/inital/V1.0.1/staffmembers not found.sql b/e-rights-common/src/main/database/inital/V1.0.1/staffmembers not found.sql new file mode 100644 index 0000000..65c0485 --- /dev/null +++ b/e-rights-common/src/main/database/inital/V1.0.1/staffmembers not found.sql @@ -0,0 +1,426 @@ +DROP MATERIALIZED VIEW "ERIGHTS"."MV_CITIES"; + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_CITIES" ( + "CITY_CODE", + "COUNTRY_CODE", + "CD_SYSPER", + "CD2_SYSPER", + "CD_SIRE", + "NAP_CD", + "RNG_ID", + "DESCRIPTION_EN", + "DESCRIPTION_FR" +) AS + SELECT + "CITY_CODE", + "COUNTRY_CODE", + "CD_SYSPER", + "CD2_SYSPER", + "CD_SIRE", + "NAP_CD", + "RNG_ID", + "DESCRIPTION_EN", + "DESCRIPTION_FR" + FROM + mv_cities@easrefn.cc.cec.eu.int; + +CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_CITIES" ( + "CITY_CODE", + "COUNTRY_CODE", + "CD_SYSPER", + "CD2_SYSPER", + "CD_SIRE", + "NAP_CD", + "RNG_ID", + "DESCRIPTION_EN", + "DESCRIPTION_FR" +) AS + SELECT + "CITY_CODE", + "COUNTRY_CODE", + "CD_SYSPER", + "CD2_SYSPER", + "CD_SIRE", + "NAP_CD", + "RNG_ID", + "DESCRIPTION_EN", + "DESCRIPTION_FR" + FROM + mv_cities; + / + +DROP MATERIALIZED VIEW "MV_EMAILS"; + + CREATE MATERIALIZED VIEW + "MV_EMAILS" ("PER_ID", "EMAIL","CTX_CD") + + AS SELECT + per_id, + MAX(email) AS email, + MAX(ctx_cd) AS ctx_cd +FROM + ( + SELECT + per_id, + email, + ctx_cd + FROM + mv_emails_com@easrefn.cc.cec.eu.int + WHERE + tadr_cd = 11 + UNION + SELECT + per_id, + email, + ctx_cd + FROM + mv_emails_eeas@easrefn.cc.cec.eu.int + WHERE + tadr_cd = 11 + ) +GROUP BY + per_id; + + COMMENT ON MATERIALIZED VIEW "MV_EMAILS" IS 'snapshot table for snapshot ERIGHTS.MV_EMAILS'; + +/ + +CREATE OR REPLACE VIEW "V_RECRUITMENT_PLACES" ( + "PER_ID", + "LIEU_RECR", + "RECR_PAY_CD", + "NAME_EN" +) AS + SELECT + PER_ID, + MAX(LIEU_RECR) AS LIEU_RECR, + MAX(RECR_PAY_CD) AS RECR_PAY_CD, + MAX(NAME_EN) AS NAME_EN + FROM + ( + SELECT + RECPLACE.PER_ID, + LIEU_RECR, + RECR_PAY_CD, + NAME_EN, + DT_RECR, + RECPLACE.DT_MAJ + FROM + MV_RECRUITMENT_PLACES RECPLACE + INNER JOIN ( + SELECT + PER_ID, + MAX(DT_RECR) MAX_DT_RECR, + MAX(DT_MAJ) MAX_DT_MAJ + FROM + MV_RECRUITMENT_PLACES + GROUP BY + PER_ID + ) MAXRECDATE ON ( RECPLACE.PER_ID = MAXRECDATE.PER_ID + AND RECPLACE.DT_RECR = MAXRECDATE.MAX_DT_RECR + AND RECPLACE.DT_MAJ = MAXRECDATE.MAX_DT_MAJ ) + INNER JOIN MV_COUNTRIES RECCOUNTRY ON RECPLACE.RECR_PAY_CD = RECCOUNTRY.COUNTRY_CODE + WHERE + RECR_CODE_POSTAL IS NOT NULL + ) + GROUP BY + PER_ID; +/ + + + CREATE OR REPLACE VIEW "ERIGHTS"."V_STAFFMEMBERS" ("PER_ID", "FIRST_NAME", "LAST_NAME", "GENDER", "EMAIL", "BIRTH_CITY", "BIRTH_COUNTRY_CODE", "BIRTH_COUNTRY_DESC", "RECRUITMENT_CITY", "RECRUITMENT_COUNTRY", "ORGANIZATION_NAME", "ORGANIZATION_CITY", "ORGANIZATION_COUNTRY", "ORGANIZATION_IN_EU", "INT_ORG_CODE", "INTERNATIONAL_ORGANIZATION", "ORG_ID", "JOB_ID", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "ORG_CD", "PRIVATE_EMAIL") AS +SELECT P.PER_ID AS PER_ID + , P.FIRST_NAME AS FIRST_NAME + , P.SURNAME AS LAST_NAME + , P.GENRE AS GENDER + , P.EMAIL AS EMAIL + , P.PLACE_OF_BIRTH AS BIRTH_CITY + , P.COUNTRY_OF_BIRTH AS BIRTH_COUNTRY_CODE + , C1.NAME_EN AS BIRTH_COUNTRY_DESC + , D.LIEU_RECR AS RECRUITMENT_CITY + , D.RECR_PAY_CD || ' - ' || D.NAME_EN AS RECRUITMENT_COUNTRY + , P.ORG_CD AS ORGANIZATION_NAME + , E.ENG_CITY AS ORGANIZATION_CITY + , E.ENG_COUNTRY AS ORGANIZATION_COUNTRY + , C.EU_STATE AS ORGANIZATION_IN_EU + , T.CODE AS INT_ORG_CODE + ,CASE WHEN T.ID IS NULL THEN 'N' ELSE 'Y' END AS INTERNATIONAL_ORGANIZATION + , P.ORG_ID AS ORG_ID + , P.JOB_ID AS JOB_ID + , P.ASSIGN_START_DATE AS ASSIGN_START_DATE + --, P.ASSIGN_END_DATE AS ASSIGN_END_DATE + , CASE WHEN (EXTRACT(YEAR FROM P.ASSIGN_END_DATE)IN (9999, 2099)) THEN TO_DATE(NULL) ELSE P.ASSIGN_END_DATE END AS ASSIGN_END_DATE + , P.ORG_CD AS ORG_CD + , EM.EMAIL AS PRIVATE_EMAIL + FROM ( SELECT PER_ID, FIRST_NAME, SURNAME, GENRE, EMAIL, PLACE_OF_BIRTH, COUNTRY_OF_BIRTH, ORG_CD ,ORG_ID, JOB_ID, ASSIGN_START_DATE, ASSIGN_END_DATE + FROM MV_PERSONS_EEAS + UNION + SELECT DISTINCT PER_ID, FIRST_NAME, SURNAME, GENRE, NULL , PLACE_OF_BIRTH, COUNTRY_OF_BIRTH, NULL , NULL, NULL, NULL, NULL + FROM MV_PERSONS_HIST_EEAS + -- LEFT JOIN MV_EMAILS ON E MV_PERSONS_HIST_EEAS.PER_ID = MV_EMAILS.PER_ID + WHERE MV_PERSONS_HIST_EEAS.PER_ID NOT IN ( SELECT PER_ID FROM MV_PERSONS_EEAS UNION ALL SELECT PER_ID FROM MV_PERSONS_COM) + ) P +--INNER JOIN MV_RECRUITMENT_PLACES R ON P.PER_ID = R.PER_ID + LEFT JOIN V_RECRUITMENT_PLACES D ON P.PER_ID = D.PER_ID --AND R.DT_RECR = D.MAX_DT_RECR + LEFT JOIN MV_ENTITIES E ON P.ORG_ID = E.ORG_ID + LEFT JOIN MV_COUNTRIES C ON E.COUNTRY_ID = C.COUNTRY_CODE + LEFT JOIN MV_COUNTRIES C1 ON P.COUNTRY_OF_BIRTH = C1.COUNTRY_CODE +--INNER JOIN MV_COUNTRIES C2 ON R.RECR_PAY_CD = C2.COUNTRY_CODE + LEFT JOIN MV_ENTITIES_TYPES T ON P.ORG_ID = T.ORG_ID AND T.IS_ACTIVE = 'Y' + LEFT JOIN MV_EMAILS EM ON EM.PER_ID = P.PER_ID + + UNION +SELECT P.PER_ID AS PER_ID, + P.FIRST_NAME AS FIRST_NAME, + P.SURNAME AS LAST_NAME , + P.GENRE AS GENDER, + P.EMAIL AS EMAIL , + P.PLACE_OF_BIRTH AS BIRTH_CITY, + P.COUNTRY_OF_BIRTH AS BIRTH_COUNTRY_CODE, + C1.NAME_EN AS BIRTH_COUNTRY_DESC, + D.LIEU_RECR AS RECRUITMENT_CITY, + D.RECR_PAY_CD || ' - ' || D.NAME_EN AS RECRUITMENT_COUNTRY + , P.ORG_CD AS ORGANIZATION_NAME + , E.ENG_CITY AS ORGANIZATION_CITY + , E.ENG_COUNTRY AS ORGANIZATION_COUNTRY + , C.EU_STATE AS ORGANIZATION_IN_EU + , T.CODE AS INT_ORG_CODE + , CASE WHEN T.ID IS NULL THEN 'N' ELSE 'Y' END AS INTERNATIONAL_ORGANIZATION + , P.ORG_ID AS ORG_ID + , P.JOB_ID AS JOB_ID + , ASSIGN.START_DATE AS ASSIGN_START_DATE + --, ASSIGN.END_DATE AS ASSIGN_END_DATE + , CASE WHEN (EXTRACT(YEAR FROM ASSIGN.END_DATE)IN (2099,9999)) THEN TO_DATE(NULL) ELSE ASSIGN.END_DATE END AS ASSIGN_END_DATE + , P.ORG_CD AS ORG_CD + , EM.EMAIL AS PRIVATE_EMAIL + FROM ( + SELECT PER_ID, FIRST_NAME, SURNAME, GENRE, EMAIL, PLACE_OF_BIRTH, COUNTRY_OF_BIRTH, ORG_CD ,ORG_ID, JOB_ID --,ASSIGN_START_DATE, ASSIGN_END_DATE + FROM MV_PERSONS_COM + UNION + SELECT DISTINCT PER_ID, FIRST_NAME, SURNAME, GENRE, NULL , PLACE_OF_BIRTH, COUNTRY_OF_BIRTH, NULL , NULL, NULL--, NULL, NULL + FROM MV_PERSONS_HIST_COM + WHERE MV_PERSONS_HIST_COM.PER_ID NOT IN ( SELECT PER_ID FROM MV_PERSONS_EEAS UNION ALL + SELECT PER_ID FROM MV_PERSONS_COM UNION ALL + SELECT PER_ID FROM MV_PERSONS_HIST_EEAS + ) + ) P + +-- INNER JOIN MV_RECRUITMENT_PLACES R ON P.PER_ID = R.PER_ID + LEFT JOIN V_RECRUITMENT_PLACES D ON P.PER_ID = D.PER_ID --AND R.DT_RECR = D.MAX_DT_RECR + LEFT JOIN MV_ENTITIES_HIST_COM E ON P.ORG_ID = E.ORG_ID AND TRUNC(SYSDATE) TRUNC(SYSDATE) THEN 'FUTURE_JOB' + ELSE 'PRESENT_JOB' +END AS JOB_MOMENT +,JOBH.JOB_TYPE +,JOBH.PERSONNEL_TYPE_DESC +,JOBH.BUDGETARY_LINE +, JOBH.LOCATION_CITY_CODE AS JOB_CITY_CODE +, JOBH.LOCATION_CITY_NAME AS JOB_CITY_NAME +, JOBH.LOCATION_COUNTRY_CODE AS JOB_COUNTRY_CODE +, JOBH.LOCATION_COUNTRY_NAME AS JOB_COUNTRY_NAME +,ENTH.ENG_COUNTRY AS ORGANIZATION_COUNTRY +,ENTH.ENG_CITY AS ORGANIZATION_CITY +,ENTH.ORG_CD AS ORGANIZATION_NAME +,CTR.EU_STATE AS ORGANIZATION_IN_EU +,ENT_TYP.CODE AS INT_ORG_CODE +,CASE +WHEN ENT_TYP.ID IS NULL THEN 'N' +ELSE 'Y' +END AS INTERNATIONAL_ORGANIZATION +,ENTH.ORG_ID +, ASGH.START_DATE AS ASSIGN_START_DATE_TO +--, NULLIF(EXTRACT(YEAR FROM ASGH.END_DATE),2099) AS ASSIGN_END_DATE_TO +, CASE + WHEN EXTRACT(YEAR FROM ASGH.END_DATE)IN (2099, 9999) + THEN TO_DATE(NULL) + ELSE ASGH.END_DATE + END AS ASSIGN_END_DATE_TO +, ASGH.PER_ID +, DELSTAT.SEVERITY_LEVEL +, DELSTAT.EVACUATION_LEVEL_CODE_ID +, DELSTAT.ALERT_STATUS_ID +, DELSTAT.EVACUATION_LEVEL_CODE +, ENTH.COUNTRY_ID AS ORGANIZATION_COUNTRY_CODE +, ENTH.CITY_CODE AS ORGANIZATION_CITY_CODE +FROM + MV_JOBS_HIST_EEAS JOBH + INNER JOIN MV_ENTITIES_HIST ENTH ON JOBH.ORG_ID = ENTH.ORG_ID + INNER JOIN MV_COUNTRIES CTR ON ENTH.COUNTRY_ID = CTR.COUNTRY_CODE + LEFT JOIN ( SELECT * FROM + (SELECT PER_ID, JOB_ID, START_DATE, END_DATE, + ROW_NUMBER() OVER(PARTITION BY JOB_ID + ORDER BY START_DATE DESC) RW + FROM MV_ASSIGNMENTS_HIST_EEAS + WHERE TRUNC(SYSDATE)< TRUNC(END_DATE) + AND PER_ID IS NOT NULL ) WHERE RW=1 + ) ASGH + ON ASGH.JOB_ID = JOBH.JOB_ID + --LEFT JOIN MV_ASSIGNMENTS_HIST_EEAS ASGH ON ASGH.JOB_ID = JOBH.JOB_ID + LEFT JOIN MV_DELEGATION_STATUS DELSTAT + --ON DELSTAT.ORG_ID = ENTH.ORG_ID + ON DELSTAT.ORG_ID = ENTH.MAIN_ORG_ID + LEFT JOIN MV_ENTITIES_TYPES ENT_TYP ON ENTH.ORG_ID = ENT_TYP.ORG_ID +WHERE JOB_STATUS= 'Active' +AND TRUNC(ENTH.END_DATE) >TRUNC(SYSDATE) +UNION +SELECT +JOBH.JOB_ID, +CASE + WHEN TRUNC(JOBH.START_DATE)> TRUNC(SYSDATE) THEN 'FUTURE_JOB' + ELSE 'PRESENT_JOB' +END AS JOB_MOMENT +,JOBH.JOB_TYPE +,JOBH.PERSONNEL_TYPE_DESC +,JOBH.BUDGETARY_LINE +, JOBH.LOCATION_CITY_CODE AS JOB_CITY_CODE +, JOBH.LOCATION_CITY_NAME AS JOB_CITY_NAME +, JOBH.LOCATION_COUNTRY_CODE AS JOB_COUNTRY_CODE +, JOBH.LOCATION_COUNTRY_NAME AS JOB_COUNTRY_NAME +,ENTH.ENG_COUNTRY AS ORGANIZATION_COUNTRY +,ENTH.ENG_CITY AS ORGANIZATION_CITY +,ENTH.ORG_CD AS ORGANIZATION_NAME +,CTR.EU_STATE AS ORGANIZATION_IN_EU +,ENT_TYP.CODE AS INT_ORG_CODE +,CASE +WHEN ENT_TYP.ID IS NULL THEN 'N' +ELSE 'Y' +END AS INTERNATIONAL_ORGANIZATION +,ENTH.ORG_ID +, ASGH.START_DATE AS ASSIGN_START_DATE_TO +--, NULLIF(EXTRACT(YEAR FROM ASGH.END_DATE),2099) AS ASSIGN_END_DATE_TO +, CASE + WHEN EXTRACT(YEAR FROM ASGH.END_DATE)IN (2099, 9999) + THEN TO_DATE(NULL) + ELSE ASGH.END_DATE + END AS ASSIGN_END_DATE_TO +, ASGH.PER_ID +, DELSTAT.SEVERITY_LEVEL +, DELSTAT.EVACUATION_LEVEL_CODE_ID +, DELSTAT.ALERT_STATUS_ID +, DELSTAT.EVACUATION_LEVEL_CODE +, ENTH.COUNTRY_ID AS ORGANIZATION_COUNTRY_CODE +, ENTH.CITY_CODE AS ORGANIZATION_CITY_CODE +FROM MV_JOBS_HIST_COM JOBH + INNER JOIN MV_ENTITIES_HIST_COM ENTH ON JOBH.ORG_ID = ENTH.ORG_ID + INNER JOIN MV_COUNTRIES CTR ON ENTH.COUNTRY_ID = CTR.COUNTRY_CODE + LEFT JOIN ( SELECT * FROM + (SELECT PER_ID, JOB_ID, START_DATE, END_DATE, + ROW_NUMBER() OVER(PARTITION BY JOB_ID + ORDER BY START_DATE DESC) RW + FROM MV_ASSIGNMENTS_HIST_COM + WHERE TRUNC(SYSDATE)< TRUNC(END_DATE) + AND PER_ID IS NOT NULL ) WHERE RW=1 + ) ASGH + ON ASGH.JOB_ID = JOBH.JOB_ID + --LEFT JOIN MV_ASSIGNMENTS_HIST_EEAS ASGH ON ASGH.JOB_ID = JOBH.JOB_ID + LEFT JOIN MV_DELEGATION_STATUS DELSTAT + ON DELSTAT.ORG_ID = ENTH.MAIN_ORG_ID + --ON DELSTAT.ORG_ID = ENTH.ORG_ID + LEFT JOIN MV_ENTITIES_TYPES ENT_TYP ON ENTH.ORG_ID = ENT_TYP.ORG_ID +WHERE JOB_STATUS= 'Active' +AND TRUNC(ENTH.END_DATE) >TRUNC(SYSDATE); + diff --git a/e-rights-common/src/main/database/inital/db_objects/.gitignore b/e-rights-common/src/main/database/inital/db_objects/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/e-rights-common/src/main/database/model/2.1.0/.gitignore b/e-rights-common/src/main/database/model/2.1.0/.gitignore new file mode 100644 index 0000000..e60e2d0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/.gitignore @@ -0,0 +1,37 @@ +**/*.localz +**/*.local +**/*.git +**/*.DS_Store +**/.DS_Store +**/.do_pool/** +**/.do_pool +**/*#JDEVADF_* +**/*~ +**/*.scc +**/*.mv.* +**/*.unmkelem.* +**/*.sync.* +**/*.rename.* +**/*.unbranch.* +**/*.unco.* +**/*.saved.* +**/*.client_contrib +**/.svn/** +**/.data/** +**/*.cdi +**/*.bak +**/*.generated.java +**/*.ignore +**/*.labellog.emd +**/.*.cs +**/.fullsource_nt +**/.fullsource +**/.depprod_nt +**/.depprod +**/.ade_path +**/.ade_path/** +**/*.contrib* +**/*.keep +**/*.rvi +**/.#* +**/CVS/** diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights.dmd b/e-rights-common/src/main/database/model/2.1.0/eRights.dmd new file mode 100644 index 0000000..3d1f601 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights.dmd @@ -0,0 +1,49 @@ + + +walloar +2021-03-02 08:03:42 UTC +eRights +false +54CD39BB-6F39-125F-AF7C-6BCDE7DF05E0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\eRights\Data Model + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/businessinfo/Business Information.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/businessinfo/Business Information.xml new file mode 100644 index 0000000..07d87bb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/businessinfo/Business Information.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:03:42 UTC +eRights +false + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/datatypes/DataTypes.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/datatypes/DataTypes.xml new file mode 100644 index 0000000..a1df779 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/datatypes/DataTypes.xml @@ -0,0 +1,15 @@ + + +walloar +2021-03-02 08:03:42 UTC +eRights +false +array_ref_ +array_ +10 +ARRAY +_Array +inst_ +ref_ +true + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/datatypes/structuredtype/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/datatypes/structuredtype/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml new file mode 100644 index 0000000..c916a43 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/datatypes/structuredtype/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml @@ -0,0 +1,10 @@ + + +walloar +2021-03-02 08:03:42 UTC +eRights +false +true +false +true + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/datatypes/structuredtype/seg_0/F72C39E0-D1CA-8821-2AD7-A1E95A37D3D1.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/datatypes/structuredtype/seg_0/F72C39E0-D1CA-8821-2AD7-A1E95A37D3D1.xml new file mode 100644 index 0000000..cbb3e55 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/datatypes/structuredtype/seg_0/F72C39E0-D1CA-8821-2AD7-A1E95A37D3D1.xml @@ -0,0 +1,10 @@ + + +walloar +2021-03-02 08:03:42 UTC +eRights +false +true +false +true + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/datatypes/subviews/53731C10-AADE-6CA5-0EC8-3F63EAFA3EE9.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/datatypes/subviews/53731C10-AADE-6CA5-0EC8-3F63EAFA3EE9.xml new file mode 100644 index 0000000..51a04ce --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/datatypes/subviews/53731C10-AADE-6CA5-0EC8-3F63EAFA3EE9.xml @@ -0,0 +1,26 @@ + + +walloar +walloar +2021-03-02 08:03:42 UTC +false +true +false +true +false +false +false +-1 +false +1 + + +false + + + +false + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/dl_settings.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/dl_settings.xml new file mode 100644 index 0000000..336229b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/dl_settings.xml @@ -0,0 +1,494 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/Logical.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/Logical.xml new file mode 100644 index 0000000..3e0a3e7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/Logical.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:03:42 UTC +eRights +false + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/04D3CBF7-C56D-19C9-3EC4-5A5DDB43FB8D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/04D3CBF7-C56D-19C9-3EC4-5A5DDB43FB8D.xml new file mode 100644 index 0000000..4b51eef --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/04D3CBF7-C56D-19C9-3EC4-5A5DDB43FB8D.xml @@ -0,0 +1,67 @@ + + +walloar +2021-03-02 09:53:56 UTC +37E3DC03-087A-AC5F-9A2C-183450FB80D0 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +C842236D-B70E-916B-ABFF-A937C38A7D82 +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +97734700-3A6E-ED6E-75D9-C5BF93CD619E +eRights + + + +true +false +1 +LOGDT024 +320 CHAR +320 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +AE7B9FC5-D642-42DF-12A7-A79645E5AECA +eRights + + + +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/0A25DED2-7358-8778-4067-C1F6D795C59F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/0A25DED2-7358-8778-4067-C1F6D795C59F.xml new file mode 100644 index 0000000..ec18303 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/0A25DED2-7358-8778-4067-C1F6D795C59F.xml @@ -0,0 +1,197 @@ + + +walloar +2021-03-02 09:53:56 UTC +98E73A9D-E059-2081-CA84-1CC8723D60B9 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +8D7002F2-0BC8-7D1F-93D9-31E67B8BF31F +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +F9865CC7-AD88-2AA7-BAF8-4DE64C0227CF +eRights + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +3BCA53BD-B160-970E-836E-DE3097D51BEA +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +CB54DFB5-9C59-EB7F-6BE8-BE83B2E9840D +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +BB90336E-7949-8B25-210B-453B5881E8F0 +eRights + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F1F9B5F2-D725-4CA8-5705-52CCC29A9AF0 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +400212E6-2161-5053-80FF-51298B96236F +eRights + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +77CD46C7-7ACD-F466-A915-604801A0DF67 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +13444E17-952F-984A-7B49-F7CCF56813B7 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +3BB5A520-8951-18EF-B4B9-74483259DB76 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +BB460419-0844-B55C-3019-9DD7F34F50D1 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +A578724B-6362-095E-1B09-40F0943FFB20 +eRights + + + +true +false +1 +LOGDT025 +1 CHAR +'N' +1 CHAR,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/0D5C4365-9EF9-39ED-41CD-899807840607.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/0D5C4365-9EF9-39ED-41CD-899807840607.xml new file mode 100644 index 0000000..68b8043 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/0D5C4365-9EF9-39ED-41CD-899807840607.xml @@ -0,0 +1,148 @@ + + +walloar +2021-03-02 09:53:55 UTC +ADE383DF-74A4-CD6A-4E95-CEF01A091594 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +8A7575C4-101D-4797-72BC-B0CCCFC69D02 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +5785565F-E5B5-8EB3-152A-67A352536411 +eRights + + + + +true +8F3929E2-B542-145A-3429-6CCA6D6B9198 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +4AF3603D-3AAC-77A8-463B-721B8E2B9BB8 +eRights + + + + +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +9A07E48A-7461-DDED-AB4A-B5B195DB9445 +eRights + + + + +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +4074AD0B-0F94-309A-9A16-0AD3E8B6E079 +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +5DE254B2-F8B3-D396-4EA2-56EC3714D38A +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +6A1CC110-93AB-B657-B920-B9955E844C83 +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + + + +walloar +2021-03-02 09:53:55 UTC +6BAB2B42-6776-35C8-7739-3287138399CF +eRights +false + + + + +true + +5EA5CE55-B7A8-958C-9931-EC453C9A1C80 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/0E4A76A6-E6A7-BCF4-262F-E062D3EFD3C0.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/0E4A76A6-E6A7-BCF4-262F-E062D3EFD3C0.xml new file mode 100644 index 0000000..5043c22 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/0E4A76A6-E6A7-BCF4-262F-E062D3EFD3C0.xml @@ -0,0 +1,720 @@ + + +walloar +2021-03-02 09:53:56 UTC +5C7C6563-FD70-E24D-E603-049AE09A0549 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +82F9B1C3-736A-9C0C-08D2-D35719FD0B17 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +3C42B3A2-5225-6B8F-586D-F3F7339E7ADB +eRights + + + +true +false +1 +LOGDT019 +6 +0 +,6,0 + + +walloar +2021-03-02 09:53:56 UTC +EE7D8E35-B804-5714-DFBE-9B1C1225AED3 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +19135BBE-90F9-BFF3-167B-844CF2E03575 +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +577A2EB9-1E0A-C19F-F8D8-C16967E8BB85 +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +1F6C55C0-85A2-DCE1-7BDF-B46E9E3F7157 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +5EC5BF83-C283-9AD2-2F4C-BA19CFE7FCBA +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +8ED4D4AF-40BE-C4AC-6A00-CE86AFFDE4E1 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +5855B19C-3EBE-E508-6AEA-8455BCCDB7F4 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +6452312C-28DF-004D-89A4-393F54A98A74 +eRights + + + +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C9272CBA-2298-82C3-7639-0BB862F37F40 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +EF415F1B-0883-2855-4742-CD82F252BBF2 +eRights + + + +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +25132977-9621-3B5C-9EC1-6420ABE82865 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +5374C219-B082-89F6-CA7B-57383FF46222 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +920B140F-DFE5-4E12-812F-BE38FFAF4A89 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +4C8E5A82-843E-D3D9-41DC-C5ACB84AD2B0 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +6F4EF27C-92F5-FE74-FD36-9298139AC9FF +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +560F1FD7-184C-A7C6-1D57-DCBD48AB1622 +eRights + + + +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +D266C23E-0263-8DB3-AB84-E0FE207A3BFE +eRights + + + +true +false +1 +LOGDT024 +511 CHAR +511 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +9ABF9556-F7AC-1422-30B3-A836B5F8D3A4 +eRights + + + +true +false +1 +LOGDT024 +511 CHAR +511 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +21990717-83F3-90C0-3D94-2D20C0DDDDF8 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +37C6EAA2-AE5D-67D5-676D-21CA509648F9 +eRights + + + +false +1 +LOGDT024 +5 CHAR +5 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +A182700E-D693-8CF8-F291-545E7609D349 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +00C4A457-32EC-36A3-ABE2-F21B82C4B580 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +82D5D8E8-2A46-C363-B6C0-8D1CDB25F06A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +160E01A1-3DB8-4C34-0E76-BC388E0129AA +eRights + + + +false +1 +LOGDT024 +10 BYTE +10 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +0F6E4D23-C58E-26E8-495D-67B8B17482FA +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +5F7B144A-A42C-D4A9-E612-3812F0BB2D69 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +FB115C37-038F-514E-568C-269DBFAE035F +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +05A4405A-20ED-2322-683F-EA12A2454CFA +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +4E522695-D88D-F587-79BD-3F80D910874B +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +EAA75B2E-2C6A-1E72-A22D-EC6E3074C1E9 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +A959B018-5DFE-74F4-8898-7F436DC3D824 +eRights + + + +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +3C948F40-1012-863A-1E0B-06B7C7705724 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +977B812D-0632-E1AC-BA3D-429895ADE733 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +8C7B48AF-6576-74A8-C020-237D2573E5AA +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +DBDD255C-0F6F-87BB-08E9-14A08C7947C6 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +587F6728-6315-6F37-991F-C8BB584125C0 +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +6A24EA95-6443-10A1-EE5C-ADC8EB10E1C3 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +13A513A9-469B-33CC-D11A-C0E6B15F5E27 +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +92F2C5D9-B731-6BD4-F35B-25DC9E704040 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +6FA6C5A7-4879-39DA-5136-12C380FAE1E2 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +78474EB6-F247-A28E-79CB-6681FAF14B10 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +1460D6EB-5F78-ECCC-992D-8ED1C2AC0770 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +08555E95-C716-35A7-1DD7-8E63E5B32C28 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +69FCACD6-7F86-AE48-E35D-D5C50FB44DC0 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A56394A7-E8C4-DAD6-5447-A62E16E788A0 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/1538EE67-31E5-2ED2-855B-DB67B263DC87.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/1538EE67-31E5-2ED2-855B-DB67B263DC87.xml new file mode 100644 index 0000000..26f7351 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/1538EE67-31E5-2ED2-855B-DB67B263DC87.xml @@ -0,0 +1,104 @@ + + +walloar +2021-03-02 09:53:55 UTC +553540BB-8C28-E761-E9C7-357F98E646DC +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +AFF6EA3D-0ED5-5244-FE43-556339DBCBD0 +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +DDB12E76-973D-FDAC-A199-FFD7843951AA +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +C406D4BC-8238-3430-C24A-2A1A401738FB +eRights + + + +false +1 +LOGDT024 +255 BYTE +255 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +D0D102E5-D2F6-BAA0-F9A9-D9F9019502FF +eRights + + + +false +1 +LOGDT024 +255 BYTE +255 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +7677A461-5B94-A1DB-45A4-6C4E5264D17F +eRights + + + +true +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:55 UTC +5AFB5328-C819-BA9D-9F14-2211127F0A74 +eRights +false + + + +true + +0387F2E0-0D2F-1DF6-9507-E4C2231BE633 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/1627BE4F-1FD2-61DF-AA2D-864043976623.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/1627BE4F-1FD2-61DF-AA2D-864043976623.xml new file mode 100644 index 0000000..2893121 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/1627BE4F-1FD2-61DF-AA2D-864043976623.xml @@ -0,0 +1,182 @@ + + +walloar +2021-03-02 09:53:56 UTC +64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +6AA926C7-3A4F-EDB4-39C1-20A318070C66 +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +4393808A-0F62-EAB9-8334-18AA9BCD7468 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +5E757281-4FB5-5D15-A0A3-CF8E7A78E862 +eRights + + + +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B763A37A-FA65-8FDE-1659-5D9EE66D52CD +eRights + + + +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +178C29C3-ACEF-2079-43DD-347A83395C94 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +D2FFB9DA-A531-35F6-4814-CC8BD27565E8 +eRights + + + +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A40C24CA-8E5A-5935-5A3D-FC180397B35A +eRights + + + +true +false +1 +LOGDT015 +6 +,6, + + +walloar +2021-03-02 09:53:56 UTC +6728A4EF-E938-7F10-B696-BB2CF54D95BA +eRights + + + +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +C4F0F9BC-FCB5-AB6A-47BA-16F940220294 +eRights + + + +true +false +1 +LOGDT015 +6 +,6, + + +walloar +2021-03-02 09:53:56 UTC +A42AC8DB-03DB-49F9-C48F-DF08FB10C1E4 +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +0CB4E413-BFAE-2CC9-9DF2-95C01E316639 +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/19C2AE0B-5ABB-D92B-669D-7D164C93E569.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/19C2AE0B-5ABB-D92B-669D-7D164C93E569.xml new file mode 100644 index 0000000..774d839 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/19C2AE0B-5ABB-D92B-669D-7D164C93E569.xml @@ -0,0 +1,916 @@ + + +walloar +2021-03-02 09:53:56 UTC +27AB3173-8221-4362-B890-FE16F11A6765 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +336D2A36-E5C2-909D-2619-4B367F14C2F7 +eRights + + + +true +false +1 +LOGDT025 +9 BYTE +9 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +EEC70BC0-D914-2107-C85C-E5F191462189 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +06B57361-55DF-6714-1A71-31B8AF935238 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +8455A227-2D22-472C-2DB4-8FEC6CB946A2 +eRights + + + +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +3249CF13-8136-2053-A7D6-3BAC143EE8F4 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +2580E817-0BC5-A624-08A6-4A94E98EBA7D +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +CF56E323-13B5-05BE-E710-1C16D19E53B5 +eRights + + + +true +false +1 +LOGDT024 +1200 BYTE +1200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +889C08B0-75FB-7632-5C64-FCBDED5F020B +eRights + + + +true +false +1 +LOGDT024 +1689 BYTE +1689 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +DEA104DB-E1B0-8656-AF67-9F7E4D3BC5DB +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +C34DA4C3-CCE2-E425-6C8C-3B211D127FD9 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +BD0F2AF4-9506-A8AF-A989-80A23694DBA2 +eRights + + + +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +305E58F3-0D8E-BFDD-239B-173E9F01F620 +eRights + + + +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +6D42BB8B-84AB-7675-3C71-214DE6FF2582 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +A8A36E2C-2AF5-8315-B6B8-EDCD35459936 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +AD25DF1F-BE63-7428-C937-CAE2CCF6FA14 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +FEFE7350-14B6-BBB0-AC16-F3B6AFCBBAFA +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +91DA2579-D1F0-C1F0-8E83-7D9F8BC6A44F +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E0E47CEA-1A2F-585B-6AD8-0ADAEB674255 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +B02DE2F2-1625-B90D-03F7-72E91A3539C1 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +D5A581AB-3A7A-8CE6-ED95-9CC759A5D2CD +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +2F060981-2D58-1809-A73E-759A07152EB2 +eRights + + + +true +false +1 +LOGDT024 +24 BYTE +24 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +189004FB-20A9-ABAE-B372-28712A928ADC +eRights + + + +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +6BFCAED6-F070-B6C5-4FC8-44DEF4BF6D5A +eRights + + + +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +A1B93856-BD63-FC49-7BDF-A07095D9D53B +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +7DE587C9-BE00-FB91-C7C6-FB59A5B4AA4B +eRights + + + +true +false +1 +LOGDT024 +90 BYTE +90 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F5152F92-F1BE-75B3-D330-C0335B6B5B56 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +AC3B21ED-FFA6-CE88-2064-25D2130814E0 +eRights + + + +true +false +1 +LOGDT024 +90 BYTE +90 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +89A3AF52-2BA2-1F31-0DD3-6FF8AFF38773 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +0D75D90C-E965-A2AF-B362-707779CCDC02 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +D1FBBA8F-6F92-FC5E-2BC9-EC6D90766B63 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4B452035-97FA-2BEB-2762-BEF2E3489EA1 +eRights + + + +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +87B52092-6D5C-F84B-FCAF-774C97B8C559 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +4A3FC0F8-53AD-55AC-FC42-87DF21586818 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +7A3E986D-C13C-8627-5777-382F2AB91126 +eRights + + + +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7A6D3DBA-477E-ABE2-1E08-F0904D1F4198 +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9CC86676-91BD-3F5F-A211-00D856A18A3D +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +2CE4D04C-51D6-31EA-7FE5-B6A8CD3BB00E +eRights + + + +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9DF10502-6907-60BA-688A-599C718D6455 +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +49419D8C-E8C0-1557-337F-98C0061C3445 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +2F4CB57B-926E-D250-9067-3177D5CA0E2C +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +D252B32C-86B3-6731-14EA-424590C21BB3 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +ED1BA4E7-8213-4A54-A41C-DA2FC4861D5C +eRights + + + +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +365F0AEC-66EF-1143-E7CE-6CB0FBDD3A18 +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7017F0FD-1976-1AFD-B57F-277A538F0BDC +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +78D265D2-2CC5-D0C6-D7D2-1C8AFA7B3508 +eRights + + + +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7FDF79B2-ED3B-F02C-715B-2668E34B9C91 +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +76A0910A-4D9F-4F22-C5D8-80E045A5DBD4 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +7D2DE1E8-F2FD-2C5B-39F7-F82A087D615F +eRights + + + +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B1937593-8D9C-7868-73DA-91E9A3A467BE +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +83BD626D-F9CD-3397-D406-9134A30F6C61 +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +8E37CF38-7A86-46DB-5B8C-7774DC5947DB +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2153A8F2-925B-7C9E-8DE8-41340DED276B +eRights + + + +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +49E2FDD3-9C73-FCF1-8586-8008A444CC85 +eRights + + + +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +AA1DB387-7AFB-423A-0FC2-154F35056C27 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7596A243-4EEB-0ECE-A13D-9C4AD3D5A91B +eRights + + + +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +AED3CB72-D08C-8F91-7AFC-05B4EA3F8056 +eRights + + + +true +false +1 +LOGDT015 +6 +,6, + + +walloar +2021-03-02 09:53:56 UTC +D6220B06-F64F-7733-0133-C7BDDBEE4CE4 +eRights + + + +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +5F9249E6-CB6A-DC84-2070-BCAA3C8AC619 +eRights + + + +true +false +1 +LOGDT015 +6 +,6, + + +walloar +2021-03-02 09:53:56 UTC +C487DA59-BEF1-7126-7B55-362D03904C29 +eRights + + + +true +false +1 +LOGDT024 +900 BYTE +900 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +1C4BA16B-26E1-565F-A5A2-4CBDB8225EE5 +eRights + + + +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/1A8EC118-CF74-21F4-D9CB-E1D45087EA97.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/1A8EC118-CF74-21F4-D9CB-E1D45087EA97.xml new file mode 100644 index 0000000..a1a12d2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/1A8EC118-CF74-21F4-D9CB-E1D45087EA97.xml @@ -0,0 +1,78 @@ + + +walloar +2021-03-02 09:53:56 UTC +EA9E31FF-E810-F570-9354-8B2CA9473801 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +E3124291-A993-4C23-4213-4A4794B247F9 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +16E02466-0EC3-755A-97C0-3A8400F36126 +eRights + + + +true +587B5FB6-A155-75E0-96C2-E7BA8AA0515F +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +4FFA3719-6E4F-A41C-CFC3-721B0CD15782 +eRights + + + +true +1E317FC4-9686-5B2A-C41D-842669B03869 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +F70CC781-77E5-4C67-36F4-D09B5C67FB66 +eRights + + + +true +false +1 +LOGDT019 +,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/1E6EF06A-4036-3EDA-8064-6985CCE104D4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/1E6EF06A-4036-3EDA-8064-6985CCE104D4.xml new file mode 100644 index 0000000..85985dc --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/1E6EF06A-4036-3EDA-8064-6985CCE104D4.xml @@ -0,0 +1,226 @@ + + +walloar +2021-03-02 09:53:56 UTC +A6257421-D545-B3B5-624E-10E8629539A7 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +A8C23CD4-7F61-5755-859A-2A7C2EF7DE46 +eRights + + + +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +BFACE714-233F-5B4D-9271-79C39A4F7C0D +eRights + + + +false +1 +LOGDT024 +95 BYTE +95 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +5436493D-66AC-4572-E77C-B2D81B285BD4 +eRights + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +75A2B9C9-A4B6-3094-FF3B-14226ECB16DF +eRights + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +66FBC1D4-4355-0284-9AB6-EB45D3FCEA56 +eRights + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +CBB94010-1637-4E5F-39BC-884BBCBC98AD +eRights + + + +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +0646CA7D-7FC5-50CA-BA93-72079CB0F087 +eRights + + + +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +996D40C8-0393-5E15-A98D-8E68DCDC48B7 +eRights + + + +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +9C94222B-61B3-9E09-CE65-8794D4F5B050 +eRights + + + +false +1 +LOGDT024 +16 BYTE +16 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7E5B853F-E0F5-20A8-C0BC-FB5B9B025D95 +eRights + + + +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9481F751-5F98-34D6-0214-9EA8850F23AE +eRights + + + +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +CFABF110-D12B-BEE0-EE87-4C97341C6C51 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +3C5B7322-FBBA-4E8D-0397-F74E35762569 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + + + +walloar +2021-03-02 09:53:56 UTC +CED2EDC8-D6BF-3DF0-E260-0A2A6B12D632 +eRights +false + + + +true + +92CFDFE9-3FB2-497E-4049-74ED999735C9 +AA017A8D-0670-DC0B-BC71-484CEC7A0B5A + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/1EFA70F1-7A65-2AEC-CA48-F8BB6C3E1D5D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/1EFA70F1-7A65-2AEC-CA48-F8BB6C3E1D5D.xml new file mode 100644 index 0000000..e9ba2f6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/1EFA70F1-7A65-2AEC-CA48-F8BB6C3E1D5D.xml @@ -0,0 +1,197 @@ + + +walloar +2021-03-02 09:53:56 UTC +9EF11193-6374-BB46-55D6-BB9A0959070C +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +0479C048-65F0-1624-2C01-B438965A2B55 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +58D6CEA4-8F85-1587-23B4-A770710C799A +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +FE0450C8-6F18-0165-9D4B-6D6114D5B2E6 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +C2C26A69-D5B8-5ADF-64CB-1A2D86EF858E +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +55368B1F-C264-7EB8-E77D-65A7310F175A +eRights + + + +false +1 +LOGDT024 +5 CHAR +5 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +00401CB0-C747-4A14-6944-2E0EE3D5F555 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E6708B1F-2511-8013-A432-D6E340439061 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +A2F366AA-852F-194F-0618-DE4A090635D1 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +1107CC84-1B3E-B5FF-1AA0-E60A11FBE9AE +eRights + + + +false +1 +LOGDT024 +10 CHAR +10 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +B645C6C8-74D6-0F9D-C977-8E6ED011B106 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +6EF26F7C-AB70-B542-331E-818BFB91091E +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +388F417D-79B6-628F-726C-A0558A12AC00 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/236E69EB-16C1-4FED-222F-5D33928F7A09.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/236E69EB-16C1-4FED-222F-5D33928F7A09.xml new file mode 100644 index 0000000..b63aa18 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/236E69EB-16C1-4FED-222F-5D33928F7A09.xml @@ -0,0 +1,219 @@ + + +walloar +2021-03-02 09:53:56 UTC +CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +A8101437-A2F3-C2DA-EDAB-7DFA12B01141 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +C5BC2E69-9A7F-AE70-C4DD-1B975BF5E4C7 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4FB22FFB-48DE-E617-5DEA-54628B0813E9 +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +834E2551-BBAC-58AF-86E7-26D45E92D084 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +A1781827-F932-FDA2-ACDC-5ED04AC0474D +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +11A901D0-BC77-8760-DFA2-264FB7556A0B +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +94DC0AC8-8412-81BB-31BE-85909DC5FB6C +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +9F1D517C-8BD7-09DA-9EB1-74DCAC71E2B3 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4CEC03F4-936C-6852-7294-62A8D1539A47 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C9AD8BDA-D3DD-FDF0-35F6-1DE43A0A484E +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +6DB917FC-032F-9099-B666-8D5E622ADFB2 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +9EBF9C5F-148D-630A-9590-7A38BB544C16 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C32280F6-864F-0C4B-9A65-769991DD94C5 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/2580CBB3-B97C-B649-9472-3D153EA8A687.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/2580CBB3-B97C-B649-9472-3D153EA8A687.xml new file mode 100644 index 0000000..13e0e68 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/2580CBB3-B97C-B649-9472-3D153EA8A687.xml @@ -0,0 +1,125 @@ + + +walloar +2021-03-02 09:53:55 UTC +4FB9EC34-C463-4EB0-4291-ACEE0D992FB6 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +D819AF0C-E95D-FE05-EDF9-D86B0A7BCB3C +eRights + + + + +4A289E71-44F7-2BEA-A3D8-6B78DD82B453 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +613116D9-CBC2-D5ED-F445-E9747F6516F6 +eRights + + + + +527554BD-8ACA-CD89-8105-A0F927A00EF5 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +D819AF0C-E95D-FE05-EDF9-D86B0A7BCB3C +eRights + + + + +36FAE2DA-C70F-C5C4-BC3B-D1E17EF145E7 +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +F8024CC5-DB5B-2E31-9233-44B87475D677 +eRights + + + + +CHK_ANK_EDMS_SRCD_STATUS +false +1 +LOGDT024 +10 BYTE + + + + + + + +10 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +D819AF0C-E95D-FE05-EDF9-D86B0A7BCB3C +eRights + + + + +E5A82808-9BCB-6177-E745-79AA5100AA0B +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:55 UTC +08ADEB45-5870-4330-C2CA-19ED4F5152A6 +eRights +false + + + + +true + +FFDD8DE9-56C8-7F50-41E5-838ECC34465D +6B283D90-D06C-90AB-2130-932DDBCB6AC6 +CD11DC50-6D47-50BB-2978-B01D19E23431 +91B3505C-8F1D-DF42-C878-05280B53A2F8 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/2BF74E48-10B6-230C-329B-98903AA81EA7.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/2BF74E48-10B6-230C-329B-98903AA81EA7.xml new file mode 100644 index 0000000..d547ad7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/2BF74E48-10B6-230C-329B-98903AA81EA7.xml @@ -0,0 +1,77 @@ + + +walloar +2021-03-02 09:53:55 UTC +CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +4E31159F-0558-2DD6-DE0C-24F404298418 +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +DB333C79-F578-CA1E-270B-E66FB0D80B95 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +3D460F59-57E6-685B-668B-7EAC5948ABE5 +eRights + + + +true +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:55 UTC +81C4972B-91D6-AE3E-0833-67784BD6B25D +eRights +false + + + +true + +943811A2-8D04-64CB-1D36-7243DB68CA31 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/2C600E10-CDB3-CA41-2AD9-EC601B961F93.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/2C600E10-CDB3-CA41-2AD9-EC601B961F93.xml new file mode 100644 index 0000000..068c20f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/2C600E10-CDB3-CA41-2AD9-EC601B961F93.xml @@ -0,0 +1,228 @@ + + +walloar +2021-03-02 09:53:55 UTC +F28AEFDE-0804-3C83-F214-6330BE84607B +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +53EB977C-AADD-F6B3-6423-127439C94146 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +6723AA1F-AE41-2087-B3C9-CF448CA500E6 +eRights + + + + +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +7F252970-7173-7EC7-8E41-C0038D5D21DF +eRights + + + + +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +35FCDA7D-C08B-77C6-8F67-3CC5F017F5DA +eRights + + + + +true +false +1 +LOGDT024 +25 BYTE +25 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +CB1FA3E7-2D9D-25D9-0479-6B3307CA15C9 +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +E8BF13EF-D679-B0B5-2758-BA98EC6013FD +eRights + + + + +CHK_ANK_EDMS_EMAILS_FORMAT +false +1 +LOGDT024 +10 BYTE + + + + + +10 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +8C8F9BB6-61B2-186A-A5B3-11CD08C2ED84 +eRights + + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +95DFB0FD-6C5B-F1DD-BBC0-FB9B6B743AFA +eRights + + + + +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +9E96C820-C310-32F9-84F6-E711BDEE82AB +eRights + + + + +false +1 +LOGDT028 +4000 +4000,, + + +walloar +2021-03-02 09:53:55 UTC +541D1968-0B1B-897C-A524-CE0E4D7879F1 +eRights + + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +E1FA4F83-2857-E9C4-8852-8BAF584F8B58 +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +16D20748-B9FD-5871-800A-646E04864E11 +eRights + + + + +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:55 UTC +D520E03C-5B2F-E54E-0A01-3BDA5B4EED17 +eRights +false + + + + +true + +0C9E2E30-978D-41DA-A872-8FE002C6ECCC + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/34E28D0E-DF2A-4861-FE91-5B07537FBF53.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/34E28D0E-DF2A-4861-FE91-5B07537FBF53.xml new file mode 100644 index 0000000..cbcad04 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/34E28D0E-DF2A-4861-FE91-5B07537FBF53.xml @@ -0,0 +1,137 @@ + + +walloar +2021-03-02 09:53:55 UTC +C90B6B2E-6AFE-10D3-5D64-4CD75BE58765 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +043CCF13-0F97-F4DE-ADD0-BC51BABCEF35 +eRights + + + + +0C9E2E30-978D-41DA-A872-8FE002C6ECCC +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +CC69106A-FBC8-6BD3-E138-F27F6DE4FE6E +eRights + + + + +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, + + +walloar +2021-03-02 09:53:55 UTC +622E787A-2BF4-1671-6370-25AA09D2CF8D +eRights + + + + +true +false +1 +LOGDT024 +25 BYTE +25 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +5E1F75FA-B0C3-E816-6BAA-94658817D75A +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +9249F7B3-B99A-31AE-03AD-E37D17AAC1D2 +eRights + + + + +CHK_ANK_EDMS_ECD_STATUS +false +1 +LOGDT024 +10 BYTE + + + + + + + +10 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +D69D7B63-F953-D09B-3AB3-89C9A21D78CF +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + + + +walloar +2021-03-02 09:53:55 UTC +D42EB837-D3E9-2D44-2A27-A1A5195B4B21 +eRights +false + + + + +true + +41435BA7-E7F1-F8F9-D69F-5166D8906E21 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/383E3DF3-8190-8E30-6815-F463818C3D6D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/383E3DF3-8190-8E30-6815-F463818C3D6D.xml new file mode 100644 index 0000000..b2cdcf4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/383E3DF3-8190-8E30-6815-F463818C3D6D.xml @@ -0,0 +1,124 @@ + + +walloar +2021-03-02 09:53:55 UTC +7328B927-1B91-95B9-E292-CC68E5AB9548 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +6904B5C5-5960-DCE5-D4A2-DEA4AE3F1574 +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:55 UTC +B304E179-2927-059C-ADD2-C611817429B2 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +796AFC86-BE8B-B691-89FC-38C76C483677 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +77FD16B8-F334-EDF4-75BE-BD8CC91532A9 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +1FD7E411-B1AA-965F-F044-B66A811AAC52 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +975F8469-FD6A-1B27-76E3-EB5072C3E56F +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +0EBA5570-8BC8-85FE-0E34-572EFB8199DE +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/3A197A79-F412-9811-F8BA-37E76923A918.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/3A197A79-F412-9811-F8BA-37E76923A918.xml new file mode 100644 index 0000000..82188c8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/3A197A79-F412-9811-F8BA-37E76923A918.xml @@ -0,0 +1,98 @@ + + +walloar +2021-03-02 09:53:55 UTC +2AC190F4-57F3-9518-A7E0-8D5D6A6D9230 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +23FDAAE0-304B-5E4D-9BFE-2B4BA74A90E1 +eRights + + + + +527554BD-8ACA-CD89-8105-A0F927A00EF5 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +17D23094-ADB5-0569-71A2-53D4A2D4F233 +eRights + + + + +false +1 +LOGDT025 +36 BYTE +36 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +CFEC5FCA-EE4C-19FF-4703-45C044212BC2 +eRights + + + + +false +1 +LOGDT024 +25 BYTE +25 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +B53FF45D-3E67-49D1-F08A-7712455DB013 +eRights + + + + +false +1 +LOGDT024 +1024 BYTE +1024 BYTE,, + + + + +walloar +2021-03-02 09:53:55 UTC +F135D7A7-2F7D-CDA6-A5EF-6CCAC391E70B +eRights +false + + + + +true + +35925297-5F05-6395-FD75-FBB74A0CB0DB + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/3A36829E-48BC-5E74-0502-0A66603D8939.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/3A36829E-48BC-5E74-0502-0A66603D8939.xml new file mode 100644 index 0000000..0d21b70 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/3A36829E-48BC-5E74-0502-0A66603D8939.xml @@ -0,0 +1,149 @@ + + +walloar +2021-03-02 09:53:55 UTC +9DA3B915-AEE5-12D0-D98D-46EE098AD69E +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +4EC0410B-F3ED-536F-049B-CF90E0332A88 +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +69D466DE-AF7B-E1F2-0B11-0DA09CE792E6 +eRights + + + +false +1 +LOGDT024 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +ED7F372A-9000-2AA8-3E8E-98B31F248DCB +eRights + + + +false +1 +LOGDT024 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +D2BB17F9-ABBE-6A0C-F887-B04551F4E742 +eRights + + + +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +CDEC5141-8310-7BB6-CFBC-896FB094CFB1 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +5552C3B5-9350-FA0A-BAAB-3A928AB24FE2 +eRights + + + +true +false +1 +LOGDT015 +6 +,6, + + +walloar +2021-03-02 09:53:55 UTC +E1622E85-F570-8A7B-6B84-E53A65C597B4 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +E0BAF018-1CAD-5CF1-E3D8-A77A5939DE4D +eRights + + + +true +false +1 +LOGDT015 +6 +,6, + + + + +walloar +2021-03-02 09:53:55 UTC +AC4484FF-C29A-C7F6-D635-9546E65FE004 +eRights +false + + + +true + +9DE7FB35-99F5-1ADF-8DB2-28045C08D661 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/3CBD182B-787C-047D-A4B4-69AACC43DDD1.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/3CBD182B-787C-047D-A4B4-69AACC43DDD1.xml new file mode 100644 index 0000000..1931e1d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/3CBD182B-787C-047D-A4B4-69AACC43DDD1.xml @@ -0,0 +1,135 @@ + + +walloar +2021-03-02 09:53:56 UTC +43547470-BAAB-8980-C971-6E0B2EEA7C9D +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +4BE4A393-9904-8CEF-DAC7-4F30BFF6B99A +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +E5E7B30D-808E-476D-A6A8-0F3E404B3B4C +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +AE2771B9-5551-8C52-4B21-2C33F547CA46 +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +5602B522-52AB-2F29-A5ED-F5488758B8C9 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +D3BB98A8-C71D-8DAA-067C-A5D0CBDBB224 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +834CA2B1-A2C7-0E87-53AC-1B83DB92AF02 +eRights + + + +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +1CACD13A-3206-6455-7C62-EC82D40227BF +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +D0BB763E-F13A-D203-7066-36C81E9A126C +eRights + + + +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/3FE96EE0-95F9-4F69-9FC6-2FDA37553DE6.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/3FE96EE0-95F9-4F69-9FC6-2FDA37553DE6.xml new file mode 100644 index 0000000..7c05160 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/3FE96EE0-95F9-4F69-9FC6-2FDA37553DE6.xml @@ -0,0 +1,65 @@ + + +walloar +2021-03-02 09:53:56 UTC +3055D235-F362-1B93-5483-877997EAB707 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +8F64E16A-95C8-1635-221E-5288256CB55A +eRights + + + +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +63BFC88E-3EDF-A398-5456-2DEE666B98BC +eRights + + + +false +1 +LOGDT024 +40 BYTE +40 BYTE,, + + + + +walloar +2021-03-02 09:53:56 UTC +B5A4A996-EEE3-747D-EB5B-BEB62277A855 +eRights +false + + + +true + +536F0D43-BCF4-4520-48CD-16DEC568CADB +DB3494F6-BFB0-4AB8-B6E0-61319CAA7E05 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/4D41A940-7772-0F4E-D47A-6975BB2D5AF0.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/4D41A940-7772-0F4E-D47A-6975BB2D5AF0.xml new file mode 100644 index 0000000..1bb3a7f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/4D41A940-7772-0F4E-D47A-6975BB2D5AF0.xml @@ -0,0 +1,163 @@ + + +walloar +2021-03-02 09:53:56 UTC +4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +008DAECF-D9CE-790D-5E20-F99E23972044 +eRights + + + + +675A581C-86EF-4D68-9D95-52C54296A9F5 +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +008DAECF-D9CE-790D-5E20-F99E23972044 +eRights + + + + +323EFBA8-35C4-7792-B864-BE76652DD698 +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +008DAECF-D9CE-790D-5E20-F99E23972044 +eRights + + + + +681A1055-759C-A8C2-8698-57433F38C50B +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +61F2C4AF-6359-F4F7-808B-7A88C287A9BF +eRights + + + + +true +false +1 +LOGDT029 +4000 +4000,, + + +walloar +2021-03-02 10:15:32 UTC +008DAECF-D9CE-790D-5E20-F99E23972044 +eRights + + + + +952844E2-DA2B-4F1B-259A-3B8EA880491B +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-02 10:15:32 UTC +008DAECF-D9CE-790D-5E20-F99E23972044 +eRights + + + + +9840F489-6AF7-A876-BB1D-C673DD36F02A +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-03 09:44:12 UTC +008DAECF-D9CE-790D-5E20-F99E23972044 +eRights + + + + +952844E2-DA2B-4F1B-259A-3B8EA880491B +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-03 09:44:12 UTC +008DAECF-D9CE-790D-5E20-F99E23972044 +eRights + + + + +9840F489-6AF7-A876-BB1D-C673DD36F02A +false +1 +LOGDT024 +200 BYTE +,, + + + + +walloar +2021-03-02 09:53:56 UTC +CD557C65-EE4A-56F7-E476-B94FAE8F5C58 +eRights +false + + + + +true + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/51A4A3B2-AFF4-BEF1-0E47-742E01DF188A.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/51A4A3B2-AFF4-BEF1-0E47-742E01DF188A.xml new file mode 100644 index 0000000..9da54c7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/51A4A3B2-AFF4-BEF1-0E47-742E01DF188A.xml @@ -0,0 +1,278 @@ + + +walloar +2021-03-02 09:53:56 UTC +2865D6B2-76D3-5ED0-460F-BD2F90142C4B +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +E20828DC-3DFF-EA39-969A-58AB34907529 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +0C2FF6A0-6681-01C7-AA05-9E746800B680 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +E73C70A7-4024-B274-1AB6-79365C61C9B5 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +11E0C8E2-2FEC-A913-EE9B-9A44B50DFC53 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4446E36D-06E3-F6C7-F573-6D1CED9DE760 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +09946E5C-206F-F045-8AFF-4F1E2E53CE6B +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +684C3BA8-6F84-877E-8E24-F454825A33E0 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +20E7CB13-12D8-349D-3D71-99D4DAD45574 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +19FFCF28-B9CF-B645-37FD-A631EDF2FB98 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +94F51482-1B41-E7B3-9CE6-741DDE546C30 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +FDCCA541-2295-7BCE-F52C-3FC319E109F5 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +81FA53B6-0478-770D-DF2B-E55EE155D311 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +FDD42E33-60FE-0681-9FBB-AF7E8254F148 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +8C653A1D-3645-C08B-35E0-0C29A0BAFA62 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +F40FF01A-C733-8543-EC18-13EB25BC380D +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +9A8CF051-BB93-84C0-4A16-2AD0E1FBC223 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +4F6AEBB7-1377-85C5-2E3B-6CC383E1466D +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/53DC252B-31A1-BC79-05DE-6287F3A46C1A.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/53DC252B-31A1-BC79-05DE-6287F3A46C1A.xml new file mode 100644 index 0000000..47a54fb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/53DC252B-31A1-BC79-05DE-6287F3A46C1A.xml @@ -0,0 +1,192 @@ + + +walloar +2021-03-02 09:53:56 UTC +7495A51C-E8A9-14BE-EABB-02B4CAB54568 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +75AAE159-B2D4-97BF-3408-801BA0A581B8 +eRights + + + + +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +CB9A8FA9-FC23-766E-E1B7-CDE967BAEAE6 +eRights + + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +CE9BB28F-BCC7-E958-D536-AC7AF52EF43B +eRights + + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +1F697908-0B09-D457-4008-09240D8463D8 +eRights + + + + +true +false +1 +LOGDT024 +250 BYTE +250 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B60FCBF7-5D9C-2B3E-7D9C-78F6C3BD4AC9 +eRights + + + + +false +1 +LOGDT024 +250 BYTE +250 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +ADE99F14-2DAE-0C3F-2CFC-784B062B0574 +eRights + + + + +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A2FADA5A-5384-B8B9-0A14-1D70AC497524 +eRights + + + + +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +4F3CE77F-343A-801E-35D8-6EADC9EE9B6A +eRights + + + + +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +3E121D59-4964-F39C-893B-87783D23C830 +eRights + + + + +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B626444E-6153-349A-775C-0E3D9BE8F0F6 +eRights + + + + +true +false +1 +LOGDT029 +4000 +4000,, + + + + +walloar +2021-03-02 09:53:56 UTC +F002BBBD-6D77-5202-4E26-521A2ABBAFC7 +eRights +false + + + + +true + +16DA4AB6-1613-7D13-DDC5-BBAA1E75D452 +575E9E0B-42AD-2B75-9556-C36CD8D52096 +E21FF685-221F-2DD8-9BFB-A6FB32D6EB46 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/54F5ABB2-D9D3-6F84-A6BE-7BE9418086FC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/54F5ABB2-D9D3-6F84-A6BE-7BE9418086FC.xml new file mode 100644 index 0000000..65c8a44 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/54F5ABB2-D9D3-6F84-A6BE-7BE9418086FC.xml @@ -0,0 +1,145 @@ + + +walloar +2021-03-02 09:53:55 UTC +BB0C4DC3-BF20-022E-2EC1-9C41C22FD723 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +77163B9E-9DA1-53D5-F399-1EEB0E19230D +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +2BCE959C-63A7-6313-70A7-DCF7A05B4AA0 +eRights + + + + +0C9E2E30-978D-41DA-A872-8FE002C6ECCC +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +385A9993-303A-AD97-1735-45B242E61DC2 +eRights + + + + +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +7A1EEDCB-F121-3216-79B4-2CF81EDEC2EB +eRights + + + + +false +1 +LOGDT024 +255 BYTE +255 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +ED50C87D-351C-13BC-44E3-53E61C49FDFD +eRights + + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +A6998172-AD3D-26B9-D07B-4C6F583872F0 +eRights + + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + + + +walloar +2021-03-02 09:53:55 UTC +FA3C8983-38A0-07BE-FF30-9B5FCE45EEB5 +eRights +false + + + + +true + +EAD06FA5-2B9C-2BF9-E1E4-491AEC643CFB + + + +walloar +2021-03-02 09:53:55 UTC +F4254CF3-7A75-70B2-A927-412584C95FF1 +eRights +false + + + + + +EAD06FA5-2B9C-2BF9-E1E4-491AEC643CFB +D8CF9EE5-0332-F5F1-150B-0C5B89594C09 +29F20B6E-1181-328F-B337-85A765532E96 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/554A4597-91E5-9A87-3DF1-D09000170E3C.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/554A4597-91E5-9A87-3DF1-D09000170E3C.xml new file mode 100644 index 0000000..a631aba --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/554A4597-91E5-9A87-3DF1-D09000170E3C.xml @@ -0,0 +1,829 @@ + + +walloar +2021-03-02 09:53:55 UTC +7437BF45-8F48-51D1-B640-07B1543F8D13 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +9A7B1580-BF2E-4181-E524-A10E14DCBF90 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:55 UTC +E0C5FA83-1FFA-8FB7-2916-07A777C49059 +eRights + + + +true +false +1 +LOGDT019 +6 +0 +,6,0 + + +walloar +2021-03-02 09:53:55 UTC +1BA5C119-38B8-A01F-580E-3FCE5368E43B +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +AD9066E0-0DFA-B5A8-7032-76C445951919 +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +06C299CB-8CE2-2A35-EB62-AA53C4AA48FA +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +97E6FE9E-67B0-9700-4872-60F712B2EBA9 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +BFEB14D7-0623-A2CA-35CB-6DBB06E2D70E +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +96933B3F-D24D-6D49-4538-732A96E146F3 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +88ABDE02-672E-D903-7428-2060799A10E4 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +93084BB3-F2C0-EE6D-F034-0BBD6B6B423E +eRights + + + +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +4746AE8B-42D1-975C-6AA9-F732155562B5 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +A63E2FD0-87CB-9798-A461-3B3BBFC05960 +eRights + + + +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +707997D3-3FE3-D2FB-5D4A-5F7D2DF9E864 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +DB3E544D-3C23-7799-DDB1-F124E17A8BFC +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +F1EC462A-D55A-3B84-65D6-808F1F24778D +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +53659D3C-32FF-BC14-59AF-878303476DCB +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +0396C7EC-073A-6B96-E876-9A980262D813 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +BA5C769E-6A47-E934-D6C2-FAED48D30FBD +eRights + + + +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +4C6076F0-CC39-5F3B-0AEE-786352A420C8 +eRights + + + +true +false +1 +LOGDT024 +101 CHAR +101 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +F5626632-C48F-69D1-2EC4-D7CFE49DBACF +eRights + + + +true +false +1 +LOGDT024 +401 CHAR +401 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +8569D065-333B-CE37-69EF-926FB7332EC3 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +AA5A42C9-C109-9AD7-F584-4D9F10216A90 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +0C3988F3-4C0D-D0E3-C052-FF77646F0964 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +5C50565E-33B4-466B-F12A-E33C721A8773 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +44505DDE-8945-80EF-25EE-0C0613C0FAB7 +eRights + + + +false +1 +LOGDT024 +5 CHAR +5 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +4C480338-A889-FC10-1293-A56ECF58CFF2 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +41B200DA-31A1-1515-D3D1-2121CF2C312D +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +60BEEB4D-810B-90EB-FD84-AEDDB8B8557E +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +5AFD9B32-AC4A-3B42-4716-A73F1C06AB6A +eRights + + + +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +17BFDC91-39CC-F521-2452-054B77AE1A50 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +E79C6AFC-A55B-C633-7BCC-2EDD33A67BF1 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +A226CBBD-4EC2-10A3-9F02-C30A8F54BEA2 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +09353731-B8B3-8218-4EE5-59A11C975F84 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +5041EDD9-2F13-1989-12B3-68794AA322C6 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +091EA81A-C504-135E-38B3-78380E3071AB +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +F5D22899-C42C-9EC8-5D47-80211D1A2B2A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +512AF202-45EE-F3C3-FAF4-D7047F5132E4 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +FEC117D6-CC75-C25A-FE0C-DC114C69B246 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +C5FCC71F-EA30-4C81-80F6-E1B19D2DA634 +eRights + + + +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +7B5DD59B-26D7-4A79-359E-0C7E98629F2F +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +3F1ECC96-0561-97C9-5438-18E48E897600 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +D436C7EA-D7FA-26CA-B424-070F77409BFC +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +78F493D3-EBAE-5824-F56D-E19AB654EFF6 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +374DF08B-BFEA-010C-D0A0-33BF91410112 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +DFEE2567-93CC-713E-DB9E-6294344A5A73 +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:55 UTC +16209711-DBF8-A009-3EB9-01B5250C64D2 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +1B30CB75-3E22-2AE8-9FB5-BA53433E1F8A +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +722D1220-7486-C197-BB36-48B153290E9F +eRights + + + +true +false +1 +LOGDT024 +563 BYTE +563 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +22675D32-C957-08E2-E91A-62B96569551A +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +240DCEC7-587E-2D43-24CA-53BBB164A4A8 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +73D4256E-BE9D-BA71-1FDE-54B949FF75BD +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +B9847028-A7D6-8CE2-E717-DA9C1B245FF7 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +8C39D3B7-0A5F-DE7A-20E4-E4CF35024FF2 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +F1C3705B-8E05-5D77-5E7F-3EA9D6A02228 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/56CABDF3-5535-A1EC-AB17-B73FE749E03E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/56CABDF3-5535-A1EC-AB17-B73FE749E03E.xml new file mode 100644 index 0000000..78ac593 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/56CABDF3-5535-A1EC-AB17-B73FE749E03E.xml @@ -0,0 +1,142 @@ + + +walloar +2021-03-02 09:53:55 UTC +1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +28D362AD-F13D-D58B-8EF5-4A013E3E52F1 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +25A32C98-8731-A2AC-3DE8-1D4239184F6C +eRights + + + + +800C6C00-8D60-4ECC-5D09-08924142E16E +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, + + +walloar +2021-03-02 09:53:55 UTC +DF971A6C-0213-B1CD-00DA-E3568EEF6725 +eRights + + + + +false +1 +LOGDT024 +64 BYTE +64 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +A02F7776-43D2-6530-F465-5CCDC2D541A4 +eRights + + + + +false +1 +LOGDT024 +64 BYTE +64 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +A3794015-A818-B9C0-BCD1-B7985A30E792 +eRights + + + + +false +1 +LOGDT024 +64 BYTE +64 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +CEABD9A9-1BD9-4152-630E-6669E38F99B2 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +E035B278-481A-5264-3D0C-554A24432801 +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + + + +walloar +2021-03-02 09:53:55 UTC +D8725D0D-337C-58FC-DF71-1F93F2CAB60F +eRights +false + + + + +true + +F110FF2F-A877-7D35-8666-D36C6790D80D + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/59763EA4-4AA3-992D-969B-E21B236CB447.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/59763EA4-4AA3-992D-969B-E21B236CB447.xml new file mode 100644 index 0000000..47fdf0f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/59763EA4-4AA3-992D-969B-E21B236CB447.xml @@ -0,0 +1,329 @@ + + +walloar +2021-03-02 09:53:56 UTC +9468D46E-3C04-CCB6-1EB0-D7398A399B45 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +85536C2D-DE96-659A-488C-664E4DFDD24B +eRights + + + + +675A581C-86EF-4D68-9D95-52C54296A9F5 +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +85536C2D-DE96-659A-488C-664E4DFDD24B +eRights + + + + +323EFBA8-35C4-7792-B864-BE76652DD698 +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +85536C2D-DE96-659A-488C-664E4DFDD24B +eRights + + + + +681A1055-759C-A8C2-8698-57433F38C50B +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +6BB1D1C8-EBEB-0BF9-75E5-AAB74CEE42E0 +eRights + + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +27D39468-B882-6E4A-90F2-F4332C720BCF +eRights + + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +159F4A56-07E3-00D8-F3AE-8C990BBDA328 +eRights + + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +C56DADD1-0A58-8FCD-2483-506812A841D9 +eRights + + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +5A0D1371-2146-B65F-495B-9BF4CD0096DD +eRights + + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +09E350F0-6DAD-A390-F033-E18DFCA2A372 +eRights + + + + +true +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +2E056FF3-17E3-9BFD-CF00-213A3C47D80F +eRights + + + + +true +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +A85D607B-3DD9-CDDD-9118-D586FF476370 +eRights + + + + +true +false +1 +LOGDT019 +13 +4 +,13,4 + + +walloar +2021-03-02 09:53:56 UTC +9A59B1D8-E6D3-9D8A-3529-3E495D77A951 +eRights + + + + +true +false +1 +LOGDT019 +13 +4 +,13,4 + + +walloar +2021-03-02 09:53:56 UTC +3C7C2079-968E-ED54-8488-34553C9031D9 +eRights + + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A8022800-86FF-712D-F9B8-3CCC8F9C8C0E +eRights + + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 10:15:32 UTC +85536C2D-DE96-659A-488C-664E4DFDD24B +eRights + + + + +952844E2-DA2B-4F1B-259A-3B8EA880491B +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-02 10:15:32 UTC +85536C2D-DE96-659A-488C-664E4DFDD24B +eRights + + + + +9840F489-6AF7-A876-BB1D-C673DD36F02A +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-03 09:44:12 UTC +85536C2D-DE96-659A-488C-664E4DFDD24B +eRights + + + + +952844E2-DA2B-4F1B-259A-3B8EA880491B +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-03 09:44:12 UTC +85536C2D-DE96-659A-488C-664E4DFDD24B +eRights + + + + +9840F489-6AF7-A876-BB1D-C673DD36F02A +false +1 +LOGDT024 +200 BYTE +,, + + + + +walloar +2021-03-02 09:53:56 UTC +51B3DB44-DCDE-7E7B-42C1-7B514BC512F8 +eRights +false + + + + +true + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/59CE36DB-C17D-DE86-27CC-1B4B49D6BA14.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/59CE36DB-C17D-DE86-27CC-1B4B49D6BA14.xml new file mode 100644 index 0000000..1b58aa3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/59CE36DB-C17D-DE86-27CC-1B4B49D6BA14.xml @@ -0,0 +1,292 @@ + + +walloar +2021-03-02 09:53:56 UTC +8EED841A-564F-73D4-B7CC-0B63A5CD28B4 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +8E53E153-9F19-5529-9963-9C4835F0A05B +eRights + + + +true +false +1 +LOGDT024 +51 BYTE +51 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +34F40095-DB15-607A-2FF6-A48FD78CDE0D +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +E66A827C-1B7D-5FFF-9EF4-5185849D6FDC +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +04775907-6E6B-1397-64AF-2E300FD9B3FA +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +1A6D828C-F871-1CBB-421F-27B01DF63BAC +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +CDA57C61-7038-FFEB-822C-100D68E5F96A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +8ECF5C47-E79E-FDC7-69A6-58CFEC68612B +eRights + + + +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4988B063-B4C3-7483-2C6B-C91F0B6BD45A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +FD5E95D4-754C-633F-B63F-5A66EB0BE46A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +A0FBA189-622F-6EFE-DFA0-B376C4155B07 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +14985099-DAE4-41FA-8370-C838E004A5FA +eRights + + + +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +CFCF8869-BEFA-6411-4536-13BA4AA7880D +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +2D9B5DB9-AF1E-5DD9-A1A4-7FD6D5B004F1 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +DF3CD2AD-211C-4336-A7BC-682A9C54C878 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E3B38D88-04A1-EA8F-7E16-C2C317EA9FE2 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E8D48FA0-6DE5-DA1C-4386-50E46B2C2A25 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +E7DD88D0-F329-9E3F-0290-719112F7CCFF +eRights + + + +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +CE76EAFB-F78C-7C66-BF80-80081F62F013 +eRights + + + +true +false +1 +LOGDT025 +6 BYTE +6 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/5E7BC858-5237-87AF-3D96-5EA273AD7715.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/5E7BC858-5237-87AF-3D96-5EA273AD7715.xml new file mode 100644 index 0000000..ef07ebf --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/5E7BC858-5237-87AF-3D96-5EA273AD7715.xml @@ -0,0 +1,160 @@ + + +walloar +2021-03-02 09:53:55 UTC +D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +4F14A8C7-7D5F-093D-5206-E01E4A8BCA34 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +031D8CC8-2659-CBE8-22FF-A64C93311568 +eRights + + + + +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +10822FB1-E927-B947-6088-4CB8F9A46887 +eRights + + + + +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +F55ABE4D-03C7-D5C9-06B5-5EA126D9F26A +eRights + + + + +true +false +1 +LOGDT024 +25 BYTE +25 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +988BC6CC-C9F2-6B8F-3732-D2D1DF356DE8 +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +8683E12A-7B4F-9FAC-2885-2676333CE896 +eRights + + + + +false +1 +LOGDT028 +4000 +4000,, + + +walloar +2021-03-02 09:53:55 UTC +5D633BD8-B635-1985-216F-B907167DD15D +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +27A6BF6C-040F-2686-E1D7-B80EAD73D7D9 +eRights + + + + +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:55 UTC +6FCCE5B2-F20F-2BF4-C4D5-85627AEC40F3 +eRights +false + + + + +true + +E2957125-2BC0-5F54-B0EB-767B6482A788 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/6083C1F9-6489-EC64-93D3-066DE8307A9E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/6083C1F9-6489-EC64-93D3-066DE8307A9E.xml new file mode 100644 index 0000000..9cb1fec --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/6083C1F9-6489-EC64-93D3-066DE8307A9E.xml @@ -0,0 +1,720 @@ + + +walloar +2021-03-02 09:53:56 UTC +694A91FE-9188-90E5-058F-0FF4F7BFC31B +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +06B86102-59C1-D173-B889-DF23EDE0D8F9 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +0958C976-A9E4-44F7-4937-E311486C05C1 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +5666FFFE-8907-7088-2685-846F103241F0 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +815C6F58-5B99-49FC-EE67-D5492D7270DE +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +975267D7-C11F-866F-2689-BE331E8452BD +eRights + + + +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +180501D7-D967-A09E-9584-D4A9112520C3 +eRights + + + +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +0CF398A3-9803-5134-2BF9-1B34F0E62C50 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +C845F39A-7087-6EFD-4B73-CA7783840046 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +70D6CCD8-1906-D70D-9F66-ACDCC32781A9 +eRights + + + +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +04DFC1BB-D7D9-F135-CF85-53AD38DD1406 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +5C2984DB-094B-3C88-A167-2A9DA6C5ED52 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +F0D6476E-1CC7-0E5F-AC1A-43DB8643CCE6 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +4C911E51-DA98-8961-7A56-C04E50036ED5 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +8EDE9A1D-4F09-79C9-B4D3-BE2D0E26D1A9 +eRights + + + +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +12562632-8D3A-B6F5-4684-537B93E41927 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +87247DA6-E07F-7206-7888-902E7A48900C +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +84BE5411-F82C-5C93-A0DB-D954E81CDA08 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +AAC05D4B-9EF9-49D8-4431-10570DDC8B6D +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9152B2E1-9C74-6C26-A90B-F3CDA1EEDC49 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +25B94B06-9CC4-BAAA-EBA4-D3C956AA3E65 +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +82D7E757-E0C5-83A6-E51F-5639BB3FA83F +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C5EC435F-DA3A-DF45-CDA7-A30EEC7E641C +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +88911327-B3D0-A1F7-2D04-B77B4DB4E4FB +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +75619CC0-426E-4B57-3C3B-2639E83BA785 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +AA1DA567-3E75-F44A-5F28-E9E50CF32289 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +9D058823-3133-529F-7803-D34F5AE58E82 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +EB50F3B2-2FFA-1E4B-63B5-1478C60B1E80 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +E4B0D70C-0987-6F5B-5DDE-8FAA0AD5C7CF +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +A764F7C1-EAB6-B579-D59F-CB615B6B5CC7 +eRights + + + +true +false +1 +LOGDT024 +8 BYTE +8 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +716B9675-1A15-7B5C-9141-2B86B132A50D +eRights + + + +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +0DA02B5E-D253-6A92-DFE2-D8BD0E2B8828 +eRights + + + +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +14B8E866-FADC-642D-EACA-A49DDCA93FCF +eRights + + + +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +3EA4FDF1-3C14-7B80-A340-4A8F6B235A95 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +917E2EF1-F246-A0B3-161B-EEA8878FC336 +eRights + + + +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +68D9D6CF-E053-2F5B-BC17-B4FB497AB89F +eRights + + + +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +29B0354F-E5BE-80C6-3861-933DCE3FFDE9 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +CC44F476-5B4D-9A46-2BBD-67B650AD4C7A +eRights + + + +true +false +1 +LOGDT019 +9 +0 +,9,0 + + +walloar +2021-03-02 09:53:56 UTC +2E40459D-2876-08A0-B6E3-A316D42F615E +eRights + + + +true +false +1 +LOGDT019 +9 +0 +,9,0 + + +walloar +2021-03-02 09:53:56 UTC +C8272002-9797-93FD-5B52-5C83758507A9 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F724B4E4-0D2E-2AC0-C84B-27FCC54132A8 +eRights + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +37887BC6-1AC7-B48B-0E39-1A24653EA373 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +38C64A7A-6298-B99F-BD19-AE9A190E1CBB +eRights + + + +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F4A859D7-E600-CA5B-812F-FE96025EC9B1 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +62D6869B-2568-F464-4495-213C5F5DD355 +eRights + + + +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +C1FD699E-D68A-6B01-F31C-569D98AD1C10 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +2DF5378A-0354-255C-1A32-4A1F46A28FE0 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/64AB3B08-7A9F-42BA-15BF-609299D82610.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/64AB3B08-7A9F-42BA-15BF-609299D82610.xml new file mode 100644 index 0000000..ee65f0a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/64AB3B08-7A9F-42BA-15BF-609299D82610.xml @@ -0,0 +1,178 @@ + + +walloar +2021-03-02 09:53:56 UTC +D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE +eRights + + + + +675A581C-86EF-4D68-9D95-52C54296A9F5 +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE +eRights + + + + +323EFBA8-35C4-7792-B864-BE76652DD698 +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE +eRights + + + + +681A1055-759C-A8C2-8698-57433F38C50B +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7D57C1E1-B24E-145C-ABB3-40091405E042 +eRights + + + + +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9496FC5F-F66A-745F-7860-56740D7C8A99 +eRights + + + + +true +false +1 +LOGDT024 +80 BYTE +80 BYTE,, + + +walloar +2021-03-02 10:15:32 UTC +2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE +eRights + + + + +952844E2-DA2B-4F1B-259A-3B8EA880491B +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-02 10:15:32 UTC +2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE +eRights + + + + +9840F489-6AF7-A876-BB1D-C673DD36F02A +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-03 09:44:12 UTC +2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE +eRights + + + + +952844E2-DA2B-4F1B-259A-3B8EA880491B +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-03 09:44:12 UTC +2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE +eRights + + + + +9840F489-6AF7-A876-BB1D-C673DD36F02A +false +1 +LOGDT024 +200 BYTE +,, + + + + +walloar +2021-03-02 09:53:56 UTC +ED915CAE-6EA9-5581-E23F-91161110E4D2 +eRights +false + + + + +true + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/6A5146C3-EB9D-BA1D-3F62-FEE9F6155BE8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/6A5146C3-EB9D-BA1D-3F62-FEE9F6155BE8.xml new file mode 100644 index 0000000..4fed83c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/6A5146C3-EB9D-BA1D-3F62-FEE9F6155BE8.xml @@ -0,0 +1,195 @@ + + +walloar +2021-03-02 09:53:56 UTC +21442F1D-A788-0766-1383-1143D116D4BC +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +8806F619-C25C-3011-4C6C-D46137F7538D +eRights + + + + +675A581C-86EF-4D68-9D95-52C54296A9F5 +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +8806F619-C25C-3011-4C6C-D46137F7538D +eRights + + + + +323EFBA8-35C4-7792-B864-BE76652DD698 +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +8806F619-C25C-3011-4C6C-D46137F7538D +eRights + + + + +681A1055-759C-A8C2-8698-57433F38C50B +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +DE80D751-02DC-B714-F8AF-89502B71D318 +eRights + + + + +false +1 +LOGDT019 +7 +0 +,7,0 + + +walloar +2021-03-02 09:53:56 UTC +4BD81890-AD9A-AD07-7420-A5E7C91DCCD5 +eRights + + + + +false +1 +LOGDT019 +12 +0 +,12,0 + + +walloar +2021-03-02 09:53:56 UTC +B31286B2-7049-75FD-28C7-095DA5BA3A97 +eRights + + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 10:15:32 UTC +8806F619-C25C-3011-4C6C-D46137F7538D +eRights + + + + +952844E2-DA2B-4F1B-259A-3B8EA880491B +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-02 10:15:32 UTC +8806F619-C25C-3011-4C6C-D46137F7538D +eRights + + + + +9840F489-6AF7-A876-BB1D-C673DD36F02A +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-03 09:44:12 UTC +8806F619-C25C-3011-4C6C-D46137F7538D +eRights + + + + +952844E2-DA2B-4F1B-259A-3B8EA880491B +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-03 09:44:12 UTC +8806F619-C25C-3011-4C6C-D46137F7538D +eRights + + + + +9840F489-6AF7-A876-BB1D-C673DD36F02A +false +1 +LOGDT024 +200 BYTE +,, + + + + +walloar +2021-03-02 09:53:56 UTC +C12BBB08-0973-169D-01F2-969891A79921 +eRights +false + + + + +true + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/6DE4047F-E391-1EE2-61CB-F9A65AB0A5C6.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/6DE4047F-E391-1EE2-61CB-F9A65AB0A5C6.xml new file mode 100644 index 0000000..7c011ae --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/6DE4047F-E391-1EE2-61CB-F9A65AB0A5C6.xml @@ -0,0 +1,137 @@ + + +walloar +2021-03-02 09:53:55 UTC +E06E7FD1-9973-2F17-993D-D45490D15039 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +BFFCED8D-CD85-A60C-513E-0E63C798F627 +eRights + + + + +E2957125-2BC0-5F54-B0EB-767B6482A788 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +77601D55-BA58-62BA-92AC-DAA799621DFD +eRights + + + + +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, + + +walloar +2021-03-02 09:53:55 UTC +A9CF04A0-5EC9-DC2F-7EB0-D2149B60A18D +eRights + + + + +true +false +1 +LOGDT024 +25 BYTE +25 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +01C38FC6-CBD4-FF33-C215-01E9C32254B6 +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +13FCEB85-CCA2-19F7-C7EA-8E278898AC0F +eRights + + + + +CHK_ANK_EDMS_SCD_STATUS +false +1 +LOGDT024 +10 BYTE + + + + + + + +10 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +496E68A7-61A5-EE65-436A-D82A67763843 +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + + + +walloar +2021-03-02 09:53:55 UTC +7BA262D2-5568-1F56-5150-7D35B78CB977 +eRights +false + + + + +true + +527554BD-8ACA-CD89-8105-A0F927A00EF5 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/70EC4FA0-BCBE-5009-11E1-0454332973A5.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/70EC4FA0-BCBE-5009-11E1-0454332973A5.xml new file mode 100644 index 0000000..64e1aa7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/70EC4FA0-BCBE-5009-11E1-0454332973A5.xml @@ -0,0 +1,428 @@ + + +walloar +2021-03-02 09:53:55 UTC +CF1B39AA-F945-FB72-E8F3-2257A622EDF4 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +72B65362-4857-0C3F-FB11-A2E9C1E87752 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +A2F5E77B-B56B-706C-8AB2-63519BA4C715 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +A1FC1B79-498E-D47D-40CB-F1C780309307 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +B2407BA5-FC1D-C511-441B-8AD84C5715FC +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +C3F8737D-C992-034A-1016-A90D0ACD21C8 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +95C6F3F9-D6A3-1F72-F6DB-91549519B4F4 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +8989FEB3-EAAE-01E2-62C5-CD8ED3B8070A +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +3B0FA497-BE44-8C8B-0AF2-8EEE57FF2DD2 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +85AB88FD-6EE8-5864-633B-A2DA3ACA0077 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +BF1F90CB-7601-41BF-4C2B-D7DA5A3971D5 +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +474C482F-A761-0E4F-13E0-C733E239E318 +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +3AA2CDBB-F28E-405A-AC9A-03ED29A59AD8 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +A28CA55F-710E-0F24-50E6-FD5E257DBFD9 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +8465202E-9F48-8966-C889-D5FB119CCB0C +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +E4B1B261-C7E3-85DE-7E2E-515F1109B44E +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +954D9059-5136-9616-66CF-471BF089DE44 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:55 UTC +EFD5D158-818B-7A76-AD44-20404217BAC3 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +21E117AA-6867-721A-D4E1-A374E25869B3 +eRights + + + +true +false +1 +LOGDT024 +1003 BYTE +1003 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +D436070F-3988-0BD4-5FCD-13EFC28E7651 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +DA7BFBAF-3962-F083-EFA3-C184FEA85390 +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +B2201A89-58B1-5B66-2552-3E6AF92ABEDA +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +E7E22EF7-8189-9ED1-6D0F-81A2A51AA5D2 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +8DF4F66B-5E60-AD4B-1B72-8875A5EDBD34 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +54F4353F-1A27-627E-9AAC-D6E25B6F31B9 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +DB7338F4-7D3F-6503-3F28-4E1DAD1A59C9 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +B7F25BC5-7AE0-B9BA-F281-96C89597C714 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +FFF08D5D-7CB8-45D9-2655-12611AEE16D5 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/73E564BD-A238-285F-235F-08ED5B6FAC97.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/73E564BD-A238-285F-235F-08ED5B6FAC97.xml new file mode 100644 index 0000000..a78cb4c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/73E564BD-A238-285F-235F-08ED5B6FAC97.xml @@ -0,0 +1,126 @@ + + +walloar +2021-03-02 09:53:55 UTC +887B1F03-49B7-7723-3B93-2D358B356F65 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +8A7372D0-4BFA-E7B8-E435-1AC37E995080 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +596FAF5A-579D-DDB6-C561-160E513F1B52 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +5328F3F0-929B-285B-EFEA-D6D1DDF68173 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +402530F4-EA4A-13CA-64D8-C95A661D9330 +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +10CAB73E-F50C-8678-A969-121B9A978250 +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +A90231FD-0421-080D-FADB-738040BDA627 +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +A2E56822-471A-1501-97C1-D099BFD5E68C +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/7E935A31-6CA0-F687-B54B-F3A799209368.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/7E935A31-6CA0-F687-B54B-F3A799209368.xml new file mode 100644 index 0000000..103526e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/7E935A31-6CA0-F687-B54B-F3A799209368.xml @@ -0,0 +1,620 @@ + + +walloar +2021-03-02 09:53:56 UTC + +017E6E78-74CF-1A56-81F0-5BDDF1973C71 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +FD46E2DF-6BD5-4CD3-62CC-A58DDE20014B +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +02DF9892-BF43-D932-D0CD-C3D8993EBB6B +eRights + + + +true +false +1 +LOGDT024 +2000 BYTE +2000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B5A75AE5-976B-326A-0301-D577AEA3D392 +eRights + + + +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10041 +4000 +4000,, + + +walloar +2021-03-02 09:53:56 UTC +91AEB947-BCE2-7066-41FF-22B0AC32B528 +eRights + + + +true +false +1 +LOGDT024 +2 BYTE +2 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2A8693AB-51CE-0F5D-6E42-65488F1869AF +eRights + + + +true +false +1 +LOGDT024 +2000 BYTE +2000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2CCD070A-0263-30C6-D502-86ACED1099CF +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +BAEB92EC-E759-6A60-57B0-57A3200C18C2 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +6710A74F-9E18-AE4F-EFAC-C66101CFDCAD +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +8D2E763E-7247-984E-864A-A21FFC8549BB +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +D31E6C9D-3813-0258-027C-98B623EA8266 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +79D72E33-5937-5F9E-1838-9E60ACC3740C +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +BE4FBAE9-666F-D351-BA3B-4D5C8F16F1AE +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +65131C32-7994-3C3D-524E-60FD0F52F2D2 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +ABC65EBF-3F17-9D31-F148-C06EC1FADE91 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2D1B8E36-373C-F1D3-E7D8-812A13A41D3E +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +210CB6E6-F46C-ED02-9090-C098AE438DEF +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +19AF201C-AC08-3966-562A-AB80E7D0982C +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +334CA944-5D36-2C55-7594-1A173DBAA5C6 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +CB922D1D-920A-C046-4845-B05273FFB320 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +8794ED4E-0F73-46FC-4E8B-1A16A466CC32 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +526682B7-8930-37E4-08A9-96F7109C90DC +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +180BC5FE-E27D-C271-C558-0706B130937D +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +4AB1B5F3-600F-156C-12E7-6AD68E638D9C +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2AF9DB41-0CF3-B19A-4022-DEC295281354 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +D1FA0EF7-9B0C-123C-353A-C0665A531217 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +83AF5524-9135-9246-CE58-DC2863DD5FB4 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9E65FFC4-4CD1-E7F6-4C5E-053BC1CDA601 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +1A440C97-394B-7B03-59A1-1B7A3CC63F1A +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9CC41951-D3CF-9DFA-78C8-B92919B43F57 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +EA89DC0C-C8DA-9DC1-C9BD-76064A27EFE2 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +EA4158A0-6F62-7268-E1A2-DCB43E9104FF +eRights + + + +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +2000 +2000,, + + +walloar +2021-03-02 09:53:56 UTC +735CCADE-C5B1-D811-30EC-A227283F190D +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +AA0DE176-31CE-2483-CF23-BD7D8CF967F8 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +E4D5234C-05B3-8AE3-DFB4-B96F2940B40D +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9E920733-1044-3488-1AA0-A0F78A159498 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +BD547E5A-BA88-0B6F-0854-8695526CB45D +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +00CA2D57-AF99-C35D-E07A-545875B3F15B +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +1F0A738B-DAC3-DFF8-2A32-57B3B53F4661 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A47B6123-5417-557C-328F-FCB69E8E9B67 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A2CB4738-7D17-FE4E-31CD-C3C46DCAD800 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/8007A257-3E21-D647-C0DF-13AFA4B28DE1.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/8007A257-3E21-D647-C0DF-13AFA4B28DE1.xml new file mode 100644 index 0000000..cf159cd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/8007A257-3E21-D647-C0DF-13AFA4B28DE1.xml @@ -0,0 +1,79 @@ + + +walloar +2021-03-02 09:53:56 UTC +A6C5CBA7-01B1-3ABB-D601-ACC91E621818 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +817D9A2B-0E72-2360-A6E7-46EEDC2D9410 +eRights + + + +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +D94B6A7F-E667-33F0-03D5-12B6CE1022AD +eRights + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +8A239E1A-3203-D1C9-4223-EC9FEC9D77BE +eRights + + + +false +1 +LOGDT029 +4000 +4000,, + + + + +walloar +2021-03-02 09:53:56 UTC +F2C082BC-DA7C-3CC8-E2F7-1EDE74D7AAE6 +eRights +false + + + +true + +FC91553C-29D3-848B-561F-1435E635F851 +990A4AEA-A62F-F3FF-A45E-27178C2B73B7 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/86DFFDA2-73B1-ABDC-FF4B-C21506530FB9.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/86DFFDA2-73B1-ABDC-FF4B-C21506530FB9.xml new file mode 100644 index 0000000..d6edb7a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/86DFFDA2-73B1-ABDC-FF4B-C21506530FB9.xml @@ -0,0 +1,119 @@ + + +walloar +2021-03-02 09:53:56 UTC +6EE6B86E-12DA-10CF-8634-5C4D212E05C8 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC + +74F15CFE-F545-FA7B-A1C1-6DB5F217423B +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +E58D2875-4AB7-D90C-D0D5-CCC5B9D7BA33 +eRights + + + + +true +false +1 +LOGDT024 +16 BYTE +16 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC + +02DCEFF8-11B6-A0F5-5094-7C91F4E3B695 +eRights + + + + +true +false +1 +LOGDT024 +16 BYTE +16 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC + +1348CC3C-17A6-5184-80A1-97B746D20058 +eRights + + + + +true +false +1 +LOGDT024 +33 BYTE +33 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC + +D7FA2B7D-A10A-6DE9-F404-DA6EF454742F +eRights + + + + +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:56 UTC +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +eRights +false + + + + +true + +1E317FC4-9686-5B2A-C41D-842669B03869 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/8AAAC8DC-CC34-BD92-8D4F-880A3ED84F4E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/8AAAC8DC-CC34-BD92-8D4F-880A3ED84F4E.xml new file mode 100644 index 0000000..f1b7429 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/8AAAC8DC-CC34-BD92-8D4F-880A3ED84F4E.xml @@ -0,0 +1,65 @@ + + +walloar +2021-03-02 09:53:56 UTC +5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +9D279B1E-607D-BEC4-8770-A7921CB010EC +eRights + + + +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B6CA6EE7-D478-8C23-8759-790338CD14AA +eRights + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + + + +walloar +2021-03-02 09:53:56 UTC +0203181E-D646-EA76-41AF-A1B1ED8FFDD7 +eRights +false + + + +true + +CFE16F69-F7D1-4D60-C003-87D845E3A696 +CBFC3E98-99C1-8158-FB5A-F2575088C86F + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/8DB8C48E-C8E7-EF3C-E281-27591103D59B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/8DB8C48E-C8E7-EF3C-E281-27591103D59B.xml new file mode 100644 index 0000000..21d641a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/8DB8C48E-C8E7-EF3C-E281-27591103D59B.xml @@ -0,0 +1,383 @@ + + +walloar +2021-03-02 09:53:56 UTC +631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +8E6926AF-4646-FDF1-A90D-14BBD6B5E6FF +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +5C242685-A5E4-7BF1-014A-FBE49C324585 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +E9F2864B-E48F-C7D2-0F12-DFDBDFF31645 +eRights + + + +false +1 +LOGDT024 +10 BYTE +10 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +FD87747A-C079-307B-5CC5-701DEFFE1F73 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +3330B41B-96DA-3AE0-FAF2-99E3ABF701EA +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +DB123951-92F3-CB1A-7959-C7F591E94036 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +00595CC6-431F-1681-761F-58D3561DEC0A +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +B6FB407E-1F2C-CA86-36A6-388D1321E922 +eRights + + + +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +DB5B61C3-66B3-6E21-2835-BF4E7CE746AB +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +C38AC99C-5C14-D052-800E-B99CB602C4FE +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +36850B93-4037-11C9-84A5-AA9AB395D383 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +36934F32-3D22-D58F-D302-19D4C7C85288 +eRights + + + +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C75B9E72-D33F-D8D5-8AF6-8CB07E9BEE6F +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4B1678A1-F0A9-0FD4-57A4-6AF19C271CB2 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +1A60062E-6472-6C0C-9A7A-A1A2D9EF0696 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +2CECF635-F884-C9F5-55B5-F17B805B56F8 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E86AB955-B5DB-FE78-93A0-5F06B616B4DD +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F590FBC6-9236-4F70-379C-D5291DD9BEFD +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C0C641EA-014E-C255-B299-35AE07871ED5 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +3AD69C2F-6D62-E4A0-6945-7C70AEC46577 +eRights + + + +true +false +1 +LOGDT019 +9 +0 +,9,0 + + +walloar +2021-03-02 09:53:56 UTC +44184D53-AA75-EF95-33F9-A75E357DB0E2 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +6D105CD6-7172-77DD-D635-1994F1CCDAC7 +eRights + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +FA896C2F-BE1C-B75F-BFFB-D9DC071F5488 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +49DEFD77-03A9-24CB-6498-DA9906EE4F09 +eRights + + + +true +false +1 +LOGDT024 +8 BYTE +8 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/94D2FC6E-8845-87CB-4100-20E4568FC46D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/94D2FC6E-8845-87CB-4100-20E4568FC46D.xml new file mode 100644 index 0000000..0fcfe80 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/94D2FC6E-8845-87CB-4100-20E4568FC46D.xml @@ -0,0 +1,230 @@ + + +walloar +2021-03-02 09:53:56 UTC +25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +1D4A1338-265D-B794-5894-D9F92D3F7ED4 +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +323B5191-360C-2233-C6FA-D651622B30A2 +eRights + + + +true +false +1 +LOGDT024 +8 BYTE +8 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +E525A5AB-0BAD-94BA-DB1F-C8F4F3625467 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +63456827-6675-2736-F4A4-83603CC0E8C2 +eRights + + + +true +false +1 +LOGDT024 +800 BYTE +800 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +1922F135-203C-5CB0-49C0-FE4EC144A172 +eRights + + + +true +false +1 +LOGDT024 +800 BYTE +800 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +C371C0A1-7341-A8B8-66B3-B65465539020 +eRights + + + +true +false +1 +LOGDT024 +800 BYTE +800 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +553B1E65-AAD9-78EB-9467-EF0257D707A8 +eRights + + + +true +false +1 +LOGDT024 +800 BYTE +800 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +20EA3310-0A06-065C-14D3-22E04071AB91 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +37A15AE8-76CD-A57C-45A4-AF52D7246146 +eRights + + + +true +false +1 +LOGDT024 +240 BYTE +240 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2D149952-90A3-470A-CBCA-C9C50BC0EC9F +eRights + + + +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +618DB82F-A14C-3FC2-61BE-03DFE0114333 +eRights + + + +true +false +1 +LOGDT024 +8 BYTE +8 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +936ADD2B-E0A7-7BDA-2943-E5251AD94E0D +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +DCFAA63A-C6AB-1748-373D-141C96604942 +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +DEF6306D-7B96-A1C1-075B-6BC5F7331CDC +eRights + + + +true +false +1 +LOGDT024 +240 BYTE +240 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/9F53D725-3D05-AEB4-8928-8842ED0801D9.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/9F53D725-3D05-AEB4-8928-8842ED0801D9.xml new file mode 100644 index 0000000..7531158 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/9F53D725-3D05-AEB4-8928-8842ED0801D9.xml @@ -0,0 +1,151 @@ + + +walloar +2021-03-02 09:53:56 UTC +B19BFE0A-4008-983E-624C-F28D08E36E99 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +3125A86F-32E8-DAD9-AEE3-568486747CA9 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +BA7717C4-4279-F6A1-50E2-59F57985A57A +eRights + + + +false +1 +LOGDT024 +10 CHAR +10 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F024FE91-61E0-DA8A-894D-00B73FA33195 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +803F1B53-E3E1-A7BC-569D-7A95E2FA3A5E +eRights + + + +true +false +1 +LOGDT024 +300 CHAR +300 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +48C184AC-5DD2-F436-A4EE-54E847B5BD08 +eRights + + + +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +7959C2D1-F959-AA15-C5D0-0B2121AE0814 +eRights + + + +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F6C7658F-234A-2147-0088-5ED4AA6E87A9 +eRights + + + +false +1 +LOGDT024 +10 CHAR +10 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F3A0CDF3-9F90-990F-3DF4-C12781301988 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +4ED85027-551D-C401-5BB4-2608D0F947C4 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/A2560F78-CA63-4E51-1985-1E0FF55DE39E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/A2560F78-CA63-4E51-1985-1E0FF55DE39E.xml new file mode 100644 index 0000000..477447e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/A2560F78-CA63-4E51-1985-1E0FF55DE39E.xml @@ -0,0 +1,155 @@ + + +walloar +2021-03-02 09:53:56 UTC +C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +1B8996F9-E0C8-9AEA-1F33-1944069A7248 +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B1A2A460-C6A6-D0DD-E445-679924857C00 +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +DF8A7D3D-C6F8-9B1E-29F3-B754953FF431 +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +AA174DE0-804D-AA12-CE14-6BC0F2ADFE7A +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +0B036C2B-2CDA-512B-F6F2-FC7EDC1A10B8 +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +63C3787E-32D2-738E-C529-DB72704BAAD7 +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +4352314B-C587-4F7D-89D6-C97A8F2C5E69 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +878355A5-1FBA-3593-AD50-EFD35789B697 +eRights + + + +true +false +1 +LOGDT024 +240 BYTE +240 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +8344A317-F588-DEB1-C212-DA6D3369C046 +eRights + + + +true +false +1 +LOGDT024 +240 BYTE +240 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/AE694CD8-DA4A-8F4D-40C3-1F8372E12914.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/AE694CD8-DA4A-8F4D-40C3-1F8372E12914.xml new file mode 100644 index 0000000..5c2aa5a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/AE694CD8-DA4A-8F4D-40C3-1F8372E12914.xml @@ -0,0 +1,95 @@ + + +walloar +2021-03-02 09:53:56 UTC +20F5667B-D8E9-427C-7B9A-C1819E5C3533 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +E81D4C2E-AAF7-F474-402F-7B44D3BEFAF1 +eRights + + + +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +69C42D91-5872-D86C-C941-402F5D2E2FAF +eRights + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7F1E165E-5B73-5951-457E-182E07C41226 +eRights + + + +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +1D97422F-1F0D-6D08-6316-4D5A244130E2 +eRights + + + +false +1 +LOGDT019 +13 +0 +,13,0 + + + + +walloar +2021-03-02 09:53:56 UTC +C63CD62B-6A99-248A-8B17-01756BA129D6 +eRights +false + + + +true + +38C7D4AB-8E52-AEAA-D110-8C9E214DE72E +EBBBA42A-0D4D-427C-A398-D6D1987634F4 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/B227B3CC-107F-1684-9249-FCB956EA0929.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/B227B3CC-107F-1684-9249-FCB956EA0929.xml new file mode 100644 index 0000000..9f54031 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/B227B3CC-107F-1684-9249-FCB956EA0929.xml @@ -0,0 +1,829 @@ + + +walloar +2021-03-02 09:53:56 UTC +66B6918B-A197-4DDD-2F74-FA6DEB24B801 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +F1186C6C-6CC4-3495-E7C3-2387BFBF76C0 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +4CA509A5-996D-C2DA-F3B9-CACDC70A35A9 +eRights + + + +true +false +1 +LOGDT019 +6 +0 +,6,0 + + +walloar +2021-03-02 09:53:56 UTC +D7C384E5-AB8B-CA56-2A27-44DA966E98C4 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +9C8A1C36-57F8-E012-2FAF-C1A19951DBCF +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +6B340D5C-0DDA-57B6-3866-FB19F2B6EB6F +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4532CFE2-0018-B1A7-68C5-310D436F3963 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +083D89C5-9A37-2CFF-D2B8-CEAC7769DE20 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +FC1F5433-D7D7-D023-5C03-21D4470D9F5F +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +5E0CA565-4FDA-20CF-A353-D6A39A7AA013 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +2FC4D9B7-524D-3F31-AAE8-F70EBE6B028F +eRights + + + +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4DDAF8A2-38D0-8AD2-2C2E-E0B3C810F541 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +A54B6268-4F1C-F2F1-2EA4-1B716886CF91 +eRights + + + +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +7A4BA3AC-4C10-914D-6A55-23F3C0420219 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +69E21C02-F434-AED1-D73D-F690D420F35B +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +81F20F38-6B00-73D1-7C64-1F5CCCCE19D3 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +FA5A9BF9-E81D-A3BB-EBD2-0FC2B1F21DA5 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C4E1FD36-2729-5703-E5E0-1945850174C4 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +7B10DC92-58DF-30D1-65B7-0C35FF60CB3A +eRights + + + +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4E5379BA-2486-E483-4BFD-E5162D271464 +eRights + + + +true +false +1 +LOGDT024 +101 CHAR +101 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +1A9F9147-5827-C678-8A3C-46A8BBFE14BA +eRights + + + +true +false +1 +LOGDT024 +401 CHAR +401 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +34F46A9C-D23E-6D05-5BFC-6354FB00A327 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +95D97DCF-DC24-2C4F-1D82-46F70A796A50 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +7A26ACDC-F368-0B26-F148-803D439A8193 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +4DEB19E8-6714-1B10-1A5D-F80806952F24 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +EEEFD739-6199-9FC5-0224-DFF46F26DE6A +eRights + + + +false +1 +LOGDT024 +5 CHAR +5 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +03070247-102F-5DE8-6DD1-7316C81C7E47 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C5BEA8DC-69C7-EFC2-BB4A-E81BD0BD888D +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +FCBE1D9C-B84B-DF1B-30D0-229462E9E7D1 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +50409F4B-C5F5-6D9B-FBE5-FD94B951FB12 +eRights + + + +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +32DD9288-8A60-381A-BB96-B36AD24B3708 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +D2AF4032-11D6-8000-F613-F6C9A67B8D8A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +99739457-43BF-0581-BF9F-121C8231154C +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +2D92418A-7BD2-8357-E46E-E74ED8DD23E5 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +63E4FCAB-BF4D-3DF4-9683-C492C9FA9378 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +80246679-B235-43D9-6D80-3C2C8A408F87 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +966C8F03-A912-5542-7785-F123F549C09A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +BF91B8AA-4262-9AD9-F824-B8966DEA5A2B +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +3F98A8A5-E737-755D-6DE9-B53FF4DEAE95 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +84371A81-59CA-0569-294A-0D688BCB655F +eRights + + + +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +95724943-7EA0-09E1-0C7C-74C264DCCCB2 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +7AAE7ADC-5009-D7F9-E82E-60361EE9B67F +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +AFEEBE4B-92E9-F521-2E35-3485B1D7D687 +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +169CD1C4-E1CD-86BD-5FF0-61426D2F5C58 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +EE198346-ABD5-E2B2-2818-E82774C26194 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4F9FAFA5-94B6-1F59-7E29-B88C37F0E6B6 +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +51DCB625-C940-40F4-EE73-990721B2CDFE +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +34004D44-865D-4F8E-66EE-F56B007331B1 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +76E771E9-CEC8-F10B-BCAD-E276E221D1FD +eRights + + + +true +false +1 +LOGDT024 +563 BYTE +563 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +5DB25603-C3D7-4F65-3CBF-E9F1427F33CD +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +D93DE782-5F1E-BC37-3250-AC8976FB6402 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +17912556-4F1F-C608-C2F0-537BAE5B502F +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +75CDCB84-D064-86D7-3051-8D1656F956B8 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +04C73D9F-1A9A-498D-67F4-838206B5C301 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +023F7EF7-2E76-4ED9-154C-12E5488E6FCB +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/BA08A3E0-01C5-1B90-25AC-CEDC6457FE58.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/BA08A3E0-01C5-1B90-25AC-CEDC6457FE58.xml new file mode 100644 index 0000000..16833e9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/BA08A3E0-01C5-1B90-25AC-CEDC6457FE58.xml @@ -0,0 +1,767 @@ + + +walloar +2021-03-02 09:53:56 UTC +FF74A656-1D74-CA01-A02B-65A0579DD208 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC + +EC3E4FCB-381E-4110-E5F2-080037C6A330 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +EAF2C99C-FAD3-4A14-46A3-71954B67B90C +eRights + + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC + +8D1F6CFA-A363-F4F0-7D93-7F631A1EC8D3 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +E91BF69B-DF66-D60D-E378-76624221DFFB +eRights + + + + +ABDEDED5-DB54-472E-A914-416B21094D8F +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +3BC0D2CB-BBDF-444A-F77D-26EA52C205C2 +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC + +6B62520D-F555-2E41-FBE2-9F198DB7608F +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +1323D65D-CAC3-3951-396B-CB2801D9E943 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +2205523E-B54E-B780-927C-8D64206F6858 +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC + +44F9F853-20E0-3B24-940E-57C96F794099 +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC + +AB38D59A-B29F-E32B-106B-A2B2069FB2FC +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +27ED273D-4F2B-D8B8-DA9C-CA76C88C0018 +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +6708329C-4257-89BF-23C8-F86425C1F06C +eRights + + + + +true +false +1 +LOGDT024 +16 CHAR +16 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC + +C7331B83-1967-4DF2-2AFC-BFCFC211A75A +eRights + + + + +true +false +1 +LOGDT024 +256 CHAR +256 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC + +7816CA55-3E81-0BA3-4B34-DC103961A94B +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +8DDC1AE7-2143-7078-F383-A755A4F86AF9 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +29F327D5-7A0C-CC9F-3438-4E6A694A7697 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +16E0E35D-B9ED-2A36-4AB5-18784692BA61 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +F6402C3F-CFDE-296B-AE49-CC7DE9F84CEB +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +DBCA32A2-0F11-BE50-9234-69F12FC5213E +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +35CD2422-C33B-EA05-7377-D33CE95BF053 +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +6E47720D-5E77-6CC8-A402-33907260A5CD +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +D47ED11F-1D87-B619-8847-BC6B24D849E7 +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +606BA6A4-667C-4B43-3E75-E4734018D9D2 +eRights + + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC + +9971E2F0-2E01-EC3B-4308-8C5E33FE1A04 +eRights + + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +677E3193-9044-2D31-5F51-30E76EB248CE +eRights + + + + +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, + + +walloar +2021-03-02 09:53:56 UTC +54D16E25-5344-9E12-CD9A-44B0C0BB680E +eRights + + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +26249C9A-C527-2687-5D78-7BBEEA16D142 +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +DA4DB995-3A42-2D99-7820-CD3366C84AC4 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +6945DC3F-4310-7832-4667-DB9D8C256225 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +FEB70B8C-1B42-0DE7-F51C-5D4E97F60A3A +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +112B4317-BC50-9081-968B-8558B64D5DC3 +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +E06938B8-4305-587C-F2CF-87B87C255317 +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC + +35C8B340-EE0B-9B5A-ACF5-C93089DD5707 +eRights + + + + +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC + +B6DB1887-BB42-9493-923D-1A94600DA62D +eRights + + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +F097744B-D8EE-C343-E3CE-CDA1EA88B641 +eRights + + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +0938DE4E-C2B4-B0C1-4224-B517AB506D75 +eRights + + + + +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC + +D5118C7E-CF2E-E053-0AAE-D96C5BF9213E +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC + +FF00B9A6-FFC8-F5BD-FA6C-9DEC706442C3 +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC + +93C4ADB8-BA9A-3DD2-3241-4963B3D94F8E +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F155BB22-A282-16E9-8BE8-BE99A511EEAF +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +EC0E2785-A1E0-2493-38D6-2ACDA7C8F64A +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +B4A97655-07FE-3689-CC8D-CB5E4141D1FC +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:55:59 UTC + +AB932BFC-2DE9-E516-56A9-DB64019426E3 +eRights + + + + +1E317FC4-9686-5B2A-C41D-842669B03869 +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:56 UTC +A1F676FC-1206-95CB-7A7A-177766C00056 +eRights +false + + + + +true + +92FC6E83-CB5E-2D8F-A6E0-29502A6FB183 + + + +walloar +2021-03-02 09:53:56 UTC +50E2CBC9-C0F6-83F7-8263-6251614AE370 +eRights +false + + + + + +CD979910-6C3F-BE71-0916-A009E2491806 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/BA854E6B-64B0-88E9-8183-B139BF17E9B2.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/BA854E6B-64B0-88E9-8183-B139BF17E9B2.xml new file mode 100644 index 0000000..63039c4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/BA854E6B-64B0-88E9-8183-B139BF17E9B2.xml @@ -0,0 +1,114 @@ + + +walloar +2021-03-02 09:53:55 UTC +C4319A8E-825F-7AB2-3624-D14729BF4C0B +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +9C4D8BBD-7D92-8B95-931E-47B592D9303E +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +E9F739AD-123C-9627-F6B6-44BF7879F7C3 +eRights + + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +071E055E-841D-16DF-7793-509615F86D06 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +4EF8EA1A-3982-743E-DBE6-1D049618658C +eRights + + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +BC5F5022-8CD8-2AE8-D7AB-C78A4455A691 +eRights + + + + +true +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:55 UTC +C440CF4F-9D7F-2A26-9C2E-F57BD434E08A +eRights +false + + + + +true + +775794B6-41D2-6FDB-CDED-B6332D609EC0 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/BB5E20B4-1E61-DCE6-7E2F-EBB410C66399.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/BB5E20B4-1E61-DCE6-7E2F-EBB410C66399.xml new file mode 100644 index 0000000..902d7a3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/BB5E20B4-1E61-DCE6-7E2F-EBB410C66399.xml @@ -0,0 +1,183 @@ + + +walloar +2021-03-02 09:53:56 UTC +9F8B71CD-271E-D6DE-3E71-2F2F28DF6A55 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +17EAF3F2-7FD9-C21E-185A-2F4F07D7AD88 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +69976AAA-0340-B5F7-0D65-3C6030CA8949 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +5F71FA88-FC1A-DEA3-5F13-7EE3A25682AC +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F9EAD909-E04E-6345-90BF-583F96FB700B +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +E80C9C48-693C-06BB-3188-BB7236B3DAC1 +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +6FB6C140-9381-E0B1-3332-56E7B61BCBE2 +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F376DD1B-5507-0592-0D49-345E2FB7DD87 +eRights + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A778513E-57D5-2F26-0883-BAF8A123A2EB +eRights + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +3A6909F6-1BD4-F56B-9551-ECF3CDC90536 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +0E93EB76-E6EA-B649-D564-A6646207EA78 +eRights + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +570ECB78-7BD4-34A2-DDB4-C549C6F02885 +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/C064300A-70F1-394A-04D8-045CD27FC5B0.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/C064300A-70F1-394A-04D8-045CD27FC5B0.xml new file mode 100644 index 0000000..c47be61 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/C064300A-70F1-394A-04D8-045CD27FC5B0.xml @@ -0,0 +1,164 @@ + + +walloar +2021-03-02 09:53:55 UTC +F6108759-A9AE-8679-03BA-D124DEC368E8 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +7581330B-DBB8-A809-2C31-BD227628BD2F +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +B004067B-5FA9-36FE-5F74-610A953B8C3B +eRights + + + + +true +8F3929E2-B542-145A-3429-6CCA6D6B9198 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +314DDCD3-31E3-88E5-E5AD-659BB5F1488F +eRights + + + + +true +1E317FC4-9686-5B2A-C41D-842669B03869 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +48F7BCFB-54CF-9FD3-A147-F317E38ADFBD +eRights + + + + +true +92FC6E83-CB5E-2D8F-A6E0-29502A6FB183 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +7C52FF29-B899-647D-EFA2-E014E060A1AB +eRights + + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +D744C405-D8A4-9F01-1726-5C2D5669E966 +eRights + + + + +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +6AE1E046-238E-9C91-40C2-A925B6603E8D +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +3DD5CD33-A637-6EBA-D7EC-4687178AC2BB +eRights + + + + +false +1 +LOGDT024 +1 CHAR +'Y' +1 CHAR,, + + + + +walloar +2021-03-02 09:53:56 UTC +C18549F3-BA0F-CA1A-0B56-63BF98D61818 +eRights +false + + + + +true + +587B5FB6-A155-75E0-96C2-E7BA8AA0515F + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/C0E9A1F0-FDE6-BF67-A359-D77A865158BF.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/C0E9A1F0-FDE6-BF67-A359-D77A865158BF.xml new file mode 100644 index 0000000..a466488 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/C0E9A1F0-FDE6-BF67-A359-D77A865158BF.xml @@ -0,0 +1,123 @@ + + +walloar +2021-03-02 09:53:55 UTC + +BADACA51-70E4-EC8C-D01B-F5E4FF488931 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +2C131BF7-C235-B6B9-F282-40733CEB343D +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +61354299-9EFB-5A2E-5727-657CDBFF698E +eRights + + + +CKC_PRIORITY_DB_LOG +true +false +1 +LOGDT025 +1 BYTE + + + + + + + + + + + +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +CD104907-F0A9-005B-5F87-175D9CCC454C +eRights + + + +true +false +1 +LOGDT024 +1000 BYTE +1000 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +5A01A9CE-376B-B1DB-A72B-941FDCC6DAF7 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +73FDF4DB-A5EA-FB89-79CF-B65E16004FDE +eRights + + + +true +false +1 +LOGDT007 +7 +SYSDATE +7,, + + + + +walloar +2021-03-02 09:53:55 UTC +4639E259-AED3-4FE6-4BBA-C3592C250F1A +eRights +false + + + +true + +D429DF4C-EFC7-984D-081D-5737DD886351 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/C219EE74-3B16-3794-DAF8-2367867CFA6E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/C219EE74-3B16-3794-DAF8-2367867CFA6E.xml new file mode 100644 index 0000000..2a82934 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/C219EE74-3B16-3794-DAF8-2367867CFA6E.xml @@ -0,0 +1,252 @@ + + +walloar +2021-03-02 09:53:55 UTC +FA6E481B-B84F-5B32-07EE-23CD79A3E131 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +712DDDEA-B668-0334-5C5D-A15CA06E753D +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +360ED850-9EF8-6EF1-294E-585EC8723A0D +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +4047265E-35C1-518C-A08C-479DEA2FD20F +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +F57B5697-041F-8E32-7B9F-5E35C9DEF230 +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +4530A486-56EB-C5DB-B444-28020BBB55E3 +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +182C9E0A-F952-98F3-C860-EDCB52477EEB +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +32B732A6-0ACA-64D5-9BFA-3B5C29AB0F0F +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +EE432CB0-FCCF-CB5C-62B7-E2C91099CF46 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +E1823636-0C34-29FE-C1DB-6F125D831C26 +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +C054D1F1-ED94-D623-91BC-8099D3C0B6CD +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +D0D6AA36-FE1E-56C3-44CA-D1AB5B52234E +eRights + + + + +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +CE40080D-F82A-BA03-F76F-D6E895FD39C6 +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +64F9CE94-79B7-189D-6C96-5595355F5E54 +eRights + + + + +5EA5CE55-B7A8-958C-9931-EC453C9A1C80 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +2CE51C00-0B55-DFA6-5D82-E699EE6D6C0B +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +'Y' +1 BYTE,, + + + + +walloar +2021-03-02 09:53:55 UTC +A750C512-20C7-96E8-6C7C-4C45B8145E7B +eRights +false + + + + +true + +4869A72B-6A7B-C030-3D55-E17A1488D1F3 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/CA9EC934-467D-3BBA-72A9-25B2A0999791.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/CA9EC934-467D-3BBA-72A9-25B2A0999791.xml new file mode 100644 index 0000000..cbe4346 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/CA9EC934-467D-3BBA-72A9-25B2A0999791.xml @@ -0,0 +1,98 @@ + + +walloar +2021-03-02 09:53:55 UTC +6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +07727274-66DF-FD90-6692-0A1F0BEE1775 +eRights + + + + +41435BA7-E7F1-F8F9-D69F-5166D8906E21 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +C430F234-73DE-5D67-6833-6C1B21265ED3 +eRights + + + + +false +1 +LOGDT025 +36 BYTE +36 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +678A934D-AF92-4E12-3299-3FA53540AF61 +eRights + + + + +false +1 +LOGDT024 +25 BYTE +25 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +6922E00C-90A8-C6D7-C54C-F0D4AAFA77B6 +eRights + + + + +false +1 +LOGDT024 +1024 BYTE +1024 BYTE,, + + + + +walloar +2021-03-02 09:53:55 UTC +312944C7-F69F-AD5B-9F1B-2E1275B8C6DF +eRights +false + + + + +true + +48E97EB9-5064-7748-06A4-52B35D2D2F15 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/CAA8EC70-4F15-AF63-2366-78EB312F3DF4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/CAA8EC70-4F15-AF63-2366-78EB312F3DF4.xml new file mode 100644 index 0000000..0a5f087 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/CAA8EC70-4F15-AF63-2366-78EB312F3DF4.xml @@ -0,0 +1,124 @@ + + +walloar +2021-03-02 09:53:56 UTC +BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +4608BB07-2CA4-5596-6DA9-36D5A794F7CC +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +7A7046C8-F14E-6371-D168-C8EE02888185 +eRights + + + +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +A605744E-5F9A-55BB-E62F-001343200E7A +eRights + + + +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +8841EB89-9A6C-5679-E255-691F72192289 +eRights + + + +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +78FF68B7-6F2B-D7D9-8894-370488F0D6BB +eRights + + + +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +53B488C5-C017-A082-DF2E-0E002B32ED52 +eRights + + + +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E4B3A381-5FFE-9EE7-2002-9CBD4182A593 +eRights + + + +true +false +1 +LOGDT025 +1 CHAR +1 CHAR,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/CB2DB610-85D6-2795-2878-C17D1F419227.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/CB2DB610-85D6-2795-2878-C17D1F419227.xml new file mode 100644 index 0000000..75f2631 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/CB2DB610-85D6-2795-2878-C17D1F419227.xml @@ -0,0 +1,182 @@ + + +walloar +2021-03-02 09:53:56 UTC +3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +31D3D627-A51F-C2CD-32E8-DC8DD733112E +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +1397CB0D-4B6C-D2C4-AFFD-D28F6A79F892 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +2987E008-FD74-CA2C-AFC8-0F2959F4EAE3 +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +650A4E69-7BF6-25D3-BEE9-82676A9F7342 +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +E82D7082-0602-65A4-401E-8A5E52838FCC +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A5C921E3-8809-C1DC-DCAC-056A0785263A +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +74F417F7-ABB3-A71C-5467-D1F6DF4A2ED8 +eRights + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +6A123D50-29B0-DAF8-A2A2-155F04F6376B +eRights + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +E1A256F2-E330-6F54-624D-1081BA2F4177 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +F17E76C7-855D-0951-B65C-5889140DB491 +eRights + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +EF2EC4E5-8B57-676F-3656-3BB98AE09AC5 +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/D6DBF9EA-A18C-7404-3676-D563D8A9E256.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/D6DBF9EA-A18C-7404-3676-D563D8A9E256.xml new file mode 100644 index 0000000..405293f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/D6DBF9EA-A18C-7404-3676-D563D8A9E256.xml @@ -0,0 +1,182 @@ + + +walloar +2021-03-02 09:53:55 UTC +630D97D6-855C-0E6D-5879-00F9E3F6BFD5 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +C6A1399A-90B6-CD13-4404-FF9FCE1AA468 +eRights + + + + +true +587B5FB6-A155-75E0-96C2-E7BA8AA0515F +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +C44D4851-452C-5221-912A-D56B617926B7 +eRights + + + + +true +5EA5CE55-B7A8-958C-9931-EC453C9A1C80 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +A6EEA1B2-45B2-3382-666B-1D538BC671D0 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +2ABD0126-3C41-D799-5ADD-E5A3F23E84F9 +eRights + + + + +true +false +1 +LOGDT019 +9 +2 +,9,2 + + +walloar +2021-03-02 09:53:55 UTC +EB6E1FCD-CEC2-63DC-D8B0-91561473ABCC +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +685EAA60-EEB5-4819-81A2-F6C31F40C816 +eRights + + + + +true +8F3929E2-B542-145A-3429-6CCA6D6B9198 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +3D486138-DC40-2F6B-8582-A776A6148434 +eRights + + + + +true +775794B6-41D2-6FDB-CDED-B6332D609EC0 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC + +74891564-02B5-1322-938C-6CFDE673147B +eRights + + + + +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +57E53ABE-CC17-7A85-E566-B7ADF1778330 +eRights + + + + +true +false +1 +LOGDT024 +3000 BYTE +3000 BYTE,, + + + + +walloar +2021-03-02 09:53:55 UTC +22BB6610-D3E5-12AA-5302-9404B16E0CF4 +eRights +false + + + + +true + +1DCBE4F8-A581-F97F-4AE1-76D45FE113F6 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/DF3C10D6-CB04-CF77-616F-08B8DAF51D93.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/DF3C10D6-CB04-CF77-616F-08B8DAF51D93.xml new file mode 100644 index 0000000..68baac6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/DF3C10D6-CB04-CF77-616F-08B8DAF51D93.xml @@ -0,0 +1,158 @@ + + +walloar +2021-03-02 09:53:55 UTC +0446BDB6-26D9-B764-C2A6-8BF8EE0C1200 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +C26EFFD1-8855-DB7C-9431-6E128EBF26C6 +eRights + + + + +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, + + +walloar +2021-03-02 09:53:55 UTC +87F91A67-EEB1-6C46-5F61-889F4A044355 +eRights + + + + +false +1 +LOGDT024 +64 BYTE +64 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +28009780-3DAA-717D-4A50-6E963DD3CB1E +eRights + + + + +false +1 +LOGDT024 +64 BYTE +64 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +37D2D3FB-28F0-E701-EF56-18C0D84F0A36 +eRights + + + + +false +1 +LOGDT024 +64 BYTE +64 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +082948C0-3D5F-D52F-80E9-FE3654E56185 +eRights + + + + +false +1 +LOGDT024 +64 BYTE +64 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +9B22E644-A88E-51BA-14AF-43372C45D7B5 +eRights + + + + +false +1 +LOGDT029 +4000 +4000,, + + +walloar +2021-03-02 09:53:55 UTC +F0B981BB-3C0E-5838-11C7-F7214DBB79DF +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +05797B27-82A2-B899-E910-ECBACD76A637 +eRights + + + + +false +1 +LOGDT007 +7 +sysdate +7,, + + + + +walloar +2021-03-02 09:53:55 UTC +0B7C740E-1FA8-EB2B-7586-7715948C9049 +eRights +false + + + + +true + +800C6C00-8D60-4ECC-5D09-08924142E16E + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/E0B08F7D-D853-FDAC-836A-C01306FEFCEB.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/E0B08F7D-D853-FDAC-836A-C01306FEFCEB.xml new file mode 100644 index 0000000..e9e56ca --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/E0B08F7D-D853-FDAC-836A-C01306FEFCEB.xml @@ -0,0 +1,125 @@ + + +walloar +2021-03-02 09:53:55 UTC +62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +9CC87FE6-69EA-EFDC-773C-E8278DF26DFF +eRights + + + + +EAD06FA5-2B9C-2BF9-E1E4-491AEC643CFB +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +FEC0C51C-B03C-CACE-768D-AABE9193E41D +eRights + + + + +41435BA7-E7F1-F8F9-D69F-5166D8906E21 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +9CC87FE6-69EA-EFDC-773C-E8278DF26DFF +eRights + + + + +29F20B6E-1181-328F-B337-85A765532E96 +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +BF7268FF-CD28-8836-216A-20300C3038AC +eRights + + + + +CHK_ANK_EDMS_ERCD_STATUS +false +1 +LOGDT024 +10 BYTE + + + + + + + +10 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9CC87FE6-69EA-EFDC-773C-E8278DF26DFF +eRights + + + + +D8CF9EE5-0332-F5F1-150B-0C5B89594C09 +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:55 UTC +660E4B62-AE47-4F8C-4BCA-BCFE017E88CD +eRights +false + + + + +true + +43B8A14B-3F7F-CA8D-44F6-AEB5B1C53474 +7C1D706F-CA53-6670-6CCD-B95DE686F86F +F1054E5C-B5BB-E193-C20D-7565C5AD0FFA +080BFE5B-7226-6837-7A59-033E34F37DCF + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/E176ACBD-7472-2FE5-C56D-79CF6E4C54FC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/E176ACBD-7472-2FE5-C56D-79CF6E4C54FC.xml new file mode 100644 index 0000000..1a84b59 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/E176ACBD-7472-2FE5-C56D-79CF6E4C54FC.xml @@ -0,0 +1,100 @@ + + +walloar +2021-03-02 09:53:56 UTC +592E1EBA-CA8E-67B1-097D-EFA6584FB82F +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +7D3D4DB0-30DA-1265-3A3B-1A59DA528B32 +eRights + + + + +true +8F3929E2-B542-145A-3429-6CCA6D6B9198 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +1B820996-9CC3-118E-F4DB-E25902532BCC +eRights + + + + +true +1E317FC4-9686-5B2A-C41D-842669B03869 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +F7036985-1B09-D511-0528-2749A7956333 +eRights + + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +1F511459-A77F-DE59-C952-4B83EA5C5410 +eRights + + + + +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:56 UTC +2C8FC534-A966-F870-E4F9-8D845B519624 +eRights +false + + + + +true + +BB17F910-1658-5ABA-2611-38A07ED8615A + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/E2E41E88-3AD7-C5DD-AD31-5E6EC3DDA41C.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/E2E41E88-3AD7-C5DD-AD31-5E6EC3DDA41C.xml new file mode 100644 index 0000000..d288c6a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/E2E41E88-3AD7-C5DD-AD31-5E6EC3DDA41C.xml @@ -0,0 +1,441 @@ + + +walloar +2021-03-02 09:53:56 UTC +9EF72CA0-6663-4411-3182-FF0B74E9241A +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +17D47BA8-0BC6-19AE-D638-046D53F9A790 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +D4EEF64B-3AD6-1994-04C1-F1BF1EA6D8E0 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +34746AFE-40D5-CEB6-0E57-60F3B8AC98BF +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +687F87A0-9D26-4BA6-5C1C-0071F04FC291 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +7227C100-099F-5AFA-750A-02199D85ED15 +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2730EC3B-714C-DDB2-FDD6-74B17E42628B +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +B9EB1CED-81BB-6335-08CD-8658A631A58E +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +A42E2A13-2CBD-C811-4FDB-864B08C729F9 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +44B0DDFA-D9DD-258C-F89D-3CB819440818 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E772AA0D-A72B-0702-00D4-80C538336AEE +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +D2EF32AD-898C-A995-DCC4-23D32FE092BD +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +374D05D3-01EF-35C2-84F2-42BA56964450 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F4E190AD-A1E2-C0CF-819D-0885B6A437C5 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F22DEE24-7540-259B-33E3-2286BE05C004 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +87A18115-3900-5F8E-96B8-F0AEA88BCA58 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +AE33EC1D-D3EE-4D28-FDEB-5946A9C446D0 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +26622B32-7519-7543-03AA-DB94FCAF4083 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +3B6555FF-1245-EA76-DB5F-6B64D08311D8 +eRights + + + +true +false +1 +LOGDT024 +743 BYTE +743 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7556E31F-C333-B217-3C19-685250266CD0 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +DCCD1BAC-9B14-8601-E1AC-071F34D496BD +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +6F416FA5-5331-8AFC-0445-8F7762BE991C +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +0C84101B-71A1-CC56-22A6-C2FE51CD118C +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +F2FD0396-D9B2-EC84-7FF8-06559015FD49 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +C6FD289A-3156-FF05-22B3-8B64D6D1A57E +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +6FC4CAC8-56EF-81CE-60C0-373A43EAFA69 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E8E442CF-0726-A85B-7AC0-A46C1EF288CF +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +32D4EDBE-9428-05DB-C23B-FFC33FAC5504 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +6BFED3A0-9D0E-BEFD-05D4-BE2E2618EF62 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/E668A87C-7B90-5FC2-4038-FAD1D1AD75F4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/E668A87C-7B90-5FC2-4038-FAD1D1AD75F4.xml new file mode 100644 index 0000000..45f1aed --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/E668A87C-7B90-5FC2-4038-FAD1D1AD75F4.xml @@ -0,0 +1,100 @@ + + +walloar +2021-03-02 09:53:56 UTC +749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +15E1794C-50DD-56DC-B045-DF8ED8163106 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +85ED6466-52B3-5C22-7B65-D796B68940F0 +eRights + + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +2E5E37B8-2029-C3B0-8C22-607CBB8A674E +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +18F804BA-8180-9072-BA51-AEF6CD453D29 +eRights + + + + +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + + + +walloar +2021-03-02 09:53:56 UTC +5BE178D9-AF31-486C-E472-FB64DF6263EC +eRights +false + + + + +true + +8F3929E2-B542-145A-3429-6CCA6D6B9198 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/E997D43A-467E-E5FB-CB89-A7A067DB482E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/E997D43A-467E-E5FB-CB89-A7A067DB482E.xml new file mode 100644 index 0000000..173ae0d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/E997D43A-467E-E5FB-CB89-A7A067DB482E.xml @@ -0,0 +1,316 @@ + + +walloar +2021-03-02 09:53:56 UTC +A3555874-6A6F-641F-2400-2E068C6B604D +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +7795442E-AF25-7F05-4D77-149BE1458632 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +79F604C8-38C7-2C61-92D3-817485A55A44 +eRights + + + +true +false +1 +LOGDT019 +6 +0 +,6,0 + + +walloar +2021-03-02 09:53:56 UTC +6771EC74-0321-C886-65B1-B510B96D1B71 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +CB89709A-1414-6137-704C-13373D568551 +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +62B3682F-8C95-C023-A158-B64F8796EC6E +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +31FD8903-C55C-C9E1-3699-EEF3E1FE9D82 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +2A77A3D7-9A3F-9A2E-F34D-A305E29B3979 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F5345578-3D7A-0CCD-5FFD-872C8739E815 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +A46D81DF-F254-D947-54C9-F6DC92BEB1EC +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +47FA03F6-465A-79B5-1330-9D431EBD50D4 +eRights + + + +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E8A3C3BE-7C95-67D7-2BA0-47F9D1A20C12 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +D8900F32-90F8-8D45-62F6-7F470FA188DA +eRights + + + +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +AF284264-A27E-3552-F1EC-B6D597105967 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +0D0CA272-EAA3-25AE-D0AE-E7EB7BDCCAE5 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +31EE601B-239C-816F-D10F-2F7467A19E7B +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +68CA3E72-E198-E366-722B-98694082F5B8 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +8756B1F7-3E7B-A2E0-949E-3A2E0A1A7C0E +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +72C71692-AA1D-91B0-3D47-7DE8946F804A +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F8A28F4B-ECAE-0EFF-4252-A2206C9EB460 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +2A0DA975-438E-430F-2CBF-9154C480FF1D +eRights + + + +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/EBB20CC3-ECCB-9B71-97AF-403D942F9990.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/EBB20CC3-ECCB-9B71-97AF-403D942F9990.xml new file mode 100644 index 0000000..1a550ea --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/EBB20CC3-ECCB-9B71-97AF-403D942F9990.xml @@ -0,0 +1,120 @@ + + +walloar +2021-03-02 09:53:55 UTC +BC72B0EE-1464-3878-1EA4-4B45D4EB9AD6 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +23C54777-2E4F-A994-44B7-49E89BEED5D9 +eRights + + + +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, + + +walloar +2021-03-02 09:53:55 UTC +3FB42224-B083-966D-5704-D05877D36F79 +eRights + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +CA375F3A-13BF-C086-78F5-AF1D8DEEE949 +eRights + + + +false +1 +LOGDT024 +100 BYTE +100 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +45A1EA51-575B-BBF9-8FDC-35B3D36D436B +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +E4AF0CB8-152D-99D0-5BB6-1B482581CBB3 +eRights + + + +false +1 +LOGDT029 +4000 +4000,, + + +walloar +2021-03-02 09:53:55 UTC +41011715-10E0-A6FE-55A2-64C91356F343 +eRights + + + +false +1 +LOGDT007 +7 +sysdate +7,, + + + + +walloar +2021-03-02 09:53:55 UTC +A78F7E23-0D85-71E7-E772-21C2C269952B +eRights +false + + + +true + +AC3E4820-0C26-337B-1820-E8A7098AD12A + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/EBB8086D-65A7-872A-63FE-C80820290455.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/EBB8086D-65A7-872A-63FE-C80820290455.xml new file mode 100644 index 0000000..3a3c595 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/EBB8086D-65A7-872A-63FE-C80820290455.xml @@ -0,0 +1,197 @@ + + +walloar +2021-03-02 09:53:56 UTC +A8AD1617-D099-9273-CCEA-861E1F9E01A4 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +9BC70279-C08B-460A-5467-5745DB35C2D2 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +38A6C96D-31BC-6420-ECC9-04B4673BFC1F +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +B297C3F2-E8EF-EF6F-003B-96A4F33BE0AD +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +30F171D2-1BE7-F5F6-B320-C57589F736BB +eRights + + + +false +1 +LOGDT024 +5 CHAR +5 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +D3537B31-D419-902E-6AFA-4359F79BF9DE +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +1A059DF0-B449-3C18-5768-2BE445AFFDEA +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +8B86EE99-6DBF-EE8E-A196-317245815612 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +8E83FCE4-9A8C-CF34-447A-C6C5A12038EC +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +DF92DE7B-C9F5-36E4-E11E-F1BDDB8B44C3 +eRights + + + +false +1 +LOGDT024 +10 CHAR +10 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +554CD9FA-C554-946C-213C-94AA7C23C9FE +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +9736E180-7792-7F6F-98E5-C7EC56D5F1B4 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +8C72C798-30DC-3C14-780F-61B6B45BA274 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/F1E1382C-014B-E193-DF18-55A4487C0C70.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/F1E1382C-014B-E193-DF18-55A4487C0C70.xml new file mode 100644 index 0000000..4ca3bc6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/F1E1382C-014B-E193-DF18-55A4487C0C70.xml @@ -0,0 +1,646 @@ + + +walloar +2021-03-02 09:53:55 UTC +83EF0329-A487-2A83-9FAA-04027807BB55 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +5B6E91A1-A95C-C6F0-63DB-D80BF8E539BE +eRights + + + +false +1 +LOGDT019 +* +0 +,*,0 + + +walloar +2021-03-02 09:53:55 UTC +23CFFAD3-DA09-3D7E-B6B6-EBC15F5762D7 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +9CFE6541-C0A3-7ADB-A83A-F668D8E900D4 +eRights + + + +true +false +1 +LOGDT019 +3 +0 +,3,0 + + +walloar +2021-03-02 09:53:55 UTC +A92B24EA-D7A7-12E0-FD98-817CD383E11F +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +D622C00A-1087-25A4-C71D-4C93E6EAD0E6 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +44A68231-C0A1-221B-8296-68883140DD7D +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +4089A8DB-3C1D-A969-DF47-B4A668B391F3 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +BE019E1E-EEB2-C730-88DF-DF29313B24D1 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +C6F0B3E9-D960-CF90-0E5B-E8E7C971DA4F +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +46E8DE1F-DF39-141B-A0FB-19121B3DEECD +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +9B9309F6-DBC3-9A9F-94D6-159882F20F0A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +A7FBC606-98EB-74A2-4FC8-94D18BC6A754 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +6C9A3930-ED21-4C32-8299-702F7B09433A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +E9515F1B-602F-FE10-9059-C6AC0A88B5AA +eRights + + + +true +false +1 +LOGDT019 +19 +0 +,19,0 + + +walloar +2021-03-02 09:53:55 UTC +EFF25745-574F-DD88-3955-4E5B4B48C7A2 +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +B5CDAE10-5A98-B793-623F-3AC9428FBB30 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +BA19AD93-208C-F50A-C31C-9736361A81D9 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +B7939AC2-82EA-0022-9324-7299C25F190B +eRights + + + +true +false +1 +LOGDT019 +19 +0 +,19,0 + + +walloar +2021-03-02 09:53:55 UTC +7BAAC4BA-0F80-7DC4-0FC7-DD5B36C7F28A +eRights + + + +true +false +1 +LOGDT019 +19 +0 +,19,0 + + +walloar +2021-03-02 09:53:55 UTC +EB7CA29E-506C-8F8F-611E-5369F9892C99 +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +0327D74C-8382-B7A4-98BC-3AC4A743CD24 +eRights + + + +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, + + +walloar +2021-03-02 09:53:55 UTC +91D0D005-53E0-5CC6-59E4-878675C862D7 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +EE7B88E7-2627-A355-2A95-EF13523B5683 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +A68496E2-6405-D922-0247-64C7F909D8FC +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +03695A98-BB4A-ADA5-A594-6D7E627E29B7 +eRights + + + +true +false +1 +LOGDT019 +19 +0 +,19,0 + + +walloar +2021-03-02 09:53:55 UTC +C4720AEC-3CAE-4C4A-1C3B-208456B0A87C +eRights + + + +true +false +1 +LOGDT019 +19 +0 +,19,0 + + +walloar +2021-03-02 09:53:55 UTC +CE171B3C-8237-8284-87B9-42C5C4BF00A8 +eRights + + + +true +false +1 +LOGDT019 +* +0 +,*,0 + + +walloar +2021-03-02 09:53:55 UTC +A0750D54-4766-F8B5-7AAE-0B81AAE0185B +eRights + + + +true +false +1 +LOGDT019 +* +0 +,*,0 + + +walloar +2021-03-02 09:53:55 UTC +8D9A2AF0-56CB-0ABC-9ADF-7D7EFB0D9AF1 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +D8040FB8-46A0-ACDB-1096-516E6F6043ED +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +7AC2D39C-3B6F-86F9-9D73-26766B4339E0 +eRights + + + +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +C7F93F40-C3C3-172D-4FAD-81E718E626B4 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +C5EF538C-F7DA-3B12-54B4-FC82AF103757 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +3A994887-E5EC-9F04-1681-27B48059CD98 +eRights + + + +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +71105067-65A7-DAFB-B69F-2B63AB0311C0 +eRights + + + +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +37059401-6A9D-06AB-CF8F-9EA1895F1E3A +eRights + + + +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +2E3C4F8F-A4E0-9E30-4F9F-F4A7E5140A16 +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +F19524A1-F23F-6235-B558-1948B37E0A5D +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +011C1DD1-061E-E0B9-BAA6-96CBA809AF03 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +F40F72AC-44CA-DC18-D8CA-E4F96F8EC306 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + + + +walloar +2021-03-02 09:53:55 UTC +2114763A-E5D8-A573-2AB1-716342014AF5 +eRights +false + + + +true + +41A73608-7AF9-11F7-ECDF-BAF95A247502 +9DB15151-C129-376A-61E9-AA8A0467CDA1 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/F2D5C760-FB84-9EAB-ABDA-1E546127E652.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/F2D5C760-FB84-9EAB-ABDA-1E546127E652.xml new file mode 100644 index 0000000..de01f35 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/F2D5C760-FB84-9EAB-ABDA-1E546127E652.xml @@ -0,0 +1,182 @@ + + +walloar +2021-03-02 09:53:56 UTC +5DA23FF0-4C88-ACC1-69D4-01D8597F8F19 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +7B4E12B3-3088-5226-02FD-12B691C48657 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +3B4A5FC4-A5E3-AF51-3926-6B47C3F7B054 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +A6D288E8-CA77-6305-F358-199225140015 +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +1AD7716C-8AC0-92C4-8AEB-C893DC1B4644 +eRights + + + +false +1 +LOGDT024 +5 CHAR +5 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +0D3D9B11-0757-EDFD-CE99-606B648D617B +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +B9AA3920-AEC8-69F1-0393-2D12315433DE +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +C6C4D8F4-FA24-3CB0-E069-61F86416159F +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +42E5DF96-6B3E-CDB8-1DBC-887ED8214850 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +982D6995-3F8A-B9A6-6403-2FD6243A744C +eRights + + + +false +1 +LOGDT024 +10 BYTE +10 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +4DE6BE2A-B5FF-5589-D178-E32ED2841A23 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +488013AB-5627-521E-7C36-7FE75DE0F567 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/F86F6775-160D-1266-D8EC-B11BB6B47DF6.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/F86F6775-160D-1266-D8EC-B11BB6B47DF6.xml new file mode 100644 index 0000000..9b6b849 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/F86F6775-160D-1266-D8EC-B11BB6B47DF6.xml @@ -0,0 +1,132 @@ + + +walloar +2021-03-02 09:53:56 UTC + +F141D682-7C3B-DF6E-0E85-6E3337BB1FA3 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC + +853438ED-1DE7-CD4F-F833-80AD7FB933AF +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +6F652368-64EB-26EB-BF66-3E956CD65C76 +eRights + + + + +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +275ED93E-FFAF-7090-812D-D9C63B3F26AB +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +7FFDED76-A5C8-0629-EF26-57FFEEC9AF90 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +B8D11534-8F28-2980-9115-5989EB343620 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +C47D4BE3-4191-FC3F-4DDF-5B263EB12CFD +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + + + +walloar +2021-03-02 09:53:56 UTC +4BEC1D6D-4497-ABD7-D747-01783C3F1C07 +eRights +false + + + + +true + +ABDEDED5-DB54-472E-A914-416B21094D8F + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/F89B50B0-F0D9-81D2-9A67-FF4335D90B34.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/F89B50B0-F0D9-81D2-9A67-FF4335D90B34.xml new file mode 100644 index 0000000..a42f80a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/F89B50B0-F0D9-81D2-9A67-FF4335D90B34.xml @@ -0,0 +1,428 @@ + + +walloar +2021-03-02 09:53:56 UTC +52675525-20A2-9D94-FC27-4C5EBA8B3915 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +83150B1B-A6E0-3EB4-3C24-DA77824D2EBF +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +08801D39-09C3-FA8F-7FAE-89A8F736FD88 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +92938513-F02F-FFA5-98DF-D1A007A58C9E +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +725E372D-B0CD-33AE-EDD3-E3F37521D3F1 +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7F509BBA-9C78-5A54-B4C7-AC72F920E407 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +93A9DDE3-81C2-61A0-76F1-17E111AF3191 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +179239F7-999C-CA8D-8946-0C4F3EFCF5B4 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +30D4E4CB-4F93-834A-CBC3-F9ABA577306C +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E01A03D6-BA1E-AF08-0DDE-82AD541241E2 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +6690184C-7AF8-A4BF-BC1A-430FDFECD6D2 +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +8FD7B40D-617D-3B17-70C1-47E618D0399C +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F62A9DCC-BFA6-2CA2-4CDE-5FB8E851F5F7 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C7A9646F-7AFE-B119-24D0-178F97D0724C +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F312623B-1674-8128-D96D-95A2CE525BBA +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +AF846FC1-2F86-B7CF-A29A-A08D445A0083 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A69CC982-1BCE-6779-3F2D-39A8BA3898AB +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +FFEA41DC-24BB-31A9-4A31-0A4010F86C87 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +FC826E5D-FFB7-61AA-BED2-3865E87564C9 +eRights + + + +true +false +1 +LOGDT024 +1003 BYTE +1003 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B0153DA7-5F9D-1F69-F1C5-5CA341E82C28 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +6A4E749A-B42D-8842-DB7A-851ECFCE746D +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B74D6C0E-C044-E1A9-1953-0B47D8A6396A +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F4F8F3C5-BB5D-28C0-D49E-C99D3C8A5E8D +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +95E5627E-F109-73C1-CE61-5DFBB232785C +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +2DD0E78D-939B-5494-2DC1-E12276DD2C98 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +415823E9-F6EC-8DC4-1E3E-00764003E2F5 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +D39A5396-C7D0-902C-C515-1082FD1CD40D +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +598D42A7-6F34-E112-C8CB-0EC41AF467FB +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/F8A32C59-5E45-F52A-7060-AB3159FEA108.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/F8A32C59-5E45-F52A-7060-AB3159FEA108.xml new file mode 100644 index 0000000..9c08cda --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/F8A32C59-5E45-F52A-7060-AB3159FEA108.xml @@ -0,0 +1,317 @@ + + +walloar +2021-03-02 09:53:55 UTC +63054212-8AEE-5074-DEED-6B5EF4457EB6 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +C7630B7C-C91F-0309-DA9A-64F880758068 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +8EC67F6F-DC7D-06B0-74F2-112429DD6C2B +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +EE90265C-FE26-2E6E-B80A-6E5FF5B25D4A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +957C0D84-70FF-5B5C-6D9E-B64DB23D48FC +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +B0430B40-2779-B924-4CDF-0EC757E6B67A +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +3FE73FF4-5CF7-A02E-4A1A-2FCCD92B39EE +eRights + + + +true +false +1 +LOGDT024 +300 CHAR +300 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +05D8257F-F1AF-19C7-38F2-A31720C4C7A5 +eRights + + + +true +false +1 +LOGDT024 +40 BYTE +40 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +4CC80021-A5F7-4167-ECC1-5F57C8B88B90 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +E5B8C864-7BD9-ADC8-00B3-B03FA75857F0 +eRights + + + +true +false +1 +LOGDT024 +40 BYTE +40 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +72D11D30-B895-F76F-7E96-BB53E75B164B +eRights + + + +true +false +1 +LOGDT024 +80 BYTE +80 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +C737446F-3A43-36B2-8C1A-66D5D2F64FE7 +eRights + + + +true +false +1 +LOGDT024 +768 BYTE +768 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +79C34995-3F5E-BFD2-F046-EE30F835C3E5 +eRights + + + +true +false +1 +LOGDT024 +768 BYTE +768 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +D447C518-18EB-EB61-22D0-F43D4BDFF430 +eRights + + + +true +false +1 +LOGDT024 +1587 BYTE +1587 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +55DB5A9D-1B5A-E59D-87EE-28B51FF43FAE +eRights + + + +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +516A919A-EDAB-DA8F-CC42-440602C9E09F +eRights + + + +true +false +1 +LOGDT024 +40 BYTE +40 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +4827BE69-2F56-32C8-3804-503266451DDA +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +15464873-8C69-4AA0-CCF5-EC762D3B8C03 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +06FAB31F-1E92-75B6-AA62-E316DF963341 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +08028E01-7C43-9457-C134-93612D610304 +eRights + + + +true +false +1 +LOGDT024 +7 BYTE +7 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +11786FDF-2365-8CF8-F29A-3F583911F7BE +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/FD62CE14-5107-506C-2AA9-8B0DFE1AFD8B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/FD62CE14-5107-506C-2AA9-8B0DFE1AFD8B.xml new file mode 100644 index 0000000..ab57b3d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/FD62CE14-5107-506C-2AA9-8B0DFE1AFD8B.xml @@ -0,0 +1,113 @@ + + +walloar +2021-03-02 09:53:55 UTC +F3764DB4-0649-A94A-7497-92FDAEA69888 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +1B53D1D7-27F3-F9EA-2D81-B994A68CDAC6 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +17EF2B04-88F3-4E5C-5BCA-6E904B75D09F +eRights + + + + +E2957125-2BC0-5F54-B0EB-767B6482A788 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +F9E76372-E446-7D22-A1FC-908177582810 +eRights + + + + +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +A76E8A00-340D-F1A2-375A-54D3939E8BB2 +eRights + + + + +false +1 +LOGDT024 +25 BYTE +25 BYTE,, + + + + +walloar +2021-03-02 09:53:55 UTC +FD0B34A5-59B1-C92D-8B90-986C1AA7495A +eRights +false + + + + +true + +4A289E71-44F7-2BEA-A3D8-6B78DD82B453 + + + +walloar +2021-03-02 09:53:55 UTC +3A6B6B40-0C95-F771-8368-F80AB8B70E74 +eRights +false + + + + + +4A289E71-44F7-2BEA-A3D8-6B78DD82B453 +E5A82808-9BCB-6177-E745-79AA5100AA0B +36FAE2DA-C70F-C5C4-BC3B-D1E17EF145E7 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/FFEBDED7-672E-CFDF-B5A0-E43337D64AA7.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/FFEBDED7-672E-CFDF-B5A0-E43337D64AA7.xml new file mode 100644 index 0000000..4eaf2b3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_0/FFEBDED7-672E-CFDF-B5A0-E43337D64AA7.xml @@ -0,0 +1,316 @@ + + +walloar +2021-03-02 09:53:56 UTC +96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +ACE1D61F-A0F0-DE50-6881-66DC66C30437 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +AEEA8629-D589-BFEB-E5DB-3E61BF610DA9 +eRights + + + +true +false +1 +LOGDT019 +6 +0 +,6,0 + + +walloar +2021-03-02 09:53:56 UTC +6BFBEAFA-6DE5-6232-323B-35142BE2F691 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +309A0DE1-352D-F3C5-7CA0-E8D6B8CF0B2D +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +9ACDD216-A120-5EEF-51B8-676556AD9E8F +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +B78F5775-457C-6E41-D636-0A3649938764 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E347019A-32E1-5E69-57BD-5A81635DB003 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F2822F90-121A-87D5-5A45-C1E15D246FAE +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +09F864E8-30A7-7273-E0EB-2DE4A7113D76 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +9434A900-5A9D-7B1F-29D2-0EDCE5CBB1A6 +eRights + + + +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +FF912DD4-983B-FCAC-DE4A-6ED93B38974B +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +E990B9EE-E6F0-7F3C-AF9B-163864BEBF18 +eRights + + + +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +1EA910A5-4DB8-C6F3-6C8C-AE4711F4EB04 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +EC441A93-EC35-5F22-B327-7280809DE67D +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +0694A303-8FA1-52F7-CC0B-BD57B9F0C76D +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +BBD9473C-B3AC-F7B8-4E0B-14C7430D0D8A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +42E650EA-8A76-7300-580A-447E574445D4 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +9A535BEE-7E63-7618-4AAB-B54450F27538 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +5885B68F-AFC2-077C-9723-EFC3E7AD5AA7 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F4C71422-AFC8-AE89-36F0-AFD6CA9D1A2F +eRights + + + +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_1/3865B4BE-3C20-A7CC-9882-45676DF0071C.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_1/3865B4BE-3C20-A7CC-9882-45676DF0071C.xml new file mode 100644 index 0000000..b1bd6c5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_1/3865B4BE-3C20-A7CC-9882-45676DF0071C.xml @@ -0,0 +1,152 @@ + + +walloar +2021-03-02 09:53:56 UTC +19B5777E-F422-5B95-B997-179834446A02 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +7994C82C-4D52-F039-9468-69BE5E0E585A +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +FDE52FF6-A6F7-6BB7-00E3-F9DA60BDFFFD +eRights + + + +true +false +1 +LOGDT024 +5 BYTE +5 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F069DE01-1CE7-4CB8-72CB-9848CD072362 +eRights + + + +true +false +1 +LOGDT024 +250 BYTE +250 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +54DFF18E-0A1F-A47B-1178-98447D9C1170 +eRights + + + +true +false +1 +LOGDT028 +4000 +4000,, + + +walloar +2021-03-02 09:53:56 UTC +368BF05C-05A7-44CC-DFF7-A9D252E77227 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +C5A2732A-1C6E-AEE6-1C73-FFD823D55676 +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +B1699416-E020-D0DE-25E8-F1787C643388 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +747B1199-E980-30AE-32DE-DA772BC2DABB +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + + + +walloar +2021-03-02 09:53:56 UTC +962542B9-B17A-BAFA-0D06-B9BBD30AE5F3 +eRights +false + + + +true + +57597A7A-E43B-FD1E-F464-297B29AC284E + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_1/5E847542-23E5-6A8B-B15D-82F3F3E4E926.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_1/5E847542-23E5-6A8B-B15D-82F3F3E4E926.xml new file mode 100644 index 0000000..3812833 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_1/5E847542-23E5-6A8B-B15D-82F3F3E4E926.xml @@ -0,0 +1,65 @@ + + +walloar +2021-03-02 09:53:56 UTC +4F6003DF-80DE-EF7D-BA95-7CC8BD38C971 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +88251835-CE02-D7C5-A6A7-019433DD5EF1 +eRights + + + +false +1 +LOGDT019 +* +0 +,*,0 + + +walloar +2021-03-02 09:53:56 UTC +85B71AD3-79F0-59A9-FAAE-9FC1C637FA12 +eRights + + + +false +1 +LOGDT024 +256 BYTE +256 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +DA42358C-B9B9-69F3-99CE-92D7CCC2E58E +eRights + + + +true +false +1 +LOGDT019 +* +0 +,*,0 + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_1/62878520-1431-B16F-7C85-65753A45F334.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_1/62878520-1431-B16F-7C85-65753A45F334.xml new file mode 100644 index 0000000..be12243 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_1/62878520-1431-B16F-7C85-65753A45F334.xml @@ -0,0 +1,127 @@ + + +walloar +2021-03-02 09:53:56 UTC +25DD1062-1B61-D9F8-86D8-135E939ABBC4 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +17FAEC0A-9B88-A26F-BCE2-14CB1292D1B8 +eRights + + + +false +1 +LOGDT019 +* +0 +,*,0 + + +walloar +2021-03-02 09:53:56 UTC +1CEA15BA-30F0-E608-40A6-AAF9D6036A1D +eRights + + + +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +D2C1A7BF-46BC-626F-D7BB-C7040AA6E9EA +eRights + + + +true +false +1 +LOGDT019 +* +0 +,*,0 + + +walloar +2021-03-02 09:53:56 UTC +E29ABC4A-BEB8-1F41-41EA-EAA3A20FFE1D +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +EF090A94-8A77-9730-9D70-1F141075527E +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +4AF5C295-960F-CDFE-B92E-D6EA1ED8EA72 +eRights + + + +true +false +1 +LOGDT007 +7 +SYSDATE +7,, + + +walloar +2021-03-02 09:53:56 UTC +121C2010-DB59-A08A-2A71-188EBC4CCB40 +eRights + + + +false +1 +LOGDT024 +10 BYTE +10 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_1/7CB9FD0D-D775-7818-F326-796FAA358D21.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_1/7CB9FD0D-D775-7818-F326-796FAA358D21.xml new file mode 100644 index 0000000..6444b38 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/entity/seg_1/7CB9FD0D-D775-7818-F326-796FAA358D21.xml @@ -0,0 +1,299 @@ + + +walloar +2021-03-02 09:53:56 UTC +D43A6B01-A010-2E62-F805-42BD75AE0D0F +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +2CF1334C-24F7-D158-E9B5-DF8359067355 +eRights + + + + +16DA4AB6-1613-7D13-DDC5-BBAA1E75D452 +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +5FD4515C-12A7-84BB-FFB6-C79A67E1BD89 +eRights + + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B055AA0F-73F2-1590-2A89-791808C92187 +eRights + + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2CF1334C-24F7-D158-E9B5-DF8359067355 +eRights + + + + +575E9E0B-42AD-2B75-9556-C36CD8D52096 +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2CF1334C-24F7-D158-E9B5-DF8359067355 +eRights + + + + +E21FF685-221F-2DD8-9BFB-A6FB32D6EB46 +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +046B5A99-EC23-D293-D583-B89AF3D16B8C +eRights + + + + +true +false +1 +LOGDT024 +250 BYTE +250 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2D5740CD-6C9D-E9D5-5EF1-6ED6C0E04063 +eRights + + + + +true +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +9BD8059B-BBD3-8401-57C8-B113ACF62FA1 +eRights + + + + +true +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +02B19159-1FC5-90AE-2F33-1E197D8FC346 +eRights + + + + +true +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +4391B19D-E351-8774-3767-7BBA84CCA4D8 +eRights + + + + +false +1 +LOGDT024 +16 BYTE +16 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +1C29E2EC-3F2C-7BE8-61D2-00C89DEAAA4A +eRights + + + + +false +1 +LOGDT024 +8 BYTE +8 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +72964F80-1BF8-3637-F65D-451E8DC70348 +eRights + + + + +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +DE79909B-7342-7DCB-D4EA-2A956EC6FAF0 +eRights + + + + +true +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +0E503486-69B7-1B64-F4DA-28B73E8DE9DD +eRights + + + + +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F2061605-66BD-9C24-F439-AFE2D53D9585 +eRights + + + + +true +false +1 +LOGDT019 +2 +0 +,2,0 + + +walloar +2021-03-02 09:53:56 UTC +240A924B-466A-7203-5587-E54B2E27836B +eRights + + + + +true +false +1 +LOGDT029 +4000 +4000,, + + + + +walloar +2021-03-02 09:53:56 UTC +D6708633-7E79-72CE-6C8B-9CA359CE34EE +eRights +false + + + + +true + +675A581C-86EF-4D68-9D95-52C54296A9F5 +952844E2-DA2B-4F1B-259A-3B8EA880491B +9840F489-6AF7-A876-BB1D-C673DD36F02A +323EFBA8-35C4-7792-B864-BE76652DD698 +681A1055-759C-A8C2-8698-57433F38C50B + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/008DAECF-D9CE-790D-5E20-F99E23972044.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/008DAECF-D9CE-790D-5E20-F99E23972044.xml new file mode 100644 index 0000000..3e5690a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/008DAECF-D9CE-790D-5E20-F99E23972044.xml @@ -0,0 +1,22 @@ + + +walloar +2021-03-02 09:53:56 UTC +A269AD9C-167B-CFE9-5538-4BD7C813138F +eRights + + + + +28B6538E-11EB-4E98-47C7-AF9465258BA2 +7CB9FD0D-D775-7818-F326-796FAA358D21 +false +true +false +1 +7CB9FD0D-D775-7818-F326-796FAA358D21 +1 +4D41A940-7772-0F4E-D47A-6975BB2D5AF0 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/043CCF13-0F97-F4DE-ADD0-BC51BABCEF35.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/043CCF13-0F97-F4DE-ADD0-BC51BABCEF35.xml new file mode 100644 index 0000000..ac1bce8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/043CCF13-0F97-F4DE-ADD0-BC51BABCEF35.xml @@ -0,0 +1,22 @@ + + +walloar +2021-03-02 09:53:56 UTC +3A55A721-231C-7467-69ED-A3F683AC7F8E +eRights + + + + +EF1F1E2F-F125-D831-18FE-42146AC46BD7 +2C600E10-CDB3-CA41-2AD9-EC601B961F93 +true +false +false +1 +2C600E10-CDB3-CA41-2AD9-EC601B961F93 +1 +34E28D0E-DF2A-4861-FE91-5B07537FBF53 +true +CASCADE + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/07727274-66DF-FD90-6692-0A1F0BEE1775.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/07727274-66DF-FD90-6692-0A1F0BEE1775.xml new file mode 100644 index 0000000..0a08e35 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/07727274-66DF-FD90-6692-0A1F0BEE1775.xml @@ -0,0 +1,22 @@ + + +walloar +2021-03-02 09:53:56 UTC +C1448B26-F39E-DA07-4624-C0847B58BF74 +eRights + + + + +5B527DE7-9827-7431-325A-CD08241C2895 +34E28D0E-DF2A-4861-FE91-5B07537FBF53 +true +false +false +1 +34E28D0E-DF2A-4861-FE91-5B07537FBF53 +1 +CA9EC934-467D-3BBA-72A9-25B2A0999791 +true +CASCADE + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/16E02466-0EC3-755A-97C0-3A8400F36126.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/16E02466-0EC3-755A-97C0-3A8400F36126.xml new file mode 100644 index 0000000..4d231fc --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/16E02466-0EC3-755A-97C0-3A8400F36126.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +209D7EC3-F55C-0184-0B74-A4FB6CAE9A5E +eRights + + + + +363C202B-AE72-4B2D-08F7-DE7CB52B2123 +false +true +true +1 +C064300A-70F1-394A-04D8-045CD27FC5B0 +* +1A8EC118-CF74-21F4-D9CB-E1D45087EA97 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/17EF2B04-88F3-4E5C-5BCA-6E904B75D09F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/17EF2B04-88F3-4E5C-5BCA-6E904B75D09F.xml new file mode 100644 index 0000000..025e85c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/17EF2B04-88F3-4E5C-5BCA-6E904B75D09F.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +DC0B6208-5DBD-BD77-C70C-852A9DC29ACD +eRights + + + + +446ADA8C-9788-DC55-3863-6F0338570346 +false +false +false +1 +5E7BC858-5237-87AF-3D96-5EA273AD7715 +* +FD62CE14-5107-506C-2AA9-8B0DFE1AFD8B +true +CASCADE + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/1B820996-9CC3-118E-F4DB-E25902532BCC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/1B820996-9CC3-118E-F4DB-E25902532BCC.xml new file mode 100644 index 0000000..8d82094 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/1B820996-9CC3-118E-F4DB-E25902532BCC.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +70A6D18F-E497-07C1-58AA-0FA0CE4F96EE +eRights + + + + +9E72287E-5AF5-24C8-2E91-E3974C0C3F1A +false +true +true +1 +86DFFDA2-73B1-ABDC-FF4B-C21506530FB9 +* +E176ACBD-7472-2FE5-C56D-79CF6E4C54FC +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/23FDAAE0-304B-5E4D-9BFE-2B4BA74A90E1.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/23FDAAE0-304B-5E4D-9BFE-2B4BA74A90E1.xml new file mode 100644 index 0000000..593dc89 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/23FDAAE0-304B-5E4D-9BFE-2B4BA74A90E1.xml @@ -0,0 +1,22 @@ + + +walloar +2021-03-02 09:53:56 UTC +651FBD69-47CE-EEA3-5E9C-E29B4381F792 +eRights + + + + +A1E97E86-E860-40AB-83B8-0B05A3BD7E31 +6DE4047F-E391-1EE2-61CB-F9A65AB0A5C6 +true +false +false +1 +6DE4047F-E391-1EE2-61CB-F9A65AB0A5C6 +1 +3A197A79-F412-9811-F8BA-37E76923A918 +true +CASCADE + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/25A32C98-8731-A2AC-3DE8-1D4239184F6C.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/25A32C98-8731-A2AC-3DE8-1D4239184F6C.xml new file mode 100644 index 0000000..3916f2d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/25A32C98-8731-A2AC-3DE8-1D4239184F6C.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +FD1CC4ED-111A-33BE-8C5D-CCF4D47D0E93 +eRights + + + + +582A64A3-68C7-88BB-148C-7BF367EA1760 +false +true +false +1 +DF3C10D6-CB04-CF77-616F-08B8DAF51D93 +* +56CABDF3-5535-A1EC-AB17-B73FE749E03E +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/2BCE959C-63A7-6313-70A7-DCF7A05B4AA0.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/2BCE959C-63A7-6313-70A7-DCF7A05B4AA0.xml new file mode 100644 index 0000000..2429ebd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/2BCE959C-63A7-6313-70A7-DCF7A05B4AA0.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +896B29CB-B852-917B-EDBA-51BEAA78E7AA +eRights + + + + +EF1F1E2F-F125-D831-18FE-42146AC46BD7 +false +false +false +1 +2C600E10-CDB3-CA41-2AD9-EC601B961F93 +* +54F5ABB2-D9D3-6F84-A6BE-7BE9418086FC +true +CASCADE + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE.xml new file mode 100644 index 0000000..814ee89 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE.xml @@ -0,0 +1,22 @@ + + +walloar +2021-03-02 09:53:56 UTC +09265032-5D6E-17D1-C15F-C8EDC4C6018F +eRights + + + + +28B6538E-11EB-4E98-47C7-AF9465258BA2 +7CB9FD0D-D775-7818-F326-796FAA358D21 +false +true +false +1 +7CB9FD0D-D775-7818-F326-796FAA358D21 +1 +64AB3B08-7A9F-42BA-15BF-609299D82610 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/2CF1334C-24F7-D158-E9B5-DF8359067355.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/2CF1334C-24F7-D158-E9B5-DF8359067355.xml new file mode 100644 index 0000000..d37864d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/2CF1334C-24F7-D158-E9B5-DF8359067355.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +2CA2FF91-2274-C95D-212C-E5D7E7883A7E +eRights + + + + +E2FC095E-73F7-7698-6349-2A7AB79481CA +true +true +false +1 +53DC252B-31A1-BC79-05DE-6287F3A46C1A +* +7CB9FD0D-D775-7818-F326-796FAA358D21 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/314DDCD3-31E3-88E5-E5AD-659BB5F1488F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/314DDCD3-31E3-88E5-E5AD-659BB5F1488F.xml new file mode 100644 index 0000000..ed465a2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/314DDCD3-31E3-88E5-E5AD-659BB5F1488F.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +7B524D3F-78A9-AFEB-25E0-57EAD1493871 +eRights + + + + +9E72287E-5AF5-24C8-2E91-E3974C0C3F1A +false +true +true +1 +86DFFDA2-73B1-ABDC-FF4B-C21506530FB9 +* +C064300A-70F1-394A-04D8-045CD27FC5B0 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/3D486138-DC40-2F6B-8582-A776A6148434.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/3D486138-DC40-2F6B-8582-A776A6148434.xml new file mode 100644 index 0000000..c5e8ffb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/3D486138-DC40-2F6B-8582-A776A6148434.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +2D07F01C-5878-6C1B-0D55-83EF16F72153 +eRights + + + + +B80E9534-BB46-9B11-229F-4673D8A69D68 +false +true +true +1 +BA854E6B-64B0-88E9-8183-B139BF17E9B2 +* +D6DBF9EA-A18C-7404-3676-D563D8A9E256 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/48F7BCFB-54CF-9FD3-A147-F317E38ADFBD.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/48F7BCFB-54CF-9FD3-A147-F317E38ADFBD.xml new file mode 100644 index 0000000..77aacc4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/48F7BCFB-54CF-9FD3-A147-F317E38ADFBD.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +E4198D4D-BE5E-17D5-50E1-E8A5F189F359 +eRights + + + + +FC430689-600E-0903-F09D-AF97B7C43FA2 +false +true +true +1 +BA08A3E0-01C5-1B90-25AC-CEDC6457FE58 +* +C064300A-70F1-394A-04D8-045CD27FC5B0 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/4FFA3719-6E4F-A41C-CFC3-721B0CD15782.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/4FFA3719-6E4F-A41C-CFC3-721B0CD15782.xml new file mode 100644 index 0000000..f43498f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/4FFA3719-6E4F-A41C-CFC3-721B0CD15782.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +B5009973-3A84-D977-05D4-6C0353E0A897 +eRights + + + + +9E72287E-5AF5-24C8-2E91-E3974C0C3F1A +false +true +true +1 +86DFFDA2-73B1-ABDC-FF4B-C21506530FB9 +* +1A8EC118-CF74-21F4-D9CB-E1D45087EA97 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/5785565F-E5B5-8EB3-152A-67A352536411.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/5785565F-E5B5-8EB3-152A-67A352536411.xml new file mode 100644 index 0000000..fe5494a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/5785565F-E5B5-8EB3-152A-67A352536411.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +B7A1598C-867B-22DA-C6C9-16618C6EBD66 +eRights + + + + +362417E1-22E6-E6F5-B247-7C70400B0D2D +false +true +true +1 +E668A87C-7B90-5FC2-4038-FAD1D1AD75F4 +* +0D5C4365-9EF9-39ED-41CD-899807840607 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/613116D9-CBC2-D5ED-F445-E9747F6516F6.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/613116D9-CBC2-D5ED-F445-E9747F6516F6.xml new file mode 100644 index 0000000..df12381 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/613116D9-CBC2-D5ED-F445-E9747F6516F6.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +481C96EB-685B-A700-9F52-D6BA627E586E +eRights + + + + +A1E97E86-E860-40AB-83B8-0B05A3BD7E31 +true +false +false +1 +6DE4047F-E391-1EE2-61CB-F9A65AB0A5C6 +* +2580CBB3-B97C-B649-9472-3D153EA8A687 +true +CASCADE + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/64F9CE94-79B7-189D-6C96-5595355F5E54.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/64F9CE94-79B7-189D-6C96-5595355F5E54.xml new file mode 100644 index 0000000..d7b5d85 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/64F9CE94-79B7-189D-6C96-5595355F5E54.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +69AF70F0-33C5-9633-57F0-3E65962BAF0E +eRights + + + + +89A0978B-F826-D7C7-888F-4D557F14DDEA +false +true +false +1 +0D5C4365-9EF9-39ED-41CD-899807840607 +* +C219EE74-3B16-3794-DAF8-2367867CFA6E +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/685EAA60-EEB5-4819-81A2-F6C31F40C816.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/685EAA60-EEB5-4819-81A2-F6C31F40C816.xml new file mode 100644 index 0000000..04bd1b2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/685EAA60-EEB5-4819-81A2-F6C31F40C816.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +65E3B4C7-7537-F055-551C-3C579E557F76 +eRights + + + + +362417E1-22E6-E6F5-B247-7C70400B0D2D +false +true +true +1 +E668A87C-7B90-5FC2-4038-FAD1D1AD75F4 +* +D6DBF9EA-A18C-7404-3676-D563D8A9E256 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/7D3D4DB0-30DA-1265-3A3B-1A59DA528B32.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/7D3D4DB0-30DA-1265-3A3B-1A59DA528B32.xml new file mode 100644 index 0000000..eccc438 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/7D3D4DB0-30DA-1265-3A3B-1A59DA528B32.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +8FBE3861-9C69-61CA-6407-29C42040EFF6 +eRights + + + + +362417E1-22E6-E6F5-B247-7C70400B0D2D +false +true +true +1 +E668A87C-7B90-5FC2-4038-FAD1D1AD75F4 +* +E176ACBD-7472-2FE5-C56D-79CF6E4C54FC +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/85536C2D-DE96-659A-488C-664E4DFDD24B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/85536C2D-DE96-659A-488C-664E4DFDD24B.xml new file mode 100644 index 0000000..32da042 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/85536C2D-DE96-659A-488C-664E4DFDD24B.xml @@ -0,0 +1,22 @@ + + +walloar +2021-03-02 09:53:56 UTC +A9BD1B11-7E29-A702-0D9E-574F89FAAF59 +eRights + + + + +28B6538E-11EB-4E98-47C7-AF9465258BA2 +7CB9FD0D-D775-7818-F326-796FAA358D21 +false +true +false +1 +7CB9FD0D-D775-7818-F326-796FAA358D21 +1 +59763EA4-4AA3-992D-969B-E21B236CB447 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/8806F619-C25C-3011-4C6C-D46137F7538D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/8806F619-C25C-3011-4C6C-D46137F7538D.xml new file mode 100644 index 0000000..6d7ed08 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/8806F619-C25C-3011-4C6C-D46137F7538D.xml @@ -0,0 +1,22 @@ + + +walloar +2021-03-02 09:53:56 UTC +2B8A270A-BEBE-F687-184E-FAB53EF94D00 +eRights + + + + +28B6538E-11EB-4E98-47C7-AF9465258BA2 +7CB9FD0D-D775-7818-F326-796FAA358D21 +false +true +false +1 +7CB9FD0D-D775-7818-F326-796FAA358D21 +1 +6A5146C3-EB9D-BA1D-3F62-FEE9F6155BE8 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/9CC87FE6-69EA-EFDC-773C-E8278DF26DFF.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/9CC87FE6-69EA-EFDC-773C-E8278DF26DFF.xml new file mode 100644 index 0000000..b312b82 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/9CC87FE6-69EA-EFDC-773C-E8278DF26DFF.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +35741834-1311-C862-18CE-B9EDB26E335D +eRights + + + + +64A76761-D0BE-A39C-1DF8-DDD35B42B9C5 +true +true +false +1 +54F5ABB2-D9D3-6F84-A6BE-7BE9418086FC +1 +E0B08F7D-D853-FDAC-836A-C01306FEFCEB +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/AB932BFC-2DE9-E516-56A9-DB64019426E3.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/AB932BFC-2DE9-E516-56A9-DB64019426E3.xml new file mode 100644 index 0000000..1ba2f35 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/AB932BFC-2DE9-E516-56A9-DB64019426E3.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-03 09:44:12 UTC +1804C3CD-E087-D9B9-ADB8-EE8821F93047 +eRights + + + + +9E72287E-5AF5-24C8-2E91-E3974C0C3F1A +false +true +false +1 +86DFFDA2-73B1-ABDC-FF4B-C21506530FB9 +* +BA08A3E0-01C5-1B90-25AC-CEDC6457FE58 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/B004067B-5FA9-36FE-5F74-610A953B8C3B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/B004067B-5FA9-36FE-5F74-610A953B8C3B.xml new file mode 100644 index 0000000..19428d9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/B004067B-5FA9-36FE-5F74-610A953B8C3B.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +A9C3D3B2-BFEE-B91D-3FC9-BEAC050F3537 +eRights + + + + +362417E1-22E6-E6F5-B247-7C70400B0D2D +false +true +true +1 +E668A87C-7B90-5FC2-4038-FAD1D1AD75F4 +* +C064300A-70F1-394A-04D8-045CD27FC5B0 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/BFFCED8D-CD85-A60C-513E-0E63C798F627.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/BFFCED8D-CD85-A60C-513E-0E63C798F627.xml new file mode 100644 index 0000000..795aca2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/BFFCED8D-CD85-A60C-513E-0E63C798F627.xml @@ -0,0 +1,22 @@ + + +walloar +2021-03-02 09:53:56 UTC +F8A9DBF7-1E8E-89AB-EF76-1CE86EB08712 +eRights + + + + +446ADA8C-9788-DC55-3863-6F0338570346 +5E7BC858-5237-87AF-3D96-5EA273AD7715 +true +false +false +1 +5E7BC858-5237-87AF-3D96-5EA273AD7715 +1 +6DE4047F-E391-1EE2-61CB-F9A65AB0A5C6 +true +CASCADE + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/C44D4851-452C-5221-912A-D56B617926B7.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/C44D4851-452C-5221-912A-D56B617926B7.xml new file mode 100644 index 0000000..7bc9760 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/C44D4851-452C-5221-912A-D56B617926B7.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +1496599A-8793-9555-A0D3-ADBC948F5891 +eRights + + + + +89A0978B-F826-D7C7-888F-4D557F14DDEA +false +true +true +1 +0D5C4365-9EF9-39ED-41CD-899807840607 +* +D6DBF9EA-A18C-7404-3676-D563D8A9E256 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/C6A1399A-90B6-CD13-4404-FF9FCE1AA468.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/C6A1399A-90B6-CD13-4404-FF9FCE1AA468.xml new file mode 100644 index 0000000..043d101 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/C6A1399A-90B6-CD13-4404-FF9FCE1AA468.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +2EC8F796-BEE7-715E-52A0-F31971AE73E4 +eRights + + + + +363C202B-AE72-4B2D-08F7-DE7CB52B2123 +false +true +true +1 +C064300A-70F1-394A-04D8-045CD27FC5B0 +* +D6DBF9EA-A18C-7404-3676-D563D8A9E256 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/D819AF0C-E95D-FE05-EDF9-D86B0A7BCB3C.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/D819AF0C-E95D-FE05-EDF9-D86B0A7BCB3C.xml new file mode 100644 index 0000000..2109080 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/D819AF0C-E95D-FE05-EDF9-D86B0A7BCB3C.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +C9D728AE-B9AE-4BC6-979D-3D5086BF43E3 +eRights + + + + +AB16A89E-6B8C-55C4-2971-E9A594B12FE0 +true +true +false +1 +FD62CE14-5107-506C-2AA9-8B0DFE1AFD8B +1 +2580CBB3-B97C-B649-9472-3D153EA8A687 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/E91BF69B-DF66-D60D-E378-76624221DFFB.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/E91BF69B-DF66-D60D-E378-76624221DFFB.xml new file mode 100644 index 0000000..9979266 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/E91BF69B-DF66-D60D-E378-76624221DFFB.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +1528AC05-06E8-0941-F696-31FC0042221E +eRights + + + + +CAC648E0-AA5A-96B4-63AE-7D724D3FD8F4 +false +true +false +1 +F86F6775-160D-1266-D8EC-B11BB6B47DF6 +* +BA08A3E0-01C5-1B90-25AC-CEDC6457FE58 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/FEC0C51C-B03C-CACE-768D-AABE9193E41D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/FEC0C51C-B03C-CACE-768D-AABE9193E41D.xml new file mode 100644 index 0000000..973b733 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/relation/seg_0/FEC0C51C-B03C-CACE-768D-AABE9193E41D.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +8B54FB33-B403-C2B8-F0DD-34C005CA9AD3 +eRights + + + + +5B527DE7-9827-7431-325A-CD08241C2895 +true +false +false +1 +34E28D0E-DF2A-4861-FE91-5B07537FBF53 +* +E0B08F7D-D853-FDAC-836A-C01306FEFCEB +true +CASCADE + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/subviews/81A0BCFB-2AE2-F1CD-8E75-430D2978495E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/subviews/81A0BCFB-2AE2-F1CD-8E75-430D2978495E.xml new file mode 100644 index 0000000..a3b7f58 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/subviews/81A0BCFB-2AE2-F1CD-8E75-430D2978495E.xml @@ -0,0 +1,121 @@ + + +walloar +walloar +2021-03-02 09:53:56 UTC +false +true +false +false +false +false +false +-1 +false +3FCCBB9D-FB42-0201-3B1B-9287CA76F8E3 +1 + + +false + +6A596F4E-6AED-DA11-B6A5-BFEB96787A68 + + +false + +DF7B0C9F-E350-813F-8079-2A513C3BBB58 + + +false + +E5D5A841-8811-4824-34A1-4539C84988B9 + + +false + +0452EC4C-A2FE-05AE-8D18-4ABE1D4BD994 + + +false + +DD871EFF-F2A9-A7E9-C944-D13D3E035023 + + +false + +85840D5B-AFB9-4CD7-47C3-90E2B75A3B4E + + +false + +46E70360-8AB8-4490-722E-A34BB03D735E + + +false + +39D5E7C3-48A3-3A6B-87BE-7DB9DFFA6798 + + +false + +99F54872-B1F3-0BE4-0686-467F359B7A1B + + +false + +13D22E7F-F81D-3A14-004A-8A6565AEE0F5 + + +false + +67F8ADBC-86DB-78F5-D251-980504685E32 + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/subviews/8E277499-D0A3-FA58-7FDC-CDDC9026F042.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/subviews/8E277499-D0A3-FA58-7FDC-CDDC9026F042.xml new file mode 100644 index 0000000..bbd2a84 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/subviews/8E277499-D0A3-FA58-7FDC-CDDC9026F042.xml @@ -0,0 +1,635 @@ + + +walloar +walloar +2021-03-02 08:06:04 UTC +false +true +false +false +false +false +false +-1 +false +1 + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/subviews/DF06B8EC-F1E1-B12F-6F52-D05CE829333C.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/subviews/DF06B8EC-F1E1-B12F-6F52-D05CE829333C.xml new file mode 100644 index 0000000..23f1f2a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/subviews/DF06B8EC-F1E1-B12F-6F52-D05CE829333C.xml @@ -0,0 +1,34 @@ + + +walloar +walloar +2021-03-02 09:53:56 UTC +false +true +false +false +false +false +false +-1 +false +3D5EB02E-D646-B778-C8FC-047CBECB135A +1 + + +false + +5EF2FCF0-C3BB-EE86-E30E-B9AA4DBFB8FD + + +false + +AE541067-FF04-4EFD-C8AB-8981D9118A29 + + +false + +E3870A98-125D-59F5-ED74-FF58DC8847B3 + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/subviews/FD445713-5FE4-09D6-B6FE-7923F6778A6D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/subviews/FD445713-5FE4-09D6-B6FE-7923F6778A6D.xml new file mode 100644 index 0000000..1084e2e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/subviews/FD445713-5FE4-09D6-B6FE-7923F6778A6D.xml @@ -0,0 +1,225 @@ + + +walloar +walloar +2021-03-02 09:53:56 UTC +false +true +false +false +false +false +false +-1 +false +EC3CEA61-5465-DA23-FD0F-17321EB85234 +1 + + +false + +355CC249-0D5F-CBC5-3C98-1D83FF3B9D32 + + +false + +666212E2-D016-7B97-9704-F36FAA7031FE + + +false + +0008F0AF-DCA1-71F0-2544-BBAB8AB469E1 + + +false + +0EB32B92-47EC-FE47-8FE5-277F5F618EB3 + + +false + +0A3363E5-87DE-7EA6-00EF-51489A40E13E + + +false + +F542E416-3D40-9CFD-C9AE-0E45FF1ACC21 + + +false + +8F934081-C7A6-6E15-1DFA-EB4519E2030E + + +false + +AF435211-1E3D-3AFC-F209-2E82F3DF1679 + + +false + +FF8601F6-BAFE-B3DC-53F6-2A2FE5DCE9D0 + + +false + +C99FF073-355E-D222-6BBB-16A0058388FD + + +false + +508258B5-20AA-D7C0-C67D-15B14D38B3A2 + + +false + +065A38F0-9A40-A1D2-111A-B00B401E9836 + + +false + +26208F5B-B6D7-6631-84E9-2845BCAAC8BC + + +false + +A511CD32-C011-E00C-997A-A9EB73F24494 + + +false + +A4563C21-FDDF-DAE8-974A-3323BC340914 + + +false + +7D035932-B1EC-20D8-4C6D-36E73FC9EC31 + + +false + +4A3C50A8-2FFD-D8FA-B440-A6B4B674EE10 + + +false + +272DFD9D-DBDF-A0BE-7C4C-B2035F65ADB6 + + +false + +A4A90A14-108D-5964-2BFC-600A7B7B9B80 + + +false + +D6E175C7-A93E-9077-FD9A-F501DAE67EC3 + + +false + +4BACE7AA-FF97-F470-527A-A2599C10D146 + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/023095FF-AC4E-4F40-FE7A-17CD08AC8382.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/023095FF-AC4E-4F40-FE7A-17CD08AC8382.xml new file mode 100644 index 0000000..17e0ee9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/023095FF-AC4E-4F40-FE7A-17CD08AC8382.xml @@ -0,0 +1,525 @@ + + +walloar +2021-03-02 09:53:56 UTC +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +329A6576-037D-130D-A19D-4B67C9F1C65F +eRights + + + +true +false +MOVEMENT_FILE_ID +NUMBER +false +92FC6E83-CB5E-2D8F-A6E0-29502A6FB183 +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +FD4B6C63-3A6C-5FB5-8954-13F0CD3BB73F +eRights + + + +true +false +FIRST_NAME +CHAR (1 BYTE) +false +00486A6B-CF16-ABC7-78E3-C4A023146312 +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +5BDD3CBF-B2EE-701B-C304-3BA4D1B0E19B +eRights + + + +true +false +LAST_NAME +CHAR (1 BYTE) +false +31DCFF32-ED4E-0C13-688A-176CA6C58239 +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +41640F29-4831-84AD-09FB-19312BCE124D +eRights + + + +true +false +STATUS +VARCHAR2 (16 CHAR) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +A8F9FBCB-B61D-02AD-30F0-EE65156445DE +eRights + + + +true +false +STARTDATEFUTURE +DATE +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +C9E90949-93F9-5628-C9FE-3A0CFD090EBC +eRights + + + +true +false +ENDDATEFUTURE +DATE +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +02E0A741-BAAC-AF85-03B4-4809E035AF3D +eRights + + + +true +false +MOVEMENTFROM +VARCHAR2 (1042 BYTE) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +4FF9874F-34EB-5A32-098C-1C84935D5D63 +eRights + + + +true +false +MOVEMENTTO +VARCHAR2 (1042 BYTE) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +CE348D4A-F624-FD25-10E4-B27A9AF777F5 +eRights + + + +true +false +EVACUATION_STATUS +CHAR (1 BYTE) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +E6A41164-4C4F-AF0F-2AAF-BA7E6A87E826 +eRights + + + +true +false +BUDGDET_LINE_FUTURE +VARCHAR2 (256 CHAR) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +3CF928F7-B2A0-0652-FA2C-771AABEA592B +eRights + + + +true +false +MOVEMENTTYPE +VARCHAR2 (33 BYTE) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +379ACB4C-05DC-7600-E1C0-0418EEA56894 +eRights + + + +true +false +MOVEMENTYEAR +NUMBER +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +F69FCA9F-3993-C09E-8C20-6D2FB3580338 +eRights + + + +true +false +MOVEMENTCONTEXT +VARCHAR2 (128 BYTE) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +2B9228C1-46B4-D2B6-4F50-1A517F9DF5D5 +eRights + + + +true +false +PERID +NUMBER +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +94AFA3B7-0707-5859-4A2A-406C4E727166 +eRights + + + +true +false +FUTUREASSIGNMENT +NUMBER +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +11610BB2-B817-1C61-E382-75A596C05066 +eRights + + + +true +false +FILEID +VARCHAR2 (255 CHAR) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +9196756D-EC39-EE8F-1BC2-A80F3AE88541 +eRights + + + +true +false +PRIORITY +CHAR (1 BYTE) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +66429B3F-2E20-FC04-8540-D29FEF60233C +eRights + + + +true +false +ALLOCATEDTOCURRENT +VARCHAR2 (255 CHAR) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +9BECB7E4-3BF4-41A1-E8D0-7B1FE35A2FB9 +eRights + + + +true +false +ALLOCATEDTOFUTURE +VARCHAR2 (255 CHAR) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +A7CB12F9-7BE2-6601-A6C6-23F4DC8D325C +eRights + + + +true +false +REASON +CHAR (1 BYTE) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + + + +true +MOVEMENT_FILES + + +true +MOVEMENT_CONTEXT + + +true +V_PEOPLE +true + + +true +MOVEMENT_TYPES + + +true +MV_COUNTRIES + + +true +MV_CITIES + + +MOVEMENT_FILE_ID +MOVEMENT_FILES + + +EVACUATION_STATUS +MOVEMENT_FILES + + +PRIORITY +MOVEMENT_FILES + + +CITY_CODE +MV_CITIES + + +NAME +MOVEMENT_CONTEXT + + +COUNTRY_CODE_TO +MOVEMENT_FILES + + +BUDGET_LINE +MOVEMENT_FILES + + +ASSIGN_START_DATE_TO +MOVEMENT_FILES + + +YEAR +MOVEMENT_FILES + + +NAME_EN +MV_COUNTRIES + + +COUNTRY_CODE +MV_CITIES + + +MOVEMENT_CONTEXT_ID +MOVEMENT_CONTEXT + + +ESTIMATED_END_DATE +MOVEMENT_FILES + + +MOVEMENT_TYPE_ID +MOVEMENT_TYPES + + +MOVEMENT_TYPE +MOVEMENT_TYPES + + +DESCRIPTION_EN +MV_CITIES + + +MOVEMENT_TYPE_ID +MOVEMENT_FILES + + +COUNTRY_CODE +MV_COUNTRIES + + +JOB_ID_TO +MOVEMENT_FILES + + +START_DATE +MOVEMENT_FILES + + +ASSIGN_END_DATE_TO +MOVEMENT_FILES + + +CITY_CODE_FROM +MOVEMENT_FILES + + +CONTEXT_ID +MOVEMENT_FILES + + +CITY_CODE_TO +MOVEMENT_FILES + + +FILE_ID +MOVEMENT_FILES + + +PER_ID +MOVEMENT_FILES + + +STATE +MOVEMENT_FILES + + +ORG_CD_TO +MOVEMENT_FILES + + +COUNTRY_CODE_FROM +MOVEMENT_FILES + + +ORG_CD_FROM +MOVEMENT_FILES + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/275BE4CF-7B3A-36E4-0712-D4B8C17FA7D6.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/275BE4CF-7B3A-36E4-0712-D4B8C17FA7D6.xml new file mode 100644 index 0000000..6727bd6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/275BE4CF-7B3A-36E4-0712-D4B8C17FA7D6.xml @@ -0,0 +1,106 @@ + + +walloar +2021-03-02 09:53:56 UTC +51652F79-0CEB-9597-2FD6-04003423BB3B +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +1681518F-C932-DC64-185D-2B029998673D +eRights + + + +true +false +PER_ID +NUMBER (8) +false +275BE4CF-7B3A-36E4-0712-D4B8C17FA7D6 + + +walloar +2021-03-02 09:53:56 UTC +0C85AC17-3A0A-F41A-3DE5-C9F45809C43D +eRights + + + +true +false +ORG_ID +NUMBER +false +275BE4CF-7B3A-36E4-0712-D4B8C17FA7D6 + + +walloar +2021-03-02 09:53:56 UTC +EE72F443-25E5-0657-3626-942D1FD6D991 +eRights + + + +true +false +PERMISSION +VARCHAR2 (4000 BYTE) +false +275BE4CF-7B3A-36E4-0712-D4B8C17FA7D6 + + +walloar +2021-03-02 09:53:56 UTC +8F2BCE01-4F1C-7984-9B8A-88E3843DCC93 +eRights + + + +true +false +ACCESS_MODE +VARCHAR2 (1 BYTE) +false +275BE4CF-7B3A-36E4-0712-D4B8C17FA7D6 + + + + +true +ANK_MV_USER_SYS_ORG_PERMS + + +ACCESS_MODE +ANK_MV_USER_SYS_ORG_PERMS + + +PER_ID +ANK_MV_USER_SYS_ORG_PERMS + + +FEATURE +ANK_MV_USER_SYS_ORG_PERMS + + +ORG_ID +ANK_MV_USER_SYS_ORG_PERMS + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/4B94CE89-E68B-6C11-E82C-762E52B9C56D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/4B94CE89-E68B-6C11-E82C-762E52B9C56D.xml new file mode 100644 index 0000000..d706b0d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/4B94CE89-E68B-6C11-E82C-762E52B9C56D.xml @@ -0,0 +1,216 @@ + + +walloar +2021-03-02 09:53:56 UTC +1F073EAF-B6C4-E68B-44C2-839223672FA4 +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +0D95D64D-8D84-0EA5-85B9-1F0BD663E9C8 +eRights + + + +true +false +CITY_CODE +VARCHAR2 (12 BYTE) +false +90A055BC-7A96-DF72-FC2B-8C323B6C77DB +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + +walloar +2021-03-02 09:53:56 UTC +298CAC69-6CA5-50DD-8190-4375F04B2E20 +eRights + + + +true +false +COUNTRY_CODE +VARCHAR2 (12 BYTE) +false +3C54D04F-5799-7F2A-CD9C-AA07E2CFFBB7 +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + +walloar +2021-03-02 09:53:56 UTC +98E8A698-5DB3-8208-EF47-57DA7A20C9D0 +eRights + + + +true +false +CD_SYSPER +VARCHAR2 (12 BYTE) +false +9FD12B30-DD44-25C2-3B94-AE1A1DA49754 +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + +walloar +2021-03-02 09:53:56 UTC +7734DF9D-F61E-F4AB-6F4B-3F91C043BE28 +eRights + + + +true +false +CD2_SYSPER +VARCHAR2 (12 BYTE) +false +455C229A-4558-9284-8DA4-730937D9F9F4 +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + +walloar +2021-03-02 09:53:56 UTC +D4222D2B-B8ED-0937-344A-6568E9A92FAD +eRights + + + +true +false +CD_SIRE +VARCHAR2 (12 BYTE) +false +DB1AB0B0-5021-8A03-79A5-868B613412D5 +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + +walloar +2021-03-02 09:53:56 UTC +5274BDE0-FE2B-1177-30D9-763923B9EA5D +eRights + + + +true +false +NAP_CD +VARCHAR2 (12 BYTE) +false +45FD5E88-7003-989A-26EF-D99C688E9AF2 +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + +walloar +2021-03-02 09:53:56 UTC +E0004293-359A-FD97-613A-968B6A868350 +eRights + + + +true +false +RNG_ID +NUMBER +false +2FB4F129-7EF3-5A4A-F605-0C8155362D58 +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + +walloar +2021-03-02 09:53:56 UTC +75045703-D173-CC1C-4CBF-2B2717CF6448 +eRights + + + +true +false +DESCRIPTION_EN +VARCHAR2 (240 BYTE) +false +84230C2A-36D4-04D4-9331-D25B42BD6066 +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + +walloar +2021-03-02 09:53:56 UTC +01B4FF6D-185E-5F36-0CD4-D147EE9244A4 +eRights + + + +true +false +DESCRIPTION_FR +VARCHAR2 (240 BYTE) +false +7E67B858-910F-E608-A36C-C443B0C0569C +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + + + +true +MV_CITIES + + +CITY_CODE +MV_CITIES + + +COUNTRY_CODE +MV_CITIES + + +CD_SYSPER +MV_CITIES + + +CD2_SYSPER +MV_CITIES + + +CD_SIRE +MV_CITIES + + +NAP_CD +MV_CITIES + + +RNG_ID +MV_CITIES + + +DESCRIPTION_EN +MV_CITIES + + +DESCRIPTION_FR +MV_CITIES + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/5036A014-10E8-35B7-4248-AA07D5A90FA8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/5036A014-10E8-35B7-4248-AA07D5A90FA8.xml new file mode 100644 index 0000000..8fd416c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/5036A014-10E8-35B7-4248-AA07D5A90FA8.xml @@ -0,0 +1,216 @@ + + +walloar +2021-03-02 09:53:56 UTC +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +717894B6-81FD-4496-B8C8-132740C55A9F +eRights + + + +true +false +FAMILY_MEMBER_ID +VARCHAR2 (51 BYTE) +false +813CDC0F-03B2-CCAF-9AA3-28C1AABE3AD3 +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + +walloar +2021-03-02 09:53:56 UTC +D4F814A4-1C3C-DDFB-B945-717ACE185C1C +eRights + + + +true +false +PER_ID +NUMBER (8) +false +A6EFD0D5-2BBA-C1D0-318E-BA2A8626F970 +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + +walloar +2021-03-02 09:53:56 UTC +ACC6FE7E-A290-5E07-027A-ED54177E27F1 +eRights + + + +true +false +SURNAME +VARCHAR2 (255 CHAR) +false +1908631A-1C5C-5FB7-BF8D-539EEA9D26C8 +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + +walloar +2021-03-02 09:53:56 UTC +C86A823C-7AD2-798B-92A3-760A1321BFEA +eRights + + + +true +false +DATE_OF_BIRTH +DATE +false +35ECBDC3-5047-72C1-75F9-410C86B77115 +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + +walloar +2021-03-02 09:53:56 UTC +1D4B20F0-BD24-93A1-B4EE-FCBBECEB9CDD +eRights + + + +true +false +TRP_CODE +VARCHAR2 (400 BYTE) +false +E9323091-4525-91A8-5524-41B4F8F3BF73 +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + +walloar +2021-03-02 09:53:56 UTC +5E1356C5-E9DF-61A0-EDF7-432D1BCD0735 +eRights + + + +true +false +REL_PER_ID +NUMBER (8) +false +2CA81DF9-3DA5-3758-FEF1-BDC3379AC668 +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + +walloar +2021-03-02 09:53:56 UTC +BB1F5A97-7988-5149-D8E0-F6274F250763 +eRights + + + +true +false +REL_SURNAME +VARCHAR2 (255 CHAR) +false +964E2FC3-06A2-B615-4B1D-0AFA8BA7E0CF +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + +walloar +2021-03-02 09:53:56 UTC +02CC06A6-B206-98D1-7E42-9BAA75ED1339 +eRights + + + +true +false +REL_FIRST_NAME +VARCHAR2 (255 CHAR) +false +54BB3FCF-841D-9ACA-F683-7AE4ADEF703A +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + +walloar +2021-03-02 09:53:56 UTC +85DB3859-6F89-FF16-8CCB-561043F2A058 +eRights + + + +true +false +REL_DATE_OF_BIRTH +DATE +false +973F3A00-959A-AC04-6D2D-74EB4AEAB6D7 +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + + + +true +MV_FAMILY_MEMBERS + + +FAMILY_MEMBER_ID +MV_FAMILY_MEMBERS + + +PER_ID +MV_FAMILY_MEMBERS + + +SURNAME +MV_FAMILY_MEMBERS + + +DATE_OF_BIRTH +MV_FAMILY_MEMBERS + + +TRP_CODE +MV_FAMILY_MEMBERS + + +REL_PER_ID +MV_FAMILY_MEMBERS + + +REL_SURNAME +MV_FAMILY_MEMBERS + + +REL_FIRST_NAME +MV_FAMILY_MEMBERS + + +REL_DATE_OF_BIRTH +MV_FAMILY_MEMBERS + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/6E9014E7-CAC2-D9FF-6DA7-AE85A2DD160E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/6E9014E7-CAC2-D9FF-6DA7-AE85A2DD160E.xml new file mode 100644 index 0000000..3421dc8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/6E9014E7-CAC2-D9FF-6DA7-AE85A2DD160E.xml @@ -0,0 +1,85 @@ + + +walloar +2021-03-02 09:53:56 UTC +F47544B8-FBE2-477B-4381-C53DB2F54280 +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +7B002085-5164-C8A5-C536-D3EB7041B57A +eRights + + + +true +false +PER_ID +NUMBER (8) +false +18DCFA4D-5989-0EDD-CB37-07465C86306F +6E9014E7-CAC2-D9FF-6DA7-AE85A2DD160E + + +walloar +2021-03-02 09:53:56 UTC +7A806FCD-0D7A-BE3B-5CC1-C950C10FFED6 +eRights + + + +true +false +ORG_ID +NUMBER (10) +false +92DA9AC6-EE3B-7C4F-D1DC-8ABE75557492 +6E9014E7-CAC2-D9FF-6DA7-AE85A2DD160E + + +walloar +2021-03-02 09:53:56 UTC +B36F98F0-F29D-DD38-FB58-1B0066956507 +eRights + + + +true +false +USERID +VARCHAR2 (50 CHAR) +false +964E6D64-35C5-2204-8C4C-BAF74EB13E77 +6E9014E7-CAC2-D9FF-6DA7-AE85A2DD160E + + + + +true +ANK_MV_PERSONS_EEAS + + +PER_ID +ANK_MV_PERSONS_EEAS + + +ORG_ID +ANK_MV_PERSONS_EEAS + + +USERID +ANK_MV_PERSONS_EEAS + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/83F5516A-7C88-654B-7F9A-6158144DA931.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/83F5516A-7C88-654B-7F9A-6158144DA931.xml new file mode 100644 index 0000000..f40865f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/83F5516A-7C88-654B-7F9A-6158144DA931.xml @@ -0,0 +1,989 @@ + + +walloar +2021-03-02 09:53:56 UTC +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 +eRights + + + +true + trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + ctr.eu_state AS organization_in_eu, + ent_typ.code AS int_org_code, + CASE + WHEN ent_typ.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + INNER JOIN mv_countries ctr ON enth.country_id = ctr.country_code + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_entities_types ent_typ ON enth.org_id = ent_typ.org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + jobh.job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate) + UNION + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + ctr.eu_state AS organization_in_eu, + ent_typ.code AS int_org_code, + CASE + WHEN ent_typ.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + INNER JOIN mv_countries ctr ON enth.country_id = ctr.country_code + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_entities_types ent_typ ON enth.org_id = ent_typ.org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + jobh.job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate)]]> +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +0A31B743-2AA3-C971-3BB0-A2A5CA6839CC +eRights + + + +true +false +JOB_ID +NUMBER (10) +false +40829D20-42C1-C5DC-49DE-2D8BCD246DDF +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +A3F3B487-D415-6D59-B809-62BCAE866933 +eRights + + + +true +false +JOB_MOMENT +VARCHAR2 (255 CHAR) +false +920B13AD-E5FD-F73F-D60A-9EEB442A74D6 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +EAAC2E3B-4B22-C0D7-5B57-BC34769FDD47 +eRights + + + +true +false +JOB_TYPE +VARCHAR2 (400 CHAR) +false +E777E8B0-6BEC-6C5E-9895-934D4E359C9E +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +6E486A5F-445F-D611-7137-8BC732D90562 +eRights + + + +true +false +PERSONNEL_TYPE_DESC +VARCHAR2 (100 CHAR) +false +7B33CC7A-59EB-5DA7-07C6-6AF546583438 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +6A20615A-6B1A-7A15-F98F-C64551E72957 +eRights + + + +true +false +BUDGETARY_LINE +NUMBER (10) +false +AF4473B5-CEEF-05C2-A457-D6E4A4605D44 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +5635ED79-611B-9F02-CE1B-7C8BDA5249F9 +eRights + + + +true +false +JOB_CITY_CODE +NUMBER +false +C4568F9F-A4FE-5843-DCB2-B2F525CC1DA9 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +03DC34B8-37A3-415B-2FAB-F445FDE647AC +eRights + + + +true +false +JOB_CITY_NAME +NUMBER +false +B5021CFF-0D27-8695-77E1-050C79EC6E40 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +AE5D58AD-0884-2596-B8B2-A64360510B95 +eRights + + + +true +false +JOB_COUNTRY_CODE +NUMBER +false +8B13B7CC-A78D-FD1C-CD46-31C42ACCF905 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +68F81303-59AE-3100-00C2-F17C1A95F804 +eRights + + + +true +false +JOB_COUNTRY_NAME +VARCHAR2 (256 BYTE) +false +0F23E16A-F315-91A0-F3D5-940E6E149CF0 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +F3AA1758-C0AA-C3F3-0167-41D11CE5E95D +eRights + + + +true +false +ORGANIZATION_COUNTRY +NUMBER +false +5983A883-D13E-0B67-A0A3-3367DDF07526 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +EA4364B4-A1C1-847A-B332-091F012D521A +eRights + + + +true +false +ORGANIZATION_CITY +VARCHAR2 (256 BYTE) +false +3C93595B-58AF-29ED-0028-96BF75F31136 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +86010CF6-B28F-E482-B691-3CA7BD3AE93D +eRights + + + +true +false +ORGANIZATION_NAME +VARCHAR2 (450 BYTE) +false +C864945F-9EC7-D381-BAA2-246AA69EF288 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +43171F72-970A-6BED-1C6F-14326FDB2964 +eRights + + + +true +false +ORGANIZATION_IN_EU +VARCHAR2 (1 BYTE) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +295169DF-DF31-381A-84B6-80D94AC419B7 +eRights + + + +true +false +INT_ORG_CODE +VARCHAR2 (450 BYTE) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +1F84AC49-F828-F344-4738-B82E4D0F0A9A +eRights + + + +true +false +INTERNATIONAL_ORGANIZATION +CHAR (1 BYTE) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +B00B5770-32C6-62E4-D7B5-F2B5A628AE59 +eRights + + + +true +false +ORG_ID +NUMBER (10) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +D66C3544-0727-ABE4-D633-58D77DEAC6E0 +eRights + + + +true +false +ASSIGN_START_DATE_TO +DATE +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +33171D2F-583E-3B61-40F8-0C60D50CE95E +eRights + + + +true +false +ASSIGN_END_DATE_TO +DATE +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +44A353B4-1B2F-CA04-17A7-2FAB5CF35187 +eRights + + + +true +false +PER_ID +NUMBER (8) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +CA9A9892-F5F9-39A4-D085-5DEEA99DAC56 +eRights + + + +true +false +SEVERITY_LEVEL +NUMBER +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +ECFD787D-D60B-CDD5-AB83-FF92FF175AB5 +eRights + + + +true +false +EVACUATION_LEVEL_CODE_ID +NUMBER +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +05C76624-9DCA-3104-D5C6-B6EC3EBD851B +eRights + + + +true +false +ALERT_STATUS_ID +NUMBER +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +F04CF8E7-E8D8-70A4-4452-107B4AC44594 +eRights + + + +true +false +EVACUATION_LEVEL_CODE +VARCHAR2 (256 BYTE) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +D5778473-9CBF-E574-AE51-B95F3002FF67 +eRights + + + +true +false +ORGANIZATION_COUNTRY_CODE +VARCHAR2 (3 CHAR) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +E77F6DD8-2B03-5F08-DF15-9023949D9A2B +eRights + + + +true +false +ORGANIZATION_CITY_CODE +VARCHAR2 (3 CHAR) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +D00262DA-D822-570A-4475-67ED9B323771 +eRights + + + +true +false +FAMILY_POSTING_TYPE_ID +NUMBER +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +E164BCD7-EED2-CE64-C98D-4E22B8ADD919 +eRights + + + +true +false +FAMILY_POSTING_TYPE +VARCHAR2 (256 BYTE) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +44620FA7-63FE-AFA2-CE1A-4D8A5612FAB7 +eRights + + + +true +false +HOD +CHAR (1 BYTE) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +0EA9EE25-8DF7-16F4-D7ED-D3A79F866553 +eRights + + + +true +false +FAMILY_POSTING_TYPE_CAT +VARCHAR2 (10 BYTE) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +D5B40BE4-52BD-21EC-FE72-3F87E182CA73 +eRights + + + +true +false +BUDGET_LINE +VARCHAR2 (450 BYTE) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + + + +true +MV_JOBS_HIST_EEAS + + +true +MV_ENTITIES_HIST + + +true +MV_COUNTRIES + + +true +MV_DELEGATION_STATUS + + +true +MV_ENTITIES_TYPES + + +true +MV_HEAD_OF_DELEGATIONS + + +true +MV_HRPORTAL_JOBS_DETAILS + + +JOB_ID +MV_JOBS_HIST_EEAS + + +JOB_TYPE +MV_JOBS_HIST_EEAS + + +PERSONNEL_TYPE_DESC +MV_JOBS_HIST_EEAS + + +BUDGETARY_LINE +MV_JOBS_HIST_EEAS + + +ORG_ID +MV_ENTITIES_HIST + + +SEVERITY_LEVEL +MV_DELEGATION_STATUS + + +EVACUATION_LEVEL_CODE_ID +MV_DELEGATION_STATUS + + +ALERT_STATUS_ID +MV_DELEGATION_STATUS + + +EVACUATION_LEVEL_CODE +MV_DELEGATION_STATUS + + +FAMILY_POSTING_TYPE_ID +MV_DELEGATION_STATUS + + +FAMILY_POSTING_TYPE +MV_DELEGATION_STATUS + + +BUDGET_LINE +MV_HRPORTAL_JOBS_DETAILS + + +true +MV_ASSIGNMENTS_HIST_EEAS + + +true +MV_JOBS_HIST_COM + + +true +MV_ENTITIES_HIST_COM + + +true +MV_ASSIGNMENTS_HIST_COM + + +ORG_CD +MV_ENTITIES_HIST_COM + + +EU_STATE +MV_COUNTRIES + + +PER_ID +MV_ASSIGNMENTS_HIST_EEAS + + +COUNTRY_ID +MV_ENTITIES_HIST_COM + + +END_DATE +MV_ENTITIES_HIST_COM + + +ORG_ID +MV_ENTITIES_TYPES + + +START_DATE +MV_JOBS_HIST_EEAS + + +LOCATION_COUNTRY_CODE +MV_JOBS_HIST_EEAS + + +JOB_STATUS +MV_JOBS_HIST_EEAS + + +ORG_ID +MV_ENTITIES_HIST_COM + + +COUNTRY_CODE +MV_COUNTRIES + + +PER_ID +MV_ASSIGNMENTS_HIST_COM + + +LOCATION_COUNTRY_NAME +MV_JOBS_HIST_EEAS + + +ORG_CD +MV_ENTITIES_HIST + + +ID +MV_ENTITIES_TYPES + + +END_DATE +MV_ENTITIES_HIST + + +LOCATION_COUNTRY_NAME +MV_JOBS_HIST_COM + + +JOB_ID +MV_HRPORTAL_JOBS_DETAILS + + +END_DATE +MV_ASSIGNMENTS_HIST_EEAS + + +JOB_ID +MV_ASSIGNMENTS_HIST_EEAS + + +START_DATE +MV_JOBS_HIST_COM + + +ORG_ID +MV_JOBS_HIST_EEAS + + +PER_ID +MV_HEAD_OF_DELEGATIONS + + +ORG_ID +MV_JOBS_HIST_COM + + +MAIN_ORG_ID +MV_ENTITIES_HIST_COM + + +COUNTRY_ID +MV_ENTITIES_HIST + + +ORG_ID +MV_DELEGATION_STATUS + + +LOCATION_CITY_NAME +MV_JOBS_HIST_EEAS + + +LOCATION_CITY_CODE +MV_JOBS_HIST_COM + + +JOB_STATUS +MV_JOBS_HIST_COM + + +START_DATE +MV_ASSIGNMENTS_HIST_COM + + +ENG_COUNTRY +MV_ENTITIES_HIST + + +START_DATE +MV_ASSIGNMENTS_HIST_EEAS + + +LOCATION_CITY_NAME +MV_JOBS_HIST_COM + + +ENG_CITY +MV_ENTITIES_HIST_COM + + +JOB_ID +MV_JOBS_HIST_COM + + +MAIN_ORG_ID +MV_ENTITIES_HIST + + +END_DATE +MV_ASSIGNMENTS_HIST_COM + + +BUDGETARY_LINE +MV_JOBS_HIST_COM + + +LOCATION_CITY_CODE +MV_JOBS_HIST_EEAS + + +CITY_CODE +MV_ENTITIES_HIST + + +ENG_COUNTRY +MV_ENTITIES_HIST_COM + + +START_DATE +MV_ENTITIES_HIST + + +CODE +MV_ENTITIES_TYPES + + +PERSONNEL_TYPE_DESC +MV_JOBS_HIST_COM + + +ENG_CITY +MV_ENTITIES_HIST + + +CITY_CODE +MV_ENTITIES_HIST_COM + + +START_DATE +MV_ENTITIES_HIST_COM + + +JOB_TYPE +MV_JOBS_HIST_COM + + +LOCATION_COUNTRY_CODE +MV_JOBS_HIST_COM + + +JOB_ID +MV_ASSIGNMENTS_HIST_COM + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/AD76589E-9295-E9CB-44A6-2AF590B878B6.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/AD76589E-9295-E9CB-44A6-2AF590B878B6.xml new file mode 100644 index 0000000..e123d93 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/AD76589E-9295-E9CB-44A6-2AF590B878B6.xml @@ -0,0 +1,154 @@ + + +walloar +2021-03-02 09:53:56 UTC +DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49 +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +95E08EC5-5FA2-67E2-2526-EA7FB8768EC7 +eRights + + + +true +false +PER_ID +NUMBER (8) +false +AD76589E-9295-E9CB-44A6-2AF590B878B6 + + +walloar +2021-03-02 09:53:56 UTC +8C9169E9-10C7-E049-3D64-53ED4C75D507 +eRights + + + +true +false +LIEU_RECR +VARCHAR2 (300 CHAR) +false +AD76589E-9295-E9CB-44A6-2AF590B878B6 + + +walloar +2021-03-02 09:53:56 UTC +EECAF756-F926-6B43-B55E-1D65932BD389 +eRights + + + +true +false +RECR_PAY_CD +VARCHAR2 (3 CHAR) +false +AD76589E-9295-E9CB-44A6-2AF590B878B6 + + +walloar +2021-03-02 09:53:56 UTC +05CAE226-9374-E0CA-21A6-BA4C179B1307 +eRights + + + +true +false +NAME_EN +VARCHAR2 (800 BYTE) +false +AD76589E-9295-E9CB-44A6-2AF590B878B6 + + + + +true +MV_RECRUITMENT_PLACES + + +true +MV_COUNTRIES + + +PER_ID +MV_RECRUITMENT_PLACES + + +RECR_PAY_CD +MV_RECRUITMENT_PLACES + + +COUNTRY_CODE +MV_COUNTRIES + + +DT_MAJ +MV_RECRUITMENT_PLACES + + +LIEU_RECR +MV_RECRUITMENT_PLACES + + +RECR_CODE_POSTAL +MV_RECRUITMENT_PLACES + + +DT_RECR +MV_RECRUITMENT_PLACES + + +NAME_EN +MV_COUNTRIES + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E.xml new file mode 100644 index 0000000..ea0ad24 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E.xml @@ -0,0 +1,854 @@ + + +walloar +2021-03-02 09:53:56 UTC +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +81728993-351E-03AC-CE24-42A50AEEB584 +eRights + + + +true +false +PER_ID +NUMBER (8) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +14474593-C042-4041-F29C-8F29014B1B7A +eRights + + + +true +false +FIRST_NAME +VARCHAR2 (255 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +E9AB789D-857D-E9F8-3815-598340BE8D4C +eRights + + + +true +false +LAST_NAME +VARCHAR2 (255 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +8E0D1548-3F63-016A-AB4D-C3A6124550C2 +eRights + + + +true +false +GENDER +VARCHAR2 (1 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +0FE9025D-27AB-5D12-32F3-B8740D44F69B +eRights + + + +true +false +EMAIL +VARCHAR2 (4000 BYTE) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +B77491EA-0A5F-B85F-BFC1-7788C9542954 +eRights + + + +true +false +BIRTH_CITY +VARCHAR2 (70 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +381B295C-230D-11AD-EDFD-8E8BBCC85AE3 +eRights + + + +true +false +BIRTH_COUNTRY_CODE +VARCHAR2 (3 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +CAECDBB6-6F9C-4711-4846-0F48F55A8B00 +eRights + + + +true +false +BIRTH_COUNTRY_DESC +VARCHAR2 (800 BYTE) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +F39A9A7F-E4F3-3A0E-53CC-003944F1ECF3 +eRights + + + +true +false +RECRUITMENT_CITY +VARCHAR2 (300 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +1EF522B2-0BE6-556D-2DE7-EF9C4F0FD5F5 +eRights + + + +true +false +RECRUITMENT_COUNTRY +VARCHAR2 (815 BYTE) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +06DD5427-FC65-CA91-A340-7F088110CDD7 +eRights + + + +true +false +ORGANIZATION_NAME +VARCHAR2 (60 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +967E538B-987E-9FF8-BE7A-FE7A8BAD107F +eRights + + + +true +false +ORGANIZATION_CITY +VARCHAR2 (500 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +6E08B050-DD99-2506-C22C-CF7AAF0C27B6 +eRights + + + +true +false +ORGANIZATION_COUNTRY +VARCHAR2 (200 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +6351D70D-613F-352C-1AD6-5DC998BAD043 +eRights + + + +true +false +ORGANIZATION_IN_EU +VARCHAR2 (1 BYTE) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +4413448B-2221-1744-007E-FCAE4B7BFF74 +eRights + + + +true +false +INT_ORG_CODE +VARCHAR2 (450 BYTE) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +14D3BF3C-17D4-5A1B-C6C4-DD0073811836 +eRights + + + +true +false +INTERNATIONAL_ORGANIZATION +CHAR (1 BYTE) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +BF864F3E-294F-FE23-E583-20CEAE5C1F79 +eRights + + + +true +false +ORG_ID +NUMBER +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +F78D7928-662B-3AA2-90B7-BEF7C1982838 +eRights + + + +true +false +JOB_ID +NUMBER +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +BDAB0F44-7FEF-7458-30BA-9DB8043212D7 +eRights + + + +true +false +ASSIGN_START_DATE +DATE +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +B21907ED-F7EA-42AC-C34B-FA6DBD2B2E96 +eRights + + + +true +false +ASSIGN_END_DATE +DATE +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +2680A657-521B-2B9A-2960-8266C20A2B57 +eRights + + + +true +false +ORG_CD +VARCHAR2 (60 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +D3F8AED1-8518-6A74-578D-EADFDA4E2C79 +eRights + + + +true +false +PRIVATE_EMAIL +VARCHAR2 (320 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + + + +true +V_RECRUITMENT_PLACES +true + + +true +MV_ENTITIES + + +true +MV_COUNTRIES + + +true +MV_ENTITIES_TYPES + + +true +MV_EMAILS + + +true +MV_PERSONS_EEAS + + +true +MV_PERSONS_HIST_EEAS + + +true +MV_PERSONS_COM + + +true +MV_PERSONS_HIST_COM + + +true +MV_ENTITIES_HIST_COM + + +true +MV_ASSIGNMENTS_COM + + +PER_ID +MV_PERSONS_HIST_EEAS + + +IS_ACTIVE +MV_ENTITIES_TYPES + + +JOB_ID +MV_PERSONS_COM + + +PLACE_OF_BIRTH +MV_PERSONS_HIST_COM + + +ID +MV_ENTITIES_TYPES + + +COUNTRY_ID +MV_ENTITIES + + +EU_STATE +MV_COUNTRIES + + +EMAIL +MV_PERSONS_EEAS + + +PER_ID +MV_PERSONS_COM + + +SURNAME +MV_PERSONS_EEAS + + +START_DATE +MV_PERSONS_HIST_EEAS + + +ORG_ID +MV_PERSONS_COM + + +PER_ID +MV_PERSONS_HIST_COM + + +SURNAME +MV_PERSONS_COM + + +ORG_CD +MV_PERSONS_EEAS + + +COUNTRY_CODE +MV_COUNTRIES + + +JOB_ID +MV_PERSONS_EEAS + + +GENRE +MV_PERSONS_HIST_EEAS + + +PER_ID +MV_PERSONS_EEAS + + +START_DATE +MV_PERSONS_HIST_COM + + +COUNTRY_OF_BIRTH +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +MV_PERSONS_HIST_EEAS + + +ASSIGN_START_DATE +MV_PERSONS_EEAS + + +CODE +MV_ENTITIES_TYPES + + +END_DATE +MV_ASSIGNMENTS_COM + + +END_DATE +MV_ENTITIES_HIST_COM + + +ORG_ID +MV_ENTITIES_TYPES + + +ENG_COUNTRY +MV_ENTITIES_HIST_COM + + +ORG_CD +MV_PERSONS_COM + + +NAME_EN +MV_COUNTRIES + + +ENG_CITY +MV_ENTITIES + + +GENRE +MV_PERSONS_EEAS + + +PER_ID +MV_ASSIGNMENTS_COM + + +FIRST_NAME +MV_PERSONS_EEAS + + +FIRST_NAME +MV_PERSONS_COM + + +FIRST_NAME +MV_PERSONS_HIST_EEAS + + +COUNTRY_OF_BIRTH +MV_PERSONS_EEAS + + +ASSIGN_END_DATE +MV_PERSONS_EEAS + + +ENG_CITY +MV_ENTITIES_HIST_COM + + +START_DATE +MV_ASSIGNMENTS_COM + + +COUNTRY_OF_BIRTH +MV_PERSONS_COM + + +COUNTRY_ID +MV_ENTITIES_HIST_COM + + +ORG_ID +MV_ENTITIES + + +COUNTRY_OF_BIRTH +MV_PERSONS_HIST_COM + + +GENRE +MV_PERSONS_COM + + +ORG_ID +MV_ENTITIES_HIST_COM + + +PER_ID +MV_EMAILS + + +EMAIL +MV_EMAILS + + +ENG_COUNTRY +MV_ENTITIES + + +FIRST_NAME +MV_PERSONS_HIST_COM + + +GENRE +MV_PERSONS_HIST_COM + + +EMAIL +MV_PERSONS_COM + + +ORG_ID +MV_PERSONS_EEAS + + +SURNAME +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +MV_PERSONS_COM + + +TOJ_CD +MV_ASSIGNMENTS_COM + + +SURNAME +MV_PERSONS_HIST_COM + + +PLACE_OF_BIRTH +MV_PERSONS_EEAS + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/E4F06F43-C217-2A2C-1566-209CFC56D7B1.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/E4F06F43-C217-2A2C-1566-209CFC56D7B1.xml new file mode 100644 index 0000000..655d17f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/E4F06F43-C217-2A2C-1566-209CFC56D7B1.xml @@ -0,0 +1,305 @@ + + +walloar +2021-03-02 09:53:56 UTC +7E714083-33D9-F3AC-7F12-2D97828BC2A1 +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +C2551C9B-8E09-D0F9-4A94-6AFD9611851B +eRights + + + +true +false +COUNTRY_CODE +VARCHAR2 (12 BYTE) +false +D306D7F5-244C-A1DC-48F7-5D25CD2FE2CA +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +877B2023-EBC8-3720-DC97-E526E8CA1861 +eRights + + + +true +false +CD_ISO_A2 +VARCHAR2 (8 BYTE) +false +30AAD68B-C814-8B3E-7EEF-BC2F7C3469D6 +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +DB2003D8-AD3E-D7AB-89A5-9AD9C9BC62BB +eRights + + + +true +false +CD_ISO_N3 +NUMBER +false +268C9387-1274-D8EE-6174-76CBB2C4F140 +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +743C4DEC-FDA5-9A43-1430-872B72AB2E90 +eRights + + + +true +false +NAME_EN +VARCHAR2 (800 BYTE) +false +365F2FF0-DB42-0312-D378-E88545273E57 +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +23276B92-F0B9-0D17-82A0-91E61581127D +eRights + + + +true +false +LONG_NAME_EN +VARCHAR2 (800 BYTE) +false +6B16940B-F40E-4AD4-48D7-EDD5AEDAA60A +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +DB58B0E3-8ABD-050A-239B-87F8DBB10643 +eRights + + + +true +false +NAME_FR +VARCHAR2 (800 BYTE) +false +CDCE0F30-B0B5-3349-B864-EBF2A36120D0 +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +EE8DDD60-5B92-6896-F4C4-CC0AE0A17777 +eRights + + + +true +false +LONG_NAME_FR +VARCHAR2 (800 BYTE) +false +880107E6-231E-AF19-A2A6-A3FF9637A9D1 +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +AF4835E3-ACEE-CBCF-B64B-2E09840C28D0 +eRights + + + +true +false +EU_STATE +VARCHAR2 (1 BYTE) +false +94EC5103-2A9A-FDE7-AFE3-14D40B2FD49C +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +D929C73D-9833-626F-7775-A62A59DD22D7 +eRights + + + +true +false +CAPITAL +VARCHAR2 (240 BYTE) +false +A0D0C2ED-227E-5230-456B-C555C8A577CC +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +E68B97D2-89E5-9362-AC0A-958578D9347E +eRights + + + +true +false +COUNTRY_PHONE_CODE +VARCHAR2 (20 BYTE) +false +D7D1A82D-0AC6-A9A4-AD5E-1568E07E434B +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +B79F47F1-2306-D2E8-F7A3-D700DFA1BD85 +eRights + + + +true +false +CONTINENT_CODE +VARCHAR2 (8 BYTE) +false +63381FF0-52BD-F463-E35C-E45DE7FC8DA6 +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +D131BDF9-B1DD-851A-D8B6-3F81D5647F6D +eRights + + + +true +false +STATUS +CHAR (1 BYTE) +false +6133A23A-F6F4-19C2-A61C-4FF752D9F3AF +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +43AB007B-1DA0-D2F5-9847-F209A15A41F0 +eRights + + + +true +false +CURRENCY_CODE +VARCHAR2 (12 BYTE) +false +B243D270-4E10-22EA-D880-283D470F2FD0 +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +F1535530-51E0-7781-D7FB-9463A500BB62 +eRights + + + +true +false +CURRENCY_NAME +VARCHAR2 (240 BYTE) +false +B0BB871E-A0B8-A735-E891-D7B831E1F8DD +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + + + +true +MV_COUNTRIES + + +COUNTRY_CODE +MV_COUNTRIES + + +CD_ISO_A2 +MV_COUNTRIES + + +CD_ISO_N3 +MV_COUNTRIES + + +NAME_EN +MV_COUNTRIES + + +LONG_NAME_EN +MV_COUNTRIES + + +NAME_FR +MV_COUNTRIES + + +LONG_NAME_FR +MV_COUNTRIES + + +EU_STATE +MV_COUNTRIES + + +CAPITAL +MV_COUNTRIES + + +COUNTRY_PHONE_CODE +MV_COUNTRIES + + +CONTINENT_CODE +MV_COUNTRIES + + +STATUS +MV_COUNTRIES + + +CURRENCY_CODE +MV_COUNTRIES + + +CURRENCY_NAME +MV_COUNTRIES + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/F83A6CBC-E3A0-0E52-7784-24802A5916FE.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/F83A6CBC-E3A0-0E52-7784-24802A5916FE.xml new file mode 100644 index 0000000..9dec729 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/logical/view/seg_0/F83A6CBC-E3A0-0E52-7784-24802A5916FE.xml @@ -0,0 +1,221 @@ + + +walloar +2021-03-02 09:53:56 UTC +73DB7963-4431-C4C4-5300-393B221A8121 +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +98C244C4-AE7E-60CD-DD95-009D5C851A4E +eRights + + + +true +false +PER_ID +NUMBER (8) +false +F83A6CBC-E3A0-0E52-7784-24802A5916FE + + +walloar +2021-03-02 09:53:56 UTC +2ACB590F-75DD-5A0D-19DF-32B2339C94E5 +eRights + + + +true +false +TITLE +VARCHAR2 (3 CHAR) +false +F83A6CBC-E3A0-0E52-7784-24802A5916FE + + +walloar +2021-03-02 09:53:56 UTC +5561692A-6348-01A7-4B3B-5528C9D23127 +eRights + + + +true +false +FIRST_NAME +VARCHAR2 (255 CHAR) +false +F83A6CBC-E3A0-0E52-7784-24802A5916FE + + +walloar +2021-03-02 09:53:56 UTC +9F9C92E6-E760-B590-53F1-1E9FEC0D5D65 +eRights + + + +true +false +LAST_NAME +VARCHAR2 (255 CHAR) +false +F83A6CBC-E3A0-0E52-7784-24802A5916FE + + +walloar +2021-03-02 09:53:56 UTC +951B0D71-61C7-801F-D05F-2FBB80C3C8E1 +eRights + + + +true +false +GENDER +VARCHAR2 (1 CHAR) +false +F83A6CBC-E3A0-0E52-7784-24802A5916FE + + +walloar +2021-03-02 09:53:56 UTC +DEBBF266-5725-E6D5-711B-4F38D9562068 +eRights + + + +true +false +BIRTH_CITY +VARCHAR2 (70 CHAR) +false +F83A6CBC-E3A0-0E52-7784-24802A5916FE + + +walloar +2021-03-02 09:53:56 UTC +F1748097-7079-64D1-0F43-93DED5B86012 +eRights + + + +true +false +BIRTH_COUNTRY_CODE +VARCHAR2 (3 CHAR) +false +F83A6CBC-E3A0-0E52-7784-24802A5916FE + + +walloar +2021-03-02 09:53:56 UTC +611C5249-5A49-792D-B4E6-A4B90DD80C9D +eRights + + + +true +false +PRIVATE_EMAIL +VARCHAR2 (320 CHAR) +false +F83A6CBC-E3A0-0E52-7784-24802A5916FE + + + + +true +MV_PERSONS_HIST_COM + + +true +MV_EMAILS + + +true +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +MV_PERSONS_HIST_EEAS + + +TITLE +MV_PERSONS_HIST_COM + + +SURNAME +MV_PERSONS_HIST_EEAS + + +FIRST_NAME +MV_PERSONS_HIST_COM + + +SURNAME +MV_PERSONS_HIST_COM + + +EMAIL +MV_EMAILS + + +FIRST_NAME +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +MV_PERSONS_HIST_COM + + +COUNTRY_OF_BIRTH +MV_PERSONS_HIST_COM + + +PER_ID +MV_PERSONS_HIST_COM + + +GENRE +MV_PERSONS_HIST_EEAS + + +PER_ID +MV_EMAILS + + +PER_ID +MV_PERSONS_HIST_EEAS + + +GENRE +MV_PERSONS_HIST_COM + + +TITLE +MV_PERSONS_HIST_EEAS + + +COUNTRY_OF_BIRTH +MV_PERSONS_HIST_EEAS + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/mapping/DeletedMap_RM19245A37-9842-E195-286C-3D09C9642F4F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/mapping/DeletedMap_RM19245A37-9842-E195-286C-3D09C9642F4F.xml new file mode 100644 index 0000000..ec75f01 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/mapping/DeletedMap_RM19245A37-9842-E195-286C-3D09C9642F4F.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/mapping/DeletedMap_RMDC0E93B8-3B97-5225-E933-B6AAF251C422.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/mapping/DeletedMap_RMDC0E93B8-3B97-5225-E933-B6AAF251C422.xml new file mode 100644 index 0000000..9ab5215 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/mapping/DeletedMap_RMDC0E93B8-3B97-5225-E933-B6AAF251C422.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/mapping/ExtendedMap.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/mapping/ExtendedMap.xml new file mode 100644 index 0000000..6811f63 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/mapping/ExtendedMap.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/mapping/ExtendedMap_RM19245A37-9842-E195-286C-3D09C9642F4F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/mapping/ExtendedMap_RM19245A37-9842-E195-286C-3D09C9642F4F.xml new file mode 100644 index 0000000..7ea5df0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/mapping/ExtendedMap_RM19245A37-9842-E195-286C-3D09C9642F4F.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/mapping/ExtendedMap_RMDC0E93B8-3B97-5225-E933-B6AAF251C422.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/mapping/ExtendedMap_RMDC0E93B8-3B97-5225-E933-B6AAF251C422.xml new file mode 100644 index 0000000..42dc9d9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/mapping/ExtendedMap_RMDC0E93B8-3B97-5225-E933-B6AAF251C422.xml @@ -0,0 +1,2434 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +89A0978B-F826-D7C7-888F-4D557F14DDEA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1679CA4A-8654-7717-3892-D492B2EDF96F + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +D564B517-ECBF-7299-820F-73159E3F40A1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0E3D19F2-4D6A-89F5-0AC8-256725601412 + + + + + + + + + + + + + + + + + + +578EEB6D-4774-7C61-B771-AF389B1B2848 + + + + + + + + + + + + +EF1F1E2F-F125-D831-18FE-42146AC46BD7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +5B527DE7-9827-7431-325A-CD08241C2895 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +032FEA9A-32FE-9F07-FCA9-57FFA4285A68 + + + + + + + + + + + + + + + + + + + + + + +9AC17078-4375-2F1E-E00C-F6C91F9D7AC7 + + + + + + + + + + + + + + +152BB753-CB8B-2053-4163-A66FA61616C9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +592D9292-3486-2D4D-CC66-C2FD3D0C6182 + + + + + + + + + + + + +CB22D060-C06C-F906-AD0B-72B243612C84 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +E2FC095E-73F7-7698-6349-2A7AB79481CA + + + + + + + + + + + + + + + + + + + + + + + + + + +7AD49DC9-1729-68C0-136F-1B88156E79DF,64A76761-D0BE-A39C-1DF8-DDD35B42B9C5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3C08B751-F217-8F40-55B6-423903645A84 + + + + + + + + + + + + + + + + + + + + +52DC1780-6658-2FDA-81AA-DF876CB3DD5E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +446ADA8C-9788-DC55-3863-6F0338570346 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +2AA36D31-EDB7-6B8B-F3D2-B948C317AC02 + + + + + + + + + + + + + + + + + + + + + + + + +13E26786-C94D-B1A4-B3E2-00801664862C + + + + + + + + + + + + + + + + + + + + + + + + + + +A1E97E86-E860-40AB-83B8-0B05A3BD7E31 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +28B6538E-11EB-4E98-47C7-AF9465258BA2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +49777066-1633-0003-1AEB-FD8F610D4B7D + + + + + + + + + + + + + + +9E72287E-5AF5-24C8-2E91-E3974C0C3F1A + + + + + + + + + + + + + + + + +5342E788-9642-9BD7-29A2-B982AB4D6B04 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +B3EC706D-1DBA-5035-397D-2231F468697B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +FC430689-600E-0903-F09D-AF97B7C43FA2,844C5DC3-505B-0B35-51ED-38FE16F05570 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +B80E9534-BB46-9B11-229F-4673D8A69D68 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +363C202B-AE72-4B2D-08F7-DE7CB52B2123 + + + + + + + + + + + + + + + + + + + + + + +A7D20046-6418-3AFF-9FA7-E4AE09EE3B5B + + + + + + + + + + + + + + + + +6CEC27B7-8D1B-5DB1-08A6-9D1EED6CE35C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +67923E08-F00D-34A6-C304-E8BA71763638 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +E158C9E1-0293-99A7-5089-2329055BA6EA + + + + + + + + + + + + + + + + + + + + + + + + +582A64A3-68C7-88BB-148C-7BF367EA1760 + + + + + + + + + + + + + + + + + + + + + + +719B418C-48D3-854B-7B32-D095EA6A1FFA + + + + + + + + + + + + + + + + +30C074B1-18B1-3D7E-09CC-233303FDB6B5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +362417E1-22E6-E6F5-B247-7C70400B0D2D + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +E0764846-19FA-B727-0019-48679CEC00DE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +CAC648E0-AA5A-96B4-63AE-7D724D3FD8F4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +753DB275-9049-70E7-445B-C3F0CF3C4074,AB16A89E-6B8C-55C4-2971-E9A594B12FE0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/pm/Process Model.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/pm/Process Model.xml new file mode 100644 index 0000000..f94ec46 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/pm/Process Model.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:03:42 UTC +eRights +false + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rdbms/eRights_RDBMSSites.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rdbms/eRights_RDBMSSites.xml new file mode 100644 index 0000000..75d8ebd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rdbms/eRights_RDBMSSites.xml @@ -0,0 +1,3 @@ + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422.xml new file mode 100644 index 0000000..7e253a7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422.xml @@ -0,0 +1,33 @@ + + +walloar +2021-03-02 08:04:42 UTC +eRights +true +79C73AAF-E1A7-E669-7DF0-025EE81A2AFC + +ERIGHTS-DEVELOPMENT +ERIGHTS +1 +-1 + + + +ERIGHTS-TEST +ERIGHTS +1 +1 + + +erights+dev+java +E_RIGHTS +1 + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +1 +1 + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/02905B52-0BB8-7D26-DC03-371A3DE91EBD.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/02905B52-0BB8-7D26-DC03-371A3DE91EBD.xml new file mode 100644 index 0000000..790545a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/02905B52-0BB8-7D26-DC03-371A3DE91EBD.xml @@ -0,0 +1,17 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +FK_REQ_DET_ENT_MAX_CAT +walloar +2021-05-11 06:48:47 UTC +eRights +8F9F86DB-D518-BEC6-ACE5-1F4502ABCAD5 +E_RIGHTS.ENTITLMNT_MAXS_CAT +NO ACTION +false +ENTITLMNT_MAX_CAT_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/05AD47E6-F333-7A53-0D11-CFEA1E681681.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/05AD47E6-F333-7A53-0D11-CFEA1E681681.xml new file mode 100644 index 0000000..da9ce1b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/05AD47E6-F333-7A53-0D11-CFEA1E681681.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_DECL_PERS_ATTCH_DECL_PERS +walloar +2021-04-26 13:29:43 UTC +eRights +0165DBCA-4D8A-8DD1-683A-E97547718C06 +ERIGHTS.DECLARATION_PERSON +NO ACTION +887B1F03-49B7-7723-3B93-2D358B356F65 +4053A50E-3456-4E6C-CAC3-152BE38254DC +4053A50E-3456-4E6C-CAC3-152BE38254DC +true +DECLARATION_PERSON_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/09265032-5D6E-17D1-C15F-C8EDC4C6018F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/09265032-5D6E-17D1-C15F-C8EDC4C6018F.xml new file mode 100644 index 0000000..da49877 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/09265032-5D6E-17D1-C15F-C8EDC4C6018F.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_CRON_TRIG_TO_TRIG_FK +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.QRTZ_TRIGGERS +NO ACTION +D43A6B01-A010-2E62-F805-42BD75AE0D0F +D6708633-7E79-72CE-6C8B-9CA359CE34EE +D6708633-7E79-72CE-6C8B-9CA359CE34EE +true +SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/1496599A-8793-9555-A0D3-ADBC948F5891.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/1496599A-8793-9555-A0D3-ADBC948F5891.xml new file mode 100644 index 0000000..5820bcb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/1496599A-8793-9555-A0D3-ADBC948F5891.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNT_MAXS_CAT +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_MAXS_CAT +NO ACTION +ADE383DF-74A4-CD6A-4E95-CEF01A091594 +6BAB2B42-6776-35C8-7739-3287138399CF +6BAB2B42-6776-35C8-7739-3287138399CF +false +ENTITLMNT_MAX_CAT_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/1528AC05-06E8-0941-F696-31FC0042221E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/1528AC05-06E8-0941-F696-31FC0042221E.xml new file mode 100644 index 0000000..a5c7cfe --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/1528AC05-06E8-0941-F696-31FC0042221E.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_MOFI_R_MOCO +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.MOVEMENT_CONTEXT +NO ACTION +F141D682-7C3B-DF6E-0E85-6E3337BB1FA3 +4BEC1D6D-4497-ABD7-D747-01783C3F1C07 +4BEC1D6D-4497-ABD7-D747-01783C3F1C07 +true +MOVEMENT_CONTEXT_ID +true +false +true + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/209D7EC3-F55C-0184-0B74-A4FB6CAE9A5E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/209D7EC3-F55C-0184-0B74-A4FB6CAE9A5E.xml new file mode 100644 index 0000000..ee0b4e7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/209D7EC3-F55C-0184-0B74-A4FB6CAE9A5E.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNTS_TYPE +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_TYPES +NO ACTION +F6108759-A9AE-8679-03BA-D124DEC368E8 +C18549F3-BA0F-CA1A-0B56-63BF98D61818 +C18549F3-BA0F-CA1A-0B56-63BF98D61818 +false +ENTITLMNT_TYPE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2B8A270A-BEBE-F687-184E-FAB53EF94D00.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2B8A270A-BEBE-F687-184E-FAB53EF94D00.xml new file mode 100644 index 0000000..200b6e2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2B8A270A-BEBE-F687-184E-FAB53EF94D00.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SIMPLE_TRIG_TO_TRIG_FK +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.QRTZ_TRIGGERS +NO ACTION +D43A6B01-A010-2E62-F805-42BD75AE0D0F +D6708633-7E79-72CE-6C8B-9CA359CE34EE +D6708633-7E79-72CE-6C8B-9CA359CE34EE +true +SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2CA2FF91-2274-C95D-212C-E5D7E7883A7E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2CA2FF91-2274-C95D-212C-E5D7E7883A7E.xml new file mode 100644 index 0000000..53d7ab2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2CA2FF91-2274-C95D-212C-E5D7E7883A7E.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_TRIGGER_TO_JOBS_FK +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.QRTZ_JOB_DETAILS +NO ACTION +7495A51C-E8A9-14BE-EABB-02B4CAB54568 +F002BBBD-6D77-5202-4E26-521A2ABBAFC7 +F002BBBD-6D77-5202-4E26-521A2ABBAFC7 +true +SCHED_NAME,JOB_NAME,JOB_GROUP +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2D07F01C-5878-6C1B-0D55-83EF16F72153.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2D07F01C-5878-6C1B-0D55-83EF16F72153.xml new file mode 100644 index 0000000..8b852af --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2D07F01C-5878-6C1B-0D55-83EF16F72153.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAXS_FK1 +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_MAXS_OPTIONS +NO ACTION +C4319A8E-825F-7AB2-3624-D14729BF4C0B +C440CF4F-9D7F-2A26-9C2E-F57BD434E08A +C440CF4F-9D7F-2A26-9C2E-F57BD434E08A +false +ENTITLMNT_MAX_OPTIONS_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2EC8F796-BEE7-715E-52A0-F31971AE73E4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2EC8F796-BEE7-715E-52A0-F31971AE73E4.xml new file mode 100644 index 0000000..15422af --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2EC8F796-BEE7-715E-52A0-F31971AE73E4.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNT_MAXS_TYPE +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_TYPES +NO ACTION +F6108759-A9AE-8679-03BA-D124DEC368E8 +C18549F3-BA0F-CA1A-0B56-63BF98D61818 +C18549F3-BA0F-CA1A-0B56-63BF98D61818 +false +ENTITLMNT_TYPE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/328FBDD7-B6AF-BD1B-8694-AF4132D8F44A.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/328FBDD7-B6AF-BD1B-8694-AF4132D8F44A.xml new file mode 100644 index 0000000..b8ad7e8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/328FBDD7-B6AF-BD1B-8694-AF4132D8F44A.xml @@ -0,0 +1,16 @@ + + +walloar +2021-04-20 14:12:59 UTC +eRights +ERIGHTS.MOVEMENT_CONTEXT +NO ACTION +F141D682-7C3B-DF6E-0E85-6E3337BB1FA3 +4BEC1D6D-4497-ABD7-D747-01783C3F1C07 +4BEC1D6D-4497-ABD7-D747-01783C3F1C07 +false +MOVEMENT_CONTEXT_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/35741834-1311-C862-18CE-B9EDB26E335D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/35741834-1311-C862-18CE-B9EDB26E335D.xml new file mode 100644 index 0000000..bf187bd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/35741834-1311-C862-18CE-B9EDB26E335D.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_ERCD_ID_CDATA_REF +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_EMAIL_RCPTS +NO ACTION +BB0C4DC3-BF20-022E-2EC1-9C41C22FD723 +F4254CF3-7A75-70B2-A927-412584C95FF1 +F4254CF3-7A75-70B2-A927-412584C95FF1 +true +ID,EMAIL_ID,REF_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/3A55A721-231C-7467-69ED-A3F683AC7F8E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/3A55A721-231C-7467-69ED-A3F683AC7F8E.xml new file mode 100644 index 0000000..cb9f969 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/3A55A721-231C-7467-69ED-A3F683AC7F8E.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_EMAIL_COMM_DATA_ID +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_EMAILS +CASCADE +F28AEFDE-0804-3C83-F214-6330BE84607B +D520E03C-5B2F-E54E-0A01-3BDA5B4EED17 +D520E03C-5B2F-E54E-0A01-3BDA5B4EED17 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/3B8B8CA7-D43E-EAD2-A3B7-A454E84E8E04.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/3B8B8CA7-D43E-EAD2-A3B7-A454E84E8E04.xml new file mode 100644 index 0000000..fba920a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/3B8B8CA7-D43E-EAD2-A3B7-A454E84E8E04.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +FK_REQ_DET_ATT_REQ_DET +walloar +2021-05-11 06:48:47 UTC +eRights +40D9B31E-8A48-2FC7-A159-806ED207D4A5 +E_RIGHTS.REQUEST_DETAILS +NO ACTION +B0343155-8655-39FE-4688-0AD2CB9B8528 +16046895-46AD-A059-DD8C-EC6BB63E0248 +16046895-46AD-A059-DD8C-EC6BB63E0248 +true +REQUEST_DETAIL_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/4584A384-D59B-B220-CF4D-8631558D5F94.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/4584A384-D59B-B220-CF4D-8631558D5F94.xml new file mode 100644 index 0000000..785a57f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/4584A384-D59B-B220-CF4D-8631558D5F94.xml @@ -0,0 +1,16 @@ + + +walloar +2021-03-09 10:27:29 UTC +eRights +ERIGHTS.REQUEST_PERSONS +NO ACTION +256F6004-E1B6-FD26-9F27-95B58D979301 +95ACBC6C-63A4-FD58-73F1-72080DB6991C +95ACBC6C-63A4-FD58-73F1-72080DB6991C +true +REQUEST_PERSON_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/481C96EB-685B-A700-9F52-D6BA627E586E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/481C96EB-685B-A700-9F52-D6BA627E586E.xml new file mode 100644 index 0000000..904a17d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/481C96EB-685B-A700-9F52-D6BA627E586E.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_SRCD_COMM_DATA_ID +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_SMS_COMM_DATA +CASCADE +E06E7FD1-9973-2F17-993D-D45490D15039 +7BA262D2-5568-1F56-5150-7D35B78CB977 +7BA262D2-5568-1F56-5150-7D35B78CB977 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/4C0F032C-17B5-78E7-6624-7E732D8B8E0C.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/4C0F032C-17B5-78E7-6624-7E732D8B8E0C.xml new file mode 100644 index 0000000..3acbc65 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/4C0F032C-17B5-78E7-6624-7E732D8B8E0C.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_ABAC_COMM_RESPONSES_ID +walloar +2021-04-26 13:29:43 UTC +eRights +1D1D438D-6DE7-6B8C-18F5-017A60D0E25D +ERIGHTS.ANK_ABAC_COMM +CASCADE +F0656E91-B102-E910-93C9-3FADF5583284 +654D9560-6D54-DAF1-0633-73AE4C682FA7 +654D9560-6D54-DAF1-0633-73AE4C682FA7 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/5130EC0B-4B8D-8934-F4F9-FAAD2005BCA7.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/5130EC0B-4B8D-8934-F4F9-FAAD2005BCA7.xml new file mode 100644 index 0000000..c02ad99 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/5130EC0B-4B8D-8934-F4F9-FAAD2005BCA7.xml @@ -0,0 +1,16 @@ + + +tapiafo +2021-03-08 13:29:01 UTC +eRights +ERIGHTS.DECLARATION +NO ACTION +CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8 +81C4972B-91D6-AE3E-0833-67784BD6B25D +81C4972B-91D6-AE3E-0833-67784BD6B25D +false +DECLARATION_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/651FBD69-47CE-EEA3-5E9C-E29B4381F792.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/651FBD69-47CE-EEA3-5E9C-E29B4381F792.xml new file mode 100644 index 0000000..26b7e56 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/651FBD69-47CE-EEA3-5E9C-E29B4381F792.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_S_COMM_ERRORS_ID +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_SMS_COMM_DATA +CASCADE +E06E7FD1-9973-2F17-993D-D45490D15039 +7BA262D2-5568-1F56-5150-7D35B78CB977 +7BA262D2-5568-1F56-5150-7D35B78CB977 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/65E3B4C7-7537-F055-551C-3C579E557F76.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/65E3B4C7-7537-F055-551C-3C579E557F76.xml new file mode 100644 index 0000000..a7e5b8b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/65E3B4C7-7537-F055-551C-3C579E557F76.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNT_MAXS_TYPE_CAT +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_TYPES_CAT +NO ACTION +749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293 +5BE178D9-AF31-486C-E472-FB64DF6263EC +5BE178D9-AF31-486C-E472-FB64DF6263EC +false +ENTITLMNT_TYPE_CAT_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/69AF70F0-33C5-9633-57F0-3E65962BAF0E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/69AF70F0-33C5-9633-57F0-3E65962BAF0E.xml new file mode 100644 index 0000000..71a7c63 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/69AF70F0-33C5-9633-57F0-3E65962BAF0E.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNT_MAXS_DEFAULT_CAT +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_MAXS_CAT +NO ACTION +ADE383DF-74A4-CD6A-4E95-CEF01A091594 +6BAB2B42-6776-35C8-7739-3287138399CF +6BAB2B42-6776-35C8-7739-3287138399CF +true +ENTITLMNT_MAX_CAT_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/6CFECE4B-C48E-D706-2373-42A4EE308685.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/6CFECE4B-C48E-D706-2373-42A4EE308685.xml new file mode 100644 index 0000000..8494ba5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/6CFECE4B-C48E-D706-2373-42A4EE308685.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +FK_REQ_DET_REQ +walloar +2021-05-11 06:48:47 UTC +eRights +91193D54-DB70-D280-5CD8-314AE11057D4 +ERIGHTS.REQUESTS +NO ACTION +4CB74767-3856-9458-45EB-D45BEC46CD86 +A2A9F6E9-6FCC-E685-825C-CCA11BEAE35B +A2A9F6E9-6FCC-E685-825C-CCA11BEAE35B +false +REQUEST_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/70A6D18F-E497-07C1-58AA-0FA0CE4F96EE.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/70A6D18F-E497-07C1-58AA-0FA0CE4F96EE.xml new file mode 100644 index 0000000..77c0d0c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/70A6D18F-E497-07C1-58AA-0FA0CE4F96EE.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTLMNT_TYP_DEF_MOV_TYPE +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.MOVEMENT_TYPES +NO ACTION +6EE6B86E-12DA-10CF-8634-5C4D212E05C8 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +false +MOVEMENT_TYPE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/7B524D3F-78A9-AFEB-25E0-57EAD1493871.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/7B524D3F-78A9-AFEB-25E0-57EAD1493871.xml new file mode 100644 index 0000000..6d2d51a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/7B524D3F-78A9-AFEB-25E0-57EAD1493871.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNT_TYPES_MOV_TYPE +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.MOVEMENT_TYPES +NO ACTION +6EE6B86E-12DA-10CF-8634-5C4D212E05C8 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +false +MOVEMENT_TYPE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/827D0058-5E8E-2777-8A33-A019829277E9.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/827D0058-5E8E-2777-8A33-A019829277E9.xml new file mode 100644 index 0000000..d559db6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/827D0058-5E8E-2777-8A33-A019829277E9.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_DECL_MVMT_FILE +walloar +2021-04-26 13:29:43 UTC +eRights +176F7F0A-8244-F6EE-15C7-21B29E5A749D +ERIGHTS.MOVEMENT_FILES +NO ACTION +FF74A656-1D74-CA01-A02B-65A0579DD208 +A1F676FC-1206-95CB-7A7A-177766C00056 +A1F676FC-1206-95CB-7A7A-177766C00056 +false +MOVEMENT_FILE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/896B29CB-B852-917B-EDBA-51BEAA78E7AA.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/896B29CB-B852-917B-EDBA-51BEAA78E7AA.xml new file mode 100644 index 0000000..285be08 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/896B29CB-B852-917B-EDBA-51BEAA78E7AA.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_E_RCPTS_EMAIL_ID +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_EMAILS +CASCADE +F28AEFDE-0804-3C83-F214-6330BE84607B +D520E03C-5B2F-E54E-0A01-3BDA5B4EED17 +D520E03C-5B2F-E54E-0A01-3BDA5B4EED17 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/8B54FB33-B403-C2B8-F0DD-34C005CA9AD3.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/8B54FB33-B403-C2B8-F0DD-34C005CA9AD3.xml new file mode 100644 index 0000000..7f4e12d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/8B54FB33-B403-C2B8-F0DD-34C005CA9AD3.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_ERCD_COMM_DATA_ID +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_EMAIL_COMM_DATA +CASCADE +C90B6B2E-6AFE-10D3-5D64-4CD75BE58765 +D42EB837-D3E9-2D44-2A27-A1A5195B4B21 +D42EB837-D3E9-2D44-2A27-A1A5195B4B21 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/8FBE3861-9C69-61CA-6407-29C42040EFF6.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/8FBE3861-9C69-61CA-6407-29C42040EFF6.xml new file mode 100644 index 0000000..7dd7907 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/8FBE3861-9C69-61CA-6407-29C42040EFF6.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTLMNT_TYP_DEF_TYPE_CAT +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_TYPES_CAT +NO ACTION +749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293 +5BE178D9-AF31-486C-E472-FB64DF6263EC +5BE178D9-AF31-486C-E472-FB64DF6263EC +false +ENTITLMNT_TYPE_CAT_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/971B31FD-4ADF-62EA-ED21-C7169CE4CC91.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/971B31FD-4ADF-62EA-ED21-C7169CE4CC91.xml new file mode 100644 index 0000000..c97a93b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/971B31FD-4ADF-62EA-ED21-C7169CE4CC91.xml @@ -0,0 +1,16 @@ + + +walloar +2021-06-03 10:45:05 UTC +eRights +ERIGHTS.PERSONS_BANK_INFO +NO ACTION +3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A +D95C544F-F9F2-8433-E694-C0E67F5957C4 +D95C544F-F9F2-8433-E694-C0E67F5957C4 +false +PERSONS_BANK_INFO_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A19608C8-3D06-ADCD-BF05-56679CC370E5.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A19608C8-3D06-ADCD-BF05-56679CC370E5.xml new file mode 100644 index 0000000..f34ee3b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A19608C8-3D06-ADCD-BF05-56679CC370E5.xml @@ -0,0 +1,16 @@ + + +walloar +2021-04-20 14:17:49 UTC +eRights +MOVEMENT_DOC_SECTIONS +NO ACTION +B792575D-ED90-C316-85A8-FB178ED60508 +67207ABB-672D-ACDB-0F62-B936853171CA +67207ABB-672D-ACDB-0F62-B936853171CA +true +MOVEMENT_DOC_SECTIONS_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A269AD9C-167B-CFE9-5538-4BD7C813138F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A269AD9C-167B-CFE9-5538-4BD7C813138F.xml new file mode 100644 index 0000000..609e65a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A269AD9C-167B-CFE9-5538-4BD7C813138F.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_BLOB_TRIG_TO_TRIG_FK +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.QRTZ_TRIGGERS +NO ACTION +D43A6B01-A010-2E62-F805-42BD75AE0D0F +D6708633-7E79-72CE-6C8B-9CA359CE34EE +D6708633-7E79-72CE-6C8B-9CA359CE34EE +true +SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A9BD1B11-7E29-A702-0D9E-574F89FAAF59.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A9BD1B11-7E29-A702-0D9E-574F89FAAF59.xml new file mode 100644 index 0000000..a58674e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A9BD1B11-7E29-A702-0D9E-574F89FAAF59.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SIMPROP_TRIG_TO_TRIG_FK +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.QRTZ_TRIGGERS +NO ACTION +D43A6B01-A010-2E62-F805-42BD75AE0D0F +D6708633-7E79-72CE-6C8B-9CA359CE34EE +D6708633-7E79-72CE-6C8B-9CA359CE34EE +true +SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A9C3D3B2-BFEE-B91D-3FC9-BEAC050F3537.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A9C3D3B2-BFEE-B91D-3FC9-BEAC050F3537.xml new file mode 100644 index 0000000..30e755b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A9C3D3B2-BFEE-B91D-3FC9-BEAC050F3537.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNT_TYPES_TYPE_CAT +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_TYPES_CAT +NO ACTION +749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293 +5BE178D9-AF31-486C-E472-FB64DF6263EC +5BE178D9-AF31-486C-E472-FB64DF6263EC +false +ENTITLMNT_TYPE_CAT_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/ACBEBC8E-F123-B209-C6AC-D10895120157.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/ACBEBC8E-F123-B209-C6AC-D10895120157.xml new file mode 100644 index 0000000..9f5d572 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/ACBEBC8E-F123-B209-C6AC-D10895120157.xml @@ -0,0 +1,16 @@ + + +walloar +2021-03-09 10:12:07 UTC +eRights +ERIGHTS.DECLARATION +NO ACTION +CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8 +81C4972B-91D6-AE3E-0833-67784BD6B25D +81C4972B-91D6-AE3E-0833-67784BD6B25D +false +DECLARATION_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B1488D3A-646C-67F6-AE95-FBAD9B8159E2.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B1488D3A-646C-67F6-AE95-FBAD9B8159E2.xml new file mode 100644 index 0000000..4c5f881 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B1488D3A-646C-67F6-AE95-FBAD9B8159E2.xml @@ -0,0 +1,16 @@ + + +walloar +2021-04-20 14:17:11 UTC +eRights +MOVEMENT_DOCS +NO ACTION +F7550F97-470F-3E11-C6EE-445518E195D2 +26470B1B-9D2C-FDFF-361A-341B8201EBC6 +26470B1B-9D2C-FDFF-361A-341B8201EBC6 +true +MOVEMENT_DOCS_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B5009973-3A84-D977-05D4-6C0353E0A897.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B5009973-3A84-D977-05D4-6C0353E0A897.xml new file mode 100644 index 0000000..2589baa --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B5009973-3A84-D977-05D4-6C0353E0A897.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNTS_MOV_TYPE +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.MOVEMENT_TYPES +NO ACTION +6EE6B86E-12DA-10CF-8634-5C4D212E05C8 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +false +MOVEMENT_TYPE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B7A1598C-867B-22DA-C6C9-16618C6EBD66.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B7A1598C-867B-22DA-C6C9-16618C6EBD66.xml new file mode 100644 index 0000000..d05c7b0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B7A1598C-867B-22DA-C6C9-16618C6EBD66.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNT_MAXS_CAT_TYPE_CAT +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_TYPES_CAT +NO ACTION +749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293 +5BE178D9-AF31-486C-E472-FB64DF6263EC +5BE178D9-AF31-486C-E472-FB64DF6263EC +false +ENTITLMNT_TYPE_CAT_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B82F22A6-B2D1-DBD2-53FE-7DDBCEB6F4FA.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B82F22A6-B2D1-DBD2-53FE-7DDBCEB6F4FA.xml new file mode 100644 index 0000000..36854c6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B82F22A6-B2D1-DBD2-53FE-7DDBCEB6F4FA.xml @@ -0,0 +1,16 @@ + + +walloar +2021-03-03 12:10:03 UTC +eRights +ERIGHTS.MOVEMENT_TYPES +NO ACTION +6EE6B86E-12DA-10CF-8634-5C4D212E05C8 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +true +MOVEMENT_TYPE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C1448B26-F39E-DA07-4624-C0847B58BF74.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C1448B26-F39E-DA07-4624-C0847B58BF74.xml new file mode 100644 index 0000000..011f809 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C1448B26-F39E-DA07-4624-C0847B58BF74.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_E_COMM_ERRORS_ID +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_EMAIL_COMM_DATA +CASCADE +C90B6B2E-6AFE-10D3-5D64-4CD75BE58765 +D42EB837-D3E9-2D44-2A27-A1A5195B4B21 +D42EB837-D3E9-2D44-2A27-A1A5195B4B21 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C75D293E-2652-27C3-5657-4504202153B7.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C75D293E-2652-27C3-5657-4504202153B7.xml new file mode 100644 index 0000000..19847e0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C75D293E-2652-27C3-5657-4504202153B7.xml @@ -0,0 +1,16 @@ + + +tapiafo +2021-03-08 13:08:17 UTC +eRights +REQUESTS +NO ACTION +4CB74767-3856-9458-45EB-D45BEC46CD86 +A2A9F6E9-6FCC-E685-825C-CCA11BEAE35B +A2A9F6E9-6FCC-E685-825C-CCA11BEAE35B +true +REQUEST_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C9D728AE-B9AE-4BC6-979D-3D5086BF43E3.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C9D728AE-B9AE-4BC6-979D-3D5086BF43E3.xml new file mode 100644 index 0000000..21f9ce8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C9D728AE-B9AE-4BC6-979D-3D5086BF43E3.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_SRCD_ID_CDATA_REF +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_SMS_RCPTS +NO ACTION +F3764DB4-0649-A94A-7497-92FDAEA69888 +3A6B6B40-0C95-F771-8368-F80AB8B70E74 +3A6B6B40-0C95-F771-8368-F80AB8B70E74 +true +ID,SMS_ID,REF_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/CD64B2E4-5AE7-385C-2838-A920A48C08DB.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/CD64B2E4-5AE7-385C-2838-A920A48C08DB.xml new file mode 100644 index 0000000..df9d2f6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/CD64B2E4-5AE7-385C-2838-A920A48C08DB.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_ABAC_COMM_ERRORS_ID +walloar +2021-04-26 13:29:43 UTC +eRights +601C4A1D-B1D9-8224-468C-2C7070453E9B +ERIGHTS.ANK_ABAC_COMM +CASCADE +F0656E91-B102-E910-93C9-3FADF5583284 +654D9560-6D54-DAF1-0633-73AE4C682FA7 +654D9560-6D54-DAF1-0633-73AE4C682FA7 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/D57CC0F1-DA1D-0A8C-B60A-095E138D5054.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/D57CC0F1-DA1D-0A8C-B60A-095E138D5054.xml new file mode 100644 index 0000000..eec15f2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/D57CC0F1-DA1D-0A8C-B60A-095E138D5054.xml @@ -0,0 +1,16 @@ + + +walloar +2021-04-20 14:11:33 UTC +eRights +ERIGHTS.MOVEMENT_TYPES +NO ACTION +6EE6B86E-12DA-10CF-8634-5C4D212E05C8 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +false +MOVEMENT_TYPE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/D8E98DB8-541A-1182-7C71-1BAE3DADB667.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/D8E98DB8-541A-1182-7C71-1BAE3DADB667.xml new file mode 100644 index 0000000..3ea691c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/D8E98DB8-541A-1182-7C71-1BAE3DADB667.xml @@ -0,0 +1,16 @@ + + +walloar +2021-03-09 10:12:59 UTC +eRights +ERIGHTS.ENTITLMNT_TYPES +NO ACTION +F6108759-A9AE-8679-03BA-D124DEC368E8 +C18549F3-BA0F-CA1A-0B56-63BF98D61818 +C18549F3-BA0F-CA1A-0B56-63BF98D61818 +true +ENTITLMNT_TYPE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/DC0B6208-5DBD-BD77-C70C-852A9DC29ACD.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/DC0B6208-5DBD-BD77-C70C-852A9DC29ACD.xml new file mode 100644 index 0000000..04a41a5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/DC0B6208-5DBD-BD77-C70C-852A9DC29ACD.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_S_RCPTS_SMS_ID +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_SMS +CASCADE +D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A +6FCCE5B2-F20F-2BF4-C4D5-85627AEC40F3 +6FCCE5B2-F20F-2BF4-C4D5-85627AEC40F3 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/E4198D4D-BE5E-17D5-50E1-E8A5F189F359.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/E4198D4D-BE5E-17D5-50E1-E8A5F189F359.xml new file mode 100644 index 0000000..f41fc50 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/E4198D4D-BE5E-17D5-50E1-E8A5F189F359.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNT_TYPES_MOV_FILE +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.MOVEMENT_FILES +NO ACTION +FF74A656-1D74-CA01-A02B-65A0579DD208 +A1F676FC-1206-95CB-7A7A-177766C00056 +A1F676FC-1206-95CB-7A7A-177766C00056 +false +MOVEMENT_FILE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/E62E7389-4A1A-23D3-35EA-A8E7124F659A.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/E62E7389-4A1A-23D3-35EA-A8E7124F659A.xml new file mode 100644 index 0000000..067e0a3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/E62E7389-4A1A-23D3-35EA-A8E7124F659A.xml @@ -0,0 +1,16 @@ + + +tapiafo +2021-03-08 13:24:14 UTC +eRights +ERIGHTS.DECLARATION_PERSON +NO ACTION +887B1F03-49B7-7723-3B93-2D358B356F65 +4053A50E-3456-4E6C-CAC3-152BE38254DC +4053A50E-3456-4E6C-CAC3-152BE38254DC +false +DECLARATION_PERSON_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/E7E0B052-2A8F-6278-39B0-144E5B88B500.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/E7E0B052-2A8F-6278-39B0-144E5B88B500.xml new file mode 100644 index 0000000..6ddb3d9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/E7E0B052-2A8F-6278-39B0-144E5B88B500.xml @@ -0,0 +1,16 @@ + + +walloar +2021-06-03 10:44:04 UTC +eRights +ERIGHTS.PERSONS_BANK_INFO +NO ACTION +3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A +D95C544F-F9F2-8433-E694-C0E67F5957C4 +D95C544F-F9F2-8433-E694-C0E67F5957C4 +true +PERSONS_BANK_INFO_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/F79CF8D5-DD4D-4A58-76B7-4897AF256190.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/F79CF8D5-DD4D-4A58-76B7-4897AF256190.xml new file mode 100644 index 0000000..07d5791 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/F79CF8D5-DD4D-4A58-76B7-4897AF256190.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_DECL_PERS_DECL +walloar +2021-04-26 13:29:43 UTC +eRights +DF811892-D0F5-BFC5-A762-C60A52419359 +ERIGHTS.DECLARATION +NO ACTION +CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8 +81C4972B-91D6-AE3E-0833-67784BD6B25D +81C4972B-91D6-AE3E-0833-67784BD6B25D +false +DECLARATION_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/F8A9DBF7-1E8E-89AB-EF76-1CE86EB08712.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/F8A9DBF7-1E8E-89AB-EF76-1CE86EB08712.xml new file mode 100644 index 0000000..2fc1236 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/F8A9DBF7-1E8E-89AB-EF76-1CE86EB08712.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_SMS_COMM_DATA_ID +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_SMS +CASCADE +D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A +6FCCE5B2-F20F-2BF4-C4D5-85627AEC40F3 +6FCCE5B2-F20F-2BF4-C4D5-85627AEC40F3 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FCF0A72C-B1BD-B0CF-34F2-99F71A002C51.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FCF0A72C-B1BD-B0CF-34F2-99F71A002C51.xml new file mode 100644 index 0000000..a156344 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FCF0A72C-B1BD-B0CF-34F2-99F71A002C51.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_ABAC_COMM_REQUESTS_ID +walloar +2021-04-26 13:29:43 UTC +eRights +C6308F17-C7FA-B97C-0EA6-A0CB436427AE +ERIGHTS.ANK_ABAC_COMM +CASCADE +F0656E91-B102-E910-93C9-3FADF5583284 +654D9560-6D54-DAF1-0633-73AE4C682FA7 +654D9560-6D54-DAF1-0633-73AE4C682FA7 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FD1CC4ED-111A-33BE-8C5D-CCF4D47D0E93.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FD1CC4ED-111A-33BE-8C5D-CCF4D47D0E93.xml new file mode 100644 index 0000000..c83ba70 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FD1CC4ED-111A-33BE-8C5D-CCF4D47D0E93.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_SM_PREVIOUS_CURRENT +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_SM_CURRENT_STATES +NO ACTION +0446BDB6-26D9-B764-C2A6-8BF8EE0C1200 +0B7C740E-1FA8-EB2B-7586-7715948C9049 +0B7C740E-1FA8-EB2B-7586-7715948C9049 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/32076570-BF29817DFF70.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/32076570-BF29817DFF70.xml new file mode 100644 index 0000000..54f38f7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/32076570-BF29817DFF70.xml @@ -0,0 +1,6 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/SType/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/SType/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml new file mode 100644 index 0000000..596c6bf --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/SType/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +MDSYS + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/09433069-3EA6-B647-CF6D-C0D14EC6A214.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/09433069-3EA6-B647-CF6D-C0D14EC6A214.xml new file mode 100644 index 0000000..5fff021 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/09433069-3EA6-B647-CF6D-C0D14EC6A214.xml @@ -0,0 +1,7 @@ + + +walloar +2021-05-11 06:47:37 UTC +eRights +255 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/18757E56-C056-0AE6-1392-92150DE0E6BC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/18757E56-C056-0AE6-1392-92150DE0E6BC.xml new file mode 100644 index 0000000..fd47423 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/18757E56-C056-0AE6-1392-92150DE0E6BC.xml @@ -0,0 +1,10 @@ + + +tapiafo +2021-03-08 13:12:31 UTC +eRights +255 +65536 +2147483645 +1048576 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/3D782A3F-69D4-FC49-B490-6B6381357594.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/3D782A3F-69D4-FC49-B490-6B6381357594.xml new file mode 100644 index 0000000..f320ea6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/3D782A3F-69D4-FC49-B490-6B6381357594.xml @@ -0,0 +1,11 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +2 +255 +65536 +2147483645 +1048576 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/64F40F6A-538E-C710-E815-520CD4A5FFC2.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/64F40F6A-538E-C710-E815-520CD4A5FFC2.xml new file mode 100644 index 0000000..c5f75a9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/64F40F6A-538E-C710-E815-520CD4A5FFC2.xml @@ -0,0 +1,10 @@ + + +walloar +2021-05-11 06:48:47 UTC +eRights +2 +65536 +2147483645 +1048576 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/73222CC3-5FA6-3007-1F2D-BC1BF21A2173.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/73222CC3-5FA6-3007-1F2D-BC1BF21A2173.xml new file mode 100644 index 0000000..38364e6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/73222CC3-5FA6-3007-1F2D-BC1BF21A2173.xml @@ -0,0 +1,9 @@ + + +walloar +2021-05-11 06:48:47 UTC +eRights +65536 +2147483645 +1048576 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/CBD57B40-3615-DAFC-1E13-BC8848809B70.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/CBD57B40-3615-DAFC-1E13-BC8848809B70.xml new file mode 100644 index 0000000..5720c66 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/CBD57B40-3615-DAFC-1E13-BC8848809B70.xml @@ -0,0 +1,8 @@ + + +walloar +2021-05-11 06:47:37 UTC +eRights +2 +255 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/0AE8E5B4-B387-AC92-B99E-8E5BEB5785DE.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/0AE8E5B4-B387-AC92-B99E-8E5BEB5785DE.xml new file mode 100644 index 0000000..a990969 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/0AE8E5B4-B387-AC92-B99E-8E5BEB5785DE.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +SEQ_REQUEST_DETAIL_ATTACHMENTS +walloar +2021-05-11 06:47:36 UTC +eRights +1 +99999999999999999999 +1 +YES +6DD5544E-4917-2D59-AF34-360963064305 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/3D843437-4E5B-6E8A-75D8-E76BB54D9C68.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/3D843437-4E5B-6E8A-75D8-E76BB54D9C68.xml new file mode 100644 index 0000000..a113c59 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/3D843437-4E5B-6E8A-75D8-E76BB54D9C68.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +SEQ_REQUEST_DETAILS +walloar +2021-05-11 06:47:36 UTC +eRights +1 +99999999999999999999 +1 +YES +6DD5544E-4917-2D59-AF34-360963064305 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/ECC5D303-B478-6E33-53C0-3A28515A598E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/ECC5D303-B478-6E33-53C0-3A28515A598E.xml new file mode 100644 index 0000000..472dc88 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/ECC5D303-B478-6E33-53C0-3A28515A598E.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +SEQ_APP_PARAMETERS +walloar +2021-05-11 06:47:36 UTC +eRights +1 +99999999999999999999 +1 +YES +6DD5544E-4917-2D59-AF34-360963064305 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/116C1E2F-976D-45C7-EA0A-FC3C64698017.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/116C1E2F-976D-45C7-EA0A-FC3C64698017.xml new file mode 100644 index 0000000..a0f53e6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/116C1E2F-976D-45C7-EA0A-FC3C64698017.xml @@ -0,0 +1,19 @@ + + +walloar +2021-05-11 06:47:39 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +NO +FORCE + +false +false + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/86836C8D-49EB-CA1D-4D9C-4BDE5D11630B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/86836C8D-49EB-CA1D-4D9C-4BDE5D11630B.xml new file mode 100644 index 0000000..60beb3e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/86836C8D-49EB-CA1D-4D9C-4BDE5D11630B.xml @@ -0,0 +1,46 @@ + + +walloar +2021-03-11 10:08:49 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +NO +FORCE + +false +false + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/95B9333F-7BBF-40E1-A110-F7B0A5C3BC52.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/95B9333F-7BBF-40E1-A110-F7B0A5C3BC52.xml new file mode 100644 index 0000000..b17d550 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/95B9333F-7BBF-40E1-A110-F7B0A5C3BC52.xml @@ -0,0 +1,52 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +MV_PERSON_RELATIVES_RIGHTS +walloar +2021-03-17 08:11:48 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +ON DEMAND +NO +YES +FORCE + +false +false +548B4954-2457-27CF-BDB1-4E8566FB80F6 +YES + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/B49AD319-6732-5356-793C-A922B19B5DF4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/B49AD319-6732-5356-793C-A922B19B5DF4.xml new file mode 100644 index 0000000..801ea49 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/B49AD319-6732-5356-793C-A922B19B5DF4.xml @@ -0,0 +1,11 @@ + + +walloar +2021-03-17 08:16:31 UTC +eRights +NO +FORCE +false +false + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/DAA77C03-6796-DC39-569E-A2E8E29EBD5E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/DAA77C03-6796-DC39-569E-A2E8E29EBD5E.xml new file mode 100644 index 0000000..4103305 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/DAA77C03-6796-DC39-569E-A2E8E29EBD5E.xml @@ -0,0 +1,28 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +MV_RATE_EXCHANGE +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +ON DEMAND +NO +YES +FORCE + +false +false +548B4954-2457-27CF-BDB1-4E8566FB80F6 +YES + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/TSpace/seg_0/548B4954-2457-27CF-BDB1-4E8566FB80F6.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/TSpace/seg_0/548B4954-2457-27CF-BDB1-4E8566FB80F6.xml new file mode 100644 index 0000000..c319e19 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/TSpace/seg_0/548B4954-2457-27CF-BDB1-4E8566FB80F6.xml @@ -0,0 +1,11 @@ + + +erights+dev+java +E_RIGHTS +ERIGHTS_DATA +tapiafo +2021-03-08 13:12:31 UTC +eRights +0 +LOCAL + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml new file mode 100644 index 0000000..ef2c538 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml @@ -0,0 +1,71 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +sysdate + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/19B5777E-F422-5B95-B997-179834446A02.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/19B5777E-F422-5B95-B997-179834446A02.xml new file mode 100644 index 0000000..b6e3a11 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/19B5777E-F422-5B95-B997-179834446A02.xml @@ -0,0 +1,70 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml new file mode 100644 index 0000000..9807d94 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml @@ -0,0 +1,72 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml new file mode 100644 index 0000000..3992c5d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml @@ -0,0 +1,50 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/21442F1D-A788-0766-1383-1143D116D4BC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/21442F1D-A788-0766-1383-1143D116D4BC.xml new file mode 100644 index 0000000..b8f2539 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/21442F1D-A788-0766-1383-1143D116D4BC.xml @@ -0,0 +1,92 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/256F6004-E1B6-FD26-9F27-95B58D979301.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/256F6004-E1B6-FD26-9F27-95B58D979301.xml new file mode 100644 index 0000000..43904ac --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/256F6004-E1B6-FD26-9F27-95B58D979301.xml @@ -0,0 +1,86 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 14:48:42 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml new file mode 100644 index 0000000..cbce34f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml @@ -0,0 +1,85 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml new file mode 100644 index 0000000..3f764dd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml @@ -0,0 +1,51 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SYSDATE + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml new file mode 100644 index 0000000..f7dcde9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml @@ -0,0 +1,315 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml new file mode 100644 index 0000000..3c0d72f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml @@ -0,0 +1,100 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml new file mode 100644 index 0000000..b4afc77 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml @@ -0,0 +1,57 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml new file mode 100644 index 0000000..6d56865 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml @@ -0,0 +1,40 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml new file mode 100644 index 0000000..bd36844 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml @@ -0,0 +1,30 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml new file mode 100644 index 0000000..bc4ff5b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml @@ -0,0 +1,69 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml new file mode 100644 index 0000000..7feab39 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml @@ -0,0 +1,82 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml new file mode 100644 index 0000000..fb72962 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml @@ -0,0 +1,55 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4CB74767-3856-9458-45EB-D45BEC46CD86.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4CB74767-3856-9458-45EB-D45BEC46CD86.xml new file mode 100644 index 0000000..071c4ea --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4CB74767-3856-9458-45EB-D45BEC46CD86.xml @@ -0,0 +1,293 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +73222CC3-5FA6-3007-1F2D-BC1BF21A2173 +548B4954-2457-27CF-BDB1-4E8566FB80F6 +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights +sysdate + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +walloar +2021-05-11 06:45:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +64F40F6A-538E-C710-E815-520CD4A5FFC2 +548B4954-2457-27CF-BDB1-4E8566FB80F6 + + + + +walloar +2021-03-09 10:12:07 UTC +eRights + + +walloar +2021-03-09 10:12:59 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +64F40F6A-538E-C710-E815-520CD4A5FFC2 +548B4954-2457-27CF-BDB1-4E8566FB80F6 +97E48458-0B06-3C9B-6363-0888C075BC1A +64F40F6A-538E-C710-E815-520CD4A5FFC2 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml new file mode 100644 index 0000000..e4988b6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml @@ -0,0 +1,29 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml new file mode 100644 index 0000000..ea01fb7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml @@ -0,0 +1,62 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml new file mode 100644 index 0000000..bdc419f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml @@ -0,0 +1,150 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml new file mode 100644 index 0000000..80aa837 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml @@ -0,0 +1,55 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml new file mode 100644 index 0000000..8339d8e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml @@ -0,0 +1,62 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml new file mode 100644 index 0000000..3ef30c6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml @@ -0,0 +1,258 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml new file mode 100644 index 0000000..fa82e5e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml @@ -0,0 +1,70 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml new file mode 100644 index 0000000..32b7d90 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml @@ -0,0 +1,40 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml new file mode 100644 index 0000000..eddb37f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml @@ -0,0 +1,62 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml new file mode 100644 index 0000000..e6af6ac --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml @@ -0,0 +1,115 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml new file mode 100644 index 0000000..015ffea --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml @@ -0,0 +1,97 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml new file mode 100644 index 0000000..d7ee4d5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml @@ -0,0 +1,135 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml new file mode 100644 index 0000000..1d24ab3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml @@ -0,0 +1,70 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml new file mode 100644 index 0000000..9dcc61e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml @@ -0,0 +1,293 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml new file mode 100644 index 0000000..1cff91b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml @@ -0,0 +1,245 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml new file mode 100644 index 0000000..197a04e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml @@ -0,0 +1,55 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml new file mode 100644 index 0000000..3605076 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml @@ -0,0 +1,57 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml new file mode 100644 index 0000000..6c4aaa3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml @@ -0,0 +1,50 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml new file mode 100644 index 0000000..03eeafe --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml @@ -0,0 +1,285 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml new file mode 100644 index 0000000..7d1e006 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml @@ -0,0 +1,92 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml new file mode 100644 index 0000000..c8f26dc --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml @@ -0,0 +1,55 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml new file mode 100644 index 0000000..245f312 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml @@ -0,0 +1,223 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml new file mode 100644 index 0000000..15b989f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml @@ -0,0 +1,98 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:29:01 UTC +eRights + + + + +tapiafo +2021-03-08 13:24:03 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml new file mode 100644 index 0000000..5d5e58f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml @@ -0,0 +1,113 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml new file mode 100644 index 0000000..22e18ee --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml @@ -0,0 +1,132 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml new file mode 100644 index 0000000..c73ac5e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml @@ -0,0 +1,129 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml new file mode 100644 index 0000000..7d67b8d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml @@ -0,0 +1,83 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml new file mode 100644 index 0000000..d52bcd3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml @@ -0,0 +1,70 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml new file mode 100644 index 0000000..ac839ba --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml @@ -0,0 +1,75 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml new file mode 100644 index 0000000..566ffad --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml @@ -0,0 +1,155 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9F8B71CD-271E-D6DE-3E71-2F2F28DF6A55.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9F8B71CD-271E-D6DE-3E71-2F2F28DF6A55.xml new file mode 100644 index 0000000..3139d91 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9F8B71CD-271E-D6DE-3E71-2F2F28DF6A55.xml @@ -0,0 +1,70 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml new file mode 100644 index 0000000..ae45a31 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml @@ -0,0 +1,129 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml new file mode 100644 index 0000000..1146eac --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml @@ -0,0 +1,131 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml new file mode 100644 index 0000000..5c7219a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml @@ -0,0 +1,45 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml new file mode 100644 index 0000000..a2c7259 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml @@ -0,0 +1,75 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml new file mode 100644 index 0000000..f7b1ad9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml @@ -0,0 +1,77 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml new file mode 100644 index 0000000..ef95c88 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml @@ -0,0 +1,56 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SYSDATE + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml new file mode 100644 index 0000000..50e3241 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml @@ -0,0 +1,81 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml new file mode 100644 index 0000000..805400f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml @@ -0,0 +1,57 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml new file mode 100644 index 0000000..c9302a2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml @@ -0,0 +1,55 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml new file mode 100644 index 0000000..7330af1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml @@ -0,0 +1,60 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml new file mode 100644 index 0000000..292dc23 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml @@ -0,0 +1,73 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml new file mode 100644 index 0000000..746dc70 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml @@ -0,0 +1,45 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml new file mode 100644 index 0000000..af83159 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml @@ -0,0 +1,80 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml new file mode 100644 index 0000000..cd6a9ff --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml @@ -0,0 +1,150 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml new file mode 100644 index 0000000..077f26c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml @@ -0,0 +1,70 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml new file mode 100644 index 0000000..f4e550b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml @@ -0,0 +1,189 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml new file mode 100644 index 0000000..235e100 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml @@ -0,0 +1,87 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml new file mode 100644 index 0000000..7b9b1ce --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml @@ -0,0 +1,94 @@ + + +tapiafo +2021-03-08 13:12:31 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +18757E56-C056-0AE6-1392-92150DE0E6BC +548B4954-2457-27CF-BDB1-4E8566FB80F6 +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +3D782A3F-69D4-FC49-B490-6B6381357594 +548B4954-2457-27CF-BDB1-4E8566FB80F6 + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +3D782A3F-69D4-FC49-B490-6B6381357594 +548B4954-2457-27CF-BDB1-4E8566FB80F6 + + + + +tapiafo +2021-03-08 13:24:14 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +3D782A3F-69D4-FC49-B490-6B6381357594 +548B4954-2457-27CF-BDB1-4E8566FB80F6 +3503D1AF-BFBC-40DF-B31A-5A5ECA9B4674 +3D782A3F-69D4-FC49-B490-6B6381357594 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml new file mode 100644 index 0000000..c21f28d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml @@ -0,0 +1,73 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/01197962-C671-CBDB-2A12-9A0182777C73.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/01197962-C671-CBDB-2A12-9A0182777C73.xml new file mode 100644 index 0000000..fb7c104 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/01197962-C671-CBDB-2A12-9A0182777C73.xml @@ -0,0 +1,179 @@ + + +walloar +2021-03-11 10:08:49 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +86836C8D-49EB-CA1D-4D9C-4BDE5D11630B +false +oracle_loader + + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + + + +walloar +2021-03-11 10:08:49 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/0BB44896-7365-55A2-3289-9522C627466B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/0BB44896-7365-55A2-3289-9522C627466B.xml new file mode 100644 index 0000000..28cccca --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/0BB44896-7365-55A2-3289-9522C627466B.xml @@ -0,0 +1,91 @@ + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +YES +DISABLE +09433069-3EA6-B647-CF6D-C0D14EC6A214 +548B4954-2457-27CF-BDB1-4E8566FB80F6 +false +oracle_loader + + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +CBD57B40-3615-DAFC-1E13-BC8848809B70 +548B4954-2457-27CF-BDB1-4E8566FB80F6 + + + + +walloar +2021-05-11 06:48:47 UTC +eRights + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +CBD57B40-3615-DAFC-1E13-BC8848809B70 +548B4954-2457-27CF-BDB1-4E8566FB80F6 +ABEA4E18-09A7-8117-4C17-1B77A2397859 +CBD57B40-3615-DAFC-1E13-BC8848809B70 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/4999EFAE-DAB3-0CF8-7B71-772378B9B375.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/4999EFAE-DAB3-0CF8-7B71-772378B9B375.xml new file mode 100644 index 0000000..1729e15 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/4999EFAE-DAB3-0CF8-7B71-772378B9B375.xml @@ -0,0 +1,188 @@ + + +walloar +2021-03-17 08:16:31 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +YES +true +DISABLE +18757E56-C056-0AE6-1392-92150DE0E6BC +95B9333F-7BBF-40E1-A110-F7B0A5C3BC52 +548B4954-2457-27CF-BDB1-4E8566FB80F6 +false +oracle_loader + + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + + + +walloar +2021-03-17 08:16:31 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +3D782A3F-69D4-FC49-B490-6B6381357594 +548B4954-2457-27CF-BDB1-4E8566FB80F6 + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml new file mode 100644 index 0000000..4e79e41 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml @@ -0,0 +1,44 @@ + + +walloar +2021-05-11 06:45:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +116C1E2F-976D-45C7-EA0A-FC3C64698017 +false +oracle_loader + + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + + + +walloar +2021-05-11 06:45:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/7B13FE04-19F2-BA2C-C873-CAF22AEC0F1F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/7B13FE04-19F2-BA2C-C873-CAF22AEC0F1F.xml new file mode 100644 index 0000000..bed37c3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/7B13FE04-19F2-BA2C-C873-CAF22AEC0F1F.xml @@ -0,0 +1,59 @@ + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +YES +DISABLE +09433069-3EA6-B647-CF6D-C0D14EC6A214 +548B4954-2457-27CF-BDB1-4E8566FB80F6 +false +oracle_loader + + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +CBD57B40-3615-DAFC-1E13-BC8848809B70 +548B4954-2457-27CF-BDB1-4E8566FB80F6 + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +CBD57B40-3615-DAFC-1E13-BC8848809B70 +548B4954-2457-27CF-BDB1-4E8566FB80F6 +BA0E03D8-D6D6-50A5-EDC6-5C62CA7FF1F7 +CBD57B40-3615-DAFC-1E13-BC8848809B70 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml new file mode 100644 index 0000000..3a51ede --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml @@ -0,0 +1,146 @@ + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +YES +DISABLE +09433069-3EA6-B647-CF6D-C0D14EC6A214 +548B4954-2457-27CF-BDB1-4E8566FB80F6 +false +oracle_loader + + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +CBD57B40-3615-DAFC-1E13-BC8848809B70 +548B4954-2457-27CF-BDB1-4E8566FB80F6 + + + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +CBD57B40-3615-DAFC-1E13-BC8848809B70 +548B4954-2457-27CF-BDB1-4E8566FB80F6 +E08C3509-8EEB-FBA4-EB88-03F75E7D3726 +CBD57B40-3615-DAFC-1E13-BC8848809B70 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/CD6BE7A4-204E-62FE-7BA4-C9C5440782F7.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/CD6BE7A4-204E-62FE-7BA4-C9C5440782F7.xml new file mode 100644 index 0000000..b62473c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/CD6BE7A4-204E-62FE-7BA4-C9C5440782F7.xml @@ -0,0 +1,58 @@ + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +YES +true +DISABLE +18757E56-C056-0AE6-1392-92150DE0E6BC +DAA77C03-6796-DC39-569E-A2E8E29EBD5E +548B4954-2457-27CF-BDB1-4E8566FB80F6 +false +oracle_loader + + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +3D782A3F-69D4-FC49-B490-6B6381357594 +548B4954-2457-27CF-BDB1-4E8566FB80F6 + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml new file mode 100644 index 0000000..38af64e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml @@ -0,0 +1,83 @@ + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A + + + + +walloar +2021-03-09 10:27:29 UTC +eRights + + + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/EA9E31FF-E810-F570-9354-8B2CA9473801.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/EA9E31FF-E810-F570-9354-8B2CA9473801.xml new file mode 100644 index 0000000..84973b3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/EA9E31FF-E810-F570-9354-8B2CA9473801.xml @@ -0,0 +1,46 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml new file mode 100644 index 0000000..9032725 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml @@ -0,0 +1,60 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F28AEFDE-0804-3C83-F214-6330BE84607B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F28AEFDE-0804-3C83-F214-6330BE84607B.xml new file mode 100644 index 0000000..921ce6c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F28AEFDE-0804-3C83-F214-6330BE84607B.xml @@ -0,0 +1,90 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F3764DB4-0649-A94A-7497-92FDAEA69888.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F3764DB4-0649-A94A-7497-92FDAEA69888.xml new file mode 100644 index 0000000..524390f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F3764DB4-0649-A94A-7497-92FDAEA69888.xml @@ -0,0 +1,71 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F6108759-A9AE-8679-03BA-D124DEC368E8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F6108759-A9AE-8679-03BA-D124DEC368E8.xml new file mode 100644 index 0000000..c947cd9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F6108759-A9AE-8679-03BA-D124DEC368E8.xml @@ -0,0 +1,88 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'Y' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml new file mode 100644 index 0000000..07cd347 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml @@ -0,0 +1,108 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'Y' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/FF74A656-1D74-CA01-A02B-65A0579DD208.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/FF74A656-1D74-CA01-A02B-65A0579DD208.xml new file mode 100644 index 0000000..ee46ac2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/FF74A656-1D74-CA01-A02B-65A0579DD208.xml @@ -0,0 +1,271 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/6DD5544E-4917-2D59-AF34-360963064305.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/6DD5544E-4917-2D59-AF34-360963064305.xml new file mode 100644 index 0000000..52932f7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/6DD5544E-4917-2D59-AF34-360963064305.xml @@ -0,0 +1,17 @@ + + +erights+dev+java +E_RIGHTS +tapiafo +2021-03-08 13:12:30 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +CREATE SYNONYM, CREATE VIEW, CREATE ANY PROCEDURE, CREATE ANY CONTEXT, UNLIMITED TABLESPACE, CREATE JOB, CREATE DATABASE LINK, CREATE MATERIALIZED VIEW + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/MDSYS.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/MDSYS.xml new file mode 100644 index 0000000..94db6d7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/MDSYS.xml @@ -0,0 +1,8 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +true +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/PUBLIC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/PUBLIC.xml new file mode 100644 index 0000000..c122e43 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/PUBLIC.xml @@ -0,0 +1,8 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +true +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml new file mode 100644 index 0000000..00eb858 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml new file mode 100644 index 0000000..f67fcb2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml new file mode 100644 index 0000000..46ffe33 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/665F7232-E34D-D4E3-2772-641E0C8D3265.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/665F7232-E34D-D4E3-2772-641E0C8D3265.xml new file mode 100644 index 0000000..520b48c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/665F7232-E34D-D4E3-2772-641E0C8D3265.xml @@ -0,0 +1,7 @@ + + +walloar +2021-05-21 14:11:11 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml new file mode 100644 index 0000000..0da60bc --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml new file mode 100644 index 0000000..8ba7472 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7.xml new file mode 100644 index 0000000..8bb87f7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7.xml @@ -0,0 +1,7 @@ + + +walloar +2021-05-12 10:22:34 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml new file mode 100644 index 0000000..404f378 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml new file mode 100644 index 0000000..c06a23c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/D21245B2-8F64-2469-F8D7-25F4597156F2.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/D21245B2-8F64-2469-F8D7-25F4597156F2.xml new file mode 100644 index 0000000..f27a5a5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/D21245B2-8F64-2469-F8D7-25F4597156F2.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-17 08:07:49 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml new file mode 100644 index 0000000..bc67659 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml new file mode 100644 index 0000000..1db4159 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml new file mode 100644 index 0000000..b614d61 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/79C73AAF-025EE81A2AFC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/79C73AAF-025EE81A2AFC.xml new file mode 100644 index 0000000..114cf83 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/79C73AAF-025EE81A2AFC.xml @@ -0,0 +1,6 @@ + + +walloar +2021-03-02 08:04:42 UTC +eRights + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Directory/seg_0/B18008E9-084E-53C5-4176-00240C82CEF8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Directory/seg_0/B18008E9-084E-53C5-4176-00240C82CEF8.xml new file mode 100644 index 0000000..a4ef519 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Directory/seg_0/B18008E9-084E-53C5-4176-00240C82CEF8.xml @@ -0,0 +1,9 @@ + + +ERIGHTS-TEST +DBIN_EEASDTPD +walloar +2021-03-02 08:04:43 UTC +eRights +/ec/dev/server/oracle/eea-dev-user-files/eeasdtpd/dbin + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Directory/seg_0/F58AF215-AAF2-8A56-2DDF-AF311B84EFCB.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Directory/seg_0/F58AF215-AAF2-8A56-2DDF-AF311B84EFCB.xml new file mode 100644 index 0000000..2ed61df --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Directory/seg_0/F58AF215-AAF2-8A56-2DDF-AF311B84EFCB.xml @@ -0,0 +1,9 @@ + + +ERIGHTS-TEST +DBOUT_EEASDTPD +walloar +2021-03-02 08:04:43 UTC +eRights +/ec/dev/server/oracle/eea-dev-user-files/eeasdtpd/dbout + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Package/seg_0/FE5C7103-B345-81C8-24D4-7C5B5E377BB0.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Package/seg_0/FE5C7103-B345-81C8-24D4-7C5B5E377BB0.xml new file mode 100644 index 0000000..86f08de --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Package/seg_0/FE5C7103-B345-81C8-24D4-7C5B5E377BB0.xml @@ -0,0 +1,179 @@ + + +ERIGHTS-TEST +ERIGHTS +PKG_LOG +walloar +2021-03-02 08:05:04 UTC +eRights + +CREATE OR REPLACE PACKAGE ERIGHTS.PKG_LOG IS + + -- Author : ILIESSU + -- Created : 10/5/2010 2:25:28 PM + -- Purpose : logging + -- todo : add oracle session log-priority attribute (I,D,E,F). + -- updated: 19/08/2020 ipatelav add shrink method to release the empty space + /** + * saves p_message debug message. + **/ + PROCEDURE DEBUG(P_MESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2); + + /** + * saves p_message error message. + **/ + PROCEDURE ERROR(P_ERRORMESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2); + + /** + * saves p_message WARNING message. + **/ + PROCEDURE WARNING(P_ERRORMESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2); + + /** + * deletes log messages older than given date. + * only deletes the debug messages. + * if null date is passed it deletes for 90 days. + **/ + PROCEDURE DELETE_OLD_DEBUG_LOGS(P_DATE DATE); + + --PROCEDURE DELETE_OLD_SYNC_LOG; + + /** + * Skirinks tables - release the space. + **/ + PROCEDURE SHRINK_TABLE(p_table_name VARCHAR2); + +END PKG_LOG; + +ERIGHTS-TEST +ERIGHTS +PKG_LOG +walloar +2021-03-02 08:05:04 UTC +eRights + +CREATE OR REPLACE PACKAGE BODY ERIGHTS.PKG_LOG IS + + L_DEBUGENABLED BOOLEAN := TRUE; + + /** + * saves p_message debug message. + **/ + PROCEDURE DEBUG(P_MESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2) AS + PRAGMA AUTONOMOUS_TRANSACTION; + BEGIN + IF (L_DEBUGENABLED) THEN + INSERT INTO DB_LOG + (ID, PRIORITY, PROGRAM, MESSAGE, MOMENTUM) + VALUES + (SEQ_DB_LOG.NEXTVAL, 'D', P_PROGRAMNAME, P_MESSAGE, SYSDATE); + COMMIT; + END IF; + END; + + /** + * saves p_message error message. + **/ + PROCEDURE ERROR(P_ERRORMESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2) AS + PRAGMA AUTONOMOUS_TRANSACTION; + BEGIN + IF (L_DEBUGENABLED) THEN + INSERT INTO DB_LOG + (ID, PRIORITY, PROGRAM, MESSAGE, MOMENTUM) + VALUES + (SEQ_DB_LOG.NEXTVAL, 'E', P_PROGRAMNAME, P_ERRORMESSAGE, SYSDATE); + COMMIT; + END IF; + END; + + /** + * saves p_message error message. + **/ + PROCEDURE WARNING(P_ERRORMESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2) AS + PRAGMA AUTONOMOUS_TRANSACTION; + BEGIN + IF (L_DEBUGENABLED) THEN + INSERT INTO DB_LOG + (ID, PRIORITY, PROGRAM, MESSAGE, MOMENTUM) + VALUES + (SEQ_DB_LOG.NEXTVAL, 'W', P_PROGRAMNAME, P_ERRORMESSAGE, SYSDATE); + COMMIT; + END IF; + END; + + PROCEDURE DELETE_OLD_DEBUG_LOGS(P_DATE DATE) AS + V_DATE DATE; + V_SYSDATE DATE; + N_DAYS PLS_INTEGER := 90; + BEGIN + SELECT TRUNC(SYSDATE) INTO V_SYSDATE FROM DUAL; + IF (P_DATE IS NULL) THEN + SELECT (TRUNC(SYSDATE) - N_DAYS) INTO V_DATE FROM DUAL; + ELSE + SELECT TRUNC(P_DATE) INTO V_DATE FROM DUAL; + END IF; + + DELETE FROM DB_LOG D WHERE TRUNC(D.MOMENTUM) <= V_DATE AND D.PRIORITY = 'D'; + + PKG_LOG.DEBUG(SQL%ROWCOUNT || + ' records were deleted from db_log. momentum less then ' || + V_DATE, + 'DELETE_LOGS'); + COMMIT; + + SHRINK_TABLE('DB_LOG'); + + END; +/* +procedure DELETE_OLD_SYNC_LOG as + begin + + for rec in (select max(creation_date) max_creation_date ,loc_obj_foreign_id,SYNC_STATUS + from SYNC_TRANSACTION_LOG + group by loc_obj_foreign_id,SYNC_STATUS) loop + + delete from SYNC_TRANSACTION_LOG + where creation_date < rec.max_creation_date + and loc_obj_foreign_id = rec.loc_obj_foreign_id + and SYNC_STATUS = rec.SYNC_STATUS; + + end loop; + + commit; + + end; + */ + /** + * release space after deleting rows table's rows + **/ + PROCEDURE SHRINK_TABLE(p_table_name VARCHAR2) + IS + l_start_time NUMBER; + l_end_time NUMBER; + BEGIN + PKG_LOG.DEBUG('start shrinking ' || p_table_name + , + 'PKG_LOG.SHRINK_TABLE'); + + l_start_time := DBMS_UTILITY.get_time; + + EXECUTE IMMEDIATE 'alter table ' || p_table_name || ' enable row movement' ; + EXECUTE IMMEDIATE 'alter table ' || p_table_name || ' shrink space cascade' ; + + l_end_time := DBMS_UTILITY.get_time; + + PKG_LOG.DEBUG( 'end shrinking ' || p_table_name || + ' Elapsed Time (hsecs): ' || (l_end_time - l_start_time) + , + 'PKG_LOG.SHRINK_TABLE'); + EXCEPTION + WHEN OTHERS THEN + PKG_LOG.ERROR('failed to shrink: ' ||p_table_name || ' ' || SQLERRM, + 'PKG_LOG.SHRINK_TABLE'); + + END; +BEGIN + L_DEBUGENABLED := TRUE; +END PKG_LOG; + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Role/seg_0/8E510250-0CC1-36C8-1D28-01D7B0804B2C.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Role/seg_0/8E510250-0CC1-36C8-1D28-01D7B0804B2C.xml new file mode 100644 index 0000000..3f07599 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Role/seg_0/8E510250-0CC1-36C8-1D28-01D7B0804B2C.xml @@ -0,0 +1,24 @@ + + +ERIGHTS-TEST +ERIGHTS +walloar +2021-03-02 08:05:05 UTC +eRights + + +walloar +2021-03-02 08:05:05 UTC +eRights +READ, WRITE +B18008E9-084E-53C5-4176-00240C82CEF8 + + +walloar +2021-03-02 08:05:05 UTC +eRights +READ, WRITE +F58AF215-AAF2-8A56-2DDF-AF311B84EFCB + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/SType/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/SType/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml new file mode 100644 index 0000000..b256624 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/SType/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:42 UTC +eRights +MDSYS + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/SType/seg_0/F72C39E0-D1CA-8821-2AD7-A1E95A37D3D1.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/SType/seg_0/F72C39E0-D1CA-8821-2AD7-A1E95A37D3D1.xml new file mode 100644 index 0000000..8f8f800 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/SType/seg_0/F72C39E0-D1CA-8821-2AD7-A1E95A37D3D1.xml @@ -0,0 +1,6 @@ + + +walloar +2021-03-02 08:04:42 UTC +eRights + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/002E8510-7075-EE24-0F2C-35ED80E2E3AC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/002E8510-7075-EE24-0F2C-35ED80E2E3AC.xml new file mode 100644 index 0000000..e4d2a74 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/002E8510-7075-EE24-0F2C-35ED80E2E3AC.xml @@ -0,0 +1,10 @@ + + +walloar +2021-06-09 07:13:25 UTC +eRights +2 +65536 +2147483645 +1048576 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/4B526395-31D4-E40B-8788-FF7D69FFECF3.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/4B526395-31D4-E40B-8788-FF7D69FFECF3.xml new file mode 100644 index 0000000..2c51e2e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/4B526395-31D4-E40B-8788-FF7D69FFECF3.xml @@ -0,0 +1,11 @@ + + +walloar +2021-03-02 08:04:48 UTC +eRights +2 +255 +65536 +2147483645 +1048576 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/4FD03845-42F8-248F-A9EB-E821AA5CB933.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/4FD03845-42F8-248F-A9EB-E821AA5CB933.xml new file mode 100644 index 0000000..7134c88 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/4FD03845-42F8-248F-A9EB-E821AA5CB933.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +255 + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/E4BFAFBC-A693-3751-298F-2DF9E4E67EDD.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/E4BFAFBC-A693-3751-298F-2DF9E4E67EDD.xml new file mode 100644 index 0000000..02ebfb0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/E4BFAFBC-A693-3751-298F-2DF9E4E67EDD.xml @@ -0,0 +1,8 @@ + + +walloar +2021-03-02 08:04:48 UTC +eRights +2 +255 + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0.xml new file mode 100644 index 0000000..801f7c3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0.xml @@ -0,0 +1,9 @@ + + +walloar +2021-06-09 07:13:25 UTC +eRights +65536 +2147483645 +1048576 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/F9B19514-BA38-E940-C849-7549649319DD.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/F9B19514-BA38-E940-C849-7549649319DD.xml new file mode 100644 index 0000000..9c9ffce --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/F9B19514-BA38-E940-C849-7549649319DD.xml @@ -0,0 +1,10 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +255 +65536 +2147483645 +1048576 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/00374E52-80B8-56CB-E7B4-18860F5894BC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/00374E52-80B8-56CB-E7B4-18860F5894BC.xml new file mode 100644 index 0000000..408cac8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/00374E52-80B8-56CB-E7B4-18860F5894BC.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_DECL_PERS_ATTACHMENTS +walloar +2021-03-09 10:38:05 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/064BDE27-A472-26D9-659E-604CCE1E7085.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/064BDE27-A472-26D9-659E-604CCE1E7085.xml new file mode 100644 index 0000000..7e38555 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/064BDE27-A472-26D9-659E-604CCE1E7085.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_NOTIFICATIONS +walloar +2021-03-02 08:04:44 UTC +eRights +20 +1 +9999999999999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/166D4187-32DB-8AB6-DC5C-7CDD823F65A3.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/166D4187-32DB-8AB6-DC5C-7CDD823F65A3.xml new file mode 100644 index 0000000..0855a0f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/166D4187-32DB-8AB6-DC5C-7CDD823F65A3.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_NOTIFICATION_TEMPLATES +walloar +2021-03-02 08:04:44 UTC +eRights +20 +1 +9999999999999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3A35F79F-D19A-A8E6-F3BD-D7C5873974C4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3A35F79F-D19A-A8E6-F3BD-D7C5873974C4.xml new file mode 100644 index 0000000..db0cb0b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3A35F79F-D19A-A8E6-F3BD-D7C5873974C4.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ANK_REVINFO +walloar +2021-03-02 08:04:43 UTC +eRights +20 +1 +9999999999999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3DE156AB-BADB-2DF9-D6FA-26BCB16DDE1D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3DE156AB-BADB-2DF9-D6FA-26BCB16DDE1D.xml new file mode 100644 index 0000000..f5b50ba --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3DE156AB-BADB-2DF9-D6FA-26BCB16DDE1D.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_DECLARATION +walloar +2021-03-02 08:04:43 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4270DE1D-C8E0-FEC9-7FF3-93B5C7E852E6.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4270DE1D-C8E0-FEC9-7FF3-93B5C7E852E6.xml new file mode 100644 index 0000000..00f1099 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4270DE1D-C8E0-FEC9-7FF3-93B5C7E852E6.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ENTITLMNT_MAX_DEFAULT +walloar +2021-03-02 08:04:43 UTC +eRights +1 +9999999999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4E5AB105-7190-34E1-E7BB-032288EDB54D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4E5AB105-7190-34E1-E7BB-032288EDB54D.xml new file mode 100644 index 0000000..9585a7a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4E5AB105-7190-34E1-E7BB-032288EDB54D.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ENTITLMNT_TYPES +walloar +2021-03-02 08:04:44 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4F81D551-BF4E-840F-1500-7A71535D0AAC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4F81D551-BF4E-840F-1500-7A71535D0AAC.xml new file mode 100644 index 0000000..72a88ea --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4F81D551-BF4E-840F-1500-7A71535D0AAC.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ANK_EDMS_SMS +walloar +2021-03-02 08:04:43 UTC +eRights +20 +1 +99999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/54627E87-A436-02C8-0332-AD8EF2E3A3BA.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/54627E87-A436-02C8-0332-AD8EF2E3A3BA.xml new file mode 100644 index 0000000..dd483aa --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/54627E87-A436-02C8-0332-AD8EF2E3A3BA.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ANK_EDMS_EMAILS +walloar +2021-03-02 08:04:43 UTC +eRights +20 +1 +99999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/65543427-59F0-EDBC-BC8D-BE1F62FF06FB.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/65543427-59F0-EDBC-BC8D-BE1F62FF06FB.xml new file mode 100644 index 0000000..51062f3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/65543427-59F0-EDBC-BC8D-BE1F62FF06FB.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ANK_EDMS_SMS_RCPTS +walloar +2021-03-02 08:04:43 UTC +eRights +20 +1 +99999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/764F9BD0-0CDF-9B71-A420-E9A059A08D5C.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/764F9BD0-0CDF-9B71-A420-E9A059A08D5C.xml new file mode 100644 index 0000000..5c4fe4f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/764F9BD0-0CDF-9B71-A420-E9A059A08D5C.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_MF_AIPN_ATTACHMENTS +walloar +2021-03-02 08:04:44 UTC +eRights +50 +1 +99999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/B2076C24-CB78-AD33-64CB-3FB90D7ED2B7.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/B2076C24-CB78-AD33-64CB-3FB90D7ED2B7.xml new file mode 100644 index 0000000..9d1718d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/B2076C24-CB78-AD33-64CB-3FB90D7ED2B7.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ANK_SM_PREVIOUS_STATES +walloar +2021-03-02 08:04:43 UTC +eRights +1 +99999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/BA339E97-627B-7D76-7992-6C82640F211D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/BA339E97-627B-7D76-7992-6C82640F211D.xml new file mode 100644 index 0000000..d75fa0a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/BA339E97-627B-7D76-7992-6C82640F211D.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ENTITLMNT_MAXS +walloar +2021-03-02 08:04:43 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/BA7EC370-3AFE-13E6-8FDF-B9FA642FDD73.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/BA7EC370-3AFE-13E6-8FDF-B9FA642FDD73.xml new file mode 100644 index 0000000..9f58350 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/BA7EC370-3AFE-13E6-8FDF-B9FA642FDD73.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_DB_LOG +walloar +2021-03-02 08:04:43 UTC +eRights +1 +9999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C7FBAB20-2FFA-BF72-11DA-35E00F22AD5F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C7FBAB20-2FFA-BF72-11DA-35E00F22AD5F.xml new file mode 100644 index 0000000..17ecfe3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C7FBAB20-2FFA-BF72-11DA-35E00F22AD5F.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_MOVEMENT_FILES +walloar +2021-03-02 08:04:44 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/CBE02240-B7C9-431F-7590-09479A5D941B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/CBE02240-B7C9-431F-7590-09479A5D941B.xml new file mode 100644 index 0000000..8309765 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/CBE02240-B7C9-431F-7590-09479A5D941B.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_MOVEMENT_TYPES +walloar +2021-03-02 08:04:44 UTC +eRights +1 +999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/CDBAEC98-F5E5-E048-9F76-8F56D05BB348.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/CDBAEC98-F5E5-E048-9F76-8F56D05BB348.xml new file mode 100644 index 0000000..dd6e481 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/CDBAEC98-F5E5-E048-9F76-8F56D05BB348.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_MOVEMENT_CONTEXT +walloar +2021-03-02 08:04:44 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/D694CCCC-9B59-6356-9296-9E6F643E9572.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/D694CCCC-9B59-6356-9296-9E6F643E9572.xml new file mode 100644 index 0000000..fa4aefe --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/D694CCCC-9B59-6356-9296-9E6F643E9572.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_DECLARATION_PERSON +walloar +2021-03-02 08:04:43 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/D7907E22-00A8-1488-D307-727AC2B27ACC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/D7907E22-00A8-1488-D307-727AC2B27ACC.xml new file mode 100644 index 0000000..c5122e3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/D7907E22-00A8-1488-D307-727AC2B27ACC.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ANK_EDMS_EMAIL_RCPTS +walloar +2021-03-02 08:04:43 UTC +eRights +20 +1 +99999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/F577A50F-FC16-22E7-EF18-966241C05061.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/F577A50F-FC16-22E7-EF18-966241C05061.xml new file mode 100644 index 0000000..a8d47d0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/F577A50F-FC16-22E7-EF18-966241C05061.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_PERSONS_BANK_INFO +walloar +2021-03-02 08:04:44 UTC +eRights +1 +9999999999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/09F46DD0-1532-2503-78FF-D279FEB4D548.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/09F46DD0-1532-2503-78FF-D279FEB4D548.xml new file mode 100644 index 0000000..f92d96f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/09F46DD0-1532-2503-78FF-D279FEB4D548.xml @@ -0,0 +1,26 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_JOB_BUDGET_LINE +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/3C73C3C8-5CD8-A3FE-5B0B-4EC55EA2B408.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/3C73C3C8-5CD8-A3FE-5B0B-4EC55EA2B408.xml new file mode 100644 index 0000000..dfce7c2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/3C73C3C8-5CD8-A3FE-5B0B-4EC55EA2B408.xml @@ -0,0 +1,77 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_MV_PERSONS_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/478DD3C2-32A3-182F-8E02-42B2BCCD9B30.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/478DD3C2-32A3-182F-8E02-42B2BCCD9B30.xml new file mode 100644 index 0000000..f6c2900 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/478DD3C2-32A3-182F-8E02-42B2BCCD9B30.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ENTITIES +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/4D31BECC-FA7B-04BD-440D-1D3655369157.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/4D31BECC-FA7B-04BD-440D-1D3655369157.xml new file mode 100644 index 0000000..117ad23 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/4D31BECC-FA7B-04BD-440D-1D3655369157.xml @@ -0,0 +1,82 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/598EE7E1-BB1B-4267-250D-6B812BECB16F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/598EE7E1-BB1B-4267-250D-6B812BECB16F.xml new file mode 100644 index 0000000..4eac00c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/598EE7E1-BB1B-4267-250D-6B812BECB16F.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_COM +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/6213FC12-F38A-D2E1-3B8B-4FC54BE9DB92.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/6213FC12-F38A-D2E1-3B8B-4FC54BE9DB92.xml new file mode 100644 index 0000000..7d9b0b0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/6213FC12-F38A-D2E1-3B8B-4FC54BE9DB92.xml @@ -0,0 +1,44 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_CITIES +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES +ROWID + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/667A4934-197B-111A-FD8F-5A1BADAEE739.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/667A4934-197B-111A-FD8F-5A1BADAEE739.xml new file mode 100644 index 0000000..a3a54e8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/667A4934-197B-111A-FD8F-5A1BADAEE739.xml @@ -0,0 +1,45 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_EMAILS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/6A8630FC-5CD1-A380-2B14-58ABEF2FE83A.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/6A8630FC-5CD1-A380-2B14-58ABEF2FE83A.xml new file mode 100644 index 0000000..3dffff1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/6A8630FC-5CD1-A380-2B14-58ABEF2FE83A.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_JOBS_HIST_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/75701A14-244D-95C1-3DA2-A568DA652435.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/75701A14-244D-95C1-3DA2-A568DA652435.xml new file mode 100644 index 0000000..b7bcd66 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/75701A14-244D-95C1-3DA2-A568DA652435.xml @@ -0,0 +1,21 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/76F5AE5B-184E-E68B-5AFF-65178FE1C6FD.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/76F5AE5B-184E-E68B-5AFF-65178FE1C6FD.xml new file mode 100644 index 0000000..48aec30 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/76F5AE5B-184E-E68B-5AFF-65178FE1C6FD.xml @@ -0,0 +1,21 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_HIST_COM +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/7ED28DCA-FE31-3387-94F1-C2A51EA2EBB9.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/7ED28DCA-FE31-3387-94F1-C2A51EA2EBB9.xml new file mode 100644 index 0000000..ea5bb61 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/7ED28DCA-FE31-3387-94F1-C2A51EA2EBB9.xml @@ -0,0 +1,54 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_COUNTRIES +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES +ROWID + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/84171DD1-B63E-D76E-2EDE-4126C95EEE3E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/84171DD1-B63E-D76E-2EDE-4126C95EEE3E.xml new file mode 100644 index 0000000..b5f6084 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/84171DD1-B63E-D76E-2EDE-4126C95EEE3E.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ASSIGNMENTS_COM +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/84CE00D7-7A30-5596-1E0D-3CAFF16AE49C.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/84CE00D7-7A30-5596-1E0D-3CAFF16AE49C.xml new file mode 100644 index 0000000..2db4c77 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/84CE00D7-7A30-5596-1E0D-3CAFF16AE49C.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_MV_PERSON_PHONES +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8A460994-7446-827E-9307-703C20EF8E1E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8A460994-7446-827E-9307-703C20EF8E1E.xml new file mode 100644 index 0000000..6b50f0d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8A460994-7446-827E-9307-703C20EF8E1E.xml @@ -0,0 +1,33 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_BANK_INFO +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8F98C450-E751-A83B-F932-78C506CC1BE6.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8F98C450-E751-A83B-F932-78C506CC1BE6.xml new file mode 100644 index 0000000..eb1d079 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8F98C450-E751-A83B-F932-78C506CC1BE6.xml @@ -0,0 +1,21 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_HIST_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8FF4EE79-084E-E0BC-2B8A-F35CB2FD80C6.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8FF4EE79-084E-E0BC-2B8A-F35CB2FD80C6.xml new file mode 100644 index 0000000..6dd421f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8FF4EE79-084E-E0BC-2B8A-F35CB2FD80C6.xml @@ -0,0 +1,11 @@ + + +walloar +2021-03-11 10:08:49 UTC +eRights +NO +FORCE +false +false + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/91EB52F5-1395-C9BD-386D-CAC24DDEDF9B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/91EB52F5-1395-C9BD-386D-CAC24DDEDF9B.xml new file mode 100644 index 0000000..5946aa3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/91EB52F5-1395-C9BD-386D-CAC24DDEDF9B.xml @@ -0,0 +1,169 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_FAMILY_MEMBERS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + 'LA' + AND sysdate BETWEEN csisla_start_eligibility AND csisla_end_eligibility + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_person_relatives@easrefn.cc.cec.eu.int pr + WHERE + pr.per_id = r.per_id + AND pr.rel_per_id = la.per_id + )]]> +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/94E79362-3379-F273-4E36-75472F0906B8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/94E79362-3379-F273-4E36-75472F0906B8.xml new file mode 100644 index 0000000..6b77803 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/94E79362-3379-F273-4E36-75472F0906B8.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_MV_ENTITIES +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9D36BB70-CD6A-8429-66D9-6A6893B18CBE.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9D36BB70-CD6A-8429-66D9-6A6893B18CBE.xml new file mode 100644 index 0000000..ee99799 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9D36BB70-CD6A-8429-66D9-6A6893B18CBE.xml @@ -0,0 +1,45 @@ + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +NO +FORCE + +false + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9D7F992B-36C8-32C7-5785-90CA6C7BD662.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9D7F992B-36C8-32C7-5785-90CA6C7BD662.xml new file mode 100644 index 0000000..9e80201 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9D7F992B-36C8-32C7-5785-90CA6C7BD662.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ENTITIES_HIST_COM +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9E854E48-5D75-C56C-B8AD-AD867F6FD6EA.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9E854E48-5D75-C56C-B8AD-AD867F6FD6EA.xml new file mode 100644 index 0000000..2df208c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9E854E48-5D75-C56C-B8AD-AD867F6FD6EA.xml @@ -0,0 +1,21 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ENTITIES_HIST +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9F01CDBA-F98A-CCDD-533A-A33F6CE02631.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9F01CDBA-F98A-CCDD-533A-A33F6CE02631.xml new file mode 100644 index 0000000..604216d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9F01CDBA-F98A-CCDD-533A-A33F6CE02631.xml @@ -0,0 +1,35 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_HEAD_OF_DELEGATIONS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AA9661D0-8A85-A206-9D93-17DB00309FA9.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AA9661D0-8A85-A206-9D93-17DB00309FA9.xml new file mode 100644 index 0000000..18b0d3d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AA9661D0-8A85-A206-9D93-17DB00309FA9.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AD822322-5271-1356-06C5-18F45693C82B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AD822322-5271-1356-06C5-18F45693C82B.xml new file mode 100644 index 0000000..5ddb638 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AD822322-5271-1356-06C5-18F45693C82B.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_TEST +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES +ROWID + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AEE9DCA9-EE21-904C-B601-50ED50778C37.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AEE9DCA9-EE21-904C-B601-50ED50778C37.xml new file mode 100644 index 0000000..16e196b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AEE9DCA9-EE21-904C-B601-50ED50778C37.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ENTITIES_TYPES +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/B2A9FB37-F6BE-9BB7-D871-5AD42E8F82FA.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/B2A9FB37-F6BE-9BB7-D871-5AD42E8F82FA.xml new file mode 100644 index 0000000..7d94991 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/B2A9FB37-F6BE-9BB7-D871-5AD42E8F82FA.xml @@ -0,0 +1,31 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_MV_USER_SYS_ORG_PERMS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/BC61B9FD-52A0-9D62-65FE-5CDE110CB5EE.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/BC61B9FD-52A0-9D62-65FE-5CDE110CB5EE.xml new file mode 100644 index 0000000..4db8ea4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/BC61B9FD-52A0-9D62-65FE-5CDE110CB5EE.xml @@ -0,0 +1,45 @@ + + +walloar +2021-03-17 08:16:31 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +NO +FORCE + +false +false + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/D51799BE-9126-8245-1E8F-17C8220631EB.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/D51799BE-9126-8245-1E8F-17C8220631EB.xml new file mode 100644 index 0000000..2cf818e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/D51799BE-9126-8245-1E8F-17C8220631EB.xml @@ -0,0 +1,30 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_DELEGATION_STATUS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/DE7AB5D4-D197-8196-FC9A-21779D5D042E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/DE7AB5D4-D197-8196-FC9A-21779D5D042E.xml new file mode 100644 index 0000000..700733d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/DE7AB5D4-D197-8196-FC9A-21779D5D042E.xml @@ -0,0 +1,44 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_JOBS_HIST_COM +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/E6AE0B01-AE55-04FC-7665-EB3CF6C80ED1.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/E6AE0B01-AE55-04FC-7665-EB3CF6C80ED1.xml new file mode 100644 index 0000000..7020c8d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/E6AE0B01-AE55-04FC-7665-EB3CF6C80ED1.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_RECRUITMENT_PLACES +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/EC4A5566-BE6C-1068-B716-59B79DE5343E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/EC4A5566-BE6C-1068-B716-59B79DE5343E.xml new file mode 100644 index 0000000..f15ae33 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/EC4A5566-BE6C-1068-B716-59B79DE5343E.xml @@ -0,0 +1,21 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ASSIGNMENTS_HIST_COM +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/StProc/seg_0/730C3FE5-A4C5-2276-8E68-17A082C4A074.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/StProc/seg_0/730C3FE5-A4C5-2276-8E68-17A082C4A074.xml new file mode 100644 index 0000000..d099ee6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/StProc/seg_0/730C3FE5-A4C5-2276-8E68-17A082C4A074.xml @@ -0,0 +1,80 @@ + + +ERIGHTS-TEST +ERIGHTS +PR_REFRESH_OBJECTS +walloar +2021-03-02 08:05:04 UTC +eRights + +CREATE OR REPLACE PROCEDURE ERIGHTS.PR_REFRESH_OBJECTS AS + v_sql_compile varchar2(500); + v_SQLERRM varchar2(4000); + l_refresh_start_time number; + l_refresh_end_time number; +BEGIN + -- DBMS_MVIEW.REFRESH('CAL_MONTH_SALES_MV', method => '?', + -- atomic_refresh => FALSE, out_of_place => TRUE); + + for cur in (select * from t_refresh_objects o where o.system = 'EASREFN' order by o.priority) loop + + for cur_easrefn in (select app.easrefn_object_name, + e.is_refreshed easrefn_is_refreshed, + e.refresh_date easrefn_refresh_date + from t_app_easrefn_objects app, + t_refresh_objects@EASREFN.CC.CEC.EU.INT e + where app.easrefn_object_name = e.object_name + and app.app_object_name_id = cur.id + order by app.priority) loop + + if ((upper(cur.is_refreshed) = 'N' )or + (cur_easrefn.easrefn_is_refreshed = 'Y' and + cur.refresh_date < cur_easrefn.easrefn_refresh_date)) then + + begin + + v_sql_compile := 'ALTER MATERIALIZED VIEW ' || + cur.app_object_name || ' COMPILE'; + execute immediate v_sql_compile; + l_refresh_start_time := DBMS_UTILITY.get_time; + dbms_mview.refresh(cur.app_object_name, 'C'); + + --DBMS_MVIEW.REFRESH(cur.app_object_name, method => 'C', + -- atomic_refresh => FALSE, out_of_place => TRUE); + l_refresh_end_time := DBMS_UTILITY.get_time; + + update t_refresh_objects l + set l.is_refreshed = 'Y', + l.refresh_date = sysdate, + l.status = 'OK' + where l.app_object_name = cur.app_object_name; + + pkg_log.debug(cur.app_object_name || + ' has been refreshed succesfully.' || ' Elapsed time: '|| to_char((l_refresh_end_time - l_refresh_start_time)/100) ||'s', + 'pr_refresh_objects'); + + exception + when others then + v_sqlerrm := sqlerrm; + update t_refresh_objects l + set l.is_refreshed = 'n', + l.refresh_date = sysdate, + l.status = v_sqlerrm + where l.app_object_name = cur.app_object_name; + pkg_log.ERROR(cur.app_object_name || + ' has encountered error during refresh ' || + v_sqlerrm, + 'pr_refresh_objects'); + + end; + commit; + goto next_app_view; + end if; + end loop; + + <<next_app_view>> + null; + end loop; + +END PR_REFRESH_OBJECTS; + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/TSpace/seg_0/8F9A9085-AC19-5D96-C430-44185E59D6AF.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/TSpace/seg_0/8F9A9085-AC19-5D96-C430-44185E59D6AF.xml new file mode 100644 index 0000000..33aa24b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/TSpace/seg_0/8F9A9085-AC19-5D96-C430-44185E59D6AF.xml @@ -0,0 +1,31 @@ + + +ERIGHTS-DEVELOPMENT +ERIGHTS +walloar +2021-03-02 08:04:42 UTC +eRights +65536 +2147483645 +0 +LOCAL +65536 +NOCOMPRESS +NO +SMALLFILE +NO + + +ERIGHTS-DEVELOPMENT ++DATA/BAA140AB/BDCC5E8F37E2EB54E0535D2F850A60AE/DATAFILE/erights.1042.1067509579 +walloar +2021-06-09 07:13:25 UTC +eRights +ON ++DATA/BAA140AB/BDCC5E8F37E2EB54E0535D2F850A60AE/DATAFILE/erights.1042.1067509579 +5324800 +102400 +2560000 + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/01197962-C671-CBDB-2A12-9A0182777C73.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/01197962-C671-CBDB-2A12-9A0182777C73.xml new file mode 100644 index 0000000..204012c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/01197962-C671-CBDB-2A12-9A0182777C73.xml @@ -0,0 +1,183 @@ + + +walloar +2021-03-11 10:08:49 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + + + +walloar +2021-03-11 10:08:49 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml new file mode 100644 index 0000000..c1a642c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml @@ -0,0 +1,96 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights +sysdate + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:49 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +NOCACHE +8192 +STATE_MACHINE_CONTEXT +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +9D17945B-CC1F-9F61-6476-8BE5FB81624C +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/0BB44896-7365-55A2-3289-9522C627466B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/0BB44896-7365-55A2-3289-9522C627466B.xml new file mode 100644 index 0000000..6684203 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/0BB44896-7365-55A2-3289-9522C627466B.xml @@ -0,0 +1,82 @@ + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +YES +DISABLE +false +oracle_loader + + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A + + + + +walloar +2021-05-11 06:48:47 UTC +eRights + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/19B5777E-F422-5B95-B997-179834446A02.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/19B5777E-F422-5B95-B997-179834446A02.xml new file mode 100644 index 0000000..ac72a57 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/19B5777E-F422-5B95-B997-179834446A02.xml @@ -0,0 +1,95 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:54 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +NOCACHE +8192 +PREFERENCES +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +458625B2-0DCE-ED60-5F48-57AF9E3ACF0D +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml new file mode 100644 index 0000000..b5c7b28 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml @@ -0,0 +1,82 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +D392EDA6-7924-9637-616D-71DE42D9408F +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml new file mode 100644 index 0000000..b3aff2d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml @@ -0,0 +1,60 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +E4CE4776-9296-0E7E-31BD-7DCF61D20247 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/21442F1D-A788-0766-1383-1143D116D4BC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/21442F1D-A788-0766-1383-1143D116D4BC.xml new file mode 100644 index 0000000..35e2700 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/21442F1D-A788-0766-1383-1143D116D4BC.xml @@ -0,0 +1,103 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 09:59:34 UTC +eRights + + +walloar +2021-03-02 10:16:15 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 09:59:34 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 10:16:15 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 09:59:34 UTC +eRights +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +F3FEA6C6-573A-275A-1C16-6BCC470769A3 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml new file mode 100644 index 0000000..1de2ddd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml @@ -0,0 +1,89 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +7ED28DCA-FE31-3387-94F1-C2A51EA2EBB9 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml new file mode 100644 index 0000000..8c58b62 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml @@ -0,0 +1,54 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights +SYSDATE + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights +'N' + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml new file mode 100644 index 0000000..f9f2c82 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml @@ -0,0 +1,342 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +4D31BECC-FA7B-04BD-440D-1D3655369157 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml new file mode 100644 index 0000000..7a4ad27 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml @@ -0,0 +1,120 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +9D7F992B-36C8-32C7-5785-90CA6C7BD662 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml new file mode 100644 index 0000000..8e25ca7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml @@ -0,0 +1,67 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +14BB3BAD-1FBA-2E2B-1A43-C1057D3CAAFB +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml new file mode 100644 index 0000000..9a4477a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml @@ -0,0 +1,50 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +138086F9-4C79-3301-443F-6F498292A7BA +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml new file mode 100644 index 0000000..eccc258 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml @@ -0,0 +1,43 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +667A4934-197B-111A-FD8F-5A1BADAEE739 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml new file mode 100644 index 0000000..80fd742 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml @@ -0,0 +1,96 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml new file mode 100644 index 0000000..ee6657f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml @@ -0,0 +1,108 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 09:59:34 UTC +eRights + + +walloar +2021-03-02 10:16:15 UTC +eRights + + +walloar +2021-03-02 09:59:34 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 10:16:15 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 09:59:34 UTC +eRights +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +NOCACHE +8192 +BLOB_DATA +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +675E4583-1537-24AB-BEB2-5B42DF8ADB33 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml new file mode 100644 index 0000000..a76c148 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml @@ -0,0 +1,59 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +D51799BE-9126-8245-1E8F-17C8220631EB +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4999EFAE-DAB3-0CF8-7B71-772378B9B375.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4999EFAE-DAB3-0CF8-7B71-772378B9B375.xml new file mode 100644 index 0000000..7e7fc38 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4999EFAE-DAB3-0CF8-7B71-772378B9B375.xml @@ -0,0 +1,184 @@ + + +walloar +2021-03-17 08:16:31 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +YES +true +DISABLE +BC61B9FD-52A0-9D62-65FE-5CDE110CB5EE +false +oracle_loader + + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + +walloar +2021-03-17 08:16:31 UTC +eRights + + + + +walloar +2021-03-17 08:16:31 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml new file mode 100644 index 0000000..7d43854 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml @@ -0,0 +1,32 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml new file mode 100644 index 0000000..238c998 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml @@ -0,0 +1,72 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +DEDAB09F-EEA4-6FEB-4668-5D002FFDB6A1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml new file mode 100644 index 0000000..8024278 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml @@ -0,0 +1,170 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +478DD3C2-32A3-182F-8E02-42B2BCCD9B30 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml new file mode 100644 index 0000000..2dc6710 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml @@ -0,0 +1,65 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:49 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +E660C4ED-7236-87FB-30E7-12376CCD31E8 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml new file mode 100644 index 0000000..8adb9e8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml @@ -0,0 +1,72 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +DAA7CCD4-8237-6394-3CC7-DF804E467BF2 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml new file mode 100644 index 0000000..1752539 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml @@ -0,0 +1,264 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +598EE7E1-BB1B-4267-250D-6B812BECB16F +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml new file mode 100644 index 0000000..540586a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml @@ -0,0 +1,90 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +84171DD1-B63E-D76E-2EDE-4126C95EEE3E +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml new file mode 100644 index 0000000..d102b80 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml @@ -0,0 +1,50 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +43C3383A-0998-CDFE-5650-F36853012930 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml new file mode 100644 index 0000000..31d776c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml @@ -0,0 +1,72 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +22CB3CCF-0344-9BAF-A394-D187A212F0B3 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml new file mode 100644 index 0000000..aa91537 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml @@ -0,0 +1,119 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +84CE00D7-7A30-5596-1E0D-3CAFF16AE49C +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml new file mode 100644 index 0000000..293ceb1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml @@ -0,0 +1,107 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +73195FED-F90E-977E-0B4D-960670800B56 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml new file mode 100644 index 0000000..03cee62 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml @@ -0,0 +1,148 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +DE7AB5D4-D197-8196-FC9A-21779D5D042E +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml new file mode 100644 index 0000000..4dc899c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml @@ -0,0 +1,83 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +AEE9DCA9-EE21-904C-B601-50ED50778C37 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml new file mode 100644 index 0000000..21a46f2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml @@ -0,0 +1,299 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +75701A14-244D-95C1-3DA2-A568DA652435 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml new file mode 100644 index 0000000..737b1d2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml @@ -0,0 +1,258 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +6A8630FC-5CD1-A380-2B14-58ABEF2FE83A +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml new file mode 100644 index 0000000..7b95429 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml @@ -0,0 +1,65 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +BAC2A730-C1D4-3AE0-3284-366628AB4EEF +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml new file mode 100644 index 0000000..8e7ec94 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml @@ -0,0 +1,67 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +6A0A8E53-4154-3419-1942-8A2662CB0D7D +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml new file mode 100644 index 0000000..9a0444c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml @@ -0,0 +1,63 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +B2A9FB37-F6BE-9BB7-D871-5AD42E8F82FA +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml new file mode 100644 index 0000000..d3ef62c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml @@ -0,0 +1,289 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +3C73C3C8-5CD8-A3FE-5B0B-4EC55EA2B408 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml new file mode 100644 index 0000000..78fb524 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml @@ -0,0 +1,121 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +NOCACHE +8192 +JOB_DATA +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +77BA1493-B272-C71D-9769-5EE28E509CE1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml new file mode 100644 index 0000000..0aa6447 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml @@ -0,0 +1,60 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +F050672A-FFDD-B268-8ABE-7E82E06A8B3D +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7B13FE04-19F2-BA2C-C873-CAF22AEC0F1F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7B13FE04-19F2-BA2C-C873-CAF22AEC0F1F.xml new file mode 100644 index 0000000..ad4bae1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7B13FE04-19F2-BA2C-C873-CAF22AEC0F1F.xml @@ -0,0 +1,50 @@ + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +YES +DISABLE +false +oracle_loader + + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml new file mode 100644 index 0000000..92c5b10 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml @@ -0,0 +1,230 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml new file mode 100644 index 0000000..7afea9a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml @@ -0,0 +1,121 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:09:27 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights +'N' + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:11:12 UTC +eRights +'N' + + +walloar +2021-03-02 08:04:47 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:10:57 UTC +eRights + + +tapiafo +2021-03-08 13:10:39 UTC +eRights + + +tapiafo +2021-03-08 13:10:26 UTC +eRights + + +walloar +2021-04-26 13:27:39 UTC +eRights + + +tapiafo +2021-03-08 13:10:10 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +tapiafo +2021-03-08 13:29:01 UTC +eRights + + + + +tapiafo +2021-03-08 13:24:03 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml new file mode 100644 index 0000000..05fc6d7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml @@ -0,0 +1,119 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +91EB52F5-1395-C9BD-386D-CAC24DDEDF9B +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml new file mode 100644 index 0000000..2811a96 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml @@ -0,0 +1,143 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 09:59:34 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 09:59:34 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 10:16:15 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 10:16:15 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 09:59:34 UTC +eRights +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +152B3954-0549-E328-7999-A789E12E0923 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml new file mode 100644 index 0000000..3282927 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml @@ -0,0 +1,137 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +76F5AE5B-184E-E68B-5AFF-65178FE1C6FD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml new file mode 100644 index 0000000..d383fe5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml @@ -0,0 +1,88 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights +'N' + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml new file mode 100644 index 0000000..3c3c9cf --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml @@ -0,0 +1,80 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +084AD1F4-B737-F380-5108-BB870A7FFACE +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml new file mode 100644 index 0000000..70898f4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml @@ -0,0 +1,95 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +AA9661D0-8A85-A206-9D93-17DB00309FA9 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml new file mode 100644 index 0000000..40c767b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml @@ -0,0 +1,175 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +9E854E48-5D75-C56C-B8AD-AD867F6FD6EA +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9F8B71CD-271E-D6DE-3E71-2F2F28DF6A55.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9F8B71CD-271E-D6DE-3E71-2F2F28DF6A55.xml new file mode 100644 index 0000000..75199d8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9F8B71CD-271E-D6DE-3E71-2F2F28DF6A55.xml @@ -0,0 +1,83 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8A460994-7446-827E-9307-703C20EF8E1E +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml new file mode 100644 index 0000000..3feb9c2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml @@ -0,0 +1,137 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F98C450-E751-A83B-F932-78C506CC1BE6 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml new file mode 100644 index 0000000..e174259 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml @@ -0,0 +1,153 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +64E422AF-16EE-4279-0802-0F4FED64BC92 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml new file mode 100644 index 0000000..e5de28d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml @@ -0,0 +1,70 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +NOCACHE +8192 +CALENDAR +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +99A68A9D-0E85-6491-A419-63776A2AFFFB +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml new file mode 100644 index 0000000..de56013 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml @@ -0,0 +1,79 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +EC4A5566-BE6C-1068-B716-59B79DE5343E +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml new file mode 100644 index 0000000..703d45e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml @@ -0,0 +1,82 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +67FA72D4-F428-21BB-8972-9EEAF3C3F80B +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/B55392AB-563F-D199-B9AB-EE5BC9FC5638.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/B55392AB-563F-D199-B9AB-EE5BC9FC5638.xml new file mode 100644 index 0000000..d541a00 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/B55392AB-563F-D199-B9AB-EE5BC9FC5638.xml @@ -0,0 +1,37 @@ + + +walloar +2021-03-25 11:04:18 UTC +eRights +YES +DISABLE +false +oracle_loader + + + +walloar +2021-03-25 11:05:16 UTC +eRights + + +walloar +2021-03-25 11:05:16 UTC +eRights + + +walloar +2021-03-25 11:08:43 UTC +eRights +PRIV + + + + +walloar +2021-03-25 11:08:43 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/B792575D-ED90-C316-85A8-FB178ED60508.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/B792575D-ED90-C316-85A8-FB178ED60508.xml new file mode 100644 index 0000000..10ab707 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/B792575D-ED90-C316-85A8-FB178ED60508.xml @@ -0,0 +1,83 @@ + + +walloar +2021-04-20 14:07:17 UTC +eRights +YES +DISABLE +false +oracle_loader + + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + + + +walloar +2021-04-20 14:11:33 UTC +eRights + + +walloar +2021-04-20 14:12:59 UTC +eRights + + + + +walloar +2021-04-20 14:10:41 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml new file mode 100644 index 0000000..c5575aa --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml @@ -0,0 +1,65 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights +SYSDATE + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +C9B1CA45-0569-CADA-2952-9A1A3EC7C78D +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml new file mode 100644 index 0000000..99e1b03 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml @@ -0,0 +1,98 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +237281E2-FFF6-847F-6AB6-2548E956CA58 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +FECACA26-68B6-E452-61B0-195E6A666DEA +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml new file mode 100644 index 0000000..2bcdd7a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml @@ -0,0 +1,62 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml new file mode 100644 index 0000000..f0ad89d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml @@ -0,0 +1,65 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +28B7CBEE-3770-36FE-9BB2-4DA627324E4C +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml new file mode 100644 index 0000000..4b2627f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml @@ -0,0 +1,64 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +6213FC12-F38A-D2E1-3B8B-4FC54BE9DB92 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml new file mode 100644 index 0000000..800e401 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml @@ -0,0 +1,85 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +BD56D81B-2550-7F11-1B90-74391FD97881 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml new file mode 100644 index 0000000..3abde70 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml @@ -0,0 +1,55 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +68E87693-08C7-6BDF-9112-E99FA65A3B40 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml new file mode 100644 index 0000000..fd940f3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml @@ -0,0 +1,100 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +9F01CDBA-F98A-CCDD-533A-A33F6CE02631 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml new file mode 100644 index 0000000..decaa4a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml @@ -0,0 +1,154 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +94E79362-3379-F273-4E36-75472F0906B8 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml new file mode 100644 index 0000000..1c5b2f7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml @@ -0,0 +1,95 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +NOCACHE +8192 +BODY +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +F38D615C-1A84-AD41-17E9-DF621E372964 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml new file mode 100644 index 0000000..4179d24 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml @@ -0,0 +1,238 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +NOCACHE +8192 +JOB_DATA +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +74B7BAE5-5BB4-BDA0-E9E1-1133AF7DE9A3 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml new file mode 100644 index 0000000..f2735e5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml @@ -0,0 +1,98 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 09:59:34 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 10:16:15 UTC +eRights + + +walloar +2021-03-02 09:59:34 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 10:16:15 UTC +eRights + + + + +walloar +2021-03-02 09:59:34 UTC +eRights +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +A8BD4BEF-AA5A-4BFA-3826-FF5BC2E9091F +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml new file mode 100644 index 0000000..875f1c7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml @@ -0,0 +1,85 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +8C7917BC-7A31-B73B-FB9A-4918AD00E08C +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/20DB5A12-2FFB-0087-DA16-042C48231E7E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/20DB5A12-2FFB-0087-DA16-042C48231E7E.xml new file mode 100644 index 0000000..25f55e4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/20DB5A12-2FFB-0087-DA16-042C48231E7E.xml @@ -0,0 +1,47 @@ + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/256F6004-E1B6-FD26-9F27-95B58D979301.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/256F6004-E1B6-FD26-9F27-95B58D979301.xml new file mode 100644 index 0000000..074f61b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/256F6004-E1B6-FD26-9F27-95B58D979301.xml @@ -0,0 +1,86 @@ + + +tapiafo +2021-03-08 11:47:37 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:05:10 UTC +eRights + + +tapiafo +2021-03-08 11:47:37 UTC +eRights + + +tapiafo +2021-03-08 11:47:37 UTC +eRights + + +tapiafo +2021-03-08 11:47:37 UTC +eRights +'N' + + +tapiafo +2021-03-08 11:47:37 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:04:57 UTC +eRights + + +tapiafo +2021-03-08 13:04:32 UTC +eRights + + +tapiafo +2021-03-08 13:04:17 UTC +eRights + + +tapiafo +2021-03-08 14:48:42 UTC +eRights + + +tapiafo +2021-03-08 11:47:37 UTC +eRights + + +tapiafo +2021-03-08 13:03:35 UTC +eRights + + + + +tapiafo +2021-03-08 13:08:17 UTC +eRights + + + + +tapiafo +2021-03-08 13:07:10 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/4CB74767-3856-9458-45EB-D45BEC46CD86.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/4CB74767-3856-9458-45EB-D45BEC46CD86.xml new file mode 100644 index 0000000..903510c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/4CB74767-3856-9458-45EB-D45BEC46CD86.xml @@ -0,0 +1,61 @@ + + +tapiafo +2021-03-08 11:26:23 UTC +eRights +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 11:44:53 UTC +eRights + + +tapiafo +2021-03-08 11:44:53 UTC +eRights + + +tapiafo +2021-03-08 11:44:53 UTC +eRights + + +tapiafo +2021-03-08 11:44:53 UTC +eRights + + +tapiafo +2021-03-08 11:44:53 UTC +eRights + + +tapiafo +2021-03-08 11:44:53 UTC +eRights + + +tapiafo +2021-03-08 11:44:53 UTC +eRights + + +tapiafo +2021-03-08 11:44:53 UTC +eRights + + + + +tapiafo +2021-03-08 11:44:53 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml new file mode 100644 index 0000000..96e79ff --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml @@ -0,0 +1,44 @@ + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +09F46DD0-1532-2503-78FF-D279FEB4D548 +false +oracle_loader + + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/71F3D6E7-C4F0-CB7E-C63E-AF6A800513F8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/71F3D6E7-C4F0-CB7E-C63E-AF6A800513F8.xml new file mode 100644 index 0000000..91ae33a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/71F3D6E7-C4F0-CB7E-C63E-AF6A800513F8.xml @@ -0,0 +1,61 @@ + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights +sysdate + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml new file mode 100644 index 0000000..2bad5d4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml @@ -0,0 +1,165 @@ + + +walloar +2021-05-11 06:48:47 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-06-09 07:13:25 UTC +eRights +'EUR' + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-06-09 07:13:25 UTC +eRights +1 + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-06-09 07:13:25 UTC +eRights +sysdate + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF +E08C3509-8EEB-FBA4-EB88-03F75E7D3726 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/B702C10C-3481-C7D5-B5D0-76A3CC83D977.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/B702C10C-3481-C7D5-B5D0-76A3CC83D977.xml new file mode 100644 index 0000000..ff33840 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/B702C10C-3481-C7D5-B5D0-76A3CC83D977.xml @@ -0,0 +1,47 @@ + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/BA98FDD9-EBA1-75B7-B0B8-07331547FFD9.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/BA98FDD9-EBA1-75B7-B0B8-07331547FFD9.xml new file mode 100644 index 0000000..f100482 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/BA98FDD9-EBA1-75B7-B0B8-07331547FFD9.xml @@ -0,0 +1,47 @@ + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/CD6BE7A4-204E-62FE-7BA4-C9C5440782F7.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/CD6BE7A4-204E-62FE-7BA4-C9C5440782F7.xml new file mode 100644 index 0000000..d62c533 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/CD6BE7A4-204E-62FE-7BA4-C9C5440782F7.xml @@ -0,0 +1,54 @@ + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +YES +true +DISABLE +9D36BB70-CD6A-8429-66D9-6A6893B18CBE +false +oracle_loader + + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml new file mode 100644 index 0000000..2349a66 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml @@ -0,0 +1,88 @@ + + +tapiafo +2021-03-08 13:12:31 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A + + + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +tapiafo +2021-03-08 13:24:14 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/E5858C90-56D5-FBA1-B0DE-9A80F3AFBC32.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/E5858C90-56D5-FBA1-B0DE-9A80F3AFBC32.xml new file mode 100644 index 0000000..aef07ea --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/E5858C90-56D5-FBA1-B0DE-9A80F3AFBC32.xml @@ -0,0 +1,68 @@ + + +walloar +2021-04-20 13:59:18 UTC +eRights +YES +DISABLE +false +oracle_loader + + + +walloar +2021-04-20 14:02:38 UTC +eRights + + +walloar +2021-04-20 14:02:38 UTC +eRights + + +walloar +2021-04-20 14:02:38 UTC +eRights + + +walloar +2021-04-20 14:02:38 UTC +eRights + + +walloar +2021-04-20 14:03:31 UTC +eRights + + +walloar +2021-04-20 14:03:31 UTC +eRights + + +walloar +2021-04-20 14:02:38 UTC +eRights + + +walloar +2021-04-20 14:02:38 UTC +eRights + + + + +walloar +2021-04-20 14:17:11 UTC +eRights + + + + +walloar +2021-04-20 14:02:38 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml new file mode 100644 index 0000000..1209fe4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml @@ -0,0 +1,83 @@ + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A + + + + +tapiafo +2021-03-08 15:03:11 UTC +eRights + + + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/EA9E31FF-E810-F570-9354-8B2CA9473801.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/EA9E31FF-E810-F570-9354-8B2CA9473801.xml new file mode 100644 index 0000000..ea99f07 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/EA9E31FF-E810-F570-9354-8B2CA9473801.xml @@ -0,0 +1,49 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F0656E91-B102-E910-93C9-3FADF5583284.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F0656E91-B102-E910-93C9-3FADF5583284.xml new file mode 100644 index 0000000..9bcc111 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F0656E91-B102-E910-93C9-3FADF5583284.xml @@ -0,0 +1,75 @@ + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml new file mode 100644 index 0000000..75637c7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml @@ -0,0 +1,70 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +1C15B447-9620-D764-0450-8481DDD84044 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F28AEFDE-0804-3C83-F214-6330BE84607B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F28AEFDE-0804-3C83-F214-6330BE84607B.xml new file mode 100644 index 0000000..b18665f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F28AEFDE-0804-3C83-F214-6330BE84607B.xml @@ -0,0 +1,115 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +NOCACHE +8192 +BODY +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +82FB7C2B-FBB4-3368-B1D4-24546DAA9DFC +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F3764DB4-0649-A94A-7497-92FDAEA69888.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F3764DB4-0649-A94A-7497-92FDAEA69888.xml new file mode 100644 index 0000000..c453333 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F3764DB4-0649-A94A-7497-92FDAEA69888.xml @@ -0,0 +1,88 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +94AF4698-DE71-5271-9795-EA3A809966C2 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +812D15CA-03EC-AB51-BD8F-597A374FBBF4 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F6108759-A9AE-8679-03BA-D124DEC368E8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F6108759-A9AE-8679-03BA-D124DEC368E8.xml new file mode 100644 index 0000000..1ea6314 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F6108759-A9AE-8679-03BA-D124DEC368E8.xml @@ -0,0 +1,98 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights +'Y' + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +90C0C849-CB1C-309F-13E4-C975AE5C3AA4 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F7550F97-470F-3E11-C6EE-445518E195D2.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F7550F97-470F-3E11-C6EE-445518E195D2.xml new file mode 100644 index 0000000..987e48e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F7550F97-470F-3E11-C6EE-445518E195D2.xml @@ -0,0 +1,74 @@ + + +walloar +2021-04-20 14:14:07 UTC +eRights +YES +DISABLE +false +oracle_loader + + + +walloar +2021-04-20 14:16:49 UTC +eRights + + +walloar +2021-04-20 14:16:49 UTC +eRights + + +walloar +2021-04-20 14:16:49 UTC +eRights + + +walloar +2021-04-20 14:16:49 UTC +eRights + + +walloar +2021-04-20 14:16:49 UTC +eRights + + +walloar +2021-04-20 14:16:49 UTC +eRights + + +walloar +2021-04-20 14:16:49 UTC +eRights +N + + +walloar +2021-04-20 14:16:49 UTC +eRights + + +walloar +2021-04-20 14:16:49 UTC +eRights + + + + +walloar +2021-04-20 14:17:49 UTC +eRights + + + + +walloar +2021-04-20 14:16:49 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml new file mode 100644 index 0000000..e79f23f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml @@ -0,0 +1,118 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights +'Y' + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +0A6C4ABC-18B6-BE8B-765D-CBDFAED4F4A2 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/FF74A656-1D74-CA01-A02B-65A0579DD208.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/FF74A656-1D74-CA01-A02B-65A0579DD208.xml new file mode 100644 index 0000000..152c3ee --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/FF74A656-1D74-CA01-A02B-65A0579DD208.xml @@ -0,0 +1,288 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 10:16:41 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-03 12:10:03 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +901D2539-B17F-73A0-B4B8-FDE568F24CF0 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +67CB9B87-2E77-7A40-705D-06C21CBEC1C0 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/TmpTSpace/seg_0/9F2F534F-DEBB-2196-2413-F708E2E40B16.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/TmpTSpace/seg_0/9F2F534F-DEBB-2196-2413-F708E2E40B16.xml new file mode 100644 index 0000000..09dc764 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/TmpTSpace/seg_0/9F2F534F-DEBB-2196-2413-F708E2E40B16.xml @@ -0,0 +1,24 @@ + + +ERIGHTS-TEST +TEMP +walloar +2021-03-02 08:04:42 UTC +eRights +1024 +SMALLFILE + + +ERIGHTS-TEST ++DATA2/BAA111AB/98662A4FA9BEF4B4E0531F2F850A7B73/TEMPFILE/temp.2264.1063097851 +walloar +2021-03-02 08:04:42 UTC +eRights +ON ++DATA2/BAA111AB/98662A4FA9BEF4B4E0531F2F850A7B73/TEMPFILE/temp.2264.1063097851 +3072000 +51200 +102400 + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/UTSpace/seg_0/93DEA34C-2A30-CCB2-B7D6-AD5135A6D332.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/UTSpace/seg_0/93DEA34C-2A30-CCB2-B7D6-AD5135A6D332.xml new file mode 100644 index 0000000..2527f5a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/UTSpace/seg_0/93DEA34C-2A30-CCB2-B7D6-AD5135A6D332.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +UNDOTBS1 +walloar +2021-03-02 08:04:42 UTC +eRights +SMALLFILE + + +ERIGHTS-TEST ++DATA2/BAA111AB/98662A4FA9BEF4B4E0531F2F850A7B73/DATAFILE/undotbs1.2257.1063097829 +walloar +2021-03-02 08:04:43 UTC +eRights +ON ++DATA2/BAA111AB/98662A4FA9BEF4B4E0531F2F850A7B73/DATAFILE/undotbs1.2257.1063097829 +30720 +21749760 + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/93D34AFD-73F1-CEF8-BE48-029A742C8CBF.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/93D34AFD-73F1-CEF8-BE48-029A742C8CBF.xml new file mode 100644 index 0000000..0cd7033 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/93D34AFD-73F1-CEF8-BE48-029A742C8CBF.xml @@ -0,0 +1,13 @@ + + +ERIGHTS-DEVELOPMENT +ERIGHTS +walloar +2021-03-02 08:04:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF +CREATE JOB, DEBUG CONNECT SESSION, CREATE OPERATOR, CREATE DATABASE LINK, CREATE SEQUENCE, ALTER ANY SQL PROFILE, CREATE DIMENSION, QUERY REWRITE, CREATE INDEXTYPE, CREATE TYPE, CREATE SYNONYM, ADMINISTER SQL MANAGEMENT OBJECT, MANAGE SCHEDULER, CREATE VIEW, CREATE ROLE, CREATE CUBE DIMENSION, CREATE ANY SQL PROFILE, DROP ANY SQL PROFILE, DEBUG ANY PROCEDURE, ON COMMIT REFRESH, CREATE TRIGGER, CREATE PROCEDURE, CREATE TABLE, CREATE CLUSTER, CREATE CUBE, ADMINISTER SQL TUNING SET, ADVISOR, CREATE ANY CONTEXT, CREATE MATERIALIZED VIEW, CREATE SESSION +DEFAULT +9F2F534F-DEBB-2196-2413-F708E2E40B16 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/MDSYS.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/MDSYS.xml new file mode 100644 index 0000000..5b19be3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/MDSYS.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +MDSYS +walloar +2021-03-02 08:04:42 UTC +eRights +9557C744-26D8-BE94-83D6-79D37E0F2FD4 +true +true +INHERIT ANY PRIVILEGES, MANAGE SCHEDULER, CREATE JOB, CREATE SEQUENCE, DROP ANY TRIGGER, DROP PUBLIC SYNONYM, UNLIMITED TABLESPACE, FLASHBACK ANY TABLE, CREATE PROCEDURE, CREATE PUBLIC SYNONYM, CREATE VIEW, CREATE INDEXTYPE, CREATE LIBRARY, CREATE ANY TRIGGER, EXEMPT ACCESS POLICY, CREATE OPERATOR, CREATE TYPE, CREATE TRIGGER, DELETE ANY TABLE, ADMINISTER DATABASE TRIGGER, CREATE ANY SEQUENCE, CREATE TABLE, CREATE SESSION +DEFAULT +9F2F534F-DEBB-2196-2413-F708E2E40B16 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/PUBLIC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/PUBLIC.xml new file mode 100644 index 0000000..4b69fef --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/PUBLIC.xml @@ -0,0 +1,8 @@ + + +walloar +2021-03-02 08:04:42 UTC +eRights +true +true + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml new file mode 100644 index 0000000..d08d5db --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml new file mode 100644 index 0000000..4994942 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml new file mode 100644 index 0000000..2999df9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml new file mode 100644 index 0000000..fcc749c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml new file mode 100644 index 0000000..50e9b70 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7.xml new file mode 100644 index 0000000..8bb87f7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7.xml @@ -0,0 +1,7 @@ + + +walloar +2021-05-12 10:22:34 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml new file mode 100644 index 0000000..cab18d4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml new file mode 100644 index 0000000..875d1e6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/D21245B2-8F64-2469-F8D7-25F4597156F2.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/D21245B2-8F64-2469-F8D7-25F4597156F2.xml new file mode 100644 index 0000000..f27a5a5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/D21245B2-8F64-2469-F8D7-25F4597156F2.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-17 08:07:49 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml new file mode 100644 index 0000000..d4a7a5a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml new file mode 100644 index 0000000..2303220 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/FE2DF588-2615-8CC0-5B56-6BAF79B680ED.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/FE2DF588-2615-8CC0-5B56-6BAF79B680ED.xml new file mode 100644 index 0000000..0c6b6b4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/FE2DF588-2615-8CC0-5B56-6BAF79B680ED.xml @@ -0,0 +1,6 @@ + + +walloar +2021-03-25 11:25:25 UTC +eRights + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml new file mode 100644 index 0000000..b4ace57 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/9557C744-26D8-BE94-83D6-79D37E0F2FD4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/9557C744-26D8-BE94-83D6-79D37E0F2FD4.xml new file mode 100644 index 0000000..2e41369 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/9557C744-26D8-BE94-83D6-79D37E0F2FD4.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-17 08:12:33 UTC +eRights +9A630A5E-C589-40EE-0257-1F2BFC827F5F + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/BDF5487C-1A21-3DDA-2741-BA73BF623D2A.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/BDF5487C-1A21-3DDA-2741-BA73BF623D2A.xml new file mode 100644 index 0000000..8f6fda4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/BDF5487C-1A21-3DDA-2741-BA73BF623D2A.xml @@ -0,0 +1,6 @@ + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1.xml new file mode 100644 index 0000000..9e9827e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1.xml @@ -0,0 +1,6 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/313A2218-E5E9-61FA-44DF-9A2E4BE51966.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/313A2218-E5E9-61FA-44DF-9A2E4BE51966.xml new file mode 100644 index 0000000..b413d0f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/313A2218-E5E9-61FA-44DF-9A2E4BE51966.xml @@ -0,0 +1,922 @@ + + +walloar +walloar +2021-03-02 08:04:42 UTC +false +true +false +false +false +false +false +-1 +false +1 + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-2472729 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-2472729 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-2472729 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/3D5EB02E-D646-B778-C8FC-047CBECB135A.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/3D5EB02E-D646-B778-C8FC-047CBECB135A.xml new file mode 100644 index 0000000..72dc3e7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/3D5EB02E-D646-B778-C8FC-047CBECB135A.xml @@ -0,0 +1,30 @@ + + +walloar +walloar +2021-03-02 08:33:43 UTC +false +true +false +false +false +false +false +-1 +false +1 + + +false + + + +false + + + +false + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/3FCCBB9D-FB42-0201-3B1B-9287CA76F8E3.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/3FCCBB9D-FB42-0201-3B1B-9287CA76F8E3.xml new file mode 100644 index 0000000..1069a88 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/3FCCBB9D-FB42-0201-3B1B-9287CA76F8E3.xml @@ -0,0 +1,109 @@ + + +walloar +walloar +2021-03-02 08:36:33 UTC +false +true +false +false +false +false +false +-1 +false +1 + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/EC3CEA61-5465-DA23-FD0F-17321EB85234.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/EC3CEA61-5465-DA23-FD0F-17321EB85234.xml new file mode 100644 index 0000000..5b3de95 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/EC3CEA61-5465-DA23-FD0F-17321EB85234.xml @@ -0,0 +1,199 @@ + + +walloar +walloar +2021-03-02 08:38:01 UTC +false +true +false +false +false +false +false +-1 +false +1 + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml new file mode 100644 index 0000000..98bf5ef --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml @@ -0,0 +1,155 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_SM_CURRENT_STATES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_SM_CURRENT_STATES +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +ANK_SM_CURRENT_STATES +MACHINE_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +64 BYTE +64 BYTE,, +false + + +ERIGHTS-TEST +ANK_SM_CURRENT_STATES +DEPARTURE_STATE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +64 BYTE +64 BYTE,, +false + + +ERIGHTS-TEST +ANK_SM_CURRENT_STATES +ARRIVAL_STATE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +64 BYTE +64 BYTE,, +false + + +ERIGHTS-TEST +ANK_SM_CURRENT_STATES +EVENT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +64 BYTE +64 BYTE,, +false + + +ERIGHTS-TEST +ANK_SM_CURRENT_STATES +STATE_MACHINE_CONTEXT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT029 +4000 +4000,, +false + + +ERIGHTS-TEST +ANK_SM_CURRENT_STATES +SAVED_BY +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_SM_CURRENT_STATES +SAVED_AT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +sysdate +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_SM_CURRENT_STATES +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_SM_CURRENT_STATES +walloar +2021-03-02 08:04:49 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml new file mode 100644 index 0000000..489d0d4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml @@ -0,0 +1,152 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_SM_PREVIOUS_STATES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_SM_PREVIOUS_STATES +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_SM_PREVIOUS_STATES +CURRENT_STATE_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + + + + +ERIGHTS-TEST +ANK_SM_PREVIOUS_STATES +DEPARTURE_STATE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +64 BYTE +64 BYTE,, +false + + +ERIGHTS-TEST +ANK_SM_PREVIOUS_STATES +ARRIVAL_STATE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +64 BYTE +64 BYTE,, +false + + +ERIGHTS-TEST +ANK_SM_PREVIOUS_STATES +EVENT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +64 BYTE +64 BYTE,, +false + + +ERIGHTS-TEST +ANK_SM_PREVIOUS_STATES +SAVED_BY +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_SM_PREVIOUS_STATES +SAVED_AT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_SM_PREVIOUS_STATES +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_SM_PREVIOUS_STATES +walloar +2021-03-02 08:04:50 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/256F6004-E1B6-FD26-9F27-95B58D979301.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/256F6004-E1B6-FD26-9F27-95B58D979301.xml new file mode 100644 index 0000000..f5c0856 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/256F6004-E1B6-FD26-9F27-95B58D979301.xml @@ -0,0 +1,245 @@ + + +ERIGHTS-TEST +ERIGHTS +REQUEST_PERSONS +tapiafo +2021-03-08 11:47:37 UTC +eRights +declaration_personv1 +false +true +true + + +tapiafo +2021-03-08 11:47:37 UTC +eRights +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 11:47:37 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 11:47:37 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +tapiafo +2021-03-08 11:47:37 UTC +eRights +true +false +1 +LOGDT025 +1 CHAR +'N' +1 CHAR,, +false + + +tapiafo +2021-03-08 11:47:37 UTC +eRights +true +false +1 +LOGDT025 +1 CHAR +'N' +1 CHAR,, +false + + +tapiafo +2021-03-08 13:03:35 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 13:04:17 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 13:04:32 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 13:04:57 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +tapiafo +2021-03-08 13:05:10 UTC +eRights +true +false +1 +LOGDT025 +1 CHAR +1 CHAR,, +false + + +tapiafo +2021-03-08 14:48:42 UTC +eRights +true +false +1 +LOGDT025 +1 CHAR +1 CHAR,, +false + + +walloar +2021-03-09 10:25:35 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-09 10:25:35 UTC +eRights +false +1 +LOGDT015 +,, +false + + +walloar +2021-03-09 10:25:35 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-09 10:25:35 UTC +eRights +false +1 +LOGDT015 +,, +false + + +walloar +2021-03-19 08:30:01 UTC +eRights +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +tapiafo +2021-04-23 16:47:21 UTC +eRights +true +false +1 +LOGDT024 +1000 +1000,, +false + + + + +tapiafo +2021-03-08 13:07:10 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_REQUEST_PERSON +walloar +2021-04-26 13:29:43 UTC +eRights +1B149110-08F2-10DD-64BB-7FB0CA2B49FC +Unique Plain Index +false + + + + + +tapiafo +2021-03-08 13:08:17 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml new file mode 100644 index 0000000..f2e2b21 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml @@ -0,0 +1,337 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_COUNTRIES +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +MV_COUNTRIES +COUNTRY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +CD_ISO_A2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +8 BYTE +8 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +CD_ISO_N3 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +NAME_EN +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +800 BYTE +800 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +LONG_NAME_EN +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +800 BYTE +800 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +NAME_FR +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +800 BYTE +800 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +LONG_NAME_FR +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +800 BYTE +800 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +EU_STATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +CAPITAL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +240 BYTE +240 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +COUNTRY_PHONE_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +CONTINENT_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +8 BYTE +8 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +CURRENCY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +CURRENCY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +240 BYTE +240 BYTE,, +false + + + + +true +ERIGHTS +MV_COUNTRIES + + +COUNTRY_CODE +ERIGHTS +MV_COUNTRIES + + +CD_ISO_A2 +ERIGHTS +MV_COUNTRIES + + +CD_ISO_N3 +ERIGHTS +MV_COUNTRIES + + +NAME_EN +ERIGHTS +MV_COUNTRIES + + +LONG_NAME_EN +ERIGHTS +MV_COUNTRIES + + +NAME_FR +ERIGHTS +MV_COUNTRIES + + +LONG_NAME_FR +ERIGHTS +MV_COUNTRIES + + +EU_STATE +ERIGHTS +MV_COUNTRIES + + +CAPITAL +ERIGHTS +MV_COUNTRIES + + +COUNTRY_PHONE_CODE +ERIGHTS +MV_COUNTRIES + + +CONTINENT_CODE +ERIGHTS +MV_COUNTRIES + + +STATUS +ERIGHTS +MV_COUNTRIES + + +CURRENCY_CODE +ERIGHTS +MV_COUNTRIES + + +CURRENCY_NAME +ERIGHTS +MV_COUNTRIES + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml new file mode 100644 index 0000000..f4c89a4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml @@ -0,0 +1,1322 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +LANGUAGE_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +9 BYTE +9 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JCX_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +INS_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +MAIN_ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +ORG_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1200 BYTE +1200 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +MAIN_ORG_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1689 BYTE +1689 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +RESPONSIBLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +HEAD_OF_ENTITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +CITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +COUNTRY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +LOCATION_COUNTRY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +LOCATION_CITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +LOCATION_COUNTRY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +LOCATION_CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +SY2_JOB_STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +24 BYTE +24 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +SENSITIVE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +CGR_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +DATE_CREAT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +USER_CREAT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +90 BYTE +90 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +DATE_MODIF +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +USER_MODIF +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +90 BYTE +90 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_TITLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_NAME_DIRECTORY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_PURPOSE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +LOCAL_JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +FUNCTION_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +FUNCTION_TYPE_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +FUNCTION_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +BUDGET_LINE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +BUDGET_LINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +BUDGET_LINE_DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +GRADE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +GRADE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +PERSONNEL_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +PERSONNEL_TYPE_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +PERSONNEL_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +DG_RESPONSABLE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +DG_RESPONSABLE_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +DG_RESPONSABLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_STATUS_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_STATUS_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +TITLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +AUTHORIZATION_PUBLISH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +SY2_COMMENTS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +COMMENTS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +CREATION_USER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +MODIFICATION_USER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +EDELHRM_BUDGET_LINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +900 BYTE +900 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +MULTI_DG +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_HRP_JOB_DET_JOB_ID +walloar +2021-04-26 13:29:43 UTC +eRights +2517BCD6-3AA5-F84C-9D81-B3ADA4330A2C +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_HRP_JOB_DET_MAIN_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +B555329B-A922-73DA-43A8-C83D4DDE920C +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_HRP_JOB_DET_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +E0AE8DD1-375D-AC00-B26D-CED4345982B7 +false + + + + + + + +true +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +LANGUAGE_CODE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JCX_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +INS_CD +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +ORG_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +MAIN_ORG_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +ORG_NAME +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +MAIN_ORG_NAME +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +START_DATE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +END_DATE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +RESPONSIBLE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +HEAD_OF_ENTITY +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +CITY_CODE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +CITY_NAME +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +COUNTRY_NAME +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +LOCATION_COUNTRY_NAME +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +LOCATION_CITY_NAME +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +LOCATION_COUNTRY_CODE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +LOCATION_CITY_CODE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_TYPE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +SY2_JOB_STATUS +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +SENSITIVE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +CGR_CD +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +DATE_CREAT +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +USER_CREAT +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +DATE_MODIF +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +USER_MODIF +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_TITLE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_NAME +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_NAME_DIRECTORY +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_PURPOSE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +LOCAL_JOB_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +FUNCTION_TYPE_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +FUNCTION_TYPE_CODE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +FUNCTION_TYPE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +BUDGET_LINE_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +BUDGET_LINE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +BUDGET_LINE_DESCRIPTION +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +GRADE_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +GRADE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +PERSONNEL_TYPE_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +PERSONNEL_TYPE_CODE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +PERSONNEL_TYPE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +DG_RESPONSABLE_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +DG_RESPONSABLE_CODE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +DG_RESPONSABLE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_STATUS_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_STATUS_CODE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_STATUS +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +TITLE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +DESCRIPTION +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +AUTHORIZATION_PUBLISH +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +SY2_COMMENTS +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +COMMENTS +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +CREATION_USER +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +CREATION_DATE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +MODIFICATION_USER +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +MODIFICATION_DATE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +EDELHRM_BUDGET_LINE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +MULTI_DG +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml new file mode 100644 index 0000000..171f868 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml @@ -0,0 +1,327 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ENTITIES_HIST_COM +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +ORG_ID_PARENT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +MAIN_ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +ORG_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +ORG_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +ORG_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +ORG_DESC_FRE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +ENG_CITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +FRA_CITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +COUNTRY_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +ENG_COUNTRY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +FRA_COUNTRY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +TOR_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +TYPEOFENTITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ENT_HIST_COM_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +2F9BA900-3FBE-4D93-5862-04F2AA61DFFF +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ENT_HST_COM_MAIN_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +828DC1BB-764F-C1D8-4D8A-C210D95F70B4 +false + + + + + + + +true +ERIGHTS +MV_ENTITIES_HIST_COM + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml new file mode 100644 index 0000000..bf839f1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml @@ -0,0 +1,111 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_SMS_COMM_ERRORS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_ERRORS +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_ERRORS +UUID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT025 +36 BYTE +36 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_ERRORS +CODE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +25 BYTE +25 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_ERRORS +MESSAGE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +1024 BYTE +1024 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_SMS_COMM_ERRORS +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_SMS_COMM_ERRORS +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml new file mode 100644 index 0000000..52bd45e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml @@ -0,0 +1,73 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_LOCKS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_LOCKS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_LOCKS +LOCK_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +40 BYTE +40 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_LOCKS_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_LOCKS_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml new file mode 100644 index 0000000..e7dafa0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml @@ -0,0 +1,145 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_EMAILS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +MV_EMAILS +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +,8, +false + + +ERIGHTS-TEST +MV_EMAILS +EMAIL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +320 CHAR +320 CHAR,, +false + + +ERIGHTS-TEST +MV_EMAILS +CTX_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_EMAILS_PER +walloar +2021-04-26 13:29:43 UTC +eRights +3445F278-A4AB-98FB-C480-0351EE56E497 +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml new file mode 100644 index 0000000..bed18de --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml @@ -0,0 +1,219 @@ + + +ERIGHTS-TEST +ERIGHTS +PERSONS_BANK_INFO +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +PERSONS_BANK_INFO +PERSONS_BANK_INFO_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +LEF +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +BAF +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +LEGAL_ENTITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +IBAN_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +BANK_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +BANK_ACCOUNT_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +MAIN_BANK_ACCOUNT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +ACCOUNT_HOLDER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +ACCOUNT_CURRENCY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_PERSONS_BANK_INFO +walloar +2021-04-26 13:29:43 UTC +eRights +BF3D4E05-698A-ED72-043A-1FD97960FAA7 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_PERSONS_BANK_INFO_PER_ID +walloar +2021-04-26 13:29:43 UTC +eRights +918F4B68-C0FF-42E9-CA18-1CF45C95B97B +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_PERSONS_BANK_INFO +walloar +2021-04-26 13:29:43 UTC +eRights +348977F3-FAF4-46DC-CA59-3600E2DF6714 +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml new file mode 100644 index 0000000..e3dd221 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml @@ -0,0 +1,194 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_BLOB_TRIGGERS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_BLOB_TRIGGERS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_BLOB_TRIGGERS +TRIGGER_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_BLOB_TRIGGERS +TRIGGER_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_BLOB_TRIGGERS +BLOB_DATA +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT029 +4000 +4000,, +false + + +walloar +2021-03-02 09:59:34 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false +false + + + + + +walloar +2021-03-02 09:59:34 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false +false + + + + + +walloar +2021-03-02 10:16:15 UTC +0E69EAC1-448C-C84E-9036-8F95507C4125 +eRights +false +1 +LOGDT024 +,, +false +false + + +walloar +2021-03-02 10:16:15 UTC +6E259E75-43A5-7F18-9EA5-B1D1D8B89978 +eRights +false +1 +LOGDT024 +,, +false +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_BLOB_TRIG_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_BLOB_TRIG_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + + +walloar +2021-03-02 09:59:34 UTC +eRights +Unique Plain Index +false +008DAECF-D9CE-790D-5E20-F99E23972044 + + + + + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml new file mode 100644 index 0000000..4bbb797 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml @@ -0,0 +1,188 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_DELEGATION_STATUS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +MV_DELEGATION_STATUS +ALERT_STATUS_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_DELEGATION_STATUS +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_DELEGATION_STATUS +DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MV_DELEGATION_STATUS +SEVERITY_LEVEL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_DELEGATION_STATUS +EVACUATION_LEVEL_CODE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_DELEGATION_STATUS +EVACUATION_LEVEL_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, +false + + +ERIGHTS-TEST +MV_DELEGATION_STATUS +FAMILY_POSTING_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_DELEGATION_STATUS +FAMILY_POSTING_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, +false + + + + +true +ERIGHTS +MV_DELEGATION_STATUS + + +ALERT_STATUS_ID +ERIGHTS +MV_DELEGATION_STATUS + + +ORG_ID +ERIGHTS +MV_DELEGATION_STATUS + + +DESCRIPTION +ERIGHTS +MV_DELEGATION_STATUS + + +SEVERITY_LEVEL +ERIGHTS +MV_DELEGATION_STATUS + + +EVACUATION_LEVEL_CODE_ID +ERIGHTS +MV_DELEGATION_STATUS + + +EVACUATION_LEVEL_CODE +ERIGHTS +MV_DELEGATION_STATUS + + +FAMILY_POSTING_TYPE_ID +ERIGHTS +MV_DELEGATION_STATUS + + +FAMILY_POSTING_TYPE +ERIGHTS +MV_DELEGATION_STATUS + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4CB74767-3856-9458-45EB-D45BEC46CD86.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4CB74767-3856-9458-45EB-D45BEC46CD86.xml new file mode 100644 index 0000000..0a85091 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4CB74767-3856-9458-45EB-D45BEC46CD86.xml @@ -0,0 +1,721 @@ + + +ERIGHTS-TEST +ERIGHTS +REQUESTS +tapiafo +2021-03-08 11:26:23 UTC +eRights +table_76 +false +true +true + + +tapiafo +2021-03-08 11:44:53 UTC +eRights +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 11:44:53 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +tapiafo +2021-03-08 11:44:53 UTC + +eRights +false +1 +LOGDT019 +,, +false + + + + + +tapiafo +2021-03-08 11:44:53 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +tapiafo +2021-03-08 11:44:53 UTC +eRights +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +tapiafo +2021-03-08 11:44:53 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 11:44:53 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 11:44:53 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-09 14:28:05 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +walloar +2021-03-09 10:45:34 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +walloar +2021-03-09 10:45:34 UTC +eRights +true +false +1 +LOGDT019 +4 +,4, +false + + +tapiafo +2021-03-11 15:13:33 UTC +eRights +true +false +1 +LOGDT024 +16 CHAR +16 CHAR,, +false + + +walloar +2021-03-09 10:24:07 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-09 10:24:07 UTC +eRights +false +1 +LOGDT015 +,, +false + + +walloar +2021-03-09 10:24:57 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-09 10:24:57 UTC +eRights +false +1 +LOGDT015 +,, +false + + +walloar +2021-03-19 14:38:35 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-19 14:38:35 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-19 14:38:35 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +walloar +2021-03-22 14:08:23 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-22 14:08:23 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +walloar +2021-03-22 17:30:30 UTC +eRights +CK_REQUEST_INCL_STFF_MMBR +true +false +1 +LOGDT025 +1 CHAR + + + + +N +1 CHAR,, +false + + +walloar +2021-03-22 17:30:30 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-22 17:30:30 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +walloar +2021-04-08 06:29:54 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +walloar +2021-04-08 06:39:05 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +walloar +2021-04-08 06:39:05 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +walloar +2021-04-08 06:39:05 UTC +eRights +true +false +1 +LOGDT007 +sysdate +,, +false + + +tapiafo +2021-04-15 11:42:45 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +SURFACE_RATE +walloar +2021-05-11 06:48:47 UTC +eRights +0086BC67-3691-0392-E253-6694E4F9DD40 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +SURFACE_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +BC66A03E-CA3F-66E6-BF49-A961C282209F +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +CAR_RATE +walloar +2021-05-11 06:48:47 UTC +eRights +85B4C8A1-FB2B-C123-0F48-F1411949D9C2 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +CAR_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +8A9C4D1E-1C7D-0BD1-ED24-B1B8C304C1E1 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +AIRFREIGHT_RATE +walloar +2021-05-11 06:48:47 UTC +eRights +63DAFFA7-6A80-699C-9EF8-325F36135DAF +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +AIRFREIGHT_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +CA87E4E9-BBF4-C5DA-6502-E02B4FC29CC5 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +STORAGE_RATE +walloar +2021-05-11 06:48:47 UTC +eRights +7D35C6DA-4090-9E6E-AC1B-3099385E560F +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +STORAGE_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +CE5E3DE1-87C5-8790-E6E0-5C2AA8355B23 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +TOPUP_AMOUNT +walloar +2021-05-11 06:48:47 UTC +eRights +FE3A4829-D90C-6633-DBEB-859C5A537143 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +TOPUP_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +BB5F637B-9282-64E9-0B8D-98F2BB7A8BF3 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +RECOVERY_AMOUNT +walloar +2021-05-11 06:48:47 UTC +eRights +3DEB1825-78EB-2405-5897-E9DBA24BF64D +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +RECOVERY_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +FA6BB8B8-5C2C-25D8-CA41-C4D383A12702 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +EIS_AMOUNT +walloar +2021-05-11 06:48:47 UTC +eRights +D1C2D1D9-939F-D114-FA1B-EB58729C0C79 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +EIS_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +006BC100-A3A6-634E-4A3E-004EE40F562E +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +EFS_AMOUNT +walloar +2021-05-11 06:48:47 UTC +eRights +8B31A2C6-4548-EEE4-9811-0903D5948C6C +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +EFS_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +56182024-74A5-D9C6-75B1-4B5247389F09 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +REQUEST_OPTION +walloar +2021-05-11 06:48:47 UTC + +eRights +C18C86DB-EC22-93B5-F836-0EA2D23B22D9 +true +false +1 +LOGDT024 +16 CHAR +16 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +PARENT_REQUEST_ID +walloar +2021-05-11 06:48:47 UTC + +eRights +E90BE881-0DDE-75B0-3517-6C968D48576F +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +REQUEST_TYPE +walloar +2021-05-11 06:48:47 UTC +eRights +3EAA27B0-BC30-B06E-5E9D-8AD63ADDB1B2 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + + + +tapiafo +2021-03-08 11:44:53 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_REQUESTS +walloar +2021-04-26 13:29:43 UTC +eRights +17E23B3E-DF5F-5F64-E7D1-F4878875A38C +Unique Plain Index +false + + + + + +walloar +2021-03-09 10:12:07 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-09 10:12:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-06-03 10:44:04 UTC +eRights +Foreign Key +false + + + + + + + +walloar +2021-03-22 17:32:58 UTC +eRights +8B770CA3-7E2C-0FE3-8E6B-53823C3DB04D +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA +81728993-351E-03AC-CE24-42A50AEEB584 +ERIGHTS.V_STAFFMEMBERS +per_id + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml new file mode 100644 index 0000000..2251bb3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml @@ -0,0 +1,137 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_SMS_RCPT_COMM_DATA +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_SMS_RCPT_COMM_DATA +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_SMS_RCPT_COMM_DATA +COMM_DATA_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + + +ERIGHTS-TEST +ANK_EDMS_SMS_RCPT_COMM_DATA +REF_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_SMS_RCPT_COMM_DATA +STATUS +walloar +2021-03-02 08:04:46 UTC +eRights +CHK_ANK_EDMS_SRCD_STATUS +false +1 +LOGDT024 +10 BYTE + + + + + + + +10 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_S_RCPT_COMM_DATA +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_S_RCPT_COMM_DATA +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml new file mode 100644 index 0000000..93187fb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml @@ -0,0 +1,622 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ENTITIES +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_ENTITIES +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES +ORG_ID_PARENT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES +MAIN_ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES +ORG_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES +ORG_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +SORT_ORDER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_ENTITIES +ORG_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +ORG_DESC_FRE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +ENG_CITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES +FRA_CITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES +COUNTRY_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +ENG_COUNTRY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +FRA_COUNTRY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +IS_DELEGATION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES +TOR_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_ENTITIES +TYPEOFENTITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +DELEGATION_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1003 BYTE +1003 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES +DEL_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES +ALERT_STATUS_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES +ALERT_STATUS_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES +SEVERITY_LEVEL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_ENTITIES +REGION_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES +REGION_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +FRA_REGION_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +ENG_REGION_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +IS_HQ +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ENTITIES_MAIN_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +5F1E377E-FFB4-4EAF-B27B-0A42EDDFFA38 +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ENTITIES_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +13544859-DC39-3881-8565-5E912A08101C +false + + + + + + + +true +ERIGHTS +MV_ENTITIES + + +ORG_ID +ERIGHTS +MV_ENTITIES + + +ORG_ID_PARENT +ERIGHTS +MV_ENTITIES + + +MAIN_ORG_ID +ERIGHTS +MV_ENTITIES + + +ORG_NAME +ERIGHTS +MV_ENTITIES + + +ORG_CD +ERIGHTS +MV_ENTITIES + + +SORT_ORDER +ERIGHTS +MV_ENTITIES + + +ORG_DESC +ERIGHTS +MV_ENTITIES + + +ORG_DESC_FRE +ERIGHTS +MV_ENTITIES + + +CITY_CODE +ERIGHTS +MV_ENTITIES + + +ENG_CITY +ERIGHTS +MV_ENTITIES + + +FRA_CITY +ERIGHTS +MV_ENTITIES + + +COUNTRY_ID +ERIGHTS +MV_ENTITIES + + +ENG_COUNTRY +ERIGHTS +MV_ENTITIES + + +FRA_COUNTRY +ERIGHTS +MV_ENTITIES + + +IS_DELEGATION +ERIGHTS +MV_ENTITIES + + +TOR_ID +ERIGHTS +MV_ENTITIES + + +TYPEOFENTITY_NAME +ERIGHTS +MV_ENTITIES + + +DELEGATION_NAME +ERIGHTS +MV_ENTITIES + + +DEL_ID +ERIGHTS +MV_ENTITIES + + +ALERT_STATUS_ID +ERIGHTS +MV_ENTITIES + + +ALERT_STATUS_CODE +ERIGHTS +MV_ENTITIES + + +SEVERITY_LEVEL +ERIGHTS +MV_ENTITIES + + +REGION_ID +ERIGHTS +MV_ENTITIES + + +REGION_CODE +ERIGHTS +MV_ENTITIES + + +FRA_REGION_DESC +ERIGHTS +MV_ENTITIES + + +ENG_REGION_DESC +ERIGHTS +MV_ENTITIES + + +IS_HQ +ERIGHTS +MV_ENTITIES + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml new file mode 100644 index 0000000..bda3e7d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml @@ -0,0 +1,111 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_REVINFO +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_REVINFO +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_REVINFO +TIMESTAMP +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_REVINFO +USER_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +ANK_REVINFO +USER_FULL_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +ANK_REVINFO +DELEGATOR_PER_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_REVINFO +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_REVINFO +walloar +2021-03-02 08:04:49 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml new file mode 100644 index 0000000..e6f9dd9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml @@ -0,0 +1,125 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_TYPES_DEFAULT +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ENTITLMNT_TYPES_DEFAULT +ENTITLMNT_TYPE_CAT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_TYPES_DEFAULT +MOVEMENT_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_TYPES_DEFAULT +DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES_DEFAULT +ENTITLMNT_TYPE_DEFAULT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ENTITLMNT_TYPES_DEFAULT +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ENTITLMNT_TYPES_DEFAULT +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml new file mode 100644 index 0000000..e82e506 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml @@ -0,0 +1,1020 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_COM +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_PERSONS_COM +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSONS_COM +NO_SYSPER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +6 +0 +,6,0 +false + + +ERIGHTS-TEST +MV_PERSONS_COM +TITLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +SURNAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +BIRTH_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +FIRST_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +FIRST_NAME2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +FIRST_NAME3 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +FIRST_NAME4 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +GENRE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +DATE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +PLACE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +COUNTRY_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +USERID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +MONIKER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +DOMAINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +DISPLAY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +511 CHAR +511 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +COMPLET_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +511 CHAR +511 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSONS_COM +TOJ_CD +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +5 CHAR +5 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +JOB_START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +JOB_END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +INS_CD +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +EMAIL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +LST_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +LST_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +LST_BEG_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +LST_ASS_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +LST_END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +CGR_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSONS_COM +MAIN_ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSONS_COM +ORG_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +ORG_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +TOR_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSONS_COM +TYPEOFENTITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +DELEGATION_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +DEL_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +JOB_TITLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +JOB_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +JOB_NAME_DIRECTORY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +JOB_PURPOSE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +RESPONSIBLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +HEAD_OF_ENTITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_PERSONS_COM_PER_ID +walloar +2021-03-02 08:04:52 UTC +eRights +false + + + + + + + +true +ERIGHTS +MV_PERSONS_COM + + +PER_ID +ERIGHTS +MV_PERSONS_COM + + +NO_SYSPER +ERIGHTS +MV_PERSONS_COM + + +TITLE +ERIGHTS +MV_PERSONS_COM + + +SURNAME +ERIGHTS +MV_PERSONS_COM + + +BIRTH_NAME +ERIGHTS +MV_PERSONS_COM + + +FIRST_NAME +ERIGHTS +MV_PERSONS_COM + + +FIRST_NAME2 +ERIGHTS +MV_PERSONS_COM + + +FIRST_NAME3 +ERIGHTS +MV_PERSONS_COM + + +FIRST_NAME4 +ERIGHTS +MV_PERSONS_COM + + +GENRE +ERIGHTS +MV_PERSONS_COM + + +DATE_OF_BIRTH +ERIGHTS +MV_PERSONS_COM + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_COM + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_COM + + +CREATION_DATE +ERIGHTS +MV_PERSONS_COM + + +MODIFICATION_DATE +ERIGHTS +MV_PERSONS_COM + + +USERID +ERIGHTS +MV_PERSONS_COM + + +MONIKER +ERIGHTS +MV_PERSONS_COM + + +DOMAINE +ERIGHTS +MV_PERSONS_COM + + +DISPLAY_NAME +ERIGHTS +MV_PERSONS_COM + + +COMPLET_NAME +ERIGHTS +MV_PERSONS_COM + + +JOB_ID +ERIGHTS +MV_PERSONS_COM + + +TOJ_CD +ERIGHTS +MV_PERSONS_COM + + +JOB_TYPE +ERIGHTS +MV_PERSONS_COM + + +JOB_START_DATE +ERIGHTS +MV_PERSONS_COM + + +JOB_END_DATE +ERIGHTS +MV_PERSONS_COM + + +INS_CD +ERIGHTS +MV_PERSONS_COM + + +EMAIL +ERIGHTS +MV_PERSONS_COM + + +LST_CD +ERIGHTS +MV_PERSONS_COM + + +LST_CODE +ERIGHTS +MV_PERSONS_COM + + +LST_BEG_DATE +ERIGHTS +MV_PERSONS_COM + + +LST_ASS_DATE +ERIGHTS +MV_PERSONS_COM + + +LST_END_DATE +ERIGHTS +MV_PERSONS_COM + + +CGR_CD +ERIGHTS +MV_PERSONS_COM + + +ORG_ID +ERIGHTS +MV_PERSONS_COM + + +MAIN_ORG_ID +ERIGHTS +MV_PERSONS_COM + + +ORG_NAME +ERIGHTS +MV_PERSONS_COM + + +ORG_CD +ERIGHTS +MV_PERSONS_COM + + +TOR_ID +ERIGHTS +MV_PERSONS_COM + + +TYPEOFENTITY_NAME +ERIGHTS +MV_PERSONS_COM + + +DELEGATION_NAME +ERIGHTS +MV_PERSONS_COM + + +DEL_ID +ERIGHTS +MV_PERSONS_COM + + +JOB_TITLE +ERIGHTS +MV_PERSONS_COM + + +JOB_NAME +ERIGHTS +MV_PERSONS_COM + + +JOB_NAME_DIRECTORY +ERIGHTS +MV_PERSONS_COM + + +JOB_PURPOSE +ERIGHTS +MV_PERSONS_COM + + +RESPONSIBLE +ERIGHTS +MV_PERSONS_COM + + +HEAD_OF_ENTITY +ERIGHTS +MV_PERSONS_COM + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml new file mode 100644 index 0000000..8380b36 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml @@ -0,0 +1,280 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ASSIGNMENTS_COM +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +SOJ_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +TOJ_CD +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +5 CHAR +5 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +TYPE_OF_POST +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +INS_CD +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ASSIGN_COM_JOB_ID +walloar +2021-04-26 13:29:43 UTC +eRights +50F748A1-7FDF-029D-9B57-9C8A230890B5 +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ASSIGN_COM_PER_ID +walloar +2021-04-26 13:29:43 UTC +eRights +BDFF4022-2CA5-A65D-1D9D-187CD4BBEB76 +false + + + + + + + +true +ERIGHTS +MV_ASSIGNMENTS_COM + + +SOJ_ID +ERIGHTS +MV_ASSIGNMENTS_COM + + +JOB_ID +ERIGHTS +MV_ASSIGNMENTS_COM + + +PER_ID +ERIGHTS +MV_ASSIGNMENTS_COM + + +TOJ_CD +ERIGHTS +MV_ASSIGNMENTS_COM + + +JOB_TYPE +ERIGHTS +MV_ASSIGNMENTS_COM + + +START_DATE +ERIGHTS +MV_ASSIGNMENTS_COM + + +END_DATE +ERIGHTS +MV_ASSIGNMENTS_COM + + +TYPE_OF_POST +ERIGHTS +MV_ASSIGNMENTS_COM + + +INS_CD +ERIGHTS +MV_ASSIGNMENTS_COM + + +CREATION_DATE +ERIGHTS +MV_ASSIGNMENTS_COM + + +MODIFICATION_DATE +ERIGHTS +MV_ASSIGNMENTS_COM + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml new file mode 100644 index 0000000..306e933 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml @@ -0,0 +1,137 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_EMAIL_RCPT_COMM_DATA +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPT_COMM_DATA +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPT_COMM_DATA +COMM_DATA_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPT_COMM_DATA +REF_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPT_COMM_DATA +STATUS +walloar +2021-03-02 08:04:46 UTC +eRights +CHK_ANK_EDMS_ERCD_STATUS +false +1 +LOGDT024 +10 BYTE + + + + + + + +10 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_E_RCPT_COMM_DATA +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_E_RCPT_COMM_DATA +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml new file mode 100644 index 0000000..10b0bc1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml @@ -0,0 +1,315 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_MV_PERSON_PHONES +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +PER_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +START_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +END_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +TLP_SEQ +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +TLP_TYPE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +TLP_TYPE_CODE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +300 CHAR +300 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +CTX_CD +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +40 BYTE +40 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +TADR_CD +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +COUNTRY_PREFIX +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +40 BYTE +40 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +REGION_PREFIX +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +80 BYTE +80 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +PHONE_NUMBER +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +768 BYTE +768 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +EXTENSION +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +768 BYTE +768 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +FULL_PHONE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1587 BYTE +1587 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +BUILDING +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +INS_CD +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +40 BYTE +40 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +CREATION_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +MODIFICATION_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +SRC_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +SOURCE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +7 BYTE +7 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +AUTH_USAGE_ALLOWED_FLAG +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml new file mode 100644 index 0000000..9274576 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml @@ -0,0 +1,226 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAXS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ENTITLMNT_MAXS +ENTITLMNT_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_MAXS +ENTITLMNT_MAX_CAT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_MAXS +ENTITLMNT_MAX_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +MAX_VALUE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +9 +2 +,9,2 +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +MAX_CURRENCY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +ENTITLMNT_TYPE_CAT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_MAXS +ENTITLMNT_MAX_OPTIONS_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_MAXS +FLAT_RATE_DUPLICATOR +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +COMMENTS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3000 BYTE +3000 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAX_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAX_PK +walloar +2021-03-02 08:04:50 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml new file mode 100644 index 0000000..44960cf --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml @@ -0,0 +1,544 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_JOBS_HIST_COM +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +JCX_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +INS_CD +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +JCX_ID_REMPLACE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +DECISION_COMM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +JOB_ID_ORIGINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +RESPONSIBLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +HEAD_OF_ENTITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +COMMENTS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +CITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +COUNTRY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +LOCATION_CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +LOCATION_CITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +LOCATION_COUNTRY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +LOCATION_COUNTRY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +PERSONNEL_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +PERSONNEL_TYPE_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +BUDGETARY_LINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +JOB_STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +8 BYTE +8 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_JOBS_HIST_COM_JOB_ID +walloar +2021-04-26 13:29:43 UTC +eRights +CB1E084A-8CBE-8101-BE72-37CCE9636ED1 +false + + + + + + + +true +ERIGHTS +MV_JOBS_HIST_COM + + +JCX_ID +ERIGHTS +MV_JOBS_HIST_COM + + +JOB_ID +ERIGHTS +MV_JOBS_HIST_COM + + +INS_CD +ERIGHTS +MV_JOBS_HIST_COM + + +ORG_ID +ERIGHTS +MV_JOBS_HIST_COM + + +START_DATE +ERIGHTS +MV_JOBS_HIST_COM + + +END_DATE +ERIGHTS +MV_JOBS_HIST_COM + + +JCX_ID_REMPLACE +ERIGHTS +MV_JOBS_HIST_COM + + +DECISION_COMM +ERIGHTS +MV_JOBS_HIST_COM + + +JOB_ID_ORIGINE +ERIGHTS +MV_JOBS_HIST_COM + + +RESPONSIBLE +ERIGHTS +MV_JOBS_HIST_COM + + +HEAD_OF_ENTITY +ERIGHTS +MV_JOBS_HIST_COM + + +COMMENTS +ERIGHTS +MV_JOBS_HIST_COM + + +CITY_CODE +ERIGHTS +MV_JOBS_HIST_COM + + +CITY_NAME +ERIGHTS +MV_JOBS_HIST_COM + + +COUNTRY_NAME +ERIGHTS +MV_JOBS_HIST_COM + + +LOCATION_CITY_CODE +ERIGHTS +MV_JOBS_HIST_COM + + +LOCATION_CITY_NAME +ERIGHTS +MV_JOBS_HIST_COM + + +LOCATION_COUNTRY_CODE +ERIGHTS +MV_JOBS_HIST_COM + + +LOCATION_COUNTRY_NAME +ERIGHTS +MV_JOBS_HIST_COM + + +PERSONNEL_TYPE_ID +ERIGHTS +MV_JOBS_HIST_COM + + +PERSONNEL_TYPE_DESC +ERIGHTS +MV_JOBS_HIST_COM + + +BUDGETARY_LINE +ERIGHTS +MV_JOBS_HIST_COM + + +JOB_TYPE +ERIGHTS +MV_JOBS_HIST_COM + + +JOB_STATUS +ERIGHTS +MV_JOBS_HIST_COM + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml new file mode 100644 index 0000000..edd0e10 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml @@ -0,0 +1,267 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ENTITIES_TYPES +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +IS_ACTIVE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +PRIORITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +CREATION_USER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +MODIFICATION_USER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +EN_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +FR_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ENTITIES_TYPES_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +C01987CC-1F0A-2537-7E5B-A44F5F8A04C1 +false + + + + + + + +true +ERIGHTS +MV_ENTITIES_TYPES + + +ORG_ID +ERIGHTS +MV_ENTITIES_TYPES + + +ID +ERIGHTS +MV_ENTITIES_TYPES + + +CODE +ERIGHTS +MV_ENTITIES_TYPES + + +IS_ACTIVE +ERIGHTS +MV_ENTITIES_TYPES + + +PRIORITY +ERIGHTS +MV_ENTITIES_TYPES + + +CREATION_USER +ERIGHTS +MV_ENTITIES_TYPES + + +CREATION_DATE +ERIGHTS +MV_ENTITIES_TYPES + + +MODIFICATION_USER +ERIGHTS +MV_ENTITIES_TYPES + + +MODIFICATION_DATE +ERIGHTS +MV_ENTITIES_TYPES + + +EN_NAME +ERIGHTS +MV_ENTITIES_TYPES + + +FR_NAME +ERIGHTS +MV_ENTITIES_TYPES + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml new file mode 100644 index 0000000..0d4fe88 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml @@ -0,0 +1,1171 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_PERSONS_EEAS +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +NO_SYSPER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +6 +0 +,6,0 +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +TITLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +SURNAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +BIRTH_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +FIRST_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +FIRST_NAME2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +FIRST_NAME3 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +FIRST_NAME4 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +GENRE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +DATE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +PLACE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +COUNTRY_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +USERID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +MONIKER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +DOMAIN +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +DISPLAY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +101 CHAR +101 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +COMPLET_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +401 CHAR +401 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +DISPLAY_SURNAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +DISPLAY_FIRST_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +JCX_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +TOJ_CD +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +5 CHAR +5 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +ASSIGN_START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +ASSIGN_END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +INS_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +EMAIL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +WORK_PATTERN_DATE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +WORK_PATTERN_DATE_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +WORK_PATTERN_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +LST_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +LST_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +LST_BEG_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +LST_ASS_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +LST_END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +CGR_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +MAIN_ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +ORG_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +ORG_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +ORG_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +TOR_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +TYPEOFENTITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +DEL_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +DELEGATION_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +563 BYTE +563 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +JOB_TITLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +JOB_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +JOB_NAME_DIRECTORY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +JOB_PURPOSE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +RESPONSIBLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +HEAD_OF_ENTITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_PERSONS_EEAS_PER_ID +walloar +2021-03-02 08:04:52 UTC +eRights +false + + + + + + + +true +ERIGHTS +MV_PERSONS_EEAS + + +PER_ID +ERIGHTS +MV_PERSONS_EEAS + + +NO_SYSPER +ERIGHTS +MV_PERSONS_EEAS + + +TITLE +ERIGHTS +MV_PERSONS_EEAS + + +SURNAME +ERIGHTS +MV_PERSONS_EEAS + + +BIRTH_NAME +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME2 +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME3 +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME4 +ERIGHTS +MV_PERSONS_EEAS + + +GENRE +ERIGHTS +MV_PERSONS_EEAS + + +DATE_OF_BIRTH +ERIGHTS +MV_PERSONS_EEAS + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_EEAS + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_EEAS + + +CREATION_DATE +ERIGHTS +MV_PERSONS_EEAS + + +MODIFICATION_DATE +ERIGHTS +MV_PERSONS_EEAS + + +USERID +ERIGHTS +MV_PERSONS_EEAS + + +MONIKER +ERIGHTS +MV_PERSONS_EEAS + + +DOMAIN +ERIGHTS +MV_PERSONS_EEAS + + +DISPLAY_NAME +ERIGHTS +MV_PERSONS_EEAS + + +COMPLET_NAME +ERIGHTS +MV_PERSONS_EEAS + + +DISPLAY_SURNAME +ERIGHTS +MV_PERSONS_EEAS + + +DISPLAY_FIRST_NAME +ERIGHTS +MV_PERSONS_EEAS + + +JCX_ID +ERIGHTS +MV_PERSONS_EEAS + + +JOB_ID +ERIGHTS +MV_PERSONS_EEAS + + +TOJ_CD +ERIGHTS +MV_PERSONS_EEAS + + +JOB_TYPE +ERIGHTS +MV_PERSONS_EEAS + + +ASSIGN_START_DATE +ERIGHTS +MV_PERSONS_EEAS + + +ASSIGN_END_DATE +ERIGHTS +MV_PERSONS_EEAS + + +INS_CD +ERIGHTS +MV_PERSONS_EEAS + + +EMAIL +ERIGHTS +MV_PERSONS_EEAS + + +WORK_PATTERN_DATE_FROM +ERIGHTS +MV_PERSONS_EEAS + + +WORK_PATTERN_DATE_TO +ERIGHTS +MV_PERSONS_EEAS + + +WORK_PATTERN_DESC +ERIGHTS +MV_PERSONS_EEAS + + +LST_CD +ERIGHTS +MV_PERSONS_EEAS + + +LST_CODE +ERIGHTS +MV_PERSONS_EEAS + + +LST_BEG_DATE +ERIGHTS +MV_PERSONS_EEAS + + +LST_ASS_DATE +ERIGHTS +MV_PERSONS_EEAS + + +LST_END_DATE +ERIGHTS +MV_PERSONS_EEAS + + +CGR_CD +ERIGHTS +MV_PERSONS_EEAS + + +ORG_ID +ERIGHTS +MV_PERSONS_EEAS + + +MAIN_ORG_ID +ERIGHTS +MV_PERSONS_EEAS + + +ORG_NAME +ERIGHTS +MV_PERSONS_EEAS + + +ORG_CD +ERIGHTS +MV_PERSONS_EEAS + + +ORG_DESC +ERIGHTS +MV_PERSONS_EEAS + + +TOR_ID +ERIGHTS +MV_PERSONS_EEAS + + +TYPEOFENTITY_NAME +ERIGHTS +MV_PERSONS_EEAS + + +DEL_ID +ERIGHTS +MV_PERSONS_EEAS + + +DELEGATION_NAME +ERIGHTS +MV_PERSONS_EEAS + + +JOB_TITLE +ERIGHTS +MV_PERSONS_EEAS + + +JOB_NAME +ERIGHTS +MV_PERSONS_EEAS + + +JOB_NAME_DIRECTORY +ERIGHTS +MV_PERSONS_EEAS + + +JOB_PURPOSE +ERIGHTS +MV_PERSONS_EEAS + + +RESPONSIBLE +ERIGHTS +MV_PERSONS_EEAS + + +HEAD_OF_ENTITY +ERIGHTS +MV_PERSONS_EEAS + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml new file mode 100644 index 0000000..45f6aff --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml @@ -0,0 +1,1015 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_JOBS_HIST_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +JCX_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +SP2_DATE_CREAT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +SP2_DATE_MODIF +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +SP2_USER_CREAT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +SP2_USER_MODIF +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +SP2_CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +SP2_MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +INS_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +JCX_ID_REMPLACE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +DECISION_COMM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +JOB_ID_ORIGINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +RESPONSIBLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +HEAD_OF_ENTITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +COMMENTS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +CITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +COUNTRY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +COUNTRY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +LOCATION_CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +LOCATION_CITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +LOCATION_COUNTRY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +LOCATION_COUNTRY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +TFN_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +JOB_STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +8 BYTE +8 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +CGR_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +EXCLU_GSYS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +EXCLU_GSYS_INTERNE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +EXCLU_GSYS_COMMENT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +ORG_OFFICIEL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +MOBILITE_OBLIGATOIRE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +TABL_EFFECTIFS_UNIQ +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +CCE_ID_RESTYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +PERSONNEL_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +PERSONNEL_TYPE_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +BUDGETARY_LINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +DATE_CREAT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +USER_CREAT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +DATE_MODIF +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +USER_MODIF +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +DG_RESP_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +DG_RESP_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_JOBS_HIST_EEAS_JOB_ID +walloar +2021-04-26 13:29:43 UTC +eRights +F4374DEB-3F9C-59FE-7AE8-DB27FAC78F06 +false + + + + + + + +true +ERIGHTS +MV_JOBS_HIST_EEAS + + +JCX_ID +ERIGHTS +MV_JOBS_HIST_EEAS + + +JOB_ID +ERIGHTS +MV_JOBS_HIST_EEAS + + +SP2_DATE_CREAT +ERIGHTS +MV_JOBS_HIST_EEAS + + +SP2_DATE_MODIF +ERIGHTS +MV_JOBS_HIST_EEAS + + +SP2_USER_CREAT +ERIGHTS +MV_JOBS_HIST_EEAS + + +SP2_USER_MODIF +ERIGHTS +MV_JOBS_HIST_EEAS + + +SP2_CREATION_DATE +ERIGHTS +MV_JOBS_HIST_EEAS + + +SP2_MODIFICATION_DATE +ERIGHTS +MV_JOBS_HIST_EEAS + + +INS_CD +ERIGHTS +MV_JOBS_HIST_EEAS + + +ORG_ID +ERIGHTS +MV_JOBS_HIST_EEAS + + +START_DATE +ERIGHTS +MV_JOBS_HIST_EEAS + + +END_DATE +ERIGHTS +MV_JOBS_HIST_EEAS + + +JCX_ID_REMPLACE +ERIGHTS +MV_JOBS_HIST_EEAS + + +DECISION_COMM +ERIGHTS +MV_JOBS_HIST_EEAS + + +JOB_ID_ORIGINE +ERIGHTS +MV_JOBS_HIST_EEAS + + +RESPONSIBLE +ERIGHTS +MV_JOBS_HIST_EEAS + + +HEAD_OF_ENTITY +ERIGHTS +MV_JOBS_HIST_EEAS + + +COMMENTS +ERIGHTS +MV_JOBS_HIST_EEAS + + +CITY_CODE +ERIGHTS +MV_JOBS_HIST_EEAS + + +CITY_NAME +ERIGHTS +MV_JOBS_HIST_EEAS + + +COUNTRY_CODE +ERIGHTS +MV_JOBS_HIST_EEAS + + +COUNTRY_NAME +ERIGHTS +MV_JOBS_HIST_EEAS + + +LOCATION_CITY_CODE +ERIGHTS +MV_JOBS_HIST_EEAS + + +LOCATION_CITY_NAME +ERIGHTS +MV_JOBS_HIST_EEAS + + +LOCATION_COUNTRY_CODE +ERIGHTS +MV_JOBS_HIST_EEAS + + +LOCATION_COUNTRY_NAME +ERIGHTS +MV_JOBS_HIST_EEAS + + +TFN_ID +ERIGHTS +MV_JOBS_HIST_EEAS + + +JOB_TYPE +ERIGHTS +MV_JOBS_HIST_EEAS + + +JOB_STATUS +ERIGHTS +MV_JOBS_HIST_EEAS + + +CGR_CD +ERIGHTS +MV_JOBS_HIST_EEAS + + +EXCLU_GSYS +ERIGHTS +MV_JOBS_HIST_EEAS + + +EXCLU_GSYS_INTERNE +ERIGHTS +MV_JOBS_HIST_EEAS + + +EXCLU_GSYS_COMMENT +ERIGHTS +MV_JOBS_HIST_EEAS + + +ORG_OFFICIEL +ERIGHTS +MV_JOBS_HIST_EEAS + + +MOBILITE_OBLIGATOIRE +ERIGHTS +MV_JOBS_HIST_EEAS + + +TABL_EFFECTIFS_UNIQ +ERIGHTS +MV_JOBS_HIST_EEAS + + +CCE_ID_RESTYPE +ERIGHTS +MV_JOBS_HIST_EEAS + + +PERSONNEL_TYPE_ID +ERIGHTS +MV_JOBS_HIST_EEAS + + +PERSONNEL_TYPE_DESC +ERIGHTS +MV_JOBS_HIST_EEAS + + +BUDGETARY_LINE +ERIGHTS +MV_JOBS_HIST_EEAS + + +DATE_CREAT +ERIGHTS +MV_JOBS_HIST_EEAS + + +USER_CREAT +ERIGHTS +MV_JOBS_HIST_EEAS + + +DATE_MODIF +ERIGHTS +MV_JOBS_HIST_EEAS + + +USER_MODIF +ERIGHTS +MV_JOBS_HIST_EEAS + + +DG_RESP_ID +ERIGHTS +MV_JOBS_HIST_EEAS + + +DG_RESP_CODE +ERIGHTS +MV_JOBS_HIST_EEAS + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml new file mode 100644 index 0000000..3cc7039 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml @@ -0,0 +1,135 @@ + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_TYPES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +MOVEMENT_TYPES +MOVEMENT_TYPE_ID +walloar +2021-03-02 08:04:47 UTC + +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_TYPES +CODE_FROM +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +16 BYTE +16 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_TYPES +CODE_TO +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +16 BYTE +16 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_TYPES +MOVEMENT_TYPE +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +33 BYTE +33 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_TYPES +CONTEXT_ID +walloar +2021-03-02 08:04:47 UTC + +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_TYPES +BUDGETLINE_JOB +walloar +2021-04-26 13:29:43 UTC +eRights +B6FB2205-0F04-9FED-CC65-3EA94C6A1EB8 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_MOTY +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_MOTY +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml new file mode 100644 index 0000000..95d1b60 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml @@ -0,0 +1,111 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_EMAIL_COMM_ERRORS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_ERRORS +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_ERRORS +UUID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT025 +36 BYTE +36 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_ERRORS +CODE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +25 BYTE +25 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_ERRORS +MESSAGE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +1024 BYTE +1024 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_EMAIL_COMM_ERRORS +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_EMAIL_COMM_ERRORS +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml new file mode 100644 index 0000000..b6afdb5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml @@ -0,0 +1,146 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_MV_USER_SYS_ORG_PERMS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +ANK_MV_USER_SYS_ORG_PERMS +PER_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +ANK_MV_USER_SYS_ORG_PERMS +SYSTEM_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_USER_SYS_ORG_PERMS +FEATURE_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_USER_SYS_ORG_PERMS +FEATURE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_USER_SYS_ORG_PERMS +ORG_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_USER_SYS_ORG_PERMS +ACCESS_MODE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_USER_SYS_ORG_PERMS +SOURCE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_ANK_USOP_PER_ID +walloar +2021-04-26 13:29:43 UTC +eRights +9735E34A-83A1-13C4-02AD-F8AD67BCDBB5 +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml new file mode 100644 index 0000000..c19fca7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml @@ -0,0 +1,1159 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_MV_PERSONS_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +PER_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +NO_SYSPER +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +6 +0 +,6,0 +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +TITLE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +SURNAME +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +BIRTH_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +FIRST_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +FIRST_NAME2 +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +FIRST_NAME3 +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +FIRST_NAME4 +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +GENRE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +DATE_OF_BIRTH +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +PLACE_OF_BIRTH +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +COUNTRY_OF_BIRTH +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +CREATION_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +MODIFICATION_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +USERID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +MONIKER +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +DOMAIN +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +DISPLAY_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +101 CHAR +101 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +COMPLET_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +401 CHAR +401 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +DISPLAY_SURNAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +DISPLAY_FIRST_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +JCX_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +JOB_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +TOJ_CD +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +5 CHAR +5 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +JOB_TYPE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +ASSIGN_START_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +ASSIGN_END_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +INS_CD +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +EMAIL +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +WORK_PATTERN_DATE_FROM +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +WORK_PATTERN_DATE_TO +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +WORK_PATTERN_DESC +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +LST_CD +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +LST_CODE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +LST_BEG_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +LST_ASS_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +LST_END_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +CGR_CD +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +ORG_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +MAIN_ORG_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +ORG_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +ORG_CD +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +ORG_DESC +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +TOR_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +TYPEOFENTITY_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +DEL_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +DELEGATION_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +563 BYTE +563 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +JOB_TITLE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +JOB_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +JOB_NAME_DIRECTORY +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +JOB_PURPOSE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +RESPONSIBLE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +HEAD_OF_ENTITY +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + + + +true +ERIGHTS +MV_PERSONS_EEAS + + +PER_ID +ERIGHTS +MV_PERSONS_EEAS + + +NO_SYSPER +ERIGHTS +MV_PERSONS_EEAS + + +TITLE +ERIGHTS +MV_PERSONS_EEAS + + +SURNAME +ERIGHTS +MV_PERSONS_EEAS + + +BIRTH_NAME +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME2 +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME3 +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME4 +ERIGHTS +MV_PERSONS_EEAS + + +GENRE +ERIGHTS +MV_PERSONS_EEAS + + +DATE_OF_BIRTH +ERIGHTS +MV_PERSONS_EEAS + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_EEAS + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_EEAS + + +CREATION_DATE +ERIGHTS +MV_PERSONS_EEAS + + +MODIFICATION_DATE +ERIGHTS +MV_PERSONS_EEAS + + +USERID +ERIGHTS +MV_PERSONS_EEAS + + +MONIKER +ERIGHTS +MV_PERSONS_EEAS + + +DOMAIN +ERIGHTS +MV_PERSONS_EEAS + + +DISPLAY_NAME +ERIGHTS +MV_PERSONS_EEAS + + +COMPLET_NAME +ERIGHTS +MV_PERSONS_EEAS + + +DISPLAY_SURNAME +ERIGHTS +MV_PERSONS_EEAS + + +DISPLAY_FIRST_NAME +ERIGHTS +MV_PERSONS_EEAS + + +JCX_ID +ERIGHTS +MV_PERSONS_EEAS + + +JOB_ID +ERIGHTS +MV_PERSONS_EEAS + + +TOJ_CD +ERIGHTS +MV_PERSONS_EEAS + + +JOB_TYPE +ERIGHTS +MV_PERSONS_EEAS + + +ASSIGN_START_DATE +ERIGHTS +MV_PERSONS_EEAS + + +ASSIGN_END_DATE +ERIGHTS +MV_PERSONS_EEAS + + +INS_CD +ERIGHTS +MV_PERSONS_EEAS + + +EMAIL +ERIGHTS +MV_PERSONS_EEAS + + +WORK_PATTERN_DATE_FROM +ERIGHTS +MV_PERSONS_EEAS + + +WORK_PATTERN_DATE_TO +ERIGHTS +MV_PERSONS_EEAS + + +WORK_PATTERN_DESC +ERIGHTS +MV_PERSONS_EEAS + + +LST_CD +ERIGHTS +MV_PERSONS_EEAS + + +LST_CODE +ERIGHTS +MV_PERSONS_EEAS + + +LST_BEG_DATE +ERIGHTS +MV_PERSONS_EEAS + + +LST_ASS_DATE +ERIGHTS +MV_PERSONS_EEAS + + +LST_END_DATE +ERIGHTS +MV_PERSONS_EEAS + + +CGR_CD +ERIGHTS +MV_PERSONS_EEAS + + +ORG_ID +ERIGHTS +MV_PERSONS_EEAS + + +MAIN_ORG_ID +ERIGHTS +MV_PERSONS_EEAS + + +ORG_NAME +ERIGHTS +MV_PERSONS_EEAS + + +ORG_CD +ERIGHTS +MV_PERSONS_EEAS + + +ORG_DESC +ERIGHTS +MV_PERSONS_EEAS + + +TOR_ID +ERIGHTS +MV_PERSONS_EEAS + + +TYPEOFENTITY_NAME +ERIGHTS +MV_PERSONS_EEAS + + +DEL_ID +ERIGHTS +MV_PERSONS_EEAS + + +DELEGATION_NAME +ERIGHTS +MV_PERSONS_EEAS + + +JOB_TITLE +ERIGHTS +MV_PERSONS_EEAS + + +JOB_NAME +ERIGHTS +MV_PERSONS_EEAS + + +JOB_NAME_DIRECTORY +ERIGHTS +MV_PERSONS_EEAS + + +JOB_PURPOSE +ERIGHTS +MV_PERSONS_EEAS + + +RESPONSIBLE +ERIGHTS +MV_PERSONS_EEAS + + +HEAD_OF_ENTITY +ERIGHTS +MV_PERSONS_EEAS + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml new file mode 100644 index 0000000..9f25940 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml @@ -0,0 +1,215 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_JOB_DETAILS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +JOB_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +JOB_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +JOB_CLASS_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +IS_DURABLE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +IS_NONCONCURRENT +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +IS_UPDATE_DATA +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +REQUESTS_RECOVERY +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +JOB_DATA +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT029 +4000 +4000,, +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_JOB_DETAILS_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_J_GRP +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_J_REQ_RECOVERY +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_JOB_DETAILS_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml new file mode 100644 index 0000000..e98f5cb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml @@ -0,0 +1,115 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_TYPES_CAT +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ENTITLMNT_TYPES_CAT +ENTITLMNT_TYPE_CAT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES_CAT +DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES_CAT +MF_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES_CAT +CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES_CAT +ENT_ORDER +walloar +2021-03-03 10:50:37 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ENTITLMNT_TYPES_CAT +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ENTITLMNT_TYPES_CAT +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7B13FE04-19F2-BA2C-C873-CAF22AEC0F1F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7B13FE04-19F2-BA2C-C873-CAF22AEC0F1F.xml new file mode 100644 index 0000000..190263a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7B13FE04-19F2-BA2C-C873-CAF22AEC0F1F.xml @@ -0,0 +1,106 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +APP_PARAMETERS +walloar +2021-05-11 06:48:47 UTC +eRights +23721806-6EE3-9339-D28F-9AF2054AAA30 +false +true +true + + +ERIGHTS-DEVELOPMENT +APP_PARAMETERS +PARAMETER_ID +walloar +2021-05-11 06:48:47 UTC +eRights +8D6EAE88-BBB6-2854-A191-8CFDCF355D0F +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +APP_PARAMETERS +PARAMETER_TYPE +walloar +2021-05-11 06:48:47 UTC +eRights +F3FB765F-E9E2-2AF4-0228-B7BD7897AC73 +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + +ERIGHTS-DEVELOPMENT +APP_PARAMETERS +PARAMETER_KEY +walloar +2021-05-11 06:48:47 UTC +eRights +28D8E697-8028-149D-C115-F60901155E95 +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + +ERIGHTS-DEVELOPMENT +APP_PARAMETERS +PARAMETER_VALUE +walloar +2021-05-11 06:48:47 UTC +eRights +C05C3307-6627-27A3-09B2-BD7E647B998D +true +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +PK_APP_PARAMETERS +walloar +2021-05-11 06:48:47 UTC +eRights +84FB9A61-57C1-FE70-A596-C71FA1374AE5 +true +Primary Constraint +false + + + + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +PK_APP_PARAMETERS +walloar +2021-05-11 06:48:47 UTC +eRights +6AED6BF1-9ABD-0C1C-0E30-522A90F0731E +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml new file mode 100644 index 0000000..fc8fc78 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml @@ -0,0 +1,650 @@ + + +ERIGHTS-TEST +ERIGHTS +AUD_MOVEMENT_FILES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +MOVEMENT_FILE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +* +,*, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +REV +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +REVTYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +3 +0 +,3,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +AIPN_FILE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ASSIGN_END_DATE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ASSIGN_END_DATE_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ASSIGN_START_DATE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ASSIGN_START_DATE_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +BUDGET_LINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +CHILD_FREE_POSTING +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ESTIMATED_END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +FILE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +JOB_FROM_START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +JOB_ID_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +19 +0 +,19,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +NON_FAMILY_POSTING +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ORG_CD_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ORG_CD_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ORG_ID_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +19 +0 +,19,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ORG_ID_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +19 +0 +,19,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +PRIORITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +SM_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +STATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +YEAR +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +19 +0 +,19,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +JOB_ID_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +19 +0 +,19,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +CONTEXT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +* +0 +,*,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +MOVEMENT_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +* +0 +,*,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +AIPN_NOTIF_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +WITHOUT_RIGHTS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +REASON_EOC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +MOVEMENT_NR +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +AIPN_DOCUMENT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +REASON_DELETION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +COUNTRY_CODE_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +CITY_CODE_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +EVACUATION_STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +NOTIFICATION_ENTITY_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +COUNTRY_CODE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +CITY_CODE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +walloar +2021-03-24 10:12:14 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +SYS_C0011455 +walloar +2021-03-02 08:04:50 UTC +eRights +true +Primary Constraint +false + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml new file mode 100644 index 0000000..613e09c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml @@ -0,0 +1,254 @@ + + +ERIGHTS-TEST +ERIGHTS +DECLARATION_PERSON +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +DECLARATION_PERSON +DECLARATION_PERSON_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +DECLARATION_PERSON +DECLARATION_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +DECLARATION_PERSON +INS_ELIGIBILITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +DECLARATION_PERSON +REM_ELIGIBILITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +DECLARATION_PERSON +TUD_ELIGIBILITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +DECLARATION_PERSON +DECLAREDPERSON +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +tapiafo +2021-03-08 13:10:10 UTC +eRights +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +tapiafo +2021-03-08 13:09:27 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 13:10:26 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 13:10:39 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +DECLARATION_PERSON +TRP_CODE +tapiafo +2021-03-08 13:10:57 UTC +eRights +true +false +1 +LOGDT024 +100 BYTE +100 BYTE,, +false + + +ERIGHTS-TEST +DECLARATION_PERSON +CLAIM +tapiafo +2021-03-08 13:11:12 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +tapiafo +2021-04-23 16:48:03 UTC +eRights +true +false +1 +LOGDT024 +1000 +1000,, +false + + +ERIGHTS-TEST +DECLARATION_PERSON +FAMILY_MEMBER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + +tapiafo +2021-03-08 13:24:03 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_DECLARATION_PERSON +walloar +2021-04-26 13:29:43 UTC +eRights +E2EF8E03-783A-6521-B3C5-922395806B46 +Unique Plain Index +false + + + + + +tapiafo +2021-03-08 13:29:01 UTC +eRights +Foreign Key +false + + +walloar +2021-04-26 13:29:43 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml new file mode 100644 index 0000000..ef132fb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml @@ -0,0 +1,476 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_FAMILY_MEMBERS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + 'LA' + AND sysdate BETWEEN csisla_start_eligibility AND csisla_end_eligibility + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_person_relatives@easrefn.cc.cec.eu.int pr + WHERE + pr.per_id = r.per_id + AND pr.rel_per_id = la.per_id + )]]> + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +FAMILY_MEMBER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +51 BYTE +51 BYTE,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +SURNAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +BIRTH_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +FIRST_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +DATE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +GENDER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +TRP_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +TRP_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +REL_PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +REL_SURNAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +REL_BIRTH_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +REL_FIRST_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +REL_DATE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +REL_GENDER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +SOURCE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +6 BYTE +6 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_FAMILY_MEMBERS_PER_ID +walloar +2021-03-02 08:04:52 UTC +eRights +false + + + + + + + +true +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PER_ID +ERIGHTS +MV_PERSONS_HIST_EEAS + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml new file mode 100644 index 0000000..c8b7f48 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml @@ -0,0 +1,472 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_HIST_COM +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +NO_SYSPER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +6 +0 +,6,0 +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +TITLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +SURNAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +BIRTH_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +FIRST_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +FIRST_NAME2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +FIRST_NAME3 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +FIRST_NAME4 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +GENRE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +DATE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +PLACE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +COUNTRY_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +36 BYTE +36 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +USERID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +MONIKER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +DOMAINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_PERSONS_HIST_COM_PER_ID +walloar +2021-03-02 08:04:52 UTC +eRights +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_PERSONS_HIST_COM_PER_ID_START_DATE +walloar +2021-03-02 08:04:52 UTC +eRights +false + + + + + + + + +true +ERIGHTS +MV_PERSONS_HIST_COM + + +PER_ID +ERIGHTS +MV_PERSONS_HIST_COM + + +NO_SYSPER +ERIGHTS +MV_PERSONS_HIST_COM + + +TITLE +ERIGHTS +MV_PERSONS_HIST_COM + + +SURNAME +ERIGHTS +MV_PERSONS_HIST_COM + + +BIRTH_NAME +ERIGHTS +MV_PERSONS_HIST_COM + + +FIRST_NAME +ERIGHTS +MV_PERSONS_HIST_COM + + +FIRST_NAME2 +ERIGHTS +MV_PERSONS_HIST_COM + + +FIRST_NAME3 +ERIGHTS +MV_PERSONS_HIST_COM + + +FIRST_NAME4 +ERIGHTS +MV_PERSONS_HIST_COM + + +GENRE +ERIGHTS +MV_PERSONS_HIST_COM + + +DATE_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_COM + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_COM + + +CREATION_DATE +ERIGHTS +MV_PERSONS_HIST_COM + + +MODIFICATION_DATE +ERIGHTS +MV_PERSONS_HIST_COM + + +START_DATE +ERIGHTS +MV_PERSONS_HIST_COM + + +END_DATE +ERIGHTS +MV_PERSONS_HIST_COM + + +USERID +ERIGHTS +MV_PERSONS_HIST_COM + + +MONIKER +ERIGHTS +MV_PERSONS_HIST_COM + + +DOMAINE +ERIGHTS +MV_PERSONS_HIST_COM + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_COM + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml new file mode 100644 index 0000000..9afd530 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml @@ -0,0 +1,206 @@ + + +ERIGHTS-TEST +ERIGHTS +NOTIFICATIONS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +NOTIFICATIONS +NOTIFICATION_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +NOTIFICATION_ENTITY_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +NOTIFICATION_TEMPLATE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +NOTIFICATION_TEMPLATE_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +EMAIL_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +NOTIFICATION_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +SENDING_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +CREATED_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +UPDATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +SENT_AT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +ALERT_SENT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 CHAR +'N' +1 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_NOTIFICATIONS +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml new file mode 100644 index 0000000..e973ad0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml @@ -0,0 +1,156 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_USER_MGMT_PREFERENCES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_USER_MGMT_PREFERENCES +PER_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_USER_MGMT_PREFERENCES +LANGUAGE_ISO +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +ANK_USER_MGMT_PREFERENCES +REGION_ISO +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +ANK_USER_MGMT_PREFERENCES +ZONE_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ANK_USER_MGMT_PREFERENCES +CREATED_BY +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_USER_MGMT_PREFERENCES +CREATED_AT +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +ANK_USER_MGMT_PREFERENCES +UPDATED_BY +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_USER_MGMT_PREFERENCES +UPDATED_AT +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT015 +6 +,6, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_USER_MGMT_PREFERENCES +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_USER_MGMT_PREFERENCES +walloar +2021-03-02 08:04:50 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml new file mode 100644 index 0000000..2f112b8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml @@ -0,0 +1,301 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +SOJ_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +JCX_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +TOJ_CD +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +5 CHAR +5 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +INS_CD +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +TYPE_OF_POST +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ASSIGN_HIST_EEAS_JOB_ID +walloar +2021-04-26 13:29:43 UTC +eRights +1002E2F3-C3B1-FB02-0F44-7F207ACAD2A7 +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ASSIGN_HIST_EEAS_PER_ID +walloar +2021-04-26 13:29:43 UTC +eRights +99C393ED-5807-8887-A0C9-44DB89C23A3E +false + + + + + + + +true +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +SOJ_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +JCX_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +JOB_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +PER_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +TOJ_CD +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +JOB_TYPE +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +START_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +END_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +INS_CD +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +CREATION_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +MODIFICATION_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +TYPE_OF_POST +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml new file mode 100644 index 0000000..4300e8b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml @@ -0,0 +1,501 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ENTITIES_HIST +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_ENTITIES_HIST +HORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ORG_ID_PARENT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +MAIN_ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ORG_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ORG_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ORG_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +FR_ORG_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ENG_CITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +FRA_CITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +COUNTRY_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ENG_COUNTRY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +FRA_COUNTRY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +IS_DELEGATION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +TOR_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +TYPEOFENTITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +DELEGATION_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +743 BYTE +743 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +DEL_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ALERT_STATUS_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ALERT_STATUS_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +SEVERITY_LEVEL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +SHORT_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +SORT_ORDER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +HIERARCHY_LEVEL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +OFFICIAL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ENTITIES_HIST_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +56599DF7-A262-6503-E00B-F1F360FBB70E +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ENTIT_HIST_MAIN_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +9000476B-AD1C-750E-678E-7EF65A511757 +false + + + + + + + +true +ERIGHTS +MV_ENTITIES_HIST + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9F8B71CD-271E-D6DE-3E71-2F2F28DF6A55.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9F8B71CD-271E-D6DE-3E71-2F2F28DF6A55.xml new file mode 100644 index 0000000..9955bc2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9F8B71CD-271E-D6DE-3E71-2F2F28DF6A55.xml @@ -0,0 +1,269 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_BANK_INFO +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +MV_PERSONS_BANK_INFO +PERSON_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_PERSONS_BANK_INFO +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_PERSONS_BANK_INFO +LEF +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_BANK_INFO +BAF +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_BANK_INFO +LEGAL_ENTITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_BANK_INFO +IBAN_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_BANK_INFO +BANK_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_BANK_INFO +BANK_ACCOUNT_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_BANK_INFO +MAIN_BANK_ACCOUNT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_PERSONS_BANK_INFO +ACCOUNT_HOLDER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_BANK_INFO +ACCOUNT_CURRENCY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_PERS_BANK_INFO_PER_ID +walloar +2021-04-26 13:29:43 UTC +eRights +E78C59D1-92E7-89B7-B98C-C046D780BC9E +false + + + + + + + +true +ERIGHTS +MV_PERSONS_BANK_INFO + + +PERSON_ID +ERIGHTS +MV_PERSONS_BANK_INFO + + +PER_ID +ERIGHTS +MV_PERSONS_BANK_INFO + + +LEF +ERIGHTS +MV_PERSONS_BANK_INFO + + +BAF +ERIGHTS +MV_PERSONS_BANK_INFO + + +LEGAL_ENTITY +ERIGHTS +MV_PERSONS_BANK_INFO + + +IBAN_CODE +ERIGHTS +MV_PERSONS_BANK_INFO + + +BANK_NAME +ERIGHTS +MV_PERSONS_BANK_INFO + + +BANK_ACCOUNT_CODE +ERIGHTS +MV_PERSONS_BANK_INFO + + +MAIN_BANK_ACCOUNT +ERIGHTS +MV_PERSONS_BANK_INFO + + +ACCOUNT_HOLDER +ERIGHTS +MV_PERSONS_BANK_INFO + + +ACCOUNT_CURRENCY +ERIGHTS +MV_PERSONS_BANK_INFO + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml new file mode 100644 index 0000000..fcf6e1e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml @@ -0,0 +1,472 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_HIST_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +NO_SYSPER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +6 +0 +,6,0 +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +TITLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +SURNAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +BIRTH_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +FIRST_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +FIRST_NAME2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +FIRST_NAME3 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +FIRST_NAME4 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +GENRE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +DATE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +PLACE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +COUNTRY_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +36 BYTE +36 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +USERID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +MONIKER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +DOMAIN +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_PERSONS_HIST_EEAS_PER_ID +walloar +2021-03-02 08:04:52 UTC +eRights +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_PERSONS_HIST_EEAS_PER_ID_START_DATE +walloar +2021-03-02 08:04:52 UTC +eRights +false + + + + + + + + +true +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PER_ID +ERIGHTS +MV_PERSONS_HIST_EEAS + + +NO_SYSPER +ERIGHTS +MV_PERSONS_HIST_EEAS + + +TITLE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +SURNAME +ERIGHTS +MV_PERSONS_HIST_EEAS + + +BIRTH_NAME +ERIGHTS +MV_PERSONS_HIST_EEAS + + +FIRST_NAME +ERIGHTS +MV_PERSONS_HIST_EEAS + + +FIRST_NAME2 +ERIGHTS +MV_PERSONS_HIST_EEAS + + +FIRST_NAME3 +ERIGHTS +MV_PERSONS_HIST_EEAS + + +FIRST_NAME4 +ERIGHTS +MV_PERSONS_HIST_EEAS + + +GENRE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +DATE_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_EEAS + + +CREATION_DATE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +MODIFICATION_DATE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +START_DATE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +END_DATE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +USERID +ERIGHTS +MV_PERSONS_HIST_EEAS + + +MONIKER +ERIGHTS +MV_PERSONS_HIST_EEAS + + +DOMAIN +ERIGHTS +MV_PERSONS_HIST_EEAS + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_EEAS + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml new file mode 100644 index 0000000..1505ada --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml @@ -0,0 +1,315 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_FIRED_TRIGGERS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +ENTRY_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +95 BYTE +95 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +TRIGGER_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +TRIGGER_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +INSTANCE_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +FIRED_TIME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +SCHED_TIME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +PRIORITY +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +STATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +16 BYTE +16 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +JOB_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +JOB_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +IS_NONCONCURRENT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +REQUESTS_RECOVERY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_FIRED_TRIGGER_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_FT_INST_JOB_REQ_RCVRY +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_FT_JG +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_FT_J_G +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_FT_TG +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_FT_TRIG_INST_NAME +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_FT_T_G +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_FIRED_TRIGGER_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml new file mode 100644 index 0000000..c297366 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml @@ -0,0 +1,87 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_CALENDARS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_CALENDARS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_CALENDARS +CALENDAR_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_CALENDARS +CALENDAR +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT029 +4000 +4000,, +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_CALENDARS_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_CALENDARS_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml new file mode 100644 index 0000000..9b93c2d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml @@ -0,0 +1,261 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ASSIGNMENTS_HIST_COM +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +SOJ_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +TOJ_CD +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +5 CHAR +5 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +EXPECTED_END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +INS_CD +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +TYPE_OF_POST +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + + + +true +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +SOJ_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +JOB_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +PER_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +TOJ_CD +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +JOB_TYPE +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +START_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +END_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +EXPECTED_END_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +INS_CD +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +CREATION_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +MODIFICATION_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +TYPE_OF_POST +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml new file mode 100644 index 0000000..7f6f9cb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml @@ -0,0 +1,172 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAXS_CAT +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ENTITLMNT_MAXS_CAT +ENTITLMNT_MAX_CAT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_CAT +ENTITLMNT_TYPE_CAT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_MAXS_CAT +DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_CAT +CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_CAT +NON_FAMILY_POSTING +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_CAT +HOD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_CAT +SUGGESTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_CAT +ENT_ORDER +walloar +2021-03-03 10:51:03 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ENTITLMNT_MAXS_CAT +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ENTITLMNT_MAXS_CAT +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/B792575D-ED90-C316-85A8-FB178ED60508.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/B792575D-ED90-C316-85A8-FB178ED60508.xml new file mode 100644 index 0000000..7ed661d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/B792575D-ED90-C316-85A8-FB178ED60508.xml @@ -0,0 +1,196 @@ + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_DOC_SECTIONS +walloar +2021-04-20 14:07:17 UTC + +eRights +table_82 +false +true +true + + +walloar +2021-04-20 14:10:41 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:10:41 UTC +eRights +false +1 +LOGDT024 +500 CHAR +500 CHAR,, +false + + +walloar +2021-04-20 14:10:41 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +walloar +2021-04-20 14:10:41 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +walloar +2021-04-20 14:10:41 UTC +eRights +true +false +1 +LOGDT025 +1 CHAR + + + + + +1 CHAR,, +false + + +walloar +2021-04-20 14:10:41 UTC +eRights +true +false +1 +LOGDT025 +1 CHAR + + + + + +1 CHAR,, +false + + +walloar +2021-04-20 14:21:59 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:10:41 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:10:41 UTC +eRights +false +1 +LOGDT007 +,, +false + + +walloar +2021-04-20 14:10:41 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:10:41 UTC +eRights +false +1 +LOGDT007 +,, +false + + + + +walloar +2021-04-20 14:10:41 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_DOC_SECTIONS_PK +walloar +2021-04-26 13:29:43 UTC +eRights +18753D88-6550-9D98-C16A-41C2FAAA9365 +Unique Plain Index +false + + + + + +walloar +2021-04-20 14:11:33 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-04-20 14:12:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml new file mode 100644 index 0000000..96fac35 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml @@ -0,0 +1,130 @@ + + +ERIGHTS-TEST +ERIGHTS +DB_LOG +walloar +2021-03-02 08:04:46 UTC + +eRights +false +true +true + + +ERIGHTS-TEST +DB_LOG +ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +DB_LOG +PRIORITY +walloar +2021-03-02 08:04:47 UTC +eRights +CKC_PRIORITY_DB_LOG +true +false +1 +LOGDT025 +1 BYTE + + + + + + + + + + + +1 BYTE,, +false + + +ERIGHTS-TEST +DB_LOG +PROGRAM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1000 BYTE +1000 BYTE,, +false + + +ERIGHTS-TEST +DB_LOG +MESSAGE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +ERIGHTS-TEST +DB_LOG +MOMENTUM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +SYSDATE +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_DB_LOG +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_DB_LOG +walloar +2021-03-02 08:04:50 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml new file mode 100644 index 0000000..d1f0096 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml @@ -0,0 +1,170 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_EMAIL_RCPTS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPTS +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPTS +EMAIL_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPTS +REF_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPTS +ADDRESS +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPTS +CUSTOMIZED_HEADER +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPTS +CUSTOMIZED_FOOTER +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_EMAIL_RCPTS +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +UN_ANK_EDMS_E_RCPTS_ID_EMA_REF +walloar +2021-03-02 08:04:56 UTC +eRights +Unique Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_EMAIL_RCPTS +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +ERIGHTS-TEST +ERIGHTS +UN_ANK_EDMS_E_RCPTS_ID_EMA_REF +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml new file mode 100644 index 0000000..e96a8e4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml @@ -0,0 +1,133 @@ + + +ERIGHTS-TEST +ERIGHTS +NOTIFICATION_TEMPLATES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +NOTIFICATION_TEMPLATES +NOTIFICATION_TEMPLATE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +NOTIFICATION_TEMPLATES +NOTIFICATION_TEMPLATE_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, +false + + +ERIGHTS-TEST +NOTIFICATION_TEMPLATES +MESSAGE_SUBJECT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, +false + + +ERIGHTS-TEST +NOTIFICATION_TEMPLATES +MESSAGE_BODY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +NOTIFICATION_TEMPLATES +MESSAGE_SIGNATURE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, +false + + +ERIGHTS-TEST +NOTIFICATION_TEMPLATES +NOTIFICATION_TEMPLATE_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, +false + + +ERIGHTS-TEST +NOTIFICATION_TEMPLATES +DEFAULT_TEMPLATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 CHAR +1 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_NOTIFICATION_TEMPLATES +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml new file mode 100644 index 0000000..33d2aea --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml @@ -0,0 +1,114 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAXS_OPTIONS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ENTITLMNT_MAXS_OPTIONS +ENTITLMNT_MAX_OPTIONS_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_OPTIONS +DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_OPTIONS +VALUE_NUMBER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_OPTIONS +VALUE_STRING +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_OPTIONS +ENTITLMNT_MAX_CAT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAX_OPTIONS_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAX_OPTIONS_PK +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml new file mode 100644 index 0000000..5d3464e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml @@ -0,0 +1,227 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_CITIES +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +MV_CITIES +CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +MV_CITIES +COUNTRY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +MV_CITIES +CD_SYSPER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +MV_CITIES +CD2_SYSPER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +MV_CITIES +CD_SIRE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +MV_CITIES +NAP_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +MV_CITIES +RNG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_CITIES +DESCRIPTION_EN +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +240 BYTE +240 BYTE,, +false + + +ERIGHTS-TEST +MV_CITIES +DESCRIPTION_FR +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +240 BYTE +240 BYTE,, +false + + + + +true +ERIGHTS +MV_CITIES + + +CITY_CODE +ERIGHTS +MV_CITIES + + +COUNTRY_CODE +ERIGHTS +MV_CITIES + + +CD_SYSPER +ERIGHTS +MV_CITIES + + +CD2_SYSPER +ERIGHTS +MV_CITIES + + +CD_SIRE +ERIGHTS +MV_CITIES + + +NAP_CD +ERIGHTS +MV_CITIES + + +RNG_ID +ERIGHTS +MV_CITIES + + +DESCRIPTION_EN +ERIGHTS +MV_CITIES + + +DESCRIPTION_FR +ERIGHTS +MV_CITIES + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml new file mode 100644 index 0000000..66d70f1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml @@ -0,0 +1,161 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_EMAIL_COMM_DATA +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_DATA +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_DATA +CLIENT_COMMUNICATION_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_DATA +SERVER_COMMUNICATION_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +25 BYTE +25 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_DATA +SENT_AT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_DATA +STATUS +walloar +2021-03-02 08:04:46 UTC +eRights +CHK_ANK_EDMS_ECD_STATUS +false +1 +LOGDT024 +10 BYTE + + + + + + + +10 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_DATA +LAST_CHECK_AT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_EMAIL_COMM_DATA +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_ANK_EDMS_ECD_STAT_LAST_CHK +walloar +2021-03-02 08:04:48 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_EMAIL_COMM_DATA +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml new file mode 100644 index 0000000..61665b3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml @@ -0,0 +1,224 @@ + + +ERIGHTS-TEST +ERIGHTS +DECLARATION +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +DECLARATION +DECLARATION_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +DECLARATION +MOVEMENT_FILE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +DECLARATION +PERSONS_BANK_INFO_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +walloar +2021-03-16 08:04:30 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +N +1 BYTE,, +false + + +walloar +2021-03-16 08:04:30 UTC +eRights +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +walloar +2021-03-16 08:20:02 UTC +eRights +true +false +1 +LOGDT007 +,, +false + + +walloar +2021-03-16 08:20:02 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-16 08:20:02 UTC +eRights +true +false +1 +LOGDT007 +,, +false + + +walloar +2021-03-16 08:20:02 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-19 15:16:49 UTC +eRights +true +false +1 +LOGDT007 +,, +false + + +walloar +2021-03-19 15:16:49 UTC +eRights +true +false +1 +LOGDT007 +,, +false + + +walloar +2021-03-22 14:13:33 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-05-19 15:18:14 UTC +eRights +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +DECLARATION_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +DECLARATION_PK +walloar +2021-03-02 08:04:50 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-06-03 10:45:05 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml new file mode 100644 index 0000000..59d60ec --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml @@ -0,0 +1,330 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_HEAD_OF_DELEGATIONS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +ORG_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +ORG_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +MAIN_ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +TOR_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +TYPEOFENTITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +ASSIGMENT_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +FIRST_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +SURNAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +EMAIL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_HEAD_DEL_MAIN_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +2B7E0B35-7C21-68CA-3CAE-3D15F68C74DB +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_HEAD_DEL_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +E0CA5FE7-5F18-BCFF-3F52-CC65736930D6 +false + + + + + + + +true +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +ORG_ID +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +ORG_CD +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +ORG_NAME +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +MAIN_ORG_ID +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +TOR_ID +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +TYPEOFENTITY_NAME +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +JOB_ID +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +ASSIGMENT_TYPE +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +JOB_TYPE +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +PER_ID +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +FIRST_NAME +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +SURNAME +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +EMAIL +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CD6BE7A4-204E-62FE-7BA4-C9C5440782F7.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CD6BE7A4-204E-62FE-7BA4-C9C5440782F7.xml new file mode 100644 index 0000000..4cfc91d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CD6BE7A4-204E-62FE-7BA4-C9C5440782F7.xml @@ -0,0 +1,196 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +MV_RATE_EXCHANGE +walloar +2021-05-11 06:48:47 UTC +eRights +3070158C-C72C-CA87-579F-BB3765C4E36D +4 +false +true +true +true + + + +ERIGHTS-DEVELOPMENT +MV_RATE_EXCHANGE +DEV_CD +walloar +2021-05-11 06:48:47 UTC +eRights +3B719B4E-37F9-F373-CC64-5E07B1FC5D43 +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +MV_RATE_EXCHANGE +DT_CRE +walloar +2021-05-11 06:48:47 UTC +eRights +B573B1AB-4098-DA8A-9236-2B1AA1F5773E +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-DEVELOPMENT +MV_RATE_EXCHANGE +DT_DEB +walloar +2021-05-11 06:48:47 UTC +eRights +70785808-09BD-3F4B-CA38-DE9E98D6B9A3 +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-DEVELOPMENT +MV_RATE_EXCHANGE +TAUX_EUR +walloar +2021-05-11 06:48:47 UTC +eRights +31ABE620-AC9C-98D9-EFA3-8E3273592D5C +false +1 +LOGDT019 +15 +7 +,15,7 +false + + +ERIGHTS-DEVELOPMENT +MV_RATE_EXCHANGE +DT_FIN +walloar +2021-05-11 06:48:47 UTC +eRights +0F8F51F9-5420-13BF-4847-74DF42C9C250 +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-DEVELOPMENT +MV_RATE_EXCHANGE +DT_MAJ +walloar +2021-05-11 06:48:47 UTC +eRights +C10423A1-7DD0-19B8-9D1C-AAF08D5D09E8 +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +IDX_MV_RATE_EXCH_DEV_CD +walloar +2021-05-11 06:48:47 UTC +eRights +16AD3A9E-7B38-3334-C417-FFA50C1A91DB +false + + + + + + + +true +E_RIGHTS +MV_RATE_EXCHANGE + + +DEV_CD +E_RIGHTS +MV_RATE_EXCHANGE + + +DT_CRE +E_RIGHTS +MV_RATE_EXCHANGE + + +DT_DEB +E_RIGHTS +MV_RATE_EXCHANGE + + +TAUX_EUR +E_RIGHTS +MV_RATE_EXCHANGE + + +DT_FIN +E_RIGHTS +MV_RATE_EXCHANGE + + +DT_MAJ +E_RIGHTS +MV_RATE_EXCHANGE + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml new file mode 100644 index 0000000..c27972d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml @@ -0,0 +1,567 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_MV_ENTITIES +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ORG_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ORG_ID_PARENT +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +MAIN_ORG_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ORG_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ORG_CD +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +SORT_ORDER +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ORG_DESC +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ORG_DESC_FRE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +CITY_CODE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ENG_CITY +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +FRA_CITY +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +COUNTRY_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ENG_COUNTRY +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +FRA_COUNTRY +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +IS_DELEGATION +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +TOR_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +TYPEOFENTITY_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +DELEGATION_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1003 BYTE +1003 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +DEL_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ALERT_STATUS_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ALERT_STATUS_CODE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +SEVERITY_LEVEL +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +REGION_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +REGION_CODE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +FRA_REGION_DESC +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ENG_REGION_DESC +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +IS_HQ +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + + + +true +ERIGHTS +MV_ENTITIES + + +ORG_ID +ERIGHTS +MV_ENTITIES + + +ORG_ID_PARENT +ERIGHTS +MV_ENTITIES + + +MAIN_ORG_ID +ERIGHTS +MV_ENTITIES + + +ORG_NAME +ERIGHTS +MV_ENTITIES + + +ORG_CD +ERIGHTS +MV_ENTITIES + + +SORT_ORDER +ERIGHTS +MV_ENTITIES + + +ORG_DESC +ERIGHTS +MV_ENTITIES + + +ORG_DESC_FRE +ERIGHTS +MV_ENTITIES + + +CITY_CODE +ERIGHTS +MV_ENTITIES + + +ENG_CITY +ERIGHTS +MV_ENTITIES + + +FRA_CITY +ERIGHTS +MV_ENTITIES + + +COUNTRY_ID +ERIGHTS +MV_ENTITIES + + +ENG_COUNTRY +ERIGHTS +MV_ENTITIES + + +FRA_COUNTRY +ERIGHTS +MV_ENTITIES + + +IS_DELEGATION +ERIGHTS +MV_ENTITIES + + +TOR_ID +ERIGHTS +MV_ENTITIES + + +TYPEOFENTITY_NAME +ERIGHTS +MV_ENTITIES + + +DELEGATION_NAME +ERIGHTS +MV_ENTITIES + + +DEL_ID +ERIGHTS +MV_ENTITIES + + +ALERT_STATUS_ID +ERIGHTS +MV_ENTITIES + + +ALERT_STATUS_CODE +ERIGHTS +MV_ENTITIES + + +SEVERITY_LEVEL +ERIGHTS +MV_ENTITIES + + +REGION_ID +ERIGHTS +MV_ENTITIES + + +REGION_CODE +ERIGHTS +MV_ENTITIES + + +FRA_REGION_DESC +ERIGHTS +MV_ENTITIES + + +ENG_REGION_DESC +ERIGHTS +MV_ENTITIES + + +IS_HQ +ERIGHTS +MV_ENTITIES + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml new file mode 100644 index 0000000..65e0b8d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml @@ -0,0 +1,157 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_SMS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_SMS +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS +BATCH_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS +CLIENT_DIVISION_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS +SOURCE_MESSAGE_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +25 BYTE +25 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS +EXPIRES_AT +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS +BODY +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT028 +4000 +4000,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS +CREATED_AT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS +CREATED_BY +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_SMS +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_SMS +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml new file mode 100644 index 0000000..bc15273 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml @@ -0,0 +1,208 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_CRON_TRIGGERS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_CRON_TRIGGERS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_CRON_TRIGGERS +TRIGGER_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_CRON_TRIGGERS +TRIGGER_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_CRON_TRIGGERS +CRON_EXPRESSION +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_CRON_TRIGGERS +TIME_ZONE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +80 BYTE +80 BYTE,, +false + + +walloar +2021-03-02 09:59:34 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false +false + + + + + +walloar +2021-03-02 09:59:34 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false +false + + + + + +walloar +2021-03-02 10:16:15 UTC +441624B5-1433-1712-3187-B98F730FA2B2 +eRights +false +1 +LOGDT024 +,, +false +false + + +walloar +2021-03-02 10:16:15 UTC +1FD7E00A-6F5C-87D6-3853-D8B3F5187F18 +eRights +false +1 +LOGDT024 +,, +false +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_CRON_TRIG_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_CRON_TRIG_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + + +walloar +2021-03-02 09:59:34 UTC +eRights +Unique Plain Index +false +2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE + + + + + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml new file mode 100644 index 0000000..4b47951 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml @@ -0,0 +1,187 @@ + + +erights+dev+java +E_RIGHTS +DECLARATION_PERSON_ATTACHMENTS +tapiafo +2021-03-08 13:12:31 UTC +eRights +false +true +true + + +erights+dev+java +DECLARATION_PERSON_ATTACHMENTS +DECLARATION_PERS_ATTACHMENT_ID +tapiafo +2021-03-08 13:12:31 UTC +eRights +false +1 +LOGDT019 +,, +false + + +erights+dev+java +DECLARATION_PERSON_ATTACHMENTS +UUID +tapiafo +2021-03-08 13:12:31 UTC +eRights +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +erights+dev+java +DECLARATION_PERSON_ATTACHMENTS +DECLARATION_PERSON_ID +tapiafo +2021-03-08 13:12:31 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +erights+dev+java +DECLARATION_PERSON_ATTACHMENTS +FILE_NAME +tapiafo +2021-03-08 13:12:31 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +erights+dev+java +DECLARATION_PERSON_ATTACHMENTS +CREATED_BY +tapiafo +2021-03-08 13:12:31 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +erights+dev+java +DECLARATION_PERSON_ATTACHMENTS +CREATED_AT +tapiafo +2021-03-08 13:12:31 UTC +eRights +true +false +1 +LOGDT015 +6 +,6, +false + + +erights+dev+java +DECLARATION_PERSON_ATTACHMENTS +UPDATED_BY +tapiafo +2021-03-08 13:12:31 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +erights+dev+java +DECLARATION_PERSON_ATTACHMENTS +UPDATED_AT +tapiafo +2021-03-08 13:12:31 UTC +eRights +true +false +1 +LOGDT015 +6 +,6, +false + + + + +erights+dev+java +E_RIGHTS +PK_DECL_PERS_ATTACHMENTS +tapiafo +2021-03-08 13:12:32 UTC +eRights +true +Primary Constraint +false + + + + + +erights+dev+java +E_RIGHTS +IDX_DECL_PERS_ATTACHMENTS +tapiafo +2021-03-08 13:12:32 UTC +eRights +false + + + + + +erights+dev+java +E_RIGHTS +PK_DECL_PERS_ATTACHMENTS +tapiafo +2021-03-08 13:12:32 UTC +eRights +Unique Plain Index +false + + + + + +tapiafo +2021-03-08 13:24:14 UTC +eRights +Foreign Key +false + + +walloar +2021-04-26 13:29:43 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml new file mode 100644 index 0000000..11f2af0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml @@ -0,0 +1,161 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_SMS_COMM_DATA +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_DATA +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_DATA +CLIENT_COMMUNICATION_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_DATA +SERVER_COMMUNICATION_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +25 BYTE +25 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_DATA +SENT_AT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_DATA +STATUS +walloar +2021-03-02 08:04:46 UTC +eRights +CHK_ANK_EDMS_SCD_STATUS +false +1 +LOGDT024 +10 BYTE + + + + + + + +10 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_DATA +LAST_CHECK_AT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_SMS_COMM_DATA +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_ANK_EDMS_SCD_STAT_LAST_CHK +walloar +2021-03-02 08:04:48 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_SMS_COMM_DATA +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml new file mode 100644 index 0000000..df46fb2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml @@ -0,0 +1,145 @@ + + +ERIGHTS-TEST +ERIGHTS +REQUEST_PERSON_ATTACHMENTS +tapiafo +2021-03-08 13:14:09 UTC +eRights +declaration_person_attachmentsv1 +false +true +true + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false +1 +LOGDT015 +6 +,6, +false + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false +1 +LOGDT015 +6 +,6, +false + + + + +tapiafo +2021-03-08 13:14:09 UTC + +eRights +true +Primary Constraint +false + + + + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false + + + + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-09 10:27:29 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/EA9E31FF-E810-F570-9354-8B2CA9473801.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/EA9E31FF-E810-F570-9354-8B2CA9473801.xml new file mode 100644 index 0000000..7c2e75c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/EA9E31FF-E810-F570-9354-8B2CA9473801.xml @@ -0,0 +1,98 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNTS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ENTITLMNTS +ENTITLMNT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNTS +ENTITLMNT_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNTS +MOVEMENT_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNTS +AMOUNT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml new file mode 100644 index 0000000..02891d4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml @@ -0,0 +1,131 @@ + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_CONTEXT +walloar +2021-03-02 08:04:46 UTC + +eRights +false +true +true + + +ERIGHTS-TEST +MOVEMENT_CONTEXT +MOVEMENT_CONTEXT_ID +walloar +2021-03-02 08:04:47 UTC + +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_CONTEXT +NAME +walloar +2021-03-02 08:04:47 UTC + +eRights +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_CONTEXT +CREATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_CONTEXT +CREATED_BY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_CONTEXT +UPDATED_BY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_CONTEXT +UPDATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_MOCO +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_MOCO +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F28AEFDE-0804-3C83-F214-6330BE84607B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F28AEFDE-0804-3C83-F214-6330BE84607B.xml new file mode 100644 index 0000000..b5e23da --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F28AEFDE-0804-3C83-F214-6330BE84607B.xml @@ -0,0 +1,221 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_EMAILS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +BATCH_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +CLIENT_DIVISION_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +SOURCE_MESSAGE_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +25 BYTE +25 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +EXPIRES_AT +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +FORMAT +walloar +2021-03-02 08:04:46 UTC +eRights +CHK_ANK_EDMS_EMAILS_FORMAT +false +1 +LOGDT024 +10 BYTE + + + + + +10 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +SENDER +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +SUBJECT +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +BODY +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT028 +4000 +4000,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +SIGNATURE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +CREATED_AT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +CREATED_BY +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_EMAILS +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_EMAILS +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F3764DB4-0649-A94A-7497-92FDAEA69888.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F3764DB4-0649-A94A-7497-92FDAEA69888.xml new file mode 100644 index 0000000..5e38cda --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F3764DB4-0649-A94A-7497-92FDAEA69888.xml @@ -0,0 +1,140 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_SMS_RCPTS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_SMS_RCPTS +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS_RCPTS +SMS_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_SMS_RCPTS +REF_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS_RCPTS +PHONE_NUMBER +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +25 BYTE +25 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_SMS_RCPTS +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +UN_ANK_EDMS_S_RCPTS_ID_EMA_REF +walloar +2021-03-02 08:04:56 UTC +eRights +Unique Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_SMS_RCPTS +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +ERIGHTS-TEST +ERIGHTS +UN_ANK_EDMS_S_RCPTS_ID_EMA_REF +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F6108759-A9AE-8679-03BA-D124DEC368E8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F6108759-A9AE-8679-03BA-D124DEC368E8.xml new file mode 100644 index 0000000..a83bdd1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F6108759-A9AE-8679-03BA-D124DEC368E8.xml @@ -0,0 +1,197 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_TYPES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ENTITLMNT_TYPES +ENTITLMNT_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES +ENTITLMNT_TYPE_CATG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_TYPES +MOVEMENT_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_TYPES +MOVEMENT_FILE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_TYPES +STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES +DISABLE_REASON +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES +ENT_TYPE_DEFAULT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES +ENABLE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +1 CHAR +'Y' +1 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_TYPES_MOVMNT_FIL_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_TYPES_MOVMNT_FIL_PK +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml new file mode 100644 index 0000000..0c4c013 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml @@ -0,0 +1,255 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAXS_DEFAULT +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +ENTITLMNT_MAX_DEFAULT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +CITY_CODE_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +CITY_CODE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +COUNTRY_CODE_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +COUNTRY_CODE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +CREATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +CREATED_BY +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +UPDATED_BY +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +UPDATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +AMOUNT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +CURRENCY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +ENTITLMNT_MAX_CAT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +LATEST +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +'Y' +1 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ENTITLMNT_MAX_DEFAULT +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ENTITLMNT_MAX_DEFAULT +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/FF74A656-1D74-CA01-A02B-65A0579DD208.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/FF74A656-1D74-CA01-A02B-65A0579DD208.xml new file mode 100644 index 0000000..90a300f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/FF74A656-1D74-CA01-A02B-65A0579DD208.xml @@ -0,0 +1,786 @@ + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_FILES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +MOVEMENT_FILES +MOVEMENT_FILE_ID +walloar +2021-03-02 08:04:47 UTC + +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +FILE_ID +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +PER_ID +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +CONTEXT_ID +walloar +2021-03-02 08:04:47 UTC + +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +MOVEMENT_FILES +PRIORITY +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +YEAR +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-02 10:16:41 UTC + +DF9185C9-9D35-5F2E-839C-C1B6709C0F50 +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +MOVEMENT_FILES +JOB_ID_TO +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +NON_FAMILY_POSTING +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +CHILD_FREE_POSTING +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +START_DATE +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ESTIMATED_END_DATE +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +STATE +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +16 CHAR +16 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +BUDGET_LINE +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +256 CHAR +256 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +EOD_DATE +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ORG_ID_FROM +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ORG_ID_TO +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +JOB_ID_FROM +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ASSIGN_START_DATE_FROM +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ASSIGN_END_DATE_FROM +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ASSIGN_START_DATE_TO +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ASSIGN_END_DATE_TO +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +JOB_FROM_START_DATE +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ORG_CD_FROM +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ORG_CD_TO +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +SM_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +AIPN_FILE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +CREATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +CREATED_BY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +UPDATED_BY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +UPDATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +AIPN_NOTIF_DATE +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +WITHOUT_RIGHTS +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +REASON_EOC +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +MOVEMENT_NR +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MOVEMENT_FILES +AIPN_DOCUMENT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +REASON_DELETION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +COUNTRY_CODE_TO +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +CITY_CODE_TO +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +EVACUATION_STATUS +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +NOTIFICATION_ENTITY_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +CITY_CODE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +COUNTRY_CODE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +walloar +2021-03-23 13:09:53 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_MOFI +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +UK_MOFI +walloar +2021-03-02 08:04:56 UTC +eRights +Unique Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_MOFI +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +ERIGHTS-TEST +ERIGHTS +UK_MOFI_FILE_ID +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-03 12:10:03 UTC +eRights +Foreign Key +false + + + + + + + +walloar +2021-03-23 13:10:03 UTC +eRights +1B05FE22-DF96-7AA9-9F17-FECFF293B693 +52675525-20A2-9D94-FC27-4C5EBA8B3915 +83150B1B-A6E0-3EB4-3C24-DA77824D2EBF +ERIGHTS.MV_ENTITIES +ORG_ID + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/01197962-C671-CBDB-2A12-9A0182777C73.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/01197962-C671-CBDB-2A12-9A0182777C73.xml new file mode 100644 index 0000000..437c6a0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/01197962-C671-CBDB-2A12-9A0182777C73.xml @@ -0,0 +1,570 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSON_ADDRESS +walloar +2021-03-11 10:08:49 UTC + +eRights +801BC462-2D73-94ED-C3B6-DC1524E58158 +4 +false +true +true + + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +PER_ID +walloar +2021-03-11 10:08:49 UTC +eRights +0520CD33-568F-D789-1EE9-06F2B788E1A3 +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +START_DATE +walloar +2021-03-11 10:08:49 UTC +eRights +405BE559-E70E-0B8D-A947-5E95EEB8062D +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +END_DATE +walloar +2021-03-11 10:08:49 UTC +eRights +4225AF30-39AF-C0FF-C9C4-AF08768AE3EA +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +EFFECTIVE_DATE +walloar +2021-03-11 10:08:49 UTC +eRights +987851D9-F325-7DE5-1EBF-9802BD95A047 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +DECL_CHG_DATE +walloar +2021-03-11 10:08:49 UTC +eRights +3858ECEE-A9EF-93D1-FC62-4FB29C278629 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +TADR_CD +walloar +2021-03-11 10:08:49 UTC +eRights +88686B11-C3B0-D727-A172-AAA95BA0215D +true +false +1 +LOGDT019 +3 +0 +,3,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +ADDRESS_TYPE_CODE +walloar +2021-03-11 10:08:49 UTC +eRights +3972EE18-127D-52E7-76C0-AD0943AE8E93 +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +COUNTRY_CODE +walloar +2021-03-11 10:08:49 UTC +eRights +5BBE871B-29C6-09A9-41D0-E4D2D6F3B2B3 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +CITY_NAME +walloar +2021-03-11 10:08:49 UTC +eRights +CA9C1DD1-9FE2-F0A1-3B6F-54D1B4A7A6A2 +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +POSTAL_CODE +walloar +2021-03-11 10:08:49 UTC +eRights +5ED9E56A-C74D-97BE-31D7-3BB078C5609D +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +STREET_NAME +walloar +2021-03-11 10:08:49 UTC +eRights +879FD7FF-700A-C4A6-65B2-C4AB507EE55B +true +false +1 +LOGDT024 +250 CHAR +250 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +STREET_NAME1 +walloar +2021-03-11 10:08:49 UTC +eRights +A0F800D7-351B-8D99-EA4C-BD67797507B7 +true +false +1 +LOGDT024 +250 CHAR +250 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +STREET_NAME2 +walloar +2021-03-11 10:08:49 UTC +eRights +303CDA24-31D7-FD52-E628-D2EAFBB36A0A +true +false +1 +LOGDT024 +250 CHAR +250 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +STREET_NUMBER +walloar +2021-03-11 10:08:49 UTC +eRights +163EDCF9-31F9-2BE9-A706-788582BFDECC +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +POSTAL_BOX +walloar +2021-03-11 10:08:49 UTC +eRights +0557030D-4A81-465A-76DC-F8FD8EFA9EE2 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +COMMENTS +walloar +2021-03-11 10:08:49 UTC +eRights +7180D15E-FF31-7D9E-7C6C-6A91F74807D6 +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +ADDITIONAL_ADDRESS +walloar +2021-03-11 10:08:49 UTC +eRights +76F74A6D-93DB-1668-A77B-9F1D97E82C7A +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +ADDITIONAL_ADDRESS2 +walloar +2021-03-11 10:08:49 UTC +eRights +1E74FA5D-D655-717D-61F0-25FA2C4C11F5 +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +OREDER_ADDRESS +walloar +2021-03-11 10:08:49 UTC +eRights +D3350581-3C85-C8C3-69B4-E6E62F49A151 +true +false +1 +LOGDT019 +2 +0 +,2,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +LANGUAGE_CODE +walloar +2021-03-11 10:08:49 UTC +eRights +4951874F-D3AE-C87C-4386-7811FB7F8320 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +PER_ID_REL_PERS +walloar +2021-03-11 10:08:49 UTC +eRights +238771D6-BFE2-D93B-5B90-D57CE6F373E4 +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +SURNAME +walloar +2021-03-11 10:08:49 UTC +eRights +9F251F6E-648E-1F97-DA53-EC5632504526 +true +false +1 +LOGDT024 +80 CHAR +80 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +FIRST_NAME +walloar +2021-03-11 10:08:49 UTC +eRights +58460334-773A-E8E6-8E4E-8E19FE90CD96 +true +false +1 +LOGDT024 +80 CHAR +80 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +DATE_OF_BIRTH +walloar +2021-03-11 10:08:49 UTC +eRights +876B0864-19F2-D5D9-525D-B6B5FFD9C16F +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +TITLE +walloar +2021-03-11 10:08:49 UTC +eRights +EC12BA53-E94E-35A5-F1E4-C99C8D03CF3A +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +LINK_ADR_TEL +walloar +2021-03-11 10:08:49 UTC +eRights +848FFCFE-AB89-712F-C5E6-FA294376FA08 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +SP2_ADDRESS_ID +walloar +2021-03-11 10:08:49 UTC +eRights +0C74673B-321E-BD13-5410-28E7E7632F28 +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +IRIS_ADDRESS_ID +walloar +2021-03-11 10:08:49 UTC +eRights +996E58CD-E496-1B27-6605-E299CDEF8B1D +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +SRC_ID +walloar +2021-03-11 10:08:49 UTC +eRights +ABB74343-32B1-E985-99C7-C8DBF47B5626 +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +INS_CD +walloar +2021-03-11 10:08:49 UTC +eRights +6413562A-BAF0-5685-6ACE-7EA57D7B44E3 +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +UNIQ_ID +walloar +2021-03-11 10:08:49 UTC +eRights +747AE2A9-445D-60CE-FA36-C2E3495500B4 +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_PERSON_ADDRESS_PER_ID +walloar +2021-03-11 10:08:49 UTC +eRights +A1BE94AF-9837-C14F-BE05-3BEA0D85C531 +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/0BB44896-7365-55A2-3289-9522C627466B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/0BB44896-7365-55A2-3289-9522C627466B.xml new file mode 100644 index 0000000..c4397eb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/0BB44896-7365-55A2-3289-9522C627466B.xml @@ -0,0 +1,192 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +REQUEST_DETAIL_ATTACHMENTS +walloar +2021-05-11 06:48:47 UTC +eRights +1F531765-FB28-F363-7529-0FBFC41044E9 +false +true +true + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAIL_ATTACHMENTS +REQUEST_DETAIL_ATTACHMENT_ID +walloar +2021-05-11 06:48:47 UTC +eRights +972569A0-8316-6131-6643-EDE2E14882A0 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAIL_ATTACHMENTS +UUID +walloar +2021-05-11 06:48:47 UTC +eRights +22CFC910-6DF9-2DE8-2DE3-D252510A72F4 +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAIL_ATTACHMENTS +REQUEST_DETAIL_ID +walloar +2021-05-11 06:48:47 UTC +eRights +47D545D5-FDDE-AA9C-B0D7-69CBEC0078C0 +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAIL_ATTACHMENTS +REQUEST_DETAIL_ATTACHMENT_TYPE +walloar +2021-05-11 06:48:47 UTC + +eRights +622F6043-8863-04E9-2CAA-BF1A7B3524AB +true +false +1 +LOGDT024 +25 CHAR +25 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAIL_ATTACHMENTS +FILE_NAME +walloar +2021-05-11 06:48:47 UTC +eRights +9997DC88-CD44-D58B-9603-02A0839975F4 +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAIL_ATTACHMENTS +CREATED_BY +walloar +2021-05-11 06:48:47 UTC +eRights +8DC993DC-3359-C7E1-D7A2-F522EAC67707 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAIL_ATTACHMENTS +CREATED_AT +walloar +2021-05-11 06:48:47 UTC +eRights +FAC28C66-65EB-6927-3409-892E4B2B3F56 +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAIL_ATTACHMENTS +UPDATED_BY +walloar +2021-05-11 06:48:47 UTC +eRights +B0956BA7-A361-8A12-3CDE-DB94CC571C94 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAIL_ATTACHMENTS +UPDATED_AT +walloar +2021-05-11 06:48:47 UTC +eRights +2E260CCB-766A-C275-7A6C-2A384CB3D7BF +false +1 +LOGDT015 +6 +,6, +false + + + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +PK_REQUEST_DETAIL_ATTACHMENTS +walloar +2021-05-11 06:48:47 UTC +eRights +12D60389-3C0E-DD52-CD39-4A516F615147 +true +Primary Constraint +false + + + + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +PK_REQUEST_DETAIL_ATTACHMENTS +walloar +2021-05-11 06:48:47 UTC +eRights +18B882A8-2DA6-D41C-4E5A-A05F38C68E29 +Unique Plain Index +false + + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/19B5777E-F422-5B95-B997-179834446A02.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/19B5777E-F422-5B95-B997-179834446A02.xml new file mode 100644 index 0000000..e1a3dcd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/19B5777E-F422-5B95-B997-179834446A02.xml @@ -0,0 +1,167 @@ + + +ERIGHTS-TEST +ERIGHTS +USER_PREFERENCES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +USER_PREFERENCES +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +8 +,8, +false + + +ERIGHTS-TEST +USER_PREFERENCES +LOCALE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +5 BYTE +5 BYTE,, +false + + +ERIGHTS-TEST +USER_PREFERENCES +PAGE_PATH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + +ERIGHTS-TEST +USER_PREFERENCES +PREFERENCES +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT028 +4000 +4000,, +false + + +ERIGHTS-TEST +USER_PREFERENCES +CREATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +USER_PREFERENCES +CREATED_BY +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +USER_PREFERENCES +UPDATED_BY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +USER_PREFERENCES +UPDATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +,, +false + + +tapiafo +2021-05-21 13:40:21 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_USER_PREFERENCES +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_USER_PREFERENCES +walloar +2021-03-02 08:04:54 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/20DB5A12-2FFB-0087-DA16-042C48231E7E.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/20DB5A12-2FFB-0087-DA16-042C48231E7E.xml new file mode 100644 index 0000000..5e7e9a2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/20DB5A12-2FFB-0087-DA16-042C48231E7E.xml @@ -0,0 +1,89 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_ABAC_COMM_RESPONSES +walloar +2021-04-26 13:29:43 UTC +eRights +B653076A-5DE3-97B5-8CF7-728922527271 +false +true +true + + +ERIGHTS-TEST +ANK_ABAC_COMM_RESPONSES +ID +walloar +2021-04-26 13:29:43 UTC +eRights +4ECCA894-2FC1-30BE-D7AF-F36361C9E048 +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + + + + +ERIGHTS-TEST +ANK_ABAC_COMM_RESPONSES +DATA +walloar +2021-04-26 13:29:43 UTC +eRights +D371B864-D2F0-6D36-E9BF-9D76692436A6 +false +1 +LOGDT028 +4000 +4000,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_ABAC_COMM_RESPONSES +walloar +2021-04-26 13:29:43 UTC +eRights +701EDF4E-1922-09D0-48FC-94E6C2D399FE +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_ABAC_COMM_RESPONSES +walloar +2021-04-26 13:29:43 UTC +eRights +5AF48A95-1188-AE0B-C889-5ED3FA69893F +Unique Plain Index +false + + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml new file mode 100644 index 0000000..88a1f3f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml @@ -0,0 +1,103 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SCHEDULER_STATE +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_SCHEDULER_STATE +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_SCHEDULER_STATE +INSTANCE_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_SCHEDULER_STATE +LAST_CHECKIN_TIME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_SCHEDULER_STATE +CHECKIN_INTERVAL +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +13 +0 +,13,0 +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SCHEDULER_STATE_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SCHEDULER_STATE_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/21442F1D-A788-0766-1383-1143D116D4BC.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/21442F1D-A788-0766-1383-1143D116D4BC.xml new file mode 100644 index 0000000..c3b62db --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/21442F1D-A788-0766-1383-1143D116D4BC.xml @@ -0,0 +1,224 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SIMPLE_TRIGGERS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_SIMPLE_TRIGGERS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_SIMPLE_TRIGGERS +TRIGGER_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_SIMPLE_TRIGGERS +TRIGGER_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_SIMPLE_TRIGGERS +REPEAT_COUNT +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +7 +0 +,7,0 +false + + +ERIGHTS-TEST +QRTZ_SIMPLE_TRIGGERS +REPEAT_INTERVAL +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +12 +0 +,12,0 +false + + +ERIGHTS-TEST +QRTZ_SIMPLE_TRIGGERS +TIMES_TRIGGERED +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +walloar +2021-03-02 09:59:34 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false +false + + + + + +walloar +2021-03-02 09:59:34 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false +false + + + + + +walloar +2021-03-02 10:16:15 UTC +24F37E9D-2C6A-CDC1-C87D-1DD12D64BD12 +eRights +false +1 +LOGDT024 +,, +false +false + + +walloar +2021-03-02 10:16:15 UTC +28768DA8-CAB3-2D48-74AC-7DAC6466663B +eRights +false +1 +LOGDT024 +,, +false +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SIMPLE_TRIG_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SIMPLE_TRIG_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + + +walloar +2021-03-02 09:59:34 UTC +eRights +Unique Plain Index +false +8806F619-C25C-3011-4C6C-D46137F7538D + + + + + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml new file mode 100644 index 0000000..a6b5d3a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml @@ -0,0 +1,121 @@ + + +ERIGHTS-TEST +ERIGHTS +T_REFRESH_OBJECTS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +T_REFRESH_OBJECTS +ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +* +0 +,*,0 +false + + +ERIGHTS-TEST +T_REFRESH_OBJECTS +APP_OBJECT_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, +false + + +ERIGHTS-TEST +T_REFRESH_OBJECTS +PRIORITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +* +0 +,*,0 +false + + +ERIGHTS-TEST +T_REFRESH_OBJECTS +IS_REFRESHED +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +T_REFRESH_OBJECTS +STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +ERIGHTS-TEST +T_REFRESH_OBJECTS +REFRESH_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +SYSDATE +7,, +false + + +ERIGHTS-TEST +T_REFRESH_OBJECTS +SYSTEM +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/4999EFAE-DAB3-0CF8-7B71-772378B9B375.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/4999EFAE-DAB3-0CF8-7B71-772378B9B375.xml new file mode 100644 index 0000000..7e157e9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/4999EFAE-DAB3-0CF8-7B71-772378B9B375.xml @@ -0,0 +1,1658 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +MV_PERSON_RELATIVES_RIGHTS +walloar +2021-03-17 08:16:31 UTC +eRights +07E48011-EA3E-E23D-1C65-D57679A1A16D +4 +false +true +true + + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +RIG_ID +walloar +2021-03-17 08:16:31 UTC +eRights +A218CB9F-695C-A4DF-FF2D-2B2383D2F39D +true +false +1 +LOGDT019 +9 +,9, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +RIG_REC_NBR +walloar +2021-03-17 08:16:31 UTC +eRights +B3D4787A-EFEA-B8CC-D05C-BE199509A796 +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +PER_ID_ATTRIB +walloar +2021-03-17 08:16:31 UTC +eRights +73BFA01F-53A3-A6D5-9490-F42BBD480AFC +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +SURNAME_ATTRIB +walloar +2021-03-17 08:16:31 UTC +eRights +ADD41322-5AC8-3284-36D5-EB67CFFFBF68 +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +FIRSTNAME_ATTRIB +walloar +2021-03-17 08:16:31 UTC +eRights +FEF0599A-1B89-B0D2-A545-DAD8351BF466 +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +BIRT_DATE_ATTRIB +walloar +2021-03-17 08:16:31 UTC +eRights +08D79269-A6DA-2C06-2311-8EA556D14874 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +SEX_ATTRIB +walloar +2021-03-17 08:16:31 UTC +eRights +EA3BD151-7FC1-E667-A0BA-15938662304E +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +PER_ID_BENEF +walloar +2021-03-17 08:16:31 UTC +eRights +8059FFAA-74D3-C4A0-BC85-B3CC6924C73C +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +SURNAME_BENEF +walloar +2021-03-17 08:16:31 UTC +eRights +F2342200-D59F-470B-40A9-8B6F0840FD30 +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +FISRTNAME_BENEF +walloar +2021-03-17 08:16:31 UTC +eRights +89CDD707-0505-E1DE-FEF8-A61E01EA44AA +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +BIRT_DATE_BENEF +walloar +2021-03-17 08:16:31 UTC +eRights +766D010E-53FE-2953-DD67-F582FF13A8C6 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +SEX_BENEF +walloar +2021-03-17 08:16:31 UTC +eRights +0EA27388-E8DA-78F8-A253-A89605D8B005 +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +INS_CD +walloar +2021-03-17 08:16:31 UTC +eRights +E6BD4FAF-CCD6-E204-8078-B39CBA15ABE3 +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +INS_NOM_FRA +walloar +2021-04-26 13:29:43 UTC +eRights +AB932A0D-4560-E69A-AC7B-267F27CBB6D7 +true +false +1 +LOGDT024 +500 CHAR +500 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +INS_NOM_ENG +walloar +2021-04-26 13:29:43 UTC +eRights +3070F3CE-6887-7A8B-49B7-C79660799F00 +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +INS_NOM_DEU +walloar +2021-04-26 13:29:43 UTC +eRights +4913353A-CE74-0D85-F688-6C4F2CB66E49 +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +RGT_ID +walloar +2021-03-17 08:16:31 UTC +eRights +715A593C-D653-4029-EC7A-D7F54818F062 +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +CODE +walloar +2021-03-17 08:16:31 UTC +eRights +3542234A-CE65-EB03-D01D-0ECB8B4FF549 +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +DROIT_FRA +walloar +2021-04-26 13:29:43 UTC +eRights +B7DB33E4-5F7E-BC15-6D2E-F19A200C0012 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +DROIT_ENG +walloar +2021-04-26 13:29:43 UTC +eRights +A192608D-7114-7A74-DBE1-62375D769278 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +DROIT_DEU +walloar +2021-04-26 13:29:43 UTC +eRights +9AAC6275-9133-74C1-69CC-59C5792DC87F +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +EVT_ID +walloar +2021-03-17 08:16:31 UTC +eRights +4FE0833C-3C36-DC8A-895D-FA1C58C065EB +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +EVT_FRA +walloar +2021-03-17 08:16:31 UTC +eRights +74D93ED5-46FB-3F4D-5A95-15A4AF92A9A4 +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +EVT_ENG +walloar +2021-03-17 08:16:31 UTC +eRights +6B6BE17F-FE87-2E2F-44AB-C585876A619B +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +EVT_DEU +walloar +2021-03-17 08:16:31 UTC +eRights +5E604280-1295-7822-17CE-AADDDC6EB286 +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +DATE_FROM +walloar +2021-03-17 08:16:31 UTC +eRights +E0327832-8AD7-B4D5-F7B4-1A31FAFFB35A +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +DATE_TO +walloar +2021-03-17 08:16:31 UTC +eRights +C85F4733-AF79-84E4-56FD-31D334E88F9B +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +STATUT +walloar +2021-03-17 08:16:31 UTC +eRights +21DD689E-5D22-269E-B173-3398D2DF06D3 +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +AMOUNT +walloar +2021-03-17 08:16:31 UTC +eRights +5A2AF977-1FA2-2751-EBB8-E64D72C5B008 +true +false +1 +LOGDT019 +13 +4 +,13,4 +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +DEV_CD +walloar +2021-03-17 08:16:31 UTC +eRights +79D55077-782A-1520-6FCE-853360FE8E1F +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +BASE_SALARY_PCT +walloar +2021-04-26 13:29:43 UTC +eRights +84012B17-9608-D4E1-AB6C-68FBE9386214 +true +false +1 +LOGDT019 +10 +6 +,10,6 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +DISTANCE +walloar +2021-04-26 13:29:43 UTC +eRights +DE6D5CFC-0E73-1057-6D26-84978053CF88 +true +false +1 +LOGDT019 +8 +2 +,8,2 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +EXTERNAL_REF +walloar +2021-04-26 13:29:43 UTC +eRights +D9E5DE9A-DF0A-8CD3-A067-2DD16F0A7EA4 +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +HALF_DAY_FLAG1 +walloar +2021-04-26 13:29:43 UTC +eRights +A3DD7662-4F1F-692A-953D-A3E29125DCB9 +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +HALF_DAY_FLAG2 +walloar +2021-04-26 13:29:43 UTC +eRights +8C8BA282-A73B-C00F-6722-945BFB6496F2 +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +YEAR_COUNT +walloar +2021-04-26 13:29:43 UTC +eRights +83051A94-624E-BA43-26EF-3613D2772437 +true +false +1 +LOGDT019 +2 +0 +,2,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +MONTH_COUNT +walloar +2021-04-26 13:29:43 UTC +eRights +5519053E-D446-360B-42D3-6DA8739156C8 +true +false +1 +LOGDT019 +2 +0 +,2,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +ALLOWANCES_COUNT +walloar +2021-04-26 13:29:43 UTC +eRights +D3F11069-FAEC-D80B-BD03-90E7AAD12589 +true +false +1 +LOGDT019 +13 +4 +,13,4 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +UNITS_COUNT +walloar +2021-04-26 13:29:43 UTC +eRights +EA101493-A7D4-A6C2-A822-89CABAB53779 +true +false +1 +LOGDT019 +4 +2 +,4,2 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +ORIGIN_PERIOD +walloar +2021-04-26 13:29:43 UTC +eRights +1DCFDD69-0E1D-770D-4328-92643ECC57F4 +true +false +1 +LOGDT024 +4 BYTE +4 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +PAYMENT_PERIOD +walloar +2021-04-26 13:29:43 UTC +eRights +379AAB70-061F-098B-387B-CAC48092B770 +true +false +1 +LOGDT024 +4 BYTE +4 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +PENSION_RATE_PCT +walloar +2021-04-26 13:29:43 UTC +eRights +A22C294D-EA90-4377-3FA6-1D5924A9A56B +true +false +1 +LOGDT019 +10 +6 +,10,6 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +POINTS_COUNT +walloar +2021-04-26 13:29:43 UTC +eRights +151014C8-327D-E230-8094-B34AA810715E +true +false +1 +LOGDT019 +8 +2 +,8,2 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RIGHT_PCT +walloar +2021-04-26 13:29:43 UTC +eRights +59BCBBB2-2C55-2BCA-E778-E4847210C35F +true +false +1 +LOGDT019 +9 +6 +,9,6 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RATE +walloar +2021-04-26 13:29:43 UTC +eRights +5BA5BA40-F02C-D14E-A007-2F0BE44E92C6 +true +false +1 +LOGDT019 +10 +6 +,10,6 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +COC_CD +walloar +2021-04-26 13:29:43 UTC +eRights +8E05FBCE-5701-0437-5522-11F9C96F248D +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_ID_UNIT +walloar +2021-04-26 13:29:43 UTC +eRights +E985AA8A-5CDB-887B-D37D-4BF8F355C576 +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_UNIT_FRA +walloar +2021-04-26 13:29:43 UTC +eRights +DCD14C33-F248-1001-F2DA-002C54A6EBDD +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_UNIT_ENG +walloar +2021-04-26 13:29:43 UTC +eRights +2B8B8F68-C6DC-1A7C-B739-C26E6D1B046F +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_UNIT_DEU +walloar +2021-04-26 13:29:43 UTC +eRights +FAAF6777-58AB-8B18-EFBC-842358411771 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +RTT_ID_TYPE +walloar +2021-03-17 08:16:31 UTC +eRights +A355996A-8C1F-3D1D-F418-60E6DA8F974E +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +RTT_TYPE_FRA +walloar +2021-03-17 08:16:31 UTC +eRights +7A5126DB-BF97-CE01-91E1-C673877DB347 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +RTT_TYPE_ENG +walloar +2021-03-17 08:16:31 UTC +eRights +494EE07B-38EC-D458-696B-901DE93392CA +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +RTT_TYPE_DEU +walloar +2021-03-17 08:16:31 UTC +eRights +F2A299D3-BFBE-E37D-3B1A-E90E16038032 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_ID_RUB_CODE +walloar +2021-04-26 13:29:43 UTC +eRights +2E1EFE49-6798-DF26-594F-5550D7E262E9 +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_RUB_CODE_FRA +walloar +2021-04-26 13:29:43 UTC +eRights +1EDEDD17-B735-A019-FB01-1BC5062C1790 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_RUB_CODE_ENG +walloar +2021-04-26 13:29:43 UTC +eRights +CB79E1E5-C7B1-B7D4-5147-BB33A659048E +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_RUB_CODE_DEU +walloar +2021-04-26 13:29:43 UTC +eRights +550F79BD-55C1-851B-7571-D0124193B477 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_ID_RATE_TYPE +walloar +2021-04-26 13:29:43 UTC +eRights +8A1B70E6-A1B8-65CB-790A-42ED83A8EC17 +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_RATE_TYPE_FRA +walloar +2021-04-26 13:29:43 UTC +eRights +50281B38-D11B-02DD-2982-863B6F33DAC1 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_RATE_TYPE_ENG +walloar +2021-04-26 13:29:43 UTC +eRights +E204B0EB-B380-0FFA-4425-8CEB154B0675 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_RATE_TYPE_DEU +walloar +2021-04-26 13:29:43 UTC +eRights +0F63F752-0CB6-1238-0EBA-4CEA9942182C +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_ID_RATE +walloar +2021-04-26 13:29:43 UTC +eRights +6BEE94E4-161F-5213-C6BC-3BED6A508D9F +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_RATE_FRA +walloar +2021-04-26 13:29:43 UTC +eRights +2590053E-B940-945F-3DF9-738EB4771C0B +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_RATE_ENG +walloar +2021-04-26 13:29:43 UTC +eRights +F093BE96-D3D8-6407-6A6B-9012D3F5F47D +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_RATE_DEU +walloar +2021-04-26 13:29:43 UTC +eRights +342423E1-2B5E-D33E-8DA7-ED5852E942A4 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_ID_LINK_TYPE +walloar +2021-04-26 13:29:43 UTC +eRights +822FB072-FF22-0D0E-EA0D-25E4E5786D7C +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_LINK_TYPE_FRA +walloar +2021-04-26 13:29:43 UTC +eRights +38B3B45D-E4CA-5933-35C1-5F775987BFB4 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_LINK_TYPE_ENG +walloar +2021-04-26 13:29:43 UTC +eRights +42B2CD7F-7391-E142-DF97-30334C925D91 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_LINK_TYPE_DEU +walloar +2021-04-26 13:29:43 UTC +eRights +0FB3198E-D2A7-F53B-9120-B4E2EB2039C7 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_ID_INCLUSIVE_RATE +walloar +2021-04-26 13:29:43 UTC +eRights +C16E246B-6194-C057-B86F-FC41304E4DAB +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_INCLUSIVE_RATE_FRA +walloar +2021-04-26 13:29:43 UTC +eRights +CBE41476-E8F9-16C0-55CA-7F09B3D5BD8E +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_INCLUSIVE_RATE_ENG +walloar +2021-04-26 13:29:43 UTC +eRights +D6F18EAF-B483-F77A-E3BE-241DF60458A7 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_INCLUSIVE_RATE_DEU +walloar +2021-04-26 13:29:43 UTC +eRights +664F8C2A-C7A8-61B0-9C40-786E5EBC4F40 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_ID_CEILLING +walloar +2021-04-26 13:29:43 UTC +eRights +C1B6781C-5B05-FEEC-572D-8BDFB03C07C4 +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_CEILLING_FRA +walloar +2021-04-26 13:29:43 UTC +eRights +1C1F6B7D-6A4D-99E5-3DCE-093ADA400F4E +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_CEILLING_ENG +walloar +2021-04-26 13:29:43 UTC +eRights +5B865B53-3BB6-37A6-0774-5596204CB477 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_CEILLING_DEU +walloar +2021-04-26 13:29:43 UTC +eRights +EDE3CF84-45B0-91BD-6431-D64DD10C5F3A +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +ORIGIN_CTY +walloar +2021-04-26 13:29:43 UTC +eRights +D927290A-C478-C035-93D0-6C00A52FB927 +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +COMM +walloar +2021-04-26 13:29:43 UTC +eRights +D6BDFFF8-4845-048E-50FB-12949972630A +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +CLOSURE_FLAG +walloar +2021-04-26 13:29:43 UTC +eRights +7314D854-E229-303D-B750-D19A6ED93C98 +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +LOCKED_FLAG +walloar +2021-04-26 13:29:43 UTC +eRights +B5556443-CC2F-3EB7-C377-4CB122D3E4FA +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +CCE_ID_REASON +walloar +2021-04-26 13:29:43 UTC +eRights +CB615808-A671-B77A-408B-40BA862608B7 +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +CCE_REASON_FRA +walloar +2021-04-26 13:29:43 UTC +eRights +2BB5D537-93DC-64DE-743D-DC1559F8005E +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +CCE_REASON_ENG +walloar +2021-04-26 13:29:43 UTC +eRights +A0F7BF3A-8D61-6C77-7DD1-AF6E11D5C919 +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +CCE_REASON_DEU +walloar +2021-04-26 13:29:43 UTC +eRights +E41F5EB6-0063-6E1E-43B3-446628F19B68 +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +PEF_ID +walloar +2021-04-26 13:29:43 UTC +eRights +3450FDC3-99E1-82FD-770F-D01B39FB5E33 +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +DT_CRE +walloar +2021-04-26 13:29:43 UTC +eRights +DEE0853B-AD90-EC08-1A6B-39E5DC2A2089 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +DT_MAJ +walloar +2021-04-26 13:29:43 UTC +eRights +0E538D95-2CE0-2C1D-2E70-6CD7EB8D7E9C +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +SRC_ID +walloar +2021-03-17 08:16:31 UTC +eRights +C5D9BE6D-D312-862F-1E71-8EDB4C18FF69 +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +UNIQ_ID +walloar +2021-04-26 13:29:43 UTC +eRights +11956080-496C-4C3E-6F53-E74CD22B010D +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +RIGHT_FRA +walloar +2021-03-17 08:16:31 UTC +eRights +B15BAD4E-58ED-BA45-5601-086F409DBDBA +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +RIGHT_ENG +walloar +2021-03-17 08:16:31 UTC +eRights +5ED6B452-5F0E-0F78-DE45-72373162698C +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-DEVELOPMENT +MV_PERSON_RELATIVES_RIGHTS +RIGHT_DEU +walloar +2021-03-17 08:16:31 UTC +eRights +D0CA362A-BEA7-D550-B731-F0B0590F3234 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +IDX_PERS_REL_RGHT_PER_ID +walloar +2021-03-17 08:16:31 UTC +eRights +DF4A7A07-96D1-BBB1-FA8E-1226B3AB1DA4 +false + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml new file mode 100644 index 0000000..1e78b59 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml @@ -0,0 +1,59 @@ + + +ERIGHTS-TEST +ERIGHTS +T_APP_EASREFN_OBJECTS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +T_APP_EASREFN_OBJECTS +APP_OBJECT_NAME_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +* +0 +,*,0 +false + + +ERIGHTS-TEST +T_APP_EASREFN_OBJECTS +EASREFN_OBJECT_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +256 BYTE +256 BYTE,, +false + + +ERIGHTS-TEST +T_APP_EASREFN_OBJECTS +PRIORITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +* +0 +,*,0 +false + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml new file mode 100644 index 0000000..0562c33 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml @@ -0,0 +1,73 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_PAUSED_TRIGGER_GRPS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_PAUSED_TRIGGER_GRPS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_PAUSED_TRIGGER_GRPS +TRIGGER_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_PAUSED_TRIG_GRPS_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_PAUSED_TRIG_GRPS_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml new file mode 100644 index 0000000..a1440dd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml @@ -0,0 +1,103 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_JOB_BUDGET_LINE +walloar +2021-04-26 13:29:43 UTC +eRights +CA9D50D0-E788-8791-92D2-ECCA4BBDE708 +4 +false +true +true + + + +ERIGHTS-TEST +MV_JOB_BUDGET_LINE +JOB_ID +walloar +2021-04-26 13:29:43 UTC +eRights +C33B0BFA-B47F-CC7F-925E-B76ABD27411D +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOB_BUDGET_LINE +BUDGET_LINE +walloar +2021-04-26 13:29:43 UTC +eRights +53914F8D-75A3-766B-DBC2-6867339B269B +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +MV_JOB_BUDGET_LINE +SOURCE +walloar +2021-04-26 13:29:43 UTC +eRights +88545CB5-8E11-7226-F546-114E5B8D1667 +true +false +1 +LOGDT024 +14 BYTE +14 BYTE,, +false + + +ERIGHTS-TEST +MV_JOB_BUDGET_LINE +LST_CD +walloar +2021-04-26 13:29:43 UTC +eRights +5BB7FF26-C934-F7B9-BC83-4A000CD1725C +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_JOB_BUDGET_LINE_JOB_ID +walloar +2021-04-26 13:29:43 UTC +eRights +2D70889E-9C34-6170-C678-4AF10E76E53C +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/71F3D6E7-C4F0-CB7E-C63E-AF6A800513F8.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/71F3D6E7-C4F0-CB7E-C63E-AF6A800513F8.xml new file mode 100644 index 0000000..302d02d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/71F3D6E7-C4F0-CB7E-C63E-AF6A800513F8.xml @@ -0,0 +1,136 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_FILES +walloar +2021-04-26 13:29:43 UTC +eRights +219EC5DA-BEFB-8623-62A8-97D0A83B0A48 +false +true +true + + +ERIGHTS-TEST +ANK_FILES +ID +walloar +2021-04-26 13:29:43 UTC +eRights +F9719C4B-FD17-AA20-A3F2-BB96C4FABEF5 +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +ANK_FILES +NAME +walloar +2021-04-26 13:29:43 UTC +eRights +C53D64E6-1144-7E7E-6549-1D9D7BAA378D +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +ANK_FILES +CONTENT_TYPE +walloar +2021-04-26 13:29:43 UTC +eRights +F8A93206-A048-1C17-D2B6-D45B8188A936 +false +1 +LOGDT024 +100 BYTE +100 BYTE,, +false + + +ERIGHTS-TEST +ANK_FILES +DATA_SIZE +walloar +2021-04-26 13:29:43 UTC +eRights +6304AD98-92FF-6758-44CB-813CE70B9DCA +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_FILES +DATA +walloar +2021-04-26 13:29:43 UTC +eRights +BAEBAA8A-99E2-6655-E59E-0072FD8BBDAE +false +1 +LOGDT029 +4000 +4000,, +false + + +ERIGHTS-TEST +ANK_FILES +CREATED_AT +walloar +2021-04-26 13:29:43 UTC +eRights +2EC3C745-714C-9F2A-D8B3-A189CE0E11A5 +false +1 +LOGDT007 +7 +sysdate +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_FILES +walloar +2021-04-26 13:29:43 UTC +eRights +856E5F38-6767-7432-70B7-286D70A32F32 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_FILES +walloar +2021-04-26 13:29:43 UTC +eRights +3E0918CC-3F27-A70A-2BE8-12B7E2F8A495 +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml new file mode 100644 index 0000000..d93717a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml @@ -0,0 +1,350 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SIMPROP_TRIGGERS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +TRIGGER_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +TRIGGER_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +STR_PROP_1 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +STR_PROP_2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +STR_PROP_3 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +INT_PROP_1 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +INT_PROP_2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +LONG_PROP_1 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +LONG_PROP_2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +DEC_PROP_1 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +13 +4 +,13,4 +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +DEC_PROP_2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +13 +4 +,13,4 +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +BOOL_PROP_1 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +BOOL_PROP_2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +walloar +2021-03-02 09:59:34 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false +false + + + + + +walloar +2021-03-02 09:59:34 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false +false + + + + + +walloar +2021-03-02 10:16:15 UTC +50FEA76D-9757-0E68-A1C4-92BC7E954FFF +eRights +false +1 +LOGDT024 +,, +false +false + + +walloar +2021-03-02 10:16:15 UTC +85388E95-1787-0534-656B-D870EA4BFF4A +eRights +false +1 +LOGDT024 +,, +false +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SIMPROP_TRIG_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SIMPROP_TRIG_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + + +walloar +2021-03-02 09:59:34 UTC +eRights +Unique Plain Index +false +85536C2D-DE96-659A-488C-664E4DFDD24B + + + + + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml new file mode 100644 index 0000000..1802d14 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml @@ -0,0 +1,444 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +REQUEST_DETAILS +walloar +2021-05-11 06:48:47 UTC +eRights +84A978B8-01FE-3CF1-5094-D266F60276E1 +false +true +true + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +REQUEST_DETAIL_ID +walloar +2021-05-11 06:48:47 UTC +eRights +68BE983A-17CA-4633-D527-C9A072A8F47B +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +REQUEST_ID +walloar +2021-05-11 06:48:47 UTC +eRights +A0A2E552-756E-76D5-78E0-D01E16A21AF6 +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +ENTITLMNT_MAX_CAT_ID +walloar +2021-05-11 06:48:47 UTC + +eRights +08023123-186D-FB14-BCB6-D6312BBA5046 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +REQUEST_DETAIL_TYPE +walloar +2021-05-11 06:48:47 UTC + +eRights +A8787206-F86F-4EE9-96BF-B69795E93348 +true +false +1 +LOGDT024 +25 CHAR +25 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +VOLUMEN +walloar +2021-05-11 06:48:47 UTC +eRights +4110970B-992B-22A7-8B78-74FC43011232 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +WEIGHT +walloar +2021-05-11 06:48:47 UTC +eRights +7815627F-267E-9A53-B993-D59322100218 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +INSURANCE_RATE +walloar +2021-05-11 06:48:47 UTC +eRights +9E5FD099-8AFB-8D30-D7BA-55AD11A9C076 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +VALUE_GOODS +walloar +2021-05-11 06:48:47 UTC +eRights +C934367D-CA69-1659-1F9A-2AACB035D87C +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +VALUE_GOODS_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +4927A7BF-73CB-6F54-1331-7097522F2006 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +PROFORMA +walloar +2021-05-11 06:48:47 UTC +eRights +7C861298-926C-BAF3-DCE0-0C687E66B086 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +PROFORMA_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +491034B8-7656-E689-4C55-B5A9FB9CFCE2 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +INVOICE +walloar +2021-05-11 06:48:47 UTC +eRights +07ADAC7A-5D9B-7ABE-1262-FA9C1F061EF4 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +INVOICE_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +19C64CD8-BD44-FE2D-DA33-4C6B4CADABF7 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +AMOUNT +walloar +2021-05-11 06:48:47 UTC +eRights +4C23201E-FF62-74DC-0EAC-6086A126CBF1 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +AMOUNT_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +50B7D523-D411-0316-B9DB-322342C94677 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +CREATED_BY +walloar +2021-05-11 06:48:47 UTC +eRights +C5B904E5-375D-F729-D101-1A9B61D19E0D +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +CREATED_AT +walloar +2021-05-11 06:48:47 UTC +eRights +380AA4DC-6178-35FC-E167-080915A1B994 +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +UPDATED_BY +walloar +2021-05-11 06:48:47 UTC +eRights +4FC17F6A-E332-D903-A97B-B81CBFC54E64 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +UPDATED_AT +walloar +2021-05-11 06:48:47 UTC +eRights +552EC082-319A-BFFF-429F-F77F8C0165E1 +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +EXCHANGE_RATE +walloar +2021-06-09 07:13:25 UTC +eRights +2762AD31-65DA-930A-D7F3-34835DDA5622 +true +false +1 +LOGDT019 +1 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +EXCHANGE_START_DATE +walloar +2021-06-09 07:13:25 UTC +eRights +E6AC8BD3-361B-D564-2484-C4A0A4BEA213 +true +false +1 +LOGDT007 +7 +sysdate +7,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +EXCHANE_CURRENCY +walloar +2021-06-09 07:13:25 UTC +eRights +4063B0AE-8440-B16E-9786-0E7B20E6CCA6 +true +false +1 +LOGDT024 +3 BYTE +'EUR' +3 BYTE,, +false + + +tapiafo +2021-06-09 13:32:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-07-20 12:12:07 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +N +1 BYTE,, +false + + +walloar +2021-07-20 12:12:07 UTC +eRights +true +false +1 +LOGDT024 +3000 BYTE +3000 BYTE,, +false + + + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +PK_REQUEST_DETAIL +walloar +2021-05-11 06:48:47 UTC +eRights +5C39B824-46B1-22AF-47ED-A045FCA6841A +true +Primary Constraint +false + + + + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +PK_REQUEST_DETAIL +walloar +2021-05-11 06:48:47 UTC +eRights +784846AD-DD31-663D-4B19-970A8B64BD2F +Unique Plain Index +false + + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B55392AB-563F-D199-B9AB-EE5BC9FC5638.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B55392AB-563F-D199-B9AB-EE5BC9FC5638.xml new file mode 100644 index 0000000..a1b4206 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B55392AB-563F-D199-B9AB-EE5BC9FC5638.xml @@ -0,0 +1,154 @@ + + +ERIGHTS-TEST +ERIGHTS +PERSONS_EMAILS +walloar +2021-03-25 11:04:18 UTC +eRights +table_81 +false +true +true + + +walloar +2021-03-25 11:34:51 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-25 11:05:16 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-25 11:08:43 UTC + +eRights +CK_PER_MAIL_TYPE +false +1 +LOGDT024 +4 CHAR + + + + +PRIV +4 CHAR,, +false + + +walloar +2021-03-25 11:05:16 UTC + +eRights +false +1 +LOGDT024 +320 CHAR +320 CHAR,, +false + + +walloar +2021-03-25 11:34:51 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-25 11:34:51 UTC +eRights +false +1 +LOGDT007 +,, +false + + +walloar +2021-03-25 11:34:51 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-25 11:34:51 UTC +eRights +false +1 +LOGDT007 +,, +false + + + + +walloar +2021-03-25 11:08:43 UTC +eRights +true +Primary Constraint +false + + + + + +walloar +2021-03-25 11:37:17 UTC +eRights +false + + + + + +ERIGHTS-TEST +ERIGHTS +PERSONS_EMAILS_PK +walloar +2021-04-26 13:29:43 UTC +eRights +129EC1D6-53CF-16EF-F6C5-1E58D20F0E59 +Unique Plain Index +false + + + + + + + +walloar +2021-03-25 11:09:03 UTC +eRights +0EC80C67-CA1A-15CA-9DAE-B4F1C1E7DCB3 +73DB7963-4431-C4C4-5300-393B221A8121 +98C244C4-AE7E-60CD-DD95-009D5C851A4E +ERIGHTS.V_PEOPLE +PER_ID + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B702C10C-3481-C7D5-B5D0-76A3CC83D977.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B702C10C-3481-C7D5-B5D0-76A3CC83D977.xml new file mode 100644 index 0000000..1f8ff9d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B702C10C-3481-C7D5-B5D0-76A3CC83D977.xml @@ -0,0 +1,89 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_ABAC_COMM_ERRORS +walloar +2021-04-26 13:29:43 UTC +eRights +D87E3692-18C9-AB59-DCF8-C38133B015A9 +false +true +true + + +ERIGHTS-TEST +ANK_ABAC_COMM_ERRORS +ID +walloar +2021-04-26 13:29:43 UTC +eRights +C8E2FB2B-CF6A-FB24-3FB5-F218FCC7A583 +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + + + + +ERIGHTS-TEST +ANK_ABAC_COMM_ERRORS +DATA +walloar +2021-04-26 13:29:43 UTC +eRights +307EF453-1365-018C-C7D9-C083DE2ECBB4 +false +1 +LOGDT028 +4000 +4000,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_ABAC_COMM_ERRORS +walloar +2021-04-26 13:29:43 UTC +eRights +CE0CC78D-51FD-560E-35E1-01B143A1205E +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_ABAC_COMM_ERRORS +walloar +2021-04-26 13:29:43 UTC +eRights +830E81FF-C0C3-34FA-041C-F9CD35749A8B +Unique Plain Index +false + + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/BA98FDD9-EBA1-75B7-B0B8-07331547FFD9.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/BA98FDD9-EBA1-75B7-B0B8-07331547FFD9.xml new file mode 100644 index 0000000..37f44ad --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/BA98FDD9-EBA1-75B7-B0B8-07331547FFD9.xml @@ -0,0 +1,89 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_ABAC_COMM_REQUESTS +walloar +2021-04-26 13:29:43 UTC +eRights +B2D974DE-3FE9-4FD3-7C0A-F9221A6FF6F7 +false +true +true + + +ERIGHTS-TEST +ANK_ABAC_COMM_REQUESTS +ID +walloar +2021-04-26 13:29:43 UTC +eRights +38EB8020-5587-1C08-4B18-206E48EFA485 +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + + + + +ERIGHTS-TEST +ANK_ABAC_COMM_REQUESTS +DATA +walloar +2021-04-26 13:29:43 UTC +eRights +CC4CCE18-567F-D916-870B-9B240432A816 +false +1 +LOGDT028 +4000 +4000,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_ABAC_COMM_REQUESTS +walloar +2021-04-26 13:29:43 UTC +eRights +87DB6B33-24B6-9D43-44BE-932E8D1F8E6A +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_ABAC_COMM_REQUESTS +walloar +2021-04-26 13:29:43 UTC +eRights +091C3F43-5E64-7899-33E5-CF8C968C10A8 +Unique Plain Index +false + + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml new file mode 100644 index 0000000..37e983b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml @@ -0,0 +1,473 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_TRIGGERS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_TRIGGERS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_TRIGGERS +TRIGGER_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +TRIGGER_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +JOB_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_TRIGGERS +JOB_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_TRIGGERS +DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +NEXT_FIRE_TIME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +PREV_FIRE_TIME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +PRIORITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +TRIGGER_STATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +16 BYTE +16 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +TRIGGER_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +8 BYTE +8 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +START_TIME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +END_TIME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +CALENDAR_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +MISFIRE_INSTR +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +2 +0 +,2,0 +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +JOB_DATA +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT029 +4000 +4000,, +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_TRIGGERS_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_C +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_G +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_J +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_JG +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_NEXT_FIRE_TIME +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_NFT_MISFIRE +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_NFT_ST +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_NFT_ST_MISFIRE +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_NFT_ST_MISFIRE_GRP +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_N_G_STATE +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_N_STATE +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_STATE +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_TRIGGERS_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/E5858C90-56D5-FBA1-B0DE-9A80F3AFBC32.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/E5858C90-56D5-FBA1-B0DE-9A80F3AFBC32.xml new file mode 100644 index 0000000..7b3bb0b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/E5858C90-56D5-FBA1-B0DE-9A80F3AFBC32.xml @@ -0,0 +1,150 @@ + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_DOCS_ATTACHMENTS +walloar +2021-04-20 13:59:18 UTC + +eRights +table_81 +false +true +true + + +walloar +2021-04-20 14:02:38 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:02:38 UTC +eRights +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +walloar +2021-04-20 14:02:38 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +walloar +2021-04-20 14:02:38 UTC +eRights +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +walloar +2021-04-20 14:02:38 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:02:38 UTC +eRights +false +1 +LOGDT007 +,, +false + + +walloar +2021-04-20 14:03:31 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:03:31 UTC +eRights +false +1 +LOGDT007 +,, +false + + + + +walloar +2021-04-20 14:02:38 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_DOCS_ATTACHMENTS_PK +walloar +2021-04-26 13:29:43 UTC +eRights +08C9AD8B-63A8-5710-C00C-602D21EEE7C2 +Unique Plain Index +false + + + + + +walloar +2021-04-20 14:17:11 UTC +eRights +Foreign Key +false + + + + + + + +walloar +2021-04-20 14:03:54 UTC +eRights +39D4B69D-9295-9864-4329-53EECAAC262A +BC72B0EE-1464-3878-1EA4-4B45D4EB9AD6 +23C54777-2E4F-A994-44B7-49E89BEED5D9 +ERIGHTS.ANANKE_FILES +ID + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/F0656E91-B102-E910-93C9-3FADF5583284.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/F0656E91-B102-E910-93C9-3FADF5583284.xml new file mode 100644 index 0000000..dfbe82a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/F0656E91-B102-E910-93C9-3FADF5583284.xml @@ -0,0 +1,193 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_ABAC_COMM +walloar +2021-04-26 13:29:43 UTC +eRights +842F590A-15ED-4DE9-87AB-CF7007892D61 +false +true +true + + +ERIGHTS-TEST +ANK_ABAC_COMM +ID +walloar +2021-04-26 13:29:43 UTC +eRights +2DFB41B4-3418-56BD-A011-ED3833FBE42A +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +ANK_ABAC_COMM +ORIGIN +walloar +2021-04-26 13:29:43 UTC +eRights +334B6A7F-5F4C-5E98-E045-6A8600FC2CD6 +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +ANK_ABAC_COMM +SERVICE +walloar +2021-04-26 13:29:43 UTC +eRights +38FF2433-78FF-6B87-4B9B-B3FBF2904174 +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +ANK_ABAC_COMM +ACTION +walloar +2021-04-26 13:29:43 UTC +eRights +38BA8701-50F3-482C-6E28-01EFC71D06F9 +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +ANK_ABAC_COMM +TYPE +walloar +2021-04-26 13:29:43 UTC +eRights +412053C4-41D6-0001-A957-09C4E6E8ECAE +CHK_ANK_ABAC_COMM_TYPE +false +1 +LOGDT024 +5 BYTE + + + + +5 BYTE,, +false + + +ERIGHTS-TEST +ANK_ABAC_COMM +USER_ID +walloar +2021-04-26 13:29:43 UTC +eRights +6AF9F974-5751-765E-FEE4-38F50C66646E +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +ANK_ABAC_COMM +STATUS +walloar +2021-04-26 13:29:43 UTC +eRights +827534F7-4131-2DA6-D02C-AC6BE007A6ED +CHK_ANK_ABAC_COMM_STATUS +false +1 +LOGDT024 +9 BYTE + + + + + +9 BYTE,, +false + + +ERIGHTS-TEST +ANK_ABAC_COMM +REQUEST_SENT_AT +walloar +2021-04-26 13:29:43 UTC +eRights +35EB5A8F-012F-F37D-B7BF-A2CB183F7261 +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_ABAC_COMM +RESPONSE_RECEIVED_AT +walloar +2021-04-26 13:29:43 UTC +eRights +E2153014-6B51-AB22-F187-62562D212394 +true +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_ABAC_COMM +walloar +2021-04-26 13:29:43 UTC +eRights +F2AD127C-8E4F-EAFF-0207-5B8EDDEF98D6 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_ABAC_COMM +walloar +2021-04-26 13:29:43 UTC +eRights +EAE48F22-56C5-D31A-C344-FBDA0012865B +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/F7550F97-470F-3E11-C6EE-445518E195D2.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/F7550F97-470F-3E11-C6EE-445518E195D2.xml new file mode 100644 index 0000000..f8840b1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/F7550F97-470F-3E11-C6EE-445518E195D2.xml @@ -0,0 +1,177 @@ + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_DOCS +walloar +2021-04-20 14:14:07 UTC + +eRights +table_83 +false +true +true + + +walloar +2021-04-20 14:16:49 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:16:49 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +walloar +2021-04-20 14:16:49 UTC +eRights +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +walloar +2021-04-20 14:16:49 UTC +eRights +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +walloar +2021-04-20 14:16:49 UTC +eRights +false +1 +LOGDT025 +1 CHAR + + + + +N +1 CHAR,, +false + + +walloar +2021-04-20 14:22:18 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:16:49 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:16:49 UTC +eRights +false +1 +LOGDT007 +,, +false + + +walloar +2021-04-20 14:16:49 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:16:49 UTC +eRights +false +1 +LOGDT007 +,, +false + + +tapiafo +2021-04-27 09:51:04 UTC +eRights +true +false +1 +LOGDT025 +1 CHAR +1 CHAR,, +false + + + + +walloar +2021-04-20 14:16:49 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_DOCS_PK +walloar +2021-04-26 13:29:43 UTC +eRights +008EB962-D1B2-FE22-EC97-7031C5AE9C64 +Unique Plain Index +false + + + + + +walloar +2021-04-20 14:17:49 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml new file mode 100644 index 0000000..361c846 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml @@ -0,0 +1,205 @@ + + +ERIGHTS-TEST +ERIGHTS +V_CITIES +walloar +2021-03-02 08:04:44 UTC +eRights +true + +true + + +ERIGHTS-TEST +V_CITIES +CITY_CODE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (12 BYTE) +CITY_CODE +false +1B8996F9-E0C8-9AEA-1F33-1944069A7248 + + +ERIGHTS-TEST +V_CITIES +COUNTRY_CODE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (12 BYTE) +COUNTRY_CODE +false +B1A2A460-C6A6-D0DD-E445-679924857C00 + + +ERIGHTS-TEST +V_CITIES +CD_SYSPER +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (12 BYTE) +CD_SYSPER +false +DF8A7D3D-C6F8-9B1E-29F3-B754953FF431 + + +ERIGHTS-TEST +V_CITIES +CD2_SYSPER +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (12 BYTE) +CD2_SYSPER +false +AA174DE0-804D-AA12-CE14-6BC0F2ADFE7A + + +ERIGHTS-TEST +V_CITIES +CD_SIRE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (12 BYTE) +CD_SIRE +false +0B036C2B-2CDA-512B-F6F2-FC7EDC1A10B8 + + +ERIGHTS-TEST +V_CITIES +NAP_CD +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (12 BYTE) +NAP_CD +false +63C3787E-32D2-738E-C529-DB72704BAAD7 + + +ERIGHTS-TEST +V_CITIES +RNG_ID +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +NUMBER +RNG_ID +false +4352314B-C587-4F7D-89D6-C97A8F2C5E69 + + +ERIGHTS-TEST +V_CITIES +DESCRIPTION_EN +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (240 BYTE) +DESCRIPTION_EN +false +878355A5-1FBA-3593-AD50-EFD35789B697 + + +ERIGHTS-TEST +V_CITIES +DESCRIPTION_FR +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (240 BYTE) +DESCRIPTION_FR +false +8344A317-F588-DEB1-C212-DA6D3369C046 + + + + +true +ERIGHTS +MV_CITIES + + +CITY_CODE +ERIGHTS +MV_CITIES + + +COUNTRY_CODE +ERIGHTS +MV_CITIES + + +CD_SYSPER +ERIGHTS +MV_CITIES + + +CD2_SYSPER +ERIGHTS +MV_CITIES + + +CD_SIRE +ERIGHTS +MV_CITIES + + +NAP_CD +ERIGHTS +MV_CITIES + + +RNG_ID +ERIGHTS +MV_CITIES + + +DESCRIPTION_EN +ERIGHTS +MV_CITIES + + +DESCRIPTION_FR +ERIGHTS +MV_CITIES + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml new file mode 100644 index 0000000..afe0d9c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml @@ -0,0 +1,583 @@ + + +ERIGHTS-TEST +ERIGHTS +V_REPORT_MOVEMENT_FILES +walloar +2021-03-02 08:04:44 UTC +eRights +true + +true + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +MOVEMENT_FILE_ID +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +NUMBER +movement_file_id +false +EC3E4FCB-381E-4110-E5F2-080037C6A330 + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +FIRST_NAME +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +first_name +CHAR (1 BYTE) +first_name +false +93C4ADB8-BA9A-3DD2-3241-4963B3D94F8E + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +LAST_NAME +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +last_name +CHAR (1 BYTE) +last_name +false +3BC0D2CB-BBDF-444A-F77D-26EA52C205C2 + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +STATUS +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +status +VARCHAR2 (16 CHAR) +status +false + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +STARTDATEFUTURE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +startdatefuture +DATE +startdatefuture +coalesce(f.start_date,assign_start_date_to) +false + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +ENDDATEFUTURE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +enddatefuture +DATE +enddatefuture +CASEWHENEXTRACT(YEARFROM(coalesce(f.estimated_end_date,assign_end_date_to)))IN(2099,9999)THENto_date(NULL)ELSEcoalesce(f.estimated_end_date,assign_end_date_to)END +false + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +MOVEMENTFROM +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +movementfrom +VARCHAR2 (1042 BYTE) +movementfrom +initcap(ci_from.description_en)||', '||ct_from.name_en +false + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +MOVEMENTTO +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +movementto +VARCHAR2 (1042 BYTE) +movementto +initcap(ci_to.description_en)||', '||ct_to.name_en +false + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +EVACUATION_STATUS +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +CHAR (1 BYTE) +evacuation_status +false +93C4ADB8-BA9A-3DD2-3241-4963B3D94F8E + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +BUDGDET_LINE_FUTURE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +budgdet_line_future +VARCHAR2 (256 CHAR) +budgdet_line_future +false + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +MOVEMENTTYPE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +movementtype +VARCHAR2 (33 BYTE) +movementtype +false + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +MOVEMENTYEAR +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +movementyear +NUMBER +movementyear +false + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +MOVEMENTCONTEXT +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +movementcontext +VARCHAR2 (128 BYTE) +movementcontext +false + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +PERID +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +perid +NUMBER +perid +false + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +FUTUREASSIGNMENT +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +futureassignment +NUMBER +futureassignment +CASEWHENmvtp.movement_typelike'%-HQ'THENnullELSEf.job_id_toEND +false + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +FILEID +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +fileid +VARCHAR2 (255 CHAR) +fileid +false + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +PRIORITY +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +CHAR (1 BYTE) +priority +false +3BC0D2CB-BBDF-444A-F77D-26EA52C205C2 + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +ALLOCATEDTOCURRENT +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +allocatedtocurrent +VARCHAR2 (255 CHAR) +allocatedtocurrent +false + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +ALLOCATEDTOFUTURE +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +allocatedtofuture +VARCHAR2 (255 CHAR) +allocatedtofuture +false + + +ERIGHTS-TEST +V_REPORT_MOVEMENT_FILES +REASON +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +reason +CHAR (1 BYTE) +reason +'1' +false + + +walloar +2021-03-23 13:38:16 UTC +eRights +true +false +NUMBER +delegation_org_id_from +false +1B05FE22-DF96-7AA9-9F17-FECFF293B693 +FF74A656-1D74-CA01-A02B-65A0579DD208
    +
    +
    + + +true +ERIGHTS +MOVEMENT_FILES + + +true +ERIGHTS +MOVEMENT_CONTEXT + + +true +ERIGHTS +V_PEOPLE +true + + +true +ERIGHTS +MOVEMENT_TYPES + + +true +ERIGHTS +MV_COUNTRIES + + +true +ERIGHTS +MV_CITIES + + +MOVEMENT_FILE_ID +ERIGHTS +MOVEMENT_FILES + + +EVACUATION_STATUS +ERIGHTS +MOVEMENT_FILES + + +PRIORITY +ERIGHTS +MOVEMENT_FILES + + +DELEGATION_ORG_ID_FROM +ERIGHTS +MOVEMENT_FILES + + +MOVEMENT_TYPE +ERIGHTS +MOVEMENT_TYPES + + +CITY_CODE +ERIGHTS +MV_CITIES + + +NAME +ERIGHTS +MOVEMENT_CONTEXT + + +COUNTRY_CODE_TO +ERIGHTS +MOVEMENT_FILES + + +BUDGET_LINE +ERIGHTS +MOVEMENT_FILES + + +ASSIGN_START_DATE_TO +ERIGHTS +MOVEMENT_FILES + + +YEAR +ERIGHTS +MOVEMENT_FILES + + +NAME_EN +ERIGHTS +MV_COUNTRIES + + +JOB_ID_TO +ERIGHTS +MOVEMENT_FILES + + +COUNTRY_CODE +ERIGHTS +MV_CITIES + + +MOVEMENT_CONTEXT_ID +ERIGHTS +MOVEMENT_CONTEXT + + +ESTIMATED_END_DATE +ERIGHTS +MOVEMENT_FILES + + +MOVEMENT_TYPE_ID +ERIGHTS +MOVEMENT_TYPES + + +DESCRIPTION_EN +ERIGHTS +MV_CITIES + + +MOVEMENT_TYPE_ID +ERIGHTS +MOVEMENT_FILES + + +COUNTRY_CODE +ERIGHTS +MV_COUNTRIES + + +PER_ID +ERIGHTS +V_PEOPLE + + +START_DATE +ERIGHTS +MOVEMENT_FILES + + +ASSIGN_END_DATE_TO +ERIGHTS +MOVEMENT_FILES + + +CITY_CODE_FROM +ERIGHTS +MOVEMENT_FILES + + +CONTEXT_ID +ERIGHTS +MOVEMENT_FILES + + +CITY_CODE_TO +ERIGHTS +MOVEMENT_FILES + + +FILE_ID +ERIGHTS +MOVEMENT_FILES + + +FIRST_NAME +ERIGHTS +V_PEOPLE + + +PER_ID +ERIGHTS +MOVEMENT_FILES + + +STATE +ERIGHTS +MOVEMENT_FILES + + +ORG_CD_TO +ERIGHTS +MOVEMENT_FILES + + +COUNTRY_CODE_FROM +ERIGHTS +MOVEMENT_FILES + + +LAST_NAME +ERIGHTS +V_PEOPLE + + +ORG_CD_FROM +ERIGHTS +MOVEMENT_FILES + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml new file mode 100644 index 0000000..81df77d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml @@ -0,0 +1,105 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_V_USER_PERMISSIONS +walloar +2021-03-02 08:04:44 UTC +eRights +true + +true + + +ERIGHTS-TEST +ANK_V_USER_PERMISSIONS +PER_ID +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +PER_ID +NUMBER (8) +PER_ID +false + + +ERIGHTS-TEST +ANK_V_USER_PERMISSIONS +ORG_ID +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +ORG_ID +NUMBER +ORG_ID +NVL(MV.ORG_ID,-1) +false + + +ERIGHTS-TEST +ANK_V_USER_PERMISSIONS +PERMISSION +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +PERMISSION +VARCHAR2 (4000 BYTE) +PERMISSION +false + + +ERIGHTS-TEST +ANK_V_USER_PERMISSIONS +ACCESS_MODE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +ACCESS_MODE +VARCHAR2 (1 BYTE) +ACCESS_MODE +false + + + + +true +ERIGHTS +ANK_MV_USER_SYS_ORG_PERMS + + +ACCESS_MODE +ERIGHTS +ANK_MV_USER_SYS_ORG_PERMS + + +PER_ID +ERIGHTS +ANK_MV_USER_SYS_ORG_PERMS + + +FEATURE +ERIGHTS +ANK_MV_USER_SYS_ORG_PERMS + + +ORG_ID +ERIGHTS +ANK_MV_USER_SYS_ORG_PERMS + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/665F7232-E34D-D4E3-2772-641E0C8D3265.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/665F7232-E34D-D4E3-2772-641E0C8D3265.xml new file mode 100644 index 0000000..0f41bba --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/665F7232-E34D-D4E3-2772-641E0C8D3265.xml @@ -0,0 +1,424 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +V_EMPTY_FLAT_RATE_ENTITLEMENTS +walloar +2021-05-21 14:11:11 UTC +eRights +137D2EDE-EFF5-0DBD-49EC-778A3A98E663 +true + +true + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +NUMBER +ENTITLMNT_TYPE_ID +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +NUMBER +ENTITLMNT_TYPE_CATG_ID +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +NUMBER +MOVEMENTYEAR +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +NUMBER +MOVEMENT_TYPE_ID +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +VARCHAR2 (33 BYTE) +MOVEMENTTYPE +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +VARCHAR2 (128 BYTE) +MOVEMENTCONTEXT +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +NUMBER +MOVEMENT_FILE_ID +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +VARCHAR2 (100 CHAR) +STATUS +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +VARCHAR2 (3000 CHAR) +DISABLE_REASON +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +CHAR (1 BYTE) +ENT_TYPE_DEFAULT +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +VARCHAR2 (1 CHAR) +ENABLE +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +NUMBER +PER_ID +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +VARCHAR2 (255 CHAR) +FIRST_NAME +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +VARCHAR2 (255 CHAR) +LAST_NAME +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +VARCHAR2 (3 CHAR) +CITY_CODE_FROM +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +VARCHAR2 (3 CHAR) +CITY_CODE_TO +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +VARCHAR2 (3 CHAR) +COUNTRY_CODE_FROM +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +VARCHAR2 (3 CHAR) +COUNTRY_CODE_TO +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +VARCHAR2 (1042 BYTE) +MOVEMENTFROM +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +VARCHAR2 (1042 BYTE) +MOVEMENTTO +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +VARCHAR2 (255 CHAR) +ALLOCATEDTOCURRENT +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +VARCHAR2 (255 CHAR) +ALLOCATEDTOFUTURE +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +NUMBER +ORG_ID_FROM +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +NUMBER +ORG_ID_TO +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +VARCHAR2 (255 CHAR) +FILE_ID +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +walloar +2021-05-21 14:11:11 UTC +eRights +true +false +VARCHAR2 (50 BYTE) +ENTITLMNT_TYPES_CAT_CODE +false +665F7232-E34D-D4E3-2772-641E0C8D3265 + + +tapiafo +2021-05-26 16:03:45 UTC +eRights +true +false +entitlmnt_maxs_cat_code_list +UNKNOWN +entitlmnt_maxs_cat_code_list +LISTAGG(entitlmnt_maxs_cat_code,',')WITHINGROUP(ORDERBYentitlmnt_maxs_cat_code) +false + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml new file mode 100644 index 0000000..0d152f8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml @@ -0,0 +1,260 @@ + + +ERIGHTS-TEST +ERIGHTS +V_PEOPLE +walloar +2021-03-02 08:04:44 UTC +eRights +true + +true + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +PER_ID +NUMBER (8) +PER_ID +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +TITLE +VARCHAR2 (3 CHAR) +TITLE +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +FIRST_NAME +VARCHAR2 (255 CHAR) +FIRST_NAME +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +LAST_NAME +VARCHAR2 (255 CHAR) +LAST_NAME +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +GENDER +VARCHAR2 (1 CHAR) +GENDER +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +BIRTH_CITY +VARCHAR2 (70 CHAR) +BIRTH_CITY +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +BIRTH_COUNTRY_CODE +VARCHAR2 (108 BYTE) +BIRTH_COUNTRY_CODE +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +PRIVATE_EMAIL +VARCHAR2 (320 CHAR) +PRIVATE_EMAIL +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +DATE_OF_BIRTH +DATE +DATE_OF_BIRTH +false +73DB7963-4431-C4C4-5300-393B221A8121 + + + + +true +ERIGHTS +MV_PERSONS_HIST_COM + + +true +ERIGHTS +MV_EMAILS + + +true +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_EEAS + + +TITLE +ERIGHTS +MV_PERSONS_HIST_COM + + +SURNAME +ERIGHTS +MV_PERSONS_HIST_EEAS + + +FIRST_NAME +ERIGHTS +MV_PERSONS_HIST_COM + + +SURNAME +ERIGHTS +MV_PERSONS_HIST_COM + + +EMAIL +ERIGHTS +MV_EMAILS + + +FIRST_NAME +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_COM + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_COM + + +PER_ID +ERIGHTS +MV_PERSONS_HIST_COM + + +GENRE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PER_ID +ERIGHTS +MV_EMAILS + + +PER_ID +ERIGHTS +MV_PERSONS_HIST_EEAS + + +GENRE +ERIGHTS +MV_PERSONS_HIST_COM + + +TITLE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_EEAS + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml new file mode 100644 index 0000000..c7fd5aa --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml @@ -0,0 +1,289 @@ + + +ERIGHTS-TEST +ERIGHTS +V_COUNTRIES +walloar +2021-03-02 08:04:44 UTC +eRights +true + +true + + +ERIGHTS-TEST +V_COUNTRIES +COUNTRY_CODE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (12 BYTE) +COUNTRY_CODE +false +1D4A1338-265D-B794-5894-D9F92D3F7ED4 + + +ERIGHTS-TEST +V_COUNTRIES +CD_ISO_A2 +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (8 BYTE) +CD_ISO_A2 +false +323B5191-360C-2233-C6FA-D651622B30A2 + + +ERIGHTS-TEST +V_COUNTRIES +CD_ISO_N3 +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +NUMBER +CD_ISO_N3 +false +E525A5AB-0BAD-94BA-DB1F-C8F4F3625467 + + +ERIGHTS-TEST +V_COUNTRIES +NAME_EN +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (800 BYTE) +NAME_EN +false +63456827-6675-2736-F4A4-83603CC0E8C2 + + +ERIGHTS-TEST +V_COUNTRIES +LONG_NAME_EN +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (800 BYTE) +LONG_NAME_EN +false +1922F135-203C-5CB0-49C0-FE4EC144A172 + + +ERIGHTS-TEST +V_COUNTRIES +NAME_FR +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (800 BYTE) +NAME_FR +false +C371C0A1-7341-A8B8-66B3-B65465539020 + + +ERIGHTS-TEST +V_COUNTRIES +LONG_NAME_FR +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (800 BYTE) +LONG_NAME_FR +false +553B1E65-AAD9-78EB-9467-EF0257D707A8 + + +ERIGHTS-TEST +V_COUNTRIES +EU_STATE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (1 BYTE) +EU_STATE +false +20EA3310-0A06-065C-14D3-22E04071AB91 + + +ERIGHTS-TEST +V_COUNTRIES +CAPITAL +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (240 BYTE) +CAPITAL +false +37A15AE8-76CD-A57C-45A4-AF52D7246146 + + +ERIGHTS-TEST +V_COUNTRIES +COUNTRY_PHONE_CODE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (20 BYTE) +COUNTRY_PHONE_CODE +false +2D149952-90A3-470A-CBCA-C9C50BC0EC9F + + +ERIGHTS-TEST +V_COUNTRIES +CONTINENT_CODE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (8 BYTE) +CONTINENT_CODE +false +618DB82F-A14C-3FC2-61BE-03DFE0114333 + + +ERIGHTS-TEST +V_COUNTRIES +STATUS +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +CHAR (1 BYTE) +STATUS +false +936ADD2B-E0A7-7BDA-2943-E5251AD94E0D + + +ERIGHTS-TEST +V_COUNTRIES +CURRENCY_CODE +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +VARCHAR2 (12 BYTE) +CURRENCY_CODE +false +DCFAA63A-C6AB-1748-373D-141C96604942 + + +ERIGHTS-TEST +V_COUNTRIES +CURRENCY_NAME +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +VARCHAR2 (240 BYTE) +CURRENCY_NAME +false +DEF6306D-7B96-A1C1-075B-6BC5F7331CDC + + + + +true +ERIGHTS +MV_COUNTRIES + + +COUNTRY_CODE +ERIGHTS +MV_COUNTRIES + + +CD_ISO_A2 +ERIGHTS +MV_COUNTRIES + + +CD_ISO_N3 +ERIGHTS +MV_COUNTRIES + + +NAME_EN +ERIGHTS +MV_COUNTRIES + + +LONG_NAME_EN +ERIGHTS +MV_COUNTRIES + + +NAME_FR +ERIGHTS +MV_COUNTRIES + + +LONG_NAME_FR +ERIGHTS +MV_COUNTRIES + + +EU_STATE +ERIGHTS +MV_COUNTRIES + + +CAPITAL +ERIGHTS +MV_COUNTRIES + + +COUNTRY_PHONE_CODE +ERIGHTS +MV_COUNTRIES + + +CONTINENT_CODE +ERIGHTS +MV_COUNTRIES + + +STATUS +ERIGHTS +MV_COUNTRIES + + +CURRENCY_CODE +ERIGHTS +MV_COUNTRIES + + +CURRENCY_NAME +ERIGHTS +MV_COUNTRIES + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7.xml new file mode 100644 index 0000000..3435d43 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7.xml @@ -0,0 +1,259 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +V_EMPTY_FLAT_RATE_OR_SURFACE +walloar +2021-05-12 10:22:34 UTC +eRights +B8BA2119-13C4-DD3C-B801-019A4BFF28A1 +true + + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +ENTITLMNT_TYPE_ID +NUMBER +ENTITLMNT_TYPE_ID +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +ENTITLMNT_TYPE_CATG_ID +NUMBER +ENTITLMNT_TYPE_CATG_ID +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +MOVEMENT_TYPE_ID +NUMBER +MOVEMENT_TYPE_ID +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +MOVEMENT_FILE_ID +NUMBER +MOVEMENT_FILE_ID +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +STATUS +VARCHAR2 (100 CHAR) +STATUS +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +DISABLE_REASON +VARCHAR2 (3000 CHAR) +DISABLE_REASON +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +ENT_TYPE_DEFAULT +CHAR (1 BYTE) +ENT_TYPE_DEFAULT +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +ENABLE +VARCHAR2 (1 CHAR) +ENABLE +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +PER_ID +NUMBER +PER_ID +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +CITY_CODE_FROM +VARCHAR2 (3 CHAR) +CITY_CODE_FROM +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +CITY_CODE_TO +VARCHAR2 (3 CHAR) +CITY_CODE_TO +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +COUNTRY_CODE_FROM +VARCHAR2 (3 CHAR) +COUNTRY_CODE_FROM +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +COUNTRY_CODE_TO +VARCHAR2 (3 CHAR) +COUNTRY_CODE_TO +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +ORG_CD_FROM +VARCHAR2 (255 CHAR) +ORG_CD_FROM +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +ORG_CD_TO +VARCHAR2 (255 CHAR) +ORG_CD_TO +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +ORG_ID_FROM +NUMBER +ORG_ID_FROM +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +ORG_ID_TO +NUMBER +ORG_ID_TO +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + +walloar +2021-05-12 10:22:34 UTC +eRights +true +false +FILE_ID +VARCHAR2 (255 CHAR) +FILE_ID +false +92DB4EA9-7548-B3A1-0A67-A42C4F1D89D7 + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml new file mode 100644 index 0000000..af8a7e5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml @@ -0,0 +1,856 @@ + + +ERIGHTS-TEST +ERIGHTS +V_STAFFMEMBERS +walloar +2021-03-02 08:04:44 UTC +eRights +true + +true + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +PER_ID +NUMBER (8) +PER_ID +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +FIRST_NAME +VARCHAR2 (255 CHAR) +FIRST_NAME +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +LAST_NAME +VARCHAR2 (255 CHAR) +LAST_NAME +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +GENDER +VARCHAR2 (1 CHAR) +GENDER +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +EMAIL +VARCHAR2 (4000 BYTE) +EMAIL +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +BIRTH_CITY +VARCHAR2 (70 CHAR) +BIRTH_CITY +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +BIRTH_COUNTRY_CODE +VARCHAR2 (36 BYTE) +BIRTH_COUNTRY_CODE +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +BIRTH_COUNTRY_DESC +VARCHAR2 (800 BYTE) +BIRTH_COUNTRY_DESC +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +RECRUITMENT_CITY +VARCHAR2 (200 CHAR) +RECRUITMENT_CITY +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +RECRUITMENT_COUNTRY +VARCHAR2 (815 BYTE) +RECRUITMENT_COUNTRY +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +ORGANIZATION_NAME +VARCHAR2 (60 CHAR) +ORGANIZATION_NAME +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +ORGANIZATION_CITY +VARCHAR2 (500 CHAR) +ORGANIZATION_CITY +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +ORGANIZATION_COUNTRY +VARCHAR2 (200 CHAR) +ORGANIZATION_COUNTRY +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +ORG_ID +NUMBER +ORG_ID +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +JOB_ID +NUMBER +JOB_ID +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +ASSIGN_START_DATE +DATE +ASSIGN_START_DATE +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +ASSIGN_END_DATE +DATE +ASSIGN_END_DATE +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +ORG_CD +VARCHAR2 (60 CHAR) +ORG_CD +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +PRIVATE_EMAIL +VARCHAR2 (320 CHAR) +PRIVATE_EMAIL +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +ORIGIN_CITY +VARCHAR2 (200 CHAR) +ORIGIN_CITY +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +ORIGIN_COUNTRY_CODE +VARCHAR2 (3 CHAR) +ORIGIN_COUNTRY_CODE +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +ORIGIN_COUNTRY_DESC +VARCHAR2 (800 BYTE) +ORIGIN_COUNTRY_DESC +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +STATUTORY_LINK_CODE +VARCHAR2 (3 CHAR) +STATUTORY_LINK_CODE +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2021-08-23 15:14:12 UTC +eRights +true +false +STATUTORY_LINK_DESC +VARCHAR2 (2000 CHAR) +STATUTORY_LINK_DESC +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + + + +true +ERIGHTS +V_RECRUITMENT_PLACES +true + + +true +ERIGHTS +MV_ENTITIES + + +true +ERIGHTS +MV_COUNTRIES + + +true +ERIGHTS +MV_EMAILS + + +true +ERIGHTS +MV_PERSONS_EEAS + + +true +ERIGHTS +MV_PERSONS_HIST_EEAS + + +true +ERIGHTS +MV_PERSONS_COM + + +true +ERIGHTS +MV_PERSONS_HIST_COM + + +true +ERIGHTS +MV_ENTITIES_HIST_COM + + +true +ERIGHTS +MV_ASSIGNMENTS_COM + + +PER_ID +ERIGHTS +MV_PERSONS_HIST_EEAS + + +JOB_ID +ERIGHTS +MV_PERSONS_COM + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_COM + + +EMAIL +ERIGHTS +MV_PERSONS_EEAS + + +PER_ID +ERIGHTS +MV_PERSONS_COM + + +SURNAME +ERIGHTS +MV_PERSONS_EEAS + + +START_DATE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +ORG_ID +ERIGHTS +MV_PERSONS_COM + + +PER_ID +ERIGHTS +MV_PERSONS_HIST_COM + + +SURNAME +ERIGHTS +MV_PERSONS_COM + + +ORG_CD +ERIGHTS +MV_PERSONS_EEAS + + +JOB_ID +ERIGHTS +MV_PERSONS_EEAS + + +GENRE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PER_ID +ERIGHTS +MV_PERSONS_EEAS + + +START_DATE +ERIGHTS +MV_PERSONS_HIST_COM + + +RECR_PAY_CD +ERIGHTS +V_RECRUITMENT_PLACES + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_EEAS + + +ASSIGN_START_DATE +ERIGHTS +MV_PERSONS_EEAS + + +END_DATE +ERIGHTS +MV_ASSIGNMENTS_COM + + +COUNTRY_CODE +ERIGHTS +MV_COUNTRIES + + +END_DATE +ERIGHTS +MV_ENTITIES_HIST_COM + + +ENG_COUNTRY +ERIGHTS +MV_ENTITIES_HIST_COM + + +LIEU_RECR +ERIGHTS +V_RECRUITMENT_PLACES + + +ORG_CD +ERIGHTS +MV_PERSONS_COM + + +NAME_EN +ERIGHTS +MV_COUNTRIES + + +ENG_CITY +ERIGHTS +MV_ENTITIES + + +GENRE +ERIGHTS +MV_PERSONS_EEAS + + +PER_ID +ERIGHTS +MV_ASSIGNMENTS_COM + + +FIRST_NAME +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME +ERIGHTS +MV_PERSONS_COM + + +FIRST_NAME +ERIGHTS +MV_PERSONS_HIST_EEAS + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_EEAS + + +ASSIGN_END_DATE +ERIGHTS +MV_PERSONS_EEAS + + +ENG_CITY +ERIGHTS +MV_ENTITIES_HIST_COM + + +START_DATE +ERIGHTS +MV_ASSIGNMENTS_COM + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_COM + + +ORG_ID +ERIGHTS +MV_ENTITIES + + +NAME_EN +ERIGHTS +V_RECRUITMENT_PLACES + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_COM + + +GENRE +ERIGHTS +MV_PERSONS_COM + + +ORG_ID +ERIGHTS +MV_ENTITIES_HIST_COM + + +PER_ID +ERIGHTS +MV_EMAILS + + +EMAIL +ERIGHTS +MV_EMAILS + + +ENG_COUNTRY +ERIGHTS +MV_ENTITIES + + +FIRST_NAME +ERIGHTS +MV_PERSONS_HIST_COM + + +GENRE +ERIGHTS +MV_PERSONS_HIST_COM + + +PER_ID +ERIGHTS +V_RECRUITMENT_PLACES + + +EMAIL +ERIGHTS +MV_PERSONS_COM + + +ORG_ID +ERIGHTS +MV_PERSONS_EEAS + + +SURNAME +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_COM + + +TOJ_CD +ERIGHTS +MV_ASSIGNMENTS_COM + + +SURNAME +ERIGHTS +MV_PERSONS_HIST_COM + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_EEAS + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml new file mode 100644 index 0000000..cfd29f9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml @@ -0,0 +1,218 @@ + + +ERIGHTS-TEST +ERIGHTS +V_FAMILY_MEMBERS +walloar +2021-03-02 08:04:44 UTC +eRights +true + 50 + AND trunc(sysdate) BETWEEN r.date_from AND r.date_to )]]> +true + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +FAMILY_MEMBER_ID +VARCHAR2 (51 BYTE) +FAMILY_MEMBER_ID +false +8E53E153-9F19-5529-9963-9C4835F0A05B +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +PER_ID +NUMBER (8) +PER_ID +false +34F40095-DB15-607A-2FF6-A48FD78CDE0D +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +SURNAME +VARCHAR2 (255 CHAR) +SURNAME +false +E66A827C-1B7D-5FFF-9EF4-5185849D6FDC +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +DATE_OF_BIRTH +DATE +DATE_OF_BIRTH +false +CDA57C61-7038-FFEB-822C-100D68E5F96A +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +TRP_CODE +VARCHAR2 (400 BYTE) +TRP_CODE +false +14985099-DAE4-41FA-8370-C838E004A5FA +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +REL_PER_ID +NUMBER (8) +REL_PER_ID +false +CFCF8869-BEFA-6411-4536-13BA4AA7880D +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +REL_SURNAME +VARCHAR2 (255 CHAR) +REL_SURNAME +false +2D9B5DB9-AF1E-5DD9-A1A4-7FD6D5B004F1 +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +REL_FIRST_NAME +VARCHAR2 (255 CHAR) +REL_FIRST_NAME +false +E3B38D88-04A1-EA8F-7E16-C2C317EA9FE2 +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +REL_DATE_OF_BIRTH +DATE +REL_DATE_OF_BIRTH +false +E8D48FA0-6DE5-DA1C-4386-50E46B2C2A25 +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2021-04-26 13:29:43 UTC +eRights +true +false +CHILD_ALLOWANCE_GRANTED +VARCHAR2 (1 BYTE) +CHILD_ALLOWANCE_GRANTED +false +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + + + +true +ERIGHTS +MV_FAMILY_MEMBERS + + +FAMILY_MEMBER_ID +ERIGHTS +MV_FAMILY_MEMBERS + + +PER_ID +ERIGHTS +MV_FAMILY_MEMBERS + + +SURNAME +ERIGHTS +MV_FAMILY_MEMBERS + + +DATE_OF_BIRTH +ERIGHTS +MV_FAMILY_MEMBERS + + +TRP_CODE +ERIGHTS +MV_FAMILY_MEMBERS + + +REL_PER_ID +ERIGHTS +MV_FAMILY_MEMBERS + + +REL_SURNAME +ERIGHTS +MV_FAMILY_MEMBERS + + +REL_FIRST_NAME +ERIGHTS +MV_FAMILY_MEMBERS + + +REL_DATE_OF_BIRTH +ERIGHTS +MV_FAMILY_MEMBERS + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/D21245B2-8F64-2469-F8D7-25F4597156F2.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/D21245B2-8F64-2469-F8D7-25F4597156F2.xml new file mode 100644 index 0000000..aa0596d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/D21245B2-8F64-2469-F8D7-25F4597156F2.xml @@ -0,0 +1,190 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +V_FAMILY_MEMBERS +walloar +2021-03-17 08:07:49 UTC +eRights +87A9197B-996E-5564-BD1D-885BCD5E9F55 +true + 50 + AND trunc(sysdate) BETWEEN r.date_from AND r.date_to )]]> +true + + +walloar +2021-05-11 06:48:47 UTC +eRights +true +false +FAMILY_MEMBER_ID +VARCHAR2 (51 BYTE) +FAMILY_MEMBER_ID +false +D21245B2-8F64-2469-F8D7-25F4597156F2 + + +walloar +2021-05-11 06:48:47 UTC +eRights +true +false +PER_ID +NUMBER (8) +PER_ID +false +D21245B2-8F64-2469-F8D7-25F4597156F2 + + +walloar +2021-05-11 06:48:47 UTC +eRights +true +false +SURNAME +VARCHAR2 (255 CHAR) +SURNAME +false +D21245B2-8F64-2469-F8D7-25F4597156F2 + + +walloar +2021-05-11 06:48:47 UTC +eRights +true +false +DATE_OF_BIRTH +DATE +DATE_OF_BIRTH +false +D21245B2-8F64-2469-F8D7-25F4597156F2 + + +walloar +2021-05-11 06:48:47 UTC +eRights +true +false +TRP_CODE +VARCHAR2 (100 BYTE) +TRP_CODE +false +D21245B2-8F64-2469-F8D7-25F4597156F2 + + +walloar +2021-05-11 06:48:47 UTC +eRights +true +false +REL_PER_ID +NUMBER (8) +REL_PER_ID +false +D21245B2-8F64-2469-F8D7-25F4597156F2 + + +walloar +2021-05-11 06:48:47 UTC +eRights +true +false +REL_SURNAME +VARCHAR2 (255 CHAR) +REL_SURNAME +false +D21245B2-8F64-2469-F8D7-25F4597156F2 + + +walloar +2021-05-11 06:48:47 UTC +eRights +true +false +REL_FIRST_NAME +VARCHAR2 (255 CHAR) +REL_FIRST_NAME +false +D21245B2-8F64-2469-F8D7-25F4597156F2 + + +walloar +2021-05-11 06:48:47 UTC +eRights +true +false +REL_DATE_OF_BIRTH +DATE +REL_DATE_OF_BIRTH +false +D21245B2-8F64-2469-F8D7-25F4597156F2 + + +walloar +2021-05-11 06:48:47 UTC +eRights +true +false +CHILD_ALLOWANCE_GRANTED +VARCHAR2 (1 BYTE) +CHILD_ALLOWANCE_GRANTED +false +D21245B2-8F64-2469-F8D7-25F4597156F2 + + + + +true +E_RIGHTS +MV_PERSON_RELATIVES_RIGHTS + + +DATE_FROM +E_RIGHTS +MV_PERSON_RELATIVES_RIGHTS + + +PER_ID_ATTRIB +E_RIGHTS +MV_PERSON_RELATIVES_RIGHTS + + +PER_ID_BENEF +E_RIGHTS +MV_PERSON_RELATIVES_RIGHTS + + +DATE_TO +E_RIGHTS +MV_PERSON_RELATIVES_RIGHTS + + +RGT_ID +E_RIGHTS +MV_PERSON_RELATIVES_RIGHTS + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml new file mode 100644 index 0000000..4e09a1c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml @@ -0,0 +1,127 @@ + + +ERIGHTS-TEST +ERIGHTS +V_RECRUITMENT_PLACES +walloar +2021-03-02 08:04:44 UTC +eRights +true + +true + + +ERIGHTS-TEST +V_RECRUITMENT_PLACES +PER_ID +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +NUMBER (8) +per_id +false +0591F117-9D62-8F71-C17D-BF536CB5A41D + + +ERIGHTS-TEST +V_RECRUITMENT_PLACES +LIEU_RECR +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +lieu_recr +VARCHAR2 (300 CHAR) +lieu_recr +false + + +ERIGHTS-TEST +V_RECRUITMENT_PLACES +RECR_PAY_CD +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +recr_pay_cd +VARCHAR2 (3 CHAR) +recr_pay_cd +false + + +ERIGHTS-TEST +V_RECRUITMENT_PLACES +NAME_EN +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (800 BYTE) +name_en +false +63456827-6675-2736-F4A4-83603CC0E8C2 + + + + +true +ERIGHTS +MV_PERSON_ADDRESS + + +true +ERIGHTS +MV_COUNTRIES + + +PER_ID +ERIGHTS +MV_PERSON_ADDRESS + + +NAME_EN +ERIGHTS +MV_COUNTRIES + + +CITY_NAME +ERIGHTS +MV_PERSON_ADDRESS + + +TADR_CD +ERIGHTS +MV_PERSON_ADDRESS + + +COUNTRY_CODE +ERIGHTS +MV_PERSON_ADDRESS + + +COUNTRY_CODE +ERIGHTS +MV_COUNTRIES + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml new file mode 100644 index 0000000..434fe09 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml @@ -0,0 +1,80 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_V_USER_IDENTITIES +walloar +2021-03-02 08:04:44 UTC +eRights +true + +true + + +ERIGHTS-TEST +ANK_V_USER_IDENTITIES +PER_ID +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +NUMBER (8) +PER_ID +false +9A7B1580-BF2E-4181-E524-A10E14DCBF90 + + +ERIGHTS-TEST +ANK_V_USER_IDENTITIES +ORG_ID +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +NUMBER (10) +ORG_ID +false +7B5DD59B-26D7-4A79-359E-0C7E98629F2F + + +ERIGHTS-TEST +ANK_V_USER_IDENTITIES +USERID +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (50 CHAR) +USERID +false +53659D3C-32FF-BC14-59AF-878303476DCB + + + + +true +ERIGHTS +ANK_MV_PERSONS_EEAS + + +PER_ID +ERIGHTS +ANK_MV_PERSONS_EEAS + + +ORG_ID +ERIGHTS +ANK_MV_PERSONS_EEAS + + +USERID +ERIGHTS +ANK_MV_PERSONS_EEAS + + + diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/FE2DF588-2615-8CC0-5B56-6BAF79B680ED.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/FE2DF588-2615-8CC0-5B56-6BAF79B680ED.xml new file mode 100644 index 0000000..a256cfa --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/FE2DF588-2615-8CC0-5B56-6BAF79B680ED.xml @@ -0,0 +1,87 @@ + + +walloar +2021-03-25 11:25:25 UTC +eRights +view_12 +true + +true + + +walloar +2021-03-25 11:26:58 UTC +eRights +false +NUMBER +per_id +false +0EC80C67-CA1A-15CA-9DAE-B4F1C1E7DCB3 +B55392AB-563F-D199-B9AB-EE5BC9FC5638
    +
    + +walloar +2021-03-25 11:26:58 UTC +eRights +false +VARCHAR2 (4 CHAR) +email_type +false +E2D6980A-6E1A-08BC-9635-1C907921E9AA +B55392AB-563F-D199-B9AB-EE5BC9FC5638
    +
    + +walloar +2021-03-25 11:26:58 UTC +eRights +true +false +VARCHAR2 (320 CHAR) +email +false +5AA9B0C6-F21A-AF95-574A-B3412FE99CB3 +B55392AB-563F-D199-B9AB-EE5BC9FC5638
    +
    +
    + + +true +PERSONS_EMAILS + + +PER_ID +PERSONS_EMAILS + + +EMAIL_TYPE +PERSONS_EMAILS + + +EMAIL +PERSONS_EMAILS + + + + +walloar +2021-03-25 11:28:53 UTC +eRights +true +Primary Constraint + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml new file mode 100644 index 0000000..4b059a4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.1.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml @@ -0,0 +1,587 @@ + + +ERIGHTS-TEST +ERIGHTS +V_JOBS +walloar +2021-03-02 08:04:44 UTC +eRights +true + trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + jobh.job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate) + UNION + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + jobh.job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate)]]> +true + + +ERIGHTS-TEST +V_JOBS +JOB_ID +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +NUMBER (10) +job_id +false +0958C976-A9E4-44F7-4937-E311486C05C1 + + +ERIGHTS-TEST +V_JOBS +JOB_MOMENT +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +job_moment +VARCHAR2 (255 CHAR) +job_moment +CASEWHENtrunc(jobh.start_date)>trunc(sysdate)THEN'FUTURE_JOB'ELSE'PRESENT_JOB'END +false +E4B0D70C-0987-6F5B-5DDE-8FAA0AD5C7CF + + +ERIGHTS-TEST +V_JOBS +JOB_TYPE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (400 CHAR) +job_type +false +C8272002-9797-93FD-5B52-5C83758507A9 + + +ERIGHTS-TEST +V_JOBS +PERSONNEL_TYPE_DESC +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (100 CHAR) +personnel_type_desc +false +F724B4E4-0D2E-2AC0-C84B-27FCC54132A8 + + +ERIGHTS-TEST +V_JOBS +BUDGETARY_LINE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +NUMBER (10) +budgetary_line +false +D4EEF64B-3AD6-1994-04C1-F1BF1EA6D8E0 + + +ERIGHTS-TEST +V_JOBS +JOB_CITY_CODE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +job_city_code +NUMBER +job_city_code +false +5602B522-52AB-2F29-A5ED-F5488758B8C9 + + +ERIGHTS-TEST +V_JOBS +JOB_CITY_NAME +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +job_city_name +NUMBER +job_city_name +false +D3BB98A8-C71D-8DAA-067C-A5D0CBDBB224 + + +ERIGHTS-TEST +V_JOBS +JOB_COUNTRY_CODE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +job_country_code +NUMBER +job_country_code +false +4BE4A393-9904-8CEF-DAC7-4F30BFF6B99A + + +ERIGHTS-TEST +V_JOBS +JOB_COUNTRY_NAME +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +job_country_name +VARCHAR2 (256 BYTE) +job_country_name +false +834CA2B1-A2C7-0E87-53AC-1B83DB92AF02 + + +ERIGHTS-TEST +V_JOBS +ORGANIZATION_COUNTRY +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +organization_country +NUMBER +organization_country +false +1CACD13A-3206-6455-7C62-EC82D40227BF + + +ERIGHTS-TEST +V_JOBS +ORGANIZATION_CITY +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +organization_city +VARCHAR2 (256 BYTE) +organization_city +false +D0BB763E-F13A-D203-7066-36C81E9A126C + + +ERIGHTS-TEST +V_JOBS +ORGANIZATION_NAME +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +organization_name +VARCHAR2 (450 BYTE) +organization_name +false +2CE4D04C-51D6-31EA-7FE5-B6A8CD3BB00E + + +ERIGHTS-TEST +V_JOBS +ORG_ID +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +NUMBER (10) +org_id +false + + +ERIGHTS-TEST +V_JOBS +ASSIGN_START_DATE_TO +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +assign_start_date_to +DATE +assign_start_date_to +false + + +ERIGHTS-TEST +V_JOBS +ASSIGN_END_DATE_TO +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +assign_end_date_to +DATE +assign_end_date_to +CASEWHENEXTRACT(YEARFROMasgh.end_date)IN(2099,9999)THENto_date(NULL)ELSEasgh.end_dateEND +false + + +ERIGHTS-TEST +V_JOBS +PER_ID +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +NUMBER (8) +per_id +false + + +ERIGHTS-TEST +V_JOBS +SEVERITY_LEVEL +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +NUMBER +severity_level +false + + +ERIGHTS-TEST +V_JOBS +EVACUATION_LEVEL_CODE_ID +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +NUMBER +evacuation_level_code_id +false + + +ERIGHTS-TEST +V_JOBS +ALERT_STATUS_ID +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +NUMBER +alert_status_id +false + + +ERIGHTS-TEST +V_JOBS +EVACUATION_LEVEL_CODE +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +VARCHAR2 (256 BYTE) +evacuation_level_code +false + + +ERIGHTS-TEST +V_JOBS +ORGANIZATION_COUNTRY_CODE +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +organization_country_code +VARCHAR2 (3 CHAR) +organization_country_code +false + + +ERIGHTS-TEST +V_JOBS +ORGANIZATION_CITY_CODE +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +organization_city_code +VARCHAR2 (3 CHAR) +organization_city_code +false + + +ERIGHTS-TEST +V_JOBS +FAMILY_POSTING_TYPE_ID +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +NUMBER +family_posting_type_id +false + + +ERIGHTS-TEST +V_JOBS +FAMILY_POSTING_TYPE +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +VARCHAR2 (256 BYTE) +family_posting_type +false + + +ERIGHTS-TEST +V_JOBS +HOD +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +hod +CHAR (1 BYTE) +hod +CASEWHENhod.per_idISNOTNULLTHEN'Y'ELSE'N'END +false + + +ERIGHTS-TEST +V_JOBS +FAMILY_POSTING_TYPE_CAT +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +family_posting_type_cat +VARCHAR2 (10 BYTE) +family_posting_type_cat +CASEWHENinstr(upper(delstat.family_posting_type),'NON-FAMILY')>0THEN'NON_FAMILY'ELSE'FAMILY'END +false + + +ERIGHTS-TEST +V_JOBS +BUDGET_LINE +walloar +2021-03-02 08:04:45 UTC +eRights +true +false +VARCHAR2 (450 BYTE) +budget_line +false + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/.gitignore b/e-rights-common/src/main/database/model/2.9.0/.gitignore new file mode 100644 index 0000000..e60e2d0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/.gitignore @@ -0,0 +1,37 @@ +**/*.localz +**/*.local +**/*.git +**/*.DS_Store +**/.DS_Store +**/.do_pool/** +**/.do_pool +**/*#JDEVADF_* +**/*~ +**/*.scc +**/*.mv.* +**/*.unmkelem.* +**/*.sync.* +**/*.rename.* +**/*.unbranch.* +**/*.unco.* +**/*.saved.* +**/*.client_contrib +**/.svn/** +**/.data/** +**/*.cdi +**/*.bak +**/*.generated.java +**/*.ignore +**/*.labellog.emd +**/.*.cs +**/.fullsource_nt +**/.fullsource +**/.depprod_nt +**/.depprod +**/.ade_path +**/.ade_path/** +**/*.contrib* +**/*.keep +**/*.rvi +**/.#* +**/CVS/** diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights.dmd b/e-rights-common/src/main/database/model/2.9.0/eRights.dmd new file mode 100644 index 0000000..f63b464 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights.dmd @@ -0,0 +1,106 @@ + + +walloar +2021-03-02 08:03:42 UTC +eRights +false +54CD39BB-6F39-125F-AF7C-6BCDE7DF05E0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\eRights\Data Model + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\Git\e-rights\e-rights\e-rights-common\src\main\database\model\2.1.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + +C:\Users\walloar\NO BACKUP - LOCAL DATA\git\e-rights\e-rights\e-rights-common\src\main\database\model\2.9.0 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/businessinfo/Business Information.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/businessinfo/Business Information.xml new file mode 100644 index 0000000..07d87bb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/businessinfo/Business Information.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:03:42 UTC +eRights +false + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/datatypes/DataTypes.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/datatypes/DataTypes.xml new file mode 100644 index 0000000..a1df779 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/datatypes/DataTypes.xml @@ -0,0 +1,15 @@ + + +walloar +2021-03-02 08:03:42 UTC +eRights +false +array_ref_ +array_ +10 +ARRAY +_Array +inst_ +ref_ +true + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/datatypes/structuredtype/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/datatypes/structuredtype/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml new file mode 100644 index 0000000..c916a43 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/datatypes/structuredtype/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml @@ -0,0 +1,10 @@ + + +walloar +2021-03-02 08:03:42 UTC +eRights +false +true +false +true + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/datatypes/structuredtype/seg_0/F72C39E0-D1CA-8821-2AD7-A1E95A37D3D1.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/datatypes/structuredtype/seg_0/F72C39E0-D1CA-8821-2AD7-A1E95A37D3D1.xml new file mode 100644 index 0000000..cbb3e55 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/datatypes/structuredtype/seg_0/F72C39E0-D1CA-8821-2AD7-A1E95A37D3D1.xml @@ -0,0 +1,10 @@ + + +walloar +2021-03-02 08:03:42 UTC +eRights +false +true +false +true + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/datatypes/subviews/53731C10-AADE-6CA5-0EC8-3F63EAFA3EE9.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/datatypes/subviews/53731C10-AADE-6CA5-0EC8-3F63EAFA3EE9.xml new file mode 100644 index 0000000..51a04ce --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/datatypes/subviews/53731C10-AADE-6CA5-0EC8-3F63EAFA3EE9.xml @@ -0,0 +1,26 @@ + + +walloar +walloar +2021-03-02 08:03:42 UTC +false +true +false +true +false +false +false +-1 +false +1 + + +false + + + +false + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/dl_settings.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/dl_settings.xml new file mode 100644 index 0000000..336229b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/dl_settings.xml @@ -0,0 +1,494 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/Logical.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/Logical.xml new file mode 100644 index 0000000..3e0a3e7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/Logical.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:03:42 UTC +eRights +false + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/04D3CBF7-C56D-19C9-3EC4-5A5DDB43FB8D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/04D3CBF7-C56D-19C9-3EC4-5A5DDB43FB8D.xml new file mode 100644 index 0000000..4b51eef --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/04D3CBF7-C56D-19C9-3EC4-5A5DDB43FB8D.xml @@ -0,0 +1,67 @@ + + +walloar +2021-03-02 09:53:56 UTC +37E3DC03-087A-AC5F-9A2C-183450FB80D0 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +C842236D-B70E-916B-ABFF-A937C38A7D82 +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +97734700-3A6E-ED6E-75D9-C5BF93CD619E +eRights + + + +true +false +1 +LOGDT024 +320 CHAR +320 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +AE7B9FC5-D642-42DF-12A7-A79645E5AECA +eRights + + + +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/0A25DED2-7358-8778-4067-C1F6D795C59F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/0A25DED2-7358-8778-4067-C1F6D795C59F.xml new file mode 100644 index 0000000..ec18303 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/0A25DED2-7358-8778-4067-C1F6D795C59F.xml @@ -0,0 +1,197 @@ + + +walloar +2021-03-02 09:53:56 UTC +98E73A9D-E059-2081-CA84-1CC8723D60B9 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +8D7002F2-0BC8-7D1F-93D9-31E67B8BF31F +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +F9865CC7-AD88-2AA7-BAF8-4DE64C0227CF +eRights + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +3BCA53BD-B160-970E-836E-DE3097D51BEA +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +CB54DFB5-9C59-EB7F-6BE8-BE83B2E9840D +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +BB90336E-7949-8B25-210B-453B5881E8F0 +eRights + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F1F9B5F2-D725-4CA8-5705-52CCC29A9AF0 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +400212E6-2161-5053-80FF-51298B96236F +eRights + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +77CD46C7-7ACD-F466-A915-604801A0DF67 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +13444E17-952F-984A-7B49-F7CCF56813B7 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +3BB5A520-8951-18EF-B4B9-74483259DB76 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +BB460419-0844-B55C-3019-9DD7F34F50D1 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +A578724B-6362-095E-1B09-40F0943FFB20 +eRights + + + +true +false +1 +LOGDT025 +1 CHAR +'N' +1 CHAR,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/0D5C4365-9EF9-39ED-41CD-899807840607.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/0D5C4365-9EF9-39ED-41CD-899807840607.xml new file mode 100644 index 0000000..68b8043 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/0D5C4365-9EF9-39ED-41CD-899807840607.xml @@ -0,0 +1,148 @@ + + +walloar +2021-03-02 09:53:55 UTC +ADE383DF-74A4-CD6A-4E95-CEF01A091594 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +8A7575C4-101D-4797-72BC-B0CCCFC69D02 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +5785565F-E5B5-8EB3-152A-67A352536411 +eRights + + + + +true +8F3929E2-B542-145A-3429-6CCA6D6B9198 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +4AF3603D-3AAC-77A8-463B-721B8E2B9BB8 +eRights + + + + +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +9A07E48A-7461-DDED-AB4A-B5B195DB9445 +eRights + + + + +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +4074AD0B-0F94-309A-9A16-0AD3E8B6E079 +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +5DE254B2-F8B3-D396-4EA2-56EC3714D38A +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +6A1CC110-93AB-B657-B920-B9955E844C83 +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + + + +walloar +2021-03-02 09:53:55 UTC +6BAB2B42-6776-35C8-7739-3287138399CF +eRights +false + + + + +true + +5EA5CE55-B7A8-958C-9931-EC453C9A1C80 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/0E4A76A6-E6A7-BCF4-262F-E062D3EFD3C0.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/0E4A76A6-E6A7-BCF4-262F-E062D3EFD3C0.xml new file mode 100644 index 0000000..5043c22 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/0E4A76A6-E6A7-BCF4-262F-E062D3EFD3C0.xml @@ -0,0 +1,720 @@ + + +walloar +2021-03-02 09:53:56 UTC +5C7C6563-FD70-E24D-E603-049AE09A0549 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +82F9B1C3-736A-9C0C-08D2-D35719FD0B17 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +3C42B3A2-5225-6B8F-586D-F3F7339E7ADB +eRights + + + +true +false +1 +LOGDT019 +6 +0 +,6,0 + + +walloar +2021-03-02 09:53:56 UTC +EE7D8E35-B804-5714-DFBE-9B1C1225AED3 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +19135BBE-90F9-BFF3-167B-844CF2E03575 +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +577A2EB9-1E0A-C19F-F8D8-C16967E8BB85 +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +1F6C55C0-85A2-DCE1-7BDF-B46E9E3F7157 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +5EC5BF83-C283-9AD2-2F4C-BA19CFE7FCBA +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +8ED4D4AF-40BE-C4AC-6A00-CE86AFFDE4E1 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +5855B19C-3EBE-E508-6AEA-8455BCCDB7F4 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +6452312C-28DF-004D-89A4-393F54A98A74 +eRights + + + +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C9272CBA-2298-82C3-7639-0BB862F37F40 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +EF415F1B-0883-2855-4742-CD82F252BBF2 +eRights + + + +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +25132977-9621-3B5C-9EC1-6420ABE82865 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +5374C219-B082-89F6-CA7B-57383FF46222 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +920B140F-DFE5-4E12-812F-BE38FFAF4A89 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +4C8E5A82-843E-D3D9-41DC-C5ACB84AD2B0 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +6F4EF27C-92F5-FE74-FD36-9298139AC9FF +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +560F1FD7-184C-A7C6-1D57-DCBD48AB1622 +eRights + + + +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +D266C23E-0263-8DB3-AB84-E0FE207A3BFE +eRights + + + +true +false +1 +LOGDT024 +511 CHAR +511 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +9ABF9556-F7AC-1422-30B3-A836B5F8D3A4 +eRights + + + +true +false +1 +LOGDT024 +511 CHAR +511 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +21990717-83F3-90C0-3D94-2D20C0DDDDF8 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +37C6EAA2-AE5D-67D5-676D-21CA509648F9 +eRights + + + +false +1 +LOGDT024 +5 CHAR +5 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +A182700E-D693-8CF8-F291-545E7609D349 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +00C4A457-32EC-36A3-ABE2-F21B82C4B580 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +82D5D8E8-2A46-C363-B6C0-8D1CDB25F06A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +160E01A1-3DB8-4C34-0E76-BC388E0129AA +eRights + + + +false +1 +LOGDT024 +10 BYTE +10 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +0F6E4D23-C58E-26E8-495D-67B8B17482FA +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +5F7B144A-A42C-D4A9-E612-3812F0BB2D69 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +FB115C37-038F-514E-568C-269DBFAE035F +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +05A4405A-20ED-2322-683F-EA12A2454CFA +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +4E522695-D88D-F587-79BD-3F80D910874B +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +EAA75B2E-2C6A-1E72-A22D-EC6E3074C1E9 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +A959B018-5DFE-74F4-8898-7F436DC3D824 +eRights + + + +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +3C948F40-1012-863A-1E0B-06B7C7705724 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +977B812D-0632-E1AC-BA3D-429895ADE733 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +8C7B48AF-6576-74A8-C020-237D2573E5AA +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +DBDD255C-0F6F-87BB-08E9-14A08C7947C6 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +587F6728-6315-6F37-991F-C8BB584125C0 +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +6A24EA95-6443-10A1-EE5C-ADC8EB10E1C3 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +13A513A9-469B-33CC-D11A-C0E6B15F5E27 +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +92F2C5D9-B731-6BD4-F35B-25DC9E704040 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +6FA6C5A7-4879-39DA-5136-12C380FAE1E2 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +78474EB6-F247-A28E-79CB-6681FAF14B10 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +1460D6EB-5F78-ECCC-992D-8ED1C2AC0770 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +08555E95-C716-35A7-1DD7-8E63E5B32C28 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +69FCACD6-7F86-AE48-E35D-D5C50FB44DC0 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A56394A7-E8C4-DAD6-5447-A62E16E788A0 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/1538EE67-31E5-2ED2-855B-DB67B263DC87.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/1538EE67-31E5-2ED2-855B-DB67B263DC87.xml new file mode 100644 index 0000000..26f7351 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/1538EE67-31E5-2ED2-855B-DB67B263DC87.xml @@ -0,0 +1,104 @@ + + +walloar +2021-03-02 09:53:55 UTC +553540BB-8C28-E761-E9C7-357F98E646DC +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +AFF6EA3D-0ED5-5244-FE43-556339DBCBD0 +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +DDB12E76-973D-FDAC-A199-FFD7843951AA +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +C406D4BC-8238-3430-C24A-2A1A401738FB +eRights + + + +false +1 +LOGDT024 +255 BYTE +255 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +D0D102E5-D2F6-BAA0-F9A9-D9F9019502FF +eRights + + + +false +1 +LOGDT024 +255 BYTE +255 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +7677A461-5B94-A1DB-45A4-6C4E5264D17F +eRights + + + +true +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:55 UTC +5AFB5328-C819-BA9D-9F14-2211127F0A74 +eRights +false + + + +true + +0387F2E0-0D2F-1DF6-9507-E4C2231BE633 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/1627BE4F-1FD2-61DF-AA2D-864043976623.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/1627BE4F-1FD2-61DF-AA2D-864043976623.xml new file mode 100644 index 0000000..2893121 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/1627BE4F-1FD2-61DF-AA2D-864043976623.xml @@ -0,0 +1,182 @@ + + +walloar +2021-03-02 09:53:56 UTC +64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +6AA926C7-3A4F-EDB4-39C1-20A318070C66 +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +4393808A-0F62-EAB9-8334-18AA9BCD7468 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +5E757281-4FB5-5D15-A0A3-CF8E7A78E862 +eRights + + + +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B763A37A-FA65-8FDE-1659-5D9EE66D52CD +eRights + + + +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +178C29C3-ACEF-2079-43DD-347A83395C94 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +D2FFB9DA-A531-35F6-4814-CC8BD27565E8 +eRights + + + +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A40C24CA-8E5A-5935-5A3D-FC180397B35A +eRights + + + +true +false +1 +LOGDT015 +6 +,6, + + +walloar +2021-03-02 09:53:56 UTC +6728A4EF-E938-7F10-B696-BB2CF54D95BA +eRights + + + +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +C4F0F9BC-FCB5-AB6A-47BA-16F940220294 +eRights + + + +true +false +1 +LOGDT015 +6 +,6, + + +walloar +2021-03-02 09:53:56 UTC +A42AC8DB-03DB-49F9-C48F-DF08FB10C1E4 +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +0CB4E413-BFAE-2CC9-9DF2-95C01E316639 +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/19C2AE0B-5ABB-D92B-669D-7D164C93E569.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/19C2AE0B-5ABB-D92B-669D-7D164C93E569.xml new file mode 100644 index 0000000..774d839 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/19C2AE0B-5ABB-D92B-669D-7D164C93E569.xml @@ -0,0 +1,916 @@ + + +walloar +2021-03-02 09:53:56 UTC +27AB3173-8221-4362-B890-FE16F11A6765 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +336D2A36-E5C2-909D-2619-4B367F14C2F7 +eRights + + + +true +false +1 +LOGDT025 +9 BYTE +9 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +EEC70BC0-D914-2107-C85C-E5F191462189 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +06B57361-55DF-6714-1A71-31B8AF935238 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +8455A227-2D22-472C-2DB4-8FEC6CB946A2 +eRights + + + +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +3249CF13-8136-2053-A7D6-3BAC143EE8F4 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +2580E817-0BC5-A624-08A6-4A94E98EBA7D +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +CF56E323-13B5-05BE-E710-1C16D19E53B5 +eRights + + + +true +false +1 +LOGDT024 +1200 BYTE +1200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +889C08B0-75FB-7632-5C64-FCBDED5F020B +eRights + + + +true +false +1 +LOGDT024 +1689 BYTE +1689 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +DEA104DB-E1B0-8656-AF67-9F7E4D3BC5DB +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +C34DA4C3-CCE2-E425-6C8C-3B211D127FD9 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +BD0F2AF4-9506-A8AF-A989-80A23694DBA2 +eRights + + + +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +305E58F3-0D8E-BFDD-239B-173E9F01F620 +eRights + + + +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +6D42BB8B-84AB-7675-3C71-214DE6FF2582 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +A8A36E2C-2AF5-8315-B6B8-EDCD35459936 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +AD25DF1F-BE63-7428-C937-CAE2CCF6FA14 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +FEFE7350-14B6-BBB0-AC16-F3B6AFCBBAFA +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +91DA2579-D1F0-C1F0-8E83-7D9F8BC6A44F +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E0E47CEA-1A2F-585B-6AD8-0ADAEB674255 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +B02DE2F2-1625-B90D-03F7-72E91A3539C1 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +D5A581AB-3A7A-8CE6-ED95-9CC759A5D2CD +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +2F060981-2D58-1809-A73E-759A07152EB2 +eRights + + + +true +false +1 +LOGDT024 +24 BYTE +24 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +189004FB-20A9-ABAE-B372-28712A928ADC +eRights + + + +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +6BFCAED6-F070-B6C5-4FC8-44DEF4BF6D5A +eRights + + + +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +A1B93856-BD63-FC49-7BDF-A07095D9D53B +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +7DE587C9-BE00-FB91-C7C6-FB59A5B4AA4B +eRights + + + +true +false +1 +LOGDT024 +90 BYTE +90 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F5152F92-F1BE-75B3-D330-C0335B6B5B56 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +AC3B21ED-FFA6-CE88-2064-25D2130814E0 +eRights + + + +true +false +1 +LOGDT024 +90 BYTE +90 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +89A3AF52-2BA2-1F31-0DD3-6FF8AFF38773 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +0D75D90C-E965-A2AF-B362-707779CCDC02 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +D1FBBA8F-6F92-FC5E-2BC9-EC6D90766B63 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4B452035-97FA-2BEB-2762-BEF2E3489EA1 +eRights + + + +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +87B52092-6D5C-F84B-FCAF-774C97B8C559 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +4A3FC0F8-53AD-55AC-FC42-87DF21586818 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +7A3E986D-C13C-8627-5777-382F2AB91126 +eRights + + + +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7A6D3DBA-477E-ABE2-1E08-F0904D1F4198 +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9CC86676-91BD-3F5F-A211-00D856A18A3D +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +2CE4D04C-51D6-31EA-7FE5-B6A8CD3BB00E +eRights + + + +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9DF10502-6907-60BA-688A-599C718D6455 +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +49419D8C-E8C0-1557-337F-98C0061C3445 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +2F4CB57B-926E-D250-9067-3177D5CA0E2C +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +D252B32C-86B3-6731-14EA-424590C21BB3 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +ED1BA4E7-8213-4A54-A41C-DA2FC4861D5C +eRights + + + +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +365F0AEC-66EF-1143-E7CE-6CB0FBDD3A18 +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7017F0FD-1976-1AFD-B57F-277A538F0BDC +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +78D265D2-2CC5-D0C6-D7D2-1C8AFA7B3508 +eRights + + + +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7FDF79B2-ED3B-F02C-715B-2668E34B9C91 +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +76A0910A-4D9F-4F22-C5D8-80E045A5DBD4 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +7D2DE1E8-F2FD-2C5B-39F7-F82A087D615F +eRights + + + +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B1937593-8D9C-7868-73DA-91E9A3A467BE +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +83BD626D-F9CD-3397-D406-9134A30F6C61 +eRights + + + +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +8E37CF38-7A86-46DB-5B8C-7774DC5947DB +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2153A8F2-925B-7C9E-8DE8-41340DED276B +eRights + + + +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +49E2FDD3-9C73-FCF1-8586-8008A444CC85 +eRights + + + +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +AA1DB387-7AFB-423A-0FC2-154F35056C27 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7596A243-4EEB-0ECE-A13D-9C4AD3D5A91B +eRights + + + +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +AED3CB72-D08C-8F91-7AFC-05B4EA3F8056 +eRights + + + +true +false +1 +LOGDT015 +6 +,6, + + +walloar +2021-03-02 09:53:56 UTC +D6220B06-F64F-7733-0133-C7BDDBEE4CE4 +eRights + + + +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +5F9249E6-CB6A-DC84-2070-BCAA3C8AC619 +eRights + + + +true +false +1 +LOGDT015 +6 +,6, + + +walloar +2021-03-02 09:53:56 UTC +C487DA59-BEF1-7126-7B55-362D03904C29 +eRights + + + +true +false +1 +LOGDT024 +900 BYTE +900 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +1C4BA16B-26E1-565F-A5A2-4CBDB8225EE5 +eRights + + + +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/1A8EC118-CF74-21F4-D9CB-E1D45087EA97.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/1A8EC118-CF74-21F4-D9CB-E1D45087EA97.xml new file mode 100644 index 0000000..a1a12d2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/1A8EC118-CF74-21F4-D9CB-E1D45087EA97.xml @@ -0,0 +1,78 @@ + + +walloar +2021-03-02 09:53:56 UTC +EA9E31FF-E810-F570-9354-8B2CA9473801 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +E3124291-A993-4C23-4213-4A4794B247F9 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +16E02466-0EC3-755A-97C0-3A8400F36126 +eRights + + + +true +587B5FB6-A155-75E0-96C2-E7BA8AA0515F +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +4FFA3719-6E4F-A41C-CFC3-721B0CD15782 +eRights + + + +true +1E317FC4-9686-5B2A-C41D-842669B03869 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +F70CC781-77E5-4C67-36F4-D09B5C67FB66 +eRights + + + +true +false +1 +LOGDT019 +,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/1E6EF06A-4036-3EDA-8064-6985CCE104D4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/1E6EF06A-4036-3EDA-8064-6985CCE104D4.xml new file mode 100644 index 0000000..85985dc --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/1E6EF06A-4036-3EDA-8064-6985CCE104D4.xml @@ -0,0 +1,226 @@ + + +walloar +2021-03-02 09:53:56 UTC +A6257421-D545-B3B5-624E-10E8629539A7 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +A8C23CD4-7F61-5755-859A-2A7C2EF7DE46 +eRights + + + +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +BFACE714-233F-5B4D-9271-79C39A4F7C0D +eRights + + + +false +1 +LOGDT024 +95 BYTE +95 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +5436493D-66AC-4572-E77C-B2D81B285BD4 +eRights + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +75A2B9C9-A4B6-3094-FF3B-14226ECB16DF +eRights + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +66FBC1D4-4355-0284-9AB6-EB45D3FCEA56 +eRights + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +CBB94010-1637-4E5F-39BC-884BBCBC98AD +eRights + + + +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +0646CA7D-7FC5-50CA-BA93-72079CB0F087 +eRights + + + +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +996D40C8-0393-5E15-A98D-8E68DCDC48B7 +eRights + + + +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +9C94222B-61B3-9E09-CE65-8794D4F5B050 +eRights + + + +false +1 +LOGDT024 +16 BYTE +16 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7E5B853F-E0F5-20A8-C0BC-FB5B9B025D95 +eRights + + + +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9481F751-5F98-34D6-0214-9EA8850F23AE +eRights + + + +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +CFABF110-D12B-BEE0-EE87-4C97341C6C51 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +3C5B7322-FBBA-4E8D-0397-F74E35762569 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + + + +walloar +2021-03-02 09:53:56 UTC +CED2EDC8-D6BF-3DF0-E260-0A2A6B12D632 +eRights +false + + + +true + +92CFDFE9-3FB2-497E-4049-74ED999735C9 +AA017A8D-0670-DC0B-BC71-484CEC7A0B5A + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/1EFA70F1-7A65-2AEC-CA48-F8BB6C3E1D5D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/1EFA70F1-7A65-2AEC-CA48-F8BB6C3E1D5D.xml new file mode 100644 index 0000000..e9ba2f6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/1EFA70F1-7A65-2AEC-CA48-F8BB6C3E1D5D.xml @@ -0,0 +1,197 @@ + + +walloar +2021-03-02 09:53:56 UTC +9EF11193-6374-BB46-55D6-BB9A0959070C +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +0479C048-65F0-1624-2C01-B438965A2B55 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +58D6CEA4-8F85-1587-23B4-A770710C799A +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +FE0450C8-6F18-0165-9D4B-6D6114D5B2E6 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +C2C26A69-D5B8-5ADF-64CB-1A2D86EF858E +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +55368B1F-C264-7EB8-E77D-65A7310F175A +eRights + + + +false +1 +LOGDT024 +5 CHAR +5 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +00401CB0-C747-4A14-6944-2E0EE3D5F555 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E6708B1F-2511-8013-A432-D6E340439061 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +A2F366AA-852F-194F-0618-DE4A090635D1 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +1107CC84-1B3E-B5FF-1AA0-E60A11FBE9AE +eRights + + + +false +1 +LOGDT024 +10 CHAR +10 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +B645C6C8-74D6-0F9D-C977-8E6ED011B106 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +6EF26F7C-AB70-B542-331E-818BFB91091E +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +388F417D-79B6-628F-726C-A0558A12AC00 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/236E69EB-16C1-4FED-222F-5D33928F7A09.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/236E69EB-16C1-4FED-222F-5D33928F7A09.xml new file mode 100644 index 0000000..b63aa18 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/236E69EB-16C1-4FED-222F-5D33928F7A09.xml @@ -0,0 +1,219 @@ + + +walloar +2021-03-02 09:53:56 UTC +CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +A8101437-A2F3-C2DA-EDAB-7DFA12B01141 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +C5BC2E69-9A7F-AE70-C4DD-1B975BF5E4C7 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4FB22FFB-48DE-E617-5DEA-54628B0813E9 +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +834E2551-BBAC-58AF-86E7-26D45E92D084 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +A1781827-F932-FDA2-ACDC-5ED04AC0474D +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +11A901D0-BC77-8760-DFA2-264FB7556A0B +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +94DC0AC8-8412-81BB-31BE-85909DC5FB6C +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +9F1D517C-8BD7-09DA-9EB1-74DCAC71E2B3 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4CEC03F4-936C-6852-7294-62A8D1539A47 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C9AD8BDA-D3DD-FDF0-35F6-1DE43A0A484E +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +6DB917FC-032F-9099-B666-8D5E622ADFB2 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +9EBF9C5F-148D-630A-9590-7A38BB544C16 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C32280F6-864F-0C4B-9A65-769991DD94C5 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/2580CBB3-B97C-B649-9472-3D153EA8A687.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/2580CBB3-B97C-B649-9472-3D153EA8A687.xml new file mode 100644 index 0000000..13e0e68 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/2580CBB3-B97C-B649-9472-3D153EA8A687.xml @@ -0,0 +1,125 @@ + + +walloar +2021-03-02 09:53:55 UTC +4FB9EC34-C463-4EB0-4291-ACEE0D992FB6 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +D819AF0C-E95D-FE05-EDF9-D86B0A7BCB3C +eRights + + + + +4A289E71-44F7-2BEA-A3D8-6B78DD82B453 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +613116D9-CBC2-D5ED-F445-E9747F6516F6 +eRights + + + + +527554BD-8ACA-CD89-8105-A0F927A00EF5 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +D819AF0C-E95D-FE05-EDF9-D86B0A7BCB3C +eRights + + + + +36FAE2DA-C70F-C5C4-BC3B-D1E17EF145E7 +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +F8024CC5-DB5B-2E31-9233-44B87475D677 +eRights + + + + +CHK_ANK_EDMS_SRCD_STATUS +false +1 +LOGDT024 +10 BYTE + + + + + + + +10 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +D819AF0C-E95D-FE05-EDF9-D86B0A7BCB3C +eRights + + + + +E5A82808-9BCB-6177-E745-79AA5100AA0B +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:55 UTC +08ADEB45-5870-4330-C2CA-19ED4F5152A6 +eRights +false + + + + +true + +FFDD8DE9-56C8-7F50-41E5-838ECC34465D +6B283D90-D06C-90AB-2130-932DDBCB6AC6 +CD11DC50-6D47-50BB-2978-B01D19E23431 +91B3505C-8F1D-DF42-C878-05280B53A2F8 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/2BF74E48-10B6-230C-329B-98903AA81EA7.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/2BF74E48-10B6-230C-329B-98903AA81EA7.xml new file mode 100644 index 0000000..d547ad7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/2BF74E48-10B6-230C-329B-98903AA81EA7.xml @@ -0,0 +1,77 @@ + + +walloar +2021-03-02 09:53:55 UTC +CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +4E31159F-0558-2DD6-DE0C-24F404298418 +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +DB333C79-F578-CA1E-270B-E66FB0D80B95 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +3D460F59-57E6-685B-668B-7EAC5948ABE5 +eRights + + + +true +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:55 UTC +81C4972B-91D6-AE3E-0833-67784BD6B25D +eRights +false + + + +true + +943811A2-8D04-64CB-1D36-7243DB68CA31 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/2C600E10-CDB3-CA41-2AD9-EC601B961F93.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/2C600E10-CDB3-CA41-2AD9-EC601B961F93.xml new file mode 100644 index 0000000..068c20f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/2C600E10-CDB3-CA41-2AD9-EC601B961F93.xml @@ -0,0 +1,228 @@ + + +walloar +2021-03-02 09:53:55 UTC +F28AEFDE-0804-3C83-F214-6330BE84607B +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +53EB977C-AADD-F6B3-6423-127439C94146 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +6723AA1F-AE41-2087-B3C9-CF448CA500E6 +eRights + + + + +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +7F252970-7173-7EC7-8E41-C0038D5D21DF +eRights + + + + +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +35FCDA7D-C08B-77C6-8F67-3CC5F017F5DA +eRights + + + + +true +false +1 +LOGDT024 +25 BYTE +25 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +CB1FA3E7-2D9D-25D9-0479-6B3307CA15C9 +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +E8BF13EF-D679-B0B5-2758-BA98EC6013FD +eRights + + + + +CHK_ANK_EDMS_EMAILS_FORMAT +false +1 +LOGDT024 +10 BYTE + + + + + +10 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +8C8F9BB6-61B2-186A-A5B3-11CD08C2ED84 +eRights + + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +95DFB0FD-6C5B-F1DD-BBC0-FB9B6B743AFA +eRights + + + + +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +9E96C820-C310-32F9-84F6-E711BDEE82AB +eRights + + + + +false +1 +LOGDT028 +4000 +4000,, + + +walloar +2021-03-02 09:53:55 UTC +541D1968-0B1B-897C-A524-CE0E4D7879F1 +eRights + + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +E1FA4F83-2857-E9C4-8852-8BAF584F8B58 +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +16D20748-B9FD-5871-800A-646E04864E11 +eRights + + + + +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:55 UTC +D520E03C-5B2F-E54E-0A01-3BDA5B4EED17 +eRights +false + + + + +true + +0C9E2E30-978D-41DA-A872-8FE002C6ECCC + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/34E28D0E-DF2A-4861-FE91-5B07537FBF53.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/34E28D0E-DF2A-4861-FE91-5B07537FBF53.xml new file mode 100644 index 0000000..cbcad04 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/34E28D0E-DF2A-4861-FE91-5B07537FBF53.xml @@ -0,0 +1,137 @@ + + +walloar +2021-03-02 09:53:55 UTC +C90B6B2E-6AFE-10D3-5D64-4CD75BE58765 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +043CCF13-0F97-F4DE-ADD0-BC51BABCEF35 +eRights + + + + +0C9E2E30-978D-41DA-A872-8FE002C6ECCC +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +CC69106A-FBC8-6BD3-E138-F27F6DE4FE6E +eRights + + + + +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, + + +walloar +2021-03-02 09:53:55 UTC +622E787A-2BF4-1671-6370-25AA09D2CF8D +eRights + + + + +true +false +1 +LOGDT024 +25 BYTE +25 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +5E1F75FA-B0C3-E816-6BAA-94658817D75A +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +9249F7B3-B99A-31AE-03AD-E37D17AAC1D2 +eRights + + + + +CHK_ANK_EDMS_ECD_STATUS +false +1 +LOGDT024 +10 BYTE + + + + + + + +10 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +D69D7B63-F953-D09B-3AB3-89C9A21D78CF +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + + + +walloar +2021-03-02 09:53:55 UTC +D42EB837-D3E9-2D44-2A27-A1A5195B4B21 +eRights +false + + + + +true + +41435BA7-E7F1-F8F9-D69F-5166D8906E21 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/383E3DF3-8190-8E30-6815-F463818C3D6D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/383E3DF3-8190-8E30-6815-F463818C3D6D.xml new file mode 100644 index 0000000..b2cdcf4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/383E3DF3-8190-8E30-6815-F463818C3D6D.xml @@ -0,0 +1,124 @@ + + +walloar +2021-03-02 09:53:55 UTC +7328B927-1B91-95B9-E292-CC68E5AB9548 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +6904B5C5-5960-DCE5-D4A2-DEA4AE3F1574 +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:55 UTC +B304E179-2927-059C-ADD2-C611817429B2 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +796AFC86-BE8B-B691-89FC-38C76C483677 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +77FD16B8-F334-EDF4-75BE-BD8CC91532A9 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +1FD7E411-B1AA-965F-F044-B66A811AAC52 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +975F8469-FD6A-1B27-76E3-EB5072C3E56F +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +0EBA5570-8BC8-85FE-0E34-572EFB8199DE +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/3A197A79-F412-9811-F8BA-37E76923A918.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/3A197A79-F412-9811-F8BA-37E76923A918.xml new file mode 100644 index 0000000..82188c8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/3A197A79-F412-9811-F8BA-37E76923A918.xml @@ -0,0 +1,98 @@ + + +walloar +2021-03-02 09:53:55 UTC +2AC190F4-57F3-9518-A7E0-8D5D6A6D9230 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +23FDAAE0-304B-5E4D-9BFE-2B4BA74A90E1 +eRights + + + + +527554BD-8ACA-CD89-8105-A0F927A00EF5 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +17D23094-ADB5-0569-71A2-53D4A2D4F233 +eRights + + + + +false +1 +LOGDT025 +36 BYTE +36 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +CFEC5FCA-EE4C-19FF-4703-45C044212BC2 +eRights + + + + +false +1 +LOGDT024 +25 BYTE +25 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +B53FF45D-3E67-49D1-F08A-7712455DB013 +eRights + + + + +false +1 +LOGDT024 +1024 BYTE +1024 BYTE,, + + + + +walloar +2021-03-02 09:53:55 UTC +F135D7A7-2F7D-CDA6-A5EF-6CCAC391E70B +eRights +false + + + + +true + +35925297-5F05-6395-FD75-FBB74A0CB0DB + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/3A36829E-48BC-5E74-0502-0A66603D8939.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/3A36829E-48BC-5E74-0502-0A66603D8939.xml new file mode 100644 index 0000000..0d21b70 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/3A36829E-48BC-5E74-0502-0A66603D8939.xml @@ -0,0 +1,149 @@ + + +walloar +2021-03-02 09:53:55 UTC +9DA3B915-AEE5-12D0-D98D-46EE098AD69E +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +4EC0410B-F3ED-536F-049B-CF90E0332A88 +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +69D466DE-AF7B-E1F2-0B11-0DA09CE792E6 +eRights + + + +false +1 +LOGDT024 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +ED7F372A-9000-2AA8-3E8E-98B31F248DCB +eRights + + + +false +1 +LOGDT024 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +D2BB17F9-ABBE-6A0C-F887-B04551F4E742 +eRights + + + +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +CDEC5141-8310-7BB6-CFBC-896FB094CFB1 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +5552C3B5-9350-FA0A-BAAB-3A928AB24FE2 +eRights + + + +true +false +1 +LOGDT015 +6 +,6, + + +walloar +2021-03-02 09:53:55 UTC +E1622E85-F570-8A7B-6B84-E53A65C597B4 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +E0BAF018-1CAD-5CF1-E3D8-A77A5939DE4D +eRights + + + +true +false +1 +LOGDT015 +6 +,6, + + + + +walloar +2021-03-02 09:53:55 UTC +AC4484FF-C29A-C7F6-D635-9546E65FE004 +eRights +false + + + +true + +9DE7FB35-99F5-1ADF-8DB2-28045C08D661 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/3CBD182B-787C-047D-A4B4-69AACC43DDD1.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/3CBD182B-787C-047D-A4B4-69AACC43DDD1.xml new file mode 100644 index 0000000..1931e1d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/3CBD182B-787C-047D-A4B4-69AACC43DDD1.xml @@ -0,0 +1,135 @@ + + +walloar +2021-03-02 09:53:56 UTC +43547470-BAAB-8980-C971-6E0B2EEA7C9D +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +4BE4A393-9904-8CEF-DAC7-4F30BFF6B99A +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +E5E7B30D-808E-476D-A6A8-0F3E404B3B4C +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +AE2771B9-5551-8C52-4B21-2C33F547CA46 +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +5602B522-52AB-2F29-A5ED-F5488758B8C9 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +D3BB98A8-C71D-8DAA-067C-A5D0CBDBB224 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +834CA2B1-A2C7-0E87-53AC-1B83DB92AF02 +eRights + + + +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +1CACD13A-3206-6455-7C62-EC82D40227BF +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +D0BB763E-F13A-D203-7066-36C81E9A126C +eRights + + + +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/3FE96EE0-95F9-4F69-9FC6-2FDA37553DE6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/3FE96EE0-95F9-4F69-9FC6-2FDA37553DE6.xml new file mode 100644 index 0000000..7c05160 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/3FE96EE0-95F9-4F69-9FC6-2FDA37553DE6.xml @@ -0,0 +1,65 @@ + + +walloar +2021-03-02 09:53:56 UTC +3055D235-F362-1B93-5483-877997EAB707 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +8F64E16A-95C8-1635-221E-5288256CB55A +eRights + + + +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +63BFC88E-3EDF-A398-5456-2DEE666B98BC +eRights + + + +false +1 +LOGDT024 +40 BYTE +40 BYTE,, + + + + +walloar +2021-03-02 09:53:56 UTC +B5A4A996-EEE3-747D-EB5B-BEB62277A855 +eRights +false + + + +true + +536F0D43-BCF4-4520-48CD-16DEC568CADB +DB3494F6-BFB0-4AB8-B6E0-61319CAA7E05 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/4D41A940-7772-0F4E-D47A-6975BB2D5AF0.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/4D41A940-7772-0F4E-D47A-6975BB2D5AF0.xml new file mode 100644 index 0000000..1bb3a7f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/4D41A940-7772-0F4E-D47A-6975BB2D5AF0.xml @@ -0,0 +1,163 @@ + + +walloar +2021-03-02 09:53:56 UTC +4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +008DAECF-D9CE-790D-5E20-F99E23972044 +eRights + + + + +675A581C-86EF-4D68-9D95-52C54296A9F5 +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +008DAECF-D9CE-790D-5E20-F99E23972044 +eRights + + + + +323EFBA8-35C4-7792-B864-BE76652DD698 +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +008DAECF-D9CE-790D-5E20-F99E23972044 +eRights + + + + +681A1055-759C-A8C2-8698-57433F38C50B +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +61F2C4AF-6359-F4F7-808B-7A88C287A9BF +eRights + + + + +true +false +1 +LOGDT029 +4000 +4000,, + + +walloar +2021-03-02 10:15:32 UTC +008DAECF-D9CE-790D-5E20-F99E23972044 +eRights + + + + +952844E2-DA2B-4F1B-259A-3B8EA880491B +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-02 10:15:32 UTC +008DAECF-D9CE-790D-5E20-F99E23972044 +eRights + + + + +9840F489-6AF7-A876-BB1D-C673DD36F02A +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-03 09:44:12 UTC +008DAECF-D9CE-790D-5E20-F99E23972044 +eRights + + + + +952844E2-DA2B-4F1B-259A-3B8EA880491B +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-03 09:44:12 UTC +008DAECF-D9CE-790D-5E20-F99E23972044 +eRights + + + + +9840F489-6AF7-A876-BB1D-C673DD36F02A +false +1 +LOGDT024 +200 BYTE +,, + + + + +walloar +2021-03-02 09:53:56 UTC +CD557C65-EE4A-56F7-E476-B94FAE8F5C58 +eRights +false + + + + +true + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/51A4A3B2-AFF4-BEF1-0E47-742E01DF188A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/51A4A3B2-AFF4-BEF1-0E47-742E01DF188A.xml new file mode 100644 index 0000000..9da54c7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/51A4A3B2-AFF4-BEF1-0E47-742E01DF188A.xml @@ -0,0 +1,278 @@ + + +walloar +2021-03-02 09:53:56 UTC +2865D6B2-76D3-5ED0-460F-BD2F90142C4B +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +E20828DC-3DFF-EA39-969A-58AB34907529 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +0C2FF6A0-6681-01C7-AA05-9E746800B680 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +E73C70A7-4024-B274-1AB6-79365C61C9B5 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +11E0C8E2-2FEC-A913-EE9B-9A44B50DFC53 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4446E36D-06E3-F6C7-F573-6D1CED9DE760 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +09946E5C-206F-F045-8AFF-4F1E2E53CE6B +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +684C3BA8-6F84-877E-8E24-F454825A33E0 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +20E7CB13-12D8-349D-3D71-99D4DAD45574 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +19FFCF28-B9CF-B645-37FD-A631EDF2FB98 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +94F51482-1B41-E7B3-9CE6-741DDE546C30 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +FDCCA541-2295-7BCE-F52C-3FC319E109F5 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +81FA53B6-0478-770D-DF2B-E55EE155D311 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +FDD42E33-60FE-0681-9FBB-AF7E8254F148 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +8C653A1D-3645-C08B-35E0-0C29A0BAFA62 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +F40FF01A-C733-8543-EC18-13EB25BC380D +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +9A8CF051-BB93-84C0-4A16-2AD0E1FBC223 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +4F6AEBB7-1377-85C5-2E3B-6CC383E1466D +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/53DC252B-31A1-BC79-05DE-6287F3A46C1A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/53DC252B-31A1-BC79-05DE-6287F3A46C1A.xml new file mode 100644 index 0000000..47a54fb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/53DC252B-31A1-BC79-05DE-6287F3A46C1A.xml @@ -0,0 +1,192 @@ + + +walloar +2021-03-02 09:53:56 UTC +7495A51C-E8A9-14BE-EABB-02B4CAB54568 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +75AAE159-B2D4-97BF-3408-801BA0A581B8 +eRights + + + + +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +CB9A8FA9-FC23-766E-E1B7-CDE967BAEAE6 +eRights + + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +CE9BB28F-BCC7-E958-D536-AC7AF52EF43B +eRights + + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +1F697908-0B09-D457-4008-09240D8463D8 +eRights + + + + +true +false +1 +LOGDT024 +250 BYTE +250 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B60FCBF7-5D9C-2B3E-7D9C-78F6C3BD4AC9 +eRights + + + + +false +1 +LOGDT024 +250 BYTE +250 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +ADE99F14-2DAE-0C3F-2CFC-784B062B0574 +eRights + + + + +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A2FADA5A-5384-B8B9-0A14-1D70AC497524 +eRights + + + + +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +4F3CE77F-343A-801E-35D8-6EADC9EE9B6A +eRights + + + + +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +3E121D59-4964-F39C-893B-87783D23C830 +eRights + + + + +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B626444E-6153-349A-775C-0E3D9BE8F0F6 +eRights + + + + +true +false +1 +LOGDT029 +4000 +4000,, + + + + +walloar +2021-03-02 09:53:56 UTC +F002BBBD-6D77-5202-4E26-521A2ABBAFC7 +eRights +false + + + + +true + +16DA4AB6-1613-7D13-DDC5-BBAA1E75D452 +575E9E0B-42AD-2B75-9556-C36CD8D52096 +E21FF685-221F-2DD8-9BFB-A6FB32D6EB46 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/54F5ABB2-D9D3-6F84-A6BE-7BE9418086FC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/54F5ABB2-D9D3-6F84-A6BE-7BE9418086FC.xml new file mode 100644 index 0000000..65c8a44 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/54F5ABB2-D9D3-6F84-A6BE-7BE9418086FC.xml @@ -0,0 +1,145 @@ + + +walloar +2021-03-02 09:53:55 UTC +BB0C4DC3-BF20-022E-2EC1-9C41C22FD723 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +77163B9E-9DA1-53D5-F399-1EEB0E19230D +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +2BCE959C-63A7-6313-70A7-DCF7A05B4AA0 +eRights + + + + +0C9E2E30-978D-41DA-A872-8FE002C6ECCC +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +385A9993-303A-AD97-1735-45B242E61DC2 +eRights + + + + +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +7A1EEDCB-F121-3216-79B4-2CF81EDEC2EB +eRights + + + + +false +1 +LOGDT024 +255 BYTE +255 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +ED50C87D-351C-13BC-44E3-53E61C49FDFD +eRights + + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +A6998172-AD3D-26B9-D07B-4C6F583872F0 +eRights + + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + + + +walloar +2021-03-02 09:53:55 UTC +FA3C8983-38A0-07BE-FF30-9B5FCE45EEB5 +eRights +false + + + + +true + +EAD06FA5-2B9C-2BF9-E1E4-491AEC643CFB + + + +walloar +2021-03-02 09:53:55 UTC +F4254CF3-7A75-70B2-A927-412584C95FF1 +eRights +false + + + + + +EAD06FA5-2B9C-2BF9-E1E4-491AEC643CFB +D8CF9EE5-0332-F5F1-150B-0C5B89594C09 +29F20B6E-1181-328F-B337-85A765532E96 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/554A4597-91E5-9A87-3DF1-D09000170E3C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/554A4597-91E5-9A87-3DF1-D09000170E3C.xml new file mode 100644 index 0000000..a631aba --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/554A4597-91E5-9A87-3DF1-D09000170E3C.xml @@ -0,0 +1,829 @@ + + +walloar +2021-03-02 09:53:55 UTC +7437BF45-8F48-51D1-B640-07B1543F8D13 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +9A7B1580-BF2E-4181-E524-A10E14DCBF90 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:55 UTC +E0C5FA83-1FFA-8FB7-2916-07A777C49059 +eRights + + + +true +false +1 +LOGDT019 +6 +0 +,6,0 + + +walloar +2021-03-02 09:53:55 UTC +1BA5C119-38B8-A01F-580E-3FCE5368E43B +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +AD9066E0-0DFA-B5A8-7032-76C445951919 +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +06C299CB-8CE2-2A35-EB62-AA53C4AA48FA +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +97E6FE9E-67B0-9700-4872-60F712B2EBA9 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +BFEB14D7-0623-A2CA-35CB-6DBB06E2D70E +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +96933B3F-D24D-6D49-4538-732A96E146F3 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +88ABDE02-672E-D903-7428-2060799A10E4 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +93084BB3-F2C0-EE6D-F034-0BBD6B6B423E +eRights + + + +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +4746AE8B-42D1-975C-6AA9-F732155562B5 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +A63E2FD0-87CB-9798-A461-3B3BBFC05960 +eRights + + + +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +707997D3-3FE3-D2FB-5D4A-5F7D2DF9E864 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +DB3E544D-3C23-7799-DDB1-F124E17A8BFC +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +F1EC462A-D55A-3B84-65D6-808F1F24778D +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +53659D3C-32FF-BC14-59AF-878303476DCB +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +0396C7EC-073A-6B96-E876-9A980262D813 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +BA5C769E-6A47-E934-D6C2-FAED48D30FBD +eRights + + + +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +4C6076F0-CC39-5F3B-0AEE-786352A420C8 +eRights + + + +true +false +1 +LOGDT024 +101 CHAR +101 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +F5626632-C48F-69D1-2EC4-D7CFE49DBACF +eRights + + + +true +false +1 +LOGDT024 +401 CHAR +401 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +8569D065-333B-CE37-69EF-926FB7332EC3 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +AA5A42C9-C109-9AD7-F584-4D9F10216A90 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +0C3988F3-4C0D-D0E3-C052-FF77646F0964 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +5C50565E-33B4-466B-F12A-E33C721A8773 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +44505DDE-8945-80EF-25EE-0C0613C0FAB7 +eRights + + + +false +1 +LOGDT024 +5 CHAR +5 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +4C480338-A889-FC10-1293-A56ECF58CFF2 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +41B200DA-31A1-1515-D3D1-2121CF2C312D +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +60BEEB4D-810B-90EB-FD84-AEDDB8B8557E +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +5AFD9B32-AC4A-3B42-4716-A73F1C06AB6A +eRights + + + +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +17BFDC91-39CC-F521-2452-054B77AE1A50 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +E79C6AFC-A55B-C633-7BCC-2EDD33A67BF1 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +A226CBBD-4EC2-10A3-9F02-C30A8F54BEA2 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +09353731-B8B3-8218-4EE5-59A11C975F84 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +5041EDD9-2F13-1989-12B3-68794AA322C6 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +091EA81A-C504-135E-38B3-78380E3071AB +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +F5D22899-C42C-9EC8-5D47-80211D1A2B2A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +512AF202-45EE-F3C3-FAF4-D7047F5132E4 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +FEC117D6-CC75-C25A-FE0C-DC114C69B246 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +C5FCC71F-EA30-4C81-80F6-E1B19D2DA634 +eRights + + + +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +7B5DD59B-26D7-4A79-359E-0C7E98629F2F +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +3F1ECC96-0561-97C9-5438-18E48E897600 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +D436C7EA-D7FA-26CA-B424-070F77409BFC +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +78F493D3-EBAE-5824-F56D-E19AB654EFF6 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +374DF08B-BFEA-010C-D0A0-33BF91410112 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +DFEE2567-93CC-713E-DB9E-6294344A5A73 +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:55 UTC +16209711-DBF8-A009-3EB9-01B5250C64D2 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +1B30CB75-3E22-2AE8-9FB5-BA53433E1F8A +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +722D1220-7486-C197-BB36-48B153290E9F +eRights + + + +true +false +1 +LOGDT024 +563 BYTE +563 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +22675D32-C957-08E2-E91A-62B96569551A +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +240DCEC7-587E-2D43-24CA-53BBB164A4A8 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +73D4256E-BE9D-BA71-1FDE-54B949FF75BD +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +B9847028-A7D6-8CE2-E717-DA9C1B245FF7 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +8C39D3B7-0A5F-DE7A-20E4-E4CF35024FF2 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +F1C3705B-8E05-5D77-5E7F-3EA9D6A02228 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/56CABDF3-5535-A1EC-AB17-B73FE749E03E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/56CABDF3-5535-A1EC-AB17-B73FE749E03E.xml new file mode 100644 index 0000000..78ac593 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/56CABDF3-5535-A1EC-AB17-B73FE749E03E.xml @@ -0,0 +1,142 @@ + + +walloar +2021-03-02 09:53:55 UTC +1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +28D362AD-F13D-D58B-8EF5-4A013E3E52F1 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +25A32C98-8731-A2AC-3DE8-1D4239184F6C +eRights + + + + +800C6C00-8D60-4ECC-5D09-08924142E16E +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, + + +walloar +2021-03-02 09:53:55 UTC +DF971A6C-0213-B1CD-00DA-E3568EEF6725 +eRights + + + + +false +1 +LOGDT024 +64 BYTE +64 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +A02F7776-43D2-6530-F465-5CCDC2D541A4 +eRights + + + + +false +1 +LOGDT024 +64 BYTE +64 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +A3794015-A818-B9C0-BCD1-B7985A30E792 +eRights + + + + +false +1 +LOGDT024 +64 BYTE +64 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +CEABD9A9-1BD9-4152-630E-6669E38F99B2 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +E035B278-481A-5264-3D0C-554A24432801 +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + + + +walloar +2021-03-02 09:53:55 UTC +D8725D0D-337C-58FC-DF71-1F93F2CAB60F +eRights +false + + + + +true + +F110FF2F-A877-7D35-8666-D36C6790D80D + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/59763EA4-4AA3-992D-969B-E21B236CB447.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/59763EA4-4AA3-992D-969B-E21B236CB447.xml new file mode 100644 index 0000000..47fdf0f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/59763EA4-4AA3-992D-969B-E21B236CB447.xml @@ -0,0 +1,329 @@ + + +walloar +2021-03-02 09:53:56 UTC +9468D46E-3C04-CCB6-1EB0-D7398A399B45 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +85536C2D-DE96-659A-488C-664E4DFDD24B +eRights + + + + +675A581C-86EF-4D68-9D95-52C54296A9F5 +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +85536C2D-DE96-659A-488C-664E4DFDD24B +eRights + + + + +323EFBA8-35C4-7792-B864-BE76652DD698 +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +85536C2D-DE96-659A-488C-664E4DFDD24B +eRights + + + + +681A1055-759C-A8C2-8698-57433F38C50B +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +6BB1D1C8-EBEB-0BF9-75E5-AAB74CEE42E0 +eRights + + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +27D39468-B882-6E4A-90F2-F4332C720BCF +eRights + + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +159F4A56-07E3-00D8-F3AE-8C990BBDA328 +eRights + + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +C56DADD1-0A58-8FCD-2483-506812A841D9 +eRights + + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +5A0D1371-2146-B65F-495B-9BF4CD0096DD +eRights + + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +09E350F0-6DAD-A390-F033-E18DFCA2A372 +eRights + + + + +true +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +2E056FF3-17E3-9BFD-CF00-213A3C47D80F +eRights + + + + +true +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +A85D607B-3DD9-CDDD-9118-D586FF476370 +eRights + + + + +true +false +1 +LOGDT019 +13 +4 +,13,4 + + +walloar +2021-03-02 09:53:56 UTC +9A59B1D8-E6D3-9D8A-3529-3E495D77A951 +eRights + + + + +true +false +1 +LOGDT019 +13 +4 +,13,4 + + +walloar +2021-03-02 09:53:56 UTC +3C7C2079-968E-ED54-8488-34553C9031D9 +eRights + + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A8022800-86FF-712D-F9B8-3CCC8F9C8C0E +eRights + + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 10:15:32 UTC +85536C2D-DE96-659A-488C-664E4DFDD24B +eRights + + + + +952844E2-DA2B-4F1B-259A-3B8EA880491B +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-02 10:15:32 UTC +85536C2D-DE96-659A-488C-664E4DFDD24B +eRights + + + + +9840F489-6AF7-A876-BB1D-C673DD36F02A +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-03 09:44:12 UTC +85536C2D-DE96-659A-488C-664E4DFDD24B +eRights + + + + +952844E2-DA2B-4F1B-259A-3B8EA880491B +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-03 09:44:12 UTC +85536C2D-DE96-659A-488C-664E4DFDD24B +eRights + + + + +9840F489-6AF7-A876-BB1D-C673DD36F02A +false +1 +LOGDT024 +200 BYTE +,, + + + + +walloar +2021-03-02 09:53:56 UTC +51B3DB44-DCDE-7E7B-42C1-7B514BC512F8 +eRights +false + + + + +true + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/59CE36DB-C17D-DE86-27CC-1B4B49D6BA14.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/59CE36DB-C17D-DE86-27CC-1B4B49D6BA14.xml new file mode 100644 index 0000000..1b58aa3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/59CE36DB-C17D-DE86-27CC-1B4B49D6BA14.xml @@ -0,0 +1,292 @@ + + +walloar +2021-03-02 09:53:56 UTC +8EED841A-564F-73D4-B7CC-0B63A5CD28B4 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +8E53E153-9F19-5529-9963-9C4835F0A05B +eRights + + + +true +false +1 +LOGDT024 +51 BYTE +51 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +34F40095-DB15-607A-2FF6-A48FD78CDE0D +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +E66A827C-1B7D-5FFF-9EF4-5185849D6FDC +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +04775907-6E6B-1397-64AF-2E300FD9B3FA +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +1A6D828C-F871-1CBB-421F-27B01DF63BAC +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +CDA57C61-7038-FFEB-822C-100D68E5F96A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +8ECF5C47-E79E-FDC7-69A6-58CFEC68612B +eRights + + + +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4988B063-B4C3-7483-2C6B-C91F0B6BD45A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +FD5E95D4-754C-633F-B63F-5A66EB0BE46A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +A0FBA189-622F-6EFE-DFA0-B376C4155B07 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +14985099-DAE4-41FA-8370-C838E004A5FA +eRights + + + +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +CFCF8869-BEFA-6411-4536-13BA4AA7880D +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +2D9B5DB9-AF1E-5DD9-A1A4-7FD6D5B004F1 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +DF3CD2AD-211C-4336-A7BC-682A9C54C878 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E3B38D88-04A1-EA8F-7E16-C2C317EA9FE2 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E8D48FA0-6DE5-DA1C-4386-50E46B2C2A25 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +E7DD88D0-F329-9E3F-0290-719112F7CCFF +eRights + + + +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +CE76EAFB-F78C-7C66-BF80-80081F62F013 +eRights + + + +true +false +1 +LOGDT025 +6 BYTE +6 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/5E7BC858-5237-87AF-3D96-5EA273AD7715.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/5E7BC858-5237-87AF-3D96-5EA273AD7715.xml new file mode 100644 index 0000000..ef07ebf --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/5E7BC858-5237-87AF-3D96-5EA273AD7715.xml @@ -0,0 +1,160 @@ + + +walloar +2021-03-02 09:53:55 UTC +D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +4F14A8C7-7D5F-093D-5206-E01E4A8BCA34 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +031D8CC8-2659-CBE8-22FF-A64C93311568 +eRights + + + + +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +10822FB1-E927-B947-6088-4CB8F9A46887 +eRights + + + + +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +F55ABE4D-03C7-D5C9-06B5-5EA126D9F26A +eRights + + + + +true +false +1 +LOGDT024 +25 BYTE +25 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +988BC6CC-C9F2-6B8F-3732-D2D1DF356DE8 +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +8683E12A-7B4F-9FAC-2885-2676333CE896 +eRights + + + + +false +1 +LOGDT028 +4000 +4000,, + + +walloar +2021-03-02 09:53:55 UTC +5D633BD8-B635-1985-216F-B907167DD15D +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +27A6BF6C-040F-2686-E1D7-B80EAD73D7D9 +eRights + + + + +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:55 UTC +6FCCE5B2-F20F-2BF4-C4D5-85627AEC40F3 +eRights +false + + + + +true + +E2957125-2BC0-5F54-B0EB-767B6482A788 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/6083C1F9-6489-EC64-93D3-066DE8307A9E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/6083C1F9-6489-EC64-93D3-066DE8307A9E.xml new file mode 100644 index 0000000..9cb1fec --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/6083C1F9-6489-EC64-93D3-066DE8307A9E.xml @@ -0,0 +1,720 @@ + + +walloar +2021-03-02 09:53:56 UTC +694A91FE-9188-90E5-058F-0FF4F7BFC31B +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +06B86102-59C1-D173-B889-DF23EDE0D8F9 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +0958C976-A9E4-44F7-4937-E311486C05C1 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +5666FFFE-8907-7088-2685-846F103241F0 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +815C6F58-5B99-49FC-EE67-D5492D7270DE +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +975267D7-C11F-866F-2689-BE331E8452BD +eRights + + + +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +180501D7-D967-A09E-9584-D4A9112520C3 +eRights + + + +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +0CF398A3-9803-5134-2BF9-1B34F0E62C50 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +C845F39A-7087-6EFD-4B73-CA7783840046 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +70D6CCD8-1906-D70D-9F66-ACDCC32781A9 +eRights + + + +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +04DFC1BB-D7D9-F135-CF85-53AD38DD1406 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +5C2984DB-094B-3C88-A167-2A9DA6C5ED52 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +F0D6476E-1CC7-0E5F-AC1A-43DB8643CCE6 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +4C911E51-DA98-8961-7A56-C04E50036ED5 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +8EDE9A1D-4F09-79C9-B4D3-BE2D0E26D1A9 +eRights + + + +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +12562632-8D3A-B6F5-4684-537B93E41927 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +87247DA6-E07F-7206-7888-902E7A48900C +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +84BE5411-F82C-5C93-A0DB-D954E81CDA08 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +AAC05D4B-9EF9-49D8-4431-10570DDC8B6D +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9152B2E1-9C74-6C26-A90B-F3CDA1EEDC49 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +25B94B06-9CC4-BAAA-EBA4-D3C956AA3E65 +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +82D7E757-E0C5-83A6-E51F-5639BB3FA83F +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C5EC435F-DA3A-DF45-CDA7-A30EEC7E641C +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +88911327-B3D0-A1F7-2D04-B77B4DB4E4FB +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +75619CC0-426E-4B57-3C3B-2639E83BA785 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +AA1DA567-3E75-F44A-5F28-E9E50CF32289 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +9D058823-3133-529F-7803-D34F5AE58E82 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +EB50F3B2-2FFA-1E4B-63B5-1478C60B1E80 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +E4B0D70C-0987-6F5B-5DDE-8FAA0AD5C7CF +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +A764F7C1-EAB6-B579-D59F-CB615B6B5CC7 +eRights + + + +true +false +1 +LOGDT024 +8 BYTE +8 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +716B9675-1A15-7B5C-9141-2B86B132A50D +eRights + + + +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +0DA02B5E-D253-6A92-DFE2-D8BD0E2B8828 +eRights + + + +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +14B8E866-FADC-642D-EACA-A49DDCA93FCF +eRights + + + +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +3EA4FDF1-3C14-7B80-A340-4A8F6B235A95 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +917E2EF1-F246-A0B3-161B-EEA8878FC336 +eRights + + + +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +68D9D6CF-E053-2F5B-BC17-B4FB497AB89F +eRights + + + +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +29B0354F-E5BE-80C6-3861-933DCE3FFDE9 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +CC44F476-5B4D-9A46-2BBD-67B650AD4C7A +eRights + + + +true +false +1 +LOGDT019 +9 +0 +,9,0 + + +walloar +2021-03-02 09:53:56 UTC +2E40459D-2876-08A0-B6E3-A316D42F615E +eRights + + + +true +false +1 +LOGDT019 +9 +0 +,9,0 + + +walloar +2021-03-02 09:53:56 UTC +C8272002-9797-93FD-5B52-5C83758507A9 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F724B4E4-0D2E-2AC0-C84B-27FCC54132A8 +eRights + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +37887BC6-1AC7-B48B-0E39-1A24653EA373 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +38C64A7A-6298-B99F-BD19-AE9A190E1CBB +eRights + + + +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F4A859D7-E600-CA5B-812F-FE96025EC9B1 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +62D6869B-2568-F464-4495-213C5F5DD355 +eRights + + + +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +C1FD699E-D68A-6B01-F31C-569D98AD1C10 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +2DF5378A-0354-255C-1A32-4A1F46A28FE0 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/64AB3B08-7A9F-42BA-15BF-609299D82610.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/64AB3B08-7A9F-42BA-15BF-609299D82610.xml new file mode 100644 index 0000000..ee65f0a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/64AB3B08-7A9F-42BA-15BF-609299D82610.xml @@ -0,0 +1,178 @@ + + +walloar +2021-03-02 09:53:56 UTC +D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE +eRights + + + + +675A581C-86EF-4D68-9D95-52C54296A9F5 +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE +eRights + + + + +323EFBA8-35C4-7792-B864-BE76652DD698 +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE +eRights + + + + +681A1055-759C-A8C2-8698-57433F38C50B +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7D57C1E1-B24E-145C-ABB3-40091405E042 +eRights + + + + +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9496FC5F-F66A-745F-7860-56740D7C8A99 +eRights + + + + +true +false +1 +LOGDT024 +80 BYTE +80 BYTE,, + + +walloar +2021-03-02 10:15:32 UTC +2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE +eRights + + + + +952844E2-DA2B-4F1B-259A-3B8EA880491B +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-02 10:15:32 UTC +2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE +eRights + + + + +9840F489-6AF7-A876-BB1D-C673DD36F02A +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-03 09:44:12 UTC +2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE +eRights + + + + +952844E2-DA2B-4F1B-259A-3B8EA880491B +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-03 09:44:12 UTC +2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE +eRights + + + + +9840F489-6AF7-A876-BB1D-C673DD36F02A +false +1 +LOGDT024 +200 BYTE +,, + + + + +walloar +2021-03-02 09:53:56 UTC +ED915CAE-6EA9-5581-E23F-91161110E4D2 +eRights +false + + + + +true + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/6A5146C3-EB9D-BA1D-3F62-FEE9F6155BE8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/6A5146C3-EB9D-BA1D-3F62-FEE9F6155BE8.xml new file mode 100644 index 0000000..4fed83c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/6A5146C3-EB9D-BA1D-3F62-FEE9F6155BE8.xml @@ -0,0 +1,195 @@ + + +walloar +2021-03-02 09:53:56 UTC +21442F1D-A788-0766-1383-1143D116D4BC +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +8806F619-C25C-3011-4C6C-D46137F7538D +eRights + + + + +675A581C-86EF-4D68-9D95-52C54296A9F5 +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +8806F619-C25C-3011-4C6C-D46137F7538D +eRights + + + + +323EFBA8-35C4-7792-B864-BE76652DD698 +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +8806F619-C25C-3011-4C6C-D46137F7538D +eRights + + + + +681A1055-759C-A8C2-8698-57433F38C50B +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +DE80D751-02DC-B714-F8AF-89502B71D318 +eRights + + + + +false +1 +LOGDT019 +7 +0 +,7,0 + + +walloar +2021-03-02 09:53:56 UTC +4BD81890-AD9A-AD07-7420-A5E7C91DCCD5 +eRights + + + + +false +1 +LOGDT019 +12 +0 +,12,0 + + +walloar +2021-03-02 09:53:56 UTC +B31286B2-7049-75FD-28C7-095DA5BA3A97 +eRights + + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 10:15:32 UTC +8806F619-C25C-3011-4C6C-D46137F7538D +eRights + + + + +952844E2-DA2B-4F1B-259A-3B8EA880491B +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-02 10:15:32 UTC +8806F619-C25C-3011-4C6C-D46137F7538D +eRights + + + + +9840F489-6AF7-A876-BB1D-C673DD36F02A +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-03 09:44:12 UTC +8806F619-C25C-3011-4C6C-D46137F7538D +eRights + + + + +952844E2-DA2B-4F1B-259A-3B8EA880491B +false +1 +LOGDT024 +200 BYTE +,, + + +walloar +2021-03-03 09:44:12 UTC +8806F619-C25C-3011-4C6C-D46137F7538D +eRights + + + + +9840F489-6AF7-A876-BB1D-C673DD36F02A +false +1 +LOGDT024 +200 BYTE +,, + + + + +walloar +2021-03-02 09:53:56 UTC +C12BBB08-0973-169D-01F2-969891A79921 +eRights +false + + + + +true + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/6DE4047F-E391-1EE2-61CB-F9A65AB0A5C6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/6DE4047F-E391-1EE2-61CB-F9A65AB0A5C6.xml new file mode 100644 index 0000000..7c011ae --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/6DE4047F-E391-1EE2-61CB-F9A65AB0A5C6.xml @@ -0,0 +1,137 @@ + + +walloar +2021-03-02 09:53:55 UTC +E06E7FD1-9973-2F17-993D-D45490D15039 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +BFFCED8D-CD85-A60C-513E-0E63C798F627 +eRights + + + + +E2957125-2BC0-5F54-B0EB-767B6482A788 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +77601D55-BA58-62BA-92AC-DAA799621DFD +eRights + + + + +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, + + +walloar +2021-03-02 09:53:55 UTC +A9CF04A0-5EC9-DC2F-7EB0-D2149B60A18D +eRights + + + + +true +false +1 +LOGDT024 +25 BYTE +25 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +01C38FC6-CBD4-FF33-C215-01E9C32254B6 +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +13FCEB85-CCA2-19F7-C7EA-8E278898AC0F +eRights + + + + +CHK_ANK_EDMS_SCD_STATUS +false +1 +LOGDT024 +10 BYTE + + + + + + + +10 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +496E68A7-61A5-EE65-436A-D82A67763843 +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + + + +walloar +2021-03-02 09:53:55 UTC +7BA262D2-5568-1F56-5150-7D35B78CB977 +eRights +false + + + + +true + +527554BD-8ACA-CD89-8105-A0F927A00EF5 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/70EC4FA0-BCBE-5009-11E1-0454332973A5.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/70EC4FA0-BCBE-5009-11E1-0454332973A5.xml new file mode 100644 index 0000000..64e1aa7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/70EC4FA0-BCBE-5009-11E1-0454332973A5.xml @@ -0,0 +1,428 @@ + + +walloar +2021-03-02 09:53:55 UTC +CF1B39AA-F945-FB72-E8F3-2257A622EDF4 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +72B65362-4857-0C3F-FB11-A2E9C1E87752 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +A2F5E77B-B56B-706C-8AB2-63519BA4C715 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +A1FC1B79-498E-D47D-40CB-F1C780309307 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +B2407BA5-FC1D-C511-441B-8AD84C5715FC +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +C3F8737D-C992-034A-1016-A90D0ACD21C8 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +95C6F3F9-D6A3-1F72-F6DB-91549519B4F4 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +8989FEB3-EAAE-01E2-62C5-CD8ED3B8070A +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +3B0FA497-BE44-8C8B-0AF2-8EEE57FF2DD2 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +85AB88FD-6EE8-5864-633B-A2DA3ACA0077 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +BF1F90CB-7601-41BF-4C2B-D7DA5A3971D5 +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +474C482F-A761-0E4F-13E0-C733E239E318 +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +3AA2CDBB-F28E-405A-AC9A-03ED29A59AD8 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +A28CA55F-710E-0F24-50E6-FD5E257DBFD9 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +8465202E-9F48-8966-C889-D5FB119CCB0C +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +E4B1B261-C7E3-85DE-7E2E-515F1109B44E +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +954D9059-5136-9616-66CF-471BF089DE44 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:55 UTC +EFD5D158-818B-7A76-AD44-20404217BAC3 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +21E117AA-6867-721A-D4E1-A374E25869B3 +eRights + + + +true +false +1 +LOGDT024 +1003 BYTE +1003 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +D436070F-3988-0BD4-5FCD-13EFC28E7651 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +DA7BFBAF-3962-F083-EFA3-C184FEA85390 +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +B2201A89-58B1-5B66-2552-3E6AF92ABEDA +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +E7E22EF7-8189-9ED1-6D0F-81A2A51AA5D2 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +8DF4F66B-5E60-AD4B-1B72-8875A5EDBD34 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +54F4353F-1A27-627E-9AAC-D6E25B6F31B9 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +DB7338F4-7D3F-6503-3F28-4E1DAD1A59C9 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +B7F25BC5-7AE0-B9BA-F281-96C89597C714 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +FFF08D5D-7CB8-45D9-2655-12611AEE16D5 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/73E564BD-A238-285F-235F-08ED5B6FAC97.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/73E564BD-A238-285F-235F-08ED5B6FAC97.xml new file mode 100644 index 0000000..a78cb4c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/73E564BD-A238-285F-235F-08ED5B6FAC97.xml @@ -0,0 +1,126 @@ + + +walloar +2021-03-02 09:53:55 UTC +887B1F03-49B7-7723-3B93-2D358B356F65 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +8A7372D0-4BFA-E7B8-E435-1AC37E995080 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +596FAF5A-579D-DDB6-C561-160E513F1B52 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +5328F3F0-929B-285B-EFEA-D6D1DDF68173 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +402530F4-EA4A-13CA-64D8-C95A661D9330 +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +10CAB73E-F50C-8678-A969-121B9A978250 +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +A90231FD-0421-080D-FADB-738040BDA627 +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +A2E56822-471A-1501-97C1-D099BFD5E68C +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/7E935A31-6CA0-F687-B54B-F3A799209368.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/7E935A31-6CA0-F687-B54B-F3A799209368.xml new file mode 100644 index 0000000..103526e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/7E935A31-6CA0-F687-B54B-F3A799209368.xml @@ -0,0 +1,620 @@ + + +walloar +2021-03-02 09:53:56 UTC + +017E6E78-74CF-1A56-81F0-5BDDF1973C71 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +FD46E2DF-6BD5-4CD3-62CC-A58DDE20014B +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +02DF9892-BF43-D932-D0CD-C3D8993EBB6B +eRights + + + +true +false +1 +LOGDT024 +2000 BYTE +2000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B5A75AE5-976B-326A-0301-D577AEA3D392 +eRights + + + +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10041 +4000 +4000,, + + +walloar +2021-03-02 09:53:56 UTC +91AEB947-BCE2-7066-41FF-22B0AC32B528 +eRights + + + +true +false +1 +LOGDT024 +2 BYTE +2 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2A8693AB-51CE-0F5D-6E42-65488F1869AF +eRights + + + +true +false +1 +LOGDT024 +2000 BYTE +2000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2CCD070A-0263-30C6-D502-86ACED1099CF +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +BAEB92EC-E759-6A60-57B0-57A3200C18C2 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +6710A74F-9E18-AE4F-EFAC-C66101CFDCAD +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +8D2E763E-7247-984E-864A-A21FFC8549BB +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +D31E6C9D-3813-0258-027C-98B623EA8266 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +79D72E33-5937-5F9E-1838-9E60ACC3740C +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +BE4FBAE9-666F-D351-BA3B-4D5C8F16F1AE +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +65131C32-7994-3C3D-524E-60FD0F52F2D2 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +ABC65EBF-3F17-9D31-F148-C06EC1FADE91 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2D1B8E36-373C-F1D3-E7D8-812A13A41D3E +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +210CB6E6-F46C-ED02-9090-C098AE438DEF +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +19AF201C-AC08-3966-562A-AB80E7D0982C +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +334CA944-5D36-2C55-7594-1A173DBAA5C6 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +CB922D1D-920A-C046-4845-B05273FFB320 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +8794ED4E-0F73-46FC-4E8B-1A16A466CC32 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +526682B7-8930-37E4-08A9-96F7109C90DC +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +180BC5FE-E27D-C271-C558-0706B130937D +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +4AB1B5F3-600F-156C-12E7-6AD68E638D9C +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2AF9DB41-0CF3-B19A-4022-DEC295281354 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +D1FA0EF7-9B0C-123C-353A-C0665A531217 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +83AF5524-9135-9246-CE58-DC2863DD5FB4 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9E65FFC4-4CD1-E7F6-4C5E-053BC1CDA601 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +1A440C97-394B-7B03-59A1-1B7A3CC63F1A +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9CC41951-D3CF-9DFA-78C8-B92919B43F57 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +EA89DC0C-C8DA-9DC1-C9BD-76064A27EFE2 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +EA4158A0-6F62-7268-E1A2-DCB43E9104FF +eRights + + + +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +2000 +2000,, + + +walloar +2021-03-02 09:53:56 UTC +735CCADE-C5B1-D811-30EC-A227283F190D +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +AA0DE176-31CE-2483-CF23-BD7D8CF967F8 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +E4D5234C-05B3-8AE3-DFB4-B96F2940B40D +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9E920733-1044-3488-1AA0-A0F78A159498 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +BD547E5A-BA88-0B6F-0854-8695526CB45D +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +00CA2D57-AF99-C35D-E07A-545875B3F15B +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +1F0A738B-DAC3-DFF8-2A32-57B3B53F4661 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A47B6123-5417-557C-328F-FCB69E8E9B67 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A2CB4738-7D17-FE4E-31CD-C3C46DCAD800 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/8007A257-3E21-D647-C0DF-13AFA4B28DE1.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/8007A257-3E21-D647-C0DF-13AFA4B28DE1.xml new file mode 100644 index 0000000..cf159cd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/8007A257-3E21-D647-C0DF-13AFA4B28DE1.xml @@ -0,0 +1,79 @@ + + +walloar +2021-03-02 09:53:56 UTC +A6C5CBA7-01B1-3ABB-D601-ACC91E621818 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +817D9A2B-0E72-2360-A6E7-46EEDC2D9410 +eRights + + + +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +D94B6A7F-E667-33F0-03D5-12B6CE1022AD +eRights + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +8A239E1A-3203-D1C9-4223-EC9FEC9D77BE +eRights + + + +false +1 +LOGDT029 +4000 +4000,, + + + + +walloar +2021-03-02 09:53:56 UTC +F2C082BC-DA7C-3CC8-E2F7-1EDE74D7AAE6 +eRights +false + + + +true + +FC91553C-29D3-848B-561F-1435E635F851 +990A4AEA-A62F-F3FF-A45E-27178C2B73B7 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/86DFFDA2-73B1-ABDC-FF4B-C21506530FB9.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/86DFFDA2-73B1-ABDC-FF4B-C21506530FB9.xml new file mode 100644 index 0000000..d6edb7a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/86DFFDA2-73B1-ABDC-FF4B-C21506530FB9.xml @@ -0,0 +1,119 @@ + + +walloar +2021-03-02 09:53:56 UTC +6EE6B86E-12DA-10CF-8634-5C4D212E05C8 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC + +74F15CFE-F545-FA7B-A1C1-6DB5F217423B +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +E58D2875-4AB7-D90C-D0D5-CCC5B9D7BA33 +eRights + + + + +true +false +1 +LOGDT024 +16 BYTE +16 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC + +02DCEFF8-11B6-A0F5-5094-7C91F4E3B695 +eRights + + + + +true +false +1 +LOGDT024 +16 BYTE +16 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC + +1348CC3C-17A6-5184-80A1-97B746D20058 +eRights + + + + +true +false +1 +LOGDT024 +33 BYTE +33 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC + +D7FA2B7D-A10A-6DE9-F404-DA6EF454742F +eRights + + + + +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:56 UTC +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +eRights +false + + + + +true + +1E317FC4-9686-5B2A-C41D-842669B03869 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/8AAAC8DC-CC34-BD92-8D4F-880A3ED84F4E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/8AAAC8DC-CC34-BD92-8D4F-880A3ED84F4E.xml new file mode 100644 index 0000000..f1b7429 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/8AAAC8DC-CC34-BD92-8D4F-880A3ED84F4E.xml @@ -0,0 +1,65 @@ + + +walloar +2021-03-02 09:53:56 UTC +5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +9D279B1E-607D-BEC4-8770-A7921CB010EC +eRights + + + +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B6CA6EE7-D478-8C23-8759-790338CD14AA +eRights + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + + + +walloar +2021-03-02 09:53:56 UTC +0203181E-D646-EA76-41AF-A1B1ED8FFDD7 +eRights +false + + + +true + +CFE16F69-F7D1-4D60-C003-87D845E3A696 +CBFC3E98-99C1-8158-FB5A-F2575088C86F + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/8DB8C48E-C8E7-EF3C-E281-27591103D59B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/8DB8C48E-C8E7-EF3C-E281-27591103D59B.xml new file mode 100644 index 0000000..21d641a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/8DB8C48E-C8E7-EF3C-E281-27591103D59B.xml @@ -0,0 +1,383 @@ + + +walloar +2021-03-02 09:53:56 UTC +631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +8E6926AF-4646-FDF1-A90D-14BBD6B5E6FF +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +5C242685-A5E4-7BF1-014A-FBE49C324585 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +E9F2864B-E48F-C7D2-0F12-DFDBDFF31645 +eRights + + + +false +1 +LOGDT024 +10 BYTE +10 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +FD87747A-C079-307B-5CC5-701DEFFE1F73 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +3330B41B-96DA-3AE0-FAF2-99E3ABF701EA +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +DB123951-92F3-CB1A-7959-C7F591E94036 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +00595CC6-431F-1681-761F-58D3561DEC0A +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +B6FB407E-1F2C-CA86-36A6-388D1321E922 +eRights + + + +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +DB5B61C3-66B3-6E21-2835-BF4E7CE746AB +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +C38AC99C-5C14-D052-800E-B99CB602C4FE +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +36850B93-4037-11C9-84A5-AA9AB395D383 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +36934F32-3D22-D58F-D302-19D4C7C85288 +eRights + + + +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C75B9E72-D33F-D8D5-8AF6-8CB07E9BEE6F +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4B1678A1-F0A9-0FD4-57A4-6AF19C271CB2 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +1A60062E-6472-6C0C-9A7A-A1A2D9EF0696 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +2CECF635-F884-C9F5-55B5-F17B805B56F8 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E86AB955-B5DB-FE78-93A0-5F06B616B4DD +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F590FBC6-9236-4F70-379C-D5291DD9BEFD +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C0C641EA-014E-C255-B299-35AE07871ED5 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +3AD69C2F-6D62-E4A0-6945-7C70AEC46577 +eRights + + + +true +false +1 +LOGDT019 +9 +0 +,9,0 + + +walloar +2021-03-02 09:53:56 UTC +44184D53-AA75-EF95-33F9-A75E357DB0E2 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +6D105CD6-7172-77DD-D635-1994F1CCDAC7 +eRights + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +FA896C2F-BE1C-B75F-BFFB-D9DC071F5488 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +49DEFD77-03A9-24CB-6498-DA9906EE4F09 +eRights + + + +true +false +1 +LOGDT024 +8 BYTE +8 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/94D2FC6E-8845-87CB-4100-20E4568FC46D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/94D2FC6E-8845-87CB-4100-20E4568FC46D.xml new file mode 100644 index 0000000..0fcfe80 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/94D2FC6E-8845-87CB-4100-20E4568FC46D.xml @@ -0,0 +1,230 @@ + + +walloar +2021-03-02 09:53:56 UTC +25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +1D4A1338-265D-B794-5894-D9F92D3F7ED4 +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +323B5191-360C-2233-C6FA-D651622B30A2 +eRights + + + +true +false +1 +LOGDT024 +8 BYTE +8 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +E525A5AB-0BAD-94BA-DB1F-C8F4F3625467 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +63456827-6675-2736-F4A4-83603CC0E8C2 +eRights + + + +true +false +1 +LOGDT024 +800 BYTE +800 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +1922F135-203C-5CB0-49C0-FE4EC144A172 +eRights + + + +true +false +1 +LOGDT024 +800 BYTE +800 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +C371C0A1-7341-A8B8-66B3-B65465539020 +eRights + + + +true +false +1 +LOGDT024 +800 BYTE +800 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +553B1E65-AAD9-78EB-9467-EF0257D707A8 +eRights + + + +true +false +1 +LOGDT024 +800 BYTE +800 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +20EA3310-0A06-065C-14D3-22E04071AB91 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +37A15AE8-76CD-A57C-45A4-AF52D7246146 +eRights + + + +true +false +1 +LOGDT024 +240 BYTE +240 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2D149952-90A3-470A-CBCA-C9C50BC0EC9F +eRights + + + +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +618DB82F-A14C-3FC2-61BE-03DFE0114333 +eRights + + + +true +false +1 +LOGDT024 +8 BYTE +8 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +936ADD2B-E0A7-7BDA-2943-E5251AD94E0D +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +DCFAA63A-C6AB-1748-373D-141C96604942 +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +DEF6306D-7B96-A1C1-075B-6BC5F7331CDC +eRights + + + +true +false +1 +LOGDT024 +240 BYTE +240 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/9F53D725-3D05-AEB4-8928-8842ED0801D9.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/9F53D725-3D05-AEB4-8928-8842ED0801D9.xml new file mode 100644 index 0000000..7531158 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/9F53D725-3D05-AEB4-8928-8842ED0801D9.xml @@ -0,0 +1,151 @@ + + +walloar +2021-03-02 09:53:56 UTC +B19BFE0A-4008-983E-624C-F28D08E36E99 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +3125A86F-32E8-DAD9-AEE3-568486747CA9 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +BA7717C4-4279-F6A1-50E2-59F57985A57A +eRights + + + +false +1 +LOGDT024 +10 CHAR +10 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F024FE91-61E0-DA8A-894D-00B73FA33195 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +803F1B53-E3E1-A7BC-569D-7A95E2FA3A5E +eRights + + + +true +false +1 +LOGDT024 +300 CHAR +300 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +48C184AC-5DD2-F436-A4EE-54E847B5BD08 +eRights + + + +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +7959C2D1-F959-AA15-C5D0-0B2121AE0814 +eRights + + + +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F6C7658F-234A-2147-0088-5ED4AA6E87A9 +eRights + + + +false +1 +LOGDT024 +10 CHAR +10 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F3A0CDF3-9F90-990F-3DF4-C12781301988 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +4ED85027-551D-C401-5BB4-2608D0F947C4 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/A2560F78-CA63-4E51-1985-1E0FF55DE39E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/A2560F78-CA63-4E51-1985-1E0FF55DE39E.xml new file mode 100644 index 0000000..477447e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/A2560F78-CA63-4E51-1985-1E0FF55DE39E.xml @@ -0,0 +1,155 @@ + + +walloar +2021-03-02 09:53:56 UTC +C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +1B8996F9-E0C8-9AEA-1F33-1944069A7248 +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B1A2A460-C6A6-D0DD-E445-679924857C00 +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +DF8A7D3D-C6F8-9B1E-29F3-B754953FF431 +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +AA174DE0-804D-AA12-CE14-6BC0F2ADFE7A +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +0B036C2B-2CDA-512B-F6F2-FC7EDC1A10B8 +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +63C3787E-32D2-738E-C529-DB72704BAAD7 +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +4352314B-C587-4F7D-89D6-C97A8F2C5E69 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +878355A5-1FBA-3593-AD50-EFD35789B697 +eRights + + + +true +false +1 +LOGDT024 +240 BYTE +240 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +8344A317-F588-DEB1-C212-DA6D3369C046 +eRights + + + +true +false +1 +LOGDT024 +240 BYTE +240 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/AE694CD8-DA4A-8F4D-40C3-1F8372E12914.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/AE694CD8-DA4A-8F4D-40C3-1F8372E12914.xml new file mode 100644 index 0000000..5c2aa5a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/AE694CD8-DA4A-8F4D-40C3-1F8372E12914.xml @@ -0,0 +1,95 @@ + + +walloar +2021-03-02 09:53:56 UTC +20F5667B-D8E9-427C-7B9A-C1819E5C3533 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +E81D4C2E-AAF7-F474-402F-7B44D3BEFAF1 +eRights + + + +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +69C42D91-5872-D86C-C941-402F5D2E2FAF +eRights + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7F1E165E-5B73-5951-457E-182E07C41226 +eRights + + + +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +1D97422F-1F0D-6D08-6316-4D5A244130E2 +eRights + + + +false +1 +LOGDT019 +13 +0 +,13,0 + + + + +walloar +2021-03-02 09:53:56 UTC +C63CD62B-6A99-248A-8B17-01756BA129D6 +eRights +false + + + +true + +38C7D4AB-8E52-AEAA-D110-8C9E214DE72E +EBBBA42A-0D4D-427C-A398-D6D1987634F4 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/B227B3CC-107F-1684-9249-FCB956EA0929.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/B227B3CC-107F-1684-9249-FCB956EA0929.xml new file mode 100644 index 0000000..9f54031 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/B227B3CC-107F-1684-9249-FCB956EA0929.xml @@ -0,0 +1,829 @@ + + +walloar +2021-03-02 09:53:56 UTC +66B6918B-A197-4DDD-2F74-FA6DEB24B801 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +F1186C6C-6CC4-3495-E7C3-2387BFBF76C0 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +4CA509A5-996D-C2DA-F3B9-CACDC70A35A9 +eRights + + + +true +false +1 +LOGDT019 +6 +0 +,6,0 + + +walloar +2021-03-02 09:53:56 UTC +D7C384E5-AB8B-CA56-2A27-44DA966E98C4 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +9C8A1C36-57F8-E012-2FAF-C1A19951DBCF +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +6B340D5C-0DDA-57B6-3866-FB19F2B6EB6F +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4532CFE2-0018-B1A7-68C5-310D436F3963 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +083D89C5-9A37-2CFF-D2B8-CEAC7769DE20 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +FC1F5433-D7D7-D023-5C03-21D4470D9F5F +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +5E0CA565-4FDA-20CF-A353-D6A39A7AA013 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +2FC4D9B7-524D-3F31-AAE8-F70EBE6B028F +eRights + + + +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4DDAF8A2-38D0-8AD2-2C2E-E0B3C810F541 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +A54B6268-4F1C-F2F1-2EA4-1B716886CF91 +eRights + + + +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +7A4BA3AC-4C10-914D-6A55-23F3C0420219 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +69E21C02-F434-AED1-D73D-F690D420F35B +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +81F20F38-6B00-73D1-7C64-1F5CCCCE19D3 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +FA5A9BF9-E81D-A3BB-EBD2-0FC2B1F21DA5 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C4E1FD36-2729-5703-E5E0-1945850174C4 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +7B10DC92-58DF-30D1-65B7-0C35FF60CB3A +eRights + + + +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4E5379BA-2486-E483-4BFD-E5162D271464 +eRights + + + +true +false +1 +LOGDT024 +101 CHAR +101 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +1A9F9147-5827-C678-8A3C-46A8BBFE14BA +eRights + + + +true +false +1 +LOGDT024 +401 CHAR +401 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +34F46A9C-D23E-6D05-5BFC-6354FB00A327 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +95D97DCF-DC24-2C4F-1D82-46F70A796A50 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +7A26ACDC-F368-0B26-F148-803D439A8193 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +4DEB19E8-6714-1B10-1A5D-F80806952F24 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +EEEFD739-6199-9FC5-0224-DFF46F26DE6A +eRights + + + +false +1 +LOGDT024 +5 CHAR +5 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +03070247-102F-5DE8-6DD1-7316C81C7E47 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C5BEA8DC-69C7-EFC2-BB4A-E81BD0BD888D +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +FCBE1D9C-B84B-DF1B-30D0-229462E9E7D1 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +50409F4B-C5F5-6D9B-FBE5-FD94B951FB12 +eRights + + + +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +32DD9288-8A60-381A-BB96-B36AD24B3708 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +D2AF4032-11D6-8000-F613-F6C9A67B8D8A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +99739457-43BF-0581-BF9F-121C8231154C +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +2D92418A-7BD2-8357-E46E-E74ED8DD23E5 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +63E4FCAB-BF4D-3DF4-9683-C492C9FA9378 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +80246679-B235-43D9-6D80-3C2C8A408F87 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +966C8F03-A912-5542-7785-F123F549C09A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +BF91B8AA-4262-9AD9-F824-B8966DEA5A2B +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +3F98A8A5-E737-755D-6DE9-B53FF4DEAE95 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +84371A81-59CA-0569-294A-0D688BCB655F +eRights + + + +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +95724943-7EA0-09E1-0C7C-74C264DCCCB2 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +7AAE7ADC-5009-D7F9-E82E-60361EE9B67F +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +AFEEBE4B-92E9-F521-2E35-3485B1D7D687 +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +169CD1C4-E1CD-86BD-5FF0-61426D2F5C58 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +EE198346-ABD5-E2B2-2818-E82774C26194 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +4F9FAFA5-94B6-1F59-7E29-B88C37F0E6B6 +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +51DCB625-C940-40F4-EE73-990721B2CDFE +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +34004D44-865D-4F8E-66EE-F56B007331B1 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +76E771E9-CEC8-F10B-BCAD-E276E221D1FD +eRights + + + +true +false +1 +LOGDT024 +563 BYTE +563 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +5DB25603-C3D7-4F65-3CBF-E9F1427F33CD +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +D93DE782-5F1E-BC37-3250-AC8976FB6402 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +17912556-4F1F-C608-C2F0-537BAE5B502F +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +75CDCB84-D064-86D7-3051-8D1656F956B8 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +04C73D9F-1A9A-498D-67F4-838206B5C301 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +023F7EF7-2E76-4ED9-154C-12E5488E6FCB +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/BA08A3E0-01C5-1B90-25AC-CEDC6457FE58.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/BA08A3E0-01C5-1B90-25AC-CEDC6457FE58.xml new file mode 100644 index 0000000..16833e9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/BA08A3E0-01C5-1B90-25AC-CEDC6457FE58.xml @@ -0,0 +1,767 @@ + + +walloar +2021-03-02 09:53:56 UTC +FF74A656-1D74-CA01-A02B-65A0579DD208 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC + +EC3E4FCB-381E-4110-E5F2-080037C6A330 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +EAF2C99C-FAD3-4A14-46A3-71954B67B90C +eRights + + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC + +8D1F6CFA-A363-F4F0-7D93-7F631A1EC8D3 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +E91BF69B-DF66-D60D-E378-76624221DFFB +eRights + + + + +ABDEDED5-DB54-472E-A914-416B21094D8F +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +3BC0D2CB-BBDF-444A-F77D-26EA52C205C2 +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC + +6B62520D-F555-2E41-FBE2-9F198DB7608F +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +1323D65D-CAC3-3951-396B-CB2801D9E943 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +2205523E-B54E-B780-927C-8D64206F6858 +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC + +44F9F853-20E0-3B24-940E-57C96F794099 +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC + +AB38D59A-B29F-E32B-106B-A2B2069FB2FC +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +27ED273D-4F2B-D8B8-DA9C-CA76C88C0018 +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +6708329C-4257-89BF-23C8-F86425C1F06C +eRights + + + + +true +false +1 +LOGDT024 +16 CHAR +16 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC + +C7331B83-1967-4DF2-2AFC-BFCFC211A75A +eRights + + + + +true +false +1 +LOGDT024 +256 CHAR +256 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC + +7816CA55-3E81-0BA3-4B34-DC103961A94B +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +8DDC1AE7-2143-7078-F383-A755A4F86AF9 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +29F327D5-7A0C-CC9F-3438-4E6A694A7697 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +16E0E35D-B9ED-2A36-4AB5-18784692BA61 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +F6402C3F-CFDE-296B-AE49-CC7DE9F84CEB +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +DBCA32A2-0F11-BE50-9234-69F12FC5213E +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +35CD2422-C33B-EA05-7377-D33CE95BF053 +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +6E47720D-5E77-6CC8-A402-33907260A5CD +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +D47ED11F-1D87-B619-8847-BC6B24D849E7 +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +606BA6A4-667C-4B43-3E75-E4734018D9D2 +eRights + + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC + +9971E2F0-2E01-EC3B-4308-8C5E33FE1A04 +eRights + + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +677E3193-9044-2D31-5F51-30E76EB248CE +eRights + + + + +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, + + +walloar +2021-03-02 09:53:56 UTC +54D16E25-5344-9E12-CD9A-44B0C0BB680E +eRights + + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +26249C9A-C527-2687-5D78-7BBEEA16D142 +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +DA4DB995-3A42-2D99-7820-CD3366C84AC4 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +6945DC3F-4310-7832-4667-DB9D8C256225 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +FEB70B8C-1B42-0DE7-F51C-5D4E97F60A3A +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +112B4317-BC50-9081-968B-8558B64D5DC3 +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC + +E06938B8-4305-587C-F2CF-87B87C255317 +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC + +35C8B340-EE0B-9B5A-ACF5-C93089DD5707 +eRights + + + + +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC + +B6DB1887-BB42-9493-923D-1A94600DA62D +eRights + + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +F097744B-D8EE-C343-E3CE-CDA1EA88B641 +eRights + + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +0938DE4E-C2B4-B0C1-4224-B517AB506D75 +eRights + + + + +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC + +D5118C7E-CF2E-E053-0AAE-D96C5BF9213E +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC + +FF00B9A6-FFC8-F5BD-FA6C-9DEC706442C3 +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC + +93C4ADB8-BA9A-3DD2-3241-4963B3D94F8E +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F155BB22-A282-16E9-8BE8-BE99A511EEAF +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +EC0E2785-A1E0-2493-38D6-2ACDA7C8F64A +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +B4A97655-07FE-3689-CC8D-CB5E4141D1FC +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:55:59 UTC + +AB932BFC-2DE9-E516-56A9-DB64019426E3 +eRights + + + + +1E317FC4-9686-5B2A-C41D-842669B03869 +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:56 UTC +A1F676FC-1206-95CB-7A7A-177766C00056 +eRights +false + + + + +true + +92FC6E83-CB5E-2D8F-A6E0-29502A6FB183 + + + +walloar +2021-03-02 09:53:56 UTC +50E2CBC9-C0F6-83F7-8263-6251614AE370 +eRights +false + + + + + +CD979910-6C3F-BE71-0916-A009E2491806 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/BA854E6B-64B0-88E9-8183-B139BF17E9B2.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/BA854E6B-64B0-88E9-8183-B139BF17E9B2.xml new file mode 100644 index 0000000..63039c4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/BA854E6B-64B0-88E9-8183-B139BF17E9B2.xml @@ -0,0 +1,114 @@ + + +walloar +2021-03-02 09:53:55 UTC +C4319A8E-825F-7AB2-3624-D14729BF4C0B +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +9C4D8BBD-7D92-8B95-931E-47B592D9303E +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +E9F739AD-123C-9627-F6B6-44BF7879F7C3 +eRights + + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +071E055E-841D-16DF-7793-509615F86D06 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +4EF8EA1A-3982-743E-DBE6-1D049618658C +eRights + + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +BC5F5022-8CD8-2AE8-D7AB-C78A4455A691 +eRights + + + + +true +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:55 UTC +C440CF4F-9D7F-2A26-9C2E-F57BD434E08A +eRights +false + + + + +true + +775794B6-41D2-6FDB-CDED-B6332D609EC0 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/BB5E20B4-1E61-DCE6-7E2F-EBB410C66399.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/BB5E20B4-1E61-DCE6-7E2F-EBB410C66399.xml new file mode 100644 index 0000000..902d7a3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/BB5E20B4-1E61-DCE6-7E2F-EBB410C66399.xml @@ -0,0 +1,183 @@ + + +walloar +2021-03-02 09:53:56 UTC +9F8B71CD-271E-D6DE-3E71-2F2F28DF6A55 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +17EAF3F2-7FD9-C21E-185A-2F4F07D7AD88 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +69976AAA-0340-B5F7-0D65-3C6030CA8949 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +5F71FA88-FC1A-DEA3-5F13-7EE3A25682AC +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F9EAD909-E04E-6345-90BF-583F96FB700B +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +E80C9C48-693C-06BB-3188-BB7236B3DAC1 +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +6FB6C140-9381-E0B1-3332-56E7B61BCBE2 +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F376DD1B-5507-0592-0D49-345E2FB7DD87 +eRights + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A778513E-57D5-2F26-0883-BAF8A123A2EB +eRights + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +3A6909F6-1BD4-F56B-9551-ECF3CDC90536 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +0E93EB76-E6EA-B649-D564-A6646207EA78 +eRights + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +570ECB78-7BD4-34A2-DDB4-C549C6F02885 +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/C064300A-70F1-394A-04D8-045CD27FC5B0.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/C064300A-70F1-394A-04D8-045CD27FC5B0.xml new file mode 100644 index 0000000..c47be61 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/C064300A-70F1-394A-04D8-045CD27FC5B0.xml @@ -0,0 +1,164 @@ + + +walloar +2021-03-02 09:53:55 UTC +F6108759-A9AE-8679-03BA-D124DEC368E8 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +7581330B-DBB8-A809-2C31-BD227628BD2F +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +B004067B-5FA9-36FE-5F74-610A953B8C3B +eRights + + + + +true +8F3929E2-B542-145A-3429-6CCA6D6B9198 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +314DDCD3-31E3-88E5-E5AD-659BB5F1488F +eRights + + + + +true +1E317FC4-9686-5B2A-C41D-842669B03869 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +48F7BCFB-54CF-9FD3-A147-F317E38ADFBD +eRights + + + + +true +92FC6E83-CB5E-2D8F-A6E0-29502A6FB183 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +7C52FF29-B899-647D-EFA2-E014E060A1AB +eRights + + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +D744C405-D8A4-9F01-1726-5C2D5669E966 +eRights + + + + +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +6AE1E046-238E-9C91-40C2-A925B6603E8D +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +3DD5CD33-A637-6EBA-D7EC-4687178AC2BB +eRights + + + + +false +1 +LOGDT024 +1 CHAR +'Y' +1 CHAR,, + + + + +walloar +2021-03-02 09:53:56 UTC +C18549F3-BA0F-CA1A-0B56-63BF98D61818 +eRights +false + + + + +true + +587B5FB6-A155-75E0-96C2-E7BA8AA0515F + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/C0E9A1F0-FDE6-BF67-A359-D77A865158BF.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/C0E9A1F0-FDE6-BF67-A359-D77A865158BF.xml new file mode 100644 index 0000000..a466488 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/C0E9A1F0-FDE6-BF67-A359-D77A865158BF.xml @@ -0,0 +1,123 @@ + + +walloar +2021-03-02 09:53:55 UTC + +BADACA51-70E4-EC8C-D01B-F5E4FF488931 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +2C131BF7-C235-B6B9-F282-40733CEB343D +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +61354299-9EFB-5A2E-5727-657CDBFF698E +eRights + + + +CKC_PRIORITY_DB_LOG +true +false +1 +LOGDT025 +1 BYTE + + + + + + + + + + + +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +CD104907-F0A9-005B-5F87-175D9CCC454C +eRights + + + +true +false +1 +LOGDT024 +1000 BYTE +1000 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +5A01A9CE-376B-B1DB-A72B-941FDCC6DAF7 +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +73FDF4DB-A5EA-FB89-79CF-B65E16004FDE +eRights + + + +true +false +1 +LOGDT007 +7 +SYSDATE +7,, + + + + +walloar +2021-03-02 09:53:55 UTC +4639E259-AED3-4FE6-4BBA-C3592C250F1A +eRights +false + + + +true + +D429DF4C-EFC7-984D-081D-5737DD886351 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/C219EE74-3B16-3794-DAF8-2367867CFA6E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/C219EE74-3B16-3794-DAF8-2367867CFA6E.xml new file mode 100644 index 0000000..2a82934 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/C219EE74-3B16-3794-DAF8-2367867CFA6E.xml @@ -0,0 +1,252 @@ + + +walloar +2021-03-02 09:53:55 UTC +FA6E481B-B84F-5B32-07EE-23CD79A3E131 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +712DDDEA-B668-0334-5C5D-A15CA06E753D +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +360ED850-9EF8-6EF1-294E-585EC8723A0D +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +4047265E-35C1-518C-A08C-479DEA2FD20F +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +F57B5697-041F-8E32-7B9F-5E35C9DEF230 +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +4530A486-56EB-C5DB-B444-28020BBB55E3 +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +182C9E0A-F952-98F3-C860-EDCB52477EEB +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +32B732A6-0ACA-64D5-9BFA-3B5C29AB0F0F +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +EE432CB0-FCCF-CB5C-62B7-E2C91099CF46 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +E1823636-0C34-29FE-C1DB-6F125D831C26 +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +C054D1F1-ED94-D623-91BC-8099D3C0B6CD +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +D0D6AA36-FE1E-56C3-44CA-D1AB5B52234E +eRights + + + + +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +CE40080D-F82A-BA03-F76F-D6E895FD39C6 +eRights + + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +64F9CE94-79B7-189D-6C96-5595355F5E54 +eRights + + + + +5EA5CE55-B7A8-958C-9931-EC453C9A1C80 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +2CE51C00-0B55-DFA6-5D82-E699EE6D6C0B +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +'Y' +1 BYTE,, + + + + +walloar +2021-03-02 09:53:55 UTC +A750C512-20C7-96E8-6C7C-4C45B8145E7B +eRights +false + + + + +true + +4869A72B-6A7B-C030-3D55-E17A1488D1F3 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/CA9EC934-467D-3BBA-72A9-25B2A0999791.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/CA9EC934-467D-3BBA-72A9-25B2A0999791.xml new file mode 100644 index 0000000..cbe4346 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/CA9EC934-467D-3BBA-72A9-25B2A0999791.xml @@ -0,0 +1,98 @@ + + +walloar +2021-03-02 09:53:55 UTC +6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +07727274-66DF-FD90-6692-0A1F0BEE1775 +eRights + + + + +41435BA7-E7F1-F8F9-D69F-5166D8906E21 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +C430F234-73DE-5D67-6833-6C1B21265ED3 +eRights + + + + +false +1 +LOGDT025 +36 BYTE +36 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +678A934D-AF92-4E12-3299-3FA53540AF61 +eRights + + + + +false +1 +LOGDT024 +25 BYTE +25 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +6922E00C-90A8-C6D7-C54C-F0D4AAFA77B6 +eRights + + + + +false +1 +LOGDT024 +1024 BYTE +1024 BYTE,, + + + + +walloar +2021-03-02 09:53:55 UTC +312944C7-F69F-AD5B-9F1B-2E1275B8C6DF +eRights +false + + + + +true + +48E97EB9-5064-7748-06A4-52B35D2D2F15 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/CAA8EC70-4F15-AF63-2366-78EB312F3DF4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/CAA8EC70-4F15-AF63-2366-78EB312F3DF4.xml new file mode 100644 index 0000000..0a5f087 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/CAA8EC70-4F15-AF63-2366-78EB312F3DF4.xml @@ -0,0 +1,124 @@ + + +walloar +2021-03-02 09:53:56 UTC +BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +4608BB07-2CA4-5596-6DA9-36D5A794F7CC +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +7A7046C8-F14E-6371-D168-C8EE02888185 +eRights + + + +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +A605744E-5F9A-55BB-E62F-001343200E7A +eRights + + + +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +8841EB89-9A6C-5679-E255-691F72192289 +eRights + + + +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +78FF68B7-6F2B-D7D9-8894-370488F0D6BB +eRights + + + +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +53B488C5-C017-A082-DF2E-0E002B32ED52 +eRights + + + +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E4B3A381-5FFE-9EE7-2002-9CBD4182A593 +eRights + + + +true +false +1 +LOGDT025 +1 CHAR +1 CHAR,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/CB2DB610-85D6-2795-2878-C17D1F419227.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/CB2DB610-85D6-2795-2878-C17D1F419227.xml new file mode 100644 index 0000000..75f2631 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/CB2DB610-85D6-2795-2878-C17D1F419227.xml @@ -0,0 +1,182 @@ + + +walloar +2021-03-02 09:53:56 UTC +3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +31D3D627-A51F-C2CD-32E8-DC8DD733112E +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +1397CB0D-4B6C-D2C4-AFFD-D28F6A79F892 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +2987E008-FD74-CA2C-AFC8-0F2959F4EAE3 +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +650A4E69-7BF6-25D3-BEE9-82676A9F7342 +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +E82D7082-0602-65A4-401E-8A5E52838FCC +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A5C921E3-8809-C1DC-DCAC-056A0785263A +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +74F417F7-ABB3-A71C-5467-D1F6DF4A2ED8 +eRights + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +6A123D50-29B0-DAF8-A2A2-155F04F6376B +eRights + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +E1A256F2-E330-6F54-624D-1081BA2F4177 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +F17E76C7-855D-0951-B65C-5889140DB491 +eRights + + + +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +EF2EC4E5-8B57-676F-3656-3BB98AE09AC5 +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/D6DBF9EA-A18C-7404-3676-D563D8A9E256.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/D6DBF9EA-A18C-7404-3676-D563D8A9E256.xml new file mode 100644 index 0000000..405293f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/D6DBF9EA-A18C-7404-3676-D563D8A9E256.xml @@ -0,0 +1,182 @@ + + +walloar +2021-03-02 09:53:55 UTC +630D97D6-855C-0E6D-5879-00F9E3F6BFD5 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +C6A1399A-90B6-CD13-4404-FF9FCE1AA468 +eRights + + + + +true +587B5FB6-A155-75E0-96C2-E7BA8AA0515F +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +C44D4851-452C-5221-912A-D56B617926B7 +eRights + + + + +true +5EA5CE55-B7A8-958C-9931-EC453C9A1C80 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +A6EEA1B2-45B2-3382-666B-1D538BC671D0 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +2ABD0126-3C41-D799-5ADD-E5A3F23E84F9 +eRights + + + + +true +false +1 +LOGDT019 +9 +2 +,9,2 + + +walloar +2021-03-02 09:53:55 UTC +EB6E1FCD-CEC2-63DC-D8B0-91561473ABCC +eRights + + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +685EAA60-EEB5-4819-81A2-F6C31F40C816 +eRights + + + + +true +8F3929E2-B542-145A-3429-6CCA6D6B9198 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +3D486138-DC40-2F6B-8582-A776A6148434 +eRights + + + + +true +775794B6-41D2-6FDB-CDED-B6332D609EC0 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC + +74891564-02B5-1322-938C-6CFDE673147B +eRights + + + + +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +57E53ABE-CC17-7A85-E566-B7ADF1778330 +eRights + + + + +true +false +1 +LOGDT024 +3000 BYTE +3000 BYTE,, + + + + +walloar +2021-03-02 09:53:55 UTC +22BB6610-D3E5-12AA-5302-9404B16E0CF4 +eRights +false + + + + +true + +1DCBE4F8-A581-F97F-4AE1-76D45FE113F6 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/DF3C10D6-CB04-CF77-616F-08B8DAF51D93.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/DF3C10D6-CB04-CF77-616F-08B8DAF51D93.xml new file mode 100644 index 0000000..68baac6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/DF3C10D6-CB04-CF77-616F-08B8DAF51D93.xml @@ -0,0 +1,158 @@ + + +walloar +2021-03-02 09:53:55 UTC +0446BDB6-26D9-B764-C2A6-8BF8EE0C1200 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +C26EFFD1-8855-DB7C-9431-6E128EBF26C6 +eRights + + + + +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, + + +walloar +2021-03-02 09:53:55 UTC +87F91A67-EEB1-6C46-5F61-889F4A044355 +eRights + + + + +false +1 +LOGDT024 +64 BYTE +64 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +28009780-3DAA-717D-4A50-6E963DD3CB1E +eRights + + + + +false +1 +LOGDT024 +64 BYTE +64 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +37D2D3FB-28F0-E701-EF56-18C0D84F0A36 +eRights + + + + +false +1 +LOGDT024 +64 BYTE +64 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +082948C0-3D5F-D52F-80E9-FE3654E56185 +eRights + + + + +false +1 +LOGDT024 +64 BYTE +64 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +9B22E644-A88E-51BA-14AF-43372C45D7B5 +eRights + + + + +false +1 +LOGDT029 +4000 +4000,, + + +walloar +2021-03-02 09:53:55 UTC +F0B981BB-3C0E-5838-11C7-F7214DBB79DF +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +05797B27-82A2-B899-E910-ECBACD76A637 +eRights + + + + +false +1 +LOGDT007 +7 +sysdate +7,, + + + + +walloar +2021-03-02 09:53:55 UTC +0B7C740E-1FA8-EB2B-7586-7715948C9049 +eRights +false + + + + +true + +800C6C00-8D60-4ECC-5D09-08924142E16E + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/E0B08F7D-D853-FDAC-836A-C01306FEFCEB.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/E0B08F7D-D853-FDAC-836A-C01306FEFCEB.xml new file mode 100644 index 0000000..e9e56ca --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/E0B08F7D-D853-FDAC-836A-C01306FEFCEB.xml @@ -0,0 +1,125 @@ + + +walloar +2021-03-02 09:53:55 UTC +62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +9CC87FE6-69EA-EFDC-773C-E8278DF26DFF +eRights + + + + +EAD06FA5-2B9C-2BF9-E1E4-491AEC643CFB +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +FEC0C51C-B03C-CACE-768D-AABE9193E41D +eRights + + + + +41435BA7-E7F1-F8F9-D69F-5166D8906E21 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +9CC87FE6-69EA-EFDC-773C-E8278DF26DFF +eRights + + + + +29F20B6E-1181-328F-B337-85A765532E96 +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +BF7268FF-CD28-8836-216A-20300C3038AC +eRights + + + + +CHK_ANK_EDMS_ERCD_STATUS +false +1 +LOGDT024 +10 BYTE + + + + + + + +10 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +9CC87FE6-69EA-EFDC-773C-E8278DF26DFF +eRights + + + + +D8CF9EE5-0332-F5F1-150B-0C5B89594C09 +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:55 UTC +660E4B62-AE47-4F8C-4BCA-BCFE017E88CD +eRights +false + + + + +true + +43B8A14B-3F7F-CA8D-44F6-AEB5B1C53474 +7C1D706F-CA53-6670-6CCD-B95DE686F86F +F1054E5C-B5BB-E193-C20D-7565C5AD0FFA +080BFE5B-7226-6837-7A59-033E34F37DCF + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/E176ACBD-7472-2FE5-C56D-79CF6E4C54FC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/E176ACBD-7472-2FE5-C56D-79CF6E4C54FC.xml new file mode 100644 index 0000000..1a84b59 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/E176ACBD-7472-2FE5-C56D-79CF6E4C54FC.xml @@ -0,0 +1,100 @@ + + +walloar +2021-03-02 09:53:56 UTC +592E1EBA-CA8E-67B1-097D-EFA6584FB82F +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +7D3D4DB0-30DA-1265-3A3B-1A59DA528B32 +eRights + + + + +true +8F3929E2-B542-145A-3429-6CCA6D6B9198 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +1B820996-9CC3-118E-F4DB-E25902532BCC +eRights + + + + +true +1E317FC4-9686-5B2A-C41D-842669B03869 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +F7036985-1B09-D511-0528-2749A7956333 +eRights + + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +1F511459-A77F-DE59-C952-4B83EA5C5410 +eRights + + + + +false +1 +LOGDT019 +,, + + + + +walloar +2021-03-02 09:53:56 UTC +2C8FC534-A966-F870-E4F9-8D845B519624 +eRights +false + + + + +true + +BB17F910-1658-5ABA-2611-38A07ED8615A + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/E2E41E88-3AD7-C5DD-AD31-5E6EC3DDA41C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/E2E41E88-3AD7-C5DD-AD31-5E6EC3DDA41C.xml new file mode 100644 index 0000000..d288c6a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/E2E41E88-3AD7-C5DD-AD31-5E6EC3DDA41C.xml @@ -0,0 +1,441 @@ + + +walloar +2021-03-02 09:53:56 UTC +9EF72CA0-6663-4411-3182-FF0B74E9241A +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +17D47BA8-0BC6-19AE-D638-046D53F9A790 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +D4EEF64B-3AD6-1994-04C1-F1BF1EA6D8E0 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +34746AFE-40D5-CEB6-0E57-60F3B8AC98BF +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +687F87A0-9D26-4BA6-5C1C-0071F04FC291 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +7227C100-099F-5AFA-750A-02199D85ED15 +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2730EC3B-714C-DDB2-FDD6-74B17E42628B +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +B9EB1CED-81BB-6335-08CD-8658A631A58E +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +A42E2A13-2CBD-C811-4FDB-864B08C729F9 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +44B0DDFA-D9DD-258C-F89D-3CB819440818 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E772AA0D-A72B-0702-00D4-80C538336AEE +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +D2EF32AD-898C-A995-DCC4-23D32FE092BD +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +374D05D3-01EF-35C2-84F2-42BA56964450 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F4E190AD-A1E2-C0CF-819D-0885B6A437C5 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F22DEE24-7540-259B-33E3-2286BE05C004 +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +87A18115-3900-5F8E-96B8-F0AEA88BCA58 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +AE33EC1D-D3EE-4D28-FDEB-5946A9C446D0 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +26622B32-7519-7543-03AA-DB94FCAF4083 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +3B6555FF-1245-EA76-DB5F-6B64D08311D8 +eRights + + + +true +false +1 +LOGDT024 +743 BYTE +743 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7556E31F-C333-B217-3C19-685250266CD0 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +DCCD1BAC-9B14-8601-E1AC-071F34D496BD +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +6F416FA5-5331-8AFC-0445-8F7762BE991C +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +0C84101B-71A1-CC56-22A6-C2FE51CD118C +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +F2FD0396-D9B2-EC84-7FF8-06559015FD49 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +C6FD289A-3156-FF05-22B3-8B64D6D1A57E +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +6FC4CAC8-56EF-81CE-60C0-373A43EAFA69 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E8E442CF-0726-A85B-7AC0-A46C1EF288CF +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +32D4EDBE-9428-05DB-C23B-FFC33FAC5504 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +6BFED3A0-9D0E-BEFD-05D4-BE2E2618EF62 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/E668A87C-7B90-5FC2-4038-FAD1D1AD75F4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/E668A87C-7B90-5FC2-4038-FAD1D1AD75F4.xml new file mode 100644 index 0000000..45f1aed --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/E668A87C-7B90-5FC2-4038-FAD1D1AD75F4.xml @@ -0,0 +1,100 @@ + + +walloar +2021-03-02 09:53:56 UTC +749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +15E1794C-50DD-56DC-B045-DF8ED8163106 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +85ED6466-52B3-5C22-7B65-D796B68940F0 +eRights + + + + +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +2E5E37B8-2029-C3B0-8C22-607CBB8A674E +eRights + + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +18F804BA-8180-9072-BA51-AEF6CD453D29 +eRights + + + + +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + + + +walloar +2021-03-02 09:53:56 UTC +5BE178D9-AF31-486C-E472-FB64DF6263EC +eRights +false + + + + +true + +8F3929E2-B542-145A-3429-6CCA6D6B9198 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/E997D43A-467E-E5FB-CB89-A7A067DB482E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/E997D43A-467E-E5FB-CB89-A7A067DB482E.xml new file mode 100644 index 0000000..173ae0d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/E997D43A-467E-E5FB-CB89-A7A067DB482E.xml @@ -0,0 +1,316 @@ + + +walloar +2021-03-02 09:53:56 UTC +A3555874-6A6F-641F-2400-2E068C6B604D +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +7795442E-AF25-7F05-4D77-149BE1458632 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +79F604C8-38C7-2C61-92D3-817485A55A44 +eRights + + + +true +false +1 +LOGDT019 +6 +0 +,6,0 + + +walloar +2021-03-02 09:53:56 UTC +6771EC74-0321-C886-65B1-B510B96D1B71 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +CB89709A-1414-6137-704C-13373D568551 +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +62B3682F-8C95-C023-A158-B64F8796EC6E +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +31FD8903-C55C-C9E1-3699-EEF3E1FE9D82 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +2A77A3D7-9A3F-9A2E-F34D-A305E29B3979 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F5345578-3D7A-0CCD-5FFD-872C8739E815 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +A46D81DF-F254-D947-54C9-F6DC92BEB1EC +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +47FA03F6-465A-79B5-1330-9D431EBD50D4 +eRights + + + +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E8A3C3BE-7C95-67D7-2BA0-47F9D1A20C12 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +D8900F32-90F8-8D45-62F6-7F470FA188DA +eRights + + + +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +AF284264-A27E-3552-F1EC-B6D597105967 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +0D0CA272-EAA3-25AE-D0AE-E7EB7BDCCAE5 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +31EE601B-239C-816F-D10F-2F7467A19E7B +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +68CA3E72-E198-E366-722B-98694082F5B8 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +8756B1F7-3E7B-A2E0-949E-3A2E0A1A7C0E +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +72C71692-AA1D-91B0-3D47-7DE8946F804A +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F8A28F4B-ECAE-0EFF-4252-A2206C9EB460 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +2A0DA975-438E-430F-2CBF-9154C480FF1D +eRights + + + +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/EBB20CC3-ECCB-9B71-97AF-403D942F9990.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/EBB20CC3-ECCB-9B71-97AF-403D942F9990.xml new file mode 100644 index 0000000..1a550ea --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/EBB20CC3-ECCB-9B71-97AF-403D942F9990.xml @@ -0,0 +1,120 @@ + + +walloar +2021-03-02 09:53:55 UTC +BC72B0EE-1464-3878-1EA4-4B45D4EB9AD6 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +23C54777-2E4F-A994-44B7-49E89BEED5D9 +eRights + + + +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, + + +walloar +2021-03-02 09:53:55 UTC +3FB42224-B083-966D-5704-D05877D36F79 +eRights + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +CA375F3A-13BF-C086-78F5-AF1D8DEEE949 +eRights + + + +false +1 +LOGDT024 +100 BYTE +100 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +45A1EA51-575B-BBF9-8FDC-35B3D36D436B +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +E4AF0CB8-152D-99D0-5BB6-1B482581CBB3 +eRights + + + +false +1 +LOGDT029 +4000 +4000,, + + +walloar +2021-03-02 09:53:55 UTC +41011715-10E0-A6FE-55A2-64C91356F343 +eRights + + + +false +1 +LOGDT007 +7 +sysdate +7,, + + + + +walloar +2021-03-02 09:53:55 UTC +A78F7E23-0D85-71E7-E772-21C2C269952B +eRights +false + + + +true + +AC3E4820-0C26-337B-1820-E8A7098AD12A + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/EBB8086D-65A7-872A-63FE-C80820290455.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/EBB8086D-65A7-872A-63FE-C80820290455.xml new file mode 100644 index 0000000..3a3c595 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/EBB8086D-65A7-872A-63FE-C80820290455.xml @@ -0,0 +1,197 @@ + + +walloar +2021-03-02 09:53:56 UTC +A8AD1617-D099-9273-CCEA-861E1F9E01A4 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +9BC70279-C08B-460A-5467-5745DB35C2D2 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +38A6C96D-31BC-6420-ECC9-04B4673BFC1F +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +B297C3F2-E8EF-EF6F-003B-96A4F33BE0AD +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +30F171D2-1BE7-F5F6-B320-C57589F736BB +eRights + + + +false +1 +LOGDT024 +5 CHAR +5 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +D3537B31-D419-902E-6AFA-4359F79BF9DE +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +1A059DF0-B449-3C18-5768-2BE445AFFDEA +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +8B86EE99-6DBF-EE8E-A196-317245815612 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +8E83FCE4-9A8C-CF34-447A-C6C5A12038EC +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +DF92DE7B-C9F5-36E4-E11E-F1BDDB8B44C3 +eRights + + + +false +1 +LOGDT024 +10 CHAR +10 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +554CD9FA-C554-946C-213C-94AA7C23C9FE +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +9736E180-7792-7F6F-98E5-C7EC56D5F1B4 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +8C72C798-30DC-3C14-780F-61B6B45BA274 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/F1E1382C-014B-E193-DF18-55A4487C0C70.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/F1E1382C-014B-E193-DF18-55A4487C0C70.xml new file mode 100644 index 0000000..4ca3bc6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/F1E1382C-014B-E193-DF18-55A4487C0C70.xml @@ -0,0 +1,646 @@ + + +walloar +2021-03-02 09:53:55 UTC +83EF0329-A487-2A83-9FAA-04027807BB55 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +5B6E91A1-A95C-C6F0-63DB-D80BF8E539BE +eRights + + + +false +1 +LOGDT019 +* +0 +,*,0 + + +walloar +2021-03-02 09:53:55 UTC +23CFFAD3-DA09-3D7E-B6B6-EBC15F5762D7 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +9CFE6541-C0A3-7ADB-A83A-F668D8E900D4 +eRights + + + +true +false +1 +LOGDT019 +3 +0 +,3,0 + + +walloar +2021-03-02 09:53:55 UTC +A92B24EA-D7A7-12E0-FD98-817CD383E11F +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +D622C00A-1087-25A4-C71D-4C93E6EAD0E6 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +44A68231-C0A1-221B-8296-68883140DD7D +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +4089A8DB-3C1D-A969-DF47-B4A668B391F3 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +BE019E1E-EEB2-C730-88DF-DF29313B24D1 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +C6F0B3E9-D960-CF90-0E5B-E8E7C971DA4F +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +46E8DE1F-DF39-141B-A0FB-19121B3DEECD +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +9B9309F6-DBC3-9A9F-94D6-159882F20F0A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +A7FBC606-98EB-74A2-4FC8-94D18BC6A754 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +6C9A3930-ED21-4C32-8299-702F7B09433A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +E9515F1B-602F-FE10-9059-C6AC0A88B5AA +eRights + + + +true +false +1 +LOGDT019 +19 +0 +,19,0 + + +walloar +2021-03-02 09:53:55 UTC +EFF25745-574F-DD88-3955-4E5B4B48C7A2 +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +B5CDAE10-5A98-B793-623F-3AC9428FBB30 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +BA19AD93-208C-F50A-C31C-9736361A81D9 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +B7939AC2-82EA-0022-9324-7299C25F190B +eRights + + + +true +false +1 +LOGDT019 +19 +0 +,19,0 + + +walloar +2021-03-02 09:53:55 UTC +7BAAC4BA-0F80-7DC4-0FC7-DD5B36C7F28A +eRights + + + +true +false +1 +LOGDT019 +19 +0 +,19,0 + + +walloar +2021-03-02 09:53:55 UTC +EB7CA29E-506C-8F8F-611E-5369F9892C99 +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +0327D74C-8382-B7A4-98BC-3AC4A743CD24 +eRights + + + +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, + + +walloar +2021-03-02 09:53:55 UTC +91D0D005-53E0-5CC6-59E4-878675C862D7 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +EE7B88E7-2627-A355-2A95-EF13523B5683 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +A68496E2-6405-D922-0247-64C7F909D8FC +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +03695A98-BB4A-ADA5-A594-6D7E627E29B7 +eRights + + + +true +false +1 +LOGDT019 +19 +0 +,19,0 + + +walloar +2021-03-02 09:53:55 UTC +C4720AEC-3CAE-4C4A-1C3B-208456B0A87C +eRights + + + +true +false +1 +LOGDT019 +19 +0 +,19,0 + + +walloar +2021-03-02 09:53:55 UTC +CE171B3C-8237-8284-87B9-42C5C4BF00A8 +eRights + + + +true +false +1 +LOGDT019 +* +0 +,*,0 + + +walloar +2021-03-02 09:53:55 UTC +A0750D54-4766-F8B5-7AAE-0B81AAE0185B +eRights + + + +true +false +1 +LOGDT019 +* +0 +,*,0 + + +walloar +2021-03-02 09:53:55 UTC +8D9A2AF0-56CB-0ABC-9ADF-7D7EFB0D9AF1 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +D8040FB8-46A0-ACDB-1096-516E6F6043ED +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +7AC2D39C-3B6F-86F9-9D73-26766B4339E0 +eRights + + + +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +C7F93F40-C3C3-172D-4FAD-81E718E626B4 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:55 UTC +C5EF538C-F7DA-3B12-54B4-FC82AF103757 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +3A994887-E5EC-9F04-1681-27B48059CD98 +eRights + + + +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +71105067-65A7-DAFB-B69F-2B63AB0311C0 +eRights + + + +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +37059401-6A9D-06AB-CF8F-9EA1895F1E3A +eRights + + + +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +2E3C4F8F-A4E0-9E30-4F9F-F4A7E5140A16 +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +F19524A1-F23F-6235-B558-1948B37E0A5D +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +011C1DD1-061E-E0B9-BAA6-96CBA809AF03 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +F40F72AC-44CA-DC18-D8CA-E4F96F8EC306 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + + + +walloar +2021-03-02 09:53:55 UTC +2114763A-E5D8-A573-2AB1-716342014AF5 +eRights +false + + + +true + +41A73608-7AF9-11F7-ECDF-BAF95A247502 +9DB15151-C129-376A-61E9-AA8A0467CDA1 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/F2D5C760-FB84-9EAB-ABDA-1E546127E652.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/F2D5C760-FB84-9EAB-ABDA-1E546127E652.xml new file mode 100644 index 0000000..de01f35 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/F2D5C760-FB84-9EAB-ABDA-1E546127E652.xml @@ -0,0 +1,182 @@ + + +walloar +2021-03-02 09:53:56 UTC +5DA23FF0-4C88-ACC1-69D4-01D8597F8F19 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +7B4E12B3-3088-5226-02FD-12B691C48657 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +3B4A5FC4-A5E3-AF51-3926-6B47C3F7B054 +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +A6D288E8-CA77-6305-F358-199225140015 +eRights + + + +true +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +1AD7716C-8AC0-92C4-8AEB-C893DC1B4644 +eRights + + + +false +1 +LOGDT024 +5 CHAR +5 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +0D3D9B11-0757-EDFD-CE99-606B648D617B +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +B9AA3920-AEC8-69F1-0393-2D12315433DE +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +C6C4D8F4-FA24-3CB0-E069-61F86416159F +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +42E5DF96-6B3E-CDB8-1DBC-887ED8214850 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +982D6995-3F8A-B9A6-6403-2FD6243A744C +eRights + + + +false +1 +LOGDT024 +10 BYTE +10 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +4DE6BE2A-B5FF-5589-D178-E32ED2841A23 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +488013AB-5627-521E-7C36-7FE75DE0F567 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/F86F6775-160D-1266-D8EC-B11BB6B47DF6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/F86F6775-160D-1266-D8EC-B11BB6B47DF6.xml new file mode 100644 index 0000000..9b6b849 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/F86F6775-160D-1266-D8EC-B11BB6B47DF6.xml @@ -0,0 +1,132 @@ + + +walloar +2021-03-02 09:53:56 UTC + +F141D682-7C3B-DF6E-0E85-6E3337BB1FA3 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC + +853438ED-1DE7-CD4F-F833-80AD7FB933AF +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC + +6F652368-64EB-26EB-BF66-3E956CD65C76 +eRights + + + + +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +275ED93E-FFAF-7090-812D-D9C63B3F26AB +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +7FFDED76-A5C8-0629-EF26-57FFEEC9AF90 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +B8D11534-8F28-2980-9115-5989EB343620 +eRights + + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +C47D4BE3-4191-FC3F-4DDF-5B263EB12CFD +eRights + + + + +true +false +1 +LOGDT007 +7 +7,, + + + + +walloar +2021-03-02 09:53:56 UTC +4BEC1D6D-4497-ABD7-D747-01783C3F1C07 +eRights +false + + + + +true + +ABDEDED5-DB54-472E-A914-416B21094D8F + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/F89B50B0-F0D9-81D2-9A67-FF4335D90B34.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/F89B50B0-F0D9-81D2-9A67-FF4335D90B34.xml new file mode 100644 index 0000000..a42f80a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/F89B50B0-F0D9-81D2-9A67-FF4335D90B34.xml @@ -0,0 +1,428 @@ + + +walloar +2021-03-02 09:53:56 UTC +52675525-20A2-9D94-FC27-4C5EBA8B3915 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +83150B1B-A6E0-3EB4-3C24-DA77824D2EBF +eRights + + + +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +08801D39-09C3-FA8F-7FAE-89A8F736FD88 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +92938513-F02F-FFA5-98DF-D1A007A58C9E +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +725E372D-B0CD-33AE-EDD3-E3F37521D3F1 +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +7F509BBA-9C78-5A54-B4C7-AC72F920E407 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +93A9DDE3-81C2-61A0-76F1-17E111AF3191 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +179239F7-999C-CA8D-8946-0C4F3EFCF5B4 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +30D4E4CB-4F93-834A-CBC3-F9ABA577306C +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E01A03D6-BA1E-AF08-0DDE-82AD541241E2 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +6690184C-7AF8-A4BF-BC1A-430FDFECD6D2 +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +8FD7B40D-617D-3B17-70C1-47E618D0399C +eRights + + + +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F62A9DCC-BFA6-2CA2-4CDE-5FB8E851F5F7 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +C7A9646F-7AFE-B119-24D0-178F97D0724C +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F312623B-1674-8128-D96D-95A2CE525BBA +eRights + + + +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +AF846FC1-2F86-B7CF-A29A-A08D445A0083 +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +A69CC982-1BCE-6779-3F2D-39A8BA3898AB +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +FFEA41DC-24BB-31A9-4A31-0A4010F86C87 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +FC826E5D-FFB7-61AA-BED2-3865E87564C9 +eRights + + + +true +false +1 +LOGDT024 +1003 BYTE +1003 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B0153DA7-5F9D-1F69-F1C5-5CA341E82C28 +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +6A4E749A-B42D-8842-DB7A-851ECFCE746D +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B74D6C0E-C044-E1A9-1953-0B47D8A6396A +eRights + + + +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F4F8F3C5-BB5D-28C0-D49E-C99D3C8A5E8D +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +95E5627E-F109-73C1-CE61-5DFBB232785C +eRights + + + +true +false +1 +LOGDT019 +10 +0 +,10,0 + + +walloar +2021-03-02 09:53:56 UTC +2DD0E78D-939B-5494-2DC1-E12276DD2C98 +eRights + + + +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +415823E9-F6EC-8DC4-1E3E-00764003E2F5 +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +D39A5396-C7D0-902C-C515-1082FD1CD40D +eRights + + + +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +598D42A7-6F34-E112-C8CB-0EC41AF467FB +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/F8A32C59-5E45-F52A-7060-AB3159FEA108.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/F8A32C59-5E45-F52A-7060-AB3159FEA108.xml new file mode 100644 index 0000000..9c08cda --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/F8A32C59-5E45-F52A-7060-AB3159FEA108.xml @@ -0,0 +1,317 @@ + + +walloar +2021-03-02 09:53:55 UTC +63054212-8AEE-5074-DEED-6B5EF4457EB6 +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +C7630B7C-C91F-0309-DA9A-64F880758068 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +8EC67F6F-DC7D-06B0-74F2-112429DD6C2B +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +EE90265C-FE26-2E6E-B80A-6E5FF5B25D4A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +957C0D84-70FF-5B5C-6D9E-B64DB23D48FC +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +B0430B40-2779-B924-4CDF-0EC757E6B67A +eRights + + + +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +3FE73FF4-5CF7-A02E-4A1A-2FCCD92B39EE +eRights + + + +true +false +1 +LOGDT024 +300 CHAR +300 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +05D8257F-F1AF-19C7-38F2-A31720C4C7A5 +eRights + + + +true +false +1 +LOGDT024 +40 BYTE +40 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +4CC80021-A5F7-4167-ECC1-5F57C8B88B90 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +E5B8C864-7BD9-ADC8-00B3-B03FA75857F0 +eRights + + + +true +false +1 +LOGDT024 +40 BYTE +40 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +72D11D30-B895-F76F-7E96-BB53E75B164B +eRights + + + +true +false +1 +LOGDT024 +80 BYTE +80 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +C737446F-3A43-36B2-8C1A-66D5D2F64FE7 +eRights + + + +true +false +1 +LOGDT024 +768 BYTE +768 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +79C34995-3F5E-BFD2-F046-EE30F835C3E5 +eRights + + + +true +false +1 +LOGDT024 +768 BYTE +768 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +D447C518-18EB-EB61-22D0-F43D4BDFF430 +eRights + + + +true +false +1 +LOGDT024 +1587 BYTE +1587 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +55DB5A9D-1B5A-E59D-87EE-28B51FF43FAE +eRights + + + +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, + + +walloar +2021-03-02 09:53:55 UTC +516A919A-EDAB-DA8F-CC42-440602C9E09F +eRights + + + +true +false +1 +LOGDT024 +40 BYTE +40 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +4827BE69-2F56-32C8-3804-503266451DDA +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +15464873-8C69-4AA0-CCF5-EC762D3B8C03 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:55 UTC +06FAB31F-1E92-75B6-AA62-E316DF963341 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +08028E01-7C43-9457-C134-93612D610304 +eRights + + + +true +false +1 +LOGDT024 +7 BYTE +7 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +11786FDF-2365-8CF8-F29A-3F583911F7BE +eRights + + + +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/FD62CE14-5107-506C-2AA9-8B0DFE1AFD8B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/FD62CE14-5107-506C-2AA9-8B0DFE1AFD8B.xml new file mode 100644 index 0000000..ab57b3d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/FD62CE14-5107-506C-2AA9-8B0DFE1AFD8B.xml @@ -0,0 +1,113 @@ + + +walloar +2021-03-02 09:53:55 UTC +F3764DB4-0649-A94A-7497-92FDAEA69888 +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:55 UTC +1B53D1D7-27F3-F9EA-2D81-B994A68CDAC6 +eRights + + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +17EF2B04-88F3-4E5C-5BCA-6E904B75D09F +eRights + + + + +E2957125-2BC0-5F54-B0EB-767B6482A788 +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:55 UTC +F9E76372-E446-7D22-A1FC-908177582810 +eRights + + + + +false +1 +LOGDT024 +50 BYTE +50 BYTE,, + + +walloar +2021-03-02 09:53:55 UTC +A76E8A00-340D-F1A2-375A-54D3939E8BB2 +eRights + + + + +false +1 +LOGDT024 +25 BYTE +25 BYTE,, + + + + +walloar +2021-03-02 09:53:55 UTC +FD0B34A5-59B1-C92D-8B90-986C1AA7495A +eRights +false + + + + +true + +4A289E71-44F7-2BEA-A3D8-6B78DD82B453 + + + +walloar +2021-03-02 09:53:55 UTC +3A6B6B40-0C95-F771-8368-F80AB8B70E74 +eRights +false + + + + + +4A289E71-44F7-2BEA-A3D8-6B78DD82B453 +E5A82808-9BCB-6177-E745-79AA5100AA0B +36FAE2DA-C70F-C5C4-BC3B-D1E17EF145E7 + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/FFEBDED7-672E-CFDF-B5A0-E43337D64AA7.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/FFEBDED7-672E-CFDF-B5A0-E43337D64AA7.xml new file mode 100644 index 0000000..4eaf2b3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_0/FFEBDED7-672E-CFDF-B5A0-E43337D64AA7.xml @@ -0,0 +1,316 @@ + + +walloar +2021-03-02 09:53:56 UTC +96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF +eRights + + + +4 +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +ACE1D61F-A0F0-DE50-6881-66DC66C30437 +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +AEEA8629-D589-BFEB-E5DB-3E61BF610DA9 +eRights + + + +true +false +1 +LOGDT019 +6 +0 +,6,0 + + +walloar +2021-03-02 09:53:56 UTC +6BFBEAFA-6DE5-6232-323B-35142BE2F691 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +309A0DE1-352D-F3C5-7CA0-E8D6B8CF0B2D +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +9ACDD216-A120-5EEF-51B8-676556AD9E8F +eRights + + + +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +B78F5775-457C-6E41-D636-0A3649938764 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +E347019A-32E1-5E69-57BD-5A81635DB003 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F2822F90-121A-87D5-5A45-C1E15D246FAE +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +09F864E8-30A7-7273-E0EB-2DE4A7113D76 +eRights + + + +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +9434A900-5A9D-7B1F-29D2-0EDCE5CBB1A6 +eRights + + + +false +1 +LOGDT024 +1 CHAR +1 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +FF912DD4-983B-FCAC-DE4A-6ED93B38974B +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +E990B9EE-E6F0-7F3C-AF9B-163864BEBF18 +eRights + + + +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +1EA910A5-4DB8-C6F3-6C8C-AE4711F4EB04 +eRights + + + +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +EC441A93-EC35-5F22-B327-7280809DE67D +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +0694A303-8FA1-52F7-CC0B-BD57B9F0C76D +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +BBD9473C-B3AC-F7B8-4E0B-14C7430D0D8A +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +42E650EA-8A76-7300-580A-447E574445D4 +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +9A535BEE-7E63-7618-4AAB-B54450F27538 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +5885B68F-AFC2-077C-9723-EFC3E7AD5AA7 +eRights + + + +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, + + +walloar +2021-03-02 09:53:56 UTC +F4C71422-AFC8-AE89-36F0-AFD6CA9D1A2F +eRights + + + +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_1/3865B4BE-3C20-A7CC-9882-45676DF0071C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_1/3865B4BE-3C20-A7CC-9882-45676DF0071C.xml new file mode 100644 index 0000000..b1bd6c5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_1/3865B4BE-3C20-A7CC-9882-45676DF0071C.xml @@ -0,0 +1,152 @@ + + +walloar +2021-03-02 09:53:56 UTC +19B5777E-F422-5B95-B997-179834446A02 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +7994C82C-4D52-F039-9468-69BE5E0E585A +eRights + + + +false +1 +LOGDT019 +8 +0 +,8,0 + + +walloar +2021-03-02 09:53:56 UTC +FDE52FF6-A6F7-6BB7-00E3-F9DA60BDFFFD +eRights + + + +true +false +1 +LOGDT024 +5 BYTE +5 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F069DE01-1CE7-4CB8-72CB-9848CD072362 +eRights + + + +true +false +1 +LOGDT024 +250 BYTE +250 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +54DFF18E-0A1F-A47B-1178-98447D9C1170 +eRights + + + +true +false +1 +LOGDT028 +4000 +4000,, + + +walloar +2021-03-02 09:53:56 UTC +368BF05C-05A7-44CC-DFF7-A9D252E77227 +eRights + + + +false +1 +LOGDT007 +7 +7,, + + +walloar +2021-03-02 09:53:56 UTC +C5A2732A-1C6E-AEE6-1C73-FFD823D55676 +eRights + + + +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +B1699416-E020-D0DE-25E8-F1787C643388 +eRights + + + +true +false +1 +LOGDT019 +,, + + +walloar +2021-03-02 09:53:56 UTC +747B1199-E980-30AE-32DE-DA772BC2DABB +eRights + + + +true +false +1 +LOGDT007 +7 +7,, + + + + +walloar +2021-03-02 09:53:56 UTC +962542B9-B17A-BAFA-0D06-B9BBD30AE5F3 +eRights +false + + + +true + +57597A7A-E43B-FD1E-F464-297B29AC284E + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_1/5E847542-23E5-6A8B-B15D-82F3F3E4E926.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_1/5E847542-23E5-6A8B-B15D-82F3F3E4E926.xml new file mode 100644 index 0000000..3812833 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_1/5E847542-23E5-6A8B-B15D-82F3F3E4E926.xml @@ -0,0 +1,65 @@ + + +walloar +2021-03-02 09:53:56 UTC +4F6003DF-80DE-EF7D-BA95-7CC8BD38C971 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +88251835-CE02-D7C5-A6A7-019433DD5EF1 +eRights + + + +false +1 +LOGDT019 +* +0 +,*,0 + + +walloar +2021-03-02 09:53:56 UTC +85B71AD3-79F0-59A9-FAAE-9FC1C637FA12 +eRights + + + +false +1 +LOGDT024 +256 BYTE +256 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +DA42358C-B9B9-69F3-99CE-92D7CCC2E58E +eRights + + + +true +false +1 +LOGDT019 +* +0 +,*,0 + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_1/62878520-1431-B16F-7C85-65753A45F334.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_1/62878520-1431-B16F-7C85-65753A45F334.xml new file mode 100644 index 0000000..be12243 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_1/62878520-1431-B16F-7C85-65753A45F334.xml @@ -0,0 +1,127 @@ + + +walloar +2021-03-02 09:53:56 UTC +25DD1062-1B61-D9F8-86D8-135E939ABBC4 +eRights + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +17FAEC0A-9B88-A26F-BCE2-14CB1292D1B8 +eRights + + + +false +1 +LOGDT019 +* +0 +,*,0 + + +walloar +2021-03-02 09:53:56 UTC +1CEA15BA-30F0-E608-40A6-AAF9D6036A1D +eRights + + + +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +D2C1A7BF-46BC-626F-D7BB-C7040AA6E9EA +eRights + + + +true +false +1 +LOGDT019 +* +0 +,*,0 + + +walloar +2021-03-02 09:53:56 UTC +E29ABC4A-BEB8-1F41-41EA-EAA3A20FFE1D +eRights + + + +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +EF090A94-8A77-9730-9D70-1F141075527E +eRights + + + +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +4AF5C295-960F-CDFE-B92E-D6EA1ED8EA72 +eRights + + + +true +false +1 +LOGDT007 +7 +SYSDATE +7,, + + +walloar +2021-03-02 09:53:56 UTC +121C2010-DB59-A08A-2A71-188EBC4CCB40 +eRights + + + +false +1 +LOGDT024 +10 BYTE +10 BYTE,, + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_1/7CB9FD0D-D775-7818-F326-796FAA358D21.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_1/7CB9FD0D-D775-7818-F326-796FAA358D21.xml new file mode 100644 index 0000000..6444b38 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/entity/seg_1/7CB9FD0D-D775-7818-F326-796FAA358D21.xml @@ -0,0 +1,299 @@ + + +walloar +2021-03-02 09:53:56 UTC +D43A6B01-A010-2E62-F805-42BD75AE0D0F +eRights + + + + +NO +0 +Single Table +0 +Year +9999999 +0 +Third + + +walloar +2021-03-02 09:53:56 UTC +2CF1334C-24F7-D158-E9B5-DF8359067355 +eRights + + + + +16DA4AB6-1613-7D13-DDC5-BBAA1E75D452 +false +1 +LOGDT024 +120 BYTE +120 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +5FD4515C-12A7-84BB-FFB6-C79A67E1BD89 +eRights + + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +B055AA0F-73F2-1590-2A89-791808C92187 +eRights + + + + +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2CF1334C-24F7-D158-E9B5-DF8359067355 +eRights + + + + +575E9E0B-42AD-2B75-9556-C36CD8D52096 +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2CF1334C-24F7-D158-E9B5-DF8359067355 +eRights + + + + +E21FF685-221F-2DD8-9BFB-A6FB32D6EB46 +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +046B5A99-EC23-D293-D583-B89AF3D16B8C +eRights + + + + +true +false +1 +LOGDT024 +250 BYTE +250 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +2D5740CD-6C9D-E9D5-5EF1-6ED6C0E04063 +eRights + + + + +true +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +9BD8059B-BBD3-8401-57C8-B113ACF62FA1 +eRights + + + + +true +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +02B19159-1FC5-90AE-2F33-1E197D8FC346 +eRights + + + + +true +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +4391B19D-E351-8774-3767-7BBA84CCA4D8 +eRights + + + + +false +1 +LOGDT024 +16 BYTE +16 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +1C29E2EC-3F2C-7BE8-61D2-00C89DEAAA4A +eRights + + + + +false +1 +LOGDT024 +8 BYTE +8 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +72964F80-1BF8-3637-F65D-451E8DC70348 +eRights + + + + +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +DE79909B-7342-7DCB-D4EA-2A956EC6FAF0 +eRights + + + + +true +false +1 +LOGDT019 +13 +0 +,13,0 + + +walloar +2021-03-02 09:53:56 UTC +0E503486-69B7-1B64-F4DA-28B73E8DE9DD +eRights + + + + +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, + + +walloar +2021-03-02 09:53:56 UTC +F2061605-66BD-9C24-F439-AFE2D53D9585 +eRights + + + + +true +false +1 +LOGDT019 +2 +0 +,2,0 + + +walloar +2021-03-02 09:53:56 UTC +240A924B-466A-7203-5587-E54B2E27836B +eRights + + + + +true +false +1 +LOGDT029 +4000 +4000,, + + + + +walloar +2021-03-02 09:53:56 UTC +D6708633-7E79-72CE-6C8B-9CA359CE34EE +eRights +false + + + + +true + +675A581C-86EF-4D68-9D95-52C54296A9F5 +952844E2-DA2B-4F1B-259A-3B8EA880491B +9840F489-6AF7-A876-BB1D-C673DD36F02A +323EFBA8-35C4-7792-B864-BE76652DD698 +681A1055-759C-A8C2-8698-57433F38C50B + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/008DAECF-D9CE-790D-5E20-F99E23972044.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/008DAECF-D9CE-790D-5E20-F99E23972044.xml new file mode 100644 index 0000000..3e5690a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/008DAECF-D9CE-790D-5E20-F99E23972044.xml @@ -0,0 +1,22 @@ + + +walloar +2021-03-02 09:53:56 UTC +A269AD9C-167B-CFE9-5538-4BD7C813138F +eRights + + + + +28B6538E-11EB-4E98-47C7-AF9465258BA2 +7CB9FD0D-D775-7818-F326-796FAA358D21 +false +true +false +1 +7CB9FD0D-D775-7818-F326-796FAA358D21 +1 +4D41A940-7772-0F4E-D47A-6975BB2D5AF0 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/043CCF13-0F97-F4DE-ADD0-BC51BABCEF35.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/043CCF13-0F97-F4DE-ADD0-BC51BABCEF35.xml new file mode 100644 index 0000000..ac1bce8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/043CCF13-0F97-F4DE-ADD0-BC51BABCEF35.xml @@ -0,0 +1,22 @@ + + +walloar +2021-03-02 09:53:56 UTC +3A55A721-231C-7467-69ED-A3F683AC7F8E +eRights + + + + +EF1F1E2F-F125-D831-18FE-42146AC46BD7 +2C600E10-CDB3-CA41-2AD9-EC601B961F93 +true +false +false +1 +2C600E10-CDB3-CA41-2AD9-EC601B961F93 +1 +34E28D0E-DF2A-4861-FE91-5B07537FBF53 +true +CASCADE + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/07727274-66DF-FD90-6692-0A1F0BEE1775.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/07727274-66DF-FD90-6692-0A1F0BEE1775.xml new file mode 100644 index 0000000..0a08e35 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/07727274-66DF-FD90-6692-0A1F0BEE1775.xml @@ -0,0 +1,22 @@ + + +walloar +2021-03-02 09:53:56 UTC +C1448B26-F39E-DA07-4624-C0847B58BF74 +eRights + + + + +5B527DE7-9827-7431-325A-CD08241C2895 +34E28D0E-DF2A-4861-FE91-5B07537FBF53 +true +false +false +1 +34E28D0E-DF2A-4861-FE91-5B07537FBF53 +1 +CA9EC934-467D-3BBA-72A9-25B2A0999791 +true +CASCADE + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/16E02466-0EC3-755A-97C0-3A8400F36126.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/16E02466-0EC3-755A-97C0-3A8400F36126.xml new file mode 100644 index 0000000..4d231fc --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/16E02466-0EC3-755A-97C0-3A8400F36126.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +209D7EC3-F55C-0184-0B74-A4FB6CAE9A5E +eRights + + + + +363C202B-AE72-4B2D-08F7-DE7CB52B2123 +false +true +true +1 +C064300A-70F1-394A-04D8-045CD27FC5B0 +* +1A8EC118-CF74-21F4-D9CB-E1D45087EA97 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/17EF2B04-88F3-4E5C-5BCA-6E904B75D09F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/17EF2B04-88F3-4E5C-5BCA-6E904B75D09F.xml new file mode 100644 index 0000000..025e85c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/17EF2B04-88F3-4E5C-5BCA-6E904B75D09F.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +DC0B6208-5DBD-BD77-C70C-852A9DC29ACD +eRights + + + + +446ADA8C-9788-DC55-3863-6F0338570346 +false +false +false +1 +5E7BC858-5237-87AF-3D96-5EA273AD7715 +* +FD62CE14-5107-506C-2AA9-8B0DFE1AFD8B +true +CASCADE + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/1B820996-9CC3-118E-F4DB-E25902532BCC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/1B820996-9CC3-118E-F4DB-E25902532BCC.xml new file mode 100644 index 0000000..8d82094 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/1B820996-9CC3-118E-F4DB-E25902532BCC.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +70A6D18F-E497-07C1-58AA-0FA0CE4F96EE +eRights + + + + +9E72287E-5AF5-24C8-2E91-E3974C0C3F1A +false +true +true +1 +86DFFDA2-73B1-ABDC-FF4B-C21506530FB9 +* +E176ACBD-7472-2FE5-C56D-79CF6E4C54FC +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/23FDAAE0-304B-5E4D-9BFE-2B4BA74A90E1.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/23FDAAE0-304B-5E4D-9BFE-2B4BA74A90E1.xml new file mode 100644 index 0000000..593dc89 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/23FDAAE0-304B-5E4D-9BFE-2B4BA74A90E1.xml @@ -0,0 +1,22 @@ + + +walloar +2021-03-02 09:53:56 UTC +651FBD69-47CE-EEA3-5E9C-E29B4381F792 +eRights + + + + +A1E97E86-E860-40AB-83B8-0B05A3BD7E31 +6DE4047F-E391-1EE2-61CB-F9A65AB0A5C6 +true +false +false +1 +6DE4047F-E391-1EE2-61CB-F9A65AB0A5C6 +1 +3A197A79-F412-9811-F8BA-37E76923A918 +true +CASCADE + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/25A32C98-8731-A2AC-3DE8-1D4239184F6C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/25A32C98-8731-A2AC-3DE8-1D4239184F6C.xml new file mode 100644 index 0000000..3916f2d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/25A32C98-8731-A2AC-3DE8-1D4239184F6C.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +FD1CC4ED-111A-33BE-8C5D-CCF4D47D0E93 +eRights + + + + +582A64A3-68C7-88BB-148C-7BF367EA1760 +false +true +false +1 +DF3C10D6-CB04-CF77-616F-08B8DAF51D93 +* +56CABDF3-5535-A1EC-AB17-B73FE749E03E +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/2BCE959C-63A7-6313-70A7-DCF7A05B4AA0.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/2BCE959C-63A7-6313-70A7-DCF7A05B4AA0.xml new file mode 100644 index 0000000..2429ebd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/2BCE959C-63A7-6313-70A7-DCF7A05B4AA0.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +896B29CB-B852-917B-EDBA-51BEAA78E7AA +eRights + + + + +EF1F1E2F-F125-D831-18FE-42146AC46BD7 +false +false +false +1 +2C600E10-CDB3-CA41-2AD9-EC601B961F93 +* +54F5ABB2-D9D3-6F84-A6BE-7BE9418086FC +true +CASCADE + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE.xml new file mode 100644 index 0000000..814ee89 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/2C91C9F8-2E50-5034-DC7C-BEC41D3F04EE.xml @@ -0,0 +1,22 @@ + + +walloar +2021-03-02 09:53:56 UTC +09265032-5D6E-17D1-C15F-C8EDC4C6018F +eRights + + + + +28B6538E-11EB-4E98-47C7-AF9465258BA2 +7CB9FD0D-D775-7818-F326-796FAA358D21 +false +true +false +1 +7CB9FD0D-D775-7818-F326-796FAA358D21 +1 +64AB3B08-7A9F-42BA-15BF-609299D82610 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/2CF1334C-24F7-D158-E9B5-DF8359067355.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/2CF1334C-24F7-D158-E9B5-DF8359067355.xml new file mode 100644 index 0000000..d37864d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/2CF1334C-24F7-D158-E9B5-DF8359067355.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +2CA2FF91-2274-C95D-212C-E5D7E7883A7E +eRights + + + + +E2FC095E-73F7-7698-6349-2A7AB79481CA +true +true +false +1 +53DC252B-31A1-BC79-05DE-6287F3A46C1A +* +7CB9FD0D-D775-7818-F326-796FAA358D21 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/314DDCD3-31E3-88E5-E5AD-659BB5F1488F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/314DDCD3-31E3-88E5-E5AD-659BB5F1488F.xml new file mode 100644 index 0000000..ed465a2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/314DDCD3-31E3-88E5-E5AD-659BB5F1488F.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +7B524D3F-78A9-AFEB-25E0-57EAD1493871 +eRights + + + + +9E72287E-5AF5-24C8-2E91-E3974C0C3F1A +false +true +true +1 +86DFFDA2-73B1-ABDC-FF4B-C21506530FB9 +* +C064300A-70F1-394A-04D8-045CD27FC5B0 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/3D486138-DC40-2F6B-8582-A776A6148434.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/3D486138-DC40-2F6B-8582-A776A6148434.xml new file mode 100644 index 0000000..c5e8ffb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/3D486138-DC40-2F6B-8582-A776A6148434.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +2D07F01C-5878-6C1B-0D55-83EF16F72153 +eRights + + + + +B80E9534-BB46-9B11-229F-4673D8A69D68 +false +true +true +1 +BA854E6B-64B0-88E9-8183-B139BF17E9B2 +* +D6DBF9EA-A18C-7404-3676-D563D8A9E256 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/48F7BCFB-54CF-9FD3-A147-F317E38ADFBD.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/48F7BCFB-54CF-9FD3-A147-F317E38ADFBD.xml new file mode 100644 index 0000000..77aacc4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/48F7BCFB-54CF-9FD3-A147-F317E38ADFBD.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +E4198D4D-BE5E-17D5-50E1-E8A5F189F359 +eRights + + + + +FC430689-600E-0903-F09D-AF97B7C43FA2 +false +true +true +1 +BA08A3E0-01C5-1B90-25AC-CEDC6457FE58 +* +C064300A-70F1-394A-04D8-045CD27FC5B0 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/4FFA3719-6E4F-A41C-CFC3-721B0CD15782.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/4FFA3719-6E4F-A41C-CFC3-721B0CD15782.xml new file mode 100644 index 0000000..f43498f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/4FFA3719-6E4F-A41C-CFC3-721B0CD15782.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +B5009973-3A84-D977-05D4-6C0353E0A897 +eRights + + + + +9E72287E-5AF5-24C8-2E91-E3974C0C3F1A +false +true +true +1 +86DFFDA2-73B1-ABDC-FF4B-C21506530FB9 +* +1A8EC118-CF74-21F4-D9CB-E1D45087EA97 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/5785565F-E5B5-8EB3-152A-67A352536411.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/5785565F-E5B5-8EB3-152A-67A352536411.xml new file mode 100644 index 0000000..fe5494a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/5785565F-E5B5-8EB3-152A-67A352536411.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +B7A1598C-867B-22DA-C6C9-16618C6EBD66 +eRights + + + + +362417E1-22E6-E6F5-B247-7C70400B0D2D +false +true +true +1 +E668A87C-7B90-5FC2-4038-FAD1D1AD75F4 +* +0D5C4365-9EF9-39ED-41CD-899807840607 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/613116D9-CBC2-D5ED-F445-E9747F6516F6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/613116D9-CBC2-D5ED-F445-E9747F6516F6.xml new file mode 100644 index 0000000..df12381 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/613116D9-CBC2-D5ED-F445-E9747F6516F6.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +481C96EB-685B-A700-9F52-D6BA627E586E +eRights + + + + +A1E97E86-E860-40AB-83B8-0B05A3BD7E31 +true +false +false +1 +6DE4047F-E391-1EE2-61CB-F9A65AB0A5C6 +* +2580CBB3-B97C-B649-9472-3D153EA8A687 +true +CASCADE + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/64F9CE94-79B7-189D-6C96-5595355F5E54.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/64F9CE94-79B7-189D-6C96-5595355F5E54.xml new file mode 100644 index 0000000..d7b5d85 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/64F9CE94-79B7-189D-6C96-5595355F5E54.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +69AF70F0-33C5-9633-57F0-3E65962BAF0E +eRights + + + + +89A0978B-F826-D7C7-888F-4D557F14DDEA +false +true +false +1 +0D5C4365-9EF9-39ED-41CD-899807840607 +* +C219EE74-3B16-3794-DAF8-2367867CFA6E +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/685EAA60-EEB5-4819-81A2-F6C31F40C816.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/685EAA60-EEB5-4819-81A2-F6C31F40C816.xml new file mode 100644 index 0000000..04bd1b2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/685EAA60-EEB5-4819-81A2-F6C31F40C816.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +65E3B4C7-7537-F055-551C-3C579E557F76 +eRights + + + + +362417E1-22E6-E6F5-B247-7C70400B0D2D +false +true +true +1 +E668A87C-7B90-5FC2-4038-FAD1D1AD75F4 +* +D6DBF9EA-A18C-7404-3676-D563D8A9E256 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/7D3D4DB0-30DA-1265-3A3B-1A59DA528B32.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/7D3D4DB0-30DA-1265-3A3B-1A59DA528B32.xml new file mode 100644 index 0000000..eccc438 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/7D3D4DB0-30DA-1265-3A3B-1A59DA528B32.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +8FBE3861-9C69-61CA-6407-29C42040EFF6 +eRights + + + + +362417E1-22E6-E6F5-B247-7C70400B0D2D +false +true +true +1 +E668A87C-7B90-5FC2-4038-FAD1D1AD75F4 +* +E176ACBD-7472-2FE5-C56D-79CF6E4C54FC +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/85536C2D-DE96-659A-488C-664E4DFDD24B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/85536C2D-DE96-659A-488C-664E4DFDD24B.xml new file mode 100644 index 0000000..32da042 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/85536C2D-DE96-659A-488C-664E4DFDD24B.xml @@ -0,0 +1,22 @@ + + +walloar +2021-03-02 09:53:56 UTC +A9BD1B11-7E29-A702-0D9E-574F89FAAF59 +eRights + + + + +28B6538E-11EB-4E98-47C7-AF9465258BA2 +7CB9FD0D-D775-7818-F326-796FAA358D21 +false +true +false +1 +7CB9FD0D-D775-7818-F326-796FAA358D21 +1 +59763EA4-4AA3-992D-969B-E21B236CB447 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/8806F619-C25C-3011-4C6C-D46137F7538D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/8806F619-C25C-3011-4C6C-D46137F7538D.xml new file mode 100644 index 0000000..6d7ed08 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/8806F619-C25C-3011-4C6C-D46137F7538D.xml @@ -0,0 +1,22 @@ + + +walloar +2021-03-02 09:53:56 UTC +2B8A270A-BEBE-F687-184E-FAB53EF94D00 +eRights + + + + +28B6538E-11EB-4E98-47C7-AF9465258BA2 +7CB9FD0D-D775-7818-F326-796FAA358D21 +false +true +false +1 +7CB9FD0D-D775-7818-F326-796FAA358D21 +1 +6A5146C3-EB9D-BA1D-3F62-FEE9F6155BE8 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/9CC87FE6-69EA-EFDC-773C-E8278DF26DFF.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/9CC87FE6-69EA-EFDC-773C-E8278DF26DFF.xml new file mode 100644 index 0000000..b312b82 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/9CC87FE6-69EA-EFDC-773C-E8278DF26DFF.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +35741834-1311-C862-18CE-B9EDB26E335D +eRights + + + + +64A76761-D0BE-A39C-1DF8-DDD35B42B9C5 +true +true +false +1 +54F5ABB2-D9D3-6F84-A6BE-7BE9418086FC +1 +E0B08F7D-D853-FDAC-836A-C01306FEFCEB +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/AB932BFC-2DE9-E516-56A9-DB64019426E3.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/AB932BFC-2DE9-E516-56A9-DB64019426E3.xml new file mode 100644 index 0000000..1ba2f35 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/AB932BFC-2DE9-E516-56A9-DB64019426E3.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-03 09:44:12 UTC +1804C3CD-E087-D9B9-ADB8-EE8821F93047 +eRights + + + + +9E72287E-5AF5-24C8-2E91-E3974C0C3F1A +false +true +false +1 +86DFFDA2-73B1-ABDC-FF4B-C21506530FB9 +* +BA08A3E0-01C5-1B90-25AC-CEDC6457FE58 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/B004067B-5FA9-36FE-5F74-610A953B8C3B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/B004067B-5FA9-36FE-5F74-610A953B8C3B.xml new file mode 100644 index 0000000..19428d9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/B004067B-5FA9-36FE-5F74-610A953B8C3B.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +A9C3D3B2-BFEE-B91D-3FC9-BEAC050F3537 +eRights + + + + +362417E1-22E6-E6F5-B247-7C70400B0D2D +false +true +true +1 +E668A87C-7B90-5FC2-4038-FAD1D1AD75F4 +* +C064300A-70F1-394A-04D8-045CD27FC5B0 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/BFFCED8D-CD85-A60C-513E-0E63C798F627.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/BFFCED8D-CD85-A60C-513E-0E63C798F627.xml new file mode 100644 index 0000000..795aca2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/BFFCED8D-CD85-A60C-513E-0E63C798F627.xml @@ -0,0 +1,22 @@ + + +walloar +2021-03-02 09:53:56 UTC +F8A9DBF7-1E8E-89AB-EF76-1CE86EB08712 +eRights + + + + +446ADA8C-9788-DC55-3863-6F0338570346 +5E7BC858-5237-87AF-3D96-5EA273AD7715 +true +false +false +1 +5E7BC858-5237-87AF-3D96-5EA273AD7715 +1 +6DE4047F-E391-1EE2-61CB-F9A65AB0A5C6 +true +CASCADE + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/C44D4851-452C-5221-912A-D56B617926B7.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/C44D4851-452C-5221-912A-D56B617926B7.xml new file mode 100644 index 0000000..7bc9760 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/C44D4851-452C-5221-912A-D56B617926B7.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +1496599A-8793-9555-A0D3-ADBC948F5891 +eRights + + + + +89A0978B-F826-D7C7-888F-4D557F14DDEA +false +true +true +1 +0D5C4365-9EF9-39ED-41CD-899807840607 +* +D6DBF9EA-A18C-7404-3676-D563D8A9E256 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/C6A1399A-90B6-CD13-4404-FF9FCE1AA468.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/C6A1399A-90B6-CD13-4404-FF9FCE1AA468.xml new file mode 100644 index 0000000..043d101 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/C6A1399A-90B6-CD13-4404-FF9FCE1AA468.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +2EC8F796-BEE7-715E-52A0-F31971AE73E4 +eRights + + + + +363C202B-AE72-4B2D-08F7-DE7CB52B2123 +false +true +true +1 +C064300A-70F1-394A-04D8-045CD27FC5B0 +* +D6DBF9EA-A18C-7404-3676-D563D8A9E256 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/D819AF0C-E95D-FE05-EDF9-D86B0A7BCB3C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/D819AF0C-E95D-FE05-EDF9-D86B0A7BCB3C.xml new file mode 100644 index 0000000..2109080 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/D819AF0C-E95D-FE05-EDF9-D86B0A7BCB3C.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +C9D728AE-B9AE-4BC6-979D-3D5086BF43E3 +eRights + + + + +AB16A89E-6B8C-55C4-2971-E9A594B12FE0 +true +true +false +1 +FD62CE14-5107-506C-2AA9-8B0DFE1AFD8B +1 +2580CBB3-B97C-B649-9472-3D153EA8A687 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/E91BF69B-DF66-D60D-E378-76624221DFFB.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/E91BF69B-DF66-D60D-E378-76624221DFFB.xml new file mode 100644 index 0000000..9979266 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/E91BF69B-DF66-D60D-E378-76624221DFFB.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +1528AC05-06E8-0941-F696-31FC0042221E +eRights + + + + +CAC648E0-AA5A-96B4-63AE-7D724D3FD8F4 +false +true +false +1 +F86F6775-160D-1266-D8EC-B11BB6B47DF6 +* +BA08A3E0-01C5-1B90-25AC-CEDC6457FE58 +true +NO ACTION + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/FEC0C51C-B03C-CACE-768D-AABE9193E41D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/FEC0C51C-B03C-CACE-768D-AABE9193E41D.xml new file mode 100644 index 0000000..973b733 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/relation/seg_0/FEC0C51C-B03C-CACE-768D-AABE9193E41D.xml @@ -0,0 +1,21 @@ + + +walloar +2021-03-02 09:53:56 UTC +8B54FB33-B403-C2B8-F0DD-34C005CA9AD3 +eRights + + + + +5B527DE7-9827-7431-325A-CD08241C2895 +true +false +false +1 +34E28D0E-DF2A-4861-FE91-5B07537FBF53 +* +E0B08F7D-D853-FDAC-836A-C01306FEFCEB +true +CASCADE + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/subviews/81A0BCFB-2AE2-F1CD-8E75-430D2978495E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/subviews/81A0BCFB-2AE2-F1CD-8E75-430D2978495E.xml new file mode 100644 index 0000000..a3b7f58 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/subviews/81A0BCFB-2AE2-F1CD-8E75-430D2978495E.xml @@ -0,0 +1,121 @@ + + +walloar +walloar +2021-03-02 09:53:56 UTC +false +true +false +false +false +false +false +-1 +false +3FCCBB9D-FB42-0201-3B1B-9287CA76F8E3 +1 + + +false + +6A596F4E-6AED-DA11-B6A5-BFEB96787A68 + + +false + +DF7B0C9F-E350-813F-8079-2A513C3BBB58 + + +false + +E5D5A841-8811-4824-34A1-4539C84988B9 + + +false + +0452EC4C-A2FE-05AE-8D18-4ABE1D4BD994 + + +false + +DD871EFF-F2A9-A7E9-C944-D13D3E035023 + + +false + +85840D5B-AFB9-4CD7-47C3-90E2B75A3B4E + + +false + +46E70360-8AB8-4490-722E-A34BB03D735E + + +false + +39D5E7C3-48A3-3A6B-87BE-7DB9DFFA6798 + + +false + +99F54872-B1F3-0BE4-0686-467F359B7A1B + + +false + +13D22E7F-F81D-3A14-004A-8A6565AEE0F5 + + +false + +67F8ADBC-86DB-78F5-D251-980504685E32 + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/subviews/8E277499-D0A3-FA58-7FDC-CDDC9026F042.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/subviews/8E277499-D0A3-FA58-7FDC-CDDC9026F042.xml new file mode 100644 index 0000000..bbd2a84 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/subviews/8E277499-D0A3-FA58-7FDC-CDDC9026F042.xml @@ -0,0 +1,635 @@ + + +walloar +walloar +2021-03-02 08:06:04 UTC +false +true +false +false +false +false +false +-1 +false +1 + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/subviews/DF06B8EC-F1E1-B12F-6F52-D05CE829333C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/subviews/DF06B8EC-F1E1-B12F-6F52-D05CE829333C.xml new file mode 100644 index 0000000..23f1f2a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/subviews/DF06B8EC-F1E1-B12F-6F52-D05CE829333C.xml @@ -0,0 +1,34 @@ + + +walloar +walloar +2021-03-02 09:53:56 UTC +false +true +false +false +false +false +false +-1 +false +3D5EB02E-D646-B778-C8FC-047CBECB135A +1 + + +false + +5EF2FCF0-C3BB-EE86-E30E-B9AA4DBFB8FD + + +false + +AE541067-FF04-4EFD-C8AB-8981D9118A29 + + +false + +E3870A98-125D-59F5-ED74-FF58DC8847B3 + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/subviews/FD445713-5FE4-09D6-B6FE-7923F6778A6D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/subviews/FD445713-5FE4-09D6-B6FE-7923F6778A6D.xml new file mode 100644 index 0000000..1084e2e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/subviews/FD445713-5FE4-09D6-B6FE-7923F6778A6D.xml @@ -0,0 +1,225 @@ + + +walloar +walloar +2021-03-02 09:53:56 UTC +false +true +false +false +false +false +false +-1 +false +EC3CEA61-5465-DA23-FD0F-17321EB85234 +1 + + +false + +355CC249-0D5F-CBC5-3C98-1D83FF3B9D32 + + +false + +666212E2-D016-7B97-9704-F36FAA7031FE + + +false + +0008F0AF-DCA1-71F0-2544-BBAB8AB469E1 + + +false + +0EB32B92-47EC-FE47-8FE5-277F5F618EB3 + + +false + +0A3363E5-87DE-7EA6-00EF-51489A40E13E + + +false + +F542E416-3D40-9CFD-C9AE-0E45FF1ACC21 + + +false + +8F934081-C7A6-6E15-1DFA-EB4519E2030E + + +false + +AF435211-1E3D-3AFC-F209-2E82F3DF1679 + + +false + +FF8601F6-BAFE-B3DC-53F6-2A2FE5DCE9D0 + + +false + +C99FF073-355E-D222-6BBB-16A0058388FD + + +false + +508258B5-20AA-D7C0-C67D-15B14D38B3A2 + + +false + +065A38F0-9A40-A1D2-111A-B00B401E9836 + + +false + +26208F5B-B6D7-6631-84E9-2845BCAAC8BC + + +false + +A511CD32-C011-E00C-997A-A9EB73F24494 + + +false + +A4563C21-FDDF-DAE8-974A-3323BC340914 + + +false + +7D035932-B1EC-20D8-4C6D-36E73FC9EC31 + + +false + +4A3C50A8-2FFD-D8FA-B440-A6B4B674EE10 + + +false + +272DFD9D-DBDF-A0BE-7C4C-B2035F65ADB6 + + +false + +A4A90A14-108D-5964-2BFC-600A7B7B9B80 + + +false + +D6E175C7-A93E-9077-FD9A-F501DAE67EC3 + + +false + +4BACE7AA-FF97-F470-527A-A2599C10D146 + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/023095FF-AC4E-4F40-FE7A-17CD08AC8382.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/023095FF-AC4E-4F40-FE7A-17CD08AC8382.xml new file mode 100644 index 0000000..17e0ee9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/023095FF-AC4E-4F40-FE7A-17CD08AC8382.xml @@ -0,0 +1,525 @@ + + +walloar +2021-03-02 09:53:56 UTC +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +329A6576-037D-130D-A19D-4B67C9F1C65F +eRights + + + +true +false +MOVEMENT_FILE_ID +NUMBER +false +92FC6E83-CB5E-2D8F-A6E0-29502A6FB183 +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +FD4B6C63-3A6C-5FB5-8954-13F0CD3BB73F +eRights + + + +true +false +FIRST_NAME +CHAR (1 BYTE) +false +00486A6B-CF16-ABC7-78E3-C4A023146312 +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +5BDD3CBF-B2EE-701B-C304-3BA4D1B0E19B +eRights + + + +true +false +LAST_NAME +CHAR (1 BYTE) +false +31DCFF32-ED4E-0C13-688A-176CA6C58239 +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +41640F29-4831-84AD-09FB-19312BCE124D +eRights + + + +true +false +STATUS +VARCHAR2 (16 CHAR) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +A8F9FBCB-B61D-02AD-30F0-EE65156445DE +eRights + + + +true +false +STARTDATEFUTURE +DATE +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +C9E90949-93F9-5628-C9FE-3A0CFD090EBC +eRights + + + +true +false +ENDDATEFUTURE +DATE +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +02E0A741-BAAC-AF85-03B4-4809E035AF3D +eRights + + + +true +false +MOVEMENTFROM +VARCHAR2 (1042 BYTE) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +4FF9874F-34EB-5A32-098C-1C84935D5D63 +eRights + + + +true +false +MOVEMENTTO +VARCHAR2 (1042 BYTE) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +CE348D4A-F624-FD25-10E4-B27A9AF777F5 +eRights + + + +true +false +EVACUATION_STATUS +CHAR (1 BYTE) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +E6A41164-4C4F-AF0F-2AAF-BA7E6A87E826 +eRights + + + +true +false +BUDGDET_LINE_FUTURE +VARCHAR2 (256 CHAR) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +3CF928F7-B2A0-0652-FA2C-771AABEA592B +eRights + + + +true +false +MOVEMENTTYPE +VARCHAR2 (33 BYTE) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +379ACB4C-05DC-7600-E1C0-0418EEA56894 +eRights + + + +true +false +MOVEMENTYEAR +NUMBER +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +F69FCA9F-3993-C09E-8C20-6D2FB3580338 +eRights + + + +true +false +MOVEMENTCONTEXT +VARCHAR2 (128 BYTE) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +2B9228C1-46B4-D2B6-4F50-1A517F9DF5D5 +eRights + + + +true +false +PERID +NUMBER +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +94AFA3B7-0707-5859-4A2A-406C4E727166 +eRights + + + +true +false +FUTUREASSIGNMENT +NUMBER +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +11610BB2-B817-1C61-E382-75A596C05066 +eRights + + + +true +false +FILEID +VARCHAR2 (255 CHAR) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +9196756D-EC39-EE8F-1BC2-A80F3AE88541 +eRights + + + +true +false +PRIORITY +CHAR (1 BYTE) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +66429B3F-2E20-FC04-8540-D29FEF60233C +eRights + + + +true +false +ALLOCATEDTOCURRENT +VARCHAR2 (255 CHAR) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +9BECB7E4-3BF4-41A1-E8D0-7B1FE35A2FB9 +eRights + + + +true +false +ALLOCATEDTOFUTURE +VARCHAR2 (255 CHAR) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + +walloar +2021-03-02 09:53:56 UTC +A7CB12F9-7BE2-6601-A6C6-23F4DC8D325C +eRights + + + +true +false +REASON +CHAR (1 BYTE) +false +023095FF-AC4E-4F40-FE7A-17CD08AC8382 + + + + +true +MOVEMENT_FILES + + +true +MOVEMENT_CONTEXT + + +true +V_PEOPLE +true + + +true +MOVEMENT_TYPES + + +true +MV_COUNTRIES + + +true +MV_CITIES + + +MOVEMENT_FILE_ID +MOVEMENT_FILES + + +EVACUATION_STATUS +MOVEMENT_FILES + + +PRIORITY +MOVEMENT_FILES + + +CITY_CODE +MV_CITIES + + +NAME +MOVEMENT_CONTEXT + + +COUNTRY_CODE_TO +MOVEMENT_FILES + + +BUDGET_LINE +MOVEMENT_FILES + + +ASSIGN_START_DATE_TO +MOVEMENT_FILES + + +YEAR +MOVEMENT_FILES + + +NAME_EN +MV_COUNTRIES + + +COUNTRY_CODE +MV_CITIES + + +MOVEMENT_CONTEXT_ID +MOVEMENT_CONTEXT + + +ESTIMATED_END_DATE +MOVEMENT_FILES + + +MOVEMENT_TYPE_ID +MOVEMENT_TYPES + + +MOVEMENT_TYPE +MOVEMENT_TYPES + + +DESCRIPTION_EN +MV_CITIES + + +MOVEMENT_TYPE_ID +MOVEMENT_FILES + + +COUNTRY_CODE +MV_COUNTRIES + + +JOB_ID_TO +MOVEMENT_FILES + + +START_DATE +MOVEMENT_FILES + + +ASSIGN_END_DATE_TO +MOVEMENT_FILES + + +CITY_CODE_FROM +MOVEMENT_FILES + + +CONTEXT_ID +MOVEMENT_FILES + + +CITY_CODE_TO +MOVEMENT_FILES + + +FILE_ID +MOVEMENT_FILES + + +PER_ID +MOVEMENT_FILES + + +STATE +MOVEMENT_FILES + + +ORG_CD_TO +MOVEMENT_FILES + + +COUNTRY_CODE_FROM +MOVEMENT_FILES + + +ORG_CD_FROM +MOVEMENT_FILES + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/275BE4CF-7B3A-36E4-0712-D4B8C17FA7D6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/275BE4CF-7B3A-36E4-0712-D4B8C17FA7D6.xml new file mode 100644 index 0000000..6727bd6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/275BE4CF-7B3A-36E4-0712-D4B8C17FA7D6.xml @@ -0,0 +1,106 @@ + + +walloar +2021-03-02 09:53:56 UTC +51652F79-0CEB-9597-2FD6-04003423BB3B +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +1681518F-C932-DC64-185D-2B029998673D +eRights + + + +true +false +PER_ID +NUMBER (8) +false +275BE4CF-7B3A-36E4-0712-D4B8C17FA7D6 + + +walloar +2021-03-02 09:53:56 UTC +0C85AC17-3A0A-F41A-3DE5-C9F45809C43D +eRights + + + +true +false +ORG_ID +NUMBER +false +275BE4CF-7B3A-36E4-0712-D4B8C17FA7D6 + + +walloar +2021-03-02 09:53:56 UTC +EE72F443-25E5-0657-3626-942D1FD6D991 +eRights + + + +true +false +PERMISSION +VARCHAR2 (4000 BYTE) +false +275BE4CF-7B3A-36E4-0712-D4B8C17FA7D6 + + +walloar +2021-03-02 09:53:56 UTC +8F2BCE01-4F1C-7984-9B8A-88E3843DCC93 +eRights + + + +true +false +ACCESS_MODE +VARCHAR2 (1 BYTE) +false +275BE4CF-7B3A-36E4-0712-D4B8C17FA7D6 + + + + +true +ANK_MV_USER_SYS_ORG_PERMS + + +ACCESS_MODE +ANK_MV_USER_SYS_ORG_PERMS + + +PER_ID +ANK_MV_USER_SYS_ORG_PERMS + + +FEATURE +ANK_MV_USER_SYS_ORG_PERMS + + +ORG_ID +ANK_MV_USER_SYS_ORG_PERMS + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/4B94CE89-E68B-6C11-E82C-762E52B9C56D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/4B94CE89-E68B-6C11-E82C-762E52B9C56D.xml new file mode 100644 index 0000000..d706b0d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/4B94CE89-E68B-6C11-E82C-762E52B9C56D.xml @@ -0,0 +1,216 @@ + + +walloar +2021-03-02 09:53:56 UTC +1F073EAF-B6C4-E68B-44C2-839223672FA4 +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +0D95D64D-8D84-0EA5-85B9-1F0BD663E9C8 +eRights + + + +true +false +CITY_CODE +VARCHAR2 (12 BYTE) +false +90A055BC-7A96-DF72-FC2B-8C323B6C77DB +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + +walloar +2021-03-02 09:53:56 UTC +298CAC69-6CA5-50DD-8190-4375F04B2E20 +eRights + + + +true +false +COUNTRY_CODE +VARCHAR2 (12 BYTE) +false +3C54D04F-5799-7F2A-CD9C-AA07E2CFFBB7 +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + +walloar +2021-03-02 09:53:56 UTC +98E8A698-5DB3-8208-EF47-57DA7A20C9D0 +eRights + + + +true +false +CD_SYSPER +VARCHAR2 (12 BYTE) +false +9FD12B30-DD44-25C2-3B94-AE1A1DA49754 +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + +walloar +2021-03-02 09:53:56 UTC +7734DF9D-F61E-F4AB-6F4B-3F91C043BE28 +eRights + + + +true +false +CD2_SYSPER +VARCHAR2 (12 BYTE) +false +455C229A-4558-9284-8DA4-730937D9F9F4 +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + +walloar +2021-03-02 09:53:56 UTC +D4222D2B-B8ED-0937-344A-6568E9A92FAD +eRights + + + +true +false +CD_SIRE +VARCHAR2 (12 BYTE) +false +DB1AB0B0-5021-8A03-79A5-868B613412D5 +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + +walloar +2021-03-02 09:53:56 UTC +5274BDE0-FE2B-1177-30D9-763923B9EA5D +eRights + + + +true +false +NAP_CD +VARCHAR2 (12 BYTE) +false +45FD5E88-7003-989A-26EF-D99C688E9AF2 +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + +walloar +2021-03-02 09:53:56 UTC +E0004293-359A-FD97-613A-968B6A868350 +eRights + + + +true +false +RNG_ID +NUMBER +false +2FB4F129-7EF3-5A4A-F605-0C8155362D58 +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + +walloar +2021-03-02 09:53:56 UTC +75045703-D173-CC1C-4CBF-2B2717CF6448 +eRights + + + +true +false +DESCRIPTION_EN +VARCHAR2 (240 BYTE) +false +84230C2A-36D4-04D4-9331-D25B42BD6066 +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + +walloar +2021-03-02 09:53:56 UTC +01B4FF6D-185E-5F36-0CD4-D147EE9244A4 +eRights + + + +true +false +DESCRIPTION_FR +VARCHAR2 (240 BYTE) +false +7E67B858-910F-E608-A36C-C443B0C0569C +4B94CE89-E68B-6C11-E82C-762E52B9C56D + + + + +true +MV_CITIES + + +CITY_CODE +MV_CITIES + + +COUNTRY_CODE +MV_CITIES + + +CD_SYSPER +MV_CITIES + + +CD2_SYSPER +MV_CITIES + + +CD_SIRE +MV_CITIES + + +NAP_CD +MV_CITIES + + +RNG_ID +MV_CITIES + + +DESCRIPTION_EN +MV_CITIES + + +DESCRIPTION_FR +MV_CITIES + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/5036A014-10E8-35B7-4248-AA07D5A90FA8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/5036A014-10E8-35B7-4248-AA07D5A90FA8.xml new file mode 100644 index 0000000..8fd416c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/5036A014-10E8-35B7-4248-AA07D5A90FA8.xml @@ -0,0 +1,216 @@ + + +walloar +2021-03-02 09:53:56 UTC +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +717894B6-81FD-4496-B8C8-132740C55A9F +eRights + + + +true +false +FAMILY_MEMBER_ID +VARCHAR2 (51 BYTE) +false +813CDC0F-03B2-CCAF-9AA3-28C1AABE3AD3 +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + +walloar +2021-03-02 09:53:56 UTC +D4F814A4-1C3C-DDFB-B945-717ACE185C1C +eRights + + + +true +false +PER_ID +NUMBER (8) +false +A6EFD0D5-2BBA-C1D0-318E-BA2A8626F970 +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + +walloar +2021-03-02 09:53:56 UTC +ACC6FE7E-A290-5E07-027A-ED54177E27F1 +eRights + + + +true +false +SURNAME +VARCHAR2 (255 CHAR) +false +1908631A-1C5C-5FB7-BF8D-539EEA9D26C8 +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + +walloar +2021-03-02 09:53:56 UTC +C86A823C-7AD2-798B-92A3-760A1321BFEA +eRights + + + +true +false +DATE_OF_BIRTH +DATE +false +35ECBDC3-5047-72C1-75F9-410C86B77115 +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + +walloar +2021-03-02 09:53:56 UTC +1D4B20F0-BD24-93A1-B4EE-FCBBECEB9CDD +eRights + + + +true +false +TRP_CODE +VARCHAR2 (400 BYTE) +false +E9323091-4525-91A8-5524-41B4F8F3BF73 +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + +walloar +2021-03-02 09:53:56 UTC +5E1356C5-E9DF-61A0-EDF7-432D1BCD0735 +eRights + + + +true +false +REL_PER_ID +NUMBER (8) +false +2CA81DF9-3DA5-3758-FEF1-BDC3379AC668 +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + +walloar +2021-03-02 09:53:56 UTC +BB1F5A97-7988-5149-D8E0-F6274F250763 +eRights + + + +true +false +REL_SURNAME +VARCHAR2 (255 CHAR) +false +964E2FC3-06A2-B615-4B1D-0AFA8BA7E0CF +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + +walloar +2021-03-02 09:53:56 UTC +02CC06A6-B206-98D1-7E42-9BAA75ED1339 +eRights + + + +true +false +REL_FIRST_NAME +VARCHAR2 (255 CHAR) +false +54BB3FCF-841D-9ACA-F683-7AE4ADEF703A +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + +walloar +2021-03-02 09:53:56 UTC +85DB3859-6F89-FF16-8CCB-561043F2A058 +eRights + + + +true +false +REL_DATE_OF_BIRTH +DATE +false +973F3A00-959A-AC04-6D2D-74EB4AEAB6D7 +5036A014-10E8-35B7-4248-AA07D5A90FA8 + + + + +true +MV_FAMILY_MEMBERS + + +FAMILY_MEMBER_ID +MV_FAMILY_MEMBERS + + +PER_ID +MV_FAMILY_MEMBERS + + +SURNAME +MV_FAMILY_MEMBERS + + +DATE_OF_BIRTH +MV_FAMILY_MEMBERS + + +TRP_CODE +MV_FAMILY_MEMBERS + + +REL_PER_ID +MV_FAMILY_MEMBERS + + +REL_SURNAME +MV_FAMILY_MEMBERS + + +REL_FIRST_NAME +MV_FAMILY_MEMBERS + + +REL_DATE_OF_BIRTH +MV_FAMILY_MEMBERS + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/6E9014E7-CAC2-D9FF-6DA7-AE85A2DD160E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/6E9014E7-CAC2-D9FF-6DA7-AE85A2DD160E.xml new file mode 100644 index 0000000..3421dc8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/6E9014E7-CAC2-D9FF-6DA7-AE85A2DD160E.xml @@ -0,0 +1,85 @@ + + +walloar +2021-03-02 09:53:56 UTC +F47544B8-FBE2-477B-4381-C53DB2F54280 +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +7B002085-5164-C8A5-C536-D3EB7041B57A +eRights + + + +true +false +PER_ID +NUMBER (8) +false +18DCFA4D-5989-0EDD-CB37-07465C86306F +6E9014E7-CAC2-D9FF-6DA7-AE85A2DD160E + + +walloar +2021-03-02 09:53:56 UTC +7A806FCD-0D7A-BE3B-5CC1-C950C10FFED6 +eRights + + + +true +false +ORG_ID +NUMBER (10) +false +92DA9AC6-EE3B-7C4F-D1DC-8ABE75557492 +6E9014E7-CAC2-D9FF-6DA7-AE85A2DD160E + + +walloar +2021-03-02 09:53:56 UTC +B36F98F0-F29D-DD38-FB58-1B0066956507 +eRights + + + +true +false +USERID +VARCHAR2 (50 CHAR) +false +964E6D64-35C5-2204-8C4C-BAF74EB13E77 +6E9014E7-CAC2-D9FF-6DA7-AE85A2DD160E + + + + +true +ANK_MV_PERSONS_EEAS + + +PER_ID +ANK_MV_PERSONS_EEAS + + +ORG_ID +ANK_MV_PERSONS_EEAS + + +USERID +ANK_MV_PERSONS_EEAS + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/83F5516A-7C88-654B-7F9A-6158144DA931.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/83F5516A-7C88-654B-7F9A-6158144DA931.xml new file mode 100644 index 0000000..f40865f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/83F5516A-7C88-654B-7F9A-6158144DA931.xml @@ -0,0 +1,989 @@ + + +walloar +2021-03-02 09:53:56 UTC +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 +eRights + + + +true + trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + ctr.eu_state AS organization_in_eu, + ent_typ.code AS int_org_code, + CASE + WHEN ent_typ.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + INNER JOIN mv_countries ctr ON enth.country_id = ctr.country_code + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_entities_types ent_typ ON enth.org_id = ent_typ.org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + jobh.job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate) + UNION + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + ctr.eu_state AS organization_in_eu, + ent_typ.code AS int_org_code, + CASE + WHEN ent_typ.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + INNER JOIN mv_countries ctr ON enth.country_id = ctr.country_code + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_entities_types ent_typ ON enth.org_id = ent_typ.org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + jobh.job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate)]]> +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +0A31B743-2AA3-C971-3BB0-A2A5CA6839CC +eRights + + + +true +false +JOB_ID +NUMBER (10) +false +40829D20-42C1-C5DC-49DE-2D8BCD246DDF +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +A3F3B487-D415-6D59-B809-62BCAE866933 +eRights + + + +true +false +JOB_MOMENT +VARCHAR2 (255 CHAR) +false +920B13AD-E5FD-F73F-D60A-9EEB442A74D6 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +EAAC2E3B-4B22-C0D7-5B57-BC34769FDD47 +eRights + + + +true +false +JOB_TYPE +VARCHAR2 (400 CHAR) +false +E777E8B0-6BEC-6C5E-9895-934D4E359C9E +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +6E486A5F-445F-D611-7137-8BC732D90562 +eRights + + + +true +false +PERSONNEL_TYPE_DESC +VARCHAR2 (100 CHAR) +false +7B33CC7A-59EB-5DA7-07C6-6AF546583438 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +6A20615A-6B1A-7A15-F98F-C64551E72957 +eRights + + + +true +false +BUDGETARY_LINE +NUMBER (10) +false +AF4473B5-CEEF-05C2-A457-D6E4A4605D44 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +5635ED79-611B-9F02-CE1B-7C8BDA5249F9 +eRights + + + +true +false +JOB_CITY_CODE +NUMBER +false +C4568F9F-A4FE-5843-DCB2-B2F525CC1DA9 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +03DC34B8-37A3-415B-2FAB-F445FDE647AC +eRights + + + +true +false +JOB_CITY_NAME +NUMBER +false +B5021CFF-0D27-8695-77E1-050C79EC6E40 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +AE5D58AD-0884-2596-B8B2-A64360510B95 +eRights + + + +true +false +JOB_COUNTRY_CODE +NUMBER +false +8B13B7CC-A78D-FD1C-CD46-31C42ACCF905 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +68F81303-59AE-3100-00C2-F17C1A95F804 +eRights + + + +true +false +JOB_COUNTRY_NAME +VARCHAR2 (256 BYTE) +false +0F23E16A-F315-91A0-F3D5-940E6E149CF0 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +F3AA1758-C0AA-C3F3-0167-41D11CE5E95D +eRights + + + +true +false +ORGANIZATION_COUNTRY +NUMBER +false +5983A883-D13E-0B67-A0A3-3367DDF07526 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +EA4364B4-A1C1-847A-B332-091F012D521A +eRights + + + +true +false +ORGANIZATION_CITY +VARCHAR2 (256 BYTE) +false +3C93595B-58AF-29ED-0028-96BF75F31136 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +86010CF6-B28F-E482-B691-3CA7BD3AE93D +eRights + + + +true +false +ORGANIZATION_NAME +VARCHAR2 (450 BYTE) +false +C864945F-9EC7-D381-BAA2-246AA69EF288 +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +43171F72-970A-6BED-1C6F-14326FDB2964 +eRights + + + +true +false +ORGANIZATION_IN_EU +VARCHAR2 (1 BYTE) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +295169DF-DF31-381A-84B6-80D94AC419B7 +eRights + + + +true +false +INT_ORG_CODE +VARCHAR2 (450 BYTE) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +1F84AC49-F828-F344-4738-B82E4D0F0A9A +eRights + + + +true +false +INTERNATIONAL_ORGANIZATION +CHAR (1 BYTE) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +B00B5770-32C6-62E4-D7B5-F2B5A628AE59 +eRights + + + +true +false +ORG_ID +NUMBER (10) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +D66C3544-0727-ABE4-D633-58D77DEAC6E0 +eRights + + + +true +false +ASSIGN_START_DATE_TO +DATE +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +33171D2F-583E-3B61-40F8-0C60D50CE95E +eRights + + + +true +false +ASSIGN_END_DATE_TO +DATE +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +44A353B4-1B2F-CA04-17A7-2FAB5CF35187 +eRights + + + +true +false +PER_ID +NUMBER (8) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +CA9A9892-F5F9-39A4-D085-5DEEA99DAC56 +eRights + + + +true +false +SEVERITY_LEVEL +NUMBER +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +ECFD787D-D60B-CDD5-AB83-FF92FF175AB5 +eRights + + + +true +false +EVACUATION_LEVEL_CODE_ID +NUMBER +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +05C76624-9DCA-3104-D5C6-B6EC3EBD851B +eRights + + + +true +false +ALERT_STATUS_ID +NUMBER +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +F04CF8E7-E8D8-70A4-4452-107B4AC44594 +eRights + + + +true +false +EVACUATION_LEVEL_CODE +VARCHAR2 (256 BYTE) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +D5778473-9CBF-E574-AE51-B95F3002FF67 +eRights + + + +true +false +ORGANIZATION_COUNTRY_CODE +VARCHAR2 (3 CHAR) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +E77F6DD8-2B03-5F08-DF15-9023949D9A2B +eRights + + + +true +false +ORGANIZATION_CITY_CODE +VARCHAR2 (3 CHAR) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +D00262DA-D822-570A-4475-67ED9B323771 +eRights + + + +true +false +FAMILY_POSTING_TYPE_ID +NUMBER +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +E164BCD7-EED2-CE64-C98D-4E22B8ADD919 +eRights + + + +true +false +FAMILY_POSTING_TYPE +VARCHAR2 (256 BYTE) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +44620FA7-63FE-AFA2-CE1A-4D8A5612FAB7 +eRights + + + +true +false +HOD +CHAR (1 BYTE) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +0EA9EE25-8DF7-16F4-D7ED-D3A79F866553 +eRights + + + +true +false +FAMILY_POSTING_TYPE_CAT +VARCHAR2 (10 BYTE) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + +walloar +2021-03-02 09:53:56 UTC +D5B40BE4-52BD-21EC-FE72-3F87E182CA73 +eRights + + + +true +false +BUDGET_LINE +VARCHAR2 (450 BYTE) +false +83F5516A-7C88-654B-7F9A-6158144DA931 + + + + +true +MV_JOBS_HIST_EEAS + + +true +MV_ENTITIES_HIST + + +true +MV_COUNTRIES + + +true +MV_DELEGATION_STATUS + + +true +MV_ENTITIES_TYPES + + +true +MV_HEAD_OF_DELEGATIONS + + +true +MV_HRPORTAL_JOBS_DETAILS + + +JOB_ID +MV_JOBS_HIST_EEAS + + +JOB_TYPE +MV_JOBS_HIST_EEAS + + +PERSONNEL_TYPE_DESC +MV_JOBS_HIST_EEAS + + +BUDGETARY_LINE +MV_JOBS_HIST_EEAS + + +ORG_ID +MV_ENTITIES_HIST + + +SEVERITY_LEVEL +MV_DELEGATION_STATUS + + +EVACUATION_LEVEL_CODE_ID +MV_DELEGATION_STATUS + + +ALERT_STATUS_ID +MV_DELEGATION_STATUS + + +EVACUATION_LEVEL_CODE +MV_DELEGATION_STATUS + + +FAMILY_POSTING_TYPE_ID +MV_DELEGATION_STATUS + + +FAMILY_POSTING_TYPE +MV_DELEGATION_STATUS + + +BUDGET_LINE +MV_HRPORTAL_JOBS_DETAILS + + +true +MV_ASSIGNMENTS_HIST_EEAS + + +true +MV_JOBS_HIST_COM + + +true +MV_ENTITIES_HIST_COM + + +true +MV_ASSIGNMENTS_HIST_COM + + +ORG_CD +MV_ENTITIES_HIST_COM + + +EU_STATE +MV_COUNTRIES + + +PER_ID +MV_ASSIGNMENTS_HIST_EEAS + + +COUNTRY_ID +MV_ENTITIES_HIST_COM + + +END_DATE +MV_ENTITIES_HIST_COM + + +ORG_ID +MV_ENTITIES_TYPES + + +START_DATE +MV_JOBS_HIST_EEAS + + +LOCATION_COUNTRY_CODE +MV_JOBS_HIST_EEAS + + +JOB_STATUS +MV_JOBS_HIST_EEAS + + +ORG_ID +MV_ENTITIES_HIST_COM + + +COUNTRY_CODE +MV_COUNTRIES + + +PER_ID +MV_ASSIGNMENTS_HIST_COM + + +LOCATION_COUNTRY_NAME +MV_JOBS_HIST_EEAS + + +ORG_CD +MV_ENTITIES_HIST + + +ID +MV_ENTITIES_TYPES + + +END_DATE +MV_ENTITIES_HIST + + +LOCATION_COUNTRY_NAME +MV_JOBS_HIST_COM + + +JOB_ID +MV_HRPORTAL_JOBS_DETAILS + + +END_DATE +MV_ASSIGNMENTS_HIST_EEAS + + +JOB_ID +MV_ASSIGNMENTS_HIST_EEAS + + +START_DATE +MV_JOBS_HIST_COM + + +ORG_ID +MV_JOBS_HIST_EEAS + + +PER_ID +MV_HEAD_OF_DELEGATIONS + + +ORG_ID +MV_JOBS_HIST_COM + + +MAIN_ORG_ID +MV_ENTITIES_HIST_COM + + +COUNTRY_ID +MV_ENTITIES_HIST + + +ORG_ID +MV_DELEGATION_STATUS + + +LOCATION_CITY_NAME +MV_JOBS_HIST_EEAS + + +LOCATION_CITY_CODE +MV_JOBS_HIST_COM + + +JOB_STATUS +MV_JOBS_HIST_COM + + +START_DATE +MV_ASSIGNMENTS_HIST_COM + + +ENG_COUNTRY +MV_ENTITIES_HIST + + +START_DATE +MV_ASSIGNMENTS_HIST_EEAS + + +LOCATION_CITY_NAME +MV_JOBS_HIST_COM + + +ENG_CITY +MV_ENTITIES_HIST_COM + + +JOB_ID +MV_JOBS_HIST_COM + + +MAIN_ORG_ID +MV_ENTITIES_HIST + + +END_DATE +MV_ASSIGNMENTS_HIST_COM + + +BUDGETARY_LINE +MV_JOBS_HIST_COM + + +LOCATION_CITY_CODE +MV_JOBS_HIST_EEAS + + +CITY_CODE +MV_ENTITIES_HIST + + +ENG_COUNTRY +MV_ENTITIES_HIST_COM + + +START_DATE +MV_ENTITIES_HIST + + +CODE +MV_ENTITIES_TYPES + + +PERSONNEL_TYPE_DESC +MV_JOBS_HIST_COM + + +ENG_CITY +MV_ENTITIES_HIST + + +CITY_CODE +MV_ENTITIES_HIST_COM + + +START_DATE +MV_ENTITIES_HIST_COM + + +JOB_TYPE +MV_JOBS_HIST_COM + + +LOCATION_COUNTRY_CODE +MV_JOBS_HIST_COM + + +JOB_ID +MV_ASSIGNMENTS_HIST_COM + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/AD76589E-9295-E9CB-44A6-2AF590B878B6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/AD76589E-9295-E9CB-44A6-2AF590B878B6.xml new file mode 100644 index 0000000..e123d93 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/AD76589E-9295-E9CB-44A6-2AF590B878B6.xml @@ -0,0 +1,154 @@ + + +walloar +2021-03-02 09:53:56 UTC +DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49 +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +95E08EC5-5FA2-67E2-2526-EA7FB8768EC7 +eRights + + + +true +false +PER_ID +NUMBER (8) +false +AD76589E-9295-E9CB-44A6-2AF590B878B6 + + +walloar +2021-03-02 09:53:56 UTC +8C9169E9-10C7-E049-3D64-53ED4C75D507 +eRights + + + +true +false +LIEU_RECR +VARCHAR2 (300 CHAR) +false +AD76589E-9295-E9CB-44A6-2AF590B878B6 + + +walloar +2021-03-02 09:53:56 UTC +EECAF756-F926-6B43-B55E-1D65932BD389 +eRights + + + +true +false +RECR_PAY_CD +VARCHAR2 (3 CHAR) +false +AD76589E-9295-E9CB-44A6-2AF590B878B6 + + +walloar +2021-03-02 09:53:56 UTC +05CAE226-9374-E0CA-21A6-BA4C179B1307 +eRights + + + +true +false +NAME_EN +VARCHAR2 (800 BYTE) +false +AD76589E-9295-E9CB-44A6-2AF590B878B6 + + + + +true +MV_RECRUITMENT_PLACES + + +true +MV_COUNTRIES + + +PER_ID +MV_RECRUITMENT_PLACES + + +RECR_PAY_CD +MV_RECRUITMENT_PLACES + + +COUNTRY_CODE +MV_COUNTRIES + + +DT_MAJ +MV_RECRUITMENT_PLACES + + +LIEU_RECR +MV_RECRUITMENT_PLACES + + +RECR_CODE_POSTAL +MV_RECRUITMENT_PLACES + + +DT_RECR +MV_RECRUITMENT_PLACES + + +NAME_EN +MV_COUNTRIES + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E.xml new file mode 100644 index 0000000..ea0ad24 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E.xml @@ -0,0 +1,854 @@ + + +walloar +2021-03-02 09:53:56 UTC +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +81728993-351E-03AC-CE24-42A50AEEB584 +eRights + + + +true +false +PER_ID +NUMBER (8) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +14474593-C042-4041-F29C-8F29014B1B7A +eRights + + + +true +false +FIRST_NAME +VARCHAR2 (255 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +E9AB789D-857D-E9F8-3815-598340BE8D4C +eRights + + + +true +false +LAST_NAME +VARCHAR2 (255 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +8E0D1548-3F63-016A-AB4D-C3A6124550C2 +eRights + + + +true +false +GENDER +VARCHAR2 (1 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +0FE9025D-27AB-5D12-32F3-B8740D44F69B +eRights + + + +true +false +EMAIL +VARCHAR2 (4000 BYTE) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +B77491EA-0A5F-B85F-BFC1-7788C9542954 +eRights + + + +true +false +BIRTH_CITY +VARCHAR2 (70 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +381B295C-230D-11AD-EDFD-8E8BBCC85AE3 +eRights + + + +true +false +BIRTH_COUNTRY_CODE +VARCHAR2 (3 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +CAECDBB6-6F9C-4711-4846-0F48F55A8B00 +eRights + + + +true +false +BIRTH_COUNTRY_DESC +VARCHAR2 (800 BYTE) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +F39A9A7F-E4F3-3A0E-53CC-003944F1ECF3 +eRights + + + +true +false +RECRUITMENT_CITY +VARCHAR2 (300 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +1EF522B2-0BE6-556D-2DE7-EF9C4F0FD5F5 +eRights + + + +true +false +RECRUITMENT_COUNTRY +VARCHAR2 (815 BYTE) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +06DD5427-FC65-CA91-A340-7F088110CDD7 +eRights + + + +true +false +ORGANIZATION_NAME +VARCHAR2 (60 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +967E538B-987E-9FF8-BE7A-FE7A8BAD107F +eRights + + + +true +false +ORGANIZATION_CITY +VARCHAR2 (500 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +6E08B050-DD99-2506-C22C-CF7AAF0C27B6 +eRights + + + +true +false +ORGANIZATION_COUNTRY +VARCHAR2 (200 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +6351D70D-613F-352C-1AD6-5DC998BAD043 +eRights + + + +true +false +ORGANIZATION_IN_EU +VARCHAR2 (1 BYTE) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +4413448B-2221-1744-007E-FCAE4B7BFF74 +eRights + + + +true +false +INT_ORG_CODE +VARCHAR2 (450 BYTE) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +14D3BF3C-17D4-5A1B-C6C4-DD0073811836 +eRights + + + +true +false +INTERNATIONAL_ORGANIZATION +CHAR (1 BYTE) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +BF864F3E-294F-FE23-E583-20CEAE5C1F79 +eRights + + + +true +false +ORG_ID +NUMBER +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +F78D7928-662B-3AA2-90B7-BEF7C1982838 +eRights + + + +true +false +JOB_ID +NUMBER +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +BDAB0F44-7FEF-7458-30BA-9DB8043212D7 +eRights + + + +true +false +ASSIGN_START_DATE +DATE +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +B21907ED-F7EA-42AC-C34B-FA6DBD2B2E96 +eRights + + + +true +false +ASSIGN_END_DATE +DATE +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +2680A657-521B-2B9A-2960-8266C20A2B57 +eRights + + + +true +false +ORG_CD +VARCHAR2 (60 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + +walloar +2021-03-02 09:53:56 UTC +D3F8AED1-8518-6A74-578D-EADFDA4E2C79 +eRights + + + +true +false +PRIVATE_EMAIL +VARCHAR2 (320 CHAR) +false +E1EC1A6A-1F7A-602D-3842-FBC511FCCA8E + + + + +true +V_RECRUITMENT_PLACES +true + + +true +MV_ENTITIES + + +true +MV_COUNTRIES + + +true +MV_ENTITIES_TYPES + + +true +MV_EMAILS + + +true +MV_PERSONS_EEAS + + +true +MV_PERSONS_HIST_EEAS + + +true +MV_PERSONS_COM + + +true +MV_PERSONS_HIST_COM + + +true +MV_ENTITIES_HIST_COM + + +true +MV_ASSIGNMENTS_COM + + +PER_ID +MV_PERSONS_HIST_EEAS + + +IS_ACTIVE +MV_ENTITIES_TYPES + + +JOB_ID +MV_PERSONS_COM + + +PLACE_OF_BIRTH +MV_PERSONS_HIST_COM + + +ID +MV_ENTITIES_TYPES + + +COUNTRY_ID +MV_ENTITIES + + +EU_STATE +MV_COUNTRIES + + +EMAIL +MV_PERSONS_EEAS + + +PER_ID +MV_PERSONS_COM + + +SURNAME +MV_PERSONS_EEAS + + +START_DATE +MV_PERSONS_HIST_EEAS + + +ORG_ID +MV_PERSONS_COM + + +PER_ID +MV_PERSONS_HIST_COM + + +SURNAME +MV_PERSONS_COM + + +ORG_CD +MV_PERSONS_EEAS + + +COUNTRY_CODE +MV_COUNTRIES + + +JOB_ID +MV_PERSONS_EEAS + + +GENRE +MV_PERSONS_HIST_EEAS + + +PER_ID +MV_PERSONS_EEAS + + +START_DATE +MV_PERSONS_HIST_COM + + +COUNTRY_OF_BIRTH +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +MV_PERSONS_HIST_EEAS + + +ASSIGN_START_DATE +MV_PERSONS_EEAS + + +CODE +MV_ENTITIES_TYPES + + +END_DATE +MV_ASSIGNMENTS_COM + + +END_DATE +MV_ENTITIES_HIST_COM + + +ORG_ID +MV_ENTITIES_TYPES + + +ENG_COUNTRY +MV_ENTITIES_HIST_COM + + +ORG_CD +MV_PERSONS_COM + + +NAME_EN +MV_COUNTRIES + + +ENG_CITY +MV_ENTITIES + + +GENRE +MV_PERSONS_EEAS + + +PER_ID +MV_ASSIGNMENTS_COM + + +FIRST_NAME +MV_PERSONS_EEAS + + +FIRST_NAME +MV_PERSONS_COM + + +FIRST_NAME +MV_PERSONS_HIST_EEAS + + +COUNTRY_OF_BIRTH +MV_PERSONS_EEAS + + +ASSIGN_END_DATE +MV_PERSONS_EEAS + + +ENG_CITY +MV_ENTITIES_HIST_COM + + +START_DATE +MV_ASSIGNMENTS_COM + + +COUNTRY_OF_BIRTH +MV_PERSONS_COM + + +COUNTRY_ID +MV_ENTITIES_HIST_COM + + +ORG_ID +MV_ENTITIES + + +COUNTRY_OF_BIRTH +MV_PERSONS_HIST_COM + + +GENRE +MV_PERSONS_COM + + +ORG_ID +MV_ENTITIES_HIST_COM + + +PER_ID +MV_EMAILS + + +EMAIL +MV_EMAILS + + +ENG_COUNTRY +MV_ENTITIES + + +FIRST_NAME +MV_PERSONS_HIST_COM + + +GENRE +MV_PERSONS_HIST_COM + + +EMAIL +MV_PERSONS_COM + + +ORG_ID +MV_PERSONS_EEAS + + +SURNAME +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +MV_PERSONS_COM + + +TOJ_CD +MV_ASSIGNMENTS_COM + + +SURNAME +MV_PERSONS_HIST_COM + + +PLACE_OF_BIRTH +MV_PERSONS_EEAS + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/E4F06F43-C217-2A2C-1566-209CFC56D7B1.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/E4F06F43-C217-2A2C-1566-209CFC56D7B1.xml new file mode 100644 index 0000000..655d17f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/E4F06F43-C217-2A2C-1566-209CFC56D7B1.xml @@ -0,0 +1,305 @@ + + +walloar +2021-03-02 09:53:56 UTC +7E714083-33D9-F3AC-7F12-2D97828BC2A1 +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +C2551C9B-8E09-D0F9-4A94-6AFD9611851B +eRights + + + +true +false +COUNTRY_CODE +VARCHAR2 (12 BYTE) +false +D306D7F5-244C-A1DC-48F7-5D25CD2FE2CA +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +877B2023-EBC8-3720-DC97-E526E8CA1861 +eRights + + + +true +false +CD_ISO_A2 +VARCHAR2 (8 BYTE) +false +30AAD68B-C814-8B3E-7EEF-BC2F7C3469D6 +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +DB2003D8-AD3E-D7AB-89A5-9AD9C9BC62BB +eRights + + + +true +false +CD_ISO_N3 +NUMBER +false +268C9387-1274-D8EE-6174-76CBB2C4F140 +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +743C4DEC-FDA5-9A43-1430-872B72AB2E90 +eRights + + + +true +false +NAME_EN +VARCHAR2 (800 BYTE) +false +365F2FF0-DB42-0312-D378-E88545273E57 +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +23276B92-F0B9-0D17-82A0-91E61581127D +eRights + + + +true +false +LONG_NAME_EN +VARCHAR2 (800 BYTE) +false +6B16940B-F40E-4AD4-48D7-EDD5AEDAA60A +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +DB58B0E3-8ABD-050A-239B-87F8DBB10643 +eRights + + + +true +false +NAME_FR +VARCHAR2 (800 BYTE) +false +CDCE0F30-B0B5-3349-B864-EBF2A36120D0 +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +EE8DDD60-5B92-6896-F4C4-CC0AE0A17777 +eRights + + + +true +false +LONG_NAME_FR +VARCHAR2 (800 BYTE) +false +880107E6-231E-AF19-A2A6-A3FF9637A9D1 +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +AF4835E3-ACEE-CBCF-B64B-2E09840C28D0 +eRights + + + +true +false +EU_STATE +VARCHAR2 (1 BYTE) +false +94EC5103-2A9A-FDE7-AFE3-14D40B2FD49C +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +D929C73D-9833-626F-7775-A62A59DD22D7 +eRights + + + +true +false +CAPITAL +VARCHAR2 (240 BYTE) +false +A0D0C2ED-227E-5230-456B-C555C8A577CC +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +E68B97D2-89E5-9362-AC0A-958578D9347E +eRights + + + +true +false +COUNTRY_PHONE_CODE +VARCHAR2 (20 BYTE) +false +D7D1A82D-0AC6-A9A4-AD5E-1568E07E434B +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +B79F47F1-2306-D2E8-F7A3-D700DFA1BD85 +eRights + + + +true +false +CONTINENT_CODE +VARCHAR2 (8 BYTE) +false +63381FF0-52BD-F463-E35C-E45DE7FC8DA6 +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +D131BDF9-B1DD-851A-D8B6-3F81D5647F6D +eRights + + + +true +false +STATUS +CHAR (1 BYTE) +false +6133A23A-F6F4-19C2-A61C-4FF752D9F3AF +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +43AB007B-1DA0-D2F5-9847-F209A15A41F0 +eRights + + + +true +false +CURRENCY_CODE +VARCHAR2 (12 BYTE) +false +B243D270-4E10-22EA-D880-283D470F2FD0 +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + +walloar +2021-03-02 09:53:56 UTC +F1535530-51E0-7781-D7FB-9463A500BB62 +eRights + + + +true +false +CURRENCY_NAME +VARCHAR2 (240 BYTE) +false +B0BB871E-A0B8-A735-E891-D7B831E1F8DD +E4F06F43-C217-2A2C-1566-209CFC56D7B1 + + + + +true +MV_COUNTRIES + + +COUNTRY_CODE +MV_COUNTRIES + + +CD_ISO_A2 +MV_COUNTRIES + + +CD_ISO_N3 +MV_COUNTRIES + + +NAME_EN +MV_COUNTRIES + + +LONG_NAME_EN +MV_COUNTRIES + + +NAME_FR +MV_COUNTRIES + + +LONG_NAME_FR +MV_COUNTRIES + + +EU_STATE +MV_COUNTRIES + + +CAPITAL +MV_COUNTRIES + + +COUNTRY_PHONE_CODE +MV_COUNTRIES + + +CONTINENT_CODE +MV_COUNTRIES + + +STATUS +MV_COUNTRIES + + +CURRENCY_CODE +MV_COUNTRIES + + +CURRENCY_NAME +MV_COUNTRIES + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/F83A6CBC-E3A0-0E52-7784-24802A5916FE.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/F83A6CBC-E3A0-0E52-7784-24802A5916FE.xml new file mode 100644 index 0000000..9dec729 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/logical/view/seg_0/F83A6CBC-E3A0-0E52-7784-24802A5916FE.xml @@ -0,0 +1,221 @@ + + +walloar +2021-03-02 09:53:56 UTC +73DB7963-4431-C4C4-5300-393B221A8121 +eRights + + + +true + +false +true +EntityView + + +walloar +2021-03-02 09:53:56 UTC +98C244C4-AE7E-60CD-DD95-009D5C851A4E +eRights + + + +true +false +PER_ID +NUMBER (8) +false +F83A6CBC-E3A0-0E52-7784-24802A5916FE + + +walloar +2021-03-02 09:53:56 UTC +2ACB590F-75DD-5A0D-19DF-32B2339C94E5 +eRights + + + +true +false +TITLE +VARCHAR2 (3 CHAR) +false +F83A6CBC-E3A0-0E52-7784-24802A5916FE + + +walloar +2021-03-02 09:53:56 UTC +5561692A-6348-01A7-4B3B-5528C9D23127 +eRights + + + +true +false +FIRST_NAME +VARCHAR2 (255 CHAR) +false +F83A6CBC-E3A0-0E52-7784-24802A5916FE + + +walloar +2021-03-02 09:53:56 UTC +9F9C92E6-E760-B590-53F1-1E9FEC0D5D65 +eRights + + + +true +false +LAST_NAME +VARCHAR2 (255 CHAR) +false +F83A6CBC-E3A0-0E52-7784-24802A5916FE + + +walloar +2021-03-02 09:53:56 UTC +951B0D71-61C7-801F-D05F-2FBB80C3C8E1 +eRights + + + +true +false +GENDER +VARCHAR2 (1 CHAR) +false +F83A6CBC-E3A0-0E52-7784-24802A5916FE + + +walloar +2021-03-02 09:53:56 UTC +DEBBF266-5725-E6D5-711B-4F38D9562068 +eRights + + + +true +false +BIRTH_CITY +VARCHAR2 (70 CHAR) +false +F83A6CBC-E3A0-0E52-7784-24802A5916FE + + +walloar +2021-03-02 09:53:56 UTC +F1748097-7079-64D1-0F43-93DED5B86012 +eRights + + + +true +false +BIRTH_COUNTRY_CODE +VARCHAR2 (3 CHAR) +false +F83A6CBC-E3A0-0E52-7784-24802A5916FE + + +walloar +2021-03-02 09:53:56 UTC +611C5249-5A49-792D-B4E6-A4B90DD80C9D +eRights + + + +true +false +PRIVATE_EMAIL +VARCHAR2 (320 CHAR) +false +F83A6CBC-E3A0-0E52-7784-24802A5916FE + + + + +true +MV_PERSONS_HIST_COM + + +true +MV_EMAILS + + +true +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +MV_PERSONS_HIST_EEAS + + +TITLE +MV_PERSONS_HIST_COM + + +SURNAME +MV_PERSONS_HIST_EEAS + + +FIRST_NAME +MV_PERSONS_HIST_COM + + +SURNAME +MV_PERSONS_HIST_COM + + +EMAIL +MV_EMAILS + + +FIRST_NAME +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +MV_PERSONS_HIST_COM + + +COUNTRY_OF_BIRTH +MV_PERSONS_HIST_COM + + +PER_ID +MV_PERSONS_HIST_COM + + +GENRE +MV_PERSONS_HIST_EEAS + + +PER_ID +MV_EMAILS + + +PER_ID +MV_PERSONS_HIST_EEAS + + +GENRE +MV_PERSONS_HIST_COM + + +TITLE +MV_PERSONS_HIST_EEAS + + +COUNTRY_OF_BIRTH +MV_PERSONS_HIST_EEAS + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/mapping/DeletedMap_RM19245A37-9842-E195-286C-3D09C9642F4F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/mapping/DeletedMap_RM19245A37-9842-E195-286C-3D09C9642F4F.xml new file mode 100644 index 0000000..ec75f01 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/mapping/DeletedMap_RM19245A37-9842-E195-286C-3D09C9642F4F.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/mapping/DeletedMap_RMDC0E93B8-3B97-5225-E933-B6AAF251C422.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/mapping/DeletedMap_RMDC0E93B8-3B97-5225-E933-B6AAF251C422.xml new file mode 100644 index 0000000..d2f6c09 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/mapping/DeletedMap_RMDC0E93B8-3B97-5225-E933-B6AAF251C422.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/mapping/ExtendedMap.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/mapping/ExtendedMap.xml new file mode 100644 index 0000000..6811f63 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/mapping/ExtendedMap.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/mapping/ExtendedMap_RM19245A37-9842-E195-286C-3D09C9642F4F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/mapping/ExtendedMap_RM19245A37-9842-E195-286C-3D09C9642F4F.xml new file mode 100644 index 0000000..7ea5df0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/mapping/ExtendedMap_RM19245A37-9842-E195-286C-3D09C9642F4F.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/mapping/ExtendedMap_RMDC0E93B8-3B97-5225-E933-B6AAF251C422.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/mapping/ExtendedMap_RMDC0E93B8-3B97-5225-E933-B6AAF251C422.xml new file mode 100644 index 0000000..ac928e3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/mapping/ExtendedMap_RMDC0E93B8-3B97-5225-E933-B6AAF251C422.xml @@ -0,0 +1,2374 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +89A0978B-F826-D7C7-888F-4D557F14DDEA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1679CA4A-8654-7717-3892-D492B2EDF96F + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +D564B517-ECBF-7299-820F-73159E3F40A1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0E3D19F2-4D6A-89F5-0AC8-256725601412 + + + + + + + + + + + + + + + + + + +578EEB6D-4774-7C61-B771-AF389B1B2848 + + + + + + + + + + + + +EF1F1E2F-F125-D831-18FE-42146AC46BD7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +5B527DE7-9827-7431-325A-CD08241C2895 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +032FEA9A-32FE-9F07-FCA9-57FFA4285A68 + + + + + + + + + + + + + + + + + + + + + + +9AC17078-4375-2F1E-E00C-F6C91F9D7AC7 + + + + + + + + + + + + + + +152BB753-CB8B-2053-4163-A66FA61616C9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +592D9292-3486-2D4D-CC66-C2FD3D0C6182 + + + + + + + + + + + + +CB22D060-C06C-F906-AD0B-72B243612C84 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +E2FC095E-73F7-7698-6349-2A7AB79481CA + + + + + + + + + + + + + + + + + + + + + + + + + + +7AD49DC9-1729-68C0-136F-1B88156E79DF,64A76761-D0BE-A39C-1DF8-DDD35B42B9C5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3C08B751-F217-8F40-55B6-423903645A84 + + + + + + + + + + + + + + + + + + + + +52DC1780-6658-2FDA-81AA-DF876CB3DD5E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +446ADA8C-9788-DC55-3863-6F0338570346 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +2AA36D31-EDB7-6B8B-F3D2-B948C317AC02 + + + + + + + + + + + + + + + + +13E26786-C94D-B1A4-B3E2-00801664862C + + + + + + + + + + + + + + + + + + +A1E97E86-E860-40AB-83B8-0B05A3BD7E31 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +28B6538E-11EB-4E98-47C7-AF9465258BA2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +49777066-1633-0003-1AEB-FD8F610D4B7D + + + + + + + + + + + + + + +9E72287E-5AF5-24C8-2E91-E3974C0C3F1A + + + + + + + + + + + + + + + + +5342E788-9642-9BD7-29A2-B982AB4D6B04 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +B3EC706D-1DBA-5035-397D-2231F468697B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +FC430689-600E-0903-F09D-AF97B7C43FA2,844C5DC3-505B-0B35-51ED-38FE16F05570 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +B80E9534-BB46-9B11-229F-4673D8A69D68 + + + + + + + + + + + + + + + + +363C202B-AE72-4B2D-08F7-DE7CB52B2123 + + + + + + + + + + + + + + + + + + + + + + +A7D20046-6418-3AFF-9FA7-E4AE09EE3B5B + + + + + + + + + + + + + + + + +6CEC27B7-8D1B-5DB1-08A6-9D1EED6CE35C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +67923E08-F00D-34A6-C304-E8BA71763638 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +E158C9E1-0293-99A7-5089-2329055BA6EA + + + + + + + + + + + + + + + + + + + + + + + + +582A64A3-68C7-88BB-148C-7BF367EA1760 + + + + + + + + + + + + + + + + + + + + + + +719B418C-48D3-854B-7B32-D095EA6A1FFA + + + + + + + + + + + + + + + + +30C074B1-18B1-3D7E-09CC-233303FDB6B5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +362417E1-22E6-E6F5-B247-7C70400B0D2D + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +E0764846-19FA-B727-0019-48679CEC00DE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +CAC648E0-AA5A-96B4-63AE-7D724D3FD8F4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +753DB275-9049-70E7-445B-C3F0CF3C4074,AB16A89E-6B8C-55C4-2971-E9A594B12FE0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/pm/Process Model.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/pm/Process Model.xml new file mode 100644 index 0000000..f94ec46 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/pm/Process Model.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:03:42 UTC +eRights +false + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rdbms/eRights_RDBMSSites.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rdbms/eRights_RDBMSSites.xml new file mode 100644 index 0000000..75d8ebd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rdbms/eRights_RDBMSSites.xml @@ -0,0 +1,3 @@ + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422.xml new file mode 100644 index 0000000..7e253a7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422.xml @@ -0,0 +1,33 @@ + + +walloar +2021-03-02 08:04:42 UTC +eRights +true +79C73AAF-E1A7-E669-7DF0-025EE81A2AFC + +ERIGHTS-DEVELOPMENT +ERIGHTS +1 +-1 + + + +ERIGHTS-TEST +ERIGHTS +1 +1 + + +erights+dev+java +E_RIGHTS +1 + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +1 +1 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/02905B52-0BB8-7D26-DC03-371A3DE91EBD.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/02905B52-0BB8-7D26-DC03-371A3DE91EBD.xml new file mode 100644 index 0000000..790545a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/02905B52-0BB8-7D26-DC03-371A3DE91EBD.xml @@ -0,0 +1,17 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +FK_REQ_DET_ENT_MAX_CAT +walloar +2021-05-11 06:48:47 UTC +eRights +8F9F86DB-D518-BEC6-ACE5-1F4502ABCAD5 +E_RIGHTS.ENTITLMNT_MAXS_CAT +NO ACTION +false +ENTITLMNT_MAX_CAT_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/04CDB278-4B67-F32E-0A6C-FC37A7265AB8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/04CDB278-4B67-F32E-0A6C-FC37A7265AB8.xml new file mode 100644 index 0000000..18a1fc4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/04CDB278-4B67-F32E-0A6C-FC37A7265AB8.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +T_CONNECTIONS_T_CONNECTIO_FK1 +walloar +2023-06-15 12:36:24 UTC +eRights +DBFA22A3-C713-8932-9579-38E5DF26572F +ERIGHTS.T_CONNECTION_STEMS +NO ACTION +6C9A90BF-8244-128F-02CF-CA10CB0CE933 +6C68E631-6577-3F7C-B952-9CCFB4255743 +6C68E631-6577-3F7C-B952-9CCFB4255743 +false +CONNECTION_STEM_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/05AD47E6-F333-7A53-0D11-CFEA1E681681.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/05AD47E6-F333-7A53-0D11-CFEA1E681681.xml new file mode 100644 index 0000000..da9ce1b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/05AD47E6-F333-7A53-0D11-CFEA1E681681.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_DECL_PERS_ATTCH_DECL_PERS +walloar +2021-04-26 13:29:43 UTC +eRights +0165DBCA-4D8A-8DD1-683A-E97547718C06 +ERIGHTS.DECLARATION_PERSON +NO ACTION +887B1F03-49B7-7723-3B93-2D358B356F65 +4053A50E-3456-4E6C-CAC3-152BE38254DC +4053A50E-3456-4E6C-CAC3-152BE38254DC +true +DECLARATION_PERSON_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/09265032-5D6E-17D1-C15F-C8EDC4C6018F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/09265032-5D6E-17D1-C15F-C8EDC4C6018F.xml new file mode 100644 index 0000000..da49877 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/09265032-5D6E-17D1-C15F-C8EDC4C6018F.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_CRON_TRIG_TO_TRIG_FK +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.QRTZ_TRIGGERS +NO ACTION +D43A6B01-A010-2E62-F805-42BD75AE0D0F +D6708633-7E79-72CE-6C8B-9CA359CE34EE +D6708633-7E79-72CE-6C8B-9CA359CE34EE +true +SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/0ACC8F52-8767-8F44-46C7-1B3BD6E1C039.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/0ACC8F52-8767-8F44-46C7-1B3BD6E1C039.xml new file mode 100644 index 0000000..ee640fb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/0ACC8F52-8767-8F44-46C7-1B3BD6E1C039.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_POSTING_ALLOWANCES_PARENT_POSTING_ALLOWANCE +walloar +2022-10-25 12:45:50 UTC +eRights +FEC3EDF6-5FB3-742F-A39E-B6EB6097C317 +ERIGHTS.POSTING_ALLOWANCES +SET NULL +27744AC2-14D9-8DD9-513A-8FBB9C86242C +1F86EA8C-78A5-3420-067E-33A3F23179BD +1F86EA8C-78A5-3420-067E-33A3F23179BD +false +POSTING_ALLOWANCE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/0E91C9C9-F558-D21E-FD91-DC69AF75F8F0.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/0E91C9C9-F558-D21E-FD91-DC69AF75F8F0.xml new file mode 100644 index 0000000..5949ea8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/0E91C9C9-F558-D21E-FD91-DC69AF75F8F0.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_REQ_DET_ATT_REQ_DET +walloar +2022-03-18 10:16:53 UTC +eRights +F608D458-2F41-E5DC-D55C-E43004878218 +ERIGHTS.REQUEST_DETAILS +NO ACTION +B0343155-8655-39FE-4688-0AD2CB9B8528 +16046895-46AD-A059-DD8C-EC6BB63E0248 +16046895-46AD-A059-DD8C-EC6BB63E0248 +true +REQUEST_DETAIL_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/1496599A-8793-9555-A0D3-ADBC948F5891.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/1496599A-8793-9555-A0D3-ADBC948F5891.xml new file mode 100644 index 0000000..5820bcb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/1496599A-8793-9555-A0D3-ADBC948F5891.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNT_MAXS_CAT +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_MAXS_CAT +NO ACTION +ADE383DF-74A4-CD6A-4E95-CEF01A091594 +6BAB2B42-6776-35C8-7739-3287138399CF +6BAB2B42-6776-35C8-7739-3287138399CF +false +ENTITLMNT_MAX_CAT_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/1528AC05-06E8-0941-F696-31FC0042221E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/1528AC05-06E8-0941-F696-31FC0042221E.xml new file mode 100644 index 0000000..a5c7cfe --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/1528AC05-06E8-0941-F696-31FC0042221E.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_MOFI_R_MOCO +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.MOVEMENT_CONTEXT +NO ACTION +F141D682-7C3B-DF6E-0E85-6E3337BB1FA3 +4BEC1D6D-4497-ABD7-D747-01783C3F1C07 +4BEC1D6D-4497-ABD7-D747-01783C3F1C07 +true +MOVEMENT_CONTEXT_ID +true +false +true + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/209D7EC3-F55C-0184-0B74-A4FB6CAE9A5E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/209D7EC3-F55C-0184-0B74-A4FB6CAE9A5E.xml new file mode 100644 index 0000000..ee0b4e7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/209D7EC3-F55C-0184-0B74-A4FB6CAE9A5E.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNTS_TYPE +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_TYPES +NO ACTION +F6108759-A9AE-8679-03BA-D124DEC368E8 +C18549F3-BA0F-CA1A-0B56-63BF98D61818 +C18549F3-BA0F-CA1A-0B56-63BF98D61818 +false +ENTITLMNT_TYPE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2B8A270A-BEBE-F687-184E-FAB53EF94D00.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2B8A270A-BEBE-F687-184E-FAB53EF94D00.xml new file mode 100644 index 0000000..200b6e2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2B8A270A-BEBE-F687-184E-FAB53EF94D00.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SIMPLE_TRIG_TO_TRIG_FK +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.QRTZ_TRIGGERS +NO ACTION +D43A6B01-A010-2E62-F805-42BD75AE0D0F +D6708633-7E79-72CE-6C8B-9CA359CE34EE +D6708633-7E79-72CE-6C8B-9CA359CE34EE +true +SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2C064C37-5BA2-DF93-4150-DB54A3E9C408.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2C064C37-5BA2-DF93-4150-DB54A3E9C408.xml new file mode 100644 index 0000000..9a71ba6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2C064C37-5BA2-DF93-4150-DB54A3E9C408.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_REQUEST_PAYMENT_ABAC_INFO_REQUESTS +walloar +2022-03-21 10:52:45 UTC +eRights +460274AF-0F03-E620-61D4-C0A2687B1E76 +ERIGHTS.REQUESTS +NO ACTION +4CB74767-3856-9458-45EB-D45BEC46CD86 +A2A9F6E9-6FCC-E685-825C-CCA11BEAE35B +A2A9F6E9-6FCC-E685-825C-CCA11BEAE35B +false +REQUEST_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2CA2FF91-2274-C95D-212C-E5D7E7883A7E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2CA2FF91-2274-C95D-212C-E5D7E7883A7E.xml new file mode 100644 index 0000000..53d7ab2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2CA2FF91-2274-C95D-212C-E5D7E7883A7E.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_TRIGGER_TO_JOBS_FK +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.QRTZ_JOB_DETAILS +NO ACTION +7495A51C-E8A9-14BE-EABB-02B4CAB54568 +F002BBBD-6D77-5202-4E26-521A2ABBAFC7 +F002BBBD-6D77-5202-4E26-521A2ABBAFC7 +true +SCHED_NAME,JOB_NAME,JOB_GROUP +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2D07F01C-5878-6C1B-0D55-83EF16F72153.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2D07F01C-5878-6C1B-0D55-83EF16F72153.xml new file mode 100644 index 0000000..8b852af --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2D07F01C-5878-6C1B-0D55-83EF16F72153.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAXS_FK1 +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_MAXS_OPTIONS +NO ACTION +C4319A8E-825F-7AB2-3624-D14729BF4C0B +C440CF4F-9D7F-2A26-9C2E-F57BD434E08A +C440CF4F-9D7F-2A26-9C2E-F57BD434E08A +false +ENTITLMNT_MAX_OPTIONS_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2EC8F796-BEE7-715E-52A0-F31971AE73E4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2EC8F796-BEE7-715E-52A0-F31971AE73E4.xml new file mode 100644 index 0000000..15422af --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/2EC8F796-BEE7-715E-52A0-F31971AE73E4.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNT_MAXS_TYPE +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_TYPES +NO ACTION +F6108759-A9AE-8679-03BA-D124DEC368E8 +C18549F3-BA0F-CA1A-0B56-63BF98D61818 +C18549F3-BA0F-CA1A-0B56-63BF98D61818 +false +ENTITLMNT_TYPE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/328FBDD7-B6AF-BD1B-8694-AF4132D8F44A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/328FBDD7-B6AF-BD1B-8694-AF4132D8F44A.xml new file mode 100644 index 0000000..b8ad7e8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/328FBDD7-B6AF-BD1B-8694-AF4132D8F44A.xml @@ -0,0 +1,16 @@ + + +walloar +2021-04-20 14:12:59 UTC +eRights +ERIGHTS.MOVEMENT_CONTEXT +NO ACTION +F141D682-7C3B-DF6E-0E85-6E3337BB1FA3 +4BEC1D6D-4497-ABD7-D747-01783C3F1C07 +4BEC1D6D-4497-ABD7-D747-01783C3F1C07 +false +MOVEMENT_CONTEXT_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/35741834-1311-C862-18CE-B9EDB26E335D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/35741834-1311-C862-18CE-B9EDB26E335D.xml new file mode 100644 index 0000000..bf187bd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/35741834-1311-C862-18CE-B9EDB26E335D.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_ERCD_ID_CDATA_REF +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_EMAIL_RCPTS +NO ACTION +BB0C4DC3-BF20-022E-2EC1-9C41C22FD723 +F4254CF3-7A75-70B2-A927-412584C95FF1 +F4254CF3-7A75-70B2-A927-412584C95FF1 +true +ID,EMAIL_ID,REF_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/3A55A721-231C-7467-69ED-A3F683AC7F8E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/3A55A721-231C-7467-69ED-A3F683AC7F8E.xml new file mode 100644 index 0000000..cb9f969 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/3A55A721-231C-7467-69ED-A3F683AC7F8E.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_EMAIL_COMM_DATA_ID +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_EMAILS +CASCADE +F28AEFDE-0804-3C83-F214-6330BE84607B +D520E03C-5B2F-E54E-0A01-3BDA5B4EED17 +D520E03C-5B2F-E54E-0A01-3BDA5B4EED17 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/4584A384-D59B-B220-CF4D-8631558D5F94.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/4584A384-D59B-B220-CF4D-8631558D5F94.xml new file mode 100644 index 0000000..785a57f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/4584A384-D59B-B220-CF4D-8631558D5F94.xml @@ -0,0 +1,16 @@ + + +walloar +2021-03-09 10:27:29 UTC +eRights +ERIGHTS.REQUEST_PERSONS +NO ACTION +256F6004-E1B6-FD26-9F27-95B58D979301 +95ACBC6C-63A4-FD58-73F1-72080DB6991C +95ACBC6C-63A4-FD58-73F1-72080DB6991C +true +REQUEST_PERSON_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/481C96EB-685B-A700-9F52-D6BA627E586E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/481C96EB-685B-A700-9F52-D6BA627E586E.xml new file mode 100644 index 0000000..904a17d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/481C96EB-685B-A700-9F52-D6BA627E586E.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_SRCD_COMM_DATA_ID +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_SMS_COMM_DATA +CASCADE +E06E7FD1-9973-2F17-993D-D45490D15039 +7BA262D2-5568-1F56-5150-7D35B78CB977 +7BA262D2-5568-1F56-5150-7D35B78CB977 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/4C0F032C-17B5-78E7-6624-7E732D8B8E0C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/4C0F032C-17B5-78E7-6624-7E732D8B8E0C.xml new file mode 100644 index 0000000..3acbc65 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/4C0F032C-17B5-78E7-6624-7E732D8B8E0C.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_ABAC_COMM_RESPONSES_ID +walloar +2021-04-26 13:29:43 UTC +eRights +1D1D438D-6DE7-6B8C-18F5-017A60D0E25D +ERIGHTS.ANK_ABAC_COMM +CASCADE +F0656E91-B102-E910-93C9-3FADF5583284 +654D9560-6D54-DAF1-0633-73AE4C682FA7 +654D9560-6D54-DAF1-0633-73AE4C682FA7 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/651FBD69-47CE-EEA3-5E9C-E29B4381F792.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/651FBD69-47CE-EEA3-5E9C-E29B4381F792.xml new file mode 100644 index 0000000..26b7e56 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/651FBD69-47CE-EEA3-5E9C-E29B4381F792.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_S_COMM_ERRORS_ID +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_SMS_COMM_DATA +CASCADE +E06E7FD1-9973-2F17-993D-D45490D15039 +7BA262D2-5568-1F56-5150-7D35B78CB977 +7BA262D2-5568-1F56-5150-7D35B78CB977 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/65E3B4C7-7537-F055-551C-3C579E557F76.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/65E3B4C7-7537-F055-551C-3C579E557F76.xml new file mode 100644 index 0000000..a7e5b8b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/65E3B4C7-7537-F055-551C-3C579E557F76.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNT_MAXS_TYPE_CAT +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_TYPES_CAT +NO ACTION +749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293 +5BE178D9-AF31-486C-E472-FB64DF6263EC +5BE178D9-AF31-486C-E472-FB64DF6263EC +false +ENTITLMNT_TYPE_CAT_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/69AF70F0-33C5-9633-57F0-3E65962BAF0E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/69AF70F0-33C5-9633-57F0-3E65962BAF0E.xml new file mode 100644 index 0000000..71a7c63 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/69AF70F0-33C5-9633-57F0-3E65962BAF0E.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNT_MAXS_DEFAULT_CAT +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_MAXS_CAT +NO ACTION +ADE383DF-74A4-CD6A-4E95-CEF01A091594 +6BAB2B42-6776-35C8-7739-3287138399CF +6BAB2B42-6776-35C8-7739-3287138399CF +true +ENTITLMNT_MAX_CAT_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/6CFECE4B-C48E-D706-2373-42A4EE308685.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/6CFECE4B-C48E-D706-2373-42A4EE308685.xml new file mode 100644 index 0000000..8494ba5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/6CFECE4B-C48E-D706-2373-42A4EE308685.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +FK_REQ_DET_REQ +walloar +2021-05-11 06:48:47 UTC +eRights +91193D54-DB70-D280-5CD8-314AE11057D4 +ERIGHTS.REQUESTS +NO ACTION +4CB74767-3856-9458-45EB-D45BEC46CD86 +A2A9F6E9-6FCC-E685-825C-CCA11BEAE35B +A2A9F6E9-6FCC-E685-825C-CCA11BEAE35B +false +REQUEST_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/70A6D18F-E497-07C1-58AA-0FA0CE4F96EE.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/70A6D18F-E497-07C1-58AA-0FA0CE4F96EE.xml new file mode 100644 index 0000000..77c0d0c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/70A6D18F-E497-07C1-58AA-0FA0CE4F96EE.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTLMNT_TYP_DEF_MOV_TYPE +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.MOVEMENT_TYPES +NO ACTION +6EE6B86E-12DA-10CF-8634-5C4D212E05C8 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +false +MOVEMENT_TYPE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/7B524D3F-78A9-AFEB-25E0-57EAD1493871.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/7B524D3F-78A9-AFEB-25E0-57EAD1493871.xml new file mode 100644 index 0000000..6d2d51a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/7B524D3F-78A9-AFEB-25E0-57EAD1493871.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNT_TYPES_MOV_TYPE +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.MOVEMENT_TYPES +NO ACTION +6EE6B86E-12DA-10CF-8634-5C4D212E05C8 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +false +MOVEMENT_TYPE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/827D0058-5E8E-2777-8A33-A019829277E9.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/827D0058-5E8E-2777-8A33-A019829277E9.xml new file mode 100644 index 0000000..d559db6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/827D0058-5E8E-2777-8A33-A019829277E9.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_DECL_MVMT_FILE +walloar +2021-04-26 13:29:43 UTC +eRights +176F7F0A-8244-F6EE-15C7-21B29E5A749D +ERIGHTS.MOVEMENT_FILES +NO ACTION +FF74A656-1D74-CA01-A02B-65A0579DD208 +A1F676FC-1206-95CB-7A7A-177766C00056 +A1F676FC-1206-95CB-7A7A-177766C00056 +false +MOVEMENT_FILE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/85BBF7DF-1844-C31B-EF65-4A4D7E6052A4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/85BBF7DF-1844-C31B-EF65-4A4D7E6052A4.xml new file mode 100644 index 0000000..45bbdcb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/85BBF7DF-1844-C31B-EF65-4A4D7E6052A4.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_T_CONNEC_T_AIRPOR_ORG +walloar +2023-06-15 12:36:24 UTC +eRights +B7A677A6-792F-D44B-25CE-19D7156FA3E2 +ERIGHTS.T_AIRPORT_STEMS +NO ACTION +0A7F0271-CEE8-4992-401E-A5C035922D09 +3AEF7BEF-E269-2A3B-8488-24F9AB9B6324 +3AEF7BEF-E269-2A3B-8488-24F9AB9B6324 +false +AIRPORT_STEM_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/868699F8-7FA6-F680-4C4D-8555EDE488E1.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/868699F8-7FA6-F680-4C4D-8555EDE488E1.xml new file mode 100644 index 0000000..aa2181d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/868699F8-7FA6-F680-4C4D-8555EDE488E1.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_PLACES_OF_ORIGIN_AIRPORT_AIRPORTS +walloar +2023-02-07 11:01:21 UTC +eRights +D5139BA2-33FD-9F42-9B81-CA254EEBA442 +ERIGHTS.AIRPORTS +NO ACTION +EB3AF18B-7D5F-9652-FD62-94B24BB93E8D +ABDCAE7F-DF7F-A6AF-2A5C-F569435603B4 +ABDCAE7F-DF7F-A6AF-2A5C-F569435603B4 +false +IATA_CODE +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/896B29CB-B852-917B-EDBA-51BEAA78E7AA.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/896B29CB-B852-917B-EDBA-51BEAA78E7AA.xml new file mode 100644 index 0000000..285be08 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/896B29CB-B852-917B-EDBA-51BEAA78E7AA.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_E_RCPTS_EMAIL_ID +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_EMAILS +CASCADE +F28AEFDE-0804-3C83-F214-6330BE84607B +D520E03C-5B2F-E54E-0A01-3BDA5B4EED17 +D520E03C-5B2F-E54E-0A01-3BDA5B4EED17 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/8B54FB33-B403-C2B8-F0DD-34C005CA9AD3.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/8B54FB33-B403-C2B8-F0DD-34C005CA9AD3.xml new file mode 100644 index 0000000..7f4e12d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/8B54FB33-B403-C2B8-F0DD-34C005CA9AD3.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_ERCD_COMM_DATA_ID +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_EMAIL_COMM_DATA +CASCADE +C90B6B2E-6AFE-10D3-5D64-4CD75BE58765 +D42EB837-D3E9-2D44-2A27-A1A5195B4B21 +D42EB837-D3E9-2D44-2A27-A1A5195B4B21 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/8FBE3861-9C69-61CA-6407-29C42040EFF6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/8FBE3861-9C69-61CA-6407-29C42040EFF6.xml new file mode 100644 index 0000000..7dd7907 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/8FBE3861-9C69-61CA-6407-29C42040EFF6.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTLMNT_TYP_DEF_TYPE_CAT +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_TYPES_CAT +NO ACTION +749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293 +5BE178D9-AF31-486C-E472-FB64DF6263EC +5BE178D9-AF31-486C-E472-FB64DF6263EC +false +ENTITLMNT_TYPE_CAT_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/971B31FD-4ADF-62EA-ED21-C7169CE4CC91.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/971B31FD-4ADF-62EA-ED21-C7169CE4CC91.xml new file mode 100644 index 0000000..c97a93b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/971B31FD-4ADF-62EA-ED21-C7169CE4CC91.xml @@ -0,0 +1,16 @@ + + +walloar +2021-06-03 10:45:05 UTC +eRights +ERIGHTS.PERSONS_BANK_INFO +NO ACTION +3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A +D95C544F-F9F2-8433-E694-C0E67F5957C4 +D95C544F-F9F2-8433-E694-C0E67F5957C4 +false +PERSONS_BANK_INFO_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A19608C8-3D06-ADCD-BF05-56679CC370E5.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A19608C8-3D06-ADCD-BF05-56679CC370E5.xml new file mode 100644 index 0000000..f34ee3b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A19608C8-3D06-ADCD-BF05-56679CC370E5.xml @@ -0,0 +1,16 @@ + + +walloar +2021-04-20 14:17:49 UTC +eRights +MOVEMENT_DOC_SECTIONS +NO ACTION +B792575D-ED90-C316-85A8-FB178ED60508 +67207ABB-672D-ACDB-0F62-B936853171CA +67207ABB-672D-ACDB-0F62-B936853171CA +true +MOVEMENT_DOC_SECTIONS_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A269AD9C-167B-CFE9-5538-4BD7C813138F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A269AD9C-167B-CFE9-5538-4BD7C813138F.xml new file mode 100644 index 0000000..609e65a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A269AD9C-167B-CFE9-5538-4BD7C813138F.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_BLOB_TRIG_TO_TRIG_FK +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.QRTZ_TRIGGERS +NO ACTION +D43A6B01-A010-2E62-F805-42BD75AE0D0F +D6708633-7E79-72CE-6C8B-9CA359CE34EE +D6708633-7E79-72CE-6C8B-9CA359CE34EE +true +SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A508F808-D00A-28FC-B7C5-FEA7208DE3A7.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A508F808-D00A-28FC-B7C5-FEA7208DE3A7.xml new file mode 100644 index 0000000..662640d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A508F808-D00A-28FC-B7C5-FEA7208DE3A7.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_REQUEST_SUBPOSTS_REQUESTS +walloar +2022-03-21 10:52:45 UTC +eRights +A0DD87A5-A858-311C-A680-0801EDD82E3A +ERIGHTS.REQUESTS +NO ACTION +4CB74767-3856-9458-45EB-D45BEC46CD86 +A2A9F6E9-6FCC-E685-825C-CCA11BEAE35B +A2A9F6E9-6FCC-E685-825C-CCA11BEAE35B +false +REQUEST_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A9BD1B11-7E29-A702-0D9E-574F89FAAF59.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A9BD1B11-7E29-A702-0D9E-574F89FAAF59.xml new file mode 100644 index 0000000..a58674e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A9BD1B11-7E29-A702-0D9E-574F89FAAF59.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SIMPROP_TRIG_TO_TRIG_FK +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.QRTZ_TRIGGERS +NO ACTION +D43A6B01-A010-2E62-F805-42BD75AE0D0F +D6708633-7E79-72CE-6C8B-9CA359CE34EE +D6708633-7E79-72CE-6C8B-9CA359CE34EE +true +SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A9C3D3B2-BFEE-B91D-3FC9-BEAC050F3537.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A9C3D3B2-BFEE-B91D-3FC9-BEAC050F3537.xml new file mode 100644 index 0000000..30e755b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/A9C3D3B2-BFEE-B91D-3FC9-BEAC050F3537.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNT_TYPES_TYPE_CAT +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_TYPES_CAT +NO ACTION +749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293 +5BE178D9-AF31-486C-E472-FB64DF6263EC +5BE178D9-AF31-486C-E472-FB64DF6263EC +false +ENTITLMNT_TYPE_CAT_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/ACBEBC8E-F123-B209-C6AC-D10895120157.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/ACBEBC8E-F123-B209-C6AC-D10895120157.xml new file mode 100644 index 0000000..9f5d572 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/ACBEBC8E-F123-B209-C6AC-D10895120157.xml @@ -0,0 +1,16 @@ + + +walloar +2021-03-09 10:12:07 UTC +eRights +ERIGHTS.DECLARATION +NO ACTION +CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8 +81C4972B-91D6-AE3E-0833-67784BD6B25D +81C4972B-91D6-AE3E-0833-67784BD6B25D +false +DECLARATION_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B1488D3A-646C-67F6-AE95-FBAD9B8159E2.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B1488D3A-646C-67F6-AE95-FBAD9B8159E2.xml new file mode 100644 index 0000000..4c5f881 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B1488D3A-646C-67F6-AE95-FBAD9B8159E2.xml @@ -0,0 +1,16 @@ + + +walloar +2021-04-20 14:17:11 UTC +eRights +MOVEMENT_DOCS +NO ACTION +F7550F97-470F-3E11-C6EE-445518E195D2 +26470B1B-9D2C-FDFF-361A-341B8201EBC6 +26470B1B-9D2C-FDFF-361A-341B8201EBC6 +true +MOVEMENT_DOCS_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B5009973-3A84-D977-05D4-6C0353E0A897.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B5009973-3A84-D977-05D4-6C0353E0A897.xml new file mode 100644 index 0000000..2589baa --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B5009973-3A84-D977-05D4-6C0353E0A897.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNTS_MOV_TYPE +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.MOVEMENT_TYPES +NO ACTION +6EE6B86E-12DA-10CF-8634-5C4D212E05C8 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +false +MOVEMENT_TYPE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B7A1598C-867B-22DA-C6C9-16618C6EBD66.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B7A1598C-867B-22DA-C6C9-16618C6EBD66.xml new file mode 100644 index 0000000..d05c7b0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/B7A1598C-867B-22DA-C6C9-16618C6EBD66.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNT_MAXS_CAT_TYPE_CAT +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ENTITLMNT_TYPES_CAT +NO ACTION +749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293 +5BE178D9-AF31-486C-E472-FB64DF6263EC +5BE178D9-AF31-486C-E472-FB64DF6263EC +false +ENTITLMNT_TYPE_CAT_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C1448B26-F39E-DA07-4624-C0847B58BF74.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C1448B26-F39E-DA07-4624-C0847B58BF74.xml new file mode 100644 index 0000000..011f809 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C1448B26-F39E-DA07-4624-C0847B58BF74.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_E_COMM_ERRORS_ID +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_EMAIL_COMM_DATA +CASCADE +C90B6B2E-6AFE-10D3-5D64-4CD75BE58765 +D42EB837-D3E9-2D44-2A27-A1A5195B4B21 +D42EB837-D3E9-2D44-2A27-A1A5195B4B21 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C21E740F-1E61-5522-F148-507881AB09F2.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C21E740F-1E61-5522-F148-507881AB09F2.xml new file mode 100644 index 0000000..98e351b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C21E740F-1E61-5522-F148-507881AB09F2.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_AIRPORT_AIRPORT_STEM_ID +walloar +2023-06-15 12:36:24 UTC +eRights +8AACF056-5D90-29FF-742D-C4358A6AB374 +ERIGHTS.T_AIRPORT_STEMS +NO ACTION +0A7F0271-CEE8-4992-401E-A5C035922D09 +3AEF7BEF-E269-2A3B-8488-24F9AB9B6324 +3AEF7BEF-E269-2A3B-8488-24F9AB9B6324 +false +AIRPORT_STEM_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C75D293E-2652-27C3-5657-4504202153B7.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C75D293E-2652-27C3-5657-4504202153B7.xml new file mode 100644 index 0000000..19847e0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C75D293E-2652-27C3-5657-4504202153B7.xml @@ -0,0 +1,16 @@ + + +tapiafo +2021-03-08 13:08:17 UTC +eRights +REQUESTS +NO ACTION +4CB74767-3856-9458-45EB-D45BEC46CD86 +A2A9F6E9-6FCC-E685-825C-CCA11BEAE35B +A2A9F6E9-6FCC-E685-825C-CCA11BEAE35B +true +REQUEST_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C9D728AE-B9AE-4BC6-979D-3D5086BF43E3.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C9D728AE-B9AE-4BC6-979D-3D5086BF43E3.xml new file mode 100644 index 0000000..21f9ce8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/C9D728AE-B9AE-4BC6-979D-3D5086BF43E3.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_SRCD_ID_CDATA_REF +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_SMS_RCPTS +NO ACTION +F3764DB4-0649-A94A-7497-92FDAEA69888 +3A6B6B40-0C95-F771-8368-F80AB8B70E74 +3A6B6B40-0C95-F771-8368-F80AB8B70E74 +true +ID,SMS_ID,REF_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/CD4976CC-891F-4D57-7AAD-CDB76618F4CE.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/CD4976CC-891F-4D57-7AAD-CDB76618F4CE.xml new file mode 100644 index 0000000..ce4575b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/CD4976CC-891F-4D57-7AAD-CDB76618F4CE.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_T_CONNEC_T_AIRPOR_DST +walloar +2023-06-15 12:36:24 UTC +eRights +9F43415D-7F65-C1F0-1EAD-29C25258B7E2 +ERIGHTS.T_AIRPORT_STEMS +NO ACTION +0A7F0271-CEE8-4992-401E-A5C035922D09 +3AEF7BEF-E269-2A3B-8488-24F9AB9B6324 +3AEF7BEF-E269-2A3B-8488-24F9AB9B6324 +false +AIRPORT_STEM_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/CD64B2E4-5AE7-385C-2838-A920A48C08DB.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/CD64B2E4-5AE7-385C-2838-A920A48C08DB.xml new file mode 100644 index 0000000..df9d2f6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/CD64B2E4-5AE7-385C-2838-A920A48C08DB.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_ABAC_COMM_ERRORS_ID +walloar +2021-04-26 13:29:43 UTC +eRights +601C4A1D-B1D9-8224-468C-2C7070453E9B +ERIGHTS.ANK_ABAC_COMM +CASCADE +F0656E91-B102-E910-93C9-3FADF5583284 +654D9560-6D54-DAF1-0633-73AE4C682FA7 +654D9560-6D54-DAF1-0633-73AE4C682FA7 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/D57CC0F1-DA1D-0A8C-B60A-095E138D5054.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/D57CC0F1-DA1D-0A8C-B60A-095E138D5054.xml new file mode 100644 index 0000000..eec15f2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/D57CC0F1-DA1D-0A8C-B60A-095E138D5054.xml @@ -0,0 +1,16 @@ + + +walloar +2021-04-20 14:11:33 UTC +eRights +ERIGHTS.MOVEMENT_TYPES +NO ACTION +6EE6B86E-12DA-10CF-8634-5C4D212E05C8 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +F13C3516-5FF5-E8B4-FB32-86195AA59D08 +false +MOVEMENT_TYPE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/D8E98DB8-541A-1182-7C71-1BAE3DADB667.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/D8E98DB8-541A-1182-7C71-1BAE3DADB667.xml new file mode 100644 index 0000000..3ea691c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/D8E98DB8-541A-1182-7C71-1BAE3DADB667.xml @@ -0,0 +1,16 @@ + + +walloar +2021-03-09 10:12:59 UTC +eRights +ERIGHTS.ENTITLMNT_TYPES +NO ACTION +F6108759-A9AE-8679-03BA-D124DEC368E8 +C18549F3-BA0F-CA1A-0B56-63BF98D61818 +C18549F3-BA0F-CA1A-0B56-63BF98D61818 +true +ENTITLMNT_TYPE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/DC0B6208-5DBD-BD77-C70C-852A9DC29ACD.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/DC0B6208-5DBD-BD77-C70C-852A9DC29ACD.xml new file mode 100644 index 0000000..04a41a5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/DC0B6208-5DBD-BD77-C70C-852A9DC29ACD.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_S_RCPTS_SMS_ID +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_SMS +CASCADE +D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A +6FCCE5B2-F20F-2BF4-C4D5-85627AEC40F3 +6FCCE5B2-F20F-2BF4-C4D5-85627AEC40F3 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/E4198D4D-BE5E-17D5-50E1-E8A5F189F359.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/E4198D4D-BE5E-17D5-50E1-E8A5F189F359.xml new file mode 100644 index 0000000..f41fc50 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/E4198D4D-BE5E-17D5-50E1-E8A5F189F359.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ENTITLMNT_TYPES_MOV_FILE +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.MOVEMENT_FILES +NO ACTION +FF74A656-1D74-CA01-A02B-65A0579DD208 +A1F676FC-1206-95CB-7A7A-177766C00056 +A1F676FC-1206-95CB-7A7A-177766C00056 +false +MOVEMENT_FILE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/E7E0B052-2A8F-6278-39B0-144E5B88B500.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/E7E0B052-2A8F-6278-39B0-144E5B88B500.xml new file mode 100644 index 0000000..6ddb3d9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/E7E0B052-2A8F-6278-39B0-144E5B88B500.xml @@ -0,0 +1,16 @@ + + +walloar +2021-06-03 10:44:04 UTC +eRights +ERIGHTS.PERSONS_BANK_INFO +NO ACTION +3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A +D95C544F-F9F2-8433-E694-C0E67F5957C4 +D95C544F-F9F2-8433-E694-C0E67F5957C4 +true +PERSONS_BANK_INFO_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/EA050C5C-46BB-1F47-6AE5-FB31D19BBD22.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/EA050C5C-46BB-1F47-6AE5-FB31D19BBD22.xml new file mode 100644 index 0000000..7e20890 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/EA050C5C-46BB-1F47-6AE5-FB31D19BBD22.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_REQUEST_ABAC_ITEM_REQUESTS +walloar +2022-03-21 10:52:45 UTC +eRights +8FEF4FF2-DF17-D7B0-D97A-FA8FE5E0D1A9 +ERIGHTS.REQUESTS +NO ACTION +4CB74767-3856-9458-45EB-D45BEC46CD86 +A2A9F6E9-6FCC-E685-825C-CCA11BEAE35B +A2A9F6E9-6FCC-E685-825C-CCA11BEAE35B +false +REQUEST_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/F79CF8D5-DD4D-4A58-76B7-4897AF256190.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/F79CF8D5-DD4D-4A58-76B7-4897AF256190.xml new file mode 100644 index 0000000..07d5791 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/F79CF8D5-DD4D-4A58-76B7-4897AF256190.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_DECL_PERS_DECL +walloar +2021-04-26 13:29:43 UTC +eRights +DF811892-D0F5-BFC5-A762-C60A52419359 +ERIGHTS.DECLARATION +NO ACTION +CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8 +81C4972B-91D6-AE3E-0833-67784BD6B25D +81C4972B-91D6-AE3E-0833-67784BD6B25D +false +DECLARATION_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/F8A9DBF7-1E8E-89AB-EF76-1CE86EB08712.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/F8A9DBF7-1E8E-89AB-EF76-1CE86EB08712.xml new file mode 100644 index 0000000..2fc1236 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/F8A9DBF7-1E8E-89AB-EF76-1CE86EB08712.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_EDMS_SMS_COMM_DATA_ID +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_EDMS_SMS +CASCADE +D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A +6FCCE5B2-F20F-2BF4-C4D5-85627AEC40F3 +6FCCE5B2-F20F-2BF4-C4D5-85627AEC40F3 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FA88D6D7-7049-B7E4-2A9F-316436C001C9.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FA88D6D7-7049-B7E4-2A9F-316436C001C9.xml new file mode 100644 index 0000000..c0169bf --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FA88D6D7-7049-B7E4-2A9F-316436C001C9.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_RATES_MISSING_ENTITL_MAX_CAT +walloar +2022-03-21 10:52:45 UTC +eRights +6A6D3A29-BD56-ED6D-0DBE-1BE073C94D82 +ERIGHTS.ENTITLMNT_MAXS_CAT +NO ACTION +ADE383DF-74A4-CD6A-4E95-CEF01A091594 +6BAB2B42-6776-35C8-7739-3287138399CF +6BAB2B42-6776-35C8-7739-3287138399CF +false +ENTITLMNT_MAX_CAT_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FCF0A72C-B1BD-B0CF-34F2-99F71A002C51.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FCF0A72C-B1BD-B0CF-34F2-99F71A002C51.xml new file mode 100644 index 0000000..a156344 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FCF0A72C-B1BD-B0CF-34F2-99F71A002C51.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_ABAC_COMM_REQUESTS_ID +walloar +2021-04-26 13:29:43 UTC +eRights +C6308F17-C7FA-B97C-0EA6-A0CB436427AE +ERIGHTS.ANK_ABAC_COMM +CASCADE +F0656E91-B102-E910-93C9-3FADF5583284 +654D9560-6D54-DAF1-0633-73AE4C682FA7 +654D9560-6D54-DAF1-0633-73AE4C682FA7 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FD1CC4ED-111A-33BE-8C5D-CCF4D47D0E93.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FD1CC4ED-111A-33BE-8C5D-CCF4D47D0E93.xml new file mode 100644 index 0000000..c83ba70 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FD1CC4ED-111A-33BE-8C5D-CCF4D47D0E93.xml @@ -0,0 +1,19 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_ANK_SM_PREVIOUS_CURRENT +walloar +2021-03-02 08:04:59 UTC +eRights +ERIGHTS.ANK_SM_CURRENT_STATES +NO ACTION +0446BDB6-26D9-B764-C2A6-8BF8EE0C1200 +0B7C740E-1FA8-EB2B-7586-7715948C9049 +0B7C740E-1FA8-EB2B-7586-7715948C9049 +true +ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FF161A56-02CC-75AA-E688-583EA56F0FCD.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FF161A56-02CC-75AA-E688-583EA56F0FCD.xml new file mode 100644 index 0000000..25b32d4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/foreignkey/seg_0/FF161A56-02CC-75AA-E688-583EA56F0FCD.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +FK_POSTING_ALLOWANCE_PERSONS_POSTING_ALLOWANCES +walloar +2022-10-25 12:45:50 UTC +eRights +1980F976-75D9-2F15-9806-C2F5543C5504 +ERIGHTS.POSTING_ALLOWANCES +NO ACTION +27744AC2-14D9-8DD9-513A-8FBB9C86242C +1F86EA8C-78A5-3420-067E-33A3F23179BD +1F86EA8C-78A5-3420-067E-33A3F23179BD +true +POSTING_ALLOWANCE_ID +true +false +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/32076570-BF29817DFF70.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/32076570-BF29817DFF70.xml new file mode 100644 index 0000000..54f38f7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/32076570-BF29817DFF70.xml @@ -0,0 +1,6 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/SType/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/SType/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml new file mode 100644 index 0000000..596c6bf --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/SType/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +MDSYS + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/09433069-3EA6-B647-CF6D-C0D14EC6A214.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/09433069-3EA6-B647-CF6D-C0D14EC6A214.xml new file mode 100644 index 0000000..5fff021 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/09433069-3EA6-B647-CF6D-C0D14EC6A214.xml @@ -0,0 +1,7 @@ + + +walloar +2021-05-11 06:47:37 UTC +eRights +255 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/18757E56-C056-0AE6-1392-92150DE0E6BC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/18757E56-C056-0AE6-1392-92150DE0E6BC.xml new file mode 100644 index 0000000..fd47423 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/18757E56-C056-0AE6-1392-92150DE0E6BC.xml @@ -0,0 +1,10 @@ + + +tapiafo +2021-03-08 13:12:31 UTC +eRights +255 +65536 +2147483645 +1048576 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/3D782A3F-69D4-FC49-B490-6B6381357594.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/3D782A3F-69D4-FC49-B490-6B6381357594.xml new file mode 100644 index 0000000..f320ea6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/3D782A3F-69D4-FC49-B490-6B6381357594.xml @@ -0,0 +1,11 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +2 +255 +65536 +2147483645 +1048576 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/64F40F6A-538E-C710-E815-520CD4A5FFC2.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/64F40F6A-538E-C710-E815-520CD4A5FFC2.xml new file mode 100644 index 0000000..c5f75a9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/64F40F6A-538E-C710-E815-520CD4A5FFC2.xml @@ -0,0 +1,10 @@ + + +walloar +2021-05-11 06:48:47 UTC +eRights +2 +65536 +2147483645 +1048576 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/73222CC3-5FA6-3007-1F2D-BC1BF21A2173.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/73222CC3-5FA6-3007-1F2D-BC1BF21A2173.xml new file mode 100644 index 0000000..38364e6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/73222CC3-5FA6-3007-1F2D-BC1BF21A2173.xml @@ -0,0 +1,9 @@ + + +walloar +2021-05-11 06:48:47 UTC +eRights +65536 +2147483645 +1048576 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/CBD57B40-3615-DAFC-1E13-BC8848809B70.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/CBD57B40-3615-DAFC-1E13-BC8848809B70.xml new file mode 100644 index 0000000..5720c66 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Segment/seg_0/CBD57B40-3615-DAFC-1E13-BC8848809B70.xml @@ -0,0 +1,8 @@ + + +walloar +2021-05-11 06:47:37 UTC +eRights +2 +255 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/0AE8E5B4-B387-AC92-B99E-8E5BEB5785DE.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/0AE8E5B4-B387-AC92-B99E-8E5BEB5785DE.xml new file mode 100644 index 0000000..a990969 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/0AE8E5B4-B387-AC92-B99E-8E5BEB5785DE.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +SEQ_REQUEST_DETAIL_ATTACHMENTS +walloar +2021-05-11 06:47:36 UTC +eRights +1 +99999999999999999999 +1 +YES +6DD5544E-4917-2D59-AF34-360963064305 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/3D843437-4E5B-6E8A-75D8-E76BB54D9C68.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/3D843437-4E5B-6E8A-75D8-E76BB54D9C68.xml new file mode 100644 index 0000000..a113c59 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/3D843437-4E5B-6E8A-75D8-E76BB54D9C68.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +SEQ_REQUEST_DETAILS +walloar +2021-05-11 06:47:36 UTC +eRights +1 +99999999999999999999 +1 +YES +6DD5544E-4917-2D59-AF34-360963064305 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/ECC5D303-B478-6E33-53C0-3A28515A598E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/ECC5D303-B478-6E33-53C0-3A28515A598E.xml new file mode 100644 index 0000000..472dc88 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Sequence/seg_0/ECC5D303-B478-6E33-53C0-3A28515A598E.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +SEQ_APP_PARAMETERS +walloar +2021-05-11 06:47:36 UTC +eRights +1 +99999999999999999999 +1 +YES +6DD5544E-4917-2D59-AF34-360963064305 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/116C1E2F-976D-45C7-EA0A-FC3C64698017.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/116C1E2F-976D-45C7-EA0A-FC3C64698017.xml new file mode 100644 index 0000000..a0f53e6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/116C1E2F-976D-45C7-EA0A-FC3C64698017.xml @@ -0,0 +1,19 @@ + + +walloar +2021-05-11 06:47:39 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +NO +FORCE + +false +false + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/86836C8D-49EB-CA1D-4D9C-4BDE5D11630B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/86836C8D-49EB-CA1D-4D9C-4BDE5D11630B.xml new file mode 100644 index 0000000..60beb3e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/86836C8D-49EB-CA1D-4D9C-4BDE5D11630B.xml @@ -0,0 +1,46 @@ + + +walloar +2021-03-11 10:08:49 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +NO +FORCE + +false +false + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/95B9333F-7BBF-40E1-A110-F7B0A5C3BC52.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/95B9333F-7BBF-40E1-A110-F7B0A5C3BC52.xml new file mode 100644 index 0000000..b17d550 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/95B9333F-7BBF-40E1-A110-F7B0A5C3BC52.xml @@ -0,0 +1,52 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +MV_PERSON_RELATIVES_RIGHTS +walloar +2021-03-17 08:11:48 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +ON DEMAND +NO +YES +FORCE + +false +false +548B4954-2457-27CF-BDB1-4E8566FB80F6 +YES + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/B49AD319-6732-5356-793C-A922B19B5DF4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/B49AD319-6732-5356-793C-A922B19B5DF4.xml new file mode 100644 index 0000000..801ea49 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/B49AD319-6732-5356-793C-A922B19B5DF4.xml @@ -0,0 +1,11 @@ + + +walloar +2021-03-17 08:16:31 UTC +eRights +NO +FORCE +false +false + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/DAA77C03-6796-DC39-569E-A2E8E29EBD5E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/DAA77C03-6796-DC39-569E-A2E8E29EBD5E.xml new file mode 100644 index 0000000..4103305 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Snapshot/seg_0/DAA77C03-6796-DC39-569E-A2E8E29EBD5E.xml @@ -0,0 +1,28 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +MV_RATE_EXCHANGE +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +ON DEMAND +NO +YES +FORCE + +false +false +548B4954-2457-27CF-BDB1-4E8566FB80F6 +YES + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/TSpace/seg_0/548B4954-2457-27CF-BDB1-4E8566FB80F6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/TSpace/seg_0/548B4954-2457-27CF-BDB1-4E8566FB80F6.xml new file mode 100644 index 0000000..c319e19 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/TSpace/seg_0/548B4954-2457-27CF-BDB1-4E8566FB80F6.xml @@ -0,0 +1,11 @@ + + +erights+dev+java +E_RIGHTS +ERIGHTS_DATA +tapiafo +2021-03-08 13:12:31 UTC +eRights +0 +LOCAL + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml new file mode 100644 index 0000000..ef2c538 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml @@ -0,0 +1,71 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +sysdate + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/19B5777E-F422-5B95-B997-179834446A02.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/19B5777E-F422-5B95-B997-179834446A02.xml new file mode 100644 index 0000000..b6e3a11 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/19B5777E-F422-5B95-B997-179834446A02.xml @@ -0,0 +1,70 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml new file mode 100644 index 0000000..9807d94 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml @@ -0,0 +1,72 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml new file mode 100644 index 0000000..3992c5d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml @@ -0,0 +1,50 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/21442F1D-A788-0766-1383-1143D116D4BC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/21442F1D-A788-0766-1383-1143D116D4BC.xml new file mode 100644 index 0000000..b8f2539 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/21442F1D-A788-0766-1383-1143D116D4BC.xml @@ -0,0 +1,92 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/256F6004-E1B6-FD26-9F27-95B58D979301.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/256F6004-E1B6-FD26-9F27-95B58D979301.xml new file mode 100644 index 0000000..43904ac --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/256F6004-E1B6-FD26-9F27-95B58D979301.xml @@ -0,0 +1,86 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 14:48:42 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml new file mode 100644 index 0000000..cbce34f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml @@ -0,0 +1,85 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml new file mode 100644 index 0000000..3f764dd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml @@ -0,0 +1,51 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SYSDATE + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml new file mode 100644 index 0000000..f7dcde9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml @@ -0,0 +1,315 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml new file mode 100644 index 0000000..3c0d72f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml @@ -0,0 +1,100 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml new file mode 100644 index 0000000..b4afc77 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml @@ -0,0 +1,57 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml new file mode 100644 index 0000000..6d56865 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml @@ -0,0 +1,40 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml new file mode 100644 index 0000000..bd36844 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml @@ -0,0 +1,30 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml new file mode 100644 index 0000000..bc4ff5b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml @@ -0,0 +1,69 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml new file mode 100644 index 0000000..7feab39 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml @@ -0,0 +1,82 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml new file mode 100644 index 0000000..fb72962 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml @@ -0,0 +1,55 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4CB74767-3856-9458-45EB-D45BEC46CD86.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4CB74767-3856-9458-45EB-D45BEC46CD86.xml new file mode 100644 index 0000000..071c4ea --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4CB74767-3856-9458-45EB-D45BEC46CD86.xml @@ -0,0 +1,293 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +73222CC3-5FA6-3007-1F2D-BC1BF21A2173 +548B4954-2457-27CF-BDB1-4E8566FB80F6 +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights +sysdate + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +walloar +2021-05-11 06:45:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +64F40F6A-538E-C710-E815-520CD4A5FFC2 +548B4954-2457-27CF-BDB1-4E8566FB80F6 + + + + +walloar +2021-03-09 10:12:07 UTC +eRights + + +walloar +2021-03-09 10:12:59 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +64F40F6A-538E-C710-E815-520CD4A5FFC2 +548B4954-2457-27CF-BDB1-4E8566FB80F6 +97E48458-0B06-3C9B-6363-0888C075BC1A +64F40F6A-538E-C710-E815-520CD4A5FFC2 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml new file mode 100644 index 0000000..e4988b6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml @@ -0,0 +1,29 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml new file mode 100644 index 0000000..ea01fb7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml @@ -0,0 +1,62 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml new file mode 100644 index 0000000..bdc419f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml @@ -0,0 +1,150 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml new file mode 100644 index 0000000..80aa837 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml @@ -0,0 +1,55 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml new file mode 100644 index 0000000..8339d8e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml @@ -0,0 +1,62 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml new file mode 100644 index 0000000..3ef30c6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml @@ -0,0 +1,258 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml new file mode 100644 index 0000000..fa82e5e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml @@ -0,0 +1,70 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml new file mode 100644 index 0000000..32b7d90 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml @@ -0,0 +1,40 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml new file mode 100644 index 0000000..eddb37f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml @@ -0,0 +1,62 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml new file mode 100644 index 0000000..e6af6ac --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml @@ -0,0 +1,115 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml new file mode 100644 index 0000000..015ffea --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml @@ -0,0 +1,97 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml new file mode 100644 index 0000000..d7ee4d5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml @@ -0,0 +1,135 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml new file mode 100644 index 0000000..1d24ab3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml @@ -0,0 +1,70 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml new file mode 100644 index 0000000..9dcc61e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml @@ -0,0 +1,293 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml new file mode 100644 index 0000000..1cff91b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml @@ -0,0 +1,245 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml new file mode 100644 index 0000000..197a04e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml @@ -0,0 +1,55 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml new file mode 100644 index 0000000..3605076 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml @@ -0,0 +1,57 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml new file mode 100644 index 0000000..6c4aaa3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml @@ -0,0 +1,50 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml new file mode 100644 index 0000000..03eeafe --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml @@ -0,0 +1,285 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml new file mode 100644 index 0000000..7d1e006 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml @@ -0,0 +1,92 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml new file mode 100644 index 0000000..c8f26dc --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml @@ -0,0 +1,55 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml new file mode 100644 index 0000000..245f312 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml @@ -0,0 +1,223 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml new file mode 100644 index 0000000..15b989f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml @@ -0,0 +1,98 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:29:01 UTC +eRights + + + + +tapiafo +2021-03-08 13:24:03 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml new file mode 100644 index 0000000..5d5e58f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml @@ -0,0 +1,113 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml new file mode 100644 index 0000000..22e18ee --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml @@ -0,0 +1,132 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml new file mode 100644 index 0000000..c73ac5e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml @@ -0,0 +1,129 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml new file mode 100644 index 0000000..7d67b8d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml @@ -0,0 +1,83 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml new file mode 100644 index 0000000..d52bcd3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml @@ -0,0 +1,70 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml new file mode 100644 index 0000000..ac839ba --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml @@ -0,0 +1,75 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml new file mode 100644 index 0000000..566ffad --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml @@ -0,0 +1,155 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml new file mode 100644 index 0000000..ae45a31 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml @@ -0,0 +1,129 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml new file mode 100644 index 0000000..1146eac --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml @@ -0,0 +1,131 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml new file mode 100644 index 0000000..5c7219a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml @@ -0,0 +1,45 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml new file mode 100644 index 0000000..a2c7259 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml @@ -0,0 +1,75 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml new file mode 100644 index 0000000..f7b1ad9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml @@ -0,0 +1,77 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml new file mode 100644 index 0000000..ef95c88 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml @@ -0,0 +1,56 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SYSDATE + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml new file mode 100644 index 0000000..50e3241 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml @@ -0,0 +1,81 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml new file mode 100644 index 0000000..805400f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml @@ -0,0 +1,57 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml new file mode 100644 index 0000000..c9302a2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml @@ -0,0 +1,55 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml new file mode 100644 index 0000000..7330af1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml @@ -0,0 +1,60 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml new file mode 100644 index 0000000..292dc23 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml @@ -0,0 +1,73 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml new file mode 100644 index 0000000..746dc70 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml @@ -0,0 +1,45 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml new file mode 100644 index 0000000..af83159 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml @@ -0,0 +1,80 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml new file mode 100644 index 0000000..cd6a9ff --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml @@ -0,0 +1,150 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml new file mode 100644 index 0000000..077f26c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml @@ -0,0 +1,70 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml new file mode 100644 index 0000000..f4e550b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml @@ -0,0 +1,189 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml new file mode 100644 index 0000000..235e100 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml @@ -0,0 +1,87 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml new file mode 100644 index 0000000..7b9b1ce --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml @@ -0,0 +1,94 @@ + + +tapiafo +2021-03-08 13:12:31 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +18757E56-C056-0AE6-1392-92150DE0E6BC +548B4954-2457-27CF-BDB1-4E8566FB80F6 +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +3D782A3F-69D4-FC49-B490-6B6381357594 +548B4954-2457-27CF-BDB1-4E8566FB80F6 + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +3D782A3F-69D4-FC49-B490-6B6381357594 +548B4954-2457-27CF-BDB1-4E8566FB80F6 + + + + +tapiafo +2021-03-08 13:24:14 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +3D782A3F-69D4-FC49-B490-6B6381357594 +548B4954-2457-27CF-BDB1-4E8566FB80F6 +3503D1AF-BFBC-40DF-B31A-5A5ECA9B4674 +3D782A3F-69D4-FC49-B490-6B6381357594 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml new file mode 100644 index 0000000..c21f28d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml @@ -0,0 +1,73 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/01197962-C671-CBDB-2A12-9A0182777C73.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/01197962-C671-CBDB-2A12-9A0182777C73.xml new file mode 100644 index 0000000..fb7c104 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/01197962-C671-CBDB-2A12-9A0182777C73.xml @@ -0,0 +1,179 @@ + + +walloar +2021-03-11 10:08:49 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +86836C8D-49EB-CA1D-4D9C-4BDE5D11630B +false +oracle_loader + + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + + + +walloar +2021-03-11 10:08:49 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml new file mode 100644 index 0000000..4e79e41 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml @@ -0,0 +1,44 @@ + + +walloar +2021-05-11 06:45:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +116C1E2F-976D-45C7-EA0A-FC3C64698017 +false +oracle_loader + + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + +walloar +2021-05-11 06:45:30 UTC +eRights + + + + +walloar +2021-05-11 06:45:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml new file mode 100644 index 0000000..3a51ede --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml @@ -0,0 +1,146 @@ + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +YES +DISABLE +09433069-3EA6-B647-CF6D-C0D14EC6A214 +548B4954-2457-27CF-BDB1-4E8566FB80F6 +false +oracle_loader + + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +CBD57B40-3615-DAFC-1E13-BC8848809B70 +548B4954-2457-27CF-BDB1-4E8566FB80F6 + + + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +CBD57B40-3615-DAFC-1E13-BC8848809B70 +548B4954-2457-27CF-BDB1-4E8566FB80F6 +E08C3509-8EEB-FBA4-EB88-03F75E7D3726 +CBD57B40-3615-DAFC-1E13-BC8848809B70 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml new file mode 100644 index 0000000..38af64e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml @@ -0,0 +1,83 @@ + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A + + + + +walloar +2021-03-09 10:27:29 UTC +eRights + + + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/EA9E31FF-E810-F570-9354-8B2CA9473801.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/EA9E31FF-E810-F570-9354-8B2CA9473801.xml new file mode 100644 index 0000000..84973b3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/EA9E31FF-E810-F570-9354-8B2CA9473801.xml @@ -0,0 +1,46 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml new file mode 100644 index 0000000..9032725 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml @@ -0,0 +1,60 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F28AEFDE-0804-3C83-F214-6330BE84607B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F28AEFDE-0804-3C83-F214-6330BE84607B.xml new file mode 100644 index 0000000..921ce6c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F28AEFDE-0804-3C83-F214-6330BE84607B.xml @@ -0,0 +1,90 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F3764DB4-0649-A94A-7497-92FDAEA69888.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F3764DB4-0649-A94A-7497-92FDAEA69888.xml new file mode 100644 index 0000000..524390f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F3764DB4-0649-A94A-7497-92FDAEA69888.xml @@ -0,0 +1,71 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F6108759-A9AE-8679-03BA-D124DEC368E8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F6108759-A9AE-8679-03BA-D124DEC368E8.xml new file mode 100644 index 0000000..c947cd9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/F6108759-A9AE-8679-03BA-D124DEC368E8.xml @@ -0,0 +1,88 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'Y' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml new file mode 100644 index 0000000..07cd347 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml @@ -0,0 +1,108 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +'Y' + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/FF74A656-1D74-CA01-A02B-65A0579DD208.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/FF74A656-1D74-CA01-A02B-65A0579DD208.xml new file mode 100644 index 0000000..ee46ac2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/Table/seg_1/FF74A656-1D74-CA01-A02B-65A0579DD208.xml @@ -0,0 +1,271 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +false +oracle_loader + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +SORTED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/6DD5544E-4917-2D59-AF34-360963064305.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/6DD5544E-4917-2D59-AF34-360963064305.xml new file mode 100644 index 0000000..52932f7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/6DD5544E-4917-2D59-AF34-360963064305.xml @@ -0,0 +1,17 @@ + + +erights+dev+java +E_RIGHTS +tapiafo +2021-03-08 13:12:30 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +CREATE SYNONYM, CREATE VIEW, CREATE ANY PROCEDURE, CREATE ANY CONTEXT, UNLIMITED TABLESPACE, CREATE JOB, CREATE DATABASE LINK, CREATE MATERIALIZED VIEW + + +tapiafo +2021-03-08 13:12:30 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/MDSYS.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/MDSYS.xml new file mode 100644 index 0000000..94db6d7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/MDSYS.xml @@ -0,0 +1,8 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +true +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/PUBLIC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/PUBLIC.xml new file mode 100644 index 0000000..c122e43 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/User/seg_0/PUBLIC.xml @@ -0,0 +1,8 @@ + + +tapiafo +2021-03-08 13:12:30 UTC +eRights +true +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml new file mode 100644 index 0000000..00eb858 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml new file mode 100644 index 0000000..f67fcb2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml new file mode 100644 index 0000000..46ffe33 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml new file mode 100644 index 0000000..0da60bc --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml new file mode 100644 index 0000000..8ba7472 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml new file mode 100644 index 0000000..404f378 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml new file mode 100644 index 0000000..c06a23c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml new file mode 100644 index 0000000..bc67659 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml new file mode 100644 index 0000000..1db4159 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml new file mode 100644 index 0000000..b614d61 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/32076570-BF29817DFF70/View/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml @@ -0,0 +1,7 @@ + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/79C73AAF-025EE81A2AFC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/79C73AAF-025EE81A2AFC.xml new file mode 100644 index 0000000..114cf83 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/79C73AAF-025EE81A2AFC.xml @@ -0,0 +1,6 @@ + + +walloar +2021-03-02 08:04:42 UTC +eRights + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Directory/seg_0/B18008E9-084E-53C5-4176-00240C82CEF8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Directory/seg_0/B18008E9-084E-53C5-4176-00240C82CEF8.xml new file mode 100644 index 0000000..a4ef519 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Directory/seg_0/B18008E9-084E-53C5-4176-00240C82CEF8.xml @@ -0,0 +1,9 @@ + + +ERIGHTS-TEST +DBIN_EEASDTPD +walloar +2021-03-02 08:04:43 UTC +eRights +/ec/dev/server/oracle/eea-dev-user-files/eeasdtpd/dbin + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Directory/seg_0/F58AF215-AAF2-8A56-2DDF-AF311B84EFCB.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Directory/seg_0/F58AF215-AAF2-8A56-2DDF-AF311B84EFCB.xml new file mode 100644 index 0000000..2ed61df --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Directory/seg_0/F58AF215-AAF2-8A56-2DDF-AF311B84EFCB.xml @@ -0,0 +1,9 @@ + + +ERIGHTS-TEST +DBOUT_EEASDTPD +walloar +2021-03-02 08:04:43 UTC +eRights +/ec/dev/server/oracle/eea-dev-user-files/eeasdtpd/dbout + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Package/seg_0/FE5C7103-B345-81C8-24D4-7C5B5E377BB0.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Package/seg_0/FE5C7103-B345-81C8-24D4-7C5B5E377BB0.xml new file mode 100644 index 0000000..86f08de --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Package/seg_0/FE5C7103-B345-81C8-24D4-7C5B5E377BB0.xml @@ -0,0 +1,179 @@ + + +ERIGHTS-TEST +ERIGHTS +PKG_LOG +walloar +2021-03-02 08:05:04 UTC +eRights + +CREATE OR REPLACE PACKAGE ERIGHTS.PKG_LOG IS + + -- Author : ILIESSU + -- Created : 10/5/2010 2:25:28 PM + -- Purpose : logging + -- todo : add oracle session log-priority attribute (I,D,E,F). + -- updated: 19/08/2020 ipatelav add shrink method to release the empty space + /** + * saves p_message debug message. + **/ + PROCEDURE DEBUG(P_MESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2); + + /** + * saves p_message error message. + **/ + PROCEDURE ERROR(P_ERRORMESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2); + + /** + * saves p_message WARNING message. + **/ + PROCEDURE WARNING(P_ERRORMESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2); + + /** + * deletes log messages older than given date. + * only deletes the debug messages. + * if null date is passed it deletes for 90 days. + **/ + PROCEDURE DELETE_OLD_DEBUG_LOGS(P_DATE DATE); + + --PROCEDURE DELETE_OLD_SYNC_LOG; + + /** + * Skirinks tables - release the space. + **/ + PROCEDURE SHRINK_TABLE(p_table_name VARCHAR2); + +END PKG_LOG; + +ERIGHTS-TEST +ERIGHTS +PKG_LOG +walloar +2021-03-02 08:05:04 UTC +eRights + +CREATE OR REPLACE PACKAGE BODY ERIGHTS.PKG_LOG IS + + L_DEBUGENABLED BOOLEAN := TRUE; + + /** + * saves p_message debug message. + **/ + PROCEDURE DEBUG(P_MESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2) AS + PRAGMA AUTONOMOUS_TRANSACTION; + BEGIN + IF (L_DEBUGENABLED) THEN + INSERT INTO DB_LOG + (ID, PRIORITY, PROGRAM, MESSAGE, MOMENTUM) + VALUES + (SEQ_DB_LOG.NEXTVAL, 'D', P_PROGRAMNAME, P_MESSAGE, SYSDATE); + COMMIT; + END IF; + END; + + /** + * saves p_message error message. + **/ + PROCEDURE ERROR(P_ERRORMESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2) AS + PRAGMA AUTONOMOUS_TRANSACTION; + BEGIN + IF (L_DEBUGENABLED) THEN + INSERT INTO DB_LOG + (ID, PRIORITY, PROGRAM, MESSAGE, MOMENTUM) + VALUES + (SEQ_DB_LOG.NEXTVAL, 'E', P_PROGRAMNAME, P_ERRORMESSAGE, SYSDATE); + COMMIT; + END IF; + END; + + /** + * saves p_message error message. + **/ + PROCEDURE WARNING(P_ERRORMESSAGE VARCHAR2, P_PROGRAMNAME VARCHAR2) AS + PRAGMA AUTONOMOUS_TRANSACTION; + BEGIN + IF (L_DEBUGENABLED) THEN + INSERT INTO DB_LOG + (ID, PRIORITY, PROGRAM, MESSAGE, MOMENTUM) + VALUES + (SEQ_DB_LOG.NEXTVAL, 'W', P_PROGRAMNAME, P_ERRORMESSAGE, SYSDATE); + COMMIT; + END IF; + END; + + PROCEDURE DELETE_OLD_DEBUG_LOGS(P_DATE DATE) AS + V_DATE DATE; + V_SYSDATE DATE; + N_DAYS PLS_INTEGER := 90; + BEGIN + SELECT TRUNC(SYSDATE) INTO V_SYSDATE FROM DUAL; + IF (P_DATE IS NULL) THEN + SELECT (TRUNC(SYSDATE) - N_DAYS) INTO V_DATE FROM DUAL; + ELSE + SELECT TRUNC(P_DATE) INTO V_DATE FROM DUAL; + END IF; + + DELETE FROM DB_LOG D WHERE TRUNC(D.MOMENTUM) <= V_DATE AND D.PRIORITY = 'D'; + + PKG_LOG.DEBUG(SQL%ROWCOUNT || + ' records were deleted from db_log. momentum less then ' || + V_DATE, + 'DELETE_LOGS'); + COMMIT; + + SHRINK_TABLE('DB_LOG'); + + END; +/* +procedure DELETE_OLD_SYNC_LOG as + begin + + for rec in (select max(creation_date) max_creation_date ,loc_obj_foreign_id,SYNC_STATUS + from SYNC_TRANSACTION_LOG + group by loc_obj_foreign_id,SYNC_STATUS) loop + + delete from SYNC_TRANSACTION_LOG + where creation_date < rec.max_creation_date + and loc_obj_foreign_id = rec.loc_obj_foreign_id + and SYNC_STATUS = rec.SYNC_STATUS; + + end loop; + + commit; + + end; + */ + /** + * release space after deleting rows table's rows + **/ + PROCEDURE SHRINK_TABLE(p_table_name VARCHAR2) + IS + l_start_time NUMBER; + l_end_time NUMBER; + BEGIN + PKG_LOG.DEBUG('start shrinking ' || p_table_name + , + 'PKG_LOG.SHRINK_TABLE'); + + l_start_time := DBMS_UTILITY.get_time; + + EXECUTE IMMEDIATE 'alter table ' || p_table_name || ' enable row movement' ; + EXECUTE IMMEDIATE 'alter table ' || p_table_name || ' shrink space cascade' ; + + l_end_time := DBMS_UTILITY.get_time; + + PKG_LOG.DEBUG( 'end shrinking ' || p_table_name || + ' Elapsed Time (hsecs): ' || (l_end_time - l_start_time) + , + 'PKG_LOG.SHRINK_TABLE'); + EXCEPTION + WHEN OTHERS THEN + PKG_LOG.ERROR('failed to shrink: ' ||p_table_name || ' ' || SQLERRM, + 'PKG_LOG.SHRINK_TABLE'); + + END; +BEGIN + L_DEBUGENABLED := TRUE; +END PKG_LOG; + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Role/seg_0/8E510250-0CC1-36C8-1D28-01D7B0804B2C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Role/seg_0/8E510250-0CC1-36C8-1D28-01D7B0804B2C.xml new file mode 100644 index 0000000..3f07599 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Role/seg_0/8E510250-0CC1-36C8-1D28-01D7B0804B2C.xml @@ -0,0 +1,24 @@ + + +ERIGHTS-TEST +ERIGHTS +walloar +2021-03-02 08:05:05 UTC +eRights + + +walloar +2021-03-02 08:05:05 UTC +eRights +READ, WRITE +B18008E9-084E-53C5-4176-00240C82CEF8 + + +walloar +2021-03-02 08:05:05 UTC +eRights +READ, WRITE +F58AF215-AAF2-8A56-2DDF-AF311B84EFCB + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/SType/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/SType/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml new file mode 100644 index 0000000..b256624 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/SType/seg_0/47E390DE-0671-C4B1-8428-0F45CBEE18F8.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:42 UTC +eRights +MDSYS + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/SType/seg_0/F72C39E0-D1CA-8821-2AD7-A1E95A37D3D1.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/SType/seg_0/F72C39E0-D1CA-8821-2AD7-A1E95A37D3D1.xml new file mode 100644 index 0000000..8f8f800 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/SType/seg_0/F72C39E0-D1CA-8821-2AD7-A1E95A37D3D1.xml @@ -0,0 +1,6 @@ + + +walloar +2021-03-02 08:04:42 UTC +eRights + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/002E8510-7075-EE24-0F2C-35ED80E2E3AC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/002E8510-7075-EE24-0F2C-35ED80E2E3AC.xml new file mode 100644 index 0000000..e4d2a74 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/002E8510-7075-EE24-0F2C-35ED80E2E3AC.xml @@ -0,0 +1,10 @@ + + +walloar +2021-06-09 07:13:25 UTC +eRights +2 +65536 +2147483645 +1048576 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/4B526395-31D4-E40B-8788-FF7D69FFECF3.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/4B526395-31D4-E40B-8788-FF7D69FFECF3.xml new file mode 100644 index 0000000..2c51e2e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/4B526395-31D4-E40B-8788-FF7D69FFECF3.xml @@ -0,0 +1,11 @@ + + +walloar +2021-03-02 08:04:48 UTC +eRights +2 +255 +65536 +2147483645 +1048576 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/4FD03845-42F8-248F-A9EB-E821AA5CB933.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/4FD03845-42F8-248F-A9EB-E821AA5CB933.xml new file mode 100644 index 0000000..15be638 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/4FD03845-42F8-248F-A9EB-E821AA5CB933.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +255 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/E4BFAFBC-A693-3751-298F-2DF9E4E67EDD.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/E4BFAFBC-A693-3751-298F-2DF9E4E67EDD.xml new file mode 100644 index 0000000..69a3334 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/E4BFAFBC-A693-3751-298F-2DF9E4E67EDD.xml @@ -0,0 +1,8 @@ + + +walloar +2021-03-02 08:04:48 UTC +eRights +2 +255 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0.xml new file mode 100644 index 0000000..801f7c3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0.xml @@ -0,0 +1,9 @@ + + +walloar +2021-06-09 07:13:25 UTC +eRights +65536 +2147483645 +1048576 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/F9B19514-BA38-E940-C849-7549649319DD.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/F9B19514-BA38-E940-C849-7549649319DD.xml new file mode 100644 index 0000000..9c9ffce --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/F9B19514-BA38-E940-C849-7549649319DD.xml @@ -0,0 +1,10 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +255 +65536 +2147483645 +1048576 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/FBC9B293-4859-520B-788A-BB538E8BB1C7.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/FBC9B293-4859-520B-788A-BB538E8BB1C7.xml new file mode 100644 index 0000000..1b4cbfb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Segment/seg_0/FBC9B293-4859-520B-788A-BB538E8BB1C7.xml @@ -0,0 +1,11 @@ + + +walloar +2023-06-15 12:32:19 UTC +eRights +2 +166 +65536 +2147483645 +1048576 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/00374E52-80B8-56CB-E7B4-18860F5894BC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/00374E52-80B8-56CB-E7B4-18860F5894BC.xml new file mode 100644 index 0000000..408cac8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/00374E52-80B8-56CB-E7B4-18860F5894BC.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_DECL_PERS_ATTACHMENTS +walloar +2021-03-09 10:38:05 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/064BDE27-A472-26D9-659E-604CCE1E7085.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/064BDE27-A472-26D9-659E-604CCE1E7085.xml new file mode 100644 index 0000000..06f1409 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/064BDE27-A472-26D9-659E-604CCE1E7085.xml @@ -0,0 +1,15 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_NOTIFICATIONS +walloar +2021-03-02 08:04:44 UTC +eRights +20 +1 +9999999999999999999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/07B3B077-1071-937C-B00F-33D57D5922DB.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/07B3B077-1071-937C-B00F-33D57D5922DB.xml new file mode 100644 index 0000000..7bf825c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/07B3B077-1071-937C-B00F-33D57D5922DB.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_REQUESTS +walloar +2022-03-21 11:02:42 UTC +eRights +1 +99999999999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/10E6CE01-C34F-E814-5572-825D6B2380AF.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/10E6CE01-C34F-E814-5572-825D6B2380AF.xml new file mode 100644 index 0000000..e26707f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/10E6CE01-C34F-E814-5572-825D6B2380AF.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_REQUEST_ABAC_ENTITY +walloar +2022-03-21 11:02:42 UTC +eRights +20 +1 +9999999999999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/166D4187-32DB-8AB6-DC5C-7CDD823F65A3.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/166D4187-32DB-8AB6-DC5C-7CDD823F65A3.xml new file mode 100644 index 0000000..e161b15 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/166D4187-32DB-8AB6-DC5C-7CDD823F65A3.xml @@ -0,0 +1,15 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_NOTIFICATION_TEMPLATES +walloar +2021-03-02 08:04:44 UTC +eRights +20 +1 +9999999999999999999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/17495D45-BCF1-616C-0A17-944EA8037BFC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/17495D45-BCF1-616C-0A17-944EA8037BFC.xml new file mode 100644 index 0000000..635267a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/17495D45-BCF1-616C-0A17-944EA8037BFC.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_RATES_TUD +walloar +2022-09-01 10:08:25 UTC +eRights +20 +1 +9999999999999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/1D266C83-7996-2133-71F8-CDCCC935ACAB.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/1D266C83-7996-2133-71F8-CDCCC935ACAB.xml new file mode 100644 index 0000000..c37c5a5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/1D266C83-7996-2133-71F8-CDCCC935ACAB.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ANNUAL_ALLOWANCE_PERSONS +walloar +2022-10-07 11:40:41 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/229D7E0D-C9ED-DBE6-C42D-625310E8933E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/229D7E0D-C9ED-DBE6-C42D-625310E8933E.xml new file mode 100644 index 0000000..e5130f9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/229D7E0D-C9ED-DBE6-C42D-625310E8933E.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_REQUEST_DETAIL_ATTACHMENTS +walloar +2022-03-21 11:02:42 UTC +eRights +1 +99999999999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/240AFEC3-4B28-3609-C882-23D9BBE77F91.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/240AFEC3-4B28-3609-C882-23D9BBE77F91.xml new file mode 100644 index 0000000..2e1dc46 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/240AFEC3-4B28-3609-C882-23D9BBE77F91.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_REQUEST_PERSON_ATTACHMENTS +walloar +2022-03-21 11:02:42 UTC +eRights +1 +99999999999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/31DBCFA8-69DB-D99E-9887-E493F7337B1D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/31DBCFA8-69DB-D99E-9887-E493F7337B1D.xml new file mode 100644 index 0000000..d084d0b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/31DBCFA8-69DB-D99E-9887-E493F7337B1D.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_REQUEST_PERSONS +walloar +2022-03-21 11:02:42 UTC +eRights +1 +99999999999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3494C5AA-7E66-87E2-4A7B-1D5EDC1E7851.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3494C5AA-7E66-87E2-4A7B-1D5EDC1E7851.xml new file mode 100644 index 0000000..3a4d62e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3494C5AA-7E66-87E2-4A7B-1D5EDC1E7851.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_RATES_MISSING +walloar +2022-03-21 11:02:42 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/396AF0F9-E0E0-C962-3482-45A79AB1C3ED.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/396AF0F9-E0E0-C962-3482-45A79AB1C3ED.xml new file mode 100644 index 0000000..c2f2ff9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/396AF0F9-E0E0-C962-3482-45A79AB1C3ED.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ANNUAL_ALLOWANCES +walloar +2022-10-07 11:40:41 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3A35F79F-D19A-A8E6-F3BD-D7C5873974C4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3A35F79F-D19A-A8E6-F3BD-D7C5873974C4.xml new file mode 100644 index 0000000..db0cb0b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3A35F79F-D19A-A8E6-F3BD-D7C5873974C4.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ANK_REVINFO +walloar +2021-03-02 08:04:43 UTC +eRights +20 +1 +9999999999999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3CB23798-7160-E166-5F9A-91E5C56BE7D3.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3CB23798-7160-E166-5F9A-91E5C56BE7D3.xml new file mode 100644 index 0000000..1f4894e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3CB23798-7160-E166-5F9A-91E5C56BE7D3.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_REQUEST_DETAILS +walloar +2022-03-21 11:02:42 UTC +eRights +1 +99999999999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3DE156AB-BADB-2DF9-D6FA-26BCB16DDE1D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3DE156AB-BADB-2DF9-D6FA-26BCB16DDE1D.xml new file mode 100644 index 0000000..f5b50ba --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/3DE156AB-BADB-2DF9-D6FA-26BCB16DDE1D.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_DECLARATION +walloar +2021-03-02 08:04:43 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4270DE1D-C8E0-FEC9-7FF3-93B5C7E852E6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4270DE1D-C8E0-FEC9-7FF3-93B5C7E852E6.xml new file mode 100644 index 0000000..00f1099 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4270DE1D-C8E0-FEC9-7FF3-93B5C7E852E6.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ENTITLMNT_MAX_DEFAULT +walloar +2021-03-02 08:04:43 UTC +eRights +1 +9999999999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/432B9213-7AEC-9C34-389C-4EB8E8A48994.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/432B9213-7AEC-9C34-389C-4EB8E8A48994.xml new file mode 100644 index 0000000..c4b09bb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/432B9213-7AEC-9C34-389C-4EB8E8A48994.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_COMMENTS +walloar +2022-03-21 11:02:42 UTC +eRights +20 +1 +9999999999999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4E5AB105-7190-34E1-E7BB-032288EDB54D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4E5AB105-7190-34E1-E7BB-032288EDB54D.xml new file mode 100644 index 0000000..9585a7a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4E5AB105-7190-34E1-E7BB-032288EDB54D.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ENTITLMNT_TYPES +walloar +2021-03-02 08:04:44 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4F81D551-BF4E-840F-1500-7A71535D0AAC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4F81D551-BF4E-840F-1500-7A71535D0AAC.xml new file mode 100644 index 0000000..72a88ea --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/4F81D551-BF4E-840F-1500-7A71535D0AAC.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ANK_EDMS_SMS +walloar +2021-03-02 08:04:43 UTC +eRights +20 +1 +99999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/54627E87-A436-02C8-0332-AD8EF2E3A3BA.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/54627E87-A436-02C8-0332-AD8EF2E3A3BA.xml new file mode 100644 index 0000000..dd483aa --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/54627E87-A436-02C8-0332-AD8EF2E3A3BA.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ANK_EDMS_EMAILS +walloar +2021-03-02 08:04:43 UTC +eRights +20 +1 +99999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/65543427-59F0-EDBC-BC8D-BE1F62FF06FB.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/65543427-59F0-EDBC-BC8D-BE1F62FF06FB.xml new file mode 100644 index 0000000..51062f3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/65543427-59F0-EDBC-BC8D-BE1F62FF06FB.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ANK_EDMS_SMS_RCPTS +walloar +2021-03-02 08:04:43 UTC +eRights +20 +1 +99999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/6CB2E181-E0EF-CC2E-9432-12EAB7A946FF.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/6CB2E181-E0EF-CC2E-9432-12EAB7A946FF.xml new file mode 100644 index 0000000..e19f3a1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/6CB2E181-E0EF-CC2E-9432-12EAB7A946FF.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_PERSONS_EMAILS +walloar +2022-03-21 11:02:42 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/764F9BD0-0CDF-9B71-A420-E9A059A08D5C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/764F9BD0-0CDF-9B71-A420-E9A059A08D5C.xml new file mode 100644 index 0000000..fdc5d03 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/764F9BD0-0CDF-9B71-A420-E9A059A08D5C.xml @@ -0,0 +1,15 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_MF_AIPN_ATTACHMENTS +walloar +2021-03-02 08:04:44 UTC +eRights +50 +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/A43FB5F4-8DFB-EB6F-189A-4C9429DA0629.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/A43FB5F4-8DFB-EB6F-189A-4C9429DA0629.xml new file mode 100644 index 0000000..44ad865 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/A43FB5F4-8DFB-EB6F-189A-4C9429DA0629.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_REQUEST_PAYMENT_ABAC_INFO +walloar +2022-03-21 11:02:42 UTC +eRights +10 +1 +99999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/B2076C24-CB78-AD33-64CB-3FB90D7ED2B7.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/B2076C24-CB78-AD33-64CB-3FB90D7ED2B7.xml new file mode 100644 index 0000000..9d1718d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/B2076C24-CB78-AD33-64CB-3FB90D7ED2B7.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ANK_SM_PREVIOUS_STATES +walloar +2021-03-02 08:04:43 UTC +eRights +1 +99999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/B4EEE761-9818-52A0-C7E7-18C0FFDDB0B1.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/B4EEE761-9818-52A0-C7E7-18C0FFDDB0B1.xml new file mode 100644 index 0000000..4555bc6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/B4EEE761-9818-52A0-C7E7-18C0FFDDB0B1.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_MOVEMENT_DOC_SECTIONS +walloar +2022-03-21 11:02:42 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/B967B9D7-F4E4-3424-952F-16368211F223.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/B967B9D7-F4E4-3424-952F-16368211F223.xml new file mode 100644 index 0000000..80363d4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/B967B9D7-F4E4-3424-952F-16368211F223.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_APP_PARAMETERS +walloar +2022-03-21 11:02:42 UTC +eRights +1 +99999999999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/BA339E97-627B-7D76-7992-6C82640F211D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/BA339E97-627B-7D76-7992-6C82640F211D.xml new file mode 100644 index 0000000..d75fa0a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/BA339E97-627B-7D76-7992-6C82640F211D.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ENTITLMNT_MAXS +walloar +2021-03-02 08:04:43 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/BA7EC370-3AFE-13E6-8FDF-B9FA642FDD73.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/BA7EC370-3AFE-13E6-8FDF-B9FA642FDD73.xml new file mode 100644 index 0000000..9f58350 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/BA7EC370-3AFE-13E6-8FDF-B9FA642FDD73.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_DB_LOG +walloar +2021-03-02 08:04:43 UTC +eRights +1 +9999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/BBAB72F9-3036-4976-2950-F9103D671F0D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/BBAB72F9-3036-4976-2950-F9103D671F0D.xml new file mode 100644 index 0000000..a815749 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/BBAB72F9-3036-4976-2950-F9103D671F0D.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_USER_PREFERENCES +walloar +2022-03-21 11:02:42 UTC +eRights +20 +1 +9999999999999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C1A53988-BE74-DA80-F6DE-88A080242715.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C1A53988-BE74-DA80-F6DE-88A080242715.xml new file mode 100644 index 0000000..6a56ad2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C1A53988-BE74-DA80-F6DE-88A080242715.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_MOVEMENT_DOCS_ATTACHMENTS +walloar +2022-03-21 11:02:42 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C4CCAE4D-0DEB-B042-860D-6BD10398A0F4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C4CCAE4D-0DEB-B042-860D-6BD10398A0F4.xml new file mode 100644 index 0000000..e043e75 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C4CCAE4D-0DEB-B042-860D-6BD10398A0F4.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_REQUEST_SUBPOSTS +walloar +2022-03-21 11:02:42 UTC +eRights +20 +1 +9999999999999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C6155820-DEDA-13BD-A7B1-635B900340AC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C6155820-DEDA-13BD-A7B1-635B900340AC.xml new file mode 100644 index 0000000..29bc068 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C6155820-DEDA-13BD-A7B1-635B900340AC.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_MOVEMENT_DOCS +walloar +2022-03-21 11:02:42 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C7FBAB20-2FFA-BF72-11DA-35E00F22AD5F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C7FBAB20-2FFA-BF72-11DA-35E00F22AD5F.xml new file mode 100644 index 0000000..17ecfe3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C7FBAB20-2FFA-BF72-11DA-35E00F22AD5F.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_MOVEMENT_FILES +walloar +2021-03-02 08:04:44 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C860C3DC-4CBF-3503-31AA-28B8E136CC06.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C860C3DC-4CBF-3503-31AA-28B8E136CC06.xml new file mode 100644 index 0000000..d221cc2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/C860C3DC-4CBF-3503-31AA-28B8E136CC06.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_REQUEST_ABAC_ITEM +walloar +2022-03-21 11:02:42 UTC +eRights +20 +1 +9999999999999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/CBE02240-B7C9-431F-7590-09479A5D941B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/CBE02240-B7C9-431F-7590-09479A5D941B.xml new file mode 100644 index 0000000..8309765 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/CBE02240-B7C9-431F-7590-09479A5D941B.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_MOVEMENT_TYPES +walloar +2021-03-02 08:04:44 UTC +eRights +1 +999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/CC8CA7F9-E2D5-C00D-DA19-AA4CAEFD2862.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/CC8CA7F9-E2D5-C00D-DA19-AA4CAEFD2862.xml new file mode 100644 index 0000000..1bcfde5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/CC8CA7F9-E2D5-C00D-DA19-AA4CAEFD2862.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ANNUAL_ALLOWANCE_DEFAULT +walloar +2022-10-07 11:40:41 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/CDBAEC98-F5E5-E048-9F76-8F56D05BB348.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/CDBAEC98-F5E5-E048-9F76-8F56D05BB348.xml new file mode 100644 index 0000000..dd6e481 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/CDBAEC98-F5E5-E048-9F76-8F56D05BB348.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_MOVEMENT_CONTEXT +walloar +2021-03-02 08:04:44 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/D694CCCC-9B59-6356-9296-9E6F643E9572.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/D694CCCC-9B59-6356-9296-9E6F643E9572.xml new file mode 100644 index 0000000..fa4aefe --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/D694CCCC-9B59-6356-9296-9E6F643E9572.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_DECLARATION_PERSON +walloar +2021-03-02 08:04:43 UTC +eRights +1 +99999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/D7907E22-00A8-1488-D307-727AC2B27ACC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/D7907E22-00A8-1488-D307-727AC2B27ACC.xml new file mode 100644 index 0000000..c5122e3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/D7907E22-00A8-1488-D307-727AC2B27ACC.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_ANK_EDMS_EMAIL_RCPTS +walloar +2021-03-02 08:04:43 UTC +eRights +20 +1 +99999999999999999999 +1 +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/F577A50F-FC16-22E7-EF18-966241C05061.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/F577A50F-FC16-22E7-EF18-966241C05061.xml new file mode 100644 index 0000000..a8d47d0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Sequence/seg_0/F577A50F-FC16-22E7-EF18-966241C05061.xml @@ -0,0 +1,14 @@ + + +ERIGHTS-TEST +ERIGHTS +SEQ_PERSONS_BANK_INFO +walloar +2021-03-02 08:04:44 UTC +eRights +1 +9999999999999999999 +1 +YES +93D34AFD-73F1-CEF8-BE48-029A742C8CBF + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/09F46DD0-1532-2503-78FF-D279FEB4D548.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/09F46DD0-1532-2503-78FF-D279FEB4D548.xml new file mode 100644 index 0000000..f92d96f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/09F46DD0-1532-2503-78FF-D279FEB4D548.xml @@ -0,0 +1,26 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_JOB_BUDGET_LINE +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/21538BD2-B2DC-DF50-7881-6854C902CFB6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/21538BD2-B2DC-DF50-7881-6854C902CFB6.xml new file mode 100644 index 0000000..ddf94af --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/21538BD2-B2DC-DF50-7881-6854C902CFB6.xml @@ -0,0 +1,106 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSON_ADDRESS_HIST +walloar +2022-07-19 13:44:12 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/2993494C-15BC-FF45-EAF4-D2F92DA941DD.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/2993494C-15BC-FF45-EAF4-D2F92DA941DD.xml new file mode 100644 index 0000000..c43ad39 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/2993494C-15BC-FF45-EAF4-D2F92DA941DD.xml @@ -0,0 +1,26 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_STATUTORY_LINK_CODES +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/2B9B9B9D-4A36-B308-1788-906FF5C19CCD.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/2B9B9B9D-4A36-B308-1788-906FF5C19CCD.xml new file mode 100644 index 0000000..23780ba --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/2B9B9B9D-4A36-B308-1788-906FF5C19CCD.xml @@ -0,0 +1,25 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_NUP +walloar +2022-07-19 13:44:12 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/30F4B980-B459-912A-C7E3-3CAA8534B947.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/30F4B980-B459-912A-C7E3-3CAA8534B947.xml new file mode 100644 index 0000000..4443f03 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/30F4B980-B459-912A-C7E3-3CAA8534B947.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_DATA_FOR_ABAC +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/3C73C3C8-5CD8-A3FE-5B0B-4EC55EA2B408.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/3C73C3C8-5CD8-A3FE-5B0B-4EC55EA2B408.xml new file mode 100644 index 0000000..dfce7c2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/3C73C3C8-5CD8-A3FE-5B0B-4EC55EA2B408.xml @@ -0,0 +1,77 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_MV_PERSONS_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/478DD3C2-32A3-182F-8E02-42B2BCCD9B30.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/478DD3C2-32A3-182F-8E02-42B2BCCD9B30.xml new file mode 100644 index 0000000..f6c2900 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/478DD3C2-32A3-182F-8E02-42B2BCCD9B30.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ENTITIES +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/4D31BECC-FA7B-04BD-440D-1D3655369157.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/4D31BECC-FA7B-04BD-440D-1D3655369157.xml new file mode 100644 index 0000000..117ad23 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/4D31BECC-FA7B-04BD-440D-1D3655369157.xml @@ -0,0 +1,82 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/598EE7E1-BB1B-4267-250D-6B812BECB16F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/598EE7E1-BB1B-4267-250D-6B812BECB16F.xml new file mode 100644 index 0000000..4eac00c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/598EE7E1-BB1B-4267-250D-6B812BECB16F.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_COM +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/6213FC12-F38A-D2E1-3B8B-4FC54BE9DB92.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/6213FC12-F38A-D2E1-3B8B-4FC54BE9DB92.xml new file mode 100644 index 0000000..7d9b0b0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/6213FC12-F38A-D2E1-3B8B-4FC54BE9DB92.xml @@ -0,0 +1,44 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_CITIES +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES +ROWID + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/631D3B79-A858-A427-4783-C5BC1FCB438B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/631D3B79-A858-A427-4783-C5BC1FCB438B.xml new file mode 100644 index 0000000..12c328f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/631D3B79-A858-A427-4783-C5BC1FCB438B.xml @@ -0,0 +1,26 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_FUNCTION_CODES +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/667A4934-197B-111A-FD8F-5A1BADAEE739.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/667A4934-197B-111A-FD8F-5A1BADAEE739.xml new file mode 100644 index 0000000..a3a54e8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/667A4934-197B-111A-FD8F-5A1BADAEE739.xml @@ -0,0 +1,45 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_EMAILS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/6A8630FC-5CD1-A380-2B14-58ABEF2FE83A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/6A8630FC-5CD1-A380-2B14-58ABEF2FE83A.xml new file mode 100644 index 0000000..3dffff1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/6A8630FC-5CD1-A380-2B14-58ABEF2FE83A.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_JOBS_HIST_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/6BC02B53-CC7E-F7BD-56AA-8C2C6935BA33.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/6BC02B53-CC7E-F7BD-56AA-8C2C6935BA33.xml new file mode 100644 index 0000000..ec55b0e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/6BC02B53-CC7E-F7BD-56AA-8C2C6935BA33.xml @@ -0,0 +1,33 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_BUDGDEL_ANALYTICAL_CODES +walloar +2022-09-01 10:11:41 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/75701A14-244D-95C1-3DA2-A568DA652435.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/75701A14-244D-95C1-3DA2-A568DA652435.xml new file mode 100644 index 0000000..b7bcd66 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/75701A14-244D-95C1-3DA2-A568DA652435.xml @@ -0,0 +1,21 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/76F5AE5B-184E-E68B-5AFF-65178FE1C6FD.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/76F5AE5B-184E-E68B-5AFF-65178FE1C6FD.xml new file mode 100644 index 0000000..48aec30 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/76F5AE5B-184E-E68B-5AFF-65178FE1C6FD.xml @@ -0,0 +1,21 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_HIST_COM +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/7ED28DCA-FE31-3387-94F1-C2A51EA2EBB9.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/7ED28DCA-FE31-3387-94F1-C2A51EA2EBB9.xml new file mode 100644 index 0000000..ea5bb61 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/7ED28DCA-FE31-3387-94F1-C2A51EA2EBB9.xml @@ -0,0 +1,54 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_COUNTRIES +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES +ROWID + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/84171DD1-B63E-D76E-2EDE-4126C95EEE3E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/84171DD1-B63E-D76E-2EDE-4126C95EEE3E.xml new file mode 100644 index 0000000..b5f6084 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/84171DD1-B63E-D76E-2EDE-4126C95EEE3E.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ASSIGNMENTS_COM +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8448AE91-6E02-D3A7-E563-3ADFCD981593.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8448AE91-6E02-D3A7-E563-3ADFCD981593.xml new file mode 100644 index 0000000..03defdc --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8448AE91-6E02-D3A7-E563-3ADFCD981593.xml @@ -0,0 +1,71 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSON_NATIONALITIES +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/84CE00D7-7A30-5596-1E0D-3CAFF16AE49C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/84CE00D7-7A30-5596-1E0D-3CAFF16AE49C.xml new file mode 100644 index 0000000..2db4c77 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/84CE00D7-7A30-5596-1E0D-3CAFF16AE49C.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_MV_PERSON_PHONES +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8A6FCAC5-C439-B8CD-F4EC-0FDCE61DBABD.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8A6FCAC5-C439-B8CD-F4EC-0FDCE61DBABD.xml new file mode 100644 index 0000000..f555c62 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8A6FCAC5-C439-B8CD-F4EC-0FDCE61DBABD.xml @@ -0,0 +1,40 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONNEL_TYPE +walloar +2022-03-29 16:59:57 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8F98C450-E751-A83B-F932-78C506CC1BE6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8F98C450-E751-A83B-F932-78C506CC1BE6.xml new file mode 100644 index 0000000..eb1d079 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8F98C450-E751-A83B-F932-78C506CC1BE6.xml @@ -0,0 +1,21 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_HIST_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8FF4EE79-084E-E0BC-2B8A-F35CB2FD80C6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8FF4EE79-084E-E0BC-2B8A-F35CB2FD80C6.xml new file mode 100644 index 0000000..bd2a52b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/8FF4EE79-084E-E0BC-2B8A-F35CB2FD80C6.xml @@ -0,0 +1,106 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSON_ADDRESS +walloar +2021-03-11 10:08:49 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/91EB52F5-1395-C9BD-386D-CAC24DDEDF9B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/91EB52F5-1395-C9BD-386D-CAC24DDEDF9B.xml new file mode 100644 index 0000000..5946aa3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/91EB52F5-1395-C9BD-386D-CAC24DDEDF9B.xml @@ -0,0 +1,169 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_FAMILY_MEMBERS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + 'LA' + AND sysdate BETWEEN csisla_start_eligibility AND csisla_end_eligibility + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_person_relatives@easrefn.cc.cec.eu.int pr + WHERE + pr.per_id = r.per_id + AND pr.rel_per_id = la.per_id + )]]> +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/94E79362-3379-F273-4E36-75472F0906B8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/94E79362-3379-F273-4E36-75472F0906B8.xml new file mode 100644 index 0000000..6b77803 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/94E79362-3379-F273-4E36-75472F0906B8.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_MV_ENTITIES +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9D36BB70-CD6A-8429-66D9-6A6893B18CBE.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9D36BB70-CD6A-8429-66D9-6A6893B18CBE.xml new file mode 100644 index 0000000..17f3a07 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9D36BB70-CD6A-8429-66D9-6A6893B18CBE.xml @@ -0,0 +1,55 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_RATE_EXCHANGE +walloar +2021-05-11 06:48:47 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES +ROWID + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9D7F992B-36C8-32C7-5785-90CA6C7BD662.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9D7F992B-36C8-32C7-5785-90CA6C7BD662.xml new file mode 100644 index 0000000..9e80201 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9D7F992B-36C8-32C7-5785-90CA6C7BD662.xml @@ -0,0 +1,20 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ENTITIES_HIST_COM +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9E854E48-5D75-C56C-B8AD-AD867F6FD6EA.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9E854E48-5D75-C56C-B8AD-AD867F6FD6EA.xml new file mode 100644 index 0000000..2df208c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9E854E48-5D75-C56C-B8AD-AD867F6FD6EA.xml @@ -0,0 +1,21 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ENTITIES_HIST +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9F01CDBA-F98A-CCDD-533A-A33F6CE02631.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9F01CDBA-F98A-CCDD-533A-A33F6CE02631.xml new file mode 100644 index 0000000..604216d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/9F01CDBA-F98A-CCDD-533A-A33F6CE02631.xml @@ -0,0 +1,35 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_HEAD_OF_DELEGATIONS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/A1DDF40D-0252-710B-98E6-6215CC4DB3A7.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/A1DDF40D-0252-710B-98E6-6215CC4DB3A7.xml new file mode 100644 index 0000000..265f2b7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/A1DDF40D-0252-710B-98E6-6215CC4DB3A7.xml @@ -0,0 +1,107 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSON_ADDRESS_LAST +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES +ROWID + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/A72B2C95-42B8-C581-942E-299DAFCAB298.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/A72B2C95-42B8-C581-942E-299DAFCAB298.xml new file mode 100644 index 0000000..36337e4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/A72B2C95-42B8-C581-942E-299DAFCAB298.xml @@ -0,0 +1,21 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_BUDGDEL_DELEGATION_CODES +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AA9661D0-8A85-A206-9D93-17DB00309FA9.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AA9661D0-8A85-A206-9D93-17DB00309FA9.xml new file mode 100644 index 0000000..18b0d3d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AA9661D0-8A85-A206-9D93-17DB00309FA9.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AEE9DCA9-EE21-904C-B601-50ED50778C37.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AEE9DCA9-EE21-904C-B601-50ED50778C37.xml new file mode 100644 index 0000000..16e196b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AEE9DCA9-EE21-904C-B601-50ED50778C37.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ENTITIES_TYPES +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AF62DB0C-C7A6-A778-CC2B-92C7C8766E17.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AF62DB0C-C7A6-A778-CC2B-92C7C8766E17.xml new file mode 100644 index 0000000..eebdf17 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/AF62DB0C-C7A6-A778-CC2B-92C7C8766E17.xml @@ -0,0 +1,32 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_CAREER_STAT_LINK_HIST_EEAS +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/B2A9FB37-F6BE-9BB7-D871-5AD42E8F82FA.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/B2A9FB37-F6BE-9BB7-D871-5AD42E8F82FA.xml new file mode 100644 index 0000000..7d94991 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/B2A9FB37-F6BE-9BB7-D871-5AD42E8F82FA.xml @@ -0,0 +1,31 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_MV_USER_SYS_ORG_PERMS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/BC61B9FD-52A0-9D62-65FE-5CDE110CB5EE.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/BC61B9FD-52A0-9D62-65FE-5CDE110CB5EE.xml new file mode 100644 index 0000000..5035c7a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/BC61B9FD-52A0-9D62-65FE-5CDE110CB5EE.xml @@ -0,0 +1,113 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSON_RELATIVES_RIGHTS +walloar +2021-03-17 08:16:31 UTC +eRights +BDF5487C-1A21-3DDA-2741-BA73BF623D2A +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/C45D5F1A-DF40-788B-BB2E-3265211BB1C2.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/C45D5F1A-DF40-788B-BB2E-3265211BB1C2.xml new file mode 100644 index 0000000..f6be80c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/C45D5F1A-DF40-788B-BB2E-3265211BB1C2.xml @@ -0,0 +1,43 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_BUDGET_LINE_DATA +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + 2020]]> +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/CF05993A-787C-F324-BC8E-D408C125BA02.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/CF05993A-787C-F324-BC8E-D408C125BA02.xml new file mode 100644 index 0000000..221fdfb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/CF05993A-787C-F324-BC8E-D408C125BA02.xml @@ -0,0 +1,312 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_JOBS +walloar +2022-10-24 12:24:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + enth.main_org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN ( + SELECT DISTINCT + entities.city_code, + entities.country_id, + FIRST_VALUE(delstatus.severity_level) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) severity_level, + FIRST_VALUE(delstatus.evacuation_level_code_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code_id, + FIRST_VALUE(delstatus.alert_status_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) alert_status_id, + FIRST_VALUE(delstatus.evacuation_level_code) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code, + FIRST_VALUE(delstatus.family_posting_type_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type_id, + FIRST_VALUE(delstatus.family_posting_type) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type + FROM + mv_delegation_status delstatus, + mv_entities entities + WHERE + delstatus.org_id = entities.org_id + ) delstat ON ( jobh.location_country_code = delstat.country_id + AND jobh.location_city_code = delstat.city_code ) + LEFT JOIN mv_head_of_delegations hod ON asgh.job_id = hod.job_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_eeas jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist enth2 + WHERE + enth.org_id = enth2.org_id + ) + UNION ALL + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + enth.main_org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN ( + SELECT DISTINCT + entities.city_code, + entities.country_id, + FIRST_VALUE(delstatus.severity_level) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) severity_level, + FIRST_VALUE(delstatus.evacuation_level_code_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code_id, + FIRST_VALUE(delstatus.alert_status_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) alert_status_id, + FIRST_VALUE(delstatus.evacuation_level_code) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code, + FIRST_VALUE(delstatus.family_posting_type_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type_id, + FIRST_VALUE(delstatus.family_posting_type) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type + FROM + mv_delegation_status delstatus, + mv_entities entities + WHERE + delstatus.org_id = entities.org_id + ) delstat ON ( jobh.location_country_code = delstat.country_id + AND jobh.location_city_code = delstat.city_code ) + LEFT JOIN mv_head_of_delegations hod ON asgh.job_id = hod.job_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + NOT EXISTS ( + SELECT + 1 + FROM + mv_jobs_hist_eeas jobhe + WHERE + jobh.job_id = jobhe.job_id + ) + AND jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_com jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist enth2 + WHERE + enth.org_id = enth2.org_id + )]]> +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES +ROWID + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/D112B145-22D0-BA5E-A42D-64E413DBFC65.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/D112B145-22D0-BA5E-A42D-64E413DBFC65.xml new file mode 100644 index 0000000..a498aed --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/D112B145-22D0-BA5E-A42D-64E413DBFC65.xml @@ -0,0 +1,47 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_INSTITUTIONS +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES +ROWID + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/D51799BE-9126-8245-1E8F-17C8220631EB.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/D51799BE-9126-8245-1E8F-17C8220631EB.xml new file mode 100644 index 0000000..2cf818e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/D51799BE-9126-8245-1E8F-17C8220631EB.xml @@ -0,0 +1,30 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_DELEGATION_STATUS +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/DE7AB5D4-D197-8196-FC9A-21779D5D042E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/DE7AB5D4-D197-8196-FC9A-21779D5D042E.xml new file mode 100644 index 0000000..700733d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/DE7AB5D4-D197-8196-FC9A-21779D5D042E.xml @@ -0,0 +1,44 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_JOBS_HIST_COM +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/EC4A5566-BE6C-1068-B716-59B79DE5343E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/EC4A5566-BE6C-1068-B716-59B79DE5343E.xml new file mode 100644 index 0000000..f15ae33 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Snapshot/seg_0/EC4A5566-BE6C-1068-B716-59B79DE5343E.xml @@ -0,0 +1,21 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ASSIGNMENTS_HIST_COM +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +ON DEMAND +NO +YES +FORCE + +false +false +8F9A9085-AC19-5D96-C430-44185E59D6AF +YES + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/StProc/seg_0/730C3FE5-A4C5-2276-8E68-17A082C4A074.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/StProc/seg_0/730C3FE5-A4C5-2276-8E68-17A082C4A074.xml new file mode 100644 index 0000000..d099ee6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/StProc/seg_0/730C3FE5-A4C5-2276-8E68-17A082C4A074.xml @@ -0,0 +1,80 @@ + + +ERIGHTS-TEST +ERIGHTS +PR_REFRESH_OBJECTS +walloar +2021-03-02 08:05:04 UTC +eRights + +CREATE OR REPLACE PROCEDURE ERIGHTS.PR_REFRESH_OBJECTS AS + v_sql_compile varchar2(500); + v_SQLERRM varchar2(4000); + l_refresh_start_time number; + l_refresh_end_time number; +BEGIN + -- DBMS_MVIEW.REFRESH('CAL_MONTH_SALES_MV', method => '?', + -- atomic_refresh => FALSE, out_of_place => TRUE); + + for cur in (select * from t_refresh_objects o where o.system = 'EASREFN' order by o.priority) loop + + for cur_easrefn in (select app.easrefn_object_name, + e.is_refreshed easrefn_is_refreshed, + e.refresh_date easrefn_refresh_date + from t_app_easrefn_objects app, + t_refresh_objects@EASREFN.CC.CEC.EU.INT e + where app.easrefn_object_name = e.object_name + and app.app_object_name_id = cur.id + order by app.priority) loop + + if ((upper(cur.is_refreshed) = 'N' )or + (cur_easrefn.easrefn_is_refreshed = 'Y' and + cur.refresh_date < cur_easrefn.easrefn_refresh_date)) then + + begin + + v_sql_compile := 'ALTER MATERIALIZED VIEW ' || + cur.app_object_name || ' COMPILE'; + execute immediate v_sql_compile; + l_refresh_start_time := DBMS_UTILITY.get_time; + dbms_mview.refresh(cur.app_object_name, 'C'); + + --DBMS_MVIEW.REFRESH(cur.app_object_name, method => 'C', + -- atomic_refresh => FALSE, out_of_place => TRUE); + l_refresh_end_time := DBMS_UTILITY.get_time; + + update t_refresh_objects l + set l.is_refreshed = 'Y', + l.refresh_date = sysdate, + l.status = 'OK' + where l.app_object_name = cur.app_object_name; + + pkg_log.debug(cur.app_object_name || + ' has been refreshed succesfully.' || ' Elapsed time: '|| to_char((l_refresh_end_time - l_refresh_start_time)/100) ||'s', + 'pr_refresh_objects'); + + exception + when others then + v_sqlerrm := sqlerrm; + update t_refresh_objects l + set l.is_refreshed = 'n', + l.refresh_date = sysdate, + l.status = v_sqlerrm + where l.app_object_name = cur.app_object_name; + pkg_log.ERROR(cur.app_object_name || + ' has encountered error during refresh ' || + v_sqlerrm, + 'pr_refresh_objects'); + + end; + commit; + goto next_app_view; + end if; + end loop; + + <<next_app_view>> + null; + end loop; + +END PR_REFRESH_OBJECTS; + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/TSpace/seg_0/8F9A9085-AC19-5D96-C430-44185E59D6AF.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/TSpace/seg_0/8F9A9085-AC19-5D96-C430-44185E59D6AF.xml new file mode 100644 index 0000000..ac3943c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/TSpace/seg_0/8F9A9085-AC19-5D96-C430-44185E59D6AF.xml @@ -0,0 +1,44 @@ + + +ERIGHTS-TEST +ERIGHTS +ERIGHTS +walloar +2021-03-02 08:04:42 UTC +eRights +65536 +2147483645 +0 +LOCAL +65536 +NOCOMPRESS +NO +SMALLFILE +NO + + +ERIGHTS-DEVELOPMENT ++DATA/BAA140AB/BDCC5E8F37E2EB54E0535D2F850A60AE/DATAFILE/erights.1042.1067509579 +walloar +2021-06-09 07:13:25 UTC +eRights +ON ++DATA/BAA140AB/BDCC5E8F37E2EB54E0535D2F850A60AE/DATAFILE/erights.1042.1067509579 +5324800 +102400 +2560000 + + +ERIGHTS-TEST ++DATA2/BAA111AB/98662A4FA9BEF4B4E0531F2F850A7B73/DATAFILE/erights.2253.1063097829 +walloar +2022-03-21 11:15:15 UTC +eRights +ON ++DATA2/BAA111AB/98662A4FA9BEF4B4E0531F2F850A7B73/DATAFILE/erights.2253.1063097829 +1 +102400 +15360000 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/01197962-C671-CBDB-2A12-9A0182777C73.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/01197962-C671-CBDB-2A12-9A0182777C73.xml new file mode 100644 index 0000000..8f06a97 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/01197962-C671-CBDB-2A12-9A0182777C73.xml @@ -0,0 +1,194 @@ + + +walloar +2021-03-11 10:08:49 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8FF4EE79-084E-E0BC-2B8A-F35CB2FD80C6 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-11 10:08:49 UTC +eRights + + + + +walloar +2021-03-11 10:08:49 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml new file mode 100644 index 0000000..61f2527 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml @@ -0,0 +1,96 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights +sysdate + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:49 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-18 10:16:54 UTC +eRights +NOCACHE +8192 +STATE_MACHINE_CONTEXT +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +9D17945B-CC1F-9F61-6476-8BE5FB81624C +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/19B5777E-F422-5B95-B997-179834446A02.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/19B5777E-F422-5B95-B997-179834446A02.xml new file mode 100644 index 0000000..810663d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/19B5777E-F422-5B95-B997-179834446A02.xml @@ -0,0 +1,121 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:54 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2022-03-29 16:59:57 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-18 10:16:54 UTC +eRights +NOCACHE +8192 +PREFERENCES +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +458625B2-0DCE-ED60-5F48-57AF9E3ACF0D +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + + +walloar +2022-03-29 16:59:57 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +BB9F4ED9-3EEB-F638-5DFA-2C548A82E74A +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml new file mode 100644 index 0000000..b5c7b28 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml @@ -0,0 +1,82 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +D392EDA6-7924-9637-616D-71DE42D9408F +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml new file mode 100644 index 0000000..b3aff2d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml @@ -0,0 +1,60 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +E4CE4776-9296-0E7E-31BD-7DCF61D20247 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/21442F1D-A788-0766-1383-1143D116D4BC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/21442F1D-A788-0766-1383-1143D116D4BC.xml new file mode 100644 index 0000000..bec2be0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/21442F1D-A788-0766-1383-1143D116D4BC.xml @@ -0,0 +1,77 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +F3FEA6C6-573A-275A-1C16-6BCC470769A3 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml new file mode 100644 index 0000000..e844ce6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml @@ -0,0 +1,94 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +7ED28DCA-FE31-3387-94F1-C2A51EA2EBB9 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml new file mode 100644 index 0000000..8c58b62 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml @@ -0,0 +1,54 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights +SYSDATE + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights +'N' + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml new file mode 100644 index 0000000..a949875 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml @@ -0,0 +1,345 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +4D31BECC-FA7B-04BD-440D-1D3655369157 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml new file mode 100644 index 0000000..4da8e83 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml @@ -0,0 +1,122 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +9D7F992B-36C8-32C7-5785-90CA6C7BD662 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml new file mode 100644 index 0000000..8e25ca7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml @@ -0,0 +1,67 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +14BB3BAD-1FBA-2E2B-1A43-C1057D3CAAFB +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml new file mode 100644 index 0000000..9a4477a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml @@ -0,0 +1,50 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +138086F9-4C79-3301-443F-6F498292A7BA +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/3646E4B8-91A7-9672-2369-7F6E7AB7C1F2.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/3646E4B8-91A7-9672-2369-7F6E7AB7C1F2.xml new file mode 100644 index 0000000..1fce0b2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/3646E4B8-91A7-9672-2369-7F6E7AB7C1F2.xml @@ -0,0 +1,194 @@ + + +walloar +2022-07-19 13:44:12 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +21538BD2-B2DC-DF50-7881-6854C902CFB6 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + + + +walloar +2022-07-19 13:44:13 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml new file mode 100644 index 0000000..0d73dbe --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml @@ -0,0 +1,44 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +667A4934-197B-111A-FD8F-5A1BADAEE739 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml new file mode 100644 index 0000000..3959af1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml @@ -0,0 +1,103 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF +31AD6961-9E69-7365-F992-D7B6720AED9D +002E8510-7075-EE24-0F2C-35ED80E2E3AC +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml new file mode 100644 index 0000000..4f351c7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml @@ -0,0 +1,82 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2022-03-18 10:16:54 UTC +eRights +NOCACHE +8192 +BLOB_DATA +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +675E4583-1537-24AB-BEB2-5B42DF8ADB33 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml new file mode 100644 index 0000000..a76c148 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml @@ -0,0 +1,59 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +D51799BE-9126-8245-1E8F-17C8220631EB +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml new file mode 100644 index 0000000..7d43854 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml @@ -0,0 +1,32 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml new file mode 100644 index 0000000..238c998 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml @@ -0,0 +1,72 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +DEDAB09F-EEA4-6FEB-4668-5D002FFDB6A1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml new file mode 100644 index 0000000..3ad683a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml @@ -0,0 +1,172 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +478DD3C2-32A3-182F-8E02-42B2BCCD9B30 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml new file mode 100644 index 0000000..2dc6710 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml @@ -0,0 +1,65 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:49 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +E660C4ED-7236-87FB-30E7-12376CCD31E8 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml new file mode 100644 index 0000000..8adb9e8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml @@ -0,0 +1,72 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +DAA7CCD4-8237-6394-3CC7-DF804E467BF2 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml new file mode 100644 index 0000000..d6c06a1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml @@ -0,0 +1,272 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +598EE7E1-BB1B-4267-250D-6B812BECB16F +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +FBC9B293-4859-520B-788A-BB538E8BB1C7 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml new file mode 100644 index 0000000..403469b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml @@ -0,0 +1,92 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +84171DD1-B63E-D76E-2EDE-4126C95EEE3E +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml new file mode 100644 index 0000000..d102b80 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml @@ -0,0 +1,50 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +43C3383A-0998-CDFE-5650-F36853012930 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml new file mode 100644 index 0000000..31d776c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml @@ -0,0 +1,72 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +22CB3CCF-0344-9BAF-A394-D187A212F0B3 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml new file mode 100644 index 0000000..aa91537 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml @@ -0,0 +1,119 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +84CE00D7-7A30-5596-1E0D-3CAFF16AE49C +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml new file mode 100644 index 0000000..92f80fc --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml @@ -0,0 +1,177 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + + +walloar +2021-03-02 08:04:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +73195FED-F90E-977E-0B4D-960670800B56 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml new file mode 100644 index 0000000..89ee03e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml @@ -0,0 +1,164 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +DE7AB5D4-D197-8196-FC9A-21779D5D042E +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml new file mode 100644 index 0000000..1694107 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml @@ -0,0 +1,84 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +AEE9DCA9-EE21-904C-B601-50ED50778C37 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml new file mode 100644 index 0000000..efe5af1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml @@ -0,0 +1,307 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +75701A14-244D-95C1-3DA2-A568DA652435 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +FBC9B293-4859-520B-788A-BB538E8BB1C7 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml new file mode 100644 index 0000000..c867ddf --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml @@ -0,0 +1,274 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +6A8630FC-5CD1-A380-2B14-58ABEF2FE83A +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml new file mode 100644 index 0000000..7b95429 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml @@ -0,0 +1,65 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +BAC2A730-C1D4-3AE0-3284-366628AB4EEF +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml new file mode 100644 index 0000000..8e7ec94 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml @@ -0,0 +1,67 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +6A0A8E53-4154-3419-1942-8A2662CB0D7D +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml new file mode 100644 index 0000000..2af1dd4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml @@ -0,0 +1,64 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +B2A9FB37-F6BE-9BB7-D871-5AD42E8F82FA +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml new file mode 100644 index 0000000..83fc316 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml @@ -0,0 +1,289 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +3C73C3C8-5CD8-A3FE-5B0B-4EC55EA2B408 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml new file mode 100644 index 0000000..b8c4e05 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml @@ -0,0 +1,121 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-18 10:16:54 UTC +eRights +NOCACHE +8192 +JOB_DATA +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +77BA1493-B272-C71D-9769-5EE28E509CE1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml new file mode 100644 index 0000000..0aa6447 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml @@ -0,0 +1,60 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +F050672A-FFDD-B268-8ABE-7E82E06A8B3D +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml new file mode 100644 index 0000000..784612a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml @@ -0,0 +1,347 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml new file mode 100644 index 0000000..450f322 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml @@ -0,0 +1,158 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:09:27 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights +'N' + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:11:12 UTC +eRights +'N' + + +walloar +2021-03-02 08:04:47 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:10:57 UTC +eRights + + +tapiafo +2021-03-08 13:10:39 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +tapiafo +2021-03-08 13:10:26 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-04-26 13:27:39 UTC +eRights + + +tapiafo +2021-03-08 13:10:10 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +tapiafo +2021-03-08 13:24:03 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +4EE08402-3ECC-48E6-0A24-855CE0F6F8CE +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + + +walloar +2022-03-18 10:16:53 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +68940DE9-7C6D-38E5-A96E-43D3B720E3F7 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml new file mode 100644 index 0000000..eab3b74 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml @@ -0,0 +1,119 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +91EB52F5-1395-C9BD-386D-CAC24DDEDF9B +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/926C55C3-96A6-4A84-D90B-50E4273EC6D7.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/926C55C3-96A6-4A84-D90B-50E4273EC6D7.xml new file mode 100644 index 0000000..51eb48d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/926C55C3-96A6-4A84-D90B-50E4273EC6D7.xml @@ -0,0 +1,69 @@ + + +walloar +2022-08-26 15:21:56 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8A6FCAC5-C439-B8CD-F4EC-0FDCE61DBABD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-08-26 15:21:56 UTC +eRights + + +walloar +2022-08-26 15:21:56 UTC +eRights + + +walloar +2022-08-26 15:21:56 UTC +eRights + + +walloar +2022-08-26 15:21:56 UTC +eRights + + +walloar +2022-08-26 15:21:56 UTC +eRights + + +walloar +2022-08-26 15:21:56 UTC +eRights + + +walloar +2022-08-26 15:21:56 UTC +eRights + + +walloar +2022-08-26 15:21:56 UTC +eRights + + +walloar +2022-08-26 15:21:56 UTC +eRights + + +walloar +2022-08-26 15:21:56 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml new file mode 100644 index 0000000..2272036 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml @@ -0,0 +1,117 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +152B3954-0549-E328-7999-A789E12E0923 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml new file mode 100644 index 0000000..3282927 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml @@ -0,0 +1,137 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +76F5AE5B-184E-E68B-5AFF-65178FE1C6FD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml new file mode 100644 index 0000000..5b33c7a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml @@ -0,0 +1,93 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights +'N' + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml new file mode 100644 index 0000000..3c3c9cf --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml @@ -0,0 +1,80 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +084AD1F4-B737-F380-5108-BB870A7FFACE +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml new file mode 100644 index 0000000..42556cb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml @@ -0,0 +1,97 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +AA9661D0-8A85-A206-9D93-17DB00309FA9 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml new file mode 100644 index 0000000..166e750 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml @@ -0,0 +1,177 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +9E854E48-5D75-C56C-B8AD-AD867F6FD6EA +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml new file mode 100644 index 0000000..3feb9c2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml @@ -0,0 +1,137 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F98C450-E751-A83B-F932-78C506CC1BE6 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml new file mode 100644 index 0000000..e174259 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml @@ -0,0 +1,153 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +64E422AF-16EE-4279-0802-0F4FED64BC92 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml new file mode 100644 index 0000000..6b68236 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml @@ -0,0 +1,70 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-18 10:16:54 UTC +eRights +NOCACHE +8192 +CALENDAR +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +99A68A9D-0E85-6491-A419-63776A2AFFFB +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml new file mode 100644 index 0000000..de56013 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml @@ -0,0 +1,79 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +EC4A5566-BE6C-1068-B716-59B79DE5343E +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml new file mode 100644 index 0000000..214df1b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml @@ -0,0 +1,92 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +67FA72D4-F428-21BB-8972-9EEAF3C3F80B +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/B55392AB-563F-D199-B9AB-EE5BC9FC5638.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/B55392AB-563F-D199-B9AB-EE5BC9FC5638.xml new file mode 100644 index 0000000..20e3c20 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/B55392AB-563F-D199-B9AB-EE5BC9FC5638.xml @@ -0,0 +1,89 @@ + + +walloar +2021-03-25 11:04:18 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2021-03-25 11:05:16 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2021-03-25 11:05:16 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2021-03-25 11:08:43 UTC +eRights +'PRIV' + + + + +walloar +2022-03-18 10:08:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2022-03-18 10:08:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-25 11:08:43 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +D7968ABC-546A-2463-2535-9463516DD018 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/B792575D-ED90-C316-85A8-FB178ED60508.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/B792575D-ED90-C316-85A8-FB178ED60508.xml new file mode 100644 index 0000000..918d279 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/B792575D-ED90-C316-85A8-FB178ED60508.xml @@ -0,0 +1,107 @@ + + +walloar +2021-04-20 14:07:17 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + +walloar +2021-04-20 14:10:41 UTC +eRights + + + + +walloar +2022-03-18 10:08:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-04-20 14:11:33 UTC +eRights + + +walloar +2021-04-20 14:12:59 UTC +eRights + + + + +walloar +2021-04-20 14:10:41 UTC +eRights +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF +C238FA4B-8A99-F484-76AA-DC7C33791E99 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml new file mode 100644 index 0000000..c5575aa --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml @@ -0,0 +1,65 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights +SYSDATE + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +C9B1CA45-0569-CADA-2952-9A1A3EC7C78D +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml new file mode 100644 index 0000000..99e1b03 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml @@ -0,0 +1,98 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +237281E2-FFF6-847F-6AB6-2548E956CA58 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +FECACA26-68B6-E452-61B0-195E6A666DEA +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml new file mode 100644 index 0000000..2bcdd7a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml @@ -0,0 +1,62 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml new file mode 100644 index 0000000..f0ad89d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml @@ -0,0 +1,65 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +28B7CBEE-3770-36FE-9BB2-4DA627324E4C +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml new file mode 100644 index 0000000..eda9d4d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml @@ -0,0 +1,64 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +6213FC12-F38A-D2E1-3B8B-4FC54BE9DB92 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml new file mode 100644 index 0000000..800e401 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml @@ -0,0 +1,85 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +BD56D81B-2550-7F11-1B90-74391FD97881 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml new file mode 100644 index 0000000..bba859f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml @@ -0,0 +1,153 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights +'N' + + +walloar +2022-03-18 10:08:51 UTC +eRights + + + + +walloar +2021-03-02 08:04:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF +68E87693-08C7-6BDF-9112-E99FA65A3B40 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml new file mode 100644 index 0000000..2eea0b7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml @@ -0,0 +1,110 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +9F01CDBA-F98A-CCDD-533A-A33F6CE02631 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2022-10-24 12:24:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml new file mode 100644 index 0000000..174175a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml @@ -0,0 +1,154 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +94E79362-3379-F273-4E36-75472F0906B8 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml new file mode 100644 index 0000000..c021763 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml @@ -0,0 +1,95 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-18 10:16:54 UTC +eRights +NOCACHE +8192 +BODY +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +F38D615C-1A84-AD41-17E9-DF621E372964 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml new file mode 100644 index 0000000..b0df37d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml @@ -0,0 +1,230 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2022-03-18 10:16:54 UTC +eRights +NOCACHE +8192 +JOB_DATA +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +7BF708AF-A690-0ABD-BAFA-CFE042367B3A +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml new file mode 100644 index 0000000..9cfa7bd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml @@ -0,0 +1,72 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +A8BD4BEF-AA5A-4BFA-3826-FF5BC2E9091F +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/DE7F2F0C-F672-D3BE-EEB4-F258404C9A6B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/DE7F2F0C-F672-D3BE-EEB4-F258404C9A6B.xml new file mode 100644 index 0000000..be724ae --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/DE7F2F0C-F672-D3BE-EEB4-F258404C9A6B.xml @@ -0,0 +1,84 @@ + + +walloar +2022-09-01 10:11:41 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +6BC02B53-CC7E-F7BD-56AA-8C2C6935BA33 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-09-01 10:11:41 UTC +eRights + + +walloar +2022-09-01 10:11:41 UTC +eRights + + +walloar +2022-09-01 10:11:41 UTC +eRights + + +walloar +2022-09-01 10:11:41 UTC +eRights + + +walloar +2022-09-01 10:11:41 UTC +eRights + + +walloar +2022-09-01 10:11:41 UTC +eRights + + +walloar +2022-09-01 10:11:41 UTC +eRights + + +walloar +2022-09-01 10:11:41 UTC +eRights + + +walloar +2022-09-01 10:11:41 UTC +eRights + + +walloar +2022-09-01 10:11:41 UTC +eRights + + +walloar +2022-09-01 10:11:41 UTC +eRights + + + + +walloar +2022-09-01 10:11:41 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml new file mode 100644 index 0000000..875f1c7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml @@ -0,0 +1,85 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +8C7917BC-7A31-B73B-FB9A-4918AD00E08C +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/EB3AF18B-7D5F-9652-FD62-94B24BB93E8D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/EB3AF18B-7D5F-9652-FD62-94B24BB93E8D.xml new file mode 100644 index 0000000..73672f6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_0/EB3AF18B-7D5F-9652-FD62-94B24BB93E8D.xml @@ -0,0 +1,101 @@ + + +walloar +2022-07-19 13:44:13 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + + + +walloar +2022-07-19 13:44:13 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2022-07-19 13:44:13 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2022-07-19 13:44:13 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-07-19 13:44:13 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +2A349E19-E2F0-A0B2-7A41-BC6FE49D1075 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/052CD975-5E14-2580-4FFE-1E2CF467946F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/052CD975-5E14-2580-4FFE-1E2CF467946F.xml new file mode 100644 index 0000000..3fa8455 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/052CD975-5E14-2580-4FFE-1E2CF467946F.xml @@ -0,0 +1,362 @@ + + +walloar +2022-10-25 12:45:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-11-11 07:44:41 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-02-07 10:46:15 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-11-11 07:44:41 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-02-07 10:46:15 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-11-11 07:44:41 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-02-07 10:46:15 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-02-07 10:46:15 UTC +eRights + + +walloar +2023-02-07 10:46:15 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-02-07 10:46:15 UTC +eRights + + +walloar +2023-02-07 10:46:15 UTC +eRights + + +walloar +2023-02-07 10:46:15 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-11-11 07:44:41 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/091AA2F5-6BCF-1DBE-B34A-A5C7B64FA858.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/091AA2F5-6BCF-1DBE-B34A-A5C7B64FA858.xml new file mode 100644 index 0000000..9e781e9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/091AA2F5-6BCF-1DBE-B34A-A5C7B64FA858.xml @@ -0,0 +1,96 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +'N' + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-18 10:16:53 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +3E698390-0367-19FD-6D5A-8B8C0A4E9612 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/092765D7-5F0D-1566-F3F8-D938BC59E91C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/092765D7-5F0D-1566-F3F8-D938BC59E91C.xml new file mode 100644 index 0000000..5dfcff3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/092765D7-5F0D-1566-F3F8-D938BC59E91C.xml @@ -0,0 +1,129 @@ + + +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights +'N' + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +'N' + + + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-21 10:52:45 UTC +eRights + + + + +walloar +2022-03-18 10:16:53 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +6A025A49-CC8F-EF51-5C3A-A10F68CB2760 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/0A7F0271-CEE8-4992-401E-A5C035922D09.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/0A7F0271-CEE8-4992-401E-A5C035922D09.xml new file mode 100644 index 0000000..1f7a1e5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/0A7F0271-CEE8-4992-401E-A5C035922D09.xml @@ -0,0 +1,45 @@ + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2023-06-15 12:36:23 UTC +eRights + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +50ACDC26-166A-C148-F358-F1EEE35FC096 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/112EB801-5A61-424B-6FDE-47E8FC178C20.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/112EB801-5A61-424B-6FDE-47E8FC178C20.xml new file mode 100644 index 0000000..30b6743 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/112EB801-5A61-424B-6FDE-47E8FC178C20.xml @@ -0,0 +1,54 @@ + + +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +D112B145-22D0-BA5E-A42D-64E413DBFC65 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-29 16:59:57 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-29 16:59:57 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/14E143ED-1A36-9D69-DCCA-7028B010A30D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/14E143ED-1A36-9D69-DCCA-7028B010A30D.xml new file mode 100644 index 0000000..a2d9a65 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/14E143ED-1A36-9D69-DCCA-7028B010A30D.xml @@ -0,0 +1,92 @@ + + +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + + +walloar +2022-03-18 10:16:53 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +B3504A2C-2413-5D52-0EB6-8E8BDF909050 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/1FCCE7FF-BB87-3F2A-3BE1-0082C6BDBB15.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/1FCCE7FF-BB87-3F2A-3BE1-0082C6BDBB15.xml new file mode 100644 index 0000000..56b089c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/1FCCE7FF-BB87-3F2A-3BE1-0082C6BDBB15.xml @@ -0,0 +1,49 @@ + + +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +631D3B79-A858-A427-4783-C5BC1FCB438B +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-29 16:59:57 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-29 16:59:57 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/2044859D-01D1-4056-68DF-2AAEF772F457.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/2044859D-01D1-4056-68DF-2AAEF772F457.xml new file mode 100644 index 0000000..7530ba6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/2044859D-01D1-4056-68DF-2AAEF772F457.xml @@ -0,0 +1,79 @@ + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +AF62DB0C-C7A6-A778-CC2B-92C7C8766E17 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/20DB5A12-2FFB-0087-DA16-042C48231E7E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/20DB5A12-2FFB-0087-DA16-042C48231E7E.xml new file mode 100644 index 0000000..8b8e43b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/20DB5A12-2FFB-0087-DA16-042C48231E7E.xml @@ -0,0 +1,72 @@ + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2022-03-18 10:16:54 UTC +eRights +NOCACHE +8192 +DATA +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF +73306B9B-9C8C-8408-4A5C-38F43DEB5179 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/256F6004-E1B6-FD26-9F27-95B58D979301.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/256F6004-E1B6-FD26-9F27-95B58D979301.xml new file mode 100644 index 0000000..7e934a9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/256F6004-E1B6-FD26-9F27-95B58D979301.xml @@ -0,0 +1,134 @@ + + +tapiafo +2021-03-08 11:47:37 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +tapiafo +2021-03-08 13:05:10 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +tapiafo +2021-03-08 11:47:37 UTC +eRights + + +tapiafo +2021-03-08 11:47:37 UTC +eRights + + +tapiafo +2021-03-08 11:47:37 UTC +eRights +'N' + + +tapiafo +2021-03-08 11:47:37 UTC +eRights +'N' + + +tapiafo +2021-03-08 13:04:57 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +tapiafo +2021-03-08 13:04:32 UTC +eRights + + +tapiafo +2021-03-08 13:04:17 UTC +eRights + + +tapiafo +2021-03-08 14:48:42 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +tapiafo +2021-03-08 11:47:37 UTC +eRights + + +tapiafo +2021-03-08 13:03:35 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + + + +walloar +2022-03-18 10:08:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +tapiafo +2021-03-08 13:08:17 UTC +eRights + + + + +tapiafo +2021-03-08 13:07:10 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +3846D193-34B7-2A7C-1E4D-0302A2876454 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/27744AC2-14D9-8DD9-513A-8FBB9C86242C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/27744AC2-14D9-8DD9-513A-8FBB9C86242C.xml new file mode 100644 index 0000000..c431e48 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/27744AC2-14D9-8DD9-513A-8FBB9C86242C.xml @@ -0,0 +1,438 @@ + + +walloar +2022-10-25 12:45:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-02-07 10:46:14 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-02-07 10:46:14 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-11-11 07:44:41 UTC +eRights + + +walloar +2022-11-11 07:44:41 UTC +eRights + + +walloar +2022-11-11 07:44:41 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-02-07 10:46:14 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-02-07 10:46:14 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-02-07 10:46:14 UTC +eRights + + +walloar +2023-02-07 10:46:14 UTC +eRights + + +walloar +2023-02-07 10:46:14 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-02-07 10:46:14 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-11-11 07:44:41 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2022-10-25 12:45:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2022-10-25 12:45:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2023-02-07 10:46:14 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-10-25 12:45:50 UTC +eRights + + + + +walloar +2022-10-25 12:45:50 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +BF35D0E5-AC24-16BC-DC9A-70B4F743E371 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +89E01289-9E6F-5DC8-6561-304E9BE632A3 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + +walloar +2023-02-07 10:46:15 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +E9A9FE77-D1E5-B87F-D71A-9460F8562314 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/27A31F13-BF5F-77D7-7905-39816D021F06.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/27A31F13-BF5F-77D7-7905-39816D021F06.xml new file mode 100644 index 0000000..b68433a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/27A31F13-BF5F-77D7-7905-39816D021F06.xml @@ -0,0 +1,44 @@ + + +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +A72B2C95-42B8-C581-942E-299DAFCAB298 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/2F063DE8-9633-D3F0-FEE0-BCA2DD728EFA.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/2F063DE8-9633-D3F0-FEE0-BCA2DD728EFA.xml new file mode 100644 index 0000000..2a9b41f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/2F063DE8-9633-D3F0-FEE0-BCA2DD728EFA.xml @@ -0,0 +1,142 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/358124EE-7B8A-71EB-3760-315D51B0C018.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/358124EE-7B8A-71EB-3760-315D51B0C018.xml new file mode 100644 index 0000000..2e0fe97 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/358124EE-7B8A-71EB-3760-315D51B0C018.xml @@ -0,0 +1,340 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +'N' + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +'Y' + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +sysdate + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/381C450C-6E3F-04C9-97FD-A696F5A96E49.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/381C450C-6E3F-04C9-97FD-A696F5A96E49.xml new file mode 100644 index 0000000..7d03d7f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/381C450C-6E3F-04C9-97FD-A696F5A96E49.xml @@ -0,0 +1,194 @@ + + +walloar +2022-10-24 12:24:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +CF05993A-787C-F324-BC8E-D408C125BA02 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + +walloar +2022-10-24 12:24:52 UTC +eRights + + + + +walloar +2022-10-24 12:24:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/4829A425-43A3-E767-FED5-0ED5D2B3F7DD.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/4829A425-43A3-E767-FED5-0ED5D2B3F7DD.xml new file mode 100644 index 0000000..f099c24 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/4829A425-43A3-E767-FED5-0ED5D2B3F7DD.xml @@ -0,0 +1,114 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +'N' + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +'N' + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/4CB74767-3856-9458-45EB-D45BEC46CD86.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/4CB74767-3856-9458-45EB-D45BEC46CD86.xml new file mode 100644 index 0000000..6a45637 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/4CB74767-3856-9458-45EB-D45BEC46CD86.xml @@ -0,0 +1,390 @@ + + +tapiafo +2021-03-08 11:26:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +tapiafo +2021-03-08 11:44:53 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +tapiafo +2021-03-08 11:44:53 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +tapiafo +2021-03-08 11:44:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights +'N' + + +tapiafo +2021-03-08 11:44:53 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +tapiafo +2021-03-08 11:44:53 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +tapiafo +2021-03-08 11:44:53 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +'Y' + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +tapiafo +2021-03-08 11:44:53 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +tapiafo +2021-03-08 11:44:53 UTC +eRights + + + + +walloar +2022-08-26 15:21:56 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2022-03-18 10:08:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + + + +tapiafo +2021-03-08 11:44:53 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +97E48458-0B06-3C9B-6363-0888C075BC1A +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + + +walloar +2022-08-26 15:21:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +03A7A321-BC60-9617-27CC-3FDECFDF8ACD +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/4F6D4909-B7A2-850D-1372-945FC7F1841D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/4F6D4909-B7A2-850D-1372-945FC7F1841D.xml new file mode 100644 index 0000000..f584554 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/4F6D4909-B7A2-850D-1372-945FC7F1841D.xml @@ -0,0 +1,159 @@ + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights +'N' + + +walloar +2023-06-15 12:36:23 UTC +eRights +'N' + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights +'Y' + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2023-06-15 12:36:24 UTC +eRights + + +walloar +2023-06-15 12:36:24 UTC +eRights + + +walloar +2023-06-15 12:36:24 UTC +eRights + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +09E85F33-14D2-09FC-FC20-614E700D9106 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/5321333C-E5DB-62F6-A060-539B31AAA70C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/5321333C-E5DB-62F6-A060-539B31AAA70C.xml new file mode 100644 index 0000000..c07b824 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/5321333C-E5DB-62F6-A060-539B31AAA70C.xml @@ -0,0 +1,34 @@ + + +walloar +2022-07-19 13:44:12 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +2B9B9B9D-4A36-B308-1788-906FF5C19CCD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/5B13807A-AFFE-6753-D3BB-705C43262C49.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/5B13807A-AFFE-6753-D3BB-705C43262C49.xml new file mode 100644 index 0000000..d7e5d5d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/5B13807A-AFFE-6753-D3BB-705C43262C49.xml @@ -0,0 +1,89 @@ + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8448AE91-6E02-D3A7-E563-3ADFCD981593 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/5DC3D7FC-DD31-7EC0-A5A0-BA0649F66204.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/5DC3D7FC-DD31-7EC0-A5A0-BA0649F66204.xml new file mode 100644 index 0000000..4da67f8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/5DC3D7FC-DD31-7EC0-A5A0-BA0649F66204.xml @@ -0,0 +1,60 @@ + + +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-18 10:16:53 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +63944FEF-3A29-3F4F-F929-AA0F9B0EFD23 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/5FD5A5A2-6E38-1BB0-72AE-6954456CCF2B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/5FD5A5A2-6E38-1BB0-72AE-6954456CCF2B.xml new file mode 100644 index 0000000..5dd4278 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/5FD5A5A2-6E38-1BB0-72AE-6954456CCF2B.xml @@ -0,0 +1,484 @@ + + +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +BC61B9FD-52A0-9D62-65FE-5CDE110CB5EE +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + + +walloar +2022-10-20 12:39:02 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/60BFABE3-CD82-61A0-F060-7010BF00DC8C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/60BFABE3-CD82-61A0-F060-7010BF00DC8C.xml new file mode 100644 index 0000000..89c9cd7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/60BFABE3-CD82-61A0-F060-7010BF00DC8C.xml @@ -0,0 +1,117 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +'N' + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +'N' + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +'N' + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +'N' + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +'N' + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml new file mode 100644 index 0000000..9369543 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml @@ -0,0 +1,49 @@ + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0 +09F46DD0-1532-2503-78FF-D279FEB4D548 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/6930F4F6-930D-3D61-0AB8-0AE52A0AB456.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/6930F4F6-930D-3D61-0AB8-0AE52A0AB456.xml new file mode 100644 index 0000000..9824e02 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/6930F4F6-930D-3D61-0AB8-0AE52A0AB456.xml @@ -0,0 +1,131 @@ + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +6E890A64-1E63-DEBE-A9DF-A5016C617601 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +EC80A7B6-4092-3F23-8BF6-EC71F6D7C5CE +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/6C9A90BF-8244-128F-02CF-CA10CB0CE933.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/6C9A90BF-8244-128F-02CF-CA10CB0CE933.xml new file mode 100644 index 0000000..d096d61 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/6C9A90BF-8244-128F-02CF-CA10CB0CE933.xml @@ -0,0 +1,45 @@ + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2023-06-15 12:36:23 UTC +eRights + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +561A1EDC-2ED8-09E5-8433-FE7AC445AD0C +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/6D9267FB-BED2-56EB-26B5-6FEF3617336B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/6D9267FB-BED2-56EB-26B5-6FEF3617336B.xml new file mode 100644 index 0000000..3634f65 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/6D9267FB-BED2-56EB-26B5-6FEF3617336B.xml @@ -0,0 +1,128 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +'N' + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/7199A743-9A1F-008C-79EE-C9A1A8CAB95B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/7199A743-9A1F-008C-79EE-C9A1A8CAB95B.xml new file mode 100644 index 0000000..c2fd8c1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/7199A743-9A1F-008C-79EE-C9A1A8CAB95B.xml @@ -0,0 +1,180 @@ + + +walloar +2022-10-25 12:45:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-11-11 07:44:41 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights +'Y' + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-11-11 07:44:41 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights +'HR' + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + + + +walloar +2023-02-07 10:46:15 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2023-02-07 10:46:15 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2023-02-07 10:46:15 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2023-02-07 10:46:15 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2023-02-07 10:46:15 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2023-02-07 10:46:15 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2022-10-25 12:45:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-10-25 12:45:50 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +DA9A13F4-1990-F700-111F-49F2D6B272B4 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/71F3D6E7-C4F0-CB7E-C63E-AF6A800513F8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/71F3D6E7-C4F0-CB7E-C63E-AF6A800513F8.xml new file mode 100644 index 0000000..0138fd4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/71F3D6E7-C4F0-CB7E-C63E-AF6A800513F8.xml @@ -0,0 +1,86 @@ + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights +sysdate + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-18 10:16:54 UTC +eRights +NOCACHE +8192 +DATA +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF +62C9B98D-05A6-C222-6EAD-9608AFF84991 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/9261BA96-4D23-B7A1-91C7-8E9B9DAFB55A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/9261BA96-4D23-B7A1-91C7-8E9B9DAFB55A.xml new file mode 100644 index 0000000..6344aab --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/9261BA96-4D23-B7A1-91C7-8E9B9DAFB55A.xml @@ -0,0 +1,92 @@ + + +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-21 10:52:45 UTC +eRights + + + + +walloar +2022-03-18 10:16:53 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +8B74240B-5F59-26F1-DE23-07A92D7E37B3 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/93F5C5A3-DE53-42A0-BA83-FCC5F97847CD.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/93F5C5A3-DE53-42A0-BA83-FCC5F97847CD.xml new file mode 100644 index 0000000..a32db6a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/93F5C5A3-DE53-42A0-BA83-FCC5F97847CD.xml @@ -0,0 +1,59 @@ + + +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +30F4B980-B459-912A-C7E3-3CAA8534B947 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + + +walloar +2022-08-26 15:21:56 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/A0237D1D-4C92-33A4-8FCD-3266224A0D02.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/A0237D1D-4C92-33A4-8FCD-3266224A0D02.xml new file mode 100644 index 0000000..7bd610c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/A0237D1D-4C92-33A4-8FCD-3266224A0D02.xml @@ -0,0 +1,216 @@ + + +walloar +2022-10-25 12:45:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-02-07 10:46:15 UTC +eRights +'N' + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-02-07 10:46:15 UTC +eRights +'N' + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-02-07 10:46:15 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights +'OUTGOING' + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-11-11 07:44:41 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-11-11 07:44:41 UTC +eRights + + + + +walloar +2022-10-25 12:45:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2022-10-25 12:45:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2022-10-25 12:45:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-10-25 12:45:50 UTC +eRights + + + + +walloar +2022-10-25 12:45:50 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +FF37C525-6449-1C6E-6566-B11157200DAE +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/ABE48C91-801D-CAA0-4154-074A7FCE333A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/ABE48C91-801D-CAA0-4154-074A7FCE333A.xml new file mode 100644 index 0000000..e71bf62 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/ABE48C91-801D-CAA0-4154-074A7FCE333A.xml @@ -0,0 +1,98 @@ + + +walloar +2023-02-07 10:46:14 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2023-02-07 10:46:15 UTC +eRights + + +walloar +2023-02-07 10:46:15 UTC +eRights + + +walloar +2023-02-07 10:46:15 UTC +eRights + + +walloar +2023-02-07 10:46:15 UTC +eRights + + +walloar +2023-02-07 10:46:15 UTC +eRights + + +walloar +2023-02-07 10:46:15 UTC +eRights + + + + +walloar +2023-02-07 10:46:15 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2023-02-07 10:46:15 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2023-02-07 11:01:21 UTC +eRights + + + + +walloar +2023-02-07 10:46:15 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +09C3DB75-59AB-F89E-A0AA-2FF13028FE1E +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +E1D70BC7-0C02-9899-E2C7-21436EF7C631 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml new file mode 100644 index 0000000..34848f5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml @@ -0,0 +1,186 @@ + + +walloar +2021-05-11 06:48:47 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights +'N' + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-06-09 07:13:25 UTC +eRights +'EUR' + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-06-09 07:13:25 UTC +eRights +1 + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-06-09 07:13:25 UTC +eRights +sysdate + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-05-11 06:48:47 UTC +eRights + + +walloar +2021-05-11 06:48:47 UTC +eRights + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +E08C3509-8EEB-FBA4-EB88-03F75E7D3726 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/B702C10C-3481-C7D5-B5D0-76A3CC83D977.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/B702C10C-3481-C7D5-B5D0-76A3CC83D977.xml new file mode 100644 index 0000000..d7882b1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/B702C10C-3481-C7D5-B5D0-76A3CC83D977.xml @@ -0,0 +1,72 @@ + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2022-03-18 10:16:54 UTC +eRights +NOCACHE +8192 +DATA +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF +5D6F9C10-51D7-695A-EC01-1C91948142A1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/BA98FDD9-EBA1-75B7-B0B8-07331547FFD9.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/BA98FDD9-EBA1-75B7-B0B8-07331547FFD9.xml new file mode 100644 index 0000000..b0f1a00 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/BA98FDD9-EBA1-75B7-B0B8-07331547FFD9.xml @@ -0,0 +1,72 @@ + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2022-03-18 10:16:54 UTC +eRights +NOCACHE +8192 +DATA +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF +D5F0C453-14B9-1810-BA4B-E638D5483F52 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/BF3D1DDA-FEB9-8973-D163-967E1893F499.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/BF3D1DDA-FEB9-8973-D163-967E1893F499.xml new file mode 100644 index 0000000..8571c2b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/BF3D1DDA-FEB9-8973-D163-967E1893F499.xml @@ -0,0 +1,179 @@ + + +walloar +2022-10-25 12:45:50 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-11-11 07:44:41 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-11-11 07:44:41 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-02-07 10:46:16 UTC +eRights +'N' + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-02-07 10:46:16 UTC +eRights +'N' + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2023-02-07 10:46:16 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + +walloar +2022-10-25 12:45:50 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/C27D5F03-BA94-6E2D-6A10-9051D65D413A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/C27D5F03-BA94-6E2D-6A10-9051D65D413A.xml new file mode 100644 index 0000000..ddcdfb7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/C27D5F03-BA94-6E2D-6A10-9051D65D413A.xml @@ -0,0 +1,105 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-10-07 11:48:49 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-18 10:16:53 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +E693E907-20E1-94F2-3976-1EE9FB0DFD4D +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/C39E21B9-DBE7-89DE-7DCA-238436410710.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/C39E21B9-DBE7-89DE-7DCA-238436410710.xml new file mode 100644 index 0000000..f05b61c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/C39E21B9-DBE7-89DE-7DCA-238436410710.xml @@ -0,0 +1,117 @@ + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/C56C4357-7399-B2C2-CB85-59F7B0CD0D52.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/C56C4357-7399-B2C2-CB85-59F7B0CD0D52.xml new file mode 100644 index 0000000..049a1f2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/C56C4357-7399-B2C2-CB85-59F7B0CD0D52.xml @@ -0,0 +1,107 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-21 10:52:45 UTC +eRights + + + + +walloar +2022-03-18 10:16:53 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +C6827789-D3C8-3941-A251-8E960EDE1927 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/D70D0F65-8940-FBF1-109C-6BD24A00F1D6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/D70D0F65-8940-FBF1-109C-6BD24A00F1D6.xml new file mode 100644 index 0000000..85d778c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/D70D0F65-8940-FBF1-109C-6BD24A00F1D6.xml @@ -0,0 +1,242 @@ + + +walloar +2022-07-19 13:44:13 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights +'N' + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights +'N' + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights +'N' + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights +'N' + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + + + +walloar +2022-07-19 13:44:13 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-07-19 13:44:13 UTC +eRights +NOCACHE +8192 +RESPONSE_PR_ECONOMY +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + +walloar +2022-07-19 13:44:13 UTC +eRights +NOCACHE +8192 +RESPONSE_BUSINESS +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2022-07-19 13:44:13 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +17539D03-645B-1CE9-51C8-FB48166651AC +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml new file mode 100644 index 0000000..c4c3e17 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml @@ -0,0 +1,95 @@ + + +tapiafo +2021-03-08 13:12:31 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +tapiafo +2021-03-08 13:12:32 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +3503D1AF-BFBC-40DF-B31A-5A5ECA9B4674 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/DAE0958C-8972-F2B2-33E3-0E9A4C5A433D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/DAE0958C-8972-F2B2-33E3-0E9A4C5A433D.xml new file mode 100644 index 0000000..96ca327 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/DAE0958C-8972-F2B2-33E3-0E9A4C5A433D.xml @@ -0,0 +1,109 @@ + + +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +C45D5F1A-DF40-788B-BB2E-3265211BB1C2 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/DF3662EB-AFE0-2FE2-A5BC-2FB6362E7473.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/DF3662EB-AFE0-2FE2-A5BC-2FB6362E7473.xml new file mode 100644 index 0000000..407db41 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/DF3662EB-AFE0-2FE2-A5BC-2FB6362E7473.xml @@ -0,0 +1,194 @@ + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +A1DDF40D-0252-710B-98E6-6215CC4DB3A7 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/E3EA6112-D9BF-D73D-9CF3-524E82810B2D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/E3EA6112-D9BF-D73D-9CF3-524E82810B2D.xml new file mode 100644 index 0000000..7dee206 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/E3EA6112-D9BF-D73D-9CF3-524E82810B2D.xml @@ -0,0 +1,187 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + + +walloar +2022-03-21 11:19:55 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-21 10:52:45 UTC +eRights + + + + +walloar +2022-03-21 11:19:55 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +E4614AB0-D9E6-44E2-980E-4FDDE023A89B +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/E5858C90-56D5-FBA1-B0DE-9A80F3AFBC32.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/E5858C90-56D5-FBA1-B0DE-9A80F3AFBC32.xml new file mode 100644 index 0000000..afa0bf3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/E5858C90-56D5-FBA1-B0DE-9A80F3AFBC32.xml @@ -0,0 +1,87 @@ + + +walloar +2021-04-20 13:59:18 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-04-20 14:02:38 UTC +eRights + + +walloar +2021-04-20 14:02:38 UTC +eRights + + +walloar +2021-04-20 14:02:38 UTC +eRights + + +walloar +2021-04-20 14:02:38 UTC +eRights + + +walloar +2021-04-20 14:03:31 UTC +eRights + + +walloar +2021-04-20 14:03:31 UTC +eRights + + +walloar +2021-04-20 14:02:38 UTC +eRights + + +walloar +2021-04-20 14:02:38 UTC +eRights + + + + +walloar +2022-03-18 10:08:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-04-20 14:17:11 UTC +eRights + + + + +walloar +2021-04-20 14:02:38 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +E00E5DFE-594D-31D5-15CA-F5B7BF38FFC0 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml new file mode 100644 index 0000000..d0a36b9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml @@ -0,0 +1,95 @@ + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + +tapiafo +2021-03-08 13:14:09 UTC +eRights + + + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-18 10:08:51 UTC +eRights + + + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF +0EC1156A-E08C-232A-8247-BAB3C82F4505 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/EA9E31FF-E810-F570-9354-8B2CA9473801.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/EA9E31FF-E810-F570-9354-8B2CA9473801.xml new file mode 100644 index 0000000..ea99f07 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/EA9E31FF-E810-F570-9354-8B2CA9473801.xml @@ -0,0 +1,49 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/EACBF810-0296-003A-41DE-CDC423F08CD5.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/EACBF810-0296-003A-41DE-CDC423F08CD5.xml new file mode 100644 index 0000000..c1ebb47 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/EACBF810-0296-003A-41DE-CDC423F08CD5.xml @@ -0,0 +1,161 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +sysdate + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +'EUR' + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +1 + + +walloar +2022-03-18 10:16:53 UTC +eRights +'N' + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/ECD40BBB-C4B8-D2AF-4885-7002088CC71D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/ECD40BBB-C4B8-D2AF-4885-7002088CC71D.xml new file mode 100644 index 0000000..70bb46a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/ECD40BBB-C4B8-D2AF-4885-7002088CC71D.xml @@ -0,0 +1,69 @@ + + +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +9D36BB70-CD6A-8429-66D9-6A6893B18CBE +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/ED8B6EA9-522E-6461-94D2-0D394AEF66FE.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/ED8B6EA9-522E-6461-94D2-0D394AEF66FE.xml new file mode 100644 index 0000000..6007b4d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/ED8B6EA9-522E-6461-94D2-0D394AEF66FE.xml @@ -0,0 +1,39 @@ + + +walloar +2022-03-18 10:16:52 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +true +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +2993494C-15BC-FF45-EAF4-D2F92DA941DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/ED8CCC48-0CF3-94C9-3427-6087747DC49F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/ED8CCC48-0CF3-94C9-3427-6087747DC49F.xml new file mode 100644 index 0000000..542d6dc --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/ED8CCC48-0CF3-94C9-3427-6087747DC49F.xml @@ -0,0 +1,137 @@ + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2023-06-15 12:36:23 UTC +eRights +'N' + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights +'Y' + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights +'N' + + +walloar +2023-06-15 12:36:23 UTC +eRights + + +walloar +2023-06-15 12:36:23 UTC +eRights + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2023-06-15 12:36:24 UTC +eRights + + + + +walloar +2023-06-15 12:36:23 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +40479790-E70B-7338-F12B-827F5CBF3179 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F0656E91-B102-E910-93C9-3FADF5583284.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F0656E91-B102-E910-93C9-3FADF5583284.xml new file mode 100644 index 0000000..48a6e33 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F0656E91-B102-E910-93C9-3FADF5583284.xml @@ -0,0 +1,85 @@ + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + +walloar +2021-04-26 13:29:43 UTC +eRights + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF +FAE91E4A-E0D3-3611-0059-631C70983D6A +002E8510-7075-EE24-0F2C-35ED80E2E3AC +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml new file mode 100644 index 0000000..75637c7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml @@ -0,0 +1,70 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +1C15B447-9620-D764-0450-8481DDD84044 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F1A8F95B-9A82-95A2-5E7A-31E348399696.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F1A8F95B-9A82-95A2-5E7A-31E348399696.xml new file mode 100644 index 0000000..24a4f5a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F1A8F95B-9A82-95A2-5E7A-31E348399696.xml @@ -0,0 +1,55 @@ + + +walloar +2022-07-19 13:44:13 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + + + +walloar +2022-07-19 13:44:13 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-07-19 13:44:13 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +6CA034E6-B32C-791F-B003-12916D6D5842 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F28AEFDE-0804-3C83-F214-6330BE84607B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F28AEFDE-0804-3C83-F214-6330BE84607B.xml new file mode 100644 index 0000000..25cef24 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F28AEFDE-0804-3C83-F214-6330BE84607B.xml @@ -0,0 +1,115 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2022-03-18 10:16:54 UTC +eRights +NOCACHE +8192 +BODY +NO +KEEP_DUPLICATES +YES +8F9A9085-AC19-5D96-C430-44185E59D6AF +SECUREFILE + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +82FB7C2B-FBB4-3368-B1D4-24546DAA9DFC +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F3764DB4-0649-A94A-7497-92FDAEA69888.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F3764DB4-0649-A94A-7497-92FDAEA69888.xml new file mode 100644 index 0000000..c453333 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F3764DB4-0649-A94A-7497-92FDAEA69888.xml @@ -0,0 +1,88 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +4FD03845-42F8-248F-A9EB-E821AA5CB933 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + +walloar +2021-03-02 08:04:46 UTC +eRights + + + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:48 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +94AF4698-DE71-5271-9795-EA3A809966C2 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +8F9A9085-AC19-5D96-C430-44185E59D6AF +812D15CA-03EC-AB51-BD8F-597A374FBBF4 +E4BFAFBC-A693-3751-298F-2DF9E4E67EDD +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F6108759-A9AE-8679-03BA-D124DEC368E8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F6108759-A9AE-8679-03BA-D124DEC368E8.xml new file mode 100644 index 0000000..1ea6314 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F6108759-A9AE-8679-03BA-D124DEC368E8.xml @@ -0,0 +1,98 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights +'Y' + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +90C0C849-CB1C-309F-13E4-C975AE5C3AA4 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F7550F97-470F-3E11-C6EE-445518E195D2.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F7550F97-470F-3E11-C6EE-445518E195D2.xml new file mode 100644 index 0000000..9bfba73 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/F7550F97-470F-3E11-C6EE-445518E195D2.xml @@ -0,0 +1,104 @@ + + +walloar +2021-04-20 14:14:07 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F2B0ACCC-3DC7-FF2D-930B-798C48ED83E0 +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-03-18 10:08:51 UTC +eRights +'N' + + +walloar +2021-04-20 14:16:49 UTC +eRights + + +walloar +2021-04-20 14:16:49 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2021-04-20 14:16:49 UTC +eRights + + +walloar +2021-04-20 14:16:49 UTC +eRights + + +walloar +2021-04-20 14:16:49 UTC +eRights + + +walloar +2021-04-20 14:16:49 UTC +eRights + + +walloar +2021-04-20 14:16:49 UTC +eRights +'N' + + +walloar +2021-04-20 14:16:49 UTC +eRights + + +walloar +2021-04-20 14:16:49 UTC +eRights + + + + +walloar +2022-03-18 10:08:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-04-20 14:17:49 UTC +eRights + + + + +walloar +2021-04-20 14:16:49 UTC +eRights +002E8510-7075-EE24-0F2C-35ED80E2E3AC +8F9A9085-AC19-5D96-C430-44185E59D6AF +3A4F1E17-BA54-A5E1-4E85-6A994F7E5580 +002E8510-7075-EE24-0F2C-35ED80E2E3AC +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml new file mode 100644 index 0000000..f67b7e2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml @@ -0,0 +1,129 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights +'Y' + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights +'HR' + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +0A6C4ABC-18B6-BE8B-765D-CBDFAED4F4A2 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/FF74A656-1D74-CA01-A02B-65A0579DD208.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/FF74A656-1D74-CA01-A02B-65A0579DD208.xml new file mode 100644 index 0000000..0b8bd68 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Table/seg_1/FF74A656-1D74-CA01-A02B-65A0579DD208.xml @@ -0,0 +1,404 @@ + + +walloar +2021-03-02 08:04:46 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +YES +DISABLE +F9B19514-BA38-E940-C849-7549649319DD +8F9A9085-AC19-5D96-C430-44185E59D6AF +false +oracle_loader + +NO + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:08:51 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights +sysdate + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 10:16:41 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2022-03-24 12:37:46 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-03-18 10:16:53 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2022-07-19 13:44:13 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + +walloar +2021-03-02 08:04:47 UTC +eRights + + + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + +walloar +2021-03-02 08:04:51 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + + +walloar +2021-03-02 08:04:59 UTC +eRights + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +901D2539-B17F-73A0-B4B8-FDE568F24CF0 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + + +walloar +2021-03-02 08:04:56 UTC +eRights +4B526395-31D4-E40B-8788-FF7D69FFECF3 +8F9A9085-AC19-5D96-C430-44185E59D6AF +67CB9B87-2E77-7A40-705D-06C21CBEC1C0 +4B526395-31D4-E40B-8788-FF7D69FFECF3 +SORTED +BY INDEX NAME + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/TmpTSpace/seg_0/9F2F534F-DEBB-2196-2413-F708E2E40B16.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/TmpTSpace/seg_0/9F2F534F-DEBB-2196-2413-F708E2E40B16.xml new file mode 100644 index 0000000..6e4a756 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/TmpTSpace/seg_0/9F2F534F-DEBB-2196-2413-F708E2E40B16.xml @@ -0,0 +1,24 @@ + + +ERIGHTS-TEST +TEMP +walloar +2021-03-02 08:04:42 UTC +eRights +1024 +SMALLFILE + + +ERIGHTS-TEST ++DATA2/BAA111AB/98662A4FA9BEF4B4E0531F2F850A7B73/TEMPFILE/temp.2264.1063097851 +walloar +2021-03-02 08:04:42 UTC +eRights +ON ++DATA2/BAA111AB/98662A4FA9BEF4B4E0531F2F850A7B73/TEMPFILE/temp.2264.1063097851 +3072000 +51200 +1638400 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/12501BB5-9F7F-7CD0-E262-C84C5240EF5B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/12501BB5-9F7F-7CD0-E262-C84C5240EF5B.xml new file mode 100644 index 0000000..2353364 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/12501BB5-9F7F-7CD0-E262-C84C5240EF5B.xml @@ -0,0 +1,26 @@ + + +ERIGHTS-TEST +ERIGHTS +TRG_BRIU_DECLARATION +walloar +2022-03-18 10:13:48 UTC +eRights +INSERT, UPDATE + +BEFORE +93D34AFD-73F1-CEF8-BE48-029A742C8CBF +CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8
    +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/13E9D5B4-A4FE-C6A3-D2E2-AC08A3026A83.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/13E9D5B4-A4FE-C6A3-D2E2-AC08A3026A83.xml new file mode 100644 index 0000000..f6dad47 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/13E9D5B4-A4FE-C6A3-D2E2-AC08A3026A83.xml @@ -0,0 +1,26 @@ + + +ERIGHTS-TEST +ERIGHTS +TRG_BRIU_REQ_PERS_ATTACH +walloar +2022-03-18 10:13:48 UTC +eRights +INSERT, UPDATE + +BEFORE +93D34AFD-73F1-CEF8-BE48-029A742C8CBF +E8F34643-58BB-B20C-5C30-7B8A6EBEC00E
    +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/3BC31D47-19E1-71F9-0736-A8FC158A5FEB.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/3BC31D47-19E1-71F9-0736-A8FC158A5FEB.xml new file mode 100644 index 0000000..56cd624 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/3BC31D47-19E1-71F9-0736-A8FC158A5FEB.xml @@ -0,0 +1,102 @@ + + +ERIGHTS-TEST +ERIGHTS +IOFU_V_AIRPORTS +walloar +2023-06-15 12:32:10 UTC +eRights +UPDATE + +INSTEAD OF +93D34AFD-73F1-CEF8-BE48-029A742C8CBF +UPDATEDROW +OLDROW +AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/7A15164B-15A9-EC02-4AB8-9097D3A79899.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/7A15164B-15A9-EC02-4AB8-9097D3A79899.xml new file mode 100644 index 0000000..6baffff --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/7A15164B-15A9-EC02-4AB8-9097D3A79899.xml @@ -0,0 +1,26 @@ + + +ERIGHTS-TEST +ERIGHTS +TRG_BRIU_REQUEST_PERSONS +walloar +2022-03-18 10:13:48 UTC +eRights +INSERT, UPDATE + +BEFORE +93D34AFD-73F1-CEF8-BE48-029A742C8CBF +256F6004-E1B6-FD26-9F27-95B58D979301
    +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/8EC91623-9935-FC9E-C3EF-28FAFE0ABFAF.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/8EC91623-9935-FC9E-C3EF-28FAFE0ABFAF.xml new file mode 100644 index 0000000..daf591a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/8EC91623-9935-FC9E-C3EF-28FAFE0ABFAF.xml @@ -0,0 +1,62 @@ + + +ERIGHTS-TEST +ERIGHTS +IOFI_V_AIRPORTS +walloar +2023-06-15 12:32:10 UTC +eRights +INSERT + +INSTEAD OF +93D34AFD-73F1-CEF8-BE48-029A742C8CBF +NEWROW +AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/9FFDAC6A-6F80-3495-E620-C5A7062510D9.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/9FFDAC6A-6F80-3495-E620-C5A7062510D9.xml new file mode 100644 index 0000000..3ecbcf3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/9FFDAC6A-6F80-3495-E620-C5A7062510D9.xml @@ -0,0 +1,26 @@ + + +ERIGHTS-TEST +ERIGHTS +TRG_BRIU_DECL_PERS_ATTACH +walloar +2022-03-18 10:13:48 UTC +eRights +INSERT, UPDATE + +BEFORE +93D34AFD-73F1-CEF8-BE48-029A742C8CBF +D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8
    +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/C2B09E9C-ADD4-D5B5-ADF3-E021FDD0C59F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/C2B09E9C-ADD4-D5B5-ADF3-E021FDD0C59F.xml new file mode 100644 index 0000000..04ec909 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/C2B09E9C-ADD4-D5B5-ADF3-E021FDD0C59F.xml @@ -0,0 +1,26 @@ + + +ERIGHTS-TEST +ERIGHTS +TRG_BRIU_REQ_DET_ATTACH +walloar +2022-03-18 10:13:48 UTC +eRights +INSERT, UPDATE + +BEFORE +93D34AFD-73F1-CEF8-BE48-029A742C8CBF +14E143ED-1A36-9D69-DCCA-7028B010A30D
    +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/D0ACD8C4-8F3B-7636-0070-8BB491B21B0C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/D0ACD8C4-8F3B-7636-0070-8BB491B21B0C.xml new file mode 100644 index 0000000..e97088b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/D0ACD8C4-8F3B-7636-0070-8BB491B21B0C.xml @@ -0,0 +1,26 @@ + + +ERIGHTS-TEST +ERIGHTS +TRG_BRIU_REQUESTS +walloar +2022-03-18 10:13:48 UTC +eRights +INSERT, UPDATE + +BEFORE +93D34AFD-73F1-CEF8-BE48-029A742C8CBF +4CB74767-3856-9458-45EB-D45BEC46CD86
    +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/DE124C23-1B91-D6EA-8498-F618FD658F20.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/DE124C23-1B91-D6EA-8498-F618FD658F20.xml new file mode 100644 index 0000000..4f4ea7a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/DE124C23-1B91-D6EA-8498-F618FD658F20.xml @@ -0,0 +1,26 @@ + + +ERIGHTS-TEST +ERIGHTS +TRG_BRIU_REQUEST_DETAILS +walloar +2022-03-18 10:13:48 UTC +eRights +INSERT, UPDATE + +BEFORE +93D34AFD-73F1-CEF8-BE48-029A742C8CBF +B0343155-8655-39FE-4688-0AD2CB9B8528
    +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/F63562A9-8968-FCDE-AAFE-93FA575EB0E9.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/F63562A9-8968-FCDE-AAFE-93FA575EB0E9.xml new file mode 100644 index 0000000..429a511 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/Trigger/seg_0/F63562A9-8968-FCDE-AAFE-93FA575EB0E9.xml @@ -0,0 +1,26 @@ + + +ERIGHTS-TEST +ERIGHTS +TRG_BRIU_MOVEMENT_FILES +walloar +2022-03-18 10:13:48 UTC +eRights +INSERT, UPDATE + +BEFORE +93D34AFD-73F1-CEF8-BE48-029A742C8CBF +FF74A656-1D74-CA01-A02B-65A0579DD208
    +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/UTSpace/seg_0/93DEA34C-2A30-CCB2-B7D6-AD5135A6D332.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/UTSpace/seg_0/93DEA34C-2A30-CCB2-B7D6-AD5135A6D332.xml new file mode 100644 index 0000000..2527f5a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/UTSpace/seg_0/93DEA34C-2A30-CCB2-B7D6-AD5135A6D332.xml @@ -0,0 +1,22 @@ + + +ERIGHTS-TEST +UNDOTBS1 +walloar +2021-03-02 08:04:42 UTC +eRights +SMALLFILE + + +ERIGHTS-TEST ++DATA2/BAA111AB/98662A4FA9BEF4B4E0531F2F850A7B73/DATAFILE/undotbs1.2257.1063097829 +walloar +2021-03-02 08:04:43 UTC +eRights +ON ++DATA2/BAA111AB/98662A4FA9BEF4B4E0531F2F850A7B73/DATAFILE/undotbs1.2257.1063097829 +30720 +21749760 + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/93D34AFD-73F1-CEF8-BE48-029A742C8CBF.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/93D34AFD-73F1-CEF8-BE48-029A742C8CBF.xml new file mode 100644 index 0000000..70e7883 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/93D34AFD-73F1-CEF8-BE48-029A742C8CBF.xml @@ -0,0 +1,21 @@ + + +ERIGHTS-TEST +ERIGHTS +walloar +2021-03-02 08:04:43 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 +8F9A9085-AC19-5D96-C430-44185E59D6AF +CREATE JOB, DEBUG CONNECT SESSION, CREATE OPERATOR, CREATE DATABASE LINK, CREATE SEQUENCE, ALTER ANY SQL PROFILE, CREATE DIMENSION, QUERY REWRITE, CREATE INDEXTYPE, CREATE TYPE, CREATE SYNONYM, ADMINISTER SQL MANAGEMENT OBJECT, MANAGE SCHEDULER, CREATE VIEW, CREATE ROLE, CREATE CUBE DIMENSION, CREATE ANY SQL PROFILE, DROP ANY SQL PROFILE, DEBUG ANY PROCEDURE, ON COMMIT REFRESH, CREATE TRIGGER, CREATE PROCEDURE, CREATE TABLE, CREATE CLUSTER, CREATE CUBE, ADMINISTER SQL TUNING SET, ADVISOR, CREATE ANY CONTEXT, CREATE MATERIALIZED VIEW, CREATE SESSION +DEFAULT +9F2F534F-DEBB-2196-2413-F708E2E40B16 + + +walloar +2022-03-21 11:15:15 UTC +eRights +8F9A9085-AC19-5D96-C430-44185E59D6AF + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/MDSYS.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/MDSYS.xml new file mode 100644 index 0000000..5b3d5d4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/MDSYS.xml @@ -0,0 +1,46 @@ + + +ERIGHTS-TEST +MDSYS +walloar +2021-03-02 08:04:42 UTC +eRights +9557C744-26D8-BE94-83D6-79D37E0F2FD4 +true +true +INHERIT ANY PRIVILEGES, MANAGE SCHEDULER, CREATE JOB, CREATE SEQUENCE, DROP ANY TRIGGER, DROP PUBLIC SYNONYM, UNLIMITED TABLESPACE, FLASHBACK ANY TABLE, CREATE PROCEDURE, CREATE PUBLIC SYNONYM, CREATE VIEW, CREATE INDEXTYPE, CREATE LIBRARY, CREATE ANY TRIGGER, EXEMPT ACCESS POLICY, CREATE OPERATOR, CREATE TYPE, CREATE TRIGGER, DELETE ANY TABLE, ADMINISTER DATABASE TRIGGER, CREATE ANY SEQUENCE, CREATE TABLE, CREATE SESSION +DEFAULT +9F2F534F-DEBB-2196-2413-F708E2E40B16 + + +walloar +2022-03-21 11:15:15 UTC +eRights + + +walloar +2022-03-21 11:15:15 UTC +eRights + + +walloar +2022-03-21 11:19:55 UTC +eRights + + +walloar +2022-03-21 11:19:55 UTC +eRights + + +walloar +2023-02-07 11:01:21 UTC +eRights + + +walloar +2023-02-07 11:01:21 UTC +eRights + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/PUBLIC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/PUBLIC.xml new file mode 100644 index 0000000..4b69fef --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/User/seg_0/PUBLIC.xml @@ -0,0 +1,8 @@ + + +walloar +2021-03-02 08:04:42 UTC +eRights +true +true + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/052B85E4-C97A-108B-6AA7-2CF7AB03BB92.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/052B85E4-C97A-108B-6AA7-2CF7AB03BB92.xml new file mode 100644 index 0000000..7eaffb1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/052B85E4-C97A-108B-6AA7-2CF7AB03BB92.xml @@ -0,0 +1,7 @@ + + +walloar +2022-03-25 08:49:03 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/05F136AD-565B-1ABC-CAA8-4AF7580B2C30.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/05F136AD-565B-1ABC-CAA8-4AF7580B2C30.xml new file mode 100644 index 0000000..812b2f4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/05F136AD-565B-1ABC-CAA8-4AF7580B2C30.xml @@ -0,0 +1,7 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml new file mode 100644 index 0000000..d08d5db --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/2C60BB78-B255-8071-4A20-510AAFD7E3A1.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/2C60BB78-B255-8071-4A20-510AAFD7E3A1.xml new file mode 100644 index 0000000..107c998 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/2C60BB78-B255-8071-4A20-510AAFD7E3A1.xml @@ -0,0 +1,7 @@ + + +walloar +2023-06-15 12:36:24 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/3664AC16-5F3B-1F33-D9EF-320D101313DA.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/3664AC16-5F3B-1F33-D9EF-320D101313DA.xml new file mode 100644 index 0000000..d869805 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/3664AC16-5F3B-1F33-D9EF-320D101313DA.xml @@ -0,0 +1,7 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0.xml new file mode 100644 index 0000000..025da9e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0.xml @@ -0,0 +1,7 @@ + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/3DEFBF89-99D7-D0F9-5A23-489A366E5B1C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/3DEFBF89-99D7-D0F9-5A23-489A366E5B1C.xml new file mode 100644 index 0000000..50faa00 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/3DEFBF89-99D7-D0F9-5A23-489A366E5B1C.xml @@ -0,0 +1,7 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml new file mode 100644 index 0000000..5fc6b5c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/4D724735-98C6-B035-4504-647523E55607.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/4D724735-98C6-B035-4504-647523E55607.xml new file mode 100644 index 0000000..2c352fc --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/4D724735-98C6-B035-4504-647523E55607.xml @@ -0,0 +1,7 @@ + + +walloar +2023-06-15 12:36:24 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml new file mode 100644 index 0000000..2999df9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/5D8AD5F9-CD93-5995-F129-2F2BF9B53204.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/5D8AD5F9-CD93-5995-F129-2F2BF9B53204.xml new file mode 100644 index 0000000..ef3bfe8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/5D8AD5F9-CD93-5995-F129-2F2BF9B53204.xml @@ -0,0 +1,7 @@ + + +walloar +2023-02-07 11:01:21 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/63FAE3F3-D55B-B2FB-7AA3-E26233F1E38B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/63FAE3F3-D55B-B2FB-7AA3-E26233F1E38B.xml new file mode 100644 index 0000000..760bb44 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/63FAE3F3-D55B-B2FB-7AA3-E26233F1E38B.xml @@ -0,0 +1,7 @@ + + +walloar +2022-07-19 13:44:13 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml new file mode 100644 index 0000000..0ab596f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml new file mode 100644 index 0000000..b9c884e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/827B3DAB-CAF8-FA29-99D4-BA5EC650503C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/827B3DAB-CAF8-FA29-99D4-BA5EC650503C.xml new file mode 100644 index 0000000..4979abe --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/827B3DAB-CAF8-FA29-99D4-BA5EC650503C.xml @@ -0,0 +1,7 @@ + + +walloar +2022-10-25 07:18:24 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/92075C0F-B231-1CD6-B5C1-7984EDA16A6F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/92075C0F-B231-1CD6-B5C1-7984EDA16A6F.xml new file mode 100644 index 0000000..e2ffe8b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/92075C0F-B231-1CD6-B5C1-7984EDA16A6F.xml @@ -0,0 +1,7 @@ + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/97C3C237-BBD4-562C-AD94-BB4F5E032279.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/97C3C237-BBD4-562C-AD94-BB4F5E032279.xml new file mode 100644 index 0000000..54a459c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/97C3C237-BBD4-562C-AD94-BB4F5E032279.xml @@ -0,0 +1,7 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/9962EFF8-E095-5285-C405-790CD3C9DA64.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/9962EFF8-E095-5285-C405-790CD3C9DA64.xml new file mode 100644 index 0000000..ba27215 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/9962EFF8-E095-5285-C405-790CD3C9DA64.xml @@ -0,0 +1,7 @@ + + +walloar +2023-02-07 10:46:16 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml new file mode 100644 index 0000000..cab18d4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/9E80B3BA-1F34-A552-63EF-64DAB0E8D27B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/9E80B3BA-1F34-A552-63EF-64DAB0E8D27B.xml new file mode 100644 index 0000000..dd38cec --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/9E80B3BA-1F34-A552-63EF-64DAB0E8D27B.xml @@ -0,0 +1,7 @@ + + +walloar +2022-09-01 10:11:41 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/9F9E0F14-3C11-3DDF-EE47-74CEBC606D65.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/9F9E0F14-3C11-3DDF-EE47-74CEBC606D65.xml new file mode 100644 index 0000000..bfdc31a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/9F9E0F14-3C11-3DDF-EE47-74CEBC606D65.xml @@ -0,0 +1,7 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786.xml new file mode 100644 index 0000000..e081fd0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786.xml @@ -0,0 +1,7 @@ + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/B1E69B7C-ECDD-A2C7-613D-D493FECF40BB.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/B1E69B7C-ECDD-A2C7-613D-D493FECF40BB.xml new file mode 100644 index 0000000..7285c78 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/B1E69B7C-ECDD-A2C7-613D-D493FECF40BB.xml @@ -0,0 +1,7 @@ + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/B8213540-818B-9650-C338-E25E7B278920.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/B8213540-818B-9650-C338-E25E7B278920.xml new file mode 100644 index 0000000..35bf23a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/B8213540-818B-9650-C338-E25E7B278920.xml @@ -0,0 +1,7 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/B9602449-AFBF-67AC-B167-8DDF0C1AF1DD.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/B9602449-AFBF-67AC-B167-8DDF0C1AF1DD.xml new file mode 100644 index 0000000..ea811d7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/B9602449-AFBF-67AC-B167-8DDF0C1AF1DD.xml @@ -0,0 +1,7 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/C67C0F6E-16A2-E1BA-BCBF-FED5B6ED7D46.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/C67C0F6E-16A2-E1BA-BCBF-FED5B6ED7D46.xml new file mode 100644 index 0000000..b4d48de --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/C67C0F6E-16A2-E1BA-BCBF-FED5B6ED7D46.xml @@ -0,0 +1,7 @@ + + +walloar +2022-03-18 10:16:53 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml new file mode 100644 index 0000000..8843172 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/D19CE763-DA12-FCC3-0A30-00065C82DE9A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/D19CE763-DA12-FCC3-0A30-00065C82DE9A.xml new file mode 100644 index 0000000..d555ae4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/D19CE763-DA12-FCC3-0A30-00065C82DE9A.xml @@ -0,0 +1,7 @@ + + +walloar +2022-11-11 07:44:41 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml new file mode 100644 index 0000000..1f9ff76 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/E966871E-EF80-88A9-688A-22D077952C5F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/E966871E-EF80-88A9-688A-22D077952C5F.xml new file mode 100644 index 0000000..830e4d3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/E966871E-EF80-88A9-688A-22D077952C5F.xml @@ -0,0 +1,7 @@ + + +walloar +2023-06-15 12:36:23 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml new file mode 100644 index 0000000..2303220 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml new file mode 100644 index 0000000..f70e769 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/phys/79C73AAF-025EE81A2AFC/View/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights +ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1 + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/9557C744-26D8-BE94-83D6-79D37E0F2FD4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/9557C744-26D8-BE94-83D6-79D37E0F2FD4.xml new file mode 100644 index 0000000..2e41369 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/9557C744-26D8-BE94-83D6-79D37E0F2FD4.xml @@ -0,0 +1,7 @@ + + +walloar +2021-03-17 08:12:33 UTC +eRights +9A630A5E-C589-40EE-0257-1F2BFC827F5F + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/BDF5487C-1A21-3DDA-2741-BA73BF623D2A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/BDF5487C-1A21-3DDA-2741-BA73BF623D2A.xml new file mode 100644 index 0000000..8f6fda4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/BDF5487C-1A21-3DDA-2741-BA73BF623D2A.xml @@ -0,0 +1,6 @@ + + +tapiafo +2021-03-08 13:12:31 UTC +eRights + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1.xml new file mode 100644 index 0000000..9e9827e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/schema/seg_0/ED94D8B6-06B3-4B9A-9162-15BEF05EA5C1.xml @@ -0,0 +1,6 @@ + + +walloar +2021-03-02 08:04:44 UTC +eRights + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/313A2218-E5E9-61FA-44DF-9A2E4BE51966.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/313A2218-E5E9-61FA-44DF-9A2E4BE51966.xml new file mode 100644 index 0000000..9b1d56d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/313A2218-E5E9-61FA-44DF-9A2E4BE51966.xml @@ -0,0 +1,1328 @@ + + +walloar +walloar +2021-03-02 08:04:42 UTC +false +true +false +false +false +false +false +-1 +false +1 + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + +Imported from eTravel to implement the route price computation feature + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-2472729 +1 + + + + + + +false +-2472729 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-2472729 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-2472729 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-2472729 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-2472729 +1 + + + + + + +false +-2472729 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-2472729 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-2472729 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-2472729 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-2472729 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-2472729 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-2472729 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/3D5EB02E-D646-B778-C8FC-047CBECB135A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/3D5EB02E-D646-B778-C8FC-047CBECB135A.xml new file mode 100644 index 0000000..72dc3e7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/3D5EB02E-D646-B778-C8FC-047CBECB135A.xml @@ -0,0 +1,30 @@ + + +walloar +walloar +2021-03-02 08:33:43 UTC +false +true +false +false +false +false +false +-1 +false +1 + + +false + + + +false + + + +false + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/3FCCBB9D-FB42-0201-3B1B-9287CA76F8E3.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/3FCCBB9D-FB42-0201-3B1B-9287CA76F8E3.xml new file mode 100644 index 0000000..1069a88 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/3FCCBB9D-FB42-0201-3B1B-9287CA76F8E3.xml @@ -0,0 +1,109 @@ + + +walloar +walloar +2021-03-02 08:36:33 UTC +false +true +false +false +false +false +false +-1 +false +1 + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/EC3CEA61-5465-DA23-FD0F-17321EB85234.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/EC3CEA61-5465-DA23-FD0F-17321EB85234.xml new file mode 100644 index 0000000..5b3de95 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/subviews/EC3CEA61-5465-DA23-FD0F-17321EB85234.xml @@ -0,0 +1,199 @@ + + +walloar +walloar +2021-03-02 08:38:01 UTC +false +true +false +false +false +false +false +-1 +false +1 + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + +false + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + +false +-16777216 +1 + + + + + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml new file mode 100644 index 0000000..98bf5ef --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/0446BDB6-26D9-B764-C2A6-8BF8EE0C1200.xml @@ -0,0 +1,155 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_SM_CURRENT_STATES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_SM_CURRENT_STATES +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +ANK_SM_CURRENT_STATES +MACHINE_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +64 BYTE +64 BYTE,, +false + + +ERIGHTS-TEST +ANK_SM_CURRENT_STATES +DEPARTURE_STATE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +64 BYTE +64 BYTE,, +false + + +ERIGHTS-TEST +ANK_SM_CURRENT_STATES +ARRIVAL_STATE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +64 BYTE +64 BYTE,, +false + + +ERIGHTS-TEST +ANK_SM_CURRENT_STATES +EVENT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +64 BYTE +64 BYTE,, +false + + +ERIGHTS-TEST +ANK_SM_CURRENT_STATES +STATE_MACHINE_CONTEXT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT029 +4000 +4000,, +false + + +ERIGHTS-TEST +ANK_SM_CURRENT_STATES +SAVED_BY +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_SM_CURRENT_STATES +SAVED_AT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +sysdate +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_SM_CURRENT_STATES +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_SM_CURRENT_STATES +walloar +2021-03-02 08:04:49 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml new file mode 100644 index 0000000..489d0d4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/1C6B96A6-B86E-2BCC-DACD-6D20E735DCD2.xml @@ -0,0 +1,152 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_SM_PREVIOUS_STATES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_SM_PREVIOUS_STATES +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_SM_PREVIOUS_STATES +CURRENT_STATE_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + + + + +ERIGHTS-TEST +ANK_SM_PREVIOUS_STATES +DEPARTURE_STATE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +64 BYTE +64 BYTE,, +false + + +ERIGHTS-TEST +ANK_SM_PREVIOUS_STATES +ARRIVAL_STATE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +64 BYTE +64 BYTE,, +false + + +ERIGHTS-TEST +ANK_SM_PREVIOUS_STATES +EVENT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +64 BYTE +64 BYTE,, +false + + +ERIGHTS-TEST +ANK_SM_PREVIOUS_STATES +SAVED_BY +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_SM_PREVIOUS_STATES +SAVED_AT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_SM_PREVIOUS_STATES +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_SM_PREVIOUS_STATES +walloar +2021-03-02 08:04:50 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/256F6004-E1B6-FD26-9F27-95B58D979301.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/256F6004-E1B6-FD26-9F27-95B58D979301.xml new file mode 100644 index 0000000..f5c0856 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/256F6004-E1B6-FD26-9F27-95B58D979301.xml @@ -0,0 +1,245 @@ + + +ERIGHTS-TEST +ERIGHTS +REQUEST_PERSONS +tapiafo +2021-03-08 11:47:37 UTC +eRights +declaration_personv1 +false +true +true + + +tapiafo +2021-03-08 11:47:37 UTC +eRights +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 11:47:37 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 11:47:37 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +tapiafo +2021-03-08 11:47:37 UTC +eRights +true +false +1 +LOGDT025 +1 CHAR +'N' +1 CHAR,, +false + + +tapiafo +2021-03-08 11:47:37 UTC +eRights +true +false +1 +LOGDT025 +1 CHAR +'N' +1 CHAR,, +false + + +tapiafo +2021-03-08 13:03:35 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 13:04:17 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 13:04:32 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 13:04:57 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +tapiafo +2021-03-08 13:05:10 UTC +eRights +true +false +1 +LOGDT025 +1 CHAR +1 CHAR,, +false + + +tapiafo +2021-03-08 14:48:42 UTC +eRights +true +false +1 +LOGDT025 +1 CHAR +1 CHAR,, +false + + +walloar +2021-03-09 10:25:35 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-09 10:25:35 UTC +eRights +false +1 +LOGDT015 +,, +false + + +walloar +2021-03-09 10:25:35 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-09 10:25:35 UTC +eRights +false +1 +LOGDT015 +,, +false + + +walloar +2021-03-19 08:30:01 UTC +eRights +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +tapiafo +2021-04-23 16:47:21 UTC +eRights +true +false +1 +LOGDT024 +1000 +1000,, +false + + + + +tapiafo +2021-03-08 13:07:10 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_REQUEST_PERSON +walloar +2021-04-26 13:29:43 UTC +eRights +1B149110-08F2-10DD-64BB-7FB0CA2B49FC +Unique Plain Index +false + + + + + +tapiafo +2021-03-08 13:08:17 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml new file mode 100644 index 0000000..5055ba4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/25A7F12E-68C6-13A9-1DAD-2608FD6DDEA4.xml @@ -0,0 +1,355 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_COUNTRIES +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_COUNTRIES +COUNTRY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +CD_ISO_A2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +8 BYTE +8 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +CD_ISO_N3 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +NAME_EN +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +800 BYTE +800 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +LONG_NAME_EN +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +800 BYTE +800 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +NAME_FR +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +800 BYTE +800 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +LONG_NAME_FR +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +800 BYTE +800 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +EU_STATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +CAPITAL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +240 BYTE +240 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +COUNTRY_PHONE_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +CONTINENT_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +8 BYTE +8 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +CURRENCY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +CURRENCY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +240 BYTE +240 BYTE,, +false + + +ERIGHTS-TEST +MV_COUNTRIES +PLACE_OF_ORIGIN_EU_STATE +walloar +2023-06-15 12:36:23 UTC +eRights +18278D58-3F3A-EC5A-A676-869CEF19E181 +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + + + +true +ERIGHTS +MV_COUNTRIES + + +COUNTRY_CODE +ERIGHTS +MV_COUNTRIES + + +CD_ISO_A2 +ERIGHTS +MV_COUNTRIES + + +CD_ISO_N3 +ERIGHTS +MV_COUNTRIES + + +NAME_EN +ERIGHTS +MV_COUNTRIES + + +LONG_NAME_EN +ERIGHTS +MV_COUNTRIES + + +NAME_FR +ERIGHTS +MV_COUNTRIES + + +LONG_NAME_FR +ERIGHTS +MV_COUNTRIES + + +EU_STATE +ERIGHTS +MV_COUNTRIES + + +CAPITAL +ERIGHTS +MV_COUNTRIES + + +COUNTRY_PHONE_CODE +ERIGHTS +MV_COUNTRIES + + +CONTINENT_CODE +ERIGHTS +MV_COUNTRIES + + +STATUS +ERIGHTS +MV_COUNTRIES + + +CURRENCY_CODE +ERIGHTS +MV_COUNTRIES + + +CURRENCY_NAME +ERIGHTS +MV_COUNTRIES + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml new file mode 100644 index 0000000..f4c89a4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/27AB3173-8221-4362-B890-FE16F11A6765.xml @@ -0,0 +1,1322 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +LANGUAGE_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +9 BYTE +9 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JCX_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +INS_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +MAIN_ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +ORG_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1200 BYTE +1200 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +MAIN_ORG_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1689 BYTE +1689 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +RESPONSIBLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +HEAD_OF_ENTITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +CITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +COUNTRY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +LOCATION_COUNTRY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +LOCATION_CITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +LOCATION_COUNTRY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +LOCATION_CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +SY2_JOB_STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +24 BYTE +24 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +SENSITIVE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +CGR_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +DATE_CREAT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +USER_CREAT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +90 BYTE +90 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +DATE_MODIF +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +USER_MODIF +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +90 BYTE +90 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_TITLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_NAME_DIRECTORY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_PURPOSE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +LOCAL_JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +FUNCTION_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +FUNCTION_TYPE_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +FUNCTION_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +BUDGET_LINE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +BUDGET_LINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +BUDGET_LINE_DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +GRADE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +GRADE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +PERSONNEL_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +PERSONNEL_TYPE_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +PERSONNEL_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +DG_RESPONSABLE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +DG_RESPONSABLE_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +DG_RESPONSABLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_STATUS_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_STATUS_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +JOB_STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +TITLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +AUTHORIZATION_PUBLISH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +SY2_COMMENTS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +COMMENTS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +CREATION_USER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +MODIFICATION_USER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +EDELHRM_BUDGET_LINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +900 BYTE +900 BYTE,, +false + + +ERIGHTS-TEST +MV_HRPORTAL_JOBS_DETAILS +MULTI_DG +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_HRP_JOB_DET_JOB_ID +walloar +2021-04-26 13:29:43 UTC +eRights +2517BCD6-3AA5-F84C-9D81-B3ADA4330A2C +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_HRP_JOB_DET_MAIN_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +B555329B-A922-73DA-43A8-C83D4DDE920C +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_HRP_JOB_DET_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +E0AE8DD1-375D-AC00-B26D-CED4345982B7 +false + + + + + + + +true +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +LANGUAGE_CODE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JCX_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +INS_CD +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +ORG_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +MAIN_ORG_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +ORG_NAME +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +MAIN_ORG_NAME +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +START_DATE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +END_DATE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +RESPONSIBLE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +HEAD_OF_ENTITY +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +CITY_CODE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +CITY_NAME +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +COUNTRY_NAME +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +LOCATION_COUNTRY_NAME +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +LOCATION_CITY_NAME +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +LOCATION_COUNTRY_CODE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +LOCATION_CITY_CODE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_TYPE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +SY2_JOB_STATUS +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +SENSITIVE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +CGR_CD +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +DATE_CREAT +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +USER_CREAT +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +DATE_MODIF +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +USER_MODIF +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_TITLE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_NAME +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_NAME_DIRECTORY +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_PURPOSE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +LOCAL_JOB_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +FUNCTION_TYPE_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +FUNCTION_TYPE_CODE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +FUNCTION_TYPE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +BUDGET_LINE_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +BUDGET_LINE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +BUDGET_LINE_DESCRIPTION +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +GRADE_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +GRADE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +PERSONNEL_TYPE_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +PERSONNEL_TYPE_CODE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +PERSONNEL_TYPE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +DG_RESPONSABLE_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +DG_RESPONSABLE_CODE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +DG_RESPONSABLE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_STATUS_ID +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_STATUS_CODE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +JOB_STATUS +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +TITLE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +DESCRIPTION +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +AUTHORIZATION_PUBLISH +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +SY2_COMMENTS +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +COMMENTS +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +CREATION_USER +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +CREATION_DATE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +MODIFICATION_USER +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +MODIFICATION_DATE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +EDELHRM_BUDGET_LINE +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +MULTI_DG +ERIGHTS +MV_HRPORTAL_JOBS_DETAILS + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml new file mode 100644 index 0000000..171f868 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/2865D6B2-76D3-5ED0-460F-BD2F90142C4B.xml @@ -0,0 +1,327 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ENTITIES_HIST_COM +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +ORG_ID_PARENT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +MAIN_ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +ORG_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +ORG_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +ORG_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +ORG_DESC_FRE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +ENG_CITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +FRA_CITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +COUNTRY_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +ENG_COUNTRY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +FRA_COUNTRY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +TOR_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +TYPEOFENTITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST_COM +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ENT_HIST_COM_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +2F9BA900-3FBE-4D93-5862-04F2AA61DFFF +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ENT_HST_COM_MAIN_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +828DC1BB-764F-C1D8-4D8A-C210D95F70B4 +false + + + + + + + +true +ERIGHTS +MV_ENTITIES_HIST_COM + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml new file mode 100644 index 0000000..bf839f1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/2AC190F4-57F3-9518-A7E0-8D5D6A6D9230.xml @@ -0,0 +1,111 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_SMS_COMM_ERRORS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_ERRORS +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_ERRORS +UUID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT025 +36 BYTE +36 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_ERRORS +CODE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +25 BYTE +25 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_ERRORS +MESSAGE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +1024 BYTE +1024 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_SMS_COMM_ERRORS +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_SMS_COMM_ERRORS +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml new file mode 100644 index 0000000..52bd45e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/3055D235-F362-1B93-5483-877997EAB707.xml @@ -0,0 +1,73 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_LOCKS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_LOCKS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_LOCKS +LOCK_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +40 BYTE +40 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_LOCKS_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_LOCKS_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml new file mode 100644 index 0000000..cfb7d88 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/37E3DC03-087A-AC5F-9A2C-183450FB80D0.xml @@ -0,0 +1,153 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_EMAILS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_EMAILS +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_EMAILS +EMAIL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +320 CHAR +320 CHAR,, +false + + +ERIGHTS-TEST +MV_EMAILS +CTX_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +40 BYTE +40 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_EMAILS_PER +walloar +2021-04-26 13:29:43 UTC +eRights +3445F278-A4AB-98FB-C480-0351EE56E497 +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml new file mode 100644 index 0000000..79442dd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/3DB4CBEA-BC5E-3E29-A5C1-CB783C6CD68A.xml @@ -0,0 +1,217 @@ + + +ERIGHTS-TEST +ERIGHTS +PERSONS_BANK_INFO +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +PERSONS_BANK_INFO +PERSONS_BANK_INFO_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +LEF +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +BAF +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +LEGAL_ENTITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +IBAN_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +BANK_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +BANK_ACCOUNT_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +MAIN_BANK_ACCOUNT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +ACCOUNT_HOLDER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, +false + + +ERIGHTS-TEST +PERSONS_BANK_INFO +ACCOUNT_CURRENCY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_PERSONS_BANK_INFO +walloar +2021-04-26 13:29:43 UTC +eRights +BF3D4E05-698A-ED72-043A-1FD97960FAA7 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_PERSONS_BANK_INFO_PER_ID +walloar +2021-04-26 13:29:43 UTC +eRights +918F4B68-C0FF-42E9-CA18-1CF45C95B97B +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_PERSONS_BANK_INFO +walloar +2021-04-26 13:29:43 UTC +eRights +348977F3-FAF4-46DC-CA59-3600E2DF6714 +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml new file mode 100644 index 0000000..71be6ce --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4156F9D4-50C1-2AB1-D1D2-BA54DED9ADFF.xml @@ -0,0 +1,125 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_BLOB_TRIGGERS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_BLOB_TRIGGERS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_BLOB_TRIGGERS +TRIGGER_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_BLOB_TRIGGERS +TRIGGER_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_BLOB_TRIGGERS +BLOB_DATA +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT029 +4000 +4000,, +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_BLOB_TRIG_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_BLOB_TRIG_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml new file mode 100644 index 0000000..4bbb797 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/43547470-BAAB-8980-C971-6E0B2EEA7C9D.xml @@ -0,0 +1,188 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_DELEGATION_STATUS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +MV_DELEGATION_STATUS +ALERT_STATUS_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_DELEGATION_STATUS +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_DELEGATION_STATUS +DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MV_DELEGATION_STATUS +SEVERITY_LEVEL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_DELEGATION_STATUS +EVACUATION_LEVEL_CODE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_DELEGATION_STATUS +EVACUATION_LEVEL_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, +false + + +ERIGHTS-TEST +MV_DELEGATION_STATUS +FAMILY_POSTING_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_DELEGATION_STATUS +FAMILY_POSTING_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, +false + + + + +true +ERIGHTS +MV_DELEGATION_STATUS + + +ALERT_STATUS_ID +ERIGHTS +MV_DELEGATION_STATUS + + +ORG_ID +ERIGHTS +MV_DELEGATION_STATUS + + +DESCRIPTION +ERIGHTS +MV_DELEGATION_STATUS + + +SEVERITY_LEVEL +ERIGHTS +MV_DELEGATION_STATUS + + +EVACUATION_LEVEL_CODE_ID +ERIGHTS +MV_DELEGATION_STATUS + + +EVACUATION_LEVEL_CODE +ERIGHTS +MV_DELEGATION_STATUS + + +FAMILY_POSTING_TYPE_ID +ERIGHTS +MV_DELEGATION_STATUS + + +FAMILY_POSTING_TYPE +ERIGHTS +MV_DELEGATION_STATUS + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4CB74767-3856-9458-45EB-D45BEC46CD86.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4CB74767-3856-9458-45EB-D45BEC46CD86.xml new file mode 100644 index 0000000..6ee9656 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4CB74767-3856-9458-45EB-D45BEC46CD86.xml @@ -0,0 +1,967 @@ + + +ERIGHTS-TEST +ERIGHTS +REQUESTS +tapiafo +2021-03-08 11:26:23 UTC +eRights +table_76 +false +true +true + + +tapiafo +2021-03-08 11:44:53 UTC +eRights +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 11:44:53 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +tapiafo +2021-03-08 11:44:53 UTC + +eRights +false +1 +LOGDT019 +,, +false + + + + + +tapiafo +2021-03-08 11:44:53 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +tapiafo +2021-03-08 11:44:53 UTC +eRights +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +tapiafo +2021-03-08 11:44:53 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 11:44:53 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 11:44:53 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-09 14:28:05 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +walloar +2021-03-09 10:45:34 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +walloar +2021-03-09 10:45:34 UTC +eRights +true +false +1 +LOGDT019 +4 +,4, +false + + +tapiafo +2021-03-11 15:13:33 UTC +eRights +true +false +1 +LOGDT024 +16 CHAR +16 CHAR,, +false + + +walloar +2021-03-09 10:24:07 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-09 10:24:07 UTC +eRights +false +1 +LOGDT015 +,, +false + + +walloar +2021-03-09 10:24:57 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-09 10:24:57 UTC +eRights +false +1 +LOGDT015 +,, +false + + +walloar +2021-03-19 14:38:35 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-19 14:38:35 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-19 14:38:35 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +walloar +2021-03-22 14:08:23 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-22 14:08:23 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +walloar +2021-03-22 17:30:30 UTC +eRights +CK_REQUEST_INCL_STFF_MMBR +true +false +1 +LOGDT025 +1 CHAR + + + + +N +1 CHAR,, +false + + +walloar +2021-03-22 17:30:30 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-22 17:30:30 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +walloar +2021-04-08 06:29:54 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +walloar +2021-04-08 06:39:05 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +walloar +2021-04-08 06:39:05 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +walloar +2021-04-08 06:39:05 UTC +eRights +true +false +1 +LOGDT007 +,, +false + + +tapiafo +2021-04-15 11:42:45 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +SURFACE_RATE +walloar +2021-05-11 06:48:47 UTC +eRights +0086BC67-3691-0392-E253-6694E4F9DD40 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +SURFACE_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +BC66A03E-CA3F-66E6-BF49-A961C282209F +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +CAR_RATE +walloar +2021-05-11 06:48:47 UTC +eRights +85B4C8A1-FB2B-C123-0F48-F1411949D9C2 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +CAR_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +8A9C4D1E-1C7D-0BD1-ED24-B1B8C304C1E1 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +AIRFREIGHT_RATE +walloar +2021-05-11 06:48:47 UTC +eRights +63DAFFA7-6A80-699C-9EF8-325F36135DAF +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +AIRFREIGHT_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +CA87E4E9-BBF4-C5DA-6502-E02B4FC29CC5 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +STORAGE_RATE +walloar +2021-05-11 06:48:47 UTC +eRights +7D35C6DA-4090-9E6E-AC1B-3099385E560F +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +STORAGE_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +CE5E3DE1-87C5-8790-E6E0-5C2AA8355B23 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +TOPUP_AMOUNT +walloar +2021-05-11 06:48:47 UTC +eRights +FE3A4829-D90C-6633-DBEB-859C5A537143 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +TOPUP_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +BB5F637B-9282-64E9-0B8D-98F2BB7A8BF3 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +RECOVERY_AMOUNT +walloar +2021-05-11 06:48:47 UTC +eRights +3DEB1825-78EB-2405-5897-E9DBA24BF64D +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +RECOVERY_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +FA6BB8B8-5C2C-25D8-CA41-C4D383A12702 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +EIS_AMOUNT +walloar +2021-05-11 06:48:47 UTC +eRights +D1C2D1D9-939F-D114-FA1B-EB58729C0C79 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +EIS_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +006BC100-A3A6-634E-4A3E-004EE40F562E +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +EFS_AMOUNT +walloar +2021-05-11 06:48:47 UTC +eRights +8B31A2C6-4548-EEE4-9811-0903D5948C6C +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +EFS_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +56182024-74A5-D9C6-75B1-4B5247389F09 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +REQUEST_OPTION +walloar +2021-05-11 06:48:47 UTC + +eRights +C18C86DB-EC22-93B5-F836-0EA2D23B22D9 +true +false +1 +LOGDT024 +16 CHAR +16 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +PARENT_REQUEST_ID +walloar +2021-05-11 06:48:47 UTC + +eRights +E90BE881-0DDE-75B0-3517-6C968D48576F +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUESTS +REQUEST_TYPE +walloar +2021-05-11 06:48:47 UTC +eRights +3EAA27B0-BC30-B06E-5E9D-8AD63ADDB1B2 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +REQUESTS +INDEMNITY_UPDATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +166CA998-153E-B59C-5663-C5C9F14F6DD4 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +REQUESTS +CITY +walloar +2022-03-18 10:16:53 UTC +eRights +DB216B78-CBB6-A390-B4C4-25D83E7D10FE +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +REQUESTS +COUNTRY +walloar +2022-03-18 10:16:53 UTC +eRights +2A6BF9DC-AC2C-0675-6D5E-0C712A19F702 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +REQUESTS +ENTRY_INTO_STORAGE +walloar +2022-03-18 10:16:53 UTC +eRights +987505A6-AF2B-45BE-0C61-055942049C99 +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +REQUESTS +AIRFREIGHT_KG_CEILING +walloar +2022-03-18 10:16:53 UTC +eRights +8FD6B28C-D458-8B1C-B932-7884A9F7336E +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUESTS +AIRFREIGHT_VOLUME_CEILING +walloar +2022-03-18 10:16:53 UTC +eRights +D7B30A97-2F9D-C135-B7EE-2EC65FA63EB6 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUESTS +ABAC_STATE +walloar +2022-03-18 10:16:53 UTC +eRights +7D0F268F-9222-C8FB-1EB2-BC99BFC8147D +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +REQUESTS +ABAC_WORKFLOW_STATE +walloar +2022-03-18 10:16:53 UTC +eRights +FCA85BED-F962-1A0D-DED0-9CE0E782EBBC +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +REQUESTS +TOTAL_PERSONAL +walloar +2022-03-18 10:16:53 UTC +eRights +037C008C-311A-D2F6-D5F8-000B93265F75 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUESTS +TOTAL_VEHICLE +walloar +2022-03-18 10:16:53 UTC +eRights +6A5C7945-154F-9263-E979-2B7E99D3C7B5 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUESTS +TOTAL_STORAGE +walloar +2022-03-18 10:16:53 UTC +eRights +19FB7326-5F99-937E-DA2C-1A69443E9231 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUESTS +TOTAL_UNFORESEEN +walloar +2022-03-18 10:16:53 UTC +eRights +8BCE7E38-309B-ED5F-0E8F-AF6519F341B5 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUESTS +PAYMENT_ORDER_VALID +walloar +2022-03-18 10:16:53 UTC +eRights +9CB3158E-3D49-9C7A-1CC6-6033AC034743 +true +false +1 +LOGDT025 +1 BYTE +'Y' +1 BYTE,, +false + + +ERIGHTS-TEST +REQUESTS +DRAFT_TO_AWAITING_DATE +walloar +2022-07-19 13:44:13 UTC +eRights +1C5466EF-450A-E1B0-FAC5-F82D6244B347 +true +false +1 +LOGDT007 +7 +7,, +false + + + + +tapiafo +2021-03-08 11:44:53 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +UK_REQUESTS_REQUEST_STRING_ID +walloar +2022-08-26 15:21:56 UTC +eRights +0E7776C4-FE47-9F9E-3666-A456308F2B05 +Unique Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_REQUESTS +walloar +2021-04-26 13:29:43 UTC +eRights +17E23B3E-DF5F-5F64-E7D1-F4878875A38C +Unique Plain Index +false + + + + + +ERIGHTS-TEST +ERIGHTS +UK_REQUESTS_REQUEST_STRING_ID +walloar +2022-08-26 15:21:56 UTC +eRights +C674F3E7-CF99-9A54-39E2-27116CBAD01C +Unique Plain Index +false + + + + + +walloar +2021-03-09 10:12:07 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-09 10:12:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-06-03 10:44:04 UTC +eRights +Foreign Key +false + + + + + + + +walloar +2021-03-22 17:32:58 UTC +eRights +8B770CA3-7E2C-0FE3-8E6B-53823C3DB04D +73DB7963-4431-C4C4-5300-393B221A8121 +04E6EE75-0212-D11C-EAAD-34E8BB42ADA5 +ERIGHTS.V_PEOPLE +PER_ID + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml new file mode 100644 index 0000000..2251bb3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/4FB9EC34-C463-4EB0-4291-ACEE0D992FB6.xml @@ -0,0 +1,137 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_SMS_RCPT_COMM_DATA +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_SMS_RCPT_COMM_DATA +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_SMS_RCPT_COMM_DATA +COMM_DATA_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + + +ERIGHTS-TEST +ANK_EDMS_SMS_RCPT_COMM_DATA +REF_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_SMS_RCPT_COMM_DATA +STATUS +walloar +2021-03-02 08:04:46 UTC +eRights +CHK_ANK_EDMS_SRCD_STATUS +false +1 +LOGDT024 +10 BYTE + + + + + + + +10 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_S_RCPT_COMM_DATA +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_S_RCPT_COMM_DATA +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml new file mode 100644 index 0000000..93187fb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/52675525-20A2-9D94-FC27-4C5EBA8B3915.xml @@ -0,0 +1,622 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ENTITIES +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_ENTITIES +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES +ORG_ID_PARENT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES +MAIN_ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES +ORG_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES +ORG_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +SORT_ORDER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_ENTITIES +ORG_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +ORG_DESC_FRE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +ENG_CITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES +FRA_CITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES +COUNTRY_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +ENG_COUNTRY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +FRA_COUNTRY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +IS_DELEGATION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES +TOR_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_ENTITIES +TYPEOFENTITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +DELEGATION_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1003 BYTE +1003 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES +DEL_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES +ALERT_STATUS_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES +ALERT_STATUS_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES +SEVERITY_LEVEL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_ENTITIES +REGION_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES +REGION_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +FRA_REGION_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +ENG_REGION_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES +IS_HQ +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ENTITIES_MAIN_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +5F1E377E-FFB4-4EAF-B27B-0A42EDDFFA38 +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ENTITIES_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +13544859-DC39-3881-8565-5E912A08101C +false + + + + + + + +true +ERIGHTS +MV_ENTITIES + + +ORG_ID +ERIGHTS +MV_ENTITIES + + +ORG_ID_PARENT +ERIGHTS +MV_ENTITIES + + +MAIN_ORG_ID +ERIGHTS +MV_ENTITIES + + +ORG_NAME +ERIGHTS +MV_ENTITIES + + +ORG_CD +ERIGHTS +MV_ENTITIES + + +SORT_ORDER +ERIGHTS +MV_ENTITIES + + +ORG_DESC +ERIGHTS +MV_ENTITIES + + +ORG_DESC_FRE +ERIGHTS +MV_ENTITIES + + +CITY_CODE +ERIGHTS +MV_ENTITIES + + +ENG_CITY +ERIGHTS +MV_ENTITIES + + +FRA_CITY +ERIGHTS +MV_ENTITIES + + +COUNTRY_ID +ERIGHTS +MV_ENTITIES + + +ENG_COUNTRY +ERIGHTS +MV_ENTITIES + + +FRA_COUNTRY +ERIGHTS +MV_ENTITIES + + +IS_DELEGATION +ERIGHTS +MV_ENTITIES + + +TOR_ID +ERIGHTS +MV_ENTITIES + + +TYPEOFENTITY_NAME +ERIGHTS +MV_ENTITIES + + +DELEGATION_NAME +ERIGHTS +MV_ENTITIES + + +DEL_ID +ERIGHTS +MV_ENTITIES + + +ALERT_STATUS_ID +ERIGHTS +MV_ENTITIES + + +ALERT_STATUS_CODE +ERIGHTS +MV_ENTITIES + + +SEVERITY_LEVEL +ERIGHTS +MV_ENTITIES + + +REGION_ID +ERIGHTS +MV_ENTITIES + + +REGION_CODE +ERIGHTS +MV_ENTITIES + + +FRA_REGION_DESC +ERIGHTS +MV_ENTITIES + + +ENG_REGION_DESC +ERIGHTS +MV_ENTITIES + + +IS_HQ +ERIGHTS +MV_ENTITIES + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml new file mode 100644 index 0000000..bda3e7d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/553540BB-8C28-E761-E9C7-357F98E646DC.xml @@ -0,0 +1,111 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_REVINFO +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_REVINFO +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_REVINFO +TIMESTAMP +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_REVINFO +USER_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +ANK_REVINFO +USER_FULL_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +ANK_REVINFO +DELEGATOR_PER_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_REVINFO +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_REVINFO +walloar +2021-03-02 08:04:49 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml new file mode 100644 index 0000000..e6f9dd9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/592E1EBA-CA8E-67B1-097D-EFA6584FB82F.xml @@ -0,0 +1,125 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_TYPES_DEFAULT +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ENTITLMNT_TYPES_DEFAULT +ENTITLMNT_TYPE_CAT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_TYPES_DEFAULT +MOVEMENT_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_TYPES_DEFAULT +DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES_DEFAULT +ENTITLMNT_TYPE_DEFAULT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ENTITLMNT_TYPES_DEFAULT +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ENTITLMNT_TYPES_DEFAULT +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml new file mode 100644 index 0000000..1e5f848 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/5C7C6563-FD70-E24D-E603-049AE09A0549.xml @@ -0,0 +1,1034 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_COM +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_PERSONS_COM +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSONS_COM +NO_SYSPER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +6 +0 +,6,0 +false + + +ERIGHTS-TEST +MV_PERSONS_COM +TITLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +SURNAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +BIRTH_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +FIRST_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +FIRST_NAME2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +FIRST_NAME3 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +FIRST_NAME4 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +GENRE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +DATE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +PLACE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +COUNTRY_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +USERID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +MONIKER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +DOMAINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +DISPLAY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +511 CHAR +511 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +COMPLET_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +511 CHAR +511 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSONS_COM +TOJ_CD +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +5 CHAR +5 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +JOB_START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +JOB_END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +INS_CD +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +EMAIL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +LST_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +LST_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +LST_BEG_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +LST_ASS_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +LST_END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +CGR_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSONS_COM +MAIN_ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSONS_COM +ORG_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +ORG_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +TOR_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSONS_COM +TYPEOFENTITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +DELEGATION_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +DEL_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +JOB_TITLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +JOB_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +JOB_NAME_DIRECTORY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +JOB_PURPOSE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +RESPONSIBLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_COM +HEAD_OF_ENTITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_PERSONS_COM_PER_ID +walloar +2021-03-02 08:04:52 UTC +eRights +false + + + + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_COM_PER_ID_EMAIL +walloar +2023-06-15 12:36:23 UTC +eRights +B7A6BC46-CD66-F832-3752-AF40AE43B873 +false + + + + + + + + +true +ERIGHTS +MV_PERSONS_COM + + +PER_ID +ERIGHTS +MV_PERSONS_COM + + +NO_SYSPER +ERIGHTS +MV_PERSONS_COM + + +TITLE +ERIGHTS +MV_PERSONS_COM + + +SURNAME +ERIGHTS +MV_PERSONS_COM + + +BIRTH_NAME +ERIGHTS +MV_PERSONS_COM + + +FIRST_NAME +ERIGHTS +MV_PERSONS_COM + + +FIRST_NAME2 +ERIGHTS +MV_PERSONS_COM + + +FIRST_NAME3 +ERIGHTS +MV_PERSONS_COM + + +FIRST_NAME4 +ERIGHTS +MV_PERSONS_COM + + +GENRE +ERIGHTS +MV_PERSONS_COM + + +DATE_OF_BIRTH +ERIGHTS +MV_PERSONS_COM + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_COM + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_COM + + +CREATION_DATE +ERIGHTS +MV_PERSONS_COM + + +MODIFICATION_DATE +ERIGHTS +MV_PERSONS_COM + + +USERID +ERIGHTS +MV_PERSONS_COM + + +MONIKER +ERIGHTS +MV_PERSONS_COM + + +DOMAINE +ERIGHTS +MV_PERSONS_COM + + +DISPLAY_NAME +ERIGHTS +MV_PERSONS_COM + + +COMPLET_NAME +ERIGHTS +MV_PERSONS_COM + + +JOB_ID +ERIGHTS +MV_PERSONS_COM + + +TOJ_CD +ERIGHTS +MV_PERSONS_COM + + +JOB_TYPE +ERIGHTS +MV_PERSONS_COM + + +JOB_START_DATE +ERIGHTS +MV_PERSONS_COM + + +JOB_END_DATE +ERIGHTS +MV_PERSONS_COM + + +INS_CD +ERIGHTS +MV_PERSONS_COM + + +EMAIL +ERIGHTS +MV_PERSONS_COM + + +LST_CD +ERIGHTS +MV_PERSONS_COM + + +LST_CODE +ERIGHTS +MV_PERSONS_COM + + +LST_BEG_DATE +ERIGHTS +MV_PERSONS_COM + + +LST_ASS_DATE +ERIGHTS +MV_PERSONS_COM + + +LST_END_DATE +ERIGHTS +MV_PERSONS_COM + + +CGR_CD +ERIGHTS +MV_PERSONS_COM + + +ORG_ID +ERIGHTS +MV_PERSONS_COM + + +MAIN_ORG_ID +ERIGHTS +MV_PERSONS_COM + + +ORG_NAME +ERIGHTS +MV_PERSONS_COM + + +ORG_CD +ERIGHTS +MV_PERSONS_COM + + +TOR_ID +ERIGHTS +MV_PERSONS_COM + + +TYPEOFENTITY_NAME +ERIGHTS +MV_PERSONS_COM + + +DELEGATION_NAME +ERIGHTS +MV_PERSONS_COM + + +DEL_ID +ERIGHTS +MV_PERSONS_COM + + +JOB_TITLE +ERIGHTS +MV_PERSONS_COM + + +JOB_NAME +ERIGHTS +MV_PERSONS_COM + + +JOB_NAME_DIRECTORY +ERIGHTS +MV_PERSONS_COM + + +JOB_PURPOSE +ERIGHTS +MV_PERSONS_COM + + +RESPONSIBLE +ERIGHTS +MV_PERSONS_COM + + +HEAD_OF_ENTITY +ERIGHTS +MV_PERSONS_COM + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml new file mode 100644 index 0000000..8380b36 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/5DA23FF0-4C88-ACC1-69D4-01D8597F8F19.xml @@ -0,0 +1,280 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ASSIGNMENTS_COM +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +SOJ_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +TOJ_CD +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +5 CHAR +5 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +TYPE_OF_POST +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +INS_CD +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_COM +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ASSIGN_COM_JOB_ID +walloar +2021-04-26 13:29:43 UTC +eRights +50F748A1-7FDF-029D-9B57-9C8A230890B5 +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ASSIGN_COM_PER_ID +walloar +2021-04-26 13:29:43 UTC +eRights +BDFF4022-2CA5-A65D-1D9D-187CD4BBEB76 +false + + + + + + + +true +ERIGHTS +MV_ASSIGNMENTS_COM + + +SOJ_ID +ERIGHTS +MV_ASSIGNMENTS_COM + + +JOB_ID +ERIGHTS +MV_ASSIGNMENTS_COM + + +PER_ID +ERIGHTS +MV_ASSIGNMENTS_COM + + +TOJ_CD +ERIGHTS +MV_ASSIGNMENTS_COM + + +JOB_TYPE +ERIGHTS +MV_ASSIGNMENTS_COM + + +START_DATE +ERIGHTS +MV_ASSIGNMENTS_COM + + +END_DATE +ERIGHTS +MV_ASSIGNMENTS_COM + + +TYPE_OF_POST +ERIGHTS +MV_ASSIGNMENTS_COM + + +INS_CD +ERIGHTS +MV_ASSIGNMENTS_COM + + +CREATION_DATE +ERIGHTS +MV_ASSIGNMENTS_COM + + +MODIFICATION_DATE +ERIGHTS +MV_ASSIGNMENTS_COM + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml new file mode 100644 index 0000000..306e933 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/62DE07E6-4CB7-C5AC-9ADC-1101F482CA0E.xml @@ -0,0 +1,137 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_EMAIL_RCPT_COMM_DATA +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPT_COMM_DATA +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPT_COMM_DATA +COMM_DATA_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPT_COMM_DATA +REF_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPT_COMM_DATA +STATUS +walloar +2021-03-02 08:04:46 UTC +eRights +CHK_ANK_EDMS_ERCD_STATUS +false +1 +LOGDT024 +10 BYTE + + + + + + + +10 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_E_RCPT_COMM_DATA +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_E_RCPT_COMM_DATA +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml new file mode 100644 index 0000000..10b0bc1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/63054212-8AEE-5074-DEED-6B5EF4457EB6.xml @@ -0,0 +1,315 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_MV_PERSON_PHONES +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +PER_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +START_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +END_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +TLP_SEQ +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +TLP_TYPE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +TLP_TYPE_CODE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +300 CHAR +300 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +CTX_CD +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +40 BYTE +40 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +TADR_CD +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +COUNTRY_PREFIX +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +40 BYTE +40 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +REGION_PREFIX +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +80 BYTE +80 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +PHONE_NUMBER +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +768 BYTE +768 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +EXTENSION +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +768 BYTE +768 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +FULL_PHONE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1587 BYTE +1587 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +BUILDING +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +INS_CD +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +40 BYTE +40 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +CREATION_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +MODIFICATION_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +SRC_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +SOURCE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +7 BYTE +7 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSON_PHONES +AUTH_USAGE_ALLOWED_FLAG +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml new file mode 100644 index 0000000..da2a7aa --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/630D97D6-855C-0E6D-5879-00F9E3F6BFD5.xml @@ -0,0 +1,445 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAXS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ENTITLMNT_MAXS +ENTITLMNT_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_MAXS +ENTITLMNT_MAX_CAT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_MAXS +ENTITLMNT_MAX_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +MAX_VALUE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +9 +2 +,9,2 +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +MAX_CURRENCY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +ENTITLMNT_TYPE_CAT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_MAXS +ENTITLMNT_MAX_OPTIONS_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_MAXS +FLAT_RATE_DUPLICATOR +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +COMMENTS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3000 BYTE +3000 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +ENABLE +walloar +2022-03-18 10:16:53 UTC +eRights +0216BC09-3504-15D3-C7CF-D9DFA41889DE +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +HOD_ENABLE +walloar +2022-03-18 10:16:53 UTC +eRights +213907F5-53D2-2D28-A1F1-11B5948D5957 +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +CITY +walloar +2022-03-18 10:16:53 UTC +eRights +61286F46-FE98-229E-D4DD-DB6B8905BB25 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +COUNTRY +walloar +2022-03-18 10:16:53 UTC +eRights +C234B71B-BD07-61F9-F4B4-17FBC3682925 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +MAX_VOLUME +walloar +2022-03-18 10:16:53 UTC +eRights +A53372D5-C1D6-7D4E-E406-F7310B7643DF +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +MAX_KG +walloar +2022-03-18 10:16:53 UTC +eRights +FD802C04-9B04-3776-1BEE-50209A8D299D +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +START_DATE +walloar +2022-03-18 10:16:53 UTC +eRights +914B1909-7080-EDAB-72AC-8EE5430CDA76 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +RATE_YEAR +walloar +2022-03-18 10:16:53 UTC +eRights +69B6883E-3781-32C5-E68C-1A170507189E +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +CREATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +BB47E910-130A-B409-4248-A01ECE8C9740 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +CREATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +A1DBC58E-D4A5-2A29-18B2-A8F602A076F6 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +UPDATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +6E09FA6F-1446-2F49-597D-E83A0392BD97 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +UPDATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +CB45C806-4304-EA95-17E4-EE833CA663DD +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +IATA_FROM +walloar +2022-07-19 13:44:13 UTC +eRights +CE6E048A-399D-848E-C03A-50B3AF667EC5 +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS +IATA_TO +walloar +2022-07-19 13:44:13 UTC +eRights +66DAC659-E6A3-0958-493F-D7FB6D9DEA38 +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAX_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAX_PK +walloar +2021-03-02 08:04:50 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml new file mode 100644 index 0000000..f916d70 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/631C5F0E-01E7-CAFC-64A2-0564F5FCE0EC.xml @@ -0,0 +1,601 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_JOBS_HIST_COM +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +JCX_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +INS_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +INS_NAME +walloar +2022-03-24 12:37:46 UTC +eRights +26FEDDFF-C0D7-592A-DF18-F55A94961ADA +true +false +1 +LOGDT024 +2000 BYTE +2000 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +JCX_ID_REMPLACE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +DECISION_COMM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +JOB_ID_ORIGINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +RESPONSIBLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +HEAD_OF_ENTITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +COMMENTS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +CITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +COUNTRY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +LOCATION_CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +LOCATION_CITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +LOCATION_COUNTRY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +LOCATION_COUNTRY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +PERSONNEL_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +PERSONNEL_TYPE_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1600 BYTE +1600 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +BUDGETARY_LINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +JOB_STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +8 BYTE +8 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +EDEL_FUNCTION_CODE +walloar +2022-03-24 12:37:46 UTC +eRights +17760670-539F-30F3-76E9-C8686C6D7D5E +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_COM +EDEL_FUNCTION_DESC +walloar +2022-03-24 12:37:46 UTC +eRights +503D2040-048C-E8AC-4990-EABBB66146F1 +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_JOBS_HIST_COM_JOB_ID +walloar +2021-04-26 13:29:43 UTC +eRights +CB1E084A-8CBE-8101-BE72-37CCE9636ED1 +false + + + + + + + +true +ERIGHTS +MV_JOBS_HIST_COM + + +JCX_ID +ERIGHTS +MV_JOBS_HIST_COM + + +JOB_ID +ERIGHTS +MV_JOBS_HIST_COM + + +INS_CD +ERIGHTS +MV_JOBS_HIST_COM + + +ORG_ID +ERIGHTS +MV_JOBS_HIST_COM + + +START_DATE +ERIGHTS +MV_JOBS_HIST_COM + + +END_DATE +ERIGHTS +MV_JOBS_HIST_COM + + +JCX_ID_REMPLACE +ERIGHTS +MV_JOBS_HIST_COM + + +DECISION_COMM +ERIGHTS +MV_JOBS_HIST_COM + + +JOB_ID_ORIGINE +ERIGHTS +MV_JOBS_HIST_COM + + +RESPONSIBLE +ERIGHTS +MV_JOBS_HIST_COM + + +HEAD_OF_ENTITY +ERIGHTS +MV_JOBS_HIST_COM + + +COMMENTS +ERIGHTS +MV_JOBS_HIST_COM + + +CITY_CODE +ERIGHTS +MV_JOBS_HIST_COM + + +CITY_NAME +ERIGHTS +MV_JOBS_HIST_COM + + +COUNTRY_NAME +ERIGHTS +MV_JOBS_HIST_COM + + +LOCATION_CITY_CODE +ERIGHTS +MV_JOBS_HIST_COM + + +LOCATION_CITY_NAME +ERIGHTS +MV_JOBS_HIST_COM + + +LOCATION_COUNTRY_CODE +ERIGHTS +MV_JOBS_HIST_COM + + +LOCATION_COUNTRY_NAME +ERIGHTS +MV_JOBS_HIST_COM + + +PERSONNEL_TYPE_ID +ERIGHTS +MV_JOBS_HIST_COM + + +PERSONNEL_TYPE_DESC +ERIGHTS +MV_JOBS_HIST_COM + + +BUDGETARY_LINE +ERIGHTS +MV_JOBS_HIST_COM + + +JOB_TYPE +ERIGHTS +MV_JOBS_HIST_COM + + +JOB_STATUS +ERIGHTS +MV_JOBS_HIST_COM + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml new file mode 100644 index 0000000..edd0e10 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/64ABCBD7-0AAF-AD7B-1182-B2F03CDEB1CE.xml @@ -0,0 +1,267 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ENTITIES_TYPES +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +IS_ACTIVE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +PRIORITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +CREATION_USER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +MODIFICATION_USER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +EN_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_TYPES +FR_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ENTITIES_TYPES_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +C01987CC-1F0A-2537-7E5B-A44F5F8A04C1 +false + + + + + + + +true +ERIGHTS +MV_ENTITIES_TYPES + + +ORG_ID +ERIGHTS +MV_ENTITIES_TYPES + + +ID +ERIGHTS +MV_ENTITIES_TYPES + + +CODE +ERIGHTS +MV_ENTITIES_TYPES + + +IS_ACTIVE +ERIGHTS +MV_ENTITIES_TYPES + + +PRIORITY +ERIGHTS +MV_ENTITIES_TYPES + + +CREATION_USER +ERIGHTS +MV_ENTITIES_TYPES + + +CREATION_DATE +ERIGHTS +MV_ENTITIES_TYPES + + +MODIFICATION_USER +ERIGHTS +MV_ENTITIES_TYPES + + +MODIFICATION_DATE +ERIGHTS +MV_ENTITIES_TYPES + + +EN_NAME +ERIGHTS +MV_ENTITIES_TYPES + + +FR_NAME +ERIGHTS +MV_ENTITIES_TYPES + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml new file mode 100644 index 0000000..e7ffd6a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/66B6918B-A197-4DDD-2F74-FA6DEB24B801.xml @@ -0,0 +1,1195 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_PERSONS_EEAS +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +NO_SYSPER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +6 +0 +,6,0 +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +TITLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +SURNAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +BIRTH_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +FIRST_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +FIRST_NAME2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +FIRST_NAME3 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +FIRST_NAME4 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +GENRE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +DATE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +PLACE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +COUNTRY_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +USERID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +MONIKER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +DOMAIN +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +DISPLAY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +101 CHAR +101 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +COMPLET_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +401 CHAR +401 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +DISPLAY_SURNAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +DISPLAY_FIRST_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +JCX_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +TOJ_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +5 CHAR +5 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +ASSIGN_START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +ASSIGN_END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +INS_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +EMAIL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +WORK_PATTERN_DATE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +WORK_PATTERN_DATE_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +WORK_PATTERN_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +LST_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +LST_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +LST_BEG_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +LST_ASS_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +LST_END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +CGR_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +MAIN_ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +ORG_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +ORG_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +ORG_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +TOR_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +TYPEOFENTITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +DEL_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +DELEGATION_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1003 BYTE +1003 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +JOB_TITLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +JOB_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +JOB_NAME_DIRECTORY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +JOB_PURPOSE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +RESPONSIBLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_EEAS +HEAD_OF_ENTITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_PERSONS_EEAS_PER_ID +walloar +2021-03-02 08:04:52 UTC +eRights +false + + + + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_EEAS_PER_ID_EMAIL +walloar +2023-06-15 12:36:23 UTC +eRights +1ED37D37-580F-99E9-BA36-780D61256077 +false + + + + + + + + +true +ERIGHTS +MV_PERSONS_EEAS + + +PER_ID +ERIGHTS +MV_PERSONS_EEAS + + +NO_SYSPER +ERIGHTS +MV_PERSONS_EEAS + + +TITLE +ERIGHTS +MV_PERSONS_EEAS + + +SURNAME +ERIGHTS +MV_PERSONS_EEAS + + +BIRTH_NAME +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME2 +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME3 +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME4 +ERIGHTS +MV_PERSONS_EEAS + + +GENRE +ERIGHTS +MV_PERSONS_EEAS + + +DATE_OF_BIRTH +ERIGHTS +MV_PERSONS_EEAS + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_EEAS + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_EEAS + + +CREATION_DATE +ERIGHTS +MV_PERSONS_EEAS + + +MODIFICATION_DATE +ERIGHTS +MV_PERSONS_EEAS + + +USERID +ERIGHTS +MV_PERSONS_EEAS + + +MONIKER +ERIGHTS +MV_PERSONS_EEAS + + +DOMAIN +ERIGHTS +MV_PERSONS_EEAS + + +DISPLAY_NAME +ERIGHTS +MV_PERSONS_EEAS + + +COMPLET_NAME +ERIGHTS +MV_PERSONS_EEAS + + +DISPLAY_SURNAME +ERIGHTS +MV_PERSONS_EEAS + + +DISPLAY_FIRST_NAME +ERIGHTS +MV_PERSONS_EEAS + + +JCX_ID +ERIGHTS +MV_PERSONS_EEAS + + +JOB_ID +ERIGHTS +MV_PERSONS_EEAS + + +TOJ_CD +ERIGHTS +MV_PERSONS_EEAS + + +JOB_TYPE +ERIGHTS +MV_PERSONS_EEAS + + +ASSIGN_START_DATE +ERIGHTS +MV_PERSONS_EEAS + + +ASSIGN_END_DATE +ERIGHTS +MV_PERSONS_EEAS + + +INS_CD +ERIGHTS +MV_PERSONS_EEAS + + +EMAIL +ERIGHTS +MV_PERSONS_EEAS + + +WORK_PATTERN_DATE_FROM +ERIGHTS +MV_PERSONS_EEAS + + +WORK_PATTERN_DATE_TO +ERIGHTS +MV_PERSONS_EEAS + + +WORK_PATTERN_DESC +ERIGHTS +MV_PERSONS_EEAS + + +LST_CD +ERIGHTS +MV_PERSONS_EEAS + + +LST_CODE +ERIGHTS +MV_PERSONS_EEAS + + +LST_BEG_DATE +ERIGHTS +MV_PERSONS_EEAS + + +LST_ASS_DATE +ERIGHTS +MV_PERSONS_EEAS + + +LST_END_DATE +ERIGHTS +MV_PERSONS_EEAS + + +CGR_CD +ERIGHTS +MV_PERSONS_EEAS + + +ORG_ID +ERIGHTS +MV_PERSONS_EEAS + + +MAIN_ORG_ID +ERIGHTS +MV_PERSONS_EEAS + + +ORG_NAME +ERIGHTS +MV_PERSONS_EEAS + + +ORG_CD +ERIGHTS +MV_PERSONS_EEAS + + +ORG_DESC +ERIGHTS +MV_PERSONS_EEAS + + +TOR_ID +ERIGHTS +MV_PERSONS_EEAS + + +TYPEOFENTITY_NAME +ERIGHTS +MV_PERSONS_EEAS + + +DEL_ID +ERIGHTS +MV_PERSONS_EEAS + + +DELEGATION_NAME +ERIGHTS +MV_PERSONS_EEAS + + +JOB_TITLE +ERIGHTS +MV_PERSONS_EEAS + + +JOB_NAME +ERIGHTS +MV_PERSONS_EEAS + + +JOB_NAME_DIRECTORY +ERIGHTS +MV_PERSONS_EEAS + + +JOB_PURPOSE +ERIGHTS +MV_PERSONS_EEAS + + +RESPONSIBLE +ERIGHTS +MV_PERSONS_EEAS + + +HEAD_OF_ENTITY +ERIGHTS +MV_PERSONS_EEAS + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml new file mode 100644 index 0000000..d23aae8 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/694A91FE-9188-90E5-058F-0FF4F7BFC31B.xml @@ -0,0 +1,1066 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_JOBS_HIST_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +JCX_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +SP2_DATE_CREAT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +SP2_DATE_MODIF +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +SP2_USER_CREAT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +SP2_USER_MODIF +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +SP2_CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +SP2_MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +INS_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +INS_NAME +walloar +2022-03-24 12:37:46 UTC +eRights +F3DE0280-5DAB-7EC4-C848-6FB419DA847C +true +false +1 +LOGDT024 +2000 BYTE +2000 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +JCX_ID_REMPLACE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +DECISION_COMM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +JOB_ID_ORIGINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +RESPONSIBLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +HEAD_OF_ENTITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +COMMENTS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +CITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +COUNTRY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +COUNTRY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +LOCATION_CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +LOCATION_CITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +LOCATION_COUNTRY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +LOCATION_COUNTRY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +TFN_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +JOB_STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +8 BYTE +8 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +CGR_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +EXCLU_GSYS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +EXCLU_GSYS_INTERNE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +EXCLU_GSYS_COMMENT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +ORG_OFFICIEL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +MOBILITE_OBLIGATOIRE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +TABL_EFFECTIFS_UNIQ +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +CCE_ID_RESTYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +PERSONNEL_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +PERSONNEL_TYPE_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1600 BYTE +1600 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +BUDGETARY_LINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +DATE_CREAT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +USER_CREAT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +DATE_MODIF +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +USER_MODIF +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +DG_RESP_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +DG_RESP_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +EDEL_FUNCTION_CODE +walloar +2022-03-24 12:37:46 UTC +eRights +DFA0EF25-412D-FEC0-8AEA-9C3154497AC3 +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS_HIST_EEAS +EDEL_FUNCTION_DESC +walloar +2022-03-24 12:37:46 UTC +eRights +F61606C3-26F5-8D09-379C-3CC1E47B4D50 +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_JOBS_HIST_EEAS_JOB_ID +walloar +2021-04-26 13:29:43 UTC +eRights +F4374DEB-3F9C-59FE-7AE8-DB27FAC78F06 +false + + + + + + + +true +ERIGHTS +MV_JOBS_HIST_EEAS + + +JCX_ID +ERIGHTS +MV_JOBS_HIST_EEAS + + +JOB_ID +ERIGHTS +MV_JOBS_HIST_EEAS + + +SP2_DATE_CREAT +ERIGHTS +MV_JOBS_HIST_EEAS + + +SP2_DATE_MODIF +ERIGHTS +MV_JOBS_HIST_EEAS + + +SP2_USER_CREAT +ERIGHTS +MV_JOBS_HIST_EEAS + + +SP2_USER_MODIF +ERIGHTS +MV_JOBS_HIST_EEAS + + +SP2_CREATION_DATE +ERIGHTS +MV_JOBS_HIST_EEAS + + +SP2_MODIFICATION_DATE +ERIGHTS +MV_JOBS_HIST_EEAS + + +INS_CD +ERIGHTS +MV_JOBS_HIST_EEAS + + +ORG_ID +ERIGHTS +MV_JOBS_HIST_EEAS + + +START_DATE +ERIGHTS +MV_JOBS_HIST_EEAS + + +END_DATE +ERIGHTS +MV_JOBS_HIST_EEAS + + +JCX_ID_REMPLACE +ERIGHTS +MV_JOBS_HIST_EEAS + + +DECISION_COMM +ERIGHTS +MV_JOBS_HIST_EEAS + + +JOB_ID_ORIGINE +ERIGHTS +MV_JOBS_HIST_EEAS + + +RESPONSIBLE +ERIGHTS +MV_JOBS_HIST_EEAS + + +HEAD_OF_ENTITY +ERIGHTS +MV_JOBS_HIST_EEAS + + +COMMENTS +ERIGHTS +MV_JOBS_HIST_EEAS + + +CITY_CODE +ERIGHTS +MV_JOBS_HIST_EEAS + + +CITY_NAME +ERIGHTS +MV_JOBS_HIST_EEAS + + +COUNTRY_CODE +ERIGHTS +MV_JOBS_HIST_EEAS + + +COUNTRY_NAME +ERIGHTS +MV_JOBS_HIST_EEAS + + +LOCATION_CITY_CODE +ERIGHTS +MV_JOBS_HIST_EEAS + + +LOCATION_CITY_NAME +ERIGHTS +MV_JOBS_HIST_EEAS + + +LOCATION_COUNTRY_CODE +ERIGHTS +MV_JOBS_HIST_EEAS + + +LOCATION_COUNTRY_NAME +ERIGHTS +MV_JOBS_HIST_EEAS + + +TFN_ID +ERIGHTS +MV_JOBS_HIST_EEAS + + +JOB_TYPE +ERIGHTS +MV_JOBS_HIST_EEAS + + +JOB_STATUS +ERIGHTS +MV_JOBS_HIST_EEAS + + +CGR_CD +ERIGHTS +MV_JOBS_HIST_EEAS + + +EXCLU_GSYS +ERIGHTS +MV_JOBS_HIST_EEAS + + +EXCLU_GSYS_INTERNE +ERIGHTS +MV_JOBS_HIST_EEAS + + +EXCLU_GSYS_COMMENT +ERIGHTS +MV_JOBS_HIST_EEAS + + +ORG_OFFICIEL +ERIGHTS +MV_JOBS_HIST_EEAS + + +MOBILITE_OBLIGATOIRE +ERIGHTS +MV_JOBS_HIST_EEAS + + +TABL_EFFECTIFS_UNIQ +ERIGHTS +MV_JOBS_HIST_EEAS + + +CCE_ID_RESTYPE +ERIGHTS +MV_JOBS_HIST_EEAS + + +PERSONNEL_TYPE_ID +ERIGHTS +MV_JOBS_HIST_EEAS + + +PERSONNEL_TYPE_DESC +ERIGHTS +MV_JOBS_HIST_EEAS + + +BUDGETARY_LINE +ERIGHTS +MV_JOBS_HIST_EEAS + + +DATE_CREAT +ERIGHTS +MV_JOBS_HIST_EEAS + + +USER_CREAT +ERIGHTS +MV_JOBS_HIST_EEAS + + +DATE_MODIF +ERIGHTS +MV_JOBS_HIST_EEAS + + +USER_MODIF +ERIGHTS +MV_JOBS_HIST_EEAS + + +DG_RESP_ID +ERIGHTS +MV_JOBS_HIST_EEAS + + +DG_RESP_CODE +ERIGHTS +MV_JOBS_HIST_EEAS + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml new file mode 100644 index 0000000..3cc7039 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/6EE6B86E-12DA-10CF-8634-5C4D212E05C8.xml @@ -0,0 +1,135 @@ + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_TYPES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +MOVEMENT_TYPES +MOVEMENT_TYPE_ID +walloar +2021-03-02 08:04:47 UTC + +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_TYPES +CODE_FROM +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +16 BYTE +16 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_TYPES +CODE_TO +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +16 BYTE +16 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_TYPES +MOVEMENT_TYPE +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +33 BYTE +33 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_TYPES +CONTEXT_ID +walloar +2021-03-02 08:04:47 UTC + +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_TYPES +BUDGETLINE_JOB +walloar +2021-04-26 13:29:43 UTC +eRights +B6FB2205-0F04-9FED-CC65-3EA94C6A1EB8 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_MOTY +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_MOTY +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml new file mode 100644 index 0000000..95d1b60 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/6FEE5571-7FE2-B716-71AD-1D9FB0AB0C19.xml @@ -0,0 +1,111 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_EMAIL_COMM_ERRORS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_ERRORS +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_ERRORS +UUID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT025 +36 BYTE +36 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_ERRORS +CODE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +25 BYTE +25 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_ERRORS +MESSAGE +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +1024 BYTE +1024 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_EMAIL_COMM_ERRORS +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_EMAIL_COMM_ERRORS +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml new file mode 100644 index 0000000..b6afdb5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7328B927-1B91-95B9-E292-CC68E5AB9548.xml @@ -0,0 +1,146 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_MV_USER_SYS_ORG_PERMS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +ANK_MV_USER_SYS_ORG_PERMS +PER_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +ANK_MV_USER_SYS_ORG_PERMS +SYSTEM_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_USER_SYS_ORG_PERMS +FEATURE_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_USER_SYS_ORG_PERMS +FEATURE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_USER_SYS_ORG_PERMS +ORG_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_USER_SYS_ORG_PERMS +ACCESS_MODE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_USER_SYS_ORG_PERMS +SOURCE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_ANK_USOP_PER_ID +walloar +2021-04-26 13:29:43 UTC +eRights +9735E34A-83A1-13C4-02AD-F8AD67BCDBB5 +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml new file mode 100644 index 0000000..5895dcb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7437BF45-8F48-51D1-B640-07B1543F8D13.xml @@ -0,0 +1,1167 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_MV_PERSONS_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +PER_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +NO_SYSPER +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +6 +0 +,6,0 +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +TITLE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +SURNAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +BIRTH_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +FIRST_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +FIRST_NAME2 +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +FIRST_NAME3 +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +FIRST_NAME4 +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +GENRE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +DATE_OF_BIRTH +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +PLACE_OF_BIRTH +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +COUNTRY_OF_BIRTH +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +CREATION_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +MODIFICATION_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +USERID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +MONIKER +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +DOMAIN +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +DISPLAY_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +101 CHAR +101 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +COMPLET_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +401 CHAR +401 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +DISPLAY_SURNAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +DISPLAY_FIRST_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +JCX_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +JOB_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +TOJ_CD +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +5 CHAR +5 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +JOB_TYPE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +ASSIGN_START_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +ASSIGN_END_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +INS_CD +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +EMAIL +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +WORK_PATTERN_DATE_FROM +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +WORK_PATTERN_DATE_TO +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +WORK_PATTERN_DESC +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +LST_CD +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +LST_CODE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +LST_BEG_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +LST_ASS_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +LST_END_DATE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +CGR_CD +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +15 CHAR +15 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +ORG_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +MAIN_ORG_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +ORG_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +ORG_CD +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +ORG_DESC +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +TOR_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +TYPEOFENTITY_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +DEL_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +DELEGATION_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +563 BYTE +563 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +JOB_TITLE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +JOB_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +JOB_NAME_DIRECTORY +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +JOB_PURPOSE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +RESPONSIBLE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_PERSONS_EEAS +HEAD_OF_ENTITY +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + + + +true +ERIGHTS +MV_PERSONS_EEAS + + +PER_ID +ERIGHTS +MV_PERSONS_EEAS + + +NO_SYSPER +ERIGHTS +MV_PERSONS_EEAS + + +TITLE +ERIGHTS +MV_PERSONS_EEAS + + +SURNAME +ERIGHTS +MV_PERSONS_EEAS + + +BIRTH_NAME +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME2 +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME3 +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME4 +ERIGHTS +MV_PERSONS_EEAS + + +GENRE +ERIGHTS +MV_PERSONS_EEAS + + +DATE_OF_BIRTH +ERIGHTS +MV_PERSONS_EEAS + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_EEAS + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_EEAS + + +CREATION_DATE +ERIGHTS +MV_PERSONS_EEAS + + +MODIFICATION_DATE +ERIGHTS +MV_PERSONS_EEAS + + +USERID +ERIGHTS +MV_PERSONS_EEAS + + +MONIKER +ERIGHTS +MV_PERSONS_EEAS + + +DOMAIN +ERIGHTS +MV_PERSONS_EEAS + + +DISPLAY_NAME +ERIGHTS +MV_PERSONS_EEAS + + +COMPLET_NAME +ERIGHTS +MV_PERSONS_EEAS + + +DISPLAY_SURNAME +ERIGHTS +MV_PERSONS_EEAS + + +DISPLAY_FIRST_NAME +ERIGHTS +MV_PERSONS_EEAS + + +JCX_ID +ERIGHTS +MV_PERSONS_EEAS + + +JOB_ID +ERIGHTS +MV_PERSONS_EEAS + + +TOJ_CD +ERIGHTS +MV_PERSONS_EEAS + + +JOB_TYPE +ERIGHTS +MV_PERSONS_EEAS + + +ASSIGN_START_DATE +ERIGHTS +MV_PERSONS_EEAS + + +ASSIGN_END_DATE +ERIGHTS +MV_PERSONS_EEAS + + +INS_CD +ERIGHTS +MV_PERSONS_EEAS + + +EMAIL +ERIGHTS +MV_PERSONS_EEAS + + +WORK_PATTERN_DATE_FROM +ERIGHTS +MV_PERSONS_EEAS + + +WORK_PATTERN_DATE_TO +ERIGHTS +MV_PERSONS_EEAS + + +WORK_PATTERN_DESC +ERIGHTS +MV_PERSONS_EEAS + + +LST_CD +ERIGHTS +MV_PERSONS_EEAS + + +LST_CODE +ERIGHTS +MV_PERSONS_EEAS + + +LST_BEG_DATE +ERIGHTS +MV_PERSONS_EEAS + + +LST_ASS_DATE +ERIGHTS +MV_PERSONS_EEAS + + +LST_END_DATE +ERIGHTS +MV_PERSONS_EEAS + + +CGR_CD +ERIGHTS +MV_PERSONS_EEAS + + +ORG_ID +ERIGHTS +MV_PERSONS_EEAS + + +MAIN_ORG_ID +ERIGHTS +MV_PERSONS_EEAS + + +ORG_NAME +ERIGHTS +MV_PERSONS_EEAS + + +ORG_CD +ERIGHTS +MV_PERSONS_EEAS + + +ORG_DESC +ERIGHTS +MV_PERSONS_EEAS + + +TOR_ID +ERIGHTS +MV_PERSONS_EEAS + + +TYPEOFENTITY_NAME +ERIGHTS +MV_PERSONS_EEAS + + +DEL_ID +ERIGHTS +MV_PERSONS_EEAS + + +DELEGATION_NAME +ERIGHTS +MV_PERSONS_EEAS + + +JOB_TITLE +ERIGHTS +MV_PERSONS_EEAS + + +JOB_NAME +ERIGHTS +MV_PERSONS_EEAS + + +JOB_NAME_DIRECTORY +ERIGHTS +MV_PERSONS_EEAS + + +JOB_PURPOSE +ERIGHTS +MV_PERSONS_EEAS + + +RESPONSIBLE +ERIGHTS +MV_PERSONS_EEAS + + +HEAD_OF_ENTITY +ERIGHTS +MV_PERSONS_EEAS + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml new file mode 100644 index 0000000..9f25940 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/7495A51C-E8A9-14BE-EABB-02B4CAB54568.xml @@ -0,0 +1,215 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_JOB_DETAILS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +JOB_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +JOB_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +JOB_CLASS_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +IS_DURABLE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +IS_NONCONCURRENT +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +IS_UPDATE_DATA +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +REQUESTS_RECOVERY +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_JOB_DETAILS +JOB_DATA +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT029 +4000 +4000,, +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_JOB_DETAILS_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_J_GRP +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_J_REQ_RECOVERY +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_JOB_DETAILS_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml new file mode 100644 index 0000000..e98f5cb --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/749BBB98-F9DC-EEB4-EAF1-1E02EBD0C293.xml @@ -0,0 +1,115 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_TYPES_CAT +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ENTITLMNT_TYPES_CAT +ENTITLMNT_TYPE_CAT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES_CAT +DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES_CAT +MF_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES_CAT +CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES_CAT +ENT_ORDER +walloar +2021-03-03 10:50:37 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ENTITLMNT_TYPES_CAT +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ENTITLMNT_TYPES_CAT +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml new file mode 100644 index 0000000..66b7088 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/83EF0329-A487-2A83-9FAA-04027807BB55.xml @@ -0,0 +1,1030 @@ + + +ERIGHTS-TEST +ERIGHTS +AUD_MOVEMENT_FILES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +MOVEMENT_FILE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +* +,*, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +REV +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +REVTYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +3 +0 +,3,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +AIPN_FILE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ASSIGN_END_DATE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ASSIGN_END_DATE_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ASSIGN_START_DATE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ASSIGN_START_DATE_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +BUDGET_LINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +CHILD_FREE_POSTING +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ESTIMATED_END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +FILE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +JOB_FROM_START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +JOB_ID_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +19 +0 +,19,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +NON_FAMILY_POSTING +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ORG_CD_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ORG_CD_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ORG_ID_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +19 +0 +,19,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +ORG_ID_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +19 +0 +,19,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +PRIORITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +SM_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +STATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +YEAR +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +19 +0 +,19,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +JOB_ID_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +19 +0 +,19,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +CONTEXT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +* +0 +,*,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +MOVEMENT_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +* +0 +,*,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +AIPN_NOTIF_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +WITHOUT_RIGHTS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +REASON_EOC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +MOVEMENT_NR +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +AIPN_DOCUMENT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +REASON_DELETION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +COUNTRY_CODE_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +CITY_CODE_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +EVACUATION_STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +NOTIFICATION_ENTITY_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +COUNTRY_CODE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +CITY_CODE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +walloar +2021-03-24 10:12:14 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +CREATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +6A3C3676-5CEA-42E9-F9C6-C7A76F51A955 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +CREATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +DDFC97FF-8272-0664-5A1D-D2B117AF8508 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +UPDATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +137BD333-1FF0-B075-36AA-C62673AE2C7A +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +UPDATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +B6A888C3-81F9-A831-9AD0-AD528A1BC180 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +EOD_DATE +walloar +2022-03-18 10:16:53 UTC +eRights +4E807C5E-6E34-3606-2578-6ADD5FB364D2 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +FAMILY_POSTING +walloar +2022-03-18 10:16:53 UTC +eRights +D6E0C3B9-E472-C51A-6DB3-3639F7DCA3B6 +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +JOBTO_FAMILY_POSTING +walloar +2022-03-18 10:16:53 UTC +eRights +488C7140-D173-9102-EFB9-D2A4CCAB6A19 +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +HOD_POSTING +walloar +2022-03-18 10:16:53 UTC +eRights +38A79B28-D2EB-47DC-E895-9E7801E57D37 +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +AIRFREIGHT_VOLUME_CEILING +walloar +2022-03-18 10:16:53 UTC +eRights +7AFE69DC-E2B1-8958-15DA-93EF9B5577D9 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +PERSONNEL_TYPE_DESC +walloar +2022-03-18 10:16:53 UTC +eRights +CB78349F-96CB-F605-E60A-D06063402F6E +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +COLUMN1 +walloar +2022-03-18 10:16:53 UTC +eRights +6B998C2D-8919-60D7-CA6C-A1C95BB9FDB6 +true +false +1 +LOGDT024 +3000 BYTE +3000 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +INTERNAL_COMMENT +walloar +2022-03-18 10:16:53 UTC +eRights +7A271E7D-B759-F4FC-DFDC-94474C197D72 +true +false +1 +LOGDT024 +3000 BYTE +3000 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +BUDGET_LINE_JOB_TO +walloar +2022-03-18 10:16:53 UTC +eRights +88345DD8-A5BA-034F-0A13-09DAB6B8BAE3 +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +BUDGET_LINE_JOB_FROM +walloar +2022-03-18 10:16:53 UTC +eRights +135AA283-6FF1-5A13-D45F-3E7C00BAD8D1 +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +HOD_JOB_FROM +walloar +2022-03-18 10:16:53 UTC +eRights +188E6555-2383-F65F-78AE-45101DC97D4A +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +HOD_JOB_TO +walloar +2022-03-18 10:16:53 UTC +eRights +0318B4F6-C448-E73C-16C0-B1A32775472A +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +FOLLOWUP_FLAGS +walloar +2022-03-24 12:37:46 UTC + +eRights +8000AC60-19E7-94BC-B768-405746A450B9 +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +PERSONNEL_TYPE_ID +walloar +2022-03-24 12:37:46 UTC +eRights +53D1CCA3-9041-17A4-BB3B-D76C385A5CC5 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +JOB_FUNCTION_CODE +walloar +2022-03-24 12:37:46 UTC +eRights +CA982D16-7893-4499-65B6-AA0DE42CBF7E +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +JOB_FUNCTION_DESC +walloar +2022-03-24 12:37:46 UTC +eRights +178ACD37-2BAF-649B-331F-03CD7F9C9AD7 +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +INSTITUTION_CODE +walloar +2022-03-24 12:37:46 UTC +eRights +CF56384A-91A5-8CA9-A67F-D43F658EE4CA +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +INSTITUTION_DESC +walloar +2022-03-24 12:37:46 UTC +eRights +2EE91534-2DD8-7BC8-B090-3FBD2FE041D4 +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +IATA_CODE +walloar +2022-07-19 13:44:13 UTC +eRights +5F1F2134-BC73-6EFB-38C9-5FA087B8FEA9 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +IATA_CODE_FROM +walloar +2022-07-19 13:44:13 UTC +eRights +C69193CB-4CB4-C341-22BA-70360006363C +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_MOVEMENT_FILES +IATA_CODE_TO +walloar +2022-07-19 13:44:13 UTC +eRights +D30CA2EC-FE3F-FF33-0878-68CCD7610ABC +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml new file mode 100644 index 0000000..fc03ea0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/887B1F03-49B7-7723-3B93-2D358B356F65.xml @@ -0,0 +1,326 @@ + + +ERIGHTS-TEST +ERIGHTS +DECLARATION_PERSON +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +DECLARATION_PERSON +DECLARATION_PERSON_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +DECLARATION_PERSON +DECLARATION_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +DECLARATION_PERSON +INS_ELIGIBILITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +DECLARATION_PERSON +REM_ELIGIBILITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +DECLARATION_PERSON +TUD_ELIGIBILITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +DECLARATION_PERSON +DECLAREDPERSON +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +tapiafo +2021-03-08 13:10:10 UTC +eRights +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +tapiafo +2021-03-08 13:09:27 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 13:10:26 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 13:10:39 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +DECLARATION_PERSON +TRP_CODE +tapiafo +2021-03-08 13:10:57 UTC +eRights +true +false +1 +LOGDT024 +100 BYTE +100 BYTE,, +false + + +ERIGHTS-TEST +DECLARATION_PERSON +CLAIM +tapiafo +2021-03-08 13:11:12 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +tapiafo +2021-04-23 16:48:03 UTC +eRights +true +false +1 +LOGDT024 +1000 +1000,, +false + + +ERIGHTS-TEST +DECLARATION_PERSON +FAMILY_MEMBER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +DECLARATION_PERSON +CREATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +EF418F94-2DB2-1E34-6869-C3D8548EC525 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +DECLARATION_PERSON +UPDATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +84ED826A-3AAF-77FF-1A43-EBD131564082 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +DECLARATION_PERSON +UPDATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +E42B32C5-4287-F128-CA60-3756D1E91C4A +true +false +1 +LOGDT007 +7 +7,, +false + + + + +tapiafo +2021-03-08 13:24:03 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +DECLARATION_PERSON_UK1 +walloar +2022-03-18 10:16:53 UTC +eRights +21511F68-A15A-37DC-66C1-E0BA071DBFCC +Unique Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +PK_DECLARATION_PERSON +walloar +2021-04-26 13:29:43 UTC +eRights +E2EF8E03-783A-6521-B3C5-922395806B46 +Unique Plain Index +false + + + + + +ERIGHTS-TEST +ERIGHTS +DECLARATION_PERSON_UK1 +walloar +2022-03-18 10:16:53 UTC +eRights +E2793491-094B-7E57-81E6-B1E08C0326D5 +Unique Plain Index +false + + + + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml new file mode 100644 index 0000000..1a4981e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/8EED841A-564F-73D4-B7CC-0B63A5CD28B4.xml @@ -0,0 +1,465 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_FAMILY_MEMBERS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + 'LA' + AND sysdate BETWEEN csisla_start_eligibility AND csisla_end_eligibility + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_person_relatives@easrefn.cc.cec.eu.int pr + WHERE + pr.per_id = r.per_id + AND pr.rel_per_id = la.per_id + )]]> + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +FAMILY_MEMBER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +51 BYTE +51 BYTE,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +SURNAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +BIRTH_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +FIRST_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +DATE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +GENDER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +TRP_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +TRP_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +REL_PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +REL_SURNAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +REL_BIRTH_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +REL_FIRST_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +REL_DATE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +REL_GENDER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_FAMILY_MEMBERS +SOURCE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +6 BYTE +6 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_FAMILY_MEMBERS_PER_ID +walloar +2021-03-02 08:04:52 UTC +eRights +false + + + + + + + +true +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PER_ID +ERIGHTS +MV_PERSONS_HIST_EEAS + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/926C55C3-96A6-4A84-D90B-50E4273EC6D7.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/926C55C3-96A6-4A84-D90B-50E4273EC6D7.xml new file mode 100644 index 0000000..d4c021d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/926C55C3-96A6-4A84-D90B-50E4273EC6D7.xml @@ -0,0 +1,193 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONNEL_TYPE +walloar +2022-08-26 15:21:56 UTC +eRights +BF46F3A1-9C61-6FE3-490F-75A32E342553 +4 +false +true +true + + + +ERIGHTS-TEST +MV_PERSONNEL_TYPE +ID +walloar +2022-08-26 15:21:56 UTC +eRights +F3E6E95F-5FA1-9379-C78E-168986B9B700 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_PERSONNEL_TYPE +CODE +walloar +2022-08-26 15:21:56 UTC +eRights +190D5CF7-6218-C746-9E6A-22CD1E6BD2FA +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONNEL_TYPE +IS_ACTIVE +walloar +2022-08-26 15:21:56 UTC +eRights +CBCE9B0A-BF3E-8D8A-FBC8-743C91DD3407 +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONNEL_TYPE +PRIORITY +walloar +2022-08-26 15:21:56 UTC +eRights +572B7A40-A6DD-AA7B-7D36-DF02DF2768BA +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_PERSONNEL_TYPE +CREATION_USER +walloar +2022-08-26 15:21:56 UTC +eRights +E4F3335C-5B2D-7AEA-195C-C8BF6C726F1A +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_PERSONNEL_TYPE +CREATION_DATE +walloar +2022-08-26 15:21:56 UTC +eRights +BC0A41E4-A383-6D8F-3B33-C1725128C22D +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONNEL_TYPE +MODIFICATION_USER +walloar +2022-08-26 15:21:56 UTC +eRights +0A3333D3-924F-5C7E-D4BB-8EA07E55E430 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_PERSONNEL_TYPE +MODIFICATION_DATE +walloar +2022-08-26 15:21:56 UTC +eRights +9DF6B7E8-C87D-2540-B877-D4A5A066F2EF +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONNEL_TYPE +OLD_EDELHRM_CODE +walloar +2022-08-26 15:21:56 UTC +eRights +D1FC724C-FD1B-49D4-EA5A-854F56270602 +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONNEL_TYPE +DESCRIPTION +walloar +2022-08-26 15:21:56 UTC +eRights +43323BC6-AC42-E49D-9C7F-DEE4E2A30713 +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml new file mode 100644 index 0000000..c8b7f48 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/96F2BF80-ABE7-64D5-3B2D-EF0B62207BCF.xml @@ -0,0 +1,472 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_HIST_COM +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +NO_SYSPER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +6 +0 +,6,0 +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +TITLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +SURNAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +BIRTH_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +FIRST_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +FIRST_NAME2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +FIRST_NAME3 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +FIRST_NAME4 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +GENRE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +DATE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +PLACE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +COUNTRY_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +36 BYTE +36 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +USERID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +MONIKER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_COM +DOMAINE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_PERSONS_HIST_COM_PER_ID +walloar +2021-03-02 08:04:52 UTC +eRights +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_PERSONS_HIST_COM_PER_ID_START_DATE +walloar +2021-03-02 08:04:52 UTC +eRights +false + + + + + + + + +true +ERIGHTS +MV_PERSONS_HIST_COM + + +PER_ID +ERIGHTS +MV_PERSONS_HIST_COM + + +NO_SYSPER +ERIGHTS +MV_PERSONS_HIST_COM + + +TITLE +ERIGHTS +MV_PERSONS_HIST_COM + + +SURNAME +ERIGHTS +MV_PERSONS_HIST_COM + + +BIRTH_NAME +ERIGHTS +MV_PERSONS_HIST_COM + + +FIRST_NAME +ERIGHTS +MV_PERSONS_HIST_COM + + +FIRST_NAME2 +ERIGHTS +MV_PERSONS_HIST_COM + + +FIRST_NAME3 +ERIGHTS +MV_PERSONS_HIST_COM + + +FIRST_NAME4 +ERIGHTS +MV_PERSONS_HIST_COM + + +GENRE +ERIGHTS +MV_PERSONS_HIST_COM + + +DATE_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_COM + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_COM + + +CREATION_DATE +ERIGHTS +MV_PERSONS_HIST_COM + + +MODIFICATION_DATE +ERIGHTS +MV_PERSONS_HIST_COM + + +START_DATE +ERIGHTS +MV_PERSONS_HIST_COM + + +END_DATE +ERIGHTS +MV_PERSONS_HIST_COM + + +USERID +ERIGHTS +MV_PERSONS_HIST_COM + + +MONIKER +ERIGHTS +MV_PERSONS_HIST_COM + + +DOMAINE +ERIGHTS +MV_PERSONS_HIST_COM + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_COM + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml new file mode 100644 index 0000000..363affa --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/98E73A9D-E059-2081-CA84-1CC8723D60B9.xml @@ -0,0 +1,223 @@ + + +ERIGHTS-TEST +ERIGHTS +NOTIFICATIONS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +NOTIFICATIONS +NOTIFICATION_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +NOTIFICATION_ENTITY_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +NOTIFICATION_TEMPLATE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +NOTIFICATION_TEMPLATE_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +EMAIL_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +NOTIFICATION_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +SENDING_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +CREATED_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +UPDATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +SENT_AT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +ALERT_SENT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 CHAR +'N' +1 CHAR,, +false + + +ERIGHTS-TEST +NOTIFICATIONS +COMMUNICATION_ID +walloar +2022-07-19 13:44:13 UTC + +eRights +500785D9-A5ED-862D-9451-87148AA7073D +true +false +1 +LOGDT024 +256 CHAR +256 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_NOTIFICATIONS +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml new file mode 100644 index 0000000..e973ad0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9DA3B915-AEE5-12D0-D98D-46EE098AD69E.xml @@ -0,0 +1,156 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_USER_MGMT_PREFERENCES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_USER_MGMT_PREFERENCES +PER_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_USER_MGMT_PREFERENCES +LANGUAGE_ISO +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +ANK_USER_MGMT_PREFERENCES +REGION_ISO +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +ANK_USER_MGMT_PREFERENCES +ZONE_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ANK_USER_MGMT_PREFERENCES +CREATED_BY +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_USER_MGMT_PREFERENCES +CREATED_AT +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +ANK_USER_MGMT_PREFERENCES +UPDATED_BY +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_USER_MGMT_PREFERENCES +UPDATED_AT +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT015 +6 +,6, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_USER_MGMT_PREFERENCES +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_USER_MGMT_PREFERENCES +walloar +2021-03-02 08:04:50 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml new file mode 100644 index 0000000..be7b1b7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9EF11193-6374-BB46-55D6-BB9A0959070C.xml @@ -0,0 +1,309 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +SOJ_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +JCX_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +TOJ_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +5 CHAR +5 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +INS_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_EEAS +TYPE_OF_POST +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ASSIGN_HIST_EEAS_JOB_ID +walloar +2021-04-26 13:29:43 UTC +eRights +1002E2F3-C3B1-FB02-0F44-7F207ACAD2A7 +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ASSIGN_HIST_EEAS_PER_ID +walloar +2021-04-26 13:29:43 UTC +eRights +99C393ED-5807-8887-A0C9-44DB89C23A3E +false + + + + + + + +true +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +SOJ_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +JCX_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +JOB_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +PER_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +TOJ_CD +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +JOB_TYPE +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +START_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +END_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +INS_CD +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +CREATION_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +MODIFICATION_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +TYPE_OF_POST +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml new file mode 100644 index 0000000..4300e8b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/9EF72CA0-6663-4411-3182-FF0B74E9241A.xml @@ -0,0 +1,501 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ENTITIES_HIST +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_ENTITIES_HIST +HORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ORG_ID_PARENT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +MAIN_ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ORG_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ORG_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ORG_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +FR_ORG_DESC +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ENG_CITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +FRA_CITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +COUNTRY_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ENG_COUNTRY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +FRA_COUNTRY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +IS_DELEGATION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +TOR_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +TYPEOFENTITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +DELEGATION_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +743 BYTE +743 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +DEL_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ALERT_STATUS_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +ALERT_STATUS_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +SEVERITY_LEVEL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +SHORT_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +SORT_ORDER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +HIERARCHY_LEVEL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_ENTITIES_HIST +OFFICIAL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ENTITIES_HIST_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +56599DF7-A262-6503-E00B-F1F360FBB70E +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_ENTIT_HIST_MAIN_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +9000476B-AD1C-750E-678E-7EF65A511757 +false + + + + + + + +true +ERIGHTS +MV_ENTITIES_HIST + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml new file mode 100644 index 0000000..fcf6e1e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A3555874-6A6F-641F-2400-2E068C6B604D.xml @@ -0,0 +1,472 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_HIST_EEAS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +NO_SYSPER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +6 +0 +,6,0 +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +TITLE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +SURNAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +BIRTH_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +FIRST_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +FIRST_NAME2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +FIRST_NAME3 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +FIRST_NAME4 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +GENRE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +DATE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +PLACE_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +70 CHAR +70 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +COUNTRY_OF_BIRTH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +36 BYTE +36 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +USERID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +MONIKER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_HIST_EEAS +DOMAIN +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_PERSONS_HIST_EEAS_PER_ID +walloar +2021-03-02 08:04:52 UTC +eRights +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_PERSONS_HIST_EEAS_PER_ID_START_DATE +walloar +2021-03-02 08:04:52 UTC +eRights +false + + + + + + + + +true +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PER_ID +ERIGHTS +MV_PERSONS_HIST_EEAS + + +NO_SYSPER +ERIGHTS +MV_PERSONS_HIST_EEAS + + +TITLE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +SURNAME +ERIGHTS +MV_PERSONS_HIST_EEAS + + +BIRTH_NAME +ERIGHTS +MV_PERSONS_HIST_EEAS + + +FIRST_NAME +ERIGHTS +MV_PERSONS_HIST_EEAS + + +FIRST_NAME2 +ERIGHTS +MV_PERSONS_HIST_EEAS + + +FIRST_NAME3 +ERIGHTS +MV_PERSONS_HIST_EEAS + + +FIRST_NAME4 +ERIGHTS +MV_PERSONS_HIST_EEAS + + +GENRE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +DATE_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_EEAS + + +CREATION_DATE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +MODIFICATION_DATE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +START_DATE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +END_DATE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +USERID +ERIGHTS +MV_PERSONS_HIST_EEAS + + +MONIKER +ERIGHTS +MV_PERSONS_HIST_EEAS + + +DOMAIN +ERIGHTS +MV_PERSONS_HIST_EEAS + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_EEAS + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml new file mode 100644 index 0000000..1505ada --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A6257421-D545-B3B5-624E-10E8629539A7.xml @@ -0,0 +1,315 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_FIRED_TRIGGERS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +ENTRY_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +95 BYTE +95 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +TRIGGER_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +TRIGGER_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +INSTANCE_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +FIRED_TIME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +SCHED_TIME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +PRIORITY +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +STATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +16 BYTE +16 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +JOB_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +JOB_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +IS_NONCONCURRENT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_FIRED_TRIGGERS +REQUESTS_RECOVERY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_FIRED_TRIGGER_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_FT_INST_JOB_REQ_RCVRY +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_FT_JG +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_FT_J_G +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_FT_TG +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_FT_TRIG_INST_NAME +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_FT_T_G +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_FIRED_TRIGGER_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml new file mode 100644 index 0000000..c297366 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A6C5CBA7-01B1-3ABB-D601-ACC91E621818.xml @@ -0,0 +1,87 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_CALENDARS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_CALENDARS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_CALENDARS +CALENDAR_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_CALENDARS +CALENDAR +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT029 +4000 +4000,, +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_CALENDARS_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_CALENDARS_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml new file mode 100644 index 0000000..9b93c2d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/A8AD1617-D099-9273-CCEA-861E1F9E01A4.xml @@ -0,0 +1,261 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_ASSIGNMENTS_HIST_COM +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +SOJ_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +TOJ_CD +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +5 CHAR +5 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +EXPECTED_END_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +INS_CD +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +CREATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +MODIFICATION_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_ASSIGNMENTS_HIST_COM +TYPE_OF_POST +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + + + +true +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +SOJ_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +JOB_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +PER_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +TOJ_CD +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +JOB_TYPE +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +START_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +END_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +EXPECTED_END_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +INS_CD +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +CREATION_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +MODIFICATION_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +TYPE_OF_POST +ERIGHTS +MV_ASSIGNMENTS_HIST_COM + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml new file mode 100644 index 0000000..59104b9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/ADE383DF-74A4-CD6A-4E95-CEF01A091594.xml @@ -0,0 +1,188 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAXS_CAT +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ENTITLMNT_MAXS_CAT +ENTITLMNT_MAX_CAT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_CAT +ENTITLMNT_TYPE_CAT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_MAXS_CAT +DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_CAT +CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_CAT +NON_FAMILY_POSTING +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_CAT +HOD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_CAT +SUGGESTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_CAT +ENT_ORDER +walloar +2021-03-03 10:51:03 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_CAT +JOBTO_NON_FAMILY_POSTING +walloar +2022-03-18 10:16:53 UTC +eRights +4603B162-E8FD-2966-241A-2F00F5C5DCA6 +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ENTITLMNT_MAXS_CAT +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ENTITLMNT_MAXS_CAT +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/B792575D-ED90-C316-85A8-FB178ED60508.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/B792575D-ED90-C316-85A8-FB178ED60508.xml new file mode 100644 index 0000000..dbd449c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/B792575D-ED90-C316-85A8-FB178ED60508.xml @@ -0,0 +1,196 @@ + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_DOC_SECTIONS +walloar +2021-04-20 14:07:17 UTC + +eRights +table_82 +false +true +true + + +walloar +2021-04-20 14:10:41 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:10:41 UTC +eRights +false +1 +LOGDT024 +500 CHAR +500 CHAR,, +false + + +walloar +2021-04-20 14:10:41 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +walloar +2021-04-20 14:10:41 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +walloar +2021-04-20 14:10:41 UTC +eRights +true +false +1 +LOGDT025 +1 CHAR + + + + + +1 CHAR,, +false + + +walloar +2021-04-20 14:10:41 UTC +eRights +true +false +1 +LOGDT025 +1 CHAR + + + + + +1 CHAR,, +false + + +walloar +2021-04-20 14:21:59 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:10:41 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:10:41 UTC +eRights +false +1 +LOGDT007 +,, +false + + +walloar +2021-04-20 14:10:41 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:10:41 UTC +eRights +false +1 +LOGDT007 +,, +false + + + + +walloar +2021-04-20 14:10:41 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_DOC_SECTIONS_PK +walloar +2021-04-26 13:29:43 UTC +eRights +18753D88-6550-9D98-C16A-41C2FAAA9365 +Unique Plain Index +false + + + + + +walloar +2021-04-20 14:11:33 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-04-20 14:12:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml new file mode 100644 index 0000000..96fac35 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BADACA51-70E4-EC8C-D01B-F5E4FF488931.xml @@ -0,0 +1,130 @@ + + +ERIGHTS-TEST +ERIGHTS +DB_LOG +walloar +2021-03-02 08:04:46 UTC + +eRights +false +true +true + + +ERIGHTS-TEST +DB_LOG +ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +DB_LOG +PRIORITY +walloar +2021-03-02 08:04:47 UTC +eRights +CKC_PRIORITY_DB_LOG +true +false +1 +LOGDT025 +1 BYTE + + + + + + + + + + + +1 BYTE,, +false + + +ERIGHTS-TEST +DB_LOG +PROGRAM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1000 BYTE +1000 BYTE,, +false + + +ERIGHTS-TEST +DB_LOG +MESSAGE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +ERIGHTS-TEST +DB_LOG +MOMENTUM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +SYSDATE +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_DB_LOG +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_DB_LOG +walloar +2021-03-02 08:04:50 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml new file mode 100644 index 0000000..d1f0096 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BB0C4DC3-BF20-022E-2EC1-9C41C22FD723.xml @@ -0,0 +1,170 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_EMAIL_RCPTS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPTS +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPTS +EMAIL_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPTS +REF_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPTS +ADDRESS +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPTS +CUSTOMIZED_HEADER +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_RCPTS +CUSTOMIZED_FOOTER +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_EMAIL_RCPTS +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +UN_ANK_EDMS_E_RCPTS_ID_EMA_REF +walloar +2021-03-02 08:04:56 UTC +eRights +Unique Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_EMAIL_RCPTS +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +ERIGHTS-TEST +ERIGHTS +UN_ANK_EDMS_E_RCPTS_ID_EMA_REF +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml new file mode 100644 index 0000000..e96a8e4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/BC9CF966-6DA1-DD2D-6C9F-1018DA6AB905.xml @@ -0,0 +1,133 @@ + + +ERIGHTS-TEST +ERIGHTS +NOTIFICATION_TEMPLATES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +NOTIFICATION_TEMPLATES +NOTIFICATION_TEMPLATE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +NOTIFICATION_TEMPLATES +NOTIFICATION_TEMPLATE_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, +false + + +ERIGHTS-TEST +NOTIFICATION_TEMPLATES +MESSAGE_SUBJECT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, +false + + +ERIGHTS-TEST +NOTIFICATION_TEMPLATES +MESSAGE_BODY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +NOTIFICATION_TEMPLATES +MESSAGE_SIGNATURE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, +false + + +ERIGHTS-TEST +NOTIFICATION_TEMPLATES +NOTIFICATION_TEMPLATE_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, +false + + +ERIGHTS-TEST +NOTIFICATION_TEMPLATES +DEFAULT_TEMPLATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 CHAR +1 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_NOTIFICATION_TEMPLATES +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml new file mode 100644 index 0000000..33d2aea --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C4319A8E-825F-7AB2-3624-D14729BF4C0B.xml @@ -0,0 +1,114 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAXS_OPTIONS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ENTITLMNT_MAXS_OPTIONS +ENTITLMNT_MAX_OPTIONS_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_OPTIONS +DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_OPTIONS +VALUE_NUMBER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_OPTIONS +VALUE_STRING +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_OPTIONS +ENTITLMNT_MAX_CAT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAX_OPTIONS_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAX_OPTIONS_PK +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml new file mode 100644 index 0000000..a356b20 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04.xml @@ -0,0 +1,242 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_CITIES +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true + + + +ERIGHTS-TEST +MV_CITIES +CITY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +MV_CITIES +COUNTRY_CODE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +MV_CITIES +CD_SYSPER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +MV_CITIES +CD2_SYSPER +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +MV_CITIES +CD_SIRE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +MV_CITIES +NAP_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +MV_CITIES +RNG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_CITIES +DESCRIPTION_EN +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +240 BYTE +240 BYTE,, +false + + +ERIGHTS-TEST +MV_CITIES +DESCRIPTION_FR +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +240 BYTE +240 BYTE,, +false + + + + +true +ERIGHTS +MV_CITIES + + +CITY_CODE +ERIGHTS +MV_CITIES + + +COUNTRY_CODE +ERIGHTS +MV_CITIES + + +CD_SYSPER +ERIGHTS +MV_CITIES + + +CD2_SYSPER +ERIGHTS +MV_CITIES + + +CD_SIRE +ERIGHTS +MV_CITIES + + +NAP_CD +ERIGHTS +MV_CITIES + + +RNG_ID +ERIGHTS +MV_CITIES + + +DESCRIPTION_EN +ERIGHTS +MV_CITIES + + +DESCRIPTION_FR +ERIGHTS +MV_CITIES + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml new file mode 100644 index 0000000..66d70f1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/C90B6B2E-6AFE-10D3-5D64-4CD75BE58765.xml @@ -0,0 +1,161 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_EMAIL_COMM_DATA +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_DATA +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_DATA +CLIENT_COMMUNICATION_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_DATA +SERVER_COMMUNICATION_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +25 BYTE +25 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_DATA +SENT_AT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_DATA +STATUS +walloar +2021-03-02 08:04:46 UTC +eRights +CHK_ANK_EDMS_ECD_STATUS +false +1 +LOGDT024 +10 BYTE + + + + + + + +10 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAIL_COMM_DATA +LAST_CHECK_AT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_EMAIL_COMM_DATA +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_ANK_EDMS_ECD_STAT_LAST_CHK +walloar +2021-03-02 08:04:48 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_EMAIL_COMM_DATA +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml new file mode 100644 index 0000000..9148ffe --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CAAACAA1-83D5-1D1B-F26C-E2AD52338AD8.xml @@ -0,0 +1,333 @@ + + +ERIGHTS-TEST +ERIGHTS +DECLARATION +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +DECLARATION +DECLARATION_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +DECLARATION +MOVEMENT_FILE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +DECLARATION +PERSONS_BANK_INFO_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +walloar +2021-03-16 08:04:30 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +N +1 BYTE,, +false + + +walloar +2021-03-16 08:04:30 UTC +eRights +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +walloar +2021-03-16 08:20:02 UTC +eRights +true +false +1 +LOGDT007 +,, +false + + +walloar +2021-03-16 08:20:02 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-16 08:20:02 UTC +eRights +true +false +1 +LOGDT007 +,, +false + + +walloar +2021-03-16 08:20:02 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-19 15:16:49 UTC +eRights +true +false +1 +LOGDT007 +,, +false + + +walloar +2021-03-19 15:16:49 UTC +eRights +true +false +1 +LOGDT007 +,, +false + + +walloar +2021-03-22 14:13:33 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-05-19 15:18:14 UTC +eRights +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +DECLARATION +HOD_OPTION +walloar +2022-03-18 10:16:53 UTC +eRights +0BB8B908-6894-F887-0B1D-C68BD8890CF2 +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +DECLARATION +ENTRY_INTO_STORAGE +walloar +2022-03-18 10:16:53 UTC +eRights +0BCC78F6-EA5C-90AC-426F-A559BB5BA14B +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +DECLARATION +CITY_EIS +walloar +2022-03-18 10:16:53 UTC +eRights +4B40DD73-70BB-772C-9F4C-EE5A6D35EF7E +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +DECLARATION +COUNTRY_EIS +walloar +2022-03-18 10:16:53 UTC +eRights +91708A05-7F94-774B-8A12-C84C64E501A6 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +DECLARATION +AIRFREIGHT_VOLUME_CEILING +walloar +2022-03-18 10:16:53 UTC +eRights +AD60CCA2-D4AB-60C6-6647-0273A9180D45 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +DECLARATION +MAX_KG +walloar +2022-03-18 10:16:53 UTC +eRights +1CE143E9-59CC-6970-86B6-E8CE7136BC8C +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +DECLARATION +AIRFREIGHT_KG_CEILING +walloar +2022-03-18 10:16:53 UTC +eRights +621621D6-20D2-A86B-CC7D-779921E1E005 +true +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +DECLARATION_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +DECLARATION_PK +walloar +2021-03-02 08:04:50 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-06-03 10:45:05 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml new file mode 100644 index 0000000..98b6221 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CD3B9F86-0FF2-54CD-BE74-5E2B750A6C15.xml @@ -0,0 +1,343 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_HEAD_OF_DELEGATIONS +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +ORG_CD +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +ORG_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +MAIN_ORG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +TOR_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +TYPEOFENTITY_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +JOB_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +ASSIGMENT_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +JOB_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +FIRST_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +SURNAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_HEAD_OF_DELEGATIONS +EMAIL +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_HEAD_DEL_MAIN_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +2B7E0B35-7C21-68CA-3CAE-3D15F68C74DB +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_HEAD_DEL_ORG_ID +walloar +2021-04-26 13:29:43 UTC +eRights +E0CA5FE7-5F18-BCFF-3F52-CC65736930D6 +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_HEAD_DEL_JOB_ID +walloar +2022-10-24 12:24:52 UTC +eRights +BC9E0435-CA99-ADA0-7F6D-04AFD3948CD5 +false + + + + + + + +true +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +ORG_ID +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +ORG_CD +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +ORG_NAME +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +MAIN_ORG_ID +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +TOR_ID +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +TYPEOFENTITY_NAME +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +JOB_ID +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +ASSIGMENT_TYPE +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +JOB_TYPE +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +PER_ID +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +FIRST_NAME +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +SURNAME +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +EMAIL +ERIGHTS +MV_HEAD_OF_DELEGATIONS + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml new file mode 100644 index 0000000..709aa26 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/CF1B39AA-F945-FB72-E8F3-2257A622EDF4.xml @@ -0,0 +1,568 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_MV_ENTITIES +walloar +2021-03-02 08:04:46 UTC +eRights +4 +false +true +true +true + + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ORG_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ORG_ID_PARENT +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +MAIN_ORG_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ORG_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ORG_CD +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +SORT_ORDER +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ORG_DESC +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ORG_DESC_FRE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +CITY_CODE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ENG_CITY +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +FRA_CITY +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +COUNTRY_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ENG_COUNTRY +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +FRA_COUNTRY +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +IS_DELEGATION +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +TOR_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +TYPEOFENTITY_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +DELEGATION_NAME +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1003 BYTE +1003 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +DEL_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ALERT_STATUS_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ALERT_STATUS_CODE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +SEVERITY_LEVEL +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +REGION_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +REGION_CODE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +FRA_REGION_DESC +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +ENG_REGION_DESC +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +ANK_MV_ENTITIES +IS_HQ +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + + + +true +ERIGHTS +MV_ENTITIES + + +ORG_ID +ERIGHTS +MV_ENTITIES + + +ORG_ID_PARENT +ERIGHTS +MV_ENTITIES + + +MAIN_ORG_ID +ERIGHTS +MV_ENTITIES + + +ORG_NAME +ERIGHTS +MV_ENTITIES + + +ORG_CD +ERIGHTS +MV_ENTITIES + + +SORT_ORDER +ERIGHTS +MV_ENTITIES + + +ORG_DESC +ERIGHTS +MV_ENTITIES + + +ORG_DESC_FRE +ERIGHTS +MV_ENTITIES + + +CITY_CODE +ERIGHTS +MV_ENTITIES + + +ENG_CITY +ERIGHTS +MV_ENTITIES + + +FRA_CITY +ERIGHTS +MV_ENTITIES + + +COUNTRY_ID +ERIGHTS +MV_ENTITIES + + +ENG_COUNTRY +ERIGHTS +MV_ENTITIES + + +FRA_COUNTRY +ERIGHTS +MV_ENTITIES + + +IS_DELEGATION +ERIGHTS +MV_ENTITIES + + +TOR_ID +ERIGHTS +MV_ENTITIES + + +TYPEOFENTITY_NAME +ERIGHTS +MV_ENTITIES + + +DELEGATION_NAME +ERIGHTS +MV_ENTITIES + + +DEL_ID +ERIGHTS +MV_ENTITIES + + +ALERT_STATUS_ID +ERIGHTS +MV_ENTITIES + + +ALERT_STATUS_CODE +ERIGHTS +MV_ENTITIES + + +SEVERITY_LEVEL +ERIGHTS +MV_ENTITIES + + +REGION_ID +ERIGHTS +MV_ENTITIES + + +REGION_CODE +ERIGHTS +MV_ENTITIES + + +FRA_REGION_DESC +ERIGHTS +MV_ENTITIES + + +ENG_REGION_DESC +ERIGHTS +MV_ENTITIES + + +IS_HQ +ERIGHTS +MV_ENTITIES + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml new file mode 100644 index 0000000..65e0b8d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D0889A5C-5BF7-EAD8-AD04-19F2D9F15F8A.xml @@ -0,0 +1,157 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_SMS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_SMS +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS +BATCH_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS +CLIENT_DIVISION_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS +SOURCE_MESSAGE_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +25 BYTE +25 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS +EXPIRES_AT +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS +BODY +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT028 +4000 +4000,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS +CREATED_AT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS +CREATED_BY +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_SMS +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_SMS +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml new file mode 100644 index 0000000..6c47432 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D48CEAF2-4A4C-D60A-8843-4FFC6251D6D5.xml @@ -0,0 +1,139 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_CRON_TRIGGERS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_CRON_TRIGGERS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_CRON_TRIGGERS +TRIGGER_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_CRON_TRIGGERS +TRIGGER_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_CRON_TRIGGERS +CRON_EXPRESSION +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_CRON_TRIGGERS +TIME_ZONE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +80 BYTE +80 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_CRON_TRIG_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_CRON_TRIG_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml new file mode 100644 index 0000000..9887b5d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/D84B6ACA-5B22-21EB-5ADD-1F3CDC0A0CD8.xml @@ -0,0 +1,180 @@ + + +erights+dev+java +E_RIGHTS +DECLARATION_PERSON_ATTACHMENTS +tapiafo +2021-03-08 13:12:31 UTC +eRights +false +true +true + + +erights+dev+java +DECLARATION_PERSON_ATTACHMENTS +DECLARATION_PERS_ATTACHMENT_ID +tapiafo +2021-03-08 13:12:31 UTC +eRights +false +1 +LOGDT019 +,, +false + + +erights+dev+java +DECLARATION_PERSON_ATTACHMENTS +UUID +tapiafo +2021-03-08 13:12:31 UTC +eRights +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +erights+dev+java +DECLARATION_PERSON_ATTACHMENTS +DECLARATION_PERSON_ID +tapiafo +2021-03-08 13:12:31 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +erights+dev+java +DECLARATION_PERSON_ATTACHMENTS +FILE_NAME +tapiafo +2021-03-08 13:12:31 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +erights+dev+java +DECLARATION_PERSON_ATTACHMENTS +CREATED_BY +tapiafo +2021-03-08 13:12:31 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +erights+dev+java +DECLARATION_PERSON_ATTACHMENTS +CREATED_AT +tapiafo +2021-03-08 13:12:31 UTC +eRights +true +false +1 +LOGDT015 +6 +,6, +false + + +erights+dev+java +DECLARATION_PERSON_ATTACHMENTS +UPDATED_BY +tapiafo +2021-03-08 13:12:31 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +erights+dev+java +DECLARATION_PERSON_ATTACHMENTS +UPDATED_AT +tapiafo +2021-03-08 13:12:31 UTC +eRights +true +false +1 +LOGDT015 +6 +,6, +false + + + + +erights+dev+java +E_RIGHTS +PK_DECL_PERS_ATTACHMENTS +tapiafo +2021-03-08 13:12:32 UTC +eRights +true +Primary Constraint +false + + + + + +erights+dev+java +E_RIGHTS +IDX_DECL_PERS_ATTACHMENTS +tapiafo +2021-03-08 13:12:32 UTC +eRights +false + + + + + +erights+dev+java +E_RIGHTS +PK_DECL_PERS_ATTACHMENTS +tapiafo +2021-03-08 13:12:32 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/DE7F2F0C-F672-D3BE-EEB4-F258404C9A6B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/DE7F2F0C-F672-D3BE-EEB4-F258404C9A6B.xml new file mode 100644 index 0000000..a390367 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/DE7F2F0C-F672-D3BE-EEB4-F258404C9A6B.xml @@ -0,0 +1,221 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_BUDGDEL_ANALYTICAL_CODES +walloar +2022-09-01 10:11:41 UTC +eRights +6471AEBD-C397-8B65-E77B-883600EF56A5 +4 +false +true +true + + + +ERIGHTS-TEST +MV_BUDGDEL_ANALYTICAL_CODES +ID +walloar +2022-09-01 10:11:41 UTC +eRights +AA519226-43C2-37C6-2141-71CBF709631A +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_BUDGDEL_ANALYTICAL_CODES +CODE +walloar +2022-09-01 10:11:41 UTC +eRights +0E5BB303-4D81-EB6A-47C2-BABF50C24A65 +true +false +1 +LOGDT024 +15 BYTE +15 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGDEL_ANALYTICAL_CODES +ABBREV +walloar +2022-09-01 10:11:41 UTC +eRights +3FA0684D-92C7-FAE1-1F5A-B6CA085EC81C +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGDEL_ANALYTICAL_CODES +DESCRIPTION +walloar +2022-09-01 10:11:41 UTC +eRights +73654DC4-A06D-33E4-278F-6E2F22A1E290 +true +false +1 +LOGDT024 +254 BYTE +254 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGDEL_ANALYTICAL_CODES +LOC_OBJ_FOREIGN_ID +walloar +2022-09-01 10:11:41 UTC +eRights +6D49FE41-E3BA-2022-5585-F8347224724E +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGDEL_ANALYTICAL_CODES +POSTING_CRITERIA_TYPE_ID +walloar +2022-09-01 10:11:41 UTC +eRights +BCD38C1B-EC69-1065-DBDD-70ABD36A2C8B +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_BUDGDEL_ANALYTICAL_CODES +IS_VALID +walloar +2022-09-01 10:11:41 UTC +eRights +3F6ABA0F-AE5C-D3CE-42AD-0B0320935512 +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGDEL_ANALYTICAL_CODES +CREATED_BY +walloar +2022-09-01 10:11:41 UTC +eRights +AECB9E9B-AD4B-07E0-A3D0-78CE4937A764 +true +false +1 +LOGDT019 +* +0 +,*,0 +false + + +ERIGHTS-TEST +MV_BUDGDEL_ANALYTICAL_CODES +CREATED_AT +walloar +2022-09-01 10:11:41 UTC +eRights +0D028EC0-4B2C-E72F-31E1-786E1D35747F +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_BUDGDEL_ANALYTICAL_CODES +UPDATED_BY +walloar +2022-09-01 10:11:41 UTC +eRights +A3D5403E-D48A-0BA7-6890-4EB60EB8B947 +true +false +1 +LOGDT019 +* +0 +,*,0 +false + + +ERIGHTS-TEST +MV_BUDGDEL_ANALYTICAL_CODES +UPDATED_AT +walloar +2022-09-01 10:11:41 UTC +eRights +453029CD-8A04-8C3E-3D4D-90B70857DE28 +true +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IX_MV_BUDGDEL_ANALYTICAL_CODES_CODE +walloar +2022-09-01 10:11:41 UTC +eRights +3ED8D9B8-9B31-C5C8-9755-6CBF5C600A3D +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml new file mode 100644 index 0000000..11f2af0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/E06E7FD1-9973-2F17-993D-D45490D15039.xml @@ -0,0 +1,161 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_SMS_COMM_DATA +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_DATA +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_DATA +CLIENT_COMMUNICATION_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_DATA +SERVER_COMMUNICATION_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +25 BYTE +25 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_DATA +SENT_AT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_DATA +STATUS +walloar +2021-03-02 08:04:46 UTC +eRights +CHK_ANK_EDMS_SCD_STATUS +false +1 +LOGDT024 +10 BYTE + + + + + + + +10 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS_COMM_DATA +LAST_CHECK_AT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_SMS_COMM_DATA +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_ANK_EDMS_SCD_STAT_LAST_CHK +walloar +2021-03-02 08:04:48 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_SMS_COMM_DATA +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml new file mode 100644 index 0000000..3897699 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/E8F34643-58BB-B20C-5C30-7B8A6EBEC00E.xml @@ -0,0 +1,145 @@ + + +ERIGHTS-TEST +ERIGHTS +REQUEST_PERSON_ATTACHMENTS +tapiafo +2021-03-08 13:14:09 UTC +eRights +declaration_person_attachmentsv1 +false +true +true + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false +1 +LOGDT015 +6 +,6, +false + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false +1 +LOGDT019 +,, +false + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false +1 +LOGDT015 +6 +,6, +false + + + + +tapiafo +2021-03-08 13:14:09 UTC + +eRights +true +Primary Constraint +false + + + + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +false + + + + + +tapiafo +2021-03-08 13:14:09 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-09 10:27:29 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/EA9E31FF-E810-F570-9354-8B2CA9473801.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/EA9E31FF-E810-F570-9354-8B2CA9473801.xml new file mode 100644 index 0000000..7c2e75c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/EA9E31FF-E810-F570-9354-8B2CA9473801.xml @@ -0,0 +1,98 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNTS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ENTITLMNTS +ENTITLMNT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNTS +ENTITLMNT_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNTS +MOVEMENT_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNTS +AMOUNT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml new file mode 100644 index 0000000..02891d4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F141D682-7C3B-DF6E-0E85-6E3337BB1FA3.xml @@ -0,0 +1,131 @@ + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_CONTEXT +walloar +2021-03-02 08:04:46 UTC + +eRights +false +true +true + + +ERIGHTS-TEST +MOVEMENT_CONTEXT +MOVEMENT_CONTEXT_ID +walloar +2021-03-02 08:04:47 UTC + +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_CONTEXT +NAME +walloar +2021-03-02 08:04:47 UTC + +eRights +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_CONTEXT +CREATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_CONTEXT +CREATED_BY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_CONTEXT +UPDATED_BY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_CONTEXT +UPDATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_MOCO +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_MOCO +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F1A8F95B-9A82-95A2-5E7A-31E348399696.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F1A8F95B-9A82-95A2-5E7A-31E348399696.xml new file mode 100644 index 0000000..715d207 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F1A8F95B-9A82-95A2-5E7A-31E348399696.xml @@ -0,0 +1,116 @@ + + +ERIGHTS-TEST +ERIGHTS +AIRPORT_CITIES +walloar +2022-07-19 13:44:13 UTC +eRights +BFD7EE8B-0321-1593-5290-59D790D4160A +false +true +true + + +ERIGHTS-TEST +AIRPORT_CITIES +IATA_CODE +walloar +2022-07-19 13:44:13 UTC +eRights +0D56960F-1324-9455-96EF-51B30ABABF5C +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +AIRPORT_CITIES +COUNTRY_CODE +walloar +2022-07-19 13:44:13 UTC +eRights +7A49D9FC-B973-EC6B-4235-0DA3A21417A9 +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +AIRPORT_CITIES +CITY_CODE +walloar +2022-07-19 13:44:13 UTC +eRights +77689A4C-A36C-EFC2-1608-3B0E6A492F55 +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_AIRPORT_CITIES +walloar +2022-07-19 13:44:13 UTC +eRights +49E5D014-BD4E-69B3-881D-7D7E175D480D +true +Primary Constraint +false + + + + + + +ERIGHTS-TEST +ERIGHTS +PK_AIRPORT_CITIES +walloar +2022-07-19 13:44:13 UTC +eRights +B971AD62-EC63-F06A-E72E-740007508867 +Unique Plain Index +false + + + + + + + + +walloar +2022-07-19 13:55:51 UTC +eRights +036753D1-76ED-6481-2335-3A8B6A4F8CE6 +EB3AF18B-7D5F-9652-FD62-94B24BB93E8D +808EB0BA-5965-0E2C-BF26-88AA735F1844 +ERIGHTS.AIRPORTS +IATA_CODE + + +walloar +2022-07-19 13:56:28 UTC +eRights +6F932B42-0350-B75C-2312-C594D883BBB3 +C751D3F5-E6F7-DEE5-5CAF-2635F91A2A04 +1B8996F9-E0C8-9AEA-1F33-1944069A7248 +ERIGHTS.MV_CITIES +CITY_CODE + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F28AEFDE-0804-3C83-F214-6330BE84607B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F28AEFDE-0804-3C83-F214-6330BE84607B.xml new file mode 100644 index 0000000..b5e23da --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F28AEFDE-0804-3C83-F214-6330BE84607B.xml @@ -0,0 +1,221 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_EMAILS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +BATCH_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +CLIENT_DIVISION_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +SOURCE_MESSAGE_ID +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +25 BYTE +25 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +EXPIRES_AT +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +FORMAT +walloar +2021-03-02 08:04:46 UTC +eRights +CHK_ANK_EDMS_EMAILS_FORMAT +false +1 +LOGDT024 +10 BYTE + + + + + +10 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +SENDER +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +SUBJECT +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +BODY +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT028 +4000 +4000,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +SIGNATURE +walloar +2021-03-02 08:04:46 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +CREATED_AT +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_EDMS_EMAILS +CREATED_BY +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_EMAILS +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_EMAILS +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F3764DB4-0649-A94A-7497-92FDAEA69888.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F3764DB4-0649-A94A-7497-92FDAEA69888.xml new file mode 100644 index 0000000..5e38cda --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F3764DB4-0649-A94A-7497-92FDAEA69888.xml @@ -0,0 +1,140 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_EDMS_SMS_RCPTS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ANK_EDMS_SMS_RCPTS +ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS_RCPTS +SMS_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ANK_EDMS_SMS_RCPTS +REF_ID +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +ANK_EDMS_SMS_RCPTS +PHONE_NUMBER +walloar +2021-03-02 08:04:46 UTC +eRights +false +1 +LOGDT024 +25 BYTE +25 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_SMS_RCPTS +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +UN_ANK_EDMS_S_RCPTS_ID_EMA_REF +walloar +2021-03-02 08:04:56 UTC +eRights +Unique Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_EDMS_SMS_RCPTS +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + +ERIGHTS-TEST +ERIGHTS +UN_ANK_EDMS_S_RCPTS_ID_EMA_REF +walloar +2021-03-02 08:04:48 UTC +eRights +Unique Plain Index +false + + + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F6108759-A9AE-8679-03BA-D124DEC368E8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F6108759-A9AE-8679-03BA-D124DEC368E8.xml new file mode 100644 index 0000000..a83bdd1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/F6108759-A9AE-8679-03BA-D124DEC368E8.xml @@ -0,0 +1,197 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_TYPES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ENTITLMNT_TYPES +ENTITLMNT_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES +ENTITLMNT_TYPE_CATG_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_TYPES +MOVEMENT_TYPE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_TYPES +MOVEMENT_FILE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_TYPES +STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES +DISABLE_REASON +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES +ENT_TYPE_DEFAULT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_TYPES +ENABLE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +1 CHAR +'Y' +1 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_TYPES_MOVMNT_FIL_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_TYPES_MOVMNT_FIL_PK +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml new file mode 100644 index 0000000..497805c --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/FA6E481B-B84F-5B32-07EE-23CD79A3E131.xml @@ -0,0 +1,291 @@ + + +ERIGHTS-TEST +ERIGHTS +ENTITLMNT_MAXS_DEFAULT +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +ENTITLMNT_MAX_DEFAULT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +CITY_CODE_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +CITY_CODE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +COUNTRY_CODE_TO +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +COUNTRY_CODE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +CREATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +CREATED_BY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +UPDATED_BY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +UPDATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +AMOUNT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +CURRENCY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +START_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +ENTITLMNT_MAX_CAT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +LATEST +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +'Y' +1 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +SOURCE_DATA +walloar +2022-03-18 10:16:53 UTC +eRights +C2FE2C8D-C994-E067-4E86-E6005238744D +true +false +1 +LOGDT024 +20 BYTE +'HR' +20 BYTE,, +false + + +ERIGHTS-TEST +ENTITLMNT_MAXS_DEFAULT +KG +walloar +2022-03-18 10:16:53 UTC +eRights +B35672C5-44C9-FF72-573D-CEDE5855D3A2 +true +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ENTITLMNT_MAX_DEFAULT +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ENTITLMNT_MAX_DEFAULT +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/FF74A656-1D74-CA01-A02B-65A0579DD208.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/FF74A656-1D74-CA01-A02B-65A0579DD208.xml new file mode 100644 index 0000000..d23ab54 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_0/FF74A656-1D74-CA01-A02B-65A0579DD208.xml @@ -0,0 +1,1151 @@ + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_FILES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +MOVEMENT_FILES +MOVEMENT_FILE_ID +walloar +2021-03-02 08:04:47 UTC + +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +FILE_ID +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +PER_ID +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +CONTEXT_ID +walloar +2021-03-02 08:04:47 UTC + +eRights +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +MOVEMENT_FILES +PRIORITY +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +YEAR +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-02 10:16:41 UTC + +DF9185C9-9D35-5F2E-839C-C1B6709C0F50 +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +JOB_ID_TO +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +NON_FAMILY_POSTING +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +CHILD_FREE_POSTING +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +START_DATE +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ESTIMATED_END_DATE +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +STATE +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +16 CHAR +16 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +BUDGET_LINE +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +256 CHAR +256 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +EOD_DATE +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ORG_ID_FROM +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ORG_ID_TO +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +JOB_ID_FROM +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ASSIGN_START_DATE_FROM +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ASSIGN_END_DATE_FROM +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ASSIGN_START_DATE_TO +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ASSIGN_END_DATE_TO +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +JOB_FROM_START_DATE +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ORG_CD_FROM +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ORG_CD_TO +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +SM_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +AIPN_FILE_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +CREATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +sysdate +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +CREATED_BY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +UPDATED_BY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +UPDATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +AIPN_NOTIF_DATE +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +WITHOUT_RIGHTS +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +REASON_EOC +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +MOVEMENT_NR +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MOVEMENT_FILES +AIPN_DOCUMENT_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +REASON_DELETION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +COUNTRY_CODE_TO +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +CITY_CODE_TO +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +EVACUATION_STATUS +walloar +2021-03-02 08:04:47 UTC + +eRights +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +NOTIFICATION_ENTITY_ID +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +CITY_CODE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +COUNTRY_CODE_FROM +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +walloar +2021-03-23 13:09:53 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +FAMILY_POSTING +walloar +2022-03-18 10:16:53 UTC +eRights +FE2882E7-7513-C6C8-ADBA-A74FDD6B3311 +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +JOBTO_FAMILY_POSTING +walloar +2022-03-18 10:16:53 UTC +eRights +7889F22A-A140-32F0-D9E6-86DEB029083D +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +HOD_POSTING +walloar +2022-03-18 10:16:53 UTC +eRights +654752CD-4DC9-392D-EB65-F90C4E2DB8C9 +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +AIRFREIGHT_VOLUME_CEILING +walloar +2022-03-18 10:16:53 UTC +eRights +C3A039CB-407B-8C1E-75BD-C57098E4370D +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +PERSONNEL_TYPE_DESC +walloar +2022-03-18 10:16:53 UTC +eRights +213DB312-CD2F-9802-BB3B-E0C1F7FC761A +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +COLUMN1 +walloar +2022-03-18 10:16:53 UTC +eRights +BACF6234-8A2E-6EEA-E92C-BBDEBA659210 +true +false +1 +LOGDT024 +3000 BYTE +3000 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +INTERNAL_COMMENT +walloar +2022-03-18 10:16:53 UTC +eRights +B97890E1-F3BB-F91C-900E-77A097B87A05 +true +false +1 +LOGDT024 +3000 BYTE +3000 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +BUDGET_LINE_JOB_TO +walloar +2022-03-18 10:16:53 UTC +eRights +2FFB90DC-4B45-9738-D13F-4601CA498CD8 +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +BUDGET_LINE_JOB_FROM +walloar +2022-03-18 10:16:53 UTC +eRights +1710FF3F-9EBB-4506-C005-D32ED628317D +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +HOD_JOB_TO +walloar +2022-03-18 10:16:53 UTC +eRights +472B9564-6FDE-92FE-FAA6-9E9A55FEB0E5 +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +HOD_JOB_FROM +walloar +2022-03-18 10:16:53 UTC +eRights +299A494A-F417-06D9-1488-FB558FAECB05 +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +FOLLOWUP_FLAGS +walloar +2022-03-18 10:16:53 UTC + +eRights +68299845-C159-6657-1558-0386EB167C9E +true +false +1 +LOGDT024 +1000 CHAR +1000 CHAR,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +PERSONNEL_TYPE_ID +walloar +2022-03-24 12:37:46 UTC +eRights +5757A2B0-5CF6-4078-968D-30D3A9757870 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +JOB_FUNCTION_CODE +walloar +2022-03-24 12:37:46 UTC +eRights +962E9691-FF1D-4958-EFAA-FA127039297D +true +false +1 +LOGDT024 +150 BYTE +150 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +JOB_FUNCTION_DESC +walloar +2022-03-24 12:37:46 UTC +eRights +A0420B6E-53D2-EE0F-9300-9F9EC767BF1E +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +INSTITUTION_CODE +walloar +2022-03-24 12:37:46 UTC +eRights +18C59FE5-AB0A-DE6D-6863-21BEE0DB6844 +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +INSTITUTION_DESC +walloar +2022-03-24 12:37:46 UTC +eRights +317CD559-9CB3-EB7C-2FAA-85FADB66162D +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ORIGIN_CITY_TEXT +walloar +2022-07-19 13:44:13 UTC +eRights +73A9D875-AFC4-8FF5-04A5-3A54491E54E5 +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ORIGIN_CITY_CODE +walloar +2022-07-19 13:44:13 UTC +eRights +93CAC926-C248-1CC7-7205-7632D0AF9F0B +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +ORIGIN_COUNTRY_CODE +walloar +2022-07-19 13:44:13 UTC +eRights +7FD3C63D-94E3-398A-0A9B-564E1A95B813 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +IATA_CODE +walloar +2022-07-19 13:44:13 UTC +eRights +E9DF1619-72B6-A4B2-E5E1-75DC0BC7C6E6 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +IATA_CODE_FROM +walloar +2022-07-19 13:44:13 UTC +eRights +CB237413-CA04-25C1-2CB4-EBE0770C0AB9 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MOVEMENT_FILES +IATA_CODE_TO +walloar +2022-07-19 13:44:13 UTC +eRights +428C2C9F-6518-6A3E-163C-08A6BF68CC29 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_MOFI +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +UK_MOFI +walloar +2021-03-02 08:04:56 UTC +eRights +Unique Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_MOFI +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +ERIGHTS-TEST +ERIGHTS +UK_MOFI_FILE_ID +walloar +2021-03-02 08:04:51 UTC +eRights +Unique Plain Index +false + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + + + +walloar +2021-03-23 13:10:03 UTC +eRights +1B05FE22-DF96-7AA9-9F17-FECFF293B693 +52675525-20A2-9D94-FC27-4C5EBA8B3915 +83150B1B-A6E0-3EB4-3C24-DA77824D2EBF +ERIGHTS.MV_ENTITIES +ORG_ID + + +walloar +2022-10-07 11:56:34 UTC +eRights +8D1F6CFA-A363-F4F0-7D93-7F631A1EC8D3 +73DB7963-4431-C4C4-5300-393B221A8121 +04E6EE75-0212-D11C-EAAD-34E8BB42ADA5 +ERIGHTS.V_PEOPLE +PER_ID + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/01197962-C671-CBDB-2A12-9A0182777C73.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/01197962-C671-CBDB-2A12-9A0182777C73.xml new file mode 100644 index 0000000..217a68b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/01197962-C671-CBDB-2A12-9A0182777C73.xml @@ -0,0 +1,655 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSON_ADDRESS +walloar +2021-03-11 10:08:49 UTC + +eRights +801BC462-2D73-94ED-C3B6-DC1524E58158 +4 +false +true +true + + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +PER_ID +walloar +2021-03-11 10:08:49 UTC +eRights +0520CD33-568F-D789-1EE9-06F2B788E1A3 +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +START_DATE +walloar +2021-03-11 10:08:49 UTC +eRights +405BE559-E70E-0B8D-A947-5E95EEB8062D +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +END_DATE +walloar +2021-03-11 10:08:49 UTC +eRights +4225AF30-39AF-C0FF-C9C4-AF08768AE3EA +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +EFFECTIVE_DATE +walloar +2021-03-11 10:08:49 UTC +eRights +987851D9-F325-7DE5-1EBF-9802BD95A047 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +DECL_CHG_DATE +walloar +2021-03-11 10:08:49 UTC +eRights +3858ECEE-A9EF-93D1-FC62-4FB29C278629 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +TADR_CD +walloar +2021-03-11 10:08:49 UTC +eRights +88686B11-C3B0-D727-A172-AAA95BA0215D +true +false +1 +LOGDT019 +3 +0 +,3,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +ADDRESS_TYPE_CODE +walloar +2021-03-11 10:08:49 UTC +eRights +3972EE18-127D-52E7-76C0-AD0943AE8E93 +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +COUNTRY_CODE +walloar +2021-03-11 10:08:49 UTC +eRights +5BBE871B-29C6-09A9-41D0-E4D2D6F3B2B3 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +CITY_NAME +walloar +2021-03-11 10:08:49 UTC +eRights +CA9C1DD1-9FE2-F0A1-3B6F-54D1B4A7A6A2 +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +POSTAL_CODE +walloar +2021-03-11 10:08:49 UTC +eRights +5ED9E56A-C74D-97BE-31D7-3BB078C5609D +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +STREET_NAME +walloar +2021-03-11 10:08:49 UTC +eRights +879FD7FF-700A-C4A6-65B2-C4AB507EE55B +true +false +1 +LOGDT024 +250 CHAR +250 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +STREET_NAME1 +walloar +2021-03-11 10:08:49 UTC +eRights +A0F800D7-351B-8D99-EA4C-BD67797507B7 +true +false +1 +LOGDT024 +250 CHAR +250 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +STREET_NAME2 +walloar +2021-03-11 10:08:49 UTC +eRights +303CDA24-31D7-FD52-E628-D2EAFBB36A0A +true +false +1 +LOGDT024 +250 CHAR +250 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +STREET_NUMBER +walloar +2021-03-11 10:08:49 UTC +eRights +163EDCF9-31F9-2BE9-A706-788582BFDECC +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +POSTAL_BOX +walloar +2021-03-11 10:08:49 UTC +eRights +0557030D-4A81-465A-76DC-F8FD8EFA9EE2 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +COMMENTS +walloar +2021-03-11 10:08:49 UTC +eRights +7180D15E-FF31-7D9E-7C6C-6A91F74807D6 +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +ADDITIONAL_ADDRESS +walloar +2021-03-11 10:08:49 UTC +eRights +76F74A6D-93DB-1668-A77B-9F1D97E82C7A +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +ADDITIONAL_ADDRESS2 +walloar +2021-03-11 10:08:49 UTC +eRights +1E74FA5D-D655-717D-61F0-25FA2C4C11F5 +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +OREDER_ADDRESS +walloar +2021-03-11 10:08:49 UTC +eRights +D3350581-3C85-C8C3-69B4-E6E62F49A151 +true +false +1 +LOGDT019 +2 +0 +,2,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +LANGUAGE_CODE +walloar +2021-03-11 10:08:49 UTC +eRights +4951874F-D3AE-C87C-4386-7811FB7F8320 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +PER_ID_REL_PERS +walloar +2021-03-11 10:08:49 UTC +eRights +238771D6-BFE2-D93B-5B90-D57CE6F373E4 +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +SURNAME +walloar +2021-03-11 10:08:49 UTC +eRights +9F251F6E-648E-1F97-DA53-EC5632504526 +true +false +1 +LOGDT024 +80 CHAR +80 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +FIRST_NAME +walloar +2021-03-11 10:08:49 UTC +eRights +58460334-773A-E8E6-8E4E-8E19FE90CD96 +true +false +1 +LOGDT024 +80 CHAR +80 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +DATE_OF_BIRTH +walloar +2021-03-11 10:08:49 UTC +eRights +876B0864-19F2-D5D9-525D-B6B5FFD9C16F +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +TITLE +walloar +2021-03-11 10:08:49 UTC +eRights +EC12BA53-E94E-35A5-F1E4-C99C8D03CF3A +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +LINK_ADR_TEL +walloar +2021-03-11 10:08:49 UTC +eRights +848FFCFE-AB89-712F-C5E6-FA294376FA08 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +SP2_ADDRESS_ID +walloar +2021-03-11 10:08:49 UTC +eRights +0C74673B-321E-BD13-5410-28E7E7632F28 +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +IRIS_ADDRESS_ID +walloar +2021-03-11 10:08:49 UTC +eRights +996E58CD-E496-1B27-6605-E299CDEF8B1D +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +SRC_ID +walloar +2021-03-11 10:08:49 UTC +eRights +ABB74343-32B1-E985-99C7-C8DBF47B5626 +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +INS_CD +walloar +2021-03-11 10:08:49 UTC +eRights +6413562A-BAF0-5685-6ACE-7EA57D7B44E3 +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +UNIQ_ID +walloar +2021-03-11 10:08:49 UTC +eRights +747AE2A9-445D-60CE-FA36-C2E3495500B4 +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +CREATED_DATE +walloar +2022-03-18 10:16:53 UTC +eRights +27C70365-0493-31AE-A939-F4FFB25163C7 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS +UPDATED_DATE +walloar +2022-03-18 10:16:53 UTC +eRights +0665902F-800D-A7EB-9B1C-DA28E77B9E2A +true +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_PERSON_ADDRESS_PER_ID +walloar +2021-03-11 10:08:49 UTC +eRights +A1BE94AF-9837-C14F-BE05-3BEA0D85C531 +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/052CD975-5E14-2580-4FFE-1E2CF467946F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/052CD975-5E14-2580-4FFE-1E2CF467946F.xml new file mode 100644 index 0000000..9b713c4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/052CD975-5E14-2580-4FFE-1E2CF467946F.xml @@ -0,0 +1,1110 @@ + + +ERIGHTS-TEST +ERIGHTS +AUD_POSTING_ALLOWANCES +walloar +2022-10-25 12:45:50 UTC +eRights +9CAF944D-ED38-4262-09EB-F1C392AF41D8 +false +true +true + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +REV +walloar +2022-10-25 12:45:50 UTC +eRights +96A7B241-FD81-7F31-18ED-00ECCC14307B +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +REVTYPE +walloar +2022-10-25 12:45:50 UTC +eRights +6D8065B9-5C61-2DF4-425A-C75AB8829A5E +true +false +1 +LOGDT019 +3 +0 +,3,0 +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +POSTING_ALLOWANCE_ID +walloar +2022-10-25 12:45:50 UTC +eRights +15F6097D-3B3C-E610-8430-76C46DCEEE5B +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +PER_ID +walloar +2022-10-25 12:45:50 UTC +eRights +51B03416-FE6E-D74A-D955-5426F66EE181 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +EXERCISE_YEAR +walloar +2022-10-25 12:45:50 UTC +eRights +965296C9-1E19-1363-7768-41266DED0806 +true +false +1 +LOGDT019 +4 +0 +,4,0 +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +POSTING_ALLOWANCE_NUMBER +walloar +2022-10-25 12:45:50 UTC +eRights +17531920-27D3-7800-E6CF-A6C0A05F8039 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +POSTING_ALLOWANCE_STRING_ID +walloar +2022-10-25 12:45:50 UTC +eRights +6FDB0FA7-191A-1AFE-B183-F32AE78790A6 +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +POSTING_ALLOWANCE_TYPE +walloar +2022-10-25 12:45:50 UTC +eRights +78602ED5-C131-7FB6-EF0F-E3A9FE79F4A9 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +POSTING_ALLOWANCE_REQ_TYPE +walloar +2022-10-25 12:45:50 UTC +eRights +ECA94B1A-30D9-31F2-0D7E-7DC403D49BA6 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +PARENT_POSTING_ALLOWANCE_ID +walloar +2022-10-25 12:45:50 UTC +eRights +D912D3D7-00A3-6433-5833-93F48A4279E3 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +COMMENTS +walloar +2022-10-25 12:45:50 UTC +eRights +AF330241-5E15-7A17-5DDD-073380D7973F +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +OUTGOING_TRIP_AMOUNT +walloar +2022-10-25 12:45:50 UTC +eRights +9AE3D407-954E-B6B8-3D47-E383BD813525 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +OUTGOING_TRIP_AMOUNT_CURRENCY +walloar +2022-10-25 12:45:50 UTC +eRights +19ABE097-755B-DCDF-494F-817C5CCAF7BC +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +RETURN_TRIP_AMOUNT +walloar +2022-10-25 12:45:50 UTC +eRights +A723C895-D12B-58BE-6B04-CFC23C34AB23 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +RETURN_TRIP_AMOUNT_CURRENCY +walloar +2022-10-25 12:45:50 UTC +eRights +1F237D0E-C559-1257-FBAE-1ED62D977B72 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +CALC_TOTAL_AMOUNT +walloar +2022-10-25 12:45:50 UTC +eRights +F9B8528D-5A61-572F-A0C8-E587A4F3B518 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +CALC_TOTAL_AMOUNT_CURRENCY +walloar +2022-10-25 12:45:50 UTC +eRights +16E0B915-DDBE-574F-5D6E-6E914F2CDB3E +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +TOTAL_AMOUNT +walloar +2022-10-25 12:45:50 UTC +eRights +25445B68-6EFD-16AD-3000-20B1279FC782 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +TOTAL_AMOUNT_CURRENCY +walloar +2022-10-25 12:45:50 UTC +eRights +68B7DC68-C1C5-05D8-342A-A92335C2821E +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +PAYMENT_PERIOD_YEAR +walloar +2022-10-25 12:45:50 UTC +eRights +98D66CCD-E9C8-F9D5-5313-7C603E9FDECD +true +false +1 +LOGDT019 +4 +0 +,4,0 +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +PAYMENT_PERIOD_MONTH +walloar +2022-10-25 12:45:50 UTC +eRights +B65F5A1F-C5B3-A90E-AE35-021BF4E748A7 +true +false +1 +LOGDT019 +2 +0 +,2,0 +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +PAYMENT_REFERENCE +walloar +2022-10-25 12:45:50 UTC +eRights +FF762959-0A73-BFFB-087A-5E5E8AE23E5A +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +PAYMENT_STATE +walloar +2022-10-25 12:45:50 UTC +eRights +AB3C4783-DCE2-6AA9-8BD3-C255360B39AF +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +ASSIGNMENT_CITY_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +5B1A334F-DF36-303F-BE64-2978CF5AAD87 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +ASSIGNMENT_COUNTRY_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +FCB7EFAE-0CFA-4041-4992-83BA720C6B1C +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +ASSIGNMENT_CITY_NAME +walloar +2022-10-25 12:45:50 UTC +eRights +1F1FEFAC-6A0D-3916-8AF8-F655352013F0 +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +ASSIGNMENT_IATA_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +CE5F405C-2CAB-E61D-0916-A8A607921875 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +ORIGIN_CITY_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +E394FEBA-E068-BEF3-AD6D-9377BE359AC2 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +ORIGIN_COUNTRY_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +8CD0F0DA-A3E7-2877-BFB5-834AE9A4380B +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +ORIGIN_CITY_NAME +walloar +2022-10-25 12:45:50 UTC +eRights +04AF43BB-10A8-1F6D-A9B8-D10A4290F5D3 +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +ORIGIN_IATA_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +DA1B24AC-7DE8-3BCE-763A-A961C3CF0E5E +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +RECRUITMENT_CITY_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +880D8402-F355-B4FF-93FA-23E39D94875F +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +RECRUITMENT_COUNTRY_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +6C49DE27-FF03-C1E7-F1C9-4378E36B410C +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +RECRUITMENT_CITY_NAME +walloar +2022-10-25 12:45:50 UTC +eRights +34117591-95E7-3C29-36CD-1D3C8B0F5808 +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +RECRUITMENT_IATA_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +25838D30-2BE5-4E00-860F-81C513E04E4D +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +SM_ID +walloar +2022-10-25 12:45:50 UTC +eRights +6F0B2DA1-83F6-F4DF-E8A7-B0A186978868 +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +STATE +walloar +2022-10-25 12:45:50 UTC +eRights +2998B7C9-BB0F-95A6-09ED-EE8292298953 +true +false +1 +LOGDT024 +16 CHAR +16 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +POSTING_ALLOWANCE_DISCRIMINATORY_TYPE +walloar +2022-10-25 12:45:50 UTC +eRights +3BC363A3-2CA9-A56C-2EBA-C9288BF77045 +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +CREATED_BY +walloar +2022-10-25 12:45:50 UTC +eRights +C7E9FF0F-5549-C152-13A1-7AE84714C4AB +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +CREATED_AT +walloar +2022-10-25 12:45:50 UTC +eRights +491E3C67-38F1-7361-520D-25EA717FD36E +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +UPDATED_BY +walloar +2022-10-25 12:45:50 UTC +eRights +8899648C-C0C5-FE64-7A17-6524DE2458A8 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +UPDATED_AT +walloar +2022-10-25 12:45:50 UTC +eRights +07F514D3-7311-BB15-FED7-6F5C16804957 +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +DELEGATION_ORG_ID +walloar +2022-10-25 12:45:50 UTC +eRights +96857237-59C8-4AEF-383F-26DBA9B0659D +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +ORIGIN_PERIOD_YEAR +walloar +2022-11-11 07:44:41 UTC +eRights +8CC06608-E81C-B838-2866-DC4676612879 +true +false +1 +LOGDT019 +4 +0 +,4,0 +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +ORIGIN_PERIOD_MONTH +walloar +2022-11-11 07:44:41 UTC +eRights +716FB3F2-CF36-D243-E80E-93357EDA4149 +true +false +1 +LOGDT019 +2 +0 +,2,0 +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +ORIGIN_COUNTRY_NAME +walloar +2022-11-11 07:44:41 UTC +eRights +D228F81F-4CB7-4725-3EC1-0F13550300EA +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +ASSIGNMENT_COUNTRY_NAME +walloar +2022-11-11 07:44:41 UTC +eRights +19762382-B43F-797F-EC24-5DFCF30D0DD1 +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +ASSIGNMENT_START_DATE +walloar +2023-02-07 10:46:15 UTC +eRights +C5C593BE-7B68-1C21-8A4F-463FFEEFD449 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +SOJ_ID +walloar +2023-02-07 10:46:15 UTC +eRights +E0F21817-FBEB-6F68-6596-6FF95B5F87E5 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +SPOUSE_PER_ID +walloar +2023-02-07 10:46:15 UTC +eRights +CB132F93-1CC3-2513-D233-573814CFFA4F +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +DOUBLE_POSTING +walloar +2023-02-07 10:46:15 UTC +eRights +1D50F765-FCB3-E72A-275B-6AFDC36A6256 +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +PAYMENT_ID +walloar +2023-02-07 10:46:15 UTC +eRights +17179BB4-8822-1FFA-CA77-A613823E3FC0 +true +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +PAYMENT_EVENT_ID +walloar +2023-02-07 10:46:15 UTC +eRights +91D69D09-65BE-1543-7DD1-01538613495B +true +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +DUAL_POSTING +walloar +2023-02-07 10:46:15 UTC +eRights +34ACEEF7-3A0B-CC88-C518-16E6B20D39FA +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +ORIGIN_PLACE_SEARCH +walloar +2023-02-07 10:46:15 UTC +eRights +445679B4-F507-260A-51AF-6310B93A1448 +true +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +V_REPORT_POSTING_ALLOWANCES +walloar +2023-06-15 12:36:23 UTC +eRights +06541F9B-0128-C1C6-5B2C-5C1028AEF190 +true +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +ORIGIN_AIRPORT_NAME +walloar +2023-06-15 12:36:23 UTC +eRights +E9830F25-FBFC-6C98-7694-6F364F245A1F +true +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +ASSIGNMENT_AIRPORT_NAME +walloar +2023-06-15 12:36:23 UTC +eRights +BC6D1DCE-0F3D-FE45-0BB9-EB29DE083733 +true +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +NEW_TOTAL_AMOUNT_CURRENCY +walloar +2023-06-15 12:36:23 UTC +eRights +176E8422-FF1D-DCBD-463F-2C3A76388907 +true +false +1 +LOGDT024 +5 BYTE +5 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +INITIAL_TOTAL_AMOUNT_CURRENCY +walloar +2023-06-15 12:36:23 UTC +eRights +2030B613-8193-55DC-5BB7-56205369DE97 +true +false +1 +LOGDT024 +5 BYTE +5 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +REGULARIZE_AMOUNT_CURRENCY +walloar +2023-06-15 12:36:23 UTC +eRights +0F413072-5A17-80C7-7C82-53560184C89D +true +false +1 +LOGDT024 +5 BYTE +5 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +NEW_TOTAL_AMOUNT +walloar +2023-06-15 12:36:23 UTC +eRights +CE551A9E-CD15-1490-3A87-D0E7CC0009BA +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +INITIAL_TOTAL_AMOUNT +walloar +2023-06-15 12:36:23 UTC +eRights +42EDC0E2-4ED8-B7AA-BD16-EE2E95F3D1DA +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +REGULARIZE_AMOUNT +walloar +2023-06-15 12:36:23 UTC +eRights +93B72C50-66D9-DEC6-502F-A2792C7C3200 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +EXPATRIATION_ALLOWANCE_DATE_FROM +walloar +2023-06-15 12:36:23 UTC +eRights +BDE4A05A-1512-08DC-EF98-02E38391274E +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +EXPATRIATION_ALLOWANCE_DATE_TO +walloar +2023-06-15 12:36:23 UTC +eRights +DD7D0213-FFF2-E6E1-B6F0-EAFACF541790 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +ASSIGNMENT_END_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +EBCAF15D-B443-DB83-2F06-7C66E053D05C +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +FIRST_NATIONALITY_COUNTRY +walloar +2023-06-15 12:36:23 UTC +eRights +D4288E6A-0032-F013-7614-7D91E3495DBD +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCES +CHILD_POSTING_ALLOWANCE_ID +walloar +2023-06-15 12:36:23 UTC +eRights +220FF996-81E2-7AC7-74CF-B39EF69A26D1 +true +false +1 +LOGDT019 +,, +false + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/091AA2F5-6BCF-1DBE-B34A-A5C7B64FA858.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/091AA2F5-6BCF-1DBE-B34A-A5C7B64FA858.xml new file mode 100644 index 0000000..2ade814 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/091AA2F5-6BCF-1DBE-B34A-A5C7B64FA858.xml @@ -0,0 +1,247 @@ + + +ERIGHTS-TEST +ERIGHTS +COMMENTS +walloar +2022-03-18 10:16:53 UTC +eRights +2B3A44F7-639E-E311-78C6-7C12065F909F +false +true +true + + +ERIGHTS-TEST +COMMENTS +COMMENTS_ID +walloar +2022-03-18 10:16:53 UTC +eRights +F629E0C3-1F54-2D33-01A2-165BC4BBB44F +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +COMMENTS +ENTITY_ID +walloar +2022-03-18 10:16:53 UTC +eRights +C723A466-175E-1C70-2F88-F95EBC695A56 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +COMMENTS +COMMENT_TEXT +walloar +2022-03-18 10:16:53 UTC +eRights +EDC4763D-C6A6-3799-7977-F4F809B9CF80 +true +false +1 +LOGDT024 +3000 BYTE +3000 BYTE,, +false + + +ERIGHTS-TEST +COMMENTS +COMMENT_TYPE +walloar +2022-03-18 10:16:53 UTC +eRights +4E44E07D-37AE-D66A-9FC8-6C2C581E6FC5 +CK_COMMENTS_TYPE +true +false +1 +LOGDT024 +200 BYTE + + + + + +200 BYTE,, +false + + +ERIGHTS-TEST +COMMENTS +DISPLAY_ORDER +walloar +2022-03-18 10:16:53 UTC +eRights +BBAF799D-1E7F-5867-6946-89D47C6C3DCC +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +COMMENTS +DELETED +walloar +2022-03-18 10:16:53 UTC +eRights +2BF1308A-B044-DA08-3EF2-E1087D34CE75 +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +COMMENTS +CREATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +B8061775-C8C2-CE53-F250-9D31FD1ED0A4 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +COMMENTS +UPDATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +1D9F0AB5-CC8E-357C-0B4E-B9E251E200FD +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +COMMENTS +CREATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +3A18C9A4-511C-0A2D-285F-268D9A9A64F8 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +COMMENTS +UPDATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +9735D50E-6AFF-84CF-38CC-02806FF1B622 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +COMMENTS +AUTHOR_NAME +walloar +2022-03-18 10:16:53 UTC +eRights +7D330FE3-6E1B-8100-4625-E4553F11A169 +true +false +1 +LOGDT024 +2000 BYTE +2000 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +COMMENTS_PK +walloar +2022-03-18 10:16:53 UTC +eRights +9797CC31-8220-08E2-DBC1-75B6AE916EF5 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +COMMENTS_PK +walloar +2022-03-18 10:16:53 UTC +eRights +C9C7A3E8-20CE-3BC2-3BFA-71D89B1239F7 +Unique Plain Index +false + + + + + + + +walloar +2022-03-18 11:00:43 UTC + +eRights +0853B9C5-5CE5-1A37-E240-F8EE6307C01A +4CB74767-3856-9458-45EB-D45BEC46CD86 +B8C3F732-622C-E39C-A635-D5D001CC00A5 +ERIGHTS.REQUESTS +REQUEST_ID + + +walloar +2022-03-21 11:21:20 UTC + +eRights +0853B9C5-5CE5-1A37-E240-F8EE6307C01A +FF74A656-1D74-CA01-A02B-65A0579DD208 +EC3E4FCB-381E-4110-E5F2-080037C6A330 +ERIGHTS.MOVEMENT_FILES +MOVEMENT_FILE_ID + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/092765D7-5F0D-1566-F3F8-D938BC59E91C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/092765D7-5F0D-1566-F3F8-D938BC59E91C.xml new file mode 100644 index 0000000..df013f6 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/092765D7-5F0D-1566-F3F8-D938BC59E91C.xml @@ -0,0 +1,312 @@ + + +ERIGHTS-TEST +ERIGHTS +RATES_MISSING +walloar +2022-03-18 10:16:52 UTC +eRights +45B33082-8F47-9146-7F5A-E1398BFDE9DB +false +true +true + + +ERIGHTS-TEST +RATES_MISSING +RATES_MISSING_ID +walloar +2022-03-18 10:16:53 UTC +eRights +0BE73393-8E2B-EA82-2F9C-87AA930B71AD +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +RATES_MISSING +YEAR +walloar +2022-03-18 10:16:53 UTC +eRights +491DE0F2-A4E0-4BFC-3104-B6CE71E0A62B +true +false +1 +LOGDT024 +4 BYTE +4 BYTE,, +false + + +ERIGHTS-TEST +RATES_MISSING +CITY_CODE_TO +walloar +2022-03-18 10:16:53 UTC +eRights +1D19AAE1-0FB1-1B6E-A3B6-C44F914E8AF7 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +RATES_MISSING +CITY_CODE_FROM +walloar +2022-03-18 10:16:53 UTC +eRights +480607BE-78EF-6342-7B70-82445BF6FD25 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +RATES_MISSING +ENTITLMNT_MAX_CAT_ID +walloar +2022-03-18 10:16:53 UTC +eRights +E8AC5105-F802-7563-29A2-4BE4A676EFD7 +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +RATES_MISSING +KG +walloar +2022-03-18 10:16:53 UTC +eRights +72724FD0-2BD5-0E30-5CAB-32109E393DBA +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +RATES_MISSING +RATE_TYPE +walloar +2022-03-18 10:16:53 UTC +eRights +A3C6453C-9D51-91C9-6F46-2FFB0F3EAC7D +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +RATES_MISSING +RECEIVED +walloar +2022-03-18 10:16:53 UTC +eRights +0BA6ED83-7523-8314-C9EC-C5D63583ADAB +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +RATES_MISSING +RECEIVED_DATE +walloar +2022-03-18 10:16:53 UTC +eRights +DC0861C0-36E6-BDDD-AD06-558284B79F10 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +RATES_MISSING +COUNTRY_CODE_TO +walloar +2022-03-18 10:16:53 UTC +eRights +D3A5A321-9CD0-C6D7-5EEB-D69BE8CB7A39 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +RATES_MISSING +COUNTRY_CODE_FROM +walloar +2022-03-18 10:16:53 UTC +eRights +8109DFE6-9FCE-3D15-EF64-AECD7D39DFF8 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +RATES_MISSING +START_DATE +walloar +2022-03-18 10:16:53 UTC +eRights +B0B98206-C65F-1BCF-A428-D8573CB38437 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +RATES_MISSING +ENTITLMNT_MAX_ID +walloar +2022-03-24 12:37:46 UTC +eRights +78D542B4-1D6A-4D38-DA5C-3102C1A2EEF5 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +RATES_MISSING +WS_EXCEPTION +walloar +2023-06-15 12:36:23 UTC +eRights +6B0B851F-3AE7-B00B-3131-62C1F7448374 +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +RATES_MISSING +MOVE_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +D0354501-1109-7BAB-31C0-8AA597D6568D +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +RATES_MISSING +ERROR_MESSAGE +walloar +2023-06-15 12:36:23 UTC +eRights +6C4F1E84-E0A4-8E3C-7514-E3DB0A2543D8 +true +false +1 +LOGDT024 +3000 BYTE +3000 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +RATES_MISSING_PK +walloar +2022-03-18 10:16:53 UTC +eRights +83E7059F-D2F6-0977-9D07-E4E738E89D66 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +RATES_MISSING_PK +walloar +2022-03-18 10:16:53 UTC +eRights +A3E6B145-2216-10DC-1471-BFDC4D232DA1 +Unique Plain Index +false + + + + + +walloar +2022-03-21 10:52:45 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/0A7F0271-CEE8-4992-401E-A5C035922D09.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/0A7F0271-CEE8-4992-401E-A5C035922D09.xml new file mode 100644 index 0000000..0e43f87 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/0A7F0271-CEE8-4992-401E-A5C035922D09.xml @@ -0,0 +1,60 @@ + + +ERIGHTS-TEST +ERIGHTS +T_AIRPORT_STEMS +walloar +2023-06-15 12:36:23 UTC +eRights +CD17F7AA-B3D7-14BC-D621-A35E19E4C10F +false +true +true + + +ERIGHTS-TEST +T_AIRPORT_STEMS +AIRPORT_STEM_ID +walloar +2023-06-15 12:36:23 UTC +eRights +511269E6-2270-2D74-0452-24C68556BBE2 +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_T_AIRPORT_STEMS +walloar +2023-06-15 12:36:23 UTC +eRights +BD73B612-F32E-7D53-D92D-9348DB3F77F9 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_T_AIRPORT_STEMS +walloar +2023-06-15 12:36:23 UTC +eRights +0C2D00CD-2B2C-A091-2477-18F6A4296D5D +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/112EB801-5A61-424B-6FDE-47E8FC178C20.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/112EB801-5A61-424B-6FDE-47E8FC178C20.xml new file mode 100644 index 0000000..4b95440 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/112EB801-5A61-424B-6FDE-47E8FC178C20.xml @@ -0,0 +1,156 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_INSTITUTIONS +walloar +2022-03-18 10:16:52 UTC +eRights +D9926AD0-4683-0D9E-88C0-5C5F7B9B1742 +4 +false +true +true + + + +ERIGHTS-TEST +MV_INSTITUTIONS +EASREFN_INS_CD +walloar +2022-03-29 16:59:57 UTC +eRights +E44DD5E7-6B9D-48A3-4207-2ED83B64C333 +true +false +1 +LOGDT024 +40 BYTE +40 BYTE,, +false + + +ERIGHTS-TEST +MV_INSTITUTIONS +INS_CD +walloar +2022-03-18 10:16:53 UTC +eRights +5F4677BC-7D6A-3CCB-638D-2F3FB0BB5B13 +true +false +1 +LOGDT024 +40 BYTE +40 BYTE,, +false + + +ERIGHTS-TEST +MV_INSTITUTIONS +INS_TYPE +walloar +2022-03-18 10:16:53 UTC +eRights +6A0D84BD-2C2E-A22D-AC6E-630C1A409A6F +true +false +1 +LOGDT024 +11 BYTE +11 BYTE,, +false + + +ERIGHTS-TEST +MV_INSTITUTIONS +EASREFN_NAME +walloar +2022-03-29 16:59:57 UTC +eRights +2B30AC73-CC13-D5DC-6AB2-6B58FD6F6F79 +true +false +1 +LOGDT024 +2000 BYTE +2000 BYTE,, +false + + +ERIGHTS-TEST +MV_INSTITUTIONS +NAME +walloar +2022-03-18 10:16:53 UTC +eRights +14F9585C-8CDB-584A-E76C-DFE96FABCB5F +true +false +1 +LOGDT024 +2000 BYTE +2000 BYTE,, +false + + +ERIGHTS-TEST +MV_INSTITUTIONS +START_DATE +walloar +2022-03-18 10:16:53 UTC +eRights +67C2B3DC-9DF5-75E6-ACC8-DDD9CA9EAFD4 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_INSTITUTIONS +END_DATE +walloar +2022-03-18 10:16:53 UTC +eRights +4C832593-F023-36E7-2C6E-B1F4A7F9F749 +true +false +1 +LOGDT007 +7 +7,, +false + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/14E143ED-1A36-9D69-DCCA-7028B010A30D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/14E143ED-1A36-9D69-DCCA-7028B010A30D.xml new file mode 100644 index 0000000..0aa7597 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/14E143ED-1A36-9D69-DCCA-7028B010A30D.xml @@ -0,0 +1,192 @@ + + +ERIGHTS-TEST +ERIGHTS +REQUEST_DETAIL_ATTACHMENTS +walloar +2022-03-18 10:16:52 UTC +eRights +A6122FF8-6E02-690E-28E5-C714198A0D6D +false +true +true + + +ERIGHTS-TEST +REQUEST_DETAIL_ATTACHMENTS +REQUEST_DETAIL_ATTACHMENT_ID +walloar +2022-03-18 10:16:53 UTC +eRights +A10A9F47-7659-8024-3AE6-7A986D1764A9 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUEST_DETAIL_ATTACHMENTS +UUID +walloar +2022-03-18 10:16:53 UTC +eRights +C22524BF-24BC-9561-1C20-85287D203060 +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +REQUEST_DETAIL_ATTACHMENTS +REQUEST_DETAIL_ID +walloar +2022-03-18 10:16:53 UTC +eRights +F872F799-DF63-8DD2-C188-B652A5D41A65 +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +REQUEST_DETAIL_ATTACHMENTS +REQUEST_DETAIL_ATTACHMENT_TYPE +walloar +2022-03-18 10:16:53 UTC + +eRights +8BDD49C1-88D5-0BAC-850E-52E6C1D2A162 +true +false +1 +LOGDT024 +25 CHAR +25 CHAR,, +false + + +ERIGHTS-TEST +REQUEST_DETAIL_ATTACHMENTS +FILE_NAME +walloar +2022-03-18 10:16:53 UTC +eRights +AEF0D1E0-8770-7037-178A-BBDC198F7594 +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_DETAIL_ATTACHMENTS +CREATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +CEC2CA59-26BF-BC8E-4EE3-35A06C60E7A2 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUEST_DETAIL_ATTACHMENTS +CREATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +1EE44E6C-D74C-CD00-FB13-D919E4549671 +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +REQUEST_DETAIL_ATTACHMENTS +UPDATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +FF6DD272-B544-7AC6-7B36-0ACF0F3A9D31 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUEST_DETAIL_ATTACHMENTS +UPDATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +C75C4C78-0AC3-41E6-E28D-DA7EF795A077 +false +1 +LOGDT015 +6 +,6, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_REQUEST_DETAIL_ATTACHMENTS +walloar +2022-03-18 10:16:53 UTC +eRights +4218E585-BBDF-194E-6D23-58FE6A0E40EA +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_REQUEST_DETAIL_ATTACHMENTS +walloar +2022-03-18 10:16:53 UTC +eRights +958D9A09-CD25-D904-EB26-104F447F134E +Unique Plain Index +false + + + + + +walloar +2022-03-18 10:16:53 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/19B5777E-F422-5B95-B997-179834446A02.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/19B5777E-F422-5B95-B997-179834446A02.xml new file mode 100644 index 0000000..8b6394a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/19B5777E-F422-5B95-B997-179834446A02.xml @@ -0,0 +1,210 @@ + + +ERIGHTS-TEST +ERIGHTS +USER_PREFERENCES +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +USER_PREFERENCES +PER_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +USER_PREFERENCES +LOCALE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +5 BYTE +5 BYTE,, +false + + +ERIGHTS-TEST +USER_PREFERENCES +PAGE_PATH +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + +ERIGHTS-TEST +USER_PREFERENCES +PREFERENCES +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT028 +4000 +4000,, +false + + +ERIGHTS-TEST +USER_PREFERENCES +CREATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +USER_PREFERENCES +CREATED_BY +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +USER_PREFERENCES +UPDATED_BY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +USER_PREFERENCES +UPDATED_AT +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +,, +false + + +tapiafo +2021-05-21 13:40:21 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_USER_PREFERENCES +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PER_ID_PAGE_UK +walloar +2022-03-29 16:59:57 UTC +eRights +DB06E7E4-FDA2-10DC-6AE4-354AFCAC35C4 +Unique Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +PK_USER_PREFERENCES +walloar +2021-03-02 08:04:54 UTC +eRights +Unique Plain Index +false + + + + + +ERIGHTS-TEST +ERIGHTS +PER_ID_PAGE_UK +walloar +2022-03-29 16:59:57 UTC +eRights +1D28F7F2-2FB5-67E7-AFA5-C4B911482DF5 +Unique Plain Index +false + + + + + + + + + +walloar +2022-07-19 13:59:16 UTC +eRights +7994C82C-4D52-F039-9468-69BE5E0E585A +66B6918B-A197-4DDD-2F74-FA6DEB24B801 +F1186C6C-6CC4-3495-E7C3-2387BFBF76C0 +ERIGHTS.MV_PERSONS_EEAS +PER_ID + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/1FCCE7FF-BB87-3F2A-3BE1-0082C6BDBB15.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/1FCCE7FF-BB87-3F2A-3BE1-0082C6BDBB15.xml new file mode 100644 index 0000000..f7697d1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/1FCCE7FF-BB87-3F2A-3BE1-0082C6BDBB15.xml @@ -0,0 +1,120 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_FUNCTION_CODES +walloar +2022-03-18 10:16:52 UTC +eRights +D674372F-A3A1-4FDC-D01E-EF1494714CF2 +4 +false +true +true + + + +ERIGHTS-TEST +MV_FUNCTION_CODES +FUNCTION_CODE +walloar +2022-03-18 10:16:53 UTC +eRights +085C43AE-0684-31E9-EDDF-8F13F3BC2E8A +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_FUNCTION_CODES +FUNCTION_DESC_FR +walloar +2022-03-18 10:16:53 UTC +eRights +531E1E0F-4E95-3DF1-9A63-78B66621ADCD +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_FUNCTION_CODES +FUNCTION_DESC_EN +walloar +2022-03-18 10:16:53 UTC +eRights +29D82137-7B2E-5DE5-0ABB-230D17F1922B +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + +ERIGHTS-TEST +MV_FUNCTION_CODES +NR_ORDER +walloar +2022-03-18 10:16:53 UTC +eRights +99A59EB2-AAF6-8DD2-3D3C-2E3033F5C329 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_FUNCTION_CODES +IS_ACTIVE +walloar +2022-03-29 16:59:57 UTC +eRights +FC35278F-A731-81F0-3C0C-8E1AEFF2D7FA +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MV_FUNCTION_CODES +EDELHRM_CODE +walloar +2022-03-29 16:59:57 UTC +eRights +C7986500-84CE-8FAB-4420-71324669A062 +true +false +1 +LOGDT024 +768 BYTE +768 BYTE,, +false + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/2044859D-01D1-4056-68DF-2AAEF772F457.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/2044859D-01D1-4056-68DF-2AAEF772F457.xml new file mode 100644 index 0000000..e6bc515 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/2044859D-01D1-4056-68DF-2AAEF772F457.xml @@ -0,0 +1,206 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_CAREER_STAT_LINK_HIST_EEAS +walloar +2023-06-15 12:36:23 UTC +eRights +32A5067A-46EF-2A8C-896F-023ABE3BC203 +4 +false +true +true + + + +ERIGHTS-TEST +MV_CAREER_STAT_LINK_HIST_EEAS +PER_ID +walloar +2023-06-15 12:36:23 UTC +eRights +0240AF9F-F0E6-E04C-15B7-CE3A548D3D81 +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_CAREER_STAT_LINK_HIST_EEAS +START_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +7FBA7864-5307-4CC7-16CD-FCCB32E11C66 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_CAREER_STAT_LINK_HIST_EEAS +END_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +3EDE71FC-54E1-B312-AF73-6E709BA08F2D +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_CAREER_STAT_LINK_HIST_EEAS +LST_CD +walloar +2023-06-15 12:36:23 UTC +eRights +BBC555E4-33F8-A1F8-9913-EC6E62ECC481 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_CAREER_STAT_LINK_HIST_EEAS +LST_BEG_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +8010B4E0-9E02-6862-BB80-48D1677B7DBE +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_CAREER_STAT_LINK_HIST_EEAS +LST_ASS_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +03CBF5F5-8D4D-B800-AFE2-BB9BA797AFD9 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_CAREER_STAT_LINK_HIST_EEAS +LST_END_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +4A39AB47-1586-DF4D-CFA0-03997685BB72 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_CAREER_STAT_LINK_HIST_EEAS +CREATION_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +7063CCB1-51F6-4958-B891-E96F48A24B08 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_CAREER_STAT_LINK_HIST_EEAS +MODIFICATION_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +73E0F551-B07C-DC98-427C-835DE01F0298 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_CAREER_STAT_LINK_HIST_EEAS +CRR_SEQ_NBR +walloar +2023-06-15 12:36:23 UTC +eRights +150FC2CF-4ADF-F5E5-FAAC-5D3B1FB26AF0 +true +false +1 +LOGDT019 +2 +0 +,2,0 +false + + + + +ERIGHTS-TEST +ERIGHTS +IX_MV_CAREER_STAT_LINK_HIST_EEAS_PER_ID +walloar +2023-06-15 12:36:23 UTC +eRights +BFA1AD66-85A0-3F24-8367-67C0A6D2AE4F +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/20DB5A12-2FFB-0087-DA16-042C48231E7E.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/20DB5A12-2FFB-0087-DA16-042C48231E7E.xml new file mode 100644 index 0000000..5e7e9a2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/20DB5A12-2FFB-0087-DA16-042C48231E7E.xml @@ -0,0 +1,89 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_ABAC_COMM_RESPONSES +walloar +2021-04-26 13:29:43 UTC +eRights +B653076A-5DE3-97B5-8CF7-728922527271 +false +true +true + + +ERIGHTS-TEST +ANK_ABAC_COMM_RESPONSES +ID +walloar +2021-04-26 13:29:43 UTC +eRights +4ECCA894-2FC1-30BE-D7AF-F36361C9E048 +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + + + + +ERIGHTS-TEST +ANK_ABAC_COMM_RESPONSES +DATA +walloar +2021-04-26 13:29:43 UTC +eRights +D371B864-D2F0-6D36-E9BF-9D76692436A6 +false +1 +LOGDT028 +4000 +4000,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_ABAC_COMM_RESPONSES +walloar +2021-04-26 13:29:43 UTC +eRights +701EDF4E-1922-09D0-48FC-94E6C2D399FE +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_ABAC_COMM_RESPONSES +walloar +2021-04-26 13:29:43 UTC +eRights +5AF48A95-1188-AE0B-C889-5ED3FA69893F +Unique Plain Index +false + + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml new file mode 100644 index 0000000..88a1f3f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/20F5667B-D8E9-427C-7B9A-C1819E5C3533.xml @@ -0,0 +1,103 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SCHEDULER_STATE +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_SCHEDULER_STATE +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_SCHEDULER_STATE +INSTANCE_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_SCHEDULER_STATE +LAST_CHECKIN_TIME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_SCHEDULER_STATE +CHECKIN_INTERVAL +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +13 +0 +,13,0 +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SCHEDULER_STATE_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SCHEDULER_STATE_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/21442F1D-A788-0766-1383-1143D116D4BC.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/21442F1D-A788-0766-1383-1143D116D4BC.xml new file mode 100644 index 0000000..42289c1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/21442F1D-A788-0766-1383-1143D116D4BC.xml @@ -0,0 +1,155 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SIMPLE_TRIGGERS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_SIMPLE_TRIGGERS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_SIMPLE_TRIGGERS +TRIGGER_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_SIMPLE_TRIGGERS +TRIGGER_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_SIMPLE_TRIGGERS +REPEAT_COUNT +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +7 +0 +,7,0 +false + + +ERIGHTS-TEST +QRTZ_SIMPLE_TRIGGERS +REPEAT_INTERVAL +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +12 +0 +,12,0 +false + + +ERIGHTS-TEST +QRTZ_SIMPLE_TRIGGERS +TIMES_TRIGGERED +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +10 +0 +,10,0 +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SIMPLE_TRIG_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SIMPLE_TRIG_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml new file mode 100644 index 0000000..a6b5d3a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/25DD1062-1B61-D9F8-86D8-135E939ABBC4.xml @@ -0,0 +1,121 @@ + + +ERIGHTS-TEST +ERIGHTS +T_REFRESH_OBJECTS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +T_REFRESH_OBJECTS +ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +* +0 +,*,0 +false + + +ERIGHTS-TEST +T_REFRESH_OBJECTS +APP_OBJECT_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, +false + + +ERIGHTS-TEST +T_REFRESH_OBJECTS +PRIORITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +* +0 +,*,0 +false + + +ERIGHTS-TEST +T_REFRESH_OBJECTS +IS_REFRESHED +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +T_REFRESH_OBJECTS +STATUS +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +ERIGHTS-TEST +T_REFRESH_OBJECTS +REFRESH_DATE +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT007 +7 +SYSDATE +7,, +false + + +ERIGHTS-TEST +T_REFRESH_OBJECTS +SYSTEM +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/27744AC2-14D9-8DD9-513A-8FBB9C86242C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/27744AC2-14D9-8DD9-513A-8FBB9C86242C.xml new file mode 100644 index 0000000..ae23a68 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/27744AC2-14D9-8DD9-513A-8FBB9C86242C.xml @@ -0,0 +1,1234 @@ + + +ERIGHTS-TEST +ERIGHTS +POSTING_ALLOWANCES +walloar +2022-10-25 12:45:50 UTC +eRights +76DB8687-3942-A460-047B-DBC3D7EBE74C +false +true +true + + +ERIGHTS-TEST +POSTING_ALLOWANCES +POSTING_ALLOWANCE_ID +walloar +2022-10-25 12:45:50 UTC +eRights +9BEC4BD6-9E3B-A93D-5FEF-34E3EB1F56B2 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +PER_ID +walloar +2022-10-25 12:45:50 UTC +eRights +0CFD814D-7CE7-CBC3-8A9C-08C499834258 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +EXERCISE_YEAR +walloar +2022-10-25 12:45:50 UTC +eRights +225C17EA-9749-EA4A-2643-3EB73AFBC1CF +true +false +1 +LOGDT019 +4 +0 +,4,0 +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +POSTING_ALLOWANCE_NUMBER +walloar +2022-10-25 12:45:50 UTC + +eRights +AC3FD721-B006-4071-9A7C-75FB3BE32042 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +POSTING_ALLOWANCE_STRING_ID +walloar +2022-10-25 12:45:50 UTC +eRights +61CFF8F1-A860-C4DB-A8C1-66AD1E3D3B24 +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +POSTING_ALLOWANCE_TYPE +walloar +2022-10-25 12:45:50 UTC +eRights +C4280CD9-EF7C-A576-A564-F5313B38310F +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +POSTING_ALLOWANCE_REQ_TYPE +walloar +2022-10-25 12:45:50 UTC +eRights +1232D72D-B4CF-4E2C-4880-92BBA06D959B +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +PARENT_POSTING_ALLOWANCE_ID +walloar +2022-10-25 12:45:50 UTC +eRights +B5CD48AB-F663-3434-D7A4-1952373991BD +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +POSTING_ALLOWANCES +COMMENTS +walloar +2022-10-25 12:45:50 UTC +eRights +02899F87-4F54-038F-279E-869D1F52181B +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +OUTGOING_TRIP_AMOUNT +walloar +2022-10-25 12:45:50 UTC +eRights +26ABF800-49CD-E8F1-8989-14C78868722F +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +OUTGOING_TRIP_AMOUNT_CURRENCY +walloar +2022-10-25 12:45:50 UTC +eRights +EB04BFB8-0F50-4065-D3AE-3826228E8C87 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +RETURN_TRIP_AMOUNT +walloar +2022-10-25 12:45:50 UTC +eRights +462C4F6C-8C85-E51C-B42D-A418B89E46AD +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +RETURN_TRIP_AMOUNT_CURRENCY +walloar +2022-10-25 12:45:50 UTC +eRights +93A54418-A076-1466-8E81-A67D2F17DCAE +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +CALC_TOTAL_AMOUNT +walloar +2022-10-25 12:45:50 UTC + +eRights +7AECB545-8124-C79D-E5E6-2F376F30ECA2 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +CALC_TOTAL_AMOUNT_CURRENCY +walloar +2022-10-25 12:45:50 UTC +eRights +2DAABA58-2C2C-EA46-0D16-ABDB683B69F4 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +TOTAL_AMOUNT +walloar +2022-10-25 12:45:50 UTC + +eRights +351DA718-72E4-6EA1-929D-26B3C7FD3D00 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +TOTAL_AMOUNT_CURRENCY +walloar +2022-10-25 12:45:50 UTC +eRights +61441528-1632-06E3-8514-774008B4CA9C +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +PAYMENT_PERIOD_YEAR +walloar +2022-10-25 12:45:50 UTC +eRights +3879F370-695E-CCD9-BAEA-6E7BDC4D5491 +true +false +1 +LOGDT019 +4 +0 +,4,0 +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +PAYMENT_PERIOD_MONTH +walloar +2022-10-25 12:45:50 UTC +eRights +F8B58029-F6F7-93B3-93DB-98E1B783B7D6 +true +false +1 +LOGDT019 +2 +0 +,2,0 +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +PAYMENT_REFERENCE +walloar +2022-10-25 12:45:50 UTC +eRights +4F8C811E-3709-DDBC-A194-ADBBAF92A077 +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +PAYMENT_STATE +walloar +2022-10-25 12:45:50 UTC +eRights +909CF887-03D5-6D8F-BF6A-5605F61D0A60 +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +ASSIGNMENT_CITY_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +A3CD921C-0ACC-8001-43B1-609CBAC72DE5 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +ASSIGNMENT_COUNTRY_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +41156A11-AA07-1AD1-5411-7AFDFD379DDE +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +ASSIGNMENT_CITY_NAME +walloar +2022-10-25 12:45:50 UTC +eRights +964C89B7-E34B-39A2-4617-C87A1742F153 +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +ASSIGNMENT_IATA_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +4FDCACF2-4048-736D-9688-AA859760AF3F +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +ORIGIN_CITY_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +F50A8B7F-4197-D422-17F3-C1D48FF4EC25 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +ORIGIN_COUNTRY_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +46720058-ACCE-48C0-1EAB-86BC10F38337 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +ORIGIN_CITY_NAME +walloar +2022-10-25 12:45:50 UTC +eRights +459EB5D8-4E7A-25DF-2D4A-ED9C482F54C0 +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +ORIGIN_IATA_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +FCCFBF35-76DC-0D98-C4F8-938C37070EF4 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +RECRUITMENT_CITY_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +F1C58B37-35B6-BD21-964C-79E8C24B875F +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +RECRUITMENT_COUNTRY_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +E6B8FD9A-3BD7-3352-06E7-1D3B41EEC177 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +RECRUITMENT_CITY_NAME +walloar +2022-10-25 12:45:50 UTC +eRights +9B0024B5-46DF-EEAE-7425-19D0CCD1C346 +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +RECRUITMENT_IATA_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +1E69046E-51B5-5D18-8552-5EFF8F8F19DE +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +SM_ID +walloar +2022-10-25 12:45:50 UTC +eRights +0F7A4DC3-DCFB-7840-7863-76DE68FF5625 +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +STATE +walloar +2022-10-25 12:45:50 UTC +eRights +D3EB7021-1C76-6AF3-31E8-83B6319097AF +true +false +1 +LOGDT024 +16 CHAR +16 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +POSTING_ALLOWANCE_DISCRIMINATORY_TYPE +walloar +2022-10-25 12:45:50 UTC + +eRights +896006AE-2816-21FB-AD78-B86A026C05CC +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +CREATED_BY +walloar +2022-10-25 12:45:50 UTC +eRights +CB56B1D3-9244-5E3C-5E7C-C0599C89775B +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +CREATED_AT +walloar +2022-10-25 12:45:50 UTC +eRights +3F2E1EA4-F359-EB59-CB15-9195A0D9FBFF +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +UPDATED_BY +walloar +2022-10-25 12:45:50 UTC +eRights +CB07792D-432F-7C9C-7225-1673C5BDAFE9 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +UPDATED_AT +walloar +2022-10-25 12:45:50 UTC +eRights +F1AB3CB4-2C25-EED7-21CE-0C5DE4B99ED6 +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +DELEGATION_ORG_ID +walloar +2022-10-25 12:45:50 UTC +eRights +55088716-8BE5-B060-4330-D54B6126525F +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +ORIGIN_PERIOD_YEAR +walloar +2022-11-11 07:44:41 UTC +eRights +7DAE26B7-6E0B-0946-7382-0FBAD350BB18 +true +false +1 +LOGDT019 +4 +0 +,4,0 +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +ORIGIN_PERIOD_MONTH +walloar +2022-11-11 07:44:41 UTC +eRights +F8486DDB-3245-5DCF-4C98-36ADDE5D76C3 +true +false +1 +LOGDT019 +2 +0 +,2,0 +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +ORIGIN_COUNTRY_NAME +walloar +2022-11-11 07:44:41 UTC +eRights +4861A447-6B4C-A09E-A407-1D448B8478A6 +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +ASSIGNMENT_COUNTRY_NAME +walloar +2022-11-11 07:44:41 UTC +eRights +36ED13EE-4283-E736-02E0-F850FEC97FBC +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +ASSIGNMENT_START_DATE +walloar +2023-02-07 10:46:14 UTC +eRights +2AE90CA7-0B64-FA60-F536-740824B6AB38 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +SOJ_ID +walloar +2023-02-07 10:46:14 UTC +eRights +F2661578-68F4-6546-0501-41AEEF13F7D9 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +SPOUSE_PER_ID +walloar +2023-02-07 10:46:14 UTC +eRights +CC67051A-A3D8-65DB-F29A-69FE1AE39592 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +DOUBLE_POSTING +walloar +2023-02-07 10:46:14 UTC +eRights +5A9DF7FD-720B-3870-F658-509D2AF9276D +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +PAYMENT_ID +walloar +2023-02-07 10:46:14 UTC +eRights +430C1F3F-3921-31D1-D3C2-4437DA30D73D +true +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +PAYMENT_EVENT_ID +walloar +2023-02-07 10:46:14 UTC +eRights +3377278B-187D-1D44-6B2A-AD771EC5D677 +true +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +DUAL_POSTING +walloar +2023-02-07 10:46:14 UTC +eRights +315C3F60-151E-F44E-D158-E251597B8CD7 +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +ORIGIN_PLACE_SEARCH +walloar +2023-02-07 10:46:14 UTC +eRights +B8EF8924-74C4-99DB-2972-B65EEADE3F4D +true +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +V_REPORT_POSTING_ALLOWANCES +walloar +2023-06-15 12:36:23 UTC +eRights +9582A43E-75C1-974A-0D70-F9594F702F51 +true +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +ASSIGNMENT_AIRPORT_NAME +walloar +2023-06-15 12:36:23 UTC +eRights +28616F26-EB91-67E2-4ED3-7BFA6A350825 +true +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +ORIGIN_AIRPORT_NAME +walloar +2023-06-15 12:36:23 UTC +eRights +83D4E8F3-ECC6-E89B-5104-BCF6BEC2C238 +true +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +NEW_TOTAL_AMOUNT_CURRENCY +walloar +2023-06-15 12:36:23 UTC +eRights +68F1EFB2-10B8-B7FA-C02A-3448C18B1A78 +true +false +1 +LOGDT024 +5 BYTE +5 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +INITIAL_TOTAL_AMOUNT_CURRENCY +walloar +2023-06-15 12:36:23 UTC +eRights +F5672004-6BE7-30E7-91DB-2455B1E6CC01 +true +false +1 +LOGDT024 +5 BYTE +5 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +REGULARIZE_AMOUNT_CURRENCY +walloar +2023-06-15 12:36:23 UTC +eRights +51C0D6F1-94A0-0ED2-B94E-E68131F37600 +true +false +1 +LOGDT024 +5 BYTE +5 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +NEW_TOTAL_AMOUNT +walloar +2023-06-15 12:36:23 UTC +eRights +DD17AA28-49AE-E3AF-9AAB-91BADBBB8AA7 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +INITIAL_TOTAL_AMOUNT +walloar +2023-06-15 12:36:23 UTC +eRights +E2B8B84D-D509-5AA7-6E51-5CDA5EE68475 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +REGULARIZE_AMOUNT +walloar +2023-06-15 12:36:23 UTC +eRights +FC565BAC-4D57-5EBE-390B-4EC137E88D91 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +EXPATRIATION_ALLOWANCE_DATE_FROM +walloar +2023-06-15 12:36:23 UTC +eRights +1121CB5B-A683-7BB6-05B7-0DE9D1C6C82E +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +EXPATRIATION_ALLOWANCE_DATE_TO +walloar +2023-06-15 12:36:23 UTC +eRights +CB2EFF69-275F-78E0-C796-A6CEC97AC7F9 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +ASSIGNMENT_END_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +652EFD61-720B-649D-E74B-E8A8C2DDE0B8 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +FIRST_NATIONALITY_COUNTRY +walloar +2023-06-15 12:36:23 UTC +eRights +9D43F2A3-7AB1-CCFF-3606-6F066FD3A822 +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES +CHILD_POSTING_ALLOWANCE_ID +walloar +2023-06-15 12:36:23 UTC +eRights +DF8BA11E-2A97-74F4-42D4-A052733FB21B +true +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_POSTING_ALLOWANCES +walloar +2022-10-25 12:45:50 UTC +eRights +0BEA2359-272F-FCF9-11CE-378C381E0125 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +UK_POSTING_ALLOWANCES_PER_ID_SOJ_ID_EXERCISE_YEAR +walloar +2023-02-07 10:46:14 UTC +eRights +85992513-DCA1-99CD-C210-CC2922274C87 +Unique Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +UK_POSTING_ALLOWANCES_PER_ID_SOJ_ID_EXERCISE_YEAR_PARENT_POSTING_ALLOWANCE_ID +walloar +2023-06-15 12:36:23 UTC +eRights +E015D147-30D9-D04A-BACC-8A907C05F285 +Unique Constraint +false + + + + + + + + +ERIGHTS-TEST +ERIGHTS +IX_POSTING_ALLOWANCES_PER_ID +walloar +2022-10-25 12:45:50 UTC +eRights +857A789B-B28E-E280-AB8E-5801AACA2696 +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_POSTING_ALLOWANCES +walloar +2022-10-25 12:45:50 UTC +eRights +25B04749-C5AE-62D7-9FBC-FC85F2DDF703 +Unique Plain Index +false + + + + + +ERIGHTS-TEST +ERIGHTS +UK_POSTING_ALLOWANCES_PER_ID_SOJ_ID_EXERCISE_YEAR +walloar +2023-02-07 10:46:14 UTC +eRights +1D56E762-FB54-8084-6F8F-39ED23CAE6C3 +Unique Plain Index +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +IK_POSTING_ALLOWANCE_PARENT +walloar +2023-06-15 12:36:23 UTC +eRights +A28409D6-B301-CA94-B720-4E065A729470 +false + + + + + +ERIGHTS-TEST +ERIGHTS +UK_POSTING_ALLOWANCES_PER_ID_SOJ_ID_EXERCISE_YEAR_PARENT_POSTING_ALLOWANCE_ID +walloar +2023-06-15 12:36:23 UTC +eRights +C89B2023-AD96-09A1-1950-6FBE3038D36E +Unique Plain Index +false + + + + + + + + +walloar +2022-10-25 12:45:50 UTC +eRights +Foreign Key +false + + + + + + + +walloar +2022-10-25 12:52:54 UTC +eRights +DF217247-D96B-E35A-8D99-DA7EE99DB683 +73DB7963-4431-C4C4-5300-393B221A8121 +04E6EE75-0212-D11C-EAAD-34E8BB42ADA5 +ERIGHTS.V_PEOPLE +PER_ID + + +walloar +2022-10-25 12:55:05 UTC +eRights +8DFB631B-FEC7-0406-BD57-ABDE28F02484 +52675525-20A2-9D94-FC27-4C5EBA8B3915 +83150B1B-A6E0-3EB4-3C24-DA77824D2EBF +ERIGHTS.MV_ENTITIES +ORG_ID + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/27A31F13-BF5F-77D7-7905-39816D021F06.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/27A31F13-BF5F-77D7-7905-39816D021F06.xml new file mode 100644 index 0000000..9a02eb4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/27A31F13-BF5F-77D7-7905-39816D021F06.xml @@ -0,0 +1,96 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_BUDGDEL_DELEGATION_CODES +walloar +2022-03-18 10:16:52 UTC +eRights +FA2148C5-3C95-B573-3882-253294FE42DD +4 +false +true +true + + + +ERIGHTS-TEST +MV_BUDGDEL_DELEGATION_CODES +ORG_ID +walloar +2022-03-18 10:16:53 UTC +eRights +D0341175-76DF-203D-E09F-75B93403C0F0 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_BUDGDEL_DELEGATION_CODES +ORG_CODE +walloar +2022-03-18 10:16:53 UTC +eRights +E7CDD8D8-F0AD-085B-DB20-58F5DD0687AC +true +false +1 +LOGDT024 +15 BYTE +15 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGDEL_DELEGATION_CODES +APPLICATION_VIEW +walloar +2022-03-18 10:16:53 UTC +eRights +E6F8D68C-1AD1-39F3-F5A9-984FB8317FDC +true +false +1 +LOGDT024 +18 BYTE +18 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGDEL_DELEGATION_CODES +ORG_EXERCISE_ID +walloar +2022-03-18 10:16:53 UTC +eRights +13AE69CA-DDC5-E4B9-85DC-5081A452E0A1 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_BUDGDEL_DELEGATION_CODES +NAME +walloar +2022-03-18 10:16:53 UTC +eRights +E744F4E7-045C-C497-2E2B-E0187635509B +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/2F063DE8-9633-D3F0-FEE0-BCA2DD728EFA.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/2F063DE8-9633-D3F0-FEE0-BCA2DD728EFA.xml new file mode 100644 index 0000000..fb414fa --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/2F063DE8-9633-D3F0-FEE0-BCA2DD728EFA.xml @@ -0,0 +1,407 @@ + + +ERIGHTS-TEST +ERIGHTS +AUD_ENTITLMNT_MAXS +walloar +2022-03-18 10:16:53 UTC +eRights +4D571C2F-5039-4671-C8AC-3836E32B3B8C +false +true +true + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +REV +walloar +2022-03-18 10:16:53 UTC +eRights +231F83FE-AA22-2F02-4EC7-F2DBF63521E4 +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +REVTYPE +walloar +2022-03-18 10:16:53 UTC +eRights +CFD6A866-EBDC-C2CE-E10C-A1CEA698ED41 +true +false +1 +LOGDT019 +3 +0 +,3,0 +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +ENTITLMNT_TYPE_ID +walloar +2022-03-18 10:16:53 UTC +eRights +712BAB27-760A-C366-2262-5054F7F7D250 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +ENTITLMNT_MAX_CAT_ID +walloar +2022-03-18 10:16:53 UTC +eRights +D6086669-A681-E93C-BB6E-3E9B3A3E021B +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +ENTITLMNT_MAX_ID +walloar +2022-03-18 10:16:53 UTC +eRights +46A107EC-06A5-42DB-2174-20686013CD6B +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +MAX_VALUE +walloar +2022-03-18 10:16:53 UTC +eRights +30B413CD-DFDA-FACC-29CE-27EBF3BB2808 +true +false +1 +LOGDT019 +9 +2 +,9,2 +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +MAX_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +DA56C5CC-C043-895A-A766-D65772B0D131 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +ENTITLMNT_TYPE_CAT_ID +walloar +2022-03-18 10:16:53 UTC +eRights +E104ECC5-9379-8B4A-F918-EB41580AD30B +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +ENTITLMNT_MAX_OPTIONS_ID +walloar +2022-03-18 10:16:53 UTC +eRights +3227FE39-5672-FC2D-1FCF-E65A5CD3ECD9 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +FLAT_RATE_DUPLICATOR +walloar +2022-03-18 10:16:53 UTC +eRights +EE07C937-F36F-C260-EC1F-BD1547DCE49C +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +COMMENTS +walloar +2022-03-18 10:16:53 UTC +eRights +EA1CD055-65D0-534D-432A-CC9D238CF17A +true +false +1 +LOGDT024 +3000 BYTE +3000 BYTE,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +ENABLE +walloar +2022-03-18 10:16:53 UTC +eRights +BB8B49A3-FE11-3120-7492-8D6DE6FB6C30 +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +HOD_ENABLE +walloar +2022-03-18 10:16:53 UTC +eRights +188F4A10-3867-8C58-A8D6-8BC33CC8D93C +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +CITY +walloar +2022-03-18 10:16:53 UTC +eRights +DE363D78-D9EC-86C5-BE5E-B9895E4E8AB9 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +COUNTRY +walloar +2022-03-18 10:16:53 UTC +eRights +AE9EED92-EAA3-088C-187B-3A22E77A6473 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +MAX_VOLUME +walloar +2022-03-18 10:16:53 UTC +eRights +89561849-9911-C715-766C-B8697E642C76 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +MAX_KG +walloar +2022-03-18 10:16:53 UTC +eRights +C6D7CDE2-8794-8B6C-AA2C-28077830A057 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +START_DATE +walloar +2022-03-18 10:16:53 UTC +eRights +4873F7DA-DEC2-4C29-1FE2-71E2DFDDAC49 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +RATE_YEAR +walloar +2022-03-18 10:16:53 UTC +eRights +13C324F4-CB02-8A01-A39B-11153F911F1A +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +CREATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +42EB8F47-4345-7C5A-2FE2-98D94A7F361B +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +CREATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +0D346B8B-37CF-808B-E0F5-1E3A06AE5C6D +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +UPDATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +71BA75F5-D1A6-0C6B-9998-FAFB441BD252 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +UPDATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +2D186F06-570B-7F72-9C71-EAFC8FE34568 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +IATA_FROM +walloar +2022-07-19 13:44:13 UTC +eRights +A3EBF512-9959-9CFE-5B45-78411ADBBB19 +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +AUD_ENTITLMNT_MAXS +IATA_TO +walloar +2022-07-19 13:44:13 UTC +eRights +B6A2C51A-BB54-AAB8-1216-334D91532CF2 +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/358124EE-7B8A-71EB-3760-315D51B0C018.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/358124EE-7B8A-71EB-3760-315D51B0C018.xml new file mode 100644 index 0000000..3d4c889 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/358124EE-7B8A-71EB-3760-315D51B0C018.xml @@ -0,0 +1,1010 @@ + + +ERIGHTS-TEST +ERIGHTS +AUD_REQUESTS +walloar +2022-03-18 10:16:53 UTC +eRights +893B382B-C267-1B66-746A-15FE3123DD7B +false +true +true + + +ERIGHTS-TEST +AUD_REQUESTS +REQUEST_ID +walloar +2022-03-18 10:16:53 UTC +eRights +B10A03FD-83F3-7C28-19F4-51FE477B43B4 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +REV +walloar +2022-03-18 10:16:53 UTC +eRights +718B21F1-DB5A-27BF-A24E-941A9A24467B +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +AUD_REQUESTS +REVTYPE +walloar +2022-03-18 10:16:53 UTC +eRights +072A544B-56A6-4425-6BE3-9A5655280289 +true +false +1 +LOGDT019 +3 +0 +,3,0 +false + + +ERIGHTS-TEST +AUD_REQUESTS +DECLARATION_ID +walloar +2022-03-18 10:16:53 UTC +eRights +A0BE97E8-874C-8D6E-C459-6AD315FF6513 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +ENTITLMNT_TYPE_ID +walloar +2022-03-18 10:16:53 UTC +eRights +2E6811AE-2402-BBAC-E5D8-BAFD2E311E31 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +PERSONS_BANK_INFO_ID +walloar +2022-03-18 10:16:53 UTC +eRights +383FDC26-27F2-AC52-CB3E-F9971725CC21 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +SM_ID +walloar +2022-03-18 10:16:53 UTC +eRights +62F82E87-67CE-B8B0-576A-910D615EF38C +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +REQUEST_NUMBER +walloar +2022-03-18 10:16:53 UTC +eRights +A9F16B35-EED6-6EF6-45E8-9D7A03F78B1E +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +ENTITLMNT_TYPE_CAT_ID +walloar +2022-03-18 10:16:53 UTC +eRights +EA5AB85D-1F21-23D5-2F5D-1E239C694A9A +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +TOTAL_AMOUNT +walloar +2022-03-18 10:16:53 UTC +eRights +D2F22BB0-7252-61A2-E875-8F58160A49BF +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +TOTAL_AMOUNT_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +89AE8654-924B-4CF6-2A7F-F302C332AE60 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +REQUEST_STRING_ID +walloar +2022-03-18 10:16:53 UTC +eRights +407BC81E-53F4-9B91-B9CA-3ADB6B1389C1 +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +YEAR +walloar +2022-03-18 10:16:53 UTC +eRights +C504E39C-C132-ABBD-466B-2FAB37846DD6 +true +false +1 +LOGDT019 +4 +0 +,4,0 +false + + +ERIGHTS-TEST +AUD_REQUESTS +STATE +walloar +2022-03-18 10:16:53 UTC +eRights +070C587E-28CB-0C1C-D04F-878705B64734 +true +false +1 +LOGDT024 +16 CHAR +16 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +CREATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +F9FDE18A-B34E-8F2A-79B9-96A71270B7EF +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +CREATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +CB99BF0B-D51E-FB7C-7930-BC1917BB7A2A +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +AUD_REQUESTS +UPDATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +DC8F802E-2243-57FE-EE54-4649B33595E5 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +UPDATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +133884D8-33B0-1247-BE95-3D2B3E3409FA +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +AUD_REQUESTS +FLAT_RATE +walloar +2022-03-18 10:16:53 UTC +eRights +E49DA535-ABE5-B0C5-6947-F2A18226E793 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +FLAT_RATE_FAMILY +walloar +2022-03-18 10:16:53 UTC +eRights +550D439B-1F1B-9B6C-2140-30F618132799 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +FLAT_RATE_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +95EAA9AF-A41A-7507-5D71-C270E8069041 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +PER_ID +walloar +2022-03-18 10:16:53 UTC +eRights +23F9BD78-693E-2EF0-6E01-6FAEC4F541BC +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +FLAT_RATE_FAMILY_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +81D64359-0653-FE4D-6DDE-0603DF53522E +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +INCLUDES_STAFF_MEMBER +walloar +2022-03-18 10:16:53 UTC +eRights +B296AFAF-70FA-0E1F-327A-C19E45F9D5F0 +true +false +1 +LOGDT025 +1 CHAR +'N' +1 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +CALC_TOTAL_AMOUNT +walloar +2022-03-18 10:16:53 UTC +eRights +DC1B89D8-780D-8CAE-91D2-167022B5EB12 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +CALC_TOTAL_AMOUNT_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +EAB91063-1229-D9ED-8C00-D72FA6DE1D2C +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +COMMENTS +walloar +2022-03-18 10:16:53 UTC +eRights +8B40CA46-B292-CD05-F84C-A9DD5D1F073C +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +PAYMENT_REQUEST +walloar +2022-03-18 10:16:53 UTC +eRights +318A373C-6689-07C7-79EF-B9BEED062F4B +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +PAYMENT_ORDER +walloar +2022-03-18 10:16:53 UTC +eRights +8916ACFC-2B69-009C-6AB4-8F68B9E68AD2 +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +PAYMENT_DATE +walloar +2022-03-18 10:16:53 UTC +eRights +0405813F-4766-6AE9-D691-ABD5FAF89E43 +true +false +1 +LOGDT007 +7 +sysdate +7,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +REQUEST_DECLARATION_NUMBER +walloar +2022-03-18 10:16:53 UTC +eRights +78A03AF7-1302-4B53-EC59-844CAED15834 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +SURFACE_RATE +walloar +2022-03-18 10:16:53 UTC +eRights +77CA02B9-3025-9739-03FB-7ED46E483413 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +SURFACE_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +CA5C1B1D-ACF9-88BA-703D-366ECD611B59 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +CAR_RATE +walloar +2022-03-18 10:16:53 UTC +eRights +1D446C04-94CB-3F31-CAAE-A545F1D89BC4 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +CAR_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +BB2E669A-B811-A881-C962-712E648888DB +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +AIRFREIGHT_RATE +walloar +2022-03-18 10:16:53 UTC +eRights +CD4AFE7C-4D1D-55B1-F39C-B2998BC4634B +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +AIRFREIGHT_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +ECF66BDF-B6EC-097B-48B8-77856C4CA518 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +STORAGE_RATE +walloar +2022-03-18 10:16:53 UTC +eRights +AD5291CB-960C-7B15-DA6B-A67B32A40C27 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +STORAGE_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +F05F8A43-0078-3EA0-4284-001CFC3614B0 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +TOPUP_AMOUNT +walloar +2022-03-18 10:16:53 UTC +eRights +78D824BB-C135-EA91-2388-E2A7DA70541C +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +TOPUP_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +B8C20BD1-8455-4182-3E36-8E9BDE0827ED +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +RECOVERY_AMOUNT +walloar +2022-03-18 10:16:53 UTC +eRights +7BDAFD57-09B1-A789-68CE-D190C339BBE1 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +RECOVERY_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +09A468AC-9E5C-7714-95EE-6E393C8CB417 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +EIS_AMOUNT +walloar +2022-03-18 10:16:53 UTC +eRights +57AEACE2-A973-025E-7C22-6616FEA771B3 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +EIS_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +4BFF62E4-F754-4132-31BC-2A6F470607A8 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +EFS_AMOUNT +walloar +2022-03-18 10:16:53 UTC +eRights +5B5D001D-27BF-4195-A218-904F165136D3 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +EFS_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +7D0DDECA-1A81-54AF-27AC-83E420AD3341 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +REQUEST_OPTION +walloar +2022-03-18 10:16:53 UTC +eRights +82D8AB54-843C-0561-6E2E-2E873E0FEE70 +true +false +1 +LOGDT024 +16 CHAR +16 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +PARENT_REQUEST_ID +walloar +2022-03-18 10:16:53 UTC +eRights +46862A16-4945-D097-3627-12A4F30966F8 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +REQUEST_TYPE +walloar +2022-03-18 10:16:53 UTC +eRights +B24EF5E6-0787-F691-DB62-8264D078B7E3 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +INDEMNITY_UPDATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +75D3F56F-FEBA-F77F-015D-DEA0D117B0F0 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +CITY +walloar +2022-03-18 10:16:53 UTC +eRights +D19CC110-E535-C09B-D66C-E1B8FA951662 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +COUNTRY +walloar +2022-03-18 10:16:53 UTC +eRights +D240BB7A-3230-BB5B-DC84-DA8DE1F2F84C +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +ENTRY_INTO_STORAGE +walloar +2022-03-18 10:16:53 UTC +eRights +6289481A-4AC4-4844-1616-95B029F3CA7B +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +AIRFREIGHT_KG_CEILING +walloar +2022-03-18 10:16:53 UTC +eRights +2C024293-6386-BF07-4EF8-DD8B8946156A +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +AIRFREIGHT_VOLUME_CEILING +walloar +2022-03-18 10:16:53 UTC +eRights +344735D4-DD5F-D75A-D743-52D2D3C50E20 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +ABAC_STATE +walloar +2022-03-18 10:16:53 UTC +eRights +8AA4CFD9-6B55-0BD5-F299-4DCA1D59EA89 +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +ABAC_WORKFLOW_STATE +walloar +2022-03-18 10:16:53 UTC +eRights +754ABE5D-007B-4C23-7D5C-FDDB7BAE7418 +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +TOTAL_VEHICLE +walloar +2022-03-18 10:16:53 UTC +eRights +F0C4BFDF-D377-1544-DAF5-D7D82D508272 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +TOTAL_STORAGE +walloar +2022-03-18 10:16:53 UTC +eRights +2EC7FADB-E02D-DEC3-17BC-873E662CDC96 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +TOTAL_UNFORESEEN +walloar +2022-03-18 10:16:53 UTC +eRights +024F6CD8-6C22-42F4-5E12-72FAFB586D12 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +TOTAL_PERSONAL +walloar +2022-03-18 10:16:53 UTC +eRights +070A201C-0979-214F-3E06-6684E96B5C37 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +PAYMENT_ORDER_VALID +walloar +2022-03-18 10:16:53 UTC +eRights +0F3E875B-41FD-4EB5-0FC3-A8CF4A478534 +true +false +1 +LOGDT025 +1 BYTE +'Y' +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_REQUESTS +DRAFT_TO_AWAITING_DATE +walloar +2022-07-19 13:44:13 UTC +eRights +D70315F2-4C2B-83F6-4714-5A0A4824D530 +true +false +1 +LOGDT007 +7 +7,, +false + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/3646E4B8-91A7-9672-2369-7F6E7AB7C1F2.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/3646E4B8-91A7-9672-2369-7F6E7AB7C1F2.xml new file mode 100644 index 0000000..c736543 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/3646E4B8-91A7-9672-2369-7F6E7AB7C1F2.xml @@ -0,0 +1,655 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSON_ADDRESS_HIST +walloar +2022-07-19 13:44:12 UTC +eRights +0F904BC0-B04C-402E-115A-9AC0498DF805 +4 +false +true +true + + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +PER_ID +walloar +2022-07-19 13:44:13 UTC +eRights +82CBC20C-C7E2-B4BC-1860-8157B2F8A1E5 +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +START_DATE +walloar +2022-07-19 13:44:13 UTC +eRights +43B4AFD2-264A-A902-46E5-D31E25B3AD30 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +END_DATE +walloar +2022-07-19 13:44:13 UTC +eRights +A391B8F2-9EE3-7AB4-6941-3A139959BDB8 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +EFFECTIVE_DATE +walloar +2022-07-19 13:44:13 UTC +eRights +96237307-3C21-4527-29A4-A3DD522E6828 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +DECL_CHG_DATE +walloar +2022-07-19 13:44:13 UTC +eRights +E9D3C6A6-18E7-8BFD-5425-CC4371968FC3 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +TADR_CD +walloar +2022-07-19 13:44:13 UTC +eRights +4C228A97-894D-FCAA-AAC8-44A8A59FF9DC +true +false +1 +LOGDT019 +3 +0 +,3,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +ADDRESS_TYPE_CODE +walloar +2022-07-19 13:44:13 UTC +eRights +465FAE23-3040-F192-2909-07DC9D3A829E +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +COUNTRY_CODE +walloar +2022-07-19 13:44:13 UTC +eRights +05D332D4-A098-E23C-10DC-3E07B6E0987E +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +CITY_NAME +walloar +2022-07-19 13:44:13 UTC +eRights +43D73089-059D-A65F-15C6-1CAF36E455A0 +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +POSTAL_CODE +walloar +2022-07-19 13:44:13 UTC +eRights +C2F012F0-F9B2-312F-9F79-3BCC502FA979 +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +STREET_NAME +walloar +2022-07-19 13:44:13 UTC +eRights +6B839328-EC54-8BD1-F22E-CD25178B63A4 +true +false +1 +LOGDT024 +250 CHAR +250 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +STREET_NAME1 +walloar +2022-07-19 13:44:13 UTC +eRights +E93AE4A2-F824-7D80-E3FE-EEEB753013B1 +true +false +1 +LOGDT024 +250 CHAR +250 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +STREET_NAME2 +walloar +2022-07-19 13:44:13 UTC +eRights +83BE260D-F5DD-30B5-7233-BB62243170CA +true +false +1 +LOGDT024 +250 CHAR +250 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +STREET_NUMBER +walloar +2022-07-19 13:44:13 UTC +eRights +F2D07C10-1531-A81F-D412-67E71F6B867E +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +POSTAL_BOX +walloar +2022-07-19 13:44:13 UTC +eRights +53AAEEE5-235F-BD14-933E-F14052D8B49E +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +COMMENTS +walloar +2022-07-19 13:44:13 UTC +eRights +8D91CB2C-41F6-5CA5-9C51-6BA7BDC34B21 +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +ADDITIONAL_ADDRESS +walloar +2022-07-19 13:44:13 UTC +eRights +61704A54-03EA-7089-B36E-3D3CA3E14672 +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +ADDITIONAL_ADDRESS2 +walloar +2022-07-19 13:44:13 UTC +eRights +4D839857-42DB-A05F-47DE-015BC29D2E88 +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +OREDER_ADDRESS +walloar +2022-07-19 13:44:13 UTC +eRights +A2B53D6D-C555-6EF1-B628-3D9B71D30057 +true +false +1 +LOGDT019 +2 +0 +,2,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +LANGUAGE_CODE +walloar +2022-07-19 13:44:13 UTC +eRights +DFBD47EF-DCC3-2E9A-445B-9D2CABDA2836 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +PER_ID_REL_PERS +walloar +2022-07-19 13:44:13 UTC +eRights +06324CFA-CB00-F62A-D6BA-3786B10FA165 +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +SURNAME +walloar +2022-07-19 13:44:13 UTC +eRights +59D09731-017D-67B1-F652-2FD9E18A85BF +true +false +1 +LOGDT024 +80 CHAR +80 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +FIRST_NAME +walloar +2022-07-19 13:44:13 UTC +eRights +2DC3CC70-1424-E9AC-6083-F806AF5353AD +true +false +1 +LOGDT024 +80 CHAR +80 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +DATE_OF_BIRTH +walloar +2022-07-19 13:44:13 UTC +eRights +789544B6-8F97-466A-1543-D7C215C083EB +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +TITLE +walloar +2022-07-19 13:44:13 UTC +eRights +B987341B-1CD5-B7A0-EDC9-9D5413FC385B +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +LINK_ADR_TEL +walloar +2022-07-19 13:44:13 UTC +eRights +378408D3-31A6-D94A-E36A-F7C6A43BCF5C +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +SP2_ADDRESS_ID +walloar +2022-07-19 13:44:13 UTC +eRights +D7FE3841-139B-7A2B-D9E7-EDDEF7E3BEF2 +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +IRIS_ADDRESS_ID +walloar +2022-07-19 13:44:13 UTC +eRights +646C3008-03A2-2369-1FD5-B84BDC1DD6B2 +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +SRC_ID +walloar +2022-07-19 13:44:13 UTC +eRights +989AA033-5975-D7BB-AEE3-452EB506BD06 +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +INS_CD +walloar +2022-07-19 13:44:13 UTC +eRights +19907DB1-EDD1-935A-AF38-D650630FA9A6 +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +UNIQ_ID +walloar +2022-07-19 13:44:13 UTC +eRights +D9EA72C0-91C6-6F0B-5A9C-9E9B01F4CF8B +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +CREATED_DATE +walloar +2022-07-19 13:44:13 UTC +eRights +D3F5558A-996B-F710-A755-811FF346AEBE +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_HIST +UPDATED_DATE +walloar +2022-07-19 13:44:13 UTC +eRights +9C0BCFCD-E8AD-DCDB-E4FF-8B6E2A700948 +true +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_PERSON_ADDRESS_HIST_PER_ID +walloar +2022-07-19 13:44:13 UTC +eRights +BBF300E8-D367-EA40-D9A9-08E3F006435C +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/381C450C-6E3F-04C9-97FD-A696F5A96E49.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/381C450C-6E3F-04C9-97FD-A696F5A96E49.xml new file mode 100644 index 0000000..2034261 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/381C450C-6E3F-04C9-97FD-A696F5A96E49.xml @@ -0,0 +1,851 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_JOBS +walloar +2022-10-24 12:24:52 UTC +eRights +5EC1C032-7422-CC41-5DA1-FA77CF897254 +4 +false +true +true + trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + enth.main_org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN ( + SELECT DISTINCT + entities.city_code, + entities.country_id, + FIRST_VALUE(delstatus.severity_level) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) severity_level, + FIRST_VALUE(delstatus.evacuation_level_code_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code_id, + FIRST_VALUE(delstatus.alert_status_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) alert_status_id, + FIRST_VALUE(delstatus.evacuation_level_code) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code, + FIRST_VALUE(delstatus.family_posting_type_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type_id, + FIRST_VALUE(delstatus.family_posting_type) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type + FROM + mv_delegation_status delstatus, + mv_entities entities + WHERE + delstatus.org_id = entities.org_id + ) delstat ON ( jobh.location_country_code = delstat.country_id + AND jobh.location_city_code = delstat.city_code ) + LEFT JOIN mv_head_of_delegations hod ON asgh.job_id = hod.job_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_eeas jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist enth2 + WHERE + enth.org_id = enth2.org_id + ) + UNION ALL + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + enth.main_org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN ( + SELECT DISTINCT + entities.city_code, + entities.country_id, + FIRST_VALUE(delstatus.severity_level) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) severity_level, + FIRST_VALUE(delstatus.evacuation_level_code_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code_id, + FIRST_VALUE(delstatus.alert_status_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) alert_status_id, + FIRST_VALUE(delstatus.evacuation_level_code) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code, + FIRST_VALUE(delstatus.family_posting_type_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type_id, + FIRST_VALUE(delstatus.family_posting_type) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type + FROM + mv_delegation_status delstatus, + mv_entities entities + WHERE + delstatus.org_id = entities.org_id + ) delstat ON ( jobh.location_country_code = delstat.country_id + AND jobh.location_city_code = delstat.city_code ) + LEFT JOIN mv_head_of_delegations hod ON asgh.job_id = hod.job_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + NOT EXISTS ( + SELECT + 1 + FROM + mv_jobs_hist_eeas jobhe + WHERE + jobh.job_id = jobhe.job_id + ) + AND jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_com jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist_com enth2 + WHERE + enth.org_id = enth2.org_id + )]]> + + +ERIGHTS-TEST +MV_JOBS +JOB_ID +walloar +2022-10-24 12:24:52 UTC +eRights +8499E043-55A3-B243-7992-DCD03DCFEDDC +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS +JOB_MOMENT +walloar +2022-10-24 12:24:52 UTC +eRights +6A55547B-B221-B89E-A458-89266989B1B6 +true +false +1 +LOGDT024 +11 BYTE +11 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS +JOB_TYPE +walloar +2022-10-24 12:24:52 UTC +eRights +D30B50C7-A732-5073-B959-5666377EADF4 +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS +PERSONNEL_TYPE_ID +walloar +2022-10-24 12:24:52 UTC +eRights +D45BBAED-94E0-294D-9A94-E4633CB846FE +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_JOBS +PERSONNEL_TYPE_DESC +walloar +2022-10-24 12:24:52 UTC +eRights +70240509-42D9-6D56-4C34-E314D38DF3D8 +true +false +1 +LOGDT024 +1600 BYTE +1600 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS +BUDGETARY_LINE +walloar +2022-10-24 12:24:52 UTC +eRights +9BC554DD-C667-B09B-FEF1-CCD5E4D41394 +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS +JOB_CITY_CODE +walloar +2022-10-24 12:24:52 UTC +eRights +4CAA8E0C-389F-6F7D-CEF3-CE2770B2E514 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS +JOB_CITY_NAME +walloar +2022-10-24 12:24:52 UTC +eRights +D76D44AA-4F41-A8EB-2BA5-7DCAD39E9632 +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS +JOB_COUNTRY_CODE +walloar +2022-10-24 12:24:52 UTC +eRights +AB421F31-5F4D-28F5-C270-4E2D562796A3 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS +JOB_COUNTRY_NAME +walloar +2022-10-24 12:24:52 UTC +eRights +ECE5B2D7-5DD0-D2FA-F1E8-8AD600E5A349 +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS +ORGANIZATION_COUNTRY +walloar +2022-10-24 12:24:52 UTC +eRights +0CBB4575-3B56-2AC8-D043-6B07E948B32C +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS +ORGANIZATION_CITY +walloar +2022-10-24 12:24:52 UTC +eRights +5250207F-7DCF-A21A-147A-AAC65006C36F +true +false +1 +LOGDT024 +500 CHAR +500 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS +ORGANIZATION_NAME +walloar +2022-10-24 12:24:52 UTC +eRights +44938FD8-F25A-A767-C6F2-FB686D716F7C +true +false +1 +LOGDT024 +60 CHAR +60 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS +ORG_ID +walloar +2022-10-24 12:24:52 UTC +eRights +6CBB8165-6E38-926A-6F44-5E2A8C648B62 +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS +ASSIGN_START_DATE_TO +walloar +2022-10-24 12:24:52 UTC +eRights +3B37B756-F9B2-D78E-11EC-4BA40305F69D +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS +ASSIGN_END_DATE_TO +walloar +2022-10-24 12:24:52 UTC +eRights +E8F3FBF1-3AF7-D558-6C5A-AECD1A0C20BD +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_JOBS +PER_ID +walloar +2022-10-24 12:24:52 UTC +eRights +C5198A72-70A9-C1D6-8011-CEEE5C592C62 +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_JOBS +SEVERITY_LEVEL +walloar +2022-10-24 12:24:52 UTC +eRights +5F8C7456-9CEB-3F2C-B1BB-29E0027CCDA9 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_JOBS +EVACUATION_LEVEL_CODE_ID +walloar +2022-10-24 12:24:52 UTC +eRights +AEA12E1F-1399-C858-1992-61AF0B33CB41 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_JOBS +ALERT_STATUS_ID +walloar +2022-10-24 12:24:52 UTC +eRights +C7FFC2CC-B679-E463-056F-D0FA3AEFF311 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_JOBS +EVACUATION_LEVEL_CODE +walloar +2022-10-24 12:24:52 UTC +eRights +715BD8DB-9EB7-2069-9161-042FDD00DED2 +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS +ORGANIZATION_COUNTRY_CODE +walloar +2022-10-24 12:24:52 UTC +eRights +559D44AE-2D90-A493-895D-296608A006BB +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS +ORGANIZATION_CITY_CODE +walloar +2022-10-24 12:24:52 UTC +eRights +CFAF2261-87F7-317E-B8C8-13B0F94AFA5D +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_JOBS +FAMILY_POSTING_TYPE_ID +walloar +2022-10-24 12:24:52 UTC +eRights +DEF786AF-0ABE-F410-5AF1-845FA2F83BB4 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_JOBS +FAMILY_POSTING_TYPE +walloar +2022-10-24 12:24:52 UTC +eRights +A22E25D3-944C-2164-CEB0-AB25E09CC171 +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS +HOD +walloar +2022-10-24 12:24:52 UTC +eRights +C29EF1E9-41FB-C929-49DF-7193A40D844F +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS +FAMILY_POSTING_TYPE_CAT +walloar +2022-10-24 12:24:52 UTC +eRights +5C4B5415-42F1-C6E4-077D-60A572A9B9FC +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS +BUDGET_LINE +walloar +2022-10-24 12:24:52 UTC +eRights +45CB53C1-86C8-AA9D-9D6B-B26FAEA625C0 +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS +DELEGATION_ORG_ID +walloar +2022-10-24 12:24:52 UTC +eRights +274186DF-7839-E052-24CA-BB42A90090A7 +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOBS +INSTITUTION_CODE +walloar +2022-10-24 12:24:52 UTC +eRights +3885BB63-AD7D-B6F4-E3CE-9207006B65E9 +true +false +1 +LOGDT024 +40 BYTE +40 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS +INSTITUTION_NAME +walloar +2022-10-24 12:24:52 UTC +eRights +3CA0DA11-AE45-8D6F-43D9-A91A0A5D4042 +true +false +1 +LOGDT024 +2000 BYTE +2000 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS +FUNCTION_CODE +walloar +2022-10-24 12:24:52 UTC +eRights +FAF5291E-E87D-328C-CF6F-8FAB1D78372B +true +false +1 +LOGDT024 +450 BYTE +450 BYTE,, +false + + +ERIGHTS-TEST +MV_JOBS +FUNCTION_DESC +walloar +2022-10-24 12:24:52 UTC +eRights +17BFEDB6-99ED-B6E5-F3EA-C504B7AE7AC5 +true +false +1 +LOGDT024 +1500 BYTE +1500 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IX_MV_JOBS_JOB_ID +walloar +2022-10-24 12:24:52 UTC +eRights +8EE59C98-A421-9692-7450-DF9C8656FBD2 +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/4829A425-43A3-E767-FED5-0ED5D2B3F7DD.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/4829A425-43A3-E767-FED5-0ED5D2B3F7DD.xml new file mode 100644 index 0000000..9891fc1 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/4829A425-43A3-E767-FED5-0ED5D2B3F7DD.xml @@ -0,0 +1,314 @@ + + +ERIGHTS-TEST +ERIGHTS +AUD_REQUEST_PERSONS +walloar +2022-03-18 10:16:53 UTC +eRights +71FDC82E-149A-A2AB-D684-D587505BA8E3 +false +true +true + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +REV +walloar +2022-03-18 10:16:53 UTC +eRights +750C3AD7-BE34-BD47-C224-CF40A1D109CF +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +REVTYPE +walloar +2022-03-18 10:16:53 UTC +eRights +DDAC5E56-673D-AEA0-EE77-77548C4838F2 +true +false +1 +LOGDT019 +3 +0 +,3,0 +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +REQUEST_PERSON_ID +walloar +2022-03-18 10:16:53 UTC +eRights +E89EC113-A591-263B-B3EF-17E24B1E86EA +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +FAMILY_MEMBER_ID +walloar +2022-03-18 10:16:53 UTC +eRights +B2208C0D-29A2-351E-406A-1ED5703F4C29 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +REQUEST_ID +walloar +2022-03-18 10:16:53 UTC +eRights +07E55EE7-09C8-C106-279E-E6C377A8C040 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +TUD_ELIGIBILITY +walloar +2022-03-18 10:16:53 UTC +eRights +9308F1EC-05ED-DE88-BD3C-C2ABC8728EA7 +true +false +1 +LOGDT025 +1 CHAR +'N' +1 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +DECLAREDPERSON +walloar +2022-03-18 10:16:53 UTC +eRights +5413E09D-2929-1091-1FC5-5BAF68086265 +true +false +1 +LOGDT025 +1 CHAR +'N' +1 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +PER_ID +walloar +2022-03-18 10:16:53 UTC +eRights +A4BC30F8-568A-7E16-97C5-ABF659E76E18 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +REL_PER_ID +walloar +2022-03-18 10:16:53 UTC +eRights +BE193467-E59E-79E7-7C17-4AFC163BE08B +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +TRP_CD +walloar +2022-03-18 10:16:53 UTC +eRights +19BC44D1-948E-1C57-4BEE-FD0E30E232F1 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +TRP_CODE +walloar +2022-03-18 10:16:53 UTC +eRights +118BC43C-04E4-DA5B-C988-8FF7143BB10D +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +CLAIM +walloar +2022-03-18 10:16:53 UTC +eRights +739034AA-5558-7EF0-01B5-121A470AD665 +true +false +1 +LOGDT025 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +CLAIM_APPROVED +walloar +2022-03-18 10:16:53 UTC +eRights +FFAF151D-3D8C-E9F3-F919-B94B37247402 +true +false +1 +LOGDT025 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +CREATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +81F2FD42-48E5-0F52-651C-4156A4706EF0 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +CREATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +40E9AECE-4D5F-46C0-1B9C-B4390A0A2382 +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +UPDATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +F81F9A8B-DC92-F6D3-BB88-3F251C7B2ADC +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +UPDATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +79CDC330-B178-82D5-92A1-AE0241D47691 +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +REMARKS +walloar +2022-03-18 10:16:53 UTC +eRights +E8A3082E-96D4-0EC2-E6BE-D2FBD2792FF8 +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUEST_PERSONS +TUD_ELIGIBILITY_REASON +walloar +2022-03-18 10:16:53 UTC +eRights +944FE4D3-B820-6BF3-76E6-744325089E41 +true +false +1 +LOGDT024 +1000 BYTE +1000 BYTE,, +false + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml new file mode 100644 index 0000000..1e78b59 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/4F6003DF-80DE-EF7D-BA95-7CC8BD38C971.xml @@ -0,0 +1,59 @@ + + +ERIGHTS-TEST +ERIGHTS +T_APP_EASREFN_OBJECTS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +T_APP_EASREFN_OBJECTS +APP_OBJECT_NAME_ID +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +* +0 +,*,0 +false + + +ERIGHTS-TEST +T_APP_EASREFN_OBJECTS +EASREFN_OBJECT_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +256 BYTE +256 BYTE,, +false + + +ERIGHTS-TEST +T_APP_EASREFN_OBJECTS +PRIORITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +* +0 +,*,0 +false + + +
    \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/4F6D4909-B7A2-850D-1372-945FC7F1841D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/4F6D4909-B7A2-850D-1372-945FC7F1841D.xml new file mode 100644 index 0000000..83d9799 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/4F6D4909-B7A2-850D-1372-945FC7F1841D.xml @@ -0,0 +1,376 @@ + + +ERIGHTS-TEST +ERIGHTS +T_CONNECTIONS +walloar +2023-06-15 12:36:23 UTC +eRights +84ACAF5F-3870-C241-766A-EB5A5452FBAD +false +true +true + + +ERIGHTS-TEST +T_CONNECTIONS +CONNECTION_STEM_ID +walloar +2023-06-15 12:36:23 UTC +eRights +CFE93FC5-16A0-9FB2-7163-A2D7C78D6A82 +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +T_CONNECTIONS +CONNECTION_ID +walloar +2023-06-15 12:36:23 UTC +eRights +5E5EDB62-72BE-4603-25EC-1D8805F579E5 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +T_CONNECTIONS +AIRPORT_STEM_ID_ORG +walloar +2023-06-15 12:36:23 UTC +eRights +71B40EB7-E19C-3EA7-8DC1-AFBB10BD3286 +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +T_CONNECTIONS +AIRPORT_STEM_ID_DST +walloar +2023-06-15 12:36:23 UTC +eRights +5A5B489B-4F44-A33A-60B4-2B049CFD857E +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +T_CONNECTIONS +PRICE +walloar +2023-06-15 12:36:23 UTC +eRights +040AECA7-C0B1-36B1-2C38-886DEFF296D6 +true +false +1 +LOGDT019 +38 +2 +,38,2 +false + + +ERIGHTS-TEST +T_CONNECTIONS +IATA_ZONE +walloar +2023-06-15 12:36:23 UTC +eRights +09D9A9B4-70FE-6AB0-5BD7-8D01EE680843 +true +false +1 +LOGDT025 +2 BYTE +2 BYTE,, +false + + +ERIGHTS-TEST +T_CONNECTIONS +VALID_FROM +walloar +2023-06-15 12:36:23 UTC +eRights +6F6F1C46-7C9C-0BE7-EAB1-BA4B4A03CD6A +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +T_CONNECTIONS +VALID_TO +walloar +2023-06-15 12:36:23 UTC +eRights +58A5BE29-1108-3729-5B68-8B23017385B5 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +T_CONNECTIONS +ACTIVE +walloar +2023-06-15 12:36:23 UTC +eRights +A53125CE-6FD5-3B33-83CC-F36AF4D0DC77 +CKC_ACTIVE_CONNECTIONS +false +1 +LOGDT025 +1 BYTE + + + + +'Y' +1 BYTE,, +false + + +ERIGHTS-TEST +T_CONNECTIONS +ARCHIVED +walloar +2023-06-15 12:36:23 UTC +eRights +2EEA7072-5ACC-E5F7-F67C-6E573FFFB4B9 +CKC_ARCHIVED_T_CONNEC2 +false +1 +LOGDT025 +1 BYTE + + + + +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +T_CONNECTIONS +DELETED +walloar +2023-06-15 12:36:23 UTC +eRights +7A48F6AD-17B5-62C7-FD61-8BB40FCBBA04 +CKC_DELETED_T_CONNEC2 +false +1 +LOGDT025 +1 BYTE + + + + +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +T_CONNECTIONS +ENTRY_TS +walloar +2023-06-15 12:36:23 UTC +eRights +EC69ABB6-EDF9-39AE-810C-942D88EDD2A7 +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +T_CONNECTIONS +DONE_BY_PER_ID +walloar +2023-06-15 12:36:23 UTC +eRights +08DD6311-9B6D-79C3-9944-386D09A05B5C +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +T_CONNECTIONS +SYSTEM_MESSAGE +walloar +2023-06-15 12:36:23 UTC +eRights +BF56B85E-B32E-6021-70E0-05F1FC560D4B +true +false +1 +LOGDT024 +100 BYTE +100 BYTE,, +false + + +ERIGHTS-TEST +T_CONNECTIONS +REV_MESSAGE +walloar +2023-06-15 12:36:23 UTC +eRights +2E98D858-7E2B-0A87-5985-F3E0569C5220 +true +false +1 +LOGDT024 +2000 BYTE +2000 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +T_CONNECTIONS_PK +walloar +2023-06-15 12:36:23 UTC +eRights +B295E534-A030-9F99-4B60-101F9C687D03 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_CONNECTIONS_ENTRY_TS +walloar +2023-06-15 12:36:23 UTC +eRights +D405F6AF-530F-91F4-CDF7-234F299FF298 +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_CONNECTION_ACTIVE +walloar +2023-06-15 12:36:23 UTC +eRights +90F0BE9C-6B86-8139-FE37-1C9AC74A9768 +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_CONNECTION_PER_ID +walloar +2023-06-15 12:36:23 UTC +eRights +709029E6-D72B-8E5E-94E9-38D2D656C0EE +false + + + + + +ERIGHTS-TEST +ERIGHTS +T_CONNECTIONS_PK +walloar +2023-06-15 12:36:23 UTC +eRights +7CBA0CA5-0B7C-C51D-DBB3-E10C09C6C789 +Unique Plain Index +false + + + + + +walloar +2023-06-15 12:36:24 UTC +eRights +Foreign Key +false + + + + + +walloar +2023-06-15 12:36:24 UTC +eRights +Foreign Key +false + + + + + +walloar +2023-06-15 12:36:24 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5321333C-E5DB-62F6-A060-539B31AAA70C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5321333C-E5DB-62F6-A060-539B31AAA70C.xml new file mode 100644 index 0000000..ece83bc --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5321333C-E5DB-62F6-A060-539B31AAA70C.xml @@ -0,0 +1,70 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_NUP +walloar +2022-07-19 13:44:12 UTC +eRights +96801780-ADA0-6C66-77E3-D9206BD6D88E +4 +false +true +true + + + +ERIGHTS-TEST +MV_NUP +PER_ID +walloar +2022-07-19 13:44:13 UTC +eRights +BE99D360-FC36-7F7A-CCB6-1ED2DA0D8A7B +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_NUP +NUP +walloar +2022-07-19 13:44:13 UTC +eRights +561EDF5B-2726-EFDE-574C-FF166E1E0414 +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +MV_NUP +NO_SYSPER +walloar +2022-07-19 13:44:13 UTC +eRights +605E8FF7-D0DA-1071-8338-165BDEB5AA63 +true +false +1 +LOGDT019 +,, +false + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5B13807A-AFFE-6753-D3BB-705C43262C49.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5B13807A-AFFE-6753-D3BB-705C43262C49.xml new file mode 100644 index 0000000..5fbebbd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5B13807A-AFFE-6753-D3BB-705C43262C49.xml @@ -0,0 +1,276 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSON_NATIONALITIES +walloar +2023-06-15 12:36:23 UTC +eRights +6C85A78E-7B15-9715-ABDF-13A6C4855E1B +4 +false +true +true + + + +ERIGHTS-TEST +MV_PERSON_NATIONALITIES +PER_ID +walloar +2023-06-15 12:36:23 UTC +eRights +A83E2E55-0846-EBCB-002F-24316A76278D +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSON_NATIONALITIES +NAT_COUNTRY_CODE +walloar +2023-06-15 12:36:23 UTC +eRights +DF73B575-C77F-4D54-D4B9-72C446B5BE24 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_NATIONALITIES +NAT_COUNTRY_CODE2 +walloar +2023-06-15 12:36:23 UTC +eRights +8280D5D9-A000-CDFF-6904-0A38B13CF5A8 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_NATIONALITIES +NAT_COUNTRY_CODE3 +walloar +2023-06-15 12:36:23 UTC +eRights +B08AB836-1B4C-62DA-8E47-55E73532A18F +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_NATIONALITIES +NAT_COUNTRY_CODE4 +walloar +2023-06-15 12:36:23 UTC +eRights +695C2838-7E85-4015-BFC4-39ED93F46CDD +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_NATIONALITIES +NAT_INIT_COUNTRY_CODE +walloar +2023-06-15 12:36:23 UTC +eRights +B588F72A-73F2-7628-0CBB-54A1A686E1BA +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_NATIONALITIES +NAT_BIRTH_COUNTRY_CODE +walloar +2023-06-15 12:36:23 UTC +eRights +DBE91B47-8D0C-7A8F-C88A-C4C3281344C2 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_NATIONALITIES +START_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +FB26C906-EB64-1932-6660-0197FDB07230 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_NATIONALITIES +END_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +48446C85-C09C-C1B0-FF28-3A3DF0320833 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_NATIONALITIES +INS_CD +walloar +2023-06-15 12:36:23 UTC +eRights +E3361BCB-3F92-A760-5AE0-849B63FF9BAA +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_NATIONALITIES +CREATION_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +00CEECA7-AB8E-1C26-79C6-0DBB9363B831 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_NATIONALITIES +MODIFICATION_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +32643348-327C-485A-A51A-D0CE4775781F +true +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IX_MV_PERSON_NATIONALITIES_PER_ID +walloar +2023-06-15 12:36:23 UTC +eRights +539275A7-9ED0-F85D-7F93-E45D2C54A70F +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5DC3D7FC-DD31-7EC0-A5A0-BA0649F66204.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5DC3D7FC-DD31-7EC0-A5A0-BA0649F66204.xml new file mode 100644 index 0000000..538eda9 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5DC3D7FC-DD31-7EC0-A5A0-BA0649F66204.xml @@ -0,0 +1,106 @@ + + +ERIGHTS-TEST +ERIGHTS +APP_PARAMETERS +walloar +2022-03-18 10:16:52 UTC +eRights +111FA1CC-C15E-713D-82B6-BF2A5495D109 +false +true +true + + +ERIGHTS-TEST +APP_PARAMETERS +PARAMETER_ID +walloar +2022-03-18 10:16:53 UTC +eRights +28B28F54-0666-B3E1-6958-5365A7205042 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +APP_PARAMETERS +PARAMETER_TYPE +walloar +2022-03-18 10:16:53 UTC +eRights +BC5DE4E7-CD81-ACC9-8696-C829AC809EBE +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + +ERIGHTS-TEST +APP_PARAMETERS +PARAMETER_KEY +walloar +2022-03-18 10:16:53 UTC +eRights +1D62D0EC-2AD2-3BBE-CF34-00D032987E20 +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + +ERIGHTS-TEST +APP_PARAMETERS +PARAMETER_VALUE +walloar +2022-03-18 10:16:53 UTC +eRights +A5EC976F-2004-E5B3-CEE4-9BB17A85EEF3 +true +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_APP_PARAMETERS +walloar +2022-03-18 10:16:53 UTC +eRights +763B68F6-4769-0159-FA04-A4FEA6F3C57B +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_APP_PARAMETERS +walloar +2022-03-18 10:16:53 UTC +eRights +F9B45FCD-CC25-B5E0-88B5-693833CA9B5B +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml new file mode 100644 index 0000000..0562c33 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5EB69AE4-10AC-7DB4-A392-FBF958A5CDE5.xml @@ -0,0 +1,73 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_PAUSED_TRIGGER_GRPS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_PAUSED_TRIGGER_GRPS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_PAUSED_TRIGGER_GRPS +TRIGGER_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_PAUSED_TRIG_GRPS_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_PAUSED_TRIG_GRPS_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5FD5A5A2-6E38-1BB0-72AE-6954456CCF2B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5FD5A5A2-6E38-1BB0-72AE-6954456CCF2B.xml new file mode 100644 index 0000000..a97afb7 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/5FD5A5A2-6E38-1BB0-72AE-6954456CCF2B.xml @@ -0,0 +1,1426 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSON_RELATIVES_RIGHTS +walloar +2022-03-18 10:16:52 UTC +eRights +3080042D-DF8D-72AC-06C8-1EBA4157F06F +4 +false +true +true + + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RIG_ID +walloar +2022-03-18 10:16:53 UTC +eRights +A748373E-2530-7847-D70B-0C72C46F505B +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RIG_REC_NBR +walloar +2022-03-18 10:16:53 UTC +eRights +FBECC0A5-D524-4028-9183-4B3324F74511 +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +PER_ID_ATTRIB +walloar +2022-03-18 10:16:53 UTC +eRights +E3122E59-04F6-E49F-E792-406688061161 +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +NOM_ATTRIB +walloar +2022-03-18 10:16:53 UTC +eRights +5FC29D3E-FF43-2BA9-C1F0-23901624A718 +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +PRENOM_ATTRIB +walloar +2022-03-18 10:16:53 UTC +eRights +A29C2AD8-328D-28E8-318B-A389CFF06998 +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +DT_NAISS_ATTRIB +walloar +2022-03-18 10:16:53 UTC +eRights +612D74EA-D23F-806E-988E-C4EF9CFEF7BD +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +SEX_ATTRIB +walloar +2022-03-18 10:16:53 UTC +eRights +064F4586-FB3B-EE06-61F6-37A5334167AE +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +PER_ID_BENEF +walloar +2022-03-18 10:16:53 UTC +eRights +47D6E737-4E42-7FC1-C58F-017983E19B75 +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +NOM_BENEF +walloar +2022-03-18 10:16:53 UTC +eRights +0199CD2B-71F6-3746-7715-510A15E08A07 +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +PRENOM_BENEF +walloar +2022-03-18 10:16:53 UTC +eRights +069872D7-4D5C-C733-B904-8F05D3C1A238 +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +DT_NAISS_BENEF +walloar +2022-03-18 10:16:53 UTC +eRights +510561D9-0457-C16B-6D46-DA1E09E66225 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +SEX_BENEF +walloar +2022-03-18 10:16:53 UTC +eRights +13F4377C-DD0D-8309-685D-4AC1009C2C57 +true +false +1 +LOGDT024 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +INS_CD +walloar +2022-03-18 10:16:53 UTC +eRights +B2D7A791-2406-8FCB-B6D1-E871F43F8F1A +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +8735F1FE-C1F5-EE2C-FEAA-949EA4CA6D41 +true +false +1 +LOGDT024 +500 CHAR +500 CHAR,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +28DC606D-C4C3-34C5-3B33-B519162E5924 +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +B8209E4E-E50E-C4C8-50F4-6CF2CD0B24C0 +true +false +1 +LOGDT024 +500 BYTE +500 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RGT_ID +walloar +2022-03-18 10:16:53 UTC +eRights +3BECCC74-843B-7FE0-650A-A4BD18D3B22B +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +CODE +walloar +2022-03-18 10:16:53 UTC +eRights +F29F38F1-5F6D-4503-93BD-DDBAD08CB96E +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +8569306B-8E1C-9758-4D3A-19E6CA549AD7 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +4B0D4E13-86C3-0D2A-8BF6-8F0276402743 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +CD20595C-0A40-643C-5467-85258308BEA7 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +EVT_ID +walloar +2022-03-18 10:16:53 UTC +eRights +C39EA8F8-2E83-28EC-45C7-C3EDE68B2374 +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +EVT_FRA +walloar +2022-03-18 10:16:53 UTC +eRights +D774519E-D55A-13BD-A5E5-283C631AD750 +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +EVT_ENG +walloar +2022-03-18 10:16:53 UTC +eRights +63301328-C76C-93D0-7990-6D128260D7A5 +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +EVT_DEU +walloar +2022-03-18 10:16:53 UTC +eRights +846CB956-BB35-3059-6CD1-BAEE6AC6CC4A +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +DATE_FROM +walloar +2022-03-18 10:16:53 UTC +eRights +16E1E21B-4D0C-F89F-9A27-16A0A8330648 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +DATE_TO +walloar +2022-03-18 10:16:53 UTC +eRights +53734B4B-3C3B-5EC3-F788-EC2212E7A6C8 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +STATUT +walloar +2022-03-18 10:16:53 UTC +eRights +38C4E3D0-0DB2-6EDA-3DDD-5255B4ED3BE1 +true +false +1 +LOGDT025 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +AMOUNT +walloar +2022-03-18 10:16:53 UTC +eRights +99A8E44A-58B6-E20B-FD64-E898484FBEF0 +true +false +1 +LOGDT019 +13 +4 +,13,4 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +DEV_CD +walloar +2022-03-18 10:16:53 UTC +eRights +82CDA966-5CD8-D54E-7123-4A6DEBFA4AD0 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +B6BA70AD-2D83-8AC4-E28A-F889EDC43FC5 +true +false +1 +LOGDT019 +10 +6 +,10,6 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +3A6876A3-001A-1AA1-475C-8846BF6ACC17 +true +false +1 +LOGDT019 +8 +2 +,8,2 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +BB34A1BF-8F19-5A4C-7C1A-ED6E815FA6C6 +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +49A88A1B-3E33-858A-9965-773D979D0CDF +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +7F35C3D8-6B23-EE33-1CD4-D64FB3BB7A69 +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +2DE66A7B-C302-92FA-5EF9-8C458E444A7C +true +false +1 +LOGDT019 +2 +0 +,2,0 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +01725C95-7A6A-9DBC-5C1D-5A69D724CD93 +true +false +1 +LOGDT019 +2 +0 +,2,0 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +25B358D1-900B-3B5A-838C-0B29B094F1C2 +true +false +1 +LOGDT019 +13 +4 +,13,4 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +639D30F8-0EEA-DCE9-B29D-F9D638FA0FBA +true +false +1 +LOGDT019 +4 +2 +,4,2 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +C8C480AD-0B31-354E-D5AA-FE7058633070 +true +false +1 +LOGDT024 +4 BYTE +4 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +226D0824-6ABA-644D-426E-BB9912740E11 +true +false +1 +LOGDT024 +4 BYTE +4 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +AEFA1393-33D1-6A90-0414-093CDCDBEC76 +true +false +1 +LOGDT019 +10 +6 +,10,6 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +776170E8-0694-D96D-DE47-72249B41B83B +true +false +1 +LOGDT019 +8 +2 +,8,2 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +48F86160-9A0F-ED89-A269-8BC11B2D53A9 +true +false +1 +LOGDT019 +9 +6 +,9,6 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +D15FF4E6-68A5-F0C0-25D2-E2A97E5FF53F +true +false +1 +LOGDT019 +10 +6 +,10,6 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +6B0FEC2C-408C-4449-9A46-AE1F2C240CDA +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +190E200B-642A-837B-17CF-1FADE707C76E +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +E087BCC4-5936-6DFD-533C-574E4E563925 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +DA399287-397C-BF30-B915-72CB013A86C8 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +2C52BAA5-BE87-0FAC-42B6-3778F58779B9 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_ID_TYPE +walloar +2022-03-18 10:16:53 UTC +eRights +B8452D92-00E7-B58C-1A2E-01BCC56576DF +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_TYPE_FRA +walloar +2022-03-18 10:16:53 UTC +eRights +386B99DC-042D-E079-5283-49DB7DE5D3F9 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_TYPE_ENG +walloar +2022-03-18 10:16:53 UTC +eRights +B8033BB3-B0DE-A3BB-FCA8-403E00CC2060 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +RTT_TYPE_DEU +walloar +2022-03-18 10:16:53 UTC +eRights +093BC44F-9162-AE58-3986-78E5D1365A2E +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +BC339C69-BC51-31E5-2591-895C682D7085 +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +BFD57912-A4DE-4CE4-B485-395576F1F5FA +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +E815CBCE-0B9E-09CC-53B1-BBE1B6AFAE67 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +241C65F5-3CD5-75A7-6D15-759607DDB8E3 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +F590BA11-F183-CEF1-8F50-79E7DE4A3B5E +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +40868713-AB3A-A720-857C-2461835BFF57 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +3A2AE68A-962C-3D0B-9272-8C4F63182ABD +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +6632559D-A343-2707-B64B-B5F876AA3B83 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +0BC1E119-08D9-B308-0BD7-2E6E58034A00 +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +2CBFD6FF-8CA4-082D-91D4-0A7002DBB7A1 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +B9455A38-CBA8-167C-844C-D713A50B1E7E +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +4C8C3E4F-7D9D-A462-27F0-F46D0AB29D07 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +E9818A9F-ED74-4A88-28BB-6801B5A20505 +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +50D64B1A-88E0-B83C-9467-AC5F16EE47EE +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +77BC9672-A6FB-C871-7541-A1896DD2BE22 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +44BF3EC2-1FE4-11D4-2334-09E123120AE7 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +1141A6ED-CC6B-0490-498D-9C59C4246F29 +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +ADA68BF8-A7E5-DE97-BEE2-EDCEC3ED2B1F +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +DCB90E3B-206F-A64F-F034-B95345A4C8B1 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +A3502CFD-C70D-35C1-01D3-9443F1F995B5 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +288AE332-5FDB-95FD-10C5-D043142E978E +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +CCFB37EA-BCA3-C262-FDC1-45B606F46CC1 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +85221A18-4777-4819-8CD4-B0347D740C86 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +B676F427-63C4-143B-F7E2-7A0366C0B800 +true +false +1 +LOGDT024 +400 BYTE +400 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +965B71AD-BEC4-BDF0-646B-1CCDD203C4E8 +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +4C7BFC5D-4610-FA85-3D5D-5FA104C42228 +true +false +1 +LOGDT024 +4000 BYTE +4000 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +17F94B9F-7522-0F55-A50A-BB950A78AB44 +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +912AA3A6-B0CA-C4B5-B17B-7CAC97C0998B +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +E5F758DB-FC3B-2272-6D0E-897DCF96FE53 +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +0211C458-C606-3884-AB24-168B34C6AEDA +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +DEC9DDE2-6B71-91BD-9A27-D514104C8A3F +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +FE382059-97F0-E0F4-2965-7CC4502ED6FF +true +false +1 +LOGDT024 +4000 CHAR +4000 CHAR,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +DEBCBAC3-8DCE-8D6C-A4AC-891AC13FD9FA +true +false +1 +LOGDT019 +9 +0 +,9,0 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +92F9855B-C61F-9313-8D2A-F2380ACBE40B +true +false +1 +LOGDT007 +7 +7,, +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +FC824C82-035E-68C9-8579-019E3A2849A3 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_RELATIVES_RIGHTS +SRC_ID +walloar +2022-03-18 10:16:53 UTC +eRights +C795DD71-D3D2-3631-E5FA-4F743E346E30 +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +walloar +2022-03-18 10:16:53 UTC +eRights +2704179F-D40F-730B-96E8-22CFF89B862A +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + + + +ERIGHTS-TEST +ERIGHTS +IX_MV_PERSON_RELATIVES_RIGHTS +walloar +2022-10-20 12:39:02 UTC +eRights +15274B6A-986C-C98E-946A-47FEAF19B3AA +false + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/60BFABE3-CD82-61A0-F060-7010BF00DC8C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/60BFABE3-CD82-61A0-F060-7010BF00DC8C.xml new file mode 100644 index 0000000..38aa697 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/60BFABE3-CD82-61A0-F060-7010BF00DC8C.xml @@ -0,0 +1,318 @@ + + +ERIGHTS-TEST +ERIGHTS +AUD_DECLARATION_PERSON +walloar +2022-03-18 10:16:53 UTC +eRights +EED368D6-93E5-66F0-6180-B5999B410D5F +false +true +true + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +REV +walloar +2022-03-18 10:16:53 UTC +eRights +41C4DE4C-A525-5C27-AB64-6F5FF32EF655 +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +REVTYPE +walloar +2022-03-18 10:16:53 UTC +eRights +E1150EE7-5FA7-B75A-07B4-57E8A27CD90E +true +false +1 +LOGDT019 +3 +0 +,3,0 +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +DECLARATION_PERSON_ID +walloar +2022-03-18 10:16:53 UTC +eRights +4B3D5642-37EF-A74D-72DA-29BE406BB532 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +DECLARATION_ID +walloar +2022-03-18 10:16:53 UTC +eRights +125064A0-4D82-91A6-F6A2-263A41871053 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +INS_ELIGIBILITY +walloar +2022-03-18 10:16:53 UTC +eRights +1988A529-4045-C676-B390-7FC457ED1A47 +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +REM_ELIGIBILITY +walloar +2022-03-18 10:16:53 UTC +eRights +2D482761-6924-0631-63ED-A372C34A68BE +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +TUD_ELIGIBILITY +walloar +2022-03-18 10:16:53 UTC +eRights +9DE36721-AF37-117E-1B85-EC54847FC40D +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +DECLAREDPERSON +walloar +2022-03-18 10:16:53 UTC +eRights +5A029E87-82A5-F3AE-7525-9D094885B231 +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +REMARKS +walloar +2022-03-18 10:16:53 UTC +eRights +3E5ADBC7-5F33-36C1-B0EF-77317A07F9EC +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +PER_ID +walloar +2022-03-18 10:16:53 UTC +eRights +456C6CDB-3D68-26EB-93DD-2EFFB2BB0076 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +REL_PER_ID +walloar +2022-03-18 10:16:53 UTC +eRights +6B9C2E75-54B6-C464-5894-AAE6200F49AE +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +TRP_CD +walloar +2022-03-18 10:16:53 UTC +eRights +E992E0BE-B71B-F42A-CEB8-748E17F73E9A +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +TRP_CODE +walloar +2022-03-18 10:16:53 UTC +eRights +36EDE2AC-E03C-7055-B665-646A0E48FE79 +true +false +1 +LOGDT024 +100 BYTE +100 BYTE,, +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +CLAIM +walloar +2022-03-18 10:16:53 UTC +eRights +01871E1F-2CA3-B9EB-79E6-DFD48A912B06 +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +TUD_ELIGIBILITY_REASON +walloar +2022-03-18 10:16:53 UTC +eRights +88A12990-F7EB-3DD3-B330-5C22868A366D +true +false +1 +LOGDT024 +1000 BYTE +1000 BYTE,, +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +CREATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +66003A13-0A03-6E93-7050-D2B6406CA356 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +CREATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +B5BE42C5-B76A-4C84-6C11-D0CE18998915 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +UPDATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +96D2A261-9C99-4994-A7EB-C9EF6509E848 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_DECLARATION_PERSON +UPDATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +E2898780-45C9-51DA-24D3-0967204FCA25 +true +false +1 +LOGDT007 +7 +7,, +false + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml new file mode 100644 index 0000000..a1440dd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/618D19A7-6B85-A08A-3CDF-DC717901A933.xml @@ -0,0 +1,103 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_JOB_BUDGET_LINE +walloar +2021-04-26 13:29:43 UTC +eRights +CA9D50D0-E788-8791-92D2-ECCA4BBDE708 +4 +false +true +true + + + +ERIGHTS-TEST +MV_JOB_BUDGET_LINE +JOB_ID +walloar +2021-04-26 13:29:43 UTC +eRights +C33B0BFA-B47F-CC7F-925E-B76ABD27411D +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_JOB_BUDGET_LINE +BUDGET_LINE +walloar +2021-04-26 13:29:43 UTC +eRights +53914F8D-75A3-766B-DBC2-6867339B269B +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +MV_JOB_BUDGET_LINE +SOURCE +walloar +2021-04-26 13:29:43 UTC +eRights +88545CB5-8E11-7226-F546-114E5B8D1667 +true +false +1 +LOGDT024 +14 BYTE +14 BYTE,, +false + + +ERIGHTS-TEST +MV_JOB_BUDGET_LINE +LST_CD +walloar +2021-04-26 13:29:43 UTC +eRights +5BB7FF26-C934-F7B9-BC83-4A000CD1725C +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_JOB_BUDGET_LINE_JOB_ID +walloar +2021-04-26 13:29:43 UTC +eRights +2D70889E-9C34-6170-C678-4AF10E76E53C +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/6930F4F6-930D-3D61-0AB8-0AE52A0AB456.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/6930F4F6-930D-3D61-0AB8-0AE52A0AB456.xml new file mode 100644 index 0000000..26a363b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/6930F4F6-930D-3D61-0AB8-0AE52A0AB456.xml @@ -0,0 +1,295 @@ + + +ERIGHTS-TEST +ERIGHTS +POSTING_ALLOWANCES_TREATED +walloar +2023-06-15 12:36:23 UTC +eRights +E29032F5-BE3B-FB5D-41C5-3E890E4CBD41 +false +true +true + + +ERIGHTS-TEST +POSTING_ALLOWANCES_TREATED +POSTING_ALLOWANCE_TREATED_ID +walloar +2023-06-15 12:36:23 UTC +eRights +5F81F580-8BF3-719B-E608-36DBA83C5A9C +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES_TREATED +POSTING_ALLOWANCE_ID +walloar +2023-06-15 12:36:23 UTC +eRights +922041E9-2A1E-D573-2D1C-EEA76F20801E +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES_TREATED +PER_ID +walloar +2023-06-15 12:36:23 UTC +eRights +D9A62196-B425-75FB-212D-4C6D13E069F4 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES_TREATED +EXERCISE_YEAR +walloar +2023-06-15 12:36:23 UTC +eRights +6FB44389-8C75-DE51-290C-D2EC6B7AE9A6 +true +false +1 +LOGDT019 +4 +0 +,4,0 +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES_TREATED +DELEGATION_ORG_ID +walloar +2023-06-15 12:36:23 UTC +eRights +BF036566-2EE9-8C32-CDB5-918C1718F5C8 +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES_TREATED +SOJ_ID +walloar +2023-06-15 12:36:23 UTC +eRights +5FE910C4-ACF4-2736-5789-7E16B2A929E3 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES_TREATED +CREATED_BY +walloar +2023-06-15 12:36:23 UTC +eRights +714E73AD-207C-A552-4D6C-97EA71AAC506 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES_TREATED +CREATED_AT +walloar +2023-06-15 12:36:23 UTC +eRights +F2635DDF-69A7-7872-A323-4C34131E3C1F +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES_TREATED +UPDATED_BY +walloar +2023-06-15 12:36:23 UTC +eRights +00AE85FD-E1EC-CD8A-609E-273AF63A6BEC +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES_TREATED +UPDATED_AT +walloar +2023-06-15 12:36:23 UTC +eRights +028BE3CA-62EF-11C8-A3A6-2BE0EFDF18E7 +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES_TREATED +ASSIGNMENT_START_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +B17572B8-4EFD-F264-DABC-F68C32BB5DBF +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES_TREATED +ASSIGNMENT_END_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +AFB64F33-9E7F-D5D9-2005-A537ED046FE1 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES_TREATED +EXPATRIATION_ALLOWANCE_DATE_FROM +walloar +2023-06-15 12:36:23 UTC +eRights +80A27303-0301-4AA0-9F5A-7A7336CE7789 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCES_TREATED +EXPATRIATION_ALLOWANCE_DATE_TO +walloar +2023-06-15 12:36:23 UTC +eRights +88744735-45A9-EABE-D2B9-87286A00CDE6 +true +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_POSTING_ALLOWANCES_TREATED +walloar +2023-06-15 12:36:23 UTC +eRights +9F3D71AE-D23B-27BD-68BB-77E34D29A2B8 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +UK_POSTING_ALLOWANCES_TREATED_PER_ID_SOJ_ID_EXERCISE_YEAR +walloar +2023-06-15 12:36:23 UTC +eRights +52DD4336-E543-7472-5981-62493568013B +Unique Constraint +false + + + + + + + + +ERIGHTS-TEST +ERIGHTS +PK_POSTING_ALLOWANCES_TREATED +walloar +2023-06-15 12:36:23 UTC +eRights +7EEDF6FD-74BE-7E8D-972B-30483C0DFB59 +Unique Plain Index +false + + + + + +ERIGHTS-TEST +ERIGHTS +UK_POSTING_ALLOWANCES_TREATED_PER_ID_SOJ_ID_EXERCISE_YEAR +walloar +2023-06-15 12:36:23 UTC +eRights +DED64C05-81F5-95E2-1A98-B277293DD48A +Unique Plain Index +false + + + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/6C9A90BF-8244-128F-02CF-CA10CB0CE933.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/6C9A90BF-8244-128F-02CF-CA10CB0CE933.xml new file mode 100644 index 0000000..a2b729d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/6C9A90BF-8244-128F-02CF-CA10CB0CE933.xml @@ -0,0 +1,60 @@ + + +ERIGHTS-TEST +ERIGHTS +T_CONNECTION_STEMS +walloar +2023-06-15 12:36:23 UTC +eRights +D96CE97E-8761-0FAB-0735-574D900115AF +false +true +true + + +ERIGHTS-TEST +T_CONNECTION_STEMS +CONNECTION_STEM_ID +walloar +2023-06-15 12:36:23 UTC +eRights +ABE3459E-CDC2-0BF3-3A4E-F0C633D54B37 +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_T_CONNECTION_STEMS +walloar +2023-06-15 12:36:23 UTC +eRights +9B37A33B-B0A0-10BC-2D03-55C0E6BC4255 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_T_CONNECTION_STEMS +walloar +2023-06-15 12:36:23 UTC +eRights +A4B2F629-7E96-32D4-0798-B0A31459271E +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/6D9267FB-BED2-56EB-26B5-6FEF3617336B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/6D9267FB-BED2-56EB-26B5-6FEF3617336B.xml new file mode 100644 index 0000000..3691fbd --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/6D9267FB-BED2-56EB-26B5-6FEF3617336B.xml @@ -0,0 +1,359 @@ + + +ERIGHTS-TEST +ERIGHTS +AUD_DECLARATION +walloar +2022-03-18 10:16:53 UTC +eRights +CC3E8635-4C95-7EB6-B950-95B3E2E8551B +false +true +true + + +ERIGHTS-TEST +AUD_DECLARATION +DECLARATION_ID +walloar +2022-03-18 10:16:53 UTC +eRights +76E97A27-0C32-4BE1-3B8D-92877352AC2C +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +REV +walloar +2022-03-18 10:16:53 UTC +eRights +CF025FAC-8801-20FE-49CC-B54C0B302656 +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +AUD_DECLARATION +REVTYPE +walloar +2022-03-18 10:16:53 UTC +eRights +D102E37F-5755-4EB6-02B3-B895B55176DF +true +false +1 +LOGDT019 +3 +0 +,3,0 +false + + +ERIGHTS-TEST +AUD_DECLARATION +MOVEMENT_FILE_ID +walloar +2022-03-18 10:16:53 UTC +eRights +5E52FF0B-F15D-1F7A-D8D4-0256C0EAF1DD +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +PERSONS_BANK_INFO_ID +walloar +2022-03-18 10:16:53 UTC +eRights +050A596E-56CB-0F32-16DA-993609825ECD +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +ENABLE +walloar +2022-03-18 10:16:53 UTC +eRights +64CDC32D-BB9B-04EE-A9A8-C997E1720FE7 +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +STATE +walloar +2022-03-18 10:16:53 UTC +eRights +CE408189-192E-3C0C-FFBE-D83C0082D8BE +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +CREATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +B73AD6A1-9971-32B3-D757-169891E1C4BF +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +CREATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +98C99529-9981-6AFD-120A-DADA03837BDD +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +UPDATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +17A37B81-087B-A722-20E5-41C3C25A5A7C +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +UPDATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +DB38E7FB-FBAA-D79F-AA34-B09646CED68D +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +USER_CREATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +58B6135C-9F6A-1FA6-CC01-397EB7AD8D9B +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +USER_UPDATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +081D4035-4F56-A0FB-3774-960FF7125008 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +PER_ID +walloar +2022-03-18 10:16:53 UTC +eRights +55FAAAE8-376D-3241-6A3B-14E65668FDF6 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +REMOVAL_OPTION +walloar +2022-03-18 10:16:53 UTC +eRights +35B4451D-EB7E-50C7-D7D6-7139C686BF63 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +HOD_OPTION +walloar +2022-03-18 10:16:53 UTC +eRights +E8F8EF00-7BD8-5603-243D-730DC537EC1E +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +ENTRY_INTO_STORAGE +walloar +2022-03-18 10:16:53 UTC +eRights +08C201CC-A993-16D2-D948-73B4A6A4DFB8 +true +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +CITY_EIS +walloar +2022-03-18 10:16:53 UTC +eRights +81906FDE-B97F-4CED-12D3-4097AE1A743B +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +COUNTRY_EIS +walloar +2022-03-18 10:16:53 UTC +eRights +5BF0681B-FA44-7953-45D4-0C081A4BAF27 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +AIRFREIGHT_VOLUME_CEILING +walloar +2022-03-18 10:16:53 UTC +eRights +1A4BBBFD-1755-F318-992D-0E61B6C7FFD4 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +MAX_KG +walloar +2022-03-18 10:16:53 UTC +eRights +9E2680B3-6FF8-3DF5-422E-F8A69442F591 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_DECLARATION +AIRFREIGHT_KG_CEILING +walloar +2022-03-18 10:16:53 UTC +eRights +5ACE43B4-1858-BE1C-9B04-3544C88754D9 +true +false +1 +LOGDT019 +,, +false + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/7199A743-9A1F-008C-79EE-C9A1A8CAB95B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/7199A743-9A1F-008C-79EE-C9A1A8CAB95B.xml new file mode 100644 index 0000000..ea5f864 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/7199A743-9A1F-008C-79EE-C9A1A8CAB95B.xml @@ -0,0 +1,405 @@ + + +ERIGHTS-TEST +ERIGHTS +POSTING_ALLOWANCE_DEFAULT +walloar +2022-10-25 12:45:50 UTC +eRights +CD8993A0-EC14-EBF7-DB1D-3A59E6AF30BD +false +true +true + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +POSTING_ALLOWANCE_DEFAULT_ID +walloar +2022-10-25 12:45:50 UTC +eRights +14ADF4BA-EAA9-D94A-A37F-3C9BA18D4AF3 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +POSTING_ALLOWANCE_TYPE +walloar +2022-10-25 12:45:50 UTC +eRights +5EA86294-837D-F7C6-D4EE-C5957E3DCD3E +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +POSTING_ALLOWANCE_REQ_TYPE +walloar +2022-10-25 12:45:50 UTC +eRights +A3D913FB-124A-63C1-6CA6-CC275F602963 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +CITY_CODE_TO +walloar +2022-10-25 12:45:50 UTC +eRights +C679FCF1-45D7-DDA6-BBA7-451ED66C3623 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +CITY_CODE_FROM +walloar +2022-10-25 12:45:50 UTC +eRights +83A14F09-11B9-2076-6592-842E55DFF9EE +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +COUNTRY_CODE_TO +walloar +2022-10-25 12:45:50 UTC +eRights +A4AD8D6A-361F-A3CC-FB96-AE947608FE97 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +COUNTRY_CODE_FROM +walloar +2022-10-25 12:45:50 UTC +eRights +A3FDB15C-E984-30DB-F5B1-5B669E478CB8 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +AMOUNT +walloar +2022-10-25 12:45:50 UTC +eRights +F77F009D-38EE-B267-CD55-979193D4A575 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +CURRENCY +walloar +2022-10-25 12:45:50 UTC +eRights +F5B8DD85-70FD-AC91-8601-670C5A56D745 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +EXERCISE_YEAR +walloar +2022-10-25 12:45:50 UTC +eRights +8FEDFA46-B5C3-E383-C135-80226050925E +false +1 +LOGDT019 +4 +0 +,4,0 +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +LATEST +walloar +2022-10-25 12:45:50 UTC +eRights +0CD05B68-4361-8634-6CBA-6926DC17FBC0 +true +false +1 +LOGDT025 +1 CHAR +'Y' +1 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +SOURCE_DATA +walloar +2022-10-25 12:45:50 UTC +eRights +2AB416AB-3F62-B4C6-179E-E7F04E970123 +true +false +1 +LOGDT024 +20 CHAR +'HR' +20 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +CREATED_AT +walloar +2022-10-25 12:45:50 UTC +eRights +86400FBD-99E5-2788-E5CA-4B38B98BE7FE +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +CREATED_BY +walloar +2022-10-25 12:45:50 UTC +eRights +C6810DE1-2AD0-7B08-8BBD-A10D9B48D429 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +UPDATED_BY +walloar +2022-10-25 12:45:50 UTC +eRights +2A0E7FF5-86DC-4A7B-5C2F-DDF798033F7B +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +UPDATED_AT +walloar +2022-10-25 12:45:50 UTC +eRights +A58D5737-C535-29CA-E371-02DA209480C3 +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +IATA_CODE_FROM +walloar +2022-11-11 07:44:41 UTC +eRights +63D132EC-ED6D-1C27-6487-BBB3B2E0E948 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_DEFAULT +IATA_CODE_TO +walloar +2022-11-11 07:44:41 UTC +eRights +D16C4294-1C41-0CEA-2586-BD0C899ADE28 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_POSTING_ALLOWANCE_DEFAULT +walloar +2022-10-25 12:45:50 UTC +eRights +CB0FB45E-F368-FE5D-C784-5D139968269C +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_POSTING_ALLOWANCE_DEFAULT +walloar +2022-10-25 12:45:50 UTC +eRights +AF85C282-A637-ADA0-676B-9857CA297CAA +Unique Plain Index +false + + + + + +ERIGHTS-TEST +ERIGHTS +POSTING_ALLOWANCE_DEFAULT_IDX_EXERCISE_YEAR +walloar +2023-02-07 10:46:15 UTC +eRights +6D6FE408-B996-725E-DA0F-57A1A5BFC7F1 +false + + + + + +ERIGHTS-TEST +ERIGHTS +POSTING_ALLOWANCE_DEFAULT_IDX_LATEST +walloar +2023-02-07 10:46:15 UTC +eRights +D789B752-5EB3-E24B-25C3-8F3376CCDFE2 +false + + + + + +ERIGHTS-TEST +ERIGHTS +POSTING_ALLOWANCE_DEFAULT_IDX_POSTING_ALLOWANCE_TYPE +walloar +2023-02-07 10:46:15 UTC +eRights +1DE677E3-9B61-3776-818C-8E9DF66AD8E4 +false + + + + + +ERIGHTS-TEST +ERIGHTS +POSTING_ALLOWANCE_DEFAULT_REQ_TYPE_INDEX1 +walloar +2023-02-07 10:46:15 UTC +eRights +504F4A4A-DDCA-81E4-594F-762E79A141D1 +false + + + + + +ERIGHTS-TEST +ERIGHTS +UK_FROM_POSTING_ALLOWANCE_DEFAULT_INDEX1 +walloar +2023-02-07 10:46:15 UTC +eRights +3CC2D0BC-837F-D831-7FCD-F99502AEA67E +false + + + + + +ERIGHTS-TEST +ERIGHTS +UK_TO_POSTING_ALLOWANCE_DEFAULT +walloar +2023-02-07 10:46:15 UTC +eRights +1C77FEB7-9853-EDB2-88B6-FC251B82757B +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/71F3D6E7-C4F0-CB7E-C63E-AF6A800513F8.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/71F3D6E7-C4F0-CB7E-C63E-AF6A800513F8.xml new file mode 100644 index 0000000..302d02d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/71F3D6E7-C4F0-CB7E-C63E-AF6A800513F8.xml @@ -0,0 +1,136 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_FILES +walloar +2021-04-26 13:29:43 UTC +eRights +219EC5DA-BEFB-8623-62A8-97D0A83B0A48 +false +true +true + + +ERIGHTS-TEST +ANK_FILES +ID +walloar +2021-04-26 13:29:43 UTC +eRights +F9719C4B-FD17-AA20-A3F2-BB96C4FABEF5 +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +ANK_FILES +NAME +walloar +2021-04-26 13:29:43 UTC +eRights +C53D64E6-1144-7E7E-6549-1D9D7BAA378D +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +ANK_FILES +CONTENT_TYPE +walloar +2021-04-26 13:29:43 UTC +eRights +F8A93206-A048-1C17-D2B6-D45B8188A936 +false +1 +LOGDT024 +100 BYTE +100 BYTE,, +false + + +ERIGHTS-TEST +ANK_FILES +DATA_SIZE +walloar +2021-04-26 13:29:43 UTC +eRights +6304AD98-92FF-6758-44CB-813CE70B9DCA +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +ANK_FILES +DATA +walloar +2021-04-26 13:29:43 UTC +eRights +BAEBAA8A-99E2-6655-E59E-0072FD8BBDAE +false +1 +LOGDT029 +4000 +4000,, +false + + +ERIGHTS-TEST +ANK_FILES +CREATED_AT +walloar +2021-04-26 13:29:43 UTC +eRights +2EC3C745-714C-9F2A-D8B3-A189CE0E11A5 +false +1 +LOGDT007 +7 +sysdate +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_FILES +walloar +2021-04-26 13:29:43 UTC +eRights +856E5F38-6767-7432-70B7-286D70A32F32 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_FILES +walloar +2021-04-26 13:29:43 UTC +eRights +3E0918CC-3F27-A70A-2BE8-12B7E2F8A495 +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/9261BA96-4D23-B7A1-91C7-8E9B9DAFB55A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/9261BA96-4D23-B7A1-91C7-8E9B9DAFB55A.xml new file mode 100644 index 0000000..b9c311e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/9261BA96-4D23-B7A1-91C7-8E9B9DAFB55A.xml @@ -0,0 +1,197 @@ + + +ERIGHTS-TEST +ERIGHTS +REQUEST_SUBPOSTS +walloar +2022-03-18 10:16:52 UTC +eRights +19B2E77F-4269-DEE1-E515-B8DBB1E668CB +false +true +true + + +ERIGHTS-TEST +REQUEST_SUBPOSTS +REQUEST_SUBPOSTS_ID +walloar +2022-03-18 10:16:53 UTC +eRights +7EF9F32B-4196-BADA-CB87-C0B9B90CCBE3 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUEST_SUBPOSTS +BUDGET_LINES_SUBPOSTS_MAPPING_ID +walloar +2022-03-18 10:16:53 UTC +eRights +F8C7727C-2A62-1C9B-A1D2-AA979D062BE2 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUEST_SUBPOSTS +SUBPOST_CODE +walloar +2022-03-18 10:16:53 UTC +eRights +C126BD08-EDEC-B5B2-F80F-444E31E196AA +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_SUBPOSTS +SUBPOST_TYPE +walloar +2022-03-18 10:16:53 UTC +eRights +14F9A22C-BA74-B875-4986-C422362C7F46 +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_SUBPOSTS +SUBPOST_DESCRIPTION +walloar +2022-03-18 10:16:53 UTC +eRights +34307B14-6EE8-02D5-D42B-186DFA6649EC +true +false +1 +LOGDT024 +1000 BYTE +1000 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_SUBPOSTS +AMOUNT +walloar +2022-03-18 10:16:53 UTC +eRights +105AA1B3-6F3E-819E-1316-206EE90326DD +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUEST_SUBPOSTS +AMOUNT_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +6ECB333C-E420-C3B5-CBF3-4BE5A33CD448 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_SUBPOSTS +REQUEST_ID +walloar +2022-03-18 10:16:53 UTC +eRights +1A882246-2457-AADB-B81D-52E3341073F4 +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +REQUEST_SUBPOSTS +REQUEST_PAYMENT_ABAC_INFO_ID +walloar +2022-03-18 10:16:53 UTC +eRights +B1604195-9E1D-E425-5550-476D57A1A164 +true +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +REQUEST_SUBPOSTS_PK +walloar +2022-03-18 10:16:53 UTC +eRights +E6B34B16-B107-B4FA-5211-27F8F2BABDFF +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +REQUEST_SUBPOSTS_PK +walloar +2022-03-18 10:16:53 UTC +eRights +66DC12F8-D923-479E-A27B-DE9E0E41FC5F +Unique Plain Index +false + + + + + +walloar +2022-03-21 10:52:45 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/93F5C5A3-DE53-42A0-BA83-FCC5F97847CD.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/93F5C5A3-DE53-42A0-BA83-FCC5F97847CD.xml new file mode 100644 index 0000000..50700d0 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/93F5C5A3-DE53-42A0-BA83-FCC5F97847CD.xml @@ -0,0 +1,166 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSONS_DATA_FOR_ABAC +walloar +2022-03-18 10:16:52 UTC +eRights +90546D0C-432C-1C70-9F28-EB9710095412 +4 +false +true +true + + + +ERIGHTS-TEST +MV_PERSONS_DATA_FOR_ABAC +PER_ID +walloar +2022-03-18 10:16:53 UTC +eRights +7564C2BB-A063-C8F9-BF39-F7109D1F9A88 +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSONS_DATA_FOR_ABAC +NUP +walloar +2022-03-18 10:16:53 UTC +eRights +3D46AAA4-4431-6515-A4F8-1EA0A867683B +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_DATA_FOR_ABAC +BIRTH_NAME +walloar +2022-03-18 10:16:53 UTC +eRights +CD3D041E-88B7-FCF1-9A64-97E8B83258D1 +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_DATA_FOR_ABAC +FIRST_NAME +walloar +2022-03-18 10:16:53 UTC +eRights +ED55952E-E29C-8BB2-8C62-77C3E576BE80 +true +false +1 +LOGDT024 +255 CHAR +255 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_DATA_FOR_ABAC +ANALYTICAL_CODE +walloar +2022-03-18 10:16:53 UTC +eRights +82211708-8CBC-E9AE-21CD-EA61082F9169 +true +false +1 +LOGDT024 +13 CHAR +13 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSONS_DATA_FOR_ABAC +BUDGDEL_ANALYTICAL_CODE +walloar +2022-07-19 13:44:13 UTC +eRights +914783DB-CFA4-A03B-A9C9-130CF29B2890 +true +false +1 +LOGDT024 +15 BYTE +15 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IX_MV_PERSONS_DATA_FOR_ABAC_PER_ID +walloar +2022-08-26 15:21:56 UTC +eRights +D52F330D-0B93-0F6B-5738-A5C3BD2AA783 +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml new file mode 100644 index 0000000..1b1a450 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/9468D46E-3C04-CCB6-1EB0-D7398A399B45.xml @@ -0,0 +1,281 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SIMPROP_TRIGGERS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +TRIGGER_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +TRIGGER_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +STR_PROP_1 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +STR_PROP_2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +STR_PROP_3 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +INT_PROP_1 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +INT_PROP_2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +LONG_PROP_1 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +LONG_PROP_2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +DEC_PROP_1 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +13 +4 +,13,4 +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +DEC_PROP_2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +13 +4 +,13,4 +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +BOOL_PROP_1 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_SIMPROP_TRIGGERS +BOOL_PROP_2 +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +1 BYTE +1 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SIMPROP_TRIG_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_SIMPROP_TRIG_PK +walloar +2021-03-02 08:04:53 UTC +eRights +Unique Plain Index +false + + + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/A0237D1D-4C92-33A4-8FCD-3266224A0D02.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/A0237D1D-4C92-33A4-8FCD-3266224A0D02.xml new file mode 100644 index 0000000..ae1f503 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/A0237D1D-4C92-33A4-8FCD-3266224A0D02.xml @@ -0,0 +1,578 @@ + + +ERIGHTS-TEST +ERIGHTS +POSTING_ALLOWANCE_PERSONS +walloar +2022-10-25 12:45:50 UTC +eRights +83B91517-93D0-D8ED-C7DD-E311A293CD50 +false +true +true + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +POSTING_ALLOWANCE_PERSON_ID +walloar +2022-10-25 12:45:50 UTC +eRights +1E861111-3C7A-3BC3-BFF6-0870B77B66E0 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +POSTING_ALLOWANCE_ID +walloar +2022-10-25 12:45:50 UTC +eRights +5C785D7E-9D91-7DAF-B081-72D691FC7F94 +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +DATE_OF_BIRTH +walloar +2022-10-25 12:45:50 UTC +eRights +419FFABB-A9C4-9429-D370-E4299423DD5B +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +ROUTE +walloar +2022-10-25 12:45:50 UTC +eRights +79FAB502-6ACB-0AB9-6132-D6F60B3E0FF0 +CK_POSTING_ALLOWANCE_PERSONS_ROUTE +true +false +1 +LOGDT024 +10 CHAR + + + + +'OUTGOING' +10 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +PER_ID +walloar +2022-10-25 12:45:50 UTC +eRights +745C226A-0D11-0784-81E2-F2CF0485D112 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +REL_PER_ID +walloar +2022-10-25 12:45:50 UTC +eRights +94DAD91D-7AD7-2CE7-4803-483A96E4A86E +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +TRP_CD +walloar +2022-10-25 12:45:50 UTC +eRights +22454DAD-ADD6-FBCF-11DA-C8C81072C470 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +TRP_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +5ABE25D7-F55F-EE0C-5D9A-66A954D8796B +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +TRIP_AMOUNT +walloar +2022-10-25 12:45:50 UTC +eRights +DD1DEDE6-10DD-1C24-F5BF-C831407118A6 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +TRIP_AMOUNT_CURRENCY +walloar +2022-10-25 12:45:50 UTC +eRights +40FEE03D-45F2-B468-D284-047BC75BECCF +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +ENTITLED_MONTHS +walloar +2022-10-25 12:45:50 UTC +eRights +D632133F-B92A-762F-B9D2-A40819DECEBE +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +TOTAL_AMOUNT +walloar +2022-10-25 12:45:50 UTC +eRights +333AB7DA-0F36-6380-B320-C045669CDA65 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +TOTAL_AMOUNT_CURRENCY +walloar +2022-10-25 12:45:50 UTC +eRights +4091F751-2AF5-84F1-A69D-356E31880BE4 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +CITY_FROM +walloar +2022-10-25 12:45:50 UTC +eRights +273572B9-94C3-3A64-F316-1A35E04F98F7 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +COUNTRY_FROM +walloar +2022-10-25 12:45:50 UTC +eRights +5BB522D1-09A5-1B72-CD27-AF72713B3ABE +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +IATA_CODE_FROM +walloar +2022-10-25 12:45:50 UTC +eRights +8639EBC4-1955-EC2A-DEF8-EAC3304DDB33 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +CITY_TO +walloar +2022-10-25 12:45:50 UTC +eRights +D4E6603F-B8EA-012B-C77F-48E379FF7C5A +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +COUNTRY_TO +walloar +2022-10-25 12:45:50 UTC +eRights +8C76FEED-6DEF-18CF-AFC9-7ED5911E34F3 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +IATA_CODE_TO +walloar +2022-10-25 12:45:50 UTC +eRights +3DAC7D90-72A6-4775-7573-1C73B53E9749 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +REMARKS +walloar +2022-10-25 12:45:50 UTC +eRights +7696F4CD-1110-7AE5-F37C-644C9695C64F +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +CREATED_BY +walloar +2022-10-25 12:45:50 UTC +eRights +7C55E35D-51BD-C789-BD81-DAE025F7CD3A +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +CREATED_AT +walloar +2022-10-25 12:45:50 UTC +eRights +BFEF1D00-EBD1-E5EF-5A2E-C0B34E6AA367 +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +UPDATED_BY +walloar +2022-10-25 12:45:50 UTC +eRights +C459498C-1FC4-E13B-7EDA-52148B5A8600 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +UPDATED_AT +walloar +2022-10-25 12:45:50 UTC +eRights +C2177DD6-5B9F-E8B3-3F3C-06B41CEFB77D +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +SURNAME +walloar +2022-11-11 07:44:41 UTC +eRights +4EDAFC26-EBD3-1FBA-86EE-C36CBE9DD7E8 +true +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +FIRST_NAME +walloar +2022-11-11 07:44:41 UTC +eRights +554243FE-1D66-EABD-7119-3214BC47D05B +true +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +WORK_IN_DELEGATION +walloar +2023-02-07 10:46:15 UTC +eRights +344DAA94-D0F7-E698-A26F-E053D32EB60C +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +WORK_IN_HQ +walloar +2023-02-07 10:46:15 UTC +eRights +7847B86F-EC7D-4228-61FA-3B6DC6925DCD +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +ORDER_TYPE_OF_PERSON +walloar +2023-02-07 10:46:15 UTC +eRights +0ED1A654-B797-8AA5-CF52-8157D516369C +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +POSTING_ALLOWANCE_PERSONS +FIRST_NATIONALITY_COUNTRY +walloar +2023-06-15 12:36:23 UTC +eRights +F552BFCA-B07C-AF3A-29C0-D7DA0ABE24B2 +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_POSTING_ALLOWANCE_PERSONS +walloar +2022-10-25 12:45:50 UTC +eRights +7A45DCF9-17B4-4BBE-3F69-F9980C2C9C54 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +IX_POSTING_ALLOWANCE_PERSONS_PER_ID +walloar +2022-10-25 12:45:50 UTC +eRights +F777A22B-31AE-2ACD-BF0D-475848A61708 +false + + + + + +ERIGHTS-TEST +ERIGHTS +IX_POSTING_ALLOWANCE_PERSONS_POSTING_ALLOWANCE_ID +walloar +2022-10-25 12:45:50 UTC +eRights +77C4683E-7828-BF0D-7387-5564CAD4DAF9 +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_POSTING_ALLOWANCE_PERSONS +walloar +2022-10-25 12:45:50 UTC +eRights +4EF78AF8-303C-2366-F096-43F8B81F8315 +Unique Plain Index +false + + + + + +walloar +2022-10-25 12:45:50 UTC +eRights +Foreign Key +false + + + + + + + +walloar +2022-10-25 12:50:41 UTC +eRights +DA4E4BF5-B71F-09C1-BF34-1900C272C1CF +73DB7963-4431-C4C4-5300-393B221A8121 +04E6EE75-0212-D11C-EAAD-34E8BB42ADA5 +ERIGHTS.V_PEOPLE +PER_ID + + +walloar +2022-10-25 12:51:10 UTC +eRights +4369BF7A-6CD4-CF9F-4DC8-2FB0619716F5 +8EED841A-564F-73D4-B7CC-0B63A5CD28B4 +CFCF8869-BEFA-6411-4536-13BA4AA7880D +ERIGHTS.MV_FAMILY_MEMBERS +REL_PER_ID + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/ABE48C91-801D-CAA0-4154-074A7FCE333A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/ABE48C91-801D-CAA0-4154-074A7FCE333A.xml new file mode 100644 index 0000000..5bae84e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/ABE48C91-801D-CAA0-4154-074A7FCE333A.xml @@ -0,0 +1,181 @@ + + +ERIGHTS-TEST +ERIGHTS +PLACES_OF_ORIGIN_AIRPORT +walloar +2023-02-07 10:46:14 UTC +eRights +8D2F7115-9C0F-B789-FA7F-2AE08F112F9E +false +true +true + + +ERIGHTS-TEST +PLACES_OF_ORIGIN_AIRPORT +PLACES_OF_ORIGIN_AIRPORT_ID +walloar +2023-02-07 10:46:15 UTC +eRights +2CC7EB21-CD8F-255E-CC32-7B93262399FA +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +PLACES_OF_ORIGIN_AIRPORT +CITY_CODE +walloar +2023-02-07 10:46:15 UTC +eRights +6D0123CE-F7DD-A783-0141-2B20B0495DA6 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +PLACES_OF_ORIGIN_AIRPORT +COUNTRY_CODE +walloar +2023-02-07 10:46:15 UTC +eRights +D4A2A7C7-23F3-1A5B-E698-74B5DE37D80D +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +PLACES_OF_ORIGIN_AIRPORT +CITY_NAME +walloar +2023-02-07 10:46:15 UTC +eRights +BFBD3F48-DA47-9705-0F52-F7322D89253D +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + +ERIGHTS-TEST +PLACES_OF_ORIGIN_AIRPORT +IATA_CODE +walloar +2023-02-07 10:46:15 UTC +eRights +A04299E9-C9ED-A948-AC34-E33702035C4D +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + + + + +ERIGHTS-TEST +PLACES_OF_ORIGIN_AIRPORT +AIRPORT_NAME +walloar +2023-02-07 10:46:15 UTC +eRights +06C94A05-EBAE-22DE-7667-D119B094B2C5 +true +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_PLACES_OF_ORIGIN_AIRPORT +walloar +2023-02-07 10:46:15 UTC +eRights +E5BCE7D0-12AA-8C9F-CF58-BAB23D3F4F30 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +UK_PLACES_OF_ORIGIN_AIRPORT +walloar +2023-06-15 12:36:23 UTC +eRights +32BF36D7-CD39-001B-AFF3-71A15347C823 +Unique Constraint +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IX_PLACES_OF_ORIGIN_AIRPORT_COUNTRY_CODE_CITY_NAME +walloar +2023-02-07 10:46:15 UTC +eRights +50C3B17B-1DC0-9B4D-4294-C668289B76FB +false + + + + + + +ERIGHTS-TEST +ERIGHTS +PK_PLACES_OF_ORIGIN_AIRPORT +walloar +2023-02-07 10:46:15 UTC +eRights +B347075B-A550-3455-A1D4-3EBE3ED5E349 +Unique Plain Index +false + + + + + +walloar +2023-02-07 11:01:21 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml new file mode 100644 index 0000000..b4cd41d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B0343155-8655-39FE-4688-0AD2CB9B8528.xml @@ -0,0 +1,460 @@ + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +REQUEST_DETAILS +walloar +2021-05-11 06:48:47 UTC +eRights +84A978B8-01FE-3CF1-5094-D266F60276E1 +false +true +true + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +REQUEST_DETAIL_ID +walloar +2021-05-11 06:48:47 UTC +eRights +68BE983A-17CA-4633-D527-C9A072A8F47B +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +REQUEST_ID +walloar +2021-05-11 06:48:47 UTC +eRights +A0A2E552-756E-76D5-78E0-D01E16A21AF6 +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +ENTITLMNT_MAX_CAT_ID +walloar +2021-05-11 06:48:47 UTC + +eRights +08023123-186D-FB14-BCB6-D6312BBA5046 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +REQUEST_DETAIL_TYPE +walloar +2021-05-11 06:48:47 UTC + +eRights +A8787206-F86F-4EE9-96BF-B69795E93348 +true +false +1 +LOGDT024 +25 CHAR +25 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +VOLUMEN +walloar +2021-05-11 06:48:47 UTC +eRights +4110970B-992B-22A7-8B78-74FC43011232 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +WEIGHT +walloar +2021-05-11 06:48:47 UTC +eRights +7815627F-267E-9A53-B993-D59322100218 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +INSURANCE_RATE +walloar +2021-05-11 06:48:47 UTC +eRights +9E5FD099-8AFB-8D30-D7BA-55AD11A9C076 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +VALUE_GOODS +walloar +2021-05-11 06:48:47 UTC +eRights +C934367D-CA69-1659-1F9A-2AACB035D87C +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +VALUE_GOODS_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +4927A7BF-73CB-6F54-1331-7097522F2006 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +PROFORMA +walloar +2021-05-11 06:48:47 UTC +eRights +7C861298-926C-BAF3-DCE0-0C687E66B086 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +PROFORMA_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +491034B8-7656-E689-4C55-B5A9FB9CFCE2 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +INVOICE +walloar +2021-05-11 06:48:47 UTC +eRights +07ADAC7A-5D9B-7ABE-1262-FA9C1F061EF4 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +INVOICE_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +19C64CD8-BD44-FE2D-DA33-4C6B4CADABF7 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +AMOUNT +walloar +2021-05-11 06:48:47 UTC +eRights +4C23201E-FF62-74DC-0EAC-6086A126CBF1 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +AMOUNT_CURRENCY +walloar +2021-05-11 06:48:47 UTC +eRights +50B7D523-D411-0316-B9DB-322342C94677 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +CREATED_BY +walloar +2021-05-11 06:48:47 UTC +eRights +C5B904E5-375D-F729-D101-1A9B61D19E0D +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +CREATED_AT +walloar +2021-05-11 06:48:47 UTC +eRights +380AA4DC-6178-35FC-E167-080915A1B994 +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +UPDATED_BY +walloar +2021-05-11 06:48:47 UTC +eRights +4FC17F6A-E332-D903-A97B-B81CBFC54E64 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +UPDATED_AT +walloar +2021-05-11 06:48:47 UTC +eRights +552EC082-319A-BFFF-429F-F77F8C0165E1 +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +EXCHANGE_RATE +walloar +2021-06-09 07:13:25 UTC +eRights +2762AD31-65DA-930A-D7F3-34835DDA5622 +true +false +1 +LOGDT019 +1 +,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +EXCHANGE_START_DATE +walloar +2021-06-09 07:13:25 UTC +eRights +E6AC8BD3-361B-D564-2484-C4A0A4BEA213 +true +false +1 +LOGDT007 +7 +sysdate +7,, +false + + +ERIGHTS-DEVELOPMENT +REQUEST_DETAILS +EXCHANE_CURRENCY +walloar +2021-06-09 07:13:25 UTC +eRights +4063B0AE-8440-B16E-9786-0E7B20E6CCA6 +true +false +1 +LOGDT024 +3 BYTE +'EUR' +3 BYTE,, +false + + +tapiafo +2021-06-09 13:32:46 UTC +eRights +true +false +1 +LOGDT019 +,, +false + + +walloar +2021-07-20 12:12:07 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +N +1 BYTE,, +false + + +walloar +2021-07-20 12:12:07 UTC +eRights +true +false +1 +LOGDT024 +3000 BYTE +3000 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_DETAILS +EXCHANGE_PAY_MONTH +walloar +2022-03-18 10:16:53 UTC +eRights +39013C7B-765E-4A7D-F74E-DA9BAF05EEDD +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +PK_REQUEST_DETAIL +walloar +2021-05-11 06:48:47 UTC +eRights +5C39B824-46B1-22AF-47ED-A045FCA6841A +true +Primary Constraint +false + + + + + +ERIGHTS-DEVELOPMENT +E_RIGHTS +PK_REQUEST_DETAIL +walloar +2021-05-11 06:48:47 UTC +eRights +784846AD-DD31-663D-4B19-970A8B64BD2F +Unique Plain Index +false + + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +Foreign Key +false + + + + + +walloar +2021-05-11 06:48:47 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B55392AB-563F-D199-B9AB-EE5BC9FC5638.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B55392AB-563F-D199-B9AB-EE5BC9FC5638.xml new file mode 100644 index 0000000..cafafa3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B55392AB-563F-D199-B9AB-EE5BC9FC5638.xml @@ -0,0 +1,154 @@ + + +ERIGHTS-TEST +ERIGHTS +PERSONS_EMAILS +walloar +2021-03-25 11:04:18 UTC +eRights +table_81 +false +true +true + + +walloar +2021-03-25 11:34:51 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-25 11:05:16 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-25 11:08:43 UTC + +eRights +CK_PER_MAIL_TYPE +false +1 +LOGDT024 +4 CHAR + + + + +PRIV +4 CHAR,, +false + + +walloar +2021-03-25 11:05:16 UTC + +eRights +false +1 +LOGDT024 +320 CHAR +320 CHAR,, +false + + +walloar +2021-03-25 11:34:51 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-25 11:34:51 UTC +eRights +false +1 +LOGDT007 +,, +false + + +walloar +2021-03-25 11:34:51 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-03-25 11:34:51 UTC +eRights +false +1 +LOGDT007 +,, +false + + + + +walloar +2021-03-25 11:08:43 UTC +eRights +true +Primary Constraint +false + + + + + +walloar +2021-03-25 11:37:17 UTC +eRights +false + + + + + +ERIGHTS-TEST +ERIGHTS +PERSONS_EMAILS_PK +walloar +2021-04-26 13:29:43 UTC +eRights +129EC1D6-53CF-16EF-F6C5-1E58D20F0E59 +Unique Plain Index +false + + + + + + + +walloar +2021-03-25 11:09:03 UTC +eRights +0EC80C67-CA1A-15CA-9DAE-B4F1C1E7DCB3 +73DB7963-4431-C4C4-5300-393B221A8121 +98C244C4-AE7E-60CD-DD95-009D5C851A4E +ERIGHTS.V_PEOPLE +PER_ID + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B702C10C-3481-C7D5-B5D0-76A3CC83D977.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B702C10C-3481-C7D5-B5D0-76A3CC83D977.xml new file mode 100644 index 0000000..1f8ff9d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/B702C10C-3481-C7D5-B5D0-76A3CC83D977.xml @@ -0,0 +1,89 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_ABAC_COMM_ERRORS +walloar +2021-04-26 13:29:43 UTC +eRights +D87E3692-18C9-AB59-DCF8-C38133B015A9 +false +true +true + + +ERIGHTS-TEST +ANK_ABAC_COMM_ERRORS +ID +walloar +2021-04-26 13:29:43 UTC +eRights +C8E2FB2B-CF6A-FB24-3FB5-F218FCC7A583 +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + + + + +ERIGHTS-TEST +ANK_ABAC_COMM_ERRORS +DATA +walloar +2021-04-26 13:29:43 UTC +eRights +307EF453-1365-018C-C7D9-C083DE2ECBB4 +false +1 +LOGDT028 +4000 +4000,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_ABAC_COMM_ERRORS +walloar +2021-04-26 13:29:43 UTC +eRights +CE0CC78D-51FD-560E-35E1-01B143A1205E +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_ABAC_COMM_ERRORS +walloar +2021-04-26 13:29:43 UTC +eRights +830E81FF-C0C3-34FA-041C-F9CD35749A8B +Unique Plain Index +false + + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/BA98FDD9-EBA1-75B7-B0B8-07331547FFD9.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/BA98FDD9-EBA1-75B7-B0B8-07331547FFD9.xml new file mode 100644 index 0000000..37f44ad --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/BA98FDD9-EBA1-75B7-B0B8-07331547FFD9.xml @@ -0,0 +1,89 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_ABAC_COMM_REQUESTS +walloar +2021-04-26 13:29:43 UTC +eRights +B2D974DE-3FE9-4FD3-7C0A-F9221A6FF6F7 +false +true +true + + +ERIGHTS-TEST +ANK_ABAC_COMM_REQUESTS +ID +walloar +2021-04-26 13:29:43 UTC +eRights +38EB8020-5587-1C08-4B18-206E48EFA485 +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + + + + +ERIGHTS-TEST +ANK_ABAC_COMM_REQUESTS +DATA +walloar +2021-04-26 13:29:43 UTC +eRights +CC4CCE18-567F-D916-870B-9B240432A816 +false +1 +LOGDT028 +4000 +4000,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_ABAC_COMM_REQUESTS +walloar +2021-04-26 13:29:43 UTC +eRights +87DB6B33-24B6-9D43-44BE-932E8D1F8E6A +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_ABAC_COMM_REQUESTS +walloar +2021-04-26 13:29:43 UTC +eRights +091C3F43-5E64-7899-33E5-CF8C968C10A8 +Unique Plain Index +false + + + + + +walloar +2021-04-26 13:29:43 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/BF3D1DDA-FEB9-8973-D163-967E1893F499.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/BF3D1DDA-FEB9-8973-D163-967E1893F499.xml new file mode 100644 index 0000000..2930107 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/BF3D1DDA-FEB9-8973-D163-967E1893F499.xml @@ -0,0 +1,519 @@ + + +ERIGHTS-TEST +ERIGHTS +AUD_POSTING_ALLOWANCE_PERSONS +walloar +2022-10-25 12:45:50 UTC +eRights +B8FD7A57-2226-E929-794F-9F8E85390701 +false +true +true + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +REV +walloar +2022-10-25 12:45:50 UTC +eRights +507D0504-0F42-0518-0034-1325171144AB +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +REVTYPE +walloar +2022-10-25 12:45:50 UTC +eRights +317470BF-CF3D-C72F-8EA3-85D2AFE460AA +true +false +1 +LOGDT019 +3 +0 +,3,0 +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +POSTING_ALLOWANCE_PERSON_ID +walloar +2022-10-25 12:45:50 UTC +eRights +5483B328-DC11-5B2C-BFEB-6179072CA2DD +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +POSTING_ALLOWANCE_ID +walloar +2022-10-25 12:45:50 UTC +eRights +7734982F-A8A0-400B-6E9B-D37ECE68FCB9 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +DATE_OF_BIRTH +walloar +2022-10-25 12:45:50 UTC +eRights +5E2313C1-E127-42BB-B2D7-AB259F904CE2 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +ROUTE +walloar +2022-10-25 12:45:50 UTC +eRights +F40D99A0-F489-CACD-789D-932D69CA2D0E +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +PER_ID +walloar +2022-10-25 12:45:50 UTC +eRights +EA6E8653-30C3-6FAD-2D4A-FDBFC26FD4EC +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +REL_PER_ID +walloar +2022-10-25 12:45:50 UTC +eRights +BAEA915F-6935-BC47-49CB-939B1D3BE99F +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +TRP_CD +walloar +2022-10-25 12:45:50 UTC +eRights +D904892C-31E2-CA0F-8309-AC67B2E044EE +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +TRP_CODE +walloar +2022-10-25 12:45:50 UTC +eRights +C33BBB1F-D68B-2A24-98D7-D77A9BBD961D +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +TRIP_AMOUNT +walloar +2022-10-25 12:45:50 UTC +eRights +E6F2C58D-1820-E228-9908-A3E181CA44F9 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +TRIP_AMOUNT_CURRENCY +walloar +2022-10-25 12:45:50 UTC +eRights +414A9319-4D76-EE5E-A212-38392C5CEEB8 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +ENTITLED_MONTHS +walloar +2022-10-25 12:45:50 UTC +eRights +5C336CBE-DEC4-CCA5-01FB-C77B4BBFA08B +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +TOTAL_AMOUNT +walloar +2022-10-25 12:45:50 UTC +eRights +91A69686-CF49-F282-5125-CF3B8F913BC1 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +TOTAL_AMOUNT_CURRENCY +walloar +2022-10-25 12:45:50 UTC +eRights +FABC2317-A392-012F-92B9-BEEFCA9D2B07 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +CITY_FROM +walloar +2022-10-25 12:45:50 UTC +eRights +B853E28E-854A-2D93-04AB-9A5AB2A9D696 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +COUNTRY_FROM +walloar +2022-10-25 12:45:50 UTC +eRights +69EB0122-4CA0-28B1-5EF6-BEDA372B589F +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +IATA_CODE_FROM +walloar +2022-10-25 12:45:50 UTC +eRights +4E90BAA6-C79B-22A3-5591-646AF4F01C5A +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +CITY_TO +walloar +2022-10-25 12:45:50 UTC +eRights +74EC5935-A79F-0C5B-7C78-965C6347F08E +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +COUNTRY_TO +walloar +2022-10-25 12:45:50 UTC +eRights +EDCB860B-8BA7-628D-3102-F44BE50B9D75 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +IATA_CODE_TO +walloar +2022-10-25 12:45:50 UTC +eRights +C88BD17E-7BFC-DD4B-5590-7FAAFFCBB41D +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +REMARKS +walloar +2022-10-25 12:45:50 UTC +eRights +6662AA0E-1678-6155-09F6-8A517615DECC +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +CREATED_BY +walloar +2022-10-25 12:45:50 UTC +eRights +4DDF1FB9-F079-26A7-25F6-16875CFE3BAF +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +CREATED_AT +walloar +2022-10-25 12:45:50 UTC +eRights +46DE82C2-F7E8-397B-D6B8-0ACD9335AFA8 +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +UPDATED_BY +walloar +2022-10-25 12:45:50 UTC +eRights +1ED7F719-D098-60A8-AC56-3FFA0E332CA7 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +UPDATED_AT +walloar +2022-10-25 12:45:50 UTC +eRights +31EC432B-D44F-1009-8E22-B79A0CD993E2 +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +SURNAME +walloar +2022-11-11 07:44:41 UTC +eRights +943DF7FC-4747-DF1C-C11A-F7F4F05EFBDA +true +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +FIRST_NAME +walloar +2022-11-11 07:44:41 UTC +eRights +DF02645D-D762-8F95-FB30-E0D4C79538EB +true +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +WORK_IN_DELEGATION +walloar +2023-02-07 10:46:16 UTC +eRights +460CDC74-D0FA-8EBD-9913-DF838627F18D +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +WORK_IN_HQ +walloar +2023-02-07 10:46:16 UTC +eRights +C607DF7B-AE21-3988-E9C0-58EAF8F5AD1F +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +ORDER_TYPE_OF_PERSON +walloar +2023-02-07 10:46:16 UTC +eRights +91FDC344-B323-5707-4F24-3941845D2729 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_PERSONS +FIRST_NATIONALITY_COUNTRY +walloar +2023-06-15 12:36:23 UTC +eRights +3A720C97-F2D5-22D9-38DB-1697C0CB7F8A +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/C27D5F03-BA94-6E2D-6A10-9051D65D413A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/C27D5F03-BA94-6E2D-6A10-9051D65D413A.xml new file mode 100644 index 0000000..82dcd1e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/C27D5F03-BA94-6E2D-6A10-9051D65D413A.xml @@ -0,0 +1,251 @@ + + +ERIGHTS-TEST +ERIGHTS +BUDGET_LINES_SUBPOSTS_MAPPING +walloar +2022-03-18 10:16:53 UTC +eRights +A26CD79C-22B1-9238-AA2B-A52B7B5AB541 +false +true +true + + +ERIGHTS-TEST +BUDGET_LINES_SUBPOSTS_MAPPING +BUDGET_LINES_SUBPOSTS_MAPPING_ID +walloar +2022-03-18 10:16:53 UTC +eRights +88099343-35FF-E33F-6E13-58425425F62F +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +BUDGET_LINES_SUBPOSTS_MAPPING +BUDGET_LINES +walloar +2022-03-18 10:16:53 UTC +eRights +06202E34-C476-9A03-4E32-F3DA6DEC2796 +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +BUDGET_LINES_SUBPOSTS_MAPPING +BUDGET_POSITION_BUDGDEL +walloar +2022-03-18 10:16:53 UTC +eRights +37879984-8E40-E19B-4393-667398CF8E24 +true +false +1 +LOGDT024 +100 BYTE +100 BYTE,, +false + + +ERIGHTS-TEST +BUDGET_LINES_SUBPOSTS_MAPPING +BUDGET_POSITION_ERIGHTS +walloar +2022-03-18 10:16:53 UTC +eRights +87BF600B-E15E-C5AA-9F4E-EE736B2EC1D3 +true +false +1 +LOGDT024 +100 BYTE +100 BYTE,, +false + + +ERIGHTS-TEST +BUDGET_LINES_SUBPOSTS_MAPPING +FUND_SOURCE +walloar +2022-03-18 10:16:53 UTC +eRights +EC911F2A-5BD2-4263-0906-FBADC939B4C2 +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +BUDGET_LINES_SUBPOSTS_MAPPING +REQUEST_TYPE +walloar +2022-03-18 10:16:53 UTC +eRights +F93B61D4-0814-6B19-3BF5-9285CA4E9DFF +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +BUDGET_LINES_SUBPOSTS_MAPPING +STATUTORY_LINK +walloar +2022-03-18 10:16:53 UTC +eRights +2D6403C6-FF25-B225-BAC5-2582208F7439 +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +BUDGET_LINES_SUBPOSTS_MAPPING +SUBPOST_CODE +walloar +2022-03-18 10:16:53 UTC +eRights +59008071-9871-7DA5-4BC9-43BE95BE0BA1 +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +BUDGET_LINES_SUBPOSTS_MAPPING +SUBPOST_DESCRIPTION +walloar +2022-03-18 10:16:53 UTC +eRights +F9063505-44A3-FD62-CCED-332430718335 +true +false +1 +LOGDT024 +1000 BYTE +1000 BYTE,, +false + + +ERIGHTS-TEST +BUDGET_LINES_SUBPOSTS_MAPPING +PERSONNEL_TYPE_ID +walloar +2022-03-18 10:16:53 UTC +eRights +3732D6EE-A648-A6E5-118C-9DE2C5AA8272 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +BUDGET_LINES_SUBPOSTS_MAPPING +LST_CD +walloar +2022-03-18 10:16:53 UTC +eRights +C1C6E62D-DEE4-0DAB-35B7-0C66529847EA +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +BUDGET_LINES_SUBPOSTS_MAPPING +SUBPOST_TYPE +walloar +2022-03-18 10:16:53 UTC +eRights +37023E4A-62E7-AD6C-AD8D-79AA10F081BD +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +BUDGET_LINES_SUBPOSTS_MAPPING +MOVEMENT_CONTEXT +walloar +2022-10-07 11:48:49 UTC +eRights +32A4A560-550F-8D71-4268-FC34D0C9A40E +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +BUDGET_LINES_SUBPOSTS_MAPPING_PK +walloar +2022-03-18 10:16:53 UTC +eRights +B9D8A299-8282-BBA6-86AE-0C927DC3EC9C +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +BUDGET_LINES_SUBPOSTS_MAPPING_PK +walloar +2022-03-18 10:16:53 UTC +eRights +5D86F134-F8B4-CD00-7BC2-035F8D8DFA62 +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/C39E21B9-DBE7-89DE-7DCA-238436410710.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/C39E21B9-DBE7-89DE-7DCA-238436410710.xml new file mode 100644 index 0000000..5c65545 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/C39E21B9-DBE7-89DE-7DCA-238436410710.xml @@ -0,0 +1,333 @@ + + +ERIGHTS-TEST +ERIGHTS +AUD_POSTING_ALLOWANCE_DEFAULT +walloar +2023-06-15 12:36:23 UTC +eRights +4AFFA786-C1A7-4D1B-92C6-8A5F5F7A5B9B +false +true +true + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +REV +walloar +2023-06-15 12:36:23 UTC +eRights +06D959B8-036E-3E3E-9E69-455C2FA51CE2 +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +REVTYPE +walloar +2023-06-15 12:36:23 UTC +eRights +C7505B51-E7B9-9D9C-7694-4E5F48DFB811 +true +false +1 +LOGDT019 +3 +0 +,3,0 +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +POSTING_ALLOWANCE_DEFAULT_ID +walloar +2023-06-15 12:36:23 UTC +eRights +FE9674FE-FD5E-C87B-5938-4762C0A0C849 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +POSTING_ALLOWANCE_TYPE +walloar +2023-06-15 12:36:23 UTC +eRights +26638544-BB23-0A97-4A75-82DCB34FEFFA +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +POSTING_ALLOWANCE_REQ_TYPE +walloar +2023-06-15 12:36:23 UTC +eRights +272C41B6-164D-8AB8-5FA6-4057AB67B943 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +CITY_CODE_TO +walloar +2023-06-15 12:36:23 UTC +eRights +B693B375-E015-4D1B-C45B-B3CAA15BEEB8 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +CITY_CODE_FROM +walloar +2023-06-15 12:36:23 UTC +eRights +B9AA38DC-81EF-0888-C83A-3E657AA934D2 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +COUNTRY_CODE_TO +walloar +2023-06-15 12:36:23 UTC +eRights +63EC7E31-840A-22E9-4E73-90F89A1D0FB1 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +COUNTRY_CODE_FROM +walloar +2023-06-15 12:36:23 UTC +eRights +8765E8F9-CC6E-3303-B889-B48B18A55921 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +AMOUNT +walloar +2023-06-15 12:36:23 UTC +eRights +977A8022-5D29-493A-7F3F-35946526848C +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +CURRENCY +walloar +2023-06-15 12:36:23 UTC +eRights +6C2BD451-D4A5-D226-5E28-1178E0E17DCE +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +EXERCISE_YEAR +walloar +2023-06-15 12:36:23 UTC +eRights +F4A2F719-17A6-BC0D-F368-65A9ABEBB651 +true +false +1 +LOGDT019 +4 +0 +,4,0 +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +LATEST +walloar +2023-06-15 12:36:23 UTC +eRights +A3062265-15C7-42F4-E4B5-E8F982EC08F0 +true +false +1 +LOGDT025 +1 CHAR +1 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +SOURCE_DATA +walloar +2023-06-15 12:36:23 UTC +eRights +CDD50EB7-F6A8-704C-6582-B1F0DDEE7363 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +CREATED_AT +walloar +2023-06-15 12:36:23 UTC +eRights +001D9D80-4432-6E4A-EFAB-8FD93E28CB0B +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +CREATED_BY +walloar +2023-06-15 12:36:23 UTC +eRights +CE2560D8-079B-0B79-22AC-D3BB4B590AFE +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +UPDATED_BY +walloar +2023-06-15 12:36:23 UTC +eRights +CFAE2DA3-0431-1068-C1C5-873BB18B2A65 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +UPDATED_AT +walloar +2023-06-15 12:36:23 UTC +eRights +48D098AE-EE9E-4401-50F2-DD1AD5765531 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +IATA_CODE_FROM +walloar +2023-06-15 12:36:23 UTC +eRights +5C38A283-12C5-5790-3A6E-08C3A072C887 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_POSTING_ALLOWANCE_DEFAULT +IATA_CODE_TO +walloar +2023-06-15 12:36:23 UTC +eRights +128AED97-35ED-7C3B-F778-E88B9EF3616F +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/C56C4357-7399-B2C2-CB85-59F7B0CD0D52.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/C56C4357-7399-B2C2-CB85-59F7B0CD0D52.xml new file mode 100644 index 0000000..b4f5741 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/C56C4357-7399-B2C2-CB85-59F7B0CD0D52.xml @@ -0,0 +1,245 @@ + + +ERIGHTS-TEST +ERIGHTS +REQUEST_ABAC_ITEM +walloar +2022-03-18 10:16:53 UTC +eRights +742ECAE9-D965-E584-80AD-D8684443D185 +false +true +true + + +ERIGHTS-TEST +REQUEST_ABAC_ITEM +ID +walloar +2022-03-18 10:16:53 UTC +eRights +EF392431-ABC5-C25D-0264-1B1E9B45785F +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUEST_ABAC_ITEM +TYPE +walloar +2022-03-18 10:16:53 UTC +eRights +04FC656F-529A-DECC-5D9C-5B6BF0310EAC +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_ABAC_ITEM +ABAC_COMM_ID +walloar +2022-03-18 10:16:53 UTC +eRights +3D2FEB93-AE8A-B1BF-6350-49897F7B9A39 +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +REQUEST_ABAC_ITEM +STATE +walloar +2022-03-18 10:16:53 UTC +eRights +A75111C9-6FDA-47D2-DD0B-B24B232428C1 +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_ABAC_ITEM +REQUEST_ID +walloar +2022-03-18 10:16:53 UTC +eRights +93D28015-73F5-A162-D767-19F6000A27BF +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +REQUEST_ABAC_ITEM +MESSAGES +walloar +2022-03-18 10:16:53 UTC +eRights +D7504EFE-A4B6-6810-A318-0658A77AA4AB +true +false +1 +LOGDT024 +3000 BYTE +3000 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_ABAC_ITEM +ABAC_ID +walloar +2022-03-18 10:16:53 UTC +eRights +02809720-544C-8358-8CD7-EABA73B95941 +true +false +1 +LOGDT024 +50 BYTE +50 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_ABAC_ITEM +CREATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +4533F019-93B9-9AFD-98A9-B9D9545C7113 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUEST_ABAC_ITEM +CREATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +0AE9F285-8BC1-9A90-BFC2-1E1DC23C01AD +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +REQUEST_ABAC_ITEM +UPDATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +3777CE9C-7408-B576-9507-1AFCD85B0C28 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUEST_ABAC_ITEM +UPDATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +F018EA24-B2CF-CF44-076D-43117BBEE023 +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +REQUEST_ABAC_ITEM +REQUEST_PAYMENT_ABAC_INFO_ID +walloar +2022-03-18 10:16:53 UTC +eRights +E0226F9A-D597-52A9-E07C-38DD3B19E5CD +true +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +REQUEST_ABAC_ITEM +walloar +2022-03-18 10:16:53 UTC +eRights +6218277C-3F88-AF6B-9A4E-E1A2D0BA7DF9 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +REQUEST_ABAC_ITEM +walloar +2022-03-18 10:16:53 UTC +eRights +FAC6B2FD-5ED1-2626-3ED0-332DA1DF6E62 +Unique Plain Index +false + + + + + +walloar +2022-03-21 10:52:45 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml new file mode 100644 index 0000000..9012327 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/D43A6B01-A010-2E62-F805-42BD75AE0D0F.xml @@ -0,0 +1,458 @@ + + +ERIGHTS-TEST +ERIGHTS +QRTZ_TRIGGERS +walloar +2021-03-02 08:04:46 UTC +eRights +false +true +true + + +ERIGHTS-TEST +QRTZ_TRIGGERS +SCHED_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_TRIGGERS +TRIGGER_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +TRIGGER_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +JOB_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_TRIGGERS +JOB_GROUP +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + + + + +ERIGHTS-TEST +QRTZ_TRIGGERS +DESCRIPTION +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +NEXT_FIRE_TIME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +PREV_FIRE_TIME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +PRIORITY +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +TRIGGER_STATE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +16 BYTE +16 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +TRIGGER_TYPE +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT024 +8 BYTE +8 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +START_TIME +walloar +2021-03-02 08:04:47 UTC +eRights +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +END_TIME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +13 +0 +,13,0 +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +CALENDAR_NAME +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT024 +200 BYTE +200 BYTE,, +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +MISFIRE_INSTR +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT019 +2 +0 +,2,0 +false + + +ERIGHTS-TEST +QRTZ_TRIGGERS +JOB_DATA +walloar +2021-03-02 08:04:47 UTC +eRights +true +false +1 +LOGDT029 +4000 +4000,, +false + + + + +ERIGHTS-TEST +ERIGHTS +QRTZ_TRIGGERS_PK +walloar +2021-03-02 08:04:56 UTC +eRights +true +Primary Constraint +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_C +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_G +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_J +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_JG +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_NEXT_FIRE_TIME +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_NFT_MISFIRE +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_NFT_ST +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_NFT_ST_MISFIRE +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_NFT_ST_MISFIRE_GRP +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_N_G_STATE +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_N_STATE +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_QRTZ_T_STATE +walloar +2021-03-02 08:04:53 UTC +eRights +false + + + + + + +walloar +2021-03-02 08:04:59 UTC +eRights +Foreign Key +false + + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/D70D0F65-8940-FBF1-109C-6BD24A00F1D6.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/D70D0F65-8940-FBF1-109C-6BD24A00F1D6.xml new file mode 100644 index 0000000..8df1bde --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/D70D0F65-8940-FBF1-109C-6BD24A00F1D6.xml @@ -0,0 +1,578 @@ + + +ERIGHTS-TEST +ERIGHTS +RATES_TUD +walloar +2022-07-19 13:44:13 UTC +eRights +F235F613-6B57-509C-E3BB-5515A96FA9F9 +false +true +true + + +ERIGHTS-TEST +RATES_TUD +RATES_TUD_ID +walloar +2022-07-19 13:44:13 UTC +eRights +DEF5C148-FFCD-FBEE-BC09-77D0B458CA96 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +RATES_TUD +COUNTRY +walloar +2022-07-19 13:44:13 UTC +eRights +C4131B75-003F-6F69-6051-6F4A9FD0DE55 +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +RATES_TUD +CURRENCY +walloar +2022-07-19 13:44:13 UTC +eRights +439F63BE-2910-7FE2-880A-9D8A85922B31 +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +RATES_TUD +LOCALE +walloar +2022-07-19 13:44:13 UTC +eRights +FB406CB8-D0AA-BA7A-2D78-FA9576609209 +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +RATES_TUD +LOCATION_SCHEMA +walloar +2022-07-19 13:44:13 UTC +eRights +805A6C48-BEB5-B99F-8093-FA76CB0D0E40 +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +RATES_TUD +ORIGIN_PLACE +walloar +2022-07-19 13:44:13 UTC +eRights +E98E5108-444D-3B7D-F5FE-3756E70DB642 +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +RATES_TUD +DESTINATION_PLACE +walloar +2022-07-19 13:44:13 UTC +eRights +145AB8CF-A899-43C9-B40A-D0E85C4E890A +true +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +RATES_TUD +CITY_CODE_FROM +walloar +2022-07-19 13:44:13 UTC +eRights +C457D5F7-9B56-E233-7E24-E55AF2222D0C +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +RATES_TUD +CITY_CODE_TO +walloar +2022-07-19 13:44:13 UTC +eRights +FA520516-4FF1-F2E4-9C4A-8F83D5667B38 +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +RATES_TUD +TUD_REQUEST_ID +walloar +2022-07-19 13:44:13 UTC +eRights +7F15E92F-311B-C4AA-6589-A932F0C65045 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +RATES_TUD +ENTITLMNT_SPECIFIC +walloar +2022-07-19 13:44:13 UTC +eRights +B74463E2-8D2A-3188-D2D6-DB9EAEEC36D1 +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +RATES_TUD +ENTITLMNT_MAXS_ID +walloar +2022-07-19 13:44:13 UTC +eRights +95447F66-7812-4A34-F230-C6412347DD57 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +RATES_TUD +ADULTS +walloar +2022-07-19 13:44:13 UTC +eRights +CE3ED980-3666-D90C-EC71-4CD00970821B +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +RATES_TUD +CHILDREN +walloar +2022-07-19 13:44:13 UTC +eRights +5EA15FFC-0A32-6782-A7BD-DD1495723846 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +RATES_TUD +INFANTS +walloar +2022-07-19 13:44:13 UTC +eRights +CFFA0454-67D9-348B-A4C7-4EFABA1EEC1C +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +RATES_TUD +REQ_OUTBOUND_DATE +walloar +2022-07-19 13:44:13 UTC +eRights +FCFC2C69-1111-54CE-2403-118DEA8446DD +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +RATES_TUD +USED_OUTBOUND_DATE +walloar +2022-07-19 13:44:13 UTC +eRights +A92C1DAB-C57B-1C54-C732-D179C30F87F8 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +RATES_TUD +RESPONSE_PR_ECONOMY +walloar +2022-07-19 13:44:13 UTC +eRights +AB073AA7-30AC-485D-1D71-EC7E2426DCA2 +true +false +1 +LOGDT028 +4000 +4000,, +false + + +ERIGHTS-TEST +RATES_TUD +RESPONSE_BUSINESS +walloar +2022-07-19 13:44:13 UTC +eRights +79BC3E22-B3DE-E608-56B2-B0CA40C033B2 +true +false +1 +LOGDT028 +4000 +4000,, +false + + +ERIGHTS-TEST +RATES_TUD +RESULT_URL_PR_ECONOMY +walloar +2022-07-19 13:44:13 UTC +eRights +15BDF968-46DA-2BC7-8820-D6A0E579D699 +true +false +1 +LOGDT024 +500 CHAR +500 CHAR,, +false + + +ERIGHTS-TEST +RATES_TUD +RESULT_URL_BUSINESS +walloar +2022-07-19 13:44:13 UTC +eRights +109D90EC-3739-4824-9CE2-35F554A809D5 +true +false +1 +LOGDT024 +500 CHAR +500 CHAR,, +false + + +ERIGHTS-TEST +RATES_TUD +INFO_COMPLETE +walloar +2022-07-19 13:44:13 UTC +eRights +917428DE-945A-68E2-E4C8-8C99F0ABF95A +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +RATES_TUD +RETRIEVED_AT +walloar +2022-07-19 13:44:13 UTC +eRights +0ABD6FA1-8ACA-886D-9585-238CDE7B54C9 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +RATES_TUD +SEARCH_CEASED +walloar +2022-07-19 13:44:13 UTC +eRights +E9904605-46DE-2BF4-9EEE-DBD37829D83E +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +RATES_TUD +SEL_ITINERARY_ID +walloar +2022-07-19 13:44:13 UTC +eRights +CA332DDD-881A-758F-6A4B-92755481EB00 +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +RATES_TUD +SEL_ITINERARY_PRICE +walloar +2022-07-19 13:44:13 UTC +eRights +7BFD4EF6-C8A4-AB32-4A9C-89A3A582FEBC +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +RATES_TUD +DELETED +walloar +2022-07-19 13:44:13 UTC +eRights +9167D875-CFFA-48DF-7E1F-6E85717B8095 +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +RATES_TUD +WEBSERVICE_NAME +walloar +2022-07-19 13:44:13 UTC +eRights +222B1D4B-48D1-EA5A-D4B6-C96232BA78B6 +false +1 +LOGDT024 +50 CHAR +50 CHAR,, +false + + +ERIGHTS-TEST +RATES_TUD +CREATED_AT +walloar +2022-07-19 13:44:13 UTC +eRights +531B88D7-966F-5235-887C-D6916592BF25 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +RATES_TUD +UPDATED_AT +walloar +2022-07-19 13:44:13 UTC +eRights +857E4319-E8D7-744F-22D2-6CD416C26179 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +RATES_TUD +CREATED_BY +walloar +2022-07-19 13:44:13 UTC +eRights +1913A465-EEC2-5C26-CF8F-F6BB45AB9296 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +RATES_TUD +UPDATED_BY +walloar +2022-07-19 13:44:13 UTC +eRights +57666A8D-3795-A3E0-98E6-0A8ACF12E1E4 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +RATES_TUD +ENTITLMNT_MAXS_CAT_CODE +walloar +2022-07-19 13:44:13 UTC +eRights +08B9F206-56CA-2FDD-3C0B-FD373E7B2093 +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +RATES_TUD +MOVEMENT_FILE_ID +walloar +2022-07-19 13:44:13 UTC +eRights +2F11C252-F045-7F39-8997-DEB3466A0278 +true +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +RATES_TUD_PK +walloar +2022-07-19 13:44:13 UTC +eRights +B2D34646-15A9-890B-8008-564151EB43C4 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +RATES_TUD_PK +walloar +2022-07-19 13:44:13 UTC +eRights +CA60EDE9-9754-B854-490C-9B94A6C4F268 +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/DAE0958C-8972-F2B2-33E3-0E9A4C5A433D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/DAE0958C-8972-F2B2-33E3-0E9A4C5A433D.xml new file mode 100644 index 0000000..e9dd025 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/DAE0958C-8972-F2B2-33E3-0E9A4C5A433D.xml @@ -0,0 +1,347 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_BUDGET_LINE_DATA +walloar +2022-03-18 10:16:52 UTC +eRights +FFDE4A9C-C1C2-95C6-8413-556F2B7E936B +4 +false +true +true + 2020]]> + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +ID +walloar +2022-03-18 10:16:53 UTC +eRights +81440439-FF2D-AEF9-C4F4-852C6C40A2F7 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +BUDGET_LINE_DATA_ID +walloar +2022-03-18 10:16:53 UTC +eRights +4F04475C-8712-B4C2-EAE3-2500A93E5691 +true +false +1 +LOGDT024 +140 BYTE +140 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +PARENT_LOCAL_KEY +walloar +2022-03-18 10:16:53 UTC +eRights +8627AE17-5898-FAA0-C6D6-4C2125E92F59 +true +false +1 +LOGDT024 +160 BYTE +160 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +BUDGET_LINE +walloar +2022-03-18 10:16:53 UTC +eRights +A5FF9DF9-5D68-2F13-271A-3B4DB2D47E9E +true +false +1 +LOGDT024 +176 BYTE +176 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +MAIN_ACCOUNT +walloar +2022-03-18 10:16:53 UTC +eRights +6275E4DD-C4B2-B3D6-25F0-DE16CA4F7727 +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +BUDGET_POSITION +walloar +2022-03-18 10:16:53 UTC +eRights +49A64CCA-83B0-4928-ACC2-38BC93495CD5 +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +FUND_SOURCE +walloar +2022-03-18 10:16:53 UTC +eRights +C499360A-F913-273C-859D-68F4931686FE +true +false +1 +LOGDT024 +100 BYTE +100 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +DELEGATION +walloar +2022-03-18 10:16:53 UTC +eRights +895EF7D4-E4FD-1DC9-B2AA-DE3EE51DE528 +true +false +1 +LOGDT024 +15 BYTE +15 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +LVL_CODE +walloar +2022-03-18 10:16:53 UTC +eRights +F63B69E2-BAA9-78CF-16AC-4B2B874F0A4F +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +LVL_NAME +walloar +2022-03-18 10:16:53 UTC +eRights +66605FA3-4601-5834-8509-C18AD0758783 +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +COMMITMENT_ID +walloar +2022-03-18 10:16:53 UTC +eRights +18A77DF2-914C-041A-A0E5-B19BDA7496A5 +true +false +1 +LOGDT024 +100 BYTE +100 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +COMMITMENT_HEADER_ID +walloar +2022-03-18 10:16:53 UTC +eRights +291BDF4D-0BFC-8E94-9643-55727E36DD79 +true +false +1 +LOGDT024 +100 BYTE +100 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +EXERCISE_ID +walloar +2022-03-18 10:16:53 UTC +eRights +BAB2D5B5-10FA-A2E1-063B-2592619115AD +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +FUND_SOURCE_GROUP +walloar +2022-03-18 10:16:53 UTC +eRights +7788E6BC-21BC-B323-83D1-F6D84CE5E22B +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +PAYMENT_CREDITS_AVAILABLE_EUR +walloar +2022-03-18 10:16:53 UTC +eRights +48CD7747-D68E-CFAD-C195-600F8087B169 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +RAL +walloar +2022-03-18 10:16:53 UTC +eRights +B91A19C2-A204-7D32-9B1D-84052F6AD8C4 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +TOTAL_COMMITMENTS_EUR +walloar +2022-03-18 10:16:53 UTC +eRights +B2CC28B5-1BA2-CB25-348F-9C7C203B7621 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_BUDGET_LINE_DATA +SYNC_COMMITMENTS_DATE +walloar +2022-03-18 10:16:53 UTC +eRights +F482E061-B85B-6241-09A6-50090C7D2478 +true +false +1 +LOGDT015 +6 +,6, +false + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/DF3662EB-AFE0-2FE2-A5BC-2FB6362E7473.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/DF3662EB-AFE0-2FE2-A5BC-2FB6362E7473.xml new file mode 100644 index 0000000..8ff664a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/DF3662EB-AFE0-2FE2-A5BC-2FB6362E7473.xml @@ -0,0 +1,656 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_PERSON_ADDRESS_LAST +walloar +2023-06-15 12:36:23 UTC +eRights +FEE35BBC-DEAD-B7DE-675C-028D6535D612 +4 +false +true +true + + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +PER_ID +walloar +2023-06-15 12:36:23 UTC +eRights +22B6470A-24C3-B293-11A1-52E494E1536D +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +START_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +B58B975C-476F-44FE-0350-3D925465C82B +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +END_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +DD2F0281-FAB2-A437-5E3C-0169C9C825A2 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +EFFECTIVE_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +006760B6-623A-DB46-D717-FF8E35DADEFD +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +DECL_CHG_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +88FA5B78-DFA3-656B-73D2-16AAC2E024FF +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +TADR_CD +walloar +2023-06-15 12:36:23 UTC +eRights +B8A5D3AB-FE52-D215-1602-135EFBAA7482 +true +false +1 +LOGDT019 +3 +0 +,3,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +ADDRESS_TYPE_CODE +walloar +2023-06-15 12:36:23 UTC +eRights +C9E4E940-D219-C1A8-6990-EDD32A757294 +true +false +1 +LOGDT024 +100 CHAR +100 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +COUNTRY_CODE +walloar +2023-06-15 12:36:23 UTC +eRights +DCEBFC2E-0D34-B32D-C772-FDAD96F1D779 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +CITY_NAME +walloar +2023-06-15 12:36:23 UTC +eRights +27AE4599-5DA6-1EAF-9957-910DE9D2CA11 +true +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +POSTAL_CODE +walloar +2023-06-15 12:36:23 UTC +eRights +6DCA3218-F5A7-9B66-2C88-F4C56EE1A3A0 +true +false +1 +LOGDT024 +30 CHAR +30 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +STREET_NAME +walloar +2023-06-15 12:36:23 UTC +eRights +4DF8E3A9-44A7-69FA-4063-EF73C1D26A98 +true +false +1 +LOGDT024 +250 CHAR +250 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +STREET_NAME1 +walloar +2023-06-15 12:36:23 UTC +eRights +534EAAFF-D40C-0FA3-E399-CDBCC2EDEE32 +true +false +1 +LOGDT024 +250 CHAR +250 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +STREET_NAME2 +walloar +2023-06-15 12:36:23 UTC +eRights +A4248A63-3C4B-07CF-D50E-2B84CCCF4517 +true +false +1 +LOGDT024 +250 CHAR +250 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +STREET_NUMBER +walloar +2023-06-15 12:36:23 UTC +eRights +75D0762B-F1AB-B99B-ECF8-33958705D226 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +POSTAL_BOX +walloar +2023-06-15 12:36:23 UTC +eRights +647542C3-0320-FC94-06CE-EC14C2FC10F4 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +COMMENTS +walloar +2023-06-15 12:36:23 UTC +eRights +D5BD83B6-9089-492B-1DB0-1180F4BFFDA5 +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +ADDITIONAL_ADDRESS +walloar +2023-06-15 12:36:23 UTC +eRights +FC384ED6-6717-D280-DEBF-A659E984A1E7 +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +ADDITIONAL_ADDRESS2 +walloar +2023-06-15 12:36:23 UTC +eRights +D1E303EB-D704-71A1-F7A7-31CEEA2DDC9D +true +false +1 +LOGDT024 +400 CHAR +400 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +OREDER_ADDRESS +walloar +2023-06-15 12:36:23 UTC +eRights +596095B6-1EC7-2800-EECF-F38EEBF12077 +true +false +1 +LOGDT019 +2 +0 +,2,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +LANGUAGE_CODE +walloar +2023-06-15 12:36:23 UTC +eRights +F2253D9C-2DE0-B472-6A78-366A186A2404 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +PER_ID_REL_PERS +walloar +2023-06-15 12:36:23 UTC +eRights +6E47515B-7657-6A3F-C472-0F4D7DA4FD0A +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +SURNAME +walloar +2023-06-15 12:36:23 UTC +eRights +9C6FB3D0-829D-057B-0EC5-68995191C19D +true +false +1 +LOGDT024 +80 CHAR +80 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +FIRST_NAME +walloar +2023-06-15 12:36:23 UTC +eRights +8951958A-54EC-6CCC-D012-29BE16614378 +true +false +1 +LOGDT024 +80 CHAR +80 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +DATE_OF_BIRTH +walloar +2023-06-15 12:36:23 UTC +eRights +85AA7929-B06B-A215-BE2F-6F8A14EB1DC7 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +TITLE +walloar +2023-06-15 12:36:23 UTC +eRights +1F93E32C-0885-4CC3-34E0-30A342BF04EC +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +LINK_ADR_TEL +walloar +2023-06-15 12:36:23 UTC +eRights +26F538F3-B0BA-8EDF-4141-4B65C4608666 +true +false +1 +LOGDT024 +20 CHAR +20 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +SP2_ADDRESS_ID +walloar +2023-06-15 12:36:23 UTC +eRights +C8721C60-2FEF-211D-6966-80A8D7D6E02B +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +IRIS_ADDRESS_ID +walloar +2023-06-15 12:36:23 UTC +eRights +924CDBF4-2697-6545-016A-04EBB5C2E176 +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +SRC_ID +walloar +2023-06-15 12:36:23 UTC +eRights +98759761-2F38-D27E-BF9C-412D93263857 +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +INS_CD +walloar +2023-06-15 12:36:23 UTC +eRights +A6D4A7B6-C0C3-EC35-ED5D-05521EF3E7ED +true +false +1 +LOGDT024 +10 CHAR +10 CHAR,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +UNIQ_ID +walloar +2023-06-15 12:36:23 UTC +eRights +1390D0A4-5F85-ECA7-1E35-5BA55E9673A7 +true +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +CREATED_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +96364ECD-6EE0-A6F4-0274-230DCCC6CF00 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_PERSON_ADDRESS_LAST +UPDATED_DATE +walloar +2023-06-15 12:36:23 UTC +eRights +012D47FF-7A8A-B813-6FA6-26B2F53F047A +true +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IX_MV_PERSON_ADDRESS_LAST_PER_ID_TADR_CD +walloar +2023-06-15 12:36:23 UTC +eRights +99F43C5B-6745-D072-0125-4C1CB9BEF901 +false + + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/E3EA6112-D9BF-D73D-9CF3-524E82810B2D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/E3EA6112-D9BF-D73D-9CF3-524E82810B2D.xml new file mode 100644 index 0000000..e790df4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/E3EA6112-D9BF-D73D-9CF3-524E82810B2D.xml @@ -0,0 +1,498 @@ + + +ERIGHTS-TEST +ERIGHTS +REQUEST_PAYMENT_ABAC_INFO +walloar +2022-03-18 10:16:53 UTC +eRights +2A984FC4-4A4D-7241-0BDD-10D3271E95EB +false +true +true + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +REQUEST_PAYMENT_ABAC_INFO_ID +walloar +2022-03-18 10:16:53 UTC +eRights +C5D42ACB-4091-6CAE-D4E7-D4AFFBCB6F4B +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +REQUEST_ID +walloar +2022-03-18 10:16:53 UTC +eRights +6756FA20-46A6-BDAE-BB85-6D736472DFE8 +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +ANALYTICAL_CODE +walloar +2022-03-18 10:16:53 UTC +eRights +906A9630-A14D-3577-64AC-133C92163013 +true +false +1 +LOGDT024 +160 BYTE +160 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +PARENT_LOCAL_KEY +walloar +2022-03-18 10:16:53 UTC +eRights +4BF6E8A5-B50A-6435-1A9B-F53E5936D369 +true +false +1 +LOGDT024 +160 BYTE +160 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +BUDGET_LINE +walloar +2022-03-18 10:16:53 UTC +eRights +EB5CEF23-0C92-BF02-B1BF-C1AF2F62B396 +true +false +1 +LOGDT024 +176 BYTE +176 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +MAIN_ACCOUNT +walloar +2022-03-18 10:16:53 UTC +eRights +303F31EA-DC10-7D34-70B7-18A958766FE5 +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +BUDGET_POSITION +walloar +2022-03-18 10:16:53 UTC +eRights +123C1D51-ED22-2325-8517-F9135B535E06 +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +FUND_SOURCE +walloar +2022-03-18 10:16:53 UTC +eRights +58172831-1AB8-3902-B034-EB074423D32C +true +false +1 +LOGDT024 +100 BYTE +100 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +DELEGATION +walloar +2022-03-18 10:16:53 UTC +eRights +4F8677DB-5EFB-ADA8-439C-DF6F72EF9EB6 +true +false +1 +LOGDT024 +15 BYTE +15 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +LVL_CODE +walloar +2022-03-18 10:16:53 UTC +eRights +724A6CE6-757D-8694-09C4-91946854BA24 +true +false +1 +LOGDT024 +128 BYTE +128 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +LVL_NAME +walloar +2022-03-18 10:16:53 UTC +eRights +D888606A-CD3D-1889-A892-174EDDCEDA52 +true +false +1 +LOGDT024 +512 BYTE +512 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +COMMITMENT_ID +walloar +2022-03-18 10:16:53 UTC +eRights +13C27049-4104-08E0-31A3-02EBC552303F +true +false +1 +LOGDT024 +100 BYTE +100 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +EXERCISE_ID +walloar +2022-03-18 10:16:53 UTC +eRights +33876904-9B11-AC4F-7A15-913E43ACB6BC +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +FUND_SOURCE_GROUP +walloar +2022-03-18 10:16:53 UTC +eRights +89B6D45A-90E7-B94C-C626-C84AC745B39F +true +false +1 +LOGDT024 +10 BYTE +10 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +PAYMENT_CREDITS_AVAILABLE_EUR +walloar +2022-03-18 10:16:53 UTC +eRights +86E50480-BF49-EC2D-D859-4911C95660F4 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +RAL +walloar +2022-03-18 10:16:53 UTC +eRights +66B4772A-7BC9-B9FC-A5F3-63C908ABA085 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +TOTAL_COMMITMENTS_EUR +walloar +2022-03-18 10:16:53 UTC +eRights +6DA1D481-F425-0173-3A65-F41BB958C1EF +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +WORKFLOW +walloar +2022-03-18 10:16:53 UTC +eRights +491A00C7-FAD4-AE53-BA39-6F1AFF12AF50 +true +false +1 +LOGDT024 +100 BYTE +100 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +LOCAL_DELEGATION_CODE +walloar +2022-03-18 10:16:53 UTC +eRights +CD0D476D-9BFE-069B-940D-05DBFC610CB9 +true +false +1 +LOGDT024 +100 BYTE +100 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +CREATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +023DC6BB-FAB0-23A3-0103-59184B226C6C +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +CREATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +0C49862D-3681-ABBE-10CF-50B260DF8C4A +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +UPDATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +DE4BA47E-E2F6-EFFC-ADDF-BA99D55DB086 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +UPDATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +469BDFA9-185C-622F-62C4-04BB33FC2A53 +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +ABAC_COMM_ID +walloar +2022-03-18 10:16:53 UTC +eRights +FF49DC3B-8742-7F26-33CB-91437DAB189D +true +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +AGENT_NAME +walloar +2022-03-18 10:16:53 UTC +eRights +482DB269-C98F-3FAC-63D9-129A3BD14010 +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +COMMITMENT_HEADER_ID +walloar +2022-03-18 10:16:53 UTC +eRights +35161554-DA54-6021-F968-451E6D8925DF +true +false +1 +LOGDT024 +120 BYTE +120 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +RESPONSIBLE_ORGANIZATION +walloar +2022-03-18 10:16:53 UTC +eRights +0460344B-729F-4F00-B42F-12FEE68668F6 +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, +false + + +ERIGHTS-TEST +REQUEST_PAYMENT_ABAC_INFO +RESPONSIBLE_ORGANIZATION_TYPE +walloar +2022-03-18 10:16:53 UTC +eRights +84E95D77-61F8-4139-F146-D8F3DD964EF8 +true +false +1 +LOGDT024 +30 BYTE +30 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_REQUEST_PAYMENT_ABAC_INFO +walloar +2022-03-21 11:19:55 UTC +eRights +E597096E-9F97-0EFD-7F79-1F3D7A07ABC6 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_REQUEST_PAYMENT_ABAC_INFO +walloar +2022-03-21 11:19:55 UTC +eRights +80820AD6-E3BE-99CE-7142-87715169CED7 +Unique Plain Index +false + + + + + +walloar +2022-03-21 10:52:45 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/E5858C90-56D5-FBA1-B0DE-9A80F3AFBC32.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/E5858C90-56D5-FBA1-B0DE-9A80F3AFBC32.xml new file mode 100644 index 0000000..bc429da --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/E5858C90-56D5-FBA1-B0DE-9A80F3AFBC32.xml @@ -0,0 +1,150 @@ + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_DOCS_ATTACHMENTS +walloar +2021-04-20 13:59:18 UTC + +eRights +table_81 +false +true +true + + +walloar +2021-04-20 14:02:38 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:02:38 UTC +eRights +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +walloar +2021-04-20 14:02:38 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +walloar +2021-04-20 14:02:38 UTC +eRights +false +1 +LOGDT024 +200 CHAR +200 CHAR,, +false + + +walloar +2021-04-20 14:02:38 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:02:38 UTC +eRights +false +1 +LOGDT007 +,, +false + + +walloar +2021-04-20 14:03:31 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:03:31 UTC +eRights +false +1 +LOGDT007 +,, +false + + + + +walloar +2021-04-20 14:02:38 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_DOCS_ATTACHMENTS_PK +walloar +2021-04-26 13:29:43 UTC +eRights +08C9AD8B-63A8-5710-C00C-602D21EEE7C2 +Unique Plain Index +false + + + + + +walloar +2021-04-20 14:17:11 UTC +eRights +Foreign Key +false + + + + + + + +walloar +2021-04-20 14:03:54 UTC +eRights +39D4B69D-9295-9864-4329-53EECAAC262A +BC72B0EE-1464-3878-1EA4-4B45D4EB9AD6 +23C54777-2E4F-A994-44B7-49E89BEED5D9 +ERIGHTS.ANANKE_FILES +ID + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/EACBF810-0296-003A-41DE-CDC423F08CD5.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/EACBF810-0296-003A-41DE-CDC423F08CD5.xml new file mode 100644 index 0000000..749bc46 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/EACBF810-0296-003A-41DE-CDC423F08CD5.xml @@ -0,0 +1,454 @@ + + +ERIGHTS-TEST +ERIGHTS +AUD_REQUEST_DETAILS +walloar +2022-03-18 10:16:53 UTC +eRights +BEE1254D-A8A1-6396-9D12-390F11D8D045 +false +true +true + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +REV +walloar +2022-03-18 10:16:53 UTC +eRights +0FCFAE53-C221-09B9-0598-1566B897BBA6 +false +1 +LOGDT019 +10 +0 +,10,0 +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +REVTYPE +walloar +2022-03-18 10:16:53 UTC +eRights +5FCB404F-CC2D-6B1C-89D0-5F4D7E43CF97 +true +false +1 +LOGDT019 +3 +0 +,3,0 +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +REQUEST_DETAIL_ID +walloar +2022-03-18 10:16:53 UTC +eRights +17ADAFBE-BA53-B9DA-A8FD-60023BE4263F +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +REQUEST_ID +walloar +2022-03-18 10:16:53 UTC +eRights +B335CEBE-F2D6-4EE3-1E3A-DA9A9E84BC45 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +ENTITLMNT_MAX_CAT_ID +walloar +2022-03-18 10:16:53 UTC +eRights +36B5EE5B-B567-D362-0D5E-B4C897D29BC1 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +REQUEST_DETAIL_TYPE +walloar +2022-03-18 10:16:53 UTC +eRights +10BB7273-7650-331A-EF44-079D50E4BE55 +true +false +1 +LOGDT024 +25 CHAR +25 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +VOLUMEN +walloar +2022-03-18 10:16:53 UTC +eRights +D254E334-0435-6E47-38C0-400F93012C39 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +WEIGHT +walloar +2022-03-18 10:16:53 UTC +eRights +CC4EAEC6-9207-4572-8451-18D248A84FDE +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +INSURANCE_RATE +walloar +2022-03-18 10:16:53 UTC +eRights +12ABB68C-2D43-659C-E8A2-BF90183D8883 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +VALUE_GOODS +walloar +2022-03-18 10:16:53 UTC +eRights +CC8FEC4B-C8E2-2AA1-7C02-6F551E202419 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +VALUE_GOODS_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +DC8B305C-EF4E-A393-CA5F-D0E2CBFF7616 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +PROFORMA +walloar +2022-03-18 10:16:53 UTC +eRights +8A62B770-E60F-4D51-DA08-BC2151CD1FF7 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +PROFORMA_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +0E1EC6CF-24CE-C0E4-F334-90D9EA90BAB8 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +INVOICE +walloar +2022-03-18 10:16:53 UTC +eRights +05FC5402-02B5-A6E2-2349-298C4B2F3B7D +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +INVOICE_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +18332638-7200-59AC-6BE3-60F717FBEC39 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +AMOUNT +walloar +2022-03-18 10:16:53 UTC +eRights +AF24B987-D9DC-36F5-2F3D-A84BD6F4F09A +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +AMOUNT_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +C1CD721D-E99D-8936-6A40-29D6E227F067 +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +CREATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +86CD4D5A-F9D8-45F0-34AC-072630F6D3CC +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +CREATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +5E7080CC-26F9-EFC6-B92E-1F0DA239DE36 +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +UPDATED_BY +walloar +2022-03-18 10:16:53 UTC +eRights +9B4D8904-FF1A-7CC8-7FBE-7DD6F81DCC5C +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +UPDATED_AT +walloar +2022-03-18 10:16:53 UTC +eRights +F9C9405B-3727-7422-D1E0-87DFED6B5E67 +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +EXCHANGE_RATE +walloar +2022-03-18 10:16:53 UTC +eRights +FEFC9A1B-5E0F-337F-2B2D-0BD46FA7C3C7 +true +false +1 +LOGDT019 +1 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +EXCHANGE_START_DATE +walloar +2022-03-18 10:16:53 UTC +eRights +BF9BD439-BE56-57FB-067E-8DC0F59C3F91 +true +false +1 +LOGDT007 +7 +sysdate +7,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +EXCHANE_CURRENCY +walloar +2022-03-18 10:16:53 UTC +eRights +9BC11602-211C-FBCA-5307-740A723895B2 +true +false +1 +LOGDT024 +3 BYTE +'EUR' +3 BYTE,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +REQUEST_DETAIL_TYPE_ORDER +walloar +2022-03-18 10:16:53 UTC +eRights +58E7AB18-ADD2-A16A-053D-E629EF6C7CFF +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +EXTRA_REQUEST_DETAIL +walloar +2022-03-18 10:16:53 UTC +eRights +6D032F7C-22E8-8D89-923D-F0B8C706F6EA +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +JUSTIFICATION +walloar +2022-03-18 10:16:53 UTC +eRights +7DA07331-8E04-F918-E967-F7C3FFEC716B +true +false +1 +LOGDT024 +3000 BYTE +3000 BYTE,, +false + + +ERIGHTS-TEST +AUD_REQUEST_DETAILS +EXCHANGE_PAY_MONTH +walloar +2022-03-18 10:16:53 UTC +eRights +F2E462B2-9D93-BDCB-F41B-7473F87D42AA +true +false +1 +LOGDT024 +20 BYTE +20 BYTE,, +false + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/EB3AF18B-7D5F-9652-FD62-94B24BB93E8D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/EB3AF18B-7D5F-9652-FD62-94B24BB93E8D.xml new file mode 100644 index 0000000..281797b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/EB3AF18B-7D5F-9652-FD62-94B24BB93E8D.xml @@ -0,0 +1,207 @@ + + +ERIGHTS-TEST +ERIGHTS +AIRPORTS +walloar +2022-07-19 13:44:12 UTC +eRights +3A936DC7-0553-FD55-5A42-074D3D1E33F4 +false +true +true + + +ERIGHTS-TEST +AIRPORTS +IATA_CODE +walloar +2022-07-19 13:44:13 UTC +eRights +04B39604-1EAC-739B-9286-A3B609970543 +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AIRPORTS +AIRPORT_NAME +walloar +2022-07-19 13:44:13 UTC +eRights +9B0F45EE-C023-5595-B4F4-96DF42517256 +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + +ERIGHTS-TEST +AIRPORTS +LOCATION_NAME +walloar +2022-07-19 13:44:13 UTC +eRights +2791B40E-7FEF-9D42-5C80-22A43FBEE0EE +false +1 +LOGDT024 +250 BYTE +250 BYTE,, +false + + +ERIGHTS-TEST +AIRPORTS +EASREFN +walloar +2022-07-19 13:44:13 UTC +eRights +135F6A03-9ECB-E518-9643-91CFE8AA247A +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AIRPORTS +ACTIVE +walloar +2022-07-19 13:44:13 UTC +eRights +9DFD69B0-A3A9-B1C2-A821-1C94BAE3E398 +false +1 +LOGDT025 +1 BYTE +1 BYTE,, +false + + +ERIGHTS-TEST +AIRPORTS +COUNTRY_CODE +walloar +2022-07-19 13:44:13 UTC +eRights +62EC867B-3A38-6A43-4BFF-33032DE3A1B4 +false +1 +LOGDT024 +2 BYTE +2 BYTE,, +false + + +ERIGHTS-TEST +AIRPORTS +COUNTRY_CODE_ISO3 +walloar +2022-07-19 13:44:13 UTC +eRights +F843B521-B4D5-9C08-CE86-9A4D3703FCAF +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +AIRPORTS +LATITUDE +walloar +2022-07-19 13:44:13 UTC +eRights +13CA231B-965F-878E-9A40-4B8A24C7FCAC +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +AIRPORTS +LONGITUDE +walloar +2022-07-19 13:44:13 UTC +eRights +A3CFCADE-A3CF-8003-BDC4-5402666711B3 +true +false +1 +LOGDT019 +,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_AIRPORTS +walloar +2022-07-19 13:44:13 UTC +eRights +358A2733-C5E8-547C-1B65-CB777DCE56C4 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +IX_AIRPORTS +walloar +2022-07-19 13:44:13 UTC +eRights +A53787F5-7F68-D09F-7506-025A4264407A +false + + + + + +ERIGHTS-TEST +ERIGHTS +IX_AIRPORTS_2 +walloar +2022-07-19 13:44:13 UTC +eRights +82656685-3129-8BD1-867F-1BD12B6921D4 +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_AIRPORTS +walloar +2022-07-19 13:44:13 UTC +eRights +24930A63-0930-E2EB-1B8E-A1A9AEC1AD50 +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/ECD40BBB-C4B8-D2AF-4885-7002088CC71D.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/ECD40BBB-C4B8-D2AF-4885-7002088CC71D.xml new file mode 100644 index 0000000..1292ae2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/ECD40BBB-C4B8-D2AF-4885-7002088CC71D.xml @@ -0,0 +1,193 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_RATE_EXCHANGE +walloar +2022-03-18 10:16:52 UTC +eRights +1F8C9305-50CC-FF37-91A9-7EA65CF031A7 +4 +false +true +true + + + +ERIGHTS-TEST +MV_RATE_EXCHANGE +UNIQID +walloar +2022-03-18 10:16:53 UTC +eRights +DDFE1EA6-3DB1-B4AD-7BE4-0290F45D86FC +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_RATE_EXCHANGE +DEV_CD +walloar +2022-03-18 10:16:53 UTC +eRights +59AA10CC-067C-D454-4C3A-D645EFDCD1AE +true +false +1 +LOGDT024 +12 BYTE +12 BYTE,, +false + + +ERIGHTS-TEST +MV_RATE_EXCHANGE +DT_CRE +walloar +2022-03-18 10:16:53 UTC +eRights +F481AE72-F850-EB2B-03A1-E7AF28C96ACB +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_RATE_EXCHANGE +DT_DEB +walloar +2022-03-18 10:16:53 UTC +eRights +B77D43E0-FFFB-7930-6C88-0202E56EE6B5 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_RATE_EXCHANGE +TAUX_EUR +walloar +2022-03-18 10:16:53 UTC +eRights +6E523957-4305-174C-FB23-F888AF9620A9 +true +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +MV_RATE_EXCHANGE +DT_FIN +walloar +2022-03-18 10:16:53 UTC +eRights +A8856CC6-E561-2BFD-3DD7-173656D120C5 +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_RATE_EXCHANGE +DT_MAJ +walloar +2022-03-18 10:16:53 UTC +eRights +A19CAF03-0E36-134A-B485-5B473AF8F6FC +true +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +MV_RATE_EXCHANGE +MONTH_YEAR +walloar +2022-03-18 10:16:53 UTC +eRights +49FE20F8-A22A-6C00-2DD2-DACBF34FBDA4 +true +false +1 +LOGDT024 +17 BYTE +17 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +IDX_MV_RATE_EXCH_DEV_CD +walloar +2022-03-18 10:16:53 UTC +eRights +63830940-46E5-B39D-A105-686EDE810638 +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/ED8B6EA9-522E-6461-94D2-0D394AEF66FE.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/ED8B6EA9-522E-6461-94D2-0D394AEF66FE.xml new file mode 100644 index 0000000..99ab1b4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/ED8B6EA9-522E-6461-94D2-0D394AEF66FE.xml @@ -0,0 +1,87 @@ + + +ERIGHTS-TEST +ERIGHTS +MV_STATUTORY_LINK_CODES +walloar +2022-03-18 10:16:52 UTC +eRights +55259F77-F02D-8A7E-4891-389AEAECFE54 +4 +false +true +true + + + +ERIGHTS-TEST +MV_STATUTORY_LINK_CODES +LST_CD +walloar +2022-03-18 10:16:53 UTC +eRights +C5648AE6-18AB-762A-E495-15993ECDA07E +true +false +1 +LOGDT024 +3 CHAR +3 CHAR,, +false + + +ERIGHTS-TEST +MV_STATUTORY_LINK_CODES +EN_NAME +walloar +2022-03-18 10:16:53 UTC +eRights +E6C78A7A-5982-6949-D5B4-801A4D970B79 +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, +false + + +ERIGHTS-TEST +MV_STATUTORY_LINK_CODES +FR_NAME +walloar +2022-03-18 10:16:53 UTC +eRights +7B3F741D-C86B-4CF6-070F-A3B3933810F0 +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, +false + + +ERIGHTS-TEST +MV_STATUTORY_LINK_CODES +DE_NAME +walloar +2022-03-18 10:16:53 UTC +eRights +CB8263F0-BD74-D7DF-7A9A-2E9D3AE84C44 +true +false +1 +LOGDT024 +2000 CHAR +2000 CHAR,, +false + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/ED8CCC48-0CF3-94C9-3427-6087747DC49F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/ED8CCC48-0CF3-94C9-3427-6087747DC49F.xml new file mode 100644 index 0000000..0d8bb86 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/ED8CCC48-0CF3-94C9-3427-6087747DC49F.xml @@ -0,0 +1,300 @@ + + +ERIGHTS-TEST +ERIGHTS +T_AIRPORTS +walloar +2023-06-15 12:36:23 UTC +eRights +50A9A03D-D568-BE51-4FA3-CBC69C091EA9 +false +true +true + + +ERIGHTS-TEST +T_AIRPORTS +AIRPORT_STEM_ID +walloar +2023-06-15 12:36:23 UTC +eRights +265E7C82-A907-0AC6-BFBA-F457D2FC3007 +true +false +1 +LOGDT019 +,, +false + + + + + +ERIGHTS-TEST +T_AIRPORTS +AIRPORT_ID +walloar +2023-06-15 12:36:23 UTC +eRights +81DE95BE-C206-BBD1-3E0C-26EAEC0379F7 +false +1 +LOGDT019 +,, +false + + +ERIGHTS-TEST +T_AIRPORTS +IATA_CODE +walloar +2023-06-15 12:36:23 UTC +eRights +F2730176-6185-7C81-F4B3-2E0EB20E9EE4 +true +false +1 +LOGDT024 +3 BYTE +3 BYTE,, +false + + +ERIGHTS-TEST +T_AIRPORTS +AIRPORT_NAME +walloar +2023-06-15 12:36:23 UTC +eRights +BDA5ED95-E33D-83DF-EAEC-CF7EC9E460FE +true +false +1 +LOGDT024 +256 BYTE +256 BYTE,, +false + + +ERIGHTS-TEST +T_AIRPORTS +ACTIVE +walloar +2023-06-15 12:36:23 UTC +eRights +EEF5FADB-DA04-C3A6-F964-D5DDC2D610DA +CKC_ACTIVE_AIRPORTS +false +1 +LOGDT025 +1 BYTE + + + + +'Y' +1 BYTE,, +false + + +ERIGHTS-TEST +T_AIRPORTS +ARCHIVED +walloar +2023-06-15 12:36:23 UTC +eRights +EEF015B2-BB59-417C-842E-A61059D53206 +CKC_ARCHIVED_T_AIRPOR +false +1 +LOGDT025 +1 BYTE + + + + +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +T_AIRPORTS +DELETED +walloar +2023-06-15 12:36:23 UTC +eRights +A89173BC-B3CA-5CB7-47D0-8F9F10DAB2F4 +CKC_DELETED_T_AIRPOR +false +1 +LOGDT025 +1 BYTE + + + + +'N' +1 BYTE,, +false + + +ERIGHTS-TEST +T_AIRPORTS +ENTRY_TS +walloar +2023-06-15 12:36:23 UTC +eRights +6F4F65B5-9E13-7804-4EEB-35B4B94DCAC4 +true +false +1 +LOGDT015 +6 +,6, +false + + +ERIGHTS-TEST +T_AIRPORTS +DONE_BY_PER_ID +walloar +2023-06-15 12:36:23 UTC +eRights +87FDD150-B750-2B51-3C72-F33EAC408D21 +true +false +1 +LOGDT019 +8 +0 +,8,0 +false + + +ERIGHTS-TEST +T_AIRPORTS +SYSTEM_MESSAGE +walloar +2023-06-15 12:36:23 UTC +eRights +46B3D99E-6A48-6E6A-97A0-8984C700EB9B +true +false +1 +LOGDT024 +100 BYTE +100 BYTE,, +false + + +ERIGHTS-TEST +T_AIRPORTS +REV_MESSAGE +walloar +2023-06-15 12:36:23 UTC +eRights +9E6325D1-3950-E0E6-3DDC-D26728FB03B6 +true +false +1 +LOGDT024 +2000 BYTE +2000 BYTE,, +false + + + + +ERIGHTS-TEST +ERIGHTS +T_AIRPORTS_PK +walloar +2023-06-15 12:36:23 UTC +eRights +E27EC194-658C-E384-D013-9A21A0B08678 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_AIRPORTS_ENTRY_TS +walloar +2023-06-15 12:36:23 UTC +eRights +63B70594-E81E-F841-88F3-EC68970CE852 +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_AIRPORTS_IATA +walloar +2023-06-15 12:36:23 UTC +eRights +A65EBB0C-A614-62A5-4379-0B97A33C492F +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_AIRPORT_ACTIVE +walloar +2023-06-15 12:36:23 UTC +eRights +A94764E3-4E87-81F6-7759-7A98E376BA72 +false + + + + + +ERIGHTS-TEST +ERIGHTS +IDX_AIRPORT_PER_ID +walloar +2023-06-15 12:36:23 UTC +eRights +CC181389-2195-A678-1ECB-060A01121334 +false + + + + + +ERIGHTS-TEST +ERIGHTS +T_AIRPORTS_PK +walloar +2023-06-15 12:36:23 UTC +eRights +B233F1EB-BD51-8F55-BC46-971F1B850CF1 +Unique Plain Index +false + + + + + +walloar +2023-06-15 12:36:24 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/F0656E91-B102-E910-93C9-3FADF5583284.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/F0656E91-B102-E910-93C9-3FADF5583284.xml new file mode 100644 index 0000000..dfbe82a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/F0656E91-B102-E910-93C9-3FADF5583284.xml @@ -0,0 +1,193 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_ABAC_COMM +walloar +2021-04-26 13:29:43 UTC +eRights +842F590A-15ED-4DE9-87AB-CF7007892D61 +false +true +true + + +ERIGHTS-TEST +ANK_ABAC_COMM +ID +walloar +2021-04-26 13:29:43 UTC +eRights +2DFB41B4-3418-56BD-A011-ED3833FBE42A +false +1 +LogDes-4BABEC65-108B-2A3C-F7C4-84AC47D292B0@LOGDT10040 +16 +16,, +false + + +ERIGHTS-TEST +ANK_ABAC_COMM +ORIGIN +walloar +2021-04-26 13:29:43 UTC +eRights +334B6A7F-5F4C-5E98-E045-6A8600FC2CD6 +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +ANK_ABAC_COMM +SERVICE +walloar +2021-04-26 13:29:43 UTC +eRights +38FF2433-78FF-6B87-4B9B-B3FBF2904174 +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +ANK_ABAC_COMM +ACTION +walloar +2021-04-26 13:29:43 UTC +eRights +38BA8701-50F3-482C-6E28-01EFC71D06F9 +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +ANK_ABAC_COMM +TYPE +walloar +2021-04-26 13:29:43 UTC +eRights +412053C4-41D6-0001-A957-09C4E6E8ECAE +CHK_ANK_ABAC_COMM_TYPE +false +1 +LOGDT024 +5 BYTE + + + + +5 BYTE,, +false + + +ERIGHTS-TEST +ANK_ABAC_COMM +USER_ID +walloar +2021-04-26 13:29:43 UTC +eRights +6AF9F974-5751-765E-FEE4-38F50C66646E +false +1 +LOGDT024 +255 BYTE +255 BYTE,, +false + + +ERIGHTS-TEST +ANK_ABAC_COMM +STATUS +walloar +2021-04-26 13:29:43 UTC +eRights +827534F7-4131-2DA6-D02C-AC6BE007A6ED +CHK_ANK_ABAC_COMM_STATUS +false +1 +LOGDT024 +9 BYTE + + + + + +9 BYTE,, +false + + +ERIGHTS-TEST +ANK_ABAC_COMM +REQUEST_SENT_AT +walloar +2021-04-26 13:29:43 UTC +eRights +35EB5A8F-012F-F37D-B7BF-A2CB183F7261 +false +1 +LOGDT007 +7 +7,, +false + + +ERIGHTS-TEST +ANK_ABAC_COMM +RESPONSE_RECEIVED_AT +walloar +2021-04-26 13:29:43 UTC +eRights +E2153014-6B51-AB22-F187-62562D212394 +true +false +1 +LOGDT007 +7 +7,, +false + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_ABAC_COMM +walloar +2021-04-26 13:29:43 UTC +eRights +F2AD127C-8E4F-EAFF-0207-5B8EDDEF98D6 +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +PK_ANK_ABAC_COMM +walloar +2021-04-26 13:29:43 UTC +eRights +EAE48F22-56C5-D31A-C344-FBDA0012865B +Unique Plain Index +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/F7550F97-470F-3E11-C6EE-445518E195D2.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/F7550F97-470F-3E11-C6EE-445518E195D2.xml new file mode 100644 index 0000000..374e968 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/table/seg_1/F7550F97-470F-3E11-C6EE-445518E195D2.xml @@ -0,0 +1,181 @@ + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_DOCS +walloar +2021-04-20 14:14:07 UTC + +eRights +table_83 +false +true +true + + +walloar +2021-04-20 14:16:49 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:16:49 UTC +eRights +false +1 +LOGDT019 +,, +false + + + + + +walloar +2021-04-20 14:16:49 UTC +eRights +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +walloar +2021-04-20 14:16:49 UTC +eRights +true +false +1 +LOGDT024 +3000 CHAR +3000 CHAR,, +false + + +walloar +2021-04-20 14:16:49 UTC +eRights +false +1 +LOGDT025 +1 CHAR + + + + +N +1 CHAR,, +false + + +walloar +2021-04-20 14:22:18 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:16:49 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:16:49 UTC +eRights +false +1 +LOGDT007 +,, +false + + +walloar +2021-04-20 14:16:49 UTC +eRights +false +1 +LOGDT019 +,, +false + + +walloar +2021-04-20 14:16:49 UTC +eRights +false +1 +LOGDT007 +,, +false + + +ERIGHTS-TEST +MOVEMENT_DOCS +ENABLED +tapiafo +2021-04-27 09:51:04 UTC +eRights +true +false +1 +LOGDT025 +1 BYTE +'N' +1 BYTE,, +false + + + + +walloar +2021-04-20 14:16:49 UTC +eRights +true +Primary Constraint +false + + + + + +ERIGHTS-TEST +ERIGHTS +MOVEMENT_DOCS_PK +walloar +2021-04-26 13:29:43 UTC +eRights +008EB962-D1B2-FE22-EC97-7031C5AE9C64 +Unique Plain Index +false + + + + + +walloar +2021-04-20 14:17:49 UTC +eRights +Foreign Key +false + + + + + +
    diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/052B85E4-C97A-108B-6AA7-2CF7AB03BB92.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/052B85E4-C97A-108B-6AA7-2CF7AB03BB92.xml new file mode 100644 index 0000000..fc4b822 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/052B85E4-C97A-108B-6AA7-2CF7AB03BB92.xml @@ -0,0 +1,149 @@ + + +ERIGHTS-TEST +ERIGHTS +V_PERSONNEL_TYPE +walloar +2022-03-25 08:49:03 UTC +eRights +EA917DCC-7ED7-2E56-9350-4176F1F4547D +true + + + +walloar +2022-03-25 08:49:03 UTC +eRights +true +false +ID +NUMBER +ID +false +177F851A-E3A7-29E2-2E87-841735B9219A +052B85E4-C97A-108B-6AA7-2CF7AB03BB92 + + +walloar +2022-03-25 08:49:03 UTC +eRights +true +false +CODE +VARCHAR2 (450 BYTE) +CODE +false +96CBE4ED-7EF4-8AFB-DD22-ECEE6E23164E +052B85E4-C97A-108B-6AA7-2CF7AB03BB92 + + +walloar +2022-03-25 08:49:03 UTC +eRights +true +false +IS_ACTIVE +CHAR (3 BYTE) +IS_ACTIVE +false +9D6A6B6F-136E-89A4-9571-ED5748BADA94 +052B85E4-C97A-108B-6AA7-2CF7AB03BB92 + + +walloar +2022-03-25 08:49:03 UTC +eRights +true +false +PRIORITY +NUMBER +PRIORITY +false +9FA5AA22-4B78-893E-52D9-28C03498102B +052B85E4-C97A-108B-6AA7-2CF7AB03BB92 + + +walloar +2022-03-25 08:49:03 UTC +eRights +true +false +CREATION_USER +NUMBER +CREATION_USER +false +C37FB30A-D477-8FC5-8100-E6FFE6D9A319 +052B85E4-C97A-108B-6AA7-2CF7AB03BB92 + + +walloar +2022-03-25 08:49:03 UTC +eRights +true +false +CREATION_DATE +DATE +CREATION_DATE +false +E0576425-97DD-22D6-A426-2B1DAAFF8D21 +052B85E4-C97A-108B-6AA7-2CF7AB03BB92 + + +walloar +2022-03-25 08:49:03 UTC +eRights +true +false +MODIFICATION_USER +NUMBER +MODIFICATION_USER +false +CEE98F07-13AA-533E-5806-6E626D82B19C +052B85E4-C97A-108B-6AA7-2CF7AB03BB92 + + +walloar +2022-03-25 08:49:03 UTC +eRights +true +false +MODIFICATION_DATE +DATE +MODIFICATION_DATE +false +AA2D4686-CE45-4674-2856-3E0F9FF74670 +052B85E4-C97A-108B-6AA7-2CF7AB03BB92 + + +walloar +2022-03-25 08:49:03 UTC +eRights +true +false +OLD_EDELHRM_CODE +VARCHAR2 (450 BYTE) +OLD_EDELHRM_CODE +false +DB309FC9-416C-6D91-DF1B-52F255A1F550 +052B85E4-C97A-108B-6AA7-2CF7AB03BB92 + + +walloar +2022-03-25 08:49:03 UTC +eRights +true +false +DESCRIPTION +VARCHAR2 (1500 BYTE) +DESCRIPTION +false +258D2E95-2018-32D9-7975-6E36A4D369A4 +052B85E4-C97A-108B-6AA7-2CF7AB03BB92 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/05F136AD-565B-1ABC-CAA8-4AF7580B2C30.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/05F136AD-565B-1ABC-CAA8-4AF7580B2C30.xml new file mode 100644 index 0000000..aaa8bc2 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/05F136AD-565B-1ABC-CAA8-4AF7580B2C30.xml @@ -0,0 +1,90 @@ + + +ERIGHTS-TEST +ERIGHTS +V_INSTITUTIONS +walloar +2022-03-18 10:16:53 UTC +eRights +DC620F5B-0A7C-CDEB-FEBE-E1D86C2834A9 +true + 'EEAS_COM']]> + + +walloar +2022-03-29 16:59:57 UTC +eRights +true +false +INS_CD +VARCHAR2 (40 BYTE) +INS_CD +false +CBCAA2F8-8215-61CD-4502-78F5F0FAC8AF +05F136AD-565B-1ABC-CAA8-4AF7580B2C30 + + +walloar +2022-03-29 16:59:57 UTC +eRights +true +false +INS_TYPE +VARCHAR2 (11 BYTE) +INS_TYPE +false +09F98541-1D27-5EF4-A200-8B10F361771E +05F136AD-565B-1ABC-CAA8-4AF7580B2C30 + + +walloar +2022-03-29 16:59:57 UTC +eRights +true +false +NAME +VARCHAR2 (2000 BYTE) +NAME +false +809EE0EA-04EE-F89D-C48C-FCDD487979A9 +05F136AD-565B-1ABC-CAA8-4AF7580B2C30 + + +walloar +2022-03-29 16:59:57 UTC +eRights +true +false +START_DATE +DATE +START_DATE +false +4FC26A93-8322-9618-C19F-14C353CE90EC +05F136AD-565B-1ABC-CAA8-4AF7580B2C30 + + +walloar +2022-03-29 16:59:57 UTC +eRights +true +false +END_DATE +DATE +END_DATE +false +CE427E9F-044A-7611-3BD5-C6CF2575E811 +05F136AD-565B-1ABC-CAA8-4AF7580B2C30 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml new file mode 100644 index 0000000..361c846 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/1F073EAF-B6C4-E68B-44C2-839223672FA4.xml @@ -0,0 +1,205 @@ + + +ERIGHTS-TEST +ERIGHTS +V_CITIES +walloar +2021-03-02 08:04:44 UTC +eRights +true + +true + + +ERIGHTS-TEST +V_CITIES +CITY_CODE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (12 BYTE) +CITY_CODE +false +1B8996F9-E0C8-9AEA-1F33-1944069A7248 + + +ERIGHTS-TEST +V_CITIES +COUNTRY_CODE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (12 BYTE) +COUNTRY_CODE +false +B1A2A460-C6A6-D0DD-E445-679924857C00 + + +ERIGHTS-TEST +V_CITIES +CD_SYSPER +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (12 BYTE) +CD_SYSPER +false +DF8A7D3D-C6F8-9B1E-29F3-B754953FF431 + + +ERIGHTS-TEST +V_CITIES +CD2_SYSPER +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (12 BYTE) +CD2_SYSPER +false +AA174DE0-804D-AA12-CE14-6BC0F2ADFE7A + + +ERIGHTS-TEST +V_CITIES +CD_SIRE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (12 BYTE) +CD_SIRE +false +0B036C2B-2CDA-512B-F6F2-FC7EDC1A10B8 + + +ERIGHTS-TEST +V_CITIES +NAP_CD +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (12 BYTE) +NAP_CD +false +63C3787E-32D2-738E-C529-DB72704BAAD7 + + +ERIGHTS-TEST +V_CITIES +RNG_ID +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +NUMBER +RNG_ID +false +4352314B-C587-4F7D-89D6-C97A8F2C5E69 + + +ERIGHTS-TEST +V_CITIES +DESCRIPTION_EN +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (240 BYTE) +DESCRIPTION_EN +false +878355A5-1FBA-3593-AD50-EFD35789B697 + + +ERIGHTS-TEST +V_CITIES +DESCRIPTION_FR +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (240 BYTE) +DESCRIPTION_FR +false +8344A317-F588-DEB1-C212-DA6D3369C046 + + + + +true +ERIGHTS +MV_CITIES + + +CITY_CODE +ERIGHTS +MV_CITIES + + +COUNTRY_CODE +ERIGHTS +MV_CITIES + + +CD_SYSPER +ERIGHTS +MV_CITIES + + +CD2_SYSPER +ERIGHTS +MV_CITIES + + +CD_SIRE +ERIGHTS +MV_CITIES + + +NAP_CD +ERIGHTS +MV_CITIES + + +RNG_ID +ERIGHTS +MV_CITIES + + +DESCRIPTION_EN +ERIGHTS +MV_CITIES + + +DESCRIPTION_FR +ERIGHTS +MV_CITIES + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/2C60BB78-B255-8071-4A20-510AAFD7E3A1.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/2C60BB78-B255-8071-4A20-510AAFD7E3A1.xml new file mode 100644 index 0000000..8fcfb90 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/2C60BB78-B255-8071-4A20-510AAFD7E3A1.xml @@ -0,0 +1,657 @@ + + +ERIGHTS-TEST +ERIGHTS +V_TRAVEL_ALLOWANCES_FOR_MANUAL_REGULARIZATION +walloar +2023-06-15 12:36:24 UTC +eRights +3297883A-221B-F1D0-78AF-19F48F840AB8 +true + [IR = IDE] Expatriation Allowance : 16%, 411 =>[IR = IEX] Foreign Residence Allowance : 4% + ) expat_allow ON ( expat_allow.per_id_attrib = a.per_id + AND expat_allow.date_from <= TO_DATE('31-DEC-' || a.exercise_year, 'DD-MON-YYYY') + AND expat_allow.date_to >= TO_DATE('01-JAN-' || a.exercise_year, 'DD-MON-YYYY') ) + WHERE + a.state = 'PAID' + AND a.posting_allowance_id = ( + SELECT + MAX(a2.posting_allowance_id) + FROM + posting_allowances a2 + WHERE + a2.exercise_year = a.exercise_year + AND a2.per_id = a.per_id + AND a2.delegation_org_id = a.delegation_org_id + )]]> + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +POSTING_ALLOWANCE_ID +NUMBER +POSTING_ALLOWANCE_ID +false +1BD2126C-A102-61E2-3F54-8CFF00599F9A +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +EXERCISE_YEAR +NUMBER (4) +EXERCISE_YEAR +false +D4820BA6-97BD-42CC-5937-328B4244F540 +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +SOJ_ID +NUMBER +SOJ_ID +false +1010EF51-D27F-E397-3901-225B59DA4BC8 +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +JOB_ID +NUMBER (10) +JOB_ID +false +FE0450C8-6F18-0165-9D4B-6D6114D5B2E6 +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PER_ID +NUMBER +PER_ID +false +DF217247-D96B-E35A-8D99-DA7EE99DB683 +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +JOB_TYPE +VARCHAR2 (255 CHAR) +JOB_TYPE +false +E4B0D70C-0987-6F5B-5DDE-8FAA0AD5C7CF +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ASSIGN_START_DATE_TO +VARCHAR2 (255 CHAR) +ASSIGN_START_DATE_TO +false +CB89709A-1414-6137-704C-13373D568551 +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ASSIGN_END_DATE_TO +VARCHAR2 (1 CHAR) +ASSIGN_END_DATE_TO +false +47FA03F6-465A-79B5-1330-9D431EBD50D4 +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +NO_SYSPER +NUMBER (10) +NO_SYSPER +false +58D6CEA4-8F85-1587-23B4-A770710C799A +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +TITLE +NUMBER (10) +TITLE +false +D4EEF64B-3AD6-1994-04C1-F1BF1EA6D8E0 +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +SURNAME +NUMBER (10) +SURNAME +false +687F87A0-9D26-4BA6-5C1C-0071F04FC291 +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +GENRE +VARCHAR2 (500 BYTE) +GENRE +false +7227C100-099F-5AFA-750A-02199D85ED15 +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +USERID +VARCHAR2 (60 CHAR) +USERID +false +2730EC3B-714C-DDB2-FDD6-74B17E42628B +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +MONIKER +VARCHAR2 (400 CHAR) +MONIKER +false +B9EB1CED-81BB-6335-08CD-8658A631A58E +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +DOMAIN +NUMBER (8) +DOMAIN +false +AE33EC1D-D3EE-4D28-FDEB-5946A9C446D0 +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +DISPLAY_NAME +VARCHAR2 (400 CHAR) +DISPLAY_NAME +false +26622B32-7519-7543-03AA-DB94FCAF4083 +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +JCX_ID +NUMBER (10) +JCX_ID +false +7556E31F-C333-B217-3C19-685250266CD0 +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ASSIGN_START_DATE +VARCHAR2 (743 BYTE) +ASSIGN_START_DATE +false +3B6555FF-1245-EA76-DB5F-6B64D08311D8 +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ASSIGN_END_DATE +VARCHAR2 (1 BYTE) +ASSIGN_END_DATE +false +87247DA6-E07F-7206-7888-902E7A48900C +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +LST_CD +VARCHAR2 (1 BYTE) +LST_CD +false +84BE5411-F82C-5C93-A0DB-D954E81CDA08 +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +LST_CODE +NUMBER (10) +LST_CODE +false +8DFB631B-FEC7-0406-BD57-ABDE28F02484 +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +LST_BEG_DATE +VARCHAR2 +LST_BEG_DATE +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +LST_ASS_DATE +VARCHAR2 +LST_ASS_DATE +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +LST_END_DATE +VARCHAR2 +LST_END_DATE +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +CGR_CD +VARCHAR2 +CGR_CD +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORG_ID +NUMBER (10) +ORG_ID +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +MAIN_ORG_ID +NUMBER (10) +MAIN_ORG_ID +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORG_NAME +VARCHAR2 (500 BYTE) +ORG_NAME +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORG_CD +VARCHAR2 (60 CHAR) +ORG_CD +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORG_DESC +VARCHAR2 (400 CHAR) +ORG_DESC +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +TOR_ID +NUMBER (8) +TOR_ID +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +TYPEOFENTITY_NAME +VARCHAR2 (400 CHAR) +TYPEOFENTITY_NAME +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +DEL_ID +NUMBER (10) +DEL_ID +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +DELEGATION_NAME +VARCHAR2 (743 BYTE) +DELEGATION_NAME +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +RESPONSIBLE +VARCHAR2 (1 BYTE) +RESPONSIBLE +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +HEAD_OF_ENTITY +VARCHAR2 (1 BYTE) +HEAD_OF_ENTITY +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +JOB_CITY_CODE +VARCHAR2 (3 BYTE) +JOB_CITY_CODE +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +JOB_CITY_NAME +VARCHAR2 (200 BYTE) +JOB_CITY_NAME +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +JOB_COUNTRY_CODE +VARCHAR2 (3 BYTE) +JOB_COUNTRY_CODE +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +JOB_COUNTRY_NAME +VARCHAR2 (200 BYTE) +JOB_COUNTRY_NAME +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +IATA_CODE +VARCHAR2 (3 BYTE) +IATA_CODE +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +DELEGATION_ORG_ID +NUMBER (10) +DELEGATION_ORG_ID +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +EXPATRATION_ALLOWANCE_DATE_FROM +DATE +EXPATRATION_ALLOWANCE_DATE_FROM +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +EXPATRATION_ALLOWANCE_DATE_TO +DATE +EXPATRATION_ALLOWANCE_DATE_TO +false +2C60BB78-B255-8071-4A20-510AAFD7E3A1 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/3664AC16-5F3B-1F33-D9EF-320D101313DA.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/3664AC16-5F3B-1F33-D9EF-320D101313DA.xml new file mode 100644 index 0000000..7b4e78e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/3664AC16-5F3B-1F33-D9EF-320D101313DA.xml @@ -0,0 +1,103 @@ + + +ERIGHTS-TEST +ERIGHTS +V_PERSONS_EMAILS +walloar +2022-03-18 10:16:53 UTC +eRights +010A83C4-3FEE-0514-1A69-35115A0F9E65 +true + + + +walloar +2022-03-29 16:59:57 UTC +eRights +true +false +PER_ID +NUMBER +PER_ID +false +3664AC16-5F3B-1F33-D9EF-320D101313DA + + +walloar +2022-03-29 16:59:57 UTC +eRights +true +false +EMAIL +VARCHAR2 (320 CHAR) +EMAIL +false +3664AC16-5F3B-1F33-D9EF-320D101313DA + + +walloar +2022-03-29 16:59:57 UTC +eRights +true +false +EMAIL_TYPE +VARCHAR2 (40 BYTE) +EMAIL_TYPE +false +3664AC16-5F3B-1F33-D9EF-320D101313DA + + +walloar +2022-03-29 16:59:57 UTC +eRights +true +false +SOURCE +CHAR (7 BYTE) +SOURCE +false +3664AC16-5F3B-1F33-D9EF-320D101313DA + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0.xml new file mode 100644 index 0000000..fd3f059 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0.xml @@ -0,0 +1,187 @@ + + +ERIGHTS-TEST +ERIGHTS +V_LIVE_AIRPORTS +walloar +2023-06-15 12:36:23 UTC +eRights +CFAAEDE8-E351-34B8-394C-A71C1579E088 +true + + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +AIRPORT_STEM_ID +NUMBER +AIRPORT_STEM_ID +false +EBACF000-AB70-D058-0B2C-790E35DF9783 +3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +AIRPORT_ID +NUMBER +AIRPORT_ID +false +39504C8A-B681-D328-82D7-66525C427528 +3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +IATA_CODE +VARCHAR2 (3 BYTE) +IATA_CODE +false +BA9AC5C8-8FE5-2552-B13C-6738CEC59F75 +3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +AIRPORT_NAME +VARCHAR2 (256 BYTE) +AIRPORT_NAME +false +DD2F393A-28B4-FF21-AB90-53F541AA2891 +3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +ACTIVE +CHAR (1 BYTE) +ACTIVE +false +25EC840F-7DFA-3EFE-B78A-AECCCCB6D392 +3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +ARCHIVED +CHAR (1 BYTE) +ARCHIVED +false +00B0E746-2C57-3B45-01C0-2A71CDC9B40A +3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +DELETED +CHAR (1 BYTE) +DELETED +false +D8A703D6-E1DC-1F9D-0CEB-3FAB953E411F +3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +ENTRY_TS +TIMESTAMP +ENTRY_TS +false +C8B61E19-06A5-1E24-F056-26B744058433 +3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +DONE_BY_PER_ID +NUMBER (8) +DONE_BY_PER_ID +false +BE1A3722-3BDF-9344-927C-BB188A5CEE7F +3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +SYSTEM_MESSAGE +VARCHAR2 (100 BYTE) +SYSTEM_MESSAGE +false +19FCF352-7831-5D83-B419-245C4B7D41B3 +3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +REV_MESSAGE +VARCHAR2 (2000 BYTE) +REV_MESSAGE +false +6446657A-6D9F-F984-EFA4-BF927BBA8D11 +3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +MAX_AIRPORT_ID +NUMBER +MAX_AIRPORT_ID +false +3A8FB2E3-9A5D-63D2-43BE-ABCDCDBD4FE0 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/3DEFBF89-99D7-D0F9-5A23-489A366E5B1C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/3DEFBF89-99D7-D0F9-5A23-489A366E5B1C.xml new file mode 100644 index 0000000..cdd3996 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/3DEFBF89-99D7-D0F9-5A23-489A366E5B1C.xml @@ -0,0 +1,488 @@ + + +ERIGHTS-TEST +ERIGHTS +V_ALLOWANCES +walloar +2022-03-18 10:16:53 UTC +eRights +AFD731D9-8788-D8A3-95B3-46A11641A9A6 +true + + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +REQUEST_ID +NUMBER +REQUEST_ID +false +B8C3F732-622C-E39C-A635-D5D001CC00A5 +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +DECLARATION_ID +NUMBER +DECLARATION_ID +false +4E31159F-0558-2DD6-DE0C-24F404298418 +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +MOVEMENT_FILE_ID +NUMBER +MOVEMENT_FILE_ID +false +EC3E4FCB-381E-4110-E5F2-080037C6A330 +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ENTITLMNT_TYPE_ID +NUMBER +ENTITLMNT_TYPE_ID +false +7581330B-DBB8-A809-2C31-BD227628BD2F +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +REQUEST_STRING_ID +VARCHAR2 (100 CHAR) +REQUEST_STRING_ID +false +63FE9568-A66B-EE29-9148-08BAF9B440A9 +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +CREATED_AT +TIMESTAMP +CREATED_AT +false +0DE2DE1B-E265-4175-6F6F-A3DEF3F0B2EE +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +STATE +VARCHAR2 (16 CHAR) +STATE +false +68B8547D-2B4D-12F3-FB25-86D5CC061342 +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +CALC_TOTAL_AMOUNT +NUMBER +CALC_TOTAL_AMOUNT +false +D2C1E302-5F47-5BAA-94CA-16D65C82ADC7 +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +CALC_TOTAL_AMOUNT_CURRENCY +VARCHAR2 (3 CHAR) +CALC_TOTAL_AMOUNT_CURRENCY +false +F10B86B4-AA41-D3FD-44ED-F674BFCABE65 +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +TOTAL_AMOUNT +NUMBER +TOTAL_AMOUNT +false +98490C55-04E6-4C1C-D8E8-B42EEEA93E00 +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +TOTAL_AMOUNT_CURRENCY +VARCHAR2 (3 CHAR) +TOTAL_AMOUNT_CURRENCY +false +F012349C-099A-5811-23B6-5E68A93283E8 +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ENTITLEMENT +VARCHAR2 (255 CHAR) +ENTITLEMENT +false +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +LAST_NAME +VARCHAR2 (255 CHAR) +LAST_NAME +false +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +FIRST_NAME +DATE +FIRST_NAME +false +AB38D59A-B29F-E32B-106B-A2B2069FB2FC +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +START_DATE +VARCHAR2 (255 CHAR) +START_DATE +false +EAF2C99C-FAD3-4A14-46A3-71954B67B90C +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +CITY_TO +VARCHAR2 (20 CHAR) +CITY_TO +false +69C35E55-3DAD-C3DE-2591-42683521ACAE +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +COUNTRY_TO +VARCHAR2 (3 CHAR) +COUNTRY_TO +false +EC0E2785-A1E0-2493-38D6-2ACDA7C8F64A +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +FILE_ID +VARCHAR2 (3 CHAR) +FILE_ID +false +B4A97655-07FE-3689-CC8D-CB5E4141D1FC +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +REQUEST_TYPE +VARCHAR2 (255 CHAR) +REQUEST_TYPE +false +606BA6A4-667C-4B43-3E75-E4734018D9D2 +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +CITY_CODE_FROM +NUMBER +CITY_CODE_FROM +false +8DDC1AE7-2143-7078-F383-A755A4F86AF9 +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +CITY_FROM +VARCHAR2 (200 CHAR) +CITY_FROM +false +9025B966-4281-4517-96C5-8555883285D0 +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +COUNTRY_CODE_FROM +VARCHAR2 (200 CHAR) +COUNTRY_CODE_FROM +false +46A30568-E505-ECC6-9D47-14BA0346F7FB +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +COUNTRY_FROM +VARCHAR2 (256 CHAR) +COUNTRY_FROM +false +C7331B83-1967-4DF2-2AFC-BFCFC211A75A +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ORG_CD_FROM +CHAR (1 BYTE) +ORG_CD_FROM +false +3BC0D2CB-BBDF-444A-F77D-26EA52C205C2 +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ORG_ID_FROM +NUMBER +ORG_ID_FROM +false +1B05FE22-DF96-7AA9-9F17-FECFF293B693 +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +PAYMENT_REQUEST +NUMBER +PAYMENT_REQUEST +false +8D1F6CFA-A363-F4F0-7D93-7F631A1EC8D3 +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +PAYMENT_ORDER +VARCHAR2 (50 BYTE) +PAYMENT_ORDER +false +2C7F4989-279D-60F9-B781-31269D18E22F +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +BUDGET_LINE +VARCHAR2 (256 CHAR) +BUDGET_LINE +false +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +PRIORITY +CHAR (1 BYTE) +PRIORITY +false +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +DELEGATION_ORG_ID_FROM +NUMBER +DELEGATION_ORG_ID_FROM +false +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +PER_ID +NUMBER +PER_ID +false +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ABAC_STATE +VARCHAR2 (50 BYTE) +ABAC_STATE +false +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ABAC_WORKFLOW_STATE +VARCHAR2 (50 BYTE) +ABAC_WORKFLOW_STATE +false +3DEFBF89-99D7-D0F9-5A23-489A366E5B1C + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml new file mode 100644 index 0000000..a844c9a --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/41EFB99A-3CCE-C1ED-51E9-4CD2E2582421.xml @@ -0,0 +1,619 @@ + + +ERIGHTS-TEST +ERIGHTS +V_REPORT_MOVEMENT_FILES +walloar +2021-03-02 08:04:44 UTC +eRights +true + +true + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +MOVEMENT_FILE_ID +NUMBER +MOVEMENT_FILE_ID +false +EC3E4FCB-381E-4110-E5F2-080037C6A330 +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +FIRST_NAME +CHAR (1 BYTE) +FIRST_NAME +false +93C4ADB8-BA9A-3DD2-3241-4963B3D94F8E +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +LAST_NAME +CHAR (1 BYTE) +LAST_NAME +false +3BC0D2CB-BBDF-444A-F77D-26EA52C205C2 +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +STATUS +VARCHAR2 (1000 CHAR) +STATUS +false +ACDCE50E-3BF5-3D77-C97E-8E4C089DF6AA +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +STARTDATEFUTURE +NUMBER +STARTDATEFUTURE +false +1B05FE22-DF96-7AA9-9F17-FECFF293B693 +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ENDDATEFUTURE +NUMBER +ENDDATEFUTURE +false +B77F3574-CCE2-2776-3970-BAB49795F7D3 +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +MOVEMENTFROM +VARCHAR2 (400 BYTE) +MOVEMENTFROM +false +59A2B6E1-A34A-38D0-1D63-DBEA90F60728 +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +MOVEMENTTO +VARCHAR2 (150 BYTE) +MOVEMENTTO +false +409BBA84-621F-0A2D-5933-8D88D649C671 +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +EVACUATION_STATUS +VARCHAR2 (500 BYTE) +EVACUATION_STATUS +false +6406E16B-C929-51C4-C017-DDDDF805EC0D +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +BUDGDET_LINE_FUTURE +VARCHAR2 (10 BYTE) +BUDGDET_LINE_FUTURE +false +512B2528-A183-D30E-FF8A-125F14DEFE26 +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +MOVEMENTTYPE +VARCHAR2 (200 BYTE) +MOVEMENTTYPE +false +1068DBE2-9BFD-7705-D7EC-FFD8C4B9029F +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +MOVEMENTYEAR +NUMBER +MOVEMENTYEAR +false +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +MOVEMENTCONTEXT +VARCHAR2 (128 BYTE) +MOVEMENTCONTEXT +false +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PERID +NUMBER +PERID +false +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +FUTUREASSIGNMENT +NUMBER +FUTUREASSIGNMENT +false +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +FILEID +VARCHAR2 (255 CHAR) +FILEID +false +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PRIORITY +CHAR (1 BYTE) +PRIORITY +false +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +FOLLOWUP_FLAGS +VARCHAR2 (1000 CHAR) +FOLLOWUP_FLAGS +false +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ALLOCATEDTOCURRENT +VARCHAR2 (255 CHAR) +ALLOCATEDTOCURRENT +false +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ALLOCATEDTOFUTURE +VARCHAR2 (255 CHAR) +ALLOCATEDTOFUTURE +false +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +REASON +CHAR (1 BYTE) +REASON +false +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +DELEGATION_ORG_ID_FROM +NUMBER +DELEGATION_ORG_ID_FROM +false +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PERSONNEL_TYPE_ID +NUMBER +PERSONNEL_TYPE_ID +false +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PERSONNEL_TYPE_DESC +VARCHAR2 (400 BYTE) +PERSONNEL_TYPE_DESC +false +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +JOB_FUNCTION_CODE +VARCHAR2 (150 BYTE) +JOB_FUNCTION_CODE +false +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +JOB_FUNCTION_DESC +VARCHAR2 (500 BYTE) +JOB_FUNCTION_DESC +false +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +INSTITUTION_CODE +VARCHAR2 (10 BYTE) +INSTITUTION_CODE +false +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +INSTITUTION_DESC +VARCHAR2 (200 BYTE) +INSTITUTION_DESC +false +41EFB99A-3CCE-C1ED-51E9-4CD2E2582421 + + + + +true +ERIGHTS +MOVEMENT_FILES + + +true +ERIGHTS +MOVEMENT_CONTEXT + + +true +ERIGHTS +V_PEOPLE +true + + +true +ERIGHTS +MOVEMENT_TYPES + + +true +ERIGHTS +MV_COUNTRIES + + +true +ERIGHTS +MV_CITIES + + +MOVEMENT_FILE_ID +ERIGHTS +MOVEMENT_FILES + + +EVACUATION_STATUS +ERIGHTS +MOVEMENT_FILES + + +PRIORITY +ERIGHTS +MOVEMENT_FILES + + +DELEGATION_ORG_ID_FROM +ERIGHTS +MOVEMENT_FILES + + +MOVEMENT_TYPE +ERIGHTS +MOVEMENT_TYPES + + +CITY_CODE +ERIGHTS +MV_CITIES + + +NAME +ERIGHTS +MOVEMENT_CONTEXT + + +COUNTRY_CODE_TO +ERIGHTS +MOVEMENT_FILES + + +BUDGET_LINE +ERIGHTS +MOVEMENT_FILES + + +ASSIGN_START_DATE_TO +ERIGHTS +MOVEMENT_FILES + + +YEAR +ERIGHTS +MOVEMENT_FILES + + +NAME_EN +ERIGHTS +MV_COUNTRIES + + +JOB_ID_TO +ERIGHTS +MOVEMENT_FILES + + +COUNTRY_CODE +ERIGHTS +MV_CITIES + + +MOVEMENT_CONTEXT_ID +ERIGHTS +MOVEMENT_CONTEXT + + +ESTIMATED_END_DATE +ERIGHTS +MOVEMENT_FILES + + +MOVEMENT_TYPE_ID +ERIGHTS +MOVEMENT_TYPES + + +DESCRIPTION_EN +ERIGHTS +MV_CITIES + + +MOVEMENT_TYPE_ID +ERIGHTS +MOVEMENT_FILES + + +COUNTRY_CODE +ERIGHTS +MV_COUNTRIES + + +PER_ID +ERIGHTS +V_PEOPLE + + +START_DATE +ERIGHTS +MOVEMENT_FILES + + +ASSIGN_END_DATE_TO +ERIGHTS +MOVEMENT_FILES + + +CITY_CODE_FROM +ERIGHTS +MOVEMENT_FILES + + +CONTEXT_ID +ERIGHTS +MOVEMENT_FILES + + +CITY_CODE_TO +ERIGHTS +MOVEMENT_FILES + + +FILE_ID +ERIGHTS +MOVEMENT_FILES + + +FIRST_NAME +ERIGHTS +V_PEOPLE + + +PER_ID +ERIGHTS +MOVEMENT_FILES + + +STATE +ERIGHTS +MOVEMENT_FILES + + +ORG_CD_TO +ERIGHTS +MOVEMENT_FILES + + +COUNTRY_CODE_FROM +ERIGHTS +MOVEMENT_FILES + + +LAST_NAME +ERIGHTS +V_PEOPLE + + +ORG_CD_FROM +ERIGHTS +MOVEMENT_FILES + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/4D724735-98C6-B035-4504-647523E55607.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/4D724735-98C6-B035-4504-647523E55607.xml new file mode 100644 index 0000000..f5ef69f --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/4D724735-98C6-B035-4504-647523E55607.xml @@ -0,0 +1,495 @@ + + +ERIGHTS-TEST +ERIGHTS +V_PERSON_ADDRESS_HIST +walloar +2023-06-15 12:36:24 UTC +eRights +D61E2477-D0B1-63C5-9FFD-854CACD4054A +true + + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PER_ID +NUMBER (8) +PER_ID +false +A5AD7BAF-215B-B827-0534-C34779AB25E0 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +START_DATE +DATE +START_DATE +false +953F9281-DC47-494C-AEB7-70791D70F35C +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +END_DATE +DATE +END_DATE +false +C4F724E9-1A32-CEEE-AEB1-E0085D866952 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +EFFECTIVE_DATE +DATE +EFFECTIVE_DATE +false +5F834EA3-0A0E-5C7E-B84A-73E0F955B92C +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +DECL_CHG_DATE +DATE +DECL_CHG_DATE +false +EA853578-843D-9E5E-D694-843C9774F61A +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +TADR_CD +NUMBER (3) +TADR_CD +false +05E81226-B83B-16F0-5F54-4CABC8965319 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ADDRESS_TYPE_CODE +VARCHAR2 (100 CHAR) +ADDRESS_TYPE_CODE +false +6528F385-1FE5-6778-66E0-A9831C3106FA +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +COUNTRY_CODE +VARCHAR2 (3 CHAR) +COUNTRY_CODE +false +A0783DAE-46B0-146C-7064-BED8E0315A56 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +CITY_NAME +VARCHAR2 (200 CHAR) +CITY_NAME +false +28298A23-377A-E90F-1C12-F47811F96212 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +POSTAL_CODE +VARCHAR2 (30 CHAR) +POSTAL_CODE +false +DD8F4548-C9AD-D1FE-71EB-5A6C5AD40F02 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +STREET_NAME +VARCHAR2 (250 CHAR) +STREET_NAME +false +CD09B58C-CBFB-1A9B-6FED-8DC7541E9761 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +STREET_NAME1 +VARCHAR2 (250 CHAR) +STREET_NAME1 +false +D08C50B7-67D9-072D-7C9C-96A9EA412B65 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +STREET_NAME2 +VARCHAR2 (250 CHAR) +STREET_NAME2 +false +1E996C13-B5FC-16DF-2C27-876C6E49FEBD +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +STREET_NUMBER +VARCHAR2 (20 CHAR) +STREET_NUMBER +false +5427E57A-4BA1-329C-C5BC-BFBD254EB4ED +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +POSTAL_BOX +VARCHAR2 (20 CHAR) +POSTAL_BOX +false +A6648E3D-06FD-EDD2-89A6-0739AD12805D +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +COMMENTS +VARCHAR2 (2000 CHAR) +COMMENTS +false +62FE247C-8AF5-6D77-35A7-90FC4D2CAEB1 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ADDITIONAL_ADDRESS +VARCHAR2 (400 CHAR) +ADDITIONAL_ADDRESS +false +9103E34D-6648-C565-4DE8-1EFA573EEF34 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ADDITIONAL_ADDRESS2 +VARCHAR2 (400 CHAR) +ADDITIONAL_ADDRESS2 +false +C97DD729-8ECA-804B-515A-8F4ECBE6E197 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +OREDER_ADDRESS +NUMBER (2) +OREDER_ADDRESS +false +514C9551-6285-C99F-3342-88157AAD5C6B +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +LANGUAGE_CODE +VARCHAR2 (3 CHAR) +LANGUAGE_CODE +false +FBD5A936-E15A-3C61-4545-EA4C46501E01 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PER_ID_REL_PERS +NUMBER (8) +PER_ID_REL_PERS +false +145CFD16-2722-4E48-902A-29DEE9392F94 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +SURNAME +VARCHAR2 (80 CHAR) +SURNAME +false +B44B2D2A-12DD-2636-64C7-51D564C28EF5 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +FIRST_NAME +VARCHAR2 (80 CHAR) +FIRST_NAME +false +07146FA0-A41F-F7BF-1863-D789334FEA75 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +DATE_OF_BIRTH +DATE +DATE_OF_BIRTH +false +EBF8C75E-86ED-6CBE-69BC-B8FF6F4C83D9 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +TITLE +VARCHAR2 (3 CHAR) +TITLE +false +AB07AD60-94C5-2A8B-A0F4-D3AADE342755 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +LINK_ADR_TEL +VARCHAR2 (20 CHAR) +LINK_ADR_TEL +false +9D64776A-BB0A-AEB4-E558-64F03339FCCA +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +SP2_ADDRESS_ID +NUMBER (10) +SP2_ADDRESS_ID +false +1FEF8BD2-034E-713D-EE18-99A4ECFF7864 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +IRIS_ADDRESS_ID +NUMBER (10) +IRIS_ADDRESS_ID +false +87A92EB8-BD03-C143-A175-B4AA3F36F138 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +SRC_ID +NUMBER (10) +SRC_ID +false +B0437A2C-2990-6063-302A-20BD12170588 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +INS_CD +VARCHAR2 (10 CHAR) +INS_CD +false +D776C970-879C-3EEC-7A2B-9E9537713982 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +UNIQ_ID +NUMBER (10) +UNIQ_ID +false +8D7C464F-C329-AB2D-5E86-D881591EDB2E +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +CREATED_DATE +DATE +CREATED_DATE +false +FB8CEB9A-6889-B53D-7941-F4339B6F5091 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +UPDATED_DATE +DATE +UPDATED_DATE +false +43893E82-6688-C4D7-F5D7-A6F838B26174 +4D724735-98C6-B035-4504-647523E55607 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +DELEGATION_ORG_ID +NUMBER (10) +DELEGATION_ORG_ID +false +4D724735-98C6-B035-4504-647523E55607 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml new file mode 100644 index 0000000..81df77d --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/51652F79-0CEB-9597-2FD6-04003423BB3B.xml @@ -0,0 +1,105 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_V_USER_PERMISSIONS +walloar +2021-03-02 08:04:44 UTC +eRights +true + +true + + +ERIGHTS-TEST +ANK_V_USER_PERMISSIONS +PER_ID +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +PER_ID +NUMBER (8) +PER_ID +false + + +ERIGHTS-TEST +ANK_V_USER_PERMISSIONS +ORG_ID +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +ORG_ID +NUMBER +ORG_ID +NVL(MV.ORG_ID,-1) +false + + +ERIGHTS-TEST +ANK_V_USER_PERMISSIONS +PERMISSION +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +PERMISSION +VARCHAR2 (4000 BYTE) +PERMISSION +false + + +ERIGHTS-TEST +ANK_V_USER_PERMISSIONS +ACCESS_MODE +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +ACCESS_MODE +VARCHAR2 (1 BYTE) +ACCESS_MODE +false + + + + +true +ERIGHTS +ANK_MV_USER_SYS_ORG_PERMS + + +ACCESS_MODE +ERIGHTS +ANK_MV_USER_SYS_ORG_PERMS + + +PER_ID +ERIGHTS +ANK_MV_USER_SYS_ORG_PERMS + + +FEATURE +ERIGHTS +ANK_MV_USER_SYS_ORG_PERMS + + +ORG_ID +ERIGHTS +ANK_MV_USER_SYS_ORG_PERMS + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/5D8AD5F9-CD93-5995-F129-2F2BF9B53204.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/5D8AD5F9-CD93-5995-F129-2F2BF9B53204.xml new file mode 100644 index 0000000..9664146 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/5D8AD5F9-CD93-5995-F129-2F2BF9B53204.xml @@ -0,0 +1,904 @@ + + +ERIGHTS-TEST +ERIGHTS +V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES +walloar +2023-02-07 11:01:21 UTC +eRights +69E6E389-F3E6-9AB0-73E8-C7FEFB6B8968 +true + [IR = IDE] Expatriation Allowance : 16%, 411 =>[IR = IEX] Foreign Residence Allowance : 4% + AND r.date_from <= TO_DATE('31-DEC-' || EXTRACT(YEAR FROM sysdate), + 'DD-MON-YYYY') + AND r.date_to >= trunc(sysdate, 'YYYY') + ) expat_allow ON ( expat_allow.per_id_attrib = p.per_id ) + WHERE + EXISTS ( + SELECT + 1 + FROM + mv_entities e2 + WHERE + e2.is_delegation = 'Y' + AND e2.org_id = e.main_org_id + ) + AND ( p.statutory_link_code IN ( 'CA', 'CB', 'FP', 'FS', 'TP', + 'TE' ) + OR p.statutory_link_code IS NULL ) + AND a.start_date <= TO_DATE('31-DEC-' || EXTRACT(YEAR FROM sysdate), + 'DD-MON-YYYY') + AND a.end_date >= trunc(sysdate, 'YYYY') + AND NOT EXISTS ( -- remove the create allowances, we need to filter by the travel,storage acomodation + SELECT + 1 + FROM + posting_allowances_treated aa + WHERE + aa.per_id = p.per_id + AND aa.delegation_org_id = e.main_org_id + AND aa.exercise_year = EXTRACT(YEAR FROM sysdate) + AND nvl(aa.expatriation_allowance_date_from, TO_DATE('01-JAN-1900', 'DD-MON-YYYY')) = expat_allow.date_from + AND nvl(aa.expatriation_allowance_date_to, TO_DATE('01-JAN-1900', 'DD-MON-YYYY')) = expat_allow.date_to + ) + +]]> +true + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +record_key +VARCHAR2 (48 BYTE) +record_key +to_char(a.soj_id)||to_char(expat_allow.date_from,'YYYYMMDD') +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +NUMBER (10) +soj_id +false +0479C048-65F0-1624-2C01-B438965A2B55 +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +NUMBER (10) +job_id +false +0958C976-A9E4-44F7-4937-E311486C05C1 +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +NUMBER (8) +per_id +false +CE91863E-2C19-A060-7130-B58ADECF4488 +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +VARCHAR2 (255 CHAR) +job_type +false +E4B0D70C-0987-6F5B-5DDE-8FAA0AD5C7CF +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +assign_start_date_to +DATE +assign_start_date_to +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +assign_end_date_to +DATE +assign_end_date_to +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +no_sysper +VARCHAR2 +no_sysper +NULL +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +title +VARCHAR2 +title +NULL +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +surname +VARCHAR2 (255 CHAR) +surname +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +genre +VARCHAR2 (1 CHAR) +genre +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +userid +VARCHAR2 +userid +NULL +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +moniker +VARCHAR2 +moniker +NULL +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +domain +VARCHAR2 +domain +NULL +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +display_name +VARCHAR2 (511 CHAR) +display_name +p.last_name||' '||p.first_name +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +NUMBER (10) +jcx_id +false +06B86102-59C1-D173-B889-DF23EDE0D8F9 +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +assign_start_date +DATE +assign_start_date +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +assign_end_date +DATE +assign_end_date +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +lst_cd +VARCHAR2 (3 CHAR) +lst_cd +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +lst_code +VARCHAR2 (2000 CHAR) +lst_code +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +lst_beg_date +VARCHAR2 +lst_beg_date +NULL +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:42:24 UTC +eRights +true +false +lst_as_date +UNKNOWN +lst_as_date +NULL +false + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +lst_end_date +VARCHAR2 +lst_end_date +NULL +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +cgr_cd +VARCHAR2 +cgr_cd +NULL +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +NUMBER (10) +org_id +false +83150B1B-A6E0-3EB4-3C24-DA77824D2EBF +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +NUMBER (10) +main_org_id +false +92938513-F02F-FFA5-98DF-D1A007A58C9E +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +VARCHAR2 (500 BYTE) +org_name +false +725E372D-B0CD-33AE-EDD3-E3F37521D3F1 +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +VARCHAR2 (60 CHAR) +org_cd +false +7F509BBA-9C78-5A54-B4C7-AC72F920E407 +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +VARCHAR2 (400 CHAR) +org_desc +false +179239F7-999C-CA8D-8946-0C4F3EFCF5B4 +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +NUMBER (8) +tor_id +false +A69CC982-1BCE-6779-3F2D-39A8BA3898AB +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +VARCHAR2 (400 CHAR) +typeofentity_name +false +FFEA41DC-24BB-31A9-4A31-0A4010F86C87 +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +NUMBER (10) +del_id +false +B0153DA7-5F9D-1F69-F1C5-5CA341E82C28 +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +VARCHAR2 (1003 BYTE) +delegation_name +false +FC826E5D-FFB7-61AA-BED2-3865E87564C9 +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +VARCHAR2 (1 BYTE) +responsible +false +87247DA6-E07F-7206-7888-902E7A48900C +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +VARCHAR2 (1 BYTE) +head_of_entity +false +84BE5411-F82C-5C93-A0DB-D954E81CDA08 +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +job_city_code +VARCHAR2 (3 CHAR) +job_city_code +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +job_city_name +VARCHAR2 (60 CHAR) +job_city_name +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +job_country_code +VARCHAR2 (3 CHAR) +job_country_code +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +job_country_name +VARCHAR2 (200 CHAR) +job_country_name +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +VARCHAR2 (20 BYTE) +iata_code +false +036753D1-76ED-6481-2335-3A8B6A4F8CE6 +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +delegation_org_id +NUMBER (10) +delegation_org_id +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +expatration_allowance_date_from +DATE +expatration_allowance_date_from +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +expatration_allowance_date_to +DATE +expatration_allowance_date_to +false +5D8AD5F9-CD93-5995-F129-2F2BF9B53204 + + + + +true +ERIGHTS +V_STAFFMEMBERS +true + + +true +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +true +ERIGHTS +MV_JOBS_HIST_EEAS + + +true +ERIGHTS +MV_ENTITIES + + +true +ERIGHTS +AIRPORT_CITIES + + +SOJ_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +JOB_ID +ERIGHTS +MV_JOBS_HIST_EEAS + + +PER_ID +ERIGHTS +V_STAFFMEMBERS + + +JOB_TYPE +ERIGHTS +MV_JOBS_HIST_EEAS + + +JCX_ID +ERIGHTS +MV_JOBS_HIST_EEAS + + +ORG_ID +ERIGHTS +MV_ENTITIES + + +MAIN_ORG_ID +ERIGHTS +MV_ENTITIES + + +ORG_NAME +ERIGHTS +MV_ENTITIES + + +ORG_CD +ERIGHTS +MV_ENTITIES + + +ORG_DESC +ERIGHTS +MV_ENTITIES + + +TOR_ID +ERIGHTS +MV_ENTITIES + + +TYPEOFENTITY_NAME +ERIGHTS +MV_ENTITIES + + +DEL_ID +ERIGHTS +MV_ENTITIES + + +DELEGATION_NAME +ERIGHTS +MV_ENTITIES + + +RESPONSIBLE +ERIGHTS +MV_JOBS_HIST_EEAS + + +HEAD_OF_ENTITY +ERIGHTS +MV_JOBS_HIST_EEAS + + +IATA_CODE +ERIGHTS +AIRPORT_CITIES + + +true +ERIGHTS +MV_PERSON_RELATIVES_RIGHTS + + +true +ERIGHTS +POSTING_ALLOWANCES_TREATED + + +JOB_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +JCX_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +LOCATION_CITY_CODE +ERIGHTS +MV_JOBS_HIST_EEAS + + +LOCATION_COUNTRY_CODE +ERIGHTS +MV_JOBS_HIST_EEAS + + +START_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +EXERCISE_YEAR +ERIGHTS +POSTING_ALLOWANCES_TREATED + + +RGT_ID +ERIGHTS +MV_PERSON_RELATIVES_RIGHTS + + +STATUTORY_LINK_CODE +ERIGHTS +V_STAFFMEMBERS + + +END_DATE +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +COUNTRY_CODE +ERIGHTS +AIRPORT_CITIES + + +PER_ID +ERIGHTS +POSTING_ALLOWANCES_TREATED + + +EXPATRIATION_ALLOWANCE_DATE_FROM +ERIGHTS +POSTING_ALLOWANCES_TREATED + + +DATE_TO +ERIGHTS +MV_PERSON_RELATIVES_RIGHTS + + +DELEGATION_ORG_ID +ERIGHTS +POSTING_ALLOWANCES_TREATED + + +CITY_CODE +ERIGHTS +AIRPORT_CITIES + + +LAST_NAME +ERIGHTS +V_STAFFMEMBERS + + +PER_ID +ERIGHTS +MV_ASSIGNMENTS_HIST_EEAS + + +DATE_FROM +ERIGHTS +MV_PERSON_RELATIVES_RIGHTS + + +IS_DELEGATION +ERIGHTS +MV_ENTITIES + + +FIRST_NAME +ERIGHTS +V_STAFFMEMBERS + + +LOCATION_CITY_NAME +ERIGHTS +MV_JOBS_HIST_EEAS + + +GENDER +ERIGHTS +V_STAFFMEMBERS + + +RTT_ID_TYPE +ERIGHTS +MV_PERSON_RELATIVES_RIGHTS + + +ORG_ID +ERIGHTS +MV_JOBS_HIST_EEAS + + +PER_ID_ATTRIB +ERIGHTS +MV_PERSON_RELATIVES_RIGHTS + + +STATUTORY_LINK_DESC +ERIGHTS +V_STAFFMEMBERS + + +LOCATION_COUNTRY_NAME +ERIGHTS +MV_JOBS_HIST_EEAS + + +EXPATRIATION_ALLOWANCE_DATE_TO +ERIGHTS +POSTING_ALLOWANCES_TREATED + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/63FAE3F3-D55B-B2FB-7AA3-E26233F1E38B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/63FAE3F3-D55B-B2FB-7AA3-E26233F1E38B.xml new file mode 100644 index 0000000..135c1ab --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/63FAE3F3-D55B-B2FB-7AA3-E26233F1E38B.xml @@ -0,0 +1,122 @@ + + +ERIGHTS-TEST +ERIGHTS +V_AIRPORT_CITIES +walloar +2022-07-19 13:44:13 UTC +eRights +37F497CD-EF97-7750-355C-988B43ADF803 +true + + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +IATA_CODE +VARCHAR2 (3 BYTE) +IATA_CODE +false +808EB0BA-5965-0E2C-BF26-88AA735F1844 +63FAE3F3-D55B-B2FB-7AA3-E26233F1E38B + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +AIRPORT_NAME +VARCHAR2 (250 BYTE) +AIRPORT_NAME +false +F4DDF801-B826-7588-BF64-B7EAAAF885BF +63FAE3F3-D55B-B2FB-7AA3-E26233F1E38B + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +LOCATION_NAME +VARCHAR2 (250 BYTE) +LOCATION_NAME +false +366F62E1-689C-9765-F170-CA66CED91485 +63FAE3F3-D55B-B2FB-7AA3-E26233F1E38B + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +COUNTRY_CODE +VARCHAR2 (12 BYTE) +COUNTRY_CODE +false +25EF7A76-F183-3FAB-0B3A-0D9223B4AEFB +63FAE3F3-D55B-B2FB-7AA3-E26233F1E38B + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +CITY_CODE +VARCHAR2 (12 BYTE) +CITY_CODE +false +6F932B42-0350-B75C-2312-C594D883BBB3 +63FAE3F3-D55B-B2FB-7AA3-E26233F1E38B + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +DESCRIPTION_EN +VARCHAR2 (240 BYTE) +DESCRIPTION_EN +false +878355A5-1FBA-3593-AD50-EFD35789B697 +63FAE3F3-D55B-B2FB-7AA3-E26233F1E38B + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +CD_ISO_A2 +VARCHAR2 (8 BYTE) +CD_ISO_A2 +false +323B5191-360C-2233-C6FA-D651622B30A2 +63FAE3F3-D55B-B2FB-7AA3-E26233F1E38B + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml new file mode 100644 index 0000000..fbcd402 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/73DB7963-4431-C4C4-5300-393B221A8121.xml @@ -0,0 +1,336 @@ + + +ERIGHTS-TEST +ERIGHTS +V_PEOPLE +walloar +2021-03-02 08:04:44 UTC +eRights +true + +true + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PER_ID +NUMBER (8) +PER_ID +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +TITLE +VARCHAR2 (3 CHAR) +TITLE +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +FIRST_NAME +VARCHAR2 (255 CHAR) +FIRST_NAME +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +LAST_NAME +VARCHAR2 (255 CHAR) +LAST_NAME +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +GENDER +VARCHAR2 (1 CHAR) +GENDER +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +BIRTH_CITY +VARCHAR2 (70 CHAR) +BIRTH_CITY +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +BIRTH_COUNTRY_CODE +VARCHAR2 (108 BYTE) +BIRTH_COUNTRY_CODE +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PRIVATE_EMAIL +VARCHAR2 (320 CHAR) +PRIVATE_EMAIL +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +DATE_OF_BIRTH +DATE +DATE_OF_BIRTH +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PROFESSIONAL_EMAIL +VARCHAR2 (4000 BYTE) +PROFESSIONAL_EMAIL +false +73DB7963-4431-C4C4-5300-393B221A8121 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +FIRST_NATIONALITY_COUNTRY_CODE +VARCHAR2 (3 CHAR) +FIRST_NATIONALITY_COUNTRY_CODE +false +73DB7963-4431-C4C4-5300-393B221A8121 + + + + +true +ERIGHTS +MV_PERSONS_HIST_COM + + +true +ERIGHTS +MV_EMAILS + + +true +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_EEAS + + +TITLE +ERIGHTS +MV_PERSONS_HIST_COM + + +SURNAME +ERIGHTS +MV_PERSONS_HIST_EEAS + + +FIRST_NAME +ERIGHTS +MV_PERSONS_HIST_COM + + +SURNAME +ERIGHTS +MV_PERSONS_HIST_COM + + +EMAIL +ERIGHTS +MV_EMAILS + + +FIRST_NAME +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_COM + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_COM + + +PER_ID +ERIGHTS +MV_PERSONS_HIST_COM + + +GENRE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PER_ID +ERIGHTS +MV_EMAILS + + +PER_ID +ERIGHTS +MV_PERSONS_HIST_EEAS + + +GENRE +ERIGHTS +MV_PERSONS_HIST_COM + + +TITLE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_EEAS + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml new file mode 100644 index 0000000..1da5e70 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/7E714083-33D9-F3AC-7F12-2D97828BC2A1.xml @@ -0,0 +1,307 @@ + + +ERIGHTS-TEST +ERIGHTS +V_COUNTRIES +walloar +2021-03-02 08:04:44 UTC +eRights +true + +true + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +COUNTRY_CODE +VARCHAR2 (12 BYTE) +COUNTRY_CODE +false +1D4A1338-265D-B794-5894-D9F92D3F7ED4 +7E714083-33D9-F3AC-7F12-2D97828BC2A1 + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +CD_ISO_A2 +VARCHAR2 (8 BYTE) +CD_ISO_A2 +false +323B5191-360C-2233-C6FA-D651622B30A2 +7E714083-33D9-F3AC-7F12-2D97828BC2A1 + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +CD_ISO_N3 +NUMBER +CD_ISO_N3 +false +E525A5AB-0BAD-94BA-DB1F-C8F4F3625467 +7E714083-33D9-F3AC-7F12-2D97828BC2A1 + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +NAME_EN +VARCHAR2 (800 BYTE) +NAME_EN +false +1922F135-203C-5CB0-49C0-FE4EC144A172 +7E714083-33D9-F3AC-7F12-2D97828BC2A1 + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +LONG_NAME_EN +VARCHAR2 (800 BYTE) +LONG_NAME_EN +false +C371C0A1-7341-A8B8-66B3-B65465539020 +7E714083-33D9-F3AC-7F12-2D97828BC2A1 + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +NAME_FR +VARCHAR2 (800 BYTE) +NAME_FR +false +553B1E65-AAD9-78EB-9467-EF0257D707A8 +7E714083-33D9-F3AC-7F12-2D97828BC2A1 + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +LONG_NAME_FR +VARCHAR2 (1 BYTE) +LONG_NAME_FR +false +20EA3310-0A06-065C-14D3-22E04071AB91 +7E714083-33D9-F3AC-7F12-2D97828BC2A1 + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +EU_STATE +VARCHAR2 (240 BYTE) +EU_STATE +false +37A15AE8-76CD-A57C-45A4-AF52D7246146 +7E714083-33D9-F3AC-7F12-2D97828BC2A1 + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +CAPITAL +VARCHAR2 (20 BYTE) +CAPITAL +false +2D149952-90A3-470A-CBCA-C9C50BC0EC9F +7E714083-33D9-F3AC-7F12-2D97828BC2A1 + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +COUNTRY_PHONE_CODE +VARCHAR2 (8 BYTE) +COUNTRY_PHONE_CODE +false +618DB82F-A14C-3FC2-61BE-03DFE0114333 +7E714083-33D9-F3AC-7F12-2D97828BC2A1 + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +CONTINENT_CODE +CHAR (1 BYTE) +CONTINENT_CODE +false +936ADD2B-E0A7-7BDA-2943-E5251AD94E0D +7E714083-33D9-F3AC-7F12-2D97828BC2A1 + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +STATUS +VARCHAR2 (12 BYTE) +STATUS +false +DCFAA63A-C6AB-1748-373D-141C96604942 +7E714083-33D9-F3AC-7F12-2D97828BC2A1 + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +CURRENCY_CODE +VARCHAR2 (240 BYTE) +CURRENCY_CODE +false +DEF6306D-7B96-A1C1-075B-6BC5F7331CDC +7E714083-33D9-F3AC-7F12-2D97828BC2A1 + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +CURRENCY_NAME +VARCHAR2 (240 BYTE) +CURRENCY_NAME +false +7E714083-33D9-F3AC-7F12-2D97828BC2A1 + + + + +true +ERIGHTS +MV_COUNTRIES + + +COUNTRY_CODE +ERIGHTS +MV_COUNTRIES + + +CD_ISO_A2 +ERIGHTS +MV_COUNTRIES + + +CD_ISO_N3 +ERIGHTS +MV_COUNTRIES + + +NAME_EN +ERIGHTS +MV_COUNTRIES + + +LONG_NAME_EN +ERIGHTS +MV_COUNTRIES + + +NAME_FR +ERIGHTS +MV_COUNTRIES + + +LONG_NAME_FR +ERIGHTS +MV_COUNTRIES + + +EU_STATE +ERIGHTS +MV_COUNTRIES + + +CAPITAL +ERIGHTS +MV_COUNTRIES + + +COUNTRY_PHONE_CODE +ERIGHTS +MV_COUNTRIES + + +CONTINENT_CODE +ERIGHTS +MV_COUNTRIES + + +STATUS +ERIGHTS +MV_COUNTRIES + + +CURRENCY_CODE +ERIGHTS +MV_COUNTRIES + + +CURRENCY_NAME +ERIGHTS +MV_COUNTRIES + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/827B3DAB-CAF8-FA29-99D4-BA5EC650503C.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/827B3DAB-CAF8-FA29-99D4-BA5EC650503C.xml new file mode 100644 index 0000000..7a04136 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/827B3DAB-CAF8-FA29-99D4-BA5EC650503C.xml @@ -0,0 +1,696 @@ + + +ERIGHTS-TEST +ERIGHTS +V_POSTING_ALLOWANCES +walloar +2022-10-25 07:18:24 UTC +eRights +CDFA708B-FF48-F6DB-AE50-29416C7DB660 +true + + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +POSTING_ALLOWANCE_ID +NUMBER +POSTING_ALLOWANCE_ID +false +1BD2126C-A102-61E2-3F54-8CFF00599F9A +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PER_ID +NUMBER +PER_ID +false +DF217247-D96B-E35A-8D99-DA7EE99DB683 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +EXERCISE_YEAR +NUMBER (4) +EXERCISE_YEAR +false +D4820BA6-97BD-42CC-5937-328B4244F540 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +POSTING_ALLOWANCE_NUMBER +NUMBER +POSTING_ALLOWANCE_NUMBER +false +E6ECDE5B-08AB-810B-81BE-0C3B98BA68CF +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +POSTING_ALLOWANCE_STRING_ID +VARCHAR2 (100 CHAR) +POSTING_ALLOWANCE_STRING_ID +false +B8FE21F8-EE7D-B808-F90F-D0E017C4C441 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +POSTING_ALLOWANCE_TYPE +VARCHAR2 (20 CHAR) +POSTING_ALLOWANCE_TYPE +false +F115E6D1-7E38-DAB6-D56D-1C963E28CA2A +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +POSTING_ALLOWANCE_REQ_TYPE +VARCHAR2 (20 CHAR) +POSTING_ALLOWANCE_REQ_TYPE +false +B4624B8B-F3AF-F07E-782D-DC9F6B565599 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PARENT_POSTING_ALLOWANCE_ID +NUMBER +PARENT_POSTING_ALLOWANCE_ID +false +ECDA98BA-1456-347D-021B-862984949BD4 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +COMMENTS +VARCHAR2 (4000 CHAR) +COMMENTS +false +57C0C06F-FE62-84AC-B250-03856BCFA00B +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +OUTGOING_TRIP_AMOUNT +NUMBER +OUTGOING_TRIP_AMOUNT +false +107A2F83-44CE-35C4-8B56-84E1B33D6176 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +OUTGOING_TRIP_AMOUNT_CURRENCY +VARCHAR2 (3 CHAR) +OUTGOING_TRIP_AMOUNT_CURRENCY +false +792AF01E-8803-603D-CEB1-F72BB67EA0EC +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +RETURN_TRIP_AMOUNT +NUMBER +RETURN_TRIP_AMOUNT +false +31556FF3-C5F2-6725-F7EA-FBA3C2D8B7C9 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +RETURN_TRIP_AMOUNT_CURRENCY +VARCHAR2 (3 CHAR) +RETURN_TRIP_AMOUNT_CURRENCY +false +24832838-F25C-5519-623F-B8D50E522982 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +CALC_TOTAL_AMOUNT +NUMBER +CALC_TOTAL_AMOUNT +false +C11290E3-4CB5-9EB8-4793-E17C9519C51C +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +CALC_TOTAL_AMOUNT_CURRENCY +VARCHAR2 (3 CHAR) +CALC_TOTAL_AMOUNT_CURRENCY +false +C02CFA94-40C4-73B3-3668-491903396B71 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +TOTAL_AMOUNT +NUMBER +TOTAL_AMOUNT +false +C52D648D-1232-940A-8E14-F0B1110AB2A6 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +TOTAL_AMOUNT_CURRENCY +VARCHAR2 (3 CHAR) +TOTAL_AMOUNT_CURRENCY +false +7521C23A-EDE9-3B32-CA9C-D6AB6DD3EABB +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PAYMENT_PERIOD_YEAR +NUMBER (4) +PAYMENT_PERIOD_YEAR +false +CE8BB00E-EAEE-8AFD-7BC6-24301E79C664 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PAYMENT_PERIOD_MONTH +NUMBER (2) +PAYMENT_PERIOD_MONTH +false +FFE83F2B-6B3C-EAF0-2D95-0218C4A9445C +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PAYMENT_REFERENCE +VARCHAR2 (200 CHAR) +PAYMENT_REFERENCE +false +7DBA6A3E-A76C-B577-0596-27534A350130 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PAYMENT_STATE +VARCHAR2 (50 BYTE) +PAYMENT_STATE +false +DC836F8C-0760-7ED2-3D66-81F59794AEC1 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ASSIGNMENT_CITY_CODE +VARCHAR2 (3 BYTE) +ASSIGNMENT_CITY_CODE +false +24D5663C-8A55-31D8-B54B-D7EFB8AE5295 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ASSIGNMENT_COUNTRY_CODE +VARCHAR2 (3 BYTE) +ASSIGNMENT_COUNTRY_CODE +false +1F515C8D-E544-3509-A5A9-71FE47635C6F +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ASSIGNMENT_CITY_NAME +VARCHAR2 (200 BYTE) +ASSIGNMENT_CITY_NAME +false +70666BE9-2532-3CCE-7258-7BDF71828D91 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ASSIGNMENT_COUNTRY_NAME +VARCHAR2 (3 BYTE) +ASSIGNMENT_COUNTRY_NAME +false +CDFE8BED-910B-791C-63E8-15AD3D62D9C7 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ASSIGNMENT_IATA_CODE +VARCHAR2 (3 BYTE) +ASSIGNMENT_IATA_CODE +false +5C49D1F8-D956-EAD3-FF5E-16D4FB7615C4 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORIGIN_CITY_CODE +VARCHAR2 (3 BYTE) +ORIGIN_CITY_CODE +false +5713A2F4-7324-5125-0AC1-10B69361612D +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORIGIN_COUNTRY_CODE +VARCHAR2 (200 BYTE) +ORIGIN_COUNTRY_CODE +false +2E59253B-6784-4FE2-06AF-AE042FFF35DA +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORIGIN_CITY_NAME +VARCHAR2 (3 BYTE) +ORIGIN_CITY_NAME +false +857C3255-64BB-0B6D-32DD-6AB97E0683CE +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORIGIN_COUNTRY_NAME +VARCHAR2 (3 BYTE) +ORIGIN_COUNTRY_NAME +false +F5D06E72-28C2-3FC0-3A86-5A704305BE50 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORIGIN_IATA_CODE +VARCHAR2 (3 BYTE) +ORIGIN_IATA_CODE +false +7816B33B-4878-922C-A4B8-8F2D67F576A2 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +RECRUITMENT_CITY_CODE +VARCHAR2 (200 BYTE) +RECRUITMENT_CITY_CODE +false +1023ADE7-1660-7FD5-0634-EE9A8A1F5660 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +RECRUITMENT_COUNTRY_CODE +VARCHAR2 (3 BYTE) +RECRUITMENT_COUNTRY_CODE +false +88C0A813-8748-D4E5-DE41-767D364B3DFC +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +RECRUITMENT_CITY_NAME +RAW (16) +RECRUITMENT_CITY_NAME +false +B0F8C9E0-83E4-2151-5E46-227414399D93 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +RECRUITMENT_COUNTRY_NAME +VARCHAR2 (16 CHAR) +RECRUITMENT_COUNTRY_NAME +false +9875159A-A47D-A5E2-2412-4C87DBA7E545 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +RECRUITMENT_IATA_CODE +VARCHAR2 (20 BYTE) +RECRUITMENT_IATA_CODE +false +7D2B8F3F-52E5-9320-5333-867F352639B8 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +SM_ID +NUMBER +SM_ID +false +9A1731F8-D43D-440B-CFB0-C14587148779 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +STATE +TIMESTAMP +STATE +false +8FA4B51D-02A2-9072-81A7-A66CF3C97B7B +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +POSTING_ALLOWANCE_DISCRIMINATORY_TYPE +NUMBER +POSTING_ALLOWANCE_DISCRIMINATORY_TYPE +false +FE21533F-EFD0-91DB-4961-EE05DB1FA1CC +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +CREATED_BY +TIMESTAMP +CREATED_BY +false +D56E9331-6EE7-4309-D1C0-51984758DD81 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +CREATED_AT +NUMBER (10) +CREATED_AT +false +8DFB631B-FEC7-0406-BD57-ABDE28F02484 +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +UPDATED_BY +NUMBER +UPDATED_BY +false +EC5DDE1E-62D0-254D-8268-A6E098A5369B +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +UPDATED_AT +CHAR (1 BYTE) +UPDATED_AT +false +BDD3D7F7-A511-2A68-1602-E782FA2F17CF +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +DELEGATION_ORG_ID +NUMBER (10) +DELEGATION_ORG_ID +false +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +SPOUSE_PER_ID +NUMBER +SPOUSE_PER_ID +false +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +DOUBLE_POSTING +CHAR (1 BYTE) +DOUBLE_POSTING +false +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +FIRST_NATIONALITY_COUNTRY_CODE +VARCHAR2 (3 CHAR) +FIRST_NATIONALITY_COUNTRY_CODE +false +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +LAST_CHILD_POSTING_ALLOWANCE_ID +NUMBER +LAST_CHILD_POSTING_ALLOWANCE_ID +false +827B3DAB-CAF8-FA29-99D4-BA5EC650503C + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/92075C0F-B231-1CD6-B5C1-7984EDA16A6F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/92075C0F-B231-1CD6-B5C1-7984EDA16A6F.xml new file mode 100644 index 0000000..fddd559 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/92075C0F-B231-1CD6-B5C1-7984EDA16A6F.xml @@ -0,0 +1,179 @@ + + +ERIGHTS-TEST +ERIGHTS +V_CURRENT_EXERCISE_PERSON_RELATIVES_RIGHTS +walloar +2023-06-15 12:36:23 UTC +eRights +2B5738BD-CA37-FC9F-80D7-47D14B3E4CEE +true + 50 ) ) + AND date_from <= TO_DATE('31-DEC-' || EXTRACT(YEAR FROM sysdate), + 'DD-MON-YYYY') + AND date_to >= trunc(sysdate, 'YYYY') -- Consider present and future allowances]]> + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +UNIQ_ID +NUMBER (10) +UNIQ_ID +false +A49C2A2D-71FD-2429-0D44-B1C0D4B2AA84 +92075C0F-B231-1CD6-B5C1-7984EDA16A6F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +PER_ID_ATTRIB +NUMBER (8) +PER_ID_ATTRIB +false +D4315EA8-78CC-E79D-6E89-4512EFA2E11F +92075C0F-B231-1CD6-B5C1-7984EDA16A6F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +NOM_ATTRIB +VARCHAR2 (255 CHAR) +NOM_ATTRIB +false +D60C6C25-8A5D-96D7-2096-835F13A0CC3E +92075C0F-B231-1CD6-B5C1-7984EDA16A6F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +PRENOM_ATTRIB +VARCHAR2 (255 CHAR) +PRENOM_ATTRIB +false +2419F1DE-FF3E-D303-E47A-7AE7914028BD +92075C0F-B231-1CD6-B5C1-7984EDA16A6F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +PER_ID_BENEF +NUMBER (8) +PER_ID_BENEF +false +E27DB334-ECD4-03F8-AD6F-70CAA959E203 +92075C0F-B231-1CD6-B5C1-7984EDA16A6F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +NOM_BENEF +VARCHAR2 (255 CHAR) +NOM_BENEF +false +FB2E8E36-C5C6-B495-51B8-3A1661587E33 +92075C0F-B231-1CD6-B5C1-7984EDA16A6F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +PRENOM_BENEF +VARCHAR2 (255 CHAR) +PRENOM_BENEF +false +5FF0C0E4-1E51-66AF-ED3A-2F8A30202248 +92075C0F-B231-1CD6-B5C1-7984EDA16A6F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +RGT_ID +NUMBER (9) +RGT_ID +false +7EE7583C-7F71-A45F-D2ED-334C5EF65D38 +92075C0F-B231-1CD6-B5C1-7984EDA16A6F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +DROIT_ENG +VARCHAR2 (400 BYTE) +DROIT_ENG +false +AD91E11F-C97D-0C60-4887-A8067F353812 +92075C0F-B231-1CD6-B5C1-7984EDA16A6F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +DATE_FROM +DATE +DATE_FROM +false +A9AB1F27-5FD0-A21B-5C9E-EB5FAC394810 +92075C0F-B231-1CD6-B5C1-7984EDA16A6F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +DATE_TO +DATE +DATE_TO +false +B5AD4DB4-7A0E-9204-3A9E-CD1065024358 +92075C0F-B231-1CD6-B5C1-7984EDA16A6F + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/97C3C237-BBD4-562C-AD94-BB4F5E032279.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/97C3C237-BBD4-562C-AD94-BB4F5E032279.xml new file mode 100644 index 0000000..e2658d4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/97C3C237-BBD4-562C-AD94-BB4F5E032279.xml @@ -0,0 +1,151 @@ + + +ERIGHTS-TEST +ERIGHTS +V_PLACES_OF_ORIGIN +walloar +2022-03-18 10:16:53 UTC +eRights +67A4C6F5-FF3A-63C1-33DA-7D06E6D94D95 +true + + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PER_ID +NUMBER (8) +PER_ID +false +97C3C237-BBD4-562C-AD94-BB4F5E032279 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PLACE_OF_ORIGIN +VARCHAR2 (240 CHAR) +PLACE_OF_ORIGIN +false +97C3C237-BBD4-562C-AD94-BB4F5E032279 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +COUNTRY_CODE +VARCHAR2 (3 CHAR) +COUNTRY_CODE +false +97C3C237-BBD4-562C-AD94-BB4F5E032279 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +COUNTRY_OF_ORIGIN +VARCHAR2 (800 BYTE) +COUNTRY_OF_ORIGIN +false +97C3C237-BBD4-562C-AD94-BB4F5E032279 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +EU_STATE +CHAR (1 BYTE) +EU_STATE +false +97C3C237-BBD4-562C-AD94-BB4F5E032279 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/9962EFF8-E095-5285-C405-790CD3C9DA64.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/9962EFF8-E095-5285-C405-790CD3C9DA64.xml new file mode 100644 index 0000000..c352f10 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/9962EFF8-E095-5285-C405-790CD3C9DA64.xml @@ -0,0 +1,910 @@ + + +ERIGHTS-TEST +ERIGHTS +V_REPORT_POSTING_ALLOWANCES +walloar +2023-02-07 10:46:16 UTC +eRights +2A6662FF-5BD4-46AE-C7A1-78D51C33F1EC +true + + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +POSTING_ALLOWANCE_ID +NUMBER +POSTING_ALLOWANCE_ID +false +1BD2126C-A102-61E2-3F54-8CFF00599F9A +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PER_ID +NUMBER +PER_ID +false +DF217247-D96B-E35A-8D99-DA7EE99DB683 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +EXERCISE_YEAR +NUMBER (4) +EXERCISE_YEAR +false +D4820BA6-97BD-42CC-5937-328B4244F540 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +POSTING_ALLOWANCE_NUMBER +NUMBER +POSTING_ALLOWANCE_NUMBER +false +E6ECDE5B-08AB-810B-81BE-0C3B98BA68CF +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +POSTING_ALLOWANCE_STRING_ID +VARCHAR2 (100 CHAR) +POSTING_ALLOWANCE_STRING_ID +false +B8FE21F8-EE7D-B808-F90F-D0E017C4C441 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +POSTING_ALLOWANCE_TYPE +VARCHAR2 (20 CHAR) +POSTING_ALLOWANCE_TYPE +false +F115E6D1-7E38-DAB6-D56D-1C963E28CA2A +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +POSTING_ALLOWANCE_REQ_TYPE +VARCHAR2 (20 CHAR) +POSTING_ALLOWANCE_REQ_TYPE +false +B4624B8B-F3AF-F07E-782D-DC9F6B565599 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PARENT_POSTING_ALLOWANCE_ID +NUMBER +PARENT_POSTING_ALLOWANCE_ID +false +ECDA98BA-1456-347D-021B-862984949BD4 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +COMMENTS +VARCHAR2 (4000 CHAR) +COMMENTS +false +57C0C06F-FE62-84AC-B250-03856BCFA00B +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +OUTGOING_TRIP_AMOUNT +NUMBER +OUTGOING_TRIP_AMOUNT +false +107A2F83-44CE-35C4-8B56-84E1B33D6176 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +OUTGOING_TRIP_AMOUNT_CURRENCY +VARCHAR2 (3 CHAR) +OUTGOING_TRIP_AMOUNT_CURRENCY +false +792AF01E-8803-603D-CEB1-F72BB67EA0EC +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +RETURN_TRIP_AMOUNT +NUMBER +RETURN_TRIP_AMOUNT +false +31556FF3-C5F2-6725-F7EA-FBA3C2D8B7C9 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +RETURN_TRIP_AMOUNT_CURRENCY +VARCHAR2 (3 CHAR) +RETURN_TRIP_AMOUNT_CURRENCY +false +24832838-F25C-5519-623F-B8D50E522982 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +CALC_TOTAL_AMOUNT +NUMBER +CALC_TOTAL_AMOUNT +false +C11290E3-4CB5-9EB8-4793-E17C9519C51C +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +CALC_TOTAL_AMOUNT_CURRENCY +VARCHAR2 (3 CHAR) +CALC_TOTAL_AMOUNT_CURRENCY +false +C02CFA94-40C4-73B3-3668-491903396B71 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +TOTAL_AMOUNT +NUMBER +TOTAL_AMOUNT +false +C52D648D-1232-940A-8E14-F0B1110AB2A6 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +TOTAL_AMOUNT_CURRENCY +VARCHAR2 (3 CHAR) +TOTAL_AMOUNT_CURRENCY +false +7521C23A-EDE9-3B32-CA9C-D6AB6DD3EABB +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PAYMENT_PERIOD_YEAR +NUMBER (4) +PAYMENT_PERIOD_YEAR +false +CE8BB00E-EAEE-8AFD-7BC6-24301E79C664 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PAYMENT_PERIOD_MONTH +NUMBER (2) +PAYMENT_PERIOD_MONTH +false +FFE83F2B-6B3C-EAF0-2D95-0218C4A9445C +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PAYMENT_PERIOD +VARCHAR2 (200 CHAR) +PAYMENT_PERIOD +false +7DBA6A3E-A76C-B577-0596-27534A350130 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PAYMENT_REFERENCE +VARCHAR2 (50 BYTE) +PAYMENT_REFERENCE +false +DC836F8C-0760-7ED2-3D66-81F59794AEC1 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PAYMENT_STATE +VARCHAR2 (3 BYTE) +PAYMENT_STATE +false +24D5663C-8A55-31D8-B54B-D7EFB8AE5295 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ASSIGNMENT_CITY_CODE +VARCHAR2 (3 BYTE) +ASSIGNMENT_CITY_CODE +false +1F515C8D-E544-3509-A5A9-71FE47635C6F +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ASSIGNMENT_COUNTRY_CODE +VARCHAR2 (200 BYTE) +ASSIGNMENT_COUNTRY_CODE +false +70666BE9-2532-3CCE-7258-7BDF71828D91 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ASSIGNMENT_CITY_NAME +VARCHAR2 (3 BYTE) +ASSIGNMENT_CITY_NAME +false +CDFE8BED-910B-791C-63E8-15AD3D62D9C7 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ASSIGNMENT_COUNTRY_NAME +VARCHAR2 (3 BYTE) +ASSIGNMENT_COUNTRY_NAME +false +5C49D1F8-D956-EAD3-FF5E-16D4FB7615C4 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ASSIGNMENT_PLACE +VARCHAR2 (3 BYTE) +ASSIGNMENT_PLACE +false +5713A2F4-7324-5125-0AC1-10B69361612D +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ASSIGNMENT_IATA_CODE +VARCHAR2 (200 BYTE) +ASSIGNMENT_IATA_CODE +false +2E59253B-6784-4FE2-06AF-AE042FFF35DA +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORIGIN_CITY_CODE +VARCHAR2 (3 BYTE) +ORIGIN_CITY_CODE +false +857C3255-64BB-0B6D-32DD-6AB97E0683CE +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORIGIN_COUNTRY_CODE +NUMBER (2) +ORIGIN_COUNTRY_CODE +false +F8EAF961-0DF5-C369-C75E-3FECD26AB606 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORIGIN_CITY_NAME +NUMBER (4) +ORIGIN_CITY_NAME +false +67798C16-2369-4DD6-5102-69FD705E4E88 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORIGIN_COUNTRY_NAME +VARCHAR2 (255 BYTE) +ORIGIN_COUNTRY_NAME +false +EA6F6378-3B8B-6A95-29C1-F1236406A2B2 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORIGIN_IATA_CODE +VARCHAR2 (3 BYTE) +ORIGIN_IATA_CODE +false +F5D06E72-28C2-3FC0-3A86-5A704305BE50 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORIGIN_PERIOD_MONTH +VARCHAR2 (3 BYTE) +ORIGIN_PERIOD_MONTH +false +7816B33B-4878-922C-A4B8-8F2D67F576A2 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORIGIN_PERIOD_YEAR +VARCHAR2 (200 BYTE) +ORIGIN_PERIOD_YEAR +false +1023ADE7-1660-7FD5-0634-EE9A8A1F5660 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORIGIN_PLACE_SEARCH +VARCHAR2 (3 BYTE) +ORIGIN_PLACE_SEARCH +false +88C0A813-8748-D4E5-DE41-767D364B3DFC +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORIGIN_PERIOD +RAW (16) +ORIGIN_PERIOD +false +B0F8C9E0-83E4-2151-5E46-227414399D93 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +RECRUITMENT_CITY_CODE +VARCHAR2 (16 CHAR) +RECRUITMENT_CITY_CODE +false +9875159A-A47D-A5E2-2412-4C87DBA7E545 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +RECRUITMENT_COUNTRY_CODE +VARCHAR2 (20 BYTE) +RECRUITMENT_COUNTRY_CODE +false +7D2B8F3F-52E5-9320-5333-867F352639B8 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +RECRUITMENT_CITY_NAME +NUMBER +RECRUITMENT_CITY_NAME +false +9A1731F8-D43D-440B-CFB0-C14587148779 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +RECRUITMENT_COUNTRY_NAME +TIMESTAMP +RECRUITMENT_COUNTRY_NAME +false +8FA4B51D-02A2-9072-81A7-A66CF3C97B7B +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +RECRUITMENT_IATA_CODE +NUMBER +RECRUITMENT_IATA_CODE +false +FE21533F-EFD0-91DB-4961-EE05DB1FA1CC +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +SM_ID +TIMESTAMP +SM_ID +false +D56E9331-6EE7-4309-D1C0-51984758DD81 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +STATE +NUMBER (10) +STATE +false +8DFB631B-FEC7-0406-BD57-ABDE28F02484 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +POSTING_ALLOWANCE_DISCRIMINATORY_TYPE +VARCHAR2 (3 CHAR) +POSTING_ALLOWANCE_DISCRIMINATORY_TYPE +false +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +CREATED_BY +VARCHAR2 (255 CHAR) +CREATED_BY +false +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +CREATED_AT +VARCHAR2 (255 CHAR) +CREATED_AT +false +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +UPDATED_BY +DATE +UPDATED_BY +false +F3506CA3-41D1-A327-FAFF-9D7601C31E77 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +UPDATED_AT +NUMBER +UPDATED_AT +false +EC5DDE1E-62D0-254D-8268-A6E098A5369B +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +DELEGATION_ORG_ID +CHAR (1 BYTE) +DELEGATION_ORG_ID +false +BDD3D7F7-A511-2A68-1602-E782FA2F17CF +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +TITLE +VARCHAR2 (20 BYTE) +TITLE +false +E92E37D3-D20A-C70A-78CD-76205BEC24BA +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +FIRST_NAME +VARCHAR2 (4000 BYTE) +FIRST_NAME +false +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +LAST_NAME +VARCHAR2 (320 CHAR) +LAST_NAME +false +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ASSIGNMENT_START_DATE +VARCHAR2 (255 BYTE) +ASSIGNMENT_START_DATE +false +E640736A-0F13-43B0-2D8F-B6508882C380 +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +SPOUSE_PER_ID +VARCHAR2 (255 BYTE) +SPOUSE_PER_ID +false +202A4103-B39C-7BEA-2C18-C789333E6F7F +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +DOUBLE_POSTING +VARCHAR2 (3 CHAR) +DOUBLE_POSTING +false +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +DUAL_POSTING +VARCHAR2 (20 BYTE) +DUAL_POSTING +false +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PROFESSIONAL_EMAIL +VARCHAR2 (4000 BYTE) +PROFESSIONAL_EMAIL +false +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PRIVATE_EMAIL +VARCHAR2 (320 CHAR) +PRIVATE_EMAIL +false +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ASSIGNMENT_AIRPORT_NAME +VARCHAR2 (255 BYTE) +ASSIGNMENT_AIRPORT_NAME +false +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORIGIN_AIRPORT_NAME +VARCHAR2 (255 BYTE) +ORIGIN_AIRPORT_NAME +false +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +FIRST_NATIONALITY_COUNTRY_CODE +VARCHAR2 (3 CHAR) +FIRST_NATIONALITY_COUNTRY_CODE +false +9962EFF8-E095-5285-C405-790CD3C9DA64 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +ORIGIN_AIRPORT_LOCATION_NAME +VARCHAR2 (250 BYTE) +ORIGIN_AIRPORT_LOCATION_NAME +false +9962EFF8-E095-5285-C405-790CD3C9DA64 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml new file mode 100644 index 0000000..d1ca647 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/9B60C0AF-FC29-38C1-B529-E876BDC1ECAA.xml @@ -0,0 +1,851 @@ + + +ERIGHTS-TEST +ERIGHTS +V_STAFFMEMBERS +walloar +2021-03-02 08:04:44 UTC +eRights +true + +true + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +PER_ID +NUMBER (8) +PER_ID +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +FIRST_NAME +VARCHAR2 (255 CHAR) +FIRST_NAME +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +LAST_NAME +VARCHAR2 (255 CHAR) +LAST_NAME +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +GENDER +VARCHAR2 (1 CHAR) +GENDER +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +EMAIL +VARCHAR2 (4000 BYTE) +EMAIL +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +BIRTH_CITY +VARCHAR2 (70 CHAR) +BIRTH_CITY +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +BIRTH_COUNTRY_CODE +VARCHAR2 (36 BYTE) +BIRTH_COUNTRY_CODE +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +BIRTH_COUNTRY_DESC +VARCHAR2 (800 BYTE) +BIRTH_COUNTRY_DESC +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +RECRUITMENT_CITY +VARCHAR2 (200 CHAR) +RECRUITMENT_CITY +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +RECRUITMENT_COUNTRY +VARCHAR2 (815 BYTE) +RECRUITMENT_COUNTRY +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +ORGANIZATION_NAME +VARCHAR2 (60 CHAR) +ORGANIZATION_NAME +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +ORGANIZATION_CITY +VARCHAR2 (500 CHAR) +ORGANIZATION_CITY +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +ORGANIZATION_COUNTRY +VARCHAR2 (200 CHAR) +ORGANIZATION_COUNTRY +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +ORG_ID +NUMBER +ORG_ID +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +JOB_ID +NUMBER +JOB_ID +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +ASSIGN_START_DATE +DATE +ASSIGN_START_DATE +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +ASSIGN_END_DATE +DATE +ASSIGN_END_DATE +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +ORG_CD +VARCHAR2 (60 CHAR) +ORG_CD +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +PRIVATE_EMAIL +VARCHAR2 (320 CHAR) +PRIVATE_EMAIL +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +PRIVATE_EMAIL_SOURCE +CHAR (7 BYTE) +PRIVATE_EMAIL_SOURCE +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +ORIGIN_CITY +VARCHAR2 (200 CHAR) +ORIGIN_CITY +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +ORIGIN_COUNTRY_CODE +VARCHAR2 (3 CHAR) +ORIGIN_COUNTRY_CODE +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +ORIGIN_COUNTRY_DESC +VARCHAR2 (800 BYTE) +ORIGIN_COUNTRY_DESC +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +STATUTORY_LINK_CODE +VARCHAR2 (3 CHAR) +STATUTORY_LINK_CODE +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + +walloar +2022-07-19 13:44:13 UTC +eRights +true +false +STATUTORY_LINK_DESC +VARCHAR2 (2000 CHAR) +STATUTORY_LINK_DESC +false +9B60C0AF-FC29-38C1-B529-E876BDC1ECAA + + + + +true +ERIGHTS +V_RECRUITMENT_PLACES +true + + +true +ERIGHTS +MV_ENTITIES + + +true +ERIGHTS +MV_COUNTRIES + + +true +ERIGHTS +MV_EMAILS + + +true +ERIGHTS +MV_PERSONS_EEAS + + +true +ERIGHTS +MV_PERSONS_HIST_EEAS + + +true +ERIGHTS +MV_PERSONS_COM + + +true +ERIGHTS +MV_PERSONS_HIST_COM + + +true +ERIGHTS +MV_ENTITIES_HIST_COM + + +true +ERIGHTS +MV_ASSIGNMENTS_COM + + +PER_ID +ERIGHTS +MV_PERSONS_HIST_EEAS + + +JOB_ID +ERIGHTS +MV_PERSONS_COM + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_COM + + +EMAIL +ERIGHTS +MV_PERSONS_EEAS + + +PER_ID +ERIGHTS +MV_PERSONS_COM + + +SURNAME +ERIGHTS +MV_PERSONS_EEAS + + +START_DATE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +ORG_ID +ERIGHTS +MV_PERSONS_COM + + +PER_ID +ERIGHTS +MV_PERSONS_HIST_COM + + +SURNAME +ERIGHTS +MV_PERSONS_COM + + +ORG_CD +ERIGHTS +MV_PERSONS_EEAS + + +JOB_ID +ERIGHTS +MV_PERSONS_EEAS + + +GENRE +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PER_ID +ERIGHTS +MV_PERSONS_EEAS + + +START_DATE +ERIGHTS +MV_PERSONS_HIST_COM + + +RECR_PAY_CD +ERIGHTS +V_RECRUITMENT_PLACES + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_EEAS + + +ASSIGN_START_DATE +ERIGHTS +MV_PERSONS_EEAS + + +END_DATE +ERIGHTS +MV_ASSIGNMENTS_COM + + +COUNTRY_CODE +ERIGHTS +MV_COUNTRIES + + +END_DATE +ERIGHTS +MV_ENTITIES_HIST_COM + + +ENG_COUNTRY +ERIGHTS +MV_ENTITIES_HIST_COM + + +LIEU_RECR +ERIGHTS +V_RECRUITMENT_PLACES + + +ORG_CD +ERIGHTS +MV_PERSONS_COM + + +NAME_EN +ERIGHTS +MV_COUNTRIES + + +ENG_CITY +ERIGHTS +MV_ENTITIES + + +GENRE +ERIGHTS +MV_PERSONS_EEAS + + +PER_ID +ERIGHTS +MV_ASSIGNMENTS_COM + + +FIRST_NAME +ERIGHTS +MV_PERSONS_EEAS + + +FIRST_NAME +ERIGHTS +MV_PERSONS_COM + + +FIRST_NAME +ERIGHTS +MV_PERSONS_HIST_EEAS + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_EEAS + + +ASSIGN_END_DATE +ERIGHTS +MV_PERSONS_EEAS + + +ENG_CITY +ERIGHTS +MV_ENTITIES_HIST_COM + + +START_DATE +ERIGHTS +MV_ASSIGNMENTS_COM + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_COM + + +ORG_ID +ERIGHTS +MV_ENTITIES + + +NAME_EN +ERIGHTS +V_RECRUITMENT_PLACES + + +COUNTRY_OF_BIRTH +ERIGHTS +MV_PERSONS_HIST_COM + + +GENRE +ERIGHTS +MV_PERSONS_COM + + +ORG_ID +ERIGHTS +MV_ENTITIES_HIST_COM + + +PER_ID +ERIGHTS +MV_EMAILS + + +EMAIL +ERIGHTS +MV_EMAILS + + +ENG_COUNTRY +ERIGHTS +MV_ENTITIES + + +FIRST_NAME +ERIGHTS +MV_PERSONS_HIST_COM + + +GENRE +ERIGHTS +MV_PERSONS_HIST_COM + + +PER_ID +ERIGHTS +V_RECRUITMENT_PLACES + + +EMAIL +ERIGHTS +MV_PERSONS_COM + + +ORG_ID +ERIGHTS +MV_PERSONS_EEAS + + +SURNAME +ERIGHTS +MV_PERSONS_HIST_EEAS + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_COM + + +TOJ_CD +ERIGHTS +MV_ASSIGNMENTS_COM + + +SURNAME +ERIGHTS +MV_PERSONS_HIST_COM + + +PLACE_OF_BIRTH +ERIGHTS +MV_PERSONS_EEAS + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/9E80B3BA-1F34-A552-63EF-64DAB0E8D27B.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/9E80B3BA-1F34-A552-63EF-64DAB0E8D27B.xml new file mode 100644 index 0000000..6567036 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/9E80B3BA-1F34-A552-63EF-64DAB0E8D27B.xml @@ -0,0 +1,152 @@ + + +ERIGHTS-TEST +ERIGHTS +V_PERSONS_DATA_FOR_ABAC +walloar +2022-09-01 10:11:41 UTC +eRights +C9674D9D-053F-A6AB-89E3-C4388231D280 +true + + + +walloar +2022-10-07 11:48:49 UTC +eRights +true +false +PER_ID +NUMBER +PER_ID +false +9E80B3BA-1F34-A552-63EF-64DAB0E8D27B + + +walloar +2022-10-07 11:48:49 UTC +eRights +true +false +NUP +VARCHAR2 (10 CHAR) +NUP +false +9E80B3BA-1F34-A552-63EF-64DAB0E8D27B + + +walloar +2022-10-07 11:48:49 UTC +eRights +true +false +BIRTH_NAME +VARCHAR2 (255 CHAR) +BIRTH_NAME +false +9E80B3BA-1F34-A552-63EF-64DAB0E8D27B + + +walloar +2022-10-07 11:48:49 UTC +eRights +true +false +FIRST_NAME +VARCHAR2 (255 CHAR) +FIRST_NAME +false +9E80B3BA-1F34-A552-63EF-64DAB0E8D27B + + +walloar +2022-10-07 11:48:49 UTC +eRights +true +false +ANALYTICAL_CODE +VARCHAR2 (160 BYTE) +ANALYTICAL_CODE +false +9E80B3BA-1F34-A552-63EF-64DAB0E8D27B + + +walloar +2022-10-07 11:48:49 UTC +eRights +true +false +BUDGDEL_ANALYTICAL_CODE +VARCHAR2 (160 BYTE) +BUDGDEL_ANALYTICAL_CODE +false +9E80B3BA-1F34-A552-63EF-64DAB0E8D27B + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/9F9E0F14-3C11-3DDF-EE47-74CEBC606D65.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/9F9E0F14-3C11-3DDF-EE47-74CEBC606D65.xml new file mode 100644 index 0000000..e444f80 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/9F9E0F14-3C11-3DDF-EE47-74CEBC606D65.xml @@ -0,0 +1,319 @@ + + +ERIGHTS-TEST +ERIGHTS +V_EMPTY_FLAT_RATE_OR_SURFACE +walloar +2022-03-18 10:16:53 UTC +eRights +1D16E5BD-AEEA-4548-4C34-2044514A45D8 +true + + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ENTITLMNT_TYPE_ID +NUMBER +ENTITLMNT_TYPE_ID +false +7581330B-DBB8-A809-2C31-BD227628BD2F +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ENTITLMNT_TYPE_CATG_ID +NUMBER +ENTITLMNT_TYPE_CATG_ID +false +96E5F0E6-8974-5F61-7DE6-C723D4652738 +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +MOVEMENT_TYPE_ID +NUMBER +MOVEMENT_TYPE_ID +false +BD27B8CF-9ED8-4223-FDDE-86EDB3F1E555 +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +MOVEMENT_TYPE +VARCHAR2 (33 BYTE) +MOVEMENT_TYPE +false +1348CC3C-17A6-5184-80A1-97B746D20058 +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +MOVEMENT_FILE_ID +NUMBER +MOVEMENT_FILE_ID +false +78343427-25D0-4F26-F7B5-E0718F7EDB6F +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +STATUS +VARCHAR2 (100 CHAR) +STATUS +false +7C52FF29-B899-647D-EFA2-E014E060A1AB +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +DISABLE_REASON +VARCHAR2 (3000 CHAR) +DISABLE_REASON +false +D744C405-D8A4-9F01-1726-5C2D5669E966 +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ENT_TYPE_DEFAULT +CHAR (1 BYTE) +ENT_TYPE_DEFAULT +false +6AE1E046-238E-9C91-40C2-A925B6603E8D +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ENABLE +VARCHAR2 (1 CHAR) +ENABLE +false +3DD5CD33-A637-6EBA-D7EC-4687178AC2BB +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +PER_ID +NUMBER +PER_ID +false +8D1F6CFA-A363-F4F0-7D93-7F631A1EC8D3 +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +CITY_CODE_FROM +VARCHAR2 (3 CHAR) +CITY_CODE_FROM +false +EC0E2785-A1E0-2493-38D6-2ACDA7C8F64A +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +CITY_CODE_TO +VARCHAR2 (3 CHAR) +CITY_CODE_TO +false +FF00B9A6-FFC8-F5BD-FA6C-9DEC706442C3 +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +COUNTRY_CODE_FROM +VARCHAR2 (3 CHAR) +COUNTRY_CODE_FROM +false +B4A97655-07FE-3689-CC8D-CB5E4141D1FC +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +COUNTRY_CODE_TO +VARCHAR2 (3 CHAR) +COUNTRY_CODE_TO +false +D5118C7E-CF2E-E053-0AAE-D96C5BF9213E +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ORG_CD_FROM +VARCHAR2 (255 CHAR) +ORG_CD_FROM +false +606BA6A4-667C-4B43-3E75-E4734018D9D2 +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ORG_CD_TO +VARCHAR2 (255 CHAR) +ORG_CD_TO +false +9971E2F0-2E01-EC3B-4308-8C5E33FE1A04 +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ORG_ID_FROM +NUMBER +ORG_ID_FROM +false +8DDC1AE7-2143-7078-F383-A755A4F86AF9 +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ORG_ID_TO +NUMBER +ORG_ID_TO +false +29F327D5-7A0C-CC9F-3438-4E6A694A7697 +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +FILE_ID +VARCHAR2 (255 CHAR) +FILE_ID +false +EAF2C99C-FAD3-4A14-46A3-71954B67B90C +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ENTITLMNT_MAXS_CAT_CODE +VARCHAR2 (50 BYTE) +ENTITLMNT_MAXS_CAT_CODE +false +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ENTITLMNT_TYPES_CAT_CODE +VARCHAR2 (50 BYTE) +ENTITLMNT_TYPES_CAT_CODE +false +9F9E0F14-3C11-3DDF-EE47-74CEBC606D65 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786.xml new file mode 100644 index 0000000..f57637e --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786.xml @@ -0,0 +1,198 @@ + + +ERIGHTS-TEST +ERIGHTS +V_AIRPORTS +walloar +2023-06-15 12:36:23 UTC +eRights +81102FB4-0E21-665A-4ECF-FF84C44CA349 +true + + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +AIRPORT_STEM_ID +NUMBER +AIRPORT_STEM_ID +false +EBACF000-AB70-D058-0B2C-790E35DF9783 +AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +AIRPORT_ID +NUMBER +AIRPORT_ID +false +39504C8A-B681-D328-82D7-66525C427528 +AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +IATA_CODE +VARCHAR2 (3 BYTE) +IATA_CODE +false +BA9AC5C8-8FE5-2552-B13C-6738CEC59F75 +AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +AIRPORT_NAME +VARCHAR2 (256 BYTE) +AIRPORT_NAME +false +DD2F393A-28B4-FF21-AB90-53F541AA2891 +AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +ACTIVE +CHAR (1 BYTE) +ACTIVE +false +25EC840F-7DFA-3EFE-B78A-AECCCCB6D392 +AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +ARCHIVED +CHAR (1 BYTE) +ARCHIVED +false +00B0E746-2C57-3B45-01C0-2A71CDC9B40A +AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +DELETED +CHAR (1 BYTE) +DELETED +false +D8A703D6-E1DC-1F9D-0CEB-3FAB953E411F +AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +ENTRY_TS +TIMESTAMP +ENTRY_TS +false +C8B61E19-06A5-1E24-F056-26B744058433 +AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +DONE_BY_PER_ID +NUMBER (8) +DONE_BY_PER_ID +false +BE1A3722-3BDF-9344-927C-BB188A5CEE7F +AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +SYSTEM_MESSAGE +VARCHAR2 (100 BYTE) +SYSTEM_MESSAGE +false +19FCF352-7831-5D83-B419-245C4B7D41B3 +AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +REV_MESSAGE +VARCHAR2 (2000 BYTE) +REV_MESSAGE +false +6446657A-6D9F-F984-EFA4-BF927BBA8D11 +AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786 + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +MAX_AIRPORT_ID +NUMBER +MAX_AIRPORT_ID +false +AA2DD562-4F2F-2EC2-5FBE-FA6FF2FDA786 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/B1E69B7C-ECDD-A2C7-613D-D493FECF40BB.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/B1E69B7C-ECDD-A2C7-613D-D493FECF40BB.xml new file mode 100644 index 0000000..360bff4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/B1E69B7C-ECDD-A2C7-613D-D493FECF40BB.xml @@ -0,0 +1,221 @@ + + +ERIGHTS-TEST +ERIGHTS +V_ASSIGNMENTS_HIST_EEAS +walloar +2023-06-15 12:36:23 UTC +eRights +1BAB9CE0-3D21-22E2-98BD-D2BB890F753F +true += enth.start_date + OR asgh.end_date <= enth.end_date ) + )]]> + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +SOJ_ID +NUMBER (10) +SOJ_ID +false +0479C048-65F0-1624-2C01-B438965A2B55 +B1E69B7C-ECDD-A2C7-613D-D493FECF40BB + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +JCX_ID +NUMBER (10) +JCX_ID +false +58D6CEA4-8F85-1587-23B4-A770710C799A +B1E69B7C-ECDD-A2C7-613D-D493FECF40BB + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +JOB_ID +NUMBER (10) +JOB_ID +false +FE0450C8-6F18-0165-9D4B-6D6114D5B2E6 +B1E69B7C-ECDD-A2C7-613D-D493FECF40BB + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +PER_ID +NUMBER (8) +PER_ID +false +C2C26A69-D5B8-5ADF-64CB-1A2D86EF858E +B1E69B7C-ECDD-A2C7-613D-D493FECF40BB + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +TOJ_CD +VARCHAR2 (5 CHAR) +TOJ_CD +false +55368B1F-C264-7EB8-E77D-65A7310F175A +B1E69B7C-ECDD-A2C7-613D-D493FECF40BB + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +JOB_TYPE +VARCHAR2 (255 CHAR) +JOB_TYPE +false +00401CB0-C747-4A14-6944-2E0EE3D5F555 +B1E69B7C-ECDD-A2C7-613D-D493FECF40BB + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +START_DATE +DATE +START_DATE +false +E6708B1F-2511-8013-A432-D6E340439061 +B1E69B7C-ECDD-A2C7-613D-D493FECF40BB + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +END_DATE +DATE +END_DATE +false +A2F366AA-852F-194F-0618-DE4A090635D1 +B1E69B7C-ECDD-A2C7-613D-D493FECF40BB + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +INS_CD +VARCHAR2 (10 CHAR) +INS_CD +false +1107CC84-1B3E-B5FF-1AA0-E60A11FBE9AE +B1E69B7C-ECDD-A2C7-613D-D493FECF40BB + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +CREATION_DATE +DATE +CREATION_DATE +false +B645C6C8-74D6-0F9D-C977-8E6ED011B106 +B1E69B7C-ECDD-A2C7-613D-D493FECF40BB + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +MODIFICATION_DATE +DATE +MODIFICATION_DATE +false +6EF26F7C-AB70-B542-331E-818BFB91091E +B1E69B7C-ECDD-A2C7-613D-D493FECF40BB + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +TYPE_OF_POST +VARCHAR2 (400 CHAR) +TYPE_OF_POST +false +388F417D-79B6-628F-726C-A0558A12AC00 +B1E69B7C-ECDD-A2C7-613D-D493FECF40BB + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +DELEGATION_ORG_ID +NUMBER (10) +DELEGATION_ORG_ID +false +B1E69B7C-ECDD-A2C7-613D-D493FECF40BB + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/B8213540-818B-9650-C338-E25E7B278920.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/B8213540-818B-9650-C338-E25E7B278920.xml new file mode 100644 index 0000000..177f9f4 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/B8213540-818B-9650-C338-E25E7B278920.xml @@ -0,0 +1,451 @@ + + +ERIGHTS-TEST +ERIGHTS +V_EMPTY_FLAT_RATE_ENTITLEMENTS +walloar +2022-03-18 10:16:53 UTC +eRights +CEA6D414-0FCA-8E69-BAE2-7540D5E2515C +true + + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ENTITLMNT_TYPE_ID +NUMBER +ENTITLMNT_TYPE_ID +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ENTITLMNT_TYPE_CATG_ID +NUMBER +ENTITLMNT_TYPE_CATG_ID +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +MOVEMENTYEAR +NUMBER +MOVEMENTYEAR +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +MOVEMENT_TYPE_ID +NUMBER +MOVEMENT_TYPE_ID +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +MOVEMENTTYPE +VARCHAR2 (33 BYTE) +MOVEMENTTYPE +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +MOVEMENTCONTEXT +VARCHAR2 (128 BYTE) +MOVEMENTCONTEXT +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +MOVEMENT_FILE_ID +NUMBER +MOVEMENT_FILE_ID +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +STATUS +VARCHAR2 (100 CHAR) +STATUS +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +DISABLE_REASON +VARCHAR2 (3000 CHAR) +DISABLE_REASON +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ENT_TYPE_DEFAULT +CHAR (1 BYTE) +ENT_TYPE_DEFAULT +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ENABLE +VARCHAR2 (1 CHAR) +ENABLE +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +PER_ID +NUMBER +PER_ID +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +FIRST_NAME +VARCHAR2 (255 CHAR) +FIRST_NAME +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +LAST_NAME +VARCHAR2 (255 CHAR) +LAST_NAME +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +CITY_CODE_FROM +VARCHAR2 (3 CHAR) +CITY_CODE_FROM +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +CITY_CODE_TO +VARCHAR2 (3 CHAR) +CITY_CODE_TO +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +COUNTRY_CODE_FROM +VARCHAR2 (3 CHAR) +COUNTRY_CODE_FROM +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +COUNTRY_CODE_TO +VARCHAR2 (3 CHAR) +COUNTRY_CODE_TO +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +MOVEMENTFROM +VARCHAR2 (1042 BYTE) +MOVEMENTFROM +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +MOVEMENTTO +VARCHAR2 (1042 BYTE) +MOVEMENTTO +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ALLOCATEDTOCURRENT +VARCHAR2 (255 CHAR) +ALLOCATEDTOCURRENT +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ALLOCATEDTOFUTURE +VARCHAR2 (255 CHAR) +ALLOCATEDTOFUTURE +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ORG_ID_FROM +NUMBER +ORG_ID_FROM +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ORG_ID_TO +NUMBER +ORG_ID_TO +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +FILE_ID +VARCHAR2 (255 CHAR) +FILE_ID +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ENTITLMNT_TYPES_CAT_CODE +VARCHAR2 (50 BYTE) +ENTITLMNT_TYPES_CAT_CODE +false +B8213540-818B-9650-C338-E25E7B278920 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +ENTITLMNT_MAXS_CAT_CODE_LIST +VARCHAR2 (32767 BYTE) +ENTITLMNT_MAXS_CAT_CODE_LIST +false +B8213540-818B-9650-C338-E25E7B278920 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/B9602449-AFBF-67AC-B167-8DDF0C1AF1DD.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/B9602449-AFBF-67AC-B167-8DDF0C1AF1DD.xml new file mode 100644 index 0000000..8cf7a49 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/B9602449-AFBF-67AC-B167-8DDF0C1AF1DD.xml @@ -0,0 +1,76 @@ + + +ERIGHTS-TEST +ERIGHTS +V_FUNCTION_CODES +walloar +2022-03-18 10:16:53 UTC +eRights +97A3138A-C860-6D09-05F4-6E713844434B +true + + + +walloar +2022-03-29 16:59:57 UTC +eRights +true +false +FUNCTION_CODE +VARCHAR2 (450 BYTE) +FUNCTION_CODE +false +814F3E7B-9C4C-BAAF-48B6-C3467914F251 +B9602449-AFBF-67AC-B167-8DDF0C1AF1DD + + +walloar +2022-03-29 16:59:57 UTC +eRights +true +false +FUNCTION_DESC_FR +VARCHAR2 (1500 BYTE) +FUNCTION_DESC_FR +false +19FF65AC-ECC8-B14B-E033-7992D9E4FF09 +B9602449-AFBF-67AC-B167-8DDF0C1AF1DD + + +walloar +2022-03-29 16:59:57 UTC +eRights +true +false +FUNCTION_DESC_EN +VARCHAR2 (1500 BYTE) +FUNCTION_DESC_EN +false +C55D783D-D50E-97A0-D661-45E06CB39B78 +B9602449-AFBF-67AC-B167-8DDF0C1AF1DD + + +walloar +2022-03-29 16:59:57 UTC +eRights +true +false +NR_ORDER +NUMBER +NR_ORDER +false +57FB6BA6-7ECA-B757-8AFC-4808DB536816 +B9602449-AFBF-67AC-B167-8DDF0C1AF1DD + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/C67C0F6E-16A2-E1BA-BCBF-FED5B6ED7D46.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/C67C0F6E-16A2-E1BA-BCBF-FED5B6ED7D46.xml new file mode 100644 index 0000000..47de68b --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/C67C0F6E-16A2-E1BA-BCBF-FED5B6ED7D46.xml @@ -0,0 +1,74 @@ + + +ERIGHTS-TEST +ERIGHTS +V_STATUTORY_LINK_CODES +walloar +2022-03-18 10:16:53 UTC +eRights +78A094F1-4E06-EE1E-9460-1F96BD78977F +true + + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +LST_CD +VARCHAR2 (3 CHAR) +LST_CD +false +55F58B99-7F93-544D-FE24-6466848F81B1 +C67C0F6E-16A2-E1BA-BCBF-FED5B6ED7D46 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +EN_NAME +VARCHAR2 (2000 CHAR) +EN_NAME +false +29416D7F-88A3-55E5-7A5D-69B0E642CCC6 +C67C0F6E-16A2-E1BA-BCBF-FED5B6ED7D46 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +FR_NAME +VARCHAR2 (2000 CHAR) +FR_NAME +false +F1D525A5-E52C-0295-50EA-18E71BFDFA88 +C67C0F6E-16A2-E1BA-BCBF-FED5B6ED7D46 + + +walloar +2022-03-18 10:16:53 UTC +eRights +true +false +DE_NAME +VARCHAR2 (2000 CHAR) +DE_NAME +false +A0F458A4-4505-D2DE-6B61-48CF7024B8C2 +C67C0F6E-16A2-E1BA-BCBF-FED5B6ED7D46 + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml new file mode 100644 index 0000000..e7c4a37 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F.xml @@ -0,0 +1,309 @@ + + +ERIGHTS-TEST +ERIGHTS +V_FAMILY_MEMBERS +walloar +2021-03-02 08:04:44 UTC +eRights +true += 2 THEN + 'Y' + ELSE + 'N' + END more_than_2_years_old, + nvl2(r_houshd_all.per_id_attrib, 'Y', 'N') household_allowance_granted, + CASE + WHEN rel_work_del.delegation_name <> 'HQ' + AND rel_work_del.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END relative_work_in_delegation, + CASE + WHEN ( rel_work_del.delegation_name = 'HQ' + AND rel_work_del.per_id IS NOT NULL ) + OR rel_work_del_com.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END relative_work_in_hq + FROM + mv_family_members m + LEFT JOIN mv_person_relatives_rights r_chld_all ON ( m.per_id = r_chld_all.per_id_attrib + AND m.rel_per_id = r_chld_all.per_id_benef + AND r_chld_all.rgt_id = 1003 + AND r_chld_all.right_pct > 50 + AND trunc(sysdate) BETWEEN r_chld_all.date_from AND r_chld_all.date_to ) + LEFT JOIN mv_person_relatives_rights r_houshd_all ON ( m.per_id = r_houshd_all.per_id_attrib + AND m.per_id = r_houshd_all.per_id_benef + AND r_houshd_all.rgt_id = 1006 + AND trunc(sysdate) BETWEEN r_houshd_all.date_from AND r_houshd_all.date_to + ) + LEFT JOIN mv_persons_eeas rel_work_del ON ( m.rel_per_id = rel_work_del.per_id + AND rel_work_del.lst_cd IN ( 'CA', 'CB', 'FP', 'FS', 'TP', + 'TE' ) ) + LEFT JOIN mv_persons_com rel_work_del_com ON ( m.rel_per_id = rel_work_del_com.per_id + AND rel_work_del_com.lst_cd IN ( 'CA', 'CB', 'FP', 'FS', 'TP', + 'TE' ) )]]> +true + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +FAMILY_MEMBER_ID +VARCHAR2 (51 BYTE) +FAMILY_MEMBER_ID +false +8E53E153-9F19-5529-9963-9C4835F0A05B +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +PER_ID +NUMBER (8) +PER_ID +false +34F40095-DB15-607A-2FF6-A48FD78CDE0D +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +SURNAME +VARCHAR2 (255 CHAR) +SURNAME +false +E66A827C-1B7D-5FFF-9EF4-5185849D6FDC +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +DATE_OF_BIRTH +DATE +DATE_OF_BIRTH +false +CDA57C61-7038-FFEB-822C-100D68E5F96A +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +TRP_CODE +VARCHAR2 (400 BYTE) +TRP_CODE +false +14985099-DAE4-41FA-8370-C838E004A5FA +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +TRP_CD +NUMBER +TRP_CD +false +A0FBA189-622F-6EFE-DFA0-B376C4155B07 +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +REL_PER_ID +NUMBER (8) +REL_PER_ID +false +CFCF8869-BEFA-6411-4536-13BA4AA7880D +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +REL_SURNAME +VARCHAR2 (255 CHAR) +REL_SURNAME +false +2D9B5DB9-AF1E-5DD9-A1A4-7FD6D5B004F1 +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +REL_FIRST_NAME +VARCHAR2 (255 CHAR) +REL_FIRST_NAME +false +E3B38D88-04A1-EA8F-7E16-C2C317EA9FE2 +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +REL_DATE_OF_BIRTH +DATE +REL_DATE_OF_BIRTH +false +E8D48FA0-6DE5-DA1C-4386-50E46B2C2A25 +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +CHILD_ALLOWANCE_GRANTED +VARCHAR2 (1 BYTE) +CHILD_ALLOWANCE_GRANTED +false +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +MORE_THAN_2_YEARS_OLD +CHAR (1 BYTE) +MORE_THAN_2_YEARS_OLD +false +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +HOUSEHOLD_ALLOWANCE_GRANTED +VARCHAR2 (1 BYTE) +HOUSEHOLD_ALLOWANCE_GRANTED +false +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +RELATIVE_WORK_IN_DELEGATION +CHAR (1 BYTE) +RELATIVE_WORK_IN_DELEGATION +false +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +RELATIVE_WORK_IN_HQ +CHAR (1 BYTE) +RELATIVE_WORK_IN_HQ +false +C7B52698-FFA8-E978-E4F3-B37C8FA3BC0F + + + + +true +ERIGHTS +MV_FAMILY_MEMBERS + + +FAMILY_MEMBER_ID +ERIGHTS +MV_FAMILY_MEMBERS + + +PER_ID +ERIGHTS +MV_FAMILY_MEMBERS + + +SURNAME +ERIGHTS +MV_FAMILY_MEMBERS + + +DATE_OF_BIRTH +ERIGHTS +MV_FAMILY_MEMBERS + + +TRP_CODE +ERIGHTS +MV_FAMILY_MEMBERS + + +REL_PER_ID +ERIGHTS +MV_FAMILY_MEMBERS + + +REL_SURNAME +ERIGHTS +MV_FAMILY_MEMBERS + + +REL_FIRST_NAME +ERIGHTS +MV_FAMILY_MEMBERS + + +REL_DATE_OF_BIRTH +ERIGHTS +MV_FAMILY_MEMBERS + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/D19CE763-DA12-FCC3-0A30-00065C82DE9A.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/D19CE763-DA12-FCC3-0A30-00065C82DE9A.xml new file mode 100644 index 0000000..3160b06 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/D19CE763-DA12-FCC3-0A30-00065C82DE9A.xml @@ -0,0 +1,140 @@ + + +ERIGHTS-TEST +ERIGHTS +V_REQUESTS_MILESTONES +walloar +2022-11-11 07:44:41 UTC +eRights +210A4B0C-C9E8-1CFD-0BDF-0E6FD6F89D49 +true + + + +walloar +2023-02-07 10:46:16 UTC +eRights +true +false +REQUEST_ID +NUMBER +REQUEST_ID +false +D19CE763-DA12-FCC3-0A30-00065C82DE9A + + +walloar +2023-02-07 10:46:16 UTC +eRights +true +false +REQUEST_STRING_ID +VARCHAR2 (100 CHAR) +REQUEST_STRING_ID +false +D19CE763-DA12-FCC3-0A30-00065C82DE9A + + +walloar +2023-02-07 10:46:16 UTC +eRights +true +false +STATE +VARCHAR2 (64 BYTE) +STATE +false +D19CE763-DA12-FCC3-0A30-00065C82DE9A + + +walloar +2023-02-07 10:46:16 UTC +eRights +true +false +PREVIOUS_STATE_OCCURENCE +DATE +PREVIOUS_STATE_OCCURENCE +false +D19CE763-DA12-FCC3-0A30-00065C82DE9A + + +walloar +2023-02-07 10:46:16 UTC +eRights +true +false +CURRENT_STATE_OCCURENCE +DATE +CURRENT_STATE_OCCURENCE +false +D19CE763-DA12-FCC3-0A30-00065C82DE9A + + +walloar +2023-02-07 10:46:16 UTC +eRights +true +false +TIME_SPENT +NUMBER +TIME_SPENT +false +D19CE763-DA12-FCC3-0A30-00065C82DE9A + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml new file mode 100644 index 0000000..280e637 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49.xml @@ -0,0 +1,132 @@ + + +ERIGHTS-TEST +ERIGHTS +V_RECRUITMENT_PLACES +walloar +2021-03-02 08:04:44 UTC +eRights +true + +true + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +PER_ID +NUMBER (8) +PER_ID +false +DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +LIEU_RECR +VARCHAR2 (200 CHAR) +LIEU_RECR +false +DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +RECR_PAY_CD +VARCHAR2 (3 CHAR) +RECR_PAY_CD +false +DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49 + + +walloar +2023-06-15 12:36:24 UTC +eRights +true +false +NAME_EN +VARCHAR2 (800 BYTE) +NAME_EN +false +DE23F13D-6EBF-5A8B-24AD-FC8EE006FC49 + + + + +true +ERIGHTS +MV_PERSON_ADDRESS + + +true +ERIGHTS +MV_COUNTRIES + + +PER_ID +ERIGHTS +MV_PERSON_ADDRESS + + +NAME_EN +ERIGHTS +MV_COUNTRIES + + +CITY_NAME +ERIGHTS +MV_PERSON_ADDRESS + + +TADR_CD +ERIGHTS +MV_PERSON_ADDRESS + + +COUNTRY_CODE +ERIGHTS +MV_PERSON_ADDRESS + + +COUNTRY_CODE +ERIGHTS +MV_COUNTRIES + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/E966871E-EF80-88A9-688A-22D077952C5F.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/E966871E-EF80-88A9-688A-22D077952C5F.xml new file mode 100644 index 0000000..d4bcbc3 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/E966871E-EF80-88A9-688A-22D077952C5F.xml @@ -0,0 +1,228 @@ + + +ERIGHTS-TEST +ERIGHTS +V_LIVE_CONNECTIONS +walloar +2023-06-15 12:36:23 UTC +eRights +E2E226EB-6CCB-AB06-0D43-64D0AE8FF232 +true + + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +CONNECTION_STEM_ID +NUMBER +CONNECTION_STEM_ID +false +E966871E-EF80-88A9-688A-22D077952C5F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +CONNECTION_ID +NUMBER +CONNECTION_ID +false +E966871E-EF80-88A9-688A-22D077952C5F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +AIRPORT_STEM_ID_ORG +NUMBER +AIRPORT_STEM_ID_ORG +false +E966871E-EF80-88A9-688A-22D077952C5F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +AIRPORT_STEM_ID_DST +NUMBER +AIRPORT_STEM_ID_DST +false +E966871E-EF80-88A9-688A-22D077952C5F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +PRICE +NUMBER (38, 2) +PRICE +false +E966871E-EF80-88A9-688A-22D077952C5F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +IATA_ZONE +CHAR (2 BYTE) +IATA_ZONE +false +E966871E-EF80-88A9-688A-22D077952C5F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +VALID_FROM +DATE +VALID_FROM +false +E966871E-EF80-88A9-688A-22D077952C5F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +VALID_TO +DATE +VALID_TO +false +E966871E-EF80-88A9-688A-22D077952C5F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +ACTIVE +CHAR (1 BYTE) +ACTIVE +false +E966871E-EF80-88A9-688A-22D077952C5F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +ARCHIVED +CHAR (1 BYTE) +ARCHIVED +false +E966871E-EF80-88A9-688A-22D077952C5F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +DELETED +CHAR (1 BYTE) +DELETED +false +E966871E-EF80-88A9-688A-22D077952C5F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +ENTRY_TS +TIMESTAMP(6) +ENTRY_TS +false +E966871E-EF80-88A9-688A-22D077952C5F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +DONE_BY_PER_ID +NUMBER (8) +DONE_BY_PER_ID +false +E966871E-EF80-88A9-688A-22D077952C5F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +SYSTEM_MESSAGE +VARCHAR2 (100 BYTE) +SYSTEM_MESSAGE +false +E966871E-EF80-88A9-688A-22D077952C5F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +REV_MESSAGE +VARCHAR2 (2000 BYTE) +REV_MESSAGE +false +E966871E-EF80-88A9-688A-22D077952C5F + + +walloar +2023-06-15 12:36:23 UTC +eRights +true +false +MAX_CONNECTION_ID +NUMBER +MAX_CONNECTION_ID +false +E966871E-EF80-88A9-688A-22D077952C5F + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml new file mode 100644 index 0000000..434fe09 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/F47544B8-FBE2-477B-4381-C53DB2F54280.xml @@ -0,0 +1,80 @@ + + +ERIGHTS-TEST +ERIGHTS +ANK_V_USER_IDENTITIES +walloar +2021-03-02 08:04:44 UTC +eRights +true + +true + + +ERIGHTS-TEST +ANK_V_USER_IDENTITIES +PER_ID +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +NUMBER (8) +PER_ID +false +9A7B1580-BF2E-4181-E524-A10E14DCBF90 + + +ERIGHTS-TEST +ANK_V_USER_IDENTITIES +ORG_ID +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +NUMBER (10) +ORG_ID +false +7B5DD59B-26D7-4A79-359E-0C7E98629F2F + + +ERIGHTS-TEST +ANK_V_USER_IDENTITIES +USERID +walloar +2021-03-02 08:04:44 UTC +eRights +true +false +VARCHAR2 (50 CHAR) +USERID +false +53659D3C-32FF-BC14-59AF-878303476DCB + + + + +true +ERIGHTS +ANK_MV_PERSONS_EEAS + + +PER_ID +ERIGHTS +ANK_MV_PERSONS_EEAS + + +ORG_ID +ERIGHTS +ANK_MV_PERSONS_EEAS + + +USERID +ERIGHTS +ANK_MV_PERSONS_EEAS + + + diff --git a/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml new file mode 100644 index 0000000..2f3e4e5 --- /dev/null +++ b/e-rights-common/src/main/database/model/2.9.0/eRights/rel/DC0E93B8-B6AAF251C422/view/seg_0/FF2937F1-744E-7ACC-DEC3-6EA551FF0324.xml @@ -0,0 +1,480 @@ + + +ERIGHTS-TEST +ERIGHTS +V_JOBS +walloar +2021-03-02 08:04:44 UTC +eRights +true + +true + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +JOB_ID +NUMBER (10) +JOB_ID +false +488B7C10-7407-B68E-7CE3-57577B7D3107 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +JOB_MOMENT +VARCHAR2 (11 BYTE) +JOB_MOMENT +false +F7C0E460-3452-99A1-4896-90AF163D0B01 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +JOB_TYPE +VARCHAR2 (255 CHAR) +JOB_TYPE +false +96A92B20-B10F-B1D6-B481-5C30741FECDC +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +PERSONNEL_TYPE_ID +NUMBER +PERSONNEL_TYPE_ID +false +8E400C69-2A54-995E-DE2E-3AA892A66340 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +PERSONNEL_TYPE_DESC +VARCHAR2 (1600 BYTE) +PERSONNEL_TYPE_DESC +false +16DF5794-2984-85A2-CD6B-B438D11CF2D7 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +BUDGETARY_LINE +VARCHAR2 (100 CHAR) +BUDGETARY_LINE +false +54C9B37A-AEC8-110A-FD6F-EA9F166056EA +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +JOB_CITY_CODE +VARCHAR2 (3 CHAR) +JOB_CITY_CODE +false +ACB6C8C6-9CD6-A7E1-F9CC-40E3C37C3465 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +JOB_CITY_NAME +VARCHAR2 (60 CHAR) +JOB_CITY_NAME +false +989BA3BD-B941-0598-2C33-6ACC633F38D1 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +JOB_COUNTRY_CODE +VARCHAR2 (3 CHAR) +JOB_COUNTRY_CODE +false +1C8198AD-9A3E-37A2-EB2C-2EEE7D0F84E6 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +JOB_COUNTRY_NAME +VARCHAR2 (200 CHAR) +JOB_COUNTRY_NAME +false +21F01271-49CE-E865-9D70-A75E1F7FFED1 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +ORGANIZATION_COUNTRY +VARCHAR2 (200 CHAR) +ORGANIZATION_COUNTRY +false +B9C465FF-5CC7-5079-67FE-0C9FE593E0D9 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +ORGANIZATION_CITY +VARCHAR2 (500 CHAR) +ORGANIZATION_CITY +false +8249787E-6831-9778-F580-0B5EF1022643 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +ORGANIZATION_NAME +VARCHAR2 (60 CHAR) +ORGANIZATION_NAME +false +5C8EF6B7-43CC-CBD0-32BA-926252537B3D +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +ORG_ID +NUMBER (10) +ORG_ID +false +3E02FBEE-D146-CFF2-1CB2-63EE44F4C198 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +ASSIGN_START_DATE_TO +DATE +ASSIGN_START_DATE_TO +false +7EDB657A-6F64-2D6F-7E28-184DE7BF9663 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +ASSIGN_END_DATE_TO +DATE +ASSIGN_END_DATE_TO +false +6E5DCFFF-7F2B-1AA7-6E30-433EBFB9F93E +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +PER_ID +NUMBER (8) +PER_ID +false +9F716A32-84F1-7BDA-D528-B5D0114C4800 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +SEVERITY_LEVEL +NUMBER +SEVERITY_LEVEL +false +B5845E61-5974-361B-7541-8653DCD2C692 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +EVACUATION_LEVEL_CODE_ID +NUMBER +EVACUATION_LEVEL_CODE_ID +false +E028E5D5-059E-8831-670C-6C4E2B7AE4FC +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +ALERT_STATUS_ID +NUMBER +ALERT_STATUS_ID +false +B5595B39-AB42-10B4-2DF9-B7C9E5AC3346 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +EVACUATION_LEVEL_CODE +VARCHAR2 (256 BYTE) +EVACUATION_LEVEL_CODE +false +78F27961-917E-767E-9F95-F9FA630F9883 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +ORGANIZATION_COUNTRY_CODE +VARCHAR2 (3 CHAR) +ORGANIZATION_COUNTRY_CODE +false +1CC30656-C0B8-8070-06F9-F15D2D2FC2FC +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +ORGANIZATION_CITY_CODE +VARCHAR2 (3 CHAR) +ORGANIZATION_CITY_CODE +false +B86FC7F2-0155-3169-2BA9-904CC0D5995C +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +FAMILY_POSTING_TYPE_ID +NUMBER +FAMILY_POSTING_TYPE_ID +false +885CD3EE-D237-D696-357E-58CFBE3C4DA5 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +FAMILY_POSTING_TYPE +VARCHAR2 (256 BYTE) +FAMILY_POSTING_TYPE +false +21A447B7-BED5-A32F-D93F-41E2976C5EF8 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +HOD +CHAR (1 BYTE) +HOD +false +39E5B64A-97F6-CD7F-3C05-364ED2D91BFF +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +FAMILY_POSTING_TYPE_CAT +VARCHAR2 (10 BYTE) +FAMILY_POSTING_TYPE_CAT +false +1D8902B6-424A-65A8-A98C-82BBA658BA79 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +BUDGET_LINE +VARCHAR2 (450 BYTE) +BUDGET_LINE +false +A53CBB36-D7CF-B88B-5FF7-4722DCF06335 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +DELEGATION_ORG_ID +NUMBER (10) +DELEGATION_ORG_ID +false +639CE9EE-AD8F-5B97-E4B7-C376553B8913 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +INSTITUTION_CODE +VARCHAR2 (40 BYTE) +INSTITUTION_CODE +false +D2287A36-93B8-64FD-5840-5A08D68A4413 +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +INSTITUTION_NAME +VARCHAR2 (2000 BYTE) +INSTITUTION_NAME +false +E40E2783-DA40-5C9F-E452-1819264D57FB +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +FUNCTION_CODE +VARCHAR2 (450 BYTE) +FUNCTION_CODE +false +A712B34A-3538-7C33-6BB5-D553C380393E +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + +walloar +2022-10-24 12:24:52 UTC +eRights +true +false +FUNCTION_DESC +VARCHAR2 (1500 BYTE) +FUNCTION_DESC +false +6C6BD558-98E2-CCDA-A509-14DA96737DBC +FF2937F1-744E-7ACC-DEC3-6EA551FF0324 + + + diff --git a/e-rights-common/src/main/database/model/archive/e-RIGHTS.pdb b/e-rights-common/src/main/database/model/archive/e-RIGHTS.pdb new file mode 100644 index 0000000..6671c21 --- /dev/null +++ b/e-rights-common/src/main/database/model/archive/e-RIGHTS.pdb @@ -0,0 +1,7469 @@ + + + + + + + + + +6E12FF96-2977-4E6D-9AB1-4AFD288B4319 +e-RIGHTS +E_RIGHTS +1574260648 +iliessu +1575537361 +iliessu +[FolderOptions] + +[FolderOptions\Physical Objects] +GenerationCheckModel=Yes +GenerationPath= +GenerationOptions=Database Generation=0C167109-AAAE-46F0-B15F-43E1F0FB3CB8 +GenerationTasks= +GenerationTargets= +GenerationSelections= +RevPkey=Yes +RevFkey=Yes +RevAkey=Yes +RevCheck=Yes +RevIndx=Yes +RevOpts=Yes +RevViewAsTabl=No +RevViewOpts=Yes +RevSystAsTabl=Yes +RevTablPerm=No +RevViewPerm=No +RevProcPerm=No +RevDbpkPerm=No +RevSqncPerm=No +RevAdtPerm=No +RevUserPriv=No +RevUserOpts=No +RevGrpePriv=No +RevRolePriv=No +RevDtbsOpts=Yes +RevDtbsPerm=No +RevViewIndx=Yes +RevJidxOpts=Yes +RevStats=No +RevTspcPerm=No +RevCaseSensitive=No +GenTrgrStdMsg=Yes +GenTrgrMsgTab= +GenTrgrMsgNo= +GenTrgrMsgTxt= +TrgrPreserve=No +TrgrIns=Yes +TrgrUpd=Yes +TrgrDel=Yes +TrgrC2Ins=Yes +TrgrC2Upd=Yes +TrgrC3=Yes +TrgrC4=Yes +TrgrC5=Yes +TrgrC6=Yes +TrgrC7=Yes +TrgrC8=Yes +TrgrC9=Yes +TrgrC10=Yes +TrgrC11=Yes +TrgrC1=Yes +TrgrC12Ins=Yes +TrgrC12Upd=Yes +TrgrC13=Yes +UpdateTableStatistics=Yes +UpdateColumnStatistics=Yes + +[FolderOptions\Physical Objects\Database Generation] +GenScriptName=2.user_objects.sql +GenScriptName0=user_objects.sql +GenScriptName1=e-das.sql +GenScriptName2=user_tables.sql +GenScriptName3=user_objects_2.3.sql +GenScriptName4=new_user_objects_2.3.sql +GenScriptName5=user_objects_draft.sql +GenScriptName6=user_organizations_objects_draft.sql +GenScriptName7=budgdel.sql +GenScriptName8= +GenScriptName9= +GenPathName=Y:\BABS3\3_IBS.6.IS Section\3_ISS_Teams\5_Java\projects\e-RIGHTS\ +GenSingleFile=Yes +GenODBC=No +GenCheckModel=Yes +GenScriptPrev=Yes +GenArchiveModel=No +GenUseSync=No +GenSyncChoice=0 +GenSyncArch= +GenSyncRmg=0 + +[FolderOptions\Physical Objects\Database Generation\Format] +GenScriptTitle=Yes +GenScriptNamLabl=No +GenScriptQDtbs=No +GenScriptQOwnr=Yes +GenScriptCase=0 +GenScriptEncoding=ANSI +GenScriptNAcct=No +IdentifierDelimiter=" + +[FolderOptions\Physical Objects\Database Generation\Database] +Create=Yes +Open=Yes +Close=Yes +Drop=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Database\Create] +Physical Options=Yes +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\Tablespace] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Tablespace\Create] +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\Storage] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\User] +Create=Yes +Drop=Yes +Comment=Yes +Privilege=No + +[FolderOptions\Physical Objects\Database Generation\User\Create] +Physical Options=No + +[FolderOptions\Physical Objects\Database Generation\Group] +Create=Yes +Drop=Yes +Comment=Yes +Privilege=No + +[FolderOptions\Physical Objects\Database Generation\Role] +Create=Yes +Drop=Yes +Privilege=No + +[FolderOptions\Physical Objects\Database Generation\UserDefinedDataType] +Create=Yes +Comment=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\UserDefinedDataType\Create] +Default value=Yes +Check=Yes + +[FolderOptions\Physical Objects\Database Generation\AbstractDataType] +Create=Yes +Header=Yes +Footer=Yes +Drop=Yes +Comment=Yes +Install JAVA class=Yes +Remove JAVA class=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Rule] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Default] +Create=Yes +Comment=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\Sequence] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Table&&Column] + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Table] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Table\Create] +Check=Yes +Physical Options=Yes +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Table\Create\Check] +Constraint declaration=No + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Column] +User datatype=No +Default value=Yes +Check=Yes +Physical Options=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Column\Check] +Constraint declaration=No + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key] + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Primary key] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Primary key\Create] +Constraint declaration=No +Physical Options=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Alternate key] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Alternate key\Create] +Constraint declaration=No +Physical Options=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Foreign key] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Foreign key\Create] +Constraint declaration=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Index] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Index\Create] +Constraint declaration=Yes +Physical Options=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Index\Filter] +Primary key=No +Foreign key=Yes +Alternate key=No +Cluster=Yes +Other=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Trigger] +Create=No +Drop=No +Comment=No + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Trigger\Filter] +For insert=Yes +For update=Yes +For delete=Yes +For other=Yes + +[FolderOptions\Physical Objects\Database Generation\View] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\View\Create] +Force Column list=No +Physical Options=Yes +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\View\ViewColumn] +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\View\ViewIndex] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\View\ViewIndex\Create] +Physical Options=Yes + +[FolderOptions\Physical Objects\Database Generation\View\ViewIndex\Filter] +Cluster=Yes +Other=Yes + +[FolderOptions\Physical Objects\Database Generation\View\Trigger] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\View\Trigger\Filter] +For insert=Yes +For update=Yes +For delete=Yes +For other=Yes + +[FolderOptions\Physical Objects\Database Generation\DBMSTrigger] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Synonym] +Create=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\Synonym\Filter] +Table=Yes +View=Yes +Proc=Yes +Synonym=Yes +Database Package=Yes +Sequence=Yes + +[FolderOptions\Physical Objects\Database Generation\JoinIndex] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\JoinIndex\Create] +Physical Options=Yes +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\Procedure] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Procedure\Create] +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\DatabasePackage] +Create=Yes +Drop=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\WebService] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Dimension] +Create=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\Synchronization] +GenBackupTabl=1 +GenKeepBackTabl=1 +GenTmpTablDrop=No +GenKeepTablOpts=No + +[FolderOptions\Physical Objects\Database Generation\ExtendedObject <<Cluster>>] +Create=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\ExtendedObject <<Cluster>>\ExtendedSubObject <<ClusterColumn>>] +Create=Yes + +[FolderOptions\Physical Objects\Database Generation\ExtendedObject <<Cluster>>\ExtendedSubObject <<ClusterIndex>>] +Create=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\ExtendedObject <<DatabaseLink>>] +Create=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\ExtendedObject <<MaterializedViewLog>>] +Create=Yes + +[FolderOptions\Physical Objects\Database Generation\View <<MaterializedView>>] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\View <<MaterializedView>>\ViewColumn] +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\View <<MaterializedView>>\ViewIndex] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\View <<MaterializedView>>\ViewIndex\Filter] +Cluster=Yes +Other=Yes + +[FolderOptions\Physical Objects\Database Generation\View <<MaterializedView>>\Trigger] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\View <<MaterializedView>>\Trigger\Filter] +For insert=Yes +For update=Yes +For delete=Yes +For other=Yes + +[FolderOptions\Physical Objects\Test Data] +GenDataPathName= +GenDataSinglefile=Yes +GenDataScriptName=testdata +GenDataScriptName0= +GenDataScriptName1= +GenDataScriptName2= +GenDataScriptName3= +GenDataScriptName4= +GenDataScriptName5= +GenDataScriptName6= +GenDataScriptName7= +GenDataScriptName8= +GenDataScriptName9= +GenDataOdbc=0 +GenDataDelOld=No +GenDataTitle=No +GenDataDefNumRows=20 +GenDataCommit=0 +GenDataPacket=0 +GenDataOwner=No +GenDataProfNumb= +GenDataProfChar= +GenDataProfDate= +GenDataCSVSeparator=; +GenDataFileFormat=CSV +GenDataUseWizard=No + +[FolderOptions\Pdm] +IndxIQName=%COLUMN%_%INDEXTYPE% +IndxPK=Yes +IndxFK=Yes +IndxAK=Yes +IndxPKName=%TABLE%_PK +IndxFKName=%REFR%_FK +IndxAKName=%AKEY%_AK +IndxPreserve=No +IndxThreshold=0 +IndxStats=No +RefrPreserve=No +JidxPreserve=No +RbldMultiFact=Yes +RbldMultiDim=Yes +RbldMultiJidx=Yes +CubePreserve=No +TablStProcPreserve=No +ProcDepPreserve=Yes +TrgrDepPreserve=Yes +CubeScriptPath= +CubeScriptCase=0 +CubeScriptEncoding=ANSI +CubeScriptNacct=No +CubeScriptHeader=No +CubeScriptExt=csv +CubeScriptExt0=txt +CubeScriptExt1= +CubeScriptExt2= +CubeScriptSep=, +CubeScriptDeli=" +EstimationYears=0 +DfltDomnName=D_%.U:VALUE% +DfltColnName=D_%.U:VALUE% +DfltReuse=Yes +DfltDrop=Yes + +[FolderOptions\CheckModel] + +[FolderOptions\CheckModel\Package] + +[FolderOptions\CheckModel\Package\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\CheckPackageMissTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\DefaultCheckPackageMissTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\CircularReference] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\ConstraintName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\CnstMaxLen] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\CircularDependency] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\ShortcutUniqCode] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Table] + +[FolderOptions\CheckModel\Table\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\UniqIndex] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\MaxLen - NAME] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\EmptyColl - COLNCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\EmptyColl - INDXCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\EmptyColl - KEYCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\SerialColumnNumber] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\EmptyCollYesYes] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\TableIndexes] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\Mapping] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\MappingSFMap] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\EmptyColl - PERMCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Table\CheckTablePartitionKey] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTableStartDate] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTableRefNoLifecycle] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTableSourceMapping] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTablePartialColumnMapping] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTableKeyColumnMapping] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTableNotOnLifecycleTablespace] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column] + +[FolderOptions\CheckModel\Table.Column\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\DomainDivergence] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\ColumnMandatory] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckNumParam] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckPrecSupLng] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckUndefDttp] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\FkeyDttpDivergence] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\FkeyCheckDivergence] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\ColnSqncNoKey] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\ColnSqncDttp] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\SerialColumnFK] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\ColumnCompExpr] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckColumnOneToOneMapping] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckColumnDataTypeMapping] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckColumnNoMapping] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckDttpIncompatibleFormat] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index] + +[FolderOptions\CheckModel\Table.Index\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\EmptyColl - CIDXCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\UndefIndexType] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\IndexColumnCount] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\IQIndxHNGUniq] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\CheckIncludeColl - Tabl] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\ORA11GR1_Index_Check_Column_Encryption] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\ORA11GR1_Index_Check_Column_Expression] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key] + +[FolderOptions\CheckModel\Table.Key\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\EmptyColl - COLNCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\CheckIncludeColl - Tabl] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\MultiKeySqnc] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger] + +[FolderOptions\CheckModel\Table.Trigger\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index] + +[FolderOptions\CheckModel\Join Index\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\EmptyColl - JIDXTABL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\JidxRefr] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\IQJoinIndexRelationships] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\IQJoinIndexDuplicates] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\ORA11GR1_JoinIndex_Join_Index_Namespace] +CheckSeverity=No +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\View] + +[FolderOptions\CheckModel\View\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\EmptyColl - PERMCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\View.View Index] + +[FolderOptions\CheckModel\View.View Index\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\EmptyColl - CIDXCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\IndexColumnCount] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\CheckIncludeColl - Tabl] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference] + +[FolderOptions\CheckModel\Reference\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\Reflexive] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\EmptyColl - RFJNCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\IncompleteJoin] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\JoinOrder] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\ORA11GR1_Reference_Rely_reference_on_Rely_primary_key] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference] + +[FolderOptions\CheckModel\View Reference\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\EmptyColl - VRFJNCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain] + +[FolderOptions\CheckModel\Domain\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\CheckNumParam] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\CheckPrecSupLng] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\CheckUndefDttp] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\CheckDttpIncompatibleFormat] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default] + +[FolderOptions\CheckModel\Default\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\DfltValeEmpty] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\DfltSameVale] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User] + +[FolderOptions\CheckModel\User\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\UniquePassword] +CheckSeverity=No +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Group] + +[FolderOptions\CheckModel\Group\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\EmptyColl - USERCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\UniquePassword] +CheckSeverity=No +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Role] + +[FolderOptions\CheckModel\Role\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\EmptyColl - USERCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure] + +[FolderOptions\CheckModel\Procedure\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\ProcBodyEmpty] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\EmptyColl - PERMCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\DBMS Trigger] + +[FolderOptions\CheckModel\DBMS Trigger\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\DbmsTriggerEvent] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\ORA11GR1_DBMSTrigger_Trigger_event_with_inappropriate_time] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source] + +[FolderOptions\CheckModel\Data Source\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\EmptyColl - MODLSRC] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\DtscTargets] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\CheckDataSourceModels] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Horizontal Partitioning] + +[FolderOptions\CheckModel\Horizontal Partitioning\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Horizontal Partitioning\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Horizontal Partitioning\EmptyColl - PARTCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Horizontal Partitioning\TargetTables] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Vertical Partitioning] + +[FolderOptions\CheckModel\Vertical Partitioning\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Vertical Partitioning\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Vertical Partitioning\EmptyColl - PARTCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Vertical Partitioning\TargetTables] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table Collapsing] + +[FolderOptions\CheckModel\Table Collapsing\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table Collapsing\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table Collapsing\EmptyColl - TargetTable] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table Collapsing\TargetTables] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube] + +[FolderOptions\CheckModel\Cube\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube\EmptyColl - ALLOLINKCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube\EmptyColl - Facts] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube\CubeDupAssociation] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact] + +[FolderOptions\CheckModel\Fact\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\EmptyColl - MEASCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\Mapping] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\MappingSFMap] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension] + +[FolderOptions\CheckModel\Dimension\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\EmptyColl - DATTRCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\EmptyColl - HIERCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\DimnDupHierarchy] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\DimnDefHierarchy] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\Mapping] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\MappingSFMap] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\SerialColumnNumber] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Association] + +[FolderOptions\CheckModel\Association\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Association\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Association\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Association\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Association\EmptyColl - Hierarchy] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute] + +[FolderOptions\CheckModel\Dimension.Attribute\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure] + +[FolderOptions\CheckModel\Fact.Measure\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy] + +[FolderOptions\CheckModel\Dimension.Hierarchy\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\ORA11GR1_DimensionHierarchy_Minimum_number_of_attributes] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym] + +[FolderOptions\CheckModel\Synonym\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\MaxLen - NAME] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\EmptyColl - BASEOBJ] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type] + +[FolderOptions\CheckModel\Abstract Data Type\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\AdtInstantiable] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\AdtAbstractUsed] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure] + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\AdtProcUniqName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\UniqueDefinition] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\ReturnDataType] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package] + +[FolderOptions\CheckModel\Database Package\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\MaxLen - NAME] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\EmptyColl - PROCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\EmptyColl - CURCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package\EmptyColl - VARCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package\EmptyColl - TYPCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package\EmptyColl - EXCCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package.Database Package Procedure] + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\UniqueDefinition] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\EmptyColl - PARM] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\ReturnDataType] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence] + +[FolderOptions\CheckModel\Sequence\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor] + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\UniqueDefinition] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\ReturnDataType] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\EmptyColl - PARM] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package.Database Package Variable] + +[FolderOptions\CheckModel\Database Package.Database Package Variable\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\CheckUndefDttp] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type] + +[FolderOptions\CheckModel\Database Package.Database Package Type\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\UniqueDefinition] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception] + +[FolderOptions\CheckModel\Database Package.Database Package Exception\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace] + +[FolderOptions\CheckModel\Tablespace\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\IsObjectUsed] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\ORA11GR1_Tablespace_Tablespace_Undo_and_Temporary] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage] + +[FolderOptions\CheckModel\Storage\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\IsObjectUsed] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database] + +[FolderOptions\CheckModel\Database\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\IsObjectUsed] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service] + +[FolderOptions\CheckModel\Web Service\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation] + +[FolderOptions\CheckModel\Web Service.Web Operation\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle] + +[FolderOptions\CheckModel\Lifecycle\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\CheckLifecyclePhase] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\CheckLifecycleRetention] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\CheckPartitionRange] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase] + +[FolderOptions\CheckModel\Lifecycle.Phase\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseTbspace] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseIQTbspace] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseDuplicateTbspace] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseTbspaceCurrency] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseRetention] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseIdlePeriod] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseDataSource] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseExternalOnFirst] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Replication] + +[FolderOptions\CheckModel\Replication\PartialReplication] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule] + +[FolderOptions\CheckModel\Business Rule\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\EmptyColl - OBJCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object] + +[FolderOptions\CheckModel\Extended Object\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\ORA11GR1_ExtendedObject_Cluster_Hash_cluster_index] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link] + +[FolderOptions\CheckModel\Extended Link\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File] + +[FolderOptions\CheckModel\File\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File\CheckPathExists] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format] + +[FolderOptions\CheckModel\Data Format\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\CheckDataFormatNullExpression] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model] + +[FolderOptions\CheckModel\Physical Data Model\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model\CheckPackageMissTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model\DefaultCheckPackageMissTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model\ORA11GR1_Model_Encryption_Password_existence] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes +[ModelOptions] + +[ModelOptions\Physical Objects] +CaseSensitive=No +DisplayName=Yes +EnableTrans=No +UseTerm=No +EnableRequirements=No +EnableFullShortcut=Yes +DefaultDttp= +IgnoreOwner=No +RebuildTrigger=Yes +RefrUnique=No +RefrAutoMigrate=Yes +RefrMigrateReuse=Yes +RefrMigrateDomain=Yes +RefrMigrateCheck=Yes +RefrMigrateRule=Yes +RefrMigrateExtd=No +RefrMigrDefaultLink=No +RefrDfltImpl=D +RefrPrgtColn=No +RefrMigrateToEnd=No +RebuildTriggerDep=No +ColnFKName=%.3:PARENT%_%COLUMN% +ColnFKNameUse=No +DomnCopyDttp=Yes +DomnCopyChck=No +DomnCopyRule=No +DomnCopyMand=No +DomnCopyExtd=No +DomnCopyProf=No +Notation=0 +DomnDefaultMandatory=No +ColnDefaultMandatory=No +TablDefaultOwner= +ViewDefaultOwner= +TrgrDefaultOwnerTabl= +TrgrDefaultOwnerView= +IdxDefaultOwnerTabl= +IdxDefaultOwnerView= +JdxDefaultOwner= +DBPackDefaultOwner= +SeqDefaultOwner= +ProcDefaultOwner= +DBMSTrgrDefaultOwner= +Currency=USD +RefrDeleteConstraint=1 +RefrUpdateConstraint=1 +RefrParentMandatory=No +RefrParentChangeAllow=Yes +RefrCheckOnCommit=No + +[ModelOptions\Physical Objects\NamingOptionsTemplates] + +[ModelOptions\Physical Objects\ClssNamingOptions] + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMPCKG] + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMPCKG\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMPCKG\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMDOMN] + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMDOMN\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMDOMN\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\TABL] + +[ModelOptions\Physical Objects\ClssNamingOptions\TABL\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\TABL\Code] +Template= +MaxLen=30 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\COLN] + +[ModelOptions\Physical Objects\ClssNamingOptions\COLN\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\COLN\Code] +Template= +MaxLen=30 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\INDX] + +[ModelOptions\Physical Objects\ClssNamingOptions\INDX\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\INDX\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\REFR] + +[ModelOptions\Physical Objects\ClssNamingOptions\REFR\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\REFR\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VREF] + +[ModelOptions\Physical Objects\ClssNamingOptions\VREF\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VREF\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEW] + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEW\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEW\Code] +Template= +MaxLen=30 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEWC] + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEWC\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEWC\Code] +Template= +MaxLen=254 +Case=U +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBSERV] + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBSERV\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBSERV\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"/-_.!~*'()" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBOP] + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBOP\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBOP\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"/-_.!~*'()" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WPARAM] + +[ModelOptions\Physical Objects\ClssNamingOptions\WPARAM\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WPARAM\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FACT] + +[ModelOptions\Physical Objects\ClssNamingOptions\FACT\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FACT\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DIMN] + +[ModelOptions\Physical Objects\ClssNamingOptions\DIMN\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DIMN\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\CUBE] + +[ModelOptions\Physical Objects\ClssNamingOptions\CUBE\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\CUBE\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\MEAS] + +[ModelOptions\Physical Objects\ClssNamingOptions\MEAS\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\MEAS\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DATTR] + +[ModelOptions\Physical Objects\ClssNamingOptions\DATTR\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DATTR\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FILO] + +[ModelOptions\Physical Objects\ClssNamingOptions\FILO\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar="\/:*?<>|" +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FILO\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_. " +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMEOBJ] + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMEOBJ\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMEOBJ\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMELNK] + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMELNK\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMELNK\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DefaultClass] + +[ModelOptions\Physical Objects\ClssNamingOptions\DefaultClass\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DefaultClass\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Connection] + +[ModelOptions\Pdm] + +[ModelOptions\Generate] + +[ModelOptions\Generate\Pdm] +RRMapping=No + +[ModelOptions\Generate\Cdm] +CheckModel=Yes +SaveLinks=Yes +NameToCode=No +Notation=2 + +[ModelOptions\Generate\Oom] +CheckModel=Yes +SaveLinks=Yes +ORMapping=No +NameToCode=Yes +ClassPrefix= + +[ModelOptions\Generate\Xsm] +CheckModel=Yes +SaveLinks=Yes +ORMapping=No +NameToCode=No + +[ModelOptions\Generate\Ldm] +CheckModel=Yes +SaveLinks=Yes +NameToCode=No + +[ModelOptions\Default Opts] + +[ModelOptions\Default Opts\TABL] +PhysOpts= + +[ModelOptions\Default Opts\COLN] +PhysOpts= + +[ModelOptions\Default Opts\INDX] +PhysOpts= + +[ModelOptions\Default Opts\AKEY] +PhysOpts= + +[ModelOptions\Default Opts\PKEY] +PhysOpts= + +[ModelOptions\Default Opts\STOR] +PhysOpts= + +[ModelOptions\Default Opts\TSPC] +PhysOpts= + +[ModelOptions\Default Opts\SQNC] +PhysOpts= + +[ModelOptions\Default Opts\DTBS] +PhysOpts= + +[ModelOptions\Default Opts\USER] +PhysOpts= + +[ModelOptions\Default Opts\JIDX] +PhysOpts= + +[ModelOptions\Default Opts\FRMEOBJ<<Cluster>>] +PhysOpts= + +[ModelOptions\Default Opts\FRMEOBJ<<MaterializedViewLog>>] +PhysOpts= + +[ModelOptions\Default Opts\FRMESOB<<Cluster>>] +PhysOpts= + +[ModelOptions\Default Opts\FRMESOB<<MaterializedViewLog>>] +PhysOpts= + +[ModelOptions\Default Opts\FRMESOB<<ClusterIndex>>] +PhysOpts= +PD_VER 001 +REP_ID {3AB0AF56-4CC4-4963-82F5-C87DBEA108B9} +MODEL_ID 21416 +MODEL_VRSN 5 +BRANCH_ID 1 +EXT_DATE 1575893285 +EXT_END 1575893285 +OBJECTS +BEG_BLOCK + 21416 {6E12FF96-2977-4E6D-9AB1-4AFD288B4319} + 21426 {B1688878-7AF4-40DA-B185-5F50B3B92E66} + 21427 {B7B9D00C-A172-4DEA-80DD-CE09C3681673} + 21428 {198A41F3-3A45-400A-B39C-6F01FFD302DD} + 21430 {008463AC-0415-458F-88E1-20CA8C0DFF74} + 21431 {A18D8736-A324-4143-B4BB-B404DE446B27} + 21432 {DAD94176-ED3B-4D39-8925-6506FE9377CD} + 21435 {93994A7B-E23E-458F-B546-10529B9474F4} + 21436 {FB425DEC-001B-4B23-8BB6-13546D689B08} + 21440 {CDBBF0D8-BF6A-4BC0-BE2B-0407106119F1} + 21442 {1CF1AA5D-1E85-44BE-9AC9-3B9BDEC8C653} + 21443 {5F07D3F5-B658-4EC8-88FD-6242EF9049AF} + 21444 {88645B51-CAD8-49F4-A0BC-BCB31F06BA1C} + 21445 {CC7616EB-4593-45F9-9F3A-AD15533DBF4C} + 21446 {ED0C669B-1581-420D-A994-E43EEAF33399} + 21447 {CB26B708-7C7E-4179-B08B-ACC25689135E} + 21448 {2DF524E1-2157-44BA-9F8B-5E40395DC179} + 21449 {558D254A-2994-444D-8DC0-D76D54C52FEB} + 21450 {FAC0C62F-89CC-4ADC-8A8D-6401A68915B6} + 21451 {03D11B7E-5C33-466F-A9DF-028345E7F3C4} + 21452 {D38972BC-3878-47EB-A8A5-2105E2254B80} + 21453 {0C3E5085-553F-4A13-932B-5496549C7EF0} + 21454 {E0B53A1D-AB6F-4B33-8C5B-940B3EF91A74} + 21455 {BC7EEAEB-CFF0-4BB2-A835-480B26B792EC} + 21456 {E06CDFDA-C94D-4DF9-B9A4-19EEFA621BB1} + 21457 {A273FBEE-8088-49AC-AA49-F1166845D5D2} + 21458 {F2B42B5B-314C-4DB0-AA98-1F2D5C1430DE} + 21459 {C80DF891-27B2-45DF-A2C0-FBD89FD47778} + 21460 {A89082D0-219A-48A1-B341-996826C0DC3F} + 21461 {458DAC01-6B00-4C7C-BFCA-5F5DFE24660B} + 21462 {8E9BE21B-CACC-4D0B-823B-AA829FCCDB1D} + 21463 {7475FD33-55B8-4156-8376-5779BA2A417D} + 21464 {5174CE35-3FBF-4323-9219-6D04EAB80E14} + 21470 {CE8BBC24-A348-4BAA-883D-6F558087CE41} + 21471 {402B6B48-960C-45C6-8B1B-82D0B39CCD65} + 21472 {D2430B00-EB01-4D0C-8ED7-30A31D1D0F83} + 21474 {B6BBB5AA-6858-42B0-920C-C6D745380E05} + 21475 {A27D9FD6-7BF7-456B-993A-0145DDD55E12} + 21476 {EC510C01-D2F0-49B7-8201-25C57A7CF4AC} + 21477 {1012F5B6-DE51-4C02-A7E4-B00B9D57F699} + 21478 {287183D2-7659-43F9-AE5D-44BA34874BB8} + 21479 {C7C1D057-14AD-475C-8FE1-8B93515C4059} + 21480 {4EEAB4B9-FCD4-492B-AAF6-88B640DD1E86} + 21481 {AB9CCCC8-348B-4464-8FA0-B2FF9D23FB5E} + 21483 {18DAA741-A71D-4BD9-8B4F-CCE12EAFF376} + 21603 {F8FD9C07-1EAC-4415-B194-F1471E0769F7} + 21604 {68C955F0-4698-4142-850F-5CC54BA88287} + 21605 {EFA5E233-F5AE-46AB-A9A3-E120B812C643} + 21606 {F5EBB900-988B-4F23-BAB3-782CDF366D05} + 21607 {06540B01-BC12-4DB1-B39E-EAD6009D2469} + 21608 {19BD9C42-13F6-4678-89DA-127565366C23} + 21609 {484031A6-F323-48B2-B511-C48396A1924F} + 21610 {DEAA7A5C-F7F7-4673-A63D-136F16DA99F1} + 21611 {F337C775-B0A5-44FC-841F-A11DD0B4B977} + 21612 {8AF3EA48-EC8F-4620-9D55-388F0AD582F6} + 21613 {E97DD41C-42C5-49F9-AF8C-EFC9D0F50FE6} + 21614 {737B33D5-F58B-49F4-B1AB-351ADC7D08B2} + 21615 {470119FE-EABF-49FF-95E6-B977EB550A53} + 21617 {28D965AA-7B58-45D2-8225-E20DAC2F3B26} + 21618 {653AABF1-E4BE-4956-B455-96CC2B64CD7F} + 21619 {B68513A9-05C7-4F73-9C2A-8B3CC476BF77} + 21620 {B3BDBA74-5283-4C37-A492-FCEC9A419EDB} + 21621 {C08DDEC9-1E96-4D5D-86EA-CD9CBB0FD182} + 21622 {1AECE29B-85CD-444E-B19B-E14F31B52E55} + 21623 {EFBA779C-1DC9-40B2-B123-7684C5EB1FC5} + 21624 {8572D565-27EC-4D4F-8B25-3F5A59FC9137} + 21625 {7D77FDD1-E9FB-4272-AB31-A430E1DFB326} + 21626 {5C934254-EA5D-41B6-88AD-B16BE23EBBA5} + 21627 {B39D7A44-CA41-4E65-8E8D-9F24ADFB4A41} + 21628 {9746E73E-8B29-4AD5-AC1D-E7110629DB8F} + 21629 {7E33A4FF-64AB-476F-90BB-4E11CD4043BA} + 21630 {67256F3C-3F51-4F1E-B5EB-E36E7A059C7E} + 21631 {DF205C6C-ABCF-4543-994E-6CF1BD29AC8C} + 21632 {0F4BC290-C998-4E0E-BA61-2E689FAEDFD6} + 21633 {6312CA66-B830-420F-BE3C-17596FE44253} + 21634 {E063A588-8224-46D5-A75E-4111DFEC0C2E} + 21635 {C03E7AA0-92B4-4996-8838-130F897750E8} + 21636 {799A7EE6-C039-4B2C-8727-A62EA60B4A54} + 21637 {B097A072-E275-4A04-8954-75B9F6DF2655} + 21638 {8DB91E14-C3B0-4A05-863A-2E402AAA05E5} + 21639 {F5FF3B36-304A-40C2-9508-AE2F608019BC} + 21640 {776481D9-4F64-4DAB-9CD4-A9F0E6897A9E} + 21641 {9D820CD9-02AD-4ADB-B943-B7D07805287E} + 21642 {9E3A4C56-78EA-4181-B9DA-B455731102BE} + 21643 {B2D85F04-D9C7-4514-B549-9DD51C466C32} + 21644 {73FCBDF4-79AE-41D5-9831-6E2600A368AB} + 21645 {C704B820-1054-4E53-B387-041070309BF7} + 21646 {5AD5A39E-6B5B-4A1C-87B0-56416EEFC126} + 21647 {382D16AC-50B5-4687-96F1-285E4C2F01A8} + 21648 {C4FF7E27-34C5-48BA-8194-D9E3B2014D83} + 21649 {A859A60C-BAED-4ECE-A954-4AC3860E095D} + 21651 {218B5156-9DFD-47A0-8EE0-BADF42CDAEB2} + 21652 {B70953D9-3786-476D-B06D-92D29A7BD25B} + 21653 {3AA98821-6932-45EB-A054-1A3FE61BDF1F} + 21654 {DDF84018-3C20-4654-A6F0-8639C3F03F1F} + 21655 {8F053562-3810-466B-AFD1-D02A05FF56D1} + 21656 {928236E6-0CD0-4B9E-AF2E-18A65D5B3B4F} + 21664 {078999BB-92B8-4F47-A8DA-DB29C4E9951C} + 21665 {569F9E2F-4EE2-4F6F-96BA-4F84D362BB74} + 21666 {EA6FB87E-B0E9-46B0-B090-1581CBB9A51F} + 21667 {E5018CDA-8B4C-470B-AC84-C9F4C11F02B3} + 21668 {495A573D-AFB1-4DD5-B0E7-189A589CDA1C} + 21669 {D89BE85D-DD8F-40A8-830D-168036F41F56} + 21670 {5D4C4124-72AF-4826-8E99-D3704CEE1B4F} + 21671 {BD7BAE07-1A3C-4F3D-B4FA-A002676767E3} + 21672 {827F0A7D-B30E-49BD-9E6C-5978DA062306} + 21673 {9BDD039F-0294-4385-8770-C35B6AC7ED3B} + 21676 {71F9C105-0D7B-47DD-B71E-68FFE5FFFD57} + 21677 {DF9A3EC8-097E-489E-87CC-F9B21AD09E34} + 21678 {68032288-F59A-4905-9315-026E48A1226F} + 21679 {A9E26D88-664A-4443-A0F3-7785726D485D} + 21680 {00B6B097-A96E-4FDB-AC64-BA3BFCC2608D} + 21681 {5C79B624-99B6-4A89-BB6A-2C8E1537B772} + 21682 {01941324-18A5-462D-8189-4F97E32F3FDD} + 21683 {47DB98EF-F515-4CF3-92FD-077BAE833B4E} + 21684 {42913DE9-21A0-4412-82C0-0F1BE5DAF9AD} + 21685 {7CD4FCB9-C3BC-436C-97FF-A95F752D733E} + 21686 {9211335A-E246-441D-8F09-9B5D874946E3} + 21687 {A30C0C51-AF82-4EAE-A991-B53BD6E826B7} + 21688 {FFED3B31-34E6-4E7E-B587-A8E76D9234C5} + 21689 {BE02AAA6-1662-4C2E-895F-EE3787E8F27F} + 21710 {80279C89-CAE2-4BC1-A1C8-B3503B0E72FD} + 21711 {48EFF621-4AA8-4E55-B454-BA4D32CA7D14} + 21712 {4F302071-EF94-4781-BD12-26E0669BDB66} + 21713 {F3164AE7-8153-4EF6-9CB6-AE3D4A2C7F70} + 21714 {A5DAFC41-77FB-40D3-B796-AB57D6DDFCC7} + 21715 {9636A028-5A81-470A-AF93-3FC73A21C8AD} + 21716 {C9FFF5A2-D436-45A8-969E-F5B27CE6C662} + 21717 {6886BF81-F625-446B-B0E0-09F245940E56} + 21718 {80544C91-4DFB-4A23-9825-292828987EEF} + 21719 {D242D5C0-512F-40C6-8DBF-90A125598D78} + 21720 {189EF38B-8C3D-4D85-AB6B-399F7D54BFED} + 21721 {B660B86B-BDB4-48F6-A543-9D5AFC05A1E9} + 21722 {EA185921-5F80-4F05-BADA-C54018A476BD} + 21723 {254B6FBF-40B9-4400-8C59-6D7A196E009B} + 21724 {92B5383B-6B81-4FFA-8A2A-BDA23DAD277B} + 21725 {1B02FAFC-B7E1-49BB-BE09-104063FFD6B9} + 21726 {9C00B3D4-71B5-4E87-83FB-5CE0801E4F7E} + 21727 {9A43B581-BC72-4128-8A2F-582E931F64C8} + 21728 {D784009B-AF4B-469D-9F78-97B6EB472535} + 21729 {92A30B9B-7DC4-441E-B6C1-5492FF157881} + 21730 {7B856142-0648-4509-94BA-D97B33065072} + 21731 {17331C48-0683-49C1-B510-82D62D823B17} + 21732 {4E6A2302-5A98-4417-A731-0B46D5053D0E} + 21733 {D3167C9C-9FD0-4B85-B403-6D661508E987} + 21734 {64D84049-B150-4DF9-AD72-80B2E34F82FF} + 21735 {1F5EE14B-F0E2-422B-AD5D-052D9235F083} + 21736 {FA5C070F-CE87-4D47-9A8B-78A94515A722} + 21737 {DB48D9D9-4D33-4CCA-AB7D-3DA9BDFE6C5E} + 21738 {0851247C-91BE-4E39-B60F-266769763A5B} + 21739 {3D970BDB-C3AD-4134-AF49-D94CFA4C922D} + 21740 {DB10ECE0-965D-4AEE-B4AF-445126C1E3CE} + 21741 {579F9A94-A280-4974-9982-48CEC8CC2DF1} + 21742 {96E85A6A-18D2-4DD6-8098-B6C3AEC68439} + 21743 {E2D11655-BF0A-4210-AEE5-0A1B7CC0D2CE} + 21744 {7413488D-C0A5-45B1-A52E-EF38E5B639F0} + 21745 {314B726F-4D01-4A4E-B221-083F43E36CF9} + 21746 {7FD5CDEB-0148-4F21-A734-0A2F7BEB8409} + 21747 {C8200503-8509-441C-9340-A134B2C84D0D} + 21748 {FF846808-5C03-4580-825C-A61BAD90ABE7} + 21749 {F1581324-E08E-44F0-B3F4-84E0DC07C03F} + 21750 {A5B5A357-9EBB-468C-AA74-1952EC3658ED} + 21751 {EE5FBDD5-E180-4F56-AAE3-2E2A294966B5} + 21752 {867B9ACE-563C-4767-8EA7-A374B2B776BD} + 21753 {B4974057-FAE9-4D5B-AFCE-25BD3209C9F3} + 21754 {D1EBF825-F191-4071-9433-BC25C728EF4C} + 21755 {F1EB6B6D-7A3F-4614-A7C1-5799E3430F9B} + 21756 {B709CD81-742E-4C78-9B48-8CBA0513A541} + 21757 {FA549245-188C-4F80-AAE7-5FE048A87FB8} + 21758 {CEC5B537-2D35-44C9-AEC2-AA4904306162} + 21759 {A1859E05-264F-4104-A8FC-C7C4C878E095} + 21760 {28C6DECA-C250-44D6-9994-A601A54D08F1} + 21761 {CC78E6D8-5560-4007-824B-5D2A354F3270} + 21762 {0C167109-AAAE-46F0-B15F-43E1F0FB3CB8} + 21763 {26F5F34C-F3BD-4D7C-8804-3F9CD0C5D228} + 21764 {827416D5-84DF-4596-A3C2-6800F6D88EC2} + 21765 {78D5A3F3-226A-4C27-AB65-D29F7672B853} + 21766 {C0D14299-6C8D-44D4-972D-5E9ABE550092} + 21767 {5EA27C82-FBA4-454E-B248-1BF63A59B1BF} + 21768 {4D508B74-E9C9-4C9F-ACE5-C7CABE3F250C} + 21769 {AA2D716F-AD1D-4E7E-B832-1787A990313A} + 21770 {2179027C-D265-4D4F-9E68-7EA7B5DDEECA} + 21771 {C4CBF7FD-AB7D-4C21-9B9B-5C9D35F96DF1} +END_BLOCK + +a74760fa0bc68aed2fd4b8727ba4237a +{BAE632F3-AC04-4059-9893-259ABA89351C},ORA11GR1,147={EFD6ACEF-B17B-4809-8139-2A448365E86C},AutoFixMaterializedViewDone,4=true +{0DF03778-2F9C-42B9-9746-AFD816115F7F},AutoFixTempAttributeDone,4=true + + + + +B1688878-7AF4-40DA-B185-5F50B3B92E66 +ORACLE Version 11g +ORA11GR1 +1574260647 +iliessu +1574260647 +iliessu + +BAE632F3-AC04-4059-9893-259ABA89351C +4BA9F647-DAB1-11D1-9944-006097355D9B + + +80279C89-CAE2-4BC1-A1C8-B3503B0E72FD +BeforeInsertTrigger +BeforeInsertTrigger +1575469925 +iliessu +1575541245 +iliessu + +F3E98262-3235-409B-9D77-FC9966E4E5AD +D4B2DF42-0047-11D2-9952-006097355D9B +<Model>::ORACLE Version 11g + + +48EFF621-4AA8-4E55-B454-BA4D32CA7D14 +InsertSequenceColumn +InsertSequenceColumn +1575469925 +iliessu +1575541245 +iliessu + +D623F8B7-0ADB-4F1D-A98D-A1377012B92C +D4B2DF41-0047-11D2-9952-006097355D9B +<Model>::ORACLE Version 11g + + +4F302071-EF94-4781-BD12-26E0669BDB66 +CompoundInsertTrigger +CompoundInsertTrigger +1575469925 +iliessu +1575541245 +iliessu + +F914950F-74F3-4A31-8DC0-881065127F36 +D4B2DF42-0047-11D2-9952-006097355D9B +<Model>::ORACLE Version 11g + + +F3164AE7-8153-4EF6-9CB6-AE3D4A2C7F70 +CompoundDeleteTrigger +CompoundDeleteTrigger +1575469925 +iliessu +1575541245 +iliessu + +E32537FC-CC5D-4504-BF41-00C0C7B85817 +D4B2DF42-0047-11D2-9952-006097355D9B +<Model>::ORACLE Version 11g + + +A5DAFC41-77FB-40D3-B796-AB57D6DDFCC7 +CompoundUpdateTrigger +CompoundUpdateTrigger +1575469925 +iliessu +1575541245 +iliessu + +1219F3DB-D382-4C68-9B59-47C389F9446E +D4B2DF42-0047-11D2-9952-006097355D9B +<Model>::ORACLE Version 11g + + + + + + +B7B9D00C-A172-4DEA-80DD-CE09C3681673 +e-RIGHTS-Release 1 +E_RIGHTS_RELEASE_1 +1574260648 +iliessu +1574326450 +iliessu +[DisplayPreferences] + +[DisplayPreferences\PDM] + +[DisplayPreferences\General] +Adjust to text=Yes +Snap Grid=No +Constrain Labels=Yes +Display Grid=No +Show Page Delimiter=Yes +Show Links intersections=Yes +Activate automatic link routing=Yes +Grid size=800 +Graphic unit=2 +Window color=255 255 255 +Background image= +Background mode=8 +Watermark image= +Watermark mode=8 +Show watermark on screen=No +Gradient mode=0 +Gradient end color=255 255 255 +Show Swimlane=No +SwimlaneVert=Yes +TreeVert=No +CompDark=0 + +[DisplayPreferences\Object] +Show Icon=No +Mode=0 +Trunc Length=80 +Word Length=80 +Word Text=!""#$%&'()*+,-./:;<=>?@[\]^_`{|}~ +Shortcut IntIcon=Yes +Shortcut IntLoct=Yes +Shortcut IntFullPath=No +Shortcut IntLastPackage=Yes +Shortcut ExtIcon=Yes +Shortcut ExtLoct=No +Shortcut ExtFullPath=No +Shortcut ExtLastPackage=Yes +Shortcut ExtIncludeModl=Yes +EObjShowStrn=Yes +ExtendedObject.Comment=No +ExtendedObject.IconPicture=No +ExtendedObject.TextStyle=No +ExtendedObject_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Object Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <Separator Name="Separator" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +ELnkShowStrn=Yes +ELnkShowName=Yes +ExtendedLink_SymbolLayout=<Form>[CRLF] <Form Name="Center" >[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Source" >[CRLF] </Form>[CRLF] <Form Name="Destination" >[CRLF] </Form>[CRLF]</Form> +FileObject.Stereotype=No +FileObject.DisplayName=Yes +FileObject.LocationOrName=No +FileObject.IconPicture=No +FileObject.TextStyle=No +FileObject.IconMode=Yes +FileObject_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Location" Attribute="LocationOrName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +Package.Stereotype=No +Package.Comment=No +Package.IconPicture=No +Package.TextStyle=No +Package_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <Separator Name="Separator" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +Display Model Version=Yes +Table.Stereotype=Yes +Table.DisplayName=Yes +Table.OwnerDisplayName=No +Table.Columns=Yes +Table.Columns._Filter="All Columns" PDMCOLNALL +Table.Columns._Columns=Stereotype DataType KeyIndicator IndexIndicator NullStatus +Table.Columns._Limit=-5 +Table.Keys=Yes +Table.Keys._Columns=Stereotype Indicator +Table.Indexes=Yes +Table.Indexes._Columns=Stereotype +Table.Triggers=No +Table.Triggers._Columns=Stereotype +Table.Comment=No +Table.IconPicture=Yes +Table.TextStyle=No +Table_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Owner and Name" Attribute="OwnerDisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <Separator Name="Separator" />[CRLF] <StandardCollection Name="Columns" Collection="Columns" Columns="Stereotype No\r\nDisplayName Yes\r\nDataType No\r\nSymbolDataType No &quot;Domain or Data type&quot;\r\nDomain No\r\nKeyIndicator No\r\nIndexIndicator No\r\nNullStatus No" Filters="&quot;All Columns&quot; PDMCOLNALL &quot;&quot;\r\n&quot;PK Columns&quot; PDMCOLNPK &quot;\&quot;PRIM \&quot;TRUE\&quot; TRUE\&quot;&quot;\r\n&quot;Key Columns&quot; PDMCOLNKEY &quot;\&quot;KEYS \&quot;TRUE\&quot; TRUE\&quot;&quot;" HasLimit="Yes" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Keys" Collection="Keys" Columns="Stereotype No\r\nDisplayName Yes\r\nIndicator No" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Indexes" Collection="Indexes" Columns="Stereotype No\r\nDisplayName Yes\r\nIndicator No" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Triggers" Collection="Triggers" Columns="Stereotype No\r\nDisplayName Yes" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +View.Stereotype=Yes +View.DisplayName=Yes +View.OwnerDisplayName=No +View.Columns=Yes +View.Columns._Columns=DisplayName +View.Columns._Limit=-5 +View.TemporaryVTables=Yes +View.Indexes=No +View.Comment=No +View.IconPicture=No +View.TextStyle=No +View_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Owner and Name" Attribute="OwnerDisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <Separator Name="Separator" />[CRLF] <StandardCollection Name="Columns" Collection="Columns" Columns="DisplayName No\r\nExpression No\r\nDataType No\r\nSymbolDataType No &quot;Domain or Data type&quot;\r\nIndexIndicator No" HasLimit="Yes" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Tables" Collection="TemporaryVTables" Columns="Name Yes" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Indexes" Collection="Indexes" Columns="DisplayName Yes" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +Procedure.Stereotype=No +Procedure.DisplayName=Yes +Procedure.OwnerDisplayName=No +Procedure.Comment=No +Procedure.IconPicture=No +Procedure.TextStyle=No +Procedure_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Owner and Name" Attribute="OwnerDisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <Separator Name="Separator" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +Reference.Cardinality=No +Reference.ImplementationType=No +Reference.ChildRole=Yes +Reference.Stereotype=Yes +Reference.DisplayName=No +Reference.ForeignKeyConstraintName=Yes +Reference.JoinExpression=No +Reference.Integrity=No +Reference.ParentRole=Yes +Reference_SymbolLayout=<Form>[CRLF] <Form Name="Source" >[CRLF] <StandardAttribute Name="Cardinality" Attribute="Cardinality" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Implementation" Attribute="ImplementationType" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Child Role" Attribute="ChildRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Center" >[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="No" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Cons&amp;traint Name" Attribute="ForeignKeyConstraintName" Prefix="" Suffix="" Caption="Cons&amp;traint Name" Mandatory="No" />[CRLF] <StandardAttribute Name="Join" Attribute="JoinExpression" Prefix="" Suffix="" Caption="Join" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <StandardAttribute Name="Referential integrity" Attribute="Integrity" Prefix="" Suffix="" Caption="Referential integrity" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Destination" >[CRLF] <StandardAttribute Name="Parent Role" Attribute="ParentRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF]</Form> +ViewReference.ChildRole=Yes +ViewReference.Stereotype=Yes +ViewReference.DisplayName=No +ViewReference.JoinExpression=No +ViewReference.ParentRole=Yes +ViewReference_SymbolLayout=<Form>[CRLF] <Form Name="Source" >[CRLF] <StandardAttribute Name="Child Role" Attribute="ChildRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Center" >[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="No" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Join Expression" Attribute="JoinExpression" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] </Form>[CRLF] <Form Name="Destination" >[CRLF] <StandardAttribute Name="Parent Role" Attribute="ParentRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF]</Form> + +[DisplayPreferences\Symbol] + +[DisplayPreferences\Symbol\FRMEOBJ] +STRNFont=Arial,8,N +STRNFont color=0 0 0 +DISPNAMEFont=Arial,8,N +DISPNAMEFont color=0 0 0 +LABLFont=Arial,8,N +LABLFont color=0 0 0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Width=6000 +Height=2000 +Brush color=255 255 255 +Fill Color=Yes +Brush style=6 +Brush bitmap mode=12 +Brush gradient mode=64 +Brush gradient color=192 192 192 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 255 128 128 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\FRMELNK] +CENTERFont=Arial,8,N +CENTERFont color=0 0 0 +Line style=2 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Brush color=255 255 255 +Fill Color=Yes +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 128 255 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\FILO] +OBJSTRNFont=Arial,8,N +OBJSTRNFont color=0 0 0 +DISPNAMEFont=Arial,8,N +DISPNAMEFont color=0 0 0 +LCNMFont=Arial,8,N +LCNMFont color=0 0 0 +AutoAdjustToText=Yes +Keep aspect=Yes +Keep center=Yes +Keep size=No +Width=2400 +Height=2400 +Brush color=255 255 255 +Fill Color=No +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 0 0 255 +Shadow color=192 192 192 +Shadow=-1 + +[DisplayPreferences\Symbol\PDMPCKG] +STRNFont=Arial,8,N +STRNFont color=0 0 0 +DISPNAMEFont=Arial,8,N +DISPNAMEFont color=0 0 0 +LABLFont=Arial,8,N +LABLFont color=0 0 0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Width=4800 +Height=3600 +Brush color=255 255 192 +Fill Color=Yes +Brush style=6 +Brush bitmap mode=12 +Brush gradient mode=65 +Brush gradient color=255 255 255 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 178 178 178 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\TABL] +STRNFont=Arial,8,N +STRNFont color=0 0 0 +DISPNAMEFont=Arial,8,N +DISPNAMEFont color=0 0 0 +OWNRDISPNAMEFont=Arial,8,N +OWNRDISPNAMEFont color=0 0 0 +ColumnsFont=Arial,8,N +ColumnsFont color=0 0 0 +TablePkColumnsFont=Arial,8,U +TablePkColumnsFont color=0 0 0 +TableFkColumnsFont=Arial,8,N +TableFkColumnsFont color=0 0 0 +KeysFont=Arial,8,N +KeysFont color=0 0 0 +IndexesFont=Arial,8,N +IndexesFont color=0 0 0 +TriggersFont=Arial,8,N +TriggersFont color=0 0 0 +LABLFont=Arial,8,N +LABLFont color=0 0 0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Width=4800 +Height=4000 +Brush color=210 137 2 +Fill Color=Yes +Brush style=6 +Brush bitmap mode=12 +Brush gradient mode=65 +Brush gradient color=255 255 255 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 64 0 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\VIEW] +STRNFont=Arial,8,N +STRNFont color=0 0 0 +DISPNAMEFont=Arial,8,N +DISPNAMEFont color=0 0 0 +OWNRDISPNAMEFont=Arial,8,N +OWNRDISPNAMEFont color=0 0 0 +ColumnsFont=Arial,8,N +ColumnsFont color=0 0 0 +TablePkColumnsFont=Arial,8,U +TablePkColumnsFont color=0 0 0 +TableFkColumnsFont=Arial,8,N +TableFkColumnsFont color=0 0 0 +TemporaryVTablesFont=Arial,8,N +TemporaryVTablesFont color=0 0 0 +IndexesFont=Arial,8,N +IndexesFont color=0 0 0 +LABLFont=Arial,8,N +LABLFont color=0 0 0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Width=4800 +Height=4000 +Brush color=233 202 131 +Fill Color=Yes +Brush style=6 +Brush bitmap mode=12 +Brush gradient mode=65 +Brush gradient color=255 255 255 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 128 128 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\PROC] +STRNFont=Arial,8,N +STRNFont color=0 0 0 +DISPNAMEFont=Arial,8,N +DISPNAMEFont color=0 0 0 +OWNRDISPNAMEFont=Arial,8,N +OWNRDISPNAMEFont color=0 0 0 +LABLFont=Arial,8,N +LABLFont color=0 0 0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Width=4000 +Height=1000 +Brush color=255 255 192 +Fill Color=Yes +Brush style=6 +Brush bitmap mode=12 +Brush gradient mode=65 +Brush gradient color=255 255 255 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 108 0 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\REFR] +SOURCEFont=Arial,8,N +SOURCEFont color=0 0 0 +CENTERFont=Arial,8,N +CENTERFont color=0 0 0 +DESTINATIONFont=Arial,8,N +DESTINATIONFont color=0 0 0 +Line style=2 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Brush color=255 255 255 +Fill Color=Yes +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 0 64 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\VREF] +SOURCEFont=Arial,8,N +SOURCEFont color=0 0 0 +CENTERFont=Arial,8,N +CENTERFont color=0 0 0 +DESTINATIONFont=Arial,8,N +DESTINATIONFont color=0 0 0 +Line style=2 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Brush color=255 255 255 +Fill Color=Yes +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 0 64 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\USRDEPD] +OBJXSTRFont=Arial,8,N +OBJXSTRFont color=0 0 0 +Line style=0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Brush color=255 255 255 +Fill Color=Yes +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=2 0 128 0 64 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\Free Symbol] +Free TextFont=Arial,8,N +Free TextFont color=0 0 0 +Line style=2 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Brush color=255 255 255 +Fill Color=Yes +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 64 0 +Shadow color=192 192 192 +Shadow=0 +(8268, 11693) +((315,354), (433,354)) +1 +15 + + +1574326175 +1574326624 +((68783,40190), (87061,60141)) +((69183,58895),(82261,58895),(82261,40590)) +2 +1 +0 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N +3 + + + + + + + + + + + +1575449419 +1575449489 +((55405,33494), (69204,51945)) +((62304,51545),(62304,33894)) +2 +1 +0 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N + + + + + + + + + + + +1575449419 +1575537792 +(-2100, 150) +11101 +((31603,33494), (57123,55803)) +((32003,54407),(53861,54407),(53861,33894)) +2 +1 +0 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N +4 + + + + + + + + + + + +1575449419 +1575537792 +((26227,56052), (42501,77408)) +((26627,56452),(26627,76821),(36539,76821),(36539,63735),(29029,63735)) +2 +1 +0 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N +4 + + + + + + + + + + + +1575449419 +1575537638 +(-75, -3225) +((9702,26016), (21551,39351)) +((14842,38951),(14842,35455),(16561,35455),(16561,26416)) +2 +1 +0 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N +4 + + + + + + + + + + + +1575449419 +1575449489 +((28610,21319), (45218,23465)) +((29010,22219),(44818,22219)) +2 +1 +0 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N + + + + + + + + + + + +1575449419 +1575537792 +((-28255,11050), (32403,53148)) +((32003,52748),(-5655,52748),(-5655,11450),(-27855,11450)) +2 +1 +4194432 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N +1 + + + + + + + + + + + +1575449419 +1575449489 +((-28781,22005), (6483,55194)) +((6083,53948),(-23081,53948),(-23081,22405)) +2 +1 +4194432 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N + + + + + + + + + + + +1575449419 +1575449489 +((-13060,10450), (6483,52890)) +((6083,51644),(-6648,51644),(-6648,10850)) +2 +1 +4194432 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N + + + + + + + + + + + +1575449820 +1575541245 +((-69396,20374), (-39166,25818)) +((-45090,25418),(-45090,20961),(-68996,20961)) +2 +1 +4194432 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N + + + + + + + + + + + +1575449824 +1575541383 +((-61041,20374), (-36503,25818)) +((-43890,25418),(-43890,20961),(-60641,20961)) +2 +1 +4194432 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N +2 + + + + + + + + + + + +1575465344 +1575541245 +((-76608,24271), (-47021,48570)) +((-47421,47324),(-68996,47324),(-68996,24671)) +2 +1 +4194432 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N + + + + + + + + + + + +1574260680 +1575541297 +-1 +((6083,38951), (32003,66545)) +0 +0 +14408667 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +Column 0 +Key 0 +Index 0 + +1 + + + + + +1575449419 +1575541297 +-1 +((44818,21354), (62904,33894)) +0 +0 +14408667 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +1 + + + + + +1574325219 +1575449495 +-1 +((73800,30470), (90722,40590)) +0 +0 +14408667 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +1 + + + + + +1574325265 +1575449495 +-1 +((61068,51545), (77598,64439)) +0 +0 +14408667 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +1 + + + + + +1575449419 +1575541297 +-1 +((-56379,25412), (-33801,36726)) +255 +8421631 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +6 +65 +16777215 + + + + + +1575449419 +1575541297 +-1 +((4112,18023), (29010,26416)) +0 +0 +14408667 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N + + + + + +1575449419 +1575449489 +-1 +((-28514,-1141), (-22366,4330)) +16512 +166354 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +6 +65 +16777215 + + + + + +1575449419 +1575541624 +-1 +((-17398,-4361), (4102,10850)) +255 +8421631 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +6 +65 +16777215 + + + + + +1575449419 +1575449489 +-1 +((-47423,5835), (-27855,13254)) +255 +8421631 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +6 +65 +16777215 + + + + + +1575449419 +1575449489 +-1 +((-33065,16934), (-14655,22405)) +255 +8421631 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +6 +65 +16777215 + + + + + +1575449654 +1575541245 +-1 +((-77351,17252), (-60641,24671)) +0 +0 +14408667 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N + + + + + +1575465143 +1575541245 +-1 +((-47421,40206), (-23681,54443)) +0 +0 +14408667 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N + + + + + + + + + + + + +0C167109-AAAE-46F0-B15F-43E1F0FB3CB8 +DEFAULT +1575470348 +iliessu +1575470348 +iliessu +[Physical Objects\Database Generation\Format] +GenScriptTitle=Yes +GenScriptNamLabl=No +GenScriptQDtbs=No +GenScriptQOwnr=Yes +GenScriptCase=0 +GenScriptEncoding=ANSI +GenScriptNAcct=No +IdentifierDelimiter=" + +[Physical Objects\Database Generation\Database] +Create=Yes +Open=Yes +Close=Yes +Drop=Yes +Permission=No + +[Physical Objects\Database Generation\Database\Create] +Physical Options=Yes +Header=Yes +Footer=Yes + +[Physical Objects\Database Generation\Tablespace] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[Physical Objects\Database Generation\Tablespace\Create] +Header=Yes +Footer=Yes + +[Physical Objects\Database Generation\Storage] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\User] +Create=Yes +Drop=Yes +Comment=Yes +Privilege=No + +[Physical Objects\Database Generation\User\Create] +Physical Options=No + +[Physical Objects\Database Generation\Group] +Create=Yes +Drop=Yes +Comment=Yes +Privilege=No + +[Physical Objects\Database Generation\Role] +Create=Yes +Drop=Yes +Privilege=No + +[Physical Objects\Database Generation\UserDefinedDataType] +Create=Yes +Comment=Yes +Drop=Yes + +[Physical Objects\Database Generation\UserDefinedDataType\Create] +Default value=Yes +Check=Yes + +[Physical Objects\Database Generation\AbstractDataType] +Create=Yes +Header=Yes +Footer=Yes +Drop=Yes +Comment=Yes +Install JAVA class=Yes +Remove JAVA class=Yes +Permission=No + +[Physical Objects\Database Generation\Rule] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\Default] +Create=Yes +Comment=Yes +Drop=Yes + +[Physical Objects\Database Generation\Sequence] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[Physical Objects\Database Generation\Table&&Column\Table] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[Physical Objects\Database Generation\Table&&Column\Table\Create] +Check=Yes +Physical Options=Yes +Header=Yes +Footer=Yes + +[Physical Objects\Database Generation\Table&&Column\Table\Create\Check] +Constraint declaration=No + +[Physical Objects\Database Generation\Table&&Column\Column] +User datatype=No +Default value=Yes +Check=Yes +Physical Options=Yes +Comment=Yes + +[Physical Objects\Database Generation\Table&&Column\Column\Check] +Constraint declaration=No + +[Physical Objects\Database Generation\Table&&Column\Key\Primary key] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\Table&&Column\Key\Primary key\Create] +Constraint declaration=No +Physical Options=Yes + +[Physical Objects\Database Generation\Table&&Column\Key\Alternate key] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\Table&&Column\Key\Alternate key\Create] +Constraint declaration=No +Physical Options=Yes + +[Physical Objects\Database Generation\Table&&Column\Foreign key] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\Table&&Column\Foreign key\Create] +Constraint declaration=Yes + +[Physical Objects\Database Generation\Table&&Column\Index] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\Table&&Column\Index\Create] +Constraint declaration=Yes +Physical Options=Yes + +[Physical Objects\Database Generation\Table&&Column\Index\Filter] +Primary key=No +Foreign key=Yes +Alternate key=No +Cluster=Yes +Other=Yes + +[Physical Objects\Database Generation\Table&&Column\Trigger] +Create=No +Drop=No +Comment=No + +[Physical Objects\Database Generation\Table&&Column\Trigger\Filter] +For insert=Yes +For update=Yes +For delete=Yes +For other=Yes + +[Physical Objects\Database Generation\View] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[Physical Objects\Database Generation\View\Create] +Force Column list=No +Physical Options=Yes +Header=Yes +Footer=Yes + +[Physical Objects\Database Generation\View\ViewColumn] +Comment=Yes + +[Physical Objects\Database Generation\View\ViewIndex] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\View\ViewIndex\Create] +Physical Options=Yes + +[Physical Objects\Database Generation\View\ViewIndex\Filter] +Cluster=Yes +Other=Yes + +[Physical Objects\Database Generation\View\Trigger] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\View\Trigger\Filter] +For insert=Yes +For update=Yes +For delete=Yes +For other=Yes + +[Physical Objects\Database Generation\DBMSTrigger] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\Synonym] +Create=Yes +Drop=Yes + +[Physical Objects\Database Generation\Synonym\Filter] +Table=Yes +View=Yes +Proc=Yes +Synonym=Yes +Database Package=Yes +Sequence=Yes + +[Physical Objects\Database Generation\JoinIndex] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\JoinIndex\Create] +Physical Options=Yes +Header=Yes +Footer=Yes + +[Physical Objects\Database Generation\Procedure] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[Physical Objects\Database Generation\Procedure\Create] +Header=Yes +Footer=Yes + +[Physical Objects\Database Generation\DatabasePackage] +Create=Yes +Drop=Yes +Permission=No + +[Physical Objects\Database Generation\WebService] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\Dimension] +Create=Yes +Drop=Yes + +[Physical Objects\Database Generation\ExtendedObject <<Cluster>>] +Create=Yes +Drop=Yes + +[Physical Objects\Database Generation\ExtendedObject <<Cluster>>\ExtendedSubObject <<ClusterColumn>>] +Create=Yes + +[Physical Objects\Database Generation\ExtendedObject <<Cluster>>\ExtendedSubObject <<ClusterIndex>>] +Create=Yes +Drop=Yes + +[Physical Objects\Database Generation\ExtendedObject <<DatabaseLink>>] +Create=Yes +Drop=Yes + +[Physical Objects\Database Generation\ExtendedObject <<MaterializedViewLog>>] +Create=Yes + +[Physical Objects\Database Generation\View <<MaterializedView>>] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[Physical Objects\Database Generation\View <<MaterializedView>>\ViewColumn] +Comment=Yes + +[Physical Objects\Database Generation\View <<MaterializedView>>\ViewIndex] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\View <<MaterializedView>>\ViewIndex\Filter] +Cluster=Yes +Other=Yes + +[Physical Objects\Database Generation\View <<MaterializedView>>\Trigger] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\View <<MaterializedView>>\Trigger\Filter] +For insert=Yes +For update=Yes +For delete=Yes +For other=Yes +Database Generation + + + + +008463AC-0415-458F-88E1-20CA8C0DFF74 +RIGHTS +RIGHTS +1574325219 +iliessu +1574326207 +iliessu + + + +F2B42B5B-314C-4DB0-AA98-1F2D5C1430DE +Related Clusters +Related Clusters +1574325936 +iliessu +1574325936 +iliessu + + +C80DF891-27B2-45DF-A2C0-FBD89FD47778 +Related Columns +Related Columns +1574325936 +iliessu +1574325936 +iliessu + + + + +CC7616EB-4593-45F9-9F3A-AD15533DBF4C +ID +ID +1574325240 +iliessu +1574325250 +iliessu +NUMBER +1 + + +A89082D0-219A-48A1-B341-996826C0DC3F +CREATED_AT +CREATED_AT +1525785190 +iliessu +1574325348 +iliessu +DATE + + +458DAC01-6B00-4C7C-BFCA-5F5DFE24660B +CREATED_BY +CREATED_BY +1525785190 +iliessu +1574325348 +iliessu +NUMBER + + +8E9BE21B-CACC-4D0B-823B-AA829FCCDB1D +UPDATED_BY +UPDATED_BY +1525785190 +iliessu +1574325348 +iliessu +NUMBER + + +7475FD33-55B8-4156-8376-5779BA2A417D +UPDATED_AT +UPDATED_AT +1525785190 +iliessu +1574325348 +iliessu +DATE + + + + +88645B51-CAD8-49F4-A0BC-BCB31F06BA1C +PK_RIGHTS +PK_RIGHTS +1574325226 +iliessu +1574325259 +iliessu + + +5174CE35-3FBF-4323-9219-6D04EAB80E14 +Related Columns +Related Columns +1574325254 +iliessu +1574325259 +iliessu + + + + + + + + + + + + +A18D8736-A324-4143-B4BB-B404DE446B27 +CONTEXT_RIGHTS +CONTEXT_RIGHTS +1574325265 +iliessu +1574326562 +iliessu + + + +CB26B708-7C7E-4179-B08B-ACC25689135E +Related Clusters +Related Clusters +1574326580 +iliessu +1574326580 +iliessu + + +2DF524E1-2157-44BA-9F8B-5E40395DC179 +Related Columns +Related Columns +1574326580 +iliessu +1574326580 +iliessu + + + + +558D254A-2994-444D-8DC0-D76D54C52FEB +ID +ID +1574325282 +iliessu +1574326275 +iliessu +NUMBER +1 + + +1CF1AA5D-1E85-44BE-9AC9-3B9BDEC8C653 +CONTEXT_ID +CONTEXT_ID +1574326062 +iliessu +1574326568 +iliessu +NUMBER + + +ED0C669B-1581-420D-A994-E43EEAF33399 +RIGHT_ID +RIGHT_ID +1574326020 +iliessu +1574326568 +iliessu +NUMBER + + +FAC0C62F-89CC-4ADC-8A8D-6401A68915B6 +CREATED_AT +CREATED_AT +1525785190 +iliessu +1574325958 +iliessu +DATE + + +03D11B7E-5C33-466F-A9DF-028345E7F3C4 +CREATED_BY +CREATED_BY +1525785190 +iliessu +1574325958 +iliessu +NUMBER + + +D38972BC-3878-47EB-A8A5-2105E2254B80 +UPDATED_BY +UPDATED_BY +1525785190 +iliessu +1574325958 +iliessu +NUMBER + + +0C3E5085-553F-4A13-932B-5496549C7EF0 +UPDATED_AT +UPDATED_AT +1525785190 +iliessu +1574325958 +iliessu +DATE + + + + +E0B53A1D-AB6F-4B33-8C5B-940B3EF91A74 +PK_CONTEXT_RIGHTS +PK_CONTEXT_RIGHTS +1574325282 +iliessu +1574325302 +iliessu + + + + + + + +BC7EEAEB-CFF0-4BB2-A835-480B26B792EC +UX_CONTEXT_RIGHTS +UX_CONTEXT_RIGHTS +1574326542 +iliessu +1574326568 +iliessu + + +E06CDFDA-C94D-4DF9-B9A4-19EEFA621BB1 +1574326562 +iliessu +1574326568 +iliessu + + + + + +A273FBEE-8088-49AC-AA49-F1166845D5D2 +1574326562 +iliessu +1574326568 +iliessu + + + + + + + + + + + + +0851247C-91BE-4E39-B60F-266769763A5B +NEW_PERSONS +NEW_PERSONS +1575465143 +iliessu +1575470468 +iliessu +temporary person placeholder + + + +3D970BDB-C3AD-4134-AF49-D94CFA4C922D +LOCAL_PER_ID +LOCAL_PER_ID +1575465145 +iliessu +1575465202 +iliessu +NUMBER +1 + + +DB10ECE0-965D-4AEE-B4AF-445126C1E3CE +LAST_NAME +LAST_NAME +1575449595 +iliessu +1575465272 +iliessu +VARCHAR2(256) +256 + + +579F9A94-A280-4974-9982-48CEC8CC2DF1 +FIRST_NAME +FIRST_NAME +1575449595 +iliessu +1575465272 +iliessu +VARCHAR2(256) +256 + + +96E85A6A-18D2-4DD6-8098-B6C3AEC68439 +GENDER +GENDER +1575449595 +iliessu +1575465272 +iliessu +M +F +CHAR(1) +1 + + +E2D11655-BF0A-4210-AEE5-0A1B7CC0D2CE +EMAIL +EMAIL +1575449595 +iliessu +1575470464 +iliessu +VARCHAR2(4000) +4000 + + +7413488D-C0A5-45B1-A52E-EF38E5B639F0 +PLACE_OF_RECRUITMENT +PLACE_OF_RECRUITMENT +1575449595 +iliessu +1575465372 +iliessu +NUMBER + + +314B726F-4D01-4A4E-B221-083F43E36CF9 +CREATED_AT +CREATED_AT +1525785190 +iliessu +1575465298 +iliessu +DATE + + +7FD5CDEB-0148-4F21-A734-0A2F7BEB8409 +CREATED_BY +CREATED_BY +1525785190 +iliessu +1575465298 +iliessu +NUMBER + + +C8200503-8509-441C-9340-A134B2C84D0D +UPDATED_BY +UPDATED_BY +1525785190 +iliessu +1575465298 +iliessu +NUMBER + + +FF846808-5C03-4580-825C-A61BAD90ABE7 +UPDATED_AT +UPDATED_AT +1525785190 +iliessu +1575465298 +iliessu +DATE + + + + +F1581324-E08E-44F0-B3F4-84E0DC07C03F +PK_NEW_PERSON +PK_NEW_PERSON +1575465145 +iliessu +1575465390 +iliessu + + + + + + + +A5B5A357-9EBB-468C-AA74-1952EC3658ED +UX_NEW_PERSONS_EMAIL +UX_NEW_PERSONS_EMAIL +1575470432 +iliessu +1575470464 +iliessu +1 + + +EE5FBDD5-E180-4F56-AAE3-2E2A294966B5 +1575470459 +iliessu +1575470464 +iliessu + + + + + + + + + + + + +867B9ACE-563C-4767-8EA7-A374B2B776BD +PLACE +PLACE +1575292537 +iliessu +1575470563 +iliessu + + + +B4974057-FAE9-4D5B-AFCE-25BD3209C9F3 +Related Clusters +Related Clusters +1575470556 +iliessu +1575470563 +iliessu + + +D1EBF825-F191-4071-9433-BC25C728EF4C +Related Columns +Related Columns +1575470556 +iliessu +1575470563 +iliessu + + + + +F1EB6B6D-7A3F-4614-A7C1-5799E3430F9B +ID +ID +1575449656 +iliessu +1575449804 +iliessu +NUMBER +1 + + +B709CD81-742E-4C78-9B48-8CBA0513A541 +COUNTRY +COUNTRY +1575449656 +iliessu +1575470561 +iliessu +VARCHAR2(128) +128 +1 + + +FA549245-188C-4F80-AAE7-5FE048A87FB8 +CITY +CITY +1575449656 +iliessu +1575470561 +iliessu +VARCHAR2(128) +128 +1 + + + + +CEC5B537-2D35-44C9-AEC2-AA4904306162 +PK_PLACES +PK_PLACES +1575449801 +iliessu +1575465755 +iliessu + + + + + + + +A1859E05-264F-4104-A8FC-C7C4C878E095 +UX_CITYCOUNTRY +UX_CITYCOUNTRY +1575470478 +iliessu +1575470503 +iliessu +1 + + +28C6DECA-C250-44D6-9994-A601A54D08F1 +1575470499 +iliessu +1575470503 +iliessu + + + + + +CC78E6D8-5560-4007-824B-5D2A354F3270 +1575470499 +iliessu +1575470503 +iliessu + + + + + + + + + + + + +67256F3C-3F51-4F1E-B5EB-E36E7A059C7E +ORGANIZATIONS +ORGANIZATIONS +1575292563 +iliessu +1575465417 +iliessu + + + +DF205C6C-ABCF-4543-994E-6CF1BD29AC8C +ORG_ID +ORG_ID +1575374853 +iliessu +1575449419 +iliessu +NUMBER +1 + + +0F4BC290-C998-4E0E-BA61-2E689FAEDFD6 +NAME +NAME +1575375090 +iliessu +1575469694 +iliessu +VARCHAR2(624) +624 + + +6312CA66-B830-420F-BE3C-17596FE44253 +COUNTRY +COUNTRY +1575375090 +iliessu +1575469694 +iliessu +VARCHAR2(624) +624 + + +E063A588-8224-46D5-A75E-4111DFEC0C2E +CITY +CITY +1575375090 +iliessu +1575469694 +iliessu +VARCHAR2(3) +3 + + +C03E7AA0-92B4-4996-8838-130F897750E8 +ACTIVE +ACTIVE +1575375090 +iliessu +1575449419 +iliessu +CHAR(1) +1 + + +799A7EE6-C039-4B2C-8727-A62EA60B4A54 +REGIONALIZED +REGIONALIZED +1575375090 +iliessu +1575449419 +iliessu +CHAR(1) +1 + + +B097A072-E275-4A04-8954-75B9F6DF2655 +IN_EU +IN_EU +1575375090 +iliessu +1575449419 +iliessu +CHAR(1) +1 + + +8DB91E14-C3B0-4A05-863A-2E402AAA05E5 +INTERNATIONAL_ORG +INTERNATIONAL_ORG +1575375090 +iliessu +1575449419 +iliessu +CHAR(1) +1 + + +F5FF3B36-304A-40C2-9508-AE2F608019BC +LCA_PERCENT +LCA_PERCENT +1575375090 +iliessu +1575449419 +iliessu +NUMBER + + +776481D9-4F64-4DAB-9CD4-A9F0E6897A9E +LCA +LCA +1575375090 +iliessu +1575449419 +iliessu +NUMBER + + +9D820CD9-02AD-4ADB-B943-B7D07805287E +LCA_VALID_FROM +LCA_VALID_FROM +1575375090 +iliessu +1575449419 +iliessu +DATE + + + + +9E3A4C56-78EA-4181-B9DA-B455731102BE +PK_ORG_ID +PK_ORG_ID +1575374853 +iliessu +1575449419 +iliessu + + + + + + + + + + +B2D85F04-D9C7-4514-B549-9DD51C466C32 +PERSONS +PERSONS +1575292439 +iliessu +1575540826 +iliessu +job holder + + + +9636A028-5A81-470A-AF93-3FC73A21C8AD +PER_ID +PER_ID +1575449595 +iliessu +1575449727 +iliessu +NUMBER + + +C9FFF5A2-D436-45A8-969E-F5B27CE6C662 +LAST_NAME +LAST_NAME +1575449595 +iliessu +1575465251 +iliessu +VARCHAR2(256) +256 + + +6886BF81-F625-446B-B0E0-09F245940E56 +FIRST_NAME +FIRST_NAME +1575449595 +iliessu +1575465251 +iliessu +VARCHAR2(256) +256 + + +80544C91-4DFB-4A23-9825-292828987EEF +GENDER +GENDER +1575449595 +iliessu +1575449742 +iliessu +M +F +CHAR(1) +1 + + +D242D5C0-512F-40C6-8DBF-90A125598D78 +EMAIL +EMAIL +1575449595 +iliessu +1575465258 +iliessu +VARCHAR2(4000) +4000 + + +189EF38B-8C3D-4D85-AB6B-399F7D54BFED +PLACE_OF_ORIGIN +PLACE_OF_ORIGIN +1575449595 +iliessu +1575465651 +iliessu +NUMBER + + +B660B86B-BDB4-48F6-A543-9D5AFC05A1E9 +PLACE_OF_RECRUITMENT +PLACE_OF_RECRUITMENT +1575449595 +iliessu +1575465687 +iliessu +NUMBER + + + + +73FCBDF4-79AE-41D5-9831-6E2600A368AB +__STATES +__STATES +1575292537 +iliessu +1575449419 +iliessu + + + +EA185921-5F80-4F05-BADA-C54018A476BD +ISO_CODE +ISO_CODE +1575465730 +iliessu +1575465740 +iliessu +NUMBER + + + + +C704B820-1054-4E53-B387-041070309BF7 +MOVEMENT_CONTEXT +MOVEMENT_CONTEXT +1574325168 +iliessu +1575449419 +iliessu +MOVEMENT TYPE CONTEXT + + + +5AD5A39E-6B5B-4A1C-87B0-56416EEFC126 +Related Clusters +Related Clusters +1575293146 +iliessu +1575293146 +iliessu + + +382D16AC-50B5-4687-96F1-285E4C2F01A8 +Related Columns +Related Columns +1575293146 +iliessu +1575293146 +iliessu + + + + +C4FF7E27-34C5-48BA-8194-D9E3B2014D83 +ID +ID +1574325189 +iliessu +1575449419 +iliessu +NUMBER +1 + + + + + +A859A60C-BAED-4ECE-A954-4AC3860E095D +ACTIVE +ACTIVE +1575290196 +iliessu +1575449419 +iliessu +Y +N +CHAR(1) +1 + + +254B6FBF-40B9-4400-8C59-6D7A196E009B +NAME +NAME +1575537364 +iliessu +1575537388 +iliessu +VARCHAR2(128) +128 + + +218B5156-9DFD-47A0-8EE0-BADF42CDAEB2 +CREATED_AT +CREATED_AT +1525785190 +iliessu +1575449419 +iliessu +DATE + + +B70953D9-3786-476D-B06D-92D29A7BD25B +CREATED_BY +CREATED_BY +1525785190 +iliessu +1575449419 +iliessu +NUMBER + + +3AA98821-6932-45EB-A054-1A3FE61BDF1F +UPDATED_BY +UPDATED_BY +1525785190 +iliessu +1575449419 +iliessu +NUMBER + + +DDF84018-3C20-4654-A6F0-8639C3F03F1F +UPDATED_AT +UPDATED_AT +1525785190 +iliessu +1575449419 +iliessu +DATE + + + + +8F053562-3810-466B-AFD1-D02A05FF56D1 +PK_ROTATION_CONTEXT +PK_ROTATION_CONTEXT +1574325189 +iliessu +1575449419 +iliessu + + +928236E6-0CD0-4B9E-AF2E-18A65D5B3B4F +Related Columns +Related Columns +1574326534 +iliessu +1575449419 +iliessu + + + + + + + + + +92B5383B-6B81-4FFA-8A2A-BDA23DAD277B +IDX_ACTIVE_CONTEXTS +IDX_ACTIVE_CONTEXTS +1575470361 +iliessu +1575470392 +iliessu + + +1B02FAFC-B7E1-49BB-BE09-104063FFD6B9 +1575470386 +iliessu +1575470392 +iliessu + + + + + + + + + +9C00B3D4-71B5-4E87-83FB-5CE0801E4F7E +CompoundDeleteTrigger_movement_context +COMPOUNDDELETETRIGGER_MOVEMENT +1575470249 +iliessu +1575470270 +iliessu +compound +delete + + + + + +9A43B581-BC72-4128-8A2F-582E931F64C8 +tib_movement_context +TIB_MOVEMENT_CONTEXT +1575470249 +iliessu +1575470270 +iliessu + + + + + + + + +D784009B-AF4B-469D-9F78-97B6EB472535 +CompoundInsertTrigger_movement_context +COMPOUNDINSERTTRIGGER_MOVEMENT +1575470249 +iliessu +1575470270 +iliessu +compound + + + + + +92A30B9B-7DC4-441E-B6C1-5492FF157881 +CompoundUpdateTrigger_movement_context +COMPOUNDUPDATETRIGGER_MOVEMENT +1575470249 +iliessu +1575470270 +iliessu +compound +update + + + + + + + + + + +078999BB-92B8-4F47-A8DA-DB29C4E9951C +REASONS +REASONS +1575292521 +iliessu +1575449419 +iliessu + + + +569F9E2F-4EE2-4F6F-96BA-4F84D362BB74 +ID +ID +1575374009 +iliessu +1575449419 +iliessu +NUMBER +1 + + + + + +EA6FB87E-B0E9-46B0-B090-1581CBB9A51F +NAME +NAME +1575374023 +iliessu +1575470576 +iliessu +VARCHAR2(265) +265 +1 + + +E5018CDA-8B4C-470B-AC84-C9F4C11F02B3 +MOVEMENT_CONTEXT_ID +MOVEMENT_CONTEXT_ID +1575374023 +iliessu +1575449419 +iliessu +NUMBER + + +495A573D-AFB1-4DD5-B0E7-189A589CDA1C +ACTIVE +ACTIVE +1575374023 +iliessu +1575449419 +iliessu +CHAR(1) +1 + + + + +D89BE85D-DD8F-40A8-830D-168036F41F56 +PK_REASONS +PK_REASONS +1575374009 +iliessu +1575449419 +iliessu + + + + + + + +5D4C4124-72AF-4826-8E99-D3704CEE1B4F +UK_REASON_NAME +UK_REASON_NAME +1575374071 +iliessu +1575449419 +iliessu +1 + + +BD7BAE07-1A3C-4F3D-B4FA-A002676767E3 +1575374084 +iliessu +1575449419 +iliessu + + + + + + + + + +7B856142-0648-4509-94BA-D97B33065072 +CompoundDeleteTrigger_reasons +COMPOUNDDELETETRIGGER_REASONS +1575470190 +iliessu +1575470238 +iliessu +compound +delete + + + + + +17331C48-0683-49C1-B510-82D62D823B17 +tib_reasons +TIB_REASONS +1575470190 +iliessu +1575470238 +iliessu + + + + + + + + +4E6A2302-5A98-4417-A731-0B46D5053D0E +CompoundInsertTrigger_reasons +COMPOUNDINSERTTRIGGER_REASONS +1575470190 +iliessu +1575470238 +iliessu +compound + + + + + +D3167C9C-9FD0-4B85-B403-6D661508E987 +CompoundUpdateTrigger_reasons +COMPOUNDUPDATETRIGGER_REASONS +1575470190 +iliessu +1575470238 +iliessu +compound +update + + + + + + + + + + +198A41F3-3A45-400A-B39C-6F01FFD302DD +ROTATION_FILES +ROTATION_FILES +1574260680 +iliessu +1575449419 +iliessu +See + +BR001 - Movement File - Structure + + + +CE8BBC24-A348-4BAA-883D-6F558087CE41 +Related Clusters +Related Clusters +1574326522 +iliessu +1574326522 +iliessu + + +402B6B48-960C-45C6-8B1B-82D0B39CCD65 +Related Columns +Related Columns +1574326522 +iliessu +1574326522 +iliessu + + + + +D2430B00-EB01-4D0C-8ED7-30A31D1D0F83 +ID +ID +1574263616 +iliessu +1574326341 +iliessu +NUMBER +1 + + + + + +F8FD9C07-1EAC-4415-B194-F1471E0769F7 +LINKED_FILE_ID +LINKED_FILE_ID +1575292577 +iliessu +1575449419 +iliessu +NUMBER + + +CDBBF0D8-BF6A-4BC0-BE2B-0407106119F1 +CONTEXT_ID +CONTEXT_ID +1574326309 +iliessu +1574326484 +iliessu +NUMBER + + +68C955F0-4698-4142-850F-5CC54BA88287 +FILE_ID +FILE_ID +1574263616 +iliessu +1575470594 +iliessu +VARCHAR2(64) +64 +1 + + +EFA5E233-F5AE-46AB-A9A3-E120B812C643 +PER_ID +PER_ID +1575370550 +iliessu +1575449419 +iliessu +NUMBER + + +F5EBB900-988B-4F23-BAB3-782CDF366D05 +REASON_ID +REASON_ID +1575373935 +iliessu +1575449419 +iliessu +NUMBER + + +06540B01-BC12-4DB1-B39E-EAD6009D2469 +PRIORITY +PRIORITY +1575370550 +iliessu +1575469611 +iliessu +CHAR(1) +1 + + +19BD9C42-13F6-4678-89DA-127565366C23 +JOB_NUMBER +JOB_NUMBER +1575374401 +iliessu +1575449419 +iliessu +NUMBER + + +484031A6-F323-48B2-B511-C48396A1924F +BUDGET_LINE +BUDGET_LINE +1575374618 +iliessu +1575449419 +iliessu +VARCHAR2(256) +256 + + +DEAA7A5C-F7F7-4673-A63D-136F16DA99F1 +ALLOCATED_TO +ALLOCATED_TO +1575374890 +iliessu +1575449419 +iliessu +NUMBER + + +F337C775-B0A5-44FC-841F-A11DD0B4B977 +NON_FAMILY_POSTING +NON_FAMILY_POSTING +1575375218 +iliessu +1575449419 +iliessu +CHAR(1) +1 + + +8AF3EA48-EC8F-4620-9D55-388F0AD582F6 +CHILD_FREE_POSTING +CHILD_FREE_POSTING +1575375218 +iliessu +1575449419 +iliessu +CHAR(1) +1 + + +E97DD41C-42C5-49F9-AF8C-EFC9D0F50FE6 +START_DATE +START_DATE +1575375280 +iliessu +1575449419 +iliessu +DATE + + +737B33D5-F58B-49F4-B1AB-351ADC7D08B2 +ESTIMATED_END_DATE +ESTIMATED_END_DATE +1575375280 +iliessu +1575449419 +iliessu +DATE + + +470119FE-EABF-49FF-95E6-B977EB550A53 +SECONDMENT +SECONDMENT +1575375326 +iliessu +1575449419 +iliessu +CHAR(1) +1 + + +28D965AA-7B58-45D2-8225-E20DAC2F3B26 +STATE +STATE +1575370550 +iliessu +1575469564 +iliessu +VARCHAR2(16) +16 + + +B6BBB5AA-6858-42B0-920C-C6D745380E05 +CREATED_AT +CREATED_AT +1525785190 +iliessu +1574325983 +iliessu +DATE + + +A27D9FD6-7BF7-456B-993A-0145DDD55E12 +CREATED_BY +CREATED_BY +1525785190 +iliessu +1574325983 +iliessu +NUMBER + + +EC510C01-D2F0-49B7-8201-25C57A7CF4AC +UPDATED_BY +UPDATED_BY +1525785190 +iliessu +1574325983 +iliessu +NUMBER + + +1012F5B6-DE51-4C02-A7E4-B00B9D57F699 +UPDATED_AT +UPDATED_AT +1525785190 +iliessu +1574325983 +iliessu +DATE + + + + +287183D2-7659-43F9-AE5D-44BA34874BB8 +PK_ROTATION_FILES +PK_ROTATION_FILES +1574263616 +iliessu +1574264354 +iliessu + + + + + + + +C7C1D057-14AD-475C-8FE1-8B93515C4059 +UK_ROTATION_FILE +UK_ROTATION_FILE +1574263842 +iliessu +1574263862 +iliessu +1 + + +653AABF1-E4BE-4956-B455-96CC2B64CD7F +1574263857 +iliessu +1575449419 +iliessu + + + + + + + +4EEAB4B9-FCD4-492B-AAF6-88B640DD1E86 +IDX_CONTEXT_ID +IDX_CONTEXT_ID +1574326468 +iliessu +1574326484 +iliessu + + +18DAA741-A71D-4BD9-8B4F-CCE12EAFF376 +1574326478 +iliessu +1574326484 +iliessu + + + + + + + +AB9CCCC8-348B-4464-8FA0-B2FF9D23FB5E +IDX_ROTATION_UID +IDX_ROTATION_UID +1574326477 +iliessu +1574326503 +iliessu +1 + + +B68513A9-05C7-4F73-9C2A-8B3CC476BF77 +1574326498 +iliessu +1575449419 +iliessu + + + + + + + +B3BDBA74-5283-4C37-A492-FCEC9A419EDB +IDX_ROTATION_SELF +IDX_ROTATION_SELF +1575370662 +iliessu +1575449419 +iliessu + + +C08DDEC9-1E96-4D5D-86EA-CD9CBB0FD182 +1575370676 +iliessu +1575449419 +iliessu + + + + + + + + + +64D84049-B150-4DF9-AD72-80B2E34F82FF +CompoundDeleteTrigger_rotation_files +COMPOUNDDELETETRIGGER_ROTATION +1575470170 +iliessu +1575470172 +iliessu +compound +delete + + + + + +1F5EE14B-F0E2-422B-AD5D-052D9235F083 +tib_rotation_files +TIB_ROTATION_FILES +1575470170 +iliessu +1575470172 +iliessu + + + + + + + + +FA5C070F-CE87-4D47-9A8B-78A94515A722 +CompoundInsertTrigger_rotation_files +COMPOUNDINSERTTRIGGER_ROTATION +1575470170 +iliessu +1575470172 +iliessu +compound + + + + + +DB48D9D9-4D33-4CCA-AB7D-3DA9BDFE6C5E +CompoundUpdateTrigger_rotation_files +COMPOUNDUPDATETRIGGER_ROTATION +1575470170 +iliessu +1575470172 +iliessu +compound +update + + + + + + + + + + +1AECE29B-85CD-444E-B19B-E14F31B52E55 +BUDGET_LINES +BUDGET_LINES +1575374645 +iliessu +1575541401 +iliessu + + + +EFBA779C-1DC9-40B2-B123-7684C5EB1FC5 +BUDGET_LINE +BUDGET_LINE +1575374660 +iliessu +1575449419 +iliessu +VARCHAR2(256) +256 +1 + + + + +8572D565-27EC-4D4F-8B25-3F5A59FC9137 +PK_BUGET_LINES +PK_BUGET_LINES +1575374660 +iliessu +1575449419 +iliessu + + + + + + + + + + +7D77FDD1-E9FB-4272-AB31-A430E1DFB326 +JOBS +JOBS +1575374376 +iliessu +1575541361 +iliessu + + + +5C934254-EA5D-41B6-88AD-B16BE23EBBA5 +JOB_NUMBER +JOB_NUMBER +1575374381 +iliessu +1575449419 +iliessu +NUMBER +1 + + +B39D7A44-CA41-4E65-8E8D-9F24ADFB4A41 +STATUTORY_LINK +STATUTORY_LINK +1575374769 +iliessu +1575449419 +iliessu +VARCHAR2(8) +8 + + +9746E73E-8B29-4AD5-AC1D-E7110629DB8F +JOB_TYPE +JOB_TYPE +1575374799 +iliessu +1575449419 +iliessu +VARCHAR2(16) +16 + + + + +7E33A4FF-64AB-476F-90BB-4E11CD4043BA +PK_JOBS +PK_JOBS +1575374381 +iliessu +1575449419 +iliessu + + + + + + + + + + + + +DAD94176-ED3B-4D39-8925-6506FE9377CD +FK_CONTEXT__RIGHTS +FK_CONTEXT__RIGHTS +1574326175 +iliessu +1574326207 +iliessu +FK_CONTEXT__RIGHTS +0..* +1 +1 + + + + + + + + + + + +5F07D3F5-B658-4EC8-88FD-6242EF9049AF +1574326175 +iliessu +1574326185 +iliessu + + + + + + + + + + +C0D14299-6C8D-44D4-972D-5E9ABE550092 +FK_NEW_PERSSON_RCRTMNT_PLACE +FK_NEW_PERSSON_RCRTMNT_PLACE +1575465344 +iliessu +1575465372 +iliessu +FK_NEW_PERSSON_RCRTMNT_PLACE +0..* +1 +1 + + + + + + + + + + + +5EA27C82-FBA4-454E-B248-1BF63A59B1BF +1575465344 +iliessu +1575465372 +iliessu + + + + + + + + + + +4D508B74-E9C9-4C9F-ACE5-C7CABE3F250C +FK_PERSON__ORIGIN_PLACE +FK_PERSON__ORIGIN_PLACE +1575449820 +iliessu +1575465651 +iliessu +FK_PERSON__ORIGIN_PLACE +0..* +1 +1 + + + + + + + + + + + +AA2D716F-AD1D-4E7E-B832-1787A990313A +1575449820 +iliessu +1575465651 +iliessu + + + + + + + + + + +2179027C-D265-4D4F-9E68-7EA7B5DDEECA +FK_PERSON__RECRUITMENT_PLACE +FK_PERSON__RECRUITMENT_PLACE +1575449824 +iliessu +1575465687 +iliessu +FK_PERSON__RECRUITMENT_PLACE +0..* +1 +1 + + + + + + + + + + + +C4CBF7FD-AB7D-4C21-9B9B-5C9D35F96DF1 +1575449824 +iliessu +1575465687 +iliessu + + + + + + + + + + +827F0A7D-B30E-49BD-9E6C-5978DA062306 +FK_CONTEXT_RIGHTS__CONTEXT +FK_CONTEXT_RIGHTS__CONTEXT +1574326257 +iliessu +1575465713 +iliessu +FK_CONTEXT_RIGHTS__CONTEXT +0..* +1 +1 + + + + + + + + + + + +9BDD039F-0294-4385-8770-C35B6AC7ED3B +1574326257 +iliessu +1575449419 +iliessu + + + + + + + + + + +71F9C105-0D7B-47DD-B71E-68FFE5FFFD57 +FK_ROTATIN_FILE_SELF_REF +FK_ROTATIN_FILE_SELF_REF +1575370625 +iliessu +1575449419 +iliessu +FK_ROTATIN_FILE_SELF_REF +0..* +1 +1 + + + + + + + + + + + +DF9A3EC8-097E-489E-87CC-F9B21AD09E34 +1575370625 +iliessu +1575449419 +iliessu + + + + + + + + + + +68032288-F59A-4905-9315-026E48A1226F +FK_ROTATION__CONTEXT +FK_ROTATION__CONTEXT +1574326327 +iliessu +1575449419 +iliessu +FK_ROTATION__CONTEXT +0..* +1 +1 + + + + + + + + + + + +A9E26D88-664A-4443-A0F3-7785726D485D +1574326327 +iliessu +1575449419 +iliessu + + + + + + + + + + +00B6B097-A96E-4FDB-AC64-BA3BFCC2608D +FK_ROTATION_ALLOC_TO_ORG +FK_ROTATION_ALLOC_TO_ORG +1575374914 +iliessu +1575449419 +iliessu +FK_ROTATION_ALLOC_TO_ORG +0..* +1 +1 + + + + + + + + + + + +5C79B624-99B6-4A89-BB6A-2C8E1537B772 +1575374914 +iliessu +1575449419 +iliessu + + + + + + + + + + +42913DE9-21A0-4412-82C0-0F1BE5DAF9AD +FK_ROTATION_FILE_REASON +FK_ROTATION_FILE_REASON +1575374129 +iliessu +1575449419 +iliessu +FK_ROTATION_FILE_REASON +0..* +1 +1 + + + + + + + + + + + +7CD4FCB9-C3BC-436C-97FF-A95F752D733E +1575374129 +iliessu +1575449419 +iliessu + + + + + + + + + + +FFED3B31-34E6-4E7E-B587-A8E76D9234C5 +Reference_6 +REFERENCE_6 +1575374170 +iliessu +1575449419 +iliessu +FK_REASON_CONTEXT +0..* +1 +1 + + + + + + + + + + + +BE02AAA6-1662-4C2E-895F-EE3787E8F27F +1575374170 +iliessu +1575449419 +iliessu + + + + + + + + + + +01941324-18A5-462D-8189-4F97E32F3FDD +FK_ROTATION_BUGET_LINE +FK_ROTATION_BUGET_LINE +1575374683 +iliessu +1575449419 +iliessu +FK_ROTATION_BUGET_LINE +0..* +1 +1 + + + + + + + + + + + +47DB98EF-F515-4CF3-92FD-077BAE833B4E +1575374683 +iliessu +1575374683 +iliessu + + + + + + + + + + +9211335A-E246-441D-8F09-9B5D874946E3 +FK_ROTATION_REFERENCE___JOBS +FK_ROTATION_REFERENCE___JOBS +1575374425 +iliessu +1575449419 +iliessu +0..* +1 +1 + + + + + + + + + + + +A30C0C51-AF82-4EAE-A991-B53BD6E826B7 +1575374425 +iliessu +1575374425 +iliessu + + + + + + + + + + + + +26F5F34C-F3BD-4D7C-8804-3F9CD0C5D228 +SEQ_MOVEMENT_CONTEXT +SEQ_MOVEMENT_CONTEXT +1575470170 +iliessu +1575541062 +iliessu +increment by 1 +start with 1 + maxvalue 99999999999999 + minvalue 1 + cache 50 + + +827416D5-84DF-4596-A3C2-6800F6D88EC2 +SEQ_REASONS +SEQ_REASONS +1575469925 +iliessu +1575541071 +iliessu +increment by 1 +start with 1 + maxvalue 99999999999999 + minvalue 1 + cache 50 + + +78D5A3F3-226A-4C27-AB65-D29F7672B853 +SEQ_ROTATION_FILES +SEQ_ROTATION_FILES +1575469932 +iliessu +1575541081 +iliessu +increment by 1 +start with 1 + maxvalue 99999999999999 + minvalue 1 + cache 50 + + + + +93994A7B-E23E-458F-B546-10529B9474F4 +PUBLIC +PUBLIC +1574260646 +iliessu +1574260646 +iliessu + + + + +FB425DEC-001B-4B23-8BB6-13546D689B08 +ORACLE Version 11g +ORA11GR1 +1574260647 +iliessu +1574260647 +iliessu + +file:///%_DBMS%/ora11g.xdb +BAE632F3-AC04-4059-9893-259ABA89351C +4BA9F647-DAB1-11D1-9944-006097355D9B + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/archive/e-RIGHTS.pdm b/e-rights-common/src/main/database/model/archive/e-RIGHTS.pdm new file mode 100644 index 0000000..c99790e --- /dev/null +++ b/e-rights-common/src/main/database/model/archive/e-RIGHTS.pdm @@ -0,0 +1,7449 @@ + + + + + + + + + +6E12FF96-2977-4E6D-9AB1-4AFD288B4319 +e-RIGHTS +E_RIGHTS +1574260648 +iliessu +1575537361 +iliessu +[FolderOptions] + +[FolderOptions\Physical Objects] +GenerationCheckModel=Yes +GenerationPath= +GenerationOptions=Database Generation=0C167109-AAAE-46F0-B15F-43E1F0FB3CB8 +GenerationTasks= +GenerationTargets= +GenerationSelections= +RevPkey=Yes +RevFkey=Yes +RevAkey=Yes +RevCheck=Yes +RevIndx=Yes +RevOpts=Yes +RevViewAsTabl=No +RevViewOpts=Yes +RevSystAsTabl=Yes +RevTablPerm=No +RevViewPerm=No +RevProcPerm=No +RevDbpkPerm=No +RevSqncPerm=No +RevAdtPerm=No +RevUserPriv=No +RevUserOpts=No +RevGrpePriv=No +RevRolePriv=No +RevDtbsOpts=Yes +RevDtbsPerm=No +RevViewIndx=Yes +RevJidxOpts=Yes +RevStats=No +RevTspcPerm=No +RevCaseSensitive=No +GenTrgrStdMsg=Yes +GenTrgrMsgTab= +GenTrgrMsgNo= +GenTrgrMsgTxt= +TrgrPreserve=No +TrgrIns=Yes +TrgrUpd=Yes +TrgrDel=Yes +TrgrC2Ins=Yes +TrgrC2Upd=Yes +TrgrC3=Yes +TrgrC4=Yes +TrgrC5=Yes +TrgrC6=Yes +TrgrC7=Yes +TrgrC8=Yes +TrgrC9=Yes +TrgrC10=Yes +TrgrC11=Yes +TrgrC1=Yes +TrgrC12Ins=Yes +TrgrC12Upd=Yes +TrgrC13=Yes +UpdateTableStatistics=Yes +UpdateColumnStatistics=Yes + +[FolderOptions\Physical Objects\Database Generation] +GenScriptName=2.user_objects.sql +GenScriptName0=user_objects.sql +GenScriptName1=e-das.sql +GenScriptName2=user_tables.sql +GenScriptName3=user_objects_2.3.sql +GenScriptName4=new_user_objects_2.3.sql +GenScriptName5=user_objects_draft.sql +GenScriptName6=user_organizations_objects_draft.sql +GenScriptName7=budgdel.sql +GenScriptName8= +GenScriptName9= +GenPathName=Y:\BABS3\3_IBS.6.IS Section\3_ISS_Teams\5_Java\projects\e-RIGHTS\ +GenSingleFile=Yes +GenODBC=No +GenCheckModel=Yes +GenScriptPrev=Yes +GenArchiveModel=No +GenUseSync=No +GenSyncChoice=0 +GenSyncArch= +GenSyncRmg=0 + +[FolderOptions\Physical Objects\Database Generation\Format] +GenScriptTitle=Yes +GenScriptNamLabl=No +GenScriptQDtbs=No +GenScriptQOwnr=Yes +GenScriptCase=0 +GenScriptEncoding=ANSI +GenScriptNAcct=No +IdentifierDelimiter=" + +[FolderOptions\Physical Objects\Database Generation\Database] +Create=Yes +Open=Yes +Close=Yes +Drop=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Database\Create] +Physical Options=Yes +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\Tablespace] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Tablespace\Create] +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\Storage] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\User] +Create=Yes +Drop=Yes +Comment=Yes +Privilege=No + +[FolderOptions\Physical Objects\Database Generation\User\Create] +Physical Options=No + +[FolderOptions\Physical Objects\Database Generation\Group] +Create=Yes +Drop=Yes +Comment=Yes +Privilege=No + +[FolderOptions\Physical Objects\Database Generation\Role] +Create=Yes +Drop=Yes +Privilege=No + +[FolderOptions\Physical Objects\Database Generation\UserDefinedDataType] +Create=Yes +Comment=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\UserDefinedDataType\Create] +Default value=Yes +Check=Yes + +[FolderOptions\Physical Objects\Database Generation\AbstractDataType] +Create=Yes +Header=Yes +Footer=Yes +Drop=Yes +Comment=Yes +Install JAVA class=Yes +Remove JAVA class=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Rule] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Default] +Create=Yes +Comment=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\Sequence] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Table&&Column] + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Table] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Table\Create] +Check=Yes +Physical Options=Yes +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Table\Create\Check] +Constraint declaration=No + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Column] +User datatype=No +Default value=Yes +Check=Yes +Physical Options=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Column\Check] +Constraint declaration=No + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key] + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Primary key] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Primary key\Create] +Constraint declaration=No +Physical Options=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Alternate key] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Alternate key\Create] +Constraint declaration=No +Physical Options=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Foreign key] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Foreign key\Create] +Constraint declaration=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Index] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Index\Create] +Constraint declaration=Yes +Physical Options=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Index\Filter] +Primary key=No +Foreign key=Yes +Alternate key=No +Cluster=Yes +Other=Yes + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Trigger] +Create=No +Drop=No +Comment=No + +[FolderOptions\Physical Objects\Database Generation\Table&&Column\Trigger\Filter] +For insert=Yes +For update=Yes +For delete=Yes +For other=Yes + +[FolderOptions\Physical Objects\Database Generation\View] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\View\Create] +Force Column list=No +Physical Options=Yes +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\View\ViewColumn] +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\View\ViewIndex] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\View\ViewIndex\Create] +Physical Options=Yes + +[FolderOptions\Physical Objects\Database Generation\View\ViewIndex\Filter] +Cluster=Yes +Other=Yes + +[FolderOptions\Physical Objects\Database Generation\View\Trigger] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\View\Trigger\Filter] +For insert=Yes +For update=Yes +For delete=Yes +For other=Yes + +[FolderOptions\Physical Objects\Database Generation\DBMSTrigger] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Synonym] +Create=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\Synonym\Filter] +Table=Yes +View=Yes +Proc=Yes +Synonym=Yes +Database Package=Yes +Sequence=Yes + +[FolderOptions\Physical Objects\Database Generation\JoinIndex] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\JoinIndex\Create] +Physical Options=Yes +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\Procedure] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\Procedure\Create] +Header=Yes +Footer=Yes + +[FolderOptions\Physical Objects\Database Generation\DatabasePackage] +Create=Yes +Drop=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\WebService] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\Dimension] +Create=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\Synchronization] +GenBackupTabl=1 +GenKeepBackTabl=1 +GenTmpTablDrop=No +GenKeepTablOpts=No + +[FolderOptions\Physical Objects\Database Generation\ExtendedObject <<Cluster>>] +Create=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\ExtendedObject <<Cluster>>\ExtendedSubObject <<ClusterColumn>>] +Create=Yes + +[FolderOptions\Physical Objects\Database Generation\ExtendedObject <<Cluster>>\ExtendedSubObject <<ClusterIndex>>] +Create=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\ExtendedObject <<DatabaseLink>>] +Create=Yes +Drop=Yes + +[FolderOptions\Physical Objects\Database Generation\ExtendedObject <<MaterializedViewLog>>] +Create=Yes + +[FolderOptions\Physical Objects\Database Generation\View <<MaterializedView>>] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[FolderOptions\Physical Objects\Database Generation\View <<MaterializedView>>\ViewColumn] +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\View <<MaterializedView>>\ViewIndex] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\View <<MaterializedView>>\ViewIndex\Filter] +Cluster=Yes +Other=Yes + +[FolderOptions\Physical Objects\Database Generation\View <<MaterializedView>>\Trigger] +Create=Yes +Drop=Yes +Comment=Yes + +[FolderOptions\Physical Objects\Database Generation\View <<MaterializedView>>\Trigger\Filter] +For insert=Yes +For update=Yes +For delete=Yes +For other=Yes + +[FolderOptions\Physical Objects\Test Data] +GenDataPathName= +GenDataSinglefile=Yes +GenDataScriptName=testdata +GenDataScriptName0= +GenDataScriptName1= +GenDataScriptName2= +GenDataScriptName3= +GenDataScriptName4= +GenDataScriptName5= +GenDataScriptName6= +GenDataScriptName7= +GenDataScriptName8= +GenDataScriptName9= +GenDataOdbc=0 +GenDataDelOld=No +GenDataTitle=No +GenDataDefNumRows=20 +GenDataCommit=0 +GenDataPacket=0 +GenDataOwner=No +GenDataProfNumb= +GenDataProfChar= +GenDataProfDate= +GenDataCSVSeparator=; +GenDataFileFormat=CSV +GenDataUseWizard=No + +[FolderOptions\Pdm] +IndxIQName=%COLUMN%_%INDEXTYPE% +IndxPK=Yes +IndxFK=Yes +IndxAK=Yes +IndxPKName=%TABLE%_PK +IndxFKName=%REFR%_FK +IndxAKName=%AKEY%_AK +IndxPreserve=No +IndxThreshold=0 +IndxStats=No +RefrPreserve=No +JidxPreserve=No +RbldMultiFact=Yes +RbldMultiDim=Yes +RbldMultiJidx=Yes +CubePreserve=No +TablStProcPreserve=No +ProcDepPreserve=Yes +TrgrDepPreserve=Yes +CubeScriptPath= +CubeScriptCase=0 +CubeScriptEncoding=ANSI +CubeScriptNacct=No +CubeScriptHeader=No +CubeScriptExt=csv +CubeScriptExt0=txt +CubeScriptExt1= +CubeScriptExt2= +CubeScriptSep=, +CubeScriptDeli=" +EstimationYears=0 +DfltDomnName=D_%.U:VALUE% +DfltColnName=D_%.U:VALUE% +DfltReuse=Yes +DfltDrop=Yes + +[FolderOptions\CheckModel] + +[FolderOptions\CheckModel\Package] + +[FolderOptions\CheckModel\Package\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\CheckPackageMissTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\DefaultCheckPackageMissTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\CircularReference] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\ConstraintName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\CnstMaxLen] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\CircularDependency] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Package\ShortcutUniqCode] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Table] + +[FolderOptions\CheckModel\Table\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\UniqIndex] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\MaxLen - NAME] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\EmptyColl - COLNCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\EmptyColl - INDXCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\EmptyColl - KEYCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\SerialColumnNumber] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\EmptyCollYesYes] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\TableIndexes] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\Mapping] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\MappingSFMap] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\EmptyColl - PERMCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Table\CheckTablePartitionKey] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTableStartDate] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTableRefNoLifecycle] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTableSourceMapping] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTablePartialColumnMapping] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTableKeyColumnMapping] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table\CheckTableNotOnLifecycleTablespace] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column] + +[FolderOptions\CheckModel\Table.Column\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\DomainDivergence] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\ColumnMandatory] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckNumParam] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckPrecSupLng] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckUndefDttp] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\FkeyDttpDivergence] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\FkeyCheckDivergence] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\ColnSqncNoKey] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\ColnSqncDttp] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\SerialColumnFK] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\ColumnCompExpr] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckColumnOneToOneMapping] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckColumnDataTypeMapping] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckColumnNoMapping] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Column\CheckDttpIncompatibleFormat] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index] + +[FolderOptions\CheckModel\Table.Index\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\EmptyColl - CIDXCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\UndefIndexType] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\IndexColumnCount] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\IQIndxHNGUniq] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\CheckIncludeColl - Tabl] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\ORA11GR1_Index_Check_Column_Encryption] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Index\ORA11GR1_Index_Check_Column_Expression] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key] + +[FolderOptions\CheckModel\Table.Key\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\EmptyColl - COLNCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\CheckIncludeColl - Tabl] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Key\MultiKeySqnc] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger] + +[FolderOptions\CheckModel\Table.Trigger\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table.Trigger\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index] + +[FolderOptions\CheckModel\Join Index\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\EmptyColl - JIDXTABL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\JidxRefr] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\IQJoinIndexRelationships] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\IQJoinIndexDuplicates] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Join Index\ORA11GR1_JoinIndex_Join_Index_Namespace] +CheckSeverity=No +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\View] + +[FolderOptions\CheckModel\View\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View\EmptyColl - PERMCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\View.View Index] + +[FolderOptions\CheckModel\View.View Index\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\EmptyColl - CIDXCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\IndexColumnCount] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View.View Index\CheckIncludeColl - Tabl] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference] + +[FolderOptions\CheckModel\Reference\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\Reflexive] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\EmptyColl - RFJNCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\IncompleteJoin] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\JoinOrder] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Reference\ORA11GR1_Reference_Rely_reference_on_Rely_primary_key] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference] + +[FolderOptions\CheckModel\View Reference\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\View Reference\EmptyColl - VRFJNCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain] + +[FolderOptions\CheckModel\Domain\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\CheckNumParam] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\CheckPrecSupLng] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\CheckUndefDttp] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Domain\CheckDttpIncompatibleFormat] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default] + +[FolderOptions\CheckModel\Default\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\DfltValeEmpty] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Default\DfltSameVale] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User] + +[FolderOptions\CheckModel\User\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\User\UniquePassword] +CheckSeverity=No +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Group] + +[FolderOptions\CheckModel\Group\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\EmptyColl - USERCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Group\UniquePassword] +CheckSeverity=No +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Role] + +[FolderOptions\CheckModel\Role\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Role\EmptyColl - USERCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure] + +[FolderOptions\CheckModel\Procedure\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\ProcBodyEmpty] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Procedure\EmptyColl - PERMCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\DBMS Trigger] + +[FolderOptions\CheckModel\DBMS Trigger\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\DbmsTriggerEvent] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\DBMS Trigger\ORA11GR1_DBMSTrigger_Trigger_event_with_inappropriate_time] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source] + +[FolderOptions\CheckModel\Data Source\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\EmptyColl - MODLSRC] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\DtscTargets] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Source\CheckDataSourceModels] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Horizontal Partitioning] + +[FolderOptions\CheckModel\Horizontal Partitioning\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Horizontal Partitioning\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Horizontal Partitioning\EmptyColl - PARTCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Horizontal Partitioning\TargetTables] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Vertical Partitioning] + +[FolderOptions\CheckModel\Vertical Partitioning\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Vertical Partitioning\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Vertical Partitioning\EmptyColl - PARTCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Vertical Partitioning\TargetTables] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table Collapsing] + +[FolderOptions\CheckModel\Table Collapsing\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table Collapsing\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table Collapsing\EmptyColl - TargetTable] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Table Collapsing\TargetTables] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube] + +[FolderOptions\CheckModel\Cube\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube\EmptyColl - ALLOLINKCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube\EmptyColl - Facts] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Cube\CubeDupAssociation] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact] + +[FolderOptions\CheckModel\Fact\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\EmptyColl - MEASCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\Mapping] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact\MappingSFMap] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension] + +[FolderOptions\CheckModel\Dimension\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\EmptyColl - DATTRCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\EmptyColl - HIERCOL] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\DimnDupHierarchy] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\DimnDefHierarchy] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\Mapping] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\MappingSFMap] +CheckSeverity=No +FixRequested=Yes +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension\SerialColumnNumber] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Association] + +[FolderOptions\CheckModel\Association\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Association\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Association\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Association\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Association\EmptyColl - Hierarchy] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute] + +[FolderOptions\CheckModel\Dimension.Attribute\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Attribute\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure] + +[FolderOptions\CheckModel\Fact.Measure\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Fact.Measure\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy] + +[FolderOptions\CheckModel\Dimension.Hierarchy\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Dimension.Hierarchy\ORA11GR1_DimensionHierarchy_Minimum_number_of_attributes] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym] + +[FolderOptions\CheckModel\Synonym\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\MaxLen - NAME] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Synonym\EmptyColl - BASEOBJ] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type] + +[FolderOptions\CheckModel\Abstract Data Type\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\AdtInstantiable] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type\AdtAbstractUsed] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure] + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\AdtProcUniqName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\UniqueDefinition] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Abstract Data Type.Abstract Data Type Procedure\ReturnDataType] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package] + +[FolderOptions\CheckModel\Database Package\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\MaxLen - NAME] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\EmptyColl - PROCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package\EmptyColl - CURCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package\EmptyColl - VARCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package\EmptyColl - TYPCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package\EmptyColl - EXCCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package.Database Package Procedure] + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\UniqueDefinition] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\EmptyColl - PARM] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package.Database Package Procedure\ReturnDataType] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence] + +[FolderOptions\CheckModel\Sequence\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Sequence\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor] + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\UniqueDefinition] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\ReturnDataType] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Cursor\EmptyColl - PARM] +CheckSeverity=Yes +FixRequested=No +CheckRequested=No + +[FolderOptions\CheckModel\Database Package.Database Package Variable] + +[FolderOptions\CheckModel\Database Package.Database Package Variable\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Variable\CheckUndefDttp] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type] + +[FolderOptions\CheckModel\Database Package.Database Package Type\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Type\UniqueDefinition] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception] + +[FolderOptions\CheckModel\Database Package.Database Package Exception\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database Package.Database Package Exception\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace] + +[FolderOptions\CheckModel\Tablespace\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\IsObjectUsed] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Tablespace\ORA11GR1_Tablespace_Tablespace_Undo_and_Temporary] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage] + +[FolderOptions\CheckModel\Storage\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Storage\IsObjectUsed] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database] + +[FolderOptions\CheckModel\Database\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Database\IsObjectUsed] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service] + +[FolderOptions\CheckModel\Web Service\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation] + +[FolderOptions\CheckModel\Web Service.Web Operation\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Web Service.Web Operation\MaxLen - CODE] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle] + +[FolderOptions\CheckModel\Lifecycle\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\CheckLifecyclePhase] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\CheckLifecycleRetention] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle\CheckPartitionRange] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase] + +[FolderOptions\CheckModel\Lifecycle.Phase\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseTbspace] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseIQTbspace] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseDuplicateTbspace] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseTbspaceCurrency] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseRetention] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseIdlePeriod] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseDataSource] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Lifecycle.Phase\CheckPhaseExternalOnFirst] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Replication] + +[FolderOptions\CheckModel\Replication\PartialReplication] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule] + +[FolderOptions\CheckModel\Business Rule\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Business Rule\EmptyColl - OBJCOL] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object] + +[FolderOptions\CheckModel\Extended Object\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Object\ORA11GR1_ExtendedObject_Cluster_Hash_cluster_index] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link] + +[FolderOptions\CheckModel\Extended Link\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Extended Link\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File] + +[FolderOptions\CheckModel\File\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\File\CheckPathExists] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format] + +[FolderOptions\CheckModel\Data Format\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Data Format\CheckDataFormatNullExpression] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model] + +[FolderOptions\CheckModel\Physical Data Model\CheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model\CheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model\DefaultCheckUseOnlyTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model\DefaultCheckUseTermBySynonym] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model\CheckPackageMissTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model\DefaultCheckPackageMissTerms] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model\UniqueName] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model\UniqueCode] +CheckSeverity=No +FixRequested=No +CheckRequested=Yes + +[FolderOptions\CheckModel\Physical Data Model\ORA11GR1_Model_Encryption_Password_existence] +CheckSeverity=Yes +FixRequested=No +CheckRequested=Yes +[ModelOptions] + +[ModelOptions\Physical Objects] +CaseSensitive=No +DisplayName=Yes +EnableTrans=No +UseTerm=No +EnableRequirements=No +EnableFullShortcut=Yes +DefaultDttp= +IgnoreOwner=No +RebuildTrigger=Yes +RefrUnique=No +RefrAutoMigrate=Yes +RefrMigrateReuse=Yes +RefrMigrateDomain=Yes +RefrMigrateCheck=Yes +RefrMigrateRule=Yes +RefrMigrateExtd=No +RefrMigrDefaultLink=No +RefrDfltImpl=D +RefrPrgtColn=No +RefrMigrateToEnd=No +RebuildTriggerDep=No +ColnFKName=%.3:PARENT%_%COLUMN% +ColnFKNameUse=No +DomnCopyDttp=Yes +DomnCopyChck=No +DomnCopyRule=No +DomnCopyMand=No +DomnCopyExtd=No +DomnCopyProf=No +Notation=0 +DomnDefaultMandatory=No +ColnDefaultMandatory=No +TablDefaultOwner= +ViewDefaultOwner= +TrgrDefaultOwnerTabl= +TrgrDefaultOwnerView= +IdxDefaultOwnerTabl= +IdxDefaultOwnerView= +JdxDefaultOwner= +DBPackDefaultOwner= +SeqDefaultOwner= +ProcDefaultOwner= +DBMSTrgrDefaultOwner= +Currency=USD +RefrDeleteConstraint=1 +RefrUpdateConstraint=1 +RefrParentMandatory=No +RefrParentChangeAllow=Yes +RefrCheckOnCommit=No + +[ModelOptions\Physical Objects\NamingOptionsTemplates] + +[ModelOptions\Physical Objects\ClssNamingOptions] + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMPCKG] + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMPCKG\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMPCKG\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMDOMN] + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMDOMN\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\PDMDOMN\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\TABL] + +[ModelOptions\Physical Objects\ClssNamingOptions\TABL\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\TABL\Code] +Template= +MaxLen=30 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\COLN] + +[ModelOptions\Physical Objects\ClssNamingOptions\COLN\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\COLN\Code] +Template= +MaxLen=30 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\INDX] + +[ModelOptions\Physical Objects\ClssNamingOptions\INDX\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\INDX\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\REFR] + +[ModelOptions\Physical Objects\ClssNamingOptions\REFR\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\REFR\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VREF] + +[ModelOptions\Physical Objects\ClssNamingOptions\VREF\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VREF\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEW] + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEW\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEW\Code] +Template= +MaxLen=30 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEWC] + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEWC\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\VIEWC\Code] +Template= +MaxLen=254 +Case=U +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBSERV] + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBSERV\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBSERV\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"/-_.!~*'()" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBOP] + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBOP\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WEBOP\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"/-_.!~*'()" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WPARAM] + +[ModelOptions\Physical Objects\ClssNamingOptions\WPARAM\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\WPARAM\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FACT] + +[ModelOptions\Physical Objects\ClssNamingOptions\FACT\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FACT\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DIMN] + +[ModelOptions\Physical Objects\ClssNamingOptions\DIMN\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DIMN\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\CUBE] + +[ModelOptions\Physical Objects\ClssNamingOptions\CUBE\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\CUBE\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\MEAS] + +[ModelOptions\Physical Objects\ClssNamingOptions\MEAS\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\MEAS\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DATTR] + +[ModelOptions\Physical Objects\ClssNamingOptions\DATTR\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DATTR\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FILO] + +[ModelOptions\Physical Objects\ClssNamingOptions\FILO\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar="\/:*?<>|" +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FILO\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_. " +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMEOBJ] + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMEOBJ\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMEOBJ\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMELNK] + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMELNK\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\FRMELNK\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DefaultClass] + +[ModelOptions\Physical Objects\ClssNamingOptions\DefaultClass\Name] +Template= +MaxLen=254 +Case=M +ValidChar= +InvldChar= +AllValid=Yes +NoAccent=No +DefaultChar=_ +Script=.convert_name(%Name%,"_") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Physical Objects\ClssNamingOptions\DefaultClass\Code] +Template= +MaxLen=254 +Case=U +ValidChar='a'-'z','A'-'Z','0'-'9',"_" +InvldChar= +AllValid=No +NoAccent=Yes +DefaultChar=_ +Script=.convert_code(%Code%," ") +ConvTable= +ConvTablePath=%_HOME%\Resource Files\Conversion Tables + +[ModelOptions\Connection] + +[ModelOptions\Pdm] + +[ModelOptions\Generate] + +[ModelOptions\Generate\Pdm] +RRMapping=No + +[ModelOptions\Generate\Cdm] +CheckModel=Yes +SaveLinks=Yes +NameToCode=No +Notation=2 + +[ModelOptions\Generate\Oom] +CheckModel=Yes +SaveLinks=Yes +ORMapping=No +NameToCode=Yes +ClassPrefix= + +[ModelOptions\Generate\Xsm] +CheckModel=Yes +SaveLinks=Yes +ORMapping=No +NameToCode=No + +[ModelOptions\Generate\Ldm] +CheckModel=Yes +SaveLinks=Yes +NameToCode=No + +[ModelOptions\Default Opts] + +[ModelOptions\Default Opts\TABL] +PhysOpts= + +[ModelOptions\Default Opts\COLN] +PhysOpts= + +[ModelOptions\Default Opts\INDX] +PhysOpts= + +[ModelOptions\Default Opts\AKEY] +PhysOpts= + +[ModelOptions\Default Opts\PKEY] +PhysOpts= + +[ModelOptions\Default Opts\STOR] +PhysOpts= + +[ModelOptions\Default Opts\TSPC] +PhysOpts= + +[ModelOptions\Default Opts\SQNC] +PhysOpts= + +[ModelOptions\Default Opts\DTBS] +PhysOpts= + +[ModelOptions\Default Opts\USER] +PhysOpts= + +[ModelOptions\Default Opts\JIDX] +PhysOpts= + +[ModelOptions\Default Opts\FRMEOBJ<<Cluster>>] +PhysOpts= + +[ModelOptions\Default Opts\FRMEOBJ<<MaterializedViewLog>>] +PhysOpts= + +[ModelOptions\Default Opts\FRMESOB<<Cluster>>] +PhysOpts= + +[ModelOptions\Default Opts\FRMESOB<<MaterializedViewLog>>] +PhysOpts= + +[ModelOptions\Default Opts\FRMESOB<<ClusterIndex>>] +PhysOpts= +PD_VER 001 +REP_ID {3AB0AF56-4CC4-4963-82F5-C87DBEA108B9} +MODEL_ID 21416 +MODEL_VRSN 5 +BRANCH_ID 1 +EXT_DATE 1575893285 +EXT_END 1575893285 +OBJECTS +BEG_BLOCK + 21416 {6E12FF96-2977-4E6D-9AB1-4AFD288B4319} + 21426 {B1688878-7AF4-40DA-B185-5F50B3B92E66} + 21427 {B7B9D00C-A172-4DEA-80DD-CE09C3681673} + 21428 {198A41F3-3A45-400A-B39C-6F01FFD302DD} + 21430 {008463AC-0415-458F-88E1-20CA8C0DFF74} + 21431 {A18D8736-A324-4143-B4BB-B404DE446B27} + 21432 {DAD94176-ED3B-4D39-8925-6506FE9377CD} + 21435 {93994A7B-E23E-458F-B546-10529B9474F4} + 21436 {FB425DEC-001B-4B23-8BB6-13546D689B08} + 21440 {CDBBF0D8-BF6A-4BC0-BE2B-0407106119F1} + 21442 {1CF1AA5D-1E85-44BE-9AC9-3B9BDEC8C653} + 21443 {5F07D3F5-B658-4EC8-88FD-6242EF9049AF} + 21444 {88645B51-CAD8-49F4-A0BC-BCB31F06BA1C} + 21445 {CC7616EB-4593-45F9-9F3A-AD15533DBF4C} + 21446 {ED0C669B-1581-420D-A994-E43EEAF33399} + 21447 {CB26B708-7C7E-4179-B08B-ACC25689135E} + 21448 {2DF524E1-2157-44BA-9F8B-5E40395DC179} + 21449 {558D254A-2994-444D-8DC0-D76D54C52FEB} + 21450 {FAC0C62F-89CC-4ADC-8A8D-6401A68915B6} + 21451 {03D11B7E-5C33-466F-A9DF-028345E7F3C4} + 21452 {D38972BC-3878-47EB-A8A5-2105E2254B80} + 21453 {0C3E5085-553F-4A13-932B-5496549C7EF0} + 21454 {E0B53A1D-AB6F-4B33-8C5B-940B3EF91A74} + 21455 {BC7EEAEB-CFF0-4BB2-A835-480B26B792EC} + 21456 {E06CDFDA-C94D-4DF9-B9A4-19EEFA621BB1} + 21457 {A273FBEE-8088-49AC-AA49-F1166845D5D2} + 21458 {F2B42B5B-314C-4DB0-AA98-1F2D5C1430DE} + 21459 {C80DF891-27B2-45DF-A2C0-FBD89FD47778} + 21460 {A89082D0-219A-48A1-B341-996826C0DC3F} + 21461 {458DAC01-6B00-4C7C-BFCA-5F5DFE24660B} + 21462 {8E9BE21B-CACC-4D0B-823B-AA829FCCDB1D} + 21463 {7475FD33-55B8-4156-8376-5779BA2A417D} + 21464 {5174CE35-3FBF-4323-9219-6D04EAB80E14} + 21470 {CE8BBC24-A348-4BAA-883D-6F558087CE41} + 21471 {402B6B48-960C-45C6-8B1B-82D0B39CCD65} + 21472 {D2430B00-EB01-4D0C-8ED7-30A31D1D0F83} + 21474 {B6BBB5AA-6858-42B0-920C-C6D745380E05} + 21475 {A27D9FD6-7BF7-456B-993A-0145DDD55E12} + 21476 {EC510C01-D2F0-49B7-8201-25C57A7CF4AC} + 21477 {1012F5B6-DE51-4C02-A7E4-B00B9D57F699} + 21478 {287183D2-7659-43F9-AE5D-44BA34874BB8} + 21479 {C7C1D057-14AD-475C-8FE1-8B93515C4059} + 21480 {4EEAB4B9-FCD4-492B-AAF6-88B640DD1E86} + 21481 {AB9CCCC8-348B-4464-8FA0-B2FF9D23FB5E} + 21483 {18DAA741-A71D-4BD9-8B4F-CCE12EAFF376} + 21603 {F8FD9C07-1EAC-4415-B194-F1471E0769F7} + 21604 {68C955F0-4698-4142-850F-5CC54BA88287} + 21605 {EFA5E233-F5AE-46AB-A9A3-E120B812C643} + 21606 {F5EBB900-988B-4F23-BAB3-782CDF366D05} + 21607 {06540B01-BC12-4DB1-B39E-EAD6009D2469} + 21608 {19BD9C42-13F6-4678-89DA-127565366C23} + 21609 {484031A6-F323-48B2-B511-C48396A1924F} + 21610 {DEAA7A5C-F7F7-4673-A63D-136F16DA99F1} + 21611 {F337C775-B0A5-44FC-841F-A11DD0B4B977} + 21612 {8AF3EA48-EC8F-4620-9D55-388F0AD582F6} + 21613 {E97DD41C-42C5-49F9-AF8C-EFC9D0F50FE6} + 21614 {737B33D5-F58B-49F4-B1AB-351ADC7D08B2} + 21615 {470119FE-EABF-49FF-95E6-B977EB550A53} + 21617 {28D965AA-7B58-45D2-8225-E20DAC2F3B26} + 21618 {653AABF1-E4BE-4956-B455-96CC2B64CD7F} + 21619 {B68513A9-05C7-4F73-9C2A-8B3CC476BF77} + 21620 {B3BDBA74-5283-4C37-A492-FCEC9A419EDB} + 21621 {C08DDEC9-1E96-4D5D-86EA-CD9CBB0FD182} + 21622 {1AECE29B-85CD-444E-B19B-E14F31B52E55} + 21623 {EFBA779C-1DC9-40B2-B123-7684C5EB1FC5} + 21624 {8572D565-27EC-4D4F-8B25-3F5A59FC9137} + 21625 {7D77FDD1-E9FB-4272-AB31-A430E1DFB326} + 21626 {5C934254-EA5D-41B6-88AD-B16BE23EBBA5} + 21627 {B39D7A44-CA41-4E65-8E8D-9F24ADFB4A41} + 21628 {9746E73E-8B29-4AD5-AC1D-E7110629DB8F} + 21629 {7E33A4FF-64AB-476F-90BB-4E11CD4043BA} + 21630 {67256F3C-3F51-4F1E-B5EB-E36E7A059C7E} + 21631 {DF205C6C-ABCF-4543-994E-6CF1BD29AC8C} + 21632 {0F4BC290-C998-4E0E-BA61-2E689FAEDFD6} + 21633 {6312CA66-B830-420F-BE3C-17596FE44253} + 21634 {E063A588-8224-46D5-A75E-4111DFEC0C2E} + 21635 {C03E7AA0-92B4-4996-8838-130F897750E8} + 21636 {799A7EE6-C039-4B2C-8727-A62EA60B4A54} + 21637 {B097A072-E275-4A04-8954-75B9F6DF2655} + 21638 {8DB91E14-C3B0-4A05-863A-2E402AAA05E5} + 21639 {F5FF3B36-304A-40C2-9508-AE2F608019BC} + 21640 {776481D9-4F64-4DAB-9CD4-A9F0E6897A9E} + 21641 {9D820CD9-02AD-4ADB-B943-B7D07805287E} + 21642 {9E3A4C56-78EA-4181-B9DA-B455731102BE} + 21643 {B2D85F04-D9C7-4514-B549-9DD51C466C32} + 21644 {73FCBDF4-79AE-41D5-9831-6E2600A368AB} + 21645 {C704B820-1054-4E53-B387-041070309BF7} + 21646 {5AD5A39E-6B5B-4A1C-87B0-56416EEFC126} + 21647 {382D16AC-50B5-4687-96F1-285E4C2F01A8} + 21648 {C4FF7E27-34C5-48BA-8194-D9E3B2014D83} + 21649 {A859A60C-BAED-4ECE-A954-4AC3860E095D} + 21651 {218B5156-9DFD-47A0-8EE0-BADF42CDAEB2} + 21652 {B70953D9-3786-476D-B06D-92D29A7BD25B} + 21653 {3AA98821-6932-45EB-A054-1A3FE61BDF1F} + 21654 {DDF84018-3C20-4654-A6F0-8639C3F03F1F} + 21655 {8F053562-3810-466B-AFD1-D02A05FF56D1} + 21656 {928236E6-0CD0-4B9E-AF2E-18A65D5B3B4F} + 21664 {078999BB-92B8-4F47-A8DA-DB29C4E9951C} + 21665 {569F9E2F-4EE2-4F6F-96BA-4F84D362BB74} + 21666 {EA6FB87E-B0E9-46B0-B090-1581CBB9A51F} + 21667 {E5018CDA-8B4C-470B-AC84-C9F4C11F02B3} + 21668 {495A573D-AFB1-4DD5-B0E7-189A589CDA1C} + 21669 {D89BE85D-DD8F-40A8-830D-168036F41F56} + 21670 {5D4C4124-72AF-4826-8E99-D3704CEE1B4F} + 21671 {BD7BAE07-1A3C-4F3D-B4FA-A002676767E3} + 21672 {827F0A7D-B30E-49BD-9E6C-5978DA062306} + 21673 {9BDD039F-0294-4385-8770-C35B6AC7ED3B} + 21676 {71F9C105-0D7B-47DD-B71E-68FFE5FFFD57} + 21677 {DF9A3EC8-097E-489E-87CC-F9B21AD09E34} + 21678 {68032288-F59A-4905-9315-026E48A1226F} + 21679 {A9E26D88-664A-4443-A0F3-7785726D485D} + 21680 {00B6B097-A96E-4FDB-AC64-BA3BFCC2608D} + 21681 {5C79B624-99B6-4A89-BB6A-2C8E1537B772} + 21682 {01941324-18A5-462D-8189-4F97E32F3FDD} + 21683 {47DB98EF-F515-4CF3-92FD-077BAE833B4E} + 21684 {42913DE9-21A0-4412-82C0-0F1BE5DAF9AD} + 21685 {7CD4FCB9-C3BC-436C-97FF-A95F752D733E} + 21686 {9211335A-E246-441D-8F09-9B5D874946E3} + 21687 {A30C0C51-AF82-4EAE-A991-B53BD6E826B7} + 21688 {FFED3B31-34E6-4E7E-B587-A8E76D9234C5} + 21689 {BE02AAA6-1662-4C2E-895F-EE3787E8F27F} + 21710 {80279C89-CAE2-4BC1-A1C8-B3503B0E72FD} + 21711 {48EFF621-4AA8-4E55-B454-BA4D32CA7D14} + 21712 {4F302071-EF94-4781-BD12-26E0669BDB66} + 21713 {F3164AE7-8153-4EF6-9CB6-AE3D4A2C7F70} + 21714 {A5DAFC41-77FB-40D3-B796-AB57D6DDFCC7} + 21715 {9636A028-5A81-470A-AF93-3FC73A21C8AD} + 21716 {C9FFF5A2-D436-45A8-969E-F5B27CE6C662} + 21717 {6886BF81-F625-446B-B0E0-09F245940E56} + 21718 {80544C91-4DFB-4A23-9825-292828987EEF} + 21719 {D242D5C0-512F-40C6-8DBF-90A125598D78} + 21720 {189EF38B-8C3D-4D85-AB6B-399F7D54BFED} + 21721 {B660B86B-BDB4-48F6-A543-9D5AFC05A1E9} + 21722 {EA185921-5F80-4F05-BADA-C54018A476BD} + 21723 {254B6FBF-40B9-4400-8C59-6D7A196E009B} + 21724 {92B5383B-6B81-4FFA-8A2A-BDA23DAD277B} + 21725 {1B02FAFC-B7E1-49BB-BE09-104063FFD6B9} + 21726 {9C00B3D4-71B5-4E87-83FB-5CE0801E4F7E} + 21727 {9A43B581-BC72-4128-8A2F-582E931F64C8} + 21728 {D784009B-AF4B-469D-9F78-97B6EB472535} + 21729 {92A30B9B-7DC4-441E-B6C1-5492FF157881} + 21730 {7B856142-0648-4509-94BA-D97B33065072} + 21731 {17331C48-0683-49C1-B510-82D62D823B17} + 21732 {4E6A2302-5A98-4417-A731-0B46D5053D0E} + 21733 {D3167C9C-9FD0-4B85-B403-6D661508E987} + 21734 {64D84049-B150-4DF9-AD72-80B2E34F82FF} + 21735 {1F5EE14B-F0E2-422B-AD5D-052D9235F083} + 21736 {FA5C070F-CE87-4D47-9A8B-78A94515A722} + 21737 {DB48D9D9-4D33-4CCA-AB7D-3DA9BDFE6C5E} + 21738 {0851247C-91BE-4E39-B60F-266769763A5B} + 21739 {3D970BDB-C3AD-4134-AF49-D94CFA4C922D} + 21740 {DB10ECE0-965D-4AEE-B4AF-445126C1E3CE} + 21741 {579F9A94-A280-4974-9982-48CEC8CC2DF1} + 21742 {96E85A6A-18D2-4DD6-8098-B6C3AEC68439} + 21743 {E2D11655-BF0A-4210-AEE5-0A1B7CC0D2CE} + 21744 {7413488D-C0A5-45B1-A52E-EF38E5B639F0} + 21745 {314B726F-4D01-4A4E-B221-083F43E36CF9} + 21746 {7FD5CDEB-0148-4F21-A734-0A2F7BEB8409} + 21747 {C8200503-8509-441C-9340-A134B2C84D0D} + 21748 {FF846808-5C03-4580-825C-A61BAD90ABE7} + 21749 {F1581324-E08E-44F0-B3F4-84E0DC07C03F} + 21750 {A5B5A357-9EBB-468C-AA74-1952EC3658ED} + 21751 {EE5FBDD5-E180-4F56-AAE3-2E2A294966B5} + 21752 {867B9ACE-563C-4767-8EA7-A374B2B776BD} + 21753 {B4974057-FAE9-4D5B-AFCE-25BD3209C9F3} + 21754 {D1EBF825-F191-4071-9433-BC25C728EF4C} + 21755 {F1EB6B6D-7A3F-4614-A7C1-5799E3430F9B} + 21756 {B709CD81-742E-4C78-9B48-8CBA0513A541} + 21757 {FA549245-188C-4F80-AAE7-5FE048A87FB8} + 21758 {CEC5B537-2D35-44C9-AEC2-AA4904306162} + 21759 {A1859E05-264F-4104-A8FC-C7C4C878E095} + 21760 {28C6DECA-C250-44D6-9994-A601A54D08F1} + 21761 {CC78E6D8-5560-4007-824B-5D2A354F3270} + 21762 {0C167109-AAAE-46F0-B15F-43E1F0FB3CB8} + 21763 {26F5F34C-F3BD-4D7C-8804-3F9CD0C5D228} + 21764 {827416D5-84DF-4596-A3C2-6800F6D88EC2} + 21765 {78D5A3F3-226A-4C27-AB65-D29F7672B853} + 21766 {C0D14299-6C8D-44D4-972D-5E9ABE550092} + 21767 {5EA27C82-FBA4-454E-B248-1BF63A59B1BF} + 21768 {4D508B74-E9C9-4C9F-ACE5-C7CABE3F250C} + 21769 {AA2D716F-AD1D-4E7E-B832-1787A990313A} + 21770 {2179027C-D265-4D4F-9E68-7EA7B5DDEECA} + 21771 {C4CBF7FD-AB7D-4C21-9B9B-5C9D35F96DF1} +END_BLOCK + +a74760fa0bc68aed2fd4b8727ba4237a +{BAE632F3-AC04-4059-9893-259ABA89351C},ORA11GR1,147={EFD6ACEF-B17B-4809-8139-2A448365E86C},AutoFixMaterializedViewDone,4=true +{0DF03778-2F9C-42B9-9746-AFD816115F7F},AutoFixTempAttributeDone,4=true + + + + +B1688878-7AF4-40DA-B185-5F50B3B92E66 +ORACLE Version 11g +ORA11GR1 +1574260647 +iliessu +1574260647 +iliessu + +BAE632F3-AC04-4059-9893-259ABA89351C +4BA9F647-DAB1-11D1-9944-006097355D9B + + +80279C89-CAE2-4BC1-A1C8-B3503B0E72FD +BeforeInsertTrigger +BeforeInsertTrigger +1575469925 +iliessu +1575541245 +iliessu + +F3E98262-3235-409B-9D77-FC9966E4E5AD +D4B2DF42-0047-11D2-9952-006097355D9B +<Model>::ORACLE Version 11g + + +48EFF621-4AA8-4E55-B454-BA4D32CA7D14 +InsertSequenceColumn +InsertSequenceColumn +1575469925 +iliessu +1575541245 +iliessu + +D623F8B7-0ADB-4F1D-A98D-A1377012B92C +D4B2DF41-0047-11D2-9952-006097355D9B +<Model>::ORACLE Version 11g + + +4F302071-EF94-4781-BD12-26E0669BDB66 +CompoundInsertTrigger +CompoundInsertTrigger +1575469925 +iliessu +1575541245 +iliessu + +F914950F-74F3-4A31-8DC0-881065127F36 +D4B2DF42-0047-11D2-9952-006097355D9B +<Model>::ORACLE Version 11g + + +F3164AE7-8153-4EF6-9CB6-AE3D4A2C7F70 +CompoundDeleteTrigger +CompoundDeleteTrigger +1575469925 +iliessu +1575541245 +iliessu + +E32537FC-CC5D-4504-BF41-00C0C7B85817 +D4B2DF42-0047-11D2-9952-006097355D9B +<Model>::ORACLE Version 11g + + +A5DAFC41-77FB-40D3-B796-AB57D6DDFCC7 +CompoundUpdateTrigger +CompoundUpdateTrigger +1575469925 +iliessu +1575541245 +iliessu + +1219F3DB-D382-4C68-9B59-47C389F9446E +D4B2DF42-0047-11D2-9952-006097355D9B +<Model>::ORACLE Version 11g + + + + + + +B7B9D00C-A172-4DEA-80DD-CE09C3681673 +e-RIGHTS-Release 1 +E_RIGHTS_RELEASE_1 +1574260648 +iliessu +1574326450 +iliessu +[DisplayPreferences] + +[DisplayPreferences\PDM] + +[DisplayPreferences\General] +Adjust to text=Yes +Snap Grid=No +Constrain Labels=Yes +Display Grid=No +Show Page Delimiter=Yes +Show Links intersections=Yes +Activate automatic link routing=Yes +Grid size=800 +Graphic unit=2 +Window color=255 255 255 +Background image= +Background mode=8 +Watermark image= +Watermark mode=8 +Show watermark on screen=No +Gradient mode=0 +Gradient end color=255 255 255 +Show Swimlane=No +SwimlaneVert=Yes +TreeVert=No +CompDark=0 + +[DisplayPreferences\Object] +Show Icon=No +Mode=0 +Trunc Length=80 +Word Length=80 +Word Text=!""#$%&'()*+,-./:;<=>?@[\]^_`{|}~ +Shortcut IntIcon=Yes +Shortcut IntLoct=Yes +Shortcut IntFullPath=No +Shortcut IntLastPackage=Yes +Shortcut ExtIcon=Yes +Shortcut ExtLoct=No +Shortcut ExtFullPath=No +Shortcut ExtLastPackage=Yes +Shortcut ExtIncludeModl=Yes +EObjShowStrn=Yes +ExtendedObject.Comment=No +ExtendedObject.IconPicture=No +ExtendedObject.TextStyle=No +ExtendedObject_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Object Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <Separator Name="Separator" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +ELnkShowStrn=Yes +ELnkShowName=Yes +ExtendedLink_SymbolLayout=<Form>[CRLF] <Form Name="Center" >[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Source" >[CRLF] </Form>[CRLF] <Form Name="Destination" >[CRLF] </Form>[CRLF]</Form> +FileObject.Stereotype=No +FileObject.DisplayName=Yes +FileObject.LocationOrName=No +FileObject.IconPicture=No +FileObject.TextStyle=No +FileObject.IconMode=Yes +FileObject_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Location" Attribute="LocationOrName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +Package.Stereotype=No +Package.Comment=No +Package.IconPicture=No +Package.TextStyle=No +Package_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <Separator Name="Separator" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +Display Model Version=Yes +Table.Stereotype=Yes +Table.DisplayName=Yes +Table.OwnerDisplayName=No +Table.Columns=Yes +Table.Columns._Filter="All Columns" PDMCOLNALL +Table.Columns._Columns=Stereotype DataType KeyIndicator IndexIndicator NullStatus +Table.Columns._Limit=-5 +Table.Keys=Yes +Table.Keys._Columns=Stereotype Indicator +Table.Indexes=Yes +Table.Indexes._Columns=Stereotype +Table.Triggers=No +Table.Triggers._Columns=Stereotype +Table.Comment=No +Table.IconPicture=Yes +Table.TextStyle=No +Table_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Owner and Name" Attribute="OwnerDisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <Separator Name="Separator" />[CRLF] <StandardCollection Name="Columns" Collection="Columns" Columns="Stereotype No\r\nDisplayName Yes\r\nDataType No\r\nSymbolDataType No &quot;Domain or Data type&quot;\r\nDomain No\r\nKeyIndicator No\r\nIndexIndicator No\r\nNullStatus No" Filters="&quot;All Columns&quot; PDMCOLNALL &quot;&quot;\r\n&quot;PK Columns&quot; PDMCOLNPK &quot;\&quot;PRIM \&quot;TRUE\&quot; TRUE\&quot;&quot;\r\n&quot;Key Columns&quot; PDMCOLNKEY &quot;\&quot;KEYS \&quot;TRUE\&quot; TRUE\&quot;&quot;" HasLimit="Yes" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Keys" Collection="Keys" Columns="Stereotype No\r\nDisplayName Yes\r\nIndicator No" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Indexes" Collection="Indexes" Columns="Stereotype No\r\nDisplayName Yes\r\nIndicator No" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Triggers" Collection="Triggers" Columns="Stereotype No\r\nDisplayName Yes" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +View.Stereotype=Yes +View.DisplayName=Yes +View.OwnerDisplayName=No +View.Columns=Yes +View.Columns._Columns=DisplayName +View.Columns._Limit=-5 +View.TemporaryVTables=Yes +View.Indexes=No +View.Comment=No +View.IconPicture=No +View.TextStyle=No +View_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Owner and Name" Attribute="OwnerDisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <Separator Name="Separator" />[CRLF] <StandardCollection Name="Columns" Collection="Columns" Columns="DisplayName No\r\nExpression No\r\nDataType No\r\nSymbolDataType No &quot;Domain or Data type&quot;\r\nIndexIndicator No" HasLimit="Yes" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Tables" Collection="TemporaryVTables" Columns="Name Yes" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Indexes" Collection="Indexes" Columns="DisplayName Yes" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +Procedure.Stereotype=No +Procedure.DisplayName=Yes +Procedure.OwnerDisplayName=No +Procedure.Comment=No +Procedure.IconPicture=No +Procedure.TextStyle=No +Procedure_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Owner and Name" Attribute="OwnerDisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <Separator Name="Separator" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form> +Reference.Cardinality=No +Reference.ImplementationType=No +Reference.ChildRole=Yes +Reference.Stereotype=Yes +Reference.DisplayName=No +Reference.ForeignKeyConstraintName=Yes +Reference.JoinExpression=No +Reference.Integrity=No +Reference.ParentRole=Yes +Reference_SymbolLayout=<Form>[CRLF] <Form Name="Source" >[CRLF] <StandardAttribute Name="Cardinality" Attribute="Cardinality" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Implementation" Attribute="ImplementationType" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Child Role" Attribute="ChildRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Center" >[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="No" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Cons&amp;traint Name" Attribute="ForeignKeyConstraintName" Prefix="" Suffix="" Caption="Cons&amp;traint Name" Mandatory="No" />[CRLF] <StandardAttribute Name="Join" Attribute="JoinExpression" Prefix="" Suffix="" Caption="Join" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <StandardAttribute Name="Referential integrity" Attribute="Integrity" Prefix="" Suffix="" Caption="Referential integrity" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Destination" >[CRLF] <StandardAttribute Name="Parent Role" Attribute="ParentRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF]</Form> +ViewReference.ChildRole=Yes +ViewReference.Stereotype=Yes +ViewReference.DisplayName=No +ViewReference.JoinExpression=No +ViewReference.ParentRole=Yes +ViewReference_SymbolLayout=<Form>[CRLF] <Form Name="Source" >[CRLF] <StandardAttribute Name="Child Role" Attribute="ChildRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Center" >[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="&lt;&lt;" Suffix="&gt;&gt;" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="No" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Join Expression" Attribute="JoinExpression" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] </Form>[CRLF] <Form Name="Destination" >[CRLF] <StandardAttribute Name="Parent Role" Attribute="ParentRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF]</Form> + +[DisplayPreferences\Symbol] + +[DisplayPreferences\Symbol\FRMEOBJ] +STRNFont=Arial,8,N +STRNFont color=0 0 0 +DISPNAMEFont=Arial,8,N +DISPNAMEFont color=0 0 0 +LABLFont=Arial,8,N +LABLFont color=0 0 0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Width=6000 +Height=2000 +Brush color=255 255 255 +Fill Color=Yes +Brush style=6 +Brush bitmap mode=12 +Brush gradient mode=64 +Brush gradient color=192 192 192 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 255 128 128 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\FRMELNK] +CENTERFont=Arial,8,N +CENTERFont color=0 0 0 +Line style=2 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Brush color=255 255 255 +Fill Color=Yes +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 128 255 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\FILO] +OBJSTRNFont=Arial,8,N +OBJSTRNFont color=0 0 0 +DISPNAMEFont=Arial,8,N +DISPNAMEFont color=0 0 0 +LCNMFont=Arial,8,N +LCNMFont color=0 0 0 +AutoAdjustToText=Yes +Keep aspect=Yes +Keep center=Yes +Keep size=No +Width=2400 +Height=2400 +Brush color=255 255 255 +Fill Color=No +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 0 0 255 +Shadow color=192 192 192 +Shadow=-1 + +[DisplayPreferences\Symbol\PDMPCKG] +STRNFont=Arial,8,N +STRNFont color=0 0 0 +DISPNAMEFont=Arial,8,N +DISPNAMEFont color=0 0 0 +LABLFont=Arial,8,N +LABLFont color=0 0 0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Width=4800 +Height=3600 +Brush color=255 255 192 +Fill Color=Yes +Brush style=6 +Brush bitmap mode=12 +Brush gradient mode=65 +Brush gradient color=255 255 255 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 178 178 178 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\TABL] +STRNFont=Arial,8,N +STRNFont color=0 0 0 +DISPNAMEFont=Arial,8,N +DISPNAMEFont color=0 0 0 +OWNRDISPNAMEFont=Arial,8,N +OWNRDISPNAMEFont color=0 0 0 +ColumnsFont=Arial,8,N +ColumnsFont color=0 0 0 +TablePkColumnsFont=Arial,8,U +TablePkColumnsFont color=0 0 0 +TableFkColumnsFont=Arial,8,N +TableFkColumnsFont color=0 0 0 +KeysFont=Arial,8,N +KeysFont color=0 0 0 +IndexesFont=Arial,8,N +IndexesFont color=0 0 0 +TriggersFont=Arial,8,N +TriggersFont color=0 0 0 +LABLFont=Arial,8,N +LABLFont color=0 0 0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Width=4800 +Height=4000 +Brush color=210 137 2 +Fill Color=Yes +Brush style=6 +Brush bitmap mode=12 +Brush gradient mode=65 +Brush gradient color=255 255 255 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 64 0 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\VIEW] +STRNFont=Arial,8,N +STRNFont color=0 0 0 +DISPNAMEFont=Arial,8,N +DISPNAMEFont color=0 0 0 +OWNRDISPNAMEFont=Arial,8,N +OWNRDISPNAMEFont color=0 0 0 +ColumnsFont=Arial,8,N +ColumnsFont color=0 0 0 +TablePkColumnsFont=Arial,8,U +TablePkColumnsFont color=0 0 0 +TableFkColumnsFont=Arial,8,N +TableFkColumnsFont color=0 0 0 +TemporaryVTablesFont=Arial,8,N +TemporaryVTablesFont color=0 0 0 +IndexesFont=Arial,8,N +IndexesFont color=0 0 0 +LABLFont=Arial,8,N +LABLFont color=0 0 0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Width=4800 +Height=4000 +Brush color=233 202 131 +Fill Color=Yes +Brush style=6 +Brush bitmap mode=12 +Brush gradient mode=65 +Brush gradient color=255 255 255 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 128 128 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\PROC] +STRNFont=Arial,8,N +STRNFont color=0 0 0 +DISPNAMEFont=Arial,8,N +DISPNAMEFont color=0 0 0 +OWNRDISPNAMEFont=Arial,8,N +OWNRDISPNAMEFont color=0 0 0 +LABLFont=Arial,8,N +LABLFont color=0 0 0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Width=4000 +Height=1000 +Brush color=255 255 192 +Fill Color=Yes +Brush style=6 +Brush bitmap mode=12 +Brush gradient mode=65 +Brush gradient color=255 255 255 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 108 0 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\REFR] +SOURCEFont=Arial,8,N +SOURCEFont color=0 0 0 +CENTERFont=Arial,8,N +CENTERFont color=0 0 0 +DESTINATIONFont=Arial,8,N +DESTINATIONFont color=0 0 0 +Line style=2 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Brush color=255 255 255 +Fill Color=Yes +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 0 64 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\VREF] +SOURCEFont=Arial,8,N +SOURCEFont color=0 0 0 +CENTERFont=Arial,8,N +CENTERFont color=0 0 0 +DESTINATIONFont=Arial,8,N +DESTINATIONFont color=0 0 0 +Line style=2 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Brush color=255 255 255 +Fill Color=Yes +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 0 64 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\USRDEPD] +OBJXSTRFont=Arial,8,N +OBJXSTRFont color=0 0 0 +Line style=0 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Brush color=255 255 255 +Fill Color=Yes +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=2 0 128 0 64 +Shadow color=192 192 192 +Shadow=0 + +[DisplayPreferences\Symbol\Free Symbol] +Free TextFont=Arial,8,N +Free TextFont color=0 0 0 +Line style=2 +AutoAdjustToText=Yes +Keep aspect=No +Keep center=No +Keep size=No +Brush color=255 255 255 +Fill Color=Yes +Brush style=1 +Brush bitmap mode=12 +Brush gradient mode=0 +Brush gradient color=118 118 118 +Brush background image= +Custom shape= +Custom text mode=0 +Pen=1 0 128 64 0 +Shadow color=192 192 192 +Shadow=0 +(8268, 11693) +((315,354), (433,354)) +1 +15 + + +1574326175 +1574326624 +((68783,40190), (87098,60141)) +((69183,58895),(82261,58895),(82261,40590)) +2 +1 +0 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N +3 + + + + + + + + + + + +1575449419 +1575449489 +((55367,33494), (69241,51945)) +((62304,51545),(62304,33894)) +2 +1 +0 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N + + + + + + + + + + + +1575449419 +1575537792 +(-2100, 150) +11101 +((31603,33494), (57311,55803)) +((32003,54407),(53861,54407),(53861,33894)) +2 +1 +0 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N +4 + + + + + + + + + + + +1575449419 +1575537792 +((26227,56052), (42539,77408)) +((26627,56452),(26627,76821),(36539,76821),(36539,63735),(29029,63735)) +2 +1 +0 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N +4 + + + + + + + + + + + +1575449419 +1575537638 +(-75, -3225) +((9664,26016), (21588,39351)) +((14842,38951),(14842,35455),(16561,35455),(16561,26416)) +2 +1 +0 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N +4 + + + + + + + + + + + +1575449419 +1575449489 +((28610,21594), (45218,23465)) +((29010,22219),(44818,22219)) +2 +1 +0 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N + + + + + + + + + + + +1575449419 +1575537792 +((-28255,11050), (32403,53148)) +((32003,52748),(-5655,52748),(-5655,11450),(-27855,11450)) +2 +1 +4194432 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N +1 + + + + + + + + + + + +1575449419 +1575449489 +((-28818,22005), (6483,55194)) +((6083,53948),(-23081,53948),(-23081,22405)) +2 +1 +4194432 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N + + + + + + + + + + + +1575449419 +1575449489 +((-13098,10450), (6483,52890)) +((6083,51644),(-6648,51644),(-6648,10850)) +2 +1 +4194432 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N + + + + + + + + + + + +1575449820 +1575541245 +((-69396,20374), (-39128,25818)) +((-45090,25418),(-45090,20961),(-68996,20961)) +2 +1 +4194432 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N + + + + + + + + + + + +1575449824 +1575541383 +((-61041,20374), (-36465,25818)) +((-43890,25418),(-43890,20961),(-60641,20961)) +2 +1 +4194432 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N +2 + + + + + + + + + + + +1575465344 +1575541245 +((-76646,24271), (-47021,48570)) +((-47421,47324),(-68996,47324),(-68996,24671)) +2 +1 +4194432 +12632256 +CENTER 0 Arial,8,N +SOURCE 0 Arial,8,N +DESTINATION 0 Arial,8,N + + + + + + + + + + + +1574260680 +1575541297 +-1 +((6083,38951), (32003,66545)) +0 +0 +14408667 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +Column 0 +Key 0 +Index 0 + +1 + + + + + +1575449419 +1575541297 +-1 +((44818,21354), (62904,33894)) +0 +0 +14408667 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +1 + + + + + +1574325219 +1575449495 +-1 +((73800,30470), (90722,40590)) +0 +0 +14408667 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +1 + + + + + +1574325265 +1575449495 +-1 +((61068,51545), (77598,64439)) +0 +0 +14408667 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +1 + + + + + +1575449419 +1575541297 +-1 +((-56379,25412), (-33801,36726)) +255 +8421631 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +6 +65 +16777215 + + + + + +1575449419 +1575541297 +-1 +((4112,18023), (29010,26416)) +0 +0 +14408667 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N + + + + + +1575449419 +1575449489 +-1 +((-30705,-1141), (-20175,4330)) +16512 +166354 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +6 +65 +16777215 + + + + + +1575449419 +1575541624 +-1 +((-17398,-4361), (4102,10850)) +255 +8421631 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +6 +65 +16777215 + + + + + +1575449419 +1575449489 +-1 +((-47423,5835), (-27855,13254)) +255 +8421631 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +6 +65 +16777215 + + + + + +1575449419 +1575449489 +-1 +((-33065,16934), (-14655,22405)) +255 +8421631 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N +6 +65 +16777215 + + + + + +1575449654 +1575541245 +-1 +((-77351,17252), (-60641,24671)) +0 +0 +14408667 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N + + + + + +1575465143 +1575541245 +-1 +((-47421,40206), (-23681,54443)) +0 +0 +14408667 +12632256 +STRN 0 Arial,8,N +DISPNAME 0 Arial,8,N +OWNRDISPNAME 0 Arial,8,N +Columns 0 Arial,8,N +TablePkColumns 0 Arial,8,U +TableFkColumns 0 Arial,8,N +Keys 0 Arial,8,N +Indexes 0 Arial,8,N +Triggers 0 Arial,8,N +LABL 0 Arial,8,N + + + + + + + + + + + + +0C167109-AAAE-46F0-B15F-43E1F0FB3CB8 +DEFAULT +1575470348 +iliessu +1575470348 +iliessu +[Physical Objects\Database Generation\Format] +GenScriptTitle=Yes +GenScriptNamLabl=No +GenScriptQDtbs=No +GenScriptQOwnr=Yes +GenScriptCase=0 +GenScriptEncoding=ANSI +GenScriptNAcct=No +IdentifierDelimiter=" + +[Physical Objects\Database Generation\Database] +Create=Yes +Open=Yes +Close=Yes +Drop=Yes +Permission=No + +[Physical Objects\Database Generation\Database\Create] +Physical Options=Yes +Header=Yes +Footer=Yes + +[Physical Objects\Database Generation\Tablespace] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[Physical Objects\Database Generation\Tablespace\Create] +Header=Yes +Footer=Yes + +[Physical Objects\Database Generation\Storage] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\User] +Create=Yes +Drop=Yes +Comment=Yes +Privilege=No + +[Physical Objects\Database Generation\User\Create] +Physical Options=No + +[Physical Objects\Database Generation\Group] +Create=Yes +Drop=Yes +Comment=Yes +Privilege=No + +[Physical Objects\Database Generation\Role] +Create=Yes +Drop=Yes +Privilege=No + +[Physical Objects\Database Generation\UserDefinedDataType] +Create=Yes +Comment=Yes +Drop=Yes + +[Physical Objects\Database Generation\UserDefinedDataType\Create] +Default value=Yes +Check=Yes + +[Physical Objects\Database Generation\AbstractDataType] +Create=Yes +Header=Yes +Footer=Yes +Drop=Yes +Comment=Yes +Install JAVA class=Yes +Remove JAVA class=Yes +Permission=No + +[Physical Objects\Database Generation\Rule] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\Default] +Create=Yes +Comment=Yes +Drop=Yes + +[Physical Objects\Database Generation\Sequence] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[Physical Objects\Database Generation\Table&&Column\Table] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[Physical Objects\Database Generation\Table&&Column\Table\Create] +Check=Yes +Physical Options=Yes +Header=Yes +Footer=Yes + +[Physical Objects\Database Generation\Table&&Column\Table\Create\Check] +Constraint declaration=No + +[Physical Objects\Database Generation\Table&&Column\Column] +User datatype=No +Default value=Yes +Check=Yes +Physical Options=Yes +Comment=Yes + +[Physical Objects\Database Generation\Table&&Column\Column\Check] +Constraint declaration=No + +[Physical Objects\Database Generation\Table&&Column\Key\Primary key] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\Table&&Column\Key\Primary key\Create] +Constraint declaration=No +Physical Options=Yes + +[Physical Objects\Database Generation\Table&&Column\Key\Alternate key] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\Table&&Column\Key\Alternate key\Create] +Constraint declaration=No +Physical Options=Yes + +[Physical Objects\Database Generation\Table&&Column\Foreign key] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\Table&&Column\Foreign key\Create] +Constraint declaration=Yes + +[Physical Objects\Database Generation\Table&&Column\Index] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\Table&&Column\Index\Create] +Constraint declaration=Yes +Physical Options=Yes + +[Physical Objects\Database Generation\Table&&Column\Index\Filter] +Primary key=No +Foreign key=Yes +Alternate key=No +Cluster=Yes +Other=Yes + +[Physical Objects\Database Generation\Table&&Column\Trigger] +Create=No +Drop=No +Comment=No + +[Physical Objects\Database Generation\Table&&Column\Trigger\Filter] +For insert=Yes +For update=Yes +For delete=Yes +For other=Yes + +[Physical Objects\Database Generation\View] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[Physical Objects\Database Generation\View\Create] +Force Column list=No +Physical Options=Yes +Header=Yes +Footer=Yes + +[Physical Objects\Database Generation\View\ViewColumn] +Comment=Yes + +[Physical Objects\Database Generation\View\ViewIndex] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\View\ViewIndex\Create] +Physical Options=Yes + +[Physical Objects\Database Generation\View\ViewIndex\Filter] +Cluster=Yes +Other=Yes + +[Physical Objects\Database Generation\View\Trigger] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\View\Trigger\Filter] +For insert=Yes +For update=Yes +For delete=Yes +For other=Yes + +[Physical Objects\Database Generation\DBMSTrigger] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\Synonym] +Create=Yes +Drop=Yes + +[Physical Objects\Database Generation\Synonym\Filter] +Table=Yes +View=Yes +Proc=Yes +Synonym=Yes +Database Package=Yes +Sequence=Yes + +[Physical Objects\Database Generation\JoinIndex] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\JoinIndex\Create] +Physical Options=Yes +Header=Yes +Footer=Yes + +[Physical Objects\Database Generation\Procedure] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[Physical Objects\Database Generation\Procedure\Create] +Header=Yes +Footer=Yes + +[Physical Objects\Database Generation\DatabasePackage] +Create=Yes +Drop=Yes +Permission=No + +[Physical Objects\Database Generation\WebService] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\Dimension] +Create=Yes +Drop=Yes + +[Physical Objects\Database Generation\ExtendedObject <<Cluster>>] +Create=Yes +Drop=Yes + +[Physical Objects\Database Generation\ExtendedObject <<Cluster>>\ExtendedSubObject <<ClusterColumn>>] +Create=Yes + +[Physical Objects\Database Generation\ExtendedObject <<Cluster>>\ExtendedSubObject <<ClusterIndex>>] +Create=Yes +Drop=Yes + +[Physical Objects\Database Generation\ExtendedObject <<DatabaseLink>>] +Create=Yes +Drop=Yes + +[Physical Objects\Database Generation\ExtendedObject <<MaterializedViewLog>>] +Create=Yes + +[Physical Objects\Database Generation\View <<MaterializedView>>] +Create=Yes +Drop=Yes +Comment=Yes +Permission=No + +[Physical Objects\Database Generation\View <<MaterializedView>>\ViewColumn] +Comment=Yes + +[Physical Objects\Database Generation\View <<MaterializedView>>\ViewIndex] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\View <<MaterializedView>>\ViewIndex\Filter] +Cluster=Yes +Other=Yes + +[Physical Objects\Database Generation\View <<MaterializedView>>\Trigger] +Create=Yes +Drop=Yes +Comment=Yes + +[Physical Objects\Database Generation\View <<MaterializedView>>\Trigger\Filter] +For insert=Yes +For update=Yes +For delete=Yes +For other=Yes +Database Generation + + + + +008463AC-0415-458F-88E1-20CA8C0DFF74 +RIGHTS +RIGHTS +1574325219 +iliessu +1574326207 +iliessu + + + +F2B42B5B-314C-4DB0-AA98-1F2D5C1430DE +Related Clusters +Related Clusters +1574325936 +iliessu +1574325936 +iliessu + + +C80DF891-27B2-45DF-A2C0-FBD89FD47778 +Related Columns +Related Columns +1574325936 +iliessu +1574325936 +iliessu + + + + +CC7616EB-4593-45F9-9F3A-AD15533DBF4C +ID +ID +1574325240 +iliessu +1574325250 +iliessu +NUMBER +1 + + +A89082D0-219A-48A1-B341-996826C0DC3F +CREATED_AT +CREATED_AT +1525785190 +iliessu +1574325348 +iliessu +DATE + + +458DAC01-6B00-4C7C-BFCA-5F5DFE24660B +CREATED_BY +CREATED_BY +1525785190 +iliessu +1574325348 +iliessu +NUMBER + + +8E9BE21B-CACC-4D0B-823B-AA829FCCDB1D +UPDATED_BY +UPDATED_BY +1525785190 +iliessu +1574325348 +iliessu +NUMBER + + +7475FD33-55B8-4156-8376-5779BA2A417D +UPDATED_AT +UPDATED_AT +1525785190 +iliessu +1574325348 +iliessu +DATE + + + + +88645B51-CAD8-49F4-A0BC-BCB31F06BA1C +PK_RIGHTS +PK_RIGHTS +1574325226 +iliessu +1574325259 +iliessu + + +5174CE35-3FBF-4323-9219-6D04EAB80E14 +Related Columns +Related Columns +1574325254 +iliessu +1574325259 +iliessu + + + + + + + + + + + + +A18D8736-A324-4143-B4BB-B404DE446B27 +CONTEXT_RIGHTS +CONTEXT_RIGHTS +1574325265 +iliessu +1574326562 +iliessu + + + +CB26B708-7C7E-4179-B08B-ACC25689135E +Related Clusters +Related Clusters +1574326580 +iliessu +1574326580 +iliessu + + +2DF524E1-2157-44BA-9F8B-5E40395DC179 +Related Columns +Related Columns +1574326580 +iliessu +1574326580 +iliessu + + + + +558D254A-2994-444D-8DC0-D76D54C52FEB +ID +ID +1574325282 +iliessu +1574326275 +iliessu +NUMBER +1 + + +1CF1AA5D-1E85-44BE-9AC9-3B9BDEC8C653 +CONTEXT_ID +CONTEXT_ID +1574326062 +iliessu +1574326568 +iliessu +NUMBER + + +ED0C669B-1581-420D-A994-E43EEAF33399 +RIGHT_ID +RIGHT_ID +1574326020 +iliessu +1574326568 +iliessu +NUMBER + + +FAC0C62F-89CC-4ADC-8A8D-6401A68915B6 +CREATED_AT +CREATED_AT +1525785190 +iliessu +1574325958 +iliessu +DATE + + +03D11B7E-5C33-466F-A9DF-028345E7F3C4 +CREATED_BY +CREATED_BY +1525785190 +iliessu +1574325958 +iliessu +NUMBER + + +D38972BC-3878-47EB-A8A5-2105E2254B80 +UPDATED_BY +UPDATED_BY +1525785190 +iliessu +1574325958 +iliessu +NUMBER + + +0C3E5085-553F-4A13-932B-5496549C7EF0 +UPDATED_AT +UPDATED_AT +1525785190 +iliessu +1574325958 +iliessu +DATE + + + + +E0B53A1D-AB6F-4B33-8C5B-940B3EF91A74 +PK_CONTEXT_RIGHTS +PK_CONTEXT_RIGHTS +1574325282 +iliessu +1574325302 +iliessu + + + + + + + +BC7EEAEB-CFF0-4BB2-A835-480B26B792EC +UX_CONTEXT_RIGHTS +UX_CONTEXT_RIGHTS +1574326542 +iliessu +1574326568 +iliessu + + +E06CDFDA-C94D-4DF9-B9A4-19EEFA621BB1 +1574326562 +iliessu +1574326568 +iliessu + + + + + +A273FBEE-8088-49AC-AA49-F1166845D5D2 +1574326562 +iliessu +1574326568 +iliessu + + + + + + + + + + + + +0851247C-91BE-4E39-B60F-266769763A5B +NEW_PERSONS +NEW_PERSONS +1575465143 +iliessu +1575470468 +iliessu +temporary person placeholder + + + +3D970BDB-C3AD-4134-AF49-D94CFA4C922D +LOCAL_PER_ID +LOCAL_PER_ID +1575465145 +iliessu +1575465202 +iliessu +NUMBER +1 + + +DB10ECE0-965D-4AEE-B4AF-445126C1E3CE +LAST_NAME +LAST_NAME +1575449595 +iliessu +1575465272 +iliessu +VARCHAR2(256) +256 + + +579F9A94-A280-4974-9982-48CEC8CC2DF1 +FIRST_NAME +FIRST_NAME +1575449595 +iliessu +1575465272 +iliessu +VARCHAR2(256) +256 + + +96E85A6A-18D2-4DD6-8098-B6C3AEC68439 +GENDER +GENDER +1575449595 +iliessu +1575465272 +iliessu +M +F +CHAR(1) +1 + + +E2D11655-BF0A-4210-AEE5-0A1B7CC0D2CE +EMAIL +EMAIL +1575449595 +iliessu +1575470464 +iliessu +VARCHAR2(4000) +4000 + + +7413488D-C0A5-45B1-A52E-EF38E5B639F0 +PLACE_OF_RECRUITMENT +PLACE_OF_RECRUITMENT +1575449595 +iliessu +1575465372 +iliessu +NUMBER + + +314B726F-4D01-4A4E-B221-083F43E36CF9 +CREATED_AT +CREATED_AT +1525785190 +iliessu +1575465298 +iliessu +DATE + + +7FD5CDEB-0148-4F21-A734-0A2F7BEB8409 +CREATED_BY +CREATED_BY +1525785190 +iliessu +1575465298 +iliessu +NUMBER + + +C8200503-8509-441C-9340-A134B2C84D0D +UPDATED_BY +UPDATED_BY +1525785190 +iliessu +1575465298 +iliessu +NUMBER + + +FF846808-5C03-4580-825C-A61BAD90ABE7 +UPDATED_AT +UPDATED_AT +1525785190 +iliessu +1575465298 +iliessu +DATE + + + + +F1581324-E08E-44F0-B3F4-84E0DC07C03F +PK_NEW_PERSON +PK_NEW_PERSON +1575465145 +iliessu +1575465390 +iliessu + + + + + + + +A5B5A357-9EBB-468C-AA74-1952EC3658ED +UX_NEW_PERSONS_EMAIL +UX_NEW_PERSONS_EMAIL +1575470432 +iliessu +1575470464 +iliessu +1 + + +EE5FBDD5-E180-4F56-AAE3-2E2A294966B5 +1575470459 +iliessu +1575470464 +iliessu + + + + + + + + + + + + +867B9ACE-563C-4767-8EA7-A374B2B776BD +PLACE +PLACE +1575292537 +iliessu +1575470563 +iliessu + + + +B4974057-FAE9-4D5B-AFCE-25BD3209C9F3 +Related Clusters +Related Clusters +1575470556 +iliessu +1575470563 +iliessu + + +D1EBF825-F191-4071-9433-BC25C728EF4C +Related Columns +Related Columns +1575470556 +iliessu +1575470563 +iliessu + + + + +F1EB6B6D-7A3F-4614-A7C1-5799E3430F9B +ID +ID +1575449656 +iliessu +1575449804 +iliessu +NUMBER +1 + + +B709CD81-742E-4C78-9B48-8CBA0513A541 +COUNTRY +COUNTRY +1575449656 +iliessu +1575470561 +iliessu +VARCHAR2(128) +128 +1 + + +FA549245-188C-4F80-AAE7-5FE048A87FB8 +CITY +CITY +1575449656 +iliessu +1575470561 +iliessu +VARCHAR2(128) +128 +1 + + + + +CEC5B537-2D35-44C9-AEC2-AA4904306162 +PK_PLACES +PK_PLACES +1575449801 +iliessu +1575465755 +iliessu + + + + + + + +A1859E05-264F-4104-A8FC-C7C4C878E095 +UX_CITYCOUNTRY +UX_CITYCOUNTRY +1575470478 +iliessu +1575470503 +iliessu +1 + + +28C6DECA-C250-44D6-9994-A601A54D08F1 +1575470499 +iliessu +1575470503 +iliessu + + + + + +CC78E6D8-5560-4007-824B-5D2A354F3270 +1575470499 +iliessu +1575470503 +iliessu + + + + + + + + + + + + +67256F3C-3F51-4F1E-B5EB-E36E7A059C7E +ORGANIZATIONS +ORGANIZATIONS +1575292563 +iliessu +1575465417 +iliessu + + + +DF205C6C-ABCF-4543-994E-6CF1BD29AC8C +ORG_ID +ORG_ID +1575374853 +iliessu +1575449419 +iliessu +NUMBER +1 + + +0F4BC290-C998-4E0E-BA61-2E689FAEDFD6 +NAME +NAME +1575375090 +iliessu +1575469694 +iliessu +VARCHAR2(624) +624 + + +6312CA66-B830-420F-BE3C-17596FE44253 +COUNTRY +COUNTRY +1575375090 +iliessu +1575469694 +iliessu +VARCHAR2(624) +624 + + +E063A588-8224-46D5-A75E-4111DFEC0C2E +CITY +CITY +1575375090 +iliessu +1575469694 +iliessu +VARCHAR2(3) +3 + + +C03E7AA0-92B4-4996-8838-130F897750E8 +ACTIVE +ACTIVE +1575375090 +iliessu +1575449419 +iliessu +CHAR(1) +1 + + +799A7EE6-C039-4B2C-8727-A62EA60B4A54 +REGIONALIZED +REGIONALIZED +1575375090 +iliessu +1575449419 +iliessu +CHAR(1) +1 + + +B097A072-E275-4A04-8954-75B9F6DF2655 +IN_EU +IN_EU +1575375090 +iliessu +1575449419 +iliessu +CHAR(1) +1 + + +8DB91E14-C3B0-4A05-863A-2E402AAA05E5 +INTERNATIONAL_ORG +INTERNATIONAL_ORG +1575375090 +iliessu +1575449419 +iliessu +CHAR(1) +1 + + +F5FF3B36-304A-40C2-9508-AE2F608019BC +LCA_PERCENT +LCA_PERCENT +1575375090 +iliessu +1575449419 +iliessu +NUMBER + + +776481D9-4F64-4DAB-9CD4-A9F0E6897A9E +LCA +LCA +1575375090 +iliessu +1575449419 +iliessu +NUMBER + + +9D820CD9-02AD-4ADB-B943-B7D07805287E +LCA_VALID_FROM +LCA_VALID_FROM +1575375090 +iliessu +1575449419 +iliessu +DATE + + + + +9E3A4C56-78EA-4181-B9DA-B455731102BE +PK_ORG_ID +PK_ORG_ID +1575374853 +iliessu +1575449419 +iliessu + + + + + + + + + + +B2D85F04-D9C7-4514-B549-9DD51C466C32 +PERSONS +PERSONS +1575292439 +iliessu +1575540826 +iliessu +job holder + + + +9636A028-5A81-470A-AF93-3FC73A21C8AD +PER_ID +PER_ID +1575449595 +iliessu +1575449727 +iliessu +NUMBER + + +C9FFF5A2-D436-45A8-969E-F5B27CE6C662 +LAST_NAME +LAST_NAME +1575449595 +iliessu +1575465251 +iliessu +VARCHAR2(256) +256 + + +6886BF81-F625-446B-B0E0-09F245940E56 +FIRST_NAME +FIRST_NAME +1575449595 +iliessu +1575465251 +iliessu +VARCHAR2(256) +256 + + +80544C91-4DFB-4A23-9825-292828987EEF +GENDER +GENDER +1575449595 +iliessu +1575449742 +iliessu +M +F +CHAR(1) +1 + + +D242D5C0-512F-40C6-8DBF-90A125598D78 +EMAIL +EMAIL +1575449595 +iliessu +1575465258 +iliessu +VARCHAR2(4000) +4000 + + +189EF38B-8C3D-4D85-AB6B-399F7D54BFED +PLACE_OF_ORIGIN +PLACE_OF_ORIGIN +1575449595 +iliessu +1575465651 +iliessu +NUMBER + + +B660B86B-BDB4-48F6-A543-9D5AFC05A1E9 +PLACE_OF_RECRUITMENT +PLACE_OF_RECRUITMENT +1575449595 +iliessu +1575465687 +iliessu +NUMBER + + + + +73FCBDF4-79AE-41D5-9831-6E2600A368AB +__STATES +__STATES +1575292537 +iliessu +1575449419 +iliessu + + + +EA185921-5F80-4F05-BADA-C54018A476BD +ISO_CODE +ISO_CODE +1575465730 +iliessu +1575465740 +iliessu +NUMBER + + + + +C704B820-1054-4E53-B387-041070309BF7 +MOVEMENT_CONTEXT +MOVEMENT_CONTEXT +1574325168 +iliessu +1575449419 +iliessu +MOVEMENT TYPE CONTEXT + + + +5AD5A39E-6B5B-4A1C-87B0-56416EEFC126 +Related Clusters +Related Clusters +1575293146 +iliessu +1575293146 +iliessu + + +382D16AC-50B5-4687-96F1-285E4C2F01A8 +Related Columns +Related Columns +1575293146 +iliessu +1575293146 +iliessu + + + + +C4FF7E27-34C5-48BA-8194-D9E3B2014D83 +ID +ID +1574325189 +iliessu +1575449419 +iliessu +NUMBER +1 + + + + + +A859A60C-BAED-4ECE-A954-4AC3860E095D +ACTIVE +ACTIVE +1575290196 +iliessu +1575449419 +iliessu +Y +N +CHAR(1) +1 + + +254B6FBF-40B9-4400-8C59-6D7A196E009B +NAME +NAME +1575537364 +iliessu +1575537388 +iliessu +VARCHAR2(128) +128 + + +218B5156-9DFD-47A0-8EE0-BADF42CDAEB2 +CREATED_AT +CREATED_AT +1525785190 +iliessu +1575449419 +iliessu +DATE + + +B70953D9-3786-476D-B06D-92D29A7BD25B +CREATED_BY +CREATED_BY +1525785190 +iliessu +1575449419 +iliessu +NUMBER + + +3AA98821-6932-45EB-A054-1A3FE61BDF1F +UPDATED_BY +UPDATED_BY +1525785190 +iliessu +1575449419 +iliessu +NUMBER + + +DDF84018-3C20-4654-A6F0-8639C3F03F1F +UPDATED_AT +UPDATED_AT +1525785190 +iliessu +1575449419 +iliessu +DATE + + + + +8F053562-3810-466B-AFD1-D02A05FF56D1 +PK_ROTATION_CONTEXT +PK_ROTATION_CONTEXT +1574325189 +iliessu +1575449419 +iliessu + + +928236E6-0CD0-4B9E-AF2E-18A65D5B3B4F +Related Columns +Related Columns +1574326534 +iliessu +1575449419 +iliessu + + + + + + + + + +92B5383B-6B81-4FFA-8A2A-BDA23DAD277B +IDX_ACTIVE_CONTEXTS +IDX_ACTIVE_CONTEXTS +1575470361 +iliessu +1575470392 +iliessu + + +1B02FAFC-B7E1-49BB-BE09-104063FFD6B9 +1575470386 +iliessu +1575470392 +iliessu + + + + + + + + + +9C00B3D4-71B5-4E87-83FB-5CE0801E4F7E +CompoundDeleteTrigger_movement_context +COMPOUNDDELETETRIGGER_MOVEMENT +1575470249 +iliessu +1575470270 +iliessu +compound +delete + + + + + +9A43B581-BC72-4128-8A2F-582E931F64C8 +tib_movement_context +TIB_MOVEMENT_CONTEXT +1575470249 +iliessu +1575470270 +iliessu + + + + + + + + +D784009B-AF4B-469D-9F78-97B6EB472535 +CompoundInsertTrigger_movement_context +COMPOUNDINSERTTRIGGER_MOVEMENT +1575470249 +iliessu +1575470270 +iliessu +compound + + + + + +92A30B9B-7DC4-441E-B6C1-5492FF157881 +CompoundUpdateTrigger_movement_context +COMPOUNDUPDATETRIGGER_MOVEMENT +1575470249 +iliessu +1575470270 +iliessu +compound +update + + + + + + + + + + +078999BB-92B8-4F47-A8DA-DB29C4E9951C +REASONS +REASONS +1575292521 +iliessu +1575449419 +iliessu + + + +569F9E2F-4EE2-4F6F-96BA-4F84D362BB74 +ID +ID +1575374009 +iliessu +1575449419 +iliessu +NUMBER +1 + + + + + +EA6FB87E-B0E9-46B0-B090-1581CBB9A51F +NAME +NAME +1575374023 +iliessu +1575470576 +iliessu +VARCHAR2(265) +265 +1 + + +E5018CDA-8B4C-470B-AC84-C9F4C11F02B3 +MOVEMENT_CONTEXT_ID +MOVEMENT_CONTEXT_ID +1575374023 +iliessu +1575449419 +iliessu +NUMBER + + +495A573D-AFB1-4DD5-B0E7-189A589CDA1C +ACTIVE +ACTIVE +1575374023 +iliessu +1575449419 +iliessu +CHAR(1) +1 + + + + +D89BE85D-DD8F-40A8-830D-168036F41F56 +PK_REASONS +PK_REASONS +1575374009 +iliessu +1575449419 +iliessu + + + + + + + +5D4C4124-72AF-4826-8E99-D3704CEE1B4F +UK_REASON_NAME +UK_REASON_NAME +1575374071 +iliessu +1575449419 +iliessu +1 + + +BD7BAE07-1A3C-4F3D-B4FA-A002676767E3 +1575374084 +iliessu +1575449419 +iliessu + + + + + + + + + +7B856142-0648-4509-94BA-D97B33065072 +CompoundDeleteTrigger_reasons +COMPOUNDDELETETRIGGER_REASONS +1575470190 +iliessu +1575470238 +iliessu +compound +delete + + + + + +17331C48-0683-49C1-B510-82D62D823B17 +tib_reasons +TIB_REASONS +1575470190 +iliessu +1575470238 +iliessu + + + + + + + + +4E6A2302-5A98-4417-A731-0B46D5053D0E +CompoundInsertTrigger_reasons +COMPOUNDINSERTTRIGGER_REASONS +1575470190 +iliessu +1575470238 +iliessu +compound + + + + + +D3167C9C-9FD0-4B85-B403-6D661508E987 +CompoundUpdateTrigger_reasons +COMPOUNDUPDATETRIGGER_REASONS +1575470190 +iliessu +1575470238 +iliessu +compound +update + + + + + + + + + + +198A41F3-3A45-400A-B39C-6F01FFD302DD +MOVEMENT_FILES +MOVEMENT_FILES +1574260680 +iliessu +1575893308 +iliessu +See + +BR001 - Movement File - Structure + + + +D2430B00-EB01-4D0C-8ED7-30A31D1D0F83 +ID +ID +1574263616 +iliessu +1574326341 +iliessu +NUMBER +1 + + + + + +F8FD9C07-1EAC-4415-B194-F1471E0769F7 +LINKED_FILE_ID +LINKED_FILE_ID +1575292577 +iliessu +1575449419 +iliessu +NUMBER + + +CDBBF0D8-BF6A-4BC0-BE2B-0407106119F1 +CONTEXT_ID +CONTEXT_ID +1574326309 +iliessu +1574326484 +iliessu +NUMBER + + +68C955F0-4698-4142-850F-5CC54BA88287 +FILE_ID +FILE_ID +1574263616 +iliessu +1575470594 +iliessu +VARCHAR2(64) +64 +1 + + +EFA5E233-F5AE-46AB-A9A3-E120B812C643 +PER_ID +PER_ID +1575370550 +iliessu +1575449419 +iliessu +NUMBER + + +F5EBB900-988B-4F23-BAB3-782CDF366D05 +REASON_ID +REASON_ID +1575373935 +iliessu +1575449419 +iliessu +NUMBER + + +06540B01-BC12-4DB1-B39E-EAD6009D2469 +PRIORITY +PRIORITY +1575370550 +iliessu +1575469611 +iliessu +CHAR(1) +1 + + +19BD9C42-13F6-4678-89DA-127565366C23 +JOB_NUMBER +JOB_NUMBER +1575374401 +iliessu +1575449419 +iliessu +NUMBER + + +484031A6-F323-48B2-B511-C48396A1924F +BUDGET_LINE +BUDGET_LINE +1575374618 +iliessu +1575449419 +iliessu +VARCHAR2(256) +256 + + +DEAA7A5C-F7F7-4673-A63D-136F16DA99F1 +ALLOCATED_TO +ALLOCATED_TO +1575374890 +iliessu +1575449419 +iliessu +NUMBER + + +F337C775-B0A5-44FC-841F-A11DD0B4B977 +NON_FAMILY_POSTING +NON_FAMILY_POSTING +1575375218 +iliessu +1575449419 +iliessu +CHAR(1) +1 + + +8AF3EA48-EC8F-4620-9D55-388F0AD582F6 +CHILD_FREE_POSTING +CHILD_FREE_POSTING +1575375218 +iliessu +1575449419 +iliessu +CHAR(1) +1 + + +E97DD41C-42C5-49F9-AF8C-EFC9D0F50FE6 +START_DATE +START_DATE +1575375280 +iliessu +1575449419 +iliessu +DATE + + +737B33D5-F58B-49F4-B1AB-351ADC7D08B2 +ESTIMATED_END_DATE +ESTIMATED_END_DATE +1575375280 +iliessu +1575449419 +iliessu +DATE + + +470119FE-EABF-49FF-95E6-B977EB550A53 +SECONDMENT +SECONDMENT +1575375326 +iliessu +1575449419 +iliessu +CHAR(1) +1 + + +28D965AA-7B58-45D2-8225-E20DAC2F3B26 +STATE +STATE +1575370550 +iliessu +1575469564 +iliessu +VARCHAR2(16) +16 + + +B6BBB5AA-6858-42B0-920C-C6D745380E05 +CREATED_AT +CREATED_AT +1525785190 +iliessu +1574325983 +iliessu +DATE + + +A27D9FD6-7BF7-456B-993A-0145DDD55E12 +CREATED_BY +CREATED_BY +1525785190 +iliessu +1574325983 +iliessu +NUMBER + + +EC510C01-D2F0-49B7-8201-25C57A7CF4AC +UPDATED_BY +UPDATED_BY +1525785190 +iliessu +1574325983 +iliessu +NUMBER + + +1012F5B6-DE51-4C02-A7E4-B00B9D57F699 +UPDATED_AT +UPDATED_AT +1525785190 +iliessu +1574325983 +iliessu +DATE + + + + +287183D2-7659-43F9-AE5D-44BA34874BB8 +PK_ROTATION_FILES +PK_ROTATION_FILES +1574263616 +iliessu +1574264354 +iliessu + + + + + + + +C7C1D057-14AD-475C-8FE1-8B93515C4059 +UK_ROTATION_FILE +UK_ROTATION_FILE +1574263842 +iliessu +1574263862 +iliessu +1 + + +653AABF1-E4BE-4956-B455-96CC2B64CD7F +1574263857 +iliessu +1575449419 +iliessu + + + + + + + +4EEAB4B9-FCD4-492B-AAF6-88B640DD1E86 +IDX_CONTEXT_ID +IDX_CONTEXT_ID +1574326468 +iliessu +1574326484 +iliessu + + +18DAA741-A71D-4BD9-8B4F-CCE12EAFF376 +1574326478 +iliessu +1574326484 +iliessu + + + + + + + +AB9CCCC8-348B-4464-8FA0-B2FF9D23FB5E +IDX_ROTATION_UID +IDX_ROTATION_UID +1574326477 +iliessu +1574326503 +iliessu +1 + + +B68513A9-05C7-4F73-9C2A-8B3CC476BF77 +1574326498 +iliessu +1575449419 +iliessu + + + + + + + +B3BDBA74-5283-4C37-A492-FCEC9A419EDB +IDX_ROTATION_SELF +IDX_ROTATION_SELF +1575370662 +iliessu +1575449419 +iliessu + + +C08DDEC9-1E96-4D5D-86EA-CD9CBB0FD182 +1575370676 +iliessu +1575449419 +iliessu + + + + + + + + + +64D84049-B150-4DF9-AD72-80B2E34F82FF +CompoundDeleteTrigger_rotation_files +COMPOUNDDELETETRIGGER_ROTATION +1575470170 +iliessu +1575470172 +iliessu +compound +delete + + + + + +1F5EE14B-F0E2-422B-AD5D-052D9235F083 +tib_rotation_files +TIB_ROTATION_FILES +1575470170 +iliessu +1575470172 +iliessu + + + + + + + + +FA5C070F-CE87-4D47-9A8B-78A94515A722 +CompoundInsertTrigger_rotation_files +COMPOUNDINSERTTRIGGER_ROTATION +1575470170 +iliessu +1575470172 +iliessu +compound + + + + + +DB48D9D9-4D33-4CCA-AB7D-3DA9BDFE6C5E +CompoundUpdateTrigger_rotation_files +COMPOUNDUPDATETRIGGER_ROTATION +1575470170 +iliessu +1575470172 +iliessu +compound +update + + + + + + + + + + +1AECE29B-85CD-444E-B19B-E14F31B52E55 +BUDGET_LINES +BUDGET_LINES +1575374645 +iliessu +1575541401 +iliessu + + + +EFBA779C-1DC9-40B2-B123-7684C5EB1FC5 +BUDGET_LINE +BUDGET_LINE +1575374660 +iliessu +1575449419 +iliessu +VARCHAR2(256) +256 +1 + + + + +8572D565-27EC-4D4F-8B25-3F5A59FC9137 +PK_BUGET_LINES +PK_BUGET_LINES +1575374660 +iliessu +1575449419 +iliessu + + + + + + + + + + +7D77FDD1-E9FB-4272-AB31-A430E1DFB326 +JOBS +JOBS +1575374376 +iliessu +1575541361 +iliessu + + + +5C934254-EA5D-41B6-88AD-B16BE23EBBA5 +JOB_NUMBER +JOB_NUMBER +1575374381 +iliessu +1575449419 +iliessu +NUMBER +1 + + +B39D7A44-CA41-4E65-8E8D-9F24ADFB4A41 +STATUTORY_LINK +STATUTORY_LINK +1575374769 +iliessu +1575449419 +iliessu +VARCHAR2(8) +8 + + +9746E73E-8B29-4AD5-AC1D-E7110629DB8F +JOB_TYPE +JOB_TYPE +1575374799 +iliessu +1575449419 +iliessu +VARCHAR2(16) +16 + + + + +7E33A4FF-64AB-476F-90BB-4E11CD4043BA +PK_JOBS +PK_JOBS +1575374381 +iliessu +1575449419 +iliessu + + + + + + + + + + + + +DAD94176-ED3B-4D39-8925-6506FE9377CD +FK_CONTEXT__RIGHTS +FK_CONTEXT__RIGHTS +1574326175 +iliessu +1574326207 +iliessu +FK_CONTEXT__RIGHTS +0..* +1 +1 + + + + + + + + + + + +5F07D3F5-B658-4EC8-88FD-6242EF9049AF +1574326175 +iliessu +1574326185 +iliessu + + + + + + + + + + +C0D14299-6C8D-44D4-972D-5E9ABE550092 +FK_NEW_PERSSON_RCRTMNT_PLACE +FK_NEW_PERSSON_RCRTMNT_PLACE +1575465344 +iliessu +1575465372 +iliessu +FK_NEW_PERSSON_RCRTMNT_PLACE +0..* +1 +1 + + + + + + + + + + + +5EA27C82-FBA4-454E-B248-1BF63A59B1BF +1575465344 +iliessu +1575465372 +iliessu + + + + + + + + + + +4D508B74-E9C9-4C9F-ACE5-C7CABE3F250C +FK_PERSON__ORIGIN_PLACE +FK_PERSON__ORIGIN_PLACE +1575449820 +iliessu +1575465651 +iliessu +FK_PERSON__ORIGIN_PLACE +0..* +1 +1 + + + + + + + + + + + +AA2D716F-AD1D-4E7E-B832-1787A990313A +1575449820 +iliessu +1575465651 +iliessu + + + + + + + + + + +2179027C-D265-4D4F-9E68-7EA7B5DDEECA +FK_PERSON__RECRUITMENT_PLACE +FK_PERSON__RECRUITMENT_PLACE +1575449824 +iliessu +1575465687 +iliessu +FK_PERSON__RECRUITMENT_PLACE +0..* +1 +1 + + + + + + + + + + + +C4CBF7FD-AB7D-4C21-9B9B-5C9D35F96DF1 +1575449824 +iliessu +1575465687 +iliessu + + + + + + + + + + +827F0A7D-B30E-49BD-9E6C-5978DA062306 +FK_CONTEXT_RIGHTS__CONTEXT +FK_CONTEXT_RIGHTS__CONTEXT +1574326257 +iliessu +1575465713 +iliessu +FK_CONTEXT_RIGHTS__CONTEXT +0..* +1 +1 + + + + + + + + + + + +9BDD039F-0294-4385-8770-C35B6AC7ED3B +1574326257 +iliessu +1575449419 +iliessu + + + + + + + + + + +71F9C105-0D7B-47DD-B71E-68FFE5FFFD57 +FK_ROTATIN_FILE_SELF_REF +FK_ROTATIN_FILE_SELF_REF +1575370625 +iliessu +1575449419 +iliessu +FK_ROTATIN_FILE_SELF_REF +0..* +1 +1 + + + + + + + + + + + +DF9A3EC8-097E-489E-87CC-F9B21AD09E34 +1575370625 +iliessu +1575449419 +iliessu + + + + + + + + + + +68032288-F59A-4905-9315-026E48A1226F +FK_ROTATION__CONTEXT +FK_ROTATION__CONTEXT +1574326327 +iliessu +1575449419 +iliessu +FK_ROTATION__CONTEXT +0..* +1 +1 + + + + + + + + + + + +A9E26D88-664A-4443-A0F3-7785726D485D +1574326327 +iliessu +1575449419 +iliessu + + + + + + + + + + +00B6B097-A96E-4FDB-AC64-BA3BFCC2608D +FK_ROTATION_ALLOC_TO_ORG +FK_ROTATION_ALLOC_TO_ORG +1575374914 +iliessu +1575449419 +iliessu +FK_ROTATION_ALLOC_TO_ORG +0..* +1 +1 + + + + + + + + + + + +5C79B624-99B6-4A89-BB6A-2C8E1537B772 +1575374914 +iliessu +1575449419 +iliessu + + + + + + + + + + +42913DE9-21A0-4412-82C0-0F1BE5DAF9AD +FK_ROTATION_FILE_REASON +FK_ROTATION_FILE_REASON +1575374129 +iliessu +1575449419 +iliessu +FK_ROTATION_FILE_REASON +0..* +1 +1 + + + + + + + + + + + +7CD4FCB9-C3BC-436C-97FF-A95F752D733E +1575374129 +iliessu +1575449419 +iliessu + + + + + + + + + + +FFED3B31-34E6-4E7E-B587-A8E76D9234C5 +Reference_6 +REFERENCE_6 +1575374170 +iliessu +1575449419 +iliessu +FK_REASON_CONTEXT +0..* +1 +1 + + + + + + + + + + + +BE02AAA6-1662-4C2E-895F-EE3787E8F27F +1575374170 +iliessu +1575449419 +iliessu + + + + + + + + + + +01941324-18A5-462D-8189-4F97E32F3FDD +FK_ROTATION_BUGET_LINE +FK_ROTATION_BUGET_LINE +1575374683 +iliessu +1575449419 +iliessu +FK_ROTATION_BUGET_LINE +0..* +1 +1 + + + + + + + + + + + +47DB98EF-F515-4CF3-92FD-077BAE833B4E +1575374683 +iliessu +1575374683 +iliessu + + + + + + + + + + +9211335A-E246-441D-8F09-9B5D874946E3 +FK_ROTATION_REFERENCE___JOBS +FK_ROTATION_REFERENCE___JOBS +1575374425 +iliessu +1575449419 +iliessu +0..* +1 +1 + + + + + + + + + + + +A30C0C51-AF82-4EAE-A991-B53BD6E826B7 +1575374425 +iliessu +1575374425 +iliessu + + + + + + + + + + + + +26F5F34C-F3BD-4D7C-8804-3F9CD0C5D228 +SEQ_MOVEMENT_CONTEXT +SEQ_MOVEMENT_CONTEXT +1575470170 +iliessu +1575541062 +iliessu +increment by 1 +start with 1 + maxvalue 99999999999999 + minvalue 1 + cache 50 + + +827416D5-84DF-4596-A3C2-6800F6D88EC2 +SEQ_REASONS +SEQ_REASONS +1575469925 +iliessu +1575541071 +iliessu +increment by 1 +start with 1 + maxvalue 99999999999999 + minvalue 1 + cache 50 + + +78D5A3F3-226A-4C27-AB65-D29F7672B853 +SEQ_ROTATION_FILES +SEQ_ROTATION_FILES +1575469932 +iliessu +1575541081 +iliessu +increment by 1 +start with 1 + maxvalue 99999999999999 + minvalue 1 + cache 50 + + + + +93994A7B-E23E-458F-B546-10529B9474F4 +PUBLIC +PUBLIC +1574260646 +iliessu +1574260646 +iliessu + + + + +FB425DEC-001B-4B23-8BB6-13546D689B08 +ORACLE Version 11g +ORA11GR1 +1574260647 +iliessu +1574260647 +iliessu + +file:///%_DBMS%/ora11g.xdb +BAE632F3-AC04-4059-9893-259ABA89351C +4BA9F647-DAB1-11D1-9944-006097355D9B + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/database/model/archive/model.png b/e-rights-common/src/main/database/model/archive/model.png new file mode 100644 index 0000000..7b086af Binary files /dev/null and b/e-rights-common/src/main/database/model/archive/model.png differ diff --git a/e-rights-common/src/main/database/poc/RIGD-3442_Present_audit_data/00 Views generator.sql b/e-rights-common/src/main/database/poc/RIGD-3442_Present_audit_data/00 Views generator.sql new file mode 100644 index 0000000..3cb2102 --- /dev/null +++ b/e-rights-common/src/main/database/poc/RIGD-3442_Present_audit_data/00 Views generator.sql @@ -0,0 +1,106 @@ +DECLARE + ps_table_name CONSTANT VARCHAR2(128) := 'REQUEST_INDEMNITIES';--'REQUESTS'; -- + ls_aud_table_name CONSTANT VARCHAR(128) := 'AUD_' || ps_table_name; + ls_pk_column VARCHAR2(128); + lb_view_statement CLOB; + lb_columns_statement CLOB; + ls_sum_of_diff_columns CLOB; + ln_audit_column_found BOOLEAN; + ls_nvl_default VARCHAR2(128); +BEGIN + BEGIN + SELECT + ucc.column_name + INTO ls_pk_column + FROM + user_constraints uc + INNER JOIN user_cons_columns ucc ON ( uc.constraint_name = ucc.constraint_name ) + WHERE + uc.table_name = ps_table_name + AND uc.constraint_type = 'P'; + + EXCEPTION + WHEN no_data_found THEN + raise_application_error(-20000, 'No primary key defined for this table. Process halting.'); + WHEN too_many_rows THEN + raise_application_error(-20001, 'Muliple columns defined as primary key. This is not supported. Process halting.'); + END; + + ln_audit_column_found := false; + ls_sum_of_diff_columns := '0'; + FOR lr_aud_columns IN ( + SELECT + lower(column_name) column_name, + data_type + FROM + user_tab_columns + WHERE + table_name = ls_aud_table_name + AND column_name NOT IN ( 'REV', 'REVTYPE', ls_pk_column ) + ORDER BY + column_id + ) LOOP + ln_audit_column_found := true; + ls_sum_of_diff_columns := ls_sum_of_diff_columns + || ' + ' + || lr_aud_columns.column_name + || '_diff'; + CASE lr_aud_columns.data_type + WHEN 'NUMBER' THEN + ls_nvl_default := '-1'; + WHEN 'TIMESTAMP(6)' THEN + ls_nvl_default := 'TO_DATE(''01-JAN-1900'', ''DD-MON-YYYY'')'; + WHEN 'DATE' THEN + ls_nvl_default := 'TO_DATE(''01-JAN-1900'', ''DD-MON-YYYY'')'; + WHEN 'VARCHAR2' THEN + ls_nvl_default := '''@*#'''; + WHEN 'CHAR' THEN + ls_nvl_default := '''@*#'''; + WHEN 'RAW' THEN + ls_nvl_default := '''AAA'''; + END CASE; + + lb_columns_statement := lb_columns_statement + || ', LAG(' + || lr_aud_columns.column_name + || ', 1) OVER(PARTITION BY ' + || ls_pk_column + || ' ORDER BY rev) previous_' + || lr_aud_columns.column_name + || ', ' + || lr_aud_columns.column_name + || ', CASE WHEN nvl(' + || lr_aud_columns.column_name + || ', ' + || ls_nvl_default + || ') <> LAG(' + || lr_aud_columns.column_name + || ', 1, ' + || ls_nvl_default + || ') OVER(PARTITION BY ' + || ls_pk_column + || ' ORDER BY rev) AND revtype > 0 THEN 1 ELSE 0 END ' + || lr_aud_columns.column_name + || '_diff'; + + END LOOP; + + IF NOT ln_audit_column_found THEN + raise_application_error(-20002, 'No audit columns found. Process halting.'); + END IF; + lb_view_statement := 'CREATE OR REPLACE VIEW V_' + || ls_aud_table_name + || ' AS SELECT r.*, a.*' + || ', ( ' + || ls_sum_of_diff_columns + || ') nb_of_diff_found' + || ' FROM ank_revinfo r INNER JOIN (SELECT rev, revtype, ' + || ls_pk_column + || lb_columns_statement + || ' FROM ' + || ls_aud_table_name + || ') a ON (r.id = a.rev) ;'; + + dbms_output.put_line(lb_view_statement); +END; +/ \ No newline at end of file diff --git a/e-rights-common/src/main/database/poc/RIGD-3442_Present_audit_data/01 v_aud_request_indemnities.sql b/e-rights-common/src/main/database/poc/RIGD-3442_Present_audit_data/01 v_aud_request_indemnities.sql new file mode 100644 index 0000000..ebe0c6b --- /dev/null +++ b/e-rights-common/src/main/database/poc/RIGD-3442_Present_audit_data/01 v_aud_request_indemnities.sql @@ -0,0 +1,240 @@ +CREATE OR REPLACE VIEW v_aud_request_indemnities AS + SELECT + r.*, + a.*, + ( 0 + indemnity_number_diff + indemnity_type_diff + unit_diff + origin_period_year_diff + origin_period_month_diff + payment_period_year_diff + + payment_period_month_diff + indemnity_comment_diff + request_id_diff + created_by_diff + created_at_diff + updated_by_diff + + updated_at_diff ) nb_of_diff_found + FROM + ank_revinfo r + INNER JOIN ( + SELECT + rev, + revtype, + indemnity_id, + LAG(indemnity_number, 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) previous_indemnity_number, + indemnity_number, + CASE + WHEN nvl(indemnity_number, - 1) <> LAG(indemnity_number, 1, - 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END indemnity_number_diff, + LAG(indemnity_type, 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) previous_indemnity_type, + indemnity_type, + CASE + WHEN nvl(indemnity_type, '@*#') <> LAG(indemnity_type, 1, '@*#') + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END indemnity_type_diff, + LAG(unit, 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) previous_unit, + unit, + CASE + WHEN nvl(unit, '@*#') <> LAG(unit, 1, '@*#') + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END unit_diff, + LAG(origin_period_year, 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) previous_origin_period_year, + origin_period_year, + CASE + WHEN nvl(origin_period_year, - 1) <> LAG(origin_period_year, 1, - 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END origin_period_year_diff, + LAG(origin_period_month, 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) previous_origin_period_month, + origin_period_month, + CASE + WHEN nvl(origin_period_month, '@*#') <> LAG(origin_period_month, 1, '@*#') + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END origin_period_month_diff, + LAG(payment_period_year, 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) previous_payment_period_year, + payment_period_year, + CASE + WHEN nvl(payment_period_year, - 1) <> LAG(payment_period_year, 1, - 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END payment_period_year_diff, + LAG(payment_period_month, 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) previous_payment_period_month, + payment_period_month, + CASE + WHEN nvl(payment_period_month, '@*#') <> LAG(payment_period_month, 1, '@*#') + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END payment_period_month_diff, + LAG(indemnity_comment, 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) previous_indemnity_comment, + indemnity_comment, + CASE + WHEN nvl(indemnity_comment, '@*#') <> LAG(indemnity_comment, 1, '@*#') + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END indemnity_comment_diff, + LAG(request_id, 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) previous_request_id, + request_id, + CASE + WHEN nvl(request_id, - 1) <> LAG(request_id, 1, - 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END request_id_diff, + LAG(created_by, 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) previous_created_by, + created_by, + CASE + WHEN nvl(created_by, - 1) <> LAG(created_by, 1, - 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END created_by_diff, + LAG(created_at, 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) previous_created_at, + created_at, + CASE + WHEN nvl(created_at, TO_DATE('01-JAN-1900', 'DD-MON-YYYY')) <> LAG(created_at, 1, TO_DATE('01-JAN-1900', 'DD-MON-YYYY' + )) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END created_at_diff, + LAG(updated_by, 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) previous_updated_by, + updated_by, + CASE + WHEN nvl(updated_by, - 1) <> LAG(updated_by, 1, - 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END updated_by_diff, + LAG(updated_at, 1) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) previous_updated_at, + updated_at, + CASE + WHEN nvl(updated_at, TO_DATE('01-JAN-1900', 'DD-MON-YYYY')) <> LAG(updated_at, 1, TO_DATE('01-JAN-1900', 'DD-MON-YYYY' + )) + OVER(PARTITION BY indemnity_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END updated_at_diff + FROM + aud_request_indemnities + ) a ON ( r.id = a.rev ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/poc/RIGD-3442_Present_audit_data/02 v_aud_requests.sql b/e-rights-common/src/main/database/poc/RIGD-3442_Present_audit_data/02 v_aud_requests.sql new file mode 100644 index 0000000..f89f08f --- /dev/null +++ b/e-rights-common/src/main/database/poc/RIGD-3442_Present_audit_data/02 v_aud_requests.sql @@ -0,0 +1,1118 @@ +CREATE OR REPLACE VIEW v_aud_requests AS + SELECT + r.*, + a.*, + ( 0 + declaration_id_diff + entitlmnt_type_id_diff + persons_bank_info_id_diff + sm_id_diff + request_number_diff + entitlmnt_type_cat_id_diff + + total_amount_diff + total_amount_currency_diff + request_string_id_diff + year_diff + state_diff + created_by_diff + created_at_diff + + updated_by_diff + updated_at_diff + flat_rate_diff + flat_rate_family_diff + flat_rate_currency_diff + per_id_diff + flat_rate_family_currency_diff + + includes_staff_member_diff + calc_total_amount_diff + calc_total_amount_currency_diff + comments_diff + payment_request_diff + + payment_order_diff + payment_date_diff + request_declaration_number_diff + surface_rate_diff + surface_currency_diff + car_rate_diff + + car_currency_diff + airfreight_rate_diff + airfreight_currency_diff + storage_rate_diff + storage_currency_diff + topup_amount_diff + + topup_currency_diff + recovery_amount_diff + recovery_currency_diff + eis_amount_diff + eis_currency_diff + efs_amount_diff + + efs_currency_diff + request_option_diff + parent_request_id_diff + request_type_diff + indemnity_updated_at_diff + city_diff + + country_diff + entry_into_storage_diff + airfreight_kg_ceiling_diff + airfreight_volume_ceiling_diff + abac_state_diff + abac_workflow_state_diff + + total_vehicle_diff + total_storage_diff + total_unforeseen_diff + total_personal_diff + payment_order_valid_diff + draft_to_awaiting_date_diff + + payment_id_diff + payment_event_id_diff + justification_diff ) nb_of_diff_found + FROM + ank_revinfo r + INNER JOIN ( + SELECT + rev, + revtype, + request_id, + LAG(declaration_id, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_declaration_id, + declaration_id, + CASE + WHEN nvl(declaration_id, - 1) <> LAG(declaration_id, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END declaration_id_diff, + LAG(entitlmnt_type_id, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_entitlmnt_type_id, + entitlmnt_type_id, + CASE + WHEN nvl(entitlmnt_type_id, - 1) <> LAG(entitlmnt_type_id, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END entitlmnt_type_id_diff, + LAG(persons_bank_info_id, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_persons_bank_info_id, + persons_bank_info_id, + CASE + WHEN nvl(persons_bank_info_id, - 1) <> LAG(persons_bank_info_id, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END persons_bank_info_id_diff, + LAG(sm_id, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_sm_id, + sm_id, + CASE + WHEN nvl(sm_id, 'AAA') <> LAG(sm_id, 1, 'AAA') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END sm_id_diff, + LAG(request_number, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_request_number, + request_number, + CASE + WHEN nvl(request_number, - 1) <> LAG(request_number, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END request_number_diff, + LAG(entitlmnt_type_cat_id, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_entitlmnt_type_cat_id, + entitlmnt_type_cat_id, + CASE + WHEN nvl(entitlmnt_type_cat_id, - 1) <> LAG(entitlmnt_type_cat_id, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END entitlmnt_type_cat_id_diff, + LAG(total_amount, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_total_amount, + total_amount, + CASE + WHEN nvl(total_amount, - 1) <> LAG(total_amount, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END total_amount_diff, + LAG(total_amount_currency, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_total_amount_currency, + total_amount_currency, + CASE + WHEN nvl(total_amount_currency, '@*#') <> LAG(total_amount_currency, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END total_amount_currency_diff, + LAG(request_string_id, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_request_string_id, + request_string_id, + CASE + WHEN nvl(request_string_id, '@*#') <> LAG(request_string_id, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END request_string_id_diff, + LAG(year, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_year, + year, + CASE + WHEN nvl(year, - 1) <> LAG(year, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END year_diff, + LAG(state, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_state, + state, + CASE + WHEN nvl(state, '@*#') <> LAG(state, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END state_diff, + LAG(created_by, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_created_by, + created_by, + CASE + WHEN nvl(created_by, - 1) <> LAG(created_by, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END created_by_diff, + LAG(created_at, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_created_at, + created_at, + CASE + WHEN nvl(created_at, TO_DATE('01-JAN-1900', 'DD-MON-YYYY')) <> LAG(created_at, 1, TO_DATE('01-JAN-1900', 'DD-MON-YYYY' + )) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END created_at_diff, + LAG(updated_by, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_updated_by, + updated_by, + CASE + WHEN nvl(updated_by, - 1) <> LAG(updated_by, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END updated_by_diff, + LAG(updated_at, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_updated_at, + updated_at, + CASE + WHEN nvl(updated_at, TO_DATE('01-JAN-1900', 'DD-MON-YYYY')) <> LAG(updated_at, 1, TO_DATE('01-JAN-1900', 'DD-MON-YYYY' + )) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END updated_at_diff, + LAG(flat_rate, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_flat_rate, + flat_rate, + CASE + WHEN nvl(flat_rate, - 1) <> LAG(flat_rate, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END flat_rate_diff, + LAG(flat_rate_family, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_flat_rate_family, + flat_rate_family, + CASE + WHEN nvl(flat_rate_family, - 1) <> LAG(flat_rate_family, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END flat_rate_family_diff, + LAG(flat_rate_currency, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_flat_rate_currency, + flat_rate_currency, + CASE + WHEN nvl(flat_rate_currency, '@*#') <> LAG(flat_rate_currency, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END flat_rate_currency_diff, + LAG(per_id, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_per_id, + per_id, + CASE + WHEN nvl(per_id, - 1) <> LAG(per_id, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END per_id_diff, + LAG(flat_rate_family_currency, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_flat_rate_family_currency, + flat_rate_family_currency, + CASE + WHEN nvl(flat_rate_family_currency, '@*#') <> LAG(flat_rate_family_currency, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END flat_rate_family_currency_diff, + LAG(includes_staff_member, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_includes_staff_member, + includes_staff_member, + CASE + WHEN nvl(includes_staff_member, '@*#') <> LAG(includes_staff_member, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END includes_staff_member_diff, + LAG(calc_total_amount, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_calc_total_amount, + calc_total_amount, + CASE + WHEN nvl(calc_total_amount, - 1) <> LAG(calc_total_amount, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END calc_total_amount_diff, + LAG(calc_total_amount_currency, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_calc_total_amount_currency, + calc_total_amount_currency, + CASE + WHEN nvl(calc_total_amount_currency, '@*#') <> LAG(calc_total_amount_currency, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END calc_total_amount_currency_diff, + LAG(comments, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_comments, + comments, + CASE + WHEN nvl(comments, '@*#') <> LAG(comments, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END comments_diff, + LAG(payment_request, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_payment_request, + payment_request, + CASE + WHEN nvl(payment_request, '@*#') <> LAG(payment_request, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END payment_request_diff, + LAG(payment_order, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_payment_order, + payment_order, + CASE + WHEN nvl(payment_order, '@*#') <> LAG(payment_order, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END payment_order_diff, + LAG(payment_date, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_payment_date, + payment_date, + CASE + WHEN nvl(payment_date, TO_DATE('01-JAN-1900', 'DD-MON-YYYY')) <> LAG(payment_date, 1, TO_DATE('01-JAN-1900', 'DD-MON-YYYY' + )) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END payment_date_diff, + LAG(request_declaration_number, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_request_declaration_number, + request_declaration_number, + CASE + WHEN nvl(request_declaration_number, - 1) <> LAG(request_declaration_number, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END request_declaration_number_diff, + LAG(surface_rate, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_surface_rate, + surface_rate, + CASE + WHEN nvl(surface_rate, - 1) <> LAG(surface_rate, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END surface_rate_diff, + LAG(surface_currency, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_surface_currency, + surface_currency, + CASE + WHEN nvl(surface_currency, '@*#') <> LAG(surface_currency, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END surface_currency_diff, + LAG(car_rate, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_car_rate, + car_rate, + CASE + WHEN nvl(car_rate, - 1) <> LAG(car_rate, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END car_rate_diff, + LAG(car_currency, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_car_currency, + car_currency, + CASE + WHEN nvl(car_currency, '@*#') <> LAG(car_currency, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END car_currency_diff, + LAG(airfreight_rate, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_airfreight_rate, + airfreight_rate, + CASE + WHEN nvl(airfreight_rate, - 1) <> LAG(airfreight_rate, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END airfreight_rate_diff, + LAG(airfreight_currency, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_airfreight_currency, + airfreight_currency, + CASE + WHEN nvl(airfreight_currency, '@*#') <> LAG(airfreight_currency, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END airfreight_currency_diff, + LAG(storage_rate, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_storage_rate, + storage_rate, + CASE + WHEN nvl(storage_rate, - 1) <> LAG(storage_rate, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END storage_rate_diff, + LAG(storage_currency, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_storage_currency, + storage_currency, + CASE + WHEN nvl(storage_currency, '@*#') <> LAG(storage_currency, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END storage_currency_diff, + LAG(topup_amount, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_topup_amount, + topup_amount, + CASE + WHEN nvl(topup_amount, - 1) <> LAG(topup_amount, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END topup_amount_diff, + LAG(topup_currency, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_topup_currency, + topup_currency, + CASE + WHEN nvl(topup_currency, - 1) <> LAG(topup_currency, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END topup_currency_diff, + LAG(recovery_amount, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_recovery_amount, + recovery_amount, + CASE + WHEN nvl(recovery_amount, - 1) <> LAG(recovery_amount, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END recovery_amount_diff, + LAG(recovery_currency, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_recovery_currency, + recovery_currency, + CASE + WHEN nvl(recovery_currency, - 1) <> LAG(recovery_currency, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END recovery_currency_diff, + LAG(eis_amount, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_eis_amount, + eis_amount, + CASE + WHEN nvl(eis_amount, - 1) <> LAG(eis_amount, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END eis_amount_diff, + LAG(eis_currency, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_eis_currency, + eis_currency, + CASE + WHEN nvl(eis_currency, - 1) <> LAG(eis_currency, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END eis_currency_diff, + LAG(efs_amount, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_efs_amount, + efs_amount, + CASE + WHEN nvl(efs_amount, - 1) <> LAG(efs_amount, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END efs_amount_diff, + LAG(efs_currency, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_efs_currency, + efs_currency, + CASE + WHEN nvl(efs_currency, - 1) <> LAG(efs_currency, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END efs_currency_diff, + LAG(request_option, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_request_option, + request_option, + CASE + WHEN nvl(request_option, '@*#') <> LAG(request_option, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END request_option_diff, + LAG(parent_request_id, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_parent_request_id, + parent_request_id, + CASE + WHEN nvl(parent_request_id, - 1) <> LAG(parent_request_id, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END parent_request_id_diff, + LAG(request_type, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_request_type, + request_type, + CASE + WHEN nvl(request_type, '@*#') <> LAG(request_type, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END request_type_diff, + LAG(indemnity_updated_at, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_indemnity_updated_at, + indemnity_updated_at, + CASE + WHEN nvl(indemnity_updated_at, TO_DATE('01-JAN-1900', 'DD-MON-YYYY')) <> LAG(indemnity_updated_at, 1, TO_DATE('01-JAN-1900' + , 'DD-MON-YYYY')) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END indemnity_updated_at_diff, + LAG(city, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_city, + city, + CASE + WHEN nvl(city, '@*#') <> LAG(city, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END city_diff, + LAG(country, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_country, + country, + CASE + WHEN nvl(country, '@*#') <> LAG(country, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END country_diff, + LAG(entry_into_storage, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_entry_into_storage, + entry_into_storage, + CASE + WHEN nvl(entry_into_storage, '@*#') <> LAG(entry_into_storage, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END entry_into_storage_diff, + LAG(airfreight_kg_ceiling, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_airfreight_kg_ceiling, + airfreight_kg_ceiling, + CASE + WHEN nvl(airfreight_kg_ceiling, - 1) <> LAG(airfreight_kg_ceiling, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END airfreight_kg_ceiling_diff, + LAG(airfreight_volume_ceiling, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_airfreight_volume_ceiling, + airfreight_volume_ceiling, + CASE + WHEN nvl(airfreight_volume_ceiling, - 1) <> LAG(airfreight_volume_ceiling, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END airfreight_volume_ceiling_diff, + LAG(abac_state, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_abac_state, + abac_state, + CASE + WHEN nvl(abac_state, '@*#') <> LAG(abac_state, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END abac_state_diff, + LAG(abac_workflow_state, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_abac_workflow_state, + abac_workflow_state, + CASE + WHEN nvl(abac_workflow_state, '@*#') <> LAG(abac_workflow_state, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END abac_workflow_state_diff, + LAG(total_vehicle, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_total_vehicle, + total_vehicle, + CASE + WHEN nvl(total_vehicle, - 1) <> LAG(total_vehicle, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END total_vehicle_diff, + LAG(total_storage, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_total_storage, + total_storage, + CASE + WHEN nvl(total_storage, - 1) <> LAG(total_storage, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END total_storage_diff, + LAG(total_unforeseen, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_total_unforeseen, + total_unforeseen, + CASE + WHEN nvl(total_unforeseen, - 1) <> LAG(total_unforeseen, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END total_unforeseen_diff, + LAG(total_personal, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_total_personal, + total_personal, + CASE + WHEN nvl(total_personal, - 1) <> LAG(total_personal, 1, - 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END total_personal_diff, + LAG(payment_order_valid, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_payment_order_valid, + payment_order_valid, + CASE + WHEN nvl(payment_order_valid, '@*#') <> LAG(payment_order_valid, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END payment_order_valid_diff, + LAG(draft_to_awaiting_date, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_draft_to_awaiting_date, + draft_to_awaiting_date, + CASE + WHEN nvl(draft_to_awaiting_date, TO_DATE('01-JAN-1900', 'DD-MON-YYYY')) <> LAG(draft_to_awaiting_date, 1, TO_DATE + ('01-JAN-1900', 'DD-MON-YYYY')) + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END draft_to_awaiting_date_diff, + LAG(payment_id, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_payment_id, + payment_id, + CASE + WHEN nvl(payment_id, '@*#') <> LAG(payment_id, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END payment_id_diff, + LAG(payment_event_id, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_payment_event_id, + payment_event_id, + CASE + WHEN nvl(payment_event_id, '@*#') <> LAG(payment_event_id, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END payment_event_id_diff, + LAG(justification, 1) + OVER(PARTITION BY request_id + ORDER BY + rev + ) previous_justification, + justification, + CASE + WHEN nvl(justification, '@*#') <> LAG(justification, 1, '@*#') + OVER(PARTITION BY request_id + ORDER BY + rev + ) + AND revtype > 0 THEN + 1 + ELSE + 0 + END justification_diff + FROM + aud_requests + ) a ON ( r.id = a.rev ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/poc/RIGD-3442_Present_audit_data/03 Audit tables indexes.sql b/e-rights-common/src/main/database/poc/RIGD-3442_Present_audit_data/03 Audit tables indexes.sql new file mode 100644 index 0000000..98eae66 --- /dev/null +++ b/e-rights-common/src/main/database/poc/RIGD-3442_Present_audit_data/03 Audit tables indexes.sql @@ -0,0 +1,17 @@ +CREATE INDEX ix_aud_requests_request_id ON + aud_requests ( + request_id + ) + COMPUTE STATISTICS; + +CREATE INDEX ix_aud_request_indemnities_indemnity_id ON + aud_request_indemnities ( + indemnity_id + ) + COMPUTE STATISTICS; + +CREATE INDEX ix_aud_request_indemnities_request_id ON + aud_request_indemnities ( + request_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.1.1/01_RIGD-3223_tr_analytical_codes_code_cleaning.sql b/e-rights-common/src/main/database/release/3.1.1/01_RIGD-3223_tr_analytical_codes_code_cleaning.sql new file mode 100644 index 0000000..64e9a5b --- /dev/null +++ b/e-rights-common/src/main/database/release/3.1.1/01_RIGD-3223_tr_analytical_codes_code_cleaning.sql @@ -0,0 +1,10 @@ +CREATE OR REPLACE TRIGGER tr_analytical_codes_code_cleaning BEFORE + INSERT OR UPDATE ON analytical_codes + REFERENCING + OLD AS old + NEW AS new + FOR EACH ROW +BEGIN + :new.analytical_code := trim(chr(32) FROM trim(:new.analytical_code)); -- Trim tabs and blanks +END; +/ diff --git a/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/1. eTravel regularization extract for eRights.sql b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/1. eTravel regularization extract for eRights.sql new file mode 100644 index 0000000..1f6df6c --- /dev/null +++ b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/1. eTravel regularization extract for eRights.sql @@ -0,0 +1,173 @@ +-- select * from T_PAYMENTS t where per_id = 90144933 +-- select * from T_PAYMENTS t where done_by_ts between to_date ('18/01/2021','dd/mm/rrrr') and to_date ('19/01/2021','dd/mm/rrrr'); +-- select * from T_PAYMENT_LISTS where payment_list_stem_id = 14747; +-- select * from T_TRIPS where person2_stem_id = 47528; +-- select * from T_PAYMENT_LIST_TRIPS where trip_stem_id between 177013 and 177016; +-- select * from T_TRAVEL_FILES where person_stem_id = 47528; +-- select * from T_TRIPS where person2_stem_id = 47528; +-- select * from T_LOCATIONS where airport_stem_id = 4072; +-- select * from T_ROUTES where route_stem_id = 148605; +-- select * from T_CONNECTIONS where connection_stem_id = 1496234 +-- drop table TEST_MIGRATION_TABLE + +alter table ERIGHTS_MIGRATION_TABLE rename to bkp$ERIGHTS_MIGRATION_TABLE_202307050840; + +-- drop table ERIGHTS_MIGRATION_TABLE; +-- drop sequence sq_erights_migr; +create sequence sq_erights_migr minvalue 1 maxvalue 999999999999999999999999999 start with 1 increment by 1 cache 5000; + + +create TABLE ERIGHTS_MIGRATION_TABLE as +select sq_erights_migr.nextVal record_id, dat.* from +( + +with t_location as ( select distinct city_id, country_id , airport_stem_id from t_locations where 1=1 and deleted = 'N' and archived = 'N' and airport_base ='Y' and city_id is not null ) , + t_payment as + ( + select t.payment_id, t.exercise_stem_id, t.person_stem_id, t.per_id, t.payment_list_stem_id, t.total_amount, t.regularization_amount, t.origin_period, t.payment_period, + case when t.done_by_per_id < 0 then 0 else t.done_by_per_id end created_by , t.done_by_ts created_on , + to_number(substr(t.origin_period,1,2)) origin_year, to_number(substr(t.origin_period,3,2)) origin_month, + to_number(substr(t.payment_period,1,2)) payment_year, to_number(substr(t.payment_period,3,2)) payment_month, + case when t.done_by_ts < to_date('30/06/' || e.name, 'dd/mm/rrrr' ) then to_date('01/06/' || e.name, 'dd/mm/rrrr' ) else to_date('31/12/' || e.name, 'dd/mm/rrrr' ) end calc_assign_records_date, + row_number() over ( partition by t.person_stem_id, t.exercise_stem_id order by t.payment_id desc ) rn + from T_PAYMENTS t + inner join t_exercises e on t.exercise_stem_id = e.exercise_stem_id + where t.exercise_stem_id >= (select max(t2.exercise_id) - 4 from t_exercises t2) -- last 5 or 6 years + and t.deleted = 'N' and t.processed ='Y' + -- and per_id = 90144933 + -- and per_id = 90013645 + ), + t_codes as --- Also check MV_SY2_HIST_REL_PERS + ( + select 2 trp_cd, 'Parent' trp_code from dual union all + select 3 trp_cd, 'Parent''s spouse' trp_code from dual union all + select 4 trp_cd, 'Grandparent' trp_code from dual union all + select 6 trp_cd, 'Child' trp_code from dual union all + select 7 trp_cd, 'Biological child' trp_code from dual union all + select 8 trp_cd, 'Adopted child' trp_code from dual union all + select 9 trp_cd, 'Spouse''s child' trp_code from dual union all + select 10 trp_cd, 'Grandchild' trp_code from dual union all + select 12 trp_cd, 'Other family links' trp_code from dual union all + select 13 trp_cd, 'Brother / Sister' trp_code from dual union all + select 14 trp_cd, 'Uncle / Aunt' trp_code from dual union all + select 16 trp_cd, 'Nephew / Niece' trp_code from dual union all + select 18 trp_cd, 'Son / Daughter-in-law' trp_code from dual union all + select 20 trp_cd, 'Biological parent' trp_code from dual union all + select 21 trp_cd, 'Adoptive parent' trp_code from dual union all + select 22 trp_cd, 'Spouse''s parent' trp_code from dual union all + select 23 trp_cd, 'Parent''s ex-spouse' trp_code from dual union all + select 24 trp_cd, 'Ex-spouse''s child' trp_code from dual union all + select 41 trp_cd, 'Spouse' trp_code from dual union all + select 42 trp_cd, 'Assimilated partner' trp_code from dual union all + select 43 trp_cd, 'Not assimilated partner' trp_code from dual union all + select 44 trp_cd, 'Ex-spouse / Person' trp_code from dual union all + select 45 trp_cd, 'Separated spouse' trp_code from dual union all + select 46 trp_cd, 'Ex-assimilated partner' trp_code from dual union all + select 47 trp_cd, 'Ex-non-assimilated partner' trp_code from dual union all + select 48 trp_cd, 'De facto separated spouse' trp_code from dual union all + select 49 trp_cd, 'Deceased spouse' trp_code from dual union all + select 50 trp_cd, 'Widowed spouse' trp_code from dual union all + select 60 trp_cd, 'Other links' trp_code from dual union all + select 61 trp_cd, 'Cohabiter (SIC)' trp_code from dual union all + select 62 trp_cd, 'Treated as dependent article 2(4)' trp_code from dual union all + select 63 trp_cd, 'Person without determined link' trp_code from dual union all + select 64 trp_cd, 'Guardian' trp_code from dual union all + select 65 trp_cd, 'Child under guardianship' trp_code from dual union all + select 67 trp_cd, 'Foster parent' trp_code from dual union all + select 68 trp_cd, 'Child in foster family' trp_code from dual + ) , + first_payments as + ( select t.exercise_stem_id, t.person_stem_id, t.per_id, min(t.payment_list_stem_id) first_payment_list_stem_id , min(trunc(t.done_by_ts)) first_payment_date + from T_PAYMENTS t + where t.exercise_stem_id >= (select max(exercise_id) - 4 from t_exercises) -- last 5 or 6 years + and t.deleted = 'N' and t.processed ='Y' + -- and t.per_id = 90144933 + group by t.exercise_stem_id, t.person_stem_id, t.per_id + ), + assignments_history as + ( + select per_id, person_stem_id, soj_id, start_Date_aff, end_Date_aff, country_id, country_name_eng, ltv_vil_cd,description_en -- job_id, lst_cd, + from mv_assignments_eeas_fonc + -- where per_id =90144933 + union + select per_id, person_stem_id, soj_id, date_from, date_to, country_id, country_name_eng, ltv_vil_cd,description_en -- job_id, lst_cd, + from mv_assignments_com_fonc + -- where per_id =90144933 + ) + + select -- p.person_stem_id, p.payment_list_stem_id, p.origin_period, p.payment_period, plt.trip_stem_id, t.route_stem_id, t.person_stem_id,r.org_airport_stem_id, r.dst_airport_stem_id, + -- p.regularization_amount, plt.payable_amount, + distinct + p.person_stem_id, t.person_stem_id rel_person_stem_id, + p.per_id, + case when p.per_id = pr.per_id then null else pr.per_id end rel_per_id, + pr.firstname, pr.lastname, pr.birthdate, lpr.RELATIONSHIP_TYPE, --pr.nationality, + case + when c.trp_code is null and p.person_stem_id != t.person_stem_id then 'N/A - check EASREFN.MV_PERSON_RELATIVES for more options' + when p.person_stem_id = t.person_stem_id then 'Staff Member' + else c.trp_code + end trp_code, + p.exercise_stem_id, to_number(e.name) exercise_year, p.created_by, p.created_on, + case when p.per_id = pr.per_id then p.total_amount else null end total_amount, + t.price price_prorata, case when prorata = 0 or prorata is null then null else t.price* (12/prorata) end full_price, t.percentage, t.prorata, + p.origin_year, p.origin_month, p.payment_year, p.payment_month, + a_org.iata_code ori_iata_code, a_org.airport_name ori_airport_name, + trim(substr(a_org.airport_name, 1, instr(a_org.airport_name, '-', -1)-1 )) ori_city_name, trim(substr(a_org.airport_name, instr(a_org.airport_name, '-', -1) + 1 )) ori_country_id, + --l_org.city_id ori_city_id, l_org.country_id ori_country_id, + a_dst.iata_code dst_iata_code, a_dst.airport_name dst_airport_name, + trim(substr(a_dst.airport_name, 1, instr(a_dst.airport_name, '-', -1)-1 )) dst_city_name, trim(substr(a_dst.airport_name, instr(a_dst.airport_name, '-', -1) + 1 )) dst_country_id, + --l_dst.city_id dst_city_id, l_dst.country_id dst_country_id, + o.country_id country_of_origin, + nvl(ms.isms,0) is_member_state, + case when p.per_id = pr.per_id then ah.soj_id else null end assignm_soj_id, + case when p.per_id = pr.per_id then ah.start_date_aff else null end assignm_start_date, + case when p.per_id = pr.per_id then ah.end_date_aff else null end assignm_end_date , + case when p.per_id = pr.per_id then ah.country_id else null end assignm_country_id, + case when p.per_id = pr.per_id then ah.ltv_vil_cd else null end assignm_city_id, + 0.01 inverse_route_amount, + r.org_airport_stem_id, r.dst_airport_stem_id + from T_PAYMENT p + inner join first_payments fp on p.per_id = fp.per_id and p.exercise_stem_id = fp.exercise_stem_id + inner join T_PAYMENT_LIST_TRIPS plt on p.payment_list_stem_id = plt.payment_list_stem_id + inner join t_trips t on plt.trip_stem_id = t.trip_stem_id and t.person2_stem_id = p.person_stem_id + inner join t_persons pr on t.person_stem_id = pr.person_stem_id + inner join t_routes r on r.route_stem_id = t.route_stem_id + left join t_airports a_org on r.org_airport_stem_id = a_org.airport_stem_id + left join t_airports a_dst on r.dst_airport_stem_id = a_dst.airport_stem_id + -- left join t_location l_org on a_org.airport_stem_id = l_org.airport_stem_id and l_org.city_id = a_org.iata_code + -- left join t_location l_dst on a_dst.airport_stem_id = l_dst.airport_stem_id and l_dst.city_id = a_dst.iata_code + inner join t_exercises e on p.exercise_stem_id = e.exercise_stem_id + left join V_LIVE_PERSON_RELS lpr on lpr.PERSON1_STEM_ID = p.person_stem_id and lpr.PERSON2_STEM_ID = t.person_stem_id and p.created_on between lpr.VALID_FROM and lpr.VALID_TO + left join t_codes c on lpr.RELATIONSHIP_TYPE = c.trp_cd + left join ( select distinct person_Stem_id, is_origin_place, city_id, country_id, valid_from, valid_to, + exercise_stem_id, exercise, /*po_from, po_to, ex_from, ex_to,*/ active + from V_EXERCISE_PLACE_ORIGIN ) o on o.person_stem_id = p.person_stem_id and fp.first_payment_date between o.valid_from and o.valid_to --to_date('01/06' || e.name, 'dd/mm/rrrr') + --left join mv_place_of_origin o on o.per_id = p.per_id and fp.first_payment_date between o.valid_from_adr and o.valid_to_adr --to_date('01/06' || e.name, 'dd/mm/rrrr') + left join assignments_history ah on p.per_id = ah.per_id and p.calc_assign_records_date between ah.start_date_aff and ah.end_date_aff + left join MV_CAPITAL_OF_MS ms on o.country_id = ms.country_id + where t.deleted = 'N' + and t.archived = 'N' + and plt.archived = 'N' + and plt.deleted = 'N' + and r.deleted = 'N' + and r.archived = 'N' + and p.rn = 1 + and o.IS_ORIGIN_PLACE = 'Y' + and a_org.active = 'Y' + and a_org.archived = 'N' + and a_org.deleted = 'N' + and a_dst.active = 'Y' + and a_dst.archived = 'N' + and a_dst.deleted = 'N' + -- and p.per_id = 90323780 -- 90144933 +) dat +-- order by p.per_id, rel_per_id, p.exercise_stem_id + -- and p.per_id = 90144933 and p.payment_id = 116982 and p.exercise_stem_id = 10 + -- and a_org.deleted = 'N' and a_org.archived = 'N' a_org pr.active = 'Y' + -- and a_dst.deleted = 'N' and a_dst.archived = 'N' a_dst pr.active = 'Y' + -- and r.archived = 'N' and r.active = 'Y' + -- and pr.deleted = 'N' and pr.archived = 'N' and pr.active = 'Y' +; + + +create index idx_iata_exercise4 on ERIGHTS_MIGRATION_TABLE(exercise_stem_id, ori_iata_code, dst_iata_code); diff --git a/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/2. eTravel regularization extract for eRights QUALITY script.sql b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/2. eTravel regularization extract for eRights QUALITY script.sql new file mode 100644 index 0000000..cec5b45 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/2. eTravel regularization extract for eRights QUALITY script.sql @@ -0,0 +1,69 @@ +-- drop table ERIGHTS_MIGRATION_MULTIPLICITY_TABLE; +-- create table ERIGHTS_MIGRATION_MULTIPLICITY_TABLE as select cast(null as varchar2(1000)) reason, erights_migration_table.* from erights_migration_table where 1=2; +-- select * from ERIGHTS_MIGRATION_MULTIPLICITY_TABLE; + + +-- truncate table ERIGHTS_MIGRATION_MULTIPLICITY_TABLE + +-- 1. Official beneficiaries +-- 1a. A check query +select * from + ( + select per_id, exercise_stem_id, + price_prorata , lead(price_prorata) over ( partition by per_id,exercise_stem_id order by per_id,exercise_stem_id, assignm_start_date, country_of_origin) lead_price_prorata + from + ( + with + multiple_main_beneficiaries as ( select per_id, exercise_stem_id, count(1) c from erights_migration_table where rel_per_id is null group by per_id, exercise_stem_id having count(1) > 1 ) + select emt.* -- ,mmb.* + from erights_migration_table emt + inner join multiple_main_beneficiaries mmb on emt.per_id = mmb.per_id and emt.exercise_stem_id = mmb.exercise_stem_id and emt.rel_per_id is null + order by emt.per_id, emt.exercise_stem_id + ) + ) where price_prorata != lead_price_prorata; + + +-- 1b. Insert into log table +insert into ERIGHTS_MIGRATION_MULTIPLICITY_TABLE + with + multiple_main_beneficiaries as ( select per_id, exercise_stem_id, count(1) c from erights_migration_table where rel_per_id is null group by per_id, exercise_stem_id having count(1) > 1 ) + select 'Multiple main beneficiaries' r , emt.* -- ,mmb.* + from erights_migration_table emt + inner join multiple_main_beneficiaries mmb on emt.per_id = mmb.per_id and emt.exercise_stem_id = mmb.exercise_stem_id and emt.rel_per_id is null; + + commit; + +-- 2. Attached to main beneficiaries ( spouces , kids ) +-- 2a. A check query +select * from + ( + select per_id, exercise_stem_id, + price_prorata , lead(price_prorata) over ( partition by per_id,exercise_stem_id, rel_per_id order by per_id,exercise_stem_id,rel_per_id) lead_price_prorata + from + ( + with + multiple_beneficiaries as ( select per_id, rel_per_id, exercise_stem_id, count(1) c from erights_migration_table where rel_per_id is not null group by per_id, rel_per_id, exercise_stem_id having count(1) > 1 ) + select emt.* -- , mb.* + from erights_migration_table emt + inner join multiple_beneficiaries mb on emt.per_id = mb.per_id and emt.exercise_stem_id = mb.exercise_stem_id and emt.rel_per_id = mb.rel_per_id + order by emt.per_id, emt.exercise_stem_id, emt.rel_per_id + ) + ) where price_prorata != lead_price_prorata; + +-- 2b. Insert into log table +insert into ERIGHTS_MIGRATION_MULTIPLICITY_TABLE + with + multiple_beneficiaries as ( select per_id, rel_per_id, exercise_stem_id, count(1) c from erights_migration_table where rel_per_id is not null group by per_id, rel_per_id, exercise_stem_id having count(1) > 1 ) + select 'Attached to main beneficiaries', emt.* -- , mb.* + from erights_migration_table emt + inner join multiple_beneficiaries mb on emt.per_id = mb.per_id and emt.exercise_stem_id = mb.exercise_stem_id and emt.rel_per_id = mb.rel_per_id; + + commit; + + + + + + +select * from erights_migration_table where per_id =10039599 and exercise_stem_id = 7 ; +select * from erights_migration_table where per_id =90004445 order by exercise_stem_id, relationship_type, rel_per_id diff --git a/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/3. eTravel regularization update inverse route amt-1.sql b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/3. eTravel regularization update inverse route amt-1.sql new file mode 100644 index 0000000..3efc4a2 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/3. eTravel regularization update inverse route amt-1.sql @@ -0,0 +1,107 @@ +-- 1. Use exixsting payments in the same year to get amount of inverse route. This step is much faster than the next , that is why we run this +declare + v_inv_route_amt number; +begin + for cur_exercise in ( select distinct exercise_stem_id, exercise_year from ERIGHTS_MIGRATION_TABLE order by exercise_stem_id ) + loop + for cur_iata in ( select distinct exercise_stem_id, ori_iata_code, dst_iata_code, to_date('01/06/' || exercise_year, 'dd/mm/rrrr') onDate, org_airport_stem_id, dst_airport_stem_id + from ERIGHTS_MIGRATION_TABLE e where e.exercise_stem_id = cur_exercise.exercise_stem_id ) + loop + begin + -- try to find an inverse route in the same year + + select emt.full_price into v_inv_route_amt + from + ( select e.*, row_number() over ( partition by exercise_stem_id, ori_iata_code, dst_iata_code order by full_price desc ) rn + from ERIGHTS_MIGRATION_TABLE e + where e.ori_iata_code = cur_iata.dst_iata_code + and e.dst_iata_code = cur_iata.ori_iata_code + and e.exercise_stem_id = cur_iata.exercise_stem_id + ) emt + where emt.rn = 1 ; -- this may lead to errors as it just gets the highest full price + exception + when no_data_found then -- suppress, actually we will update with original fictional small price + v_inv_route_amt := 0.01; + end; + + update ERIGHTS_MIGRATION_TABLE e + set e.inverse_route_amount = v_inv_route_amt + where e.exercise_stem_id = cur_iata.exercise_stem_id + and e.ori_iata_code = cur_iata.ori_iata_code + and e.dst_iata_code = cur_iata.dst_iata_code; + + commit; + + end loop; --cur_iata + + end loop; -- cur_exercise +end; +/ + + +create table bkp$erights_migr_inverse_route_202302091300 as select * from erights_migr_inverse_route; +truncate table erights_migr_inverse_route; + +drop table erights_migr_inverse_route; + +alter table bkp$erights_migr_inverse_route_202302091300 rename to erights_migr_inverse_route; + +-- 2, for the ones that were not covered in step 1 , do the calculation of route amount. This is an extremely slow step so do not use it too often; the data is saved in a table which can be preserved as this data is non-volatile +declare + v_inv_route_amt number; + i integer; +begin + i:=0; + for cur_exercise in ( select distinct exercise_stem_id, exercise_year from ERIGHTS_MIGRATION_TABLE order by exercise_stem_id ) + loop + for cur_iata in ( select distinct e.exercise_stem_id, e.ori_iata_code, e.dst_iata_code, to_date('01/06/' || e.exercise_year, 'dd/mm/rrrr') onDate, e.org_airport_stem_id, e.dst_airport_stem_id + from ERIGHTS_MIGRATION_TABLE e + left join erights_migr_inverse_route i on e.exercise_stem_id = i.exercise_id + and e.org_airport_stem_id = i.dst_stem_id and e.dst_airport_stem_id = i.org_stem_id + where e.exercise_stem_id = cur_exercise.exercise_stem_id + and i.org_stem_id is null and i.dst_stem_id is null + and ( e.inverse_route_amount is null or e.inverse_route_amount =0.01) + ) + loop + begin + -- try to find an inverse route in the same year + + v_inv_route_amt := round ( pkg_route_calculation.F_FIND_IATA_FARE( P_ORG_AIRPORT_ID => cur_iata.dst_airport_stem_id, + P_DST_AIRPORT_ID => cur_iata.org_airport_stem_id , + P_DATE => cur_iata.ondate + ) , 2 ) ; + exception + when no_data_found then -- suppress, actually we will update with original fictional small price + v_inv_route_amt := 0.01; + end; + + i:=i+1; + + insert into erights_migr_inverse_route (org_stem_id , org_iata_code , dst_stem_id , dst_iata_Code , exercise_id , amount ) + select cur_iata.dst_airport_stem_id, cur_iata.dst_iata_code, cur_iata.org_airport_stem_id, cur_iata.ori_iata_code, cur_iata.exercise_stem_id, v_inv_route_amt from dual; + + + if i>= 100 then + commit; + i:= 0; + end if; + + end loop; --cur_iata + + end loop; -- cur_exercise +commit; -- for the last of the records +end; +/ + +--3. update the ERIGHTS_MIGRATION_TABLE table +update ERIGHTS_MIGRATION_TABLE e + set e.inverse_route_amount = nvl( ( select amount + from erights_migr_inverse_route i + where i.exercise_id = e.exercise_stem_id + and i.dst_stem_id = e.org_airport_stem_id + and i.org_stem_id = e.dst_airport_stem_id + and i.amount != 0.01 + ), 0.01 ) + where nvl(inverse_route_amount, 0.01) = 0.01; + commit; + diff --git a/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/4. Fix relationship.sql b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/4. Fix relationship.sql new file mode 100644 index 0000000..7d6c3ad --- /dev/null +++ b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/4. Fix relationship.sql @@ -0,0 +1,37 @@ + +--FIX relation type +declare + v_trp_cd integer; + v_trp_code varchar2(200); +begin + for cur in ( select person_stem_id, rel_person_stem_id, per_id, rel_per_id, relationship_type, trp_code, exercise_stem_id, exercise_year, created_on + from ERIGHTS_MIGRATION_TABLE e + where 1=1 + and trp_code like '%EASREFN.MV_PERSON_RELATIVES%' + --and per_id = 122115 + order by exercise_year, per_id, rel_per_id + ) + loop + begin + begin + select trp_cd, trp_code + into v_trp_cd, v_trp_code + from mv_person_relatives_hist@easrefn.cc.cec.eu.int m + where m.rel_per_id = cur.per_id and m.per_id = cur.rel_per_id and cur.created_on between m.start_date and m.end_date; + exception + when others then -- no_data_found only ? + goto nextCase; + end ; + + update ERIGHTS_MIGRATION_TABLE + set trp_code = v_trp_code, relationship_type = v_trp_cd + where person_stem_id = cur.person_stem_id and rel_person_stem_id = cur.rel_person_stem_id and exercise_stem_id = cur.exercise_stem_id; + + commit; + <> + v_trp_cd := null; + v_trp_code := null; + end; + end loop; +end; + diff --git a/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/5. Remove duplicates.sql b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/5. Remove duplicates.sql new file mode 100644 index 0000000..c9fe24f --- /dev/null +++ b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/5. Remove duplicates.sql @@ -0,0 +1,67 @@ +-- 1. REMOVE records created by 2 places of origin ( when one of them is in EU and the other is outside EU). In this case we remove the one that is outside EU + +-- SOS : Check the following : a) some countries are not included in MV_CAPITAL_OF_MS, b) some which are already included are part of France ( or Finland ) but are considered EU +-- select * from easref.V_EASREF_COUNTRIES@easref.CC.CEC.EU.INT where union_eur = 'O' + +-- main beneficiaries +declare + c integer; +begin + for cur in + ( with + multiple_main_beneficiaries as ( select per_id, exercise_stem_id, count(1) c from erights_migration_table where rel_per_id is null group by per_id, exercise_stem_id having count(1) > 1 ) + select emt.* -- ,mmb.* + from erights_migration_table emt + inner join multiple_main_beneficiaries mmb on emt.per_id = mmb.per_id and emt.exercise_stem_id = mmb.exercise_stem_id and emt.rel_per_id is null + --and emt.per_id = 61247 + order by emt.exercise_stem_id, emt.per_id + ) + loop + select count(1) into c from erights_migration_table e where e.exercise_stem_id = cur.exercise_stem_id and e.per_id = cur.per_id and e.is_member_state = 1 ; + if c > 0 and cur.is_member_state = 0 then + delete from erights_migration_table where erights_migration_table.record_id = cur.record_id; + end if; + end loop; + + commit; +end; +/ + +-- dependents +declare + c integer; +begin + for cur in + ( with + multiple_beneficiaries as ( select per_id, rel_per_id, exercise_stem_id, count(1) c from erights_migration_table where rel_per_id is not null group by per_id, rel_per_id, exercise_stem_id having count(1) > 1 ) + select emt.* -- ,mb.* + from erights_migration_table emt + inner join multiple_beneficiaries mb on emt.per_id = mb.per_id and emt.exercise_stem_id = mb.exercise_stem_id and emt.rel_per_id = mb.rel_per_id + -- and emt.per_id = 61247 + order by emt.exercise_stem_id, emt.per_id + ) + loop + select count(1) into c from erights_migration_table e where e.exercise_stem_id = cur.exercise_stem_id and e.per_id = cur.per_id and e.rel_per_id = cur.rel_per_id and e.is_member_state = 1 ; + if c > 0 and cur.is_member_state = 0 then + delete from erights_migration_table where erights_migration_table.record_id = cur.record_id; + end if; + end loop; + + commit; +end; +/ + + + + +--2. REMOVE DUPLICATES - NO (serious )CONDITION +DELETE + FROM erights_migration_table + WHERE + ROWID NOT IN + (SELECT first_value(ROWID)over(PARTITION BY per_id, rel_per_id, exercise_stem_id ORDER BY price_prorata desc, assignm_start_date desc, country_of_origin, birthdate ) + FROM erights_migration_table + ); + +commit; + diff --git a/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/99 Push migration data to erights test.sql b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/99 Push migration data to erights test.sql new file mode 100644 index 0000000..9688440 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/01 ETRAVEL/Scripts/99 Push migration data to erights test.sql @@ -0,0 +1,84 @@ + CREATE DATABASE LINK "ERIGHTS_TEST.CC.CEC.EU.INT" + CONNECT TO "ERIGHTS" IDENTIFIED BY ... + USING 'ERIGHTS_EEAS_01_T'; + +select * +from dual@ERIGHTS_ACC; + +delete from ETRAVEL_MIGRATION_TABLE@ERIGHTS_ACC; + +insert into ETRAVEL_MIGRATION_TABLE@ERIGHTS_ACC (PERSON_STEM_ID +,REL_PERSON_STEM_ID +,PER_ID +,REL_PER_ID +,FIRSTNAME +,LASTNAME +,BIRTHDATE +,RELATIONSHIP_TYPE +,TRP_CODE +,EXERCISE_STEM_ID +,EXERCISE_YEAR +,CREATED_BY +,CREATED_ON +,TOTAL_AMOUNT +,PRICE_PRORATA +,FULL_PRICE +,PERCENTAGE +,PRORATA +,ORIGIN_YEAR +,ORIGIN_MONTH +,PAYMENT_YEAR +,PAYMENT_MONTH +,ORI_IATA_CODE +,ORI_AIRPORT_NAME +,ORI_CITY_NAME +,ORI_COUNTRY_ID +,DST_IATA_CODE +,DST_AIRPORT_NAME +,DST_CITY_NAME +,DST_COUNTRY_ID +,COUNTRY_OF_ORIGIN +,ASSIGNM_SOJ_ID +,ASSIGNM_START_DATE +,ASSIGNM_END_DATE +,ASSIGNM_COUNTRY_ID +,ASSIGNM_CITY_ID +,INVERSE_ROUTE_AMOUNT) +select PERSON_STEM_ID +,REL_PERSON_STEM_ID +,PER_ID +,REL_PER_ID +,FIRSTNAME +,LASTNAME +,BIRTHDATE +,RELATIONSHIP_TYPE +,TRP_CODE +,EXERCISE_STEM_ID +,EXERCISE_YEAR +,CREATED_BY +,CREATED_ON +,TOTAL_AMOUNT +,PRICE_PRORATA +,FULL_PRICE +,PERCENTAGE +,PRORATA +,ORIGIN_YEAR +,ORIGIN_MONTH +,PAYMENT_YEAR +,PAYMENT_MONTH +,ORI_IATA_CODE +,ORI_AIRPORT_NAME +,ORI_CITY_NAME +,ORI_COUNTRY_ID +,DST_IATA_CODE +,DST_AIRPORT_NAME +,DST_CITY_NAME +,DST_COUNTRY_ID +,COUNTRY_OF_ORIGIN +,ASSIGNM_SOJ_ID +,ASSIGNM_START_DATE +,ASSIGNM_END_DATE +,ASSIGNM_COUNTRY_ID +,ASSIGNM_CITY_ID +,INVERSE_ROUTE_AMOUNT +from erights_migration_table; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/02 ERIGHTS/Scripts/01 Create table etravel_migration_table.sql b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/02 ERIGHTS/Scripts/01 Create table etravel_migration_table.sql new file mode 100644 index 0000000..0e955fa --- /dev/null +++ b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/02 ERIGHTS/Scripts/01 Create table etravel_migration_table.sql @@ -0,0 +1,44 @@ +drop TABLE "ETRAVEL_MIGRATION_TABLE"; + + CREATE TABLE "ETRAVEL_MIGRATION_TABLE" + ( "PERSON_STEM_ID" NUMBER NOT NULL ENABLE, + "REL_PERSON_STEM_ID" NUMBER, + "PER_ID" NUMBER NOT NULL ENABLE, + "REL_PER_ID" NUMBER, + "FIRSTNAME" VARCHAR2(255 BYTE), + "LASTNAME" VARCHAR2(255 BYTE), + "BIRTHDATE" DATE, + "RELATIONSHIP_TYPE" NUMBER, + "TRP_CODE" VARCHAR2(56 BYTE), + "EXERCISE_STEM_ID" NUMBER NOT NULL ENABLE, + "EXERCISE_YEAR" NUMBER, + "CREATED_BY" NUMBER, + "CREATED_ON" TIMESTAMP (6), + "TOTAL_AMOUNT" NUMBER, + "PRICE_PRORATA" NUMBER(38,2), + "FULL_PRICE" NUMBER, + "PERCENTAGE" NUMBER, + "PRORATA" NUMBER, + "ORIGIN_YEAR" NUMBER, + "ORIGIN_MONTH" NUMBER, + "PAYMENT_YEAR" NUMBER, + "PAYMENT_MONTH" NUMBER, + "ORI_IATA_CODE" VARCHAR2(3 BYTE), + "ORI_AIRPORT_NAME" VARCHAR2(256 BYTE), + "ORI_CITY_NAME" VARCHAR2(256 BYTE), + "ORI_COUNTRY_ID" VARCHAR2(256 BYTE), + "DST_IATA_CODE" VARCHAR2(3 BYTE), + "DST_AIRPORT_NAME" VARCHAR2(256 BYTE), + "DST_CITY_NAME" VARCHAR2(256 BYTE), + "DST_COUNTRY_ID" VARCHAR2(256 BYTE), + "COUNTRY_OF_ORIGIN" VARCHAR2(3 BYTE), + "ASSIGNM_SOJ_ID" NUMBER(10,0), + "ASSIGNM_START_DATE" DATE, + "ASSIGNM_END_DATE" DATE, + "ASSIGNM_COUNTRY_ID" VARCHAR2(3 CHAR), + "ASSIGNM_CITY_ID" VARCHAR2(3 CHAR), + "INVERSE_ROUTE_AMOUNT" NUMBER + ); + +create index ix_ETRAVEL_MIGRATION_TABLE_1 on ETRAVEL_MIGRATION_TABLE (per_id, exercise_stem_id) compute statistics; +create index ix_ETRAVEL_MIGRATION_TABLE_2 on ETRAVEL_MIGRATION_TABLE (per_id, exercise_stem_id, rel_per_id) compute statistics; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/02 ERIGHTS/Scripts/02 Create temporary objects.sql b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/02 ERIGHTS/Scripts/02 Create temporary objects.sql new file mode 100644 index 0000000..b25eacc --- /dev/null +++ b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/02 ERIGHTS/Scripts/02 Create temporary objects.sql @@ -0,0 +1,65 @@ +DROP TABLE tmp$mv_rights; + +CREATE TABLE tmp$mv_rights + AS + SELECT + r.per_id_benef, + r.origin_period, + r.payment_period, + r.rig_id, + vr.pet_seq_nbr_from + FROM + mv_person_relatives_rights@easrefn r + INNER JOIN mv_person_relatives_val_rights@easrefn.cc.cec.eu.int vr ON r.rig_id = vr.rig_id + WHERE + r.rtt_type_eng LIKE '[RF=FVO]%' + AND r.rgt_id = 3007; --there can be duplicates with RGT_ID=99 + +CREATE INDEX tmp$ix_mv_rights ON + tmp$mv_rights ( + per_id_benef, + origin_period, + payment_period + ) + COMPUTE STATISTICS; + +DROP TABLE tmp$mv_person_relatives_hist; + +CREATE TABLE tmp$mv_person_relatives_hist + AS + SELECT + * + FROM + mv_person_relatives_hist@easrefn mpr + WHERE + mpr.end_date = ( + SELECT + MAX(mpr2.end_date) + FROM + mv_person_relatives_hist@easrefn mpr2 + WHERE + mpr.per_id = mpr2.per_id + AND mpr.rel_per_id = mpr2.rel_per_id + ); + +CREATE INDEX tmp$ix_mv_person_relatives_hist ON + tmp$mv_person_relatives_hist ( + per_id, + trp_cd + ); + +DROP TABLE tmp$recruitment_places; + +CREATE TABLE tmp$recruitment_places + AS + SELECT + * + FROM + mv_person_address_hist@easrefn + WHERE + tadr_cd = 21; + +CREATE INDEX tmp$ix_recruitment_places ON + tmp$recruitment_places ( + per_id + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/02 ERIGHTS/Scripts/03 Migrate data.sql b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/02 ERIGHTS/Scripts/03 Migrate data.sql new file mode 100644 index 0000000..668a4d4 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/02 ERIGHTS/Scripts/03 Migrate data.sql @@ -0,0 +1,775 @@ +CREATE TABLE bkp$posting_allowance_persons_202307061537 as select * from posting_allowance_persons; +CREATE TABLE bkp$posting_allowances_202307061537 as select * from posting_allowances; + +DECLARE + lr_expat_record etravel_migration_table%rowtype; + ln_payment_id posting_allowances.payment_id%TYPE; + ln_payment_event_id posting_allowances.payment_event_id%TYPE; + ln_delegation_org_id posting_allowances.delegation_org_id%TYPE; + ld_assignment_start_date DATE; + ls_trp_cd posting_allowance_persons.trp_cd%TYPE; + ls_trp_code posting_allowance_persons.trp_code%TYPE; + ls_recuitment_city_code posting_allowances.recruitment_city_code%TYPE; + ls_recuitment_city_name posting_allowances.recruitment_city_name%TYPE; + ls_recruitment_country_code posting_allowances.recruitment_country_code%TYPE; + ln_posting_allowance_id posting_allowances.posting_allowance_id%TYPE; + ln_posting_allowance_number posting_allowances.posting_allowance_number%TYPE; + ls_route posting_allowance_persons.route%TYPE; +BEGIN + DELETE FROM posting_allowance_persons + WHERE + posting_allowance_id IN ( + SELECT + posting_allowance_id + FROM + posting_allowances + WHERE + comments = 'Imported from eTravel' + --OR exercise_year = 2022 + ); + + DELETE FROM posting_allowances + WHERE + comments = 'Imported from eTravel' + --OR exercise_year = 2022 + ; + + FOR lr_per_exe IN ( + SELECT DISTINCT + per_id, + exercise_stem_id + FROM + etravel_migration_table + ORDER BY + 2, + 1 + ) LOOP + dbms_output.put_line('PER_ID=' + || lr_per_exe.per_id + || ', EXERCISE_STEM_ID=' + || lr_per_exe.exercise_stem_id); + + BEGIN + SELECT + * + INTO lr_expat_record + FROM + etravel_migration_table + WHERE + per_id = lr_per_exe.per_id + AND exercise_stem_id = lr_per_exe.exercise_stem_id + AND rel_per_id IS NULL; + + EXCEPTION + WHEN too_many_rows THEN + dbms_output.put_line('... Duplicate found. Skipping.'); + GOTO end_of_loop; + WHEN no_data_found THEN + dbms_output.put_line('... Official NOT FOUND! Skipping.'); + GOTO end_of_loop; + END; + + BEGIN + SELECT + rig_id, + pet_seq_nbr_from + INTO + ln_payment_id, + ln_payment_event_id + FROM + tmp$mv_rights r + WHERE + per_id_benef = lr_expat_record.per_id + AND origin_period = TRIM(to_char(lr_expat_record.origin_year, '00')) + || TRIM(to_char(lr_expat_record.origin_month, '00')) + AND payment_period = TRIM(to_char(lr_expat_record.payment_year, '00')) + || TRIM(to_char(lr_expat_record.payment_month, '00')) + AND rig_id = ( + SELECT + MAX(r2.rig_id) + FROM + tmp$mv_rights r2 + WHERE + r2.per_id_benef = lr_expat_record.per_id + AND r2.origin_period = TRIM(to_char(lr_expat_record.origin_year, '00')) + || TRIM(to_char(lr_expat_record.origin_month, '00')) + AND r2.payment_period = TRIM(to_char(lr_expat_record.payment_year, '00')) + || TRIM(to_char(lr_expat_record.payment_month, '00')) + ); + +-- SELECT +-- r.rig_id, +-- vr.pet_seq_nbr_from +-- INTO +-- ln_payment_id, +-- ln_payment_event_id +-- FROM +-- mv_person_relatives_rights@easrefn r +-- INNER JOIN mv_person_relatives_val_rights@easrefn.cc.cec.eu.int vr ON r.rig_id = vr.rig_id +-- WHERE +-- r.rtt_type_eng LIKE '[RF=FVO]%' +-- AND r.per_id_benef = lr_expat_record.per_id +-- AND r.origin_period = to_char(lr_expat_record.origin_year, '00') +-- || to_char(lr_expat_record.origin_month, '00') +-- AND r.payment_period = to_char(lr_expat_record.payment_year, '00') +-- || to_char(lr_expat_record.payment_month, '00'); + + EXCEPTION + WHEN no_data_found THEN + ln_payment_id := NULL; + ln_payment_event_id := NULL; + dbms_output.put_line('... Could not find SYSPER payment information'); + END; + + IF lr_expat_record.assignm_soj_id IS NULL THEN + dbms_output.put_line('... Assignment ID is missing'); + ln_delegation_org_id := NULL; + ld_assignment_start_date := NULL; + ELSE + BEGIN + SELECT + enth.main_org_id, + asgh.start_date + INTO + ln_delegation_org_id, + ld_assignment_start_date + FROM + mv_assignments_hist_eeas asgh + INNER JOIN mv_jobs_hist_eeas jobh ON ( asgh.job_id = jobh.job_id + AND asgh.jcx_id = jobh.jcx_id ) + INNER JOIN mv_entities_hist enth ON ( jobh.org_id = enth.org_id + AND asgh.start_date BETWEEN enth.start_date AND enth.end_date ) + WHERE + asgh.soj_id = lr_expat_record.assignm_soj_id; + + EXCEPTION + WHEN no_data_found THEN + BEGIN + SELECT + enth.main_org_id, + asgh.start_date + INTO + ln_delegation_org_id, + ld_assignment_start_date + FROM + mv_assignments_hist_com asgh + INNER JOIN mv_jobs_hist_com jobh ON ( asgh.job_id = jobh.job_id + /*AND asgh.jcx_id = jobh.jcx_id*/ ) + INNER JOIN mv_entities_hist_com enth ON ( jobh.org_id = enth.org_id + AND asgh.start_date BETWEEN enth.start_date AND enth.end_date ) + WHERE + asgh.soj_id = lr_expat_record.assignm_soj_id; + + EXCEPTION + WHEN no_data_found THEN + BEGIN + SELECT + enth.main_org_id, + asgh.start_date + INTO + ln_delegation_org_id, + ld_assignment_start_date + FROM + mv_assignments_hist_com asgh + INNER JOIN mv_jobs_hist_eeas jobh ON ( asgh.job_id = jobh.job_id + /*AND asgh.jcx_id = jobh.jcx_id*/ ) + INNER JOIN mv_entities_hist enth ON ( jobh.org_id = enth.org_id + AND asgh.start_date BETWEEN enth.start_date AND enth.end_date + ) + WHERE + asgh.soj_id = lr_expat_record.assignm_soj_id; + + EXCEPTION + WHEN no_data_found THEN + BEGIN + SELECT + enth.main_org_id, + asgh.start_date + INTO + ln_delegation_org_id, + ld_assignment_start_date + FROM + mv_assignments_hist_com asgh + INNER JOIN mv_jobs_hist_com jobh ON ( asgh.job_id = jobh.job_id + /*AND asgh.jcx_id = jobh.jcx_id*/ ) + INNER JOIN mv_entities_hist_com enth ON ( jobh.org_id = enth.org_id ) + WHERE + asgh.soj_id = lr_expat_record.assignm_soj_id + AND enth.start_date = ( + SELECT + MAX(enth2.start_date) + FROM + mv_entities_hist_com enth2 + WHERE + enth2.org_id = enth.org_id + ); + + EXCEPTION + WHEN no_data_found THEN + dbms_output.put_line('... Assignment ID cannot be found!'); + ln_delegation_org_id := NULL; + ld_assignment_start_date := NULL; + END; + END; + END; + END; + END IF; + + SELECT + nvl(MAX(posting_allowance_number), + 0) + 1 + INTO ln_posting_allowance_number + FROM + posting_allowances --!!!tmp$posting_allowances + WHERE + exercise_year = lr_expat_record.exercise_year; + + BEGIN + ls_recruitment_country_code := NULL; + ls_recuitment_city_name := NULL; + ls_recuitment_city_code := NULL; + SELECT + r.country_code, + r.city_name + INTO + ls_recruitment_country_code, + ls_recuitment_city_name + FROM + tmp$recruitment_places r + WHERE + r.per_id = lr_expat_record.per_id + AND ld_assignment_start_date BETWEEN r.start_date AND r.end_date; + + SELECT + MAX(city_code) + INTO ls_recuitment_city_code + FROM + mv_cities + WHERE + ( description_en = upper(ls_recuitment_city_name) + OR description_fr = upper(ls_recuitment_city_name) ) + AND country_code = ls_recruitment_country_code; + + EXCEPTION + WHEN no_data_found THEN + NULL; -- Best effort, we ignore cases where there is no data available + END; + + BEGIN + INSERT INTO posting_allowances (--!!!tmp$posting_allowances ( + posting_allowance_id, + per_id, + exercise_year, + posting_allowance_number, + posting_allowance_string_id, + posting_allowance_type, + posting_allowance_req_type, + parent_posting_allowance_id, + comments, + outgoing_trip_amount, + outgoing_trip_amount_currency, + return_trip_amount, + return_trip_amount_currency, + calc_total_amount, + calc_total_amount_currency, + total_amount, + total_amount_currency, + payment_period_year, + payment_period_month, + payment_reference, + payment_state, + assignment_city_code, + assignment_country_code, + assignment_city_name, + assignment_iata_code, + origin_city_code, + origin_country_code, + origin_city_name, + origin_iata_code, + recruitment_city_code, + recruitment_country_code, + recruitment_city_name, + recruitment_iata_code, + sm_id, + state, + posting_allowance_discriminatory_type, + created_by, + created_at, + updated_by, + updated_at, + delegation_org_id, + origin_period_year, + origin_period_month, + origin_country_name, + assignment_country_name, + assignment_start_date, + soj_id, + spouse_per_id, + double_posting, + payment_id, + payment_event_id, + origin_place_search, + assignment_airport_name, + first_nationality_country + ) VALUES ( + seq_posting_allowances.NEXTVAL, --!!!tmp$seq_posting_allowances.NEXTVAL, --posting_allowance_id, + lr_expat_record.per_id, --per_id, + lr_expat_record.exercise_year, --exercise_year, + ln_posting_allowance_number, --posting_allowance_number, + lr_expat_record.exercise_year + || '-FVO-' + || TRIM(to_char(ln_posting_allowance_number, '0000')), --posting_allowance_string_id, + 'ANNUAL TRAVEL', --posting_allowance_type, + 'INITIAL', --posting_allowance_req_type, + NULL, --parent_posting_allowance_id, + 'Imported from eTravel', --comments, + coalesce(( + SELECT + MAX(full_price) + FROM + etravel_migration_table + WHERE + per_id = lr_expat_record.per_id + AND exercise_stem_id = lr_expat_record.exercise_stem_id + AND --dst_country_id = lr_expat_record.country_of_origin + (dst_country_id = lr_expat_record.country_of_origin + OR ori_country_id = lr_expat_record.assignm_country_id) + ), + lr_expat_record.full_price, + - 1), --outgoing_trip_amount, + --AND rel_per_id IS NOT NULL +-- CASE +-- WHEN lr_expat_record.dst_country_id = lr_expat_record.country_of_origin THEN +-- nvl(lr_expat_record.full_price, 0) --'OUTGOING' +-- ELSE +-- -1 --'RETURN' +-- END, --outgoing_trip_amount, + 'EUR', --outgoing_trip_amount_currency, + CASE + WHEN lr_expat_record.inverse_route_amount IS NULL THEN + - 1 + WHEN lr_expat_record.inverse_route_amount = 0.01 THEN + - 1 + ELSE + lr_expat_record.inverse_route_amount + END, --return_trip_amount, +-- coalesce(( +-- SELECT +-- MAX(full_price) +-- FROM +-- etravel_migration_table +-- WHERE +-- per_id = lr_expat_record.per_id +-- AND exercise_stem_id = lr_expat_record.exercise_stem_id +-- AND --dst_country_id <> country_of_origin +-- NOT(dst_country_id = lr_expat_record.country_of_origin +-- OR ori_country_id = lr_expat_record.assignm_country_id) +-- ),( +-- SELECT +-- MAX(full_price) +-- FROM +-- etravel_migration_table +-- WHERE +-- per_id = lr_expat_record.per_id +-- AND rel_per_id IS NOT NULL +-- AND exercise_stem_id = lr_expat_record.exercise_stem_id +-- AND ori_country_id = lr_expat_record.dst_country_id +-- AND dst_country_id = lr_expat_record.ori_country_id +-- ), - 1), --return_trip_amount, +-- CASE +-- WHEN lr_expat_record.dst_country_id = lr_expat_record.country_of_origin THEN +-- -1 --'OUTGOING' +-- ELSE +-- nvl(lr_expat_record.full_price, 0) --'RETURN' +-- END, --return_trip_amount, + 'EUR', --return_trip_amount_currency, + lr_expat_record.total_amount, --calc_total_amount, + 'EUR', --calc_total_amount_currency, + lr_expat_record.total_amount, --total_amount, + 'EUR', --total_amount_currency, + lr_expat_record.payment_year, --payment_period_year, + lr_expat_record.payment_month, --payment_period_month, + NULL, --payment_reference, + NULL, --payment_state, + ( + SELECT + MAX(city_code) + FROM + mv_cities + WHERE + description_en = lr_expat_record.ori_city_name + AND country_code = lr_expat_record.ori_country_id + ), --assignment_city_code, + lr_expat_record.ori_country_id, --assignment_country_code, + lr_expat_record.ori_city_name, --assignment_city_name, + lr_expat_record.ori_iata_code, --assignment_iata_code, + ( + SELECT + MAX(city_code) + FROM + mv_cities + WHERE + description_en = lr_expat_record.dst_city_name + AND country_code = lr_expat_record.dst_country_id + ), --origin_city_code, + lr_expat_record.dst_country_id, --origin_country_code, + lr_expat_record.dst_city_name, --origin_city_name, + lr_expat_record.dst_iata_code, --origin_iata_code, + ls_recuitment_city_code, --recruitment_city_code, + ls_recruitment_country_code, --recruitment_country_code, + ls_recuitment_city_name, --recruitment_city_name, + ( + SELECT + iata_code + FROM + airport_cities + WHERE + city_code = ls_recuitment_city_code + ), --recruitment_iata_code, + NULL, --sm_id, + 'PAID', --state, + 'Travel', --posting_allowance_discriminatory_type, + lr_expat_record.created_by, --created_by, + lr_expat_record.created_on, --created_at, + lr_expat_record.created_by, --updated_by, + lr_expat_record.created_on, --updated_at, + ln_delegation_org_id, --delegation_org_id, + lr_expat_record.origin_year, --origin_period_year, + lr_expat_record.origin_month, --origin_period_month, + ( + SELECT + name_en + FROM + mv_countries + WHERE + country_code = lr_expat_record.dst_country_id + ), --origin_country_name, + ( + SELECT + name_en + FROM + mv_countries + WHERE + country_code = lr_expat_record.ori_country_id + ), --assignment_country_name, + lr_expat_record.assignm_start_date, --assignment_start_date, + lr_expat_record.assignm_soj_id, --soj_id, + ( + SELECT + MAX(rel_per_id) + FROM + etravel_migration_table + WHERE + per_id = lr_per_exe.per_id + AND exercise_stem_id = lr_per_exe.exercise_stem_id + AND trp_code = 'Spouse' + ), --spouse_per_id, + 'N', --double_posting, + ln_payment_id, --payment_id, + ln_payment_event_id, --payment_event_id + ( + SELECT + name_en + FROM + mv_countries + WHERE + country_code = lr_expat_record.dst_country_id + ) + || ', ' + || lr_expat_record.dst_city_name, --origin_place_search + ( + SELECT + airport_name + FROM + airports + WHERE + iata_code = lr_expat_record.ori_iata_code + ), + --ASSIGNMENT_AIRPORT_NAME + ( + SELECT + nat_country_code + FROM + mv_person_nationalities + WHERE + per_id = lr_per_exe.per_id + ) + --FIRST_NATIONALITY_COUNTRY + ) RETURNING posting_allowance_id INTO ln_posting_allowance_id; + + EXCEPTION + WHEN OTHERS THEN + dbms_output.put_line('...Unable to insert into posting_allowances:' + || sqlcode + || '-' + || sqlerrm); + GOTO end_of_loop; + END; + + FOR lr_relative_record IN ( + SELECT + * + FROM + etravel_migration_table + WHERE + per_id = lr_per_exe.per_id + AND exercise_stem_id = lr_per_exe.exercise_stem_id + --AND rel_per_id IS NOT NULL + ORDER BY + rel_per_id NULLS FIRST + ) LOOP + IF lr_relative_record.full_price IS NULL THEN + dbms_output.put_line('... REL_PER_ID=' + || lr_relative_record.rel_per_id + || ' : Full price is null'); + END IF; + + IF lr_relative_record.relationship_type IS NULL THEN + IF lr_relative_record.trp_code = 'Staff Member' THEN + ls_trp_cd := -1; + ls_trp_code := 'Staff Member'; + ELSE + BEGIN + SELECT + trp_cd, + trp_code + INTO + ls_trp_cd, + ls_trp_code + FROM + tmp$mv_person_relatives_hist + WHERE + per_id = lr_relative_record.per_id + AND rel_per_id = lr_relative_record.rel_per_id; + + EXCEPTION + WHEN no_data_found THEN + dbms_output.put_line('... REL_PER_ID=' + || lr_relative_record.rel_per_id + || ' : Relationship not found'); + ls_trp_cd := NULL; + ls_trp_code := NULL; + END; + END IF; + + ELSE + ls_trp_cd := lr_relative_record.relationship_type; + ls_trp_code := lr_relative_record.trp_code; + END IF; + + /* CASE + WHEN --lr_relative_record.dst_country_id = lr_relative_record.country_of_origin + lr_relative_record.dst_country_id = lr_expat_record.country_of_origin + OR lr_relative_record.ori_country_id = lr_expat_record.assignm_country_id THEN + 'OUTGOING' + ELSE + 'RETURN' + END*/ + CASE + WHEN lr_relative_record.dst_country_id = lr_expat_record.country_of_origin OR lr_relative_record.ori_country_id = lr_expat_record.assignm_country_id + THEN + ls_route := 'OUTGOING'; + WHEN lr_relative_record.dst_country_id = lr_expat_record.assignm_country_id OR lr_relative_record.ori_country_id = lr_expat_record.country_of_origin + THEN + ls_route := 'RETURN'; + WHEN + lr_relative_record.dst_country_id <> lr_expat_record.country_of_origin + AND lr_relative_record.ori_country_id <> lr_expat_record.assignm_country_id + AND lr_relative_record.dst_country_id = lr_expat_record.dst_country_id + AND lr_relative_record.ori_country_id = lr_expat_record.ori_country_id + THEN + ls_route := 'OUTGOING'; + ELSE + ls_route := 'RETURN'; + END CASE; + + INSERT INTO posting_allowance_persons (--!!!tmp$posting_allowance_persons ( + posting_allowance_person_id, + posting_allowance_id, + date_of_birth, + route, + per_id, + rel_per_id, + trp_cd, + trp_code, + trip_amount, + trip_amount_currency, + entitled_months, + total_amount, + total_amount_currency, + city_from, + country_from, + iata_code_from, + city_to, + country_to, + iata_code_to, + remarks, + created_by, + created_at, + updated_by, + updated_at, + surname, + first_name, + work_in_delegation, + work_in_hq, + order_type_of_person + ) VALUES ( + seq_posting_allowance_persons.NEXTVAL, --!!!tmp$seq_posting_allowance_persons.NEXTVAL, --posting_allowance_person_id, + ln_posting_allowance_id, --posting_allowance_id, + lr_relative_record.birthdate, -- date_of_birth, + ls_route, --route, + lr_relative_record.per_id, + lr_relative_record.rel_per_id, + ls_trp_cd, --trp_cd, + ls_trp_code, --trp_code, + nvl(lr_relative_record.full_price, 0), --trip_amount, + 'EUR', --trip_amount_currency, + lr_relative_record.prorata, --entitled_months, + lr_relative_record.price_prorata, --total_amount, + 'EUR', --total_amount_currency, + ( + SELECT + MAX(city_code) + FROM + mv_cities + WHERE + description_en = lr_relative_record.ori_city_name + AND country_code = lr_relative_record.ori_country_id + ), --city_from, + lr_relative_record.ori_country_id, --country_from, + lr_relative_record.ori_iata_code, --iata_code_from, + ( + SELECT + MAX(city_code) + FROM + mv_cities + WHERE + description_en = lr_relative_record.dst_city_name + AND country_code = lr_relative_record.dst_country_id + ), --city_to, + lr_relative_record.dst_country_id, --country_to, + lr_relative_record.dst_iata_code, --iata_code_to, + NULL, --remarks, + lr_relative_record.created_by, --created_by, + lr_relative_record.created_on, --created_at, + lr_relative_record.created_by, --updated_by, + lr_relative_record.created_on, --updated_at, + lr_relative_record.lastname, --surname, + lr_relative_record.firstname, --first_name, + CASE + WHEN lr_relative_record.trp_code = 'Staff Member' THEN + 'Y' + ELSE + CASE + WHEN ( + SELECT + COUNT(*) + FROM + mv_assignments_hist_eeas asgh + INNER JOIN mv_jobs_hist_eeas jobh ON ( asgh.job_id = jobh.job_id + AND asgh.jcx_id = jobh.jcx_id ) + INNER JOIN mv_entities_hist enth ON ( jobh.org_id = enth.org_id + AND asgh.start_date BETWEEN enth.start_date AND enth.end_date + ) + WHERE + asgh.per_id = lr_relative_record.rel_per_id -- has the relative worked + AND ld_assignment_start_date BETWEEN asgh.start_date AND asgh.end_date -- when the expatriate started his/her assignment + AND EXISTS ( + SELECT + 1 + FROM + mv_entities_hist enth2 + WHERE + enth2.is_delegation = 'Y' + AND enth.main_org_id = enth2.org_id + ) -- and the relative worked in a delegation + ) > 0 THEN + 'Y' + ELSE + 'N' + END + END, + --work_in_delegation, + CASE + WHEN lr_relative_record.trp_code = 'Staff Member' THEN + 'N' + ELSE + CASE + WHEN ( + SELECT + COUNT(*) + FROM + mv_assignments_hist_eeas asgh + INNER JOIN mv_jobs_hist_eeas jobh ON ( asgh.job_id = jobh.job_id + AND asgh.jcx_id = jobh.jcx_id ) + INNER JOIN mv_entities_hist enth ON ( jobh.org_id = enth.org_id + AND asgh.start_date BETWEEN enth.start_date AND enth.end_date + ) + WHERE + asgh.per_id = lr_relative_record.rel_per_id -- has the relative worked + AND ld_assignment_start_date BETWEEN asgh.start_date AND asgh.end_date -- when the expatriate started his/her assignment + AND EXISTS ( + SELECT + 1 + FROM + mv_entities_hist enth2 + WHERE + enth2.is_delegation = 'N' + AND enth.main_org_id = enth2.org_id + ) -- and the relative worked in another place than a delegation + ) > 0 THEN + 'Y' + ELSE + 'N' + END + END, + --work_in_hq, + 0 --order_type_of_person + ); + + END LOOP; + + << end_of_loop >> NULL; + END LOOP; + + COMMIT; +END; +/ + +/* +SELECT DISTINCT + per_id, + exercise_stem_id +FROM + etravel_migration_table +ORDER BY + 2, + 1; + +SELECT + * +FROM + etravel_migration_table +WHERE + ( per_id, exercise_stem_id ) IN ( ( 45126, 7 ) ); + +create table bkp$posting_allowance_persons_import_conflicts +as select * from posting_allowance_persons +where POSTING_ALLOWANCE_ID in (select POSTING_ALLOWANCE_ID +from posting_allowances +where (per_id, soj_id, exercise_year) in (select per_id, ASSIGNM_SOJ_ID, EXERCISE_YEAR from etravel_migration_table)); + +delete from posting_allowance_persons +where POSTING_ALLOWANCE_ID in (select POSTING_ALLOWANCE_ID +from posting_allowances +where (per_id, soj_id, exercise_year) in (select per_id, ASSIGNM_SOJ_ID, EXERCISE_YEAR from etravel_migration_table)); + +create table bkp$posting_allowances_import_conflicts +as select * from posting_allowances +where (per_id, soj_id, exercise_year) in (select per_id, ASSIGNM_SOJ_ID, EXERCISE_YEAR from etravel_migration_table); + +delete from posting_allowances +where (per_id, soj_id, exercise_year) in (select per_id, ASSIGNM_SOJ_ID, EXERCISE_YEAR from etravel_migration_table); + + +*/ \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/02 ERIGHTS/Scripts/04 Fix data post-import.sql b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/02 ERIGHTS/Scripts/04 Fix data post-import.sql new file mode 100644 index 0000000..a2fcfea --- /dev/null +++ b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/02 ERIGHTS/Scripts/04 Fix data post-import.sql @@ -0,0 +1,99 @@ +-- Fix missing assignment_city_code +update posting_allowances set assignment_city_code = 'TSE' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'KAZ' and ASSIGNMENT_CITY_NAME = 'ASTANA' and ASSIGNMENT_IATA_CODE = 'TSE' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'POS' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'TTO' and ASSIGNMENT_CITY_NAME = 'PORT OF SPAIN' and ASSIGNMENT_IATA_CODE = 'POS' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'YUL' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'CAN' and ASSIGNMENT_CITY_NAME = 'MONTREAL QC' and ASSIGNMENT_IATA_CODE = 'YMQ' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'NYC' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'USA' and ASSIGNMENT_CITY_NAME = 'NEW YORK NY' and ASSIGNMENT_IATA_CODE = 'NYC' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'GUA' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'GTM' and ASSIGNMENT_CITY_NAME = 'GUATEMALA CTY' and ASSIGNMENT_IATA_CODE = 'GUA' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'SAH' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'YEM' and ASSIGNMENT_CITY_NAME = 'SANAA' and ASSIGNMENT_IATA_CODE = 'SAH' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'BSB' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'BRA' and ASSIGNMENT_CITY_NAME = 'BRASILIA DF' and ASSIGNMENT_IATA_CODE = 'BSB' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'PAP' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'HTI' and ASSIGNMENT_CITY_NAME = 'PORT AU PRINC' and ASSIGNMENT_IATA_CODE = 'PAP' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'IEV' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'UKR' and ASSIGNMENT_CITY_NAME = 'KIEV' and ASSIGNMENT_IATA_CODE = 'IEV' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'WAS' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'USA' and ASSIGNMENT_CITY_NAME = 'WASHINGTON DC' and ASSIGNMENT_IATA_CODE = 'WAS' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'DEL' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'IND' and ASSIGNMENT_CITY_NAME = 'DELHI' and ASSIGNMENT_IATA_CODE = 'DEL' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'BRN' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'CHE' and ASSIGNMENT_CITY_NAME = 'BERNE' and ASSIGNMENT_IATA_CODE = 'BRN' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'ASB' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'TKM' and ASSIGNMENT_CITY_NAME = 'ASHGABAD' and ASSIGNMENT_IATA_CODE = 'ASB' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'TLV' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'ISR' and ASSIGNMENT_CITY_NAME = 'TEL AVIV YAFO' and ASSIGNMENT_IATA_CODE = 'TLV' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'BUE' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'ARG' and ASSIGNMENT_CITY_NAME = 'BUEN AIRES BA' and ASSIGNMENT_IATA_CODE = 'BUE' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'TMS' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'STP' and ASSIGNMENT_CITY_NAME = 'SAO TOME IS' and ASSIGNMENT_IATA_CODE = 'TMS' and assignment_city_code is null; +-- from Dominique +update posting_allowances set assignment_city_code = 'BCV' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'BLZ' and ASSIGNMENT_CITY_NAME = 'BELIZE' and ASSIGNMENT_IATA_CODE = 'BZE' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'MRU' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'MUS' and ASSIGNMENT_CITY_NAME = 'MAURITIUS' and ASSIGNMENT_IATA_CODE = 'MRU' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'BGI' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'BRB' and ASSIGNMENT_CITY_NAME = 'BARBADOS' and ASSIGNMENT_IATA_CODE = 'BGI' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'JUB' where exercise_year <= 2022 AND ASSIGNMENT_COUNTRY_CODE = 'SDN' and ASSIGNMENT_CITY_NAME = 'JUBA' and ASSIGNMENT_IATA_CODE = 'JUB' and assignment_city_code is null; + + +-- Fix missing origin city code +update posting_allowances set origin_city_code = 'DUS' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'DEU' and origin_CITY_NAME = 'DUSSELDORF' and origin_IATA_CODE = 'DUS' and origin_city_code is null; +update posting_allowances set origin_city_code = 'BSL' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'CHE' and origin_CITY_NAME = 'BALE' and origin_IATA_CODE = 'BSL' and origin_city_code is null; +update posting_allowances set origin_city_code = 'PNA' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'ESP' and origin_CITY_NAME = 'PAMPLONE' and origin_IATA_CODE = 'PNA' and origin_city_code is null; +update posting_allowances set origin_city_code = 'CFE' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'FRA' and origin_CITY_NAME = 'CLERMONT FERR' and origin_IATA_CODE = 'CFE' and origin_city_code is null; +update posting_allowances set origin_city_code = 'SCN' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'DEU' and origin_CITY_NAME = 'SAARBRUCKEN' and origin_IATA_CODE = 'SCN' and origin_city_code is null; +update posting_allowances set origin_city_code = 'FDF' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'MTQ' and origin_CITY_NAME = 'FT DE FRANCE' and origin_IATA_CODE = 'FDF' and origin_city_code is null; +update posting_allowances set origin_city_code = 'TRS' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'ITA' and origin_CITY_NAME = 'TRIESTE' and origin_IATA_CODE = 'TRS' and origin_city_code is null; +update posting_allowances set origin_city_code = 'ZAZ' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'ESP' and origin_CITY_NAME = 'SARAGOSSE' and origin_IATA_CODE = 'ZAZ' and origin_city_code is null; +update posting_allowances set origin_city_code = 'LEJ' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'DEU' and origin_CITY_NAME = 'LEIPZIG/HALLE' and origin_IATA_CODE = 'LEJ' and origin_city_code is null; +update posting_allowances set origin_city_code = 'TRN' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'ITA' and origin_CITY_NAME = 'TURIN' and origin_IATA_CODE = 'TRN' and origin_city_code is null; +update posting_allowances set origin_city_code = 'SUF' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'ITA' and origin_CITY_NAME = 'LAMEZIA TERME' and origin_IATA_CODE = 'SUF' and origin_city_code is null; +update posting_allowances set origin_city_code = 'ETZ' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'FRA' and origin_CITY_NAME = 'METZ/NANCY' and origin_IATA_CODE = 'ETZ' and origin_city_code is null; +update posting_allowances set origin_city_code = 'MMA' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'SWE' and origin_CITY_NAME = 'MALMO' and origin_IATA_CODE = 'MMA' and origin_city_code is null; +update posting_allowances set origin_city_code = 'RHO' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'GRC' and origin_CITY_NAME = 'RHODES' and origin_IATA_CODE = 'RHO' and origin_city_code is null; +update posting_allowances set origin_city_code = 'EBU' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'FRA' and origin_CITY_NAME = 'SAINT ETIENNE' and origin_IATA_CODE = 'EBU' and origin_city_code is null; +update posting_allowances set origin_city_code = 'RUN' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'REU' and origin_CITY_NAME = 'ST DENIS' and origin_IATA_CODE = 'RUN' and origin_city_code is null; +update posting_allowances set origin_city_code = 'REG' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'ITA' and origin_CITY_NAME = 'REGGIO CALAB' and origin_IATA_CODE = 'REG' and origin_city_code is null; +update posting_allowances set origin_city_code = 'NRK' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'SWE' and origin_CITY_NAME = 'NORRKOPING' and origin_IATA_CODE = 'NRK' and origin_city_code is null; +update posting_allowances set origin_city_code = 'PMI' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'ESP' and origin_CITY_NAME = 'PALMA MALLORC' and origin_IATA_CODE = 'PMI' and origin_city_code is null; +update posting_allowances set origin_city_code = 'SBK' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'FRA' and origin_CITY_NAME = 'SAINT BRIEUC' and origin_IATA_CODE = 'SBK' and origin_city_code is null; +update posting_allowances set origin_city_code = 'HAJ' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'DEU' and origin_CITY_NAME = 'HANOVER' and origin_IATA_CODE = 'HAJ' and origin_city_code is null; +update posting_allowances set origin_city_code = 'LBA' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'GBR' and origin_CITY_NAME = 'LEEDS/BRADFOR' and origin_IATA_CODE = 'LBA' and origin_city_code is null; +update posting_allowances set origin_city_code = 'FDH' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'DEU' and origin_CITY_NAME = 'FRIEDRICHSHAF' and origin_IATA_CODE = 'FDH' and origin_city_code is null; +update posting_allowances set origin_city_code = 'SGD' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'DNK' and origin_CITY_NAME = 'SONDERBORG' and origin_IATA_CODE = 'SGD' and origin_city_code is null; +update posting_allowances set origin_city_code = 'SCQ' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'ESP' and origin_CITY_NAME = 'SANTIAGO COMP' and origin_IATA_CODE = 'SCQ' and origin_city_code is null; +update posting_allowances set origin_city_code = 'NUE' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'DEU' and origin_CITY_NAME = 'NUREMBERG' and origin_IATA_CODE = 'NUE' and origin_city_code is null; +update posting_allowances set origin_city_code = 'GOT' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'SWE' and origin_CITY_NAME = 'GOTHENBURG' and origin_IATA_CODE = 'GOT' and origin_city_code is null; +update posting_allowances set origin_city_code = 'BJZ' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'ESP' and origin_CITY_NAME = 'BACLAJOZ' and origin_IATA_CODE = 'BJZ' and origin_city_code is null; +update posting_allowances set origin_city_code = 'ZTH' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'GRC' and origin_CITY_NAME = 'ZAKINTHOS (ILE)' and origin_IATA_CODE = 'ZTH' and origin_city_code is null; +update posting_allowances set origin_city_code = 'PDL' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'PRT' and origin_CITY_NAME = 'PONTA DELGADA (ILE SAN MIGUEL)' and origin_IATA_CODE = 'PDL' and origin_city_code is null; +update posting_allowances set origin_city_code = 'MJT' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'GRC' and origin_CITY_NAME = 'MYTILENE' and origin_IATA_CODE = 'MJT' and origin_city_code is null; +update posting_allowances set origin_city_code = 'GRX' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'ESP' and origin_CITY_NAME = 'GRANADE' and origin_IATA_CODE = 'GRX' and origin_city_code is null; +update posting_allowances set origin_city_code = 'LCA' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'CYP' and origin_CITY_NAME = 'LANARCA' and origin_IATA_CODE = 'LCA' and origin_city_code is null; +update posting_allowances set origin_city_code = 'LPA' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'ESP' and origin_CITY_NAME = 'LAS PALMAS' and origin_IATA_CODE = 'LPA' and origin_city_code is null; +--from Dominique +update posting_allowances set origin_city_code = 'MLA' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'MLT' and origin_CITY_NAME = 'MALTA' and origin_IATA_CODE = 'MLA' and origin_city_code is null; +update posting_allowances set origin_city_code = 'CAY' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'GUF' and origin_CITY_NAME = 'CAYENNE' and origin_IATA_CODE = 'CAY' and origin_city_code is null; +update posting_allowances set origin_city_code = 'PTP' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'GLP' and origin_CITY_NAME = 'POINTE A PITR' and origin_IATA_CODE = 'PTP' and origin_city_code is null; +update posting_allowances set origin_city_code = 'PPT' where exercise_year <= 2022 AND origin_COUNTRY_CODE = 'PYF' and origin_CITY_NAME = 'PAPEETE' and origin_IATA_CODE = 'PPT' and origin_city_code is null; + + +-- Fix return trip amount (best effort) +UPDATE posting_allowances pa1 +SET + return_trip_amount = nvl(( + SELECT + MAX(return_trip_amount) + FROM + posting_allowances pa2 + WHERE + comments = 'Imported from eTravel' + AND pa1.exercise_year = pa2.exercise_year + AND pa1.origin_iata_code = pa2.origin_iata_code + AND pa1.assignment_iata_code = pa2.assignment_iata_code + AND return_trip_amount <> - 1 + ), - 1) +WHERE + comments = 'Imported from eTravel' + AND return_trip_amount = - 1; + +-- Correct relationships +update posting_allowance_persons set trp_cd = 7, trp_code = 'Biological child' where per_id = 10051605 and rel_per_id = 90314498 and trp_cd is null; +update posting_allowance_persons set trp_cd = 9, trp_code = 'Spouse''s child' where per_id = 10053840 and rel_per_id in (90315208,90315209) and trp_cd is null; + +update posting_allowance_persons set trp_cd = 41, trp_code = 'Spouse', rel_per_id = 42157 where per_id = 153140 and rel_per_id = 80355114 and trp_cd is null and extract(year from created_at) = 2018; +update posting_allowances set spouse_per_id = 42157 where per_id = 153140 and exercise_year = 2018 and nvl(spouse_per_id, 0) <> 42157; + +delete from posting_allowance_persons where per_id = 153140 and rel_per_id = 42157 and trp_cd = 41 and extract(year from created_at) = 2019; +update posting_allowance_persons set trp_cd = 41, trp_code = 'Spouse', rel_per_id = 42157 where per_id = 153140 and rel_per_id = 80355114 and trp_cd is null and extract(year from created_at) = 2019; +update posting_allowances set spouse_per_id = 42157 where per_id = 153140 and exercise_year = 2019 and nvl(spouse_per_id, 0) <> 42157; + +delete from posting_allowance_persons where per_id = 153140 and rel_per_id = 42157 and trp_cd = 41 and extract(year from created_at) = 2020; +update posting_allowance_persons set trp_cd = 41, trp_code = 'Spouse', rel_per_id = 42157 where per_id = 153140 and rel_per_id = 80355114 and trp_cd is null and extract(year from created_at) = 2020; +update posting_allowances set spouse_per_id = 42157 where per_id = 153140 and exercise_year = 2020 and nvl(spouse_per_id, 0) <> 42157; diff --git a/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/02 ERIGHTS/Scripts/05 Checks.sql b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/02 ERIGHTS/Scripts/05 Checks.sql new file mode 100644 index 0000000..411b724 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.1.2/01 Migration allowances from eTravel/02 ERIGHTS/Scripts/05 Checks.sql @@ -0,0 +1,51 @@ +select distinct ASSIGNMENT_COUNTRY_CODE, ASSIGNMENT_CITY_NAME, ASSIGNMENT_IATA_CODE +from posting_allowances +where comments = 'Imported from eTravel' +and assignment_city_code is null; + +select distinct ORIGIN_COUNTRY_CODE, ORIGIN_CITY_NAME, ORIGIN_IATA_CODE +from posting_allowances +where comments = 'Imported from eTravel' +and ORIGIN_CITY_CODE is null; + +select distinct recruitment_COUNTRY_CODE, recruitment_CITY_NAME, recruitment_IATA_CODE +from posting_allowances +where comments = 'Imported from eTravel' +and recruitment_CITY_CODE is null; + +select * +from etravel_migration_table +where assignm_country_id <> ori_country_id +and country_of_origin <> dst_country_id; + +select distinct pa2.exercise_year, pa2.origin_iata_code, pa2.assignment_iata_code, +round(pa2.outgoing_trip_amount, 2), pa2.return_trip_amount from +posting_allowances pa2 +where comments = 'Imported from eTravel' +and nvl(return_trip_amount, -1) in ( -1, 0.01) +order by 1,2,3; + +select * +from posting_allowances +where comments = 'Imported from eTravel' +and nvl(return_trip_amount, -1) in ( -1, 0.01); + +select * +from etravel_migration_table +where nvl(full_price, 0) <= 0; + +select * +from posting_allowances pa +inner join posting_allowance_persons pap on (pa.posting_allowance_id = pap.posting_allowance_id) +where pa.comments = 'Imported from eTravel' +and pap.trp_cd is null +--and pa.exercise_year = 2022 +--and pa.per_id = 153140 +order by pa.exercise_year, pap.rel_per_id; + +select exercise_year, per_id, count(distinct rel_per_id) +from etravel_migration_table +where TRP_CODE = 'Spouse' +group by exercise_year, per_id +having count(distinct rel_per_id) > 1 +order by 1, 2; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.1.2/02_RIGD-3233_Assignment dates correction.sql b/e-rights-common/src/main/database/release/3.1.2/02_RIGD-3233_Assignment dates correction.sql new file mode 100644 index 0000000..4842fd1 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.1.2/02_RIGD-3233_Assignment dates correction.sql @@ -0,0 +1,246 @@ +CREATE TABLE bkp$posting_allowances_rigd3233 + AS + SELECT + * + FROM + posting_allowances; + +UPDATE posting_allowances pa +SET + assignment_end_date = ( + SELECT + end_date + FROM + mv_assignments_hist_eeas a + WHERE + a.soj_id = pa.soj_id + ) +WHERE + soj_id IS NOT NULL + AND assignment_end_date IS NULL; + +UPDATE posting_allowances pa +SET + assignment_end_date = ( + SELECT + end_date + FROM + mv_assignments_hist_com a + WHERE + a.soj_id = pa.soj_id + ) +WHERE + soj_id IS NOT NULL + AND assignment_end_date IS NULL; + +UPDATE posting_allowances pa +SET + ( soj_id, + assignment_start_date, + assignment_end_date ) = ( + SELECT + soj_id, + start_date, + end_date + FROM + ( + SELECT + a.soj_id, + a.start_date, + a.end_date + FROM + mv_assignments_hist_eeas a + INNER JOIN mv_jobs_hist_eeas j ON ( a.job_id = j.job_id + AND a.jcx_id = j.jcx_id ) + INNER JOIN mv_entities_hist e ON ( j.org_id = e.org_id ) + WHERE + EXISTS ( + SELECT + 1 + FROM + mv_entities_hist e2 + WHERE + e2.is_delegation = 'Y' + AND e2.org_id = e.main_org_id + AND e.start_date <= TO_DATE('31-DEC-' || pa.exercise_year, 'DD-MON-YYYY') + AND e.end_date >= TO_DATE('01-JAN-' || pa.exercise_year, 'DD-MON-YYYY') + ) + AND e.start_date <= TO_DATE('31-DEC-' || pa.exercise_year, 'DD-MON-YYYY') + AND e.end_date >= TO_DATE('01-JAN-' || pa.exercise_year, 'DD-MON-YYYY') + AND a.start_date <= TO_DATE('31-DEC-' || pa.exercise_year, 'DD-MON-YYYY') + AND a.end_date >= TO_DATE('01-JAN-' || pa.exercise_year, 'DD-MON-YYYY') + --AND e.main_org_id = pa.DELEGATION_ORG_ID + AND e.country_id = pa.assignment_country_code + AND a.per_id = pa.per_id + ORDER BY + soj_id + ) + WHERE + ROWNUM = 1 + ) +WHERE + assignment_end_date IS NULL; + +-- Specific cases +UPDATE posting_allowances +SET + soj_id = 4702897, + assignment_start_date = TO_DATE('01-SEP-2018', 'DD-MON-YYYY'), + assignment_end_date = TO_DATE('29-FEB-2020', 'DD-MON-YYYY') +WHERE + per_id = 44606 + AND exercise_year = 2020 + AND soj_id IS NULL; + +UPDATE posting_allowances +SET + soj_id = 1191765, + assignment_start_date = TO_DATE('01-SEP-2017', 'DD-MON-YYYY'), + assignment_end_date = TO_DATE('31-JUL-2018', 'DD-MON-YYYY') +WHERE + per_id = 20017201 + AND exercise_year = 2018 + AND soj_id IS NULL; + +UPDATE posting_allowances +SET + soj_id = 5039810, + assignment_start_date = TO_DATE('09-MAR-2020', 'DD-MON-YYYY'), + assignment_end_date = TO_DATE('31-AUG-2021', 'DD-MON-YYYY') +WHERE + per_id = 22002834 + AND exercise_year = 2021 + AND soj_id IS NULL; + +UPDATE posting_allowances +SET + soj_id = 1192405, + assignment_start_date = TO_DATE('01-SEP-2017', 'DD-MON-YYYY'), + assignment_end_date = TO_DATE('22-MAY-2020', 'DD-MON-YYYY') +WHERE + per_id = 40253222 + AND exercise_year = 2020 + AND soj_id IS NULL; + +UPDATE posting_allowances +SET + soj_id = 1162821, + assignment_start_date = TO_DATE('01-JUN-2017', 'DD-MON-YYYY'), + assignment_end_date = TO_DATE('31-MAY-2020', 'DD-MON-YYYY') +WHERE + per_id = 80074649 + AND exercise_year = 2020 + AND soj_id IS NULL; + +UPDATE posting_allowances +SET + soj_id = 4927678, + assignment_start_date = TO_DATE('01-SEP-2019', 'DD-MON-YYYY'), + assignment_end_date = TO_DATE('31-AUG-2021', 'DD-MON-YYYY') +WHERE + per_id = 90016420 + AND exercise_year = 2021 + AND soj_id IS NULL; + +UPDATE posting_allowances +SET + soj_id = 1242651, + assignment_start_date = TO_DATE('15-JAN-2018', 'DD-MON-YYYY'), + assignment_end_date = TO_DATE('08-MAR-2020', 'DD-MON-YYYY') +WHERE + per_id = 90048788 + AND exercise_year = 2020 + AND soj_id IS NULL; + +UPDATE posting_allowances +SET + soj_id = 1062913, + assignment_start_date = TO_DATE('01-SEP-2017', 'DD-MON-YYYY'), + assignment_end_date = TO_DATE('31-AUG-2018', 'DD-MON-YYYY') +WHERE + per_id = 90133596 + AND exercise_year = 2018 + AND soj_id IS NULL; + +-- Populate missing DELEGATION_ORG_ID +UPDATE posting_allowances pa +SET + delegation_org_id = ( + SELECT DISTINCT + e.main_org_id + FROM + mv_assignments_hist_eeas a + INNER JOIN mv_jobs_hist_eeas j ON ( a.job_id = j.job_id + AND a.jcx_id = j.jcx_id ) + INNER JOIN mv_entities_hist e ON ( j.org_id = e.org_id ) + WHERE + a.soj_id = pa.soj_id + AND EXISTS ( + SELECT + 1 + FROM + mv_entities_hist e2 + WHERE + e2.is_delegation = 'Y' + AND e2.org_id = e.main_org_id + AND e.start_date <= TO_DATE('31-DEC-' || pa.exercise_year, 'DD-MON-YYYY') + AND e.end_date >= TO_DATE('01-JAN-' || pa.exercise_year, 'DD-MON-YYYY') + ) + AND e.start_date <= TO_DATE('31-DEC-' || pa.exercise_year, 'DD-MON-YYYY') + AND e.end_date >= TO_DATE('01-JAN-' || pa.exercise_year, 'DD-MON-YYYY') + AND a.start_date <= TO_DATE('31-DEC-' || pa.exercise_year, 'DD-MON-YYYY') + AND a.end_date >= TO_DATE('01-JAN-' || pa.exercise_year, 'DD-MON-YYYY') + ) +WHERE + delegation_org_id IS NULL; + +/* + +select * +from posting_allowances +where soj_id is null or assignment_start_date is null or assignment_end_date is null; + +select * +from mv_entities_hist; + +select * FROM + mv_assignments_hist_eeas a + INNER JOIN mv_jobs_hist_eeas j ON ( a.job_id = j.job_id + AND a.jcx_id = j.jcx_id ) + INNER JOIN mv_entities_hist e ON ( j.org_id = e.org_id ) + WHERE + EXISTS ( + SELECT + 1 + FROM + mv_entities_hist e2 + WHERE + e2.is_delegation = 'Y' + AND e2.org_id = e.main_org_id + AND e.start_date <= TO_DATE('31-DEC-' || 2018, 'DD-MON-YYYY') + AND e.end_date >= TO_DATE('01-JAN-' || 2018, 'DD-MON-YYYY') + ) + AND e.start_date <= TO_DATE('31-DEC-' || 2018, 'DD-MON-YYYY') + AND e.end_date >= TO_DATE('01-JAN-' || 2018, 'DD-MON-YYYY') + AND a.start_date <= TO_DATE('31-DEC-' || 2018, 'DD-MON-YYYY') + AND a.end_date >= TO_DATE('01-JAN-' || 2018, 'DD-MON-YYYY') + --AND e.main_org_id = pa.DELEGATION_ORG_ID + --AND e.country_id = pa.ASSIGNMENT_COUNTRY_CODE + AND a.per_id = 90133596; + +select * +from mv_assignments_hist_eeas +where per_id = 90016420; + +select * FROM + mv_assignments_hist_com a + INNER JOIN mv_jobs_hist_com j ON ( a.job_id = j.job_id) + INNER JOIN mv_entities_hist_com e ON ( j.org_id = e.org_id ) + WHERE e.start_date <= TO_DATE('31-DEC-' || 2018, 'DD-MON-YYYY') + AND e.end_date >= TO_DATE('01-JAN-' || 2018, 'DD-MON-YYYY') + AND a.start_date <= TO_DATE('31-DEC-' || 2018, 'DD-MON-YYYY') + AND a.end_date >= TO_DATE('01-JAN-' || 2018, 'DD-MON-YYYY') + --AND e.main_org_id = pa.DELEGATION_ORG_ID + --AND e.country_id = pa.ASSIGNMENT_COUNTRY_CODE + AND a.per_id = 80074649; +*/ \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.1.2/03_RIGD-3233_Expatriation allowance dates correction.sql b/e-rights-common/src/main/database/release/3.1.2/03_RIGD-3233_Expatriation allowance dates correction.sql new file mode 100644 index 0000000..e7fbf08 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.1.2/03_RIGD-3233_Expatriation allowance dates correction.sql @@ -0,0 +1,171 @@ +CREATE TABLE bkp$posting_allowances_treated_202307061537 + AS + SELECT + * + FROM + posting_allowances_treated; + +DELETE FROM posting_allowances_treated +WHERE + posting_allowance_id NOT IN ( + SELECT + posting_allowance_id + FROM + posting_allowances + ); + +DECLARE + ld_start_date DATE; + ld_end_date DATE; + ln_update NUMBER := 0; + ln_insert NUMBER := 0; +BEGIN + FOR lr_pa IN ( + SELECT + * + FROM + posting_allowances + WHERE + exercise_year <= 2022 + AND expatriation_allowance_date_from IS NULL + AND soj_id IS NOT NULL + AND posting_allowance_req_type = 'INITIAL' + ) LOOP + BEGIN + SELECT + date_from, + date_to + INTO + ld_start_date, + ld_end_date + FROM + ( + SELECT + date_from, + date_to + FROM + mv_person_relatives_rights r + WHERE + r.rgt_id = 3002 -- Expatriation allowance (IR) + AND r.rtt_id_type IN ( 410, 411 ) -- 410 => [IR = IDE] Expatriation Allowance : 16%, 411 =>[IR = IEX] Foreign Residence Allowance : 4% + AND r.date_from <= TO_DATE('31-DEC-' || lr_pa.exercise_year, 'DD-MON-YYYY') + AND r.date_to >= TO_DATE('01-JAN-' || lr_pa.exercise_year, 'DD-MON-YYYY') + AND r.ins_cd IN ( 'COM', 'EEAS' ) + AND r.per_id_attrib = lr_pa.per_id + ORDER BY + date_from + ) + WHERE + ROWNUM = 1; + + EXCEPTION + WHEN no_data_found THEN + GOTO end_of_loop; + END; + + UPDATE posting_allowances + SET + expatriation_allowance_date_from = ld_start_date, + expatriation_allowance_date_to = ld_end_date + WHERE + posting_allowance_id = lr_pa.posting_allowance_id; + + ln_update := ln_update + SQL%rowcount; + BEGIN + INSERT INTO posting_allowances_treated ( + posting_allowance_treated_id, + posting_allowance_id, + per_id, + exercise_year, + delegation_org_id, + soj_id, + created_by, + created_at, + updated_by, + updated_at, + assignment_start_date, + assignment_end_date, + expatriation_allowance_date_from, + expatriation_allowance_date_to + ) + SELECT + seq_posting_allowances_treated.NEXTVAL, + lr_pa.posting_allowance_id, + lr_pa.per_id, + lr_pa.exercise_year, + lr_pa.delegation_org_id, + lr_pa.soj_id, + 1, + sysdate, + 1, + sysdate, + lr_pa.assignment_start_date, + lr_pa.assignment_end_date, + date_from, + date_to + FROM + mv_person_relatives_rights r + WHERE + r.rgt_id = 3002 -- Expatriation allowance (IR) + AND r.rtt_id_type IN ( 410, 411 ) -- 410 => [IR = IDE] Expatriation Allowance : 16%, 411 =>[IR = IEX] Foreign Residence Allowance : 4% + AND r.date_from <= TO_DATE('31-DEC-' || lr_pa.exercise_year, 'DD-MON-YYYY') + AND r.date_to >= TO_DATE('01-JAN-' || lr_pa.exercise_year, 'DD-MON-YYYY') + AND r.ins_cd IN ( 'COM', 'EEAS' ) + AND r.per_id_attrib = lr_pa.per_id; + + EXCEPTION + WHEN dup_val_on_index THEN + dbms_output.put_line('per_id=' || lr_pa.per_id); + RAISE; + END; + + ln_insert := ln_insert + SQL%rowcount; + << end_of_loop >> NULL; + END LOOP; + + dbms_output.put_line('ln_update=' || ln_update); + dbms_output.put_line('ln_insert=' || ln_insert); +END; +/ + +/* + +SELECT + per_id_attrib, + date_from, + COUNT(*) +FROM + mv_person_relatives_rights r +WHERE + r.rgt_id = 3002 -- Expatriation allowance (IR) + AND r.rtt_id_type IN ( 410, 411 ) -- 410 => [IR = IDE] Expatriation Allowance : 16%, 411 =>[IR = IEX] Foreign Residence Allowance : 4% + --AND r.date_from <= TO_DATE('31-DEC-' || lr_pa.exercise_year, 'DD-MON-YYYY') + --AND r.date_to >= TO_DATE('01-JAN-' || lr_pa.exercise_year, 'DD-MON-YYYY') + --AND r.per_id_attrib = lr_pa.per_id + AND r.ins_cd IN ( 'COM', 'EEAS' ) +GROUP BY + per_id_attrib, + date_from +HAVING + COUNT(*) > 1; + +SELECT + * +FROM + mv_person_relatives_rights r +WHERE + r.rgt_id = 3002 -- Expatriation allowance (IR) + AND r.rtt_id_type IN ( 410, 411 ) -- 410 => [IR = IDE] Expatriation Allowance : 16%, 411 =>[IR = IEX] Foreign Residence Allowance : 4% + --AND r.date_from <= TO_DATE('31-DEC-' || lr_pa.exercise_year, 'DD-MON-YYYY') + --AND r.date_to >= TO_DATE('01-JAN-' || lr_pa.exercise_year, 'DD-MON-YYYY') + AND r.per_id_attrib = 40487603; + +SELECT + * +FROM + posting_allowances +WHERE + expatriation_allowance_date_from IS NULL; + + per_id = 40487603; +*/ \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.2.0/02_RIGD-3136_v_posting_allowances.sql b/e-rights-common/src/main/database/release/3.2.0/02_RIGD-3136_v_posting_allowances.sql new file mode 100644 index 0000000..c745a0e --- /dev/null +++ b/e-rights-common/src/main/database/release/3.2.0/02_RIGD-3136_v_posting_allowances.sql @@ -0,0 +1,112 @@ +CREATE OR REPLACE VIEW erights.v_posting_allowances ( + posting_allowance_id, + per_id, + exercise_year, + posting_allowance_number, + posting_allowance_string_id, + posting_allowance_type, + posting_allowance_req_type, + parent_posting_allowance_id, + comments, + outgoing_trip_amount, + outgoing_trip_amount_currency, + return_trip_amount, + return_trip_amount_currency, + calc_total_amount, + calc_total_amount_currency, + total_amount, + total_amount_currency, + payment_period_year, + payment_period_month, + payment_reference, + payment_state, + assignment_city_code, + assignment_country_code, + assignment_city_name, + assignment_country_name, + assignment_iata_code, + origin_city_code, + origin_country_code, + origin_city_name, + origin_country_name, + origin_iata_code, + recruitment_city_code, + recruitment_country_code, + recruitment_city_name, + recruitment_country_name, + recruitment_iata_code, + sm_id, + state, + posting_allowance_discriminatory_type, + created_by, + created_at, + updated_by, + updated_at, + delegation_org_id, + spouse_per_id, + double_posting, + first_nationality_country_code, + last_child_posting_allowance_id +) AS + SELECT + a.posting_allowance_id posting_allowance_id, + a.per_id, + a.exercise_year, + a.posting_allowance_number posting_allowance_number, + a.posting_allowance_string_id posting_allowance_string_id, + a.posting_allowance_type posting_allowance_type, + a.posting_allowance_req_type posting_allowance_req_type, + a.parent_posting_allowance_id parent_posting_allowance_id, + a.comments, + a.outgoing_trip_amount, + a.outgoing_trip_amount_currency, + a.return_trip_amount, + a.return_trip_amount_currency, + a.calc_total_amount, + a.calc_total_amount_currency, + a.total_amount, + a.total_amount_currency, + a.payment_period_year, + a.payment_period_month, + a.payment_reference, + a.payment_state, + a.assignment_city_code, + a.assignment_country_code, + a.assignment_city_name assignment_city_name, + c_assign.name_en assignment_country_name, + a.assignment_iata_code, + a.origin_city_code, + a.origin_country_code, + a.origin_city_name origin_city_name, + c_origin.name_en origin_country_name, + a.origin_iata_code, + a.recruitment_city_code, + a.recruitment_country_code, + a.recruitment_city_name recruitment_city_name, + c_recruit.name_en recruitment_country_name, + a.recruitment_iata_code, + a.sm_id, + a.state, + a.posting_allowance_discriminatory_type posting_allowance_discriminatory_type, + a.created_by, + a.created_at, + a.updated_by, + a.updated_at, + a.delegation_org_id, + a.spouse_per_id, + a.double_posting, + n.nat_country_code first_nationality_country_code, + ( + SELECT + MAX(a2.posting_allowance_id) + FROM + posting_allowances a2 + WHERE + a2.parent_posting_allowance_id = a.posting_allowance_id + ) last_child_posting_allowance_id + FROM + posting_allowances a + LEFT JOIN mv_person_nationalities n ON ( a.per_id = n.per_id ) + LEFT JOIN mv_countries c_assign ON ( a.assignment_country_code = c_assign.country_code ) + LEFT JOIN mv_countries c_origin ON ( a.origin_country_code = c_origin.country_code ) + LEFT JOIN mv_countries c_recruit ON ( a.recruitment_country_code = c_recruit.country_code ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.2.0/03_RIGD-3211_mv_career_stat_link_hist_eeas.sql b/e-rights-common/src/main/database/release/3.2.0/03_RIGD-3211_mv_career_stat_link_hist_eeas.sql new file mode 100644 index 0000000..2663959 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.2.0/03_RIGD-3211_mv_career_stat_link_hist_eeas.sql @@ -0,0 +1,56 @@ +CREATE MATERIALIZED VIEW mv_career_stat_link_hist_eeas + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND +AS + SELECT + per_id, + start_date, + end_date, + lst_cd, + lst_beg_date, + lst_ass_date, + lst_end_date, + creation_date, + modification_date, + crr_seq_nbr + FROM + mv_career_stat_link_hist_eeas@easrefn; + +CREATE INDEX ix_mv_career_stat_link_hist_eeas_per_id ON + mv_career_stat_link_hist_eeas ( + per_id + ) + COMPUTE STATISTICS; + +INSERT INTO erights.t_refresh_objects ( + id, + app_object_name, + priority, + is_refreshed, + status, + refresh_date, + system +) VALUES ( + 44, + 'MV_CAREER_STAT_LINK_HIST_EEAS', + 44, + 'N', + 'KO', + NULL, + 'EASREFN' +); + +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 44, + 'MV_CAREER_STAT_LINK_HIST_EEAS', + 1 +); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.2.0/04_RIGD-3211_v_travel_allowances_for_manual_regularization.sql b/e-rights-common/src/main/database/release/3.2.0/04_RIGD-3211_v_travel_allowances_for_manual_regularization.sql new file mode 100644 index 0000000..c6dcd29 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.2.0/04_RIGD-3211_v_travel_allowances_for_manual_regularization.sql @@ -0,0 +1,144 @@ +CREATE OR REPLACE VIEW erights.v_travel_allowances_for_manual_regularization ( + record_key, + posting_allowance_id, + exercise_year, + soj_id, + job_id, + per_id, + job_type, + assign_start_date_to, + assign_end_date_to, + no_sysper, + title, + surname, + genre, + userid, + moniker, + domain, + display_name, + jcx_id, + assign_start_date, + assign_end_date, + lst_cd, + lst_code, + lst_beg_date, + lst_ass_date, + lst_end_date, + cgr_cd, + org_id, + main_org_id, + org_name, + org_cd, + org_desc, + tor_id, + typeofentity_name, + del_id, + delegation_name, + responsible, + head_of_entity, + job_city_code, + job_city_name, + job_country_code, + job_country_name, + iata_code, + delegation_org_id, + expatration_allowance_date_from, + expatration_allowance_date_to +) AS + SELECT + to_char(a.posting_allowance_id) + || to_char(expat_allow.date_from, 'YYYYMMDD') record_key, + a.posting_allowance_id, + a.exercise_year, + a.soj_id, + ah.job_id, + a.per_id, + j.job_type, + a.assignment_start_date assign_start_date_to, + a.assignment_end_date assign_end_date_to, + NULL no_sysper,--p.no_sysper, + NULL title,--p.title, + p.surname, + p.genre, + NULL userid,--p.userid, + NULL moniker,--p.moniker, + NULL domain,--p.domain, + p.surname + || ' ' + || p.first_name display_name, + ah.jcx_id, + a.assignment_start_date assign_start_date, + a.assignment_end_date assign_end_date, + sl.lst_cd lst_cd, + sl.en_name lst_code, + NULL lst_beg_date,--p.lst_beg_date, + NULL lst_as_date,--p.lst_ass_date, + NULL lst_end_date,--p.lst_end_date, + NULL cgr_cd,--p.cgr_cd, + e.org_id, + e.main_org_id, + e.org_name, + e.org_cd, + e.org_desc, + e.tor_id, + e.typeofentity_name, + e.del_id, + e.delegation_name, + j.responsible, + j.head_of_entity, + a.assignment_city_code job_city_code, + a.assignment_city_name job_city_name, + a.assignment_country_code job_country_code, + a.assignment_country_name job_country_name, + a.assignment_iata_code iata_code, + a.delegation_org_id delegation_org_id, + expat_allow.date_from expatration_allowance_date_from, + expat_allow.date_to expatration_allowance_date_to + FROM + posting_allowances a + LEFT JOIN mv_persons_hist_eeas p ON ( a.per_id = p.per_id + AND a.assignment_start_date BETWEEN p.start_date AND p.end_date ) + LEFT JOIN mv_assignments_hist_eeas ah ON ( a.soj_id = ah.soj_id ) + LEFT JOIN mv_jobs_hist_eeas j ON ( ah.job_id = j.job_id + AND ah.jcx_id = j.jcx_id ) + LEFT JOIN ( + SELECT + sl.per_id, + sl.start_date, + sl.end_date, + sl.lst_cd, + slc.en_name + FROM + mv_career_stat_link_hist_eeas sl + INNER JOIN mv_statutory_link_codes slc ON ( sl.lst_cd = slc.lst_cd ) + ) sl ON ( a.per_id = sl.per_id + AND a.assignment_start_date BETWEEN sl.start_date AND sl.end_date ) + LEFT JOIN mv_entities_hist e ON ( j.org_id = e.org_id + AND a.assignment_start_date BETWEEN e.start_date AND e.end_date ) + LEFT JOIN ( + SELECT + r.per_id_attrib, + r.date_from, + r.date_to + FROM + mv_person_relatives_rights r + WHERE + r.rgt_id = 3002 -- Expatriation allowance (IR) + AND r.rtt_id_type IN ( 410, 411 ) -- 410 => [IR = IDE] Expatriation Allowance : 16%, 411 =>[IR = IEX] Foreign Residence Allowance : 4% + ) expat_allow ON ( expat_allow.per_id_attrib = a.per_id + AND expat_allow.date_from <= TO_DATE('31-DEC-' || a.exercise_year, 'DD-MON-YYYY') + AND expat_allow.date_to >= TO_DATE('01-JAN-' || a.exercise_year, 'DD-MON-YYYY') ) + WHERE + a.state = 'PAID' + AND a.posting_allowance_id = ( + SELECT + MAX(a2.posting_allowance_id) + FROM + posting_allowances a2 + WHERE + a2.exercise_year = a.exercise_year + AND a2.per_id = a.per_id + AND a2.delegation_org_id = a.delegation_org_id + ); + +GRANT SELECT ON v_travel_allowances_for_manual_regularization TO erights_ro; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.2.0/05_RIGD-3217_v_person_relatives_rights.sql b/e-rights-common/src/main/database/release/3.2.0/05_RIGD-3217_v_person_relatives_rights.sql new file mode 100644 index 0000000..04e842d --- /dev/null +++ b/e-rights-common/src/main/database/release/3.2.0/05_RIGD-3217_v_person_relatives_rights.sql @@ -0,0 +1,20 @@ +CREATE OR REPLACE VIEW erights.v_person_relatives_rights AS + SELECT + uniq_id, + per_id_attrib, + nom_attrib, + prenom_attrib, + per_id_benef, + nom_benef, + prenom_benef, + rgt_id, + droit_eng, + right_pct, + date_from, + date_to + FROM + mv_person_relatives_rights + WHERE + ( ( rgt_id = 1006 /*Household allowance (FO)*/ ) + OR ( rgt_id = 1003 /*Dependent child allowance (EE)*/ + AND right_pct > 50 ) ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.3.0/01_RIGD-3225_requests_alter.sql b/e-rights-common/src/main/database/release/3.3.0/01_RIGD-3225_requests_alter.sql new file mode 100644 index 0000000..e6bc44e --- /dev/null +++ b/e-rights-common/src/main/database/release/3.3.0/01_RIGD-3225_requests_alter.sql @@ -0,0 +1,15 @@ +ALTER TABLE requests ADD ( + payment_id VARCHAR2(255), + payment_event_id VARCHAR2(255) +); + +COMMENT ON COLUMN requests.payment_id IS + 'SYSPER Right ID corresponding to the payment, see MV_PERSON_RELATIVES_RIGHTS.RIG_ID'; + +COMMENT ON COLUMN requests.payment_event_id IS + 'SYSPER Right Event ID corresponding to the payment, see MV_PERSON_RELATIVES_RIGHTS.PET_SEQ_NBR_FROM'; + +ALTER TABLE aud_requests ADD ( + payment_id VARCHAR2(255), + payment_event_id VARCHAR2(255) +); diff --git a/e-rights-common/src/main/database/release/3.3.0/02_RIGD-3225_request_indemnity_table.sql b/e-rights-common/src/main/database/release/3.3.0/02_RIGD-3225_request_indemnity_table.sql new file mode 100644 index 0000000..18ad2f5 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.3.0/02_RIGD-3225_request_indemnity_table.sql @@ -0,0 +1,19 @@ +CREATE TABLE "ERIGHTS"."REQUEST_INDEMNITIES" ( + indemnity_id NUMBER, + indemnity_number number, + indemnity_type VARCHAR2(250 CHAR), + unit VARCHAR2(20 CHAR), + origin_period_year INTEGER, + origin_period_month VARCHAR2(20 CHAR), + payment_period_year INTEGER, + payment_period_month VARCHAR2(20 CHAR), + indemnity_comment VARCHAR2(4000 CHAR), + request_id NUMBER +) TABLESPACE "ERIGHTS" ; + +ALTER TABLE "ERIGHTS"."REQUEST_INDEMNITIES" ADD CONSTRAINT pk_request_indemnities PRIMARY KEY ( indemnity_id ); +ALTER TABLE "ERIGHTS"."REQUEST_INDEMNITIES" ADD CONSTRAINT uk_request_id UNIQUE ( request_id ); + +CREATE SEQUENCE "SEQ_REQUEST_INDEMNITIES" MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE ; + + diff --git a/e-rights-common/src/main/database/release/3.3.0/03_RIGD-3306_REQUEST_INDEMNITIES_Audit.sql b/e-rights-common/src/main/database/release/3.3.0/03_RIGD-3306_REQUEST_INDEMNITIES_Audit.sql new file mode 100644 index 0000000..de1ff79 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.3.0/03_RIGD-3306_REQUEST_INDEMNITIES_Audit.sql @@ -0,0 +1,26 @@ +ALTER TABLE request_indemnities ADD ( + created_by NUMBER NOT NULL, + created_at TIMESTAMP NOT NULL, + updated_by NUMBER NOT NULL, + updated_at TIMESTAMP NOT NULL +); + +CREATE TABLE aud_request_indemnities ( + rev NUMBER(10, 0) + NOT NULL ENABLE, + revtype NUMBER(3, 0), + indemnity_id NUMBER, + indemnity_number NUMBER, + indemnity_type VARCHAR2(250 CHAR), + unit VARCHAR2(20 CHAR), + origin_period_year NUMBER, + origin_period_month VARCHAR2(20 CHAR), + payment_period_year NUMBER, + payment_period_month VARCHAR2(20 CHAR), + indemnity_comment VARCHAR2(4000 CHAR), + request_id NUMBER, + created_by NUMBER, + created_at TIMESTAMP, + updated_by NUMBER, + updated_at TIMESTAMP +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.3.0/04_RIGD-3405_NOTIFICATION_TEMPLATES_Insert.sql b/e-rights-common/src/main/database/release/3.3.0/04_RIGD-3405_NOTIFICATION_TEMPLATES_Insert.sql new file mode 100644 index 0000000..6aa634b --- /dev/null +++ b/e-rights-common/src/main/database/release/3.3.0/04_RIGD-3405_NOTIFICATION_TEMPLATES_Insert.sql @@ -0,0 +1,29 @@ +INSERT INTO notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 73, + 'INSTALLATION_REQUEST', + 'E-Rights: Your request ${REQUEST_STRING_ID} was rejected', + 'Dear ${FIRST_NAME} ${LAST_NAME},

    ' + || 'Your request ${REQUEST_STRING_ID} was rejected in e-Rights.

    ' + || 'Please consult the request in your movement file in e-Rights.', + 'Should you have any questions, please contact us using:
    +
    + +
    + Kind regards,
    + EEAS.RM.BHR.6 Support to Delegations', + 'REJECTED_REQUEST', + 'Y' + ); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.3.0/05_RIGD-3411_NOTIFICATION_TEMPLATES_Update.sql b/e-rights-common/src/main/database/release/3.3.0/05_RIGD-3411_NOTIFICATION_TEMPLATES_Update.sql new file mode 100644 index 0000000..ed6ae70 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.3.0/05_RIGD-3411_NOTIFICATION_TEMPLATES_Update.sql @@ -0,0 +1,38 @@ +-- delete the duplicated records +DELETE FROM notification_templates +WHERE + notification_template_type = 'INSTALLATION_REQUEST' + AND notification_template_code = 'REMINDER'; + +INSERT INTO notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 59, + 'INSTALLATION_REQUEST', + 'E-Rights: Reminder - Declare your new address in Sysper.', + 'Dear ${FIRST_NAME} ${LAST_NAME}, +

    + It has been ${WEEKS_AFTER_START} since your assignment started in ${COUNTRY}, ${CITY} and you still have not declared your new address in Sysper.
    + This is a gentle reminder to declare your address in Sysper once that you have physically arrived at your new place of assignment with effect as of the exact arrival date. + If applicable, do also modify the private address of your dependant family members indicating their habitual residence. After that, you can submit your installation allowance request in e-Rights.
    + Thank you for doing the necessary as soon as possible.

    Please disregard this reminder if you have recently submitted your new address declaration in Sysper. It might still be under review and will be taken into consideration by the system once validated.', + 'Should you have any questions, please contact us using:
    +
    + +
    + Kind regards,
    + EEAS.RM.BHR.6 Support to Delegations', + 'REMINDER', + 'Y' + ); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.3.0/06_RIGD-3380_REQUEST_JUSTIFICATION.sql b/e-rights-common/src/main/database/release/3.3.0/06_RIGD-3380_REQUEST_JUSTIFICATION.sql new file mode 100644 index 0000000..07d7ef4 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.3.0/06_RIGD-3380_REQUEST_JUSTIFICATION.sql @@ -0,0 +1,6 @@ +ALTER TABLE requests ADD ( + justification VARCHAR2(4000 CHAR) +); + +ALTER TABLE AUD_REQUESTS + ADD (justification VARCHAR2(4000 CHAR) ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.3.0/07_RIGD-3420_MV_PERSON_RELATIVES_RIGHTS.sql b/e-rights-common/src/main/database/release/3.3.0/07_RIGD-3420_MV_PERSON_RELATIVES_RIGHTS.sql new file mode 100644 index 0000000..835f793 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.3.0/07_RIGD-3420_MV_PERSON_RELATIVES_RIGHTS.sql @@ -0,0 +1,113 @@ +DROP MATERIALIZED VIEW ERIGHTS.MV_PERSON_RELATIVES_RIGHTS; + +CREATE MATERIALIZED VIEW ERIGHTS.MV_PERSON_RELATIVES_RIGHTS + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND +AS + SELECT DISTINCT + r.rig_id, + r.rig_rec_nbr, + r.per_id_attrib, + r.nom_attrib, + r.prenom_attrib, + r.dt_naiss_attrib, + r.sex_attrib, + r.per_id_benef, + r.nom_benef, + r.prenom_benef, + r.dt_naiss_benef, + r.sex_benef, + r.ins_cd, + r.ins_nom_fra, + r.ins_nom_eng, + r.ins_nom_deu, + r.rgt_id, + r.code, + r.droit_fra, + r.droit_eng, + r.droit_deu, + r.evt_id, + r.evt_fra, + r.evt_eng, + r.evt_deu, + r.date_from, + r.date_to, + r.statut, + r.amount, + r.dev_cd, + r.base_salary_pct, + r.distance, + r.external_ref, + r.half_day_flag1, + r.half_day_flag2, + r.year_count, + r.month_count, + r.allowances_count, + r.units_count, + r.origin_period, + r.payment_period, + r.pension_rate_pct, + r.points_count, + r.right_pct, + r.rate, + r.coc_cd, + r.rtt_id_unit, + r.rtt_unit_fra, + r.rtt_unit_eng, + r.rtt_unit_deu, + r.rtt_id_type, + r.rtt_type_fra, + r.rtt_type_eng, + r.rtt_type_deu, + r.rtt_id_rub_code, + r.rtt_rub_code_fra, + r.rtt_rub_code_eng, + r.rtt_rub_code_deu, + r.rtt_id_rate_type, + r.rtt_rate_type_fra, + r.rtt_rate_type_eng, + r.rtt_rate_type_deu, + r.rtt_id_rate, + r.rtt_rate_fra, + r.rtt_rate_eng, + r.rtt_rate_deu, + r.rtt_id_link_type, + r.rtt_link_type_fra, + r.rtt_link_type_eng, + r.rtt_link_type_deu, + r.rtt_id_inclusive_rate, + r.rtt_inclusive_rate_fra, + r.rtt_inclusive_rate_eng, + r.rtt_inclusive_rate_deu, + r.rtt_id_ceilling, + r.rtt_ceilling_fra, + r.rtt_ceilling_eng, + r.rtt_ceilling_deu, + r.origin_cty, + r.comm, + r.closure_flag, + r.locked_flag, + r.cce_id_reason, + r.cce_reason_fra, + r.cce_reason_eng, + r.cce_reason_deu, + r.pef_id, + r.dt_cre, + r.dt_maj, + r.src_id, + r.uniq_id, + vr.pet_seq_nbr_from + FROM + mv_person_relatives_rights@easrefn.cc.cec.eu.int r + INNER JOIN mv_person_relatives_val_rights@easrefn.cc.cec.eu.int vr ON r.rig_id = vr.rig_id; + +CREATE INDEX ERIGHTS.IX_MV_PERSON_RELATIVES_RIGHTS ON + ERIGHTS.MV_PERSON_RELATIVES_RIGHTS ( + PER_ID_ATTRIB, + RGT_ID + ) COMPUTE STATISTICS; + +GRANT SELECT ON ERIGHTS.MV_PERSON_RELATIVES_RIGHTS TO ERIGHTS_RO; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.3.0/08_RIGD-3288_MV_FAMILY_MEMBERS.sql b/e-rights-common/src/main/database/release/3.3.0/08_RIGD-3288_MV_FAMILY_MEMBERS.sql new file mode 100644 index 0000000..345637b --- /dev/null +++ b/e-rights-common/src/main/database/release/3.3.0/08_RIGD-3288_MV_FAMILY_MEMBERS.sql @@ -0,0 +1,164 @@ + DROP MATERIALIZED VIEW "ERIGHTS"."MV_FAMILY_MEMBERS"; + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_FAMILY_MEMBERS" ("FAMILY_MEMBER_ID", "PER_ID", "SURNAME", "BIRTH_NAME", "FIRST_NAME", "DATE_OF_BIRTH", "GENDER", "START_DATE", "END_DATE", "TRP_CD", "TRP_CODE", "REL_PER_ID", "REL_SURNAME", "REL_BIRTH_NAME", "REL_FIRST_NAME", "REL_DATE_OF_BIRTH", "REL_GENDER", "SOURCE") + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS SELECT /*+driving_site(r)*/ + to_char(rel_per_id) + || to_char(per_id, 'FM0999999999') AS family_member_id, + r.rel_per_id per_id, + r.rel_surname surname, + r.rel_birth_name birth_name, + r.rel_first_name first_name, + r.rel_date_of_birth date_of_birth, + r.rel_gender gender, + r.start_date, + r.end_date, + r.trp_cd, + r.trp_code, + r.per_id rel_per_id, + r.surname rel_surname, + r.birth_name rel_birth_name, + r.first_name rel_first_name, + r.date_of_birth rel_date_of_birth, + r.gender rel_gender, + 'COMREF' source + FROM + mv_person_relatives@easrefn.cc.cec.eu.int r + WHERE + r.trp_cd IN ( 8, 42, 7, 6, 65, + 41, 9, 43, 61, + 24, 44, 46 ) + AND rel_per_id IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas@easrefn.cc.cec.eu.int + UNION ALL + SELECT + per_id + FROM + mv_persons_hist_com@easrefn.cc.cec.eu.int + ) + AND rel_per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + UNION ALL + SELECT /*+driving_site(r)*/ + to_char(rel_per_id) + || to_char(per_id, 'FM0999999999') AS family_member_id, + r.per_id, + r.surname, + r.birth_name, + r.first_name, + r.date_of_birth, + r.gender, + r.start_date, + r.end_date, + r.trp_cd, + r.trp_code, + r.rel_per_id, + r.rel_surname, + r.rel_birth_name, + r.rel_first_name, + r.rel_date_of_birth, + r.rel_gender, + 'COMREF' source + FROM + mv_person_relatives@easrefn.cc.cec.eu.int r + WHERE + r.trp_cd IN ( 8, 42, 7, 6, 65, + 41, 9, 43, 61, + 24, 44, 46 ) + AND per_id IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas@easrefn.cc.cec.eu.int + UNION ALL + SELECT + per_id + FROM + mv_persons_hist_com@easrefn.cc.cec.eu.int + ) + AND rel_per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_person_relatives@easrefn.cc.cec.eu.int r2 + WHERE + r2.per_id = r.rel_per_id + AND r2.rel_per_id = r.per_id + ) + UNION ALL + SELECT /*+driving_site(cfc)*/ DISTINCT + to_char(la.per_id) + || to_char(r.per_id, 'FM0999999999') AS family_member_id, + la.per_id per_id, + la.surname surname, + la.birth_name birth_name, + la.first_name first_name, + la.date_of_birth date_of_birth, + la.genre gender, + cfc.relationship_begin_date start_date, + cfc.relationship_end_date end_date, + CASE family_rel_type_cd + WHEN 'SPO' THEN + 41 + WHEN 'CHL' THEN + 6 + END trp_cd, + CASE family_rel_type_cd + WHEN 'SPO' THEN + 'Spouse' + WHEN 'CHL' THEN + 'Child' + END trp_code, + r.per_id rel_per_id, + r.surname rel_surname, + r.birth_name rel_birth_name, + r.first_name rel_first_name, + r.date_of_birth rel_date_of_birth, + r.genre rel_gender, + 'CSISLA' source + FROM + mv_csisla_family_coverage@easrefn.cc.cec.eu.int cfc + INNER JOIN mv_persons_hist_eeas@easrefn.cc.cec.eu.int la ON ( cfc.la_per_id = la.per_id ) + INNER JOIN mv_persons_hist_eeas@easrefn.cc.cec.eu.int r ON ( cfc.per_id = r.per_id ) + WHERE + family_rel_type_cd <> 'LA' + AND sysdate BETWEEN csisla_start_eligibility AND csisla_end_eligibility + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_person_relatives@easrefn.cc.cec.eu.int pr + WHERE + pr.per_id = r.per_id + AND pr.rel_per_id = la.per_id + ); + + CREATE INDEX "ERIGHTS"."IDX_MV_FAMILY_MEMBERS_PER_ID" ON "ERIGHTS"."MV_FAMILY_MEMBERS" ("PER_ID") COMPUTE STATISTICS ; + diff --git a/e-rights-common/src/main/database/release/3.3.0/09_TTDB-1168_V_REQUESTS_MILESTONES.sql b/e-rights-common/src/main/database/release/3.3.0/09_TTDB-1168_V_REQUESTS_MILESTONES.sql new file mode 100644 index 0000000..e3826dd --- /dev/null +++ b/e-rights-common/src/main/database/release/3.3.0/09_TTDB-1168_V_REQUESTS_MILESTONES.sql @@ -0,0 +1,61 @@ +CREATE OR REPLACE VIEW erights.v_requests_milestones AS + SELECT + request_id, + request_string_id, + state, + previous_state_occurence, + current_state_occurence, + round(nvl(next_state_occurence, sysdate) - current_state_occurence, + 2) time_spent, + saved_by + FROM + ( + SELECT + request_id, + request_string_id, + state state, + saved_at current_state_occurence, + LAG(saved_at, 1) + OVER(PARTITION BY request_id + ORDER BY + saved_at + ) previous_state_occurence, + LEAD(saved_at, 1) + OVER(PARTITION BY request_id + ORDER BY + saved_at + ) next_state_occurence, + saved_by + FROM + ( + SELECT + * + FROM + ( + SELECT + r.request_id, + r.request_string_id, + cs.arrival_state state, + cs.saved_at, + cs.saved_by + FROM + requests r + INNER JOIN ank_sm_current_states cs ON ( r.sm_id = cs.id ) + UNION ALL + SELECT + r.request_id, + r.request_string_id, + ps.arrival_state state, + ps.saved_at, + ps.saved_by + FROM + requests r + INNER JOIN ank_sm_previous_states ps ON ( r.sm_id = ps.current_state_id ) + ) + ORDER BY + request_id, + saved_at + ) + ); + +GRANT SELECT ON erights.v_requests_milestones TO ERIGHTS_RO; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.3.0/10_RIGD-3434_Update_installation_requests_status.sql b/e-rights-common/src/main/database/release/3.3.0/10_RIGD-3434_Update_installation_requests_status.sql new file mode 100644 index 0000000..b3fca08 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.3.0/10_RIGD-3434_Update_installation_requests_status.sql @@ -0,0 +1,134 @@ +-- Bakcup impacted tables +CREATE TABLE bkp$requests_rigd3434 + AS + SELECT + * + FROM + requests; + +CREATE TABLE bkp$ank_sm_current_states_rigd3434 + AS + SELECT + * + FROM + ank_sm_current_states; + +-- Update installation requests and Ananke Current State Machine +DECLARE + ln_count SMALLINT; +BEGIN + FOR lr_request IN ( + SELECT + r.request_id, + r.sm_id, + ( + SELECT + COUNT(*) + FROM + ank_sm_current_states cs + WHERE + cs.id = r.sm_id + ) nb_of_cs, + ( + SELECT + COUNT(*) + FROM + ank_sm_previous_states ps + WHERE + ps.current_state_id = r.sm_id + ) nb_of_ps + FROM + requests r + INNER JOIN entitlmnt_types et ON ( r.entitlmnt_type_id = et.entitlmnt_type_id ) + INNER JOIN movement_files f ON ( et.movement_file_id = f.movement_file_id ) + WHERE + r.state = 'AWAITING' + AND r.request_type = 'InstallationRequest' + AND f.start_date >= TO_DATE('01/01/2023', 'DD/MM/YYYY') + AND ( + SELECT + COUNT(*) + FROM + ank_sm_previous_states ps + WHERE + ps.current_state_id = r.sm_id + ) = 0 + AND ( + SELECT + COUNT(*) + FROM + ank_sm_current_states cs + WHERE + cs.id = r.sm_id + AND cs.arrival_state = 'AWAITING' + ) = 1 + ORDER BY + request_id + ) LOOP + dbms_output.put_line('Processing Request with ID=' || lr_request.request_id); + UPDATE ank_sm_current_states cs + SET + cs.arrival_state = 'DRAFT' + WHERE + cs.id = lr_request.sm_id + AND cs.arrival_state = 'AWAITING'; -- to double check + + dbms_output.put_line('... # of SM Current States AWAITING updated:' || SQL%rowcount); + UPDATE requests + SET + state = 'DRAFT' + WHERE + request_id = lr_request.request_id; + + dbms_output.put_line('... # of Requests updated:' || SQL%rowcount); + END LOOP; +END; +/ + +-- Check if there are any remaining case outside of the scope +SELECT + r.request_id, + r.sm_id, + ( + SELECT + COUNT(*) + FROM + ank_sm_current_states cs + WHERE + cs.id = r.sm_id + ) nb_of_cs, + ( + SELECT + COUNT(*) + FROM + ank_sm_previous_states ps + WHERE + ps.current_state_id = r.sm_id + ) nb_of_ps +FROM + requests r + INNER JOIN entitlmnt_types et ON ( r.entitlmnt_type_id = et.entitlmnt_type_id ) + INNER JOIN movement_files f ON ( et.movement_file_id = f.movement_file_id ) +WHERE + r.state = 'AWAITING' + AND r.request_type = 'InstallationRequest' + AND f.start_date >= TO_DATE('01/01/2023', 'DD/MM/YYYY') + AND ( ( + SELECT + COUNT(*) + FROM + ank_sm_previous_states ps + WHERE + ps.current_state_id = r.sm_id + ) <> 0 + OR ( + SELECT + COUNT(*) + FROM + ank_sm_current_states cs + WHERE + cs.id = r.sm_id + AND cs.arrival_state = 'AWAITING' + ) <> 1 ) +ORDER BY + request_id; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.4.0/01_RIGD-3458_notification_templates_message_body_clob.sql b/e-rights-common/src/main/database/release/3.4.0/01_RIGD-3458_notification_templates_message_body_clob.sql new file mode 100644 index 0000000..be51a72 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.4.0/01_RIGD-3458_notification_templates_message_body_clob.sql @@ -0,0 +1,18 @@ +CREATE TABLE bkp$notification_templates_rigd3458 + AS + SELECT + * + FROM + notification_templates; + +ALTER TABLE notification_templates RENAME COLUMN message_body TO message_body_old; + +ALTER TABLE notification_templates ADD message_body CLOB; + +UPDATE notification_templates +SET + message_body = message_body_old; + +COMMIT; + +ALTER TABLE notification_templates DROP COLUMN message_body_old; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.4.0/02_RIGD-3450_NOTIFICATION_TEMPLATES_sequence.sql b/e-rights-common/src/main/database/release/3.4.0/02_RIGD-3450_NOTIFICATION_TEMPLATES_sequence.sql new file mode 100644 index 0000000..18de6a7 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.4.0/02_RIGD-3450_NOTIFICATION_TEMPLATES_sequence.sql @@ -0,0 +1,14 @@ +DECLARE + lsseqname VARCHAR2(32 CHAR) := 'SEQ_NOTIFICATION_TEMPLATES'; + lnseqcount NUMBER; +BEGIN + -- try to find sequence in data dictionary + SELECT COUNT(1) + INTO lnseqcount + FROM user_sequences + WHERE upper(sequence_name) = lsseqname; + -- if sequence exists, drop it + IF lnseqcount > 0 THEN + EXECUTE IMMEDIATE 'DROP SEQUENCE ' || lsseqname; + END IF; +END; diff --git a/e-rights-common/src/main/database/release/3.4.0/03_RIGD-3450_NOTIFICATION_TEMPLATES_Update.sql b/e-rights-common/src/main/database/release/3.4.0/03_RIGD-3450_NOTIFICATION_TEMPLATES_Update.sql new file mode 100644 index 0000000..6c183bc --- /dev/null +++ b/e-rights-common/src/main/database/release/3.4.0/03_RIGD-3450_NOTIFICATION_TEMPLATES_Update.sql @@ -0,0 +1,44 @@ +-- update existing template(s) +UPDATE notification_templates +SET + default_template = 'N' +WHERE + notification_template_type = 'INSTALLATION_REQUEST' + AND notification_template_code = 'REMINDER' + AND default_template = 'Y'; + +-- insert new template +INSERT INTO notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 74, + 'INSTALLATION_REQUEST', + 'E-Rights: Reminder - Declare your new address in Sysper.', + 'Dear ${FIRST_NAME} ${LAST_NAME}, +

    + It has been ${WEEKS_AFTER_START} since your assignment started in ${COUNTRY}, ${CITY} and you still have not declared your new address in Sysper.
    + This is a gentle reminder to declare your address in Sysper once that you have physically arrived at your new place of assignment with effect as of the exact arrival date. + If applicable, do also modify the private address of your dependant family members indicating their habitual residence.
    + Thank you for doing the necessary as soon as possible and please remember that this is the very first step one needs to take to ' || + 'obtain installation allowance payment (for more details please read the “Step-by-Step Guide to receive your installation allowance†accessible ' || + 'via GUIDELINES from your Movement File in e-Rights).
    ', + 'Should you have any questions, please contact us using:
    +
    + +
    + Kind regards,
    + EEAS.RM.BHR.6 Support to Delegations', + 'REMINDER', + 'Y' + ); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.4.0/04_RIGD-3451_NOTIFICATION_TEMPLATES_Update.sql b/e-rights-common/src/main/database/release/3.4.0/04_RIGD-3451_NOTIFICATION_TEMPLATES_Update.sql new file mode 100644 index 0000000..53e8c0b --- /dev/null +++ b/e-rights-common/src/main/database/release/3.4.0/04_RIGD-3451_NOTIFICATION_TEMPLATES_Update.sql @@ -0,0 +1,42 @@ +-- update existing template(s) +UPDATE notification_templates +SET + default_template = 'N' +WHERE + notification_template_type = 'INSTALLATION_REQUEST' + AND notification_template_code = 'PAID_REQUEST' + AND default_template = 'Y'; + +-- insert new template +INSERT INTO notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 75, + 'INSTALLATION_REQUEST', + '${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID}: Processed', + 'Dear ${FIRST_NAME} ${LAST_NAME},

    ' || + 'Your rights related to your ${ENTITLEMENT_TYPE} request were verified and processed in Sysper. The ${ENTITLEMENT_TYPE} will ' || + 'be paid along with your salary. Please allow some time before it is actually processed by the Payment Office (PMO), however, ' || + 'please note that should you have received this message after the 20th of the month “Mâ€, the installation allowance will be issued only in M+2 ' || + '(see “Pay Calendar†webpage of My Intracomm https://myintracomm.ec.europa.eu/staff/EN/working-conditions/pay/Pages/pay-calendar.aspx)
    ' || + 'In case of any queries on the exact amounts or payments, please contact directly PMO-SALARIES@ec.europa.eu.
    ' || + 'Please log in to E-Rights to consult the details of your installation allowance.
    ', + 'Should you have any questions, please contact us using:
    +
    + +
    + Kind regards,
    + EEAS.RM.BHR.6 Support to Delegations', + 'PAID_REQUEST', + 'Y'); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.4.0/05_RIGD-3449_NOTIFICATION_TEMPLATES_UPDATE.sql b/e-rights-common/src/main/database/release/3.4.0/05_RIGD-3449_NOTIFICATION_TEMPLATES_UPDATE.sql new file mode 100644 index 0000000..ae9c3c5 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.4.0/05_RIGD-3449_NOTIFICATION_TEMPLATES_UPDATE.sql @@ -0,0 +1,75 @@ +UPDATE NOTIFICATION_TEMPLATES +SET default_template = 'N' +WHERE NOTIFICATION_TEMPLATE_TYPE = 'INSTALLATION_REQUEST' + AND notification_template_code = 'START' + AND default_template = 'Y'; + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 76, + 'INSTALLATION_REQUEST', + 'E-Rights: Steps required to complete your rights and obligations', + 'Dear ${FIRST_NAME} ${LAST_NAME},

    We hope that you have well arrived at your destination.

    Here is a gentle reminder of the administrative tasks that you should perform:

    + If you are moving to Headquarters: +
      +
    • Once that you have physically arrived at your new place of assignment; update your address in Sysper for you and your dependants as soon as you have moved into permanent housing to be registered with the authorities.
    • +
    • As soon as your removal has been delivered and you have paid all related invoices, clear your removal by clearing your advance request or submitting your reimbursement request in e-Rights.
    • +
    +
    The installation allowance for staff members returning to HQ is managed by the PMO and not linked to e-Rights.

    + If you are terminating your contract: +
      +
    • You have 3 years after ending your career/contract to resettle and to submit your resettlement allowance claim with the supporting documents.
      While we are working on a new module allowing submission of resettlement allowance claims via e-Rights, for the moment, all applicants are requested to continue sending their complete ones to our functional mailbox DEL-POSTINGS@eeas.europa.eu
    • +
    • Clear your removal by clearing your advance request or submitting your reimbursement request in e-Rights.Please note that clearing any removal advance is a pre-condition for the payment of the resettlement allowance.
    • +
    + If you are moving to/starting in a new Delegation: +
      +
    • Once that you have physically arrived at your new place of assignment; please follow (here below) the “Step-by-Step†Guide to receive your installation allowance.
    • +
    • One of the very first steps will be update of your private address in Sysper for you and, if applicable, for your dependants. Please remember it should be done as soon as possible, even in case of temporary housing.
      Address declarations are used as reference to fix your entitlements and to validate travel entitlements of your dependants, as well as to perform ex-post verifications. Please be aware that an incorrect address in Sysper could lead to the recovery of any unduly paid amounts.
    • +
    • As soon as your removal has been delivered and you have paid all related invoices, clear your removal by clearing your advance request or submitting your reimbursement request in e-Rights.
    • +
    +
    + ☛ Step-by-Step Guide to receive your Installation Allowance
    ', + 'Should you have any questions, please contact us using:
    +
    + +
    + Kind regards,
    + EEAS.RM.BHR.6 Support to Delegations', + 'START', + 'Y' + ); + +UPDATE NOTIFICATION_TEMPLATES +SET message_body = message_body ||CHR(38)||'emsp;step.1. Submit a “Change of Address†declaration via Sysper.
    '|| + CHR(38)||'emsp;step.2. Fill-in and get signed your taking-up-duties confirmation form.
    '|| + CHR(38)||'emsp;step.3. Browse to the “Entitlements†tab of your movement files in e-Rights.
    '|| + CHR(38)||'emsp;step.4. Select the “Installation Allowance†in DRAFT status.
    '|| + CHR(38)||'emsp;step.5. On the Installation Allowance screen the system will prompt you for uploading the signed taking-up-duties confirmation form and detect your address declaration in Sysper (possible delay of 1 day).
    '|| + CHR(38)||'emsp;step.6. Once both the address declaration is validated and your signed your taking-up-duties confirmation form is signed, you can submit your Installation Allowance Request (possibility to submit request will be available as of 11th September)
    '|| + CHR(38)||'emsp;step.7. Your Installation Allowance request will now appear as AWAITING.
    '|| + CHR(38)||'emsp;step.8. BHR.6 will process your request and in case everything is ok, the request will transit to status PAID.
    '|| + CHR(38)||'emsp;step.9. Status PAID means that your Installation Allowance has now been encoded in your Sysper file and the amount will be payable most probably along with your next payslip.

    + ☛ Step-by-Step Guide for payment of your Installation Allowance in Local Currency
    '|| + CHR(38)||'emsp;step.1. Steps 1-5 idem as above
    '|| + CHR(38)||'emsp;step.2. In your Installation Allowance request, introduce a comment for receiving the allowance in local currency and mention the local bank account and currency of payment that you would like to receive the amount and submit your request.
    '|| + CHR(38)||'emsp;step.3. Your Installation Allowance request will now appear as AWAITING.
    '|| + CHR(38)||'emsp;step.4. BHR.6 will process your request as a regular payment and in case everything is ok, the request will transit to status PAID.
    '|| + CHR(38)||'emsp;step.5. Status PAID means that your Installation Allowance is now under financial verification. It will take several days to complete the workflow and credit the amount to your bank account.

    + ☛ Step-by-Step Guide for recalculating your Installation Allowance (in cases of dependents joining later at the place of posting or contract extension)
    '|| + CHR(38)||'emsp;step.1. Once Installation allowance request is in status PAID e-Rights will give you the possibility to “Request Update†of your entitlements.
    '|| + CHR(38)||'emsp;step.2. The Installation allowance request returns to status DRAFT and you may add new supporting documents and/or comments to justify your request.
    '|| + CHR(38)||'emsp;step.3. Submit your new request. It will now appear as AWAITING.
    The rest of the steps remain the same as per the applicable procedures above.
    Thank you for completing these tasks at the earliest possible moment.

    + For more information on the procedures, please log in to e-Rights and consult the guidelines applicable to your movement.
    Please ignore tasks that do not apply to your situation.
    ' +WHERE notification_template_id = 76; + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.4.0/06_RIGD-3452_NOTIFICATION_TEMPLATES_UPDATE.sql b/e-rights-common/src/main/database/release/3.4.0/06_RIGD-3452_NOTIFICATION_TEMPLATES_UPDATE.sql new file mode 100644 index 0000000..0451f79 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.4.0/06_RIGD-3452_NOTIFICATION_TEMPLATES_UPDATE.sql @@ -0,0 +1,35 @@ +UPDATE NOTIFICATION_TEMPLATES +SET default_template = 'N' +where NOTIFICATION_TEMPLATE_TYPE = 'INSTALLATION_REQUEST' + AND notification_template_code = 'UPDATE_REQUEST' + AND default_template = 'Y'; + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 77, + 'INSTALLATION_REQUEST', + 'E-Rights: ${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID}: Updated', + 'Dear ${FIRST_NAME} ${LAST_NAME}, +

    + Your rights related to your ${ENTITLEMENT_TYPE} request were updated in Sysper. The correction of your ${ENTITLEMENT_TYPE} will be applied along with your salary. Please allow some time before it is actually processed by the Payment Office (PMO).

    Please log in to E-Rights to consult the details of your installation allowance.
    ', + 'Should you have any questions, please contact us using:
    +
    + +
    + Kind regards,
    + EEAS.RM.BHR.6 Support to Delegations', + 'UPDATE_REQUEST', + 'Y' +); + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.4.0/07_TTDB-1168_v_requests_milestones.sql b/e-rights-common/src/main/database/release/3.4.0/07_TTDB-1168_v_requests_milestones.sql new file mode 100644 index 0000000..6a45b5f --- /dev/null +++ b/e-rights-common/src/main/database/release/3.4.0/07_TTDB-1168_v_requests_milestones.sql @@ -0,0 +1,76 @@ +CREATE OR REPLACE VIEW erights.v_requests_milestones ( + request_id, + request_string_id, + state, + previous_state_occurence, + current_state_occurence, + time_spent, + previous_saved_by, + saved_by +) AS + SELECT + request_id, + request_string_id, + state, + previous_state_occurence, + current_state_occurence, + round(nvl(next_state_occurence, sysdate) - current_state_occurence, + 2) time_spent, + previous_saved_by, + saved_by + FROM + ( + SELECT + request_id, + request_string_id, + state state, + saved_at current_state_occurence, + LAG(saved_at, 1) + OVER(PARTITION BY request_id + ORDER BY + saved_at + ) previous_state_occurence, + LEAD(saved_at, 1) + OVER(PARTITION BY request_id + ORDER BY + saved_at + ) next_state_occurence, + LAG(saved_by, 1) + OVER(PARTITION BY request_id + ORDER BY + saved_at + ) previous_saved_by, + saved_by + FROM + ( + SELECT + * + FROM + ( + SELECT + r.request_id, + r.request_string_id, + cs.arrival_state state, + cs.saved_at, + cs.saved_by + FROM + requests r + INNER JOIN ank_sm_current_states cs ON ( r.sm_id = cs.id ) + UNION ALL + SELECT + r.request_id, + r.request_string_id, + ps.arrival_state state, + ps.saved_at, + ps.saved_by + FROM + requests r + INNER JOIN ank_sm_previous_states ps ON ( r.sm_id = ps.current_state_id ) + ) + ORDER BY + request_id, + saved_at + ) + ); + +GRANT SELECT ON erights.v_requests_milestones TO erights_ro; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.4.0/08_TTDB-1173_v_requests_paid_by.sql b/e-rights-common/src/main/database/release/3.4.0/08_TTDB-1173_v_requests_paid_by.sql new file mode 100644 index 0000000..43f5b22 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.4.0/08_TTDB-1173_v_requests_paid_by.sql @@ -0,0 +1,80 @@ +CREATE OR REPLACE VIEW v_requests_paid_by AS + WITH request_payment_abac_info_ranked AS ( + SELECT + rpai.agent_name, + rpai.updated_by, + rpai.created_by, + rpai.request_id, + rpai.created_at, + ROW_NUMBER() + OVER(PARTITION BY rpai.request_id + ORDER BY + rpai.created_at DESC + ) AS rn + FROM + request_payment_abac_info rpai + ), state_machine_requests AS ( + SELECT + pre.current_state_id AS id, + pre.arrival_state, + pre.saved_at, + pre.saved_by, + r.request_id, + ROW_NUMBER() + OVER(PARTITION BY pre.current_state_id + ORDER BY + pre.saved_at DESC + ) AS rn + FROM + ank_sm_previous_states pre + JOIN requests r ON r.sm_id = pre.current_state_id + WHERE + pre.arrival_state = 'PAID' + UNION ALL + SELECT + cur.id, + cur.arrival_state, + cur.saved_at, + cur.saved_by, + r.request_id, + ROW_NUMBER() + OVER(PARTITION BY cur.id + ORDER BY + cur.saved_at DESC + ) AS rn + FROM + ank_sm_current_states cur + JOIN requests r ON r.sm_id = cur.id + WHERE + cur.arrival_state = 'PAID' + ), payers AS ( + SELECT + r.request_id, + r.request_string_id, + CASE + WHEN MAX(rr.saved_by) != '-1234' THEN + MAX(rr.saved_by) + ELSE + NULL + END AS manually_pay, + MAX(rpai.updated_by) AS ws_pay + FROM + requests r + LEFT JOIN request_payment_abac_info_ranked rpai ON ( r.request_id = rpai.request_id + AND rpai.rn = 1 ) + LEFT JOIN state_machine_requests rr ON ( r.request_id = rr.request_id + AND rr.rn = 1 ) + WHERE + r.state = 'PAID' + GROUP BY + r.request_id, + r.request_string_id + ) + SELECT DISTINCT + request_id, + request_string_id, + coalesce(manually_pay, ws_pay, - 9999) AS paid_by + FROM + payers; + +GRANT SELECT ON v_requests_paid_by TO erights_ro; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/3.5.1/01_RIGD-3602_MV_PERSON_ADDRESS_LAST.sql b/e-rights-common/src/main/database/release/3.5.1/01_RIGD-3602_MV_PERSON_ADDRESS_LAST.sql new file mode 100644 index 0000000..95a99b3 --- /dev/null +++ b/e-rights-common/src/main/database/release/3.5.1/01_RIGD-3602_MV_PERSON_ADDRESS_LAST.sql @@ -0,0 +1,119 @@ +DROP MATERIALIZED VIEW "ERIGHTS"."MV_PERSON_ADDRESS_LAST"; + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_PERSON_ADDRESS_LAST" ( "PER_ID", "START_DATE", "END_DATE", "EFFECTIVE_DATE", "DECL_CHG_DATE", "TADR_CD" +, "ADDRESS_TYPE_CODE", "COUNTRY_CODE", "CITY_NAME", "POSTAL_CODE", "STREET_NAME", "STREET_NAME1", "STREET_NAME2", "STREET_NUMBER", "POSTAL_BOX" +, "COMMENTS", "ADDITIONAL_ADDRESS", "ADDITIONAL_ADDRESS2", "OREDER_ADDRESS", "LANGUAGE_CODE", "PER_ID_REL_PERS", "SURNAME", "FIRST_NAME" +, "DATE_OF_BIRTH", "TITLE", "LINK_ADR_TEL", "SP2_ADDRESS_ID", "IRIS_ADDRESS_ID", "SRC_ID", "INS_CD", "UNIQ_ID", "CREATED_DATE", "UPDATED_DATE" +) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND +AS + SELECT + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id, + created_date, + updated_date + FROM + ( + SELECT + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id, + created_date, + updated_date, + ROW_NUMBER() + OVER(PARTITION BY per_id, + tadr_cd + ORDER BY + CASE ins_cd -- Take EEAS over COM + WHEN 'EEAS' THEN + 1 + WHEN 'COM' THEN + 2 + ELSE + 10 + END + ASC, + CASE -- Consider past and current records first + WHEN trunc(start_date) <= trunc(sysdate) THEN + 1 + ELSE + 2 + END + ASC, + start_date DESC -- Take the latest record then + ) row_num + FROM + mv_person_address_hist + ) + WHERE + row_num = 1; + +CREATE INDEX "ERIGHTS"."IX_MV_PERSON_ADDRESS_LAST_PER_ID_TADR_CD" ON + "ERIGHTS"."MV_PERSON_ADDRESS_LAST" ( + "PER_ID", + "TADR_CD" + ) + COMPUTE STATISTICS; + +GRANT SELECT ON mv_person_address_last TO erights_ro; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/01_RIGD-3457_v_persons_emails.sql b/e-rights-common/src/main/database/release/4.0.0/01_RIGD-3457_v_persons_emails.sql new file mode 100644 index 0000000..232708e --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/01_RIGD-3457_v_persons_emails.sql @@ -0,0 +1,30 @@ +CREATE OR REPLACE VIEW erights.v_persons_emails ( + per_id, + email, + email_type, + source +) AS + SELECT + per_id, + email, + ctx_cd email_type, + 'EASREFN' source + FROM + mv_emails + UNION ALL + SELECT + per_id, + TRIM(lower(email)), + email_type, + 'ERIGHTS' source + FROM + persons_emails pe + WHERE + NOT EXISTS ( + SELECT + 1 + FROM + mv_emails me + WHERE + me.per_id = pe.per_id + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/02_RIGD-3100_REQUESTS_alter.sql b/e-rights-common/src/main/database/release/4.0.0/02_RIGD-3100_REQUESTS_alter.sql new file mode 100644 index 0000000..edabed9 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/02_RIGD-3100_REQUESTS_alter.sql @@ -0,0 +1,12 @@ +ALTER TABLE requests + ADD (active_years NUMBER, + statutory_link_desc VARCHAR2(2000)); + +COMMENT ON COLUMN requests.active_years IS + 'Resettlement - active years in institution'; +COMMENT ON COLUMN requests.statutory_link_desc IS + 'Statutory link description'; + +ALTER TABLE aud_requests + ADD (active_years NUMBER, + statutory_link_desc VARCHAR2(2000)); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/03_RIGD-3312_DECLARATION_PERSON_ALTER.sql b/e-rights-common/src/main/database/release/4.0.0/03_RIGD-3312_DECLARATION_PERSON_ALTER.sql new file mode 100644 index 0000000..78d96c9 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/03_RIGD-3312_DECLARATION_PERSON_ALTER.sql @@ -0,0 +1,9 @@ +ALTER TABLE declaration_person ADD ( + join_rstlmnt CHAR(1) DEFAULT 'N' +); + +COMMENT ON COLUMN declaration_person.join_rstlmnt IS + 'Resettlement - person joining resettlement'; + +ALTER TABLE aud_declaration_person + ADD (join_rstlmnt CHAR(1)); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/04_RIGD-3489_REQUEST_SUPPORTING_DOCS_create.sql b/e-rights-common/src/main/database/release/4.0.0/04_RIGD-3489_REQUEST_SUPPORTING_DOCS_create.sql new file mode 100644 index 0000000..aef9c1d --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/04_RIGD-3489_REQUEST_SUPPORTING_DOCS_create.sql @@ -0,0 +1,69 @@ +CREATE TABLE request_supporting_docs +( + request_supporting_doc_id NUMBER NOT NULL, + request_id NUMBER NOT NULL, + comments_id NUMBER, + doc_type VARCHAR2(80 CHAR) NOT NULL, + doc_order NUMBER, + doc_mandatory CHAR(1) DEFAULT 'N', + created_by NUMBER NOT NULL, + created_at TIMESTAMP(6) NOT NULL, + updated_by NUMBER NOT NULL, + updated_at TIMESTAMP(6) NOT NULL +); + +ALTER TABLE request_supporting_docs + ADD CONSTRAINT pk_request_supporting_docs + PRIMARY KEY ( request_supporting_doc_id ); + +ALTER TABLE request_supporting_docs + ADD CONSTRAINT fk_req_sdo_req FOREIGN KEY ( request_id ) + REFERENCES requests ( request_id ); + +ALTER TABLE request_supporting_docs + ADD CONSTRAINT fk_req_sdo_com FOREIGN KEY ( comments_id ) + REFERENCES comments ( comments_id ); + +COMMENT ON COLUMN request_supporting_docs.doc_type IS + 'Represents the document type to be uploaded e.g. Utility bill or Proof of property deed'; + +COMMENT ON COLUMN request_supporting_docs.doc_order IS + 'Represents the document order on the screen'; + +COMMENT ON COLUMN request_supporting_docs.doc_mandatory IS + 'Represents either the document is mandatory or not'; + +CREATE SEQUENCE seq_request_supporting_docs MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE; + + + +CREATE TABLE request_supporting_doc_atts +( + request_supporting_doc_att_id NUMBER NOT NULL, + request_supporting_doc_id NUMBER NOT NULL, + uuid RAW(16) NOT NULL, + file_name VARCHAR2(200 BYTE) NOT NULL, + created_by NUMBER NOT NULL, + created_at TIMESTAMP(6) NOT NULL, + updated_by NUMBER NOT NULL, + updated_at TIMESTAMP(6) NOT NULL +); + +ALTER TABLE request_supporting_doc_atts + ADD CONSTRAINT pk_request_supporting_doc_atts + PRIMARY KEY ( request_supporting_doc_att_id ); + +ALTER TABLE request_supporting_doc_atts + ADD CONSTRAINT fk_req_sda_sdo FOREIGN KEY ( request_supporting_doc_id ) + REFERENCES request_supporting_docs ( request_supporting_doc_id ); + +CREATE SEQUENCE seq_request_supporting_doc_atts MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE; + + +ALTER TABLE comments + DROP CONSTRAINT ck_comments_type; + +ALTER TABLE comments + ADD CONSTRAINT ck_comments_type CHECK ( comment_type IN ( 'REQUEST', 'MOVEMENT_FILE', 'POSTING_ALLOWANCE', 'SUPPORTING_DOC') ) VALIDATE; + + diff --git a/e-rights-common/src/main/database/release/4.0.0/05_RIGD-3489_AUD_REQUEST_SUPPORTING_DOCS_create.sql b/e-rights-common/src/main/database/release/4.0.0/05_RIGD-3489_AUD_REQUEST_SUPPORTING_DOCS_create.sql new file mode 100644 index 0000000..fced2e2 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/05_RIGD-3489_AUD_REQUEST_SUPPORTING_DOCS_create.sql @@ -0,0 +1,15 @@ +CREATE TABLE aud_request_supporting_docs +( + rev NUMBER(10, 0) NOT NULL, + revtype NUMBER(3, 0), + request_supporting_doc_id NUMBER, + request_id NUMBER, + comments_id NUMBER, + doc_type VARCHAR2(80 CHAR), + doc_order NUMBER, + doc_mandatory CHAR(1) DEFAULT 'N', + created_by NUMBER, + created_at TIMESTAMP(6), + updated_by NUMBER, + updated_at TIMESTAMP(6) +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/06_RIGD-3526_MV_HEAD_OF_ADMINSTRATIONS_create.sql b/e-rights-common/src/main/database/release/4.0.0/06_RIGD-3526_MV_HEAD_OF_ADMINSTRATIONS_create.sql new file mode 100644 index 0000000..22d48e5 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/06_RIGD-3526_MV_HEAD_OF_ADMINSTRATIONS_create.sql @@ -0,0 +1,59 @@ +CREATE MATERIALIZED VIEW mv_head_of_administrations ( org_id, org_cd, org_name, main_org_id, tor_id, typeofentity_name, job_id, assigment_type + , job_type, job_title, per_id, first_name, surname, email ) + BUILD IMMEDIATE + USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS + DISABLE ON QUERY COMPUTATION DISABLE QUERY REWRITE AS + SELECT + org_id, + org_cd, + org_name, + main_org_id, + tor_id, + typeofentity_name, + job_id, + assigment_type, + job_type, + job_title, + per_id, + first_name, + surname, + email + FROM + mv_head_of_administrations@easrefn; + +GRANT SELECT ON mv_head_of_administrations TO erights_ro; + +INSERT INTO erights.t_refresh_objects ( + id, + app_object_name, + priority, + is_refreshed, + status, + refresh_date, + system +) VALUES ( + 46, + 'MV_HEAD_OF_ADMINISTRATIONS', + 46, + 'N', + 'KO', + NULL, + 'EASREFN' + ); + +INSERT INTO t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 46, + 'MV_HEAD_OF_ADMINISTRATIONS', + 1 + ); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/07_RIGD-3521_MV_CAREER_STAT_LINK_HIST_COM.sql b/e-rights-common/src/main/database/release/4.0.0/07_RIGD-3521_MV_CAREER_STAT_LINK_HIST_COM.sql new file mode 100644 index 0000000..e21b6e9 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/07_RIGD-3521_MV_CAREER_STAT_LINK_HIST_COM.sql @@ -0,0 +1,58 @@ +CREATE MATERIALIZED VIEW erights.mv_career_stat_link_hist_com + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE ON QUERY COMPUTATION DISABLE QUERY REWRITE AS + SELECT + per_id, + start_date, + end_date, + lst_cd, + lst_beg_date, + lst_ass_date, + lst_end_date, + creation_date, + modification_date, + crr_seq_nbr + FROM + mv_career_stat_link_hist_com@easrefn; + +CREATE INDEX erights.ix_mv_career_stat_link_hist_com_per_id ON + erights.mv_career_stat_link_hist_com ( + per_id + ) + COMPUTE STATISTICS; + +INSERT INTO erights.t_refresh_objects ( + id, + app_object_name, + priority, + is_refreshed, + status, + refresh_date, + system +) VALUES ( + 47, + 'MV_CAREER_STAT_LINK_HIST_COM', + 47, + 'N', + 'KO', + sysdate, + 'EASREFN' +); + +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 47, + 'MV_CAREER_STAT_LINK_HIST_COM', + 1 +); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/08_RIGD-3521_V_ASSIGNMENTS_HIST.sql b/e-rights-common/src/main/database/release/4.0.0/08_RIGD-3521_V_ASSIGNMENTS_HIST.sql new file mode 100644 index 0000000..eeea032 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/08_RIGD-3521_V_ASSIGNMENTS_HIST.sql @@ -0,0 +1,80 @@ +CREATE OR REPLACE VIEW erights.v_assignments_hist AS + SELECT + asgh.soj_id, + asgh.jcx_id, + asgh.job_id, + asgh.per_id, + asgh.toj_cd, + asgh.job_type, + asgh.start_date, + asgh.end_date, + asgh.ins_cd, + asgh.creation_date, + asgh.modification_date, + asgh.type_of_post, + del.org_id delegation_org_id, + slh.lst_cd, + slc.en_name lst_name + FROM + mv_assignments_hist_eeas asgh + INNER JOIN mv_jobs_hist_eeas jobh ON ( asgh.job_id = jobh.job_id + AND asgh.jcx_id = jobh.jcx_id ) + INNER JOIN mv_entities_hist enth ON ( jobh.org_id = enth.org_id ) + INNER JOIN mv_career_stat_link_hist_eeas slh ON ( asgh.per_id = slh.per_id + AND slh.start_date <= asgh.end_date + AND nvl(slh.end_date, TO_DATE('31-DEC-9999', 'DD-MON-YYYY')) >= asgh.start_date + ) + INNER JOIN mv_statutory_link_codes slc ON ( slh.lst_cd = slc.lst_cd ) + LEFT JOIN ( + SELECT + org_id + FROM + mv_entities + WHERE + is_delegation = 'Y' + ) del ON ( enth.main_org_id = del.org_id ) + WHERE + enth.start_date = ( + SELECT + MAX(enth2.start_date) + FROM + mv_entities_hist enth2 + WHERE + enth2.org_id = enth.org_id + AND ( asgh.start_date >= enth.start_date + OR asgh.end_date <= enth.end_date ) + ) + UNION ALL + SELECT + asgh.soj_id, + NULL jcx_id, + asgh.job_id, + asgh.per_id, + asgh.toj_cd, + asgh.job_type, + asgh.start_date, + asgh.end_date, + asgh.ins_cd, + asgh.creation_date, + asgh.modification_date, + asgh.type_of_post, + NULL delegation_org_id, + slh.lst_cd, + slc.en_name lst_name + FROM + mv_assignments_hist_com asgh + INNER JOIN mv_career_stat_link_hist_com slh ON ( asgh.per_id = slh.per_id + AND slh.start_date <= asgh.end_date + AND nvl(slh.end_date, TO_DATE('31-DEC-9999', 'DD-MON-YYYY')) >= asgh.start_date + ) + INNER JOIN mv_statutory_link_codes slc ON ( slh.lst_cd = slc.lst_cd ) + WHERE + NOT EXISTS ( + SELECT + 1 + FROM + mv_assignments_hist_eeas easgh + WHERE + easgh.per_id = asgh.per_id + AND easgh.soj_id = asgh.soj_id + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/09_RIGD-3521_MV_ASSIGNMENTS_HIST_COM_PER_ID.sql b/e-rights-common/src/main/database/release/4.0.0/09_RIGD-3521_MV_ASSIGNMENTS_HIST_COM_PER_ID.sql new file mode 100644 index 0000000..dba6945 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/09_RIGD-3521_MV_ASSIGNMENTS_HIST_COM_PER_ID.sql @@ -0,0 +1,5 @@ +CREATE INDEX ix_mv_assignments_hist_com_per_id ON + mv_assignments_hist_com ( + per_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/10_RIGD-3538_COMMENTS-alter.sql b/e-rights-common/src/main/database/release/4.0.0/10_RIGD-3538_COMMENTS-alter.sql new file mode 100644 index 0000000..27df85c --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/10_RIGD-3538_COMMENTS-alter.sql @@ -0,0 +1,2 @@ +ALTER TABLE comments + MODIFY comment_text NOT NULL NOVALIDATE; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/11_RIGD-3293_REQUEST_INDEMNITIES_alter.sql b/e-rights-common/src/main/database/release/4.0.0/11_RIGD-3293_REQUEST_INDEMNITIES_alter.sql new file mode 100644 index 0000000..0cd3e40 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/11_RIGD-3293_REQUEST_INDEMNITIES_alter.sql @@ -0,0 +1,5 @@ +ALTER TABLE request_indemnities ADD HOA_EMAIL_FLAG CHAR(1 BYTE) DEFAULT 'N'; +ALTER TABLE aud_request_indemnities ADD HOA_EMAIL_FLAG CHAR(1 BYTE); + +COMMENT ON COLUMN request_indemnities.HOA_EMAIL_FLAG IS + 'Flag on Resettlement request indicating outstanding debts in the place of last posting'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/12_RIGD-3554_NOTIFICATION_TEMPLATES_insert.sql b/e-rights-common/src/main/database/release/4.0.0/12_RIGD-3554_NOTIFICATION_TEMPLATES_insert.sql new file mode 100644 index 0000000..86b4fcf --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/12_RIGD-3554_NOTIFICATION_TEMPLATES_insert.sql @@ -0,0 +1,38 @@ +-- insert new template +INSERT INTO notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 78, + 'RESETTLEMENT_REQUEST', + 'E-Rights: ${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID}: – query on any eventual pending debts of ${FIRST_NAME} ${LAST_NAME} towards the EU Delegation ${COUNTRY}', + 'Dear Head of Administration, +

    + ${SALUTATION} ${FIRST_NAME} ${LAST_NAME} ended ${SALUTATION_ADJ} contract with EU Delegation ${COUNTRY} on ${EOC_DATE}.
    + We have recently received ${SALUTATION_ADJ} ${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID} and we are ' || + 'finalizing calculations of the claim.
    + In accordance with the rules, we need your written statement that for the concerned Colleague:

      +
    • there are no outstanding debts;
    • ' || + '
    • all the Delegation property has been returned;
    • ' || + '
    • all diplomatic IDs for ${SALUTATION_ADJ2} (and ${SALUTATION_ADJ} family) have been returned;
    • ' || + '
    • all diplomatic car plates have been returned.
    + Thank you very much for letting us know by forwarding reply to this email to DEL-POSTINGS@eeas.europa.eu within 10 working days in order to allow us to proceed accordingly.
    ', + 'Should you have any questions, please contact us using:
    +
    + +
    + Kind regards,
    + EEAS.RM.BHR.6 Support to Delegations', + 'SUBMIT', + 'Y' + ); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/13_RIGD-3297_REQUESTS_alter.sql b/e-rights-common/src/main/database/release/4.0.0/13_RIGD-3297_REQUESTS_alter.sql new file mode 100644 index 0000000..a885f02 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/13_RIGD-3297_REQUESTS_alter.sql @@ -0,0 +1,5 @@ +COMMENT ON COLUMN requests.payment_order IS + 'ABAC Payment Order information'; + +COMMENT ON COLUMN requests.payment_request IS + 'ABAC Payment Request information'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/14_RIGD-3615_NOTIFICATION_TEMPLATES_INSERT.sql b/e-rights-common/src/main/database/release/4.0.0/14_RIGD-3615_NOTIFICATION_TEMPLATES_INSERT.sql new file mode 100644 index 0000000..54db674 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/14_RIGD-3615_NOTIFICATION_TEMPLATES_INSERT.sql @@ -0,0 +1,33 @@ +INSERT INTO notification_templates (notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template) +VALUES (79, + 'RESETTLEMENT_REQUEST', + 'E-Rights: issuance of the payment of your resettlement allowance', + 'Dear ${SALUTATION} ${FIRST_NAME} ${LAST_NAME},

    ' || + 'We are please to inform you that your ${ENTITLEMENT_TYPE} request has been verified and approved. It is +currently being processed and encoded in SYSPER.

    ' || + 'Please note that all ${ENTITLEMENT_TYPE} claims are always paid out at the same time as salaries '|| + CHR(38) || ' pensions – just around mid of each month.

    ' || + 'Should you have received this automated message by the 22nd-23rd of the month M, then the payment of your allowance will take place the following month (M+1).

    '|| + 'If, however, it had been validated in the remaining days of the month M, please note that the payment of the ' || + 'allowance shall be effectively issued to your account by just around mid of the month following the next one (M+2).

    ' || + 'In case of any queries on the exact amounts or payments, please contact directly PMO-SALARIES@ec.europa.eu.

    ' || + 'To consult details of your ${ENTITLEMENT_TYPE} allowance, please log in to E-Rights', + 'Should you have any questions, please contact us using:
    +
    + +
    + Kind regards,
    + EEAS.RM.BHR.6 Support to Delegations', + 'PAID_REQUEST', + 'Y'); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/15_RIGD-3574_DELETE_USER_PREFERENCES.sql b/e-rights-common/src/main/database/release/4.0.0/15_RIGD-3574_DELETE_USER_PREFERENCES.sql new file mode 100644 index 0000000..fe88b9e --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/15_RIGD-3574_DELETE_USER_PREFERENCES.sql @@ -0,0 +1,3 @@ +DELETE FROM user_preferences WHERE page_path='reports/allowances.do'; + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/16_RIGD-3553_NOTIFICATION_TEMPLATES_INSERT.sql b/e-rights-common/src/main/database/release/4.0.0/16_RIGD-3553_NOTIFICATION_TEMPLATES_INSERT.sql new file mode 100644 index 0000000..bc4060e --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/16_RIGD-3553_NOTIFICATION_TEMPLATES_INSERT.sql @@ -0,0 +1,39 @@ +INSERT INTO notification_templates (notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template) +VALUES (80, + 'RESETTLEMENT_REQUEST', + 'E-Rights: ${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID}: Updated', + 'Dear ${FIRST_NAME} ${LAST_NAME},

    ' + || + 'Your right to ${ENTITLEMENT_TYPE} allowance have been revised and updated in Sysper. The calculated correction ' + || 'will be applied along with the monthly issuance of the salary ' + || CHR(38) + || ' pensions (just around mid of the month).


    ' + || 'Should you have received this automated message by the 22nd-23rd ' + || + 'of the month M then the payment of your allowance the following month (M+1).


    ' + || + 'If however it was validated in the remaining days of the month M, please note that you shall be only receiving the payment ' + || + 'in the month following the next one (M+2).

    In case of any queries on the exact amounts or payments, please contact directly' + || ' PMO-SALARIES@ec.europa.eu.

    ' + || + 'To consult details of your ${ENTITLEMENT_TYPE} allowance, please log in to E-Rights.', + 'Should you have any questions, please contact us using:
    +
    + +
    + Kind regards,
    + EEAS.RM.BHR.6 Support to Delegations', + 'UPDATE_REQUEST', + 'Y'); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/17_RIGD-3585_DELETE_NOTIFICATIONS.sql b/e-rights-common/src/main/database/release/4.0.0/17_RIGD-3585_DELETE_NOTIFICATIONS.sql new file mode 100644 index 0000000..7dc5421 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/17_RIGD-3585_DELETE_NOTIFICATIONS.sql @@ -0,0 +1,15 @@ +-- backup the table first +CREATE TABLE bkp$notifications_rigd3585 AS +SELECT * +FROM notifications; + +-- deleting orphan records with no corresponding movement_file_id +DELETE +FROM notifications +WHERE notification_id IN (SELECT notification_id + FROM notifications + WHERE notification_type = 'MOVEMENT_FILE' + AND notification_entity_id NOT IN (SELECT movement_file_id + FROM movement_files)); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/18_RIGD-3586_DELETE_REQUEST_NOTIFICATIONS.sql b/e-rights-common/src/main/database/release/4.0.0/18_RIGD-3586_DELETE_REQUEST_NOTIFICATIONS.sql new file mode 100644 index 0000000..07d75d2 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/18_RIGD-3586_DELETE_REQUEST_NOTIFICATIONS.sql @@ -0,0 +1,21 @@ +-- backup the table first +CREATE TABLE bkp$notifications_rigd3586 AS +SELECT * +FROM notifications; + +-- deleting orphan records with no corresponding request_id +DELETE +FROM notifications +WHERE notification_id IN (SELECT notification_id + FROM notifications + WHERE notification_type = 'REQUEST' + AND notification_entity_id NOT IN (SELECT request_id + FROM requests)); + +-- deleting orphan records with no corresponding notification_template_id +DELETE +FROM notifications +WHERE notification_template_id NOT IN (SELECT notification_template_id + FROM notification_templates); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/19_RIGD-3586_UPDATE_EMAIL_NOTIFICATIONS.sql b/e-rights-common/src/main/database/release/4.0.0/19_RIGD-3586_UPDATE_EMAIL_NOTIFICATIONS.sql new file mode 100644 index 0000000..4fbb3e3 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/19_RIGD-3586_UPDATE_EMAIL_NOTIFICATIONS.sql @@ -0,0 +1,5 @@ +UPDATE notification_templates +SET message_body = 'The following email notifications are failed : ${FAILED_NOTIFICATIONS}' +WHERE notification_template_id = 41; + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/20_RIGD-3454_MV_RGH_ANALYTICAL_POSTING_CRITERIA.sql b/e-rights-common/src/main/database/release/4.0.0/20_RIGD-3454_MV_RGH_ANALYTICAL_POSTING_CRITERIA.sql new file mode 100644 index 0000000..48f4125 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/20_RIGD-3454_MV_RGH_ANALYTICAL_POSTING_CRITERIA.sql @@ -0,0 +1,48 @@ +CREATE MATERIALIZED VIEW mv_rgh_analytical_posting_criteria + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND +AS + SELECT + criteria_type, + criteria_code, + crit_id, + per_id, + criteria_description, + criteria_abbrev + FROM + mv_rgh_analytical_posting_criteria@easrefn; + +INSERT INTO erights.t_refresh_objects ( + id, + app_object_name, + priority, + is_refreshed, + status, + refresh_date, + system +) VALUES ( + 45, + 'MV_RGH_ANALYTICAL_POSTING_CRITERIA', + 45, + 'N', + 'KO', + NULL, + 'EASREFN' +); + +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 45, + 'MV_RGH_ANALYTICAL_POSTING_CRITERIA', + 1 +); + +COMMIT; + +GRANT SELECT ON mv_rgh_analytical_posting_criteria TO erights_ro; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/21_RIGD-3534_V_REPORT_MOVEMENT_FILES.sql b/e-rights-common/src/main/database/release/4.0.0/21_RIGD-3534_V_REPORT_MOVEMENT_FILES.sql new file mode 100644 index 0000000..9bbb1cb --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/21_RIGD-3534_V_REPORT_MOVEMENT_FILES.sql @@ -0,0 +1,86 @@ +CREATE OR REPLACE VIEW "ERIGHTS"."V_REPORT_MOVEMENT_FILES" ( + "MOVEMENT_FILE_ID", + "FIRST_NAME", + "LAST_NAME", + "STATUS", + "STARTDATEFUTURE", + "ENDDATEFUTURE", + "MOVEMENTFROM", + "MOVEMENTTO", + "EVACUATION_STATUS", + "BUDGDET_LINE_FUTURE", + "MOVEMENTTYPE", + "MOVEMENTYEAR", + "MOVEMENTCONTEXT", + "PERID", + "FUTUREASSIGNMENT", + "FILEID", + "PRIORITY", + "FOLLOWUP_FLAGS", + "ALLOCATEDTOCURRENT", + "ALLOCATEDTOFUTURE", + "REASON", + "DELEGATION_ORG_ID_FROM", + "PERSONNEL_TYPE_ID", + "PERSONNEL_TYPE_DESC", + "JOB_FUNCTION_CODE", + "JOB_FUNCTION_DESC", + "INSTITUTION_CODE", + "INSTITUTION_DESC", + "JOBTO_FAMILY_POSTING" +) AS + SELECT + f.movement_file_id, + p.first_name AS first_name, + p.last_name AS last_name, + f.state AS status, + coalesce(f.start_date, assign_start_date_to) AS startdatefuture, + CASE + WHEN EXTRACT(YEAR FROM(coalesce(f.estimated_end_date, assign_end_date_to))) IN ( 2099, 9999 ) THEN + TO_DATE(NULL) + ELSE + coalesce(f.estimated_end_date, assign_end_date_to) + END AS enddatefuture, + ct_from.name_en + || ', ' + || initcap(ci_from.description_en) AS movementfrom, + ct_to.name_en + || ', ' + || initcap(ci_to.description_en) AS movementto, + f.evacuation_status, + budget_line AS budgdet_line_future, + mvtp.movement_type AS movementtype, + f.year AS movementyear, + c.name AS movementcontext, + f.per_id AS perid, + CASE + WHEN mvtp.movement_type LIKE '%-HQ' THEN + NULL + ELSE + f.job_id_to + END AS futureassignment, + f.file_id AS fileid, + f.priority, + f.followup_flags, + f.org_cd_from AS allocatedtocurrent, + f.org_cd_to AS allocatedtofuture, + '1' AS reason, + f.delegation_org_id_from, + f.personnel_type_id, + f.personnel_type_desc, + f.job_function_code, + f.job_function_desc, + f.institution_code, + f.institution_desc, + f.jobto_family_posting + FROM + movement_files f + INNER JOIN movement_context c ON f.context_id = c.movement_context_id + INNER JOIN v_people p ON p.per_id = f.per_id + INNER JOIN movement_types mvtp ON mvtp.movement_type_id = f.movement_type_id + LEFT JOIN mv_countries ct_from ON f.country_code_from = ct_from.country_code + LEFT JOIN mv_cities ci_from ON f.city_code_from = ci_from.city_code + AND ct_from.country_code = ci_from.country_code + LEFT JOIN mv_countries ct_to ON f.country_code_to = ct_to.country_code + LEFT JOIN mv_cities ci_to ON f.city_code_to = ci_to.city_code + AND ct_to.country_code = ci_to.country_code; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.0.0/22_RIGD-3607_ENTITIES_EMAILS.sql b/e-rights-common/src/main/database/release/4.0.0/22_RIGD-3607_ENTITIES_EMAILS.sql new file mode 100644 index 0000000..f9548bb --- /dev/null +++ b/e-rights-common/src/main/database/release/4.0.0/22_RIGD-3607_ENTITIES_EMAILS.sql @@ -0,0 +1,173 @@ +CREATE TABLE entities_emails ( + entities_emails_id NUMBER + CONSTRAINT pk_entities_emails PRIMARY KEY, + org_id NUMBER NOT NULL, + email_type VARCHAR(10) NOT NULL, + email VARCHAR2(320 CHAR) NOT NULL, + created_by NUMBER NOT NULL, + created_at DATE NOT NULL, + updated_by NUMBER NOT NULL, + updated_at DATE NOT NULL +); + +ALTER TABLE entities_emails + ADD CONSTRAINT ck_entities_emails_email_type CHECK ( email_type IN ( 'HOA_FMB' ) ); + +COMMENT ON TABLE entities_emails IS + 'Email addresses of organizational entities'; + +COMMENT ON COLUMN entities_emails.org_id IS + 'Org ID of the entity. See MV_ENTITIES'; + +COMMENT ON COLUMN entities_emails.email_type IS + 'Type of Email: HOA_FMB: Head of Administration Functional Mailbox'; + +CREATE SEQUENCE seq_entities_emails MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE NOKEEP +NOSCALE GLOBAL; + +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239882, 'HOA_FMB', 'delegation-afghanistan-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240490, 'HOA_FMB', 'delegation-african-union-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237566, 'HOA_FMB', 'DELEGATION-ALBANIA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237590, 'HOA_FMB', 'DELEGATION-ALGERIA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237614, 'HOA_FMB', 'DELEGATION-ANGOLA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237639, 'HOA_FMB', 'delegation-argentina-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240087, 'HOA_FMB', 'DELEGATION-ARMENIA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 250927, 'HOA_FMB', 'DELEGATION-ASEAN-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237687, 'HOA_FMB', 'delegation-australia-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240067, 'HOA_FMB', 'Delegation-Azerbaijan-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237699, 'HOA_FMB', 'delegation-bangladesh-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237727, 'HOA_FMB', 'DELEGATION-BARBADOS-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240253, 'HOA_FMB', 'DELEGATION-BELARUS-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237755, 'HOA_FMB', 'delegation-benin-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239951, 'HOA_FMB', 'DELEGATION-BERN-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237779, 'HOA_FMB', 'delegation-bolivia-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237800, 'HOA_FMB', 'delegation-bosnia-and-herzegovina-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237832, 'HOA_FMB', 'delegation-botswana-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237856, 'HOA_FMB', 'delegation-brazil-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237884, 'HOA_FMB', 'delegation-burkina-faso-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237916, 'HOA_FMB', 'delegation-burundi-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240055, 'HOA_FMB', 'DELEGATION-CABO-VERDE-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240265, 'HOA_FMB', 'delegation-cambodia-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237940, 'HOA_FMB', 'DELEGATION-CAMEROON-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237968, 'HOA_FMB', 'delegation-canada-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239281, 'HOA_FMB', 'delegation-central-african-rep-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239553, 'HOA_FMB', 'delegation-chad-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237988, 'HOA_FMB', 'delegation-chile-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238008, 'HOA_FMB', 'delegation-china-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238084, 'HOA_FMB', 'delegation-colombia-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238109, 'HOA_FMB', 'delegation-congo-brazzaville-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240277, 'HOA_FMB', 'DELEGATION-COSTA-RICA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240289, 'HOA_FMB', 'DELEGATION-CUBA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239793, 'HOA_FMB', 'Delegation-Dem-Rep-Of-Congo-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240183, 'HOA_FMB', 'DELEGATION-DJIBOUTI-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239309, 'HOA_FMB', 'DELEGATION-DOMINICAN-REP-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240301, 'HOA_FMB', 'delegation-ecuador-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238197, 'HOA_FMB', 'delegation-egypt-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240369, 'HOA_FMB', 'DELEGATION-EL-SALVADOR-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238225, 'HOA_FMB', 'delegation-eritrea-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240385, 'HOA_FMB', 'DELEGATION-ESWATINI-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238287, 'HOA_FMB', 'delegation-ethiopia-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238319, 'HOA_FMB', 'DELEGATION-FIJI-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238355, 'HOA_FMB', 'delegation-gabon-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240313, 'HOA_FMB', 'DELEGATION-GAMBIA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240518, 'HOA_FMB', 'delegation-geneva-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238383, 'HOA_FMB', 'delegation-georgia-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238403, 'HOA_FMB', 'delegation-ghana-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240321, 'HOA_FMB', 'delegation-guatemala-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238428, 'HOA_FMB', 'delegation-guinea-bissau-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238449, 'HOA_FMB', 'delegation-guinea-conakry-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238473, 'HOA_FMB', 'delegation-guyana-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238501, 'HOA_FMB', 'DELEGATION-HAITI-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240337, 'HOA_FMB', 'DELEGATION-HONDURAS-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238529, 'HOA_FMB', 'delegation-hong-kong-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240397, 'HOA_FMB', 'DELEGATION-ICELAND-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238542, 'HOA_FMB', 'delegation-india-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238574, 'HOA_FMB', 'DELEGATION-INDONESIA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239987, 'HOA_FMB', 'DELEGATION-IRAQ-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238606, 'HOA_FMB', 'DELEGATION-ISRAEL-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238145, 'HOA_FMB', 'DELEGATION-IVORY-COAST-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238630, 'HOA_FMB', 'delegation-jamaica-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238662, 'HOA_FMB', 'delegation-japan-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238690, 'HOA_FMB', 'DELEGATION-JORDAN-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238714, 'HOA_FMB', 'DELEGATION-KAZAKHSTAN-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238742, 'HOA_FMB', 'delegation-kenya-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239999, 'HOA_FMB', 'delegation-kosovo-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 248202, 'HOA_FMB', 'DELEGATION-KUWAIT-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240216, 'HOA_FMB', 'DELEGATION-KYRGYZSTAN-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240345, 'HOA_FMB', 'delegation-laos-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238802, 'HOA_FMB', 'DELEGATION-LEBANON-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238786, 'HOA_FMB', 'delegation-lesotho-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240127, 'HOA_FMB', 'DELEGATION-LIBERIA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 241306, 'HOA_FMB', 'DELEGATION-LIBYA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238826, 'HOA_FMB', 'DELEGATION-MADAGASCAR-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238851, 'HOA_FMB', 'delegation-malawi-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239931, 'HOA_FMB', 'DELEGATION-MALAYSIA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238875, 'HOA_FMB', 'delegation-mali-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238968, 'HOA_FMB', 'delegation-mauritania-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238939, 'HOA_FMB', 'delegation-mauritius-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239000, 'HOA_FMB', 'delegation-mexico-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239967, 'HOA_FMB', 'delegation-moldova-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 244712, 'HOA_FMB', 'DELEGATION-MONGOLIA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240019, 'HOA_FMB', 'delegation-montenegro-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238907, 'HOA_FMB', 'delegation-morocco-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239024, 'HOA_FMB', 'delegation-mozambique-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 241372, 'HOA_FMB', 'DELEGATION-MYANMAR-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239053, 'HOA_FMB', 'delegation-namibia-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240237, 'HOA_FMB', 'delegation-nepal-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240430, 'HOA_FMB', 'delegation-new-york-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240357, 'HOA_FMB', 'DELEGATION-NEW-ZEALAND-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239074, 'HOA_FMB', 'delegation-nicaragua-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239102, 'HOA_FMB', 'delegation-niger-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239127, 'HOA_FMB', 'delegation-nigeria-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237663, 'HOA_FMB', 'DELEGATION-NORTH-MACEDONIA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239155, 'HOA_FMB', 'Delegation-Norway-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239196, 'HOA_FMB', 'DELEGATION-PAKISTAN-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 246157, 'HOA_FMB', 'DELEGATION-PANAMA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239216, 'HOA_FMB', 'delegation-papua-new-guinea-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240361, 'HOA_FMB', 'delegation-paraguay-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240442, 'HOA_FMB', 'DELEGATION-PARIS-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239237, 'HOA_FMB', 'delegation-peru-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239261, 'HOA_FMB', 'delegation-philippines-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 251267, 'HOA_FMB', 'DELEGATION-QATAR-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238129, 'HOA_FMB', 'delegation-rep-of-korea-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240462, 'HOA_FMB', 'Delegation-Rome-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239334, 'HOA_FMB', 'DELEGATION-RUSSIA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239374, 'HOA_FMB', 'DELEGATION-RWANDA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239906, 'HOA_FMB', 'DELEGATION-SAUDI-ARABIA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239399, 'HOA_FMB', 'delegation-senegal-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239761, 'HOA_FMB', 'DELEGATION-SERBIA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239427, 'HOA_FMB', 'delegation-sierra-leone-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239918, 'HOA_FMB', 'DELEGATION-SINGAPORE-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 100000067, 'HOA_FMB', 'DELEGATION-SOMALIA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 237542, 'HOA_FMB', 'DELEGATION-S-AFRICA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 241328, 'HOA_FMB', 'DELEGATION-SOUTH-SUDAN-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239484, 'HOA_FMB', 'delegation-sri-lanka-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240514, 'HOA_FMB', 'DELEGATION-STRASBOURG-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239456, 'HOA_FMB', 'delegation-sudan-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239501, 'HOA_FMB', 'DELEGATION-SYRIA-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239943, 'HOA_FMB', 'DELEGATION-TAIWAN-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240199, 'HOA_FMB', 'delegation-tajikistan-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239525, 'HOA_FMB', 'delegation-tanzania-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239581, 'HOA_FMB', 'delegation-thailand-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240039, 'HOA_FMB', 'Delegation-Timor-Leste-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240147, 'HOA_FMB', 'delegation-togo-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240393, 'HOA_FMB', 'delegation-trinidad-and-tobago-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239609, 'HOA_FMB', 'delegation-tunisia-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239637, 'HOA_FMB', 'DELEGATION-TURKIYE-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 248209, 'HOA_FMB', 'DELEGATION-TURKMENISTAN-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239167, 'HOA_FMB', 'delegation-uganda-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239665, 'HOA_FMB', 'DELEGATION-UKRAINE-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 241672, 'HOA_FMB', 'DELEGATION-UNITED-ARAB-EMIRATES-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 246754, 'HOA_FMB', 'DELEGATION-UNITED-KINGDOM-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239697, 'HOA_FMB', 'delegation-uruguay-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238250, 'HOA_FMB', 'delegation-usa-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240107, 'HOA_FMB', 'DELEGATION-UZBEKISTAN-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239717, 'HOA_FMB', 'delegation-venezuela-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240474, 'HOA_FMB', 'Delegation-Vienna-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239737, 'HOA_FMB', 'delegation-vietnam-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 238052, 'HOA_FMB', 'delegation-west-bank-gaza-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 240163, 'HOA_FMB', 'DELEGATION-YEMEN-HOA@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239825, 'HOA_FMB', 'delegation-zambia-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); +INSERT INTO entities_emails(ENTITIES_EMAILS_ID, ORG_ID, EMAIL_TYPE, EMAIL, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) values (seq_entities_emails.nextval, 239857, 'HOA_FMB', 'delegation-zimbabwe-hoa@eeas.europa.eu', 0, SYSDATE, 0, SYSDATE); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.1.4/01 V_PLACES_OF_ORIGIN.sql b/e-rights-common/src/main/database/release/4.1.4/01 V_PLACES_OF_ORIGIN.sql new file mode 100644 index 0000000..9b9134e --- /dev/null +++ b/e-rights-common/src/main/database/release/4.1.4/01 V_PLACES_OF_ORIGIN.sql @@ -0,0 +1,36 @@ +CREATE OR REPLACE VIEW v_places_of_origin ( + per_id, + place_of_origin, + country_code, + country_of_origin, + eu_state +) AS + SELECT + place_of_origin.per_id, + initcap(place_of_origin.place_of_origin) place_of_origin, + place_of_origin.country_code country_code, + place_of_origin.country_of_origin country_of_origin, + place_of_origin.eu_state eu_state + FROM + ( + SELECT + pa.per_id, + pa.city_name place_of_origin, + pa.country_code country_code, + c.name_en country_of_origin, + c.place_of_origin_eu_state eu_state, + ROW_NUMBER() + OVER(PARTITION BY per_id, tadr_cd + ORDER BY + start_date + ) row_num + FROM + mv_person_address_last pa + INNER JOIN mv_countries c ON ( pa.country_code = c.country_code ) + WHERE + tadr_cd = 22 + AND ( sysdate BETWEEN pa.start_date AND pa.end_date + OR sysdate < pa.start_date ) + ) place_of_origin + WHERE + row_num = 1; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.1.4/02 POSTING_ALLOWANCES_TREATED_Alter.sql b/e-rights-common/src/main/database/release/4.1.4/02 POSTING_ALLOWANCES_TREATED_Alter.sql new file mode 100644 index 0000000..b10fe39 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.1.4/02 POSTING_ALLOWANCES_TREATED_Alter.sql @@ -0,0 +1,26 @@ +ALTER TABLE posting_allowances_treated ADD origin_country_code VARCHAR2(3); + +UPDATE posting_allowances_treated pat +SET + pat.origin_country_code = ( + SELECT + pa.origin_country_code + FROM + posting_allowances pa + WHERE + pat.posting_allowance_id = pa.posting_allowance_id + ) +WHERE + pat.origin_country_code IS NULL; + +COMMIT; + +ALTER TABLE posting_allowances_treated DROP CONSTRAINT uk_posting_allowances_treated_per_id_soj_id_exercise_year; + +ALTER TABLE posting_allowances_treated + ADD CONSTRAINT uk_posting_allowances_treated_per_id_soj_id_exercise_year UNIQUE ( per_id, + soj_id, + exercise_year, + expatriation_allowance_date_from, + origin_country_code ) + USING INDEX enable; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.1.4/03 V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES.sql b/e-rights-common/src/main/database/release/4.1.4/03 V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES.sql new file mode 100644 index 0000000..e65f5bb --- /dev/null +++ b/e-rights-common/src/main/database/release/4.1.4/03 V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES.sql @@ -0,0 +1,146 @@ +CREATE OR REPLACE VIEW v_current_exercise_new_travel_allowances ( + record_key, + soj_id, + job_id, + per_id, + job_type, + assign_start_date_to, + assign_end_date_to, + no_sysper, + title, + surname, + genre, + userid, + moniker, + domain, + display_name, + jcx_id, + assign_start_date, + assign_end_date, + lst_cd, + lst_code, + lst_beg_date, + lst_ass_date, + lst_end_date, + cgr_cd, + org_id, + main_org_id, + org_name, + org_cd, + org_desc, + tor_id, + typeofentity_name, + del_id, + delegation_name, + responsible, + head_of_entity, + job_city_code, + job_city_name, + job_country_code, + job_country_name, + iata_code, + delegation_org_id, + expatration_allowance_date_from, + expatration_allowance_date_to, + origin_country_code +) AS + SELECT + to_char(a.soj_id) + || to_char(expat_allow.date_from, 'YYYYMMDD') record_key, + a.soj_id, + j.job_id, + p.per_id, + j.job_type, + a.start_date assign_start_date_to, + a.end_date assign_end_date_to, + NULL no_sysper,--p.no_sysper, + NULL title,--p.title, + p.last_name surname, + p.gender genre, + NULL userid,--p.userid, + NULL moniker,--p.moniker, + NULL domain,--p.domain, + p.last_name + || ' ' + || p.first_name display_name, + j.jcx_id, + a.start_date assign_start_date, + a.end_date assign_end_date, + p.statutory_link_code lst_cd, + p.statutory_link_desc lst_code, + NULL lst_beg_date,--p.lst_beg_date, + NULL lst_as_date,--p.lst_ass_date, + NULL lst_end_date,--p.lst_end_date, + NULL cgr_cd,--p.cgr_cd, + e.org_id, + e.main_org_id, + e.org_name, + e.org_cd, + e.org_desc, + e.tor_id, + e.typeofentity_name, + e.del_id, + e.delegation_name, + j.responsible, + j.head_of_entity, + j.location_city_code job_city_code, + j.location_city_name job_city_name, + j.location_country_code job_country_code, + j.location_country_name job_country_name, + ac.iata_code, + e.main_org_id delegation_org_id, + expat_allow.date_from expatration_allowance_date_from, + expat_allow.date_to expatration_allowance_date_to, + poo.country_code origin_country_code + FROM + v_staffmembers p + INNER JOIN mv_assignments_hist_eeas a ON ( p.per_id = a.per_id ) + INNER JOIN mv_jobs_hist_eeas j ON ( a.job_id = j.job_id + AND a.jcx_id = j.jcx_id ) + INNER JOIN mv_entities e ON ( j.org_id = e.org_id ) + INNER JOIN airport_cities ac ON ( ac.city_code = j.location_city_code + AND ac.country_code = j.location_country_code ) + INNER JOIN ( + SELECT + r.per_id_attrib, + r.date_from, + r.date_to + FROM + mv_person_relatives_rights r + WHERE + r.rgt_id = 3002 -- Expatriation allowance (IR) + AND r.rtt_id_type IN ( 410, 411 ) -- 410 => [IR = IDE] Expatriation Allowance : 16%, 411 =>[IR = IEX] Foreign Residence Allowance : 4% + AND r.date_from <= TO_DATE('31-DEC-' || EXTRACT(YEAR FROM sysdate), + 'DD-MON-YYYY') + AND r.date_to >= trunc(sysdate, 'YYYY') + ) expat_allow ON ( expat_allow.per_id_attrib = p.per_id ) + LEFT JOIN v_places_of_origin poo ON ( p.per_id = poo.per_id ) + WHERE + EXISTS ( + SELECT + 1 + FROM + mv_entities e2 + WHERE + e2.is_delegation = 'Y' + AND e2.org_id = e.main_org_id + ) + AND ( p.statutory_link_code IN ( 'CA', 'CB', 'FP', 'FS', 'TP', + 'TE' ) + OR p.statutory_link_code IS NULL ) + AND a.start_date <= TO_DATE('31-DEC-' || EXTRACT(YEAR FROM sysdate), + 'DD-MON-YYYY') + AND a.end_date >= trunc(sysdate, 'YYYY') + AND NOT EXISTS ( -- remove the create allowances, we need to filter by the travel,storage acomodation + SELECT + 1 + FROM + posting_allowances_treated aa + WHERE + aa.per_id = p.per_id + AND aa.delegation_org_id = e.main_org_id + AND aa.exercise_year = EXTRACT(YEAR FROM sysdate) + AND nvl(aa.expatriation_allowance_date_from, TO_DATE('01-JAN-1900', 'DD-MON-YYYY')) = expat_allow.date_from + AND nvl(aa.expatriation_allowance_date_to, TO_DATE('01-JAN-1900', 'DD-MON-YYYY')) = expat_allow.date_to + AND nvl(aa.origin_country_code, '*') = nvl(poo.country_code, '*') + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.2.0/0001-add column requests.sql b/e-rights-common/src/main/database/release/4.2.0/0001-add column requests.sql new file mode 100644 index 0000000..c1a5fc9 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.0/0001-add column requests.sql @@ -0,0 +1,15 @@ +ALTER TABLE REQUESTS + ADD (P2P_HUB_ORDER_ID NUMBER ); + + +ALTER TABLE AUD_REQUESTS + ADD (P2P_HUB_ORDER_ID NUMBER ); + + +ALTER TABLE REQUESTS + ADD (P2P_HUB_ORDER_STATUS VARCHAR2(20) ); + + +ALTER TABLE AUD_REQUESTS + ADD (P2P_HUB_ORDER_STATUS VARCHAR2(20) ); + diff --git a/e-rights-common/src/main/database/release/4.2.0/0002-delegation_codes.sql b/e-rights-common/src/main/database/release/4.2.0/0002-delegation_codes.sql new file mode 100644 index 0000000..5e25270 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.0/0002-delegation_codes.sql @@ -0,0 +1,196 @@ + +-------------------------------------------------------- +-- DDL for Table DELEGATION_CODES +-------------------------------------------------------- +DROP TABLE TABLE "ERIGHTS"."DELEGATION_CODES"; +CREATE TABLE "ERIGHTS"."DELEGATION_CODES" +( "ORG_ID" NUMBER, + "ORG_CODE" VARCHAR2(15 BYTE), + "APPLICATION_VIEW" VARCHAR2(18 BYTE), + "ORG_EXERCISE_ID" NUMBER, + "NAME" VARCHAR2(200 BYTE) +) SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +REM INSERTING into ERIGHTS.DELEGATION_CODES +SET DEFINE OFF; +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5358,'MYSK','REPORT_SUMMARY_DEL',2025,'MALAYSIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5339,'NAMW','REPORT_SUMMARY_DEL',2025,'NAMIBIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5416,'NCLN','REPORT_SUMMARY_DEL',2025,'NEW CALEDONIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5391,'NERN','REPORT_SUMMARY_DEL',2025,'NIGER'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5374,'NGAA','REPORT_SUMMARY_DEL',2025,'NIGERIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5392,'NICM','REPORT_SUMMARY_DEL',2025,'NICARAGUA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5393,'NORO','REPORT_SUMMARY_DEL',2025,'NORWAY'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5302,'NPLK','REPORT_SUMMARY_DEL',2025,'NEPAL'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5281,'NZLW','REPORT_SUMMARY_DEL',2025,'NEW ZEALAND'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5303,'PAKI','REPORT_SUMMARY_DEL',2025,'PAKISTAN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5417,'PANP','REPORT_SUMMARY_DEL',2025,'PANAMA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5409,'PERL','REPORT_SUMMARY_DEL',2025,'PERU'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5394,'PHLM','REPORT_SUMMARY_DEL',2025,'PHILIPPINES'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5395,'PNGP','REPORT_SUMMARY_DEL',2025,'PAPUA NEW GUINEA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5328,'PRYA','REPORT_SUMMARY_DEL',2025,'PARAGUAY'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5430,'QATD','REPORT_SUMMARY_DEL',2025,'QATAR - DOHA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5375,'RUSM','REPORT_SUMMARY_DEL',2025,'RUSSIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5329,'RWAK','REPORT_SUMMARY_DEL',2025,'RWANDA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5396,'SAUR','REPORT_SUMMARY_DEL',2025,'SAUDI ARABIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5282,'SCGB','REPORT_SUMMARY_DEL',2025,'SERBIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5340,'SDNJ','REPORT_SUMMARY_DEL',2025,'SOUTH SUDAN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5376,'SDNK','REPORT_SUMMARY_DEL',2025,'SUDAN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5283,'SEND','REPORT_SUMMARY_DEL',2025,'SENEGAL'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5330,'SGPS','REPORT_SUMMARY_DEL',2025,'SINGAPORE'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5359,'SLEF','REPORT_SUMMARY_DEL',2025,'SIERRA LEONE'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5360,'SLVS','REPORT_SUMMARY_DEL',2025,'EL SALVADOR'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5415,'SOMM','REPORT_SUMMARY_DEL',2025,'SOMALIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5304,'SWZM','REPORT_SUMMARY_DEL',2025,'ESWATINI'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5361,'SYRD','REPORT_SUMMARY_DEL',2025,'SYRIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5377,'TCDN','REPORT_SUMMARY_DEL',2025,'CHAD'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5305,'TGOL','REPORT_SUMMARY_DEL',2025,'TOGO'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5284,'THAB','REPORT_SUMMARY_DEL',2025,'THAILAND'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5285,'TJKD','REPORT_SUMMARY_DEL',2025,'TAJIKISTAN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5422,'TKMA','REPORT_SUMMARY_DEL',2025,'TURKMENISTAN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5404,'FRAP','REPORT_SUMMARY_DEL',2025,'OECD/UNESCO'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5350,'FRAS','REPORT_SUMMARY_DEL',2025,'COE'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5272,'GABL','REPORT_SUMMARY_DEL',2025,'GABON'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5419,'GBRL','REPORT_SUMMARY_DEL',2025,'UNITED KINGDOM'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5320,'GEOT','REPORT_SUMMARY_DEL',2025,'GEORGIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5273,'GHAA','REPORT_SUMMARY_DEL',2025,'GHANA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5297,'GINC','REPORT_SUMMARY_DEL',2025,'GUINEA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5385,'GMBB','REPORT_SUMMARY_DEL',2025,'GAMBIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5321,'GNBB','REPORT_SUMMARY_DEL',2025,'GUINEA-BISSAU'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5337,'GTMG','REPORT_SUMMARY_DEL',2025,'GUATEMALA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5386,'GUYG','REPORT_SUMMARY_DEL',2025,'GUYANA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5351,'HKGH','REPORT_SUMMARY_DEL',2025,'HONG KONG'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5322,'HNDT','REPORT_SUMMARY_DEL',2025,'HONDURAS'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5338,'HTIP','REPORT_SUMMARY_DEL',2025,'HAITI'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5429,'IDNA','REPORT_SUMMARY_DEL',2025,'INDONESIA ASEAN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5352,'IDNJ','REPORT_SUMMARY_DEL',2025,'INDONESIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5274,'INDN','REPORT_SUMMARY_DEL',2025,'INDIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5387,'IRQB','REPORT_SUMMARY_DEL',2025,'IRAQ'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5275,'ISLR','REPORT_SUMMARY_DEL',2025,'ICELAND'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5405,'ISRT','REPORT_SUMMARY_DEL',2025,'ISRAEL'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5276,'ITAR','REPORT_SUMMARY_DEL',2025,'HOLY SEE/UN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5323,'JAMK','REPORT_SUMMARY_DEL',2025,'JAMAICA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5324,'JORA','REPORT_SUMMARY_DEL',2025,'JORDAN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5277,'JPNT','REPORT_SUMMARY_DEL',2025,'JAPAN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5325,'KAZA','REPORT_SUMMARY_DEL',2025,'KAZAKHSTAN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5298,'KENN','REPORT_SUMMARY_DEL',2025,'KENYA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5266,'AGOL','REPORT_SUMMARY_DEL',2025,'ANGOLA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5332,'ALBT','REPORT_SUMMARY_DEL',2025,'ALBANIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5292,'AREA','REPORT_SUMMARY_DEL',2025,'UNITED ARAB EMIRATES'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5291,'AFGK','REPORT_SUMMARY_DEL',2025,'AFGHANISTAN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5309,'ARGB','REPORT_SUMMARY_DEL',2025,'ARGENTINA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5310,'ARME','REPORT_SUMMARY_DEL',2025,'ARMENIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5267,'AUSC','REPORT_SUMMARY_DEL',2025,'AUSTRALIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5333,'AUTV','REPORT_SUMMARY_DEL',2025,'UN/IAEA/OSCE'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5346,'AZEB','REPORT_SUMMARY_DEL',2025,'AZERBAIJAN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5347,'BDIB','REPORT_SUMMARY_DEL',2025,'BURUNDI'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5293,'BENC','REPORT_SUMMARY_DEL',2025,'BENIN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5311,'BFAO','REPORT_SUMMARY_DEL',2025,'BURKINA FASO'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5368,'BGDD','REPORT_SUMMARY_DEL',2025,'BANGLADESH'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5400,'BIHS','REPORT_SUMMARY_DEL',2025,'BOSNIA AND HERZEGOVINA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5268,'BLRM','REPORT_SUMMARY_DEL',2025,'BELARUS'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5369,'BOLL','REPORT_SUMMARY_DEL',2025,'BOLIVIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5312,'BRAB','REPORT_SUMMARY_DEL',2025,'BRAZIL'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5269,'BRBB','REPORT_SUMMARY_DEL',2025,'BARBADOS'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5348,'BWAG','REPORT_SUMMARY_DEL',2025,'BOTSWANA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5313,'CAFB','REPORT_SUMMARY_DEL',2025,'CENTRAL AFRICAN REPUBLIC'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5370,'CANO','REPORT_SUMMARY_DEL',2025,'CANADA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5294,'CHEB','REPORT_SUMMARY_DEL',2025,'SWITZERLAND'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5295,'CHEG','REPORT_SUMMARY_DEL',2025,'WTO'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5314,'CHEU','REPORT_SUMMARY_DEL',2025,'UN/GEN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5334,'CRIS','REPORT_SUMMARY_DEL',2025,'COSTA RICA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5335,'CUBL','REPORT_SUMMARY_DEL',2025,'CUBA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5401,'DJID','REPORT_SUMMARY_DEL',2025,'DJIBOUTI'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5402,'DOMS','REPORT_SUMMARY_DEL',2025,'DOMINICAN REPUBLIC'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5270,'CHLS','REPORT_SUMMARY_DEL',2025,'CHILE'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5380,'CHNP','REPORT_SUMMARY_DEL',2025,'CHINA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5271,'CIVA','REPORT_SUMMARY_DEL',2025,'IVORY COAST'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5349,'CMRY','REPORT_SUMMARY_DEL',2025,'CAMEROON'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5315,'COGB','REPORT_SUMMARY_DEL',2025,'CONGO'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5381,'COLS','REPORT_SUMMARY_DEL',2025,'COLOMBIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5371,'CPVP','REPORT_SUMMARY_DEL',2025,'CABO VERDE'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5316,'DZAA','REPORT_SUMMARY_DEL',2025,'ALGERIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5263,'BHR1','REPORT_SUMMARY_DEL',2025,'RM.BHR.1'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5289,'BHR3','REPORT_SUMMARY_DEL',2025,'RM.BHR.3'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5290,'BHR4','REPORT_SUMMARY_DEL',2025,'RM.BHR.4'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5296,'BHR5','REPORT_SUMMARY_DEL',2025,'RM.BHR.5'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5418,'BHR6','REPORT_SUMMARY_DEL',2025,'RM.BHR.6'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5265,'CMPD','REPORT_SUMMARY_DEL',2025,'MD-PSD.PCM'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5425,'CPCC4','REPORT_SUMMARY_DEL',2025,'DMD.CPCC.4'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5317,'CRC3','REPORT_SUMMARY_DEL',2025,'SG.CRC.3'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5362,'TLSD','REPORT_SUMMARY_DEL',2025,'TIMOR-LESTE'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5410,'TTOP','REPORT_SUMMARY_DEL',2025,'TRINIDAD AND TOBAGO'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5306,'TUNT','REPORT_SUMMARY_DEL',2025,'TUNISIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5397,'TURA','REPORT_SUMMARY_DEL',2025,'TÜRKIYE'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5378,'TWNT','REPORT_SUMMARY_DEL',2025,'TAIWAN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5307,'TZAD','REPORT_SUMMARY_DEL',2025,'TANZANIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5363,'UGAK','REPORT_SUMMARY_DEL',2025,'UGANDA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5364,'UKRK','REPORT_SUMMARY_DEL',2025,'UKRAINE'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5341,'URYM','REPORT_SUMMARY_DEL',2025,'URUGUAY'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5379,'USAN','REPORT_SUMMARY_DEL',2025,'UN/NY'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5286,'USAW','REPORT_SUMMARY_DEL',2025,'UNITED STATES'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5398,'UZBT','REPORT_SUMMARY_DEL',2025,'UZBEKISTAN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5331,'VENC','REPORT_SUMMARY_DEL',2025,'VENEZUELA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5365,'VNMH','REPORT_SUMMARY_DEL',2025,'VIETNAM'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5411,'WBGJ','REPORT_SUMMARY_DEL',2025,'WEST BANK AND GAZA STRIP'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5366,'WSMA','REPORT_SUMMARY_DEL',2025,'SAMOA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5412,'YEMA','REPORT_SUMMARY_DEL',2025,'YEMEN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5342,'YUGP','REPORT_SUMMARY_DEL',2025,'KOSOVO'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5399,'ZAFP','REPORT_SUMMARY_DEL',2025,'SOUTH AFRICA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5413,'ZARK','REPORT_SUMMARY_DEL',2025,'CONGO DEMOCRATIC REP'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5343,'ZMBL','REPORT_SUMMARY_DEL',2025,'ZAMBIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5287,'ZWEH','REPORT_SUMMARY_DEL',2025,'ZIMBABWE'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5353,'KGZB','REPORT_SUMMARY_DEL',2025,'KYRGYZSTAN'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5354,'KHMP','REPORT_SUMMARY_DEL',2025,'CAMBODIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5326,'KORS','REPORT_SUMMARY_DEL',2025,'KOREA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5421,'KWTK','REPORT_SUMMARY_DEL',2025,'KUWAIT'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5355,'LAOV','REPORT_SUMMARY_DEL',2025,'LAOS'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5388,'LBNB','REPORT_SUMMARY_DEL',2025,'LEBANON'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5278,'LBRM','REPORT_SUMMARY_DEL',2025,'LIBERIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5327,'LBYT','REPORT_SUMMARY_DEL',2025,'LIBYA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5356,'LKAC','REPORT_SUMMARY_DEL',2025,'SRI LANKA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5372,'LSOM','REPORT_SUMMARY_DEL',2025,'LESOTHO'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5406,'MARR','REPORT_SUMMARY_DEL',2025,'MOROCCO'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5299,'MDAC','REPORT_SUMMARY_DEL',2025,'MOLDOVA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5279,'MDGA','REPORT_SUMMARY_DEL',2025,'MADAGASCAR'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5357,'MEXM','REPORT_SUMMARY_DEL',2025,'MEXICO'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5389,'MKDS','REPORT_SUMMARY_DEL',2025,'NORTH MACEDONIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5373,'MLIB','REPORT_SUMMARY_DEL',2025,'MALI'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5390,'MMRY','REPORT_SUMMARY_DEL',2025,'BURMA/MYANMAR'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5280,'MNEP','REPORT_SUMMARY_DEL',2025,'MONTENEGRO'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5414,'MNGU','REPORT_SUMMARY_DEL',2025,'MONGOLIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5300,'MOZM','REPORT_SUMMARY_DEL',2025,'MOZAMBIQUE'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5407,'MRTN','REPORT_SUMMARY_DEL',2025,'MAURITANIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5408,'MUSV','REPORT_SUMMARY_DEL',2025,'MAURITIUS'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5301,'MWIL','REPORT_SUMMARY_DEL',2025,'MALAWI'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5426,'PCM2','REPORT_SUMMARY_DEL',2025,'MD-PSD.PCM.2'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5288,'RM01','REPORT_SUMMARY_DEL',2025,'RM.01'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5427,'SCS1','REPORT_SUMMARY_DEL',2025,'RM.SCS.1'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5308,'SCS3','REPORT_SUMMARY_DEL',2025,'RM.SCS.3'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5264,'SCS4','REPORT_SUMMARY_DEL',2025,'RM.SCS.4'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5367,'SCS5','REPORT_SUMMARY_DEL',2025,'RM.SCS.5'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5344,'SCS6','REPORT_SUMMARY_DEL',2025,'RM.SCS.6'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5431,'SDP5','REPORT_SUMMARY_DEL',2025,'MD-PSD.SECDEFPOL.5'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5428,'SG3','REPORT_SUMMARY_DEL',2025,'SG.3'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5432,'STRAT','REPORT_SUMMARY_DEL',2025,'SG.STRAT'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5382,'ECUQ','REPORT_SUMMARY_DEL',2025,'ECUADOR'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5383,'EGYC','REPORT_SUMMARY_DEL',2025,'EGYPT'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5384,'ERIA','REPORT_SUMMARY_DEL',2025,'ERITREA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5318,'ETHA','REPORT_SUMMARY_DEL',2025,'ETHIOPIA'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5319,'ETHU','REPORT_SUMMARY_DEL',2025,'AU'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5336,'FJIS','REPORT_SUMMARY_DEL',2025,'FIJI'); +Insert into ERIGHTS.DELEGATION_CODES (ORG_ID,ORG_CODE,APPLICATION_VIEW,ORG_EXERCISE_ID,NAME) values (5345,'PRISM','REPORT_SUMMARY_DEL',2025,'MD-PSD.PCM.1'); + + + + + +CREATE OR REPLACE VIEW v_delegation_codes AS +SELECT * +FROM delegation_codes; + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.2.0/0003-summa_fund_source.sql b/e-rights-common/src/main/database/release/4.2.0/0003-summa_fund_source.sql new file mode 100644 index 0000000..fc8dd64 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.0/0003-summa_fund_source.sql @@ -0,0 +1,61 @@ +-- Drop if exists (optional, only for dev/testing) +BEGIN +EXECUTE IMMEDIATE 'DROP TABLE SUMMA_FUND_SOURCE'; +EXCEPTION + WHEN OTHERS THEN + IF SQLCODE != -942 THEN + RAISE; +END IF; +END; +/ + +-- Drop sequence if exists +BEGIN +EXECUTE IMMEDIATE 'DROP SEQUENCE SEQ_SUMMA_FUND_SOURCE'; +EXCEPTION + WHEN OTHERS THEN + IF SQLCODE != -2289 THEN + RAISE; +END IF; +END; +/ + +-- Create table +CREATE TABLE SUMMA_FUND_SOURCE ( + ID NUMBER NOT NULL, + ABAC_CODE VARCHAR2(10 CHAR) NOT NULL, + SUMMA_CODE VARCHAR2(100 CHAR), + DESCRIPTION VARCHAR2(500 CHAR), + BUDGET_REGIME VARCHAR2(5 CHAR), + CONSTRAINT PK_SUMMA_FUND_SOURCE PRIMARY KEY (ID) +); + +-- Create sequence for ID +CREATE SEQUENCE SEQ_SUMMA_FUND_SOURCE START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; + + + + +REM INSERTING into ERIGHTS.SUMMA_FUND_SOURCE +SET DEFINE OFF; +Insert into ERIGHTS.SUMMA_FUND_SOURCE (ID,ABAC_CODE,SUMMA_CODE,DESCRIPTION,BUDGET_REGIME) values (1,'C1','VOBU','VOBU','E.'); +Insert into ERIGHTS.SUMMA_FUND_SOURCE (ID,ABAC_CODE,SUMMA_CODE,DESCRIPTION,BUDGET_REGIME) values (2,'C4-A','IAR2/2','IAR2/2','E.'); +Insert into ERIGHTS.SUMMA_FUND_SOURCE (ID,ABAC_CODE,SUMMA_CODE,DESCRIPTION,BUDGET_REGIME) values (3,'C4-B','IAR1/1','IAR1/1','E.'); +Insert into ERIGHTS.SUMMA_FUND_SOURCE (ID,ABAC_CODE,SUMMA_CODE,DESCRIPTION,BUDGET_REGIME) values (4,'R0','EARN/N','EARN/N','E.'); +Insert into ERIGHTS.SUMMA_FUND_SOURCE (ID,ABAC_CODE,SUMMA_CODE,DESCRIPTION,BUDGET_REGIME) values (5,'C9','VOBU','VOBU R','R.'); + + + +UPDATE "ERIGHTS"."APP_PARAMETERS" SET PARAMETER_VALUE = 'BHR6' where PARAMETER_VALUE = 'EEAS.H.BHR6'; + + + + + + + + + +COMMIT; + + diff --git a/e-rights-common/src/main/database/release/4.2.0/0004-V_STAFFMEMBERS.sql b/e-rights-common/src/main/database/release/4.2.0/0004-V_STAFFMEMBERS.sql new file mode 100644 index 0000000..55eff17 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.0/0004-V_STAFFMEMBERS.sql @@ -0,0 +1,219 @@ + +CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_STAFFMEMBERS" ("PER_ID", "FIRST_NAME", "LAST_NAME", "GENDER", "EMAIL", "BIRTH_CITY", "BIRTH_COUNTRY_CODE", "BIRTH_COUNTRY_DESC", "RECRUITMENT_CITY", "RECRUITMENT_COUNTRY", "ORGANIZATION_NAME", "ORGANIZATION_CITY", "ORGANIZATION_COUNTRY", "ORG_ID", "JOB_ID", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "ORG_CD", "PRIVATE_EMAIL", "PRIVATE_EMAIL_SOURCE", "ORIGIN_CITY", "ORIGIN_COUNTRY_CODE", "ORIGIN_COUNTRY_DESC", "STATUTORY_LINK_CODE", "STATUTORY_LINK_DESC","USERID") AS +SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + p.assign_start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM p.assign_end_date) IN ( 9999, 2099 ) ) THEN + to_date(NULL) + ELSE + p.assign_end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email, + em.source AS private_email_source, + + o.place_of_origin AS origin_city, + o.country_code AS origin_country_code, + o.country_of_origin AS origin_country_desc, + p.lst_cd statutory_link_code, + p.lst_desc statutory_link_desc, + userid +FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id, + assign_start_date, + assign_end_date, + lst_cd, + lst_code lst_desc, + userid + FROM + mv_persons_eeas + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + userid + FROM + mv_persons_hist_eeas phe + WHERE + coalesce(phe.start_date, sysdate) = ( + SELECT + coalesce(MAX(phe2.start_date), sysdate) + FROM + mv_persons_hist_eeas phe2 + WHERE + phe.per_id = phe2.per_id + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities e ON p.org_id = e.org_id + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN v_persons_emails em ON em.per_id = p.per_id + LEFT JOIN v_places_of_origin o ON p.per_id = o.per_id +UNION ALL +SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + assign.start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM assign.end_date) IN ( 2099, 9999 ) ) THEN + to_date(NULL) + ELSE + assign.end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email, + em.source AS private_email_source, + o.place_of_origin origin_city, + o.country_code origin_country_code, + o.country_of_origin origin_country_desc, + p.lst_cd statutory_link_code, + p.lst_desc statutory_link_desc, + userid +FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id, + lst_cd, + lst_code lst_desc, + userid + FROM + mv_persons_com + WHERE + mv_persons_com.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL, + userid + FROM + mv_persons_hist_com phc + WHERE + coalesce(phc.start_date, sysdate) = ( + SELECT + coalesce(MAX(phc2.start_date), sysdate) + FROM + mv_persons_hist_com phc2 + WHERE + phc.per_id = phc2.per_id + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities_hist_com e ON p.org_id = e.org_id + AND trunc(sysdate) < trunc(e.end_date) + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_assignments_com assign ON assign.per_id = p.per_id + AND assign.toj_cd = 'AFF' + LEFT JOIN v_persons_emails em ON em.per_id = p.per_id + LEFT JOIN v_places_of_origin o ON p.per_id = o.per_id; + + +GRANT SELECT ON "ERIGHTS"."V_STAFFMEMBERS" TO "ERIGHTS_RO"; diff --git a/e-rights-common/src/main/database/release/4.2.0/0005- add summa conlumns in person_bank_account.sql b/e-rights-common/src/main/database/release/4.2.0/0005- add summa conlumns in person_bank_account.sql new file mode 100644 index 0000000..b9242fd --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.0/0005- add summa conlumns in person_bank_account.sql @@ -0,0 +1,5 @@ +ALTER TABLE PERSONS_BANK_INFO + ADD (BUSINESS_PARTNER VARCHAR2(200 CHAR)); + +ALTER TABLE PERSONS_BANK_INFO + ADD (BANK_IDENTIFICATION VARCHAR2(200 CHAR)); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.2.0/0006 allowance payments.sql b/e-rights-common/src/main/database/release/4.2.0/0006 allowance payments.sql new file mode 100644 index 0000000..c1e2d8c --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.0/0006 allowance payments.sql @@ -0,0 +1,134 @@ +-- ========================= +-- HEADER_ALLOWANCE_PAYMENT +-- ========================= +CREATE TABLE HEADER_ALLOWANCE_PAYMENT ( + ID NUMBER(19) NOT NULL, + RUN_ID VARCHAR2(255), + BATCH_ID VARCHAR2(255), + HR_REQUEST_ID VARCHAR2(255), + PAY_METHOD VARCHAR2(50), + VALUE VARCHAR2(255), + CONSTRAINT PK_HEADER_ALLOWANCE_PAYMENT PRIMARY KEY (ID) +); + +CREATE SEQUENCE SEQ_HEADER_ALLOWANCE_PAYMENT START WITH 1 INCREMENT BY 1 NOCACHE; + +-- ==================== +-- ALLOWANCE_PAYMENT +-- ==================== +CREATE TABLE ALLOWANCE_PAYMENT ( + ID NUMBER(19) NOT NULL, + HEADER_ID NUMBER(19) NOT NULL, + CONSTRAINT PK_ALLOWANCE_PAYMENT PRIMARY KEY (ID), + CONSTRAINT FK_AP_HEADER + FOREIGN KEY (HEADER_ID) + REFERENCES HEADER_ALLOWANCE_PAYMENT (ID) +); + +CREATE INDEX IDX_AP_HEADER ON ALLOWANCE_PAYMENT (HEADER_ID); + +CREATE SEQUENCE SEQ_ALLOWANCE_PAYMENT START WITH 1 INCREMENT BY 1 NOCACHE; + +-- ============================== +-- DETAILS_ALLOWANCE_PAYMENT +-- ============================== +CREATE TABLE DETAILS_ALLOWANCE_PAYMENT ( + ID NUMBER(19) NOT NULL, + REQUEST_DET_ID VARCHAR2(255), + BP_ID VARCHAR2(255), + BANK_ACCOUNT VARCHAR2(255), + REQUEST_HED_TITLE VARCHAR2(255), + QUANTITY VARCHAR2(255), + NET_AMOUNT_LCY NUMBER(19,4), + CURRENCY_CD_HED VARCHAR2(50), + BUDGET_LINE_HED VARCHAR2(255), + GL_ACCOUNT_HED VARCHAR2(255), + EMAIL_NOTIF VARCHAR2(255), + ALLOWANCE_PAYMENT_ID NUMBER(19) NOT NULL, + CONSTRAINT PK_DETAILS_ALLOWANCE_PAYMENT PRIMARY KEY (ID), + CONSTRAINT FK_DAP_AP + FOREIGN KEY (ALLOWANCE_PAYMENT_ID) + REFERENCES ALLOWANCE_PAYMENT (ID) +); + +CREATE INDEX IDX_DAP_AP ON DETAILS_ALLOWANCE_PAYMENT (ALLOWANCE_PAYMENT_ID); + +CREATE SEQUENCE SEQ_DETAILS_ALLOWANCE_PAYMENT START WITH 1 INCREMENT BY 1 NOCACHE; + + +ALTER TABLE ALLOWANCE_PAYMENT + ADD (REQUEST_ID NUMBER ); + + + + +--AUDIT TABLES + +-- ========================= +-- AUD_HEADER_ALLOWANCE_PAYMENT +-- ========================= + +CREATE TABLE AUD_HEADER_ALLOWANCE_PAYMENT ( + ID NUMBER(19) NOT NULL, + RUN_ID VARCHAR2(255), + BATCH_ID VARCHAR2(255), + HR_REQUEST_ID VARCHAR2(255), + PAY_METHOD VARCHAR2(50), + VALUE VARCHAR2(255) + +); + + + +-- ==================== +-- AUD_ALLOWANCE_PAYMENT +-- ==================== +CREATE TABLE AUD_ALLOWANCE_PAYMENT ( + ID NUMBER(19) NOT NULL, + HEADER_ID NUMBER(19) NOT NULL +); + + + + + +-- ============================== +-- AUD_DETAILS_ALLOWANCE_PAYMENT +-- ============================== +CREATE TABLE AUD_DETAILS_ALLOWANCE_PAYMENT ( + ID NUMBER(19) NOT NULL, + REQUEST_DET_ID VARCHAR2(255), + BP_ID VARCHAR2(255), + BANK_ACCOUNT VARCHAR2(255), + REQUEST_HED_TITLE VARCHAR2(255), + QUANTITY VARCHAR2(255), + NET_AMOUNT_LCY NUMBER(19,4), + CURRENCY_CD_HED VARCHAR2(50), + BUDGET_LINE_HED VARCHAR2(255), + GL_ACCOUNT_HED VARCHAR2(255), + EMAIL_NOTIF VARCHAR2(255), + ALLOWANCE_PAYMENT_ID NUMBER(19) NOT NULL +); + + +ALTER TABLE AUD_ALLOWANCE_PAYMENT + ADD (REQUEST_ID NUMBER ); + +ALTER TABLE ALLOWANCE_PAYMENT + ADD (PER_ID NUMBER ); + +ALTER TABLE AUD_ALLOWANCE_PAYMENT + ADD (PER_ID NUMBER ); + +CREATE SEQUENCE SEQ_ALLOWANCE_BATCH_ID + START WITH 1 + INCREMENT BY 1 + NOCACHE + NOCYCLE; + +CREATE SEQUENCE SEQ_ALLOWANCE_RUN_ID + START WITH 1 + INCREMENT BY 1 + NOCACHE + NOCYCLE; + diff --git a/e-rights-common/src/main/database/release/4.2.0/0007 app parameters.sql b/e-rights-common/src/main/database/release/4.2.0/0007 app parameters.sql new file mode 100644 index 0000000..86995d7 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.0/0007 app parameters.sql @@ -0,0 +1,30 @@ +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('71', 'SUMMA', 'CLIENT_ID', '2'); + + +UPDATE APP_PARAMETERS +SET PARAMETER_TYPE = 'SUMMA' +WHERE PARAMETER_TYPE = 'ABAC'; +commit; + +update app_parameters set parameter_value = '65151000' + where parameter_key = 'GL_ACCOUNT'; + +update app_parameters set parameter_value = 'BHR6' +where parameter_key = 'RESPONSIBLE_ORGANISATION_NAME_BS4'; + + + +---Attention this query differ from test/acc and prd +---PRD +insert into app_parameters (parameter_id, parameter_type, parameter_key, parameter_value) values ('72', 'ADVANCE_REMOVAL', 'P2P_ORDER_URL', 'https://p2p.exact.com/EEAS/net/Order/Form/Order.aspx?ID='); +insert into app_parameters (parameter_id, parameter_type, parameter_key, parameter_value) values ('73', 'SUMMA', 'P2P_ORDER_URL', 'https://p2p.exact.com/EEAS/net/Order/Form/Order.aspx?ID='); + +---i will leave the prd uncomented + +--ACC +--insert into app_parameters (parameter_id, parameter_type, parameter_key, parameter_value) values ('72', 'ADVANCE_REMOVAL', 'P2P_ORDER_URL', 'https://ota.proquro.nl/Proquro_EU_Test/net/Order/Form/Order.aspx?ID='); +--insert into app_parameters (parameter_id, parameter_type, parameter_key, parameter_value) values ('73', 'SUMMA', 'P2P_ORDER_URL', 'https://ota.proquro.nl/Proquro_EU_Test/net/Order/Form/Order.aspx?ID='); + +--TEST +--insert into app_parameters (parameter_id, parameter_type, parameter_key, parameter_value) values ('72', 'ADVANCE_REMOVAL', 'P2P_ORDER_URL', 'https://p2p.exact.com/EU/net/Order/Form/Order.aspx?ID='); +--insert into app_parameters (parameter_id, parameter_type, parameter_key, parameter_value) values ('73', 'SUMMA', 'P2P_ORDER_URL', 'https://p2p.exact.com/EU/net/Order/Form/Order.aspx?ID='); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.2.0/0008 Order response.sql b/e-rights-common/src/main/database/release/4.2.0/0008 Order response.sql new file mode 100644 index 0000000..26d3aa7 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.0/0008 Order response.sql @@ -0,0 +1,199 @@ +-------------------------------------------------------- +-- DDL for Table ORDER_RESPONSE +-------------------------------------------------------- + +CREATE TABLE ORDER_RESPONSE ( + ID NUMBER(19,0) NOT NULL, + ORDER_ID NUMBER(10,0), + MESSAGE VARCHAR2(4000 CHAR), + ALLOWANCE_REQUEST_ID NUMBER(19,0), + REQUEST_ID NUMBER(19,0), + PER_ID NUMBER(19,0), + CONSTRAINT PK_ORDER_RESPONSE PRIMARY KEY (ID) +); + +-------------------------------------------------------- +-- Sequence for ID generation +-------------------------------------------------------- + +CREATE SEQUENCE SEQ_ORDER_RESPONSE + START WITH 1 + INCREMENT BY 1 + NOCACHE + NOCYCLE; + +CREATE SEQUENCE SEQ_ORDER_STATUS_RESPONSE + START WITH 1 + INCREMENT BY 1 + NOCACHE + NOCYCLE; + + + +COMMENT ON TABLE ORDER_RESPONSE IS 'Stores responses from P2P Hub order submissions'; +COMMENT ON COLUMN ORDER_RESPONSE.ID IS 'Primary key generated from SEQ_ORDER_RESPONSE'; +COMMENT ON COLUMN ORDER_RESPONSE.ORDER_ID IS 'External order identifier from P2P Hub'; +COMMENT ON COLUMN ORDER_RESPONSE.MESSAGE IS 'Response message or status description'; +COMMENT ON COLUMN ORDER_RESPONSE.ALLOWANCE_REQUEST_ID IS 'Reference to Allowance Payment Request'; +COMMENT ON COLUMN ORDER_RESPONSE.REQUEST_ID IS 'Internal request identifier'; +COMMENT ON COLUMN ORDER_RESPONSE.PER_ID IS 'Person identifier'; + + + + +ALTER TABLE ERIGHTS.ORDER_RESPONSE + ADD CONSTRAINT FK_ORDER_RESPONSE_ALLOWANCE_PAYMENT + FOREIGN KEY (ID) + REFERENCES ERIGHTS.ALLOWANCE_PAYMENT (ID); + + + +CREATE TABLE ERIGHTS.ORDER_STATUS_RESPONSE +( + ID NUMBER(19,0) NOT NULL ENABLE, + ORDER_ID NUMBER(10,0), + ORDER_STATUS VARCHAR2(255 CHAR), + LAST_MODIFICATION_DATE DATE, + ORDER_COMMENT VARCHAR2(4000 CHAR), + CONSTRAINT PK_ORDER_STATUS_RESPONSE PRIMARY KEY (ID) + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE ERIGHTS ENABLE +) + SEGMENT CREATION DEFERRED +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 +NOCOMPRESS LOGGING +TABLESPACE ERIGHTS; + + +ALTER TABLE ERIGHTS.ORDER_STATUS_RESPONSE + ADD (ORDER_RESPONSE_ID NUMBER(19,0)); + +CREATE INDEX IDX_STATUS_ORDER_RESPONSE + ON ERIGHTS.ORDER_STATUS_RESPONSE (ORDER_RESPONSE_ID); + +ALTER TABLE ERIGHTS.ORDER_STATUS_RESPONSE + ADD CONSTRAINT FK_STATUS_ORDER_RESPONSE + FOREIGN KEY (ORDER_RESPONSE_ID) + REFERENCES ERIGHTS.ORDER_RESPONSE (ID) + ENABLE; + + +CREATE TABLE "ERIGHTS"."AUD_ORDER_STATUS_RESPONSE" +( "ID" NUMBER(19,0) NOT NULL ENABLE, + "ORDER_ID" NUMBER(10,0), + "ORDER_STATUS" VARCHAR2(255 CHAR), + "LAST_MODIFICATION_DATE" DATE, + "ORDER_COMMENT" VARCHAR2(4000 CHAR), + "ORDER_RESPONSE_ID" NUMBER(19,0) +) ; + +CREATE TABLE "ERIGHTS"."AUD_ORDER_RESPONSE" +( "ID" NUMBER(19,0) NOT NULL ENABLE, + "ORDER_ID" NUMBER(10,0), + "MESSAGE" VARCHAR2(4000 CHAR), + "ALLOWANCE_REQUEST_ID" NUMBER(19,0), + "REQUEST_ID" NUMBER(19,0), + "PER_ID" NUMBER(19,0) +); + + +CREATE SEQUENCE ERIGHTS.SEQ_ORDER_ERROR_RESPONSE + START WITH 1 + INCREMENT BY 1 + NOCACHE + NOCYCLE; + +CREATE TABLE ERIGHTS.ORDER_ERROR_RESPONSE ( + ID NUMBER(19,0) NOT NULL, + ORDER_ID NUMBER(10,0), + MESSAGE VARCHAR2(4000), + ALLOWANCE_REQUEST_ID NUMBER(19,0), + PER_ID NUMBER(19,0), + ERROR_CODE VARCHAR2(255), + ERROR_TEXT VARCHAR2(4000), + + + CREATED_BY NUMBER, + CREATED_AT DATE, + UPDATED_BY NUMBER, + UPDATED_AT DATE, + + CONSTRAINT PK_ORDER_ERROR_RESPONSE PRIMARY KEY (ID) +); + + +ALTER TABLE ORDER_RESPONSE ADD (ALLOWANCE_PAYMENT_ID NUMBER(19)); + +ALTER TABLE AUD_ORDER_RESPONSE ADD (ALLOWANCE_PAYMENT_ID NUMBER(19)); + +ALTER TABLE ORDER_RESPONSE +DROP CONSTRAINT FK_ORDER_RESPONSE_ALLOWANCE_PAYMENT; + +ALTER TABLE ORDER_RESPONSE + ADD CONSTRAINT FK_ORDER_RESPONSE_ALLOWANCE_PAYMENT + FOREIGN KEY (ALLOWANCE_PAYMENT_ID) + REFERENCES ALLOWANCE_PAYMENT(ID); + + + +ALTER TABLE AUD_ORDER_STATUS_RESPONSE + ADD ( + REV NUMBER(10,0), + REVTYPE NUMBER(3,0) + ); + +ALTER TABLE AUD_ORDER_RESPONSE + ADD ( + REV NUMBER(10,0), + REVTYPE NUMBER(3,0) + ); + +ALTER TABLE AUD_ALLOWANCE_PAYMENT + ADD ( + REV NUMBER(10,0), + REVTYPE NUMBER(3,0) + ); + +ALTER TABLE AUD_HEADER_ALLOWANCE_PAYMENT + ADD ( + REV NUMBER(10,0), + REVTYPE NUMBER(3,0) + ); + +ALTER TABLE AUD_DETAILS_ALLOWANCE_PAYMENT + ADD ( + REV NUMBER(10,0), + REVTYPE NUMBER(3,0) + ); + + +ALTER TABLE ORDER_RESPONSE + ADD ( + ORDER_STATUS VARCHAR2(50), + ORDER_COMMENT VARCHAR2(255), + LAST_MODIFICATION_DATE DATE + ); + + +ALTER TABLE AUD_ORDER_RESPONSE + ADD ( + ORDER_STATUS VARCHAR2(50), + ORDER_COMMENT VARCHAR2(255), + LAST_MODIFICATION_DATE DATE + ); + + +ALTER TABLE ERIGHTS.ORDER_ERROR_RESPONSE + RENAME COLUMN ALLOWANCE_REQUEST_ID TO REQUEST_ID; + + + +ALTER TABLE ORDER_RESPONSE + MODIFY ( + ORDER_COMMENT VARCHAR2(4000) + ); + +ALTER TABLE AUD_ORDER_RESPONSE + MODIFY ( + ORDER_COMMENT VARCHAR2(4000) + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.2.0/0009 add auditint fields.sql b/e-rights-common/src/main/database/release/4.2.0/0009 add auditint fields.sql new file mode 100644 index 0000000..b569934 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.0/0009 add auditint fields.sql @@ -0,0 +1,78 @@ +ALTER TABLE AUD_ORDER_STATUS_RESPONSE ADD ( + CREATED_BY NUMBER, + CREATED_AT DATE, + UPDATED_BY NUMBER, + UPDATED_AT DATE +); + +-- Add audit columns to ORDER_STATUS_RESPONSE +ALTER TABLE ORDER_STATUS_RESPONSE ADD ( + CREATED_BY NUMBER, + CREATED_AT DATE, + UPDATED_BY NUMBER, + UPDATED_AT DATE +); + +-- Add audit columns to ORDER_RESPONSE +ALTER TABLE ORDER_RESPONSE ADD ( + CREATED_BY NUMBER, + CREATED_AT DATE, + UPDATED_BY NUMBER, + UPDATED_AT DATE +); + +-- Add audit columns to AUD_ORDER_RESPONSE +ALTER TABLE AUD_ORDER_RESPONSE ADD ( + CREATED_BY NUMBER, + CREATED_AT DATE, + UPDATED_BY NUMBER, + UPDATED_AT DATE +); + +-- Add audit columns to ALLOWANCE_PAYMENT +ALTER TABLE ALLOWANCE_PAYMENT ADD ( + CREATED_BY NUMBER, + CREATED_AT DATE, + UPDATED_BY NUMBER, + UPDATED_AT DATE +); + +-- Add audit columns to AUD_ALLOWANCE_PAYMENT +ALTER TABLE AUD_ALLOWANCE_PAYMENT ADD ( + CREATED_BY NUMBER, + CREATED_AT DATE, + UPDATED_BY NUMBER, + UPDATED_AT DATE +); + +-- Add audit columns to HEADER_ALLOWANCE_PAYMENT +ALTER TABLE HEADER_ALLOWANCE_PAYMENT ADD ( + CREATED_BY NUMBER, + CREATED_AT DATE, + UPDATED_BY NUMBER, + UPDATED_AT DATE +); + +-- Add audit columns to AUD_HEADER_ALLOWANCE_PAYMENT +ALTER TABLE AUD_HEADER_ALLOWANCE_PAYMENT ADD ( + CREATED_BY NUMBER, + CREATED_AT DATE, + UPDATED_BY NUMBER, + UPDATED_AT DATE +); + +-- Add audit columns to DETAILS_ALLOWANCE_PAYMENT +ALTER TABLE DETAILS_ALLOWANCE_PAYMENT ADD ( + CREATED_BY NUMBER, + CREATED_AT DATE, + UPDATED_BY NUMBER, + UPDATED_AT DATE +); + +-- Add audit columns to AUD_DETAILS_ALLOWANCE_PAYMENT +ALTER TABLE AUD_DETAILS_ALLOWANCE_PAYMENT ADD ( + CREATED_BY NUMBER, + CREATED_AT DATE, + UPDATED_BY NUMBER, + UPDATED_AT DATE +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.2.0/0010 v_allowances.sql b/e-rights-common/src/main/database/release/4.2.0/0010 v_allowances.sql new file mode 100644 index 0000000..08120b6 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.0/0010 v_allowances.sql @@ -0,0 +1,58 @@ + +CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_ALLOWANCES" ("REQUEST_ID", "DECLARATION_ID", "MOVEMENT_FILE_ID", "ENTITLMNT_TYPE_ID", "REQUEST_STRING_ID", "CREATED_AT", "STATE", "CALC_TOTAL_AMOUNT", "CALC_TOTAL_AMOUNT_CURRENCY", "TOTAL_AMOUNT", "TOTAL_AMOUNT_CURRENCY", "ENTITLEMENT", "LAST_NAME", "FIRST_NAME", "START_DATE", "CITY_TO", "COUNTRY_TO", "FILE_ID", "REQUEST_TYPE", "CITY_CODE_FROM", "CITY_FROM", "COUNTRY_CODE_FROM", "COUNTRY_FROM", "ORG_CD_FROM", "ORG_ID_FROM", "PAYMENT_REQUEST", "PAYMENT_ORDER", "BUDGET_LINE", "PRIORITY", "DELEGATION_ORG_ID_FROM", "PER_ID", "ABAC_STATE", "ABAC_WORKFLOW_STATE","P2P_HUB_ORDER_ID","P2P_HUB_ORDER_STATUS") AS +SELECT + r.request_id, + d.declaration_id, + f.movement_file_id, + et.entitlmnt_type_id, + r.request_string_id, + r.created_at, + r.state, + r.calc_total_amount, + r.calc_total_amount_currency, + r.total_amount, + r.total_amount_currency, + etc.description entitlement, + p.last_name, + p.first_name, + f.start_date, + ct_to.description_en city_to, + c_to.name_en country_to, + f.file_id, + r.request_type, + f.city_code_from, + ct_from.description_en city_from, + f.country_code_from, + c_from.name_en country_from, + f.org_cd_from, + f.org_id_from, + r.payment_request, + r.payment_order, + f.budget_line, + f.priority, + f.delegation_org_id_from, + f.per_id per_id, + r.ABAC_STATE, + CASE + WHEN ABAC_STATE = 'FAILED' THEN 'FAILED' + WHEN ABAC_STATE is null THEN null + ELSE ABAC_WORKFLOW_STATE + END AS ABAC_WORKFLOW_STATE, + r.P2P_HUB_ORDER_ID, + r.P2P_HUB_ORDER_STATUS +FROM + requests r + INNER JOIN declaration d ON ( r.declaration_id = d.declaration_id ) + INNER JOIN movement_files f ON ( d.movement_file_id = f.movement_file_id ) + INNER JOIN entitlmnt_types et ON ( r.entitlmnt_type_id = et.entitlmnt_type_id ) + INNER JOIN entitlmnt_types_cat etc ON ( et.entitlmnt_type_catg_id = etc.entitlmnt_type_cat_id ) + INNER JOIN v_people p ON ( f.per_id = p.per_id ) + INNER JOIN mv_countries c_to ON ( f.country_code_to = c_to.country_code ) + INNER JOIN mv_cities ct_to ON ( f.city_code_to = ct_to.city_code + AND f.country_code_to = ct_to.country_code ) + INNER JOIN mv_countries c_from ON ( f.country_code_from = c_from.country_code ) + INNER JOIN mv_cities ct_from ON ( f.city_code_from = ct_from.city_code + AND f.country_code_from = ct_from.country_code ); + + +GRANT SELECT ON "ERIGHTS"."V_ALLOWANCES" TO "ERIGHTS_RO"; diff --git a/e-rights-common/src/main/database/release/4.2.0/0011_truncate_user_preferences.sql b/e-rights-common/src/main/database/release/4.2.0/0011_truncate_user_preferences.sql new file mode 100644 index 0000000..9770141 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.0/0011_truncate_user_preferences.sql @@ -0,0 +1 @@ +truncate table "ERIGHTS"."USER_PREFERENCES" drop storage; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.2.0/0013_order_comment_display.sql b/e-rights-common/src/main/database/release/4.2.0/0013_order_comment_display.sql new file mode 100644 index 0000000..2d4bd87 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.0/0013_order_comment_display.sql @@ -0,0 +1,6 @@ +ALTER TABLE REQUESTS + ADD (ORDER_COMMENT VARCHAR2(4000) ); + + +ALTER TABLE AUD_REQUESTS + ADD (ORDER_COMMENT VARCHAR2(4000) ); diff --git a/e-rights-common/src/main/database/release/4.2.0/0015 mapping of subpossts.sql b/e-rights-common/src/main/database/release/4.2.0/0015 mapping of subpossts.sql new file mode 100644 index 0000000..e2c5bce --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.0/0015 mapping of subpossts.sql @@ -0,0 +1,156 @@ +CREATE TABLE BUDGET_LINES_SUBPOSTS_MAPPING_BKP_20260127 AS +SELECT * +FROM BUDGET_LINES_SUBPOSTS_MAPPING; +-------------------------------------------------------- +-- DDL for Table BUDGET_LINES_SUBPOSTS_MAPPING +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for Table BUDGET_LINES_SUBPOSTS_MAPPING +-------------------------------------------------------- +DROP TABLE BUDGET_LINES_SUBPOSTS_MAPPING; + + +CREATE TABLE "BUDGET_LINES_SUBPOSTS_MAPPING" +( "BUDGET_LINES_SUBPOSTS_MAPPING_ID" NUMBER, + "BUDGET_LINES" VARCHAR2(200 BYTE), + "BUDGET_POSITION_BUDGDEL" VARCHAR2(100 BYTE), + "BUDGET_POSITION_ERIGHTS" VARCHAR2(100 BYTE), + "FUND_SOURCE" VARCHAR2(20 BYTE), + "REQUEST_TYPE" VARCHAR2(50 BYTE), + "STATUTORY_LINK" VARCHAR2(20 BYTE), + "SUBPOST_CODE" VARCHAR2(50 BYTE), + "SUBPOST_DESCRIPTION" VARCHAR2(1000 BYTE), + "PERSONNEL_TYPE_ID" NUMBER, + "LST_CD" VARCHAR2(3 BYTE), + "SUBPOST_TYPE" VARCHAR2(50 BYTE), + "MOVEMENT_CONTEXT" VARCHAR2(50 BYTE), + "COMMITMENT_LVL_4" VARCHAR2(200 BYTE), + "EARMARKED_FUND" VARCHAR2(200 BYTE), + "SUMMA_FUND_SOURCE_ID" NUMBER, + "BUDGET_PERIODS" VARCHAR2(200 BYTE) +) SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; + +CREATE SEQUENCE SEQ_BUDGET_LINES_SUBPOSTS_MAPPING + START WITH 1000 + INCREMENT BY 1 + NOCACHE + NOCYCLE; + +-------------------------------------------------------- +-- DDL for Table BUDGET_LINES_SUBPOSTS_MAPPING +-------------------------------------------------------- +REM INSERTING into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING +SET DEFINE OFF; +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (1,'3002','3000-C1-EEAS','3002','VOBU','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST,A6004',null,1,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (2,'3002','3000-C1-EEAS','3002','VOBU','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST,A6004',null,1,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (3,'3002','3000-C1-EEAS','3002','VOBU','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST,A6004',null,1,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (4,'3002','3001-C1-EEAS','3002','VOBU','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST,A6004',null,1,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (5,'3002','3001-C1-EEAS','3002','VOBU','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST,A6004',null,1,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (6,'3002','3001-C1-EEAS','3002','VOBU','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST,A6004',null,1,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (7,'3002','3002-C1-EEAS','3002','VOBU','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST,A6004',null,1,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (8,'3002','3002-C1-EEAS','3002','VOBU','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST,A6004',null,1,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (9,'3002','3002-C1-EEAS','3002','VOBU','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST,A6004',null,1,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (10,'3005.0101RTD','3005.0101RTD','3005.01.01.RTD','IAR1/1','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST,B3401',null,3,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (11,'3005.0101RTD','3005.0101RTD','3005.01.01.RTD','IAR1/1','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST,B3401',null,3,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (12,'3005.0101RTD','3005.0101RTD','3005.01.01.RTD','IAR1/1','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST,B3401',null,3,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (13,'3005.0220CNT','3005.0220CNT','3005.02.20.CNT','IAR1/1','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401,ROTCST',null,3,'2025,2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (14,'3005.0220CNT','3005.0220CNT','3005.02.20.CNT','IAR1/1','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401,ROTCST',null,3,'2025,2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (15,'3005.0220CNT','3005.0220CNT','3005.02.20.CNT','IAR1/1','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401,ROTCST',null,3,'2025,2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (16,'3005.0801MAR','3005.08.01.MAR','3005.08.01.MAR','IAR1/1','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST,B3401',null,3,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (17,'3005.0801MAR','3005.08.01.MAR','3005.0801MAR','IAR1/1','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST,B3401',null,3,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (18,'3005.0801MAR','3005.08.01.MAR','3005.0801MAR','IAR1/1','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST,B3401',null,3,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (19,'3005.1401EST','3005.14.01.EST','3005.1401EST','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (20,'3005.1401EST','3005.14.01.EST','3005.1401EST','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (21,'3005.1401EST','3005.14.01.EST','3005.1401EST','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (22,'3005.1401FPI','3005.14.01.FPI','3005.1401FPI','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST,B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (23,'3005.1401FPI','3005.14.01.FPI','3005.1401FPI','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST,B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (24,'3005.1401FPI','3005.14.01.FPI','3005.1401FPI','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST,B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (25,'3005.1401INT','3005.14.01.INT','3005.1401INT','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST,B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (26,'3005.1401INT','3005.14.01.INT','3005.1401INT','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST,B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (27,'3005.1401INT','3005.14.01.INT','3005.1401INT','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST,B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (28,'3005.1401MEN','3005.14.01.MEN','3005.1401MEN','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (29,'3005.1401MEN','3005.14.01.MEN','3005.1401MEN','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (30,'3005.1401MEN','3005.14.01.MEN','3005.1401MEN','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (31,'3005.1401NEA','3005.14.01.NEA','3005.1401NEA','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (32,'3005.1401NEA','3005.14.01.NEA','3005.1401NEA','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (33,'3005.1401NEA','3005.14.01.NEA','3005.1401NEA','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (34,'3005.1501AGR','3005.15.01.AGR','3005.1501AGR','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (35,'3005.1501AGR','3005.15.01.AGR','3005.1501AGR','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (36,'3005.1501AGR','3005.15.01.AGR','3005.1501AGR','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (37,'3005.1501EST','3005.15.01.EST','3005.1501EST','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (38,'3005.1501EST','3005.15.01.EST','3005.1501EST','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (39,'3005.1501EST','3005.15.01.EST','3005.1501EST','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (40,'3005.15.01.NEA-RO','3005.15.01.EST.R0','3005.1501NEA','EARN/N','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (41,'3005.15.01.NEA-RO','3005.15.01.EST.R0','3005.1501NEA','EARN/N','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (42,'3005.15.01.NEA-RO','3005.15.01.EST.R0','3005.1501NEA','EARN/N','REM','Officials and CA','52','EXPAT STAFF - STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (43,'3005.1501NEA','3005.15.01.NEA','3005.1501NEA','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (44,'3005.1501NEA','3005.15.01.NEA','3005.1501NEA','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (45,'3005.1501NEA','3005.15.01.NEA','3005.1501NEA','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (46,'3005.15.01.NEA-RO','3005.15.01.NEA.R0','3005.1501NEA','EARN/N','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (47,'3005.15.01.NEA-RO','3005.15.01.NEA.R0','3005.1501NEA','EARN/N','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (48,'3005.15.01.NEA-RO','3005.15.01.NEA.R0','3005.1501NEA','EARN/N','REM','Officials and CA','52','EXPAT STAFF - STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (49,'3005.1502EST','3005.15.02.EST','3005.1502EST','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (50,'3005.1502EST','3005.15.02.EST','3005.1502EST','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (51,'3005.1502EST','3005.15.02.EST','3005.1502EST','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (52,'3005.1502NEA','3005.15.02.NEA','3005.1502NEA','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (53,'3005.1502NEA','3005.15.02.NEA','3005.1502NEA','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (54,'3005.1502NEA','3005.15.02.NEA','3005.1502NEA','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (55,'3005.1601EST','3005.16.01.EST','3005.1601EST','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (56,'3005.1601EST','3005.16.01.EST','3005.1601EST','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (57,'3005.1601EST','3005.16.01.EST','3005.1601EST','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (58,'3005.1601NEA','3005.16.01.NEA','3005.1601NEA','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (59,'3005.1601NEA','3005.16.01.NEA','3005.1601NEA','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (60,'3005.1601NEA','3005.16.01.NEA','3005.1601NEA','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401',null,2,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (61,'3005.16T3INT','3005.16.T3.INT','3005.16T3INT','EARN/N','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (62,'3005.16T3INT','3005.16.T3.INT','3005.16T3INT','EARN/N','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (63,'3005.16T3INT','3005.16.T3.INT','3005.16T3INT','EARN/N','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (64,'3005.16T4MEN','3005.16.T4.MEN','3005.16T4MEN','EARN/N','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (65,'3005.16T4MEN','3005.16.T4.MEN','3005.16T4MEN','EARN/N','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (66,'3005.16T4MEN','3005.16.T4.MEN','3005.16T4MEN','EARN/N','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (67,'3005.16T4NEA-R0','3005.16.T4.MEN-R0','3005.16T4NEA','EARN/N','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (68,'3005.16T4NEA-R0','3005.16.T4.MEN-R0','3005.16T4NEA','EARN/N','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (69,'3005.16T4NEA-R0','3005.16.T4.MEN-R0','3005.16T4NEA','EARN/N','REM','Officials and CA','52','EXPAT STAFF - STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (70,'3005.16T4NEA','3005.16.T4.NEA','3005.16T4NEA','EARN/N','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (71,'3005.16T4NEA','3005.16.T4.NEA','3005.16T4NEA','EARN/N','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (72,'3005.16T4NEA','3005.16.T4.NEA','3005.16T4NEA','EARN/N','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (73,'3005.16T5INT','3005.16.T5.INT','3005.16T5INT','EARN/N','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST,B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (74,'3005.16T5INT','3005.16.T5.INT','3005.16T5INT','EARN/N','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST,B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (75,'3005.16T5INT','3005.16.T5.INT','3005.16T5INT','EARN/N','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST,B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (76,'3005.16T5NEA','3005.16.T5.MEN','3005.16T5NEA','EARN/N','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (77,'3005.16T5NEA','3005.16.T5.MEN','3005.16T5NEA','EARN/N','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (78,'3005.16T5NEA','3005.16.T5.MEN','3005.16T5NEA','EARN/N','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (79,'3005.16T5NEA','3005.16.T5.NEA','3005.16T5NEA','EARN/N','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (80,'3005.16T5NEA','3005.16.T5.NEA','3005.16T5NEA','EARN/N','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (81,'3005.16T5NEA','3005.16.T5.NEA','3005.16T5NEA','EARN/N','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (82,'3005.16T6INT','3005.16.T6.INT','3005.16T6INT','EARN/N','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST,B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (83,'3005.16T6INT','3005.16.T6.INT','3005.16T6INT','EARN/N','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST,B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (84,'3005.16T6INT','3005.16.T6.INT','3005.16T6INT','EARN/N','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST,B3401',null,4,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (85,'3005.2001INT','3005.20.01.INT','3005.2001INT','IAR1/1','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST,B3104',null,3,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (86,'3005.2001INT','3005.20.01.INT','3005.2001INT','IAR1/1','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST,B3104',null,3,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (87,'3005.2001INT','3005.20.01.INT','3005.2001INT','IAR1/1','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST,B3104',null,3,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (88,'3005.2002INT','3005.20.02.INT','3005.2002INT','IAR1/1','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST,B3203',null,3,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (89,'3005.2002INT','3005.20.02.INT','3005.2002INT','IAR1/1','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST,B3203',null,3,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (90,'3005.2002INT','3005.20.02.INT','3005.2002INT','IAR1/1','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST,B3203',null,3,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (91,'3005.2003INT','3005.20.03.INT','3005.2003INT','IAR1/1','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST,B3306',null,3,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (92,'3005.2003INT','3005.20.03.INT','3005.2003INT','IAR1/1','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST,B3306',null,3,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (93,'3005.2003INT','3005.20.03.INT','3005.2003INT','IAR1/1','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST,B3306',null,3,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (94,'3005.2003OLA','3005.20.03.OLA','3005.2003OLA','IAR1/1','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401',null,3,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (95,'3005.2003OLA','3005.20.03.OLA','3005.2003OLA','IAR1/1','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401',null,3,'2026'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_ERIGHTS,BUDGET_POSITION_BUDGDEL,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS) values (96,'3005.2003OLA','3005.20.03.OLA','3005.2003OLA','IAR1/1','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401',null,3,'2026'); +commit; + + + +ALTER TABLE REQUEST_SUBPOSTS + ADD (COMMITMENT_LVL_4 VARCHAR2(200) ); + + +ALTER TABLE REQUEST_SUBPOSTS + ADD (EARMARKED_FUND VARCHAR2(200) ); + diff --git a/e-rights-common/src/main/database/release/4.2.0/0016 disable_local_payment.sql b/e-rights-common/src/main/database/release/4.2.0/0016 disable_local_payment.sql new file mode 100644 index 0000000..9ba17ee --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.0/0016 disable_local_payment.sql @@ -0,0 +1,3 @@ + +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('74', 'SUMMA', 'DISABLE_LOCAL_PAYMENT', 'Y'); +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.2.0/0018_payment_directive.sql b/e-rights-common/src/main/database/release/4.2.0/0018_payment_directive.sql new file mode 100644 index 0000000..744ae50 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.0/0018_payment_directive.sql @@ -0,0 +1,6 @@ +ALTER TABLE REQUESTS + ADD (PAYMENT_DIRECTIVE VARCHAR2(200) ); + +ALTER TABLE AUD_REQUESTS + ADD (PAYMENT_DIRECTIVE VARCHAR2(200) ); + diff --git a/e-rights-common/src/main/database/release/4.2.1/0001 subpost mapping.sql b/e-rights-common/src/main/database/release/4.2.1/0001 subpost mapping.sql new file mode 100644 index 0000000..39186f3 --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.1/0001 subpost mapping.sql @@ -0,0 +1,203 @@ +DROP TABLE "ERIGHTS"."BUDGET_LINES_SUBPOSTS_MAPPING"; +-------------------------------------------------------- +-- DDL for Table BUDGET_LINES_SUBPOSTS_MAPPING +-------------------------------------------------------- + +CREATE TABLE "ERIGHTS"."BUDGET_LINES_SUBPOSTS_MAPPING" +( "BUDGET_LINES_SUBPOSTS_MAPPING_ID" NUMBER, + "BUDGET_LINES" VARCHAR2(200 BYTE), + "BUDGET_POSITION_BUDGDEL" VARCHAR2(100 BYTE), + "BUDGET_POSITION_ERIGHTS" VARCHAR2(100 BYTE), + "FUND_SOURCE" VARCHAR2(20 BYTE), + "REQUEST_TYPE" VARCHAR2(50 BYTE), + "STATUTORY_LINK" VARCHAR2(20 BYTE), + "SUBPOST_CODE" VARCHAR2(50 BYTE), + "SUBPOST_DESCRIPTION" VARCHAR2(1000 BYTE), + "PERSONNEL_TYPE_ID" NUMBER, + "LST_CD" VARCHAR2(3 BYTE), + "SUBPOST_TYPE" VARCHAR2(50 BYTE), + "MOVEMENT_CONTEXT" VARCHAR2(50 BYTE), + "COMMITMENT_LVL_4" VARCHAR2(200 BYTE), + "EARMARKED_FUND" VARCHAR2(200 BYTE), + "SUMMA_FUND_SOURCE_ID" NUMBER, + "BUDGET_PERIODS" VARCHAR2(200 BYTE), + "DEFAULT_EARMARKED_FUND" CHAR(1 BYTE) + ) SEGMENT CREATION IMMEDIATE + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +REM INSERTING into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING +SET DEFINE OFF; +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10097,'3005.1601EST','3005.1601EST','3005.16.01.EST','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','3100015578',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10098,'3005.1601EST','3005.1601EST','3005.16.01.EST','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','3100015578',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10099,'3005.1601EST','3005.1601EST','3005.16.01.EST','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','3100015578',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10100,'3005.1601NEA','3005.1601NEA','3005.16.01.NEA','IAR2/2','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100018576',2,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10101,'3005.1601NEA','3005.1601NEA','3005.16.01.NEA','IAR2/2','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100018576',2,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10102,'3005.1601NEA','3005.1601NEA','3005.16.01.NEA','IAR2/2','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100018576',2,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10106,'3005.16T4MEN','3005.16T4MEN','3005.16.T4.MEN','EARN/N','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','3100014075',4,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10108,'3005.16T4MEN','3005.16T4MEN','3005.16.T4.MEN','EARN/N','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','3100014075',4,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10107,'3005.16T4MEN','3005.16T4MEN','3005.16.T4.MEN','EARN/N','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','3100014075',4,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10110,'3005.16T4NEA-R0','3005.16T4NEA','3005.16.T4.MEN-R0','EARN/N','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100017541',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10109,'3005.16T4NEA-R0','3005.16T4NEA','3005.16.T4.MEN-R0','EARN/N','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100017541',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10111,'3005.16T4NEA-R0','3005.16T4NEA','3005.16.T4.MEN-R0','EARN/N','REM','Officials and CA','03','EXPAT STAFF - STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100017541',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10103,'3005.16T3INT','3005.16T3INT','3005.16.T3.INT','EARN/N','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100019024',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10104,'3005.16T3INT','3005.16T3INT','3005.16.T3.INT','EARN/N','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100019024',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10105,'3005.16T3INT','3005.16T3INT','3005.16.T3.INT','EARN/N','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100019024',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10113,'3005.16T4NEA','3005.16T4NEA','3005.16.T4.NEA','EARN/N','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100019002',4,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10114,'3005.16T4NEA','3005.16T4NEA','3005.16.T4.NEA','EARN/N','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100019002',4,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10112,'3005.16T4NEA','3005.16T4NEA','3005.16.T4.NEA','EARN/N','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100019002',4,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10116,'3005.16T4NEA','3005.16T4NEA','3005.16.T4.NEA','EARN/N','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100017541',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10115,'3005.16T4NEA','3005.16T4NEA','3005.16.T4.NEA','EARN/N','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100017541',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10117,'3005.16T4NEA','3005.16T4NEA','3005.16.T4.NEA','EARN/N','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100017541',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10118,'3005.16T5INT','3005.16T5INT','3005.16.T5.INT','EARN/N','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100019001',4,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10119,'3005.16T5INT','3005.16T5INT','3005.16.T5.INT','EARN/N','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100019001',4,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10120,'3005.16T5INT','3005.16T5INT','3005.16.T5.INT','EARN/N','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100019001',4,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10036,'3005.0220CNT','3005.02.20.CNT','3005.02.20.CNT','IAR1/1','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100017543',3,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10123,'3005.16T5INT','3005.16T5INT','3005.16.T5.INT','EARN/N','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100017540',4,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10121,'3005.16T5INT','3005.16T5INT','3005.16.T5.INT','EARN/N','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100017540',4,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10122,'3005.16T5INT','3005.16T5INT','3005.16.T5.INT','EARN/N','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100017540',4,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10125,'3005.16T5INT','3005.16T5INT','3005.16.T5.INT','EARN/N','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','3100014123',4,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10126,'3005.16T5INT','3005.16T5INT','3005.16.T5.INT','EARN/N','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','3100014123',4,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10124,'3005.16T5INT','3005.16T5INT','3005.16.T5.INT','EARN/N','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','3100014123',4,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10024,'3002','3002','3002-C1-EEAS','VOBU','REM','CA','08','STORAGE OF FURNITURE',106,'CA','STORAGE',null,'A6004','3100019148-25-CA',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10041,'3005.0801MAR','3005.0801MAR','3005.08.01.MAR','IAR1/1','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','3100015936',3,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10040,'3005.0801MAR','3005.0801MAR','3005.08.01.MAR','IAR1/1','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','3100015936',3,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10042,'3005.0801MAR','3005.0801MAR','3005.08.01.MAR','IAR1/1','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','3100015936',3,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10068,'3005.1401NEA','3005.1401NEA','3005.14.01.NEA','IAR2/2','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100018644',2,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10067,'3005.1401NEA','3005.1401NEA','3005.14.01.NEA','IAR2/2','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100018644',2,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10069,'3005.1401NEA','3005.1401NEA','3005.14.01.NEA','IAR2/2','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100018644',2,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10047,'3005.1401FPI','3005.1401FPI','3005.14.01.FPI','IAR2/2','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100019178',2,'2024','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10046,'3005.1401FPI','3005.1401FPI','3005.14.01.FPI','IAR2/2','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100019178',2,'2024','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10048,'3005.1401FPI','3005.1401FPI','3005.14.01.FPI','IAR2/2','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100019178',2,'2024','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10002,'3002','3002','3000-C1-EEAS','VOBU','TUD','Officials','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'A6004','3100019148-25-FP',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10001,'3002','3002','3000-C1-EEAS','VOBU','REM','Officials','03','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'A6004','3100019148-25-FP',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10003,'3002','3002','3000-C1-EEAS','VOBU','REM','Officials','04','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'A6004','3100019148-25-FP',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10005,'3002','3002','3000-C1-EEAS','VOBU','TUD','CA','05','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',106,'CA','PERSONAL',null,'A6004','3100019148-25-CA',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10004,'3002','3002','3000-C1-EEAS','VOBU','REM','CA','07','COST OF REMOVAL AND INSURANCE OF REMOVAL',106,'CA','PERSONAL',null,'A6004','3100019148-25-CA',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10006,'3002','3002','3000-C1-EEAS','VOBU','REM','CA','08','STORAGE OF FURNITURE',106,'CA','STORAGE',null,'A6004','3100019148-25-CA',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10007,'3002','3002','3000-C1-EEAS','VOBU','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','3100012523',1,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10076,'3005.1501EST','3005.1501EST','3005.15.01.EST','EARN/N','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','3100014067',4,'2026','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10078,'3005.1501EST','3005.1501EST','3005.15.01.EST','EARN/N','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','3100014067',4,'2026','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10131,'3005.16T5NEA','3005.16T5NEA','3005.16.T5.NEA','EARN/N','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100019025',4,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10132,'3005.16T5NEA','3005.16T5NEA','3005.16.T5.NEA','EARN/N','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100019025',4,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10130,'3005.16T5NEA','3005.16T5NEA','3005.16.T5.NEA','EARN/N','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100019025',4,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10133,'3005.16T5NEA','3005.16T5NEA','3005.16.T5.NEA','EARN/N','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100017542',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10134,'3005.16T5NEA','3005.16T5NEA','3005.16.T5.NEA','EARN/N','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100017542',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10135,'3005.16T5NEA','3005.16T5NEA','3005.16.T5.NEA','EARN/N','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100017542',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10136,'3005.16T6INT','3005.16T6INT','3005.16.T6.INT','EARN/N','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','NO_EARMARKED_FUND',4,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10138,'3005.16T6INT','3005.16T6INT','3005.16.T6.INT','EARN/N','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','NO_EARMARKED_FUND',4,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10137,'3005.16T6INT','3005.16T6INT','3005.16.T6.INT','EARN/N','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','NO_EARMARKED_FUND',4,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10053,'3005.1401INT','3005.1401INT','3005.14.01.INT','IAR2/2','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100019179-24',2,'2024','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10054,'3005.1401INT','3005.1401INT','3005.14.01.INT','IAR2/2','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100019179-24',2,'2024','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10060,'3005.1401INT','3005.1401INT','3005.14.01.INT','IAR2/2','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100019179-25',2,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10059,'3005.1401INT','3005.1401INT','3005.14.01.INT','IAR2/2','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100019179-25',2,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10058,'3005.1401INT','3005.1401INT','3005.14.01.INT','IAR2/2','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100019179-25',2,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10050,'3005.1401FPI','3005.1401FPI','3005.14.01.FPI','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','3100014878',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10049,'3005.1401FPI','3005.1401FPI','3005.14.01.FPI','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','3100014878',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10051,'3005.1401FPI','3005.1401FPI','3005.14.01.FPI','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','3100014878',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10056,'3005.1401INT','3005.1401INT','3005.14.01.INT','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','3100015311',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10055,'3005.1401INT','3005.1401INT','3005.14.01.INT','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','3100015311',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10057,'3005.1401INT','3005.1401INT','3005.14.01.INT','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','3100015311',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10061,'3005.1401MEN','3005.1401MEN','3005.14.01.MEN','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','3100015495',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10062,'3005.1401MEN','3005.1401MEN','3005.14.01.MEN','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','3100015495',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10063,'3005.1401MEN','3005.1401MEN','3005.14.01.MEN','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','3100015495',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10064,'3005.1401NEA','3005.1401NEA','3005.14.01.NEA','IAR2/2','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100019180',2,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10066,'3005.1401NEA','3005.1401NEA','3005.14.01.NEA','IAR2/2','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100019180',2,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10065,'3005.1401NEA','3005.1401NEA','3005.14.01.NEA','IAR2/2','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100019180',2,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10072,'3005.1501AGR','3005.1501AGR','3005.15.01.AGR','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','3100015517',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10070,'3005.1501AGR','3005.1501AGR','3005.15.01.AGR','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','3100015517',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10071,'3005.1501AGR','3005.1501AGR','3005.15.01.AGR','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','3100015517',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10084,'3005.1501NEA','3005.1501NEA','3005.15.01.NEA','IAR2/2','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100019173-25',2,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10082,'3005.1501NEA','3005.1501NEA','3005.15.01.NEA','IAR2/2','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100019173-25',2,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10083,'3005.1501NEA','3005.1501NEA','3005.15.01.NEA','IAR2/2','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100019173-25',2,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10128,'3005.16T5NEA','3005.16T5NEA','3005.16.T5.MEN','EARN/N','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','NO_EARMARKED_FUND',4,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10127,'3005.16T5NEA','3005.16T5NEA','3005.16.T5.MEN','EARN/N','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','NO_EARMARKED_FUND',4,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10129,'3005.16T5NEA','3005.16T5NEA','3005.16.T5.MEN','EARN/N','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','NO_EARMARKED_FUND',4,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10143,'3005.2001INT','3005.2001INT','3005.20.01.INT','IAR1/1','TUD','Officials','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3104','3100019175',3,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10142,'3005.2001INT','3005.2001INT','3005.20.01.INT','IAR1/1','REM','Officials','03','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3104','3100019175',3,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10144,'3005.2001INT','3005.2001INT','3005.20.01.INT','IAR1/1','REM','Officials','04','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3104','3100019175',3,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10016,'3002','3002','3001-C1-EEAS','VOBU','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','3100012523',1,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10012,'3002','3002','3001-C1-EEAS','VOBU','REM','Officials','04','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'A6004','3100019148-25-FP',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10011,'3002','3002','3001-C1-EEAS','VOBU','TUD','Officials','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'A6004','3100019148-25-FP',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10010,'3002','3002','3001-C1-EEAS','VOBU','REM','Officials','03','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'A6004','3100019148-25-FP',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10015,'3002','3002','3001-C1-EEAS','VOBU','REM','CA','08','STORAGE OF FURNITURE',106,'CA','STORAGE',null,'A6004','3100019148-25-CA',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10013,'3002','3002','3001-C1-EEAS','VOBU','REM','CA','07','COST OF REMOVAL AND INSURANCE OF REMOVAL',106,'CA','PERSONAL',null,'A6004','3100019148-25-CA',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10014,'3002','3002','3001-C1-EEAS','VOBU','TUD','CA','05','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',106,'CA','PERSONAL',null,'A6004','3100019148-25-CA',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10139,'3005.2001INT','3005.2001INT','3005.20.01.INT','IAR1/1','TUD','Officials','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','3100014169',3,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10140,'3005.2001INT','3005.2001INT','3005.20.01.INT','IAR1/1','REM','Officials','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','3100014169',3,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10141,'3005.2001INT','3005.2001INT','3005.20.01.INT','IAR1/1','REM','Officials','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','3100014169',3,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10145,'3005.2002INT','3005.2002INT','3005.20.02.INT','IAR1/1','TUD','CA','05','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',106,'CA','PERSONAL',null,'B3203','3100019183',3,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10146,'3005.2002INT','3005.2002INT','3005.20.02.INT','IAR1/1','REM','CA','07','COST OF REMOVAL AND INSURANCE OF REMOVAL',106,'CA','PERSONAL',null,'B3203','3100019183',3,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10147,'3005.2002INT','3005.2002INT','3005.20.02.INT','IAR1/1','REM','CA','08','STORAGE OF FURNITURE',106,'CA','STORAGE',null,'B3203','3100019183',3,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10148,'3005.2002INT','3005.2002INT','3005.20.02.INT','IAR1/1','REM','CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',106,'CA','PERSONAL',null,'ROTCST','3100014517',3,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10149,'3005.2002INT','3005.2002INT','3005.20.02.INT','IAR1/1','REM','CA','52','STORAGE OF FURNITURE',106,'CA','STORAGE',null,'ROTCST','3100014517',3,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10150,'3005.2002INT','3005.2002INT','3005.20.02.INT','IAR1/1','TUD','CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',106,'CA','PERSONAL',null,'ROTCST','3100014517',3,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10151,'3005.2003OLA','3005.2003OLA','3005.20.03.OLA','IAR1/1','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100017567',3,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10152,'3005.2003OLA','3005.2003OLA','3005.20.03.OLA','IAR1/1','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100017567',3,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10153,'3005.2003OLA','3005.2003OLA','3005.20.03.OLA','IAR1/1','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100017567',3,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10008,'3002','3002','3000-C1-EEAS','VOBU','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','3100012523',1,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10009,'3002','3002','3000-C1-EEAS','VOBU','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','3100012523',1,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10086,'3005.1501NEA','3005.1501NEA','3005.15.01.NEA','IAR2/2','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100019173-24',2,'2024','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10085,'3005.1501NEA','3005.1501NEA','3005.15.01.NEA','IAR2/2','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100019173-24',2,'2024','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10087,'3005.1501NEA','3005.1501NEA','3005.15.01.NEA','IAR2/2','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100019173-24',2,'2024','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10089,'3005.15.01.NEA-RO','3005.1501NEA','3005.15.01.NEA.R0','EARN/N','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100019003',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10088,'3005.15.01.NEA-RO','3005.1501NEA','3005.15.01.NEA.R0','EARN/N','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100019003',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10090,'3005.15.01.NEA-RO','3005.1501NEA','3005.15.01.NEA.R0','EARN/N','REM','Officials and CA','03','EXPAT STAFF - STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100019003',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10091,'3005.1502EST','3005.1502EST','3005.15.02.EST','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','3100015565',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10092,'3005.1502EST','3005.1502EST','3005.15.02.EST','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','3100015565',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10093,'3005.1502EST','3005.1502EST','3005.15.02.EST','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','3100015565',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10094,'3005.1502NEA','3005.1502NEA','3005.15.02.NEA','IAR2/2','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100018735',2,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10095,'3005.1502NEA','3005.1502NEA','3005.15.02.NEA','IAR2/2','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100018735',2,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10096,'3005.1502NEA','3005.1502NEA','3005.15.02.NEA','IAR2/2','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100018735',2,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10079,'3005.15.01.EST.R0','3005.1501NEA','3005.15.01.EST.R0','EARN/N','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100019174',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10080,'3005.15.01.EST.R0','3005.1501NEA','3005.15.01.EST.R0','EARN/N','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100019174',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10081,'3005.15.01.EST.R0','3005.1501NEA','3005.15.01.EST.R0','EARN/N','REM','Officials and CA','03','EXPAT STAFF - STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100019174',4,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10074,'3005.1501EST','3005.1501EST','3005.15.01.EST','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','3100015551',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10073,'3005.1501EST','3005.1501EST','3005.15.01.EST','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','3100015551',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10075,'3005.1501EST','3005.1501EST','3005.15.01.EST','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','3100015551',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10017,'3002','3002','3001-C1-EEAS','VOBU','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','3100012523',1,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10018,'3002','3002','3001-C1-EEAS','VOBU','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','3100012523',1,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10020,'3002','3002','3002-C1-EEAS','VOBU','REM','Officials','03','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'A6004','3100019148-25-FP',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10021,'3002','3002','3002-C1-EEAS','VOBU','REM','Officials','04','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'A6004','3100019148-25-FP',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10019,'3002','3002','3002-C1-EEAS','VOBU','TUD','Officials','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'A6004','3100019148-25-FP',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10022,'3002','3002','3002-C1-EEAS','VOBU','TUD','CA','05','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',106,'CA','PERSONAL',null,'A6004','3100019148-25-CA',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10023,'3002','3002','3002-C1-EEAS','VOBU','REM','CA','07','COST OF REMOVAL AND INSURANCE OF REMOVAL',106,'CA','PERSONAL',null,'A6004','3100019148-25-CA',1,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10026,'3002','3002','3002-C1-EEAS','VOBU','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','3100012523',1,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10025,'3002','3002','3002-C1-EEAS','VOBU','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','3100012523',1,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10027,'3002','3002','3002-C1-EEAS','VOBU','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','3100012523',1,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10028,'3005.0101RTD','3005.0101RTD','3005.01.01.RTD','IAR1/1','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100019176',3,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10029,'3005.0101RTD','3005.0101RTD','3005.01.01.RTD','IAR1/1','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100019176',3,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10030,'3005.0101RTD','3005.0101RTD','3005.01.01.RTD','IAR1/1','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100019176',3,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10033,'3005.0101RTD','3005.0101RTD','3005.01.01.RTD','IAR1/1','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','3100015905',3,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10031,'3005.0101RTD','3005.0101RTD','3005.01.01.RTD','IAR1/1','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','3100015905',3,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10032,'3005.0101RTD','3005.0101RTD','3005.01.01.RTD','IAR1/1','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','3100015905',3,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10034,'3005.0220CNT','3005.02.20.CNT','3005.02.20.CNT','IAR1/1','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100017543',3,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10035,'3005.0220CNT','3005.02.20.CNT','3005.02.20.CNT','IAR1/1','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100017543',3,'2025','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10039,'3005.0801MAR','3005.0801MAR','3005.08.01.MAR','IAR1/1','REM','Officials and CA','02','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'B3401','3100019177',3,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10037,'3005.0801MAR','3005.0801MAR','3005.08.01.MAR','IAR1/1','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100019177',3,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10038,'3005.0801MAR','3005.0801MAR','3005.08.01.MAR','IAR1/1','REM','Officials and CA','03','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'B3401','3100019177',3,'2025','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10045,'3005.1401EST','3005.1401EST','3005.14.01.EST','IAR2/2','REM','Officials and CA','52','STORAGE OF FURNITURE',1,'FP','STORAGE',null,'ROTCST','3100014840',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10044,'3005.1401EST','3005.1401EST','3005.14.01.EST','IAR2/2','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','3100014840',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10043,'3005.1401EST','3005.1401EST','3005.14.01.EST','IAR2/2','TUD','Officials and CA','51','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'ROTCST','3100014840',2,'2026','Y'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10052,'3005.1401INT','3005.1401INT','3005.14.01.INT','IAR2/2','TUD','Officials and CA','01','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL',null,'B3401','3100019179-24',2,'2024','N'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT,COMMITMENT_LVL_4,EARMARKED_FUND,SUMMA_FUND_SOURCE_ID,BUDGET_PERIODS,DEFAULT_EARMARKED_FUND) values (10077,'3005.1501EST','3005.1501EST','3005.15.01.EST','EARN/N','REM','Officials and CA','50','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL',null,'ROTCST','3100014067',4,'2026','N'); +-------------------------------------------------------- +-- DDL for Index PK_BUDGET_LINES_SUBPOSTS_MAPPING +-------------------------------------------------------- + +CREATE UNIQUE INDEX "ERIGHTS"."PK_BUDGET_LINES_SUBPOSTS_MAPPING" ON "ERIGHTS"."BUDGET_LINES_SUBPOSTS_MAPPING" ("BUDGET_LINES_SUBPOSTS_MAPPING_ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; +-------------------------------------------------------- +-- Constraints for Table BUDGET_LINES_SUBPOSTS_MAPPING +-------------------------------------------------------- + +ALTER TABLE "ERIGHTS"."BUDGET_LINES_SUBPOSTS_MAPPING" MODIFY ("BUDGET_LINES_SUBPOSTS_MAPPING_ID" NOT NULL ENABLE); +ALTER TABLE "ERIGHTS"."BUDGET_LINES_SUBPOSTS_MAPPING" ADD CONSTRAINT "PK_BUDGET_LINES_SUBPOSTS_MAPPING" PRIMARY KEY ("BUDGET_LINES_SUBPOSTS_MAPPING_ID") + USING INDEX "ERIGHTS"."PK_BUDGET_LINES_SUBPOSTS_MAPPING" ENABLE; diff --git a/e-rights-common/src/main/database/release/4.2.1/0002 payment_directive_reference.sql b/e-rights-common/src/main/database/release/4.2.1/0002 payment_directive_reference.sql new file mode 100644 index 0000000..da6a8de --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.1/0002 payment_directive_reference.sql @@ -0,0 +1,71 @@ +ALTER TABLE REQUESTS + RENAME COLUMN PAYMENT_DIRECTIVE TO PAYMENT_DIRECTIVE_REFERENCE; + +ALTER TABLE AUD_REQUESTS + RENAME COLUMN PAYMENT_DIRECTIVE TO PAYMENT_DIRECTIVE_REFERENCE; + + + + +ALTER TABLE ORDER_STATUS_RESPONSE + ADD (PAYMENT_DIRECTIVE_REFERENCE VARCHAR2(200) ); + + +ALTER TABLE ORDER_RESPONSE + ADD (PAYMENT_DIRECTIVE_REFERENCE VARCHAR2(200) ); + + + + + +/*test +SET DEFINE OFF; +INSERT INTO app_parameters ( + parameter_id, + parameter_type, + parameter_key, + parameter_value +) +SELECT + NVL(MAX(parameter_id), 0) + 1, + 'ADVANCE_REMOVAL', + 'SUMMA_PAYMENT_DIRECTIVE_URL', + 'https://summa-fio-t.acceptance.ec.testa.eu/sap/bc/ui2/flp#ZWF_AccountingDocument-display?CompanyCode=EEAS&FiscalYear=2026&ZWF_AccountingDocument=' +FROM app_parameters; + +*/ + +/*acc*/ +/* +SET DEFINE OFF; +INSERT INTO app_parameters ( + parameter_id, + parameter_type, + parameter_key, + parameter_value +) +SELECT + NVL(MAX(parameter_id), 0) + 1, + 'ADVANCE_REMOVAL', + 'SUMMA_PAYMENT_DIRECTIVE_URL', + 'https://summa-fio.acceptance.ec.testa.eu/sap/bc/ui2/flp#ZWF_AccountingDocument-display?CompanyCode=EEAS&FiscalYear=2026&ZWF_AccountingDocument=' +FROM app_parameters; + +*/ + + + +/*prd*/ + +INSERT INTO app_parameters ( + parameter_id, + parameter_type, + parameter_key, + parameter_value +) +SELECT + NVL(MAX(parameter_id), 0) + 1, + 'ADVANCE_REMOVAL', + 'SUMMA_PAYMENT_DIRECTIVE_URL', + 'https://summa-fio.ec.testa.eu/sap/bc/ui2/flp#ZWF_AccountingDocument-display?CompanyCode=EEAS&FiscalYear=2026&ZWF_AccountingDocument=' +FROM app_parameters; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.2.1/0003 update order_response auditingcreatedby.sql b/e-rights-common/src/main/database/release/4.2.1/0003 update order_response auditingcreatedby.sql new file mode 100644 index 0000000..05cc7bd --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.1/0003 update order_response auditingcreatedby.sql @@ -0,0 +1,7 @@ +update ORDER_RESPONSE +set created_at = sysdate - 8 +where created_at is null; + +update ORDER_RESPONSE +set CREATED_BY = -1234 +where CREATED_BY is null; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/4.2.1/0004 add dciamls to mv_currency.sql b/e-rights-common/src/main/database/release/4.2.1/0004 add dciamls to mv_currency.sql new file mode 100644 index 0000000..b5ca97f --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.1/0004 add dciamls to mv_currency.sql @@ -0,0 +1,67 @@ + + + +DROP MATERIALIZED VIEW "ERIGHTS"."MV_RATE_EXCHANGE"; + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_RATE_EXCHANGE" ("UNIQID", "DEV_CD", "DT_CRE", "DT_DEB", "TAUX_EUR", "DT_FIN", "DT_MAJ", "MONTH_YEAR","DECIMALS") + SEGMENT CREATION IMMEDIATE + ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS DISABLE ON QUERY COMPUTATION DISABLE QUERY REWRITE + AS SELECT + ora_hash(rate.dev_cd) + to_number( + to_char( + rate.dt_deb, + 'YYYYMMDD' + ) + ) uniqid, + rate.dev_cd, + rate.dt_cre, + rate.dt_deb, + rate.taux_eur, + rate.dt_fin, + rate.dt_maj, + TO_CHAR(rate.DT_DEB, 'MON-YYYY') month_year, + DECODE(curr.DECIMALES, 'O', 'Y', curr.DECIMALES) DECIMALS + FROM + mv_rate_exchange@easrefn.cc.cec.eu.int rate, mv_CURRENCY_CODES@easrefn.cc.cec.eu.int curr + where curr.CURRENCY_CODE = rate.dev_cd + UNION + SELECT + ora_hash( + 'EUR' + ) + 20000101 uniqid, + 'EUR' dev_cd, + trunc( + sysdate, + 'MM' + ) dt_cre, + trunc( + sysdate, + 'MM' + ) dt_deb, + 1 taux_eur, + last_day(sysdate) dt_fin, + last_day(sysdate) dt_maj, + TO_CHAR(sysdate, 'MON-YYYY') month_year, + 'Y' AS DECIMALS + FROM + dual; + +CREATE INDEX "ERIGHTS"."IDX_MV_RATE_EXCH_DEV_CD" ON "ERIGHTS"."MV_RATE_EXCHANGE" ("DEV_CD") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) + TABLESPACE "ERIGHTS" ; + +COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_RATE_EXCHANGE" IS 'snapshot table for snapshot ERIGHTS.MV_RATE_EXCHANGE'; + diff --git a/e-rights-common/src/main/database/release/4.2.2/0001_add json_sent_column,sql b/e-rights-common/src/main/database/release/4.2.2/0001_add json_sent_column,sql new file mode 100644 index 0000000..078582d --- /dev/null +++ b/e-rights-common/src/main/database/release/4.2.2/0001_add json_sent_column,sql @@ -0,0 +1,6 @@ +ALTER TABLE ORDER_RESPONSE +ADD (JSON_SENT VARCHAR2(4000) ); + + +ALTER TABLE ORDER_ERROR_RESPONSE +ADD (JSON_SENT VARCHAR2(4000) ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/5.0.0/01_RIGD-3568_POSTING_ALLOWANCES_ALTER.sql b/e-rights-common/src/main/database/release/5.0.0/01_RIGD-3568_POSTING_ALLOWANCES_ALTER.sql new file mode 100644 index 0000000..017f0b1 --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/01_RIGD-3568_POSTING_ALLOWANCES_ALTER.sql @@ -0,0 +1,207 @@ +-- increased discriminatory_type column size +ALTER TABLE posting_allowances MODIFY + posting_allowance_discriminatory_type VARCHAR2(30); + +ALTER TABLE aud_posting_allowances MODIFY + posting_allowance_discriminatory_type VARCHAR2(30); + +-- added posting_allowance_type in the unique constraint +ALTER TABLE posting_allowances DROP CONSTRAINT uk_posting_allowances_per_id_soj_id_exercise_year_parent_posting_allowance_id; + +ALTER TABLE posting_allowances + ADD CONSTRAINT uk_posting_allowances_per_id_soj_id_exercise_year_posting_allowance_type_parent_posting_allowance_id UNIQUE + (per_id, + soj_id, + exercise_year, + posting_allowance_type, + parent_posting_allowance_id); + +ALTER TABLE posting_allowances + ADD + persons_bank_info_id NUMBER; +COMMENT ON COLUMN posting_allowances.persons_bank_info_id IS + 'Persons bank info for Accommodation'; +ALTER TABLE aud_posting_allowances + ADD + persons_bank_info_id NUMBER; +ALTER TABLE posting_allowances + ADD CONSTRAINT fk_posting_allowances_persons_bank_info FOREIGN KEY (persons_bank_info_id) + REFERENCES persons_bank_info (persons_bank_info_id) + NOT DEFERRABLE; + + +ALTER TABLE posting_allowances + ADD + payment_method VARCHAR2(10); +ALTER TABLE posting_allowances + ADD CONSTRAINT "CHK_POSTING_ALLOWANCES_PAYEMENT_METHOD" CHECK (payment_method in ('LOCAL', 'CENTRAL')) + ENABLE; +COMMENT ON COLUMN posting_allowances.payment_method IS + 'Accommodation - Payment method'; +ALTER TABLE aud_posting_allowances + ADD + payment_method VARCHAR2(10); + +ALTER TABLE posting_allowances + ADD + payment_preferred_currency VARCHAR2(3 BYTE); +COMMENT ON COLUMN posting_allowances.payment_preferred_currency IS + 'Accommodation - Payment preferred currency'; +ALTER TABLE aud_posting_allowances + ADD + payment_preferred_currency VARCHAR2(3 BYTE); + +ALTER TABLE posting_allowances + ADD + monthly_rental_amount NUMBER; +COMMENT ON COLUMN posting_allowances.monthly_rental_amount IS + 'Accommodation - Monthly rental amount'; +ALTER TABLE aud_posting_allowances + ADD + monthly_rental_amount NUMBER; + +ALTER TABLE posting_allowances + ADD + monthly_rental_amount_currency VARCHAR2(3 CHAR); +COMMENT ON COLUMN posting_allowances.monthly_rental_amount_currency IS + 'Accommodation - Monthly rental amount currency'; +ALTER TABLE aud_posting_allowances + ADD + monthly_rental_amount_currency VARCHAR2(3 CHAR); + +ALTER TABLE posting_allowances + ADD + monthly_rental_amount_ceiling NUMBER; +COMMENT ON COLUMN posting_allowances.monthly_rental_amount_ceiling IS + 'Accommodation - Monthly rental amount ceiling'; +ALTER TABLE aud_posting_allowances + ADD + monthly_rental_amount_ceiling NUMBER; + +ALTER TABLE posting_allowances + ADD + monthly_rental_amount_ceiling_currency VARCHAR2(3 CHAR); +COMMENT ON COLUMN posting_allowances.monthly_rental_amount_ceiling_currency IS + 'Accommodation - Monthly rental amount ceiling currency'; +ALTER TABLE aud_posting_allowances + ADD + monthly_rental_amount_ceiling_currency VARCHAR2(3 CHAR); + +ALTER TABLE posting_allowances + ADD + monthly_security_amount NUMBER; +COMMENT ON COLUMN posting_allowances.monthly_security_amount IS + 'Accommodation - Monthly security amount'; +ALTER TABLE aud_posting_allowances + ADD + monthly_security_amount NUMBER; + +ALTER TABLE posting_allowances + ADD + monthly_security_amount_currency VARCHAR2(3 CHAR); +COMMENT ON COLUMN posting_allowances.monthly_security_amount_currency IS + 'Accommodation - Monthly security amount currency'; +ALTER TABLE aud_posting_allowances + ADD + monthly_security_amount_currency VARCHAR2(3 CHAR); + +ALTER TABLE posting_allowances + ADD + monthly_recurrent_costs NUMBER; +COMMENT ON COLUMN posting_allowances.monthly_recurrent_costs IS + 'Accommodation - Monthly recurrent costs'; +ALTER TABLE aud_posting_allowances + ADD + monthly_recurrent_costs NUMBER; + +ALTER TABLE posting_allowances + ADD + monthly_recurrent_costs_currency VARCHAR2(3 CHAR); +COMMENT ON COLUMN posting_allowances.monthly_recurrent_costs_currency IS + 'Accommodation - Monthly recurrent costs currency'; +ALTER TABLE aud_posting_allowances + ADD + monthly_recurrent_costs_currency VARCHAR2(3 CHAR); + +ALTER TABLE posting_allowances + ADD + guarantee_amount NUMBER; +COMMENT ON COLUMN posting_allowances.guarantee_amount IS + 'Accommodation - Guarantee amount'; +ALTER TABLE aud_posting_allowances + ADD + guarantee_amount NUMBER; + +ALTER TABLE posting_allowances + ADD + guarantee_amount_currency VARCHAR2(3 CHAR); +COMMENT ON COLUMN posting_allowances.guarantee_amount_currency IS + 'Accommodation - Guarantee amount currency'; +ALTER TABLE aud_posting_allowances + ADD + guarantee_amount_currency VARCHAR2(3 CHAR); + +ALTER TABLE posting_allowances + ADD + guarantee_rem_to_reimburse NUMBER; +COMMENT ON COLUMN posting_allowances.guarantee_rem_to_reimburse IS + 'Accommodation - Remaining guarantee to reimburse'; +ALTER TABLE aud_posting_allowances + ADD + guarantee_rem_to_reimburse NUMBER; + +ALTER TABLE posting_allowances + ADD + guarantee_rem_to_reimburse_currency VARCHAR2(3 CHAR); +COMMENT ON COLUMN posting_allowances.guarantee_rem_to_reimburse_currency IS + 'Accommodation - Remaining guarantee to reimburse currency'; +ALTER TABLE aud_posting_allowances + ADD + guarantee_rem_to_reimburse_currency VARCHAR2(3 CHAR); + +ALTER TABLE posting_allowances + ADD + monthly_recurrent_costs_description VARCHAR2(4000 CHAR); +COMMENT ON COLUMN posting_allowances.monthly_recurrent_costs_description IS + 'Accommodation - Monthly recurrent costs description'; +ALTER TABLE aud_posting_allowances + ADD + monthly_recurrent_costs_description VARCHAR2(4000 CHAR); + +ALTER TABLE posting_allowances + ADD + guarantee_reimbursement_period NUMBER; +COMMENT ON COLUMN posting_allowances.guarantee_reimbursement_period IS + 'Accommodation - Guarantee Reimbursement period in months'; +ALTER TABLE aud_posting_allowances + ADD + guarantee_reimbursement_period NUMBER; + +ALTER TABLE posting_allowances + ADD + payment_periodic_interval NUMBER; +COMMENT ON COLUMN posting_allowances.payment_periodic_interval IS + 'Accommodation - Periodic payment interval in months'; +ALTER TABLE aud_posting_allowances + ADD + payment_periodic_interval NUMBER; + + +ALTER TABLE posting_allowances + ADD + rental_contract_start_date DATE; +COMMENT ON COLUMN posting_allowances.rental_contract_start_date IS + 'Accommodation - Start date of rental contract'; +ALTER TABLE aud_posting_allowances + ADD + rental_contract_start_date DATE; + +ALTER TABLE posting_allowances + ADD + rental_contract_end_date DATE; +COMMENT ON COLUMN posting_allowances.rental_contract_end_date IS + 'Accommodation - End date of rental contract'; +ALTER TABLE aud_posting_allowances + ADD + rental_contract_end_date DATE; + diff --git a/e-rights-common/src/main/database/release/5.0.0/02_RIGD-3644_delegation_details.sql b/e-rights-common/src/main/database/release/5.0.0/02_RIGD-3644_delegation_details.sql new file mode 100644 index 0000000..5c16d90 --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/02_RIGD-3644_delegation_details.sql @@ -0,0 +1,174 @@ +CREATE TABLE delegation_details ( + org_id NUMBER(10), + org_name VARCHAR2(500), + housing_policy VARCHAR2(10), + CONSTRAINT pk_delegation_details PRIMARY KEY ( org_id ) + USING INDEX, + CONSTRAINT ck_housing_policy CHECK ( housing_policy IN ( 'ART5', 'ART23', 'N/A' ) ) +); + +COMMENT ON TABLE delegation_details IS + 'Additional information on delegations specific for eRights'; + +COMMENT ON COLUMN delegation_details.org_id IS + 'Delegation org id (see MV_ENTITIES)'; + +COMMENT ON COLUMN delegation_details.org_name IS + 'Delegation name'; + +COMMENT ON COLUMN delegation_details.housing_policy IS + 'Delegation housing policy: ART5, ART23 or N/A'; + +REM INSERTING into DELEGATION_DETAILS +SET DEFINE OFF; +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239882,'AFGHANISTAN','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237566,'ALBANIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237590,'ALGERIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237614,'ANGOLA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237639,'ARGENTINA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240087,'ARMENIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240490,'AU','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237687,'AUSTRALIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240067,'AZERBAIJAN','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237699,'BANGLADESH','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237727,'BARBADOS','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240253,'BELARUS','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237755,'BENIN','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237779,'BOLIVIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237800,'BOSNIA AND HERZEGOVINA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237832,'BOTSWANA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237856,'BRAZIL','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237884,'BURKINA FASO','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (241372,'BURMA/MYANMAR','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237916,'BURUNDI','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240055,'CABO VERDE','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240265,'CAMBODIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237940,'CAMEROON','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237968,'CANADA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239281,'CENTRAL AFRICAN REPUBLIC','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239553,'CHAD','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237988,'CHILE','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238008,'CHINA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240514,'COE','N/A'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238084,'COLOMBIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238109,'CONGO','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239793,'CONGO DEMOCRATIC REP','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240277,'COSTA RICA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240289,'CUBA','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240183,'DJIBOUTI','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239309,'DOMINICAN REPUBLIC','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240301,'ECUADOR','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238197,'EGYPT','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240369,'EL SALVADOR','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238225,'ERITREA','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240385,'ESWATINI','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238287,'ETHIOPIA','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238319,'FIJI','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238355,'GABON','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240313,'GAMBIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238383,'GEORGIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238403,'GHANA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240321,'GUATEMALA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238449,'GUINEA','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238428,'GUINEA-BISSAU','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238473,'GUYANA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238501,'HAITI','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240462,'HOLY SEE/UN','N/A'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240337,'HONDURAS','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238529,'HONG KONG','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240397,'ICELAND','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238542,'INDIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238574,'INDONESIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239987,'IRAQ','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238606,'ISRAEL','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238145,'IVORY COAST','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238630,'JAMAICA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238662,'JAPAN','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238690,'JORDAN','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238714,'KAZAKHSTAN','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238742,'KENYA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238129,'KOREA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239999,'KOSOVO','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (248202,'KUWAIT','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240216,'KYRGYZSTAN','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240345,'LAOS','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238802,'LEBANON','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238786,'LESOTHO','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240127,'LIBERIA','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (241306,'LIBYA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238826,'MADAGASCAR','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238851,'MALAWI','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239931,'MALAYSIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238875,'MALI','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238968,'MAURITANIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238939,'MAURITIUS','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239000,'MEXICO','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239967,'MOLDOVA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (244712,'MONGOLIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240019,'MONTENEGRO','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238907,'MOROCCO','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239024,'MOZAMBIQUE','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239053,'NAMIBIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240237,'NEPAL','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240357,'NEW ZEALAND','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239074,'NICARAGUA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239102,'NIGER','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239127,'NIGERIA','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237663,'NORTH MACEDONIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239155,'NORWAY','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240442,'OECD/UNESCO','N/A'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239196,'PAKISTAN','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (246157,'PANAMA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239216,'PAPUA NEW GUINEA','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240361,'PARAGUAY','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239237,'PERU','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239261,'PHILIPPINES','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239334,'RUSSIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239374,'RWANDA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239906,'SAUDI ARABIA','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239399,'SENEGAL','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239761,'SERBIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239427,'SIERRA LEONE','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239918,'SINGAPORE','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (100000067,'SOMALIA','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (237542,'SOUTH AFRICA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (241328,'SOUTH SUDAN','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239484,'SRI LANKA','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239456,'SUDAN','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239951,'SWITZERLAND','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239501,'SYRIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239943,'TAIWAN','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240199,'TAJIKISTAN','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239525,'TANZANIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239581,'THAILAND','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240039,'TIMOR-LESTE','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240147,'TOGO','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240393,'TRINIDAD AND TOBAGO','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239609,'TUNISIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239637,'TURKEY','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (248209,'TURKMENISTAN','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239167,'UGANDA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239665,'UKRAINE','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240518,'UN/GEN','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240474,'UN/IAEA/OSCE','N/A'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240430,'UN/NY','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (241672,'UNITED ARAB EMIRATES','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (246754,'UNITED KINGDOM','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238250,'UNITED STATES','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239697,'URUGUAY','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240107,'UZBEKISTAN','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239717,'VENEZUELA','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239737,'VIETNAM','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238052,'WEST BANK AND GAZA STRIP','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240414,'WTO','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (240163,'YEMEN','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239825,'ZAMBIA','ART23'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (239857,'ZIMBABWE','ART5'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (244698,'COMOROS','N/A'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (251267,'QATAR','N/A'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (250927,'ASEAN','N/A'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238655,'BELIZE','N/A'); +Insert into DELEGATION_DETAILS (ORG_ID,ORG_NAME,HOUSING_POLICY) values (238332,'NEW CALEDONIA','N/A'); +commit; + +GRANT SELECT ON DELEGATION_DETAILS TO ERIGHTS_RO; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/5.0.0/03_RIGD-3644_v_assignments_hist.sql b/e-rights-common/src/main/database/release/5.0.0/03_RIGD-3644_v_assignments_hist.sql new file mode 100644 index 0000000..d04bed7 --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/03_RIGD-3644_v_assignments_hist.sql @@ -0,0 +1,100 @@ +CREATE OR REPLACE VIEW v_assignments_hist ( + soj_id, + jcx_id, + job_id, + per_id, + toj_cd, + job_type, + start_date, + end_date, + ins_cd, + creation_date, + modification_date, + type_of_post, + delegation_org_id, + lst_cd, + lst_name, + housing_policy +) AS + SELECT + asgh.soj_id, + asgh.jcx_id, + asgh.job_id, + asgh.per_id, + asgh.toj_cd, + asgh.job_type, + asgh.start_date, + asgh.end_date, + asgh.ins_cd, + asgh.creation_date, + asgh.modification_date, + asgh.type_of_post, + del.org_id delegation_org_id, + slh.lst_cd, + slc.en_name lst_name, + dd.housing_policy + FROM + mv_assignments_hist_eeas asgh + INNER JOIN mv_jobs_hist_eeas jobh ON ( asgh.job_id = jobh.job_id + AND asgh.jcx_id = jobh.jcx_id ) + INNER JOIN mv_entities_hist enth ON ( jobh.org_id = enth.org_id ) + INNER JOIN mv_career_stat_link_hist_eeas slh ON ( asgh.per_id = slh.per_id + AND slh.start_date <= asgh.end_date + AND nvl(slh.end_date, TO_DATE('31-DEC-9999', 'DD-MON-YYYY')) >= asgh.start_date + ) + INNER JOIN mv_statutory_link_codes slc ON ( slh.lst_cd = slc.lst_cd ) + LEFT JOIN ( + SELECT + org_id + FROM + mv_entities + WHERE + is_delegation = 'Y' + ) del ON ( enth.main_org_id = del.org_id ) + LEFT JOIN delegation_details dd ON ( del.org_id = dd.org_id ) + WHERE + enth.start_date = ( + SELECT + MAX(enth2.start_date) + FROM + mv_entities_hist enth2 + WHERE + enth2.org_id = enth.org_id + AND ( asgh.start_date >= enth.start_date + OR asgh.end_date <= enth.end_date ) + ) + UNION ALL + SELECT + asgh.soj_id, + NULL jcx_id, + asgh.job_id, + asgh.per_id, + asgh.toj_cd, + asgh.job_type, + asgh.start_date, + asgh.end_date, + asgh.ins_cd, + asgh.creation_date, + asgh.modification_date, + asgh.type_of_post, + NULL delegation_org_id, + slh.lst_cd, + slc.en_name lst_name, + NULL housing_policy + FROM + mv_assignments_hist_com asgh + INNER JOIN mv_career_stat_link_hist_com slh ON ( asgh.per_id = slh.per_id + AND slh.start_date <= asgh.end_date + AND nvl(slh.end_date, TO_DATE('31-DEC-9999', 'DD-MON-YYYY')) >= asgh.start_date + ) + INNER JOIN mv_statutory_link_codes slc ON ( slh.lst_cd = slc.lst_cd ) + WHERE + NOT EXISTS ( + SELECT + 1 + FROM + mv_assignments_hist_eeas easgh + WHERE + easgh.per_id = asgh.per_id + AND easgh.soj_id = asgh.soj_id + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/5.0.0/04_RIGD-3644_v_assignments_hist_eeas.sql b/e-rights-common/src/main/database/release/5.0.0/04_RIGD-3644_v_assignments_hist_eeas.sql new file mode 100644 index 0000000..a1650ae --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/04_RIGD-3644_v_assignments_hist_eeas.sql @@ -0,0 +1,56 @@ +CREATE OR REPLACE VIEW v_assignments_hist_eeas ( + soj_id, + jcx_id, + job_id, + per_id, + toj_cd, + job_type, + start_date, + end_date, + ins_cd, + creation_date, + modification_date, + type_of_post, + delegation_org_id, + housing_policy +) AS + SELECT + asgh.soj_id, + asgh.jcx_id, + asgh.job_id, + asgh.per_id, + asgh.toj_cd, + asgh.job_type, + asgh.start_date, + asgh.end_date, + asgh.ins_cd, + asgh.creation_date, + asgh.modification_date, + asgh.type_of_post, + del.org_id delegation_org_id, + dd.housing_policy + FROM + mv_assignments_hist_eeas asgh + INNER JOIN mv_jobs_hist_eeas jobh ON ( asgh.job_id = jobh.job_id + AND asgh.jcx_id = jobh.jcx_id ) + INNER JOIN mv_entities_hist enth ON ( jobh.org_id = enth.org_id ) + LEFT JOIN ( + SELECT + org_id + FROM + mv_entities + WHERE + is_delegation = 'Y' + ) del ON ( enth.main_org_id = del.org_id ) + LEFT JOIN delegation_details dd ON ( del.org_id = dd.org_id ) + WHERE + enth.start_date = ( + SELECT + MAX(enth2.start_date) + FROM + mv_entities_hist enth2 + WHERE + enth2.org_id = enth.org_id + AND ( asgh.start_date >= enth.start_date + OR asgh.end_date <= enth.end_date ) + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/5.0.0/04_RIGD-3740_mv_assignments_eeas.sql b/e-rights-common/src/main/database/release/5.0.0/04_RIGD-3740_mv_assignments_eeas.sql new file mode 100644 index 0000000..636017c --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/04_RIGD-3740_mv_assignments_eeas.sql @@ -0,0 +1,62 @@ +CREATE MATERIALIZED VIEW mv_assignments_eeas ( soj_id, job_id, per_id, toj_cd, job_type, start_date, end_date, type_of_post, ins_cd, creation_date +, modification_date ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND +AS + SELECT + soj_id, + job_id, + per_id, + toj_cd, + job_type, + start_date, + end_date, + type_of_post, + ins_cd, + creation_date, + modification_date + FROM + mv_assignments_eeas@easrefn.cc.cec.eu.int; + +CREATE INDEX idx_mv_assign_eeas_job_id ON + mv_assignments_eeas ( + job_id + ); + +CREATE INDEX idx_mv_assign_eeas_per_id ON + mv_assignments_eeas ( + per_id + ); + +INSERT INTO erights.t_refresh_objects ( + id, + app_object_name, + priority, + is_refreshed, + status, + refresh_date, + system +) VALUES ( + 49, + 'MV_ASSIGNMENTS_EEAS', + 49, + 'N', + 'KO', + NULL, + 'EASREFN' +); + +INSERT INTO t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 49, + 'MV_ASSIGNMENTS_EEAS', + 1 +); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/5.0.0/05_RIGD-3726_accommodation_declaration_person_create.sql b/e-rights-common/src/main/database/release/5.0.0/05_RIGD-3726_accommodation_declaration_person_create.sql new file mode 100644 index 0000000..30a05b1 --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/05_RIGD-3726_accommodation_declaration_person_create.sql @@ -0,0 +1,42 @@ +CREATE TABLE accommodation_declaration_person +( + accommodation_declaration_person_id NUMBER NOT NULL, + posting_allowance_id NUMBER NOT NULL, + per_id NUMBER, + relative_per_id NUMBER, + relation VARCHAR2(100 BYTE), + joining_accommodation CHAR(1 BYTE) DEFAULT 'N', + created_by NUMBER NOT NULL, + created_at TIMESTAMP(6) NOT NULL, + updated_by NUMBER NOT NULL, + updated_at TIMESTAMP(6) NOT NULL +); + +ALTER TABLE accommodation_declaration_person + ADD CONSTRAINT pk_accommodation_declaration_person + PRIMARY KEY (accommodation_declaration_person_id); + +ALTER TABLE accommodation_declaration_person + ADD CONSTRAINT fk_accommodation_declaration_person_posting_allowances FOREIGN KEY ( posting_allowance_id ) + REFERENCES posting_allowances ( posting_allowance_id ); + +CREATE SEQUENCE seq_accommodation_declaration_person MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE; + +CREATE TABLE aud_accommodation_declaration_person +( + rev NUMBER(10, 0) NOT NULL, + revtype NUMBER(3, 0), + accommodation_declaration_person_id NUMBER, + posting_allowance_id NUMBER, + per_id NUMBER, + relative_per_id NUMBER, + relation VARCHAR2(100 BYTE), + joining_accommodation CHAR(1 BYTE) DEFAULT 'N', + created_by NUMBER, + created_at TIMESTAMP(6), + updated_by NUMBER , + updated_at TIMESTAMP(6) +); + + + diff --git a/e-rights-common/src/main/database/release/5.0.0/05_RIGD-3740_mv_staffmembers.sql b/e-rights-common/src/main/database/release/5.0.0/05_RIGD-3740_mv_staffmembers.sql new file mode 100644 index 0000000..556122f --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/05_RIGD-3740_mv_staffmembers.sql @@ -0,0 +1,359 @@ +DROP MATERIALIZED VIEW "MV_STAFFMEMBERS"; + +CREATE MATERIALIZED VIEW "MV_STAFFMEMBERS" ( "PER_ID", "FIRST_NAME", "LAST_NAME", "GENDER", "EMAIL", "BIRTH_CITY", "BIRTH_COUNTRY_CODE" +, "BIRTH_COUNTRY_DESC", "RECRUITMENT_CITY", "RECRUITMENT_COUNTRY", "ORGANIZATION_NAME", "ORGANIZATION_CITY", "ORGANIZATION_COUNTRY", "ORG_ID" +, "JOB_ID", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "ORG_CD", "ORIGIN_CITY", "ORIGIN_COUNTRY_CODE" +, "ORIGIN_COUNTRY_DESC", "STATUTORY_LINK_CODE", "STATUTORY_LINK_DESC", "SOJ_ID","USERID" ) DEFAULT COLLATION "USING_NLS_COMP" + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND +AS +SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + p.assign_start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM p.assign_end_date) IN ( 9999, 2099 ) ) THEN + TO_DATE(NULL) + ELSE + p.assign_end_date + END AS assign_end_date, + p.org_cd AS org_cd, + o.place_of_origin AS origin_city, + o.country_code AS origin_country_code, + o.country_of_origin AS origin_country_desc, + p.lst_cd AS statutory_link_code, + p.lst_desc AS statutory_link_desc, + assign.soj_id AS soj_id, + userid +FROM + ( + SELECT + p.per_id, + p.first_name, + p.surname, + p.genre, + p.email, + p.place_of_birth, + p.country_of_birth, + p.org_cd, + p.org_id, + p.job_id, + p.assign_start_date, + p.assign_end_date, + p.lst_cd, + p.lst_code lst_desc, + p.userid + + FROM + mv_persons_eeas p + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + userid + FROM + mv_persons_hist_eeas phe + WHERE + coalesce(phe.start_date, sysdate) = ( + SELECT + coalesce(MAX(phe2.start_date), + sysdate) + FROM + mv_persons_hist_eeas phe2 + WHERE + phe.per_id = phe2.per_id + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities e ON p.org_id = e.org_id + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN v_places_of_origin o ON p.per_id = o.per_id + LEFT JOIN mv_assignments_eeas assign ON ( assign.toj_cd = 'AFF' + AND p.per_id = assign.per_id ) +UNION ALL +SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + assign.start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM assign.end_date) IN ( 2099, 9999 ) ) THEN + TO_DATE(NULL) + ELSE + assign.end_date + END AS assign_end_date, + p.org_cd AS org_cd, + o.place_of_origin AS origin_city, + o.country_code AS origin_country_code, + o.country_of_origin AS origin_country_desc, + p.lst_cd AS statutory_link_code, + p.lst_desc AS statutory_link_desc, + assign.soj_id AS soj_id, + p.userid AS userid +FROM + ( + SELECT + p.per_id, + p.first_name, + p.surname, + p.genre, + p.email, + p.place_of_birth, + p.country_of_birth, + p.org_cd, + p.org_id, + p.job_id, + p.lst_cd, + p.lst_code lst_desc, + p.userid + FROM + mv_persons_com p + WHERE + p.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL, + userid + FROM + mv_persons_hist_com phc + WHERE + coalesce(phc.start_date, sysdate) = ( + SELECT + coalesce(MAX(phc2.start_date), + sysdate) + FROM + mv_persons_hist_com phc2 + WHERE + phc.per_id = phc2.per_id + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities_hist_com e ON p.org_id = e.org_id + AND trunc(sysdate) < trunc(e.end_date) + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_assignments_com assign ON assign.per_id = p.per_id + AND assign.toj_cd = 'AFF' + LEFT JOIN v_places_of_origin o ON p.per_id = o.per_id; + + +CREATE INDEX "IX_MV_STAFFMEMBERS_PER_ID" ON + "MV_STAFFMEMBERS" ( + "PER_ID" + ); + +CREATE INDEX "IX_MV_STAFFMEMBERS_EMAIL" ON + "MV_STAFFMEMBERS" ( + "EMAIL" + ); + +GRANT SELECT ON mv_staffmembers TO erights_ro; + +INSERT INTO erights.t_refresh_objects ( + id, + app_object_name, + priority, + is_refreshed, + status, + refresh_date, + system +) VALUES ( + 48, + 'MV_STAFFMEMBERS', + 1002, + 'N', + 'KO', + NULL, + 'EASREFN' +); + +INSERT INTO t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 48, + 'MV_PERSONS_EEAS', + 1 +); + +INSERT INTO t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 48, + 'MV_PERSONS_HIST_EEAS', + 2 +); + +INSERT INTO t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 48, + 'MV_PERSONS_COM', + 3 +); + +INSERT INTO t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 48, + 'MV_PERSONS_HIST_COM', + 4 +); + +INSERT INTO t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 48, + 'MV_ENTITIES', + 5 +); + +INSERT INTO t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 48, + 'MV_COUNTRIES', + 6 +); + +INSERT INTO t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 48, + 'MV_ENTITIES_HIST_COM', + 7 +); + +INSERT INTO t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 48, + 'MV_ASSIGNMENTS_COM', + 8 +); + +INSERT INTO t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 48, + 'MV_PERSON_NATIONALITIES', + 9 +); + +INSERT INTO t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 48, + 'MV_PERSON_ADDRESS_HIST', + 10 +); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/5.0.0/06_RIGD-3740_v_staffmembers.sql b/e-rights-common/src/main/database/release/5.0.0/06_RIGD-3740_v_staffmembers.sql new file mode 100644 index 0000000..84c815b --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/06_RIGD-3740_v_staffmembers.sql @@ -0,0 +1,60 @@ +CREATE OR REPLACE VIEW v_staffmembers ( + per_id, + first_name, + last_name, + gender, + email, + birth_city, + birth_country_code, + birth_country_desc, + recruitment_city, + recruitment_country, + organization_name, + organization_city, + organization_country, + org_id, + job_id, + assign_start_date, + assign_end_date, + org_cd, + private_email, + private_email_source, + origin_city, + origin_country_code, + origin_country_desc, + statutory_link_code, + statutory_link_desc, + userid +) AS + SELECT + s.per_id, + s.first_name, + s.last_name, + s.gender, + s.email, + s.birth_city, + s.birth_country_code, + s.birth_country_desc, + s.recruitment_city, + s.recruitment_country, + s.organization_name, + s.organization_city, + s.organization_country, + s.org_id, + s.job_id, + s.assign_start_date, + s.assign_end_date, + s.org_cd, + em.email AS private_email, + em.source AS private_email_source, + s.origin_city, + s.origin_country_code, + s.origin_country_desc, + s.statutory_link_code, + s.statutory_link_desc, + s.userid + FROM + mv_staffmembers s + LEFT JOIN v_persons_emails em ON em.per_id = s.per_id; + +GRANT SELECT ON v_staffmembers TO erights_ro; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/5.0.0/07_RIGD-3740_v_staffmembers_accommodation.sql b/e-rights-common/src/main/database/release/5.0.0/07_RIGD-3740_v_staffmembers_accommodation.sql new file mode 100644 index 0000000..edc4850 --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/07_RIGD-3740_v_staffmembers_accommodation.sql @@ -0,0 +1,92 @@ +CREATE OR REPLACE VIEW v_staffmembers_accommodation ( + per_id, + first_name, + last_name, + gender, + email, + birth_city, + birth_country_code, + birth_country_desc, + recruitment_city, + recruitment_country, + organization_name, + organization_city, + organization_country, + org_id, + job_id, + assign_start_date, + assign_end_date, + org_cd, + private_email, + private_email_source, + origin_city, + origin_country_code, + origin_country_desc, + statutory_link_code, + statutory_link_desc, + soj_id +) AS + SELECT + p.per_id, + p.first_name, + p.last_name, + p.gender, + p.email, + p.birth_city, + p.birth_country_code, + p.birth_country_desc, + p.recruitment_city, + p.recruitment_country, + p.organization_name, + p.organization_city, + p.organization_country, + p.org_id, + p.job_id, + p.assign_start_date, + p.assign_end_date, + p.org_cd, + em.email AS private_email, + em.source AS private_email_source, + p.origin_city, + p.origin_country_code, + p.origin_country_desc, + p.statutory_link_code, + p.statutory_link_desc, + p.soj_id + FROM + mv_staffmembers p + LEFT JOIN v_persons_emails em ON em.per_id = p.per_id + WHERE + NOT EXISTS ( + SELECT + 1 + FROM + posting_allowances pa + WHERE + pa.per_id = p.per_id + AND pa.posting_allowance_type = 'ART.23 ACCOMMODATION' + AND pa.posting_allowance_req_type = 'DECLARATION' + AND pa.state <> 'COMPLETED' + ) + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_head_of_delegations hod + WHERE + hod.per_id = p.per_id + ) + AND p.statutory_link_code IN ( 'TMD', 'TP', 'TT', 'TC', 'CA', + 'CB', 'FMD', 'FP', 'FS' ) + AND EXISTS ( + SELECT + 1 + FROM + mv_jobs j + INNER JOIN delegation_details dd ON ( dd.org_id = j.delegation_org_id ) + WHERE + dd.housing_policy = 'ART23' + AND p.job_id = j.job_id + ); + +GRANT SELECT ON v_staffmembers_accommodation TO erights_ro; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/5.0.0/08_RIGD-3737_posting_allowances_supporting_doc_create.sql b/e-rights-common/src/main/database/release/5.0.0/08_RIGD-3737_posting_allowances_supporting_doc_create.sql new file mode 100644 index 0000000..d913dde --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/08_RIGD-3737_posting_allowances_supporting_doc_create.sql @@ -0,0 +1,82 @@ +CREATE TABLE posting_allowances_supporting_docs +( + posting_allowances_supporting_doc_id NUMBER NOT NULL, + posting_allowance_id NUMBER NOT NULL, + comments_id NUMBER, + doc_type VARCHAR2(80 CHAR) NOT NULL, + doc_order NUMBER, + doc_mandatory CHAR(1) DEFAULT 'N', + created_by NUMBER NOT NULL, + created_at TIMESTAMP(6) NOT NULL, + updated_by NUMBER NOT NULL, + updated_at TIMESTAMP(6) NOT NULL +); + +ALTER TABLE posting_allowances_supporting_docs + ADD CONSTRAINT pk_posting_allowances_supporting_docs PRIMARY KEY (posting_allowances_supporting_doc_id + ); + +ALTER TABLE posting_allowances_supporting_docs + ADD CONSTRAINT fk_posting_allowances_supporting_docs_posting_allowances FOREIGN KEY (posting_allowance_id) + REFERENCES posting_allowances (posting_allowance_id); + +ALTER TABLE posting_allowances_supporting_docs + ADD CONSTRAINT fk_posting_allowances_supporting_docs_comments FOREIGN KEY (comments_id) + REFERENCES comments (comments_id); + +ALTER TABLE posting_allowances_supporting_docs + ADD CONSTRAINT posting_allowances_supporting_docs_posting_allowance_id_doc_type UNIQUE + (posting_allowance_id, + doc_type); + +COMMENT ON COLUMN posting_allowances_supporting_docs.doc_type IS + 'Represents the document type to be uploaded e.g. Utility bill or Proof of property deed'; + +COMMENT ON COLUMN posting_allowances_supporting_docs.doc_order IS + 'Represents the document order on the screen'; + +COMMENT ON COLUMN posting_allowances_supporting_docs.doc_mandatory IS + 'Represents either the document is mandatory or not'; + +CREATE SEQUENCE seq_posting_allowances_supporting_docs MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER + NOCYCLE; + +CREATE TABLE posting_allowances_supporting_doc_atts +( + posting_allowances_supporting_doc_att_id NUMBER NOT NULL, + posting_allowances_supporting_doc_id NUMBER NOT NULL, + uuid RAW(16) NOT NULL, + file_name VARCHAR2(200 BYTE) NOT NULL, + created_by NUMBER NOT NULL, + created_at TIMESTAMP(6) NOT NULL, + updated_by NUMBER NOT NULL, + updated_at TIMESTAMP(6) NOT NULL +); + +ALTER TABLE posting_allowances_supporting_doc_atts + ADD CONSTRAINT pk_posting_allowances_supporting_doc_atts PRIMARY KEY (posting_allowances_supporting_doc_att_id + ); + +ALTER TABLE posting_allowances_supporting_doc_atts + ADD CONSTRAINT fk_posting_allowances_supporting_doc_atts_posting_allowances_supporting_docs FOREIGN KEY (posting_allowances_supporting_doc_id) + REFERENCES posting_allowances_supporting_docs (posting_allowances_supporting_doc_id); + +CREATE SEQUENCE seq_posting_allowances_supporting_doc_atts MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER + NOCYCLE; + + +CREATE TABLE aud_posting_allowances_supporting_docs +( + rev NUMBER(10, 0) NOT NULL, + revtype NUMBER(3, 0), + posting_allowances_supporting_doc_id NUMBER, + posting_allowance_id NUMBER, + comments_id NUMBER, + doc_type VARCHAR2(80 CHAR), + doc_order NUMBER, + doc_mandatory CHAR(1) DEFAULT 'N', + created_by NUMBER, + created_at TIMESTAMP(6), + updated_by NUMBER, + updated_at TIMESTAMP(6) +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/5.0.0/09_RIGD-3800_update_accommodation_declaration_posting_allowance_type.sql b/e-rights-common/src/main/database/release/5.0.0/09_RIGD-3800_update_accommodation_declaration_posting_allowance_type.sql new file mode 100644 index 0000000..1a8a2e3 --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/09_RIGD-3800_update_accommodation_declaration_posting_allowance_type.sql @@ -0,0 +1,6 @@ +ALTER TABLE posting_allowances MODIFY POSTING_ALLOWANCE_TYPE VARCHAR(30); + +UPDATE posting_allowances + SET POSTING_ALLOWANCE_TYPE = 'ART.23 ACCOMMODATION' + WHERE POSTING_ALLOWANCE_TYPE = 'ACCOMMODATION'; +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/5.0.0/10_RIGD-3783_accommodation_bank_accounts_sync_failed_create.sql b/e-rights-common/src/main/database/release/5.0.0/10_RIGD-3783_accommodation_bank_accounts_sync_failed_create.sql new file mode 100644 index 0000000..97bcd2f --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/10_RIGD-3783_accommodation_bank_accounts_sync_failed_create.sql @@ -0,0 +1,47 @@ +INSERT INTO app_parameters (parameter_id, + parameter_type, + parameter_key, + parameter_value) +VALUES ('68', + 'POSTING_ALLOWANCES', + 'ACCOMMODATION_BANK_ACCOUNTS_SYNC_NUM_ROWS', + '5'); + +INSERT INTO app_parameters (parameter_id, + parameter_type, + parameter_key, + parameter_value) +VALUES ('69', + 'POSTING_ALLOWANCES', + 'ACCOMMODATION_BANK_ACCOUNTS_SYNC_MAX_RETRIES', + '2'); + +COMMIT; + +INSERT INTO app_parameters (parameter_id, + parameter_type, + parameter_key, + parameter_value) +VALUES ('70', + 'POSTING_ALLOWANCES', + 'ACCOMMODATION_BANK_ACCOUNTS_SYNC_DELAY', + '10'); + +COMMIT; + +CREATE TABLE accommodation_bank_accounts_sync_failed +( + accommodation_bank_accounts_sync_failed_id NUMBER, + per_id NUMBER NOT NULL, + failure_no NUMBER NOT NULL, + failure_description VARCHAR2(4000 BYTE), + created_date TIMESTAMP(6) NOT NULL, + updated_date TIMESTAMP(6) NOT NULL +); + +ALTER TABLE accommodation_bank_accounts_sync_failed + ADD CONSTRAINT pk_accommodation_bank_accounts_sync_failed + PRIMARY KEY (accommodation_bank_accounts_sync_failed_id); + +CREATE SEQUENCE seq_accommodation_bank_accounts_sync_failed MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE; + diff --git a/e-rights-common/src/main/database/release/5.0.0/11_RIGD-3751_posting_allowances_alter.sql b/e-rights-common/src/main/database/release/5.0.0/11_RIGD-3751_posting_allowances_alter.sql new file mode 100644 index 0000000..ee1a3ce --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/11_RIGD-3751_posting_allowances_alter.sql @@ -0,0 +1,71 @@ +ALTER TABLE posting_allowances + RENAME COLUMN + rental_contract_start_date TO rental_start_date; +COMMENT ON COLUMN posting_allowances.rental_start_date IS + 'Accommodation Declaration - Start date of rental contract. Accommodation Payment - Start date of rental cover period'; +ALTER TABLE aud_posting_allowances + RENAME COLUMN + rental_contract_start_date TO rental_start_date; + +ALTER TABLE posting_allowances + RENAME COLUMN + rental_contract_end_date TO rental_end_date; +COMMENT ON COLUMN posting_allowances.rental_end_date IS + 'Accommodation Declaration - End date of rental contract. Accommodation Payment - End date of rental cover period'; +ALTER TABLE aud_posting_allowances + RENAME COLUMN + rental_contract_end_date TO rental_end_date; + +ALTER TABLE posting_allowances + ADD + non_recurrent_costs NUMBER; +COMMENT ON COLUMN posting_allowances.non_recurrent_costs IS + 'Accommodation Payment - Non recurrent costs'; +ALTER TABLE aud_posting_allowances + ADD + non_recurrent_costs NUMBER; + +ALTER TABLE posting_allowances + ADD + non_recurrent_costs_currency VARCHAR2(3 CHAR); +COMMENT ON COLUMN posting_allowances.non_recurrent_costs_currency IS + 'Accommodation Payment - Non recurrent costs currency'; +ALTER TABLE aud_posting_allowances + ADD + non_recurrent_costs_currency VARCHAR2(3 CHAR); + +ALTER TABLE posting_allowances + ADD + non_recurrent_costs_description VARCHAR2(4000 CHAR); +COMMENT ON COLUMN posting_allowances.non_recurrent_costs_description IS + 'Accommodation Payment - Non recurrent costs description'; +ALTER TABLE aud_posting_allowances + ADD + non_recurrent_costs_description VARCHAR2(4000 CHAR); + +ALTER TABLE posting_allowances + ADD + multiplying_factor NUMBER; +COMMENT ON COLUMN posting_allowances.multiplying_factor IS + 'Accommodation Payment - Multiplying factor'; +ALTER TABLE aud_posting_allowances + ADD + multiplying_factor NUMBER; + +ALTER TABLE posting_allowances + ADD + guarantee_reimbursed_amount NUMBER; +COMMENT ON COLUMN posting_allowances.guarantee_reimbursed_amount IS + 'Accommodation Payment - Guarantee reimbursed amount'; +ALTER TABLE aud_posting_allowances + ADD + guarantee_reimbursed_amount NUMBER; + +ALTER TABLE posting_allowances + ADD + guarantee_reimbursed_amount_currency VARCHAR2(3 CHAR); +COMMENT ON COLUMN posting_allowances.guarantee_reimbursed_amount_currency IS + 'Accommodation Payment - Guarantee reimbursed amount currency'; +ALTER TABLE aud_posting_allowances + ADD + guarantee_reimbursed_amount_currency VARCHAR2(3 CHAR); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/5.0.0/12_RIGD-3834_posting_allowances_Alter.sql b/e-rights-common/src/main/database/release/5.0.0/12_RIGD-3834_posting_allowances_Alter.sql new file mode 100644 index 0000000..aeaffb3 --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/12_RIGD-3834_posting_allowances_Alter.sql @@ -0,0 +1,32 @@ +ALTER TABLE posting_allowances ADD + file_uniqueness_key GENERATED ALWAYS AS ( + CASE posting_allowance_type + WHEN 'ANNUAL TRAVEL' THEN + 0 + WHEN 'ART.23 ACCOMMODATION' THEN + posting_allowance_id + ELSE + posting_allowance_id + END + ); + +ALTER TABLE posting_allowances DROP CONSTRAINT uk_posting_allowances_per_id_soj_id_exercise_year_posting_allowance_type_parent_posting_allowance_id +; + +ALTER TABLE posting_allowances + ADD CONSTRAINT uk_posting_allowances_per_id_soj_id_exercise_year_posting_allowance_type_parent_posting_allowance_id UNIQUE ( per_id + , + soj_id + , + exercise_year + , + posting_allowance_type + , + parent_posting_allowance_id + , + file_uniqueness_key + ); + +COMMENT ON COLUMN posting_allowances.file_uniqueness_key IS + 'Technical column used for ensuring uniqueness of the record based on its type: One per staff member, year, assignment, parent posting allowance for travel allowance; multiple for the other types' + ; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/5.0.0/13_RIGD-3662_posting_allowances_alter.sql b/e-rights-common/src/main/database/release/5.0.0/13_RIGD-3662_posting_allowances_alter.sql new file mode 100644 index 0000000..d812223 --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/13_RIGD-3662_posting_allowances_alter.sql @@ -0,0 +1,6 @@ +-- in order to fit new Accommodation Payments states +ALTER TABLE posting_allowances MODIFY + state VARCHAR(20); + +ALTER TABLE aud_posting_allowances MODIFY + state VARCHAR(20); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/5.0.0/14_RIGD-3682_posting_allowances_alter.sql b/e-rights-common/src/main/database/release/5.0.0/14_RIGD-3682_posting_allowances_alter.sql new file mode 100644 index 0000000..425662b --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/14_RIGD-3682_posting_allowances_alter.sql @@ -0,0 +1,45 @@ +-- in order to save abac payment details +ALTER TABLE posting_allowances + ADD (abac_payment_order VARCHAR2(20)); + +COMMENT ON COLUMN posting_allowances.abac_payment_order IS + 'Abac payment order reference when accommodation payment is marked manually as paid'; + +ALTER TABLE posting_allowances + ADD (abac_payment_request VARCHAR2(20)); + +COMMENT ON COLUMN posting_allowances.abac_payment_order IS + 'Abac payment request reference when accommodation payment is marked manually as paid'; + +ALTER TABLE posting_allowances + ADD (abac_payment_date DATE); + +COMMENT ON COLUMN posting_allowances.abac_payment_date IS + 'Abac payment date when accommodation payment is marked manually as paid'; + +ALTER TABLE posting_allowances + ADD (abac_state VARCHAR2(50)); + +COMMENT ON COLUMN posting_allowances.abac_state IS + 'Stores the type of abac payment'; + +ALTER TABLE posting_allowances + ADD (abac_workflow_state VARCHAR2(50)); + +COMMENT ON COLUMN posting_allowances.abac_workflow_state IS + 'Used to update the state of abac payment state after manual payment'; + +ALTER TABLE aud_posting_allowances + ADD (abac_payment_order VARCHAR2(20)); + +ALTER TABLE aud_posting_allowances + ADD (abac_payment_request VARCHAR2(20)); + +ALTER TABLE aud_posting_allowances + ADD (abac_payment_date DATE); + +ALTER TABLE aud_posting_allowances + ADD (abac_state VARCHAR2(50)); + +ALTER TABLE aud_posting_allowances + ADD (abac_workflow_state VARCHAR2(50)); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/5.0.0/15_RIGD-3863_posting_allowances_alter.sql b/e-rights-common/src/main/database/release/5.0.0/15_RIGD-3863_posting_allowances_alter.sql new file mode 100644 index 0000000..463244d --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/15_RIGD-3863_posting_allowances_alter.sql @@ -0,0 +1,36 @@ + +ALTER TABLE posting_allowances + ADD (acc_total_amount NUMBER); + +COMMENT ON COLUMN posting_allowances.acc_total_amount IS + 'Accommodation total amount'; + +ALTER TABLE posting_allowances + ADD (acc_total_amount_cur VARCHAR2(3)); + +COMMENT ON COLUMN posting_allowances.acc_total_amount_cur IS + 'Accommodation total amount currency'; + +ALTER TABLE posting_allowances + ADD (acc_subtotal_amount NUMBER); + +COMMENT ON COLUMN posting_allowances.acc_subtotal_amount IS + 'Accommodation sub total amount'; + +ALTER TABLE posting_allowances + ADD (acc_subtotal_currency VARCHAR2(3)); + +COMMENT ON COLUMN posting_allowances.acc_subtotal_currency IS + 'Accommodation sub total amount currency'; + +ALTER TABLE aud_posting_allowances + ADD (acc_total_amount NUMBER); + +ALTER TABLE aud_posting_allowances + ADD (acc_total_amount_cur VARCHAR2(3)); + +ALTER TABLE aud_posting_allowances + ADD (acc_subtotal_amount NUMBER); + +ALTER TABLE aud_posting_allowances + ADD (acc_subtotal_currency VARCHAR2(3)); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/5.0.0/15_RIGD-3883_budget_lines_mapping.sql b/e-rights-common/src/main/database/release/5.0.0/15_RIGD-3883_budget_lines_mapping.sql new file mode 100644 index 0000000..77b46c2 --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/15_RIGD-3883_budget_lines_mapping.sql @@ -0,0 +1,21 @@ +CREATE TABLE budget_lines_mapping ( + budget_lines_mapping NUMBER + CONSTRAINT pk_budget_lines_mapping PRIMARY KEY, + from_budget_line VARCHAR2(200) NOT NULL, -- e.g. 3000-C1-EEAS + to_budget_line VARCHAR2(200) NOT NULL, -- e.g. 3003-C1-EEAS + request_type VARCHAR2(50), -- e.g. ACCOMODATION + created_at DATE, + created_by NUMBER, + updated_by NUMBER, + updated_at DATE +); + +ALTER TABLE budget_lines_mapping ADD CONSTRAINT uk_budget_lines_mapping_from_budget_line UNIQUE ( from_budget_line, request_type ); + +CREATE SEQUENCE seq_budget_lines_mapping MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE NOKEEP +NOSCALE GLOBAL; + +COMMENT ON TABLE budget_lines_mapping IS 'Mapping for budget lines which must changed for some request types'; +COMMENT ON COLUMN budget_lines_mapping.from_budget_line IS 'Source budget lines to be changed'; +COMMENT ON COLUMN budget_lines_mapping.to_budget_line IS 'Target budget lines to be used'; +COMMENT ON COLUMN budget_lines_mapping.request_type IS 'Request Type: ACCOMODATION, TUD, etc.'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/5.0.0/16_RIGD-3762_Insert_Budget_lines_mapping.sql b/e-rights-common/src/main/database/release/5.0.0/16_RIGD-3762_Insert_Budget_lines_mapping.sql new file mode 100644 index 0000000..193a81c --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/16_RIGD-3762_Insert_Budget_lines_mapping.sql @@ -0,0 +1,21 @@ +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (1,'3000-C1-EEAS','3003-C1-EEAS','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (2,'3001-C1-EEAS','3003-C1-EEAS','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (3,'3002-C1-EEAS','3003-C1-EEAS','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (4,'3005.01.01.CNT','3005.01.01.CNT','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (5,'3005.01.01.RTD','3005.01.01.RTD','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (6,'3005.08.01.MAR','3005.08.01.MAR','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (7,'3005.14.01.FPI','3005.14.01.FPI','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (8,'3005.14.01.INT','3005.14.01.INT','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (9,'3005.14.01.NEA','3005.14.01.NEA','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (10,'3005.15.01.AGR','3005.15.01.AGR','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (11,'3005.15.01.NEA','3005.15.01.NEA','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (12,'3005.15.01.NEA.R0','3005.15.01.NEA.R0','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (13,'3005.16.T4.NEA','3005.16.T4.NEA','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (14,'3005.16.T5.INT','3005.16.T5.INT','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (15,'3005.16.T5.NEA','3005.16.T5.NEA','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (16,'3005.16.T6.INT','3005.16.T6.INT','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (17,'3005.20.01.INT','3005.20.03.INT','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (18,'3005.20.02.INT','3005.20.02.INT','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (19,'3005.20.03.OLA','3005.20.03.OLA','ACCOMMODATION',SYSDATE,90362597,null,null); +Insert into BUDGET_LINES_MAPPING (BUDGET_LINES_MAPPING,FROM_BUDGET_LINE,TO_BUDGET_LINE,REQUEST_TYPE,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT) values (20,'3005.16.T3.INT','3005.16.T3.INT','ACCOMMODATION',SYSDATE,90362597,null,null); + diff --git a/e-rights-common/src/main/database/release/5.0.0/17_RIGD-3762_posting_allowances_alter.sql b/e-rights-common/src/main/database/release/5.0.0/17_RIGD-3762_posting_allowances_alter.sql new file mode 100644 index 0000000..1bee53b --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/17_RIGD-3762_posting_allowances_alter.sql @@ -0,0 +1,11 @@ + +ALTER TABLE posting_allowances + ADD (budget_line varchar2(20)); + +COMMENT ON COLUMN posting_allowances.budget_line IS + 'Budget line related to the job post'; + +ALTER TABLE aud_posting_allowances + ADD (budget_line varchar2(20)); + + diff --git a/e-rights-common/src/main/database/release/5.0.0/18_RIGD-3762_insert_budget_lines_subposts_mapping.sql b/e-rights-common/src/main/database/release/5.0.0/18_RIGD-3762_insert_budget_lines_subposts_mapping.sql new file mode 100644 index 0000000..8badc92 --- /dev/null +++ b/e-rights-common/src/main/database/release/5.0.0/18_RIGD-3762_insert_budget_lines_subposts_mapping.sql @@ -0,0 +1,43 @@ +/*********/ +NOT RUN +/*********/ + + +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (105,'EEAS-B2024-3003-C1-EEAS DELEASBHR6 A6006','3003','3003-C1-EEAS','C1','ACCOMMODATION','Officials and CA','A600602','OFFICIALS/CA - HOUSING - RENT',1,'NA','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (106,'EEAS-B2024-3003-C1-EEAS DELEASBHR6 A6006','3003','3003-C1-EEAS','C1','ACCOMMODATION','Officials and CA','A600626','OFFICIALS/CA - HOUSING - GUARDING COSTS',1,'NA','SECURITY_COST',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (107,'EEAS-B2021-3005.01.01.CNT-C4-EEAS DELEASBS4 B3401','3005.01.01.CNT','3005.01.01.CNT','C4','ACCOMMODATION','Officials and CA','B340104','HOUSING - RENT',1,'NA','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (108,'EEAS-B2021-3005.01.01.CNT-C4-EEAS DELEASBS4 B3401','3005.01.01.CNT','3005.01.01.CNT','C4','ACCOMMODATION','Officials and CA','B340120','HOUSING - GUARDING COSTS',1,'NA','SECURITY_COST',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (109,'EEAS-B2021-3005.08.01.MAR-C4-EEAS DELEASBS4 B3401','3005.08.01.MAR','3005.08.01.MAR','C4','ACCOMMODATION','Officials and CA','B340104','HOUSING - RENT',1,'NA','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (110,'EEAS-B2021-3005.08.01.MAR-C4-EEAS DELEASBS4 B3401','3005.08.01.MAR','3005.08.01.MAR','C4','ACCOMMODATION','Officials and CA','B340120','HOUSING - GUARDING COSTS',1,'NA','SECURITY_COST',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (111,'EEAS-B2021-3005.14.01.FPI-C4-EEAS DELEASBS4 B3401','3005.14.01.FPI','3005.14.01.FPI','C4','ACCOMMODATION','Officials and CA','B340104','HOUSING - RENT',1,'NA','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (112,'EEAS-B2021-3005.14.01.FPI-C4-EEAS DELEASBS4 B3401','3005.14.01.FPI','3005.14.01.FPI','C4','ACCOMMODATION','Officials and CA','B340120','HOUSING - GUARDING COSTS',1,'NA','SECURITY_COST',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (113,'EEAS-B2021-3005.14.01.INT-C4-EEAS DELEASBS4 B3401','3005.14.01.INT','3005.14.01.INT','C4','ACCOMMODATION','Officials and CA','B340104','HOUSING - RENT',1,'NA','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (114,'EEAS-B2021-3005.14.01.INT-C4-EEAS DELEASBS4 B3401','3005.14.01.INT','3005.14.01.INT','C4','ACCOMMODATION','Officials and CA','B340120','HOUSING - GUARDING COSTS',1,'NA','SECURITY_COST',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (115,'EEAS-B2021-3005.14.01.NEA-C4-EEAS DELEASBS4 B3401','3005.14.01.NEA','3005.14.01.NEA','C4','ACCOMMODATION','Officials and CA','B340104','HOUSING - RENT',1,'NA','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (116,'EEAS-B2021-3005.14.01.NEA-C4-EEAS DELEASBS4 B3401','3005.14.01.NEA','3005.14.01.NEA','C4','ACCOMMODATION','Officials and CA','B340120','HOUSING - GUARDING COSTS',1,'NA','SECURITY_COST',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (117,'EEAS-B2021-3005.15.01.AGR-C4-EEAS DELEASBS4 B3401','3005.15.01.AGR','3005.15.01.AGR','C4','ACCOMMODATION','Officials and CA','B340104','HOUSING - RENT',1,'NA','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (118,'EEAS-B2021-3005.15.01.AGR-C4-EEAS DELEASBS4 B3401','3005.15.01.AGR','3005.15.01.AGR','C4','ACCOMMODATION','Officials and CA','B340120','HOUSING - GUARDING COSTS',1,'NA','SECURITY_COST',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (119,'EEAS-B2021-3005.15.01.NEA-C4-EEAS DELEASBS4 B3401','3005.15.01.NEA','3005.15.01.NEA','C4','ACCOMMODATION','Officials and CA','B340104','HOUSING - RENT',1,'NA','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (120,'EEAS-B2021-3005.15.01.NEA-C4-EEAS DELEASBS4 B3401','3005.15.01.NEA','3005.15.01.NEA','C4','ACCOMMODATION','Officials and CA','B340120','HOUSING - GUARDING COSTS',1,'NA','SECURITY_COST',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (121,'EEAS-B2021-3005.15.01.NEA-R0-EEAS 2021 DELEASBS4 B3401','3005.15.01.NEA','3005.15.01.NEA.R0','R0','ACCOMMODATION','Officials and CA','B340104','HOUSING - RENT',1,'NA','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (122,'EEAS-B2021-3005.15.01.NEA-R0-EEAS 2021 DELEASBS4 B3401','3005.15.01.NEA','3005.15.01.NEA.R0','R0','ACCOMMODATION','Officials and CA','B340120','HOUSING - GUARDING COSTS',1,'NA','SECURITY_COST',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (123,'EEAS-B2021-3005.16.T4.NEA-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T4.NEA','3005.16.T4.NEA','R0','ACCOMMODATION','Officials and CA','B340104','HOUSING - RENT',1,'NA','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (124,'EEAS-B2021-3005.16.T4.NEA-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T4.NEA','3005.16.T4.NEA','R0','ACCOMMODATION','Officials and CA','B340120','HOUSING - GUARDING COSTS',1,'NA','SECURITY_COST',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (125,'EEAS-B2021-3005.16.T5.INT-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T5.INT','3005.16.T5.INT','R0','ACCOMMODATION','Officials and CA','B340104','HOUSING - RENT',1,'NA','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (126,'EEAS-B2021-3005.16.T5.INT-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T5.INT','3005.16.T5.INT','R0','ACCOMMODATION','Officials and CA','B340120','HOUSING - GUARDING COSTS',1,'NA','SECURITY_COST',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (127,'EEAS-B2021-3005.16.T5.NEA-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T5.NEA','3005.16.T5.NEA','R0','ACCOMMODATION','Officials and CA','B340104','HOUSING - RENT',1,'NA','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (128,'EEAS-B2021-3005.16.T5.NEA-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T5.NEA','3005.16.T5.NEA','R0','ACCOMMODATION','Officials and CA','B340120','HOUSING - GUARDING COSTS',1,'NA','SECURITY_COST',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (129,'EEAS-B2021-3005.16.T6.INT-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T6.INT','3005.16.T6.INT','R0','ACCOMMODATION','Officials and CA','B340104','HOUSING - RENT',1,'NA','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (130,'EEAS-B2021-3005.16.T6.INT-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T6.INT','3005.16.T6.INT','R0','ACCOMMODATION','Officials and CA','B340120','HOUSING - GUARDING COSTS',1,'NA','SECURITY_COST',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (131,'EEAS-B2024-3005.20.03.INT-C4-EEAS DELEASBHR6 B3306','3005.20.03.INT','3005.20.03.INT','C4','ACCOMMODATION','Officials','B330602','HOUSING - RENT',1,'FP','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (132,'EEAS-B2024-3005.20.03.INT-C4-EEAS DELEASBHR6 B3306','3005.20.03.INT','3005.20.03.INT','C4','ACCOMMODATION','Officials','B330626','HOUSING - GUARDING COSTS',1,'FP','SECURITY_COST',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (133,'EEAS-B2021-3005.20.03.OLA-C4-EEAS DELEASBS4 B3401','3005.20.03.OLA','3005.20.03.OLA','C4','ACCOMMODATION','Officials and CA','B340104','HOUSING - RENT',1,'NA','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (134,'EEAS-B2021-3005.20.03.OLA-C4-EEAS DELEASBS4 B3401','3005.20.03.OLA','3005.20.03.OLA','C4','ACCOMMODATION','Officials and CA','B340120','HOUSING - GUARDING COSTS',1,'NA','SECURITY_COST',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (135,'EEAS-B2023-3005.16.T3.INT-R0-EEAS 2023 DELEASBHR6 B3401','3005.16.T3.INT ','3005.16.T3.INT','R0','ACCOMMODATION','Officials and CA','B340104','HOUSING - RENT',1,'NA','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (136,'EEAS-B2023-3005.16.T3.INT-R0-EEAS 2023 DELEASBHR6 B3401','3005.16.T3.INT ','3005.16.T3.INT','R0','ACCOMMODATION','Officials and CA','B340120','HOUSING - GUARDING COSTS',1,'NA','SECURITY_COST',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (137,'EEAS-B2021-3005.01.01.RTD-C4-EEAS DELEASBS4 B3401','3005.01.01.RTD','3005.01.01.RTD','C4','ACCOMMODATION','Officials and CA','B340104','HOUSING - RENT',1,'NA','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (138,'EEAS-B2021-3005.01.01.RTD-C4-EEAS DELEASBS4 B3401','3005.01.01.RTD','3005.01.01.RTD','C4','ACCOMMODATION','Officials and CA','B340120','HOUSING - GUARDING COSTS',1,'NA','SECURITY_COST',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (139,'EEAS-B2021-3005.20.02.INT-C4-EEAS DELEASBS4 B3203','3005.20.02.INT','3005.20.02.INT','C4','ACCOMMODATION','Officials and CA','B340104','HOUSING - RENT',1,'NA','RENT',null); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE,MOVEMENT_CONTEXT) values (140,'EEAS-B2021-3005.20.02.INT-C4-EEAS DELEASBS4 B3203','3005.20.02.INT','3005.20.02.INT','C4','ACCOMMODATION','Officials and CA','B340120','HOUSING - GUARDING COSTS',1,'NA','SECURITY_COST',null); + +commit; diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC03/01.RIGD-398-MV_DELEGATION_STATUS.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/01.RIGD-398-MV_DELEGATION_STATUS.sql new file mode 100644 index 0000000..8bc3f2e --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/01.RIGD-398-MV_DELEGATION_STATUS.sql @@ -0,0 +1,30 @@ +DROP MATERIALIZED VIEW "ERIGHTS"."MV_DELEGATION_STATUS"; + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_DELEGATION_STATUS" +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) +TABLESPACE "ERIGHTS" + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT + alert_status_id, + org_id, + description, + severity_level, + evacuation_level_code_id, + evacuation_level_code, + family_posting_type_id, + family_posting_type + FROM + mv_delegation_status@easrefn.cc.cec.eu.int; + +COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_DELEGATION_STATUS" IS + 'snapshot table for snapshot ERIGHTS.MV_DELEGATION_STATUS'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC03/02.RIGD-393-V_JOBS.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/02.RIGD-393-V_JOBS.sql new file mode 100644 index 0000000..c2e7419 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/02.RIGD-393-V_JOBS.sql @@ -0,0 +1,200 @@ +CREATE OR REPLACE VIEW "V_JOBS" ( + "JOB_ID", + "JOB_MOMENT", + "JOB_TYPE", + "PERSONNEL_TYPE_DESC", + "BUDGETARY_LINE", + "JOB_CITY_CODE", + "JOB_CITY_NAME", + "JOB_COUNTRY_CODE", + "JOB_COUNTRY_NAME", + "ORGANIZATION_COUNTRY", + "ORGANIZATION_CITY", + "ORGANIZATION_NAME", + "ORGANIZATION_IN_EU", + "INT_ORG_CODE", + "INTERNATIONAL_ORGANIZATION", + "ORG_ID", + "ASSIGN_START_DATE_TO", + "ASSIGN_END_DATE_TO", + "PER_ID", + "SEVERITY_LEVEL", + "EVACUATION_LEVEL_CODE_ID", + "ALERT_STATUS_ID", + "EVACUATION_LEVEL_CODE", + "ORGANIZATION_COUNTRY_CODE", + "ORGANIZATION_CITY_CODE", + "FAMILY_POSTING_TYPE_ID", + "FAMILY_POSTING_TYPE" +) AS + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + ctr.eu_state AS organization_in_eu, + ent_typ.code AS int_org_code, + CASE + WHEN ent_typ.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + INNER JOIN mv_countries ctr ON enth.country_id = ctr.country_code + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_entities_types ent_typ ON enth.org_id = ent_typ.org_id + WHERE + job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate) + UNION + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + ctr.eu_state AS organization_in_eu, + ent_typ.code AS int_org_code, + CASE + WHEN ent_typ.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + INNER JOIN mv_countries ctr ON enth.country_id = ctr.country_code + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_entities_types ent_typ ON enth.org_id = ent_typ.org_id + WHERE + job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC03/03.RIGD-393-entitlements_full.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/03.RIGD-393-entitlements_full.sql new file mode 100644 index 0000000..d0645b3 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/03.RIGD-393-entitlements_full.sql @@ -0,0 +1,422 @@ +-------------------------------------------------------- +-- File created - Monday-February-08-2021 +-------------------------------------------------------- +DROP TABLE "ENTITLMNT_MAXS" cascade constraints; +DROP TABLE "ENTITLMNT_MAXS_CAT" cascade constraints; +DROP TABLE "ENTITLMNT_MAXS_DEFAULT" cascade constraints; +DROP TABLE "ENTITLMNT_MAXS_OPTIONS" cascade constraints; +DROP TABLE "ENTITLMNT_TYPES" cascade constraints; +DROP TABLE "ENTITLMNT_TYPES_CAT" cascade constraints; +DROP TABLE "ENTITLMNT_TYPES_DEFAULT" cascade constraints; +DROP TABLE "ENTITLMNTS" cascade constraints; +-------------------------------------------------------- +-- DDL for Table ENTITLMNT_MAXS +-------------------------------------------------------- + + CREATE TABLE "ENTITLMNT_MAXS" + ( "ENTITLMNT_TYPE_ID" NUMBER, + "ENTITLMNT_MAX_CAT_ID" NUMBER, + "ENTITLMNT_MAX_ID" NUMBER, + "MAX_VALUE" NUMBER(9,2), + "MAX_CURRENCY" VARCHAR2(3 CHAR), + "ENTITLMNT_TYPE_CAT_ID" NUMBER, + "ENTITLMNT_MAX_OPTIONS_ID" NUMBER, + "FLAT_RATE_DUPLICATOR" VARCHAR2(20 BYTE), + "COMMENTS" VARCHAR2(3000 BYTE) + ) ; + + COMMENT ON COLUMN "ENTITLMNT_MAXS"."FLAT_RATE_DUPLICATOR" IS 'value could be double or simple'; +-------------------------------------------------------- +-- DDL for Table ENTITLMNT_MAXS_CAT +-------------------------------------------------------- + + CREATE TABLE "ENTITLMNT_MAXS_CAT" + ( "ENTITLMNT_MAX_CAT_ID" NUMBER, + "ENTITLMNT_TYPE_CAT_ID" NUMBER, + "DESCRIPTION" VARCHAR2(4000 CHAR), + "CODE" VARCHAR2(50 BYTE), + "NON_FAMILY_POSTING" CHAR(1 BYTE), + "HOD" CHAR(1 BYTE), + "SUGGESTION" CHAR(1 BYTE) + ) ; +-------------------------------------------------------- +-- DDL for Table ENTITLMNT_MAXS_DEFAULT +-------------------------------------------------------- + + CREATE TABLE "ENTITLMNT_MAXS_DEFAULT" + ( "ENTITLMNT_MAX_DEFAULT_ID" NUMBER, + "CITY_CODE_TO" VARCHAR2(3 CHAR), + "CITY_CODE_FROM" VARCHAR2(3 CHAR), + "COUNTRY_CODE_TO" VARCHAR2(3 CHAR), + "COUNTRY_CODE_FROM" VARCHAR2(3 CHAR), + "CREATED_AT" DATE, + "CREATED_BY" NUMBER, + "UPDATED_BY" NUMBER, + "UPDATED_AT" DATE, + "AMOUNT" NUMBER, + "CURRENCY" VARCHAR2(3 BYTE), + "START_DATE" DATE, + "ENTITLMNT_MAX_CAT_ID" NUMBER, + "LATEST" CHAR(1 BYTE) DEFAULT 'Y' + ) ; +-------------------------------------------------------- +-- DDL for Table ENTITLMNT_MAXS_OPTIONS +-------------------------------------------------------- + + CREATE TABLE "ENTITLMNT_MAXS_OPTIONS" + ( "ENTITLMNT_MAX_OPTIONS_ID" NUMBER, + "DESCRIPTION" VARCHAR2(100 CHAR), + "VALUE_NUMBER" NUMBER, + "VALUE_STRING" VARCHAR2(100 CHAR), + "ENTITLMNT_MAX_CAT_ID" NUMBER + ) ; +-------------------------------------------------------- +-- DDL for Table ENTITLMNT_TYPES +-------------------------------------------------------- + + CREATE TABLE "ENTITLMNT_TYPES" + ( "ENTITLMNT_TYPE_ID" NUMBER, + "ENTITLMNT_TYPE_CATG_ID" NUMBER, + "MOVEMENT_TYPE_ID" NUMBER, + "MOVEMENT_FILE_ID" NUMBER, + "STATUS" VARCHAR2(100 CHAR), + "DISABLE_REASON" VARCHAR2(3000 CHAR), + "ENT_TYPE_DEFAULT" CHAR(1 BYTE), + "ENABLE" VARCHAR2(1 CHAR) DEFAULT 'Y' + ) ; +-------------------------------------------------------- +-- DDL for Table ENTITLMNT_TYPES_CAT +-------------------------------------------------------- + + CREATE TABLE "ENTITLMNT_TYPES_CAT" + ( "ENTITLMNT_TYPE_CAT_ID" NUMBER, + "DESCRIPTION" VARCHAR2(100 CHAR), + "MF_TYPE" CHAR(1 BYTE), + "CODE" VARCHAR2(50 BYTE) + ) ; +-------------------------------------------------------- +-- DDL for Table ENTITLMNT_TYPES_DEFAULT +-------------------------------------------------------- + + CREATE TABLE "ENTITLMNT_TYPES_DEFAULT" + ( "ENTITLMNT_TYPE_CAT_ID" NUMBER, + "MOVEMENT_TYPE_ID" NUMBER, + "DESCRIPTION" VARCHAR2(100 CHAR), + "ENTITLMNT_TYPE_DEFAULT_ID" NUMBER + ) ; +-------------------------------------------------------- +-- DDL for Table ENTITLMNTS +-------------------------------------------------------- + + CREATE TABLE "ENTITLMNTS" + ( "ENTITLMNT_ID" NUMBER, + "ENTITLMNT_TYPE_ID" NUMBER, + "MOVEMENT_TYPE_ID" NUMBER, + "AMOUNT" NUMBER + ) ; + + +REM INSERTING into ENTITLMNT_MAXS_CAT +SET DEFINE OFF; +Insert into ENTITLMNT_MAXS_CAT (ENTITLMNT_MAX_CAT_ID,ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,CODE,NON_FAMILY_POSTING,HOD,SUGGESTION) values (10,4,'Flat Rate for dependents',null,'Y',null,'N'); +Insert into ENTITLMNT_MAXS_CAT (ENTITLMNT_MAX_CAT_ID,ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,CODE,NON_FAMILY_POSTING,HOD,SUGGESTION) values (6,4,'Flat Rate for Staff Member','TUD_STAFF_MEMBER',null,null,'Y'); +Insert into ENTITLMNT_MAXS_CAT (ENTITLMNT_MAX_CAT_ID,ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,CODE,NON_FAMILY_POSTING,HOD,SUGGESTION) values (3,1,'Storage Ceiling',null,'Y','Y','Y'); +Insert into ENTITLMNT_MAXS_CAT (ENTITLMNT_MAX_CAT_ID,ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,CODE,NON_FAMILY_POSTING,HOD,SUGGESTION) values (2,1,'Car Ceiling',null,null,null,'Y'); +Insert into ENTITLMNT_MAXS_CAT (ENTITLMNT_MAX_CAT_ID,ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,CODE,NON_FAMILY_POSTING,HOD,SUGGESTION) values (1,1,'Airfreight Ceiling',null,'Y','Y','Y'); +Insert into ENTITLMNT_MAXS_CAT (ENTITLMNT_MAX_CAT_ID,ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,CODE,NON_FAMILY_POSTING,HOD,SUGGESTION) values (4,2,'Entry into storage',null,null,null,'N'); +Insert into ENTITLMNT_MAXS_CAT (ENTITLMNT_MAX_CAT_ID,ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,CODE,NON_FAMILY_POSTING,HOD,SUGGESTION) values (5,3,'Exit from Storage',null,null,null,'N'); +Insert into ENTITLMNT_MAXS_CAT (ENTITLMNT_MAX_CAT_ID,ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,CODE,NON_FAMILY_POSTING,HOD,SUGGESTION) values (7,5,'Installation',null,null,null,'N'); +Insert into ENTITLMNT_MAXS_CAT (ENTITLMNT_MAX_CAT_ID,ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,CODE,NON_FAMILY_POSTING,HOD,SUGGESTION) values (8,6,'Ressetlement',null,null,null,'N'); +Insert into ENTITLMNT_MAXS_CAT (ENTITLMNT_MAX_CAT_ID,ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,CODE,NON_FAMILY_POSTING,HOD,SUGGESTION) values (9,1,'Surface Ceiling',null,null,null,'Y'); + + +SET DEFINE OFF; +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (1,'1 Basic Salary + 1/3',1.33333,'4/3',null); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (2,'1 Basic Salary + 2/3',1.66666,'5/3',null); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (3,'1 Basic Salary + 3/3',2,'2',null); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (4,'2 Basic Salary + 1/3',2.33333,'7/3',null); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (5,'2 Basic Salary + 2/3',2.66666,'8/3',null); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (6,'2 Basic Salary + 3/3',3,'3',null); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (7,'INSE 1/3 x 1 TMB',0.3333,'INSE',7); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (8,'INSE 2/3 x 1 TMB',0.6666,'INSE',7); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (9,'INSE 3/3 x 1 TMB',1,'INSE',7); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (10,'INDM 1/3 x 1 TMB',0.3333,'INDM',7); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (11,'INDM 2/3 x 1 TMB',0.6666,'INDM',7); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (12,'INDM 3/3 x 1 TMB',1,'INDM',7); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (13,'INDE 1/3 x 2 TMB',0.3333,'INDE',7); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (14,'INDE 2/3 x 2 TMB',0.6666,'INDE',7); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (15,'INDE 3/3 x 2 TMB',1,'INDE',7); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (16,'IRIS 1/4 x 1 TMB',0.25,'IRIS',8); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (17,'IRIS 2/4 x 1 TMB',0.5,'IRIS',8); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (18,'IRIS 3/4 x 1 TMB',0.75,'IRIS',8); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (19,'IRIS 4/4 x 1 TMB',1,'IRIS',8); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (20,'IRID 1/4 x 2 TMB',0.5,'IRID',8); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (21,'IRID 2/4 x 2 TMB',1,'IRID',8); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (22,'IRID 3/4 x 2 TMB',1.5,'IRID',8); +Insert into ENTITLMNT_MAXS_OPTIONS (ENTITLMNT_MAX_OPTIONS_ID,DESCRIPTION,VALUE_NUMBER,VALUE_STRING,ENTITLMNT_MAX_CAT_ID) values (23,'IRID 4/4 x 2 TMB',2,'IRID',8); +REM INSERTING into ENTITLMNT_TYPES +SET DEFINE OFF; + +REM INSERTING into ENTITLMNT_TYPES_CAT +SET DEFINE OFF; +Insert into ENTITLMNT_TYPES_CAT (ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,MF_TYPE,CODE) values (1,'Removal Rights','Y','REM'); +Insert into ENTITLMNT_TYPES_CAT (ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,MF_TYPE,CODE) values (2,'Entry into Storage','Y','EIS'); +Insert into ENTITLMNT_TYPES_CAT (ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,MF_TYPE,CODE) values (3,'Exit from Storage','Y','EFS'); +Insert into ENTITLMNT_TYPES_CAT (ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,MF_TYPE,CODE) values (4,'Take Up Duty','Y','TUD'); +Insert into ENTITLMNT_TYPES_CAT (ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,MF_TYPE,CODE) values (5,'Installation Allowance','Y','INS'); +Insert into ENTITLMNT_TYPES_CAT (ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,MF_TYPE,CODE) values (6,'Resettlement Allowance','Y','RES'); +Insert into ENTITLMNT_TYPES_CAT (ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,MF_TYPE,CODE) values (7,'Weighting Factor and Local Currency','N','WEIGHTING_FACTOR'); +Insert into ENTITLMNT_TYPES_CAT (ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,MF_TYPE,CODE) values (8,'Rest Leave entitlement','N','REST_LEAVE'); +Insert into ENTITLMNT_TYPES_CAT (ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,MF_TYPE,CODE) values (9,'Accommodation under ART.23','N','ACCOMMODATION'); +Insert into ENTITLMNT_TYPES_CAT (ENTITLMNT_TYPE_CAT_ID,DESCRIPTION,MF_TYPE,CODE) values (10,'Annual Travel Allowance','N','ANNUAL_TRAVEL'); +REM INSERTING into ENTITLMNT_TYPES_DEFAULT +SET DEFINE OFF; + +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (1,1,null,1); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (2,1,null,2); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (3,1,null,3); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (4,1,null,4); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (5,1,null,5); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (1,3,null,6); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (2,3,null,7); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (3,3,null,9); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (4,3,null,8); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (1,4,null,10); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (2,4,null,11); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (3,4,null,13); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (4,4,null,12); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (5,4,null,14); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (1,5,null,15); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (4,5,null,16); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (1,16,null,37); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (2,16,null,38); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (3,16,null,39); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (4,16,null,40); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (6,16,null,41); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (1,7,null,17); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (2,7,null,21); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (3,7,null,20); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (4,7,null,19); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (5,7,null,18); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (1,10,null,26); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (2,10,null,25); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (3,10,null,24); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (4,10,null,23); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (1,12,null,27); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (2,12,null,31); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (3,12,null,30); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (4,12,null,29); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (5,12,null,28); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (5,10,null,22); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (1,13,null,36); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (2,13,null,35); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (3,13,null,34); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (4,13,null,32); +Insert into ENTITLMNT_TYPES_DEFAULT (ENTITLMNT_TYPE_CAT_ID,MOVEMENT_TYPE_ID,DESCRIPTION,ENTITLMNT_TYPE_DEFAULT_ID) values (5,13,null,33); + +REM INSERTING into ENTITLMNTS +SET DEFINE OFF; +-------------------------------------------------------- +-- DDL for Index ENTITLMNT_MAX_PK +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ENTITLMNT_MAX_PK" ON "ENTITLMNT_MAXS" ("ENTITLMNT_MAX_ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT); +-------------------------------------------------------- +-- DDL for Index PK_ENTITLMNT_MAXS_CAT +-------------------------------------------------------- + + CREATE UNIQUE INDEX "PK_ENTITLMNT_MAXS_CAT" ON "ENTITLMNT_MAXS_CAT" ("ENTITLMNT_MAX_CAT_ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT); +-------------------------------------------------------- +-- DDL for Index PK_ENTITLMNT_MAX_DEFAULT +-------------------------------------------------------- + + CREATE UNIQUE INDEX "PK_ENTITLMNT_MAX_DEFAULT" ON "ENTITLMNT_MAXS_DEFAULT" ("ENTITLMNT_MAX_DEFAULT_ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT); +-------------------------------------------------------- +-- DDL for Index ENTITLMNT_MAX_OPTIONS_PK +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ENTITLMNT_MAX_OPTIONS_PK" ON "ENTITLMNT_MAXS_OPTIONS" ("ENTITLMNT_MAX_OPTIONS_ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT); +-------------------------------------------------------- +-- DDL for Index ENTITLMNT_TYPES_MOVMNT_FIL_PK +-------------------------------------------------------- + + CREATE UNIQUE INDEX "ENTITLMNT_TYPES_MOVMNT_FIL_PK" ON "ENTITLMNT_TYPES" ("ENTITLMNT_TYPE_ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT); +-------------------------------------------------------- +-- DDL for Index PK_ENTITLMNT_TYPES_CAT +-------------------------------------------------------- + + CREATE UNIQUE INDEX "PK_ENTITLMNT_TYPES_CAT" ON "ENTITLMNT_TYPES_CAT" ("ENTITLMNT_TYPE_CAT_ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT); +-------------------------------------------------------- +-- DDL for Index PK_ENTITLMNT_TYPES_DEFAULT +-------------------------------------------------------- + + CREATE UNIQUE INDEX "PK_ENTITLMNT_TYPES_DEFAULT" ON "ENTITLMNT_TYPES_DEFAULT" ("ENTITLMNT_TYPE_DEFAULT_ID") + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT); +-------------------------------------------------------- +-- Constraints for Table ENTITLMNT_MAXS +-------------------------------------------------------- + + ALTER TABLE "ENTITLMNT_MAXS" ADD CONSTRAINT "ENTITLMNT_MAX_PK" PRIMARY KEY ("ENTITLMNT_MAX_ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) ENABLE; + ALTER TABLE "ENTITLMNT_MAXS" MODIFY ("ENTITLMNT_MAX_ID" NOT NULL ENABLE); +-------------------------------------------------------- +-- Constraints for Table ENTITLMNT_MAXS_CAT +-------------------------------------------------------- + + ALTER TABLE "ENTITLMNT_MAXS_CAT" ADD CONSTRAINT "PK_ENTITLMNT_MAXS_CAT" PRIMARY KEY ("ENTITLMNT_MAX_CAT_ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) ENABLE; +-------------------------------------------------------- +-- Constraints for Table ENTITLMNT_MAXS_DEFAULT +-------------------------------------------------------- + + ALTER TABLE "ENTITLMNT_MAXS_DEFAULT" MODIFY ("ENTITLMNT_MAX_CAT_ID" NOT NULL ENABLE); + ALTER TABLE "ENTITLMNT_MAXS_DEFAULT" MODIFY ("START_DATE" NOT NULL ENABLE); + ALTER TABLE "ENTITLMNT_MAXS_DEFAULT" ADD CONSTRAINT "PK_ENTITLMNT_MAX_DEFAULT" PRIMARY KEY ("ENTITLMNT_MAX_DEFAULT_ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) ENABLE; + ALTER TABLE "ENTITLMNT_MAXS_DEFAULT" MODIFY ("UPDATED_AT" NOT NULL ENABLE); + ALTER TABLE "ENTITLMNT_MAXS_DEFAULT" MODIFY ("UPDATED_BY" NOT NULL ENABLE); + ALTER TABLE "ENTITLMNT_MAXS_DEFAULT" MODIFY ("CREATED_BY" NOT NULL ENABLE); + ALTER TABLE "ENTITLMNT_MAXS_DEFAULT" MODIFY ("CREATED_AT" NOT NULL ENABLE); +-------------------------------------------------------- +-- Constraints for Table ENTITLMNT_MAXS_OPTIONS +-------------------------------------------------------- + + ALTER TABLE "ENTITLMNT_MAXS_OPTIONS" ADD CONSTRAINT "ENTITLMNT_MAX_OPTIONS_PK" PRIMARY KEY ("ENTITLMNT_MAX_OPTIONS_ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) ENABLE; + ALTER TABLE "ENTITLMNT_MAXS_OPTIONS" MODIFY ("ENTITLMNT_MAX_OPTIONS_ID" NOT NULL ENABLE); +-------------------------------------------------------- +-- Constraints for Table ENTITLMNT_TYPES +-------------------------------------------------------- + + ALTER TABLE "ENTITLMNT_TYPES" ADD CONSTRAINT "ENTITLMNT_TYPES_MOVMNT_FIL_PK" PRIMARY KEY ("ENTITLMNT_TYPE_ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) ENABLE; + ALTER TABLE "ENTITLMNT_TYPES" MODIFY ("ENTITLMNT_TYPE_ID" NOT NULL ENABLE); + ALTER TABLE "ENTITLMNT_TYPES" MODIFY ("ENABLE" NOT NULL ENABLE); +-------------------------------------------------------- +-- Constraints for Table ENTITLMNT_TYPES_CAT +-------------------------------------------------------- + + ALTER TABLE "ENTITLMNT_TYPES_CAT" ADD CONSTRAINT "PK_ENTITLMNT_TYPES_CAT" PRIMARY KEY ("ENTITLMNT_TYPE_CAT_ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) ENABLE; +-------------------------------------------------------- +-- Constraints for Table ENTITLMNT_TYPES_DEFAULT +-------------------------------------------------------- + + ALTER TABLE "ENTITLMNT_TYPES_DEFAULT" ADD CONSTRAINT "PK_ENTITLMNT_TYPES_DEFAULT" PRIMARY KEY ("ENTITLMNT_TYPE_DEFAULT_ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 + PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 + BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table ENTITLMNT_MAXS +-------------------------------------------------------- + + ALTER TABLE "ENTITLMNT_MAXS" ADD CONSTRAINT "ENTITLMNT_MAXS_FK1" FOREIGN KEY ("ENTITLMNT_MAX_OPTIONS_ID") + REFERENCES "ENTITLMNT_MAXS_OPTIONS" ("ENTITLMNT_MAX_OPTIONS_ID") ENABLE; + ALTER TABLE "ENTITLMNT_MAXS" ADD CONSTRAINT "FK_ENTITLMNT_MAXS_CAT" FOREIGN KEY ("ENTITLMNT_MAX_CAT_ID") + REFERENCES "ENTITLMNT_MAXS_CAT" ("ENTITLMNT_MAX_CAT_ID") ENABLE; + ALTER TABLE "ENTITLMNT_MAXS" ADD CONSTRAINT "FK_ENTITLMNT_MAXS_TYPE" FOREIGN KEY ("ENTITLMNT_TYPE_ID") + REFERENCES "ENTITLMNT_TYPES" ("ENTITLMNT_TYPE_ID") ENABLE; + ALTER TABLE "ENTITLMNT_MAXS" ADD CONSTRAINT "FK_ENTITLMNT_MAXS_TYPE_CAT" FOREIGN KEY ("ENTITLMNT_TYPE_CAT_ID") + REFERENCES "ENTITLMNT_TYPES_CAT" ("ENTITLMNT_TYPE_CAT_ID") ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table ENTITLMNT_MAXS_CAT +-------------------------------------------------------- + + ALTER TABLE "ENTITLMNT_MAXS_CAT" ADD CONSTRAINT "FK_ENTITLMNT_MAXS_CAT_TYPE_CAT" FOREIGN KEY ("ENTITLMNT_TYPE_CAT_ID") + REFERENCES "ENTITLMNT_TYPES_CAT" ("ENTITLMNT_TYPE_CAT_ID") ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table ENTITLMNT_MAXS_DEFAULT +-------------------------------------------------------- + + ALTER TABLE "ENTITLMNT_MAXS_DEFAULT" ADD CONSTRAINT "FK_ENTITLMNT_MAXS_DEFAULT_CAT" FOREIGN KEY ("ENTITLMNT_MAX_CAT_ID") + REFERENCES "ENTITLMNT_MAXS_CAT" ("ENTITLMNT_MAX_CAT_ID") ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table ENTITLMNT_TYPES +-------------------------------------------------------- + + ALTER TABLE "ENTITLMNT_TYPES" ADD CONSTRAINT "FK_ENTITLMNT_TYPES_MOV_FILE" FOREIGN KEY ("MOVEMENT_FILE_ID") + REFERENCES "MOVEMENT_FILES" ("MOVEMENT_FILE_ID") ENABLE; + ALTER TABLE "ENTITLMNT_TYPES" ADD CONSTRAINT "FK_ENTITLMNT_TYPES_MOV_TYPE" FOREIGN KEY ("MOVEMENT_TYPE_ID") + REFERENCES "MOVEMENT_TYPES" ("MOVEMENT_TYPE_ID") ENABLE; + ALTER TABLE "ENTITLMNT_TYPES" ADD CONSTRAINT "FK_ENTITLMNT_TYPES_TYPE_CAT" FOREIGN KEY ("ENTITLMNT_TYPE_CATG_ID") + REFERENCES "ENTITLMNT_TYPES_CAT" ("ENTITLMNT_TYPE_CAT_ID") ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table ENTITLMNT_TYPES_DEFAULT +-------------------------------------------------------- + + ALTER TABLE "ENTITLMNT_TYPES_DEFAULT" ADD CONSTRAINT "FK_ENTLMNT_TYP_DEF_MOV_TYPE" FOREIGN KEY ("MOVEMENT_TYPE_ID") + REFERENCES "MOVEMENT_TYPES" ("MOVEMENT_TYPE_ID") ENABLE; + ALTER TABLE "ENTITLMNT_TYPES_DEFAULT" ADD CONSTRAINT "FK_ENTLMNT_TYP_DEF_TYPE_CAT" FOREIGN KEY ("ENTITLMNT_TYPE_CAT_ID") + REFERENCES "ENTITLMNT_TYPES_CAT" ("ENTITLMNT_TYPE_CAT_ID") ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table ENTITLMNTS +-------------------------------------------------------- + + ALTER TABLE "ENTITLMNTS" ADD CONSTRAINT "FK_ENTITLMNTS_MOV_TYPE" FOREIGN KEY ("MOVEMENT_TYPE_ID") + REFERENCES "MOVEMENT_TYPES" ("MOVEMENT_TYPE_ID") ENABLE; + ALTER TABLE "ENTITLMNTS" ADD CONSTRAINT "FK_ENTITLMNTS_TYPE" FOREIGN KEY ("ENTITLMNT_TYPE_ID") + REFERENCES "ENTITLMNT_TYPES" ("ENTITLMNT_TYPE_ID") ENABLE; + + + +-------------------------------------------------------- +-- DDL for Sequence SEQ_ENTITLMNT_MAX_DEFAULT +-------------------------------------------------------- + + CREATE SEQUENCE "SEQ_ENTITLMNT_MAX_DEFAULT" MINVALUE 1 MAXVALUE 9999999999999999999 INCREMENT BY 1 START WITH 101 NOCACHE NOORDER NOCYCLE ; +-------------------------------------------------------- +-- DDL for Sequence SEQ_ENTITLMNT_MAXS +-------------------------------------------------------- + + CREATE SEQUENCE "SEQ_ENTITLMNT_MAXS" MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1274 NOCACHE NOORDER NOCYCLE ; +-------------------------------------------------------- +-- DDL for Sequence SEQ_ENTITLMNT_TYPES +-------------------------------------------------------- + + CREATE SEQUENCE "SEQ_ENTITLMNT_TYPES" MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 914 NOCACHE NOORDER NOCYCLE ; diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC03/04.RIGD-456-v_report_movement_files.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/04.RIGD-456-v_report_movement_files.sql new file mode 100644 index 0000000..90feef9 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/04.RIGD-456-v_report_movement_files.sql @@ -0,0 +1,79 @@ +CREATE OR REPLACE FORCE VIEW "V_REPORT_MOVEMENT_FILES" ( + "MOVEMENT_FILE_ID", + "FIRST_NAME", + "LAST_NAME", + "STATUS", + "STARTDATEFUTURE", + "ENDDATEFUTURE", + "MOVEMENTFROM", + "MOVEMENTTO", + "EVACUATION_STATUS", + "BUDGDET_LINE_FUTURE", + "MOVEMENTTYPE", + "MOVEMENTYEAR", + "MOVEMENTCONTEXT", + "PERID", + "FUTUREASSIGNMENT", + "FILEID", + "PRIORITY", + "ALLOCATEDTOCURRENT", + "ALLOCATEDTOFUTURE", + "REASON" +) AS + SELECT + f.movement_file_id, + p.first_name AS first_name, + p.last_name AS last_name, + f.state AS status, + coalesce( + f.start_date, + assign_start_date_to + ) AS startdatefuture, + CASE + WHEN EXTRACT(YEAR FROM(coalesce( + f.estimated_end_date, + assign_end_date_to + ))) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + coalesce( + f.estimated_end_date, + assign_end_date_to + ) + END AS enddatefuture, + initcap( + ci_from.description_en + ) + || ', ' + || ct_from.name_en AS movementfrom, + initcap( + ci_to.description_en + ) + || ', ' + || ct_to.name_en AS movementto, + f.evacuation_status, + budget_line AS budgdet_line_future, + mvtp.movement_type AS movementtype, + f.year AS movementyear, + c.name AS movementcontext, + f.per_id AS perid, + f.job_id_to AS futureassignment, + f.file_id AS fileid, + f.priority, + f.org_cd_from AS allocatedtocurrent, + f.org_cd_to AS allocatedtofuture, + '1' AS reason + FROM + movement_files f + INNER JOIN movement_context c ON f.context_id = c.movement_context_id + INNER JOIN v_people p ON p.per_id = f.per_id + INNER JOIN movement_types mvtp ON mvtp.movement_type_id = f.movement_type_id + LEFT JOIN mv_countries ct_from ON f.country_code_from = ct_from.country_code + LEFT JOIN mv_cities ci_from ON f.city_code_from = ci_from.city_code + AND ct_from.country_code = ci_from.country_code + LEFT JOIN mv_countries ct_to ON f.country_code_to = ct_to.country_code + LEFT JOIN mv_cities ci_to ON f.city_code_to = ci_to.city_code + AND ct_to.country_code = ci_to.country_code; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC03/06.RIGS-303-notification_template.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/06.RIGS-303-notification_template.sql new file mode 100644 index 0000000..54ff5ec --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/06.RIGS-303-notification_template.sql @@ -0,0 +1,15 @@ +REM INSERTING into NOTIFICATION_TEMPLATES +SET DEFINE OFF; + +TRUNCATE TABLE NOTIFICATION_TEMPLATES; +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (1,'ROTATION','Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment on the post: ${JOB_ID_TO} has been created in e-Rights. The provisional start date for the new assignment is on the ${START_DATE} (The start date might be subject to changes if required).

    Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.

    ${MOVEMENT_FILE_ID}','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CREATE','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (2,'SECONDMENT','Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment on the post: ${JOB_ID_TO} has been created in e-Rights. The provisional start date for the new assignment is on the ${START_DATE} (The start date might be subject to changes if required).

    Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.

    ${MOVEMENT_FILE_ID}','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CREATE','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (3,'EOC','Your End of Contract file from ${MOVEMENT_FROM} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},


    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} has been created in e-Rights. The provisional end date of your assignment is on the ${ESTIMATED_END_DATE}.

    Please, log in to e-Rights using your EU Login and confirm your end of contract to initiate your entitlements.

    ${MOVEMENT_FILE_ID}','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CREATE','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (4,'ROTATION','Reminder: Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment on the post: ${JOB_ID_TO} is waiting for your confirmation in e-Rights. In the absence of your confirmation, your assignment will be considered withdrawn.

    Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.

    ${MOVEMENT_FILE_ID}','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','REMINDER_AFTER_CREATE','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (5,'SECONDMENT','Reminder: Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment on the post: ${JOB_ID_TO} is waiting for your confirmation in e-Rights. In the absence of your confirmation, your assignment will be considered withdrawn.

    Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.

    ${MOVEMENT_FILE_ID}','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','REMINDER_AFTER_CREATE','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (6,'EOC','Reminder: Your End of Contract file to ${MOVEMENT_TO} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} is waiting for your confirmation in e-Rights. In the absence of your confirmation, your assignment will be considered withdrawn.

    Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.

    ${MOVEMENT_FILE_ID}','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','REMINDER_AFTER_CREATE','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (7,'ROTATION','Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your assignment ${JOB_ID_TO} has been withdrawn on your behalf.','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','WITHDRAW','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (8,'SECONDMENT','Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your assignment ${JOB_ID_TO} has been withdrawn.','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','WITHDRAW','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (9,'EOC','Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} has been withdrawn.','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','WITHDRAW','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (10,'SYSTEM','Report with failed notification emails','The following email notifications are failed : ${MOVEMENT_FILES}','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','REPORT_FAILED_COMMS','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (11,'ENTITLEMENTS_AMOUNTS_SET','Your input is required to generate your removal and travel entitlements via e-Rights','Dear ${FIRST_NAME} ${LAST_NAME},

    The EEAS.BA.HR.3 Rotation team has determined your entitlements for removal and travel.

    You will find the amounts of your entitlements and other necessary information in your movement file in the e-Rights Portal.

    Steps to follow to receive your entitlements:
    • Please make sure to consult the complete rules and guidelines available in e-Rights.
    • Fill in and submit your movement file declaration in e-Rights. Based on your input, e-Rights will generate your corresponding entitlement requests.
    • Submit your declaration and follow the instructions.
    Kind regards,','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CONFIRM','Y'); diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC03/07.RIGD-474-MV_HEAD_OF_DELEGATIONS.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/07.RIGD-474-MV_HEAD_OF_DELEGATIONS.sql new file mode 100644 index 0000000..6a3c058 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/07.RIGD-474-MV_HEAD_OF_DELEGATIONS.sql @@ -0,0 +1,29 @@ +CREATE MATERIALIZED VIEW "MV_HEAD_OF_DELEGATIONS" +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT + org_id, + org_cd, + org_name, + main_org_id, + tor_id, + typeofentity_name, + job_id, + assigment_type, + job_type, + per_id, + first_name, + surname, + email + FROM + mv_head_of_delegations@easrefn.cc.cec.eu.int; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC03/08.RIGD-474-MV_HEAD_OF_DELEGATIONS_register.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/08.RIGD-474-MV_HEAD_OF_DELEGATIONS_register.sql new file mode 100644 index 0000000..d43b8db --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/08.RIGD-474-MV_HEAD_OF_DELEGATIONS_register.sql @@ -0,0 +1,5 @@ +Insert into T_REFRESH_OBJECTS (ID,APP_OBJECT_NAME,PRIORITY,IS_REFRESHED,REFRESH_DATE,STATUS,SYSTEM) values (18,'MV_HEAD_OF_DELEGATIONS',18,'N',NULL,'KO','EASREFN'); + +Insert into T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (18,'MV_HEAD_OF_DELEGATIONS',1); + +commit; diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC03/09.RIGD-474-V_JOBS.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/09.RIGD-474-V_JOBS.sql new file mode 100644 index 0000000..1b9f1e5 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/09.RIGD-474-V_JOBS.sql @@ -0,0 +1,215 @@ +CREATE OR REPLACE VIEW "V_JOBS" ( + "JOB_ID", + "JOB_MOMENT", + "JOB_TYPE", + "PERSONNEL_TYPE_DESC", + "BUDGETARY_LINE", + "JOB_CITY_CODE", + "JOB_CITY_NAME", + "JOB_COUNTRY_CODE", + "JOB_COUNTRY_NAME", + "ORGANIZATION_COUNTRY", + "ORGANIZATION_CITY", + "ORGANIZATION_NAME", + "ORGANIZATION_IN_EU", + "INT_ORG_CODE", + "INTERNATIONAL_ORGANIZATION", + "ORG_ID", + "ASSIGN_START_DATE_TO", + "ASSIGN_END_DATE_TO", + "PER_ID", + "SEVERITY_LEVEL", + "EVACUATION_LEVEL_CODE_ID", + "ALERT_STATUS_ID", + "EVACUATION_LEVEL_CODE", + "ORGANIZATION_COUNTRY_CODE", + "ORGANIZATION_CITY_CODE", + "FAMILY_POSTING_TYPE_ID", + "FAMILY_POSTING_TYPE", + "HOD" +) AS + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + ctr.eu_state AS organization_in_eu, + ent_typ.code AS int_org_code, + CASE + WHEN ent_typ.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + INNER JOIN mv_countries ctr ON enth.country_id = ctr.country_code + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_entities_types ent_typ ON enth.org_id = ent_typ.org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + WHERE + job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate) + UNION + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + ctr.eu_state AS organization_in_eu, + ent_typ.code AS int_org_code, + CASE + WHEN ent_typ.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + INNER JOIN mv_countries ctr ON enth.country_id = ctr.country_code + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_entities_types ent_typ ON enth.org_id = ent_typ.org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + WHERE + job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC03/10.RIGD-477-V_JOBS.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/10.RIGD-477-V_JOBS.sql new file mode 100644 index 0000000..cf459dd --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/10.RIGD-477-V_JOBS.sql @@ -0,0 +1,238 @@ +CREATE OR REPLACE VIEW "V_JOBS" ( + "JOB_ID", + "JOB_MOMENT", + "JOB_TYPE", + "PERSONNEL_TYPE_DESC", + "BUDGETARY_LINE", + "JOB_CITY_CODE", + "JOB_CITY_NAME", + "JOB_COUNTRY_CODE", + "JOB_COUNTRY_NAME", + "ORGANIZATION_COUNTRY", + "ORGANIZATION_CITY", + "ORGANIZATION_NAME", + "ORGANIZATION_IN_EU", + "INT_ORG_CODE", + "INTERNATIONAL_ORGANIZATION", + "ORG_ID", + "ASSIGN_START_DATE_TO", + "ASSIGN_END_DATE_TO", + "PER_ID", + "SEVERITY_LEVEL", + "EVACUATION_LEVEL_CODE_ID", + "ALERT_STATUS_ID", + "EVACUATION_LEVEL_CODE", + "ORGANIZATION_COUNTRY_CODE", + "ORGANIZATION_CITY_CODE", + "FAMILY_POSTING_TYPE_ID", + "FAMILY_POSTING_TYPE", + "HOD", + "FAMILY_POSTING_TYPE_CAT" +) AS + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + ctr.eu_state AS organization_in_eu, + ent_typ.code AS int_org_code, + CASE + WHEN ent_typ.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + INNER JOIN mv_countries ctr ON enth.country_id = ctr.country_code + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_entities_types ent_typ ON enth.org_id = ent_typ.org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + WHERE + job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate) + UNION + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + ctr.eu_state AS organization_in_eu, + ent_typ.code AS int_org_code, + CASE + WHEN ent_typ.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + INNER JOIN mv_countries ctr ON enth.country_id = ctr.country_code + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_entities_types ent_typ ON enth.org_id = ent_typ.org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + WHERE + job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC03/11.RIGD-493-V_STAFFMEMBERS.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/11.RIGD-493-V_STAFFMEMBERS.sql new file mode 100644 index 0000000..ae8ffa7 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC03/11.RIGD-493-V_STAFFMEMBERS.sql @@ -0,0 +1,220 @@ +CREATE OR REPLACE VIEW "V_STAFFMEMBERS" ( + "PER_ID", + "FIRST_NAME", + "LAST_NAME", + "GENDER", + "EMAIL", + "BIRTH_CITY", + "BIRTH_COUNTRY_CODE", + "BIRTH_COUNTRY_DESC", + "RECRUITMENT_CITY", + "RECRUITMENT_COUNTRY", + "ORGANIZATION_NAME", + "ORGANIZATION_CITY", + "ORGANIZATION_COUNTRY", + "ORGANIZATION_IN_EU", + "INT_ORG_CODE", + "INTERNATIONAL_ORGANIZATION", + "ORG_ID", + "JOB_ID", + "ASSIGN_START_DATE", + "ASSIGN_END_DATE", + "ORG_CD", + "PRIVATE_EMAIL" +) AS + SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + c.eu_state AS organization_in_eu, + t.code AS int_org_code, + CASE + WHEN t.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + p.org_id AS org_id, + p.job_id AS job_id, + p.assign_start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM p.assign_end_date) IN ( 9999, + 2099 ) ) THEN + to_date( + NULL + ) + ELSE + p.assign_end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id, + assign_start_date, + assign_end_date + FROM + mv_persons_eeas + UNION + SELECT DISTINCT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL + FROM + mv_persons_hist_eeas + WHERE + mv_persons_hist_eeas.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + UNION ALL + SELECT + per_id + FROM + mv_persons_com + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities e ON p.org_id = e.org_id + LEFT JOIN mv_countries c ON e.country_id = c.country_code + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_entities_types t ON p.org_id = t.org_id + AND t.is_active = 'Y' + LEFT JOIN mv_emails em ON em.per_id = p.per_id + UNION + SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + c.eu_state AS organization_in_eu, + t.code AS int_org_code, + CASE + WHEN t.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + p.org_id AS org_id, + p.job_id AS job_id, + assign.start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM assign.end_date) IN ( 2099, + 9999 ) ) THEN + to_date( + NULL + ) + ELSE + assign.end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id + FROM + mv_persons_com + WHERE + mv_persons_com.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + UNION + SELECT DISTINCT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL + FROM + mv_persons_hist_com + WHERE + mv_persons_hist_com.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + UNION ALL + SELECT + per_id + FROM + mv_persons_com + UNION ALL + SELECT + per_id + FROM + mv_persons_hist_eeas + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities_hist_com e ON p.org_id = e.org_id + AND trunc(sysdate) < trunc( + e.end_date + ) + LEFT JOIN mv_countries c ON e.country_id = c.country_code + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_entities_types t ON p.org_id = t.org_id + AND t.is_active = 'Y' + LEFT JOIN mv_assignments_com assign ON assign.per_id = p.per_id + AND assign.toj_cd = 'AFF' + LEFT JOIN mv_emails em ON em.per_id = p.per_id; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC04/01.RIGD-442-mv_hrportal_jobs_details.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/01.RIGD-442-mv_hrportal_jobs_details.sql new file mode 100644 index 0000000..25289ca --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/01.RIGD-442-mv_hrportal_jobs_details.sql @@ -0,0 +1,137 @@ +CREATE MATERIALIZED VIEW mv_hrportal_jobs_details ( + language_code, + jcx_id, + job_id, + ins_cd, + org_id, + main_org_id, + org_name, + main_org_name, + start_date, + end_date, + responsible, + head_of_entity, + city_code, + city_name, + country_name, + location_country_name, + location_city_name, + location_country_code, + location_city_code, + job_type, + sy2_job_status, + sensitive, + cgr_cd, + date_creat, + user_creat, + date_modif, + user_modif, + job_title, + job_name, + job_name_directory, + job_purpose, + local_job_id, + function_type_id, + function_type_code, + function_type, + budget_line_id, + budget_line, + budget_line_description, + grade_id, + grade, + personnel_type_id, + personnel_type_code, + personnel_type, + dg_responsable_id, + dg_responsable_code, + dg_responsable, + job_status_id, + job_status_code, + job_status, + title, + description, + authorization_publish, + sy2_comments, + comments, + creation_user, + creation_date, + modification_user, + modification_date, + edelhrm_budget_line, + multi_dg +) +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT DISTINCT + language_code, + jcx_id, + job_id, + ins_cd, + org_id, + main_org_id, + org_name, + main_org_name, + start_date, + end_date, + responsible, + head_of_entity, + city_code, + city_name, + country_name, + location_country_name, + location_city_name, + location_country_code, + location_city_code, + job_type, + sy2_job_status, + sensitive, + cgr_cd, + date_creat, + user_creat, + date_modif, + user_modif, + job_title, + job_name, + job_name_directory, + job_purpose, + local_job_id, + function_type_id, + function_type_code, + function_type, + budget_line_id, + budget_line, + budget_line_description, + grade_id, + grade, + personnel_type_id, + personnel_type_code, + personnel_type, + dg_responsable_id, + dg_responsable_code, + dg_responsable, + job_status_id, + job_status_code, + job_status, + title, + description, + authorization_publish, + sy2_comments, + comments, + creation_user, + creation_date, + modification_user, + modification_date, + edelhrm_budget_line, + multi_dg + FROM + mv_hrportal_jobs_details@easrefn.cc.cec.eu.int; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC04/02.RIGD-442-mv_hrportal_jobs_details_register.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/02.RIGD-442-mv_hrportal_jobs_details_register.sql new file mode 100644 index 0000000..366b76a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/02.RIGD-442-mv_hrportal_jobs_details_register.sql @@ -0,0 +1,5 @@ +Insert into T_REFRESH_OBJECTS (ID,APP_OBJECT_NAME,PRIORITY,IS_REFRESHED,REFRESH_DATE,STATUS,SYSTEM) values (24,'MV_HRPORTAL_JOBS_DETAILS',24,'N',NULL,'KO','EASREFN'); + +Insert into T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (24,'MV_HRPORTAL_JOBS_DETAILS',1); + +commit; diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC04/03.RIGD-442-V_JOBS.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/03.RIGD-442-V_JOBS.sql new file mode 100644 index 0000000..fee8a4e --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/03.RIGD-442-V_JOBS.sql @@ -0,0 +1,243 @@ +CREATE OR REPLACE VIEW "V_JOBS" ( + "JOB_ID", + "JOB_MOMENT", + "JOB_TYPE", + "PERSONNEL_TYPE_DESC", + "BUDGETARY_LINE", + "JOB_CITY_CODE", + "JOB_CITY_NAME", + "JOB_COUNTRY_CODE", + "JOB_COUNTRY_NAME", + "ORGANIZATION_COUNTRY", + "ORGANIZATION_CITY", + "ORGANIZATION_NAME", + "ORGANIZATION_IN_EU", + "INT_ORG_CODE", + "INTERNATIONAL_ORGANIZATION", + "ORG_ID", + "ASSIGN_START_DATE_TO", + "ASSIGN_END_DATE_TO", + "PER_ID", + "SEVERITY_LEVEL", + "EVACUATION_LEVEL_CODE_ID", + "ALERT_STATUS_ID", + "EVACUATION_LEVEL_CODE", + "ORGANIZATION_COUNTRY_CODE", + "ORGANIZATION_CITY_CODE", + "FAMILY_POSTING_TYPE_ID", + "FAMILY_POSTING_TYPE", + "HOD", + "FAMILY_POSTING_TYPE_CAT", + "BUDGET_LINE" +) AS + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + ctr.eu_state AS organization_in_eu, + ent_typ.code AS int_org_code, + CASE + WHEN ent_typ.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + INNER JOIN mv_countries ctr ON enth.country_id = ctr.country_code + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_entities_types ent_typ ON enth.org_id = ent_typ.org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + jobh.job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate) + UNION + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + ctr.eu_state AS organization_in_eu, + ent_typ.code AS int_org_code, + CASE + WHEN ent_typ.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + INNER JOIN mv_countries ctr ON enth.country_id = ctr.country_code + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_entities_types ent_typ ON enth.org_id = ent_typ.org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + jobh.job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC04/04.RIGD-505-mv_persons_bank_info.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/04.RIGD-505-mv_persons_bank_info.sql new file mode 100644 index 0000000..bd815cb --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/04.RIGD-505-mv_persons_bank_info.sql @@ -0,0 +1,39 @@ +CREATE MATERIALIZED VIEW mv_persons_bank_info ( + person_id, + per_id, + lef, + baf, + legal_entity, + iban_code, + bank_name, + bank_account_code, + main_bank_account, + account_holder, + account_currency +) +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT DISTINCT + person_id, + per_id, + lef, + baf, + legal_entity, + iban_code, + bank_name, + bank_account_code, + main_bank_account, + account_holder, + account_currency + FROM + mv_persons_bank_info@easrefn.cc.cec.eu.int; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC04/05.RIGD-505-mv_persons_bank_info_register.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/05.RIGD-505-mv_persons_bank_info_register.sql new file mode 100644 index 0000000..ebeee47 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/05.RIGD-505-mv_persons_bank_info_register.sql @@ -0,0 +1,5 @@ +Insert into T_REFRESH_OBJECTS (ID,APP_OBJECT_NAME,PRIORITY,IS_REFRESHED,REFRESH_DATE,STATUS,SYSTEM) values (25,'MV_PERSONS_BANK_INFO',25,'N',NULL,'KO','EASREFN'); + +Insert into T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (25,'MV_PERSONS_BANK_INFO',1); + +commit; diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC04/06.update_mov_file_city_country.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/06.update_mov_file_city_country.sql new file mode 100644 index 0000000..19caade --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/06.update_mov_file_city_country.sql @@ -0,0 +1,16 @@ + update MOVEMENT_FILES mv + set COUNTRY_CODE_TO = (select job_country_code from v_jobs j where j.job_id =mv.job_id_to ) + where mv.job_id_to is not null; + + update MOVEMENT_FILES mv + set CITY_CODE_TO = (select job_city_code from v_jobs j where j.job_id =mv.job_id_to ) + where mv.job_id_to is not null; + + + update MOVEMENT_FILES mv + set COUNTRY_CODE_from = (select job_country_code from v_jobs j where j.job_id =mv.job_id_from ) + where mv.job_id_from is not null; + + update MOVEMENT_FILES mv + set CITY_CODE_from = (select job_city_code from v_jobs j where j.job_id =mv.job_id_from ) + where mv.job_id_from is not null; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC04/07.RIGD-555-Update_movement_files.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/07.RIGD-555-Update_movement_files.sql new file mode 100644 index 0000000..fd66abc --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/07.RIGD-555-Update_movement_files.sql @@ -0,0 +1,73 @@ +CREATE TABLE bkp$movement_files_rigd555 + AS + SELECT + * + FROM + movement_files; + +UPDATE movement_files SET COUNTRY_CODE_TO = 'LVA', CITY_CODE_TO='RIX', CITY_CODE_FROM='POS', COUNTRY_CODE_FROM='TTO' WHERE MOVEMENT_FILE_ID=5; +UPDATE movement_files SET COUNTRY_CODE_TO = 'DEU', CITY_CODE_TO='FRA', CITY_CODE_FROM='HRE', COUNTRY_CODE_FROM='ZWE' WHERE MOVEMENT_FILE_ID=70; +UPDATE movement_files SET COUNTRY_CODE_TO = 'SVN', CITY_CODE_TO='MA3', CITY_CODE_FROM='MOW', COUNTRY_CODE_FROM='RUS' WHERE MOVEMENT_FILE_ID=71; +UPDATE movement_files SET COUNTRY_CODE_TO = 'POL', CITY_CODE_TO='CZW', CITY_CODE_FROM='GV1', COUNTRY_CODE_FROM='CHE' WHERE MOVEMENT_FILE_ID=15; +UPDATE movement_files SET COUNTRY_CODE_TO = 'BEL', CITY_CODE_TO='LL9', CITY_CODE_FROM='YAO', COUNTRY_CODE_FROM='CMR' WHERE MOVEMENT_FILE_ID=30; +UPDATE movement_files SET COUNTRY_CODE_TO = 'DEU', CITY_CODE_TO='ZCU', CITY_CODE_FROM='LUN', COUNTRY_CODE_FROM='ZMB' WHERE MOVEMENT_FILE_ID=36; +UPDATE movement_files SET COUNTRY_CODE_TO = 'BEL', CITY_CODE_TO='ANR', CITY_CODE_FROM='ANK', COUNTRY_CODE_FROM='TUR' WHERE MOVEMENT_FILE_ID=39; +UPDATE movement_files SET COUNTRY_CODE_TO = 'BEL', CITY_CODE_TO='BRU', CITY_CODE_FROM='AUH', COUNTRY_CODE_FROM='ARE' WHERE MOVEMENT_FILE_ID=41; +UPDATE movement_files SET COUNTRY_CODE_TO = 'FIN', CITY_CODE_TO='HEL', CITY_CODE_FROM='NIM', COUNTRY_CODE_FROM='NER' WHERE MOVEMENT_FILE_ID=46; +UPDATE movement_files SET COUNTRY_CODE_TO = 'ESP', CITY_CODE_TO='ZA2', CITY_CODE_FROM='WAS', COUNTRY_CODE_FROM='USA' WHERE MOVEMENT_FILE_ID=55; +UPDATE movement_files SET COUNTRY_CODE_TO = 'FRA', CITY_CODE_TO='XVE', CITY_CODE_FROM='BSB', COUNTRY_CODE_FROM='BRA' WHERE MOVEMENT_FILE_ID=56; +UPDATE movement_files SET COUNTRY_CODE_TO = 'FJI', CITY_CODE_TO='SUV', CITY_CODE_FROM='KLA', COUNTRY_CODE_FROM='UGA' WHERE MOVEMENT_FILE_ID=4; +UPDATE movement_files SET COUNTRY_CODE_TO = 'CHN', CITY_CODE_TO='PEK', CITY_CODE_FROM='BRU', COUNTRY_CODE_FROM='BEL' WHERE MOVEMENT_FILE_ID=17; +UPDATE movement_files SET COUNTRY_CODE_TO = 'SDN', CITY_CODE_TO='KRT', CITY_CODE_FROM='HRE', COUNTRY_CODE_FROM='ZWE' WHERE MOVEMENT_FILE_ID=18; +UPDATE movement_files SET COUNTRY_CODE_TO = 'SLE', CITY_CODE_TO='FNA', CITY_CODE_FROM='LEN', COUNTRY_CODE_FROM='ESP' WHERE MOVEMENT_FILE_ID=19; +UPDATE movement_files SET COUNTRY_CODE_TO = 'MDG', CITY_CODE_TO='TNR', CITY_CODE_FROM='BRU', COUNTRY_CODE_FROM='BEL' WHERE MOVEMENT_FILE_ID=20; +UPDATE movement_files SET COUNTRY_CODE_TO = 'MDG', CITY_CODE_TO='TNR', CITY_CODE_FROM='BRU', COUNTRY_CODE_FROM='BEL' WHERE MOVEMENT_FILE_ID=21; +UPDATE movement_files SET COUNTRY_CODE_TO = 'MLI', CITY_CODE_TO='BKO', CITY_CODE_FROM='BER', COUNTRY_CODE_FROM='DEU' WHERE MOVEMENT_FILE_ID=24; +UPDATE movement_files SET COUNTRY_CODE_TO = 'CHN', CITY_CODE_TO='PEK', CITY_CODE_FROM='BRU', COUNTRY_CODE_FROM='BEL' WHERE MOVEMENT_FILE_ID=25; +UPDATE movement_files SET COUNTRY_CODE_TO = 'GBR', CITY_CODE_TO='LON', CITY_CODE_FROM='BRU', COUNTRY_CODE_FROM='BEL' WHERE MOVEMENT_FILE_ID=26; +UPDATE movement_files SET COUNTRY_CODE_TO = 'CHN', CITY_CODE_TO='PEK', CITY_CODE_FROM='BRU', COUNTRY_CODE_FROM='BEL' WHERE MOVEMENT_FILE_ID=27; +UPDATE movement_files SET COUNTRY_CODE_TO = 'AFG', CITY_CODE_TO='KBL', CITY_CODE_FROM='LUX', COUNTRY_CODE_FROM='LUX' WHERE MOVEMENT_FILE_ID=28; +UPDATE movement_files SET COUNTRY_CODE_TO = 'NER', CITY_CODE_TO='NIM', CITY_CODE_FROM='TNR', COUNTRY_CODE_FROM='MDG' WHERE MOVEMENT_FILE_ID=7; +UPDATE movement_files SET COUNTRY_CODE_TO = 'MDG', CITY_CODE_TO='TNR', CITY_CODE_FROM='', COUNTRY_CODE_FROM='' WHERE MOVEMENT_FILE_ID=29; +UPDATE movement_files SET COUNTRY_CODE_TO = 'ETH', CITY_CODE_TO='AD2', CITY_CODE_FROM='REK', COUNTRY_CODE_FROM='ISL' WHERE MOVEMENT_FILE_ID=31; +UPDATE movement_files SET COUNTRY_CODE_TO = 'AFG', CITY_CODE_TO='KBL', CITY_CODE_FROM='BRU', COUNTRY_CODE_FROM='BEL' WHERE MOVEMENT_FILE_ID=32; +UPDATE movement_files SET COUNTRY_CODE_TO = 'SEN', CITY_CODE_TO='DKR', CITY_CODE_FROM='BRU', COUNTRY_CODE_FROM='BEL' WHERE MOVEMENT_FILE_ID=33; +UPDATE movement_files SET COUNTRY_CODE_TO = 'GHA', CITY_CODE_TO='ACC', CITY_CODE_FROM='BRU', COUNTRY_CODE_FROM='BEL' WHERE MOVEMENT_FILE_ID=34; +UPDATE movement_files SET COUNTRY_CODE_TO = 'THA', CITY_CODE_TO='BKK', CITY_CODE_FROM='BRU', COUNTRY_CODE_FROM='BEL' WHERE MOVEMENT_FILE_ID=35; +UPDATE movement_files SET COUNTRY_CODE_TO = 'IND', CITY_CODE_TO='DEL', CITY_CODE_FROM='EVN', COUNTRY_CODE_FROM='ARM' WHERE MOVEMENT_FILE_ID=37; +UPDATE movement_files SET COUNTRY_CODE_TO = 'NGA', CITY_CODE_TO='ABV', CITY_CODE_FROM='DKR', COUNTRY_CODE_FROM='SEN' WHERE MOVEMENT_FILE_ID=38; +UPDATE movement_files SET COUNTRY_CODE_TO = 'COD', CITY_CODE_TO='FIH', CITY_CODE_FROM='XVS', COUNTRY_CODE_FROM='FRA' WHERE MOVEMENT_FILE_ID=40; +UPDATE movement_files SET COUNTRY_CODE_TO = 'NGA', CITY_CODE_TO='ABV', CITY_CODE_FROM='QPL', COUNTRY_CODE_FROM='ROU' WHERE MOVEMENT_FILE_ID=42; +UPDATE movement_files SET COUNTRY_CODE_TO = 'BEL', CITY_CODE_TO='BRU', CITY_CODE_FROM='LAD', COUNTRY_CODE_FROM='AGO' WHERE MOVEMENT_FILE_ID=8; +UPDATE movement_files SET COUNTRY_CODE_TO = 'HTI', CITY_CODE_TO='PAP', CITY_CODE_FROM='MAD', COUNTRY_CODE_FROM='ESP' WHERE MOVEMENT_FILE_ID=43; +UPDATE movement_files SET COUNTRY_CODE_TO = 'CMR', CITY_CODE_TO='YAO', CITY_CODE_FROM='ZZZ', COUNTRY_CODE_FROM='ZZZ' WHERE MOVEMENT_FILE_ID=44; +UPDATE movement_files SET COUNTRY_CODE_TO = 'BFA', CITY_CODE_TO='OUA', CITY_CODE_FROM='SXB', COUNTRY_CODE_FROM='FRA' WHERE MOVEMENT_FILE_ID=45; +UPDATE movement_files SET COUNTRY_CODE_TO = 'ETH', CITY_CODE_TO='ADD', CITY_CODE_FROM='BLQ', COUNTRY_CODE_FROM='ITA' WHERE MOVEMENT_FILE_ID=47; +UPDATE movement_files SET COUNTRY_CODE_TO = 'SDN', CITY_CODE_TO='KRT', CITY_CODE_FROM='ZZZ', COUNTRY_CODE_FROM='ZZZ' WHERE MOVEMENT_FILE_ID=48; +UPDATE movement_files SET COUNTRY_CODE_TO = 'TCD', CITY_CODE_TO='NDJ', CITY_CODE_FROM='ZZZ', COUNTRY_CODE_FROM='ZZZ' WHERE MOVEMENT_FILE_ID=49; +UPDATE movement_files SET COUNTRY_CODE_TO = 'MNE', CITY_CODE_TO='TGD', CITY_CODE_FROM='BRU', COUNTRY_CODE_FROM='BEL' WHERE MOVEMENT_FILE_ID=50; +UPDATE movement_files SET COUNTRY_CODE_TO = 'TCD', CITY_CODE_TO='NDJ', CITY_CODE_FROM='ZZZ', COUNTRY_CODE_FROM='ZZZ' WHERE MOVEMENT_FILE_ID=51; +UPDATE movement_files SET COUNTRY_CODE_TO = 'SSD', CITY_CODE_TO='JUB', CITY_CODE_FROM='ATH', COUNTRY_CODE_FROM='GRC' WHERE MOVEMENT_FILE_ID=52; +UPDATE movement_files SET COUNTRY_CODE_TO = 'BFA', CITY_CODE_TO='OUA', CITY_CODE_FROM='ZZZ', COUNTRY_CODE_FROM='ZZZ' WHERE MOVEMENT_FILE_ID=53; +UPDATE movement_files SET COUNTRY_CODE_TO = 'KEN', CITY_CODE_TO='NBO', CITY_CODE_FROM='OPO', COUNTRY_CODE_FROM='PRT' WHERE MOVEMENT_FILE_ID=9; +UPDATE movement_files SET COUNTRY_CODE_TO = 'XKX', CITY_CODE_TO='PRN', CITY_CODE_FROM='ME0', COUNTRY_CODE_FROM='BEL' WHERE MOVEMENT_FILE_ID=54; +UPDATE movement_files SET COUNTRY_CODE_TO = 'BRB', CITY_CODE_TO='BGI', CITY_CODE_FROM='WAW', COUNTRY_CODE_FROM='POL' WHERE MOVEMENT_FILE_ID=57; +UPDATE movement_files SET COUNTRY_CODE_TO = 'ETH', CITY_CODE_TO='AD2', CITY_CODE_FROM='QFC', COUNTRY_CODE_FROM='FRA' WHERE MOVEMENT_FILE_ID=58; +UPDATE movement_files SET COUNTRY_CODE_TO = 'VEN', CITY_CODE_TO='CCS', CITY_CODE_FROM='PAP', COUNTRY_CODE_FROM='HTI' WHERE MOVEMENT_FILE_ID=59; +UPDATE movement_files SET COUNTRY_CODE_TO = 'COD', CITY_CODE_TO='FIH', CITY_CODE_FROM='KGL', COUNTRY_CODE_FROM='RWA' WHERE MOVEMENT_FILE_ID=60; +UPDATE movement_files SET COUNTRY_CODE_TO = 'JOR', CITY_CODE_TO='AMM', CITY_CODE_FROM='BRU', COUNTRY_CODE_FROM='BEL' WHERE MOVEMENT_FILE_ID=61; +UPDATE movement_files SET COUNTRY_CODE_TO = 'MDG', CITY_CODE_TO='TNR', CITY_CODE_FROM='ZZZ', COUNTRY_CODE_FROM='ZZZ' WHERE MOVEMENT_FILE_ID=62; +UPDATE movement_files SET COUNTRY_CODE_TO = 'JOR', CITY_CODE_TO='AMM', CITY_CODE_FROM='PME', COUNTRY_CODE_FROM='GBR' WHERE MOVEMENT_FILE_ID=63; +UPDATE movement_files SET COUNTRY_CODE_TO = 'MLI', CITY_CODE_TO='BKO', CITY_CODE_FROM='BRU', COUNTRY_CODE_FROM='BEL' WHERE MOVEMENT_FILE_ID=64; +UPDATE movement_files SET COUNTRY_CODE_TO = 'PAK', CITY_CODE_TO='ISB', CITY_CODE_FROM='ZZZ', COUNTRY_CODE_FROM='ZZZ' WHERE MOVEMENT_FILE_ID=65; +UPDATE movement_files SET COUNTRY_CODE_TO = 'GIN', CITY_CODE_TO='CKY', CITY_CODE_FROM='BGZ', COUNTRY_CODE_FROM='PRT' WHERE MOVEMENT_FILE_ID=10; +UPDATE movement_files SET COUNTRY_CODE_TO = 'IDN', CITY_CODE_TO='JKT', CITY_CODE_FROM='BRU', COUNTRY_CODE_FROM='BEL' WHERE MOVEMENT_FILE_ID=66; +UPDATE movement_files SET COUNTRY_CODE_TO = 'TWN', CITY_CODE_TO='TPE', CITY_CODE_FROM='BRU', COUNTRY_CODE_FROM='BEL' WHERE MOVEMENT_FILE_ID=67; +UPDATE movement_files SET COUNTRY_CODE_TO = 'RUS', CITY_CODE_TO='MOW', CITY_CODE_FROM='RIX', COUNTRY_CODE_FROM='LVA' WHERE MOVEMENT_FILE_ID=68; +UPDATE movement_files SET COUNTRY_CODE_TO = 'GNB', CITY_CODE_TO='BXO', CITY_CODE_FROM='RAI', COUNTRY_CODE_FROM='CPV' WHERE MOVEMENT_FILE_ID=69; +UPDATE movement_files SET COUNTRY_CODE_TO = 'COD', CITY_CODE_TO='FIH', CITY_CODE_FROM='CEQ', COUNTRY_CODE_FROM='FRA' WHERE MOVEMENT_FILE_ID=11; +UPDATE movement_files SET COUNTRY_CODE_TO = 'THA', CITY_CODE_TO='BKK', CITY_CODE_FROM='DEL', COUNTRY_CODE_FROM='IND' WHERE MOVEMENT_FILE_ID=13; +UPDATE movement_files SET COUNTRY_CODE_TO = 'CAF', CITY_CODE_TO='BGF', CITY_CODE_FROM='NBO', COUNTRY_CODE_FROM='KEN' WHERE MOVEMENT_FILE_ID=14; +UPDATE movement_files SET COUNTRY_CODE_TO = 'UZB', CITY_CODE_TO='TAS', CITY_CODE_FROM='PAR', COUNTRY_CODE_FROM='FRA' WHERE MOVEMENT_FILE_ID=16; + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC04/08.RIGD-558-v_staffmembers.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/08.RIGD-558-v_staffmembers.sql new file mode 100644 index 0000000..77cbeda --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/08.RIGD-558-v_staffmembers.sql @@ -0,0 +1,251 @@ +CREATE OR REPLACE VIEW "V_STAFFMEMBERS" ( + "PER_ID", + "FIRST_NAME", + "LAST_NAME", + "GENDER", + "EMAIL", + "BIRTH_CITY", + "BIRTH_COUNTRY_CODE", + "BIRTH_COUNTRY_DESC", + "RECRUITMENT_CITY", + "RECRUITMENT_COUNTRY", + "ORGANIZATION_NAME", + "ORGANIZATION_CITY", + "ORGANIZATION_COUNTRY", + "ORGANIZATION_IN_EU", + "INT_ORG_CODE", + "INTERNATIONAL_ORGANIZATION", + "ORG_ID", + "JOB_ID", + "ASSIGN_START_DATE", + "ASSIGN_END_DATE", + "ORG_CD", + "PRIVATE_EMAIL" +) AS + SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + c.eu_state AS organization_in_eu, + t.code AS int_org_code, + CASE + WHEN t.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + p.org_id AS org_id, + p.job_id AS job_id, + p.assign_start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM p.assign_end_date) IN ( 9999, + 2099 ) ) THEN + to_date( + NULL + ) + ELSE + p.assign_end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id, + assign_start_date, + assign_end_date + FROM + mv_persons_eeas + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL + FROM + mv_persons_hist_eeas phe + WHERE + coalesce( + phe.start_date, + sysdate + ) = ( + SELECT + coalesce( + MAX(phe2.start_date), + sysdate + ) + FROM + mv_persons_hist_com phe2 + WHERE + phe.per_id = phe2.per_id + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities e ON p.org_id = e.org_id + LEFT JOIN mv_countries c ON e.country_id = c.country_code + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_entities_types t ON p.org_id = t.org_id + AND t.is_active = 'Y' + LEFT JOIN mv_emails em ON em.per_id = p.per_id + UNION ALL + SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + c.eu_state AS organization_in_eu, + t.code AS int_org_code, + CASE + WHEN t.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + p.org_id AS org_id, + p.job_id AS job_id, + assign.start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM assign.end_date) IN ( 2099, + 9999 ) ) THEN + to_date( + NULL + ) + ELSE + assign.end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id + FROM + mv_persons_com + WHERE + mv_persons_com.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + UNION + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL + FROM + mv_persons_hist_com phc + WHERE + coalesce( + phc.start_date, + sysdate + ) = ( + SELECT + coalesce( + MAX(phc2.start_date), + sysdate + ) + FROM + mv_persons_hist_com phc2 + WHERE + phc.per_id = phc2.per_id + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities_hist_com e ON p.org_id = e.org_id + AND trunc(sysdate) < trunc( + e.end_date + ) + LEFT JOIN mv_countries c ON e.country_id = c.country_code + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_entities_types t ON p.org_id = t.org_id + AND t.is_active = 'Y' + LEFT JOIN mv_assignments_com assign ON assign.per_id = p.per_id + AND assign.toj_cd = 'AFF' + LEFT JOIN mv_emails em ON em.per_id = p.per_id; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC04/09.RIGD-558-indexes.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/09.RIGD-558-indexes.sql new file mode 100644 index 0000000..c03c00d --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/09.RIGD-558-indexes.sql @@ -0,0 +1,6 @@ +CREATE INDEX IDX_MV_PERSONS_EEAS_PER_ID ON MV_PERSONS_EEAS (PER_ID) COMPUTE STATISTICS; +CREATE INDEX IDX_MV_PERSONS_COM_PER_ID ON MV_PERSONS_COM (PER_ID) COMPUTE STATISTICS; +CREATE INDEX IDX_MV_PERSONS_HIST_EEAS_PER_ID ON MV_PERSONS_HIST_EEAS (PER_ID) COMPUTE STATISTICS; +CREATE INDEX IDX_MV_PERSONS_HIST_EEAS_PER_ID_START_DATE ON MV_PERSONS_HIST_EEAS (PER_ID, START_DATE) COMPUTE STATISTICS; +CREATE INDEX IDX_MV_PERSONS_HIST_COM_PER_ID ON MV_PERSONS_HIST_COM (PER_ID) COMPUTE STATISTICS; +CREATE INDEX IDX_MV_PERSONS_HIST_COM_PER_ID_START_DATE ON MV_PERSONS_HIST_COM (PER_ID, START_DATE) COMPUTE STATISTICS; diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC04/10.RIGD-562-V_STAFFMEMBERS.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/10.RIGD-562-V_STAFFMEMBERS.sql new file mode 100644 index 0000000..8b5b7b5 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/10.RIGD-562-V_STAFFMEMBERS.sql @@ -0,0 +1,251 @@ +CREATE OR REPLACE FORCE VIEW "V_STAFFMEMBERS" ( + "PER_ID", + "FIRST_NAME", + "LAST_NAME", + "GENDER", + "EMAIL", + "BIRTH_CITY", + "BIRTH_COUNTRY_CODE", + "BIRTH_COUNTRY_DESC", + "RECRUITMENT_CITY", + "RECRUITMENT_COUNTRY", + "ORGANIZATION_NAME", + "ORGANIZATION_CITY", + "ORGANIZATION_COUNTRY", + "ORGANIZATION_IN_EU", + "INT_ORG_CODE", + "INTERNATIONAL_ORGANIZATION", + "ORG_ID", + "JOB_ID", + "ASSIGN_START_DATE", + "ASSIGN_END_DATE", + "ORG_CD", + "PRIVATE_EMAIL" +) AS + SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + c.eu_state AS organization_in_eu, + t.code AS int_org_code, + CASE + WHEN t.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + p.org_id AS org_id, + p.job_id AS job_id, + p.assign_start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM p.assign_end_date) IN ( 9999, + 2099 ) ) THEN + to_date( + NULL + ) + ELSE + p.assign_end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id, + assign_start_date, + assign_end_date + FROM + mv_persons_eeas + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL + FROM + mv_persons_hist_eeas phe + WHERE + coalesce( + phe.start_date, + sysdate + ) = ( + SELECT + coalesce( + MAX(phe2.start_date), + sysdate + ) + FROM + mv_persons_hist_eeas phe2 + WHERE + phe.per_id = phe2.per_id + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities e ON p.org_id = e.org_id + LEFT JOIN mv_countries c ON e.country_id = c.country_code + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_entities_types t ON p.org_id = t.org_id + AND t.is_active = 'Y' + LEFT JOIN mv_emails em ON em.per_id = p.per_id + UNION ALL + SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + c.eu_state AS organization_in_eu, + t.code AS int_org_code, + CASE + WHEN t.id IS NULL THEN + 'N' + ELSE + 'Y' + END AS international_organization, + p.org_id AS org_id, + p.job_id AS job_id, + assign.start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM assign.end_date) IN ( 2099, + 9999 ) ) THEN + to_date( + NULL + ) + ELSE + assign.end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id + FROM + mv_persons_com + WHERE + mv_persons_com.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL + FROM + mv_persons_hist_com phc + WHERE + coalesce( + phc.start_date, + sysdate + ) = ( + SELECT + coalesce( + MAX(phc2.start_date), + sysdate + ) + FROM + mv_persons_hist_com phc2 + WHERE + phc.per_id = phc2.per_id + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities_hist_com e ON p.org_id = e.org_id + AND trunc(sysdate) < trunc( + e.end_date + ) + LEFT JOIN mv_countries c ON e.country_id = c.country_code + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_entities_types t ON p.org_id = t.org_id + AND t.is_active = 'Y' + LEFT JOIN mv_assignments_com assign ON assign.per_id = p.per_id + AND assign.toj_cd = 'AFF' + LEFT JOIN mv_emails em ON em.per_id = p.per_id; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC04/11.RIGD-498-ENTITLMNT_MAXS_DEFAULT_Insert.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/11.RIGD-498-ENTITLMNT_MAXS_DEFAULT_Insert.sql new file mode 100644 index 0000000..a19c32d --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/11.RIGD-498-ENTITLMNT_MAXS_DEFAULT_Insert.sql @@ -0,0 +1,285 @@ +REM INSERTING into ENTITLMNT_MAXS_DEFAULT +SET DEFINE OFF; +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7636,'BRU','MOW','BEL','RUS',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),16716,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7637,'BRU','KGL','BEL','RWA',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),23755,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7638,'BRU','RUH','BEL','SAU',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),20089,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7639,'BRU','DKR','BEL','SEN',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),18455.850000000002,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7640,'BRU','BEG','BEL','SRB',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),14776,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7641,'BRU','FNA','BEL','SLE',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),22966.65,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7642,'BRU','SIN','BEL','SGP',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),20552,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7643,'BRU','JUB','BEL','SSD',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),29250.9,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7644,'BRU','CMB','BEL','LKA',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),18150.3,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7645,'BRU','KRT','BEL','SDN',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19749,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7646,'BRU','TPE','BEL','TWN',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),20108,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7647,'BRU','DYU','BEL','TJK',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),20501.05,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7648,'BRU','DAR','BEL','TZA',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),20010.9,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7649,'BRU','BKK','BEL','THA',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),25095,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7650,'BRU','DIL','BEL','TLS',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),30613,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7651,'BRU','LFW','BEL','TGO',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19369,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7652,'BRU','POS','BEL','TTO',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),26919,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7653,'BRU','TUN','BEL','TUN',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),15066,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7654,'BRU','ANK','BEL','TUR',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),17596.95,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7655,'BRU','ASB','BEL','TKM',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19971,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7656,'BRU','KLA','BEL','UGA',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),22549,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7657,'BRU','IEV','BEL','UKR',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),14171,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7658,'BRU','AUH','BEL','ARE',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),17232.600000000002,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7659,'BRU','LON','BEL','GBR',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19009.2,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7660,'BRU','NYC','BEL','USA',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),20942,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7661,'BRU','WAS','BEL','USA',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),20076,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7662,'BRU','GVA','BEL','CHE',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),17845.8,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7663,'BRU','MVD','BEL','URY',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),22850,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7664,'BRU','TAS','BEL','UZB',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),21131.95,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7665,'BRU','CCS','BEL','VEN',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),23859,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7666,'BRU','HAN','BEL','VNM',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),25211.55,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7667,'BRU','JRS','BEL','ISR',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),17466,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7668,'BRU','LUN','BEL','ZMB',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),30522,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7669,'BRU','HRE','BEL','ZWE',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),25282,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7670,'BRU','TIA','BEL','ALB',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),16238.25,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7671,'BRU','ALG','BEL','DZA',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),20130,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7672,'BRU','LAD','BEL','AGO',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),30482.550000000003,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7673,'BRU','BUE','BEL','ARG',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),23000,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7674,'BRU','EVN','BEL','ARM',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),18247,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7675,'BRU','CBR','BEL','AUS',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19449,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7676,'BRU','BAK','BEL','AZE',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19984,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7677,'BRU','DAC','BEL','BGD',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),23738,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7678,'BRU','BGI','BEL','BRB',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),24565,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7679,'BRU','MSQ','BEL','BLR',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),18213,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7680,'BRU','COO','BEL','BEN',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),18846,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7681,'BRU','LPB','BEL','BOL',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),21782,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7682,'BRU','SJJ','BEL','BIH',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),15225,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7683,'BRU','GBE','BEL','BWA',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),22453,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7684,'BRU','OUA','BEL','BFA',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),22229,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7685,'BRU','BJM','BEL','BDI',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),27917,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7686,'BRU','BSB','BEL','BRA',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),23506.350000000002,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7687,'BRU','RAI','BEL','CPV',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),23006,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7688,'BRU','PNH','BEL','KHM',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19785.15,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7689,'BRU','YAO','BEL','CMR',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19731.600000000002,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7690,'BRU','YOW','BEL','CAN',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),18588,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7691,'BRU','BGF','BEL','CAF',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),38074,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7692,'BRU','NDJ','BEL','TCD',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),31353,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7693,'BRU','SCL','BEL','CHL',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),20721,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7694,'BRU','PEK','BEL','CHN',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),22523,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7695,'BRU','BOG','BEL','COL',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),23447,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7696,'BRU','BZV','BEL','COG',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),31112,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7697,'BRU','SJO','BEL','CRI',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19371,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7698,'BRU','FIH','BEL','COD',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),33106,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7699,'BRU','HAV','BEL','CUB',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),26883,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7700,'BRU','JIB','BEL','DJI',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19997.25,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7701,'BRU','SDQ','BEL','DOM',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),17869,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7702,'BRU','UIO','BEL','ECU',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),20783,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7703,'BRU','CAI','BEL','EGY',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),16090,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7704,'BRU','SAL','BEL','SLV',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19440,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7705,'BRU','ASM','BEL','ERI',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),22807,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7706,'BRU','QMN','BEL','SWZ',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),25982.25,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7707,'BRU','ADD','BEL','ETH',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),21097,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7708,'BRU','SUV','BEL','FJI',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),24440.850000000002,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7709,'BRU','LBV','BEL','GAB',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),23559.800000000003,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7710,'BRU','BJL','BEL','GMB',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),21089,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7711,'BRU','TBS','BEL','GEO',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19656,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7712,'BRU','ACC','BEL','GHA',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),18299,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7713,'BRU','GUA','BEL','GTM',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19207,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7714,'BRU','CKY','BEL','GIN',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),22989,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7715,'BRU','BXO','BEL','GNB',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),22389,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7716,'BRU','GEO','BEL','GUY',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19559,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7717,'BRU','PAP','BEL','HTI',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19044,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7718,'BRU','TGU','BEL','HND',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),21954.05,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7719,'BRU','HKG','BEL','HKG',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),24366,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7720,'BRU','REK','BEL','ISL',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),22957,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7721,'BRU','DEL','BEL','IND',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),16741,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7722,'BRU','JKT','BEL','IDN',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),33146.4,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7723,'BRU','BGW','BEL','IRQ',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),28472.640000000003,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7724,'BRU','TLV','BEL','ISR',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),23340.235586717947,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7725,'BRU','ASK','BEL','CIV',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),22290,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7726,'BRU','KIN','BEL','JAM',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),21634.2,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7727,'BRU','TYO','BEL','JPN',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),24749,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7728,'BRU','AMM','BEL','JOR',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),17316.600000000002,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7729,'BRU','TSE','BEL','KAZ',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19882,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7730,'BRU','NBO','BEL','KEN',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),18702,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7731,'BRU','SEL','BEL','KOR',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),21478,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7732,'BRU','PRN','BEL','XKX',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),13896,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7733,'BRU','KWI','BEL','KWT',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),16290.75,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7734,'BRU','FRU','BEL','KGZ',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19096,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7735,'BRU','VTE','BEL','LAO',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),23016,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7736,'BRU','BEY','BEL','LBN',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),16511.25,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7737,'BRU','MSU','BEL','LSO',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),25030.95,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7738,'BRU','MLW','BEL','LBR',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),23752.960000000003,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7739,'BRU','TIP','BEL','LBY',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),14812,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7740,'BRU','TNR','BEL','MDG',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19680.15,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7741,'BRU','LLW','BEL','MWI',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),24584,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7742,'BRU','KUL','BEL','MYS',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),23428,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7743,'BRU','BKO','BEL','MLI',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),22592,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7744,'BRU','NKC','BEL','MRT',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19057.920000000002,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7745,'BRU','MRU','BEL','MUS',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),17691,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7746,'BRU','MEX','BEL','MEX',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),21204,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7747,'BRU','KIV','BEL','MDA',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),15637.650000000001,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7748,'BRU','ULN','BEL','MNG',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),24676,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7749,'BRU','TGD','BEL','MNE',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),16074.45,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7750,'BRU','RBA','BEL','MAR',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),17330,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7751,'BRU','MPM','BEL','MOZ',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),18883,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7752,'BRU','RGN','BEL','MMR',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19673,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7753,'BRU','WDH','BEL','NAM',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19257,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7754,'BRU','KTM','BEL','NPL',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),20381,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7755,'BRU','WLG','BEL','NZL',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19215,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7756,'BRU','MGA','BEL','NIC',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),21126,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7757,'BRU','NIM','BEL','NER',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),26571.300000000003,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7758,'BRU','ABV','BEL','NGA',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),21550,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7759,'BRU','SKP','BEL','MKD',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),14347.2,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7760,'BRU','OSL','BEL','NOR',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),18006,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7761,'BRU','ISB','BEL','PAK',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),16928.100000000002,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7762,'BRU','PTY','BEL','PAN',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19453.17,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7763,'BRU','POM','BEL','PNG',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),25505,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7764,'BRU','ASU','BEL','PRY',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),21115,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7765,'BRU','LIM','BEL','PER',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),19601,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7766,'BRU','MNL','BEL','PHL',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),20353.2,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7767,'BRU','PRY','BEL','ZAF',to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:04','DD-MON-YYYY HH24:MI:SS'),18330.9,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),9,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7768,'BRU','MOW','BEL','RUS',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),4697,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7769,'BRU','KGL','BEL','RWA',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),11381,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7770,'BRU','RUH','BEL','SAU',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7313,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7771,'BRU','DKR','BEL','SEN',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6478.5,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7772,'BRU','BEG','BEL','SRB',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),4894,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7773,'BRU','FNA','BEL','SLE',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),9094.050000000001,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7774,'BRU','SIN','BEL','SGP',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6984,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7775,'BRU','JUB','BEL','SSD',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),12285,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7776,'BRU','CMB','BEL','LKA',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),5734.05,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7777,'BRU','KRT','BEL','SDN',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7391,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7778,'BRU','TPE','BEL','TWN',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7727,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7779,'BRU','DYU','BEL','TJK',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),9956.699999999999,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7780,'BRU','DAR','BEL','TZA',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7061.25,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7781,'BRU','BKK','BEL','THA',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),10625,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7782,'BRU','DIL','BEL','TLS',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),11769,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7783,'BRU','LFW','BEL','TGO',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7421,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7784,'BRU','POS','BEL','TTO',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8475,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7785,'BRU','TUN','BEL','TUN',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),5585,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7786,'BRU','ANK','BEL','TUR',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6634.950000000001,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7787,'BRU','ASB','BEL','TKM',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7658,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7788,'BRU','KLA','BEL','UGA',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7105,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7789,'BRU','IEV','BEL','UKR',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),4891,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7790,'BRU','AUH','BEL','ARE',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7525.35,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7791,'BRU','LON','BEL','GBR',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6583.5,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7792,'BRU','NYC','BEL','USA',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7943,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7793,'BRU','WAS','BEL','USA',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8124,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7794,'BRU','GVA','BEL','CHE',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6995.1,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7795,'BRU','MVD','BEL','URY',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7412,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7796,'BRU','TAS','BEL','UZB',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),10295.767923328933,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7797,'BRU','CCS','BEL','VEN',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),11821,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7798,'BRU','HAN','BEL','VNM',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),10498.95,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7799,'BRU','JRS','BEL','ISR',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),5710,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7800,'BRU','LUN','BEL','ZMB',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),11530,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7801,'BRU','HRE','BEL','ZWE',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),11174,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7802,'BRU','TIA','BEL','ALB',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),4899.3,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7803,'BRU','ALG','BEL','DZA',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7514,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7804,'BRU','LAD','BEL','AGO',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),12735.45,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7805,'BRU','BUE','BEL','ARG',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8714,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7806,'BRU','EVN','BEL','ARM',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6280,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7807,'BRU','CBR','BEL','AUS',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6479,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7808,'BRU','BAK','BEL','AZE',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7431,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7809,'BRU','DAC','BEL','BGD',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8408,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7810,'BRU','BGI','BEL','BRB',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8000,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7811,'BRU','MSQ','BEL','BLR',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6364,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7812,'BRU','COO','BEL','BEN',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),9255,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7813,'BRU','LPB','BEL','BOL',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8283,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7814,'BRU','SJJ','BEL','BIH',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),4719,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7815,'BRU','GBE','BEL','BWA',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),10385,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7816,'BRU','OUA','BEL','BFA',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),10239,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7817,'BRU','BJM','BEL','BDI',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),9990,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7818,'BRU','BSB','BEL','BRA',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),11366.25,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7819,'BRU','RAI','BEL','CPV',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7965,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7820,'BRU','PNH','BEL','KHM',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6731.55,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7821,'BRU','YAO','BEL','CMR',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7332.150000000001,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7822,'BRU','YOW','BEL','CAN',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6481,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7823,'BRU','BGF','BEL','CAF',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),17450,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7824,'BRU','NDJ','BEL','TCD',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),17125.5,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7825,'BRU','SCL','BEL','CHL',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8112,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7826,'BRU','PEK','BEL','CHN',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6325,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7827,'BRU','BOG','BEL','COL',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),9747,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7828,'BRU','BZV','BEL','COG',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),16730,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7829,'BRU','SJO','BEL','CRI',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6794,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7830,'BRU','FIH','BEL','COD',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),14287,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7831,'BRU','HAV','BEL','CUB',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8737,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7832,'BRU','JIB','BEL','DJI',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6769.35,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7833,'BRU','SDQ','BEL','DOM',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),5849,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7834,'BRU','UIO','BEL','ECU',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8437,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7835,'BRU','CAI','BEL','EGY',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),5166,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7836,'BRU','SAL','BEL','SLV',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6805,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7837,'BRU','ASM','BEL','ERI',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),9064,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7838,'BRU','QMN','BEL','SWZ',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),13820.1,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7839,'BRU','ADD','BEL','ETH',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7534,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7840,'BRU','SUV','BEL','FJI',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),11210.85,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7841,'BRU','LBV','BEL','GAB',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8735.1,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7842,'BRU','BJL','BEL','GMB',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7868,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7843,'BRU','TBS','BEL','GEO',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6595,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7844,'BRU','ACC','BEL','GHA',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6591,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7845,'BRU','GUA','BEL','GTM',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6633,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7846,'BRU','CKY','BEL','GIN',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),9277,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7847,'BRU','BXO','BEL','GNB',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),9906,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7848,'BRU','GEO','BEL','GUY',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8395,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7849,'BRU','PAP','BEL','HTI',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7984,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7850,'BRU','TGU','BEL','HND',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8157.95,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7851,'BRU','HKG','BEL','HKG',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7443,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7852,'BRU','REK','BEL','ISL',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6743,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7853,'BRU','DEL','BEL','IND',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),5974,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7854,'BRU','JKT','BEL','IDN',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),11745.300000000001,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7855,'BRU','BGW','BEL','IRQ',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),13731.2,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7856,'BRU','TLV','BEL','ISR',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6578.034413282056,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7857,'BRU','ASK','BEL','CIV',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7999,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7858,'BRU','KIN','BEL','JAM',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6528.900000000001,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7859,'BRU','TYO','BEL','JPN',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7309,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7860,'BRU','AMM','BEL','JOR',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),5779.2,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7861,'BRU','TSE','BEL','KAZ',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7475,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7862,'BRU','NBO','BEL','KEN',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6862,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7863,'BRU','SEL','BEL','KOR',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7134,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7864,'BRU','PRN','BEL','XKX',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),5392,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7865,'BRU','KWI','BEL','KWT',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6526.8,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7866,'BRU','FRU','BEL','KGZ',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),9592.800000000001,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7867,'BRU','VTE','BEL','LAO',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8961,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7868,'BRU','BEY','BEL','LBN',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),5110.35,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7869,'BRU','MSU','BEL','LSO',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8848.35,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7870,'BRU','MLW','BEL','LBR',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),10552.640000000001,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7871,'BRU','TIP','BEL','LBY',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),5790,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7872,'BRU','TNR','BEL','MDG',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7115.85,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7873,'BRU','LLW','BEL','MWI',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),9920,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7874,'BRU','KUL','BEL','MYS',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),10315,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7875,'BRU','BKO','BEL','MLI',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),9740,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7876,'BRU','NKC','BEL','MRT',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6938.400000000001,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7877,'BRU','MRU','BEL','MUS',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6111,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7878,'BRU','MEX','BEL','MEX',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7775,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7879,'BRU','KIV','BEL','MDA',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6360.900000000001,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7880,'BRU','ULN','BEL','MNG',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8025,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7881,'BRU','TGD','BEL','MNE',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6302.1,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7882,'BRU','RBA','BEL','MAR',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7006,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7883,'BRU','MPM','BEL','MOZ',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7750,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7884,'BRU','RGN','BEL','MMR',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7464,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7885,'BRU','WDH','BEL','NAM',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8055,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7886,'BRU','KTM','BEL','NPL',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7530,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7887,'BRU','WLG','BEL','NZL',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6325.2,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7888,'BRU','MGA','BEL','NIC',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7774,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7889,'BRU','NIM','BEL','NER',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8922.9,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7890,'BRU','ABV','BEL','NGA',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),9339,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7891,'BRU','SKP','BEL','MKD',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),5419.05,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7892,'BRU','OSL','BEL','NOR',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6395,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7893,'BRU','ISB','BEL','PAK',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),7046.55,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7894,'BRU','PTY','BEL','PAN',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),6909.099999999999,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7895,'BRU','POM','BEL','PNG',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),10421,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7896,'BRU','ASU','BEL','PRY',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8525,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7897,'BRU','LIM','BEL','PER',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8284,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7898,'BRU','MNL','BEL','PHL',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8650.95,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); +Insert into ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID,CITY_CODE_TO,CITY_CODE_FROM,COUNTRY_CODE_TO,COUNTRY_CODE_FROM,CREATED_AT,CREATED_BY,UPDATED_BY,UPDATED_AT,AMOUNT,CURRENCY,START_DATE,ENTITLMNT_MAX_CAT_ID,LATEST) values (7899,'BRU','PRY','BEL','ZAF',to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),1,1,to_date('30-APR-2021 17:54:49','DD-MON-YYYY HH24:MI:SS'),8170.05,'EUR',to_date('01-MAY-2021 00:00:00','DD-MON-YYYY HH24:MI:SS'),2,'Y'); + +COMMIT; + +DECLARE + ln_max_id NUMBER; + ln_id NUMBER; +BEGIN + SELECT + MAX(entitlmnt_max_default_id) + INTO ln_max_id + FROM + entitlmnt_maxs_default; + + LOOP + ln_id := seq_entitlmnt_max_default.nextval; + EXIT WHEN ln_id >= ln_max_id; + END LOOP; +END; +/ \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC04/12.RIGD-498-entitlmnt_maxs_update.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/12.RIGD-498-entitlmnt_maxs_update.sql new file mode 100644 index 0000000..31d88da --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/12.RIGD-498-entitlmnt_maxs_update.sql @@ -0,0 +1,71 @@ +CREATE TABLE bkp$entitlmnt_maxs_rigd498 + AS + SELECT + * + FROM + entitlmnt_maxs; + +CREATE TABLE bkp$entitlmnt_maxs_upd_rigd498 + AS + SELECT + em.entitlmnt_max_id, + emd.amount, + emd.currency + FROM + movement_files f + INNER JOIN entitlmnt_types et ON ( f.movement_file_id = et.movement_file_id ) + INNER JOIN entitlmnt_types_cat etc ON ( et.entitlmnt_type_catg_id = etc.entitlmnt_type_cat_id ) + INNER JOIN entitlmnt_maxs_cat emc ON ( emc.entitlmnt_type_cat_id = etc.entitlmnt_type_cat_id ) + INNER JOIN entitlmnt_maxs em ON ( em.entitlmnt_type_id = et.entitlmnt_type_id + AND em.entitlmnt_max_cat_id = emc.entitlmnt_max_cat_id ) + INNER JOIN entitlmnt_maxs_default emd ON ( emd.entitlmnt_max_cat_id = emc.entitlmnt_max_cat_id + AND emd.city_code_to = f.city_code_to + AND emd.city_code_from = f.city_code_from + AND emd.country_code_to = f.country_code_to + AND emd.country_code_from = f.country_code_from ) + WHERE + f.state = 'DRAFT' + AND etc.code = 'REM' + AND emc.entitlmnt_max_cat_id IN ( 9, + 2 )--emc.code IN ('SURFACE', 'CAR') + AND em.max_value IS NULL + AND em.max_currency IS NULL + AND emd.latest = 'Y'; + +BEGIN + FOR lr_to_update IN ( SELECT + em.entitlmnt_max_id, + emd.amount, + emd.currency + FROM + movement_files f + INNER JOIN entitlmnt_types et ON ( f.movement_file_id = et.movement_file_id ) + INNER JOIN entitlmnt_types_cat etc ON ( et.entitlmnt_type_catg_id = etc.entitlmnt_type_cat_id ) + INNER JOIN entitlmnt_maxs_cat emc ON ( emc.entitlmnt_type_cat_id = etc.entitlmnt_type_cat_id ) + INNER JOIN entitlmnt_maxs em ON ( em.entitlmnt_type_id = et.entitlmnt_type_id + AND em.entitlmnt_max_cat_id = emc.entitlmnt_max_cat_id ) + INNER JOIN entitlmnt_maxs_default emd ON ( emd.entitlmnt_max_cat_id = emc.entitlmnt_max_cat_id + AND emd.city_code_to = f.city_code_to + AND emd.city_code_from = f.city_code_from + AND emd.country_code_to = f.country_code_to + AND emd.country_code_from = f.country_code_from ) + WHERE + f.state = 'DRAFT' + AND etc.code = 'REM' + AND emc.entitlmnt_max_cat_id IN ( 9, + 2 )--emc.code IN ('SURFACE', 'CAR') + AND em.max_value IS NULL + AND em.max_currency IS NULL + AND emd.latest = 'Y' + FOR UPDATE OF em.max_value, + em.max_currency ) LOOP + UPDATE entitlmnt_maxs em + SET + em.max_value = lr_to_update.amount, + em.max_currency = lr_to_update.currency + WHERE + em.entitlmnt_max_id = lr_to_update.entitlmnt_max_id; + + END LOOP; +END; +/ \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.0.0-RC04/fake_city_country.sql b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/fake_city_country.sql new file mode 100644 index 0000000..f96938c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.0.0-RC04/fake_city_country.sql @@ -0,0 +1,98 @@ +DROP MATERIALIZED VIEW "ERIGHTS"."MV_COUNTRIES"; + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_COUNTRIES" ( + "COUNTRY_CODE", + "CD_ISO_A2", + "CD_ISO_N3", + "NAME_EN", + "LONG_NAME_EN", + "NAME_FR", + "LONG_NAME_FR", + "EU_STATE", + "CAPITAL", + "COUNTRY_PHONE_CODE", + "CONTINENT_CODE", + "STATUS", + "CURRENCY_CODE", + "CURRENCY_NAME" +) + AS + SELECT + country_code, + cd_iso_a2, + cd_iso_n3, + name_en, + long_name_en, + name_fr, + long_name_fr, + eu_state, + capital, + country_phone_code, + continent_code, + status, + currency_code, + currency_name + FROM + mv_countries@easrefn.cc.cec.eu.int + UNION + SELECT + 'ZZZ' AS country_code, + '??' AS cd_iso_a2, + - 1 AS cd_iso_n3, + 'Unknown' AS name_en, + 'Unknown' AS long_name_en, + 'Inconnu' AS name_fr, + 'Inconnu' AS long_name_fr, + 'Y' AS eu_state, + 'ZZZ' AS capital, + '1' AS country_phone_code, + '??' AS continent_code, + '?' AS status, + 'ZZZ' AS currency_code, + 'ZZZ' AS currency_name + FROM + dual; + +/ +drop MATERIALIZED VIEW "ERIGHTS"."MV_CITIES"; + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_CITIES" ( + "CITY_CODE", + "COUNTRY_CODE", + "CD_SYSPER", + "CD2_SYSPER", + "CD_SIRE", + "NAP_CD", + "RNG_ID", + "DESCRIPTION_EN", + "DESCRIPTION_FR" +) AS + SELECT + "CITY_CODE", + "COUNTRY_CODE", + "CD_SYSPER", + "CD2_SYSPER", + "CD_SIRE", + "NAP_CD", + "RNG_ID", + "DESCRIPTION_EN", + "DESCRIPTION_FR" + FROM + mv_cities@easrefn.cc.cec.eu.int + UNION + SELECT + 'ZZZ' AS "CITY_CODE", + 'ZZZ' AS "COUNTRY_CODE", + 'ZZZ' AS "CD_SYSPER", + 'ZZZ' AS "CD2_SYSPER", + 'ZZZ' AS "CD_SIRE", + 'ZZZ' AS "NAP_CD", + - 1 AS "RNG_ID", + 'Unknown' AS "DESCRIPTION_EN", + 'Unknown' AS "DESCRIPTION_FR" + FROM + dual; + +COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_CITIES" IS + 'snapshot table for snapshot ERIGHTS.MV_CITIES'; + diff --git a/e-rights-common/src/main/database/release/archive/2.1.0-BETA01/01.RIGD-509-notification_template.sql b/e-rights-common/src/main/database/release/archive/2.1.0-BETA01/01.RIGD-509-notification_template.sql new file mode 100644 index 0000000..5031664 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.1.0-BETA01/01.RIGD-509-notification_template.sql @@ -0,0 +1,7 @@ +----------------------------------------------------------------------------------------- +-- Adding notification template. Used when all Amounts have been set in the Entitlemets. +----------------------------------------------------------------------------------------- +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) +values +(11,'ENTITLEMENTS_AMOUNTS_SET','Your input is required to generate your removal and travel entitlements via e-Rights','Dear ${FIRST_NAME} ${LAST_NAME},

    The EEAS.BA.HR.3 Rotation team has determined your entitlements for removal and travel.

    You will find the amounts of your entitlements and other necessary information in your movement file in the e-Rights Portal.

    Steps to follow to receive your entitlements:
    • Please make sure to consult the complete rules and guidelines available in e-Rights.
    • Fill in and submit your movement file declaration in e-Rights. Based on your input, e-Rights will generate your corresponding entitlement requests.
    • Submit your declaration and follow the instructions.
    Kind regards,','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CONFIRM','Y'); + diff --git a/e-rights-common/src/main/database/release/archive/2.1.0-BETA01/bank_info.sql b/e-rights-common/src/main/database/release/archive/2.1.0-BETA01/bank_info.sql new file mode 100644 index 0000000..b3d225b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.1.0-BETA01/bank_info.sql @@ -0,0 +1,23 @@ +-------------------------------------------------------- +-- File created - Wednesday-February-17-2021 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for Table TLSM_PERSONS_BANK_INFO +-------------------------------------------------------- + + CREATE TABLE "PERSONS_BANK_INFO" + ( "PERSONS_BANK_INFO_ID" NUMBER, + "PER_ID" NUMBER, + "LEF" VARCHAR2(128 BYTE), + "BAF" VARCHAR2(128 BYTE), + "LEGAL_ENTITY" VARCHAR2(128 BYTE), + "IBAN_CODE" VARCHAR2(128 BYTE), + "BANK_NAME" VARCHAR2(512 BYTE), + "BANK_ACCOUNT_CODE" VARCHAR2(512 BYTE), + "MAIN_BANK_ACCOUNT" NUMBER, + "ACCOUNT_HOLDER" VARCHAR2(512 BYTE), + "ACCOUNT_CURRENCY" VARCHAR2(128 BYTE) + ) ; + + + CREATE SEQUENCE SEQ_PERSONS_BANK_INFO MINVALUE 1 MAXVALUE 9999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE ; diff --git a/e-rights-common/src/main/database/release/archive/2.1.0-BETA01/create mv and v_family_mambers.sql b/e-rights-common/src/main/database/release/archive/2.1.0-BETA01/create mv and v_family_mambers.sql new file mode 100644 index 0000000..ab80ecb --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.1.0-BETA01/create mv and v_family_mambers.sql @@ -0,0 +1,151 @@ +CREATE MATERIALIZED VIEW MV_FAMILY_MEMBERS ("PER_ID", "SURNAME", "BIRTH_NAME", "FIRST_NAME", "DATE_OF_BIRTH", "GENDER", "START_DATE", "END_DATE", "TRP_CD", "TRP_CODE", "REL_PER_ID", "REL_SURNAME", "REL_BIRTH_NAME", "REL_FIRST_NAME", "REL_DATE_OF_BIRTH", "REL_GENDER", "SOURCE") + AS SELECT /*+driving_site(r)*/ + r.rel_per_id per_id, + r.rel_surname surname, + r.rel_birth_name birth_name, + r.rel_first_name first_name, + r.rel_date_of_birth date_of_birth, + r.rel_gender gender, + r.start_date, + r.end_date, + r.trp_cd, + r.trp_code, + r.per_id rel_per_id, + r.surname rel_surname, + r.birth_name rel_birth_name, + r.first_name rel_first_name, + r.date_of_birth rel_date_of_birth, + r.gender rel_gender, + 'COMREF' source +FROM + mv_person_relatives@easrefn.cc.cec.eu.int r +WHERE + rel_per_id IN ( + SELECT + per_id + FROM + mv_persons_eeas@easrefn.cc.cec.eu.int + ) + AND rel_per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) +UNION ALL +SELECT /*+driving_site(r)*/ + r.per_id, + r.surname, + r.birth_name, + r.first_name, + r.date_of_birth, + r.gender, + r.start_date, + r.end_date, + r.trp_cd, + r.trp_code, + r.rel_per_id, + r.rel_surname, + r.rel_birth_name, + r.rel_first_name, + r.rel_date_of_birth, + r.rel_gender, + 'COMREF' source +FROM + mv_person_relatives@easrefn.cc.cec.eu.int r +WHERE + per_id IN ( + SELECT + per_id + FROM + mv_persons_eeas@easrefn.cc.cec.eu.int + ) + AND rel_per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_person_relatives@easrefn.cc.cec.eu.int r2 + WHERE + r2.per_id = r.rel_per_id + AND r2.rel_per_id = r.per_id + ) +UNION ALL +SELECT /*+driving_site(cfc)*/ + la.per_id per_id, + la.surname surname, + la.birth_name birth_name, + la.first_name first_name, + la.date_of_birth date_of_birth, + la.genre gender, + cfc.relationship_begin_date start_date, + cfc.relationship_end_date end_date, + CASE family_rel_type_cd + WHEN 'SPO' THEN + 41 + WHEN 'CHL' THEN + 6 + END trp_cd, + CASE family_rel_type_cd + WHEN 'SPO' THEN + 'Spouse' + WHEN 'CHL' THEN + 'Child' + END trp_code, + r.per_id rel_per_id, + r.surname rel_surname, + r.birth_name rel_birth_name, + r.first_name rel_first_name, + r.date_of_birth rel_date_of_birth, + r.genre rel_gender, + 'CSISLA' source +FROM + mv_csisla_family_coverage@easrefn.cc.cec.eu.int cfc + INNER JOIN mv_persons_hist_eeas@easrefn.cc.cec.eu.int la ON ( cfc.la_per_id = la.per_id ) + INNER JOIN mv_persons_hist_eeas@easrefn.cc.cec.eu.int r ON ( cfc.per_id = r.per_id ) +WHERE + family_rel_type_cd <> 'LA' + AND sysdate BETWEEN csisla_start_eligibility AND csisla_end_eligibility + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_person_relatives@easrefn.cc.cec.eu.int pr + WHERE + pr.per_id = r.per_id + AND pr.rel_per_id = la.per_id + ); + + COMMENT ON MATERIALIZED VIEW "MV_FAMILY_MEMBERS" IS 'snapshot table for snapshot E_RIGHTS.MV_FAMILY_MEMBERS'; + + + + +/ + + + + +CREATE or replace VIEW "V_FAMILY_MEMBERS" AS + SELECT + per_id || rel_per_id as family_member_id, per_id, surname,date_of_birth,trp_code,rel_per_id,rel_surname,rel_first_name,rel_date_of_birth + FROM + mv_family_members + group by per_id, surname,date_of_birth,trp_code,rel_per_id,rel_surname,rel_first_name,rel_date_of_birth; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.1.0-BETA01/declaraion_tables.sql b/e-rights-common/src/main/database/release/archive/2.1.0-BETA01/declaraion_tables.sql new file mode 100644 index 0000000..30d2cb2 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.1.0-BETA01/declaraion_tables.sql @@ -0,0 +1,36 @@ + +CREATE TABLE DECLARATION +( + "DECLARATION_ID" NUMBER, + "MOVEMENT_FILE_ID" NUMBER, + "PERSONS_BANK_INFO_ID" NUMBER +, CONSTRAINT DECLARATION_PK PRIMARY KEY + ( + DECLARATION_ID + ) + ENABLE +); + + +CREATE TABLE DECLARATION_PERSON +( + DECLARATION_PERSON_ID NUMBER +, FAMILY_MEMBER_ID NUMBER +, DECLARATION_ID NUMBER +, INS_ELIGIBILITY CHAR(1) DEFAULT 'N' +, REM_ELIGIBILITY CHAR(1) DEFAULT 'N' +, TUD_ELIGIBILITY CHAR(1) DEFAULT 'N' +, DECLAREDPERSON CHAR(1) DEFAULT 'N' +); + + + CREATE SEQUENCE "SEQ_DECLARATION" MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE ; + + CREATE SEQUENCE "SEQ_DECLARATION_PERSON" MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE ; + + +ALTER TABLE DECLARATION ADD ENABLE CHAR(1 BYTE) DEFAULT 'N'; + +ALTER TABLE DECLARATION ADD STATE VARCHAR2(20 BYTE); + +ALTER TABLE DECLARATION_PERSON MODIFY FAMILY_MEMBER_ID VARCHAR2(80 BYTE); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.10.0/01_RIGD-2010_add_drat_to_awating_date_in_request.sql b/e-rights-common/src/main/database/release/archive/2.10.0/01_RIGD-2010_add_drat_to_awating_date_in_request.sql new file mode 100644 index 0000000..7af7c61 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.10.0/01_RIGD-2010_add_drat_to_awating_date_in_request.sql @@ -0,0 +1,2 @@ +ALTER TABLE REQUESTS +ADD (DRAFT_TO_AWAITING_DATE TIMESTAMP); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.10.0/02_RIGD-2012_add_rule_code_for_removals.sql b/e-rights-common/src/main/database/release/archive/2.10.0/02_RIGD-2012_add_rule_code_for_removals.sql new file mode 100644 index 0000000..d978858 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.10.0/02_RIGD-2012_add_rule_code_for_removals.sql @@ -0,0 +1,2 @@ +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('57', 'ABAC', 'RULE_CODE_REM', 'ECB_2'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('58', 'ABAC', 'LATE_INTEREST_PAYMENT_METHOD', 'AP'); diff --git a/e-rights-common/src/main/database/release/archive/2.10.0/03_RIGD-2011_rate_missing_mock_service.sql b/e-rights-common/src/main/database/release/archive/2.10.0/03_RIGD-2011_rate_missing_mock_service.sql new file mode 100644 index 0000000..887da34 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.10.0/03_RIGD-2011_rate_missing_mock_service.sql @@ -0,0 +1,18 @@ +CREATE TABLE "ERIGHTS"."GOSSELIN_MOCK" +( + "YEAR" NUMBER, + "CITY_FROM" VARCHAR2(50 BYTE), + "CITY_TO" VARCHAR2(50 BYTE), + "TYPE" VARCHAR2(50 BYTE), + "KG" NUMBER, + "AMOUNT" NUMBER(9, 2), + "LIMIT_CALLS" NUMBER, + "CURRENT_CALLS" NUMBER +) + TABLESPACE "ERIGHTS" ; + +ALTER TABLE GOSSELIN_MOCK ADD CONSTRAINT PK_RATES_MISSING_MOCK PRIMARY KEY (YEAR, + CITY_FROM, + CITY_TO, + TYPE, + KG); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.10.0/05_V_STAFMEMEBER add source mail.sql b/e-rights-common/src/main/database/release/archive/2.10.0/05_V_STAFMEMEBER add source mail.sql new file mode 100644 index 0000000..1eb2b6b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.10.0/05_V_STAFMEMEBER add source mail.sql @@ -0,0 +1,211 @@ + +CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_STAFFMEMBERS" ("PER_ID", "FIRST_NAME", "LAST_NAME", "GENDER", "EMAIL", "BIRTH_CITY", "BIRTH_COUNTRY_CODE", "BIRTH_COUNTRY_DESC", "RECRUITMENT_CITY", "RECRUITMENT_COUNTRY", "ORGANIZATION_NAME", "ORGANIZATION_CITY", "ORGANIZATION_COUNTRY", "ORG_ID", "JOB_ID", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "ORG_CD", "PRIVATE_EMAIL", "PRIVATE_EMAIL_SOURCE","ORIGIN_CITY", "ORIGIN_COUNTRY_CODE", "ORIGIN_COUNTRY_DESC", "STATUTORY_LINK_CODE", "STATUTORY_LINK_DESC") DEFAULT COLLATION "USING_NLS_COMP" AS +SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + p.assign_start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM p.assign_end_date) IN ( 9999, 2099 ) ) THEN + to_date(NULL) + ELSE + p.assign_end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email, + em.source AS private_email_source, + + o.place_of_origin AS origin_city, + o.country_code AS origin_country_code, + o.country_of_origin AS origin_country_desc, + p.lst_cd statutory_link_code, + p.lst_desc statutory_link_desc + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id, + assign_start_date, + assign_end_date, + lst_cd, + lst_code lst_desc + FROM + mv_persons_eeas + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + FROM + mv_persons_hist_eeas phe + WHERE + coalesce(phe.start_date, sysdate) = ( + SELECT + coalesce(MAX(phe2.start_date), sysdate) + FROM + mv_persons_hist_eeas phe2 + WHERE + phe.per_id = phe2.per_id + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities e ON p.org_id = e.org_id + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN v_persons_emails em ON em.per_id = p.per_id + LEFT JOIN v_places_of_origin o ON p.per_id = o.per_id + UNION ALL +SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + assign.start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM assign.end_date) IN ( 2099, 9999 ) ) THEN + to_date(NULL) + ELSE + assign.end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email, + em.source AS private_email_source, + o.place_of_origin origin_city, + o.country_code origin_country_code, + o.country_of_origin origin_country_desc, + p.lst_cd statutory_link_code, + p.lst_desc statutory_link_desc + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id, + lst_cd, + lst_code lst_desc + FROM + mv_persons_com + WHERE + mv_persons_com.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL + FROM + mv_persons_hist_com phc + WHERE + coalesce(phc.start_date, sysdate) = ( + SELECT + coalesce(MAX(phc2.start_date), sysdate) + FROM + mv_persons_hist_com phc2 + WHERE + phc.per_id = phc2.per_id + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities_hist_com e ON p.org_id = e.org_id + AND trunc(sysdate) < trunc(e.end_date) + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_assignments_com assign ON assign.per_id = p.per_id + AND assign.toj_cd = 'AFF' + LEFT JOIN v_persons_emails em ON em.per_id = p.per_id + LEFT JOIN v_places_of_origin o ON p.per_id = o.per_id; + diff --git a/e-rights-common/src/main/database/release/archive/2.10.0/06_FIX free text bank accounts.sql b/e-rights-common/src/main/database/release/archive/2.10.0/06_FIX free text bank accounts.sql new file mode 100644 index 0000000..9372c32 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.10.0/06_FIX free text bank accounts.sql @@ -0,0 +1,230 @@ +-- +-- Backup impacted tables + +CREATE TABLE bkp$persons_bank_info_rigd2017 +AS +SELECT + * + FROM + persons_bank_info; + +CREATE TABLE bkp$requests_rigd2017 +AS +SELECT + * + FROM + requests; + +CREATE TABLE bkp$declaration_rigd2017 +AS +SELECT + * + FROM + declaration; + +-- +-- Show bank accounts without LEF and their corresponding record with the LEF + +SELECT + * + FROM + ( + SELECT + * + FROM + persons_bank_info + WHERE + lef IS NULL + ) p1 + LEFT JOIN ( + SELECT + * + FROM + persons_bank_info + WHERE + lef IS NOT NULL + ) p2 ON ( replace(upper(p1.iban_code), ' ') = p2.iban_code + AND p1.per_id = p2.per_id ) + WHERE + 1 = 1; + +-- +-- Declarations update + +SELECT + * + FROM + declaration d + WHERE + d.persons_bank_info_id IS NOT NULL; + +SELECT + * + FROM + declaration d + INNER JOIN persons_bank_info p USING ( persons_bank_info_id ) + WHERE + p.lef IS NOT NULL; + +UPDATE declaration src + SET + persons_bank_info_id = ( + SELECT + p2.persons_bank_info_id + FROM + ( + SELECT + * + FROM + persons_bank_info + WHERE + lef IS NULL + ) p1 + LEFT JOIN ( + SELECT + * + FROM + persons_bank_info + WHERE + lef IS NOT NULL + ) p2 ON ( replace(upper(p1.iban_code), ' ') = p2.iban_code + AND p1.per_id = p2.per_id ) + WHERE + p1.persons_bank_info_id = src.persons_bank_info_id + ) + WHERE + src.persons_bank_info_id IN ( + SELECT + p1.persons_bank_info_id + FROM + ( + SELECT + * + FROM + persons_bank_info + WHERE + lef IS NULL + ) p1 + LEFT JOIN ( + SELECT + * + FROM + persons_bank_info + WHERE + lef IS NOT NULL + ) p2 ON ( replace(upper(p1.iban_code), ' ') = p2.iban_code + AND p1.per_id = p2.per_id ) + WHERE + p2.persons_bank_info_id IS NOT NULL + ); + +-- +-- Requests update + +SELECT + * + FROM + requests r + WHERE + r.persons_bank_info_id IS NOT NULL; + +SELECT + *--count(*)--distinct replace(upper(iban_code), ' ')) + FROM + requests r + INNER JOIN persons_bank_info p ON ( r.persons_bank_info_id = p.persons_bank_info_id ) + WHERE + p.lef IS NULL; +AND r.state NOT IN ('PAID', 'DRAFT') + AND r.REQUEST_STRING_ID not like '%INS%' + ; +SELECT + * + FROM + requests r + INNER JOIN persons_bank_info p ON ( r.persons_bank_info_id = p.persons_bank_info_id ) + INNER JOIN declaration d ON ( r.declaration_id = d.declaration_id ) + INNER JOIN persons_bank_info p2 ON ( d.persons_bank_info_id = p2.persons_bank_info_id ) + WHERE + p.lef IS NULL + AND d.persons_bank_info_id <> r.persons_bank_info_id; + +UPDATE requests src + SET + persons_bank_info_id = ( + SELECT + p2.persons_bank_info_id + FROM + ( + SELECT + * + FROM + persons_bank_info + WHERE + lef IS NULL + ) p1 + LEFT JOIN ( + SELECT + * + FROM + persons_bank_info + WHERE + lef IS NOT NULL + ) p2 ON ( replace(upper(p1.iban_code), ' ') = p2.iban_code + AND p1.per_id = p2.per_id ) + WHERE + p1.persons_bank_info_id = src.persons_bank_info_id + ) + WHERE + src.persons_bank_info_id IN ( + SELECT + p1.persons_bank_info_id + FROM + ( + SELECT + * + FROM + persons_bank_info + WHERE + lef IS NULL + ) p1 + LEFT JOIN ( + SELECT + * + FROM + persons_bank_info + WHERE + lef IS NOT NULL + ) p2 ON ( replace(upper(p1.iban_code), ' ') = p2.iban_code + AND p1.per_id = p2.per_id ) + WHERE + p2.persons_bank_info_id IS NOT NULL + ); + + +-- +-- Delete unused person bank info +DELETE FROM persons_bank_info + WHERE + persons_bank_info_id NOT IN ( + SELECT + persons_bank_info_id + FROM + declaration + ) + AND persons_bank_info_id NOT IN ( + SELECT + persons_bank_info_id + FROM + requests + ); + +-- Remaining incomplete accounts +SELECT + * + FROM + persons_bank_info + WHERE + lef IS NULL; + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.10.0/13_RIGD-9999 add source email to vstaffmemeber.sql b/e-rights-common/src/main/database/release/archive/2.10.0/13_RIGD-9999 add source email to vstaffmemeber.sql new file mode 100644 index 0000000..93c4ae5 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.10.0/13_RIGD-9999 add source email to vstaffmemeber.sql @@ -0,0 +1,280 @@ + +CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_STAFFMEMBERS" ("PER_ID", "FIRST_NAME", "LAST_NAME", "GENDER", "EMAIL", "BIRTH_CITY", "BIRTH_COUNTRY_CODE", "BIRTH_COUNTRY_DESC", "RECRUITMENT_CITY", "RECRUITMENT_COUNTRY", "ORGANIZATION_NAME", "ORGANIZATION_CITY", "ORGANIZATION_COUNTRY", "ORG_ID", "JOB_ID", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "ORG_CD", "PRIVATE_EMAIL", "PRIVATE_EMAIL_SOURCE","ORIGIN_CITY", "ORIGIN_COUNTRY_CODE", "ORIGIN_COUNTRY_DESC", "STATUTORY_LINK_CODE", "STATUTORY_LINK_DESC") DEFAULT COLLATION "USING_NLS_COMP" AS +SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + p.assign_start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM p.assign_end_date) IN ( 9999, 2099 ) ) THEN + to_date(NULL) + ELSE + p.assign_end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email, + em.source AS private_email_source, + + o.place_of_origin AS origin_city, + o.country_code AS origin_country_code, + o.country_of_origin AS origin_country_desc, + p.lst_cd statutory_link_code, + p.lst_desc statutory_link_desc + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id, + assign_start_date, + assign_end_date, + lst_cd, + lst_code lst_desc + FROM + mv_persons_eeas + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + FROM + mv_persons_hist_eeas phe + WHERE + coalesce(phe.start_date, sysdate) = ( + SELECT + coalesce(MAX(phe2.start_date), sysdate) + FROM + mv_persons_hist_eeas phe2 + WHERE + phe.per_id = phe2.per_id + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities e ON p.org_id = e.org_id + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN v_persons_emails em ON em.per_id = p.per_id + LEFT JOIN v_places_of_origin o ON p.per_id = o.per_id + UNION ALL +SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + assign.start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM assign.end_date) IN ( 2099, 9999 ) ) THEN + to_date(NULL) + ELSE + assign.end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email, + em.source AS private_email_source, + o.place_of_origin origin_city, + o.country_code origin_country_code, + o.country_of_origin origin_country_desc, + p.lst_cd statutory_link_code, + p.lst_desc statutory_link_desc + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id, + lst_cd, + lst_code lst_desc + FROM + mv_persons_com + WHERE + mv_persons_com.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL + FROM + mv_persons_hist_com phc + WHERE + coalesce(phc.start_date, sysdate) = ( + SELECT + coalesce(MAX(phc2.start_date), sysdate) + FROM + mv_persons_hist_com phc2 + WHERE + phc.per_id = phc2.per_id + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities_hist_com e ON p.org_id = e.org_id + AND trunc(sysdate) < trunc(e.end_date) + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_assignments_com assign ON assign.per_id = p.per_id + AND assign.toj_cd = 'AFF' + LEFT JOIN v_persons_emails em ON em.per_id = p.per_id + LEFT JOIN v_places_of_origin o ON p.per_id = o.per_id; + + +drop MATERIALIZED VIEW "ERIGHTS"."MV_NUP"; + + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_NUP" ( "PER_ID", "NUP","NO_SYSPER" ) + +AS SELECT per_id, + MAX( nup ) KEEP ( DENSE_RANK LAST ORDER BY MODIFICATION_DATE ) AS nup, + MAX( NO_SYSPER ) KEEP ( DENSE_RANK LAST ORDER BY MODIFICATION_DATE ) AS NO_SYSPER + + FROM mv_nup@easrefn.cc.cec.eu.int + GROUP BY per_id; + +DROP MATERIALIZED VIEW "ERIGHTS"."MV_PERSONS_DATA_FOR_ABAC"; +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_PERSONS_DATA_FOR_ABAC" ( + "PER_ID", + "NUP", + "BIRTH_NAME", + "FIRST_NAME", + "ANALYTICAL_CODE" + ) AS +SELECT + per_id, nup, birth_name, first_name, analytical_code + FROM + ( + SELECT + per_id, nup, birth_name, first_name, analytical_code, + ROW_NUMBER() + OVER(PARTITION BY per_id + ORDER BY + preference ASC + ) rn + FROM + ( + SELECT + per_id, + nup as nup , + ' ' birth_name, + ' ' first_name, + 'NO_CODE_FOUND' analytical_code, + 2 preference + FROM + mv_nup + UNION --ALL + SELECT + per_id, + nup, + birth_name, + first_name, + analytical_code, + 1 preference + FROM + mv_analytical_codes@easrefn.cc.cec.eu.int + ) + ) + WHERE + rn = 1; + + + + + +REM INSERTING into ERIGHTS.T_REFRESH_OBJECTS +SET DEFINE OFF; +Insert into ERIGHTS.T_REFRESH_OBJECTS (ID,APP_OBJECT_NAME,PRIORITY,IS_REFRESHED,STATUS,REFRESH_DATE,SYSTEM) +values (38,'MV_NUP',38,'N','KO',null,'EASREFN'); +Insert into ERIGHTS.T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) +values (38,'MV_NUP',38); +commit; diff --git a/e-rights-common/src/main/database/release/archive/2.10.0/24_RIGD-1552_Add_communication_id_to_notifications_table.sql b/e-rights-common/src/main/database/release/archive/2.10.0/24_RIGD-1552_Add_communication_id_to_notifications_table.sql new file mode 100644 index 0000000..854c9ef --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.10.0/24_RIGD-1552_Add_communication_id_to_notifications_table.sql @@ -0,0 +1,5 @@ +----------------------------------------------------------------------- +-- Adding COMMUNICATION_ID to track its status via the REST client +----------------------------------------------------------------------- +ALTER TABLE "NOTIFICATIONS" ADD "COMMUNICATION_ID" VARCHAR2(256 CHAR); +COMMENT ON COLUMN "NOTIFICATIONS"."COMMUNICATION_ID" IS 'ID returned by e-DMS when a notification request is sent to e-DMS. Later needed to find out the the status of that request.'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.11.0/25_RIGD-2044_create_table_for_rates_tud_skyscanner.sql b/e-rights-common/src/main/database/release/archive/2.11.0/25_RIGD-2044_create_table_for_rates_tud_skyscanner.sql new file mode 100644 index 0000000..6c1f3f4 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.11.0/25_RIGD-2044_create_table_for_rates_tud_skyscanner.sql @@ -0,0 +1,49 @@ +CREATE TABLE RATES_TUD + ( + RATES_TUD_ID NUMBER + + , COUNTRY VARCHAR2(10 CHAR) + , CURRENCY VARCHAR2(10 CHAR) + , LOCALE VARCHAR2(10 CHAR) + , LOCATION_SCHEMA VARCHAR2(50 CHAR) + , ORIGIN_PLACE VARCHAR2(50 CHAR) + , DESTINATION_PLACE VARCHAR2(50 CHAR) + + , MOVEMENT_FILE_ID NUMBER + , ENTITLMNT_SPECIFIC CHAR DEFAULT 'N' NOT NULL + , ENTITLMNT_MAXS_ID NUMBER + , ENTITLMNT_MAXS_CAT_CODE VARCHAR2(20 CHAR) + + , ADULTS NUMBER + , CHILDREN NUMBER + , INFANTS NUMBER + + , REQ_OUTBOUND_DATE DATE + , USED_OUTBOUND_DATE DATE + + , RESPONSE_PR_ECONOMY CLOB + , RESPONSE_BUSINESS CLOB + + , RESULT_URL_PR_ECONOMY VARCHAR2(500 CHAR) + , RESULT_URL_BUSINESS VARCHAR2(500 CHAR) + + , INFO_COMPLETE CHAR DEFAULT 'N' NOT NULL + + , RETRIEVED_AT DATE + , SEARCH_CEASED CHAR DEFAULT 'N' NOT NULL + + , SEL_ITINERARY_ID VARCHAR2(200 CHAR) + , SEL_ITINERARY_PRICE NUMBER + + , DELETED CHAR DEFAULT 'N' NOT NULL + + , WEBSERVICE_NAME VARCHAR2(50 CHAR) NOT NULL + , CREATED_AT DATE + , UPDATED_AT DATE + , CREATED_BY NUMBER + , UPDATED_BY NUMBER + , CONSTRAINT RATES_TUD_PK PRIMARY KEY (RATES_TUD_ID) + ); + + +CREATE SEQUENCE SEQ_RATES_TUD INCREMENT BY 1 START WITH 1 MINVALUE 1; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.11.0/26_RIGD-2094_add_from_to_cols_in_entitlement_maxs.sql b/e-rights-common/src/main/database/release/archive/2.11.0/26_RIGD-2094_add_from_to_cols_in_entitlement_maxs.sql new file mode 100644 index 0000000..72c9230 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.11.0/26_RIGD-2094_add_from_to_cols_in_entitlement_maxs.sql @@ -0,0 +1,8 @@ +ALTER TABLE ENTITLMNT_MAXS ADD (IATA_FROM VARCHAR2(10 CHAR) ); +ALTER TABLE ENTITLMNT_MAXS ADD (IATA_TO VARCHAR2(10 CHAR) ); + + +ALTER TABLE AUD_ENTITLMNT_MAXS ADD (IATA_FROM VARCHAR2(10 CHAR) ); +ALTER TABLE AUD_ENTITLMNT_MAXS ADD (IATA_TO VARCHAR2(10 CHAR) ); + + diff --git a/e-rights-common/src/main/database/release/archive/2.11.0/27_RIGD-2043_update_suggestion_column.sql b/e-rights-common/src/main/database/release/archive/2.11.0/27_RIGD-2043_update_suggestion_column.sql new file mode 100644 index 0000000..723d808 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.11.0/27_RIGD-2043_update_suggestion_column.sql @@ -0,0 +1,2 @@ +update ENTITLMNT_MAXS_CAT set SUGGESTION = 'Y' where CODE = 'TUD_DEPENDENT'; +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.11.0/28_add origin to MF.sql b/e-rights-common/src/main/database/release/archive/2.11.0/28_add origin to MF.sql new file mode 100644 index 0000000..e05bd74 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.11.0/28_add origin to MF.sql @@ -0,0 +1,6 @@ +ALTER TABLE MOVEMENT_FILES + ADD (IATA_CODE VARCHAR2(3) ); + +ALTER TABLE AUD_MOVEMENT_FILES + ADD (IATA_CODE VARCHAR2(3) ); + //remove other origin fields \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.11.0/29_RIGD-2090_AIRPORTS.sql b/e-rights-common/src/main/database/release/archive/2.11.0/29_RIGD-2090_AIRPORTS.sql new file mode 100644 index 0000000..75a4ae6 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.11.0/29_RIGD-2090_AIRPORTS.sql @@ -0,0 +1,66 @@ +DROP TABLE erights.airports; + +CREATE TABLE erights.airports ( + iata_code VARCHAR2(3 BYTE) + NOT NULL ENABLE, + airport_name VARCHAR2(250 BYTE) + NOT NULL ENABLE, + location_name VARCHAR2(250 BYTE) + NOT NULL ENABLE, + easrefn CHAR(1 BYTE) + NOT NULL ENABLE, + active CHAR(1 BYTE) + NOT NULL ENABLE, + country_code VARCHAR2(2 BYTE) + NOT NULL ENABLE, + country_code_iso3 VARCHAR2(3 BYTE) + NOT NULL ENABLE, + latitude NUMBER, + longitude NUMBER, + CONSTRAINT pk_airports PRIMARY KEY ( iata_code ) + USING INDEX enable +); + +CREATE INDEX ix_airports ON + airports ( + active + ); + +CREATE INDEX ix_airports_2 ON + airports ( + airport_name + ); + +INSERT INTO airports ( + iata_code, + airport_name, + location_name, + easrefn, + active, + country_code, + country_code_iso3, + latitude, + longitude +) + SELECT + a.iata_code, + nvl(ai.name, a.airport_name), + a.airport_name, + a.easrefn, + a.active, + a.country_code, + a.country_code_iso3, + ai.latitude_deg, + ai.longitude_deg + FROM + iata_airports a + LEFT JOIN ( + SELECT + * + FROM + airports_import + WHERE + type NOT IN ( 'closed' ) + ) ai ON ( a.iata_code = ai.iata_code ); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.11.0/30_RIGD-2090_AIRPORTS_data.sql b/e-rights-common/src/main/database/release/archive/2.11.0/30_RIGD-2090_AIRPORTS_data.sql new file mode 100644 index 0000000..c225c3f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.11.0/30_RIGD-2090_AIRPORTS_data.sql @@ -0,0 +1,2053 @@ +REM INSERTING into ERIGHTS.AIRPORTS +SET DEFINE OFF; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LCG','A Coruña Airport','LA CORUNA - ESP','Y','Y','ES','ESP',43.302101,-8.37726); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ALY','ALEXANDRIA - EGY','ALEXANDRIA - EGY','Y','Y','EG','EGY',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TSE','ASTANA - KAZ','ASTANA - KAZ','Y','Y','KZ','KAZ',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AAL','Aalborg Airport','AALBORG - DNK','Y','Y','DK','DNK',57.092759,9.849243); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AAR','Aarhus Airport','AARHUS - DNK','Y','Y','DK','DNK',56.303331,10.618286); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DIR','Aba Tenna Dejazmach Yilma International Airport','DIRE DAWA - ETH','Y','Y','ET','ETH',9.624699592590332,41.85419845581055); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ABD','Abadan Airport','ABADAN - IRN','Y','Y','IR','IRN',30.367887,48.230075); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZNZ','Abeid Amani Karume International Airport','ZANZIBAR - TZA','Y','Y','TZ','TZA',-6.22202,39.224899); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SNU','Abel Santamaria Airport','SANTA CLARA - CUB','Y','Y','CU','CUB',22.49220085144043,-79.943603515625); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ABZ','Aberdeen Dyce Airport','ABERDEEN - GBR','Y','Y','UK','GBR',57.2019,-2.19778); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ABR','Aberdeen Regional Airport','ABERDEEN, SD - USA','Y','Y','US','USA',45.449100494384766,-98.42179870605469); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AHB','Abha International Airport','ABLITIA - SAU','Y','Y','SA','SAU',18.2404,42.656601); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ABI','Abilene Regional Airport','ABILENE, TX - USA','Y','Y','US','USA',32.4113006592,-99.68190002440001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CJS','Abraham González International Airport','CIUDAD JUAREZ - MEX','Y','Y','MX','MEX',31.63610076904297,-106.42900085449219); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SPI','Abraham Lincoln Capital Airport','SPRINGFIELD, IL - USA','Y','Y','US','USA',39.844101,-89.677902); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PSR','Abruzzo Airport','PESCARA - ITA','Y','Y','IT','ITA',42.431702,14.1811); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AUH','Abu Dhabi International Airport','ABU DHABI - ARE','Y','Y','AE','ARE',24.443764,54.651718); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ABS','Abu Simbel Airport','ABU SIMBEL - EGY','Y','Y','EG','EGY',22.375999450699997,31.611700058); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SRG','Achmad Yani Airport','SEMARANG - IDN','Y','Y','ID','IDN',-6.970732,110.373244); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ADA','Adana ?akirpa?a Airport','ADANA - TUR','Y','Y','TR','TUR',36.982201,35.280399); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ADD','Addis Ababa Bole International Airport','ADDIS ABABA - ETH','Y','Y','ET','ETH',8.97789,38.799301); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ADL','Adelaide International Airport','ADELAIDE SA - AUS','Y','Y','AU','AUS',-34.947512,138.533393); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MGQ','Aden Adde International Airport','MOGADISHU - SOM','Y','Y','SO','SOM',2.014440059661865,45.3046989440918); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ADE','Aden International Airport','ADEN - YEM','Y','Y','YE','YEM',12.8295,45.028801); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SLK','Adirondack Regional Airport','SARANAC LAKE, NY - USA','Y','Y','US','USA',44.38691,-74.204629); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SOC','Adisumarmo International Airport','SOLO CITY - IDN','Y','Y','ID','IDN',-7.513564,110.750494); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JOG','Adisutjipto International Airport','YOGYAKARTA - IDN','Y','Y','ID','IDN',-7.78818,110.431999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MAD','Adolfo Suárez Madrid–Barajas Airport','MADRID - ESP','Y','Y','ES','ESP',40.471926,-3.56264); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CBL','Aeropuerto "General Tomas de Heres". Ciudad Bolivar','CIUDAD BOLIVA - VEN','Y','Y','VE','VEN',8.12216091156,-63.5369567871); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CWB','Afonso Pena Airport','CURITIBA PR - BRA','Y','Y','BR','BRA',-25.5285,-49.1758); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AGF','Agen-La Garenne Airport','AGEN - FRA','Y','Y','FR','FRA',44.17470169067383,0.59055602550507); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AGR','Agra Airport / Agra Air Force Station','AGRA - IND','Y','Y','IN','IND',27.157683,77.960942); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TMR','Aguenar – Hadj Bey Akhamok Airport','TAMANRASSET - DZA','Y','Y','DZ','DZA',22.8115005493,5.45107984543); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KDH','Ahmad Shah Baba International Airport / Kandahar Airfield','KANDAHAR - AFG','Y','Y','AF','AFG',31.5058,65.847801); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AJA','Ajaccio-Napoléon Bonaparte Airport','AJACCIO - FRA','Y','Y','FR','FRA',41.92359924316406,8.8029203414917); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ENU','Akanu Ibiam International Airport','ENUGU - NGA','Y','Y','NG','NGA',6.474269866943359,7.56196022033691); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AXT','Akita Airport','AKITA - JPN','Y','Y','JP','JPN',39.6156005859375,140.218994140625); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CAK','Akron Canton Regional Airport','AKRON, OH - USA','Y','Y','US','USA',40.916099548339844,-81.44219970703125); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SCO','Aktau Airport','AKTAU - KAZ','Y','Y','KZ','KAZ',43.860093,51.09086); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PVK','Aktion National Airport','PREVEZA/LEFKAS - GRC','Y','Y','GR','GRC',38.925498962402344,20.76530075073242); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AKX','Aktobe Airport','AKTYUBINSK - KAZ','Y','Y','KZ','KAZ',50.2458,57.206699); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AKR','Akure Airport','AKURE - NGA','Y','Y','NG','NGA',7.246739864349365,5.30101013183594); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AAN','Al Ain International Airport','AL AIN - ARE','Y','Y','AE','ARE',24.261699676513672,55.60919952392578); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AAY','Al Ghaydah International Airport','AL GHAYCLAH - YEM','Y','Y','YE','YEM',16.193341,52.174186); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AGA','Al Massira Airport','AGADIR - MAR','Y','Y','MA','MAR',30.322478,-9.412003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AQI','Al Qaisumah/Hafr Al Batin Airport','QAISUMAH - SAU','Y','Y','SA','SAU',28.335199,46.125099); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EJH','Al Wajh Domestic Airport','WEDJH - SAU','Y','Y','SA','SAU',26.198601,36.476398); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HOF','Al-Ahsa International Airport','HOFUF - SAU','Y','Y','SA','SAU',25.285299,49.485199); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AJF','Al-Jawf Domestic Airport','JOUF - SAU','Y','Y','SA','SAU',29.78510093688965,40.09999847412109); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ALB','Albany International Airport','ALBANY, NY - USA','Y','Y','US','USA',42.74829864501953,-73.80169677734375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OAJ','Albert J Ellis Airport','JACKSONVILLE, NC - USA','Y','Y','US','USA',34.829201,-77.612099); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MRD','Alberto Carnevalli Airport','MERIDA - VEN','Y','Y','VE','VEN',8.582078,-71.161041); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LBI','Albi-Le Séquestre Airport','ALBI - FRA','Y','Y','FR','FRA',43.91389846801758,2.11305999755859); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ABQ','Albuquerque International Sunport','ALBUQUERQUE, NM - USA','Y','Y','US','USA',35.040199,-106.609001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ABX','Albury Airport','ALBURY - AUS','Y','Y','AU','AUS',-36.066758,146.959148); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CUZ','Alejandro Velasco Astete International Airport','CUZI:O - PER','Y','Y','PE','PER',-13.535699844400002,-71.9387969971); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ALP','Aleppo International Airport','ALEPPO - SYR','Y','Y','SY','SYR',36.180698,37.2244); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ALR','Alexandra Aerodrome','ALEXANDRA - NZL','Y','Y','NZ','NZL',-45.210495,169.371113); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AEX','Alexandria International Airport','ALEXANDRIA, LA - USA','Y','Y','US','USA',31.3274,-92.549797); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AXD','Alexandroupoli Democritus Airport','ALEXANDROUPOLIS - GRC','Y','Y','GR','GRC',40.8559,25.956301); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CLO','Alfonso Bonilla Aragon International Airport','CALI - COL','Y','Y','CO','COL',3.54322,-76.3816); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VUP','Alfonso López Pumarejo Airport','VALLEDUPAR - COL','Y','Y','CO','COL',10.435,-73.2495); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LET','Alfredo Vásquez Cobo International Airport','LETICIA - COL','Y','Y','CO','COL',-4.19355,-69.9432); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AHO','Alghero-Fertilia Airport','ALGHERO - ITA','Y','Y','IT','ITA',40.632099,8.29077); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ALC','Alicante-Elche Miguel Hernández Airport','ALICANTE - ESP','Y','Y','ES','ESP',38.2822,-0.558156); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ASP','Alice Springs Airport','ALICE SPRINGS - AUS','Y','Y','AU','AUS',-23.806699752807617,133.90199279785156); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IXD','Allahabad Airport','ALLAHABAD - IND','Y','Y','IN','IND',25.4401,81.733902); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LHE','Allama Iqbal International Airport','LAHORE - PAK','Y','Y','PK','PAK',31.521601,74.403603); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AIA','Alliance Municipal Airport','ALLIANCE, NE - USA','Y','Y','US','USA',42.0531997681,-102.804000854); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ALA','Almaty International Airport','ALMATY - KAZ','Y','Y','KZ','KAZ',43.3521,77.040497); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LEI','Almería Airport','ALMERIA - ESP','Y','Y','ES','ESP',36.843899,-2.3701); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('REL','Almirante Marco Andres Zar Airport','TRELEW - ARG','Y','Y','AR','ARG',-43.2105,-65.2703); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RCH','Almirante Padilla Airport','RIOHACHA - COL','Y','Y','CO','COL',11.5262,-72.926); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('APN','Alpena County Regional Airport','ALPENA, MI - USA','Y','Y','US','USA',45.0780983,-83.56030273); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ALF','Alta Airport','ALTA - NOR','Y','Y','NO','NOR',69.976097106934,23.371700286865); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AOO','Altoona Blair County Airport','ALTOONA, PA - USA','Y','Y','US','USA',40.296398,-78.32); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TPQ','Amado Nervo National Airport','TEPIC - MEX','Y','Y','MX','MEX',21.4195,-104.843002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ASJ','Amami Airport','AMAMI O SHIMA - JPN','Y','Y','JP','JPN',28.430599212646484,129.71299743652344); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AMS','Amsterdam Airport Schiphol','AMSTERDAM - NLD','Y','Y','NL','NLD',52.308601,4.76389); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SID','Amílcar Cabral International Airport','SAL - CPV','Y','Y','CV','CPV',16.7414,-22.9494); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AAQ','Anapa Vityazevo Airport','ANAAPA - RUS','Y','Y','RU','RUS',45.002102,37.347301); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ANF','Andrés Sabella Gálvez International Airport','ANTOTAGASTA - CHL','Y','Y','CL','CHL',-23.444501,-70.445099); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OUD','Angads Airport','OUJDA - MAR','Y','Y','MA','MAR',34.787200927734375,-1.92399001121521); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TGZ','Angel Albino Corzo International Airport','TUXTIA GUTIERREZ - MEX','Y','Y','MX','MEX',16.5636005402,-93.02249908450001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ANE','Angers-Loire Airport','ANGERS - FRA','Y','Y','FR','FRA',47.560299,-0.312222); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ANG','Angoulême-Brie-Champniers Airport','ANGOULEME - FRA','Y','Y','FR','FRA',45.729198,0.221456); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ANI','Aniak Airport','ANIAK - USA','Y','Y','US','USA',61.581600189208984,-159.54299926757812); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NCY','Annecy-Haute-Savoie-Mont Blanc Airport','ANNECY - FRA','Y','Y','FR','FRA',45.9308333,6.1063889); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AQG','Anqing Tianzhushan Airport / Anqing North Air Base','ANQING - CHN','Y','Y','CN','CHN',30.582199,117.050003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AYT','Antalya International Airport','ANTALYA - TUR','Y','Y','TR','TUR',36.898701,30.800501); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PNR','Antonio Agostinho-Neto International Airport','POINTE NOIRE - COG','Y','Y','CG','COG',-4.81603,11.8866); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GUM','Antonio B. Won Pat International Airport','GUAM - GUM','Y','Y','GU','GUM',13.4834,144.796005); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SCU','Antonio Maceo International Airport','SANTIAGO - CUB','Y','Y','CU','CUB',19.96980094909668,-75.83540344238281); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PSO','Antonio Narino Airport','PASTO - COL','Y','Y','CO','COL',1.39625,-77.2915); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ANR','Antwerp International Airport (Deurne)','ANVERS - BEL','Y','Y','BE','BEL',51.1894,4.46028); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AOJ','Aomori Airport','AOMORI - JPN','Y','Y','JP','JPN',40.73469924926758,140.6909942626953); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ATW','Appleton International Airport','APPLETON / OUTAGAMIE, WI - USA','Y','Y','US','USA',44.258098602299995,-88.5190963745); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AQJ','Aqaba King Hussein International Airport','AQABA - JOR','Y','Y','JO','JOR',29.611600875854492,35.01810073852539); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AJU','Aracaju - Santa Maria International Airport','ARACAP - BRA','Y','Y','BR','BRA',-10.984,-37.070301); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ARW','Arad International Airport','ARAD - ROU','Y','Y','RO','ROU',46.17660140991211,21.26199913024902); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RAE','Arar Domestic Airport','ARAR - SAU','Y','Y','SA','SAU',30.906600952148438,41.13819885253906); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ARU','Araçatuba Airport','ARACATUBA - BRA','Y','Y','BR','BRA',-21.141479,-50.424575); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AMH','Arba Minch Airport','ARBA MINTCH - ETH','Y','Y','ET','ETH',6.039390087127686,37.59049987792969); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ADU','Ardabil Airport','ARCLABIL - IRN','Y','Y','IR','IRN',38.3256988525,48.4244003296); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SVD','Argyle International Airport','ST VINCENT - VCT','Y','Y','VC','VCT',13.156695,-61.149945); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LBE','Arnold Palmer Regional Airport','LATROBE, PA - USA','Y','Y','US','USA',40.275902,-79.4048); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VLN','Arturo Michelena International Airport','VALENCIA - VEN','Y','Y','VE','VEN',10.14973258972168,-67.92839813232422); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AJR','Arvidsjaur Airport','ARVIDSIAUR - SWE','Y','Y','SE','SWE',65.59030151367188,19.28190040588379); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AKJ','Asahikawa Airport','ASAHIKAWA - JPN','Y','Y','JP','JPN',43.670799,142.447006); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AVL','Asheville Regional Airport','ASHEVILLE, NC - USA','Y','Y','US','USA',35.436199,-82.541801); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ASB','Ashgabat International Airport','ASHGABAD - TKM','Y','Y','TM','TKM',37.986801,58.361); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ASM','Asmara International Airport','ASMARA - ERI','Y','Y','ER','ERI',15.291899681091309,38.91070175170898); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ASE','Aspen-Pitkin Co/Sardy Field','ASPEN, CO - USA','Y','Y','US','USA',39.22320175,-106.8690033); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ASA','Assab International Airport','ASSAB - ERI','Y','Y','ER','ERI',13.071800231933594,42.64500045776367); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ASF','Astrakhan Airport','ASTRAKHAN - RUS','Y','Y','RU','RUS',46.2832984924,48.0063018799); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OVD','Asturias Airport','ASTURIAS - ESP','Y','Y','ES','ESP',43.563599,-6.03462); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JTY','Astypalaia Airport','ASTYPALAIA ISLAND - GRC','Y','Y','GR','GRC',36.5798988342,26.3757991791); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ASW','Aswan International Airport','ASWAN - EGY','Y','Y','EG','EGY',23.9643993378,32.8199996948); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ATZ','Asyut International Airport','ASSIUT - EGY','Y','Y','EG','EGY',27.050818,31.016309); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AXK','Ataq Airport','ATAQ - YEM','Y','Y','YE','YEM',14.5513,46.826199); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ATR','Atar International Airport','ATAR - MRT','Y','Y','MR','MRT',20.506799697875977,-13.04319953918457); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AHN','Athens Ben Epps Airport','ATHENS, GA - USA','Y','Y','US','USA',33.94860076904297,-83.32630157470703); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ATH','Athens Eleftherios Venizelos International Airport','ATHENS - GRC','Y','Y','GR','GRC',37.936401,23.9445); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BVB','Atlas Brasil Cantanhede Airport','BOA VISTA - BRA','Y','Y','BR','BRA',2.845855,-60.690944); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GUW','Atyrau International Airport','ATYRAU - KAZ','Y','Y','KZ','KAZ',47.122559,51.819321); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AKL','Auckland International Airport','AUCKLAND - NZL','Y','Y','NZ','NZL',-37.01199,174.786331); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AGS','Augusta Regional At Bush Field','AUGUSTA, BUSH FIELD, GA - USA','Y','Y','US','USA',33.3699,-81.9645); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AUG','Augusta State Airport','AUGUSTA, ME - USA','Y','Y','US','USA',44.320598602299995,-69.7973022461); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MGA','Augusto C. Sandino (Managua) International Airport','MANAGUA - NIC','Y','Y','NI','NIC',12.141500473022461,-86.16819763183594); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IXU','Aurangabad Airport','AURANGABAD - IND','Y','Y','IN','IND',19.862699508666992,75.39810180664062); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AUR','Aurillac Airport','AURILLAC - FRA','Y','Y','FR','FRA',44.89139938354492,2.42194008827209); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AUS','Austin Bergstrom International Airport','AUSTIN, TX - USA','Y','Y','US','USA',30.197535,-97.662015); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GRB','Austin Straubel International Airport','GREEN BAY, WI - USA','Y','Y','US','USA',44.483459,-88.130805); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CPC','Aviador C. Campos Airport','SAN MARTIN DEL-OS ANDES - ARG','Y','Y','AR','ARG',-40.075401,-71.137299); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AVN','Avignon-Caumont Airport','AVIGNON - FRA','Y','Y','FR','FRA',43.90729904174805,4.90183019638062); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CBO','Awang Airport','COTABATO - PHL','Y','Y','PH','PHL',7.165239810943604,124.20999908447266); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KER','Ayatollah Hashemi Rafsanjani International Airport','KERMAN - IRN','Y','Y','IR','IRN',30.274401,56.951099); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AYQ','Ayers Rock Connellan Airport','AYERS ROCK - AUS','Y','Y','AU','AUS',-25.1861,130.975998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BAK','BAKU - AZE','BAKU - AZE','Y','N','AZ','AZE',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BJS','BEIJING - CHN','BEIJING - CHN','Y','N','CN','CHN',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BHZ','BELO HORIZONTE - BRA','BELO HORIZONTE - BRA','Y','N','BR','BRA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BUH','BUCHAREST - ROU','BUCHAREST - ROU','Y','N','RO','ROU',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BUE','BUEN AIRES BA - ARG','BUEN AIRES BA - ARG','Y','N','AR','ARG',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ROR','Babelthuap Airport','KOROR - PLW','Y','Y','PW','PLW',7.36731,134.544236); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CUL','Bachigualato Federal International Airport','CUHACAN - MEX','Y','Y','MX','MEX',24.76504,-107.475228); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BCD','Bacolod-Silay Airport','BACOLOD - PHL','Y','Y','PH','PHL',10.7764,123.014999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BCM','Bac?u Airport','BACAU - ROU','Y','Y','RO','ROU',46.52190017700195,26.91029930114746); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BJZ','Badajoz Airport','BACLAJOZ - ESP','Y','Y','ES','ESP',38.8913,-6.82133); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BFX','Bafoussam Airport','BAFOUSSARN - CMR','Y','Y','CM','CMR',5.536920070650001,10.3545999527); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BGW','Baghdad International Airport / New Al Muthana Air Base','BAGHDAD - IRQ','Y','Y','IQ','IRQ',33.262501,44.2346); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BAH','Bahrain International Airport','BAHRAIN - BHR','Y','Y','BH','BHR',26.267295,50.63764); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HUX','Bahías de Huatulco International Airport','HUATULCO - MEX','Y','Y','MX','MEX',15.775611,-96.26079); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YBC','Baie-Comeau Airport','BAIE COMEAU - CAN','Y','Y','CA','CAN',49.1325,-68.204399); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UUD','Baikal International Airport','ULAN-UDE - RUS','Y','Y','RU','RUS',51.808614,107.439652); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HET','Baita International Airport','HOHHOT - CHN','Y','Y','CN','CHN',40.851398,111.823997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BNK','Ballina Byron Gateway Airport','BALLINA - AUS','Y','Y','AU','AUS',-28.833236,153.561471); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BBA','Balmaceda Airport','BALMACEDA - CHL','Y','Y','CL','CHL',-45.916099548339844,-71.68949890136719); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BWI','Baltimore/Washington International Thurgood Marshall Airport','BALTIMORE MD - USA','Y','Y','US','USA',39.1754,-76.668297); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BPC','Bamenda Airport','BAMENDA - CMR','Y','Y','CM','CMR',6.039239883422852,10.12259960174561); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BXU','Bancasi Airport','BUTUAN - PHL','Y','Y','PH','PHL',8.9515,125.4788); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BND','Bandar Abbas International Airport','BANDAR ABBAS - IRN','Y','Y','IR','IRN',27.218299865722656,56.37779998779297); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BDH','Bandar Lengeh International Airport','BANDAR LENGEH - IRN','Y','Y','IR','IRN',26.532283,54.82484); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CMB','Bandaranaike International Colombo Airport','COLOMBO - LKA','Y','Y','LK','LKA',7.180759906768799,79.88410186767578); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FKI','Bangoka International Airport','KISANGANI - COD','Y','Y','CD','COD',0.481638997793,25.3379993439); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BGR','Bangor International Airport','BANGOR, ME - USA','Y','Y','US','USA',44.8074,-68.828102); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BGF','Bangui M''Poko International Airport','BANGUI - CAF','Y','Y','CF','CAF',4.39847993850708,18.51880073547363); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BNX','Banja Luka International Airport','BANJA LUKA - BIH','Y','Y','BA','BIH',44.94139862060547,17.29750061035156); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BJL','Banjul International Airport','BANJUL - GMB','Y','Y','GM','GMB',13.338,-16.652201); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BAV','Baotou Airport','BAOTOU - CHN','Y','Y','CN','CHN',40.560001373291016,109.99700164794922); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MGN','Baracoa Airport','MAGANGUE - COL','Y','Y','CO','COL',9.28474,-74.8461); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BDU','Bardufoss Airport','BARDUFOSS - NOR','Y','Y','NO','NOR',69.055801391602,18.540399551392); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BRI','Bari Karol Wojty?a Airport','BARI - ITA','Y','Y','IT','ITA',41.138901,16.760599); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BNS','Barinas Airport','BARINAS - VEN','Y','Y','VE','VEN',8.615,-70.21416667); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PAH','Barkley Regional Airport','PADUCAH, KY - USA','Y','Y','US','USA',37.06079864501953,-88.7738037109375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HYA','Barnstable Municipal Boardman Polando Field','HYANNIS, MA - USA','Y','Y','US','USA',41.66930008,-70.28040314); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BRM','Barquisimeto International Airport','BARQUISIMETO - VEN','Y','Y','VE','VEN',10.042746543884277,-69.3586196899414); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BSR','Basra International Airport','BASRA - IRQ','Y','Y','IQ','IRQ',30.549101,47.662102); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LTK','Bassel Al-Assad International Airport','LATAKIA - SYR','Y','Y','SY','SYR',35.4011,35.9487); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BIA','Bastia-Poretta Airport','BASTIA - FRA','Y','Y','FR','FRA',42.55270004272461,9.48373031616211); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BSG','Bata Airport','BATA - GNQ','Y','Y','GQ','GNQ',1.90547,9.80568); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZBF','Bathurst Airport','BATHURST - CAN','Y','Y','CA','CAN',47.6297,-65.738899); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BLJ','Batna Mostefa Ben Boulaid Airport','BATNA - DZA','Y','Y','DZ','DZA',35.752102,6.30859); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BTR','Baton Rouge Metropolitan Airport','BATON ROUGE, LA - USA','Y','Y','US','USA',30.533199,-91.149597); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OUR','Batouri Airport','BATOURI - CMR','Y','Y','CM','CMR',4.474999904632568,14.36250019073486); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BUS','Batumi International Airport','BATUMI - GEO','Y','Y','GE','GEO',41.6102981567,41.5997009277); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VLI','Bauerfield International Airport','PORT VILA - VUT','Y','Y','VU','VUT',-17.699301,168.320007); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BAU','Bauru Airport','BAURU - BRA','Y','Y','BR','BRA',-22.344999,-49.053799); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BYU','Bayreuth Airport','BAYREUTH - DEU','Y','Y','DE','DEU',49.985001,11.64); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BHY','Beihai Fucheng Airport','BEIL-TAI - CHN','Y','Y','CN','CHN',21.5394,109.293999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BHN','Beihan Airport','BEINAN - YEM','Y','Y','YE','YEM',14.781714,45.719703); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BEW','Beira Airport','BEIRA - MOZ','Y','Y','MZ','MOZ',-19.79640007019043,34.90760040283203); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BEY','Beirut Rafic Hariri International Airport','BEIRUT - LBN','Y','Y','LB','LBN',33.820899963378906,35.48839950561523); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BFS','Belfast International Airport','BELFAST - GBR','Y','Y','UK','GBR',54.6575012207,-6.21582984924); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EGO','Belgorod International Airport','BELGOROD - RUS','Y','Y','RU','RUS',50.643798828125,36.5900993347168); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BEG','Belgrade Nikola Tesla Airport','BELGRADE - SRB','Y','Y','RS','SRB',44.8184013367,20.3090991974); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BLI','Bellingham International Airport','BELLINGHAM, WA - USA','Y','Y','US','USA',48.79280090332031,-122.53800201416016); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BJI','Bemidji Regional Airport','BEMIDJI, MN - USA','Y','Y','US','USA',47.50939941,-94.93370056); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TLV','Ben Gurion International Airport','TEL AVIV YAFO - ISR','Y','Y','IL','ISR',32.01139831542969,34.88669967651367); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ELS','Ben Schoeman Airport','EAST LONDON - ZAF','Y','Y','ZA','ZAF',-33.0355987549,27.8258991241); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BEB','Benbecula Airport','BENBECULA - GBR','Y','Y','UK','GBR',57.48109817504883,-7.36278009414673); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BNI','Benin Airport','BENIN CITY - NGA','Y','Y','NG','NGA',6.316979885101318,5.59950017929077); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BEN','Benina International Airport','BENGHAZI - LBY','Y','Y','LY','LBY',32.096801757799994,20.2695007324); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NVA','Benito Salas Airport','NEIVA - COL','Y','Y','CO','COL',2.95015,-75.294); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BBO','Berbera Airport','BERBERA - SOM','Y','Y','SO','SOM',10.385035,44.936723); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BGO','Bergen Airport, Flesland','BERGEN - NOR','Y','Y','NO','NOR',60.2934,5.21814); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EGC','Bergerac-Roumanière Airport','BERGERAC - FRA','Y','Y','FR','FRA',44.82529830932617,0.51861101388931); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BER','Berlin Brandenburg Airport','BERLIN - DEU','Y','Y','DE','DEU',52.362247,13.500672); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BRN','Bern Belp Airport','BERNE - CHE','Y','Y','CH','CHE',46.914100647,7.49714994431); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BTM','Bert Mooney Airport','BUTTE, MT - USA','Y','Y','US','USA',45.95479965209961,-112.49700164794922); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BTA','Bertoua Airport','BERTOUA - CMR','Y','Y','CM','CMR',4.548610210418701,13.72609996795654); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BET','Bethel Airport','BETHEL, AK - USA','Y','Y','US','USA',60.77980042,-161.8379974); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BHJ','Bhuj Airport','BHUJ - IND','Y','Y','IN','IND',23.2877998352,69.6701965332); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BIQ','Biarritz-Anglet-Bayonne Airport','BIARRITZ - FRA','Y','Y','FR','FRA',43.4683333,-1.5311111); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BIO','Bilbao Airport','BILBAO - ESP','Y','Y','ES','ESP',43.301102,-2.91061); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LIT','Bill & Hillary Clinton National Airport/Adams Field','LITTLE ROCK, AR - USA','Y','Y','US','USA',34.729582,-92.223728); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BIL','Billings Logan International Airport','BILLINGS, MT - USA','Y','Y','US','USA',45.807701,-108.542999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BLL','Billund Airport','BILLUND - DNK','Y','Y','DK','DNK',55.7402992249,9.15178012848); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('XBJ','Birjand International Airport','BIRJAND - IRN','Y','Y','IR','IRN',32.896525,59.281258); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BHX','Birmingham International Airport','BIRMINGHAM - GBR','Y','Y','UK','GBR',52.453899383499994,-1.74802994728); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BHM','Birmingham-Shuttlesworth International Airport','BIRMINGHAM, AL - USA','Y','Y','US','USA',33.562901,-86.753502); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IXR','Birsa Munda Airport','RANCHI - IND','Y','Y','IN','IND',23.314300537100003,85.3217010498); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BHH','Bisha Airport','BISHA - SAU','Y','Y','SA','SAU',19.984399795532227,42.62089920043945); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FNT','Bishop International Airport','FLINT, MI - USA','Y','Y','US','USA',42.96540069580078,-83.74359893798828); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BSK','Biskra - Mohamed Khider Airport','BISKRA - DZA','Y','Y','DZ','DZA',34.793301,5.73823); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BIS','Bismarck Municipal Airport','BISMARCK, ND - USA','Y','Y','US','USA',46.772701263427734,-100.74600219726562); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BMM','Bitam Airport','BITAM - GAB','Y','Y','GA','GAB',2.075639963150024,11.49320030212402); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BLK','Blackpool International Airport','BLACKPOOL - GBR','Y','Y','UK','GBR',53.77170181274414,-3.02860999107361); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LEX','Blue Grass Airport','LEXINGTON, KY - USA','Y','Y','US','USA',38.036499,-84.605904); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BUR','Bob Hope Airport','BURBANK, CA - USA','Y','Y','US','USA',34.197703,-118.356378); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BOY','Bobo Dioulasso Airport','BOBO DIOULASSO - BFA','Y','Y','BF','BFA',11.160099983215332,-4.33096981048584); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BXN','Bodrum-Ims?k Airport','BODRUM - TUR','Y','Y','TR','TUR',37.140099,27.669701); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BOO','Bodø Airport','BODO - NOR','Y','Y','NO','NOR',67.269203,14.3653); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TAG','Bohol-Panglao International Airport','TAGBILARAN - PHL','Y','Y','PH','PHL',9.566667,123.775); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BOI','Boise Air Terminal/Gowen Field','BOISE, ID - USA','Y','Y','US','USA',43.5644,-116.223); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BLQ','Bologna Guglielmo Marconi Airport','BOLOGNA - ITA','Y','Y','IT','ITA',44.5354,11.2887); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BZO','Bolzano Airport','BOLZANO - ITA','Y','Y','IT','ITA',46.460201,11.3264); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BNJ','Bonn-Hangelar Airport','BONN - DEU','Y','Y','DE','DEU',50.7688903809,7.16333293915); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BOD','Bordeaux-Mérignac Airport','BORDEAUX - FRA','Y','Y','FR','FRA',44.8283,-0.715556); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RNN','Bornholm Airport','RONNE - DNK','Y','Y','DK','DNK',55.06330108642578,14.75959968566895); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BYK','Bouaké Airport','BOUAKE - CIV','Y','Y','CI','CIV',7.7388,-5.07367); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BFD','Bradford Regional Airport','BRADFORD, PA - USA','Y','Y','US','USA',41.8031005859375,-78.64009857177734); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BRD','Brainerd Lakes Regional Airport','BRAINERD, MN - USA','Y','Y','US','USA',46.402861,-94.129727); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BFN','Bram Fischer International Airport','BLOEMFONTEIN - ZAF','Y','Y','ZA','ZAF',-29.092699,26.302401); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BWK','Bra? Airport','BOL - HRV','Y','Y','HR','HRV',43.285702,16.679701); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BRE','Bremen Airport','BREMEN - DEU','Y','Y','DE','DEU',53.047501,8.78667); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BES','Brest Bretagne Airport','BREST - FRA','Y','Y','FR','FRA',48.447898864746094,-4.41854000091553); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BVH','Brigadeiro Camarão Airport','VILHENA - BRA','Y','Y','BR','BRA',-12.694399833679,-60.098300933838); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PMW','Brigadeiro Lysias Rodrigues Airport','PALMAS - BRA','Y','Y','BR','BRA',-10.2915,-48.356998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BDS','Brindisi Airport','BRINDISI - ITA','Y','Y','IT','ITA',40.6576,17.947001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BNE','Brisbane International Airport','BRISBANE QL - AUS','Y','Y','AU','AUS',-27.384199142456055,153.11700439453125); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BRS','Bristol Airport','BRISTOL - GBR','Y','Y','UK','GBR',51.382702,-2.71909); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BVE','Brive-Souillac','BRIVE-LA-GAILLARDE - FRA','Y','Y','FR','FRA',45.039722,1.485556); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BRQ','Brno-Tu?any Airport','BRNO - CZE','Y','Y','CZ','CZE',49.15129852294922,16.69440078735352); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BKX','Brookings Regional Airport','BROOKINGS, SD - USA','Y','Y','US','USA',44.304798,-96.816902); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BME','Broome International Airport','BROOME - AUS','Y','Y','AU','AUS',-17.949055,122.228329); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BRO','Brownsville South Padre Island International Airport','BROWNSVILLE, TX - USA','Y','Y','US','USA',25.90679931640625,-97.4259033203125); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BWN','Brunei International Airport','BANDAR SERI B - BRN','Y','Y','BN','BRN',4.944200038909912,114.9280014038086); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BRU','Brussels Airport','BRUSSELS - BEL','Y','Y','BE','BEL',50.901401519800004,4.48443984985); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BZK','Bryansk Airport','BRIANSK - RUS','Y','Y','RU','RUS',53.214199,34.176399); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KWA','Bucholz Army Air Field','KWAJALEIN - MHL','Y','Y','MH','MHL',8.720120429992676,167.73199462890625); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BUD','Budapest Liszt Ferenc International Airport','BUDAPEST - HUN','Y','Y','HU','HUN',47.42976,19.261093); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BUF','Buffalo Niagara International Airport','BUFFALO, NY - USA','Y','Y','US','USA',42.94049835,-78.73220062); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BJM','Bujumbura Melchior Ndadaye International Airport','BUJUMBURA - BDI','Y','Y','BI','BDI',-3.32402,29.318501); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BKY','Bukavu Kavumu Airport','BUKAVU - COD','Y','Y','CD','COD',-2.308979988098145,28.80879974365234); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BDB','Bundaberg Airport','BUNDABERG - AUS','Y','Y','AU','AUS',-24.905039,152.322612); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BUX','Bunia Airport','BUNIA - COD','Y','Y','CD','COD',1.565719962120056,30.22080039978027); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BMV','Buon Ma Thuot Airport','BANMETHUOT - VNM','Y','Y','VN','VNM',12.668299675,108.120002747); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BOJ','Burgas Airport','BOURGAS - BGR','Y','Y','BG','BGR',42.56959915161133,27.51519966125488); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BTV','Burlington International Airport','BURLINGTON, VT - USA','Y','Y','US','USA',44.471901,-73.153297); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BUZ','Bushehr Airport','BUSHEHR - IRN','Y','Y','IR','IRN',28.9447994232,50.8345985413); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ULN','Buyant-Ukhaa International Airport','ULAANBAATAR - MNG','Y','Y','MN','MNG',47.843102,106.766998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BZG','Bydgoszcz Ignacy Jan Paderewski Airport','BYDGOSZCZ - POL','Y','Y','PL','POL',53.096802,17.977699); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BZR','Béziers-Vias Airport','BEZIERS - FRA','Y','Y','FR','FRA',43.32350158691406,3.35389995574951); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CPQ','CAMPINAS - BRA','CAMPINAS - BRA','Y','Y','BR','BRA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CAS','CASABLANCA - MAR','CASABLANCA - MAR','Y','Y','MA','MAR',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YBG','CFB Bagotville','BAGOTVILLE - CAN','Y','Y','CA','CAN',48.33060073852539,-70.99639892578125); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CHI','CHICAGO IL - USA','CHICAGO IL - USA','Y','Y','US','USA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CAB','Cabinda Airport','CABINDA - AGO','Y','Y','AO','AGO',-5.59699010848999,12.18840026855469); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PYH','Cacique Aramare Airport','PUERTO AYACUCHO - VEN','Y','Y','VE','VEN',5.6199898719788,-67.606101989746); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('COO','Cadjehoun Airport','COTONOU - BEN','Y','Y','BJ','BEN',6.357230186462402,2.38435006141663); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CFR','Caen-Carpiquet Airport','CAEN - FRA','Y','Y','FR','FRA',49.173302,-0.45); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CAG','Cagliari Elmas Airport','CAGLIARI - ITA','Y','Y','IT','ITA',39.251499,9.05428); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CNS','Cairns International Airport','CAIRNS QL - AUS','Y','Y','AU','AUS',-16.885799408,145.755004883); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CAI','Cairo International Airport','CAIRO - EGY','Y','Y','EG','EGY',30.12190055847168,31.40559959411621); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YYC','Calgary International Airport','CALGARY AB - CAN','Y','Y','CA','CAN',51.113899231,-114.019996643); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CCJ','Calicut International Airport','KOZHIKODE - IND','Y','Y','IN','IND',11.1368,75.955299); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CLY','Calvi-Sainte-Catherine Airport','CALVI - FRA','Y','Y','FR','FRA',42.5244444,8.7930556); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CBG','Cambridge Airport','CAMBRIDGE - GBR','Y','Y','UK','GBR',52.205002,0.175); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CUC','Camilo Daza International Airport','CUCUTA - COL','Y','Y','CO','COL',7.92757,-72.5115); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LOH','Camilo Ponce Enriquez Airport','LOJA - ECU','Y','Y','EC','ECU',-3.99589,-79.371902); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YBL','Campbell River Airport','CAMPBELL RIVER - CAN','Y','Y','CA','CAN',49.950802,-125.271004); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CGR','Campo Grande Airport','CAMPO GRANDE - BRA','Y','Y','BR','BRA',-20.469998,-54.673988); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VCA','Can Tho International Airport','CAN THO - VNM','Y','Y','VN','VNM',10.0851,105.711998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CAJ','Canaima Airport','CANAIMA - VEN','Y','Y','VE','VEN',6.231988906860352,-62.85443115234375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CBR','Canberra International Airport','CANBERRA - AUS','Y','Y','AU','AUS',-35.3069,149.195007); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CUN','Cancún International Airport','CANCUN - MEX','Y','Y','MX','MEX',21.036500930800003,-86.8770980835); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CIW','Canouan Airport','CANOUAN ISLAND - VCT','Y','Y','VC','VCT',12.699,-61.3424); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CSK','Cap Skirring Airport','CAP SKIRRING - SEN','Y','Y','SN','SEN',12.39533,-16.748); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CGI','Cape Girardeau Regional Airport','CAPE GIRARDEAU, MO - USA','Y','Y','US','USA',37.2253,-89.570801); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CPT','Cape Town International Airport','CAPE TOWN - ZAF','Y','Y','ZA','ZAF',-33.9648017883,18.6016998291); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HAR','Capital City Airport','HARRISBURG, PA - USA','Y','Y','US','USA',40.2170982361,-76.85150146480001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LAN','Capital City Airport','LANSING, MI - USA','Y','Y','US','USA',42.77870178222656,-84.58740234375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PDP','Capitan Corbeta CA Curbelo International Airport','PUNTA DEL ESTE - URY','Y','Y','UY','URY',-34.855098724365234,-55.09429931640625); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CSB','Caransebe? Airport','CARANSEBES - ROU','Y','Y','RO','ROU',45.41999816894531,22.25329971313477); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CWL','Cardiff International Airport','CARDIFF - GBR','Y','Y','UK','GBR',51.396702,-3.34333); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VSA','Carlos Rovirosa Pérez International Airport','VILLAHERMOSA - MEX','Y','Y','MX','MEX',17.996999740600586,-92.81739807128906); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MVD','Carrasco International /General C L Berisso Airport','MONTEVIDEO - URY','Y','Y','UY','URY',-34.838402,-56.0308); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CCP','Carriel Sur Airport','CONCEPCION - CHL','Y','Y','CL','CHL',-36.772701,-73.063103); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LRM','Casa De Campo International Airport','LA ROMANA - DOM','Y','Y','DO','DOM',18.450700759887695,-68.91179656982422); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CPR','Casper-Natrona County International Airport','CASPER, WY - USA','Y','Y','US','USA',42.908001,-106.463997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YCG','Castlegar/West Kootenay Regional Airport','CASTLEGAR - CAN','Y','Y','CA','CAN',49.2963981628,-117.632003784); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DCM','Castres-Mazamet Airport','CASTRES - FRA','Y','Y','FR','FRA',43.55630111694336,2.2891800403595); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HPH','Cat Bi International Airport','HAIPHONG - VNM','Y','Y','VN','VNM',20.819400787353516,106.7249984741211); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CTA','Catania-Fontanarossa Airport','CATANIA - ITA','Y','Y','IT','ITA',37.466801,15.0664); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IGR','Cataratas Del Iguazú International Airport','IGUAZU MI - ARG','Y','Y','AR','ARG',-25.737301,-54.4734); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IGU','Cataratas International Airport','IGUASSU FA PR - BRA','Y','Y','BR','BRA',-25.594167,-54.489444); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CAY','Cayenne – Félix Eboué Airport','CAYENNE - GUF','Y','Y','GF','GUF',4.819964,-52.361326); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZOS','Cañal Bajo Carlos - Hott Siebert Airport','OSORNO - CHL','Y','Y','CL','CHL',-40.611198,-73.060997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CDC','Cedar City Regional Airport','CEDAR CITY, UT - USA','Y','Y','US','USA',37.70100021362305,-113.0989990234375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BMI','Central Illinois Regional Airport at Bloomington-Normal','BLOOMINGTON / NORMAL, IL - USA','Y','Y','US','USA',40.4771,-88.915901); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GRI','Central Nebraska Regional Airport','GRAND ISLAND, NE - USA','Y','Y','US','USA',40.967498779296875,-98.30960083007812); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ARI','Chacalluta Airport','ANICA - CHL','Y','Y','CL','CHL',-18.348499,-70.338699); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CDR','Chadron Municipal Airport','CHADRON, NE - USA','Y','Y','US','USA',42.837600708,-103.095001221); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CMF','Chambéry-Savoie Airport','CHAMBERY - FRA','Y','Y','FR','FRA',45.638099670410156,5.88022994995117); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YKN','Chan Gurney Municipal Airport','YANKTON - USA','Y','Y','US','USA',42.916698455811,-97.385902404785); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IXC','Chandigarh International Airport','CHANDIGARH - IND','Y','Y','IN','IND',30.6735,76.788498); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CGQ','Changchun Longjia International Airport','CHANGCHUN - CHN','Y','Y','CN','CHN',43.996201,125.684998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CGD','Changde Taohuayuan Airport','CHANGDE - CHN','Y','Y','CN','CHN',28.9189,111.639999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CSX','Changsha Huanghua International Airport','CHANGSHA - CHN','Y','Y','CN','CHN',28.189199447599997,113.220001221); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CIH','Changzhi Airport','CHANGZHI - CHN','Y','Y','CN','CHN',36.247501,113.125999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CZX','Changzhou Benniu Airport','CHANGZHOU - CHN','Y','Y','CN','CHN',31.919701,119.778999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CHQ','Chania International Airport','CHANIA / SOUDA - GRC','Y','Y','GR','GRC',35.531700134277344,24.14970016479492); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MKC','Charles B. Wheeler Downtown Airport','KANSAS CITY, MO - USA','Y','Y','US','USA',39.123199462890625,-94.5927963256836); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CYB','Charles Kirkconnell International Airport','CAYMAN BRAC - CYM','Y','Y','KY','CYM',19.687,-79.882797); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('STS','Charles M. Schulz Sonoma County Airport','SANTA ROSA, CA - USA','Y','Y','US','USA',38.50899887,-122.8130035); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CHS','Charleston International Airport','CHARLESTON, SC - USA','Y','Y','US','USA',32.898602,-80.040497); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CLT','Charlotte Douglas International Airport','CHARLOTTE NC - USA','Y','Y','US','USA',35.2140007019043,-80.94309997558594); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CHO','Charlottesville Albemarle Airport','CHARLOTTESVILLE, VA - USA','Y','Y','US','USA',38.13859939575195,-78.4529037475586); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YYG','Charlottetown Airport','CHARLOTTWN PE - CAN','Y','Y','CA','CAN',46.290000915527344,-63.12110137939453); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CHA','Chattanooga Metropolitan Airport (Lovell Field)','CHATTANOOGA, TN - USA','Y','Y','US','USA',35.035301,-85.203796); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LKO','Chaudhary Charan Singh International Airport','LUCKNOW - IND','Y','Y','IN','IND',26.7605991364,80.8892974854); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JHW','Chautauqua County-Jamestown Airport','JAMESTOWN - USA','Y','Y','US','USA',42.15425,-79.254008); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GEO','Cheddi Jagan International Airport','GEORGETOWN - GUY','Y','Y','GY','GUY',6.49855,-58.254101); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CEK','Chelyabinsk Balandino Airport','CHELYABINSK - RUS','Y','Y','RU','RUS',55.305801,61.5033); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CTU','Chengdu Shuangliu International Airport','CHENGDU - CHN','Y','Y','CN','CHN',30.558257,103.945966); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MAA','Chennai International Airport','CHENNAI - IND','Y','Y','IN','IND',12.990005,80.169296); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CJJ','Cheongju International Airport/Cheongju Air Base (K-59/G-513)','CHEONGJU - KOR','Y','Y','KR','KOR',36.717008,127.498741); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AHU','Cherif Al Idrissi Airport','AL HOCEIMA - MAR','Y','Y','MA','MAR',35.177101135253906,-3.83951997756958); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TVC','Cherry Capital Airport','TRAVERSE CITY, MI - USA','Y','Y','US','USA',44.74140167236328,-85.58219909667969); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CTM','Chetumal International Airport','CHETURNAL - MEX','Y','Y','MX','MEX',18.50469970703125,-88.32679748535156); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CYS','Cheyenne Regional Jerry Olson Field','CHEYENNE, WY - USA','Y','Y','US','USA',41.15570068,-104.8119965); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BOM','Chhatrapati Shivaji International Airport','MUMBAI - IND','Y','Y','IN','IND',19.0886993408,72.8678970337); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CNX','Chiang Mai International Airport','CHIANG MAI - THA','Y','Y','TH','THA',18.766799926799997,98.962600708); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RFD','Chicago Rockford International Airport','ROCKFORD, IL - USA','Y','Y','US','USA',42.1954,-89.097198); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CIC','Chico Municipal Airport','CHICO, CA - USA','Y','Y','US','USA',39.79539871,-121.8580017); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PLZ','Chief Dawid Stuurman International Airport','PT ELIZABETH - ZAF','Y','Y','ZA','ZAF',-33.984901,25.6173); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BLZ','Chileka International Airport','BLANTYRE - MWI','Y','Y','MW','MWI',-15.679100036621094,34.9739990234375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JKH','Chios Island National Airport','CHIOS - GRC','Y','Y','GR','GRC',38.34320068359375,26.14060020446777); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EAU','Chippewa Valley Regional Airport','EAU CLAIRE - USA','Y','Y','US','USA',44.86579895019531,-91.48429870605469); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HTA','Chita-Kadala International Airport','CHITA - RUS','Y','Y','RU','RUS',52.026299,113.306); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KIV','Chi?in?u International Airport','CHISINAU - MDA','Y','Y','MD','MDA',46.92770004272461,28.93099975585938); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CKG','Chongqing Jiangbei International Airport','CHONGQING - CHN','Y','Y','CN','CHN',29.712254,106.651895); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YZR','Chris Hadfield Airport','SARNIA - CAN','Y','Y','CA','CAN',42.9994010925293,-82.30889892578125); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CHC','Christchurch International Airport','CHRISTCHURCH - NZL','Y','Y','NZ','NZL',-43.48939895629883,172.53199768066406); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NGO','Chubu Centrair International Airport','NAGOYA - JPN','Y','Y','JP','JPN',34.8583984375,136.80499267578125); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TKK','Chuuk International Airport','TRUK - FSM','Y','Y','FM','FSM',7.461870193481445,151.84300231933594); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('STI','Cibao International Airport','SANTIAGO - DOM','Y','Y','DO','DOM',19.406099319458008,-70.60469818115234); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CVG','Cincinnati Northern Kentucky International Airport','CINCINNATI OH - USA','Y','Y','US','USA',39.048801,-84.667801); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('COS','City of Colorado Springs Municipal Airport','COLORADO SPRINGS, CO - USA','Y','Y','US','USA',38.805801,-104.700996); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LDY','City of Derry Airport','LONDONDERRY - GBR','Y','Y','UK','GBR',55.04280090332031,-7.16110992431641); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CEN','Ciudad Obregón International Airport','CIUDAD OBREGON - MEX','Y','Y','MX','MEX',27.39259910583496,-109.83300018310547); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CME','Ciudad del Carmen International Airport','CIUDAD DEL CARMEN - MEX','Y','Y','MX','MEX',18.65369987487793,-91.79900360107422); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AXA','Clayton J Lloyd International Airport','ANGUILLA - AIA','Y','Y','AI','AIA',18.204773,-63.05383); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CFE','Clermont-Ferrand Auvergne Airport','CLERMONT FERR - FRA','Y','Y','FR','FRA',45.7867012024,3.1691699028); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CLE','Cleveland Hopkins International Airport','CLEVELAND, OH - USA','Y','Y','US','USA',41.4117012024,-81.8498001099); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CLJ','Cluj-Napoca International Airport','CLUJ - ROU','Y','Y','RO','ROU',46.785198,23.686199); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EWN','Coastal Carolina Regional Airport','NEW BERN, NC - USA','Y','Y','US','USA',35.0730018616,-77.04290008539999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('COK','Cochin International Airport','KOCHI - IND','Y','Y','IN','IND',10.152,76.401901); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BBQ','Codrington Airport','BARBUDA - ATG','Y','Y','AG','ATG',17.635799,-61.828602); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CFS','Coffs Harbour Airport','COFFS HARBOUR - AUS','Y','Y','AU','AUS',-30.320601,153.115997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CJB','Coimbatore International Airport','COIMBATORE - IND','Y','Y','IN','IND',11.029999733,77.0434036255); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MTO','Coles County Memorial Airport','MATTOON, IL - USA','Y','Y','US','USA',39.477901,-88.279198); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CGN','Cologne Bonn Airport','COLOGNE - DEU','Y','Y','DE','DEU',50.8658981323,7.1427397728); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('COU','Columbia Regional Airport','COLUMBIA, MO - USA','Y','Y','US','USA',38.8181,-92.219597); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CSG','Columbus Metropolitan Airport','COLUMBUS, GA - USA','Y','Y','US','USA',32.516300201416016,-84.93890380859375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BHI','Comandante Espora Airport','BAHIA BLANCA - ARG','Y','Y','AR','ARG',-38.725,-62.1693); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SCL','Comodoro Arturo Merino Benítez International Airport','SANTIAGO - CHL','Y','Y','CL','CHL',-33.393001556396484,-70.78579711914062); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YQQ','Comox Valley Airport / CFB Comox','COMOX, B. C. - CAN','Y','Y','CA','CAN',49.7108,-124.887001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CKY','Conakry International Airport','CONAKRY - GIN','Y','Y','GN','GIN',9.57689,-13.612); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CPH','Copenhagen Kastrup Airport','COPENHAGEN - DNK','Y','Y','DK','DNK',55.617900848389,12.656000137329); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WRO','Copernicus Wroc?aw Airport','WROCLAW - POL','Y','Y','PL','POL',51.102699,16.885799); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ORK','Cork Airport','CORK - IRL','Y','Y','IE','IRL',51.841301,-8.49111); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CAC','Coronel Adalberto Mendes da Silva Airport','CASCAVEL - BRA','Y','Y','BR','BRA',-25.000323,-53.501208); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GVR','Coronel Altino Machado de Oliveira Airport','GOVERNADOR VALADARES - BRA','Y','Y','BR','BRA',-18.895882,-41.982869); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TCQ','Coronel FAP Carlos Ciriani Santa Rosa International Airport','TACNA - PER','Y','Y','PE','PER',-18.053300857500002,-70.2758026123); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CRP','Corpus Christi International Airport','CORPUS CHRISTI, TX - USA','Y','Y','US','USA',27.770399,-97.501198); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CNQ','Corrientes Airport','CORRIENTES - ARG','Y','Y','AR','ARG',-27.4455,-58.7619); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CEZ','Cortez Municipal Airport','CORTEZ, CO - USA','Y','Y','US','USA',37.3030014038,-108.627998352); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CZM','Cozumel International Airport','COZUMEL - MEX','Y','Y','MX','MEX',20.52239990234375,-86.92559814453125); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CRA','Craiova Airport','CRAICIVA - ROU','Y','Y','RO','ROU',44.3181,23.888599); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YXC','Cranbrook/Canadian Rockies International Airport','CRANBROOK - CAN','Y','Y','CA','CAN',49.610801696777,-115.78199768066); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LMT','Crater Lake-Klamath Regional Airport','KLAMATH FALLS, OR - USA','Y','Y','US','USA',42.156101,-121.733002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CRV','Crotone Airport','CROTONE - ITA','Y','Y','IT','ITA',38.9972,17.0802); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CZS','Cruzeiro do Sul Airport','CRUZEIRO DO SUL - BRA','Y','Y','BR','BRA',-7.59991,-72.769501); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('STT','Cyril E. King Airport','ST THOMAS ISLAND - VIR','Y','Y','VI','VIR',18.337091,-64.977251); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ACE','César Manrique-Lanzarote Airport','LANZAROTE - ESP','Y','Y','ES','ESP',28.945499,-13.6052); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DTT','DETROIT MI - USA','DETROIT MI - USA','Y','N','US','USA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DOK','DONETSK - UKR','DONETSK - UKR','Y','Y','UA','UKR',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DAD','Da Nang International Airport','DA NANG - VNM','Y','Y','VN','VNM',16.0439,108.198997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GOI','Dabolim Airport','GOA - IND','Y','Y','IN','IND',15.3808002472,73.8313980103); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TAE','Daegu Airport','DAEGU - KOR','Y','Y','KR','KOR',35.896872,128.65531); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VIL','Dakhla Airport','DAKHLA - MAR','Y','Y','MA','MAR',23.7183,-15.932); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DAK','Dakhla Airport','DAKHLA OASIS - EGY','Y','Y','EG','EGY',25.4116,29.003099); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BLE','Dala Airport','BORIANGE - SWE','Y','Y','SE','SWE',60.422001,15.5152); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DLM','Dalaman International Airport','DALAMAN - TUR','Y','Y','TR','TUR',36.7131004333,28.7924995422); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DLU','Dali Huangcaoba Airport','DALI CITY - CHN','Y','Y','CN','CHN',25.649401,100.319); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DLC','Dalian Zhoushuizi International Airport','DALIAN - CHN','Y','Y','CN','CHN',38.965698,121.539001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DFW','Dallas Fort Worth International Airport','DALLAS/FTW TX - USA','Y','Y','US','USA',32.896801,-97.038002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DAM','Damascus International Airport','DAMASCUS - SYR','Y','Y','SY','SYR',33.4114990234375,36.51559829711914); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DDG','Dandong Langtou Airport','DANDONG - CHN','Y','Y','CN','CHN',40.0247,124.286003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MSN','Dane County Regional Truax Field','MADISON, WI - USA','Y','Y','US','USA',43.1399,-89.337502); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HNL','Daniel K Inouye International Airport','HONOLULU HI - USA','Y','Y','US','USA',21.32062,-157.924228); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TAC','Daniel Z. Romualdez Airport','TACLOBAN - PHL','Y','Y','PH','PHL',11.228035,125.027761); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DRW','Darwin International Airport','DARWIN NT - AUS','Y','Y','AU','AUS',-12.414322,130.879741); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GDV','Dawson Community Airport','GLENDIVE - USA','Y','Y','US','USA',47.13869858,-104.8069992); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DAB','Daytona Beach International Airport','DAYTONA BEACH, FL - USA','Y','Y','US','USA',29.179899,-81.058098); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SCC','Deadhorse Airport','DEADHORSE, AK - USA','Y','Y','US','USA',70.19470215,-148.4649963); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DEC','Decatur Airport','DECATUR, IL - USA','Y','Y','US','USA',39.834598541259766,-88.8656997680664); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YDF','Deer Lake Airport','DEER LAKE - CAN','Y','Y','CA','CAN',49.21080017089844,-57.39139938354492); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DEZ','Deir ez-Zor Airport','DEIREZZOR - SYR','Y','Y','SY','SYR',35.2854,40.175999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BJX','Del Bajío International Airport','LECIN/GUANAJUATO - MEX','Y','Y','MX','MEX',20.9935,-101.481003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PMV','Del Caribe Santiago Mariño International Airport','PORLARNAR - VEN','Y','Y','VE','VEN',10.912603378295898,-63.96659851074219); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MIE','Delaware County Johnson Field','MUNCIE, IN - USA','Y','Y','US','USA',40.2422981262207,-85.3958969116211); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ESC','Delta County Airport','ESCANABA, MI - USA','Y','Y','US','USA',45.7226982117,-87.0936965942); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DEN','Denver International Airport','DENVER CO - USA','Y','Y','US','USA',39.861698150635,-104.672996521); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SSA','Deputado Luiz Eduardo Magalhães International Airport','SALVADOR BA - BRA','Y','Y','BR','BRA',-12.9086112976,-38.3224983215); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DSK','Dera Ismael Khan Airport','DERA ISMAIL KHAN - PAK','Y','Y','PK','PAK',31.909400939941406,70.89659881591797); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DSM','Des Moines International Airport','DES MOINES, IA - USA','Y','Y','US','USA',41.534,-93.663101); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CPO','Desierto de Atacama Airport','COPIAPO - CHL','Y','Y','CL','CHL',-27.2611999512,-70.7791976929); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VPS','Destin-Fort Walton Beach Airport','VALPARAISO, FL - USA','Y','Y','US','USA',30.4832,-86.525398); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IDR','Devi Ahilyabai Holkar Airport','INDORE - IND','Y','Y','IN','IND',22.7217998505,75.8011016846); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DVL','Devils Lake Regional Airport','DEVILS LAKE - USA','Y','Y','US','USA',48.11420059,-98.90879822); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RHO','Diagoras Airport','RHODES - GRC','Y','Y','GR','GRC',36.405399322509766,28.08620071411133); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DIK','Dickinson Theodore Roosevelt Regional Airport','DICKINSON, ND - USA','Y','Y','US','USA',46.7974014282,-102.802001953); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IQQ','Diego Aracena Airport','LQUIQUE - CHL','Y','Y','CL','CHL',-20.535200119018555,-70.1812973022461); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DIN','Dien Bien Phu Airport','DIEN BIEN PHU - VNM','Y','Y','VN','VNM',21.3974990845,103.008003235); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DLG','Dillingham Airport','DILLINGHARN - USA','Y','Y','US','USA',59.04470062,-158.5050049); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DNR','Dinard-Pleurtuit-Saint-Malo Airport','DINARD - FRA','Y','Y','FR','FRA',48.58769989013672,-2.07996010780334); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CCM','Diomício Freitas Airport','CRICLUMA - BRA','Y','Y','BR','BRA',-28.725743,-49.424475); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NIM','Diori Hamani International Airport','NIAMEY - NER','Y','Y','NE','NER',13.4815,2.18361); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DPL','Dipolog Airport','DIPOLOG - PHL','Y','Y','PH','PHL',8.60198349877,123.341875076); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DIG','Diqing Shangri-La Airport','DICLING - CHN','Y','Y','CN','CHN',27.7936,99.6772); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DJG','Djanet Inedbirene Airport','DJANET - DZA','Y','Y','DZ','DZA',24.292801,9.45244); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DJE','Djerba Zarzis International Airport','DJERBA - TUN','Y','Y','TN','TUN',33.875,10.77550029754639); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JIB','Djibouti-Ambouli Airport','DJIBOUTI - DJI','Y','Y','DJ','DJI',11.5473,43.1595); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DNK','Dnipropetrovsk International Airport','DNIPROPETROVS - UKR','Y','Y','UA','UKR',48.357200622558594,35.10060119628906); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DDC','Dodge City Regional Airport','DODGE CITY, KS - USA','Y','Y','US','USA',37.76340103149414,-99.9655990600586); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UAQ','Domingo Faustino Sarmiento Airport','SAN JUAN - ARG','Y','Y','AR','ARG',-31.571501,-68.418198); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GDL','Don Miguel Hidalgo Y Costilla International Airport','GUADALAJARA - MEX','Y','Y','MX','MEX',20.521799087524414,-103.31099700927734); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CFN','Donegal Airport','DONEGAL - IRL','Y','Y','IE','IRL',55.0442008972168,-8.34099960327148); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DOG','Dongola Airport','DONGOLA - SDN','Y','Y','SD','SDN',19.153900146499996,30.4300994873); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DTM','Dortmund Airport','DORTMUND - DEU','Y','Y','DE','DEU',51.518299,7.61224); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DHN','Dothan Regional Airport','DOTHAN, AL - USA','Y','Y','US','USA',31.321300506591797,-85.44960021972656); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DLA','Douala International Airport','DOUALA - CMR','Y','Y','CM','CMR',4.0060801506,9.71947956085); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DOM','Douglas-Charles Airport','DOMINICA - DMA','Y','Y','DM','DMA',15.547,-61.299999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VLV','Dr. Antonio Nicolás Briceño Airport','VALERA - VEN','Y','Y','VE','VEN',9.34047794342041,-70.58406066894531); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NAG','Dr. Babasaheb Ambedkar International Airport','NAGPUR - IND','Y','Y','IN','IND',21.092199,79.047203); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FYV','Drake Field','FAYETTEVILLE, AR - USA','Y','Y','US','USA',36.00510025024414,-94.17009735107422); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DRS','Dresden Airport','DRESDEN - DEU','Y','Y','DE','DEU',51.134123,13.767831); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DUJ','DuBois Regional Airport','DUBOIS, PA - USA','Y','Y','US','USA',41.17829895,-78.8986969); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DXB','Dubai International Airport','DUBAI - ARE','Y','Y','AE','ARE',25.2527999878,55.3643989563); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DUB','Dublin Airport','DUBLIN - IRL','Y','Y','IE','IRL',53.421299,-6.27007); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DBV','Dubrovnik Airport','DUBROVNIK - HRV','Y','Y','HR','HRV',42.5614013671875,18.2681999206543); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DBQ','Dubuque Regional Airport','DUBUQUE, IA - USA','Y','Y','US','USA',42.402,-90.709503); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DLH','Duluth International Airport','DULUTH, MN - USA','Y','Y','US','USA',46.842098,-92.193604); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DUD','Dunedin International Airport','DUNEDIN - NZL','Y','Y','NZ','NZL',-45.928101,170.197998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DNH','Dunhuang Mogao International Airport','DUNHUANG - CHN','Y','Y','CN','CHN',40.161098,94.809196); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DRO','Durango La Plata County Airport','DURANGO, CO - USA','Y','Y','US','USA',37.1515007019,-107.753997803); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DYU','Dushanbe Airport','DUSHANBE - TJK','Y','Y','TJ','TJK',38.543300628699996,68.8249969482); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DZA','Dzaoudzi Pamandzi International Airport','DZAOUDZI - MYT','Y','Y','YT','MYT',-12.809319,45.281815); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DUS','Düsseldorf Airport','DUSSELDORF - DEU','Y','Y','DE','NLD',51.289501,6.76678); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YEA','EDMONTON AB - CAN','EDMONTON AB - CAN','Y','N','CA','CAN',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EGE','Eagle County Regional Airport','VAIL/EAGLE, CO - USA','Y','Y','US','USA',39.64260101,-106.9179993); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GGG','East Texas Regional Airport','LONGVIEW, TX - USA','Y','Y','US','USA',32.38399887084961,-94.71150207519531); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PDT','Eastern Oregon Regional At Pendleton Airport','PENDLETON, OR - USA','Y','Y','US','USA',45.695098877,-118.841003418); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CLL','Easterwood Field','COLLEGE STATION, TX - USA','Y','Y','US','USA',30.58860016,-96.36380005); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EDI','Edinburgh Airport','EDINBURGH - GBR','Y','Y','UK','GBR',55.950145,-3.372288); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MAO','Eduardo Gomes International Airport','MANAUS AM - BRA','Y','Y','BR','BRA',-3.03861,-60.049702); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GAL','Edward G. Pitka Sr Airport','GALENA - USA','Y','Y','US','USA',64.73619843,-156.9369965); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HGA','Egal International Airport','HARGEISA - SOM','Y','Y','SO','SOM',9.513207,44.082389); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EIN','Eindhoven Airport','EINDHOVEN - NLD','Y','Y','NL','NLD',51.4500999451,5.37452983856); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LPB','El Alto International Airport','LA PAZ - BOL','Y','Y','BO','BOL',-16.5132999420166,-68.19229888916016); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AAC','El Arish International Airport','AL ARISH - EGY','Y','Y','EG','EGY',31.073299408,33.8358001709); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UIB','El Caraño Airport','QUIBDO - COL','Y','Y','CO','COL',5.69076,-76.6412); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BOG','El Dorado International Airport','BOGOTA - COL','Y','Y','CO','COL',4.70159,-74.1469); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AXM','El Eden Airport','ARMENIA - COL','Y','Y','CO','COL',4.45278,-75.7664); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ELF','El Fasher Airport','EL FASHER - SDN','Y','Y','SD','SDN',13.614899635314941,25.32460021972656); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VDE','El Hierro Airport','VALVERDE - ESP','Y','Y','ES','ESP',27.8148,-17.8871); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UVL','El Kharga Airport','KHARGA - EGY','Y','Y','EG','EGY',25.473600387573242,30.59070014953613); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JAL','El Lencero Airport','JALAPA - MEX','Y','Y','MX','MEX',19.4750995636,-96.7975006104); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CJC','El Loa Airport','CALAMA - CHL','Y','Y','CL','CHL',-22.498199462890625,-68.90360260009766); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EBD','El Obeid Airport','EL OBEID - SDN','Y','Y','SD','SDN',13.153200149536133,30.23270034790039); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ELP','El Paso International Airport','EL PASO, TX - USA','Y','Y','US','USA',31.80719948,-106.3779984); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MDZ','El Plumerillo Airport','MENDOZA MD - ARG','Y','Y','AR','ARG',-32.8316993713,-68.7929000854); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PAZ','El Tajín National Airport','POZA RICA - MEX','Y','Y','MX','MEX',20.6026992798,-97.46080017090001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KOE','El Tari Airport','KUPANG - IDN','Y','Y','ID','IDN',-10.171600341796875,123.6709976196289); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PMC','El Tepual Airport','PUERTO MORITT - CHL','Y','Y','CL','CHL',-41.438899993896484,-73.09400177001953); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ELT','El Tor Airport','TOUR SINAI CITY - EGY','Y','Y','EG','EGY',28.209,33.6455); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SRZ','El Trompillo Airport','SANTA CRUZ - BOL','Y','Y','BO','BOL',-17.8115997314,-63.1715011597); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EDL','Eldoret International Airport','ELDORET - KEN','Y','Y','KE','KEN',0.404457986354828,35.23889923095703); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EKO','Elko Regional Airport','ELKO, NV - USA','Y','Y','US','USA',40.82490158081055,-115.79199981689453); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KOA','Ellison Onizuka Kona International Airport at Keahole','KONA - USA','Y','Y','US','USA',19.738783,-156.045603); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ELM','Elmira Corning Regional Airport','ELMIRA, NY - USA','Y','Y','US','USA',42.1599006652832,-76.8916015625); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MEC','Eloy Alfaro International Airport','MANTA - ECU','Y','Y','EC','ECU',-0.94607800245285,-80.67880249023438); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ELY','Ely Airport Yelland Field','ELY, NV - USA','Y','Y','US','USA',39.29970169,-114.8420029); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LYU','Ely Municipal Airport','ELY - USA','Y','Y','US','USA',47.82450104,-91.83070374); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ENF','Enontekio Airport','ENONTEKIO - FIN','Y','Y','FI','FIN',68.362602233887,23.424299240112); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EBB','Entebbe International Airport','ENTEBBE - UGA','Y','Y','UG','UGA',0.042386,32.443501); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OMA','Eppley Airfield','OMAHA, NE - USA','Y','Y','US','USA',41.3032,-95.894096); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EBL','Erbil International Airport','erbil','Y','Y','IQ','IRQ',36.23759841918945,43.96319961547852); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ERF','Erfurt Airport','ERFURT - DEU','Y','Y','DE','DEU',50.979801177978516,10.95810031890869); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ERI','Erie International Tom Ridge Field','ERIE, PA - USA','Y','Y','US','USA',42.083127,-80.173867); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BAQ','Ernesto Cortissoz International Airport','BARRANQUILLA - COL','Y','Y','CO','COL',10.8896,-74.7808); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EBJ','Esbjerg Airport','ESBJERG - DNK','Y','Y','DK','DNK',55.525902,8.5534); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IFN','Esfahan Shahid Beheshti International Airport','ISFAHAN - IRN','Y','Y','IR','IRN',32.75080108642578,51.86130142211914); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ESU','Essaouira-Mogador Airport','ESSAOUIRA - MAR','Y','Y','MA','MAR',31.397499,-9.68167); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ANK','Etimesgut Air Base','ANKARA - TUR','Y','Y','TR','TUR',39.949798584,32.6885986328); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TOL','Eugene F. Kranz Toledo Express Airport','TOLEDO, OH - USA','Y','Y','US','USA',41.5868,-83.8078); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VIX','Eurico de Aguiar Salles Airport','VITORIA - BRA','Y','Y','BR','BRA',-20.258057,-40.286388); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BSL','EuroAirport Basel-Mulhouse-Freiburg Airport','BALE - CHE','Y','Y','CH','CHE',47.59,7.529167); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EVV','Evansville Regional Airport','EVANSVILLE, IN - USA','Y','Y','US','USA',38.0369987488,-87.5324020386); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EXT','Exeter International Airport','EXETER - GBR','Y','Y','UK','GBR',50.734402,-3.41389); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GGT','Exuma International Airport','GEORGE TOWN - BHS','Y','Y','BS','BHS',23.562599,-75.877998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EUX','F. D. Roosevelt Airport','ST EUSTATIUS - ANT','Y','Y','BQ','ANT',17.49650001525879,-62.97940063476563); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GRX','F.G.L. Airport Granada-Jaén Airport','GRANADE - ESP','Y','Y','ES','ESP',37.188702,-3.77736); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PPT','Faa''a International Airport','PAPEETE - PYF','Y','Y','PF','PYF',-17.553699,-149.606995); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FAI','Fairbanks International Airport','FAIRBANKS, AK - USA','Y','Y','US','USA',64.81510162,-147.8560028); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FRM','Fairmont Municipal Airport','FAIRMONT - USA','Y','Y','US','USA',43.643901825,-94.4156036377); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LYP','Faisalabad International Airport','FAISALABAD - PAK','Y','Y','PK','PAK',31.364999771118164,72.99479675292969); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PMO','Falcone–Borsellino Airport','PALERMO - ITA','Y','Y','IT','ITA',38.175999,13.091); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('APW','Faleolo International Airport','APIA - WSM','Y','Y','WS','WSM',-13.829999923706055,-172.00799560546875); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('INL','Falls International Airport','INTERNATIONAL FALLS, MN - USA','Y','Y','US','USA',48.566200256347656,-93.4030990600586); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FAO','Faro Airport','FARO - PRT','Y','Y','PT','PRT',37.0144004822,-7.96590995789); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NOS','Fascene Airport','NOSSI BE - MDG','Y','Y','MG','MDG',-13.3121004105,48.3148002625); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FAY','Fayetteville Regional Airport - Grannis Field','FAYETTEVILLE, NC - USA','Y','Y','US','USA',34.991199,-78.880302); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RMI','Federico Fellini International Airport','RIMINI - ITA','Y','Y','IT','ITA',44.020302,12.6117); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FSC','Figari Sud-Corse Airport','FIGARI - FRA','Y','Y','FR','FRA',41.500599,9.09778); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BON','Flamingo International Airport','BONAIRE - ANT','Y','Y','BQ','ANT',12.131,-68.268501); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YFO','Flin Flon Airport','FLIN FLON - CAN','Y','Y','CA','CAN',54.6781005859375,-101.68199920654297); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FLO','Florence Regional Airport','FLORENCE, SC - USA','Y','Y','US','USA',34.18539810180664,-79.7238998413086); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IMT','Ford Airport','IRON MOUNTAIN, MI - USA','Y','Y','US','USA',45.8184013367,-88.1145019531); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FRL','Forlì Airport','FORLI - ITA','Y','Y','IT','ITA',44.194801,12.0701); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FMA','Formosa Airport','FORMOSA - ARG','Y','Y','AR','ARG',-26.2127,-58.2281); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FOD','Fort Dodge Regional Airport','FORT DODGE, IA - USA','Y','Y','US','USA',42.55149841,-94.19259644); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FLL','Fort Lauderdale Hollywood International Airport','FT LAUDER FL - USA','Y','Y','US','USA',26.072599,-80.152702); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YMM','Fort McMurray Airport','FORT MCMURRAY - CAN','Y','Y','CA','CAN',56.653301239,-111.222000122); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YSM','Fort Smith Airport','FORL SMITH - CAN','Y','Y','CA','CAN',60.020302,-111.961998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FSM','Fort Smith Regional Airport','FORT SMITH, AR - USA','Y','Y','US','USA',35.336601,-94.367401); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YXJ','Fort St John Airport','FORT ST JOHN - CAN','Y','Y','CA','CAN',56.238098,-120.739998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FWA','Fort Wayne International Airport','FORT WAYNE, IN - USA','Y','Y','US','USA',40.9785,-85.195099); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FMN','Four Corners Regional Airport','FARMINGTON, NM - USA','Y','Y','US','USA',36.741199,-108.230003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DVO','Francisco Bangoy International Airport','DAVAO - PHL','Y','Y','PH','PHL',7.12552,125.646004); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OCC','Francisco De Orellana Airport','COCA - ECU','Y','Y','EC','ECU',-0.46288600564003,-76.98680114746094); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TRC','Francisco Sarabia Tinoco International Airport','TORREON - MEX','Y','Y','MX','MEX',25.5683,-103.411003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JDF','Francisco de Assis Airport','JUIZ DE FORA - BRA','Y','Y','BR','BRA',-21.791482,-43.386072); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OPO','Francisco de Sá Carneiro Airport','PORTO - PRT','Y','Y','PT','PRT',41.2481002808,-8.68138980865); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MII','Frank Miloye Milenkowichi–Marília State Airport','MARILIA - BRA','Y','Y','BR','BRA',-22.196899,-49.926485); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HOG','Frank Pais International Airport','HOLGUIR. - CUB','Y','Y','CU','CUB',20.785600662231445,-76.31510162353516); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MLS','Frank Wiley Field','MILES CITY, MT - USA','Y','Y','US','USA',46.428001403808594,-105.88600158691406); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FRA','Frankfurt am Main Airport','FRANKFURT - DEU','Y','Y','DE','DEU',50.036249,8.559294); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BIK','Frans Kaisiepo Airport','BIAK - IDN','Y','Y','ID','IDN',-1.190019965171814,136.10800170898438); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YFC','Fredericton Airport','FREDERICTON - CAN','Y','Y','CA','CAN',45.868900299072266,-66.53720092773438); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FAT','Fresno Yosemite International Airport','FRESNO, CA - USA','Y','Y','US','USA',36.776199,-119.718002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SUN','Friedman Memorial Airport','HAILEY / SUN VALLEY, ID - USA','Y','Y','US','USA',43.50439835,-114.2959976); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FDH','Friedrichshafen Airport','FRIEDRICHSHAF - DEU','Y','Y','DE','DEU',47.671298980699994,9.51148986816); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TBU','Fua''amotu International Airport','NUKU-ALOFA - TON','Y','Y','TO','TON',-21.241199493408203,-175.14999389648438); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FUE','Fuerteventura Airport','FUERTEVENTURA / PUERTO DEL ROSARIO - ESP','Y','Y','ES','ESP',28.4527,-13.8638); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FJR','Fujairah International Airport','AL-FUJAIRAH - ARE','Y','Y','AE','ARE',25.112199783325195,56.32400131225586); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FUK','Fukuoka Airport','FUKUOKA - JPN','Y','Y','JP','JPN',33.585899353027344,130.4510040283203); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FKS','Fukushima Airport','FUKUSHIMA - JPN','Y','Y','JP','JPN',37.22740173339844,140.43099975585938); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FOC','Fuzhou Changle International Airport','FUZHOU - CHN','Y','Y','CN','CHN',25.934669,119.66318); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ABJ','Félix-Houphouët-Boigny International Airport','ABIDJAN - CIV','Y','Y','CI','CIV',5.26139,-3.92629); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GNV','Gainesville Regional Airport','GAINESVILLE, FL - USA','Y','Y','US','USA',29.6900997162,-82.2717971802); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GBG','Galesburg Municipal Airport','GALESBURG - USA','Y','Y','US','USA',40.937999725299996,-90.431098938); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BZN','Gallatin Field','BOZEMAN, MT - USA','Y','Y','US','USA',45.77750015,-111.1529999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GWY','Galway Airport','GALWAY - IRL','Y','Y','IE','IRL',53.300201416015625,-8.94159030914307); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TOB','Gamal Abdel Nasser Airport','TOBRUK - LBY','Y','Y','LY','LBY',31.861,23.907); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GAX','Gamba Airport','GAMBA - GAB','Y','Y','GA','GAB',-2.785278,10.047222); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GMB','Gambella Airport','GAMBELA - ETH','Y','Y','ET','ETH',8.12876033782959,34.5630989074707); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YQX','Gander International Airport','GANDER - CAN','Y','Y','CA','CAN',48.9369010925293,-54.56809997558594); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KOW','Ganzhou Huangjin Airport','GANZHOU - CHN','Y','Y','CN','CHN',25.853333,114.778889); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SRX','Gardabya Airport','SERT - LBY','Y','Y','LY','LBY',31.063499450699997,16.5949993134); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GCK','Garden City Regional Airport','GARDEN CITY, KS - USA','Y','Y','US','USA',37.9275016785,-100.723999023); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GOU','Garoua International Airport','GAROUA - CMR','Y','Y','CM','CMR',9.33588981628418,13.37010002136231); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YGP','Gaspé (Michel-Pouliot) Airport','GASPE - CAN','Y','Y','CA','CAN',48.7752990723,-64.4785995483); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ELQ','Gassim Airport','GASSIM - SAU','Y','Y','SA','SAU',26.302799224853516,43.77439880371094); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GAY','Gaya Airport','GAYA - IND','Y','Y','IN','IND',24.744300842285156,84.95120239257812); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GDN','Gda?sk Lech Wa??sa Airport','GDANSK - POL','Y','Y','PL','POL',54.377601623535156,18.46619987487793); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GMA','Gemena Airport','GEMENA - COD','Y','Y','CD','COD',3.23536992073,19.7712993622); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EGN','Geneina Airport','GENEINA - SDN','Y','Y','SD','SDN',13.481882,22.467119); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TIJ','General Abelardo L. Rodríguez International Airport','TIJUANA - MEX','Y','Y','MX','MEX',32.541099548339844,-116.97000122070312); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CRD','General E. Mosconi Airport','COMODORO RIVADAVIA - ARG','Y','Y','AR','ARG',-45.7853,-67.4655); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CUP','General Francisco Bermúdez Airport','CARUPANO - VEN','Y','Y','VE','VEN',10.660014152526855,-63.26168060302734); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MLM','General Francisco J. Mujica International Airport','MORELIA - MEX','Y','Y','MX','MEX',19.849899,-101.025002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TAM','General Francisco Javier Mina International Airport','TAMPICO - MEX','Y','Y','MX','MEX',22.2964000702,-97.8658981323); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DGO','General Guadalupe Victoria International Airport','DURANGO - MEX','Y','Y','MX','MEX',24.1242008209,-104.527999878); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VER','General Heriberto Jara International Airport','VERA CRUZ - MEX','Y','Y','MX','MEX',19.1459007263,-96.1873016357); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HMO','General Ignacio P. Garcia International Airport','HERMOSILLO - MEX','Y','Y','MX','MEX',29.095899581900003,-111.047996521); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BLA','General José Antonio Anzoategui International Airport','BARCELONA - VEN','Y','Y','VE','VEN',10.111111,-64.692222); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GYM','General José María Yáñez International Airport','GUAYMAS - MEX','Y','Y','MX','MEX',27.9689998626709,-110.92500305175781); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ACA','General Juan N Alvarez International Airport','ACAPULCO - MEX','Y','Y','MX','MEX',16.757099,-99.753998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZCL','General Leobardo C. Ruiz International Airport','ZACATECAS - MEX','Y','Y','MX','MEX',22.8971004486,-102.68699646); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('REX','General Lucio Blanco International Airport','REYNOSA - MEX','Y','Y','MX','MEX',26.0089,-98.2285); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PZO','General Manuel Carlos Piar International Airport','PUERTO ORDAZ - VEN','Y','Y','VE','VEN',8.288530349731445,-62.76039886474609); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MTY','General Mariano Escobedo International Airport','MONTERREY - MEX','Y','Y','MX','MEX',25.7785,-100.107002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MKE','General Mitchell International Airport','MILWAUKEE, WI - USA','Y','Y','US','USA',42.947200775146484,-87.89659881591797); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CVM','General Pedro Jose Mendez International Airport','CIUDAD VICTORIA - MEX','Y','Y','MX','MEX',23.7033004761,-98.9564971924); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MZT','General Rafael Buelna International Airport','MAZATIAN - MEX','Y','Y','MX','MEX',23.1614,-106.265999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ESM','General Rivadeneira Airport','ESMERAIDAS - ECU','Y','Y','EC','ECU',0.978519022464752,-79.62660217285156); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CUU','General Roberto Fierro Villalobos International Airport','CHIHUAHUA - MEX','Y','Y','MX','MEX',28.702899932900003,-105.964996338); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MXL','General Rodolfo Sánchez Taboada International Airport','MEXICALI - MEX','Y','Y','MX','MEX',32.6306,-115.241997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GES','General Santos International Airport','GENERAL SAFFLOS - PHL','Y','Y','PH','PHL',6.05800008774,125.096000671); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MAM','General Servando Canales International Airport','MATAMOROS - MEX','Y','Y','MX','MEX',25.7698993683,-97.5252990723); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WJF','General WM J Fox Airfield','LANCASTER, CA - USA','Y','Y','US','USA',34.74110031,-118.2190018); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PIA','General Wayne A. Downing Peoria International Airport','PEORIA, IL - USA','Y','Y','US','USA',40.6642,-89.693298); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GVA','Geneva Cointrin International Airport','GENEVA - CHE','Y','Y','CH','CHE',46.23809814453125,6.10895013809204); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GOA','Genoa Cristoforo Colombo Airport','GENOA - ITA','Y','Y','IT','ITA',44.4133,8.8375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GRJ','George Airport','GEORGE - ZAF','Y','Y','ZA','ZAF',-34.0056,22.378902); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SLU','George F. L. Charles Airport','ST LUCIA - LCA','Y','Y','LC','LCA',14.0202,-60.992901); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GRR','Gerald R. Ford International Airport','GRAND RAPIDS, MI - USA','Y','Y','US','USA',42.88079834,-85.52279663); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LTD','Ghadames East Airport','GHADAMES - LBY','Y','Y','LY','LBY',30.15169906616211,9.71531009674072); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GHT','Ghat Airport','GHAT - LBY','Y','Y','LY','LBY',25.1455993652,10.1426000595); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GIB','Gibraltar Airport','GIBRALTAR - GIB','Y','Y','GI','GIB',36.151199,-5.34966); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YGX','Gillam Airport','GILLAM - CAN','Y','Y','CA','CAN',56.35749816894531,-94.71060180664062); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PUS','Gimhae International Airport','BUSAN - KOR','Y','Y','KR','KOR',35.1795005798,128.93800354); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GRO','Girona-Costa Brava Airport','GERONA - ESP','Y','Y','ES','ESP',41.901001,2.76055); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GIS','Gisborne Airport','GISBORNE - NZL','Y','Y','NZ','NZL',-38.663299560546875,177.97799682617188); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FCA','Glacier Park International Airport','KALISPELL, MT - USA','Y','Y','US','USA',48.31050109863281,-114.25599670410156); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GLT','Gladstone Airport','GLADSTONE - AUS','Y','Y','AU','AUS',-23.869763,151.225439); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GLA','Glasgow International Airport','GLASGOW - GBR','Y','Y','UK','GBR',55.871899,-4.43306); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JUJ','Gobernador Horacio Guzman International Airport','JUJUY - ARG','Y','Y','AR','ARG',-24.392799,-65.097801); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IWD','Gogebic Iron County Airport','IRONWOOD - USA','Y','Y','US','USA',46.5275,-90.131401); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OOL','Gold Coast Airport','GOLD COAST QL - AUS','Y','Y','AU','AUS',-28.165962,153.506641); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LCE','Goloson International Airport','LA CEIBA - HND','Y','Y','HN','HND',15.7425,-86.852997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YYR','Goose Bay Airport','GOOSE BAY - CAN','Y','Y','CA','CAN',53.3191986084,-60.4258003235); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GSE','Gothenburg City Airport','goteborg','Y','Y','SE','SWE',57.7747,11.8704); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GOT','Gothenburg-Landvetter Airport','GOTHENBURG - SWE','Y','Y','SE','SWE',57.662799835205,12.279800415039); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PVH','Governador Jorge Teixeira de Oliveira Airport','PORTO VELHO - BRA','Y','Y','BR','BRA',-8.707854,-63.90242); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LDB','Governador José Richa Airport','LONDRINA - BRA','Y','Y','BR','BRA',-23.333599,-51.1301); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AGU','Governor Jesús Terán Peredo International Airport','AGUASCALIENTES - MEX','Y','Y','MX','MEX',21.699589,-102.318372); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LPA','Gran Canaria Airport','LAS PALMAS - ESP','Y','Y','ES','ESP',27.9319,-15.3866); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FPO','Grand Bahama International Airport','FREEPORT - BHS','Y','Y','BS','BHS',26.5587005615,-78.695602417); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GCN','Grand Canyon National Park Airport','GRAND CANYON, AZ - USA','Y','Y','US','USA',35.9524,-112.147003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GFK','Grand Forks International Airport','GRAND FORKS, ND - USA','Y','Y','US','USA',47.949299,-97.176102); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GJT','Grand Junction Regional Airport','GRAND JUNCTION, CO - USA','Y','Y','US','USA',39.126663,-108.529387); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GPZ','Grand Rapids Itasca Co-Gordon Newstrom field','GRAND RAPIDS - USA','Y','Y','US','USA',47.21110153,-93.50980377); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YQU','Grande Prairie Airport','GRANDE PRAIRIE - CAN','Y','Y','CA','CAN',55.1796989441,-118.885002136); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MWH','Grant County International Airport','MOSES LAKE, WA - USA','Y','Y','US','USA',47.20769882,-119.3199997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BGI','Grantley Adams International Airport','BARBADOS - BRB','Y','Y','BB','BRB',13.0746,-59.4925); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GRZ','Graz Airport','GRAZ - AUT','Y','Y','AT','AUT',46.9911,15.4396); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BGM','Greater Binghamton/Edwin A Link field','BINGHAMTON / ENDICOTT / JOHNSON CITY, NY - USA','Y','Y','US','USA',42.20869827,-75.97979736); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YQM','Greater Moncton Roméo LeBlanc International Airport','MONCTON - CAN','Y','Y','CA','CAN',46.112202,-64.678596); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ROC','Greater Rochester International Airport','ROCHESTER, NY - USA','Y','Y','US','USA',43.1189,-77.672401); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LWB','Greenbrier Valley Airport','LEWISBURG, WV - USA','Y','Y','US','USA',37.8582992554,-80.3994979858); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GSP','Greenville Spartanburg International Airport','GREER / GREENVILLE, SC - USA','Y','Y','US','USA',34.895699,-82.218903); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('POP','Gregorio Luperon International Airport','PUERTO PLATA - DOM','Y','Y','DO','DOM',19.75790023803711,-70.56999969482422); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GNB','Grenoble-Isère Airport','GRENOBLE - FRA','Y','Y','FR','FRA',45.3629,5.32937); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GRV','Grozny Airport','GROZNYJ - RUS','Y','Y','RU','RUS',43.388106,45.699772); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LIR','Guanacaste Airport','LIBERIA - CRI','Y','Y','CR','CRI',10.5933,-85.544403); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CAN','Guangzhou Baiyun International Airport','GUANGZHOU - CHN','Y','Y','CN','CHN',23.392401,113.299004); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AGT','Guarani International Airport','CIUDAD DEL ESTE - PRY','Y','Y','PY','PRY',-25.454516,-54.842682); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GCI','Guernsey Airport','GUERNESEY - GBR','Y','Y','UK','GBR',49.435001,-2.60197); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KWL','Guilin Liangjiang International Airport','GUILIN - CHN','Y','Y','CN','CHN',25.219828,110.039553); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GPT','Gulfport Biloxi International Airport','GULFPORT, MS - USA','Y','Y','US','USA',30.407301,-89.070099); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GUC','Gunnison Crested Butte Regional Airport','GUNNISON - USA','Y','Y','US','USA',38.53390121,-106.9329987); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('URY','Gurayat Domestic Airport','GURAYAT - SAU','Y','Y','SA','SAU',31.412413,37.278898); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ADZ','Gustavo Rojas Pinilla International Airport','SAN ANDRES ISLAND - COL','Y','Y','CO','COL',12.5836,-81.7112); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GST','Gustavus Airport','GUSTAVUS, AK - USA','Y','Y','US','USA',58.4253006,-135.7070007); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GWD','Gwadar International Airport','GWADAR - PAK','Y','Y','PK','PAK',25.232391,62.327671); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GWL','Gwalior Airport','GWALIOR - IND','Y','Y','IN','IND',26.29330062866211,78.22779846191406); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KWJ','Gwangju Airport','GWANGJU - KOR','Y','Y','KR','KOR',35.123173,126.805444); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HAS','Ha''il Airport','HAIL - SAU','Y','Y','SA','SAU',27.437901,41.686298); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HAC','Hachijojima Airport','HACHIJO JIMA - JPN','Y','Y','JP','JPN',33.1150016785,139.785995483); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HGR','Hagerstown Regional Richard A Henson Field','HAGERSTOWN, MD - USA','Y','Y','US','USA',39.707901,-77.72949982); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HAK','Haikou Meilan International Airport','HAIKOU - CHN','Y','Y','CN','CHN',19.9349,110.459); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HKD','Hakodate Airport','HAKODATE - JPN','Y','Y','JP','JPN',41.77,140.822006); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YHZ','Halifax / Stanfield International Airport','HALIFAX NS - CAN','Y','Y','CA','CAN',44.8807983398,-63.5085983276); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DOH','Hamad International Airport','DOHA - QAT','Y','Y','QA','QAT',25.273056,51.608056); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HAM','Hamburg Helmut Schmidt Airport','HAMBURG - DEU','Y','Y','DE','DEU',53.630402,9.98823); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HLZ','Hamilton International Airport','HAMILTON - NZL','Y','Y','NZ','NZL',-37.8666992188,175.332000732); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BTH','Hang Nadim International Airport','BATAM - IDN','Y','Y','ID','IDN',1.12102997303,104.119003296); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HGH','Hangzhou Xiaoshan International Airport','HANGZHOU - CHN','Y','Y','CN','CHN',30.23609,120.428865); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HAJ','Hannover Airport','HANOVER - DEU','Y','Y','DE','DEU',52.461101532,9.68507957458); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HRB','Harbin Taiping International Airport','HARBIN - CHN','Y','Y','CN','CHN',45.623402,126.25); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LVI','Harry Mwanga Nkumbula International Airport','LIVINGSTONE - ZMB','Y','Y','ZM','ZMB',-17.8218,25.822701); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EVE','Harstad/Narvik Airport, Evenes','HARSTAD-NARVIK - NOR','Y','Y','NO','NOR',68.491302490234,16.678100585938); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HFD','Hartford Brainard Airport','HARTFORD, CT - USA','Y','Y','US','USA',41.736698150635,-72.649398803711); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ATL','Hartsfield Jackson Atlanta International Airport','ATLANTA GA - USA','Y','Y','US','USA',33.6367,-84.428101); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UPG','Hasanuddin International Airport','UJUNG PANDANG - IDN','Y','Y','ID','IDN',-5.061629772186279,119.55400085449219); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EUN','Hassan I Airport','LAAYOUNE - MAR','Y','Y','MA','MAR',27.151699,-13.2192); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HME','Hassi Messaoud-Oued Irara Krim Belkacem Airport','HASSI MESSAOU - DZA','Y','Y','DZ','DZA',31.673,6.14044); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HDY','Hat Yai International Airport','HAT YAI - THA','Y','Y','TH','THA',6.93320989609,100.392997742); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CUR','Hato International Airport','CURACAO - ANT','Y','Y','CW','CUW',12.1889,-68.959801); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HAU','Haugesund Airport, Karmøy','HAUGESUND - NOR','Y','Y','NO','NOR',59.345299,5.20836); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HVR','Havre City County Airport','HAVRE, MT - USA','Y','Y','US','USA',48.542999,-109.762001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NPE','Hawke''s Bay Airport','NAPIER-HASTINGS - NZL','Y','Y','NZ','NZL',-39.465801,176.869995); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HYS','Hays Regional Airport','HAYS - USA','Y','Y','US','USA',38.84220123,-99.27320099); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DAC','Hazrat Shahjalal International Airport','DHAKA - BGD','Y','Y','BD','BGD',23.843347,90.397783); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LHR','Heathrow Airport','LONDON - GBR','N','Y','UK','GBR',51.4706,-0.461941); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FAR','Hector International Airport','FARGO, ND - USA','Y','Y','US','USA',46.92070007324219,-96.81580352783203); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HFE','Hefei Xinqiao International Airport','HEFEI - CHN','Y','Y','CN','CHN',31.98779,116.9769); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HLN','Helena Regional Airport','HELENA, MT - USA','Y','Y','US','USA',46.6068,-111.983002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HEL','Helsinki Vantaa Airport','HELSINKI - FIN','Y','Y','FI','FIN',60.3172,24.963301); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PHW','Hendrik Van Eck Airport','PHALABORWA - ZAF','Y','Y','ZA','ZAF',-23.937200546299998,31.1553993225); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('STX','Henry E Rohlsen Airport','ST CROIX ISLAND - VIR','Y','Y','VI','VIR',17.701900482177734,-64.79859924316406); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HER','Heraklion International Nikos Kazantzakis Airport','IRAKLEION - GRC','Y','Y','GR','GRC',35.3396987915,25.1802997589); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FLN','Hercílio Luz International Airport','FLORIANOPO SC - BRA','Y','Y','BR','BRA',-27.670279,-48.552502); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PBC','Hermanos Serdán International Airport','PUEBLA - MEX','Y','Y','MX','MEX',19.1581001282,-98.3713989258); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RGA','Hermes Quijada International Airport','RIO GRANDE - ARG','Y','Y','AR','ARG',-53.7777,-67.7494); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LUL','Hesler Noble Field','LAUREL - USA','Y','Y','US','USA',31.672599792499998,-89.172203064); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WLS','Hihifo Airport','WALLIS IS - WLF','Y','Y','WF','WLF',-13.2383003235,-176.199005127); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ITO','Hilo International Airport','HILO - USA','Y','Y','US','USA',19.721399,-155.048004); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HHH','Hilton Head Airport','HILTON HEAD - USA','Y','Y','US','USA',32.2243995667,-80.6975021362); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HIJ','Hiroshima Airport','HIROSHIMA - JPN','Y','Y','JP','JPN',34.4361,132.919006); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HBA','Hobart International Airport','HOBART - AUS','Y','Y','AU','AUS',-42.836101532,147.509994507); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HOD','Hodeidah International Airport','HODEIDAH - YEM','Y','Y','YE','YEM',14.753000259399414,42.97629928588867); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HDS','Hoedspruit Air Force Base Airport','HOEDSPRUIT - ZAF','Y','Y','ZA','ZAF',-24.368600845299998,31.0487003326); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HOQ','Hof-Plauen Airport','HOF - DEU','Y','Y','DE','DEU',50.288612,11.856389); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HKK','Hokitika Airfield','HOKITILKA - NZL','Y','Y','NZ','NZL',-42.713600158691406,170.98500061035156); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HUQ','Hon Airport','HOUN - LBY','Y','Y','LY','LBY',29.1101,15.9656); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HKG','Hong Kong International Airport','HONG KONG - HKG','Y','Y','HK','HKG',22.308901,113.915001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HIR','Honiara International Airport','HONIARA - SLB','Y','Y','SB','SLB',-9.428,160.054993); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MRO','Hood Airport','MASTERTON - NZL','Y','Y','NZ','NZL',-40.97330093383789,175.63400268554688); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HOR','Horta Airport','HORTA - PRT','Y','Y','PT','PRT',38.519901275634766,-28.71590042114258); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WDH','Hosea Kutako International Airport','WINDHOEK - NAM','Y','Y','NA','NAM',-22.4799,17.4709); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ALG','Houari Boumediene Airport','ALGIERS - DZA','Y','Y','DZ','DZA',36.691002,3.21541); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CMX','Houghton County Memorial Airport','HANCOCK, MI - USA','Y','Y','US','USA',47.168399810791016,-88.48909759521484); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CXJ','Hugo Cantergiani Regional Airport','CAMAS DO SUL - BRA','Y','Y','BR','BRA',-29.197183,-51.187647); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HLD','Hulunbuir Hailar Airport','HAILAR - CHN','Y','Y','CN','CHN',49.205002,119.824997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HUY','Humberside Airport','HUMBERSIDE - GBR','Y','Y','UK','GBR',53.57440185546875,-0.35083299875259); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LIS','Humberto Delgado Airport (Lisbon Portela Airport)','LISBON - PRT','Y','Y','PT','PRT',38.7813,-9.13592); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HSV','Huntsville International Carl T Jones Field','HUNTSVILLE, AL - USA','Y','Y','US','USA',34.637199,-86.775101); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HRG','Hurghada International Airport','HURGHADA - EGY','Y','Y','EG','EGY',27.180325,33.807292); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HON','Huron Regional Airport','HURON, SD - USA','Y','Y','US','USA',44.38520050048828,-98.22850036621094); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HWN','Hwange National Park Airport','HWANGE (NATIONAL PARK) - ZWE','Y','Y','ZW','ZWE',-18.629899978637695,27.02099990844727); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IZM','IZMIR - TUR','IZMIR - TUR','Y','N','TN','TUR',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IAS','Ia?i Airport','LASI - ROU','Y','Y','RO','ROU',47.180278,27.620833); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IBR','Ibaraki Airport / JASDF Hyakuri Air Base','IBARAKI - JPN','Y','Y','JP','JPN',36.181099,140.414993); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IBZ','Ibiza Airport','IBIZA - ESP','Y','Y','ES','ESP',38.872898,1.37312); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IDA','Idaho Falls Regional Airport','IDAHO FALLS, ID - USA','Y','Y','US','USA',43.514599,-112.070999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CMW','Ignacio Agramonte International Airport','CAMAGUEY - CUB','Y','Y','CU','CUB',21.420299530029297,-77.84750366210938); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BDR','Igor I Sikorsky Memorial Airport','BRIDGEPORT, CT - USA','Y','Y','US','USA',41.16350173950195,-73.1261978149414); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JIK','Ikaria Airport','LKARIA ISLAND - GRC','Y','Y','GR','GRC',37.6827011108,26.3470993042); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ILO','Iloilo International Airport','LLOILO - PHL','Y','Y','PH','PHL',10.833017,122.493358); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IPL','Imperial County Airport','EL CENTRO / IMPERIAL, CA - USA','Y','Y','US','USA',32.834201812699995,-115.57900238); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ION','Impfondo Airport','IMPTONDO - COG','Y','Y','CG','COG',1.616999983787537,18.06699943542481); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IND','Indianapolis International Airport','INDIANAPOLIS, IN - USA','Y','Y','US','USA',39.7173,-86.294403); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DEL','Indira Gandhi International Airport','DELHI - IND','Y','Y','IN','IND',28.55563,77.09519); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CPE','Ingeniero Alberto Acuña Ongay International Airport','CAMPECHE - MEX','Y','Y','MX','MEX',19.816799163800003,-90.5002975464); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('COR','Ingeniero Ambrosio Taravella Airport','CORDOBA - ARG','Y','Y','AR','ARG',-31.323601,-64.208); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('INN','Innsbruck Airport','INNSBRUCK - AUT','Y','Y','AT','AUT',47.260201,11.344); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IVC','Invercargill Airport','INVERCARGILL - NZL','Y','Y','NZ','NZL',-46.41239929199219,168.31300354003906); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('INV','Inverness Airport','INVERNESS - GBR','Y','Y','UK','GBR',57.54249954223633,-4.0475001335144); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IYK','Inyokern Airport','INYOKERN, CA - USA','Y','Y','US','USA',35.65879822,-117.8300018); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IOA','Ioannina Airport','IOANNINA - GRC','Y','Y','GR','GRC',39.6963996887207,20.82250022888184); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CFU','Ioannis Kapodistrias International Airport','CORFOU (KERKYRA) - GRC','Y','Y','GR','GRC',39.601898193359375,19.91169929504395); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NOC','Ireland West Knock Airport','CONNAUGHT - IRL','Y','Y','IE','IRL',53.910301,-8.81849); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IKT','Irkutsk International Airport','IRKUTSK - RUS','Y','Y','RU','RUS',52.268002,104.389); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ISB','Islamabad International Airport','ISLAMABAD - PAK','Y','Y','PK','PAK',33.549,72.82566); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IOM','Isle of Man Airport','MAN (ILE) - GBR','Y','Y','UK','GBR',54.083302,-4.62389); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ITH','Ithaca Tompkins Regional Airport','ITHACA, NY - USA','Y','Y','US','USA',42.49100112915039,-76.4583969116211); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IVL','Ivalo Airport','IVALO - FIN','Y','Y','FI','FIN',68.607299804688,27.405300140381); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TNR','Ivato Airport','ANTANANARIVO - MDG','Y','Y','MG','MDG',-18.7969,47.478802); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IWJ','Iwami Airport','IWAMI - JPN','Y','Y','JP','JPN',34.676399231,131.789993286); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZIH','Ixtapa Zihuatanejo International Airport','IXTAPA/ZIHUATANEJO - MEX','Y','Y','MX','MEX',17.601600647,-101.460998535); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IZT','Ixtepec Airport','IXTEPEC - MEX','Y','Y','MX','MEX',16.449301,-95.093697); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IZO','Izumo Enmusubi Airport','IZUMO - JPN','Y','Y','JP','JPN',35.413601,132.889999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JKT','JAKARTA - IDN','JAKARTA - IDN','Y','N','ID','IDN',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JLR','Jabalpur Airport','JALBALPUR - IND','Y','Y','IN','IND',23.177799224853516,80.052001953125); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BPT','Jack Brooks Regional Airport','BEAUMONT, TX - USA','Y','Y','US','USA',29.9508,-94.020699); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CEC','Jack Mc Namara Field Airport','CRESCENT CITY, CA - USA','Y','Y','US','USA',41.78020096,-124.2369995); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JAC','Jackson Hole Airport','JACKSON, WY - USA','Y','Y','US','USA',43.6072998046875,-110.73799896240234); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JAN','Jackson-Medgar Wiley Evers International Airport','JACKSON, MS - USA','Y','Y','US','USA',32.311199,-90.075897); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JAX','Jacksonville International Airport','JACKSONVILLE, FL - USA','Y','Y','US','USA',30.49410057067871,-81.68789672851562); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CFG','Jaime Gonzalez Airport','CIENFUEGOS - CUB','Y','Y','CU','CUB',22.149999618530273,-80.41419982910156); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JAI','Jaipur International Airport','JAIPUR - IND','Y','Y','IN','IND',26.8242,75.812202); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JSA','Jaisalmer Airport','JAISALMER - IND','Y','Y','IN','IND',26.888700485229492,70.86499786376953); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DAY','James M Cox Dayton International Airport','DAYTON, OH - USA','Y','Y','US','USA',39.902401,-84.219398); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JMS','Jamestown Regional Airport','JAMESTOWN, ND - USA','Y','Y','US','USA',46.92969894,-98.67819977); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IXJ','Jammu Airport','JAMMU - IND','Y','Y','IN','IND',32.688849,74.838152); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JGA','Jamnagar Airport','JAMNAGAR - IND','Y','Y','IN','IND',22.465499877929688,70.01260375976562); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CCC','Jardines Del Rey Airport','CAYO COCO - CUB','Y','Y','CU','CUB',22.461000442499998,-78.32839965820001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CJU','Jeju International Airport','JEJU - KOR','Y','Y','KR','KOR',33.51129913330078,126.49299621582031); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('XRY','Jerez Airport','JEREZ DE LA FRONTERA - ESP','Y','Y','ES','ESP',36.744598,-6.06011); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JER','Jersey Airport','JERSEY - GBR','Y','Y','UK','GBR',49.20790100097656,-2.1955099105835); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JPR','Ji-Paraná Airport','JI-PARANA - BRA','Y','Y','BR','BRA',-10.870743,-61.846675); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SWA','Jieyang Chaoshan International Airport','SHANTOU - CHN','Y','Y','CN','CHN',23.552,116.5033); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GJL','Jijel Ferhat Abbas Airport','JIJEL - DZA','Y','Y','DZ','DZA',36.7951011658,5.87361001968); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JIL','Jilin Ertaizi Airport','JILIN - CHN','Y','Y','CN','CHN',44.002652,126.395244); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JIM','Jimma Airport','JIMMA - ETH','Y','Y','ET','ETH',7.66609001159668,36.81660079956055); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TNA','Jinan Yaoqiang International Airport','JINAN - CHN','Y','Y','CN','CHN',36.857201,117.216003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JDZ','Jingdezhen Luojia Airport','JINGDEZHEN - CHN','Y','Y','CN','CHN',29.3386,117.176003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KHI','Jinnah International Airport','KARACHI - PAK','Y','Y','PK','PAK',24.9065,67.160797); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JNZ','Jinzhou Bay Airport','JINZHOU - CHN','Y','Y','CN','CHN',40.936032,121.277114); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GIZ','Jizan Regional Airport / King Abdullah bin Abdulaziz Airport','GIZAN - SAU','Y','Y','SA','SAU',16.9011,42.5858); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JDH','Jodhpur Airport','JODHPUR - IND','Y','Y','IN','IND',26.251100540161133,73.04889678955078); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JOE','Joensuu Airport','JOENSUU - FIN','Y','Y','FI','FIN',62.662899,29.6075); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PBM','Johan Adolf Pengel International Airport','PARAMARIBO - SUR','Y','Y','SR','SUR',5.45283,-55.187801); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MNI','John A. Osborne Airport','MONTSERRAT - MSR','Y','Y','MS','MSR',16.791400909423828,-62.19329833984375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CMH','John Glenn Columbus International Airport','COLUMBUS, OH - USA','Y','Y','US','USA',39.998001,-82.891899); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JST','John Murtha Johnstown Cambria County Airport','JOHNSTOWN, PA - USA','Y','Y','US','USA',40.31610107421875,-78.83390045166016); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SNA','John Wayne Airport-Orange County Airport','SANTA ANA, CA - USA','Y','Y','US','USA',33.675701,-117.867996); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NBO','Jomo Kenyatta International Airport','NAIROBI - KEN','Y','Y','KE','KEN',-1.31923997402,36.9277992249); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JLN','Joplin Regional Airport','JOPLIN, MO - USA','Y','Y','US','USA',37.151798,-94.498299); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LIM','Jorge Chávez International Airport','LIMA - PER','Y','Y','PE','PER',-12.0219,-77.114305); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CBB','Jorge Wilsterman International Airport','COCHABAMBA - BOL','Y','Y','BO','BOL',-17.421100616455078,-66.1771011352539); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MDE','Jose Maria Córdova International Airport','MEDELLIN - COL','Y','Y','CO','COL',6.16454,-75.4231); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LSP','Josefa Camejo International Airport','LAS PIEDRAS - VEN','Y','Y','VE','VEN',11.78077507019043,-70.15149688720703); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BCN','Josep Tarradellas Barcelona-El Prat Airport','BARCELONA - ESP','Y','Y','ES','ESP',41.2971,2.07846); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BUQ','Joshua Mqabuko Nkomo International Airport','BULAWAYO - ZWE','Y','Y','ZW','ZWE',-20.017401,28.617901); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TWF','Joslin Field Magic Valley Regional Airport','TWIN FALLS, ID - USA','Y','Y','US','USA',42.4818,-114.487999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BSC','José Celestino Mutis Airport','BAHIA SOLANO - COL','Y','Y','CO','COL',6.20292,-77.3947); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GYE','José Joaquín de Olmedo International Airport','GUAYAQUIL - ECU','Y','Y','EC','ECU',-2.15742,-79.883598); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CZE','José Leonardo Chirinos Airport','CORO - VEN','Y','Y','VE','VEN',11.41494369506836,-69.68090057373047); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HAV','José Martí International Airport','HAVANA - CUB','Y','Y','CU','CUB',22.989200592041016,-82.40910339355469); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MAB','João Correa da Rocha Airport','MARABA - BRA','Y','Y','BR','BRA',-5.36859,-49.138); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PDL','João Paulo II Airport','PONTA DELGADA (ILE SAN MIGUEL) - PRT','Y','Y','PT','PRT',37.7411994934,-25.6979007721); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VRA','Juan Gualberto Gomez International Airport','VARADERO - CUB','Y','Y','CU','CUB',23.034400939941406,-81.435302734375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RTB','Juan Manuel Gálvez International Airport','ROATAN - HND','Y','Y','HN','HND',16.316799,-86.523003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VIG','Juan Pablo Pérez Alfonso Airport','EL VIGIA - VEN','Y','Y','VE','VEN',8.624139,-71.672668); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SJO','Juan Santamaría International Airport','SAN JOSE - CRI','Y','Y','CR','CRI',9.99386,-84.208801); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SAB','Juancho E. Yrausquin Airport','SABA ISLAND - ANT','Y','Y','BQ','ANT',17.645000457763672,-63.22000122070313); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SUB','Juanda International Airport','SURABAYA - IDN','Y','Y','ID','IDN',-7.37982988357544,112.78700256347656); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JUB','Juba International Airport','JUBA - SSD','Y','Y','SS','SSD',4.87201,31.601101); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DAR','Julius Nyerere International Airport','DAR ES SALAAM - TZA','Y','Y','TZ','TZA',-6.87811,39.202599); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JNU','Juneau International Airport','JUNEAU, AK - USA','Y','Y','US','USA',58.35499954223633,-134.5760040283203); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JYV','Jyväskylä Airport','JYVASKYLA - FIN','Y','Y','FI','FIN',62.399502,25.678301); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JKG','Jönköping Airport','JONKOPING - SWE','Y','Y','SE','SWE',57.757598876953125,14.06869983673096); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UTT','K. D. Matanzima Airport','UMTATA - ZAF','Y','Y','ZA','ZAF',-31.546363184900002,28.6733551025); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('QJY','KOLOBRZEG - POL','KOLOBRZEG - POL','Y','N','PL','POL',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OSZ','KOSZALIN - POL','KOSZALIN - POL','Y','Y','PL','POL',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KOB','KOUTABA - CMR','KOUTABA - CMR','Y','Y','CM','CMR',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KBL','Kabul International Airport','KABUL - AFG','Y','Y','AF','AFG',34.565899,69.212303); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KAD','Kaduna Airport','KADUNA - NGA','Y','Y','NG','NGA',10.696000099182129,7.32010984420776); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KOJ','Kagoshima Airport','KAGOSHIMA - JPN','Y','Y','JP','JPN',31.80340003967285,130.718994140625); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OGG','Kahului Airport','KAHULUI - USA','Y','Y','US','USA',20.898543,-156.431212); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KAT','Kaitaia Airport','KAITAIA - NZL','Y','Y','NZ','NZL',-35.06999969482422,173.28500366210938); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KAJ','Kajaani Airport','KAJAANI - FIN','Y','Y','FI','FIN',64.2855,27.6924); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KLX','Kalamata Airport','KALAMATA - GRC','Y','Y','GR','GRC',37.06829833984375,22.02549934387207); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AZO','Kalamazoo Battle Creek International Airport','KALAMAZOO, MI - USA','Y','Y','US','USA',42.234901428222656,-85.5521011352539); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FMI','Kalemie Airport','KALEMIE - COD','Y','Y','CD','COD',-5.875559806823731,29.25); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KGI','Kalgoorlie Boulder Airport','KALGOORLIE - AUS','Y','Y','AU','AUS',-30.789400100699996,121.461997986); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KLO','Kalibo International Airport','KALIBO - PHL','Y','Y','PH','PHL',11.679400444,122.375999451); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KLR','Kalmar Airport','KALMAR - SWE','Y','Y','SE','SWE',56.685501,16.2876); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JKL','Kalymnos Airport','JACKSON, KY - GRC','Y','Y','GR','GRC',36.9632987976,26.9405994415); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YKA','Kamloops Airport','KAMLOOPS - CAN','Y','Y','CA','CAN',50.7022018433,-120.444000244); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KGA','Kananga Airport','KANANGA - COD','Y','Y','CD','COD',-5.90005016327,22.4692001343); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KNU','Kanpur Airport','KANPUR - IND','Y','Y','IN','IND',26.404301,80.410103); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KHH','Kaohsiung International Airport','KAOHSIUNG - TWN','Y','Y','TW','TWN',22.577101,120.349998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JHM','Kapalua Airport','KAPALUA - USA','Y','Y','US','USA',20.9629,-156.673004); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KAB','Kariba International Airport','KARIBA - ZWE','Y','Y','ZW','ZWE',-16.5198,28.885); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OFK','Karl Stefan Memorial Airport','NORFOLK, NE - USA','Y','Y','US','USA',41.985500335693,-97.435096740723); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KLV','Karlovy Vary International Airport','KARLOVY VARY - CZE','Y','Y','CZ','CZE',50.202999114990234,12.91499996185303); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KSD','Karlstad Airport','KARLSTAD - SWE','Y','Y','SE','SWE',59.444698333699996,13.3374004364); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KGJ','Karonga Airport','KARONGA - MWI','Y','Y','MW','MWI',-9.953570365905762,33.89300155639648); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AOK','Karpathos Airport','KARPATHOS - GRC','Y','Y','GR','GRC',35.4213981628418,27.14599990844727); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KTA','Karratha Airport','KARRATHA - AUS','Y','Y','AU','AUS',-20.712200164799995,116.773002625); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KRP','Karup Airport','KARUP - DNK','Y','Y','DK','DNK',56.29750061035156,9.12462997436523); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BBK','Kasane Airport','KASANE - BWA','Y','Y','BW','BWA',-17.832899,25.162399); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KHG','Kashgar Airport','KASHI - CHN','Y','Y','CN','CHN',39.5429000854,76.0199966431); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KSJ','Kasos Airport','KASOS (ILE) - GRC','Y','Y','GR','GRC',35.4213981628,26.9099998474); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KZS','Kastelorizo Airport','KASTELORIZO - GRC','Y','Y','GR','GRC',36.1417007446,29.5764007568); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KSO','Kastoria National Airport Aristotle','KASTORIA - GRC','Y','Y','GR','GRC',40.446301,21.2822); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MPA','Katima Mulilo Airport','MPACHA - NAM','Y','Y','NA','NAM',-17.634399,24.176701); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KTW','Katowice International Airport','KATOWICE - POL','Y','Y','PL','POL',50.4743,19.08); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KUN','Kaunas International Airport','KAUNAS - LTU','Y','Y','LT','LTU',54.96390151977539,24.08480072021484); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KVA','Kavala Alexander the Great International Airport','KAVALA / CHRYSOUPOLI - GRC','Y','Y','GR','GRC',40.9133,24.6192); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ASR','Kayseri Erkilet Airport','KAYSERI - TUR','Y','Y','TR','TUR',38.770401001,35.4953994751); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KZN','Kazan International Airport','KAZAN - RUS','Y','Y','RU','RUS',55.606201171875,49.278701782227); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EAR','Kearney Regional Airport','KEARNEY - USA','Y','Y','US','USA',40.727001,-99.006798); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EFL','Kefallinia Airport','KEFALHNIA - GRC','Y','Y','GR','GRC',38.12009811401367,20.5004997253418); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YLW','Kelowna International Airport','KELOWNA - CAN','Y','Y','CA','CAN',49.9561,-119.377998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BLR','Kempegowda International Airport','BENGALURU - IND','Y','Y','IN','IND',13.1979,77.706299); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LUN','Kenneth Kaunda International Airport','LUSAKA - ZMB','Y','Y','ZM','ZMB',-15.330833,28.452722); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KKE','Kerikeri Airport','KERIKERI - NZL','Y','Y','NZ','NZL',-35.26279830932617,173.91200256347656); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KIR','Kerry Airport','KERRY - IRL','Y','Y','IE','IRL',52.180901,-9.52378); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KTN','Ketchikan International Airport','KETCHIKAN - USA','Y','Y','US','USA',55.35559845,-131.7140045); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MEI','Key Field / Meridian Regional Airport','MERIDIAN, MS - USA','Y','Y','US','USA',32.3326,-88.7519); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EYW','Key West International Airport','KEY WEST, FL - USA','Y','Y','US','USA',24.556101,-81.759598); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KHV','Khabarovsk Novy Airport','KHABAROVSK - RUS','Y','Y','RU','RUS',48.528338,135.188588); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HJR','Khajuraho Airport','KHAJURAHO - IND','Y','Y','IN','IND',24.8172,79.918602); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HRK','Kharkiv International Airport','KHARKIV - UKR','Y','Y','UA','UKR',49.924801,36.290001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KRT','Khartoum International Airport','KHARTOUM - SDN','Y','Y','SD','SDN',15.5895,32.5532); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KKC','Khon Kaen Airport','KHON KAEN - THA','Y','Y','TH','THA',16.466600418099997,102.783996582); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KGD','Khrabrovo Airport','KALININGRAD - RUS','Y','Y','RU','RUS',54.88999938964844,20.59259986877441); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LBD','Khujand Airport','KHUDZHAND - TJK','Y','Y','TJ','TJK',40.215401,69.694702); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KEL','Kiel-Holtenau Airport','KIEL - DEU','Y','Y','DE','DEU',54.379444,10.145278); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IEV','Kiev Zhuliany International Airport','KIEV - UKR','Y','Y','UA','UKR',50.40194,30.45194); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KFA','Kiffa Airport','KIFFA - MRT','Y','Y','MR','MRT',16.59,-11.4062); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KGL','Kigali International Airport','KIGALI - RWA','Y','Y','RW','RWA',-1.96863,30.1395); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TKQ','Kigoma Airport','KIGOMA - TZA','Y','Y','TZ','TZA',-4.8862,29.6709); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JRO','Kilimanjaro International Airport','KILIMANJARO - TZA','Y','Y','TZ','TZA',-3.42941,37.074501); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KIM','Kimberley Airport','KIMBERLEY - ZAF','Y','Y','ZA','ZAF',-28.802799224900003,24.7651996613); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KND','Kindu Airport','KINDU - COD','Y','Y','CD','COD',-2.91917991638,25.9153995514); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JED','King Abdulaziz International Airport','JEDDAH - SAU','Y','Y','SA','SAU',21.6796,39.156502); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DMM','King Fahd International Airport','DAMMAM - SAU','Y','Y','SA','SAU',26.471200942993164,49.79790115356445); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RUH','King Khaled International Airport','RIYADH - SAU','Y','Y','SA','SAU',24.957599639892578,46.69879913330078); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AKN','King Salmon Airport','KING SALMON - USA','Y','Y','US','USA',58.677845,-156.651965); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ABT','King Saud Bin Abdulaziz (Al Baha) Airport','AL-BAHA - SAU','Y','Y','SA','SAU',20.298506,41.636153); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DUR','King Shaka International Airport','DURBAN - ZAF','Y','Y','ZA','ZAF',-29.6144444444,31.1197222222); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IGM','Kingman Airport','KINGMAN, AZ - USA','Y','Y','US','USA',35.259499,-113.938004); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YGK','Kingston Norman Rogers Airport','KINGSTON - CAN','Y','Y','CA','CAN',44.22529983520508,-76.5969009399414); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KKN','Kirkenes Airport, Høybuktmoen','KIRKENES - NOR','Y','Y','NO','NOR',69.7258,29.8913); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KOI','Kirkwall Airport','KIRKWALL (ILE ORKNEY) - GBR','Y','Y','UK','GBR',58.957801818847656,-2.90499997138977); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KRN','Kiruna Airport','KIRUNA - SWE','Y','Y','SE','SWE',67.821998596191,20.336799621582); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KIH','Kish International Airport','KISH ISLAND - IRN','Y','Y','IR','IRN',26.5261993408,53.9802017212); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KIS','Kisumu Airport','KISUMU - KEN','Y','Y','KE','KEN',-0.086139000952244,34.72890090942383); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KKJ','Kitakyushu Airport','KITA KYUSHU - JPN','Y','Y','JP','JPN',33.845901,131.035004); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KIT','Kithira Airport','KITHIRA - GRC','Y','Y','GR','GRC',36.2742996216,23.0170001984); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KTT','Kittilä Airport','KITTILA - FIN','Y','Y','FI','FIN',67.700996398926,24.846799850464); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KLU','Klagenfurt Airport','KLAGENFURT - AUT','Y','Y','AT','AUT',46.642502,14.3377); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KCZ','Kochi Ryoma Airport','KOCHI - JPN','Y','Y','JP','JPN',33.546101,133.669006); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ADQ','Kodiak Airport','KODIAK, AK - USA','Y','Y','US','USA',57.75,-152.4940033); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KOK','Kokkola-Pietarsaari Airport','KOKKOLA / PIETARSAARI - FIN','Y','Y','FI','FIN',63.721199,23.143101); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SVX','Koltsovo Airport','YEKATERINBURG - RUS','Y','Y','RU','RUS',56.743099212646,60.802700042725); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KMQ','Komatsu Airport / JASDF Komatsu Air Base','KOMATSU - JPN','Y','Y','JP','JPN',36.3946,136.406998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZBR','Konarak Airport','CHAH-BAHAR - IRN','Y','Y','IR','IRN',25.443300247199996,60.3820991516); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HGO','Korhogo Airport','KORHOGO - CIV','Y','Y','CI','CIV',9.38718032837,-5.55666017532); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KGS','Kos Airport','KOS - GRC','Y','Y','GR','GRC',36.79330062866211,27.09169960021973); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KSA','Kosrae International Airport','KOSRAE - FSM','Y','Y','FM','FSM',5.35698,162.957993); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KSN','Kostanay West Airport','KOSTANAY - KAZ','Y','Y','KZ','KAZ',53.20690155029297,63.55030059814453); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BKI','Kota Kinabalu International Airport','KOTA KINABALU - MYS','Y','Y','MY','MYS',5.937210083007813,116.0510025024414); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ACC','Kotoka International Airport','ACCRA - GHA','Y','Y','GH','GHA',5.605189800262451,-0.16678600013256); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KOU','Koulamoutou Mabimbi Airport','KOULAMOUTOU - GAB','Y','Y','GA','GAB',-1.1846100091934,12.441300392151); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KZI','Kozani State Airport Filippos','KOZANI - GRC','Y','Y','GR','GRC',40.286098,21.840799); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KSC','Košice Airport','KOSICE - SVK','Y','Y','SK','SVK',48.66310119628906,21.2411003112793); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KBV','Krabi Airport','KRABI - THA','Y','Y','TH','THA',8.09912014008,98.9861984253); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KRK','Kraków John Paul II International Airport','KRAKOW - POL','Y','Y','PL','POL',50.077702,19.7848); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KRR','Krasnodar Pashkovsky International Airport','KRASNODAR - RUS','Y','Y','RU','RUS',45.034698486328,39.170501708984); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KJA','Krasnoyarsk International Airport','KRASNOYARSK - RUS','Y','Y','RU','RUS',56.173077,92.492437); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KRS','Kristiansand Airport, Kjevik','KRISTIANSAND - NOR','Y','Y','NO','NOR',58.204201,8.08537); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KID','Kristianstad Airport','KRISTIANSTAD - SWE','Y','Y','SE','SWE',55.92169952392578,14.08549976348877); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KSU','Kristiansund Airport, Kvernberget','KRISTIANSUND - NOR','Y','Y','NO','NOR',63.111801,7.82452); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KUL','Kuala Lumpur International Airport','KUALA LUMPUR - MYS','Y','Y','MY','MYS',2.745579957962,101.70999908447); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KCH','Kuching International Airport','KUCHING - MYS','Y','Y','MY','MYS',1.484699964523315,110.34700012207031); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AKF','Kufra Airport','KUFRAH - LBY','Y','Y','LY','LBY',24.178699493408203,23.31399917602539); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KUU','Kullu Manali Airport','KULU - IND','Y','Y','IN','IND',31.876699,77.154404); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KMJ','Kumamoto Airport','KUMAMOTO - JPN','Y','Y','JP','JPN',32.83729934692383,130.85499572753906); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KMS','Kumasi Airport','KUMASI - GHA','Y','Y','GH','GHA',6.714560031890869,-1.59081995487213); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UEO','Kumejima Airport','KUMEJIMA - JPN','Y','Y','JP','JPN',26.363445,126.71384); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KMG','Kunming Changshui International Airport','KUNMING - CHN','Y','Y','CN','CHN',25.1019444,102.9291667); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KUO','Kuopio Airport','KUOPIO - FIN','Y','Y','FI','FIN',63.007099,27.7978); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KUF','Kurumoch International Airport','SAMARA - RUS','Y','Y','RU','RUS',53.504901885986,50.16429901123); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KUH','Kushiro Airport','KUSHIRO - JPN','Y','Y','JP','JPN',43.041000366199995,144.192993164); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KAO','Kuusamo Airport','KUUSAMO - FIN','Y','Y','FI','FIN',65.987602,29.239401); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KWI','Kuwait International Airport','KUWAIT - KWT','Y','Y','KW','KWT',29.226600646972656,47.96889877319336); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OLF','L M Clayton Airport','WOLF POINT, MT - USA','Y','Y','US','USA',48.094501495399996,-105.574996948); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BDA','L.F. Wade International International Airport','BERMUDA - BMU','Y','Y','BM','BMU',32.36399841308594,-64.67870330810547); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LON','LONDON - GBR','LONDON - GBR','Y','N','UK','GBR',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NCP','LUZON ISLAND - PHL','LUZON ISLAND - PHL','Y','N','PH','PHL',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZCO','La Araucanía Airport','TEMUCO - CHL','Y','Y','CL','CHL',-38.9259,-72.6515); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GUA','La Aurora Airport','GUATEMALA CTY - GTM','Y','Y','GT','GTM',14.5833,-90.527496); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MAR','La Chinita International Airport','MARACAIBO - VEN','Y','Y','VE','VEN',10.5582084656,-71.7278594971); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LSE','La Crosse Regional Airport','LA CROSSE, WI - USA','Y','Y','US','USA',43.879002,-91.256699); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LSC','La Florida Airport','LA SERENA - CHL','Y','Y','CL','CHL',-29.916201,-71.199501); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TCO','La Florida Airport','TURNACO - COL','Y','Y','CO','COL',1.81442,-78.7492); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GJA','La Laguna Airport','GUANAJA - HND','Y','Y','HN','HND',16.4454,-85.906601); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MZL','La Nubia Airport','MANIZALES - COL','Y','Y','CO','COL',5.0296,-75.4647); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SPC','La Palma Airport','LA PALMA - ESP','Y','Y','ES','ESP',28.626499,-17.7556); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LRH','La Rochelle-Île de Ré Airport','LA ROCHELLE - FRA','Y','Y','FR','FRA',46.17919921875,-1.19527995586395); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NOU','La Tontouta International Airport','NOUMEA - NCL','Y','Y','NC','NCL',-22.014601,166.212997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LBU','Labuan Airport','LABUAN - MYS','Y','Y','MY','MYS',5.300680160522461,115.25); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LFT','Lafayette Regional Airport','LAFAYETTE, LA - USA','Y','Y','US','USA',30.205299,-91.987602); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CGY','Laguindingan Airport','CAGAYAN DE ORO - PHL','Y','Y','PH','PHL',8.612203,124.456496); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TER','Lajes Airport','TERCEIRA IS - PRT','Y','Y','PT','PRT',38.761799,-27.090799); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LCH','Lake Charles Regional Airport','LAKE CHARLES, LA - USA','Y','Y','US','USA',30.126100540161133,-93.22329711914062); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HII','Lake Havasu City International Airport','LAKE HAVASU CITY - USA','Y','Y','US','USA',34.571098,-114.358002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TVL','Lake Tahoe Airport','SOUTH LAKE TAHOE, CA - USA','Y','Y','US','USA',38.89390182495117,-119.99500274658203); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LKL','Lakselv Airport, Banak','LAKSELV - NOR','Y','Y','NO','NOR',70.068802,24.973499); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VNS','Lal Bahadur Shastri Airport','VARANASI - IND','Y','Y','IN','IND',25.452129,82.861805); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LBQ','Lambarene Airport','LAMBARENE - GAB','Y','Y','GA','GAB',-0.704388976097107,10.24569988250732); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SUF','Lamezia Terme Airport','LAMEZIA TERME - ITA','Y','Y','IT','ITA',38.905399,16.2423); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LMP','Lampedusa Airport','LAMPEDUSA - ITA','Y','Y','IT','ITA',35.497898,12.6181); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LNY','Lanai Airport','LANAI CITY - USA','Y','Y','US','USA',20.785675,-156.951324); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LNS','Lancaster Airport','LANCASTER, PA - USA','Y','Y','US','USA',40.121700286865234,-76.29609680175781); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LGK','Langkawi International Airport','LANGKAWI - MYS','Y','Y','MY','MYS',6.329730033874512,99.72869873046875); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LAI','Lannion-Côte de Granit Airport','LANNION - FRA','Y','Y','FR','FRA',48.754398,-3.47166); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LHW','Lanzhou Zhongchuan International Airport','LANZHOU - CHN','Y','Y','CN','CHN',36.515202,103.620003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LAO','Laoag International Airport','LAOAG - PHL','Y','Y','PH','PHL',18.1781005859375,120.53199768066406); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LPP','Lappeenranta Airport','LAPPEENRANTA - FIN','Y','Y','FI','FIN',61.044601,28.144743); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LRR','Lar Airport','LAR - IRN','Y','Y','IR','IRN',27.6747,54.383301); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LAR','Laramie Regional Airport','LARAMIE, WY - USA','Y','Y','US','USA',41.31209945678711,-105.67500305175781); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LRD','Laredo International Airport','LAREDO, TX - USA','Y','Y','US','USA',27.543800354003906,-99.46160125732422); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LCA','Larnaca International Airport','LANARCA - CYP','Y','Y','CY','CYP',34.875099,33.624901); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SDQ','Las Américas International Airport','SANTO DOMINGO - DOM','Y','Y','DO','DOM',18.42970085144,-69.668899536133); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LTL','Lastourville Airport','LASTOURVILLE - GAB','Y','Y','GA','GAB',-0.826667010784149,12.74860000610352); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IFP','Laughlin Bullhead International Airport','BULLHEAD CITY - USA','Y','Y','US','USA',35.157398,-114.559998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LST','Launceston Airport','LAUNCESTON - AUS','Y','Y','AU','AUS',-41.54529953,147.214004517); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CRU','Lauriston Airport','CARRIACOU IS - GRD','Y','Y','GD','GRD',12.4761,-61.472801); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JOI','Lauro Carneiro de Loyola Airport','JOINVILLE - BRA','Y','Y','BR','BRA',-26.224501,-48.797401); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LAW','Lawton Fort Sill Regional Airport','LAWTON, OK - USA','Y','Y','US','USA',34.5676994324,-98.4166030884); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LEH','Le Havre Octeville Airport','LE HAVRE - FRA','Y','Y','FR','FRA',49.53390121459961,0.08805599808693); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LME','Le Mans-Arnage Airport','LE MANS - FRA','Y','Y','FR','FRA',47.94860076904297,0.20166699588299); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LEB','Lebanon Municipal Airport','HANOVER / LEBANON, NH - USA','Y','Y','US','USA',43.626098632799994,-72.30419921880001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LBA','Leeds Bradford Airport','LEEDS/BRADFOR - GBR','Y','Y','UK','GBR',53.865898,-1.66057); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LGP','Legazpi City International Airport','LEGASPI - PHL','Y','Y','PH','PHL',13.1575,123.735); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IXL','Leh Kushok Bakula Rimpochee Airport','LEH - IND','Y','Y','IN','IND',34.1358985901,77.5465011597); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ABE','Lehigh Valley International Airport','ALLENTOWN, PA - USA','Y','Y','US','USA',40.651773,-75.442797); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LEJ','Leipzig/Halle Airport','LEIPZIG/HALLE - DEU','Y','Y','DE','DEU',51.423889,12.236389); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RAO','Leite Lopes Airport','RIBEIRAO PRETO - BRA','Y','Y','BR','BRA',-21.134314,-47.774053); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TLL','Lennart Meri Tallinn Airport','TALLINN - EST','Y','Y','EE','EST',59.41329956049999,24.8327999115); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MHH','Leonard M Thompson International Airport','MARSH HARBOUR - BHS','Y','Y','BS','BHS',26.5114,-77.083503); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LRS','Leros Airport','LEROS - GRC','Y','Y','GR','GRC',37.184898,26.800301); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YQL','Lethbridge County Airport','LETHBRIDGE - CAN','Y','Y','CA','CAN',49.6302986145,-112.800003052); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LWS','Lewiston Nez Perce County Airport','LEWISTON, ID - USA','Y','Y','US','USA',46.3745002746582,-117.01499938964844); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LWT','Lewistown Municipal Airport','LEWISTOWN, MT - USA','Y','Y','US','USA',47.04930114746094,-109.46700286865234); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LEN','León Airport','LEON - ESP','Y','Y','ES','ESP',42.589001,-5.65556); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LXA','Lhasa Gonggar Airport','LHASA - CHN','Y','Y','CN','CHN',29.2978000641,90.91190338130001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LYG','Lianyungang Baitabu Airport / Baitabu Air Base','LIANYUNGANG - CHN','Y','Y','CN','CHN',34.571667,118.873611); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LIE','Libenge Airport','LIBENGE - COD','Y','Y','CD','COD',3.632999897003174,18.63299942016602); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LBL','Liberal Mid-America Regional Airport','LIBERAL - USA','Y','Y','US','USA',37.0442009,-100.9599991); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PSS','Libertador Gral D Jose De San Martin Airport','POSADAS - ARG','Y','Y','AR','ARG',-27.3858,-55.9707); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LBV','Libreville Leon M''ba International Airport','LIBREVILLE - GAB','Y','Y','GA','GAB',0.458600014448,9.4122800827); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MEX','Licenciado Benito Juarez International Airport','MEXICO CITY - MEX','Y','Y','MX','MEX',19.4363,-99.072098); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MID','Licenciado Manuel Crescencio Rejon Int Airport','MERIDA - MEX','Y','Y','MX','MEX',20.937000274699997,-89.657699585); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CLQ','Licenciado Miguel de la Madrid Airport','COLIMA - MEX','Y','Y','MX','MEX',19.277,-103.577002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DLI','Lien Khuong Airport','DALAT - VNM','Y','Y','VN','VNM',11.75,108.366997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LPX','Liep?ja International Airport','LIEPAYA - LVA','Y','Y','LV','LVA',56.51750183105469,21.09690093994141); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AWZ','Lieutenant General Qasem Soleimani International Airport','AHWAZ - IRN','Y','Y','IR','IRN',31.3374,48.762001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LJG','Lijiang Sanyi International Airport','LIJIANG CITY - CHN','Y','Y','CN','CHN',26.68,100.246002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LIL','Lille-Lesquin Airport','LILLE - FRA','Y','Y','FR','FRA',50.563332,3.086886); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LLW','Lilongwe International Airport','LILONGWE - MWI','Y','Y','MW','MWI',-13.7894001007,33.78099823); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LXS','Limnos Airport','LEMNOS - GRC','Y','Y','GR','GRC',39.917098999,25.2362995148); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LIG','Limoges Airport','LIMOGES - FRA','Y','Y','FR','FRA',45.86280059814453,1.17944002151489); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LNK','Lincoln Airport','LINCOLN, NE - USA','Y','Y','US','USA',40.85100173950195,-96.75920104980469); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LDI','Lindi Airport','LINDI - TZA','Y','Y','TZ','TZA',-9.851005,39.75911); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LPI','Linköping City Airport','LINKOPING - SWE','Y','Y','SE','SWE',58.4062004089,15.6805000305); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LNZ','Linz-Hörsching Airport / Vogler Air Base','LINZ - AUT','Y','Y','AT','AUT',48.2332,14.1875); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LZH','Liuzhou Bailian Airport / Bailian Air Base','LIUZHOU - CHN','Y','Y','CN','CHN',24.2075,109.390999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LPL','Liverpool John Lennon Airport','LIVERPOOL - GBR','Y','Y','UK','GBR',53.333599,-2.84972); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LJU','Ljubljana Jože Pu?nik Airport','LJUBLJANA - SVN','Y','Y','SI','SVN',46.223701,14.4576); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BAG','Loakan Airport','BAGUIC - PHL','Y','Y','PH','PHL',16.375099182128906,120.62000274658203); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BOS','Logan International Airport','BOSTON MA - USA','Y','Y','US','USA',42.3643,-71.005203); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RJL','Logroño-Agoncillo Airport','LOGRONO - ESP','Y','Y','ES','ESP',42.460953,-2.322235); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PAT','Lok Nayak Jayaprakash Airport','PATNA - IND','Y','Y','IN','IND',25.591299057,85.0879974365); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LKG','Lokichoggio Airport','LOKICHOGGIO - KEN','Y','Y','KE','KEN',4.20412015914917,34.34820175170898); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GAU','Lokpriya Gopinath Bordoloi International Airport','GUWAHATI - IND','Y','Y','IN','IND',26.10610008239746,91.58589935302734); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LFW','Lomé–Tokoin International Airport','LOME - TGO','Y','Y','TG','TGO',6.16561,1.25451); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YXU','London Airport','(CANADA) LONDON - CAN','Y','Y','CA','CAN',43.035599,-81.1539); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LGB','Long Beach Airport (Daugherty Field)','LONG BEACH, CA - USA','Y','Y','US','USA',33.817699,-118.152); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ISP','Long Island Mac Arthur Airport','ISLIP, NY - USA','Y','Y','US','USA',40.79520035,-73.10019684); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KWE','Longdongbao Airport','GUIYANG - CHN','Y','Y','CN','CHN',26.53849983215332,106.8010025024414); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LRT','Lorient South Brittany (Bretagne Sud) Airport','LORIENT - FRA','Y','Y','FR','FRA',47.76060104370117,-3.44000005722046); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LAX','Los Angeles International Airport','LOS ANGEL CA - USA','Y','Y','US','USA',33.942501,-118.407997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SJD','Los Cabos International Airport','SAN JOSE CABO - MEX','Y','Y','MX','MEX',23.1518,-109.721001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MTR','Los Garzones Airport','MONTERIA - COL','Y','Y','CO','COL',8.82374,-75.8258); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BHA','Los Perales Airport','BAHIA DE CARAQUEZ - ECU','Y','Y','EC','ECU',-0.608111023902893,-80.40270233154297); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MSY','Louis Armstrong New Orleans International Airport','NEW ORLEANS, LA - USA','Y','Y','US','USA',29.99340057373047,-90.25800323486328); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LPQ','Luang Phabang International Airport','LUANG PRABANG - LAO','Y','Y','LA','LAO',19.897300720214844,102.16100311279297); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SDD','Lubango Airport','LUBANGO - AGO','Y','Y','AO','AGO',-14.924699783325195,13.57499980926514); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LBB','Lubbock Preston Smith International Airport','LUBBOCK, TX - USA','Y','Y','US','USA',33.663601,-101.822998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FBM','Lubumbashi International Airport','LUBUMBASHI - COD','Y','Y','CD','COD',-11.5913000107,27.5308990479); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LUG','Lugano Airport','LUGANO - CHE','Y','Y','CH','CHE',46.00429916379999,8.9105796814); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SJU','Luis Munoz Marin International Airport','SAN JUAN - PRI','Y','Y','PR','PRI',18.4393997192,-66.0018005371); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LLA','Luleå Airport','LULEA - SWE','Y','Y','SE','SWE',65.5438,22.122); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FNA','Lungi International Airport','FREETOWN - SLE','Y','Y','SL','SLE',8.61644,-13.1955); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LYA','Luoyang Beijiao Airport','LUOYANG - CHN','Y','Y','CN','CHN',34.7411,112.388); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LUX','Luxembourg-Findel International Airport','LUXEMBOURG - LUX','Y','Y','LU','LUX',49.6233333,6.2044444); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LXR','Luxor International Airport','LUXOR - EGY','Y','Y','EG','EGY',25.674629,32.700012); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LWO','Lviv International Airport','LVIV - UKR','Y','Y','UA','UKR',49.8125,23.9561); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LYC','Lycksele Airport','LYCKSELE - SWE','Y','Y','SE','SWE',64.548302,18.7162); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LYH','Lynchburg Regional Preston Glenn Field','LYNCHBURG, VA - USA','Y','Y','US','USA',37.326698303222656,-79.20040130615234); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NAS','Lynden Pindling International Airport','NASSAU - BHS','Y','Y','BS','BHS',25.039,-77.466202); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LYS','Lyon Saint-Exupéry Airport','LYON - FRA','Y','Y','FR','FRA',45.725556,5.081111); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LZC','Lázaro Cárdenas Airport','LAZARO CARDENAS - MEX','Y','Y','MX','MEX',18.0016994476,-102.221000671); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DKR','Léopold Sédar Senghor International Airport','DAKAR - SEN','Y','Y','SN','SEN',14.7397,-17.4902); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MVB','M''Vengue El Hadj Omar Bongo Ondimba International Airport','FRANCEVILLE - GAB','Y','Y','GA','GAB',-1.656159996986389,13.4379997253418); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BTS','M. R. Štefánik Airport','BRATISLAVA - SVK','Y','Y','SK','SVK',48.17020034790039,17.21269989013672); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MCH','MACHALA - ECU','MACHALA - ECU','Y','Y','EC','ECU',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MMA','MALMO - SWE','MALMO - SWE','Y','N','SE','SWE',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MKT','MANKATO - USA','MANKATO - USA','Y','Y','US','USA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MBS','MBS International Airport','SAGINAW, MI - USA','Y','Y','US','USA',43.532902,-84.079597); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MIL','MILAN - ITA','MILAN - ITA','Y','N','IT','ITA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MPK','MOKPO - KOR','MOKPO - KOR','Y','Y','KR','KOR',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YMQ','MONTREAL QC - CAN','MONTREAL QC - CAN','Y','N','CA','CAN',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YVA','MORONI - COM','MORONI - COM','Y','Y','KM','COM',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MOW','MOSCOW - RUS','MOSCOW - RUS','Y','N','RU','RUS',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MVN','MT VERNON - USA','MT VERNON - USA','Y','Y','US','USA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MLH','MULHOUSE - FRA','MULHOUSE - FRA','Y','Y','FR','FRA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MST','Maastricht Aachen Airport','MAASTRICHT - NLD','Y','Y','NL','NLD',50.911701,5.77014); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MCP','Macapá - Alberto Alcolumbre International Airport','MACAPA - BRA','Y','Y','BR','BRA',0.050664,-51.072201); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MFM','Macau International Airport','MACAO - MAC','Y','Y','MO','MAC',22.149599,113.592003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MKY','Mackay Airport','MACKAY - AUS','Y','Y','AU','AUS',-21.170816,149.182588); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CEB','Mactan Cebu International Airport','CEBU - PHL','Y','Y','PH','PHL',10.307499885559,123.97899627686); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FNC','Madeira International Airport Cristiano Ronaldo','FUNCHAL - PRT','Y','Y','PT','PRT',32.697899,-16.7745); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IXM','Madurai Airport','MADURAI - IND','Y','Y','IN','IND',9.83450984955,78.09339904790001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CEI','Mae Fah Luang - Chiang Rai International Airport','CHIANG RAI - THA','Y','Y','TH','THA',19.952299,99.882896); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MFA','Mafia Airport','MAFIA - TZA','Y','Y','TZ','TZA',-7.917478,39.668502); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UDR','Maharana Pratap Airport','UDAIPUR - IND','Y','Y','IN','IND',24.617700576799997,73.89610290530001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EUG','Mahlon Sweet Field','EUGENE, OR - USA','Y','Y','US','USA',44.12459945678711,-123.21199798583984); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MIU','Maiduguri International Airport','MAIDUGURI - NGA','Y','Y','NG','NGA',11.855299949645996,13.08090019226074); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MCX','Makhachkala Uytash International Airport','MAKHACHKALA - RUS','Y','Y','RU','RUS',42.816799,47.652302); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MKU','Makokou Airport','MAKOKOU - GAB','Y','Y','GA','GAB',0.579210996627808,12.89089965820313); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SSG','Malabo Airport','MALABO - GNQ','Y','Y','GQ','GNQ',3.755270004272461,8.70872020721436); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MKZ','Malacca Airport','MALACCA - MYS','Y','Y','MY','MYS',2.2633600235,102.251998901); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MAK','Malakal Airport','MALAKAL - SDN','Y','Y','SS','SDN',9.55897,31.652201); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MYD','Malindi Airport','MALINDI - KEN','Y','Y','KE','KEN',-3.229310035705566,40.10169982910156); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KAN','Mallam Aminu International Airport','KANO - NGA','Y','Y','NG','NGA',12.0476,8.52462); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MLA','Malta International Airport','MALTA - MLT','Y','Y','MT','MLT',35.857498,14.4775); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('USH','Malvinas Argentinas Airport','USHUAIA - ARG','Y','Y','AR','ARG',-54.8433,-68.2958); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MLE','Malé International Airport','MALE - MDV','Y','Y','MV','MDV',4.191830158233643,73.52909851074219); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MJC','Man Airport','MAN - CIV','Y','Y','CI','CIV',7.272069931030273,-7.58735990524292); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TEU','Manapouri Airport','TE ANAU - NZL','Y','Y','NZ','NZL',-45.53310012817383,167.64999389648438); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FRU','Manas International Airport','BISHKEK - KGZ','Y','Y','KG','KGZ',43.0612983704,74.4776000977); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MAN','Manchester Airport','MANCHESTER - GBR','Y','Y','UK','GBR',53.349375,-2.279521); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MHT','Manchester-Boston Regional Airport','MANCHESTER, NH - USA','Y','Y','US','USA',42.932598,-71.435699); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LAU','Manda Airport','LAMU - KEN','Y','Y','KE','KEN',-2.252431,40.912892); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MDL','Mandalay International Airport','MANDALAY - MMR','Y','Y','MM','MMR',21.702199935913086,95.97789764404297); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IXE','Mangalore International Airport','MANGALORE - IND','Y','Y','IN','IND',12.9612998962,74.8900985718); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MHK','Manhattan Regional Airport','MANHATTAN, KS - USA','Y','Y','US','USA',39.14099884033203,-96.6707992553711); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MBL','Manistee County Blacker Airport','MANISTEE - USA','Y','Y','US','USA',44.272738,-86.251945); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AJY','Mano Dayak International Airport','AGADES - NER','Y','Y','NE','NER',16.965999603271484,8.00010967254639); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LAP','Manuel Márquez de León International Airport','LA PAZ - MEX','Y','Y','MX','MEX',24.072700500499998,-110.361999512); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MPM','Maputo Airport','MAPUTO - MOZ','Y','Y','MZ','MOZ',-25.920799,32.572601); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BAY','Maramure? International Airport','BAIA MARE - ROU','Y','Y','RO','ROU',47.660598,23.467252); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AOI','Marche Airport','ANCONA - ITA','Y','Y','IT','ITA',43.616299,13.3623); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SLZ','Marechal Cunha Machado International Airport','SAO LUIZ - BRA','Y','Y','BR','BRA',-2.58536,-44.2341); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CGB','Marechal Rondon Airport','CUIABA - BRA','Y','Y','BR','BRA',-15.6529,-56.116699); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CBQ','Margaret Ekpo International Airport','CALABAR - NGA','Y','Y','NG','NGA',4.976019859313965,8.34720039367676); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MGH','Margate Airport','MARGATE - ZAF','Y','Y','ZA','ZAF',-30.8574008942,30.343000412); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MBX','Maribor Airport','MARILBOR - SVN','Y','Y','SI','SVN',46.4799,15.6861); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MHQ','Mariehamn Airport','MARIEHAMN - FIN','Y','Y','FI','FIN',60.1222,19.898199); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MRQ','Marinduque Airport','MARINDUQUE - PHL','Y','Y','PH','PHL',13.361000061035156,121.82599639892578); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CUE','Mariscal Lamar Airport','CUENCA - ECU','Y','Y','EC','ECU',-2.88947,-78.984398); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UIO','Mariscal Sucre International Airport','QUITO - ECU','Y','Y','EC','ECU',-0.129166666667,-78.3575); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MUH','Marsa Matruh Airport','MERSA MATRUH - EGY','Y','Y','EG','EGY',31.325399,27.221701); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MRS','Marseille Provence Airport','MARSEILLE - FRA','Y','Y','FR','FRA',43.439271922,5.22142410278); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MAJ','Marshall Islands International Airport','MAJURO - MHL','Y','Y','MH','MHL',7.064760208129883,171.27200317382812); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MVY','Martha''s Vineyard Airport','VINEYARD HAVEN, MA - USA','Y','Y','US','USA',41.3931007385,-70.6143035889); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SLA','Martin Miguel De Guemes International Airport','SALTA - ARG','Y','Y','AR','ARG',-24.856000900299996,-65.4861984253); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FDF','Martinique Aimé Césaire International Airport','FT DE FRANCE - MTQ','Y','Y','MQ','MTQ',14.591,-61.003201); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LSQ','María Dolores Airport','LOS ANGELES - CHL','Y','Y','CL','CHL',-37.40169906616211,-72.42539978027344); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MHD','Mashhad International Airport','MASHAD - IRN','Y','Y','IR','IRN',36.235198974609375,59.64099884033203); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MCW','Mason City Municipal Airport','MASON CITY, IA - USA','Y','Y','US','USA',43.157799,-93.331299); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MSS','Massena International Airport Richards Field','MASSENA, NY - USA','Y','Y','US','USA',44.936157,-74.844304); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IPC','Mataveri Airport','EASTER ISLAND - CHL','Y','Y','CL','CHL',-27.1648006439,-109.42199707); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PEI','Matecaña International Airport','PEREIRA - COL','Y','Y','CO','COL',4.81267,-75.7395); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MTS','Matsapha Airport','MANZINI - SWZ','Y','Y','SZ','SWZ',-26.528999,31.307501); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MYJ','Matsuyama Airport','MATSUYAMA - JPN','Y','Y','JP','JPN',33.82720184326172,132.6999969482422); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MUB','Maun Airport','MAUN - BWA','Y','Y','BW','BWA',-19.97260093688965,23.43110084533691); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AVI','Maximo Gomez Airport','CIEGO DE AVILA - CUB','Y','Y','CU','CUB',22.027099609375,-78.78959655761719); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BZV','Maya-Maya Airport','BRAZZAVILLE - COG','Y','Y','CG','COG',-4.251699924468994,15.25300025939941); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('STD','Mayor Buenaventura Vivas International Airport','SANTO DOMINGO - VEN','Y','Y','VE','VEN',7.56538,-72.035103); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MYB','Mayumba Airport','MAYOUMBA - GAB','Y','Y','GA','GAB',-3.458372,10.676539); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MDK','Mbandaka Airport','MBANDAKA - COD','Y','Y','CD','COD',0.0226000007242,18.2887001038); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MJM','Mbuji Mayi Airport','MBUJI MAYI - COD','Y','Y','CD','COD',-6.121240139010001,23.5690002441); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MCK','Mc Cook Ben Nelson Regional Airport','MCCOOK, NE - USA','Y','Y','US','USA',40.20629883,-100.5920029); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MFE','McAllen Miller International Airport','MCALLEN, TX - USA','Y','Y','US','USA',26.176141,-98.237965); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LAS','McCarran International Airport','LAS VEGAS NV - USA','Y','Y','US','USA',36.08010101,-115.1520004); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CLD','McClellan-Palomar Airport','CARISBAD - USA','Y','Y','US','USA',33.1283,-117.279999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TYS','McGhee Tyson Airport','KNOXVILLE, TN - USA','Y','Y','US','USA',35.811001,-83.994003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MKL','McKellar-Sipes Regional Airport','JACKSON, TN - USA','Y','Y','US','USA',35.599899,-88.915604); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BFL','Meadows Field','BAKERSFIELD, CA - USA','Y','Y','US','USA',35.433601,-119.056999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YXH','Medicine Hat Regional Airport','MEDICINE HAT - CAN','Y','Y','CA','CAN',50.018902,-110.721001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('THR','Mehrabad International Airport','TEHRAN - IRN','Y','Y','IR','IRN',35.68920135498047,51.31340026855469); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MXZ','Meizhou Meixian Changgangji International Airport','MEIXIAN - CHN','Y','Y','CN','CHN',24.263425,116.097857); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MEL','Melbourne International Airport','MELBOURNE VI - AUS','Y','Y','AU','AUS',-37.673302,144.843002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MLB','Melbourne Orlando International Airport','MELBOURNE, FL - USA','Y','Y','US','USA',28.1028,-80.645302); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MLN','Melilla Airport','MELILLA - ESP','Y','Y','ES','ESP',35.2798,-2.95626); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MMB','Memanbetsu Airport','MEMANBETSU - JPN','Y','Y','JP','JPN',43.8805999756,144.164001465); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MEM','Memphis International Airport','MEMPHIS, TN - USA','Y','Y','US','USA',35.04240036010742,-89.97669982910156); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RAK','Menara Airport','MARRAKECH - MAR','Y','Y','MA','MAR',31.606899261499997,-8.03629970551); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MAH','Menorca Airport','MENOREA - ESP','Y','Y','ES','ESP',39.862598,4.21865); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BLF','Mercer County Airport','PRINCETON / BLUEFIELD, WV - USA','Y','Y','US','USA',37.295799255371094,-81.20770263671875); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CDV','Merle K (Mudhole) Smith Airport','CORDOVA, AK - USA','Y','Y','US','USA',60.491798,-145.477997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OAK','Metropolitan Oakland International Airport','OAKLAND, CA - USA','Y','Y','US','USA',37.721298,-122.221001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ETZ','Metz-Nancy-Lorraine Airport','METZ/NANCY - FRA','Y','Y','FR','FRA',48.9821014404,6.25131988525); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MFU','Mfuwe Airport','MFUWE - ZMB','Y','Y','ZM','ZMB',-13.258899688720703,31.93659973144531); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MIA','Miami International Airport','MIAMI FL - USA','Y','Y','US','USA',25.79319953918457,-80.29060363769531); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GLH','Mid Delta Regional Airport','GREENVILLE, MS - USA','Y','Y','US','USA',33.4828987121582,-90.98560333251953); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PKB','Mid Ohio Valley Regional Airport','PARKERSBURG, WV - USA','Y','Y','US','USA',39.34510040283203,-81.43920135498047); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MAF','Midland International Airport','MIDLAND, TX - USA','Y','Y','US','USA',31.9424991607666,-102.2020034790039); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CND','Mihail Kog?lniceanu International Airport','CONSTANTA - ROU','Y','Y','RO','ROU',44.36220169067383,28.48830032348633); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MIK','Mikkeli Airport','MIKKELI - FIN','Y','Y','FI','FIN',61.6866,27.201799); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JMK','Mikonos Airport','MYKONOS - GRC','Y','Y','GR','GRC',37.43510055541992,25.34810066223145); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MLO','Milos Airport','MILOS - GRC','Y','Y','GR','GRC',36.696899,24.4769); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PDG','Minangkabau International Airport','PADANG - IDN','Y','Y','ID','IDN',-0.786917,100.280998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MTT','Minatitlán/Coatzacoalcos National Airport','MINATITLAN - MEX','Y','Y','MX','MEX',18.1033992767,-94.58070373540001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MRV','Mineralnyye Vody Airport','MINERAINYE VODY - RUS','Y','Y','RU','RUS',44.225101470947266,43.08190155029297); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NVT','Ministro Victor Konder International Airport','NAVEGANTES - BRA','Y','Y','BR','BRA',-26.879431,-48.650979); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MSP','Minneapolis–Saint Paul International Airport / Wold–Chamberlain Field','MINNEAPOL MN - USA','Y','Y','US','USA',44.882,-93.221802); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MOT','Minot International Airport','MINOT, ND - USA','Y','Y','US','USA',48.2593994140625,-101.27999877929688); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MSQ','Minsk National Airport','MINSK - BLR','Y','Y','BY','BLR',53.888071,28.039964); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MYY','Miri Airport','MIRI - MYS','Y','Y','MY','MYS',4.322010040283203,113.98699951171875); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MSJ','Misawa Air Base / Misawa Airport','MISAWA AB - JPN','Y','Y','JP','JPN',40.703201,141.367996); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MRA','Misratah Airport','MISURATA - LBY','Y','Y','LY','LBY',32.325000762939,15.0609998703); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MSO','Missoula International Airport','MISSOULA, MT - USA','Y','Y','US','USA',46.91630173,-114.0910034); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MHE','Mitchell Municipal Airport','MITCHELL, SD - USA','Y','Y','US','USA',43.774799346900004,-98.03859710690001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MZC','Mitzic Airport','MITZIC - GAB','Y','Y','GA','GAB',0.782999992370606,11.55000019073486); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MMY','Miyako Airport','MIYAKE JIMA - JPN','Y','Y','JP','JPN',24.782800674399997,125.294998169); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KMI','Miyazaki Airport','MIYAZAKI - JPN','Y','Y','JP','JPN',31.877199173,131.449005127); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MFF','Moanda Airport','MOANDA - GAB','Y','Y','GA','GAB',-1.53299999237,13.2670001984); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MOB','Mobile Regional Airport','MOBILE, AL - USA','Y','Y','US','USA',30.6912,-88.242798); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MOD','Modesto City Co-Harry Sham Field','MAQUINCHAO - USA','Y','Y','US','USA',37.625801,-120.954002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BKO','Modibo Keita International Airport','BAMAKO - MLI','Y','Y','ML','MLI',12.5335,-7.94994); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MJD','Moenjodaro Airport','MOHENJODARO - PAK','Y','Y','PK','PAK',27.3351993560791,68.14309692382812); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CZL','Mohamed Boudiaf International Airport','CONSTANTINE - DZA','Y','Y','DZ','DZA',36.2760009765625,6.62038993835449); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MBA','Moi International Airport','MOMBASA - KEN','Y','Y','KE','KEN',-4.03483,39.5942); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MOL','Molde Airport, Årø','MOLDE - NOR','Y','Y','NO','NOR',62.744701,7.2625); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MKK','Molokai Airport','MOLOKAI, HI - USA','Y','Y','US','USA',21.152901,-157.095993); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MIR','Monastir Habib Bourguiba International Airport','MONASTIR - TUN','Y','Y','TN','TUN',35.75809860229492,10.75469970703125); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MBE','Monbetsu Airport','MONBETSU - JPN','Y','Y','JP','JPN',44.303901672399995,143.404006958); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MYZ','Monkey Bay Airport','MONKEY BAY - MWI','Y','Y','MW','MWI',-14.083600044299999,34.9197006226); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BMG','Monroe County Airport','BLOOMINGTON, IN - USA','Y','Y','US','USA',39.145999908447266,-86.61669921875); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MLU','Monroe Regional Airport','MONROE, LA - USA','Y','Y','US','USA',32.510899,-92.037697); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SAL','Monseñor Óscar Arnulfo Romero International Airport','SAN SALVADOR - SLV','Y','Y','SV','SLV',13.4409,-89.055702); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YYY','Mont Joli Airport','MONT JOLI - CAN','Y','Y','CA','CAN',48.60860061645508,-68.20809936523438); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MGM','Montgomery Regional (Dannelly Field) Airport','MONTGOMERY, AL - USA','Y','Y','US','USA',32.300598,-86.393997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MPL','Montpellier-Méditerranée Airport','MONTPELLIER - FRA','Y','Y','FR','FRA',43.57619857788086,3.96301007270813); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MTJ','Montrose Regional Airport','MONTROSE, CO - USA','Y','Y','US','USA',38.509799957300004,-107.893997192); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MZI','Mopti Ambodédjo International Airport','MOPTI - MLI','Y','Y','ML','MLI',14.5128,-4.07956); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MXX','Mora Airport','MORA - SWE','Y','Y','SE','SWE',60.957901,14.5114); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MGW','Morgantown Municipal Walter L. Bill Hart Field','MORGANTOWN, WV - USA','Y','Y','US','USA',39.64289856,-79.91629791); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HNA','Morioka Hanamaki Airport','MORIOLKA - JPN','Y','Y','JP','JPN',39.4286,141.134995); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MSU','Moshoeshoe I International Airport','MASERU - LSO','Y','Y','LS','LSO',-29.462299346923828,27.55249977111816); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OMO','Mostar International Airport','MOSTAR - BIH','Y','Y','BA','BIH',43.282901763916016,17.84589958190918); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MZP','Motueka Airport','MOTUEKA - NZL','Y','Y','NZ','NZL',-41.12329864501953,172.98899841308594); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MJL','Mouilla Ville Airport','MOUILA - GAB','Y','Y','GA','GAB',-1.845139980316162,11.05669975280762); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ERH','Moulay Ali Cherif Airport','ERRACHIDIA - MAR','Y','Y','MA','MAR',31.9475002289,-4.39833021164); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MON','Mount Cook Airport','MOUNT COOK - NZL','Y','Y','NZ','NZL',-43.76499938964844,170.13299560546875); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FSZ','Mount Fuji Shizuoka Airport','SHIZUOKA - JPN','Y','Y','JP','JPN',34.796043,138.187752); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ISA','Mount Isa Airport','MOUNT ISA - AUS','Y','Y','AU','AUS',-20.663900375399997,139.488998413); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MYW','Mtwara Airport','MTWARA - TZA','Y','Y','TZ','TZA',-10.336204,40.181997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MWX','Muan International Airport','MUAN - KOR','Y','Y','KR','KOR',34.991406,126.382814); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MDG','Mudanjiang Hailang International Airport','MUDANJIANG - CHN','Y','Y','CN','CHN',44.5241012573,129.569000244); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MUX','Multan International Airport','MULTAN - PAK','Y','Y','PK','PAK',30.20319938659668,71.41909790039062); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MUC','Munich Airport','MUNICH - DEU','Y','Y','DE','DEU',48.353802,11.7861); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MMK','Murmansk Airport','MURMANSK - RUS','Y','Y','RU','RUS',68.78170013427734,32.75080108642578); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EKA','Murray Field','EUREKA, CA - USA','Y','Y','US','USA',40.803398132299996,-124.112998962); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LOS','Murtala Muhammed International Airport','LAGOS - NGA','Y','Y','NG','NGA',6.577370166778565,3.32116007804871); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MCT','Muscat International Airport','MUSCAT - OMN','Y','Y','OM','OMN',23.593299865722656,58.28440093994141); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MKG','Muskegon County Airport','MUSKEGON, MI - USA','Y','Y','US','USA',43.169498,-86.238197); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MUZ','Musoma Airport','MUSOMA - TZA','Y','Y','TZ','TZA',-1.503,33.8021); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MWZ','Mwanza Airport','MWANZA - TZA','Y','Y','TZ','TZA',-2.4444899559021,32.93270111083984); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MYR','Myrtle Beach International Airport','MYRTLE BEACH, SC - USA','Y','Y','US','USA',33.6796989441,-78.9282989502); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MJT','Mytilene International Airport','MYTILENE - GRC','Y','Y','GR','GRC',39.0567016602,26.5983009338); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZZU','Mzuzu Airport','MZUZU - MWI','Y','Y','MW','MWI',-11.444700241088867,34.01179885864258); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AGP','Málaga-Costa del Sol Airport','MALAGA - ESP','Y','Y','ES','ESP',36.6749,-4.49911); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MOC','Mário Ribeiro Airport','MONTES CLAROS - BRA','Y','Y','BR','BRA',-16.706919,-43.818901); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UBA','Mário de Almeida Franco Airport','UBERABA - BRA','Y','Y','BR','BRA',-19.764722824097,-47.966110229492); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FMO','Münster Osnabrück Airport','MUNSTER - DEU','Y','Y','DE','NLD',52.134602,7.68483); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NDJ','N''Djamena International Airport','NDJAMENA - TCD','Y','Y','TD','TCD',12.1337,15.034); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NGE','N''Gaoundéré Airport','NGAOUNDERE - CMR','Y','Y','CM','CMR',7.357009887695313,13.55920028686523); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NYC','NEW YORK NY - USA','NEW YORK NY - USA','Y','N','US','USA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NHA','NHA TRANG - VNM','NHA TRANG - VNM','Y','Y','VN','VNM',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NIC','NICOSIA - CYP','NICOSIA - CYP','Y','Y','CY','CYP',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NAN','Nadi International Airport','NADI - FJI','Y','Y','FJ','FJI',-17.755399703979492,177.4429931640625); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NDR','Nador International Airport','NADOR - MAR','Y','Y','MA','MAR',34.988800048799995,-3.0282099247); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NGS','Nagasaki Airport','NAGASAKI - JPN','Y','Y','JP','JPN',32.916900634799994,129.914001465); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OKA','Naha Airport / JASDF Naha Air Base','OKINAWA - JPN','Y','Y','JP','JPN',26.195801,127.646004); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EAM','Najran Domestic Airport','NELRAN - SAU','Y','Y','SA','SAU',17.611401,44.419201); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SHB','Nakashibetsu Airport','NAKASHIBETSU - JPN','Y','Y','JP','JPN',43.5774993896,144.960006714); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('APL','Nampula Airport','NAMPULA - MOZ','Y','Y','MZ','MOZ',-15.105600357055664,39.28179931640625); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YCD','Nanaimo Airport','NANAIMO - CAN','Y','Y','CA','CAN',49.05497,-123.869863); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KHN','Nanchang Changbei International Airport','NANCHANG - CHN','Y','Y','CN','CHN',28.864815,115.90271); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NAO','Nanchong Gaoping Airport','NANCHONG - CHN','Y','Y','CN','CHN',30.79545,106.1626); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NKG','Nanjing Lukou International Airport','NANJING - CHN','Y','Y','CN','CHN',31.735032,118.865949); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SHM','Nanki Shirahama Airport','SHIRAHAMA - JPN','Y','Y','JP','JPN',33.6622009277,135.363998413); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NNG','Nanning Wuxu Airport','NANNING - CHN','Y','Y','CN','CHN',22.608299,108.171997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WUS','Nanping Wuyishan Airport','WUYISHAN - CHN','Y','Y','CN','CHN',27.7019,118.000999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NTE','Nantes Atlantique Airport','NANTES - FRA','Y','Y','FR','FRA',47.153198242200006,-1.61073005199); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NTG','Nantong Airport','NANTONG - CHN','Y','Y','CN','CHN',32.0708007812,120.975997925); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ACK','Nantucket Memorial Airport','NANTUCKET, MA - USA','Y','Y','US','USA',41.25310135,-70.06020355); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NNY','Nanyang Jiangying Airport','NANYANG - CHN','Y','Y','CN','CHN',32.982696,112.617467); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NAP','Naples International Airport','NAPLES - ITA','Y','Y','IT','ITA',40.886002,14.2908); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('APF','Naples Municipal Airport','NAPLES, FL - USA','Y','Y','US','USA',26.1525993347,-81.7752990723); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NNM','Naryan Mar Airport','NARYAN-MAR - RUS','Y','Y','RU','RUS',67.63999938964844,53.12189865112305); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BNA','Nashville International Airport','NASHVILLE, TN - USA','Y','Y','US','USA',36.1245002746582,-86.6781997680664); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SUV','Nausori International Airport','SUVA - FJI','Y','Y','FJ','FJI',-18.04330062866211,178.5590057373047); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JNX','Naxos Apollon Airport','NAXOS - GRC','Y','Y','GR','GRC',37.0811,25.368099); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KDN','Ndende Airport','NDENDE - GAB','Y','Y','GA','GAB',-2.400000095367432,11.36699962615967); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FIH','Ndjili International Airport','KINSHASA - COD','Y','Y','CD','COD',-4.38575,15.4446); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NSN','Nelson Airport','NELSON - NZL','Y','Y','NZ','NZL',-41.298302,173.220993); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NLP','Nelspruit Airport','NEISPRUIT - ZAF','Y','Y','ZA','ZAF',-25.5,30.9137992859); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CCU','Netaji Subhash Chandra Bose International Airport','KOLKATA - IND','Y','Y','IN','IND',22.654699325561523,88.44670104980469); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ILG','New Castle Airport','WILMINGTON, DE - USA','Y','Y','US','USA',39.67869949,-75.60649872); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ISG','New Ishigaki Airport','ISHIGALKI - JPN','Y','Y','JP','JPN',24.396389,124.245); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NPL','New Plymouth Airport','NEW PLYMOUTH - NZL','Y','Y','NZ','NZL',-39.00859832763672,174.1790008544922); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SWF','New York Stewart International Airport','NEWBURGH, NY - USA','Y','Y','US','USA',41.504101,-74.104797); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NCL','Newcastle Airport','NEWCASTLE - GBR','Y','Y','UK','GBR',55.037498,-1.69167); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NTL','Newcastle Airport','NEWCASTLE - AUS','Y','Y','AU','AUS',-32.79499816894531,151.83399963378906); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PHF','Newport News Williamsburg International Airport','HAMPTON, VA - USA','Y','Y','US','USA',37.131901,-76.492996); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NQY','Newquay Cornwall Airport','NEWQUAY - GBR','Y','Y','UK','GBR',50.44060134887695,-4.99540996551514); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZGM','Ngoma Airport','NGOMA - ZMB','Y','Y','ZM','ZMB',-15.9658,25.9333); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DIS','Ngot Nzoungou Airport','LOUBOMO - COG','Y','Y','CG','COG',-4.20635,12.6599); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DPS','Ngurah Rai (Bali) International Airport','DENPASAR BALI - IDN','Y','Y','ID','IDN',-8.7481698989868,115.16699981689); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NCE','Nice-Côte d''Azur Airport','NICE - FRA','Y','Y','FR','FRA',43.6584014893,7.21586990356); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KIJ','Niigata Airport','NIIGATA - JPN','Y','Y','JP','JPN',37.9558982849,139.121002197); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NGB','Ningbo Lishe International Airport','NINGBO - CHN','Y','Y','CN','CHN',29.82670021057129,121.46199798583984); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MNL','Ninoy Aquino International Airport','MANILA - PHL','Y','Y','PH','PHL',14.5086,121.019997); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('INI','Nis Airport','NIS - SRB','Y','Y','RS','SRB',43.337299,21.853701); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NJC','Nizhnevartovsk Airport','NIZHNEVARTOVS - RUS','Y','Y','RU','RUS',60.94929885864258,76.48359680175781); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GOJ','Nizhny Novgorod Strigino International Airport','NIZHNY NOVGOR - RUS','Y','Y','RU','RUS',56.230098724365,43.784000396729); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ABV','Nnamdi Azikiwe International Airport','ABUJA - NGA','Y','Y','NG','NGA',9.006790161132812,7.26316976547241); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HAN','Noi Bai International Airport','HANOI - VNM','Y','Y','VN','VNM',21.221201,105.806999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OME','Nome Airport','NOME - USA','Y','Y','US','USA',64.51219940185547,-165.44500732421875); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NSK','Norilsk-Alykel Airport','NORILSK - RUS','Y','Y','RU','RUS',69.31109619140625,87.33219909667969); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KIN','Norman Manley International Airport','KINGSTON - JAM','Y','Y','JM','JAM',17.935699462890625,-76.7874984741211); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SJC','Norman Y. Mineta San Jose International Airport','SAN JOSE, CA - USA','Y','Y','US','USA',37.362598,-121.929001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NRK','Norrköping Airport','NORRKOPING - SWE','Y','Y','SE','SWE',58.586299896240234,16.25060081481934); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YYB','North Bay Jack Garland Airport','NORTH BAY - CAN','Y','Y','CA','CAN',46.363602,-79.422798); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CKB','North Central West Virginia Airport','CLARKSBURG, WV - USA','Y','Y','US','USA',39.2966003418,-80.2281036377); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LBF','North Platte Regional Airport Lee Bird Field','NORTH PLATTE, NE - USA','Y','Y','US','USA',41.12620163,-100.6839981); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GCC','Northeast Wyoming Regional Airport','GILLETTE, WY - USA','Y','Y','US','USA',44.3489,-105.539001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FNL','Northern Colorado Regional Airport','FORT COLLINS/LOVELAND, CO - USA','Y','Y','US','USA',40.448763,-105.011244); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MSL','Northwest Alabama Regional Airport','FLORENCE / MUSCLE SHOALS, AL - USA','Y','Y','US','USA',34.74530029,-87.61019897); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YXT','Northwest Regional Airport Terrace-Kitimat','TERRACE - CAN','Y','Y','CA','CAN',54.468498,-128.576009); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NWI','Norwich International Airport','NORWICH - GBR','Y','Y','UK','GBR',52.6758,1.28278); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NQT','Nottingham Airport','NOTTINGHAM - GBR','Y','Y','UK','GBR',52.919998,-1.07917); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NDB','Nouadhibou International Airport','NOUADHIBOU - MRT','Y','Y','MR','MRT',20.9330997467041,-17.03000068664551); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NKC','Nouakchott–Oumtounsy International Airport','NOUAKCHOTT - MRT','Y','Y','MR','MRT',18.31,-15.9697222); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GHA','Noumérat - Moufdi Zakaria Airport','GHARDAIA - DZA','Y','Y','DZ','DZA',32.38410186767578,3.79411005973816); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OVB','Novosibirsk Tolmachevo Airport','NOVOSIBIRSK - RUS','Y','Y','RU','RUS',55.019756,82.618675); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NUE','Nuremberg Airport','NUREMBERG - DEU','Y','Y','DE','DEU',49.498699,11.078056); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UYL','Nyala Airport','NYALA - SDN','Y','Y','SD','SDN',12.0535,24.9562); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EMN','Néma Airport','NEMA - MRT','Y','Y','MR','MRT',16.622,-7.3166); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FNI','Nîmes-Arles-Camargue Airport','NIMES - FRA','Y','Y','FR','FRA',43.75740051269531,4.4163498878479); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SHP','OINHUANGDAO - CHN','OINHUANGDAO - CHN','Y','Y','CN','CHN',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JNB','OR Tambo International Airport','JOHANNESBURG - ZAF','Y','Y','ZA','ZAF',-26.1392,28.246); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OSA','OSAKA - JPN','OSAKA - JPN','Y','N','JP','JPN',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OAM','Oamaru Airport','OAMARU - NZL','Y','Y','NZ','NZL',-44.970001220703125,171.08200073242188); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ONJ','Odate Noshiro Airport','ODATE NOSHIRO - JPN','Y','Y','JP','JPN',40.191898,140.371002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ODE','Odense Airport','ODENSE - DNK','Y','Y','DK','DNK',55.47669982910156,10.33090019226074); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ODS','Odessa International Airport','ODESSA - UKR','Y','Y','UA','UKR',46.4268,30.6765); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KEO','Odienne Airport','ODIENNE - CIV','Y','Y','CI','CIV',9.5,-7.56699991226196); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OGS','Ogdensburg International Airport','OGDENSBURG, NY - USA','Y','Y','US','USA',44.6819,-75.4655); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OHD','Ohrid St. Paul the Apostle Airport','OHRID - MKD','Y','Y','MK','MKD',41.18,20.7423); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OIT','Oita Airport','OITA - JPN','Y','Y','JP','JPN',33.479400634799994,131.736999512); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OKJ','Okayama Momotaro Airport','OKAYAMA - JPN','Y','Y','JP','JPN',34.756901,133.854996); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OKN','Okondja Airport','OKONDJA - GAB','Y','Y','GA','GAB',-0.665214002132416,13.67310047149658); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OLB','Olbia Costa Smeralda Airport','OLBIA - ITA','Y','Y','IT','ITA',40.898701,9.51763); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OMS','Omsk Central Airport','OMSK - RUS','Y','Y','RU','RUS',54.96699905395508,73.31050109863281); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ONT','Ontario International Airport','ONTARIO, CA - USA','Y','Y','US','USA',34.055999755859375,-117.60099792480469); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OMR','Oradea International Airport','ORADEA - ROU','Y','Y','RO','ROU',47.025299072265625,21.90250015258789); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ORN','Oran International Airport Ahmed Ben Bella','ORAN - DZA','Y','Y','DZ','DZA',35.623901,-0.621183); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ORL','Orlando Executive Airport','ORLANDO FL - USA','Y','Y','US','USA',28.5455,-81.332901); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OSI','Osijek Airport','OSIJEK - HRV','Y','Y','HR','HRV',45.4627,18.8102); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OSK','Oskarshamn Airport','OSKARSHAMN - SWE','Y','Y','SE','SWE',57.350498,16.497999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OSL','Oslo Airport, Gardermoen','OSLO - NOR','Y','Y','NO','NOR',60.193901,11.1004); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZYL','Osmany International Airport','SYLLNET - BGD','Y','Y','BD','BGD',24.963832,91.864843); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OSR','Ostrava Leos Janá?ek Airport','OSTRAVA - CZE','Y','Y','CZ','CZE',49.6963005065918,18.11109924316406); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OXB','Osvaldo Vieira International Airport','BISSAU - GNB','Y','Y','GW','GNB',11.894800186157227,-15.65369987487793); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AGV','Oswaldo Guevara Mujica Airport','ACARIGUA - VEN','Y','Y','VE','VEN',9.553375,-69.237869); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YOW','Ottawa Macdonald-Cartier International Airport','OTTAWA - CAN','Y','Y','CA','CAN',45.3224983215332,-75.66919708251953); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OTM','Ottumwa Regional Airport','OTTUMWA, IA - USA','Y','Y','US','USA',41.106368,-92.449837); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OUA','Ouagadougou Airport','OUAGADOUGOU - BFA','Y','Y','BF','BFA',12.3532,-1.51242); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OZZ','Ouarzazate Airport','OUARZAZATE - MAR','Y','Y','MA','MAR',30.9391002655,-6.90943002701); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OUL','Oulu Airport','OULU - FIN','Y','Y','FI','SWE',64.930099,25.354601); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FTX','Owando Airport','OWANDO - COG','Y','Y','CG','COG',-0.531350016593933,15.95009994506836); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GCM','Owen Roberts International Airport','GRAND CAYMAN - CYM','Y','Y','KY','CYM',19.292800903299998,-81.3576965332); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OWB','Owensboro Daviess County Airport','OWENSBORO, KY - USA','Y','Y','US','USA',37.74010086,-87.16680145); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OXR','Oxnard Airport','OXNARD / VENTURA, CA - USA','Y','Y','US','USA',34.200801849365,-119.20700073242); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OYE','Oyem Airport','OYERN - GAB','Y','Y','GA','GAB',1.543110013008118,11.58139991760254); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FRW','P G Matante Intl','FRANCISTOWN - BWA','Y','Y','BW','BWA',-21.15914,27.468545); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PAR','PARIS - FRA','PARIS - FRA','Y','N','FR','FRA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PLH','PLYMOUTH - GBR','PLYMOUTH - GBR','Y','Y','UK','GBR',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PAD','Paderborn Lippstadt Airport','PADERBORN - DEU','Y','Y','DE','DEU',51.614101409899995,8.61631965637); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FMY','Page Field','FORT MYERS, FL - USA','Y','Y','US','USA',26.58659935,-81.86329650879999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PGA','Page Municipal Airport','PAGE, AZ - USA','Y','Y','US','USA',36.92610168,-111.447998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PPG','Pago Pago International Airport','PAGO PAGO - ASM','Y','Y','AS','ASM',-14.331,-170.710007); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PLQ','Palanga International Airport','PALANGA - LTU','Y','Y','LT','LTU',55.973201751708984,21.09390068054199); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PBI','Palm Beach International Airport','WEST PALM BEACH, FL - USA','Y','Y','US','USA',26.68320083618164,-80.09559631347656); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PSP','Palm Springs International Airport','PALM SPRINGS, CA - USA','Y','Y','US','USA',33.8297,-116.507004); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PMI','Palma de Mallorca Airport','PALMA MALLORC - ESP','Y','Y','ES','ESP',39.551701,2.73881); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PMR','Palmerston North Airport','PALMERSTON NORTH - NZL','Y','Y','NZ','NZL',-40.32059860229492,175.61700439453125); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BGA','Palonegro Airport','BUCARAMANGA - COL','Y','Y','CO','COL',7.1265,-73.1848); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PNA','Pamplona Airport','PAMPLONE - ESP','Y','Y','ES','ESP',42.77,-1.64633); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EAT','Pangborn Memorial Airport','WENATCHEE, WA - USA','Y','Y','US','USA',47.3988990784,-120.207000732); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PNL','Pantelleria Airport','PANTELLERIA - ITA','Y','Y','IT','ITA',36.816502,11.9689); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PFO','Paphos International Airport','PAPHOS AIRPORT - CYP','Y','Y','CY','CYP',34.717999,32.485699); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PAS','Paros National Airport','PAROS - GRC','Y','Y','GR','GRC',37.020495,25.113195); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IXP','Pathankot Airport','PATHANKOT - IND','Y','Y','IN','IND',32.233611,75.634444); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PUF','Pau Pyrénées Airport','PAU - FRA','Y','Y','FR','FRA',43.380001068115234,-0.41861099004745); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PLN','Pellston Regional Airport of Emmet County Airport','PELLSTON, MI - USA','Y','Y','US','USA',45.57089996,-84.79669952); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PMA','Pemba Airport','PEMBA - TZA','Y','Y','TZ','TZA',-5.25726,39.811401); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('POL','Pemba Airport','PEMBA - MOZ','Y','Y','MZ','MOZ',-12.991762161254883,40.52401351928711); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PEN','Penang International Airport','PENANG - MYS','Y','Y','MY','MYS',5.297140121459961,100.2770004272461); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PNS','Pensacola International Airport','PENSACOLA, FL - USA','Y','Y','US','USA',30.4734,-87.1866); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YYF','Penticton Airport','PENTICTON - CAN','Y','Y','CA','CAN',49.46310043334961,-119.60199737548828); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IBE','Perales Airport','LBAGUE - COL','Y','Y','CO','COL',4.42161,-75.1333); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FLR','Peretola Airport','FLORENCE - ITA','Y','Y','IT','ITA',43.810001,11.2051); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PEE','Perm International Airport','PERM - RUS','Y','Y','RU','RUS',57.914501,56.021198); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PGF','Perpignan-Rivesaltes (Llabanère) Airport','PERPIGNAN - FRA','Y','Y','FR','FRA',42.74039840698242,2.87067008018494); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PER','Perth International Airport','PERTH WA - AUS','Y','Y','AU','AUS',-31.94029998779297,115.96700286865234); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PEG','Perugia San Francesco d''Assisi – Umbria International Airport','PERUGIA - ITA','Y','Y','IT','ITA',43.095901,12.5132); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PEW','Peshawar International Airport','PESHAWAR - PAK','Y','Y','PK','PAK',33.993900299072266,71.51460266113281); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PSG','Petersburg James A Johnson Airport','PETERSBURG, AK - USA','Y','Y','US','USA',56.80170059,-132.9450073); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PES','Petrozavodsk Airport','PETROZAVODSK - RUS','Y','Y','RU','RUS',61.88520050048828,34.15470123291016); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PHL','Philadelphia International Airport','PHILADELPH PA - USA','Y','Y','US','USA',39.87189865112305,-75.24109649658203); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TOP','Philip Billard Municipal Airport','TOPEKA, KS - USA','Y','Y','US','USA',39.069899,-95.622606); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BZE','Philip S. W. Goldson International Airport','BELIZE - BLZ','Y','Y','BZ','BLZ',17.539100646972656,-88.30819702148438); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PHS','Phitsanulok Airport','PHITSANULOK - THA','Y','Y','TH','THA',16.782899856567383,100.27899932861328); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PNH','Phnom Penh International Airport','PHNOM PENH - KHM','Y','Y','KH','KHM',11.5466,104.844002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PHX','Phoenix Sky Harbor International Airport','PHOENIX, AZ - USA','Y','Y','US','USA',33.435302,-112.005905); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HUI','Phu Bai International Airport','HUE - VNM','Y','Y','VN','VNM',16.401501,107.703003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UIH','Phu Cat Airport','QUI NHON - VNM','Y','Y','VN','VNM',13.955,109.042); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PQC','Phu Quoc International Airport','PHU QUOC - VNM','Y','Y','VN','VNM',10.1698,103.9931); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HKT','Phuket International Airport','PHUKET - THA','Y','Y','TH','THA',8.1132,98.316902); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('POS','Piarco International Airport','PORT OF SPAIN - TTO','Y','Y','TT','TTO',10.595399856567383,-61.33720016479492); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZAL','Pichoy Airport','VALDIVIA - CHL','Y','Y','CL','CHL',-39.6500015259,-73.0860977173); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PIX','Pico Airport','PICO (ILE) - PRT','Y','Y','PT','PRT',38.554298,-28.441299); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GSO','Piedmont Triad International Airport','GREENSBORO, NC - USA','Y','Y','US','USA',36.097801,-79.937302); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PIR','Pierre Regional Airport','PIERRE, SD - USA','Y','Y','US','USA',44.38270187,-100.2860031); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UTN','Pierre Van Ryneveld Airport','UPINGTON - ZAF','Y','Y','ZA','ZAF',-28.39909935,21.2602005005); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PZB','Pietermaritzburg Airport','PIETERMARITZBURG - ZAF','Y','Y','ZA','ZAF',-29.649000167799997,30.3987007141); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NTY','Pilanesberg International Airport','SUN CITY - ZAF','Y','Y','ZA','ZAF',-25.333799,27.173401); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RGL','Piloto Civil N. Fernández Airport','RIO GALLEGOS - ARG','Y','Y','AR','ARG',-51.6089,-69.3126); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FOR','Pinto Martins International Airport','FORTALEZA CE - BRA','Y','Y','BR','BRA',-3.77628,-38.5326); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PSA','Pisa International Airport','PISA - ITA','Y','Y','IT','ITA',43.683899,10.3927); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PTX','Pitalito Airport','PITALITO - COL','Y','Y','CO','COL',1.85777,-76.0857); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PGV','Pitt Greenville Airport','PITT-GREENVILLE, NC - USA','Y','Y','US','USA',35.6352005,-77.38529968); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PIT','Pittsburgh International Airport','PITTSBURGH PA - USA','Y','Y','US','USA',40.49150085,-80.23290253); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SLW','Plan De Guadalupe International Airport','SALTILLO - MEX','Y','Y','MX','MEX',25.54949951171875,-100.92900085449219); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ROV','Platov International Airport','ROSTOV - RUS','Y','Y','RU','RUS',47.493888,39.924722); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PBG','Plattsburgh International Airport','PLATTSBURGH, NY - USA','Y','Y','US','USA',44.650901794433594,-73.46810150146484); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZLO','Playa De Oro International Airport','MANZANILLO - MEX','Y','Y','MX','MEX',19.1448,-104.558998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PXU','Pleiku Airport','PLEIKU - VNM','Y','Y','VN','VNM',14.004500389099121,108.01699829101562); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PBZ','Plettenberg Bay Airport','PLETTENBERG BAY - ZAF','Y','Y','ZA','ZAF',-34.08816,23.328723); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PIH','Pocatello Regional Airport','POCATELLO, ID - USA','Y','Y','US','USA',42.9098014831543,-112.59600067138672); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TGD','Podgorica Airport / Podgorica Golubovci Airbase','PODGORICA - MNE','Y','Y','ME','MNE',42.359402,19.2519); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KPO','Pohang Airport (G-815/K-3)','POHANG - KOR','Y','Y','KR','KOR',35.987955,129.420383); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PNI','Pohnpei International Airport','POHNPEI - FSM','Y','Y','FM','FSM',6.985099792480469,158.20899963378906); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GND','Point Salines International Airport','GRENADA - GRD','Y','Y','GD','GRD',12.004199981689453,-61.78620147705078); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PTP','Pointe-à-Pitre Le Raizet International Airport','POINTE A PITR - GLP','Y','Y','GP','GLP',16.265301,-61.531799); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PIS','Poitiers-Biard Airport','POITIERS - FRA','Y','Y','FR','FRA',46.58769989013672,0.30666598677635); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PTG','Polokwane International Airport','PIETERSBURG - ZAF','Y','Y','ZA','ZAF',-23.845269,29.458615); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SLP','Ponciano Arriaga International Airport','SAN LUS POTOSI - MEX','Y','Y','MX','MEX',22.254299163800003,-100.930999756); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TAT','Poprad-Tatry Airport','TATRY/POPRAD - SVK','Y','Y','SK','SVK',49.073601,20.2411); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('POR','Pori Airport','PORI - FIN','Y','Y','FI','FIN',61.4617,21.799999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('POG','Port Gentil Airport','PORT GENTIL - GAB','Y','Y','GA','GAB',-0.711739003658295,8.75438022613525); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PHC','Port Harcourt International Airport','PORT HARCOURT - NGA','Y','Y','NG','NGA',5.015490055084229,6.94959020614624); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PHE','Port Hedland International Airport','PT HEDLAND WA - AUS','Y','Y','AU','AUS',-20.3777999878,118.625999451); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('POM','Port Moresby Jacksons International Airport','PORT MORESBY - PNG','Y','Y','PG','PNG',-9.443380355834961,147.22000122070312); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PSD','Port Said International Airport','PORT SAID - EGY','Y','Y','EG','EGY',31.2794,32.240002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PZU','Port Sudan New International Airport','PORT SUDAN - SDN','Y','Y','SD','SDN',19.4335994720459,37.23410034179688); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PDX','Portland International Airport','PORTLAND, OR - USA','Y','Y','US','USA',45.58869934,-122.5979996); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PWM','Portland International Jetport','PORTLAND, ME - USA','Y','Y','US','USA',43.646198,-70.309303); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PXO','Porto Santo Airport','PORTO SANTO - PRT','Y','Y','PT','PRT',33.0733985901,-16.3500003815); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BPS','Porto Seguro Airport','PORTO SEGURO - BRA','Y','Y','BR','BRA',-16.438426,-39.080584); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('POZ','Pozna?-?awica Airport','POZNAN - POL','Y','Y','PL','POL',52.421001,16.8263); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RAI','Praia International Airport','PRAIA - CPV','Y','Y','CV','CPV',14.924500465393066,-23.49349975585938); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IMP','Prefeito Renato Moreira Airport','IMPERATRIZ - BRA','Y','Y','BR','BRA',-5.53129,-47.459999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PRC','Prescott International Airport - Ernest A. Love Field','PRESCOTT, AZ - USA','Y','Y','US','USA',34.654499,-112.419998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PUQ','President Carlos Ibañez del Campo International Airport','PUNTA ARENAS - CHL','Y','Y','CL','CHL',-53.002602,-70.854599); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PVR','President Gustavo Díaz Ordaz International Airport','PUERTO VALLARTA - MEX','Y','Y','MX','MEX',20.680099,-105.253998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JPA','Presidente Castro Pinto International Airport','JOATO PESSOA - BRA','Y','Y','BR','BRA',-7.148691,-34.950554); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CPV','Presidente João Suassuna Airport','CAMPINA GRANDE - BRA','Y','Y','BR','BRA',-7.269662,-35.896057); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BSB','Presidente Juscelino Kubitschek International Airport','BRASILIA DF - BRA','Y','Y','BR','BRA',-15.869167,-47.920834); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DIL','Presidente Nicolau Lobato International Airport','DILI - TLS','Y','Y','TL','TLS',-8.54640007019,125.526000977); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PPB','Presidente Prudente Airport','PRESIDENTE PRUDENTE - BRA','Y','Y','BR','BRA',-22.1751,-51.424599); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PQI','Presque Isle International Airport','PRESQUE ISLE, ME - USA','Y','Y','US','USA',46.688999,-68.0448); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MED','Prince Mohammad Bin Abdulaziz Airport','MADINAH - SAU','Y','Y','SA','SAU',24.5534,39.705101); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SXM','Princess Juliana International Airport','ST MAARTEN - ANT','Y','Y','SX','ANT',18.041,-63.108898); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PRN','Priština Adem Jashari International Airport','PRISTINA - XKX','Y','Y','KO','XKX',42.5728,21.035801); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SJP','Prof. Eribelto Manoel Reino State Airport','SAP JOSE DO RIO PRETO - BRA','Y','Y','BR','BRA',-20.816600799599996,-49.40650177); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PPP','Proserpine Whitsunday Coast Airport','PROSERPINE - AUS','Y','Y','AU','AUS',-20.494416,148.553583); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PLS','Providenciales International Airport','PROVIDENCIALE - TCA','Y','Y','TC','TCA',21.773697,-72.268321); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZPC','Pucón Airport','PUCON - CHL','Y','Y','CL','CHL',-39.29280090332031,-71.91590118408203); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PUB','Pueblo Memorial Airport','PUEBLO, CO - USA','Y','Y','US','USA',38.289101,-104.497002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PXM','Puerto Escondido International Airport','PUERTO ESCONDIDO - MEX','Y','Y','MX','MEX',15.8769,-97.089103); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PPS','Puerto Princesa Airport','PUERTO PRINCESA - PHL','Y','Y','PH','PHL',9.742119789123535,118.75900268554688); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PUY','Pula Airport','PULA - HRV','Y','Y','HR','HRV',44.89350128173828,13.9222002029419); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LED','Pulkovo Airport','ST PETERSBURG - RUS','Y','Y','RU','RUS',59.80030059814453,30.26250076293945); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PUW','Pullman Moscow Regional Airport','PULLMAN - USA','Y','Y','US','USA',46.7439,-117.110001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PNQ','Pune Airport / Lohagaon Air Force Station','POONA - IND','Y','Y','IN','IND',18.5821,73.919701); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PUJ','Punta Cana International Airport','PUNTA CANA - DOM','Y','Y','DO','DOM',18.567399978599997,-68.36340332030001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LAF','Purdue University Airport','LAFAYETTE, IN - USA','Y','Y','US','USA',40.4123,-86.936897); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FNJ','Pyongyang Sunan International Airport','PYONGYANG - PRK','Y','Y','KP','PRK',39.224098,125.669998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PGX','Périgueux-Bassillac Airport','PERIGUEUX - FRA','Y','Y','FR','FRA',45.19810104370117,0.81555598974228); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KAC','Qamishli Airport','KAMESHLI - SYR','Y','Y','SY','SYR',37.020599,41.191399); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GSM','Qeshm International Airport','GHESHM - IRN','Y','Y','IR','IRN',26.754639,55.902353); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TAO','Qingdao Jiaodong International Airport','QINGDAO - CHN','Y','Y','CN','CHN',36.361953,120.088171); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NDG','Qiqihar Sanjiazi Airport','QIQIHAR - CHN','Y','Y','CN','CHN',47.239601135253906,123.91799926757812); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IHN','Qishn Airport','OISHN - YEM','Y','Y','YE','YEM',15.417,51.682999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MLI','Quad City International Airport','MOLINE, IL - USA','Y','Y','US','USA',41.448502,-90.5075); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JJN','Quanzhou Jinjiang International Airport','JINJIANG - CHN','Y','Y','CN','CHN',24.7964,118.589996); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LAD','Quatro de Fevereiro International Airport','LUANDA - AGO','Y','Y','AO','AGO',-8.85837,13.2312); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YQB','Quebec Jean Lesage International Airport','QUEBEC - CAN','Y','Y','CA','CAN',46.7911,-71.393303); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AMM','Queen Alia International Airport','AMMAN - JOR','Y','Y','JO','JOR',31.7226009369,35.9931983948); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AUA','Queen Beatrix International Airport','ARUBA - ABW','Y','Y','AW','ABW',12.5014,-70.015198); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZQN','Queenstown International Airport','QUEENSTOWN - NZL','Y','Y','NZ','NZL',-45.021099,168.738998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('QRO','Querétaro Intercontinental Airport','QUERETARO - MEX','Y','Y','MX','MEX',20.6173,-100.185997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YQZ','Quesnel Airport','OUESNEL - CAN','Y','Y','CA','CAN',53.026100158691406,-122.51000213623047); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UET','Quetta International Airport','QUETTA - PAK','Y','Y','PK','PAK',30.251399993896484,66.93779754638672); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NLD','Quetzalcóatl International Airport','NUEVO LAREDO - MEX','Y','Y','MX','MEX',27.443899,-99.570503); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UIP','Quimper-Cornouaille Airport','QUIMPER - FRA','Y','Y','FR','FRA',47.974998474121094,-4.16778993606567); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UIN','Quincy Regional Baldwin Field','QUINCY MUNI, IL - USA','Y','Y','US','USA',39.94269943,-91.19460297); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JUZ','Quzhou Airport','JUZHOU - CHN','Y','Y','CN','CHN',28.965799,118.899002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RIO','R JANEIRO RJ - BRA','R JANEIRO RJ - BRA','Y','N','BR','BRA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('REK','REYKJAVIK - ISL','REYKJAVIK - ISL','Y','N','IS','ISL',null,null); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ROM','ROME - ITA','ROME - ITA','Y','N','IT','ITA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AAE','Rabah Bitat Airport','ANNABA - DZA','Y','Y','DZ','DZA',36.826781,7.81334); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RBA','Rabat-Salé Airport','RABAT - MAR','Y','Y','MA','MAR',34.051498,-6.75152); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CTG','Rafael Nuñez International Airport','CARTAGENA - COL','Y','Y','CO','COL',10.4424,-75.513); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RAH','Rafha Domestic Airport','RAFHA - SAU','Y','Y','SA','SAU',29.626399993896484,43.4906005859375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BHO','Raja Bhoj International Airport','BHOPAL - IND','Y','Y','IN','IND',23.2875003815,77.3374023438); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HYD','Rajiv Gandhi International Airport','HYDERABAD - IND','Y','Y','IN','IND',17.231318,78.429855); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RAJ','Rajkot Airport','RAIKOT - IND','Y','Y','IN','IND',22.3092002869,70.77950286869999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BKW','Raleigh County Memorial Airport','BECKLEY, WV - USA','Y','Y','US','USA',37.787300109899995,-81.1241989136); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RDU','Raleigh Durham International Airport','RALEIGH NC - USA','Y','Y','US','USA',35.877601623535156,-78.7874984741211); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OTZ','Ralph Wien Memorial Airport','KOTZEBUE - USA','Y','Y','US','USA',66.88469696,-162.598999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SAP','Ramón Villeda Morales International Airport','SAN PEDRO SUL - HND','Y','Y','HN','HND',15.4526,-87.923599); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HIB','Range Regional Airport','HIBBING / CHISHOLM, MN - USA','Y','Y','US','USA',47.3866,-92.838997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RAP','Rapid City Regional Airport','RAPID CITY, SD - USA','Y','Y','US','USA',44.0452995300293,-103.05699920654297); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RAR','Rarotonga International Airport','RAROTONGA - COK','Y','Y','CK','COK',-21.2026996613,-159.805999756); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RKT','Ras Al Khaimah International Airport','RAS AL KHAIMA - ARE','Y','Y','AE','ARE',25.613500595092773,55.93880081176758); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RDG','Reading Regional Airport (Carl A Spaatz Field)','READING, PA - USA','Y','Y','US','USA',40.378502,-75.965202); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PVO','Reales Tamarindos Airport','PORTOVIEJO - ECU','Y','Y','EC','ECU',-1.041650056838989,-80.47219848632812); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('REC','Recife/Guararapes - Gilberto Freyre International Airport','RECIFE PE - BRA','Y','Y','BR','BRA',-8.125984,-34.923316); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RDD','Redding Municipal Airport','REDDING, CA - USA','Y','Y','US','USA',40.50899887,-122.2929993); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('REG','Reggio Calabria Airport','REGGIO CALAB - ITA','Y','Y','IT','ITA',38.071201,15.6516); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YQR','Regina International Airport','REGINA - CAN','Y','Y','CA','CAN',50.43190002441406,-104.66600036621094); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MGF','Regional de Maringá - Sílvio Name Júnior Airport','MARINGA - BRA','Y','Y','BR','BRA',-23.47606,-52.016187); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GLD','Renner Field-Goodland Municipal Airport','GOODLAND, KS - USA','Y','Y','US','USA',39.37060165,-101.6989975); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RNS','Rennes-Saint-Jacques Airport','RENNES - FRA','Y','Y','FR','FRA',48.0695,-1.73479); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RNO','Reno Tahoe International Airport','RENO, NV - USA','Y','Y','US','USA',39.49909973144531,-119.76799774169922); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RES','Resistencia International Airport','RESISTENCIA - ARG','Y','Y','AR','ARG',-27.45,-59.0561); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('REU','Reus Airport','REUS - ESP','Y','Y','ES','ESP',41.1474,1.16717); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RHI','Rhinelander Oneida County Airport','RHINELANDER, WI - USA','Y','Y','US','USA',45.63119888305664,-89.46749877929688); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ESR','Ricardo García Posada Airport','EL SALVADOR - CHL','Y','Y','CL','CHL',-26.311100006103516,-69.76519775390625); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RCB','Richards Bay Airport','RICHARDS BAY - ZAF','Y','Y','ZA','ZAF',-28.740999221800003,32.0920982361); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RIC','Richmond International Airport','RICHMOND, VA - USA','Y','Y','US','USA',37.50519943237305,-77.3197021484375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AMA','Rick Husband Amarillo International Airport','AMARILLO, TX - USA','Y','Y','US','USA',35.219398,-101.706001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RIX','Riga International Airport','RIGA - LVA','Y','Y','LV','LVA',56.923599,23.9711); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RJK','Rijeka Airport','RIJELKA - HRV','Y','Y','HR','HRV',45.21689987182617,14.57030010223389); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RBR','Rio Branco-Plácido de Castro International Airport','RIO BRANCO - BRA','Y','Y','BR','BRA',-9.869031,-67.893984); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RIW','Riverton Regional Airport','RIVERTON, WY - USA','Y','Y','US','USA',43.064201355,-108.459999084); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RIY','Riyan Mukalla International Airport','RIYAN MULKALLA - YEM','Y','Y','YE','YEM',14.6626,49.375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RNE','Roanne-Renaison Airport','ROANNE - FRA','Y','Y','FR','FRA',46.05830001831055,4.00138998031616); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ROA','Roanoke–Blacksburg Regional Airport','ROANOKE, VA - USA','Y','Y','US','USA',37.3255,-79.975403); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HRE','Robert Gabriel Mugabe International Airport','HARARE - ZWE','Y','Y','ZW','ZWE',-17.931801,31.0928); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SKB','Robert L. Bradshaw International Airport','ST KITTS - KNA','Y','Y','KN','KNA',17.311199188232422,-62.71870040893555); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RDM','Roberts Field','REDMOND / BEND, OR - USA','Y','Y','US','USA',44.2541008,-121.1500015); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RST','Rochester International Airport','ROCHESTER, MN - USA','Y','Y','US','USA',43.908298,-92.5); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RSD','Rock Sound Airport','ROCK SOUND - BHS','Y','Y','BS','BHS',24.8950787333,-76.1768817902); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ROK','Rockhampton Airport','ROCKHAMPTON - AUS','Y','Y','AU','AUS',-23.380019,150.475359); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RDZ','Rodez-Marcillac Airport','RODEZ - FRA','Y','Y','FR','FRA',44.407901763916016,2.48267006874084); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AQP','Rodríguez Ballón International Airport','AREQUIPA - PER','Y','Y','PE','PER',-16.3411006927,-71.5830993652); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MFR','Rogue Valley International Medford Airport','MEDFORD, OR - USA','Y','Y','US','USA',42.37419891357422,-122.87300109863281); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RUN','Roland Garros Airport','ST DENIS - REU','Y','Y','RE','REU',-20.8871,55.5103); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AAX','Romeu Zema Airport','ARAXA - BRA','Y','Y','BR','BRA',-19.5632,-46.9604); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RNB','Ronneby Airport','RONNEBY - SWE','Y','Y','SE','SWE',56.266701,15.265); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ROS','Rosario Islas Malvinas International Airport','ROSARIO - ARG','Y','Y','AR','ARG',-32.9036,-60.785); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RLG','Rostock-Laage Airport','ROSTOCK-LAAGE - DEU','Y','Y','DE','DEU',53.9182014465,12.2783002853); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ROP','Rota International Airport','ROTA - MNP','Y','Y','MP','MNP',14.1743,145.242996); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ROT','Rotorua Regional Airport','ROTORUA - NZL','Y','Y','NZ','NZL',-38.10919952392578,176.31700134277344); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RTM','Rotterdam The Hague Airport','ROTTERDAM - NLD','Y','Y','NL','NLD',51.956902,4.43722); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('URO','Rouen Airport','ROUEN - FRA','Y','Y','FR','FRA',49.38420104980469,1.17480003833771); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YUY','Rouyn Noranda Airport','ROUYN - CAN','Y','Y','CA','CAN',48.20610046386719,-78.83560180664062); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RVN','Rovaniemi Airport','ROVANIEMI - FIN','Y','Y','FI','FIN',66.564796447754,25.830400466919); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RXS','Roxas Airport','ROXAS CITY - PHL','Y','Y','PH','PHL',11.597700119018555,122.75199890136719); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NDU','Rundu Airport','RUNDU - NAM','Y','Y','NA','NAM',-17.956499099731,19.719400405884); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RZE','Rzeszów-Jasionka Airport','RZESZOW - POL','Y','Y','PL','POL',50.110001,22.018999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RRS','Røros Airport','POROS - NOR','Y','Y','NO','NOR',62.578399658203,11.342300415039); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CSL','SAN LUIS OBISPO, CA - USA','SAN LUIS OBISPO, CA - USA','Y','Y','US','USA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SAO','SAO PAULO SP - BRA','SAO PAULO SP - BRA','Y','N','BR','BRA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SPK','SAPPORO - JPN','SAPPORO - JPN','Y','N','JP','JPN',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SSM','SAULT STE MARIE, MI - USA','SAULT STE MARIE, MI - USA','Y','N','US','USA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SEL','SEOUL - KOR','SEOUL - KOR','Y','N','KR','KOR',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SZD','SHEFFIELD - GBR','SHEFFIELD - GBR','Y','N','UK','GBR',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SDZ','SHETLAND (ILES) - GBR','SHETLAND (ILES) - GBR','Y','N','UK','GBR',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('STO','STOCKHOLM - SWE','STOCKHOLM - SWE','Y','N','SE','SWE',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SCN','Saarbrücken Airport','SAARBRUCKEN - DEU','Y','Y','DE','DEU',49.214599609400004,7.10950994492); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SEB','Sabha Airport','SEBHA - LBY','Y','Y','LY','LBY',26.98699951171875,14.47249984741211); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HIN','Sacheon Air Base/Airport','CHINJU - KOR','Y','Y','KR','KOR',35.088591,128.071747); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SAC','Sacramento Executive Airport','SACRAMENTO, CA - USA','Y','Y','US','USA',38.5125007629,-121.492996216); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HSG','Saga Airport','SAGA - JPN','Y','Y','JP','JPN',33.149700164799995,130.302001953); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SKV','Saint Catherine International Airport','SANTA KATARINA - EGY','Y','Y','EG','EGY',28.682729,34.060503); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('STC','Saint Cloud Regional Airport','ST CLOUD, MN - USA','Y','Y','US','USA',45.5466,-94.059898); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YSJ','Saint John Airport','SAINT JOHN - CAN','Y','Y','CA','CAN',45.31610107421875,-65.89029693603516); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('XLS','Saint Louis Airport','ST LOUIS - SEN','Y','Y','SN','SEN',16.049814,-16.461039); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SBK','Saint-Brieuc-Armor Airport','SAINT BRIEUC - FRA','Y','Y','FR','FRA',48.5378,-2.85444); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EBU','Saint-Étienne-Bouthéon Airport','SAINT ETIENNE - FRA','Y','Y','FR','FRA',45.54059982299805,4.29639005661011); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SPN','Saipan International Airport','SAIPAN - MNP','Y','Y','MP','MNP',15.119,145.729004); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SNO','Sakon Nakhon Airport','SAKON NAKHON - THA','Y','Y','TH','THA',17.195100784301758,104.11900329589844); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MVR','Salak Airport','MAROUA - CMR','Y','Y','CM','CMR',10.451399803161621,14.257399559021); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SLL','Salalah Airport','SALALAH - OMN','Y','Y','OM','OMN',17.038700103759766,54.09130096435547); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SLE','Salem Municipal Airport/McNary Field','SALEM, OR - USA','Y','Y','US','USA',44.90950012,-123.0029984); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('POA','Salgado Filho International Airport','PTO ALEGRE RS - BRA','Y','Y','BR','BRA',-29.994712,-51.166592); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LMB','Salima Airport','SALIMA - MWI','Y','Y','MW','MWI',-13.755892702500002,34.5841884613); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SCX','Salina Cruz Naval Air Station','SALINA CRUZ - MEX','Y','Y','MX','MEX',16.212600708,-95.20159912110002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SLN','Salina Municipal Airport','SALINA, KS - USA','Y','Y','US','USA',38.79100036621094,-97.6521987915039); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SBY','Salisbury Ocean City Wicomico Regional Airport','SALISBURY, MD - USA','Y','Y','US','USA',38.34049987792969,-75.51029968261719); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SLC','Salt Lake City International Airport','SALT LAKE CITY, UT - USA','Y','Y','US','USA',40.785749,-111.979746); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SZG','Salzburg Airport','SALZBURG - AUT','Y','Y','AT','AUT',47.793300628699996,13.0043001175); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('QOW','Sam Mbakwe International Airport','OWERRI - NGA','Y','Y','NG','NGA',5.427060127258301,7.20602989196777); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MDC','Sam Ratulangi Airport','MANADO - IDN','Y','Y','ID','IDN',1.54926,124.926003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SMI','Samos Airport','SAMOS - GRC','Y','Y','GR','GRC',37.689998626708984,26.91169929504395); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('USM','Samui Airport','KOH SAMUI - THA','Y','Y','TH','THA',9.547789573669998,100.06199646); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SJT','San Angelo Regional Mathis Field','SAN ANGELO, TX - USA','Y','Y','US','USA',31.35770034790039,-100.49600219726562); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SVZ','San Antonio Del Tachira Airport','SAN ANTONIO - VEN','Y','Y','VE','VEN',7.840829849243164,-72.439697265625); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SAT','San Antonio International Airport','SAN ANTONIO, TX - USA','Y','Y','US','USA',29.533701,-98.469803); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BRC','San Carlos De Bariloche Airport','S BARILOCH RN - ARG','Y','Y','AR','ARG',-41.151199,-71.157501); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SAN','San Diego International Airport','SAN DIEGO CA - USA','Y','Y','US','USA',32.7336006165,-117.190002441); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SFD','San Fernando De Apure Airport','SAN FERNANDO DE APURE - VEN','Y','Y','VE','VEN',7.883319854736328,-67.44400024414062); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SFO','San Francisco International Airport','SAN FRANCI CA - USA','Y','Y','US','USA',37.61899948120117,-122.375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MJV','San Javier Airport','MURCIA - ESP','Y','Y','ES','ESP',37.775002,-0.812389); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ALS','San Luis Valley Regional Airport/Bergman Field','ALAMOSA, CO - USA','Y','Y','US','USA',37.434898,-105.866997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SPY','San Pedro Airport','SAN PEDRO - CIV','Y','Y','CI','CIV',4.746719837188721,-6.66082000732422); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EAS','San Sebastián Airport','SAN SEBASTIAN - ESP','Y','Y','ES','ESP',43.356499,-1.79061); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SOM','San Tomé Airport','SAN TOME - VEN','Y','Y','VE','VEN',8.9451465606689,-64.151084899902); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SAH','Sana''a International Airport','SANAA - YEM','Y','Y','YE','YEM',15.476300239562988,44.21969985961914); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YZP','Sandspit Airport','SANDSPIT - CAN','Y','Y','CA','CAN',53.25429916379999,-131.813995361); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MBJ','Sangster International Airport','MONTEGO BAY - JAM','Y','Y','JM','JAM',18.503700256347656,-77.91339874267578); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SBA','Santa Barbara Municipal Airport','SANTA BARBARA, CA - USA','Y','Y','US','USA',34.42620087,-119.8399963); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SAF','Santa Fe Municipal Airport','SANTA FE, NM - USA','Y','Y','US','USA',35.617099762,-106.088996887); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GYN','Santa Genoveva Airport','GOIANIA - BRA','Y','Y','BR','BRA',-16.632,-49.220699); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SMA','Santa Maria Airport','SANTA MARIA (ILE) - PRT','Y','Y','PT','PRT',36.97140121459961,-25.17060089111328); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SMX','Santa Maria Public Airport Captain G Allan Hancock Field','SANTA MARIA, CA - USA','Y','Y','US','USA',34.898899,-120.457001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('STM','Santarém - Maestro Wilson Fonseca International Airport','SANTAREM - BRA','Y','Y','BR','BRA',-2.422423,-54.79306); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AUC','Santiago Perez Airport','ARAUCA - COL','Y','Y','CO','COL',7.06888,-70.7369); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SCQ','Santiago-Rosalía de Castro Airport','SANTIAGO COMP - ESP','Y','Y','ES','ESP',42.896301,-8.41514); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JTR','Santorini Airport','SANTORINI (ILE) / THIRA - GRC','Y','Y','GR','GRC',36.399200439453125,25.47929954528809); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SYX','Sanya Phoenix International Airport','SANYA - CHN','Y','Y','CN','CHN',18.3029,109.412003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SJJ','Sarajevo International Airport','SARAJEVO - BIH','Y','Y','BA','CZE',43.8246,18.331499); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SRQ','Sarasota Bradenton International Airport','SARASOTA, FL - USA','Y','Y','US','USA',27.395399,-82.554398); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AMD','Sardar Vallabhbhai Patel International Airport','AHMEDABAD - IND','Y','Y','IN','IND',23.0771999359,72.63469696039999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RAS','Sardar-e-Jangal Airport','RASHT - IRN','Y','Y','IR','IRN',37.323333,49.617778); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SRY','Sari Dasht-e Naz International Airport','SARY - IRN','Y','Y','IR','IRN',36.644408,53.188761); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KGF','Sary-Arka Airport','KARAGANDA - KAZ','Y','Y','KZ','KAZ',49.670799,73.334396); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YXE','Saskatoon John G. Diefenbaker International Airport','SASKATOON - CAN','Y','Y','CA','CAN',52.170799255371094,-106.69999694824219); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SUJ','Satu Mare Airport','SATU MARE - ROU','Y','Y','RO','ROU',47.70330047607422,22.88570022583008); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SFN','Sauce Viejo Airport','SANTA FE - ARG','Y','Y','AR','ARG',-31.7117,-60.8117); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YAM','Sault Ste Marie Airport','SAULT STE MARIE - CAN','Y','Y','CA','CAN',46.485001,-84.509399); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SVL','Savonlinna Airport','SAVONLINNA - FIN','Y','Y','FI','FIN',61.9431,28.945101); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MQT','Sawyer International Airport','MARQUETTE, MI - USA','Y','Y','US','USA',46.3536,-87.395401); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FEZ','Saïss Airport','FES - MAR','Y','Y','MA','MAR',33.9272994995,-4.97796010971); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SEA','Seattle Tacoma International Airport','SEATTLE WA - USA','Y','Y','US','USA',47.449001,-122.308998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SJY','Seinäjoki Airport','SEINAJOKI - FIN','Y','Y','FI','FIN',62.692101,22.8323); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GXF','Seiyun Hadhramaut International Airport','SEIYUN - YEM','Y','Y','YE','YEM',15.9661,48.7883); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AMI','Selaparang Airport','MATARAM - IDN','Y','N','ID','IDN',-8.560709953309999,116.095001221); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PNZ','Senador Nilo Coelho Airport','PETROLINA - BRA','Y','Y','BR','BRA',-9.362422,-40.569098); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('THE','Senador Petrônio Portela Airport','TERESINA - BRA','Y','Y','BR','BRA',-5.0599398613,-42.8235015869); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JHB','Senai International Airport','JOHOR BAHRU - MYS','Y','Y','MY','MYS',1.64131,103.669998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SDJ','Sendai Airport','SENDAI - JPN','Y','Y','JP','JPN',38.139702,140.917007); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DJJ','Sentani International Airport','JAYAPURA - IDN','Y','Y','ID','IDN',-2.57695,140.516006); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YZV','Sept-Îles Airport','SEPT-LIES - CAN','Y','Y','CA','CAN',50.22330093383789,-66.2656021118164); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('XAP','Serafin Enoss Bertaso Airport','CHAPECO - BRA','Y','Y','BR','BRA',-27.134199,-52.656601); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SDR','Seve Ballesteros-Santander Airport','SANTANDER - ESP','Y','Y','ES','ESP',43.427101,-3.82001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SVQ','Sevilla Airport','SEVILLA - ESP','Y','Y','ES','ESP',37.417999,-5.89311); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SWD','Seward Airport','SEWARD, AK - USA','Y','Y','US','USA',60.130478,-149.418612); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SEZ','Seychelles International Airport','MAHE IS - SYC','Y','Y','SC','SYC',-4.67434,55.521801); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GPS','Seymour Galapagos Ecological Airport','GALAPAGOS IS - ECU','Y','Y','EC','ECU',-0.453758,-90.2659); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SFA','Sfax Thyna International Airport','SFAX - TUN','Y','Y','TN','TUN',34.71799850463867,10.69099998474121); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CGP','Shah Amanat International Airport','CHITTAGONG - BGD','Y','Y','BD','BGD',22.249599,91.813301); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WNS','Shaheed Benazirabad Airport','NAWABSHAH - PAK','Y','Y','PK','PAK',26.2194,68.390099); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KSH','Shahid Ashrafi Esfahani Airport','KERMANSHAH - IRN','Y','Y','IR','IRN',34.3459014893,47.1581001282); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AZD','Shahid Sadooghi Airport','YAZD - IRN','Y','Y','IR','IRN',31.9048995972,54.2765007019); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SHA','Shanghai Hongqiao International Airport','SHANGHAI - CHN','Y','Y','CN','CHN',31.198104,121.33426); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SNN','Shannon Airport','SHANNON - IRL','Y','Y','IE','IRL',52.702,-8.92482); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SHJ','Sharjah International Airport','SHARJAH - ARE','Y','Y','AE','ARE',25.32859992980957,55.5172004699707); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SSH','Sharm El Sheikh International Airport','SHARM EL SHEIKH - EGY','Y','Y','EG','EGY',27.977301,34.395); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SHW','Sharurah Domestic Airport','SHARURAH - SAU','Y','Y','SA','SAU',17.4669,47.121399); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SXR','Sheikh ul Alam International Airport','SRINAGAR - IND','Y','Y','IN','IND',33.987099,74.7742); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SHD','Shenandoah Valley Regional Airport','STAUNTON, VA - USA','Y','Y','US','USA',38.263802,-78.8964); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SHE','Shenyang Taoxian International Airport','SHENYANG - CHN','Y','Y','CN','CHN',41.639801,123.483002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SZX','Shenzhen Bao''an International Airport','SHENZHEN - CHN','Y','Y','CN','CHN',22.639299,113.810997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SPS','Sheppard Air Force Base / Wichita Falls Municipal Airport','WICHITA FALLS, TX - USA','Y','Y','US','USA',33.9888,-98.491898); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SHR','Sheridan County Airport','SHERIDAN, WY - USA','Y','Y','US','USA',44.76919937133789,-106.9800033569336); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SJW','Shijiazhuang Zhengding International Airport','SHIJIAZHUANG - CHN','Y','Y','CN','CHN',38.280701,114.696999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MMJ','Shinshu-Matsumoto Airport','MATSUMOTO - JPN','Y','Y','JP','JPN',36.166801,137.923004); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SYZ','Shiraz Shahid Dastghaib International Airport','SHIRAZ - IRN','Y','Y','IR','IRN',29.5392,52.589802); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SYO','Shonai Airport','SHONAI - JPN','Y','Y','JP','JPN',38.812199,139.787003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SHV','Shreveport Regional Airport','SHREVEPORT, LA - USA','Y','Y','US','USA',32.446602,-93.8256); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CIT','Shymkent Airport','SHIRRIKENT - KAZ','Y','Y','KZ','KAZ',42.364200592041016,69.47889709472656); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SBZ','Sibiu International Airport','SIBIU - ROU','Y','Y','RO','ROU',45.78559875488281,24.09129905700684); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SBW','Sibu Airport','SIBU - MYS','Y','Y','MY','MYS',2.261600017547607,111.98500061035156); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DGT','Sibulan Airport','DUMAGUETE - PHL','Y','Y','PH','PHL',9.3337097168,123.300003052); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SQK','Sidi Barrani Airport','SIDI BARANI - EGY','Y','Y','EG','EGY',31.466600418091,25.878000259399); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SDY','Sidney - Richland Regional Airport','SIDNEY, MT - USA','Y','Y','US','USA',47.706902,-104.193001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('REP','Siem Reap International Airport','SIEM REAP - KHM','Y','Y','KH','KHM',13.41155,103.813044); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ASU','Silvio Pettirossi International Airport','ASUNCION - PRY','Y','Y','PY','PRY',-25.239999771118164,-57.52000045776367); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SIP','Simferopol International Airport','SIMFEROPOL - UKR','Y','Y','UA','UKR',45.0522,33.975101); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NLA','Simon Mwansa Kapwepwe International Airport','NDOLA - ZMB','Y','Y','ZM','ZMB',-12.998512,28.664047); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SMR','Simón Bolívar International Airport','SANTA MARTA - COL','Y','Y','CO','COL',11.1196,-74.2306); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CCS','Simón Bolívar International Airport','CARACAS - VEN','Y','Y','VE','VEN',10.601194,-66.991222); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SIN','Singapore Changi Airport','SINGAPORE - SGP','Y','Y','SG','SGP',1.35019,103.994003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SIR','Sion Airport','SION - CHE','Y','Y','CH','CHE',46.219166,7.326944); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FSD','Sioux Falls Regional Airport / Joe Foss Field','SIOUX FALLS, SD - USA','Y','Y','US','USA',43.585463,-96.741152); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SUX','Sioux Gateway Airport / Brigadier General Bud Day Field','SIOUX CITY, IA - USA','Y','Y','US','USA',42.397605,-96.382237); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MRU','Sir Seewoosagur Ramgoolam International Airport','MAURITIUS - MUS','Y','Y','MU','MUS',-20.430201,57.683601); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GBE','Sir Seretse Khama International Airport','GABORONE - BWA','Y','Y','BW','BWA',-24.555201,25.9182); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JSH','Sitia Airport','SITIA - GRC','Y','Y','GR','GRC',35.21609878540039,26.10129928588867); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SIT','Sitka Rocky Gutierrez Airport','SITKA - USA','Y','Y','US','USA',57.04710006713867,-135.36199951171875); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SFT','Skellefteå Airport','SKELLEFTEA - SWE','Y','Y','SE','SWE',64.62480163574219,21.07690048217773); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JSI','Skiathos Island National Airport','SKIATHOS (ILE) - GRC','Y','Y','GR','GRC',39.177101135253906,23.50370025634766); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SKU','Skiros Airport','SKIROS - GRC','Y','Y','GR','GRC',38.9676017761,24.4871997833); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SKP','Skopje International Airport','SKOPJE - MKD','Y','Y','MK','MKD',41.961601,21.621401); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SZK','Skukuza Airport','SKUKUZA - ZAF','Y','Y','ZA','ZAF',-24.960899353,31.5886993408); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SLD','Slia? Airport','SLIAC - SVK','Y','Y','SK','SVK',48.63779830932617,19.13409996032715); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SXL','Sligo Airport','SLIGO - IRL','Y','Y','IE','IRL',54.280200958252,-8.5992097854614); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YYD','Smithers Airport','SMITHERS - CAN','Y','Y','CA','CAN',54.82469940185547,-127.18299865722656); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AER','Sochi International Airport','ADLER/SOCHI - RUS','Y','Y','RU','RUS',43.449902,39.9566); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SCT','Socotra International Airport','SOCOTRA - YEM','Y','Y','YE','YEM',12.63070011138916,53.90579986572266); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SXU','Soddu Airport','SODDU - ETH','Y','Y','ET','ETH',6.816999912261963,37.75); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MES','Soewondo Air Force Base','MEDAN - IDN','Y','Y','ID','IDN',3.559167,98.671111); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SOF','Sofia Airport','SOFIA - BGR','Y','Y','BG','BGR',42.696693420410156,23.41143608093262); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GDX','Sokol Airport','MAGADAN - RUS','Y','Y','RU','RUS',59.9109992980957,150.72000122070312); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SOD','Sorocaba Airport','SOROCABA - BRA','Y','Y','BR','BRA',-23.478001,-47.490002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BJA','Soummam – Abane Ramdane Airport','BEJAIA - DZA','Y','Y','DZ','DZA',36.712793,5.07857); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SBN','South Bend Regional Airport','SOUTH BEND, IN - USA','Y','Y','US','USA',41.708698,-86.317299); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SOU','Southampton Airport','SOUTHAMPTON - GBR','Y','Y','UK','GBR',50.950298,-1.3568); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LAA','Southeast Colorado Regional Airport','LAMAR, CO - USA','Y','Y','US','USA',38.066126,-102.690169); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BRL','Southeast Iowa Regional Airport','BURLINGTON, IA - USA','Y','Y','US','USA',40.783199310302734,-91.12550354003906); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MDH','Southern Illinois Airport','CARBONDALE, IL - USA','Y','Y','US','USA',37.778099060058594,-89.25199890136719); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ABY','Southwest Georgia Regional Airport','ALBANY, GA - USA','Y','Y','US','USA',31.532946,-84.196215); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OTH','Southwest Oregon Regional Airport','NORTH BEND - USA','Y','Y','US','USA',43.41709899902344,-124.24600219726562); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RKS','Southwest Wyoming Regional Airport','ROCK SPRINGS, WY - USA','Y','Y','US','USA',41.5942,-109.065001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SPW','Spencer Municipal Airport','SPENCER, IA - USA','Y','Y','US','USA',43.165500640869,-95.202796936035); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SPU','Split Airport','SPLIT - HRV','Y','Y','HR','HRV',43.53889846801758,16.29800033569336); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MLW','Spriggs Payne Airport','MONROVIA - LBR','Y','Y','LR','LBR',6.289060115814209,-10.75870037078857); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SGF','Springfield Branson National Airport','SPRINGFIELD, MO - USA','Y','Y','US','USA',37.245701,-93.388603); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ATQ','Sri Guru Ram Dass Jee International Airport','AMRITSAR - IND','Y','Y','IN','IND',31.7096,74.797302); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ACH','St Gallen Altenrhein Airport','ALTENIRHEIN - CHE','Y','Y','CH','CHE',47.485001,9.56077); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SGU','St George Regional Airport','SAINT GEORGE - USA','Y','Y','US','USA',37.036389,-113.510306); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('STL','St Louis Lambert International Airport','ST LOUIS MO - USA','Y','Y','US','USA',38.748697,-90.370003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KSM','St Mary''s Airport','SAINT MARYS - USA','Y','Y','US','USA',62.0605011,-163.302002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YYT','St. John''s International Airport','STJOHNS - CAN','Y','Y','CA','CAN',47.618598938,-52.7518997192); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SVG','Stavanger Airport, Sola','STAVANGER - NOR','Y','Y','NO','NOR',58.876701,5.63778); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SBS','Steamboat Springs Bob Adams Field','STEAMBOAT SPRINGS, CO - USA','Y','Y','US','USA',40.5163002,-106.8659973); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VST','Stockholm Västerås Airport','VASTERAS - SWE','Y','Y','SE','SWE',59.58940124511719,16.63360023498535); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SCK','Stockton Metropolitan Airport','STOCKTON, CA - USA','Y','Y','US','USA',37.894199371338,-121.2379989624); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SYY','Stornoway Airport','STORNOWAY - GBR','Y','Y','UK','GBR',58.215599,-6.33111); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SQO','Storuman Airport','STORURNAN - SWE','Y','Y','SE','SWE',64.960899,17.6966); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SXB','Strasbourg Airport','STRASBOURG - FRA','Y','Y','FR','FRA',48.538299560546875,7.62823009490967); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('STR','Stuttgart Airport','STUTTGART - DEU','Y','Y','DE','DEU',48.689899444599995,9.22196006775); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SCV','Suceava Stefan cel Mare Airport','SUCEAVA - ROU','Y','Y','RO','ROU',47.6875,26.35409927368164); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YSB','Sudbury Airport','SUDBURY ON - CAN','Y','Y','CA','CAN',46.625,-80.79889678955078); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SUL','Sui Airport','SUI - PAK','Y','Y','PK','PAK',28.645099639892578,69.1769027709961); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('THS','Sukhothai Airport','SUKINOTHAI - THA','Y','Y','TH','THA',17.238000869750977,99.81819915771484); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SKZ','Sukkur Airport','SUKKUR - PAK','Y','Y','PK','PAK',27.722000122070312,68.79170227050781); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BPN','Sultan Aji Muhamad Sulaiman Airport','BALIKPAPAN - IDN','Y','Y','ID','IDN',-1.26827001572,116.893997192); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BTJ','Sultan Iskandar Muda International Airport','BANDA ACEH - IDN','Y','Y','ID','IDN',5.522872024010001,95.42063713070002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PLM','Sultan Mahmud Badaruddin II Airport','PALEMBANG - IDN','Y','Y','ID','IDN',-2.897653,104.698147); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PKU','Sultan Syarif Kasim Ii (Simpang Tiga) Airport','PEKANBARU - IDN','Y','Y','ID','IDN',0.460786014795303,101.44499969482422); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WUX','Sunan Shuofang International Airport','WUXI - CHN','Y','Y','CN','CHN',31.494400024399997,120.429000854); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SDL','Sundsvall-Härnösand Airport','SUNDSVALL - SWE','Y','Y','SE','SWE',62.528099060058594,17.44389915466309); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PNK','Supadio Airport','PONTIANAK - IDN','Y','Y','ID','IDN',-0.150710999965668,109.40399932861328); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('STV','Surat Airport','SURAT - IND','Y','Y','IN','IND',21.1140995026,72.7417984009); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('URT','Surat Thani Airport','SURAT THANI - THA','Y','Y','TH','THA',9.13259983063,99.135597229); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BKK','Suvarnabhumi Airport','BANGKOK - THA','Y','Y','TH','THA',13.681099891662598,100.74700164794922); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LYR','Svalbard Airport, Longyear','LONGYEARBYEN - NOR','Y','Y','NO','NOR',78.246101379395,15.465600013733); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SWP','Swakopmund Municipal Aerodrome','SWAKOPMUND - NAM','Y','Y','NA','NAM',-22.6619,14.5681); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RPR','Swami Vivekananda Airport','RAIPUR - IND','Y','Y','IN','IND',21.180401,81.7388); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BDJ','Syamsudin Noor Airport','BANJARMASIN - IDN','Y','Y','ID','IDN',-3.44236,114.763); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YQY','Sydney / J.A. Douglas McCurdy Airport','SYDNEY - CAN','Y','Y','CA','CAN',46.1614,-60.047798); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SYD','Sydney Kingsford Smith International Airport','SYDNEY NS - AUS','Y','Y','AU','AUS',-33.94609832763672,151.177001953125); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SYR','Syracuse Hancock International Airport','SYRACUSE, NY - USA','Y','Y','US','USA',43.11119842529297,-76.1063003540039); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JSY','Syros Airport','SYROS (ILE) - GRC','Y','Y','GR','GRC',37.4227981567,24.9508991241); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SZZ','Szczecin-Goleniów "Solidarno??" Airport','SZCZECIN - POL','Y','Y','PL','POL',53.584702,14.9022); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NAT','São Gonçalo do Amarante - Governador Aluízio Alves International Airport','NATAL - BRA','Y','Y','BR','BRA',-5.769804,-35.366578); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TMS','São Tomé International Airport','SAO TOME IS - STP','Y','Y','ST','STP',0.378175,6.71215); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SGD','Sønderborg Airport','SONDERBORG - DNK','Y','Y','DK','DNK',54.96440124511719,9.79172992706299); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TXG','TAICHUNG - TWN','TAICHUNG - TWN','Y','Y','TW','TWN',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TCI','TENERIFE - ESP','TENERIFE - ESP','Y','N','ES','ESP',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TYO','TOKYO - JPN','TOKYO - JPN','Y','N','JP','JPN',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YTO','TORONTO ON - CAN','TORONTO ON - CAN','Y','N','CA','CAN',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TAI','Ta''izz International Airport','TAIZ - YEM','Y','Y','YE','YEM',13.6859998703,44.1390991211); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TCP','Taba International Airport','TABA - EGY','Y','Y','EG','EGY',29.587799,34.778099); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TBJ','Tabarka 7 Novembre Airport','TABARKA - TUN','Y','Y','TN','TUN',36.97999954223633,8.87693977355957); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TBT','Tabatinga Airport','TABATINGA - BRA','Y','Y','BR','BRA',-4.2556700706482,-69.93579864502); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TBO','Tabora Airport','TABORA - TZA','Y','Y','TZ','TZA',-5.076389789581299,32.83330154418945); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TBZ','Tabriz International Airport','TABRIZ - IRN','Y','Y','IR','IRN',38.1339,46.235001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TUU','Tabuk Airport','TABUK - SAU','Y','Y','SA','SAU',28.3654,36.6189); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TPE','Taiwan Taoyuan International Airport','TAIPEI - TWN','Y','Y','TW','TWN',25.0777,121.233002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TYN','Taiyuan Wusu Airport','TAIYUAN - CHN','Y','Y','CN','CHN',37.746899,112.627998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TAK','Takamatsu Airport','TAKAMATSU - JPN','Y','Y','JP','JPN',34.214199066199996,134.01600647); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ARH','Talagi Airport','ARKHANGELSK - RUS','Y','Y','RU','RUS',64.60030364990234,40.71670150756836); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TLH','Tallahassee Regional Airport','TALLAHASSEE, FL - USA','Y','Y','US','USA',30.3965,-84.350304); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TUD','Tambacounda Airport','TAMBACOUNDA - SEN','Y','Y','SN','SEN',13.736800193786621,-13.65310001373291); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TPA','Tampa International Airport','TAMPA FL - USA','Y','Y','US','USA',27.975500106811523,-82.533203125); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TMP','Tampere-Pirkkala Airport','TAMPERE - FIN','Y','Y','FI','FIN',61.414101,23.604401); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SGN','Tan Son Nhat International Airport','HO CHI MINH C - VNM','Y','Y','VN','VNM',10.8188,106.652); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TGT','Tanga Airport','TANGA - TZA','Y','Y','TZ','TZA',-5.09236,39.071201); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TNG','Tangier Ibn Battouta Airport','TANGIER - MAR','Y','Y','MA','MAR',35.726898,-5.91689); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TAP','Tapachula International Airport','TAPACHULA - MEX','Y','Y','MX','MEX',14.7943000793,-92.3700027466); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TPC','Tarapoa Airport','TARAPOA - ECU','Y','Y','EC','ECU',-0.122956000268459,-76.33779907226562); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LDE','Tarbes-Lourdes-Pyrénées Airport','LOURDES - FRA','Y','Y','FR','FRA',43.1786994934082,-0.00643899990246); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TAS','Tashkent International Airport','TASHKENT - UZB','Y','Y','UZ','UZB',41.257900238,69.2811965942); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TUO','Taupo Airport','TAUPO - NZL','Y','Y','NZ','NZL',-38.73970031738281,176.08399963378906); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TRG','Tauranga Airport','TAURANGA - NZL','Y','Y','NZ','NZL',-37.67190170288086,176.1959991455078); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TIF','Ta’if Regional Airport','TAIF - SAU','Y','Y','SA','SAU',21.483001,40.543442); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TBS','Tbilisi International Airport','TBILISI - GEO','Y','Y','GE','GEO',41.6692008972,44.95470047); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TCH','Tchibanga Airport','TEHIBANGA - GAB','Y','Y','GA','GAB',-2.88848,10.955429); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ANC','Ted Stevens Anchorage International Airport','ANCHORAGE AK - USA','Y','Y','US','USA',61.1744,-149.996002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MME','Teesside International Airport','DURHAM - GBR','Y','Y','UK','GBR',54.509201,-1.42941); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TFF','Tefé Airport','TETE - BRA','Y','Y','BR','BRA',-3.38294005394,-64.7240982056); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TEX','Telluride Regional Airport','TELLURIDE, CO - USA','Y','Y','US','USA',37.9538002,-107.9079971); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UDI','Ten. Cel. Aviador César Bombonato Airport','UBERLANDIA - BRA','Y','Y','BR','BRA',-18.883612,-48.225277); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FRC','Tenente Lund Pressoto Airport','FRANCA - BRA','Y','Y','BR','BRA',-20.592199,-47.3829); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TUC','Teniente Benjamin Matienzo Airport','TUEUMAN - ARG','Y','Y','AR','ARG',-26.8409,-65.104897); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TUA','Teniente Coronel Luis a Mantilla Airport','TULCAN - ECU','Y','Y','EC','ECU',0.809505999088287,-77.70809936523438); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GXQ','Teniente Vidal Airport','COYHAIQUE - CHL','Y','Y','CL','CHL',-45.5942,-72.106102); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EIS','Terrance B. Lettsome International Airport','BEEF ISLAND - VGB','Y','Y','VG','VGB',18.445492,-64.541707); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HUF','Terre Haute Regional Airport, Hulman Field','TERRE HAUTE, IN - USA','Y','Y','US','USA',39.4515,-87.307602); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TXK','Texarkana Regional Webb Field','TEXARKANA, AR - USA','Y','Y','US','USA',33.45370101928711,-93.99099731445312); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CID','The Eastern Iowa Airport','CEDAR RAPIDS, IA - USA','Y','Y','US','USA',41.884701,-91.7108); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YQD','The Pas Airport','THE PAS MB - CAN','Y','Y','CA','CAN',53.97140121459961,-101.09100341796875); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PVD','Theodore Francis Green State Airport','PROVIDENCE, RI - USA','Y','Y','US','USA',41.725038,-71.425668); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SKG','Thessaloniki Macedonia International Airport','THESSALONIKI - GRC','Y','Y','GR','GRC',40.51969909667969,22.97089958190918); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TVF','Thief River Falls Regional Airport','THIEF RIVER FALLS - USA','Y','Y','US','USA',48.06570053,-96.18499756); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YTH','Thompson Airport','THOMPSON - CAN','Y','Y','CA','CAN',55.80110168457031,-97.86419677734375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YQT','Thunder Bay Airport','THUNDER BAY - CAN','Y','Y','CA','CAN',48.37189865112305,-89.32389831542969); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TSN','Tianjin Binhai International Airport','TIANJIN - CHN','Y','Y','CN','CHN',39.124401092499994,117.346000671); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TIU','Timaru Airport','TIMARU - NZL','Y','Y','NZ','NZL',-44.302799224853516,171.22500610351562); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TSR','Timi?oara Traian Vuia Airport','TIMISOARA - ROU','Y','Y','RO','ROU',45.809898376464844,21.33790016174316); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YTS','Timmins/Victor M. Power','TIMMINS - CAN','Y','Y','CA','CAN',48.569698333699996,-81.376701355); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TIQ','Tinian International Airport','TINIAN - MNP','Y','Y','MP','MNP',14.9992,145.619003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TIA','Tirana International Airport Mother Teresa','TIRANA - ALB','Y','Y','AL','ALB',41.4146995544,19.7206001282); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TRZ','Tiruchirappalli International Airport','TIRUCHIRAPALL - IND','Y','Y','IN','IND',10.7654,78.709702); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TIR','Tirupati Airport','TIRUPATI - IND','Y','Y','IN','IND',13.632499694800002,79.543296814); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TIV','Tivat Airport','TIVAT - MNE','Y','Y','ME','MNE',42.404701232910156,18.72330093383789); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TAB','Tobago-Crown Point Airport','TOBAGO - TTO','Y','Y','TT','TTO',11.149700164794922,-60.83219909667969); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PTY','Tocumen International Airport','PANAMA CITY - PAN','Y','Y','PA','PAN',9.0713596344,-79.3834991455); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OBO','Tokachi-Obihiro Airport','OBIHIRO - JPN','Y','Y','JP','JPN',42.7332992554,143.216995239); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TKN','Tokunoshima Airport','TOKUNOSHIMA - JPN','Y','Y','JP','JPN',27.836399,128.880997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TKS','Tokushima Awaodori Airport / JMSDF Tokushima Air Base','TOKUSHIMA AB - JPN','Y','Y','JP','JPN',34.132801,134.606995); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DUT','Tom Madsen (Dutch Harbor) Airport','DUTCH HARBOR - USA','Y','Y','US','USA',53.89881,-166.544996); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TGU','Toncontín International Airport','TEGUCIGALPA - HND','Y','Y','HN','NIC',14.06089973449707,-87.21720123291016); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TEN','Tongren Fenghuang Airport','TONGREN - CHN','Y','Y','CN','CHN',27.883333,109.308889); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TTJ','Tottori Sand Dunes Conan Airport','TOTTORI - JPN','Y','Y','JP','JPN',35.530102,134.167007); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TLN','Toulon-Hyères Airport','TOULON - FRA','Y','Y','FR','FRA',43.0973014832,6.14602994919); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TLS','Toulouse-Blagnac Airport','TOULOUSE - FRA','Y','Y','FR','FRA',43.629101,1.36382); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TUF','Tours-Val-de-Loire Airport','TOURS - FRA','Y','Y','FR','FRA',47.4322013855,0.727605998516); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PAP','Toussaint Louverture International Airport','PORT AU PRINC - HTI','Y','Y','HT','HTI',18.58,-72.292503); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TSV','Townsville Airport / RAAF Base Townsville','TOWNSVILLE QL - AUS','Y','Y','AU','AUS',-19.252904,146.766512); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TOY','Toyama Airport','TOYAMA - JPN','Y','Y','JP','JPN',36.64830017089844,137.18800354003906); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TOE','Tozeur Nefta International Airport','TOZEUR - TUN','Y','Y','TN','TUN',33.939701080322266,8.11056041717529); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TZX','Trabzon International Airport','TRABZON - TUR','Y','Y','TR','TUR',40.995098,39.7897); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TST','Trang Airport','TRANG - THA','Y','Y','TH','THA',7.50874,99.6166); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TGM','Transilvania Târgu Mure? International Airport','TIRGU MURES - ROU','Y','Y','RO','ROU',46.46770095825195,24.41250038146973); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PSC','Tri Cities Airport','PASCO, WA - USA','Y','Y','US','USA',46.26470184326172,-119.11900329589844); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TRI','Tri-Cities Regional TN/VA Airport','BRISTOL, TN - USA','Y','Y','US','USA',36.475201,-82.407401); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HTS','Tri-State/Milton J. Ferguson Field','HUNTINGTON, WV - USA','Y','Y','US','USA',38.366699,-82.557999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KTM','Tribhuvan International Airport','KATHMANDU - NPL','Y','Y','NP','NPL',27.6966,85.3591); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TRS','Trieste–Friuli Venezia Giulia Airport','TRIESTE - ITA','Y','Y','IT','ITA',45.827499,13.4722); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TIP','Tripoli International Airport','TRIPOLI - LBY','Y','Y','LY','LBY',32.663502,13.159); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TRV','Trivandrum International Airport','THIRUVANANTHA - IND','Y','Y','IN','IND',8.48211956024,76.9200973511); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('THN','Trollhättan-Vänersborg Airport','TROLLHATTAN - SWE','Y','Y','SE','SWE',58.31809997558594,12.34500026702881); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TOS','Tromsø Airport, Langnes','TROMSO - NOR','Y','Y','NO','NOR',69.683296,18.9189); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TRD','Trondheim Airport, Værnes','TRONDHEIM - NOR','Y','Y','NO','NOR',63.457802,10.924); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TSB','Tsumeb Airport','TSUMEB - NAM','Y','Y','NA','NAM',-19.26189994812,17.732500076294); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TUS','Tucson International Airport / Morris Air National Guard Base','TUCSON, AZ - USA','Y','Y','US','USA',32.115004,-110.938053); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TCE','Tulcea Danube Delta Airport','TUICEA - ROU','Y','Y','RO','ROU',45.0625,28.7143); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TUL','Tulsa International Airport','TULSA, OK - USA','Y','Y','US','USA',36.19839859008789,-95.88809967041016); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TUN','Tunis Carthage International Airport','TUNIS - TUN','Y','Y','TN','TUN',36.85100173950195,10.22719955444336); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TXN','Tunxi International Airport','TUNXI - CHN','Y','Y','CN','CHN',29.733299255371094,118.25599670410156); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TUP','Tupelo Regional Airport','TUPELO, MS - USA','Y','Y','US','USA',34.26810073852539,-88.7698974609375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TUI','Turaif Domestic Airport','TURAIF - SAU','Y','Y','SA','SAU',31.692188,38.731544); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TRN','Turin Airport','TURIN - ITA','Y','Y','IT','ITA',45.200802,7.64963); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TKU','Turku Airport','TURKU - FIN','Y','Y','FI','FIN',60.514099,22.2628); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HVN','Tweed New Haven Airport','NEW HAVEN, CT - USA','Y','Y','US','USA',41.26369858,-72.88680267); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TYR','Tyler Pounds Regional Airport','TYLER, TX - USA','Y','Y','US','USA',32.35409927368164,-95.40239715576172); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UTP','U-Tapao International Airport','UTAPAO - THA','Y','Y','TH','THA',12.679900169372559,101.00499725341797); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UBP','Ubon Ratchathani Airport','UBON RATCHATHANI - THA','Y','Y','TH','THA',15.2512998581,104.870002747); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UTH','Udon Thani Airport','UDON THANI - THA','Y','Y','TH','THA',17.386400222800003,102.788002014); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UFA','Ufa International Airport','UFA - RUS','Y','Y','RU','RUS',54.557498931885,55.874401092529); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('USN','Ulsan Airport','UISAN - KOR','Y','Y','KR','KOR',35.59349823,129.352005005); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UME','Umeå Airport','UMEA - SWE','Y','Y','SE','SWE',63.791801452637,20.282800674438); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UNI','Union Island International Airport','UNION ISLAND - VCT','Y','Y','VC','VCT',12.60013484954834,-61.41194534301758); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SCE','University Park Airport','STATE COLLEGE, PA - USA','Y','Y','US','USA',40.849374,-77.84852); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CMI','University of Illinois Willard Airport','CHAMPAIGN, IL - USA','Y','Y','US','USA',40.039819,-88.276249); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OMH','Urmia Airport','URMIEH - IRN','Y','Y','IR','IRN',37.6680984497,45.0686988831); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UPN','Uruapan - Licenciado y General Ignacio Lopez Rayon International Airport','URUAPAN - MEX','Y','Y','MX','MEX',19.3967,-102.039001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ANU','V.C. Bird International Airport','ANTIGUA - ATG','Y','Y','AG','ATG',17.1367,-61.792702); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('XVS','VALENCIENNES - FRA','VALENCIENNES - FRA','Y','N','FR','FRA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VAA','Vaasa Airport','VAASA - FIN','Y','Y','FI','FIN',63.050701,21.762199); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BDQ','Vadodara Airport','VADODARA - IND','Y','Y','IN','IND',22.336201,73.226303); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BEL','Val de Cans/Júlio Cezar Ribeiro International Airport','BELEM PA - BRA','Y','Y','BR','BRA',-1.379279,-48.476207); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YVO','Val-d''Or Airport','VAL D-OR, QUE. - CAN','Y','Y','CA','CAN',48.0532989502,-77.7827987671); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VLD','Valdosta Regional Airport','VALDOSTA, GA - USA','Y','Y','US','USA',30.782499313354492,-83.27670288085938); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IPN','Vale do Aço Regional Airport','LPATINGA - BRA','Y','Y','BR','BRA',-19.470699,-42.487598); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VLC','Valencia Airport','VALENCIA - ESP','Y','Y','ES','ESP',39.4893,-0.481625); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VLL','Valladolid Airport','VALLADOLID - ESP','Y','Y','ES','ESP',41.7061,-4.85194); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LMM','Valle del Fuerte International Airport','LOS MOCHIS - MEX','Y','Y','MX','MEX',25.685447,-109.081055); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HRL','Valley International Airport','HARLINGEN, TX - USA','Y','Y','US','USA',26.228500366210938,-97.65440368652344); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('NEV','Vance W. Amory International Airport','NEVIS - KNA','Y','Y','KN','KNA',17.205699920654297,-62.58990097045898); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YVR','Vancouver International Airport','VANCOUVER BC - CAN','Y','Y','CA','CAN',49.193901062,-123.183998108); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VVC','Vanguardia Airport','VILLAVICENCIO - COL','Y','Y','CO','COL',4.16787,-73.6138); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VAR','Varna Airport','VARNA - BGR','Y','Y','BG','BGR',43.232101,27.8251); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IXZ','Veer Savarkar International Airport / INS Utkrosh','PORT BLAIR - IND','Y','Y','IN','IND',11.641208,92.729643); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FKL','Venango Regional Airport','FRANKLIN - USA','Y','Y','US','USA',41.3778991699,-79.8603973389); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VCE','Venice Marco Polo Airport','VENICE - ITA','Y','Y','IT','ITA',45.505299,12.3519); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VEL','Vernal Regional Airport','VERNAL, UT - USA','Y','Y','US','USA',40.4408989,-109.5100021); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VRN','Verona-Villafranca Valerio Catullo Airport','VERONA - ITA','Y','Y','IT','ITA',45.394955,10.887303); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MWA','Veterans Airport of Southern Illinois','MARION, IL - USA','Y','Y','US','USA',37.751208,-89.016568); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VFA','Victoria Falls International Airport','VICTORIA FAL - ZWE','Y','Y','ZW','ZWE',-18.09589958190918,25.8390007019043); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YYJ','Victoria International Airport','VICTORIA - CAN','Y','Y','CA','CAN',48.6469,-123.426003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VCT','Victoria Regional Airport','VICTORIA, TX - USA','Y','Y','US','USA',28.85260009765625,-96.91850280761719); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VIE','Vienna International Airport','VIENNA - AUT','Y','Y','AT','AUT',48.110298,16.5697); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VGO','Vigo Airport','VIGO - ESP','Y','Y','ES','ESP',42.2318,-8.62677); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VNX','Vilankulo Airport','VILANCULOS - MOZ','Y','Y','MZ','MOZ',-22.018400192260742,35.31330108642578); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VHM','Vilhelmina South Lapland Airport','VILHELMINA - SWE','Y','Y','SE','SWE',64.579102,16.833599); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VNO','Vilnius International Airport','VILNIUS - LTU','Y','Y','LT','LTU',54.634102,25.285801); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CYO','Vilo Acuña International Airport','CAYO LARGO DEL SUR - CUB','Y','Y','CU','CUB',21.6165008545,-81.5459976196); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TPS','Vincenzo Florio Airport Trapani-Birgi','TRAPANI - ITA','Y','Y','IT','ITA',37.9114,12.488); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VIJ','Virgin Gorda Airport','VIRGIN GORDA - VGB','Y','Y','VG','VGB',18.446399688720703,-64.42749786376953); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VTZ','Visakhapatnam Airport','VISHAKHAPATNAM - IND','Y','Y','IN','IND',17.721201,83.224503); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VIS','Visalia International Airport','VISALIA - USA','Y','Y','US','USA',36.318699,-119.392998); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VBY','Visby Airport','VISBY - SWE','Y','Y','SE','SWE',57.662799835205,18.346200942993); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VIT','Vitoria Airport','VITORIA - ESP','Y','Y','ES','ESP',42.882801,-2.72447); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('KNA','Viña del mar Airport','VINA DEL MAR - CHL','Y','Y','CL','CHL',-32.9496,-71.4786); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OGZ','Vladikavkaz Beslan International Airport','VLADIKAVKAZ - RUS','Y','Y','RU','RUS',43.205101,44.606602); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VVO','Vladivostok International Airport','VLADIVOSTOK - RUS','Y','Y','RU','RUS',43.396256,132.148155); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VOG','Volgograd International Airport','VOLGOGRAD - RUS','Y','Y','RU','RUS',48.782501220703125,44.34550094604492); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PRG','Václav Havel Airport Prague','PRAGUE - CZE','Y','Y','CZ','CZE',50.1008,14.26); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('FAE','Vágar Airport','FAROE ISLANDS - FRO','Y','Y','FO','FRO',62.063599,-7.27722); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VXO','Växjö Kronoberg Airport','VAXJO - SWE','Y','Y','SE','SWE',56.929100036621094,14.72799968719482); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WAS','WASHINGTON DC - USA','WASHINGTON DC - USA','Y','N','US','USA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ISN','WILLISTON, ND - USA','WILLISTON, ND - USA','Y','Y','US','USA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OTG','WORTHINGTON - USA','WORTHINGTON - USA','Y','Y','US','USA',null,null); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YWK','Wabush Airport','WABUSH - CAN','Y','Y','CA','CAN',52.92190170288086,-66.8644027709961); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ACT','Waco Regional Airport','WACO, TX - USA','Y','Y','US','USA',31.611299514770508,-97.23049926757812); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WAE','Wadi Al Dawasir Domestic Airport','WADI AD DAWASIR - SAU','Y','Y','SA','SAU',20.504299,45.1996); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WKJ','Wakkanai Airport','WAKKANAI - JPN','Y','Y','JP','JPN',45.4042015076,141.800994873); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ALW','Walla Walla Regional Airport','WALLA WALLA, WA - USA','Y','Y','US','USA',46.09489822,-118.288002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WVB','Walvis Bay Airport','WALVIS BAY - NAM','Y','Y','NA','NAM',-22.9799,14.6453); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WKA','Wanaka Airport','WANAKA - NZL','Y','Y','NZ','NZL',-44.722954,169.248419); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WAG','Wanganui Airport','WANGANUI - NZL','Y','Y','NZ','NZL',-39.96220016479492,175.02499389648438); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('QRW','Warri Airport','WARN - NGA','Y','Y','NG','NGA',5.59611,5.81778); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WAW','Warsaw Chopin Airport','WARSAW - POL','Y','Y','PL','POL',52.1656990051,20.9671001434); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WAT','Waterford Airport','WATERFORD - IRL','Y','Y','IE','IRL',52.187198638916016,-7.08695983886719); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ALO','Waterloo Regional Airport','WATERLOO, IA - USA','Y','Y','US','USA',42.557098388671875,-92.40029907226562); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ART','Watertown International Airport','WATERTOWN, NY - USA','Y','Y','US','USA',43.99190139770508,-76.02169799804688); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ATY','Watertown Regional Airport','WATERTOWN, SD - USA','Y','Y','US','USA',44.91400146,-97.15470123); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('VTE','Wattay International Airport','VIENTIANE - LAO','Y','Y','LA','LAO',17.988300323500003,102.56300354); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WUU','Wau Airport','WAU - SDN','Y','Y','SS','SDN',7.72583,27.975); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AUW','Wausau Downtown Airport','WAUSAU, WI - USA','Y','Y','US','USA',44.9262008667,-89.6266021729); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TBN','Waynesville-St. Robert Regional Forney field','FORT LEONARD WOOD, MO - USA','Y','Y','US','USA',37.74160004,-92.14070129); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WEF','Weifang Nanyuan Airport','WEIFANG - CHN','Y','Y','CN','CHN',36.646702,119.119003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WEH','Weihai Dashuibo Airport','WEIHAI - CHN','Y','Y','CN','CHN',37.187099,122.228996); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WLG','Wellington International Airport','WELLINGTON - NZL','Y','Y','NZ','NZL',-41.3272018433,174.804992676); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MSZ','Welwitschia Mirabilis International Airport','NAMIBE - AGO','Y','Y','AO','AGO',-15.2612,12.1468); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WNZ','Wenzhou Longwan International Airport','WERIZINOU - CHN','Y','Y','CN','CHN',27.912201,120.851997); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HPN','Westchester County Airport','WESTCHESTER COUNTY, NY - USA','Y','Y','US','USA',41.06700134277344,-73.70760345458984); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BFF','Western Neb. Rgnl/William B. Heilig Airport','SCOTTSBLUFF, NE - USA','Y','Y','US','USA',41.87400055,-103.5960007); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WSZ','Westport Airport','WESTPORT - NZL','Y','Y','NZ','NZL',-41.73809814453125,171.58099365234375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WHK','Whakatane Airport','WHAKATANE - NZL','Y','Y','NZ','NZL',-37.92060089111328,176.91400146484375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WRE','Whangarei Airport','WHANGAREI - NZL','Y','Y','NZ','NZL',-35.7682991027832,174.36500549316406); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YXY','Whitehorse / Erik Nielsen International Airport','WHITEHORSE - CAN','Y','Y','CA','CAN',60.709599,-135.067001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ICT','Wichita Eisenhower National Airport','WICHITA, KS - USA','Y','Y','US','USA',37.649899,-97.433098); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BRW','Wiley Post Will Rogers Memorial Airport','BARROW, AK - USA','Y','Y','US','USA',71.285402,-156.766008); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OKC','Will Rogers World Airport','OKLAHOMA CITY, OK - USA','Y','Y','US','USA',35.393101,-97.6007); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HOU','William P Hobby Airport','HOUSTON TX - USA','Y','Y','US','USA',29.645399,-95.2789); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CLM','William R Fairchild International Airport','PORT ANGELES, WA - USA','Y','Y','US','USA',48.120201110839844,-123.5); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YWL','Williams Lake Airport','WILLIAMS LAKE - CAN','Y','Y','CA','CAN',52.1831016541,-122.054000854); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IPT','Williamsport Regional Airport','WILLIAMSPORT, PA - USA','Y','Y','US','USA',41.241798400878906,-76.92109680175781); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ILM','Wilmington International Airport','WILMINGTON, NC - USA','Y','Y','US','USA',34.270599365234375,-77.90260314941406); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YQG','Windsor Airport','WINDSOR - CAN','Y','Y','CA','CAN',42.27560043334961,-82.95559692382812); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YWG','Winnipeg / James Armstrong Richardson International Airport','WINNIPEG MB - CAN','Y','Y','CA','CAN',49.909999847399995,-97.2398986816); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OSH','Wittman Regional Airport','OSHKOSH, WI - USA','Y','Y','US','USA',43.98440170288086,-88.55699920654297); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WJU','Wonju Airport / Hoengseong Air Base (K-38/K-46)','WONJU - KOR','Y','Y','KR','KOR',37.437113,127.960051); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('BHE','Woodbourne Airport','BLENHEIM - NZL','Y','Y','NZ','NZL',-41.5182991027832,173.8699951171875); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WRL','Worland Municipal Airport','WORLAND, WY - USA','Y','Y','US','USA',43.965698,-107.950996); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WRG','Wrangell Airport','WRANGELL - USA','Y','Y','US','USA',56.48429871,-132.3699951); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WUH','Wuhan Tianhe International Airport','WUHAN - CHN','Y','Y','CN','CHN',30.774798,114.213723); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('SIA','Xi''an Xiguan Airport','XI AN - CHN','Y','Y','CN','CHN',34.376701,109.120003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('XMN','Xiamen Gaoqi International Airport','XIAMEN - CHN','Y','Y','CN','CHN',24.54400062561035,118.12799835205078); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('XFN','Xiangyang Liuji Airport','XIANGAN - CHN','Y','Y','CN','CHN',32.152222,112.291666); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('XIL','Xilinhot Airport','XILINHOT - CHN','Y','Y','CN','CHN',43.91559982299805,115.96399688720703); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('XNN','Xining Caojiabu Airport','XINING - CHN','Y','Y','CN','CHN',36.5275,102.042999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JHG','Xishuangbanna Gasa Airport','JINGHONG - CHN','Y','Y','CN','CHN',21.9739,100.760002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OAX','Xoxocotlán International Airport','OAXACA - MEX','Y','Y','MX','MEX',16.9999008179,-96.726600647); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('XUZ','Xuzhou Guanyin International Airport','XUZHOU - CHN','Y','Y','CN','CHN',34.059056,117.555278); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YKM','Yakima Air Terminal McAllister Field','YAKIMA, WA - USA','Y','Y','US','USA',46.56819916,-120.5439987); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('JOS','Yakubu Gowon Airport','JOS - NGA','Y','Y','NG','NGA',9.639829635620117,8.86905002593994); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YAK','Yakutat Airport','YAKUTAT, AK - USA','Y','Y','US','USA',59.508717,-139.660435); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('GAJ','Yamagata Airport','YAMAGATA - JPN','Y','Y','JP','JPN',38.4119,140.371002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UBJ','Yamaguchi Ube Airport','UBE - JPN','Y','Y','JP','JPN',33.930000305200004,131.279006958); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YNB','Yanbu Airport / Prince Abdul Mohsin bin Abdulaziz international Airport','YANBU - SAU','Y','Y','SA','SAU',24.144199,38.0634); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YNZ','Yancheng Airport','YANCHENG - CHN','Y','Y','CN','CHN',33.425833,120.203056); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RGN','Yangon International Airport','YANGON - MMR','Y','Y','MM','MMR',16.907300949099998,96.1332015991); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YNJ','Yanji Chaoyangchuan Airport','YANJI - CHN','Y','Y','CN','CHN',42.8828010559,129.451004028); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YNT','Yantai Penglai International Airport','YANTAI - CHN','Y','Y','CN','CHN',37.659724,120.978124); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YAO','Yaoundé Airport','YAOUNDE - CMR','Y','Y','CM','CMR',3.836040019989014,11.52350044250488); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YAP','Yap International Airport','YAP - FSM','Y','Y','FM','FSM',9.49891,138.082993); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EJA','Yariguíes Airport','BARRANCABERMEIA - COL','Y','Y','CO','COL',7.02433,-73.8068); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CRW','Yeager Airport','CHARLESTON, WV - USA','Y','Y','US','USA',38.3731,-81.593201); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('PKC','Yelizovo Airport','PETROPAVLOVSK - RUS','Y','Y','RU','RUS',53.16790008544922,158.45399475097656); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YZF','Yellowknife International Airport','YELLOWKNITE - CAN','Y','Y','CA','CAN',62.462799,-114.440002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('WYS','Yellowstone Airport','WEST YELLOWSTONE, MT - USA','Y','Y','US','USA',44.68840027,-111.1179962); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('COD','Yellowstone Regional Airport','CODY/YELLOWSTONE, WY - USA','Y','Y','US','USA',44.520198822,-109.024002075); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('RSU','Yeosu Airport','YOSU - KOR','Y','Y','KR','KOR',34.84230041503906,127.61699676513672); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YBP','Yibin Wuliangye Airport','YIBIN - CHN','Y','Y','CN','CHN',28.858431,104.526157); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YIH','Yichang Sanxia Airport','YICHANG - CHN','Y','Y','CN','CHN',30.55655,111.479988); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('INC','Yinchuan Hedong International Airport','YINCHUAN - CHN','Y','Y','CN','CHN',38.322758,106.393214); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YIW','Yiwu Airport','YIWU - CHN','Y','Y','CN','CHN',29.3446998596,120.031997681); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YOL','Yola Airport','YOLA - NGA','Y','Y','NG','NGA',9.257550239562988,12.43039989471436); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YGJ','Yonago Kitaro Airport / JASDF Miho Air Base','YONAGO - JPN','Y','Y','JP','JPN',35.492199,133.235992); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OGN','Yonaguni Airport','YONAGUNI JIMA - JPN','Y','Y','JP','JPN',24.467298,122.979827); +commit; +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YNG','Youngstown Warren Regional Airport','YOUNGSTOWN - USA','Y','Y','US','USA',41.26070023,-80.67910004); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YUM','Yuma International Airport / Marine Corps Air Station Yuma','YUMA, AZ - USA','Y','Y','US','USA',32.656601,-114.606003); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('UUS','Yuzhno-Sakhalinsk Airport','YUZHNO-SAKHAL - RUS','Y','Y','RU','RUS',46.885461,142.717466); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZAD','Zadar Airport','ZADAR - HRV','Y','Y','HR','HRV',44.108299,15.3467); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZAG','Zagreb Airport','ZAGREB - HRV','Y','Y','HR','HRV',45.7429008484,16.0687999725); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZAH','Zahedan International Airport','ZAHEDAN - IRN','Y','Y','IR','IRN',29.47570037841797,60.90620040893555); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZTH','Zakynthos International Airport "Dionysios Solomos"','ZAKINTHOS (ILE) - GRC','Y','Y','GR','GRC',37.7509,20.8843); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZAM','Zamboanga International Airport','ZAMBOANGA - PHL','Y','Y','PH','PHL',6.922420024871826,122.05999755859375); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZAZ','Zaragoza Airport','SARAGOSSE - ESP','Y','Y','ES','ESP',41.666199,-1.04155); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('TLM','Zenata – Messali El Hadj Airport','TLEMCEN - DZA','Y','Y','DZ','DZA',35.0167007446,-1.45000004768); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('DYG','Zhangjiajie Hehua International Airport','DAYONG - CHN','Y','Y','CN','CHN',29.1028,110.443001); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZHA','Zhanjiang Xintang Airport','ZHANJIANG - CHN','Y','Y','CN','CHN',21.214399,110.358002); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('CGO','Zhengzhou Xinzheng International Airport','ZHENGZHOU - CHN','Y','Y','CN','CHN',34.526497,113.849165); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('HSN','Zhoushan Putuoshan Airport','ZHOUSHAN - CHN','Y','Y','CN','CHN',29.9342,122.362); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZUH','Zhuhai Jinwan Airport','ZHUHAI - CHN','Y','Y','CN','CHN',22.006399,113.375999); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IEG','Zielona Góra-Babimost Airport','ZIELONA GORA - POL','Y','Y','PL','POL',52.138500213600004,15.7986001968); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZIG','Ziguinchor Airport','ZIGUINCHOR - SEN','Y','Y','SN','SEN',12.5556,-16.281799); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('MCZ','Zumbi dos Palmares Airport','MACEIO - BRA','Y','Y','BR','BRA',-9.51081,-35.791698); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('EVN','Zvartnots International Airport','YEREVAN - ARM','Y','Y','AM','ARM',40.1473007202,44.3959007263); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ZRH','Zürich Airport','ZURICH - CHE','Y','Y','CH','CHE',47.458056,8.548056); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AGH','Ängelholm-Helsingborg Airport','HELSINGBORG - SWE','Y','Y','SE','SWE',56.29610061645508,12.84710025787354); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('AES','Ålesund Airport, Vigra','AALESUND - NOR','Y','Y','NO','NOR',62.5625,6.1197); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OSD','Åre Östersund Airport','OSTERSUND - SWE','Y','Y','SE','SWE',63.194400787354,14.50030040741); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('YGR','Îles-de-la-Madeleine Airport','ILES DE LA MADELEINEQUE. - CAN','Y','Y','CA','CAN',47.42470169067383,-61.77809906005859); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ORB','Örebro Airport','OREBRO - SWE','Y','Y','SE','SWE',59.22370147705078,15.03800010681152); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('OER','Örnsköldsvik Airport','ORNSKOLDSVIK - SWE','Y','Y','SE','SWE',63.40829849243164,18.98999977111816); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('URC','Ürümqi Diwopu International Airport','URUMQI - CHN','Y','Y','CN','CHN',43.907100677490234,87.47419738769531); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('IST','?stanbul Airport','ISTANBUL - TUR','Y','Y','TR','TUR',41.261297,28.741951); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('LCJ','?ód? W?adys?aw Reymont Airport','LODZ - POL','Y','Y','PL','POL',51.721900939899996,19.3980998993); +Insert into ERIGHTS.AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) values ('ILZ','Žilina Airport','ZILINA - SVK','Y','Y','SK','SVK',49.231499,18.613501); +commit; diff --git a/e-rights-common/src/main/database/release/archive/2.11.0/31_RIGD-2090_AIRPORT_CITIES.sql b/e-rights-common/src/main/database/release/archive/2.11.0/31_RIGD-2090_AIRPORT_CITIES.sql new file mode 100644 index 0000000..4d3a6e5 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.11.0/31_RIGD-2090_AIRPORT_CITIES.sql @@ -0,0 +1,8 @@ +CREATE TABLE erights.airport_cities ( + iata_code VARCHAR2(20 BYTE), + country_code VARCHAR2(12 BYTE), + city_code VARCHAR2(12 BYTE), + CONSTRAINT pk_airport_cities PRIMARY KEY ( iata_code, + city_code ) + USING INDEX enable +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.11.0/32_RIGD-2090_AIRPORT_CITIES_data.sql b/e-rights-common/src/main/database/release/archive/2.11.0/32_RIGD-2090_AIRPORT_CITIES_data.sql new file mode 100644 index 0000000..7e8d214 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.11.0/32_RIGD-2090_AIRPORT_CITIES_data.sql @@ -0,0 +1,9523 @@ +REM INSERTING into ERIGHTS.AIRPORT_CITIES +SET DEFINE OFF; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SHJ','ARE','QAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOA','ITA','QAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','QAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLM','DZA','QAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JOS','NGA','QAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAD','NGA','QAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('QOW','NGA','QAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAT','POL','QAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXT','CAN','QBC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','QBH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OHD','MKD','QBI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IPN','BRA','QBK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CWB','BRA','QBN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DTM','DEU','QBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GVA','FRA','QBQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABD','IRN','QBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAP','ITA','QBV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','QBW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IBR','JPN','QCB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IMP','BRA','QCC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGE','USA','QCE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ARU','BRA','QCF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIX','BRA','QCH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VDE','ESP','QCI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','QCK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CTA','ITA','QCL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CXJ','BRA','QCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','QCQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCM','BRA','QCR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKR','NGA','QCT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QCU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','QCV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','QCW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','QCX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HUY','GBR','QCY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUF','ITA','QCZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','QDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPB','BRA','QDC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCV','ROU','QDD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POA','BRA','QDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','QDF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRO','POL','QDG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAN','GBR','QDH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACH','AUT','QDI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALG','DZA','QDJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAW','USA','QDK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','QDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POA','BRA','QDP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NVT','BRA','QDS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZL','DZA','QDT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAT','BRA','QDV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','QDW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSD','EGY','QDX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAE','KOR','QDY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORN','DZA','QDZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSR','ITA','QEA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALG','DZA','QED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','QEE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','QEF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAE','DZA','QEH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','QEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRK','POL','QEO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RZE','POL','QEP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJJ','KOR','QET'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','QEV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','QEX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QEY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','QFA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALG','DZA','QFD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QFG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AES','NOR','QFK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZG','DEU','QFL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','QFO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AES','NOR','QFQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNZ','BRA','QFS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QFT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','QFW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIJ','JPN','QFY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','QGB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BAU','BRA','QGC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEN','LBY','QGG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','QGJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('REU','ESP','QGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRS','ITA','QGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QGQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SSA','BRA','QGS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NGO','JPN','QGU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTS','HUN','QGY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','QHB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LDB','BRA','QHC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAO','BRA','QHL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RFD','USA','QHO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','QHP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADD','ETH','QHR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LTK','SYR','QHS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POA','BRA','QHV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','QHZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPV','BRA','QIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CTA','ITA','QIC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','QID'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','QIH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KEL','DEU','QII'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORN','DZA','QIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TZX','TUR','QIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NUE','DEU','QIP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','QIQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDJ','JPN','QIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPS','BRA','QIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FOR','BRA','QIX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','QJD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QJE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QJG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QJH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKR','NGA','QJK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCM','BRA','QJM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QJT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GSE','DNK','QJV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VTE','THA','QJX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BND','IRN','QKC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUN','ZMB','QKE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','QKF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXJ','PAK','QKH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRK','POL','QKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLJ','DZA','QKJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKL','NOR','QKK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAE','KOR','QKM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZZ','DEU','QKQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAY','GUF','QKR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','QKS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IBR','JPN','QKW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ENF','NOR','QKX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIJ','JPN','QKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FDH','DEU','QKZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','QLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTW','POL','QLC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALG','DZA','QLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','QLE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HEL','FIN','QLF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','QLG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','QLH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PFO','CYP','QLI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBJ','DZA','QLK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLL','ESP','QLM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSR','ITA','QLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSA','ITA','QLP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIS','PRT','QLR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GVA','CHE','QLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAP','ITA','QLT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RZE','POL','QLU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVD','ARG','QLV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THE','BRA','QLW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACE','ESP','QLY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRP','DNK','QLZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','QMC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('REG','ITA','QME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CWB','BRA','QMF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZL','DZA','QMH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','QMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QMK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SKZ','PAK','QML'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTS','SWZ','QMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','BEL','QMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WJU','KOR','QMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ETZ','FRA','QMU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TYS','USA','QMV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','QMZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDQ','IND','QNB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JOI','BRA','QNE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DEL','IND','QNF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CWB','BRA','QNH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GVA','FRA','QNJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSR','ITA','QNO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCA','CYP','QNP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POA','BRA','QNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AJU','BRA','QNT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OLB','ITA','QNU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNE','FRA','QNX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAO','BRA','QOA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','QOC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGN','DEU','QOG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSS','BRA','QOJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','BEL','QON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QOQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TZX','TUR','QOR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKJ','JPN','QOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORN','DZA','QOU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('QOW','NGA','QOW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FDH','DEU','QOX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAP','ITA','QPB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCJ','POL','QPC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPV','BRA','QPF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRW','BWA','QPH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSI','HUN','QPJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BER','DEU','QPK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCJ','POL','QPM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BCM','ROU','QPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVD','ARG','QPQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUG','ITA','QPR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QPW'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','GBR','QQD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','QQH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRS','GBR','QQX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBA','GBR','QQY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCL','CHL','QRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAO','BRA','QRD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROS','ARG','QRF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CTA','ITA','QRG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIX','BRA','QRJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGP','ESP','QRL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HKD','JPN','QRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CXJ','BRA','QRP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','QRR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CSB','ROU','QRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEG','ITA','QRT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NVT','BRA','QRU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','QRV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('QRW','NGA','QRW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','QRX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QRY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BCN','ESP','QSA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAO','BRA','QSC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNZ','BRA','QSE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJA','DZA','QSF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','QSH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JRO','TZA','QSI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGB','BRA','QSJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAE','DZA','QSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOS','NGA','QSL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAM','DEU','QSM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAV','CUB','QSN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MIR','TUN','QSO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEY','LBN','QSQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAP','ITA','QSR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TGM','ROU','QSV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','GUY','QSX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','QSY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAP','ITA','QTC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCZ','BRA','QTD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPB','BRA','QTG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMO','ITA','QTI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','QTJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZZ','DEU','QTK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HKD','JPN','QTM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','QTU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJJ','KOR','QTW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTT','MEX','QTZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KEL','DEU','QUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUP','VEN','QUC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','QUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJC','CHL','QUI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THR','IRN','QUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WJU','KOR','QUN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','QUR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAD','NGA','QUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QUV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QUW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HUY','GBR','QUY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','QVB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCZ','BRA','QVC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TMP','FIN','QVE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('REC','BRA','QVH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TMP','FIN','QVK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TMP','FIN','QVM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BAU','BRA','QVP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','QVQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HEL','FIN','QVS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACH','LIE','QVU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUD','DZA','QVX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HEL','FIN','QVZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INN','DEU','QWD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','QWJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZG','POL','QWK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRP','DNK','QWO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRP','DNK','QWQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GDN','POL','QWS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAD','ESP','QWT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJZ','ESP','QWX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EIN','NLD','QWZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCZ','BRA','QXC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OHD','MKD','QXP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RZE','POL','QXQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ODE','DNK','QXV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJJ','KOR','QYA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAN','NGA','QYB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GDN','POL','QYD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMO','NLD','QYH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMO','NLD','QYL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','QYM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTW','POL','QYO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAL','DNK','QYQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMO','NLD','QYT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WAW','POL','QYY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','QYZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIR','CHE','QZB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','QZC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGF','FRA','QZE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNE','FRA','QZH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALG','DZA','QZI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRA','LBY','QZL'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORN','DZA','QZN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLR','ITA','QZO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEY','LBN','QZQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POR','FIN','QZU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','QZV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAI','EGY','QZZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IEG','POL','RA1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','RAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','RAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKE','USA','RAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAE','SAU','RAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HLZ','NZL','RAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAI','CPV','RAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAJ','IND','RAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAK','MAR','RAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','RAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRL','ITA','RAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAO','BRA','RAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAP','USA','RAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UPG','IDN','RAQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAS','IRN','RAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAC','BGD','RAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUC','COL','RAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','RAW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','RAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLA','GBR','RAY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXR','PAK','RAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RBA','MAR','RBA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAO','BRA','RBB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','RBC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSP','USA','RBF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTH','USA','RBG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','RBH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HKD','JPN','RBJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RDD','USA','RBL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','RBM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRZ','BOL','RBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','RBP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RBR','BRA','RBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','RBS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','RBV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RCB','ZAF','RCB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYJ','USA','RCE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','RCK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','RCL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','RCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LRH','FRA','RCO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBN','USA','RCR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','RCS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GGT','BHS','RCY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','RDB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','RDC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','RDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RDG','USA','RDG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RDM','USA','RDM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LSQ','ARG','RDS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XLS','SEN','RDT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANI','USA','RDV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RDZ','FRA','RDZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('REC','BRA','REC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCE','USA','RED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBY','USA','REH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAY','GUF','REI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('REL','ARG','REL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKX','RUS','REN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('REP','KHM','REP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAP','GTM','RER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('REU','ESP','REU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXD','IND','REW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPB','BOL','REY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','REZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RFD','USA','RFD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','RFN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','RFP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGA','ARG','RGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','RGI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGN','MMR','RGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CHA','USA','RGR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','RHA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUC','ARG','RHD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','RHE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RHI','USA','RHI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHE','AUS','RHL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','RHP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RIC','USA','RIC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAY','USA','RID'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UIN','USA','RIF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POA','BRA','RIG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIR','CRI','RIK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOH','PER','RIM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','RIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','RIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WKJ','JPN','RIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','RIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RIW','USA','RIW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RIX','LVA','RIX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RIY','YEM','RIY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','RIZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VTZ','IND','RJA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAC','BGD','RJH'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXR','IND','RJI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RJK','HRV','RJK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KER','IRN','RJN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MFR','USA','RKC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUG','USA','RKD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLT','USA','RKH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDG','IDN','RKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRP','USA','RKP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FSM','USA','RKR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RKS','USA','RKS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RKT','ARE','RKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','RKU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TYS','USA','RKW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','RKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBN','USA','RLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSC','USA','RLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','RLP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AJY','NER','RLT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','RLU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLT','AUS','RMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAN','OMN','RMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HYD','IND','RMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CHA','USA','RMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','RMK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','RMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCN','DEU','RMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNE','FRA','RNE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VEL','USA','RNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TKN','JPN','RNJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','RNL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNN','DNK','RNN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','RNP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','RNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEA','USA','RNT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKI','MYS','RNU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROA','USA','ROA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROC','USA','ROC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FYV','USA','ROG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','ROH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROK','AUS','ROK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FCO','ITA','ROM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOG','COL','RON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROP','MNP','ROP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROR','PLW','ROR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VAR','BGR','ROU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROV','RUS','ROV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TVF','USA','ROX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BBA','ARG','ROY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','RPB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEY','ISR','RPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RPR','IND','RPR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBB','USA','RPX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','RRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','RRI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEW','MOZ','RRM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAB','BRA','RRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RRS','NOR','RRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TVF','USA','RRT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RTM','NLD','RS1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHI','ARG','RSA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RSD','BHS','RSD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAB','BRA','RSG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','RSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HYS','USA','RSL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','RSP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RST','USA','RST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBG','USA','RSX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RTB','HND','RTB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNQ','IND','RTC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOE','IDN','RTG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOE','IDN','RTI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUW','USA','RTL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','RTP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GSV','RUS','RTW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','RTY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANR','BEL','RU0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','RUF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RUH','SAU','RUH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELP','USA','RUI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKO','NPL','RUK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','RUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAU','IND','RUP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','RUR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','RUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEB','USA','RUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','RUU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GUA','GTM','RUV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAP','HND','RUY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','RVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLW','LBR','RVC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GYN','BRA','RVD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STD','COL','RVE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RVN','FIN','RVN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIM','ZAF','RVO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GJT','USA','RVR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIT','USA','RWB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRM','USA','RWF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGV','USA','RWI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPR','USA','RWL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LWO','UKR','RWN'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISB','PAK','RWP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AXK','YEM','RXA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RXS','PHL','RXS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTP','THA','RY1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUL','PAK','RYK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LRH','FRA','RYN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUQ','ARG','RYO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSN','USA','RYV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGL','ARG','RZA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RZE','POL','RZE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOJ','RUS','RZN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAS','IRN','RZR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','SA1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AHO','ITA','SA4'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','SA5'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAC','USA','SAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUS','USA','SAD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAF','USA','SAF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','USA','SAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RMI','SMR','SAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAC','BGD','SAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAL','SLV','SAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','SAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDH','USA','SAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IPL','USA','SAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOE','IDN','SAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLN','USA','SAW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','SAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLW','LBR','SAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBA','USA','SBA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRD','VEN','SBB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','SBC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KBL','AFG','SBF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTJ','IDN','SBG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBK','FRA','SBK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSH','USA','SBM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBN','USA','SBN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UET','PAK','SBQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','AUS','SBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTN','ZAF','SBU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','SBV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBW','MYS','SBW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBY','USA','SBY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBZ','ROU','SBZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','USA','SCC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAP','HND','SCD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','SCG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALB','USA','SCH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','SCJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCK','USA','SCK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSM','USA','SCM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCN','DEU','SCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCQ','ESP','SCQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DHN','USA','SCR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCV','ROU','SCV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCX','MEX','SCX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GPS','ECU','SCY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPT','ZAF','SDB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVB','GUY','SDC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUC','ARG','SDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSH','IRN','SDG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SDI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDJ','JPN','SDJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDL','SWE','SDL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDQ','DOM','SDQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDR','ESP','SDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIJ','JPN','SDS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEW','PAK','SDT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGP','BGD','SDW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PRC','USA','SDX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDY','USA','SDY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCQ','ESP','SE1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEB','LBY','SEB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMM','ISR','SED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IPT','USA','SEG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','SEH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNZ','BRA','SEI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ICN','KOR','SEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGM','USA','SEM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFS','GBR','SEN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJC','CIV','SEO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACT','USA','SEP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BMG','USA','SER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGM','USA','SES'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUZ','TZA','SEU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DOK','UKR','SEV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SQK','EGY','SEW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCN','DEU','SEX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KFA','MRT','SEY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEZ','SYC','SEZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SFA','TUN','SFA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTP','GLP','SFC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BAG','PHL','SFE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MXL','MEX','SFH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ESU','MAR','SFI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','SFJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEL','BRA','SFK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAI','CPV','SFL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PWM','USA','SFM'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SFO','USA','SFO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OOL','AUS','SFP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUR','USA','SFR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MNL','PHL','SFS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SFU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ARU','BRA','SFV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DYU','AFG','SGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NJC','RUS','SGC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGD','DNK','SGD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGF','USA','SGF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KCH','MYS','SGG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYP','PAK','SGI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SGJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','SGK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GYM','MEX','SGM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGN','VNM','SGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPN','IDN','SGQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZAM','PHL','SGS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('REL','ARG','SGV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSG','USA','SGW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GST','USA','SGY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SHA','CHN','SHA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SHB','JPN','SHB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SHD','USA','SHD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SHE','CHN','SHE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','SHG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SHJ','ARE','SHJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSU','LSO','SHK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAU','IND','SHL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEA','USA','SHN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNZ','CHN','SHP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OOL','AUS','SHQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YIH','CHN','SHS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','SHT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SHV','USA','SHV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SHW','SAU','SHW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSU','LSO','SHZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','NLD','SI1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIS','PRT','SI2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANK','TUR','SIC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SID','CPV','SID'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','SIF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKO','NPL','SIH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','SIJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGI','USA','SIK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','SIM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIP','UKR','SIP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIR','CHE','SIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTN','ZAF','SIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HUF','USA','SIV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MES','IDN','SIW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MFR','USA','SIY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','SIZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JPR','BOL','SJB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJC','USA','SJC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VUP','COL','SJH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJJ','BIH','SJJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','SJK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TFF','BRA','SJL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STI','DOM','SJM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABQ','USA','SJN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','CRI','SJO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJP','BRA','SJP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MPA','ZMB','SJQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','SJR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRZ','BOL','SJS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJU','PRI','SJU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRZ','BOL','SJV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJW','CHN','SJW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CTM','BLZ','SJX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJY','FIN','SJY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PIX','PRT','SJZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SKG','GRC','SK1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SKB','KNA','SKB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','SKC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DYU','UZB','SKD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSL','NOR','SKE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKO','NPL','SKH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZL','DZA','SKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','SKJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','USA','SKK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEB','GBR','SKL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','GUY','SKM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EVE','NOR','SKN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NIM','NGA','SKO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SKP','MKD','SKP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSU','LSO','SKQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMH','ETH','SKR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGD','DNK','SKS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SKV','EGY','SKV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANC','USA','SKW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLE','USA','SKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SKZ','PAK','SKZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRN','ITA','SL1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLA','MLT','SL2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPW','USA','SLB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLD','SVK','SLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WAE','SAU','SLF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','SLH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FBM','ZMB','SLI'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLK','USA','SLK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLL','ESP','SLM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLP','MEX','SLP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANI','USA','SLQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CND','BGR','SLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GUC','USA','SLT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLU','LCA','SLU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NNM','RUS','SLY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SMA','PRT','SMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','SMC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FWA','USA','SMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEX','USA','SME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SMH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SMI','GRC','SMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SMJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GGT','BHS','SML'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKI','MYS','SMM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDJ','IDN','SMQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SMR','COL','SMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANC','USA','SMU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUG','CHE','SMV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAK','MAR','SMW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUD','SEN','SMY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBM','SUR','SMZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','SNB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GYE','ECU','SNC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SID','CPV','SNE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRM','VEN','SNF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNK','AUS','SNH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAV','CUB','SNJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HHH','USA','SNL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBB','BOL','SNM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SNO','THA','SNO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUT','USA','SNP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTE','FRA','SNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJC','USA','SNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SNU','CUB','SNU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDQ','DOM','SNX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFF','USA','SNY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VST','SWE','SO9'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VCA','VNM','SOA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOC','IDN','SOC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','SOD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOF','BGR','SOF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGO','NOR','SOG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTX','COL','SOH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TOS','NOR','SOJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSU','LSO','SOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOM','VEN','SOM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','SON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAY','USA','SOP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','SOQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DEZ','SYR','SOR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTT','FIN','SOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','SOU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWD','USA','SOV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHX','USA','SOW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGA','COL','SOX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOI','GBR','SOY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','BEL','SP3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GSP','USA','SPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPC','ESP','SPC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAC','BGD','SPD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKI','MYS','SPE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAP','USA','SPF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPA','USA','SPG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SPH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPI','USA','SPI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KLX','GRC','SPJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','SPL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','DEU','SPM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPN','MNP','SPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDU','AGO','SPP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','BLZ','SPR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPS','USA','SPS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBU','MYS','SPT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPU','HRV','SPU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','SPV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FYV','USA','SPZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LSP','COL','SQB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','SQC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPC','COL','SQF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KCH','IDN','SQG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIN','VNM','SQH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SQK','EGY','SQK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SFO','USA','SQL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSB','BRA','SQM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SQO','SWE','SQO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','BLZ','SQS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SQT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLM','USA','SQV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRP','DNK','SQW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POA','BRA','SQY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HUY','GBR','SQZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSS','BRA','SRA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIT','USA','SRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JPR','BOL','SRD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVR','TCD','SRH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPB','BOL','SRJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','SRM'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NVA','COL','SRO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAU','NOR','SRP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','SRR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','SRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANI','USA','SRV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLT','USA','SRW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SSA','BRA','SSA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','SSB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PYH','COL','SSD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNQ','IND','SSE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SSG','GNQ','SSG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOO','NOR','SSJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','SSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','SSO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','SSP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','SSR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SSS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZAM','PHL','SSV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASR','TUR','SSX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRD','NOR','ST0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','BEL','ST1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EBJ','DNK','STA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIG','VEN','STB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STD','VEN','STD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUW','USA','STE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUT','USA','STG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKC','USA','STJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFF','USA','STK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STM','BRA','STM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNJ','DEU','STN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ARN','SWE','STO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STR','DEU','STR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STS','USA','STS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STT','VIR','STT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STV','IND','STV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRV','RUS','STW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STX','VIR','STX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SFN','URY','STY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','STZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VST','SWE','SU1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBI','USA','SUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GSP','USA','SUC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OWB','USA','SUD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GRB','USA','SUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUF','ITA','SUF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BXU','PHL','SUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AER','GEO','SUI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUJ','ROU','SUJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUL','PAK','SUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLO','USA','SUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUN','USA','SUN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUB','IDN','SUP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUE','ECU','SUQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQT','CAN','SUR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGJ','TZA','SUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAC','USA','SUU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUV','FJI','SUV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLH','USA','SUW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUX','USA','SUX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','SUY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','USA','SVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELP','USA','SVC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CIC','USA','SVE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COO','BEN','SVF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLT','USA','SVH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NVA','COL','SVI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','BLZ','SVK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SVL','FIN','SVL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HHH','USA','SVN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDD','AGO','SVP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','SVS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MPA','BWA','SVT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAJ','VEN','SVV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANI','USA','SVW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','SVY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SVZ','VEN','SVZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHE','AUS','SWB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','SWC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SWE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWF','USA','SWF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','SWJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAS','BHS','SWL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OKC','USA','SWO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWP','NAM','SWP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SWR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CWL','GBR','SWS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJJ','KOR','SWU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SKZ','PAK','SWV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDU','BWA','SWX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEN','MYS','SWY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCE','FRA','SXD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MPA','ZMB','SXG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDH','IRN','SXI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','IDN','SXK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRW','BWA','SXN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','SXO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANC','USA','SXQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXR','IND','SXR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KUL','MYS','SXT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXU','ETH','SXU'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SXW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PKC','USA','SYA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RBR','PER','SYC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYD','AUS','SYD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YCD','CAN','SYF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','SYH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KER','IRN','SYJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','SYK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JHG','CHN','SYM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSP','USA','SYN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','SYP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYR','USA','SYR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNE','FRA','SYT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WNS','PAK','SYW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYX','CHN','SYX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYZ','IRN','SYZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAB','AGO','SZA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZG','AUT','SZG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPN','IDN','SZH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URC','KAZ','SZI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZK','ZAF','SZK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WVB','NAM','SZM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NKG','CHN','SZO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVD','ARG','SZQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOJ','BGR','SZR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IVC','NZL','SZS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TGZ','MEX','SZT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKO','MLI','SZU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WUX','CHN','SZV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RLG','DEU','SZW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WAW','POL','SZY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZZ','POL','SZZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOD','FRA','TA1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','TAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAB','TTO','TAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAC','PHL','TAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUB','USA','TAD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAE','KOR','TAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAG','PHL','TAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAI','YEM','TAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAK','JPN','TAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','TAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAM','MEX','TAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','TAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAO','CHN','TAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAP','MEX','TAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','TAQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAS','UZB','TAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAT','SVK','TAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','TAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPG','ASM','TAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','TAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLL','EST','TAY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','TBA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NHA','VNM','TBB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSO','COL','TBD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','TBG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KLO','PHL','TBH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBJ','TUN','TBJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','TBK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDJ','IDN','TBM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBN','USA','TBN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOH','PER','TBP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','TBQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBS','GEO','TBS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBT','BRA','TBT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGO','RUS','TBW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTN','BWA','TBY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBZ','IRN','TBZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHH','BHS','TCB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMA','USA','TCC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TCE','ROU','TCE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GJA','HND','TCF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TCH','GAB','TCH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','TCK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEA','USA','TCM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBC','MEX','TCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TCO','COL','TCO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TCQ','PER','TCQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELP','USA','TCS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','TCT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','TCW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XBJ','IRN','TCX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUC','COL','TDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BXU','PHL','TDG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JIB','DJI','TDJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHI','ARG','TDL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','TDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLT','AUS','TDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HDS','ZAF','TDT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMA','USA','TDW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHX','GBR','TE1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HPN','USA','TEB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAE','DZA','TEE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHE','AUS','TEF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','TEH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIG','IND','TEI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKI','MYS','TEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TEN','CHN','TEN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','TEO'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IST','TUR','TEQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TER','PRT','TER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLZ','MOZ','TET'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TEU','NZL','TEU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAU','IND','TEZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','TFI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GVR','BRA','TFL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPA','ESP','TFS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZAH','PAK','TFT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','BEL','TG1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JHB','SGP','TGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPS','PHL','TGB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TGD','MNE','TGD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRN','FRA','TGF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEN','MYS','TGG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','TGH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIM','PER','TGI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOU','NCL','TGJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','TGL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TGM','ROU','TGM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','TGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SHE','CHN','TGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HME','DZA','TGR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZK','MOZ','TGS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TGT','TZA','TGT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TGU','HND','TGU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VAR','BGR','TGV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TGZ','MEX','TGZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EIN','BEL','TH1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNA','USA','THA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSU','LSO','THB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJC','LBR','THC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THE','BRA','THE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HLZ','NZL','THH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KFA','MRT','THI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SNO','LAO','THK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEI','MMR','THL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THN','SWE','THN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','THO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRL','USA','THP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THR','IRN','THR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THS','THA','THS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYR','GRL','THU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NIM','NER','THZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUD','HUN','TI2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUC','COL','TIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','MHL','TIC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GMB','ETH','TIE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TIF','SAU','TIF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','TIH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KDH','AFG','TII'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYC','CAN','TIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDL','MMR','TIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TIQ','MNP','TIQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TIR','IND','TIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TIU','NZL','TIU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLB','USA','TIX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KFA','MRT','TIY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JUJ','BOL','TJA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','TJC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDJ','IDN','TJG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TTJ','JPN','TJH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASR','TUR','TJK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLM','IDN','TJQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRZ','IND','TJV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANC','USA','TKA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','TKB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACC','GHA','TKD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNO','USA','TKF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLM','IDN','TKG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRG','USA','TKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNU','USA','TKL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','GTM','TKM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSU','LSO','TKO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','TKP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAC','BGD','TKR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TKS','JPN','TKS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TKU','FIN','TKU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','TKW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROT','NZL','TKZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAD','ESP','TL1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISB','PAK','TLB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEX','MEX','TLC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','TLE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','TLF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLH','USA','TLH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UPG','IDN','TLI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLL','EST','TLL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLM','DZA','TLM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','TLP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLS','FRA','TLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','TLT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLV','ISR','TLV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCP','CHL','TLX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UDI','BRA','TLZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMI','IDN','TMC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EMN','MRT','TMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','TMH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DYU','UZB','TMJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAD','VNM','TMK'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KMS','GHA','TML'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','TMM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','KIR','TMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PZO','VEN','TMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TMP','FIN','TMP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NIM','BFA','TMQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TMR','DZA','TMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TMS','STP','TMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STM','BRA','TMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','TMW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GHA','DZA','TMX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','TMY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKL','NZL','TMZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNA','CHN','TNA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPN','IDN','TNB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','USA','TNC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFG','CUB','TND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','TNF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNG','MAR','TNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HJR','IND','TNI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTH','IDN','TNJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','TNK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('USH','ATA','TNM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KHH','TWN','TNN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIR','CRI','TNO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSP','USA','TNP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','TNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXY','CAN','TNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOA','KIR','TNV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PXU','KHM','TNX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EXT','GBR','TO0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZG','POL','TO1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','BEL','TO2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAX','USA','TOA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TOB','LBY','TOB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JHB','MYS','TOD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TOE','TUN','TOE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','TOH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TOL','USA','TOL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MZI','MLI','TOM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','CRI','TOO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TOP','USA','TOP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFF','USA','TOR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TOS','NOR','TOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOU','NCL','TOU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAC','BRA','TOW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TOY','JPN','TOY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPC','ECU','TPC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEN','MYS','TPG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELY','USA','TPH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','TPJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MES','IDN','TPK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPC','ECU','TPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZS','PER','TPP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTA','AUS','TPR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPS','ITA','TPS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMA','USA','TQE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KLX','GRC','TR0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','TRB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRC','MEX','TRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEB','GBR','TRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRG','NZL','TRG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRI','USA','TRI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','TRJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DFW','USA','TRL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSP','USA','TRM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','TRO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRS','ITA','TRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLC','USA','TRT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRV','IND','TRV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','KIR','TRW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIS','UGA','TRY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRZ','IND','TRZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUE','ECU','TSC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGF','KAZ','TSE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VCE','ITA','TSF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGA','COD','TSH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUS','JPN','TSJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAF','USA','TSM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NQY','GBR','TSO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WJF','USA','TSP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSR','ROU','TSR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TST','THA','TST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSV','AUS','TSV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','TSW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRG','IDN','TSY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACE','MAR','TTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ESR','CHL','TTC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JUJ','ARG','TTG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLL','OMN','TTH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','TTI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TTJ','JPN','TTJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','TTK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAN','FJI','TTL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGA','COL','TTM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABR','USA','TTO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UPG','IDN','TTR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','TTS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KHH','TWN','TTT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNG','MAR','TTU'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','TU1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIR','IRL','TU2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUN','TUN','TU3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUA','ECU','TUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','TUB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUC','ARG','TUC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','TUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUF','FRA','TUF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BAG','PHL','TUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUI','SAU','TUI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JIM','ETH','TUJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GWD','PAK','TUK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUL','USA','TUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','TUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUN','TUN','TUN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUO','NZL','TUO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUP','USA','TUP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAB','BRA','TUR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUS','USA','TUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','TUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PZO','VEN','TUV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZM','MEX','TUY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAB','BRA','TUZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','TVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TVF','USA','TVF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUV','FJI','TVU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKK','MMR','TVY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','TWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLM','USA','TWD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TWF','USA','TWF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','TWP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKI','MYS','TWU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPS','BRA','TXF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TXG','TWN','TXG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','TXM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TXN','CHN','TXN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZK','RUS','TYA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HLD','RUS','TYD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANC','USA','TYE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','TYG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOH','PER','TYL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TYN','CHN','TYN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NRT','JPN','TYO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TYR','USA','TYR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHX','USA','TYZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJJ','BIH','TZL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAS','BHS','TZN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TZX','TUR','TZX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','UAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','UAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMI','IDN','UAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJM','AGO','UAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDX','USA','UAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UAQ','ARG','UAQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NBO','KEN','UAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','AUS','UBB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UBJ','JPN','UBJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','UBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','UBT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','UBU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAS','USA','UCC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBN','USA','UCE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLW','LBR','UCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATL','USA','UCY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EIN','NLD','UDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UDI','BRA','UDI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRS','ITA','UDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UDR','IND','UDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEW','MOZ','UEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UEO','JPN','UEO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UET','PAK','UET'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UFA','RUS','UFA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASB','UZB','UGC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','UGS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRQ','CZE','UHE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHX','GBR','UHF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UIH','VNM','UIH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCE','HND','UII'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KJA','RUS','UIK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLM','USA','UIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UIN','USA','UIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UIO','ECU','UIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UIP','FRA','UIP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','UIQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','UIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','MHL','UIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','UJE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TKS','JPN','UKB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STS','USA','UKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OVB','KAZ','UKK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAR','USA','UKN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHN','YEM','UKR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABE','USA','UKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','UKU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IKT','RUS','UKX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGL','ARG','ULA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','ULB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RCB','ZAF','ULD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','ULE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URC','MNG','ULG'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YAP','FSM','ULI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLA','GBR','ULL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRM','USA','ULM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ULN','MNG','ULN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROK','AUS','ULP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLO','COL','ULQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','ULS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JUB','UGA','ULU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZK','ZAF','ULX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KUF','RUS','ULY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IKT','MNG','ULZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUT','USA','UMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','UMC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUZ','PER','UMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','UMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','USA','UMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGO','UKR','UMY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','UNC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSU','LSO','UNE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','UNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','UNK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOI','GBR','UNT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSN','USA','UNU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CHA','USA','UOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUP','USA','UOX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STR','DEU','UPF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UPG','IDN','UPG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CHO','USA','GVE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GVR','BRA','GVR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GWD','PAK','GWD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GWL','IND','GWL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGE','USA','GWS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAD','AGO','GXG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FNL','USA','GXY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GYE','ECU','GYE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GYM','MEX','GYM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','GYP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLV','PSE','GZA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','GZO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','BEL','HA1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALF','NOR','HAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGH','SWE','HAD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SFO','USA','HAF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAJ','DEU','HAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAN','VNM','HAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLE','MDV','HAQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAU','NOR','HAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CWL','GBR','HAW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBY','USA','HBB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSG','USA','HBH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AQI','SAU','HBT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BBO','SOM','HCM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','HCQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIT','USA','HDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EAR','USA','HDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBS','USA','HDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCN','DEU','HHN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAX','USA','HHR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEB','USA','HIE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIJ','JPN','HIJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDX','USA','HIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','HIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ULN','MNG','HJT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HKG','HKG','HKG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HKT','THA','HKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNB','ZAF','HLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HLD','CHN','HLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PIT','USA','HLG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKG','USA','HLM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LST','AUS','HLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','HLV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HLZ','NZL','HLZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DNH','CHN','HMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSL','NOR','HMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SQO','SWE','HMV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EWN','USA','HNC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','HNI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','HNN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CSX','CHN','HNY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAU','KEN','HOA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOD','YEM','HOD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOG','CUB','HOG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','HOI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLI','VNM','HOO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOR','PRT','HOR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIT','USA','HOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOI','GBR','HOY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','HPE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NSK','RUS','HTG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TVC','USA','HTL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HTS','USA','HTS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HTS','USA','HTW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','HU2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FOD','USA','HUD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAP','GTM','HUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TXK','USA','HUJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSY','USA','HUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','HUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDL','SWE','HUV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HKG','CHN','HUZ'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URC','MNG','HVD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKL','NOR','HVG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HVN','USA','HVN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','HWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','HWK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','HXX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','HYC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','HYL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HYS','USA','HYS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','HZB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABE','USA','HZL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUF','USA','IAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOJ','RUS','IAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOS','NGA','IBA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RBR','PER','IBP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUV','FJI','ICI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMA','USA','ICL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ICT','USA','ICT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGA','COD','IDF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GSO','USA','IKB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FKI','COD','IKL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','IKP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','ILA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ILG','USA','ILG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','ILK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAY','USA','ILN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TCQ','PER','ILQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','ILX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ILZ','SVK','ILZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','IMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','MHL','IMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('APF','USA','IMM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IMP','BRA','IMP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','BLZ','INB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEW','MOZ','INE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VNX','MOZ','INH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INL','USA','INL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GWY','IRL','INQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSA','NRU','INU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','INX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','IOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GWY','IRL','IOR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','IPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RTM','NLD','VO1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IOA','GRC','VO4'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOS','MDG','VOH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLW','LBR','VOI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JSI','GRC','VOL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJP','BRA','VOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSB','AGO','VPE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','VPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEW','MOZ','VPY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBN','USA','VPZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLB','USA','VRB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RTM','NLD','VRD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SVL','FIN','VRK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OPO','PRT','VRL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VRN','ITA','VRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUG','ITA','VRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIM','ZAF','VRU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','BEL','VRV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOO','NOR','VRY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VSA','MEX','VSA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OPO','PRT','VSE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROV','UKR','VSG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VCA','VNM','VSO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VST','SWE','VST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCE','HND','VTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSQ','BLR','VTB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VTE','LAO','VTE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAN','FJI','VTF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGN','VNM','VTG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PIR','USA','VTN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAF','USA','VTS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOG','CUB','VTU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VTZ','IND','VTZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VUP','COL','VUP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ARH','RUS','VUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYS','FRA','VV0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','VVB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','VVC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSK','SWE','VVK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVO','RUS','VVO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GHT','DZA','VVZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LMB','MOZ','VXC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SID','CPV','VXE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VXO','SWE','VXO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','VYH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PIA','USA','VYS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','USA','WAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','WAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','WAD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DSK','PAK','WAF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WAG','NZL','WAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAR','USA','WAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','WAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','WAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','WAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GXQ','CHL','WAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','WAQ'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','WAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','WAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','WAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TIP','LBY','WAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IND','USA','WAY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','WAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOS','MDG','WBD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOS','MDG','WBE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','WBM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STL','USA','WBN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','WBQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKG','USA','WBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMC','CHL','WCA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMC','CHL','WCH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHN','YEM','WDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDB','AUS','WDI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ERF','DEU','WE1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','WE3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AHN','USA','WEA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WEF','CHN','WEE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WEH','CHN','WEH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFN','ZAF','WEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','WEP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','WET'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','WFI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','WGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EIN','NLD','WGG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGR','USA','WGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOE','IDN','WGP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','WGU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBV','GAB','WGY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABS','SDN','WHF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WHK','NZL','WHK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MON','NZL','WHO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOI','GBR','WHS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NKG','CHN','WHU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','WIE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKL','NZL','WIK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','WIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GIS','NZL','WIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','WIU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','WJA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAU','KEN','WJR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WJU','KOR','WJU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WKJ','JPN','WKJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','WKK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOA','USA','WKL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','WKN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHE','AUS','WLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSG','USA','WLB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ICT','USA','WLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WLG','NZL','WLG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','WLI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','WLK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RFD','USA','WLM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','WLO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBN','USA','WLR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WLS','WLF','WLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CIC','USA','WLW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','WMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EKO','USA','WMC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','WMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','WME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGF','USA','WMH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','WMK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','WML'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOS','MDG','WMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','USA','WMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','WMP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','WMV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','WMX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','WNA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','WND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POG','GAB','WNE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQT','CAN','WNN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LGP','PHL','WNP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','WNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WNS','PAK','WNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','WNU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANR','NLD','WOE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAJ','VEN','WOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYD','AUS','WOL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KHH','TWN','WOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GXQ','CHL','WPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQL','CAN','WPC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','WPK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','WPM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTJ','USA','WPO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('USH','CHL','WPU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRG','USA','WRG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRL','USA','WRL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','BEL','WRM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHE','AUS','WRW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOI','GBR','WRY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','WSB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELP','USA','WSD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PIT','USA','WSG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISP','USA','WSH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBN','USA','WSM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','WSR'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PVD','USA','WST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYJ','USA','WSX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WSZ','NZL','WSZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','WTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FPO','BHS','WTD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','WTK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','WTL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','WTO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','WTP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','WTT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','WUD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NUE','DEU','WUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WUH','CHN','WUH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','WUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WUS','CHN','WUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WUX','CHN','WUX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAN','CHN','WUZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJC','USA','WVI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','WVK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','WVN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANC','USA','WWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','WWK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRG','USA','WWP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSM','USA','WWT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','WWY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CKG','CHN','WXN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','WYB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FNA','SLE','WYE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WYS','USA','WYS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','XAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUF','CAN','XAD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAL','DNK','XAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRP','DNK','XAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEN','MEX','XAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUF','FRA','XAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LME','FRA','XAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','XAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAL','DNK','XAQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUA','BFA','XAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FNI','FRA','XAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCE','FRA','XAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCY','FRA','XAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQX','CAN','XAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQQ','CAN','XBB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUF','FRA','XBC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','XBE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUF','FRA','XBF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUA','BFA','XBG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XBH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XBJ','IRN','XBJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYS','FRA','XBK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JIM','ETH','XBL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCE','FRA','XBM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','XBN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUA','BFA','XBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTE','FRA','XBP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUF','FRA','XBQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OGS','CAN','XBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XBS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','XBT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNE','FRA','XBX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIQ','FRA','XBY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLN','FRA','XBZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XCB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNE','FRA','XCD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIR','FRA','XCF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCE','FRA','XCG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBG','CAN','XCI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YMM','CAN','XCL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRQ','PHL','XCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','XCP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GNB','FRA','XCQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBI','FRA','XCS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRS','FRA','XCT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGF','FRA','XCU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEH','FRA','XCW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PIS','FRA','XCX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIQ','FRA','XDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOY','BFA','XDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XDK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQB','CAN','XDM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXU','CAN','XDQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','XDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQB','CAN','XDU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXT','CAN','XDW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQD','CAN','XDZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ETZ','FRA','XED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQB','CAN','XEE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IBR','JPN','XEI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZBF','CAN','XEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZBF','CAN','XEM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','XEO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ETZ','FRA','XEP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GNV','USA','XES'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','XFB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYG','CAN','XFD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YVO','CAN','XFE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGP','CAN','XFG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQB','CAN','XFL'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YUY','CAN','XFO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBG','CAN','XFQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXU','CAN','XFV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUF','FRA','XFX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUA','BFA','XGG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROC','CAN','XGJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDD','AGO','XGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNZ','BRA','XGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UPN','MEX','UPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','UPR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLD','USA','UPT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KUF','KAZ','URA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NUE','DEU','URD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RIX','EST','URE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NVA','COL','URI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SVX','RUS','URJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','URO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDE','COL','URR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URT','THA','URT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KDH','AFG','URZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GSP','USA','USC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('USH','ARG','USH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','GUY','USI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','USL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('USN','KOR','USN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','USO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AVI','CUB','USS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JAX','USA','UST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSV','AUS','UTB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','UTD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELS','ZAF','UTE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPP','FIN','UTI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','UTK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTN','ZAF','UTN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','UTO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THS','THA','UTR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELS','ZAF','UTW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UFA','RUS','UUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XIL','MNG','UUN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UUS','RUS','UUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAT','USA','UVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOU','NCL','UVE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','UVO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','UWP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UYL','SDN','UYL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HEL','FIN','VA3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VAA','FIN','VAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','VAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GNB','FRA','VAF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRZ','BOL','VAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','VAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSM','USA','VAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SSA','BRA','VAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','VAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KNA','CHL','VAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VAR','BGR','VAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASR','TUR','VAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','VAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAN','FJI','VAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBU','TON','VAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHL','USA','VAY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRN','FRA','VAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VRN','ITA','VBS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUV','FJI','VBV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VBY','SWE','VBY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VCA','VNM','VCA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAC','USA','VCB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLA','CMR','VCC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','VCD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('REL','ARG','VCF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDP','URY','VCH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VCT','USA','VCT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ONT','USA','VCV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUG','ITA','VD0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AQJ','ISR','VDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSL','NOR','VDB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPS','BRA','VDC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VDE','ESP','VDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHI','ARG','VDM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLA','VEN','VDP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COR','ARG','VDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KKN','NOR','VDS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPX','LVA','VE2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','VEE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ODE','DNK','VEJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VEL','USA','VEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','BEL','VEU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','VEY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HYD','IND','VGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOJ','RUS','VGD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VGO','ESP','VGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSO','COL','VGZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGA','AGO','VHC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJS','USA','VHN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFE','FRA','VHY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYS','FRA','VI2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSA','ITA','VI3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAP','MEX','VIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRA','BGR','VID'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIE','AUT','VIE'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBN','USA','VIH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SNO','VNM','VII'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIL','MAR','VIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IEV','UKR','VIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIS','USA','VIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','VIU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MPM','MOZ','VJB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLZ','MOZ','VJQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VCA','VNM','VKG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JAN','USA','VKS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','USA','VKW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLD','USA','VLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','VLI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLL','ESP','VLL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRZ','BOL','VLM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OAK','USA','VLO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','VLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSQ','RUS','VLU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COR','ARG','VME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASU','PRY','VMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HUI','LAO','VNA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','VND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VNO','LTU','VNO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','VNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VNX','MOZ','VNX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JGA','IND','PBD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EJA','COL','PBE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIT','USA','PBF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBG','USA','PBG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LXA','BTN','PBH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBI','USA','PBI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','PBJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIT','USA','PBK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBM','SUR','PBM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAD','AGO','PBN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTA','AUS','PBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIR','CRI','PBP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JPR','BRA','PBQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAP','GTM','PBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HKT','THA','PBS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIG','MMR','PBU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVH','BRA','PBV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMI','IDN','PBW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','PBX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','PCA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRG','IDN','PCB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGN','COL','PCC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DBQ','USA','PCD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','PCE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','GTM','PCG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GJA','HND','PCH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAP','ITA','PCI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZM','MEX','PCM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHE','NZL','PCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TMS','STP','PCP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABE','USA','PCT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GPT','USA','PCU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PYH','COL','PDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','PDB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','PDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPS','BRA','PDF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','PDI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','PDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDP','URY','PDP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LRD','MEX','PDS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDT','USA','PDT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDX','USA','PDX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RMI','ITA','PE1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','PEA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GST','USA','PEC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PRG','CZE','PED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZZ','DEU','PEF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEG','ITA','PEG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEI','COL','PEI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PKX','CHN','PEK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUZ','PER','PEM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAF','USA','PEQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PES','RUS','PES'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POA','BRA','PET'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEW','PAK','PEW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NNM','RUS','PEX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KUF','RUS','PEZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','PFB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GST','USA','PFD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','PFJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGA','USA','PGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMY','USA','PGD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','PGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZS','BRA','PGG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DEL','IND','PGH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLM','IDN','PGK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWD','USA','PGM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','PGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRO','USA','PGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IGM','USA','PGS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGV','USA','PGV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CWB','BRA','PGZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHC','NGA','PHC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAK','USA','PHD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHF','USA','PHF'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLI','VNM','PHH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBI','USA','PHK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHL','USA','PHL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','PHO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAP','USA','PHP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUV','FJI','PHR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHS','THA','PHS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGN','VNM','PHU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHW','ZAF','PHW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHX','USA','PHX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AVN','FRA','PI0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWG','CAN','PI1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATH','GRC','PI3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRA','ROU','PI4'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PIA','USA','PIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLS','TCA','PIC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KHH','TWN','PIF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVB','BRA','PIG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PIH','USA','PIH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLA','GBR','PIK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMA','PRY','PIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CSG','USA','PIM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STM','BRA','PIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIM','PER','PIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','PIP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','GUY','PIQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PIR','USA','PIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PIS','FRA','PIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PIT','USA','PIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOH','PER','PIU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOC','BRA','PIV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PIX','PRT','PIX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRW','USA','PIZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHX','USA','PJB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGR','PRY','PJC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GWD','PAK','PJG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','CRI','PJM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWD','USA','PJS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PKB','USA','PKB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PKC','RUS','PKC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','PKE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IWD','USA','PKF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GUA','GTM','PKJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDL','MMR','PKK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','GUY','PKM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOS','BEN','PKO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','PKP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PKU','IDN','PKU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LED','RUS','PKV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDJ','IDN','PKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','PLC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIR','CRI','PLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','PLE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUR','FRA','PLG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','BLZ','PLJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGF','USA','PLK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLM','IDN','PLM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLN','USA','PLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','PLR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGN','COL','PLT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HRK','UKR','PLV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPN','IDN','PLW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLZ','ZAF','PLZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMA','TZA','PMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMC','CHL','PMC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WJF','USA','PMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VRN','ITA','PMF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGR','BRA','PMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMI','ESP','PMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','PMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMO','ITA','PMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','PMP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMR','NZL','PMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DEZ','SYR','PMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANI','USA','PMU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMV','VEN','PMV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIT','USA','PMX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('REL','ARG','PMY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNA','ESP','PNA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ICT','USA','PNC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','PNF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNH','KHM','PNH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNI','FSM','PNI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNL','ITA','PNL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YFC','USA','PNN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','PNP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNQ','IND','PNQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNS','USA','PNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUQ','CHL','PNT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDC','USA','PNU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAA','IND','PNY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNZ','BRA','PNZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VGO','ESP','PO0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLQ','ITA','PO1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUB','IRL','PO3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POA','BRA','POA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ONT','USA','POC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XLS','SEN','POD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AEX','USA','POE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGI','USA','POF'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POG','GAB','POG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FOD','USA','POH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBB','BOL','POI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAX','BRA','POJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POL','MOZ','POL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','GTM','PON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAO','BRA','POO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POP','DOM','POP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','POQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POR','FIN','POR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POS','TTO','POS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIN','JAM','POT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWF','USA','POU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSC','SVK','POV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRS','SVN','POW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','POX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POZ','POL','POZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPB','BRA','PPB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','PPC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YUM','MEX','PPE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JLN','USA','PPF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPG','ASM','PPG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVB','VEN','PPH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','PPI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMS','KAZ','PPK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','PPL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTX','COL','PPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPP','AUS','PPP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WLG','NZL','PPQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNX','MMR','PPU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOI','GBR','PPW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','PPX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','PPY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PQC','VNM','PQC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PQI','USA','PQI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','PQQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSM','USA','PQS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SMX','USA','PRB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PRC','USA','PRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PRG','CZE','PRG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEZ','SYC','PRI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWD','USA','PRL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAO','PRT','PRM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FSC','FRA','PRP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAJ','GUY','PRR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGN','MMR','PRU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSR','CZE','PRV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TYR','USA','PRX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNB','ZAF','PRY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCE','USA','PSB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSD','EGY','PSD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJU','PRI','PSE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSG','USA','PSG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KEL','DEU','PSH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPN','IDN','PSJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLF','USA','PSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHT','USA','PSM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSR','ITA','PSR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBW','IDN','PSU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOI','GBR','PSV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VCT','USA','PSX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGA','FLK','PSY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','PTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RIC','USA','PTB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIT','USA','PTD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','PTE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTG','ZAF','PTG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','PTI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQG','USA','PTK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LFT','USA','PTN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','PTO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JLN','USA','PTS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','PTT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIS','USA','PTV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RDG','USA','PTW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','PTY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OCC','ECU','PTZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUB','USA','PUB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VEL','USA','PUC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRD','ARG','PUD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','PAN','PUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUF','FRA','PUF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','PUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','PUI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUJ','DOM','PUJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEA','USA','PUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UPG','IDN','PUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KND','COD','PUN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','USA','PUO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUA','BFA','PUP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUQ','CHL','PUQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RBR','BOL','PUR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUS','KOR','PUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLR','IND','PUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOU','NCL','PUV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUW','USA','PUW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMC','CHL','PUX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUY','HRV','PUY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADZ','COL','PVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HYA','USA','PVC'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PVD','USA','PVD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','PVE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAC','USA','PVF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PVH','BRA','PVH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PVK','GRC','PVK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRA','BGR','PVN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PVO','ECU','PVO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PVR','MEX','PVR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLC','USA','PVU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBB','USA','PVW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISN','USA','PWD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','RUS','PWE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JOG','IDN','PWL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GGT','BHS','PWN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMS','KAZ','PWQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEA','USA','PWT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGA','USA','PXL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PXU','VNM','PXU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDE','COL','PYA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','PYC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','COK','PYE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NSK','RUS','PYJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TCO','COL','PYN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPC','ECU','PYO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZTH','GRC','PYR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTP','THA','PYX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PZB','ZAF','PZB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NQY','GBR','PZE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DSK','PAK','PZH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RCB','ZAF','PZL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PZO','VEN','PZO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PZU','SDN','PZU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CWB','BRA','QAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUD','DZA','QAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCY','FRA','QAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','HSL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HSN','CHN','HSN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LWB','USA','HSP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DEL','IND','HSS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MIA','USA','HST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HSV','USA','HSV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPE','TWN','HSZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HTA','RUS','HTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTP','GLP','HTB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TVL','USA','HTH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXL','CHN','HTN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HVN','USA','HTO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISG','JPN','HTR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','HTU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLL','USA','HTV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','HTZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','BEL','HU1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','HUB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJU','PRI','HUC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASM','ETH','HUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HUF','USA','HUF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','HUH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GBE','BWA','HUK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PQI','USA','HUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TXG','TWN','HUN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HUQ','LBY','HUQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ICT','USA','HUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIM','PER','HUU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HUX','MEX','HUX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HUY','GBR','HUY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDB','AUS','HVB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGA','USA','HVE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','HVK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','HVM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HVR','USA','HVR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLO','USA','HVS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EIN','NLD','HVT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OAK','USA','HWD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNU','USA','HWI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLL','USA','HWO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HYA','USA','HYA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HYD','IND','HYD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','HYF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','HYG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WNZ','CHN','HYN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLH','USA','HYR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HEL','FIN','HYV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIA','CHN','HZG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','HZK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZK','ZAF','HZV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NSK','RUS','IAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LTD','DZA','IAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','IAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IAS','ROU','IAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','IAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IBE','COL','IBE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','IBI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IBZ','ESP','IBZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVB','VEN','ICA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','SUR','ICK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RXS','PHL','ICO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YAK','USA','ICY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IDA','USA','IDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RRS','SWE','IDB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUX','USA','IDG'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JST','USA','IDI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYQ','AUS','IDK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','IDO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JLN','USA','IDP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IDR','IND','IDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTE','FRA','IDY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IEG','POL','IEG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OKA','JPN','IEJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IEV','UKR','IEV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALO','USA','IFA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','IFF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','IFJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IFN','IRN','IFN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LWO','UKR','IFO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IFP','USA','IFP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLS','BHS','IGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRC','ARG','IGB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAX','GAB','IGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','IGG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSV','AUS','IGH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SMI','TUR','IGI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IGM','USA','IGM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','IGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IGR','ARG','IGR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IGU','BRA','IGU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KCZ','JPN','IHA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IHN','YEM','IHN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','IHO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','IHU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GWY','IRL','IIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','IIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEE','RUS','IJK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','IJU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPI','USA','IJX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FUK','JPN','IKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAF','USA','IKK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUT','USA','IKO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NSK','RUS','IKS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IKT','RUS','IKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ARU','BRA','ILB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NUE','DEU','ILH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','ILI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STC','USA','ILL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ILM','USA','ILM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ILO','PHL','ILO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOU','NCL','ILP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKR','NGA','ILR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JRO','KEN','ILU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LDY','GBR','ILY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','GUY','IMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZYL','IND','IMF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEW','MOZ','IMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKO','NPL','IMK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCK','USA','IML'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','IMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WUU','CAF','IMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IMT','USA','IMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INC','CHN','INC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IND','USA','IND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TMR','DZA','INF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGL','ARG','ING'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROK','AUS','INJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAF','USA','INK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','INM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INN','AUT','INN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEI','USA','INS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GSO','USA','INT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INV','GBR','INV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PRC','USA','INW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TMR','DZA','INZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IOA','GRC','IOA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ION','COG','ION'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','IOP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOU','NCL','IOU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IPC','CHL','IPC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LET','BRA','IPG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEN','MYS','IPH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IPL','USA','IPL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IPN','BRA','IPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IPT','USA','IPT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SSA','BRA','IPU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URC','CHN','IQM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IQQ','CHL','IQQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LET','PER','IQT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','IRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNZ','BRA','IRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','IRG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UAQ','ARG','IRJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTM','USA','IRK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GJA','HND','IRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UYL','CAF','IRO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUX','COD','IRP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EVV','USA','IRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','ISA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NQY','GBR','ISC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TCO','COL','ISD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYT','TUR','ISE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISG','JPN','ISG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAP','ITA','ISH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPP','AUS','ISI'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUN','MEX','ISJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOM','IND','ISK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','ISL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISN','USA','ISN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGV','USA','ISO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISP','USA','ISP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ESC','USA','ISQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUG','USA','ISS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IST','TUR','IST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUW','USA','ISW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAO','BRA','ITA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STM','BRA','ITB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SSA','BRA','ITE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GVR','BRA','ITI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','ITK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPS','BRA','ITN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ITO','USA','ITO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','ITP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSS','BRA','ITQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UDI','BRA','ITR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPG','NIU','IUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','IUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOS','MDG','IVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IVL','FIN','IVL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','IVR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOJ','RUS','IWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IWD','USA','IWD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAC','JPN','IWO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAC','IND','IXA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXC','IND','IXC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXD','IND','IXD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOI','IND','IXG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXJ','IND','IXJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAJ','IND','IXK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXM','IND','IXM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZYL','IND','IXN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZYL','IND','IXQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXR','IND','IXR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIG','IND','IXT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAU','IND','IXV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXR','IND','IXW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHJ','IND','IXY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PWM','USA','IZG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IZO','JPN','IZO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEW','AFG','JAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','JAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','JAD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRZ','LKA','JAF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRS','FRA','JAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JAI','IND','JAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JAL','MEX','JAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOJ','BGR','JAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','JAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','JAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JAX','USA','JAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEM','USA','JBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PKB','USA','JBS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','JCB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','JCK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNZ','BRA','JCM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJJ','KOR','JCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GIB','ESP','JCU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HSV','USA','JCY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLS','USA','JDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JST','USA','JDY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDZ','CHN','JDZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','JE1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAP','HTI','JEE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COU','USA','JEF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','JEJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SSA','BRA','JEQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','JFM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JGA','IND','JGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VTZ','IND','JGB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','JGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JHB','MYS','JHB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','JHC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JHG','CHN','JHG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAK','CHN','JHN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPP','AUS','JHQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JHW','USA','JHW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRQ','CZE','JI2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVH','BRA','JIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JIB','DJI','JIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIR','ETH','JIJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JIK','GRC','JIK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JIL','CHN','JIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JIM','ETH','JIM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EBB','UGA','JIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','JIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KHN','CHN','JIU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GWD','PAK','JIW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZS','PER','JJI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JJN','CHN','JJN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','JJU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGK','IDN','JK1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JKG','SWE','JKG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JKH','GRC','JKH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','JKR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TYR','USA','JKV'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGF','USA','JLB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPH','SWE','JLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPI','USA','JLH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JLN','USA','JLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VCE','ITA','JLO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCE','FRA','JLP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JLR','IND','JLR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ARU','BRA','JLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OAK','USA','JMC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RFD','USA','JMH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','JMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JMS','USA','JMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOC','BRA','JNA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNB','ZAF','JNB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROS','ARG','JNI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','JNN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','JNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNZ','CHN','JNZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JOE','FIN','JOE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTT','ZAF','JOH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JOI','BRA','JOI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZAM','PHL','JOL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGJ','TZA','JOM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JOS','NGA','JOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RFD','USA','JOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPA','USA','JPD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JPR','BRA','JPR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAU','IND','JRH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','JRK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JRO','TZA','JRO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLV','ISR','JRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATL','USA','JSD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JSH','GRC','JSH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORL','USA','JSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GXQ','ARG','JSM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VST','SWE','JSO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JST','USA','JST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JSY','GRC','JSY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','JTH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JTR','GRC','JTR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JTY','GRC','JTY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RIX','LVA','JU2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVH','BRA','JUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','DEU','JUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AQP','PER','JUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKO','NPL','JUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSC','COL','JUO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TGU','HND','JUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYR','GRL','JUV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JUZ','CHN','JUZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABE','USA','JVI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RFD','USA','JVL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAN','USA','JXN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','LUX','KA0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','KA1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNB','SWE','KA3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGJ','ZMB','KAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAC','SYR','KAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAD','NGA','KAD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','KAF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','GUY','KAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAJ','FIN','KAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','KAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAN','NGA','KAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJM','COD','KAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KAQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAT','NZL','KAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAJ','VEN','KAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URT','MMR','KAW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','KAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUV','FJI','KAY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','KAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FNA','SLE','KBA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','KBB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','KBD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','KBF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUX','UGA','KBG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GWD','PAK','KBH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSG','CMR','KBI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYQ','AUS','KBJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIT','USA','KBK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KBL','AFG','KBL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KBM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJM','COD','KBN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LLW','MWI','KBQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HDY','MYS','KBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FNA','SLE','KBS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','MHL','KBT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDJ','IDN','KBU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KBV','THA','KBV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','KBW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','KBX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHE','NZL','KBZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URC','CHN','KCA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBM','SUR','KCB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRG','USA','KCC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','KCD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPP','AUS','KCE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SKZ','PAK','KCF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KCH','MYS','KCH'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KCJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALP','TUR','KCM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUT','USA','KCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYQ','AUS','KCS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KCZ','JPN','KCZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','KDB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NIM','BEN','KDC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','KDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KDH','AFG','KDH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UPG','IDN','KDI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLL','EST','KDL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLE','MDV','KDM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLE','MDV','KDO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','KDQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXR','PAK','KDU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUV','FJI','KDV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWD','USA','KEB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJM','COD','KEC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OKN','COG','KEE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KEG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','KEI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OVB','RUS','KEJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KEL','DEU','KEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLW','SLE','KEN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','KEQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KER','IRN','KER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JHG','MMR','KET'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','KEU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','KEW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIS','KEN','KEY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KFA','MRT','KFA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUT','USA','KFP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANK','TUR','KFS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','KGC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','KGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGF','KAZ','KGF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KGH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','KGI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','KGK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGL','RWA','KGL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FIH','COD','KGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','KGR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKI','MYS','KGU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KGW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','KGY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','KGZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAQ','UKR','KHC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ODS','UKR','KHE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KHG','CHN','KHG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KHI','PAK','KHI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUZ','IRN','KHK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZYL','MMR','KHM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZK','ZAF','KHO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RKT','OMN','KHS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KBL','AFG','KHT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KHV','RUS','KHV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUB','BWA','KHW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAT','USA','KIC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KID','SWE','KID'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','KIE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','KIF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTN','ZAF','KIG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIH','IRN','KIH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIJ','JPN','KIJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EBL','IRQ','KIK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FBM','COD','KIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIM','ZAF','KIM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIN','JAM','KIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KIQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIR','IRL','KIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIS','KEN','KIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIT','GRC','KIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAU','KEN','KIU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIV','MDA','KIV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NLA','ZMB','KIW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LDI','TZA','KIY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KIZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','BEL','KJK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OKA','JPN','KJP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KJU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','KKA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','KKB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KKC','THA','KKC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KKD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KKE','NZL','KKE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','KKF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','GUY','KKG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','KKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KKJ','JPN','KKJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','KKK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','KKL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKK','THA','KKM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KKN','NOR','KKN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','KKP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','KKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','KKU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FIH','COD','KKW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PQC','KHM','KKZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MPA','ZMB','KLB'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJL','SEN','KLC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVR','CMR','KLE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZK','RUS','KLF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOI','IND','KLH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GMA','COD','KLI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKG','KEN','KLK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','KLL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KLO','PHL','KLO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KLR','SWE','KLR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCN','DEU','KLT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KLV','CZE','KLV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','KLW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KND','COD','KLY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJL','GAB','KMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KMF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIM','ZAF','KMH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KMI','JPN','KMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIS','COG','KMK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','KML'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJM','COD','KMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','KMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KMQ','JPN','KMQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAU','SOM','KMU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOJ','RUS','KMW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AHB','SAU','KMX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZGM','ZMB','KMZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KNA','CHL','KNA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KND','COD','KND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NWI','GBR','KNF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','KNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZV','COG','KNJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KNL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJM','COD','KNM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAD','AGO','KNP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOU','NCL','KNQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','KNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KNU','IND','KNU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','KNV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','KNX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YFO','CAN','KNY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATH','GRC','KO2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','LUX','KO4'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOA','USA','KOA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPN','IDN','KOD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOE','IDN','KOE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UBP','LAO','KOG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','KOH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOJ','JPN','KOJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGF','CAF','KOL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PXU','VNM','KON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMI','COD','KOO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SNO','THA','KOP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KOR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PQC','KHM','KOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSM','USA','KOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOU','GAB','KOU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMS','KAZ','KOV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOW','CHN','KOW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','KOX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','KOY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSG','USA','KPB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','USA','KPC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHL','USA','KPD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','KPE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','GUY','KPG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUT','USA','KPH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBW','MYS','KPI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','KPK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','KPM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KPO','KOR','KPO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLT','AUS','KPP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','KPR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','KPS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TWF','USA','KPT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','KPV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','KPY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUT','USA','KQA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','KQB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','KRA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','KRB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','KRD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDL','SWE','KRF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','KRH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KRI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRK','POL','KRK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URC','CHN','KRL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRN','SWE','KRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DOK','UKR','KRQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRS','NOR','KRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRT','SDN','KRT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EDL','KEN','KRV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRY','TKM','KRW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KRX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDK','COD','KRZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSA','FSM','KSA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSD','SWE','KSD'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAD','DEU','KSF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KSG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KEO','GIN','KSI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSJ','GRC','KSJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASM','SDN','KSL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSM','USA','KSM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSO','GRC','KSO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOY','MLI','KSS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EBD','SDN','KST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','KSV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEY','ISR','KSW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EVN','TUR','KSY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ARH','RUS','KSZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','KTB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASJ','JPN','KTD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNK','IDN','KTG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','KTH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','KTK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EDL','KEN','KTL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','KTN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVB','GUY','KTO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','KTR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTT','FIN','KTT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JAI','IND','KTU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HKG','HKG','KTZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYY','BRN','KUB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','KIR','KUC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','KUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KUF','RUS','KUF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KUH','JPN','KUH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKL','NZL','KUI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','KUK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KUL','MYS','KUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KUO','FIN','KUO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KUQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','GRL','KUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KUU','IND','KUU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWJ','KOR','KUV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KUY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAE','KOR','KUZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KVA','GRC','KVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JKG','SWE','KVB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBS','AZE','KVD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KVE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KVG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MMK','RUS','KVK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','KVL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAN','FJI','KVU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KZN','RUS','KVX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','KWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRG','IDN','KWB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWE','CHN','KWE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DNK','UKR','KWG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DYU','AFG','KWH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWI','KWT','KWI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWJ','KOR','KWJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','KWK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWL','CHN','KWL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','KWM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','KWN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KWO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','KWP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','KWS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','KWT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKL','NZL','KWU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','KWV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KWX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAU','KEN','KWY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FBM','COD','KWZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','KXA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTY','ZAF','KXE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUV','FJI','KXF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','KXR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KHH','TWN','KYD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEY','LBN','KYE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYQ','AUS','KYI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','KYK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','KYN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDL','MMR','KYP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDL','MMR','KYT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KYX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KJA','RUS','KYZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNH','KHM','KZC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('REP','KHM','KZD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KZF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KZI','GRC','KZI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CIT','KAZ','KZO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VAA','FIN','LA1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','LA2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','BEL','LA3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','LAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBU','MYS','LAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','LAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAF','USA','LAF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAI','FRA','LAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','CAN','LAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAF','USA','LAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAN','USA','LAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAP','MEX','LAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEN','LBY','LAQ'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAS','USA','LAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RCH','COL','LAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAW','USA','LAW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOC','BRA','LAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','BEL','LB1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBB','USA','LBB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAM','DEU','LBC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBE','USA','LBE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBF','USA','LBF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBI','FRA','LBI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UPG','IDN','LBJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBL','USA','LBL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEW','MOZ','LBM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJM','COD','LBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWN','MYS','LBP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUV','FJI','LBS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBU','MYS','LBU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBV','GAB','LBV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MNL','PHL','LBX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTE','FRA','LBY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCG','ESP','LC1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCA','CYP','LCA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDS','ITA','LCC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTG','ZAF','LCD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCG','ESP','LCG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCH','USA','LCH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCJ','POL','LCJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAV','CUB','LCL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','LCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVB','COG','LCO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPC','COL','LCR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIR','CRI','LCS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSA','ITA','LCV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCU','IND','LDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LDB','BRA','LDB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPP','AUS','LDC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LDE','FRA','LDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LDI','TZA','LDI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HPN','USA','LDJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THN','SWE','LDK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MBL','USA','LDM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','LDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBM','SUR','LDO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHN','YEM','LDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKI','MYS','LDU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BES','FRA','LDV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','LDW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBM','GUF','LDX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LDY','GBR','LDY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AES','NOR','LE1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTA','AUS','LEA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEB','USA','LEB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SSA','BRA','LEC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LED','RUS','LED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORL','USA','LEE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSU','LSO','LEF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NKC','MRT','LEG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEH','FRA','LEH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEJ','DEU','LEJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CKY','GIN','LEK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','LEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIK','USA','LEM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEN','ESP','LEN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVB','GAB','LEO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','LEP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NQY','GBR','LEQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSU','LSO','LES'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUV','FJI','LEV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PWM','USA','LEW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','LEY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TGU','HND','LEZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RDU','USA','LFN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGQ','ETH','LFO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUC','VEN','LFR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LFT','USA','LFT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LGB','USA','LGB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CSG','USA','LGC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','BEL','LGG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GGT','BHS','LGI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LGK','MYS','LGK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','LGM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','LGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LGP','PHL','LGP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OCC','ECU','LGQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCL','ARG','LGS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUC','COL','LGT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRD','VEN','LGY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LHE','PAK','LHE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','LHG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XFN','CHN','LHK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TXG','TWN','LHN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRD','ARG','LHS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAA','USA','LHX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRS','NOR','LI0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PRG','CZE','LI1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','LIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RTM','NLD','LID'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIE','COD','LIE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIG','FRA','LIG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','LIJ'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','LIK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIM','PER','LIM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUG','ITA','LIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MII','BRA','LIP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIR','CRI','LIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LMP','ITA','LIU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','LIV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZZU','MWI','LIX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HHH','USA','LIY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KND','COD','LJA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LJG','CHN','LJG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LJU','SVN','LJU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOE','IDN','LKA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUV','FJI','LKB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','LKD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKL','NOR','LKL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKO','IND','LKO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLK','USA','LKP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JAX','USA','LKS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPY','CIV','LKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LMT','USA','LKV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JRO','TZA','LKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MME','GBR','LKZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','LL9'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LLA','SWE','LLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZK','ZAF','LLE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','LLG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TGU','HND','LLH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYY','MYS','LLM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','LLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','LLP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLH','USA','LLQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMA','ARG','LLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','LLU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','BEL','LLV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LLW','MWI','LLW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTV','USA','LLX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','LMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LMB','MWI','LMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NVA','COL','LMC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRC','ARG','LMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LME','FRA','LME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','LMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GJA','HND','LMH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','LMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUB','IRL','LMK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','LML'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LMM','MEX','LMM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INV','GBR','LMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LMP','ITA','LMP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEN','LBY','LMQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIM','ZAF','LMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEI','USA','LMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LMT','USA','LMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','LMY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','LNB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','LNC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','LNE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','LNF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','LNH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LNK','USA','LNK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','LNM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','LNO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRI','USA','LNP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LNS','USA','LNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','LNV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LNY','USA','LNY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LNZ','AUT','LNZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RJL','ESP','LO1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRS','DEU','LO2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCL','CHL','LOB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','LOC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VTE','THA','LOE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NVT','BRA','LOI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNO','USA','LOL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGU','MEX','LOM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GHA','DZA','LOO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GBE','BWA','LOQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RFD','USA','LOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEX','USA','LOU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CHO','USA','LOW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEX','USA','LOZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPA','ESP','LPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SMX','USA','LPC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVD','ARG','LPG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPI','SWE','LPI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PYH','VEN','LPJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPL','GBR','LPL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','LPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBN','USA','LPO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPQ','LAO','LPQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYJ','USA','LPS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIS','PRT','LPV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPX','LVA','LPX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EBU','FRA','LPY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GSP','USA','LQK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHD','AFG','LQN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KZI','GRC','LRA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','LRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LRD','USA','LRD'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UET','PAK','LRG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LRH','FRA','LRH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','LRK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LRM','DOM','LRM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','LRO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YFO','CAN','LRQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LRS','GRC','LRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELP','USA','LRU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCS','VEN','LRV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUS','USA','LSB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LSC','CHL','LSC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LSE','USA','LSE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CSG','USA','LSF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDL','MMR','LSH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','LSJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIR','CRI','LSL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWN','MYS','LSM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOD','USA','LSN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LRH','FRA','LSO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LSP','VEN','LSP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LSQ','CHL','LSQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','USA','LSR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTP','GLP','LSS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWN','MYS','LSU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTJ','IDN','LSW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTJ','IDN','LSX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNK','AUS','LSY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUY','HRV','LSZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTG','ZAF','LTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LST','AUS','LTB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVR','TCD','LTC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LTD','LBY','LTD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','LTF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DNH','MNG','LTI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LTK','SYR','LTK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LTL','GAB','LTL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVB','GUY','LTM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEN','MEX','LTO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSV','AUS','LTP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LDY','IRL','LTR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAW','USA','LTS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','LTV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VST','SWE','LU1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVB','GUY','LUB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WVB','NAM','LUD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLD','SVK','LUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUG','CHE','LUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCE','HND','LUI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTT','ZAF','LUJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUL','USA','LUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLU','CHN','LUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDU','AGO','LUO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','LUR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FIH','COD','LUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','LUU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','LUV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','LUX','LUX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TGT','TZA','LUY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANE','FRA','LVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SSA','BRA','LVB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LVI','ZMB','LVI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJC','USA','LVK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIH','IRN','LVP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSA','ITA','LVR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBO','PHL','LWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LWB','USA','LWB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOE','IDN','LWE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','LWI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OWB','USA','LWL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EVN','ARM','LWN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LWO','UKR','LWO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LWT','USA','LWT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBU','MYS','LWY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LXA','CHN','LXA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JHG','LAO','LXG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EAR','USA','LXN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LXR','EGY','LXR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZGM','ZMB','LXU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRP','DNK','LY1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYA','CHN','LYA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CYB','CYM','LYB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRS','GBR','LYE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYG','CHN','LYI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMI','IDN','LYK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYP','PAK','LYP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYR','SJM','LYR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDB','AUS','LYT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','LYX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGA','COD','LZA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LHW','CHN','LZD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LZH','CHN','LZH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAD','AGO','LZM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATH','GRC','MA0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','BEL','MA2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','MA4'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','BEL','MA5'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAB','BRA','MAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATL','USA','MAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAT','USA','MAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAF','USA','MAF'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAH','ESP','MAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYZ','MWI','MAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','MAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAM','MEX','MAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAN','GBR','MAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAO','BRA','MAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THS','THA','MAQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAR','VEN','MAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','MAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','MAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','MHL','MAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGI','USA','MAW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUD','SEN','MAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAS','BHS','MAY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJU','PRI','MAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MBA','KEN','MBA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHE','AUS','MBB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KDN','GAB','MBC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MBE','JPN','MBE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PIR','USA','MBG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDB','AUS','MBH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGJ','TZA','MBI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MBJ','JAM','MBJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGB','BRA','MBK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MBL','USA','MBL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGH','ZAF','MBM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','MBN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOH','PER','MBP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGL','UGA','MBQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KFA','MRT','MBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MBS','USA','MBS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LGP','PHL','MBT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MBV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','MBW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAO','BRA','MBZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KEO','GIN','MCA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','MCG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RCH','COL','MCJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCK','USA','MCK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCE','MCO','MCM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCP','BRA','MCP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNQ','ARG','MCS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCT','OMN','MCT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','MCV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCW','USA','MCW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','MCY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCZ','BRA','MCZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVD','ARG','MDD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUW','USA','MDF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDG','CHN','MDG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ENU','NGA','MDI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RDM','USA','MDJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDL','MMR','MDL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','MDM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','MDO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','MDP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','MDU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MZC','GAB','MDV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDZ','ARG','MDZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','BEL','ME1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNJ','DEU','ME3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEC','ECU','MEC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MED','SAU','MED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDJ','TCD','MEF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAD','AGO','MEG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FEZ','MAR','MEK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','MEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RDZ','FRA','MEN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHF','USA','MEO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JHB','MYS','MEP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOD','USA','MER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','MET'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCP','BRA','MEU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGA','COD','MEW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEX','MEX','MEX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MFA','TZA','MFA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLE','USA','MFD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MFE','USA','MFE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KHI','PAK','MFG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUW','USA','MFI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUV','FJI','MFJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSV','AUS','MFL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MFM','MAC','MFM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MFO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','MFP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','MFS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MFU','ZMB','MFU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBY','USA','MFV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMF','FRA','MFX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AXK','YEM','MFY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MFZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','MGB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBN','USA','MGC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JPR','BOL','MGD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATL','USA','MGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGF','BRA','MGF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','MGG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGH','AUS','MGH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWF','USA','MGJ'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEI','MMR','MGK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','MGL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGN','COL','MGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAX','GAB','MGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MGP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGQ','SOM','MGQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAR','COK','MGS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','MGT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGN','MMR','MGU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','MGV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGW','USA','MGW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTP','MMR','MGZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','GUY','MHA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHE','USA','MHE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','MHF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','MHG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHH','BHS','MHH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JIB','DJI','MHI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGA','ETH','MHJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHK','USA','MHK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','MHM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBF','USA','MHN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RDD','USA','MHS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','MHU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WJF','USA','MHV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPG','COK','MHX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MHY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MIA','USA','MIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MID','MEX','MID'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAF','USA','MIF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','MIH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MIK','FIN','MIK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','MIM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JLN','USA','MIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MIR','TUN','MIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MIU','NGA','MIU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHL','USA','MIV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LET','COL','MIX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','MIZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','MJA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJC','CIV','MJC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOO','NOR','MJF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AVI','CUB','MJG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TIP','LBY','MJI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTA','AUS','MJK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJL','GAB','MJL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DZA','MDG','MJN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WDH','NAM','MJO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRM','USA','MJQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHI','ARG','MJR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJV','ESP','MJV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHL','USA','MJX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HTA','RUS','MJZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KLV','CZE','MKA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKU','GAB','MKB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKE','USA','MKE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKG','USA','MKG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WUU','CAF','MKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FTX','COG','MKJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBW','MYS','MKM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','MKN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','MKP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','MKQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADD','ETH','MKS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRM','USA','MKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYQ','AUS','MKV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','MKW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKY','AUS','MKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLA','MLT','MLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLB','USA','MLB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLE','MDV','MLE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDC','USA','MLF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSL','FRA','MLH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AHN','USA','MLJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNS','USA','MLK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLM','MEX','MLM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLN','ESP','MLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLO','GRC','MLO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBO','PHL','MLP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','MLR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLS','USA','MLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGR','USA','MLT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLU','USA','MLU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','MLV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLW','LBR','MLW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASR','TUR','MLX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','MLY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDP','URY','MLZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPH','SWE','MMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TKN','JPN','MMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MME','GBR','MME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPC','CMR','MMF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','MMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAT','USA','MMH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TYS','USA','MMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MMJ','JPN','MMJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MMK','RUS','MMK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKX','USA','MML'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKY','AUS','MMM'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAI','CPV','MMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGN','COL','MMP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGJ','ZMB','MMQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YAM','USA','MMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HPN','USA','MMU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MMY','JPN','MMY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KBL','AFG','MMZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GES','IDN','MNA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POL','MOZ','MNC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','MNE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAN','FJI','MNF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMB','LKA','MNH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MNI','MSR','MNI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','KIR','MNK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MNL','PHL','MNL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMI','COD','MNO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','MNP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FBM','ZMB','MNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGN','MMR','MNU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','MNV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAO','BRA','MNX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','MNY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','MO1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOB','USA','MOB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOD','ARG','MOD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDL','MMR','MOE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAR','COK','MOI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KEO','CIV','MOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOL','NOR','MOL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MON','NZL','MON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','MOO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','MOQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TYS','USA','MOR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','USA','MOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSM','USA','MOU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','MOX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','MOZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MPA','NAM','MPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WNS','PAK','MPD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MPF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KLO','PHL','MPH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','MPI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MPK','KOR','MPK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MPL','FRA','MPL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABE','USA','MPO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AQJ','JOR','MPQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLN','USA','MPR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTV','USA','MPV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DOK','UKR','MPW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAY','GUF','MPY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLA','MLT','MQ1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHE','AUS','MQA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQX','SPM','MQC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UFA','RUS','MQF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSB','BRA','MQH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOO','NOR','MQN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TCO','COL','MQR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CIW','VCT','MQS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MZL','COL','MQU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABY','USA','MQW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNA','USA','MQY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLA','MLT','MR0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGR','USA','MRB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRD','VEN','MRD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUZ','KEN','MRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','MRH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TGU','HND','MRJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('APF','USA','MRK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MRM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLT','USA','MRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRO','NZL','MRO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYQ','AUS','MRP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRQ','PHL','MRQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOH','ECU','MRR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRS','FRA','MRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','MRT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRU','MUS','MRU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRV','RUS','MRV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABD','IRN','MRX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','MRZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUF','CAN','MS1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','MSA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHX','USA','MSC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','MSE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','MSF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSU','LSO','MSG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDJ','IDN','MSI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSJ','JPN','MSJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAS','BHS','MSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSL','USA','MSL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FIH','COD','MSM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSN','USA','MSN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSO','USA','MSO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSP','USA','MSP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSQ','BLR','MSQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSS','USA','MSS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','NLD','MST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSU','LSO','MSU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASM','ERI','MSW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIS','COG','MSX'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSY','USA','MSY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HLZ','NZL','MTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQG','USA','MTC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STM','BRA','MTE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVH','BRA','MTG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EYW','USA','MTH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTJ','USA','MTJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','MTL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','MTM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTO','USA','MTO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROK','AUS','MTQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','MTR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTT','MEX','MTT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GRB','USA','MTW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTY','MEX','MTY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAJ','DEU','MU1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUB','BWA','MUB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','MUC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOA','USA','MUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GYM','MEX','MUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUH','EGY','MUH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAR','COK','MUK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIS','KEN','MUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHE','AUS','MUQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYY','MYS','MUR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLI','USA','MUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VPS','USA','MUU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORN','DZA','MUW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIS','COG','MUY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUZ','TZA','MUZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVB','GAB','MVB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVD','URY','MVD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKX','USA','MVE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MZC','GAB','MVG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','MVH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','MVK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGA','USA','MVM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MWA','USA','MVN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDJ','TCD','MVO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSQ','BLR','MVQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPS','BRA','MVS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','MVT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCY','FRA','MVV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLI','USA','MVW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVY','USA','MVY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','MWB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DSK','PAK','MWD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','MWF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MWH','USA','MWH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','MWI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIN','IDN','MWK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DFW','USA','MWL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRM','USA','MWM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAY','USA','MWO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','MWP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGN','MMR','MWQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHW','ZAF','MWR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MWU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BMV','KHM','MWV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','MWY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MWZ','TZA','MWZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEM','USA','MXA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UPG','IDN','MXB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEZ','USA','MXC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','MXD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAY','USA','MXE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOS','USA','MXG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','MXH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABV','NGA','MXJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MXK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MXL','MEX','MXL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','MXM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAI','FRA','MXN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DBQ','USA','MXO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HRK','UKR','MXR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','MXT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IKT','MNG','MXV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ULN','MNG','MXW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MXX','SWE','MXX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','MXY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MXZ','CHN','MXZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','MYA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYB','GAB','MYB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLN','VEN','MYC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYD','KEN','MYD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLS','BHS','MYG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGA','USA','MYH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYJ','JPN','MYJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','MYK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVB','GUY','MYM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHN','YEM','MYN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHD','TKM','MYP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJB','IND','MYQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLU','MMR','MYT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','MYU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MYX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYY','MYS','MYY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DEL','IND','MZA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYW','MOZ','MZB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUE','ECU','MZD'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TXG','TWN','MZG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASR','TUR','MZH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MZI','MLI','MZI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','KIR','MZK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MZL','COL','MZL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MZN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOG','CUB','MZO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MZT','MEX','MZT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAT','IND','MZU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYY','MYS','MZV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GRJ','ZAF','MZY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TKS','JPN','NA1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','NA2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','NAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PYH','COL','NAD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAG','IND','NAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVB','GUY','NAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBZ','AZE','NAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OGZ','RUS','NAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','NAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAO','CHN','NAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAP','ITA','NAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','NAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAS','BHS','NAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASR','TUR','NAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NBO','KEN','NB1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','NBA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KZN','RUS','NBC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','NBH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NBO','KEN','NBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','NBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THE','BRA','NBV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLS','TCA','NCA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCE','FRA','NCE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LDI','TZA','NCH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCL','GBR','NCL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PVD','USA','NCO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTS','ZAF','NCS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASB','UZB','NCU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCY','FRA','NCY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDB','MRT','NDB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXU','IND','NDC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGQ','KEN','NDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','NDI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDJ','TCD','NDJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','NDK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GMB','ETH','NDM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','NDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDR','MAR','NDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','NDS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDU','NAM','NDU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','NDV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOI','GBR','NDY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SNN','IRL','NE1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STR','DEU','NE2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JAX','USA','NEA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHI','ARG','NEC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UFA','RUS','NEF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MBJ','JAM','NEG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GMB','ETH','NEJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JIM','ETH','NEK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHL','USA','NEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HLD','RUS','NER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GGT','BHS','NET'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NEV','KNA','NEV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NJC','RUS','NFG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNO','USA','NFL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WLS','TON','NFO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEN','LBY','NFR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','NGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NGB','CHN','NGB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIJ','VGB','NGD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NGE','CMR','NGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HDS','ZAF','NGL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','NGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NGO','JPN','NGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','NGR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NGS','JPN','NGS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','NGX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OAK','USA','NGZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRT','SDN','NHF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBY','USA','NHK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','NHT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','NHV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','NI2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJC','LBR','NIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NIC','CYP','NIC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','NIE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','KIR','NIG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUD','SEN','NIK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWD','USA','NIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FTX','COD','NIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','NIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LRH','FRA','NIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KFA','MLI','NIX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IPL','USA','NJK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBV','GAB','NKA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','NKB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NKC','MRT','NKC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NKG','CHN','NKG'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRG','USA','NKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','NKN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFX','CMR','NKS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSU','LSO','NKU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIS','COG','NKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NLD','MEX','NLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','AUS','NLF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOU','NFK','NLK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHE','AUS','NLL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NLP','ZAF','NLP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ODS','UKR','NLV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBD','UZB','NMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RSD','BHS','NMC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','NMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','NMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','NMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RBA','MAR','NNA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','NNB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NNG','CHN','NNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSB','NAM','NNI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','NNL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NNM','RUS','NNM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEI','THA','NNT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPS','BRA','NNU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYD','AUS','NOA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIR','CRI','NOB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','NOD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','NOE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAQ','RUS','NOI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NJC','RUS','NOJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','NOL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','NOM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','KIR','NON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STS','USA','NOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOU','NCL','NOU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDD','AGO','NOV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NPE','NZL','NPE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','NPG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLC','USA','NPH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NPL','NZL','NPL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CND','ROU','NPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KCH','IDN','NPO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','NPP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PVD','USA','NPT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','NPU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEM','USA','NQA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSB','BRA','NQL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSC','COL','NQU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NQY','GBR','NQY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','NRA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOD','USA','NRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','NRD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIL','IDN','NRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','NRG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NRK','SWE','NRK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOI','GBR','NRL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EMN','MLI','NRM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJU','PRI','NRR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','NRY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','NSA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','NSF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THR','IRN','NSH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YAO','CMR','NSI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NSK','RUS','NSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','NSM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NSN','NZL','NSN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MNL','PHL','NSP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TST','THA','NST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CTA','ITA','NSY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAN','FJI','NTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OXR','USA','NTD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTG','CHN','NTG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','NTI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','NTL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','NTN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SID','CPV','NTO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('APW','TON','NTT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KCH','IDN','NTX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTY','ZAF','NTY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EBD','SDN','NUD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NUE','DEU','NUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','USA','NUI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','NUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','NUP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYQ','AUS','NUR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','NUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EDL','KEN','NUU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLI','USA','NUW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NVA','COL','NVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JLN','USA','NVD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNE','FRA','NVS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRZ','IND','NVY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','NW1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DZA','COM','NWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEB','USA','NWH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NWI','GBR','NWI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','NWT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHL','USA','NXX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HPN','USA','NYC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NBO','KEN','NYE'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KMS','GHA','NYI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','NYN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGA','AGO','NZA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJC','GIN','NZE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOS','USA','NZW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYD','AUS','OAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OAK','USA','OAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JPR','BRA','OAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCE','HND','OAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZK','RUS','OB1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','OBA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','OBD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','OBF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBM','BRA','OBI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANR','BEL','OBL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','OBM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OBO','JPN','OBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AVN','FRA','OBS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','OBX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MIA','USA','OCA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OCC','ECU','OCC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GGG','USA','OCH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIN','JAM','OCJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','OCK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLD','USA','OCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUC','COL','OCV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UYL','CAF','ODA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SVQ','ESP','ODB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','ODD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ODE','DNK','ODE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','ODH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','ODL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWN','MYS','ODN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','ODR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ODS','UKR','ODS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JAX','USA','ODW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GRI','USA','ODX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPQ','LAO','ODY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRL','USA','OEA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','OEG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZK','RUS','OEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORL','USA','OEO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OER','SWE','OER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('REL','ARG','OES'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGO','CIV','OFI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','OFJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OFK','USA','OFK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPG','ASM','OFU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBF','USA','OGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CHS','USA','OGB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLC','USA','OGD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OGG','USA','OGG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','GUY','OGL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OGN','JPN','OGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVR','TCD','OGR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OGS','USA','OGS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HME','DZA','OGX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OGZ','RUS','OGZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','OH0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OHD','MKD','OHD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSB','NAM','OHI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEW','PAK','OHT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FKL','USA','OIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FSZ','JPN','OIM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OIT','JPN','OIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OKA','JPN','OKA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OKC','USA','OKC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TKN','JPN','OKE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FTX','COG','OKG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NQT','GBR','OKH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OKJ','JPN','OKJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUL','USA','OKM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OKN','GAB','OKN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','OKQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UFA','RUS','OKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSB','NAM','OKU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','OKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OLB','ITA','OLB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GIZ','SAU','GIZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GJA','HND','GJA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','GJR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GJT','USA','GJT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','GKA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','DEU','GKE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','GKH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROK','AUS','GKL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','GKN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MZC','GAB','GKO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TYS','USA','GKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLA','GBR','GLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLD','USA','GLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DFW','USA','GLE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','CRI','GLF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','GLG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLH','USA','GLH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','GLI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGA','SOM','GLK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSL','NOR','GLL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','GLM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHX','GBR','GLO'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','GLP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','GLQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLN','USA','GLR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOU','USA','GLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLT','AUS','GLT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','USA','GLV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNA','USA','GLW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','GLX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EIN','NLD','GLZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GMA','COD','GMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GMB','ETH','GMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','GMC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZK','BLR','GME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FTX','COG','GMM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HKK','NZL','GMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','GMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UDI','BRA','GMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','GMY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VNO','BLR','GNA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GND','GRD','GND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANR','BEL','GNE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KHH','TWN','GNI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOC','BRA','GNM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPC','ARG','GNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MES','IDN','GNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','GNU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GNV','USA','GNV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUD','HUN','GO2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','GOC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WDH','NAM','GOG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','GOH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OKC','USA','GOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEC','USA','GOL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HFD','USA','GON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','GOO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIR','ETH','GOR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOT','SWE','GOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOU','CMR','GOU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMB','LKA','GOY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOJ','BGR','GOZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAC','BRA','GPB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','CRI','GPL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','GPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIG','FRA','XGT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLN','FRA','XHE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYG','CAN','XHM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCZ','BRA','XHR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YCD','CAN','XHS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EAS','FRA','XHY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQY','CAN','XI0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXU','CAN','XIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSS','CAN','XID'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGK','CAN','XIF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OGS','CAN','XII'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MXZ','CHN','XIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YDF','CAN','XIP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','XIQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGD','DNK','XJE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBG','CAN','XJL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBG','CAN','XJQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NIM','BFA','XKA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPQ','LAO','XKH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXT','CAN','XKO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','XKS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HKG','HKG','XKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQM','CAN','XKV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUA','BFA','XKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FNI','FRA','XLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTH','CAN','XLB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BES','FRA','XLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XLE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','XLG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BES','FRA','XLI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOD','FRA','XLR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XLS','SEN','XLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGF','FRA','XLT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUA','BFA','XLU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUF','CAN','XLV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','XLW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEH','FRA','XLX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YHZ','CAN','XLY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YHZ','CAN','XLZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DVO','PHL','XMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKX','USA','XMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSL','FRA','XMF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKO','NPL','XMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','XMH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LDI','TZA','XMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AVN','FRA','XMK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','XML'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XMN','CHN','XMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXY','CAN','XMP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUE','ECU','XMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNE','FRA','XMU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JUJ','ARG','XMV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JUJ','ARG','XMX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','AUS','XMY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAD','VNM','XNG'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XNN','CHN','XNN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGD','DNK','XNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CIH','CHN','XNT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLN','BRA','XOE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUF','CAN','XOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQM','CAN','XON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XOY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUA','BFA','XPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JUJ','ARG','XPD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCL','GBR','XPF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TGU','HND','XPL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDR','USA','XPR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','XPS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCL','GBR','XPT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','XPW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBG','CAN','XPX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','XQD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','XQG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NQT','GBR','XQM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','CRI','XQP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YCD','CAN','XQU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCM','BRA','XRB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','XRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFE','FRA','XRI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEG','ITA','XRJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XRM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQB','CAN','XRP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLN','FRA','XRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','XRT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XRX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XRY','ESP','XRY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','XSF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTH','CAN','XSI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XSJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVE','FRA','XSL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBY','USA','XSM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZAM','PHL','XSO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXB','FRA','XSQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XSS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XSV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','FRA','XSW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZR','FRA','XSY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIS','PRT','XSZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GVA','FRA','XTC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGF','FRA','XTE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','XTH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MME','GBR','XTK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XTN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLT','AUS','XTO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','XTR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GVA','FRA','XTS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVE','FRA','XTU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXU','CAN','XTY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XUZ','CHN','XUZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAN','GBR','XVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHX','GBR','XVB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAN','GBR','XVC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUF','FRA','XVD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','XVE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYS','FRA','XVF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MME','GBR','XVG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','XVH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','XVJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VCA','VNM','XVL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ETZ','FRA','XVN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSL','FRA','XVO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','XVP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMF','FRA','XVR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XVS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNS','FRA','XVT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCL','GBR','XVU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUF','FRA','XVZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZR','CAN','XWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EDI','GBR','XWB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBA','GBR','XWD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','XWE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAN','GBR','XWH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPL','GBR','XWI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','XWO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZR','CAN','XWY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VNS','IND','XXB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGN','MMR','XYE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','XYR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YOW','CAN','XZB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQM','CAN','XZK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','XZY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INL','CAN','YAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQD','CAN','YAD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INL','CAN','YAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYJ','CAN','YAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YAK','USA','YAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YAM','CAN','YAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FKI','COD','YAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YAP','FSM','YAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYJ','CAN','YAQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAN','FJI','YAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTS','CAN','YAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWG','CAN','YAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YDF','CAN','YAY'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YBB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBC','CAN','YBC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YCD','CAN','YBF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','YBH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YBI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YBK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','YBL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXU','CAN','YBN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBP','CHN','YBP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YCD','CAN','YBQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQT','CAN','YBS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTH','CAN','YBT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYJ','CAN','YBW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YMM','CAN','YBY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQQ','CAN','YCA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSS','CAN','YCC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YCD','CAN','YCD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXU','CAN','YCE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YCG','CAN','YCG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZBF','CAN','YCH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YCK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZBF','CAN','YCL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTS','CAN','YCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YFO','CAN','YCP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTH','CAN','YCR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YCS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBG','CAN','YCV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLI','CAN','YCW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YCY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','CAN','YDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YAK','CAN','YDB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYC','CAN','YDC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YDF','CAN','YDF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YSJ','CAN','YDG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQX','CAN','YDH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YFO','CAN','YDJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSG','CAN','YDL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWG','CAN','YDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBG','CAN','YDO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YDP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXJ','CAN','YDQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQQ','CAN','YDS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YSM','CAN','YDU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWG','CAN','YDV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YSM','CAN','YDW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXT','CAN','YDX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJJ','KOR','YEC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYC','CAN','YEG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YEK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YSB','CAN','YEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YSB','CAN','YEM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRS','GBR','YEO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','YEP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','YEQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQU','CAN','YET'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYR','CAN','YEU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','CAN','YEV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YVO','CAN','YEY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTS','CAN','YFA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YFB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYY','CAN','YFE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YFG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQT','CAN','YFH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YFJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YFL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YFO','CAN','YFO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YFR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YFX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQQ','CAN','YGB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYJ','CAN','YGG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGJ','JPN','YGJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGK','CAN','YGK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWG','CAN','YGM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','YGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGP','CAN','YGP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGR','CAN','YGR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYD','CAN','YGS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGP','CAN','YGV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YGW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YHA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQD','CAN','YHB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INL','CAN','YHD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLI','CAN','YHE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YHG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YHI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUF','CAN','YHM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTS','CAN','YHN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWG','CAN','YHP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXY','CAN','YHT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBG','CAN','YHU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YHZ','CAN','YHZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYU','CAN','YIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YDF','CAN','YIF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YIH','CHN','YIH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALA','CHN','YIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YIV'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXJ','CAN','YJF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRG','CAN','YJO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQU','CAN','YJP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YKA','CAN','YKA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YFO','CAN','YKC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YKE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXU','CAN','YKF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YMM','CAN','YKJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YKM','USA','YKM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YKN','USA','YKN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YUY','CAN','YKQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GDX','RUS','YKS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXT','CAN','YKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YUY','CAN','YKX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXE','CAN','YKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YMM','CAN','YLB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTS','CAN','YLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YLE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQT','CAN','YLH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOK','FIN','YLI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXE','CAN','YLL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','CAN','YLM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDG','CHN','YLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWG','CAN','YLO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZV','CAN','YLP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQB','CAN','YLQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTH','CAN','YLR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YVO','CAN','YLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYR','CAN','YLT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YLW','CAN','YLW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXY','CAN','YMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YKA','CAN','YMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','CAN','YMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYY','CAN','YME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYJ','CAN','YMF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQT','CAN','YMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YMH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INL','CAN','YMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQR','CAN','YMJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBG','CAN','YML'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTS','CAN','YMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','YMP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZS','PER','YMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBG','CAN','YMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','YMU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YOW','CAN','YMW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGP','CAN','YNA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YNB','SAU','YNB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YOW','CAN','YND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTH','CAN','YNE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YNG','USA','YNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXJ','CAN','YNH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YNI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YNJ','CHN','YNJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YFO','CAN','YNL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YVO','CAN','YNM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWG','CAN','YNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YVO','CAN','YNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YNT','CHN','YNT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YOA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','CAN','YOC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQT','CAN','YOG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXJ','CAN','YOJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IBR','JPN','YOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXJ','CAN','YOP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AQJ','ISR','YOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YOW','CAN','YOW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQB','CAN','YOY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQQ','CAN','YPB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YPC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWG','CAN','YPG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXT','CAN','YPI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YPJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWG','CAN','YPM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGP','CAN','YPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YSM','CAN','YPP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGK','CAN','YPQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQQ','CAN','YPT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQQ','CAN','YPW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YSM','CAN','YPY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQB','CAN','YQB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YQC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYC','CAN','YQF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQG','CAN','YQG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YSJ','CAN','YQI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INL','CAN','YQK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQM','CAN','YQM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQT','CAN','YQN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQR','CAN','YQR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXU','CAN','YQS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQR','CAN','YQV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXE','CAN','YQW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQY','CAN','YQY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQZ','CAN','YQZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YRB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXT','CAN','YRD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YRG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBG','CAN','YRI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INL','CAN','YRL'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYC','CAN','YRM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','YRR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YRT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YLW','CAN','YRV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQY','CAN','YSA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXH','CAN','YSD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YSM','CAN','YSF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YSG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YSJ','CAN','YSJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PQI','CAN','YSL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YSM','CAN','YSM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YKA','CAN','YSN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YSO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YSR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQT','CAN','YSS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYG','CAN','YSU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXT','CAN','YSX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','CAN','YSY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','YSZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YOW','CAN','YTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXT','CAN','YTB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYD','CAN','YTC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTH','CAN','YTD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YTE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBG','CAN','YTF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTH','CAN','YTH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQT','CAN','YTJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YTL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZV','CAN','YTN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUF','CAN','YTO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQQ','CAN','YTP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YTQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGK','CAN','YTR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTS','CAN','YTS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSG','CAN','YTX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KMG','CHN','YUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','CAN','YUB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YUD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBG','CAN','YUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YUM','USA','YUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YUV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YUX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DZA','COM','YVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZBF','CAN','YVB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','YVD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YVM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YVN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXY','CAN','YVQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YVR','CAN','YVR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXU','CAN','YVV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YOW','CAN','YWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWG','CAN','YWG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YWJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YWK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YWN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQT','CAN','YWP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBG','CAN','YWQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YVR','CAN','YWS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYC','CAN','YWV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXC','CAN','YXC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXH','CAN','YXH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YOW','CAN','YXI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYY','CAN','YXK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INL','CAN','YXL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YXN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','CAN','YXQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLI','CAN','YXX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YAM','CAN','YXZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYB','CAN','YYB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYC','CAN','YYC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXJ','CAN','YYE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YYH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOT','CAN','YYI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTH','CAN','YYL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQL','CAN','YYM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYT','CAN','YYT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTS','CAN','YYU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYY','CAN','YYY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYZ','CAN','YYZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXJ','CAN','YZC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('APN','CAN','YZE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YZG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQU','CAN','YZH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZP','CAN','YZP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','YZT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZV','CAN','YZV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXY','CAN','YZW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXJ','CAN','YZY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OPO','PRT','ZA1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXT','CAN','ZAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORN','DZA','ZAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLJ','DZA','ZAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGF','FRA','ZAF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZAG','HRV','ZAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZAH','IRN','ZAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JUJ','ARG','ZAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZAH','AFG','ZAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZAL','CHL','ZAL'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZAM','PHL','ZAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZTH','GRC','ZAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVE','FRA','ZAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACH','CHE','ZAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAD','NGA','ZAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ERF','DEU','ZAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBP','CHN','ZAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAM','DEU','ZAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','ZAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZAZ','ESP','ZAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSR','CZE','ZBE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZBF','CAN','ZBF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GDN','POL','ZBG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RDZ','FRA','ZBH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GHA','DZA','ZBI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ODE','DNK','ZBJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLT','AUS','ZBL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBG','CAN','ZBM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPP','AUS','ZBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZBR','IRN','ZBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','ZBW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GRZ','HUN','ZBX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPQ','LAO','ZBY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','ZCB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXB','DEU','ZCC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NUE','DEU','ZCD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZG','DEU','ZCE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGN','DEU','ZCG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DTM','DEU','ZCH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZCJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DTM','DEU','ZCM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAJ','DEU','ZCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BYU','DEU','ZCP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCL','CHL','ZCQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','ZCS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAD','DEU','ZCU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZCV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZCX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIR','CHE','ZDB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIR','CHE','ZDC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACH','CHE','ZDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLV','PSE','ZDF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUG','CHE','ZDI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIR','CHE','ZDL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLV','PSE','ZDM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIR','CHE','ZDQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUG','CHE','ZDS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACH','CHE','ZDV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZDZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','DEU','ZEA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNB','ZAF','ZEC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNJ','DEU','ZED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','ZEG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INN','DEU','ZEI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZEJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXT','CAN','ZEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YUY','CAN','ZEM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAU','IND','ZER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAJ','DEU','ZET'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAD','DEU','ZEU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGN','DEU','ZEW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNN','DEU','ZEY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXY','CAN','ZFA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YSM','CAN','ZFD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAN','GBR','ZFG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NQT','GBR','ZFI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','ZFN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUD','HUN','ZFP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BER','DEU','ZFR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEJ','DEU','ZGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YCG','CAN','ZGF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','BEL','ZGJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','ZGK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZGM','ZMB','ZGM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEJ','DEU','ZGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','ZGP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWG','CAN','ZGR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','ZGU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','ZGV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRP','DNK','ZGX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZHA','CHN','ZHA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZHD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZHE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZHG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','ZHI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIR','CHE','ZHK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACH','CHE','ZHL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZYL','BGD','ZHM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','ZHN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYD','CAN','ZHO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEJ','DEU','ZHQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIR','CHE','ZHR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FDH','CHE','ZHU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','ZHV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','ZHW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCM','BRA','ZHX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAJ','DEU','ZHZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZO','ITA','ZIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLL','DNK','ZIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZCO','CHL','ZIC'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZIH','MEX','ZIH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','ZIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAR','DNK','ZIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KMG','CHN','ZIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRS','DEU','ZIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','ZJA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZJC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTH','CAN','ZJG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUG','CHE','ZJI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQD','CAN','ZJN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIR','CHE','ZJP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GVA','CHE','ZJQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ERF','DEU','ZJS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSL','CHE','ZJU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUG','CHE','ZJV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZJW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACH','CHE','ZJZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMI','ZMB','ZKB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','ZKC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTS','CAN','ZKE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIR','CHE','ZKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZKJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAX','GAB','ZKM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','ZKS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AXD','GRC','ZKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZKV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIR','CHE','ZKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIR','CHE','ZLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIR','CHE','ZLB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','ZLE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZLF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZLI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','ZLJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZLM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCP','CHL','ZLR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BER','DEU','ZLU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NQT','GBR','ZMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEJ','DEU','ZMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWL','CAN','ZMH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UPN','MEX','ZMM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRN','ITA','ZMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZP','CAN','ZMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMO','DEU','ZNB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAN','NER','ZND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHE','AUS','ZNE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','ZNH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NUE','DEU','ZNJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAD','DEU','ZNK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DTM','DEU','ZNM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZNN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGN','DEU','ZNP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','ZNQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','ZNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGN','DEU','ZNT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZNX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KEL','DEU','ZNY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGN','DEU','ZOA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAD','DEU','ZOB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FDH','DEU','ZOE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXT','CAN','ZOF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DTM','DEU','ZOJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DTM','DEU','ZOL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGN','DEU','ZOP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZOS','CHL','ZOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNJ','DEU','ZOU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAM','DEU','ZOV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INN','DEU','ZOX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','ZOY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','ZPB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZPC','CHL','ZPC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAJ','DEU','ZPG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCN','DEU','ZPI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZPJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','ZPM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YMM','CAN','ZPO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STR','DEU','ZPP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','ZPR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCN','DEU','ZPT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAJ','DEU','ZPU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NUE','DEU','ZPW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DTM','DEU','ZPX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNJ','DEU','ZPY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STR','DEU','ZPZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ERF','DEU','ZQA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZQB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAM','DEU','ZQD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ERF','DEU','ZQE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','DEU','ZQF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNJ','DEU','ZQG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DTM','DEU','ZQI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZQJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZQK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','DEU','ZQL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STR','DEU','ZQO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAM','DEU','ZQP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','ZQQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DTM','DEU','ZQR'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAJ','DEU','ZQU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','ZQV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCN','DEU','ZQW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGP','ESP','ZRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CHQ','GRC','ZRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZRH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','ZRI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','ZRM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GVA','CHE','ZRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLQ','ITA','ZRO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','CAN','ZRR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXB','DEU','ZRW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRS','DEU','ZRX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GGT','BHS','ZSA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAM','DEU','ZSD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RUN','REU','ZSE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNN','DEU','ZSI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','ZSJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZZ','DEU','ZSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BER','DEU','ZSN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ERF','DEU','ZSO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YMM','CAN','ZSP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAJ','DEU','ZSQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPY','CIV','ZSS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','CAN','ZST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RTM','NLD','ZT1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','ZTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YDF','CAN','ZTB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALB','USA','ZTD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZTH','GRC','ZTH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','ZTK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','ZTM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','ZTP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IEV','UKR','ZTR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HKG','HKG','ZTW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RLG','DEU','ZTZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INL','CAN','ZUC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMC','CHL','ZUD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BYK','CIV','ZUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZUH','CHN','ZUH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELQ','SAU','ZUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','ZUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLD','SVK','ZV2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EIN','NLD','ZVH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SNO','LAO','ZVK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOS','MDG','ZWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAJ','DEU','ZWG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KUN','POL','ZWK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YFO','CAN','ZWL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RLG','DEU','ZWM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','ZWN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KEL','DEU','ZWT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','SJM','ZXB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOO','NOR','ZXJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOO','NOR','ZXM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AES','NOR','ZXO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSL','NOR','ZXR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWE','CHN','ZYI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZYL','BGD','ZYL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANR','NLD','ZYO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COU','USA','ZYQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALG','DZA','ZZC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','ZZF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KLV','DEU','ZZH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALG','DZA','ZZL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALG','DZA','ZZM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJA','DZA','ZZR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJA','DZA','ZZS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GJL','DZA','ZZT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMH','USA','ZZV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BPD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GYN','BRA','BPG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPN','IDN','BPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIG','CHN','BPX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BAG','PHL','BQA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDU','NAM','BQI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','BQL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNZ','BRA','BQQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SVD','VCT','BQU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','BR1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','BR5'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRD','USA','BRD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATL','USA','BRG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','BRJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRM','VEN','BRM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BRP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRS','GBR','BRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','BRV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEX','USA','BRY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSB','BRA','BSB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KCH','MYS','BSE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTR','USA','BTR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTV','USA','BTV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IYK','USA','BTY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATL','USA','BUB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVD','ARG','BUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTP','ROU','BUH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EAM','YEM','BUK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKC','USA','BUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUQ','ZWE','BUQ'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUS','GEO','BUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNQ','URY','BUV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','BUY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVB','BRA','BVB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUV','FJI','BVF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVH','BRA','BVH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JPR','BOL','BVL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','BVP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','BVW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','BWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABI','USA','BWD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNA','USA','BWG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWK','HRV','BWK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWN','BRN','BWN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','BWQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYD','AUS','BWU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','BXB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGF','KAZ','BXH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHX','USA','BXK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','BXM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KER','IRN','BXR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BXU','PHL','BXU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGA','SOM','BXX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JUJ','BOL','BYC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAB','AGO','CAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TVC','USA','CAD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAI','EGY','CAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAK','USA','CAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAN','CHN','CAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','CAQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GGT','BHS','CAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIX','BRA','CAW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBB','BOL','CBB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMA','USA','CBF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAP','DOM','CBJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRG','IDN','CBN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OPO','PRT','CBP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAR','VEN','CBS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GUA','GTM','CBV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','CBY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FSM','USA','CCA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BBA','CHL','CCH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','CCL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','CCO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCS','VEN','CCS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','CCV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCW','USA','CCY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUT','USA','CDB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GJA','HND','CDD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TXK','USA','CDH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLO','USA','CDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','CDQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYD','AUS','CDU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HPN','USA','CDW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEC','USA','CEC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUS','USA','CFT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','CGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGD','CHN','CGD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGI','USA','CGI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGO','CHN','CGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGR','BRA','CGR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PZO','VEN','CGU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHX','USA','CGZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSR','ITA','CH3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXR','PAK','CHB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNZ','CHN','CHG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEW','ZWE','CHJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUN','USA','CHL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CHO','USA','CHO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CHS','USA','CHS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DNH','CHN','CHW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','CHY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LGB','USA','CIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNZ','CHN','CIF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CIH','CHN','CIH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','USA','CIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASU','PRY','CIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGI','USA','CIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','CIV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CTA','ITA','CIY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOH','PER','CJA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUC','COL','CJD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEW','PAK','CJL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAN','USA','CJN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ICT','USA','CKA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UDI','BRA','CLV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SFD','VEN','CLZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMB','LKA','CMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','CMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMH','USA','CMH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYZ','MWI','CMK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGQ','SOM','CMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXB','FRA','CMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEL','BRA','CMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMW','CUB','CMW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEW','MOZ','CMZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','CNB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANG','FRA','CNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLC','CHN','CNI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAL','DNK','CNL'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','GRL','CNP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','CNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPS','BRA','CNV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDU','AGO','CNZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMR','HUN','DEB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LSE','USA','DEH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GMB','ETH','DEM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAU','IND','DEP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEZ','SYC','DES'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','DFP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGA','ETH','DGC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABJ','CIV','DIV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COO','BEN','DJA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJG','DZA','DJG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVB','COG','DJM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','DJU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DKR','SEN','DKR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TYS','USA','DKX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GVA','FRA','DLE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLI','VNM','DLI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLO','USA','DLL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDX','USA','DLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ULN','MNG','DLZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DMM','SAU','DMM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGB','BRA','DMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJC','CIV','DNC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','DNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DNK','UKR','DNK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CHA','USA','DNN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','DNQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMI','USA','DNV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANR','BEL','DO1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','DOB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBM','SUR','DOE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DOG','SDN','DOG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DOK','UKR','DOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','DOO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','DOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','DOX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLC','USA','DPG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LST','AUS','DPO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAS','USA','DRA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YAM','USA','DRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','DRH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKZ','IDN','DUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','DUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DVL','USA','DVL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','DVP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMF','FRA','DXA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDR','USA','DXR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','DYM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DZA','MYT','DZA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CKG','CHN','DZU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','EAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EAM','SAU','EAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSL','FRA','EAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EAU','USA','EAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EBD','SDN','EBD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LTD','TUN','EBM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','MHL','EBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EBU','FRA','EBU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHF','USA','ECG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TCO','COL','ECR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DOG','SDN','EDB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','EDG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EDL','KEN','EDL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJT','TUR','EDO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IFP','USA','EED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAP','USA','EFC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EFL','GRC','EFL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOD','USA','COA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COD','USA','COD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLB','USA','COI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEB','GBR','COL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COO','BEN','COO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COR','ARG','COR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LRD','USA','COT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAS','BHS','COX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPY','LBR','CPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYQ','AUS','CPD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHI','ARG','CPG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRU','GRD','CRU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUP','USA','CRX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLQ','ITA','CS1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','CSD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CSG','USA','CSG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SMX','USA','CSL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PYH','COL','CSR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TYS','USA','CSV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CTA','ITA','CTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUC','ARG','CTC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CTG','COL','CTG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FSD','USA','CTK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CTM','MEX','CTM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLZ','BRA','CTP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLN','FRA','CTT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BMG','USA','CTX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAP','MEX','CUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUE','ECU','CUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUL','USA','CUH'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','BLZ','CUK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUN','MEX','CUN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','CUQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPC','ARG','CUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNU','USA','CUW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','CVB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMF','FRA','CVF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRD','ARG','CVI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CVM','MEX','CVM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAX','USA','CVR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOR','PRT','CVU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ILO','PHL','CYU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MID','MEX','CZA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBF','USA','CZD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','CZJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZM','MEX','CZM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRG','USA','CZP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGN','COL','CZU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','CZY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','DA1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAD','VNM','DAD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','DAF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','IND','DAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAM','SYR','DAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAR','TZA','DAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','DAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAY','USA','DAY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UET','PAK','DBA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGS','USA','DBN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DBQ','USA','DBQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','DBY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAG','ITA','DCI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GGT','BHS','DCT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DDG','CHN','DDG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJU','PRI','DDP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','AUS','ABM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','ABP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABS','EGY','ABS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABV','NGA','ABV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABY','USA','ABY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TVC','USA','ACB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACE','ESP','ACE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACK','USA','ACK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJT','MEX','ACN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACT','USA','ACT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHL','USA','ACY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADE','YEM','ADE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HTA','RUS','ADH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUT','USA','ADK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDE','COL','ADN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','ADQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADU','IRN','ADU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EDI','GBR','ADX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','KIR','AEA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','AEK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KFA','MRT','AEO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AEX','USA','AEX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELS','ZAF','AFD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHT','USA','AFN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','AFT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','AGB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGF','FRA','AGF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UEO','JPN','AGJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','GRL','AGM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGP','ESP','AGP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGS','USA','AGS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBN','USA','AIZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATR','MRT','AJJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AJR','SWE','AJR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AJY','NER','AJY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUT','USA','AKB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OKN','GAB','AKE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','AKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','AKK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','AKN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLM','IDN','AKQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','AKV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','AL4'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALC','ESP','ALC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALF','NOR','ALF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','ALH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADD','ETH','ALK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STL','USA','ALN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSS','BRA','ALQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALS','USA','ALS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALW','USA','ALW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','ALZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOS','MDG','AMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('APL','MOZ','AME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMI','IDN','AMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMM','JOR','AMM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','AMP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','AMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NNM','RUS','AMV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','AMY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TER','PRT','AN1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANC','USA','ANC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANG','FRA','ANG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','APK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','APO'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','APR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LDB','BRA','APU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LDB','BRA','APX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAO','BRA','AQA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AQI','SAU','AQI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JPR','BRA','AQM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGN','DEU','AR1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQG','USA','ARB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJU','PRI','ARE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ARH','RUS','ARH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JRO','TZA','ARK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','ARO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GXQ','ARG','ARR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ARU','BRA','ARU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','ARX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASB','TKM','ASB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAS','BHS','ASD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TIU','NZL','ASG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASJ','JPN','ASJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','ASN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','ASP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASU','PRY','ASU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IWD','USA','ASX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIM','PER','ATA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FSM','USA','ATE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISB','PAK','ATG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','ATJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STM','BRA','ATM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','ATP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AVL','USA','AVL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','AVU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LGB','USA','AVX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEM','USA','AWM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','AWR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ART','USA','AXB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FOD','USA','AXG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','AXL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLS','BHS','AXP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASM','ETH','AXU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAF','USA','AXX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUC','COL','AYC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NVA','COL','AYG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSN','KAZ','AYK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSS','PRY','AYO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYQ','AUS','AYQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYT','TUR','AYT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RDG','USA','AYZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UPN','MEX','AZG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ERH','DZA','AZR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KBL','AFG','BA2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','BAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BAG','PHL','BAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAC','TUR','BAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJP','BRA','BAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POG','GAB','BAW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TFF','BRA','BAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOU','USA','BBC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGM','USA','BBF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UFA','RUS','BCX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDB','AUS','BDB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INL','USA','BDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEZ','SYC','BDI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IST','TUR','BDM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','BDP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDS','ITA','BDS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMI','COD','BDV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLS','USA','BDX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','BE1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BEA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','BEE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBN','USA','BEH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEL','BRA','BEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLR','IND','BEP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BES','FRA','BES'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLV','ISR','BEV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEY','LBN','BEY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','BFC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFF','USA','BFF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAN','FJI','BFJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHW','ZWE','BFO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BMG','USA','BFR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HFE','CHN','BFU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGA','COL','BGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMA','USA','BGD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGI','BRB','BGI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','BGL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAX','GAB','BGP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGR','USA','BGR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CXJ','BRA','BGV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BIJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLL','BHS','BIM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','BIP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','BIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','BIW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJA','DZA','BJA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DEN','USA','BJC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJI','USA','BJI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJL','GMB','BJL'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JUJ','BOL','BJO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKO','NPL','BJU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOE','IDN','BJW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDH','IND','BKB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDT','USA','BKE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CKY','GIN','BKJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWN','MYS','BKM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROK','AUS','BKQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RIC','USA','BKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EBB','TZA','BKZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLA','VEN','BLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLE','SWE','BLE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYY','MYS','BLG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLJ','DZA','BLJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHL','USA','BLM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLQ','ITA','BLQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROK','AUS','BLT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HNL','USA','BLW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLZ','MWI','BLZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','BMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GMA','CAF','BMF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BMI','USA','BMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FOD','USA','BNW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BNZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAB','COD','BOA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','PAN','BOC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','BOH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEC','USA','BOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUR','CAF','BOP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSL','FRA','BOR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUF','FRA','BOU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','BOX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JLN','USA','BPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EDL','KEN','LBN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBQ','GAB','LBQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAY','USA','LBT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWN','IDN','LBW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGA','AGO','LBZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVH','BRA','LCB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAP','GTM','LCF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHT','USA','LCI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COR','ARG','LCM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZPC','ARG','LCP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','LER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GRO','ESP','LEU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEX','USA','LEX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GGG','USA','LFK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','LFP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LFW','TGO','LFW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDT','USA','LGD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','LGH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYY','MYS','LGL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','LGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BBA','CHL','LGR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLC','USA','LGU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLL','USA','LHB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','LHI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','LHP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IPT','USA','LHV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','LI2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COS','USA','LIC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOU','NCL','LIF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','LII'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','LIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','CRI','LIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GMA','COD','LIQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIT','USA','LIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNX','MMR','LIW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PQI','USA','LIZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOU','USA','LJN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIS','COG','LKC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKG','KEN','LKG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOO','NOR','LKN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BBO','SOM','LKR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKG','KEN','LKU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLO','COL','LMX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMO','DEU','LN1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RIW','USA','LND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','LNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRW','USA','LNI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLE','USA','LNN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSN','USA','LNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZK','RUS','LNX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LRT','FRA','LO0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','LOA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','LOD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOH','ECU','LOH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKG','KEN','LOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LHR','GBR','LON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOS','NGA','LOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLW','MEX','LOV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKG','KEN','LOY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPB','BOL','LPB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LET','COL','LPD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGO','RUS','LPK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','LPM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPP','FIN','LPP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNX','THA','LPT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIT','USA','LPW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPC','COL','LQM'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STR','DEU','EG2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPH','SWE','EGM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGO','RUS','EGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RHI','USA','EGV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YKM','USA','ELN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','ELR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TOE','DZA','ELU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','ELW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFD','USA','ELZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','EME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSM','USA','EMK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','EMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','EMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATZ','EGY','EMY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ETZ','FRA','ENC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DYG','CHN','ENH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GUA','GTM','ENJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','ENN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','ENT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIA','CHN','ENY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAJ','VEN','EOR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUC','VEN','EOZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PFO','CYP','EPK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','EPR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRC','ARG','EQS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TZX','TUR','ERC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ERF','DEU','ERF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','ERM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUG','USA','ERR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAT','USA','ERV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','ESA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLI','USA','ESD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','ESH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ESM','ECU','ESM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABE','USA','ESP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ESU','MAR','ESU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','EYP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EYW','USA','EYW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FNA','GIN','FAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','FRO','FAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','FAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGI','USA','FAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAR','USA','FAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','FAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DYU','AFG','FBD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSP','USA','FBL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BMI','USA','FBY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSU','ZAF','FCB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEM','USA','FCY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FDH','DEU','FDH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STR','DEU','FE1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SSA','BRA','FEC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGO','CIV','FEK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMA','USA','FET'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRS','GBR','FFD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEX','USA','FFT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MON','NZL','FGL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','FHZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOI','GBR','FIE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','FIK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHT','USA','FIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FKI','COD','FKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHF','USA','FKN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLK','GBR','FL1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOI','GBR','FOA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FOD','USA','FOD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFX','CMR','FOM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FOR','BRA','FOR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBQ','GAB','FOU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FPO','BHS','FPO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLD','USA','FPY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','FRB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISP','USA','FRG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRN','FRA','FRJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRM','USA','FRM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNU','USA','FRP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','GTM','FRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SHV','USA','FRY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FSD','USA','FSD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FSM','USA','FSM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAF','USA','FST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPG','ASM','FTI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','FTU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FUE','ESP','FUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','FUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WLS','WLF','FUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','FVR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DFW','USA','FWH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWF','USA','FWN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCW','USA','FXY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGN','TCD','FYT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FNA','SLE','GBK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','GBP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','GBV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GCC','USA','GCC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GCN','USA','GCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','GDD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','GDH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GDL','MEX','GDL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THE','BRA','GDP'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MBS','USA','GDW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAQ','RUS','GDZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','GEB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANR','BEL','GEE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','GEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GES','PHL','GES'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','GEX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IND','USA','GFD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GFK','USA','GFK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DNR','FRA','GFR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','GGD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','GGL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BBO','SOM','GGR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GGT','BHS','GGT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAS','BHS','GHC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNA','USA','GHM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROS','ARG','GHU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORL','USA','GIF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IBE','COL','GIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHW','ZAF','GIY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GJL','DZA','GJL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','GMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WJU','KOR','GMP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','GMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GNB','FRA','GNB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FNL','USA','GNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADD','ETH','GNN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABQ','USA','GNT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUB','BWA','GNZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOA','ITA','GOA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','GOE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOJ','RUS','GOJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKY','COD','GOM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VNS','IND','GOP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYD','AUS','GOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','GOV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZTH','GRC','GPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TCO','COL','GPI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHI','ARG','GPO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GPZ','USA','GPZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUF','ITA','GR1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','GR4'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPY','LBR','GRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','GRH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GRJ','ZAF','GRJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQT','USA','GRM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMO','NLD','GRQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXJ','PAK','GRT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PIX','PRT','GRW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAM','DEU','GS1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTA','AUS','GSC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAD','DEU','GUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GUW','KAZ','GUW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIX','BRA','GUZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGR','USA','OLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OLF','USA','OLF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','OLJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRD','ARG','OLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSR','CZE','OLO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','OLP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUS','USA','OLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEM','USA','OLV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTO','USA','OLY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMA','USA','OMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAC','PHL','OMC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','USA','OME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMH','IRN','OMH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MMJ','JPN','OMJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','OML'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLL','OMN','OMM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMO','BIH','OMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMR','ROU','OMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('REP','KHM','OMY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LSE','USA','ONA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSB','NAM','OND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGM','USA','ONH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ONJ','JPN','ONJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OFK','USA','ONL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','ONN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOI','USA','ONO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANK','TUR','ONQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','ONR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ONT','USA','ONT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBU','FJI','ONU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPS','USA','ONY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','OOM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','OOR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','KIR','OOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','OPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','OPB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LFT','USA','OPL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OPO','PRT','OPO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGB','BRA','OPS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','OPU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDD','NAM','OPW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JUJ','ARG','ORA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORB','SWE','ORB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','ORC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUF','FRA','ORE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','ORI'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVB','GUY','ORJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORK','IRL','ORK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORL','USA','ORL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORN','DZA','ORN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCE','HND','ORO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRW','BWA','ORP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GNV','USA','ORQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','ORR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSV','AUS','ORS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','ORT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','ORV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GWD','PAK','ORW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STM','BRA','ORX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CTM','BLZ','ORZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','OS1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIX','JPN','OSA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBN','USA','OSB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('APN','USA','OSC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','OSE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','OSG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSI','HRV','OSI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSK','SWE','OSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EBL','IRQ','OSM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJJ','KOR','OSN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSR','CZE','OSR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBD','KGZ','OSS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKX','RUS','OSW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZZ','POL','OSZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADD','ETH','OTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','OTD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTH','USA','OTH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','OTI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NKC','MRT','OTL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTM','USA','OTM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABQ','USA','OTO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','CRI','OTR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','OTY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUA','BFA','OUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUD','MAR','OUD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GRJ','ZAF','OUH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEI','LAO','OUI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUL','FIN','OUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGN','TCD','OUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OKC','USA','OUN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAX','GAB','OUU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATR','MRT','OUZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OVD','ESP','OVD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OVB','RUS','OVE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LSC','CHL','OVL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','OVR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OWB','USA','OWB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOS','USA','OWD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUG','USA','OWK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHX','GBR','OXF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OXR','USA','OXR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','OXY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JUB','UGA','OYG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAY','BRA','OYK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','OYN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAY','GUF','OYP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPA','USA','OZA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DPL','PHL','OZC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PYH','COL','OZI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OZZ','MAR','OZZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUG','ITA','PA1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGD','DNK','PA3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLL','ESP','PA6'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGN','MMR','PAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAD','DEU','PAD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUX','UGA','PAF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DPL','PHL','PAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAH','USA','PAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HDY','THA','PAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJC','USA','PAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAP','HTI','PAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORY','FRA','PAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAS','GRC','PAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDL','MMR','PAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AJU','BRA','PAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','PAW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAP','HTI','PAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKI','MYS','PAY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAZ','MEX','PAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ARU','BRA','PBB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHO','IND','GUX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBL','USA','GUY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GVA','CHE','GVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','GVI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AHN','USA','GVL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','GVP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DFW','USA','GVT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLE','SWE','GVX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGN','MMR','GWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','GWN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLH','USA','GWO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EBJ','DEU','GWT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GWY','IRL','GWY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GXF','YEM','GXF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GXQ','CHL','GXQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVR','CMR','GXX'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','GY0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKY','RWA','GYI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','GYL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GYN','BRA','GYN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHX','USA','GYR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBN','USA','GYY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNS','USA','GZH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KBL','AFG','GZI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALP','TUR','GZT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INN','AUT','HA3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','BEL','HA4'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUP','USA','HAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GCN','USA','HAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RTM','NLD','HAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRP','USA','HAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAK','CHN','HAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSB','NAM','HAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAM','DEU','HAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CVG','USA','HAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAR','USA','HAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAS','SAU','HAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','AUS','HAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','HAY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','HAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HBA','AUS','HBA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUL','USA','HBG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNB','ZAF','HBL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAW','USA','HBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOI','IND','HBX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','HCB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALB','USA','HCC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KHH','TWN','HCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLO','USA','HCW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','HDB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WNS','PAK','HDD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZZ','DEU','HDF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HNL','USA','HDH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSH','IRN','HDM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAT','USA','HDO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HDS','ZAF','HDS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HDY','THA','HDY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','HE1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','NLD','HE2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','HE3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','HED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEM','USA','HEE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDL','MMR','HEH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KEL','DEU','HEI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDG','CHN','HEK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HEL','FIN','HEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','HEN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','HEO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HER','GRC','HER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HET','CHN','HET'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLV','ISR','HFA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HFD','USA','HFD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HFE','CHN','HFE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAY','USA','HFF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','HFN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSD','SWE','HFS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALF','NOR','HFT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGA','SOM','HGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSV','AUS','HGD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','HGL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNX','THA','HGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGO','CIV','HGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGR','USA','HGR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SMX','USA','HGT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','HGU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','HGZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSJ','JPN','HHE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HHH','USA','HHH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTP','THA','HHQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','HHZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIB','USA','HIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','AUS','HID'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','HIG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HII','USA','HII'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGA','ETH','HIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIN','KOR','HIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','HIP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','HIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','HIX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HJR','IND','HJR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','HKB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HKD','JPN','HKD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HKK','NZL','HKK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','HKN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AXD','BGR','HKV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLT','USA','HKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CVG','USA','HLB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HYS','USA','HLC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSK','SWE','HLF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJC','USA','HLI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','HLL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HLN','USA','HLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','HLT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOU','NCL','HLU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RCB','ZAF','HLW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IOM','GBR','HLY'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HME','DZA','HME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','HMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HMO','MEX','HMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSP','USA','HMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HNA','JPN','HNA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EVV','USA','HNB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOU','NCL','HNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GST','USA','HNH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HNL','USA','HNL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OGG','USA','HNM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GST','USA','HNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAR','USA','HNX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAF','USA','HOB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','HOC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEI','LAO','HOE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOF','SAU','HOF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACH','AUT','HOH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','HOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWD','USA','HOM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HON','USA','HON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOQ','DEU','HOQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LSQ','ARG','HOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOU','USA','HOU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AES','NOR','HOV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZYL','MMR','HOX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBU','TON','HPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSM','USA','HPB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HPH','VNM','HPH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HPN','USA','HPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOU','USA','HPY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLM','USA','HQM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANR','BEL','HR1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISB','PAK','HRA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HRB','CHN','HRB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGF','KAZ','HRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EVE','NOR','HRD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HRE','ZWE','HRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HRG','EGY','HRG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HRK','UKR','HRK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HRL','USA','HRL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GHA','DZA','HRM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FYV','USA','HRO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NVA','COL','HRR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PZB','ZAF','HRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBA','GBR','HRT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HUY','GBR','HRW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','HRY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSS','BRA','HRZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAN','CHN','HSC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HSG','JPN','HSG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GRI','USA','HSI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLZ','ZAF','CDO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TIR','IND','CDP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDR','USA','CDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMA','USA','CDS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','CDV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKI','PHL','CDY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUB','IRL','CE1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEB','PHL','CEB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','CED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PES','RUS','CEE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HFD','USA','CEF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPL','GBR','CEG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGJ','MWI','CEH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEI','THA','CEI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEK','RUS','CEK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','CEM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEN','MEX','CEN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAD','AGO','CEO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRZ','BOL','CEP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCE','FRA','CEQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JER','FRA','CER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','CES'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTE','FRA','CET'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GSP','USA','CEU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPA','USA','CEV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VPS','USA','CEW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FYV','USA','CEY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEZ','USA','CEZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','CFA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','CFC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLL','USA','CFD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFE','FRA','CFE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAD','AGO','CFF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFG','CUB','CFG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','CFH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','CFI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFN','IRL','CFN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','CFO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','CFP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFR','FRA','CFR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','CFS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFU','GRC','CFU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUL','USA','CFV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGB','BRA','CGB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','CGC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBY','USA','CGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BAG','PHL','CGG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NLA','ZMB','CGJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGN','DEU','CGN'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGP','BGD','CGP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGQ','CHN','CGQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','CGS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATR','MRT','CGT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','CGV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGY','PHL','CGY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHX','GBR','CH0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','CH1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','FRA','CH2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CHC','NZL','CHC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUS','KOR','CHF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOH','PER','CHH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBN','USA','CHI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OKC','USA','CHK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIM','PER','CHM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWJ','KOR','CHN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','CHP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CHQ','GRC','CHQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUF','FRA','CHR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRO','NZL','CHT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VGO','PRT','CHV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','PAN','CHX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LMT','USA','CHZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','CI1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEG','ITA','CIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CIC','USA','CIC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CID','USA','CID'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','CIE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBS','USA','CIG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RBR','BOL','CIJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EJA','COL','CIM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FOD','USA','CIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MFU','ZMB','CIP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GUA','GTM','CIQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('APW','KIR','CIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CIT','KAZ','CIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CIW','VCT','CIW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOH','PER','CIX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TFF','BRA','CIZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJJ','KOR','CJ1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJB','IND','CJB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWL','CAN','CJH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJJ','KOR','CJJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('USM','THA','CJM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJS','MEX','CJS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJU','KOR','CJU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CKB','USA','CKB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IEV','UKR','CKC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPI','USA','CKE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CKG','CHN','CKG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GDX','RUS','CKH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','CKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOJ','RUS','CKL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLH','USA','CKM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LDB','BRA','CKO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYJ','USA','CKR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAB','BRA','CKS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHD','IRN','CKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNA','USA','CKV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','CKX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CKY','GIN','CKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AXD','TUR','CKZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAC','BGD','CLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOC','IRL','CLB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLD','USA','CLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLE','USA','CLE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NWI','GBR','CLF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIS','USA','CLG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','CLH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DHN','USA','CLI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLJ','ROU','CLJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAW','USA','CLK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLL','USA','CLL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLM','USA','CLM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IMP','BRA','CLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','CLP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IPL','USA','CLR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEA','USA','CLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLT','USA','CLT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BMG','USA','CLU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPA','USA','CLW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASU','ARG','CLX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLY','FRA','CLY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROK','AUS','CMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FOR','BRA','CMC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CME','MEX','CME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMF','FRA','CMF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGR','BRA','CMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMI','USA','CMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KHH','TWN','CMJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','CML'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','GTM','CMM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKY','AUS','CMQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCT','SOM','CMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','CMU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKL','NZL','CMV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMX','USA','CMX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LSE','USA','CMY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUS','MEX','CNA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','AUS','CNC'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CND','ROU','CND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COS','USA','CNE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEB','USA','CNH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','CNJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAF','USA','CNM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ONT','USA','CNO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNQ','ARG','CNQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ESR','CHL','CNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RES','ARG','CNT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JLN','USA','CNU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNX','THA','CNX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GJT','USA','CNY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','CO0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','CO1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','COB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUW','USA','COE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UIB','COL','COG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAU','IND','COH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','COJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COK','IND','COK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABI','USA','COM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHT','USA','CON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALB','USA','COP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HLD','MNG','COQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COS','USA','COS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OPO','PRT','COV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LSC','CHL','COW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTA','AUS','COY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STI','DOM','COZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','CPB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPC','ARG','CPC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPE','MEX','CPE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOC','IDN','CPF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPH','DNK','CPH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','CPI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IBE','COL','CPL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LGB','USA','CPM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','CPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPO','CHL','CPO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','CPQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPR','USA','CPR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPT','ZAF','CPT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPV','BRA','CPV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STT','PRI','CPX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GYN','BRA','CQA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','CQF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','CQP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JPR','BRA','CQS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NVA','COL','CQT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HYA','USA','CQX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHX','GBR','CR1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRA','ROU','CRA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEI','COL','CRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRD','ARG','CRD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUR','CAF','CRF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','CRH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GGT','BHS','CRI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','CRJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MNL','PHL','CRK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','CRL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LGP','PHL','CRM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INV','GBR','CRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIS','USA','CRO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPS','BRA','CRQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SFN','ARG','CRR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACT','USA','CRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLU','USA','CRT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRV','ITA','CRV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRW','USA','CRW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','CRY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DYU','TKM','CRZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLA','GBR','CSA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CSB','ROU','CSB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GUC','USA','CSE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','CSF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CSK','SEN','CSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TVL','USA','CSN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEJ','DEU','CSO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DSM','USA','CSQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ARU','BRA','CSS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POA','BRA','CSU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVH','BRA','CSW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CSX','CHN','CSX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KZN','RUS','CSY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','CTD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','CTE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAP','GTM','CTF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ILG','USA','CTH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDU','AGO','CTI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROK','AUS','CTL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','CTN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISP','USA','CTO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDP','BRA','CTQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','CTR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PRC','USA','CTW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GNV','USA','CTY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAY','USA','CTZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGS','USA','CUB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUC','COL','CUC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','CUD'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCE','ITA','CUF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','CUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','CUI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUL','MEX','CUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMV','VEN','CUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','CUO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUP','VEN','CUP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJS','USA','CUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUU','MEX','CUU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAR','VEN','CUV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','CUY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','CVC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','CVE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CVG','USA','CVG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LSQ','ARG','CVH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEX','MEX','CVJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','CVL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBB','USA','CVN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLE','USA','CVO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTA','AUS','CVQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHX','GBR','CVT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CWB','BRA','CWB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCV','UKR','CWC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCH','USA','CWF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLI','USA','CWI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CWL','GBR','CWL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','CWR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','CWT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','CWW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SFD','VEN','CXA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','CXC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','CXF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOA','KIR','CXI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CXJ','BRA','CXJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IPL','USA','CXL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RIY','SOM','CXN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOU','USA','CXO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JOG','IDN','CXP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','CXQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSV','AUS','CXT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAP','HTI','CYA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CYB','CYM','CYB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','BLZ','CYC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','CYD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLL','USA','CYE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','CYF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','CYG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TXG','TWN','CYI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIT','USA','CYM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CYO','CUB','CYO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAC','PHL','CYP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVD','URY','CYR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CYS','USA','CYS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','CYT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GDX','RUS','CYX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BAG','PHL','CYZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','CZB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZE','VEN','CZE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSM','USA','CZF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CTM','BLZ','CZH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDX','USA','CZK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZL','DZA','CZL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','CZN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','CZO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZS','BRA','CZS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAA','USA','CZT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTW','POL','CZW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZX','CHN','CZX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','DAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAB','USA','DAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAC','BGD','DAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAU','IND','DAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ONT','USA','DAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AXK','YEM','DAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAK','EGY','DAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DFW','USA','DAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GSO','USA','DAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','DAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HET','CHN','DAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','PAN','DAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAO','CHN','DAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DYU','AFG','DAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','BEL','DB1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXR','IND','DBD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADD','ETH','DBM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYD','AUS','DBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IDA','USA','DBS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADD','ETH','DBT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DBV','HRV','DBV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LRM','DOM','DCF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DCM','FRA','DCM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FWA','USA','DCR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HUY','GBR','DCS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HSV','USA','DCU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DDC','USA','DDC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','DDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUX','PAK','DDU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUX','PAK','DEA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DEC','USA','DEC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXC','IND','DED'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEZ','SYC','DEI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DEL','IND','DEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DEN','USA','DEN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','DER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DEZ','SYR','DEZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TOL','USA','DFI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DFW','USA','DFW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','BLZ','DGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','DGD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYD','AUS','DGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YKA','CAN','DGF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWE','CHN','DGM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RIC','USA','DGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DGO','MEX','DGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VNO','LVA','DGP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRE','NZL','DGR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DGT','PHL','DGT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOY','BFA','DGU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPR','USA','DGW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DMM','SAU','DHA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','DHD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAI','YEM','DHL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXP','IND','DHM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DHN','USA','DHN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','DHR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMA','USA','DHT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','DI1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','LUX','DI2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAU','IND','DIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FKI','COD','DIC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIG','CHN','DIG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GVA','FRA','DIJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIK','USA','DIK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIL','TLS','DIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BYK','CIV','DIM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIN','VNM','DIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','USA','DIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NIM','BFA','DIP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAX','BRA','DIQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIR','ETH','DIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAJ','IND','DIU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAC','TUR','DIY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLM','IDN','DJB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJE','TUN','DJE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','DJJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','DJN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJC','CIV','DJO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','DKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JHW','USA','DKK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYQ','AUS','DKV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLA','CMR','DLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLC','CHN','DLC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSL','NOR','DLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','DLG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLH','USA','DLH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','DLK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLM','TUR','DLM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTM','USA','DLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','DLV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','DLY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CIT','KAZ','DMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','DMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COU','USA','DMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAI','YEM','DMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZYL','IND','DMU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','DNB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EDI','GBR','DND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DNH','CHN','DNH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRT','SDN','DNI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGS','USA','DNL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTA','AUS','DNM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','DNO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKO','NPL','DNP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DNR','FRA','DNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','DNU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRT','SDN','DNX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYT','TUR','DNZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOS','MDG','DOA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INV','GBR','DOC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JRO','TZA','DOD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','DOF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DOH','QAT','DOH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','DOI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEH','FRA','DOL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','GTM','DON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUA','BFA','DOR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGR','BRA','DOU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ILG','USA','DOV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','DPE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOB','USA','DPH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DPL','PHL','DPI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DPS','IDN','DPS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','DPU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDU','AGO','DRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','DRD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANC','USA','DRF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','DRG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCH','USA','DRI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBM','SUR','DRJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KVA','GRC','DRM'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','DRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRO','USA','DRO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','DRR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJT','USA','DRT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','DRU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','DRW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','DRY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFX','CMR','DSC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTP','GLP','DSD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADD','ETH','DSE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BAG','PHL','DSG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VPS','USA','DSI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLW','SLE','DSL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DSM','USA','DSM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BAV','CHN','DSN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','DST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROC','USA','DSV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLC','USA','DTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBW','IDN','DTD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LGP','PHL','DTE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAR','USA','DTL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DTM','DEU','DTM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQG','USA','DTT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','LUX','DU1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DFW','USA','DUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUB','IRL','DUB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAW','USA','DUC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUD','NZL','DUD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGA','AGO','DUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHF','USA','DUF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUS','USA','DUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','DUI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYR','GRL','DUN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUR','ZAF','DUR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUT','USA','DUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CSB','ROU','DVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLI','USA','DVN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DVO','PHL','DVO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','DVR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZZU','MWI','DWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DZA','MDG','DWB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DXB','ARE','DXB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HBA','AUS','DYA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DYG','CHN','DYG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','RUS','DYR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DYU','TJK','DYU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','DYW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGF','KAZ','DZN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVD','URY','DZO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLA','GBR','EA1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','EAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGF','USA','EAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EAR','USA','EAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EAS','ESP','EAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EAT','USA','EAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIA','ITA','EBA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EBB','UGA','EBB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EJA','COL','EBG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','EBN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLT','USA','EBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FOD','USA','EBS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BMM','CMR','EBW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('APN','USA','ECA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','ECH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NIC','CYP','ECN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDE','COL','ECO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAP','USA','ECS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','EDD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGV','USA','EDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EDI','GBR','EDI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ICT','USA','EDK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTE','FRA','EDM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAL','HND','EDQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','EDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','EEK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHT','USA','EEN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GST','USA','EFB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTV','USA','EFK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TYS','USA','EFO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAJ','DEU','EG1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','EGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGC','FRA','EGC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGE','USA','EGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMH','ETH','EGL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGN','SDN','EGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LRD','USA','EGP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','EGX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRC','ARG','EHL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','EHM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EVV','USA','EHR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','EIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ERF','DEU','EIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KJA','RUS','EIE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','EIH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EIN','NLD','EIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EIS','VGB','EIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AQJ','ISR','EIY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EJA','COL','EJA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EJH','SAU','EJH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EKA','USA','EKA'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','EKD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAJ','GUY','EKE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TYR','USA','EKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CKB','USA','EKN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EKO','USA','EKO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VST','SWE','EKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OWB','USA','EKX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJZ','PRT','EL0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORL','USA','ELA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGN','COL','ELB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLU','USA','ELD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','ELE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELF','SDN','ELF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GHA','DZA','ELG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RSD','BHS','ELH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','USA','ELI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NVA','COL','ELJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAW','USA','ELK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTG','ZAF','ELL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELM','USA','ELM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELP','USA','ELP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELQ','SAU','ELQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELS','ZAF','ELS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELT','EGY','ELT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GST','USA','ELV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLV','VEN','ELX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELY','USA','ELY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NQT','GBR','EMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROK','AUS','EMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RCB','ZAF','EMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RKS','USA','EMM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EMN','MRT','EMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TOP','USA','EMP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LGB','USA','EMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRC','ARG','EMX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANC','USA','ENA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','ENB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOE','IDN','ENE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ENF','FIN','ENF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXL','GBR','ENK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDH','USA','ENL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSS','PRY','ENO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMO','NLD','ENS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ENU','NGA','ENU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EKO','USA','ENV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKE','USA','ENW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOI','GBR','EOI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRL','USA','EOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LNK','USA','EPG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MWH','USA','EPH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ETZ','FRA','EPL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ION','COG','EPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDQ','DOM','EPS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','EPT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BBO','SOM','ERA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYQ','AUS','ERB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DOK','UKR','ERD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ERH','MAR','ERH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ERI','USA','ERI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBT','BRA','ERN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ULN','MNG','ERT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','ERU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TZX','TUR','ERZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HEL','FIN','ES1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','ES2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ESC','USA','ESC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASU','PRY','ESG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOC','BRA','ESI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANK','TUR','ESK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRV','RUS','ESL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','ESN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAF','USA','ESO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ESR','CHL','ESR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ESS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPW','USA','EST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKE','USA','ETB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASM','ETH','ETE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AQJ','ISR','ETH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEX','USA','ETN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','ETR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DHN','USA','ETS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ETZ','FRA','ETZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBU','TON','EUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','EUC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELY','USA','EUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KEL','DEU','EUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUC','COL','EUO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','BEL','EUP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIS','PRT','EV1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEM','USA','EVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EVE','NOR','EVE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MXX','SWE','EVG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNK','AUS','EVH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIB','USA','EVM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EVN','ARM','EVN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLC','USA','EVW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','EVX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVY','USA','EWB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','EWE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','EWI'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ICT','USA','EWK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EWN','USA','EWN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OKN','COG','EWO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HPN','USA','EWR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','EWY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTA','AUS','EXM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IND','USA','EYE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KFA','MLI','EYL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TVL','USA','EYR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKG','KEN','EYS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RIC','USA','EZF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAC','TUR','EZS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','FAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','FAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHF','USA','FAF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XBJ','AFG','FAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJU','PRI','FAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MFE','USA','FAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRS','NOR','FAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAO','PRT','FAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','FAQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','FAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAT','USA','FAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAY','USA','FAY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAC','BRA','FBE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FBM','COD','FBM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RKS','USA','FBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSR','ITA','FC1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FCA','USA','FCA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAT','USA','FCH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YKM','USA','FCT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AES','NOR','FDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FDF','MTQ','FDF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAW','USA','FDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FIH','COD','FDU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TOL','USA','FDY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOI','GBR','FEA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAS','UZB','FEG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZS','BRA','FEJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','FEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAT','BRA','FEN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RFD','USA','FEP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FEZ','MAR','FEZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHF','USA','FFA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTM','USA','FFL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAR','USA','FFM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMC','CHL','FFU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','FGU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUS','USA','FHU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSA','ITA','FIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HVN','USA','FID'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CKY','GIN','FIG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FIH','COD','FIH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDC','USA','FIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','FIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FJR','ARE','FJR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KMQ','JPN','FKJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FKL','USA','FKL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','FKQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FKS','JPN','FKS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','BEL','FL2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THE','BRA','FLB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYD','AUS','FLC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSH','USA','FLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PRC','USA','FLG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOI','GBR','FLH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','FLI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLL','USA','FLL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASU','PRY','FLM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLN','BRA','FLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLO','USA','FLO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLR','ITA','FLR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LST','AUS','FLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBN','USA','FLT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOR','PRT','FLW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACT','USA','FLX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','FLY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMA','ARG','FMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','FMC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','FME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVY','USA','FMH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMI','COD','FMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMN','USA','FMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMO','DEU','FMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRL','USA','FMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMY','USA','FMY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FNA','SLE','FNA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FNC','PRT','FNC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','FNE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUA','BFA','FNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADD','ETH','FNH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FNI','FRA','FNI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FNJ','PRK','FNJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','USA','FNK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FNL','USA','FNL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNU','USA','FNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FNT','USA','FNT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FOC','CHN','FOC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRI','ITA','FOG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISP','USA','FOK'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','CRI','FON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','FOO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','FOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','FOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEX','USA','FOX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLW','LBR','FOY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLB','USA','FPR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','FR1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRC','BRA','FRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','FRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BMG','USA','FRH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHK','USA','FRI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEZ','SYC','FRK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRL','ITA','FRL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANC','USA','FRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AES','NOR','FRO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','FRQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CHO','USA','FRR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRW','BWA','FRW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAD','DEU','FRZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FSC','FRA','FSC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAW','USA','FSI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JLN','USA','FSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','FSL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQX','SPM','FSP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INV','GBR','FSS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAF','USA','FSU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','FTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OWB','USA','FTK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','FTR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FTX','COG','FTX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','FUB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HFE','CHN','FUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NGS','JPN','FUJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FUK','JPN','FUK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LGB','USA','FUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WLS','TUV','FUN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAN','CHN','FUO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','FVL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYH','USA','FVX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FWA','USA','FWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBN','USA','FWL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('INV','GBR','FWM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DFW','USA','FWS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','USA','FXM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYZ','MOZ','FXO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HSV','USA','FYM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URC','CHN','FYN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','FYU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FYV','USA','FYV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRS','GBR','FZO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','GA2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGN','COL','GAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNO','USA','GAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAP','HND','GAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','GAD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJE','TUN','GAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBL','USA','GAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDB','AUS','GAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','GAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAJ','JPN','GAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','GAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','GAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','USA','GAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLE','MDV','GAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','GAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NIM','MLI','GAQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','GAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAU','KEN','GAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GNB','FRA','GAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAU','IND','GAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','GAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDL','MMR','GAW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAX','GAB','GAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAY','IND','GAY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','GBC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HYS','USA','GBD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GBE','BWA','GBE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','GBF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GBG','USA','GBG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','USA','GBH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DOM','GLP','GBJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','GBL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGQ','SOM','GBM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRE','NZL','GBS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASM','SDN','GBU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKL','NZL','GBZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NVA','COL','GCA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GCK','USA','GCK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GCM','CYM','GCM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRI','USA','GCY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGN','CAF','GDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GSP','USA','GDC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGA','ETH','GDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HLD','RUS','GDG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGN','CAF','GDI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHT','USA','GDM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GDN','POL','GDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASM','ETH','GDQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLS','TCA','GDT'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GDV','USA','GDV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GDX','RUS','GDX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','GE1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','GE3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCA','CYP','GEC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','GEF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','GEK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','GUY','GEO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAV','CUB','GER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','GET'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRN','SWE','GEV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','GEW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRL','USA','GEY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','GFE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','GFF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALB','USA','GFL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','GUY','GFO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSB','NAM','GFY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDU','AGO','GGC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYR','USA','GGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GGG','USA','GGG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPY','CIV','GGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJC','CIV','GGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGL','ARG','GGS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GHA','DZA','GHA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RSD','BHS','GHB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','GHE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NUE','DEU','GHF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HFE','CHN','GHN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GHT','LBY','GHT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GIB','GIB','GIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','AUS','GIC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKO','GIN','GII'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXR','PAK','GIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GIS','NZL','GIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MWZ','TZA','GIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DFW','USA','PNX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','PO4'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','POM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COD','USA','POY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPS','PHL','PPS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAP','ITA','PRJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSA','ITA','PSA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSP','USA','PSP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIT','USA','PTL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','PUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','PUK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPC','COL','PUU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGF','BRA','PVI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMI','COD','PWO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWD','USA','PYL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORN','DZA','QAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','QAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLJ','ROU','QBY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUF','ITA','QCS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POA','BRA','QDB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','QDQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STR','DEU','QEI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QFI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POA','BRA','QGF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZL','DZA','QHH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','QIF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DMM','SAU','QJB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZZ','POL','QJY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGD','POL','QKD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MIR','TUN','QKN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','QLB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POA','BRA','QLL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','QMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPS','ITA','QMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','QNM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','QOI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZL','DZA','QOZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','QPU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYD','AUS','QRM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLM','TUR','QRQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','QSB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AHO','ITA','QSS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IPN','BRA','QTL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QUP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCE','FRA','QVI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLT','USA','QWG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAL','DNK','QXF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','QYP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TKU','FIN','QZJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSR','ITA','QZR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAH','SAU','RAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAR','COK','RAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PXU','KHM','RBE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EDL','KEN','RBT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COR','ARG','RCU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','REA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOO','NOR','RET'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','RGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RBR','BOL','RIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGE','USA','RIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','RJB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDG','IDN','RKO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RLG','DEU','RLG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNB','SWE','RNB'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAF','USA','RNZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROS','ARG','ROS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXR','IND','RRK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLI','USA','RSJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALS','USA','RTN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RUN','REU','RUN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSS','URY','RVY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOJ','RUS','RYB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGV','USA','RZZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAP','HND','SAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIX','BRA','SBJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','SCA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCU','CUB','SCU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AES','NOR','SDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEA','USA','SEA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKZ','IDN','SEQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SFD','VEN','SFD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PVD','USA','SFZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','SGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','SHH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MWZ','TZA','SHY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LST','AUS','SIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','SJE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRQ','PHL','SJI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJT','USA','SJT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SKG','GRC','SKG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXJ','PAK','SKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLE','USA','SLE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLW','MEX','SLW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAX','USA','SMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLW','LBR','SNI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVB','VEN','SNV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLE','SWE','SOO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FSC','FRA','SOZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CTS','JPN','SPK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPY','CIV','SPY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KUN','LTU','SQQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRG','IDN','SRG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRY','IRN','SRY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YAM','USA','SSM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','STH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUJ','USA','STQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUB','IDN','SUB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RDM','USA','SUO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOS','MDG','SVB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SVQ','ESP','SVQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','SWH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXB','FRA','SXB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAB','BRA','SXX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','AUS','SYU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CYO','CUB','SZJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZX','CHN','SZX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','TAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDS','ITA','TAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','TBE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','MHL','TBV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TFS','ESP','TCI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','TDB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LDB','BRA','TEC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','TEY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZAM','PHL','IPE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUA','COL','IPI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUG','ITA','IPR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','IPW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIA','CHN','IQN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','IRA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAC','BGD','IRD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGJ','TZA','IRI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','IUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IVC','NZL','IVC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGN','COL','IVO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','IVW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IWJ','JPN','IWJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','IND','IXB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXE','IND','IXE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAU','IND','IXI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXL','IND','IXL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXP','IND','IXP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZYL','IND','IXS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXU','IND','IXU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXZ','IND','IXZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SMI','TUR','IZM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','JA1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JAC','USA','JAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SKZ','PAK','JAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAP','HTI','JAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JAN','USA','JAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIM','PER','JAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPA','USA','JBK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','JBT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','JCH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAO','BRA','JCR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','JDF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNZ','BRA','JDO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JED','SAU','JED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','JEG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OAK','USA','JEM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','JFR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DNH','CHN','JGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','JGR'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JHM','USA','JHM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JMK','GRC','JMK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDG','CHN','JMU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XUZ','CHN','JNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SNA','USA','JNP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNX','GRC','JNX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JOG','IDN','JOG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KZN','RUS','JOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','JOP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JPA','BRA','JPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLV','PSE','JRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVH','BRA','JRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JSA','IND','JSA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JSI','GRC','JSI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJU','KOR','JSP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','JSU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBN','USA','JTO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLL','ESP','JU0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JUB','SSD','JUB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JUJ','ARG','JUJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','JUN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','JUR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','JVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GBE','BWA','JWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JYV','FIN','JYV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLE','SWE','KA2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAB','ZWE','KAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSG','USA','KAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WJU','KOR','KAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','KAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAO','FIN','KAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAJ','GUY','KAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJY','FIN','KAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJT','TUR','KCO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUX','UGA','KCU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OXB','SEN','KDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJD','PAK','KDD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALG','DZA','KDF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBQ','GAB','KDJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KDN','GAB','KDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','KDP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','KDS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPE','TWN','KE1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KFA','MRT','KED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEA','USA','KEH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','KEK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUL','FIN','KEM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKO','NPL','KEP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTH','CAN','KES'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JYV','FIN','KEV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KEX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','KFG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGA','COD','KGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGD','RUS','KGD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUD','SEN','KGG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGJ','MWI','KGJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','KGM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DNK','UKR','KGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGS','GRC','KGS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANI','USA','KGX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMH','IRN','KHA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSH','IRN','KHD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KHH','TWN','KHH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAC','BGD','KHL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ULN','MNG','KHR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DNK','UKR','KHU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLA','GBR','KI1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','KIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KKE','NZL','KKO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','KKR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASJ','JPN','KKX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EBB','UGA','KLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZK','RUS','KLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANI','USA','KLG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLQ','LTU','KLJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','KLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDJ','IDN','KLQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KLU','AUT','KLU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KLX','GRC','KLX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTN','ZAF','KLZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AQI','SAU','KMC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KMG','CHN','KMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KMJ','JPN','KMJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','KMM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTN','NAM','KMP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KMS','GHA','KMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGP','MMR','KMV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','KMY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGU','USA','KNB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KNE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XMN','TWN','KNH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','KNK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KEO','GIN','KNN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYZ','IRN','KNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGM','USA','TGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGB','BRA','TGQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLT','AUS','THG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAR','USA','THV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','TIM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SVX','RUS','TJM'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','TKJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','TKX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','TLO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKI','MYS','TMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','CRI','TMU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOJ','JPN','TNE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DSM','USA','TNU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGM','USA','TOI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPA','USA','TPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTX','COL','TQS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZS','BRA','TRQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','TSI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ULN','MNG','TSZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','TTE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','CRI','TTQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUD','SEN','TUD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUA','BFA','TUQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLD','USA','TVI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPY','CIV','TXU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TYS','USA','TYS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UBA','BRA','UBA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','UDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKE','USA','UGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MBA','KEN','UKA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NGO','JPN','UKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','BEL','AA2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBM','SUR','AAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GES','PHL','AAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','KIR','ABF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABR','USA','ABR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LET','COL','ACM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TOL','USA','ADG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTG','ZAF','ADY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDZ','ARG','AFA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIT','USA','AGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXE','IND','AGX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AHO','ITA','AHO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','AIE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JPR','BRA','AIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GYM','MEX','AJS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGN','TCD','AKM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RBR','PER','ALD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STM','BRA','ALT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPS','BRA','AMJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','AN0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANK','TUR','ANK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANI','USA','ANV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AOI','ITA','AOI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PXU','LAO','AOU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCZ','BRA','APQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSR','ITA','AQL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NIM','BFA','ARL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAD','AGO','ARZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GMB','ETH','ASO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','ATD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATW','USA','ATW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','MHL','AUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUW','USA','AUW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLB','USA','AVO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPP','AUS','AXC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','AY1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLD','USA','AYS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EKO','USA','BAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUR','CAF','BBT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGF','CAF','BCF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BCP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IMP','BRA','BDC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','BDW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHO','IND','BEK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFD','USA','BFD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFX','CMR','BFX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PRC','USA','BGT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHI','ARG','BHI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STV','IND','BHU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PVD','USA','BID'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','BIU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJM','BDI','BJM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKK','THA','BKK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPC','CMR','BLC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZS','PER','BLP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BMH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EBL','IRQ','BMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TMR','DZA','BMW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNK','AUS','BNK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NVT','BRA','BNU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOJ','BGR','BOJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUR','CAF','BOZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','BPY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSL','NOR','BR4'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRO','USA','BRO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSL','CHE','BSL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOS','MDG','BSV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALS','USA','BTF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGL','RWA','BTQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUD','HUN','BUD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UPG','IDN','BUW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUL','USA','BVO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIK','USA','BWM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGO','CIV','BXI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOG','CUB','BYM'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','BZC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZO','ITA','BZO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCE','HND','CAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PQI','USA','CAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLD','USA','CBK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCC','CUB','CCC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','CCW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','CDL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RSD','BHS','CEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','CEX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXC','CAN','CFQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGY','PHL','CGM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CHA','USA','CHA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANI','USA','CHU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','CIK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJC','CHL','CJC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TVF','USA','CKN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STS','USA','CLC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLO','COL','CLO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','CM1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGI','USA','KNT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','KNW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUD','MLI','KNZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSL','NOR','KO3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOU','NCL','KOC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZK','ZAF','KOF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOI','GBR','KOI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSD','SWE','KR1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PKU','IDN','KRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVB','GUY','KRG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KRJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVB','GUY','KRM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRP','DNK','KRP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRR','RUS','KRR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STR','DEU','KRU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URC','CHN','KRY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KSB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUX','UGA','KSE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSH','IRN','KSH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORB','SWE','KSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSN','KAZ','KSN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KSP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSU','NOR','KSU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KSX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTA','AUS','KTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BYK','CIV','KTC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MZP','NZL','KTF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNH','KHM','KTI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','KTM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SVL','FIN','KTQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','USA','KTS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTW','POL','KTW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKZ','MYS','KUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKI','MYS','KUD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','AUS','KUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SHM','JPN','KUJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOJ','JPN','KUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KUP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUS','GEO','KUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','KUW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KVA','GRC','KV1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYT','TUR','KYA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','KYF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MIA','USA','KYL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KFA','MLI','KYS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','KYU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','KZB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NUE','DEU','KZG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KZN','RUS','KZN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KZS','GRC','KZS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAA','USA','LAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAD','AGO','LAD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCS','VEN','LAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCM','BRA','LAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPA','USA','LAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAO','PHL','LAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAR','USA','LAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAU','KEN','LAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PZB','ZAF','LAY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBA','GBR','LBA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBD','TJK','LBD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','LBG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAU','KEN','LBK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNS','USA','NHX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','NI1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','NIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHE','AUS','NIF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NIM','NER','NIM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRP','USA','NIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','NIV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IBR','JPN','NJA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEI','USA','NJW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','NKD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FIH','COD','NKL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EWN','USA','NKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NLA','ZMB','NLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLH','USA','NLE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','NLG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','NLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STV','IND','NMB'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','NME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSV','AUS','NMP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDL','MMR','NMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYW','MOZ','NND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','NNK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GWY','IRL','NNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKI','IDN','NNX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','NO1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOC','IRL','NOC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUS','MEX','NOG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GYN','BRA','NOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','NOR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','NSO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','NSV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSL','NOR','NTB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTE','FRA','NTE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLC','USA','NTJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','NTM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHF','USA','NTU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','NUB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','NUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','NUK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJC','USA','NUQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','NUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NJC','RUS','NUX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EVE','NOR','NVK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NVT','BRA','NVT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','NW2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYT','CAN','NWP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUF','CAN','NY1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','NYG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NJC','RUS','NYM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDL','MMR','NYU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIS','KEN','NZO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OAJ','USA','OAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OAM','NZL','OAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OAX','MEX','OAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JIB','DJI','OBC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','OBE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','OBK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLA','GBR','OBN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','OBU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','GRL','OBY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GNV','USA','OCF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABJ','CIV','OGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSB','NAM','OGV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMR','NZL','OHA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','CMP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLN','USA','CNK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SFN','ARG','COC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COU','USA','COU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLZ','BRA','CPU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','CRB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRP','USA','CRP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNK','AUS','CSI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQL','USA','CTB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CTU','CHN','CTU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRQ','PHL','CUJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUZ','PER','CUZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBB','USA','CVS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGP','BGD','CXB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLL','BHS','CXY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCE','HND','CYL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','CZC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAA','USA','CZZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKO','NPL','DAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','DBP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','DDM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKC','USA','DEO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUS','USA','DGL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKO','NPL','DHI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','DIE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIS','COG','DIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NSK','RUS','DKS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLU','CHN','DLU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TOB','LBY','DNF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMA','USA','DNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','DOP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','DRB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRS','DEU','DRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DSK','PAK','DSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOJ','RUS','DU2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUJ','USA','DUJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','DXD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GIZ','YEM','EAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EBJ','DNK','EBJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRG','USA','EDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','EFG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','EGS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HFD','USA','EHT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGF','KAZ','EKB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','ELC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IGR','ARG','ELO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','EMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPS','PHL','ENI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JLN','USA','EOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','ERE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAM','MEX','ESE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EAT','USA','ESW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','ETD'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EUG','USA','EUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EVV','USA','EVV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EXT','GBR','EXT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','FAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAY','USA','FBG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKO','NPL','FEB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATR','MRT','FGD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','FIZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGD','DEU','FLF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKC','USA','FLV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RLG','DEU','FNB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STS','USA','FOB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','FRA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRU','KGZ','FRU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRL','USA','FSW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PQI','USA','FVE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TOE','TUN','GAF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCU','CUB','GAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','GAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALB','USA','GBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJM','COD','GDJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBY','USA','GED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','GFN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GMB','ETH','GHD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MZC','GAB','GIM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PVH','BRA','GJM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGA','ETH','GLC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGA','MAR','GLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHE','AUS','GLY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GVA','FRA','GN1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXU','ETH','GOB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DNH','CHN','GOQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GPT','USA','GPT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','GRL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GRZ','AUT','GRZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GST','USA','GST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSR','CZE','GTW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','GUH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','GUV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GDX','RUS','OHO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAB','BRA','OIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HKD','JPN','OIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDB','AUS','OKB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSB','NAM','OKF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGJ','JPN','OKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','OKL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','OKP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','AUS','OKR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRD','NOR','OLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFD','USA','OLE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','OLI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEA','USA','OLM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','OLQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OFK','USA','OLU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POG','GAB','OMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTN','NAM','OMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MPA','NAM','OMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYF','USA','OMK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXU','IND','OMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMS','RUS','OMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','ONB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','ONE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','ONI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABQ','USA','ONM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EUG','USA','ONP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTA','AUS','ONS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','ONX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OOL','AUS','OOL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSH','USA','OSH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSL','NOR','OSL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GDN','POL','OSP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','BEL','OST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAT','USA','OSX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDJ','TCD','OTC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPW','USA','OTG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSB','NAM','OTJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HUF','USA','OTN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLI','USA','OTS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','OTZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUA','BFA','OUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOI','GBR','OUK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUR','CMR','OUR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDJ','TCD','OUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','OVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OVD','ESP','OVI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RST','USA','OWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBV','GAB','OWE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HVN','USA','OXC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','OXO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RES','ARG','OYA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMH','KEN','OYL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHI','ARG','OYO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DNK','UKR','OZH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DHN','USA','OZR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLC','ESP','PA4'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RPR','IND','PAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEA','USA','PAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('REP','KHM','PAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MZL','COL','PAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANC','USA','PAQ'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAT','IND','PAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZS','PER','PCL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJD','MEX','PCO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THE','BRA','PCS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GYM','MEX','PCV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOU','NCL','PDC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDG','IDN','PDG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLM','IDN','PDO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THE','BRA','PDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOF','BGR','PDV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSO','COL','PSO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSS','ARG','PSS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRC','BRA','PSW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGR','BOL','PSZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRG','USA','PTC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAN','FJI','PTF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','PTJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUC','VEN','PTM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','PTR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','PTU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTX','COL','PTX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','RUS','PVS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLE','USA','PVZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADD','ETH','PWI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PWM','USA','PWM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIT','USA','PWR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PXO','PRT','PXO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VTZ','IND','PYB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PYH','VEN','PYH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HYA','USA','PYM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','PYV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUC','COL','PZA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPG','COK','PZK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTS','SVK','PZY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VCE','ITA','QAD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLZ','BRA','QAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','QAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMO','ITA','QAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNZ','BRA','QAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBZ','ROU','QAY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','QBD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJA','DZA','QBJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CZL','DZA','QBP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORN','DZA','QBT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FOR','BRA','QBX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJA','DZA','QBZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POA','BRA','QCD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','QCG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BAU','BRA','QCJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUG','ITA','QCM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPV','BRA','QCP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','QEQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNZ','BRA','QEU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEG','ITA','QEZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','QFC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAL','DNK','QFH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QFN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSR','ITA','QFR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FUE','ESP','QFU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAC','BRA','QGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAE','DZA','QGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TIP','LBY','QGH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCZ','BRA','QGK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCZ','BRA','QGP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TKS','JPN','QGT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','BEL','QHA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNZ','BRA','QHG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','QHN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KLV','DEU','QHQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGD','DEU','QHU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATZ','EGY','QHX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','QIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRS','FRA','QIE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FOR','BRA','QIG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OVD','ESP','QIJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POS','VEN','PDZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('APL','MOZ','PEB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEE','RUS','PEE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHI','ARG','PEH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSU','LSO','PEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEN','MYS','PEN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','PER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GJA','HND','PEU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','PEY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLE','USA','PFC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGA','COD','PFR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','PGB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGF','FRA','PGF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGA','AGO','PGI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOB','USA','PGL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TMS','STP','PGP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGX','FRA','PGX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THE','BRA','PHB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHE','AUS','PHE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLZ','BRA','PHI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZR','USA','PHN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','PKA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJI','USA','PKD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATH','GRC','PKH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDJ','IDN','PKN'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','PKR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRW','BWA','PKW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBK','FRA','PL2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVR','TCD','PLF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLH','GBR','PLH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAO','BRA','PLL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','PLP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLS','TCA','PLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBN','USA','PLY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWG','USA','PMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBA','GBR','PME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HTS','USA','PMH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKK','THA','PMM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BBA','ARG','PMQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVB','GUY','PMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','PMW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','CRI','PMZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','PNB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CWB','BRA','PNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNK','IDN','PNK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PXM','MEX','PNO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNR','COG','PNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KUN','LTU','PNV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRG','IDN','PPJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLL','USA','PPM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PKU','IDN','PPR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSG','USA','PPV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PYH','VEN','PPZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VSA','MEX','PQM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SFN','ARG','PRA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUC','COL','PRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THS','THA','PRH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTN','ZAF','PRK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PRN','XKX','PRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','PRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPI','USA','PRW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RDM','USA','PRZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSC','USA','PSC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALB','USA','PSF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GWD','PAK','PSI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EDI','GBR','PSL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSU','LSO','LRB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSV','AUS','LRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','LRI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LFW','TGO','LRL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LRR','IRN','LRR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LRT','FRA','LRT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','LSA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','LUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUV','FJI','LUC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXC','IND','LUH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CVG','USA','LUK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUN','ZMB','LUN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDZ','ARG','LUQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','LUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','LUW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBP','CHN','LUZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANI','USA','LVD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZN','USA','LVM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAF','USA','LVS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TOP','USA','LWC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHT','USA','LWM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','LWR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EVV','USA','LWV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CKG','CHN','LXI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LXS','GRC','LXS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASE','USA','LXV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYC','SWE','LYC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYH','USA','LYH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RDU','USA','LYO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYS','FRA','LYS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYU','USA','LYU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LZC','MEX','LZC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZV','COD','LZI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','LZR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MBX','SVN','MA3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAA','IND','MAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAD','ESP','MAD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','MBU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('COU','USA','MBY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTR','USA','MCB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOH','ECU','MCH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','MCL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSC','HUN','MCQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFE','FRA','MCU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCX','RUS','MCX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','BLZ','MDB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDE','COL','MDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDH','USA','MDH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDK','COD','MDK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CVG','USA','MDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLS','TCA','MDS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNQ','ARG','MDX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSL','FRA','ME2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','MEA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOU','NCL','MEE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKL','NOR','MEH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGM','USA','MEJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEM','USA','MEM'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTJ','IDN','MEQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MES','IDN','MES'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TVL','USA','MEV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','MEY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSU','LSO','MFC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MFF','GAB','MFF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGU','USA','MFH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FOC','TWN','MFK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZQN','NZL','MFN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAN','NER','MFQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUZ','PER','MFT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHT','USA','MHT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRZ','BOL','MHW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','MHZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MIE','USA','MIE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MII','BRA','MII'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MXP','ITA','MIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAC','ISR','MIP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFL','USA','MIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALO','USA','MIW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','MHL','MJB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','MJE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RUH','SAU','MJH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MJJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJM','COD','MJM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','MJP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJT','GRC','MJT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEW','ZWE','MJW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRG','IDN','MJY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKC','USA','MKC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PZB','LSO','MKH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKK','USA','MKK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUL','USA','MKO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','MKR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKU','GAB','MKU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RIY','YEM','MKX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKZ','MYS','MKZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FSM','USA','MLC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUB','IDN','MLG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLI','USA','MLI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSM','USA','MLL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','MND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','MNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','MNJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMH','USA','MNN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLT','AUS','MNQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','MNT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','MNW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','MNZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOC','BRA','MOC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOE','IDN','MOF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBM','SUR','MOJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KFA','MRT','MOM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MBS','USA','MOP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOT','USA','MOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKY','AUS','MOV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LSP','COL','MOY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDG','IDN','MPC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MPG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIT','USA','MPJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MPM','MOZ','MPM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','MPP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MPU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','MPX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRL','USA','MPZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','MQE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGF','USA','MQI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVR','TCD','MQO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MQT','USA','MQT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASM','ETH','MQX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRA','LBY','MRA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNA','USA','MRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','MRG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWF','USA','MSV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSZ','AGO','MSZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGN','COL','MTB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JIM','ETH','MTF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAI','CPV','MTI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','KIR','MTK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PVD','USA','MTP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTS','SWZ','MTS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','MTV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMM','ISR','MTZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','MUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYW','MOZ','MUD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','MUF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMH','ETH','MUJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLD','USA','MUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYQ','AUS','MUP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPN','JPN','MUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUX','PAK','MUX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','MVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNS','USA','MVC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FOR','BRA','MVF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','MVI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTV','USA','MVL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','MVP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVR','CMR','MVR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','MVU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BMM','GAB','MVX'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MWA','USA','MWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DOG','SDN','MWE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MWG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','GUY','MWJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MWZ','TZA','MWN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','AUS','MYI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOI','USA','MYL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','MYO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYR','USA','MYR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYW','TZA','MYW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYZ','MWI','MYZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MZC','GAB','MZC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGH','ZAF','MZF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUS','USA','MZJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ETZ','FRA','MZM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MZP','NZL','MZP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DYU','AFG','MZR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXU','ETH','MZX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MIE','USA','MZZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','NAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NIM','BEN','NAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','NAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KKC','THA','NAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAN','FJI','NAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYR','GRL','NAQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAT','BRA','NAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HDY','THA','NAW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PYH','COL','NBB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','NBL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','NBU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','NBX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJS','MEX','NCG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWD','USA','NCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIR','CRI','NCT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIL','IDN','NDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAD','AGO','NDD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDG','CHN','NDG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHF','USA','NGU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NHA','VNM','NHA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UET','PAK','NHS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPO','CHL','VLR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLV','VEN','VLV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','VMU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAN','LAO','VNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VNS','IND','VNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZTH','GRC','VO2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VOG','RUS','VOG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LSE','USA','VOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGO','RUS','VOZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VPS','USA','VPS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STT','PRI','VQS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LGP','PHL','VRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOQ','DEU','WA1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JIM','ETH','WAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WAE','SAU','WAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','WAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBY','USA','WAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','WAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','WAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WAT','IRL','WAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WAW','POL','WAW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','WBA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','WBC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KEL','DEU','WBG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','WBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABE','USA','WBW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','USA','WCR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AHN','USA','WDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAD','DEU','WE2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','WED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','WEI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','WEM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','WEW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HYD','IND','WGC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KKE','NZL','WGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','WGT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','WHD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','WHL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VCT','USA','WHT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','DEU','WID'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','WIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHE','AUS','WIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WJF','USA','WJF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WKA','NZL','WKA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WNZ','CHN','WNZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','WOG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','WON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOS','MDG','WPB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQQ','CAN','WPL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUQ','CHL','WPR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGA','ETH','WRA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHL','USA','WRI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRO','POL','WRO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','WSA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OCC','ECU','WSE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','WSJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','SUR','WSO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','WSU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPP','AUS','WSY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','WTE'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NQT','GBR','WTN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHX','USA','WTR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKL','NZL','WTZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','WUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','WUN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','WUV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WVB','NAM','WVB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLM','DZA','QIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMM','JOR','QIR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSD','EGY','QIV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JOI','BRA','QJA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QJF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QJI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALC','ESP','QJR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRP','DNK','QJW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AJU','BRA','QKA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACH','AUT','QLX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VRA','CUB','QMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMM','JOR','QMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUD','DZA','QMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AWZ','IRN','QMJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSA','ITA','QMM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEB','LBY','QMQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORN','DZA','QMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORN','DZA','QMW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','QNC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NGO','JPN','QNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','QNL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','QNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','QNV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NUE','DEU','QOB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPB','BRA','QOD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GJL','DZA','QOL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRS','ITA','QOP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAG','ITA','QOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCL','CHL','QOV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VCE','ITA','QPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAT','BRA','QPE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SMR','COL','QPI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBZ','ROU','QPL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRI','ITA','QPO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAO','BRA','QPS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOA','ITA','QPZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','QQR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FDH','DEU','QRB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','QRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TZX','TUR','QRI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAX','BRA','QRK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','QTS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAG','ITA','QTX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEB','LBY','QUB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','QUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','QUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBQ','NGA','QUO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJZ','ESP','QUQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IBR','JPN','QUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','QUX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAO','FIN','QVD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HEL','FIN','QVF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOF','BGR','QVJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAP','ITA','QVN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPV','BRA','QVR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MIK','FIN','QVV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUF','CAN','QWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KEL','DEU','QWI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGF','BRA','QWN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FNL','USA','QWP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJZ','ESP','QWW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSR','ITA','QXE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HEL','FIN','QXJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WAW','POL','QXR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRC','BRA','QXW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','QYC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','QYI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNK','AUS','QYN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ETZ','FRA','QYR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','QYV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMM','JOR','QZA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ARW','HUN','QZD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGF','FRA','QZG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HEL','FIN','QZK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUV','FJI','RBI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLD','USA','RBK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EYW','USA','RBN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPB','BOL','RBQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTA','AUS','RBU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','RBY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RCH','COL','RCH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','RCM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RES','ARG','RCQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MBL','USA','RCT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','RDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RDD','USA','RDD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GFK','USA','RDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RDU','USA','RDU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RLG','DEU','REB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('REG','ITA','REG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','REK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOI','USA','REO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RES','ARG','RES'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('REX','MEX','REX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GMA','CAF','RFA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRP','USA','RFG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','CRI','RFR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAC','IND','RGH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGL','ARG','RGL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNJ','DEU','RHB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGL','RWA','RHG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RHO','GRC','RHO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POA','BRA','RIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EAU','USA','RIE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOH','PER','RIJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RMI','ITA','RMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','RMP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CHA','USA','RNC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSP','USA','RNH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNO','USA','RNO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNS','FRA','RNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','BEL','RNX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VCE','ITA','RO1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPT','ZAF','ROD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KKC','THA','ROI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','ROL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGB','BRA','ROO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROT','NZL','ROT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELP','USA','ROW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKO','NPL','RPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','RPM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','RPV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRU','MUS','RRG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGW','USA','RRL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAP','ITA','RRO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','RRV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','RSB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANI','USA','RSH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLU','USA','RSN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RSU','KOR','RSU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAN','FJI','RTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','RTE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RTM','NLD','RTM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','RTS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUX','UGA','RUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTG','CHN','RUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSL','NOR','SA3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAR','USA','SAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MES','IDN','SAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAH','YEM','SAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','SAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAN','USA','SAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAS','BHS','SAQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAT','USA','SAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLR','ITA','SAY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VRN','ITA','SB1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ONT','USA','SBD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUD','GIN','SBI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBB','BOL','SBL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDC','USA','SBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBS','USA','SBS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQL','USA','SBX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OFK','USA','SCB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCE','USA','SCE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SVZ','VEN','SCI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCL','CHL','SCL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCO','KAZ','SCO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCT','YEM','SCT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEE','RUS','SCW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','SCZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDD','AGO','SDD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAP','HND','SDH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKI','MYS','SDK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUT','USA','SDP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SFN','ARG','SFN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALP','TUR','SFQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SFT','SWE','SFT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HFD','USA','SFY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SGB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNJ','DEU','SGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAY','USA','SGH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','SGL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHE','AUS','SGP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGU','USA','SGU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZZU','TZA','SGX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HDY','THA','SGZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASM','ETH','SHC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNZ','CHN','SHF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MMY','JPN','SHI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GPS','ECU','GPS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFS','GBR','GQJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMH','USA','GQQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAM','DEU','GR0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUB','IRL','GR2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','GR3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUC','COL','GRA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GRB','USA','GRB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GSP','USA','GRD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STL','USA','GRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GRI','USA','GRI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACT','USA','GRK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDR','USA','GRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GRO','ESP','GRO'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','GRP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GRR','USA','GRR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLR','ITA','GRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GRV','RUS','GRV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GRX','ESP','GRX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','GRY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWN','MYS','GSA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGV','USA','GSB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBN','USA','GSH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','GSL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GSM','IRN','GSM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','GSN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GSO','USA','GSO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GSP','USA','GSP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABS','EGY','GSQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BBO','SOM','GSR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZK','ZAF','GSS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRT','SDN','GSU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HUY','GBR','GSY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','GTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBW','MYS','GTB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','GTE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSP','USA','GTG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RLG','DEU','GTI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','GTO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYQ','AUS','GTS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','GTT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGR','USA','GTY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GUA','GTM','GUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GYM','MEX','GUB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GUC','USA','GUC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MZI','MLI','GUD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','GUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PNS','USA','GUF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','GUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUP','VEN','GUI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','GUJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','GUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GUM','GUM','GUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCE','HND','GUO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMN','USA','GUP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNS','VEN','GUQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','GUR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAF','USA','GUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','GUU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','DEU','AA0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANR','BEL','AA1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','AAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','AAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAC','EGY','AAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAE','DZA','AAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLH','USA','AAF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LDB','BRA','AAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MST','DEU','AAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','AAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','KIR','AAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAL','DNK','AAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZK','ZAF','AAM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAN','ARE','AAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOM','VEN','AAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAQ','RUS','AAQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAR','DNK','AAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','AAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URC','CHN','AAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISB','PAK','AAW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAX','BRA','AAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAY','YEM','AAY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TAP','GTM','AAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KJA','RUS','ABA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','ABB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABD','IRN','ABD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABE','USA','ABE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','ABG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKY','AUS','ABH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABI','USA','ABI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABJ','CIV','ABJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGA','ETH','ABK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','ABL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBM','SUR','ABN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABJ','CIV','ABO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABQ','USA','ABQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABT','SAU','ABT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIL','IDN','ABU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','ABW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','ABX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABZ','GBR','ABZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACA','MEX','ACA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACC','GHA','ACC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','ACD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACH','CHE','ACH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GCI','GBR','ACI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUC','COL','ACL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUG','CHE','ACO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPC','COL','ACR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KJA','RUS','ACS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EKA','USA','ACV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADA','TUR','ADA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMO','DEU','ADC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADD','ETH','ADD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALP','TUR','ADF'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWP','NAM','ADI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','ADL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAW','USA','ADM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','ADO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMB','LKA','ADP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYR','USA','ADR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OKC','USA','ADT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','ADV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','ADW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADZ','COL','ADZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','AED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PKU','IDN','AEG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGN','TCD','AEH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCW','USA','AEL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AER','RUS','AER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AES','NOR','AES'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','AET'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','AEY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDE','COL','AFI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVH','BRA','AFL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JAC','USA','AFO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','AFR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYT','TUR','AFY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGA','MAR','AGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','AGD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','AGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','AGG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBM','SUR','AGI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','AGK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TXK','USA','AGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PVK','GRC','AGQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGR','IND','AGR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGT','PRY','AGT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGU','MEX','AGU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGV','VEN','AGV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTN','ZAF','AGZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AHO','ITA','AH1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AHB','SAU','AHB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNO','USA','AHC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','AHE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCK','USA','AHF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSP','USA','AHH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIL','IDN','AHI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVB','GUY','AHL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AHN','USA','AHN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GJA','HND','AHS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUT','USA','AHT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AHU','MAR','AHU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','AHY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMF','FRA','AHZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AIA','USA','AIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRG','USA','AIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','AIC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MIE','USA','AID'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MII','BRA','AIF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GMA','CAF','AIG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JIB','DJI','AII'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGS','USA','AIK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','AIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','AIM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMA','USA','AIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','AIP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','KIR','AIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAR','COK','AIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAR','COK','AIU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEI','USA','AIV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTN','NAM','AIW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AJA','FRA','AJA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AJF','SAU','AJF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EVN','TUR','AJI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZYL','IND','AJL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DZA','COM','AJN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AJU','BRA','AJU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIA','CHN','AKA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAK','USA','AKC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXU','IND','AKD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKF','LBY','AKF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','AKG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKJ','JPN','AKJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKL','NZL','AKL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DEN','USA','AKO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','USA','AKP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKR','NGA','AKR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','AKS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALA','CHN','AKU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKX','KAZ','AKX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGP','MMR','AKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALA','KAZ','ALA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALB','USA','ALB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAF','USA','ALE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALG','DZA','ALG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRP','USA','ALI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTN','ZAF','ALJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOA','ITA','ALL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELP','USA','ALM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALO','USA','ALO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALP','SYR','ALP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALR','NZL','ALR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RIY','SOM','ALU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGF','AND','ALV'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGM','USA','ALX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALY','EGY','ALY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIS','PRT','AM1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMA','USA','AMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGN','TCD','AMC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMD','IND','AMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','AMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMH','ETH','AMH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','PAN','AML'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MBS','USA','AMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDJ','TCD','AMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIL','IDN','AMQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','MHL','AMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYQ','AUS','AMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','AMU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DSM','USA','AMW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','AMX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKL','NZL','AMZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SNA','USA','ANA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','ANB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GSP','USA','AND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANE','FRA','ANE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANF','CHL','ANF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANI','USA','ANI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVB','COG','ANJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAD','AGO','ANL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOS','MDG','ANM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','ANN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('APL','MOZ','ANO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','ANP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FWA','USA','ANQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANR','BEL','ANR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUZ','PER','ANS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACH','AUT','ANT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANU','ATG','ANU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBF','USA','ANW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EVE','NOR','ANX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ICT','USA','ANY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYQ','AUS','ANZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','AOA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','AOB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGN','TCD','AOD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SHE','CHN','AOG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAY','USA','AOH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AOJ','JPN','AOJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AOK','GRC','AOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSS','ARG','AOL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','AON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AOO','USA','AOO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LGK','MYS','AOR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','AOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIR','ITA','AOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPB','BOL','APB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STS','USA','APC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('APF','USA','APF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ILG','USA','APG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RIC','USA','APH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','API'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('APL','MOZ','APL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('APN','USA','APN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','APP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GYN','BRA','APS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CHA','USA','APT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ONT','USA','APV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('APW','WSM','APW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','APY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPC','ARG','APZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GUA','GTM','AQB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AQG','CHN','AQG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AQJ','JOR','AQJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AQP','PER','AQP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANC','USA','AQY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','AR3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LFT','USA','ARA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','USA','ARC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIL','IDN','ARD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','ARF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEM','USA','ARG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ARI','CHL','ARI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','ARJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','ARM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','ARP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUC','COL','ARQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GYN','BRA','ARS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ART','USA','ART'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RHI','USA','ARV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ARW','ROU','ARW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','ARY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASA','ERI','ASA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRZ','BOL','ASC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASE','USA','ASE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASF','RUS','ASF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHT','USA','ASH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLW','SHN','ASI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BYK','CIV','ASK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GGG','USA','ASL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASM','ERI','ASM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EKO','USA','ASQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASR','TUR','ASR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDX','USA','AST'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JRO','KEN','ASV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASW','EGY','ASW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDH','USA','ASY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','ASZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RSD','BHS','ATC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UIO','ECU','ATF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATH','GRC','ATH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSS','URY','ATI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRW','USA','ATK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATL','USA','ATL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','ATN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PKB','USA','ATO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATQ','IND','ATQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATR','MRT','ATR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELP','USA','ATS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','ATT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDJ','TCD','ATV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSN','KAZ','ATX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATY','USA','ATY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ATZ','EGY','ATZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUA','ABW','AUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THE','BRA','AUB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUC','COL','AUC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','AUD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SKV','EGY','AUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNE','FRA','AUF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUG','USA','AUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUH','ARE','AUH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','AUI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','AUJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSM','USA','AUK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RST','USA','AUM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAC','USA','AUN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CSG','USA','AUO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','AUP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','AUQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUR','FRA','AUR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUS','USA','AUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIL','IDN','AUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','AUU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','AUV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IMP','BRA','AUX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','AUY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RFD','USA','AUZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VCE','ITA','AVB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIR','FRA','AVF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','AVG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AVI','CUB','AVI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ULN','MNG','AVK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AVN','FRA','AVN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','AVV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUS','USA','AVW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXU','ETH','AWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','AWB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLI','VUT','AWD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POG','GAB','AWE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','AWN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','AWP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AWZ','IRN','AWZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AXA','AIA','AXA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AXD','GRC','AXD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','AXE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AXK','YEM','AXK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AXM','COL','AXM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STC','USA','AXN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','AXR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAW','USA','AXS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AXT','JPN','AXT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAY','USA','AXV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','AYA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','AYD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHT','USA','AYE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','AYH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TCO','COL','AYI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','AYL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CIH','CHN','AYN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUZ','PER','AYP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSV','AUS','AYR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','AYU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','AYW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','AZB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AZD','IRN','AZD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBD','UZB','AZN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AZO','USA','AZO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGA','COL','AZT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAD','AGO','AZZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLD','SVK','BA4'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCE','FRA','BAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HFD','USA','BAF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BAH','BHR','BAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','CRI','BAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GYD','AZE','BAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGA','COD','BAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BAQ','COL','BAQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','BAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BAU','BRA','BAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BAV','CHN','BAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OVB','RUS','BAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BAY','ROU','BAY'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BBA','CHL','BBA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJT','USA','BBD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','BBE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','KIR','BBG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RLG','DEU','BBH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXR','IND','BBI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','DEU','BBJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BBK','BWA','BBK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRY','IRN','BBL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('REP','KHM','BBM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWN','MYS','BBN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BBO','SOM','BBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','BBP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BBQ','ATG','BBQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTP','GLP','BBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','BBS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRA','ROU','BBU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPY','CIV','BBV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EAR','USA','BBW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGF','CAF','BBY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZGM','ZMB','BBZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCU','CUB','BCA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','BCC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BCD','PHL','BCD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDC','USA','BCE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','GUY','BCG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPP','AUS','BCI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALS','USA','BCJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','BCK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','CRI','BCL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BCM','ROU','BCM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BCN','ESP','BCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMH','ETH','BCO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SEB','LBY','BCQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RBR','BRA','BCR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSY','USA','BCS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLL','USA','BCT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JOS','NGA','BCU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','BLZ','BCV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VNX','MOZ','BCW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMH','ETH','BCY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDA','BMU','BDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','AUS','BDD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEZ','USA','BDG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDH','IRN','BDH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDJ','IDN','BDJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KMS','CIV','BDK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WNS','PAK','BDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRG','IDN','BDO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDQ','IND','BDQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDR','USA','BDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GMA','COD','BDT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDU','NOR','BDU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OWB','USA','BDY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BDZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','LUX','BE2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANR','BEL','BE3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEB','GBR','BEB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOS','USA','BED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJO','NIC','BEF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEG','SRB','BEG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GMB','ETH','BEI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPN','IDN','BEJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEN','LBY','BEN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','BEQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BER','DEU','BER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','BET'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','BEU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEW','MOZ','BEW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','BEX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','KIR','BEZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','BFB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAD','DEU','BFE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PGA','USA','BFG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CWB','BRA','BFH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFL','USA','BFL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFN','ZAF','BFN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PIT','USA','BFP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSC','PAN','BFQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFS','GBR','BFS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HHH','USA','BFT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KKC','THA','BFV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MZC','GAB','BGB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEN','PRT','BGC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLH','USA','BGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGF','CAF','BGF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XLS','MRT','BGH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','BGJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','BLZ','BGK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGM','USA','BGM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGO','NOR','BGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANC','USA','BGQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GMA','CAF','BGU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGW','IRQ','BGW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POA','BRA','BGX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUG','ITA','BGY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OPO','PRT','BGZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHA','ECU','BHA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISB','PAK','BHC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHE','NZL','BHE'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GJA','HND','BHG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHH','SAU','BHH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHJ','IND','BHJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DYU','UZB','BHK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HMO','MEX','BHL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','BHM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHN','YEM','BHN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHO','IND','BHO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','BHP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','BHQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','BHR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYD','AUS','BHS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','BHT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUX','PAK','BHV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHX','GBR','BHX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHY','CHN','BHY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNF','BRA','BHZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','BI1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIO','ESP','BI2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIA','FRA','BIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGQ','SOM','BIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','BIC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LNK','USA','BIE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','BIG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAT','USA','BIH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','BII'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','BIK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIL','USA','BIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KBL','AFG','BIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIO','ESP','BIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIQ','FRA','BIQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIS','USA','BIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKO','NPL','BIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ELS','ZAF','BIY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','BIZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASB','IRN','BJB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','BJD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KKN','NOR','BJF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','BJG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKO','NPL','BJH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAK','USA','BJJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','BJK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('APL','MOZ','BJN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','BJP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADD','ETH','BJR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BXN','TUR','BJV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJX','MEX','BJX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJZ','ESP','BJZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTZ','USA','BKC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DEN','USA','BKF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HNL','USA','BKH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKI','MYS','BKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKO','MLI','BKO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','BKP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDJ','TCD','BKR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLM','IDN','BKS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','BKU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKW','USA','BKW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKX','USA','BKX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKY','COD','BKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','BL1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','BLB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAS','USA','BLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLF','USA','BLF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YUM','USA','BLH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLI','USA','BLI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLK','GBR','BLK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLL','DNK','BLL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','BLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','BLO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLR','IND','BLR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','BLS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TVL','USA','BLU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STL','USA','BLV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VCE','ITA','BLX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOC','IRL','BLY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GMA','COD','BMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLC','USA','BMC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','BME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BMG','USA','BMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GEO','GUY','BMJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','BMK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EIN','BEL','BML'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BMM','GAB','BMM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDL','MMR','BMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKY','AUS','BMP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MBA','KEN','BMQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','BMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MOC','BRA','BMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPT','USA','BMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DPS','IDN','BMU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BMV','VNM','BMV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','BMX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOU','NCL','BMY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BMZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNA','USA','BNA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDK','COD','BNB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUX','COD','BNC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BND','IRN','BND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','BNE'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIT','USA','BNF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSP','USA','BNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNI','NGA','BNI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNJ','DEU','BNJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGS','USA','BNL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BNM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOO','NOR','BNN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RDM','USA','BNO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DSK','PAK','BNP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DVO','PHL','BNQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOY','BFA','BNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNS','VEN','BNS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BNT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BNV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNX','BIH','BNX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','BNY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTE','FRA','BO2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','BEL','BO3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','BOB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOD','FRA','BOD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FTX','COG','BOE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOG','COL','BOG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOI','USA','BOI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LDY','GBR','BOL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOM','IND','BOM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOO','NOR','BOO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','BOQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOS','USA','BOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','BOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BOV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPA','USA','BOW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOY','BFA','BOY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BPB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPC','CMR','BPC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','BPF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BXU','PHL','BPH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JAC','USA','BPI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPS','BRA','BPS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPT','USA','BPT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OIT','JPN','BPU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','BQB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OXB','GNB','BQE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JAX','USA','BQK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJU','PRI','BQN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOY','CIV','BQO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDG','RUS','BQS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WAW','BLR','BQT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AYQ','AUS','BQW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYS','FRA','BR0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','BR2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','BRA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLZ','BRA','BRB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRC','ARG','BRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','BRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBA','GBR','BRF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BRH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRI','ITA','BRI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','BRK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRL','USA','BRL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','BRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRQ','CZE','BRQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BEB','GBR','BRR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','BRT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','BRU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRW','USA','BRW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAP','DOM','BRX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KEO','CIV','BRZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RIY','SOM','BSA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSC','COL','BSC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLU','CHN','BSD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOA','USA','BSF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSG','GNQ','BSG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBE','USA','BSI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','BSJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSK','DZA','BSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGF','CAF','BSN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KHH','PHL','BSO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BSP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUS','USA','BSQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSR','IRQ','BSR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IMP','BRA','BSS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KDH','AFG','BST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ION','COD','BSU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','BSW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGN','MMR','BSX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGQ','SOM','BSY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','BSZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','BEL','BT1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTA','CMR','BTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIE','COG','BTB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMB','LKA','BTC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','BTD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FNA','SLE','BTE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGF','CAF','BTG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTH','IDN','BTH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','USA','BTI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTJ','IDN','BTJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IKT','RUS','BTK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AZO','USA','BTL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTM','USA','BTM'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLO','USA','BTN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBM','SUR','BTO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PIT','USA','BTP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTS','SVK','BTS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','BTT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBW','MYS','BTU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BDJ','IDN','BTW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','BTX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IST','TUR','BTZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','BUA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','BUC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUF','USA','BUF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDD','AGO','BUG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','BUI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJA','DZA','BUJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BUL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLO','COL','BUN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BBO','SOM','BUO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LHE','IND','BUP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUR','USA','BUR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPL','GBR','BUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJC','CIV','BUU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUX','COD','BUX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUZ','IRN','BUZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','BVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SID','CPV','BVC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVE','FRA','BVE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KKN','NOR','BVG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','BVI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JPR','BOL','BVK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPS','BRA','BVM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RAI','CPV','BVR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCP','BRA','BVS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOS','USA','BVY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','BVZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTA','AUS','BWB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IPL','USA','BWC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAJ','DEU','BWE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLK','GBR','BWF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEN','MYS','BWH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','BWI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BWJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ICT','USA','BWL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KUF','RUS','BWO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','BWP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLI','USA','BWS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LST','AUS','BWT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NWI','GBR','BWY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GPT','USA','BXA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','IDN','BXD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUD','SEN','BXE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALA','KAZ','BXJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAN','FJI','BXL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BXN','TUR','BXN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OXB','GNB','BXO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSP','USA','BXS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPN','IDN','BXT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAE','ISL','BXV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','BXZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','BYA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHN','YEM','BYD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SHR','USA','BYG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKL','USA','BYH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TWF','USA','BYI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BYK','CIV','BYK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MLW','LBR','BYL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ULN','MNG','BYN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKI','IDN','BYQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAL','DNK','BYR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IYK','USA','BYS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KIR','IRL','BYT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BYU','DEU','BYU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLI','USA','BYW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','BYX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VNX','MOZ','BZB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','BZD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','BLZ','BZE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZG','POL','BZG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAB','ZWE','BZH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJT','TUR','BZI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZK','RUS','BZK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DAC','BGD','BZL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANR','NLD','BZM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZN','USA','BZN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','BZP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZR','FRA','BZR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOU','USA','BZT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FKI','COD','BZU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZV','COG','BZV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHX','GBR','BZZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEG','ITA','CA1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPL','GBR','CA2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','LUX','CA3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAC','BRA','CAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TFF','BRA','CAF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAG','ITA','CAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VCA','VNM','CAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAJ','VEN','CAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLA','GBR','CAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRZ','BOL','CAM'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAA','USA','CAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAP','HTI','CAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAS','MAR','CAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPV','BRA','CAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FBM','AGO','CAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCL','GBR','CAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','CAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','CBC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JST','USA','CBE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','CBG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ERH','DZA','CBH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LST','AUS','CBI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBL','VEN','CBL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBO','PHL','CBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBQ','NGA','CBQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','CBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDD','AGO','CBT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRS','DEU','CBU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGF','BRA','CBW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','CBX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','CBZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DCM','FRA','CCF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAF','USA','CCG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','CCI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCJ','IND','CCJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCM','BRA','CCM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KDH','AFG','CCN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCP','CHL','CCP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OAK','USA','CCR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPC','ARG','CCT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCU','IND','CCU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGB','BRA','CCX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NAS','BHS','CCZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XRY','ESP','CD2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','CDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDC','USA','CDC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','PAN','CDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZO','ITA','CDF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','CDJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GNV','USA','CDK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SHM','JPN','SHM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WJU','KOR','SHO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SHR','USA','SHR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','SHU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANI','USA','SHX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EXT','GBR','SI0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIA','CHN','SIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIS','PRT','SIE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGA','MAR','SII'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIN','SGP','SIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTH','IDN','SIQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIT','USA','SIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NTL','AUS','SIX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AQP','PER','SJA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJD','MEX','SJD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SKU','GRC','SKU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GOJ','RUS','SKX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANR','NLD','SL0'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLA','ARG','SLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLC','USA','SLC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FYV','USA','SLG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLL','OMN','SLL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLN','USA','SLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TYR','USA','SLR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXC','IND','SLV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SLZ','BRA','SLZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUQ','CHL','SMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIM','PER','SMG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSM','USA','SMK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTM','USA','SMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SMP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','SMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SMX','USA','SMX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SNA','USA','SNA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SNO','LAO','SND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRZ','BOL','SNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABI','USA','SNK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SNN','IRL','SNN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HMO','MEX','SNQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGA','COL','SNT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGN','MMR','SNW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZG','POL','SO1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSC','HUN','SOB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SPW','USA','SPW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBA','USA','SQA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUC','COL','SQE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RFD','USA','SQI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','SQN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UPG','IDN','SQR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOH','PER','SQU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','SQX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPB','BOL','SRB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBB','BOL','SRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPN','IDN','SRI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LST','AUS','SRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRQ','USA','SRQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EBB','UGA','SRT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRX','LBY','SRX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SRZ','BOL','SRZ'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FLO','USA','SSC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SSH','EGY','SSH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CLO','COL','SSL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YUY','CAN','SSQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVD','ARG','SST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOD','BRA','SSZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','ST2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STC','USA','STC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','AUS','STF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STI','DOM','STI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STL','USA','STL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSP','USA','STP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SVG','NOR','SVG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EVE','NOR','SVJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','AUS','SVM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGN','KHM','SVR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUV','FJI','SVU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SVX','RUS','SVX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWA','CHN','SWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWD','USA','SWD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SWG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHX','GBR','SWI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYP','PAK','SWN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMI','IDN','SWQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NJC','RUS','SWT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABI','USA','SWW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SXA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','SXE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','SXH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXL','IRL','SXL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSM','USA','SXP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKI','MYS','SXS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRZ','IND','SXV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAC','TUR','SXZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','SYB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EAM','YEM','SYE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNA','USA','SYI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SMX','USA','SYL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYO','JPN','SYO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RSU','KOR','SYS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRW','USA','SYV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYY','GBR','SYY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASA','ETH','SZE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MVD','URY','TAW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASB','TKM','TAZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GCN','USA','TBC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','KIR','TBF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GGT','BHS','TBI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','TBL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBO','TZA','TBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGS','USA','TBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TBU','TON','TBU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','TCA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LET','COL','TCD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URC','CHN','TCG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','TCJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHM','USA','TCL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TCP','EGY','TCP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IXM','IND','TCR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BFN','ZAF','TCU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWP','NAM','TCY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBB','BOL','TDD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALA','KAZ','TDK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDX','USA','TDO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','TDV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAP','HND','TEA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AAL','DNK','TED'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUA','BFA','TEG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','TEK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','TEM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','TEP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASM','ERI','TES'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TEX','USA','TEX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TFF','BRA','TFF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','TFM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KFA','MRT','THT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHW','ZAF','THY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TIA','ALB','TIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORN','DZA','TID'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','TIG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TIJ','MEX','TIJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGA','DZA','TIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TIP','LBY','TIP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','AUS','TIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DJJ','PNG','TIZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JHB','IDN','TJB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GJA','HND','TJI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','TJN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWN','IDN','TJS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLA','CMR','TKC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNU','USA','TKE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHS','THA','TKH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TKK','FSM','TKK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TKN','JPN','TKN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TKQ','TZA','TKQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THS','THA','TKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','TKV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','TKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OME','USA','TLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTG','BWA','TLD'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','TLG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','TLJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLN','FRA','TLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIS','USA','TLR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','TLU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','TLW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABY','USA','TMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STD','COL','TME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','TMI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSL','NOR','TO3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AHN','USA','TOC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLG','USA','TOG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','TOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','TON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CJC','CHL','TOQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBM','SUR','TOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMS','RUS','TOX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJC','CIV','TOZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPE','TWN','TPE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','TPI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACT','USA','TPL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPQ','MEX','TPQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LKO','NPL','TPU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DYU','AFG','TQN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISG','JPN','TRA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRD','NOR','TRD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IYK','USA','TRH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKI','IDN','TRK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRN','ITA','TRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CMB','LKA','TRR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LOH','PER','TRU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKC','USA','TRX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSB','NAM','TSB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTG','ZAF','TSD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','TSG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','TSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSN','CHN','TSN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCM','BRA','TSQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','KIR','TSU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPN','IDN','TSX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAG','ITA','TTB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDX','USA','TTD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TUU','SAU','TUU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXJ','CAN','TUX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TVC','USA','TVC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TVL','USA','TVL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','TWB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNE','AUS','TWN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','TWY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TXK','USA','TXK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','TXR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','TYB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSD','SWE','TYF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RSD','BHS','TYM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','TYP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDP','URY','TYT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CUN','MEX','TZM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YUM','MEX','UAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','UAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','UAP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZE','GTM','UAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','PNG','UBI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UBP','THA','UBP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SYR','USA','UCA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LWO','UKR','UCK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NNM','RUS','UCT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSP','USA','UDD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSC','UKR','UDJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LST','AUS','UEE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKE','USA','UES'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ULN','MNG','UGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAD','AGO','UGO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BIK','IDN','UGU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UIB','COL','UIB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','UMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','UMM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGF','BRA','UMU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DYU','AFG','UND'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UNI','VCT','UNI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ULN','MNG','UNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','UOL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ORB','SWE','UP1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIR','CRI','UPL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOA','USA','UPP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AOO','USA','UQE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URC','CHN','URC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PSS','BRA','URG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAJ','VEN','URM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGO','RUS','URS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URY','SAU','URY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRS','CZE','US1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NNM','RUS','USK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('USM','THA','USM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLM','TUR','USQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRQ','PHL','USU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMS','NLD','UTC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTH','THA','UTH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGP','ESP','UTL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTP','THA','UTP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTY','PAN','UTU'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UUD','RUS','UUD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','UUU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UVL','EGY','UVL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGI','USA','UWA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BAV','CHN','UYN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('THN','SWE','VA1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VVC','COL','VAB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDF','BRA','VAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CDV','USA','VDZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BVB','GUY','VEG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VER','MEX','VER'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISN','USA','VEX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VFA','ZWE','VFA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROS','ARG','VGS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VHM','SWE','VHM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','VHZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OVD','ESP','VI5'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VRN','ITA','VIC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIG','VEN','VIG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIJ','VGB','VIJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIT','ESP','VIT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','VIV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRI','USA','VJI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NNM','RUS','VKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLC','ESP','VLC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROV','RUS','VLK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLN','VEN','VLN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACH','CHE','ZDT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZDX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STR','DEU','ZEB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','ZEE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAJ','DEU','ZEH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMO','DEU','ZEK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','ZEN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STR','DEU','ZES'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZEV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAJ','DEU','ZEZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','ZFE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','ZFL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWI','USA','ZFO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQU','CAN','ZFW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','ZGI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISA','AUS','ZGL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','BEL','ZGQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ERF','DEU','ZGT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RLG','DEU','ZGW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','ZHB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','ZHF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','ZHJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGP','CAN','ZKG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZKK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NLA','ZMB','ZKP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZKU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACH','CHE','ZKX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIR','CHE','ZKZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FDH','CHE','ZLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZLH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSL','CHE','ZLL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZLO','MEX','ZLO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','ZLZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RBR','BRA','ZMD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLQ','ITA','ZMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STL','USA','ZMV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANI','USA','ZNC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','ZNF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NUE','DEU','ZNI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DTM','DEU','ZNL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAJ','DEU','ZNO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DTM','DEU','ZNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','ZNU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','ZNW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZNZ','TZA','ZNZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RLG','DEU','ZOD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','ZOI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAJ','DEU','ZOM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZOQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('STR','DEU','ZOT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMO','DEU','ZOW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXB','DEU','ZPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RLG','DEU','ZPD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPA','USA','ZPH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DTM','DEU','ZPL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMO','NLD','ZWO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRD','NOR','ZXC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOO','NOR','ZXL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TOS','NOR','ZXQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGD','POL','ZYC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EIN','NLD','ZYM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BJA','DZA','ZZA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALG','DZA','ZZD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ALG','DZA','ZZK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HKG','HKG','ZZQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZZU','MWI','ZZU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUQ','ZWE','GWE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PVH','BOL','GYA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAC','JPN','HAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAV','CUB','HAV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANI','USA','HCR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGN','MMR','HEB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDT','USA','HES'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGH','CHN','HGH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HNL','USA','HHI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPP','AUS','HIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NDG','CHN','HLH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCV','UKR','HMJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','HO1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BNA','USA','HOP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HNL','USA','HPV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLT','AUS','HRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','HSM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPP','AUS','HTI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HUI','VNM','HUI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOS','MDG','HVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HWN','ZWE','HWN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUZ','IRN','IAQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOG','CUB','ICR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','IDN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNS','AUS','IFL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGY','PHL','IGN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOJ','JPN','IIN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','ILF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','IMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NNM','RUS','INA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDK','COD','INO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CID','USA','IOW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAF','USA','IRB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISB','PAK','ISB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IPT','USA','ISM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ITH','USA','ITH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','USA','IVH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZYL','IND','IXH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IYK','USA','IYK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','JAQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JDH','IND','JDH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ERI','USA','JFN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','JHS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PVO','ECU','JIP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGK','IDN','JKT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SDD','AGO','JMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JNU','USA','JNU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSC','PAN','JQE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCU','BGD','JSR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','JUI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HGR','USA','JYO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTN','NAM','KAS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FAI','USA','KBC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMI','COD','KBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','KBY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCV','UKR','KCP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KEO','CIV','KEO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KGB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NJC','RUS','KGP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJY','FIN','KHJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','MHL','KIO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KJA','RUS','KJA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KJA','MNG','ULO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UME','SWE','UME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URT','THA','UNN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','UPV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','URU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HRE','ZWE','UTA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UTT','ZAF','UTT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CNQ','ARG','UZU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OMH','TUR','VAN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KKN','NOR','VAW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VCE','ITA','VCE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AGS','USA','VDI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','VEV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XAP','BRA','VIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIX','BRA','VIX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PMW','BRA','VLP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRA','ROU','VO3'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VRA','CUB','VRA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CPT','ZAF','VRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEB','USA','VSF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PDX','USA','VUO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTS','ZAF','VYD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','WAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSM','USA','WBB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WDH','NAM','WDH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ABX','AUS','WGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOI','GBR','WIC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','WKB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','WLC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOS','MDG','WMA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOS','MDG','WMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','WOA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRE','NZL','WRE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AKN','USA','WSN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','WTS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PHE','AUS','WWI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZR','FRA','XAG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAY','GUF','XAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GNB','FRA','XBI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNE','FRA','XBV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PTP','GLP','XCJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','FRA','XCZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYJ','CAN','XEJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YVO','CAN','XFK'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGK','CAN','XGW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XIL','CHN','XIL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SMI','TUR','XKU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SNO','VNM','XLO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBR','AUS','XMC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EGC','FRA','XMR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOY','BFA','XNU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUF','CAN','XPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GLA','GBR','XQW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NIM','BFA','XSE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LRH','FRA','XST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LRT','FRA','XUY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYS','FRA','XVI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGK','CAN','XVV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BER','DEU','XXP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YSM','CAN','YBE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWG','CAN','YBV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YCO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQR','CAN','YDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ISN','CAN','YEN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YFC','CAN','YFC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','YGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YGY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YDF','CAN','YHR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YIW','CHN','YIW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZP','CAN','YKK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YLF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQY','CAN','YLX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YMM','CAN','YMM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YDF','CAN','YNF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQU','CAN','YOE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYJ','CAN','YPF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYD','CAN','YPZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQT','CAN','YQT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQB','CAN','YRQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYB','CAN','YSI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YSV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','YTG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXE','CAN','YTT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YLW','CAN','YVE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YWM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YUY','CAN','YXR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YYR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YZS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BZO','ITA','ZAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HOQ','DEU','ZBD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLL','DNK','ZBT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZCI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NUE','DEU','ZCZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSL','CHE','ZDW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBA','GBR','ZEQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','CAN','ZFM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YDF','CAN','ZGS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQU','CAN','ZHP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZIG','SEN','ZIG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','ZJL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACH','CHE','ZKA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZKW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YDF','CAN','ZLT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQD','CAN','ZNG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRS','DEU','ZNV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZON'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LNZ','DEU','ZPF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FMO','DEU','ZPQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('FRA','DEU','ZQC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZQN','NZL','ZQN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','ZRJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRS','DEU','ZSG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAJ','DEU','ZSU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','ZTS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TNR','MDG','ZVA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRD','NOR','ZXG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BSK','DZA','ZZB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AUG','USA','WVL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBY','USA','WWD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LBL','USA','WWR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','WXF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','WYA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','WYN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOD','FRA','XAC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KRP','DNK','XAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('JOG','CXR','XCH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQG','CAN','XCM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','XCO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ETZ','FRA','XCR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','XCV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('URO','FRA','XCY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUA','BFA','XDJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGP','CAN','XDL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGP','CAN','XDO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQZ','CAN','XDV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GVA','FRA','XEB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YCD','CAN','XEH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXU','CAN','XEK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSN','CHN','XEN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','GRL','XEQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YFC','CAN','XFC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGP','CAN','XFI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('XFN','CHN','XFN'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MSS','CAN','XFS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOY','BFA','XGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NQT','GBR','XGM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','XGR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUF','CAN','XGY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LUX','BEL','XHN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBG','GBR','XHU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXU','CAN','XIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LJG','CHN','XIC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAB','BRA','XIG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBG','CAN','XIM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('IGR','BRA','XIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PUF','FRA','XMJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRN','FRA','XMO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GVA','FRA','XMQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCE','FRA','XMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TLS','FRA','XMW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAN','GBR','XMZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MME','GBR','XNO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHX','GBR','XNV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCY','FRA','XOG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROS','ARG','XOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YCD','CAN','XPB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YFO','CAN','XPK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQD','CAN','XPP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','USA','XPU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','XQB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BLK','GBR','XQL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHX','GBR','XQT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LPL','GBR','XRC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHX','GBR','XRG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RNS','FRA','XRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXY','CAN','XRR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BHX','GBR','XRU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLS','TCA','XSC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XSG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCE','FRA','XSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NCY','FRA','XSN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SOU','GBR','XSR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ANE','FRA','XSU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIL','FRA','XSX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LDE','FRA','XTB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROK','AUS','XTG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTH','CAN','XTL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','XYA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OUA','BFA','XZA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZR','CAN','XZC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQZ','CAN','YAA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YVR','CAN','YAE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CCP','CHL','YAI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','YAL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YAO','CMR','YAO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YVO','CAN','YAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YHZ','CAN','YAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYC','CAN','YBA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YVR','CAN','YBD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBG','CAN','YBG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGP','CAN','YBJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WRG','CAN','YBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWG','CAN','YBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQD','CAN','YBU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YDF','CAN','YBX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YCB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','YCF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYG','CAN','YCI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUF','CAN','YCM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXJ','CAN','YCQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYC','CAN','YCT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YFC','CAN','YCX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXC','CAN','YCZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YDE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YDI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YFS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQU','CAN','YGC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXY','CAN','YGH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YUY','CAN','YGL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQT','CAN','YGQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YGT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YGX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YGZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','YHC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTS','CAN','YHF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YHK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YHO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YCD','CAN','YHS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YHY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SCC','CAN','YIC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YIK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DTW','USA','YIP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQU','CAN','YJA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBG','CAN','YJN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YDF','CAN','YJT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXU','CAN','YKD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YKG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YKL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YKO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTS','CAN','YKU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZP','CAN','YLA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YLC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','YLG'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXE','CAN','YLJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','YNK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWG','CAN','YNO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YNZ','CHN','YNZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YMM','CAN','YOD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YOH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YOL','NGA','YOL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXU','CAN','YOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXE','CAN','YPA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQU','CAN','YPE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YPH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQT','CAN','YPL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YPO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQY','CAN','YPS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YPX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYB','CAN','YQA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXC','CAN','YQE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXY','CAN','YQH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQL','CAN','YQL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQQ','CAN','YQQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQU','CAN','YQU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQX','CAN','YQX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YRA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YRF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBG','CAN','YRJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBL','CAN','YRN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BTV','CAN','YSC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YVR','CAN','YSE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YOW','CAN','YSH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ASP','AUS','YUE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YGX','CAN','YUT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YUY','CAN','YUY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YFO','CAN','YVC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXE','CAN','YVG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YVP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YMM','CAN','YVT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWK','CAN','YWB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YWL','CAN','YWL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YWO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YAM','CAN','YWR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YWY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXE','CAN','YXE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXJ','CAN','YXJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYR','CAN','YXP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXT','CAN','YXT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXY','CAN','YXY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYD','CAN','YYD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYF','CAN','YYF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YYJ','CAN','YYJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YXH','CAN','YYN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQT','CAN','YYW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YKA','CAN','YZA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZF','CAN','YZF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YDF','CAN','YZM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YZR','CAN','YZR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YQU','CAN','YZU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YSJ','CAN','YZX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GRX','ESP','ZA2'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZAD','HRV','ZAD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZCL','MEX','ZCL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZCO','CHL','ZCO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MUC','DEU','ZCR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','ZCT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUS','DEU','ZCW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZDA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ACH','CHE','ZDD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZRH','CHE','ZDG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','ZDK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRN','CHE','ZDP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','KKH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('WAT','IRL','KKY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SIT','USA','KLP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BKY','RWA','KME'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PQC','KHM','KMT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','KNI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRU','BEL','KO1'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KOK','FIN','KOK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','KOZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BET','USA','KPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','KQL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEK','RUS','KRO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KSC','SVK','KSC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DYU','UZB','KSQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KUL','MYS','KTE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOY','MLI','KTX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KUN','LTU','KUN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DUT','USA','KVC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTN','USA','KWF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HIR','SLB','KWR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KHV','RUS','KXK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','KZH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','LAH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAX','USA','LAX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PVH','BRA','LBR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LCE','HND','LCE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CFS','AUS','LDH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SZK','ZAF','LDZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEI','ESP','LEI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LET','COL','LET'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','LGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SXB','DEU','LHA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CKG','CHN','LIA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LIS','PRT','LIS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LEX','USA','LKI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADD','ETH','LLI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBY','USA','LLY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWN','MYS','LMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYW','MOZ','LMZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','LNQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KWA','MHL','LOF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GUA','GTM','LOX'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MYY','IDN','LPU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUX','USA','LRJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEI','USA','LSK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LST','AUS','LST'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KTM','NPL','LTG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBY','USA','LTW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKK','USA','LUP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KGI','AUS','LVO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LWS','USA','LWS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LYG','CHN','LYG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YBP','CHN','LZO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','MHL','MAJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAB','COD','MAT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GBE','ZAF','MBD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MRQ','PHL','MBO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PLN','USA','MCD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDC','IDN','MDC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('GAL','USA','MDR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEI','USA','MEI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LET','COL','MFB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MFR','USA','MFR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGA','NIC','MGA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MGM','USA','MGM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MHD','IRN','MHD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BME','AUS','MHO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAJ','MHL','MIJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MJD','PAK','MJD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BPN','IDN','MJU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MKL','USA','MKL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PIH','USA','MLD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','MLQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MMB','JPN','MMB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PWM','USA','MMN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CAB','COD','MNB'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MPA','ZMB','MNR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CEI','MMR','MOG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ZIA','RUS','MOW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RGA','FLK','MPN'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CGB','BOL','MQK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAF','USA','MRF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSV','AUS','MRL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KEL','DNK','MRW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MCT','OMN','MSH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('KAC','TUR','MSR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','MTD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POL','MOZ','MTU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOI','USA','MUO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MBJ','JAM','MVJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BUQ','ZWE','MVZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','MWT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LGP','PHL','MXI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PER','AUS','MXU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HAC','JPN','MYE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAC','USA','MYV'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('RCB','ZAF','MZQ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BWN','IDN','NAF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PPT','PYF','NAU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MTR','COL','NCI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('LAD','AGO','NDF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGF','CAF','NDL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BRE','DEU','NDZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DIN','LAO','NEU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SUV','FJI','NGI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PWM','USA','NHZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NJC','RUS','NJC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VIS','USA','NLC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MDL','MMR','NMS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NNY','CHN','NNY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NOS','MDG','NOS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OVB','RUS','NOZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CRP','USA','NQI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TIJ','USA','NRS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VNX','MOZ','NTC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BGA','COL','NUH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MAO','BRA','NVP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('NBO','KEN','NYK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SJC','USA','OAR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SBY','USA','OCE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SWD','USA','OCI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UYL','CAF','ODJ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBM','SUR','OEM'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('POM','PNG','OGE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SGD','DEU','OHR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MIE','USA','OKK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADQ','USA','OLH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('AMM','JOR','OMF'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MEL','AUS','ONG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OTM','USA','OOA'); +commit; +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','OPI'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('BOS','USA','ORH'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CBB','BOL','ORU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('OSD','SWE','OSD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TRD','NOR','OSY'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('EJA','COL','OTU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('MII','BRA','OUS'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('CVG','USA','OXD'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SVQ','ESP','OZP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('HNL','USA','PAK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBC','MEX','PBC'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('VLN','VEN','PBL'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PBZ','ZAF','PBZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PYH','COL','PCR'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ROS','URY','PDU'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DRW','AUS','PEP'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PFO','CYP','PFO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('DLI','VNM','PHA'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PAH','USA','PHT'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TPA','USA','PIE'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('YTH','CAN','PIW'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('PEN','MYS','PKG'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('UBP','LAO','PKZ'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('ADL','AUS','PLO'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('TSV','AUS','PMK'); +Insert into ERIGHTS.AIRPORT_CITIES (IATA_CODE,COUNTRY_CODE,CITY_CODE) values ('SAP','BLZ','PND'); +commit; diff --git a/e-rights-common/src/main/database/release/archive/2.11.0/33_RIGD-2090_V_AIRPORT_CITIES.sql b/e-rights-common/src/main/database/release/archive/2.11.0/33_RIGD-2090_V_AIRPORT_CITIES.sql new file mode 100644 index 0000000..f8b39b1 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.11.0/33_RIGD-2090_V_AIRPORT_CITIES.sql @@ -0,0 +1,15 @@ +CREATE OR REPLACE VIEW v_airport_cities AS + SELECT + a.iata_code, + a.airport_name, + a.location_name, + ac.country_code, + ac.city_code, + ci.description_en, + co.cd_iso_a2 + FROM + airports a + INNER JOIN airport_cities ac ON ( a.iata_code = ac.iata_code ) + INNER JOIN mv_cities ci ON ( ac.country_code = ci.country_code + AND ac.city_code = ci.city_code ) + INNER JOIN mv_countries co ON ( ac.country_code = co.country_code ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.11.0/34_add_app_parameters_for_skyscanner.sql b/e-rights-common/src/main/database/release/archive/2.11.0/34_add_app_parameters_for_skyscanner.sql new file mode 100644 index 0000000..89deff5 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.11.0/34_add_app_parameters_for_skyscanner.sql @@ -0,0 +1,16 @@ +insert into APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values +( 1 + (select max(PARAMETER_ID) from APP_PARAMETERS) , 'TUD_RATES_WS' , 'PRICE_FORMULA_PCT_BELOW_ITINERARY_OF_REFERENCE' , '80'); +commit; + +insert into APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values +( 1 + (select max(PARAMETER_ID) from APP_PARAMETERS) , 'TUD_RATES_WS' , 'PRICE_FORMULA_THRESHOLD_FASTEST_FRACTION' , '5.5'); +commit; + +insert into APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values +( 1 + (select max(PARAMETER_ID) from APP_PARAMETERS) , 'TUD_RATES_WS' , 'PRICE_FORMULA_THRESHOLD_ADDITIONAL_MINUTES' , '24'); +commit; + +insert into APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values +( 1 + (select max(PARAMETER_ID) from APP_PARAMETERS) , 'TUD_RATES_WS' , 'PRICE_FORMULA_MAXIMUM_EUR' , '6300'); +commit; + diff --git a/e-rights-common/src/main/database/release/archive/2.11.0/35_RIGD-2131_Fix_airport_mappings.sql b/e-rights-common/src/main/database/release/archive/2.11.0/35_RIGD-2131_Fix_airport_mappings.sql new file mode 100644 index 0000000..6386a5c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.11.0/35_RIGD-2131_Fix_airport_mappings.sql @@ -0,0 +1,38 @@ +update AIRPORT_CITIES set IATA_CODE = 'PAR' where IATA_CODE = 'ORY'; + +update AIRPORT_CITIES set IATA_CODE = 'MIL' where IATA_CODE = 'MXP'; + +update AIRPORT_CITIES set IATA_CODE = 'TYO' where IATA_CODE = 'NRT'; + +update AIRPORT_CITIES set IATA_CODE = 'BJS' where IATA_CODE = 'PKX' or IATA_CODE = 'PEK'; + +update AIRPORT_CITIES set IATA_CODE = 'MOW' where IATA_CODE = 'ZIA'; + +update AIRPORT_CITIES set IATA_CODE = 'ROM' where IATA_CODE = 'FCO'; + +update AIRPORT_CITIES set IATA_CODE = 'SEL' where IATA_CODE = 'ICN'; + +update AIRPORT_CITIES set IATA_CODE = 'STO' where IATA_CODE = 'ARN'; + +update AIRPORT_CITIES set IATA_CODE = 'YTO', CITY_CODE = 'YTO' where IATA_CODE = 'YYZ'; + +update AIRPORT_CITIES set IATA_CODE = 'BUH' where IATA_CODE = 'OTP'; + +update AIRPORT_CITIES set IATA_CODE = 'BAK' where IATA_CODE = 'GYD'; + +update AIRPORT_CITIES set IATA_CODE = 'OSA' where IATA_CODE = 'KIX'; + +update AIRPORT_CITIES set IATA_CODE = 'JKT' where IATA_CODE = 'CGK'; + +update AIRPORT_CITIES set IATA_CODE = 'TCI' where IATA_CODE = 'TFS'; + +update AIRPORT_CITIES set IATA_CODE = 'DTT', CITY_CODE = 'DTT' where IATA_CODE = 'DTW'; + +update AIRPORT_CITIES set IATA_CODE = 'SPK' where IATA_CODE = 'CTS'; + +insert into AIRPORTS (IATA_CODE,AIRPORT_NAME,LOCATION_NAME,EASREFN,ACTIVE,COUNTRY_CODE,COUNTRY_CODE_ISO3,LATITUDE,LONGITUDE) +values ('GSV','Saratov Airport','SARATOV - RUS','Y','Y','RU','RUS', 51.714810, 46.170479); + +update AIRPORT_CITIES set IATA_CODE = 'BHZ' where IATA_CODE = 'CNF'; + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.11.0/36_Add iata codes to MF.sql b/e-rights-common/src/main/database/release/archive/2.11.0/36_Add iata codes to MF.sql new file mode 100644 index 0000000..44f2d8b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.11.0/36_Add iata codes to MF.sql @@ -0,0 +1,33 @@ +ALTER TABLE MOVEMENT_FILES + ADD (IATA_CODE_FROM VARCHAR2(3) ); + +ALTER TABLE MOVEMENT_FILES + ADD (IATA_CODE_TO VARCHAR2(3) ); + + +ALTER TABLE AUD_MOVEMENT_FILES + ADD (IATA_CODE_FROM VARCHAR2(3) ); + +ALTER TABLE AUD_MOVEMENT_FILES + ADD (IATA_CODE_TO VARCHAR2(3) ); + + + + + +update movement_files m + set IATA_CODE_FROM = ( select a.iata_code as "PROPOSED_IATA_CODE_FROM" + from movement_files mr, airport_cities a + where mr.city_code_from = a.city_code + and m.MOVEMENT_FILE_ID = mr.MOVEMENT_FILE_ID); + + + +update movement_files m + set IATA_CODE_TO = ( select a.iata_code as "PROPOSED_IATA_CODE_TO" + from movement_files mr, airport_cities a + where mr.city_code_to = a.city_code + and m.MOVEMENT_FILE_ID = mr.MOVEMENT_FILE_ID); + + +commit; diff --git a/e-rights-common/src/main/database/release/archive/2.11.0/37 update entitlement max iatas.sql b/e-rights-common/src/main/database/release/archive/2.11.0/37 update entitlement max iatas.sql new file mode 100644 index 0000000..a43042c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.11.0/37 update entitlement max iatas.sql @@ -0,0 +1,45 @@ +update ENTITLMNT_MAXS entmaxupt + set iata_from = ( + select mf.iata_code_from from ENTITLMNT_MAXS emax,ENTITLMNT_TYPES etype,movement_files mf + where emax.ENTITLMNT_TYPE_ID = etype.ENTITLMNT_TYPE_ID + and etype.movement_file_id = mf.movement_file_id + and ENTITLMNT_MAX_CAT_ID = 6 + and entmaxupt.ENTITLMNT_MAX_ID = emax.ENTITLMNT_MAX_ID + ) + where ENTITLMNT_MAX_CAT_ID = 6; + + +update ENTITLMNT_MAXS entmaxupt + set iata_to = ( + select mf.iata_code_to from ENTITLMNT_MAXS emax,ENTITLMNT_TYPES etype,movement_files mf + where emax.ENTITLMNT_TYPE_ID = etype.ENTITLMNT_TYPE_ID + and etype.movement_file_id = mf.movement_file_id + and ENTITLMNT_MAX_CAT_ID = 6 + and entmaxupt.ENTITLMNT_MAX_ID = emax.ENTITLMNT_MAX_ID + ) + where ENTITLMNT_MAX_CAT_ID = 6; + + +update ENTITLMNT_MAXS entmaxupt + set iata_to = ( + select mf.iata_code_to from ENTITLMNT_MAXS emax,ENTITLMNT_TYPES etype,movement_files mf + where emax.ENTITLMNT_TYPE_ID = etype.ENTITLMNT_TYPE_ID + and etype.movement_file_id = mf.movement_file_id + and ENTITLMNT_MAX_CAT_ID = 10 + and mf.family_posting = 'N' + and entmaxupt.ENTITLMNT_MAX_ID = emax.ENTITLMNT_MAX_ID + ) + where ENTITLMNT_MAX_CAT_ID = 10; + + + +update ENTITLMNT_MAXS entmaxupt + set iata_from = ( + select mf.iata_code_from from ENTITLMNT_MAXS emax,ENTITLMNT_TYPES etype,movement_files mf + where emax.ENTITLMNT_TYPE_ID = etype.ENTITLMNT_TYPE_ID + and etype.movement_file_id = mf.movement_file_id + and ENTITLMNT_MAX_CAT_ID = 10 + and mf.JOBTO_FAMILY_POSTING = 'N' + and entmaxupt.ENTITLMNT_MAX_ID = emax.ENTITLMNT_MAX_ID + ) + where ENTITLMNT_MAX_CAT_ID = 10; diff --git a/e-rights-common/src/main/database/release/archive/2.11.1/37_RIGD-2158_MV_FAMILY_MEMBERS.sql b/e-rights-common/src/main/database/release/archive/2.11.1/37_RIGD-2158_MV_FAMILY_MEMBERS.sql new file mode 100644 index 0000000..3147b94 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.11.1/37_RIGD-2158_MV_FAMILY_MEMBERS.sql @@ -0,0 +1,204 @@ +DROP MATERIALIZED VIEW erights.mv_family_members; + +CREATE MATERIALIZED VIEW erights.mv_family_members ( + family_member_id, + per_id, + surname, + birth_name, + first_name, + date_of_birth, + gender, + start_date, + end_date, + trp_cd, + trp_code, + rel_per_id, + rel_surname, + rel_birth_name, + rel_first_name, + rel_date_of_birth, + rel_gender, + source +) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND +AS + SELECT /*+driving_site(r)*/ + to_char(rel_per_id) + || to_char(per_id, 'FM0999999999') AS family_member_id, + r.rel_per_id per_id, + r.rel_surname surname, + r.rel_birth_name birth_name, + r.rel_first_name first_name, + r.rel_date_of_birth date_of_birth, + r.rel_gender gender, + r.start_date, + r.end_date, + r.trp_cd, + r.trp_code, + r.per_id rel_per_id, + r.surname rel_surname, + r.birth_name rel_birth_name, + r.first_name rel_first_name, + r.date_of_birth rel_date_of_birth, + r.gender rel_gender, + 'COMREF' source + FROM + mv_person_relatives@easrefn.cc.cec.eu.int r + WHERE + r.trp_cd IN ( 8, 42, 7, 6, 65, + 41, 9 ) + AND rel_per_id IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas@easrefn.cc.cec.eu.int + UNION ALL + SELECT + per_id + FROM + mv_persons_hist_com@easrefn.cc.cec.eu.int + ) + AND rel_per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + UNION ALL + SELECT /*+driving_site(r)*/ + to_char(rel_per_id) + || to_char(per_id, 'FM0999999999') AS family_member_id, + r.per_id, + r.surname, + r.birth_name, + r.first_name, + r.date_of_birth, + r.gender, + r.start_date, + r.end_date, + r.trp_cd, + r.trp_code, + r.rel_per_id, + r.rel_surname, + r.rel_birth_name, + r.rel_first_name, + r.rel_date_of_birth, + r.rel_gender, + 'COMREF' source + FROM + mv_person_relatives@easrefn.cc.cec.eu.int r + WHERE + r.trp_cd IN ( 8, 42, 7, 6, 65, + 41, 9 ) + AND per_id IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas@easrefn.cc.cec.eu.int + UNION ALL + SELECT + per_id + FROM + mv_persons_hist_com@easrefn.cc.cec.eu.int + ) + AND rel_per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_person_relatives@easrefn.cc.cec.eu.int r2 + WHERE + r2.per_id = r.rel_per_id + AND r2.rel_per_id = r.per_id + ) + UNION ALL + SELECT /*+driving_site(cfc)*/ DISTINCT + to_char(la.per_id) + || to_char(r.per_id, 'FM0999999999') AS family_member_id, + la.per_id per_id, + la.surname surname, + la.birth_name birth_name, + la.first_name first_name, + la.date_of_birth date_of_birth, + la.genre gender, + cfc.relationship_begin_date start_date, + cfc.relationship_end_date end_date, + CASE family_rel_type_cd + WHEN 'SPO' THEN + 41 + WHEN 'CHL' THEN + 6 + END trp_cd, + CASE family_rel_type_cd + WHEN 'SPO' THEN + 'Spouse' + WHEN 'CHL' THEN + 'Child' + END trp_code, + r.per_id rel_per_id, + r.surname rel_surname, + r.birth_name rel_birth_name, + r.first_name rel_first_name, + r.date_of_birth rel_date_of_birth, + r.genre rel_gender, + 'CSISLA' source + FROM + mv_csisla_family_coverage@easrefn.cc.cec.eu.int cfc + INNER JOIN mv_persons_hist_eeas@easrefn.cc.cec.eu.int la ON ( cfc.la_per_id = la.per_id ) + INNER JOIN mv_persons_hist_eeas@easrefn.cc.cec.eu.int r ON ( cfc.per_id = r.per_id ) + WHERE + family_rel_type_cd <> 'LA' + AND sysdate BETWEEN csisla_start_eligibility AND csisla_end_eligibility + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_person_relatives@easrefn.cc.cec.eu.int pr + WHERE + pr.per_id = r.per_id + AND pr.rel_per_id = la.per_id + ); + +CREATE INDEX erights.idx_mv_family_members_per_id ON + erights.mv_family_members ( + per_id + ) + COMPUTE STATISTICS; + +GRANT SELECT ON erights.mv_family_members TO erights_ro; + +REM INSERTING into ERIGHTS.T_APP_EASREFN_OBJECTS +SET DEFINE OFF; + +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 26, + 'MV_PERSONS_HIST_COM', + 6 +); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/01_RIGD-2315_MV_PERSON_ADDRESS_HIST.sql b/e-rights-common/src/main/database/release/archive/2.13.0/01_RIGD-2315_MV_PERSON_ADDRESS_HIST.sql new file mode 100644 index 0000000..f603e92 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/01_RIGD-2315_MV_PERSON_ADDRESS_HIST.sql @@ -0,0 +1,94 @@ + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_PERSON_ADDRESS_HIST" ("PER_ID", "START_DATE", "END_DATE", "EFFECTIVE_DATE", "DECL_CHG_DATE", "TADR_CD", "ADDRESS_TYPE_CODE", "COUNTRY_CODE", "CITY_NAME", "POSTAL_CODE", "STREET_NAME", "STREET_NAME1", "STREET_NAME2", "STREET_NUMBER", "POSTAL_BOX", "COMMENTS", "ADDITIONAL_ADDRESS", "ADDITIONAL_ADDRESS2", "OREDER_ADDRESS", "LANGUAGE_CODE", "PER_ID_REL_PERS", "SURNAME", "FIRST_NAME", "DATE_OF_BIRTH", "TITLE", "LINK_ADR_TEL", "SP2_ADDRESS_ID", "IRIS_ADDRESS_ID", "SRC_ID", "INS_CD", "UNIQ_ID", "CREATED_DATE", "UPDATED_DATE") + BUILD IMMEDIATE + USING INDEX + REFRESH FORCE ON DEMAND + AS SELECT + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id, + created_date, + updated_date + FROM + ( + SELECT + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id, + created_date, + updated_date, + ROW_NUMBER() + OVER(PARTITION BY per_id, + tadr_cd + ORDER BY decode( + ins_cd, + 'EEAS', + 1, + 'COM', + 2, + 10 + ) DESC + ) row_num -- Take EEAS over COM + FROM + mv_person_address_hist@easrefn.cc.cec.eu.int + ) + WHERE + row_num = 1; + + CREATE INDEX "ERIGHTS"."IDX_MV_PERSON_ADDRESS_HIST_PER_ID" ON "ERIGHTS"."MV_PERSON_ADDRESS_HIST" ("PER_ID") + COMPUTE STATISTICS ; diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/02_RIGD-2315_v_recruitment_places.sql b/e-rights-common/src/main/database/release/archive/2.13.0/02_RIGD-2315_v_recruitment_places.sql new file mode 100644 index 0000000..935b8cf --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/02_RIGD-2315_v_recruitment_places.sql @@ -0,0 +1,33 @@ +CREATE OR REPLACE FORCE EDITIONABLE VIEW erights.v_recruitment_places ( + per_id, + lieu_recr, + recr_pay_cd, + name_en +) AS + SELECT + per_id, + lieu_recr, + recr_pay_cd, + name_en + FROM + ( + SELECT + pa.per_id, + pa.city_name lieu_recr, + pa.country_code recr_pay_cd, + c.name_en, + ROW_NUMBER() + OVER(PARTITION BY per_id, tadr_cd + ORDER BY + start_date + ) row_num + FROM + mv_person_address_hist pa + INNER JOIN mv_countries c ON ( pa.country_code = c.country_code ) + WHERE + tadr_cd = 21 + AND ( sysdate BETWEEN pa.start_date AND pa.end_date + OR sysdate < pa.start_date ) + ) + WHERE + row_num = 1; diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/03_RIGD-2315_v_places_of_origin.sql b/e-rights-common/src/main/database/release/archive/2.13.0/03_RIGD-2315_v_places_of_origin.sql new file mode 100644 index 0000000..9fd99e7 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/03_RIGD-2315_v_places_of_origin.sql @@ -0,0 +1,33 @@ +CREATE OR REPLACE FORCE EDITIONABLE VIEW erights.v_places_of_origin ( + per_id, + place_of_origin, + country_code, + country_of_origin +) AS + SELECT + per_id, + place_of_origin, + country_code, + country_of_origin + FROM + ( + SELECT + pa.per_id, + pa.city_name place_of_origin, + pa.country_code country_code, + c.name_en country_of_origin, + ROW_NUMBER() + OVER(PARTITION BY per_id, tadr_cd + ORDER BY + start_date + ) row_num + FROM + mv_person_address_hist pa + INNER JOIN mv_countries c ON ( pa.country_code = c.country_code ) + WHERE + tadr_cd = 22 + AND ( sysdate BETWEEN pa.start_date AND pa.end_date + OR sysdate < pa.start_date ) + ) + WHERE + row_num = 1; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/04_RIGD-2315_MV_PERSON_ADDRESS_HIST_register.sql b/e-rights-common/src/main/database/release/archive/2.13.0/04_RIGD-2315_MV_PERSON_ADDRESS_HIST_register.sql new file mode 100644 index 0000000..5b6d56c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/04_RIGD-2315_MV_PERSON_ADDRESS_HIST_register.sql @@ -0,0 +1,29 @@ +INSERT INTO erights.t_refresh_objects ( + id, + app_object_name, + priority, + is_refreshed, + status, + refresh_date, + system +) VALUES ( + 39, + 'MV_PERSON_ADDRESS_HIST', + 39, + 'N', + 'KO', + NULL, + 'EASREFN' +); + +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 39, + 'MV_PERSON_ADDRESS_HIST', + 39 +); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/05_RIGD-2314_persons_data_for_abac.sql b/e-rights-common/src/main/database/release/archive/2.13.0/05_RIGD-2314_persons_data_for_abac.sql new file mode 100644 index 0000000..c771471 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/05_RIGD-2314_persons_data_for_abac.sql @@ -0,0 +1,9 @@ +CREATE TABLE persons_data_for_abac ( + per_id NUMBER(8, 0) + CONSTRAINT pk_persons_data_for_abac PRIMARY KEY, + nup VARCHAR2(255 CHAR) NOT NULL, + birth_name VARCHAR2(255 CHAR), + first_name VARCHAR2(255 CHAR), + analytical_code VARCHAR2(255 CHAR) DEFAULT 'NO_CODE_FOUND' NOT NULL, + budgdel_analytical_code VARCHAR2(255 BYTE) DEFAULT 'NO_CODE_FOUND' NOT NULL +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/06_RIGD-2314_MV_PERSONS_DATA_FOR_ABAC.sql b/e-rights-common/src/main/database/release/archive/2.13.0/06_RIGD-2314_MV_PERSONS_DATA_FOR_ABAC.sql new file mode 100644 index 0000000..15f9a9a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/06_RIGD-2314_MV_PERSONS_DATA_FOR_ABAC.sql @@ -0,0 +1,45 @@ +drop MATERIALIZED VIEW MV_PERSONS_DATA_FOR_ABAC; + +create MATERIALIZED VIEW MV_PERSONS_DATA_FOR_ABAC +REFRESH FORCE ON DEMAND +AS +SELECT + per_id, nup, birth_name, first_name, analytical_code, budgdel_analytical_code + FROM + ( + SELECT + per_id, nup, birth_name, first_name, analytical_code, budgdel_analytical_code, + ROW_NUMBER() + OVER(PARTITION BY per_id + ORDER BY + preference ASC + ) rn + FROM + ( + SELECT + per_id, + nup as nup , + ' ' birth_name, + ' ' first_name, + 'NO_CODE_FOUND' analytical_code, + 'NO_CODE_FOUND' budgdel_analytical_code, + 2 preference + FROM + mv_nup + UNION --ALL + SELECT + per_id, + nup, + birth_name, + first_name, + analytical_code, + nvl(budgdel_analytical_code,'NO_CODE_FOUND') budgdel_analytical_code, + 1 preference + FROM + mv_analytical_codes@easrefn.cc.cec.eu.int + ) + ) + WHERE + rn = 1; + +create index ix_mv_persons_data_for_abac_per_id on mv_persons_data_for_abac (per_id); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/07_RIGD-2314_v_persons_data_for_abac.sql b/e-rights-common/src/main/database/release/archive/2.13.0/07_RIGD-2314_v_persons_data_for_abac.sql new file mode 100644 index 0000000..6025c9e --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/07_RIGD-2314_v_persons_data_for_abac.sql @@ -0,0 +1,29 @@ +CREATE OR REPLACE VIEW v_persons_data_for_abac AS + SELECT + per_id, + nup, + birth_name, + first_name, + analytical_code, + budgdel_analytical_code + FROM + persons_data_for_abac + UNION ALL + SELECT + per_id, + nup, + birth_name, + first_name, + analytical_code, + budgdel_analytical_code + FROM + mv_persons_data_for_abac mpb + WHERE + NOT EXISTS ( + SELECT + 1 + FROM + persons_data_for_abac pb + WHERE + pb.per_id = mpb.per_id + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/08_RIGD-2383_V_JOBS.sql b/e-rights-common/src/main/database/release/archive/2.13.0/08_RIGD-2383_V_JOBS.sql new file mode 100644 index 0000000..72574d9 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/08_RIGD-2383_V_JOBS.sql @@ -0,0 +1,248 @@ +CREATE OR REPLACE VIEW erights.v_jobs ( + job_id, + job_moment, + job_type, + personnel_type_id, + personnel_type_desc, + budgetary_line, + job_city_code, + job_city_name, + job_country_code, + job_country_name, + organization_country, + organization_city, + organization_name, + org_id, + assign_start_date_to, + assign_end_date_to, + per_id, + severity_level, + evacuation_level_code_id, + alert_status_id, + evacuation_level_code, + organization_country_code, + organization_city_code, + family_posting_type_id, + family_posting_type, + hod, + family_posting_type_cat, + budget_line, + delegation_org_id, + institution_code, + institution_name, + function_code, + function_desc +) AS + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + delstat.org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.job_id = hod.job_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_eeas jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist enth2 + WHERE + enth.org_id = enth2.org_id + ) + UNION ALL + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + delstat.org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.job_id = hod.job_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + NOT EXISTS ( + SELECT + 1 + FROM + mv_jobs_hist_eeas jobhe + WHERE + jobh.job_id = jobhe.job_id + ) + AND jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_com jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist enth2 + WHERE + enth.org_id = enth2.org_id + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/08_RIGD-2399_UPDATE_NOTIFICATION_SUBJECT.sql b/e-rights-common/src/main/database/release/archive/2.13.0/08_RIGD-2399_UPDATE_NOTIFICATION_SUBJECT.sql new file mode 100644 index 0000000..744959f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/08_RIGD-2399_UPDATE_NOTIFICATION_SUBJECT.sql @@ -0,0 +1,4 @@ +UPDATE NOTIFICATION_TEMPLATES SET MESSAGE_SUBJECT = 'Your request ${REQUEST_STRING_ID} was approved.' WHERE NOTIFICATION_TEMPLATE_ID = 23; +UPDATE NOTIFICATION_TEMPLATES SET MESSAGE_SUBJECT = 'Your request ${REQUEST_STRING_ID} was approved.' WHERE NOTIFICATION_TEMPLATE_ID = 20; +UPDATE NOTIFICATION_TEMPLATES SET MESSAGE_SUBJECT = 'Your request ${REQUEST_STRING_ID} was rejected.' WHERE NOTIFICATION_TEMPLATE_ID = 24; +UPDATE NOTIFICATION_TEMPLATES SET MESSAGE_SUBJECT = 'Your request ${REQUEST_STRING_ID} was rejected.' WHERE NOTIFICATION_TEMPLATE_ID = 21; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/09_RIGD-2209_Update_Installation_requests_ABAC_WF_status.sql b/e-rights-common/src/main/database/release/archive/2.13.0/09_RIGD-2209_Update_Installation_requests_ABAC_WF_status.sql new file mode 100644 index 0000000..6ffdd6d --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/09_RIGD-2209_Update_Installation_requests_ABAC_WF_status.sql @@ -0,0 +1,8 @@ +UPDATE requests r +SET + r.abac_workflow_state = NULL +WHERE + r.request_type = 'InstallationRequest' + AND r.abac_workflow_state = 'PROCESSING'; + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/10_RIGD-2378_REQUESTS_request_string_id_uniqueness.sql b/e-rights-common/src/main/database/release/archive/2.13.0/10_RIGD-2378_REQUESTS_request_string_id_uniqueness.sql new file mode 100644 index 0000000..7fa4dcd --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/10_RIGD-2378_REQUESTS_request_string_id_uniqueness.sql @@ -0,0 +1,37 @@ +-- Search for duplicates +SELECT + request_string_id +FROM + requests +GROUP BY + request_string_id +HAVING + COUNT(*) > 1; + +-- Update duplicates by adding a final underscore. +-- Run this statement as long as there are rows updated. +UPDATE requests r +SET + request_string_id = request_string_id || '_' +WHERE + request_string_id IN ( + SELECT + request_string_id + FROM + requests + GROUP BY + request_string_id + HAVING + COUNT(*) > 1 + ) + AND request_id = ( + SELECT + MAX(r2.request_id) + FROM + requests r2 + WHERE + r.request_string_id = r2.request_string_id + ); + +-- Add unique constraint +ALTER TABLE requests ADD CONSTRAINT uk_requests_request_string_id UNIQUE ( request_string_id ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/11_RIGD-2431_V_JOBS.sql b/e-rights-common/src/main/database/release/archive/2.13.0/11_RIGD-2431_V_JOBS.sql new file mode 100644 index 0000000..afb0736 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/11_RIGD-2431_V_JOBS.sql @@ -0,0 +1,328 @@ +CREATE OR REPLACE FORCE VIEW "ERIGHTS"."V_JOBS" ( + "JOB_ID", + "JOB_MOMENT", + "JOB_TYPE", + "PERSONNEL_TYPE_ID", + "PERSONNEL_TYPE_DESC", + "BUDGETARY_LINE", + "JOB_CITY_CODE", + "JOB_CITY_NAME", + "JOB_COUNTRY_CODE", + "JOB_COUNTRY_NAME", + "ORGANIZATION_COUNTRY", + "ORGANIZATION_CITY", + "ORGANIZATION_NAME", + "ORG_ID", + "ASSIGN_START_DATE_TO", + "ASSIGN_END_DATE_TO", + "PER_ID", + "SEVERITY_LEVEL", + "EVACUATION_LEVEL_CODE_ID", + "ALERT_STATUS_ID", + "EVACUATION_LEVEL_CODE", + "ORGANIZATION_COUNTRY_CODE", + "ORGANIZATION_CITY_CODE", + "FAMILY_POSTING_TYPE_ID", + "FAMILY_POSTING_TYPE", + "HOD", + "FAMILY_POSTING_TYPE_CAT", + "BUDGET_LINE", + "DELEGATION_ORG_ID", + "INSTITUTION_CODE", + "INSTITUTION_NAME", + "FUNCTION_CODE", + "FUNCTION_DESC" +) AS + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + enth.main_org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN ( + SELECT DISTINCT + entities.city_code, + entities.country_id, + FIRST_VALUE(delstatus.severity_level) + OVER( + ORDER BY + delstatus.org_id + ) severity_level, + FIRST_VALUE(delstatus.evacuation_level_code_id) + OVER( + ORDER BY + delstatus.org_id + ) evacuation_level_code_id, + FIRST_VALUE(delstatus.alert_status_id) + OVER( + ORDER BY + delstatus.org_id + ) alert_status_id, + FIRST_VALUE(delstatus.evacuation_level_code) + OVER( + ORDER BY + delstatus.org_id + ) evacuation_level_code, + FIRST_VALUE(delstatus.family_posting_type_id) + OVER( + ORDER BY + delstatus.org_id + ) family_posting_type_id, + FIRST_VALUE(delstatus.family_posting_type) + OVER( + ORDER BY + delstatus.org_id + ) family_posting_type + FROM + mv_delegation_status delstatus, + mv_entities entities + WHERE + delstatus.org_id = entities.org_id + ) delstat ON ( jobh.location_country_code = delstat.country_id + AND jobh.location_city_code = delstat.city_code ) + LEFT JOIN mv_head_of_delegations hod ON asgh.job_id = hod.job_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_eeas jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist enth2 + WHERE + enth.org_id = enth2.org_id + ) + UNION ALL + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + enth.main_org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN ( + SELECT DISTINCT + entities.city_code, + entities.country_id, + FIRST_VALUE(delstatus.severity_level) + OVER( + ORDER BY + delstatus.org_id + ) severity_level, + FIRST_VALUE(delstatus.evacuation_level_code_id) + OVER( + ORDER BY + delstatus.org_id + ) evacuation_level_code_id, + FIRST_VALUE(delstatus.alert_status_id) + OVER( + ORDER BY + delstatus.org_id + ) alert_status_id, + FIRST_VALUE(delstatus.evacuation_level_code) + OVER( + ORDER BY + delstatus.org_id + ) evacuation_level_code, + FIRST_VALUE(delstatus.family_posting_type_id) + OVER( + ORDER BY + delstatus.org_id + ) family_posting_type_id, + FIRST_VALUE(delstatus.family_posting_type) + OVER( + ORDER BY + delstatus.org_id + ) family_posting_type + FROM + mv_delegation_status delstatus, + mv_entities entities + WHERE + delstatus.org_id = entities.org_id + ) delstat ON ( jobh.location_country_code = delstat.country_id + AND jobh.location_city_code = delstat.city_code ) + LEFT JOIN mv_head_of_delegations hod ON asgh.job_id = hod.job_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + NOT EXISTS ( + SELECT + 1 + FROM + mv_jobs_hist_eeas jobhe + WHERE + jobh.job_id = jobhe.job_id + ) + AND jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_com jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist enth2 + WHERE + enth.org_id = enth2.org_id + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/12_RIGD-2455_V_JOBS.sql b/e-rights-common/src/main/database/release/archive/2.13.0/12_RIGD-2455_V_JOBS.sql new file mode 100644 index 0000000..ccdd3ec --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/12_RIGD-2455_V_JOBS.sql @@ -0,0 +1,328 @@ +CREATE OR REPLACE VIEW "ERIGHTS"."V_JOBS" ( + "JOB_ID", + "JOB_MOMENT", + "JOB_TYPE", + "PERSONNEL_TYPE_ID", + "PERSONNEL_TYPE_DESC", + "BUDGETARY_LINE", + "JOB_CITY_CODE", + "JOB_CITY_NAME", + "JOB_COUNTRY_CODE", + "JOB_COUNTRY_NAME", + "ORGANIZATION_COUNTRY", + "ORGANIZATION_CITY", + "ORGANIZATION_NAME", + "ORG_ID", + "ASSIGN_START_DATE_TO", + "ASSIGN_END_DATE_TO", + "PER_ID", + "SEVERITY_LEVEL", + "EVACUATION_LEVEL_CODE_ID", + "ALERT_STATUS_ID", + "EVACUATION_LEVEL_CODE", + "ORGANIZATION_COUNTRY_CODE", + "ORGANIZATION_CITY_CODE", + "FAMILY_POSTING_TYPE_ID", + "FAMILY_POSTING_TYPE", + "HOD", + "FAMILY_POSTING_TYPE_CAT", + "BUDGET_LINE", + "DELEGATION_ORG_ID", + "INSTITUTION_CODE", + "INSTITUTION_NAME", + "FUNCTION_CODE", + "FUNCTION_DESC" +) AS + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + enth.main_org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN ( + SELECT DISTINCT + entities.city_code, + entities.country_id, + FIRST_VALUE(delstatus.severity_level) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) severity_level, + FIRST_VALUE(delstatus.evacuation_level_code_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code_id, + FIRST_VALUE(delstatus.alert_status_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) alert_status_id, + FIRST_VALUE(delstatus.evacuation_level_code) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code, + FIRST_VALUE(delstatus.family_posting_type_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type_id, + FIRST_VALUE(delstatus.family_posting_type) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type + FROM + mv_delegation_status delstatus, + mv_entities entities + WHERE + delstatus.org_id = entities.org_id + ) delstat ON ( jobh.location_country_code = delstat.country_id + AND jobh.location_city_code = delstat.city_code ) + LEFT JOIN mv_head_of_delegations hod ON asgh.job_id = hod.job_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_eeas jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist enth2 + WHERE + enth.org_id = enth2.org_id + ) + UNION ALL + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + enth.main_org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN ( + SELECT DISTINCT + entities.city_code, + entities.country_id, + FIRST_VALUE(delstatus.severity_level) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) severity_level, + FIRST_VALUE(delstatus.evacuation_level_code_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code_id, + FIRST_VALUE(delstatus.alert_status_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) alert_status_id, + FIRST_VALUE(delstatus.evacuation_level_code) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code, + FIRST_VALUE(delstatus.family_posting_type_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type_id, + FIRST_VALUE(delstatus.family_posting_type) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type + FROM + mv_delegation_status delstatus, + mv_entities entities + WHERE + delstatus.org_id = entities.org_id + ) delstat ON ( jobh.location_country_code = delstat.country_id + AND jobh.location_city_code = delstat.city_code ) + LEFT JOIN mv_head_of_delegations hod ON asgh.job_id = hod.job_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + NOT EXISTS ( + SELECT + 1 + FROM + mv_jobs_hist_eeas jobhe + WHERE + jobh.job_id = jobhe.job_id + ) + AND jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_com jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist enth2 + WHERE + enth.org_id = enth2.org_id + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/13_RIGD-2469_MV_BUDGDEL_ANALYTICAL_CODES.sql b/e-rights-common/src/main/database/release/archive/2.13.0/13_RIGD-2469_MV_BUDGDEL_ANALYTICAL_CODES.sql new file mode 100644 index 0000000..28c7b9f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/13_RIGD-2469_MV_BUDGDEL_ANALYTICAL_CODES.sql @@ -0,0 +1,57 @@ +CREATE MATERIALIZED VIEW mv_budgdel_analytical_codes AS + SELECT + id, + code, + abbrev, + description, + loc_obj_foreign_id, + posting_criteria_type_id, + is_valid, + created_by, + created_at, + updated_by, + updated_at + FROM + mv_budgdel_analytical_codes@easrefn; + +CREATE INDEX ix_mv_budgdel_analytical_codes_code ON + mv_budgdel_analytical_codes ( + code + ) + COMPUTE STATISTICS; + +REM INSERTING into ERIGHTS.T_REFRESH_OBJECTS +SET DEFINE OFF; + +INSERT INTO erights.t_refresh_objects ( + id, + app_object_name, + priority, + is_refreshed, + status, + refresh_date, + system +) VALUES ( + 40, + 'MV_BUDGDEL_ANALYTICAL_CODES', + 40, + 'N', + 'KO', + NULL, + 'EASREFN' +); + +REM INSERTING into ERIGHTS.T_APP_EASREFN_OBJECTS +SET DEFINE OFF; + +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 40, + 'MV_BUDGDEL_ANALYTICAL_CODES', + 40 +); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/14_RIGD-2469_analytical_codes.sql b/e-rights-common/src/main/database/release/archive/2.13.0/14_RIGD-2469_analytical_codes.sql new file mode 100644 index 0000000..28e3dc1 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/14_RIGD-2469_analytical_codes.sql @@ -0,0 +1,17 @@ +CREATE TABLE erights.analytical_codes ( + analytical_code VARCHAR2(160 BYTE), + per_id NUMBER, + created_by NUMBER + NOT NULL ENABLE, + created_at TIMESTAMP(6) + NOT NULL ENABLE, + updated_by NUMBER + NOT NULL ENABLE, + updated_at TIMESTAMP(6) + NOT NULL ENABLE +); + +ALTER TABLE analytical_codes ADD CONSTRAINT pk_analytical_codes PRIMARY KEY ( per_id ); + +ALTER TABLE analytical_codes MODIFY + analytical_code NOT NULL; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/15_RIGD-2469_v_persons_data_for_abac.sql b/e-rights-common/src/main/database/release/archive/2.13.0/15_RIGD-2469_v_persons_data_for_abac.sql new file mode 100644 index 0000000..c5ea8c4 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/15_RIGD-2469_v_persons_data_for_abac.sql @@ -0,0 +1,73 @@ +CREATE OR REPLACE VIEW v_persons_data_for_abac ( + per_id, + nup, + birth_name, + first_name, + analytical_code, + budgdel_analytical_code +) AS + SELECT + per_id, + nup, + birth_name, + first_name, + analytical_code, + budgdel_analytical_code + FROM + ( + SELECT + per_id, + nup, + birth_name, + first_name, + analytical_code, + budgdel_analytical_code, + ROW_NUMBER() + OVER(PARTITION BY per_id + ORDER BY + preference ASC + ) rn + FROM + ( + SELECT + per_id, + nup, + birth_name, + first_name, + analytical_code, + budgdel_analytical_code, + 2 preference + FROM + mv_persons_data_for_abac + UNION ALL + SELECT + ac.per_id, + n.nup, + p.last_name, + p.first_name, + ac.analytical_code, + nvl(( + SELECT + ac.analytical_code + FROM + dual + WHERE + EXISTS( + SELECT + 1 + FROM + mv_budgdel_analytical_codes bac + WHERE + bac.code = ac.analytical_code + AND bac.loc_obj_foreign_id LIKE 'EAS.1AE-M.%' + ) + ), 'NO_CODE_FOUND') budgdel_analytical_code, + 1 preference + FROM + analytical_codes ac + INNER JOIN v_people p ON ( ac.per_id = p.per_id ) + LEFT JOIN mv_nup n ON ( ac.per_id = n.per_id ) + ) + ) + WHERE + rn = 1; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/RIGD-1762_c8_delpos21.sql b/e-rights-common/src/main/database/release/archive/2.13.0/RIGD-1762_c8_delpos21.sql new file mode 100644 index 0000000..25fe819 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/RIGD-1762_c8_delpos21.sql @@ -0,0 +1,2 @@ +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('63', 'ABAC', 'POSTING_CRITERIA_SUBPOST_TYPE_CODE_C8', 'DELPOS21'); +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/RIGD-2236_Update_Followup_flag_in_existing_MFs.sql b/e-rights-common/src/main/database/release/archive/2.13.0/RIGD-2236_Update_Followup_flag_in_existing_MFs.sql new file mode 100644 index 0000000..63b687a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/RIGD-2236_Update_Followup_flag_in_existing_MFs.sql @@ -0,0 +1,2 @@ +update MOVEMENT_FILES set FOLLOWUP_FLAGS = REPLACE( FOLLOWUP_FLAGS, 'Exception', 'DoublePosting' ); +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/RIGD-2304-Top-Up-Request-Notification.sql b/e-rights-common/src/main/database/release/archive/2.13.0/RIGD-2304-Top-Up-Request-Notification.sql new file mode 100644 index 0000000..5cbc3bf --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/RIGD-2304-Top-Up-Request-Notification.sql @@ -0,0 +1,41 @@ + +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID = 31; + +INSERT INTO "ERIGHTS"."NOTIFICATION_TEMPLATES" (NOTIFICATION_TEMPLATE_ID, NOTIFICATION_TEMPLATE_TYPE, MESSAGE_SUBJECT, MESSAGE_BODY, MESSAGE_SIGNATURE, NOTIFICATION_TEMPLATE_CODE, DEFAULT_TEMPLATE) +VALUES ('31', 'TOP_UP_REQUEST', 'An adjustment ${REQUEST_STRING_ID} has been created', + 'Dear ${FIRST_NAME} ${LAST_NAME}, +

    The adjustment ${REQUEST_STRING_ID} has been created in your movement file in e-Rights +

    Please log in to E-Right to consult it and act upon if necessary.', + '${TOP_UP_SIGNATURE}', 'CREATE', 'Y'); + +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID = 32; + +INSERT INTO "ERIGHTS"."NOTIFICATION_TEMPLATES" (NOTIFICATION_TEMPLATE_ID, NOTIFICATION_TEMPLATE_TYPE, MESSAGE_SUBJECT, MESSAGE_BODY, MESSAGE_SIGNATURE, NOTIFICATION_TEMPLATE_CODE, DEFAULT_TEMPLATE) +VALUES ('32', 'TOP_UP_REQUEST', 'Your request ${REQUEST_STRING_ID} was rejected', + 'Dear ${FIRST_NAME} ${LAST_NAME}, +

    Your request ${REQUEST_STRING_ID} was rejected in e-Rights. +

    Please consult the request in your movement file in e-Rigths.', + '${TOP_UP_SIGNATURE}', 'REJECTED_REQUEST', 'Y'); + +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID = 33; + +INSERT INTO "ERIGHTS"."NOTIFICATION_TEMPLATES" (NOTIFICATION_TEMPLATE_ID, NOTIFICATION_TEMPLATE_TYPE, MESSAGE_SUBJECT, MESSAGE_BODY, MESSAGE_SIGNATURE, NOTIFICATION_TEMPLATE_CODE, DEFAULT_TEMPLATE) +VALUES ('33', 'TOP_UP_REQUEST', '${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID}: Processed', + 'Dear ${FIRST_NAME} ${LAST_NAME}, +

    The payment related to your ${ENTITLEMENT_TYPE} request was verified and processed. +

    The payment will be credited to your bank account indicated in the request. ' || + 'Please note that it may take several days before the payment is credited on your bank account. ' || + 'All related supporting documents are stored in e-RIGHTS, ' || + 'while the originals must be kept by the Official for a maximum duration of 2 years.' || + '

    Log in to E-Right to consult your request.' || + '

    Kind regards,', + '${TOP_UP_SIGNATURE}', 'PAID_REQUEST', 'Y'); + +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID = 34; + +INSERT INTO "ERIGHTS"."NOTIFICATION_TEMPLATES" (NOTIFICATION_TEMPLATE_ID, NOTIFICATION_TEMPLATE_TYPE, MESSAGE_SUBJECT, MESSAGE_BODY, MESSAGE_SIGNATURE, NOTIFICATION_TEMPLATE_CODE, DEFAULT_TEMPLATE) +VALUES ('34', 'TOP_UP_REQUEST', 'Your request ${REQUEST_STRING_ID} was approved', + 'Dear ${FIRST_NAME} ${LAST_NAME}, +

    Your request ${REQUEST_STRING_ID} was approved. It will soon be processed for payment. You will be notified accordingly. +

    Please consult the details of your request in your movement file in e-Rights.', + '${TOP_UP_SIGNATURE}', 'APPROVED_REQUEST', 'Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.13.0/RIGD-2468 add anaylitical codes.sql b/e-rights-common/src/main/database/release/archive/2.13.0/RIGD-2468 add anaylitical codes.sql new file mode 100644 index 0000000..77da7fe --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.13.0/RIGD-2468 add anaylitical codes.sql @@ -0,0 +1,9 @@ +CREATE TABLE "ERIGHTS"."ANALYTICAL_CODES" + ( + "ANALYTICAL_CODE" VARCHAR2(160 BYTE) , + "PER_ID" NUMBER, + "CREATED_BY" NUMBER NOT NULL ENABLE, + "CREATED_AT" TIMESTAMP (6) NOT NULL ENABLE, + "UPDATED_BY" NUMBER NOT NULL ENABLE, + "UPDATED_AT" TIMESTAMP (6) NOT NULL ENABLE + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.14.0/04_RIGD-2841_V_JOBS.sql b/e-rights-common/src/main/database/release/archive/2.14.0/04_RIGD-2841_V_JOBS.sql new file mode 100644 index 0000000..f19b4b3 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.14.0/04_RIGD-2841_V_JOBS.sql @@ -0,0 +1,298 @@ + + CREATE OR REPLACE VIEW "ERIGHTS"."V_JOBS" ("JOB_ID", "JOB_MOMENT", "JOB_TYPE", "PERSONNEL_TYPE_ID", "PERSONNEL_TYPE_DESC", "BUDGETARY_LINE", "JOB_CITY_CODE", "JOB_CITY_NAME", "JOB_COUNTRY_CODE", "JOB_COUNTRY_NAME", "ORGANIZATION_COUNTRY", "ORGANIZATION_CITY", "ORGANIZATION_NAME", "ORG_ID", "ASSIGN_START_DATE_TO", "ASSIGN_END_DATE_TO", "PER_ID", "SEVERITY_LEVEL", "EVACUATION_LEVEL_CODE_ID", "ALERT_STATUS_ID", "EVACUATION_LEVEL_CODE", "ORGANIZATION_COUNTRY_CODE", "ORGANIZATION_CITY_CODE", "FAMILY_POSTING_TYPE_ID", "FAMILY_POSTING_TYPE", "HOD", "FAMILY_POSTING_TYPE_CAT", "BUDGET_LINE", "DELEGATION_ORG_ID", "INSTITUTION_CODE", "INSTITUTION_NAME", "FUNCTION_CODE", "FUNCTION_DESC") AS + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + enth.main_org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN ( + SELECT DISTINCT + entities.city_code, + entities.country_id, + FIRST_VALUE(delstatus.severity_level) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) severity_level, + FIRST_VALUE(delstatus.evacuation_level_code_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code_id, + FIRST_VALUE(delstatus.alert_status_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) alert_status_id, + FIRST_VALUE(delstatus.evacuation_level_code) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code, + FIRST_VALUE(delstatus.family_posting_type_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type_id, + FIRST_VALUE(delstatus.family_posting_type) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type + FROM + mv_delegation_status delstatus, + mv_entities entities + WHERE + delstatus.org_id = entities.org_id + ) delstat ON ( jobh.location_country_code = delstat.country_id + AND jobh.location_city_code = delstat.city_code ) + LEFT JOIN mv_head_of_delegations hod ON asgh.job_id = hod.job_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_eeas jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist enth2 + WHERE + enth.org_id = enth2.org_id + ) + UNION ALL + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + enth.main_org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN ( + SELECT DISTINCT + entities.city_code, + entities.country_id, + FIRST_VALUE(delstatus.severity_level) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) severity_level, + FIRST_VALUE(delstatus.evacuation_level_code_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code_id, + FIRST_VALUE(delstatus.alert_status_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) alert_status_id, + FIRST_VALUE(delstatus.evacuation_level_code) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code, + FIRST_VALUE(delstatus.family_posting_type_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type_id, + FIRST_VALUE(delstatus.family_posting_type) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type + FROM + mv_delegation_status delstatus, + mv_entities entities + WHERE + delstatus.org_id = entities.org_id + ) delstat ON ( jobh.location_country_code = delstat.country_id + AND jobh.location_city_code = delstat.city_code ) + LEFT JOIN mv_head_of_delegations hod ON asgh.job_id = hod.job_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + NOT EXISTS ( + SELECT + 1 + FROM + mv_jobs_hist_eeas jobhe + WHERE + jobh.job_id = jobhe.job_id + ) + AND jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_com jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist_com enth2 + WHERE + enth.org_id = enth2.org_id + ); + + + GRANT SELECT ON "ERIGHTS"."V_JOBS" TO "ERIGHTS_RO"; diff --git a/e-rights-common/src/main/database/release/archive/2.14.0/05_RIGD-2828_V_REQUESTS_MILESTONES.sql b/e-rights-common/src/main/database/release/archive/2.14.0/05_RIGD-2828_V_REQUESTS_MILESTONES.sql new file mode 100644 index 0000000..3b410ef --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.14.0/05_RIGD-2828_V_REQUESTS_MILESTONES.sql @@ -0,0 +1,63 @@ +CREATE OR REPLACE VIEW "ERIGHTS"."V_REQUESTS_MILESTONES" ( + "REQUEST_ID", + "REQUEST_STRING_ID", + "STATE", + "PREVIOUS_STATE_OCCURENCE", + "CURRENT_STATE_OCCURENCE", + "TIME_SPENT" +) AS + SELECT + request_id, + request_string_id, + state, + previous_state_occurence, + current_state_occurence, + round(nvl(next_state_occurence, sysdate) - current_state_occurence, 2) time_spent + FROM + ( + SELECT + request_id, + request_string_id, + state state, + saved_at current_state_occurence, + LAG(saved_at, 1) + OVER(PARTITION BY request_id + ORDER BY + saved_at + ) previous_state_occurence, + LEAD(saved_at, 1) + OVER(PARTITION BY request_id + ORDER BY + saved_at + ) next_state_occurence + FROM + ( + SELECT + * + FROM + ( + SELECT + r.request_id, + r.request_string_id, + cs.arrival_state state, + cs.saved_at + FROM + requests r + INNER JOIN ank_sm_current_states cs ON ( r.sm_id = cs.id ) + UNION ALL + SELECT + r.request_id, + r.request_string_id, + ps.arrival_state state, + ps.saved_at + FROM + requests r + INNER JOIN ank_sm_previous_states ps ON ( r.sm_id = ps.current_state_id ) + ) + ORDER BY + request_id, + saved_at + ) + ); + +GRANT SELECT ON "ERIGHTS"."V_REQUESTS_MILESTONES" TO "ERIGHTS_RO"; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.14.0/24_RIGD-2698_mv_family_members.sql b/e-rights-common/src/main/database/release/archive/2.14.0/24_RIGD-2698_mv_family_members.sql new file mode 100644 index 0000000..efbde17 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.14.0/24_RIGD-2698_mv_family_members.sql @@ -0,0 +1,192 @@ +DROP MATERIALIZED VIEW "ERIGHTS"."MV_FAMILY_MEMBERS"; + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_FAMILY_MEMBERS" ( + "FAMILY_MEMBER_ID", + "PER_ID", + "SURNAME", + "BIRTH_NAME", + "FIRST_NAME", + "DATE_OF_BIRTH", + "GENDER", + "START_DATE", + "END_DATE", + "TRP_CD", + "TRP_CODE", + "REL_PER_ID", + "REL_SURNAME", + "REL_BIRTH_NAME", + "REL_FIRST_NAME", + "REL_DATE_OF_BIRTH", + "REL_GENDER", + "SOURCE" +) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND +AS + SELECT /*+driving_site(r)*/ + to_char(rel_per_id) + || to_char(per_id, 'FM0999999999') AS family_member_id, + r.rel_per_id per_id, + r.rel_surname surname, + r.rel_birth_name birth_name, + r.rel_first_name first_name, + r.rel_date_of_birth date_of_birth, + r.rel_gender gender, + r.start_date, + r.end_date, + r.trp_cd, + r.trp_code, + r.per_id rel_per_id, + r.surname rel_surname, + r.birth_name rel_birth_name, + r.first_name rel_first_name, + r.date_of_birth rel_date_of_birth, + r.gender rel_gender, + 'COMREF' source + FROM + mv_person_relatives@easrefn.cc.cec.eu.int r + WHERE + r.trp_cd IN ( 8, 42, 7, 6, 65, + 41, 9, 43, 61 ) + AND rel_per_id IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas@easrefn.cc.cec.eu.int + UNION ALL + SELECT + per_id + FROM + mv_persons_hist_com@easrefn.cc.cec.eu.int + ) + AND rel_per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + UNION ALL + SELECT /*+driving_site(r)*/ + to_char(rel_per_id) + || to_char(per_id, 'FM0999999999') AS family_member_id, + r.per_id, + r.surname, + r.birth_name, + r.first_name, + r.date_of_birth, + r.gender, + r.start_date, + r.end_date, + r.trp_cd, + r.trp_code, + r.rel_per_id, + r.rel_surname, + r.rel_birth_name, + r.rel_first_name, + r.rel_date_of_birth, + r.rel_gender, + 'COMREF' source + FROM + mv_person_relatives@easrefn.cc.cec.eu.int r + WHERE + r.trp_cd IN ( 8, 42, 7, 6, 65, + 41, 9, 43, 61 ) + AND per_id IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas@easrefn.cc.cec.eu.int + UNION ALL + SELECT + per_id + FROM + mv_persons_hist_com@easrefn.cc.cec.eu.int + ) + AND rel_per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_person_relatives@easrefn.cc.cec.eu.int r2 + WHERE + r2.per_id = r.rel_per_id + AND r2.rel_per_id = r.per_id + ) + UNION ALL + SELECT /*+driving_site(cfc)*/ DISTINCT + to_char(la.per_id) + || to_char(r.per_id, 'FM0999999999') AS family_member_id, + la.per_id per_id, + la.surname surname, + la.birth_name birth_name, + la.first_name first_name, + la.date_of_birth date_of_birth, + la.genre gender, + cfc.relationship_begin_date start_date, + cfc.relationship_end_date end_date, + CASE family_rel_type_cd + WHEN 'SPO' THEN + 41 + WHEN 'CHL' THEN + 6 + END trp_cd, + CASE family_rel_type_cd + WHEN 'SPO' THEN + 'Spouse' + WHEN 'CHL' THEN + 'Child' + END trp_code, + r.per_id rel_per_id, + r.surname rel_surname, + r.birth_name rel_birth_name, + r.first_name rel_first_name, + r.date_of_birth rel_date_of_birth, + r.genre rel_gender, + 'CSISLA' source + FROM + mv_csisla_family_coverage@easrefn.cc.cec.eu.int cfc + INNER JOIN mv_persons_hist_eeas@easrefn.cc.cec.eu.int la ON ( cfc.la_per_id = la.per_id ) + INNER JOIN mv_persons_hist_eeas@easrefn.cc.cec.eu.int r ON ( cfc.per_id = r.per_id ) + WHERE + family_rel_type_cd <> 'LA' + AND sysdate BETWEEN csisla_start_eligibility AND csisla_end_eligibility + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_person_relatives@easrefn.cc.cec.eu.int pr + WHERE + pr.per_id = r.per_id + AND pr.rel_per_id = la.per_id + ); + +CREATE INDEX "ERIGHTS"."IDX_MV_FAMILY_MEMBERS_PER_ID" ON + "ERIGHTS"."MV_FAMILY_MEMBERS" ( + "PER_ID" + ) + COMPUTE STATISTICS; + +COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_FAMILY_MEMBERS" IS + 'snapshot table for snapshot ERIGHTS.MV_FAMILY_MEMBERS'; + +GRANT SELECT ON "ERIGHTS"."MV_FAMILY_MEMBERS" TO "ERIGHTS_RO"; diff --git a/e-rights-common/src/main/database/release/archive/2.14.0/RIGD-2474 add colum mf context.sql b/e-rights-common/src/main/database/release/archive/2.14.0/RIGD-2474 add colum mf context.sql new file mode 100644 index 0000000..a34c2eb --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.14.0/RIGD-2474 add colum mf context.sql @@ -0,0 +1,5 @@ +ALTER TABLE BUDGET_LINES_SUBPOSTS_MAPPING + ADD (MOVEMENT_CONTEXT VARCHAR2(50) ); + + +UPDATE "ERIGHTS"."BUDGET_LINES_SUBPOSTS_MAPPING" SET MOVEMENT_CONTEXT = 'CRISIS' WHERE BUDGET_LINES_SUBPOSTS_MAPPING_ID in (97,98,99,100,101); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.14.0/RIGD-2476 create context type and entitlmnt.sql b/e-rights-common/src/main/database/release/archive/2.14.0/RIGD-2476 create context type and entitlmnt.sql new file mode 100644 index 0000000..89c2743 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.14.0/RIGD-2476 create context type and entitlmnt.sql @@ -0,0 +1,11 @@ +INSERT INTO "ERIGHTS"."MOVEMENT_CONTEXT" (MOVEMENT_CONTEXT_ID, NAME, CREATED_AT, CREATED_BY, UPDATED_BY, UPDATED_AT) VALUES ('4', 'CRISIS', TO_DATE('2022-09-06 09:56:46', 'YYYY-MM-DD HH24:MI:SS'), '90284714', '90284714', TO_DATE('2022-09-06 09:56:54', 'YYYY-MM-DD HH24:MI:SS')); + + +INSERT INTO "ERIGHTS"."MOVEMENT_TYPES" (MOVEMENT_TYPE_ID, CODE_FROM, CODE_TO, MOVEMENT_TYPE, CONTEXT_ID, BUDGETLINE_JOB) VALUES ('17', 'Other', 'Other', 'CRISIS', '4', 'FUTURE'); + + +INSERT INTO "ERIGHTS"."ENTITLMNT_TYPES_DEFAULT" (ENTITLMNT_TYPE_CAT_ID, MOVEMENT_TYPE_ID, ENTITLMNT_TYPE_DEFAULT_ID) VALUES ('1', '17', '42'); + + + + diff --git a/e-rights-common/src/main/database/release/archive/2.14.0/RIGD-2486-Crisis-Movement-File-Notification.sql b/e-rights-common/src/main/database/release/archive/2.14.0/RIGD-2486-Crisis-Movement-File-Notification.sql new file mode 100644 index 0000000..2eb3479 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.14.0/RIGD-2486-Crisis-Movement-File-Notification.sql @@ -0,0 +1,53 @@ + +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID = 35; + +INSERT INTO "ERIGHTS"."NOTIFICATION_TEMPLATES" (NOTIFICATION_TEMPLATE_ID, NOTIFICATION_TEMPLATE_TYPE, MESSAGE_SUBJECT, MESSAGE_BODY, MESSAGE_SIGNATURE, NOTIFICATION_TEMPLATE_CODE, DEFAULT_TEMPLATE) +VALUES ('35', 'CRISIS', 'Your evacuation to ${MOVEMENT_TO} file has been created in the e-Rights portal', + 'Dear ${FIRST_NAME} ${LAST_NAME}, +
    +
    + Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming evacuation has been created in e-Rights. The foreseen start date of your movement is on ${START_DATE} +
    +
    + Please, log in to e-Rights using your EU Login to confirm or withdraw your movement. +
    +
    + Should you believe that any correction of your data would be required, please contact us by email. +
    +
    + ${MOVEMENT_FILE_ID} +
    +
    + Kind regards,','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu', 'CREATE', 'Y'); + +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID = 36; + +INSERT INTO "ERIGHTS"."NOTIFICATION_TEMPLATES" (NOTIFICATION_TEMPLATE_ID, NOTIFICATION_TEMPLATE_TYPE, MESSAGE_SUBJECT, MESSAGE_BODY, MESSAGE_SIGNATURE, NOTIFICATION_TEMPLATE_CODE, DEFAULT_TEMPLATE) +VALUES ('36', 'CRISIS', 'Reminder: Your evacuation to ${MOVEMENT_TO} has been created in e-Rights portal.', + 'Dear ${FIRST_NAME} ${LAST_NAME}, +
    +
    + Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming evacuation is waiting for your confirmation in e-Rights. In the absence of your confirmation, your assignment will be considered withdrawn. +
    +
    + Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment. +
    +
    + Kind regards,', + 'EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu', 'REMINDER_AFTER_CREATE', 'Y'); + +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID = 37; + +INSERT INTO "ERIGHTS"."NOTIFICATION_TEMPLATES" (NOTIFICATION_TEMPLATE_ID, NOTIFICATION_TEMPLATE_TYPE, MESSAGE_SUBJECT, MESSAGE_BODY, MESSAGE_SIGNATURE, NOTIFICATION_TEMPLATE_CODE, DEFAULT_TEMPLATE) +VALUES ('37', 'CRISIS', 'Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.', + 'Dear ${FIRST_NAME} ${LAST_NAME}, +
    +
    + Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} has been withdrawn. +
    +
    + Log in to e-Rights to consult your movement file. +
    +
    + If you disagree, please contact: DEL-POSTINGS@eeas.europa.eu', + 'EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu', 'WITHDRAW', 'Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.15.0/01_Backup_ANK_ABAC_COMM_tables.sql b/e-rights-common/src/main/database/release/archive/2.15.0/01_Backup_ANK_ABAC_COMM_tables.sql new file mode 100644 index 0000000..f1eaace --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.15.0/01_Backup_ANK_ABAC_COMM_tables.sql @@ -0,0 +1,23 @@ +create table bkp$ank_abac_comm_async_20230330 as +select * +from ank_abac_comm +where type = 'ASYNC'; + +create table bkp$ank_abac_comm_errors_async_20230330 as +select * +from ank_abac_comm_errors +where id in (select id from ank_abac_comm +where type = 'ASYNC'); + +create table bkp$ank_abac_comm_requests_async_20230330 as +select * +from ank_abac_comm_requests +where id in (select id from ank_abac_comm +where type = 'ASYNC'); + +create table bkp$ank_abac_comm_responses_async_20230330 as +select * +from ank_abac_comm_responses +where id in (select id from ank_abac_comm +where type = 'ASYNC'); + diff --git a/e-rights-common/src/main/database/release/archive/2.15.0/15_RIGD-2558_Update_signature_in_NOTIFICATION_TEMPLATES.sql b/e-rights-common/src/main/database/release/archive/2.15.0/15_RIGD-2558_Update_signature_in_NOTIFICATION_TEMPLATES.sql new file mode 100644 index 0000000..64eabb7 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.15.0/15_RIGD-2558_Update_signature_in_NOTIFICATION_TEMPLATES.sql @@ -0,0 +1,8 @@ +create table bkp$notification_templates_rigd2558 +as select * from notification_templates ; + +update notification_templates +set message_signature = replace(replace(message_signature, 'RM.HR.3', 'RM.01'), 'RM.BS.4', 'RM.BHR.6'); + +commit; + diff --git a/e-rights-common/src/main/database/release/archive/2.15.0/25.1_RIGD-2696_pkg_abac_comm.pks.sql b/e-rights-common/src/main/database/release/archive/2.15.0/25.1_RIGD-2696_pkg_abac_comm.pks.sql new file mode 100644 index 0000000..f2a2d73 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.15.0/25.1_RIGD-2696_pkg_abac_comm.pks.sql @@ -0,0 +1,4 @@ +CREATE OR REPLACE PACKAGE pkg_abac_comm AS + PROCEDURE p_clean_ank_abac_comm; + +END pkg_abac_comm; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.15.0/26_RIGD-2696_pkg_abac_comm.pkb.sql b/e-rights-common/src/main/database/release/archive/2.15.0/26_RIGD-2696_pkg_abac_comm.pkb.sql new file mode 100644 index 0000000..139f751 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.15.0/26_RIGD-2696_pkg_abac_comm.pkb.sql @@ -0,0 +1,70 @@ +CREATE OR REPLACE PACKAGE BODY pkg_abac_comm AS + + gki_retention_duration_async CONSTANT INTERVAL YEAR ( 1 ) TO MONTH := INTERVAL '1' YEAR; + gki_retention_duration_sync CONSTANT INTERVAL YEAR ( 1 ) TO MONTH := INTERVAL '1' MONTH; + + PROCEDURE p_clean_ank_abac_comm IS + + PROCEDURE p_do_cleaning ( + pd_earliest_date IN DATE, + ps_communication_type IN VARCHAR2 + ) IS + TYPE t_table_of_comm_ids IS + TABLE OF ank_abac_comm.id%TYPE; + lt_table_of_ids t_table_of_comm_ids; + BEGIN + LOOP + SELECT + id + BULK COLLECT + INTO lt_table_of_ids + FROM + ank_abac_comm + WHERE + request_sent_at < pd_earliest_date + AND type = ps_communication_type + AND ROWNUM < 1000; + + EXIT WHEN SQL%rowcount = 0; + FORALL ln_idx IN lt_table_of_ids.first..lt_table_of_ids.last + DELETE FROM ank_abac_comm_errors + WHERE + id = lt_table_of_ids(ln_idx); + + FORALL ln_idx IN lt_table_of_ids.first..lt_table_of_ids.last + DELETE FROM ank_abac_comm_requests + WHERE + id = lt_table_of_ids(ln_idx); + + FORALL ln_idx IN lt_table_of_ids.first..lt_table_of_ids.last + DELETE FROM ank_abac_comm_responses + WHERE + id = lt_table_of_ids(ln_idx); + + FORALL ln_idx IN lt_table_of_ids.first..lt_table_of_ids.last + DELETE FROM ank_abac_comm + WHERE + id = lt_table_of_ids(ln_idx); + + COMMIT; + END LOOP; + + COMMIT; + END p_do_cleaning; + + BEGIN + pkg_log.debug('Cleaning started', 'PKG_ABAC_COMM.P_CLEAN_ANK_ABAC_COMM'); + pkg_log.debug('ASYNC Communications', 'PKG_ABAC_COMM.P_CLEAN_ANK_ABAC_COMM'); + p_do_cleaning(sysdate - gki_retention_duration_async, 'ASYNC'); + pkg_log.debug('SYNC Communications', 'PKG_ABAC_COMM.P_CLEAN_ANK_ABAC_COMM'); + p_do_cleaning(sysdate - gki_retention_duration_sync, 'SYNC'); + pkg_log.debug('Cleaning ended', 'PKG_ABAC_COMM.P_CLEAN_ANK_ABAC_COMM'); + EXCEPTION + WHEN OTHERS THEN + pkg_log.debug('Exception:' + || sqlcode + || '-' + || sqlerrm, 'PKG_ABAC_COMM.P_CLEAN_ANK_ABAC_COMM'); + END p_clean_ank_abac_comm; + +END pkg_abac_comm; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.15.0/27_RIGD-2696_J_CLEANUP_ABAC_COMM.sql b/e-rights-common/src/main/database/release/archive/2.15.0/27_RIGD-2696_J_CLEANUP_ABAC_COMM.sql new file mode 100644 index 0000000..759fb33 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.15.0/27_RIGD-2696_J_CLEANUP_ABAC_COMM.sql @@ -0,0 +1,30 @@ +BEGIN + DBMS_SCHEDULER.CREATE_JOB ( + job_name => '"ERIGHTS"."J_CLEANUP_ABAC_COMM"', + job_type => 'PLSQL_BLOCK', + job_action => 'begin pkg_abac_comm.p_clean_ank_abac_comm; end;', + number_of_arguments => 0, + start_date => systimestamp, + repeat_interval => 'FREQ=DAILY; BYHOUR=1; BYMINUTE=0; BYSECOND=0;', + end_date => NULL, + enabled => FALSE, + auto_drop => TRUE, + comments => 'Job that deletes ABAC communication older than one year'); + + + + + DBMS_SCHEDULER.SET_ATTRIBUTE( + name => '"ERIGHTS"."J_CLEANUP_ABAC_COMM"', + attribute => 'store_output', value => TRUE); + DBMS_SCHEDULER.SET_ATTRIBUTE( + name => '"ERIGHTS"."J_CLEANUP_ABAC_COMM"', + attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_OFF); + + + + + DBMS_SCHEDULER.enable( + name => '"ERIGHTS"."J_CLEANUP_ABAC_COMM"'); +END; +/ \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.15.0/31.0_RIGD-2727_update_email_signatures_from_HR3_to_BS4.SQL b/e-rights-common/src/main/database/release/archive/2.15.0/31.0_RIGD-2727_update_email_signatures_from_HR3_to_BS4.SQL new file mode 100644 index 0000000..c0b4839 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.15.0/31.0_RIGD-2727_update_email_signatures_from_HR3_to_BS4.SQL @@ -0,0 +1,256 @@ +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'ROTATION' + AND notification_template_code = 'CREATE' + AND default_template = 'N'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'SECONDMENT' + AND notification_template_code = 'CREATE' + AND default_template = 'N'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'EOC' + AND notification_template_code = 'CREATE' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'ROTATION' + AND notification_template_code = 'REMINDER_AFTER_CREATE' + AND default_template = 'N'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'SECONDMENT' + AND notification_template_code = 'REMINDER_AFTER_CREATE' + AND default_template = 'N'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'EOC' + AND notification_template_code = 'REMINDER_AFTER_CREATE' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'ROTATION' + AND notification_template_code = 'WITHDRAW' + AND default_template = 'N'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'SECONDMENT' + AND notification_template_code = 'WITHDRAW' + AND default_template = 'N'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'EOC' + AND notification_template_code = 'WITHDRAW' + AND default_template = 'N'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'SYSTEM' + AND notification_template_code = 'REPORT_FAILED_COMMS' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'INSTALLATION_REQUEST' + AND notification_template_code = 'REMINDER' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'ENTITLEMENTS_REQUEST' + AND notification_template_code = 'CREATE_REQUEST' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'ROTATION' + AND notification_template_code = 'CREATE' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'SECONDMENT' + AND notification_template_code = 'CREATE' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'ENTITLEMENTS_REQUEST' + AND notification_template_code = 'APPROVED_REQUEST' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'ENTITLEMENTS_REQUEST' + AND notification_template_code = 'REJECTED_REQUEST' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegation.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'ENTITLEMENTS_REQUEST' + AND notification_template_code = 'PAID_REQUEST' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'INSTALLATION_REQUEST' + AND notification_template_code = 'PAID_REQUEST' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'ENTITLEMENTS_AMOUNTS_SET' + AND notification_template_code = 'CONFIRM' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegation.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'ENTITLEMENTS_REQUEST' + AND notification_template_code = 'CLEARING_REQUEST' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'EIS_AMOUNTS_SET' + AND notification_template_code = 'CONFIRM' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'INSTALLATION_REQUEST' + AND notification_template_code = 'UPDATE_REQUEST' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'ROTATION' + AND notification_template_code = 'REMINDER_AFTER_CREATE' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'SECONDMENT' + AND notification_template_code = 'REMINDER_AFTER_CREATE' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'ROTATION' + AND notification_template_code = 'WITHDRAW' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'SECONDMENT' + AND notification_template_code = 'WITHDRAW' + AND default_template = 'Y'; + + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE + notification_template_type = 'EOC' + AND notification_template_code = 'WITHDRAW' + AND default_template = 'Y'; + + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegation.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'ROTATION' + AND notification_template_code = 'APPROVED_ADV_REM_REQUEST' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegation.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'SECONDMENT' + AND notification_template_code = 'REJECTED_ADV_REM_REQUEST' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Rotation team. Email: DEL-POSTINGS@eeas.europa.eu
    EEAS.RM.BHR.6 Support to Delegation. Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'INSTALLATION_REQUEST' + AND notification_template_code = 'START' + AND default_template = 'Y'; + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.15.0/32_RIGD-2764_update_email_address_and_team_name.sql b/e-rights-common/src/main/database/release/archive/2.15.0/32_RIGD-2764_update_email_address_and_team_name.sql new file mode 100644 index 0000000..cd90b8c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.15.0/32_RIGD-2764_update_email_address_and_team_name.sql @@ -0,0 +1,256 @@ +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'ROTATION' + AND notification_template_code = 'CREATE' + AND default_template = 'N'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'SECONDMENT' + AND notification_template_code = 'CREATE' + AND default_template = 'N'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'EOC' + AND notification_template_code = 'CREATE' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'ROTATION' + AND notification_template_code = 'REMINDER_AFTER_CREATE' + AND default_template = 'N'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'SECONDMENT' + AND notification_template_code = 'REMINDER_AFTER_CREATE' + AND default_template = 'N'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'EOC' + AND notification_template_code = 'REMINDER_AFTER_CREATE' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'ROTATION' + AND notification_template_code = 'WITHDRAW' + AND default_template = 'N'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'SECONDMENT' + AND notification_template_code = 'WITHDRAW' + AND default_template = 'N'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'EOC' + AND notification_template_code = 'WITHDRAW' + AND default_template = 'N'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'SYSTEM' + AND notification_template_code = 'REPORT_FAILED_COMMS' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'INSTALLATION_REQUEST' + AND notification_template_code = 'REMINDER' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'ENTITLEMENTS_REQUEST' + AND notification_template_code = 'CREATE_REQUEST' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'ROTATION' + AND notification_template_code = 'CREATE' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'SECONDMENT' + AND notification_template_code = 'CREATE' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'ENTITLEMENTS_REQUEST' + AND notification_template_code = 'APPROVED_REQUEST' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'ENTITLEMENTS_REQUEST' + AND notification_template_code = 'REJECTED_REQUEST' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegation.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'ENTITLEMENTS_REQUEST' + AND notification_template_code = 'PAID_REQUEST' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'INSTALLATION_REQUEST' + AND notification_template_code = 'PAID_REQUEST' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'ENTITLEMENTS_AMOUNTS_SET' + AND notification_template_code = 'CONFIRM' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegation.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'ENTITLEMENTS_REQUEST' + AND notification_template_code = 'CLEARING_REQUEST' + AND default_template = 'Y'; + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'EIS_AMOUNTS_SET' + AND notification_template_code = 'CONFIRM' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'INSTALLATION_REQUEST' + AND notification_template_code = 'UPDATE_REQUEST' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'ROTATION' + AND notification_template_code = 'REMINDER_AFTER_CREATE' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'SECONDMENT' + AND notification_template_code = 'REMINDER_AFTER_CREATE' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'ROTATION' + AND notification_template_code = 'WITHDRAW' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'SECONDMENT' + AND notification_template_code = 'WITHDRAW' + AND default_template = 'Y'; + + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'EOC' + AND notification_template_code = 'WITHDRAW' + AND default_template = 'Y'; + + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegation.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'ROTATION' + AND notification_template_code = 'APPROVED_ADV_REM_REQUEST' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegation.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'SECONDMENT' + AND notification_template_code = 'REJECTED_ADV_REM_REQUEST' + AND default_template = 'Y'; + + +UPDATE notification_templates +SET + message_signature = 'EEAS.RM.BHR.6 Support to Delegations.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE + notification_template_type = 'INSTALLATION_REQUEST' + AND notification_template_code = 'START' + AND default_template = 'Y'; + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.15.0/67_RIGD-2936_Update_notification_templates.sql b/e-rights-common/src/main/database/release/archive/2.15.0/67_RIGD-2936_Update_notification_templates.sql new file mode 100644 index 0000000..d0195b0 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.15.0/67_RIGD-2936_Update_notification_templates.sql @@ -0,0 +1,113 @@ +CREATE TABLE bkp$notification_templates_rigd2936 + AS + SELECT + * + FROM + notification_templates; + +/* +SELECT + * +FROM + notification_templates +WHERE + message_signature LIKE '%BHR.6%' + AND default_template = 'Y'; + --AND message_body NOT LIKE '%Kind regards,%'; +*/ + +set define off +BEGIN + FOR lr_tpl IN ( + SELECT + * + FROM + notification_templates + WHERE + message_signature LIKE '%BHR.6%' + AND default_template = 'Y' + ORDER BY + notification_template_id + ) LOOP + INSERT INTO notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template + ) VALUES ( + ( + SELECT + MAX(notification_template_id) + 1 + FROM + notification_templates + ), + lr_tpl.notification_template_type, + lr_tpl.message_subject, + replace(lr_tpl.message_body, 'Kind regards,'), + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + lr_tpl.notification_template_code, + 'Y' + ); + + UPDATE notification_templates + SET + default_template = 'N' + WHERE + notification_template_id = lr_tpl.notification_template_id; + + END LOOP; + + COMMIT; +END; +/ + +UPDATE notification_templates +SET + message_body = replace(message_body, '
    +
    ', '

    ') +WHERE + default_template = 'Y' + AND message_signature LIKE '%EEAS.RM.BHR.6%' + AND message_body LIKE '%
    +
    %'; + +UPDATE notification_templates +SET + message_body = replace(message_body, '
    + +
    ', '

    ') +WHERE + default_template = 'Y' + AND message_signature LIKE '%EEAS.RM.BHR.6%' + AND message_body LIKE '%
    + +
    %'; + +UPDATE notification_templates +SET + message_body = replace(message_body, '



    ', '

    ') +WHERE + default_template = 'Y' + AND message_signature LIKE '%EEAS.RM.BHR.6%' + AND message_body LIKE '%



    '; + +UPDATE notification_templates +SET + message_body = replace(message_body, '


    ', '

    ') +WHERE + default_template = 'Y' + AND message_signature LIKE '%EEAS.RM.BHR.6%' + AND message_body LIKE '%


    '; + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.15.0/69_RIGD-2918_Update_notifications_templates.sql b/e-rights-common/src/main/database/release/archive/2.15.0/69_RIGD-2918_Update_notifications_templates.sql new file mode 100644 index 0000000..3bf37eb --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.15.0/69_RIGD-2918_Update_notifications_templates.sql @@ -0,0 +1,108 @@ +set define off +BEGIN + FOR lr_tpl IN ( + SELECT + * + FROM + notification_templates + WHERE + notification_template_type in ('ROTATION', 'SECONDMENT') +and default_template = 'Y' +and notification_template_code = 'CREATE' + ORDER BY + notification_template_id + ) LOOP + INSERT INTO notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template + ) VALUES ( + ( + SELECT + MAX(notification_template_id) + 1 + FROM + notification_templates + ), + lr_tpl.notification_template_type, + lr_tpl.message_subject, + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment has been created in e-Rights. The foreseen start date of your new assignment is on ${START_DATE}.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.
    +
    ', + lr_tpl.message_signature, + lr_tpl.notification_template_code, + 'Y' + ); + + UPDATE notification_templates + SET + default_template = 'N' + WHERE + notification_template_id = lr_tpl.notification_template_id; + + END LOOP; + + COMMIT; +END; +/ + +BEGIN + FOR lr_tpl IN ( + SELECT + * + FROM + notification_templates + WHERE + notification_template_type = 'EOC' +and default_template = 'Y' +and notification_template_code = 'CREATE' + ORDER BY + notification_template_id + ) LOOP + INSERT INTO notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template + ) VALUES ( + ( + SELECT + MAX(notification_template_id) + 1 + FROM + notification_templates + ), + lr_tpl.notification_template_type, + lr_tpl.message_subject, + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} has been created in e-Rights. The foreseen end date of your assignment is on ${ESTIMATED_END_DATE}.
    +
    +Alert us in case you would be resuming employment with a European Union Institution or Agency directly after the end of your current contract.
    +
    +Please, log in to e-Rights using your EU Login and confirm your end of assignment to initiate your entitlements.
    +
    ', + lr_tpl.message_signature, + lr_tpl.notification_template_code, + 'Y' + ); + + UPDATE notification_templates + SET + default_template = 'N' + WHERE + notification_template_id = lr_tpl.notification_template_id; + + END LOOP; + + COMMIT; +END; +/ diff --git a/e-rights-common/src/main/database/release/archive/2.15.0/72_RIGD-2969_NOTIFICATION_TEMPLATES_Extra_spaces_cleaning.sql b/e-rights-common/src/main/database/release/archive/2.15.0/72_RIGD-2969_NOTIFICATION_TEMPLATES_Extra_spaces_cleaning.sql new file mode 100644 index 0000000..4add0fd --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.15.0/72_RIGD-2969_NOTIFICATION_TEMPLATES_Extra_spaces_cleaning.sql @@ -0,0 +1,668 @@ +CREATE TABLE bkp$notification_templates_rigd2969 + AS + SELECT + * + FROM + notification_templates; + +DELETE FROM notification_templates +WHERE + (default_template = 'Y' + AND message_signature LIKE '%BHR.6%') + OR notification_template_id = 43; + +SET DEFINE OFF; + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 40, + 'EOC', + 'Reminder: Your End of Contract file from ${MOVEMENT_FROM} has been created in e-Rights portal.', + 'Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} is waiting for your confirmation in e-Rights. In the absence of your confirmation, your assignment will be considered withdrawn.

    Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.

    ${MOVEMENT_FILE_ID}', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'REMINDER_AFTER_CREATE', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 41, + 'SYSTEM', + 'Report with failed notification emails', + 'The following email notifications are failed : ${MOVEMENT_FILES}', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'REPORT_FAILED_COMMS', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 42, + 'ENTITLEMENTS_AMOUNTS_SET', + 'Your input is required to generate your removal and travel entitlements via e-Rights', + 'Dear ${FIRST_NAME} ${LAST_NAME},

    The Rotation team has determined your entitlements for removal and travel.

    You will find your entitlements and other necessary information in your movement file in the e-Rights Portal.

    Steps to follow to receive your entitlements:
    • Please make sure to consult the complete rules and guidelines available in e-Rights.
    • Fill in and submit your movement file declaration in e-Rights. Based on your input, e-Rights will generate your corresponding entitlement requests.
    • Submit your declaration and follow the instructions.
    ', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'CONFIRM', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 43, + 'ENTITLEMENTS_REQUEST', + 'E-Rights created your request(s).', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +E-Rights created your entitlement request(s).
    +Please log in to e-Rights to consult your request(s) in your corresponding movement file and act upon as necessary.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'CREATE_REQUEST', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 46, + 'ROTATION', + 'Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} has been withdrawn.
    +
    +Log in to e-Rights to consult your movement file.
    +
    +If you disagree, please contact: DEL-POSTINGS@eeas.europa.eu', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'WITHDRAW', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 47, + 'SECONDMENT', + 'Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} has been withdrawn.
    +
    +Log in to e-Rights to consult your movement file.
    +
    +If you disagree, please contact: DEL-POSTINGS@eeas.europa.eu', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'WITHDRAW', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 62, + 'ROTATION', + 'Your assignment to ${MOVEMENT_TO} file has been created in the e-Rights portal', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment has been created in e-Rights. The foreseen start date of your new assignment is on ${START_DATE}.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'CREATE', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 63, + 'SECONDMENT', + 'Your assignment to ${MOVEMENT_TO} file has been created in the e-Rights portal', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment has been created in e-Rights. The foreseen start date of your new assignment is on ${START_DATE}.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'CREATE', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 64, + 'EOC', + 'Your end of assignment file from ${MOVEMENT_FROM} has been created in the e-Rights portal', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} has been created in e-Rights. The foreseen end date of your assignment is on ${ESTIMATED_END_DATE}.
    +
    +Alert us in case you would be resuming employment with a European Union Institution or Agency directly after the end of your current contract.
    +
    +Please, log in to e-Rights using your EU Login and confirm your end of assignment to initiate your entitlements.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'CREATE', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 48, + 'EOC', + 'Your End of Contract file from ${MOVEMENT_FROM} has been withdrawn in e-Right Portal', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} has been withdrawn.
    +
    +Log in to e-Rights to consult your movement file.
    +
    +If you disagree, please contact: DEL-POSTINGS@eeas.europa.eu', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'WITHDRAW', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 49, + 'ROTATION', + 'Reminder: Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment is waiting for your confirmation in e-Rights. In the absence of your confirmation, your assignment will be considered withdrawn.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'REMINDER_AFTER_CREATE', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 50, + 'SECONDMENT', + 'Reminder: Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment is waiting for your confirmation in e-Rights. In the absence of your confirmation, your assignment will be considered withdrawn.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'REMINDER_AFTER_CREATE', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 51, + 'ENTITLEMENTS_REQUEST', + 'Your request ${REQUEST_STRING_ID} was approved.', + 'Dear ${FIRST_NAME} ${LAST_NAME},

    Your request ${REQUEST_STRING_ID} was approved. It will soon be processed for payment. You will be notified accordingly.

    Please consult the details of your request in your movement file in e-Rights.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'APPROVED_REQUEST', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 52, + 'ENTITLEMENTS_REQUEST', + 'Your request ${REQUEST_STRING_ID} was rejected.', + 'Dear ${FIRST_NAME} ${LAST_NAME},

    Your request ${REQUEST_STRING_ID} was rejected.

    Please consult the details of your request in your movement file in e-Rights.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'REJECTED_REQUEST', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 53, + 'ENTITLEMENTS_REQUEST', + '${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID}: processed', + 'Dear ${FIRST_NAME} ${LAST_NAME},

    The payment related to your ${ENTITLEMENT_TYPE} request was verified and processed.

    The payment will be credited to your bank account indicated in the request. Please note that it may take several days before the payment is credited on your bank account. All related supporting documents are stored in e-RIGHTS, while the originals must be kept by the Official for a maximum duration of 2 years.

    Log in to e-Rights to consult your request.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'PAID_REQUEST', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 54, + 'ENTITLEMENTS_REQUEST', + 'Your request ${REQUEST_STRING_ID} was approved.', + 'Dear ${FIRST_NAME} ${LAST_NAME},

    Your request ${REQUEST_STRING_ID} was approved. It will soon be processed for payment. You will be notified accordingly.

    Please consult the details of your request in your movement file in e-Rights.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'APPROVED_ADV_REM_REQUEST', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 55, + 'ENTITLEMENTS_REQUEST', + 'Your request ${REQUEST_STRING_ID} was rejected.', + 'Dear ${FIRST_NAME} ${LAST_NAME},

    Your request ${REQUEST_STRING_ID} was rejected.

    Please consult the details of your request in your movement file in e-Rights.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'REJECTED_ADV_REM_REQUEST', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 56, + 'ENTITLEMENTS_REQUEST', + 'Reminder: You need to clear the removal advance you’ve received', + 'Dear ${FIRST_NAME} ${LAST_NAME}, +

    +Your request for a removal advance from ${FROM_COUNTRY_CITY} to ${TO_COUNTRY_CITY} was processed and paid for an amount of ${AMOUNT} on the ${DATE_OF_PAYMENT}. +

    +This email is a reminder that you still need to clear this advance by encoding a clearing/reimbursement request and uploading the necessary documents through the e-Rights portal +

    +The final deadline for clearing your removal advance is ${PAYMENT_DATE}. Should you not have introduced an advance clearing request by that date, the EEAS reserves the right to recover the full amount of the advance granted to you.

    Log in to e-Rights to consult your request.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'CLEARING_REQUEST', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 57, + 'INSTALLATION_REQUEST', + 'E-Rights: ${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID}: Processed', + 'Dear ${FIRST_NAME} ${LAST_NAME},

    Your rights related to your ${ENTITLEMENT_TYPE} request were verified and processed in Sysper. The ${ENTITLEMENT_TYPE} will be paid along with your salary. Please allow some time before it is actually processed by the Payment Office (PMO).

    Please log in to E-Right to consult the details of your installation allowance.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'PAID_REQUEST', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 58, + 'INSTALLATION_REQUEST', + 'E-Rights: ${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID}: Updated', + 'Dear ${FIRST_NAME} ${LAST_NAME}, +

    + Your rights related to your ${ENTITLEMENT_TYPE} request were updated in Sysper. The correction of your ${ENTITLEMENT_TYPE} will be paid along with your salary. Please allow some time before it is actually processed by the Payment Office (PMO).

    Please log in to E-Right to consult the details of your installation allowance.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'UPDATE_REQUEST', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 59, + 'INSTALLATION_REQUEST', + 'E-Rights: Reminder - Declare your new address in Sysper.', + 'Dear ${FIRST_NAME} ${LAST_NAME}, +

    + It has been ${WEEKS_AFTER_START} since your assignment started in ${COUNTRY}, ${CITY} and you still have not declared your new address in Sysper.
    + This is a gentle reminder to declare your address in Sysper once that you have physically arrived at your new place of assignment with effect as of the exact arrival date. If applicable, do also modify the private address of your dependant family members indicating their habitual residence.
    Thank you for doing the necessary as soon as possible.

    Please disregard this reminder if you have recently submitted your new address declaration in Sysper. It might still be under review and will be taken into consideration by the system once validated.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'REMINDER', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 60, + 'INSTALLATION_REQUEST', + 'E-Rights: Steps required to complete your rights and obligations.', + 'Dear ${FIRST_NAME} ${LAST_NAME},

    We hope that you have well arrived at your destination.

    Here is a gentle reminder of the administrative tasks that you should perform:

    If you are terminating your contract:
    • You have 3 years after ending your career/contract to resettle and to submit your resettlement allowance claim with the supporting documents.
    • Clear your removal by clearing your advance request or submitting your reimbursement request in e-Rights.
    If you are moving to a new Delegation:
    • Once that you have physically arrived at your new place of assignment; update your address in Sysper for you and, if applicable, for your dependants as soon as possible, even in case of temporary housing.
      Address declarations are used as reference to fix your entitlements and to validate travel entitlements of your dependants, as well as to perform ex-post verifications. Please be aware that an incorrect address in Sysper could lead to the recovery of any unduly paid amounts.
    • Submit your completed and fully signed taking up duties confirmation form by email to DEL-POSTINGS@eeas.europa.eu with the functional mailbox of the HR Service in charge of your post in copy. This signed form is necessary to confirm your physical arrival at your new place of assignment and to validate your address declaration leading to payment of your installation allowance.
    • As soon as your removal has been delivered and you have paid all related invoices, clear your removal by clearing your advance request or submitting your reimbursement request in e-Rights.
    If you are moving to Headquarters:
    • Once that you have physically arrived at your new place of assignment; update your address in Sysper for you and your dependants as soon as you have moved into permanent housing to be registered with the authorities.
    • As soon as your removal has been delivered and you have paid all related invoices, clear your removal by clearing your advance request or submitting your reimbursement request in e-Rights.
    Thank you for completing these tasks at the earliest possible moment.

    For more information on the procedures, please log in to e-Rights and consult the guidelines applicable to your movement.

    Please ignore tasks that do not apply to your situation.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'START', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 61, + 'EIS_AMOUNTS_SET', + 'Removals: Your Entry-into-Storage Ceiling has been set.', + 'Dear ${FIRST_NAME} ${LAST_NAME}, +

    You have recently requested an Entry-into-Storage Ceiling and it has been set in your movement file. You can now submit your Removal requests with all the related documents. +

    Please log in to e-Rights to consult the ceiling and submit your request.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'CONFIRM', + 'Y' +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.15.0/90_RIGD-3038_update_notification.sql b/e-rights-common/src/main/database/release/archive/2.15.0/90_RIGD-3038_update_notification.sql new file mode 100644 index 0000000..b8fa3d7 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.15.0/90_RIGD-3038_update_notification.sql @@ -0,0 +1,32 @@ +SET DEFINE OFF; + +update ERIGHTS.NOTIFICATION_TEMPLATES +set default_template = 'N' +where NOTIFICATION_TEMPLATE_TYPE = 'ENTITLEMENTS_AMOUNTS_SET' +and NOTIFICATION_TEMPLATE_CODE = 'CONFIRM' +and DEFAULT_TEMPLATE = 'Y'; + +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (65,'ENTITLEMENTS_AMOUNTS_SET','Your input is required to generate your removal and travel entitlements via e-Rights','Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Our team has determined your entitlements for removal and travel.
    +
    +Please note that the AIPN keeps the right to revise the travel rates communicated through e-Rights in case it was excessively generous or lower than the market rate.
    +
    +You will find your entitlements and other necessary information in your movement file in the e-Rights Portal.
    +
    +Steps to follow to receive your entitlements: +
      +
    • Please make sure to consult the complete rules and guidelines available in e-Rights.
    • +
    • Fill in and submit your movement file declaration in e-Rights. Based on your input, e-Rights will generate your corresponding entitlement requests.
    • +
    • Submit your declaration and follow the instructions.
    • +
    ','Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations','CONFIRM','Y'); + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.15.0/92_RIGD-3064_budget_lines_subposts_mapping_insert.sql b/e-rights-common/src/main/database/release/archive/2.15.0/92_RIGD-3064_budget_lines_subposts_mapping_insert.sql new file mode 100644 index 0000000..fe1b747 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.15.0/92_RIGD-3064_budget_lines_subposts_mapping_insert.sql @@ -0,0 +1,91 @@ +REM INSERTING into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING +SET DEFINE OFF; + +INSERT INTO erights.budget_lines_subposts_mapping ( + budget_lines_subposts_mapping_id, + budget_lines, + budget_position_budgdel, + budget_position_erights, + fund_source, + request_type, + statutory_link, + subpost_code, + subpost_description, + personnel_type_id, + lst_cd, + subpost_type, + movement_context +) VALUES ( + 102, + 'EEAS-B2023-3005.16.T3.INT-R0-EEAS 2023 DELEASBHR6 B3401', + '3005.16.T3.INT', + '3005.16.T3.INT', + 'R0', + 'TUD', + 'Officials and CA', + 'B340101', + 'TRAVEL COSTS FOR THE PURPOSE OF ROTATION', + 1, + 'NA', + 'PERSONAL', + null +); +INSERT INTO erights.budget_lines_subposts_mapping ( + budget_lines_subposts_mapping_id, + budget_lines, + budget_position_budgdel, + budget_position_erights, + fund_source, + request_type, + statutory_link, + subpost_code, + subpost_description, + personnel_type_id, + lst_cd, + subpost_type, + movement_context +) VALUES ( + 103, + 'EEAS-B2023-3005.16.T3.INT-R0-EEAS 2023 DELEASBHR6 B3401', + '3005.16.T3.INT', + '3005.16.T3.INT', + 'R0', + 'REM', + 'Officials and CA', + 'B340102', + 'COST OF REMOVAL AND INSURANCE OF REMOVAL', + 1, + 'NA', + 'PERSONAL', + null +); +INSERT INTO erights.budget_lines_subposts_mapping ( + budget_lines_subposts_mapping_id, + budget_lines, + budget_position_budgdel, + budget_position_erights, + fund_source, + request_type, + statutory_link, + subpost_code, + subpost_description, + personnel_type_id, + lst_cd, + subpost_type, + movement_context +) VALUES ( + 104, + 'EEAS-B2023-3005.16.T3.INT-R0-EEAS 2023 DELEASBHR6 B3401', + '3005.16.T3.INT', + '3005.16.T3.INT', + 'R0', + 'REM', + 'Officials and CA', + 'B340103', + 'EXPAT STAFF - STORAGE OF FURNITURE', + 1, + 'NA', + 'STORAGE', + null +); +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.15.0/93_RIGD-3082_Update_notification_templates.sql b/e-rights-common/src/main/database/release/archive/2.15.0/93_RIGD-3082_Update_notification_templates.sql new file mode 100644 index 0000000..b876627 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.15.0/93_RIGD-3082_Update_notification_templates.sql @@ -0,0 +1,124 @@ +REM INSERTING into ERIGHTS.NOTIFICATION_TEMPLATES +SET DEFINE OFF; + +UPDATE notification_templates +SET + default_template = 'N' +WHERE + notification_template_code = 'REMINDER_AFTER_CREATE' + AND notification_template_type IN ( 'SECONDMENT', 'ROTATION', 'EOC', 'CRISIS' ) + AND default_template = 'Y'; + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 66, + 'SECONDMENT', + 'Reminder: Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment is waiting for your confirmation in e-Rights. In the absence of your confirmation, your rotation entitlements will not be activated and you will not be eligible for payment.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'REMINDER_AFTER_CREATE', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 67, + 'ROTATION', + 'Reminder: Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment is waiting for your confirmation in e-Rights. In the absence of your confirmation, your rotation entitlements will not be activated and you will not be eligible for payment.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'REMINDER_AFTER_CREATE', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 68, + 'EOC', + 'Reminder: Your End of Contract file from ${MOVEMENT_FROM} has been created in e-Rights portal.', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment is waiting for your confirmation in e-Rights. In the absence of your confirmation, your rotation entitlements will not be activated and you will not be eligible for payment.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.', + 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations', + 'REMINDER_AFTER_CREATE', + 'Y' +); + +INSERT INTO erights.notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 69, + 'CRISIS', + 'Reminder: Your evacuation to ${MOVEMENT_TO} has been created in e-Rights portal.', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    + Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming evacuation is waiting for your confirmation in e-Rights. In the absence of your confirmation, your rotation entitlements will not be activated and you will not be eligible for payment.
    +
    + Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.
    +
    + Kind regards,', + 'EEAS.RM.01 Crisis and Evacuation
    Email: DEL-POSTINGS@eeas.europa.eu', + 'REMINDER_AFTER_CREATE', + 'Y' +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/00.RIGD-543-declaration_person_alter.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/00.RIGD-543-declaration_person_alter.sql new file mode 100644 index 0000000..7f229c4 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/00.RIGD-543-declaration_person_alter.sql @@ -0,0 +1,22 @@ +ALTER TABLE declaration_person ADD CONSTRAINT pk_declaration_person PRIMARY KEY ( declaration_person_id ); + +ALTER TABLE declaration_person ADD ( + remarks VARCHAR2(300) +); + +ALTER TABLE declaration_person ADD ( + per_id NUMBER, + rel_per_id NUMBER, + trp_cd NUMBER, + trp_code VARCHAR2(100 BYTE) +); + +ALTER TABLE declaration_person DROP COLUMN family_member_id; + +ALTER TABLE declaration_person + ADD CONSTRAINT fk_decl_pers_decl FOREIGN KEY ( declaration_id ) + REFERENCES declaration ( declaration_id ); + + +ALTER TABLE DECLARATION_PERSON +ADD (CLAIM CHAR DEFAULT 'N' ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/01.RIGD-514-MV_FAMILY_MEMBER.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/01.RIGD-514-MV_FAMILY_MEMBER.sql new file mode 100644 index 0000000..dfbe8fe --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/01.RIGD-514-MV_FAMILY_MEMBER.sql @@ -0,0 +1,185 @@ +DROP MATERIALIZED VIEW "MV_FAMILY_MEMBERS"; + +CREATE MATERIALIZED VIEW "MV_FAMILY_MEMBERS" +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT /*+driving_site(r)*/ + to_char(rel_per_id) + || to_char( + per_id, + 'FM0999999999' + ) AS family_member_id, + r.rel_per_id per_id, + r.rel_surname surname, + r.rel_birth_name birth_name, + r.rel_first_name first_name, + r.rel_date_of_birth date_of_birth, + r.rel_gender gender, + r.start_date, + r.end_date, + r.trp_cd, + r.trp_code, + r.per_id rel_per_id, + r.surname rel_surname, + r.birth_name rel_birth_name, + r.first_name rel_first_name, + r.date_of_birth rel_date_of_birth, + r.gender rel_gender, + 'COMREF' source + FROM + mv_person_relatives@easrefn.cc.cec.eu.int r + WHERE + r.trp_cd IN ( 8, + 42, + 7, + 6, + 65, + 41, + 9 ) + AND rel_per_id IN ( + SELECT + per_id + FROM + mv_persons_eeas@easrefn.cc.cec.eu.int + ) + AND rel_per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + UNION ALL + SELECT /*+driving_site(r)*/ + to_char(rel_per_id) + || to_char( + per_id, + 'FM0999999999' + ) AS family_member_id, + r.per_id, + r.surname, + r.birth_name, + r.first_name, + r.date_of_birth, + r.gender, + r.start_date, + r.end_date, + r.trp_cd, + r.trp_code, + r.rel_per_id, + r.rel_surname, + r.rel_birth_name, + r.rel_first_name, + r.rel_date_of_birth, + r.rel_gender, + 'COMREF' source + FROM + mv_person_relatives@easrefn.cc.cec.eu.int r + WHERE + r.trp_cd IN ( 8, + 42, + 7, + 6, + 65, + 41, + 9 ) + AND per_id IN ( + SELECT + per_id + FROM + mv_persons_eeas@easrefn.cc.cec.eu.int + ) + AND rel_per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_person_relatives@easrefn.cc.cec.eu.int r2 + WHERE + r2.per_id = r.rel_per_id + AND r2.rel_per_id = r.per_id + ) + UNION ALL + SELECT /*+driving_site(cfc)*/ DISTINCT + to_char( + la.per_id + ) + || to_char( + r.per_id, + 'FM0999999999' + ) AS family_member_id, + la.per_id per_id, + la.surname surname, + la.birth_name birth_name, + la.first_name first_name, + la.date_of_birth date_of_birth, + la.genre gender, + cfc.relationship_begin_date start_date, + cfc.relationship_end_date end_date, + CASE family_rel_type_cd + WHEN 'SPO' THEN + 41 + WHEN 'CHL' THEN + 6 + END trp_cd, + CASE family_rel_type_cd + WHEN 'SPO' THEN + 'Spouse' + WHEN 'CHL' THEN + 'Child' + END trp_code, + r.per_id rel_per_id, + r.surname rel_surname, + r.birth_name rel_birth_name, + r.first_name rel_first_name, + r.date_of_birth rel_date_of_birth, + r.genre rel_gender, + 'CSISLA' source + FROM + mv_csisla_family_coverage@easrefn.cc.cec.eu.int cfc + INNER JOIN mv_persons_hist_eeas@easrefn.cc.cec.eu.int la ON ( cfc.la_per_id = la.per_id ) + INNER JOIN mv_persons_hist_eeas@easrefn.cc.cec.eu.int r ON ( cfc.per_id = r.per_id ) + WHERE + family_rel_type_cd <> 'LA' + AND sysdate BETWEEN csisla_start_eligibility AND csisla_end_eligibility + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_person_relatives@easrefn.cc.cec.eu.int pr + WHERE + pr.per_id = r.per_id + AND pr.rel_per_id = la.per_id + ); + +CREATE INDEX idx_mv_family_members_per_id ON + mv_family_members ( + per_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/01.RIGD-532-mv_person_address.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/01.RIGD-532-mv_person_address.sql new file mode 100644 index 0000000..8d57d75 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/01.RIGD-532-mv_person_address.sql @@ -0,0 +1,53 @@ +CREATE MATERIALIZED VIEW mv_person_address +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id + FROM + mv_person_address@easrefn.cc.cec.eu.int a; + +CREATE INDEX idx_mv_person_address_per_id ON + mv_person_address ( + per_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/01.RIGD-543-declaration_person_attachments.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/01.RIGD-543-declaration_person_attachments.sql new file mode 100644 index 0000000..9484923 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/01.RIGD-543-declaration_person_attachments.sql @@ -0,0 +1,25 @@ +CREATE TABLE declaration_person_attachments ( + declaration_pers_attachment_id NUMBER, + uuid RAW(16) NOT NULL, + declaration_person_id NUMBER NOT NULL, + file_name VARCHAR2(200 BYTE) NOT NULL, + created_by NUMBER, + created_at TIMESTAMP(6), + updated_by NUMBER, + updated_at TIMESTAMP(6) +); + +ALTER TABLE declaration_person_attachments ADD CONSTRAINT pk_decl_pers_attachments PRIMARY KEY ( declaration_pers_attachment_id ); + +ALTER TABLE declaration_person_attachments + ADD CONSTRAINT fk_decl_pers_attch_decl_pers FOREIGN KEY ( declaration_person_id ) + REFERENCES declaration_person ( declaration_person_id ); + +CREATE INDEX idx_decl_pers_attachments ON + declaration_person_attachments ( + declaration_person_id + ) + COMPUTE STATISTICS; + +CREATE SEQUENCE seq_decl_pers_attachments MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER +NOCYCLE; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/01.RIGD-554-MV_ASSIGNMENTS_COM-Recreate.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/01.RIGD-554-MV_ASSIGNMENTS_COM-Recreate.sql new file mode 100644 index 0000000..2753a5c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/01.RIGD-554-MV_ASSIGNMENTS_COM-Recreate.sql @@ -0,0 +1,53 @@ +DROP MATERIALIZED VIEW "MV_ASSIGNMENTS_COM"; + +CREATE MATERIALIZED VIEW "MV_ASSIGNMENTS_COM" ( + "SOJ_ID", + "JOB_ID", + "PER_ID", + "TOJ_CD", + "JOB_TYPE", + "START_DATE", + "END_DATE", + "TYPE_OF_POST", + "INS_CD", + "CREATION_DATE", + "MODIFICATION_DATE" +) +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT + "SOJ_ID", + "JOB_ID", + "PER_ID", + "TOJ_CD", + "JOB_TYPE", + "START_DATE", + "END_DATE", + "TYPE_OF_POST", + "INS_CD", + "CREATION_DATE", + "MODIFICATION_DATE" + FROM + mv_assignments_com@easrefn.cc.cec.eu.int; + +CREATE INDEX idx_mv_assign_com_per_id ON + mv_assignments_com ( + per_id + ) + COMPUTE STATISTICS; + +CREATE INDEX idx_mv_assign_com_job_id ON + mv_assignments_com ( + job_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/01.RIGD-557-ank_files.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/01.RIGD-557-ank_files.sql new file mode 100644 index 0000000..35daa74 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/01.RIGD-557-ank_files.sql @@ -0,0 +1,12 @@ +create table ANK_FILES +( + id RAW(16) not null, + name VARCHAR2(200) not null, + content_type VARCHAR2(100) not null, + data_size NUMBER not null, + data BLOB not null, + created_at DATE default sysdate not null +); + +alter table ANK_FILES + add constraint PK_ANK_FILES primary key (ID); diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/02.RIGD-514-MV_FAMILY_MEMBER-register.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/02.RIGD-514-MV_FAMILY_MEMBER-register.sql new file mode 100644 index 0000000..4f9bc97 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/02.RIGD-514-MV_FAMILY_MEMBER-register.sql @@ -0,0 +1,9 @@ +Insert into T_REFRESH_OBJECTS (ID,APP_OBJECT_NAME,PRIORITY,IS_REFRESHED,REFRESH_DATE,STATUS,SYSTEM) values (26,'MV_FAMILY_MEMBERS',26,'N',NULL,'KO','EASREFN'); + +Insert into T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (26,'MV_PERSON_RELATIVES',1); +Insert into T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (26,'MV_PERSONS_EEAS',2); +Insert into T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (26,'MV_PERSONS_DEAD_EEAS',3); +Insert into T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (26,'MV_CSISLA_FAMILY_COVERAGE',4); +Insert into T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (26,'MV_PERSONS_HIST_EEAS',5); + +commit; diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/02.RIGD-532-mv_person_address_register.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/02.RIGD-532-mv_person_address_register.sql new file mode 100644 index 0000000..8b934e2 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/02.RIGD-532-mv_person_address_register.sql @@ -0,0 +1,5 @@ +Insert into T_REFRESH_OBJECTS (ID,APP_OBJECT_NAME,PRIORITY,IS_REFRESHED,REFRESH_DATE,STATUS,SYSTEM) values (27,'MV_PERSON_ADDRESS',27,'N',NULL,'KO','EASREFN'); + +Insert into T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (27,'MV_PERSON_ADDRESS',1); + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/02.RIGD-554-MV_ASSIGNMENTS_HIST_EEAS-Recreate.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/02.RIGD-554-MV_ASSIGNMENTS_HIST_EEAS-Recreate.sql new file mode 100644 index 0000000..1e5227f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/02.RIGD-554-MV_ASSIGNMENTS_HIST_EEAS-Recreate.sql @@ -0,0 +1,55 @@ +DROP MATERIALIZED VIEW "MV_ASSIGNMENTS_HIST_EEAS"; + +CREATE MATERIALIZED VIEW "MV_ASSIGNMENTS_HIST_EEAS" ( + "SOJ_ID", + "JCX_ID", + "JOB_ID", + "PER_ID", + "TOJ_CD", + "JOB_TYPE", + "START_DATE", + "END_DATE", + "INS_CD", + "CREATION_DATE", + "MODIFICATION_DATE", + "TYPE_OF_POST" +) +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT + "SOJ_ID", + "JCX_ID", + "JOB_ID", + "PER_ID", + "TOJ_CD", + "JOB_TYPE", + "START_DATE", + "END_DATE", + "INS_CD", + "CREATION_DATE", + "MODIFICATION_DATE", + "TYPE_OF_POST" + FROM + mv_assignments_hist_eeas@easrefn.cc.cec.eu.int; + +CREATE INDEX idx_mv_assign_hist_eeas_per_id ON + mv_assignments_hist_eeas ( + per_id + ) + COMPUTE STATISTICS; + +CREATE INDEX idx_mv_assign_hist_eeas_job_id ON + mv_assignments_hist_eeas ( + job_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/03.RIGD-514-V_FAMILY_MEMBERS.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/03.RIGD-514-V_FAMILY_MEMBERS.sql new file mode 100644 index 0000000..e678e10 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/03.RIGD-514-V_FAMILY_MEMBERS.sql @@ -0,0 +1,23 @@ +CREATE OR REPLACE FORCE VIEW "V_FAMILY_MEMBERS" ( + "FAMILY_MEMBER_ID", + "PER_ID", + "SURNAME", + "DATE_OF_BIRTH", + "TRP_CODE", + "REL_PER_ID", + "REL_SURNAME", + "REL_FIRST_NAME", + "REL_DATE_OF_BIRTH" +) AS + SELECT + family_member_id, + per_id, + surname, + date_of_birth, + trp_code, + rel_per_id, + rel_surname, + rel_first_name, + rel_date_of_birth + FROM + mv_family_members; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/03.RIGD-543-v_people.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/03.RIGD-543-v_people.sql new file mode 100644 index 0000000..98f93ec --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/03.RIGD-543-v_people.sql @@ -0,0 +1,51 @@ +CREATE OR REPLACE FORCE VIEW v_people ( + per_id, + title, + first_name, + last_name, + gender, + birth_city, + birth_country_code, + private_email, + date_of_birth +) AS + SELECT + per_id, + title, + first_name, + surname, + genre, + place_of_birth, + country_of_birth, + email, + date_of_birth + FROM + ( + SELECT + p.per_id, + p.title, + p.first_name, + p.surname, + p.genre, + p.place_of_birth, + p.country_of_birth, + em.email, + date_of_birth + FROM + mv_persons_hist_com p + LEFT JOIN mv_emails em ON em.per_id = p.per_id + UNION + SELECT + p.per_id, + p.title, + p.first_name, + p.surname, + p.genre, + p.place_of_birth, + p.country_of_birth, + em.email, + date_of_birth + FROM + mv_persons_hist_eeas p + LEFT JOIN mv_emails em ON em.per_id = p.per_id + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/03.RIGD-554-MV_ENTITIES-Recreate.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/03.RIGD-554-MV_ENTITIES-Recreate.sql new file mode 100644 index 0000000..c0b88c3 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/03.RIGD-554-MV_ENTITIES-Recreate.sql @@ -0,0 +1,85 @@ +DROP MATERIALIZED VIEW "MV_ENTITIES"; + +CREATE MATERIALIZED VIEW "MV_ENTITIES" ( + "ORG_ID", + "ORG_ID_PARENT", + "MAIN_ORG_ID", + "ORG_NAME", + "ORG_CD", + "SORT_ORDER", + "ORG_DESC", + "ORG_DESC_FRE", + "CITY_CODE", + "ENG_CITY", + "FRA_CITY", + "COUNTRY_ID", + "ENG_COUNTRY", + "FRA_COUNTRY", + "IS_DELEGATION", + "TOR_ID", + "TYPEOFENTITY_NAME", + "DELEGATION_NAME", + "DEL_ID", + "ALERT_STATUS_ID", + "ALERT_STATUS_CODE", + "SEVERITY_LEVEL", + "REGION_ID", + "REGION_CODE", + "FRA_REGION_DESC", + "ENG_REGION_DESC", + "IS_HQ" +) +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT + "ORG_ID", + "ORG_ID_PARENT", + "MAIN_ORG_ID", + "ORG_NAME", + "ORG_CD", + "SORT_ORDER", + "ORG_DESC", + "ORG_DESC_FRE", + "CITY_CODE", + "ENG_CITY", + "FRA_CITY", + "COUNTRY_ID", + "ENG_COUNTRY", + "FRA_COUNTRY", + "IS_DELEGATION", + "TOR_ID", + "TYPEOFENTITY_NAME", + "DELEGATION_NAME", + "DEL_ID", + "ALERT_STATUS_ID", + "ALERT_STATUS_CODE", + "SEVERITY_LEVEL", + "REGION_ID", + "REGION_CODE", + "FRA_REGION_DESC", + "ENG_REGION_DESC", + "IS_HQ" + FROM + mv_entities@easrefn.cc.cec.eu.int; + +CREATE INDEX idx_mv_entities_org_id ON + mv_entities ( + org_id + ) + COMPUTE STATISTICS; + +CREATE INDEX idx_mv_entities_main_org_id ON + mv_entities ( + main_org_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/04.RIGD-543-persons_bank_info_alter.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/04.RIGD-543-persons_bank_info_alter.sql new file mode 100644 index 0000000..525820a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/04.RIGD-543-persons_bank_info_alter.sql @@ -0,0 +1,7 @@ +ALTER TABLE persons_bank_info ADD CONSTRAINT pk_persons_bank_info PRIMARY KEY ( persons_bank_info_id ); + +CREATE INDEX idx_persons_bank_info_per_id ON + persons_bank_info ( + per_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/04.RIGD-554-MV_ENTITIES_HIST-Recreate.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/04.RIGD-554-MV_ENTITIES_HIST-Recreate.sql new file mode 100644 index 0000000..ad1f3a6 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/04.RIGD-554-MV_ENTITIES_HIST-Recreate.sql @@ -0,0 +1,87 @@ +DROP MATERIALIZED VIEW "MV_ENTITIES_HIST"; + +CREATE MATERIALIZED VIEW "MV_ENTITIES_HIST" ( + "HORG_ID", + "ORG_ID", + "ORG_ID_PARENT", + "MAIN_ORG_ID", + "ORG_NAME", + "ORG_CD", + "ORG_DESC", + "FR_ORG_DESC", + "CITY_CODE", + "ENG_CITY", + "FRA_CITY", + "COUNTRY_ID", + "ENG_COUNTRY", + "FRA_COUNTRY", + "IS_DELEGATION", + "TOR_ID", + "TYPEOFENTITY_NAME", + "DELEGATION_NAME", + "DEL_ID", + "ALERT_STATUS_ID", + "ALERT_STATUS_CODE", + "SEVERITY_LEVEL", + "START_DATE", + "END_DATE", + "SHORT_CODE", + "SORT_ORDER", + "HIERARCHY_LEVEL", + "OFFICIAL" +) +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT + "HORG_ID", + "ORG_ID", + "ORG_ID_PARENT", + "MAIN_ORG_ID", + "ORG_NAME", + "ORG_CD", + "ORG_DESC", + "FR_ORG_DESC", + "CITY_CODE", + "ENG_CITY", + "FRA_CITY", + "COUNTRY_ID", + "ENG_COUNTRY", + "FRA_COUNTRY", + "IS_DELEGATION", + "TOR_ID", + "TYPEOFENTITY_NAME", + "DELEGATION_NAME", + "DEL_ID", + "ALERT_STATUS_ID", + "ALERT_STATUS_CODE", + "SEVERITY_LEVEL", + "START_DATE", + "END_DATE", + "SHORT_CODE", + "SORT_ORDER", + "HIERARCHY_LEVEL", + "OFFICIAL" + FROM + mv_entities_hist@easrefn.cc.cec.eu.int; + +CREATE INDEX idx_mv_entities_hist_org_id ON + mv_entities_hist ( + org_id + ) + COMPUTE STATISTICS; + +CREATE INDEX idx_mv_entit_hist_main_org_id ON + mv_entities_hist ( + main_org_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/05.RIGD-543-declaration_alter.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/05.RIGD-543-declaration_alter.sql new file mode 100644 index 0000000..f9d5e42 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/05.RIGD-543-declaration_alter.sql @@ -0,0 +1,3 @@ +ALTER TABLE declaration + ADD CONSTRAINT fk_decl_mvmt_file FOREIGN KEY ( movement_file_id ) + REFERENCES movement_files ( movement_file_id ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/05.RIGD-554-MV_ENTITIES_HIST_COM-Recreate.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/05.RIGD-554-MV_ENTITIES_HIST_COM-Recreate.sql new file mode 100644 index 0000000..df3e833 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/05.RIGD-554-MV_ENTITIES_HIST_COM-Recreate.sql @@ -0,0 +1,65 @@ +DROP MATERIALIZED VIEW "MV_ENTITIES_HIST_COM"; + +CREATE MATERIALIZED VIEW "MV_ENTITIES_HIST_COM" ( + "ORG_ID", + "ORG_ID_PARENT", + "MAIN_ORG_ID", + "ORG_NAME", + "ORG_CD", + "ORG_DESC", + "ORG_DESC_FRE", + "CITY_CODE", + "ENG_CITY", + "FRA_CITY", + "COUNTRY_ID", + "ENG_COUNTRY", + "FRA_COUNTRY", + "TOR_ID", + "TYPEOFENTITY_NAME", + "START_DATE", + "END_DATE" +) +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT + "ORG_ID", + "ORG_ID_PARENT", + "MAIN_ORG_ID", + "ORG_NAME", + "ORG_CD", + "ORG_DESC", + "ORG_DESC_FRE", + "CITY_CODE", + "ENG_CITY", + "FRA_CITY", + "COUNTRY_ID", + "ENG_COUNTRY", + "FRA_COUNTRY", + "TOR_ID", + "TYPEOFENTITY_NAME", + "START_DATE", + "END_DATE" + FROM + mv_entities_hist_com@easrefn.cc.cec.eu.int; + +CREATE INDEX idx_mv_ent_hist_com_org_id ON + mv_entities_hist_com ( + org_id + ) + COMPUTE STATISTICS; + +CREATE INDEX idx_mv_ent_hst_com_main_org_id ON + mv_entities_hist_com ( + main_org_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/06.RIGD-554-MV_ENTITIES_TYPES-Recreate.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/06.RIGD-554-MV_ENTITIES_TYPES-Recreate.sql new file mode 100644 index 0000000..25f2b11 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/06.RIGD-554-MV_ENTITIES_TYPES-Recreate.sql @@ -0,0 +1,47 @@ +DROP MATERIALIZED VIEW "MV_ENTITIES_TYPES"; + +CREATE MATERIALIZED VIEW "MV_ENTITIES_TYPES" ( + "ORG_ID", + "ID", + "CODE", + "IS_ACTIVE", + "PRIORITY", + "CREATION_USER", + "CREATION_DATE", + "MODIFICATION_USER", + "MODIFICATION_DATE", + "EN_NAME", + "FR_NAME" +) +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT + "ORG_ID", + "ID", + "CODE", + "IS_ACTIVE", + "PRIORITY", + "CREATION_USER", + "CREATION_DATE", + "MODIFICATION_USER", + "MODIFICATION_DATE", + "EN_NAME", + "FR_NAME" + FROM + mv_entities_types@easrefn.cc.cec.eu.int; + +CREATE INDEX idx_mv_entities_types_org_id ON + mv_entities_types ( + org_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/07.RIGD-554-MV_HEAD_OF_DELEGATIONS-Indexes.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/07.RIGD-554-MV_HEAD_OF_DELEGATIONS-Indexes.sql new file mode 100644 index 0000000..46d0fdd --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/07.RIGD-554-MV_HEAD_OF_DELEGATIONS-Indexes.sql @@ -0,0 +1,11 @@ +CREATE INDEX idx_mv_head_del_org_id ON + mv_head_of_delegations ( + org_id + ) + COMPUTE STATISTICS; + +CREATE INDEX idx_mv_head_del_main_org_id ON + mv_head_of_delegations ( + main_org_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/08.RIGD-554-MV_HRPORTAL_JOBS_DETAILS-Indexes.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/08.RIGD-554-MV_HRPORTAL_JOBS_DETAILS-Indexes.sql new file mode 100644 index 0000000..2ee7641 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/08.RIGD-554-MV_HRPORTAL_JOBS_DETAILS-Indexes.sql @@ -0,0 +1,17 @@ +CREATE INDEX idx_mv_hrp_job_det_org_id ON + mv_hrportal_jobs_details ( + org_id + ) + COMPUTE STATISTICS; + +CREATE INDEX idx_mv_hrp_job_det_main_org_id ON + mv_hrportal_jobs_details ( + main_org_id + ) + COMPUTE STATISTICS; + +CREATE INDEX idx_mv_hrp_job_det_job_id ON + mv_hrportal_jobs_details ( + job_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/09.RIGD-554-MV_JOB_BUDGET_LINE-Recreate.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/09.RIGD-554-MV_JOB_BUDGET_LINE-Recreate.sql new file mode 100644 index 0000000..e74c5fc --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/09.RIGD-554-MV_JOB_BUDGET_LINE-Recreate.sql @@ -0,0 +1,33 @@ +DROP MATERIALIZED VIEW "MV_JOB_BUDGET_LINE"; + +CREATE MATERIALIZED VIEW "MV_JOB_BUDGET_LINE" ( + "JOB_ID", + "BUDGET_LINE", + "SOURCE", + "LST_CD" +) +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT + "JOB_ID", + "BUDGET_LINE", + "SOURCE", + "LST_CD" + FROM + mv_job_budget_line@easrefn.cc.cec.eu.int; + +CREATE INDEX idx_mv_job_budget_line_job_id ON + mv_job_budget_line ( + job_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/10.RIGD-554-MV_JOBS_HIST_COM-Indexes.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/10.RIGD-554-MV_JOBS_HIST_COM-Indexes.sql new file mode 100644 index 0000000..02cf942 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/10.RIGD-554-MV_JOBS_HIST_COM-Indexes.sql @@ -0,0 +1,5 @@ +CREATE INDEX idx_mv_jobs_hist_com_job_id ON + mv_jobs_hist_com ( + job_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/11.RIGD-554-MV_JOBS_HIST_EEAS-Recreate.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/11.RIGD-554-MV_JOBS_HIST_EEAS-Recreate.sql new file mode 100644 index 0000000..cf29210 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/11.RIGD-554-MV_JOBS_HIST_EEAS-Recreate.sql @@ -0,0 +1,117 @@ +DROP MATERIALIZED VIEW "MV_JOBS_HIST_EEAS"; + +CREATE MATERIALIZED VIEW "MV_JOBS_HIST_EEAS" ( + "JCX_ID", + "JOB_ID", + "SP2_DATE_CREAT", + "SP2_DATE_MODIF", + "SP2_USER_CREAT", + "SP2_USER_MODIF", + "SP2_CREATION_DATE", + "SP2_MODIFICATION_DATE", + "INS_CD", + "ORG_ID", + "START_DATE", + "END_DATE", + "JCX_ID_REMPLACE", + "DECISION_COMM", + "JOB_ID_ORIGINE", + "RESPONSIBLE", + "HEAD_OF_ENTITY", + "COMMENTS", + "CITY_CODE", + "CITY_NAME", + "COUNTRY_CODE", + "COUNTRY_NAME", + "LOCATION_CITY_CODE", + "LOCATION_CITY_NAME", + "LOCATION_COUNTRY_CODE", + "LOCATION_COUNTRY_NAME", + "TFN_ID", + "JOB_TYPE", + "JOB_STATUS", + "CGR_CD", + "EXCLU_GSYS", + "EXCLU_GSYS_INTERNE", + "EXCLU_GSYS_COMMENT", + "ORG_OFFICIEL", + "MOBILITE_OBLIGATOIRE", + "TABL_EFFECTIFS_UNIQ", + "CCE_ID_RESTYPE", + "PERSONNEL_TYPE_ID", + "PERSONNEL_TYPE_DESC", + "BUDGETARY_LINE", + "DATE_CREAT", + "USER_CREAT", + "DATE_MODIF", + "USER_MODIF", + "DG_RESP_ID", + "DG_RESP_CODE" +) +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT + "JCX_ID", + "JOB_ID", + "SP2_DATE_CREAT", + "SP2_DATE_MODIF", + "SP2_USER_CREAT", + "SP2_USER_MODIF", + "SP2_CREATION_DATE", + "SP2_MODIFICATION_DATE", + "INS_CD", + "ORG_ID", + "START_DATE", + "END_DATE", + "JCX_ID_REMPLACE", + "DECISION_COMM", + "JOB_ID_ORIGINE", + "RESPONSIBLE", + "HEAD_OF_ENTITY", + "COMMENTS", + "CITY_CODE", + "CITY_NAME", + "COUNTRY_CODE", + "COUNTRY_NAME", + "LOCATION_CITY_CODE", + "LOCATION_CITY_NAME", + "LOCATION_COUNTRY_CODE", + "LOCATION_COUNTRY_NAME", + "TFN_ID", + "JOB_TYPE", + "JOB_STATUS", + "CGR_CD", + "EXCLU_GSYS", + "EXCLU_GSYS_INTERNE", + "EXCLU_GSYS_COMMENT", + "ORG_OFFICIEL", + "MOBILITE_OBLIGATOIRE", + "TABL_EFFECTIFS_UNIQ", + "CCE_ID_RESTYPE", + "PERSONNEL_TYPE_ID", + "PERSONNEL_TYPE_DESC", + "BUDGETARY_LINE", + "DATE_CREAT", + "USER_CREAT", + "DATE_MODIF", + "USER_MODIF", + "DG_RESP_ID", + "DG_RESP_CODE" + FROM + mv_jobs_hist_eeas@easrefn.cc.cec.eu.int; + +CREATE INDEX idx_mv_jobs_hist_eeas_job_id ON + mv_jobs_hist_eeas ( + job_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/12.RIGD-554-MV_PERSONS_BANK_INFO-Indexes.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/12.RIGD-554-MV_PERSONS_BANK_INFO-Indexes.sql new file mode 100644 index 0000000..32fcc82 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/12.RIGD-554-MV_PERSONS_BANK_INFO-Indexes.sql @@ -0,0 +1,5 @@ +CREATE INDEX idx_mv_pers_bank_info_per_id ON + mv_persons_bank_info ( + per_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/13.RIGD-554-MV_PERSONS_COM-Recreate.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/13.RIGD-554-MV_PERSONS_COM-Recreate.sql new file mode 100644 index 0000000..cf51103 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/13.RIGD-554-MV_PERSONS_COM-Recreate.sql @@ -0,0 +1,119 @@ +DROP MATERIALIZED VIEW "MV_PERSONS_COM"; + +CREATE MATERIALIZED VIEW "MV_PERSONS_COM" ( + "PER_ID", + "NO_SYSPER", + "TITLE", + "SURNAME", + "BIRTH_NAME", + "FIRST_NAME", + "FIRST_NAME2", + "FIRST_NAME3", + "FIRST_NAME4", + "GENRE", + "DATE_OF_BIRTH", + "PLACE_OF_BIRTH", + "COUNTRY_OF_BIRTH", + "CREATION_DATE", + "MODIFICATION_DATE", + "USERID", + "MONIKER", + "DOMAINE", + "DISPLAY_NAME", + "COMPLET_NAME", + "JOB_ID", + "TOJ_CD", + "JOB_TYPE", + "JOB_START_DATE", + "JOB_END_DATE", + "INS_CD", + "EMAIL", + "LST_CD", + "LST_CODE", + "LST_BEG_DATE", + "LST_ASS_DATE", + "LST_END_DATE", + "CGR_CD", + "ORG_ID", + "MAIN_ORG_ID", + "ORG_NAME", + "ORG_CD", + "TOR_ID", + "TYPEOFENTITY_NAME", + "DELEGATION_NAME", + "DEL_ID", + "JOB_TITLE", + "JOB_NAME", + "JOB_NAME_DIRECTORY", + "JOB_PURPOSE", + "RESPONSIBLE", + "HEAD_OF_ENTITY" +) +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT + "PER_ID", + "NO_SYSPER", + "TITLE", + "SURNAME", + "BIRTH_NAME", + "FIRST_NAME", + "FIRST_NAME2", + "FIRST_NAME3", + "FIRST_NAME4", + "GENRE", + "DATE_OF_BIRTH", + "PLACE_OF_BIRTH", + "COUNTRY_OF_BIRTH", + "CREATION_DATE", + "MODIFICATION_DATE", + "USERID", + "MONIKER", + "DOMAINE", + "DISPLAY_NAME", + "COMPLET_NAME", + "JOB_ID", + "TOJ_CD", + "JOB_TYPE", + "JOB_START_DATE", + "JOB_END_DATE", + "INS_CD", + "EMAIL", + "LST_CD", + "LST_CODE", + "LST_BEG_DATE", + "LST_ASS_DATE", + "LST_END_DATE", + "CGR_CD", + "ORG_ID", + "MAIN_ORG_ID", + "ORG_NAME", + "ORG_CD", + "TOR_ID", + "TYPEOFENTITY_NAME", + "DELEGATION_NAME", + "DEL_ID", + "JOB_TITLE", + "JOB_NAME", + "JOB_NAME_DIRECTORY", + "JOB_PURPOSE", + "RESPONSIBLE", + "HEAD_OF_ENTITY" + FROM + mv_persons_com@easrefn.cc.cec.eu.int; + +CREATE INDEX "IDX_MV_PERSONS_COM_PER_ID" ON + "MV_PERSONS_COM" ( + "PER_ID" + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/14.RIGD-554-MV_PERSONS_EEAS-Recreate.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/14.RIGD-554-MV_PERSONS_EEAS-Recreate.sql new file mode 100644 index 0000000..49e790c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/14.RIGD-554-MV_PERSONS_EEAS-Recreate.sql @@ -0,0 +1,133 @@ +DROP MATERIALIZED VIEW "MV_PERSONS_EEAS"; + +CREATE MATERIALIZED VIEW "MV_PERSONS_EEAS" ( + "PER_ID", + "NO_SYSPER", + "TITLE", + "SURNAME", + "BIRTH_NAME", + "FIRST_NAME", + "FIRST_NAME2", + "FIRST_NAME3", + "FIRST_NAME4", + "GENRE", + "DATE_OF_BIRTH", + "PLACE_OF_BIRTH", + "COUNTRY_OF_BIRTH", + "CREATION_DATE", + "MODIFICATION_DATE", + "USERID", + "MONIKER", + "DOMAIN", + "DISPLAY_NAME", + "COMPLET_NAME", + "DISPLAY_SURNAME", + "DISPLAY_FIRST_NAME", + "JCX_ID", + "JOB_ID", + "TOJ_CD", + "JOB_TYPE", + "ASSIGN_START_DATE", + "ASSIGN_END_DATE", + "INS_CD", + "EMAIL", + "WORK_PATTERN_DATE_FROM", + "WORK_PATTERN_DATE_TO", + "WORK_PATTERN_DESC", + "LST_CD", + "LST_CODE", + "LST_BEG_DATE", + "LST_ASS_DATE", + "LST_END_DATE", + "CGR_CD", + "ORG_ID", + "MAIN_ORG_ID", + "ORG_NAME", + "ORG_CD", + "ORG_DESC", + "TOR_ID", + "TYPEOFENTITY_NAME", + "DEL_ID", + "DELEGATION_NAME", + "JOB_TITLE", + "JOB_NAME", + "JOB_NAME_DIRECTORY", + "JOB_PURPOSE", + "RESPONSIBLE", + "HEAD_OF_ENTITY" +) +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT + "PER_ID", + "NO_SYSPER", + "TITLE", + "SURNAME", + "BIRTH_NAME", + "FIRST_NAME", + "FIRST_NAME2", + "FIRST_NAME3", + "FIRST_NAME4", + "GENRE", + "DATE_OF_BIRTH", + "PLACE_OF_BIRTH", + "COUNTRY_OF_BIRTH", + "CREATION_DATE", + "MODIFICATION_DATE", + "USERID", + "MONIKER", + "DOMAIN", + "DISPLAY_NAME", + "COMPLET_NAME", + "DISPLAY_SURNAME", + "DISPLAY_FIRST_NAME", + "JCX_ID", + "JOB_ID", + "TOJ_CD", + "JOB_TYPE", + "ASSIGN_START_DATE", + "ASSIGN_END_DATE", + "INS_CD", + "EMAIL", + "WORK_PATTERN_DATE_FROM", + "WORK_PATTERN_DATE_TO", + "WORK_PATTERN_DESC", + "LST_CD", + "LST_CODE", + "LST_BEG_DATE", + "LST_ASS_DATE", + "LST_END_DATE", + "CGR_CD", + "ORG_ID", + "MAIN_ORG_ID", + "ORG_NAME", + "ORG_CD", + "ORG_DESC", + "TOR_ID", + "TYPEOFENTITY_NAME", + "DEL_ID", + "DELEGATION_NAME", + "JOB_TITLE", + "JOB_NAME", + "JOB_NAME_DIRECTORY", + "JOB_PURPOSE", + "RESPONSIBLE", + "HEAD_OF_ENTITY" + FROM + mv_persons_eeas@easrefn.cc.cec.eu.int; + +CREATE INDEX "IDX_MV_PERSONS_EEAS_PER_ID" ON + "MV_PERSONS_EEAS" ( + "PER_ID" + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/15.RIGD-554-MV_PERSONS_HIST_COM-Recreate.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/15.RIGD-554-MV_PERSONS_HIST_COM-Recreate.sql new file mode 100644 index 0000000..2474333 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/15.RIGD-554-MV_PERSONS_HIST_COM-Recreate.sql @@ -0,0 +1,72 @@ +DROP MATERIALIZED VIEW "MV_PERSONS_HIST_COM"; + +CREATE MATERIALIZED VIEW "MV_PERSONS_HIST_COM" ( + "PER_ID", + "NO_SYSPER", + "TITLE", + "SURNAME", + "BIRTH_NAME", + "FIRST_NAME", + "FIRST_NAME2", + "FIRST_NAME3", + "FIRST_NAME4", + "GENRE", + "DATE_OF_BIRTH", + "PLACE_OF_BIRTH", + "COUNTRY_OF_BIRTH", + "CREATION_DATE", + "MODIFICATION_DATE", + "START_DATE", + "END_DATE", + "USERID", + "MONIKER", + "DOMAINE" +) +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT + "PER_ID", + "NO_SYSPER", + "TITLE", + "SURNAME", + "BIRTH_NAME", + "FIRST_NAME", + "FIRST_NAME2", + "FIRST_NAME3", + "FIRST_NAME4", + "GENRE", + "DATE_OF_BIRTH", + "PLACE_OF_BIRTH", + "COUNTRY_OF_BIRTH", + "CREATION_DATE", + "MODIFICATION_DATE", + "START_DATE", + "END_DATE", + "USERID", + "MONIKER", + "DOMAINE" + FROM + mv_persons_hist_com@easrefn.cc.cec.eu.int; + +CREATE INDEX "IDX_MV_PERSONS_HIST_COM_PER_ID" ON + "MV_PERSONS_HIST_COM" ( + "PER_ID" + ) + COMPUTE STATISTICS; + +CREATE INDEX "IDX_MV_P_H_COM_PER_ID_ST_DT" ON + "MV_PERSONS_HIST_COM" ( + "PER_ID", + "START_DATE" + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/16.RIGD-554-MV_PERSONS_HIST_EEAS-Recreate.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/16.RIGD-554-MV_PERSONS_HIST_EEAS-Recreate.sql new file mode 100644 index 0000000..077004a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/16.RIGD-554-MV_PERSONS_HIST_EEAS-Recreate.sql @@ -0,0 +1,72 @@ +DROP MATERIALIZED VIEW "MV_PERSONS_HIST_EEAS"; + +CREATE MATERIALIZED VIEW "MV_PERSONS_HIST_EEAS" ( + "PER_ID", + "NO_SYSPER", + "TITLE", + "SURNAME", + "BIRTH_NAME", + "FIRST_NAME", + "FIRST_NAME2", + "FIRST_NAME3", + "FIRST_NAME4", + "GENRE", + "DATE_OF_BIRTH", + "PLACE_OF_BIRTH", + "COUNTRY_OF_BIRTH", + "CREATION_DATE", + "MODIFICATION_DATE", + "START_DATE", + "END_DATE", + "USERID", + "MONIKER", + "DOMAIN" +) +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT + "PER_ID", + "NO_SYSPER", + "TITLE", + "SURNAME", + "BIRTH_NAME", + "FIRST_NAME", + "FIRST_NAME2", + "FIRST_NAME3", + "FIRST_NAME4", + "GENRE", + "DATE_OF_BIRTH", + "PLACE_OF_BIRTH", + "COUNTRY_OF_BIRTH", + "CREATION_DATE", + "MODIFICATION_DATE", + "START_DATE", + "END_DATE", + "USERID", + "MONIKER", + "DOMAIN" + FROM + mv_persons_hist_eeas@easrefn.cc.cec.eu.int; + +CREATE INDEX "IDX_MV_PERS_HIST_EEAS_PER_ID" ON + "MV_PERSONS_HIST_EEAS" ( + "PER_ID" + ) + COMPUTE STATISTICS; + +CREATE INDEX "IDX_MV_P_H_EEAS_PER_ID_ST_DT" ON + "MV_PERSONS_HIST_EEAS" ( + "PER_ID", + "START_DATE" + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/17.RIGD-554-MV_RECRUITMENT_PLACES-Recreate.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/17.RIGD-554-MV_RECRUITMENT_PLACES-Recreate.sql new file mode 100644 index 0000000..7f0a0d8 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/17.RIGD-554-MV_RECRUITMENT_PLACES-Recreate.sql @@ -0,0 +1,45 @@ +DROP MATERIALIZED VIEW "MV_RECRUITMENT_PLACES"; + +CREATE MATERIALIZED VIEW "MV_RECRUITMENT_PLACES" ( + "PER_ID", + "RECR_INS_CD", + "DT_RECR", + "LIEU_RECR", + "RECR_CODE_POSTAL", + "RECR_PAY_CD", + "INS_CD", + "DT_CRE", + "DT_MAJ" +) +ORGANIZATION HEAP +PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE QUERY REWRITE AS + SELECT + "PER_ID", + "RECR_INS_CD", + "DT_RECR", + "LIEU_RECR", + "RECR_CODE_POSTAL", + "RECR_PAY_CD", + "INS_CD", + "DT_CRE", + "DT_MAJ" + FROM + mv_recruitment_places@easrefn.cc.cec.eu.int + WHERE + lieu_recr NOT LIKE '%UNKNOWN%'; + +CREATE INDEX "IDX_MV_RECR_PLACES_PER_ID" ON + "MV_RECRUITMENT_PLACES" ( + "PER_ID" + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/18.RIGD-527-entitlements_order_column.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/18.RIGD-527-entitlements_order_column.sql new file mode 100644 index 0000000..f4287e6 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/18.RIGD-527-entitlements_order_column.sql @@ -0,0 +1,31 @@ +ALTER TABLE ENTITLMNT_MAXS_CAT +ADD (ENT_ORDER NUMBER ); + + +update ENTITLMNT_MAXS_CAT set ENT_ORDER =3 where ENTITLMNT_MAX_CAT_ID = 1 ; +update ENTITLMNT_MAXS_CAT set ENT_ORDER =2 where ENTITLMNT_MAX_CAT_ID = 2 ; +update ENTITLMNT_MAXS_CAT set ENT_ORDER =4 where ENTITLMNT_MAX_CAT_ID = 3 ; +update ENTITLMNT_MAXS_CAT set ENT_ORDER =1 where ENTITLMNT_MAX_CAT_ID = 4 ; +update ENTITLMNT_MAXS_CAT set ENT_ORDER =1 where ENTITLMNT_MAX_CAT_ID = 5 ; +update ENTITLMNT_MAXS_CAT set ENT_ORDER =1 where ENTITLMNT_MAX_CAT_ID = 6 ; +update ENTITLMNT_MAXS_CAT set ENT_ORDER =1 where ENTITLMNT_MAX_CAT_ID = 7 ; +update ENTITLMNT_MAXS_CAT set ENT_ORDER =1 where ENTITLMNT_MAX_CAT_ID = 8 ; +update ENTITLMNT_MAXS_CAT set ENT_ORDER =1 where ENTITLMNT_MAX_CAT_ID = 9 ; +update ENTITLMNT_MAXS_CAT set ENT_ORDER =2 where ENTITLMNT_MAX_CAT_ID = 10 ; + + + +ALTER TABLE ENTITLMNT_TYPES_CAT +ADD (ENT_ORDER NUMBER ); + +update ENTITLMNT_TYPES_CAT set ENT_ORDER =2 where ENTITLMNT_TYPE_CAT_ID = 1 ; +update ENTITLMNT_TYPES_CAT set ENT_ORDER =5 where ENTITLMNT_TYPE_CAT_ID = 2 ; +update ENTITLMNT_TYPES_CAT set ENT_ORDER =6 where ENTITLMNT_TYPE_CAT_ID = 3 ; +update ENTITLMNT_TYPES_CAT set ENT_ORDER =1 where ENTITLMNT_TYPE_CAT_ID = 4 ; +update ENTITLMNT_TYPES_CAT set ENT_ORDER =3 where ENTITLMNT_TYPE_CAT_ID = 5 ; +update ENTITLMNT_TYPES_CAT set ENT_ORDER =4 where ENTITLMNT_TYPE_CAT_ID = 6 ; +update ENTITLMNT_TYPES_CAT set ENT_ORDER =7 where ENTITLMNT_TYPE_CAT_ID = 7 ; +update ENTITLMNT_TYPES_CAT set ENT_ORDER =8 where ENTITLMNT_TYPE_CAT_ID = 8 ; +update ENTITLMNT_TYPES_CAT set ENT_ORDER =9 where ENTITLMNT_TYPE_CAT_ID = 9 ; +update ENTITLMNT_TYPES_CAT set ENT_ORDER =10 where ENTITLMNT_TYPE_CAT_ID = 10 ; +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/32.RIGD-537-Request_tables_create.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/32.RIGD-537-Request_tables_create.sql new file mode 100644 index 0000000..4013ffc --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/32.RIGD-537-Request_tables_create.sql @@ -0,0 +1,161 @@ +DROP TABLE request_person_attachments; +DROP TABLE request_persons; +DROP TABLE requests; + +DROP SEQUENCE seq_request_persons; +DROP SEQUENCE seq_request_person_attachments; +DROP SEQUENCE seq_requests; + + + +-- Generated by Oracle SQL Developer Data Modeler 20.2.0.167.1538 +-- at: 2021-03-09 15:35:19 CET +-- site: Oracle Database 11g +-- type: Oracle Database 11g + + + + +CREATE TABLE request_person_attachments ( + request_pers_attachment_id NUMBER NOT NULL, + uuid RAW(16) NOT NULL, + request_person_id NUMBER NOT NULL, + file_name VARCHAR2(200 BYTE) NOT NULL, + created_by NUMBER NOT NULL, + created_at TIMESTAMP NOT NULL, + updated_by NUMBER NOT NULL, + updated_at TIMESTAMP NOT NULL +) +LOGGING; + +CREATE INDEX req_pers_att_dp_id_idx ON + request_person_attachments ( + request_person_id + ASC ) + LOGGING; + +CREATE UNIQUE INDEX req_pers_att_dp_att_id_idx ON + request_person_attachments ( + request_pers_attachment_id + ASC ) + LOGGING; + +ALTER TABLE request_person_attachments ADD CONSTRAINT pk_request_person_attachments PRIMARY KEY ( request_pers_attachment_id ); +CREATE TABLE request_persons ( + request_person_id NUMBER NOT NULL, + family_member_id NUMBER, + request_id NUMBER NOT NULL, + tud_eligibility CHAR(1 CHAR) DEFAULT 'N', + declaredperson CHAR(1 CHAR) DEFAULT 'N', + per_id NUMBER, + rel_per_id NUMBER, + trp_cd NUMBER, + trp_code VARCHAR2(100 CHAR), + claim CHAR(1 CHAR), + claim_approved CHAR(1 CHAR), + created_by NUMBER NOT NULL, + created_at TIMESTAMP NOT NULL, + updated_by NUMBER NOT NULL, + updated_at TIMESTAMP NOT NULL +) +LOGGING; + +ALTER TABLE request_persons ADD CONSTRAINT pk_request_person PRIMARY KEY ( request_person_id ); +CREATE TABLE requests ( + request_id NUMBER NOT NULL, + declaration_id NUMBER, + entitlmnt_type_id NUMBER NOT NULL, + persons_bank_info_id NUMBER, + sm_id RAW(16), + request_number NUMBER, + entitlmnt_type_cat_id NUMBER, + total_amount NUMBER, + total_amount_currency VARCHAR2(3 CHAR), + request_string_id VARCHAR2(100 CHAR), + year NUMBER(4), + state VARCHAR2(16 CHAR), + created_by NUMBER NOT NULL, + created_at TIMESTAMP NOT NULL, + updated_by NUMBER NOT NULL, + updated_at TIMESTAMP NOT NULL +) +LOGGING; + +COMMENT ON COLUMN requests.declaration_id IS + 'we use it just for reference, we do not get any info from this declaration as the declaration can change'; + +COMMENT ON COLUMN requests.entitlmnt_type_id IS + 'foreign key to entitlement_type , i cannot do it in here'; + +COMMENT ON COLUMN requests.request_number IS + 'number to identify the request inside the entitlement , as it can be several requests for on entitlements'; + +COMMENT ON COLUMN requests.entitlmnt_type_cat_id IS + 'foraing key to ENTITLMNT_TYPES_CAT'; + +ALTER TABLE requests ADD CONSTRAINT pk_requests PRIMARY KEY ( request_id ); +ALTER TABLE request_person_attachments + ADD CONSTRAINT fk_req_pers_att_req_pers FOREIGN KEY ( request_person_id ) + REFERENCES request_persons ( request_person_id ) + NOT DEFERRABLE; +ALTER TABLE request_persons + ADD CONSTRAINT fk_request_person_request FOREIGN KEY ( request_id ) + REFERENCES requests ( request_id ) + NOT DEFERRABLE; +ALTER TABLE requests + ADD CONSTRAINT fk_requests_declaration FOREIGN KEY ( declaration_id ) + REFERENCES declaration ( declaration_id ) + NOT DEFERRABLE; +ALTER TABLE requests + ADD CONSTRAINT fk_requests_entitlmnt_types FOREIGN KEY ( entitlmnt_type_id ) + REFERENCES entitlmnt_types ( entitlmnt_type_id ) + NOT DEFERRABLE; + +-- Oracle SQL Developer Data Modeler Summary Report: +-- +-- CREATE TABLE 3 +-- CREATE INDEX 2 +-- CREATE VIEW 0 +-- ALTER TABLE 7 +-- ALTER INDEX 0 +-- ALTER VIEW 0 +-- DROP TABLE 0 +-- DROP INDEX 0 +-- DROP VIEW 0 +-- CREATE PACKAGE 0 +-- CREATE PACKAGE BODY 0 +-- CREATE PROCEDURE 0 +-- CREATE FUNCTION 0 +-- DROP PACKAGE 0 +-- DROP PACKAGE BODY 0 +-- DROP PROCEDURE 0 +-- DROP FUNCTION 0 +-- CREATE TRIGGER 0 +-- ALTER TRIGGER 0 +-- DROP TRIGGER 0 +-- CREATE COLLECTION TYPE 0 +-- CREATE STRUCTURED TYPE 0 +-- CREATE STRUCTURED TYPE BODY 0 +-- DROP TYPE 0 +-- CREATE SEQUENCE 0 +-- ALTER SEQUENCE 0 +-- DROP SEQUENCE 0 +-- CREATE MATERIALIZED VIEW 0 +-- DROP MATERIALIZED VIEW 0 +-- CREATE SYNONYM 0 +-- DROP SYNONYM 0 +-- CREATE DIMENSION 0 +-- DROP DIMENSION 0 +-- CREATE CONTEXT 0 +-- DROP CONTEXT 0 +-- CREATE DIRECTORY 0 +-- DROP DIRECTORY 0 + +-- +-- ERRORS 0 +-- WARNINGS 0 + + + CREATE SEQUENCE seq_request_persons MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE ; + CREATE SEQUENCE seq_request_person_attachments MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE ; + CREATE SEQUENCE seq_requests MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE ; diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/33.RIGD-629-DECLARATION_Alter.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/33.RIGD-629-DECLARATION_Alter.sql new file mode 100644 index 0000000..82f6572 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/33.RIGD-629-DECLARATION_Alter.sql @@ -0,0 +1,20 @@ +ALTER TABLE declaration ADD ( + created_at DATE +); +ALTER TABLE declaration ADD ( + created_by NUMBER +); +ALTER TABLE declaration ADD ( + updated_at DATE +); +ALTER TABLE declaration ADD ( + updated_by NUMBER +); + +update declaration +set created_at = sysdate; + +update declaration +set updated_at = sysdate; + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/34.RIGD-613-MV_PERSON_RELATIVES_RIGHTS_create.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/34.RIGD-613-MV_PERSON_RELATIVES_RIGHTS_create.sql new file mode 100644 index 0000000..b822118 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/34.RIGD-613-MV_PERSON_RELATIVES_RIGHTS_create.sql @@ -0,0 +1,104 @@ +DROP MATERIALIZED VIEW "MV_PERSON_RELATIVES_RIGHTS"; + +CREATE MATERIALIZED VIEW "MV_PERSON_RELATIVES_RIGHTS" AS + SELECT + rig_id, + rig_rec_nbr, + per_id_attrib, + nom_attrib, + prenom_attrib, + dt_naiss_attrib, + sex_attrib, + per_id_benef, + nom_benef, + prenom_benef, + dt_naiss_benef, + sex_benef, + ins_cd, + ins_nom_fra, + ins_nom_eng, + ins_nom_deu, + rgt_id, + code, + droit_fra, + droit_eng, + droit_deu, + evt_id, + evt_fra, + evt_eng, + evt_deu, + date_from, + date_to, + statut, + amount, + dev_cd, + base_salary_pct, + distance, + external_ref, + half_day_flag1, + half_day_flag2, + year_count, + month_count, + allowances_count, + units_count, + origin_period, + payment_period, + pension_rate_pct, + points_count, + right_pct, + rate, + coc_cd, + rtt_id_unit, + rtt_unit_fra, + rtt_unit_eng, + rtt_unit_deu, + rtt_id_type, + rtt_type_fra, + rtt_type_eng, + rtt_type_deu, + rtt_id_rub_code, + rtt_rub_code_fra, + rtt_rub_code_eng, + rtt_rub_code_deu, + rtt_id_rate_type, + rtt_rate_type_fra, + rtt_rate_type_eng, + rtt_rate_type_deu, + rtt_id_rate, + rtt_rate_fra, + rtt_rate_eng, + rtt_rate_deu, + rtt_id_link_type, + rtt_link_type_fra, + rtt_link_type_eng, + rtt_link_type_deu, + rtt_id_inclusive_rate, + rtt_inclusive_rate_fra, + rtt_inclusive_rate_eng, + rtt_inclusive_rate_deu, + rtt_id_ceilling, + rtt_ceilling_fra, + rtt_ceilling_eng, + rtt_ceilling_deu, + origin_cty, + comm, + closure_flag, + locked_flag, + cce_id_reason, + cce_reason_fra, + cce_reason_eng, + cce_reason_deu, + pef_id, + dt_cre, + dt_maj, + src_id, + uniq_id + FROM + mv_person_relatives_rights@easrefn.cc.cec.eu.int; + +CREATE INDEX idx_pers_rel_rght_per_id ON + mv_person_relatives_rights ( + per_id_attrib, + per_id_benef + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/35.RIGD-613-MV_PERSON_RELATIVES_RIGHTS_register.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/35.RIGD-613-MV_PERSON_RELATIVES_RIGHTS_register.sql new file mode 100644 index 0000000..61d62d9 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/35.RIGD-613-MV_PERSON_RELATIVES_RIGHTS_register.sql @@ -0,0 +1,16 @@ +SET DEFINE OFF; +Insert into T_REFRESH_OBJECTS (ID, APP_OBJECT_NAME,PRIORITY,IS_REFRESHED,STATUS,REFRESH_DATE,SYSTEM) +values (28, 'MV_PERSON_RELATIVES_RIGHTS',28,'N','KO',NULL,'EASREFN'); + + +INSERT INTO t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 28, + 'MV_PERSON_RELATIVES_RIGHTS', + 1 +); + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/36.RIGD-613-V_FAMILY_MEMBERS_create.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/36.RIGD-613-V_FAMILY_MEMBERS_create.sql new file mode 100644 index 0000000..ddd901f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/36.RIGD-613-V_FAMILY_MEMBERS_create.sql @@ -0,0 +1,34 @@ +CREATE OR REPLACE VIEW v_family_members ( + "FAMILY_MEMBER_ID", + "PER_ID", + "SURNAME", + "DATE_OF_BIRTH", + "TRP_CODE", + "REL_PER_ID", + "REL_SURNAME", + "REL_FIRST_NAME", + "REL_DATE_OF_BIRTH", + "CHILD_ALLOWANCE_GRANTED" +) AS + SELECT + m.family_member_id, + m.per_id, + m.surname, + m.date_of_birth, + m.trp_code, + m.rel_per_id, + m.rel_surname, + m.rel_first_name, + m.rel_date_of_birth, + nvl2( + r.per_id_attrib, + 1, + 0 + ) child_allowance_granted + FROM + mv_family_members m + LEFT JOIN mv_person_relatives_rights r ON ( m.per_id = r.per_id_attrib + AND m.rel_per_id = per_id_benef + AND r.rgt_id = 1003 + AND r.right_pct > 50 + AND trunc(sysdate) BETWEEN r.date_from AND r.date_to ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/37.RIGD-652-declaration_person_alter.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/37.RIGD-652-declaration_person_alter.sql new file mode 100644 index 0000000..719a5a0 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/37.RIGD-652-declaration_person_alter.sql @@ -0,0 +1,4 @@ +ALTER TABLE declaration_person MODIFY ( + remarks VARCHAR2(3000 CHAR) +); + diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/38.RIGD-652-request_persons_alter.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/38.RIGD-652-request_persons_alter.sql new file mode 100644 index 0000000..f144d0f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/38.RIGD-652-request_persons_alter.sql @@ -0,0 +1,3 @@ +ALTER TABLE request_persons ADD ( + remarks VARCHAR2(3000 CHAR) +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/39.RIGD-652-MV_PERSONS_HIST_COM_recreate.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/39.RIGD-652-MV_PERSONS_HIST_COM_recreate.sql new file mode 100644 index 0000000..f6684e0 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/39.RIGD-652-MV_PERSONS_HIST_COM_recreate.sql @@ -0,0 +1,65 @@ +DROP MATERIALIZED VIEW "MV_PERSONS_HIST_COM"; + +CREATE MATERIALIZED VIEW "MV_PERSONS_HIST_COM" ( + "PER_ID", + "NO_SYSPER", + "TITLE", + "SURNAME", + "BIRTH_NAME", + "FIRST_NAME", + "FIRST_NAME2", + "FIRST_NAME3", + "FIRST_NAME4", + "GENRE", + "DATE_OF_BIRTH", + "PLACE_OF_BIRTH", + "COUNTRY_OF_BIRTH", + "CREATION_DATE", + "MODIFICATION_DATE", + "START_DATE", + "END_DATE", + "USERID", + "MONIKER", + "DOMAINE" +) AS + SELECT + "PER_ID", + "NO_SYSPER", + "TITLE", + "SURNAME", + "BIRTH_NAME", + "FIRST_NAME", + "FIRST_NAME2", + "FIRST_NAME3", + "FIRST_NAME4", + "GENRE", + "DATE_OF_BIRTH", + "PLACE_OF_BIRTH", + replace( + country_of_birth, + 'XXX', + 'ZZZ' + ) AS "COUNTRY_OF_BIRTH", + "CREATION_DATE", + "MODIFICATION_DATE", + "START_DATE", + "END_DATE", + "USERID", + "MONIKER", + "DOMAINE" + FROM + mv_persons_hist_com@easrefn.cc.cec.eu.int; + +CREATE INDEX "IDX_MV_PERSONS_HIST_COM_PER_ID" ON + "MV_PERSONS_HIST_COM" ( + "PER_ID" + ); + +CREATE INDEX "IDX_MV_P_H_COM_PER_ID_ST_DT" ON + "MV_PERSONS_HIST_COM" ( + "PER_ID", + "START_DATE" + ); + +COMMENT ON MATERIALIZED VIEW "MV_PERSONS_HIST_COM" IS + 'snapshot table for snapshot E_RIGHTS.MV_PERSONS_HIST_COM'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/40.RIGD-652-MV_PERSONS_HIST_EEAS_recreate.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/40.RIGD-652-MV_PERSONS_HIST_EEAS_recreate.sql new file mode 100644 index 0000000..1d79565 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/40.RIGD-652-MV_PERSONS_HIST_EEAS_recreate.sql @@ -0,0 +1,65 @@ +DROP MATERIALIZED VIEW "MV_PERSONS_HIST_EEAS"; + +CREATE MATERIALIZED VIEW "MV_PERSONS_HIST_EEAS" ( + "PER_ID", + "NO_SYSPER", + "TITLE", + "SURNAME", + "BIRTH_NAME", + "FIRST_NAME", + "FIRST_NAME2", + "FIRST_NAME3", + "FIRST_NAME4", + "GENRE", + "DATE_OF_BIRTH", + "PLACE_OF_BIRTH", + "COUNTRY_OF_BIRTH", + "CREATION_DATE", + "MODIFICATION_DATE", + "START_DATE", + "END_DATE", + "USERID", + "MONIKER", + "DOMAIN" +) AS + SELECT + "PER_ID", + "NO_SYSPER", + "TITLE", + "SURNAME", + "BIRTH_NAME", + "FIRST_NAME", + "FIRST_NAME2", + "FIRST_NAME3", + "FIRST_NAME4", + "GENRE", + "DATE_OF_BIRTH", + "PLACE_OF_BIRTH", + replace( + country_of_birth, + 'XXX', + 'ZZZ' + ) AS "COUNTRY_OF_BIRTH", + "CREATION_DATE", + "MODIFICATION_DATE", + "START_DATE", + "END_DATE", + "USERID", + "MONIKER", + "DOMAIN" + FROM + mv_persons_hist_eeas@easrefn.cc.cec.eu.int; + +CREATE INDEX "IDX_MV_PERS_HIST_EEAS_PER_ID" ON + "MV_PERSONS_HIST_EEAS" ( + "PER_ID" + ); + +CREATE INDEX "IDX_MV_P_H_EEAS_PER_ID_ST_DT" ON + "MV_PERSONS_HIST_EEAS" ( + "PER_ID", + "START_DATE" + ); + +COMMENT ON MATERIALIZED VIEW "MV_PERSONS_HIST_EEAS" IS + 'snapshot table for snapshot E_RIGHTS.MV_PERSONS_HIST_EEAS'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/41.RIGD-656-REQUESTS_alter.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/41.RIGD-656-REQUESTS_alter.sql new file mode 100644 index 0000000..99caf0f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/41.RIGD-656-REQUESTS_alter.sql @@ -0,0 +1,9 @@ +ALTER TABLE requests ADD ( + flat_rate NUMBER +); +ALTER TABLE requests ADD ( + flat_rate_family NUMBER +); +ALTER TABLE requests ADD ( + flat_rate_currency VARCHAR2(3 CHAR) +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/42.RIGD-656-DECLARATION_alter.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/42.RIGD-656-DECLARATION_alter.sql new file mode 100644 index 0000000..9a68b23 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/42.RIGD-656-DECLARATION_alter.sql @@ -0,0 +1,6 @@ +ALTER TABLE declaration ADD ( + user_created_at DATE +); +ALTER TABLE declaration ADD ( + user_updated_at DATE +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/43.RIGD-658-REQUESTS_alter.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/43.RIGD-658-REQUESTS_alter.sql new file mode 100644 index 0000000..823fa21 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/43.RIGD-658-REQUESTS_alter.sql @@ -0,0 +1,6 @@ +ALTER TABLE requests ADD ( + per_id NUMBER +); +ALTER TABLE requests ADD ( + flat_rate_family_currency VARCHAR2(3 CHAR) +); diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/44.RIGD-658-DECLARATION_alter.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/44.RIGD-658-DECLARATION_alter.sql new file mode 100644 index 0000000..7294210 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/44.RIGD-658-DECLARATION_alter.sql @@ -0,0 +1,3 @@ +ALTER TABLE declaration ADD ( + per_id NUMBER +); diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/45.RIGD-608-V_STAFFMEMBERS.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/45.RIGD-608-V_STAFFMEMBERS.sql new file mode 100644 index 0000000..bcbf703 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/45.RIGD-608-V_STAFFMEMBERS.sql @@ -0,0 +1,226 @@ +CREATE OR REPLACE FORCE VIEW "V_STAFFMEMBERS" ( + "PER_ID", + "FIRST_NAME", + "LAST_NAME", + "GENDER", + "EMAIL", + "BIRTH_CITY", + "BIRTH_COUNTRY_CODE", + "BIRTH_COUNTRY_DESC", + "RECRUITMENT_CITY", + "RECRUITMENT_COUNTRY", + "ORGANIZATION_NAME", + "ORGANIZATION_CITY", + "ORGANIZATION_COUNTRY", + "ORG_ID", + "JOB_ID", + "ASSIGN_START_DATE", + "ASSIGN_END_DATE", + "ORG_CD", + "PRIVATE_EMAIL" +) AS + SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + p.assign_start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM p.assign_end_date) IN ( 9999, + 2099 ) ) THEN + to_date( + NULL + ) + ELSE + p.assign_end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id, + assign_start_date, + assign_end_date + FROM + mv_persons_eeas + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL + FROM + mv_persons_hist_eeas phe + WHERE + coalesce( + phe.start_date, + sysdate + ) = ( + SELECT + coalesce( + MAX(phe2.start_date), + sysdate + ) + FROM + mv_persons_hist_eeas phe2 + WHERE + phe.per_id = phe2.per_id + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities e ON p.org_id = e.org_id + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_emails em ON em.per_id = p.per_id + UNION ALL + SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + assign.start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM assign.end_date) IN ( 2099, + 9999 ) ) THEN + to_date( + NULL + ) + ELSE + assign.end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id + FROM + mv_persons_com + WHERE + mv_persons_com.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL + FROM + mv_persons_hist_com phc + WHERE + coalesce( + phc.start_date, + sysdate + ) = ( + SELECT + coalesce( + MAX(phc2.start_date), + sysdate + ) + FROM + mv_persons_hist_com phc2 + WHERE + phc.per_id = phc2.per_id + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities_hist_com e ON p.org_id = e.org_id + AND trunc(sysdate) < trunc( + e.end_date + ) + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_assignments_com assign ON assign.per_id = p.per_id + AND assign.toj_cd = 'AFF' + LEFT JOIN mv_emails em ON em.per_id = p.per_id; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/46.RIGD-608-V_JOBS.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/46.RIGD-608-V_JOBS.sql new file mode 100644 index 0000000..f5767ca --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/46.RIGD-608-V_JOBS.sql @@ -0,0 +1,220 @@ +CREATE OR REPLACE FORCE VIEW "V_JOBS" ( + "JOB_ID", + "JOB_MOMENT", + "JOB_TYPE", + "PERSONNEL_TYPE_DESC", + "BUDGETARY_LINE", + "JOB_CITY_CODE", + "JOB_CITY_NAME", + "JOB_COUNTRY_CODE", + "JOB_COUNTRY_NAME", + "ORGANIZATION_COUNTRY", + "ORGANIZATION_CITY", + "ORGANIZATION_NAME", + "ORG_ID", + "ASSIGN_START_DATE_TO", + "ASSIGN_END_DATE_TO", + "PER_ID", + "SEVERITY_LEVEL", + "EVACUATION_LEVEL_CODE_ID", + "ALERT_STATUS_ID", + "EVACUATION_LEVEL_CODE", + "ORGANIZATION_COUNTRY_CODE", + "ORGANIZATION_CITY_CODE", + "FAMILY_POSTING_TYPE_ID", + "FAMILY_POSTING_TYPE", + "HOD", + "FAMILY_POSTING_TYPE_CAT", + "BUDGET_LINE" +) AS + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + jobh.job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate) + UNION + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + jobh.job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/47.RIGD-662-REQUESTS_Alter.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/47.RIGD-662-REQUESTS_Alter.sql new file mode 100644 index 0000000..49085b5 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/47.RIGD-662-REQUESTS_Alter.sql @@ -0,0 +1,13 @@ +ALTER TABLE requests ADD ( + includes_staff_member CHAR(1 CHAR) DEFAULT 'N' +); + +ALTER TABLE requests + ADD CONSTRAINT ck_request_incl_stff_mmbr CHECK ( includes_staff_member IN ( 'N', + 'Y' ) ); +ALTER TABLE requests ADD ( + calc_total_amount NUMBER +); +ALTER TABLE requests ADD ( + calc_total_amount_currency VARCHAR2(3 CHAR) +); diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/48.RIGD-665-movement_files_alter.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/48.RIGD-665-movement_files_alter.sql new file mode 100644 index 0000000..99d4545 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/48.RIGD-665-movement_files_alter.sql @@ -0,0 +1,27 @@ +ALTER TABLE movement_files ADD ( + delegation_org_id_from NUMBER +); + +UPDATE movement_files mf +SET + delegation_org_id_from = ( + SELECT + DISTINCT e.main_org_id + FROM + mv_jobs_hist_eeas j + INNER JOIN mv_entities e ON ( j.org_id = e.org_id ) + WHERE + j.job_id = mf.job_id_from + AND e.is_hq = 'N' + ) +WHERE + EXISTS ( + SELECT + 1 + FROM + mv_jobs_hist_eeas j + WHERE + j.job_id = mf.job_id_from + ); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/49.RIGD-665-V_REPORT_MOVEMENT_FILES.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/49.RIGD-665-V_REPORT_MOVEMENT_FILES.sql new file mode 100644 index 0000000..13f9a58 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/49.RIGD-665-V_REPORT_MOVEMENT_FILES.sql @@ -0,0 +1,59 @@ +CREATE OR REPLACE FORCE VIEW "V_REPORT_MOVEMENT_FILES" AS + SELECT + f.movement_file_id, + p.first_name AS first_name, + p.last_name AS last_name, + f.state AS status, + coalesce( + f.start_date, + assign_start_date_to + ) AS startdatefuture, + CASE + WHEN EXTRACT(YEAR FROM(coalesce( + f.estimated_end_date, + assign_end_date_to + ))) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + coalesce( + f.estimated_end_date, + assign_end_date_to + ) + END AS enddatefuture, + initcap( + ci_from.description_en + ) + || ', ' + || ct_from.name_en AS movementfrom, + initcap( + ci_to.description_en + ) + || ', ' + || ct_to.name_en AS movementto, + f.evacuation_status, + budget_line AS budgdet_line_future, + mvtp.movement_type AS movementtype, + f.year AS movementyear, + c.name AS movementcontext, + f.per_id AS perid, + f.job_id_to AS futureassignment, + f.file_id AS fileid, + f.priority, + f.org_cd_from AS allocatedtocurrent, + f.org_cd_to AS allocatedtofuture, + '1' AS reason, + f.delegation_org_id_from + FROM + movement_files f + INNER JOIN movement_context c ON f.context_id = c.movement_context_id + INNER JOIN v_people p ON p.per_id = f.per_id + INNER JOIN movement_types mvtp ON mvtp.movement_type_id = f.movement_type_id + LEFT JOIN mv_countries ct_from ON f.country_code_from = ct_from.country_code + LEFT JOIN mv_cities ci_from ON f.city_code_from = ci_from.city_code + AND ct_from.country_code = ci_from.country_code + LEFT JOIN mv_countries ct_to ON f.country_code_to = ct_to.country_code + LEFT JOIN mv_cities ci_to ON f.city_code_to = ci_to.city_code + AND ct_to.country_code = ci_to.country_code; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/50.RIGD-665-V_JOBS.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/50.RIGD-665-V_JOBS.sql new file mode 100644 index 0000000..7efb859 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/50.RIGD-665-V_JOBS.sql @@ -0,0 +1,195 @@ + CREATE OR REPLACE FORCE VIEW V_JOBS as + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + delstat.org_id delegation_org_id + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + jobh.job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate) + UNION + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + delstat.org_id delegation_org_id + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + jobh.job_status = 'Active' + AND trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate); + diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/51.RIGD-665-aud_movement_files_alter.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/51.RIGD-665-aud_movement_files_alter.sql new file mode 100644 index 0000000..3035cb2 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/51.RIGD-665-aud_movement_files_alter.sql @@ -0,0 +1,3 @@ +ALTER TABLE aud_movement_files ADD ( + delegation_org_id_from NUMBER +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/entitlement_max_cat.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/entitlement_max_cat.sql new file mode 100644 index 0000000..8620553 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/entitlement_max_cat.sql @@ -0,0 +1,12 @@ +UPDATE "ENTITLMNT_MAXS_CAT" SET CODE = 'AIRFREIGHT' WHERE ENTITLMNT_MAX_CAT_ID = 1 ; +UPDATE "ENTITLMNT_MAXS_CAT" SET CODE = 'CAR' WHERE ENTITLMNT_MAX_CAT_ID = 2 ; +UPDATE "ENTITLMNT_MAXS_CAT" SET CODE = 'STORAGE' WHERE ENTITLMNT_MAX_CAT_ID = 3 ; +UPDATE "ENTITLMNT_MAXS_CAT" SET CODE = 'EIS' WHERE ENTITLMNT_MAX_CAT_ID = 4 ; +UPDATE "ENTITLMNT_MAXS_CAT" SET CODE = 'EFS' WHERE ENTITLMNT_MAX_CAT_ID = 5 ; +UPDATE "ENTITLMNT_MAXS_CAT" SET CODE = 'TUD_STAFF_MEMBER' WHERE ENTITLMNT_MAX_CAT_ID = 6 ; +UPDATE "ENTITLMNT_MAXS_CAT" SET CODE = 'INS' WHERE ENTITLMNT_MAX_CAT_ID = 7 ; +UPDATE "ENTITLMNT_MAXS_CAT" SET CODE = 'RES' WHERE ENTITLMNT_MAX_CAT_ID = 8 ; +UPDATE "ENTITLMNT_MAXS_CAT" SET CODE = 'SURFACE' WHERE ENTITLMNT_MAX_CAT_ID = 9 ; +UPDATE "ENTITLMNT_MAXS_CAT" SET CODE = 'TUD_DEPENDENT' WHERE ENTITLMNT_MAX_CAT_ID = 10 ; + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/movement_types_origin_budgetline.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/movement_types_origin_budgetline.sql new file mode 100644 index 0000000..fd4f133 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/movement_types_origin_budgetline.sql @@ -0,0 +1,21 @@ +ALTER TABLE MOVEMENT_TYPES +ADD (BUDGETLINE_JOB VARCHAR(20 CHAR) ); + + + +update MOVEMENT_TYPES set BUDGETLINE_JOB = 'FUTURE' where MOVEMENT_TYPE = 'HQ-DEL'; +update MOVEMENT_TYPES set BUDGETLINE_JOB = 'FUTURE' where MOVEMENT_TYPE = 'HQ-DEL EU'; +update MOVEMENT_TYPES set BUDGETLINE_JOB = 'CURRENT' where MOVEMENT_TYPE = 'DEL-HQ'; +update MOVEMENT_TYPES set BUDGETLINE_JOB = 'CURRENT' where MOVEMENT_TYPE = 'DEL-DEL'; +update MOVEMENT_TYPES set BUDGETLINE_JOB = 'CURRENT' where MOVEMENT_TYPE = 'DEL-DEL EU'; +update MOVEMENT_TYPES set BUDGETLINE_JOB = 'CURRENT' where MOVEMENT_TYPE = 'DEL EU-HQ'; +update MOVEMENT_TYPES set BUDGETLINE_JOB = 'CURRENT' where MOVEMENT_TYPE = 'DEL EU-DEL'; +update MOVEMENT_TYPES set BUDGETLINE_JOB = 'CURRENT' where MOVEMENT_TYPE = 'DEL EU-DEL EU'; +update MOVEMENT_TYPES set BUDGETLINE_JOB = 'NONE' where MOVEMENT_TYPE = 'PoR-HQ'; +update MOVEMENT_TYPES set BUDGETLINE_JOB = 'FUTURE' where MOVEMENT_TYPE = 'PoR-DEL'; +update MOVEMENT_TYPES set BUDGETLINE_JOB = 'FUTURE' where MOVEMENT_TYPE = 'PoR-DEL EU'; +update MOVEMENT_TYPES set BUDGETLINE_JOB = 'NONE' where MOVEMENT_TYPE = 'HQ-Other'; +update MOVEMENT_TYPES set BUDGETLINE_JOB = 'CURRENT' where MOVEMENT_TYPE = 'DEL-Other'; +update MOVEMENT_TYPES set BUDGETLINE_JOB = 'CURRENT' where MOVEMENT_TYPE = 'DEL EU-PoOrg'; +update MOVEMENT_TYPES set BUDGETLINE_JOB = 'NONE' where MOVEMENT_TYPE = 'HQ-PoOrg'; +update MOVEMENT_TYPES set BUDGETLINE_JOB = 'CURRENT' where MOVEMENT_TYPE = 'DEL-PoOrg'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC01/v_people_xxx_issues.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/v_people_xxx_issues.sql new file mode 100644 index 0000000..30d4a7e --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC01/v_people_xxx_issues.sql @@ -0,0 +1,43 @@ + + CREATE OR REPLACE FORCE VIEW "V_PEOPLE" ("PER_ID", "TITLE", "FIRST_NAME", "LAST_NAME", "GENDER", "BIRTH_CITY", "BIRTH_COUNTRY_CODE", "PRIVATE_EMAIL", "DATE_OF_BIRTH") AS + SELECT + per_id, + title, + first_name, + surname, + genre, + place_of_birth, + country_of_birth, + email, + date_of_birth + FROM + ( + SELECT + p.per_id, + p.title, + p.first_name, + p.surname, + p.genre, + p.place_of_birth, + REPLACE( p.country_of_birth, 'XXX' , 'ZZZ' ) country_of_birth, + em.email, + date_of_birth + FROM + mv_persons_hist_com p + LEFT JOIN mv_emails em ON em.per_id = p.per_id + UNION + SELECT + p.per_id, + p.title, + p.first_name, + p.surname, + p.genre, + p.place_of_birth, + REPLACE( p.country_of_birth, 'XXX' , 'ZZZ' ) country_of_birth, + em.email, + date_of_birth + FROM + mv_persons_hist_eeas p + LEFT JOIN mv_emails em ON em.per_id = p.per_id + ); + diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC02/01.RIGD-671-persons_emails_create.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/01.RIGD-671-persons_emails_create.sql new file mode 100644 index 0000000..4f501ca --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/01.RIGD-671-persons_emails_create.sql @@ -0,0 +1,31 @@ +CREATE TABLE persons_emails ( + persons_emails_id NUMBER NOT NULL, + per_id NUMBER NOT NULL, + email_type VARCHAR2(4 CHAR) DEFAULT 'PRIV' NOT NULL, + email VARCHAR2(320 CHAR) NOT NULL, + created_by NUMBER NOT NULL, + created_at DATE NOT NULL, + updated_by NUMBER NOT NULL, + updated_at DATE NOT NULL +) +LOGGING; + +ALTER TABLE persons_emails + ADD CONSTRAINT ck_per_mail_type CHECK ( email_type IN ( 'PRIV', + 'PROF' ) ); + +COMMENT ON COLUMN persons_emails.email_type IS + 'Email type: Either PROF (Profesional) or PRIV (Private) Default PRIV'; + +COMMENT ON COLUMN persons_emails.email IS + 'Email address'; + +ALTER TABLE persons_emails ADD CONSTRAINT persons_emails_pk PRIMARY KEY ( persons_emails_id ); + +CREATE INDEX idx_per_mail_per ON + persons_emails ( + per_id + ASC ) + LOGGING; + +CREATE SEQUENCE seq_persons_emails MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE ; diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC02/02.RIGD-671-v_persons_emails.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/02.RIGD-671-v_persons_emails.sql new file mode 100644 index 0000000..b68c0df --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/02.RIGD-671-v_persons_emails.sql @@ -0,0 +1,14 @@ +CREATE OR REPLACE VIEW v_persons_emails AS + SELECT + per_id, + email_type, + email + FROM + persons_emails + UNION ALL + SELECT + per_id, + ctx_cd, + email + FROM + mv_emails; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC02/03.RIGD-671-mv_emails_index.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/03.RIGD-671-mv_emails_index.sql new file mode 100644 index 0000000..478db79 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/03.RIGD-671-mv_emails_index.sql @@ -0,0 +1,5 @@ + CREATE INDEX idx_mv_emails_per ON + mv_emails ( + per_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC02/04.RIGD-698-REQUESTS_Alter.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/04.RIGD-698-REQUESTS_Alter.sql new file mode 100644 index 0000000..75ede8a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/04.RIGD-698-REQUESTS_Alter.sql @@ -0,0 +1,12 @@ +ALTER TABLE requests ADD ( + comments VARCHAR2(4000 CHAR) +); +ALTER TABLE requests ADD ( + payment_request VARCHAR2(200 CHAR) +); +ALTER TABLE requests ADD ( + payment_order VARCHAR2(200 CHAR) +); +ALTER TABLE requests ADD ( + payment_date DATE +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC02/05.RIGD-707-MV_FAMILY_MEMBERS.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/05.RIGD-707-MV_FAMILY_MEMBERS.sql new file mode 100644 index 0000000..f3633bf --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/05.RIGD-707-MV_FAMILY_MEMBERS.sql @@ -0,0 +1,167 @@ +DROP MATERIALIZED VIEW mv_family_members; + +CREATE MATERIALIZED VIEW mv_family_members AS + SELECT /*+driving_site(r)*/ + to_char(rel_per_id) + || to_char( + per_id, + 'FM0999999999' + ) AS family_member_id, + r.rel_per_id per_id, + r.rel_surname surname, + r.rel_birth_name birth_name, + r.rel_first_name first_name, + r.rel_date_of_birth date_of_birth, + r.rel_gender gender, + r.start_date, + r.end_date, + r.trp_cd, + r.trp_code, + r.per_id rel_per_id, + r.surname rel_surname, + r.birth_name rel_birth_name, + r.first_name rel_first_name, + r.date_of_birth rel_date_of_birth, + r.gender rel_gender, + 'COMREF' source + FROM + mv_person_relatives@easrefn.cc.cec.eu.int r + WHERE + r.trp_cd IN ( 8, + 42, + 7, + 6, + 65, + 41, + 9 ) + AND rel_per_id IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas@easrefn.cc.cec.eu.int + ) + AND rel_per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + UNION ALL + SELECT /*+driving_site(r)*/ + to_char(rel_per_id) + || to_char( + per_id, + 'FM0999999999' + ) AS family_member_id, + r.per_id, + r.surname, + r.birth_name, + r.first_name, + r.date_of_birth, + r.gender, + r.start_date, + r.end_date, + r.trp_cd, + r.trp_code, + r.rel_per_id, + r.rel_surname, + r.rel_birth_name, + r.rel_first_name, + r.rel_date_of_birth, + r.rel_gender, + 'COMREF' source + FROM + mv_person_relatives@easrefn.cc.cec.eu.int r + WHERE + r.trp_cd IN ( 8, + 42, + 7, + 6, + 65, + 41, + 9 ) + AND per_id IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas@easrefn.cc.cec.eu.int + ) + AND rel_per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_dead_eeas@easrefn.cc.cec.eu.int + ) + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_person_relatives@easrefn.cc.cec.eu.int r2 + WHERE + r2.per_id = r.rel_per_id + AND r2.rel_per_id = r.per_id + ) + UNION ALL + SELECT /*+driving_site(cfc)*/ DISTINCT + to_char( + la.per_id + ) + || to_char( + r.per_id, + 'FM0999999999' + ) AS family_member_id, + la.per_id per_id, + la.surname surname, + la.birth_name birth_name, + la.first_name first_name, + la.date_of_birth date_of_birth, + la.genre gender, + cfc.relationship_begin_date start_date, + cfc.relationship_end_date end_date, + CASE family_rel_type_cd + WHEN 'SPO' THEN + 41 + WHEN 'CHL' THEN + 6 + END trp_cd, + CASE family_rel_type_cd + WHEN 'SPO' THEN + 'Spouse' + WHEN 'CHL' THEN + 'Child' + END trp_code, + r.per_id rel_per_id, + r.surname rel_surname, + r.birth_name rel_birth_name, + r.first_name rel_first_name, + r.date_of_birth rel_date_of_birth, + r.genre rel_gender, + 'CSISLA' source + FROM + mv_csisla_family_coverage@easrefn.cc.cec.eu.int cfc + INNER JOIN mv_persons_hist_eeas@easrefn.cc.cec.eu.int la ON ( cfc.la_per_id = la.per_id ) + INNER JOIN mv_persons_hist_eeas@easrefn.cc.cec.eu.int r ON ( cfc.per_id = r.per_id ) + WHERE + family_rel_type_cd <> 'LA' + AND sysdate BETWEEN csisla_start_eligibility AND csisla_end_eligibility + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_person_relatives@easrefn.cc.cec.eu.int pr + WHERE + pr.per_id = r.per_id + AND pr.rel_per_id = la.per_id + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC02/06.v_family_member.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/06.v_family_member.sql new file mode 100644 index 0000000..7f8f702 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/06.v_family_member.sql @@ -0,0 +1,25 @@ + + CREATE OR REPLACE FORCE VIEW "V_FAMILY_MEMBERS" ("FAMILY_MEMBER_ID", "PER_ID", "SURNAME", "DATE_OF_BIRTH", "TRP_CODE", "REL_PER_ID", "REL_SURNAME", "REL_FIRST_NAME", "REL_DATE_OF_BIRTH", "CHILD_ALLOWANCE_GRANTED") AS + SELECT + m.family_member_id, + m.per_id, + m.surname, + m.date_of_birth, + m.trp_code, + m.rel_per_id, + m.rel_surname, + m.rel_first_name, + m.rel_date_of_birth, + nvl2( + r.per_id_attrib, + 'Y', + 'N' + ) child_allowance_granted + FROM + mv_family_members m + LEFT JOIN mv_person_relatives_rights r ON ( m.per_id = r.per_id_attrib + AND m.rel_per_id = per_id_benef + AND r.rgt_id = 1003 + AND r.right_pct > 50 + AND trunc(sysdate) BETWEEN r.date_from AND r.date_to ); + diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC02/07.REQUEST_DECLARATION_NUMBER.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/07.REQUEST_DECLARATION_NUMBER.sql new file mode 100644 index 0000000..8bfc833 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/07.REQUEST_DECLARATION_NUMBER.sql @@ -0,0 +1,2 @@ +ALTER TABLE requests +ADD REQUEST_DECLARATION_NUMBER NUMBER; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC02/08.RIGD-722-V_JOBS.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/08.RIGD-722-V_JOBS.sql new file mode 100644 index 0000000..0391881 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/08.RIGD-722-V_JOBS.sql @@ -0,0 +1,193 @@ + CREATE OR REPLACE FORCE VIEW "V_JOBS" ("JOB_ID", "JOB_MOMENT", "JOB_TYPE", "PERSONNEL_TYPE_DESC", "BUDGETARY_LINE", "JOB_CITY_CODE", "JOB_CITY_NAME", "JOB_COUNTRY_CODE", "JOB_COUNTRY_NAME", "ORGANIZATION_COUNTRY", "ORGANIZATION_CITY", "ORGANIZATION_NAME", "ORG_ID", "ASSIGN_START_DATE_TO", "ASSIGN_END_DATE_TO", "PER_ID", "SEVERITY_LEVEL", "EVACUATION_LEVEL_CODE_ID", "ALERT_STATUS_ID", "EVACUATION_LEVEL_CODE", "ORGANIZATION_COUNTRY_CODE", "ORGANIZATION_CITY_CODE", "FAMILY_POSTING_TYPE_ID", "FAMILY_POSTING_TYPE", "HOD", "FAMILY_POSTING_TYPE_CAT", "BUDGET_LINE", "DELEGATION_ORG_ID") AS + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + delstat.org_id delegation_org_id + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate) + UNION + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + delstat.org_id delegation_org_id + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate); + diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC02/09.RIGD-653-V_RECRUITMENT_PLACES.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/09.RIGD-653-V_RECRUITMENT_PLACES.sql new file mode 100644 index 0000000..3a6b7f0 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/09.RIGD-653-V_RECRUITMENT_PLACES.sql @@ -0,0 +1,16 @@ +CREATE OR REPLACE FORCE VIEW "V_RECRUITMENT_PLACES" ( + "PER_ID", + "LIEU_RECR", + "RECR_PAY_CD", + "NAME_EN" +) AS + SELECT + pa.per_id, + pa.city_name lieu_recr, + pa.country_code recr_pay_cd, + c.name_en + FROM + mv_person_address pa + INNER JOIN mv_countries c ON ( pa.country_code = c.country_code ) + WHERE + tadr_cd = 21; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC02/10.RIGD-653-MV_RECRUITMENT_PLACES_Drop.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/10.RIGD-653-MV_RECRUITMENT_PLACES_Drop.sql new file mode 100644 index 0000000..66738ad --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC02/10.RIGD-653-MV_RECRUITMENT_PLACES_Drop.sql @@ -0,0 +1,16 @@ +DELETE FROM t_app_easrefn_objects +WHERE + app_object_name_id IN ( + SELECT + id + FROM + t_refresh_objects + WHERE + app_object_name = 'MV_RECRUITMENT_PLACES' + ); + +DELETE FROM t_refresh_objects +WHERE + app_object_name = 'MV_RECRUITMENT_PLACES'; + +DROP MATERIALIZED VIEW mv_recruitment_places; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC03/01.RIGD-725-ENTITLEMENT_REQUEST_TEMPLATE.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/01.RIGD-725-ENTITLEMENT_REQUEST_TEMPLATE.sql new file mode 100644 index 0000000..acfa369 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/01.RIGD-725-ENTITLEMENT_REQUEST_TEMPLATE.sql @@ -0,0 +1,4 @@ +INSERT INTO +NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) +VALUES +(12,'ENTITLEMENTS_REQUEST','Your requests has been created in e-Rights','Dear ${FIRST_NAME} ${LAST_NAME},

    E-Rights created your entitlement request(s).

    Please log-in to e-Rights to consult your movement file and your request(s). They will be reviewed and processed.

    Kind regards,
    ','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CREATE','Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC03/01.RIGD-737-MOVEMENT_DOCS_Tables_Sequences_Create.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/01.RIGD-737-MOVEMENT_DOCS_Tables_Sequences_Create.sql new file mode 100644 index 0000000..7bfd78f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/01.RIGD-737-MOVEMENT_DOCS_Tables_Sequences_Create.sql @@ -0,0 +1,139 @@ +-- Generated by Oracle SQL Developer Data Modeler 20.2.0.167.1538 +-- at: 2021-04-20 16:23:02 CEST +-- site: Oracle Database 12cR2 +-- type: Oracle Database 12cR2 + + + + +CREATE TABLE movement_doc_sections ( + movement_doc_sections_id NUMBER NOT NULL, + description VARCHAR2(500 CHAR) NOT NULL, + movement_type_id NUMBER, + movement_context_id NUMBER, + hod CHAR(1 CHAR), + non_family CHAR(1 CHAR), + sort_order NUMBER NOT NULL, + created_by NUMBER NOT NULL, + created_at DATE NOT NULL, + updated_by NUMBER NOT NULL, + updated_at DATE NOT NULL +) +LOGGING; + +ALTER TABLE movement_doc_sections + ADD CHECK ( hod IN ( '', + 'N', + 'Y' ) ); + +ALTER TABLE movement_doc_sections + ADD CHECK ( non_family IN ( '', + 'N', + 'Y' ) ); + +COMMENT ON TABLE movement_doc_sections IS + 'Sections where the document is shown'; + +ALTER TABLE movement_doc_sections ADD CONSTRAINT movement_doc_sections_pk PRIMARY KEY ( movement_doc_sections_id ); +CREATE TABLE movement_docs ( + movement_docs_id NUMBER NOT NULL, + movement_doc_sections_id NUMBER NOT NULL, + description VARCHAR2(3000 CHAR) NOT NULL, + link VARCHAR2(3000 CHAR), + is_link CHAR(1 CHAR) DEFAULT 'N' NOT NULL, + sort_order NUMBER NOT NULL, + created_by NUMBER NOT NULL, + created_at DATE NOT NULL, + updated_by NUMBER NOT NULL, + updated_at DATE NOT NULL +) +LOGGING; + +ALTER TABLE movement_docs + ADD CHECK ( is_link IN ( 'N', + 'Y' ) ); + +COMMENT ON TABLE movement_docs IS + 'A document represents an attachment or a link to a document'; + +ALTER TABLE movement_docs ADD CONSTRAINT movement_docs_pk PRIMARY KEY ( movement_docs_id ); +CREATE TABLE movement_docs_attachments ( + movement_docs_attachment_id NUMBER NOT NULL, + uuid RAW(16) NOT NULL, + movement_docs_id NUMBER NOT NULL, + file_name VARCHAR2(200 CHAR) NOT NULL, + created_by NUMBER NOT NULL, + created_at DATE NOT NULL, + updated_by NUMBER NOT NULL, + updated_at DATE NOT NULL +) +LOGGING; + +COMMENT ON TABLE movement_docs_attachments IS + 'Link attachments to Ananke files'; + +ALTER TABLE movement_docs_attachments ADD CONSTRAINT movement_docs_attachments_pk PRIMARY KEY ( movement_docs_attachment_id ); +ALTER TABLE movement_doc_sections + ADD CONSTRAINT fk_mov_doc_sec_mov_typ FOREIGN KEY ( movement_type_id ) + REFERENCES movement_types ( movement_type_id ) + NOT DEFERRABLE; +ALTER TABLE movement_doc_sections + ADD CONSTRAINT fk_mov_doc_sec_mov_ctx FOREIGN KEY ( movement_context_id ) + REFERENCES movement_context ( movement_context_id ) + NOT DEFERRABLE; +ALTER TABLE movement_docs + ADD CONSTRAINT fk_mov_doc_mov_doc_sec FOREIGN KEY ( movement_doc_sections_id ) + REFERENCES movement_doc_sections ( movement_doc_sections_id ) + NOT DEFERRABLE; +ALTER TABLE movement_docs_attachments + ADD CONSTRAINT fk_mov_doc_att_mov_doc FOREIGN KEY ( movement_docs_id ) + REFERENCES movement_docs ( movement_docs_id ) + NOT DEFERRABLE; + +-- Oracle SQL Developer Data Modeler Summary Report: +-- +-- CREATE TABLE 3 +-- CREATE INDEX 0 +-- CREATE VIEW 0 +-- ALTER TABLE 10 +-- ALTER INDEX 0 +-- ALTER VIEW 0 +-- DROP TABLE 0 +-- DROP INDEX 0 +-- DROP VIEW 0 +-- CREATE PACKAGE 0 +-- CREATE PACKAGE BODY 0 +-- CREATE PROCEDURE 0 +-- CREATE FUNCTION 0 +-- DROP PACKAGE 0 +-- DROP PACKAGE BODY 0 +-- DROP PROCEDURE 0 +-- DROP FUNCTION 0 +-- CREATE TRIGGER 0 +-- ALTER TRIGGER 0 +-- DROP TRIGGER 0 +-- CREATE COLLECTION TYPE 0 +-- CREATE STRUCTURED TYPE 0 +-- CREATE STRUCTURED TYPE BODY 0 +-- DROP TYPE 0 +-- CREATE SEQUENCE 0 +-- ALTER SEQUENCE 0 +-- DROP SEQUENCE 0 +-- CREATE MATERIALIZED VIEW 0 +-- DROP MATERIALIZED VIEW 0 +-- CREATE SYNONYM 0 +-- DROP SYNONYM 0 +-- CREATE DIMENSION 0 +-- DROP DIMENSION 0 +-- CREATE CONTEXT 0 +-- DROP CONTEXT 0 +-- CREATE DIRECTORY 0 +-- DROP DIRECTORY 0 + +-- +-- ERRORS 0 +-- WARNINGS 0 + +CREATE SEQUENCE seq_movement_doc_sections MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE ; +CREATE SEQUENCE seq_movement_docs MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE ; +CREATE SEQUENCE seq_movement_docs_attachments MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE ; diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC03/02.RIGD-586-NOTIFICATION_TEMPLATES-Update.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/02.RIGD-586-NOTIFICATION_TEMPLATES-Update.sql new file mode 100644 index 0000000..e6c35ac --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/02.RIGD-586-NOTIFICATION_TEMPLATES-Update.sql @@ -0,0 +1,39 @@ +update NOTIFICATION_TEMPLATES +set MESSAGE_SUBJECT = 'Reminder: Your End of Contract file from ${MOVEMENT_TO} has been created in e-Rights portal.' +, MESSAGE_BODY ='Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment on the post number: ${JOB_ID_TO} has been created in e-Rights. The foreseen start date of your new assignment is on ${START_DATE}.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.
    +
    +${MOVEMENT_FILE_ID}
    +
    +Kind regards,
    +
    +EEAS.BA.HR.3 Rotation team
    +
    +Email: DEL-POSTINGS@eeas.europa.eu' +WHERE NOTIFICATION_TEMPLATE_TYPE IN ('ROTATION', 'SECONDMENT') +and NOTIFICATION_TEMPLATE_CODE = 'CREATE'; + +update NOTIFICATION_TEMPLATES +set MESSAGE_SUBJECT = 'Your end of assignment file from ${MOVEMENT_FROM} has been created in the e-Rights portal' +, MESSAGE_BODY ='Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} has been created in e-Rights. The foreseen end date of your assignment is on ${START_DATE}.
    +
    +Please, log in to e-Rights using your EU Login and confirm your end of assignment to initiate your entitlements.
    +
    +Should you believe that any correction of your data would be required, please contact us by email. Please do also alert us in case you would be resuming employment with a European Union Institution or Agency directly after the end of your current contract.
    +
    +${MOVEMENT_FILE_ID}
    +
    +Kind regards,
    +
    +EEAS.BA.HR.3 Rotation team
    +
    +Email: DEL-POSTINGS@eeas.europa.eu' +WHERE NOTIFICATION_TEMPLATE_TYPE IN ('EOC') +and NOTIFICATION_TEMPLATE_CODE = 'CREATE'; + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC03/03.RIGD-747-V_JOBS.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/03.RIGD-747-V_JOBS.sql new file mode 100644 index 0000000..714a3f1 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/03.RIGD-747-V_JOBS.sql @@ -0,0 +1,231 @@ +CREATE OR REPLACE FORCE VIEW "V_JOBS" ( + "JOB_ID", + "JOB_MOMENT", + "JOB_TYPE", + "PERSONNEL_TYPE_DESC", + "BUDGETARY_LINE", + "JOB_CITY_CODE", + "JOB_CITY_NAME", + "JOB_COUNTRY_CODE", + "JOB_COUNTRY_NAME", + "ORGANIZATION_COUNTRY", + "ORGANIZATION_CITY", + "ORGANIZATION_NAME", + "ORG_ID", + "ASSIGN_START_DATE_TO", + "ASSIGN_END_DATE_TO", + "PER_ID", + "SEVERITY_LEVEL", + "EVACUATION_LEVEL_CODE_ID", + "ALERT_STATUS_ID", + "EVACUATION_LEVEL_CODE", + "ORGANIZATION_COUNTRY_CODE", + "ORGANIZATION_CITY_CODE", + "FAMILY_POSTING_TYPE_ID", + "FAMILY_POSTING_TYPE", + "HOD", + "FAMILY_POSTING_TYPE_CAT", + "BUDGET_LINE", + "DELEGATION_ORG_ID" +) AS + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + delstat.org_id delegation_org_id + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate) + AND trunc(sysdate) BETWEEN jobh.start_date AND jobh.end_date + UNION + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + delstat.org_id delegation_org_id + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate) + AND trunc(sysdate) BETWEEN jobh.start_date AND jobh.end_date + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_jobs_hist_eeas jobhe + WHERE + jobh.job_id = jobhe.job_id + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC03/04.RIGD-752-ananke-tool-abac.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/04.RIGD-752-ananke-tool-abac.sql new file mode 100644 index 0000000..64eac4d --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/04.RIGD-752-ananke-tool-abac.sql @@ -0,0 +1,63 @@ +create table ANK_ABAC_COMM +( + id RAW(16) not null, + origin VARCHAR2(255) not null, + service VARCHAR2(255) not null, + action VARCHAR2(255) not null, + type VARCHAR2(5) not null, + user_id VARCHAR2(255) not null, + status VARCHAR2(9) not null, + request_sent_at DATE not null, + response_received_at DATE +); + +alter table ANK_ABAC_COMM + add constraint PK_ANK_ABAC_COMM primary key (id); + +alter table ANK_ABAC_COMM + add constraint CHK_ANK_ABAC_COMM_TYPE check (type in ('ASYNC', 'SYNC')); + +alter table ANK_ABAC_COMM + add constraint CHK_ANK_ABAC_COMM_STATUS check (status in ('COMPLETED', 'ERROR', 'PENDING')); + +create table ANK_ABAC_COMM_REQUESTS +( + id RAW(16) not null, + data CLOB not null +); + +alter table ANK_ABAC_COMM_REQUESTS + add constraint PK_ANK_ABAC_COMM_REQUESTS primary key (id); + +alter table ANK_ABAC_COMM_REQUESTS + add constraint FK_ANK_ABAC_COMM_REQUESTS_ID foreign key (id) + references ANK_ABAC_COMM(id) + on delete cascade; + +create table ANK_ABAC_COMM_RESPONSES +( + id RAW(16) not null, + data CLOB not null +); + +alter table ANK_ABAC_COMM_RESPONSES + add constraint PK_ANK_ABAC_COMM_RESPONSES primary key (id); + +alter table ANK_ABAC_COMM_RESPONSES + add constraint FK_ANK_ABAC_COMM_RESPONSES_ID foreign key (id) + references ANK_ABAC_COMM(id) + on delete cascade; + +create table ANK_ABAC_COMM_ERRORS +( + id RAW(16) not null, + data CLOB not null +); + +alter table ANK_ABAC_COMM_ERRORS + add constraint PK_ANK_ABAC_COMM_ERRORS primary key (id); + +alter table ANK_ABAC_COMM_ERRORS + add constraint FK_ANK_ABAC_COMM_ERRORS_ID foreign key (id) + references ANK_ABAC_COMM(id) + on delete cascade; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC03/06.document sections.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/06.document sections.sql new file mode 100644 index 0000000..0cc20bd --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/06.document sections.sql @@ -0,0 +1,8 @@ +INSERT INTO "MOVEMENT_DOC_SECTIONS" (MOVEMENT_DOC_SECTIONS_ID, DESCRIPTION, SORT_ORDER, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) VALUES ('1', 'Important Information for New Recruits', '1', '90284714', TO_DATE('2021-04-22 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '90284714', TO_DATE('2021-04-22 00:00:00', 'YYYY-MM-DD HH24:MI:SS')); +INSERT INTO "MOVEMENT_DOC_SECTIONS" (MOVEMENT_DOC_SECTIONS_ID, DESCRIPTION, SORT_ORDER, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) VALUES ('2', 'Important Information for staff leaving the service (end of contract, resignation, retirement, …)', '2', '90284714', TO_DATE('2021-04-22 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '90284714', TO_DATE('2021-04-22 00:00:00', 'YYYY-MM-DD HH24:MI:SS')); +INSERT INTO "MOVEMENT_DOC_SECTIONS" (MOVEMENT_DOC_SECTIONS_ID, DESCRIPTION, SORT_ORDER, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) VALUES ('3', 'Important information for staff returning to HeadQuarters', '3', '90284714', TO_DATE('2021-04-22 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '90284714', TO_DATE('2021-04-22 00:00:00', 'YYYY-MM-DD HH24:MI:SS')); +INSERT INTO "MOVEMENT_DOC_SECTIONS" (MOVEMENT_DOC_SECTIONS_ID, DESCRIPTION, SORT_ORDER, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) VALUES ('4', 'Important information for staff transfering to another Delegation', '4', '90284714', TO_DATE('2021-04-22 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '90284714', TO_DATE('2021-04-22 00:00:00', 'YYYY-MM-DD HH24:MI:SS')); +INSERT INTO "MOVEMENT_DOC_SECTIONS" (MOVEMENT_DOC_SECTIONS_ID, DESCRIPTION, SORT_ORDER, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) VALUES ('5', 'Important information for staff transfering to a Delegation from HeadQuarters', '5', '90284714', TO_DATE('2021-04-22 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '90284714', TO_DATE('2021-04-22 00:00:00', 'YYYY-MM-DD HH24:MI:SS')); +INSERT INTO "MOVEMENT_DOC_SECTIONS" (MOVEMENT_DOC_SECTIONS_ID, DESCRIPTION, SORT_ORDER, CREATED_BY, CREATED_AT, UPDATED_BY, UPDATED_AT) VALUES ('6', 'Guides and Procedures for all ', '6', '90284714', TO_DATE('2021-04-22 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '90284714', TO_DATE('2021-04-22 00:00:00', 'YYYY-MM-DD HH24:MI:SS')); + + diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC03/07.RIGD-776-V_JOBS.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/07.RIGD-776-V_JOBS.sql new file mode 100644 index 0000000..6881420 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/07.RIGD-776-V_JOBS.sql @@ -0,0 +1,246 @@ +CREATE OR REPLACE FORCE VIEW "V_JOBS" ( + "JOB_ID", + "JOB_MOMENT", + "JOB_TYPE", + "PERSONNEL_TYPE_DESC", + "BUDGETARY_LINE", + "JOB_CITY_CODE", + "JOB_CITY_NAME", + "JOB_COUNTRY_CODE", + "JOB_COUNTRY_NAME", + "ORGANIZATION_COUNTRY", + "ORGANIZATION_CITY", + "ORGANIZATION_NAME", + "ORG_ID", + "ASSIGN_START_DATE_TO", + "ASSIGN_END_DATE_TO", + "PER_ID", + "SEVERITY_LEVEL", + "EVACUATION_LEVEL_CODE_ID", + "ALERT_STATUS_ID", + "EVACUATION_LEVEL_CODE", + "ORGANIZATION_COUNTRY_CODE", + "ORGANIZATION_CITY_CODE", + "FAMILY_POSTING_TYPE_ID", + "FAMILY_POSTING_TYPE", + "HOD", + "FAMILY_POSTING_TYPE_CAT", + "BUDGET_LINE", + "DELEGATION_ORG_ID" +) AS + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + delstat.org_id delegation_org_id + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate) + AND jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_eeas jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + UNION ALL + SELECT + jobh.job_id, + CASE + WHEN trunc( + jobh.start_date + ) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr( + upper( + delstat.family_posting_type + ), + 'NON-FAMILY' + ) > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + delstat.org_id delegation_org_id + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + trunc( + enth.end_date + ) > trunc(sysdate) + AND trunc( + enth.start_date + ) <= trunc(sysdate) + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_jobs_hist_eeas jobhe + WHERE + jobh.job_id = jobhe.job_id + ) + AND jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_com jobh2 + WHERE + jobh2.job_id = jobh.job_id + ); + diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC03/99.RIGD-744-MOVEMENT_FILES_Update.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/99.RIGD-744-MOVEMENT_FILES_Update.sql new file mode 100644 index 0000000..3a393c8 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/99.RIGD-744-MOVEMENT_FILES_Update.sql @@ -0,0 +1,118 @@ +CREATE TABLE bkp$movement_files_rigd744 + AS + SELECT + * + FROM + movement_files; + +BEGIN + FOR lr_mov_file IN ( SELECT + movement_file_id, + non_family_posting, + CASE + WHEN ( + SELECT + family_posting_type_cat + FROM + v_jobs j + WHERE + j.job_id = m.job_id_from + AND j.org_id = m.org_id_from + ) = 'NON_FAMILY' + OR ( + SELECT + family_posting_type_cat + FROM + v_jobs j + WHERE + j.job_id = m.job_id_to + AND j.org_id = m.org_id_to + ) = 'NON_FAMILY' THEN + 'Y' + ELSE + 'N' + END non_fp_computed + FROM + movement_files m + FOR UPDATE OF non_family_posting ) LOOP + UPDATE movement_files + SET + non_family_posting = lr_mov_file.non_fp_computed + WHERE + movement_file_id = lr_mov_file.movement_file_id; + + END LOOP; + + COMMIT; +END; +/ + +/* Rollback */ +--UPDATE movement_files m +--SET +-- non_family_posting = ( +-- SELECT +-- non_family_posting +-- FROM +-- bkp$movement_files_rigd744 bm +-- WHERE +-- bm.movement_file_id = m.movement_file_id +-- ); + +--BEGIN +-- FOR lr_mov_file IN ( WITH jobs AS ( +-- SELECT /*+materialize*/ +-- * +-- FROM +-- ( +-- SELECT +-- job_id, +-- family_posting_type_cat, +-- ROW_NUMBER() +-- OVER(PARTITION BY job_id +-- ORDER BY delegation_org_id NULLS LAST +-- ) rn +-- FROM +-- v_jobs +-- ) +-- WHERE +-- rn = 1 +-- ) +-- SELECT +-- movement_file_id, +-- non_family_posting, +-- CASE +-- WHEN ( +-- SELECT +-- family_posting_type_cat +-- FROM +-- jobs j +-- WHERE +-- j.job_id = m.job_id_from +-- ) = 'NON_FAMILY' +-- OR ( +-- SELECT +-- family_posting_type_cat +-- FROM +-- jobs j +-- WHERE +-- j.job_id = m.job_id_to +-- ) = 'NON_FAMILY' THEN +-- 'Y' +-- ELSE +-- 'N' +-- END non_fp_computed +-- FROM +-- movement_files m +-- FOR UPDATE OF non_family_posting ) LOOP +-- UPDATE movement_files +-- SET +-- non_family_posting = lr_mov_file.non_fp_computed +-- WHERE +-- movement_file_id = lr_mov_file.movement_file_id; +-- +-- END LOOP; +-- +-- COMMIT; +--END; +--/ \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC03/eligibility_reason.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/eligibility_reason.sql new file mode 100644 index 0000000..211d891 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC03/eligibility_reason.sql @@ -0,0 +1,5 @@ +ALTER TABLE DECLARATION_PERSON +ADD (TUD_ELIGIBILITY_REASON VARCHAR2(1000) ); + +ALTER TABLE REQUEST_PERSONS +ADD (TUD_ELIGIBILITY_REASON VARCHAR2(1000) ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC04/01.RIGD-756-MOVEMENT_DOCS_Alter.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/01.RIGD-756-MOVEMENT_DOCS_Alter.sql new file mode 100644 index 0000000..e75fc61 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/01.RIGD-756-MOVEMENT_DOCS_Alter.sql @@ -0,0 +1,6 @@ +ALTER TABLE MOVEMENT_DOCS RENAME COLUMN LINK TO LINK_TEXT; + +ALTER TABLE MOVEMENT_DOCS RENAME COLUMN IS_LINK TO LINK; + +ALTER TABLE MOVEMENT_DOCS +ADD (ENABLED CHAR(1) DEFAULT 'N' ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC04/02.RIGD-778-MOVEMENT_DOCS_SECTIONS_Update.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/02.RIGD-778-MOVEMENT_DOCS_SECTIONS_Update.sql new file mode 100644 index 0000000..ea73c96 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/02.RIGD-778-MOVEMENT_DOCS_SECTIONS_Update.sql @@ -0,0 +1,6 @@ +UPDATE movement_doc_sections SET description = 'Newly recruited Staff to a Delegation' WHERE MOVEMENT_DOC_SECTIONS_ID=1; +UPDATE movement_doc_sections SET description = 'Staff transferring from Headquarters to a Delegation' WHERE MOVEMENT_DOC_SECTIONS_ID=2; +UPDATE movement_doc_sections SET description = 'Staff transferring between Delegations' WHERE MOVEMENT_DOC_SECTIONS_ID=3; +UPDATE movement_doc_sections SET description = 'Staff returning to Headquarters from a Delegation' WHERE MOVEMENT_DOC_SECTIONS_ID=4; +UPDATE movement_doc_sections SET description = 'Staff leaving the Service from a Delegation (end of contract, resignation, retirement, ...)' WHERE MOVEMENT_DOC_SECTIONS_ID=5; +UPDATE movement_doc_sections SET description = 'Guides and Procedures for all Staff' WHERE MOVEMENT_DOC_SECTIONS_ID=6; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC04/03.RIGD-782-UPDATE-ELIGIBILITY-REASON-DEAFULT.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/03.RIGD-782-UPDATE-ELIGIBILITY-REASON-DEAFULT.sql new file mode 100644 index 0000000..b568e44 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/03.RIGD-782-UPDATE-ELIGIBILITY-REASON-DEAFULT.sql @@ -0,0 +1,3 @@ +UPDATE DECLARATION_PERSON + SET TUD_ELIGIBILITY_REASON = ' ' + WHERE TUD_ELIGIBILITY_REASON IS NULL; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC04/04.RIGD-301-UPDATE-EOC-REMINDER-SUBJECT.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/04.RIGD-301-UPDATE-EOC-REMINDER-SUBJECT.sql new file mode 100644 index 0000000..f6ba0ed --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/04.RIGD-301-UPDATE-EOC-REMINDER-SUBJECT.sql @@ -0,0 +1,3 @@ +UPDATE NOTIFICATION_TEMPLATES + SET MESSAGE_SUBJECT = 'Reminder: Your End of Contract file from ${MOVEMENT_FROM} has been created in e-Rights portal.' + WHERE NOTIFICATION_TEMPLATE_ID = 6; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC04/05.RIGD-784-ENTITLMNT_MAXS_CAT_update.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/05.RIGD-784-ENTITLMNT_MAXS_CAT_update.sql new file mode 100644 index 0000000..f1265e5 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/05.RIGD-784-ENTITLMNT_MAXS_CAT_update.sql @@ -0,0 +1,26 @@ +CREATE TABLE bkp$entitlmnt_maxs_cat_rigd784 + AS + SELECT + * + FROM + entitlmnt_maxs_cat; + +UPDATE entitlmnt_maxs_cat +SET + description = 'Vehicle Ceiling' +WHERE + code = 'CAR'; + +UPDATE entitlmnt_maxs_cat +SET + description = 'Entry into Storage Ceiling' +WHERE + code = 'STORAGE'; + +UPDATE entitlmnt_maxs_cat +SET + description = 'Flat Rate' +WHERE + code = 'TUD_STAFF_MEMBER'; + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC04/06.RIGD-789-ENTITLMNT_TYPES_Delete.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/06.RIGD-789-ENTITLMNT_TYPES_Delete.sql new file mode 100644 index 0000000..9d42a41 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/06.RIGD-789-ENTITLMNT_TYPES_Delete.sql @@ -0,0 +1,112 @@ +-- DRAFT movement files only +-- Remove from: ent_maxs +-- ent_types +-- ent types default + +CREATE TABLE bkp$entitlmnt_maxs_rigd789 + AS + SELECT + * + FROM + entitlmnt_maxs; + +SELECT + COUNT(*) +FROM + bkp$entitlmnt_maxs_rigd789; + +CREATE TABLE bkp$entitlmnt_types_rigd789 + AS + SELECT + * + FROM + entitlmnt_types; + +SELECT + COUNT(*) +FROM + bkp$entitlmnt_types_rigd789; + +CREATE TABLE bkp$entitl_types_def_rigd789 + AS + SELECT + * + FROM + entitlmnt_types_default; + +SELECT + COUNT(*) +FROM + bkp$entitl_types_def_rigd789; + +DELETE FROM entitlmnt_maxs +WHERE + entitlmnt_max_cat_id IN ( + SELECT + emc.entitlmnt_max_cat_id + FROM + entitlmnt_maxs_cat emc + WHERE + emc.code IN ( 'EIS', + 'EFS' ) + ) + AND entitlmnt_type_id IN ( + SELECT + et.entitlmnt_type_id + FROM + entitlmnt_types et + WHERE + et.movement_file_id IN ( + SELECT + f.movement_file_id + FROM + movement_files f + WHERE + f.state = 'DRAFT' + ) + AND et.entitlmnt_type_catg_id IN ( + SELECT + etc.entitlmnt_type_cat_id + FROM + entitlmnt_types_cat etc + WHERE + etc.code IN ( 'EIS', + 'EFS' ) + ) + ); + + + +DELETE FROM entitlmnt_types +WHERE + movement_file_id IN ( + SELECT + f.movement_file_id + FROM + movement_files f + WHERE + f.state = 'DRAFT' + ) + AND entitlmnt_type_catg_id IN ( + SELECT + etc.entitlmnt_type_cat_id + FROM + entitlmnt_types_cat etc + WHERE + etc.code IN ( 'EIS', + 'EFS' ) + ); + +DELETE FROM entitlmnt_types_default +WHERE + entitlmnt_type_cat_id IN ( + SELECT + etc.entitlmnt_type_cat_id + FROM + entitlmnt_types_cat etc + WHERE + etc.code IN ( 'EIS', + 'EFS' ) + ); + +COMMIT; diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC04/07.RIGD-800-auditing_tables.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/07.RIGD-800-auditing_tables.sql new file mode 100644 index 0000000..9cf86c4 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/07.RIGD-800-auditing_tables.sql @@ -0,0 +1,63 @@ +ALTER TABLE aud_movement_files ADD ( + created_at DATE, + created_by NUMBER, + updated_by NUMBER, + updated_at DATE, + eod_date DATE +); + +CREATE TABLE aud_declaration ( + declaration_id NUMBER + NOT NULL ENABLE, + rev NUMBER(10, 0) + NOT NULL ENABLE, + revtype NUMBER(3, 0), + movement_file_id NUMBER, + persons_bank_info_id NUMBER, + enable CHAR(1 BYTE) DEFAULT 'N', + state VARCHAR2(20 BYTE), + created_at DATE, + created_by NUMBER, + updated_at DATE, + updated_by NUMBER, + user_created_at DATE, + user_updated_at DATE, + per_id NUMBER +); + +CREATE TABLE aud_requests ( + request_id NUMBER + NOT NULL ENABLE, + rev NUMBER(10, 0) + NOT NULL ENABLE, + revtype NUMBER(3, 0), + declaration_id NUMBER, + entitlmnt_type_id NUMBER + NOT NULL ENABLE, + persons_bank_info_id NUMBER, + sm_id RAW(16), + request_number NUMBER, + entitlmnt_type_cat_id NUMBER, + total_amount NUMBER, + total_amount_currency VARCHAR2(3 CHAR), + request_string_id VARCHAR2(100 CHAR), + year NUMBER(4, 0), + state VARCHAR2(16 CHAR), + created_by NUMBER, + created_at TIMESTAMP(6), + updated_by NUMBER, + updated_at TIMESTAMP(6), + flat_rate NUMBER, + flat_rate_family NUMBER, + flat_rate_currency VARCHAR2(3 CHAR), + per_id NUMBER, + flat_rate_family_currency VARCHAR2(3 CHAR), + includes_staff_member CHAR(1 CHAR) DEFAULT 'N', + calc_total_amount NUMBER, + calc_total_amount_currency VARCHAR2(3 CHAR), + comments VARCHAR2(4000 CHAR), + payment_request VARCHAR2(200 CHAR), + payment_order VARCHAR2(200 CHAR), + payment_date DATE DEFAULT sysdate, + request_declaration_number NUMBER +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC04/08.RIGD-789-ENTITLMNT_TYPES_CAT_update.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/08.RIGD-789-ENTITLMNT_TYPES_CAT_update.sql new file mode 100644 index 0000000..a0d5f66 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/08.RIGD-789-ENTITLMNT_TYPES_CAT_update.sql @@ -0,0 +1,7 @@ +UPDATE entitlmnt_types_cat +SET + mf_type = 'N' +WHERE + code IN ( 'EIS' ); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC04/09.RIGD-849-notification_templates_updates.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/09.RIGD-849-notification_templates_updates.sql new file mode 100644 index 0000000..7a3df52 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/09.RIGD-849-notification_templates_updates.sql @@ -0,0 +1,82 @@ +REM INSERTING into E_RIGHTS.NOTIFICATION_TEMPLATES +SET DEFINE OFF; + +UPDATE notification_templates +SET + default_template = 'N' +WHERE + notification_template_code = 'WITHDRAW'; + +INSERT INTO notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 15, + 'ROTATION', + 'Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} has been withdrawn.
    +
    +Log in to e-Rights to consult your movement file.
    +
    +If you disagree, please contact: DEL-POSTINGS@eeas.europa.eu', + 'EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu', + 'WITHDRAW', + 'Y' +); + +INSERT INTO notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 16, + 'SECONDMENT', + 'Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} has been withdrawn.
    +
    +Log in to e-Rights to consult your movement file.
    +
    +If you disagree, please contact: DEL-POSTINGS@eeas.europa.eu', + 'EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu', + 'WITHDRAW', + 'Y' +); + +INSERT INTO notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 17, + 'EOC', + 'Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} has been withdrawn.
    +
    +Log in to e-Rights to consult your movement file.
    +
    +If you disagree, please contact: DEL-POSTINGS@eeas.europa.eu', + 'EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu', + 'WITHDRAW', + 'Y' +); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC04/10.RIGD-847-notification_templates_updates.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/10.RIGD-847-notification_templates_updates.sql new file mode 100644 index 0000000..c979547 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/10.RIGD-847-notification_templates_updates.sql @@ -0,0 +1,60 @@ +REM INSERTING into NOTIFICATION_TEMPLATES +SET DEFINE OFF; + +UPDATE notification_templates +SET + default_template = 'N' +WHERE + notification_template_code = 'REMINDER_AFTER_CREATE' + AND notification_template_type IN ( 'ROTATION', + 'SECONDMENT' ); + +INSERT INTO notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 18, + 'ROTATION', + 'Reminder: Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment is waiting for your confirmation in e-Rights. In the absence of your confirmation, your assignment will be considered withdrawn.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.
    +
    +Kind regards,', + 'EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu', + 'REMINDER_AFTER_CREATE', + 'Y' +); + +INSERT INTO notification_templates ( + notification_template_id, + notification_template_type, + message_subject, + message_body, + message_signature, + notification_template_code, + default_template +) VALUES ( + 19, + 'SECONDMENT', + 'Reminder: Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.', + 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment is waiting for your confirmation in e-Rights. In the absence of your confirmation, your assignment will be considered withdrawn.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.
    +
    +Kind regards,', + 'EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu', + 'REMINDER_AFTER_CREATE', + 'Y' +); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.0-RC04/insert movement doc.sql b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/insert movement doc.sql new file mode 100644 index 0000000..239eb6c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.0-RC04/insert movement doc.sql @@ -0,0 +1,66 @@ +truncate table MOVEMENT_DOCS_ATTACHMENTS ; +truncate table MOVEMENT_DOCS ; +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (1, 1,'Document 1','https://intranet.eeas.europa.eu/','Y',1,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (2, 2,'Document 2','https://intranet.eeas.europa.eu/','Y',2,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (3, 3,'Document 3','https://intranet.eeas.europa.eu/','Y',3,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (4, 4,'Document 4','https://intranet.eeas.europa.eu/','Y',4,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (5, 5,'Document 5','https://intranet.eeas.europa.eu/','Y',5,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (6, 6,'Document 6','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (7, 1,'Document 7','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (8, 2,'Document 8','https://intranet.eeas.europa.eu/','Y',1,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (9, 3,'Document 9','https://intranet.eeas.europa.eu/','Y',2,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (10,4,'Document 10','https://intranet.eeas.europa.eu/','Y',3,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (11,5,'Document 11','https://intranet.eeas.europa.eu/','Y',4,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (12,6,'Document 12','https://intranet.eeas.europa.eu/','Y',5,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (13,1,'Document 13','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (14,2,'Document 14','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (15,3,'Document 15','https://intranet.eeas.europa.eu/','Y',1,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (16,4,'Document 16','https://intranet.eeas.europa.eu/','Y',2,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (17,5,'Document 17','https://intranet.eeas.europa.eu/','Y',3,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (18,6,'Document 18','https://intranet.eeas.europa.eu/','Y',4,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (19,1,'Document 19','https://intranet.eeas.europa.eu/','Y',5,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (20,2,'Document 20','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (21,3,'Document 21','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (22,4,'Document 22','https://intranet.eeas.europa.eu/','Y',1,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (23,5,'Document 23','https://intranet.eeas.europa.eu/','Y',2,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (24,6,'Document 24','https://intranet.eeas.europa.eu/','Y',3,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (25,1,'Document 25','https://intranet.eeas.europa.eu/','Y',4,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (26,2,'Document 26','https://intranet.eeas.europa.eu/','Y',5,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (27,3,'Document 27','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (28,4,'Document 28','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (29,5,'Document 29','https://intranet.eeas.europa.eu/','Y',1,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (30,6,'Document 30','https://intranet.eeas.europa.eu/','Y',2,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (31,1,'Document 31','https://intranet.eeas.europa.eu/','Y',3,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (32,2,'Document 32','https://intranet.eeas.europa.eu/','Y',4,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (33,3,'Document 33','https://intranet.eeas.europa.eu/','Y',5,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (34,4,'Document 34','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (35,5,'Document 35','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (36,6,'Document 36','https://intranet.eeas.europa.eu/','Y',1,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (37,1,'Document 37','https://intranet.eeas.europa.eu/','Y',2,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (38,2,'Document 38','https://intranet.eeas.europa.eu/','Y',3,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (39,3,'Document 39','https://intranet.eeas.europa.eu/','Y',4,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (40,4,'Document 40','https://intranet.eeas.europa.eu/','Y',5,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (41,5,'Document 41','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (42,6,'Document 42','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (43,1,'Document 43','https://intranet.eeas.europa.eu/','Y',1,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (44,2,'Document 44','https://intranet.eeas.europa.eu/','Y',2,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (45,3,'Document 45','https://intranet.eeas.europa.eu/','Y',3,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (46,4,'Document 46','https://intranet.eeas.europa.eu/','Y',4,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (47,5,'Document 47','https://intranet.eeas.europa.eu/','Y',5,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (48,6,'Document 48','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (49,1,'Document 49','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (50,2,'Document 50','https://intranet.eeas.europa.eu/','Y',1,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (51,3,'Document 51','https://intranet.eeas.europa.eu/','Y',2,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (52,4,'Document 52','https://intranet.eeas.europa.eu/','Y',3,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (53,5,'Document 53','https://intranet.eeas.europa.eu/','Y',4,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (54,6,'Document 54','https://intranet.eeas.europa.eu/','Y',5,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (55,1,'Document 55','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (56,2,'Document 56','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (57,3,'Document 57','https://intranet.eeas.europa.eu/','Y',1,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (58,4,'Document 58','https://intranet.eeas.europa.eu/','Y',2,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (59,5,'Document 59','https://intranet.eeas.europa.eu/','Y',3,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (60,6,'Document 60','https://intranet.eeas.europa.eu/','Y',4,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (61,1,'Document 61','https://intranet.eeas.europa.eu/','Y',5,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (62,2,'Document 62','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); +Insert into MOVEMENT_DOCS (MOVEMENT_DOCS_ID,MOVEMENT_DOC_SECTIONS_ID,DESCRIPTION,LINK_TEXT,LINK,SORT_ORDER,CREATED_BY,CREATED_AT,UPDATED_BY,UPDATED_AT,ENABLED) values (63,3,'Document 63','https://intranet.eeas.europa.eu/','Y',6,1,to_date('23-APR-21','DD-MON-RR'),1,to_date('16-APR-21','DD-MON-RR'),'N'); + diff --git a/e-rights-common/src/main/database/release/archive/2.2.4/01.RIGD-906-v_places_of_origin.sql b/e-rights-common/src/main/database/release/archive/2.2.4/01.RIGD-906-v_places_of_origin.sql new file mode 100644 index 0000000..f5e48a0 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.4/01.RIGD-906-v_places_of_origin.sql @@ -0,0 +1,11 @@ +CREATE OR REPLACE VIEW v_places_of_origin AS + SELECT + pa.per_id, + pa.city_name place_of_origin, + pa.country_code country_code, + c.name_en country_of_origin + FROM + mv_person_address pa + INNER JOIN mv_countries c ON ( pa.country_code = c.country_code ) + WHERE + tadr_cd = 22; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.4/02.RIGD-906-mv_person_address.sql b/e-rights-common/src/main/database/release/archive/2.2.4/02.RIGD-906-mv_person_address.sql new file mode 100644 index 0000000..67d724c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.4/02.RIGD-906-mv_person_address.sql @@ -0,0 +1,127 @@ +DROP MATERIALIZED VIEW mv_person_address; + +CREATE MATERIALIZED VIEW mv_person_address ( + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id +) AS + SELECT + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id + FROM + ( + SELECT + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id, + ROW_NUMBER() + OVER(PARTITION BY per_id, + tadr_cd + ORDER BY decode( + ins_cd, + 'EEAS', + 1, + 'COM', + 2, + 10 + ) DESC + ) row_num -- Take EEAS over COM + FROM + mv_person_address@easrefn.cc.cec.eu.int + ) + WHERE + row_num = 1; + +CREATE INDEX idx_mv_person_address_per_id ON + mv_person_address ( + per_id + ) + COMPUTE STATISTICS; + +COMMENT ON MATERIALIZED VIEW mv_person_address IS + 'snapshot table for snapshot ERIGHTS.MV_PERSON_ADDRESS'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.4/03.RIGD-831-v_empty_flat_rate_entitlements.sql b/e-rights-common/src/main/database/release/archive/2.2.4/03.RIGD-831-v_empty_flat_rate_entitlements.sql new file mode 100644 index 0000000..7a4aee3 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.4/03.RIGD-831-v_empty_flat_rate_entitlements.sql @@ -0,0 +1,57 @@ +CREATE OR REPLACE FORCE VIEW v_empty_flat_rate_entitlements AS + SELECT + et.entitlmnt_type_id, + et.entitlmnt_type_catg_id, + mf.year AS movementyear, + et.movement_type_id, + mt.movement_type AS movementtype, + c.name AS movementcontext, + et.movement_file_id, + et.status, + et.disable_reason, + et.ent_type_default, + et.enable, + mf.per_id, + p.first_name AS first_name, + p.last_name AS last_name, + mf.city_code_from, + mf.city_code_to, + mf.country_code_from, + mf.country_code_to, + initcap( + ci_from.description_en + ) + || ', ' + || ct_from.name_en AS movementfrom, + initcap( + ci_to.description_en + ) + || ', ' + || ct_to.name_en AS movementto, + mf.org_cd_from AS allocatedtocurrent, + mf.org_cd_to AS allocatedtofuture, + mf.org_id_from, + mf.org_id_to, + mf.file_id, + emc.code AS entitlmnt_maxs_cat_code, + etc.code AS entitlmnt_types_cat_code + FROM + entitlmnt_maxs_cat emc + INNER JOIN entitlmnt_maxs em ON ( emc.entitlmnt_max_cat_id = em.entitlmnt_max_cat_id ) + INNER JOIN entitlmnt_types et ON ( em.entitlmnt_type_id = et.entitlmnt_type_id ) + INNER JOIN movement_files mf ON ( et.movement_file_id = mf.movement_file_id ) + INNER JOIN entitlmnt_types_cat etc ON ( et.entitlmnt_type_catg_id = etc.entitlmnt_type_cat_id ) + INNER JOIN movement_types mt ON ( mf.movement_type_id = mt.movement_type_id ) + INNER JOIN v_people p ON ( p.per_id = mf.per_id ) + INNER JOIN movement_context c ON ( mf.context_id = c.movement_context_id ) + LEFT JOIN mv_countries ct_from ON ( mf.country_code_from = ct_from.country_code ) + LEFT JOIN mv_cities ci_from ON ( mf.city_code_from = ci_from.city_code + AND ct_from.country_code = ci_from.country_code ) + LEFT JOIN mv_countries ct_to ON ( mf.country_code_to = ct_to.country_code ) + LEFT JOIN mv_cities ci_to ON ( mf.city_code_to = ci_to.city_code + AND ct_to.country_code = ci_to.country_code ) + WHERE + emc.code IN ( 'TUD_STAFF_MEMBER', + 'SURFACE' ) + AND em.max_value IS NULL; + diff --git a/e-rights-common/src/main/database/release/archive/2.2.4/04.RIGD-866-mv_emails.sql b/e-rights-common/src/main/database/release/archive/2.2.4/04.RIGD-866-mv_emails.sql new file mode 100644 index 0000000..946a826 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.4/04.RIGD-866-mv_emails.sql @@ -0,0 +1,82 @@ +DROP MATERIALIZED VIEW mv_emails; + +CREATE MATERIALIZED VIEW mv_emails ( + per_id, + email, + ctx_cd +) AS + SELECT + per_id, + email, + ctx_cd + FROM + ( + SELECT + per_id, + email, + ctx_cd, + ROW_NUMBER() + OVER(PARTITION BY per_id + ORDER BY start_date DESC + ) rn + FROM + ( + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date + FROM + mv_emails_com@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, + 12 ) + UNION ALL + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date + FROM + mv_emails_eeas@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, + 12 ) + UNION ALL + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date + FROM + mv_emails_hist_eeas@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, + 12 ) + AND end_date = TO_DATE('31-DEC-9999 00:00:00', 'DD-MON-YYYY HH24:MI:SS') + UNION ALL + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date + FROM + mv_emails_hist_com@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, + 12 ) + AND end_date = TO_DATE('31-DEC-9999 00:00:00', 'DD-MON-YYYY HH24:MI:SS') + ) + ) + WHERE + rn = 1; + +CREATE INDEX "IDX_MV_EMAILS_PER" ON + "MV_EMAILS" ( + "PER_ID" + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.2.4/05.RIGD-866-mv_emails-register-dependencies.sql b/e-rights-common/src/main/database/release/archive/2.2.4/05.RIGD-866-mv_emails-register-dependencies.sql new file mode 100644 index 0000000..fa94901 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.2.4/05.RIGD-866-mv_emails-register-dependencies.sql @@ -0,0 +1,5 @@ +REM INSERTING into T_APP_EASREFN_OBJECTS +SET DEFINE OFF; +Insert into T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (11,'MV_EMAILS_HIST_COM',3); +Insert into T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (11,'MV_EMAILS_HIST_EEAS',4); +commit; diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/01.RIGD-820-MV_RATE_EXCHANGE_create.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/01.RIGD-820-MV_RATE_EXCHANGE_create.sql new file mode 100644 index 0000000..0d747d6 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/01.RIGD-820-MV_RATE_EXCHANGE_create.sql @@ -0,0 +1,21 @@ +CREATE MATERIALIZED VIEW mv_rate_exchange + BUILD IMMEDIATE + REFRESH + FORCE + ON DEMAND +AS + SELECT + dev_cd, + dt_cre, + dt_deb, + taux_eur, + dt_fin, + dt_maj + FROM + mv_rate_exchange@easrefn.cc.cec.eu.int; + +CREATE INDEX idx_mv_rate_exch_dev_cd ON + mv_rate_exchange ( + dev_cd + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/01.RIGD-857 update surface ceiling non family posting condition.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/01.RIGD-857 update surface ceiling non family posting condition.sql new file mode 100644 index 0000000..a2f5f13 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/01.RIGD-857 update surface ceiling non family posting condition.sql @@ -0,0 +1,3 @@ +UPDATE ENTITLMNT_MAXS_CAT SET NON_FAMILY_POSTING = 'N', HOD = 'Y' WHERE CODE='SURFACE'; +commit; + diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/02.RIGD-780 add column to declaration - removal option.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/02.RIGD-780 add column to declaration - removal option.sql new file mode 100644 index 0000000..853bbeb --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/02.RIGD-780 add column to declaration - removal option.sql @@ -0,0 +1,6 @@ +ALTER TABLE DECLARATION +ADD (REMOVAL_OPTION VARCHAR2(20 CHAR) ); + + +ALTER TABLE AUD_DECLARATION +ADD (REMOVAL_OPTION VARCHAR2(20 CHAR) ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/02.RIGD-820-MV_RATE_EXCHANGE_register.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/02.RIGD-820-MV_RATE_EXCHANGE_register.sql new file mode 100644 index 0000000..9d9d5e6 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/02.RIGD-820-MV_RATE_EXCHANGE_register.sql @@ -0,0 +1,29 @@ +INSERT INTO t_refresh_objects ( + id, + app_object_name, + priority, + is_refreshed, + status, + refresh_date, + system +) VALUES ( + 29, + 'MV_RATE_EXCHANGE', + 29, + 'N', + 'KO', + NULL, + 'EASREFN' +); + +INSERT INTO t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 29, + 'MV_RATE_EXCHANGE', + 1 +); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/03.RIGD-822-REQUESTS_Alter.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/03.RIGD-822-REQUESTS_Alter.sql new file mode 100644 index 0000000..7288496 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/03.RIGD-822-REQUESTS_Alter.sql @@ -0,0 +1,27 @@ +ALTER TABLE requests ADD ( + surface_rate NUMBER, + surface_currency VARCHAR2(3 CHAR), + car_rate NUMBER, + car_currency VARCHAR2(3 CHAR), + airfreight_rate NUMBER, + airfreight_currency VARCHAR2(3 CHAR), + storage_rate NUMBER, + storage_currency VARCHAR2(3 CHAR), + topup_amount NUMBER, + topup_currency NUMBER, + recovery_amount NUMBER, + recovery_currency NUMBER, + eis_amount NUMBER, + eis_currency NUMBER, + efs_amount NUMBER, + efs_currency NUMBER, + request_option VARCHAR2(16 CHAR), + parent_request_id NUMBER, + request_type VARCHAR2(16 CHAR) +); + +COMMENT ON COLUMN requests.request_option IS + 'Currently HOD can select option 1 or option 2 depending on this option calculation changes in the request grig, option 1: use airfreight and storage ceiling we apply to surface group the air fright celling option 2: surface ceiling we use'; + +COMMENT ON COLUMN requests.parent_request_id IS + 'TOPUP, EIS and recovery are attach to a parent request'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/04.RIGD-822-REQUEST_DETAILS_Create.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/04.RIGD-822-REQUEST_DETAILS_Create.sql new file mode 100644 index 0000000..5601941 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/04.RIGD-822-REQUEST_DETAILS_Create.sql @@ -0,0 +1,39 @@ +CREATE TABLE request_details ( + request_detail_id NUMBER, + request_id NUMBER, + entitlmnt_max_cat_id NUMBER, + request_detail_type VARCHAR2(16 CHAR), + volumen NUMBER, + weight NUMBER, + insurance_rate NUMBER, + value_goods NUMBER, + value_goods_currency VARCHAR2(3 CHAR), + proforma NUMBER, + proforma_currency VARCHAR2(3 CHAR), + invoice NUMBER, + invoice_currency VARCHAR2(3 CHAR), + amount NUMBER, + amount_currency VARCHAR2(3 CHAR), + created_by NUMBER NOT NULL, + created_at TIMESTAMP(6) NOT NULL, + updated_by NUMBER NOT NULL, + updated_at TIMESTAMP(6) NOT NULL +); + +ALTER TABLE request_details ADD CONSTRAINT pk_request_detail PRIMARY KEY ( request_detail_id ); + +ALTER TABLE request_details + ADD CONSTRAINT fk_req_det_req FOREIGN KEY ( request_id ) + REFERENCES requests ( request_id ); + +ALTER TABLE request_details + ADD CONSTRAINT fk_req_det_ent_max_cat FOREIGN KEY ( entitlmnt_max_cat_id ) + REFERENCES entitlmnt_maxs_cat ( entitlmnt_max_cat_id ); + +COMMENT ON COLUMN request_details.entitlmnt_max_cat_id IS + 'Can be null as there are some details not related to a ENTITLMNT_MAX_CAT like the UNFORSEEN COSTS INVOICES'; + +COMMENT ON COLUMN request_details.request_detail_type IS + 'Categorize the details in other , UNFORSEEN COSTS INVOICES'; + +CREATE SEQUENCE seq_request_details MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE; diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/05.RIGD-822-request_detail_attachments_Create.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/05.RIGD-822-request_detail_attachments_Create.sql new file mode 100644 index 0000000..fad5255 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/05.RIGD-822-request_detail_attachments_Create.sql @@ -0,0 +1,30 @@ +CREATE TABLE request_detail_attachments ( + request_detail_attachment_id NUMBER + NOT NULL ENABLE, + uuid RAW(16) + NOT NULL ENABLE, + request_detail_id NUMBER + NOT NULL ENABLE, + request_detail_attachment_type VARCHAR2(16 CHAR), + file_name VARCHAR2(200 BYTE) + NOT NULL ENABLE, + created_by NUMBER + NOT NULL ENABLE, + created_at TIMESTAMP(6) + NOT NULL ENABLE, + updated_by NUMBER + NOT NULL ENABLE, + updated_at TIMESTAMP(6) + NOT NULL ENABLE +); + +ALTER TABLE request_detail_attachments ADD CONSTRAINT pk_request_detail_attachments PRIMARY KEY ( request_detail_attachment_id ); + +ALTER TABLE request_detail_attachments + ADD CONSTRAINT fk_req_det_att_req_det FOREIGN KEY ( request_detail_id ) + REFERENCES request_details ( request_detail_id ); + +COMMENT ON COLUMN request_detail_attachments.request_detail_attachment_type IS + 'Every request detail can have from 0 to 3 attachments. This is the type of attachment: incive, invoice, proof of payent, transport car ownership, estimation'; + +CREATE SEQUENCE seq_request_detail_attachments MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE; diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/06.RIGD-822-app_parameters_Create.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/06.RIGD-822-app_parameters_Create.sql new file mode 100644 index 0000000..0b452bf --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/06.RIGD-822-app_parameters_Create.sql @@ -0,0 +1,10 @@ +CREATE TABLE app_parameters ( + parameter_id NUMBER, + parameter_type VARCHAR2(250) NOT NULL, + parameter_key VARCHAR2(250) NOT NULL, + parameter_value VARCHAR2(250) +); + +ALTER TABLE app_parameters ADD CONSTRAINT pk_app_parameters PRIMARY KEY ( parameter_id ); + +CREATE SEQUENCE seq_app_parameters MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/08.RIGD-832-NOTIFICATION_TEMPLATES_update.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/08.RIGD-832-NOTIFICATION_TEMPLATES_update.sql new file mode 100644 index 0000000..3a7c23e --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/08.RIGD-832-NOTIFICATION_TEMPLATES_update.sql @@ -0,0 +1,31 @@ +update NOTIFICATION_TEMPLATES +set DEFAULT_TEMPLATE = 'N' +where NOTIFICATION_TEMPLATE_TYPE in ('ROTATION', 'SECONDMENT') +and NOTIFICATION_TEMPLATE_CODE = 'CREATE' ; + +SET DEFINE OFF; +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (13,'ROTATION','Your assignment to ${MOVEMENT_TO} file has been created in the e-Rights portal','Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment has been created in e-Rights. The foreseen start date of your new assignment is on ${START_DATE}.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.
    +
    +Should you believe that any correction of your data would be required, please contact us by email.
    +
    +${MOVEMENT_FILE_ID}
    +
    +Kind regards,
    +','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CREATE','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (14,'SECONDMENT','Your assignment to ${MOVEMENT_TO} file has been created in the e-Rights portal','Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment has been created in e-Rights. The foreseen start date of your new assignment is on ${START_DATE}.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.
    +
    +Should you believe that any correction of your data would be required, please contact us by email.
    +
    +${MOVEMENT_FILE_ID}
    +
    +Kind regards,
    +','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CREATE','Y'); +commit; diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/08.RIGD-878-ENTITLEMENT_REQUEST_APPROVED_TEMPLATE.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/08.RIGD-878-ENTITLEMENT_REQUEST_APPROVED_TEMPLATE.sql new file mode 100644 index 0000000..758ba15 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/08.RIGD-878-ENTITLEMENT_REQUEST_APPROVED_TEMPLATE.sql @@ -0,0 +1,9 @@ +INSERT INTO + NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) +VALUES +(20,'ENTITLEMENTS_REQUEST', + 'You request ${REQUEST_STRING_ID} was approved.', + 'Dear ${FIRST_NAME} ${LAST_NAME},

    Your request ${REQUEST_STRING_ID} was approved. It will soon be processed for payment. ' || + 'You will be notified accordingly.

    Please consult the details of your request in your movement file in e-Rights.
    +
    Kind regards,', + 'EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','APPROVED','Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/09. RIGD-855-user_preferences chanes.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/09. RIGD-855-user_preferences chanes.sql new file mode 100644 index 0000000..548ea99 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/09. RIGD-855-user_preferences chanes.sql @@ -0,0 +1,27 @@ +TRUNCATE TABLE USER_PREFERENCES; + +ALTER TABLE USER_PREFERENCES ADD ( + USER_PREFERENCE_ID NUMBER +); + +ALTER TABLE USER_PREFERENCES DROP CONSTRAINT PK_USER_PREFERENCES; + +ALTER TABLE USER_PREFERENCES MODIFY ( + USER_PREFERENCE_ID NOT NULL +); + +ALTER TABLE USER_PREFERENCES + ADD CONSTRAINT PK_USER_PREFERENCES PRIMARY KEY ( USER_PREFERENCE_ID ) + USING INDEX ( + CREATE UNIQUE INDEX PK_USER_PREFERENCES1 ON + USER_PREFERENCES ( + USER_PREFERENCE_ID + ASC ) + ) + ENABLE; + +CREATE SEQUENCE SEQ_USER_PREFERENCES MINVALUE 1 INCREMENT BY 1 START WITH 1; + +DROP INDEX PK_USER_PREFERENCES; + +ALTER INDEX PK_USER_PREFERENCES1 RENAME TO PK_USER_PREFERENCES; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/09.RIGD-878-ENTITLEMENT_REQUEST_REJECTED_TEMPLATE.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/09.RIGD-878-ENTITLEMENT_REQUEST_REJECTED_TEMPLATE.sql new file mode 100644 index 0000000..ac5f42b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/09.RIGD-878-ENTITLEMENT_REQUEST_REJECTED_TEMPLATE.sql @@ -0,0 +1,9 @@ +INSERT INTO + NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) +VALUES +(21,'ENTITLEMENTS_REQUEST', + 'You request ${REQUEST_STRING_ID} was rejected.', + 'Dear ${FIRST_NAME} ${LAST_NAME},

    Your request ${REQUEST_STRING_ID} was rejected. ' || + '

    Please consult the details of your request in your movement file in e-Rights.
    +
    Kind regards,', + 'EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','REJECTED','Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/10.RIGD-888-notification_templates_update.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/10.RIGD-888-notification_templates_update.sql new file mode 100644 index 0000000..e692352 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/10.RIGD-888-notification_templates_update.sql @@ -0,0 +1,9 @@ +UPDATE notification_templates +SET + message_subject = 'Your End of Contract file from ${MOVEMENT_FROM} has been withdrawn in e-Right Portal' +WHERE + notification_template_type = 'EOC' + AND notification_template_code = 'WITHDRAW' + AND default_template = 'Y'; + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/99.RIGD-858 update requestType.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/99.RIGD-858 update requestType.sql new file mode 100644 index 0000000..051a0c5 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/99.RIGD-858 update requestType.sql @@ -0,0 +1,2 @@ +UPDATE REQUESTS SET REQUEST_TYPE = 'TudRequest' WHERE REQUEST_TYPE='TUD'; +commit; diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/RIGD-832 update template hiding job number.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/RIGD-832 update template hiding job number.sql new file mode 100644 index 0000000..62f5c07 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/RIGD-832 update template hiding job number.sql @@ -0,0 +1,32 @@ +update NOTIFICATION_TEMPLATES +set default_template ='N' +where notification_template_code in ('CREATE') +and notification_template_type in ('ROTATION','SECONDMENT') +and notification_template_id < 10; + +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (13,'ROTATION','Your assignment to ${MOVEMENT_TO} file has been created in the e-Rights portal','Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment has been created in e-Rights. The foreseen start date of your new assignment is on ${START_DATE}.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.
    +
    +Should you believe that any correction of your data would be required, please contact us by email.
    +
    +${MOVEMENT_FILE_ID}
    +
    +Kind regards,
    +','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CREATE','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (14,'SECONDMENT','Your assignment to ${MOVEMENT_TO} file has been created in the e-Rights portal','Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment has been created in e-Rights. The foreseen start date of your new assignment is on ${START_DATE}.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.
    +
    +Should you believe that any correction of your data would be required, please contact us by email.
    +
    +${MOVEMENT_FILE_ID}
    +
    +Kind regards,
    +','EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CREATE','Y'); + + diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/RIGD-854 In the List of movement file , the Job Id for destination are NOT Hidden.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/RIGD-854 In the List of movement file , the Job Id for destination are NOT Hidden.sql new file mode 100644 index 0000000..fc1c15f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/RIGD-854 In the List of movement file , the Job Id for destination are NOT Hidden.sql @@ -0,0 +1,66 @@ + + CREATE OR REPLACE FORCE VIEW "V_REPORT_MOVEMENT_FILES" ("MOVEMENT_FILE_ID", "FIRST_NAME", "LAST_NAME", "STATUS", "STARTDATEFUTURE", "ENDDATEFUTURE", "MOVEMENTFROM", "MOVEMENTTO", "EVACUATION_STATUS", "BUDGDET_LINE_FUTURE", "MOVEMENTTYPE", "MOVEMENTYEAR", "MOVEMENTCONTEXT", "PERID", "FUTUREASSIGNMENT", "FILEID", "PRIORITY", "ALLOCATEDTOCURRENT", "ALLOCATEDTOFUTURE", "REASON", "DELEGATION_ORG_ID_FROM") AS + SELECT + f.movement_file_id, + p.first_name AS first_name, + p.last_name AS last_name, + f.state AS status, + coalesce( + f.start_date, + assign_start_date_to + ) AS startdatefuture, + CASE + WHEN EXTRACT(YEAR FROM(coalesce( + f.estimated_end_date, + assign_end_date_to + ))) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + coalesce( + f.estimated_end_date, + assign_end_date_to + ) + END AS enddatefuture, + initcap( + ci_from.description_en + ) + || ', ' + || ct_from.name_en AS movementfrom, + initcap( + ci_to.description_en + ) + || ', ' + || ct_to.name_en AS movementto, + f.evacuation_status, + budget_line AS budgdet_line_future, + mvtp.movement_type AS movementtype, + f.year AS movementyear, + c.name AS movementcontext, + f.per_id AS perid, + CASE + WHEN mvtp.movement_type like '%-HQ' THEN + null + ELSE + f.job_id_to + END AS futureassignment, + f.file_id AS fileid, + f.priority, + f.org_cd_from AS allocatedtocurrent, + f.org_cd_to AS allocatedtofuture, + '1' AS reason, + f.delegation_org_id_from + FROM + movement_files f + INNER JOIN movement_context c ON f.context_id = c.movement_context_id + INNER JOIN v_people p ON p.per_id = f.per_id + INNER JOIN movement_types mvtp ON mvtp.movement_type_id = f.movement_type_id + LEFT JOIN mv_countries ct_from ON f.country_code_from = ct_from.country_code + LEFT JOIN mv_cities ci_from ON f.city_code_from = ci_from.city_code + AND ct_from.country_code = ci_from.country_code + LEFT JOIN mv_countries ct_to ON f.country_code_to = ct_to.country_code + LEFT JOIN mv_cities ci_to ON f.city_code_to = ci_to.city_code + AND ct_to.country_code = ci_to.country_code; + diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/RIGD-887-e-rights-movement-file-is-not-displayed-in.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/RIGD-887-e-rights-movement-file-is-not-displayed-in.sql new file mode 100644 index 0000000..7fe5fd0 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA02/RIGD-887-e-rights-movement-file-is-not-displayed-in.sql @@ -0,0 +1,118 @@ +CREATE OR REPLACE VIEW v_empty_flat_rate_entitlements AS + SELECT + entitlmnt_type_id, + entitlmnt_type_catg_id, + movementyear, + movement_type_id, + movementtype, + movementcontext, + movement_file_id, + status, + disable_reason, + ent_type_default, + enable, + per_id, + first_name, + last_name, + city_code_from, + city_code_to, + country_code_from, + country_code_to, + movementfrom, + movementto, + allocatedtocurrent, + allocatedtofuture, + org_id_from, + org_id_to, + file_id, + entitlmnt_types_cat_code, + LISTAGG(entitlmnt_maxs_cat_code, + ',') WITHIN GROUP( + ORDER BY + entitlmnt_maxs_cat_code + ) AS entitlmnt_maxs_cat_code_list + FROM + ( + SELECT + et.entitlmnt_type_id, + et.entitlmnt_type_catg_id, + mf.year AS movementyear, + et.movement_type_id, + mt.movement_type AS movementtype, + c.name AS movementcontext, + et.movement_file_id, + et.status, + et.disable_reason, + et.ent_type_default, + et.enable, + mf.per_id, + p.first_name AS first_name, + p.last_name AS last_name, + mf.city_code_from, + mf.city_code_to, + mf.country_code_from, + mf.country_code_to, + initcap( + ci_from.description_en + ) + || ', ' + || ct_from.name_en AS movementfrom, + initcap( + ci_to.description_en + ) + || ', ' + || ct_to.name_en AS movementto, + mf.org_cd_from AS allocatedtocurrent, + mf.org_cd_to AS allocatedtofuture, + mf.org_id_from, + mf.org_id_to, + mf.file_id, + emc.code AS entitlmnt_maxs_cat_code, + etc.code AS entitlmnt_types_cat_code + FROM + entitlmnt_maxs_cat emc + INNER JOIN entitlmnt_maxs em ON ( emc.entitlmnt_max_cat_id = em.entitlmnt_max_cat_id ) + INNER JOIN entitlmnt_types et ON ( em.entitlmnt_type_id = et.entitlmnt_type_id ) + INNER JOIN movement_files mf ON ( et.movement_file_id = mf.movement_file_id ) + INNER JOIN entitlmnt_types_cat etc ON ( et.entitlmnt_type_catg_id = etc.entitlmnt_type_cat_id ) + INNER JOIN movement_types mt ON ( mf.movement_type_id = mt.movement_type_id ) + INNER JOIN v_people p ON ( p.per_id = mf.per_id ) + INNER JOIN movement_context c ON ( mf.context_id = c.movement_context_id ) + LEFT JOIN mv_countries ct_from ON ( mf.country_code_from = ct_from.country_code ) + LEFT JOIN mv_cities ci_from ON ( mf.city_code_from = ci_from.city_code + AND ct_from.country_code = ci_from.country_code ) + LEFT JOIN mv_countries ct_to ON ( mf.country_code_to = ct_to.country_code ) + LEFT JOIN mv_cities ci_to ON ( mf.city_code_to = ci_to.city_code + AND ct_to.country_code = ci_to.country_code ) + WHERE + etc.code IN ( 'TUD', + 'REM' ) + AND em.max_value IS NULL + ) + GROUP BY + entitlmnt_type_id, + entitlmnt_type_catg_id, + movementyear, + movement_type_id, + movementtype, + movementcontext, + movement_file_id, + status, + disable_reason, + ent_type_default, + enable, + per_id, + first_name, + last_name, + city_code_from, + city_code_to, + country_code_from, + country_code_to, + movementfrom, + movementto, + allocatedtocurrent, + allocatedtofuture, + org_id_from, + org_id_to, + file_id, + entitlmnt_types_cat_code; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA05/01.RIGD-902-ENTITLEMENT-REQUEST-PAYMENT.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA05/01.RIGD-902-ENTITLEMENT-REQUEST-PAYMENT.sql new file mode 100644 index 0000000..9a43619 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA05/01.RIGD-902-ENTITLEMENT-REQUEST-PAYMENT.sql @@ -0,0 +1,17 @@ +UPDATE notification_templates +SET + message_subject = '${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID}: processed', + message_body = 'Dear ${FIRST_NAME} ${LAST_NAME},

    ' + || 'The payment related to your ${ENTITLEMENT_TYPE} request was verified and processed.
    ' + || 'The payment will be credited to your bank account indicated in the request.
    ' + || 'Please note that it may take several days before the payment is credited on your bank account.
    ' + || 'All related supporting documents are stored in e-RIGHTS, while the originals must be kept by the Official for a maximum duration of 2 years.

    ' + || 'Log in to e-Rights to consult your request.
    ' + || 'Kind regards,

    ', + message_signature = 'EEAS BA.BS.4 Support to Delegation
    Email: DEL-POSTINGS@eeas.europa.eu', + + default_template = 'Y' +WHERE + notification_template_id = 22 + + commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA05/01.RIGD-906-v_places_of_origin.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA05/01.RIGD-906-v_places_of_origin.sql new file mode 100644 index 0000000..f5e48a0 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA05/01.RIGD-906-v_places_of_origin.sql @@ -0,0 +1,11 @@ +CREATE OR REPLACE VIEW v_places_of_origin AS + SELECT + pa.per_id, + pa.city_name place_of_origin, + pa.country_code country_code, + c.name_en country_of_origin + FROM + mv_person_address pa + INNER JOIN mv_countries c ON ( pa.country_code = c.country_code ) + WHERE + tadr_cd = 22; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA05/02.RIGD-906-mv_person_address.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA05/02.RIGD-906-mv_person_address.sql new file mode 100644 index 0000000..67d724c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA05/02.RIGD-906-mv_person_address.sql @@ -0,0 +1,127 @@ +DROP MATERIALIZED VIEW mv_person_address; + +CREATE MATERIALIZED VIEW mv_person_address ( + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id +) AS + SELECT + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id + FROM + ( + SELECT + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id, + ROW_NUMBER() + OVER(PARTITION BY per_id, + tadr_cd + ORDER BY decode( + ins_cd, + 'EEAS', + 1, + 'COM', + 2, + 10 + ) DESC + ) row_num -- Take EEAS over COM + FROM + mv_person_address@easrefn.cc.cec.eu.int + ) + WHERE + row_num = 1; + +CREATE INDEX idx_mv_person_address_per_id ON + mv_person_address ( + per_id + ) + COMPUTE STATISTICS; + +COMMENT ON MATERIALIZED VIEW mv_person_address IS + 'snapshot table for snapshot ERIGHTS.MV_PERSON_ADDRESS'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/03.RIGD-931-V_STAFFMEMBERS.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/03.RIGD-931-V_STAFFMEMBERS.sql new file mode 100644 index 0000000..2c0a35c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/03.RIGD-931-V_STAFFMEMBERS.sql @@ -0,0 +1,214 @@ +CREATE OR REPLACE FORCE VIEW v_staffmembers AS + SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + p.assign_start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM p.assign_end_date) IN ( 9999, + 2099 ) ) THEN + to_date( + NULL + ) + ELSE + p.assign_end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email, + o.place_of_origin origin_city, + o.country_code origin_country_code, + o.country_of_origin origin_country_desc + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id, + assign_start_date, + assign_end_date + FROM + mv_persons_eeas + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL + FROM + mv_persons_hist_eeas phe + WHERE + coalesce( + phe.start_date, + sysdate + ) = ( + SELECT + coalesce( + MAX(phe2.start_date), + sysdate + ) + FROM + mv_persons_hist_eeas phe2 + WHERE + phe.per_id = phe2.per_id + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities e ON p.org_id = e.org_id + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_emails em ON em.per_id = p.per_id + LEFT JOIN v_places_of_origin o ON p.per_id = o.per_id + UNION ALL + SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + assign.start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM assign.end_date) IN ( 2099, + 9999 ) ) THEN + to_date( + NULL + ) + ELSE + assign.end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email, + o.place_of_origin origin_city, + o.country_code origin_country_code, + o.country_of_origin origin_country_desc + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id + FROM + mv_persons_com + WHERE + mv_persons_com.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL + FROM + mv_persons_hist_com phc + WHERE + coalesce( + phc.start_date, + sysdate + ) = ( + SELECT + coalesce( + MAX(phc2.start_date), + sysdate + ) + FROM + mv_persons_hist_com phc2 + WHERE + phc.per_id = phc2.per_id + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities_hist_com e ON p.org_id = e.org_id + AND trunc(sysdate) < trunc( + e.end_date + ) + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_assignments_com assign ON assign.per_id = p.per_id + AND assign.toj_cd = 'AFF' + LEFT JOIN mv_emails em ON em.per_id = p.per_id + LEFT JOIN v_places_of_origin o ON p.per_id = o.per_id; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/04.RIGD-930-REQUESTS_DECLARATION_Alter.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/04.RIGD-930-REQUESTS_DECLARATION_Alter.sql new file mode 100644 index 0000000..214bc5f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/04.RIGD-930-REQUESTS_DECLARATION_Alter.sql @@ -0,0 +1,12 @@ +ALTER TABLE requests + ADD CONSTRAINT fk_requests_persons_bank_info FOREIGN KEY ( persons_bank_info_id ) + REFERENCES persons_bank_info ( persons_bank_info_id ) + NOT DEFERRABLE; + +ALTER TABLE requests MODIFY + persons_bank_info_id NOT NULL; + +ALTER TABLE declaration + ADD CONSTRAINT fk_declaration_persons_bank_info FOREIGN KEY ( persons_bank_info_id ) + REFERENCES persons_bank_info ( persons_bank_info_id ) + NOT DEFERRABLE; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/05.RIGD-925-NOTIFICATIONS.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/05.RIGD-925-NOTIFICATIONS.sql new file mode 100644 index 0000000..9e9e111 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/05.RIGD-925-NOTIFICATIONS.sql @@ -0,0 +1,8 @@ +UPDATE NOTIFICATION_TEMPLATES SET NOTIFICATION_TEMPLATE_CODE = 'CREATE_REQUEST' WHERE NOTIFICATION_TEMPLATE_ID = 12; +UPDATE NOTIFICATION_TEMPLATES SET NOTIFICATION_TEMPLATE_CODE = 'APPROVED_REQUEST' WHERE NOTIFICATION_TEMPLATE_ID = 20; +UPDATE NOTIFICATION_TEMPLATES SET NOTIFICATION_TEMPLATE_CODE = 'REJECTED_REQUEST' WHERE NOTIFICATION_TEMPLATE_ID = 21; +UPDATE NOTIFICATION_TEMPLATES SET NOTIFICATION_TEMPLATE_CODE = 'PAID_REQUEST' WHERE NOTIFICATION_TEMPLATE_ID = 22; + +UPDATE NOTIFICATIONS SET NOTIFICATION_TYPE = 'REQUEST' WHERE NOTIFICATION_TEMPLATE_ID in (20,21,22); + +commit ; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/06.RIGD-943-NOTIFICATIONS_Update.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/06.RIGD-943-NOTIFICATIONS_Update.sql new file mode 100644 index 0000000..3cacdf6 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/06.RIGD-943-NOTIFICATIONS_Update.sql @@ -0,0 +1,37 @@ +CREATE TABLE bkp$notifications_rigd943 + AS + SELECT + * + FROM + notifications; + +BEGIN + FOR lr IN ( SELECT + n.notification_id, + MAX(r.request_id) request_id + FROM + notifications n + INNER JOIN declaration d ON ( n.notification_entity_id = d.movement_file_id ) + INNER JOIN requests r ON ( r.declaration_id = d.declaration_id ) + WHERE + n.notification_template_id IN ( 20, + 21, + 22 ) + AND n.notification_entity_id IS NOT NULL + AND r.request_type = 'TudRequest' + GROUP BY + n.notification_id + ORDER BY + 1 + /*FOR UPDATE OF n.notification_entity_id*/ ) LOOP + UPDATE notifications + SET + notification_entity_id = lr.request_id + WHERE + notification_id = lr.notification_id; + + END LOOP; + + COMMIT; +END; +/ \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/RIGD-887-e-rights-movement-file-is-not-displayed-in.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/RIGD-887-e-rights-movement-file-is-not-displayed-in.sql new file mode 100644 index 0000000..d3f5baa --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/RIGD-887-e-rights-movement-file-is-not-displayed-in.sql @@ -0,0 +1,112 @@ +CREATE OR REPLACE VIEW "V_EMPTY_FLAT_RATE_ENTITLEMENTS" AS + SELECT + "ENTITLMNT_TYPE_ID", + "ENTITLMNT_TYPE_CATG_ID", + "MOVEMENTYEAR", + "MOVEMENT_TYPE_ID", + "MOVEMENTTYPE", + "MOVEMENTCONTEXT", + "MOVEMENT_FILE_ID", + "STATUS", + "DISABLE_REASON", + "ENT_TYPE_DEFAULT", + "ENABLE", + "PER_ID", + "FIRST_NAME", + "LAST_NAME", + "CITY_CODE_FROM", + "CITY_CODE_TO", + "COUNTRY_CODE_FROM", + "COUNTRY_CODE_TO", + "MOVEMENTFROM", + "MOVEMENTTO", + "ALLOCATEDTOCURRENT", + "ALLOCATEDTOFUTURE", + "ORG_ID_FROM", + "ORG_ID_TO", + "FILE_ID", + "ENTITLMNT_TYPES_CAT_CODE", + LISTAGG(entitlmnt_maxs_cat_code, ',') WITHIN GROUP( + ORDER BY + entitlmnt_maxs_cat_code + ) AS entitlmnt_maxs_cat_code_list + FROM + ( + SELECT + et.entitlmnt_type_id, + et.entitlmnt_type_catg_id, + mf.year AS movementyear, + et.movement_type_id, + mt.movement_type AS movementtype, + c.name AS movementcontext, + et.movement_file_id, + et.status, + et.disable_reason, + et.ent_type_default, + et.enable, + mf.per_id, + p.first_name AS first_name, + p.last_name AS last_name, + mf.city_code_from, + mf.city_code_to, + mf.country_code_from, + mf.country_code_to, + initcap(ci_from.description_en) + || ', ' + || ct_from.name_en AS movementfrom, + initcap(ci_to.description_en) + || ', ' + || ct_to.name_en AS movementto, + mf.org_cd_from AS allocatedtocurrent, + mf.org_cd_to AS allocatedtofuture, + mf.org_id_from, + mf.org_id_to, + mf.file_id, + emc.code AS entitlmnt_maxs_cat_code, + etc.code AS entitlmnt_types_cat_code + FROM + entitlmnt_maxs_cat emc + INNER JOIN entitlmnt_maxs em ON ( emc.entitlmnt_max_cat_id = em.entitlmnt_max_cat_id ) + INNER JOIN entitlmnt_types et ON ( em.entitlmnt_type_id = et.entitlmnt_type_id ) + INNER JOIN movement_files mf ON ( et.movement_file_id = mf.movement_file_id ) + INNER JOIN entitlmnt_types_cat etc ON ( et.entitlmnt_type_catg_id = etc.entitlmnt_type_cat_id ) + INNER JOIN movement_types mt ON ( mf.movement_type_id = mt.movement_type_id ) + INNER JOIN v_people p ON ( p.per_id = mf.per_id ) + INNER JOIN movement_context c ON ( mf.context_id = c.movement_context_id ) + LEFT JOIN mv_countries ct_from ON ( mf.country_code_from = ct_from.country_code ) + LEFT JOIN mv_cities ci_from ON ( mf.city_code_from = ci_from.city_code + AND ct_from.country_code = ci_from.country_code ) + LEFT JOIN mv_countries ct_to ON ( mf.country_code_to = ct_to.country_code ) + LEFT JOIN mv_cities ci_to ON ( mf.city_code_to = ci_to.city_code + AND ct_to.country_code = ci_to.country_code ) + WHERE + etc.code IN ( 'TUD', 'REM' ) + AND em.max_value IS NULL + ) + GROUP BY + "ENTITLMNT_TYPE_ID", + "ENTITLMNT_TYPE_CATG_ID", + "MOVEMENTYEAR", + "MOVEMENT_TYPE_ID", + "MOVEMENTTYPE", + "MOVEMENTCONTEXT", + "MOVEMENT_FILE_ID", + "STATUS", + "DISABLE_REASON", + "ENT_TYPE_DEFAULT", + "ENABLE", + "PER_ID", + "FIRST_NAME", + "LAST_NAME", + "CITY_CODE_FROM", + "CITY_CODE_TO", + "COUNTRY_CODE_FROM", + "COUNTRY_CODE_TO", + "MOVEMENTFROM", + "MOVEMENTTO", + "ALLOCATEDTOCURRENT", + "ALLOCATEDTOFUTURE", + "ORG_ID_FROM", + "ORG_ID_TO", + "FILE_ID", + "ENTITLMNT_TYPES_CAT_CODE"; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/user_preferences chanes.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/user_preferences chanes.sql new file mode 100644 index 0000000..5e99d55 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA06/user_preferences chanes.sql @@ -0,0 +1,30 @@ + truncate USER_PREFERENCES; + ALTER TABLE USER_PREFERENCES +ADD (USER_PREFERENCE_ID NUMBER ); + +ALTER TABLE USER_PREFERENCES +DROP CONSTRAINT PK_USER_PREFERENCES; + +ALTER TABLE USER_PREFERENCES +MODIFY (USER_PREFERENCE_ID NOT NULL); + +ALTER TABLE USER_PREFERENCES +ADD CONSTRAINT PK_USER_PREFERENCES PRIMARY KEY +( + USER_PREFERENCE_ID +) +USING INDEX +( + CREATE UNIQUE INDEX PK_USER_PREFERENCES1 ON USER_PREFERENCES (USER_PREFERENCE_ID ASC) +) + ENABLE; + + + + CREATE SEQUENCE SEQ_USER_PREFERENCES MINVALUE 1 INCREMENT BY 1 START WITH 1 ; + + + DROP INDEX PK_USER_PREFERENCES; + + ALTER INDEX PK_USER_PREFERENCES1 +RENAME TO PK_USER_PREFERENCES; diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA07/01.RIGD-954-REQUEST_DETAILS_Alter.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA07/01.RIGD-954-REQUEST_DETAILS_Alter.sql new file mode 100644 index 0000000..b114a83 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA07/01.RIGD-954-REQUEST_DETAILS_Alter.sql @@ -0,0 +1,14 @@ +ALTER TABLE request_details ADD ( + exchange_rate NUMBER DEFAULT 1 +); + +ALTER TABLE request_details ADD ( + exchange_start_date DATE DEFAULT sysdate +); + +ALTER TABLE request_details ADD ( + exchane_currency VARCHAR2(3) DEFAULT 'EUR' +); + +ALTER TABLE REQUEST_DETAILS +ADD (REQUEST_DETAIL_TYPE_ORDER NUMBER ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA07/02.RIGD-954-mv_rate_exchange.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA07/02.RIGD-954-mv_rate_exchange.sql new file mode 100644 index 0000000..76d2114 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA07/02.RIGD-954-mv_rate_exchange.sql @@ -0,0 +1,51 @@ +DROP MATERIALIZED VIEW mv_rate_exchange; + +CREATE MATERIALIZED VIEW mv_rate_exchange ( + uniqid, + dev_cd, + dt_cre, + dt_deb, + taux_eur, + dt_fin, + dt_maj +) AS + SELECT + ora_hash(dev_cd) + to_number( + to_char( + dt_deb, + 'YYYYMMDD' + ) + ) uniqid, + dev_cd, + dt_cre, + dt_deb, + taux_eur, + dt_fin, + dt_maj + FROM + mv_rate_exchange@easrefn.cc.cec.eu.int + UNION + SELECT + ora_hash( + 'EUR' + ) + 20000101 uniqid, + 'EUR' dev_cd, + trunc( + sysdate, + 'MM' + ) dt_cre, + trunc( + sysdate, + 'MM' + ) dt_deb, + 1 taux_eur, + last_day(sysdate) dt_fin, + last_day(sysdate) dt_maj + FROM + dual; + +CREATE INDEX idx_mv_rate_exch_dev_cd ON + mv_rate_exchange ( + dev_cd + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA07/20.RIGD-1061-Triggers on requests tables.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA07/20.RIGD-1061-Triggers on requests tables.sql new file mode 100644 index 0000000..e386b24 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA07/20.RIGD-1061-Triggers on requests tables.sql @@ -0,0 +1,79 @@ +CREATE OR REPLACE TRIGGER trg_briu_request_persons BEFORE + INSERT OR UPDATE ON request_persons + REFERENCING + OLD AS old + NEW AS new + FOR EACH ROW +DECLARE + lkn_user_id_boundary CONSTANT NUMBER := -10000000; +BEGIN + IF :new.created_by < lkn_user_id_boundary THEN + :new.created_by := lkn_user_id_boundary; + END IF; + + IF :new.updated_by < lkn_user_id_boundary THEN + :new.updated_by := lkn_user_id_boundary; + END IF; + +END trg_briu_request_persons; +/ + +CREATE OR REPLACE TRIGGER trg_briu_req_pers_attach BEFORE + INSERT OR UPDATE ON request_person_attachments + REFERENCING + OLD AS old + NEW AS new + FOR EACH ROW +DECLARE + lkn_user_id_boundary CONSTANT NUMBER := -10000000; +BEGIN + IF :new.created_by < lkn_user_id_boundary THEN + :new.created_by := lkn_user_id_boundary; + END IF; + + IF :new.updated_by < lkn_user_id_boundary THEN + :new.updated_by := lkn_user_id_boundary; + END IF; + +END trg_briu_req_pers_attach; +/ + +CREATE OR REPLACE TRIGGER trg_briu_request_details BEFORE + INSERT OR UPDATE ON request_details + REFERENCING + OLD AS old + NEW AS new + FOR EACH ROW +DECLARE + lkn_user_id_boundary CONSTANT NUMBER := -10000000; +BEGIN + IF :new.created_by < lkn_user_id_boundary THEN + :new.created_by := lkn_user_id_boundary; + END IF; + + IF :new.updated_by < lkn_user_id_boundary THEN + :new.updated_by := lkn_user_id_boundary; + END IF; + +END trg_briu_request_details; +/ + +CREATE OR REPLACE TRIGGER trg_briu_req_det_attach BEFORE + INSERT OR UPDATE ON request_detail_attachments + REFERENCING + OLD AS old + NEW AS new + FOR EACH ROW +DECLARE + lkn_user_id_boundary CONSTANT NUMBER := -10000000; +BEGIN + IF :new.created_by < lkn_user_id_boundary THEN + :new.created_by := lkn_user_id_boundary; + END IF; + + IF :new.updated_by < lkn_user_id_boundary THEN + :new.updated_by := lkn_user_id_boundary; + END IF; + +END trg_briu_req_det_attach; +/ \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA07/21.RIGD-1061-Triggers on declarations tables.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA07/21.RIGD-1061-Triggers on declarations tables.sql new file mode 100644 index 0000000..b70a6c5 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA07/21.RIGD-1061-Triggers on declarations tables.sql @@ -0,0 +1,20 @@ +CREATE OR REPLACE TRIGGER trg_briu_decl_pers_attach BEFORE + INSERT OR UPDATE ON declaration_person_attachments + REFERENCING + OLD AS old + NEW AS new + FOR EACH ROW +DECLARE + lkn_user_id_boundary CONSTANT NUMBER := -10000000; +BEGIN + IF :new.created_by < lkn_user_id_boundary THEN + :new.created_by := lkn_user_id_boundary; + END IF; + + IF :new.updated_by < lkn_user_id_boundary THEN + :new.updated_by := lkn_user_id_boundary; + END IF; + +END trg_briu_decl_pers_attach; +/ + diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/01.RIGD-1018-ENTITLEMENT-REQUEST-APPROVE-REJECT.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/01.RIGD-1018-ENTITLEMENT-REQUEST-APPROVE-REJECT.sql new file mode 100644 index 0000000..e8abbbd --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/01.RIGD-1018-ENTITLEMENT-REQUEST-APPROVE-REJECT.sql @@ -0,0 +1,26 @@ +UPDATE notification_templates +SET + message_signature = 'EEAS.BA. BS.4 Support to Delegation.
    Email: REMOVALS@eeas.europa.eu' +WHERE + notification_template_id in (22); + +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) +values +(23,'ENTITLEMENTS_REQUEST','You request ${REQUEST_STRING_ID} was approved.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your request ${REQUEST_STRING_ID} was approved. It will soon be processed for payment. You will be notified accordingly.

    Please consult the details of your request in your movement file in e-Rights.
    +
    Kind regards,','EEAS.BA. BS.4 Support to Delegation.
    Email: REMOVALS@eeas.europa.eu','APPROVED_ADV_REM_REQUEST','Y'); + + Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) +values +(24,'ENTITLEMENTS_REQUEST','You request ${REQUEST_STRING_ID} was rejected.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your request ${REQUEST_STRING_ID} was rejected.

    Please consult the details of your request in your movement file in e-Rights.
    +
    Kind regards,','EEAS.BA. BS.4 Support to Delegation.
    Email: REMOVALS@eeas.europa.eu','REJECTED_ADV_REM_REQUEST','Y'); + + +update NOTIFICATION_TEMPLATES +set +message_body = 'Dear ${FIRST_NAME} ${LAST_NAME},

    The EEAS.BA.HR.3 Rotation team has determined your entitlements for travel and/or removal.

    You will find the amounts of your entitlements and other necessary information in your movement file in the e-Rights Portal.



    Steps to follow to receive your entitlements:
    • Please make sure to consult the complete rules and GUIDELINES available in e-Rights.
    • Fill in and submit your movement file declaration in e-Rights. Based on your input, e-Rights will generate your corresponding entitlement requests.
    • Submit your declaration and follow the instructions as indicated in the GUIDELINES applicable to your movement type to obtain your payments.
    Kind regards,
    ' + +where notification_template_id = 11; + +commit; + + diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/03.RIGD-947-update_notification_template.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/03.RIGD-947-update_notification_template.sql new file mode 100644 index 0000000..8c7f069 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/03.RIGD-947-update_notification_template.sql @@ -0,0 +1,13 @@ +update NOTIFICATION_TEMPLATES +set MESSAGE_SUBJECT = 'E-Rights created your request(s).' +, MESSAGE_BODY = 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +E-Rights created your entitlement request(s).
    +Please log in to e-Rights to consult your request(s) in your corresponding movement file and act upon as necessary. +

    +Kind regards, +
    ' +WHERE NOTIFICATION_TEMPLATE_TYPE = 'ENTITLEMENTS_REQUEST' +and NOTIFICATION_TEMPLATE_CODE = 'CREATE_REQUEST'; + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/04.RIGD-969-Triggers.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/04.RIGD-969-Triggers.sql new file mode 100644 index 0000000..afb2897 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/04.RIGD-969-Triggers.sql @@ -0,0 +1,59 @@ +CREATE OR REPLACE TRIGGER trg_briu_movement_files BEFORE + INSERT OR UPDATE ON movement_files + REFERENCING + OLD AS old + NEW AS new + FOR EACH ROW +DECLARE + lkn_user_id_boundary CONSTANT NUMBER := -10000000; +BEGIN + IF :new.created_by < lkn_user_id_boundary THEN + :new.created_by := lkn_user_id_boundary; + END IF; + + IF :new.updated_by < lkn_user_id_boundary THEN + :new.updated_by := lkn_user_id_boundary; + END IF; + +END trg_briu_movement_files; +/ + +CREATE OR REPLACE TRIGGER trg_briu_declaration BEFORE + INSERT OR UPDATE ON declaration + REFERENCING + OLD AS old + NEW AS new + FOR EACH ROW +DECLARE + lkn_user_id_boundary CONSTANT NUMBER := -10000000; +BEGIN + IF :new.created_by < lkn_user_id_boundary THEN + :new.created_by := lkn_user_id_boundary; + END IF; + + IF :new.updated_by < lkn_user_id_boundary THEN + :new.updated_by := lkn_user_id_boundary; + END IF; + +END trg_briu_declaration; +/ + +CREATE OR REPLACE TRIGGER trg_briu_requests BEFORE + INSERT OR UPDATE ON requests + REFERENCING + OLD AS old + NEW AS new + FOR EACH ROW +DECLARE + lkn_user_id_boundary CONSTANT NUMBER := -10000000; +BEGIN + IF :new.created_by < lkn_user_id_boundary THEN + :new.created_by := lkn_user_id_boundary; + END IF; + + IF :new.updated_by < lkn_user_id_boundary THEN + :new.updated_by := lkn_user_id_boundary; + END IF; + +END trg_briu_requests; +/ \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/05.RIGD-1036-V_ALLOWANCES.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/05.RIGD-1036-V_ALLOWANCES.sql new file mode 100644 index 0000000..e2d827d --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/05.RIGD-1036-V_ALLOWANCES.sql @@ -0,0 +1,28 @@ +CREATE OR REPLACE VIEW v_allowances AS + SELECT + r.request_id, + d.declaration_id, + f.movement_file_id, + et.entitlmnt_type_id, + r.request_string_id, + r.created_at, + r.state, + r.calc_total_amount, + r.calc_total_amount_currency, + etc.description entitlement, + p.last_name, + p.first_name, + f.start_date, + ct.description_en city_to, + c.name_en country_to, + f.file_id + FROM + requests r + INNER JOIN declaration d ON ( r.declaration_id = d.declaration_id ) + INNER JOIN movement_files f ON ( d.movement_file_id = f.movement_file_id ) + INNER JOIN entitlmnt_types et ON ( r.entitlmnt_type_id = et.entitlmnt_type_id ) + INNER JOIN entitlmnt_types_cat etc ON ( et.entitlmnt_type_catg_id = etc.entitlmnt_type_cat_id ) + INNER JOIN v_people p ON ( f.per_id = p.per_id ) + INNER JOIN mv_countries c ON ( f.country_code_to = c.country_code ) + INNER JOIN mv_cities ct ON ( f.city_code_to = ct.city_code + AND f.country_code_to = ct.country_code ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/RIGD-1033.1.MV_EMAILS.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/RIGD-1033.1.MV_EMAILS.sql new file mode 100644 index 0000000..00cec08 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/RIGD-1033.1.MV_EMAILS.sql @@ -0,0 +1,96 @@ +DROP MATERIALIZED VIEW "ERIGHTS"."MV_EMAILS"; + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_EMAILS" ( + "PER_ID", + "EMAIL", + "CTX_CD" +) AS + SELECT + per_id, + email, + ctx_cd + FROM + ( + SELECT + per_id, + email, + ctx_cd, + ROW_NUMBER() + OVER(PARTITION BY per_id + ORDER BY start_date DESC + ) rn + FROM + ( + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date + FROM + mv_emails_com@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, + 12 ) + UNION ALL + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date + FROM + mv_emails_eeas@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, + 12 ) + UNION ALL + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date + FROM + mv_emails_hist_eeas@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, + 12 ) + AND end_date = TO_DATE('31-DEC-9999 00:00:00', 'DD-MON-YYYY HH24:MI:SS') + UNION ALL + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date + FROM + mv_emails_hist_com@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, + 12 ) + AND end_date = TO_DATE('31-DEC-9999 00:00:00', 'DD-MON-YYYY HH24:MI:SS') + UNION ALL + SELECT + per_id, + email, + email_type, + created_at, + TO_DATE('31-DEC-9999 00:00:00', 'DD-MON-YYYY HH24:MI:SS') + FROM + persons_emails + WHERE + email_type = 'PRIV' + ) + ) + WHERE + rn = 1; + +CREATE INDEX "ERIGHTS"."IDX_MV_EMAILS_PER" ON + "ERIGHTS"."MV_EMAILS" ( + "PER_ID" + ) + COMPUTE STATISTICS; + +COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_EMAILS" IS + 'snapshot table for snapshot ERIGHTS.MV_EMAILS'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/RIGD-1033.2.PERSONS_EMAILS_Insert.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/RIGD-1033.2.PERSONS_EMAILS_Insert.sql new file mode 100644 index 0000000..cd37220 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/RIGD-1033.2.PERSONS_EMAILS_Insert.sql @@ -0,0 +1,21 @@ +INSERT INTO persons_emails ( + persons_emails_id, + per_id, + email_type, + email, + created_by, + created_at, + updated_by, + updated_at +) VALUES ( + seq_persons_emails.NEXTVAL, + 90072707, + 'PRIV', + 'osoite2020@gmail.com', + 1, + sysdate, + 1, + sysdate +); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/RIGD-944insert_app_parameters.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/RIGD-944insert_app_parameters.sql new file mode 100644 index 0000000..da07513 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/RIGD-944insert_app_parameters.sql @@ -0,0 +1,17 @@ +TRUNCATE TABLE ERIGHTS.APP_PARAMETERS; + +REM INSERTING into ERIGHTS.APP_PARAMETERS +SET DEFINE OFF; +Insert into ERIGHTS.APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values (1,'ADVANCE_REMOVAL','MAXIMUM_WEIGHT','780'); +Insert into ERIGHTS.APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values (2,'ADVANCE_REMOVAL','MAXIMUM_VOLUME_PERSONAL','60'); +Insert into ERIGHTS.APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values (3,'ADVANCE_REMOVAL','MAXIMUM_VOLUME_STORAGE','60'); +Insert into ERIGHTS.APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values (4,'ADVANCE_REMOVAL','M3toKG','167'); +Insert into ERIGHTS.APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values (5,'ADVANCE_REMOVAL','KGtoM3','0.00598802'); +Insert into ERIGHTS.APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values (6,'ADVANCE_REMOVAL','MAX_VALUE_GOODS_PERSONAL','161131'); +Insert into ERIGHTS.APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values (7,'ADVANCE_REMOVAL','MAX_VALUE_GOODS_PERSONAL_OPT_1','60565.50 '); +Insert into ERIGHTS.APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values (8,'ADVANCE_REMOVAL','MAX_VALUE_GOODS_CAR','30000'); +Insert into ERIGHTS.APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values (9,'ADVANCE_REMOVAL','MAX_VALUE_GOODS_EIS','80565.50'); +Insert into ERIGHTS.APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values (11,'ADVANCE_REMOVAL','MAXIMUM_INSURANCE_RATE','3.5'); +Insert into ERIGHTS.APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values (12,'ADVANCE_REMOVAL','MAXIMUM_WEIGHT_AIRFRIGHT','780'); +Insert into ERIGHTS.APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values (13,'MAILBOX','DELPOSTINGS','DEL-POSTINGS@eeas.europa.eu'); +Insert into ERIGHTS.APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values (14,'MAILBOX','REMOVALS','REMOVALS@eeas.europa.eu'); diff --git a/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/Update requests type.sql b/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/Update requests type.sql new file mode 100644 index 0000000..39dacd0 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.3.0-BETA08/Update requests type.sql @@ -0,0 +1 @@ +UPDATE requests SET REQUEST_TYPE='TudRequest' where REQUEST_TYPE is null; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.4.0-BETA01/10.RIGD-1028-MV_EMAILS.sql b/e-rights-common/src/main/database/release/archive/2.4.0-BETA01/10.RIGD-1028-MV_EMAILS.sql new file mode 100644 index 0000000..4926b95 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.4.0-BETA01/10.RIGD-1028-MV_EMAILS.sql @@ -0,0 +1,96 @@ +DROP MATERIALIZED VIEW "ERIGHTS"."MV_EMAILS"; + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_EMAILS" ( + "PER_ID", + "EMAIL", + "CTX_CD" +) AS + SELECT + per_id, + TRIM(lower(email)) email, + ctx_cd + FROM + ( + SELECT + per_id, + email, + ctx_cd, + ROW_NUMBER() + OVER(PARTITION BY per_id + ORDER BY start_date DESC + ) rn + FROM + ( + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date + FROM + mv_emails_com@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, + 12 ) + UNION ALL + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date + FROM + mv_emails_eeas@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, + 12 ) + UNION ALL + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date + FROM + mv_emails_hist_eeas@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, + 12 ) + AND end_date = TO_DATE('31-DEC-9999 00:00:00', 'DD-MON-YYYY HH24:MI:SS') + UNION ALL + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date + FROM + mv_emails_hist_com@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, + 12 ) + AND end_date = TO_DATE('31-DEC-9999 00:00:00', 'DD-MON-YYYY HH24:MI:SS') + UNION ALL + SELECT + per_id, + email, + email_type, + created_at, + TO_DATE('31-DEC-9999 00:00:00', 'DD-MON-YYYY HH24:MI:SS') + FROM + persons_emails + WHERE + email_type = 'PRIV' + ) + ) + WHERE + rn = 1; + +CREATE INDEX "ERIGHTS"."IDX_MV_EMAILS_PER" ON + "ERIGHTS"."MV_EMAILS" ( + "PER_ID" + ) + COMPUTE STATISTICS; + +COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_EMAILS" IS + 'snapshot table for snapshot ERIGHTS.MV_EMAILS'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.4.0-BETA01/12. Remove total amount over the cellings.sql b/e-rights-common/src/main/database/release/archive/2.4.0-BETA01/12. Remove total amount over the cellings.sql new file mode 100644 index 0000000..dd35897 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.4.0-BETA01/12. Remove total amount over the cellings.sql @@ -0,0 +1,14 @@ +CREATE TABLE bkp$REQUESTS_2_3_0 + AS + SELECT + * + FROM + REQUESTS; + + +update REQUESTS +set TOTAL_AMOUNT = null, +TOTAL_AMOUNT_CURRENCY = null, +CALC_TOTAL_AMOUNT=null, +CALC_TOTAL_AMOUNT_CURRENCY=null +where REQUEST_TYPE = 'AdvanceRequest' and state in ('DRAFT','AWAITING'); diff --git a/e-rights-common/src/main/database/release/archive/2.4.0-BETA01/14.RIGD-1036-V_ALLOWANCES.sql b/e-rights-common/src/main/database/release/archive/2.4.0-BETA01/14.RIGD-1036-V_ALLOWANCES.sql new file mode 100644 index 0000000..c61d7f3 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.4.0-BETA01/14.RIGD-1036-V_ALLOWANCES.sql @@ -0,0 +1,46 @@ +CREATE OR REPLACE FORCE VIEW v_allowances AS + SELECT + r.request_id, + d.declaration_id, + f.movement_file_id, + et.entitlmnt_type_id, + r.request_string_id, + r.created_at, + r.state, + r.calc_total_amount, + r.calc_total_amount_currency, + r.total_amount, + r.total_amount_currency, + etc.description entitlement, + p.last_name, + p.first_name, + f.start_date, + ct_to.description_en city_to, + c_to.name_en country_to, + f.file_id, + r.request_type, + f.city_code_from, + ct_from.description_en city_from, + f.country_code_from, + c_from.name_en country_from, + f.org_cd_from, + f.org_id_from, + r.payment_request, + r.payment_order, + f.budget_line, + f.priority, + f.delegation_org_id_from, + f.per_id per_id + FROM + requests r + INNER JOIN declaration d ON ( r.declaration_id = d.declaration_id ) + INNER JOIN movement_files f ON ( d.movement_file_id = f.movement_file_id ) + INNER JOIN entitlmnt_types et ON ( r.entitlmnt_type_id = et.entitlmnt_type_id ) + INNER JOIN entitlmnt_types_cat etc ON ( et.entitlmnt_type_catg_id = etc.entitlmnt_type_cat_id ) + INNER JOIN v_people p ON ( f.per_id = p.per_id ) + INNER JOIN mv_countries c_to ON ( f.country_code_to = c_to.country_code ) + INNER JOIN mv_cities ct_to ON ( f.city_code_to = ct_to.city_code + AND f.country_code_to = ct_to.country_code ) + INNER JOIN mv_countries c_from ON ( f.country_code_from = c_from.country_code ) + INNER JOIN mv_cities ct_from ON ( f.city_code_from = ct_from.city_code + AND f.country_code_from = ct_from.country_code ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.4.0-BETA01/15.RIGD-1280-app_parameters_update.sql b/e-rights-common/src/main/database/release/archive/2.4.0-BETA01/15.RIGD-1280-app_parameters_update.sql new file mode 100644 index 0000000..c61cf9b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.4.0-BETA01/15.RIGD-1280-app_parameters_update.sql @@ -0,0 +1,7 @@ +UPDATE app_parameters +SET + parameter_value = '0.006' +WHERE + parameter_key = 'KGtoM3'; + +COMMIT; diff --git a/e-rights-common/src/main/database/release/archive/2.5.0-RC04/02.RIGD-1147-CLEARING-REIMBURSEMENT-NOTIFICATIONS.sql b/e-rights-common/src/main/database/release/archive/2.5.0-RC04/02.RIGD-1147-CLEARING-REIMBURSEMENT-NOTIFICATIONS.sql new file mode 100644 index 0000000..12004e8 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.5.0-RC04/02.RIGD-1147-CLEARING-REIMBURSEMENT-NOTIFICATIONS.sql @@ -0,0 +1,24 @@ +Insert into NOTIFICATION_TEMPLATES +(NOTIFICATION_TEMPLATE_ID, +NOTIFICATION_TEMPLATE_TYPE, +MESSAGE_SUBJECT, +MESSAGE_BODY, +MESSAGE_SIGNATURE, +NOTIFICATION_TEMPLATE_CODE, +DEFAULT_TEMPLATE) values +(25, +'ENTITLEMENTS_REQUEST', +'Reminder: You need to clear the removal advance you’ve received', +'Dear ${FIRST_NAME} ${LAST_NAME}, +

    +Your request for a removal advance from ${FROM_COUNTRY_CITY} to ${TO_COUNTRY_CITY} was processed and paid for an amount of ${AMOUNT} on the ${DATE_OF_PAYMENT}. +

    +This email is a reminder that you still need to clear this advance by encoding a clearing/reimbursement request and uploading the necessary documents through the e-Rights portal +

    +The final deadline for clearing your removal advance is ${PAYMENT_DATE}. ' || +'Should you not have introduced an advance clearing request by that date, the EEAS reserves the right to recover the full amount of the advance granted to you.

    ' || +'Log in to e-Rights to consult your request.
    ' || +'Kind regards,

    ', +'EEAS.BA. BS.4 Support to Delegation.
    Email: REMOVALS@eeas.europa.eu', +'CLEARING_REQUEST', +'Y'); diff --git a/e-rights-common/src/main/database/release/archive/2.5.0-RC04/03.RIGD-1321-REQUESTS_Alter.sql b/e-rights-common/src/main/database/release/archive/2.5.0-RC04/03.RIGD-1321-REQUESTS_Alter.sql new file mode 100644 index 0000000..230291b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.5.0-RC04/03.RIGD-1321-REQUESTS_Alter.sql @@ -0,0 +1,3 @@ +ALTER TABLE erights.requests MODIFY ( + request_type VARCHAR2(20 CHAR) +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.5.0-RC04/1.increase fields lenght.sql b/e-rights-common/src/main/database/release/archive/2.5.0-RC04/1.increase fields lenght.sql new file mode 100644 index 0000000..9358c20 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.5.0-RC04/1.increase fields lenght.sql @@ -0,0 +1,15 @@ +ALTER TABLE REQUEST_DETAIL_ATTACHMENTS +MODIFY (REQUEST_DETAIL_ATTACHMENT_TYPE VARCHAR2(25 CHAR) ); + + +ALTER TABLE REQUEST_DETAILS +MODIFY (REQUEST_DETAIL_TYPE VARCHAR2(25 CHAR) ); + +AbacBankAccountServiceProvider + +ALTER TABLE REQUEST_DETAILS +ADD (EXTRA_REQUEST_DETAIL CHAR(1 BYTE) DEFAULT 'N' ); + + +ALTER TABLE REQUEST_DETAILS +ADD (JUSTIFICATION VARCHAR2(3000) ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.5.0-RC04/RIGD-1207-get-the-parameter-from-app-parameters.sql b/e-rights-common/src/main/database/release/archive/2.5.0-RC04/RIGD-1207-get-the-parameter-from-app-parameters.sql new file mode 100644 index 0000000..f9184a8 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.5.0-RC04/RIGD-1207-get-the-parameter-from-app-parameters.sql @@ -0,0 +1,5 @@ +-- Added parameter for prorata calculation +INSERT INTO APP_PARAMETERS (PARAMETER_ID, PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values (15, 'ADVANCE_REMOVAL','MAXIMUM_VOLUME_AIRFREIGHT', 4.67); +-- Fixed typo in name of existing parameter +UPDATE APP_PARAMETERS set PARAMETER_KEY = 'MAXIMUM_WEIGHT_AIRFREIGHT' where PARAMETER_KEY = 'MAXIMUM_WEIGHT_AIRFRIGHT'; +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.5.0-RC04/RIGD-1219-movement-types-delete.sql b/e-rights-common/src/main/database/release/archive/2.5.0-RC04/RIGD-1219-movement-types-delete.sql new file mode 100644 index 0000000..dc4f832 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.5.0-RC04/RIGD-1219-movement-types-delete.sql @@ -0,0 +1,45 @@ +create table bkp$ENTITLMNT_TYPES_rigd1219 +as select * from ENTITLMNT_TYPES; + +create table bkp$movement_types_rigd1219 +as select * from movement_types; + +update ENTITLMNT_TYPES et +set MOVEMENT_TYPE_ID = 16 +where MOVEMENT_TYPE_ID in (14, 15); + +update ENTITLMNT_TYPES et +set MOVEMENT_TYPE_ID = 10 +where MOVEMENT_TYPE_ID in (9); + +delete from movement_types mt where mt.movement_type_id in (2, 6, 8, 9,11,14,15); +commit; + +/* +select * +from user_constraints +where constraint_name = 'FK_REQUESTS_ENTITLMNT_TYPES'; + +select * from movement_types mt where mt.movement_type_id in (2, 6, 8, 9,11,14,15); + +select * from movement_files where movement_type_id in (2, 6, 8, 9,11,14,15); + +select * +from ENTITLMNT_TYPES +where movement_type_id in (2, 6, 8, 9,11,14,15); + +select et.MOVEMENT_TYPE_ID, mf.MOVEMENT_TYPE_ID +from ENTITLMNT_TYPES et +inner join movement_files mf on (et.MOVEMENT_FILE_ID = mf.MOVEMENT_FILE_ID) +where et.movement_type_id in (2, 6, 8, 9,11,14,15); + +update ENTITLMNT_TYPES et +set MOVEMENT_TYPE_ID = 16 +where MOVEMENT_TYPE_ID in (14, 15); + +update ENTITLMNT_TYPES et +set MOVEMENT_TYPE_ID = 10 +where MOVEMENT_TYPE_ID in (9); + +select * +from requests; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.5.0-RC04/RIGD-1239-fix-labels-in-requests-filter.sql b/e-rights-common/src/main/database/release/archive/2.5.0-RC04/RIGD-1239-fix-labels-in-requests-filter.sql new file mode 100644 index 0000000..2090ab7 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.5.0-RC04/RIGD-1239-fix-labels-in-requests-filter.sql @@ -0,0 +1,5 @@ +-- Fix the human-friendly descriptions (used as labels in the front-end) +update ENTITLMNT_TYPES_CAT set DESCRIPTION = 'Removal' where CODE = 'REM'; +update ENTITLMNT_TYPES_CAT set DESCRIPTION = 'Take up Duty' where CODE = 'TUD'; +update ENTITLMNT_TYPES_CAT set DESCRIPTION = 'Installation' where CODE = 'INS'; +update ENTITLMNT_TYPES_CAT set DESCRIPTION = 'Resettlement' where CODE = 'RES'; diff --git a/e-rights-common/src/main/database/release/archive/2.5.0-RC04/clean_user_preferences.sql b/e-rights-common/src/main/database/release/archive/2.5.0-RC04/clean_user_preferences.sql new file mode 100644 index 0000000..cdd94e8 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.5.0-RC04/clean_user_preferences.sql @@ -0,0 +1,3 @@ +DELETE FROM USER_PREFERENCES; + +commit; diff --git a/e-rights-common/src/main/database/release/archive/2.5.0-RC04/mv_exchange_rate.sql b/e-rights-common/src/main/database/release/archive/2.5.0-RC04/mv_exchange_rate.sql new file mode 100644 index 0000000..97e3504 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.5.0-RC04/mv_exchange_rate.sql @@ -0,0 +1,59 @@ +DROP MATERIALIZED VIEW mv_rate_exchange; + +CREATE MATERIALIZED VIEW mv_rate_exchange ( + uniqid, + dev_cd, + dt_cre, + dt_deb, + taux_eur, + dt_fin, + dt_maj, + month_year +) AS + SELECT + ora_hash(dev_cd) + to_number( + to_char( + dt_deb, + 'YYYYMMDD' + ) + ) uniqid, + dev_cd, + dt_cre, + dt_deb, + taux_eur, + dt_fin, + dt_maj, + TO_CHAR(DT_DEB, 'MON-YYYY') month_year + FROM + mv_rate_exchange@easrefn.cc.cec.eu.int + UNION + SELECT + ora_hash( + 'EUR' + ) + 20000101 uniqid, + 'EUR' dev_cd, + trunc( + sysdate, + 'MM' + ) dt_cre, + trunc( + sysdate, + 'MM' + ) dt_deb, + 1 taux_eur, + last_day(sysdate) dt_fin, + last_day(sysdate) dt_maj, + TO_CHAR(sysdate, 'MON-YYYY') month_year + FROM + dual; + +CREATE INDEX idx_mv_rate_exch_dev_cd ON + mv_rate_exchange ( + dev_cd + ) + COMPUTE STATISTICS; + + + +ALTER TABLE REQUEST_DETAILS +ADD (EXCHANGE_PAY_MONTH VARCHAR2(20) ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.6.0/01.RIGD-1315-NOTIFICATIONS_TEMPLATES_Update.sql b/e-rights-common/src/main/database/release/archive/2.6.0/01.RIGD-1315-NOTIFICATIONS_TEMPLATES_Update.sql new file mode 100644 index 0000000..cee2535 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.6.0/01.RIGD-1315-NOTIFICATIONS_TEMPLATES_Update.sql @@ -0,0 +1,9 @@ +update notification_templates +set message_signature = 'EEAS.RM.BS.4 Support to Delegation.
    Email: REMOVALS@eeas.europa.eu' +where message_signature = 'EEAS.BA. BS.4 Support to Delegation.
    Email: REMOVALS@eeas.europa.eu'; + +update notification_templates +set message_signature = 'EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +where message_signature = 'EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu'; + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.6.0/02.RIGD-1315-MOVEMENT_FILES_Update.sql b/e-rights-common/src/main/database/release/archive/2.6.0/02.RIGD-1315-MOVEMENT_FILES_Update.sql new file mode 100644 index 0000000..53c31e1 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.6.0/02.RIGD-1315-MOVEMENT_FILES_Update.sql @@ -0,0 +1,96 @@ +CREATE TABLE bkp$movement_files_rigd1315 + AS + SELECT + * + FROM + movement_files f; + +--WITH entities AS ( +-- SELECT /*+materialize*/ DISTINCT +-- org_id, +-- org_cd +-- FROM +-- mv_entities +-- UNION ALL +-- SELECT DISTINCT +-- org_id, +-- org_cd +-- FROM +-- mv_entities_hist_com +--) +--SELECT +-- movement_file_id, +-- org_id_from, +-- org_cd_from, +-- ef.org_cd new_org_cd_from, +-- org_id_to, +-- org_cd_to, +-- et.org_cd new_org_cd_to +--FROM +-- movement_files f +-- LEFT JOIN entities ef ON ( ef.org_id = f.org_id_from ) +-- LEFT JOIN entities et ON ( et.org_id = f.org_id_to ); + +UPDATE movement_files f +SET + org_cd_from = ( + SELECT + org_cd + FROM + ( + SELECT /*+materialize*/ DISTINCT + org_id, + org_cd + FROM + mv_entities + UNION + SELECT DISTINCT + org_id, + org_cd + FROM + mv_entities_hist_com ec + WHERE + NOT EXISTS ( + SELECT + 1 + FROM + mv_entities e + WHERE + e.org_id = ec.org_id + ) + ) orgs + WHERE + orgs.org_id = f.org_id_from + ); + +UPDATE movement_files f +SET + org_cd_to = ( + SELECT + org_cd + FROM + ( + SELECT /*+materialize*/ DISTINCT + org_id, + org_cd + FROM + mv_entities + UNION + SELECT DISTINCT + org_id, + org_cd + FROM + mv_entities_hist_com ec + WHERE + NOT EXISTS ( + SELECT + 1 + FROM + mv_entities e + WHERE + e.org_id = ec.org_id + ) + ) orgs + WHERE + orgs.org_id = f.org_id_to + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.6.0/03.RIGD-1321-AUD_REQUESTS_Alter.sql b/e-rights-common/src/main/database/release/archive/2.6.0/03.RIGD-1321-AUD_REQUESTS_Alter.sql new file mode 100644 index 0000000..ecfe0cd --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.6.0/03.RIGD-1321-AUD_REQUESTS_Alter.sql @@ -0,0 +1,3 @@ +ALTER TABLE erights.aud_requests MODIFY ( + request_type VARCHAR2(20 CHAR) +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.6.0/04.RIGD-1344-v_staffmembers.sql b/e-rights-common/src/main/database/release/archive/2.6.0/04.RIGD-1344-v_staffmembers.sql new file mode 100644 index 0000000..32c4aec --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.6.0/04.RIGD-1344-v_staffmembers.sql @@ -0,0 +1,226 @@ +CREATE OR REPLACE FORCE EDITIONABLE VIEW v_staffmembers AS + SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + p.assign_start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM p.assign_end_date) IN ( 9999, + 2099 ) ) THEN + to_date( + NULL + ) + ELSE + p.assign_end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email, + o.place_of_origin AS origin_city, + o.country_code AS origin_country_code, + o.country_of_origin AS origin_country_desc, + p.lst_cd statutory_link_code, + p.lst_desc statutory_link_desc + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id, + assign_start_date, + assign_end_date, + lst_cd, + lst_code lst_desc + FROM + mv_persons_eeas + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + FROM + mv_persons_hist_eeas phe + WHERE + coalesce( + phe.start_date, + sysdate + ) = ( + SELECT + coalesce( + MAX(phe2.start_date), + sysdate + ) + FROM + mv_persons_hist_eeas phe2 + WHERE + phe.per_id = phe2.per_id + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities e ON p.org_id = e.org_id + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_emails em ON em.per_id = p.per_id + LEFT JOIN v_places_of_origin o ON p.per_id = o.per_id + UNION ALL + SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + assign.start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM assign.end_date) IN ( 2099, + 9999 ) ) THEN + to_date( + NULL + ) + ELSE + assign.end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email, + o.place_of_origin origin_city, + o.country_code origin_country_code, + o.country_of_origin origin_country_desc, + p.lst_cd statutory_link_code, + p.lst_desc statutory_link_desc + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id, + lst_cd, + lst_code lst_desc + FROM + mv_persons_com + WHERE + mv_persons_com.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL + FROM + mv_persons_hist_com phc + WHERE + coalesce( + phc.start_date, + sysdate + ) = ( + SELECT + coalesce( + MAX(phc2.start_date), + sysdate + ) + FROM + mv_persons_hist_com phc2 + WHERE + phc.per_id = phc2.per_id + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities_hist_com e ON p.org_id = e.org_id + AND trunc(sysdate) < trunc( + e.end_date + ) + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_assignments_com assign ON assign.per_id = p.per_id + AND assign.toj_cd = 'AFF' + LEFT JOIN mv_emails em ON em.per_id = p.per_id + LEFT JOIN v_places_of_origin o ON p.per_id = o.per_id; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.6.0/04.RIGD-1355-INSTALLATION-PAID_Insert.sql b/e-rights-common/src/main/database/release/archive/2.6.0/04.RIGD-1355-INSTALLATION-PAID_Insert.sql new file mode 100644 index 0000000..b55475b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.6.0/04.RIGD-1355-INSTALLATION-PAID_Insert.sql @@ -0,0 +1,21 @@ +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID = 26; + +Insert into NOTIFICATION_TEMPLATES +(NOTIFICATION_TEMPLATE_ID, +NOTIFICATION_TEMPLATE_TYPE, +MESSAGE_SUBJECT, +MESSAGE_BODY, +MESSAGE_SIGNATURE, +NOTIFICATION_TEMPLATE_CODE, +DEFAULT_TEMPLATE) values +(26, +'INSTALLATION_REQUEST', +'${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID}: Processed', +'Dear ${FIRST_NAME} ${LAST_NAME},

    ' || +'Your rights related to your ${ENTITLEMENT_TYPE} request was verified and processed in Sysper. The ${ENTITLEMENT_TYPE} will ' || +'be paid along with your salary. Please allow some time before it is actually processed by the Payment Office.

    ' || +'Please log in to E-Right to consult the details of your installation allowance.

    ' || +'Kind regards,

    ', +'EEAS.RM.HR.3 Rotation team.
    Email: DEL-POSTINGS@eeas.europa.eu', +'PAID_REQUEST', +'Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.6.0/05.RIGD-1357-INSTALLATION-UPDATE_Insert.sql b/e-rights-common/src/main/database/release/archive/2.6.0/05.RIGD-1357-INSTALLATION-UPDATE_Insert.sql new file mode 100644 index 0000000..63b6879 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.6.0/05.RIGD-1357-INSTALLATION-UPDATE_Insert.sql @@ -0,0 +1,22 @@ +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID = 27; + +Insert into NOTIFICATION_TEMPLATES +(NOTIFICATION_TEMPLATE_ID, +NOTIFICATION_TEMPLATE_TYPE, +MESSAGE_SUBJECT, +MESSAGE_BODY, +MESSAGE_SIGNATURE, +NOTIFICATION_TEMPLATE_CODE, +DEFAULT_TEMPLATE) values +(27, +'INSTALLATION_REQUEST', +'${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID}: Updated', +'Dear ${FIRST_NAME} ${LAST_NAME}, +

    +Your rights related to your ${ENTITLEMENT_TYPE} request were updated in Sysper. The correction of your ${ENTITLEMENT_TYPE} ' || +'will be paid along with your salary. Please allow some time before it is actually processed by the Payment Office.

    ' || +'Please log in to E-Right to consult the details of your installation.

    ' || +'Kind regards,

    ', +'EEAS.RM.HR.3 Rotation team.
    Email: DEL-POSTINGS@eeas.europa.eu', +'UPDATE_REQUEST', +'Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.6.0/06.RIGD-1347-mv_person_address.sql b/e-rights-common/src/main/database/release/archive/2.6.0/06.RIGD-1347-mv_person_address.sql new file mode 100644 index 0000000..fbfc0d3 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.6.0/06.RIGD-1347-mv_person_address.sql @@ -0,0 +1,108 @@ +DROP MATERIALIZED VIEW "ERIGHTS"."MV_PERSON_ADDRESS"; + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_PERSON_ADDRESS" + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND +AS + SELECT + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id, + created_date, + updated_date + FROM + ( + SELECT + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id, + created_date, + updated_date, + ROW_NUMBER() + OVER(PARTITION BY per_id, + tadr_cd + ORDER BY decode( + ins_cd, + 'EEAS', + 1, + 'COM', + 2, + 10 + ) DESC + ) row_num -- Take EEAS over COM + FROM + mv_person_address@easrefn.cc.cec.eu.int + ) + WHERE + row_num = 1; + +CREATE INDEX "ERIGHTS"."IDX_MV_PERSON_ADDRESS_PER_ID" ON + "ERIGHTS"."MV_PERSON_ADDRESS" ( + "PER_ID" + ) + PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL + DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) + TABLESPACE "ERIGHTS"; + +COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_PERSON_ADDRESS" IS + 'snapshot table for snapshot ERIGHTS.MV_PERSON_ADDRESS'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.6.0/06.RIGD-1356-INSTALLATION-REMINDER_Insert.sql b/e-rights-common/src/main/database/release/archive/2.6.0/06.RIGD-1356-INSTALLATION-REMINDER_Insert.sql new file mode 100644 index 0000000..ca9dcc0 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.6.0/06.RIGD-1356-INSTALLATION-REMINDER_Insert.sql @@ -0,0 +1,25 @@ +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID =28; + +Insert into NOTIFICATION_TEMPLATES +(NOTIFICATION_TEMPLATE_ID, +NOTIFICATION_TEMPLATE_TYPE, +MESSAGE_SUBJECT, +MESSAGE_BODY, +MESSAGE_SIGNATURE, +NOTIFICATION_TEMPLATE_CODE, +DEFAULT_TEMPLATE) values +(28, +'INSTALLATION_REQUEST', +'Reminder: Declare your new address in Sysper', +'Dear ${FIRST_NAME} ${LAST_NAME}, +

    +It has been ${WEEKS_AFTER_START} since your assignment started in ${COUNTRY}, ${CITY} and you still have not declared ' || +'your new address in Sysper.
    +This is a gentle reminder to declare it. Once that you have physically arrived to your new place of assignment ' || +'with the exact date of arrival and, if applicable, update the private address in Sysper for your dependant family ' || +'members as soon as possible..
    +Thank you for acting upon accordingly.

    ' || +'Kind regards,

    ', +'EEAS.RM.HR.3 Rotation team.
    Email: DEL-POSTINGS@eeas.europa.eu', +'REMINDER', +'Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.6.0/07.RIGD-1358-INSTALLATION-START_Insert.sql b/e-rights-common/src/main/database/release/archive/2.6.0/07.RIGD-1358-INSTALLATION-START_Insert.sql new file mode 100644 index 0000000..906da0e --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.6.0/07.RIGD-1358-INSTALLATION-START_Insert.sql @@ -0,0 +1,37 @@ +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID =29; + + +Insert into NOTIFICATION_TEMPLATES +(NOTIFICATION_TEMPLATE_ID, +NOTIFICATION_TEMPLATE_TYPE, +MESSAGE_SUBJECT, +MESSAGE_BODY, +MESSAGE_SIGNATURE, +NOTIFICATION_TEMPLATE_CODE, +DEFAULT_TEMPLATE) values +(29, +'INSTALLATION_REQUEST', +'E-Rights: Some steps to complete your rights and duty.', +'Dear ${FIRST_NAME} ${LAST_NAME},

    ' || +'We hope that you have well arrived to your destination.

    ' || +'Here is a gentle reminder of the administrative tasks that you should duly perform:

    ' || +'If you are terminating your contract:' || +'
      ' || +'
    • You have 3 years after ending your career/contract to resettle and to submit your resettlement allowance claim with the supporting documents.
    • ' || +'
    • Clear your Removal by clearing your advance request or submitting your reimbursement request in e-Rights.
    • ' || +'
    ' || +'If you are moving to a new Delegation or Headquarters:' || +'
      ' || +'
    • Once that you have physically arrived to your new place of assignment; update your address in Sysper for you and your Dependents as soon as possible and in any case before ${LIMIT_DATE} for the dependent family members of your household.
      ' || +'This address will be used as reference to fix your entitlements and validate the travel of your Dependents, as well as to perform ex-post verification. Please be aware that having an incorrect address in Sysper could lead to the recovery of undue amounts.
    • ' || +'
    • Clear your Removal by clearing your advance request or submitting your reimbursement request in e-Rights.
    • ' || +'
    • Submit your completed and fully signed taking up duties confirmation form by email to EEAS DEL POSTINGS with the functional mailbox of the HR Service in charge of your post in copy. This signed form is necessary to confirm your physical arrival at your new place of assignment and to validate your address declaration leading to payment of your installation allowance.
    • ' || +'
    ' || +'Thank you for completing these tasks at the earliest possible moment.

    ' || +'For more information on the procedures, please log in to e-Rights consult the guidelines.

    ' || +'Please ignore tasks that do not apply to your situation.

    ' || +'Kind regards,

    ', +'EEAS.RM.HR.3 Rotation team: DEL-POSTINGS@eeas.europa.eu
    ' || +'EEAS.RM.BS.4 Support to Delegation: REMOVAL@eeas.europa.eu', +'START', +'Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.6.0/08.RIGD-1357-rigr-70866-br084.sql b/e-rights-common/src/main/database/release/archive/2.6.0/08.RIGD-1357-rigr-70866-br084.sql new file mode 100644 index 0000000..a9dbc0a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.6.0/08.RIGD-1357-rigr-70866-br084.sql @@ -0,0 +1,6 @@ +ALTER TABLE REQUESTS +ADD (INDEMNITY_UPDATED_AT DATE ); + + +ALTER TABLE AUD_REQUESTS +ADD (INDEMNITY_UPDATED_AT DATE ); diff --git a/e-rights-common/src/main/database/release/archive/2.6.0/09.RIGD-1370-enable_installations.sql b/e-rights-common/src/main/database/release/archive/2.6.0/09.RIGD-1370-enable_installations.sql new file mode 100644 index 0000000..e5b9bf9 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.6.0/09.RIGD-1370-enable_installations.sql @@ -0,0 +1,4 @@ +UPDATE ENTITLMNT_TYPES SET enable = 'Y' +WHERE ENTITLMNT_TYPE_ID IN +(SELECT et.ENTITLMNT_TYPE_ID FROM ENTITLMNT_TYPES et JOIN entitlmnt_types_cat etc ON etc.ENTITLMNT_TYPE_CAT_ID = et.ENTITLMNT_TYPE_CATG_ID +WHERE etc.code = 'INS' AND et.enable = 'N') \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.6.0/10.RIGD-1393-ENTITLEMENT_AMOUNT_update.sql b/e-rights-common/src/main/database/release/archive/2.6.0/10.RIGD-1393-ENTITLEMENT_AMOUNT_update.sql new file mode 100644 index 0000000..817e63d --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.6.0/10.RIGD-1393-ENTITLEMENT_AMOUNT_update.sql @@ -0,0 +1,25 @@ +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID = 11; + +Insert into NOTIFICATION_TEMPLATES +(NOTIFICATION_TEMPLATE_ID, +NOTIFICATION_TEMPLATE_TYPE, +MESSAGE_SUBJECT,MESSAGE_BODY, +MESSAGE_SIGNATURE, +NOTIFICATION_TEMPLATE_CODE, +DEFAULT_TEMPLATE) +values (11, +'ENTITLEMENTS_AMOUNTS_SET', +'Your input is required to generate your removal and travel entitlements via e-Rights', +'Dear ${FIRST_NAME} ${LAST_NAME},

    ' || +'The Rotation team has determined your entitlements for removal and travel.

    ' || +'You will find your entitlements and other necessary information in your movement file in the e-Rights Portal.

    ' || +'Steps to follow to receive your entitlements:' || +'
      ' || +'
    • Please make sure to consult the complete rules and guidelines available in e-Rights.
    • ' || +'
    • Fill in and submit your movement file declaration in e-Rights. Based on your input, e-Rights will generate your corresponding entitlement requests.
    • ' || +'
    • Submit your declaration and follow the instructions.
    • ' || +'
    ' || +'Kind regards,', +'EEAS.BA.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu', +'CONFIRM', +'Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.6.0/11. RIGD-1387 - ERIGHTS_MV_EMAILS.sql b/e-rights-common/src/main/database/release/archive/2.6.0/11. RIGD-1387 - ERIGHTS_MV_EMAILS.sql new file mode 100644 index 0000000..48432dc --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.6.0/11. RIGD-1387 - ERIGHTS_MV_EMAILS.sql @@ -0,0 +1,94 @@ +DROP MATERIALIZED VIEW MV_EMAILS; +CREATE MATERIALIZED VIEW MV_EMAILS +REFRESH FORCE ON DEMAND +AS +SELECT + per_id, + TRIM(lower(email)) email, + ctx_cd + FROM + ( + SELECT + per_id, + email, + ctx_cd, + ROW_NUMBER() + OVER(PARTITION BY per_id + ORDER BY start_date DESC + ) rn + FROM + ( + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date + FROM + mv_emails_com@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, + 12 ) + UNION ALL + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date + FROM + mv_emails_eeas@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, + 12 ) + UNION ALL + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date + FROM + mv_emails_hist_eeas@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, + 12 ) + AND end_date = TO_DATE('31-DEC-9999 00:00:00', 'DD-MON-YYYY HH24:MI:SS') + UNION ALL + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date + FROM + mv_emails_hist_com@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, + 12 ) + AND end_date = TO_DATE('31-DEC-9999 00:00:00', 'DD-MON-YYYY HH24:MI:SS') + UNION ALL + SELECT + per_id, + email, + email_type, + created_at, + TO_DATE('31-DEC-9999 00:00:00', 'DD-MON-YYYY HH24:MI:SS') + FROM + persons_emails + WHERE + email_type = 'PRIV' + UNION ALL + SELECT + per_id, + ADR_EMAIL email, + 'PRIV' email_type, + date_from start_date, + nvl(date_to, TO_DATE('31-DEC-9999 00:00:00', 'DD-MON-YYYY HH24:MI:SS') ) end_date + FROM + mv_person_career_files@easrefn.cc.cec.eu.int + WHERE adr_email IS NOT NULL + ) + ) + WHERE + rn = 1; diff --git a/e-rights-common/src/main/database/release/archive/2.6.0/12. RIGD-1387 - ERIGHTS_V_PERSONS_EMAILS.sql b/e-rights-common/src/main/database/release/archive/2.6.0/12. RIGD-1387 - ERIGHTS_V_PERSONS_EMAILS.sql new file mode 100644 index 0000000..cbf9a5c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.6.0/12. RIGD-1387 - ERIGHTS_V_PERSONS_EMAILS.sql @@ -0,0 +1,15 @@ +CREATE OR REPLACE VIEW V_PERSONS_EMAILS AS +SELECT + per_id, + email_type, + email + FROM + persons_emails + UNION --ALL + SELECT + per_id, + ctx_cd, + email + FROM + mv_emails +; diff --git a/e-rights-common/src/main/database/release/archive/2.7.0/01. RIGD-1412 Declaration Options.sql b/e-rights-common/src/main/database/release/archive/2.7.0/01. RIGD-1412 Declaration Options.sql new file mode 100644 index 0000000..f2be0c0 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.7.0/01. RIGD-1412 Declaration Options.sql @@ -0,0 +1,28 @@ +ALTER TABLE DECLARATION +ADD (HOD_OPTION VARCHAR2(20) ); + +ALTER TABLE AUD_DECLARATION +ADD (HOD_OPTION VARCHAR2(20) ); + +ALTER TABLE DECLARATION +ADD (ENTRY_INTO_STORAGE CHAR(1 BYTE) ); + +ALTER TABLE AUD_DECLARATION +ADD (ENTRY_INTO_STORAGE CHAR(1 BYTE) ); + +ALTER TABLE ENTITLMNT_MAXS +ADD (ENABLE CHAR(1 BYTE) ); + +UPDATE ENTITLMNT_MAXS +SET ENABLE = HOD_ENABLE; + +ALTER TABLE MOVEMENT_FILES +ADD (FAMILY_POSTING CHAR(1 BYTE) ); + +ALTER TABLE AUD_MOVEMENT_FILES +ADD (FAMILY_POSTING CHAR(1 BYTE) ); + +UPDATE MOVEMENT_FILES +SET FAMILY_POSTING = NON_FAMILY_POSTING; + + diff --git a/e-rights-common/src/main/database/release/archive/2.7.0/02. RIGD-1445-Signature-of-the-emails.sql b/e-rights-common/src/main/database/release/archive/2.7.0/02. RIGD-1445-Signature-of-the-emails.sql new file mode 100644 index 0000000..1bbe326 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.7.0/02. RIGD-1445-Signature-of-the-emails.sql @@ -0,0 +1,16 @@ +UPDATE app_parameters SET parameter_value = 'SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE parameter_id = 14; + + +UPDATE notification_templates SET message_signature = 'EEAS.RM.BS.4 Support to Delegation.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE notification_template_id = 22; +UPDATE notification_templates SET message_signature = 'EEAS.RM.BS.4 Support to Delegation.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE notification_template_id = 23; +UPDATE notification_templates SET message_signature = 'EEAS.RM.BS.4 Support to Delegation.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE notification_template_id = 24; +UPDATE notification_templates SET message_signature = 'EEAS.RM.BS.4 Support to Delegation.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE notification_template_id = 25; + +UPDATE notification_templates SET message_signature = 'EEAS.RM.HR.3 Rotation team: DEL-POSTINGS@eeas.europa.eu
    EEAS.RM.BS.4 Support to Delegation: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE notification_template_id = 29; + diff --git a/e-rights-common/src/main/database/release/archive/2.7.0/03. RIGD-1469-Signature-of-the-email-BA-to-RM.sql b/e-rights-common/src/main/database/release/archive/2.7.0/03. RIGD-1469-Signature-of-the-email-BA-to-RM.sql new file mode 100644 index 0000000..0eb6666 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.7.0/03. RIGD-1469-Signature-of-the-email-BA-to-RM.sql @@ -0,0 +1,8 @@ + +UPDATE notification_templates SET message_signature = 'EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu' +WHERE notification_template_id = 11; + +UPDATE notification_templates +SET message_signature = 'EEAS.RM.HR.3 Rotation team. Email: DEL-POSTINGS@eeas.europa.eu
    ' || + 'EEAS.RM.BS.4 Support to Delegation. Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu' +WHERE notification_template_id = 29; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.7.0/05 RIGD-1468 fix default for entryintostorage.sql b/e-rights-common/src/main/database/release/archive/2.7.0/05 RIGD-1468 fix default for entryintostorage.sql new file mode 100644 index 0000000..0af66a4 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.7.0/05 RIGD-1468 fix default for entryintostorage.sql @@ -0,0 +1,34 @@ +UPDATE entitlmnt_maxs +SET + enable = 'Y'; + +UPDATE entitlmnt_maxs +SET + enable = 'N' +WHERE + ( max_value IS NULL + OR max_value <= 1 ) + AND entitlmnt_max_cat_id = 3; + +update declaration +set entry_into_storage = null; + + +update declaration +set entry_into_storage = 'N' +WHERE + movement_file_id IN ( + SELECT + movement_file_id + FROM + entitlmnt_types + WHERE + entitlmnt_type_id IN ( + SELECT + entitlmnt_type_id + FROM + entitlmnt_maxs + WHERE + enable = 'N' + ) + ) diff --git a/e-rights-common/src/main/database/release/archive/2.7.0/06.RIGD-1473-INSTALLATION-REMINDER_Update.sql b/e-rights-common/src/main/database/release/archive/2.7.0/06.RIGD-1473-INSTALLATION-REMINDER_Update.sql new file mode 100644 index 0000000..29d6e4f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.7.0/06.RIGD-1473-INSTALLATION-REMINDER_Update.sql @@ -0,0 +1,26 @@ +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID =28; + +Insert into NOTIFICATION_TEMPLATES +(NOTIFICATION_TEMPLATE_ID, +NOTIFICATION_TEMPLATE_TYPE, +MESSAGE_SUBJECT, +MESSAGE_BODY, +MESSAGE_SIGNATURE, +NOTIFICATION_TEMPLATE_CODE, +DEFAULT_TEMPLATE) values +(28, +'INSTALLATION_REQUEST', +'Reminder: Declare your new address in Sysper', +'Dear ${FIRST_NAME} ${LAST_NAME}, +

    +It has been ${WEEKS_AFTER_START} since your assignment started in ${COUNTRY}, ${CITY} and you still have not declared ' || +'your new address in Sysper.
    +This is a gentle reminder to declare it, once that you have physically arrived to your new place of assignment ' || +'with the exact date of arrival and, if applicable, update the private address in Sysper for your dependant family ' || +'members as soon as possible.
    +Thank you for acting upon accordingly.

    ' || +'If you have already submitted your address but it has not been validated yet, please disregard this email.

    ' || +'Kind regards,

    ', +'EEAS.RM.HR.3 Rotation team.
    Email: DEL-POSTINGS@eeas.europa.eu', +'REMINDER', +'Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.7.0/07 RIGD-1476 create country city for celling.sql b/e-rights-common/src/main/database/release/archive/2.7.0/07 RIGD-1476 create country city for celling.sql new file mode 100644 index 0000000..f388476 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.7.0/07 RIGD-1476 create country city for celling.sql @@ -0,0 +1,39 @@ +ALTER TABLE REQUESTS +ADD (CITY VARCHAR(3 BYTE) ); + +ALTER TABLE AUD_REQUESTS +ADD (CITY VARCHAR(3 BYTE) ); + +ALTER TABLE REQUESTS +ADD (COUNTRY VARCHAR(3 BYTE) ); + +ALTER TABLE AUD_REQUESTS +ADD (COUNTRY VARCHAR(3 BYTE) ); + + +ALTER TABLE ENTITLMNT_MAXS +ADD (CITY VARCHAR(3 BYTE) ); + + +ALTER TABLE ENTITLMNT_MAXS +ADD (COUNTRY VARCHAR(3 BYTE) ); + + + +ALTER TABLE REQUESTS +ADD (ENTRY_INTO_STORAGE CHAR(1 BYTE) ); + +ALTER TABLE AUD_REQUESTS +ADD (ENTRY_INTO_STORAGE CHAR(1 BYTE) ); + + + +UPDATE requests +SET + ENTRY_INTO_STORAGE = null; + +UPDATE requests +SET + ENTRY_INTO_STORAGE = 'Y' +WHERE + ( STORAGE_RATE > 1 ); diff --git a/e-rights-common/src/main/database/release/archive/2.7.0/1482 mail for EIS.sql b/e-rights-common/src/main/database/release/archive/2.7.0/1482 mail for EIS.sql new file mode 100644 index 0000000..e753fc6 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.7.0/1482 mail for EIS.sql @@ -0,0 +1,9 @@ + +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID = 30; + +INSERT INTO "ERIGHTS"."NOTIFICATION_TEMPLATES" (NOTIFICATION_TEMPLATE_ID, NOTIFICATION_TEMPLATE_TYPE, MESSAGE_SUBJECT, MESSAGE_BODY, MESSAGE_SIGNATURE, NOTIFICATION_TEMPLATE_CODE, DEFAULT_TEMPLATE) +VALUES ('30', 'EIS_AMOUNTS_SET', 'Removals: Your Entry-into-Storage Ceiling has been set.', + 'Dear ${FIRST_NAME} ${LAST_NAME}, +

    You have recently requested an Entry-into-Storage Ceiling and it has been set in your movement file. You can now submit your Removal requests with all the related documents. +

    Please log in to e-Rights to consult the ceiling and submit your request.', + 'EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu', 'CONFIRM', 'Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.7.0/3.RIGD-1464 create country columns.sql b/e-rights-common/src/main/database/release/archive/2.7.0/3.RIGD-1464 create country columns.sql new file mode 100644 index 0000000..9027b9b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.7.0/3.RIGD-1464 create country columns.sql @@ -0,0 +1,12 @@ +ALTER TABLE DECLARATION +ADD (CITY_EIS VARCHAR(3 BYTE) ); + +ALTER TABLE AUD_DECLARATION +ADD (CITY_EIS VARCHAR(3 BYTE) ); + +ALTER TABLE DECLARATION +ADD (COUNTRY_EIS VARCHAR(3 BYTE) ); + +ALTER TABLE AUD_DECLARATION +ADD (COUNTRY_EIS VARCHAR(3 BYTE) ); + diff --git a/e-rights-common/src/main/database/release/archive/2.7.0/RIGD-1484 remove disable entitlemetn from v empty.sql b/e-rights-common/src/main/database/release/archive/2.7.0/RIGD-1484 remove disable entitlemetn from v empty.sql new file mode 100644 index 0000000..6044e9a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.7.0/RIGD-1484 remove disable entitlemetn from v empty.sql @@ -0,0 +1,115 @@ + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_EMPTY_FLAT_RATE_ENTITLEMENTS" ("ENTITLMNT_TYPE_ID", "ENTITLMNT_TYPE_CATG_ID", "MOVEMENTYEAR", "MOVEMENT_TYPE_ID", "MOVEMENTTYPE", "MOVEMENTCONTEXT", "MOVEMENT_FILE_ID", "STATUS", "DISABLE_REASON", "ENT_TYPE_DEFAULT", "ENABLE", "PER_ID", "FIRST_NAME", "LAST_NAME", "CITY_CODE_FROM", "CITY_CODE_TO", "COUNTRY_CODE_FROM", "COUNTRY_CODE_TO", "MOVEMENTFROM", "MOVEMENTTO", "ALLOCATEDTOCURRENT", "ALLOCATEDTOFUTURE", "ORG_ID_FROM", "ORG_ID_TO", "FILE_ID", "ENTITLMNT_TYPES_CAT_CODE", "ENTITLMNT_MAXS_CAT_CODE_LIST") DEFAULT COLLATION "USING_NLS_COMP" AS + SELECT + "ENTITLMNT_TYPE_ID", + "ENTITLMNT_TYPE_CATG_ID", + "MOVEMENTYEAR", + "MOVEMENT_TYPE_ID", + "MOVEMENTTYPE", + "MOVEMENTCONTEXT", + "MOVEMENT_FILE_ID", + "STATUS", + "DISABLE_REASON", + "ENT_TYPE_DEFAULT", + "ENABLE", + "PER_ID", + "FIRST_NAME", + "LAST_NAME", + "CITY_CODE_FROM", + "CITY_CODE_TO", + "COUNTRY_CODE_FROM", + "COUNTRY_CODE_TO", + "MOVEMENTFROM", + "MOVEMENTTO", + "ALLOCATEDTOCURRENT", + "ALLOCATEDTOFUTURE", + "ORG_ID_FROM", + "ORG_ID_TO", + "FILE_ID", + "ENTITLMNT_TYPES_CAT_CODE", + LISTAGG(entitlmnt_maxs_cat_code, ',') WITHIN GROUP( + ORDER BY + entitlmnt_maxs_cat_code + ) AS entitlmnt_maxs_cat_code_list + FROM + ( + SELECT + et.entitlmnt_type_id, + et.entitlmnt_type_catg_id, + mf.year AS movementyear, + et.movement_type_id, + mt.movement_type AS movementtype, + c.name AS movementcontext, + et.movement_file_id, + et.status, + et.disable_reason, + et.ent_type_default, + et.enable, + mf.per_id, + p.first_name AS first_name, + p.last_name AS last_name, + mf.city_code_from, + mf.city_code_to, + mf.country_code_from, + mf.country_code_to, + initcap(ci_from.description_en) + || ', ' + || ct_from.name_en AS movementfrom, + initcap(ci_to.description_en) + || ', ' + || ct_to.name_en AS movementto, + mf.org_cd_from AS allocatedtocurrent, + mf.org_cd_to AS allocatedtofuture, + mf.org_id_from, + mf.org_id_to, + mf.file_id, + emc.code AS entitlmnt_maxs_cat_code, + etc.code AS entitlmnt_types_cat_code + FROM + entitlmnt_maxs_cat emc + INNER JOIN entitlmnt_maxs em ON ( emc.entitlmnt_max_cat_id = em.entitlmnt_max_cat_id ) + INNER JOIN entitlmnt_types et ON ( em.entitlmnt_type_id = et.entitlmnt_type_id ) + INNER JOIN movement_files mf ON ( et.movement_file_id = mf.movement_file_id ) + INNER JOIN entitlmnt_types_cat etc ON ( et.entitlmnt_type_catg_id = etc.entitlmnt_type_cat_id ) + INNER JOIN movement_types mt ON ( mf.movement_type_id = mt.movement_type_id ) + INNER JOIN v_people p ON ( p.per_id = mf.per_id ) + INNER JOIN movement_context c ON ( mf.context_id = c.movement_context_id ) + LEFT JOIN mv_countries ct_from ON ( mf.country_code_from = ct_from.country_code ) + LEFT JOIN mv_cities ci_from ON ( mf.city_code_from = ci_from.city_code + AND ct_from.country_code = ci_from.country_code ) + LEFT JOIN mv_countries ct_to ON ( mf.country_code_to = ct_to.country_code ) + LEFT JOIN mv_cities ci_to ON ( mf.city_code_to = ci_to.city_code + AND ct_to.country_code = ci_to.country_code ) + WHERE + etc.code IN ( 'TUD', 'REM' ) + AND em.max_value IS NULL + AND em.enable = 'Y' + ) + GROUP BY + "ENTITLMNT_TYPE_ID", + "ENTITLMNT_TYPE_CATG_ID", + "MOVEMENTYEAR", + "MOVEMENT_TYPE_ID", + "MOVEMENTTYPE", + "MOVEMENTCONTEXT", + "MOVEMENT_FILE_ID", + "STATUS", + "DISABLE_REASON", + "ENT_TYPE_DEFAULT", + "ENABLE", + "PER_ID", + "FIRST_NAME", + "LAST_NAME", + "CITY_CODE_FROM", + "CITY_CODE_TO", + "COUNTRY_CODE_FROM", + "COUNTRY_CODE_TO", + "MOVEMENTFROM", + "MOVEMENTTO", + "ALLOCATEDTOCURRENT", + "ALLOCATEDTOFUTURE", + "ORG_ID_FROM", + "ORG_ID_TO", + "FILE_ID", + "ENTITLMNT_TYPES_CAT_CODE"; + diff --git a/e-rights-common/src/main/database/release/archive/2.7.0/RIGD-1507 New volumn celling EIS.sql b/e-rights-common/src/main/database/release/archive/2.7.0/RIGD-1507 New volumn celling EIS.sql new file mode 100644 index 0000000..fb2bf2a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.7.0/RIGD-1507 New volumn celling EIS.sql @@ -0,0 +1,9 @@ +ALTER TABLE DECLARATION +ADD (EIS_VOLUME_CEILING NUMBER ); + +ALTER TABLE AUD_DECLARATION +ADD (EIS_VOLUME_CEILING NUMBER ); + + +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('16', 'ADVANCE_REMOVAL', 'PLUS_PER_KID_EIS', '1.17'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('17', 'ADVANCE_REMOVAL', 'PLUS_PER_SPOUSE_EIS', '2.34'); diff --git a/e-rights-common/src/main/database/release/archive/2.7.0/remove.me b/e-rights-common/src/main/database/release/archive/2.7.0/remove.me new file mode 100644 index 0000000..e69de29 diff --git a/e-rights-common/src/main/database/release/archive/2.8.0/07 fix emails template.sql b/e-rights-common/src/main/database/release/archive/2.8.0/07 fix emails template.sql new file mode 100644 index 0000000..77f8bfe --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.8.0/07 fix emails template.sql @@ -0,0 +1,145 @@ +CREATE TABLE bkp$NOTIFICATION_TEMPLATESV2_7 +AS +SELECT + * +FROM + NOTIFICATION_TEMPLATES; + + +delete from ERIGHTS.NOTIFICATION_TEMPLATES; +REM INSERTING into ERIGHTS.NOTIFICATION_TEMPLATES +SET DEFINE OFF; +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (1,'ROTATION','Your assignment to ${MOVEMENT_TO} file has been created in the e-Rights portal','Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment on the post number: ${JOB_ID_TO} has been created in e-Rights. The foreseen start date of your new assignment is on ${START_DATE}.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.
    +
    +${MOVEMENT_FILE_ID}
    +
    +Kind regards,
    +','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CREATE','N'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (2,'SECONDMENT','Your assignment to ${MOVEMENT_TO} file has been created in the e-Rights portal','Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment on the post number: ${JOB_ID_TO} has been created in e-Rights. The foreseen start date of your new assignment is on ${START_DATE}.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.
    +
    +${MOVEMENT_FILE_ID}
    +
    +Kind regards,
    +','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CREATE','N'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (3,'EOC','Your end of assignment file from ${MOVEMENT_FROM} has been created in the e-Rights portal','Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} has been created in e-Rights. The foreseen end date of your assignment is on ${ESTIMATED_END_DATE}.
    +
    +Please, log in to e-Rights using your EU Login and confirm your end of assignment to initiate your entitlements.
    +
    +Should you believe that any correction of your data would be required, please contact us by email. Please do also alert us in case you would be resuming employment with a European Union Institution or Agency directly after the end of your current contract.
    +
    +${MOVEMENT_FILE_ID}
    +
    +Kind regards,
    +','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CREATE','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (4,'ROTATION','Reminder: Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment on the post: ${JOB_ID_TO} is waiting for your confirmation in e-Rights. In the absence of your confirmation, your assignment will be considered withdrawn.

    Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.

    ${MOVEMENT_FILE_ID}
    ','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','REMINDER_AFTER_CREATE','N'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (5,'SECONDMENT','Reminder: Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment on the post: ${JOB_ID_TO} is waiting for your confirmation in e-Rights. In the absence of your confirmation, your assignment will be considered withdrawn.

    Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.

    ${MOVEMENT_FILE_ID}
    ','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','REMINDER_AFTER_CREATE','N'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (6,'EOC','Reminder: Your End of Contract file from ${MOVEMENT_FROM} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} is waiting for your confirmation in e-Rights. In the absence of your confirmation, your assignment will be considered withdrawn.

    Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.

    ${MOVEMENT_FILE_ID}
    ','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','REMINDER_AFTER_CREATE','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (7,'ROTATION','Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},
    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your assignment ${JOB_ID_TO} has been withdrawn on your behalf.
    ','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','WITHDRAW','N'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (8,'SECONDMENT','Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your assignment ${JOB_ID_TO} has been withdrawn.
    ','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','WITHDRAW','N'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (9,'EOC','Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} has been withdrawn.
    ','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','WITHDRAW','N'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (10,'SYSTEM','Report with failed notification emails','The following email notifications are failed : ${MOVEMENT_FILES}
    ','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','REPORT_FAILED_COMMS','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (11,'ENTITLEMENTS_AMOUNTS_SET','Your input is required to generate your removal and travel entitlements via e-Rights','Dear ${FIRST_NAME} ${LAST_NAME},

    The Rotation team has determined your entitlements for removal and travel.

    You will find your entitlements and other necessary information in your movement file in the e-Rights Portal.

    Steps to follow to receive your entitlements:
    • Please make sure to consult the complete rules and guidelines available in e-Rights.
    • Fill in and submit your movement file declaration in e-Rights. Based on your input, e-Rights will generate your corresponding entitlement requests.
    • Submit your declaration and follow the instructions.
    Kind regards,','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CONFIRM','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (12,'ENTITLEMENTS_REQUEST','E-Rights created your request(s).','Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +E-Rights created your entitlement request(s).
    +Please log in to e-Rights to consult your request(s) in your corresponding movement file and act upon as necessary. +

    +Kind regards, +
    ','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CREATE_REQUEST','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (13,'ROTATION','Your assignment to ${MOVEMENT_TO} file has been created in the e-Rights portal','Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment has been created in e-Rights. The foreseen start date of your new assignment is on ${START_DATE}.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.
    +
    +Should you believe that any correction of your data would be required, please contact us by email.
    +
    +${MOVEMENT_FILE_ID}
    +
    +Kind regards,
    +','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CREATE','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (14,'SECONDMENT','Your assignment to ${MOVEMENT_TO} file has been created in the e-Rights portal','Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment has been created in e-Rights. The foreseen start date of your new assignment is on ${START_DATE}.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.
    +
    +Should you believe that any correction of your data would be required, please contact us by email.
    +
    +${MOVEMENT_FILE_ID}
    +
    +Kind regards,
    +','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CREATE','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (15,'ROTATION','Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} has been withdrawn.
    +
    +Log in to e-Rights to consult your movement file.
    +
    +If you disagree, please contact: DEL-POSTINGS@eeas.europa.eu','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','WITHDRAW','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (16,'SECONDMENT','Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} has been withdrawn.
    +
    +Log in to e-Rights to consult your movement file.
    +
    +If you disagree, please contact: DEL-POSTINGS@eeas.europa.eu','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','WITHDRAW','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (17,'EOC','Your End of Contract file from ${MOVEMENT_FROM} has been withdrawn in e-Right Portal','Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} has been withdrawn.
    +
    +Log in to e-Rights to consult your movement file.
    +
    +If you disagree, please contact: DEL-POSTINGS@eeas.europa.eu','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','WITHDRAW','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (18,'ROTATION','Reminder: Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment is waiting for your confirmation in e-Rights. In the absence of your confirmation, your assignment will be considered withdrawn.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.
    +
    +Kind regards,','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','REMINDER_AFTER_CREATE','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (19,'SECONDMENT','Reminder: Your assignment to ${MOVEMENT_TO} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming assignment is waiting for your confirmation in e-Rights. In the absence of your confirmation, your assignment will be considered withdrawn.
    +
    +Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.
    +
    +Kind regards,','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','REMINDER_AFTER_CREATE','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (20,'ENTITLEMENTS_REQUEST','You request ${REQUEST_STRING_ID} was approved.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your request ${REQUEST_STRING_ID} was approved. It will soon be processed for payment. You will be notified accordingly.

    Please consult the details of your request in your movement file in e-Rights.
    +
    Kind regards,','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','APPROVED_REQUEST','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (21,'ENTITLEMENTS_REQUEST','You request ${REQUEST_STRING_ID} was rejected.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your request ${REQUEST_STRING_ID} was rejected.

    Please consult the details of your request in your movement file in e-Rights.
    +
    Kind regards,','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','REJECTED_REQUEST','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (22,'ENTITLEMENTS_REQUEST','${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID}: processed','Dear ${FIRST_NAME} ${LAST_NAME},

    The payment related to your ${ENTITLEMENT_TYPE} request was verified and processed.

    The payment will be credited to your bank account indicated in the request. Please note that it may take several days before the payment is credited on your bank account. All related supporting documents are stored in e-RIGHTS, while the originals must be kept by the Official for a maximum duration of 2 years.

    Log in to e-Rights to consult your request.

    Kind regards,

    ','EEAS.RM.BS.4 Support to Delegation.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu','PAID_REQUEST','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (23,'ENTITLEMENTS_REQUEST','You request ${REQUEST_STRING_ID} was approved.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your request ${REQUEST_STRING_ID} was approved. It will soon be processed for payment. You will be notified accordingly.

    Please consult the details of your request in your movement file in e-Rights.
    +
    Kind regards,','EEAS.RM.BS.4 Support to Delegation.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu','APPROVED_ADV_REM_REQUEST','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (24,'ENTITLEMENTS_REQUEST','You request ${REQUEST_STRING_ID} was rejected.','Dear ${FIRST_NAME} ${LAST_NAME},

    Your request ${REQUEST_STRING_ID} was rejected.

    Please consult the details of your request in your movement file in e-Rights.
    +
    Kind regards,','EEAS.RM.BS.4 Support to Delegation.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu','REJECTED_ADV_REM_REQUEST','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (25,'ENTITLEMENTS_REQUEST','Reminder: You need to clear the removal advance you’ve received','Dear ${FIRST_NAME} ${LAST_NAME}, +

    +Your request for a removal advance from ${FROM_COUNTRY_CITY} to ${TO_COUNTRY_CITY} was processed and paid for an amount of ${AMOUNT} on the ${DATE_OF_PAYMENT}. +

    +This email is a reminder that you still need to clear this advance by encoding a clearing/reimbursement request and uploading the necessary documents through the e-Rights portal +

    +The final deadline for clearing your removal advance is ${PAYMENT_DATE}. Should you not have introduced an advance clearing request by that date, the EEAS reserves the right to recover the full amount of the advance granted to you.

    Log in to e-Rights to consult your request.
    Kind regards,

    ','EEAS.RM.BS.4 Support to Delegation.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu','CLEARING_REQUEST','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (26,'INSTALLATION_REQUEST','E-Rights: ${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID}: Processed','Dear ${FIRST_NAME} ${LAST_NAME},

    Your rights related to your ${ENTITLEMENT_TYPE} request were verified and processed in Sysper. The ${ENTITLEMENT_TYPE} will be paid along with your salary. Please allow some time before it is actually processed by the Payment Office (PMO).

    Please log in to E-Right to consult the details of your installation allowance.

    Kind regards,

    ','EEAS.RM.HR.3 Rotation team.
    Email: DEL-POSTINGS@eeas.europa.eu','PAID_REQUEST','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (27,'INSTALLATION_REQUEST','E-Rights: ${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID}: Updated','Dear ${FIRST_NAME} ${LAST_NAME}, +

    + Your rights related to your ${ENTITLEMENT_TYPE} request were updated in Sysper. The correction of your ${ENTITLEMENT_TYPE} will be paid along with your salary. Please allow some time before it is actually processed by the Payment Office (PMO).

    Please log in to E-Right to consult the details of your installation allowance.

    Kind regards,

    ','EEAS.RM.HR.3 Rotation team.
    Email: DEL-POSTINGS@eeas.europa.eu','UPDATE_REQUEST','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (28,'INSTALLATION_REQUEST','E-Rights: Reminder - Declare your new address in Sysper.','Dear ${FIRST_NAME} ${LAST_NAME}, +

    + It has been ${WEEKS_AFTER_START} since your assignment started in ${COUNTRY}, ${CITY} and you still have not declared your new address in Sysper.
    + This is a gentle reminder to declare your address in Sysper once that you have physically arrived at your new place of assignment with effect as of the exact arrival date. If applicable, do also modify the private address of your dependant family members indicating their habitual residence.
    Thank you for doing the necessary as soon as possible.

    Please disregard this reminder if you have recently submitted your new address declaration in Sysper. It might still be under review and will be taken into consideration by the system once validated.

    Kind regards,

    ','EEAS.RM.HR.3 Rotation team.
    Email: DEL-POSTINGS@eeas.europa.eu','REMINDER','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (29,'INSTALLATION_REQUEST','E-Rights: Steps required to complete your rights and obligations.','Dear ${FIRST_NAME} ${LAST_NAME},

    We hope that you have well arrived at your destination.

    Here is a gentle reminder of the administrative tasks that you should perform:

    If you are terminating your contract:
    • You have 3 years after ending your career/contract to resettle and to submit your resettlement allowance claim with the supporting documents.
    • Clear your removal by clearing your advance request or submitting your reimbursement request in e-Rights.
    If you are moving to a new Delegation:
    • Once that you have physically arrived at your new place of assignment; update your address in Sysper for you and, if applicable, for your Dependents as soon as possible, even in case of temporary housing.
      Address declarations are used as reference to fix your entitlements and to validate travel entitlements of your Dependents, as well as to perform ex-post verifications. Please be aware that an incorrect address in Sysper could lead to the recovery of any unduly paid amounts.
    • Submit your completed and fully signed taking up duties confirmation form by email to DEL-POSTINGS@eeas.europa.eu with the functional mailbox of the HR Service in charge of your post in copy. This signed form is necessary to confirm your physical arrival at your new place of assignment and to validate your address declaration leading to payment of your installation allowance.
    • As soon as your removal has been delivered and you have paid all related invoices, clear your removal by clearing your advance request or submitting your reimbursement request in e-Rights.
    If you are moving to Headquarters:
    • Once that you have physically arrived at your new place of assignment; update your address in Sysper for you and your Dependents as soon as you have moved into permanent housing to be registered with the authorities.
    • As soon as your removal has been delivered and you have paid all related invoices, clear your removal by clearing your advance request or submitting your reimbursement request in e-Rights.
    Thank you for completing these tasks at the earliest possible moment.

    For more information on the procedures, please log in to e-Rights and consult the guidelines applicable to your movement.

    Please ignore tasks that do not apply to your situation.

    Kind regards,

    ','EEAS.RM.HR.3 Rotation team. Email: DEL-POSTINGS@eeas.europa.eu
    EEAS.RM.BS.4 Support to Delegation. Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu ','START','Y'); +Insert into ERIGHTS.NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (30,'EIS_AMOUNTS_SET','Removals: Your Entry-into-Storage Ceiling has been set.','Dear ${FIRST_NAME} ${LAST_NAME}, +

    You have recently requested an Entry-into-Storage Ceiling and it has been set in your movement file. You can now submit your Removal requests with all the related documents. +

    Please log in to e-Rights to consult the ceiling and submit your request.','EEAS.RM.HR.3 Rotation team
    Email: DEL-POSTINGS@eeas.europa.eu','CONFIRM','Y'); diff --git a/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/01.RIGD-1551-UPDATE-INSTALLATION-REQUEST-PAYMENT.sql b/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/01.RIGD-1551-UPDATE-INSTALLATION-REQUEST-PAYMENT.sql new file mode 100644 index 0000000..1518446 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/01.RIGD-1551-UPDATE-INSTALLATION-REQUEST-PAYMENT.sql @@ -0,0 +1,21 @@ +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID = 26; + +Insert into NOTIFICATION_TEMPLATES +(NOTIFICATION_TEMPLATE_ID, + NOTIFICATION_TEMPLATE_TYPE, + MESSAGE_SUBJECT, + MESSAGE_BODY, + MESSAGE_SIGNATURE, + NOTIFICATION_TEMPLATE_CODE, + DEFAULT_TEMPLATE) values + (26, + 'INSTALLATION_REQUEST', + 'E-Rights: ${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID}: Processed', + 'Dear ${FIRST_NAME} ${LAST_NAME},

    ' || + 'Your rights related to your ${ENTITLEMENT_TYPE} request were verified and processed in Sysper. The ${ENTITLEMENT_TYPE} will ' || + 'be paid along with your salary. Please allow some time before it is actually processed by the Payment Office (PMO).

    ' || + 'Please log in to E-Right to consult the details of your installation allowance.

    ' || + 'Kind regards,

    ', + 'EEAS.RM.HR.3 Rotation team.
    Email: DEL-POSTINGS@eeas.europa.eu', + 'PAID_REQUEST', + 'Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/02.RIGD-1544-UPDATE-INSTALLATION-UPDATE_Insert.sql b/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/02.RIGD-1544-UPDATE-INSTALLATION-UPDATE_Insert.sql new file mode 100644 index 0000000..4b989ab --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/02.RIGD-1544-UPDATE-INSTALLATION-UPDATE_Insert.sql @@ -0,0 +1,22 @@ +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID = 27; + +Insert into NOTIFICATION_TEMPLATES +(NOTIFICATION_TEMPLATE_ID, +NOTIFICATION_TEMPLATE_TYPE, +MESSAGE_SUBJECT, +MESSAGE_BODY, +MESSAGE_SIGNATURE, +NOTIFICATION_TEMPLATE_CODE, +DEFAULT_TEMPLATE) values +(27, +'INSTALLATION_REQUEST', +'E-Rights: ${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID}: Updated', +'Dear ${FIRST_NAME} ${LAST_NAME}, +

    +Your rights related to your ${ENTITLEMENT_TYPE} request were updated in Sysper. The correction of your ${ENTITLEMENT_TYPE} ' || +'will be paid along with your salary. Please allow some time before it is actually processed by the Payment Office (PMO).

    ' || +'Please log in to E-Right to consult the details of your installation allowance.

    ' || +'Kind regards,

    ', +'EEAS.RM.HR.3 Rotation team.
    Email: DEL-POSTINGS@eeas.europa.eu', +'UPDATE_REQUEST', +'Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/03.RIGD-1544-INSTALLATION-REMINDER_Update.sql b/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/03.RIGD-1544-INSTALLATION-REMINDER_Update.sql new file mode 100644 index 0000000..31523b7 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/03.RIGD-1544-INSTALLATION-REMINDER_Update.sql @@ -0,0 +1,27 @@ +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID =28; + +Insert into NOTIFICATION_TEMPLATES +(NOTIFICATION_TEMPLATE_ID, +NOTIFICATION_TEMPLATE_TYPE, +MESSAGE_SUBJECT, +MESSAGE_BODY, +MESSAGE_SIGNATURE, +NOTIFICATION_TEMPLATE_CODE, +DEFAULT_TEMPLATE) values +(28, +'INSTALLATION_REQUEST', +'E-Rights: Reminder - Declare your new address in Sysper.', +'Dear ${FIRST_NAME} ${LAST_NAME}, +

    +It has been ${WEEKS_AFTER_START} since your assignment started in ${COUNTRY}, ${CITY} and you still have not declared ' || +'your new address in Sysper.
    +This is a gentle reminder to declare your address in Sysper once that you have physically arrived at your new place of ' || +'assignment with effect as of the exact arrival date. If applicable, do also modify the private address of your dependant ' || +'family members indicating their habitual residence.
    ' || +'Thank you for doing the necessary as soon as possible.

    ' || +'Please disregard this reminder if you have recently submitted your new address declaration in Sysper. ' || +'It might still be under review and will be taken into consideration by the system once validated.

    ' || +'Kind regards,

    ', +'EEAS.RM.HR.3 Rotation team.
    Email: DEL-POSTINGS@eeas.europa.eu', +'REMINDER', +'Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/04.RIGD-1544-UPDATE-INSTALLATION-START_Insert.sql b/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/04.RIGD-1544-UPDATE-INSTALLATION-START_Insert.sql new file mode 100644 index 0000000..a63fc95 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/04.RIGD-1544-UPDATE-INSTALLATION-START_Insert.sql @@ -0,0 +1,42 @@ +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID =29; + + +Insert into NOTIFICATION_TEMPLATES +(NOTIFICATION_TEMPLATE_ID, +NOTIFICATION_TEMPLATE_TYPE, +MESSAGE_SUBJECT, +MESSAGE_BODY, +MESSAGE_SIGNATURE, +NOTIFICATION_TEMPLATE_CODE, +DEFAULT_TEMPLATE) values +(29, +'INSTALLATION_REQUEST', +'E-Rights: Steps required to complete your rights and obligations.', +'Dear ${FIRST_NAME} ${LAST_NAME},

    ' || +'We hope that you have well arrived at your destination.

    ' || +'Here is a gentle reminder of the administrative tasks that you should perform:

    ' || +'If you are terminating your contract:' || +'
      ' || +'
    • You have 3 years after ending your career/contract to resettle and to submit your resettlement allowance claim with the supporting documents.
    • ' || +'
    • Clear your removal by clearing your advance request or submitting your reimbursement request in e-Rights.
    • ' || +'
    ' || +'If you are moving to a new Delegation:' || +'
      ' || +'
    • Once that you have physically arrived at your new place of assignment; update your address in Sysper for you and, if applicable, for your Dependents as soon as possible, even in case of temporary housing.
      ' || +'Address declarations are used as reference to fix your entitlements and to validate travel entitlements of your Dependents, as well as to perform ex-post verifications. Please be aware that an incorrect address in Sysper could lead to the recovery of any unduly paid amounts.
    • ' || +'
    • Submit your completed and fully signed taking up duties confirmation form by email to DEL-POSTINGS@eeas.europa.eu with the functional mailbox of the HR Service in charge of your post in copy. This signed form is necessary to confirm your physical arrival at your new place of assignment and to validate your address declaration leading to payment of your installation allowance.
    • ' || +'
    • As soon as your removal has been delivered and you have paid all related invoices, clear your removal by clearing your advance request or submitting your reimbursement request in e-Rights.
    • ' || +'
    ' || +'If you are moving to Headquarters:' || +'
      ' || +'
    • Once that you have physically arrived at your new place of assignment; update your address in Sysper for you and your Dependents as soon as you have moved into permanent housing to be registered with the authorities.
    • ' || +'
    • As soon as your removal has been delivered and you have paid all related invoices, clear your removal by clearing your advance request or submitting your reimbursement request in e-Rights.
    • ' || +'
    ' || +'Thank you for completing these tasks at the earliest possible moment.

    ' || +'For more information on the procedures, please log in to e-Rights and consult the guidelines applicable to your movement.

    ' || +'Please ignore tasks that do not apply to your situation.

    ' || +'Kind regards,

    ', +'EEAS.RM.HR.3 Rotation team. Email: DEL-POSTINGS@eeas.europa.eu
    ' || +'EEAS.RM.BS.4 Support to Delegation. Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu ', +'START', +'Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/05.RIGD-1559-ROLLBACK-UPDATE-ENTITLEMENT-REQUEST-PAYMENT.sql b/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/05.RIGD-1559-ROLLBACK-UPDATE-ENTITLEMENT-REQUEST-PAYMENT.sql new file mode 100644 index 0000000..3b90b9c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/05.RIGD-1559-ROLLBACK-UPDATE-ENTITLEMENT-REQUEST-PAYMENT.sql @@ -0,0 +1,17 @@ +UPDATE notification_templates +SET + message_subject = '${ENTITLEMENT_TYPE} request - ${REQUEST_STRING_ID}: processed', + message_body = 'Dear ${FIRST_NAME} ${LAST_NAME},

    ' + || 'The payment related to your ${ENTITLEMENT_TYPE} request was verified and processed.

    ' + || 'The payment will be credited to your bank account indicated in the request. ' + || 'Please note that it may take several days before the payment is credited on your bank account. ' + || 'All related supporting documents are stored in e-RIGHTS, while the originals must be kept by the Official for a maximum duration of 2 years.

    ' + || 'Log in to e-Rights to consult your request.

    ' + || 'Kind regards,

    ', + message_signature = 'EEAS.RM.BS.4 Support to Delegation.
    Email: SUPPORT-TO-DELEGATIONS-EXPAT-ENTITLEMENTS@eeas.europa.eu', + + default_template = 'Y' +WHERE + notification_template_id = 22 + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/09.mapping_subpost.sql b/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/09.mapping_subpost.sql new file mode 100644 index 0000000..0d07fe1 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/09.mapping_subpost.sql @@ -0,0 +1,81 @@ +DROP TABLE BUDGET_LINES_SUBPOSTS_MAPPING; + +CREATE TABLE BUDGET_LINES_SUBPOSTS_MAPPING +( + BUDGET_LINES_SUBPOSTS_MAPPING_ID NUMBER NOT NULL + , BUDGET_LINES VARCHAR2(200) + , BUDGET_POSITION_BUDGDEL VARCHAR2(100) + , BUDGET_POSITION_ERIGHTS VARCHAR2(100) + , FUND_SOURCE VARCHAR2(20) + , REQUEST_TYPE VARCHAR2(50) + , STATUTORY_LINK VARCHAR2(20) + , SUBPOST_CODE VARCHAR2(50) + , SUBPOST_DESCRIPTION VARCHAR2(1000) + ,PERSONNEL_TYPE_ID NUMBER + ,LST_CD VARCHAR2(3) + ,SUBPOST_TYPE VARCHAR2(50) + + , CONSTRAINT BUDGET_LINES_SUBPOSTS_MAPPING_PK PRIMARY KEY + ( + BUDGET_LINES_SUBPOSTS_MAPPING_ID + ) + ENABLE +); + +REM INSERTING into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING +SET DEFINE OFF; +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (1,'EEAS-B2021-3002-C1-EEAS DELEASBS4 A6004','3002','3000-C1-EEAS','C1','TUD','Officials','A600401','OFFICIALS - TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (2,'EEAS-B2021-3002-C1-EEAS DELEASBS4 A6004','3002','3000-C1-EEAS','C1','REM','Officials','A600403','OFFICIALS - COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (3,'EEAS-B2021-3002-C1-EEAS DELEASBS4 A6004','3002','3000-C1-EEAS','C1','REM','Officials','A600404','OFFICIALS - STORAGE OF FURNITURE',1,'FP','STORAGE'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (4,'EEAS-B2021-3002-C1-EEAS DELEASBS4 A6004','3002','3001-C1-EEAS','C1','TUD','CA','A600405','CA - TRAVEL COSTS FOR THE PURPOSE OF ROTATION',106,'CA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (5,'EEAS-B2021-3002-C1-EEAS DELEASBS4 A6004','3002','3001-C1-EEAS','C1','REM','CA','A600407','CA - COST OF REMOVAL AND INSURANCE OF REMOVAL',106,'CA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (6,'EEAS-B2021-3002-C1-EEAS DELEASBS4 A6004','3002','3001-C1-EEAS','C1','REM','CA','A600408','CA - STORAGE OF FURNITURE',106,'CA','STORAGE'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (46,'EEAS-B2021-3005.01.01.CNT-C4-EEAS DELEASBS4 B3401','3005.01.01.CNT','3005.01.01.CNT','C4','TUD','Officials and CA','B340101','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (47,'EEAS-B2021-3005.01.01.CNT-C4-EEAS DELEASBS4 B3401','3005.01.01.CNT','3005.01.01.CNT','C4','REM','Officials and CA','B340102','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (48,'EEAS-B2021-3005.01.01.CNT-C4-EEAS DELEASBS4 B3401','3005.01.01.CNT','3005.01.01.CNT','C4','REM','Officials and CA','B340103','EXPAT STAFF - STORAGE OF FURNITURE',1,'NA','STORAGE'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (50,'EEAS-B2021-3005.01.01.RTD-C4-EEAS DELEASBS4 B3401','3005.01.01.RTD','3005.01.01.RTD','C4','REM','Officials and CA','B340102','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (49,'EEAS-B2021-3005.01.01.RTD-C4-EEAS DELEASBS4 B3401','3005.01.01.RTD','3005.01.01.RTD','C4','TUD','Officials and CA','B340101','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (51,'EEAS-B2021-3005.01.01.RTD-C4-EEAS DELEASBS4 B3401','3005.01.01.RTD','3005.01.01.RTD','C4','REM','Officials and CA','B340103','EXPAT STAFF - STORAGE OF FURNITURE',1,'NA','STORAGE'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (53,'EEAS-B2021-3005.08.01.MAR-C4-EEAS DELEASBS4 B3401','3005.08.01.MAR','3005.08.01.MAR','C4','REM','Officials and CA','B340102','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (52,'EEAS-B2021-3005.08.01.MAR-C4-EEAS DELEASBS4 B3401','3005.08.01.MAR','3005.08.01.MAR','C4','TUD','Officials and CA','B340101','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (54,'EEAS-B2021-3005.08.01.MAR-C4-EEAS DELEASBS4 B3401','3005.08.01.MAR','3005.08.01.MAR','C4','REM','Officials and CA','B340103','EXPAT STAFF - STORAGE OF FURNITURE',1,'NA','STORAGE'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (56,'EEAS-B2021-3005.14.01.FPI-C4-EEAS DELEASBS4 B3401','3005.14.01.FPI','3005.14.01.FPI','C4','REM','Officials and CA','B340102','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (55,'EEAS-B2021-3005.14.01.FPI-C4-EEAS DELEASBS4 B3401','3005.14.01.FPI','3005.14.01.FPI','C4','TUD','Officials and CA','B340101','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (57,'EEAS-B2021-3005.14.01.FPI-C4-EEAS DELEASBS4 B3401','3005.14.01.FPI','3005.14.01.FPI','C4','REM','Officials and CA','B340103','EXPAT STAFF - STORAGE OF FURNITURE',1,'NA','STORAGE'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (58,'EEAS-B2021-3005.14.01.INT-C4-EEAS DELEASBS4 B3401','3005.14.01.INT','3005.14.01.INT','C4','TUD','Officials and CA','B340101','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (59,'EEAS-B2021-3005.14.01.INT-C4-EEAS DELEASBS4 B3401','3005.14.01.INT','3005.14.01.INT','C4','REM','Officials and CA','B340102','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (60,'EEAS-B2021-3005.14.01.INT-C4-EEAS DELEASBS4 B3401','3005.14.01.INT','3005.14.01.INT','C4','REM','Officials and CA','B340103','EXPAT STAFF - STORAGE OF FURNITURE',1,'NA','STORAGE'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (61,'EEAS-B2021-3005.14.01.NEA-C4-EEAS DELEASBS4 B3401','3005.14.01.NEA','3005.14.01.NEA','C4','TUD','Officials and CA','B340101','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (62,'EEAS-B2021-3005.14.01.NEA-C4-EEAS DELEASBS4 B3401','3005.14.01.NEA','3005.14.01.NEA','C4','REM','Officials and CA','B340102','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (63,'EEAS-B2021-3005.14.01.NEA-C4-EEAS DELEASBS4 B3401','3005.14.01.NEA','3005.14.01.NEA','C4','REM','Officials and CA','B340103','EXPAT STAFF - STORAGE OF FURNITURE',1,'NA','STORAGE'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (65,'EEAS-B2021-3005.15.01.AGR-C4-EEAS DELEASBS4 B3401','3005.15.01.AGR','3005.15.01.AGR','C4','REM','Officials and CA','B340102','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (64,'EEAS-B2021-3005.15.01.AGR-C4-EEAS DELEASBS4 B3401','3005.15.01.AGR','3005.15.01.AGR','C4','TUD','Officials and CA','B340101','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (66,'EEAS-B2021-3005.15.01.AGR-C4-EEAS DELEASBS4 B3401','3005.15.01.AGR','3005.15.01.AGR','C4','REM','Officials and CA','B340103','EXPAT STAFF - STORAGE OF FURNITURE',1,'NA','STORAGE'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (68,'EEAS-B2021-3005.15.01.NEA-C4-EEAS DELEASBS4 B3401','3005.15.01.NEA','3005.15.01.NEA','C4','REM','Officials and CA','B340102','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (67,'EEAS-B2021-3005.15.01.NEA-C4-EEAS DELEASBS4 B3401','3005.15.01.NEA','3005.15.01.NEA','C4','TUD','Officials and CA','B340101','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (69,'EEAS-B2021-3005.15.01.NEA-C4-EEAS DELEASBS4 B3401','3005.15.01.NEA','3005.15.01.NEA','C4','REM','Officials and CA','B340103','EXPAT STAFF - STORAGE OF FURNITURE',1,'NA','STORAGE'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (71,'EEAS-B2021-3005.15.01.NEA-R0-EEAS 2021 DELEASBS4 B3401','3005.15.01.NEA','3005.15.01.NEA.R0','R0 2021','REM','Officials and CA','B340102','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (70,'EEAS-B2021-3005.15.01.NEA-R0-EEAS 2021 DELEASBS4 B3401','3005.15.01.NEA','3005.15.01.NEA.R0','R0 2021','TUD','Officials and CA','B340101','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (72,'EEAS-B2021-3005.15.01.NEA-R0-EEAS 2021 DELEASBS4 B3401','3005.15.01.NEA','3005.15.01.NEA.R0','R0 2021','REM','Officials and CA','B340103','EXPAT STAFF - STORAGE OF FURNITURE',1,'NA','STORAGE'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (73,'EEAS-B2021-3005.16.T4.NEA-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T4.NEA','3005.16.T4.NEA','R0 2021','TUD','Officials and CA','B340101','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (74,'EEAS-B2021-3005.16.T4.NEA-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T4.NEA','3005.16.T4.NEA','R0 2021','REM','Officials and CA','B340102','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (75,'EEAS-B2021-3005.16.T4.NEA-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T4.NEA','3005.16.T4.NEA','R0 2021','REM','Officials and CA','B340103','EXPAT STAFF - STORAGE OF FURNITURE',1,'NA','STORAGE'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (76,'EEAS-B2021-3005.16.T5.INT-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T5.INT','3005.16.T5.INT','R0 2021','TUD','Officials and CA','B340101','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (77,'EEAS-B2021-3005.16.T5.INT-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T5.INT','3005.16.T5.INT','R0 2021','REM','Officials and CA','B340102','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (78,'EEAS-B2021-3005.16.T5.INT-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T5.INT','3005.16.T5.INT','R0 2021','REM','Officials and CA','B340103','EXPAT STAFF - STORAGE OF FURNITURE',1,'NA','STORAGE'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (79,'EEAS-B2021-3005.16.T5.NEA-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T5.NEA','3005.16.T5.NEA','R0 2021','TUD','Officials and CA','B340101','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (80,'EEAS-B2021-3005.16.T5.NEA-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T5.NEA','3005.16.T5.NEA','R0 2021','REM','Officials and CA','B340102','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (81,'EEAS-B2021-3005.16.T5.NEA-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T5.NEA','3005.16.T5.NEA','R0 2021','REM','Officials and CA','B340103','EXPAT STAFF - STORAGE OF FURNITURE',1,'NA','STORAGE'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (83,'EEAS-B2021-3005.16.T6.INT-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T6.INT','3005.16.T6.INT','R0 2021','REM','Officials and CA','B340102','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (82,'EEAS-B2021-3005.16.T6.INT-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T6.INT','3005.16.T6.INT','R0 2021','TUD','Officials and CA','B340101','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (84,'EEAS-B2021-3005.16.T6.INT-R0-EEAS 2021 DELEASBS4 B3401','3005.16.T6.INT','3005.16.T6.INT','R0 2021','REM','Officials and CA','B340103','EXPAT STAFF - STORAGE OF FURNITURE',1,'NA','STORAGE'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (86,'EEAS-B2021-3005.20.01.INT-C4-EEAS DELEASBS4 B3104','3005.20.01.INT','3005.20.01.INT','C4','REM','Officials','B310403','OFFICIALS - COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'FP','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (85,'EEAS-B2021-3005.20.01.INT-C4-EEAS DELEASBS4 B3104','3005.20.01.INT','3005.20.01.INT','C4','TUD','Officials','B310401','OFFICIALS - TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'FP','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (87,'EEAS-B2021-3005.20.01.INT-C4-EEAS DELEASBS4 B3104','3005.20.01.INT','3005.20.01.INT','C4','REM','Officials','B310404','OFFICIALS - STORAGE OF FURNITURE',1,'FP','STORAGE'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (88,'EEAS-B2021-3005.20.02.INT-C4-EEAS DELEASBS4 B3203','3005.20.02.INT','3005.20.02.INT','C4','TUD','CA','B320305','CA - TRAVEL COSTS FOR THE PURPOSE OF ROTATION',106,'CA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (89,'EEAS-B2021-3005.20.02.INT-C4-EEAS DELEASBS4 B3203','3005.20.02.INT','3005.20.02.INT','C4','REM','CA','B320307','CA - COST OF REMOVAL AND INSURANCE OF REMOVAL',106,'CA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (90,'EEAS-B2021-3005.20.02.INT-C4-EEAS DELEASBS4 B3203','3005.20.02.INT','3005.20.02.INT','C4','REM','CA','B320308','CA - STORAGE OF FURNITURE',106,'CA','STORAGE'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (91,'EEAS-B2021-3005.20.03.OLA-C4-EEAS DELEASBS4 B3401','3005.20.03.OLA','3005.20.03.OLA','C4','TUD','Officials and CA','B340101','TRAVEL COSTS FOR THE PURPOSE OF ROTATION',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (92,'EEAS-B2021-3005.20.03.OLA-C4-EEAS DELEASBS4 B3401','3005.20.03.OLA','3005.20.03.OLA','C4','REM','Officials and CA','B340102','COST OF REMOVAL AND INSURANCE OF REMOVAL',1,'NA','PERSONAL'); +Insert into ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING (BUDGET_LINES_SUBPOSTS_MAPPING_ID,BUDGET_LINES,BUDGET_POSITION_BUDGDEL,BUDGET_POSITION_ERIGHTS,FUND_SOURCE,REQUEST_TYPE,STATUTORY_LINK,SUBPOST_CODE,SUBPOST_DESCRIPTION,PERSONNEL_TYPE_ID,LST_CD,SUBPOST_TYPE) values (93,'EEAS-B2021-3005.20.03.OLA-C4-EEAS DELEASBS4 B3401','3005.20.03.OLA','3005.20.03.OLA','C4','REM','Officials and CA','B340103','EXPAT STAFF - STORAGE OF FURNITURE',1,'NA','STORAGE'); +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/RIGD-1507-airfreightcolumn.sql b/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/RIGD-1507-airfreightcolumn.sql new file mode 100644 index 0000000..2f8598b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.8.0/2.8.0/RIGD-1507-airfreightcolumn.sql @@ -0,0 +1,71 @@ +ALTER TABLE DECLARATION RENAME COLUMN EIS_VOLUME_CEILING TO AIRFREIGHT_VOLUME_CEILING; + +ALTER TABLE AUD_DECLARATION RENAME COLUMN EIS_VOLUME_CEILING TO AIRFREIGHT_VOLUME_CEILING; + +DELETE FROM "ERIGHTS"."APP_PARAMETERS" WHERE PARAMETER_ID in (16,17); + + +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('16', 'ADVANCE_REMOVAL', 'PLUS_PER_KID_AIRFREIGHT', '1.17'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('17', 'ADVANCE_REMOVAL', 'PLUS_PER_SPOUSE_AIRFREIGHT', '2.34'); + + +ALTER TABLE MOVEMENT_FILES +ADD (JOBTO_FAMILY_POSTING CHAR(1) ); + +ALTER TABLE MOVEMENT_FILES +ADD (HOD_POSTING CHAR(1) ); + +ALTER TABLE MOVEMENT_FILES +ADD (AIRFREIGHT_VOLUME_CEILING NUMBER ); + + +ALTER TABLE AUD_MOVEMENT_FILES +ADD (JOBTO_FAMILY_POSTING CHAR(1) ); + +ALTER TABLE AUD_MOVEMENT_FILES +ADD (HOD_POSTING CHAR(1) ); + +ALTER TABLE AUD_MOVEMENT_FILES +ADD (AIRFREIGHT_VOLUME_CEILING NUMBER ); + + + + +ALTER TABLE ENTITLMNT_MAXS +ADD (MAX_VOLUME NUMBER ); + + +ALTER TABLE ENTITLMNT_MAXS +ADD (MAX_KG NUMBER ); + +ALTER TABLE DECLARATION +ADD (AIRFREIGHT_KG_CEILING NUMBER ); + +ALTER TABLE AUD_DECLARATION +ADD (AIRFREIGHT_KG_CEILING NUMBER ); + + + + +ALTER TABLE REQUESTS +ADD (AIRFREIGHT_KG_CEILING NUMBER ); + +ALTER TABLE REQUESTS +ADD (AIRFREIGHT_VOLUME_CEILING NUMBER ); + +ALTER TABLE AUD_REQUESTS +ADD (AIRFREIGHT_KG_CEILING NUMBER ); + +ALTER TABLE AUD_REQUESTS +ADD (AIRFREIGHT_VOLUME_CEILING NUMBER ); + +update app_parameters +set PARAMETER_VALUE = '166.6666667' +where PARAMETER_ID = 4; + +update app_parameters +set PARAMETER_VALUE = '4.68' +where PARAMETER_ID = 15; + + + diff --git a/e-rights-common/src/main/database/release/archive/2.8.0/create mv_budget_line_data.sql b/e-rights-common/src/main/database/release/archive/2.8.0/create mv_budget_line_data.sql new file mode 100644 index 0000000..c42a5d2 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.8.0/create mv_budget_line_data.sql @@ -0,0 +1,43 @@ +DROP MATERIALIZED VIEW "ERIGHTS"."MV_BUDGET_LINE_DATA"; + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_BUDGET_LINE_DATA" ( + "ID", + "BUDGET_LINE_DATA_ID", + "PARENT_LOCAL_KEY", + "BUDGET_LINE", + "MAIN_ACCOUNT", + "BUDGET_POSITION", + "FUND_SOURCE", + "DELEGATION", + "LVL_CODE", + "LVL_NAME", + "COMMITMENT_ID", + "EXERCISE_ID", + "FUND_SOURCE_GROUP", + "PAYMENT_CREDITS_AVAILABLE_EUR", + "RAL", + "TOTAL_COMMITMENTS_EUR" +) + AS +SELECT + m.id, + m.id || fund_source BUDGET_LINE_DATA_ID , + m.parent_local_key, + m.budget_line, + m.main_account, + m.budget_position, + m.fund_source, + m.delegation, + m.lvl_code, + m.lvl_name, + m.commitment_id, + m.exercise_id, + m.fund_source_group, + m.payment_credits_available_eur, + m.ral, + m.total_commitments_eur +FROM + mv_report_summary_op_flat@easrefn.cc.cec.eu.int m; + +COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_BUDGET_LINE_DATA" IS + 'snapshot table for snapshot ERIGHTS.MV_BUDGET_LINE_DATA'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.8.1/01_RIGD-1934_V_JOBS.sql b/e-rights-common/src/main/database/release/archive/2.8.1/01_RIGD-1934_V_JOBS.sql new file mode 100644 index 0000000..48a8dc0 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.8.1/01_RIGD-1934_V_JOBS.sql @@ -0,0 +1,231 @@ +CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_JOBS" ( + "JOB_ID", + "JOB_MOMENT", + "JOB_TYPE", + "PERSONNEL_TYPE_DESC", + "BUDGETARY_LINE", + "JOB_CITY_CODE", + "JOB_CITY_NAME", + "JOB_COUNTRY_CODE", + "JOB_COUNTRY_NAME", + "ORGANIZATION_COUNTRY", + "ORGANIZATION_CITY", + "ORGANIZATION_NAME", + "ORG_ID", + "ASSIGN_START_DATE_TO", + "ASSIGN_END_DATE_TO", + "PER_ID", + "SEVERITY_LEVEL", + "EVACUATION_LEVEL_CODE_ID", + "ALERT_STATUS_ID", + "EVACUATION_LEVEL_CODE", + "ORGANIZATION_COUNTRY_CODE", + "ORGANIZATION_CITY_CODE", + "FAMILY_POSTING_TYPE_ID", + "FAMILY_POSTING_TYPE", + "HOD", + "FAMILY_POSTING_TYPE_CAT", + "BUDGET_LINE", + "DELEGATION_ORG_ID" +) AS + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + delstat.org_id delegation_org_id + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_eeas jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist enth2 + WHERE + enth.org_id = enth2.org_id + ) + UNION ALL + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + delstat.org_id delegation_org_id + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + WHERE + NOT EXISTS ( + SELECT + 1 + FROM + mv_jobs_hist_eeas jobhe + WHERE + jobh.job_id = jobhe.job_id + ) + AND jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_com jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist enth2 + WHERE + enth.org_id = enth2.org_id + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC01/06. Create requet abac entity.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC01/06. Create requet abac entity.sql new file mode 100644 index 0000000..b11b5d5 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC01/06. Create requet abac entity.sql @@ -0,0 +1,61 @@ +DROP TABLE ABAC_ENTITY; +DROP TABLE "ERIGHTS"."REQUEST_ABAC_ENTITY"; +DROP TABLE "ERIGHTS"."REQUEST_ABAC_ITEM"; + +CREATE TABLE "ERIGHTS"."REQUEST_ABAC_ITEM" +( "ID" NUMBER NOT NULL ENABLE, + "TYPE" VARCHAR2(50 BYTE), + "ABAC_COMM_ID" RAW(16), + "STATE" VARCHAR2(20 BYTE), + "REQUEST_ID" NUMBER, + CONSTRAINT "REQUEST_ABAC_ITEM" PRIMARY KEY ("ID") + USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS + TABLESPACE "ERIGHTS" ENABLE +) SEGMENT CREATION DEFERRED + PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 + NOCOMPRESS LOGGING + TABLESPACE "ERIGHTS" ; + +drop sequence "ERIGHTS"."SEQ_ABACENTITY"; +CREATE SEQUENCE SEQ_REQUEST_ABAC_ITEM INCREMENT BY 1 START WITH 1; + + + +ALTER TABLE REQUEST_ABAC_ITEM + ADD (MESSAGES VARCHAR2(3000) ); + + +ALTER TABLE REQUESTS + ADD (ABAC_STATE VARCHAR2(50) ); + +ALTER TABLE AUD_REQUESTS + ADD (ABAC_STATE VARCHAR2(50) ); + +ALTER TABLE REQUEST_ABAC_ITEM + ADD (ABAC_ID VARCHAR2(50) ); + + +ALTER TABLE REQUEST_ABAC_ITEM + ADD (CREATED_BY NUMBER ); + +ALTER TABLE REQUEST_ABAC_ITEM + ADD (CREATED_AT TIMESTAMP ); + +ALTER TABLE REQUEST_ABAC_ITEM + ADD (UPDATED_BY NUMBER ); + +ALTER TABLE REQUEST_ABAC_ITEM + ADD (UPDATED_AT TIMESTAMP ); + + +ALTER TABLE REQUESTS + ADD (ABAC_WORKFLOW_STATE VARCHAR2(50) ); + +ALTER TABLE AUD_REQUESTS + ADD (ABAC_WORKFLOW_STATE VARCHAR2(50) ); + + +ALTER TABLE REQUEST_ABAC_ITEM + ADD (REQUEST_PAYMENT_ABAC_INFO_ID NUMBER ); + + diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC01/08 new app parameter for abac.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC01/08 new app parameter for abac.sql new file mode 100644 index 0000000..7c1d075 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC01/08 new app parameter for abac.sql @@ -0,0 +1,46 @@ +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('42', 'ABAC', 'FINANCIAL_REGULATION_GROUP_CODE', 'FR2018'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('18', 'ABAC', 'LOCAL_SYSTEM_CODE', 'RGH'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('19', 'ABAC', 'BUDGET_POSITION_EEAS_JOB', '3002'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('20', 'ABAC', 'BUDGET_COMPANY_CODE', 'EEAS'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('21', 'ABAC', 'RESPONSIBLE_ORGANISATION_NAME', 'EEAS'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('22', 'ABAC', 'RESPONSIBLE_ORGANISATION_TYPE_CODE', 'DG'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('23', 'ABAC', 'WORKFLOW_CENTER_CODE', 'EEAS_STANDARD'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('24', 'ABAC', 'ORGANISATION_NAME', 'EEAS'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('25', 'ABAC', 'BUDGET_MANAGEMENT_TYPE_CODE', 'DM'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('26', 'ABAC', 'IMPLEMENTED_BY_CODE', 'BD'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('27', 'ABAC', 'EXPENDITURE_CODE', 'AUT'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('28', 'ABAC', 'GL_ACCOUNT', '62050000'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('29', 'ABAC', 'GL_TYPE_CODE', 'STAFF'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('30', 'ABAC', 'RESPONSIBLE_ORGANISATION_NAME_BS4', 'DELEASBS4'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('31', 'ABAC', 'RESPONSIBLE_ORGANISATION_TYPE_CODE_BS4', 'UNT'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('32', 'ABAC', 'TIME_LIMIT_CODE', 'NA'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('33', 'ABAC', 'PAYMENT_TIME_LIMIT_NOT_APPLICABLE_CODE', 'SL'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('34', 'ABAC', 'FINANCIAL_REGULATION_CODE', 'FR'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('35', 'ABAC', 'RULE_CODE', 'EX_OTHER'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('36', 'ABAC', 'SUPPORTING_DOC_DESCRIPTION', 'Supporting Doc for Test'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('37', 'ABAC', 'DOCUMENT_TYPE', 'AUT'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('38', 'ABAC', 'VERSION', 'v1.0'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('39', 'ABAC', 'BUDGET_MANAGEMENT_TYPE_CODE', 'DM'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('40', 'ABAC', 'DEFAULT_ISO_3_CODE', 'EUR'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('41', 'ABAC', 'ACTION_CODE_AC', 'AC'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('43', 'ABAC', 'EXERCISE_YEAR', '2021'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('44', 'ABAC', 'BUDGETARY_COMMITMENT_LOCAL_KEY', 'EAS.48352'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('45', 'ABAC', 'SIGN_AS_AGENT_TYPE', 'FA'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('46', 'ABAC', 'SUPPLIED_AGENT_NAME_VISA', 'ITAPIAFE'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('47', 'ABAC', 'PAYMENT_EXECUTION_METHOD', 'C'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('48', 'ABAC', 'INVOICE_REFERENCE', 'REF2'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('45', 'ABAC', 'SIGN_AS_AGENT_TYPE', 'FA'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('46', 'ABAC', 'SUPPLIED_AGENT_NAME_VISA', 'ITAPIAFE'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('47', 'ABAC', 'PAYMENT_EXECUTION_METHOD', 'C'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('48', 'ABAC', 'INVOICE_REFERENCE', 'REF2'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('49', 'ABAC', 'COMMITMENT_JUSTIFICATION_CODE', 'NA'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('50', 'ABAC', 'ACTION_CODE_2ND_VISA', 'NA'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('51', 'ABAC', 'COMMENT_TEXT_2ND_VISA', '2nd VISA GIVEN FROM ERIGHTS'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('52', 'ABAC', 'POSTING_CRITERIA_SUBPOST_TYPE_CODE', 'DELPOS21'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('53', 'ABAC', 'LOCAL_SYSTEM_CODE_POSTING_CRITERIA', 'EAS'); + +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('54', 'ABAC', 'POSTING_CRITERIA_ANALITICAL_TYPE_CODE', '1AE-M'); + + +commit; + diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC01/11 create request subposts.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC01/11 create request subposts.sql new file mode 100644 index 0000000..0a8e13a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC01/11 create request subposts.sql @@ -0,0 +1,25 @@ + +DROP TABLE REQUEST_SUBPOSTS; +CREATE TABLE REQUEST_SUBPOSTS +( + REQUEST_SUBPOSTS_ID NUMBER NOT NULL + , BUDGET_LINES_SUBPOSTS_MAPPING_ID NUMBER + , SUBPOST_CODE VARCHAR2(50) + , SUBPOST_TYPE VARCHAR2(50) + , SUBPOST_DESCRIPTION VARCHAR2(1000) + , AMOUNT NUMBER + , AMOUNT_CURRENCY VARCHAR2(3) + , REQUEST_ID NUMBER + , CONSTRAINT REQUEST_SUBPOSTS_PK PRIMARY KEY + ( + REQUEST_SUBPOSTS_ID + ) + ENABLE +); + + +ALTER TABLE REQUEST_SUBPOSTS + ADD (REQUEST_PAYMENT_ABAC_INFO_ID NUMBER ); + +drop sequence "ERIGHTS"."SEQ_REQUEST_SUBPOSTS"; +CREATE SEQUENCE SEQ_REQUEST_SUBPOSTS INCREMENT BY 1 START WITH 1; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC01/14 REQUEST_PAYMENT_ABAC_INFO.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC01/14 REQUEST_PAYMENT_ABAC_INFO.sql new file mode 100644 index 0000000..d32bbe1 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC01/14 REQUEST_PAYMENT_ABAC_INFO.sql @@ -0,0 +1,44 @@ +DROP TABLE "ERIGHTS"."REQUEST_PAYMENT_ABAC_INFO"; + +CREATE TABLE "ERIGHTS"."REQUEST_PAYMENT_ABAC_INFO" +( "REQUEST_PAYMENT_ABAC_INFO_ID" NUMBER, + "REQUEST_ID" NUMBER, + "ANALYTICAL_CODE" VARCHAR2(160 BYTE), + "PARENT_LOCAL_KEY" VARCHAR2(160 BYTE) , + "BUDGET_LINE" VARCHAR2(176 BYTE) , + "MAIN_ACCOUNT" VARCHAR2(128 BYTE) , + "BUDGET_POSITION" VARCHAR2(128 BYTE) , + "FUND_SOURCE" VARCHAR2(100 BYTE) , + "DELEGATION" VARCHAR2(15 BYTE) , + "LVL_CODE" VARCHAR2(128 BYTE) , + "LVL_NAME" VARCHAR2(512 BYTE) , + "COMMITMENT_ID" VARCHAR2(100 BYTE) , + "EXERCISE_ID" NUMBER, + "FUND_SOURCE_GROUP" VARCHAR2(10 BYTE) , + "PAYMENT_CREDITS_AVAILABLE_EUR" NUMBER, + "RAL" NUMBER, + "TOTAL_COMMITMENTS_EUR" NUMBER, + "WORKFLOW" VARCHAR2(100 BYTE) , + "LOCAL_DELEGATION_CODE" VARCHAR2(100 BYTE), + "CREATED_BY" NUMBER, + "CREATED_AT" TIMESTAMP (6), + "UPDATED_BY" NUMBER, + "UPDATED_AT" TIMESTAMP (6) +) ; + + + +CREATE SEQUENCE "ERIGHTS"."SEQ_REQUEST_PAYMENT_ABAC_INFO" + MINVALUE 1 MAXVALUE 99999999999999 + INCREMENT BY 1 + START WITH 1 + CACHE 10 + NOORDER + NOCYCLE ; + + +ALTER TABLE REQUEST_PAYMENT_ABAC_INFO + ADD (ABAC_COMM_ID RAW(16) ); + +ALTER TABLE REQUEST_PAYMENT_ABAC_INFO + ADD (AGENT_NAME VARCHAR2(20) ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC01/app parameters.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC01/app parameters.sql new file mode 100644 index 0000000..059977a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC01/app parameters.sql @@ -0,0 +1,2 @@ +UPDATE "ERIGHTS"."APP_PARAMETERS" SET PARAMETER_VALUE = 'OK' where parameter_key = 'ACTION_CODE_2ND_VISA'; +UPDATE "ERIGHTS"."APP_PARAMETERS" SET PARAMETER_VALUE = 'Movement file in e-Rights' where parameter_key = 'SUPPORTING_DOC_DESCRIPTION'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC01/change mv_budgetlibnedat.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC01/change mv_budgetlibnedat.sql new file mode 100644 index 0000000..2496b8b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC01/change mv_budgetlibnedat.sql @@ -0,0 +1,30 @@ + + + +drop MATERIALIZED VIEW "ERIGHTS"."MV_BUDGET_LINE_DATA" ; + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_BUDGET_LINE_DATA" ("ID", "BUDGET_LINE_DATA_ID", "PARENT_LOCAL_KEY", "BUDGET_LINE", "MAIN_ACCOUNT", "BUDGET_POSITION", "FUND_SOURCE", "DELEGATION", "LVL_CODE", "LVL_NAME", "COMMITMENT_ID","COMMITMENT_HEADER_ID", "EXERCISE_ID", "FUND_SOURCE_GROUP", "PAYMENT_CREDITS_AVAILABLE_EUR", "RAL", "TOTAL_COMMITMENTS_EUR") + + AS SELECT + m.id, + m.id || fund_source BUDGET_LINE_DATA_ID , + m.parent_local_key, + m.budget_line, + m.main_account, + m.budget_position, + m.fund_source, + m.delegation, + m.lvl_code, + m.lvl_name, + m.commitment_id, + m.cp_header commitment_header_id, + m.exercise_id, + m.fund_source_group, + m.payment_credits_available_eur, + m.ral, + m.total_commitments_eur + FROM + mv_report_summary_op_flat@easrefn.cc.cec.eu.int m; + +ALTER TABLE REQUEST_PAYMENT_ABAC_INFO + ADD (COMMITMENT_HEADER_ID VARCHAR2(120) ); diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC07/01_request subtotal .sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/01_request subtotal .sql new file mode 100644 index 0000000..85c6b3a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/01_request subtotal .sql @@ -0,0 +1,23 @@ +ALTER TABLE REQUESTS + ADD (TOTAL_PERSONAL NUMBER ); + +ALTER TABLE REQUESTS + ADD (TOTAL_VEHICLE NUMBER ); + +ALTER TABLE REQUESTS + ADD (TOTAL_STORAGE NUMBER ); + +ALTER TABLE REQUESTS + ADD (TOTAL_UNFORESEEN NUMBER ); + +ALTER TABLE AUD_REQUESTS + ADD (TOTAL_PERSONAL NUMBER ); + +ALTER TABLE AUD_REQUESTS + ADD (TOTAL_VEHICLE NUMBER ); + +ALTER TABLE AUD_REQUESTS + ADD (TOTAL_STORAGE NUMBER ); + +ALTER TABLE AUD_REQUESTS + ADD (TOTAL_UNFORESEEN NUMBER ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC07/02_abac_sync_time.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/02_abac_sync_time.sql new file mode 100644 index 0000000..cb6ddb1 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/02_abac_sync_time.sql @@ -0,0 +1,53 @@ +On TEST environments : + + +create or replace view v_budgdel_abal_sync_times as +select * from synchronisation_management@budgdel.cc.cec.eu.int; + +grant select on v_budgdel_abal_sync_times to easrefn_ro, easrefn_test; + + + +b . Inside eRights test + +create or replace view v_budgdel_abal_sync_times as +select * from easrefn.v_budgdel_abal_sync_times@easrefn.cc.cec.eu.int + + + + +//also we run the ALTER MATERIALIZED VIEW + +DROP MATERIALIZED VIEW "ERIGHTS"."MV_BUDGET_LINE_DATA"; +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_BUDGET_LINE_DATA" ("ID", "BUDGET_LINE_DATA_ID", "PARENT_LOCAL_KEY", "BUDGET_LINE", "MAIN_ACCOUNT", "BUDGET_POSITION", "FUND_SOURCE", "DELEGATION", "LVL_CODE", "LVL_NAME", "COMMITMENT_ID", "COMMITMENT_HEADER_ID", "EXERCISE_ID", "FUND_SOURCE_GROUP", "PAYMENT_CREDITS_AVAILABLE_EUR", "RAL", "TOTAL_COMMITMENTS_EUR","SYNC_COMMITMENTS_DATE") +AS SELECT + m.id, + m.id || fund_source BUDGET_LINE_DATA_ID , + m.parent_local_key, + m.budget_line, + m.main_account, + m.budget_position, + m.fund_source, + m.delegation, + m.lvl_code, + m.lvl_name, + m.commitment_id, + m.cp_header commitment_header_id, + m.exercise_id, + m.fund_source_group, + m.payment_credits_available_eur, + m.ral, + m.total_commitments_eur, + SYNC_TIME.LAST_EXECUTION_DATE SYNC_COMMITMENTS_DATE + + FROM + mv_report_summary_op_flat@easrefn.cc.cec.eu.int m, + (select LAST_EXECUTION_DATE from easrefn.v_budgdel_abal_sync_times@easrefn.cc.cec.eu.int where PROCESS_NAME = 'SYNC_COMMITMENTS' ) SYNC_TIME + where EXERCISE_ID > 2020; + +COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_BUDGET_LINE_DATA" IS 'snapshot table for snapshot ERIGHTS.MV_BUDGET_LINE_DATA'; + +UPDATE "ERIGHTS"."APP_PARAMETERS" + SET PARAMETER_VALUE = '2022' + WHERE PARAMETER_KEY = 'EXERCISE_YEAR'; +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC07/03_drop_person_bank_info.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/03_drop_person_bank_info.sql new file mode 100644 index 0000000..dfadbf4 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/03_drop_person_bank_info.sql @@ -0,0 +1 @@ +DROP MATERIALIZED VIEW MV_PERSONS_BANK_INFO; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC07/04_mv person abac info.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/04_mv person abac info.sql new file mode 100644 index 0000000..578bb3a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/04_mv person abac info.sql @@ -0,0 +1,17 @@ + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_PERSONS_DATA_FOR_ABAC" ("PER_ID", "NUP", "BIRTH_NAME", "FIRST_NAME", "ANALYTICAL_CODE") + + AS select per_id, nup, birth_name, first_name, analytical_code + from mv_analytical_codes@EASREFN.CC.CEC.EU.INT +; + +COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_PERSONS_DATA_FOR_ABAC" IS 'snapshot table for snapshot ERIGHTS.MV_PERSONS_DATA_FOR_ABAC'; + + + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_BUDGDEL_DELEGATION_CODES" ("ORG_ID", "ORG_CODE", "APPLICATION_VIEW", "ORG_EXERCISE_ID", "NAME") + + AS select * from MV_OPTIONS_DELEGATIONS@Easrefn.cc.cec.eu.int +; + +COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_BUDGDEL_DELEGATION_CODES" IS 'snapshot table for snapshot ERIGHTS.MV_BUDGDEL_DELEGATION_CODES'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC07/05_person_bankinfo_notnull_lef_baf.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/05_person_bankinfo_notnull_lef_baf.sql new file mode 100644 index 0000000..817a616 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/05_person_bankinfo_notnull_lef_baf.sql @@ -0,0 +1,3 @@ + +ALTER TABLE PERSONS_BANK_INFO MODIFY ( lef NOT NULL); +ALTER TABLE PERSONS_BANK_INFO MODIFY ( baf NOT NULL); diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC07/06_RESPONSIBLE_ORGANIZATION.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/06_RESPONSIBLE_ORGANIZATION.sql new file mode 100644 index 0000000..f53ea35 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/06_RESPONSIBLE_ORGANIZATION.sql @@ -0,0 +1,10 @@ +ALTER TABLE REQUEST_PAYMENT_ABAC_INFO + ADD (RESPONSIBLE_ORGANIZATION VARCHAR2(30) ); + +ALTER TABLE REQUEST_PAYMENT_ABAC_INFO + ADD (RESPONSIBLE_ORGANIZATION_TYPE VARCHAR2(30) ); + + +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('55', 'ABAC', 'RESP_ORG_TYPE_CODE_NOMRAL_WORKFLOW', 'DEL'); + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC07/07_v_allowances_2.0.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/07_v_allowances_2.0.sql new file mode 100644 index 0000000..bfabe24 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/07_v_allowances_2.0.sql @@ -0,0 +1,56 @@ + +CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_ALLOWANCES" ("REQUEST_ID", "DECLARATION_ID", "MOVEMENT_FILE_ID", "ENTITLMNT_TYPE_ID", "REQUEST_STRING_ID", "CREATED_AT", "STATE", "CALC_TOTAL_AMOUNT", "CALC_TOTAL_AMOUNT_CURRENCY", "TOTAL_AMOUNT", "TOTAL_AMOUNT_CURRENCY", "ENTITLEMENT", "LAST_NAME", "FIRST_NAME", "START_DATE", "CITY_TO", "COUNTRY_TO", "FILE_ID", "REQUEST_TYPE", "CITY_CODE_FROM", "CITY_FROM", "COUNTRY_CODE_FROM", "COUNTRY_FROM", "ORG_CD_FROM", "ORG_ID_FROM", "PAYMENT_REQUEST", "PAYMENT_ORDER", "BUDGET_LINE", "PRIORITY", "DELEGATION_ORG_ID_FROM", "PER_ID", "ABAC_STATE", "ABAC_WORKFLOW_STATE") DEFAULT COLLATION "USING_NLS_COMP" AS +SELECT + r.request_id, + d.declaration_id, + f.movement_file_id, + et.entitlmnt_type_id, + r.request_string_id, + r.created_at, + r.state, + r.calc_total_amount, + r.calc_total_amount_currency, + r.total_amount, + r.total_amount_currency, + etc.description entitlement, + p.last_name, + p.first_name, + f.start_date, + ct_to.description_en city_to, + c_to.name_en country_to, + f.file_id, + r.request_type, + f.city_code_from, + ct_from.description_en city_from, + f.country_code_from, + c_from.name_en country_from, + f.org_cd_from, + f.org_id_from, + r.payment_request, + r.payment_order, + f.budget_line, + f.priority, + f.delegation_org_id_from, + f.per_id per_id, + r.ABAC_STATE, + CASE + WHEN ABAC_STATE = 'PAYMENT_ORDER_CREATED' OR ABAC_STATE = 'MANUAL_PAYMENT' THEN ABAC_WORKFLOW_STATE + WHEN ABAC_STATE = 'FAILED' THEN 'FAILED' + WHEN ABAC_STATE is null THEN null + ELSE 'PROCESSING' + END AS ABAC_WORKFLOW_STATE + +FROM + requests r + INNER JOIN declaration d ON ( r.declaration_id = d.declaration_id ) + INNER JOIN movement_files f ON ( d.movement_file_id = f.movement_file_id ) + INNER JOIN entitlmnt_types et ON ( r.entitlmnt_type_id = et.entitlmnt_type_id ) + INNER JOIN entitlmnt_types_cat etc ON ( et.entitlmnt_type_catg_id = etc.entitlmnt_type_cat_id ) + INNER JOIN v_people p ON ( f.per_id = p.per_id ) + INNER JOIN mv_countries c_to ON ( f.country_code_to = c_to.country_code ) + INNER JOIN mv_cities ct_to ON ( f.city_code_to = ct_to.city_code + AND f.country_code_to = ct_to.country_code ) + INNER JOIN mv_countries c_from ON ( f.country_code_from = c_from.country_code ) + INNER JOIN mv_cities ct_from ON ( f.city_code_from = ct_from.city_code + AND f.country_code_from = ct_from.country_code ); + diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC07/08_entitlement_max_default_source_data.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/08_entitlement_max_default_source_data.sql new file mode 100644 index 0000000..46e10e5 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/08_entitlement_max_default_source_data.sql @@ -0,0 +1,4 @@ +ALTER TABLE ENTITLMNT_MAXS_DEFAULT + ADD (SOURCE_DATA VARCHAR2(20) DEFAULT 'HR' ); + + diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC07/09_update_abac_status.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/09_update_abac_status.sql new file mode 100644 index 0000000..17e0c6c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/09_update_abac_status.sql @@ -0,0 +1,17 @@ +update REQUESTS + set abac_state= 'MANUAL_PAYMENT', + ABAC_WORKFLOW_STATE = 'PROCESSING' + where state = 'PAID' + and (abac_state is null ); + + + + +update REQUESTS + set abac_state= 'MANUAL_PAYMENT', + ABAC_WORKFLOW_STATE = 'PROCESSING' + where state = 'PAID' + and (ABAC_WORKFLOW_STATE = 'UNKNOWN' ); + + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC07/10_rate_missing.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/10_rate_missing.sql new file mode 100644 index 0000000..85909b8 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC07/10_rate_missing.sql @@ -0,0 +1,13 @@ + +CREATE TABLE rates_missing ( + rates_missing_id NUMBER NOT NULL, + year VARCHAR2(4), + column1 NUMBER, + city_code_to VARCHAR2(3), + city_code_from VARCHAR2(3), + entitlmnt_max_cat_id NUMBER, + kg NUMBER, + rate_type VARCHAR2(20), + entitlmnt_max_id NUMBER, + CONSTRAINT rates_missing_pk PRIMARY KEY ( rates_missing_id ) ENABLE + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC10/001_eRIGHTS_MV_BUDGDEL_ABAC_SYNC_TIMES.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/001_eRIGHTS_MV_BUDGDEL_ABAC_SYNC_TIMES.sql new file mode 100644 index 0000000..231c5a7 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/001_eRIGHTS_MV_BUDGDEL_ABAC_SYNC_TIMES.sql @@ -0,0 +1,18 @@ +drop view v_budgdel_abac_sync_times; +drop view v_budgdel_abal_sync_times; + + +create or replace view MV_BUDGDEL_ABAC_SYNC_TIMES as +select "ID","PROCESS_NAME","PROCESS_TYPE","FREQUENCY","PREV_EXECUTION_DATE","LAST_EXECUTION_DATE","FREQUENCY_CHANGED_FLAG","PROCESS_IN_USE" from MV_BUDGDEL_ABAC_SYNC_TIMES @easrefn.cc.cec.eu.int; + + + + +insert into t_refresh_objects select 33, 'MV_BUDGDEL_ABAC_SYNC_TIMES', 33,'N','NOT OK', sysdate -5 , 'EASREFN' from dual; +insert into t_app_easrefn_objects select 33, 'MV_BUDGDEL_ABAC_SYNC_TIMES',1 from dual; +commit; + + +grant select on MV_BUDGDEL_ABAC_SYNC_TIMES to erights_ro; + + diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC10/01_mv_budgetlinedata.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/01_mv_budgetlinedata.sql new file mode 100644 index 0000000..e580e2a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/01_mv_budgetlinedata.sql @@ -0,0 +1,29 @@ +DROP MATERIALIZED VIEW "ERIGHTS"."MV_BUDGET_LINE_DATA"; +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_BUDGET_LINE_DATA" ("ID", "BUDGET_LINE_DATA_ID", "PARENT_LOCAL_KEY", "BUDGET_LINE", "MAIN_ACCOUNT", "BUDGET_POSITION", "FUND_SOURCE", "DELEGATION", "LVL_CODE", "LVL_NAME", "COMMITMENT_ID", "COMMITMENT_HEADER_ID", "EXERCISE_ID", "FUND_SOURCE_GROUP", "PAYMENT_CREDITS_AVAILABLE_EUR", "RAL", "TOTAL_COMMITMENTS_EUR", "SYNC_COMMITMENTS_DATE") + + AS SELECT + m.id, + m.id || fund_source BUDGET_LINE_DATA_ID , + m.parent_local_key, + m.budget_line, + m.main_account, + m.budget_position, + m.fund_source, + m.delegation, + m.lvl_code, + m.lvl_name, + m.commitment_id, + m.cp_header commitment_header_id, + m.exercise_id, + m.fund_source_group, + m.payment_credits_available_eur, + m.ral, + m.total_commitments_eur, + SYNC_TIME.LAST_EXECUTION_DATE SYNC_COMMITMENTS_DATE + + FROM + mv_report_summary_op_flat@easrefn.cc.cec.eu.int m, + (select LAST_EXECUTION_DATE from easrefn.MV_BUDGDEL_ABAC_SYNC_TIMES @easrefn.cc.cec.eu.int where PROCESS_NAME = 'SYNC_COMMITMENTS' ) SYNC_TIME + where EXERCISE_ID > 2020; + +COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_BUDGET_LINE_DATA" IS 'snapshot table for snapshot ERIGHTS.MV_BUDGET_LINE_DATA'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC10/02 column for MF.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/02 column for MF.sql new file mode 100644 index 0000000..83b4173 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/02 column for MF.sql @@ -0,0 +1,35 @@ +ALTER TABLE MOVEMENT_FILES + ADD (PERSONNEL_TYPE_DESC VARCHAR2(400) ); + + + +ALTER TABLE AUD_MOVEMENT_FILES + ADD (PERSONNEL_TYPE_DESC VARCHAR2(400) ); + +ALTER TABLE MOVEMENT_FILES + ADD (INTERNAL_COMMENT VARCHAR2(3000) ); +ALTER TABLE AUD_MOVEMENT_FILES + ADD (INTERNAL_COMMENT VARCHAR2(3000) ); + + +ALTER TABLE MOVEMENT_FILES + ADD (BUDGET_LINE_JOB_TO VARCHAR2(256) ); + +ALTER TABLE MOVEMENT_FILES + ADD (BUDGET_LINE_JOB_FROM VARCHAR2(256) ); + + +ALTER TABLE AUD_MOVEMENT_FILES + ADD (BUDGET_LINE_JOB_TO VARCHAR2(256) ); + +ALTER TABLE AUD_MOVEMENT_FILES + ADD (BUDGET_LINE_JOB_FROM VARCHAR2(256) ); + + + + +ALTER TABLE REQUESTS + ADD (PAYMENT_ORDER_VALID CHAR DEFAULT 'Y' ); + +ALTER TABLE AUD_REQUESTS + ADD (PAYMENT_ORDER_VALID CHAR DEFAULT 'Y' ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC10/03v_allownaces.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/03v_allownaces.sql new file mode 100644 index 0000000..54f9f03 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/03v_allownaces.sql @@ -0,0 +1,55 @@ + +CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_ALLOWANCES" ("REQUEST_ID", "DECLARATION_ID", "MOVEMENT_FILE_ID", "ENTITLMNT_TYPE_ID", "REQUEST_STRING_ID", "CREATED_AT", "STATE", "CALC_TOTAL_AMOUNT", "CALC_TOTAL_AMOUNT_CURRENCY", "TOTAL_AMOUNT", "TOTAL_AMOUNT_CURRENCY", "ENTITLEMENT", "LAST_NAME", "FIRST_NAME", "START_DATE", "CITY_TO", "COUNTRY_TO", "FILE_ID", "REQUEST_TYPE", "CITY_CODE_FROM", "CITY_FROM", "COUNTRY_CODE_FROM", "COUNTRY_FROM", "ORG_CD_FROM", "ORG_ID_FROM", "PAYMENT_REQUEST", "PAYMENT_ORDER", "BUDGET_LINE", "PRIORITY", "DELEGATION_ORG_ID_FROM", "PER_ID", "ABAC_STATE", "ABAC_WORKFLOW_STATE") AS +SELECT + r.request_id, + d.declaration_id, + f.movement_file_id, + et.entitlmnt_type_id, + r.request_string_id, + r.created_at, + r.state, + r.calc_total_amount, + r.calc_total_amount_currency, + r.total_amount, + r.total_amount_currency, + etc.description entitlement, + p.last_name, + p.first_name, + f.start_date, + ct_to.description_en city_to, + c_to.name_en country_to, + f.file_id, + r.request_type, + f.city_code_from, + ct_from.description_en city_from, + f.country_code_from, + c_from.name_en country_from, + f.org_cd_from, + f.org_id_from, + r.payment_request, + r.payment_order, + f.budget_line, + f.priority, + f.delegation_org_id_from, + f.per_id per_id, + r.ABAC_STATE, + CASE + WHEN ABAC_STATE = 'FAILED' THEN 'FAILED' + WHEN ABAC_STATE is null THEN null + ELSE ABAC_WORKFLOW_STATE + END AS ABAC_WORKFLOW_STATE + + FROM + requests r + INNER JOIN declaration d ON ( r.declaration_id = d.declaration_id ) + INNER JOIN movement_files f ON ( d.movement_file_id = f.movement_file_id ) + INNER JOIN entitlmnt_types et ON ( r.entitlmnt_type_id = et.entitlmnt_type_id ) + INNER JOIN entitlmnt_types_cat etc ON ( et.entitlmnt_type_catg_id = etc.entitlmnt_type_cat_id ) + INNER JOIN v_people p ON ( f.per_id = p.per_id ) + INNER JOIN mv_countries c_to ON ( f.country_code_to = c_to.country_code ) + INNER JOIN mv_cities ct_to ON ( f.city_code_to = ct_to.city_code + AND f.country_code_to = ct_to.country_code ) + INNER JOIN mv_countries c_from ON ( f.country_code_from = c_from.country_code ) + INNER JOIN mv_cities ct_from ON ( f.city_code_from = ct_from.city_code + AND f.country_code_from = ct_from.country_code ); + diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC10/04_RIGD-1778-CREATE_TABLE_RATES_MISSING.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/04_RIGD-1778-CREATE_TABLE_RATES_MISSING.sql new file mode 100644 index 0000000..627a6d6 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/04_RIGD-1778-CREATE_TABLE_RATES_MISSING.sql @@ -0,0 +1,19 @@ +DROP TABLE "ERIGHTS"."RATES_MISSING"; + +CREATE TABLE "ERIGHTS"."RATES_MISSING" +( "RATES_MISSING_ID" NUMBER NOT NULL ENABLE, + "YEAR" VARCHAR2(4 BYTE) , + "CITY_CODE_TO" VARCHAR2(3 BYTE) , + "CITY_CODE_FROM" VARCHAR2(3 BYTE) , + "ENTITLMNT_MAX_CAT_ID" NUMBER, + "KG" NUMBER, + "RATE_TYPE" VARCHAR2(20 BYTE) , + "ENTITLMNT_MAX_ID" NUMBER, + "RECEIVED" CHAR(1 BYTE) DEFAULT 'N', + "RECEIVED_DATE" DATE, + "COUNTRY_CODE_TO" VARCHAR2(3 BYTE) , + "COUNTRY_CODE_FROM" VARCHAR2(3 BYTE) , + "START_DATE" DATE, + CONSTRAINT "RATES_MISSING_PK" PRIMARY KEY ("RATES_MISSING_ID")); + +CREATE SEQUENCE "SEQ_RATES_MISSING" MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE ; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC10/05_08_kg in defaultmax.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/05_08_kg in defaultmax.sql new file mode 100644 index 0000000..7f70fc8 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/05_08_kg in defaultmax.sql @@ -0,0 +1,2 @@ +ALTER TABLE ENTITLMNT_MAXS_DEFAULT + ADD (KG NUMBER ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC10/06 EASREFN_TEST_MV_BUDGDEL_ABAC_SYNC_TIMES.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/06 EASREFN_TEST_MV_BUDGDEL_ABAC_SYNC_TIMES.sql new file mode 100644 index 0000000..f2c253f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/06 EASREFN_TEST_MV_BUDGDEL_ABAC_SYNC_TIMES.sql @@ -0,0 +1,10 @@ +create table T_BUDGDEL_ABAC_SYNC_TIMES as +select * from EASREFN.MV_BUDGDEL_ABAC_SYNC_TIMES where 1 = 2 + + +create view V_BUDGDEL_ABAC_SYNC_TIMES as +select * from EASREFN.MV_BUDGDEL_ABAC_SYNC_TIMES union all select * from T_BUDGDEL_ABAC_SYNC_TIMES; + + +create synonym MV_BUDGDEL_ABAC_SYNC_TIMES + for EASREFN_TEST.V_BUDGDEL_ABAC_SYNC_TIMES; diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC10/07-update_movement_file_ids.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/07-update_movement_file_ids.sql new file mode 100644 index 0000000..7789554 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/07-update_movement_file_ids.sql @@ -0,0 +1,51 @@ +DECLARE + CURSOR movement_files_cur IS + SELECT + * + FROM + movement_files + WHERE + year = 2022 + ORDER BY + movement_file_id; + + movement_files_cur_container movement_files_cur%rowtype; -- amended to set the datatype of the variable to be the cursor rowtype + movement_nr_var movement_files.movement_nr%TYPE; +BEGIN + UPDATE movement_files + SET + movement_nr = 0 + WHERE + year = 2022; + + OPEN movement_files_cur; + LOOP + FETCH movement_files_cur INTO movement_files_cur_container; + EXIT WHEN movement_files_cur%notfound; + SELECT + coalesce(MAX(mv.movement_nr), 0) + 1 + INTO movement_nr_var + FROM + movement_files mv + WHERE + mv.year = 2022; + + UPDATE movement_files + SET + movement_nr = movement_nr_var + WHERE + movement_file_id = movement_files_cur_container.movement_file_id; + + END LOOP; + + UPDATE movement_files mv + SET + file_id = replace ('2022-FILE-' || to_char(mv.movement_nr , '0000'), ' ', '') + WHERE + year = 2022; + + + CLOSE movement_files_cur; +END; + + diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC10/09 RIGD-1582 update budgetline future.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/09 RIGD-1582 update budgetline future.sql new file mode 100644 index 0000000..b9408bb --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/09 RIGD-1582 update budgetline future.sql @@ -0,0 +1,17 @@ +ALTER TABLE MOVEMENT_FILES + ADD (HOD_JOB_FROM CHAR(1) ); + +ALTER TABLE MOVEMENT_FILES + ADD (HOD_JOB_TO CHAR(1) ); + +ALTER TABLE AUD_MOVEMENT_FILES + ADD (HOD_JOB_FROM CHAR(1) ); + +ALTER TABLE AUD_MOVEMENT_FILES + ADD (HOD_JOB_TO CHAR(1) ); + + +update movement_types set BUDGETLINE_JOB= 'FUTURE' where movement_type ='DEL EU-DEL'; +update movement_types set BUDGETLINE_JOB= 'FUTURE' where movement_type ='HQ-Other'; + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC10/10-RIGD-1846.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/10-RIGD-1846.sql new file mode 100644 index 0000000..58e3b26 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/10-RIGD-1846.sql @@ -0,0 +1,9 @@ + +ALTER TABLE DECLARATION_PERSON + ADD CONSTRAINT DECLARATION_PERSON_UK1 UNIQUE + ( + DECLARATION_ID + , PER_ID + , REL_PER_ID + ) + ENABLE; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC10/11_RIGD-1769-ADD-PAYMENT_ORDER_VALID_FIELD.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/11_RIGD-1769-ADD-PAYMENT_ORDER_VALID_FIELD.sql new file mode 100644 index 0000000..f494fa2 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/11_RIGD-1769-ADD-PAYMENT_ORDER_VALID_FIELD.sql @@ -0,0 +1,6 @@ +ALTER TABLE REQUESTS + ADD (PAYMENT_ORDER_VALID CHAR(1 BYTE) DEFAULT 'Y'); + + +ALTER TABLE ENTITLMNT_MAXS_CAT + ADD (JOBTO_NON_FAMILY_POSTING CHAR(1) ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC10/16_movement_types.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/16_movement_types.sql new file mode 100644 index 0000000..2e1d8a0 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/16_movement_types.sql @@ -0,0 +1,29 @@ + +update ERIGHTS.MOVEMENT_TYPES set BUDGETLINE_JOB = 'FUTURE' where MOVEMENT_TYPE = 'DEL EU-DEL'; +update ERIGHTS.MOVEMENT_TYPES set BUDGETLINE_JOB = 'CURRENT' where MOVEMENT_TYPE = 'DEL-DEL'; +update ERIGHTS.MOVEMENT_TYPES set BUDGETLINE_JOB = 'CURRENT' where MOVEMENT_TYPE = 'DEL-DEL EU'; +update ERIGHTS.MOVEMENT_TYPES set BUDGETLINE_JOB = 'CURRENT' where MOVEMENT_TYPE = 'DEL-HQ'; +update ERIGHTS.MOVEMENT_TYPES set BUDGETLINE_JOB = 'CURRENT' where MOVEMENT_TYPE = 'DEL-Other'; +update ERIGHTS.MOVEMENT_TYPES set BUDGETLINE_JOB = 'CURRENT' where MOVEMENT_TYPE = 'DEL-PoOrg'; +update ERIGHTS.MOVEMENT_TYPES set BUDGETLINE_JOB = 'FUTURE' where MOVEMENT_TYPE = 'HQ-DEL'; +update ERIGHTS.MOVEMENT_TYPES set BUDGETLINE_JOB = 'FUTURE' where MOVEMENT_TYPE = 'HQ-Other'; +update ERIGHTS.MOVEMENT_TYPES set BUDGETLINE_JOB = 'FUTURE' where MOVEMENT_TYPE = 'PoR-DEL'; + + + +UPDATE "ERIGHTS"."ENTITLMNT_MAXS_CAT" SET NON_FAMILY_POSTING = '', JOBTO_NON_FAMILY_POSTING = 'Y' WHERE code = 'AIRFREIGHT'; +UPDATE "ERIGHTS"."ENTITLMNT_MAXS_CAT" SET NON_FAMILY_POSTING = '', JOBTO_NON_FAMILY_POSTING = 'Y' WHERE code = 'STORAGE'; +UPDATE "ERIGHTS"."ENTITLMNT_MAXS_CAT" SET NON_FAMILY_POSTING = 'Y', JOBTO_NON_FAMILY_POSTING = 'N' WHERE code='SURFACE'; +UPDATE "ERIGHTS"."ENTITLMNT_MAXS_CAT" SET JOBTO_NON_FAMILY_POSTING = 'Y' WHERE code = 'TUD_DEPENDENT'; + + +UPDATE "ERIGHTS"."APP_PARAMETERS" SET PARAMETER_VALUE = '0.006' WHERE PARAMETER_KEY = 'KGtoM3' ; +UPDATE "ERIGHTS"."APP_PARAMETERS" SET PARAMETER_VALUE = '166.667' WHERE PARAMETER_KEY = 'M3toKG' ; + + +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('56', 'ADVANCE_REMOVAL', 'M3toKG_ALERT', '167'); + + + +commit; + diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC10/RIGD-1906 create table for coments.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/RIGD-1906 create table for coments.sql new file mode 100644 index 0000000..ae1ced2 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC10/RIGD-1906 create table for coments.sql @@ -0,0 +1,38 @@ +CREATE TABLE COMMENTS + ( + COMMENTS_ID NUMBER + , ENTITY_ID NUMBER + , COMMENT_TEXT VARCHAR2(3000) + , COMMENT_TYPE VARCHAR2(200) + , DISPLAY_ORDER NUMBER + , DELETED CHAR DEFAULT 'N' + , CREATED_AT DATE + , UPDATED_AT DATE + , CREATED_BY NUMBER + , UPDATED_BY NUMBER + ); + + +CREATE SEQUENCE SEQ_COMMENTS INCREMENT BY 1 START WITH 1 MINVALUE 1; + + +ALTER TABLE COMMENTS + ADD (AUTHOR_NAME VARCHAR2(2000) ); + +ALTER TABLE COMMENTS + MODIFY (COMMENTS_ID NOT NULL); + +ALTER TABLE COMMENTS + ADD CONSTRAINT COMMENTS_PK PRIMARY KEY + ( + COMMENTS_ID + ) + ENABLE; + + +update requests + set ABAC_WORKFLOW_STATE = regexp_replace(ABAC_WORKFLOW_STATE,'-','',1,1) + where ABAC_WORKFLOW_STATE is not null; + + +commit; diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/01_RIGD-1895_Update_movement_files.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/01_RIGD-1895_Update_movement_files.sql new file mode 100644 index 0000000..baf62fc --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/01_RIGD-1895_Update_movement_files.sql @@ -0,0 +1,82 @@ +DROP TABLE bkp$movement_files_rigd1895; + +CREATE TABLE bkp$movement_files_rigd1895 + AS + SELECT + * + FROM + movement_files; + +UPDATE movement_files f +SET + ( f.family_posting, + f.hod_job_from ) = ( + SELECT + CASE j.family_posting_type + WHEN 'Non-family posting' THEN + 'N' + ELSE + 'Y' + END, + j.hod + FROM + v_jobs j + WHERE + j.job_id = f.job_id_from + ) +WHERE + f.job_id_from IS NOT NULL + AND ( f.family_posting IS NULL + OR f.hod_job_from IS NULL ); + +UPDATE movement_files f +SET + ( f.jobto_family_posting, + f.hod_job_to ) = ( + SELECT + CASE j.family_posting_type + WHEN 'Non-family posting' THEN + 'N' + ELSE + 'Y' + END, + j.hod + FROM + v_jobs j + WHERE + j.job_id = f.job_id_to + ) +WHERE + f.job_id_to IS NOT NULL + AND ( f.jobto_family_posting IS NULL + OR f.hod_job_to IS NULL ); + +UPDATE movement_files f +SET + f.hod_posting = + CASE + WHEN f.hod_job_to = 'Y' + OR f.hod_job_from = 'Y' THEN + 'Y' + ELSE + 'N' + END +WHERE + f.hod_posting IS NULL; + +COMMIT; + +/* +SELECT + * +FROM + movement_files; +*/ + + + +--compare family posting MF and v_job +select m.job_id_to, m.jobto_family_posting, j.family_posting_type,j.family_posting_type_id from MOVEMENT_FILES m, V_JOBS j + where m.job_id_to = j.job_id; + + diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/02_RIGD-1938_INSERT_CEILING_BRU_TO_BRU.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/02_RIGD-1938_INSERT_CEILING_BRU_TO_BRU.sql new file mode 100644 index 0000000..953c9ed --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/02_RIGD-1938_INSERT_CEILING_BRU_TO_BRU.sql @@ -0,0 +1 @@ +Insert into ERIGHTS.APP_PARAMETERS (PARAMETER_ID,PARAMETER_TYPE,PARAMETER_KEY,PARAMETER_VALUE) values (57,'ADVANCE_REMOVAL','CEILING_BRU_TO_BRU','6134.84'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/03_RIGD-1916 rate year.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/03_RIGD-1916 rate year.sql new file mode 100644 index 0000000..7a5c95c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/03_RIGD-1916 rate year.sql @@ -0,0 +1,34 @@ +ALTER TABLE ENTITLMNT_MAXS + ADD (START_DATE DATE ); + +ALTER TABLE ENTITLMNT_MAXS + ADD (RATE_YEAR NUMBER ); + + +delete ENTITLMNT_MAXS_DEFAULT where ENTITLMNT_MAX_DEFAULT_ID in ( select ENTITLMNT_MAX_DEFAULT_ID from ENTITLMNT_MAXS_DEFAULT where COUNTRY_CODE_TO = 'BEL' and COUNTRY_CODE_FROM = 'BEL' and ENTITLMNT_MAX_CAT_ID in (3,5) and (START_DATE = TO_DATE('01/05/2021', 'dd/mm/yyyy') or START_DATE = TO_DATE('01/05/2022', 'dd/mm/yyyy') ) ); + + +update ENTITLMNT_MAXS_DEFAULT ent + set LATEST = 'N' + where ent.ENTITLMNT_MAX_DEFAULT_ID in ( select ENTITLMNT_MAX_DEFAULT_ID from ENTITLMNT_MAXS_DEFAULT where COUNTRY_CODE_TO = 'BEL' and COUNTRY_CODE_FROM = 'BEL' and ENTITLMNT_MAX_CAT_ID in (3,5) and (START_DATE = TO_DATE('01/05/2021', 'dd/mm/yyyy') or START_DATE = TO_DATE('01/05/2022', 'dd/mm/yyyy') ) ); + +INSERT INTO ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID, CITY_CODE_TO, CITY_CODE_FROM, COUNTRY_CODE_TO, COUNTRY_CODE_FROM, CREATED_AT, CREATED_BY, UPDATED_BY, UPDATED_AT, AMOUNT, CURRENCY, START_DATE, ENTITLMNT_MAX_CAT_ID, LATEST, SOURCE_DATA) +select SEQ_ENTITLMNT_MAX_DEFAULT.NEXTVAL,c_to.city_code,c_from.city_code,c_to.COUNTRY_CODE,c_from.COUNTRY_CODE,sysdate,0,0,sysdate,6134.84, 'EUR',TO_DATE('01/05/2021', 'dd/mm/yyyy'),3,'Y','HR' from MV_CITIES c_from,MV_CITIES c_to + where c_from.COUNTRY_CODE= 'BEL' and c_to.COUNTRY_CODE = 'BEL'; + + + +INSERT INTO ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID, CITY_CODE_TO, CITY_CODE_FROM, COUNTRY_CODE_TO, COUNTRY_CODE_FROM, CREATED_AT, CREATED_BY, UPDATED_BY, UPDATED_AT, AMOUNT, CURRENCY, START_DATE, ENTITLMNT_MAX_CAT_ID, LATEST, SOURCE_DATA) +select SEQ_ENTITLMNT_MAX_DEFAULT.NEXTVAL,c_to.city_code,c_from.city_code,c_to.COUNTRY_CODE,c_from.COUNTRY_CODE,sysdate,0,0,sysdate,6614.84, 'EUR',TO_DATE('01/05/2021', 'dd/mm/yyyy'),5,'Y','HR' from MV_CITIES c_from,MV_CITIES c_to + where c_from.COUNTRY_CODE= 'BEL' and c_to.COUNTRY_CODE = 'BEL'; + + +INSERT INTO ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID, CITY_CODE_TO, CITY_CODE_FROM, COUNTRY_CODE_TO, COUNTRY_CODE_FROM, CREATED_AT, CREATED_BY, UPDATED_BY, UPDATED_AT, AMOUNT, CURRENCY, START_DATE, ENTITLMNT_MAX_CAT_ID, LATEST, SOURCE_DATA) +select SEQ_ENTITLMNT_MAX_DEFAULT.NEXTVAL,c_to.city_code,c_from.city_code,c_to.COUNTRY_CODE,c_from.COUNTRY_CODE,sysdate,0,0,sysdate,6134.84, 'EUR',TO_DATE('01/05/2022', 'dd/mm/yyyy'),3,'Y','HR' from MV_CITIES c_from,MV_CITIES c_to + where c_from.COUNTRY_CODE= 'BEL' and c_to.COUNTRY_CODE = 'BEL'; + + + +INSERT INTO ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID, CITY_CODE_TO, CITY_CODE_FROM, COUNTRY_CODE_TO, COUNTRY_CODE_FROM, CREATED_AT, CREATED_BY, UPDATED_BY, UPDATED_AT, AMOUNT, CURRENCY, START_DATE, ENTITLMNT_MAX_CAT_ID, LATEST, SOURCE_DATA) +select SEQ_ENTITLMNT_MAX_DEFAULT.NEXTVAL,c_to.city_code,c_from.city_code,c_to.COUNTRY_CODE,c_from.COUNTRY_CODE,sysdate,0,0,sysdate,6614.84, 'EUR',TO_DATE('01/05/2022', 'dd/mm/yyyy'),5,'Y','HR' from MV_CITIES c_from,MV_CITIES c_to + where c_from.COUNTRY_CODE= 'BEL' and c_to.COUNTRY_CODE = 'BEL'; diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/03_RIGD-1945_Add_followup_flags_to_MF.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/03_RIGD-1945_Add_followup_flags_to_MF.sql new file mode 100644 index 0000000..ab198cd --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/03_RIGD-1945_Add_followup_flags_to_MF.sql @@ -0,0 +1,78 @@ +-------------------------------------------------------- +-- DDL for new column FOLLOWUP_FLAGS +-------------------------------------------------------- +ALTER TABLE "MOVEMENT_FILES" ADD "FOLLOWUP_FLAGS" VARCHAR2(1000 CHAR); +COMMENT ON COLUMN "MOVEMENT_FILES"."FOLLOWUP_FLAGS" IS 'Comma-separated list of flags indicating different scenario on business side. There are 3 Values: Derogation, Urgent, Other.'; + +ALTER TABLE "AUD_MOVEMENT_FILES" ADD "FOLLOWUP_FLAGS" VARCHAR2(1000 CHAR); +COMMENT ON COLUMN "AUD_MOVEMENT_FILES"."FOLLOWUP_FLAGS" IS 'Comma-separated list of flags indicating different scenario on business side. There are 3 Values: Derogation, Urgent, Other.'; + +-------------------------------------------------------- +-- Recreate V_REPORT_MOVEMENT_FILES to include column FOLLOWUP_FLAGS +-------------------------------------------------------- + + CREATE OR REPLACE FORCE VIEW "V_REPORT_MOVEMENT_FILES" ("MOVEMENT_FILE_ID", "FIRST_NAME", "LAST_NAME", "STATUS", "STARTDATEFUTURE", "ENDDATEFUTURE", "MOVEMENTFROM", "MOVEMENTTO", "EVACUATION_STATUS", "BUDGDET_LINE_FUTURE", "MOVEMENTTYPE", "MOVEMENTYEAR", "MOVEMENTCONTEXT", "PERID", "FUTUREASSIGNMENT", "FILEID", "PRIORITY", "FOLLOWUP_FLAGS", "ALLOCATEDTOCURRENT", "ALLOCATEDTOFUTURE", "REASON", "DELEGATION_ORG_ID_FROM") AS + SELECT + f.movement_file_id, + p.first_name AS first_name, + p.last_name AS last_name, + f.state AS status, + coalesce( + f.start_date, + assign_start_date_to + ) AS startdatefuture, + CASE + WHEN EXTRACT(YEAR FROM(coalesce( + f.estimated_end_date, + assign_end_date_to + ))) IN ( 2099, + 9999 ) THEN + to_date( + NULL + ) + ELSE + coalesce( + f.estimated_end_date, + assign_end_date_to + ) + END AS enddatefuture, + initcap( + ci_from.description_en + ) + || ', ' + || ct_from.name_en AS movementfrom, + initcap( + ci_to.description_en + ) + || ', ' + || ct_to.name_en AS movementto, + f.evacuation_status, + budget_line AS budgdet_line_future, + mvtp.movement_type AS movementtype, + f.year AS movementyear, + c.name AS movementcontext, + f.per_id AS perid, + CASE + WHEN mvtp.movement_type like '%-HQ' THEN + null + ELSE + f.job_id_to + END AS futureassignment, + f.file_id AS fileid, + f.priority, + f.followup_flags, + f.org_cd_from AS allocatedtocurrent, + f.org_cd_to AS allocatedtofuture, + '1' AS reason, + f.delegation_org_id_from + FROM + movement_files f + INNER JOIN movement_context c ON f.context_id = c.movement_context_id + INNER JOIN v_people p ON p.per_id = f.per_id + INNER JOIN movement_types mvtp ON mvtp.movement_type_id = f.movement_type_id + LEFT JOIN mv_countries ct_from ON f.country_code_from = ct_from.country_code + LEFT JOIN mv_cities ci_from ON f.city_code_from = ci_from.city_code + AND ct_from.country_code = ci_from.country_code + LEFT JOIN mv_countries ct_to ON f.country_code_to = ct_to.country_code + LEFT JOIN mv_cities ci_to ON f.city_code_to = ci_to.city_code + AND ct_to.country_code = ci_to.country_code; diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/10_RIGD-1951_Populate_ENTITLMNT_MAXS_RATE_YEAR_and_START_DATE.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/10_RIGD-1951_Populate_ENTITLMNT_MAXS_RATE_YEAR_and_START_DATE.sql new file mode 100644 index 0000000..617dc1a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/10_RIGD-1951_Populate_ENTITLMNT_MAXS_RATE_YEAR_and_START_DATE.sql @@ -0,0 +1,85 @@ +/* +we need to fill the data in ENTITLMNT_MAXS.START_DATE, ENTITLMNT_MAXS.RATE_YEAR + +ENTITLMNT_MAXS.START_DATE L the value is 01-MAY-21 when start date from movement file is between: 01-may-2021 to 30-apr-2022 and so on. + +ENTITLMNT_MAXS.RATE_YEAR the value is 2021 when start date from movement file is between: 01-may-2021 to 30-apr-2022 and so on. + +01-may-2021 to 30-apr-2022 RATE_YEAR = 2021 START_DATE = 01-MAY-21 +01-may-2022 to 30-apr-2023 RATE_YEAR = 2022 START_DATE = 01-MAY-22 +01-may-2023 to 30-apr-2024 RATE_YEAR = 2023 START_DATE = 01-MAY-23 + +If MOVEMENT_FILES.START_DATE is NULL we use ESTIMATED_END_DATE for the same logic + +SELECT * FROM ENTITLMNT_MAXS em +INNER JOIN ENTITLMNT_TYPES et on et.ENTITLMNT_TYPE_ID = em.ENTITLMNT_TYPE_ID +INNER JOIN MOVEMENT_FILES mv on mv.MOVEMENT_FILE_ID = et.MOVEMENT_FILE_ID +*/ + +/* +SELECT + mf.start_date, + mf.estimated_end_date, + nvl(mf.start_date, mf.estimated_end_date), + CASE + WHEN nvl(mf.start_date, mf.estimated_end_date) < to_date('01-MAY-' + || EXTRACT(YEAR FROM nvl(mf.start_date, mf.estimated_end_date))) THEN + EXTRACT(YEAR FROM nvl(mf.start_date, mf.estimated_end_date)) - 1 + ELSE + EXTRACT(YEAR FROM nvl(mf.start_date, mf.estimated_end_date)) + END entitlmnt_maxs_rate_year, + CASE + WHEN nvl(mf.start_date, mf.estimated_end_date) < to_date('01-MAY-' + || EXTRACT(YEAR FROM nvl(mf.start_date, mf.estimated_end_date))) THEN + to_date('01-MAY-' + ||(EXTRACT(YEAR FROM nvl(mf.start_date, mf.estimated_end_date)) - 1)) + ELSE + to_date('01-MAY-' + || EXTRACT(YEAR FROM nvl(mf.start_date, mf.estimated_end_date))) + END entitlmnt_maxs_start_date, + em.rate_year, + em.start_date +FROM + entitlmnt_maxs em + INNER JOIN entitlmnt_types et ON ( em.entitlmnt_type_id = et.entitlmnt_type_id ) + INNER JOIN movement_files mf ON ( et.movement_file_id = mf.movement_file_id ) +WHERE + nvl(mf.start_date, mf.estimated_end_date) IS NOT NULL; +*/ + +UPDATE entitlmnt_maxs em +SET + ( rate_year, + start_date ) = ( + SELECT + CASE + WHEN nvl(mf.start_date, mf.estimated_end_date) < to_date('01-MAY-' + || EXTRACT(YEAR FROM nvl(mf.start_date, mf.estimated_end_date))) + THEN + EXTRACT(YEAR FROM nvl(mf.start_date, mf.estimated_end_date)) - 1 + ELSE + EXTRACT(YEAR FROM nvl(mf.start_date, mf.estimated_end_date)) + END entitlmnt_maxs_rate_year, + CASE + WHEN nvl(mf.start_date, mf.estimated_end_date) < to_date('01-MAY-' + || EXTRACT(YEAR FROM nvl(mf.start_date, mf.estimated_end_date))) + THEN + to_date('01-MAY-' + ||(EXTRACT(YEAR FROM nvl(mf.start_date, mf.estimated_end_date)) - 1)) + ELSE + to_date('01-MAY-' + || EXTRACT(YEAR FROM nvl(mf.start_date, mf.estimated_end_date))) + END entitlmnt_maxs_start_date + FROM + entitlmnt_maxs em2 + INNER JOIN entitlmnt_types et ON ( em2.entitlmnt_type_id = et.entitlmnt_type_id ) + INNER JOIN movement_files mf ON ( et.movement_file_id = mf.movement_file_id ) + WHERE + nvl(mf.start_date, mf.estimated_end_date) IS NOT NULL + AND em.entitlmnt_max_id = em2.entitlmnt_max_id + ) +WHERE + em.rate_year IS NULL + OR em.start_date IS NULL; + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/15_RIGD-1946_MV_INSTITUTIONS.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/15_RIGD-1946_MV_INSTITUTIONS.sql new file mode 100644 index 0000000..3ee11e0 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/15_RIGD-1946_MV_INSTITUTIONS.sql @@ -0,0 +1,40 @@ +CREATE MATERIALIZED VIEW mv_institutions + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE ON QUERY COMPUTATION DISABLE QUERY REWRITE AS + SELECT + ins_cd easrefn_ins_cd, + ins_cd, + ins_type, + name easrefn_name, + CASE ins_cd + WHEN 'COM' THEN + 'Commission' + WHEN 'EEAS' THEN + 'EEAS' + ELSE + name + END name, + start_date, + end_date + FROM + mv_institutions@easrefn.cc.cec.eu.int + UNION ALL + SELECT + 'EEAS_COM' easrefn_ins_cd, + 'COM' ins_cd, + 'INSTITUTION' ins_type, + 'European External Action Service/European Commission' easrefn_name, + 'Commission' name, + TO_DATE('01-JAN-52', 'DD-MON-YY') start_date, + TO_DATE('31-DEC-99', 'DD-MON-YY') end_date + FROM + dual; + +COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_INSTITUTIONS" IS + 'snapshot table for snapshot ERIGHTS.MV_INSTITUTIONS'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/16_RIGD-1946_MV_STATUTORY_LINK_CODES.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/16_RIGD-1946_MV_STATUTORY_LINK_CODES.sql new file mode 100644 index 0000000..86f9725 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/16_RIGD-1946_MV_STATUTORY_LINK_CODES.sql @@ -0,0 +1,13 @@ +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_STATUTORY_LINK_CODES" ( + "LST_CD", + "EN_NAME", + "FR_NAME", + "DE_NAME" +) AS + SELECT + "LST_CD", + "EN_NAME", + "FR_NAME", + "DE_NAME" + FROM + mv_statutory_link_codes@easrefn.cc.cec.eu.int; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/17_RIGD-1946_MV_FUNCTION_CODES.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/17_RIGD-1946_MV_FUNCTION_CODES.sql new file mode 100644 index 0000000..466836b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/17_RIGD-1946_MV_FUNCTION_CODES.sql @@ -0,0 +1,13 @@ +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_FUNCTION_CODES" ( + "FUNCTION_CODE", + "FUNCTION_DESC_FR", + "FUNCTION_DESC_EN", + "NR_ORDER" +) AS + SELECT + "FUNCTION_CODE", + "FUNCTION_DESC_FR", + "FUNCTION_DESC_EN", + "NR_ORDER" + FROM + mv_function_codes@easrefn.cc.cec.eu.int; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/18_RIGD-1946_Mviews_registration.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/18_RIGD-1946_Mviews_registration.sql new file mode 100644 index 0000000..9642312 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/18_RIGD-1946_Mviews_registration.sql @@ -0,0 +1,12 @@ +SET DEFINE OFF; +Insert into ERIGHTS.T_REFRESH_OBJECTS (ID,APP_OBJECT_NAME,PRIORITY,IS_REFRESHED,STATUS,REFRESH_DATE,SYSTEM) values (34,'MV_INSTITUTIONS',34,'N','KO',NULL,'EASREFN'); +Insert into ERIGHTS.T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (34,'MV_INSTITUTIONS',1); +commit; + +Insert into ERIGHTS.T_REFRESH_OBJECTS (ID,APP_OBJECT_NAME,PRIORITY,IS_REFRESHED,STATUS,REFRESH_DATE,SYSTEM) values (35,'MV_STATUTORY_LINK_CODES',35,'N','KO',NULL,'EASREFN'); +Insert into ERIGHTS.T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (35,'MV_STATUTORY_LINK_CODES',1); +commit; + +Insert into ERIGHTS.T_REFRESH_OBJECTS (ID,APP_OBJECT_NAME,PRIORITY,IS_REFRESHED,STATUS,REFRESH_DATE,SYSTEM) values (36,'MV_FUNCTION_CODES',36,'N','KO',NULL,'EASREFN'); +Insert into ERIGHTS.T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (36,'MV_FUNCTION_CODES',1); +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/20_RIGD-1946_V_STATUTORY_LINK_CODES.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/20_RIGD-1946_V_STATUTORY_LINK_CODES.sql new file mode 100644 index 0000000..b118f45 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/20_RIGD-1946_V_STATUTORY_LINK_CODES.sql @@ -0,0 +1,13 @@ +CREATE OR REPLACE VIEW "ERIGHTS"."V_STATUTORY_LINK_CODES" ( + "LST_CD", + "EN_NAME", + "FR_NAME", + "DE_NAME" +) AS + SELECT + "LST_CD", + "EN_NAME", + "FR_NAME", + "DE_NAME" + FROM + mv_statutory_link_codes; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/21_RIGD-1946_V_FUNCTION_CODES.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/21_RIGD-1946_V_FUNCTION_CODES.sql new file mode 100644 index 0000000..3b7fa73 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/21_RIGD-1946_V_FUNCTION_CODES.sql @@ -0,0 +1,13 @@ +CREATE OR REPLACE VIEW "ERIGHTS"."V_FUNCTION_CODES" ( + "FUNCTION_CODE", + "FUNCTION_DESC_FR", + "FUNCTION_DESC_EN", + "NR_ORDER" +) AS + SELECT + "FUNCTION_CODE", + "FUNCTION_DESC_FR", + "FUNCTION_DESC_EN", + "NR_ORDER" + FROM + mv_function_codes; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/22_RIGD-1938_DELETE_CEILING_BRU_TO_BRU.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/22_RIGD-1938_DELETE_CEILING_BRU_TO_BRU.sql new file mode 100644 index 0000000..b2e7ed7 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/22_RIGD-1938_DELETE_CEILING_BRU_TO_BRU.sql @@ -0,0 +1 @@ +DELETE FROM ERIGHTS.APP_PARAMETERS WHERE PARAMETER_ID = 57 \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/23_RIGD-1957_audit_bo_report.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/23_RIGD-1957_audit_bo_report.sql new file mode 100644 index 0000000..dfb51fd --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/23_RIGD-1957_audit_bo_report.sql @@ -0,0 +1,178 @@ +ALTER TABLE entitlmnt_maxs + ADD (created_by NUMBER); + +ALTER TABLE entitlmnt_maxs + ADD (created_at DATE); + +ALTER TABLE entitlmnt_maxs + ADD (updated_by NUMBER); + +ALTER TABLE entitlmnt_maxs + ADD (updated_at DATE); + + +CREATE TABLE "ERIGHTS"."AUD_ENTITLMNT_MAXS" + ( + "REV" NUMBER(10, 0) NOT NULL ENABLE, + "REVTYPE" NUMBER(3, 0), + "ENTITLMNT_TYPE_ID" NUMBER, + "ENTITLMNT_MAX_CAT_ID" NUMBER, + "ENTITLMNT_MAX_ID" NUMBER, + "MAX_VALUE" NUMBER(9, 2), + "MAX_CURRENCY" VARCHAR2(3 CHAR), + "ENTITLMNT_TYPE_CAT_ID" NUMBER, + "ENTITLMNT_MAX_OPTIONS_ID" NUMBER, + "FLAT_RATE_DUPLICATOR" VARCHAR2(20 BYTE), + "COMMENTS" VARCHAR2(3000 BYTE), + "ENABLE" CHAR(1 BYTE), + "HOD_ENABLE" CHAR(1 BYTE), + "CITY" VARCHAR2(3 BYTE), + "COUNTRY" VARCHAR2(3 BYTE), + "MAX_VOLUME" NUMBER, + "MAX_KG" NUMBER, + "START_DATE" DATE, + "RATE_YEAR" NUMBER, + "CREATED_BY" NUMBER, + "CREATED_AT" DATE, + "UPDATED_BY" NUMBER, + "UPDATED_AT" DATE + ); + +CREATE TABLE "ERIGHTS"."AUD_DECLARATION_PERSON" + ( + "REV" NUMBER(10, 0) NOT NULL ENABLE, + "REVTYPE" NUMBER(3, 0), + "DECLARATION_PERSON_ID" NUMBER, + "DECLARATION_ID" NUMBER, + "INS_ELIGIBILITY" CHAR(1 BYTE) DEFAULT '' N'', + "REM_ELIGIBILITY" CHAR(1 BYTE) DEFAULT '' N'', + "TUD_ELIGIBILITY" CHAR(1 BYTE) DEFAULT '' N'', + "DECLAREDPERSON" CHAR(1 BYTE) DEFAULT '' N'', + "REMARKS" VARCHAR2(3000 CHAR), + "PER_ID" NUMBER, + "REL_PER_ID" NUMBER, + "TRP_CD" NUMBER, + "TRP_CODE" VARCHAR2(100 BYTE), + "CLAIM" CHAR(1 BYTE) DEFAULT '' N'', + "TUD_ELIGIBILITY_REASON" VARCHAR2(1000 BYTE) + ); + + + +CREATE TABLE "ERIGHTS"."AUD_REQUEST_PERSONS" + ( + "REV" NUMBER(10, 0) NOT NULL ENABLE, + "REVTYPE" NUMBER(3, 0), + "REQUEST_PERSON_ID" NUMBER, + "FAMILY_MEMBER_ID" NUMBER, + "REQUEST_ID" NUMBER, + "TUD_ELIGIBILITY" CHAR(1 CHAR) DEFAULT '' N'', + "DECLAREDPERSON" CHAR(1 CHAR) DEFAULT '' N'', + "PER_ID" NUMBER, + "REL_PER_ID" NUMBER, + "TRP_CD" NUMBER, + "TRP_CODE" VARCHAR2(100 CHAR), + "CLAIM" CHAR(1 CHAR), + "CLAIM_APPROVED" CHAR(1 CHAR), + "CREATED_BY" NUMBER, + "CREATED_AT" TIMESTAMP(6), + "UPDATED_BY" NUMBER, + "UPDATED_AT" TIMESTAMP(6), + "REMARKS" VARCHAR2(3000 CHAR), + "TUD_ELIGIBILITY_REASON" VARCHAR2(1000 BYTE) + ); + + +CREATE TABLE "ERIGHTS"."AUD_REQUEST_DETAILS" + ( + "REV" NUMBER(10, 0) NOT NULL ENABLE, + "REVTYPE" NUMBER(3, 0), + "REQUEST_DETAIL_ID" NUMBER, + "REQUEST_ID" NUMBER, + "ENTITLMNT_MAX_CAT_ID" NUMBER, + "REQUEST_DETAIL_TYPE" VARCHAR2(25 CHAR), + "VOLUMEN" NUMBER, + "WEIGHT" NUMBER, + "INSURANCE_RATE" NUMBER, + "VALUE_GOODS" NUMBER, + "VALUE_GOODS_CURRENCY" VARCHAR2(3 CHAR), + "PROFORMA" NUMBER, + "PROFORMA_CURRENCY" VARCHAR2(3 CHAR), + "INVOICE" NUMBER, + "INVOICE_CURRENCY" VARCHAR2(3 CHAR), + "AMOUNT" NUMBER, + "AMOUNT_CURRENCY" VARCHAR2(3 CHAR), + "CREATED_BY" NUMBER, + "CREATED_AT" TIMESTAMP(6), + "UPDATED_BY" NUMBER, + "UPDATED_AT" TIMESTAMP(6), + "EXCHANGE_RATE" NUMBER DEFAULT 1, + "EXCHANGE_START_DATE" DATE DEFAULT sysdate, + "EXCHANE_CURRENCY" VARCHAR2(3 BYTE) DEFAULT '' EUR '', + "REQUEST_DETAIL_TYPE_ORDER" NUMBER, + "EXTRA_REQUEST_DETAIL" CHAR(1 BYTE) DEFAULT '' N'', + "JUSTIFICATION" VARCHAR2(3000 BYTE), + "EXCHANGE_PAY_MONTH" VARCHAR2(20 BYTE) + ); + +ALTER TABLE aud_declaration_person + ADD (created_by NUMBER); + +ALTER TABLE aud_declaration_person + ADD (created_at DATE); + +ALTER TABLE aud_declaration_person + ADD (updated_by NUMBER); + +ALTER TABLE aud_declaration_person + ADD (updated_at DATE); + + +ALTER TABLE declaration_person + ADD (created_by NUMBER); + +ALTER TABLE declaration_person + ADD (created_at DATE); + +ALTER TABLE declaration_person + ADD (updated_by NUMBER); + +ALTER TABLE declaration_person + ADD (updated_at DATE); + + +update entitlmnt_maxs + set created_by = 0, + created_at = sysdate - 750 + where created_by is null; + +update entitlmnt_maxs + set updated_by = 0, + updated_at = sysdate - 750 + where updated_by is null; + +update declaration_person + set created_by = 0, + created_at = sysdate - 750 + where created_by is null; + +update declaration_person + set updated_by = 0, + updated_at = sysdate - 750 + where updated_by is null; + +update movement_files + set created_by = 0, + created_at = sysdate - 750 + where created_by is null; + +update movement_files + set updated_by = 0, + updated_at = sysdate - 750 + where updated_by is null; + + + + + + diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/24_RIGD-1968_Missing_constraints.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/24_RIGD-1968_Missing_constraints.sql new file mode 100644 index 0000000..7e24de5 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/24_RIGD-1968_Missing_constraints.sql @@ -0,0 +1,20 @@ +ALTER TABLE comments + ADD CONSTRAINT ck_comments_type CHECK ( comment_type IN ( 'REQUEST', 'MOVEMENT_FILE' ) ) VALIDATE; + +ALTER TABLE request_abac_item + ADD CONSTRAINT fk_request_abac_item_requests FOREIGN KEY ( request_id ) + REFERENCES requests ( request_id ); + +ALTER TABLE request_subposts + ADD CONSTRAINT fk_request_subposts_requests FOREIGN KEY ( request_id ) + REFERENCES requests ( request_id ); + +ALTER TABLE rates_missing + ADD CONSTRAINT fk_rates_missing_entitl_max_cat FOREIGN KEY ( entitlmnt_max_cat_id ) + REFERENCES entitlmnt_maxs_cat ( entitlmnt_max_cat_id ); + +ALTER TABLE rates_missing DROP COLUMN entitlmnt_max_id; + +ALTER TABLE request_payment_abac_info + ADD CONSTRAINT fk_request_payment_abac_info_requests FOREIGN KEY ( request_id ) + REFERENCES requests ( request_id ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/25_RIGD-1968_Missing_constraints_2.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/25_RIGD-1968_Missing_constraints_2.sql new file mode 100644 index 0000000..6cdd38e --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/25_RIGD-1968_Missing_constraints_2.sql @@ -0,0 +1 @@ +ALTER TABLE request_payment_abac_info ADD CONSTRAINT pk_request_payment_abac_info PRIMARY KEY ( request_payment_abac_info_id ) VALIDATE; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/26_RIGD-1968_Missing_indexes.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/26_RIGD-1968_Missing_indexes.sql new file mode 100644 index 0000000..433d632 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/26_RIGD-1968_Missing_indexes.sql @@ -0,0 +1,13 @@ +-- In Test only + +/* CREATE INDEX "ERIGHTS"."IDX_MV_ASSIGN_HIST_EEAS_JOB_ID" ON "ERIGHTS"."MV_ASSIGNMENTS_HIST_EEAS" ("JOB_ID") + ; + + CREATE INDEX "ERIGHTS"."IDX_MV_ASSIGN_HIST_EEAS_PER_ID" ON "ERIGHTS"."MV_ASSIGNMENTS_HIST_EEAS" ("PER_ID") + ; +*/ +-- Everywhere + CREATE INDEX "ERIGHTS"."IDX_MV_EMAILS_PER" ON "ERIGHTS"."MV_EMAILS" ("PER_ID") ; + +-- Everywhere + CREATE INDEX "ERIGHTS"."IDX_MV_FAMILY_MEMBERS_PER_ID" ON "ERIGHTS"."MV_FAMILY_MEMBERS" ("PER_ID") ; diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/27_RIGD-1973_MV_JOBS_HIST_EEAS.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/27_RIGD-1973_MV_JOBS_HIST_EEAS.sql new file mode 100644 index 0000000..7ad94a5 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/27_RIGD-1973_MV_JOBS_HIST_EEAS.sql @@ -0,0 +1,68 @@ +DROP MATERIALIZED VIEW erights.mv_jobs_hist_eeas; + +CREATE MATERIALIZED VIEW erights.mv_jobs_hist_eeas + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND +AS + SELECT + jcx_id, + job_id, + sp2_date_creat, + sp2_date_modif, + sp2_user_creat, + sp2_user_modif, + sp2_creation_date, + sp2_modification_date, + jh.ins_cd, + i.name ins_name, + org_id, + jh.start_date, + jh.end_date, + jcx_id_remplace, + decision_comm, + job_id_origine, + responsible, + head_of_entity, + comments, + city_code, + city_name, + country_code, + country_name, + location_city_code, + location_city_name, + location_country_code, + location_country_name, + tfn_id, + job_type, + job_status, + cgr_cd, + exclu_gsys, + exclu_gsys_interne, + exclu_gsys_comment, + org_officiel, + mobilite_obligatoire, + tabl_effectifs_uniq, + cce_id_restype, + personnel_type_id, + personnel_type_desc, + budgetary_line, + date_creat, + user_creat, + date_modif, + user_modif, + dg_resp_id, + dg_resp_code, + ejd.cfonc edel_function_code, + ejd.lfonc_en edel_function_desc + FROM + mv_jobs_hist_eeas@easrefn.cc.cec.eu.int jh + LEFT OUTER JOIN mv_edelhrm_job_details@easrefn.cc.cec.eu.int ejd ON jh.jcx_id = ejd.sysper2_job_id_eeas + LEFT OUTER JOIN mv_institutions@easrefn.cc.cec.eu.int i ON jh.ins_cd = i.ins_cd; + +CREATE INDEX erights.idx_mv_jobs_hist_eeas_job_id ON + erights.mv_jobs_hist_eeas ( + job_id + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/28_RIGD-1973_MV_JOBS_HIST_COM.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/28_RIGD-1973_MV_JOBS_HIST_COM.sql new file mode 100644 index 0000000..2f1129f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/28_RIGD-1973_MV_JOBS_HIST_COM.sql @@ -0,0 +1,49 @@ +DROP MATERIALIZED VIEW erights.mv_jobs_hist_com; + +CREATE MATERIALIZED VIEW erights.mv_jobs_hist_com + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND +AS + SELECT + jcx_id, + job_id, + jh.ins_cd, + i.name ins_name, + org_id, + jh.start_date, + jh.end_date, + jcx_id_remplace, + decision_comm, + job_id_origine, + responsible, + head_of_entity, + comments, + city_code, + city_name, + country_name, + location_city_code, + location_city_name, + location_country_code, + location_country_name, + personnel_type_id, + personnel_type_desc, + budgetary_line, + job_type, + job_status, + ejd.cfonc edel_function_code, + ejd.lfonc_en edel_function_desc + FROM + mv_jobs_hist_com@easrefn.cc.cec.eu.int jh + LEFT OUTER JOIN mv_edelhrm_job_details@easrefn.cc.cec.eu.int ejd ON jh.jcx_id = ejd.sysper2_job_id_eeas + LEFT OUTER JOIN mv_institutions@easrefn.cc.cec.eu.int i ON jh.ins_cd = i.ins_cd; + +CREATE INDEX erights.idx_mv_jobs_hist_com_job_id ON + erights.mv_jobs_hist_com ( + job_id + ); + +COMMENT ON MATERIALIZED VIEW erights.mv_jobs_hist_com IS + 'snapshot table for snapshot ERIGHTS.MV_JOBS_HIST_COM'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/30_RIGD-1973_Update_mview_registration.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/30_RIGD-1973_Update_mview_registration.sql new file mode 100644 index 0000000..dd85f29 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/30_RIGD-1973_Update_mview_registration.sql @@ -0,0 +1,10 @@ +REM INSERTING into ERIGHTS.T_APP_EASREFN_OBJECTS +SET DEFINE OFF; + +Insert into ERIGHTS.T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (16,'MV_EDELHRM_JOB_DETAILS',2); +Insert into ERIGHTS.T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (16,'MV_INSTITUTIONS',3); + +Insert into ERIGHTS.T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (17,'MV_EDELHRM_JOB_DETAILS',2); +Insert into ERIGHTS.T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (17,'MV_INSTITUTIONS',3); + +Commit; diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/31_RIGD-1973_MV_PERSONNEL_TYPE.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/31_RIGD-1973_MV_PERSONNEL_TYPE.sql new file mode 100644 index 0000000..70cef91 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/31_RIGD-1973_MV_PERSONNEL_TYPE.sql @@ -0,0 +1,25 @@ +CREATE TABLE "MV_PERSONNEL_TYPE" + ( "ID" NUMBER, + "CODE" VARCHAR2(150 BYTE), + "IS_ACTIVE" CHAR(1 BYTE), + "PRIORITY" NUMBER, + "CREATION_USER" VARCHAR2(50 BYTE), + "CREATION_DATE" TIMESTAMP (6), + "MODIFICATION_USER" VARCHAR2(50 BYTE), + "MODIFICATION_DATE" TIMESTAMP (6), + "OLD_EDELHRM_CODE" VARCHAR2(150 BYTE), + "DESCRIPTION" VARCHAR2(500 BYTE) + ) ; + +REM INSERTING into ERIGHTS.MV_PERSONNEL_TYPE +SET DEFINE OFF; +Insert into ERIGHTS.MV_PERSONNEL_TYPE (ID,CODE,IS_ACTIVE,PRIORITY,CREATION_USER,CREATION_DATE,MODIFICATION_USER,MODIFICATION_DATE,OLD_EDELHRM_CODE,DESCRIPTION) values (1,'OFFICIAL','Y',1,'faraofa',to_timestamp('10-MAR-2016 14.23.43.000000000','DD-MON-YYYY HH24.MI.SSXFF'),'faraofa',to_timestamp('10-MAR-2016 14.23.43.000000000','DD-MON-YYYY HH24.MI.SSXFF'),'FP','Official'); +Insert into ERIGHTS.MV_PERSONNEL_TYPE (ID,CODE,IS_ACTIVE,PRIORITY,CREATION_USER,CREATION_DATE,MODIFICATION_USER,MODIFICATION_DATE,OLD_EDELHRM_CODE,DESCRIPTION) values (2,'CONTRACTUAL_AGENT','Y',2,'faraofa',to_timestamp('10-MAR-2016 14.23.43.000000000','DD-MON-YYYY HH24.MI.SSXFF'),'faraofa',to_timestamp('10-MAR-2016 14.23.43.000000000','DD-MON-YYYY HH24.MI.SSXFF'),'CA','Contractual agent'); +Insert into ERIGHTS.MV_PERSONNEL_TYPE (ID,CODE,IS_ACTIVE,PRIORITY,CREATION_USER,CREATION_DATE,MODIFICATION_USER,MODIFICATION_DATE,OLD_EDELHRM_CODE,DESCRIPTION) values (3,'PERSONNEL_UNDER_LOCAL_LAW_CONTRACT','Y',3,'faraofa',to_timestamp('10-MAR-2016 14.23.43.000000000','DD-MON-YYYY HH24.MI.SSXFF'),'faraofa',to_timestamp('10-MAR-2016 14.23.43.000000000','DD-MON-YYYY HH24.MI.SSXFF'),'LOC','Personnel under Local Law Contract'); +Insert into ERIGHTS.MV_PERSONNEL_TYPE (ID,CODE,IS_ACTIVE,PRIORITY,CREATION_USER,CREATION_DATE,MODIFICATION_USER,MODIFICATION_DATE,OLD_EDELHRM_CODE,DESCRIPTION) values (4,'SECONDED_NATIONAL_EXPERT','Y',4,'faraofa',to_timestamp('10-MAR-2016 14.23.43.000000000','DD-MON-YYYY HH24.MI.SSXFF'),'faraofa',to_timestamp('10-MAR-2016 14.23.43.000000000','DD-MON-YYYY HH24.MI.SSXFF'),'END','Seconded National Expert'); +Insert into ERIGHTS.MV_PERSONNEL_TYPE (ID,CODE,IS_ACTIVE,PRIORITY,CREATION_USER,CREATION_DATE,MODIFICATION_USER,MODIFICATION_DATE,OLD_EDELHRM_CODE,DESCRIPTION) values (5,'STAFF_FROM_OTHER_INSTITUTIONS','Y',5,'faraofa',to_timestamp('10-MAR-2016 14.23.43.000000000','DD-MON-YYYY HH24.MI.SSXFF'),'faraofa',to_timestamp('10-MAR-2016 14.23.43.000000000','DD-MON-YYYY HH24.MI.SSXFF'),'EUS','Staff From Other Institutions'); +Insert into ERIGHTS.MV_PERSONNEL_TYPE (ID,CODE,IS_ACTIVE,PRIORITY,CREATION_USER,CREATION_DATE,MODIFICATION_USER,MODIFICATION_DATE,OLD_EDELHRM_CODE,DESCRIPTION) values (6,'LOCAL_AGENT','Y',6,'faraofa',to_timestamp('10-MAR-2016 14.23.43.000000000','DD-MON-YYYY HH24.MI.SSXFF'),'faraofa',to_timestamp('10-MAR-2016 14.23.43.000000000','DD-MON-YYYY HH24.MI.SSXFF'),'AL','Local agent'); +Insert into ERIGHTS.MV_PERSONNEL_TYPE (ID,CODE,IS_ACTIVE,PRIORITY,CREATION_USER,CREATION_DATE,MODIFICATION_USER,MODIFICATION_DATE,OLD_EDELHRM_CODE,DESCRIPTION) values (7,'NON_ESTABLISHMENT_PLAN','Y',7,'faraofa',to_timestamp('10-MAR-2016 14.23.43.000000000','DD-MON-YYYY HH24.MI.SSXFF'),'faraofa',to_timestamp('10-MAR-2016 14.23.43.000000000','DD-MON-YYYY HH24.MI.SSXFF'),'STR','Non - Establishment Plan'); +Insert into ERIGHTS.MV_PERSONNEL_TYPE (ID,CODE,IS_ACTIVE,PRIORITY,CREATION_USER,CREATION_DATE,MODIFICATION_USER,MODIFICATION_DATE,OLD_EDELHRM_CODE,DESCRIPTION) values (8,'BLUE_BOOK_TRAINEE','Y',8,'faraofa',to_timestamp('10-MAR-2016 14.23.43.000000000','DD-MON-YYYY HH24.MI.SSXFF'),'faraofa',to_timestamp('10-MAR-2016 14.23.43.000000000','DD-MON-YYYY HH24.MI.SSXFF'),'SLB','Blue Book Trainee'); + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/32_RIGD-1973_V_PERSONNEL_TYPE.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/32_RIGD-1973_V_PERSONNEL_TYPE.sql new file mode 100644 index 0000000..d0d9d73 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/32_RIGD-1973_V_PERSONNEL_TYPE.sql @@ -0,0 +1,5 @@ + CREATE OR REPLACE VIEW "ERIGHTS"."V_PERSONNEL_TYPE" ("ID", "CODE", "IS_ACTIVE", "PRIORITY", "CREATION_USER", "CREATION_DATE", "MODIFICATION_USER", "MODIFICATION_DATE", "OLD_EDELHRM_CODE", "DESCRIPTION") AS + SELECT + ID,CODE,IS_ACTIVE,PRIORITY,CREATION_USER,CREATION_DATE,MODIFICATION_USER,MODIFICATION_DATE,OLD_EDELHRM_CODE,DESCRIPTION + FROM + MV_PERSONNEL_TYPE; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/33_RIGD-1973_MOVEMENT_FILES_Alter.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/33_RIGD-1973_MOVEMENT_FILES_Alter.sql new file mode 100644 index 0000000..10fc471 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/33_RIGD-1973_MOVEMENT_FILES_Alter.sql @@ -0,0 +1,14 @@ +ALTER TABLE MOVEMENT_FILES +ADD (PERSONNEL_TYPE_ID NUMBER ); + +ALTER TABLE MOVEMENT_FILES +ADD (JOB_FUNCTION_CODE VARCHAR2(150) ); + +ALTER TABLE MOVEMENT_FILES +ADD (JOB_FUNCTION_DESC VARCHAR2(500) ); + +ALTER TABLE MOVEMENT_FILES +ADD (INSTITUTION_CODE VARCHAR2(10) ); + +ALTER TABLE MOVEMENT_FILES +ADD (INSTITUTION_DESC VARCHAR2(200) ); diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/34_RIGD-1973_AUD_MOVEMENT_FILES_Alter.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/34_RIGD-1973_AUD_MOVEMENT_FILES_Alter.sql new file mode 100644 index 0000000..a85c69b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/34_RIGD-1973_AUD_MOVEMENT_FILES_Alter.sql @@ -0,0 +1,14 @@ +ALTER TABLE AUD_MOVEMENT_FILES +ADD (PERSONNEL_TYPE_ID NUMBER ); + +ALTER TABLE AUD_MOVEMENT_FILES +ADD (JOB_FUNCTION_CODE VARCHAR2(150) ); + +ALTER TABLE AUD_MOVEMENT_FILES +ADD (JOB_FUNCTION_DESC VARCHAR2(500) ); + +ALTER TABLE AUD_MOVEMENT_FILES +ADD (INSTITUTION_CODE VARCHAR2(10) ); + +ALTER TABLE AUD_MOVEMENT_FILES +ADD (INSTITUTION_DESC VARCHAR2(200) ); diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/35_RIGD-1973_V_REPORT_MOVEMENT_FILES.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/35_RIGD-1973_V_REPORT_MOVEMENT_FILES.sql new file mode 100644 index 0000000..06a5d2d --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/35_RIGD-1973_V_REPORT_MOVEMENT_FILES.sql @@ -0,0 +1,55 @@ +CREATE OR REPLACE VIEW erights.v_report_movement_files AS + SELECT + f.movement_file_id, + p.first_name AS first_name, + p.last_name AS last_name, + f.state AS status, + coalesce(f.start_date, assign_start_date_to) AS startdatefuture, + CASE + WHEN EXTRACT(YEAR FROM(coalesce(f.estimated_end_date, assign_end_date_to))) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + coalesce(f.estimated_end_date, assign_end_date_to) + END AS enddatefuture, + initcap(ci_from.description_en) + || ', ' + || ct_from.name_en AS movementfrom, + initcap(ci_to.description_en) + || ', ' + || ct_to.name_en AS movementto, + f.evacuation_status, + budget_line AS budgdet_line_future, + mvtp.movement_type AS movementtype, + f.year AS movementyear, + c.name AS movementcontext, + f.per_id AS perid, + CASE + WHEN mvtp.movement_type LIKE '%-HQ' THEN + NULL + ELSE + f.job_id_to + END AS futureassignment, + f.file_id AS fileid, + f.priority, + f.followup_flags, + f.org_cd_from AS allocatedtocurrent, + f.org_cd_to AS allocatedtofuture, + '1' AS reason, + f.delegation_org_id_from, + f.personnel_type_id, + f.personnel_type_desc, + f.job_function_code, + f.job_function_desc, + f.institution_code, + f.institution_desc + FROM + movement_files f + INNER JOIN movement_context c ON f.context_id = c.movement_context_id + INNER JOIN v_people p ON p.per_id = f.per_id + INNER JOIN movement_types mvtp ON mvtp.movement_type_id = f.movement_type_id + LEFT JOIN mv_countries ct_from ON f.country_code_from = ct_from.country_code + LEFT JOIN mv_cities ci_from ON f.city_code_from = ci_from.city_code + AND ct_from.country_code = ci_from.country_code + LEFT JOIN mv_countries ct_to ON f.country_code_to = ct_to.country_code + LEFT JOIN mv_cities ci_to ON f.city_code_to = ci_to.city_code + AND ct_to.country_code = ci_to.country_code; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/37_RIGD-1999_v_jobs.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/37_RIGD-1999_v_jobs.sql new file mode 100644 index 0000000..1d58425 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/37_RIGD-1999_v_jobs.sql @@ -0,0 +1,248 @@ +CREATE OR REPLACE FORCE EDITIONABLE VIEW erights.v_jobs ( + job_id, + job_moment, + job_type, + personnel_type_id, + personnel_type_desc, + budgetary_line, + job_city_code, + job_city_name, + job_country_code, + job_country_name, + organization_country, + organization_city, + organization_name, + org_id, + assign_start_date_to, + assign_end_date_to, + per_id, + severity_level, + evacuation_level_code_id, + alert_status_id, + evacuation_level_code, + organization_country_code, + organization_city_code, + family_posting_type_id, + family_posting_type, + hod, + family_posting_type_cat, + budget_line, + delegation_org_id, + institution_code, + institution_name, + function_code, + function_desc +) DEFAULT COLLATION using_nls_comp AS + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + delstat.org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_eeas jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist enth2 + WHERE + enth.org_id = enth2.org_id + ) + UNION ALL + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + delstat.org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN mv_delegation_status delstat ON delstat.org_id = enth.main_org_id + LEFT JOIN mv_head_of_delegations hod ON asgh.per_id = hod.per_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + NOT EXISTS ( + SELECT + 1 + FROM + mv_jobs_hist_eeas jobhe + WHERE + jobh.job_id = jobhe.job_id + ) + AND jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_com jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist enth2 + WHERE + enth.org_id = enth2.org_id + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/38_RIGD-1973_MOVEMENT_FILES_Populate_new_fields.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/38_RIGD-1973_MOVEMENT_FILES_Populate_new_fields.sql new file mode 100644 index 0000000..a1d8a88 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/38_RIGD-1973_MOVEMENT_FILES_Populate_new_fields.sql @@ -0,0 +1,49 @@ +UPDATE movement_files mf +SET + ( mf.personnel_type_desc, + mf.personnel_type_id, + mf.institution_code, + mf.institution_desc, + mf.job_function_code, + mf.job_function_desc ) = ( + SELECT + j.personnel_type_desc, + j.personnel_type_id, + j.institution_code, + j.institution_name, + j.function_code, + j.function_desc + FROM + v_jobs j + WHERE + j.job_id = mf.job_id_to + ) +WHERE + mf.context_id <> 3 -- not EOC + ; + +UPDATE movement_files mf +SET + ( mf.personnel_type_desc, + mf.personnel_type_id, + mf.institution_code, + mf.institution_desc, + mf.job_function_code, + mf.job_function_desc ) = ( + SELECT + j.personnel_type_desc, + j.personnel_type_id, + j.institution_code, + j.institution_name, + j.function_code, + j.function_desc + FROM + v_jobs j + WHERE + j.job_id = mf.job_id_from + ) +WHERE + mf.context_id = 3 -- not EOC + AND mf.job_id_from IS NOT NULL; + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/40_RIGD-1991_MV_PERSONNEL_TYPE.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/40_RIGD-1991_MV_PERSONNEL_TYPE.sql new file mode 100644 index 0000000..c214d38 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/40_RIGD-1991_MV_PERSONNEL_TYPE.sql @@ -0,0 +1,36 @@ +CREATE MATERIALIZED VIEW mv_personnel_type + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE ON QUERY COMPUTATION DISABLE QUERY REWRITE AS + SELECT + ROWNUM id, + pt.* + FROM + ( + SELECT + personnel_type code, + is_active, + nr_order priority, + 1 creation_user, + sysdate creation_date, + 1 modification_user, + sysdate modification_date, + edelhrm_code old_edelhrm_code, + personnel_type_en description + FROM + mv_personnel_types@easrefn + ORDER BY + nr_order, + personnel_type + ) pt; + +REM INSERTING into ERIGHTS.T_REFRESH_OBJECTS +SET DEFINE OFF; +Insert into ERIGHTS.T_REFRESH_OBJECTS (ID,APP_OBJECT_NAME,PRIORITY,IS_REFRESHED,STATUS,REFRESH_DATE,SYSTEM) values (37,'MV_PERSONNEL_TYPE',37,'N','KO',null,'EASREFN'); +Insert into ERIGHTS.T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) values (37,'MV_PERSONNEL_TYPES',1); +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/41_RIGD-1999_v_institutions.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/41_RIGD-1999_v_institutions.sql new file mode 100644 index 0000000..4a2bd8b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/41_RIGD-1999_v_institutions.sql @@ -0,0 +1,17 @@ +CREATE OR REPLACE VIEW erights.v_institutions ( + ins_cd, + ins_type, + name, + start_date, + end_date +) AS + SELECT + ins_cd, + ins_type, + name, + start_date, + end_date + FROM + mv_institutions + WHERE + easrefn_ins_cd <> 'EEAS_COM'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/43_RIGD-9999_USER_PREFERENCES_Alter.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/43_RIGD-9999_USER_PREFERENCES_Alter.sql new file mode 100644 index 0000000..0a7fb5b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/43_RIGD-9999_USER_PREFERENCES_Alter.sql @@ -0,0 +1,8 @@ +ALTER TABLE USER_PREFERENCES +ADD CONSTRAINT PER_ID_PAGE_UK UNIQUE +( + PER_ID +, LOCALE +, PAGE_PATH +) +ENABLE; diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/44_RIGD-9999_mv_emails.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/44_RIGD-9999_mv_emails.sql new file mode 100644 index 0000000..9e827c4 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/44_RIGD-9999_mv_emails.sql @@ -0,0 +1,101 @@ +drop MATERIALIZED VIEW "ERIGHTS"."MV_EMAILS"; + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_EMAILS" ( + "PER_ID", + "EMAIL", + "CTX_CD" +) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE ON QUERY COMPUTATION DISABLE QUERY REWRITE AS + SELECT + per_id, + TRIM(lower(email)) email, + ctx_cd + FROM + ( + SELECT + per_id, + email, + ctx_cd, + ROW_NUMBER() + OVER(PARTITION BY per_id + ORDER BY + start_date DESC + ) rn + FROM + ( + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date, + 'Y' sysper + FROM + mv_emails_com@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, 12 ) + UNION ALL + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date, + 'Y' sysper + FROM + mv_emails_eeas@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, 12 ) + UNION ALL + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date, + 'Y' sysper + FROM + mv_emails_hist_eeas@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, 12 ) + AND end_date = TO_DATE('31-DEC-9999 00:00:00', 'DD-MON-YYYY HH24:MI:SS') + UNION ALL + SELECT + per_id, + email, + ctx_cd, + start_date, + end_date + FROM + mv_emails_hist_com@easrefn.cc.cec.eu.int + WHERE + tadr_cd IN ( 11, 12 ) + AND end_date = TO_DATE('31-DEC-9999 00:00:00', 'DD-MON-YYYY HH24:MI:SS') + UNION ALL + SELECT + per_id, + adr_email email, + 'PRIV' email_type, + date_from start_date, + nvl(date_to, TO_DATE('31-DEC-9999 00:00:00', 'DD-MON-YYYY HH24:MI:SS')) end_date + FROM + mv_person_career_files@easrefn.cc.cec.eu.int + WHERE + adr_email IS NOT NULL + ) + ) + WHERE + rn = 1; + +CREATE INDEX "ERIGHTS"."IDX_MV_EMAILS_PER" ON + "ERIGHTS"."MV_EMAILS" ( + "PER_ID" + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/45_RIGD-9999_v_persons_emails.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/45_RIGD-9999_v_persons_emails.sql new file mode 100644 index 0000000..0da49f6 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/45_RIGD-9999_v_persons_emails.sql @@ -0,0 +1,41 @@ +CREATE OR REPLACE FORCE EDITIONABLE VIEW erights.v_persons_emails AS + SELECT + per_id, + TRIM(lower(email)) email, + email_type, + source + FROM + ( + SELECT + per_id, + email, + email_type, + source, + ROW_NUMBER() + OVER(PARTITION BY per_id + ORDER BY + preference ASC + ) rn + FROM + ( + SELECT + per_id, + email_type, + email, + 'ERIGHTS' source, + 2 preference + FROM + persons_emails + UNION --ALL + SELECT + per_id, + ctx_cd email_type, + email, + 'EASREFN' source, + 1 preference + FROM + mv_emails + ) + ) + WHERE + rn = 1; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/46_RIGD-9999_v_staffmembers.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/46_RIGD-9999_v_staffmembers.sql new file mode 100644 index 0000000..130b20f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/46_RIGD-9999_v_staffmembers.sql @@ -0,0 +1,231 @@ +CREATE OR REPLACE VIEW erights.v_staffmembers ( + per_id, + first_name, + last_name, + gender, + email, + birth_city, + birth_country_code, + birth_country_desc, + recruitment_city, + recruitment_country, + organization_name, + organization_city, + organization_country, + org_id, + job_id, + assign_start_date, + assign_end_date, + org_cd, + private_email, + origin_city, + origin_country_code, + origin_country_desc, + statutory_link_code, + statutory_link_desc +) AS + SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + p.assign_start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM p.assign_end_date) IN ( 9999, 2099 ) ) THEN + to_date(NULL) + ELSE + p.assign_end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email, + o.place_of_origin AS origin_city, + o.country_code AS origin_country_code, + o.country_of_origin AS origin_country_desc, + p.lst_cd statutory_link_code, + p.lst_desc statutory_link_desc + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id, + assign_start_date, + assign_end_date, + lst_cd, + lst_code lst_desc + FROM + mv_persons_eeas + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + FROM + mv_persons_hist_eeas phe + WHERE + coalesce(phe.start_date, sysdate) = ( + SELECT + coalesce(MAX(phe2.start_date), sysdate) + FROM + mv_persons_hist_eeas phe2 + WHERE + phe.per_id = phe2.per_id + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities e ON p.org_id = e.org_id + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN v_persons_emails em ON em.per_id = p.per_id + LEFT JOIN v_places_of_origin o ON p.per_id = o.per_id + UNION ALL + SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + assign.start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM assign.end_date) IN ( 2099, 9999 ) ) THEN + to_date(NULL) + ELSE + assign.end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email, + o.place_of_origin origin_city, + o.country_code origin_country_code, + o.country_of_origin origin_country_desc, + p.lst_cd statutory_link_code, + p.lst_desc statutory_link_desc + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id, + lst_cd, + lst_code lst_desc + FROM + mv_persons_com + WHERE + mv_persons_com.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL + FROM + mv_persons_hist_com phc + WHERE + coalesce(phc.start_date, sysdate) = ( + SELECT + coalesce(MAX(phc2.start_date), sysdate) + FROM + mv_persons_hist_com phc2 + WHERE + phc.per_id = phc2.per_id + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities_hist_com e ON p.org_id = e.org_id + AND trunc(sysdate) < trunc(e.end_date) + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_assignments_com assign ON assign.per_id = p.per_id + AND assign.toj_cd = 'AFF' + LEFT JOIN v_persons_emails em ON em.per_id = p.per_id + LEFT JOIN v_places_of_origin o ON p.per_id = o.per_id; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/47_RIGD-1986_MV_FUNCTION_CODES.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/47_RIGD-1986_MV_FUNCTION_CODES.sql new file mode 100644 index 0000000..f92b99f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/47_RIGD-1986_MV_FUNCTION_CODES.sql @@ -0,0 +1,20 @@ +DROP MATERIALIZED VIEW erights.mv_function_codes; + +CREATE MATERIALIZED VIEW erights.mv_function_codes + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE ON QUERY COMPUTATION DISABLE QUERY REWRITE AS + SELECT + function_code, + function_desc_fr, + function_desc_en, + nr_order, + is_active, + edelhrm_code + FROM + mv_function_codes@easrefn.cc.cec.eu.int; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/48_RIGD-1986_V_FUNCTION_CODES.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/48_RIGD-1986_V_FUNCTION_CODES.sql new file mode 100644 index 0000000..19f1c01 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/48_RIGD-1986_V_FUNCTION_CODES.sql @@ -0,0 +1,15 @@ +CREATE OR REPLACE VIEW erights.v_function_codes ( + function_code, + function_desc_fr, + function_desc_en, + nr_order +) AS + SELECT + function_code, + function_desc_fr, + function_desc_en, + nr_order + FROM + mv_function_codes + WHERE + is_active = 'Y'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/49_RIGD-1991_mv_jobs_hist_eeas.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/49_RIGD-1991_mv_jobs_hist_eeas.sql new file mode 100644 index 0000000..9363db5 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/49_RIGD-1991_mv_jobs_hist_eeas.sql @@ -0,0 +1,136 @@ +DROP MATERIALIZED VIEW erights.mv_jobs_hist_eeas; + +CREATE MATERIALIZED VIEW erights.mv_jobs_hist_eeas ( + jcx_id, + job_id, + sp2_date_creat, + sp2_date_modif, + sp2_user_creat, + sp2_user_modif, + sp2_creation_date, + sp2_modification_date, + ins_cd, + ins_name, + org_id, + start_date, + end_date, + jcx_id_remplace, + decision_comm, + job_id_origine, + responsible, + head_of_entity, + comments, + city_code, + city_name, + country_code, + country_name, + location_city_code, + location_city_name, + location_country_code, + location_country_name, + tfn_id, + job_type, + job_status, + cgr_cd, + exclu_gsys, + exclu_gsys_interne, + exclu_gsys_comment, + org_officiel, + mobilite_obligatoire, + tabl_effectifs_uniq, + cce_id_restype, + personnel_type_id, + personnel_type_desc, + budgetary_line, + date_creat, + user_creat, + date_modif, + user_modif, + dg_resp_id, + dg_resp_code, + edel_function_code, + edel_function_desc +) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE ON QUERY COMPUTATION DISABLE QUERY REWRITE AS + SELECT + jh.jcx_id, + jh.job_id, + jh.sp2_date_creat, + jh.sp2_date_modif, + jh.sp2_user_creat, + jh.sp2_user_modif, + jh.sp2_creation_date, + jh.sp2_modification_date, + jh.ins_cd, + i.name ins_name, + jh.org_id, + jh.start_date, + jh.end_date, + jh.jcx_id_remplace, + jh.decision_comm, + jh.job_id_origine, + jh.responsible, + jh.head_of_entity, + jh.comments, + jh.city_code, + jh.city_name, + jh.country_code, + jh.country_name, + jh.location_city_code, + jh.location_city_name, + jh.location_country_code, + jh.location_country_name, + jh.tfn_id, + jh.job_type, + jh.job_status, + jh.cgr_cd, + jh.exclu_gsys, + jh.exclu_gsys_interne, + jh.exclu_gsys_comment, + jh.org_officiel, + jh.mobilite_obligatoire, + jh.tabl_effectifs_uniq, + jh.cce_id_restype, + coalesce(hjd.personnel_type_id, jh.personnel_type_id) personnel_type_id, + coalesce(hjd.personnel_type, jh.personnel_type_desc) personnel_type_desc, + jh.budgetary_line, + jh.date_creat, + jh.user_creat, + jh.date_modif, + jh.user_modif, + jh.dg_resp_id, + jh.dg_resp_code, + hjd.function_type_code edel_function_code, + hjd.function_type edel_function_desc + FROM + mv_jobs_hist_eeas@easrefn.cc.cec.eu.int jh + LEFT OUTER JOIN mv_institutions@easrefn.cc.cec.eu.int i ON jh.ins_cd = i.ins_cd + LEFT OUTER JOIN mv_hrportal_jobs_details@easrefn.cc.cec.eu.int hjd ON jh.job_id = hjd.job_id; + +CREATE INDEX erights.idx_mv_jobs_hist_eeas_job_id ON + erights.mv_jobs_hist_eeas ( + job_id + ) + COMPUTE STATISTICS; + +REM INSERTING into ERIGHTS.T_APP_EASREFN_OBJECTS +SET DEFINE OFF; + +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 16, + 'MV_HRPORTAL_JOBS_DETAILS', + 4 +); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/50_RIGD-1991_mv_jobs_hist_com.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/50_RIGD-1991_mv_jobs_hist_com.sql new file mode 100644 index 0000000..15c9405 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/50_RIGD-1991_mv_jobs_hist_com.sql @@ -0,0 +1,91 @@ +DROP MATERIALIZED VIEW erights.mv_jobs_hist_com; + +CREATE MATERIALIZED VIEW erights.mv_jobs_hist_com ( + jcx_id, + job_id, + ins_cd, + ins_name, + org_id, + start_date, + end_date, + jcx_id_remplace, + decision_comm, + job_id_origine, + responsible, + head_of_entity, + comments, + city_code, + city_name, + country_name, + location_city_code, + location_city_name, + location_country_code, + location_country_name, + personnel_type_id, + personnel_type_desc, + budgetary_line, + job_type, + job_status, + edel_function_code, + edel_function_desc +) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT + USING ENFORCED CONSTRAINTS +DISABLE ON QUERY COMPUTATION DISABLE QUERY REWRITE AS + SELECT + jh.jcx_id, + jh.job_id, + jh.ins_cd, + i.name ins_name, + jh.org_id, + jh.start_date, + jh.end_date, + jcx_id_remplace, + jh.decision_comm, + jh.job_id_origine, + jh.responsible, + jh.head_of_entity, + jh.comments, + jh.city_code, + jh.city_name, + jh.country_name, + jh.location_city_code, + jh.location_city_name, + jh.location_country_code, + jh.location_country_name, + coalesce(hjd.personnel_type_id, jh.personnel_type_id) personnel_type_id, + coalesce(hjd.personnel_type, jh.personnel_type_desc) personnel_type_desc, + jh.budgetary_line, + jh.job_type, + jh.job_status, + hjd.function_type_code edel_function_code, + hjd.function_type edel_function_desc + FROM + mv_jobs_hist_com@easrefn.cc.cec.eu.int jh + LEFT OUTER JOIN mv_institutions@easrefn.cc.cec.eu.int i ON jh.ins_cd = i.ins_cd + LEFT OUTER JOIN mv_hrportal_jobs_details@easrefn.cc.cec.eu.int hjd ON jh.job_id = hjd.job_id; + +CREATE INDEX erights.idx_mv_jobs_hist_com_job_id ON + erights.mv_jobs_hist_com ( + job_id + ) + COMPUTE STATISTICS; + +SET DEFINE OFF; + +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 16, + 'MV_HRPORTAL_JOBS_DETAILS', + 4 +); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/51 update entitlement_max year .sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/51 update entitlement_max year .sql new file mode 100644 index 0000000..e5e9bce --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/51 update entitlement_max year .sql @@ -0,0 +1,148 @@ +UPDATE entitlmnt_maxs emm + SET + start_date = TO_DATE('01/05/20', 'DD/MM/YY'), + rate_year = 2020 + WHERE + emm.entitlmnt_max_id IN ( + SELECT + em.entitlmnt_max_id + FROM + movement_files mv, entitlmnt_types et, entitlmnt_maxs em + WHERE + mv.movement_file_id = et.movement_file_id + AND et.entitlmnt_type_id = em.entitlmnt_type_id + AND mv.start_date BETWEEN TO_DATE('01/05/20', 'DD/MM/YY') AND TO_DATE('30/04/21', 'DD/MM/YY') + ); + +UPDATE entitlmnt_maxs emm + SET + start_date = TO_DATE('01/05/21', 'DD/MM/YY'), + rate_year = 2021 + WHERE + emm.entitlmnt_max_id IN ( + SELECT + em.entitlmnt_max_id + FROM + movement_files mv, entitlmnt_types et, entitlmnt_maxs em + WHERE + mv.movement_file_id = et.movement_file_id + AND et.entitlmnt_type_id = em.entitlmnt_type_id + AND mv.start_date BETWEEN TO_DATE('01/05/21', 'DD/MM/YY') AND TO_DATE('30/04/22', 'DD/MM/YY') + ); + +UPDATE entitlmnt_maxs emm + SET + start_date = TO_DATE('01/05/22', 'DD/MM/YY'), + rate_year = 2022 + WHERE + emm.entitlmnt_max_id IN ( + SELECT + em.entitlmnt_max_id + FROM + movement_files mv, entitlmnt_types et, entitlmnt_maxs em + WHERE + mv.movement_file_id = et.movement_file_id + AND et.entitlmnt_type_id = em.entitlmnt_type_id + AND mv.start_date BETWEEN TO_DATE('01/05/22', 'DD/MM/YY') AND TO_DATE('30/04/23', 'DD/MM/YY') + ); + +UPDATE entitlmnt_maxs emm + SET + start_date = TO_DATE('01/05/23', 'DD/MM/YY'), + rate_year = 2023 + WHERE + emm.entitlmnt_max_id IN ( + SELECT + em.entitlmnt_max_id + FROM + movement_files mv, entitlmnt_types et, entitlmnt_maxs em + WHERE + mv.movement_file_id = et.movement_file_id + AND et.entitlmnt_type_id = em.entitlmnt_type_id + AND mv.start_date BETWEEN TO_DATE('01/05/23', 'DD/MM/YY') AND TO_DATE('30/04/24', 'DD/MM/YY') + ); + + +--EOC + + +update ENTITLMNT_MAXS emm + set START_DATE = TO_DATE('01/05/20','DD/MM/YY'), + RATE_YEAR = 2020 + where emm.ENTITLMNT_MAX_ID in ( + + select em.ENTITLMNT_MAX_ID from MOVEMENT_FILES mv, ENTITLMNT_TYPES et,ENTITLMNT_MAXS em + where mv.movement_file_id = et.movement_file_id + and et.ENTITLMNT_TYPE_ID = em.ENTITLMNT_TYPE_ID + and mv.start_date is null + and mv.ESTIMATED_END_DATE between TO_DATE('01/05/20','DD/MM/YY') and TO_DATE('30/04/21','DD/MM/YY') + + ); + + + +update ENTITLMNT_MAXS emm + set START_DATE = TO_DATE('01/05/21','DD/MM/YY'), + RATE_YEAR = 2021 + where emm.ENTITLMNT_MAX_ID in ( + + select em.ENTITLMNT_MAX_ID from MOVEMENT_FILES mv, ENTITLMNT_TYPES et,ENTITLMNT_MAXS em + where mv.movement_file_id = et.movement_file_id + and et.ENTITLMNT_TYPE_ID = em.ENTITLMNT_TYPE_ID + and mv.ESTIMATED_END_DATE between TO_DATE('01/05/21','DD/MM/YY') and TO_DATE('30/04/22','DD/MM/YY') + ); + +update ENTITLMNT_MAXS emm + set START_DATE = TO_DATE('01/05/22','DD/MM/YY'), + RATE_YEAR = 2022 + where emm.ENTITLMNT_MAX_ID in ( + + select em.ENTITLMNT_MAX_ID from MOVEMENT_FILES mv, ENTITLMNT_TYPES et,ENTITLMNT_MAXS em + where mv.movement_file_id = et.movement_file_id + and et.ENTITLMNT_TYPE_ID = em.ENTITLMNT_TYPE_ID + and mv.start_date is null + and mv.ESTIMATED_END_DATE between TO_DATE('01/05/22','DD/MM/YY') and TO_DATE('30/04/23','DD/MM/YY') + + ); + + + + +update ENTITLMNT_MAXS emm + set START_DATE = TO_DATE('01/05/23','DD/MM/YY'), + RATE_YEAR = 2023 + where emm.ENTITLMNT_MAX_ID + IN + + ( SELECT + em.entitlmnt_max_id + FROM + movement_files mv, + entitlmnt_types et, + entitlmnt_maxs em + WHERE + mv.movement_file_id = et.movement_file_id + AND et.entitlmnt_type_id = em.entitlmnt_type_id + and mv.start_date is null + AND mv.ESTIMATED_END_DATE BETWEEN TO_DATE('01/05/23', 'DD/MM/YY') AND TO_DATE('30/04/24', 'DD/MM/YY') + ); + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/52_update prioityfkags.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/52_update prioityfkags.sql new file mode 100644 index 0000000..8061024 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/52_update prioityfkags.sql @@ -0,0 +1,41 @@ +--(1) for 2021 and 2020 files, the old "Priority" flag is removed entirely. +--(2) for 2022 files, if the "Priority" flag is enabled in the movement file, then it is replaced by the new "Urgent" flag. + + + UPDATE movement_files emm +SET + FOLLOWUP_FLAGS = null + WHERE + emm.movement_file_id IN ( + SELECT + mv.movement_file_id + FROM + movement_files mv where + mv.start_date < TO_DATE('01/01/22', 'DD/MM/YY')); + + +UPDATE movement_files emm + SET + FOLLOWUP_FLAGS = 'Urgent' + WHERE + emm.movement_file_id IN ( + SELECT + mv.movement_file_id + FROM + movement_files mv where + mv.start_date > TO_DATE('01/01/22', 'DD/MM/YY') + and PRIORITY = 'Y'); + + + +UPDATE movement_files emm + SET + FOLLOWUP_FLAGS = null + WHERE + emm.movement_file_id IN ( + SELECT + mv.movement_file_id + FROM + movement_files mv where + mv.start_date > TO_DATE('01/01/22', 'DD/MM/YY') + and PRIORITY <> 'Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.0-RC12/53_RIGD-2014_migrate_requests_comments.sql b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/53_RIGD-2014_migrate_requests_comments.sql new file mode 100644 index 0000000..08defea --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.0-RC12/53_RIGD-2014_migrate_requests_comments.sql @@ -0,0 +1,38 @@ +INSERT INTO comments ( + comments_id, + entity_id, + comment_text, + comment_type, + display_order, + deleted, + created_at, + updated_at, + created_by, + updated_by, + author_name +) + SELECT + seq_comments.NEXTVAL, + request_id, + comments, + 'REQUEST', + NULL, + 'N', + sysdate, + sysdate, + 0, + 0, + 'SYSTEM' + FROM + requests + WHERE + comments IS NOT NULL; + +COMMIT; + +-- +--select * +--from requests; +-- +--select * +--from comments; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/2.9.1/03_RIGD-1447_add_private_email_source_to_v_staffmembers.sql b/e-rights-common/src/main/database/release/archive/2.9.1/03_RIGD-1447_add_private_email_source_to_v_staffmembers.sql new file mode 100644 index 0000000..1033fe0 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.1/03_RIGD-1447_add_private_email_source_to_v_staffmembers.sql @@ -0,0 +1,214 @@ +--------------------------------------------------------------------------------------------------------- +-- Recreating view "V_STAFFMEMBERS": Simply adding column "PRIVATE_EMAIL_SOURCE" from "V_PERSONS_EMAILS" +--------------------------------------------------------------------------------------------------------- + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "V_STAFFMEMBERS" ("PER_ID", "FIRST_NAME", "LAST_NAME", "GENDER", "EMAIL", "BIRTH_CITY", "BIRTH_COUNTRY_CODE", "BIRTH_COUNTRY_DESC", "RECRUITMENT_CITY", "RECRUITMENT_COUNTRY", "ORGANIZATION_NAME", "ORGANIZATION_CITY", "ORGANIZATION_COUNTRY", "ORG_ID", "JOB_ID", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "ORG_CD", "PRIVATE_EMAIL", "PRIVATE_EMAIL_SOURCE", "ORIGIN_CITY", "ORIGIN_COUNTRY_CODE", "ORIGIN_COUNTRY_DESC", "STATUTORY_LINK_CODE", "STATUTORY_LINK_DESC") DEFAULT COLLATION "USING_NLS_COMP" AS + SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + p.assign_start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM p.assign_end_date) IN ( 9999, 2099 ) ) THEN + to_date(NULL) + ELSE + p.assign_end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email, + em.source AS private_email_source, + + o.place_of_origin AS origin_city, + o.country_code AS origin_country_code, + o.country_of_origin AS origin_country_desc, + p.lst_cd statutory_link_code, + p.lst_desc statutory_link_desc + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id, + assign_start_date, + assign_end_date, + lst_cd, + lst_code lst_desc + FROM + mv_persons_eeas + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + FROM + mv_persons_hist_eeas phe + WHERE + coalesce(phe.start_date, sysdate) = ( + SELECT + coalesce(MAX(phe2.start_date), sysdate) + FROM + mv_persons_hist_eeas phe2 + WHERE + phe.per_id = phe2.per_id + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phe.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities e ON p.org_id = e.org_id + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN v_persons_emails em ON em.per_id = p.per_id + LEFT JOIN v_places_of_origin o ON p.per_id = o.per_id + UNION ALL +SELECT + p.per_id AS per_id, + p.first_name AS first_name, + p.surname AS last_name, + p.genre AS gender, + p.email AS email, + p.place_of_birth AS birth_city, + p.country_of_birth AS birth_country_code, + c1.name_en AS birth_country_desc, + d.lieu_recr AS recruitment_city, + d.recr_pay_cd + || ' - ' + || d.name_en AS recruitment_country, + p.org_cd AS organization_name, + e.eng_city AS organization_city, + e.eng_country AS organization_country, + p.org_id AS org_id, + p.job_id AS job_id, + assign.start_date AS assign_start_date, + CASE + WHEN ( EXTRACT(YEAR FROM assign.end_date) IN ( 2099, 9999 ) ) THEN + to_date(NULL) + ELSE + assign.end_date + END AS assign_end_date, + p.org_cd AS org_cd, + em.email AS private_email, + em.source AS private_email_source, + o.place_of_origin origin_city, + o.country_code origin_country_code, + o.country_of_origin origin_country_desc, + p.lst_cd statutory_link_code, + p.lst_desc statutory_link_desc + FROM + ( + SELECT + per_id, + first_name, + surname, + genre, + email, + place_of_birth, + country_of_birth, + org_cd, + org_id, + job_id, + lst_cd, + lst_code lst_desc + FROM + mv_persons_com + WHERE + mv_persons_com.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + UNION ALL + SELECT + per_id, + first_name, + surname, + genre, + NULL, + place_of_birth, + country_of_birth, + NULL, + NULL, + NULL, + NULL, + NULL + FROM + mv_persons_hist_com phc + WHERE + coalesce(phc.start_date, sysdate) = ( + SELECT + coalesce(MAX(phc2.start_date), sysdate) + FROM + mv_persons_hist_com phc2 + WHERE + phc.per_id = phc2.per_id + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_eeas + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_com + ) + AND phc.per_id NOT IN ( + SELECT + per_id + FROM + mv_persons_hist_eeas + ) + ) p + LEFT JOIN v_recruitment_places d ON p.per_id = d.per_id + LEFT JOIN mv_entities_hist_com e ON p.org_id = e.org_id + AND trunc(sysdate) < trunc(e.end_date) + LEFT JOIN mv_countries c1 ON p.country_of_birth = c1.country_code + LEFT JOIN mv_assignments_com assign ON assign.per_id = p.per_id + AND assign.toj_cd = 'AFF' + LEFT JOIN v_persons_emails em ON em.per_id = p.per_id + LEFT JOIN v_places_of_origin o ON p.per_id = o.per_id; + diff --git a/e-rights-common/src/main/database/release/archive/2.9.1/04_MV_NUP.sql b/e-rights-common/src/main/database/release/archive/2.9.1/04_MV_NUP.sql new file mode 100644 index 0000000..2438305 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/2.9.1/04_MV_NUP.sql @@ -0,0 +1,67 @@ + +drop MATERIALIZED VIEW "ERIGHTS"."MV_NUP"; + + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_NUP" ( "PER_ID", "NUP","NO_SYSPER" ) + +AS SELECT per_id, + MAX( nup ) KEEP ( DENSE_RANK LAST ORDER BY MODIFICATION_DATE ) AS nup, + MAX( NO_SYSPER ) KEEP ( DENSE_RANK LAST ORDER BY MODIFICATION_DATE ) AS NO_SYSPER + + FROM mv_nup@easrefn.cc.cec.eu.int + GROUP BY per_id; + + + +REM INSERTING into ERIGHTS.T_REFRESH_OBJECTS +SET DEFINE OFF; +Insert into ERIGHTS.T_REFRESH_OBJECTS (ID,APP_OBJECT_NAME,PRIORITY,IS_REFRESHED,STATUS,REFRESH_DATE,SYSTEM) +values (38,'MV_NUP',38,'N','KO',null,'EASREFN'); +Insert into ERIGHTS.T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID,EASREFN_OBJECT_NAME,PRIORITY) +values (38,'MV_NUP',38); +commit; + + + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_PERSONS_DATA_FOR_ABAC" ("PER_ID", "NUP", "BIRTH_NAME", "FIRST_NAME", "ANALYTICAL_CODE") + + AS SELECT + per_id, nup, birth_name, first_name, analytical_code + FROM + ( + SELECT + per_id, nup, birth_name, first_name, analytical_code, + ROW_NUMBER() + OVER(PARTITION BY per_id + ORDER BY + preference ASC + ) rn + FROM + ( + SELECT + per_id, + nup as nup , + ' ' birth_name, + ' ' first_name, + 'NO_CODE_FOUND' analytical_code, + 2 preference + FROM + mv_nup + UNION --ALL + SELECT + per_id, + nup, + birth_name, + first_name, + analytical_code, + 1 preference + FROM + mv_analytical_codes@easrefn.cc.cec.eu.int + ) + ) + WHERE + rn = 1; + +COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_PERSONS_DATA_FOR_ABAC" IS 'snapshot table for snapshot ERIGHTS.MV_PERSONS_DATA_FOR_ABAC'; + + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/01_RIGD-2537_POSTING_ALLOWANCES.sql b/e-rights-common/src/main/database/release/archive/3.0.0/01_RIGD-2537_POSTING_ALLOWANCES.sql new file mode 100644 index 0000000..fac7598 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/01_RIGD-2537_POSTING_ALLOWANCES.sql @@ -0,0 +1,75 @@ +CREATE TABLE erights.posting_allowances ( + posting_allowance_id NUMBER, + per_id NUMBER, + exercise_year NUMBER(4, 0), + posting_allowance_number NUMBER, + posting_allowance_string_id VARCHAR2(100 CHAR), + posting_allowance_type VARCHAR2(20 CHAR), + posting_allowance_req_type VARCHAR2(20 CHAR), + parent_posting_allowance_id NUMBER, + comments VARCHAR2(4000 CHAR), + outgoing_trip_amount NUMBER, + outgoing_trip_amount_currency VARCHAR2(3 CHAR), + return_trip_amount NUMBER, + return_trip_amount_currency VARCHAR2(3 CHAR), + calc_total_amount NUMBER, + calc_total_amount_currency VARCHAR2(3 CHAR), + total_amount NUMBER, + total_amount_currency VARCHAR2(3 CHAR), + payment_period_year NUMBER(4, 0), + payment_period_month NUMBER(2, 0), + payment_reference VARCHAR2(200 CHAR), + payment_state VARCHAR2(50 BYTE), + assignment_city_code VARCHAR2(3 BYTE), + assignment_country_code VARCHAR2(3 BYTE), + assignment_city_name VARCHAR2(200 BYTE), + assignment_iata_code VARCHAR2(3 BYTE), + origin_city_code VARCHAR2(3 BYTE), + origin_country_code VARCHAR2(3 BYTE), + origin_city_name VARCHAR2(200 BYTE), + origin_iata_code VARCHAR2(3 BYTE), + recruitment_city_code VARCHAR2(3 BYTE), + recruitment_country_code VARCHAR2(3 BYTE), + recruitment_city_name VARCHAR2(200 BYTE), + recruitment_iata_code VARCHAR2(3 BYTE), + assignment_airport_name VARCHAR2(255 BYTE), + origin_airport_name VARCHAR2(255 BYTE), + sm_id RAW(16), + state VARCHAR2(16 CHAR), + posting_allowance_discriminatory_type VARCHAR2(20), + created_by NUMBER + NOT NULL ENABLE, + created_at TIMESTAMP(6) + NOT NULL ENABLE, + updated_by NUMBER + NOT NULL ENABLE, + updated_at TIMESTAMP(6) + NOT NULL ENABLE, + CONSTRAINT pk_posting_allowances PRIMARY KEY ( posting_allowance_id ) +); + +ALTER TABLE erights.posting_allowances + ADD CONSTRAINT fk_posting_allowances_parent_posting_allowance FOREIGN KEY ( parent_posting_allowance_id ) + REFERENCES posting_allowances ( posting_allowance_id ); + +COMMENT ON COLUMN posting_allowances.calc_total_amount IS + 'Calculated amount based on the allowance properties - it will be the total if the HQ do not edit the final amount'; + +COMMENT ON COLUMN posting_allowances.total_amount IS + 'This amount is the calculated amount by default, unless edited by the HQ; it is the final payment we will send'; + +COMMENT ON COLUMN posting_allowances.posting_allowance_number IS + 'Used as a reference to create posting_allowance_string_id'; + +COMMENT ON COLUMN posting_allowances.posting_allowance_discriminatory_type IS + 'Technical column required by hibernate to differentiate types'; + +CREATE INDEX ix_posting_allowances_per_id ON + posting_allowances ( + per_id + ); + +CREATE SEQUENCE seq_posting_allowances MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE NOKEEP NOSCALE +GLOBAL; + + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/02_RIGD-2537_POSTING_ALLOWANCE_PERSONS.sql b/e-rights-common/src/main/database/release/archive/3.0.0/02_RIGD-2537_POSTING_ALLOWANCE_PERSONS.sql new file mode 100644 index 0000000..80de16d --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/02_RIGD-2537_POSTING_ALLOWANCE_PERSONS.sql @@ -0,0 +1,49 @@ +CREATE TABLE erights.posting_allowance_persons ( + posting_allowance_person_id NUMBER, + posting_allowance_id NUMBER + NOT NULL ENABLE, + date_of_birth DATE, + route VARCHAR2(10 CHAR) DEFAULT 'OUTGOING' + CONSTRAINT ck_posting_allowance_persons_route CHECK ( route IN ( 'OUTGOING', 'RETURN' ) ), + per_id NUMBER, + rel_per_id NUMBER, + trp_cd NUMBER, + trp_code VARCHAR2(100 CHAR), + trip_amount NUMBER, + trip_amount_currency VARCHAR2(3 CHAR), + entitled_months NUMBER, + total_amount NUMBER, + total_amount_currency VARCHAR2(3 CHAR), + city_from VARCHAR2(3 BYTE), + country_from VARCHAR2(3 BYTE), + iata_code_from VARCHAR2(3 BYTE), + city_to VARCHAR2(3 BYTE), + country_to VARCHAR2(3 BYTE), + iata_code_to VARCHAR2(3 BYTE), + remarks VARCHAR2(3000 CHAR), + created_by NUMBER + NOT NULL ENABLE, + created_at TIMESTAMP(6) + NOT NULL ENABLE, + updated_by NUMBER + NOT NULL ENABLE, + updated_at TIMESTAMP(6) + NOT NULL ENABLE, + CONSTRAINT pk_posting_allowance_persons PRIMARY KEY ( posting_allowance_person_id ), + CONSTRAINT fk_posting_allowance_persons_posting_allowances FOREIGN KEY ( posting_allowance_id ) + REFERENCES erights.posting_allowances ( posting_allowance_id ) + ENABLE +); + +CREATE INDEX ix_posting_allowance_persons_per_id ON + posting_allowance_persons ( + per_id + ); + +CREATE INDEX ix_posting_allowance_persons_posting_allowance_id ON + posting_allowance_persons ( + posting_allowance_id + ); + +CREATE SEQUENCE seq_posting_allowance_persons MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE NOKEEP NOSCALE +GLOBAL; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/03_RIGD-2537_AUD_POSTING_ALLOWANCES.sql b/e-rights-common/src/main/database/release/archive/3.0.0/03_RIGD-2537_AUD_POSTING_ALLOWANCES.sql new file mode 100644 index 0000000..64ba2f1 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/03_RIGD-2537_AUD_POSTING_ALLOWANCES.sql @@ -0,0 +1,49 @@ +CREATE TABLE erights.aud_posting_allowances ( + rev NUMBER(10, 0) + NOT NULL ENABLE, + revtype NUMBER(3, 0), + posting_allowance_id NUMBER, + per_id NUMBER, + exercise_year NUMBER(4, 0), + posting_allowance_number NUMBER, + posting_allowance_string_id VARCHAR2(100 CHAR), + posting_allowance_type VARCHAR2(20 CHAR), + posting_allowance_req_type VARCHAR2(20 CHAR), + parent_posting_allowance_id NUMBER, + comments VARCHAR2(4000 CHAR), + outgoing_trip_amount NUMBER, + outgoing_trip_amount_currency VARCHAR2(3 CHAR), + return_trip_amount NUMBER, + return_trip_amount_currency VARCHAR2(3 CHAR), + calc_total_amount NUMBER, + calc_total_amount_currency VARCHAR2(3 CHAR), + total_amount NUMBER, + total_amount_currency VARCHAR2(3 CHAR), + payment_period_year NUMBER(4, 0), + payment_period_month NUMBER(2, 0), + payment_reference VARCHAR2(200 CHAR), + payment_state VARCHAR2(50 BYTE), + assignment_city_code VARCHAR2(3 BYTE), + assignment_country_code VARCHAR2(3 BYTE), + assignment_city_name VARCHAR2(200 BYTE), + assignment_iata_code VARCHAR2(3 BYTE), + origin_city_code VARCHAR2(3 BYTE), + origin_country_code VARCHAR2(3 BYTE), + origin_city_name VARCHAR2(200 BYTE), + origin_iata_code VARCHAR2(3 BYTE), + recruitment_city_code VARCHAR2(3 BYTE), + recruitment_country_code VARCHAR2(3 BYTE), + recruitment_city_name VARCHAR2(200 BYTE), + recruitment_iata_code VARCHAR2(3 BYTE), + sm_id RAW(16), + state VARCHAR2(16 CHAR), + posting_allowance_discriminatory_type VARCHAR2(20), + created_by NUMBER, + created_at TIMESTAMP(6), + updated_by NUMBER, + updated_at TIMESTAMP(6), + assignment_airport_name VARCHAR2(255 BYTE), + origin_airport_name VARCHAR2(255 BYTE) +); + + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/04_RIGD-2537_AUD_POSTING_ALLOWANCE_PERSONS.sql b/e-rights-common/src/main/database/release/archive/3.0.0/04_RIGD-2537_AUD_POSTING_ALLOWANCE_PERSONS.sql new file mode 100644 index 0000000..e8c7020 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/04_RIGD-2537_AUD_POSTING_ALLOWANCE_PERSONS.sql @@ -0,0 +1,29 @@ +CREATE TABLE erights.aud_posting_allowance_persons ( + rev NUMBER(10, 0) + NOT NULL ENABLE, + revtype NUMBER(3, 0), + posting_allowance_person_id NUMBER, + posting_allowance_id NUMBER, + date_of_birth DATE, + route VARCHAR2(10 CHAR), + per_id NUMBER, + rel_per_id NUMBER, + trp_cd NUMBER, + trp_code VARCHAR2(100 CHAR), + trip_amount NUMBER, + trip_amount_currency VARCHAR2(3 CHAR), + entitled_months NUMBER, + total_amount NUMBER, + total_amount_currency VARCHAR2(3 CHAR), + city_from VARCHAR2(3 BYTE), + country_from VARCHAR2(3 BYTE), + iata_code_from VARCHAR2(3 BYTE), + city_to VARCHAR2(3 BYTE), + country_to VARCHAR2(3 BYTE), + iata_code_to VARCHAR2(3 BYTE), + remarks VARCHAR2(3000 CHAR), + created_by NUMBER, + created_at TIMESTAMP(6), + updated_by NUMBER, + updated_at TIMESTAMP(6) +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/05_RIGD-2537_POSTING_ALLOWANCE_DEFAULT.sql b/e-rights-common/src/main/database/release/archive/3.0.0/05_RIGD-2537_POSTING_ALLOWANCE_DEFAULT.sql new file mode 100644 index 0000000..ca5b9f3 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/05_RIGD-2537_POSTING_ALLOWANCE_DEFAULT.sql @@ -0,0 +1,23 @@ +CREATE TABLE erights.posting_allowance_default ( + posting_allowance_default_id NUMBER, + posting_allowance_type VARCHAR2(20 CHAR), + posting_allowance_req_type VARCHAR2(20 CHAR), + city_code_to VARCHAR2(3 CHAR), + city_code_from VARCHAR2(3 CHAR), + country_code_to VARCHAR2(3 CHAR), + country_code_from VARCHAR2(3 CHAR), + amount NUMBER, + currency VARCHAR2(3 CHAR), + exercise_year NUMBER(4, 0) + NOT NULL ENABLE, + latest CHAR(1 CHAR) DEFAULT 'Y', + source_data VARCHAR2(20 CHAR) DEFAULT 'HR', + created_at DATE NOT NULL, + created_by NUMBER NOT NULL, + updated_by NUMBER NOT NULL, + updated_at DATE NOT NULL, + CONSTRAINT pk_posting_allowance_default PRIMARY KEY ( posting_allowance_default_id ) +); + +CREATE SEQUENCE seq_posting_allowance_default MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE NOKEEP NOSCALE +GLOBAL; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/06_RIGD-2570_POSTING_ALLOWANCE_EMAIL_NOTIFICATIONS.sql b/e-rights-common/src/main/database/release/archive/3.0.0/06_RIGD-2570_POSTING_ALLOWANCE_EMAIL_NOTIFICATIONS.sql new file mode 100644 index 0000000..3f0e915 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/06_RIGD-2570_POSTING_ALLOWANCE_EMAIL_NOTIFICATIONS.sql @@ -0,0 +1,7 @@ +delete from NOTIFICATION_TEMPLATES where NOTIFICATION_TEMPLATE_ID = 38; +INSERT INTO "ERIGHTS"."NOTIFICATION_TEMPLATES" (NOTIFICATION_TEMPLATE_ID, NOTIFICATION_TEMPLATE_TYPE, MESSAGE_SUBJECT, MESSAGE_BODY, MESSAGE_SIGNATURE, NOTIFICATION_TEMPLATE_CODE, DEFAULT_TEMPLATE) +VALUES ('38', 'POSTING_ALLOWANCE', 'Your request ${POSTING_ALLOWANCE_STRING_ID} was approved', + 'Dear ${FIRST_NAME} ${LAST_NAME}, +

    Your request ${POSTING_ALLOWANCE_STRING_ID} was approved. It will soon be processed for payment. You will be notified accordingly. +

    Please consult the details of your request in e-Rights.', + '${POSTING_ALLOWANCE_SIGNATURE}', 'APPROVED_REQUEST', 'Y'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/07_RIGD-2571_MV_JOBS.sql b/e-rights-common/src/main/database/release/archive/3.0.0/07_RIGD-2571_MV_JOBS.sql new file mode 100644 index 0000000..0dca67c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/07_RIGD-2571_MV_JOBS.sql @@ -0,0 +1,307 @@ +CREATE MATERIALIZED VIEW erights.mv_jobs + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND + USING DEFAULT LOCAL ROLLBACK SEGMENT +AS + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + enth.main_org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN ( + SELECT DISTINCT + entities.city_code, + entities.country_id, + FIRST_VALUE(delstatus.severity_level) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) severity_level, + FIRST_VALUE(delstatus.evacuation_level_code_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code_id, + FIRST_VALUE(delstatus.alert_status_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) alert_status_id, + FIRST_VALUE(delstatus.evacuation_level_code) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code, + FIRST_VALUE(delstatus.family_posting_type_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type_id, + FIRST_VALUE(delstatus.family_posting_type) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type + FROM + mv_delegation_status delstatus, + mv_entities entities + WHERE + delstatus.org_id = entities.org_id + ) delstat ON ( jobh.location_country_code = delstat.country_id + AND jobh.location_city_code = delstat.city_code ) + LEFT JOIN mv_head_of_delegations hod ON asgh.job_id = hod.job_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_eeas jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist enth2 + WHERE + enth.org_id = enth2.org_id + ) + UNION ALL + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + enth.main_org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN ( + SELECT DISTINCT + entities.city_code, + entities.country_id, + FIRST_VALUE(delstatus.severity_level) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) severity_level, + FIRST_VALUE(delstatus.evacuation_level_code_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code_id, + FIRST_VALUE(delstatus.alert_status_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) alert_status_id, + FIRST_VALUE(delstatus.evacuation_level_code) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code, + FIRST_VALUE(delstatus.family_posting_type_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type_id, + FIRST_VALUE(delstatus.family_posting_type) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type + FROM + mv_delegation_status delstatus, + mv_entities entities + WHERE + delstatus.org_id = entities.org_id + ) delstat ON ( jobh.location_country_code = delstat.country_id + AND jobh.location_city_code = delstat.city_code ) + LEFT JOIN mv_head_of_delegations hod ON asgh.job_id = hod.job_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + NOT EXISTS ( + SELECT + 1 + FROM + mv_jobs_hist_eeas jobhe + WHERE + jobh.job_id = jobhe.job_id + ) + AND jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_com jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist enth2 + WHERE + enth.org_id = enth2.org_id + ); + +CREATE INDEX ix_mv_jobs_job_id ON + mv_jobs ( + job_id + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/08_RIGD-2571_MV_JOBS_Register.sql b/e-rights-common/src/main/database/release/archive/3.0.0/08_RIGD-2571_MV_JOBS_Register.sql new file mode 100644 index 0000000..0d2b84f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/08_RIGD-2571_MV_JOBS_Register.sql @@ -0,0 +1,124 @@ +REM INSERTING into ERIGHTS.T_REFRESH_OBJECTS +SET DEFINE OFF; + +INSERT INTO erights.t_refresh_objects ( + id, + app_object_name, + priority, + is_refreshed, + status, + refresh_date, + system +) VALUES ( + 41, + 'MV_JOBS', + 1000, + 'N', + 'KO', + NULL, + 'EASREFN' +); + +REM INSERTING into ERIGHTS.T_APP_EASREFN_OBJECTS +SET DEFINE OFF; + +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 41, + 'MV_JOBS_HIST_EEAS', + 1 +); +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 41, + 'MV_ENTITIES_HIST', + 2 +); +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 41, + 'MV_ASSIGNMENTS_HIST_EEAS', + 3 +); +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 41, + 'MV_DELEGATION_STATUS', + 4 +); +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 41, + 'MV_ENTITIES', + 5 +); +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 41, + 'MV_HEAD_OF_DELEGATIONS', + 6 +); +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 41, + 'MV_HRPORTAL_JOBS_DETAILS', + 7 +); +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 41, + 'MV_INSTITUTIONS', + 8 +); +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 41, + 'MV_JOBS_HIST_COM', + 9 +); +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 41, + 'MV_ENTITIES_HIST_COM', + 10 +); +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 41, + 'MV_ASSIGNMENTS_HIST_COM', + 11 +); +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/09_RIGD-2565_Mviews_Index.sql b/e-rights-common/src/main/database/release/archive/3.0.0/09_RIGD-2565_Mviews_Index.sql new file mode 100644 index 0000000..3cb6085 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/09_RIGD-2565_Mviews_Index.sql @@ -0,0 +1,6 @@ +CREATE INDEX ix_mv_person_relatives_rights ON + mv_person_relatives_rights ( + per_id_attrib, + rgt_id + ) + COMPUTE STATISTICS; diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/09_RIGD-2571_V_JOBS.sql b/e-rights-common/src/main/database/release/archive/3.0.0/09_RIGD-2571_V_JOBS.sql new file mode 100644 index 0000000..e63669b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/09_RIGD-2571_V_JOBS.sql @@ -0,0 +1,71 @@ +CREATE OR REPLACE VIEW erights.v_jobs ( + job_id, + job_moment, + job_type, + personnel_type_id, + personnel_type_desc, + budgetary_line, + job_city_code, + job_city_name, + job_country_code, + job_country_name, + organization_country, + organization_city, + organization_name, + org_id, + assign_start_date_to, + assign_end_date_to, + per_id, + severity_level, + evacuation_level_code_id, + alert_status_id, + evacuation_level_code, + organization_country_code, + organization_city_code, + family_posting_type_id, + family_posting_type, + hod, + family_posting_type_cat, + budget_line, + delegation_org_id, + institution_code, + institution_name, + function_code, + function_desc +) AS + SELECT + job_id, + job_moment, + job_type, + personnel_type_id, + personnel_type_desc, + budgetary_line, + job_city_code, + job_city_name, + job_country_code, + job_country_name, + organization_country, + organization_city, + organization_name, + org_id, + assign_start_date_to, + assign_end_date_to, + per_id, + severity_level, + evacuation_level_code_id, + alert_status_id, + evacuation_level_code, + organization_country_code, + organization_city_code, + family_posting_type_id, + family_posting_type, + hod, + family_posting_type_cat, + budget_line, + delegation_org_id, + institution_code, + institution_name, + function_code, + function_desc + FROM + mv_jobs; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/100_RIGD-3124_V_FAMILY_MEMBERS.sql b/e-rights-common/src/main/database/release/archive/3.0.0/100_RIGD-3124_V_FAMILY_MEMBERS.sql new file mode 100644 index 0000000..0a24bf9 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/100_RIGD-3124_V_FAMILY_MEMBERS.sql @@ -0,0 +1,69 @@ +CREATE OR REPLACE VIEW "ERIGHTS"."V_FAMILY_MEMBERS" ( + "FAMILY_MEMBER_ID", + "PER_ID", + "SURNAME", + "DATE_OF_BIRTH", + "TRP_CODE", + "TRP_CD", + "REL_PER_ID", + "REL_SURNAME", + "REL_FIRST_NAME", + "REL_DATE_OF_BIRTH", + "CHILD_ALLOWANCE_GRANTED", + "MORE_THAN_2_YEARS_OLD", + "HOUSEHOLD_ALLOWANCE_GRANTED", + "RELATIVE_WORK_IN_DELEGATION", + "RELATIVE_WORK_IN_HQ" +) AS + SELECT + m.family_member_id, + m.per_id, + m.surname, + m.date_of_birth, + m.trp_code, + m.trp_cd, + m.rel_per_id, + m.rel_surname, + m.rel_first_name, + m.rel_date_of_birth, + nvl2(r_chld_all.per_id_attrib, 'Y', 'N') child_allowance_granted, + CASE + WHEN ( EXTRACT(YEAR FROM sysdate) - EXTRACT(YEAR FROM m.rel_date_of_birth) ) >= 2 THEN + 'Y' + ELSE + 'N' + END more_than_2_years_old, + nvl2(r_houshd_all.per_id_attrib, 'Y', 'N') household_allowance_granted, + CASE + WHEN rel_work_del.delegation_name <> 'HQ' + AND rel_work_del.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END relative_work_in_delegation, + CASE + WHEN ( rel_work_del.delegation_name = 'HQ' + AND rel_work_del.per_id IS NOT NULL ) + OR rel_work_del_com.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END relative_work_in_hq + FROM + mv_family_members m + LEFT JOIN mv_person_relatives_rights r_chld_all ON ( m.per_id = r_chld_all.per_id_attrib + AND m.rel_per_id = r_chld_all.per_id_benef + AND r_chld_all.rgt_id = 1003 + AND r_chld_all.right_pct > 50 + AND trunc(sysdate) BETWEEN r_chld_all.date_from AND r_chld_all.date_to ) + LEFT JOIN mv_person_relatives_rights r_houshd_all ON ( m.per_id = r_houshd_all.per_id_attrib + AND m.per_id = r_houshd_all.per_id_benef + AND r_houshd_all.rgt_id = 1006 + AND trunc(sysdate) BETWEEN r_houshd_all.date_from AND r_houshd_all.date_to + ) + LEFT JOIN mv_persons_eeas rel_work_del ON ( m.rel_per_id = rel_work_del.per_id + AND rel_work_del.lst_cd IN ( 'CA', 'CB', 'FMD', 'FP', 'FS', + 'TC', 'TMD', 'TP', 'TT' ) ) + LEFT JOIN mv_persons_com rel_work_del_com ON ( m.rel_per_id = rel_work_del_com.per_id + AND rel_work_del_com.lst_cd IN ( 'CA', 'CB', 'FMD', 'FP', 'FS', + 'TC', 'TMD', 'TP', 'TT' ) ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/10_RIGD-2565_posting_allowances_alter.sql b/e-rights-common/src/main/database/release/archive/3.0.0/10_RIGD-2565_posting_allowances_alter.sql new file mode 100644 index 0000000..4213188 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/10_RIGD-2565_posting_allowances_alter.sql @@ -0,0 +1,3 @@ +ALTER TABLE posting_allowances ADD delegation_org_id NUMBER(10); + +ALTER TABLE aud_posting_allowances ADD delegation_org_id NUMBER(10); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/11_RIGD-2565_v_new_travel_posting_allowances.sql b/e-rights-common/src/main/database/release/archive/3.0.0/11_RIGD-2565_v_new_travel_posting_allowances.sql new file mode 100644 index 0000000..a87d6c9 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/11_RIGD-2565_v_new_travel_posting_allowances.sql @@ -0,0 +1,117 @@ +CREATE OR REPLACE VIEW erights.v_new_travel_posting_allowances ( + job_id, + per_id, + job_type, + assign_start_date_to, + assign_end_date_to, + no_sysper, + title, + surname, + genre, + userid, + moniker, + domain, + display_name, + jcx_id, + assign_start_date, + assign_end_date, + lst_cd, + lst_code, + lst_beg_date, + lst_ass_date, + lst_end_date, + cgr_cd, + org_id, + main_org_id, + org_name, + org_cd, + org_desc, + tor_id, + typeofentity_name, + del_id, + delegation_name, + job_title, + job_name, + job_name_directory, + job_purpose, + responsible, + head_of_entity, + job_city_code, + job_city_name, + job_country_code, + job_country_name, + iata_code, + delegation_org_id +) AS + SELECT + p.job_id, + p.per_id, + j.job_type, + j.assign_start_date_to, + j.assign_end_date_to, + p.no_sysper, + p.title, + p.surname, + p.genre, + p.userid, + p.moniker, + p.domain, + p.display_name, + p.jcx_id, + p.assign_start_date, + p.assign_end_date, + p.lst_cd, + p.lst_code, + p.lst_beg_date, + p.lst_ass_date, + p.lst_end_date, + p.cgr_cd, + p.org_id, + p.main_org_id, + p.org_name, + p.org_cd, + p.org_desc, + p.tor_id, + p.typeofentity_name, + p.del_id, + p.delegation_name, + p.job_title, + p.job_name, + p.job_name_directory, + p.job_purpose, + p.responsible, + p.head_of_entity, + j.job_city_code, + j.job_city_name, + j.job_country_code, + j.job_country_name, + ac.iata_code, + j.delegation_org_id + FROM + mv_persons_eeas p + INNER JOIN v_jobs j ON ( p.job_id = j.job_id ) + INNER JOIN airport_cities ac ON ( ac.city_code = j.job_city_code + AND ac.country_code = j.job_country_code ) + WHERE + p.delegation_name <> 'HQ' + AND p.lst_cd IN ( 'CA', 'FP' ) + AND NOT EXISTS ( -- remove the create allowances, we need to filter by the travel,storage acomodation + SELECT + 1 + FROM + posting_allowances aa + WHERE + aa.per_id = p.per_id + AND aa.delegation_org_id = j.delegation_org_id + ) + AND EXISTS ( + SELECT + 1 + FROM + mv_person_relatives_rights r + WHERE + r.per_id_attrib = p.per_id + AND r.rgt_id = 3002 -- Expatriation allowance (IR) + AND r.rtt_id_type = 410 -- [IR = IDE] Expatriation Allowance : 16% + AND trunc(sysdate) BETWEEN r.date_from AND r.date_to + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/12_RIGD-2574_v_posting_allowances.sql b/e-rights-common/src/main/database/release/archive/3.0.0/12_RIGD-2574_v_posting_allowances.sql new file mode 100644 index 0000000..8187659 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/12_RIGD-2574_v_posting_allowances.sql @@ -0,0 +1,125 @@ + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_POSTING_ALLOWANCES" AS + SELECT + a.posting_allowance_id posting_allowance_id, + a.per_id, + a.exercise_year, + a.posting_allowance_number posting_allowance_number, + a.posting_allowance_string_id posting_allowance_string_id, + a.posting_allowance_type posting_allowance_type, + a.posting_allowance_req_type posting_allowance_req_type, + a.parent_posting_allowance_id parent_posting_allowance_id, + a.comments, + a.outgoing_trip_amount, + a.outgoing_trip_amount_currency, + a.return_trip_amount, + a.return_trip_amount_currency, + a.calc_total_amount, + a.calc_total_amount_currency, + a.total_amount, + a.total_amount_currency, + a.payment_period_year, + a.payment_period_month, + a.payment_reference, + a.payment_state, + a.assignment_city_code, + a.assignment_country_code, + a.assignment_city_name assignment_city_name, + c_assign.name_en assignment_country_name, + a.assignment_iata_code, + a.origin_city_code, + a.origin_country_code, + a.origin_city_name origin_city_name, + c_origin.name_en origin_country_name, + a.origin_iata_code, + a.recruitment_city_code, + a.recruitment_country_code, + a.recruitment_city_name recruitment_city_name, + c_recruit.name_en recruitment_country_name, + a.recruitment_iata_code, + a.sm_id, + a.state, + a.posting_allowance_discriminatory_type posting_allowance_discriminatory_type, + a.created_by, + a.created_at, + a.updated_by, + a.updated_at, + a.delegation_org_id, + a.spouse_per_id, + a.double_posting + FROM + posting_allowances a + LEFT JOIN mv_countries c_assign ON ( a.assignment_country_code = c_assign.country_code ) + LEFT JOIN mv_countries c_origin ON ( a.origin_country_code = c_origin.country_code ) + LEFT JOIN mv_countries c_recruit ON ( a.recruitment_country_code = c_recruit.country_code ); + + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_REPORT_POSTING_ALLOWANCES" AS + SELECT + a.posting_allowance_id posting_allowance_id, + a.per_id, + a.exercise_year, + a.posting_allowance_number posting_allowance_number, + a.posting_allowance_string_id posting_allowance_string_id, + a.posting_allowance_type posting_allowance_type, + a.posting_allowance_req_type posting_allowance_req_type, + a.parent_posting_allowance_id parent_posting_allowance_id, + a.comments, + a.outgoing_trip_amount, + a.outgoing_trip_amount_currency, + a.return_trip_amount, + a.return_trip_amount_currency, + a.calc_total_amount, + a.calc_total_amount_currency, + a.total_amount, + a.total_amount_currency, + a.payment_period_year, + a.payment_period_month, + TO_CHAR( a.payment_period_month, '00') || '/' || TO_CHAR( a.payment_period_year, '00') payment_period, + a.payment_reference, + a.payment_state, + a.assignment_city_code, + a.assignment_country_code, + a.assignment_city_name assignment_city_name, + c_assign.name_en assignment_country_name, + + c_assign.name_en || ', ' || assignment_city_name assignment_place, + + + + a.assignment_iata_code, + a.origin_city_code, + a.origin_country_code, + a.origin_city_name origin_city_name, + c_origin.name_en origin_country_name, + a.origin_iata_code, + a.origin_period_month, + a.origin_period_year, + TO_CHAR( a.origin_period_month, '00') || '/' || TO_CHAR( a.origin_period_year, '00') origin_period, + a.recruitment_city_code, + a.recruitment_country_code, + a.recruitment_city_name recruitment_city_name, + c_recruit.name_en recruitment_country_name, + a.recruitment_iata_code, + a.sm_id, + a.state, + a.posting_allowance_discriminatory_type posting_allowance_discriminatory_type, + a.created_by, + a.created_at, + a.updated_by, + a.updated_at, + a.delegation_org_id, + p.title, + p.first_name, + p.last_name, + a.assignment_start_date, + a.spouse_per_id, + a.double_posting + FROM + posting_allowances a + INNER JOIN v_people p ON p.per_id = a.per_id + LEFT JOIN mv_countries c_assign ON ( a.assignment_country_code = c_assign.country_code ) + LEFT JOIN mv_countries c_origin ON ( a.origin_country_code = c_origin.country_code ) + LEFT JOIN mv_countries c_recruit ON ( a.recruitment_country_code = c_recruit.country_code ); + + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/13.0_RIGD-2580_ADD_IATA_CODE_TO_POSTING_DEFAULT.sql b/e-rights-common/src/main/database/release/archive/3.0.0/13.0_RIGD-2580_ADD_IATA_CODE_TO_POSTING_DEFAULT.sql new file mode 100644 index 0000000..9a7b1a6 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/13.0_RIGD-2580_ADD_IATA_CODE_TO_POSTING_DEFAULT.sql @@ -0,0 +1,7 @@ +ALTER TABLE POSTING_ALLOWANCE_DEFAULT + ADD (IATA_CODE_FROM VARCHAR2(3) ); + +ALTER TABLE POSTING_ALLOWANCE_DEFAULT + ADD (IATA_CODE_TO VARCHAR2(3) ); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/13.1_RIGD-2588_ADD_COUNTRY_DATA_TO_POSTING.sql b/e-rights-common/src/main/database/release/archive/3.0.0/13.1_RIGD-2588_ADD_COUNTRY_DATA_TO_POSTING.sql new file mode 100644 index 0000000..2e2ddbd --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/13.1_RIGD-2588_ADD_COUNTRY_DATA_TO_POSTING.sql @@ -0,0 +1,7 @@ +ALTER TABLE POSTING_ALLOWANCES + ADD (ORIGIN_COUNTRY_NAME VARCHAR2(200) ); + +ALTER TABLE POSTING_ALLOWANCES + ADD (ASSIGNMENT_COUNTRY_NAME VARCHAR2(200) ); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/14_RIGD-2587 origin period.sql b/e-rights-common/src/main/database/release/archive/3.0.0/14_RIGD-2587 origin period.sql new file mode 100644 index 0000000..ad72620 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/14_RIGD-2587 origin period.sql @@ -0,0 +1,30 @@ +ALTER TABLE POSTING_ALLOWANCES + ADD (ORIGIN_PERIOD_YEAR NUMBER(4) ); + +ALTER TABLE POSTING_ALLOWANCES + ADD (ORIGIN_PERIOD_MONTH NUMBER(2) ); + +ALTER TABLE AUD_POSTING_ALLOWANCES + ADD (ORIGIN_PERIOD_YEAR NUMBER(4) ); + +ALTER TABLE AUD_POSTING_ALLOWANCES + ADD (ORIGIN_PERIOD_MONTH NUMBER(2) ); + + + +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('64', 'POSTING_ALLOWANCES', 'ORIGIN_DEFAULT_MONTH', '06'); +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('65', 'POSTING_ALLOWANCES', 'PAYMENT_DEFAULT_MONTH', '09'); +commit; + +ALTER TABLE POSTING_ALLOWANCES + ADD (ORIGIN_COUNTRY_NAME VARCHAR2(200) ); + +ALTER TABLE POSTING_ALLOWANCES + ADD (ASSIGNMENT_COUNTRY_NAME VARCHAR2(200) ); + +ALTER TABLE AUD_POSTING_ALLOWANCES + ADD (ORIGIN_COUNTRY_NAME VARCHAR2(200) ); + +ALTER TABLE AUD_POSTING_ALLOWANCES + ADD (ASSIGNMENT_COUNTRY_NAME VARCHAR2(200) ); + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/16_RIGD-2584_v_requests_milestones.sql b/e-rights-common/src/main/database/release/archive/3.0.0/16_RIGD-2584_v_requests_milestones.sql new file mode 100644 index 0000000..a41c7ca --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/16_RIGD-2584_v_requests_milestones.sql @@ -0,0 +1,58 @@ +CREATE OR REPLACE VIEW erights.v_requests_milestones ( + request_id, + request_string_id, + state, + previous_state_occurence, + current_state_occurence, + time_consumed +) AS + SELECT + request_id, + request_string_id, + state, + previous_state_occurence, + current_state_occurence, + trunc(current_state_occurence - previous_state_occurence) time_consumed + FROM + ( + SELECT + request_id, + request_string_id, + state state, + saved_at current_state_occurence, + LAG(saved_at, 1) + OVER(PARTITION BY request_id + ORDER BY + saved_at + ) previous_state_occurence + FROM + ( + SELECT + * + FROM + ( + SELECT + r.request_id, + r.request_string_id, + cs.arrival_state state, + cs.saved_at + FROM + requests r + INNER JOIN ank_sm_current_states cs ON ( r.sm_id = cs.id ) + UNION ALL + SELECT + r.request_id, + r.request_string_id, + ps.arrival_state state, + ps.saved_at + FROM + requests r + INNER JOIN ank_sm_previous_states ps ON ( r.sm_id = ps.current_state_id ) + ) + ORDER BY + request_id, + saved_at + ) + ); + +GRANT SELECT ON erights.v_requests_milestones TO erights_ro; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/17_RIGD-2592-add name and surname to allowance person.sql b/e-rights-common/src/main/database/release/archive/3.0.0/17_RIGD-2592-add name and surname to allowance person.sql new file mode 100644 index 0000000..747cdf9 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/17_RIGD-2592-add name and surname to allowance person.sql @@ -0,0 +1,12 @@ +ALTER TABLE POSTING_ALLOWANCE_PERSONS + ADD (SURNAME VARCHAR2(255) ); + +ALTER TABLE POSTING_ALLOWANCE_PERSONS + ADD (FIRST_NAME VARCHAR2(255) ); + + +ALTER TABLE AUD_POSTING_ALLOWANCE_PERSONS + ADD (SURNAME VARCHAR2(255) ); + +ALTER TABLE AUD_POSTING_ALLOWANCE_PERSONS + ADD (FIRST_NAME VARCHAR2(255) ); diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/18_RIGD-2595-modify comments constraint.sql b/e-rights-common/src/main/database/release/archive/3.0.0/18_RIGD-2595-modify comments constraint.sql new file mode 100644 index 0000000..143be4e --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/18_RIGD-2595-modify comments constraint.sql @@ -0,0 +1,5 @@ +ALTER TABLE comments + DROP CONSTRAINT ck_comments_type; + +ALTER TABLE comments + ADD CONSTRAINT ck_comments_type CHECK ( comment_type IN ( 'REQUEST', 'MOVEMENT_FILE', 'POSTING_ALLOWANCE') ) VALIDATE; diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/19_RIGD-2583_v_family_members.sql b/e-rights-common/src/main/database/release/archive/3.0.0/19_RIGD-2583_v_family_members.sql new file mode 100644 index 0000000..4dd05b1 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/19_RIGD-2583_v_family_members.sql @@ -0,0 +1,49 @@ +CREATE OR REPLACE VIEW erights.v_family_members ( + family_member_id, + per_id, + surname, + date_of_birth, + trp_code, + trp_cd, + rel_per_id, + rel_surname, + rel_first_name, + rel_date_of_birth, + child_allowance_granted, + more_than_2_years_old, + household_allowance_granted, + relative_work_in_delegation +) AS + SELECT + m.family_member_id, + m.per_id, + m.surname, + m.date_of_birth, + m.trp_code, + m.trp_cd, + m.rel_per_id, + m.rel_surname, + m.rel_first_name, + m.rel_date_of_birth, + nvl2(r_chld_all.per_id_attrib, 'Y', 'N') child_allowance_granted, + CASE + WHEN trunc(months_between(sysdate, m.rel_date_of_birth) / 12) > 2 THEN + 'Y' + ELSE + 'N' + END more_than_2_years_old, + nvl2(r_houshd_all.per_id_attrib, 'Y', 'N') household_allowance_granted, + nvl2(rel_work_del.per_id, 'Y', 'N') relative_work_in_delegation + FROM + mv_family_members m + LEFT JOIN mv_person_relatives_rights r_chld_all ON ( m.per_id = r_chld_all.per_id_attrib + AND m.rel_per_id = r_chld_all.per_id_benef + AND r_chld_all.rgt_id = 1003 + AND r_chld_all.right_pct > 50 + AND trunc(sysdate) BETWEEN r_chld_all.date_from AND r_chld_all.date_to ) + LEFT JOIN mv_person_relatives_rights r_houshd_all ON ( m.per_id = r_houshd_all.per_id_attrib + AND m.per_id = r_houshd_all.per_id_benef + AND r_houshd_all.rgt_id = 1006 + AND trunc(sysdate) BETWEEN r_houshd_all.date_from AND r_houshd_all.date_to ) + LEFT JOIN mv_persons_eeas rel_work_del ON ( m.rel_per_id = rel_work_del.per_id + AND rel_work_del.del_id IS NOT NULL ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/20.0_RIGD-2626-add working_in_delegation to allowance person.sql b/e-rights-common/src/main/database/release/archive/3.0.0/20.0_RIGD-2626-add working_in_delegation to allowance person.sql new file mode 100644 index 0000000..f20ea81 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/20.0_RIGD-2626-add working_in_delegation to allowance person.sql @@ -0,0 +1,5 @@ +ALTER TABLE POSTING_ALLOWANCE_PERSONS + ADD (WORK_IN_DELEGATION CHAR(1) DEFAULT 'N'); + +ALTER TABLE AUD_POSTING_ALLOWANCE_PERSONS + ADD (WORK_IN_DELEGATION CHAR(1) DEFAULT 'N'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/20.1_RIGD-2657-add working_in_hq to allowance person.sql b/e-rights-common/src/main/database/release/archive/3.0.0/20.1_RIGD-2657-add working_in_hq to allowance person.sql new file mode 100644 index 0000000..d3dc21d --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/20.1_RIGD-2657-add working_in_hq to allowance person.sql @@ -0,0 +1,5 @@ +ALTER TABLE POSTING_ALLOWANCE_PERSONS + ADD (WORK_IN_HQ VARCHAR2(1) DEFAULT 'N'); + +ALTER TABLE AUD_POSTING_ALLOWANCE_PERSONS + ADD (WORK_IN_HQ VARCHAR2(1) DEFAULT 'N'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/21_RIGD-2597 assigment date in report.sql b/e-rights-common/src/main/database/release/archive/3.0.0/21_RIGD-2597 assigment date in report.sql new file mode 100644 index 0000000..321b9dd --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/21_RIGD-2597 assigment date in report.sql @@ -0,0 +1,6 @@ +ALTER TABLE POSTING_ALLOWANCES + ADD (ASSIGNMENT_START_DATE DATE ); + + +ALTER TABLE AUD_POSTING_ALLOWANCES + ADD (ASSIGNMENT_START_DATE DATE ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/22_RIGD-2662_v_current_exercise_new_travel_allowances.sql b/e-rights-common/src/main/database/release/archive/3.0.0/22_RIGD-2662_v_current_exercise_new_travel_allowances.sql new file mode 100644 index 0000000..8df14c9 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/22_RIGD-2662_v_current_exercise_new_travel_allowances.sql @@ -0,0 +1,87 @@ + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES" ("SOJ_ID", "JOB_ID", "PER_ID", "JOB_TYPE", "ASSIGN_START_DATE_TO", "ASSIGN_END_DATE_TO", "NO_SYSPER", "TITLE", "SURNAME", "GENRE", "USERID", "MONIKER", "DOMAIN", "DISPLAY_NAME", "JCX_ID", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "LST_CD", "LST_CODE", "LST_BEG_DATE", "LST_ASS_DATE", "LST_END_DATE", "CGR_CD", "ORG_ID", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "ORG_DESC", "TOR_ID", "TYPEOFENTITY_NAME", "DEL_ID", "DELEGATION_NAME", "RESPONSIBLE", "HEAD_OF_ENTITY", "JOB_CITY_CODE", "JOB_CITY_NAME", "JOB_COUNTRY_CODE", "JOB_COUNTRY_NAME", "IATA_CODE", "DELEGATION_ORG_ID") AS + SELECT + a.soj_id, + j.job_id, + p.per_id, + j.job_type, + a.start_date assign_start_date_to, + a.end_date assign_end_date_to, + p.no_sysper, + p.title, + p.surname, + p.genre, + p.userid, + p.moniker, + p.domain, + p.display_name, + j.jcx_id, + a.start_date assign_start_date, + a.end_date assign_end_date, + p.lst_cd, + p.lst_code, + p.lst_beg_date, + p.lst_ass_date, + p.lst_end_date, + p.cgr_cd, + e.org_id, + e.main_org_id, + e.org_name, + e.org_cd, + e.org_desc, + e.tor_id, + e.typeofentity_name, + e.del_id, + e.delegation_name, + j.responsible, + j.head_of_entity, + j.location_city_code job_city_code, + j.location_city_name job_city_name, + j.location_country_code job_country_code, + j.location_country_name job_country_name, + ac.iata_code, + e.main_org_id delegation_org_id + FROM + mv_persons_eeas p + INNER JOIN mv_assignments_hist_eeas a ON ( p.per_id = a.per_id ) + INNER JOIN mv_jobs_hist_eeas j ON ( a.job_id = j.job_id + AND a.jcx_id = j.jcx_id ) + INNER JOIN mv_entities e ON ( j.org_id = e.org_id ) + INNER JOIN airport_cities ac ON ( ac.city_code = j.location_city_code + AND ac.country_code = j.location_country_code ) + WHERE + EXISTS ( + SELECT + 1 + FROM + mv_entities e2 + WHERE + e2.is_delegation = 'Y' + AND e2.org_id = e.main_org_id + ) + AND p.lst_cd IN ( 'CA', 'FP' ) + AND a.start_date <= to_date('31-DEC-' || EXTRACT(YEAR FROM sysdate), 'DD-MON-YYYY') + AND a.end_date >= trunc(sysdate, 'YYYY') + AND NOT EXISTS ( -- remove the create allowances, we need to filter by the travel,storage acomodation + SELECT + 1 + FROM + posting_allowances aa + WHERE + aa.per_id = p.per_id + AND aa.delegation_org_id = e.main_org_id + AND aa.EXERCISE_YEAR = EXTRACT(YEAR FROM sysdate) + ) + AND EXISTS ( + SELECT + 1 + FROM + mv_person_relatives_rights r + WHERE + r.per_id_attrib = p.per_id + AND r.rgt_id = 3002 -- Expatriation allowance (IR) + AND r.rtt_id_type = 410 -- [IR = IDE] Expatriation Allowance : 16% + AND r.date_from <= to_date('31-DEC-' || EXTRACT(YEAR FROM sysdate), 'DD-MON-YYYY') + AND r.date_to >= trunc(sysdate, 'YYYY') + ); + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/23.0_RIGD-2677_v_family_members.sql b/e-rights-common/src/main/database/release/archive/3.0.0/23.0_RIGD-2677_v_family_members.sql new file mode 100644 index 0000000..08e90b8 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/23.0_RIGD-2677_v_family_members.sql @@ -0,0 +1,64 @@ +CREATE OR REPLACE VIEW erights.v_family_members ( + family_member_id, + per_id, + surname, + date_of_birth, + trp_code, + trp_cd, + rel_per_id, + rel_surname, + rel_first_name, + rel_date_of_birth, + child_allowance_granted, + more_than_2_years_old, + household_allowance_granted, + relative_work_in_delegation, + relative_work_in_hq +) AS + SELECT + m.family_member_id, + m.per_id, + m.surname, + m.date_of_birth, + m.trp_code, + m.trp_cd, + m.rel_per_id, + m.rel_surname, + m.rel_first_name, + m.rel_date_of_birth, + nvl2(r_chld_all.per_id_attrib, 'Y', 'N') child_allowance_granted, + CASE + WHEN trunc(months_between(sysdate, m.rel_date_of_birth) / 12) >= 2 THEN + 'Y' + ELSE + 'N' + END more_than_2_years_old, + nvl2(r_houshd_all.per_id_attrib, 'Y', 'N') household_allowance_granted, + CASE + WHEN rel_work_del.delegation_name <> 'HQ' + AND rel_work_del.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END relative_work_in_delegation, + CASE + WHEN ( rel_work_del.delegation_name = 'HQ' + AND rel_work_del.per_id IS NOT NULL ) + OR rel_work_del_com.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END relative_work_in_hq + FROM + mv_family_members m + LEFT JOIN mv_person_relatives_rights r_chld_all ON ( m.per_id = r_chld_all.per_id_attrib + AND m.rel_per_id = r_chld_all.per_id_benef + AND r_chld_all.rgt_id = 1003 + AND r_chld_all.right_pct > 50 + AND trunc(sysdate) BETWEEN r_chld_all.date_from AND r_chld_all.date_to ) + LEFT JOIN mv_person_relatives_rights r_houshd_all ON ( m.per_id = r_houshd_all.per_id_attrib + AND m.per_id = r_houshd_all.per_id_benef + AND r_houshd_all.rgt_id = 1006 + AND trunc(sysdate) BETWEEN r_houshd_all.date_from AND r_houshd_all.date_to ) + LEFT JOIN mv_persons_eeas rel_work_del ON ( m.rel_per_id = rel_work_del.per_id ) + LEFT JOIN mv_persons_com rel_work_del_com ON ( m.rel_per_id = rel_work_del_com.per_id ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/23.1_RIGD-2683_add_soj_id_on_posting_allowances_table.sql b/e-rights-common/src/main/database/release/archive/3.0.0/23.1_RIGD-2683_add_soj_id_on_posting_allowances_table.sql new file mode 100644 index 0000000..38aa88e --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/23.1_RIGD-2683_add_soj_id_on_posting_allowances_table.sql @@ -0,0 +1,6 @@ +ALTER TABLE POSTING_ALLOWANCES + ADD (SOJ_ID NUMBER); + + +ALTER TABLE AUD_POSTING_ALLOWANCES + ADD (SOJ_ID NUMBER); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/23.2_RIGD-2680_add_unique_key_soj_id_and_per_id_on_posting_allowances_table.sql b/e-rights-common/src/main/database/release/archive/3.0.0/23.2_RIGD-2680_add_unique_key_soj_id_and_per_id_on_posting_allowances_table.sql new file mode 100644 index 0000000..281ae2b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/23.2_RIGD-2680_add_unique_key_soj_id_and_per_id_on_posting_allowances_table.sql @@ -0,0 +1,6 @@ +ALTER TABLE POSTING_ALLOWANCES + ADD CONSTRAINT UK_POSTING_ALLOWANCES_SOJ_PERID UNIQUE + ( + PER_ID, SOJ_ID + ) + ENABLE; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/25.0_RIGD-2704 double posting.sql b/e-rights-common/src/main/database/release/archive/3.0.0/25.0_RIGD-2704 double posting.sql new file mode 100644 index 0000000..663ad2f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/25.0_RIGD-2704 double posting.sql @@ -0,0 +1,25 @@ +ALTER TABLE POSTING_ALLOWANCES +ADD (SPOUSE_PER_ID NUMBER ); + +ALTER TABLE POSTING_ALLOWANCES +ADD (DOUBLE_POSTING CHAR(1) ); + + +ALTER TABLE AUD_POSTING_ALLOWANCES +ADD (SPOUSE_PER_ID NUMBER ); + +ALTER TABLE AUD_POSTING_ALLOWANCES +ADD (DOUBLE_POSTING CHAR(1) ); + + +ALTER TABLE POSTING_ALLOWANCES +MODIFY (CALC_TOTAL_AMOUNT NOT NULL); + +ALTER TABLE POSTING_ALLOWANCES +MODIFY (CALC_TOTAL_AMOUNT_CURRENCY NOT NULL); + +ALTER TABLE POSTING_ALLOWANCES +MODIFY (TOTAL_AMOUNT NOT NULL); + +ALTER TABLE POSTING_ALLOWANCES +MODIFY (TOTAL_AMOUNT_CURRENCY NOT NULL); diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/26_RIGD-2696_pkg_abac_comm.pkb.sql b/e-rights-common/src/main/database/release/archive/3.0.0/26_RIGD-2696_pkg_abac_comm.pkb.sql new file mode 100644 index 0000000..a2b91ee --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/26_RIGD-2696_pkg_abac_comm.pkb.sql @@ -0,0 +1,70 @@ +CREATE OR REPLACE PACKAGE BODY pkg_abac_comm AS + + gkn_retention_duration_async NUMBER := 12; -- In months + gkn_retention_duration_sync NUMBER := 1; -- In months + + PROCEDURE p_clean_ank_abac_comm IS + + PROCEDURE p_do_cleaning ( + pd_earliest_date IN DATE, + ps_communication_type IN VARCHAR2 + ) IS + TYPE t_table_of_comm_ids IS + TABLE OF ank_abac_comm.id%TYPE; + lt_table_of_ids t_table_of_comm_ids; + BEGIN + LOOP + SELECT + id + BULK COLLECT + INTO lt_table_of_ids + FROM + ank_abac_comm + WHERE + request_sent_at < pd_earliest_date + AND type = ps_communication_type + AND ROWNUM < 1000; + + EXIT WHEN SQL%rowcount = 0; + FORALL ln_idx IN lt_table_of_ids.first..lt_table_of_ids.last + DELETE FROM ank_abac_comm_errors + WHERE + id = lt_table_of_ids(ln_idx); + + FORALL ln_idx IN lt_table_of_ids.first..lt_table_of_ids.last + DELETE FROM ank_abac_comm_requests + WHERE + id = lt_table_of_ids(ln_idx); + + FORALL ln_idx IN lt_table_of_ids.first..lt_table_of_ids.last + DELETE FROM ank_abac_comm_responses + WHERE + id = lt_table_of_ids(ln_idx); + + FORALL ln_idx IN lt_table_of_ids.first..lt_table_of_ids.last + DELETE FROM ank_abac_comm + WHERE + id = lt_table_of_ids(ln_idx); + + COMMIT; + END LOOP; + + COMMIT; + END p_do_cleaning; + + BEGIN + pkg_log.debug('Cleaning started', 'PKG_ABAC_COMM.P_CLEAN_ANK_ABAC_COMM'); + pkg_log.debug('ASYNC Communications', 'PKG_ABAC_COMM.P_CLEAN_ANK_ABAC_COMM'); + p_do_cleaning(add_months(sysdate, -gkn_retention_duration_async), 'ASYNC'); + pkg_log.debug('SYNC Communications', 'PKG_ABAC_COMM.P_CLEAN_ANK_ABAC_COMM'); + p_do_cleaning(add_months(sysdate, -gkn_retention_duration_sync), 'SYNC'); + pkg_log.debug('Cleaning ended', 'PKG_ABAC_COMM.P_CLEAN_ANK_ABAC_COMM'); + EXCEPTION + WHEN OTHERS THEN + pkg_log.debug('Exception:' + || sqlcode + || '-' + || sqlerrm, 'PKG_ABAC_COMM.P_CLEAN_ANK_ABAC_COMM'); + END p_clean_ank_abac_comm; + +END pkg_abac_comm; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/28_RIGD-2699_v_family_members.sql b/e-rights-common/src/main/database/release/archive/3.0.0/28_RIGD-2699_v_family_members.sql new file mode 100644 index 0000000..8482ce7 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/28_RIGD-2699_v_family_members.sql @@ -0,0 +1,68 @@ +CREATE OR REPLACE VIEW erights.v_family_members ( + family_member_id, + per_id, + surname, + date_of_birth, + trp_code, + trp_cd, + rel_per_id, + rel_surname, + rel_first_name, + rel_date_of_birth, + child_allowance_granted, + more_than_2_years_old, + household_allowance_granted, + relative_work_in_delegation, + relative_work_in_hq +) AS + SELECT + m.family_member_id, + m.per_id, + m.surname, + m.date_of_birth, + m.trp_code, + m.trp_cd, + m.rel_per_id, + m.rel_surname, + m.rel_first_name, + m.rel_date_of_birth, + nvl2(r_chld_all.per_id_attrib, 'Y', 'N') child_allowance_granted, + CASE + WHEN trunc(months_between(sysdate, m.rel_date_of_birth) / 12) >= 2 THEN + 'Y' + ELSE + 'N' + END more_than_2_years_old, + nvl2(r_houshd_all.per_id_attrib, 'Y', 'N') household_allowance_granted, + CASE + WHEN rel_work_del.delegation_name <> 'HQ' + AND rel_work_del.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END relative_work_in_delegation, + CASE + WHEN ( rel_work_del.delegation_name = 'HQ' + AND rel_work_del.per_id IS NOT NULL ) + OR rel_work_del_com.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END relative_work_in_hq + FROM + mv_family_members m + LEFT JOIN mv_person_relatives_rights r_chld_all ON ( m.per_id = r_chld_all.per_id_attrib + AND m.rel_per_id = r_chld_all.per_id_benef + AND r_chld_all.rgt_id = 1003 + AND r_chld_all.right_pct > 50 + AND trunc(sysdate) BETWEEN r_chld_all.date_from AND r_chld_all.date_to ) + LEFT JOIN mv_person_relatives_rights r_houshd_all ON ( m.per_id = r_houshd_all.per_id_attrib + AND m.per_id = r_houshd_all.per_id_benef + AND r_houshd_all.rgt_id = 1006 + AND trunc(sysdate) BETWEEN r_houshd_all.date_from AND r_houshd_all.date_to ) + LEFT JOIN mv_persons_eeas rel_work_del ON ( m.rel_per_id = rel_work_del.per_id + AND rel_work_del.lst_cd IN ( 'CA', 'CB', 'FMD', 'FP', 'FS', + 'TC', 'TMD', 'TP', 'TT' ) ) + LEFT JOIN mv_persons_com rel_work_del_com ON ( m.rel_per_id = rel_work_del_com.per_id + AND rel_work_del_com.lst_cd IN ( 'CA', 'CB', 'FMD', 'FP', 'FS', + 'TC', 'TMD', 'TP', 'TT' ) ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/30-V_REPORT_POSTING_ALLOWANCES.SQL b/e-rights-common/src/main/database/release/archive/3.0.0/30-V_REPORT_POSTING_ALLOWANCES.SQL new file mode 100644 index 0000000..2deb510 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/30-V_REPORT_POSTING_ALLOWANCES.SQL @@ -0,0 +1,89 @@ + +CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_REPORT_POSTING_ALLOWANCES" AS + SELECT + a.posting_allowance_id posting_allowance_id, + a.per_id, + a.exercise_year, + a.posting_allowance_number posting_allowance_number, + a.posting_allowance_string_id posting_allowance_string_id, + a.posting_allowance_type posting_allowance_type, + a.posting_allowance_req_type posting_allowance_req_type, + a.parent_posting_allowance_id parent_posting_allowance_id, + a.comments, + a.outgoing_trip_amount, + a.outgoing_trip_amount_currency, + a.return_trip_amount, + a.return_trip_amount_currency, + a.calc_total_amount, + a.calc_total_amount_currency, + a.total_amount, + a.total_amount_currency, + a.payment_period_year, + a.payment_period_month, + TO_DATE(a.payment_period_month ||'/' || a.payment_period_year, 'mm/yy') payment_period, + a.payment_reference, + a.payment_state, + a.assignment_city_code, + a.assignment_country_code, + a.assignment_city_name assignment_city_name, + c_assign.name_en assignment_country_name, + c_assign.name_en || ', ' || assignment_city_name assignment_place, + a.assignment_iata_code, + a.origin_city_code, + a.origin_country_code, + a.origin_city_name origin_city_name, + c_origin.name_en origin_country_name, + a.origin_iata_code, + a.origin_period_month, + a.origin_period_year, + TO_DATE(a.origin_period_month ||'/' || a.origin_period_year, 'mm/yy') origin_period, + a.recruitment_city_code, + a.recruitment_country_code, + a.recruitment_city_name recruitment_city_name, + c_recruit.name_en recruitment_country_name, + a.recruitment_iata_code, + a.sm_id, + a.state, + a.posting_allowance_discriminatory_type posting_allowance_discriminatory_type, + a.created_by, + a.created_at, + a.updated_by, + a.updated_at, + a.delegation_org_id, + p.title, + p.first_name, + p.last_name, + a.assignment_start_date, + a.spouse_per_id, + a.double_posting + FROM + posting_allowances a + INNER JOIN v_people p ON p.per_id = a.per_id + LEFT JOIN mv_countries c_assign ON ( a.assignment_country_code = c_assign.country_code ) + LEFT JOIN mv_countries c_origin ON ( a.origin_country_code = c_origin.country_code ) + LEFT JOIN mv_countries c_recruit ON ( a.recruitment_country_code = c_recruit.country_code ); + + + + + +ALTER TABLE POSTING_ALLOWANCE_PERSONS +ADD (ORDER_TYPE_OF_PERSON NUMBER ); + +ALTER TABLE POSTING_ALLOWANCE_PERSONS +MODIFY (WORK_IN_HQ CHAR ); + + +ALTER TABLE POSTING_ALLOWANCE_PERSONS +MODIFY (WORK_IN_DELEGATION CHAR ); + + +ALTER TABLE AUD_POSTING_ALLOWANCE_PERSONS +ADD (ORDER_TYPE_OF_PERSON NUMBER ); + +ALTER TABLE AUD_POSTING_ALLOWANCE_PERSONS +MODIFY (WORK_IN_HQ CHAR ); + + +ALTER TABLE AUD_POSTING_ALLOWANCE_PERSONS +MODIFY (WORK_IN_DELEGATION CHAR ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/31.1_RIGD-2733_change_unique_constraint_on_posting_allowances.sql b/e-rights-common/src/main/database/release/archive/3.0.0/31.1_RIGD-2733_change_unique_constraint_on_posting_allowances.sql new file mode 100644 index 0000000..6196ec9 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/31.1_RIGD-2733_change_unique_constraint_on_posting_allowances.sql @@ -0,0 +1,6 @@ +ALTER TABLE posting_allowances DROP CONSTRAINT uk_posting_allowances_soj_perid; + +ALTER TABLE posting_allowances + ADD CONSTRAINT uk_posting_allowances_per_id_soj_id_exercise_year UNIQUE ( per_id, + soj_id, + exercise_year ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/31.2-RIGD-2633_ADD_PAYMENT_EXECUTION_METHOD_LOCAL.SQL b/e-rights-common/src/main/database/release/archive/3.0.0/31.2-RIGD-2633_ADD_PAYMENT_EXECUTION_METHOD_LOCAL.SQL new file mode 100644 index 0000000..be6c38a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/31.2-RIGD-2633_ADD_PAYMENT_EXECUTION_METHOD_LOCAL.SQL @@ -0,0 +1,2 @@ +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) +VALUES (66, 'ABAC', 'PAYMENT_EXECUTION_METHOD_LOCAL', 'M'); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/33_RIGD-2770_MV_PERSON_ADDRESS_HIST.sql b/e-rights-common/src/main/database/release/archive/3.0.0/33_RIGD-2770_MV_PERSON_ADDRESS_HIST.sql new file mode 100644 index 0000000..234daa0 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/33_RIGD-2770_MV_PERSON_ADDRESS_HIST.sql @@ -0,0 +1,126 @@ +DROP MATERIALIZED VIEW "ERIGHTS"."MV_PERSON_ADDRESS_HIST"; + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_PERSON_ADDRESS_HIST" ( + "PER_ID", + "START_DATE", + "END_DATE", + "EFFECTIVE_DATE", + "DECL_CHG_DATE", + "TADR_CD", + "ADDRESS_TYPE_CODE", + "COUNTRY_CODE", + "CITY_NAME", + "POSTAL_CODE", + "STREET_NAME", + "STREET_NAME1", + "STREET_NAME2", + "STREET_NUMBER", + "POSTAL_BOX", + "COMMENTS", + "ADDITIONAL_ADDRESS", + "ADDITIONAL_ADDRESS2", + "OREDER_ADDRESS", + "LANGUAGE_CODE", + "PER_ID_REL_PERS", + "SURNAME", + "FIRST_NAME", + "DATE_OF_BIRTH", + "TITLE", + "LINK_ADR_TEL", + "SP2_ADDRESS_ID", + "IRIS_ADDRESS_ID", + "SRC_ID", + "INS_CD", + "UNIQ_ID", + "CREATED_DATE", + "UPDATED_DATE" +) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND +AS + SELECT + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id, + created_date, + updated_date + FROM + ( + SELECT + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id, + created_date, + updated_date, + ROW_NUMBER() + OVER(PARTITION BY per_id, tadr_cd + ORDER BY + decode(ins_cd, 'EEAS', 1, 'COM', 2, + 10) DESC, start_date DESC + ) row_num -- Take EEAS over COM + FROM + mv_person_address_hist@easrefn.cc.cec.eu.int + ) + WHERE + row_num = 1; + +GRANT SELECT ON mv_person_address_hist TO erights_ro; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/34-RIGD-2790_add_place_of_origin.SQL b/e-rights-common/src/main/database/release/archive/3.0.0/34-RIGD-2790_add_place_of_origin.SQL new file mode 100644 index 0000000..e8cf8e6 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/34-RIGD-2790_add_place_of_origin.SQL @@ -0,0 +1,3 @@ +ALTER TABLE POSTING_ALLOWANCES ADD ORIGIN_PLACE_SEARCH VARCHAR2(255); +ALTER TABLE AUD_POSTING_ALLOWANCES ADD ORIGIN_PLACE_SEARCH VARCHAR2(255); + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/35.1_RIGD-2762_ADD_DUAL_POSTING_POSTING_ALLOWANCES.sql b/e-rights-common/src/main/database/release/archive/3.0.0/35.1_RIGD-2762_ADD_DUAL_POSTING_POSTING_ALLOWANCES.sql new file mode 100644 index 0000000..e34c50f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/35.1_RIGD-2762_ADD_DUAL_POSTING_POSTING_ALLOWANCES.sql @@ -0,0 +1,5 @@ +ALTER TABLE POSTING_ALLOWANCES + ADD (DUAL_POSTING VARCHAR2(20) ); + +ALTER TABLE AUD_POSTING_ALLOWANCES + ADD (DUAL_POSTING VARCHAR2(20) ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/35.2_RIGD-2762_ADD_DUAL_POSTING_V_REPORT.sql b/e-rights-common/src/main/database/release/archive/3.0.0/35.2_RIGD-2762_ADD_DUAL_POSTING_V_REPORT.sql new file mode 100644 index 0000000..b001dde --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/35.2_RIGD-2762_ADD_DUAL_POSTING_V_REPORT.sql @@ -0,0 +1,64 @@ +CREATE OR REPLACE VIEW "ERIGHTS"."V_REPORT_POSTING_ALLOWANCES" AS +SELECT + a.posting_allowance_id posting_allowance_id, + a.per_id, + a.exercise_year, + a.posting_allowance_number posting_allowance_number, + a.posting_allowance_string_id posting_allowance_string_id, + a.posting_allowance_type posting_allowance_type, + a.posting_allowance_req_type posting_allowance_req_type, + a.parent_posting_allowance_id parent_posting_allowance_id, + a.comments, + a.outgoing_trip_amount, + a.outgoing_trip_amount_currency, + a.return_trip_amount, + a.return_trip_amount_currency, + a.calc_total_amount, + a.calc_total_amount_currency, + a.total_amount, + a.total_amount_currency, + a.payment_period_year, + a.payment_period_month, + TO_DATE(a.payment_period_month ||'/' || a.payment_period_year, 'mm/yy') payment_period, + a.payment_reference, + a.payment_state, + a.assignment_city_code, + a.assignment_country_code, + a.assignment_city_name assignment_city_name, + c_assign.name_en assignment_country_name, + c_assign.name_en|| ', ' || assignment_city_name assignment_place, + a.assignment_iata_code, + a.origin_city_code, + a.origin_country_code, + a.origin_city_name origin_city_name, + c_origin.name_en origin_country_name, + a.origin_iata_code, + a.origin_period_month, + a.origin_period_year, + TO_DATE(a.origin_period_month ||'/' || a.origin_period_year, 'mm/yy') origin_period, + a.recruitment_city_code, + a.recruitment_country_code, + a.recruitment_city_name, + c_recruit.name_en recruitment_country_name, + a.recruitment_iata_code, + a.sm_id, + a.state, + a.posting_allowance_discriminatory_type posting_allowance_discriminatory_type, + a.created_by, + a.created_at, + a.updated_by, + a.updated_at, + a.delegation_org_id, + p.title, + p.first_name, + p.last_name, + a.assignment_start_date, + a.spouse_per_id, + a.double_posting, + a.dual_posting +FROM + posting_allowances a + INNER JOIN v_people p ON p.per_id = a.per_id + LEFT JOIN mv_countries c_assign ON ( a.assignment_country_code = c_assign.country_code ) + LEFT JOIN mv_countries c_origin ON ( a.origin_country_code = c_origin.country_code ) + LEFT JOIN mv_countries c_recruit ON ( a.recruitment_country_code = c_recruit.country_code ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/36_RIGD-2841_MV_JOBS.sql b/e-rights-common/src/main/database/release/archive/3.0.0/36_RIGD-2841_MV_JOBS.sql new file mode 100644 index 0000000..1f11cdb --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/36_RIGD-2841_MV_JOBS.sql @@ -0,0 +1,345 @@ +DROP MATERIALIZED VIEW "ERIGHTS"."MV_JOBS"; + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_JOBS" ( + "JOB_ID", + "JOB_MOMENT", + "JOB_TYPE", + "PERSONNEL_TYPE_ID", + "PERSONNEL_TYPE_DESC", + "BUDGETARY_LINE", + "JOB_CITY_CODE", + "JOB_CITY_NAME", + "JOB_COUNTRY_CODE", + "JOB_COUNTRY_NAME", + "ORGANIZATION_COUNTRY", + "ORGANIZATION_CITY", + "ORGANIZATION_NAME", + "ORG_ID", + "ASSIGN_START_DATE_TO", + "ASSIGN_END_DATE_TO", + "PER_ID", + "SEVERITY_LEVEL", + "EVACUATION_LEVEL_CODE_ID", + "ALERT_STATUS_ID", + "EVACUATION_LEVEL_CODE", + "ORGANIZATION_COUNTRY_CODE", + "ORGANIZATION_CITY_CODE", + "FAMILY_POSTING_TYPE_ID", + "FAMILY_POSTING_TYPE", + "HOD", + "FAMILY_POSTING_TYPE_CAT", + "BUDGET_LINE", + "DELEGATION_ORG_ID", + "INSTITUTION_CODE", + "INSTITUTION_NAME", + "FUNCTION_CODE", + "FUNCTION_DESC" +) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND +AS + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + enth.main_org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_eeas jobh + INNER JOIN mv_entities_hist enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_eeas + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN ( + SELECT DISTINCT + entities.city_code, + entities.country_id, + FIRST_VALUE(delstatus.severity_level) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) severity_level, + FIRST_VALUE(delstatus.evacuation_level_code_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code_id, + FIRST_VALUE(delstatus.alert_status_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) alert_status_id, + FIRST_VALUE(delstatus.evacuation_level_code) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code, + FIRST_VALUE(delstatus.family_posting_type_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type_id, + FIRST_VALUE(delstatus.family_posting_type) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type + FROM + mv_delegation_status delstatus, + mv_entities entities + WHERE + delstatus.org_id = entities.org_id + ) delstat ON ( jobh.location_country_code = delstat.country_id + AND jobh.location_city_code = delstat.city_code ) + LEFT JOIN mv_head_of_delegations hod ON asgh.job_id = hod.job_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_eeas jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist enth2 + WHERE + enth.org_id = enth2.org_id + ) + UNION ALL + SELECT + jobh.job_id, + CASE + WHEN trunc(jobh.start_date) > trunc(sysdate) THEN + 'FUTURE_JOB' + ELSE + 'PRESENT_JOB' + END AS job_moment, + jobh.job_type, + jobh.personnel_type_id, + jobh.personnel_type_desc, + jobh.budgetary_line, + jobh.location_city_code AS job_city_code, + jobh.location_city_name AS job_city_name, + jobh.location_country_code AS job_country_code, + jobh.location_country_name AS job_country_name, + enth.eng_country AS organization_country, + enth.eng_city AS organization_city, + enth.org_cd AS organization_name, + enth.org_id, + asgh.start_date AS assign_start_date_to, + CASE + WHEN EXTRACT(YEAR FROM asgh.end_date) IN ( 2099, 9999 ) THEN + to_date(NULL) + ELSE + asgh.end_date + END AS assign_end_date_to, + asgh.per_id, + delstat.severity_level, + delstat.evacuation_level_code_id, + delstat.alert_status_id, + delstat.evacuation_level_code, + enth.country_id AS organization_country_code, + enth.city_code AS organization_city_code, + delstat.family_posting_type_id, + delstat.family_posting_type, + CASE + WHEN hod.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END hod, + CASE + WHEN instr(upper(delstat.family_posting_type), 'NON-FAMILY') > 0 THEN + 'NON_FAMILY' + ELSE + 'FAMILY' + END family_posting_type_cat, + hrjd.budget_line, + enth.main_org_id delegation_org_id, + inst.ins_cd institution_code, + inst.name institution_name, + jobh.edel_function_code function_code, + jobh.edel_function_desc function_desc + FROM + mv_jobs_hist_com jobh + INNER JOIN mv_entities_hist_com enth ON jobh.org_id = enth.org_id + LEFT JOIN ( + SELECT + * + FROM + ( + SELECT + per_id, + job_id, + start_date, + end_date, + ROW_NUMBER() + OVER(PARTITION BY job_id + ORDER BY + start_date DESC + ) rw + FROM + mv_assignments_hist_com + WHERE + trunc(sysdate) < trunc(end_date) + AND per_id IS NOT NULL + ) + WHERE + rw = 1 + ) asgh ON asgh.job_id = jobh.job_id + LEFT JOIN ( + SELECT DISTINCT + entities.city_code, + entities.country_id, + FIRST_VALUE(delstatus.severity_level) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) severity_level, + FIRST_VALUE(delstatus.evacuation_level_code_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code_id, + FIRST_VALUE(delstatus.alert_status_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) alert_status_id, + FIRST_VALUE(delstatus.evacuation_level_code) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) evacuation_level_code, + FIRST_VALUE(delstatus.family_posting_type_id) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type_id, + FIRST_VALUE(delstatus.family_posting_type) + OVER(PARTITION BY city_code, country_id + ORDER BY + delstatus.org_id + ) family_posting_type + FROM + mv_delegation_status delstatus, + mv_entities entities + WHERE + delstatus.org_id = entities.org_id + ) delstat ON ( jobh.location_country_code = delstat.country_id + AND jobh.location_city_code = delstat.city_code ) + LEFT JOIN mv_head_of_delegations hod ON asgh.job_id = hod.job_id + LEFT JOIN mv_hrportal_jobs_details hrjd ON jobh.job_id = hrjd.job_id + LEFT JOIN mv_institutions inst ON jobh.ins_cd = inst.easrefn_ins_cd + WHERE + NOT EXISTS ( + SELECT + 1 + FROM + mv_jobs_hist_eeas jobhe + WHERE + jobh.job_id = jobhe.job_id + ) + AND jobh.end_date = ( + SELECT + MAX(jobh2.end_date) + FROM + mv_jobs_hist_com jobh2 + WHERE + jobh2.job_id = jobh.job_id + ) + AND enth.end_date = ( + SELECT + MAX(enth2.end_date) + FROM + mv_entities_hist_com enth2 + WHERE + enth.org_id = enth2.org_id + ); + +CREATE INDEX "ERIGHTS"."IX_MV_JOBS_JOB_ID" ON + "ERIGHTS"."MV_JOBS" ( + "JOB_ID" + ) + COMPUTE STATISTICS; + +COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_JOBS" IS + 'snapshot table for snapshot ERIGHTS.MV_JOBS'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/38_RIGD-2783_Update_BUDGET_LINES_SUBPOSTS_MAPPING.sql b/e-rights-common/src/main/database/release/archive/3.0.0/38_RIGD-2783_Update_BUDGET_LINES_SUBPOSTS_MAPPING.sql new file mode 100644 index 0000000..47da05d --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/38_RIGD-2783_Update_BUDGET_LINES_SUBPOSTS_MAPPING.sql @@ -0,0 +1,7 @@ +update budget_lines_subposts_mapping +set BUDGET_LINES = replace(BUDGET_LINES, 'EEAS-B2022', 'EEAS-B2023'); + +update budget_lines_subposts_mapping +set BUDGET_LINES = replace(BUDGET_LINES, 'EEAS-B2021', 'EEAS-B2023'); + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/39_RIGD-2877_places_of_origin_airport.sql b/e-rights-common/src/main/database/release/archive/3.0.0/39_RIGD-2877_places_of_origin_airport.sql new file mode 100644 index 0000000..2e27aba --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/39_RIGD-2877_places_of_origin_airport.sql @@ -0,0 +1,38 @@ +DROP TABLE erights.places_of_origin_airport; + +CREATE TABLE erights.places_of_origin_airport ( + places_of_origin_airport_id NUMBER, + city_code VARCHAR2(3 BYTE), + country_code VARCHAR2(3 BYTE), + city_name VARCHAR2(250 BYTE), + iata_code VARCHAR2(3 BYTE), + airport_name VARCHAR2(250 BYTE), + CONSTRAINT pk_places_of_origin_airport PRIMARY KEY ( places_of_origin_airport_id ) +); + +DROP SEQUENCE seq_places_of_origin_airport; + +CREATE SEQUENCE seq_places_of_origin_airport MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE +NOKEEP NOSCALE GLOBAL; + +CREATE INDEX ix_places_of_origin_airport_country_code_city_name ON + places_of_origin_airport ( + country_code, + city_name + ) + COMPUTE STATISTICS; + +ALTER TABLE erights.places_of_origin_airport + ADD CONSTRAINT fk_places_of_origin_airport_airports FOREIGN KEY ( iata_code ) + REFERENCES airports ( iata_code ); + + + +ALTER TABLE PLACES_OF_ORIGIN_AIRPORT +ADD CONSTRAINT UK_PLACES_OF_ORIGIN_AIRPORT UNIQUE +( + CITY_NAME +, COUNTRY_CODE +,CITY_CODE +) +ENABLE; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/40.01_RIGD-2877_ETRAVEL-PRODUCTION_Populate_places_of_origin_airport.sql b/e-rights-common/src/main/database/release/archive/3.0.0/40.01_RIGD-2877_ETRAVEL-PRODUCTION_Populate_places_of_origin_airport.sql new file mode 100644 index 0000000..a7ed4c0 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/40.01_RIGD-2877_ETRAVEL-PRODUCTION_Populate_places_of_origin_airport.sql @@ -0,0 +1,67 @@ +-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +-- ATTENTION +-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +-- This script is to be run in ETRAVEL Production database +-- Change the database link according to the target environment + +DELETE FROM places_of_origin_airport@erights_acc; + +INSERT INTO places_of_origin_airport@erights_acc + SELECT + seq_places_of_origin_airport.nextval@erights_acc, + city_id, + country_id, + city_name, + iata_code, + airport_name + FROM + ( + SELECT DISTINCT + city_id, + country_id, + trim(upper(city_name)) city_name, + iata_code, + airport_name + FROM + ( + SELECT + live_pers.per_id, + live_adr.valid_from, + live_adr.valid_to, + live_loc.city_id, + live_loc.country_id, + live_loc.description city_name, + live_air.iata_code, + live_air.airport_name + FROM + etravel.v_live_persons live_pers + LEFT JOIN etravel.v_live_person_addresses live_adr ON live_adr.person_stem_id = live_pers.person_stem_id + LEFT JOIN etravel.v_live_locations live_loc ON live_loc.location_stem_id = live_adr.location_stem_id + LEFT JOIN v_live_airports live_air ON live_loc.airport_stem_id = live_air.airport_stem_id + WHERE + live_adr.is_origin_place = 'Y' + ) + WHERE + iata_code IS NOT NULL + ); + +/* +DELETE FROM etravel_places_of_origin@erights_test; + INSERT INTO etravel_places_of_origin@erights_test + SELECT + live_pers.per_id, + live_adr.valid_from, + live_adr.valid_to, + live_loc.city_id, + live_loc.country_id, + live_loc.description, + live_air.iata_code, + live_air.airport_name + FROM + etravel.v_live_persons live_pers + LEFT JOIN etravel.v_live_person_addresses live_adr ON live_adr.person_stem_id = live_pers.person_stem_id + LEFT JOIN etravel.v_live_locations live_loc ON live_loc.location_stem_id = live_adr.location_stem_id + LEFT JOIN v_live_airports live_air ON live_loc.airport_stem_id = live_air.airport_stem_id + WHERE + live_adr.is_origin_place = 'Y' +*/ diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/40.02_RIGD-2877_Clean_places_of_origin.sql b/e-rights-common/src/main/database/release/archive/3.0.0/40.02_RIGD-2877_Clean_places_of_origin.sql new file mode 100644 index 0000000..7c8650f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/40.02_RIGD-2877_Clean_places_of_origin.sql @@ -0,0 +1,33 @@ +delete from PLACES_OF_ORIGIN_AIRPORT +where city_name in ('BARCELONA', +'MAIA', +'NAIROBI', +'BUCAREST', +'TRICESIMO', +'CARCAVELOS', +'BRUSSELS', +'TILBURG', +'LONDON', +'VILLANUEVA DE ALGAIDAS', +'TORINO', +'SOZOPOL', +'CHRZANOW', +'VITERBO') and city_code is null; + +delete from PLACES_OF_ORIGIN_AIRPORT +where city_name in ('VITERBO') and city_code ='PEG'; + +delete from PLACES_OF_ORIGIN_AIRPORT +where city_name in ('NAIROBI') and city_code ='NB1'; + +alter TABLE PLACES_OF_ORIGIN_AIRPORT +drop CONSTRAINT UK_PLACES_OF_ORIGIN_AIRPORT; + +ALTER TABLE PLACES_OF_ORIGIN_AIRPORT +ADD CONSTRAINT UK_PLACES_OF_ORIGIN_AIRPORT UNIQUE +( + CITY_NAME +, COUNTRY_CODE +) +USING INDEX ERIGHTS.IX_PLACES_OF_ORIGIN_AIRPORT_COUNTRY_CODE_CITY_NAME +ENABLE; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/41_RIGD-2850_add_app_parameter.sql b/e-rights-common/src/main/database/release/archive/3.0.0/41_RIGD-2850_add_app_parameter.sql new file mode 100644 index 0000000..56a4a86 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/41_RIGD-2850_add_app_parameter.sql @@ -0,0 +1 @@ +INSERT INTO "ERIGHTS"."APP_PARAMETERS" (PARAMETER_ID, PARAMETER_TYPE, PARAMETER_KEY, PARAMETER_VALUE) VALUES ('67', 'POSTING_ALLOWANCES', 'NUMBER_OF_REQUEST_TREATED_PAY_SYSPER', '3'); diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/42_RIGD-2715_payment_info.sql b/e-rights-common/src/main/database/release/archive/3.0.0/42_RIGD-2715_payment_info.sql new file mode 100644 index 0000000..e83852e --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/42_RIGD-2715_payment_info.sql @@ -0,0 +1,11 @@ +ALTER TABLE POSTING_ALLOWANCES +ADD (PAYMENT_ID VARCHAR2(255) ); + +ALTER TABLE POSTING_ALLOWANCES +ADD (PAYMENT_EVENT_ID VARCHAR2(255) ); + +ALTER TABLE AUD_POSTING_ALLOWANCES +ADD (PAYMENT_ID VARCHAR2(255) ); + +ALTER TABLE AUD_POSTING_ALLOWANCES +ADD (PAYMENT_EVENT_ID VARCHAR2(255) ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/43_RIGD-2906_V_PEOPLE.sql b/e-rights-common/src/main/database/release/archive/3.0.0/43_RIGD-2906_V_PEOPLE.sql new file mode 100644 index 0000000..0d2c4a6 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/43_RIGD-2906_V_PEOPLE.sql @@ -0,0 +1,93 @@ + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_PEOPLE" ("PER_ID", "TITLE", "FIRST_NAME", "LAST_NAME", "GENDER", "BIRTH_CITY", "BIRTH_COUNTRY_CODE", "PRIVATE_EMAIL", "DATE_OF_BIRTH", "PROFESSIONAL_EMAIL") AS + SELECT + per_id, + title, + first_name, + surname last_name, + genre gender, + place_of_birth birth_city, + country_of_birth birth_country_code, + email private_email, + date_of_birth, + professional_email + FROM + ( + SELECT + p.per_id, + p.title, + p.first_name, + p.surname, + p.genre, + p.place_of_birth, + replace(p.country_of_birth, 'XXX', 'ZZZ') country_of_birth, + em.email, + p.date_of_birth, + p2.email professional_email + FROM + mv_persons_hist_eeas p + LEFT JOIN V_PERSONS_EMAILS em ON em.per_id = p.per_id + LEFT JOIN mv_persons_eeas p2 ON ( p.per_id = p2.per_id ) + WHERE + ( p.start_date = ( + SELECT + MAX(p2.start_date) + FROM + mv_persons_hist_eeas p2 + WHERE + p.per_id = p2.per_id + ) + OR p.start_date IS NULL ) + UNION + SELECT + p.per_id, + p.title, + p.first_name, + p.surname, + p.genre, + p.place_of_birth, + replace(p.country_of_birth, 'XXX', 'ZZZ') country_of_birth, + em.email, + p.date_of_birth, + p2.email professional_email + FROM + mv_persons_hist_com p + LEFT JOIN V_PERSONS_EMAILS em ON em.per_id = p.per_id + LEFT JOIN mv_persons_com p2 ON ( p.per_id = p2.per_id ) + WHERE + ( p.start_date = ( + SELECT + MAX(p2.start_date) + FROM + mv_persons_hist_com p2 + WHERE + p.per_id = p2.per_id + ) + OR p.start_date IS NULL ) + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_persons_hist_eeas p2 + WHERE + p.per_id = p2.per_id + ) + UNION + SELECT + k.per_id, + k.title, + k.first_name, + k.surname, + k.genre, + k.place_of_birth, + replace(k.country_of_birth, 'XXX', 'ZZZ') country_of_birth, + em.email, + k.date_of_birth, + k.email professional_email + FROM + mv_persons_eeas@easrefn.cc.cec.eu.int k + LEFT JOIN V_PERSONS_EMAILS em ON em.per_id = k.per_id + WHERE + k.per_id < 0 + ); + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/44_RIGD-2906_v_report_posting_allowances.sql b/e-rights-common/src/main/database/release/archive/3.0.0/44_RIGD-2906_v_report_posting_allowances.sql new file mode 100644 index 0000000..ce45d2d --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/44_RIGD-2906_v_report_posting_allowances.sql @@ -0,0 +1,77 @@ + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_REPORT_POSTING_ALLOWANCES" ("POSTING_ALLOWANCE_ID", "PER_ID", "EXERCISE_YEAR", "POSTING_ALLOWANCE_NUMBER", "POSTING_ALLOWANCE_STRING_ID", "POSTING_ALLOWANCE_TYPE", "POSTING_ALLOWANCE_REQ_TYPE", "PARENT_POSTING_ALLOWANCE_ID", "COMMENTS", "OUTGOING_TRIP_AMOUNT", "OUTGOING_TRIP_AMOUNT_CURRENCY", "RETURN_TRIP_AMOUNT", "RETURN_TRIP_AMOUNT_CURRENCY", "CALC_TOTAL_AMOUNT", "CALC_TOTAL_AMOUNT_CURRENCY", "TOTAL_AMOUNT", "TOTAL_AMOUNT_CURRENCY", "PAYMENT_PERIOD_YEAR", "PAYMENT_PERIOD_MONTH", "PAYMENT_PERIOD", "PAYMENT_REFERENCE", "PAYMENT_STATE", "ASSIGNMENT_CITY_CODE", "ASSIGNMENT_COUNTRY_CODE", "ASSIGNMENT_CITY_NAME", "ASSIGNMENT_COUNTRY_NAME", "ASSIGNMENT_PLACE", "ASSIGNMENT_IATA_CODE", "ORIGIN_CITY_CODE", "ORIGIN_COUNTRY_CODE", "ORIGIN_CITY_NAME", "ORIGIN_COUNTRY_NAME", "ORIGIN_IATA_CODE", "ORIGIN_PERIOD_MONTH", "ORIGIN_PERIOD_YEAR", "ORIGIN_PLACE_SEARCH", "ORIGIN_PERIOD", "RECRUITMENT_CITY_CODE", "RECRUITMENT_COUNTRY_CODE", "RECRUITMENT_CITY_NAME", "RECRUITMENT_COUNTRY_NAME", "RECRUITMENT_IATA_CODE", "SM_ID", "STATE", "POSTING_ALLOWANCE_DISCRIMINATORY_TYPE", "CREATED_BY", "CREATED_AT", "UPDATED_BY", "UPDATED_AT", "DELEGATION_ORG_ID", "TITLE", "FIRST_NAME", "LAST_NAME", "ASSIGNMENT_START_DATE", "SPOUSE_PER_ID", "DOUBLE_POSTING", "DUAL_POSTING", "PROFESSIONAL_EMAIL", "PRIVATE_EMAIL", "ASSIGNMENT_AIRPORT_NAME", "ORIGIN_AIRPORT_NAME") AS + SELECT + a.posting_allowance_id posting_allowance_id, + a.per_id, + a.exercise_year, + a.posting_allowance_number posting_allowance_number, + a.posting_allowance_string_id posting_allowance_string_id, + a.posting_allowance_type posting_allowance_type, + a.posting_allowance_req_type posting_allowance_req_type, + a.parent_posting_allowance_id parent_posting_allowance_id, + a.comments, + a.outgoing_trip_amount, + a.outgoing_trip_amount_currency, + a.return_trip_amount, + a.return_trip_amount_currency, + a.calc_total_amount, + a.calc_total_amount_currency, + a.total_amount, + a.total_amount_currency, + a.payment_period_year, + a.payment_period_month, + to_date(a.payment_period_month + || '/' + || a.payment_period_year, 'mm/yy') payment_period, + a.payment_reference, + a.payment_state, + a.assignment_city_code, + a.assignment_country_code, + a.assignment_city_name assignment_city_name, + c_assign.name_en assignment_country_name, + c_assign.name_en + || ' , ' + || initcap(assignment_city_name) assignment_place, + a.assignment_iata_code, + a.origin_city_code, + a.origin_country_code, + a.origin_city_name origin_city_name, + c_origin.name_en origin_country_name, + a.origin_iata_code, + a.origin_period_month, + a.origin_period_year, + a.origin_place_search, + to_date(a.origin_period_month + || '/' + || a.origin_period_year, 'mm/yy') origin_period, + a.recruitment_city_code, + a.recruitment_country_code, + a.recruitment_city_name recruitment_city_name, + c_recruit.name_en recruitment_country_name, + a.recruitment_iata_code, + a.sm_id, + a.state, + a.posting_allowance_discriminatory_type posting_allowance_discriminatory_type, + a.created_by, + a.created_at, + a.updated_by, + a.updated_at, + a.delegation_org_id, + p.title, + p.first_name, + p.last_name, + a.assignment_start_date, + a.spouse_per_id, + a.double_posting, + a.dual_posting, + p.professional_email, + p.private_email, + a.assignment_airport_name, + a.origin_airport_name + FROM + posting_allowances a + INNER JOIN v_people p ON p.per_id = a.per_id + LEFT JOIN mv_countries c_assign ON ( a.assignment_country_code = c_assign.country_code ) + LEFT JOIN mv_countries c_origin ON ( a.origin_country_code = c_origin.country_code ) + LEFT JOIN mv_countries c_recruit ON ( a.recruitment_country_code = c_recruit.country_code ); + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/45_RIGD-2906_indexes.sql b/e-rights-common/src/main/database/release/archive/3.0.0/45_RIGD-2906_indexes.sql new file mode 100644 index 0000000..89365f2 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/45_RIGD-2906_indexes.sql @@ -0,0 +1,13 @@ +CREATE INDEX mv_persons_eeas_per_id_email ON + mv_persons_eeas ( + per_id, + email + ) + COMPUTE STATISTICS; + +CREATE INDEX mv_persons_com_per_id_email ON + mv_persons_com ( + per_id, + email + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/46_RIGD-2916_V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES.sql b/e-rights-common/src/main/database/release/archive/3.0.0/46_RIGD-2916_V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES.sql new file mode 100644 index 0000000..ea8b98a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/46_RIGD-2916_V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES.sql @@ -0,0 +1,88 @@ + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES" ("SOJ_ID", "JOB_ID", "PER_ID", "JOB_TYPE", "ASSIGN_START_DATE_TO", "ASSIGN_END_DATE_TO", "NO_SYSPER", "TITLE", "SURNAME", "GENRE", "USERID", "MONIKER", "DOMAIN", "DISPLAY_NAME", "JCX_ID", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "LST_CD", "LST_CODE", "LST_BEG_DATE", "LST_ASS_DATE", "LST_END_DATE", "CGR_CD", "ORG_ID", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "ORG_DESC", "TOR_ID", "TYPEOFENTITY_NAME", "DEL_ID", "DELEGATION_NAME", "RESPONSIBLE", "HEAD_OF_ENTITY", "JOB_CITY_CODE", "JOB_CITY_NAME", "JOB_COUNTRY_CODE", "JOB_COUNTRY_NAME", "IATA_CODE", "DELEGATION_ORG_ID") AS + SELECT + a.soj_id, + j.job_id, + p.per_id, + j.job_type, + a.start_date assign_start_date_to, + a.end_date assign_end_date_to, + p.no_sysper, + p.title, + p.surname, + p.genre, + p.userid, + p.moniker, + p.domain, + p.display_name, + j.jcx_id, + a.start_date assign_start_date, + a.end_date assign_end_date, + p.lst_cd, + p.lst_code, + p.lst_beg_date, + p.lst_ass_date, + p.lst_end_date, + p.cgr_cd, + e.org_id, + e.main_org_id, + e.org_name, + e.org_cd, + e.org_desc, + e.tor_id, + e.typeofentity_name, + e.del_id, + e.delegation_name, + j.responsible, + j.head_of_entity, + j.location_city_code job_city_code, + j.location_city_name job_city_name, + j.location_country_code job_country_code, + j.location_country_name job_country_name, + ac.iata_code, + e.main_org_id delegation_org_id + FROM + mv_persons_eeas p + INNER JOIN mv_assignments_hist_eeas a ON ( p.per_id = a.per_id ) + INNER JOIN mv_jobs_hist_eeas j ON ( a.job_id = j.job_id + AND a.jcx_id = j.jcx_id ) + INNER JOIN mv_entities e ON ( j.org_id = e.org_id ) + INNER JOIN airport_cities ac ON ( ac.city_code = j.location_city_code + AND ac.country_code = j.location_country_code ) + WHERE + EXISTS ( + SELECT + 1 + FROM + mv_entities e2 + WHERE + e2.is_delegation = 'Y' + AND e2.org_id = e.main_org_id + ) + AND p.lst_cd IN ( 'CA', 'FP' ) + AND a.start_date <= to_date('31-DEC-' || EXTRACT(YEAR FROM sysdate), 'DD-MON-YYYY') + AND a.end_date >= trunc(sysdate, 'YYYY') + AND NOT EXISTS ( -- remove the create allowances, we need to filter by the travel,storage acomodation + SELECT + 1 + FROM + POSTING_ALLOWANCES_TREATED aa + WHERE + aa.per_id = p.per_id + AND aa.SOJ_ID = a.soj_id + and aa.delegation_org_id = e.main_org_id + AND aa.EXERCISE_YEAR = EXTRACT(YEAR FROM sysdate) + ) + AND EXISTS ( + SELECT + 1 + FROM + mv_person_relatives_rights r + WHERE + r.per_id_attrib = p.per_id + AND r.rgt_id = 3002 -- Expatriation allowance (IR) + AND r.rtt_id_type = 410 -- [IR = IDE] Expatriation Allowance : 16% + AND r.date_from <= to_date('31-DEC-' || EXTRACT(YEAR FROM sysdate), 'DD-MON-YYYY') + AND r.date_to >= trunc(sysdate, 'YYYY') + ); + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/47_RIGD-2917_v_people.sql b/e-rights-common/src/main/database/release/archive/3.0.0/47_RIGD-2917_v_people.sql new file mode 100644 index 0000000..cc4cdff --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/47_RIGD-2917_v_people.sql @@ -0,0 +1,91 @@ +CREATE OR REPLACE VIEW v_people AS + SELECT + per_id, + title, + first_name, + surname last_name, + genre gender, + place_of_birth birth_city, + country_of_birth birth_country_code, + email private_email, + date_of_birth, + professional_email + FROM + ( + SELECT + p.per_id, + p.title, + p.first_name, + p.surname, + p.genre, + p.place_of_birth, + replace(p.country_of_birth, 'XXX', 'ZZZ') country_of_birth, + em.email, + p.date_of_birth, + p2.email professional_email + FROM + mv_persons_hist_eeas p + LEFT JOIN mv_emails em ON em.per_id = p.per_id + LEFT JOIN mv_persons_eeas p2 ON ( p.per_id = p2.per_id ) + WHERE + ( p.start_date = ( + SELECT + MAX(p2.start_date) + FROM + mv_persons_hist_eeas p2 + WHERE + p.per_id = p2.per_id + ) + OR p.start_date IS NULL ) + UNION + SELECT + p.per_id, + p.title, + p.first_name, + p.surname, + p.genre, + p.place_of_birth, + replace(p.country_of_birth, 'XXX', 'ZZZ') country_of_birth, + em.email, + p.date_of_birth, + p2.email professional_email + FROM + mv_persons_hist_com p + LEFT JOIN mv_emails em ON em.per_id = p.per_id + LEFT JOIN mv_persons_com p2 ON ( p.per_id = p2.per_id ) + WHERE + ( p.start_date = ( + SELECT + MAX(p2.start_date) + FROM + mv_persons_hist_com p2 + WHERE + p.per_id = p2.per_id + ) + OR p.start_date IS NULL ) + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_persons_hist_eeas p2 + WHERE + p.per_id = p2.per_id + ) + UNION + SELECT + k.per_id, + k.title, + k.first_name, + k.surname, + k.genre, + k.place_of_birth, + replace(k.country_of_birth, 'XXX', 'ZZZ') country_of_birth, + em.email, + k.date_of_birth, + k.email professional_email + FROM + mv_persons_eeas@easrefn.cc.cec.eu.int k + LEFT JOIN mv_emails em ON em.per_id = k.per_id + WHERE + k.per_id < 0 + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/48_RIGD-2916_2_assigments_in_same_delegation.sql b/e-rights-common/src/main/database/release/archive/3.0.0/48_RIGD-2916_2_assigments_in_same_delegation.sql new file mode 100644 index 0000000..12ddb67 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/48_RIGD-2916_2_assigments_in_same_delegation.sql @@ -0,0 +1,110 @@ + + CREATE TABLE "ERIGHTS"."POSTING_ALLOWANCES_TREATED" + ( "POSTING_ALLOWANCE_TREATED_ID" NUMBER, + "POSTING_ALLOWANCE_ID" NUMBER, + "PER_ID" NUMBER, + "EXERCISE_YEAR" NUMBER(4,0), + "DELEGATION_ORG_ID" NUMBER(10,0), + "SOJ_ID" NUMBER, + "CREATED_BY" NUMBER NOT NULL ENABLE, + "CREATED_AT" TIMESTAMP (6) NOT NULL ENABLE, + "UPDATED_BY" NUMBER NOT NULL ENABLE, + "UPDATED_AT" TIMESTAMP (6) NOT NULL ENABLE, + CONSTRAINT "PK_POSTING_ALLOWANCES_TREATED" PRIMARY KEY ("POSTING_ALLOWANCE_TREATED_ID"), + + + CONSTRAINT "UK_POSTING_ALLOWANCES_TREATED_PER_ID_SOJ_ID_EXERCISE_YEAR" UNIQUE ("PER_ID", "SOJ_ID", "EXERCISE_YEAR") + ) + ; + + + + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES" ("SOJ_ID", "JOB_ID", "PER_ID", "JOB_TYPE", "ASSIGN_START_DATE_TO", "ASSIGN_END_DATE_TO", "NO_SYSPER", "TITLE", "SURNAME", "GENRE", "USERID", "MONIKER", "DOMAIN", "DISPLAY_NAME", "JCX_ID", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "LST_CD", "LST_CODE", "LST_BEG_DATE", "LST_ASS_DATE", "LST_END_DATE", "CGR_CD", "ORG_ID", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "ORG_DESC", "TOR_ID", "TYPEOFENTITY_NAME", "DEL_ID", "DELEGATION_NAME", "RESPONSIBLE", "HEAD_OF_ENTITY", "JOB_CITY_CODE", "JOB_CITY_NAME", "JOB_COUNTRY_CODE", "JOB_COUNTRY_NAME", "IATA_CODE", "DELEGATION_ORG_ID") AS + SELECT + a.soj_id, + j.job_id, + p.per_id, + j.job_type, + a.start_date assign_start_date_to, + a.end_date assign_end_date_to, + p.no_sysper, + p.title, + p.surname, + p.genre, + p.userid, + p.moniker, + p.domain, + p.display_name, + j.jcx_id, + a.start_date assign_start_date, + a.end_date assign_end_date, + p.lst_cd, + p.lst_code, + p.lst_beg_date, + p.lst_ass_date, + p.lst_end_date, + p.cgr_cd, + e.org_id, + e.main_org_id, + e.org_name, + e.org_cd, + e.org_desc, + e.tor_id, + e.typeofentity_name, + e.del_id, + e.delegation_name, + j.responsible, + j.head_of_entity, + j.location_city_code job_city_code, + j.location_city_name job_city_name, + j.location_country_code job_country_code, + j.location_country_name job_country_name, + ac.iata_code, + e.main_org_id delegation_org_id + FROM + mv_persons_eeas p + INNER JOIN mv_assignments_hist_eeas a ON ( p.per_id = a.per_id ) + INNER JOIN mv_jobs_hist_eeas j ON ( a.job_id = j.job_id + AND a.jcx_id = j.jcx_id ) + INNER JOIN mv_entities e ON ( j.org_id = e.org_id ) + INNER JOIN airport_cities ac ON ( ac.city_code = j.location_city_code + AND ac.country_code = j.location_country_code ) + WHERE + EXISTS ( + SELECT + 1 + FROM + mv_entities e2 + WHERE + e2.is_delegation = 'Y' + AND e2.org_id = e.main_org_id + ) + AND p.lst_cd IN ( 'CA', 'FP' ) + AND a.start_date <= to_date('31-DEC-' || EXTRACT(YEAR FROM sysdate), 'DD-MON-YYYY') + AND a.end_date >= trunc(sysdate, 'YYYY') + AND NOT EXISTS ( -- remove the create allowances, we need to filter by the travel,storage acomodation + SELECT + 1 + FROM + POSTING_ALLOWANCES_TREATED aa + WHERE + aa.per_id = p.per_id + AND aa.SOJ_ID = a.soj_id + AND aa.EXERCISE_YEAR = EXTRACT(YEAR FROM sysdate) + ) + AND EXISTS ( + SELECT + 1 + FROM + mv_person_relatives_rights r + WHERE + r.per_id_attrib = p.per_id + AND r.rgt_id = 3002 -- Expatriation allowance (IR) + AND r.rtt_id_type = 410 -- [IR = IDE] Expatriation Allowance : 16% + AND r.date_from <= to_date('31-DEC-' || EXTRACT(YEAR FROM sysdate), 'DD-MON-YYYY') + AND r.date_to >= trunc(sysdate, 'YYYY') + ); + + + CREATE SEQUENCE "ERIGHTS"."SEQ_POSTING_ALLOWANCES_TREATED"; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/49_RIGD-2926-add_regularization_amount_columns.sql b/e-rights-common/src/main/database/release/archive/3.0.0/49_RIGD-2926-add_regularization_amount_columns.sql new file mode 100644 index 0000000..3955051 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/49_RIGD-2926-add_regularization_amount_columns.sql @@ -0,0 +1,38 @@ +ALTER TABLE POSTING_ALLOWANCES + ADD (NEW_TOTAL_AMOUNT_CURRENCY VARCHAR2(5)); + +ALTER TABLE POSTING_ALLOWANCES + ADD (INITIAL_TOTAL_AMOUNT_CURRENCY VARCHAR2(5)); + +ALTER TABLE POSTING_ALLOWANCES + ADD (REGULARIZE_AMOUNT_CURRENCY VARCHAR2(5)); + + +ALTER TABLE AUD_POSTING_ALLOWANCES + ADD (NEW_TOTAL_AMOUNT_CURRENCY VARCHAR2(5)); + +ALTER TABLE AUD_POSTING_ALLOWANCES + ADD (INITIAL_TOTAL_AMOUNT_CURRENCY VARCHAR2(5)); + +ALTER TABLE AUD_POSTING_ALLOWANCES + ADD (REGULARIZE_AMOUNT_CURRENCY VARCHAR2(5)); + + +ALTER TABLE POSTING_ALLOWANCES + ADD (NEW_TOTAL_AMOUNT NUMBER); + +ALTER TABLE POSTING_ALLOWANCES + ADD (INITIAL_TOTAL_AMOUNT NUMBER); + +ALTER TABLE POSTING_ALLOWANCES + ADD (REGULARIZE_AMOUNT NUMBER); + + +ALTER TABLE AUD_POSTING_ALLOWANCES + ADD (NEW_TOTAL_AMOUNT NUMBER); + +ALTER TABLE AUD_POSTING_ALLOWANCES + ADD (INITIAL_TOTAL_AMOUNT NUMBER); + +ALTER TABLE AUD_POSTING_ALLOWANCES + ADD (REGULARIZE_AMOUNT NUMBER); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/50_RIGD-2953_T_AIRPORT_STEMS.sql b/e-rights-common/src/main/database/release/archive/3.0.0/50_RIGD-2953_T_AIRPORT_STEMS.sql new file mode 100644 index 0000000..4285045 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/50_RIGD-2953_T_AIRPORT_STEMS.sql @@ -0,0 +1,24 @@ +-------------------------------------------------------- +-- File created - Tuesday-February-28-2023 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for Table T_AIRPORT_STEMS +-------------------------------------------------------- + + CREATE TABLE "T_AIRPORT_STEMS" + ( "AIRPORT_STEM_ID" NUMBER + ) ; + +-------------------------------------------------------- +-- DDL for Index PK_T_AIRPORT_STEMS +-------------------------------------------------------- + + CREATE UNIQUE INDEX "PK_T_AIRPORT_STEMS" ON "T_AIRPORT_STEMS" ("AIRPORT_STEM_ID") + COMPUTE STATISTICS ; +-------------------------------------------------------- +-- Constraints for Table T_AIRPORT_STEMS +-------------------------------------------------------- + + ALTER TABLE "T_AIRPORT_STEMS" MODIFY ("AIRPORT_STEM_ID" NOT NULL ENABLE); + ALTER TABLE "T_AIRPORT_STEMS" ADD CONSTRAINT "PK_T_AIRPORT_STEMS" PRIMARY KEY ("AIRPORT_STEM_ID") + USING INDEX "PK_T_AIRPORT_STEMS" ENABLE; diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/51_RIGD-2953_T_AIRPORTS.sql b/e-rights-common/src/main/database/release/archive/3.0.0/51_RIGD-2953_T_AIRPORTS.sql new file mode 100644 index 0000000..7b82812 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/51_RIGD-2953_T_AIRPORTS.sql @@ -0,0 +1,69 @@ +-------------------------------------------------------- +-- File created - Tuesday-February-28-2023 +-------------------------------------------------------- +-------------------------------------------------------- +-- DDL for Table T_AIRPORTS +-------------------------------------------------------- + + CREATE TABLE "T_AIRPORTS" + ( "AIRPORT_STEM_ID" NUMBER, + "AIRPORT_ID" NUMBER, + "IATA_CODE" VARCHAR2(3 BYTE), + "AIRPORT_NAME" VARCHAR2(256 BYTE), + "ACTIVE" CHAR(1 BYTE) DEFAULT 'Y', + "ARCHIVED" CHAR(1 BYTE) DEFAULT 'N', + "DELETED" CHAR(1 BYTE) DEFAULT 'N', + "ENTRY_TS" TIMESTAMP (6), + "DONE_BY_PER_ID" NUMBER(8,0), + "SYSTEM_MESSAGE" VARCHAR2(100 BYTE), + "REV_MESSAGE" VARCHAR2(2000 BYTE) + ); +-------------------------------------------------------- +-- DDL for Index T_AIRPORTS_PK +-------------------------------------------------------- + + CREATE UNIQUE INDEX "T_AIRPORTS_PK" ON "T_AIRPORTS" ("AIRPORT_ID") + COMPUTE STATISTICS; +-------------------------------------------------------- +-- DDL for Index IDX_AIRPORT_PER_ID +-------------------------------------------------------- + + CREATE INDEX "IDX_AIRPORT_PER_ID" ON "T_AIRPORTS" ("DONE_BY_PER_ID") + COMPUTE STATISTICS; +-------------------------------------------------------- +-- DDL for Index IDX_AIRPORT_ACTIVE +-------------------------------------------------------- + + CREATE INDEX "IDX_AIRPORT_ACTIVE" ON "T_AIRPORTS" ("ACTIVE") + COMPUTE STATISTICS; +-------------------------------------------------------- +-- DDL for Index IDX_AIRPORTS_IATA +-------------------------------------------------------- + + CREATE INDEX "IDX_AIRPORTS_IATA" ON "T_AIRPORTS" ("IATA_CODE") + COMPUTE STATISTICS; +-------------------------------------------------------- +-- DDL for Index IDX_AIRPORTS_ENTRY_TS +-------------------------------------------------------- + + CREATE INDEX "IDX_AIRPORTS_ENTRY_TS" ON "T_AIRPORTS" ("ENTRY_TS") + COMPUTE STATISTICS; +-------------------------------------------------------- +-- Constraints for Table T_AIRPORTS +-------------------------------------------------------- + + ALTER TABLE "T_AIRPORTS" MODIFY ("AIRPORT_ID" NOT NULL ENABLE); + ALTER TABLE "T_AIRPORTS" MODIFY ("ACTIVE" NOT NULL ENABLE); + ALTER TABLE "T_AIRPORTS" MODIFY ("ARCHIVED" NOT NULL ENABLE); + ALTER TABLE "T_AIRPORTS" MODIFY ("DELETED" NOT NULL ENABLE); + ALTER TABLE "T_AIRPORTS" ADD CONSTRAINT "CKC_ACTIVE_AIRPORTS" CHECK (ACTIVE IN ('Y','N')) ENABLE; + ALTER TABLE "T_AIRPORTS" ADD CONSTRAINT "CKC_ARCHIVED_T_AIRPOR" CHECK (ARCHIVED IN ('Y','N')) ENABLE; + ALTER TABLE "T_AIRPORTS" ADD CONSTRAINT "CKC_DELETED_T_AIRPOR" CHECK (DELETED IN ('Y','N')) ENABLE; + ALTER TABLE "T_AIRPORTS" ADD CONSTRAINT "T_AIRPORTS_PK" PRIMARY KEY ("AIRPORT_ID") + USING INDEX "T_AIRPORTS_PK" ENABLE; +-------------------------------------------------------- +-- Ref Constraints for Table T_AIRPORTS +-------------------------------------------------------- + + ALTER TABLE "T_AIRPORTS" ADD CONSTRAINT "FK_AIRPORT_AIRPORT_STEM_ID" FOREIGN KEY ("AIRPORT_STEM_ID") + REFERENCES "T_AIRPORT_STEMS" ("AIRPORT_STEM_ID") ENABLE; diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/52_RIGD-2953_SQ_AIRPORTS.sql b/e-rights-common/src/main/database/release/archive/3.0.0/52_RIGD-2953_SQ_AIRPORTS.sql new file mode 100644 index 0000000..e799595 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/52_RIGD-2953_SQ_AIRPORTS.sql @@ -0,0 +1,3 @@ + + CREATE SEQUENCE "SQ_AIRPORTS" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 7495 NOCACHE NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ; + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/53_RIGD-2953_V_AIRPORTS.sql b/e-rights-common/src/main/database/release/archive/3.0.0/53_RIGD-2953_V_AIRPORTS.sql new file mode 100644 index 0000000..532da86 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/53_RIGD-2953_V_AIRPORTS.sql @@ -0,0 +1,177 @@ + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "V_AIRPORTS" ("AIRPORT_STEM_ID", "AIRPORT_ID", "IATA_CODE", "AIRPORT_NAME", "ACTIVE", "ARCHIVED", "DELETED", "ENTRY_TS", "DONE_BY_PER_ID", "SYSTEM_MESSAGE", "REV_MESSAGE", "MAX_AIRPORT_ID") AS + SELECT + AIRPORT_STEM_ID, + AIRPORT_ID, + IATA_CODE, + AIRPORT_NAME, + ACTIVE, + ARCHIVED, + DELETED, + ENTRY_TS, + DONE_BY_PER_ID, + SYSTEM_MESSAGE, + REV_MESSAGE, + MAX_AIRPORT_ID + FROM + T_AIRPORTS A, + ( + SELECT + MAX(AIRPORT_ID) MAX_AIRPORT_ID + FROM + T_AIRPORTS + GROUP BY + AIRPORT_STEM_ID + ) + MAX_A + WHERE + 1 = 1 + AND A.AIRPORT_ID = MAX_A.MAX_AIRPORT_ID + AND A.DELETED = 'N'; + + CREATE OR REPLACE EDITIONABLE TRIGGER "IOFU_V_AIRPORTS" + INSTEAD OF UPDATE ON V_AIRPORTS + REFERENCING NEW AS UPDATEDROW OLD AS OLDROW + FOR EACH ROW +DECLARE + L_AIRPORT_ID T_AIRPORTS.AIRPORT_ID%TYPE; + L_MSG T_AIRPORTS.SYSTEM_MESSAGE%TYPE; + L_TIMESTAMP TIMESTAMP := CURRENT_TIMESTAMP; +BEGIN + + IF ( + (:UPDATEDROW.IATA_CODE IS NOT NULL AND + ((:OLDROW.IATA_CODE IS NOT NULL AND :UPDATEDROW.IATA_CODE != :OLDROW.IATA_CODE) + OR :OLDROW.IATA_CODE IS NULL)) OR + + (:UPDATEDROW.ACTIVE IS NOT NULL AND + ((:OLDROW.ACTIVE IS NOT NULL AND :UPDATEDROW.ACTIVE != :OLDROW.ACTIVE) + OR :OLDROW.ACTIVE IS NULL)) OR + + (:UPDATEDROW.ARCHIVED IS NOT NULL AND + ((:OLDROW.ARCHIVED IS NOT NULL AND :UPDATEDROW.ARCHIVED != :OLDROW.ARCHIVED) + OR :OLDROW.ARCHIVED IS NULL)) OR + + (:UPDATEDROW.DELETED IS NOT NULL AND + ((:OLDROW.DELETED IS NOT NULL AND :UPDATEDROW.DELETED != :OLDROW.DELETED) + OR :OLDROW.DELETED IS NULL)) OR + + (:UPDATEDROW.AIRPORT_NAME IS NOT NULL AND + ((:OLDROW.AIRPORT_NAME IS NOT NULL AND :UPDATEDROW.AIRPORT_NAME != :OLDROW.AIRPORT_NAME) + OR :OLDROW.AIRPORT_NAME IS NULL)) + ) THEN + + + SELECT SQ_AIRPORTS.NEXTVAL INTO L_AIRPORT_ID FROM DUAL; + SELECT USER INTO L_MSG FROM DUAL; + + L_MSG := L_MSG || ' : airport update ' || SYSDATE; + INSERT INTO T_AIRPORT_STEMS (AIRPORT_STEM_ID) VALUES (L_AIRPORT_ID); + + + UPDATE T_AIRPORTS SET ARCHIVED = 'Y' + WHERE + AIRPORT_STEM_ID = :OLDROW.AIRPORT_STEM_ID + AND AIRPORT_ID != L_AIRPORT_ID AND ARCHIVED != 'Y'; + + PKG_LOG.DEBUG('Previous Airport versions: ' || SQL%ROWCOUNT || + ' rows archived.', 'IOFU_V_AIRPORTS'); + + INSERT INTO T_AIRPORTS + ( + AIRPORT_STEM_ID, + AIRPORT_ID, + IATA_CODE, + AIRPORT_NAME, + ACTIVE, + ARCHIVED, + DELETED, + ENTRY_TS, + DONE_BY_PER_ID, + SYSTEM_MESSAGE, + REV_MESSAGE + ) + VALUES + ( + :OLDROW.AIRPORT_STEM_ID, + L_AIRPORT_ID, + NVL(:UPDATEDROW.IATA_CODE, :OLDROW.IATA_CODE), + NVL(:UPDATEDROW.AIRPORT_NAME, :OLDROW.AIRPORT_NAME), + NVL(:UPDATEDROW.ACTIVE, :OLDROW.ACTIVE), + NVL(:UPDATEDROW.ARCHIVED, :OLDROW.ARCHIVED), + NVL(:UPDATEDROW.DELETED, :OLDROW.DELETED), + L_TIMESTAMP, + :UPDATEDROW.DONE_BY_PER_ID, + NVL(:UPDATEDROW.SYSTEM_MESSAGE, L_MSG), + :UPDATEDROW.REV_MESSAGE + ); + + PKG_LOG.DEBUG('airport ' || :UPDATEDROW.AIRPORT_NAME || ' updated ', + 'IOFU_V_AIRPORTS'); + + END IF; + +EXCEPTION + WHEN OTHERS THEN + PKG_LOG.ERROR(' unexpeted error while executing INSTEAD OF UPDATE on V_AIRPORTS : ' || + SQLERRM, + 'IOFU_V_AIRPORTS'); + RAISE; +END IOFU_V_AIRPORTS; + +/ +ALTER TRIGGER "IOFU_V_AIRPORTS" ENABLE; + + CREATE OR REPLACE EDITIONABLE TRIGGER "IOFI_V_AIRPORTS" + INSTEAD OF INSERT ON V_AIRPORTS + REFERENCING NEW AS NEWROW + FOR EACH ROW +DECLARE + L_AIRPORT_ID T_AIRPORTS.AIRPORT_ID%TYPE; + L_MSG T_AIRPORTS.SYSTEM_MESSAGE%TYPE; + L_TIMESTAMP TIMESTAMP := CURRENT_TIMESTAMP; +BEGIN + + SELECT SQ_AIRPORTS.NEXTVAL INTO L_AIRPORT_ID FROM DUAL; + SELECT USER INTO L_MSG FROM DUAL; + + L_MSG := L_MSG || ' : airport insert ' || SYSDATE; + INSERT INTO T_AIRPORT_STEMS (AIRPORT_STEM_ID) VALUES (L_AIRPORT_ID); + + INSERT INTO T_AIRPORTS + (AIRPORT_STEM_ID, + AIRPORT_ID, + IATA_CODE, + AIRPORT_NAME, + ACTIVE, + ARCHIVED, + DELETED, + ENTRY_TS, + DONE_BY_PER_ID, + SYSTEM_MESSAGE, + REV_MESSAGE) + VALUES + (L_AIRPORT_ID, + L_AIRPORT_ID, + :NEWROW.IATA_CODE, + :NEWROW.AIRPORT_NAME, + :NEWROW.ACTIVE, + 'N', + 'N', + L_TIMESTAMP, + :NEWROW.DONE_BY_PER_ID, + NVL(:NEWROW.SYSTEM_MESSAGE, L_MSG), + NULL); + + PKG_LOG.DEBUG('airport ' || L_AIRPORT_ID || ' inserted (IOFI_V_AIRPORTS)', 'IOFI_V_AIRPORTS'); + +EXCEPTION + WHEN OTHERS THEN + PKG_LOG.ERROR(' unexpeted error while executing INSTEAD OF INSERT on v_airports : ' || + SQLERRM, + 'IOFI_V_AIRPORTS'); + RAISE; +END IOFI_V_AIRPORTS; + +/ +ALTER TRIGGER "IOFI_V_AIRPORTS" ENABLE; diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/54_RIGD-2953_V_LIVE_AIRPORTS.sql b/e-rights-common/src/main/database/release/archive/3.0.0/54_RIGD-2953_V_LIVE_AIRPORTS.sql new file mode 100644 index 0000000..a7c3dc2 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/54_RIGD-2953_V_LIVE_AIRPORTS.sql @@ -0,0 +1,19 @@ + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "V_LIVE_AIRPORTS" ("AIRPORT_STEM_ID", "AIRPORT_ID", "IATA_CODE", "AIRPORT_NAME", "ACTIVE", "ARCHIVED", "DELETED", "ENTRY_TS", "DONE_BY_PER_ID", "SYSTEM_MESSAGE", "REV_MESSAGE", "MAX_AIRPORT_ID") AS + SELECT + AIRPORT_STEM_ID, + AIRPORT_ID, + IATA_CODE, + AIRPORT_NAME, + ACTIVE, + ARCHIVED, + DELETED, + ENTRY_TS, + DONE_BY_PER_ID, + SYSTEM_MESSAGE, + REV_MESSAGE, + MAX_AIRPORT_ID + FROM + V_AIRPORTS + WHERE + ARCHIVED = 'N'; diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/55_RIGD-2953_T_CONNECTION_STEMS.sql b/e-rights-common/src/main/database/release/archive/3.0.0/55_RIGD-2953_T_CONNECTION_STEMS.sql new file mode 100644 index 0000000..4f28ff8 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/55_RIGD-2953_T_CONNECTION_STEMS.sql @@ -0,0 +1,8 @@ + + CREATE TABLE "T_CONNECTION_STEMS" + ( "CONNECTION_STEM_ID" NUMBER NOT NULL ENABLE + ) ; + CREATE UNIQUE INDEX "PK_T_CONNECTION_STEMS" ON "T_CONNECTION_STEMS" ("CONNECTION_STEM_ID") + COMPUTE STATISTICS; +ALTER TABLE "T_CONNECTION_STEMS" ADD CONSTRAINT "PK_T_CONNECTION_STEMS" PRIMARY KEY ("CONNECTION_STEM_ID") + USING INDEX "PK_T_CONNECTION_STEMS" ENABLE; diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/56_RIGD-2953_T_CONNECTIONS.sql b/e-rights-common/src/main/database/release/archive/3.0.0/56_RIGD-2953_T_CONNECTIONS.sql new file mode 100644 index 0000000..d437d36 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/56_RIGD-2953_T_CONNECTIONS.sql @@ -0,0 +1,41 @@ + + CREATE TABLE "T_CONNECTIONS" + ( "CONNECTION_STEM_ID" NUMBER, + "CONNECTION_ID" NUMBER NOT NULL ENABLE, + "AIRPORT_STEM_ID_ORG" NUMBER, + "AIRPORT_STEM_ID_DST" NUMBER, + "PRICE" NUMBER(38,2), + "IATA_ZONE" CHAR(2 BYTE), + "VALID_FROM" DATE, + "VALID_TO" DATE, + "ACTIVE" CHAR(1 BYTE) DEFAULT 'Y' NOT NULL ENABLE, + "ARCHIVED" CHAR(1 BYTE) DEFAULT 'N' NOT NULL ENABLE, + "DELETED" CHAR(1 BYTE) DEFAULT 'N' NOT NULL ENABLE, + "ENTRY_TS" TIMESTAMP (6), + "DONE_BY_PER_ID" NUMBER(8,0), + "SYSTEM_MESSAGE" VARCHAR2(100 BYTE), + "REV_MESSAGE" VARCHAR2(2000 BYTE), + CONSTRAINT "CKC_ACTIVE_CONNECTIONS" CHECK (ACTIVE IN ('Y','N')) ENABLE, + CONSTRAINT "CKC_ARCHIVED_T_CONNEC2" CHECK (ARCHIVED IN ('Y','N')) ENABLE, + CONSTRAINT "CKC_DELETED_T_CONNEC2" CHECK (DELETED IN ('Y','N')) ENABLE, + CONSTRAINT "FK_T_CONNEC_T_AIRPOR_ORG" FOREIGN KEY ("AIRPORT_STEM_ID_DST") + REFERENCES "T_AIRPORT_STEMS" ("AIRPORT_STEM_ID") ENABLE, + CONSTRAINT "FK_T_CONNEC_T_AIRPOR_DST" FOREIGN KEY ("AIRPORT_STEM_ID_ORG") + REFERENCES "T_AIRPORT_STEMS" ("AIRPORT_STEM_ID") ENABLE, + CONSTRAINT "T_CONNECTIONS_T_CONNECTIO_FK1" FOREIGN KEY ("CONNECTION_STEM_ID") + REFERENCES "T_CONNECTION_STEMS" ("CONNECTION_STEM_ID") ENABLE + ); + CREATE UNIQUE INDEX "T_CONNECTIONS_PK" ON "T_CONNECTIONS" ("CONNECTION_ID") + COMPUTE STATISTICS; +ALTER TABLE "T_CONNECTIONS" ADD CONSTRAINT "T_CONNECTIONS_PK" PRIMARY KEY ("CONNECTION_ID") + USING INDEX "T_CONNECTIONS_PK" ENABLE; + + CREATE INDEX "IDX_CONNECTIONS_ENTRY_TS" ON "T_CONNECTIONS" ("ENTRY_TS") + COMPUTE STATISTICS; + + CREATE INDEX "IDX_CONNECTION_ACTIVE" ON "T_CONNECTIONS" ("ACTIVE") + COMPUTE STATISTICS; + + CREATE INDEX "IDX_CONNECTION_PER_ID" ON "T_CONNECTIONS" ("DONE_BY_PER_ID") + COMPUTE STATISTICS; + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/57_RIGD-2953_SQ_CONNECTIONS.sql b/e-rights-common/src/main/database/release/archive/3.0.0/57_RIGD-2953_SQ_CONNECTIONS.sql new file mode 100644 index 0000000..20d7e23 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/57_RIGD-2953_SQ_CONNECTIONS.sql @@ -0,0 +1,3 @@ + + CREATE SEQUENCE "SQ_CONNECTIONS" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1614642 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ; + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/58_RIGD-2953_V_CONNECTIONS.sql b/e-rights-common/src/main/database/release/archive/3.0.0/58_RIGD-2953_V_CONNECTIONS.sql new file mode 100644 index 0000000..6723735 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/58_RIGD-2953_V_CONNECTIONS.sql @@ -0,0 +1,235 @@ + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "V_CONNECTIONS" ("CONNECTION_STEM_ID", "CONNECTION_ID", "AIRPORT_STEM_ID_ORG", "AIRPORT_STEM_ID_DST", "PRICE", "IATA_ZONE", "VALID_FROM", "VALID_TO", "ACTIVE", "ARCHIVED", "DELETED", "ENTRY_TS", "DONE_BY_PER_ID", "SYSTEM_MESSAGE", "REV_MESSAGE", "MAX_CONNECTION_ID") AS + SELECT + CONNECTION_STEM_ID, + CONNECTION_ID, + AIRPORT_STEM_ID_ORG, + AIRPORT_STEM_ID_DST, + PRICE, + IATA_ZONE, + VALID_FROM, + VALID_TO, + ACTIVE, + ARCHIVED, + DELETED, + ENTRY_TS, + DONE_BY_PER_ID, + SYSTEM_MESSAGE, + REV_MESSAGE, + MAX_CONNECTION_ID + FROM + T_CONNECTIONS C, + ( + SELECT + MAX(CONNECTION_ID) MAX_CONNECTION_ID + FROM + T_CONNECTIONS + GROUP BY + CONNECTION_STEM_ID + ) + MAX_C + WHERE + C.CONNECTION_ID = MAX_C.MAX_CONNECTION_ID + AND C.DELETED = 'N'; + + CREATE OR REPLACE EDITIONABLE TRIGGER "IOFU_V_CONNECTIONS" + INSTEAD OF UPDATE ON V_CONNECTIONS + REFERENCING NEW AS UPDATEDROW OLD AS OLDROW + FOR EACH ROW +DECLARE + L_CONNECTION_ID T_CONNECTIONS.CONNECTION_ID%TYPE; + L_MSG T_CONNECTIONS.SYSTEM_MESSAGE%TYPE; + L_TIMESTAMP TIMESTAMP := CURRENT_TIMESTAMP; + + L_CONNECTION_EXISTS NUMBER := 0; + E_DUPLICATE_CONNECTION EXCEPTION; +BEGIN + + IF ( + (:UPDATEDROW.AIRPORT_STEM_ID_ORG IS NOT NULL AND + ((:OLDROW.AIRPORT_STEM_ID_ORG IS NOT NULL AND :UPDATEDROW.AIRPORT_STEM_ID_ORG != :OLDROW.AIRPORT_STEM_ID_ORG) + OR :OLDROW.AIRPORT_STEM_ID_ORG IS NULL)) OR + + (:UPDATEDROW.AIRPORT_STEM_ID_DST IS NOT NULL AND + ((:OLDROW.AIRPORT_STEM_ID_DST IS NOT NULL AND :UPDATEDROW.AIRPORT_STEM_ID_DST != :OLDROW.AIRPORT_STEM_ID_DST) + OR :OLDROW.AIRPORT_STEM_ID_DST IS NULL)) OR + + (:UPDATEDROW.PRICE IS NOT NULL AND + ((:OLDROW.PRICE IS NOT NULL AND :UPDATEDROW.PRICE != :OLDROW.PRICE) + OR :OLDROW.PRICE IS NULL)) OR + + (:UPDATEDROW.IATA_ZONE IS NOT NULL AND + ((:OLDROW.IATA_ZONE IS NOT NULL AND :UPDATEDROW.IATA_ZONE != :OLDROW.IATA_ZONE) + OR :OLDROW.IATA_ZONE IS NULL)) OR + + (:UPDATEDROW.VALID_FROM IS NOT NULL AND + ((:OLDROW.VALID_FROM IS NOT NULL AND :UPDATEDROW.VALID_FROM != :OLDROW.VALID_FROM) + OR :OLDROW.VALID_FROM IS NULL)) OR + + (:UPDATEDROW.VALID_TO IS NOT NULL AND + ((:OLDROW.VALID_TO IS NOT NULL AND :UPDATEDROW.VALID_TO != :OLDROW.VALID_TO) + OR :OLDROW.VALID_TO IS NULL)) OR + + + (:UPDATEDROW.ACTIVE IS NOT NULL AND + ((:OLDROW.ACTIVE IS NOT NULL AND :UPDATEDROW.ACTIVE != :OLDROW.ACTIVE) + OR :OLDROW.ACTIVE IS NULL)) OR + + (:UPDATEDROW.ARCHIVED IS NOT NULL AND + ((:OLDROW.ARCHIVED IS NOT NULL AND :UPDATEDROW.ARCHIVED != :OLDROW.ARCHIVED) + OR :OLDROW.ARCHIVED IS NULL)) OR + + (:UPDATEDROW.DELETED IS NOT NULL AND + ((:OLDROW.DELETED IS NOT NULL AND :UPDATEDROW.DELETED != :OLDROW.DELETED) + OR :OLDROW.DELETED IS NULL)) + ) THEN + + + SELECT COUNT(*) INTO L_CONNECTION_EXISTS FROM + V_CONNECTIONS C + WHERE + C.AIRPORT_STEM_ID_ORG = :UPDATEDROW.AIRPORT_STEM_ID_ORG + AND C.AIRPORT_STEM_ID_DST = :UPDATEDROW.AIRPORT_STEM_ID_DST + AND C.CONNECTION_STEM_ID != :UPDATEDROW.CONNECTION_STEM_ID; + + /* IF (L_CONNECTION_EXISTS > 0) THEN + RAISE E_DUPLICATE_CONNECTION; + END IF; + */ + + + END IF; + + SELECT SQ_CONNECTIONS.NEXTVAL INTO L_CONNECTION_ID FROM DUAL; + SELECT USER INTO L_MSG FROM DUAL; + + L_MSG := L_MSG || ' : connection update ' || SYSDATE; + +INSERT INTO T_CONNECTIONS + ( + CONNECTION_STEM_ID, + CONNECTION_ID, + AIRPORT_STEM_ID_ORG, + AIRPORT_STEM_ID_DST, + PRICE, + IATA_ZONE, + VALID_FROM, + VALID_TO, + ACTIVE, + ARCHIVED, + DELETED, + ENTRY_TS, + DONE_BY_PER_ID, + SYSTEM_MESSAGE, + REV_MESSAGE + ) + VALUES + ( + :OLDROW.CONNECTION_STEM_ID, + L_CONNECTION_ID, + NVL(:UPDATEDROW.AIRPORT_STEM_ID_ORG,:OLDROW.AIRPORT_STEM_ID_ORG), + NVL(:UPDATEDROW.AIRPORT_STEM_ID_DST,:OLDROW.AIRPORT_STEM_ID_DST), + NVL(:UPDATEDROW.PRICE,:OLDROW.PRICE), + NVL(:UPDATEDROW.IATA_ZONE,:OLDROW.IATA_ZONE), + NVL(:UPDATEDROW.VALID_FROM,:OLDROW.VALID_FROM), + NVL(:UPDATEDROW.VALID_TO,:OLDROW.VALID_TO), + NVL(:UPDATEDROW.ACTIVE,:OLDROW.ACTIVE), + 'N', + 'N', + L_TIMESTAMP, + :UPDATEDROW.DONE_BY_PER_ID, + NVL(:UPDATEDROW.SYSTEM_MESSAGE, L_MSG), + :UPDATEDROW.REV_MESSAGE + ); + + PKG_LOG.debug('connection ' || L_CONNECTION_ID || ' updated. ','IOFU_V_CONNECTIONS'); + +EXCEPTION + WHEN OTHERS THEN + PKG_LOG.error( ' unexpeted error while executing INSTEAD OF INSERT on V_CONNECTIONS : ' || sqlerrm,'IOFU_V_CONNECTIONS'); + RAISE; +END IOFU_V_CONNECTIONS; + +/ +ALTER TRIGGER "IOFU_V_CONNECTIONS" ENABLE; + + CREATE OR REPLACE EDITIONABLE TRIGGER "IOFI_V_CONNECTIONS" + INSTEAD OF INSERT ON V_CONNECTIONS + REFERENCING NEW AS NEWROW + FOR EACH ROW +DECLARE + L_CONNECTION_ID T_CONNECTIONS.CONNECTION_ID%TYPE; + L_MSG T_CONNECTIONS.SYSTEM_MESSAGE%TYPE; + L_TIMESTAMP TIMESTAMP := CURRENT_TIMESTAMP; + + L_CONNECTION_EXISTS NUMBER := 0; + E_DUPLICATE_CONNECTION EXCEPTION; +BEGIN + + SELECT SQ_CONNECTIONS.NEXTVAL INTO L_CONNECTION_ID FROM DUAL; + SELECT USER INTO L_MSG FROM DUAL; + + SELECT COUNT(*) INTO L_CONNECTION_EXISTS FROM + V_CONNECTIONS C + WHERE + C.AIRPORT_STEM_ID_ORG = :NEWROW.AIRPORT_STEM_ID_ORG + AND C.AIRPORT_STEM_ID_DST = :NEWROW.AIRPORT_STEM_ID_DST + AND C.IATA_ZONE = :NEWROW.IATA_ZONE + AND (c.valid_to is null or c.valid_to> :NEWROW.valid_from); + +/* + IF (L_CONNECTION_EXISTS > 0) THEN + RAISE E_DUPLICATE_CONNECTION; + END IF; +*/ + IF (L_CONNECTION_EXISTS = 0) THEN + L_MSG := L_MSG || ' : connection insert ' || SYSDATE; + INSERT INTO T_CONNECTION_STEMS (CONNECTION_STEM_ID) VALUES (L_CONNECTION_ID); + + INSERT INTO T_CONNECTIONS + ( + CONNECTION_STEM_ID, + CONNECTION_ID, + AIRPORT_STEM_ID_ORG, + AIRPORT_STEM_ID_DST, + PRICE, + IATA_ZONE, + VALID_FROM, + VALID_TO, + ACTIVE, + ARCHIVED, + DELETED, + ENTRY_TS, + DONE_BY_PER_ID, + SYSTEM_MESSAGE, + REV_MESSAGE + ) + VALUES + ( + L_CONNECTION_ID, + L_CONNECTION_ID, + :NEWROW.AIRPORT_STEM_ID_ORG, + :NEWROW.AIRPORT_STEM_ID_DST, + :NEWROW.PRICE, + :NEWROW.IATA_ZONE, + :NEWROW.VALID_FROM, + :NEWROW.VALID_TO, + :NEWROW.ACTIVE, + 'N', + 'N', + L_TIMESTAMP, + :NEWROW.DONE_BY_PER_ID, + :NEWROW.SYSTEM_MESSAGE, + null + ); + + PKG_LOG.debug('connection ' || L_CONNECTION_ID || ' added. ','IOFI_V_CONNECTIONS'); + end if; +EXCEPTION + WHEN OTHERS THEN + PKG_LOG.error( ' unexpeted error while executing INSTEAD OF INSERT on V_CONNECTIONS : ' || sqlerrm,'IOFI_V_CONNECTIONS'); + RAISE; +END IOFI_V_CONNECTIONS; + +/ +ALTER TRIGGER "IOFI_V_CONNECTIONS" ENABLE; diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/59_RIGD-2953_V_LIVE_CONNECTIONS.sql b/e-rights-common/src/main/database/release/archive/3.0.0/59_RIGD-2953_V_LIVE_CONNECTIONS.sql new file mode 100644 index 0000000..64d8520 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/59_RIGD-2953_V_LIVE_CONNECTIONS.sql @@ -0,0 +1,23 @@ + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "V_LIVE_CONNECTIONS" ("CONNECTION_STEM_ID", "CONNECTION_ID", "AIRPORT_STEM_ID_ORG", "AIRPORT_STEM_ID_DST", "PRICE", "IATA_ZONE", "VALID_FROM", "VALID_TO", "ACTIVE", "ARCHIVED", "DELETED", "ENTRY_TS", "DONE_BY_PER_ID", "SYSTEM_MESSAGE", "REV_MESSAGE", "MAX_CONNECTION_ID") AS + SELECT + CONNECTION_STEM_ID, + CONNECTION_ID, + AIRPORT_STEM_ID_ORG, + AIRPORT_STEM_ID_DST, + PRICE, + IATA_ZONE, + VALID_FROM, + VALID_TO, + ACTIVE, + ARCHIVED, + DELETED, + ENTRY_TS, + DONE_BY_PER_ID, + SYSTEM_MESSAGE, + REV_MESSAGE, + MAX_CONNECTION_ID + FROM + V_CONNECTIONS + WHERE + ARCHIVED = 'N'; diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/60_RIGD-2953_PKG_ROUTE_CALCULATION.pks.sql b/e-rights-common/src/main/database/release/archive/3.0.0/60_RIGD-2953_PKG_ROUTE_CALCULATION.pks.sql new file mode 100644 index 0000000..631c108 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/60_RIGD-2953_PKG_ROUTE_CALCULATION.pks.sql @@ -0,0 +1,15 @@ +create or replace PACKAGE PKG_ROUTE_CALCULATION AS + L_ROUTE VARCHAR2(2000); + L_CONN_LIST VARCHAR2(2000); + FUNCTION F_GET_ROUTE RETURN VARCHAR2; + FUNCTION F_GET_CONNECTION RETURN VARCHAR2; + FUNCTION F_FIND_IATA_FARE (P_ORG_AIRPORT_ID NUMBER, P_DST_AIRPORT_ID NUMBER, P_DATE DATE) RETURN NUMBER; + FUNCTION F_FIND_IATA_FARE_BY_CODE (P_ORG_AIRPORT_IATA_CODE VARCHAR2, P_DST_AIRPORT_IATA_CODE VARCHAR2, P_DATE DATE) RETURN NUMBER; + PROCEDURE p_find_iata_fare_by_code ( + p_org_airport_iata_code IN VARCHAR2, + p_dst_airport_iata_code IN VARCHAR2, + p_date IN DATE, + p_fare OUT NUMBER + ); +-- PROCEDURE P_AUTOMATIC_ROUTE_CALCULATION(P_SCOPE NUMBER); +END PKG_ROUTE_CALCULATION; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/61_RIGD-2953_PKG_ROUTE_CALCULATION.pkb.sql b/e-rights-common/src/main/database/release/archive/3.0.0/61_RIGD-2953_PKG_ROUTE_CALCULATION.pkb.sql new file mode 100644 index 0000000..75f5bdb --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/61_RIGD-2953_PKG_ROUTE_CALCULATION.pkb.sql @@ -0,0 +1,1199 @@ +create or replace PACKAGE BODY PKG_ROUTE_CALCULATION AS + + +FUNCTION F_GET_ROUTE RETURN VARCHAR2 IS + +BEGIN + +RETURN L_ROUTE; + +END F_GET_ROUTE; + + +FUNCTION F_GET_CONNECTION RETURN VARCHAR2 IS + +BEGIN + +RETURN L_CONN_LIST; + +END F_GET_CONNECTION; + + FUNCTION f_find_iata_fare_by_code ( + p_org_airport_iata_code VARCHAR2, + p_dst_airport_iata_code VARCHAR2, + p_date DATE + ) RETURN NUMBER IS + ln_org_airport_id NUMBER; + ln_dst_airport_id NUMBER; + BEGIN + SELECT + MAX(airport_stem_id) + INTO ln_org_airport_id + FROM + v_live_airports + WHERE + iata_code = p_org_airport_iata_code + AND active = 'Y'; + + SELECT + MAX(airport_stem_id) + INTO ln_dst_airport_id + FROM + v_live_airports + WHERE + iata_code = p_dst_airport_iata_code + AND active = 'Y'; + + RETURN f_find_iata_fare(ln_org_airport_id, ln_dst_airport_id, p_date); + END f_find_iata_fare_by_code; + + PROCEDURE p_find_iata_fare_by_code ( + p_org_airport_iata_code IN VARCHAR2, + p_dst_airport_iata_code IN VARCHAR2, + p_date IN DATE, + p_fare OUT NUMBER + ) IS + ln_fare NUMBER; + BEGIN + -- Check if an existing rate has already been defined + BEGIN + SELECT + amount + INTO ln_fare + FROM + ( + SELECT + amount + FROM + posting_allowance_default + WHERE + posting_allowance_type = 'ANNUAL TRAVEL' + AND posting_allowance_req_type = 'INITIAL' + AND exercise_year = EXTRACT(YEAR FROM p_date) + AND latest = 'Y' + AND iata_code_from = p_org_airport_iata_code + AND iata_code_to = p_dst_airport_iata_code + ORDER BY + created_at DESC + ) + WHERE + ROWNUM = 1; + + p_fare := ln_fare; + RETURN; + EXCEPTION + WHEN no_data_found THEN + NULL; + END; + + -- If no existing fare found, let's compute it + ln_fare := f_find_iata_fare_by_code(p_org_airport_iata_code, p_dst_airport_iata_code, p_date); + + -- And store this fare for the next call + INSERT INTO posting_allowance_default ( + posting_allowance_default_id, + posting_allowance_type, + posting_allowance_req_type, + amount, + currency, + exercise_year, + latest, + source_data, + created_at, + created_by, + updated_by, + updated_at, + iata_code_from, + iata_code_to + ) VALUES ( + seq_posting_allowance_default.NEXTVAL, + 'ANNUAL TRAVEL', + 'INITIAL', + ln_fare, + 'EUR', + EXTRACT(YEAR FROM p_date), + 'Y', + 'eRights', + sysdate, + 0, + 0, + sysdate, + p_org_airport_iata_code, + p_dst_airport_iata_code + ); + + p_fare := ln_fare; + COMMIT; + END p_find_iata_fare_by_code; +FUNCTION F_FIND_IATA_FARE (P_ORG_AIRPORT_ID NUMBER, P_DST_AIRPORT_ID NUMBER, P_DATE DATE) RETURN NUMBER IS + +TYPE CUR_TYP IS REF CURSOR; + +C_CUR CUR_TYP; +L_STRSQL VARCHAR2(4000); +L_RECORDCOUNT NUMBER; +L_RTCOUNT NUMBER; +L_TOTAL NUMBER; +L_DATEFARE DATE; +L_ORG VARCHAR2(3); +L_DST VARCHAR2(3); + +L_FINAL_TOTAL number:=0; +L_ROUTE_TMP varchar(2000); +L_CONN_LIST_TMP varchar(2000); + +BEGIN + +L_TOTAL := NULL; +L_ROUTE := NULL; +L_CONN_LIST := NULL; + +L_ROUTE_TMP := NULL; +L_CONN_LIST_TMP := NULL; + +if(P_DATE is null) then + +L_DATEFARE := to_date(sysdate,'DD/MM/YYYY'); + +else + +L_DATEFARE := P_DATE; + +end if; + + +-- get iata_code fpr each airport + +BEGIN + +SELECT IATA_CODE INTO L_ORG FROM V_LIVE_AIRPORTS WHERE AIRPORT_STEM_ID = P_ORG_AIRPORT_ID; + +SELECT IATA_CODE INTO L_DST FROM V_LIVE_AIRPORTS WHERE AIRPORT_STEM_ID = P_DST_AIRPORT_ID; + +EXCEPTION WHEN NO_DATA_FOUND THEN + +L_ROUTE := 'AIRPORT NOT FOUND OR WITHOUT IATA CODE'; + +RETURN -1; + +END; + + +--CHECK IF ORG IS THE SAME OF DST + +IF(L_ORG = L_DST) THEN + +L_ROUTE := ''; +L_CONN_LIST := ''; + +RETURN 0; + +END IF; + + +--CHECK IF THERE IS FARE FOR THIS ORIGIN IN THAT DATE + +SELECT count(*) INTO L_RECORDCOUNT + +FROM V_LIVE_CONNECTIONS A1 + +WHERE A1.AIRPORT_STEM_ID_ORG = P_ORG_AIRPORT_ID + +AND ACTIVE='Y' + +and ( + +L_DATEFARE between A1.VALID_FROM and A1.VALID_TO + +or (L_DATEFARE >= A1.VALID_FROM and A1.VALID_TO is null) + +); + + +IF(L_RECORDCOUNT = 0) THEN + +L_ROUTE := 'NO ORG in IATA_FARES:'||L_ORG||'-'||L_DST; +L_CONN_LIST := ''; + +RETURN -1; + +END IF; + + + +--CHECK IF THERE IS FARE FOR THIS DESTINATION IN THAT DATE + +SELECT count(*) INTO L_RECORDCOUNT + +FROM V_LIVE_CONNECTIONS A1 + +WHERE A1.AIRPORT_STEM_ID_DST = P_DST_AIRPORT_ID + +and + +( + +L_DATEFARE between A1.VALID_FROM and A1.VALID_TO + +or (L_DATEFARE >= A1.VALID_FROM and A1.VALID_TO is null) + +); + +IF(L_RECORDCOUNT = 0) THEN + +L_ROUTE := 'NO DST in IATA_FARES:'||L_ORG||'-'||L_DST; +L_CONN_LIST := ''; + +RETURN -2; + +END IF; + + +-- DIRECT FLIGHT +L_STRSQL := 'SELECT DISTINCT '; +L_STRSQL := L_STRSQL || ' A.AIRPORT_STEM_ID_ORG || '','' || A.AIRPORT_STEM_ID_DST'; +L_STRSQL := L_STRSQL || ' ,MIN(A.PRICE) TOTAL'; +L_STRSQL := L_STRSQL || ' ,A.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' FROM '; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) A'; +L_STRSQL := L_STRSQL || ' WHERE A.AIRPORT_STEM_ID_ORG = ' || P_ORG_AIRPORT_ID; +L_STRSQL := L_STRSQL || ' AND A.AIRPORT_STEM_ID_DST = ' || P_DST_AIRPORT_ID; +L_STRSQL := L_STRSQL || ' AND A.IATA_ZONE NOT IN (''5C'',''5B'',''7A'',''7B'',''7C'',''7D'',''8A'',''8B'',''8D'',''8E'',''8F'',''8H'',''8I'',''8J'',''8L'')'; +L_STRSQL := L_STRSQL || ' GROUP BY A.AIRPORT_STEM_ID_ORG ,A.AIRPORT_STEM_ID_DST'; +L_STRSQL := L_STRSQL || ' ,A.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ORDER BY TOTAL ASC'; + + + +--DBMS_OUTPUT.put_line ('DIRECT FLIGHT'); + +OPEN C_CUR FOR L_STRSQL; + +FETCH C_CUR INTO L_ROUTE_TMP, L_TOTAL, L_CONN_LIST_TMP; + +IF C_CUR%NOTFOUND THEN + +L_TOTAL := NULL; +L_ROUTE_TMP := NULL; +L_CONN_LIST_TMP := NULL; + +END IF; + +CLOSE C_CUR; + +IF(L_TOTAL IS NOT NULL) THEN + + L_ROUTE := L_ROUTE_TMP; + L_CONN_LIST := L_CONN_LIST_TMP; + RETURN L_TOTAL; + +END IF; +/* +IF(L_TOTAL IS NOT NULL) THEN + if (L_FINAL_TOTAL = 0 or L_TOTAL < L_FINAL_TOTAL) then + L_FINAL_TOTAL := L_TOTAL; + L_ROUTE := L_ROUTE_TMP; + L_CONN_LIST := L_CONN_LIST_TMP; + end if; +END IF; +*/ + +-- DIRECT FLIGHT FROM/TO A GATWAY (SAME COUNTRY) + +L_STRSQL := 'SELECT DISTINCT '; +L_STRSQL := L_STRSQL || ' A.AIRPORT_STEM_ID_ORG || '','' || A.AIRPORT_STEM_ID_DST || '','' || B.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' ,MIN(A.PRICE + B.PRICE) TOTAL'; +L_STRSQL := L_STRSQL || ' ,A.CONNECTION_STEM_ID || '','' || B.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM '; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND D.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) A,'; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND O.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) B'; +L_STRSQL := L_STRSQL || ' WHERE A.AIRPORT_STEM_ID_DST = B.AIRPORT_STEM_ID_ORG'; +L_STRSQL := L_STRSQL || ' AND A.AIRPORT_STEM_ID_ORG = ' || P_ORG_AIRPORT_ID; +L_STRSQL := L_STRSQL || ' AND B.AIRPORT_STEM_ID_DST = ' || P_DST_AIRPORT_ID; +L_STRSQL := L_STRSQL || ' AND ((A.IATA_ZONE=''40'''; +L_STRSQL := L_STRSQL || ' AND B.IATA_ZONE NOT IN (''5C'',''7A'',''7B'',''7C'',''7D'',''8A'',''8B'',''8D'',''8E'',''8F'',''8H'',''8I'',''8J'',''8L''))'; +L_STRSQL := L_STRSQL || ' OR (B.IATA_ZONE=''40'''; +L_STRSQL := L_STRSQL || ' AND A.IATA_ZONE NOT IN (''5C'',''7A'',''7B'',''7C'',''7D'',''8A'',''8B'',''8D'',''8E'',''8F'',''8H'',''8I'',''8J'',''8L'')))'; +L_STRSQL := L_STRSQL || ' GROUP BY A.AIRPORT_STEM_ID_ORG ,A.AIRPORT_STEM_ID_DST, B.AIRPORT_STEM_ID_DST'; +L_STRSQL := L_STRSQL || ' ,A.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ,B.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ORDER BY TOTAL ASC'; + +--DBMS_OUTPUT.put_line ('DIRECT FLIGHT FROM/TO A GATWAY (SAME COUNTRY)'); + +OPEN C_CUR FOR L_STRSQL; + +FETCH C_CUR INTO L_ROUTE_TMP, L_TOTAL, L_CONN_LIST_TMP; + +IF C_CUR%NOTFOUND THEN + +L_TOTAL := NULL; +L_ROUTE_TMP := NULL; +L_CONN_LIST_TMP := NULL; + +END IF; + +CLOSE C_CUR; +IF(L_TOTAL IS NOT NULL) THEN + + L_ROUTE := L_ROUTE_TMP; + L_CONN_LIST := L_CONN_LIST_TMP; + RETURN L_TOTAL; + +END IF; +/* +IF(L_TOTAL IS NOT NULL) THEN + if (L_FINAL_TOTAL = 0 or L_TOTAL < L_FINAL_TOTAL) then + L_FINAL_TOTAL := L_TOTAL; + L_ROUTE := L_ROUTE_TMP; + L_CONN_LIST := L_CONN_LIST_TMP; + end if; +END IF; +*/ + + + + +-- DIRECT FLIGHT FROM/TO A GATWAY (SAME ZONE) + +L_STRSQL := 'SELECT DISTINCT '; +L_STRSQL := L_STRSQL || ' A.AIRPORT_STEM_ID_ORG || '','' || A.AIRPORT_STEM_ID_DST || '','' || B.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' ,MIN(A.PRICE + B.PRICE) TOTAL'; +L_STRSQL := L_STRSQL || ' ,A.CONNECTION_STEM_ID || '','' || B.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM '; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND D.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) A,'; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND O.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) B'; +L_STRSQL := L_STRSQL || ' WHERE A.AIRPORT_STEM_ID_ORG = ' || P_ORG_AIRPORT_ID; +L_STRSQL := L_STRSQL || ' AND A.AIRPORT_STEM_ID_DST = B.AIRPORT_STEM_ID_ORG'; +L_STRSQL := L_STRSQL || ' AND B.AIRPORT_STEM_ID_DST = ' || P_DST_AIRPORT_ID; +L_STRSQL := L_STRSQL || ' AND ((A.IATA_ZONE IN (''1A'',''1B'',''1C'',''1D'',''2A'',''2B'',''2C'',''3A'',''3B'',''3C'',''3D'',''3H'',''40'')'; +L_STRSQL := L_STRSQL || ' AND B.IATA_ZONE NOT IN (''5C'',''7A'',''7B'',''7C'',''7D'',''8A'',''8B'',''8D'',''8E'',''8F'',''8H'',''8I'',''8J'',''8L''))'; +L_STRSQL := L_STRSQL || ' OR (B.IATA_ZONE IN (''1A'',''1B'',''1C'',''1D'',''2A'',''2B'',''2C'',''3A'',''3B'',''3C'',''3D'',''3H'',''40'')'; +L_STRSQL := L_STRSQL || ' AND A.IATA_ZONE NOT IN (''5C'',''7A'',''7B'',''7C'',''7D'',''8A'',''8B'',''8D'',''8E'',''8F'',''8H'',''8I'',''8J'',''8L'')))'; +L_STRSQL := L_STRSQL || ' GROUP BY A.AIRPORT_STEM_ID_ORG ,A.AIRPORT_STEM_ID_DST, B.AIRPORT_STEM_ID_DST'; +L_STRSQL := L_STRSQL || ' ,A.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ,B.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ORDER BY TOTAL ASC'; + +--DBMS_OUTPUT.put_line ('DIRECT FLIGHT FROM/TO A GATWAY (SAME ZONE)'); + +OPEN C_CUR FOR L_STRSQL; + +FETCH C_CUR INTO L_ROUTE_TMP, L_TOTAL, L_CONN_LIST_TMP; + +IF C_CUR%NOTFOUND THEN + +L_TOTAL := NULL; +L_ROUTE_TMP := NULL; +L_CONN_LIST_TMP := NULL; + +END IF; + +CLOSE C_CUR; +IF(L_TOTAL IS NOT NULL) THEN + + L_ROUTE := L_ROUTE_TMP; + L_CONN_LIST := L_CONN_LIST_TMP; + RETURN L_TOTAL; + +END IF; +/* +IF(L_TOTAL IS NOT NULL) THEN + if (L_FINAL_TOTAL = 0 or L_TOTAL < L_FINAL_TOTAL) then + L_FINAL_TOTAL := L_TOTAL; + L_ROUTE := L_ROUTE_TMP; + L_CONN_LIST := L_CONN_LIST_TMP; + end if; +END IF; +*/ + + + +-- GATWAYS BETWEEN COUNTRIES AND INSIDE THE SAME COUNTRY (ORG AND DST) + +L_STRSQL := 'SELECT DISTINCT '; +L_STRSQL := L_STRSQL || ' A.AIRPORT_STEM_ID_ORG || '','' || A.AIRPORT_STEM_ID_DST || '','' || B.AIRPORT_STEM_ID_DST || '','' || C.AIRPORT_STEM_ID_DST'; +L_STRSQL := L_STRSQL || ' ,MIN(A.PRICE + B.PRICE + C.PRICE) TOTAL'; +L_STRSQL := L_STRSQL || ' ,A.CONNECTION_STEM_ID || '','' || B.CONNECTION_STEM_ID || '','' || C.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' FROM '; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND D.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) A,'; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND O.ACTIVE = ''Y'' AND D.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) B,'; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND O.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) C'; +L_STRSQL := L_STRSQL || ' WHERE A.AIRPORT_STEM_ID_ORG = ' || P_ORG_AIRPORT_ID; +L_STRSQL := L_STRSQL || ' AND A.AIRPORT_STEM_ID_DST = B.AIRPORT_STEM_ID_ORG'; +L_STRSQL := L_STRSQL || ' AND B.AIRPORT_STEM_ID_DST = C.AIRPORT_STEM_ID_ORG'; +L_STRSQL := L_STRSQL || ' AND C.AIRPORT_STEM_ID_DST = ' || P_DST_AIRPORT_ID; +--L_STRSQL := L_STRSQL || ' AND A.IATA_ZONE = ''40'' AND C.IATA_ZONE= ''40'' '; +L_STRSQL := L_STRSQL || ' AND A.IATA_ZONE = ''40'' AND C.IATA_ZONE= ''40'' AND B.IATA_ZONE NOT IN (''5C'',''7A'',''7B'',''7C'',''7D'',''8A'',''8B'',''8D'',''8E'',''8F'',''8H'',''8I'',''8J'',''8L'')'; +L_STRSQL := L_STRSQL || ' GROUP BY A.AIRPORT_STEM_ID_ORG ,A.AIRPORT_STEM_ID_DST, B.AIRPORT_STEM_ID_DST, C.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' ,A.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ,B.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ,C.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ORDER BY TOTAL ASC'; + + +--DBMS_OUTPUT.put_line ('GATWAYS BETWEEN COUNTRIES AND INSIDE THE SAME COUNTRY (ORG AND DST)'); + +OPEN C_CUR FOR L_STRSQL; + +FETCH C_CUR INTO L_ROUTE_TMP, L_TOTAL, L_CONN_LIST_TMP; + +IF C_CUR%NOTFOUND THEN + +L_TOTAL := NULL; +L_ROUTE_TMP := NULL; +L_CONN_LIST_TMP := NULL; + +END IF; + +CLOSE C_CUR; +IF(L_TOTAL IS NOT NULL) THEN + + L_ROUTE := L_ROUTE_TMP; + L_CONN_LIST := L_CONN_LIST_TMP; + RETURN L_TOTAL; + +END IF; +/* +IF(L_TOTAL IS NOT NULL) THEN + if (L_FINAL_TOTAL = 0 or L_TOTAL < L_FINAL_TOTAL) then + L_FINAL_TOTAL := L_TOTAL; + L_ROUTE := L_ROUTE_TMP; + L_CONN_LIST := L_CONN_LIST_TMP; + end if; +END IF; +*/ + + +-- GATWAYS BETWEEN ZONES AND GATWAY (SAME COUNTRY) + +L_STRSQL := 'SELECT DISTINCT '; +L_STRSQL := L_STRSQL || ' A.AIRPORT_STEM_ID_ORG || '','' || A.AIRPORT_STEM_ID_DST || '','' || B.AIRPORT_STEM_ID_DST || '','' || C.AIRPORT_STEM_ID_DST'; +L_STRSQL := L_STRSQL || ' ,MIN(A.PRICE + B.PRICE + C.PRICE) TOTAL'; +L_STRSQL := L_STRSQL || ' ,A.CONNECTION_STEM_ID || '','' || B.CONNECTION_STEM_ID || '','' || C.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' FROM '; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND D.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) A,'; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND O.ACTIVE = ''Y'' AND D.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) B,'; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND O.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) C'; +L_STRSQL := L_STRSQL || ' WHERE A.AIRPORT_STEM_ID_ORG = ' || P_ORG_AIRPORT_ID; +L_STRSQL := L_STRSQL || ' AND A.AIRPORT_STEM_ID_DST = B.AIRPORT_STEM_ID_ORG'; +L_STRSQL := L_STRSQL || ' AND B.AIRPORT_STEM_ID_DST = C.AIRPORT_STEM_ID_ORG'; +L_STRSQL := L_STRSQL || ' AND C.AIRPORT_STEM_ID_DST = ' || P_DST_AIRPORT_ID; +L_STRSQL := L_STRSQL || ' AND ((A.IATA_ZONE IN (''1A'',''1B'',''1C'',''1D'',''2A'',''2B'',''2C'',''3A'',''3B'',''3C'',''3D'',''3H'',''40'')'; +L_STRSQL := L_STRSQL || ' AND C.IATA_ZONE= ''40'')'; +L_STRSQL := L_STRSQL || ' OR (C.IATA_ZONE IN (''1A'',''1B'',''1C'',''1D'',''2A'',''2B'',''2C'',''3A'',''3B'',''3C'',''3D'',''3H'',''40'')'; +L_STRSQL := L_STRSQL || ' AND A.IATA_ZONE= ''40''))'; +L_STRSQL := L_STRSQL || ' GROUP BY A.AIRPORT_STEM_ID_ORG ,A.AIRPORT_STEM_ID_DST, B.AIRPORT_STEM_ID_DST, C.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' ,A.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ,B.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ,C.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ORDER BY TOTAL ASC'; + + +--DBMS_OUTPUT.put_line ('GATWAYS BETWEEN ZONES AND GATWAY (SAME COUNTRY)'); + +OPEN C_CUR FOR L_STRSQL; + +FETCH C_CUR INTO L_ROUTE_TMP, L_TOTAL, L_CONN_LIST_TMP; + +IF C_CUR%NOTFOUND THEN + +L_TOTAL := NULL; +L_ROUTE_TMP := NULL; +L_CONN_LIST_TMP := NULL; + +END IF; + +CLOSE C_CUR; +IF(L_TOTAL IS NOT NULL) THEN + + L_ROUTE := L_ROUTE_TMP; + L_CONN_LIST := L_CONN_LIST_TMP; + RETURN L_TOTAL; + +END IF; +/* +IF(L_TOTAL IS NOT NULL) THEN + if (L_FINAL_TOTAL = 0 or L_TOTAL < L_FINAL_TOTAL) then + L_FINAL_TOTAL := L_TOTAL; + L_ROUTE := L_ROUTE_TMP; + L_CONN_LIST := L_CONN_LIST_TMP; + end if; +END IF; +*/ + + +-- GATWAYS BETWEEN ZONES AND GATWAYS IN SAME ZONE + + + +L_STRSQL := 'SELECT DISTINCT '; +L_STRSQL := L_STRSQL || ' A.AIRPORT_STEM_ID_ORG || '','' || A.AIRPORT_STEM_ID_DST || '','' || B.AIRPORT_STEM_ID_DST || '','' || C.AIRPORT_STEM_ID_DST'; +L_STRSQL := L_STRSQL || ' ,MIN(A.PRICE + B.PRICE + C.PRICE) TOTAL'; +L_STRSQL := L_STRSQL || ' ,A.CONNECTION_STEM_ID || '','' || B.CONNECTION_STEM_ID || '','' || C.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' FROM '; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND D.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) A,'; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND O.ACTIVE = ''Y'' AND D.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) B,'; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND O.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) C'; +L_STRSQL := L_STRSQL || ' WHERE A.AIRPORT_STEM_ID_ORG = ' || P_ORG_AIRPORT_ID; +L_STRSQL := L_STRSQL || ' AND A.AIRPORT_STEM_ID_DST = B.AIRPORT_STEM_ID_ORG'; +L_STRSQL := L_STRSQL || ' AND B.AIRPORT_STEM_ID_DST = C.AIRPORT_STEM_ID_ORG'; +L_STRSQL := L_STRSQL || ' AND C.AIRPORT_STEM_ID_DST = ' || P_DST_AIRPORT_ID; +L_STRSQL := L_STRSQL || ' AND A.IATA_ZONE IN (''1A'',''1B'',''1C'',''1D'',''2A'',''2B'',''2C'',''3A'',''3B'',''3C'',''3D'',''3H'',''40'')'; +L_STRSQL := L_STRSQL || ' AND C.IATA_ZONE IN (''1A'',''1B'',''1C'',''1D'',''2A'',''2B'',''2C'',''3A'',''3B'',''3C'',''3D'',''3H'',''40'')'; +L_STRSQL := L_STRSQL || ' GROUP BY A.AIRPORT_STEM_ID_ORG ,A.AIRPORT_STEM_ID_DST, B.AIRPORT_STEM_ID_DST, C.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' ,A.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ,B.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ,C.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ORDER BY TOTAL ASC'; + + + +--DBMS_OUTPUT.put_line ('GATWAYS BETWEEN ZONES AND GATWAYS IN SAME ZONE'); + +OPEN C_CUR FOR L_STRSQL; + +FETCH C_CUR INTO L_ROUTE_TMP, L_TOTAL, L_CONN_LIST_TMP; + +IF C_CUR%NOTFOUND THEN + +L_TOTAL := NULL; +L_ROUTE_TMP := NULL; +L_CONN_LIST_TMP := NULL; + +END IF; + +CLOSE C_CUR; +IF(L_TOTAL IS NOT NULL) THEN + + L_ROUTE := L_ROUTE_TMP; + L_CONN_LIST := L_CONN_LIST_TMP; + RETURN L_TOTAL; + +END IF; +/* +IF(L_TOTAL IS NOT NULL) THEN + if (L_FINAL_TOTAL = 0 or L_TOTAL < L_FINAL_TOTAL) then + L_FINAL_TOTAL := L_TOTAL; + L_ROUTE := L_ROUTE_TMP; + L_CONN_LIST := L_CONN_LIST_TMP; + end if; +END IF; +*/ + + + + + +-- GATWAYS BETWEEN ZONES AND GATWAYS IN ORG/DST (SAME ZONE) + + +L_STRSQL := 'SELECT DISTINCT '; +L_STRSQL := L_STRSQL || ' A.AIRPORT_STEM_ID_ORG || '','' || A.AIRPORT_STEM_ID_DST || '','' || B.AIRPORT_STEM_ID_DST || '','' || C.AIRPORT_STEM_ID_DST'; +L_STRSQL := L_STRSQL || ' ,MIN(A.PRICE + B.PRICE + C.PRICE) TOTAL'; +L_STRSQL := L_STRSQL || ' ,A.CONNECTION_STEM_ID || '','' || B.CONNECTION_STEM_ID || '','' || C.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' FROM '; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND D.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) A,'; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND O.ACTIVE = ''Y'' AND D.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) B,'; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND O.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) C'; +L_STRSQL := L_STRSQL || ' WHERE A.AIRPORT_STEM_ID_ORG = ' || P_ORG_AIRPORT_ID; +L_STRSQL := L_STRSQL || ' AND A.AIRPORT_STEM_ID_DST = B.AIRPORT_STEM_ID_ORG'; +L_STRSQL := L_STRSQL || ' AND B.AIRPORT_STEM_ID_DST = C.AIRPORT_STEM_ID_ORG'; +L_STRSQL := L_STRSQL || ' AND C.AIRPORT_STEM_ID_DST = ' || P_DST_AIRPORT_ID; +L_STRSQL := L_STRSQL || ' AND ((A.IATA_ZONE IN (''1A'',''1B'',''1C'',''1D'',''2A'',''2B'',''2C'',''3A'',''3B'',''3C'',''3D'',''3H'',''40'')'; +L_STRSQL := L_STRSQL || ' AND C.IATA_ZONE NOT IN (''5C'',''7A'',''7B'',''7C'',''7D'',''8A'',''8B'',''8D'',''8E'',''8F'',''8H'',''8I'',''8J'',''8L''))'; +L_STRSQL := L_STRSQL || ' OR (C.IATA_ZONE IN (''1A'',''1B'',''1C'',''1D'',''2A'',''2B'',''2C'',''3A'',''3B'',''3C'',''3D'',''3H'',''40'')'; +L_STRSQL := L_STRSQL || ' AND A.IATA_ZONE NOT IN (''5C'',''7A'',''7B'',''7C'',''7D'',''8A'',''8B'',''8D'',''8E'',''8F'',''8H'',''8I'',''8J'',''8L'')))'; +L_STRSQL := L_STRSQL || ' GROUP BY A.AIRPORT_STEM_ID_ORG ,A.AIRPORT_STEM_ID_DST, B.AIRPORT_STEM_ID_DST, C.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' ,A.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ,B.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ,C.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ORDER BY TOTAL ASC'; + + + +--DBMS_OUTPUT.put_line ('GATWAYS BETWEEN ZONES AND GATWAYS IN ORG/DST (SAME ZONE)'); + +OPEN C_CUR FOR L_STRSQL; + +FETCH C_CUR INTO L_ROUTE_TMP, L_TOTAL, L_CONN_LIST_TMP; + +IF C_CUR%NOTFOUND THEN + +L_TOTAL := NULL; +L_ROUTE_TMP := NULL; +L_CONN_LIST_TMP := NULL; + +END IF; + +CLOSE C_CUR; +IF(L_TOTAL IS NOT NULL) THEN + + L_ROUTE := L_ROUTE_TMP; + L_CONN_LIST := L_CONN_LIST_TMP; + RETURN L_TOTAL; + +END IF; +/* +IF(L_TOTAL IS NOT NULL) THEN + if (L_FINAL_TOTAL = 0 or L_TOTAL < L_FINAL_TOTAL) then + L_FINAL_TOTAL := L_TOTAL; + L_ROUTE := L_ROUTE_TMP; + L_CONN_LIST := L_CONN_LIST_TMP; + end if; +END IF; +*/ + + + +-- GATWAYS BETWEEN ZONES AND GATWAYS IN DIFFERENT ZONES + + + +L_STRSQL := 'SELECT DISTINCT '; +L_STRSQL := L_STRSQL || ' A.AIRPORT_STEM_ID_ORG || '','' || A.AIRPORT_STEM_ID_DST || '','' || B.AIRPORT_STEM_ID_DST || '','' || C.AIRPORT_STEM_ID_DST'; +L_STRSQL := L_STRSQL || ' ,MIN(A.PRICE + B.PRICE + C.PRICE) TOTAL'; +L_STRSQL := L_STRSQL || ' ,A.CONNECTION_STEM_ID || '','' || B.CONNECTION_STEM_ID || '','' || C.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' FROM '; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND D.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) A,'; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND O.ACTIVE = ''Y'' AND D.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) B,'; +L_STRSQL := L_STRSQL || ' (SELECT AIRPORT_STEM_ID_ORG, AIRPORT_STEM_ID_DST ,IATA_ZONE, PRICE '; +L_STRSQL := L_STRSQL || ' ,CC.CONNECTION_STEM_ID '; +L_STRSQL := L_STRSQL || ' FROM V_LIVE_CONNECTIONS CC, V_LIVE_AIRPORTS O , V_LIVE_AIRPORTS D WHERE '; +L_STRSQL := L_STRSQL || ' O.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_ORG AND D.AIRPORT_STEM_ID = CC.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' AND CC.ACTIVE = ''Y'' AND O.ACTIVE = ''Y'' '; +L_STRSQL := L_STRSQL || ' AND (''' || L_DATEFARE || ''' between VALID_FROM and VALID_TO or ( ''' || L_DATEFARE || ''' >= VALID_FROM and VALID_TO is null)) '; +L_STRSQL := L_STRSQL || ' ORDER BY PRICE) C'; +L_STRSQL := L_STRSQL || ' WHERE A.AIRPORT_STEM_ID_ORG = ' || P_ORG_AIRPORT_ID; +L_STRSQL := L_STRSQL || ' AND A.AIRPORT_STEM_ID_DST = B.AIRPORT_STEM_ID_ORG'; +L_STRSQL := L_STRSQL || ' AND B.AIRPORT_STEM_ID_DST = C.AIRPORT_STEM_ID_ORG'; +L_STRSQL := L_STRSQL || ' AND C.AIRPORT_STEM_ID_DST = ' || P_DST_AIRPORT_ID; +L_STRSQL := L_STRSQL || ' GROUP BY A.AIRPORT_STEM_ID_ORG ,A.AIRPORT_STEM_ID_DST, B.AIRPORT_STEM_ID_DST, C.AIRPORT_STEM_ID_DST '; +L_STRSQL := L_STRSQL || ' ,A.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ,B.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ,C.CONNECTION_STEM_ID'; +L_STRSQL := L_STRSQL || ' ORDER BY TOTAL ASC'; + + + +--DBMS_OUTPUT.put_line ('GATWAYS BETWEEN ZONES AND GATWAYS IN DIFFERENT ZONES'); + +OPEN C_CUR FOR L_STRSQL; + +FETCH C_CUR INTO L_ROUTE_TMP, L_TOTAL, L_CONN_LIST_TMP; + +IF C_CUR%NOTFOUND THEN + +L_TOTAL := NULL; +L_ROUTE_TMP := NULL; +L_CONN_LIST_TMP := NULL; + +END IF; + +CLOSE C_CUR; +IF(L_TOTAL IS NOT NULL) THEN + + L_ROUTE := L_ROUTE_TMP; + L_CONN_LIST := L_CONN_LIST_TMP; + RETURN L_TOTAL; + +END IF; +/* +IF(L_TOTAL IS NOT NULL) THEN + if (L_FINAL_TOTAL = 0 or L_TOTAL < L_FINAL_TOTAL) then + L_FINAL_TOTAL := L_TOTAL; + L_ROUTE := L_ROUTE_TMP; + L_CONN_LIST := L_CONN_LIST_TMP; + end if; +END IF; +*/ + +RETURN L_FINAL_TOTAL; + +L_ROUTE := 'NO ROUTE:'||L_ORG||'-'||L_DST; + +RETURN -4; + + +EXCEPTION + +WHEN OTHERS THEN + +DBMS_OUTPUT.put_line ('ERROR: ' || DBMS_UTILITY.FORMAT_ERROR_STACK); + +DBMS_OUTPUT.put_line ('SQL: ' || L_STRSQL); + +L_ROUTE := 'OTHERS:'||L_ORG||'-'||L_DST||':'||L_STRSQL; + +RETURN -5; + +/* + +-1 - NO ORG in IATA_FARES + +-2 - No DST in IATA_FARES + +-3 - NO EXCHANGE RATE + +-4 - NO ROUTE + +-5 - OTHERS + +*/ + +END F_FIND_IATA_FARE; + + +/* + +* PROCEDURE P_AUTOMATIC_ROUTE_CALCULATION + +* automaticaly calculate missing routes based on + +* persons' assignemtn and origin places + +* parameter: P_SCOPE (NUMBER) + +* possible values: 1- calculate routes from assignment to origin + +* 2- calculate routes from origin to assignment + +* 3- calculate routes in both ways + +*/ + +/* + +PROCEDURE P_AUTOMATIC_ROUTE_CALCULATION(P_SCOPE NUMBER) + +IS + +CURSOR C_EXERCISES IS + +SELECT NAME, to_date('15/05/2011','DD/MM/YYYY') REF_IATA_DATE + +FROM T_EXERCISES; + + +CURSOR C_ALL_NEW_ROUTES_1 IS + +SELECT DISTINCT + +ASSIGNMENT.IATA_CODE FROM_IATA_CODE, + +ASSIGNMENT.AIRPORT_STEM_ID FROM_AIRPORT_ID , + +ADDRESS.IATA_CODE TO_IATA_CODE, + +ADDRESS.AIRPORT_STEM_ID TO_AIRPORT_ID + +FROM + +V_CURRENT_PERSONS PERSONS_STAFF, + +(SELECT + +PA.PERSON_ID, + +AIRPORTS.AIRPORT_STEM_ID, + +LA.DESCRIPTION, + +AIRPORTS.AIRPORT_NAME, + +AIRPORTS.IATA_CODE, + +ASS.START_DATE, + +ASS.END_DATE + +FROM + +T_PERSON_ASSIGNMENTS PA, + +T_ASSIGNMENTS ASS, + +T_ASSIGNMENT_LOCATIONS AL, + +V_CURRENT_LOCATIONS LA, + +T_AIRPORT_LOCATION AIRPORT_LOC, + +V_CURRENT_AIRPORTS AIRPORTS + +WHERE + +PA.ASSIGNMENT_ID = ASS.ASSIGNMENT_ID + +AND ASS.ASSIGNMENT_ID = AL.ASSIGNMENT_ID + +AND AL.LOCATION_ID = LA.LOCATION_ID + +AND LA.LOCATION_ID = AIRPORT_LOC.LOCATION_ID + +AND AIRPORT_LOC.AIRPORT_STEM_ID = AIRPORTS.AIRPORT_STEM_ID + +AND ASS.ACTIVE = 'Y' + +AND LA.ACTIVE = 'Y' + +AND AIRPORTS.ACTIVE = 'Y' + +) ASSIGNMENT, + +(SELECT + +PA.PERSON_ID, + +AIRPORTS.AIRPORT_STEM_ID, + +LA.DESCRIPTION, + +AIRPORTS.AIRPORT_NAME, + +AIRPORTS.IATA_CODE, + +PA.START_DATE, + +PA.END_DATE + +FROM + +T_PERSON_ADDRESSES PA, + +V_CURRENT_LOCATIONS LA, + +T_AIRPORT_LOCATION AIRPORT_LOC, + +V_CURRENT_AIRPORTS AIRPORTS + +WHERE + +PA.LOCATION_ID = LA.LOCATION_ID + +AND LA.LOCATION_ID = AIRPORT_LOC.LOCATION_ID + +AND AIRPORT_LOC.AIRPORT_STEM_ID = AIRPORTS.AIRPORT_STEM_ID + +AND LA.ACTIVE = 'Y' + +AND AIRPORTS.ACTIVE = 'Y' + +) ADDRESS + +WHERE + +PERSONS_STAFF.ACTIVE = 'Y' + +AND PERSONS_STAFF.PERSON_ID = ASSIGNMENT.PERSON_ID (+) + +AND PERSONS_STAFF.PERSON_ID = ADDRESS.PERSON_ID (+) + +AND ASSIGNMENT.IATA_CODE != ADDRESS.IATA_CODE + +AND EXISTS (SELECT 1 FROM T_PERSON_ASSIGNMENTS STAFF_ASSIGNEMNT WHERE STAFF_ASSIGNEMNT.PERSON_ID = PERSONS_STAFF.PERSON_ID) + +AND NOT EXISTS (SELECT 1 FROM V_ROUTES WHERE ACTIVE='Y' AND START_IATA=ASSIGNMENT.IATA_CODE AND END_IATA=ADDRESS.IATA_CODE); + + +CURSOR C_ALL_NEW_ROUTES_2 IS + +SELECT DISTINCT + +ADDRESS.IATA_CODE FROM_IATA_CODE, + +ADDRESS.AIRPORT_STEM_ID FROM_AIRPORT_ID , + +ASSIGNMENT.IATA_CODE TO_IATA_CODE, + +ASSIGNMENT.AIRPORT_STEM_ID TO_AIRPORT_ID + +FROM + +V_CURRENT_PERSONS PERSONS_STAFF, + +(SELECT + +PA.PERSON_ID, + +AIRPORTS.AIRPORT_STEM_ID, + +LA.DESCRIPTION, + +AIRPORTS.AIRPORT_NAME, + +AIRPORTS.IATA_CODE, + +ASS.START_DATE, + +ASS.END_DATE + +FROM + +T_PERSON_ASSIGNMENTS PA, + +T_ASSIGNMENTS ASS, + +T_ASSIGNMENT_LOCATIONS AL, + +V_CURRENT_LOCATIONS LA, + +T_AIRPORT_LOCATION AIRPORT_LOC, + +V_CURRENT_AIRPORTS AIRPORTS + +WHERE + +PA.ASSIGNMENT_ID = ASS.ASSIGNMENT_ID + +AND ASS.ASSIGNMENT_ID = AL.ASSIGNMENT_ID + +AND AL.LOCATION_ID = LA.LOCATION_ID + +AND LA.LOCATION_ID = AIRPORT_LOC.LOCATION_ID + +AND AIRPORT_LOC.AIRPORT_STEM_ID = AIRPORTS.AIRPORT_STEM_ID + +AND ASS.ACTIVE = 'Y' + +AND LA.ACTIVE = 'Y' + +AND AIRPORTS.ACTIVE = 'Y' + +) ASSIGNMENT, + +(SELECT + +PA.PERSON_ID, + +AIRPORTS.AIRPORT_STEM_ID, + +LA.DESCRIPTION, + +AIRPORTS.AIRPORT_NAME, + +AIRPORTS.IATA_CODE, + +PA.START_DATE, + +PA.END_DATE + +FROM + +T_PERSON_ADDRESSES PA, + +V_CURRENT_LOCATIONS LA, + +T_AIRPORT_LOCATION AIRPORT_LOC, + +V_CURRENT_AIRPORTS AIRPORTS + +WHERE + +PA.LOCATION_ID = LA.LOCATION_ID + +AND LA.LOCATION_ID = AIRPORT_LOC.LOCATION_ID + +AND AIRPORT_LOC.AIRPORT_STEM_ID = AIRPORTS.AIRPORT_STEM_ID + +AND LA.ACTIVE = 'Y' + +AND AIRPORTS.ACTIVE = 'Y' + +) ADDRESS + +WHERE + +PERSONS_STAFF.ACTIVE = 'Y' + +AND PERSONS_STAFF.PERSON_ID = ASSIGNMENT.PERSON_ID (+) + +AND PERSONS_STAFF.PERSON_ID = ADDRESS.PERSON_ID (+) + +AND ASSIGNMENT.IATA_CODE != ADDRESS.IATA_CODE + +AND EXISTS (SELECT 1 FROM T_PERSON_ASSIGNMENTS STAFF_ASSIGNEMNT WHERE STAFF_ASSIGNEMNT.PERSON_ID = PERSONS_STAFF.PERSON_ID) + +AND NOT EXISTS (SELECT 1 FROM V_ROUTES WHERE ACTIVE='Y' AND START_IATA=ADDRESS.IATA_CODE AND END_IATA=ASSIGNMENT.IATA_CODE); + + +L_PRICE NUMBER; + +L_ROUTE VARCHAR2(100); + +L_ROUTE_EXISTS number; + +BEGIN + +--FOR EACH ACTIVE EXERCISE.... + +FOR R_EXERCISE IN C_EXERCISES + +LOOP + +IF P_SCOPE=1 OR P_SCOPE=3 THEN + +--CALCULATE PRICE FOR EACH NEW POSSIBLE ROUTE + +FOR R_ROUTE IN C_ALL_NEW_ROUTES_1 + +LOOP + +L_PRICE := round(PKG_ROUTE_CALCULATION.F_FIND_IATA_FARE(R_ROUTE.FROM_AIRPORT_ID, R_ROUTE.TO_AIRPORT_ID,R_EXERCISE.REF_IATA_DATE),2); + +L_ROUTE := PKG_ROUTE_CALCULATION.F_GET_ROUTE; + +INSERT INTO V_ROUTES (PRICE, CURRENCY, ACTIVE, DONE_BY_PER_ID, CRT_DATE, REV_MESSAGE, AIRPORT_LIST) + +VALUES (L_PRICE, 'EUR', 'Y', 0, SYSDATE, 'PKG_ROUTE_CALCULATION.P_AUTOMATIC_ROUTE_CALCULATION', to_char(L_ROUTE)); + +commit; + +END LOOP; + +END IF; + +-- do the same for the inverted routes + +IF P_SCOPE=2 OR P_SCOPE=3 THEN + +--CALCULATE PRICE FOR EACH NEW POSSIBLE ROUTE + +FOR R_ROUTE IPKG_ROUTE_CALCULATION Body +N C_ALL_NEW_ROUTES_2 + +LOOP + +L_PRICE := round(PKG_ROUTE_CALCULATION.F_FIND_IATA_FARE(R_ROUTE.FROM_AIRPORT_ID, R_ROUTE.TO_AIRPORT_ID,R_EXERCISE.REF_IATA_DATE),2); + +L_ROUTE := PKG_ROUTE_CALCULATION.F_GET_ROUTE; + +INSERT INTO V_ROUTES (PRICE, CURRENCY, ACTIVE, DONE_BY_PER_ID, CRT_DATE, REV_MESSAGE, AIRPORT_LIST) + +VALUES (L_PRICE, 'EUR', 'Y', 0, SYSDATE, 'PKG_ROUTE_CALCULATION.P_AUTOMATIC_ROUTE_CALCULATION', to_char(L_ROUTE)); + +commit; + +END LOOP; + +END IF; + +END LOOP; + +END;*/ + +end PKG_ROUTE_CALCULATION; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/62_RIGD-2954_member_state_countries.sql b/e-rights-common/src/main/database/release/archive/3.0.0/62_RIGD-2954_member_state_countries.sql new file mode 100644 index 0000000..283c877 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/62_RIGD-2954_member_state_countries.sql @@ -0,0 +1,111 @@ +CREATE TABLE member_state_countries ( + country_code VARCHAR2(12 BYTE) + CONSTRAINT pk_member_state_countries PRIMARY KEY, + name_en VARCHAR2(800 BYTE), + eu_state VARCHAR2(1 BYTE) +); + +COMMENT ON TABLE member_state_countries IS + 'Overrides the EU membership for the countries, as defined in EASREFN.MV_COUNTRIES'; + +INSERT INTO member_state_countries ( + country_code, + name_en, + eu_state +) VALUES ( + 'ABW', + 'Aruba', + 'Y' +); + +INSERT INTO member_state_countries ( + country_code, + name_en, + eu_state +) VALUES ( + 'ATA', + 'Antarctica', + 'Y' +); + +INSERT INTO member_state_countries ( + country_code, + name_en, + eu_state +) VALUES ( + 'ATF', + 'French Southern and Antarctic Lands', + 'Y' +); + +INSERT INTO member_state_countries ( + country_code, + name_en, + eu_state +) VALUES ( + 'BES', + 'Bonaire, Sint Eustatius and Saba', + 'Y' +); + +INSERT INTO member_state_countries ( + country_code, + name_en, + eu_state +) VALUES ( + 'CUW', + 'Curaçao', + 'Y' +); + +INSERT INTO member_state_countries ( + country_code, + name_en, + eu_state +) VALUES ( + 'GRL', + 'Greenland', + 'Y' +); + +INSERT INTO member_state_countries ( + country_code, + name_en, + eu_state +) VALUES ( + 'NCL', + 'New Caledonia', + 'Y' +); + +INSERT INTO member_state_countries ( + country_code, + name_en, + eu_state +) VALUES ( + 'PYF', + 'French Polynesia', + 'Y' +); + +INSERT INTO member_state_countries ( + country_code, + name_en, + eu_state +) VALUES ( + 'SPM', + 'Saint Pierre and Miquelon', + 'Y' +); + +INSERT INTO member_state_countries ( + country_code, + name_en, + eu_state +) VALUES ( + 'WLF', + 'Wallis and Futuna', + 'Y' +); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/63_RIGD-2954_mv_countries.sql b/e-rights-common/src/main/database/release/archive/3.0.0/63_RIGD-2954_mv_countries.sql new file mode 100644 index 0000000..70a5b09 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/63_RIGD-2954_mv_countries.sql @@ -0,0 +1,63 @@ +DROP MATERIALIZED VIEW erights.mv_countries; + +CREATE MATERIALIZED VIEW erights.mv_countries ( + country_code, + cd_iso_a2, + cd_iso_n3, + name_en, + long_name_en, + name_fr, + long_name_fr, + eu_state, + capital, + country_phone_code, + continent_code, + status, + currency_code, + currency_name, + place_of_origin_eu_state +) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND +AS + SELECT /*+driving_site(c)*/ + c.country_code, + c.cd_iso_a2, + c.cd_iso_n3, + c.name_en, + c.long_name_en, + c.name_fr, + c.long_name_fr, + c.eu_state, + c.capital, + c.country_phone_code, + c.continent_code, + c.status, + c.currency_code, + c.currency_name, + nvl(msc.eu_state, c.eu_state) place_of_origin_eu_state + FROM + mv_countries@easrefn.cc.cec.eu.int c + LEFT OUTER JOIN member_state_countries msc ON ( c.country_code = msc.country_code ) + UNION + SELECT + 'ZZZ' AS country_code, + '??' AS cd_iso_a2, + - 1 AS cd_iso_n3, + 'Unknown' AS name_en, + 'Unknown' AS long_name_en, + 'Inconnu' AS name_fr, + 'Inconnu' AS long_name_fr, + 'Y' AS eu_state, + 'ZZZ' AS capital, + '1' AS country_phone_code, + '??' AS continent_code, + '?' AS status, + 'ZZZ' AS currency_code, + 'ZZZ' AS currency_name, + 'Y' AS place_of_origin_eu_state + FROM + dual; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/64_RIGD-2954_mv_person_nationalities.sql b/e-rights-common/src/main/database/release/archive/3.0.0/64_RIGD-2954_mv_person_nationalities.sql new file mode 100644 index 0000000..e4c6c56 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/64_RIGD-2954_mv_person_nationalities.sql @@ -0,0 +1,112 @@ +DROP MATERIALIZED VIEW "ERIGHTS"."MV_PERSON_NATIONALITIES"; + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_PERSON_NATIONALITIES" ( + "PER_ID", + "NAT_COUNTRY_CODE", + "NAT_COUNTRY_CODE2", + "NAT_COUNTRY_CODE3", + "NAT_COUNTRY_CODE4", + "NAT_INIT_COUNTRY_CODE", + "NAT_BIRTH_COUNTRY_CODE", + "START_DATE", + "END_DATE", + "INS_CD", + "CREATION_DATE", + "MODIFICATION_DATE" +) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND +AS + SELECT + per_id, + nat_country_code, + nat_country_code2, + nat_country_code3, + nat_country_code4, + nat_init_country_code, + nat_birth_country_code, + start_date, + end_date, + ins_cd, + creation_date, + modification_date + FROM + ( + SELECT + per_id, + nat_country_code, + nat_country_code2, + nat_country_code3, + nat_country_code4, + nat_init_country_code, + nat_birth_country_code, + start_date, + end_date, + ins_cd, + creation_date, + modification_date, + ROW_NUMBER() + OVER(PARTITION BY per_id + ORDER BY + CASE ins_cd + WHEN 'EEAS' THEN + 1 + ELSE + 2 + END + ) rn + FROM + mv_person_nationalities_hist@easrefn n + WHERE + end_date = ( + SELECT + MAX(n2.end_date) + FROM + mv_person_nationalities_hist@easrefn n2 + WHERE + n.per_id = n2.per_id + ) + ) + WHERE + rn = 1; + +CREATE INDEX "ERIGHTS"."IX_MV_PERSON_NATIONALITIES_PER_ID" ON + "ERIGHTS"."MV_PERSON_NATIONALITIES" ( + "PER_ID" + ) + COMPUTE STATISTICS; + +SET DEFINE OFF; + +INSERT INTO erights.t_refresh_objects ( + id, + app_object_name, + priority, + is_refreshed, + status, + refresh_date, + system +) VALUES ( + 42, + 'MV_PERSON_NATIONALITIES', + 42, + 'N', + NULL, + NULL, + 'EASREFN' +); + +INSERT INTO erights.t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + 42, + 'MV_PERSON_NATIONALITIES_HIST', + 1 +); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/68_RIGD-2973_v_current_exercise_new_travel_allowances.sql b/e-rights-common/src/main/database/release/archive/3.0.0/68_RIGD-2973_v_current_exercise_new_travel_allowances.sql new file mode 100644 index 0000000..7bb730d --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/68_RIGD-2973_v_current_exercise_new_travel_allowances.sql @@ -0,0 +1,91 @@ +CREATE OR REPLACE VIEW erights.v_current_exercise_new_travel_allowances AS + SELECT + to_char(a.soj_id) + || to_char(expat_allow.date_from, 'YYYYMMDD') record_key, + a.soj_id, + j.job_id, + p.per_id, + j.job_type, + a.start_date assign_start_date_to, + a.end_date assign_end_date_to, + p.no_sysper, + p.title, + p.surname, + p.genre, + p.userid, + p.moniker, + p.domain, + p.display_name, + j.jcx_id, + a.start_date assign_start_date, + a.end_date assign_end_date, + p.lst_cd, + p.lst_code, + p.lst_beg_date, + p.lst_ass_date, + p.lst_end_date, + p.cgr_cd, + e.org_id, + e.main_org_id, + e.org_name, + e.org_cd, + e.org_desc, + e.tor_id, + e.typeofentity_name, + e.del_id, + e.delegation_name, + j.responsible, + j.head_of_entity, + j.location_city_code job_city_code, + j.location_city_name job_city_name, + j.location_country_code job_country_code, + j.location_country_name job_country_name, + ac.iata_code, + e.main_org_id delegation_org_id, + expat_allow.date_from expatration_allowance_date_from, + expat_allow.date_to expatration_allowance_date_to + FROM + mv_persons_eeas p + INNER JOIN mv_assignments_hist_eeas a ON ( p.per_id = a.per_id ) + INNER JOIN mv_jobs_hist_eeas j ON ( a.job_id = j.job_id + AND a.jcx_id = j.jcx_id ) + INNER JOIN mv_entities e ON ( j.org_id = e.org_id ) + INNER JOIN airport_cities ac ON ( ac.city_code = j.location_city_code + AND ac.country_code = j.location_country_code ) + INNER JOIN ( + SELECT + r.per_id_attrib, + r.date_from, + r.date_to + FROM + mv_person_relatives_rights r + WHERE + r.rgt_id = 3002 -- Expatriation allowance (IR) + AND r.rtt_id_type = 410 -- [IR = IDE] Expatriation Allowance : 16% + AND r.date_from <= to_date('31-DEC-' || EXTRACT(YEAR FROM sysdate), 'DD-MON-YYYY') + AND r.date_to >= trunc(sysdate, 'YYYY') + ) expat_allow ON ( expat_allow.per_id_attrib = p.per_id ) + WHERE + EXISTS ( + SELECT + 1 + FROM + mv_entities e2 + WHERE + e2.is_delegation = 'Y' + AND e2.org_id = e.main_org_id + ) + AND p.lst_cd IN ( 'CA', 'FP' ) + AND a.start_date <= to_date('31-DEC-' || EXTRACT(YEAR FROM sysdate), 'DD-MON-YYYY') + AND a.end_date >= trunc(sysdate, 'YYYY') + AND NOT EXISTS ( -- remove the create allowances, we need to filter by the travel,storage acomodation + SELECT + 1 + FROM + posting_allowances_treated aa + WHERE + aa.per_id = p.per_id + AND aa.soj_id = a.soj_id + AND aa.delegation_org_id = e.main_org_id + AND aa.exercise_year = EXTRACT(YEAR FROM sysdate) + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/70_RIGD-2966_MV_PERSON_ADDRESS_HIST_Index.sql b/e-rights-common/src/main/database/release/archive/3.0.0/70_RIGD-2966_MV_PERSON_ADDRESS_HIST_Index.sql new file mode 100644 index 0000000..e85bfec --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/70_RIGD-2966_MV_PERSON_ADDRESS_HIST_Index.sql @@ -0,0 +1,6 @@ +CREATE INDEX ix_mv_person_address_hist_per_id_tadr_cd ON + mv_person_address_hist ( + per_id, + tadr_cd + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/71_RIGD-2966_v_places_of_origin.sql b/e-rights-common/src/main/database/release/archive/3.0.0/71_RIGD-2966_v_places_of_origin.sql new file mode 100644 index 0000000..7b21e16 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/71_RIGD-2966_v_places_of_origin.sql @@ -0,0 +1,83 @@ +CREATE OR REPLACE VIEW erights.v_places_of_origin ( + per_id, + place_of_origin, + country_code, + country_of_origin, + eu_state +) AS + SELECT + place_of_origin.per_id, + CASE place_of_origin.eu_state + WHEN 'Y' THEN + initcap(place_of_origin.place_of_origin) + ELSE + CASE nationalities.eu_state + WHEN 'Y' THEN + initcap(nationalities.nat_country_capital) + ELSE + initcap(place_of_origin.place_of_origin) + END + END place_of_origin, + CASE place_of_origin.eu_state + WHEN 'Y' THEN + place_of_origin.country_code + ELSE + CASE nationalities.eu_state + WHEN 'Y' THEN + nationalities.nat_country_code + ELSE + place_of_origin.country_code + END + END country_code, + CASE place_of_origin.eu_state + WHEN 'Y' THEN + place_of_origin.country_of_origin + ELSE + CASE nationalities.eu_state + WHEN 'Y' THEN + nationalities.nat_country_name_en + ELSE + place_of_origin.country_of_origin + END + END country_of_origin, + CASE + WHEN place_of_origin.eu_state = 'Y' + OR nationalities.eu_state = 'Y' THEN + 'Y' + ELSE + 'N' + END eu_state + FROM + ( + SELECT + pa.per_id, + pa.city_name place_of_origin, + pa.country_code country_code, + c.name_en country_of_origin, + c.place_of_origin_eu_state eu_state, + ROW_NUMBER() + OVER(PARTITION BY per_id, tadr_cd + ORDER BY + start_date + ) row_num + FROM + mv_person_address_hist pa + INNER JOIN mv_countries c ON ( pa.country_code = c.country_code ) + WHERE + tadr_cd = 22 + AND ( sysdate BETWEEN pa.start_date AND pa.end_date + OR sysdate < pa.start_date ) + ) place_of_origin + LEFT JOIN ( + SELECT + n.per_id, + n.nat_country_code, + c.name_en nat_country_name_en, + c.capital nat_country_capital, + c.eu_state + FROM + mv_person_nationalities n + INNER JOIN mv_countries c ON ( n.nat_country_code = c.country_code ) + ) nationalities ON ( place_of_origin.per_id = nationalities.per_id ) + WHERE + row_num = 1; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/73_RIGD-2979_V_PEOPLE.sql b/e-rights-common/src/main/database/release/archive/3.0.0/73_RIGD-2979_V_PEOPLE.sql new file mode 100644 index 0000000..e4b5a91 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/73_RIGD-2979_V_PEOPLE.sql @@ -0,0 +1,93 @@ +CREATE OR REPLACE VIEW erights.v_people AS + SELECT + p.per_id, + p.title, + p.first_name, + p.surname last_name, + p.genre gender, + p.place_of_birth birth_city, + p.country_of_birth birth_country_code, + p.email private_email, + p.date_of_birth, + p.professional_email, + n.nat_country_code first_nationality_country_code + FROM + ( + SELECT + p.per_id, + p.title, + p.first_name, + p.surname, + p.genre, + p.place_of_birth, + replace(p.country_of_birth, 'XXX', 'ZZZ') country_of_birth, + em.email, + p.date_of_birth, + p2.email professional_email + FROM + mv_persons_hist_eeas p + LEFT JOIN v_persons_emails em ON em.per_id = p.per_id + LEFT JOIN mv_persons_eeas p2 ON ( p.per_id = p2.per_id ) + WHERE + ( p.start_date = ( + SELECT + MAX(p2.start_date) + FROM + mv_persons_hist_eeas p2 + WHERE + p.per_id = p2.per_id + ) + OR p.start_date IS NULL ) + UNION + SELECT + p.per_id, + p.title, + p.first_name, + p.surname, + p.genre, + p.place_of_birth, + replace(p.country_of_birth, 'XXX', 'ZZZ') country_of_birth, + em.email, + p.date_of_birth, + p2.email professional_email + FROM + mv_persons_hist_com p + LEFT JOIN v_persons_emails em ON em.per_id = p.per_id + LEFT JOIN mv_persons_com p2 ON ( p.per_id = p2.per_id ) + WHERE + ( p.start_date = ( + SELECT + MAX(p2.start_date) + FROM + mv_persons_hist_com p2 + WHERE + p.per_id = p2.per_id + ) + OR p.start_date IS NULL ) + AND NOT EXISTS ( + SELECT + 1 + FROM + mv_persons_hist_eeas p2 + WHERE + p.per_id = p2.per_id + ) + UNION + SELECT + k.per_id, + k.title, + k.first_name, + k.surname, + k.genre, + k.place_of_birth, + replace(k.country_of_birth, 'XXX', 'ZZZ') country_of_birth, + em.email, + k.date_of_birth, + k.email professional_email + FROM + mv_persons_eeas k + LEFT JOIN v_persons_emails em ON em.per_id = k.per_id + WHERE + k.per_id < 0 + ) p + LEFT JOIN mv_person_nationalities n ON ( p.per_id = n.per_id ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/74_RIGD-2960-add_expatriate_columns.sql b/e-rights-common/src/main/database/release/archive/3.0.0/74_RIGD-2960-add_expatriate_columns.sql new file mode 100644 index 0000000..72e34c1 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/74_RIGD-2960-add_expatriate_columns.sql @@ -0,0 +1,18 @@ +ALTER TABLE POSTING_ALLOWANCES + ADD (EXPATRIATION_ALLOWANCE_DATE_FROM DATE); + +ALTER TABLE POSTING_ALLOWANCES + ADD (EXPATRIATION_ALLOWANCE_DATE_TO DATE); + + +ALTER TABLE AUD_POSTING_ALLOWANCES + ADD (EXPATRIATION_ALLOWANCE_DATE_FROM DATE); + +ALTER TABLE AUD_POSTING_ALLOWANCES + ADD (EXPATRIATION_ALLOWANCE_DATE_TO DATE); + +ALTER TABLE POSTING_ALLOWANCES + ADD (ASSIGNMENT_END_DATE DATE); + +ALTER TABLE AUD_POSTING_ALLOWANCES + ADD (ASSIGNMENT_END_DATE DATE); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/75_RIGD-2904-add_first_nationality_column.sql b/e-rights-common/src/main/database/release/archive/3.0.0/75_RIGD-2904-add_first_nationality_column.sql new file mode 100644 index 0000000..bbae5d5 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/75_RIGD-2904-add_first_nationality_column.sql @@ -0,0 +1,11 @@ +ALTER TABLE POSTING_ALLOWANCE_PERSONS + ADD (FIRST_NATIONALITY_COUNTRY VARCHAR2(100 CHAR)); + +ALTER TABLE AUD_POSTING_ALLOWANCE_PERSONS + ADD (FIRST_NATIONALITY_COUNTRY VARCHAR2(100 CHAR)); + +ALTER TABLE POSTING_ALLOWANCES + ADD (FIRST_NATIONALITY_COUNTRY VARCHAR2(100 CHAR)); + +ALTER TABLE AUD_POSTING_ALLOWANCES + ADD (FIRST_NATIONALITY_COUNTRY VARCHAR2(100 CHAR)); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/76_RIGD-2996_V_REPORT_POSTING_ALLOWANCES.sql b/e-rights-common/src/main/database/release/archive/3.0.0/76_RIGD-2996_V_REPORT_POSTING_ALLOWANCES.sql new file mode 100644 index 0000000..1ddc3d8 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/76_RIGD-2996_V_REPORT_POSTING_ALLOWANCES.sql @@ -0,0 +1,83 @@ +CREATE OR REPLACE VIEW V_REPORT_POSTING_ALLOWANCES AS +SELECT + a.posting_allowance_id posting_allowance_id, + a.per_id, + a.exercise_year, + a.posting_allowance_number posting_allowance_number, + a.posting_allowance_string_id posting_allowance_string_id, + a.posting_allowance_type posting_allowance_type, + a.posting_allowance_req_type posting_allowance_req_type, + a.parent_posting_allowance_id parent_posting_allowance_id, + a.comments, + a.outgoing_trip_amount, + a.outgoing_trip_amount_currency, + a.return_trip_amount, + a.return_trip_amount_currency, + a.calc_total_amount, + a.calc_total_amount_currency, + a.total_amount, + a.total_amount_currency, + a.payment_period_year, + a.payment_period_month, + CASE + WHEN a.payment_period_month IS NULL OR a.payment_period_year IS NULL + THEN NULL + ELSE to_date(a.payment_period_month + || '/' + || a.payment_period_year, 'mm/yy') + END payment_period, + a.payment_reference, + a.payment_state, + a.assignment_city_code, + a.assignment_country_code, + a.assignment_city_name assignment_city_name, + c_assign.name_en assignment_country_name, + c_assign.name_en + || ' , ' + || initcap(assignment_city_name) assignment_place, + a.assignment_iata_code, + a.origin_city_code, + a.origin_country_code, + a.origin_city_name origin_city_name, + c_origin.name_en origin_country_name, + a.origin_iata_code, + a.origin_period_month, + a.origin_period_year, + a.origin_place_search, + CASE + WHEN a.origin_period_month IS NULL OR a.origin_period_year IS NULL + THEN NULL + ELSE to_date(a.origin_period_month + || '/' + || a.origin_period_year, 'mm/yy') + END origin_period, + a.recruitment_city_code, + a.recruitment_country_code, + a.recruitment_city_name recruitment_city_name, + c_recruit.name_en recruitment_country_name, + a.recruitment_iata_code, + a.sm_id, + a.state, + a.posting_allowance_discriminatory_type posting_allowance_discriminatory_type, + a.created_by, + a.created_at, + a.updated_by, + a.updated_at, + a.delegation_org_id, + p.title, + p.first_name, + p.last_name, + a.assignment_start_date, + a.spouse_per_id, + a.double_posting, + a.dual_posting, + p.professional_email, + p.private_email, + a.assignment_airport_name, + a.origin_airport_name +FROM + posting_allowances a + INNER JOIN v_people p ON p.per_id = a.per_id + LEFT JOIN mv_countries c_assign ON ( a.assignment_country_code = c_assign.country_code ) + LEFT JOIN mv_countries c_origin ON ( a.origin_country_code = c_origin.country_code ) + LEFT JOIN mv_countries c_recruit ON ( a.recruitment_country_code = c_recruit.country_code ); diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/77_RIGD-2979_V_POSTING_ALLOWANCES.sql b/e-rights-common/src/main/database/release/archive/3.0.0/77_RIGD-2979_V_POSTING_ALLOWANCES.sql new file mode 100644 index 0000000..f4c332b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/77_RIGD-2979_V_POSTING_ALLOWANCES.sql @@ -0,0 +1,55 @@ +CREATE OR REPLACE VIEW V_POSTING_ALLOWANCES AS +SELECT + a.posting_allowance_id posting_allowance_id, + a.per_id, + a.exercise_year, + a.posting_allowance_number posting_allowance_number, + a.posting_allowance_string_id posting_allowance_string_id, + a.posting_allowance_type posting_allowance_type, + a.posting_allowance_req_type posting_allowance_req_type, + a.parent_posting_allowance_id parent_posting_allowance_id, + a.comments, + a.outgoing_trip_amount, + a.outgoing_trip_amount_currency, + a.return_trip_amount, + a.return_trip_amount_currency, + a.calc_total_amount, + a.calc_total_amount_currency, + a.total_amount, + a.total_amount_currency, + a.payment_period_year, + a.payment_period_month, + a.payment_reference, + a.payment_state, + a.assignment_city_code, + a.assignment_country_code, + a.assignment_city_name assignment_city_name, + c_assign.name_en assignment_country_name, + a.assignment_iata_code, + a.origin_city_code, + a.origin_country_code, + a.origin_city_name origin_city_name, + c_origin.name_en origin_country_name, + a.origin_iata_code, + a.recruitment_city_code, + a.recruitment_country_code, + a.recruitment_city_name recruitment_city_name, + c_recruit.name_en recruitment_country_name, + a.recruitment_iata_code, + a.sm_id, + a.state, + a.posting_allowance_discriminatory_type posting_allowance_discriminatory_type, + a.created_by, + a.created_at, + a.updated_by, + a.updated_at, + a.delegation_org_id, + a.spouse_per_id, + a.double_posting, + n.nat_country_code first_nationality_country_code +FROM + posting_allowances a + LEFT JOIN mv_person_nationalities n ON ( a.per_id = n.per_id ) + LEFT JOIN mv_countries c_assign ON ( a.assignment_country_code = c_assign.country_code ) + LEFT JOIN mv_countries c_origin ON ( a.origin_country_code = c_origin.country_code ) + LEFT JOIN mv_countries c_recruit ON ( a.recruitment_country_code = c_recruit.country_code ); diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/78_RIGD-2979_v_report_posting_allowances.sql b/e-rights-common/src/main/database/release/archive/3.0.0/78_RIGD-2979_v_report_posting_allowances.sql new file mode 100644 index 0000000..797b92b --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/78_RIGD-2979_v_report_posting_allowances.sql @@ -0,0 +1,88 @@ +CREATE OR REPLACE VIEW erights.v_report_posting_allowances AS + SELECT + a.posting_allowance_id posting_allowance_id, + a.per_id, + a.exercise_year, + a.posting_allowance_number posting_allowance_number, + a.posting_allowance_string_id posting_allowance_string_id, + a.posting_allowance_type posting_allowance_type, + a.posting_allowance_req_type posting_allowance_req_type, + a.parent_posting_allowance_id parent_posting_allowance_id, + a.comments, + a.outgoing_trip_amount, + a.outgoing_trip_amount_currency, + a.return_trip_amount, + a.return_trip_amount_currency, + a.calc_total_amount, + a.calc_total_amount_currency, + a.total_amount, + a.total_amount_currency, + a.payment_period_year, + a.payment_period_month, + CASE + WHEN a.payment_period_month IS NULL + OR a.payment_period_year IS NULL THEN + NULL + ELSE + TO_DATE(a.payment_period_month + || '/' + || a.payment_period_year, 'mm/yy') + END payment_period, + a.payment_reference, + a.payment_state, + a.assignment_city_code, + a.assignment_country_code, + a.assignment_city_name assignment_city_name, + c_assign.name_en assignment_country_name, + c_assign.name_en + || ' , ' + || initcap(assignment_city_name) assignment_place, + a.assignment_iata_code, + a.origin_city_code, + a.origin_country_code, + a.origin_city_name origin_city_name, + c_origin.name_en origin_country_name, + a.origin_iata_code, + a.origin_period_month, + a.origin_period_year, + a.origin_place_search, + CASE + WHEN a.origin_period_month IS NULL + OR a.origin_period_year IS NULL THEN + NULL + ELSE + TO_DATE(a.origin_period_month + || '/' + || a.origin_period_year, 'mm/yy') + END origin_period, + a.recruitment_city_code, + a.recruitment_country_code, + a.recruitment_city_name recruitment_city_name, + c_recruit.name_en recruitment_country_name, + a.recruitment_iata_code, + a.sm_id, + a.state, + a.posting_allowance_discriminatory_type posting_allowance_discriminatory_type, + a.created_by, + a.created_at, + a.updated_by, + a.updated_at, + a.delegation_org_id, + p.title, + p.first_name, + p.last_name, + a.assignment_start_date, + a.spouse_per_id, + a.double_posting, + a.dual_posting, + p.professional_email, + p.private_email, + a.assignment_airport_name, + a.origin_airport_name, + p.first_nationality_country_code + FROM + posting_allowances a + INNER JOIN v_people p ON p.per_id = a.per_id + LEFT JOIN mv_countries c_assign ON ( a.assignment_country_code = c_assign.country_code ) + LEFT JOIN mv_countries c_origin ON ( a.origin_country_code = c_origin.country_code ) + LEFT JOIN mv_countries c_recruit ON ( a.recruitment_country_code = c_recruit.country_code ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/79_RIGD-3008_Update_notification_templates.sql b/e-rights-common/src/main/database/release/archive/3.0.0/79_RIGD-3008_Update_notification_templates.sql new file mode 100644 index 0000000..7c83039 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/79_RIGD-3008_Update_notification_templates.sql @@ -0,0 +1,24 @@ +set define off; + +UPDATE notification_templates +SET + message_body = 'Dear ${FIRST_NAME} ${LAST_NAME},
    +
    +The annual travel request ${POSTING_ALLOWANCE_STRING_ID} has been approved.
    +Please log in to e-Rights and consult the details of the annual travel allowance as it will be subject to regularizations in the future if there are inconsistencies.' + , + message_signature = 'Should you have any questions, please contact us using:
    +
    + +
    +Kind regards,
    +EEAS.RM.BHR.6 Support to Delegations' +WHERE + notification_template_type = 'POSTING_ALLOWANCE' + AND notification_template_code = 'APPROVED_REQUEST' + AND default_template = 'Y'; + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/80_RIGD-3003_MV_PERSON_ADDRESS_HIST.sql b/e-rights-common/src/main/database/release/archive/3.0.0/80_RIGD-3003_MV_PERSON_ADDRESS_HIST.sql new file mode 100644 index 0000000..62eaead --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/80_RIGD-3003_MV_PERSON_ADDRESS_HIST.sql @@ -0,0 +1,56 @@ +DROP MATERIALIZED VIEW "ERIGHTS"."MV_PERSON_ADDRESS_HIST"; + +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_PERSON_ADDRESS_HIST" ( "PER_ID", "START_DATE", "END_DATE", "EFFECTIVE_DATE", "DECL_CHG_DATE", "TADR_CD" +, "ADDRESS_TYPE_CODE", "COUNTRY_CODE", "CITY_NAME", "POSTAL_CODE", "STREET_NAME", "STREET_NAME1", "STREET_NAME2", "STREET_NUMBER", "POSTAL_BOX" +, "COMMENTS", "ADDITIONAL_ADDRESS", "ADDITIONAL_ADDRESS2", "OREDER_ADDRESS", "LANGUAGE_CODE", "PER_ID_REL_PERS", "SURNAME", "FIRST_NAME" +, "DATE_OF_BIRTH", "TITLE", "LINK_ADR_TEL", "SP2_ADDRESS_ID", "IRIS_ADDRESS_ID", "SRC_ID", "INS_CD", "UNIQ_ID", "CREATED_DATE", "UPDATED_DATE" +) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND +AS + SELECT + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id, + created_date, + updated_date + FROM + mv_person_address_hist@easrefn.cc.cec.eu.int; + +CREATE INDEX "ERIGHTS"."IX_MV_PERSON_ADDRESS_HIST_PER_ID_TADR_CD" ON + "ERIGHTS"."MV_PERSON_ADDRESS_HIST" ( + "PER_ID", + "TADR_CD" + ) + COMPUTE STATISTICS; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/81_RIGD-3003_MV_PERSON_ADDRESS_LAST.sql b/e-rights-common/src/main/database/release/archive/3.0.0/81_RIGD-3003_MV_PERSON_ADDRESS_LAST.sql new file mode 100644 index 0000000..9126f1d --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/81_RIGD-3003_MV_PERSON_ADDRESS_LAST.sql @@ -0,0 +1,101 @@ +CREATE MATERIALIZED VIEW MV_PERSON_ADDRESS_LAST +REFRESH FORCE ON DEMAND +AS +SELECT + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id, + created_date, + updated_date + FROM + ( + SELECT + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id, + created_date, + updated_date, + ROW_NUMBER() + OVER(PARTITION BY per_id, + tadr_cd + ORDER BY decode( + ins_cd, + 'EEAS', + 1, + 'COM', + 2, + 10 + ) DESC, start_date desc + ) row_num -- Take EEAS over COM + FROM + mv_person_address_hist + ) + WHERE + row_num = 1; + + +create index IX_MV_PERSON_ADDRESS_LAST_PER_ID_TADR_CD on MV_PERSON_ADDRESS_LAST (PER_ID, TADR_CD); + +insert into T_REFRESH_OBJECTS (ID, APP_OBJECT_NAME, PRIORITY, IS_REFRESHED, STATUS, REFRESH_DATE, SYSTEM) +values (43, 'MV_PERSON_ADDRESS_LAST', 1001, 'N', 'KO', NULL, 'EASREFN'); + +insert into T_APP_EASREFN_OBJECTS (APP_OBJECT_NAME_ID, EASREFN_OBJECT_NAME, PRIORITY) +values (43, 'MV_PERSON_ADDRESS_HIST', 1); + +commit; diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/82_RIGD-3003_V_RECRUITMENT_PLACES.sql b/e-rights-common/src/main/database/release/archive/3.0.0/82_RIGD-3003_V_RECRUITMENT_PLACES.sql new file mode 100644 index 0000000..ce5318a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/82_RIGD-3003_V_RECRUITMENT_PLACES.sql @@ -0,0 +1,30 @@ + + CREATE OR REPLACE VIEW "ERIGHTS"."V_RECRUITMENT_PLACES" ("PER_ID", "LIEU_RECR", "RECR_PAY_CD", "NAME_EN") AS + SELECT + per_id, + lieu_recr, + recr_pay_cd, + name_en + FROM + ( + SELECT + pa.per_id, + pa.city_name lieu_recr, + pa.country_code recr_pay_cd, + c.name_en, + ROW_NUMBER() + OVER(PARTITION BY per_id, tadr_cd + ORDER BY + start_date + ) row_num + FROM + mv_person_address_last pa + INNER JOIN mv_countries c ON ( pa.country_code = c.country_code ) + WHERE + tadr_cd = 21 + AND ( sysdate BETWEEN pa.start_date AND pa.end_date + OR sysdate < pa.start_date ) + ) + WHERE + row_num = 1; + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/83_RIGD-3003_V_PLACES_OF_ORIGIN.sql b/e-rights-common/src/main/database/release/archive/3.0.0/83_RIGD-3003_V_PLACES_OF_ORIGIN.sql new file mode 100644 index 0000000..2fc197d --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/83_RIGD-3003_V_PLACES_OF_ORIGIN.sql @@ -0,0 +1,79 @@ + + CREATE OR REPLACE VIEW "ERIGHTS"."V_PLACES_OF_ORIGIN" ("PER_ID", "PLACE_OF_ORIGIN", "COUNTRY_CODE", "COUNTRY_OF_ORIGIN", "EU_STATE") AS + SELECT + place_of_origin.per_id, + CASE place_of_origin.eu_state + WHEN 'Y' THEN + initcap(place_of_origin.place_of_origin) + ELSE + CASE nationalities.eu_state + WHEN 'Y' THEN + initcap(nationalities.nat_country_capital) + ELSE + initcap(place_of_origin.place_of_origin) + END + END place_of_origin, + CASE place_of_origin.eu_state + WHEN 'Y' THEN + place_of_origin.country_code + ELSE + CASE nationalities.eu_state + WHEN 'Y' THEN + nationalities.nat_country_code + ELSE + place_of_origin.country_code + END + END country_code, + CASE place_of_origin.eu_state + WHEN 'Y' THEN + place_of_origin.country_of_origin + ELSE + CASE nationalities.eu_state + WHEN 'Y' THEN + nationalities.nat_country_name_en + ELSE + place_of_origin.country_of_origin + END + END country_of_origin, + CASE + WHEN place_of_origin.eu_state = 'Y' + OR nationalities.eu_state = 'Y' THEN + 'Y' + ELSE + 'N' + END eu_state +FROM + ( + SELECT + pa.per_id, + pa.city_name place_of_origin, + pa.country_code country_code, + c.name_en country_of_origin, + c.place_of_origin_eu_state eu_state, + ROW_NUMBER() + OVER(PARTITION BY per_id, tadr_cd + ORDER BY + start_date + ) row_num + FROM + mv_person_address_last pa + INNER JOIN mv_countries c ON ( pa.country_code = c.country_code ) + WHERE + tadr_cd = 22 + AND ( sysdate BETWEEN pa.start_date AND pa.end_date + OR sysdate < pa.start_date ) + ) place_of_origin + LEFT JOIN ( + SELECT + n.per_id, + n.nat_country_code, + c.name_en nat_country_name_en, + c.capital nat_country_capital, + c.eu_state + FROM + mv_person_nationalities n + INNER JOIN mv_countries c ON ( n.nat_country_code = c.country_code ) + ) nationalities ON ( place_of_origin.per_id = nationalities.per_id ) +WHERE + row_num = 1; + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/84_RIGD-3003_V_PERSON_ADDRESS_HIST.sql b/e-rights-common/src/main/database/release/archive/3.0.0/84_RIGD-3003_V_PERSON_ADDRESS_HIST.sql new file mode 100644 index 0000000..57fa6bb --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/84_RIGD-3003_V_PERSON_ADDRESS_HIST.sql @@ -0,0 +1,37 @@ +CREATE OR REPLACE VIEW v_person_address_hist AS + SELECT + per_id, + start_date, + end_date, + effective_date, + decl_chg_date, + tadr_cd, + address_type_code, + country_code, + city_name, + postal_code, + street_name, + street_name1, + street_name2, + street_number, + postal_box, + comments, + additional_address, + additional_address2, + oreder_address, + language_code, + per_id_rel_pers, + surname, + first_name, + date_of_birth, + title, + link_adr_tel, + sp2_address_id, + iris_address_id, + src_id, + ins_cd, + uniq_id, + created_date, + updated_date + FROM + mv_person_address_hist; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/85_RIGD-2986_V_REPORT_POSTING_ALLOWANCES.sql b/e-rights-common/src/main/database/release/archive/3.0.0/85_RIGD-2986_V_REPORT_POSTING_ALLOWANCES.sql new file mode 100644 index 0000000..b334c7d --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/85_RIGD-2986_V_REPORT_POSTING_ALLOWANCES.sql @@ -0,0 +1,90 @@ +CREATE OR REPLACE VIEW "ERIGHTS"."V_REPORT_POSTING_ALLOWANCES" AS + SELECT + a.posting_allowance_id posting_allowance_id, + a.per_id, + a.exercise_year, + a.posting_allowance_number posting_allowance_number, + a.posting_allowance_string_id posting_allowance_string_id, + a.posting_allowance_type posting_allowance_type, + a.posting_allowance_req_type posting_allowance_req_type, + a.parent_posting_allowance_id parent_posting_allowance_id, + a.comments, + a.outgoing_trip_amount, + a.outgoing_trip_amount_currency, + a.return_trip_amount, + a.return_trip_amount_currency, + a.calc_total_amount, + a.calc_total_amount_currency, + a.total_amount, + a.total_amount_currency, + a.payment_period_year, + a.payment_period_month, + CASE + WHEN a.payment_period_month IS NULL + OR a.payment_period_year IS NULL THEN + NULL + ELSE + TO_DATE(a.payment_period_month + || '/' + || a.payment_period_year, 'mm/yy') + END payment_period, + a.payment_reference, + a.payment_state, + a.assignment_city_code, + a.assignment_country_code, + a.assignment_city_name assignment_city_name, + c_assign.name_en assignment_country_name, + c_assign.name_en + || ' , ' + || initcap(assignment_city_name) assignment_place, + a.assignment_iata_code, + a.origin_city_code, + a.origin_country_code, + a.origin_city_name origin_city_name, + c_origin.name_en origin_country_name, + a.origin_iata_code, + a.origin_period_month, + a.origin_period_year, + a.origin_place_search, + CASE + WHEN a.origin_period_month IS NULL + OR a.origin_period_year IS NULL THEN + NULL + ELSE + TO_DATE(a.origin_period_month + || '/' + || a.origin_period_year, 'mm/yy') + END origin_period, + a.recruitment_city_code, + a.recruitment_country_code, + a.recruitment_city_name recruitment_city_name, + c_recruit.name_en recruitment_country_name, + a.recruitment_iata_code, + a.sm_id, + a.state, + a.posting_allowance_discriminatory_type posting_allowance_discriminatory_type, + a.created_by, + a.created_at, + a.updated_by, + a.updated_at, + a.delegation_org_id, + p.title, + p.first_name, + p.last_name, + a.assignment_start_date, + a.spouse_per_id, + a.double_posting, + a.dual_posting, + p.professional_email, + p.private_email, + a.assignment_airport_name, + a.origin_airport_name, + p.first_nationality_country_code, + air.location_name origin_airport_location_name + FROM + posting_allowances a + INNER JOIN v_people p ON p.per_id = a.per_id + LEFT JOIN mv_countries c_assign ON ( a.assignment_country_code = c_assign.country_code ) + LEFT JOIN mv_countries c_origin ON ( a.origin_country_code = c_origin.country_code ) + LEFT JOIN mv_countries c_recruit ON ( a.recruitment_country_code = c_recruit.country_code ) + LEFT JOIN airports air ON ( a.origin_iata_code = air.iata_code ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/86_RIGD-3017_v_airport_cities.sql b/e-rights-common/src/main/database/release/archive/3.0.0/86_RIGD-3017_v_airport_cities.sql new file mode 100644 index 0000000..93f1b47 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/86_RIGD-3017_v_airport_cities.sql @@ -0,0 +1,17 @@ +CREATE OR REPLACE VIEW erights.v_airport_cities AS + SELECT + a.iata_code, + a.airport_name, + a.location_name, + ac.country_code, + ac.city_code, + ci.description_en, + co.cd_iso_a2 + FROM + airports a + INNER JOIN airport_cities ac ON ( a.iata_code = ac.iata_code ) + INNER JOIN mv_cities ci ON ( ac.country_code = ci.country_code + AND ac.city_code = ci.city_code ) + INNER JOIN mv_countries co ON ( ac.country_code = co.country_code ) + WHERE + a.active = 'Y'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/88_RIGD-3025_v_current_exercise_new_travel_allowances.sql b/e-rights-common/src/main/database/release/archive/3.0.0/88_RIGD-3025_v_current_exercise_new_travel_allowances.sql new file mode 100644 index 0000000..5da231c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/88_RIGD-3025_v_current_exercise_new_travel_allowances.sql @@ -0,0 +1,138 @@ +CREATE OR REPLACE VIEW erights.v_current_exercise_new_travel_allowances ( + record_key, + soj_id, + job_id, + per_id, + job_type, + assign_start_date_to, + assign_end_date_to, + no_sysper, + title, + surname, + genre, + userid, + moniker, + domain, + display_name, + jcx_id, + assign_start_date, + assign_end_date, + lst_cd, + lst_code, + lst_beg_date, + lst_ass_date, + lst_end_date, + cgr_cd, + org_id, + main_org_id, + org_name, + org_cd, + org_desc, + tor_id, + typeofentity_name, + del_id, + delegation_name, + responsible, + head_of_entity, + job_city_code, + job_city_name, + job_country_code, + job_country_name, + iata_code, + delegation_org_id, + expatration_allowance_date_from, + expatration_allowance_date_to +) AS + SELECT + to_char(a.soj_id) + || to_char(expat_allow.date_from, 'YYYYMMDD') record_key, + a.soj_id, + j.job_id, + p.per_id, + j.job_type, + a.start_date assign_start_date_to, + a.end_date assign_end_date_to, + p.no_sysper, + p.title, + p.surname, + p.genre, + p.userid, + p.moniker, + p.domain, + p.display_name, + j.jcx_id, + a.start_date assign_start_date, + a.end_date assign_end_date, + p.lst_cd, + p.lst_code, + p.lst_beg_date, + p.lst_ass_date, + p.lst_end_date, + p.cgr_cd, + e.org_id, + e.main_org_id, + e.org_name, + e.org_cd, + e.org_desc, + e.tor_id, + e.typeofentity_name, + e.del_id, + e.delegation_name, + j.responsible, + j.head_of_entity, + j.location_city_code job_city_code, + j.location_city_name job_city_name, + j.location_country_code job_country_code, + j.location_country_name job_country_name, + ac.iata_code, + e.main_org_id delegation_org_id, + expat_allow.date_from expatration_allowance_date_from, + expat_allow.date_to expatration_allowance_date_to + FROM + mv_persons_eeas p + INNER JOIN mv_assignments_hist_eeas a ON ( p.per_id = a.per_id ) + INNER JOIN mv_jobs_hist_eeas j ON ( a.job_id = j.job_id + AND a.jcx_id = j.jcx_id ) + INNER JOIN mv_entities e ON ( j.org_id = e.org_id ) + INNER JOIN airport_cities ac ON ( ac.city_code = j.location_city_code + AND ac.country_code = j.location_country_code ) + INNER JOIN ( + SELECT + r.per_id_attrib, + r.date_from, + r.date_to + FROM + mv_person_relatives_rights r + WHERE + r.rgt_id = 3002 -- Expatriation allowance (IR) + AND r.rtt_id_type IN ( 410, 411 ) -- 410 => [IR = IDE] Expatriation Allowance : 16%, 411 =>[IR = IEX] Foreign Residence Allowance : 4% + AND r.date_from <= TO_DATE('31-DEC-' || EXTRACT(YEAR FROM sysdate), + 'DD-MON-YYYY') + AND r.date_to >= trunc(sysdate, 'YYYY') + ) expat_allow ON ( expat_allow.per_id_attrib = p.per_id ) + WHERE + EXISTS ( + SELECT + 1 + FROM + mv_entities e2 + WHERE + e2.is_delegation = 'Y' + AND e2.org_id = e.main_org_id + ) + AND p.lst_cd IN ( 'CA', 'CB', 'FP', 'FS', 'TP', + 'TE' ) + AND a.start_date <= TO_DATE('31-DEC-' || EXTRACT(YEAR FROM sysdate), + 'DD-MON-YYYY') + AND a.end_date >= trunc(sysdate, 'YYYY') + AND NOT EXISTS ( -- remove the create allowances, we need to filter by the travel,storage acomodation + SELECT + 1 + FROM + posting_allowances_treated aa + WHERE + aa.per_id = p.per_id + AND aa.soj_id = a.soj_id + AND aa.delegation_org_id = e.main_org_id + AND aa.exercise_year = EXTRACT(YEAR FROM sysdate) + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/89_RIGD-3039_aud_posting_allowance_default.sql b/e-rights-common/src/main/database/release/archive/3.0.0/89_RIGD-3039_aud_posting_allowance_default.sql new file mode 100644 index 0000000..e633d69 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/89_RIGD-3039_aud_posting_allowance_default.sql @@ -0,0 +1,23 @@ +CREATE TABLE erights.aud_posting_allowance_default ( + rev NUMBER(10, 0) + NOT NULL ENABLE, + revtype NUMBER(3, 0), + posting_allowance_default_id NUMBER, + posting_allowance_type VARCHAR2(20 CHAR), + posting_allowance_req_type VARCHAR2(20 CHAR), + city_code_to VARCHAR2(3 CHAR), + city_code_from VARCHAR2(3 CHAR), + country_code_to VARCHAR2(3 CHAR), + country_code_from VARCHAR2(3 CHAR), + amount NUMBER, + currency VARCHAR2(3 CHAR), + exercise_year NUMBER(4, 0), + latest CHAR(1 CHAR), + source_data VARCHAR2(20 CHAR), + created_at DATE, + created_by NUMBER, + updated_by NUMBER, + updated_at DATE, + iata_code_from VARCHAR2(3 BYTE), + iata_code_to VARCHAR2(3 BYTE) +); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/91_RIGD-3060_v_assignments_hist_eeas.sql b/e-rights-common/src/main/database/release/archive/3.0.0/91_RIGD-3060_v_assignments_hist_eeas.sql new file mode 100644 index 0000000..5a15db8 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/91_RIGD-3060_v_assignments_hist_eeas.sql @@ -0,0 +1,39 @@ +CREATE OR REPLACE VIEW v_assignments_hist_eeas AS + SELECT + asgh.soj_id, + asgh.jcx_id, + asgh.job_id, + asgh.per_id, + asgh.toj_cd, + asgh.job_type, + asgh.start_date, + asgh.end_date, + asgh.ins_cd, + asgh.creation_date, + asgh.modification_date, + asgh.type_of_post, + del.org_id delegation_org_id + FROM + mv_assignments_hist_eeas asgh + INNER JOIN mv_jobs_hist_eeas jobh ON ( asgh.job_id = jobh.job_id + AND asgh.jcx_id = jobh.jcx_id ) + INNER JOIN mv_entities_hist enth ON ( jobh.org_id = enth.org_id ) + LEFT JOIN ( + SELECT + org_id + FROM + mv_entities + WHERE + is_delegation = 'Y' + ) del ON ( enth.main_org_id = del.org_id ) + WHERE + enth.start_date = ( + SELECT + MAX(enth2.start_date) + FROM + mv_entities_hist enth2 + WHERE + enth2.org_id = enth.org_id + AND ( asgh.start_date >= enth.start_date + OR asgh.end_date <= enth.end_date ) + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/93_RIGD-3071_v_person_address_hist.sql b/e-rights-common/src/main/database/release/archive/3.0.0/93_RIGD-3071_v_person_address_hist.sql new file mode 100644 index 0000000..2a62ea8 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/93_RIGD-3071_v_person_address_hist.sql @@ -0,0 +1,40 @@ +CREATE OR REPLACE VIEW erights.v_person_address_hist AS + SELECT + addh.per_id, + addh.start_date, + addh.end_date, + addh.effective_date, + addh.decl_chg_date, + addh.tadr_cd, + addh.address_type_code, + addh.country_code, + addh.city_name, + addh.postal_code, + addh.street_name, + addh.street_name1, + addh.street_name2, + addh.street_number, + addh.postal_box, + addh.comments, + addh.additional_address, + addh.additional_address2, + addh.oreder_address, + addh.language_code, + addh.per_id_rel_pers, + addh.surname, + addh.first_name, + addh.date_of_birth, + addh.title, + addh.link_adr_tel, + addh.sp2_address_id, + addh.iris_address_id, + addh.src_id, + addh.ins_cd, + addh.uniq_id, + addh.created_date, + addh.updated_date, + asgh.delegation_org_id + FROM + mv_person_address_hist addh + LEFT JOIN v_assignments_hist_eeas asgh ON ( addh.per_id = asgh.per_id + AND addh.start_date BETWEEN asgh.start_date AND asgh.end_date ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/94_RIGD-2911_mv_budget_line_data.sql b/e-rights-common/src/main/database/release/archive/3.0.0/94_RIGD-2911_mv_budget_line_data.sql new file mode 100644 index 0000000..f4d440a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/94_RIGD-2911_mv_budget_line_data.sql @@ -0,0 +1,83 @@ +DROP MATERIALIZED VIEW erights.mv_budget_line_data; + +CREATE MATERIALIZED VIEW erights.mv_budget_line_data ( id, budget_line_data_id, parent_local_key, budget_line, main_account, budget_position +, fund_source, delegation, lvl_code, lvl_name, commitment_id, commitment_header_id, exercise_id, fund_source_group, payment_credits_available_eur +, ral, total_commitments_eur, sync_commitments_date ) + BUILD IMMEDIATE +USING INDEX + REFRESH + FORCE + ON DEMAND +AS + SELECT + m.id, + m.id || fund_source budget_line_data_id, + m.parent_local_key, + m.budget_line, + m.main_account, + m.budget_position, + m.fund_source, + m.delegation, + m.lvl_code, + m.lvl_name, + CASE upper(m.commitment_id) + WHEN 'MANY COMMITMENTS' THEN + c.cp_loc_obj_foreign_id + ELSE + m.commitment_id + END commitment_id, + m.cp_header commitment_header_id, + m.exercise_id, + m.fund_source_group, + m.payment_credits_available_eur, + m.ral, + m.total_commitments_eur, + sync_time.last_execution_date sync_commitments_date + FROM + mv_report_summary_op_flat@easrefn.cc.cec.eu.int m + LEFT JOIN ( + SELECT + ch_loc_obj_foreign_id, + exercise_id, + MIN(cp_loc_obj_foreign_id) cp_loc_obj_foreign_id + FROM + mv_rgh_report_summary_commitments@easrefn + GROUP BY + ch_loc_obj_foreign_id, + exercise_id + ) c ON ( c.ch_loc_obj_foreign_id = m.cp_header + AND c.exercise_id = m.exercise_id ), + ( + SELECT + last_execution_date + FROM + easrefn.mv_budgdel_abac_sync_times@easrefn.cc.cec.eu.int + WHERE + process_name = 'SYNC_COMMITMENTS' + ) sync_time + WHERE + m.exercise_id > 2020; + +COMMENT ON MATERIALIZED VIEW erights.mv_budget_line_data IS + 'snapshot table for snapshot ERIGHTS.MV_BUDGET_LINE_DATA'; + +GRANT SELECT ON mv_budget_line_data TO erights_ro; + +INSERT INTO t_app_easrefn_objects ( + app_object_name_id, + easrefn_object_name, + priority +) VALUES ( + ( + SELECT + id + FROM + t_refresh_objects + WHERE + app_object_name = 'MV_BUDGET_LINE_DATA' + ), + 'MV_RGH_REPORT_SUMMARY_COMMITMENTS', + 2 +); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/95_RIGD-3110_v_current_exercise_new_travel_allowances.sql b/e-rights-common/src/main/database/release/archive/3.0.0/95_RIGD-3110_v_current_exercise_new_travel_allowances.sql new file mode 100644 index 0000000..97aecd3 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/95_RIGD-3110_v_current_exercise_new_travel_allowances.sql @@ -0,0 +1,140 @@ +CREATE OR REPLACE VIEW "ERIGHTS"."V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES" ( + "RECORD_KEY", + "SOJ_ID", + "JOB_ID", + "PER_ID", + "JOB_TYPE", + "ASSIGN_START_DATE_TO", + "ASSIGN_END_DATE_TO", + "NO_SYSPER", + "TITLE", + "SURNAME", + "GENRE", + "USERID", + "MONIKER", + "DOMAIN", + "DISPLAY_NAME", + "JCX_ID", + "ASSIGN_START_DATE", + "ASSIGN_END_DATE", + "LST_CD", + "LST_CODE", + "LST_BEG_DATE", + "LST_ASS_DATE", + "LST_END_DATE", + "CGR_CD", + "ORG_ID", + "MAIN_ORG_ID", + "ORG_NAME", + "ORG_CD", + "ORG_DESC", + "TOR_ID", + "TYPEOFENTITY_NAME", + "DEL_ID", + "DELEGATION_NAME", + "RESPONSIBLE", + "HEAD_OF_ENTITY", + "JOB_CITY_CODE", + "JOB_CITY_NAME", + "JOB_COUNTRY_CODE", + "JOB_COUNTRY_NAME", + "IATA_CODE", + "DELEGATION_ORG_ID", + "EXPATRATION_ALLOWANCE_DATE_FROM", + "EXPATRATION_ALLOWANCE_DATE_TO" +) AS + SELECT + to_char(a.soj_id) + || to_char(expat_allow.date_from, 'YYYYMMDD') record_key, + a.soj_id, + j.job_id, + p.per_id, + j.job_type, + a.start_date assign_start_date_to, + a.end_date assign_end_date_to, + NULL no_sysper,--p.no_sysper, + NULL title,--p.title, + p.last_name surname, + p.gender genre, + NULL userid,--p.userid, + NULL moniker,--p.moniker, + NULL domain,--p.domain, + p.last_name + || ' ' + || p.first_name display_name, + j.jcx_id, + a.start_date assign_start_date, + a.end_date assign_end_date, + p.statutory_link_code lst_cd, + p.statutory_link_desc lst_code, + NULL lst_beg_date,--p.lst_beg_date, + NULL lst_as_date,--p.lst_ass_date, + NULL lst_end_date,--p.lst_end_date, + NULL cgr_cd,--p.cgr_cd, + e.org_id, + e.main_org_id, + e.org_name, + e.org_cd, + e.org_desc, + e.tor_id, + e.typeofentity_name, + e.del_id, + e.delegation_name, + j.responsible, + j.head_of_entity, + j.location_city_code job_city_code, + j.location_city_name job_city_name, + j.location_country_code job_country_code, + j.location_country_name job_country_name, + ac.iata_code, + e.main_org_id delegation_org_id, + expat_allow.date_from expatration_allowance_date_from, + expat_allow.date_to expatration_allowance_date_to + FROM + v_staffmembers p + INNER JOIN mv_assignments_hist_eeas a ON ( p.per_id = a.per_id ) + INNER JOIN mv_jobs_hist_eeas j ON ( a.job_id = j.job_id + AND a.jcx_id = j.jcx_id ) + INNER JOIN mv_entities e ON ( j.org_id = e.org_id ) + INNER JOIN airport_cities ac ON ( ac.city_code = j.location_city_code + AND ac.country_code = j.location_country_code ) + INNER JOIN ( + SELECT + r.per_id_attrib, + r.date_from, + r.date_to + FROM + mv_person_relatives_rights r + WHERE + r.rgt_id = 3002 -- Expatriation allowance (IR) + AND r.rtt_id_type IN ( 410, 411 ) -- 410 => [IR = IDE] Expatriation Allowance : 16%, 411 =>[IR = IEX] Foreign Residence Allowance : 4% + AND r.date_from <= TO_DATE('31-DEC-' || EXTRACT(YEAR FROM sysdate), + 'DD-MON-YYYY') + AND r.date_to >= trunc(sysdate, 'YYYY') + ) expat_allow ON ( expat_allow.per_id_attrib = p.per_id ) + WHERE + EXISTS ( + SELECT + 1 + FROM + mv_entities e2 + WHERE + e2.is_delegation = 'Y' + AND e2.org_id = e.main_org_id + ) + AND ( p.statutory_link_code IN ( 'CA', 'CB', 'FP', 'FS', 'TP', + 'TE' ) ) + AND a.start_date <= TO_DATE('31-DEC-' || EXTRACT(YEAR FROM sysdate), + 'DD-MON-YYYY') + AND a.end_date >= trunc(sysdate, 'YYYY') + AND NOT EXISTS ( -- remove the create allowances, we need to filter by the travel,storage acomodation + SELECT + 1 + FROM + posting_allowances_treated aa + WHERE + aa.per_id = p.per_id + AND aa.soj_id = a.soj_id + AND aa.delegation_org_id = e.main_org_id + AND aa.exercise_year = EXTRACT(YEAR FROM sysdate) + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/96_RIGD-3115_backup_POSTING_ALLOWANCE_DEFAULT.sql b/e-rights-common/src/main/database/release/archive/3.0.0/96_RIGD-3115_backup_POSTING_ALLOWANCE_DEFAULT.sql new file mode 100644 index 0000000..89c8445 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/96_RIGD-3115_backup_POSTING_ALLOWANCE_DEFAULT.sql @@ -0,0 +1,6 @@ +CREATE TABLE bkp$posting_allowance_default_rigd3115 + AS + SELECT + * + FROM + posting_allowance_default; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/97_RIGD-3115_pkg_posting_allowances.pks.sql b/e-rights-common/src/main/database/release/archive/3.0.0/97_RIGD-3115_pkg_posting_allowances.pks.sql new file mode 100644 index 0000000..6d844fe --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/97_RIGD-3115_pkg_posting_allowances.pks.sql @@ -0,0 +1,14 @@ +CREATE OR REPLACE PACKAGE pkg_posting_allowances AS +/** ----------------------------------------------------------------------------- +* DESCRIPTION : Procedures and functions involved in the posting allowances +* APPLICATION(s) : e-Rights +* VERSION : 1.0 +* DATE : 04/05/2023 +* +* Version Date Jira Author Comments +* 1.0 04/05/2023 RIGD-3115 iwalloar Created +* ------------------------------------------------------------------------------- +*/ + PROCEDURE p_clean_default_routes_price; + +END pkg_posting_allowances; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/98_RIGD-3115_pkg_posting_allowances.pkb.sql b/e-rights-common/src/main/database/release/archive/3.0.0/98_RIGD-3115_pkg_posting_allowances.pkb.sql new file mode 100644 index 0000000..ec3d97c --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/98_RIGD-3115_pkg_posting_allowances.pkb.sql @@ -0,0 +1,66 @@ +CREATE OR REPLACE PACKAGE BODY pkg_posting_allowances AS +/** ----------------------------------------------------------------------------- +* DESCRIPTION : Procedures and functions involved in the posting allowances +* APPLICATION(s) : e-Rights +* VERSION : 1.0 +* DATE : 04/05/2023 +* +* Version Date Jira Author Comments +* 1.0 04/05/2023 RIGD-3115 iwalloar Created +* ------------------------------------------------------------------------------- +*/ + /** + * Clean duplicated routes price in POSTING_ALLOWANCE_DEFAULT + */ + + PROCEDURE p_clean_default_routes_price IS + BEGIN + pkg_log.debug('Cleaning started', 'PKG_POSTING_ALLOWANCES.P_CLEAN_DEFAULT_ROUTES_PRICE'); + FOR lr_def IN ( + SELECT + exercise_year, + iata_code_from, + iata_code_to, + MIN(posting_allowance_default_id) first_posting_allowance_default_id + FROM + posting_allowance_default pad + WHERE + posting_allowance_type = 'ANNUAL TRAVEL' + AND posting_allowance_req_type = 'INITIAL' + AND latest = 'Y' + GROUP BY + exercise_year, + iata_code_from, + iata_code_to + HAVING + COUNT(*) > 1 + ) LOOP + DELETE FROM posting_allowance_default + WHERE + posting_allowance_type = 'ANNUAL TRAVEL' + AND posting_allowance_req_type = 'INITIAL' + AND latest = 'Y' + AND exercise_year = lr_def.exercise_year + AND iata_code_from = lr_def.iata_code_from + AND iata_code_to = lr_def.iata_code_to + AND posting_allowance_default_id <> lr_def.first_posting_allowance_default_id; + + pkg_log.debug('Cleaning duplicates for exercise_year=' + || lr_def.exercise_year + || ', iata_code_from=' + || lr_def.iata_code_from + || ', iata_code_to=' + || lr_def.iata_code_to + || ' (First ID=' + || lr_def.first_posting_allowance_default_id + || '): ' + || SQL%rowcount + || ' row(s) deleted', 'PKG_POSTING_ALLOWANCES.P_CLEAN_DEFAULT_ROUTES_PRICE'); + + END LOOP; + + COMMIT; + pkg_log.debug('Cleaning ended', 'PKG_POSTING_ALLOWANCES.P_CLEAN_DEFAULT_ROUTES_PRICE'); + END p_clean_default_routes_price; + +END pkg_posting_allowances; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/99_RIGD-3115_J_CLEANUP_POSTING_ALLOWANCE_DEFAULT.sql b/e-rights-common/src/main/database/release/archive/3.0.0/99_RIGD-3115_J_CLEANUP_POSTING_ALLOWANCE_DEFAULT.sql new file mode 100644 index 0000000..3355fc1 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/99_RIGD-3115_J_CLEANUP_POSTING_ALLOWANCE_DEFAULT.sql @@ -0,0 +1,30 @@ +BEGIN + DBMS_SCHEDULER.CREATE_JOB ( + job_name => '"ERIGHTS"."J_CLEANUP_POSTING_ALLOWANCE_DEFAULT"', + job_type => 'PLSQL_BLOCK', + job_action => 'begin pkg_posting_allowances.p_clean_default_routes_price; end;', + number_of_arguments => 0, + start_date => TO_TIMESTAMP_TZ('2023-05-04 14:39:33.000000000 EUROPE/PARIS','YYYY-MM-DD HH24:MI:SS.FF TZR'), + repeat_interval => 'Freq=HOURLY;Interval=1', + end_date => NULL, + enabled => FALSE, + auto_drop => TRUE, + comments => 'Cleans duplicates in POSTING_ALLOWANCE_DEFAULT'); + + + + + DBMS_SCHEDULER.SET_ATTRIBUTE( + name => '"ERIGHTS"."J_CLEANUP_POSTING_ALLOWANCE_DEFAULT"', + attribute => 'store_output', value => TRUE); + DBMS_SCHEDULER.SET_ATTRIBUTE( + name => '"ERIGHTS"."J_CLEANUP_POSTING_ALLOWANCE_DEFAULT"', + attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_OFF); + + + + + DBMS_SCHEDULER.enable( + name => '"ERIGHTS"."J_CLEANUP_POSTING_ALLOWANCE_DEFAULT"'); +END; +/ \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/Import eTravel routes price into Posting Allowance Defaults/01 ERIGHTS Backup POSTING_ALLOWANCE_DEFAULT.sql b/e-rights-common/src/main/database/release/archive/3.0.0/Import eTravel routes price into Posting Allowance Defaults/01 ERIGHTS Backup POSTING_ALLOWANCE_DEFAULT.sql new file mode 100644 index 0000000..9aedff8 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/Import eTravel routes price into Posting Allowance Defaults/01 ERIGHTS Backup POSTING_ALLOWANCE_DEFAULT.sql @@ -0,0 +1,3 @@ +create table bkp$posting_allowance_default_RIGD3102 as +select * +from posting_allowance_default ; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/Import eTravel routes price into Posting Allowance Defaults/02 ETRAVEL Inject routes into POSTING_ALLOWANCE_DEFAULT.sql b/e-rights-common/src/main/database/release/archive/3.0.0/Import eTravel routes price into Posting Allowance Defaults/02 ETRAVEL Inject routes into POSTING_ALLOWANCE_DEFAULT.sql new file mode 100644 index 0000000..58d0495 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/Import eTravel routes price into Posting Allowance Defaults/02 ETRAVEL Inject routes into POSTING_ALLOWANCE_DEFAULT.sql @@ -0,0 +1,117 @@ +/* +-- This is not needed as routes on previous years won't be used +INSERT INTO posting_allowance_default@erights_test pad ( + posting_allowance_default_id, + posting_allowance_type, + posting_allowance_req_type, + amount, + currency, + exercise_year, + latest, + source_data, + created_at, + created_by, + updated_by, + updated_at, + iata_code_from, + iata_code_to +) + SELECT + seq_posting_allowance_default.nextval@erights_test, + 'ANNUAL TRAVEL', + 'INITIAL', + price, + 'EUR', + exercise_year, + 'Y', + 'eTravel', + sysdate, + 0, + 0, + sysdate, + origin_airport_iata_code, + destination_airport_iata_code + FROM + ( + SELECT + EXTRACT(YEAR FROM r.valid_from) exercise_year, + org_a.iata_code origin_airport_iata_code, + dst_a.iata_code destination_airport_iata_code, + MIN(r.price) price + FROM + v_live_routes r + INNER JOIN v_live_airports org_a ON ( r.org_airport_stem_id = org_a.airport_stem_id ) + INNER JOIN v_live_airports dst_a ON ( r.dst_airport_stem_id = dst_a.airport_stem_id ) + WHERE + r.valid_from IS NOT NULL + AND r.valid_to IS NOT NULL + AND EXTRACT(YEAR FROM r.valid_from) >= 2018 + AND r.active = 'Y' + GROUP BY + EXTRACT(YEAR FROM r.valid_from), + org_a.iata_code, + dst_a.iata_code + ); +*/ + +MERGE INTO posting_allowance_default@erights_acc pad +USING ( + SELECT + 2023 exercise_year, + org_a.iata_code origin_airport_iata_code, + dst_a.iata_code destination_airport_iata_code, + round(MIN(r.price) * 1.07, + 2) price + FROM + v_live_routes r + INNER JOIN v_live_airports org_a ON ( r.org_airport_stem_id = org_a.airport_stem_id ) + INNER JOIN v_live_airports dst_a ON ( r.dst_airport_stem_id = dst_a.airport_stem_id ) + WHERE + r.valid_from IS NOT NULL + AND r.valid_to IS NOT NULL + AND EXTRACT(YEAR FROM r.valid_from) = 2022 + AND r.active = 'Y' + GROUP BY + EXTRACT(YEAR FROM r.valid_from), + org_a.iata_code, + dst_a.iata_code +) r ON ( pad.exercise_year = r.exercise_year + AND pad.iata_code_from = r.origin_airport_iata_code + AND pad.iata_code_to = r.destination_airport_iata_code ) +WHEN MATCHED THEN UPDATE +SET pad.amount = r.price, + pad.source_data = 'eTravel', + pad.updated_at = sysdate +WHEN NOT MATCHED THEN +INSERT ( + posting_allowance_default_id, + posting_allowance_type, + posting_allowance_req_type, + amount, + currency, + exercise_year, + latest, + source_data, + created_at, + created_by, + updated_by, + updated_at, + iata_code_from, + iata_code_to ) +VALUES + ( seq_posting_allowance_default.nextval@erights_acc, + 'ANNUAL TRAVEL', + 'INITIAL', + r.price, + 'EUR', + r.exercise_year, + 'Y', + 'eTravel', + sysdate, + 0, + 0, + sysdate, + r.origin_airport_iata_code, + r.destination_airport_iata_code ); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/Import eTravel routes price into Posting Allowance Defaults/99.04 Find discrepancies between allowances and default route prices.sql b/e-rights-common/src/main/database/release/archive/3.0.0/Import eTravel routes price into Posting Allowance Defaults/99.04 Find discrepancies between allowances and default route prices.sql new file mode 100644 index 0000000..0b7cb71 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/Import eTravel routes price into Posting Allowance Defaults/99.04 Find discrepancies between allowances and default route prices.sql @@ -0,0 +1,42 @@ +SELECT DISTINCT + pa.posting_allowance_id, + pa.posting_allowance_string_id, + pa.state, + pa.assignment_iata_code, + pa.origin_iata_code, + pa.outgoing_trip_amount, + pad_outgoing.amount default_outgoing_amount, + --pad_outgoing.source_data outgoing_source_data, + CASE + WHEN abs(pa.outgoing_trip_amount - pad_outgoing.amount) > 0.01 THEN + 1 + ELSE + 0 + END outgoing_amount_diff, + pa.return_trip_amount, + pad_return.amount default_return_amount, + --pad_return.source_data return_source_data, + CASE + WHEN abs(pa.return_trip_amount - pad_return.amount) > 0.01 THEN + 1 + ELSE + 0 + END return_amount_diff +FROM + posting_allowances pa + INNER JOIN posting_allowance_default pad_outgoing ON ( pa.exercise_year = pad_outgoing.exercise_year + AND pa.assignment_iata_code = pad_outgoing.iata_code_from + AND pa.origin_iata_code = pad_outgoing.iata_code_to ) + INNER JOIN posting_allowance_default pad_return ON ( pa.exercise_year = pad_return.exercise_year + AND pa.assignment_iata_code = pad_return.iata_code_to + AND pa.origin_iata_code = pad_return.iata_code_from ) +WHERE + pa.exercise_year = 2023 +-- AND ( (abs(pa.outgoing_trip_amount - pad_outgoing.amount) > 0.01 AND abs(pa.outgoing_trip_amount - pad_outgoing.amount) <= 0.02) +-- OR (abs(pa.return_trip_amount - pad_return.amount) > 0.01 AND abs(pa.return_trip_amount - pad_return.amount) <= 0.02) ) + AND ( abs(pa.outgoing_trip_amount - pad_outgoing.amount) > 0.01 + OR abs(pad_outgoing.amount - pa.outgoing_trip_amount) > 0.01 + OR abs(pa.return_trip_amount - pad_return.amount) > 0.01 + OR abs(pad_return.amount - pa.return_trip_amount) > 0.01) +ORDER BY + 2; diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/1. eTravel regularization extract for eRights.sql b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/1. eTravel regularization extract for eRights.sql new file mode 100644 index 0000000..e453335 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/1. eTravel regularization extract for eRights.sql @@ -0,0 +1,173 @@ +-- select * from T_PAYMENTS t where per_id = 90144933 +-- select * from T_PAYMENTS t where done_by_ts between to_date ('18/01/2021','dd/mm/rrrr') and to_date ('19/01/2021','dd/mm/rrrr'); +-- select * from T_PAYMENT_LISTS where payment_list_stem_id = 14747; +-- select * from T_TRIPS where person2_stem_id = 47528; +-- select * from T_PAYMENT_LIST_TRIPS where trip_stem_id between 177013 and 177016; +-- select * from T_TRAVEL_FILES where person_stem_id = 47528; +-- select * from T_TRIPS where person2_stem_id = 47528; +-- select * from T_LOCATIONS where airport_stem_id = 4072; +-- select * from T_ROUTES where route_stem_id = 148605; +-- select * from T_CONNECTIONS where connection_stem_id = 1496234 +-- drop table TEST_MIGRATION_TABLE + +alter table ERIGHTS_MIGRATION_TABLE rename to bkp$ERIGHTS_MIGRATION_TABLE_202302091238; + +-- drop table ERIGHTS_MIGRATION_TABLE; +-- drop sequence sq_erights_migr; +create sequence sq_erights_migr minvalue 1 maxvalue 999999999999999999999999999 start with 1 increment by 1 cache 5000; + + +create TABLE ERIGHTS_MIGRATION_TABLE as +select sq_erights_migr.nextVal record_id, dat.* from +( + +with t_location as ( select distinct city_id, country_id , airport_stem_id from t_locations where 1=1 and deleted = 'N' and archived = 'N' and airport_base ='Y' and city_id is not null ) , + t_payment as + ( + select t.payment_id, t.exercise_stem_id, t.person_stem_id, t.per_id, t.payment_list_stem_id, t.total_amount, t.regularization_amount, t.origin_period, t.payment_period, + case when t.done_by_per_id < 0 then 0 else t.done_by_per_id end created_by , t.done_by_ts created_on , + to_number(substr(t.origin_period,1,2)) origin_year, to_number(substr(t.origin_period,3,2)) origin_month, + to_number(substr(t.payment_period,1,2)) payment_year, to_number(substr(t.payment_period,3,2)) payment_month, + case when t.done_by_ts < to_date('30/06/' || e.name, 'dd/mm/rrrr' ) then to_date('01/06/' || e.name, 'dd/mm/rrrr' ) else to_date('31/12/' || e.name, 'dd/mm/rrrr' ) end calc_assign_records_date, + row_number() over ( partition by t.person_stem_id, t.exercise_stem_id order by t.payment_id desc ) rn + from T_PAYMENTS t + inner join t_exercises e on t.exercise_stem_id = e.exercise_stem_id + where t.exercise_stem_id >= (select max(t2.exercise_id) - 4 from t_exercises t2) -- last 5 or 6 years + and t.deleted = 'N' and t.processed ='Y' + -- and per_id = 90144933 + -- and per_id = 90013645 + ), + t_codes as --- Also check MV_SY2_HIST_REL_PERS + ( + select 2 trp_cd, 'Parent' trp_code from dual union all + select 3 trp_cd, 'Parent''s spouse' trp_code from dual union all + select 4 trp_cd, 'Grandparent' trp_code from dual union all + select 6 trp_cd, 'Child' trp_code from dual union all + select 7 trp_cd, 'Biological child' trp_code from dual union all + select 8 trp_cd, 'Adopted child' trp_code from dual union all + select 9 trp_cd, 'Spouse''s child' trp_code from dual union all + select 10 trp_cd, 'Grandchild' trp_code from dual union all + select 12 trp_cd, 'Other family links' trp_code from dual union all + select 13 trp_cd, 'Brother / Sister' trp_code from dual union all + select 14 trp_cd, 'Uncle / Aunt' trp_code from dual union all + select 16 trp_cd, 'Nephew / Niece' trp_code from dual union all + select 18 trp_cd, 'Son / Daughter-in-law' trp_code from dual union all + select 20 trp_cd, 'Biological parent' trp_code from dual union all + select 21 trp_cd, 'Adoptive parent' trp_code from dual union all + select 22 trp_cd, 'Spouse''s parent' trp_code from dual union all + select 23 trp_cd, 'Parent''s ex-spouse' trp_code from dual union all + select 24 trp_cd, 'Ex-spouse''s child' trp_code from dual union all + select 41 trp_cd, 'Spouse' trp_code from dual union all + select 42 trp_cd, 'Assimilated partner' trp_code from dual union all + select 43 trp_cd, 'Not assimilated partner' trp_code from dual union all + select 44 trp_cd, 'Ex-spouse / Person' trp_code from dual union all + select 45 trp_cd, 'Separated spouse' trp_code from dual union all + select 46 trp_cd, 'Ex-assimilated partner' trp_code from dual union all + select 47 trp_cd, 'Ex-non-assimilated partner' trp_code from dual union all + select 48 trp_cd, 'De facto separated spouse' trp_code from dual union all + select 49 trp_cd, 'Deceased spouse' trp_code from dual union all + select 50 trp_cd, 'Widowed spouse' trp_code from dual union all + select 60 trp_cd, 'Other links' trp_code from dual union all + select 61 trp_cd, 'Cohabiter (SIC)' trp_code from dual union all + select 62 trp_cd, 'Treated as dependent article 2(4)' trp_code from dual union all + select 63 trp_cd, 'Person without determined link' trp_code from dual union all + select 64 trp_cd, 'Guardian' trp_code from dual union all + select 65 trp_cd, 'Child under guardianship' trp_code from dual union all + select 67 trp_cd, 'Foster parent' trp_code from dual union all + select 68 trp_cd, 'Child in foster family' trp_code from dual + ) , + first_payments as + ( select t.exercise_stem_id, t.person_stem_id, t.per_id, min(t.payment_list_stem_id) first_payment_list_stem_id , min(trunc(t.done_by_ts)) first_payment_date + from T_PAYMENTS t + where t.exercise_stem_id >= (select max(exercise_id) - 4 from t_exercises) -- last 5 or 6 years + and t.deleted = 'N' and t.processed ='Y' + -- and t.per_id = 90144933 + group by t.exercise_stem_id, t.person_stem_id, t.per_id + ), + assignments_history as + ( + select per_id, person_stem_id, soj_id, start_Date_aff, end_Date_aff, country_id, country_name_eng, ltv_vil_cd,description_en -- job_id, lst_cd, + from mv_assignments_eeas_fonc + -- where per_id =90144933 + union + select per_id, person_stem_id, soj_id, date_from, date_to, country_id, country_name_eng, ltv_vil_cd,description_en -- job_id, lst_cd, + from mv_assignments_com_fonc + -- where per_id =90144933 + ) + + select -- p.person_stem_id, p.payment_list_stem_id, p.origin_period, p.payment_period, plt.trip_stem_id, t.route_stem_id, t.person_stem_id,r.org_airport_stem_id, r.dst_airport_stem_id, + -- p.regularization_amount, plt.payable_amount, + distinct + p.person_stem_id, t.person_stem_id rel_person_stem_id, + p.per_id, + case when p.per_id = pr.per_id then null else pr.per_id end rel_per_id, + pr.firstname, pr.lastname, pr.birthdate, lpr.RELATIONSHIP_TYPE, --pr.nationality, + case + when c.trp_code is null and p.person_stem_id != t.person_stem_id then 'N/A - check EASREFN.MV_PERSON_RELATIVES for more options' + when p.person_stem_id = t.person_stem_id then 'Staff Member' + else c.trp_code + end trp_code, + p.exercise_stem_id, to_number(e.name) exercise_year, p.created_by, p.created_on, + case when p.per_id = pr.per_id then p.total_amount else null end total_amount, + t.price price_prorata, case when prorata = 0 or prorata is null then null else t.price* (12/prorata) end full_price, t.percentage, t.prorata, + p.origin_year, p.origin_month, p.payment_year, p.payment_month, + a_org.iata_code ori_iata_code, a_org.airport_name ori_airport_name, + trim(substr(a_org.airport_name, 1, instr(a_org.airport_name, '-', -1)-1 )) ori_city_name, trim(substr(a_org.airport_name, instr(a_org.airport_name, '-', -1) + 1 )) ori_country_id, + --l_org.city_id ori_city_id, l_org.country_id ori_country_id, + a_dst.iata_code dst_iata_code, a_dst.airport_name dst_airport_name, + trim(substr(a_dst.airport_name, 1, instr(a_dst.airport_name, '-', -1)-1 )) dst_city_name, trim(substr(a_dst.airport_name, instr(a_dst.airport_name, '-', -1) + 1 )) dst_country_id, + --l_dst.city_id dst_city_id, l_dst.country_id dst_country_id, + o.country_id country_of_origin, + nvl(ms.isms,0) is_member_state, + case when p.per_id = pr.per_id then ah.soj_id else null end assignm_soj_id, + case when p.per_id = pr.per_id then ah.start_date_aff else null end assignm_start_date, + case when p.per_id = pr.per_id then ah.end_date_aff else null end assignm_end_date , + case when p.per_id = pr.per_id then ah.country_id else null end assignm_country_id, + case when p.per_id = pr.per_id then ah.ltv_vil_cd else null end assignm_city_id, + 0.01 inverse_route_amount, + r.org_airport_stem_id, r.dst_airport_stem_id + from T_PAYMENT p + inner join first_payments fp on p.per_id = fp.per_id and p.exercise_stem_id = fp.exercise_stem_id + inner join T_PAYMENT_LIST_TRIPS plt on p.payment_list_stem_id = plt.payment_list_stem_id + inner join t_trips t on plt.trip_stem_id = t.trip_stem_id and t.person2_stem_id = p.person_stem_id + inner join t_persons pr on t.person_stem_id = pr.person_stem_id + inner join t_routes r on r.route_stem_id = t.route_stem_id + left join t_airports a_org on r.org_airport_stem_id = a_org.airport_stem_id + left join t_airports a_dst on r.dst_airport_stem_id = a_dst.airport_stem_id + -- left join t_location l_org on a_org.airport_stem_id = l_org.airport_stem_id and l_org.city_id = a_org.iata_code + -- left join t_location l_dst on a_dst.airport_stem_id = l_dst.airport_stem_id and l_dst.city_id = a_dst.iata_code + inner join t_exercises e on p.exercise_stem_id = e.exercise_stem_id + left join V_LIVE_PERSON_RELS lpr on lpr.PERSON1_STEM_ID = p.person_stem_id and lpr.PERSON2_STEM_ID = t.person_stem_id and p.created_on between lpr.VALID_FROM and lpr.VALID_TO + left join t_codes c on lpr.RELATIONSHIP_TYPE = c.trp_cd + left join ( select distinct person_Stem_id, is_origin_place, city_id, country_id, valid_from, valid_to, + exercise_stem_id, exercise, /*po_from, po_to, ex_from, ex_to,*/ active + from V_EXERCISE_PLACE_ORIGIN ) o on o.person_stem_id = p.person_stem_id and fp.first_payment_date between o.valid_from and o.valid_to --to_date('01/06' || e.name, 'dd/mm/rrrr') + --left join mv_place_of_origin o on o.per_id = p.per_id and fp.first_payment_date between o.valid_from_adr and o.valid_to_adr --to_date('01/06' || e.name, 'dd/mm/rrrr') + left join assignments_history ah on p.per_id = ah.per_id and p.calc_assign_records_date between ah.start_date_aff and ah.end_date_aff + left join MV_CAPITAL_OF_MS ms on o.country_id = ms.country_id + where t.deleted = 'N' + and t.archived = 'N' + and plt.archived = 'N' + and plt.deleted = 'N' + and r.deleted = 'N' + and r.archived = 'N' + and p.rn = 1 + and o.IS_ORIGIN_PLACE = 'Y' + and a_org.active = 'Y' + and a_org.archived = 'N' + and a_org.deleted = 'N' + and a_dst.active = 'Y' + and a_dst.archived = 'N' + and a_dst.deleted = 'N' + -- and p.per_id = 90323780 -- 90144933 +) dat +-- order by p.per_id, rel_per_id, p.exercise_stem_id + -- and p.per_id = 90144933 and p.payment_id = 116982 and p.exercise_stem_id = 10 + -- and a_org.deleted = 'N' and a_org.archived = 'N' a_org pr.active = 'Y' + -- and a_dst.deleted = 'N' and a_dst.archived = 'N' a_dst pr.active = 'Y' + -- and r.archived = 'N' and r.active = 'Y' + -- and pr.deleted = 'N' and pr.archived = 'N' and pr.active = 'Y' +; + + +create index idx_iata_exercise2 on ERIGHTS_MIGRATION_TABLE(exercise_stem_id, ori_iata_code, dst_iata_code); diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/2. eTravel regularization extract for eRights QUALITY script.sql b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/2. eTravel regularization extract for eRights QUALITY script.sql new file mode 100644 index 0000000..cec5b45 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/2. eTravel regularization extract for eRights QUALITY script.sql @@ -0,0 +1,69 @@ +-- drop table ERIGHTS_MIGRATION_MULTIPLICITY_TABLE; +-- create table ERIGHTS_MIGRATION_MULTIPLICITY_TABLE as select cast(null as varchar2(1000)) reason, erights_migration_table.* from erights_migration_table where 1=2; +-- select * from ERIGHTS_MIGRATION_MULTIPLICITY_TABLE; + + +-- truncate table ERIGHTS_MIGRATION_MULTIPLICITY_TABLE + +-- 1. Official beneficiaries +-- 1a. A check query +select * from + ( + select per_id, exercise_stem_id, + price_prorata , lead(price_prorata) over ( partition by per_id,exercise_stem_id order by per_id,exercise_stem_id, assignm_start_date, country_of_origin) lead_price_prorata + from + ( + with + multiple_main_beneficiaries as ( select per_id, exercise_stem_id, count(1) c from erights_migration_table where rel_per_id is null group by per_id, exercise_stem_id having count(1) > 1 ) + select emt.* -- ,mmb.* + from erights_migration_table emt + inner join multiple_main_beneficiaries mmb on emt.per_id = mmb.per_id and emt.exercise_stem_id = mmb.exercise_stem_id and emt.rel_per_id is null + order by emt.per_id, emt.exercise_stem_id + ) + ) where price_prorata != lead_price_prorata; + + +-- 1b. Insert into log table +insert into ERIGHTS_MIGRATION_MULTIPLICITY_TABLE + with + multiple_main_beneficiaries as ( select per_id, exercise_stem_id, count(1) c from erights_migration_table where rel_per_id is null group by per_id, exercise_stem_id having count(1) > 1 ) + select 'Multiple main beneficiaries' r , emt.* -- ,mmb.* + from erights_migration_table emt + inner join multiple_main_beneficiaries mmb on emt.per_id = mmb.per_id and emt.exercise_stem_id = mmb.exercise_stem_id and emt.rel_per_id is null; + + commit; + +-- 2. Attached to main beneficiaries ( spouces , kids ) +-- 2a. A check query +select * from + ( + select per_id, exercise_stem_id, + price_prorata , lead(price_prorata) over ( partition by per_id,exercise_stem_id, rel_per_id order by per_id,exercise_stem_id,rel_per_id) lead_price_prorata + from + ( + with + multiple_beneficiaries as ( select per_id, rel_per_id, exercise_stem_id, count(1) c from erights_migration_table where rel_per_id is not null group by per_id, rel_per_id, exercise_stem_id having count(1) > 1 ) + select emt.* -- , mb.* + from erights_migration_table emt + inner join multiple_beneficiaries mb on emt.per_id = mb.per_id and emt.exercise_stem_id = mb.exercise_stem_id and emt.rel_per_id = mb.rel_per_id + order by emt.per_id, emt.exercise_stem_id, emt.rel_per_id + ) + ) where price_prorata != lead_price_prorata; + +-- 2b. Insert into log table +insert into ERIGHTS_MIGRATION_MULTIPLICITY_TABLE + with + multiple_beneficiaries as ( select per_id, rel_per_id, exercise_stem_id, count(1) c from erights_migration_table where rel_per_id is not null group by per_id, rel_per_id, exercise_stem_id having count(1) > 1 ) + select 'Attached to main beneficiaries', emt.* -- , mb.* + from erights_migration_table emt + inner join multiple_beneficiaries mb on emt.per_id = mb.per_id and emt.exercise_stem_id = mb.exercise_stem_id and emt.rel_per_id = mb.rel_per_id; + + commit; + + + + + + +select * from erights_migration_table where per_id =10039599 and exercise_stem_id = 7 ; +select * from erights_migration_table where per_id =90004445 order by exercise_stem_id, relationship_type, rel_per_id diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/3. eTravel regularization update inverse route amt-1.sql b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/3. eTravel regularization update inverse route amt-1.sql new file mode 100644 index 0000000..3efc4a2 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/3. eTravel regularization update inverse route amt-1.sql @@ -0,0 +1,107 @@ +-- 1. Use exixsting payments in the same year to get amount of inverse route. This step is much faster than the next , that is why we run this +declare + v_inv_route_amt number; +begin + for cur_exercise in ( select distinct exercise_stem_id, exercise_year from ERIGHTS_MIGRATION_TABLE order by exercise_stem_id ) + loop + for cur_iata in ( select distinct exercise_stem_id, ori_iata_code, dst_iata_code, to_date('01/06/' || exercise_year, 'dd/mm/rrrr') onDate, org_airport_stem_id, dst_airport_stem_id + from ERIGHTS_MIGRATION_TABLE e where e.exercise_stem_id = cur_exercise.exercise_stem_id ) + loop + begin + -- try to find an inverse route in the same year + + select emt.full_price into v_inv_route_amt + from + ( select e.*, row_number() over ( partition by exercise_stem_id, ori_iata_code, dst_iata_code order by full_price desc ) rn + from ERIGHTS_MIGRATION_TABLE e + where e.ori_iata_code = cur_iata.dst_iata_code + and e.dst_iata_code = cur_iata.ori_iata_code + and e.exercise_stem_id = cur_iata.exercise_stem_id + ) emt + where emt.rn = 1 ; -- this may lead to errors as it just gets the highest full price + exception + when no_data_found then -- suppress, actually we will update with original fictional small price + v_inv_route_amt := 0.01; + end; + + update ERIGHTS_MIGRATION_TABLE e + set e.inverse_route_amount = v_inv_route_amt + where e.exercise_stem_id = cur_iata.exercise_stem_id + and e.ori_iata_code = cur_iata.ori_iata_code + and e.dst_iata_code = cur_iata.dst_iata_code; + + commit; + + end loop; --cur_iata + + end loop; -- cur_exercise +end; +/ + + +create table bkp$erights_migr_inverse_route_202302091300 as select * from erights_migr_inverse_route; +truncate table erights_migr_inverse_route; + +drop table erights_migr_inverse_route; + +alter table bkp$erights_migr_inverse_route_202302091300 rename to erights_migr_inverse_route; + +-- 2, for the ones that were not covered in step 1 , do the calculation of route amount. This is an extremely slow step so do not use it too often; the data is saved in a table which can be preserved as this data is non-volatile +declare + v_inv_route_amt number; + i integer; +begin + i:=0; + for cur_exercise in ( select distinct exercise_stem_id, exercise_year from ERIGHTS_MIGRATION_TABLE order by exercise_stem_id ) + loop + for cur_iata in ( select distinct e.exercise_stem_id, e.ori_iata_code, e.dst_iata_code, to_date('01/06/' || e.exercise_year, 'dd/mm/rrrr') onDate, e.org_airport_stem_id, e.dst_airport_stem_id + from ERIGHTS_MIGRATION_TABLE e + left join erights_migr_inverse_route i on e.exercise_stem_id = i.exercise_id + and e.org_airport_stem_id = i.dst_stem_id and e.dst_airport_stem_id = i.org_stem_id + where e.exercise_stem_id = cur_exercise.exercise_stem_id + and i.org_stem_id is null and i.dst_stem_id is null + and ( e.inverse_route_amount is null or e.inverse_route_amount =0.01) + ) + loop + begin + -- try to find an inverse route in the same year + + v_inv_route_amt := round ( pkg_route_calculation.F_FIND_IATA_FARE( P_ORG_AIRPORT_ID => cur_iata.dst_airport_stem_id, + P_DST_AIRPORT_ID => cur_iata.org_airport_stem_id , + P_DATE => cur_iata.ondate + ) , 2 ) ; + exception + when no_data_found then -- suppress, actually we will update with original fictional small price + v_inv_route_amt := 0.01; + end; + + i:=i+1; + + insert into erights_migr_inverse_route (org_stem_id , org_iata_code , dst_stem_id , dst_iata_Code , exercise_id , amount ) + select cur_iata.dst_airport_stem_id, cur_iata.dst_iata_code, cur_iata.org_airport_stem_id, cur_iata.ori_iata_code, cur_iata.exercise_stem_id, v_inv_route_amt from dual; + + + if i>= 100 then + commit; + i:= 0; + end if; + + end loop; --cur_iata + + end loop; -- cur_exercise +commit; -- for the last of the records +end; +/ + +--3. update the ERIGHTS_MIGRATION_TABLE table +update ERIGHTS_MIGRATION_TABLE e + set e.inverse_route_amount = nvl( ( select amount + from erights_migr_inverse_route i + where i.exercise_id = e.exercise_stem_id + and i.dst_stem_id = e.org_airport_stem_id + and i.org_stem_id = e.dst_airport_stem_id + and i.amount != 0.01 + ), 0.01 ) + where nvl(inverse_route_amount, 0.01) = 0.01; + commit; + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/4. Fix relationship.sql b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/4. Fix relationship.sql new file mode 100644 index 0000000..7d6c3ad --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/4. Fix relationship.sql @@ -0,0 +1,37 @@ + +--FIX relation type +declare + v_trp_cd integer; + v_trp_code varchar2(200); +begin + for cur in ( select person_stem_id, rel_person_stem_id, per_id, rel_per_id, relationship_type, trp_code, exercise_stem_id, exercise_year, created_on + from ERIGHTS_MIGRATION_TABLE e + where 1=1 + and trp_code like '%EASREFN.MV_PERSON_RELATIVES%' + --and per_id = 122115 + order by exercise_year, per_id, rel_per_id + ) + loop + begin + begin + select trp_cd, trp_code + into v_trp_cd, v_trp_code + from mv_person_relatives_hist@easrefn.cc.cec.eu.int m + where m.rel_per_id = cur.per_id and m.per_id = cur.rel_per_id and cur.created_on between m.start_date and m.end_date; + exception + when others then -- no_data_found only ? + goto nextCase; + end ; + + update ERIGHTS_MIGRATION_TABLE + set trp_code = v_trp_code, relationship_type = v_trp_cd + where person_stem_id = cur.person_stem_id and rel_person_stem_id = cur.rel_person_stem_id and exercise_stem_id = cur.exercise_stem_id; + + commit; + <> + v_trp_cd := null; + v_trp_code := null; + end; + end loop; +end; + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/5. Remove duplicates.sql b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/5. Remove duplicates.sql new file mode 100644 index 0000000..c9fe24f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/5. Remove duplicates.sql @@ -0,0 +1,67 @@ +-- 1. REMOVE records created by 2 places of origin ( when one of them is in EU and the other is outside EU). In this case we remove the one that is outside EU + +-- SOS : Check the following : a) some countries are not included in MV_CAPITAL_OF_MS, b) some which are already included are part of France ( or Finland ) but are considered EU +-- select * from easref.V_EASREF_COUNTRIES@easref.CC.CEC.EU.INT where union_eur = 'O' + +-- main beneficiaries +declare + c integer; +begin + for cur in + ( with + multiple_main_beneficiaries as ( select per_id, exercise_stem_id, count(1) c from erights_migration_table where rel_per_id is null group by per_id, exercise_stem_id having count(1) > 1 ) + select emt.* -- ,mmb.* + from erights_migration_table emt + inner join multiple_main_beneficiaries mmb on emt.per_id = mmb.per_id and emt.exercise_stem_id = mmb.exercise_stem_id and emt.rel_per_id is null + --and emt.per_id = 61247 + order by emt.exercise_stem_id, emt.per_id + ) + loop + select count(1) into c from erights_migration_table e where e.exercise_stem_id = cur.exercise_stem_id and e.per_id = cur.per_id and e.is_member_state = 1 ; + if c > 0 and cur.is_member_state = 0 then + delete from erights_migration_table where erights_migration_table.record_id = cur.record_id; + end if; + end loop; + + commit; +end; +/ + +-- dependents +declare + c integer; +begin + for cur in + ( with + multiple_beneficiaries as ( select per_id, rel_per_id, exercise_stem_id, count(1) c from erights_migration_table where rel_per_id is not null group by per_id, rel_per_id, exercise_stem_id having count(1) > 1 ) + select emt.* -- ,mb.* + from erights_migration_table emt + inner join multiple_beneficiaries mb on emt.per_id = mb.per_id and emt.exercise_stem_id = mb.exercise_stem_id and emt.rel_per_id = mb.rel_per_id + -- and emt.per_id = 61247 + order by emt.exercise_stem_id, emt.per_id + ) + loop + select count(1) into c from erights_migration_table e where e.exercise_stem_id = cur.exercise_stem_id and e.per_id = cur.per_id and e.rel_per_id = cur.rel_per_id and e.is_member_state = 1 ; + if c > 0 and cur.is_member_state = 0 then + delete from erights_migration_table where erights_migration_table.record_id = cur.record_id; + end if; + end loop; + + commit; +end; +/ + + + + +--2. REMOVE DUPLICATES - NO (serious )CONDITION +DELETE + FROM erights_migration_table + WHERE + ROWID NOT IN + (SELECT first_value(ROWID)over(PARTITION BY per_id, rel_per_id, exercise_stem_id ORDER BY price_prorata desc, assignm_start_date desc, country_of_origin, birthdate ) + FROM erights_migration_table + ); + +commit; + diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/99 Push migration data to erights test.sql b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/99 Push migration data to erights test.sql new file mode 100644 index 0000000..9688440 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/01 ETRAVEL/Scripts/99 Push migration data to erights test.sql @@ -0,0 +1,84 @@ + CREATE DATABASE LINK "ERIGHTS_TEST.CC.CEC.EU.INT" + CONNECT TO "ERIGHTS" IDENTIFIED BY ... + USING 'ERIGHTS_EEAS_01_T'; + +select * +from dual@ERIGHTS_ACC; + +delete from ETRAVEL_MIGRATION_TABLE@ERIGHTS_ACC; + +insert into ETRAVEL_MIGRATION_TABLE@ERIGHTS_ACC (PERSON_STEM_ID +,REL_PERSON_STEM_ID +,PER_ID +,REL_PER_ID +,FIRSTNAME +,LASTNAME +,BIRTHDATE +,RELATIONSHIP_TYPE +,TRP_CODE +,EXERCISE_STEM_ID +,EXERCISE_YEAR +,CREATED_BY +,CREATED_ON +,TOTAL_AMOUNT +,PRICE_PRORATA +,FULL_PRICE +,PERCENTAGE +,PRORATA +,ORIGIN_YEAR +,ORIGIN_MONTH +,PAYMENT_YEAR +,PAYMENT_MONTH +,ORI_IATA_CODE +,ORI_AIRPORT_NAME +,ORI_CITY_NAME +,ORI_COUNTRY_ID +,DST_IATA_CODE +,DST_AIRPORT_NAME +,DST_CITY_NAME +,DST_COUNTRY_ID +,COUNTRY_OF_ORIGIN +,ASSIGNM_SOJ_ID +,ASSIGNM_START_DATE +,ASSIGNM_END_DATE +,ASSIGNM_COUNTRY_ID +,ASSIGNM_CITY_ID +,INVERSE_ROUTE_AMOUNT) +select PERSON_STEM_ID +,REL_PERSON_STEM_ID +,PER_ID +,REL_PER_ID +,FIRSTNAME +,LASTNAME +,BIRTHDATE +,RELATIONSHIP_TYPE +,TRP_CODE +,EXERCISE_STEM_ID +,EXERCISE_YEAR +,CREATED_BY +,CREATED_ON +,TOTAL_AMOUNT +,PRICE_PRORATA +,FULL_PRICE +,PERCENTAGE +,PRORATA +,ORIGIN_YEAR +,ORIGIN_MONTH +,PAYMENT_YEAR +,PAYMENT_MONTH +,ORI_IATA_CODE +,ORI_AIRPORT_NAME +,ORI_CITY_NAME +,ORI_COUNTRY_ID +,DST_IATA_CODE +,DST_AIRPORT_NAME +,DST_CITY_NAME +,DST_COUNTRY_ID +,COUNTRY_OF_ORIGIN +,ASSIGNM_SOJ_ID +,ASSIGNM_START_DATE +,ASSIGNM_END_DATE +,ASSIGNM_COUNTRY_ID +,ASSIGNM_CITY_ID +,INVERSE_ROUTE_AMOUNT +from erights_migration_table; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/02 ERIGHTS/Scripts/01 Create table etravel_migration_table.sql b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/02 ERIGHTS/Scripts/01 Create table etravel_migration_table.sql new file mode 100644 index 0000000..0e955fa --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/02 ERIGHTS/Scripts/01 Create table etravel_migration_table.sql @@ -0,0 +1,44 @@ +drop TABLE "ETRAVEL_MIGRATION_TABLE"; + + CREATE TABLE "ETRAVEL_MIGRATION_TABLE" + ( "PERSON_STEM_ID" NUMBER NOT NULL ENABLE, + "REL_PERSON_STEM_ID" NUMBER, + "PER_ID" NUMBER NOT NULL ENABLE, + "REL_PER_ID" NUMBER, + "FIRSTNAME" VARCHAR2(255 BYTE), + "LASTNAME" VARCHAR2(255 BYTE), + "BIRTHDATE" DATE, + "RELATIONSHIP_TYPE" NUMBER, + "TRP_CODE" VARCHAR2(56 BYTE), + "EXERCISE_STEM_ID" NUMBER NOT NULL ENABLE, + "EXERCISE_YEAR" NUMBER, + "CREATED_BY" NUMBER, + "CREATED_ON" TIMESTAMP (6), + "TOTAL_AMOUNT" NUMBER, + "PRICE_PRORATA" NUMBER(38,2), + "FULL_PRICE" NUMBER, + "PERCENTAGE" NUMBER, + "PRORATA" NUMBER, + "ORIGIN_YEAR" NUMBER, + "ORIGIN_MONTH" NUMBER, + "PAYMENT_YEAR" NUMBER, + "PAYMENT_MONTH" NUMBER, + "ORI_IATA_CODE" VARCHAR2(3 BYTE), + "ORI_AIRPORT_NAME" VARCHAR2(256 BYTE), + "ORI_CITY_NAME" VARCHAR2(256 BYTE), + "ORI_COUNTRY_ID" VARCHAR2(256 BYTE), + "DST_IATA_CODE" VARCHAR2(3 BYTE), + "DST_AIRPORT_NAME" VARCHAR2(256 BYTE), + "DST_CITY_NAME" VARCHAR2(256 BYTE), + "DST_COUNTRY_ID" VARCHAR2(256 BYTE), + "COUNTRY_OF_ORIGIN" VARCHAR2(3 BYTE), + "ASSIGNM_SOJ_ID" NUMBER(10,0), + "ASSIGNM_START_DATE" DATE, + "ASSIGNM_END_DATE" DATE, + "ASSIGNM_COUNTRY_ID" VARCHAR2(3 CHAR), + "ASSIGNM_CITY_ID" VARCHAR2(3 CHAR), + "INVERSE_ROUTE_AMOUNT" NUMBER + ); + +create index ix_ETRAVEL_MIGRATION_TABLE_1 on ETRAVEL_MIGRATION_TABLE (per_id, exercise_stem_id) compute statistics; +create index ix_ETRAVEL_MIGRATION_TABLE_2 on ETRAVEL_MIGRATION_TABLE (per_id, exercise_stem_id, rel_per_id) compute statistics; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/02 ERIGHTS/Scripts/02 Create temporary objects.sql b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/02 ERIGHTS/Scripts/02 Create temporary objects.sql new file mode 100644 index 0000000..b25eacc --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/02 ERIGHTS/Scripts/02 Create temporary objects.sql @@ -0,0 +1,65 @@ +DROP TABLE tmp$mv_rights; + +CREATE TABLE tmp$mv_rights + AS + SELECT + r.per_id_benef, + r.origin_period, + r.payment_period, + r.rig_id, + vr.pet_seq_nbr_from + FROM + mv_person_relatives_rights@easrefn r + INNER JOIN mv_person_relatives_val_rights@easrefn.cc.cec.eu.int vr ON r.rig_id = vr.rig_id + WHERE + r.rtt_type_eng LIKE '[RF=FVO]%' + AND r.rgt_id = 3007; --there can be duplicates with RGT_ID=99 + +CREATE INDEX tmp$ix_mv_rights ON + tmp$mv_rights ( + per_id_benef, + origin_period, + payment_period + ) + COMPUTE STATISTICS; + +DROP TABLE tmp$mv_person_relatives_hist; + +CREATE TABLE tmp$mv_person_relatives_hist + AS + SELECT + * + FROM + mv_person_relatives_hist@easrefn mpr + WHERE + mpr.end_date = ( + SELECT + MAX(mpr2.end_date) + FROM + mv_person_relatives_hist@easrefn mpr2 + WHERE + mpr.per_id = mpr2.per_id + AND mpr.rel_per_id = mpr2.rel_per_id + ); + +CREATE INDEX tmp$ix_mv_person_relatives_hist ON + tmp$mv_person_relatives_hist ( + per_id, + trp_cd + ); + +DROP TABLE tmp$recruitment_places; + +CREATE TABLE tmp$recruitment_places + AS + SELECT + * + FROM + mv_person_address_hist@easrefn + WHERE + tadr_cd = 21; + +CREATE INDEX tmp$ix_recruitment_places ON + tmp$recruitment_places ( + per_id + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/02 ERIGHTS/Scripts/03 Migrate data.sql b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/02 ERIGHTS/Scripts/03 Migrate data.sql new file mode 100644 index 0000000..7331439 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/02 ERIGHTS/Scripts/03 Migrate data.sql @@ -0,0 +1,770 @@ +DECLARE + lr_expat_record etravel_migration_table%rowtype; + ln_payment_id posting_allowances.payment_id%TYPE; + ln_payment_event_id posting_allowances.payment_event_id%TYPE; + ln_delegation_org_id posting_allowances.delegation_org_id%TYPE; + ld_assignment_start_date DATE; + ls_trp_cd posting_allowance_persons.trp_cd%TYPE; + ls_trp_code posting_allowance_persons.trp_code%TYPE; + ls_recuitment_city_code posting_allowances.recruitment_city_code%TYPE; + ls_recuitment_city_name posting_allowances.recruitment_city_name%TYPE; + ls_recruitment_country_code posting_allowances.recruitment_country_code%TYPE; + ln_posting_allowance_id posting_allowances.posting_allowance_id%TYPE; + ln_posting_allowance_number posting_allowances.posting_allowance_number%TYPE; + ls_route posting_allowance_persons.route%TYPE; +BEGIN + DELETE FROM posting_allowance_persons + WHERE + posting_allowance_id IN ( + SELECT + posting_allowance_id + FROM + posting_allowances + WHERE + comments = 'Imported from eTravel' + --OR exercise_year = 2022 + ); + + DELETE FROM posting_allowances + WHERE + comments = 'Imported from eTravel' + --OR exercise_year = 2022 + ; + + FOR lr_per_exe IN ( + SELECT DISTINCT + per_id, + exercise_stem_id + FROM + etravel_migration_table + ORDER BY + 2, + 1 + ) LOOP + dbms_output.put_line('PER_ID=' + || lr_per_exe.per_id + || ', EXERCISE_STEM_ID=' + || lr_per_exe.exercise_stem_id); + + BEGIN + SELECT + * + INTO lr_expat_record + FROM + etravel_migration_table + WHERE + per_id = lr_per_exe.per_id + AND exercise_stem_id = lr_per_exe.exercise_stem_id + AND rel_per_id IS NULL; + + EXCEPTION + WHEN too_many_rows THEN + dbms_output.put_line('... Duplicate found. Skipping.'); + GOTO end_of_loop; + WHEN no_data_found THEN + dbms_output.put_line('... Official NOT FOUND! Skipping.'); + GOTO end_of_loop; + END; + + BEGIN + SELECT + rig_id, + pet_seq_nbr_from + INTO + ln_payment_id, + ln_payment_event_id + FROM + tmp$mv_rights r + WHERE + per_id_benef = lr_expat_record.per_id + AND origin_period = TRIM(to_char(lr_expat_record.origin_year, '00')) + || TRIM(to_char(lr_expat_record.origin_month, '00')) + AND payment_period = TRIM(to_char(lr_expat_record.payment_year, '00')) + || TRIM(to_char(lr_expat_record.payment_month, '00')) + AND rig_id = ( + SELECT + MAX(r2.rig_id) + FROM + tmp$mv_rights r2 + WHERE + r2.per_id_benef = lr_expat_record.per_id + AND r2.origin_period = TRIM(to_char(lr_expat_record.origin_year, '00')) + || TRIM(to_char(lr_expat_record.origin_month, '00')) + AND r2.payment_period = TRIM(to_char(lr_expat_record.payment_year, '00')) + || TRIM(to_char(lr_expat_record.payment_month, '00')) + ); + +-- SELECT +-- r.rig_id, +-- vr.pet_seq_nbr_from +-- INTO +-- ln_payment_id, +-- ln_payment_event_id +-- FROM +-- mv_person_relatives_rights@easrefn r +-- INNER JOIN mv_person_relatives_val_rights@easrefn.cc.cec.eu.int vr ON r.rig_id = vr.rig_id +-- WHERE +-- r.rtt_type_eng LIKE '[RF=FVO]%' +-- AND r.per_id_benef = lr_expat_record.per_id +-- AND r.origin_period = to_char(lr_expat_record.origin_year, '00') +-- || to_char(lr_expat_record.origin_month, '00') +-- AND r.payment_period = to_char(lr_expat_record.payment_year, '00') +-- || to_char(lr_expat_record.payment_month, '00'); + + EXCEPTION + WHEN no_data_found THEN + dbms_output.put_line('... Could not find SYSPER payment information'); + END; + + IF lr_expat_record.assignm_soj_id IS NULL THEN + dbms_output.put_line('... Assignment ID is missing'); + ln_delegation_org_id := NULL; + ld_assignment_start_date := NULL; + ELSE + BEGIN + SELECT + enth.main_org_id, + asgh.start_date + INTO + ln_delegation_org_id, + ld_assignment_start_date + FROM + mv_assignments_hist_eeas asgh + INNER JOIN mv_jobs_hist_eeas jobh ON ( asgh.job_id = jobh.job_id + AND asgh.jcx_id = jobh.jcx_id ) + INNER JOIN mv_entities_hist enth ON ( jobh.org_id = enth.org_id + AND asgh.start_date BETWEEN enth.start_date AND enth.end_date ) + WHERE + asgh.soj_id = lr_expat_record.assignm_soj_id; + + EXCEPTION + WHEN no_data_found THEN + BEGIN + SELECT + enth.main_org_id, + asgh.start_date + INTO + ln_delegation_org_id, + ld_assignment_start_date + FROM + mv_assignments_hist_com asgh + INNER JOIN mv_jobs_hist_com jobh ON ( asgh.job_id = jobh.job_id + /*AND asgh.jcx_id = jobh.jcx_id*/ ) + INNER JOIN mv_entities_hist_com enth ON ( jobh.org_id = enth.org_id + AND asgh.start_date BETWEEN enth.start_date AND enth.end_date ) + WHERE + asgh.soj_id = lr_expat_record.assignm_soj_id; + + EXCEPTION + WHEN no_data_found THEN + BEGIN + SELECT + enth.main_org_id, + asgh.start_date + INTO + ln_delegation_org_id, + ld_assignment_start_date + FROM + mv_assignments_hist_com asgh + INNER JOIN mv_jobs_hist_eeas jobh ON ( asgh.job_id = jobh.job_id + /*AND asgh.jcx_id = jobh.jcx_id*/ ) + INNER JOIN mv_entities_hist enth ON ( jobh.org_id = enth.org_id + AND asgh.start_date BETWEEN enth.start_date AND enth.end_date + ) + WHERE + asgh.soj_id = lr_expat_record.assignm_soj_id; + + EXCEPTION + WHEN no_data_found THEN + BEGIN + SELECT + enth.main_org_id, + asgh.start_date + INTO + ln_delegation_org_id, + ld_assignment_start_date + FROM + mv_assignments_hist_com asgh + INNER JOIN mv_jobs_hist_com jobh ON ( asgh.job_id = jobh.job_id + /*AND asgh.jcx_id = jobh.jcx_id*/ ) + INNER JOIN mv_entities_hist_com enth ON ( jobh.org_id = enth.org_id ) + WHERE + asgh.soj_id = lr_expat_record.assignm_soj_id + AND enth.start_date = ( + SELECT + MAX(enth2.start_date) + FROM + mv_entities_hist_com enth2 + WHERE + enth2.org_id = enth.org_id + ); + + EXCEPTION + WHEN no_data_found THEN + dbms_output.put_line('... Assignment ID cannot be found!'); + ln_delegation_org_id := NULL; + ld_assignment_start_date := NULL; + END; + END; + END; + END; + END IF; + + SELECT + nvl(MAX(posting_allowance_number), + 0) + 1 + INTO ln_posting_allowance_number + FROM + posting_allowances --!!!tmp$posting_allowances + WHERE + exercise_year = lr_expat_record.exercise_year; + + BEGIN + ls_recruitment_country_code := NULL; + ls_recuitment_city_name := NULL; + ls_recuitment_city_code := NULL; + SELECT + r.country_code, + r.city_name + INTO + ls_recruitment_country_code, + ls_recuitment_city_name + FROM + tmp$recruitment_places r + WHERE + r.per_id = lr_expat_record.per_id + AND ld_assignment_start_date BETWEEN r.start_date AND r.end_date; + + SELECT + MAX(city_code) + INTO ls_recuitment_city_code + FROM + mv_cities + WHERE + ( description_en = upper(ls_recuitment_city_name) + OR description_fr = upper(ls_recuitment_city_name) ) + AND country_code = ls_recruitment_country_code; + + EXCEPTION + WHEN no_data_found THEN + NULL; -- Best effort, we ignore cases where there is no data available + END; + + BEGIN + INSERT INTO posting_allowances (--!!!tmp$posting_allowances ( + posting_allowance_id, + per_id, + exercise_year, + posting_allowance_number, + posting_allowance_string_id, + posting_allowance_type, + posting_allowance_req_type, + parent_posting_allowance_id, + comments, + outgoing_trip_amount, + outgoing_trip_amount_currency, + return_trip_amount, + return_trip_amount_currency, + calc_total_amount, + calc_total_amount_currency, + total_amount, + total_amount_currency, + payment_period_year, + payment_period_month, + payment_reference, + payment_state, + assignment_city_code, + assignment_country_code, + assignment_city_name, + assignment_iata_code, + origin_city_code, + origin_country_code, + origin_city_name, + origin_iata_code, + recruitment_city_code, + recruitment_country_code, + recruitment_city_name, + recruitment_iata_code, + sm_id, + state, + posting_allowance_discriminatory_type, + created_by, + created_at, + updated_by, + updated_at, + delegation_org_id, + origin_period_year, + origin_period_month, + origin_country_name, + assignment_country_name, + assignment_start_date, + soj_id, + spouse_per_id, + double_posting, + payment_id, + payment_event_id, + origin_place_search, + assignment_airport_name, + first_nationality_country + ) VALUES ( + seq_posting_allowances.NEXTVAL, --!!!tmp$seq_posting_allowances.NEXTVAL, --posting_allowance_id, + lr_expat_record.per_id, --per_id, + lr_expat_record.exercise_year, --exercise_year, + ln_posting_allowance_number, --posting_allowance_number, + lr_expat_record.exercise_year + || '-FVO-' + || TRIM(to_char(ln_posting_allowance_number, '0000')), --posting_allowance_string_id, + 'ANNUAL TRAVEL', --posting_allowance_type, + 'INITIAL', --posting_allowance_req_type, + NULL, --parent_posting_allowance_id, + 'Imported from eTravel', --comments, + coalesce(( + SELECT + MAX(full_price) + FROM + etravel_migration_table + WHERE + per_id = lr_expat_record.per_id + AND exercise_stem_id = lr_expat_record.exercise_stem_id + AND --dst_country_id = lr_expat_record.country_of_origin + (dst_country_id = lr_expat_record.country_of_origin + OR ori_country_id = lr_expat_record.assignm_country_id) + ), + lr_expat_record.full_price, + - 1), --outgoing_trip_amount, + --AND rel_per_id IS NOT NULL +-- CASE +-- WHEN lr_expat_record.dst_country_id = lr_expat_record.country_of_origin THEN +-- nvl(lr_expat_record.full_price, 0) --'OUTGOING' +-- ELSE +-- -1 --'RETURN' +-- END, --outgoing_trip_amount, + 'EUR', --outgoing_trip_amount_currency, + CASE + WHEN lr_expat_record.inverse_route_amount IS NULL THEN + - 1 + WHEN lr_expat_record.inverse_route_amount = 0.01 THEN + - 1 + ELSE + lr_expat_record.inverse_route_amount + END, --return_trip_amount, +-- coalesce(( +-- SELECT +-- MAX(full_price) +-- FROM +-- etravel_migration_table +-- WHERE +-- per_id = lr_expat_record.per_id +-- AND exercise_stem_id = lr_expat_record.exercise_stem_id +-- AND --dst_country_id <> country_of_origin +-- NOT(dst_country_id = lr_expat_record.country_of_origin +-- OR ori_country_id = lr_expat_record.assignm_country_id) +-- ),( +-- SELECT +-- MAX(full_price) +-- FROM +-- etravel_migration_table +-- WHERE +-- per_id = lr_expat_record.per_id +-- AND rel_per_id IS NOT NULL +-- AND exercise_stem_id = lr_expat_record.exercise_stem_id +-- AND ori_country_id = lr_expat_record.dst_country_id +-- AND dst_country_id = lr_expat_record.ori_country_id +-- ), - 1), --return_trip_amount, +-- CASE +-- WHEN lr_expat_record.dst_country_id = lr_expat_record.country_of_origin THEN +-- -1 --'OUTGOING' +-- ELSE +-- nvl(lr_expat_record.full_price, 0) --'RETURN' +-- END, --return_trip_amount, + 'EUR', --return_trip_amount_currency, + lr_expat_record.total_amount, --calc_total_amount, + 'EUR', --calc_total_amount_currency, + lr_expat_record.total_amount, --total_amount, + 'EUR', --total_amount_currency, + lr_expat_record.payment_year, --payment_period_year, + lr_expat_record.payment_month, --payment_period_month, + NULL, --payment_reference, + NULL, --payment_state, + ( + SELECT + MAX(city_code) + FROM + mv_cities + WHERE + description_en = lr_expat_record.ori_city_name + AND country_code = lr_expat_record.ori_country_id + ), --assignment_city_code, + lr_expat_record.ori_country_id, --assignment_country_code, + lr_expat_record.ori_city_name, --assignment_city_name, + lr_expat_record.ori_iata_code, --assignment_iata_code, + ( + SELECT + MAX(city_code) + FROM + mv_cities + WHERE + description_en = lr_expat_record.dst_city_name + AND country_code = lr_expat_record.dst_country_id + ), --origin_city_code, + lr_expat_record.dst_country_id, --origin_country_code, + lr_expat_record.dst_city_name, --origin_city_name, + lr_expat_record.dst_iata_code, --origin_iata_code, + ls_recuitment_city_code, --recruitment_city_code, + ls_recruitment_country_code, --recruitment_country_code, + ls_recuitment_city_name, --recruitment_city_name, + ( + SELECT + iata_code + FROM + airport_cities + WHERE + city_code = ls_recuitment_city_code + ), --recruitment_iata_code, + NULL, --sm_id, + 'PAID', --state, + 'Travel', --posting_allowance_discriminatory_type, + lr_expat_record.created_by, --created_by, + lr_expat_record.created_on, --created_at, + lr_expat_record.created_by, --updated_by, + lr_expat_record.created_on, --updated_at, + ln_delegation_org_id, --delegation_org_id, + lr_expat_record.origin_year, --origin_period_year, + lr_expat_record.origin_month, --origin_period_month, + ( + SELECT + name_en + FROM + mv_countries + WHERE + country_code = lr_expat_record.dst_country_id + ), --origin_country_name, + ( + SELECT + name_en + FROM + mv_countries + WHERE + country_code = lr_expat_record.ori_country_id + ), --assignment_country_name, + lr_expat_record.assignm_start_date, --assignment_start_date, + lr_expat_record.assignm_soj_id, --soj_id, + ( + SELECT + MAX(rel_per_id) + FROM + etravel_migration_table + WHERE + per_id = lr_per_exe.per_id + AND exercise_stem_id = lr_per_exe.exercise_stem_id + AND trp_code = 'Spouse' + ), --spouse_per_id, + 'N', --double_posting, + ln_payment_id, --payment_id, + ln_payment_event_id, --payment_event_id + ( + SELECT + name_en + FROM + mv_countries + WHERE + country_code = lr_expat_record.dst_country_id + ) + || ', ' + || lr_expat_record.dst_city_name, --origin_place_search + ( + SELECT + airport_name + FROM + airports + WHERE + iata_code = lr_expat_record.ori_iata_code + ), + --ASSIGNMENT_AIRPORT_NAME + ( + SELECT + nat_country_code + FROM + mv_person_nationalities + WHERE + per_id = lr_per_exe.per_id + ) + --FIRST_NATIONALITY_COUNTRY + ) RETURNING posting_allowance_id INTO ln_posting_allowance_id; + + EXCEPTION + WHEN OTHERS THEN + dbms_output.put_line('...Unable to insert into posting_allowances:' + || sqlcode + || '-' + || sqlerrm); + GOTO end_of_loop; + END; + + FOR lr_relative_record IN ( + SELECT + * + FROM + etravel_migration_table + WHERE + per_id = lr_per_exe.per_id + AND exercise_stem_id = lr_per_exe.exercise_stem_id + --AND rel_per_id IS NOT NULL + ORDER BY + rel_per_id NULLS FIRST + ) LOOP + IF lr_relative_record.full_price IS NULL THEN + dbms_output.put_line('... REL_PER_ID=' + || lr_relative_record.rel_per_id + || ' : Full price is null'); + END IF; + + IF lr_relative_record.relationship_type IS NULL THEN + IF lr_relative_record.trp_code = 'Staff Member' THEN + ls_trp_cd := -1; + ls_trp_code := 'Staff Member'; + ELSE + BEGIN + SELECT + trp_cd, + trp_code + INTO + ls_trp_cd, + ls_trp_code + FROM + tmp$mv_person_relatives_hist + WHERE + per_id = lr_relative_record.per_id + AND rel_per_id = lr_relative_record.rel_per_id; + + EXCEPTION + WHEN no_data_found THEN + dbms_output.put_line('... REL_PER_ID=' + || lr_relative_record.rel_per_id + || ' : Relationship not found'); + ls_trp_cd := NULL; + ls_trp_code := NULL; + END; + END IF; + + ELSE + ls_trp_cd := lr_relative_record.relationship_type; + ls_trp_code := lr_relative_record.trp_code; + END IF; + + /* CASE + WHEN --lr_relative_record.dst_country_id = lr_relative_record.country_of_origin + lr_relative_record.dst_country_id = lr_expat_record.country_of_origin + OR lr_relative_record.ori_country_id = lr_expat_record.assignm_country_id THEN + 'OUTGOING' + ELSE + 'RETURN' + END*/ + CASE + WHEN lr_relative_record.dst_country_id = lr_expat_record.country_of_origin OR lr_relative_record.ori_country_id = lr_expat_record.assignm_country_id + THEN + ls_route := 'OUTGOING'; + WHEN lr_relative_record.dst_country_id = lr_expat_record.assignm_country_id OR lr_relative_record.ori_country_id = lr_expat_record.country_of_origin + THEN + ls_route := 'RETURN'; + WHEN + lr_relative_record.dst_country_id <> lr_expat_record.country_of_origin + AND lr_relative_record.ori_country_id <> lr_expat_record.assignm_country_id + AND lr_relative_record.dst_country_id = lr_expat_record.dst_country_id + AND lr_relative_record.ori_country_id = lr_expat_record.ori_country_id + THEN + ls_route := 'OUTGOING'; + ELSE + ls_route := 'RETURN'; + END CASE; + + INSERT INTO posting_allowance_persons (--!!!tmp$posting_allowance_persons ( + posting_allowance_person_id, + posting_allowance_id, + date_of_birth, + route, + per_id, + rel_per_id, + trp_cd, + trp_code, + trip_amount, + trip_amount_currency, + entitled_months, + total_amount, + total_amount_currency, + city_from, + country_from, + iata_code_from, + city_to, + country_to, + iata_code_to, + remarks, + created_by, + created_at, + updated_by, + updated_at, + surname, + first_name, + work_in_delegation, + work_in_hq, + order_type_of_person + ) VALUES ( + seq_posting_allowance_persons.NEXTVAL, --!!!tmp$seq_posting_allowance_persons.NEXTVAL, --posting_allowance_person_id, + ln_posting_allowance_id, --posting_allowance_id, + lr_relative_record.birthdate, -- date_of_birth, + ls_route, --route, + lr_relative_record.per_id, + lr_relative_record.rel_per_id, + ls_trp_cd, --trp_cd, + ls_trp_code, --trp_code, + nvl(lr_relative_record.full_price, 0), --trip_amount, + 'EUR', --trip_amount_currency, + lr_relative_record.prorata, --entitled_months, + lr_relative_record.price_prorata, --total_amount, + 'EUR', --total_amount_currency, + ( + SELECT + MAX(city_code) + FROM + mv_cities + WHERE + description_en = lr_relative_record.ori_city_name + AND country_code = lr_relative_record.ori_country_id + ), --city_from, + lr_relative_record.ori_country_id, --country_from, + lr_relative_record.ori_iata_code, --iata_code_from, + ( + SELECT + MAX(city_code) + FROM + mv_cities + WHERE + description_en = lr_relative_record.dst_city_name + AND country_code = lr_relative_record.dst_country_id + ), --city_to, + lr_relative_record.dst_country_id, --country_to, + lr_relative_record.dst_iata_code, --iata_code_to, + NULL, --remarks, + lr_relative_record.created_by, --created_by, + lr_relative_record.created_on, --created_at, + lr_relative_record.created_by, --updated_by, + lr_relative_record.created_on, --updated_at, + lr_relative_record.lastname, --surname, + lr_relative_record.firstname, --first_name, + CASE + WHEN lr_relative_record.trp_code = 'Staff Member' THEN + 'Y' + ELSE + CASE + WHEN ( + SELECT + COUNT(*) + FROM + mv_assignments_hist_eeas asgh + INNER JOIN mv_jobs_hist_eeas jobh ON ( asgh.job_id = jobh.job_id + AND asgh.jcx_id = jobh.jcx_id ) + INNER JOIN mv_entities_hist enth ON ( jobh.org_id = enth.org_id + AND asgh.start_date BETWEEN enth.start_date AND enth.end_date + ) + WHERE + asgh.per_id = lr_relative_record.rel_per_id -- has the relative worked + AND ld_assignment_start_date BETWEEN asgh.start_date AND asgh.end_date -- when the expatriate started his/her assignment + AND EXISTS ( + SELECT + 1 + FROM + mv_entities_hist enth2 + WHERE + enth2.is_delegation = 'Y' + AND enth.main_org_id = enth2.org_id + ) -- and the relative worked in a delegation + ) > 0 THEN + 'Y' + ELSE + 'N' + END + END, + --work_in_delegation, + CASE + WHEN lr_relative_record.trp_code = 'Staff Member' THEN + 'N' + ELSE + CASE + WHEN ( + SELECT + COUNT(*) + FROM + mv_assignments_hist_eeas asgh + INNER JOIN mv_jobs_hist_eeas jobh ON ( asgh.job_id = jobh.job_id + AND asgh.jcx_id = jobh.jcx_id ) + INNER JOIN mv_entities_hist enth ON ( jobh.org_id = enth.org_id + AND asgh.start_date BETWEEN enth.start_date AND enth.end_date + ) + WHERE + asgh.per_id = lr_relative_record.rel_per_id -- has the relative worked + AND ld_assignment_start_date BETWEEN asgh.start_date AND asgh.end_date -- when the expatriate started his/her assignment + AND EXISTS ( + SELECT + 1 + FROM + mv_entities_hist enth2 + WHERE + enth2.is_delegation = 'N' + AND enth.main_org_id = enth2.org_id + ) -- and the relative worked in another place than a delegation + ) > 0 THEN + 'Y' + ELSE + 'N' + END + END, + --work_in_hq, + 0 --order_type_of_person + ); + + END LOOP; + + << end_of_loop >> NULL; + END LOOP; + + COMMIT; +END; +/ + +/* +SELECT DISTINCT + per_id, + exercise_stem_id +FROM + etravel_migration_table +ORDER BY + 2, + 1; + +SELECT + * +FROM + etravel_migration_table +WHERE + ( per_id, exercise_stem_id ) IN ( ( 45126, 7 ) ); + +create table bkp$posting_allowance_persons_import_conflicts +as select * from posting_allowance_persons +where POSTING_ALLOWANCE_ID in (select POSTING_ALLOWANCE_ID +from posting_allowances +where (per_id, soj_id, exercise_year) in (select per_id, ASSIGNM_SOJ_ID, EXERCISE_YEAR from etravel_migration_table)); + +delete from posting_allowance_persons +where POSTING_ALLOWANCE_ID in (select POSTING_ALLOWANCE_ID +from posting_allowances +where (per_id, soj_id, exercise_year) in (select per_id, ASSIGNM_SOJ_ID, EXERCISE_YEAR from etravel_migration_table)); + +create table bkp$posting_allowances_import_conflicts +as select * from posting_allowances +where (per_id, soj_id, exercise_year) in (select per_id, ASSIGNM_SOJ_ID, EXERCISE_YEAR from etravel_migration_table); + +delete from posting_allowances +where (per_id, soj_id, exercise_year) in (select per_id, ASSIGNM_SOJ_ID, EXERCISE_YEAR from etravel_migration_table); + + +*/ \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/02 ERIGHTS/Scripts/04 Fix data post-import.sql b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/02 ERIGHTS/Scripts/04 Fix data post-import.sql new file mode 100644 index 0000000..d5903bc --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/02 ERIGHTS/Scripts/04 Fix data post-import.sql @@ -0,0 +1,99 @@ +-- Fix missing assignment_city_code +update posting_allowances set assignment_city_code = 'TSE' where ASSIGNMENT_COUNTRY_CODE = 'KAZ' and ASSIGNMENT_CITY_NAME = 'ASTANA' and ASSIGNMENT_IATA_CODE = 'TSE' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'POS' where ASSIGNMENT_COUNTRY_CODE = 'TTO' and ASSIGNMENT_CITY_NAME = 'PORT OF SPAIN' and ASSIGNMENT_IATA_CODE = 'POS' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'YUL' where ASSIGNMENT_COUNTRY_CODE = 'CAN' and ASSIGNMENT_CITY_NAME = 'MONTREAL QC' and ASSIGNMENT_IATA_CODE = 'YMQ' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'NYC' where ASSIGNMENT_COUNTRY_CODE = 'USA' and ASSIGNMENT_CITY_NAME = 'NEW YORK NY' and ASSIGNMENT_IATA_CODE = 'NYC' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'GUA' where ASSIGNMENT_COUNTRY_CODE = 'GTM' and ASSIGNMENT_CITY_NAME = 'GUATEMALA CTY' and ASSIGNMENT_IATA_CODE = 'GUA' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'SAH' where ASSIGNMENT_COUNTRY_CODE = 'YEM' and ASSIGNMENT_CITY_NAME = 'SANAA' and ASSIGNMENT_IATA_CODE = 'SAH' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'BSB' where ASSIGNMENT_COUNTRY_CODE = 'BRA' and ASSIGNMENT_CITY_NAME = 'BRASILIA DF' and ASSIGNMENT_IATA_CODE = 'BSB' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'PAP' where ASSIGNMENT_COUNTRY_CODE = 'HTI' and ASSIGNMENT_CITY_NAME = 'PORT AU PRINC' and ASSIGNMENT_IATA_CODE = 'PAP' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'IEV' where ASSIGNMENT_COUNTRY_CODE = 'UKR' and ASSIGNMENT_CITY_NAME = 'KIEV' and ASSIGNMENT_IATA_CODE = 'IEV' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'WAS' where ASSIGNMENT_COUNTRY_CODE = 'USA' and ASSIGNMENT_CITY_NAME = 'WASHINGTON DC' and ASSIGNMENT_IATA_CODE = 'WAS' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'DEL' where ASSIGNMENT_COUNTRY_CODE = 'IND' and ASSIGNMENT_CITY_NAME = 'DELHI' and ASSIGNMENT_IATA_CODE = 'DEL' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'BRN' where ASSIGNMENT_COUNTRY_CODE = 'CHE' and ASSIGNMENT_CITY_NAME = 'BERNE' and ASSIGNMENT_IATA_CODE = 'BRN' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'ASB' where ASSIGNMENT_COUNTRY_CODE = 'TKM' and ASSIGNMENT_CITY_NAME = 'ASHGABAD' and ASSIGNMENT_IATA_CODE = 'ASB' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'TLV' where ASSIGNMENT_COUNTRY_CODE = 'ISR' and ASSIGNMENT_CITY_NAME = 'TEL AVIV YAFO' and ASSIGNMENT_IATA_CODE = 'TLV' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'BUE' where ASSIGNMENT_COUNTRY_CODE = 'ARG' and ASSIGNMENT_CITY_NAME = 'BUEN AIRES BA' and ASSIGNMENT_IATA_CODE = 'BUE' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'TMS' where ASSIGNMENT_COUNTRY_CODE = 'STP' and ASSIGNMENT_CITY_NAME = 'SAO TOME IS' and ASSIGNMENT_IATA_CODE = 'TMS' and assignment_city_code is null; +-- from Dominique +update posting_allowances set assignment_city_code = 'BCV' where ASSIGNMENT_COUNTRY_CODE = 'BLZ' and ASSIGNMENT_CITY_NAME = 'BELIZE' and ASSIGNMENT_IATA_CODE = 'BZE' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'MRU' where ASSIGNMENT_COUNTRY_CODE = 'MUS' and ASSIGNMENT_CITY_NAME = 'MAURITIUS' and ASSIGNMENT_IATA_CODE = 'MRU' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'BGI' where ASSIGNMENT_COUNTRY_CODE = 'BRB' and ASSIGNMENT_CITY_NAME = 'BARBADOS' and ASSIGNMENT_IATA_CODE = 'BGI' and assignment_city_code is null; +update posting_allowances set assignment_city_code = 'JUB' where ASSIGNMENT_COUNTRY_CODE = 'SDN' and ASSIGNMENT_CITY_NAME = 'JUBA' and ASSIGNMENT_IATA_CODE = 'JUB' and assignment_city_code is null; + + +-- Fix missing origin city code +update posting_allowances set origin_city_code = 'DUS' where origin_COUNTRY_CODE = 'DEU' and origin_CITY_NAME = 'DUSSELDORF' and origin_IATA_CODE = 'DUS' and origin_city_code is null; +update posting_allowances set origin_city_code = 'BSL' where origin_COUNTRY_CODE = 'CHE' and origin_CITY_NAME = 'BALE' and origin_IATA_CODE = 'BSL' and origin_city_code is null; +update posting_allowances set origin_city_code = 'PNA' where origin_COUNTRY_CODE = 'ESP' and origin_CITY_NAME = 'PAMPLONE' and origin_IATA_CODE = 'PNA' and origin_city_code is null; +update posting_allowances set origin_city_code = 'CFE' where origin_COUNTRY_CODE = 'FRA' and origin_CITY_NAME = 'CLERMONT FERR' and origin_IATA_CODE = 'CFE' and origin_city_code is null; +update posting_allowances set origin_city_code = 'SCN' where origin_COUNTRY_CODE = 'DEU' and origin_CITY_NAME = 'SAARBRUCKEN' and origin_IATA_CODE = 'SCN' and origin_city_code is null; +update posting_allowances set origin_city_code = 'FDF' where origin_COUNTRY_CODE = 'MTQ' and origin_CITY_NAME = 'FT DE FRANCE' and origin_IATA_CODE = 'FDF' and origin_city_code is null; +update posting_allowances set origin_city_code = 'TRS' where origin_COUNTRY_CODE = 'ITA' and origin_CITY_NAME = 'TRIESTE' and origin_IATA_CODE = 'TRS' and origin_city_code is null; +update posting_allowances set origin_city_code = 'ZAZ' where origin_COUNTRY_CODE = 'ESP' and origin_CITY_NAME = 'SARAGOSSE' and origin_IATA_CODE = 'ZAZ' and origin_city_code is null; +update posting_allowances set origin_city_code = 'LEJ' where origin_COUNTRY_CODE = 'DEU' and origin_CITY_NAME = 'LEIPZIG/HALLE' and origin_IATA_CODE = 'LEJ' and origin_city_code is null; +update posting_allowances set origin_city_code = 'TRN' where origin_COUNTRY_CODE = 'ITA' and origin_CITY_NAME = 'TURIN' and origin_IATA_CODE = 'TRN' and origin_city_code is null; +update posting_allowances set origin_city_code = 'SUF' where origin_COUNTRY_CODE = 'ITA' and origin_CITY_NAME = 'LAMEZIA TERME' and origin_IATA_CODE = 'SUF' and origin_city_code is null; +update posting_allowances set origin_city_code = 'ETZ' where origin_COUNTRY_CODE = 'FRA' and origin_CITY_NAME = 'METZ/NANCY' and origin_IATA_CODE = 'ETZ' and origin_city_code is null; +update posting_allowances set origin_city_code = 'MMA' where origin_COUNTRY_CODE = 'SWE' and origin_CITY_NAME = 'MALMO' and origin_IATA_CODE = 'MMA' and origin_city_code is null; +update posting_allowances set origin_city_code = 'RHO' where origin_COUNTRY_CODE = 'GRC' and origin_CITY_NAME = 'RHODES' and origin_IATA_CODE = 'RHO' and origin_city_code is null; +update posting_allowances set origin_city_code = 'EBU' where origin_COUNTRY_CODE = 'FRA' and origin_CITY_NAME = 'SAINT ETIENNE' and origin_IATA_CODE = 'EBU' and origin_city_code is null; +update posting_allowances set origin_city_code = 'RUN' where origin_COUNTRY_CODE = 'REU' and origin_CITY_NAME = 'ST DENIS' and origin_IATA_CODE = 'RUN' and origin_city_code is null; +update posting_allowances set origin_city_code = 'REG' where origin_COUNTRY_CODE = 'ITA' and origin_CITY_NAME = 'REGGIO CALAB' and origin_IATA_CODE = 'REG' and origin_city_code is null; +update posting_allowances set origin_city_code = 'NRK' where origin_COUNTRY_CODE = 'SWE' and origin_CITY_NAME = 'NORRKOPING' and origin_IATA_CODE = 'NRK' and origin_city_code is null; +update posting_allowances set origin_city_code = 'PMI' where origin_COUNTRY_CODE = 'ESP' and origin_CITY_NAME = 'PALMA MALLORC' and origin_IATA_CODE = 'PMI' and origin_city_code is null; +update posting_allowances set origin_city_code = 'SBK' where origin_COUNTRY_CODE = 'FRA' and origin_CITY_NAME = 'SAINT BRIEUC' and origin_IATA_CODE = 'SBK' and origin_city_code is null; +update posting_allowances set origin_city_code = 'HAJ' where origin_COUNTRY_CODE = 'DEU' and origin_CITY_NAME = 'HANOVER' and origin_IATA_CODE = 'HAJ' and origin_city_code is null; +update posting_allowances set origin_city_code = 'LBA' where origin_COUNTRY_CODE = 'GBR' and origin_CITY_NAME = 'LEEDS/BRADFOR' and origin_IATA_CODE = 'LBA' and origin_city_code is null; +update posting_allowances set origin_city_code = 'FDH' where origin_COUNTRY_CODE = 'DEU' and origin_CITY_NAME = 'FRIEDRICHSHAF' and origin_IATA_CODE = 'FDH' and origin_city_code is null; +update posting_allowances set origin_city_code = 'SGD' where origin_COUNTRY_CODE = 'DNK' and origin_CITY_NAME = 'SONDERBORG' and origin_IATA_CODE = 'SGD' and origin_city_code is null; +update posting_allowances set origin_city_code = 'SCQ' where origin_COUNTRY_CODE = 'ESP' and origin_CITY_NAME = 'SANTIAGO COMP' and origin_IATA_CODE = 'SCQ' and origin_city_code is null; +update posting_allowances set origin_city_code = 'NUE' where origin_COUNTRY_CODE = 'DEU' and origin_CITY_NAME = 'NUREMBERG' and origin_IATA_CODE = 'NUE' and origin_city_code is null; +update posting_allowances set origin_city_code = 'GOT' where origin_COUNTRY_CODE = 'SWE' and origin_CITY_NAME = 'GOTHENBURG' and origin_IATA_CODE = 'GOT' and origin_city_code is null; +update posting_allowances set origin_city_code = 'BJZ' where origin_COUNTRY_CODE = 'ESP' and origin_CITY_NAME = 'BACLAJOZ' and origin_IATA_CODE = 'BJZ' and origin_city_code is null; +update posting_allowances set origin_city_code = 'ZTH' where origin_COUNTRY_CODE = 'GRC' and origin_CITY_NAME = 'ZAKINTHOS (ILE)' and origin_IATA_CODE = 'ZTH' and origin_city_code is null; +update posting_allowances set origin_city_code = 'PDL' where origin_COUNTRY_CODE = 'PRT' and origin_CITY_NAME = 'PONTA DELGADA (ILE SAN MIGUEL)' and origin_IATA_CODE = 'PDL' and origin_city_code is null; +update posting_allowances set origin_city_code = 'MJT' where origin_COUNTRY_CODE = 'GRC' and origin_CITY_NAME = 'MYTILENE' and origin_IATA_CODE = 'MJT' and origin_city_code is null; +update posting_allowances set origin_city_code = 'GRX' where origin_COUNTRY_CODE = 'ESP' and origin_CITY_NAME = 'GRANADE' and origin_IATA_CODE = 'GRX' and origin_city_code is null; +update posting_allowances set origin_city_code = 'LCA' where origin_COUNTRY_CODE = 'CYP' and origin_CITY_NAME = 'LANARCA' and origin_IATA_CODE = 'LCA' and origin_city_code is null; +update posting_allowances set origin_city_code = 'LPA' where origin_COUNTRY_CODE = 'ESP' and origin_CITY_NAME = 'LAS PALMAS' and origin_IATA_CODE = 'LPA' and origin_city_code is null; +--from Dominique +update posting_allowances set origin_city_code = 'MLA' where origin_COUNTRY_CODE = 'MLT' and origin_CITY_NAME = 'MALTA' and origin_IATA_CODE = 'MLA' and origin_city_code is null; +update posting_allowances set origin_city_code = 'CAY' where origin_COUNTRY_CODE = 'GUF' and origin_CITY_NAME = 'CAYENNE' and origin_IATA_CODE = 'CAY' and origin_city_code is null; +update posting_allowances set origin_city_code = 'PTP' where origin_COUNTRY_CODE = 'GLP' and origin_CITY_NAME = 'POINTE A PITR' and origin_IATA_CODE = 'PTP' and origin_city_code is null; +update posting_allowances set origin_city_code = 'PPT' where origin_COUNTRY_CODE = 'PYF' and origin_CITY_NAME = 'PAPEETE' and origin_IATA_CODE = 'PPT' and origin_city_code is null; + + +-- Fix return trip amount (best effort) +UPDATE posting_allowances pa1 +SET + return_trip_amount = nvl(( + SELECT + MAX(return_trip_amount) + FROM + posting_allowances pa2 + WHERE + comments = 'Imported from eTravel' + AND pa1.exercise_year = pa2.exercise_year + AND pa1.origin_iata_code = pa2.origin_iata_code + AND pa1.assignment_iata_code = pa2.assignment_iata_code + AND return_trip_amount <> - 1 + ), - 1) +WHERE + comments = 'Imported from eTravel' + AND return_trip_amount = - 1; + +-- Correct relationships +update posting_allowance_persons set trp_cd = 7, trp_code = 'Biological child' where per_id = 10051605 and rel_per_id = 90314498 and trp_cd is null; +update posting_allowance_persons set trp_cd = 9, trp_code = 'Spouse''s child' where per_id = 10053840 and rel_per_id in (90315208,90315209) and trp_cd is null; + +update posting_allowance_persons set trp_cd = 41, trp_code = 'Spouse', rel_per_id = 42157 where per_id = 153140 and rel_per_id = 80355114 and trp_cd is null and extract(year from created_at) = 2018; +update posting_allowances set spouse_per_id = 42157 where per_id = 153140 and exercise_year = 2018 and nvl(spouse_per_id, 0) <> 42157; + +delete from posting_allowance_persons where per_id = 153140 and rel_per_id = 42157 and trp_cd = 41 and extract(year from created_at) = 2019; +update posting_allowance_persons set trp_cd = 41, trp_code = 'Spouse', rel_per_id = 42157 where per_id = 153140 and rel_per_id = 80355114 and trp_cd is null and extract(year from created_at) = 2019; +update posting_allowances set spouse_per_id = 42157 where per_id = 153140 and exercise_year = 2019 and nvl(spouse_per_id, 0) <> 42157; + +delete from posting_allowance_persons where per_id = 153140 and rel_per_id = 42157 and trp_cd = 41 and extract(year from created_at) = 2020; +update posting_allowance_persons set trp_cd = 41, trp_code = 'Spouse', rel_per_id = 42157 where per_id = 153140 and rel_per_id = 80355114 and trp_cd is null and extract(year from created_at) = 2020; +update posting_allowances set spouse_per_id = 42157 where per_id = 153140 and exercise_year = 2020 and nvl(spouse_per_id, 0) <> 42157; diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/02 ERIGHTS/Scripts/05 Checks.sql b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/02 ERIGHTS/Scripts/05 Checks.sql new file mode 100644 index 0000000..411b724 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/Migration allowances from eTravel/02 ERIGHTS/Scripts/05 Checks.sql @@ -0,0 +1,51 @@ +select distinct ASSIGNMENT_COUNTRY_CODE, ASSIGNMENT_CITY_NAME, ASSIGNMENT_IATA_CODE +from posting_allowances +where comments = 'Imported from eTravel' +and assignment_city_code is null; + +select distinct ORIGIN_COUNTRY_CODE, ORIGIN_CITY_NAME, ORIGIN_IATA_CODE +from posting_allowances +where comments = 'Imported from eTravel' +and ORIGIN_CITY_CODE is null; + +select distinct recruitment_COUNTRY_CODE, recruitment_CITY_NAME, recruitment_IATA_CODE +from posting_allowances +where comments = 'Imported from eTravel' +and recruitment_CITY_CODE is null; + +select * +from etravel_migration_table +where assignm_country_id <> ori_country_id +and country_of_origin <> dst_country_id; + +select distinct pa2.exercise_year, pa2.origin_iata_code, pa2.assignment_iata_code, +round(pa2.outgoing_trip_amount, 2), pa2.return_trip_amount from +posting_allowances pa2 +where comments = 'Imported from eTravel' +and nvl(return_trip_amount, -1) in ( -1, 0.01) +order by 1,2,3; + +select * +from posting_allowances +where comments = 'Imported from eTravel' +and nvl(return_trip_amount, -1) in ( -1, 0.01); + +select * +from etravel_migration_table +where nvl(full_price, 0) <= 0; + +select * +from posting_allowances pa +inner join posting_allowance_persons pap on (pa.posting_allowance_id = pap.posting_allowance_id) +where pa.comments = 'Imported from eTravel' +and pap.trp_cd is null +--and pa.exercise_year = 2022 +--and pa.per_id = 153140 +order by pa.exercise_year, pap.rel_per_id; + +select exercise_year, per_id, count(distinct rel_per_id) +from etravel_migration_table +where TRP_CODE = 'Spouse' +group by exercise_year, per_id +having count(distinct rel_per_id) > 1 +order by 1, 2; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/RIGD-3004-ADD-FIELDS-MISSING_RATES_GOSSELIN.sql b/e-rights-common/src/main/database/release/archive/3.0.0/RIGD-3004-ADD-FIELDS-MISSING_RATES_GOSSELIN.sql new file mode 100644 index 0000000..1f44f50 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/RIGD-3004-ADD-FIELDS-MISSING_RATES_GOSSELIN.sql @@ -0,0 +1,8 @@ +ALTER TABLE RATES_MISSING + ADD (WS_EXCEPTION CHAR(1 BYTE) DEFAULT 'N'); + +ALTER TABLE RATES_MISSING + ADD (MOVE_DATE DATE); + +ALTER TABLE RATES_MISSING + ADD (ERROR_MESSAGE VARCHAR2(3000)); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/eTravel Connections Import/01 Data Import - Change constraints.sql b/e-rights-common/src/main/database/release/archive/3.0.0/eTravel Connections Import/01 Data Import - Change constraints.sql new file mode 100644 index 0000000..41111e2 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/eTravel Connections Import/01 Data Import - Change constraints.sql @@ -0,0 +1,13 @@ +-- Before import +alter table t_airports disable constraint FK_AIRPORT_AIRPORT_STEM_ID; + +alter table t_connections disable constraint FK_T_CONNEC_T_AIRPOR_DST; +alter table t_connections disable constraint FK_T_CONNEC_T_AIRPOR_ORG; +alter table t_connections disable constraint T_CONNECTIONS_T_CONNECTIO_FK1; + +-- After import +alter table t_airports enable constraint FK_AIRPORT_AIRPORT_STEM_ID; + +alter table t_connections enable constraint FK_T_CONNEC_T_AIRPOR_DST; +alter table t_connections enable constraint FK_T_CONNEC_T_AIRPOR_ORG; +alter table t_connections enable constraint T_CONNECTIONS_T_CONNECTIO_FK1; diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/eTravel Connections Import/02 Transfer Routes Calculation tables contents from eTravel to eRights.txt b/e-rights-common/src/main/database/release/archive/3.0.0/eTravel Connections Import/02 Transfer Routes Calculation tables contents from eTravel to eRights.txt new file mode 100644 index 0000000..0103f00 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/eTravel Connections Import/02 Transfer Routes Calculation tables contents from eTravel to eRights.txt @@ -0,0 +1,8 @@ +-- Export eTravel tables +expdp ETRAVEL@EDELHRM_EEAS_01_P tables=T_AIRPORT_STEMS,T_AIRPORTS,T_CONNECTION_STEMS,T_CONNECTIONS directory=DBOUT_EEASDTPP dumpfile=ETRAVEL_ROUTE_CALC_DATA_PRD_XFR_20230403.dmp logfile=ETRAVEL_ROUTE_CALC_DATA_PRD_XFR_20230403.log + +-- Backup test +expdp ERIGHTS@ERIGHTS_EEAS_01_T schemas=ERIGHTS directory=DBOUT_EEASDTPD dumpfile=ERIGHTS_TST_BKP_20230228.dmp logfile=ERIGHTS_TST_BKP_20230228.log REUSE_DUMPFILES=YES QUERY='ANK_ABAC_COMM_REQUESTS:"WHERE 1<>1",ANK_ABAC_COMM_RESPONSES:"WHERE 1<>1",ANK_ABAC_COMM_ERRORS:"WHERE 1<>1"' "EXCLUDE=TABLE:\"IN (SELECT table_name FROM user_tables WHERE table_name LIKE 'TMP%' OR table_name LIKE 'BKP%')\"" + +-- Import into test +impdp ERIGHTS@ERIGHTS_EEAS_01_A directory=DBIN_EEASDTPD dumpfile=ETRAVEL_ROUTE_CALC_DATA_PRD_XFR_20230403.dmp logfile=DBOUT_EEASDTPD:ERIGHTS_ROUTE_CALC_DATA_PRD_XFR_20230403.log TABLE_EXISTS_ACTION=APPEND REMAP_SCHEMA=ETRAVEL:ERIGHTS diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/eTravel Connections Import/10 Create 2023 connections.sql b/e-rights-common/src/main/database/release/archive/3.0.0/eTravel Connections Import/10 Create 2023 connections.sql new file mode 100644 index 0000000..e3f1fc2 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/eTravel Connections Import/10 Create 2023 connections.sql @@ -0,0 +1,110 @@ +alter table t_connections disable constraint FK_T_CONNEC_T_AIRPOR_DST; +alter table t_connections disable constraint FK_T_CONNEC_T_AIRPOR_ORG; +alter table t_connections disable constraint T_CONNECTIONS_T_CONNECTIO_FK1; + +declare + ln_min_stem_id_2023 number; +begin + select min (connection_stem_id) into ln_min_stem_id_2023 + from t_connections + where valid_from >= '01-JAN-2023'; + + delete from t_connections where connection_id >= ln_min_stem_id_2023; + delete from t_connection_stems where connection_stem_id >= ln_min_stem_id_2023; + commit; +end; +/ + +alter table t_connections enable constraint FK_T_CONNEC_T_AIRPOR_DST; +alter table t_connections enable constraint FK_T_CONNEC_T_AIRPOR_ORG; +alter table t_connections enable constraint T_CONNECTIONS_T_CONNECTIO_FK1; + +create table tmp$connections_2023 as +SELECT sq_connections.NEXTVAL connection_stem_id, + 0 connection_id, + airport_stem_id_org, + airport_stem_id_dst, + round(price * 1.07, 2) price, + iata_zone, + TO_DATE('01-JAN-2023', 'DD-MON-YYYY') valid_from, + TO_DATE('31-DEC-2023', 'DD-MON-YYYY') valid_to, + active, + archived, + deleted, + sysdate entry_ts, + - 3 done_by_per_id, + 'eRights : connection insert ' || to_char(sysdate, 'DD-MM-YY') system_message, + 'Connections initialization on ' || to_char(sysdate, 'DD-MM-YY') rev_message + FROM + t_connections + WHERE + valid_from >= '01-JAN-2022'; + +update tmp$connections_2023 +set connection_id = connection_stem_id; + +commit; + +alter table t_connections disable constraint FK_T_CONNEC_T_AIRPOR_DST; +alter table t_connections disable constraint FK_T_CONNEC_T_AIRPOR_ORG; +alter table t_connections disable constraint T_CONNECTIONS_T_CONNECTIO_FK1; + +INSERT ALL +INTO t_connection_stems ( connection_stem_id ) + VALUES ( connection_stem_id ) +INTO t_connections ( + connection_stem_id, + connection_id, + airport_stem_id_org, + airport_stem_id_dst, + price, + iata_zone, + valid_from, + valid_to, + active, + archived, + deleted, + entry_ts, + done_by_per_id, + system_message, + rev_message +) VALUES ( + connection_stem_id, + connection_id, + airport_stem_id_org, + airport_stem_id_dst, + price, + iata_zone, + valid_from, + valid_to, + active, + archived, + deleted, + entry_ts, + done_by_per_id, + system_message, + rev_message +) +select connection_stem_id, + connection_id, + airport_stem_id_org, + airport_stem_id_dst, + price, + iata_zone, + valid_from, + valid_to, + active, + archived, + deleted, + entry_ts, + done_by_per_id, + system_message, + rev_message from tmp$connections_2023; + +commit; + +alter table t_connections enable constraint FK_T_CONNEC_T_AIRPOR_DST; +alter table t_connections enable constraint FK_T_CONNEC_T_AIRPOR_ORG; +alter table t_connections enable constraint T_CONNECTIONS_T_CONNECTIO_FK1; + +drop table tmp$connections_2023; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.0.0/eTravel Connections Import/87_RIGD-3017_update_airports.sql b/e-rights-common/src/main/database/release/archive/3.0.0/eTravel Connections Import/87_RIGD-3017_update_airports.sql new file mode 100644 index 0000000..f3f033a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.0.0/eTravel Connections Import/87_RIGD-3017_update_airports.sql @@ -0,0 +1,40 @@ +create table bkp$airports_rigd3017 as select * from airports; +create table bkp$airport_cities_rigd3017 as select * from airport_cities; +create table bkp$t_airports_rigd3017 as select * from t_airports; + +update airports +set active = 'N' +where iata_code = 'LHR'; + +update airports +set active = 'N' +where iata_code = 'TSE'; + +update t_airports +set iata_code = 'NQZ' +where iata_code = 'TSE'; + +update airport_cities +set iata_code = 'ESB' +where iata_code = 'ANK'; + +update airports +set active = 'N' +where iata_code = 'ANK'; + +update t_airports +set t_airports.iata_code = 'ESB' +where iata_code = 'ANK'; + +delete from airport_cities +where iata_code = 'YAO'; + +update airports +set active = 'N' +where iata_code = 'YAO'; + +update t_airports +set t_airports.iata_code = 'NSI' +where iata_code = 'YAO'; + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.1.0/01_RIGD-3093_posting_allowances_treated_alter.sql b/e-rights-common/src/main/database/release/archive/3.1.0/01_RIGD-3093_posting_allowances_treated_alter.sql new file mode 100644 index 0000000..9f26146 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.1.0/01_RIGD-3093_posting_allowances_treated_alter.sql @@ -0,0 +1,14 @@ +ALTER TABLE posting_allowances_treated ADD ( + assignment_start_date DATE, + assignment_end_date DATE, + expatriation_allowance_date_from DATE, + expatriation_allowance_date_to DATE +); + +ALTER TABLE posting_allowances_treated DROP CONSTRAINT uk_posting_allowances_treated_per_id_soj_id_exercise_year; + +ALTER TABLE posting_allowances_treated + ADD CONSTRAINT uk_posting_allowances_treated_per_id_soj_id_exercise_year UNIQUE ( per_id, + soj_id, + exercise_year, + expatriation_allowance_date_from ) \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.1.0/02_RIGD-3093_v_current_exercise_new_travel_allowances.sql b/e-rights-common/src/main/database/release/archive/3.1.0/02_RIGD-3093_v_current_exercise_new_travel_allowances.sql new file mode 100644 index 0000000..baba88a --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.1.0/02_RIGD-3093_v_current_exercise_new_travel_allowances.sql @@ -0,0 +1,142 @@ +CREATE OR REPLACE VIEW "ERIGHTS"."V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES" ( + "RECORD_KEY", + "SOJ_ID", + "JOB_ID", + "PER_ID", + "JOB_TYPE", + "ASSIGN_START_DATE_TO", + "ASSIGN_END_DATE_TO", + "NO_SYSPER", + "TITLE", + "SURNAME", + "GENRE", + "USERID", + "MONIKER", + "DOMAIN", + "DISPLAY_NAME", + "JCX_ID", + "ASSIGN_START_DATE", + "ASSIGN_END_DATE", + "LST_CD", + "LST_CODE", + "LST_BEG_DATE", + "LST_ASS_DATE", + "LST_END_DATE", + "CGR_CD", + "ORG_ID", + "MAIN_ORG_ID", + "ORG_NAME", + "ORG_CD", + "ORG_DESC", + "TOR_ID", + "TYPEOFENTITY_NAME", + "DEL_ID", + "DELEGATION_NAME", + "RESPONSIBLE", + "HEAD_OF_ENTITY", + "JOB_CITY_CODE", + "JOB_CITY_NAME", + "JOB_COUNTRY_CODE", + "JOB_COUNTRY_NAME", + "IATA_CODE", + "DELEGATION_ORG_ID", + "EXPATRATION_ALLOWANCE_DATE_FROM", + "EXPATRATION_ALLOWANCE_DATE_TO" +) AS + SELECT + to_char(a.soj_id) + || to_char(expat_allow.date_from, 'YYYYMMDD') record_key, + a.soj_id, + j.job_id, + p.per_id, + j.job_type, + a.start_date assign_start_date_to, + a.end_date assign_end_date_to, + NULL no_sysper,--p.no_sysper, + NULL title,--p.title, + p.last_name surname, + p.gender genre, + NULL userid,--p.userid, + NULL moniker,--p.moniker, + NULL domain,--p.domain, + p.last_name + || ' ' + || p.first_name display_name, + j.jcx_id, + a.start_date assign_start_date, + a.end_date assign_end_date, + p.statutory_link_code lst_cd, + p.statutory_link_desc lst_code, + NULL lst_beg_date,--p.lst_beg_date, + NULL lst_as_date,--p.lst_ass_date, + NULL lst_end_date,--p.lst_end_date, + NULL cgr_cd,--p.cgr_cd, + e.org_id, + e.main_org_id, + e.org_name, + e.org_cd, + e.org_desc, + e.tor_id, + e.typeofentity_name, + e.del_id, + e.delegation_name, + j.responsible, + j.head_of_entity, + j.location_city_code job_city_code, + j.location_city_name job_city_name, + j.location_country_code job_country_code, + j.location_country_name job_country_name, + ac.iata_code, + e.main_org_id delegation_org_id, + expat_allow.date_from expatration_allowance_date_from, + expat_allow.date_to expatration_allowance_date_to + FROM + v_staffmembers p + INNER JOIN mv_assignments_hist_eeas a ON ( p.per_id = a.per_id ) + INNER JOIN mv_jobs_hist_eeas j ON ( a.job_id = j.job_id + AND a.jcx_id = j.jcx_id ) + INNER JOIN mv_entities e ON ( j.org_id = e.org_id ) + INNER JOIN airport_cities ac ON ( ac.city_code = j.location_city_code + AND ac.country_code = j.location_country_code ) + INNER JOIN ( + SELECT + r.per_id_attrib, + r.date_from, + r.date_to + FROM + mv_person_relatives_rights r + WHERE + r.rgt_id = 3002 -- Expatriation allowance (IR) + AND r.rtt_id_type IN ( 410, 411 ) -- 410 => [IR = IDE] Expatriation Allowance : 16%, 411 =>[IR = IEX] Foreign Residence Allowance : 4% + AND r.date_from <= TO_DATE('31-DEC-' || EXTRACT(YEAR FROM sysdate), + 'DD-MON-YYYY') + AND r.date_to >= trunc(sysdate, 'YYYY') + ) expat_allow ON ( expat_allow.per_id_attrib = p.per_id ) + WHERE + EXISTS ( + SELECT + 1 + FROM + mv_entities e2 + WHERE + e2.is_delegation = 'Y' + AND e2.org_id = e.main_org_id + ) + AND ( p.statutory_link_code IN ( 'CA', 'CB', 'FP', 'FS', 'TP', + 'TE' ) + OR p.statutory_link_code IS NULL ) + AND a.start_date <= TO_DATE('31-DEC-' || EXTRACT(YEAR FROM sysdate), + 'DD-MON-YYYY') + AND a.end_date >= trunc(sysdate, 'YYYY') + AND NOT EXISTS ( -- remove the create allowances, we need to filter by the travel,storage acomodation + SELECT + 1 + FROM + posting_allowances_treated aa + WHERE + aa.per_id = p.per_id + AND aa.delegation_org_id = e.main_org_id + AND aa.exercise_year = EXTRACT(YEAR FROM sysdate) + AND nvl(aa.expatriation_allowance_date_from, TO_DATE('01-JAN-1900', 'DD-MON-YYYY')) = expat_allow.date_from + AND nvl(aa.expatriation_allowance_date_to, TO_DATE('01-JAN-1900', 'DD-MON-YYYY')) = expat_allow.date_to + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.1.0/03_RIGD-3093_posting_allowances_treated_populate_new_fields.sql b/e-rights-common/src/main/database/release/archive/3.1.0/03_RIGD-3093_posting_allowances_treated_populate_new_fields.sql new file mode 100644 index 0000000..4ab2111 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.1.0/03_RIGD-3093_posting_allowances_treated_populate_new_fields.sql @@ -0,0 +1,23 @@ +UPDATE posting_allowances_treated pat +SET + ( assignment_start_date, + assignment_end_date, + expatriation_allowance_date_from, + expatriation_allowance_date_to ) = ( + SELECT + pa.assignment_start_date, + pa.assignment_end_date, + pa.expatriation_allowance_date_from, + pa.expatriation_allowance_date_to + FROM + posting_allowances pa + WHERE + pat.posting_allowance_id = pa.posting_allowance_id + ) +WHERE + assignment_start_date IS NULL + OR assignment_end_date IS NULL + OR expatriation_allowance_date_from IS NULL + OR expatriation_allowance_date_to IS NULL; + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.1.0/04_RIGD-3096_POSTING_ALLOWANCES_Modify_unique_constraint.sql b/e-rights-common/src/main/database/release/archive/3.1.0/04_RIGD-3096_POSTING_ALLOWANCES_Modify_unique_constraint.sql new file mode 100644 index 0000000..ee442e4 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.1.0/04_RIGD-3096_POSTING_ALLOWANCES_Modify_unique_constraint.sql @@ -0,0 +1,8 @@ +ALTER TABLE posting_allowances DROP CONSTRAINT uk_posting_allowances_per_id_soj_id_exercise_year; + +ALTER TABLE posting_allowances + ADD CONSTRAINT uk_posting_allowances_per_id_soj_id_exercise_year_parent_posting_allowance_id UNIQUE ( per_id, + soj_id, + exercise_year, + parent_posting_allowance_id + ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.1.0/06_RIGD-3134_V_FAMILY_MEMBERS.sql b/e-rights-common/src/main/database/release/archive/3.1.0/06_RIGD-3134_V_FAMILY_MEMBERS.sql new file mode 100644 index 0000000..c8542c6 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.1.0/06_RIGD-3134_V_FAMILY_MEMBERS.sql @@ -0,0 +1,69 @@ +CREATE OR REPLACE VIEW "ERIGHTS"."V_FAMILY_MEMBERS" ( + "FAMILY_MEMBER_ID", + "PER_ID", + "SURNAME", + "DATE_OF_BIRTH", + "TRP_CODE", + "TRP_CD", + "REL_PER_ID", + "REL_SURNAME", + "REL_FIRST_NAME", + "REL_DATE_OF_BIRTH", + "CHILD_ALLOWANCE_GRANTED", + "MORE_THAN_2_YEARS_OLD", + "HOUSEHOLD_ALLOWANCE_GRANTED", + "RELATIVE_WORK_IN_DELEGATION", + "RELATIVE_WORK_IN_HQ" +) AS + SELECT + m.family_member_id, + m.per_id, + m.surname, + m.date_of_birth, + m.trp_code, + m.trp_cd, + m.rel_per_id, + m.rel_surname, + m.rel_first_name, + m.rel_date_of_birth, + nvl2(r_chld_all.per_id_attrib, 'Y', 'N') child_allowance_granted, + CASE + WHEN ( EXTRACT(YEAR FROM sysdate) - EXTRACT(YEAR FROM m.rel_date_of_birth) ) >= 2 THEN + 'Y' + ELSE + 'N' + END more_than_2_years_old, + nvl2(r_houshd_all.per_id_attrib, 'Y', 'N') household_allowance_granted, + CASE + WHEN rel_work_del.delegation_name <> 'HQ' + AND rel_work_del.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END relative_work_in_delegation, + CASE + WHEN ( rel_work_del.delegation_name = 'HQ' + AND rel_work_del.per_id IS NOT NULL ) + OR rel_work_del_com.per_id IS NOT NULL THEN + 'Y' + ELSE + 'N' + END relative_work_in_hq + FROM + mv_family_members m + LEFT JOIN mv_person_relatives_rights r_chld_all ON ( m.per_id = r_chld_all.per_id_attrib + AND m.rel_per_id = r_chld_all.per_id_benef + AND r_chld_all.rgt_id = 1003 + AND r_chld_all.right_pct > 50 + AND trunc(sysdate) BETWEEN r_chld_all.date_from AND r_chld_all.date_to ) + LEFT JOIN mv_person_relatives_rights r_houshd_all ON ( m.per_id = r_houshd_all.per_id_attrib + AND m.per_id = r_houshd_all.per_id_benef + AND r_houshd_all.rgt_id = 1006 + AND trunc(sysdate) BETWEEN r_houshd_all.date_from AND r_houshd_all.date_to + ) + LEFT JOIN mv_persons_eeas rel_work_del ON ( m.rel_per_id = rel_work_del.per_id + AND rel_work_del.lst_cd IN ( 'CA', 'CB', 'FP', 'FS', 'TP', + 'TE' ) ) + LEFT JOIN mv_persons_com rel_work_del_com ON ( m.rel_per_id = rel_work_del_com.per_id + AND rel_work_del_com.lst_cd IN ( 'CA', 'CB', 'FP', 'FS', 'TP', + 'TE' ) ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.1.0/07_RIGD-3172_add_missing_records_in_POSTING_ALLOWANCES_TREATED.sql b/e-rights-common/src/main/database/release/archive/3.1.0/07_RIGD-3172_add_missing_records_in_POSTING_ALLOWANCES_TREATED.sql new file mode 100644 index 0000000..ff4c357 --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.1.0/07_RIGD-3172_add_missing_records_in_POSTING_ALLOWANCES_TREATED.sql @@ -0,0 +1,119 @@ +CREATE TABLE bkp$posting_allowances_treated_rigdrigd3172 + AS + SELECT + * + FROM + posting_allowances_treated; + +--delete from posting_allowances_treated; +--insert into posting_allowances_treated select * from bkp$posting_allowances_treated_rigdRIGD3172; + +MERGE INTO posting_allowances_treated pat +USING ( + WITH expat_allowances AS ( + SELECT + r.per_id_attrib, + CASE + WHEN MIN(r.date_from) < TO_DATE('01-JAN-2023', 'DD-MON-YYYY') THEN + TO_DATE('01-JAN-2023', 'DD-MON-YYYY') + ELSE + MIN(r.date_from) + END date_from, + CASE + WHEN MAX(r.date_to) > TO_DATE('31-DEC-2023', 'DD-MON-YYYY') THEN + TO_DATE('31-DEC-2023', 'DD-MON-YYYY') + ELSE + MIN(r.date_to) + END date_to, + round(months_between( + CASE + WHEN MAX(r.date_to) > TO_DATE('31-DEC-2023', + 'DD-MON-YYYY') THEN + TO_DATE('31-DEC-2023', + 'DD-MON-YYYY') + ELSE + MIN(r.date_to) + END, + CASE + WHEN MIN(r.date_from) < TO_DATE('01-JAN-2023', + 'DD-MON-YYYY') THEN + TO_DATE('01-JAN-2023', + 'DD-MON-YYYY') + ELSE + MIN(r.date_from) + END + )) duration + FROM + mv_person_relatives_rights r + WHERE + r.rgt_id = 3002 -- Expatriation allowance (IR) + AND r.rtt_id_type IN ( 410, 411 ) -- 410 => [IR = IDE] Expatriation Allowance : 16%, 411 =>[IR = IEX] Foreign Residence Allowance : 4% + AND r.date_from <= TO_DATE('31-DEC-' || EXTRACT(YEAR FROM sysdate), + 'DD-MON-YYYY') + AND r.date_to >= trunc(sysdate, 'YYYY') + GROUP BY + r.per_id_attrib + ) + SELECT + pa.posting_allowance_id, + pa.per_id, + pa.exercise_year, + pa.delegation_org_id, + pa.soj_id, + v.assign_start_date, + v.assign_end_date, + v.expatration_allowance_date_from expatriation_allowance_date_from, + v.expatration_allowance_date_to expatriation_allowance_date_to + FROM + v_current_exercise_new_travel_allowances v + INNER JOIN posting_allowances pa ON ( v.per_id = pa.per_id + AND v.soj_id = pa.soj_id + AND pa.exercise_year = 2023 ) + INNER JOIN posting_allowance_persons pap ON ( pa.posting_allowance_id = pap.posting_allowance_id + AND pap.trp_cd = - 1 ) + INNER JOIN expat_allowances ea ON ( v.per_id = ea.per_id_attrib ) + WHERE + pap.entitled_months = ea.duration +) pa ON ( pat.posting_allowance_id = pa.posting_allowance_id + AND pat.expatriation_allowance_date_from = pa.expatriation_allowance_date_from ) +WHEN MATCHED THEN UPDATE +SET pat.expatriation_allowance_date_to = pa.expatriation_allowance_date_to, + pat.assignment_start_date = pa.assign_start_date, + pat.assignment_end_date = pa.assign_end_date, + pat.updated_by = 1, + pat.updated_at = sysdate +WHEN NOT MATCHED THEN +INSERT ( + posting_allowance_treated_id, + posting_allowance_id, + per_id, + exercise_year, + delegation_org_id, + soj_id, + created_by, + created_at, + updated_by, + updated_at, + assignment_start_date, + assignment_end_date, + expatriation_allowance_date_from, + expatriation_allowance_date_to ) +VALUES + ( seq_posting_allowances_treated.NEXTVAL, + pa.posting_allowance_id, + pa.per_id, + pa.exercise_year, + pa.delegation_org_id, + pa.soj_id, + 1--CREATED_BY + , + sysdate--CREATED_AT + , + 1--UPDATED_BY + , + sysdate--UPDATED_AT + , + pa.assign_start_date, + pa.assign_end_date, + pa.expatriation_allowance_date_from, + pa.expatriation_allowance_date_to ); \ No newline at end of file diff --git a/e-rights-common/src/main/database/release/archive/3.1.0/08_RIGD-3188_Update_NOTIFICATION_TEMPLATES.sql b/e-rights-common/src/main/database/release/archive/3.1.0/08_RIGD-3188_Update_NOTIFICATION_TEMPLATES.sql new file mode 100644 index 0000000..d9dcb8f --- /dev/null +++ b/e-rights-common/src/main/database/release/archive/3.1.0/08_RIGD-3188_Update_NOTIFICATION_TEMPLATES.sql @@ -0,0 +1,43 @@ +REM INSERTING into NOTIFICATION_TEMPLATES +SET DEFINE OFF; + +update NOTIFICATION_TEMPLATES +set default_template = 'N' +where NOTIFICATION_TEMPLATE_TYPE = 'CRISIS' +and default_template = 'Y'; + +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (70,'CRISIS','Your evacuation to ${MOVEMENT_TO} file has been created in the e-Rights portal','Dear ${FIRST_NAME} ${LAST_NAME}, +
    +
    + Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming evacuation has been created in e-Rights. The foreseen start date of your movement is on ${START_DATE} +
    +
    + Please, log in to e-Rights using your EU Login to confirm or withdraw your movement. +
    +
    + Should you believe that any correction of your data would be required, please contact us by email. +
    +
    + ${MOVEMENT_FILE_ID} +
    +
    + Kind regards,','EEAS.RM.01 Crisis Management team
    Email: EUDEL-LIVING-CONDITIONS@eeas.europa.eu','CREATE','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (71,'CRISIS','Your assignment to ${MOVEMENT_TO} has been withdrawn in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME}, +
    +
    + Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} has been withdrawn. +
    +
    + Log in to e-Rights to consult your movement file. +
    +
    + If you disagree, please contact: DEL-POSTINGS@eeas.europa.eu','EEAS.RM.01 Crisis Management team
    Email: EUDEL-LIVING-CONDITIONS@eeas.europa.eu','WITHDRAW','Y'); +Insert into NOTIFICATION_TEMPLATES (NOTIFICATION_TEMPLATE_ID,NOTIFICATION_TEMPLATE_TYPE,MESSAGE_SUBJECT,MESSAGE_BODY,MESSAGE_SIGNATURE,NOTIFICATION_TEMPLATE_CODE,DEFAULT_TEMPLATE) values (72,'CRISIS','Reminder: Your evacuation to ${MOVEMENT_TO} has been created in e-Rights portal.','Dear ${FIRST_NAME} ${LAST_NAME},
    +
    + Your Movement file ${MOVEMENT_FILE_ID} from ${MOVEMENT_FROM} to ${MOVEMENT_TO} of your upcoming evacuation is waiting for your confirmation in e-Rights. In the absence of your confirmation, your rotation entitlements will not be activated and you will not be eligible for payment.
    +
    + Please, log in to e-Rights using your EU Login to confirm or withdraw your assignment.
    +
    + Kind regards,','EEAS.RM.01 Crisis Management team
    Email: EUDEL-LIVING-CONDITIONS@eeas.europa.eu','REMINDER_AFTER_CREATE','Y'); + +COMMIT; diff --git a/e-rights-common/src/main/database/utilities/01_Erase_QRTZ_tables.sql b/e-rights-common/src/main/database/utilities/01_Erase_QRTZ_tables.sql new file mode 100644 index 0000000..d3cc33b --- /dev/null +++ b/e-rights-common/src/main/database/utilities/01_Erase_QRTZ_tables.sql @@ -0,0 +1,23 @@ +DELETE FROM qrtz_simprop_triggers; + +DELETE FROM qrtz_simple_triggers; + +DELETE FROM qrtz_blob_triggers; + +DELETE FROM qrtz_cron_triggers; + +DELETE FROM qrtz_triggers; + +DELETE FROM qrtz_calendars; + +DELETE FROM qrtz_fired_triggers; + +DELETE FROM qrtz_job_details; + +DELETE FROM qrtz_locks; + +DELETE FROM qrtz_paused_trigger_grps; + +DELETE FROM qrtz_scheduler_state; + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/utilities/08.RIGD-869-persons_bank_info_delete.sql b/e-rights-common/src/main/database/utilities/08.RIGD-869-persons_bank_info_delete.sql new file mode 100644 index 0000000..25422ed --- /dev/null +++ b/e-rights-common/src/main/database/utilities/08.RIGD-869-persons_bank_info_delete.sql @@ -0,0 +1,52 @@ +/* +4. we will have to create a database procedure to delete all the perosnal bank info that has lef and baf null and they are not attach to any request or declaration +*/ + +CREATE TABLE bkp$persons_bank_info_rigd869 + AS + SELECT + * + FROM + persons_bank_info pbi + WHERE + lef IS NULL + AND baf IS NULL + AND NOT EXISTS ( + SELECT + 1 + FROM + requests r + WHERE + r.persons_bank_info_id = pbi.persons_bank_info_id + ) + AND NOT EXISTS ( + SELECT + 1 + FROM + declaration d + WHERE + d.persons_bank_info_id = pbi.persons_bank_info_id + ); + +DELETE FROM persons_bank_info pbi +WHERE + lef IS NULL + AND baf IS NULL + AND NOT EXISTS ( + SELECT + 1 + FROM + requests r + WHERE + r.persons_bank_info_id = pbi.persons_bank_info_id + ) + AND NOT EXISTS ( + SELECT + 1 + FROM + declaration d + WHERE + d.persons_bank_info_id = pbi.persons_bank_info_id + ); + +COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/utilities/AuditingSQL/check request aud.sql b/e-rights-common/src/main/database/utilities/AuditingSQL/check request aud.sql new file mode 100644 index 0000000..42d8b6c --- /dev/null +++ b/e-rights-common/src/main/database/utilities/AuditingSQL/check request aud.sql @@ -0,0 +1,4 @@ +select r.*,p.per_id,p.first_name,p.last_name from AUD_REQUESTS r, V_PEOPLE p + where r.updated_by = p.per_id + and request_string_id = '2022-REM-640' + order by updated_at \ No newline at end of file diff --git a/e-rights-common/src/main/database/utilities/check session.sql b/e-rights-common/src/main/database/utilities/check session.sql new file mode 100644 index 0000000..84f936b --- /dev/null +++ b/e-rights-common/src/main/database/utilities/check session.sql @@ -0,0 +1,29 @@ +CREATE TABLE ERIGHTS.BUDGET_LINES_DETAILS ( + BUDGET_LINES_DETAILS_ID NUMBER NOT NULL, + BUDGET_LINES_SUBPOSTS_MAPPING_ID NUMBER NOT NULL, + SUBPOST_CODE VARCHAR2(50 BYTE), + SUBPOST_DESCRIPTION VARCHAR2(1000 BYTE), + SUBPOST_TYPE VARCHAR2(50 BYTE), + EXCAT VARCHAR2(200 BYTE), + + CONSTRAINT PK_BUDGET_LINES_DETAILS + PRIMARY KEY (BUDGET_LINES_DETAILS_ID), + + CONSTRAINT FK_BLD_TO_MAPPING + FOREIGN KEY (BUDGET_LINES_SUBPOSTS_MAPPING_ID) + REFERENCES ERIGHTS.BUDGET_LINES_SUBPOSTS_MAPPING + (BUDGET_LINES_SUBPOSTS_MAPPING_ID) +);SELECT + (SELECT value FROM v$parameter WHERE name = 'processes') AS max_processes, + (SELECT COUNT(*) FROM v$process) AS current_processes, + ((SELECT value FROM v$parameter WHERE name = 'processes') + - (SELECT COUNT(*) FROM v$process)) AS free_processes, + + (SELECT value FROM v$parameter WHERE name = 'sessions') AS max_sessions, + (SELECT COUNT(*) FROM v$session) AS current_sessions, + ((SELECT value FROM v$parameter WHERE name = 'sessions') + - (SELECT COUNT(*) FROM v$session)) AS free_sessions, + + (SELECT value FROM v$parameter WHERE name = 'transactions') AS max_transactions, + (SELECT COUNT(*) FROM v$transaction) AS current_transactions +FROM dual; \ No newline at end of file diff --git a/e-rights-common/src/main/database/utilities/clear_defauls_ceiling_and missing_rates.sql b/e-rights-common/src/main/database/utilities/clear_defauls_ceiling_and missing_rates.sql new file mode 100644 index 0000000..b77e7bb --- /dev/null +++ b/e-rights-common/src/main/database/utilities/clear_defauls_ceiling_and missing_rates.sql @@ -0,0 +1,25 @@ +truncate table ENTITLMNT_MAXS_DEFAULT; + +truncate table RATES_MISSING; + + +INSERT INTO ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID, CITY_CODE_TO, CITY_CODE_FROM, COUNTRY_CODE_TO, COUNTRY_CODE_FROM, CREATED_AT, CREATED_BY, UPDATED_BY, UPDATED_AT, AMOUNT, CURRENCY, START_DATE, ENTITLMNT_MAX_CAT_ID, LATEST, SOURCE_DATA) +select SEQ_ENTITLMNT_MAX_DEFAULT.NEXTVAL,c_to.city_code,c_from.city_code,c_to.COUNTRY_CODE,c_from.COUNTRY_CODE,sysdate,0,0,sysdate,6134.84, 'EUR',TO_DATE('01/05/2021', 'dd/mm/yyyy'),3,'Y','HR' from MV_CITIES c_from,MV_CITIES c_to + where c_from.COUNTRY_CODE= 'BEL' and c_to.COUNTRY_CODE = 'BEL'; + + + +INSERT INTO ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID, CITY_CODE_TO, CITY_CODE_FROM, COUNTRY_CODE_TO, COUNTRY_CODE_FROM, CREATED_AT, CREATED_BY, UPDATED_BY, UPDATED_AT, AMOUNT, CURRENCY, START_DATE, ENTITLMNT_MAX_CAT_ID, LATEST, SOURCE_DATA) +select SEQ_ENTITLMNT_MAX_DEFAULT.NEXTVAL,c_to.city_code,c_from.city_code,c_to.COUNTRY_CODE,c_from.COUNTRY_CODE,sysdate,0,0,sysdate,6614.84, 'EUR',TO_DATE('01/05/2021', 'dd/mm/yyyy'),5,'Y','HR' from MV_CITIES c_from,MV_CITIES c_to + where c_from.COUNTRY_CODE= 'BEL' and c_to.COUNTRY_CODE = 'BEL'; + + +INSERT INTO ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID, CITY_CODE_TO, CITY_CODE_FROM, COUNTRY_CODE_TO, COUNTRY_CODE_FROM, CREATED_AT, CREATED_BY, UPDATED_BY, UPDATED_AT, AMOUNT, CURRENCY, START_DATE, ENTITLMNT_MAX_CAT_ID, LATEST, SOURCE_DATA) +select SEQ_ENTITLMNT_MAX_DEFAULT.NEXTVAL,c_to.city_code,c_from.city_code,c_to.COUNTRY_CODE,c_from.COUNTRY_CODE,sysdate,0,0,sysdate,6134.84, 'EUR',TO_DATE('01/05/2022', 'dd/mm/yyyy'),3,'Y','HR' from MV_CITIES c_from,MV_CITIES c_to + where c_from.COUNTRY_CODE= 'BEL' and c_to.COUNTRY_CODE = 'BEL'; + + + +INSERT INTO ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID, CITY_CODE_TO, CITY_CODE_FROM, COUNTRY_CODE_TO, COUNTRY_CODE_FROM, CREATED_AT, CREATED_BY, UPDATED_BY, UPDATED_AT, AMOUNT, CURRENCY, START_DATE, ENTITLMNT_MAX_CAT_ID, LATEST, SOURCE_DATA) +select SEQ_ENTITLMNT_MAX_DEFAULT.NEXTVAL,c_to.city_code,c_from.city_code,c_to.COUNTRY_CODE,c_from.COUNTRY_CODE,sysdate,0,0,sysdate,6614.84, 'EUR',TO_DATE('01/05/2022', 'dd/mm/yyyy'),5,'Y','HR' from MV_CITIES c_from,MV_CITIES c_to + where c_from.COUNTRY_CODE= 'BEL' and c_to.COUNTRY_CODE = 'BEL'; diff --git a/e-rights-common/src/main/database/utilities/comunications from abac.sql b/e-rights-common/src/main/database/utilities/comunications from abac.sql new file mode 100644 index 0000000..782fe3a --- /dev/null +++ b/e-rights-common/src/main/database/utilities/comunications from abac.sql @@ -0,0 +1,107 @@ +SELECT + * +FROM + ank_abac_comm comm, + ank_abac_comm_errors err, + ank_abac_comm_requests req, + ank_abac_comm_responses res +WHERE + comm.id = err.id (+) + AND comm.id = req.id (+) + AND comm.id = res.id (+) +ORDER BY + comm.request_sent_at DESC + + + + + + +SELECT + * + FROM + ank_abac_comm comm, + ank_abac_comm_errors err, + ank_abac_comm_requests req, + ank_abac_comm_responses res, + REQUEST_ABAC_ITEM req_item, + REQUEST_PAYMENT_ABAC_INFO req_pay_info + WHERE + comm.id = err.id (+) + AND comm.id = req.id (+) + AND comm.id = res.id (+) + AND comm.id = req_item.abac_comm_id (+) + and req_item.REQUEST_PAYMENT_ABAC_INFO_ID = req_pay_info.REQUEST_PAYMENT_ABAC_INFO_ID(+) + and req_item.created_at between TO_DATE( '25/05/2022 11', 'DD/MM/YYYY HH24' ) and TO_DATE( '25/05/2022 13', 'DD/MM/YYYY HH24' ) + -- and type = 'ASYNC' -- ASYNC / SYNC + + ORDER BY + comm.request_sent_at DESC + + + + + + + + + + + + + +///// NUp number searhc + + +SELECT + * + FROM + ank_abac_comm comm, + ank_abac_comm_errors err, + ank_abac_comm_requests req, + ank_abac_comm_responses res + + WHERE + comm.id = err.id (+) + AND comm.id = req.id (+) + AND comm.id = res.id (+) + and comm.request_sent_at > sysdate - 4 + and req.data like '%6134952500%' + ORDER BY + comm.request_sent_at DESC + + + + + + + + + + + + +select * from MV_NUP nu , V_PEOPLE p + where nu.per_id = p.per_id + and nup in (select distinct(NUP) from ( + SELECT CAST( SUBSTR(TRIM(req.data), INSTR(TRIM(req.data), '')+11,INSTR(TRIM(req.data), '')-INSTR(TRIM(req.data), '')-11) AS VARCHAR2(100)) as NUP + FROM + ank_abac_comm comm, + ank_abac_comm_errors err, + ank_abac_comm_requests req, + ank_abac_comm_responses res + + WHERE + comm.id = err.id (+) + AND comm.id = req.id (+) + AND comm.id = res.id (+) + and comm.request_sent_at > sysdate - 1 + and res.data like '%rowCount>0%' + ORDER BY + comm.request_sent_at DESC + + )) + + + + diff --git a/e-rights-common/src/main/database/utilities/delete posting allowances 2023.sql b/e-rights-common/src/main/database/utilities/delete posting allowances 2023.sql new file mode 100644 index 0000000..d19ea88 --- /dev/null +++ b/e-rights-common/src/main/database/utilities/delete posting allowances 2023.sql @@ -0,0 +1,125 @@ + +delete from POSTING_ALLOWANCE_PERSONS where POSTING_ALLOWANCE_ID in ( +select POSTING_ALLOWANCE_ID from POSTING_ALLOWANCES where EXERCISE_YEAR = 2023); + + +delete from POSTING_ALLOWANCES_TREATED where EXERCISE_YEAR = 2023; + +delete from POSTING_ALLOWANCES where EXERCISE_YEAR = 2023; + +commit; + + + +--delete the spouses travel allowances +delete from POSTING_ALLOWANCE_PERSONS where POSTING_ALLOWANCE_ID in ( +select POSTING_ALLOWANCE_ID from POSTING_ALLOWANCES where EXERCISE_YEAR = 2023 and per_id in ( +select spouse_per_id from POSTING_ALLOWANCES where EXERCISE_YEAR = 2023 and dual_posting = 'DEL' +) +); + +delete from POSTING_ALLOWANCES where EXERCISE_YEAR = 2023 and per_id in ( +select spouse_per_id from POSTING_ALLOWANCES where EXERCISE_YEAR = 2023 and dual_posting = 'DEL' +); + + +--delete the spouses travel allowances +delete from POSTING_ALLOWANCE_PERSONS where POSTING_ALLOWANCE_ID in ( +select POSTING_ALLOWANCE_ID from POSTING_ALLOWANCES where EXERCISE_YEAR = 2023 and POSTING_ALLOWANCE_ID in (271623, +271622, +271619, +271624, +271618 +) +); + +delete from POSTING_ALLOWANCES where EXERCISE_YEAR = 2023 and POSTING_ALLOWANCE_ID in (271623, +271622, +271619, +271624, +271618 +); + + + + + +update POSTING_ALLOWANCES +set dual_posting = 'NO' +where EXERCISE_YEAR = 2023 and dual_posting = 'DEL' and spouse_per_id < 10054424; + + +delete from POSTING_ALLOWANCE_PERSONS where POSTING_ALLOWANCE_ID in ( +select POSTING_ALLOWANCE_ID from POSTING_ALLOWANCES where EXERCISE_YEAR = 2023 and POSTING_ALLOWANCE_ID > 271538 ); + +delete from POSTING_ALLOWANCES where EXERCISE_YEAR = 2023 and POSTING_ALLOWANCE_ID >271538; + +commit; + + +select * from POSTING_ALLOWANCES where EXERCISE_YEAR = 2023 and spouse_per_id in (select per_id from V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES) + + + +select * from POSTING_ALLOWANCES where EXERCISE_YEAR = 2023 and per_id in ( +163250, +164342, +10054424, +40383728, +80325855, +90012186, +90016978, +90019585, +90021610, +90074565, +90080735, +90140148) + + + +probar 163250 + +insert into POSTING_ALLOWANCE_DEFAULT +select * from BKP_POSTING_ALLOWANCE_DEFAULT + + + +delete from POSTING_ALLOWANCE_PERSONS where POSTING_ALLOWANCE_ID in ( +select POSTING_ALLOWANCE_ID from POSTING_ALLOWANCES where per_id in ( +select per_id from POSTING_ALLOWANCES where EXERCISE_YEAR = 2023 group by per_id having count(per_id)> 1 +)); + + +delete from POSTING_ALLOWANCES where per_id in ( +select per_id from POSTING_ALLOWANCES where EXERCISE_YEAR = 2023 group by per_id having count(per_id)> 1 +); + + +select * from V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES where per_id in (159331, +157337, +37155) + + +select * from POSTING_ALLOWANCES where EXERCISE_YEAR = 2023 and per_id in (117477) + + +select per_id,count(per_id) from V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES group by per_id having count(per_id)> 1 + + + +--- + + +delete from POSTING_ALLOWANCE_PERSONS where POSTING_ALLOWANCE_ID in ( +select posting_allowance_id from POSTING_ALLOWANCES where per_id in (43899 ,46436 ,118946 ,119089 ,120478 ,120479 ,150905 ,151128 ,151257 ,156854 ,158100 ,158875 ,162935 ,253879 ,10048601 ,10048875 ,10049093 ,10051762 ,10054424 ,10054953 ,20023581 ,20037806 ,20068545 ,20087888 ,20093808 ,21002358 ,22001023 ,22001972 ,23001025 ,23002309 ,40365077 ,40368880 ,40385856 ,40398815 ,40416464 ,40446925 ,40487603 ,40505458 ,40514651 ,40517022 ,40517286 ,40524836 ,40533853 ,40551230 ,40570384 ,40589793 ,40604019 ,40612737 ,40655587 ,70003252 ,80333969 ,90001120 ,90003199 ,90005614 ,90005773 ,90005979 ,90006133 ,90008900 ,90010134 ,90011445 ,90013618 ,90017058 ,90017104 ,90018980 ,90019453 ,90022219 ,90027124 ,90027126 ,90028603 ,90038683 ,90039596 ,90041149 ,90046917 ,90054629 ,90058706 ,90074565 ,90094788 ,90131953 ,90138049 ,90147816 ,90147844 ,90153325 ,90172007 ,90172375 ,90176703 ,90206696 ,90206762 ,90212758 ,90213497 ,90219368 ,90225506 ,90227272 ,90228878 ,90229726 ,90233221 ,90235232 ,90241945 ,90243293 ,90250605 ,90261982 ,90262405 ,90262654 ,90263001 ,90265846 ,90266152 ,90280034 ,90288305 ,90288352 ,90297453 ,90302065 ,90302716 ,90302880 ,90303997 ,90304139 ,90304222 ,90304541 ,90304674 ,90305156 ,90305590 ,90306393 ,90306787 ,90313775 )); + +delete from POSTING_ALLOWANCES_TREATED where per_id in (43899 ,46436 ,118946 ,119089 ,120478 ,120479 ,150905 ,151128 ,151257 ,156854 ,158100 ,158875 ,162935 ,253879 ,10048601 ,10048875 ,10049093 ,10051762 ,10054424 ,10054953 ,20023581 ,20037806 ,20068545 ,20087888 ,20093808 ,21002358 ,22001023 ,22001972 ,23001025 ,23002309 ,40365077 ,40368880 ,40385856 ,40398815 ,40416464 ,40446925 ,40487603 ,40505458 ,40514651 ,40517022 ,40517286 ,40524836 ,40533853 ,40551230 ,40570384 ,40589793 ,40604019 ,40612737 ,40655587 ,70003252 ,80333969 ,90001120 ,90003199 ,90005614 ,90005773 ,90005979 ,90006133 ,90008900 ,90010134 ,90011445 ,90013618 ,90017058 ,90017104 ,90018980 ,90019453 ,90022219 ,90027124 ,90027126 ,90028603 ,90038683 ,90039596 ,90041149 ,90046917 ,90054629 ,90058706 ,90074565 ,90094788 ,90131953 ,90138049 ,90147816 ,90147844 ,90153325 ,90172007 ,90172375 ,90176703 ,90206696 ,90206762 ,90212758 ,90213497 ,90219368 ,90225506 ,90227272 ,90228878 ,90229726 ,90233221 ,90235232 ,90241945 ,90243293 ,90250605 ,90261982 ,90262405 ,90262654 ,90263001 ,90265846 ,90266152 ,90280034 ,90288305 ,90288352 ,90297453 ,90302065 ,90302716 ,90302880 ,90303997 ,90304139 ,90304222 ,90304541 ,90304674 ,90305156 ,90305590 ,90306393 ,90306787 ,90313775 ); + + +delete from POSTING_ALLOWANCES where POSTING_ALLOWANCE_ID in ( +select posting_allowance_id from POSTING_ALLOWANCES where per_id in (43899 ,46436 ,118946 ,119089 ,120478 ,120479 ,150905 ,151128 ,151257 ,156854 ,158100 ,158875 ,162935 ,253879 ,10048601 ,10048875 ,10049093 ,10051762 ,10054424 ,10054953 ,20023581 ,20037806 ,20068545 ,20087888 ,20093808 ,21002358 ,22001023 ,22001972 ,23001025 ,23002309 ,40365077 ,40368880 ,40385856 ,40398815 ,40416464 ,40446925 ,40487603 ,40505458 ,40514651 ,40517022 ,40517286 ,40524836 ,40533853 ,40551230 ,40570384 ,40589793 ,40604019 ,40612737 ,40655587 ,70003252 ,80333969 ,90001120 ,90003199 ,90005614 ,90005773 ,90005979 ,90006133 ,90008900 ,90010134 ,90011445 ,90013618 ,90017058 ,90017104 ,90018980 ,90019453 ,90022219 ,90027124 ,90027126 ,90028603 ,90038683 ,90039596 ,90041149 ,90046917 ,90054629 ,90058706 ,90074565 ,90094788 ,90131953 ,90138049 ,90147816 ,90147844 ,90153325 ,90172007 ,90172375 ,90176703 ,90206696 ,90206762 ,90212758 ,90213497 ,90219368 ,90225506 ,90227272 ,90228878 ,90229726 ,90233221 ,90235232 ,90241945 ,90243293 ,90250605 ,90261982 ,90262405 ,90262654 ,90263001 ,90265846 ,90266152 ,90280034 ,90288305 ,90288352 ,90297453 ,90302065 ,90302716 ,90302880 ,90303997 ,90304139 ,90304222 ,90304541 ,90304674 ,90305156 ,90305590 ,90306393 ,90306787 ,90313775 )); + + + +commit; + diff --git a/e-rights-common/src/main/database/utilities/fix deserialize issues.sql b/e-rights-common/src/main/database/utilities/fix deserialize issues.sql new file mode 100644 index 0000000..1e8f4fb --- /dev/null +++ b/e-rights-common/src/main/database/utilities/fix deserialize issues.sql @@ -0,0 +1,6 @@ +update DECLARATION_PERSON + set UPDATED_BY = -1000001 + where UPDATED_BY = -9223372036854775808; + + + diff --git a/e-rights-common/src/main/database/utilities/get people with bank and family.sql b/e-rights-common/src/main/database/utilities/get people with bank and family.sql new file mode 100644 index 0000000..e3ecd9d --- /dev/null +++ b/e-rights-common/src/main/database/utilities/get people with bank and family.sql @@ -0,0 +1,3 @@ +select distinct(f.per_id) from MV_FAMILY_MEMBERS f, PERSONS_BANK_INFO b + where f.per_id = b.per_id + group by f.per_id diff --git a/e-rights-common/src/main/database/utilities/grant SELECT on all views and tables to ERIGHTS_RO.sql b/e-rights-common/src/main/database/utilities/grant SELECT on all views and tables to ERIGHTS_RO.sql new file mode 100644 index 0000000..4ce84c7 --- /dev/null +++ b/e-rights-common/src/main/database/utilities/grant SELECT on all views and tables to ERIGHTS_RO.sql @@ -0,0 +1,25 @@ +BEGIN + FOR lr_object IN ( + SELECT + object_name + FROM + user_objects + WHERE + object_type IN ( 'TABLE', 'VIEW' ) + AND object_name NOT LIKE 'BKP$%' + AND object_name NOT LIKE 'TMP$%' + ) LOOP + BEGIN + EXECUTE IMMEDIATE 'GRANT SELECT ON ' + || lr_object.object_name + || ' TO ERIGHTS_RO'; + EXCEPTION + WHEN OTHERS THEN + dbms_output.put_line('Could not grant access to : ' + || lr_object.object_name + || ' SQLERRM: ' + || sqlerrm); + END; + END LOOP; +END; +/ diff --git a/e-rights-common/src/main/database/utilities/movement files with all entitlements but inactive declaration.sql b/e-rights-common/src/main/database/utilities/movement files with all entitlements but inactive declaration.sql new file mode 100644 index 0000000..58806a4 --- /dev/null +++ b/e-rights-common/src/main/database/utilities/movement files with all entitlements but inactive declaration.sql @@ -0,0 +1,27 @@ +SELECT DISTINCT + f.movement_file_id, + f.file_id, + d.declaration_id, + f.state +FROM + movement_files f + INNER JOIN declaration d ON ( d.movement_file_id = f.movement_file_id ) +WHERE + d.enable = 'N' + AND f.state IN ( 'CONFIRMED' ) + AND f.year = EXTRACT(YEAR FROM sysdate) + AND NOT EXISTS ( + SELECT + 1 + FROM + entitlmnt_maxs em + INNER JOIN entitlmnt_types ett ON ( em.entitlmnt_type_id = ett.entitlmnt_type_id ) + WHERE + em.max_value IS NULL + AND em.enable = 'Y' + AND entitlmnt_type_cat_id IN ( 1, 4 ) + AND d.movement_file_id = ett.movement_file_id + ) +ORDER BY + 1, + 2 \ No newline at end of file diff --git a/e-rights-common/src/main/database/utilities/one time utils/insert posting allowances.sql b/e-rights-common/src/main/database/utilities/one time utils/insert posting allowances.sql new file mode 100644 index 0000000..81554b1 --- /dev/null +++ b/e-rights-common/src/main/database/utilities/one time utils/insert posting allowances.sql @@ -0,0 +1,104 @@ +INSERT INTO POSTING_ALLOWANCE_DEFAULT (POSTING_ALLOWANCE_DEFAULT_ID, + POSTING_ALLOWANCE_TYPE, + POSTING_ALLOWANCE_REQ_TYPE, + AMOUNT, + CURRENCY, + EXERCISE_YEAR, + LATEST, + SOURCE_DATA, + CREATED_AT, + CREATED_BY, + UPDATED_BY, + UPDATED_AT, + IATA_CODE_FROM, + IATA_CODE_TO) +select SEQ_POSTING_ALLOWANCE_DEFAULT.nextval,'TRAVEL','INITIAL', TRUNC(dbms_random.value(1,100000),2),'EUR',2022,'Y','HR',sysdate,2222,4444,sysdate,a_from.ASSIGNMENT_IATA_CODE,a_to.ORIGIN_IATA_CODE +from (select ASSIGNMENT_IATA_CODE from POSTING_ALLOWANCES group by ASSIGNMENT_IATA_CODE) a_from,(select ORIGIN_IATA_CODE from POSTING_ALLOWANCES group by ORIGIN_IATA_CODE) a_to, MV_COUNTRIES c + where c.country_code = a_from.country_code_iso3 + and c.eu_state = 'Y' + and rownum <= 1000 + and NOT EXISTS ( -- remove the create allowances, we need to filter by the travel,storage acomodation + SELECT + 1 + FROM + POSTING_ALLOWANCE_DEFAULT aa + WHERE + a_from.iata_code = aa.iata_code_from and a_to.iata_code = aa.iata_code_to + ); + +commit; + + + +update POSTING_ALLOWANCE_DEFAULT appa + set CITY_CODE_TO = ( select min(CITY_CODE) from AIRPORT_CITIES where IATA_CODE = appa.IATA_CODE_TO), + COUNTRY_CODE_TO = ( select min(COUNTRY_CODE) from AIRPORT_CITIES where IATA_CODE = appa.IATA_CODE_TO); + + +update POSTING_ALLOWANCE_DEFAULT appa + set CITY_CODE_FROM = ( select min(CITY_CODE) from AIRPORT_CITIES where IATA_CODE = appa.IATA_CODE_FROM), + COUNTRY_CODE_FROM = ( select min(COUNTRY_CODE) from AIRPORT_CITIES where IATA_CODE = appa.IATA_CODE_FROM); + +commit; + + +update POSTING_ALLOWANCE_DEFAULT set POSTING_ALLOWANCE_DEFAULT_ID = SEQ_POSTING_ALLOWANCE_DEFAULT.nextval; + + +update POSTING_ALLOWANCE_DEFAULT set AMOUNT = SEQ_ANNUAL_ALLOWANCE_DEFAULT.nextval/100; + + + + + + + + + + + + + + + + +//good one with posting allowances +INSERT INTO POSTING_ALLOWANCE_DEFAULT (POSTING_ALLOWANCE_DEFAULT_ID, + POSTING_ALLOWANCE_TYPE, + POSTING_ALLOWANCE_REQ_TYPE, + AMOUNT, + CURRENCY, + EXERCISE_YEAR, + LATEST, + SOURCE_DATA, + CREATED_AT, + CREATED_BY, + UPDATED_BY, + UPDATED_AT, + IATA_CODE_FROM, + IATA_CODE_TO) +select SEQ_POSTING_ALLOWANCE_DEFAULT.nextval,'TRAVEL','INITIAL', TRUNC(dbms_random.value(1,100000),2),'EUR',2023,'Y','HR',sysdate,2222,4444,sysdate,a_from.ASSIGNMENT_IATA_CODE,a_to.ORIGIN_IATA_CODE +from (select ASSIGNMENT_IATA_CODE from POSTING_ALLOWANCES group by ASSIGNMENT_IATA_CODE) a_from,(select ORIGIN_IATA_CODE from POSTING_ALLOWANCES group by ORIGIN_IATA_CODE) a_to; + + + + + +INSERT INTO POSTING_ALLOWANCE_DEFAULT (POSTING_ALLOWANCE_DEFAULT_ID, + POSTING_ALLOWANCE_TYPE, + POSTING_ALLOWANCE_REQ_TYPE, + AMOUNT, + CURRENCY, + EXERCISE_YEAR, + LATEST, + SOURCE_DATA, + CREATED_AT, + CREATED_BY, + UPDATED_BY, + UPDATED_AT, + IATA_CODE_FROM, + IATA_CODE_TO) +select SEQ_POSTING_ALLOWANCE_DEFAULT.nextval,'TRAVEL','INITIAL', TRUNC(dbms_random.value(1,100000),2),'EUR',2023,'Y','HR',sysdate,2222,4444,sysdate,a_from.ORIGIN_IATA_CODE,a_to.ASSIGNMENT_IATA_CODE +from (select ASSIGNMENT_IATA_CODE from POSTING_ALLOWANCES group by ASSIGNMENT_IATA_CODE) a_to,(select ORIGIN_IATA_CODE from POSTING_ALLOWANCES group by ORIGIN_IATA_CODE) a_from; + + diff --git a/e-rights-common/src/main/database/utilities/reduce space in db.sql b/e-rights-common/src/main/database/utilities/reduce space in db.sql new file mode 100644 index 0000000..3dc42ae --- /dev/null +++ b/e-rights-common/src/main/database/utilities/reduce space in db.sql @@ -0,0 +1,82 @@ +--space in table space +SELECT df.tablespace_name "Tablespace", + totalusedspace "Used MB", + (df.totalspace - tu.totalusedspace) "Free MB", + df.totalspace "Total MB", + ROUND(100 * ( (df.totalspace - tu.totalusedspace)/ df.totalspace)) "% Free" + FROM + (SELECT tablespace_name, + ROUND(SUM(bytes) / 1048576) TotalSpace + FROM dba_data_files + GROUP BY tablespace_name + ) df, + (SELECT ROUND(SUM(bytes)/(1024*1024)) totalusedspace, + tablespace_name + FROM dba_segments + GROUP BY tablespace_name + ) tu + WHERE df.tablespace_name = tu.tablespace_name; + + + + +update ANK_FILES + set data = 'A' + where created_at < sysdate - 100; + +truncate table db_log; +truncate table ANK_EDMS_EMAIL_COMM_DATA; +truncate table ANK_EDMS_EMAIL_COMM_ERRORS; +truncate table ANK_EDMS_EMAIL_RCPT_COMM_DATA; +truncate table ANK_EDMS_EMAIL_RCPTS; +truncate table ANK_EDMS_EMAILS; + + + +UPDATE ANK_ABAC_COMM_REQUESTS + SET + data = 'A' + WHERE + id IN ( + SELECT + id + FROM + ank_abac_comm + WHERE + request_sent_at < sysdate - 100 + ); + + + +UPDATE ANK_ABAC_COMM_RESPONSES + SET + data = 'A' + WHERE + id IN ( + SELECT + id + FROM + ank_abac_comm + WHERE + request_sent_at < sysdate - 100 + ); + + +UPDATE ANK_ABAC_COMM_ERRORS + SET + data = 'A' + WHERE + id IN ( + SELECT + id + FROM + ank_abac_comm + WHERE + request_sent_at < sysdate - 100 + ); + + + + + + diff --git a/e-rights-common/src/main/database/utilities/remove all fake lef and baf.sql b/e-rights-common/src/main/database/utilities/remove all fake lef and baf.sql new file mode 100644 index 0000000..c6e5bbd --- /dev/null +++ b/e-rights-common/src/main/database/utilities/remove all fake lef and baf.sql @@ -0,0 +1,20 @@ +UPDATE persons_bank_info +SET + baf = NULL +WHERE + persons_bank_info_id IN ( + SELECT + persons_bank_info_id + FROM + persons_bank_info + WHERE + persons_bank_info_id NOT IN ( + SELECT + persons_bank_info_id + FROM + persons_bank_info + WHERE + account_currency = '***' + ) + ) + COMMIT; \ No newline at end of file diff --git a/e-rights-common/src/main/database/utilities/reset all state fro resquet to approve.sql b/e-rights-common/src/main/database/utilities/reset all state fro resquet to approve.sql new file mode 100644 index 0000000..6630837 --- /dev/null +++ b/e-rights-common/src/main/database/utilities/reset all state fro resquet to approve.sql @@ -0,0 +1,28 @@ +UPDATE ANK_SM_CURRENT_STATES cs +SET + cs.DEPARTURE_STATE = 'AWAITING', + cs.ARRIVAL_STATE = 'APPROVED' +WHERE cs.ID IN ( + SELECT r.SM_ID + FROM REQUESTS r + WHERE r.STATE IN ('REJECTED', 'PAID') +); + + +DELETE FROM ANK_SM_PREVIOUS_STATES ps +WHERE ps.ARRIVAL_STATE = 'APPROVED' + AND ps.current_state_id IN ( + SELECT r.SM_ID + FROM REQUESTS r + WHERE r.STATE IN ('REJECTED', 'PAID') +); + + +UPDATE REQUESTS r +SET r.STATE = 'APPROVED' +WHERE r.STATE IN ( 'PAID') + AND EXISTS ( + SELECT 1 + FROM ANK_SM_CURRENT_STATES cs + WHERE cs.ID = r.SM_ID +); diff --git a/e-rights-common/src/main/database/utilities/reset_abacinfo.sql b/e-rights-common/src/main/database/utilities/reset_abacinfo.sql new file mode 100644 index 0000000..89d32d5 --- /dev/null +++ b/e-rights-common/src/main/database/utilities/reset_abacinfo.sql @@ -0,0 +1,5 @@ +UPDATE "ERIGHTS"."REQUEST_ABAC_ITEM" SET REQUEST_ID = 1; +UPDATE "ERIGHTS"."REQUEST_PAYMENT_ABAC_INFO" SET REQUEST_ID = 1; +UPDATE "ERIGHTS"."REQUESTS" SET ABAC_STATE = ''; + + diff --git a/e-rights-common/src/main/database/utilities/skyskanner/clean_rates_tud.sql b/e-rights-common/src/main/database/utilities/skyskanner/clean_rates_tud.sql new file mode 100644 index 0000000..1074842 --- /dev/null +++ b/e-rights-common/src/main/database/utilities/skyskanner/clean_rates_tud.sql @@ -0,0 +1,63 @@ + +UPDATE RATES_TUD r +SET r.deleted = 'Y' +WHERE r.search_ceased = 'N' + AND r.deleted = 'N' + AND r.created_at < SYSDATE - 30; + + + + +/*SUPPORTING QUERIES BELOW + + */ + +select * from RATES_TUD r where r.info_complete = 'Y' and r.search_Ceased = 'N' and r.deleted = 'N' order by r.retrieved_At asc ; + +update RATES_TUD +set deleted = 'Y' +where r.info_complete = 'Y' and r.search_Ceased = 'N' and r.deleted = 'N' + r.retrieved_At older than 20 sepr 2025 + + + + +UPDATE RATES_TUD r +SET r.deleted = 'Y' +WHERE r.info_complete = 'Y' + AND r.search_ceased = 'N' + AND r.deleted = 'N' + AND r.retrieved_at < SYSDATE - 30; + + + + +UPDATE RATES_TUD r +SET r.deleted = 'Y' +WHERE r.info_complete = 'N' + AND r.search_ceased = 'N' + AND r.deleted = 'N' + AND r.created_at < SYSDATE - 30; + + + + +select * from RATES_TUD r +WHERE r.info_complete = 'Y' + AND r.search_ceased = 'N' + AND r.deleted = 'N' + AND r.retrieved_at < DATE '2025-09-20'; + + + +select * from RATES_TUD r +WHERE r.info_complete = 'N' and r.search_Ceased = 'N' and r.deleted = 'N' + AND r.retrieved_at < DATE '2025-09-20'; + +SELECT * +FROM RATES_TUD r +WHERE r.info_complete = 'N' + AND r.search_ceased = 'N' + AND r.deleted = 'N' + AND r.created_at < SYSDATE - 30 +ORDER BY r.created_at ASC; \ No newline at end of file diff --git a/e-rights-common/src/main/database/utilities/state machine statuses.sql b/e-rights-common/src/main/database/utilities/state machine statuses.sql new file mode 100644 index 0000000..590d72f --- /dev/null +++ b/e-rights-common/src/main/database/utilities/state machine statuses.sql @@ -0,0 +1,74 @@ +select * from requests where request_id = 13616; + +select SM_ID,STATE,P2P_HUB_ORDER_ID, P2P_HUB_ORDER_STATUS from requests where request_id = 13616; + +select ID,DEPARTURE_STATE,ARRIVAL_STATE,EVENT from ANK_SM_CURRENT_STATES where ID = (select SM_ID from requests where request_id = 13559); + +select * from ANK_SM_CURRENT_STATES where ID = (select SM_ID from requests where request_id = 13559); + +select * from ANK_SM_PREVIOUS_STATES where CURRENT_STATE_ID = (select SM_ID from requests where request_id = 13559); + +----;last state +SELECT DEPARTURE_STATE previous_DEPARTURE_STATE,ARRIVAL_STATE,EVENT previous_EVENT +FROM ANK_SM_PREVIOUS_STATES +WHERE ID = ( + SELECT MAX(ID) + FROM ANK_SM_PREVIOUS_STATES + WHERE CURRENT_STATE_ID = ( + SELECT SM_ID + FROM requests + WHERE request_id = 13616 + ) +) + where REQUEST_TYPE = 'AdvanceRequest'; + + +SELECT + r.request_id, + r.SM_ID, + r.STATE, + r.P2P_HUB_ORDER_ID, + r.P2P_HUB_ORDER_STATUS, + c.DEPARTURE_STATE, + c.ARRIVAL_STATE, + c.EVENT, + ps.previous_DEPARTURE_STATE, + ps.previous_ARRIVAL_STATE, + ps.previous_EVENT +FROM requests r + JOIN ANK_SM_CURRENT_STATES c + ON c.ID = r.SM_ID + LEFT JOIN ( + SELECT + CURRENT_STATE_ID, + DEPARTURE_STATE AS previous_DEPARTURE_STATE, + ARRIVAL_STATE AS previous_ARRIVAL_STATE, + EVENT AS previous_EVENT + FROM ANK_SM_PREVIOUS_STATES p + WHERE ID = ( + SELECT MAX(ID) + FROM ANK_SM_PREVIOUS_STATES + WHERE CURRENT_STATE_ID = p.CURRENT_STATE_ID + ) +) ps + ON ps.CURRENT_STATE_ID = r.SM_ID +WHERE r.REQUEST_TYPE = 'AdvanceRequest' + and request_id = 13559; + +UPDATE ANK_SM_CURRENT_STATES +SET event = 'APPROVE' +WHERE departure_state = 'AWAITING' + AND arrival_state = 'APPROVED'; + + +delete from ANK_SM_PREVIOUS_STATES where id in ( + select id from ANK_SM_PREVIOUS_STATES where arrival_state = 'SENT_TO_P2P'); + +update requests +set P2P_HUB_ORDER_ID = null, + P2P_HUB_ORDER_STATUS= null; + + + + +UPDATE ANK_SM_CURRENT_STATES SET STATE_MACHINE_CONTEXT = hextoraw('01000100C60165752E6575726F70612E656561732E657269676874732E636F6D6D6F6E2E746F6F6C732E73746174656D616368696E652E436C656172696E6752657175657374537461746501030001016F72672E737072696E676672616D65776F726B2E73746174656D616368696E652E737570706F72742E4F627365727661626C654D61F0010001026A6176612E7574696C2E41727261794C6973F4010001036A6176612E7574696C2E486173684D61F00100030145526967687473436C656172696E675265717565737453746174654D616368696EE501020100') WHERE ARRIVAL_STATE = 'APPROVED' ; diff --git a/e-rights-common/src/main/database/utilities/summa/people_jobs_to_test_summa.sql b/e-rights-common/src/main/database/utilities/summa/people_jobs_to_test_summa.sql new file mode 100644 index 0000000..95337b5 --- /dev/null +++ b/e-rights-common/src/main/database/utilities/summa/people_jobs_to_test_summa.sql @@ -0,0 +1,4 @@ +select * from MV_JOBS where ORGANIZATION_COUNTRY_CODE in ('BDI','CAF','DJI','ECU','FIJ','GAB','HKG','JAM','KOR','MOZ'); + +select job_id,per_id ,kkl.* from MV_PERSONS_EEAS kkl where kkl.job_id in (select job_id from MV_JOBS where ORGANIZATION_COUNTRY_CODE in ('BDI','CAF','DJI','ECU','FIJ','GAB','HKG','JAM','KOR','MOZ')) + and kkl.lst_cd = 'FP'; \ No newline at end of file diff --git a/e-rights-common/src/main/database/utilities/travel allowances first and sec assigmetns/create first and second assigment.sql b/e-rights-common/src/main/database/utilities/travel allowances first and sec assigmetns/create first and second assigment.sql new file mode 100644 index 0000000..4e01d59 --- /dev/null +++ b/e-rights-common/src/main/database/utilities/travel allowances first and sec assigmetns/create first and second assigment.sql @@ -0,0 +1,122 @@ +//delete all travel allowances for the people with more than 1 assigment + +delete from POSTING_ALLOWANCE_PERSONS where POSTING_ALLOWANCE_ID in ( +select posting_allowance_id from POSTING_ALLOWANCES where per_id in (43899 ,46436 ,118946 ,119089 ,120478 ,120479 ,150905 ,151128 ,151257 ,156854 ,158100 ,158875 ,162935 ,253879 ,10048601 ,10048875 ,10049093 ,10051762 ,10054424 ,10054953 ,20023581 ,20037806 ,20068545 ,20087888 ,20093808 ,21002358 ,22001023 ,22001972 ,23001025 ,23002309 ,40365077 ,40368880 ,40385856 ,40398815 ,40416464 ,40446925 ,40487603 ,40505458 ,40514651 ,40517022 ,40517286 ,40524836 ,40533853 ,40551230 ,40570384 ,40589793 ,40604019 ,40612737 ,40655587 ,70003252 ,80333969 ,90001120 ,90003199 ,90005614 ,90005773 ,90005979 ,90006133 ,90008900 ,90010134 ,90011445 ,90013618 ,90017058 ,90017104 ,90018980 ,90019453 ,90022219 ,90027124 ,90027126 ,90028603 ,90038683 ,90039596 ,90041149 ,90046917 ,90054629 ,90058706 ,90074565 ,90094788 ,90131953 ,90138049 ,90147816 ,90147844 ,90153325 ,90172007 ,90172375 ,90176703 ,90206696 ,90206762 ,90212758 ,90213497 ,90219368 ,90225506 ,90227272 ,90228878 ,90229726 ,90233221 ,90235232 ,90241945 ,90243293 ,90250605 ,90261982 ,90262405 ,90262654 ,90263001 ,90265846 ,90266152 ,90280034 ,90288305 ,90288352 ,90297453 ,90302065 ,90302716 ,90302880 ,90303997 ,90304139 ,90304222 ,90304541 ,90304674 ,90305156 ,90305590 ,90306393 ,90306787 ,90313775 )); + +delete from POSTING_ALLOWANCES_TREATED where per_id in (43899 ,46436 ,118946 ,119089 ,120478 ,120479 ,150905 ,151128 ,151257 ,156854 ,158100 ,158875 ,162935 ,253879 ,10048601 ,10048875 ,10049093 ,10051762 ,10054424 ,10054953 ,20023581 ,20037806 ,20068545 ,20087888 ,20093808 ,21002358 ,22001023 ,22001972 ,23001025 ,23002309 ,40365077 ,40368880 ,40385856 ,40398815 ,40416464 ,40446925 ,40487603 ,40505458 ,40514651 ,40517022 ,40517286 ,40524836 ,40533853 ,40551230 ,40570384 ,40589793 ,40604019 ,40612737 ,40655587 ,70003252 ,80333969 ,90001120 ,90003199 ,90005614 ,90005773 ,90005979 ,90006133 ,90008900 ,90010134 ,90011445 ,90013618 ,90017058 ,90017104 ,90018980 ,90019453 ,90022219 ,90027124 ,90027126 ,90028603 ,90038683 ,90039596 ,90041149 ,90046917 ,90054629 ,90058706 ,90074565 ,90094788 ,90131953 ,90138049 ,90147816 ,90147844 ,90153325 ,90172007 ,90172375 ,90176703 ,90206696 ,90206762 ,90212758 ,90213497 ,90219368 ,90225506 ,90227272 ,90228878 ,90229726 ,90233221 ,90235232 ,90241945 ,90243293 ,90250605 ,90261982 ,90262405 ,90262654 ,90263001 ,90265846 ,90266152 ,90280034 ,90288305 ,90288352 ,90297453 ,90302065 ,90302716 ,90302880 ,90303997 ,90304139 ,90304222 ,90304541 ,90304674 ,90305156 ,90305590 ,90306393 ,90306787 ,90313775 ); + + +delete from POSTING_ALLOWANCES where POSTING_ALLOWANCE_ID in ( +select posting_allowance_id from POSTING_ALLOWANCES where per_id in (43899 ,46436 ,118946 ,119089 ,120478 ,120479 ,150905 ,151128 ,151257 ,156854 ,158100 ,158875 ,162935 ,253879 ,10048601 ,10048875 ,10049093 ,10051762 ,10054424 ,10054953 ,20023581 ,20037806 ,20068545 ,20087888 ,20093808 ,21002358 ,22001023 ,22001972 ,23001025 ,23002309 ,40365077 ,40368880 ,40385856 ,40398815 ,40416464 ,40446925 ,40487603 ,40505458 ,40514651 ,40517022 ,40517286 ,40524836 ,40533853 ,40551230 ,40570384 ,40589793 ,40604019 ,40612737 ,40655587 ,70003252 ,80333969 ,90001120 ,90003199 ,90005614 ,90005773 ,90005979 ,90006133 ,90008900 ,90010134 ,90011445 ,90013618 ,90017058 ,90017104 ,90018980 ,90019453 ,90022219 ,90027124 ,90027126 ,90028603 ,90038683 ,90039596 ,90041149 ,90046917 ,90054629 ,90058706 ,90074565 ,90094788 ,90131953 ,90138049 ,90147816 ,90147844 ,90153325 ,90172007 ,90172375 ,90176703 ,90206696 ,90206762 ,90212758 ,90213497 ,90219368 ,90225506 ,90227272 ,90228878 ,90229726 ,90233221 ,90235232 ,90241945 ,90243293 ,90250605 ,90261982 ,90262405 ,90262654 ,90263001 ,90265846 ,90266152 ,90280034 ,90288305 ,90288352 ,90297453 ,90302065 ,90302716 ,90302880 ,90303997 ,90304139 ,90304222 ,90304541 ,90304674 ,90305156 ,90305590 ,90306393 ,90306787 ,90313775 )); + + + +commit; + + + + + + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES_2" ("SOJ_ID", "JOB_ID", "PER_ID", "JOB_TYPE", "ASSIGN_START_DATE_TO", "ASSIGN_END_DATE_TO", "NO_SYSPER", "TITLE", "SURNAME", "GENRE", "USERID", "MONIKER", "DOMAIN", "DISPLAY_NAME", "JCX_ID", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "LST_CD", "LST_CODE", "LST_BEG_DATE", "LST_ASS_DATE", "LST_END_DATE", "CGR_CD", "ORG_ID", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "ORG_DESC", "TOR_ID", "TYPEOFENTITY_NAME", "DEL_ID", "DELEGATION_NAME", "RESPONSIBLE", "HEAD_OF_ENTITY", "JOB_CITY_CODE", "JOB_CITY_NAME", "JOB_COUNTRY_CODE", "JOB_COUNTRY_NAME", "IATA_CODE", "DELEGATION_ORG_ID") DEFAULT COLLATION "USING_NLS_COMP" AS + SELECT + a.soj_id, + j.job_id, + p.per_id, + j.job_type, + a.start_date assign_start_date_to, + a.end_date assign_end_date_to, + p.no_sysper, + p.title, + p.surname, + p.genre, + p.userid, + p.moniker, + p.domain, + p.display_name, + j.jcx_id, + a.start_date assign_start_date, + a.end_date assign_end_date, + p.lst_cd, + p.lst_code, + p.lst_beg_date, + p.lst_ass_date, + p.lst_end_date, + p.cgr_cd, + e.org_id, + e.main_org_id, + e.org_name, + e.org_cd, + e.org_desc, + e.tor_id, + e.typeofentity_name, + e.del_id, + e.delegation_name, + j.responsible, + j.head_of_entity, + j.location_city_code job_city_code, + j.location_city_name job_city_name, + j.location_country_code job_country_code, + j.location_country_name job_country_name, + ac.iata_code, + e.main_org_id delegation_org_id + FROM + mv_persons_eeas p + INNER JOIN mv_assignments_hist_eeas a ON ( p.per_id = a.per_id ) + INNER JOIN mv_jobs_hist_eeas j ON ( a.job_id = j.job_id + AND a.jcx_id = j.jcx_id ) + INNER JOIN mv_entities e ON ( j.org_id = e.org_id ) + INNER JOIN airport_cities ac ON ( ac.city_code = j.location_city_code + AND ac.country_code = j.location_country_code ) + WHERE + EXISTS ( + SELECT + 1 + FROM + mv_entities e2 + WHERE + e2.is_delegation = 'Y' + AND e2.org_id = e.main_org_id + ) + AND p.lst_cd IN ( 'CA', 'FP' ) + AND a.start_date <= to_date('31-DEC-' || EXTRACT(YEAR FROM sysdate), 'DD-MON-YYYY') + AND a.end_date >= trunc(sysdate, 'YYYY') + AND NOT EXISTS ( -- remove the create allowances, we need to filter by the travel,storage acomodation + SELECT + 1 + FROM + POSTING_ALLOWANCES_TREATED aa + WHERE + aa.per_id = p.per_id + AND aa.SOJ_ID = a.soj_id + and aa.delegation_org_id = e.main_org_id + AND aa.EXERCISE_YEAR = EXTRACT(YEAR FROM sysdate) + ) + AND EXISTS ( + SELECT + 1 + FROM + mv_person_relatives_rights r + WHERE + r.per_id_attrib = p.per_id + AND r.rgt_id = 3002 -- Expatriation allowance (IR) + AND r.rtt_id_type = 410 -- [IR = IDE] Expatriation Allowance : 16% + AND r.date_from <= to_date('31-DEC-' || EXTRACT(YEAR FROM sysdate), 'DD-MON-YYYY') + AND r.date_to >= trunc(sysdate, 'YYYY') + ); + + CREATE OR REPLACE FORCE EDITIONABLE VIEW "ERIGHTS"."V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES" AS + SELECT + t1."SOJ_ID",t1."JOB_ID",t1."PER_ID",t1."JOB_TYPE",t1."ASSIGN_START_DATE_TO",t1."ASSIGN_END_DATE_TO",t1."NO_SYSPER",t1."TITLE",t1."SURNAME",t1."GENRE",t1."USERID",t1."MONIKER",t1."DOMAIN",t1."DISPLAY_NAME",t1."JCX_ID",t1."ASSIGN_START_DATE",t1."ASSIGN_END_DATE",t1."LST_CD",t1."LST_CODE",t1."LST_BEG_DATE",t1."LST_ASS_DATE",t1."LST_END_DATE",t1."CGR_CD",t1."ORG_ID",t1."MAIN_ORG_ID",t1."ORG_NAME",t1."ORG_CD",t1."ORG_DESC",t1."TOR_ID",t1."TYPEOFENTITY_NAME",t1."DEL_ID",t1."DELEGATION_NAME",t1."RESPONSIBLE",t1."HEAD_OF_ENTITY",t1."JOB_CITY_CODE",t1."JOB_CITY_NAME",t1."JOB_COUNTRY_CODE",t1."JOB_COUNTRY_NAME",t1."IATA_CODE",t1."DELEGATION_ORG_ID" +FROM + V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES_2 t1 + JOIN ( + SELECT + per_id, + MIN(ASSIGN_START_DATE) AS min_date + FROM + V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES_2 + GROUP BY + per_id + ) t2 ON t1.per_id = t2.per_id + AND t1.ASSIGN_START_DATE = t2.min_date; \ No newline at end of file diff --git a/e-rights-common/src/main/database/utilities/truncate preferences.sql b/e-rights-common/src/main/database/utilities/truncate preferences.sql new file mode 100644 index 0000000..d6840d4 --- /dev/null +++ b/e-rights-common/src/main/database/utilities/truncate preferences.sql @@ -0,0 +1,2 @@ +truncate table USER_PREFERENCES; +commit; diff --git a/e-rights-common/src/main/database/utilities/update budgetlines with values in subpost mapping.sql b/e-rights-common/src/main/database/utilities/update budgetlines with values in subpost mapping.sql new file mode 100644 index 0000000..8ee4203 --- /dev/null +++ b/e-rights-common/src/main/database/utilities/update budgetlines with values in subpost mapping.sql @@ -0,0 +1,104 @@ + + + +update MOVEMENT_FILES upd +set BUDGET_LINE = ( SELECT + budget_position_erights + FROM + ( + SELECT + budget_position_erights + FROM + budget_lines_subposts_mapping + ORDER BY + dbms_random.random + ) + WHERE + ROWNUM < 2 +) +WHERE + upd.MOVEMENT_FILE_ID IN ( + SELECT + MOVEMENT_FILE_ID + FROM + movement_files + WHERE + budget_line not IN ( + SELECT + budget_position_erights + FROM + budget_lines_subposts_mapping + ) + and ROWNUM < 25 + ); + + + + + + + + + + + + +update REQUESTS upd +set PERSONS_BANK_INFO_ID = ( SELECT + PERSONS_BANK_INFO_ID + FROM + ( + SELECT + PERSONS_BANK_INFO_ID + FROM + PERSONS_BANK_INFO + where lef is not null and baf is not null + ORDER BY + dbms_random.random + ) + WHERE + ROWNUM < 2 +) +WHERE + upd.PERSONS_BANK_INFO_ID IN ( + SELECT + PERSONS_BANK_INFO_ID + FROM + PERSONS_BANK_INFO + WHERE + lef is null or baf is null + + + ) + and ROWNUM < 100; + + + + + + + + + + + + + +update REQUESTS upd + set PERSONS_BANK_INFO_ID = ( SELECT + coalesce(max(PERSONS_BANK_INFO_ID),1573) + FROM + ( + SELECT + PERSONS_BANK_INFO_ID + FROM + PERSONS_BANK_INFO + where lef is not null and baf is not null + and per_id = upd.per_id + ORDER BY + dbms_random.random + ) + + ) + + diff --git a/e-rights-common/src/main/database/utilities/update outgoing and return tripps for testing.sql b/e-rights-common/src/main/database/utilities/update outgoing and return tripps for testing.sql new file mode 100644 index 0000000..49d1e7a --- /dev/null +++ b/e-rights-common/src/main/database/utilities/update outgoing and return tripps for testing.sql @@ -0,0 +1,31 @@ +update POSTING_ALLOWANCES + set RETURN_TRIP_AMOUNT = POSTING_ALLOWANCE_ID + 100, + RETURN_TRIP_AMOUNT_CURRENCY='EUR' +where RETURN_TRIP_AMOUNT is null or RETURN_TRIP_AMOUNT = 0; + + + +update POSTING_ALLOWANCES + set OUTGOING_TRIP_AMOUNT = POSTING_ALLOWANCE_ID, + OUTGOING_TRIP_AMOUNT_CURRENCY='EUR' + where OUTGOING_TRIP_AMOUNT is null or OUTGOING_TRIP_AMOUNT = 0; + +update POSTING_ALLOWANCE_PERSONS + set TRIP_AMOUNT = POSTING_ALLOWANCE_ID, + TRIP_AMOUNT_CURRENCY = 'EUR' + ; + + +update POSTING_ALLOWANCE_PERSONS + set TRIP_AMOUNT = POSTING_ALLOWANCE_ID + 100, + TRIP_AMOUNT_CURRENCY = 'EUR' + where ROUTE = 'RETURN'; + + +update POSTING_ALLOWANCE_PERSONS + set TOTAL_AMOUNT = TRIP_AMOUNT * (ENTITLED_MONTHS/12) , + + TOTAL_AMOUNT_CURRENCY = 'EUR'; + + +commit; \ No newline at end of file diff --git a/e-rights-common/src/main/database/utilities/vulnerability_tests_external_users.sql b/e-rights-common/src/main/database/utilities/vulnerability_tests_external_users.sql new file mode 100644 index 0000000..45bc17f --- /dev/null +++ b/e-rights-common/src/main/database/utilities/vulnerability_tests_external_users.sql @@ -0,0 +1,327 @@ +drop MATERIALIZED VIEW "ERIGHTS"."MV_PERSONS_EEAS"; + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_PERSONS_EEAS" ("PER_ID", "NO_SYSPER", "TITLE", "SURNAME", "BIRTH_NAME", "FIRST_NAME", "FIRST_NAME2", "FIRST_NAME3", "FIRST_NAME4", "GENRE", "DATE_OF_BIRTH", "PLACE_OF_BIRTH", "COUNTRY_OF_BIRTH", "CREATION_DATE", "MODIFICATION_DATE", "USERID", "MONIKER", "DOMAIN", "DISPLAY_NAME", "COMPLET_NAME", "DISPLAY_SURNAME", "DISPLAY_FIRST_NAME", "JCX_ID", "JOB_ID", "TOJ_CD", "JOB_TYPE", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "INS_CD", "EMAIL", "WORK_PATTERN_DATE_FROM", "WORK_PATTERN_DATE_TO", "WORK_PATTERN_DESC", "LST_CD", "LST_CODE", "LST_BEG_DATE", "LST_ASS_DATE", "LST_END_DATE", "CGR_CD", "ORG_ID", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "ORG_DESC", "TOR_ID", "TYPEOFENTITY_NAME", "DEL_ID", "DELEGATION_NAME", "JOB_TITLE", "JOB_NAME", "JOB_NAME_DIRECTORY", "JOB_PURPOSE", "RESPONSIBLE", "HEAD_OF_ENTITY") + + AS SELECT + "PER_ID", + "NO_SYSPER", + "TITLE", + "SURNAME", + "BIRTH_NAME", + "FIRST_NAME", + "FIRST_NAME2", + "FIRST_NAME3", + "FIRST_NAME4", + "GENRE", + "DATE_OF_BIRTH", + "PLACE_OF_BIRTH", + "COUNTRY_OF_BIRTH", + "CREATION_DATE", + "MODIFICATION_DATE", + "USERID", + "MONIKER", + "DOMAIN", + "DISPLAY_NAME", + "COMPLET_NAME", + "DISPLAY_SURNAME", + "DISPLAY_FIRST_NAME", + "JCX_ID", + "JOB_ID", + "TOJ_CD", + "JOB_TYPE", + "ASSIGN_START_DATE", + "ASSIGN_END_DATE", + "INS_CD", + "EMAIL", + "WORK_PATTERN_DATE_FROM", + "WORK_PATTERN_DATE_TO", + "WORK_PATTERN_DESC", + "LST_CD", + "LST_CODE", + "LST_BEG_DATE", + "LST_ASS_DATE", + "LST_END_DATE", + "CGR_CD", + "ORG_ID", + "MAIN_ORG_ID", + "ORG_NAME", + "ORG_CD", + "ORG_DESC", + "TOR_ID", + "TYPEOFENTITY_NAME", + "DEL_ID", + "DELEGATION_NAME", + "JOB_TITLE", + "JOB_NAME", + "JOB_NAME_DIRECTORY", + "JOB_PURPOSE", + "RESPONSIBLE", + "HEAD_OF_ENTITY" + FROM + mv_persons_eeas@easrefn.cc.cec.eu.int + UNION ALL +-- External users + SELECT DISTINCT + sysper_id per_id, + NULL no_sysper, + title, + last_name surname, + first_name birth_name, + first_name, + first_name first_name2, + first_name first_name3, + first_name first_name4, + NULL genre, + NULL date_of_birth, + ---case when s.SYSPER_ID=-113 then TO_DATE('01/01/1980', 'dd/mm/yyyy') else null end date_of_birth, + NULL place_of_birth, + ---case when s.SYSPER_ID=-113 then 'Gent' else null end place_of_birth, + NULL country_of_birth, + NULL creation_date, + NULL modification_date, + ---case when s.SYSPER_ID=-113 then 'BEL' else null end country_of_birth, + login userid, + moniker, + 'EEAS' domain, + first_name display_name, + first_name + || ' ' + || last_name AS complet_name, + last_name display_surname, + first_name display_first_name, + job_id jcx_id, + job_id, + NULL toj_cd, + job_title job_type, + NULL assign_start_date, + NULL assign_end_date, + 'EEAS' ins_cd, + email, + NULL work_pattern_date_from, + NULL work_pattern_date_to, + NULL work_pattern_desc, + 'AL' lst_cd, + 'Intra-muros Staff from an external service provider' lst_code, + NULL lst_beg_date, + NULL lst_ass_date, + NULL lst_end_date, + 'PREX' cgr_cd, + 237590 org_id,--- + 237590 main_org_id, + 'BA.BS.3' org_name, + 'BA.BS.3.IS' org_cd, + 'Information systems' org_desc, + 5 tor_id, + 'Sector' typeofentity_name, + NULL del_id, + 'HQ' delegation_name, + 'Information Systems Developer' job_title, + NULL job_name, + NULL job_name_directory, + NULL job_purpose, + 'N' responsible, + 'N' head_of_entity + FROM + mv_sentry_ext_users@easrefn.cc.cec.eu.int + where sysper_id <0; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_PERSONS_EEAS" IS 'snapshot table for snapshot ERIGHTS.MV_PERSONS_EEAS'; + +DROP MATERIALIZED VIEW "ERIGHTS"."ANK_MV_PERSONS_EEAS"; + CREATE MATERIALIZED VIEW "ERIGHTS"."ANK_MV_PERSONS_EEAS" ("PER_ID", "NO_SYSPER", "TITLE", "SURNAME", "BIRTH_NAME", "FIRST_NAME", "FIRST_NAME2", "FIRST_NAME3", "FIRST_NAME4", "GENRE", "DATE_OF_BIRTH", "PLACE_OF_BIRTH", "COUNTRY_OF_BIRTH", "CREATION_DATE", "MODIFICATION_DATE", "USERID", "MONIKER", "DOMAIN", "DISPLAY_NAME", "COMPLET_NAME", "DISPLAY_SURNAME", "DISPLAY_FIRST_NAME", "JCX_ID", "JOB_ID", "TOJ_CD", "JOB_TYPE", "ASSIGN_START_DATE", "ASSIGN_END_DATE", "INS_CD", "EMAIL", "WORK_PATTERN_DATE_FROM", "WORK_PATTERN_DATE_TO", "WORK_PATTERN_DESC", "LST_CD", "LST_CODE", "LST_BEG_DATE", "LST_ASS_DATE", "LST_END_DATE", "CGR_CD", "ORG_ID", "MAIN_ORG_ID", "ORG_NAME", "ORG_CD", "ORG_DESC", "TOR_ID", "TYPEOFENTITY_NAME", "DEL_ID", "DELEGATION_NAME", "JOB_TITLE", "JOB_NAME", "JOB_NAME_DIRECTORY", "JOB_PURPOSE", "RESPONSIBLE", "HEAD_OF_ENTITY") + + AS SELECT + per_id, + no_sysper, + title, + surname, + birth_name, + first_name, + first_name2, + first_name3, + first_name4, + genre, + date_of_birth, + place_of_birth, + country_of_birth, + creation_date, + modification_date, + userid, + moniker, + domain, + display_name, + complet_name, + display_surname, + display_first_name, + jcx_id, + job_id, + toj_cd, + job_type, + assign_start_date, + assign_end_date, + ins_cd, + email, + work_pattern_date_from, + work_pattern_date_to, + work_pattern_desc, + lst_cd, + lst_code, + lst_beg_date, + lst_ass_date, + lst_end_date, + cgr_cd, + org_id, + main_org_id, + org_name, + org_cd, + org_desc, + tor_id, + typeofentity_name, + del_id, + delegation_name, + job_title, + job_name, + job_name_directory, + job_purpose, + responsible, + head_of_entity + FROM + mv_persons_eeas@easrefn.cc.cec.eu.int + UNION ALL + +-- External users + SELECT DISTINCT + sysper_id per_id, + NULL no_sysper, + title, + last_name surname, + first_name birth_name, + first_name, + first_name first_name2, + first_name first_name3, + first_name first_name4, + NULL genre, + NULL date_of_birth, + ---case when s.SYSPER_ID=-113 then TO_DATE('01/01/1980', 'dd/mm/yyyy') else null end date_of_birth, + NULL place_of_birth, + ---case when s.SYSPER_ID=-113 then 'Gent' else null end place_of_birth, + NULL country_of_birth, + NULL creation_date, + NULL modification_date, + ---case when s.SYSPER_ID=-113 then 'BEL' else null end country_of_birth, + login userid, + moniker, + 'EEAS' domain, + first_name display_name, + first_name + || ' ' + || last_name AS complet_name, + last_name display_surname, + first_name display_first_name, + job_id jcx_id, + job_id, + NULL toj_cd, + job_title job_type, + NULL assign_start_date, + NULL assign_end_date, + 'EEAS' ins_cd, + email, + NULL work_pattern_date_from, + NULL work_pattern_date_to, + NULL work_pattern_desc, + 'AL' lst_cd, + 'Intra-muros Staff from an external service provider' lst_code, + NULL lst_beg_date, + NULL lst_ass_date, + NULL lst_end_date, + 'PREX' cgr_cd, + 237590 org_id, + 237590 main_org_id, + 'BA.BS.3' org_name, + 'BA.BS.3.IS' org_cd, + 'Information systems' org_desc, + 5 tor_id, + 'Sector' typeofentity_name, + NULL del_id, + 'HQ' delegation_name, + 'Information Systems Developer' job_title, + NULL job_name, + NULL job_name_directory, + NULL job_purpose, + 'N' responsible, + 'N' head_of_entity + FROM + mv_sentry_ext_users@easrefn.cc.cec.eu.int + where sysper_id<0 ; + + COMMENT ON MATERIALIZED VIEW "ERIGHTS"."ANK_MV_PERSONS_EEAS" IS 'snapshot table for snapshot ERIGHTS.ANK_MV_PERSONS_EEAS'; + +DROP MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES" ; + + CREATE MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES" + AS +select ORG_ID, +ORG_ID_PARENT, +MAIN_ORG_ID, +ORG_NAME, +ORG_CD, +SORT_ORDER, +ORG_DESC, +ORG_DESC_FRE, +CITY_CODE, +ENG_CITY, +FRA_CITY, +COUNTRY_ID, +ENG_COUNTRY, +FRA_COUNTRY, +IS_DELEGATION, +TOR_ID, +TYPEOFENTITY_NAME, +DELEGATION_NAME, +DEL_ID, +ALERT_STATUS_ID, +ALERT_STATUS_CODE, +SEVERITY_LEVEL, +REGION_ID, +REGION_CODE, +FRA_REGION_DESC, +ENG_REGION_DESC +IS_HQ FROM MV_ENTITIES@EASREFN.CC.CEC.EU.INT; + + +DROP MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES_HIST" ; +CREATE MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES_HIST" AS + SELECT + horg_id, + org_id, + org_id_parent, + main_org_id, + org_name, + org_cd, + org_desc, + fr_org_desc, + city_code, + eng_city, + fra_city, + country_id, + eng_country, + fra_country, + is_delegation, + tor_id, + typeofentity_name, + delegation_name, + del_id, + alert_status_id, + alert_status_code, + severity_level, + start_date, + end_date, + short_code, + sort_order, + hierarchy_level, + official + FROM + mv_entities_hist@easrefn.cc.cec.eu.int ent; + +COMMENT ON MATERIALIZED VIEW "ERIGHTS"."MV_ENTITIES_HIST" IS + 'snapshot table for snapshot ERIGHTS.MV_ENTITIES_HIST'; + diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/mvc/controller/AuditController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/mvc/controller/AuditController.java new file mode 100644 index 0000000..2237884 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/mvc/controller/AuditController.java @@ -0,0 +1,26 @@ +package eu.europa.eeas.erights.common.api.http.mvc.controller; + +import eu.europa.eeas.ananke.core.api.provider.http.mvc.AbstractMvcController; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.Breadcrumb; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.CascadingBreadcrumb; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * Created by tapiafo on e-rights. + * + * @author tapiafo + * + */ +@Controller +@RequestMapping("/audit") +public class AuditController extends AbstractMvcController { + + @GetMapping(path = {"/movement-files.do"}) + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.audit.movement_files")) + public String listClaim() { + return "e-rights-common:audit/list.movement.file"; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/mvc/controller/NotificationController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/mvc/controller/NotificationController.java new file mode 100644 index 0000000..1c1b3cb --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/mvc/controller/NotificationController.java @@ -0,0 +1,33 @@ +package eu.europa.eeas.erights.common.api.http.mvc.controller; + +import eu.europa.eeas.ananke.core.api.provider.http.mvc.AbstractMvcController; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@Controller +@RequestMapping("/notification") +public class NotificationController extends AbstractMvcController { + + @Autowired + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @Autowired + private MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + @GetMapping(path = {"/sendNotificationMF.do"}) + public String sendNotificationMFCreated(@RequestParam(required = false, defaultValue = "0") Long movementFileId, String templateCode) { + + MovementFileModel movementFile = movementFileJpaServiceProvider.get(movementFileId); + + emailEdmsServiceProvider.checkTemplateAndSendMovementFileNotification(movementFile, templateCode); + + return "welcome"; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/AccommodationDeclarationsRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/AccommodationDeclarationsRestController.java new file mode 100644 index 0000000..df52179 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/AccommodationDeclarationsRestController.java @@ -0,0 +1,163 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import static eu.europa.eeas.erights.common.tools.utils.AccommodationUtils.calculateMonthsDifference; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.AccommodationDeclarationsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.AccommodationDeclarationAllowanceTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MVPersonAccommodationTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StateMachineTransitionTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.declaration.MVPersonAccommodationJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationDeclarationAllowanceModel; +import eu.europa.eeas.erights.common.service.model.declaration.MVPersonAccommodationModel; +import eu.europa.eeas.erights.common.service.provider.allowances.AccommodationDeclarationAllowanceJpaServiceProvider; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationDeclarationEvent; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationDeclarationState; +import java.time.LocalDate; +import java.util.List; +import java.util.Optional; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author ienaccat + */ +@RestController +@RequiredArgsConstructor +public class AccommodationDeclarationsRestController extends AbstractRestController implements + AccommodationDeclarationsRestApi { + + private final DataServiceProviderRegistry dataServiceProviderRegistry; + + + @Override + public ResponseEntity canCreateAccommodationDeclaration() { + + Long canCreateAccommodationDeclarationAndGetPerId = getServiceProvider().canCreateAccommodationDeclarationAndGetPerId(); + return canCreateAccommodationDeclarationAndGetPerId != null ? ResponseEntity.ok( + canCreateAccommodationDeclarationAndGetPerId) : ResponseEntity.noContent().build(); + } + + /** + * Creates an Accommodation Declaration + * @param personId + * @return id of thew new Accommodation Declaration + */ + @Override + public ResponseEntity createAccommodationDeclaration(@Valid @NotNull Long personId) { + AccommodationDeclarationAllowanceModel accommodationDeclaration = getServiceProvider(). + createAccommodationDeclaration(personId); + Long result = accommodationDeclaration.getId(); + + return ResponseEntity.status(HttpStatus.CREATED) + .body(result); + } + + /** + * @param accommodationDeclarationId + * @return + */ + @Override + public ResponseEntity getAccommodationDeclaration(Long accommodationDeclarationId) { + Optional modelOptional = getServiceProvider().getAccommodationDeclaration( + accommodationDeclarationId); + + return modelOptional.map(model -> ResponseEntity.ok( + getBeanMapper().map(model, AccommodationDeclarationAllowanceTransferObject.class))) + .orElseGet(() -> ResponseEntity.noContent().build()); + } + + + /** + * Returns the list of persons (staff) able to create an Accommodation Declaration + * @param perId + * @param firstName + * @param lastName + * @param orgName + * @return + */ + @Override + public ResponseEntity> getPersons(Long perId, String firstName, String lastName, String orgName) { + ResponseEntity> result; + + MVPersonAccommodationJpaServiceProvider service = (MVPersonAccommodationJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(MVPersonAccommodationModel.class); + + List persons = service.findPersonsBy(perId, firstName, lastName, orgName); + + result = ResponseEntity.ok(getBeanMapper().mapAsList(persons, MVPersonAccommodationTransferObject.class)); + + return result; + } + + + /** + * Returns state machine history + * @param accommodationDeclarationId + * @return + */ + @Override + public ResponseEntity> getStateMachineHistory(Long accommodationDeclarationId) { + List> states = + getServiceProvider().getStateMachineHistory( + accommodationDeclarationId); + + return ResponseEntity.ok( + getBeanMapper().mapAsList(states, StateMachineTransitionTransferObject.class)); + } + + /** + * Creates a state machine event + * + * @param accommodationDeclarationId + * @param stateMachineEvent + * @return + */ + @Override + public ResponseEntity stateMachineEvent(Long accommodationDeclarationId, + String stateMachineEvent) { + AccommodationDeclarationAllowanceModel accommodationDeclaration = getServiceProvider().newStateMachineEvent( + stateMachineEvent, + accommodationDeclarationId); + return ResponseEntity.ok( + getBeanMapper().map(accommodationDeclaration, AccommodationDeclarationAllowanceTransferObject.class)); + } + + /** + * updates the Accommodation Declaration + * @param accommodationDeclaration + * @return id of the updated Accommodation Declaration + */ + @Override + public ResponseEntity updateAccommodationDeclaration( + AccommodationDeclarationAllowanceTransferObject accommodationDeclaration) { + + AccommodationDeclarationAllowanceModel requestModel = getBeanMapper().map(accommodationDeclaration, + AccommodationDeclarationAllowanceModel.class); + + AccommodationDeclarationAllowanceModel updatedModel = getServiceProvider().updateAccommodationDeclaration( + requestModel); + + return ResponseEntity.ok(updatedModel.getId()); + } + + + private AccommodationDeclarationAllowanceJpaServiceProvider getServiceProvider() { + AccommodationDeclarationAllowanceJpaServiceProvider service = (AccommodationDeclarationAllowanceJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor( + AccommodationDeclarationAllowanceModel.class); + return service; + } + + @Override + public ResponseEntity calculateRentalMonths(String startDate, String endDate) { + return ResponseEntity.ok(calculateMonthsDifference(LocalDate.parse(startDate), + LocalDate.parse(endDate)).getMonths()); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/AccommodationPaymentsRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/AccommodationPaymentsRestController.java new file mode 100644 index 0000000..f285e53 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/AccommodationPaymentsRestController.java @@ -0,0 +1,118 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.AccommodationPaymentsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.AccommodationPaymentAllowanceTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.AccommodationPaymentCalculationResponseTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StateMachineTransitionTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationPaymentAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationPaymentCalculationResponseModel; +import eu.europa.eeas.erights.common.service.provider.allowances.AccommodationPaymentAllowanceJpaServiceProvider; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationPaymentEvent; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationPaymentState; +import java.util.List; +import java.util.Optional; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author ienaccat + */ +@RestController +@RequiredArgsConstructor +public class AccommodationPaymentsRestController extends AbstractRestController implements + AccommodationPaymentsRestApi { + + private final DataServiceProviderRegistry dataServiceProviderRegistry; + + + /** + * @param accommodationPaymentId + * @return + */ + @Override + public ResponseEntity getAccommodationPayment(Long accommodationPaymentId) { + Optional modelOptional = getServiceProvider().getAccommodationPayment( + accommodationPaymentId); + + return modelOptional.map(model -> ResponseEntity.ok( + getBeanMapper().map(model, AccommodationPaymentAllowanceTransferObject.class))) + .orElseGet(() -> ResponseEntity.noContent().build()); + } + + /** + * updates the Accommodation Payment + * + * @param accommodationDeclaration + * @return + */ + @Override + public ResponseEntity updateAccommodationPayment(AccommodationPaymentAllowanceTransferObject accommodationDeclaration) { + AccommodationPaymentAllowanceModel requestModel = getBeanMapper().map(accommodationDeclaration, + AccommodationPaymentAllowanceModel.class); + + AccommodationPaymentAllowanceModel updatedModel = getServiceProvider().updateAccommodationPayment( + requestModel); + + return ResponseEntity.ok(updatedModel.getId()); + } + + /** + * Returns state machine history + * + * @param accommodationDeclarationId + * @return + */ + @Override + public ResponseEntity> getStateMachineHistory(Long accommodationDeclarationId) { + List> states = + getServiceProvider().getStateMachineHistory( + accommodationDeclarationId); + + return ResponseEntity.ok( + getBeanMapper().mapAsList(states, StateMachineTransitionTransferObject.class)); + } + + /** + * Creates a state machine event + * + * @param accommodationDeclarationId + * @param stateMachineEvent + * @return + */ + @Override + public ResponseEntity stateMachineEvent(Long accommodationDeclarationId, + String stateMachineEvent) { + AccommodationPaymentAllowanceModel accommodationDeclaration = getServiceProvider().newStateMachineEvent( + stateMachineEvent, + accommodationDeclarationId); + return ResponseEntity.ok( + getBeanMapper().map(accommodationDeclaration, AccommodationPaymentAllowanceTransferObject.class)); + } + + + + private AccommodationPaymentAllowanceJpaServiceProvider getServiceProvider() { + AccommodationPaymentAllowanceJpaServiceProvider service = (AccommodationPaymentAllowanceJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor( + AccommodationPaymentAllowanceModel.class); + return service; + } + + @Override + public ResponseEntity calculateAmounts( + Long accommodationPaymentId, String fromDate, String toDate) { + + AccommodationPaymentCalculationResponseModel paymentCalculationResponseModel= + getServiceProvider().calculateAmounts( + accommodationPaymentId, + fromDate,toDate); + + return ResponseEntity.ok( + getBeanMapper().map(paymentCalculationResponseModel, AccommodationPaymentCalculationResponseTransferObject.class)); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/AdvRemRequestRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/AdvRemRequestRestController.java new file mode 100644 index 0000000..8e59ff1 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/AdvRemRequestRestController.java @@ -0,0 +1,61 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.AdvRemRequestsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.AdvanceRequestTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StateMachineTransitionTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.AdvanceRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.entitlement.request.AdvanceRequestModel; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.util.List; + +@RestController +public class AdvRemRequestRestController extends AbstractRestController implements AdvRemRequestsRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity getAdvanceRequest(Long requestId) { + AdvanceRequestJpaServiceProvider service = (AdvanceRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + AdvanceRequestModel.class); + AdvanceRequestModel model = service.getRequest(requestId); + + return ResponseEntity.ok(getBeanMapper().map(model, AdvanceRequestTransferObject.class)); + } + + @Override + public ResponseEntity updateAdvanceRequest(@Valid AdvanceRequestTransferObject request) { + AdvanceRequestJpaServiceProvider service = (AdvanceRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + AdvanceRequestModel.class); + AdvanceRequestModel model = service.updateRequest(getBeanMapper().map(request, AdvanceRequestModel.class)); + + return ResponseEntity.ok(getBeanMapper().map(model, AdvanceRequestTransferObject.class)); + } + + @Override + public ResponseEntity> getStateMachineHistory(Long requestId) { + AdvanceRequestJpaServiceProvider service = (AdvanceRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(AdvanceRequestModel.class); + + List> states = service.getStateMachineHistory(requestId); + + return ResponseEntity.ok(getBeanMapper().mapAsList(states, StateMachineTransitionTransferObject.class)); + } + + @Override + public ResponseEntity stateMachineEvent(@NotNull @Valid Long requestId, String stateMachineEvent) { + AdvanceRequestJpaServiceProvider service = (AdvanceRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + AdvanceRequestModel.class); + AdvanceRequestModel requestModel = service.newStateMachineEvent(stateMachineEvent, requestId); + return ResponseEntity.ok(getBeanMapper().map(requestModel, AdvanceRequestTransferObject.class)); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/AppParametersRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/AppParametersRestController.java new file mode 100644 index 0000000..006944c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/AppParametersRestController.java @@ -0,0 +1,31 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.AppParametersRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.AppParameterTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.AppParameterJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.AppParameterModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.List; + +@RestController +public class AppParametersRestController extends AbstractRestController implements AppParametersRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity> getAppParameters(@Valid String paramType) { + AppParameterJpaServiceProvider serviceProvider = (AppParameterJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(AppParameterModel.class); + + List models = serviceProvider.getAppParameters(paramType); + + return ResponseEntity.ok(getBeanMapper().mapAsList(models, AppParameterTransferObject.class)); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/AssignmentsHistoryRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/AssignmentsHistoryRestController.java new file mode 100644 index 0000000..d80a6ac --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/AssignmentsHistoryRestController.java @@ -0,0 +1,31 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.AssignmentsHistoryRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VAssignmentHistTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.VAssignmentHistJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.VAssignmentHistModel; +import java.util.List; +import lombok.AllArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@AllArgsConstructor +public class AssignmentsHistoryRestController extends AbstractRestController implements + AssignmentsHistoryRestApi { + + private final DataServiceProviderRegistry dataServiceProviderRegistry; + + + @Override + public ResponseEntity> getAssignmentsHistoryByPersonId( + Long perId) { + + VAssignmentHistJpaServiceProvider service = (VAssignmentHistJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + VAssignmentHistModel.class); + return ResponseEntity.ok(getBeanMapper().mapAsList(service.getByPerId(perId), + VAssignmentHistTransferObject.class)); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/BankAccountsInfoRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/BankAccountsInfoRestController.java new file mode 100644 index 0000000..4c34c17 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/BankAccountsInfoRestController.java @@ -0,0 +1,28 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.BankAccountsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PersonBankInfoTransferObject; +import eu.europa.eeas.erights.common.service.model.declaration.PersonBankInfoModel; +import eu.europa.eeas.erights.common.service.provider.BankAccountServiceProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.util.List; + +@RestController +public class BankAccountsInfoRestController extends AbstractRestController implements BankAccountsRestApi { + + @Autowired + private BankAccountServiceProvider bankAccountServiceProvider; + + @Override + public ResponseEntity> getBankAccounts(@NotNull @Valid Long personId) { + List personBankInfoModels = bankAccountServiceProvider.getPersonBankInfo(personId); + return ResponseEntity.ok(getBeanMapper().mapAsList(personBankInfoModels, PersonBankInfoTransferObject.class)); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/ClearingRemRequestRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/ClearingRemRequestRestController.java new file mode 100644 index 0000000..a0dc6f5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/ClearingRemRequestRestController.java @@ -0,0 +1,86 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.ClearingRequestsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.ClearingRequestTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.SimpleRequestMapTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StateMachineTransitionTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.ClearingRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.entitlement.request.ClearingRequestModel; +import eu.europa.eeas.erights.common.tools.statemachine.ClearingRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.ClearingRequestState; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.List; + +@RestController +public class ClearingRemRequestRestController extends AbstractRestController implements ClearingRequestsRestApi { + + public static final Logger logger = LoggerFactory.getLogger(ClearingRemRequestRestController.class); + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity> getStateMachineHistory(Long requestId) { + ClearingRequestJpaServiceProvider service = (ClearingRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(ClearingRequestModel.class); + List> states = service.getStateMachineHistory(requestId); + return ResponseEntity.ok(getBeanMapper().mapAsList(states, StateMachineTransitionTransferObject.class)); + } + + @Override + public ResponseEntity getClearingRequest(Long requestId) { + ClearingRequestJpaServiceProvider service = (ClearingRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + ClearingRequestModel.class); + ClearingRequestModel model = service.getRequest(requestId); + return ResponseEntity.ok(getBeanMapper().map(model, ClearingRequestTransferObject.class)); + } + + @Override + public ResponseEntity stateMachineEvent(Long requestId, String stateMachineEvent) { + + logger.info("ClearingRequest, stateMachineEvent: Request ID {} - stateMachineEvent {}", requestId, stateMachineEvent); + + ClearingRequestJpaServiceProvider service = (ClearingRequestJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(ClearingRequestModel.class); + ClearingRequestModel requestModel = service.newStateMachineEvent(stateMachineEvent, requestId); + + logger.info("ClearingRequest, stateMachineEvent: Request ID {} - Returning OK, state = {}", + requestModel.getId(), requestModel.getState() == null ? "NULL" : requestModel.getState().name()); + + return ResponseEntity.ok(getBeanMapper().map(requestModel, ClearingRequestTransferObject.class)); + } + + @Override + public ResponseEntity updateClearingRequest(@Valid ClearingRequestTransferObject request) { + + logger.info("ClearingRequest, updateClearingRequest: Request ID {} - abacRequestState {} - p2pHubOrderStatus {} - paymentOrder {} - paymentRequest {}", + request.getId(), request.getAbacRequestState(), request.getP2pHubOrderStatus(), request.getPaymentOrder(), request.getPaymentRequest()); + + ClearingRequestJpaServiceProvider service = (ClearingRequestJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(ClearingRequestModel.class); + ClearingRequestModel model = service.updateRequest(getBeanMapper().map(request, ClearingRequestModel.class)); + + logger.info("ClearingRequest, updateClearingRequest: Returning OK, Request ID {} - abacRequestState {} - p2pHubOrderStatus {} - paymentOrder {} - paymentRequest {}", + model.getId(), model.getAbacRequestState(), model.getP2pHubOrderStatus(), model.getPaymentOrder(), model.getPaymentRequest()); + + return ResponseEntity.ok(getBeanMapper().map(model, ClearingRequestTransferObject.class)); + } + + @Override + public ResponseEntity createClearingRequest(@Valid SimpleRequestMapTransferObject simpleRequestMap) { + ClearingRequestJpaServiceProvider serviceClr = (ClearingRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + ClearingRequestModel.class); + ClearingRequestModel model = serviceClr.createRequest(simpleRequestMap.getRequestId()); + return ResponseEntity.ok(getBeanMapper().map(model, ClearingRequestTransferObject.class)); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/CommentsRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/CommentsRestController.java new file mode 100644 index 0000000..6f490dd --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/CommentsRestController.java @@ -0,0 +1,159 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import java.util.List; + +import javax.validation.Valid; + +import eu.europa.eeas.erights.common.service.data.provider.comments.CommentForPostingAllowanceJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.comments.CommentForPostingAllowanceModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.CommentsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.CommentTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.comments.CommentForMovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.comments.CommentForRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.comments.CommentForMovementFileModel; +import eu.europa.eeas.erights.common.service.model.comments.CommentForRequestModel; +import eu.europa.eeas.erights.common.service.model.comments.CommentModel; +import eu.europa.eeas.erights.common.tools.Constants; + +@RestController +public class CommentsRestController extends AbstractRestController implements CommentsRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + private AbstractUserHandler userHandler; + + + @Override + public ResponseEntity createCommentForMovementFile(Long movementFileId, @Valid CommentTransferObject comment) { + + CommentForMovementFileModel model = getBeanMapper().map(comment, CommentForMovementFileModel.class); + this.preProcess(model, movementFileId); + CommentForMovementFileModel newComment = getCommentsForMFService().create(model); + + return ResponseEntity.ok(getBeanMapper().map(newComment, CommentTransferObject.class)); + } + + @Override + public ResponseEntity createCommentForPostingAllowance(Long postingAllowanceId, @Valid CommentTransferObject comment) { + + CommentForPostingAllowanceModel model = getBeanMapper().map(comment, CommentForPostingAllowanceModel.class); + this.preProcess(model, postingAllowanceId); + CommentForPostingAllowanceModel newComment = getCommentsForPostingAllowanceService().create(model); + + return ResponseEntity.ok(getBeanMapper().map(newComment, CommentTransferObject.class)); + } + + + @Override + public ResponseEntity createCommentForRequest(Long requestId, @Valid CommentTransferObject comment) { + + CommentForRequestModel model = getBeanMapper().map(comment, CommentForRequestModel.class); + this.preProcess(model, requestId); + CommentForRequestModel newComment = getCommentsForRequestService().create(model); + + return ResponseEntity.ok(getBeanMapper().map(newComment, CommentTransferObject.class)); + } + + @Override + public ResponseEntity> getCommentsForMovementFile(Long movementFileId) { + List comments = getCommentsForMFService().getCommentsForEntity(movementFileId); + return ResponseEntity.ok(getBeanMapper().mapAsList(comments, CommentTransferObject.class)); + } + + @Override + public ResponseEntity> getCommentsForPostingAllowance(Long postingAllowanceId) { + List comments = getCommentsForPostingAllowanceService().getCommentsForEntity(postingAllowanceId); + return ResponseEntity.ok(getBeanMapper().mapAsList(comments, CommentTransferObject.class)); + } + + @Override + public ResponseEntity> getCommentsForRequest(Long requestId) { + List comments = getCommentsForRequestService().getCommentsForEntity(requestId); + return ResponseEntity.ok(getBeanMapper().mapAsList(comments, CommentTransferObject.class)); + } + + + + /* + * Marks comment as deleted (soft deletion). + */ + @Override + public ResponseEntity deleteComment(Long commentId) { + + CommentForRequestJpaServiceProvider commentForRequestService = getCommentsForRequestService(); + + if (commentForRequestService.exists(commentId).booleanValue()) { + CommentForRequestModel comment = commentForRequestService.read(commentId); + comment.setDeleted(true); + commentForRequestService.update(comment); + } else if (getCommentsForPostingAllowanceService().exists(commentId).booleanValue()) { + CommentForPostingAllowanceJpaServiceProvider commentForPostingAllowanceService = getCommentsForPostingAllowanceService(); + CommentForPostingAllowanceModel comment = getCommentsForPostingAllowanceService().read(commentId); + comment.setDeleted(true); + commentForPostingAllowanceService.update(comment); + } else { + CommentForMovementFileJpaServiceProvider commentForMFService = getCommentsForMFService(); + if (commentForMFService.exists(commentId).booleanValue()) { + CommentForMovementFileModel comment = commentForMFService.read(commentId); + comment.setDeleted(true); + commentForMFService.update(comment); + } else { + // Bad comment ID: + return ResponseEntity.notFound().build(); + } + } + return ResponseEntity.ok().build(); + } + + + private CommentForRequestJpaServiceProvider getCommentsForRequestService() { + return dataServiceProviderRegistry.getDataServiceProviderFor(CommentForRequestModel.class, CommentForRequestJpaServiceProvider.class); + } + + private CommentForMovementFileJpaServiceProvider getCommentsForMFService() { + return dataServiceProviderRegistry.getDataServiceProviderFor(CommentForMovementFileModel.class, CommentForMovementFileJpaServiceProvider.class); + } + + + private CommentForPostingAllowanceJpaServiceProvider getCommentsForPostingAllowanceService() { + return dataServiceProviderRegistry.getDataServiceProviderFor(CommentForPostingAllowanceModel.class, CommentForPostingAllowanceJpaServiceProvider.class); + } + + private void preProcess(CommentModel comment, long entityId) { + comment.setDeleted(false); + comment.setEntityId(entityId); + // We store name + initials: + // "John Smith (JS)" + comment.setAuthorName(getFullNameWithInitials( + userHandler.getUser().getFirstName(), + userHandler.getUser().getLastName())); + + } + + + + public static String getFullNameWithInitials(String firstName, String lastName) { + + String fName = firstName != null && firstName.length() > 0 ? firstName : Constants.QUESTION_MARK; + String lName = lastName != null && lastName.length() > 0 ? lastName : Constants.QUESTION_MARK; + + StringBuilder stringBuilder = new StringBuilder(fName).append(Constants.SPACE).append(lName); + stringBuilder.append(Constants.SPACE).append(Constants.RBRACKET_OPEN); + stringBuilder.append(fName.substring(0, 1).toUpperCase()); + stringBuilder.append(lName.substring(0, 1).toUpperCase()); + stringBuilder.append(Constants.RBRACKET_CLOSE); + return stringBuilder.toString(); + } + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/ContextsRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/ContextsRestController.java new file mode 100644 index 0000000..c3627d5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/ContextsRestController.java @@ -0,0 +1,60 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.ContextsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementContextTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.MovementContextJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementContextModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * Created by iliessu on 05/12/2019; e-rights. + * + *

    + * default {@link ContextsRestApi} provider. + *

    + * + * @author Silviu Ilie. + * @see ContextsRestApi + * @see MovementContextJpaServiceProvider + */ +@RestController +public class ContextsRestController extends AbstractRestController implements ContextsRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + /** + * TODO : add permissions checks + */ + @Override + public ResponseEntity getContext(Long contextId) { + ResponseEntity result = null; + + MovementContextJpaServiceProvider movementContextProvider = (MovementContextJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementContextModel.class); + MovementContextModel contextModel = movementContextProvider.get(contextId); + result = ResponseEntity.ok(getBeanMapper().map(contextModel, MovementContextTransferObject.class)); + + return result; + } + + /** + * TODO : add permissions checks + */ + @Override + public ResponseEntity> getContexts() { + ResponseEntity> result = null; + + MovementContextJpaServiceProvider movementContextProvider = (MovementContextJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementContextModel.class); + List contextModels = movementContextProvider.get(); + result = ResponseEntity.ok(getBeanMapper().mapAsList(contextModels, MovementContextTransferObject.class)); + + return result; + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/CountriesRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/CountriesRestController.java new file mode 100644 index 0000000..8802458 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/CountriesRestController.java @@ -0,0 +1,44 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.CountriesRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.CityTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.CountryTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.LocationJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.CityModel; +import eu.europa.eeas.erights.common.service.model.CountryModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class CountriesRestController extends AbstractRestController implements CountriesRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity> getCities(String countryCode) { + LocationJpaServiceProvider locationJpaServiceProvider = (LocationJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(CountryModel.class); + List cities = locationJpaServiceProvider.getCitiesFor(countryCode); + List result = getBeanMapper().mapAsList(cities, CityTransferObject.class); + + return ResponseEntity.ok(result); + } + + @Override + public ResponseEntity> getCountries() { + LocationJpaServiceProvider locationJpaServiceProvider = (LocationJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(CountryModel.class); + + List countries = locationJpaServiceProvider.getCountries(); + List result = getBeanMapper().mapAsList(countries, CountryTransferObject.class); + + return ResponseEntity.ok(result); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/CreateRegularizationAllowancesRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/CreateRegularizationAllowancesRestController.java new file mode 100644 index 0000000..3ab0c8b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/CreateRegularizationAllowancesRestController.java @@ -0,0 +1,34 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.CreateRegularizationAllowancesRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RegularizationAllowanceTransferObject; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.security.PostingAllowanceSecurityChecker; +import eu.europa.eeas.erights.common.service.model.allowances.RegularizationAllowanceModel; +import eu.europa.eeas.erights.common.service.provider.allowances.RegularizationAllowanceServiceProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class CreateRegularizationAllowancesRestController extends AbstractRestController implements CreateRegularizationAllowancesRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + @Qualifier(ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER) + private PostingAllowanceSecurityChecker securityChecker; + + + @Override + public ResponseEntity createRegularizationAllowance(Long postingAllowanceId) { + RegularizationAllowanceServiceProvider provider = (RegularizationAllowanceServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RegularizationAllowanceModel.class); + RegularizationAllowanceModel regularizationCreated = provider.createRegularization(postingAllowanceId); + return ResponseEntity.ok(getBeanMapper().map(regularizationCreated, RegularizationAllowanceTransferObject.class)); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/DeclarationPersonsRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/DeclarationPersonsRestController.java new file mode 100644 index 0000000..0cd832f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/DeclarationPersonsRestController.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.DeclarationPersonsEligibilityRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.DeclarationPersonTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.declaration.DeclarationJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationPersonModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.util.List; + +@RestController +public class DeclarationPersonsRestController extends AbstractRestController implements DeclarationPersonsEligibilityRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity> refreshDeclarationPersons( + @NotNull @Valid Long movementFileId) { + + DeclarationJpaServiceProvider serviceProvider = (DeclarationJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(DeclarationModel.class); + + List personsList = serviceProvider.updatePersonsInDeclaration(movementFileId); + + return ResponseEntity.ok(getBeanMapper().mapAsList(personsList, DeclarationPersonTransferObject.class)); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/DeclarationRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/DeclarationRestController.java new file mode 100644 index 0000000..a1ba984 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/DeclarationRestController.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.DeclarationsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.DeclarationTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.declaration.DeclarationJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +@RestController +public class DeclarationRestController extends AbstractRestController implements DeclarationsRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity getDeclaration(@Valid Long movementFileId) { + + DeclarationJpaServiceProvider serviceProvider = (DeclarationJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(DeclarationModel.class); + DeclarationModel declaration = serviceProvider.getDeclaration(movementFileId); + return ResponseEntity.ok(getBeanMapper().map(declaration, DeclarationTransferObject.class)); + } + + @Override + public ResponseEntity updateDeclaration(@Valid DeclarationTransferObject declaration) { + DeclarationModel declarationModel = getBeanMapper().map(declaration, DeclarationModel.class); + DeclarationJpaServiceProvider serviceProvider = (DeclarationJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(DeclarationModel.class); + return ResponseEntity.ok(getBeanMapper().map(serviceProvider.updateDeclaration(declarationModel), DeclarationTransferObject.class)); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/DocumentRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/DocumentRestController.java new file mode 100644 index 0000000..c049449 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/DocumentRestController.java @@ -0,0 +1,55 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.tools.hermes.connector.http.soap.model.ws.DocumentConnectorModel; +import eu.europa.eeas.ananke.tools.hermes.connector.http.soap.model.ws.DocumentsConnectorModel; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.DocumentRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.HrsDocumentTransferObject; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.service.connector.http.soap.provider.HrsSoapConnectorServiceProvider; +import eu.europa.eeas.erights.common.service.model.HrsDocumentModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class DocumentRestController extends AbstractRestController implements DocumentRestApi { + + @Autowired + private HrsSoapConnectorServiceProvider hrsSoapConnectorServiceProvider; + + @Override + public ResponseEntity searchDocument(String criteria) { + + ResponseEntity result = null; + DocumentConnectorModel firstDocument = null; + HrsDocumentModel hrsDocumentModel = new HrsDocumentModel(); + + DocumentsConnectorModel documentsConnectorModel = hrsSoapConnectorServiceProvider.searchHrsDocument(criteria); + if (documentsConnectorModel.getTotalRetrievable() == 1) { + firstDocument = documentsConnectorModel.getDocuments().get(0); + } else { + throw new ResourceNotFoundRuntimeException(ERightsExceptionCode.ER009); + } + //TODO create custom mapper + hrsDocumentModel.setDocumentId(firstDocument.getId()); + hrsDocumentModel.setSaveNumber(firstDocument.getSaveNumber()); + hrsDocumentModel.setDocumentURL(hrsSoapConnectorServiceProvider.getDocumentUrlByDocumentId(hrsDocumentModel.getDocumentId())); + + result = ResponseEntity.ok(getBeanMapper().map(hrsDocumentModel, HrsDocumentTransferObject.class)); + return result; + } + + @Override + public ResponseEntity getDocumentUrl(String documentId) { + + ResponseEntity result = null; + HrsDocumentModel hrsDocumentModel = new HrsDocumentModel(); + + hrsDocumentModel.setDocumentURL(hrsSoapConnectorServiceProvider.getDocumentUrlByDocumentId(documentId)); + + result = ResponseEntity.ok(getBeanMapper().map(hrsDocumentModel, HrsDocumentTransferObject.class)); + return result; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/DocumentSectionsRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/DocumentSectionsRestController.java new file mode 100644 index 0000000..673c705 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/DocumentSectionsRestController.java @@ -0,0 +1,43 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.MovementDocsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementDocSectionTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.document.MovementDocSectionJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.document.MovementDocSectionModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.List; + +@RestController +public class DocumentSectionsRestController extends AbstractRestController implements MovementDocsRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity> getSections() { + MovementDocSectionJpaServiceProvider serviceProvider = (MovementDocSectionJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(MovementDocSectionModel.class); + + List docSections = serviceProvider.getMovementDocSections(); + + return ResponseEntity.ok(getBeanMapper().mapAsList(docSections, MovementDocSectionTransferObject.class)); + } + + @Override + public ResponseEntity updateSection( + @Valid MovementDocSectionTransferObject docSection) { + MovementDocSectionJpaServiceProvider serviceProvider = (MovementDocSectionJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(MovementDocSectionModel.class); + + MovementDocSectionModel result = serviceProvider.updateMovementDocSection(getBeanMapper().map(docSection, MovementDocSectionModel.class)); + + return ResponseEntity.ok(getBeanMapper().map(result, MovementDocSectionTransferObject.class)); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/EntitlementMaxOptionsRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/EntitlementMaxOptionsRestController.java new file mode 100644 index 0000000..08d2a14 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/EntitlementMaxOptionsRestController.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.EntitlementMaxsOptionsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.EntitlementMaxOptionTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementMaxOptionJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxOptionModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.util.List; + +@RestController +public class EntitlementMaxOptionsRestController extends AbstractRestController implements EntitlementMaxsOptionsRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity> getEntitlementMaxCatOptions(@NotNull @Valid Long entitlementMaxCatId) { + + EntitlementMaxOptionJpaServiceProvider service = (EntitlementMaxOptionJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(EntitlementMaxOptionModel.class); + List result = getBeanMapper().mapAsList(service.getEntitlementMaxOptions(entitlementMaxCatId), EntitlementMaxOptionTransferObject.class); + + return ResponseEntity.ok(result); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/EntitlementTypesCatRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/EntitlementTypesCatRestController.java new file mode 100644 index 0000000..64ec46e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/EntitlementTypesCatRestController.java @@ -0,0 +1,30 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.EntitlementTypesCatRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.EntitlementTypeCatTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementTypeCatJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeCatModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class EntitlementTypesCatRestController extends AbstractRestController implements EntitlementTypesCatRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity> getEntitlementTypesCatForMovementFile(Long movementFileId, Boolean assigned) { + EntitlementTypeCatJpaServiceProvider entitlementTypeCatJpaServiceProvider = (EntitlementTypeCatJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(EntitlementTypeCatModel.class); + + List models = entitlementTypeCatJpaServiceProvider.getEntitlementTypesCatForMovementFile(movementFileId, assigned); + + return ResponseEntity.ok(getBeanMapper().mapAsList(models, EntitlementTypeCatTransferObject.class)); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/EntitlementTypesRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/EntitlementTypesRestController.java new file mode 100644 index 0000000..2ca185c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/EntitlementTypesRestController.java @@ -0,0 +1,74 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.EntitlementTypesRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.EntitlementTypeTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VEmptyRateEntitlementTypeTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.ValueMapTransferObject; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementTypeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.VEmptyRateEntitlementTypeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.entitlement.VEmptyRateEntitlementTypeModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.List; + +@RestController +public class EntitlementTypesRestController extends AbstractRestController implements EntitlementTypesRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity deleteEntitlementType(Long entitlementTypeMFId) { + EntitlementTypeJpaServiceProvider entitlementTypeJpaServiceProvider = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(EntitlementTypeModel.class); + entitlementTypeJpaServiceProvider.deleteEntitlementTypeNotifyEnableNotif(entitlementTypeMFId); + return ResponseEntity.ok(entitlementTypeMFId); + } + + @Override + public ResponseEntity saveEntitlementType(@Valid EntitlementTypeTransferObject entitlementTypeMF, Boolean updateDefault) { + EntitlementTypeJpaServiceProvider entitlementTypeJpaServiceProvider = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(EntitlementTypeModel.class); + + EntitlementTypeModel model = getBeanMapper().map(entitlementTypeMF, EntitlementTypeModel.class); + EntitlementTypeModel updated = entitlementTypeJpaServiceProvider.updateEntitlementType(model); + + return ResponseEntity.ok(getBeanMapper().map(updated, EntitlementTypeTransferObject.class)); + } + + @Override + public ResponseEntity createEntitlementType(ValueMapTransferObject valueMap) { + EntitlementTypeJpaServiceProvider entitlementTypeJpaServiceProvider = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(EntitlementTypeModel.class); + EntitlementTypeModel model = entitlementTypeJpaServiceProvider.createEntitlementType(valueMap.getEntitlementTypeCatId(), valueMap.getMovementFileId()); + return ResponseEntity.ok(getBeanMapper().map(model, EntitlementTypeTransferObject.class)); + } + + @Override + public ResponseEntity> getEntitlementTypes(Long movementFileId) { + EntitlementTypeJpaServiceProvider entitlementTypeJpaServiceProvider = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(EntitlementTypeModel.class); + List entitlementTypeModels = entitlementTypeJpaServiceProvider.getEntitlementsTypeList(movementFileId); + + return ResponseEntity.ok(getBeanMapper().mapAsList(entitlementTypeModels, EntitlementTypeTransferObject.class)); + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_VIEW_REPORTS) + public ResponseEntity> getEntitlementsWithEmptyRates() { + VEmptyRateEntitlementTypeJpaServiceProvider entitlementTypeJpaServiceProvider = (VEmptyRateEntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(VEmptyRateEntitlementTypeModel.class); + List entitlementTypeModels = entitlementTypeJpaServiceProvider.getEntitlementsWithEmptyRates(); + + return ResponseEntity.ok(getBeanMapper().mapAsList(entitlementTypeModels, VEmptyRateEntitlementTypeTransferObject.class)); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/ExchangeRateRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/ExchangeRateRestController.java new file mode 100644 index 0000000..a910a01 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/ExchangeRateRestController.java @@ -0,0 +1,40 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.ExchangeRatesRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.ExchangeRateTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.ExchangeRateJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.ExchangeRateModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import java.time.LocalDate; +import java.util.List; + +@RestController +public class ExchangeRateRestController extends AbstractRestController implements ExchangeRatesRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity> getExchangeRates(LocalDate validDate) { + ExchangeRateJpaServiceProvider exchangeRateServiceProvider = (ExchangeRateJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor(ExchangeRateModel.class); + List exchangeRates = validDate == null ? + exchangeRateServiceProvider.getActiveExchangeRates() : + exchangeRateServiceProvider.getActiveExchangeRates(validDate); + return ResponseEntity.ok(getBeanMapper().mapAsList(exchangeRates, ExchangeRateTransferObject.class)); + } + + @Override + public ResponseEntity> getExchangeRatesForCurrency(String currency) { + ExchangeRateJpaServiceProvider exchangeRateServiceProvider = (ExchangeRateJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor(ExchangeRateModel.class); + List exchangeRates = exchangeRateServiceProvider.getExchangeRatesForCurrency(currency); + return ResponseEntity.ok(getBeanMapper().mapAsList(exchangeRates, ExchangeRateTransferObject.class)); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/FamilyMemberRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/FamilyMemberRestController.java new file mode 100644 index 0000000..637336f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/FamilyMemberRestController.java @@ -0,0 +1,31 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.FamilyMembersRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.FamilyMemberTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.declaration.FamilyMemberJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.declaration.FamilyMemberModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.List; + +@RestController +public class FamilyMemberRestController extends AbstractRestController implements FamilyMembersRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity> getFamilyMembers(@Valid Long staffMemberId) { + FamilyMemberJpaServiceProvider familyMemberJpaServiceProvider = (FamilyMemberJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(FamilyMemberModel.class); + + return ResponseEntity.ok( + getBeanMapper().mapAsList(familyMemberJpaServiceProvider.getFamilyMembers(staffMemberId), FamilyMemberTransferObject.class) + ); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/FunctionCodesRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/FunctionCodesRestController.java new file mode 100644 index 0000000..2976679 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/FunctionCodesRestController.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.FunctionCodesRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.FunctionCodeTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.FunctionCodeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.job.FunctionCodeModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class FunctionCodesRestController extends AbstractRestController implements FunctionCodesRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity> getFunctionCodes() { + FunctionCodeJpaServiceProvider FunctionCodeJpaServiceProvider = (FunctionCodeJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(FunctionCodeModel.class); + List FunctionCodes = FunctionCodeJpaServiceProvider.getAllFunctionCodes(); + List result = getBeanMapper().mapAsList(FunctionCodes, FunctionCodeTransferObject.class); + + return ResponseEntity.ok(result); + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/IataAirportRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/IataAirportRestController.java new file mode 100644 index 0000000..97f7691 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/IataAirportRestController.java @@ -0,0 +1,83 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.IataAirportsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.IataAirportTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.LocationJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.CountryModel; +import eu.europa.eeas.erights.common.service.model.IataAirportModel; +import eu.europa.eeas.erights.common.service.provider.allowances.PostingAllowanceDefaultServiceProvider; +import java.math.BigDecimal; +import java.util.List; +import java.util.Optional; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class IataAirportRestController extends AbstractRestController implements IataAirportsRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + private PostingAllowanceDefaultServiceProvider postingAllowanceDefaultServiceProvider; + + @Override + public ResponseEntity> getIataAirports() { + LocationJpaServiceProvider locationJpaServiceProvider = (LocationJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(CountryModel.class); + List airports = locationJpaServiceProvider.getIataAirports(); + List result = getBeanMapper().mapAsList(airports, IataAirportTransferObject.class); + + return ResponseEntity.ok(result); + } + + + + + @Override + public ResponseEntity getAirportFromCity(String cityCode) { + LocationJpaServiceProvider locationJpaServiceProvider = (LocationJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(CountryModel.class); + String idaCode = locationJpaServiceProvider.getIataCode(cityCode); + IataAirportModel airport = locationJpaServiceProvider.getIataAirportsById(idaCode); + IataAirportTransferObject result = getBeanMapper().map(airport, IataAirportTransferObject.class); + + return ResponseEntity.ok(result); + } + + /** + * @param originId + * @param destinationId + * @param exerciseYear + * @param firstStopId + * @param secondStopId + * @param thirdStopId + * @return + */ + @Override + public ResponseEntity getIATARoutePrice(String originId, String destinationId, Integer exerciseYear, String firstStopId, + String secondStopId, String thirdStopId) { + Optional resultOptional = postingAllowanceDefaultServiceProvider.calculateRoutePrice(originId, destinationId, firstStopId, + secondStopId, thirdStopId, + exerciseYear); + + return resultOptional.map(result -> ResponseEntity.ok(result)) + .orElseGet(() -> ResponseEntity.noContent().build()); + } + + @Override + public ResponseEntity getIataAirportsById(String id) { + LocationJpaServiceProvider locationJpaServiceProvider = (LocationJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(CountryModel.class); + IataAirportModel airport = locationJpaServiceProvider.getIataAirportsById(id); + IataAirportTransferObject result = getBeanMapper().map(airport, IataAirportTransferObject.class); + + return ResponseEntity.ok(result); + } + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/InstallationRequestsRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/InstallationRequestsRestController.java new file mode 100644 index 0000000..43401c3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/InstallationRequestsRestController.java @@ -0,0 +1,101 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.InstallationRequestsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.InstallationRequestTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StateMachineTransitionTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.RequestIndemnityJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.InstallationRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.InstallationRequestUpdaterServiceProvider; +import eu.europa.eeas.erights.common.service.model.entitlement.RequestIndemnityModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.InstallationRequestModel; +import eu.europa.eeas.erights.common.tools.statemachine.InstallationEvent; +import eu.europa.eeas.erights.common.tools.statemachine.InstallationState; +import java.util.Objects; +import java.util.Optional; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.List; + +@RestController +public class InstallationRequestsRestController extends AbstractRestController implements InstallationRequestsRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + private InstallationRequestUpdaterServiceProvider installationUpdaterServiceProvider; + + @Override + public ResponseEntity getInstallationRequest(Long requestId) { + InstallationRequestJpaServiceProvider service = (InstallationRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + InstallationRequestModel.class); + + InstallationRequestModel model = service.getRequest(requestId); + + return ResponseEntity.ok(getBeanMapper().map(model, InstallationRequestTransferObject.class)); + } + + @Override + public ResponseEntity> getStateMachineHistory(Long requestId) { + InstallationRequestJpaServiceProvider service = (InstallationRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + InstallationRequestModel.class); + + List> states = service.getStateMachineHistory(requestId); + + return ResponseEntity.ok(getBeanMapper().mapAsList(states, StateMachineTransitionTransferObject.class)); + } + + @Override + public ResponseEntity sendPaymentToSysper(Long requestId) { + + InstallationRequestJpaServiceProvider service = (InstallationRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + InstallationRequestModel.class); + return ResponseEntity.ok(getBeanMapper().map(service.sendPaymentToSysper(requestId), InstallationRequestTransferObject.class)); + } + + @Override + public ResponseEntity stateMachineEvent(Long requestId, String stateMachineEvent) { + InstallationRequestJpaServiceProvider service = (InstallationRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + InstallationRequestModel.class); + InstallationRequestModel requestModel = service.newStateMachineEvent(stateMachineEvent, requestId); + return ResponseEntity.ok(getBeanMapper().map(requestModel, InstallationRequestTransferObject.class)); + } + + @Override + public ResponseEntity updateInstallationRequest(@Valid InstallationRequestTransferObject request) { + InstallationRequestJpaServiceProvider service = (InstallationRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + InstallationRequestModel.class); + InstallationRequestModel installationRequestModel = getBeanMapper().map(request, InstallationRequestModel.class); + //updating the attachments if the request is in draft status + service.updateRequest(installationRequestModel); + if(Objects.equals(InstallationState.DRAFT,installationRequestModel.getState()) || + Objects.equals(InstallationState.AWAITING,installationRequestModel.getState())){ + service.updateAttachments(installationRequestModel); + } + return ResponseEntity.ok(request); + } + + @Override + public ResponseEntity refreshDataFromSysper(Long requestId) { + + //updating request indemnity with data from Sysper + RequestIndemnityJpaServiceProvider requestIndemnityJpaService = getRequestIndemnityJpaServiceProvider(); + Optional requestIndemnityModelOptional = requestIndemnityJpaService.updateIndemnityFromSysper(requestId); + + //updating installation + InstallationRequestModel requestModel = installationUpdaterServiceProvider.updateInstallation(requestId); + + return ResponseEntity.ok(getBeanMapper().map(requestModel, InstallationRequestTransferObject.class)); + } + + private RequestIndemnityJpaServiceProvider getRequestIndemnityJpaServiceProvider() { + return (RequestIndemnityJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RequestIndemnityModel.class); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/InstitutionCodesRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/InstitutionCodesRestController.java new file mode 100644 index 0000000..44c2c69 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/InstitutionCodesRestController.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.InstitutionCodesRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.InstitutionCodeTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.InstitutionCodeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.job.InstitutionCodeModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class InstitutionCodesRestController extends AbstractRestController implements InstitutionCodesRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity> getInstitutionCodes() { + InstitutionCodeJpaServiceProvider InstitutionCodeJpaServiceProvider = (InstitutionCodeJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(InstitutionCodeModel.class); + List InstitutionCodes = InstitutionCodeJpaServiceProvider.getAllInstitutionCodes(); + List result = getBeanMapper().mapAsList(InstitutionCodes, InstitutionCodeTransferObject.class); + + return ResponseEntity.ok(result); + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/MovementFilesRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/MovementFilesRestController.java new file mode 100644 index 0000000..3f7c99c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/MovementFilesRestController.java @@ -0,0 +1,91 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.MovementFilesRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementFileTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.NotificationTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StateMachineTransitionTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.declaration.DeclarationJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementTypeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.notification.NotificationMFModel; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileEvent; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.List; + +/** + * @author imironiu + */ +@RestController +public class MovementFilesRestController extends AbstractRestController implements MovementFilesRestApi { + + @Autowired + EmailEdmsServiceProvider emailEdmsServiceProvider; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity stateMachineEvent(@Valid MovementFileTransferObject model, String stateMachineEvent) { + MovementFileJpaServiceProvider service = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + + MovementFileModel updated = service.newStateMachineEvent(stateMachineEvent, model.getId()); + if (updated != null){ + //We call the service in case there is a notification for the state + emailEdmsServiceProvider.checkTemplateAndSendMovementFileNotification(updated, stateMachineEvent); + + EntitlementTypeJpaServiceProvider entitlementsService = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + EntitlementTypeModel.class); + + // If the MF goes to CONFIRMED, then check if notification is needed (if all the Amounts are now set): + if (NotificationTemplateCode.CONFIRM.name().equals(stateMachineEvent) && entitlementsService.checkAmountsNotificationNeeded(updated)) { + emailEdmsServiceProvider.notifyAllEntitlementAmountsFilled(updated); + } + + // === Check if after this update, it possible to enable the declaration + try { + DeclarationJpaServiceProvider declarationJpaService = (DeclarationJpaServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor(DeclarationModel.class); + declarationJpaService.enableOrDisableDeclarationBasedOnFilledAllowances(updated); + } catch (Exception ex) { + getLogger().error("An exception occurred when checking of declaration should be created!", ex); + } + // === + + MovementFileTransferObject transferObject = getBeanMapper().map(updated, MovementFileTransferObject.class); + return ResponseEntity.ok(transferObject); + } + return ResponseEntity.ok().build(); + } + + @Override + public ResponseEntity> getEmailNotificationsHistory(Long movementFileId) { + MovementFileJpaServiceProvider service = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + List notifications = service.getNotifications(movementFileId); + return ResponseEntity.ok(getBeanMapper().mapAsList(notifications, NotificationTransferObject.class)); + } + + @Override + public ResponseEntity> getStateMachineHistory(Long movementFileId) { + ResponseEntity> result; + MovementFileJpaServiceProvider service = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + List> stateMachineTransitionModelList; + + stateMachineTransitionModelList = service.getStateMachineHistory(movementFileId); + + result = ResponseEntity.ok(getBeanMapper().mapAsList(stateMachineTransitionModelList, StateMachineTransitionTransferObject.class)); + + return result; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/MovementTypesController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/MovementTypesController.java new file mode 100644 index 0000000..e8885c6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/MovementTypesController.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.MovementTypesRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementTypeTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.MovementTypeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementTypeModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.List; + +@RestController +public class MovementTypesController extends AbstractRestController implements MovementTypesRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity> getMovementTypes(@Valid Long contextId) { + ResponseEntity> result; + + MovementTypeJpaServiceProvider movementTypeJpaServiceProvider = (MovementTypeJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(MovementTypeModel.class); + List models; + if (contextId == null) { + models = movementTypeJpaServiceProvider.read(); + } else { + models = movementTypeJpaServiceProvider.getMovementTypesByContext(contextId); + } + result = ResponseEntity.ok(getBeanMapper().mapAsList(models, MovementTypeTransferObject.class)); + + return result; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/PermissionsRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/PermissionsRestController.java new file mode 100644 index 0000000..7e68f6c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/PermissionsRestController.java @@ -0,0 +1,34 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.PermissionsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.PostingAllowancesPermissionsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PermissionsTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PostingAllowancePermissionsTransferObject; +import eu.europa.eeas.erights.common.service.provider.PermissionsServiceProvider; +import eu.europa.eeas.erights.common.service.provider.PostingAllowancePermissionServiceProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class PermissionsRestController extends AbstractRestController implements PermissionsRestApi, PostingAllowancesPermissionsRestApi { + + @Autowired + private PermissionsServiceProvider permissionsServiceProvider; + + @Autowired + private PostingAllowancePermissionServiceProvider postingAllowancePermissionServiceProvider; + + @Override + public ResponseEntity getPermissions(Long movementFileId) { + PermissionsTransferObject permissionsTransferObject = getBeanMapper().map(permissionsServiceProvider.getPermissions(movementFileId), PermissionsTransferObject.class); + return ResponseEntity.ok(permissionsTransferObject); + } + + @Override + public ResponseEntity getPostingAllowancePermissions() { + PostingAllowancePermissionsTransferObject postingAllowancePermissionsTransferObject = getBeanMapper().map(postingAllowancePermissionServiceProvider.getPermissions(), PostingAllowancePermissionsTransferObject.class); + return ResponseEntity.ok(postingAllowancePermissionsTransferObject); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/PersonEmailRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/PersonEmailRestController.java new file mode 100644 index 0000000..6c68008 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/PersonEmailRestController.java @@ -0,0 +1,59 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import java.util.List; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.PersonEmailsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PersonEmailTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.PersonEmailJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.PersonEmailModel; +import eu.europa.eeas.erights.common.tools.person.EmailType; + +@RestController +public class PersonEmailRestController extends AbstractRestController implements PersonEmailsRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity setPersonPrivateEmail(@Valid PersonEmailTransferObject personEmail) { + + PersonEmailModel model = getBeanMapper().map(personEmail, PersonEmailModel.class); + + PersonEmailJpaServiceProvider service = dataServiceProviderRegistry.getDataServiceProviderFor(PersonEmailModel.class, PersonEmailJpaServiceProvider.class); + + List personEmails = service.getPersonPrivateEmails(personEmail.getPerId()); + + PersonEmailModel newModel; + if (personEmails.isEmpty()) { + // Person has no email in PERSONS_EMAILS + newModel = service.create(model); + } else { + // Update + newModel = personEmails.get(0); + newModel.setEmail(personEmail.getEmail()); + newModel.setEmailType(EmailType.PRIV.name()); + newModel = service.update(newModel); + } + return ResponseEntity.ok(getBeanMapper().map(newModel, PersonEmailTransferObject.class)); + } + + @Override + public ResponseEntity deletePersonPrivateEmail(Long personId) { + + PersonEmailJpaServiceProvider service = dataServiceProviderRegistry.getDataServiceProviderFor(PersonEmailModel.class, PersonEmailJpaServiceProvider.class); + + List listToDelete = service.getPersonPrivateEmails(personId); + listToDelete.forEach(service::delete); + + return ResponseEntity.ok().build(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/PersonnelTypeRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/PersonnelTypeRestController.java new file mode 100644 index 0000000..46f2224 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/PersonnelTypeRestController.java @@ -0,0 +1,33 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; + +import eu.europa.eeas.erights.common.api.http.rest.api.internal.PersonnelTypesRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PersonnelTypeTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.PersonnelTypeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.job.PersonnelTypeModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class PersonnelTypeRestController extends AbstractRestController implements PersonnelTypesRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity> getPersonnelType() { + PersonnelTypeJpaServiceProvider PersonnelTypeJpaServiceProvider = (PersonnelTypeJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(PersonnelTypeModel.class); + List PersonnelType = PersonnelTypeJpaServiceProvider.getAllPersonnelTypes(); + List result = getBeanMapper().mapAsList(PersonnelType, PersonnelTypeTransferObject.class); + + return ResponseEntity.ok(result); + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/PostingAllowancesDefaultRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/PostingAllowancesDefaultRestController.java new file mode 100644 index 0000000..12859c5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/PostingAllowancesDefaultRestController.java @@ -0,0 +1,25 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.PostingAllowancesDefaultRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PostingAllowanceAmountsTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceAmountsModel; +import eu.europa.eeas.erights.common.service.provider.allowances.PostingAllowanceDefaultServiceProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class PostingAllowancesDefaultRestController extends AbstractRestController implements PostingAllowancesDefaultRestApi { + + + @Autowired + private PostingAllowanceDefaultServiceProvider postingAllowanceDefaultServiceProvider; + + + @Override + public ResponseEntity amounts(String iataCodeFrom, String iataCodeTo, String postingAllowanceType, String postingAllowanceReqType, Integer exerciseYear) { + PostingAllowanceAmountsModel postingAllowanceAmountsModel = postingAllowanceDefaultServiceProvider.getDefaultAmounts(iataCodeFrom, iataCodeTo, postingAllowanceType, postingAllowanceReqType, exerciseYear); + return ResponseEntity.ok(getBeanMapper().map(postingAllowanceAmountsModel, PostingAllowanceAmountsTransferObject.class)); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/PostingAllowancesRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/PostingAllowancesRestController.java new file mode 100644 index 0000000..dd4cd48 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/PostingAllowancesRestController.java @@ -0,0 +1,121 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.PostingAllowancesRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PostingAllowanceBatchEventResponseTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PostingAllowanceTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StateMachineTransitionTransferObject; +import eu.europa.eeas.erights.common.security.PostingAllowanceSecurityChecker; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceBatchEventResponseModel; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceModel; +import eu.europa.eeas.erights.common.service.provider.allowances.PostingAllowanceDefaultServiceProvider; +import eu.europa.eeas.erights.common.service.provider.allowances.PostingAllowanceServiceProvider; +import eu.europa.eeas.erights.common.service.provider.sysper.SysperServiceProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class PostingAllowancesRestController extends AbstractRestController implements PostingAllowancesRestApi { + + @Autowired + private PostingAllowanceServiceProvider provider; + + @Autowired + private SysperServiceProvider sysperServiceProvider; + + @Override + public ResponseEntity createPostingAllowance(PostingAllowanceTransferObject postingAllowance) { + return null; + } + + @Override + @PreAuthorize(PostingAllowanceSecurityChecker.CAN_CONSULT) + public ResponseEntity getEventNumber(String rightId, Long personId) { + return ResponseEntity.ok(sysperServiceProvider.paymentExist(rightId, personId)); + } + + @Override + @PreAuthorize(PostingAllowanceSecurityChecker.CAN_CONSULT) + public ResponseEntity getPostingAllowance(Long postingAllowanceId) { + PostingAllowanceModel postingAllowanceModels = provider.getPostingAllowance(postingAllowanceId); + return ResponseEntity.ok(getBeanMapper().map(postingAllowanceModels, PostingAllowanceTransferObject.class)); + } + + @Override + public ResponseEntity> getPostingAllowanceStateMachineHistory(Long postingAllowanceId) { + return ResponseEntity.ok(getBeanMapper().mapAsList(provider.getStateMachineHistory(postingAllowanceId), StateMachineTransitionTransferObject.class)); + } + + @Override + @PreAuthorize(PostingAllowanceSecurityChecker.CAN_CONSULT) + public ResponseEntity> getPostingAllowances() { + List postingAllowanceModels = provider.getPostingAllowances(); + return ResponseEntity.ok(getBeanMapper().mapAsList(postingAllowanceModels, PostingAllowanceTransferObject.class)); + } + + @Override + public ResponseEntity updatePostingAllowance(Long postingAllowanceId, PostingAllowanceTransferObject postingAllowance) { + return null; + } + + @Override + public ResponseEntity> getPostingAllowancesByParent(Long parentId) { + + + List models = provider.getPostingAllowancesByParent(parentId); + return ResponseEntity.ok(getBeanMapper().mapAsList(models, PostingAllowanceTransferObject.class)); + + } + + @Override + public ResponseEntity isTheParentARegularization(Long postingAllowanceId) { + return ResponseEntity.ok(provider.isTheParentARegularization(postingAllowanceId)); + } + + @Override + public ResponseEntity refreshDependentsAddress(Long postingAllowanceId) { + PostingAllowanceModel postingAllowanceModel = provider.getPostingAllowance(postingAllowanceId); + provider.refreshAddressOfDependents(postingAllowanceModel); + return ResponseEntity.ok().build(); + } + + @Override + @PreAuthorize(PostingAllowanceSecurityChecker.CAN_PAY_SYSPER) + public ResponseEntity sendPaymentToSysper(Long postingAllowanceId) { + + + PostingAllowanceModel postingAllowanceModel = provider.sendPaymentToSysper(postingAllowanceId); + return ResponseEntity.ok(getBeanMapper().map(postingAllowanceModel, PostingAllowanceTransferObject.class)); + } + + @Override + @PreAuthorize(PostingAllowanceSecurityChecker.CAN_CONSULT) + public ResponseEntity stateMachineEvent(Long postingAllowanceId, String stateMachineEvent) { + PostingAllowanceModel updated = provider.newStateMachineEvent(stateMachineEvent, postingAllowanceId); + return ResponseEntity.ok(getBeanMapper().map(updated, PostingAllowanceTransferObject.class)); + } + + @Override + @PreAuthorize(PostingAllowanceSecurityChecker.CAN_CONSULT) + public ResponseEntity refreshPlaceOfOriginFromSysper(Long postingAllowanceId) { + PostingAllowanceModel postingAllowanceModel = provider.refreshPlaceOfOrigingFromSysper(postingAllowanceId); + return ResponseEntity.ok(getBeanMapper().map(postingAllowanceModel, PostingAllowanceTransferObject.class)); + } + + @Override + public ResponseEntity batchEventStateMachineProcessing(String event, List postingAllowanceIds) { + + + PostingAllowanceBatchEventResponseModel postingAllowanceModel = provider.batchEventStateMachineProcessing(event,postingAllowanceIds); + return ResponseEntity.ok(getBeanMapper().map(postingAllowanceModel, PostingAllowanceBatchEventResponseTransferObject.class)); + } + + @Override + public ResponseEntity canBeRegularized(Long postingAllowanceId) { + return ResponseEntity.ok(provider.canBeRegularized(postingAllowanceId)); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/RegularizationAllowancesRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/RegularizationAllowancesRestController.java new file mode 100644 index 0000000..b29584b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/RegularizationAllowancesRestController.java @@ -0,0 +1,74 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.base.user.User; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.RegularizationAllowancesRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RegularizationAllowanceTransferObject; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.security.PostingAllowanceSecurityChecker; +import eu.europa.eeas.erights.common.service.model.allowances.RegularizationAllowanceModel; +import eu.europa.eeas.erights.common.service.provider.allowances.RegularizationAllowanceServiceProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Set; + +import static java.util.Objects.isNull; + +@RestController +public class RegularizationAllowancesRestController extends AbstractRestController implements RegularizationAllowancesRestApi { + + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + @Autowired + @Qualifier(ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER) + private PostingAllowanceSecurityChecker securityChecker; + + @Override + public ResponseEntity getRegularizationAllowance(Long regularizationAllowanceId) { + + RegularizationAllowanceServiceProvider provider = (RegularizationAllowanceServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RegularizationAllowanceModel.class); + + if(securityChecker.canConsult() || + securityChecker.hasOrganisationIndependentListAuthority() || + securityChecker.hasOrganisationsWithListAuthority()){ + + if (securityChecker.canConsult() || this.securityChecker.hasOrganisationIndependentListAuthority()) { + RegularizationAllowanceModel travelAllowance = provider.getRegularizationAllowance(regularizationAllowanceId); + return ResponseEntity.ok(getBeanMapper().map(travelAllowance, RegularizationAllowanceTransferObject.class)); + } + Set orgIds = this.securityChecker.getOrganisationsWithListAuthority(); + + RegularizationAllowanceModel travelAllowance = provider.getRegularizationAllowanceInOrganisation(regularizationAllowanceId,orgIds); + if(isNull(travelAllowance)){ + return ResponseEntity.status(HttpStatus.FORBIDDEN).build(); + } + return ResponseEntity.ok(getBeanMapper().map(travelAllowance, RegularizationAllowanceTransferObject.class)); + } + User currentUser = securityChecker.getCurrentUser(); + + RegularizationAllowanceModel travelAllowance = provider.getRegularizationAllowance(regularizationAllowanceId,currentUser); + + if(isNull(travelAllowance)){ + return ResponseEntity.status(HttpStatus.FORBIDDEN).build(); + } + return ResponseEntity.ok(getBeanMapper().map(travelAllowance, RegularizationAllowanceTransferObject.class)); + + } + + + + + @Override + public ResponseEntity updateRegularizationAllowance(RegularizationAllowanceTransferObject travelAllowance) { + + RegularizationAllowanceServiceProvider provider = (RegularizationAllowanceServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RegularizationAllowanceModel.class); + RegularizationAllowanceModel regularizationAllowanceModel = provider.updateRegularizationAllowance(getBeanMapper().map(travelAllowance, RegularizationAllowanceModel.class)); + return ResponseEntity.status(HttpStatus.CREATED).body(getBeanMapper().map(regularizationAllowanceModel,RegularizationAllowanceTransferObject.class)); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/RequestRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/RequestRestController.java new file mode 100644 index 0000000..0ae0308 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/RequestRestController.java @@ -0,0 +1,136 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import static java.util.Objects.nonNull; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.base.exception.ValidationRuntimeException; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.RequestsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestIndemnityTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestTransferObject; +import eu.europa.eeas.erights.common.data.jpa.dto.BinaryOutputWrapper; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.RequestIndemnityJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.RequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.validation.Violation; +import eu.europa.eeas.erights.common.service.model.entitlement.RequestIndemnityModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import java.io.IOException; +import java.time.Month; +import java.util.LinkedList; +import java.util.List; +import java.util.Optional; + +import eu.europa.eeas.erights.common.service.model.entitlement.request.TotalRemRequestModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class RequestRestController extends AbstractRestController implements RequestsRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity createRequestIndemnity(Long requestId, RequestIndemnityTransferObject requestIndemnity) { + + RequestIndemnityJpaServiceProvider requestIndemnityJpaService = getRequestIndemnityJpaServiceProvider(); + Optional existingRequestIndemnityModel = requestIndemnityJpaService.getByRequestId(requestId); + if (!existingRequestIndemnityModel.isPresent()) { + RequestIndemnityModel requestIndemnityModel = requestIndemnityJpaService.create(RequestIndemnityModel.builder() + .comment(requestIndemnity.getComment()) + .originPeriodMonth(requestIndemnity.getOriginPeriodMonth() == null ? + null : Month.valueOf(requestIndemnity.getOriginPeriodMonth())) + .originPeriodYear(requestIndemnity.getOriginPeriodYear()) + .type(requestIndemnity.getType()) + .paymentPeriodMonth(requestIndemnity.getPaymentPeriodMonth() == null ? + null : Month.valueOf(requestIndemnity.getPaymentPeriodMonth())) + .paymentPeriodYear(requestIndemnity.getPaymentPeriodYear()) + .unit(requestIndemnity.getUnit()) + .number(requestIndemnity.getNumber()) + .requestId(requestId) + .hoaEmailFlag(requestIndemnity.isHoaEmailFlag()) + .build()); + return ResponseEntity.ok(getBeanMapper().map(requestIndemnityModel,RequestIndemnityTransferObject.class)); + } else { + RequestIndemnityModel requestIndemnityModel = existingRequestIndemnityModel.get(); + requestIndemnityModel.setComment(requestIndemnity.getComment()); + requestIndemnityModel.setNumber(requestIndemnity.getNumber()); + requestIndemnityModel.setUnit(requestIndemnity.getUnit()); + requestIndemnityModel.setOriginPeriodMonth(requestIndemnity.getOriginPeriodMonth() == null ? + null : Month.valueOf(requestIndemnity.getOriginPeriodMonth())); + requestIndemnityModel.setOriginPeriodYear(requestIndemnity.getOriginPeriodYear()); + requestIndemnityModel.setPaymentPeriodMonth(requestIndemnity.getPaymentPeriodMonth() == null ? + null : Month.valueOf(requestIndemnity.getPaymentPeriodMonth())); + requestIndemnityModel.setPaymentPeriodYear(requestIndemnity.getPaymentPeriodYear()); + requestIndemnityModel.setType(requestIndemnity.getType()); + requestIndemnityModel.setHoaEmailFlag(requestIndemnity.isHoaEmailFlag()); + requestIndemnityJpaService.update(requestIndemnityModel); + return ResponseEntity.ok(getBeanMapper().map(requestIndemnityModel,RequestIndemnityTransferObject.class)); + } + } + + @Override + @PreAuthorize(MovementFileSecurityChecker.CAN_ACCESS_BACK_OFFICE) + public ResponseEntity downloadFilesAsZip(Long requestId) { + try { + RequestJpaServiceProvider requestJpaServiceProvider = (RequestJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(RequestModel.class); + BinaryOutputWrapper output = requestJpaServiceProvider.generateRequestDetailsZip(requestId); + if(nonNull(output)){ + return new ResponseEntity<>(output.getData(), output.getHeaders(), HttpStatus.OK); + } + } catch (IOException e) { + getLogger().error("IOException - downloadFilesAsZip",e); + } + List violations = new LinkedList<>(); + violations.add(new Violation(ERightsExceptionCode.ER033, ERightsExceptionCode.ER033.getDescription())); + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + + @Override + public ResponseEntity getIndemnityRequest(Long requestId) { + RequestIndemnityJpaServiceProvider requestIndemnityJpaService = getRequestIndemnityJpaServiceProvider(); + Optional existingRequestIndemnityModel = requestIndemnityJpaService.getByRequestId(requestId); + if (existingRequestIndemnityModel.isPresent()) { + return ResponseEntity.ok(getBeanMapper().map(existingRequestIndemnityModel.get(), RequestIndemnityTransferObject.class)); + } + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + private RequestIndemnityJpaServiceProvider getRequestIndemnityJpaServiceProvider() { + return (RequestIndemnityJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RequestIndemnityModel.class); + } + + @Override + public ResponseEntity getRequest(Long requestId) { + RequestJpaServiceProvider requestJpaServiceProvider = (RequestJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(RequestModel.class); + RequestModel requestModel = requestJpaServiceProvider.get(requestId); + return ResponseEntity.ok(getBeanMapper().map(requestModel, RequestTransferObject.class)); + } + + @Override + public ResponseEntity> getRequestsByParent(Long parentId) { + + RequestJpaServiceProvider service = (RequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + RequestModel.class); + List models = service.getRequestsByParent(parentId); + return ResponseEntity.ok(getBeanMapper().mapAsList(models, RequestTransferObject.class)); + + } + + @Override + public ResponseEntity markAsPaidRequestInSumma(RequestTransferObject request) { + RequestJpaServiceProvider service = (RequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + RequestModel.class); + RequestModel requestModel = service.markAsPAid(getBeanMapper().map(request, RequestModel.class)); + return ResponseEntity.ok(getBeanMapper().map(requestModel, RequestTransferObject.class)); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/ResettlementRequestsRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/ResettlementRequestsRestController.java new file mode 100644 index 0000000..a6dd0b3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/ResettlementRequestsRestController.java @@ -0,0 +1,127 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.ResettlementRequestsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.InstallationRequestTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.ResettlementRequestTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StateMachineTransitionTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.InstallationRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.ResettlementRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.entitlement.request.InstallationRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.ResettlementRequestModel; +import eu.europa.eeas.erights.common.tools.statemachine.ResettlementEvent; +import eu.europa.eeas.erights.common.tools.statemachine.ResettlementState; +import java.util.List; +import java.util.Optional; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author ienaccat + */ +@RestController +@RequiredArgsConstructor +public class ResettlementRequestsRestController extends AbstractRestController implements + ResettlementRequestsRestApi { + + private final DataServiceProviderRegistry dataServiceProviderRegistry; + + /** + * creates a Resettlement request + * + * @param movementFileId + * @return + */ + @Override + public ResponseEntity createResettlementRequest( + Long movementFileId) { + + Optional requestModel = getResettlementRequestJpaServiceProvider().createResettlement(movementFileId); + + return requestModel.map(resettlementRequestModel -> ResponseEntity.ok( + getBeanMapper().map(resettlementRequestModel, ResettlementRequestTransferObject.class))) + .orElseGet(() -> ResponseEntity.noContent().build()); + } + + /** + * updates a Resettlement request + * + * @param request + * @return + */ + @Override + public ResponseEntity updateResettlementRequest( + ResettlementRequestTransferObject request) { + ResettlementRequestModel requestModel = getBeanMapper().map(request, ResettlementRequestModel.class); + + ResettlementRequestModel updatedModel = getResettlementRequestJpaServiceProvider().updateResettlement(requestModel); + + return ResponseEntity.ok( + getBeanMapper().map(updatedModel, ResettlementRequestTransferObject.class)); + } + + /** + * Return a Resettlement request object + * + * @param requestId + * @return + */ + @Override + public ResponseEntity getResettlementRequest(Long requestId) { + Optional requestModel = getResettlementRequestJpaServiceProvider().getResettlement(requestId); + + return requestModel.map(resettlementRequestModel -> ResponseEntity.ok( + getBeanMapper().map(resettlementRequestModel, ResettlementRequestTransferObject.class))) + .orElseGet(() -> ResponseEntity.noContent().build()); + } + + /** + * gets the State Machine history + * @param requestId + * @return + */ + @Override + public ResponseEntity> getStateMachineHistory( + Long requestId) { + + List> states = getResettlementRequestJpaServiceProvider().getStateMachineHistory( + requestId); + + return ResponseEntity.ok( + getBeanMapper().mapAsList(states, StateMachineTransitionTransferObject.class)); + } + + @Override + public ResponseEntity sendPaymentToSysper(Long requestId) { + + return ResponseEntity.ok(getBeanMapper().map(getResettlementRequestJpaServiceProvider().sendPaymentToSysper(requestId), ResettlementRequestTransferObject.class)); + + } + + /** + * Triggers a state machine event + * + * @param requestId + * @param stateMachineEvent + * @return + */ + @Override + public ResponseEntity stateMachineEvent(Long requestId, + String stateMachineEvent) { + + ResettlementRequestModel requestModel = getResettlementRequestJpaServiceProvider().newStateMachineEvent(stateMachineEvent, + requestId); + return ResponseEntity.ok( + getBeanMapper().map(requestModel, ResettlementRequestTransferObject.class)); + } + + private ResettlementRequestJpaServiceProvider getResettlementRequestJpaServiceProvider() { + ResettlementRequestJpaServiceProvider service = (ResettlementRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + ResettlementRequestModel.class); + return service; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/StatutoryLinkCodesRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/StatutoryLinkCodesRestController.java new file mode 100644 index 0000000..e4a428e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/StatutoryLinkCodesRestController.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.CountriesRestApi; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.StatutoryLinkCodesRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.CityTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StatutoryLinkCodeTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StatutoryLinkCodeTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.StatutoryLinkCodeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.CityModel; + +import eu.europa.eeas.erights.common.service.model.job.StatutoryLinkCodeModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class StatutoryLinkCodesRestController extends AbstractRestController implements StatutoryLinkCodesRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity> getStatutoryLinkCodes() { + StatutoryLinkCodeJpaServiceProvider StatutoryLinkCodeJpaServiceProvider = (StatutoryLinkCodeJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(StatutoryLinkCodeModel.class); + List StatutoryLinkCodes = StatutoryLinkCodeJpaServiceProvider.getAllStatutoryLinkCodes(); + List result = getBeanMapper().mapAsList(StatutoryLinkCodes, StatutoryLinkCodeTransferObject.class); + + return ResponseEntity.ok(result); + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/SysperRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/SysperRestController.java new file mode 100644 index 0000000..7661d8d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/SysperRestController.java @@ -0,0 +1,33 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.TestSYSPERRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.SysperResponseTransferObject; +import eu.europa.eeas.erights.common.service.provider.sysper.SysperServiceProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +/** + * Rest controller to retrieve Abac info about Commitment Positions, Budgdel delegations, etc. + * + * @author idominju + */ +@RestController +public class SysperRestController extends AbstractRestController implements TestSYSPERRestApi { + + @Autowired + private SysperServiceProvider sysperServiceProvider; + + @Override + public ResponseEntity createRightTestSysper(Integer perId, String proxyTicket, String serviceUrl, String testKey) { + SysperResponseTransferObject sysperResponse = sysperServiceProvider.createRightTestSysper(perId, proxyTicket, serviceUrl, testKey); + return ResponseEntity.ok(sysperResponse); + } + + @Override + public ResponseEntity getProxyTicket(String serviceUrl) { + return ResponseEntity.ok(sysperServiceProvider.getProxyTicketTest(serviceUrl)); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/TopUpRequestRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/TopUpRequestRestController.java new file mode 100644 index 0000000..5a5ba0b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/TopUpRequestRestController.java @@ -0,0 +1,114 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.TopupRequestsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestDetailAttachmentTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StateMachineTransitionTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.TopUpRequestTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.RequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.TopUpRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.entitlement.request.DetailAttachmentModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TopUpRequestModel; +import eu.europa.eeas.erights.common.tools.statemachine.TopUpRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.TopUpRequestState; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.stream.Collectors; + +@RestController +public class TopUpRequestRestController extends AbstractRestController implements TopupRequestsRestApi { + + public static final Logger logger = LoggerFactory.getLogger(TopUpRequestRestController.class); + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity createTopUpRequest( TopUpRequestTransferObject request) { + TopUpRequestJpaServiceProvider service = (TopUpRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TopUpRequestModel.class); + TopUpRequestModel model = service.createRequest(getBeanMapper().map(request, TopUpRequestModel.class)); + return ResponseEntity.ok(getBeanMapper().map(model, TopUpRequestTransferObject.class)); + } + + @Override + public ResponseEntity> getStateMachineHistory(Long requestId) { + TopUpRequestJpaServiceProvider service = (TopUpRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(TopUpRequestModel.class); + List> states = service.getStateMachineHistory(requestId); + return ResponseEntity.ok(getBeanMapper().mapAsList(states, StateMachineTransitionTransferObject.class)); + } + + @Override + public ResponseEntity getTopUpRequest(Long requestId) { + TopUpRequestJpaServiceProvider service = (TopUpRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TopUpRequestModel.class); + TopUpRequestModel model = service.getRequest(requestId); + return ResponseEntity.ok(getBeanMapper().map(model, TopUpRequestTransferObject.class)); + } + + @Override + public ResponseEntity stateMachineEvent(Long requestId, String stateMachineEvent) { + + logger.info("TopUpRequest, stateMachineEvent: Request ID {} - stateMachineEvent {}", requestId, stateMachineEvent); + + TopUpRequestJpaServiceProvider service = (TopUpRequestJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(TopUpRequestModel.class); + TopUpRequestModel requestModel = service.newStateMachineEvent(stateMachineEvent, requestId); + + logger.info("TopUpRequest, stateMachineEvent: Request ID {} - Returning OK, state = {}", + requestModel.getId(), requestModel.getState() == null ? "NULL" : requestModel.getState().name()); + + return ResponseEntity.ok(getBeanMapper().map(requestModel, TopUpRequestTransferObject.class)); + } + + @Override + public ResponseEntity updateTopUpRequest(TopUpRequestTransferObject request) { + TopUpRequestJpaServiceProvider service = (TopUpRequestJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(TopUpRequestModel.class); + TopUpRequestModel model = service.updateRequest(getBeanMapper().map(request, TopUpRequestModel.class)); + + logger.info("TopUpRequest, updateTopUpRequest: Returning OK, Request ID {}", model.getId()); + + return ResponseEntity.ok(getBeanMapper().map(model, TopUpRequestTransferObject.class)); + } + + + + + private List getAttachmentFiles(List attachmentTransferObjectList) { + return attachmentTransferObjectList.stream().map(this::getDetailAttachmentModel).collect(Collectors.toList()); + } + + private DetailAttachmentModel getDetailAttachmentModel(RequestDetailAttachmentTransferObject requestDetailAttachmentTransferObject) { + return new DetailAttachmentModel(requestDetailAttachmentTransferObject.getFileUid(), + requestDetailAttachmentTransferObject.getAttachmentType(), + requestDetailAttachmentTransferObject.getFileName()); + } + + + + //@Override + public ResponseEntity deleteTopUpRequest( Long requestId) { + TopUpRequestJpaServiceProvider service = (TopUpRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TopUpRequestModel.class); + TopUpRequestModel model = service.getRequest(requestId); + RequestJpaServiceProvider requestProvider = (RequestJpaServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor( + RequestModel.class); + RequestModel modelRequest = requestProvider.get(requestId); + requestProvider.deleteAttachmentAndDetails(modelRequest.getId()); + requestProvider.deleteRequestByIdNativeQuery(modelRequest.getId()); + + return ResponseEntity.ok(getBeanMapper().map(model, TopUpRequestTransferObject.class)); + } + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/TotalRemRequestRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/TotalRemRequestRestController.java new file mode 100644 index 0000000..f902919 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/TotalRemRequestRestController.java @@ -0,0 +1,56 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.TotalRemRequestsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StateMachineTransitionTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.TotalRemRequestTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.TotalRemRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TotalRemRequestModel; +import eu.europa.eeas.erights.common.tools.statemachine.TotalRemRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.TotalRemRequestState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.List; + +@RestController +public class TotalRemRequestRestController extends AbstractRestController implements TotalRemRequestsRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity> getStateMachineHistory(Long requestId) { + TotalRemRequestJpaServiceProvider service = (TotalRemRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(TotalRemRequestModel.class); + List> states = service.getStateMachineHistory(requestId); + return ResponseEntity.ok(getBeanMapper().mapAsList(states, StateMachineTransitionTransferObject.class)); + } + + @Override + public ResponseEntity getTotalRemRequest(Long requestId) { + TotalRemRequestJpaServiceProvider service = (TotalRemRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TotalRemRequestModel.class); + TotalRemRequestModel model = service.getRequest(requestId); + return ResponseEntity.ok(getBeanMapper().map(model, TotalRemRequestTransferObject.class)); + } + + @Override + public ResponseEntity stateMachineEvent(Long requestId, String stateMachineEvent) { + TotalRemRequestJpaServiceProvider service = (TotalRemRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TotalRemRequestModel.class); + TotalRemRequestModel requestModel = service.newStateMachineEvent(stateMachineEvent, requestId); + return ResponseEntity.ok(getBeanMapper().map(requestModel, TotalRemRequestTransferObject.class)); + } + + @Override + public ResponseEntity updateTotalRemRequest(@Valid TotalRemRequestTransferObject request) { + TotalRemRequestJpaServiceProvider service = (TotalRemRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TotalRemRequestModel.class); + TotalRemRequestModel model = service.updateRequest(getBeanMapper().map(request, TotalRemRequestModel.class)); + return ResponseEntity.ok(getBeanMapper().map(model, TotalRemRequestTransferObject.class)); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/TravelAllowancesRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/TravelAllowancesRestController.java new file mode 100644 index 0000000..7112d21 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/TravelAllowancesRestController.java @@ -0,0 +1,85 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.base.user.User; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.TravelAllowancesRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.TravelAllowanceTransferObject; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.security.PostingAllowanceSecurityChecker; +import eu.europa.eeas.erights.common.service.model.allowances.TravelAllowanceModel; +import eu.europa.eeas.erights.common.service.provider.allowances.TravelAllowanceServiceProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Set; + +import static java.util.Objects.isNull; + +@RestController +public class TravelAllowancesRestController extends AbstractRestController implements TravelAllowancesRestApi { + + + private final TravelAllowanceServiceProvider provider; + @Autowired + @Qualifier(ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER) + private PostingAllowanceSecurityChecker securityChecker; + public TravelAllowancesRestController(TravelAllowanceServiceProvider provider) { + this.provider = provider; + } + + @Override + public ResponseEntity createTravelAllowance(TravelAllowanceTransferObject travelAllowance) { + + TravelAllowanceModel travelAllowanceModel = provider.createTravelAllowance(getBeanMapper().map(travelAllowance, TravelAllowanceModel.class)); + return ResponseEntity.status(HttpStatus.CREATED).body(getBeanMapper().map(travelAllowanceModel,TravelAllowanceTransferObject.class)); + } + + @Override + public ResponseEntity getTravelAllowance(Long travelAllowanceId) { + + + if(securityChecker.canConsult() || + securityChecker.hasOrganisationIndependentListAuthority() || + securityChecker.hasOrganisationsWithListAuthority()){ + + + if (securityChecker.canConsult() || this.securityChecker.hasOrganisationIndependentListAuthority()) { + TravelAllowanceModel travelAllowance = provider.getTravelAllowance(travelAllowanceId); + return ResponseEntity.ok(getBeanMapper().map(travelAllowance, TravelAllowanceTransferObject.class)); + } + Set orgIds = this.securityChecker.getOrganisationsWithListAuthority(); + + TravelAllowanceModel travelAllowance = provider.getTravelAllowanceInOrganisation(travelAllowanceId,orgIds); + if(isNull(travelAllowance)){ + return ResponseEntity.status(HttpStatus.FORBIDDEN).build(); + } + return ResponseEntity.ok(getBeanMapper().map(travelAllowance, TravelAllowanceTransferObject.class)); + } + User currentUser = securityChecker.getCurrentUser(); + + TravelAllowanceModel travelAllowance = provider.getTravelAllowance(travelAllowanceId,currentUser); + + if(isNull(travelAllowance)){ + return ResponseEntity.status(HttpStatus.FORBIDDEN).build(); + } + return ResponseEntity.ok(getBeanMapper().map(travelAllowance, TravelAllowanceTransferObject.class)); + + } + + @Override + public ResponseEntity> getTravelAllowances() { + + List travelAllowanceModels = provider.getTravelAllowances(); + return ResponseEntity.ok(getBeanMapper().mapAsList(travelAllowanceModels, TravelAllowanceTransferObject.class)); + } + + @Override + public ResponseEntity updateTravelAllowance(TravelAllowanceTransferObject travelAllowance) { + TravelAllowanceModel travelAllowanceModel = provider.updateTravelAllowance(getBeanMapper().map(travelAllowance, TravelAllowanceModel.class)); + return ResponseEntity.status(HttpStatus.CREATED).body(getBeanMapper().map(travelAllowanceModel,TravelAllowanceTransferObject.class)); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/TudRequestRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/TudRequestRestController.java new file mode 100644 index 0000000..5dbe25d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/TudRequestRestController.java @@ -0,0 +1,230 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.TudRequestsRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StateMachineTransitionTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.TudRequestTransferObject; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.repository.IataAirportJpaRepository; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementMaxJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementTypeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.TudRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.validation.MovementFileValidator; +import eu.europa.eeas.erights.common.service.model.MovementContextType; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TudRequestModel; +import eu.europa.eeas.erights.common.service.provider.tud.TUDRatesWSServiceProvider; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; +import eu.europa.eeas.erights.common.tools.statemachine.RequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.RequestState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +@RestController +public class TudRequestRestController extends AbstractRestController implements TudRequestsRestApi { + + public static final String ENTIT_MAX_CAT_CODE_ALL = "ALL"; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + private TUDRatesWSServiceProvider tudRatesWSServiceProvider; + + @Autowired + private IataAirportJpaRepository iataAirportJpaRepository; + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_VALIDATOR) + private MovementFileValidator movementFileValidator; + + @Override + public ResponseEntity getTudRequest(Long requestId) { + TudRequestJpaServiceProvider service = (TudRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TudRequestModel.class); + TudRequestModel model = service.getRequest(requestId); + + return ResponseEntity.ok(getBeanMapper().map(model, TudRequestTransferObject.class)); + } + + @Override + public ResponseEntity updateRequest(@Valid TudRequestTransferObject request) { + TudRequestJpaServiceProvider service = (TudRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TudRequestModel.class); + service.updateRequestAndDeclaredPersons(getBeanMapper().map(request, TudRequestModel.class)); + + return ResponseEntity.ok(request); + } + + @Override + public ResponseEntity> getStateMachineHistory(Long requestId) { + TudRequestJpaServiceProvider service = (TudRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(TudRequestModel.class); + + List> states = service.getStateMachineHistory(requestId); + + return ResponseEntity.ok(getBeanMapper().mapAsList(states, StateMachineTransitionTransferObject.class)); + } + + @Override + public ResponseEntity stateMachineEvent(@NotNull @Valid Long requestId, String stateMachineEvent) { + TudRequestJpaServiceProvider service = (TudRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TudRequestModel.class); + RequestModel requestModel = service.newStateMachineEvent(stateMachineEvent, requestId); + return ResponseEntity.ok(getBeanMapper().map(requestModel, TudRequestTransferObject.class)); + } + + @Override + public ResponseEntity updateSpecificEntitlementMaxs(Long movementFileId) { + + MovementFileJpaServiceProvider mfService = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + // Check date in the past + MovementFileModel movFile = mfService.get(movementFileId); + + // Validate date in future + movementFileValidator.validateMovementDateInOneYearFuture(movFile); + // Validate City codes: + movementFileValidator.validateTUDCityCodes(movFile); + + // ======== + + // First, update Entitlements Max Iata Codes if they are null + updateEntitlementsIataCodes(movementFileId); + + EntitlementTypeJpaServiceProvider entitlementTypeService = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(EntitlementTypeModel.class); + + Optional optEntitType = entitlementTypeService.getEntitlementsTypeList(movementFileId).stream().filter( + type -> EntitlementTypeCatCode.TUD.equals(type.getEntitlementTypeCat().getCode())).findFirst(); + + if (!optEntitType.isPresent()) { + // TUD Entit type not found (?) + return ResponseEntity.notFound().build(); + } + + EntitlementTypeModel entitType = optEntitType.get(); + + LocalDate searchFlightDate = tudRatesWSServiceProvider.getFlightDate(movFile); + + // check-this + if (movFile.getFamilyPosting().equals(movFile.getJobToFamilyPosting()) && canCallSkyScanner(movFile)) { + // From-Job and To-Job have the same family posting (true/false) so one request is enough: + // This entit_max has data that is valid for both, but when processing this, we'll take into account that there might be another EntitMax in this TUD. + // movFile. + EntitlementMaxModel entitMax = entitType.getEntitlementMaxList().get(0); + tudRatesWSServiceProvider.registerItineraryRequest( + iataAirportJpaRepository.findById(entitMax.getIataFrom()).getCountryCode(), + entitMax.getIataFrom(), entitMax.getIataTo(), + movementFileId, ENTIT_MAX_CAT_CODE_ALL, entitMax.getId(), true, + searchFlightDate, 1); + } else { + // Two different requests: One for TUD_STAFF_MEMBER and another for TUD_DEPENDENT + entitType.getEntitlementMaxList().forEach(entitMax -> { + + EntitlementMaxCatCode entitMaxCatCode = entitMax.getEntitlementMaxCat().getCode(); + + if (EntitlementMaxCatCode.TUD_STAFF_MEMBER.equals(entitMaxCatCode) + || EntitlementMaxCatCode.TUD_DEPENDENT.equals(entitMaxCatCode) && canCallSkyScanner(movFile)) { + + // Staff member or dependent + tudRatesWSServiceProvider.registerItineraryRequest( + iataAirportJpaRepository.findById(entitMax.getIataFrom()).getCountryCode(), + entitMax.getIataFrom(), entitMax.getIataTo(), + movementFileId, entitMaxCatCode.name(), entitMax.getId(), true, + searchFlightDate, 1); + + } + }); + } + return ResponseEntity.ok().build(); + } + + private boolean canCallSkyScanner(MovementFileModel movFile) { + return !movFile.getMovementContext().getName().equals(MovementContextType.CRISIS.name()); + } + + + private void updateEntitlementsIataCodes(Long movFileId) { + + MovementFileJpaServiceProvider mfService = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + EntitlementMaxJpaServiceProvider entMaxService = (EntitlementMaxJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + EntitlementMaxModel.class); + EntitlementTypeJpaServiceProvider entTypeService = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + EntitlementTypeModel.class); + + List entMaxs; + // Get entit Maxs for the MF: + entMaxs = new ArrayList<>(); + List entTypes = entTypeService.getEntitlementsTypeList(movFileId); + entTypes.forEach(entType -> { + if (EntitlementTypeCatCode.TUD.equals(entType.getEntitlementTypeCat().getCode())) { + entType.getEntitlementMaxList().forEach(entMax -> { + if (entMax.getIataFrom() == null || entMax.getIataTo() == null) { + entMaxs.add(entMax); + } + }); + } + }); + + for (EntitlementMaxModel entMaxItem: entMaxs) { + + EntitlementMaxModel entMax = entMaxService.read(entMaxItem.getId()); + + EntitlementTypeModel entType = entMax.getEntitlementType(); + MovementFileModel movFile = mfService.get( entType.getMovementFileId() ); + // ====== If it's a TUD, set iata_from, iata_to following the logic of family posting: + if (EntitlementMaxCatCode.TUD_STAFF_MEMBER.equals(entMax.getEntitlementMaxCat().getCode())) { + // For the staff member, directly assign with city_from, city_to (mapped) + if (movFile.getCityFrom() != null && movFile.getCityFrom().getCode() != null) { + entMax.setIataFrom( tudRatesWSServiceProvider.iataCodeFromCityCode(movFile.getCityFrom().getCode()) ); + } + if (movFile.getCityTo() != null && movFile.getCityTo().getCode() != null) { + entMax.setIataTo(tudRatesWSServiceProvider.iataCodeFromCityCode(movFile.getCityTo().getCode())); + } + // Save it: + entMaxService.update(entMax); + + } else if (EntitlementMaxCatCode.TUD_DEPENDENT.equals(entMax.getEntitlementMaxCat().getCode())) { + + // Skip if both are non family posting (we are in TUD_DEPENDENT) + if (!movFile.getFamilyPosting().booleanValue() && !movFile.getJobToFamilyPosting().booleanValue()) { + continue; + } + + String familyIataFrom = movFile.getFamilyPosting().booleanValue() ? + tudRatesWSServiceProvider.iataCodeFromCityCode( movFile.getCityFrom().getCode() ) + : movFile.getIataCode(); + entMax.setIataFrom(familyIataFrom); + + String familyIataTo = movFile.getJobToFamilyPosting().booleanValue() ? + tudRatesWSServiceProvider.iataCodeFromCityCode( movFile.getCityTo().getCode() ) + : movFile.getIataCode(); + entMax.setIataTo(familyIataTo); + // Save it: + entMaxService.update(entMax); + } + // ====== End of TUD iata settings + } + + } + + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/UserPreferencesRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/UserPreferencesRestController.java new file mode 100644 index 0000000..6e2d99b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/controller/internal/UserPreferencesRestController.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.common.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.api.internal.UserPreferencesRestApi; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.UserPreferenceTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.UserPreferenceJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.UserPreferenceModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class UserPreferencesRestController extends AbstractRestController implements UserPreferencesRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity getUserPreferences(String pagePath) { + UserPreferenceJpaServiceProvider service = (UserPreferenceJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + UserPreferenceModel.class); + UserPreferenceModel result = service.getByPagePath(pagePath); + UserPreferenceTransferObject transferObject = getBeanMapper().map(result, UserPreferenceTransferObject.class); + + return ResponseEntity.ok(transferObject); + } + + @Override + public ResponseEntity saveUserPreference(UserPreferenceTransferObject userPreference) { + Long result = null; + + UserPreferenceJpaServiceProvider service = (UserPreferenceJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + UserPreferenceModel.class); + UserPreferenceModel userPreferenceModel = service.save(getBeanMapper().map(userPreference, UserPreferenceModel.class)); + result = userPreferenceModel.getPerId(); + + return ResponseEntity.ok(result); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/AppParametersTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/AppParametersTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..280531a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/AppParametersTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.AppParameterTransferObject; +import eu.europa.eeas.erights.common.service.model.AppParameterModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class AppParametersTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(AppParameterTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(AppParameterModel.class); + + public AppParametersTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/CityTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/CityTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..cabb343 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/CityTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.CityTransferObject; +import eu.europa.eeas.erights.common.service.model.CityModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class CityTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(CityTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(CityModel.class); + + public CityTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/CountryTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/CountryTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..8c847ea --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/CountryTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.CountryTransferObject; +import eu.europa.eeas.erights.common.service.model.CountryModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class CountryTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(CountryTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(CountryModel.class); + + public CountryTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/ExchangeRateTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/ExchangeRateTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..2732f71 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/ExchangeRateTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.ExchangeRateTransferObject; +import eu.europa.eeas.erights.common.service.model.ExchangeRateModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class ExchangeRateTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(ExchangeRateTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(ExchangeRateModel.class); + + public ExchangeRateTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/HrsDocumentTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/HrsDocumentTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..e307f8a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/HrsDocumentTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.HrsDocumentTransferObject; +import eu.europa.eeas.erights.common.service.model.HrsDocumentModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class HrsDocumentTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(HrsDocumentTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(HrsDocumentModel.class); + + public HrsDocumentTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/IataAirportTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/IataAirportTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..049a698 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/IataAirportTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.IataAirportTransferObject; +import eu.europa.eeas.erights.common.service.model.IataAirportModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class IataAirportTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(IataAirportTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(IataAirportModel.class); + + public IataAirportTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/MovementContextTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/MovementContextTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..44f06d5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/MovementContextTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementContextTransferObject; +import eu.europa.eeas.erights.common.service.model.MovementContextModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author imironiu + */ +public class MovementContextTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(MovementContextTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(MovementContextModel.class); + + public MovementContextTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/MovementFileTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/MovementFileTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..2f9ec9f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/MovementFileTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementFileTransferObject; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author imironiu + */ +public class MovementFileTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(MovementFileTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(MovementFileModel.class); + + public MovementFileTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/MovementTypeTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/MovementTypeTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..2a11666 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/MovementTypeTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementTypeTransferObject; +import eu.europa.eeas.erights.common.service.model.MovementTypeModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class MovementTypeTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(MovementTypeTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(MovementTypeModel.class); + + public MovementTypeTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/NotificationTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/NotificationTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..1990f87 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/NotificationTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.NotificationTransferObject; +import eu.europa.eeas.erights.common.service.model.notification.NotificationMFModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class NotificationTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(NotificationTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(NotificationMFModel.class); + + public NotificationTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/PermissionsTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/PermissionsTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..5c2baea --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/PermissionsTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PermissionsTransferObject; +import eu.europa.eeas.erights.common.service.model.PermissionsModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PermissionsTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(PermissionsTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(PermissionsModel.class); + + public PermissionsTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/PersonAddressTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/PersonAddressTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..9d1f063 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/PersonAddressTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PersonAddressTransferObject; +import eu.europa.eeas.erights.common.service.model.PersonAddressModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PersonAddressTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(PersonAddressTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(PersonAddressModel.class); + + public PersonAddressTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/PersonEmailTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/PersonEmailTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..b0457ab --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/PersonEmailTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PersonEmailTransferObject; +import eu.europa.eeas.erights.common.service.model.PersonEmailModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PersonEmailTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(PersonEmailTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(PersonEmailModel.class); + + public PersonEmailTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/PersonTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/PersonTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..653d023 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/PersonTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PersonTransferObject; +import eu.europa.eeas.erights.common.service.model.PersonModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PersonTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(PersonTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(PersonModel.class); + + public PersonTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/PostingAllowancePermissionsTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/PostingAllowancePermissionsTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..9b0fb7b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/PostingAllowancePermissionsTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PostingAllowancePermissionsTransferObject; +import eu.europa.eeas.erights.common.service.model.PostingAllowancePermissionModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PostingAllowancePermissionsTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(PostingAllowancePermissionsTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(PostingAllowancePermissionModel.class); + + public PostingAllowancePermissionsTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/StateMachineTransitionTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/StateMachineTransitionTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..ee1289f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/StateMachineTransitionTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.StateMachineTransitionTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StateMachineTransitionTransferObject; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author tapiafo + */ +public class StateMachineTransitionTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(StateMachineTransitionTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(StateMachineTransitionModel.class); + + public StateMachineTransitionTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault() + .customize(new StateMachineTransitionTransferObjectToModelCustomMapper()); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/UserPreferenceTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/UserPreferenceTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..bfec446 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/UserPreferenceTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.UserPreferenceTransferObject; +import eu.europa.eeas.erights.common.service.model.UserPreferenceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class UserPreferenceTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(UserPreferenceTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(UserPreferenceModel.class); + + public UserPreferenceTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VAllowanceTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VAllowanceTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..ba25197 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VAllowanceTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.VAllowanceTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VAllowancesTransferObject; +import eu.europa.eeas.erights.common.service.model.VAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VAllowanceTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(VAllowancesTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(VAllowanceModel.class); + + public VAllowanceTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault() + .customize(new VAllowanceTransferObjectToModelCustomMapper()); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VAssignmentHistEeasTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VAssignmentHistEeasTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..dc12479 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VAssignmentHistEeasTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VAssignmentHistEeasTransferObject; +import eu.europa.eeas.erights.common.service.model.ws.VAssignmentHistEeasModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VAssignmentHistEeasTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(VAssignmentHistEeasTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(VAssignmentHistEeasModel.class); + + public VAssignmentHistEeasTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VAssignmentHistTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VAssignmentHistTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..14a9ebf --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VAssignmentHistTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VAssignmentHistTransferObject; +import eu.europa.eeas.erights.common.service.model.VAssignmentHistModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VAssignmentHistTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(VAssignmentHistTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(VAssignmentHistModel.class); + + public VAssignmentHistTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VJobTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VJobTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..0481f6e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VJobTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VJobTransferObject; +import eu.europa.eeas.erights.common.service.model.VJobModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VJobTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(VJobTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(VJobModel.class); + + public VJobTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VPersonTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VPersonTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..4cfaba3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VPersonTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VPersonTransferObject; +import eu.europa.eeas.erights.common.service.model.VPersonModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VPersonTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(VPersonTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(VPersonModel.class); + + public VPersonTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VReportMovementFileTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VReportMovementFileTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..28ed786 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/VReportMovementFileTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.VReportMovementFileTransferObjectToModelCustomBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VReportMovementFileTransferObject; +import eu.europa.eeas.erights.common.service.model.VReportMovementFileModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VReportMovementFileTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(VReportMovementFileTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(VReportMovementFileModel.class); + + public VReportMovementFileTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault().customize(new VReportMovementFileTransferObjectToModelCustomBuilder()); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/AccommodationDeclarationAllowanceTransferObjectToModelClassBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/AccommodationDeclarationAllowanceTransferObjectToModelClassBuilder.java new file mode 100644 index 0000000..51e15c6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/AccommodationDeclarationAllowanceTransferObjectToModelClassBuilder.java @@ -0,0 +1,43 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.allowances; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.AccommodationDeclarationAllowanceTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.AccommodationDeclarationAllowanceTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationDeclarationAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class AccommodationDeclarationAllowanceTransferObjectToModelClassBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf( + AccommodationDeclarationAllowanceTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf( + AccommodationDeclarationAllowanceModel.class); + + public AccommodationDeclarationAllowanceTransferObjectToModelClassBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap( + ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new AccommodationDeclarationAllowanceTransferObjectToModelCustomMapper()); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/AccommodationDeclarationPersonTransferObjectToModelClassBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/AccommodationDeclarationPersonTransferObjectToModelClassBuilder.java new file mode 100644 index 0000000..8d618cf --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/AccommodationDeclarationPersonTransferObjectToModelClassBuilder.java @@ -0,0 +1,43 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.allowances; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.AccommodationDeclarationPersonTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.AccommodationDeclarationPersonTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationDeclarationPersonModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class AccommodationDeclarationPersonTransferObjectToModelClassBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf( + AccommodationDeclarationPersonTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf( + AccommodationDeclarationPersonModel.class); + + public AccommodationDeclarationPersonTransferObjectToModelClassBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap( + ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new AccommodationDeclarationPersonTransferObjectToModelCustomMapper()); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/AccommodationPaymentAllowanceTransferObjectToModelClassBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/AccommodationPaymentAllowanceTransferObjectToModelClassBuilder.java new file mode 100644 index 0000000..e56ae75 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/AccommodationPaymentAllowanceTransferObjectToModelClassBuilder.java @@ -0,0 +1,43 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.allowances; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.AccommodationPaymentAllowanceTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.AccommodationPaymentAllowanceTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationPaymentAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class AccommodationPaymentAllowanceTransferObjectToModelClassBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf( + AccommodationPaymentAllowanceTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf( + AccommodationPaymentAllowanceModel.class); + + public AccommodationPaymentAllowanceTransferObjectToModelClassBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap( + ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new AccommodationPaymentAllowanceTransferObjectToModelCustomMapper()); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/AccommodationPaymentCalculationResponseTransferObjectToModelClassBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/AccommodationPaymentCalculationResponseTransferObjectToModelClassBuilder.java new file mode 100644 index 0000000..2c09b7c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/AccommodationPaymentCalculationResponseTransferObjectToModelClassBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.allowances; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.AccommodationPaymentCalculationResponseTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationPaymentCalculationResponseModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class AccommodationPaymentCalculationResponseTransferObjectToModelClassBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(AccommodationPaymentCalculationResponseTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(AccommodationPaymentCalculationResponseModel.class); + + public AccommodationPaymentCalculationResponseTransferObjectToModelClassBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/AllowancePersonTransferObjectToModelClassBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/AllowancePersonTransferObjectToModelClassBuilder.java new file mode 100644 index 0000000..afe5804 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/AllowancePersonTransferObjectToModelClassBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.allowances; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.AllowancePersonTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowancePersonModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class AllowancePersonTransferObjectToModelClassBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(AllowancePersonTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(PostingAllowancePersonModel.class); + + public AllowancePersonTransferObjectToModelClassBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceAmountsTransferObjectToModelClassBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceAmountsTransferObjectToModelClassBuilder.java new file mode 100644 index 0000000..0be96b8 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceAmountsTransferObjectToModelClassBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.allowances; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PostingAllowanceAmountsTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceAmountsModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PostingAllowanceAmountsTransferObjectToModelClassBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(PostingAllowanceAmountsTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(PostingAllowanceAmountsModel.class); + + public PostingAllowanceAmountsTransferObjectToModelClassBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceBatchEventResponseTransferObjectToModelClassBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceBatchEventResponseTransferObjectToModelClassBuilder.java new file mode 100644 index 0000000..0b26299 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceBatchEventResponseTransferObjectToModelClassBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.allowances; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PostingAllowanceBatchEventResponseTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceBatchEventResponseModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PostingAllowanceBatchEventResponseTransferObjectToModelClassBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(PostingAllowanceBatchEventResponseTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(PostingAllowanceBatchEventResponseModel.class); + + public PostingAllowanceBatchEventResponseTransferObjectToModelClassBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceBatchEventTransferObjectToModelClassBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceBatchEventTransferObjectToModelClassBuilder.java new file mode 100644 index 0000000..a6b5a35 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceBatchEventTransferObjectToModelClassBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.allowances; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PostingAllowanceBatchEventTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceBatchEventModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PostingAllowanceBatchEventTransferObjectToModelClassBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(PostingAllowanceBatchEventTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(PostingAllowanceBatchEventModel.class); + + public PostingAllowanceBatchEventTransferObjectToModelClassBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceSupportingDocAttachmentTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceSupportingDocAttachmentTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..d958735 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceSupportingDocAttachmentTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,45 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.allowances; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.PostingAllowanceSupportingDocAttachmentTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PostingAllowanceSupportingDocAttachmentTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceSupportingDocAttachmentModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class PostingAllowanceSupportingDocAttachmentTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf( + PostingAllowanceSupportingDocAttachmentTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf( + PostingAllowanceSupportingDocAttachmentModel.class); + + public PostingAllowanceSupportingDocAttachmentTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap( + ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new PostingAllowanceSupportingDocAttachmentTransferObjectToModelCustomMapper()); + + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceSupportingDocTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceSupportingDocTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..8f5426d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceSupportingDocTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,44 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.allowances; + + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.PostingAllowanceSupportingDocTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PostingAllowanceSupportingDocTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceSupportingDocModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class PostingAllowanceSupportingDocTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf( + PostingAllowanceSupportingDocTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(PostingAllowanceSupportingDocModel.class); + + public PostingAllowanceSupportingDocTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap( + ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new PostingAllowanceSupportingDocTransferObjectToModelCustomMapper()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceTransferObjectToModelClassBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceTransferObjectToModelClassBuilder.java new file mode 100644 index 0000000..08c8014 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/PostingAllowanceTransferObjectToModelClassBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.allowances; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PostingAllowanceTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PostingAllowanceTransferObjectToModelClassBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(PostingAllowanceTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(PostingAllowanceModel.class); + + public PostingAllowanceTransferObjectToModelClassBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/RegularizationAllowanceTransferObjectToModelClassBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/RegularizationAllowanceTransferObjectToModelClassBuilder.java new file mode 100644 index 0000000..caf62b8 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/RegularizationAllowanceTransferObjectToModelClassBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.allowances; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RegularizationAllowanceTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.RegularizationAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class RegularizationAllowanceTransferObjectToModelClassBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(RegularizationAllowanceTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(RegularizationAllowanceModel.class); + + public RegularizationAllowanceTransferObjectToModelClassBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/TravelAllowanceTransferObjectToModelClassBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/TravelAllowanceTransferObjectToModelClassBuilder.java new file mode 100644 index 0000000..fb3095f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/TravelAllowanceTransferObjectToModelClassBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.allowances; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.TravelAllowanceTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.TravelAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class TravelAllowanceTransferObjectToModelClassBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(TravelAllowanceTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(TravelAllowanceModel.class); + + public TravelAllowanceTransferObjectToModelClassBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/VReportPostingAllowanceTransferObjectToModelClassBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/VReportPostingAllowanceTransferObjectToModelClassBuilder.java new file mode 100644 index 0000000..45524ef --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/VReportPostingAllowanceTransferObjectToModelClassBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.allowances; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.AdvanceRequestTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VReportPostingAllowanceTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.VReportPostingAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VReportPostingAllowanceTransferObjectToModelClassBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(VReportPostingAllowanceTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(VReportPostingAllowanceModel.class); + + public VReportPostingAllowanceTransferObjectToModelClassBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new VReportPostingAllowanceTransferObjectToModelCustomBuilder()); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/VReportPostingAllowanceTransferObjectToModelCustomBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/VReportPostingAllowanceTransferObjectToModelCustomBuilder.java new file mode 100644 index 0000000..7a5eb62 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/allowances/VReportPostingAllowanceTransferObjectToModelCustomBuilder.java @@ -0,0 +1,16 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.allowances; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VReportPostingAllowanceTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.VReportPostingAllowanceModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class VReportPostingAllowanceTransferObjectToModelCustomBuilder extends CustomMapper { + + @Override + public void mapBtoA(VReportPostingAllowanceModel model, VReportPostingAllowanceTransferObject transferObject, MappingContext context) { + transferObject.setDualPosting(model.getDualPosting()==null? " " : model.getDualPosting()); + transferObject.setAssignmentAirportName(model.getAssignmentAirportName()==null? " " : model.getAssignmentAirportName()); + transferObject.setOriginAirportName(model.getOriginAirportName()==null? " " : model.getOriginAirportName()); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/comments/CommentTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/comments/CommentTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..a816513 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/comments/CommentTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.comments; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.CommentTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.CommentTransferObject; +import eu.europa.eeas.erights.common.service.model.comments.CommentModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class CommentTransferObjectToModelClassMapBuilder +extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(CommentTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(CommentModel.class); + + public CommentTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new CommentTransferObjectToModelCustomMapper()); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/DeclarationPersonAttachmentTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/DeclarationPersonAttachmentTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..5a28593 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/DeclarationPersonAttachmentTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.declaration; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.DeclarationPersonAttachmentTransferObject; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationPersonAttachmentModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class DeclarationPersonAttachmentTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(DeclarationPersonAttachmentTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(DeclarationPersonAttachmentModel.class); + + public DeclarationPersonAttachmentTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/DeclarationPersonTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/DeclarationPersonTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..8e3782e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/DeclarationPersonTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.declaration; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.DeclarationPersonTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.DeclarationPersonTransferObject; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationPersonModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class DeclarationPersonTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(DeclarationPersonTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(DeclarationPersonModel.class); + + public DeclarationPersonTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new DeclarationPersonTransferObjectToModelCustomMapper()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/DeclarationTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/DeclarationTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..a3d569c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/DeclarationTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.declaration; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.DeclarationTransferObject; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class DeclarationTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(DeclarationTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(DeclarationModel.class); + + public DeclarationTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/FamilyMemberTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/FamilyMemberTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..89d46de --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/FamilyMemberTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.declaration; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.FamilyMemberTransferObject; +import eu.europa.eeas.erights.common.service.model.declaration.FamilyMemberModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class FamilyMemberTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(FamilyMemberTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(FamilyMemberModel.class); + + public FamilyMemberTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/MVPersonAccommodationTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/MVPersonAccommodationTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..152721c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/MVPersonAccommodationTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.declaration; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MVPersonAccommodationTransferObject; + +import eu.europa.eeas.erights.common.service.model.declaration.MVPersonAccommodationModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class MVPersonAccommodationTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(MVPersonAccommodationTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(MVPersonAccommodationModel.class); + + public MVPersonAccommodationTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/PersonBankInfoTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/PersonBankInfoTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..b2667d5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/declaration/PersonBankInfoTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.declaration; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PersonBankInfoTransferObject; +import eu.europa.eeas.erights.common.service.model.declaration.PersonBankInfoModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PersonBankInfoTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(PersonBankInfoTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(PersonBankInfoModel.class); + + public PersonBankInfoTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/document/MovementDocAttachmentTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/document/MovementDocAttachmentTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..7dabdfe --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/document/MovementDocAttachmentTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.document; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.MovementDocAttachmentTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementDocAttachmentTransferObject; +import eu.europa.eeas.erights.common.service.model.document.MovementDocAttachmentModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class MovementDocAttachmentTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(MovementDocAttachmentTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(MovementDocAttachmentModel.class); + + public MovementDocAttachmentTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new MovementDocAttachmentTransferObjectToModelCustomMapper()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/document/MovementDocSectionTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/document/MovementDocSectionTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..ebb585e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/document/MovementDocSectionTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.document; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementDocSectionTransferObject; +import eu.europa.eeas.erights.common.service.model.document.MovementDocSectionModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class MovementDocSectionTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(MovementDocSectionTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(MovementDocSectionModel.class); + + public MovementDocSectionTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/document/MovementDocTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/document/MovementDocTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..82a44dd --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/document/MovementDocTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.document; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.MovementDocTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementDocTransferObject; +import eu.europa.eeas.erights.common.service.model.document.MovementDocModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class MovementDocTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(MovementDocTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(MovementDocModel.class); + + public MovementDocTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new MovementDocTransferObjectToModelCustomMapper()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementMaxCatTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementMaxCatTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..c0e0c33 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementMaxCatTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.EntitlementMaxCatTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxCatModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class EntitlementMaxCatTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(EntitlementMaxCatTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(EntitlementMaxCatModel.class); + + public EntitlementMaxCatTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementMaxOptionTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementMaxOptionTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..57b9ebd --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementMaxOptionTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.EntitlementMaxOptionTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxOptionModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class EntitlementMaxOptionTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(EntitlementMaxOptionTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(EntitlementMaxOptionModel.class); + + public EntitlementMaxOptionTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementMaxTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementMaxTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..9ceda17 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementMaxTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.EntitlementMaxTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.EntitlementMaxTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class EntitlementMaxTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(EntitlementMaxTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(EntitlementMaxModel.class); + + public EntitlementMaxTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new EntitlementMaxTransferObjectToModelCustomMapper()); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementTypeCatTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementTypeCatTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..04b8179 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementTypeCatTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.EntitlementTypeCatTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeCatModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class EntitlementTypeCatTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(EntitlementTypeCatTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(EntitlementTypeCatModel.class); + + public EntitlementTypeCatTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementTypeDefaultTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementTypeDefaultTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..78a64d8 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementTypeDefaultTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.EntitlementTypeDefaultTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeDefaultModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class EntitlementTypeDefaultTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(EntitlementTypeDefaultTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(EntitlementTypeDefaultModel.class); + + public EntitlementTypeDefaultTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementTypeTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementTypeTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..b80d060 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/EntitlementTypeTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.EntitlementTypeTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class EntitlementTypeTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(EntitlementTypeTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(EntitlementTypeModel.class); + + public EntitlementTypeTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/VEmptyRateEntitlementTypeTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/VEmptyRateEntitlementTypeTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..4430322 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/VEmptyRateEntitlementTypeTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VEmptyRateEntitlementTypeTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.VEmptyRateEntitlementTypeModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VEmptyRateEntitlementTypeTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(VEmptyRateEntitlementTypeTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(VEmptyRateEntitlementTypeModel.class); + + public VEmptyRateEntitlementTypeTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/AdvanceRequestTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/AdvanceRequestTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..b3f509b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/AdvanceRequestTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.AdvanceRequestTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.AdvanceRequestTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.AdvanceRequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class AdvanceRequestTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(AdvanceRequestTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(AdvanceRequestModel.class); + + public AdvanceRequestTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new AdvanceRequestTransferObjectToModelCustomMapper()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/ClearingRequestTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/ClearingRequestTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..c432935 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/ClearingRequestTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.ClearingRequestTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.ClearingRequestTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.ClearingRequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class ClearingRequestTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(ClearingRequestTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(ClearingRequestModel.class); + + public ClearingRequestTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new ClearingRequestTransferObjectToModelCustomMapper()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/InstallationPersonAddressTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/InstallationPersonAddressTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..d59e055 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/InstallationPersonAddressTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.InstallationPersonAddressTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.InstallationPersonAddressModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class InstallationPersonAddressTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(InstallationPersonAddressTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(InstallationPersonAddressModel.class); + + public InstallationPersonAddressTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/InstallationRequestTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/InstallationRequestTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..046c911 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/InstallationRequestTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.InstallationRequestTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.InstallationRequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class InstallationRequestTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(InstallationRequestTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(InstallationRequestModel.class); + + public InstallationRequestTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/PersonIndemnityTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/PersonIndemnityTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..d1db1ec --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/PersonIndemnityTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PersonIndemnityTransferObject; +import eu.europa.eeas.erights.common.service.model.PersonIndemnityModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PersonIndemnityTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(PersonIndemnityTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(PersonIndemnityModel.class); + + public PersonIndemnityTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestDetailAttachmentTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestDetailAttachmentTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..278afd9 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestDetailAttachmentTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.RequestDetailAttachmentTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestDetailAttachmentTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestDetailAttachmentModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class RequestDetailAttachmentTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(RequestDetailAttachmentTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(RequestDetailAttachmentModel.class); + + public RequestDetailAttachmentTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new RequestDetailAttachmentTransferObjectToModelCustomMapper()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestDetailTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestDetailTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..a55efa6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestDetailTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.RequestDetailTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestDetailTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestDetailModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class RequestDetailTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(RequestDetailTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(RequestDetailModel.class); + + public RequestDetailTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new RequestDetailTransferObjectToModelCustomMapper()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestIndemnityTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestIndemnityTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..94326d7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestIndemnityTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestIndemnityTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.RequestIndemnityModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class RequestIndemnityTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(RequestIndemnityTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(RequestIndemnityModel.class); + + public RequestIndemnityTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestPersonAttachmentTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestPersonAttachmentTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..17daf76 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestPersonAttachmentTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestPersonAttachmentTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestPersonAttachmentModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class RequestPersonAttachmentTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(RequestPersonAttachmentTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(RequestPersonAttachmentModel.class); + + public RequestPersonAttachmentTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestPersonTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestPersonTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..fdfcba0 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestPersonTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.RequestPersonTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestPersonTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestPersonModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class RequestPersonTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(RequestPersonTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(RequestPersonModel.class); + + public RequestPersonTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new RequestPersonTransferObjectToModelCustomMapper()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestSupportingDocAttachmentTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestSupportingDocAttachmentTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..d482e5d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestSupportingDocAttachmentTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,42 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.RequestSupportingDocAttachmentTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestSupportingDocAttachmentTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestSupportingDocAttachmentModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class RequestSupportingDocAttachmentTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(RequestSupportingDocAttachmentTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(RequestSupportingDocAttachmentModel.class); + + public RequestSupportingDocAttachmentTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new RequestSupportingDocAttachmentTransferObjectToModelCustomMapper()); + + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestSupportingDocTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestSupportingDocTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..f7ad2ea --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestSupportingDocTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.RequestSupportingDocTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestSupportingDocTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestSupportingDocModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class RequestSupportingDocTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(RequestSupportingDocTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(RequestSupportingDocModel.class); + + public RequestSupportingDocTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new RequestSupportingDocTransferObjectToModelCustomMapper()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..adea37d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/RequestTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.RequestTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class RequestTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(RequestTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(RequestModel.class); + + public RequestTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new RequestTransferObjectToModelCustomMapper()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/ResettlementRequestTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/ResettlementRequestTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..e20b5c3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/ResettlementRequestTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,44 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.ResettlementRequestTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.ResettlementRequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class ResettlementRequestTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf( + ResettlementRequestTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf( + ResettlementRequestModel.class); + + public ResettlementRequestTransferObjectToModelClassMapBuilder( + ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap( + ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/TopUpRequestTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/TopUpRequestTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..ec27ce7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/TopUpRequestTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.TopUpRequestTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.TopUpRequestTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TopUpRequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class TopUpRequestTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(TopUpRequestTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(TopUpRequestModel.class); + + public TopUpRequestTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new TopUpRequestTransferObjectToModelCustomMapper()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/TotalRemRequestTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/TotalRemRequestTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..283235e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/TotalRemRequestTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.TotalRemRequestTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.TotalRemRequestTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TotalRemRequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class TotalRemRequestTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(TotalRemRequestTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(TotalRemRequestModel.class); + + public TotalRemRequestTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new TotalRemRequestTransferObjectToModelCustomMapper()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/TudRequestTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/TudRequestTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..7e1df16 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/entitlement/request/TudRequestTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.TudRequestTransferObjectToModelCustomMapper; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.TudRequestTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TudRequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class TudRequestTransferObjectToModelClassMapBuilder extends + AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(TudRequestTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(TudRequestModel.class); + + public TudRequestTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new TudRequestTransferObjectToModelCustomMapper()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/job/FunctionCodeTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/job/FunctionCodeTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..f94f13d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/job/FunctionCodeTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.job; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.FunctionCodeTransferObject; +import eu.europa.eeas.erights.common.service.model.job.FunctionCodeModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class FunctionCodeTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(FunctionCodeTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(FunctionCodeModel.class); + + public FunctionCodeTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/job/InstitutionCodeTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/job/InstitutionCodeTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..07ba138 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/job/InstitutionCodeTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.job; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.InstitutionCodeTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.InstitutionCodeTransferObject; +import eu.europa.eeas.erights.common.service.model.job.InstitutionCodeModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class InstitutionCodeTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(InstitutionCodeTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(InstitutionCodeModel.class); + + public InstitutionCodeTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/job/PersonnelTypeTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/job/PersonnelTypeTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..04a97a3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/job/PersonnelTypeTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.job; + + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PersonnelTypeTransferObject; +import eu.europa.eeas.erights.common.service.model.job.PersonnelTypeModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PersonnelTypeTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(PersonnelTypeTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(PersonnelTypeModel.class); + + public PersonnelTypeTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/job/StatutoryLinkCodeTransferObjectToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/job/StatutoryLinkCodeTransferObjectToModelClassMapBuilder.java new file mode 100644 index 0000000..b3dc67c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/classmapbuilder/job/StatutoryLinkCodeTransferObjectToModelClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder.job; + +import eu.europa.eeas.ananke.core.api.provider.http.mapping.bean.AbstractTransferObjectToModelClassMapBuilder; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StatutoryLinkCodeTransferObject; +import eu.europa.eeas.erights.common.service.model.job.StatutoryLinkCodeModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class StatutoryLinkCodeTransferObjectToModelClassMapBuilder extends AbstractTransferObjectToModelClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(StatutoryLinkCodeTransferObject.class); + + private static final Type B_TYPE = TypeFactory.valueOf(StatutoryLinkCodeModel.class); + + public StatutoryLinkCodeTransferObjectToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/AccommodationDeclarationAllowanceTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/AccommodationDeclarationAllowanceTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..cc0d47f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/AccommodationDeclarationAllowanceTransferObjectToModelCustomMapper.java @@ -0,0 +1,33 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import static eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.AuditHelper.getClearActor; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.AccommodationDeclarationAllowanceTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationDeclarationAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationDeclarationPersonModel; +import java.util.List; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +/** + * @author ienaccat + */ +public class AccommodationDeclarationAllowanceTransferObjectToModelCustomMapper extends + CustomMapper { + + @Override + public void mapBtoA(AccommodationDeclarationAllowanceModel model, AccommodationDeclarationAllowanceTransferObject transferObject, + MappingContext context) { + + transferObject.setUpdatingActor( + getClearActor(transferObject, transferObject.getUpdatingActor())); + transferObject.setCreationActor( + getClearActor(transferObject, transferObject.getCreationActor())); + } + + @Override + public void mapAtoB(AccommodationDeclarationAllowanceTransferObject transferObject, AccommodationDeclarationAllowanceModel model, + MappingContext context) { + List list = model.getFamilyMembers(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/AccommodationDeclarationPersonTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/AccommodationDeclarationPersonTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..0dbf092 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/AccommodationDeclarationPersonTransferObjectToModelCustomMapper.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import static eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.AuditHelper.getClearActor; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.AccommodationDeclarationPersonTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationDeclarationAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationDeclarationPersonModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +/** + * @author ienaccat + */ +public class AccommodationDeclarationPersonTransferObjectToModelCustomMapper extends + CustomMapper { + + @Override + public void mapBtoA(AccommodationDeclarationPersonModel model, AccommodationDeclarationPersonTransferObject transferObject, + MappingContext context) { + transferObject.setAccommodationDeclarationId(model.getAccommodationDeclaration().getId()); + + transferObject.setUpdatingActor( + getClearActor(transferObject, transferObject.getUpdatingActor())); + transferObject.setCreationActor( + getClearActor(transferObject, transferObject.getCreationActor())); + } + + @Override + public void mapAtoB(AccommodationDeclarationPersonTransferObject transferObject, AccommodationDeclarationPersonModel model, + MappingContext context) { + AccommodationDeclarationAllowanceModel accommodationDeclaration = new AccommodationDeclarationAllowanceModel(); + accommodationDeclaration.setId(transferObject.getAccommodationDeclarationId()); + model.setAccommodationDeclaration(accommodationDeclaration); + + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/AccommodationPaymentAllowanceTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/AccommodationPaymentAllowanceTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..9807e45 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/AccommodationPaymentAllowanceTransferObjectToModelCustomMapper.java @@ -0,0 +1,26 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import static eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.AuditHelper.getClearActor; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.AccommodationPaymentAllowanceTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationPaymentAllowanceModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +/** + * @author ienaccat + */ +public class AccommodationPaymentAllowanceTransferObjectToModelCustomMapper extends + CustomMapper { + + @Override + public void mapBtoA(AccommodationPaymentAllowanceModel model, AccommodationPaymentAllowanceTransferObject transferObject, + MappingContext context) { + + transferObject.setUpdatingActor( + getClearActor(transferObject, transferObject.getUpdatingActor())); + transferObject.setCreationActor( + getClearActor(transferObject, transferObject.getCreationActor())); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/AdvanceRequestTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/AdvanceRequestTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..66e2b4f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/AdvanceRequestTransferObjectToModelCustomMapper.java @@ -0,0 +1,28 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.AdvanceRequestTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.AdvanceRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.ClearingRequestModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +import java.util.Collections; + +public class AdvanceRequestTransferObjectToModelCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(AdvanceRequestTransferObject transferObject, AdvanceRequestModel model, MappingContext context) { + EntitlementTypeModel entitlementType = new EntitlementTypeModel(); + entitlementType.setId(transferObject.getEntitlementTypeId()); + + model.setEntitlementType(entitlementType); + + } + + @Override + public void mapBtoA(AdvanceRequestModel model, AdvanceRequestTransferObject transferObject, MappingContext context) { + transferObject.setEntitlementTypeId(model.getEntitlementType().getId()); + + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/AuditHelper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/AuditHelper.java new file mode 100644 index 0000000..2ec3fbf --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/AuditHelper.java @@ -0,0 +1,16 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; + +public class AuditHelper { + + // TODO RIGD-3544 DeclarationPersonTransferObjectToModelCustomMapper and EntitlementMaxTransferObjectToModelCustomMapper + + public static AuditActor getClearActor(Object transferObject, AuditActor auditActor) { + if (auditActor.getId() == Long.MIN_VALUE) { + return new AuditActor((long) transferObject.hashCode() < 0 ? transferObject.hashCode() + : -(long) transferObject.hashCode(), auditActor.getInstant()); + } + return auditActor; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/ClearingRequestTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/ClearingRequestTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..73c0da5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/ClearingRequestTransferObjectToModelCustomMapper.java @@ -0,0 +1,53 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.ClearingRequestTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestDetailTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.AdvanceRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.ClearingRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestDetailModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +public class ClearingRequestTransferObjectToModelCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(ClearingRequestTransferObject transferObject, ClearingRequestModel model, MappingContext context) { + List requestDetails = model.getRequestDetails(); + List extraRequestDetails = model.getExtraRequestDetails(); + + if (requestDetails == null) { + requestDetails = new ArrayList<>(); + } + if (extraRequestDetails == null) { + extraRequestDetails = new ArrayList<>(); + } + List r = new ArrayList<>(CollectionUtils.union(requestDetails, extraRequestDetails)); + model.setRequestDetails(r); + model.setExtraRequestDetails(null); + if (transferObject.getParentId() != null) { + AdvanceRequestModel parent = new AdvanceRequestModel(); + parent.setId(transferObject.getParentId()); + model.setParent(parent); + } + + + } + + @Override + public void mapBtoA(ClearingRequestModel model, ClearingRequestTransferObject transferObject, MappingContext context) { + List requestDetails = transferObject.getRequestDetails(); + transferObject.setExtraRequestDetails(requestDetails.stream() + .filter(RequestDetailTransferObject::isExtraDetail).collect(Collectors.toList())); + transferObject.setRequestDetails(requestDetails.stream() + .filter(r -> !r.isExtraDetail()).collect(Collectors.toList())); + + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/CommentTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/CommentTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..389480f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/CommentTransferObjectToModelCustomMapper.java @@ -0,0 +1,25 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import static eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.AuditHelper.getClearActor; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.CommentTransferObject; +import eu.europa.eeas.erights.common.service.model.comments.CommentModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +/** + * @author ichabmar + */ +public class CommentTransferObjectToModelCustomMapper extends + CustomMapper { + + @Override + public void mapBtoA(CommentModel model, CommentTransferObject transferObject, + MappingContext context) { + + transferObject.setUpdatingActor( + getClearActor(transferObject, transferObject.getUpdatingActor())); + transferObject.setCreationActor( + getClearActor(transferObject, transferObject.getCreationActor())); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/DeclarationPersonTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/DeclarationPersonTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..d4a50da --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/DeclarationPersonTransferObjectToModelCustomMapper.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.DeclarationPersonTransferObject; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationPersonModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class DeclarationPersonTransferObjectToModelCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(DeclarationPersonTransferObject transferObject, DeclarationPersonModel model, MappingContext context) { + DeclarationModel declaration = new DeclarationModel(); + declaration.setId(transferObject.getDeclarationId()); + + model.setDeclaration(declaration); + } + + @Override + public void mapBtoA(DeclarationPersonModel model, DeclarationPersonTransferObject transferObject, MappingContext context) { + transferObject.setDeclarationId(model.getDeclaration().getId()); + transferObject.setUpdatingActor(getClearUpdatingActor(transferObject)); + transferObject.setCreationActor(getClearCreatingActor(transferObject)); + } + + private AuditActor getClearUpdatingActor(DeclarationPersonTransferObject transferObject) { + if(transferObject.getUpdatingActor().getId() == Long.MIN_VALUE) { + return new AuditActor((long) transferObject.getPerson().hashCode() < 0 ? transferObject.getPerson().hashCode() : -(long) transferObject.getPerson().hashCode(), transferObject.getUpdatingActor().getInstant()); + } + return transferObject.getUpdatingActor(); + } + private AuditActor getClearCreatingActor(DeclarationPersonTransferObject transferObject) { + if(transferObject.getCreationActor().getId() == Long.MIN_VALUE) { + return new AuditActor((long) transferObject.hashCode() < 0 ? transferObject.hashCode() : -(long) transferObject.hashCode(), transferObject.getCreationActor().getInstant()); + } + return transferObject.getCreationActor(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/EntitlementMaxTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/EntitlementMaxTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..4e19910 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/EntitlementMaxTransferObjectToModelCustomMapper.java @@ -0,0 +1,31 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.DeclarationPersonTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.EntitlementMaxTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class EntitlementMaxTransferObjectToModelCustomMapper extends CustomMapper { + + @Override + public void mapBtoA(EntitlementMaxModel model, EntitlementMaxTransferObject transferObject, MappingContext context) { + transferObject.setUpdatingActor(getClearUpdatingActor(transferObject)); + transferObject.setCreationActor(getClearCreatingActor(transferObject)); + } + + private AuditActor getClearUpdatingActor(EntitlementMaxTransferObject transferObject) { + if(transferObject.getUpdatingActor().getId() == Long.MIN_VALUE) { + return new AuditActor((long) transferObject.hashCode() < 0 ? transferObject.hashCode() : -(long) transferObject.hashCode(), transferObject.getUpdatingActor().getInstant()); + } + return transferObject.getUpdatingActor(); + } + + private AuditActor getClearCreatingActor(EntitlementMaxTransferObject transferObject) { + if(transferObject.getCreationActor().getId() == Long.MIN_VALUE) { + return new AuditActor((long) transferObject.hashCode() < 0 ? transferObject.hashCode() : -(long) transferObject.hashCode(), transferObject.getCreationActor().getInstant()); + } + return transferObject.getCreationActor(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/MovementDocAttachmentTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/MovementDocAttachmentTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..8a6533b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/MovementDocAttachmentTransferObjectToModelCustomMapper.java @@ -0,0 +1,23 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementDocAttachmentTransferObject; +import eu.europa.eeas.erights.common.service.model.document.MovementDocAttachmentModel; +import eu.europa.eeas.erights.common.service.model.document.MovementDocModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class MovementDocAttachmentTransferObjectToModelCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(MovementDocAttachmentTransferObject transferObject, MovementDocAttachmentModel model, MappingContext context) { + MovementDocModel movementDoc = new MovementDocModel(); + movementDoc.setId(transferObject.getMovementDocId()); + + model.setMovementDoc(movementDoc); + } + + @Override + public void mapBtoA(MovementDocAttachmentModel model, MovementDocAttachmentTransferObject transferObject, MappingContext context) { + transferObject.setMovementDocId(model.getMovementDoc().getId()); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/MovementDocTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/MovementDocTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..d556672 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/MovementDocTransferObjectToModelCustomMapper.java @@ -0,0 +1,23 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementDocTransferObject; +import eu.europa.eeas.erights.common.service.model.document.MovementDocModel; +import eu.europa.eeas.erights.common.service.model.document.MovementDocSectionModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class MovementDocTransferObjectToModelCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(MovementDocTransferObject transferObject, MovementDocModel model, MappingContext context) { + MovementDocSectionModel movementDocSection = new MovementDocSectionModel(); + movementDocSection.setId(transferObject.getMovementDocSectionId()); + + model.setMovementDocSection(movementDocSection); + } + + @Override + public void mapBtoA(MovementDocModel model, MovementDocTransferObject transferObject, MappingContext context) { + transferObject.setMovementDocSectionId(model.getMovementDocSection().getId()); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/PostingAllowanceSupportingDocAttachmentTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/PostingAllowanceSupportingDocAttachmentTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..fcc68f8 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/PostingAllowanceSupportingDocAttachmentTransferObjectToModelCustomMapper.java @@ -0,0 +1,33 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import static eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.AuditHelper.getClearActor; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PostingAllowanceSupportingDocAttachmentTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceSupportingDocAttachmentModel; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceSupportingDocModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +/** + * @author ienaccat + */ +public class PostingAllowanceSupportingDocAttachmentTransferObjectToModelCustomMapper extends + CustomMapper { + + @Override + public void mapAtoB(PostingAllowanceSupportingDocAttachmentTransferObject transferObject, + PostingAllowanceSupportingDocAttachmentModel model, MappingContext context) { + PostingAllowanceSupportingDocModel supportingDocModel = new PostingAllowanceSupportingDocModel(); + supportingDocModel.setId(transferObject.getPostingAllowanceSupportingDocId()); + + model.setPostingAllowanceSupportingDoc(supportingDocModel); + } + + @Override + public void mapBtoA(PostingAllowanceSupportingDocAttachmentModel model, + PostingAllowanceSupportingDocAttachmentTransferObject transferObject, MappingContext context) { + transferObject.setPostingAllowanceSupportingDocId(model.getPostingAllowanceSupportingDoc().getId()); + transferObject.setUpdatingActor(getClearActor(transferObject, transferObject.getUpdatingActor())); + transferObject.setCreationActor(getClearActor(transferObject, transferObject.getCreationActor())); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/PostingAllowanceSupportingDocTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/PostingAllowanceSupportingDocTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..eee7d68 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/PostingAllowanceSupportingDocTransferObjectToModelCustomMapper.java @@ -0,0 +1,44 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import static eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.AuditHelper.getClearActor; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PostingAllowanceSupportingDocTransferObject; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceSupportingDocModel; +import eu.europa.eeas.erights.common.service.model.comments.CommentForSupportingDocModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +/** + * @author ienaccat + */ +public class PostingAllowanceSupportingDocTransferObjectToModelCustomMapper extends + CustomMapper { + + @Override + public void mapAtoB(PostingAllowanceSupportingDocTransferObject transferObject, PostingAllowanceSupportingDocModel model, + MappingContext context) { + PostingAllowanceModel postingAllowance = new PostingAllowanceModel(); + postingAllowance.setId(transferObject.getPostingAllowanceId()); + + model.setPostingAllowance(postingAllowance); + + if (model.getComment() != null) { + CommentForSupportingDocModel comment = model.getComment(); + comment.setEntityId(model.getId()); + comment.setDeleted(false); + model.setComment(comment); + } + } + + @Override + public void mapBtoA(PostingAllowanceSupportingDocModel model, PostingAllowanceSupportingDocTransferObject transferObject, + MappingContext context) { + transferObject.setPostingAllowanceId(model.getPostingAllowance().getId()); + + transferObject.setUpdatingActor( + getClearActor(transferObject, transferObject.getUpdatingActor())); + transferObject.setCreationActor( + getClearActor(transferObject, transferObject.getCreationActor())); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestDetailAttachmentTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestDetailAttachmentTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..a462c7e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestDetailAttachmentTransferObjectToModelCustomMapper.java @@ -0,0 +1,23 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestDetailAttachmentTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestDetailAttachmentModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestDetailModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class RequestDetailAttachmentTransferObjectToModelCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(RequestDetailAttachmentTransferObject transferObject, RequestDetailAttachmentModel model, MappingContext context) { + RequestDetailModel requestDetail = new RequestDetailModel(); + requestDetail.setId(transferObject.getRequestDetailId()); + + model.setRequestDetail(requestDetail); + } + + @Override + public void mapBtoA(RequestDetailAttachmentModel model, RequestDetailAttachmentTransferObject transferObject, MappingContext context) { + transferObject.setRequestDetailId(model.getRequestDetail().getId()); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestDetailTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestDetailTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..3e4fffe --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestDetailTransferObjectToModelCustomMapper.java @@ -0,0 +1,23 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestDetailTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestDetailModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class RequestDetailTransferObjectToModelCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(RequestDetailTransferObject transferObject, RequestDetailModel model, MappingContext context) { + RequestModel request = new RequestModel(); + request.setId(transferObject.getRequestId()); + + model.setRequest(request); + } + + @Override + public void mapBtoA(RequestDetailModel model, RequestDetailTransferObject transferObject, MappingContext context) { + transferObject.setRequestId(model.getRequest().getId()); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestPersonTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestPersonTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..36a9dea --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestPersonTransferObjectToModelCustomMapper.java @@ -0,0 +1,23 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestPersonTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestPersonModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class RequestPersonTransferObjectToModelCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(RequestPersonTransferObject transferObject, RequestPersonModel model, MappingContext context) { + RequestModel request = new RequestModel(); + request.setId(transferObject.getRequestId()); + + model.setRequest(request); + } + + @Override + public void mapBtoA(RequestPersonModel model, RequestPersonTransferObject transferObject, MappingContext context) { + transferObject.setRequestId(model.getRequest().getId()); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestSupportingDocAttachmentTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestSupportingDocAttachmentTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..eaa7e7d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestSupportingDocAttachmentTransferObjectToModelCustomMapper.java @@ -0,0 +1,30 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import static eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.AuditHelper.getClearActor; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestSupportingDocAttachmentTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestSupportingDocAttachmentModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestSupportingDocModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +/** + * @author ienaccat + */ +public class RequestSupportingDocAttachmentTransferObjectToModelCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(RequestSupportingDocAttachmentTransferObject transferObject, RequestSupportingDocAttachmentModel model, MappingContext context) { + RequestSupportingDocModel supportingDocModel = new RequestSupportingDocModel(); + supportingDocModel.setId(transferObject.getRequestSupportingDocId()); + + model.setRequestSupportingDoc(supportingDocModel); + } + + @Override + public void mapBtoA(RequestSupportingDocAttachmentModel model, RequestSupportingDocAttachmentTransferObject transferObject, MappingContext context) { + transferObject.setRequestSupportingDocId(model.getRequestSupportingDoc().getId()); + transferObject.setUpdatingActor(getClearActor(transferObject,transferObject.getUpdatingActor())); + transferObject.setCreationActor(getClearActor(transferObject,transferObject.getCreationActor())); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestSupportingDocTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestSupportingDocTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..b3e1503 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestSupportingDocTransferObjectToModelCustomMapper.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import static eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper.AuditHelper.getClearActor; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestSupportingDocTransferObject; +import eu.europa.eeas.erights.common.service.model.comments.CommentForSupportingDocModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestSupportingDocModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +/** + * @author ienaccat + */ +public class RequestSupportingDocTransferObjectToModelCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(RequestSupportingDocTransferObject transferObject, RequestSupportingDocModel model, MappingContext context) { + RequestModel request = new RequestModel(); + request.setId(transferObject.getRequestId()); + + model.setRequest(request); + + if (model.getComment() != null) { + CommentForSupportingDocModel comment = model.getComment(); + comment.setEntityId(model.getId()); + comment.setDeleted(false); + model.setComment(comment); + } + } + + @Override + public void mapBtoA(RequestSupportingDocModel model, RequestSupportingDocTransferObject transferObject, MappingContext context) { + transferObject.setRequestId(model.getRequest().getId()); + + transferObject.setUpdatingActor( + getClearActor(transferObject, transferObject.getUpdatingActor())); + transferObject.setCreationActor( + getClearActor(transferObject, transferObject.getCreationActor())); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..2b9f58a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/RequestTransferObjectToModelCustomMapper.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +import java.util.stream.Collectors; + +public class RequestTransferObjectToModelCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(RequestTransferObject transferObject, RequestModel model, MappingContext context) { + EntitlementTypeModel entitlementType = new EntitlementTypeModel(); + entitlementType.setId(transferObject.getEntitlementTypeId()); + if (transferObject.getChildrenId() != null) { + model.setChildren(transferObject.getChildrenId().stream().map(this::getModel).collect(Collectors.toList())); + } + model.setEntitlementType(entitlementType); + } + + private RequestModel getModel(Long childrenId) { + RequestModel model = new RequestModel(); + model.setId(childrenId); + return model; + } + + @Override + public void mapBtoA(RequestModel model, RequestTransferObject transferObject, MappingContext context) { + transferObject.setEntitlementTypeId(model.getEntitlementType().getId()); + if (model.getChildren() != null) { + transferObject.setChildrenId(model.getChildren().stream().map(RequestModel::getId).collect(Collectors.toList())); + } + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/StateMachineTransitionTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/StateMachineTransitionTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..3fa2947 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/StateMachineTransitionTransferObjectToModelCustomMapper.java @@ -0,0 +1,15 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StateMachineTransitionTransferObject; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class StateMachineTransitionTransferObjectToModelCustomMapper extends CustomMapper { + + @Override + public void mapBtoA(StateMachineTransitionModel model, StateMachineTransitionTransferObject transferObject, MappingContext context) { + transferObject.setDate(model.getExecutor().getInstant()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/TopUpRequestTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/TopUpRequestTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..b1d2146 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/TopUpRequestTransferObjectToModelCustomMapper.java @@ -0,0 +1,24 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.TopUpRequestTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TopUpRequestModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class TopUpRequestTransferObjectToModelCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(TopUpRequestTransferObject transferObject, TopUpRequestModel model, MappingContext context) { + EntitlementTypeModel entitlementType = new EntitlementTypeModel(); + entitlementType.setId(transferObject.getEntitlementTypeId()); + + model.setEntitlementType(entitlementType); + } + + @Override + public void mapBtoA(TopUpRequestModel model, TopUpRequestTransferObject transferObject, MappingContext context) { + transferObject.setEntitlementTypeId(model.getEntitlementType().getId()); + + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/TotalRemRequestTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/TotalRemRequestTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..1baf642 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/TotalRemRequestTransferObjectToModelCustomMapper.java @@ -0,0 +1,43 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.RequestDetailTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.TotalRemRequestTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestDetailModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TotalRemRequestModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class TotalRemRequestTransferObjectToModelCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(TotalRemRequestTransferObject transferObject, TotalRemRequestModel model, MappingContext context) { + List requestDetails = model.getRequestDetails(); + List extraRequestDetails = model.getExtraRequestDetails(); + + if (requestDetails == null) { + requestDetails = new ArrayList<>(); + } + if (extraRequestDetails == null) { + extraRequestDetails = new ArrayList<>(); + } + List r = new ArrayList<>(CollectionUtils.union(requestDetails, extraRequestDetails)); + model.setRequestDetails(r); + model.setExtraRequestDetails(null); + } + + @Override + public void mapBtoA(TotalRemRequestModel model, TotalRemRequestTransferObject transferObject, MappingContext context) { + List requestDetails = transferObject.getRequestDetails(); + transferObject.setExtraRequestDetails(requestDetails.stream() + .filter(RequestDetailTransferObject::isExtraDetail).collect(Collectors.toList())); + transferObject.setRequestDetails(requestDetails.stream() + .filter(r -> !r.isExtraDetail()).collect(Collectors.toList())); + + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/TudRequestTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/TudRequestTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..05d3198 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/TudRequestTransferObjectToModelCustomMapper.java @@ -0,0 +1,23 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.TudRequestTransferObject; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TudRequestModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class TudRequestTransferObjectToModelCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(TudRequestTransferObject transferObject, TudRequestModel model, MappingContext context) { + EntitlementTypeModel entitlementType = new EntitlementTypeModel(); + entitlementType.setId(transferObject.getEntitlementTypeId()); + + model.setEntitlementType(entitlementType); + } + + @Override + public void mapBtoA(TudRequestModel model, TudRequestTransferObject transferObject, MappingContext context) { + transferObject.setEntitlementTypeId(model.getEntitlementType().getId()); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/VAllowanceTransferObjectToModelCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/VAllowanceTransferObjectToModelCustomMapper.java new file mode 100644 index 0000000..e181c06 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/VAllowanceTransferObjectToModelCustomMapper.java @@ -0,0 +1,45 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VAllowancesTransferObject; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestJpaEntity; +import eu.europa.eeas.erights.common.service.model.VAllowanceModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestTypesForUI; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class VAllowanceTransferObjectToModelCustomMapper extends CustomMapper { + + @Override + public void mapBtoA(VAllowanceModel model, VAllowancesTransferObject transferObject, MappingContext context) { + transferObject.setTo(model.getCountryTo() + ", " + model.getCityTo()); + transferObject.setFrom(model.getCountryFrom() + ", " + model.getCityFrom()); + + switch (model.getRequestType()) { + case RequestJpaEntity.REQUEST_TYPE_ADVANCE: + transferObject.setRequestTypeForUI(RequestTypesForUI.ADVANCE.value); + break; + case RequestJpaEntity.REQUEST_TYPE_TUD: + transferObject.setRequestTypeForUI(RequestTypesForUI.TUD.value); + break; + case RequestJpaEntity.REQUEST_TYPE_TOTAL_REM: + transferObject.setRequestTypeForUI(RequestTypesForUI.REIMBURSEMENT.value); + break; + case RequestJpaEntity.REQUEST_TYPE_CLEARING: + transferObject.setRequestTypeForUI(RequestTypesForUI.CLEARING.value); + break; + case RequestJpaEntity.REQUEST_TYPE_INSTALLATION: + transferObject.setRequestTypeForUI(RequestTypesForUI.INSTALLATION.value); + break; + case RequestJpaEntity.REQUEST_TYPE_TOPUP: + transferObject.setRequestTypeForUI(RequestTypesForUI.TOPUP.value); + break; + case RequestJpaEntity.REQUEST_TYPE_RESETTLEMENT: + transferObject.setRequestTypeForUI(RequestTypesForUI.RESETTLEMENT.value); + break; + default: + // Not found => not translated + transferObject.setRequestTypeForUI(model.getRequestType()); + } + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/VReportMovementFileTransferObjectToModelCustomBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/VReportMovementFileTransferObjectToModelCustomBuilder.java new file mode 100644 index 0000000..3fffc69 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/VReportMovementFileTransferObjectToModelCustomBuilder.java @@ -0,0 +1,16 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VReportMovementFileTransferObject; +import eu.europa.eeas.erights.common.service.model.VReportMovementFileModel; +import java.util.Objects; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class VReportMovementFileTransferObjectToModelCustomBuilder extends CustomMapper { + + @Override + public void mapBtoA(VReportMovementFileModel model, VReportMovementFileTransferObject transferObject, MappingContext context) { + transferObject.jobToFamPosting( + Objects.equals(Boolean.TRUE, model.getJobToFamPosting()) ? "Yes" : "No"); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/ERightsBeanNames.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/ERightsBeanNames.java new file mode 100644 index 0000000..bdef090 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/ERightsBeanNames.java @@ -0,0 +1,317 @@ +package eu.europa.eeas.erights.common.boot.configuration; + +public final class ERightsBeanNames { + + public static final String MOVEMENT_FILE_VALIDATOR = "MovementFileValidator"; + + /** + * PREFIX. + */ + private static final String PREFIX = "ERights"; + + public static final String COMMON_VIEW_RESOLVER = PREFIX + "CommonViewResolver"; + + public static final String HRS_CONNECTOR = PREFIX + "HrsConnector"; + + public static final String MOVEMENT_FILE_SECURITY_CHECKER = PREFIX + "MovementFileSecurityChecker"; + + public static final String POSTING_ALLOWANCE_SECURITY_CHECKER = PREFIX + "PostingAllowanceSecurityChecker"; + + public static final String REQUEST_SECURITY_CHECKER = PREFIX + "RequestSecurityChecker"; + + public static final String ERIGHTS_SECURITY_CHECKER = PREFIX + "SecurityChecker"; + + protected static final String USER_IDENTITY_FALLBACK_RETRIEVER = PREFIX + "SecurityUserIdentityFallbackRetriever"; + + public static final String FILE_MANAGER_SECURITY_DELEGATE = PREFIX + "FileManagerSecurityDelegate"; + + private ERightsBeanNames() { + } + + public static class MovementFileStateMachine { + + public static final String ID = ERightsBeanNames.PREFIX + "MovementFileStateMachine"; + + public static final String FACTORY = ID + "Factory"; + + public static final String SERVICE = ID + "Service"; + + public static class Guard { + + private static final String PREFIX = MovementFileStateMachine.ID + "Guard"; + + public static final String HAS_DELETE = PREFIX + "HasDelete"; + + public static final String HAS_CREATE = PREFIX + "HasCreate"; + + public static final String HAS_CONFIRM = PREFIX + "HasConfirm"; + + public static final String HAS_WITHDRAW = PREFIX + "HasWithdraw"; + + public static final String IS_ONGOING = PREFIX + "IsOngoing"; + + public static final String IS_OWNER = PREFIX + "IsOwner"; + + public static final String IS_TUD_OWNER = PREFIX + "IsTudOwner"; + + public static final String IS_OWNER_CONFIRM = PREFIX + "IsOwnerWithConfirm"; + + public static final String IS_OWNER_WITH_WITHDRAW = PREFIX + "IsOwnerWithWithdraw"; + + public static final String HAS_RESUBMIT_TUD_REQUEST = PREFIX + "HasResubmitTUDRequest"; + + public static final String HAS_PAY_TUD_REQUEST_MANUALLY = PREFIX + "HasPayTUDRequestManually"; + + public static final String HAS_PAY_TUD_REQUEST_ABAC = PREFIX + "HasPayTUDRequestAbac"; + + public static final String HAS_REVIEW_TUD_REQUEST = PREFIX + "HasReviewTUDRequest"; + + public static final String HAS_REVIEW_TUD_REQUEST_OR_IS_OWNER = PREFIX + "HasReviewTUDRequestOrIsOwner"; + + public static final String IS_OWNER_OR_HAS_RESUBMIT = PREFIX + "IsOwnerOrHasResubmit"; + + public static final String IS_SYSTEM_USER = PREFIX + "IsSystemUser"; + + } + + } + + public static class EntitlementRequestStateMachine { + + public static final String ID = ERightsBeanNames.PREFIX + "EntitlementRequestStateMachine"; + + public static final String FACTORY = ID + "Factory"; + + public static final String SERVICE = ID + "Service"; + + public static class Guard { + + private static final String PREFIX = EntitlementRequestStateMachine.ID + "Guard"; + + public static final String IS_RECOVERY = PREFIX + "IsRecovery"; + + public static final String HAS_PAY_TUD_OR_IS_SYSTEM_USER = PREFIX + "HaPayTudOrIsSystemUser"; + + } + + } + + public static class PostingAllowanceStateMachine { + + public static final String ID = ERightsBeanNames.PREFIX + "PostingAllowancesStateMachine"; + + public static final String FACTORY = ID + "Factory"; + + public static final String SERVICE = ID + "Service"; + + } + + public static class TopUpRequestStateMachine { + + public static final String ID = ERightsBeanNames.PREFIX + "TopUpRequestStateMachine"; + + public static final String SERVICE = ID + "Service"; + + public static final String FACTORY = ID + "Factory"; + + public static class Guard { + + private static final String PREFIX = TopUpRequestStateMachine.ID + "Guard"; + + public static final String HAS_SUBMIT = PREFIX + "HasSubmit"; + + public static final String IS_OWNER_OR_HAS_SUBMIT = PREFIX + "HasSubmitOrIsTheOwner"; + + public static final String IS_OWNER_OR_HAS_RESUBMIT = PREFIX + "HasResubmitOrIsTheOwner"; + + public static final String HAS_RESUBMIT_TOP_UP_REQUEST = PREFIX + "HasResubmitTOPUPRequest"; + + public static final String HAS_PAY_TOP_UP_REQUEST_MANUALLY = PREFIX + "HasPayTOPUPRequestManually"; + + public static final String HAS_PAY_TOP_UP_REQUEST_ABAC = PREFIX + "HasPayTOPUPRequestAbac"; + + public static final String HAS_REVIEW_TOP_UP_REQUEST = PREFIX + "HasReviewTOPUPRequest"; + + public static final String HAS_REJECT_PAID_TOP_UP_REQUEST = PREFIX + "HasRejectPaidTOPUPRequest"; + + public static final String HAS_APPROVE_TOP_UP_REQUEST = PREFIX + "HasApproveTOPUPRequest"; + + public static final String HAS_REJECT_TOP_UP_REQUEST = PREFIX + "HasRejectTOPUPRequest"; + + public static final String IS_OWNER = PREFIX + "IsOwner"; + + public static final String HAS_PAY_TOP_UP_OR_IS_SYSTEM_USER = PREFIX + "HaPayTopupOrIsSystemUser"; + + public static final String HAS_REJECT_TOP_UP_REQUEST_OR_IS_SYSTEM_USER = PREFIX + "HasRejectPaidTOPUPRequestOrIsSystemUser"; + + } + + + } + + public static class AdvanceRequestStateMachine { + + public static final String ID = ERightsBeanNames.PREFIX + "AdvanceRequestStateMachine"; + + public static final String FACTORY = ID + "Factory"; + + public static final String SERVICE = ID + "Service"; + + public static class Guard { + + private static final String PREFIX = AdvanceRequestStateMachine.ID + "Guard"; + + public static final String HAS_SUBMIT = PREFIX + "HasSubmit"; + + public static final String IS_OWNER_OR_HAS_SUBMIT = PREFIX + "HasSubmitOrIsTheOwner"; + + public static final String IS_OWNER_OR_HAS_RESUBMIT = PREFIX + "HasResubmitOrIsTheOwner"; + + public static final String HAS_RESUBMIT_ADV_REM_REQUEST = PREFIX + "HasResubmitADVREMRequest"; + + public static final String HAS_PAY_ADV_REM_REQUEST_MANUALLY = PREFIX + "HasPayADVREMRequestManually"; + + public static final String HAS_PAY_ADV_REM_REQUEST_ABAC = PREFIX + "HasPayADVREMRequestAbac"; + + public static final String HAS_REVIEW_ADV_REM_REQUEST = PREFIX + "HasReviewADVREMRequest"; + + public static final String HAS_REJECT_PAID_ADV_REM_REQUEST = PREFIX + "HasRejectPaidADVREMRequest"; + + public static final String HAS_APPROVE_REM_REQUEST = PREFIX + "HasApproveREMRequest"; + + public static final String HAS_REJECT_REM_REQUEST = PREFIX + "HasRejectREMRequest"; + + public static final String IS_OWNER = PREFIX + "IsOwner"; + + public static final String HAS_PAYADV_OR_IS_SYSTEM_USER = PREFIX + "HaPayAdvOrIsSystemUser"; + + + + + } + + } + + public static class TotalRemRequestStateMachine { + + public static final String ID = ERightsBeanNames.PREFIX + "TotalRemRequestStateMachine"; + + public static final String FACTORY = ID + "Factory"; + + public static final String SERVICE = ID + "Service"; + + public static class Guard { + + private static final String PREFIX = TotalRemRequestStateMachine.ID + "Guard"; + + public static final String HAS_SUBMIT = PREFIX + "HasSubmit"; + + public static final String IS_OWNER_OR_HAS_SUBMIT = PREFIX + "HasSubmitOrIsTheOwner"; + + public static final String IS_OWNER_OR_HAS_RESUBMIT = PREFIX + "HasResubmitOrIsTheOwner"; + + public static final String HAS_RESUBMIT_TOT_REM_REQUEST = PREFIX + "HasResubmitTOTREMRequest"; + + public static final String HAS_PAY_TOT_REM_REQUEST_MANUALLY = PREFIX + "HasPayTOTREMRequestManually"; + + public static final String HAS_PAY_TOT_REM_REQUEST_ABAC = PREFIX + "HasPayTOTREMRequestAbac"; + + public static final String HAS_REVIEW_TOT_REM_REQUEST = PREFIX + "HasReviewTOTREMRequest"; + + public static final String HAS_REJECT_PAID_TOT_REM_REQUEST = PREFIX + "HasRejectPaidTOTREMRequest"; + + public static final String HAS_APPROVE_TOT_REM_REQUEST = PREFIX + "HasApproveTOTREMRequest"; + + public static final String HAS_REJECT_TOT_REM_REQUEST = PREFIX + "HasRejectTOTREMRequest"; + + public static final String IS_OWNER = PREFIX + "IsOwner"; + + public static final String HAS_PAY_TOTAL_REM_OR_IS_SYSTEM_USER = PREFIX + "HaPayTotRemOrIsSystemUser"; + + } + + } + + public static class ClearingRequestStateMachine { + + public static final String ID = ERightsBeanNames.PREFIX + "ClearingRequestStateMachine"; + + public static final String FACTORY = ID + "Factory"; + + public static final String SERVICE = ID + "Service"; + + public static class Guard { + + private static final String PREFIX = ClearingRequestStateMachine.ID + "Guard"; + + public static final String HAS_SUBMIT = PREFIX + "HasSubmit"; + + public static final String IS_OWNER_OR_HAS_SUBMIT = PREFIX + "HasSubmitOrIsTheOwner"; + + public static final String IS_OWNER_OR_HAS_RESUBMIT = PREFIX + "HasResubmitOrIsTheOwner"; + + public static final String HAS_RESUBMIT_CLR_REQUEST = PREFIX + "HasResubmitClearingRequest"; + + public static final String HAS_PAY_CLR_REQUEST_MANUALLY = PREFIX + "HasPayClearingRequestManually"; + + public static final String HAS_PAY_CLR_REQUEST_ABAC = PREFIX + "HasPayClearingRequestAbac"; + + public static final String HAS_REVIEW_CLR_REQUEST = PREFIX + "HasReviewClearingRequest"; + + public static final String HAS_REJECT_PAID_CLR_REQUEST = PREFIX + "HasRejectPaidClearingRequest"; + + public static final String HAS_APPROVE_CLR_REM_REQUEST = PREFIX + "HasApproveClearingRequest"; + + public static final String HAS_REJECT_CLR_REM_REQUEST = PREFIX + "HasRejectClearingRequest"; + + public static final String IS_OWNER = PREFIX + "IsOwner"; + + public static final String HAS_PAY_CLR_OR_IS_SYSTEM_USER = PREFIX + "HaPayClrOrIsSystemUser"; + + } + + } + + public static class InstallationStateMachine { + + public static final String ID = ERightsBeanNames.PREFIX + "InstallationStateMachine"; + + public static final String FACTORY = ID + "Factory"; + + public static final String SERVICE = ID + "Service"; + + } + + public static class ResettlementStateMachine { + + public static final String ID = ERightsBeanNames.PREFIX + "ResettlementStateMachine"; + + public static final String FACTORY = ID + "Factory"; + + public static final String SERVICE = ID + "Service"; + + + } + + public static class AccommodationDeclarationStateMachine { + + public static final String ID = ERightsBeanNames.PREFIX + "AccommodationDeclarationStateMachine"; + + public static final String FACTORY = ID + "Factory"; + + public static final String SERVICE = ID + "Service"; + + } + + public static class AccommodationPaymentStateMachine { + + public static final String ID = ERightsBeanNames.PREFIX + "AccommodationPaymentStateMachine"; + + public static final String FACTORY = ID + "Factory"; + + public static final String SERVICE = ID + "Service"; + + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/ERightsBootAutoConfiguration.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/ERightsBootAutoConfiguration.java new file mode 100644 index 0000000..a363bf9 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/ERightsBootAutoConfiguration.java @@ -0,0 +1,272 @@ +package eu.europa.eeas.erights.common.boot.configuration; + +import eu.europa.eeas.ananke.core.api.provider.http.mvc.viewresolver.PrefixedInternalResourceViewResolver; +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.support.AnankeCoreAuditProviderDataJpaRepositoryFactoryBean; +import eu.europa.eeas.ananke.core.base.Profiles; +import eu.europa.eeas.ananke.core.base.context.AnankeContext; +import eu.europa.eeas.ananke.core.data.provider.jpa.AnankeCoreDataProviderJpaBeanNames; +import eu.europa.eeas.ananke.core.security.user.identityfallbackretriever.UserIdentityFallbackRetriever; +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.ConfigurationLogger; +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.KeyValueMultiLineLogElement; +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.MultiLineLog; +import eu.europa.eeas.ananke.tools.filemanagement.security.FileManagerSecurityDelegate; +import eu.europa.eeas.erights.common.api.http.mvc.controller.AuditController; +import eu.europa.eeas.erights.common.api.http.rest.controller.internal.ContextsRestController; +import eu.europa.eeas.erights.common.boot.configuration.data.ERightsRootConfiguration; +import eu.europa.eeas.erights.common.boot.configuration.edms.EdmsRestClientConfiguration; +import eu.europa.eeas.erights.common.boot.configuration.statemachine.AccommodationDeclarationStateMachineFactoryConfiguration; +import eu.europa.eeas.erights.common.boot.configuration.statemachine.AccommodationPaymentStateMachineFactoryConfiguration; +import eu.europa.eeas.erights.common.boot.configuration.statemachine.AdvanceRequestStateMachineFactoryConfiguration; +import eu.europa.eeas.erights.common.boot.configuration.statemachine.ClearingRequestStateMachineFactoryConfiguration; +import eu.europa.eeas.erights.common.boot.configuration.statemachine.InstallationStateMachineFactoryConfiguration; +import eu.europa.eeas.erights.common.boot.configuration.statemachine.MovementFileStateMachineFactoryConfiguration; +import eu.europa.eeas.erights.common.boot.configuration.statemachine.PostingAllowancesStateMachineFactoryConfiguration; +import eu.europa.eeas.erights.common.boot.configuration.statemachine.ResettlementStateMachineFactoryConfiguration; +import eu.europa.eeas.erights.common.boot.configuration.statemachine.TopUpRequestStateMachineFactoryConfiguration; +import eu.europa.eeas.erights.common.boot.configuration.statemachine.TotalRemRequestStateMachineFactoryConfiguration; +import eu.europa.eeas.erights.common.boot.configuration.statemachine.TudRequestStateMachineFactoryConfiguration; +import eu.europa.eeas.erights.common.data.jpa.repository.MovementContextJpaRepository; +import eu.europa.eeas.erights.common.security.ERightsSecurityChecker; +import eu.europa.eeas.erights.common.security.ErightsFileManagerSecurityDelegate; +import eu.europa.eeas.erights.common.security.ExternalUserIdentityFallbackRetriever; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.security.PostingAllowanceSecurityChecker; +import eu.europa.eeas.erights.common.security.RequestSecurityChecker; +import eu.europa.eeas.erights.common.service.connector.http.soap.provider.HrsSoapConnectorServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.AuditMovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.validation.MovementFileValidator; +import eu.europa.eeas.erights.common.service.provider.ERightsWebDataSupplierServiceProvider; +import eu.europa.eeas.erights.common.service.provider.gosselin.RatesWSService; +import eu.europa.eeas.erights.common.service.provider.gosselin.RatesWSServiceProvider; +import eu.europa.eeas.erights.tools.StateMachineCurrentStateService; +import eu.europa.eeas.erights.web.ApiClient; +import org.apache.http.HttpHost; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.client.CredentialsProvider; +import org.apache.http.impl.client.BasicCredentialsProvider; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.client.ProxyAuthenticationStrategy; +import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; + +@Configuration +@ImportAutoConfiguration({MovementFileStateMachineFactoryConfiguration.class, + TudRequestStateMachineFactoryConfiguration.class, + AdvanceRequestStateMachineFactoryConfiguration.class, + TotalRemRequestStateMachineFactoryConfiguration.class, + ClearingRequestStateMachineFactoryConfiguration.class, + InstallationStateMachineFactoryConfiguration.class, + TopUpRequestStateMachineFactoryConfiguration.class, + EdmsRestClientConfiguration.class, + PostingAllowancesStateMachineFactoryConfiguration.class, + ResettlementStateMachineFactoryConfiguration.class, + AccommodationDeclarationStateMachineFactoryConfiguration.class, + AccommodationPaymentStateMachineFactoryConfiguration.class}) +@EnableJpaRepositories(entityManagerFactoryRef = AnankeCoreDataProviderJpaBeanNames.ENTITY_MANAGER_FACTORY, + transactionManagerRef = AnankeCoreDataProviderJpaBeanNames.TRANSACTION_MANAGER, + repositoryFactoryBeanClass = AnankeCoreAuditProviderDataJpaRepositoryFactoryBean.class, + basePackageClasses = { + MovementContextJpaRepository.class + }) +@ComponentScan(basePackageClasses = { + AuditController.class, + ContextsRestController.class, + AuditMovementFileJpaServiceProvider.class, + ERightsWebDataSupplierServiceProvider.class, + ApiClient.class, + StateMachineCurrentStateService.class //TODO delete this after RIGD-547 delivered in production +}) +@EnableConfigurationProperties(ERightsRootConfiguration.class) +public class ERightsBootAutoConfiguration { + + + protected final ConfigurationLogger logger = ConfigurationLogger.getConfigurationLogger(ERightsBootAutoConfiguration.class); + + private final AnankeContext anankeContext; + + public ERightsBootAutoConfiguration(AnankeContext anankeContext) { + this.anankeContext = anankeContext; + } + + @Bean(ERightsBeanNames.COMMON_VIEW_RESOLVER) + public PrefixedInternalResourceViewResolver commonViewResolver() { + PrefixedInternalResourceViewResolver result = null; + + MultiLineLog log = this.logger.multiLine("E-Rights Common View Resolver", ERightsBeanNames.COMMON_VIEW_RESOLVER); + KeyValueMultiLineLogElement keyValueLog = log.keyValue(); + + String prefix = "e-rights-common"; + String resourcesPrefix = "/common/jsp/"; + String resourcesSuffix = ".jsp"; + result = new PrefixedInternalResourceViewResolver(prefix, 5, resourcesPrefix, resourcesSuffix); + keyValueLog.line("Prefix", prefix); + keyValueLog.line("Resources Prefix", resourcesPrefix); + keyValueLog.line("Resources Suffix", resourcesSuffix); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.MOVEMENT_FILE_VALIDATOR) + public MovementFileValidator movementFileValidator() { + MovementFileValidator result = null; + + MultiLineLog log = this.logger.multiLine("Movement File Validator", ERightsBeanNames.MOVEMENT_FILE_VALIDATOR); + + result = new MovementFileValidator(); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + public MovementFileSecurityChecker movementFileSecurityChecker() { + MovementFileSecurityChecker result = null; + + MultiLineLog log = this.logger.multiLine("Movement File Security Checker", ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER); + + result = new MovementFileSecurityChecker(); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER) + public PostingAllowanceSecurityChecker postingAllowanceSecurityChecker() { + this.logger.multiLine("Posting Allowance Security Checker", ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER).log(); + return new PostingAllowanceSecurityChecker(); + } + + @Bean(ERightsBeanNames.ERIGHTS_SECURITY_CHECKER) + public ERightsSecurityChecker eRightsSecurityChecker() { + ERightsSecurityChecker result; + + MultiLineLog log = this.logger.multiLine("ERights Security Checker", ERightsBeanNames.ERIGHTS_SECURITY_CHECKER); + + result = new ERightsSecurityChecker(); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.REQUEST_SECURITY_CHECKER) + public RequestSecurityChecker requestSecurityChecker() { + RequestSecurityChecker result = null; + + MultiLineLog log = this.logger.multiLine("Request Security Checker", ERightsBeanNames.REQUEST_SECURITY_CHECKER); + + result = new RequestSecurityChecker(); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.HRS_CONNECTOR) + public HrsSoapConnectorServiceProvider hrsSoapConnectorServiceProvider() { + HrsSoapConnectorServiceProvider result = null; + + MultiLineLog log = this.logger.multiLine("HrsSoapConnectorServiceProvider ", ERightsBeanNames.HRS_CONNECTOR); + + result = new HrsSoapConnectorServiceProvider(); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.FILE_MANAGER_SECURITY_DELEGATE) + public FileManagerSecurityDelegate fileManagerSecurityDelegate() { + FileManagerSecurityDelegate result = null; + + MultiLineLog log = this.logger.multiLine("Erights - File Manager Security Delegate", ERightsBeanNames.FILE_MANAGER_SECURITY_DELEGATE); + + result = new ErightsFileManagerSecurityDelegate(); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.USER_IDENTITY_FALLBACK_RETRIEVER) + @Primary + public UserIdentityFallbackRetriever userIdentityFallbackRetriever() { + UserIdentityFallbackRetriever result = null; + MultiLineLog log = this.logger.multiLine("User Identity Fallback Retriever", ERightsBeanNames.USER_IDENTITY_FALLBACK_RETRIEVER); + result = new ExternalUserIdentityFallbackRetriever(); + log.keyValue().line("Type", "JPA"); + log.log(); + return result; + } + + @Bean + public RestTemplate restTemplate(ERightsRootConfiguration eRightsRootConfiguration) { + + RestTemplate restTemplate = new RestTemplate(); + CredentialsProvider credsProvider = new BasicCredentialsProvider(); + credsProvider.setCredentials( new AuthScope(eRightsRootConfiguration.getProxyHost(), + Integer.parseInt(eRightsRootConfiguration.getProxyPort())), + new UsernamePasswordCredentials(eRightsRootConfiguration.getProxyUser(), + eRightsRootConfiguration.getProxyPass().getValue()) ); + HttpClientBuilder clientBuilder = HttpClientBuilder.create(); + + clientBuilder.useSystemProperties(); + clientBuilder.setProxy(new HttpHost(eRightsRootConfiguration.getProxyHost(), Integer.parseInt(eRightsRootConfiguration.getProxyPort()))); + clientBuilder.setDefaultCredentialsProvider(credsProvider); + clientBuilder.setProxyAuthenticationStrategy(new ProxyAuthenticationStrategy()); + + CloseableHttpClient client = clientBuilder.build(); + + HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); + factory.setHttpClient(client); + + restTemplate.setRequestFactory(factory); + + return restTemplate; + } + + @Bean(name = "restTemplateWithoutProxy") + public RestTemplate restTemplateWithoutProxy() { + + RestTemplate restTemplate = new RestTemplate(); + HttpClientBuilder clientBuilder = HttpClientBuilder.create(); + + clientBuilder.useSystemProperties(); + clientBuilder.disableCookieManagement(); + + CloseableHttpClient client = clientBuilder.build(); + + HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); + factory.setHttpClient(client); + + restTemplate.setRequestFactory(factory); + + return restTemplate; + } + + @Bean(name = "restTemplateSysper") + public RestTemplate restTemplateSysper(ERightsRootConfiguration eRightsRootConfiguration) { + return anankeContext.getProfiles().contains(Profiles.PRODUCTION) ? + restTemplateWithoutProxy() : + restTemplate(eRightsRootConfiguration); + } + + @Bean + public RatesWSService ratesWSService(RestTemplate restTemplate, + ERightsRootConfiguration eRightsRootConfiguration) { + return new RatesWSServiceProvider(restTemplate, eRightsRootConfiguration); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/data/ERightsRootConfiguration.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/data/ERightsRootConfiguration.java new file mode 100644 index 0000000..1b94965 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/data/ERightsRootConfiguration.java @@ -0,0 +1,217 @@ +package eu.europa.eeas.erights.common.boot.configuration.data; + +import eu.europa.eeas.ananke.core.starter.base.configuration.ApplicationRootConfiguration; +import eu.europa.eeas.ananke.core.starter.base.support.EncryptedConfigurationProperty; + +public class ERightsRootConfiguration extends ApplicationRootConfiguration { + + private String protocol; + + private String hostName; + + private String mailbox; + + private String environment; + + private String testMailbox; + + private String frontOfficeHostName; + + private String proxyHost; + + private String proxyPort; + + private String proxyUser; + + private EncryptedConfigurationProperty proxyPass; + + private String gosselinHost; + + private EncryptedConfigurationProperty gosselinApiKey; + + private String gosselinApiId; + + private boolean gosselinActive; + + private String sysperApiKeyHeaderName; + + private String sysperProxyTicketHeaderName; + + private String sysperApiKey; + + private String sysperServiceUrl; + + private String sysperBasePath; + + private String sysperContextPath; + + private String gosselinPath; + + public String getProtocol() { + return protocol; + } + + public void setProtocol(String protocol) { + this.protocol = protocol; + } + + public String getHostName() { + return hostName; + } + + public void setHostName(String hostName) { + this.hostName = hostName; + } + + public String getMailbox() { + return mailbox; + } + + public void setMailbox(String mailbox) { + this.mailbox = mailbox; + } + + public String getTestMailbox() { + return testMailbox; + } + + public void setTestMailbox(String testMailbox) { + this.testMailbox = testMailbox; + } + + public String getFrontOfficeHostName() { + return frontOfficeHostName; + } + + public void setFrontOfficeHostName(String frontOfficeHostName) { + this.frontOfficeHostName = frontOfficeHostName; + } + + public String getProxyHost() { + return proxyHost; + } + + public void setProxyHost(String proxyHost) { + this.proxyHost = proxyHost; + } + + public String getProxyPort() { + return proxyPort; + } + + public void setProxyPort(String proxyPort) { + this.proxyPort = proxyPort; + } + + public String getProxyUser() { + return proxyUser; + } + + public void setProxyUser(String proxyUser) { + this.proxyUser = proxyUser; + } + + public EncryptedConfigurationProperty getProxyPass() { + return proxyPass; + } + + public void setProxyPass(EncryptedConfigurationProperty proxyPass) { + this.proxyPass = proxyPass; + } + + public String getGosselinHost() { + return gosselinHost; + } + + public void setGosselinHost(String gosselinHost) { + this.gosselinHost = gosselinHost; + } + + public EncryptedConfigurationProperty getGosselinApiKey() { + return gosselinApiKey; + } + + public void setGosselinApiKey(EncryptedConfigurationProperty gosselinApiKey) { + this.gosselinApiKey = gosselinApiKey; + } + + public String getGosselinApiId() { + return gosselinApiId; + } + + public void setGosselinApiId(String gosselinApiId) { + this.gosselinApiId = gosselinApiId; + } + + public boolean isGosselinActive() { + return gosselinActive; + } + + public void setGosselinActive(boolean gosselinActive) { + this.gosselinActive = gosselinActive; + } + + public String getEnvironment() { + return environment; + } + + public void setEnvironment(String environment) { + this.environment = environment; + } + + public String getSysperApiKeyHeaderName() { + return sysperApiKeyHeaderName; + } + + public void setSysperApiKeyHeaderName(String syspeApiKeyHeaderName) { + this.sysperApiKeyHeaderName = syspeApiKeyHeaderName; + } + + public String getSysperProxyTicketHeaderName() { + return sysperProxyTicketHeaderName; + } + + public void setSysperProxyTicketHeaderName(String sysperProxyTicketHeaderName) { + this.sysperProxyTicketHeaderName = sysperProxyTicketHeaderName; + } + + public String getSysperApiKey() { + return sysperApiKey; + } + + public void setSysperApiKey(String sysperApiKey) { + this.sysperApiKey = sysperApiKey; + } + + public String getSysperServiceUrl() { + return sysperServiceUrl; + } + + public void setSysperServiceUrl(String sysperServiceUrl) { + this.sysperServiceUrl = sysperServiceUrl; + } + + public String getSysperBasePath() { + return sysperBasePath; + } + + public void setSysperBasePath(String sysperBasePath) { + this.sysperBasePath = sysperBasePath; + } + + public String getSysperContextPath() { + return sysperContextPath; + } + + public void setSysperContextPath(String sysperContextPath) { + this.sysperContextPath = sysperContextPath; + } + + public String getGosselinPath() { + return gosselinPath; + } + + public void setGosselinPath(String gosselinPath) { + this.gosselinPath = gosselinPath; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/edms/EdmsRestClientConfiguration.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/edms/EdmsRestClientConfiguration.java new file mode 100644 index 0000000..7a1763d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/edms/EdmsRestClientConfiguration.java @@ -0,0 +1,162 @@ +package eu.europa.eeas.erights.common.boot.configuration.edms; + +import javax.validation.constraints.NotNull; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.validation.annotation.Validated; + +import eu.europa.eeas.ananke.core.starter.base.configuration.RootConfiguration; +import eu.europa.eeas.ananke.core.starter.base.support.EncryptedConfigurationProperty; + +@ConfigurationProperties(EdmsRestClientConfiguration.PREFIX) +@Validated +public class EdmsRestClientConfiguration implements RootConfiguration { + + public static final String PREFIX = "edms"; + + @NotNull + private Boolean enabled; + + @NotNull + private String messageFrom; + + @NotNull + private EncryptedConfigurationProperty euloginOidcJwkKid; + + @NotNull + private EncryptedConfigurationProperty euloginOidcPrivateKey; + + @NotNull + private EncryptedConfigurationProperty euloginOidcClientId; + + @NotNull + private String euloginOidcTokenEndpoint; + + @NotNull + private String restPopTokenProvider; + + @NotNull + private String restSendMessagesUrl; + + @NotNull + private EncryptedConfigurationProperty restEdmsClientId; + + @NotNull + private String applicationId; + + private String clientDivisionId; + + private String batchId; + + @NotNull + private Integer notificationExpirationDays; + + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public String getMessageFrom() { + return messageFrom; + } + + public void setMessageFrom(String messageFrom) { + this.messageFrom = messageFrom; + } + + public EncryptedConfigurationProperty getEuloginOidcJwkKid() { + return euloginOidcJwkKid; + } + + public void setEuloginOidcJwkKid(EncryptedConfigurationProperty euloginOidcJwkKid) { + this.euloginOidcJwkKid = euloginOidcJwkKid; + } + + public EncryptedConfigurationProperty getEuloginOidcPrivateKey() { + return euloginOidcPrivateKey; + } + + public void setEuloginOidcPrivateKey(EncryptedConfigurationProperty euloginOidcPrivateKey) { + this.euloginOidcPrivateKey = euloginOidcPrivateKey; + } + + public EncryptedConfigurationProperty getEuloginOidcClientId() { + return euloginOidcClientId; + } + + public void setEuloginOidcClientId(EncryptedConfigurationProperty euloginOidcClientId) { + this.euloginOidcClientId = euloginOidcClientId; + } + + public String getEuloginOidcTokenEndpoint() { + return euloginOidcTokenEndpoint; + } + + public void setEuloginOidcTokenEndpoint(String euloginOidcTokenEndpoint) { + this.euloginOidcTokenEndpoint = euloginOidcTokenEndpoint; + } + + public String getRestPopTokenProvider() { + return restPopTokenProvider; + } + + public void setRestPopTokenProvider(String restPopTokenProvider) { + this.restPopTokenProvider = restPopTokenProvider; + } + + public String getRestSendMessagesUrl() { + return restSendMessagesUrl; + } + + public void setRestSendMessagesUrl(String restSendMessagesUrl) { + this.restSendMessagesUrl = restSendMessagesUrl; + } + + public EncryptedConfigurationProperty getRestEdmsClientId() { + return restEdmsClientId; + } + + public void setRestEdmsClientId(EncryptedConfigurationProperty restEdmsClientId) { + this.restEdmsClientId = restEdmsClientId; + } + + public String getClientDivisionId() { + return clientDivisionId; + } + + public void setClientDivisionId(String clientDivisionId) { + this.clientDivisionId = clientDivisionId; + } + + public String getBatchId() { + return batchId; + } + + public void setBatchId(String batchId) { + this.batchId = batchId; + } + + public String getApplicationId() { + return applicationId; + } + + public void setApplicationId(String applicationId) { + this.applicationId = applicationId; + } + + public Integer getNotificationExpirationDays() { + return notificationExpirationDays; + } + + public void setNotificationExpirationDays(Integer notificationExpirationDays) { + this.notificationExpirationDays = notificationExpirationDays; + } + + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/skyscanner/SkyscannerWSConfiguration.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/skyscanner/SkyscannerWSConfiguration.java new file mode 100644 index 0000000..78dab34 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/skyscanner/SkyscannerWSConfiguration.java @@ -0,0 +1,50 @@ +package eu.europa.eeas.erights.common.boot.configuration.skyscanner; + +import javax.validation.constraints.NotNull; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.validation.annotation.Validated; + +import eu.europa.eeas.ananke.core.starter.base.configuration.RootConfiguration; +import eu.europa.eeas.ananke.core.starter.base.support.EncryptedConfigurationProperty; + +@ConfigurationProperties(SkyscannerWSConfiguration.PREFIX) +@Validated +public class SkyscannerWSConfiguration implements RootConfiguration { + + public static final String PREFIX = "skyscanner"; + + @NotNull + private String createUrl; + + @NotNull + private String pollUrl; + + @NotNull + private EncryptedConfigurationProperty apiKey; + + public String getCreateUrl() { + return createUrl; + } + + public void setCreateUrl(String createUrl) { + this.createUrl = createUrl; + } + + public String getPollUrl() { + return pollUrl; + } + + public void setPollUrl(String pollUrl) { + this.pollUrl = pollUrl; + } + + public EncryptedConfigurationProperty getApiKey() { + return apiKey; + } + + public void setApiKey(EncryptedConfigurationProperty apiKey) { + this.apiKey = apiKey; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/AccommodationDeclarationStateMachineFactoryConfiguration.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/AccommodationDeclarationStateMachineFactoryConfiguration.java new file mode 100644 index 0000000..3684f15 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/AccommodationDeclarationStateMachineFactoryConfiguration.java @@ -0,0 +1,112 @@ +package eu.europa.eeas.erights.common.boot.configuration.statemachine; + +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.ConfigurationLogger; +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.MultiLineLog; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationDeclarationEvent; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationDeclarationState; +import java.util.EnumSet; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.statemachine.config.EnableStateMachineFactory; +import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter; +import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer; +import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; +import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; + +/** + * @author ichabmar + */ +@Configuration +@EnableStateMachineFactory(name = {ERightsBeanNames.AccommodationDeclarationStateMachine.FACTORY}) +public class AccommodationDeclarationStateMachineFactoryConfiguration extends + EnumStateMachineConfigurerAdapter { + + protected final ConfigurationLogger logger = ConfigurationLogger.getConfigurationLogger( + AccommodationDeclarationStateMachineFactoryConfiguration.class); + + @Override + public void configure( + StateMachineConfigurationConfigurer config) + throws Exception { + config.withConfiguration() + .machineId(ERightsBeanNames.AccommodationDeclarationStateMachine.ID) + .autoStartup(true); + } + + @Override + public void configure(StateMachineStateConfigurer states) + throws Exception { + states.withStates() + .initial(AccommodationDeclarationState.START) + .states(EnumSet.of( + AccommodationDeclarationState.DRAFT, + AccommodationDeclarationState.APPROVED, + AccommodationDeclarationState.AWAITING, + AccommodationDeclarationState.COMPLETED, + AccommodationDeclarationState.REJECTED + )); + } + + @Bean(ERightsBeanNames.AccommodationDeclarationStateMachine.SERVICE) + public StateMachineService accommodationDeclarationStateMachine( + ApplicationContext applicationContext) { + StateMachineService result; + + MultiLineLog log = this.logger.multiLine("AccommodationDeclaration State Machine Service", + ERightsBeanNames.AccommodationDeclarationStateMachine.SERVICE); + + result = new StateMachineService<>(AccommodationDeclarationState.class, + AccommodationDeclarationEvent.class, + applicationContext, + ERightsBeanNames.AccommodationDeclarationStateMachine.FACTORY); + + log.log(); + + return result; + } + + @Override + public void configure( + StateMachineTransitionConfigurer transitions) + throws Exception { + transitions + .withExternal() + .source(AccommodationDeclarationState.START) + .target(AccommodationDeclarationState.DRAFT) + .event(AccommodationDeclarationEvent.CREATE) + .and() + .withExternal() + .source(AccommodationDeclarationState.DRAFT) + .target(AccommodationDeclarationState.AWAITING) + .event(AccommodationDeclarationEvent.SUBMIT) + .and() + .withExternal() + .source(AccommodationDeclarationState.AWAITING) + .target(AccommodationDeclarationState.APPROVED) + .event(AccommodationDeclarationEvent.APPROVE) + .and() + .withExternal() + .source(AccommodationDeclarationState.AWAITING) + .target(AccommodationDeclarationState.REJECTED) + .event(AccommodationDeclarationEvent.REJECT) + .and() + .withExternal() + .source(AccommodationDeclarationState.APPROVED) + .target(AccommodationDeclarationState.COMPLETED) + .event(AccommodationDeclarationEvent.COMPLETE) + .and() + .withExternal() + .source(AccommodationDeclarationState.APPROVED) + .target(AccommodationDeclarationState.DRAFT) + .event(AccommodationDeclarationEvent.RESET_APPROVAL) + .and() + .withExternal() + .source(AccommodationDeclarationState.REJECTED) + .target(AccommodationDeclarationState.DRAFT) + .event(AccommodationDeclarationEvent.RESUBMIT); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/AccommodationPaymentStateMachineFactoryConfiguration.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/AccommodationPaymentStateMachineFactoryConfiguration.java new file mode 100644 index 0000000..0dfd0db --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/AccommodationPaymentStateMachineFactoryConfiguration.java @@ -0,0 +1,146 @@ +package eu.europa.eeas.erights.common.boot.configuration.statemachine; + +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.ConfigurationLogger; +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.MultiLineLog; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationPaymentEvent; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationPaymentState; +import java.util.EnumSet; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.statemachine.config.EnableStateMachineFactory; +import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter; +import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer; +import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; +import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; + +/** + * @author ienaccat + * @since 5.0.0 + */ +@Configuration +@EnableStateMachineFactory(name = {ERightsBeanNames.AccommodationPaymentStateMachine.FACTORY}) +public class AccommodationPaymentStateMachineFactoryConfiguration extends + EnumStateMachineConfigurerAdapter { + + protected final ConfigurationLogger logger = ConfigurationLogger.getConfigurationLogger( + AccommodationPaymentStateMachineFactoryConfiguration.class); + + @Override + public void configure( + StateMachineConfigurationConfigurer config) + throws Exception { + config.withConfiguration() + .machineId(ERightsBeanNames.AccommodationPaymentStateMachine.ID) + .autoStartup(true); + } + + @Override + public void configure(StateMachineStateConfigurer states) + throws Exception { + states.withStates() + .initial(AccommodationPaymentState.START) + .states(EnumSet.of( + AccommodationPaymentState.DRAFT, + AccommodationPaymentState.AWAITING, + AccommodationPaymentState.APPROVED, + AccommodationPaymentState.PAID, + AccommodationPaymentState.REJECTED, + AccommodationPaymentState.PENDING_VERIF_POP, + AccommodationPaymentState.REJECTED_POP, + AccommodationPaymentState.PAYMENT_FINALISED + )); + } + + @Bean(ERightsBeanNames.AccommodationPaymentStateMachine.SERVICE) + public StateMachineService AccommodationPaymentStateMachine( + ApplicationContext applicationContext) { + StateMachineService result; + + MultiLineLog log = this.logger.multiLine("AccommodationPayment State Machine Service", + ERightsBeanNames.AccommodationPaymentStateMachine.SERVICE); + + result = new StateMachineService<>(AccommodationPaymentState.class, + AccommodationPaymentEvent.class, + applicationContext, + ERightsBeanNames.AccommodationPaymentStateMachine.FACTORY); + + log.log(); + + return result; + } + + @Override + public void configure( + StateMachineTransitionConfigurer transitions) + throws Exception { + transitions + .withExternal() + .source(AccommodationPaymentState.START) + .target(AccommodationPaymentState.DRAFT) + .event(AccommodationPaymentEvent.CREATE) + .and() + .withExternal() + .source(AccommodationPaymentState.DRAFT) + .target(AccommodationPaymentState.AWAITING) + .event(AccommodationPaymentEvent.SUBMIT) + .and() + .withExternal() + .source(AccommodationPaymentState.AWAITING) + .target(AccommodationPaymentState.APPROVED) + .event(AccommodationPaymentEvent.APPROVE) + .and() + .withExternal() + .source(AccommodationPaymentState.AWAITING) + .target(AccommodationPaymentState.REJECTED) + .event(AccommodationPaymentEvent.REJECT) + .and() + .withExternal() + .source(AccommodationPaymentState.APPROVED) + .target(AccommodationPaymentState.PAID) + .event(AccommodationPaymentEvent.MARK_PAID_ABAC) + .and() + .withExternal() + .source(AccommodationPaymentState.APPROVED) + .target(AccommodationPaymentState.AWAITING) + .event(AccommodationPaymentEvent.RESET_APPROVAL) + .and() + .withExternal() + .source(AccommodationPaymentState.PAID) + .target(AccommodationPaymentState.AWAITING) + .event(AccommodationPaymentEvent.RESET_PAID) + .and() + .withExternal() + .source(AccommodationPaymentState.PAID) + .target(AccommodationPaymentState.PENDING_VERIF_POP) + .event(AccommodationPaymentEvent.SUBMIT_POP) + .and() + .withExternal() + .source(AccommodationPaymentState.PENDING_VERIF_POP) + .target(AccommodationPaymentState.REJECTED_POP) + .event(AccommodationPaymentEvent.REJECT_POP) + .and() + .withExternal() + .source(AccommodationPaymentState.REJECTED_POP) + .target(AccommodationPaymentState.PENDING_VERIF_POP) + .event(AccommodationPaymentEvent.SUBMIT_POP) + .and() + .withExternal() + .source(AccommodationPaymentState.PENDING_VERIF_POP) + .target(AccommodationPaymentState.PAYMENT_FINALISED) + .event(AccommodationPaymentEvent.APPROVE_POP) + .and() + .withExternal() + .source(AccommodationPaymentState.PAID) + .target(AccommodationPaymentState.PAYMENT_FINALISED) + .event(AccommodationPaymentEvent.MARK_PAID_FINALISED) + .and() + .withExternal() + .source(AccommodationPaymentState.REJECTED) + .target(AccommodationPaymentState.DRAFT) + .event(AccommodationPaymentEvent.RESUBMIT); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/AdvanceRequestStateMachineFactoryConfiguration.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/AdvanceRequestStateMachineFactoryConfiguration.java new file mode 100644 index 0000000..7dc8976 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/AdvanceRequestStateMachineFactoryConfiguration.java @@ -0,0 +1,344 @@ +package eu.europa.eeas.erights.common.boot.configuration.statemachine; + +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.ConfigurationLogger; +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.MultiLineLog; +import eu.europa.eeas.ananke.tools.statemachine.guard.OrGuard; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.security.MovementFilePermission; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.RequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.RequestState; +import eu.europa.eeas.erights.common.tools.statemachine.guard.request.HasAdvanceRemovalRequestPermissionGuard; +import eu.europa.eeas.erights.common.tools.statemachine.guard.request.IsOwnerGuard; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.statemachine.config.EnableStateMachineFactory; +import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter; +import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer; +import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; +import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; +import org.springframework.statemachine.guard.Guard; + +import java.util.EnumSet; + +@Configuration +@EnableStateMachineFactory(name = {ERightsBeanNames.AdvanceRequestStateMachine.FACTORY}) +@Import(CommonStatMachineFactoryConfiguration.class) +public class AdvanceRequestStateMachineFactoryConfiguration extends EnumStateMachineConfigurerAdapter { + + protected final ConfigurationLogger logger = ConfigurationLogger.getConfigurationLogger(AdvanceRequestStateMachineFactoryConfiguration.class); + + + + private final Guard isSystemUserGuard; + + public AdvanceRequestStateMachineFactoryConfiguration( + @Qualifier(ERightsBeanNames.MovementFileStateMachine.Guard.IS_SYSTEM_USER) + Guard isSystemUserGuard) { + this.isSystemUserGuard = isSystemUserGuard; + } + + @Override + public void configure(StateMachineConfigurationConfigurer config) throws Exception { + config.withConfiguration() + .machineId(ERightsBeanNames.AdvanceRequestStateMachine.ID) + .autoStartup(true); + } + + @Override + public void configure(StateMachineStateConfigurer states) throws Exception { + states.withStates() + .initial(AdvanceRequestState.START) + .states(EnumSet.of(AdvanceRequestState.APPROVED, + AdvanceRequestState.AWAITING, + AdvanceRequestState.PAID, + AdvanceRequestState.REJECTED, + AdvanceRequestState.DRAFT, + AdvanceRequestState.SENT_TO_P2P)); + } + + @Bean(ERightsBeanNames.AdvanceRequestStateMachine.SERVICE) + public StateMachineService advanceRequestStateMachineService(ApplicationContext applicationContext) { + StateMachineService result; + + MultiLineLog log = this.logger.multiLine("Advance Request State Machine Service", ERightsBeanNames.AdvanceRequestStateMachine.SERVICE); + + result = new StateMachineService<>(AdvanceRequestState.class, + AdvanceRequestEvent.class, + applicationContext, + ERightsBeanNames.AdvanceRequestStateMachine.FACTORY); + + log.log(); + + return result; + } + + @Override + public void configure(StateMachineTransitionConfigurer transitions) throws Exception { + transitions + .withExternal() + .source(AdvanceRequestState.START) + .target(AdvanceRequestState.DRAFT) + .event(AdvanceRequestEvent.SAVE_AS_DRAFT) + //.guard(hasSubmitOrIsOwnerGuard()) + .and() + .withExternal() + .source(AdvanceRequestState.DRAFT) + .target(AdvanceRequestState.AWAITING) + .event(AdvanceRequestEvent.SUBMIT) + .guard(hasSubmitOrIsOwnerGuard()) + .and() + .withExternal() + .source(AdvanceRequestState.AWAITING) + .target(AdvanceRequestState.DRAFT) + .event(AdvanceRequestEvent.CANCEL) + .guard(hasSubmitOrIsOwnerGuard()) + .and() + .withExternal() + .source(AdvanceRequestState.AWAITING) + .target(AdvanceRequestState.APPROVED) + .event(AdvanceRequestEvent.APPROVE) + .guard(hasApproveGuard()) + .and() + .withExternal() + .source(AdvanceRequestState.AWAITING) + .target(AdvanceRequestState.REJECTED) + .event(AdvanceRequestEvent.REJECT) + .guard(hasRejectGuardOrIsSystemOwnerGuard()) + + .and() + .withExternal() + .source(AdvanceRequestState.APPROVED) + .target(AdvanceRequestState.PAID) + .event(AdvanceRequestEvent.PAY) + .guard(hasAdvPayAbacGuardOrIsSystemOwnerGuard()) + .and() + .withExternal() + .source(AdvanceRequestState.APPROVED) + .target(AdvanceRequestState.REJECTED) + .event(AdvanceRequestEvent.REJECT) + .guard(hasRejectGuardOrIsSystemOwnerGuard()) + + .and() + .withExternal() + .source(AdvanceRequestState.PAID) + .target(AdvanceRequestState.REJECTED) + .event(AdvanceRequestEvent.REJECT) + .guard(hasPayRejectGuard()) + .and() + .withExternal() + .source(AdvanceRequestState.APPROVED) + .target(AdvanceRequestState.PAID) + .event(AdvanceRequestEvent.MARK_PAID) + .guard(hasAdvPayManuallyGuard()) + .and() + .withExternal() + .source(AdvanceRequestState.REJECTED) + .target(AdvanceRequestState.DRAFT) + .event(AdvanceRequestEvent.RESUBMIT) + .guard(hasResubmitOrIsOwnerGuard()) + .and() + .withExternal() + .source(AdvanceRequestState.SENT_TO_P2P) + .target(AdvanceRequestState.APPROVED) + .event(AdvanceRequestEvent.ERROR_IN_P2P) + .guard(hasRejectGuardOrIsSystemOwnerGuard()) + .and() + .withExternal() + .source(AdvanceRequestState.APPROVED) + .target(AdvanceRequestState.SENT_TO_P2P) + .event(AdvanceRequestEvent.SEND_TO_P2P) + .guard(hasAdvPayAbacGuardOrIsSystemOwnerGuard()) + .and() + .withExternal() + .source(AdvanceRequestState.SENT_TO_P2P) + .target(AdvanceRequestState.PAID) + .event(AdvanceRequestEvent.SUCCESS_IN_P2P) + .guard(hasAdvPayAbacGuardOrIsSystemOwnerGuard()); + } + + @Bean(ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_REJECT_REM_REQUEST) + public Guard hasRejectGuard() { + MultiLineLog log = this.logger.multiLine("AdvanceRequestStateMachine - Guard - Has Reject Adv REM Request", + ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_REJECT_REM_REQUEST); + log.log(); + return new HasAdvanceRemovalRequestPermissionGuard(MovementFilePermission.REQUEST_REM_REJECT); + } + + @Bean(ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_APPROVE_REM_REQUEST) + public Guard hasApproveGuard() { + MultiLineLog log = this.logger.multiLine("AdvanceRequestStateMachine - Guard - Has Approve Adv REM Request", ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_APPROVE_REM_REQUEST); + log.log(); + return new HasAdvanceRemovalRequestPermissionGuard(MovementFilePermission.REQUEST_REM_APPROVE); + } + + @Bean(ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_RESUBMIT_ADV_REM_REQUEST) + public Guard hasAdvResubmitGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("AdvanceRequestStateMachine - Guard - Has Resubmit Adv REM Request", ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_RESUBMIT_ADV_REM_REQUEST); + + result = new HasAdvanceRemovalRequestPermissionGuard(MovementFilePermission.REQUEST_REM_RESUBMIT); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_PAY_ADV_REM_REQUEST_MANUALLY) + public Guard hasAdvPayManuallyGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("AdvanceRequestStateMachine - Guard - Has Pay ADV REM request Manually", ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_PAY_ADV_REM_REQUEST_MANUALLY); + + result = new HasAdvanceRemovalRequestPermissionGuard(MovementFilePermission.REQUEST_REM_PAY_MANUALLY); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_PAY_ADV_REM_REQUEST_ABAC) + public Guard hasAdvPayAbacGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("AdvanceRequestStateMachine - Guard - Has Pay ADV REM request Abac", ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_PAY_ADV_REM_REQUEST_ABAC); + + + result = new HasAdvanceRemovalRequestPermissionGuard(MovementFilePermission.REQUEST_REM_PAY_ABAC); + + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_REVIEW_ADV_REM_REQUEST) + public Guard hasReviewGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("AdvanceRequestStateMachine - Guard - Has Review ADV REM request", ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_REVIEW_ADV_REM_REQUEST); + + result = new HasAdvanceRemovalRequestPermissionGuard(MovementFilePermission.REQUEST_REM_REVIEW); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_REJECT_PAID_ADV_REM_REQUEST) + public Guard hasPayRejectGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("AdvanceRequestStateMachine - Guard - Has Reject Paid ADV REM request", ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_REJECT_PAID_ADV_REM_REQUEST); + + result = new HasAdvanceRemovalRequestPermissionGuard(MovementFilePermission.REQUEST_REJECT_PAID); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.AdvanceRequestStateMachine.Guard.IS_OWNER) + public Guard isOwnerGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("AdvanceRequestStateMachine - Guard - Is Staff Member", ERightsBeanNames.AdvanceRequestStateMachine.Guard.IS_OWNER); + + result = new IsOwnerGuard(); + + log.log(); + + return result; + } + + + + @Bean(ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_SUBMIT) + public Guard hasSubmitGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("AdvanceRequestStateMachine - Guard - Has Submit", ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_SUBMIT); + + result = new HasAdvanceRemovalRequestPermissionGuard(MovementFilePermission.REQUEST_REM_SUBMIT); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.AdvanceRequestStateMachine.Guard.IS_OWNER_OR_HAS_RESUBMIT) + public Guard hasResubmitOrIsOwnerGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("AdvanceRequestStateMachine - Guard - Is StaffMember Or Has Resubmit permission", + ERightsBeanNames.AdvanceRequestStateMachine.Guard.IS_OWNER_OR_HAS_RESUBMIT); + + result = new OrGuard<>(hasAdvResubmitGuard(), isOwnerGuard()); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.AdvanceRequestStateMachine.Guard.IS_OWNER_OR_HAS_SUBMIT) + public Guard hasSubmitOrIsOwnerGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("AdvanceRequestStateMachine - Guard - Is StaffMember Or Has Submit permission", + ERightsBeanNames.AdvanceRequestStateMachine.Guard.IS_OWNER_OR_HAS_SUBMIT); + + result = new OrGuard<>(hasSubmitGuard(), isOwnerGuard()); + + log.log(); + + return result; + } + + + + @Bean(ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_PAYADV_OR_IS_SYSTEM_USER) + public Guard hasAdvPayAbacGuardOrIsSystemOwnerGuard() { + + + MultiLineLog log = this.logger.multiLine("AdvanceRequestStateMachine - Guard - hasAdvPayAbacGuard Or IsSystemOwnerGuard", + ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_PAYADV_OR_IS_SYSTEM_USER); + + @SuppressWarnings("unchecked") + Guard result = + new OrGuard<>( + hasAdvPayAbacGuard(), + (Guard) (Guard) isSystemUserGuard + ); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_PAYADV_OR_IS_SYSTEM_USER) + public Guard hasRejectGuardOrIsSystemOwnerGuard() { + + + MultiLineLog log = this.logger.multiLine("AdvanceRequestStateMachine - Guard - hasRejectGuard Or IsSystemOwnerGuard", + ERightsBeanNames.AdvanceRequestStateMachine.Guard.HAS_PAYADV_OR_IS_SYSTEM_USER); + + @SuppressWarnings("unchecked") + Guard result = + new OrGuard<>( + hasRejectGuard(), + (Guard) (Guard) isSystemUserGuard + ); + + log.log(); + + return result; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/ClearingRequestStateMachineFactoryConfiguration.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/ClearingRequestStateMachineFactoryConfiguration.java new file mode 100644 index 0000000..727f185 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/ClearingRequestStateMachineFactoryConfiguration.java @@ -0,0 +1,338 @@ +package eu.europa.eeas.erights.common.boot.configuration.statemachine; + +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.ConfigurationLogger; +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.MultiLineLog; +import eu.europa.eeas.ananke.tools.statemachine.guard.OrGuard; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.security.MovementFilePermission; +import eu.europa.eeas.erights.common.tools.statemachine.*; +import eu.europa.eeas.erights.common.tools.statemachine.ClearingRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.guard.request.HasClearingRequestPermissionGuard; +import eu.europa.eeas.erights.common.tools.statemachine.guard.request.IsClearingOwnerGuard; +import eu.europa.eeas.erights.common.tools.statemachine.guard.request.IsSystemUserGuard; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.statemachine.config.EnableStateMachineFactory; +import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter; +import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer; +import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; +import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; +import org.springframework.statemachine.guard.Guard; + +import java.util.EnumSet; + +@Configuration +@EnableStateMachineFactory(name = {ERightsBeanNames.ClearingRequestStateMachine.FACTORY}) +@Import(CommonStatMachineFactoryConfiguration.class) +public class ClearingRequestStateMachineFactoryConfiguration extends EnumStateMachineConfigurerAdapter { + + protected final ConfigurationLogger logger = ConfigurationLogger.getConfigurationLogger(ClearingRequestStateMachineFactoryConfiguration.class); + + private final Guard isSystemUserGuard; + + public ClearingRequestStateMachineFactoryConfiguration( + @Qualifier(ERightsBeanNames.MovementFileStateMachine.Guard.IS_SYSTEM_USER) + Guard isSystemUserGuard) { + this.isSystemUserGuard = isSystemUserGuard; + } + + + @Override + public void configure(StateMachineConfigurationConfigurer config) throws Exception { + config.withConfiguration() + .machineId(ERightsBeanNames.ClearingRequestStateMachine.ID) + .autoStartup(true); + } + + @Override + public void configure(StateMachineStateConfigurer states) throws Exception { + states.withStates() + .initial(ClearingRequestState.START) + .states(EnumSet.of(ClearingRequestState.APPROVED, + ClearingRequestState.AWAITING, + ClearingRequestState.PAID, + ClearingRequestState.REJECTED, + ClearingRequestState.DRAFT, + ClearingRequestState.SENT_TO_P2P)); + } + + @Bean(ERightsBeanNames.ClearingRequestStateMachine.SERVICE) + public StateMachineService ClearingRequestStateMachineService(ApplicationContext applicationContext) { + StateMachineService result; + + MultiLineLog log = this.logger.multiLine("Clearing Request State Machine Service", ERightsBeanNames.ClearingRequestStateMachine.SERVICE); + + result = new StateMachineService<>(ClearingRequestState.class, + ClearingRequestEvent.class, + applicationContext, + ERightsBeanNames.ClearingRequestStateMachine.FACTORY); + + log.log(); + + return result; + } + + @Override + public void configure(StateMachineTransitionConfigurer transitions) throws Exception { + transitions + .withExternal() + .source(ClearingRequestState.START) + .target(ClearingRequestState.DRAFT) + .event(ClearingRequestEvent.SAVE_AS_DRAFT) + .guard(hasSubmitOrIsOwnerGuard()) + .and() + .withExternal() + .source(ClearingRequestState.DRAFT) + .target(ClearingRequestState.AWAITING) + .event(ClearingRequestEvent.SUBMIT) + .guard(hasSubmitOrIsOwnerGuard()) + .and() + .withExternal() + .source(ClearingRequestState.AWAITING) + .target(ClearingRequestState.DRAFT) + .event(ClearingRequestEvent.CANCEL) + .guard(hasSubmitOrIsOwnerGuard()) + .and() + .withExternal() + .source(ClearingRequestState.AWAITING) + .target(ClearingRequestState.APPROVED) + .event(ClearingRequestEvent.APPROVE) + .guard(hasApproveGuard()) + .and() + .withExternal() + .source(ClearingRequestState.AWAITING) + .target(ClearingRequestState.REJECTED) + .event(ClearingRequestEvent.REJECT) + .guard(hasRejectGuard()) + .and() + .withExternal() + .source(ClearingRequestState.APPROVED) + .target(ClearingRequestState.PAID) + .event(ClearingRequestEvent.PAY) + .guard(hasClrPayAbacGuard()) + .and() + .withExternal() + .source(ClearingRequestState.APPROVED) + .target(ClearingRequestState.REJECTED) + .event(ClearingRequestEvent.REJECT) + .guard(hasRejectGuard()) + + .and() + .withExternal() + .source(ClearingRequestState.PAID) + .target(ClearingRequestState.REJECTED) + .event(ClearingRequestEvent.REJECT) + .guard(hasPayRejectGuard()) + .and() + .withExternal() + .source(ClearingRequestState.APPROVED) + .target(ClearingRequestState.PAID) + .event(ClearingRequestEvent.MARK_PAID) + .guard(hasClrPayManuallyGuard()) + .and() + .withExternal() + .source(ClearingRequestState.REJECTED) + .target(ClearingRequestState.DRAFT) + .event(ClearingRequestEvent.RESUBMIT) + .guard(hasResubmitOrIsOwnerGuard()) + .and() + .withExternal() + .source(ClearingRequestState.SENT_TO_P2P) + .target(ClearingRequestState.APPROVED) + .event(ClearingRequestEvent.ERROR_IN_P2P) + .guard(hasRejectGuardOrIsSystemOwnerGuard()) + .and() + .withExternal() + .source(ClearingRequestState.APPROVED) + .target(ClearingRequestState.SENT_TO_P2P) + .event(ClearingRequestEvent.SEND_TO_P2P) + .guard(hasClrPayAbacGuardOrIsSystemOwnerGuard()) + .and() + .withExternal() + .source(ClearingRequestState.SENT_TO_P2P) + .target(ClearingRequestState.PAID) + .event(ClearingRequestEvent.SUCCESS_IN_P2P) + .guard(hasClrPayAbacGuardOrIsSystemOwnerGuard()); + } + + @Bean(ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_REJECT_CLR_REM_REQUEST) + public Guard hasRejectGuard() { + MultiLineLog log = this.logger.multiLine("ClearingRequestStateMachine - Guard - Has Reject Adv REM Request", + ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_REJECT_CLR_REM_REQUEST); + log.log(); + return new HasClearingRequestPermissionGuard(MovementFilePermission.REQUEST_REM_REJECT); + } + + @Bean(ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_APPROVE_CLR_REM_REQUEST) + public Guard hasApproveGuard() { + MultiLineLog log = this.logger.multiLine("ClearingRequestStateMachine - Guard - Has Approve Adv REM Request", + ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_APPROVE_CLR_REM_REQUEST); + log.log(); + return new HasClearingRequestPermissionGuard(MovementFilePermission.REQUEST_REM_APPROVE); + } + + @Bean(ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_RESUBMIT_CLR_REQUEST) + public Guard hasAdvResubmitGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("ClearingRequestStateMachine - Guard - Has Resubmit Clearing Request", ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_RESUBMIT_CLR_REQUEST); + + result = new HasClearingRequestPermissionGuard(MovementFilePermission.REQUEST_REM_RESUBMIT); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_PAY_CLR_REQUEST_MANUALLY) + public Guard hasClrPayManuallyGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("ClearingRequestStateMachine - Guard - Has Pay CLR request Manually", ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_PAY_CLR_REQUEST_MANUALLY); + + result = new HasClearingRequestPermissionGuard(MovementFilePermission.REQUEST_REM_PAY_MANUALLY); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_PAY_CLR_REQUEST_ABAC) + public Guard hasClrPayAbacGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("ClearingRequestStateMachine - Guard - Has Pay CLR request Abac", ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_PAY_CLR_REQUEST_ABAC); + + result = new HasClearingRequestPermissionGuard(MovementFilePermission.REQUEST_REM_PAY_ABAC); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_REVIEW_CLR_REQUEST) + public Guard hasReviewGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("ClearingRequestStateMachine - Guard - Has Review ADV REM request", ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_REVIEW_CLR_REQUEST); + + result = new HasClearingRequestPermissionGuard(MovementFilePermission.REQUEST_REM_REVIEW); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_REJECT_PAID_CLR_REQUEST) + public Guard hasPayRejectGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("ClearingRequestStateMachine - Guard - Has Rejct Paid ADV REM request", ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_REJECT_PAID_CLR_REQUEST); + + result = new HasClearingRequestPermissionGuard(MovementFilePermission.REQUEST_REJECT_PAID); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.ClearingRequestStateMachine.Guard.IS_OWNER) + public Guard isOwnerGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("ClearingRequestStateMachine - Guard - Is Staff Member", ERightsBeanNames.ClearingRequestStateMachine.Guard.IS_OWNER); + + result = new IsClearingOwnerGuard(); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_SUBMIT) + public Guard hasSubmitGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("ClearingRequestStateMachine - Guard - Has Submit", ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_SUBMIT); + + result = new HasClearingRequestPermissionGuard(MovementFilePermission.REQUEST_REM_SUBMIT); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.ClearingRequestStateMachine.Guard.IS_OWNER_OR_HAS_RESUBMIT) + public Guard hasResubmitOrIsOwnerGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("ClearingRequestStateMachine - Guard - Is StaffMember Or Has Resubmit permission", + ERightsBeanNames.ClearingRequestStateMachine.Guard.IS_OWNER_OR_HAS_RESUBMIT); + + result = new OrGuard<>(hasAdvResubmitGuard(), isOwnerGuard()); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.ClearingRequestStateMachine.Guard.IS_OWNER_OR_HAS_SUBMIT) + public Guard hasSubmitOrIsOwnerGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("ClearingRequestStateMachine - Guard - Is StaffMember Or Has Submit permission", + ERightsBeanNames.ClearingRequestStateMachine.Guard.IS_OWNER_OR_HAS_SUBMIT); + + result = new OrGuard<>(hasSubmitGuard(), isOwnerGuard()); + + log.log(); + + return result; + } + + + + + @Bean(ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_PAY_CLR_OR_IS_SYSTEM_USER) + public Guard hasClrPayAbacGuardOrIsSystemOwnerGuard() { + + + MultiLineLog log = this.logger.multiLine("ClearingRequestStateMachine - Guard - hasAdvPayAbacGuard Or IsSystemOwnerGuard", + ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_PAY_CLR_OR_IS_SYSTEM_USER); + + @SuppressWarnings("unchecked") + Guard result = + new OrGuard<>( + hasClrPayAbacGuard(), + (Guard) (Guard) isSystemUserGuard + ); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_PAY_CLR_OR_IS_SYSTEM_USER) + public Guard hasRejectGuardOrIsSystemOwnerGuard() { + + + MultiLineLog log = this.logger.multiLine("ClearingRequestStateMachine - Guard - hasRejectGuard Or IsSystemOwnerGuard", + ERightsBeanNames.ClearingRequestStateMachine.Guard.HAS_PAY_CLR_OR_IS_SYSTEM_USER); + + @SuppressWarnings("unchecked") + Guard result = + new OrGuard<>( + hasRejectGuard(), + (Guard) (Guard) isSystemUserGuard + ); + + log.log(); + + return result; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/CommonStatMachineFactoryConfiguration.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/CommonStatMachineFactoryConfiguration.java new file mode 100644 index 0000000..dd041ca --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/CommonStatMachineFactoryConfiguration.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.boot.configuration.statemachine; + +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.ConfigurationLogger; +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.MultiLineLog; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.RequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.RequestState; +import eu.europa.eeas.erights.common.tools.statemachine.guard.request.IsSystemUserGuard; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.statemachine.config.EnableStateMachineFactory; +import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter; +import org.springframework.statemachine.guard.Guard; + + +@Configuration +public class CommonStatMachineFactoryConfiguration extends EnumStateMachineConfigurerAdapter { + + protected final ConfigurationLogger logger = ConfigurationLogger.getConfigurationLogger(CommonStatMachineFactoryConfiguration.class); + + @Bean(ERightsBeanNames.MovementFileStateMachine.Guard.IS_SYSTEM_USER) + public Guard isSystemUserGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("RequestStateMachine - Guard - Is Syustem User", ERightsBeanNames.MovementFileStateMachine.Guard.IS_SYSTEM_USER); + + result = new IsSystemUserGuard(); + + log.log(); + + return result; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/InstallationStateMachineFactoryConfiguration.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/InstallationStateMachineFactoryConfiguration.java new file mode 100644 index 0000000..e35c9b6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/InstallationStateMachineFactoryConfiguration.java @@ -0,0 +1,124 @@ +package eu.europa.eeas.erights.common.boot.configuration.statemachine; + +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.ConfigurationLogger; +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.MultiLineLog; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.tools.statemachine.InstallationStateMachineService; +import eu.europa.eeas.erights.common.tools.statemachine.InstallationEvent; +import eu.europa.eeas.erights.common.tools.statemachine.InstallationState; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.statemachine.config.EnableStateMachineFactory; +import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter; +import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer; +import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; +import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; + +import java.util.EnumSet; + +@Configuration +@EnableStateMachineFactory(name = {ERightsBeanNames.InstallationStateMachine.FACTORY}) +public class InstallationStateMachineFactoryConfiguration extends EnumStateMachineConfigurerAdapter { + + protected final ConfigurationLogger logger = ConfigurationLogger.getConfigurationLogger(InstallationStateMachineFactoryConfiguration.class); + + @Override + public void configure(StateMachineConfigurationConfigurer config) throws Exception { + config.withConfiguration() + .machineId(ERightsBeanNames.InstallationStateMachine.ID) + .autoStartup(true); + } + + @Override + public void configure(StateMachineStateConfigurer states) + throws Exception { + states.withStates() + .initial(InstallationState.START) + .states(EnumSet.of( + InstallationState.DRAFT, + InstallationState.APPROVED, + InstallationState.AWAITING, + InstallationState.PAID, + InstallationState.REJECTED + )); + } + + @Bean(ERightsBeanNames.InstallationStateMachine.SERVICE) + public InstallationStateMachineService InstallationStateMachineService(ApplicationContext applicationContext) { + InstallationStateMachineService result; + + MultiLineLog log = this.logger.multiLine("Installation State Machine Service", ERightsBeanNames.InstallationStateMachine.SERVICE); + + result = new InstallationStateMachineService<>(InstallationState.class, + InstallationEvent.class, + applicationContext, + ERightsBeanNames.InstallationStateMachine.FACTORY); + + log.log(); + + return result; + } + + @Override + public void configure( + StateMachineTransitionConfigurer transitions) + throws Exception { + transitions + .withExternal() + .source(InstallationState.START) + .target(InstallationState.DRAFT) + .event(InstallationEvent.CREATE) + .and() + .withExternal() + .source(InstallationState.DRAFT) + .target(InstallationState.AWAITING) + .event(InstallationEvent.SUBMIT) + .and() + .withExternal() + .source(InstallationState.AWAITING) + .target(InstallationState.APPROVED) + .event(InstallationEvent.APPROVE) + .and() + .withExternal() + .source(InstallationState.AWAITING) + .target(InstallationState.REJECTED) + .event(InstallationEvent.REJECT) + .and() + .withExternal() + .source(InstallationState.APPROVED) + .target(InstallationState.PAID) + .event(InstallationEvent.MARK_PAID) + .and() + .withExternal() + .source(InstallationState.AWAITING) + .target(InstallationState.PAID) + .event(InstallationEvent.MARK_PAID_SYSPER) + .and() + .withExternal() + .source(InstallationState.APPROVED) + .target(InstallationState.REJECTED) + .event(InstallationEvent.REJECT) + .and() + .withExternal() + .source(InstallationState.REJECTED) + .target(InstallationState.DRAFT) + .event(InstallationEvent.RESUBMIT) + .and() + .withExternal() + .source(InstallationState.PAID) + .target(InstallationState.AWAITING) + .event(InstallationEvent.UPDATE_PAID) + .and() + .withExternal() + .source(InstallationState.APPROVED) + .target(InstallationState.AWAITING) + .event(InstallationEvent.RESET_APPROVAL) + .and() + .withExternal() + .source(InstallationState.PAID) + .target(InstallationState.DRAFT) + .event(InstallationEvent.UPDATE_PAID_TO_DRAFT); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/MovementFileStateMachineFactoryConfiguration.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/MovementFileStateMachineFactoryConfiguration.java new file mode 100644 index 0000000..d5d70ed --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/MovementFileStateMachineFactoryConfiguration.java @@ -0,0 +1,280 @@ +package eu.europa.eeas.erights.common.boot.configuration.statemachine; + +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.ConfigurationLogger; +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.MultiLineLog; +import eu.europa.eeas.ananke.tools.statemachine.guard.OrGuard; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.security.MovementFilePermission; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileEvent; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import eu.europa.eeas.erights.common.tools.statemachine.guard.HasMovementFilePermissionGuard; +import eu.europa.eeas.erights.common.tools.statemachine.guard.IsOngoingGuard; +import eu.europa.eeas.erights.common.tools.statemachine.guard.IsOwnerGuard; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.statemachine.config.EnableStateMachineFactory; +import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter; +import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer; +import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; +import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; +import org.springframework.statemachine.guard.Guard; + +import java.util.EnumSet; + +@Configuration +@EnableStateMachineFactory(name = ERightsBeanNames.MovementFileStateMachine.FACTORY) +public class MovementFileStateMachineFactoryConfiguration extends EnumStateMachineConfigurerAdapter { + + protected final ConfigurationLogger logger = ConfigurationLogger.getConfigurationLogger(MovementFileStateMachineFactoryConfiguration.class); + + @Override + public void configure(StateMachineConfigurationConfigurer config) throws Exception { + config.withConfiguration() + .machineId(ERightsBeanNames.MovementFileStateMachine.ID) + .autoStartup(true); + } + + @Override + public void configure(StateMachineStateConfigurer states) throws Exception { + states.withStates() + .initial(MovementFileState.START) + .states(EnumSet.allOf(MovementFileState.class)); + } + + @Override + public void configure(StateMachineTransitionConfigurer transitions) throws Exception { + appendStartTransitions(transitions); + appendPendingTransitions(transitions); + appendDraftTransition(transitions); + appendWithdrawnTransitions(transitions); + appendConfirmedTransitions(transitions); + appendOngoingTransitions(transitions); + appendCanceledTransitions(transitions); + appendCompletedTransitions(transitions); + } + + private void appendCanceledTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(MovementFileState.CANCELLED) + .target(MovementFileState.WITHDRAWN) + .event(MovementFileEvent.REOPEN); + } + + private void appendCompletedTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(MovementFileState.COMPLETED) + .target(MovementFileState.CONFIRMED) + .event(MovementFileEvent.CONFIRM) + .and() + .withExternal() + .source(MovementFileState.COMPLETED) + .target(MovementFileState.ONGOING) + .event(MovementFileEvent.ONGOING); + } + + private void appendConfirmedTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(MovementFileState.CONFIRMED) + .target(MovementFileState.WITHDRAWN) + .event(MovementFileEvent.WITHDRAW) + .guard(hasWithdrawGuard()) + .and() + .withExternal() + .source(MovementFileState.CONFIRMED) + .target(MovementFileState.ONGOING) + .event(MovementFileEvent.ONGOING) + .and() + .withExternal() + .source(MovementFileState.CONFIRMED) + .target(MovementFileState.COMPLETED) + .event(MovementFileEvent.COMPLETE); + } + + private void appendStartTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(MovementFileState.START) + .target(MovementFileState.PENDING) + .event(MovementFileEvent.CREATE) + .guard(hasCreateGuard()) + .and() + .withExternal() + .source(MovementFileState.START) + .target(MovementFileState.DRAFT) + .event(MovementFileEvent.SAVE_AS_DRAFT) + .guard(hasCreateGuard()); + } + + private void appendOngoingTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(MovementFileState.ONGOING) + .target(MovementFileState.COMPLETED) + .event(MovementFileEvent.COMPLETE) + .and() + .withExternal() + .source(MovementFileState.ONGOING) + .target(MovementFileState.WITHDRAWN) + .event(MovementFileEvent.WITHDRAW) + .guard(hasWithdrawGuard()); + } + + private void appendPendingTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(MovementFileState.PENDING) + .target(MovementFileState.CONFIRMED) + .event(MovementFileEvent.CONFIRM) + .guard(hasConfirmOrIsTheOwnerGuard()) + .and() + .withExternal() + .source(MovementFileState.PENDING) + .target(MovementFileState.WITHDRAWN) + .event(MovementFileEvent.WITHDRAW) + .guard(hasWithdrawOrIsTheOwnerGuard()); + } + + private void appendDraftTransition(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(MovementFileState.DRAFT) + .target(MovementFileState.PENDING) + .event(MovementFileEvent.CREATE) + .guard(hasCreateGuard()); + } + + private void appendWithdrawnTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(MovementFileState.WITHDRAWN) + .target(MovementFileState.CANCELLED) + .event(MovementFileEvent.CANCEL) + .and() + .withExternal() + .source(MovementFileState.WITHDRAWN) + .target(MovementFileState.CONFIRMED) + .event(MovementFileEvent.CONFIRM) + .guard(hasConfirmGuard()); + } + + @Bean(ERightsBeanNames.MovementFileStateMachine.SERVICE) + public StateMachineService movementFileStateMachineService(ApplicationContext applicationContext) { + StateMachineService result = null; + + MultiLineLog log = this.logger.multiLine("Movement file State Machine Service", ERightsBeanNames.MovementFileStateMachine.SERVICE); + + result = new StateMachineService<>(MovementFileState.class, + MovementFileEvent.class, + applicationContext, + ERightsBeanNames.MovementFileStateMachine.FACTORY); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.MovementFileStateMachine.Guard.IS_ONGOING) + public Guard isOngoingGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("Movement file State State Machine - Guard - Is Ongoing (current-date > starting-date)", + ERightsBeanNames.MovementFileStateMachine.Guard.IS_ONGOING); + + result = new IsOngoingGuard(); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.MovementFileStateMachine.Guard.HAS_DELETE) + public Guard hasDeleteGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("MovementFile State Machine - Guard - Has Delete", ERightsBeanNames.MovementFileStateMachine.Guard.HAS_DELETE); + + result = new HasMovementFilePermissionGuard(MovementFilePermission.DELETE); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.MovementFileStateMachine.Guard.HAS_CREATE) + public Guard hasCreateGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("MovementFile State Machine - Guard - Has Create", ERightsBeanNames.MovementFileStateMachine.Guard.HAS_CREATE); + + result = new HasMovementFilePermissionGuard(MovementFilePermission.CREATE); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.MovementFileStateMachine.Guard.HAS_CONFIRM) + public Guard hasConfirmGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("MovementFile State Machine - Guard - Has Confirm", ERightsBeanNames.MovementFileStateMachine.Guard.HAS_CONFIRM); + + result = new HasMovementFilePermissionGuard(MovementFilePermission.CONFIRM); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.MovementFileStateMachine.Guard.HAS_WITHDRAW) + public Guard hasWithdrawGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("MovementFile State Machine - Guard - Has Withdraw", ERightsBeanNames.MovementFileStateMachine.Guard.HAS_WITHDRAW); + + result = new HasMovementFilePermissionGuard(MovementFilePermission.WITHDRAW); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.MovementFileStateMachine.Guard.IS_OWNER) + public Guard isOwner() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("MovementFile State Machine - Guard - Is Staff Member", ERightsBeanNames.MovementFileStateMachine.Guard.IS_OWNER); + + result = new IsOwnerGuard(); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.MovementFileStateMachine.Guard.IS_OWNER_CONFIRM) + public Guard hasConfirmOrIsTheOwnerGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("MovementFile State Machine - Guard - Is StaffMember With Confirm", + ERightsBeanNames.MovementFileStateMachine.Guard.IS_OWNER_CONFIRM); + + result = new OrGuard<>(hasConfirmGuard(), isOwner()); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.MovementFileStateMachine.Guard.IS_OWNER_WITH_WITHDRAW) + public Guard hasWithdrawOrIsTheOwnerGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("MovementFile State Machine - Guard - Is StaffMember With Withdraw", + ERightsBeanNames.MovementFileStateMachine.Guard.IS_OWNER_WITH_WITHDRAW); + + result = new OrGuard<>(hasWithdrawGuard(), isOwner()); + + log.log(); + + return result; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/PostingAllowancesStateMachineFactoryConfiguration.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/PostingAllowancesStateMachineFactoryConfiguration.java new file mode 100644 index 0000000..bcc4270 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/PostingAllowancesStateMachineFactoryConfiguration.java @@ -0,0 +1,116 @@ +package eu.europa.eeas.erights.common.boot.configuration.statemachine; + +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.ConfigurationLogger; +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.MultiLineLog; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceEvent; +import eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceState; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.statemachine.config.EnableStateMachineFactory; +import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter; +import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer; +import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; +import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; + +import java.util.EnumSet; + +@Configuration +@EnableStateMachineFactory(name = ERightsBeanNames.PostingAllowanceStateMachine.FACTORY) +public class PostingAllowancesStateMachineFactoryConfiguration extends EnumStateMachineConfigurerAdapter { + + protected final ConfigurationLogger logger = ConfigurationLogger.getConfigurationLogger(PostingAllowancesStateMachineFactoryConfiguration.class); + + @Override + public void configure(StateMachineConfigurationConfigurer config) throws Exception { + config.withConfiguration() + .machineId(ERightsBeanNames.PostingAllowanceStateMachine.ID) + .autoStartup(true); + } + + @Override + public void configure(StateMachineStateConfigurer states) throws Exception { + states.withStates() + .initial(PostingAllowanceState.START) + .states(EnumSet.allOf(PostingAllowanceState.class)); + } + + @Bean(ERightsBeanNames.PostingAllowanceStateMachine.SERVICE) + public StateMachineService entitlementRequestStateMachineService(ApplicationContext applicationContext) { + StateMachineService result; + + MultiLineLog log = this.logger.multiLine("Posting Allowance State Machine Service", ERightsBeanNames.PostingAllowanceStateMachine.SERVICE); + + result = new StateMachineService<>(PostingAllowanceState.class, + PostingAllowanceEvent.class, + applicationContext, + ERightsBeanNames.PostingAllowanceStateMachine.FACTORY); + + log.log(); + + return result; + } + + @Override + public void configure(StateMachineTransitionConfigurer transitions) throws Exception { + appendStartTransitions(transitions); + appendDraftTransition(transitions); + appendAwaitingTransition(transitions); + appendApprovedTransition(transitions); + appendRejectedTransition(transitions); + } + + private void appendStartTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(PostingAllowanceState.START) + .target(PostingAllowanceState.DRAFT) + .event(PostingAllowanceEvent.SAVE_AS_DRAFT); + } + + private void appendDraftTransition(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(PostingAllowanceState.DRAFT) + .target(PostingAllowanceState.AWAITING) + .event(PostingAllowanceEvent.SUBMIT) + .and() + .withExternal() + .source(PostingAllowanceState.DRAFT) + .target(PostingAllowanceState.REJECTED) + .event(PostingAllowanceEvent.REJECT); + } + + private void appendAwaitingTransition(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(PostingAllowanceState.AWAITING) + .target(PostingAllowanceState.APPROVED) + .event(PostingAllowanceEvent.APPROVE) + .and() + .withExternal() + .source(PostingAllowanceState.AWAITING) + .target(PostingAllowanceState.REJECTED) + .event(PostingAllowanceEvent.REJECT); + } + + + private void appendApprovedTransition(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(PostingAllowanceState.APPROVED) + .target(PostingAllowanceState.PAID) + .event(PostingAllowanceEvent.PAY) + .and() + .withExternal() + .source(PostingAllowanceState.APPROVED) + .target(PostingAllowanceState.REJECTED) + .event(PostingAllowanceEvent.REJECT); + } + + private void appendRejectedTransition(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(PostingAllowanceState.REJECTED) + .target(PostingAllowanceState.DRAFT) + .event(PostingAllowanceEvent.RESUBMIT); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/ResettlementStateMachineFactoryConfiguration.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/ResettlementStateMachineFactoryConfiguration.java new file mode 100644 index 0000000..11e5f76 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/ResettlementStateMachineFactoryConfiguration.java @@ -0,0 +1,122 @@ +package eu.europa.eeas.erights.common.boot.configuration.statemachine; + +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.ConfigurationLogger; +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.MultiLineLog; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.tools.statemachine.ResettlementEvent; +import eu.europa.eeas.erights.common.tools.statemachine.ResettlementState; +import java.util.EnumSet; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.statemachine.config.EnableStateMachineFactory; +import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter; +import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer; +import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; +import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; + +/** + * @author ienaccat + */ +@Configuration +@EnableStateMachineFactory(name = {ERightsBeanNames.ResettlementStateMachine.FACTORY}) +public class ResettlementStateMachineFactoryConfiguration extends + EnumStateMachineConfigurerAdapter { + + protected final ConfigurationLogger logger = ConfigurationLogger.getConfigurationLogger( + ResettlementStateMachineFactoryConfiguration.class); + + @Override + public void configure( + StateMachineConfigurationConfigurer config) + throws Exception { + config.withConfiguration() + .machineId(ERightsBeanNames.ResettlementStateMachine.ID) + .autoStartup(true); + } + + @Override + public void configure(StateMachineStateConfigurer states) + throws Exception { + states.withStates() + .initial(ResettlementState.START) + .states(EnumSet.of( + ResettlementState.DRAFT, + ResettlementState.APPROVED, + ResettlementState.AWAITING, + ResettlementState.PAID, + ResettlementState.REJECTED + )); + } + + @Bean(ERightsBeanNames.ResettlementStateMachine.SERVICE) + public StateMachineService ResettlementStateMachine( + ApplicationContext applicationContext) { + StateMachineService result; + + MultiLineLog log = this.logger.multiLine("Resettlement State Machine Service", + ERightsBeanNames.ResettlementStateMachine.SERVICE); + + result = new StateMachineService<>(ResettlementState.class, + ResettlementEvent.class, + applicationContext, + ERightsBeanNames.ResettlementStateMachine.FACTORY); + + log.log(); + + return result; + } + + @Override + public void configure( + StateMachineTransitionConfigurer transitions) + throws Exception { + transitions + .withExternal() + .source(ResettlementState.START) + .target(ResettlementState.DRAFT) + .event(ResettlementEvent.CREATE) + .and() + .withExternal() + .source(ResettlementState.DRAFT) + .target(ResettlementState.AWAITING) + .event(ResettlementEvent.SUBMIT) + .and() + .withExternal() + .source(ResettlementState.AWAITING) + .target(ResettlementState.APPROVED) + .event(ResettlementEvent.APPROVE) + .and() + .withExternal() + .source(ResettlementState.AWAITING) + .target(ResettlementState.REJECTED) + .event(ResettlementEvent.REJECT) + .and() + .withExternal() + .source(ResettlementState.APPROVED) + .target(ResettlementState.PAID) + .event(ResettlementEvent.MARK_PAID) + .and() + .withExternal() + .source(ResettlementState.APPROVED) + .target(ResettlementState.REJECTED) + .event(ResettlementEvent.REJECT) + .and() + .withExternal() + .source(ResettlementState.REJECTED) + .target(ResettlementState.DRAFT) + .event(ResettlementEvent.RESUBMIT) + .and() + .withExternal() + .source(ResettlementState.APPROVED) + .target(ResettlementState.AWAITING) + .event(ResettlementEvent.RESET_APPROVAL) + .and() + .withExternal() + .source(ResettlementState.PAID) + .target(ResettlementState.DRAFT) + .event(ResettlementEvent.RESET_PAID); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/TopUpRequestStateMachineFactoryConfiguration.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/TopUpRequestStateMachineFactoryConfiguration.java new file mode 100644 index 0000000..c26a970 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/TopUpRequestStateMachineFactoryConfiguration.java @@ -0,0 +1,238 @@ +package eu.europa.eeas.erights.common.boot.configuration.statemachine; + +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.ConfigurationLogger; +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.MultiLineLog; +import eu.europa.eeas.ananke.tools.statemachine.guard.OrGuard; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.security.MovementFilePermission; +import eu.europa.eeas.erights.common.tools.statemachine.*; +import eu.europa.eeas.erights.common.tools.statemachine.guard.request.HasTopUpRequestPermissionGuard; + +import eu.europa.eeas.erights.common.tools.statemachine.guard.request.HasTopUpRequestPermissionGuard; +import eu.europa.eeas.erights.common.tools.statemachine.guard.request.HasTopUpRequestPermissionGuard; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.statemachine.config.EnableStateMachineFactory; +import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter; +import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer; +import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; +import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; +import org.springframework.statemachine.guard.Guard; + +import java.util.EnumSet; + +@Configuration +@EnableStateMachineFactory(name = {ERightsBeanNames.TopUpRequestStateMachine.FACTORY}) +public class TopUpRequestStateMachineFactoryConfiguration extends EnumStateMachineConfigurerAdapter { + + protected final ConfigurationLogger logger = ConfigurationLogger.getConfigurationLogger(TopUpRequestStateMachineFactoryConfiguration.class); + + private final Guard isSystemUserGuard; + + public TopUpRequestStateMachineFactoryConfiguration( + @Qualifier(ERightsBeanNames.MovementFileStateMachine.Guard.IS_SYSTEM_USER) + Guard isSystemUserGuard) { + this.isSystemUserGuard = isSystemUserGuard; + } + + + @Override + public void configure(StateMachineConfigurationConfigurer config) throws Exception { + config.withConfiguration() + .machineId(ERightsBeanNames.TopUpRequestStateMachine.ID) + .autoStartup(true); + } + + @Override + public void configure(StateMachineStateConfigurer states) throws Exception { + states.withStates() + .initial(TopUpRequestState.START) + .states(EnumSet.allOf(TopUpRequestState.class)); + } + + @Bean(ERightsBeanNames.TopUpRequestStateMachine.SERVICE) + public StateMachineService entitlementRequestStateMachineService(ApplicationContext applicationContext) { + StateMachineService result; + + MultiLineLog log = this.logger.multiLine("Top Up Request State Machine Service", ERightsBeanNames.TopUpRequestStateMachine.SERVICE); + + result = new StateMachineService<>(TopUpRequestState.class, + TopUpRequestEvent.class, + applicationContext, + ERightsBeanNames.TopUpRequestStateMachine.FACTORY); + + log.log(); + + return result; + } + + @Override + public void configure(StateMachineTransitionConfigurer transitions) throws Exception { + appendStartTransitions(transitions); + appendAwaitingTransitions(transitions); + appendApprovedTransitions(transitions); + appendRejectedTransitions(transitions); + appendPaidTransitions(transitions); + appendDraftTransitions(transitions); + appendP2PTransitions(transitions); + } + + private void appendDraftTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(TopUpRequestState.DRAFT) + .target(TopUpRequestState.AWAITING) + .event(TopUpRequestEvent.SUBMIT) + .and() + .withExternal() + .source(TopUpRequestState.DRAFT) + .target(TopUpRequestState.APPROVED) + .event(TopUpRequestEvent.APPROVE); + } + + private void appendPaidTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(TopUpRequestState.PAID) + .target(TopUpRequestState.REJECTED) + .event(TopUpRequestEvent.REJECT); + } + + private void appendRejectedTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(TopUpRequestState.REJECTED) + .target(TopUpRequestState.DRAFT) + .event(TopUpRequestEvent.RESUBMIT); + } + + private void appendApprovedTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(TopUpRequestState.APPROVED) + .target(TopUpRequestState.PAID) + .event(TopUpRequestEvent.PAY) + .and() + .withExternal() + .source(TopUpRequestState.APPROVED) + .target(TopUpRequestState.REJECTED) + .event(TopUpRequestEvent.REJECT) + .and() + .withExternal() + .source(TopUpRequestState.APPROVED) + .target(TopUpRequestState.PAID) + .event(TopUpRequestEvent.MARK_PAID); + } + + private void appendAwaitingTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(TopUpRequestState.AWAITING) + .target(TopUpRequestState.APPROVED) + .event(TopUpRequestEvent.APPROVE) + .and() + .withExternal() + .source(TopUpRequestState.AWAITING) + .target(TopUpRequestState.REJECTED) + .event(TopUpRequestEvent.REJECT); + } + + private void appendStartTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(TopUpRequestState.START) + .target(TopUpRequestState.AWAITING) + .event(TopUpRequestEvent.SUBMIT) + .and() + .withExternal() + .source(TopUpRequestState.START) + .target(TopUpRequestState.APPROVED) + .event(TopUpRequestEvent.APPROVE); + } + + + private void appendP2PTransitions(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal() + .source(TopUpRequestState.SENT_TO_P2P) + .target(TopUpRequestState.APPROVED) + .event(TopUpRequestEvent.ERROR_IN_P2P) + .guard(hasRejectGuardOrIsSystemOwnerGuard()) + .and() + .withExternal() + .source(TopUpRequestState.APPROVED) + .target(TopUpRequestState.SENT_TO_P2P) + .event(TopUpRequestEvent.SEND_TO_P2P) + .guard(hasTopUpPayAbacGuardOrIsSystemOwnerGuard()) + .and() + .withExternal() + .source(TopUpRequestState.SENT_TO_P2P) + .target(TopUpRequestState.PAID) + .event(TopUpRequestEvent.SUCCESS_IN_P2P) + .guard(hasTopUpPayAbacGuardOrIsSystemOwnerGuard()); + } + + + @Bean(ERightsBeanNames.TopUpRequestStateMachine.Guard.HAS_REJECT_PAID_TOP_UP_REQUEST) + public Guard hasPayRejectGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("TopUpRequestStateMachine - Guard - Has Rejct Paid ADV REM request", ERightsBeanNames.TopUpRequestStateMachine.Guard.HAS_REJECT_PAID_TOP_UP_REQUEST); + + result = new HasTopUpRequestPermissionGuard(MovementFilePermission.REQUEST_REJECT_PAID); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.TopUpRequestStateMachine.Guard.HAS_PAY_TOP_UP_OR_IS_SYSTEM_USER) + public Guard hasTopUpPayAbacGuardOrIsSystemOwnerGuard() { + + + MultiLineLog log = this.logger.multiLine("TopUpRequestStateMachine - Guard - hasTopUpPayAbacGuard Or IsSystemOwnerGuard", + ERightsBeanNames.TopUpRequestStateMachine.Guard.HAS_PAY_TOP_UP_OR_IS_SYSTEM_USER); + + @SuppressWarnings("unchecked") + Guard result = + new OrGuard<>( + hasTopUpPayAbacGuard(), + (Guard) (Guard) isSystemUserGuard + ); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.TopUpRequestStateMachine.Guard.HAS_REJECT_TOP_UP_REQUEST_OR_IS_SYSTEM_USER) + public Guard hasRejectGuardOrIsSystemOwnerGuard() { + + + MultiLineLog log = this.logger.multiLine("TopUpRequestStateMachine - Guard - hasRejectGuard Or IsSystemOwnerGuard", + ERightsBeanNames.TopUpRequestStateMachine.Guard.HAS_REJECT_TOP_UP_REQUEST); + + @SuppressWarnings("unchecked") + Guard result = + new OrGuard<>( + hasPayRejectGuard(), + (Guard) (Guard) isSystemUserGuard + ); + + log.log(); + + return result; + } + + + @Bean(ERightsBeanNames.TopUpRequestStateMachine.Guard.HAS_PAY_TOP_UP_REQUEST_ABAC) + public Guard hasTopUpPayAbacGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("TopUpRequestStateMachine - Guard - Has TOT REM request Abac", ERightsBeanNames.TopUpRequestStateMachine.Guard.HAS_PAY_TOP_UP_REQUEST_ABAC); + + result = new HasTopUpRequestPermissionGuard(MovementFilePermission.REQUEST_REM_PAY_ABAC); + + log.log(); + + return result; + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/TotalRemRequestStateMachineFactoryConfiguration.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/TotalRemRequestStateMachineFactoryConfiguration.java new file mode 100644 index 0000000..ac9f2af --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/TotalRemRequestStateMachineFactoryConfiguration.java @@ -0,0 +1,333 @@ +package eu.europa.eeas.erights.common.boot.configuration.statemachine; + +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.ConfigurationLogger; +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.MultiLineLog; +import eu.europa.eeas.ananke.tools.statemachine.guard.OrGuard; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.security.MovementFilePermission; +import eu.europa.eeas.erights.common.tools.statemachine.*; +import eu.europa.eeas.erights.common.tools.statemachine.guard.request.HasTotalRemRequestPermissionGuard; +import eu.europa.eeas.erights.common.tools.statemachine.guard.request.IsSystemUserGuard; +import eu.europa.eeas.erights.common.tools.statemachine.guard.request.IsTotalRemOwnerGuard; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.statemachine.config.EnableStateMachineFactory; +import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter; +import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer; +import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; +import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; +import org.springframework.statemachine.guard.Guard; + +import java.util.EnumSet; + +@Configuration +@EnableStateMachineFactory(name = {ERightsBeanNames.TotalRemRequestStateMachine.FACTORY}) +@Import(CommonStatMachineFactoryConfiguration.class) +public class TotalRemRequestStateMachineFactoryConfiguration extends EnumStateMachineConfigurerAdapter { + + protected final ConfigurationLogger logger = ConfigurationLogger.getConfigurationLogger(TotalRemRequestStateMachineFactoryConfiguration.class); + + private final Guard isSystemUserGuard; + + public TotalRemRequestStateMachineFactoryConfiguration( + @Qualifier(ERightsBeanNames.MovementFileStateMachine.Guard.IS_SYSTEM_USER) + Guard isSystemUserGuard) { + this.isSystemUserGuard = isSystemUserGuard; + } + + @Override + public void configure(StateMachineConfigurationConfigurer config) throws Exception { + config.withConfiguration() + .machineId(ERightsBeanNames.TotalRemRequestStateMachine.ID) + .autoStartup(true); + } + + @Override + public void configure(StateMachineStateConfigurer states) throws Exception { + states.withStates() + .initial(TotalRemRequestState.START) + .states(EnumSet.of(TotalRemRequestState.APPROVED, + TotalRemRequestState.AWAITING, + TotalRemRequestState.PAID, + TotalRemRequestState.REJECTED, + TotalRemRequestState.DRAFT, + TotalRemRequestState.SENT_TO_P2P)); + } + + @Bean(ERightsBeanNames.TotalRemRequestStateMachine.SERVICE) + public StateMachineService TotalRemRequestStateMachineService(ApplicationContext applicationContext) { + StateMachineService result; + + MultiLineLog log = this.logger.multiLine("Total Rem Request State Machine Service", ERightsBeanNames.TotalRemRequestStateMachine.SERVICE); + + result = new StateMachineService<>(TotalRemRequestState.class, + TotalRemRequestEvent.class, + applicationContext, + ERightsBeanNames.TotalRemRequestStateMachine.FACTORY); + + log.log(); + + return result; + } + + @Override + public void configure(StateMachineTransitionConfigurer transitions) throws Exception { + transitions + .withExternal() + .source(TotalRemRequestState.START) + .target(TotalRemRequestState.DRAFT) + .event(TotalRemRequestEvent.SAVE_AS_DRAFT) + .guard(hasSubmitOrIsOwnerGuard()) + .and() + .withExternal() + .source(TotalRemRequestState.DRAFT) + .target(TotalRemRequestState.AWAITING) + .event(TotalRemRequestEvent.SUBMIT) + .guard(hasSubmitOrIsOwnerGuard()) + .and() + .withExternal() + .source(TotalRemRequestState.AWAITING) + .target(TotalRemRequestState.DRAFT) + .event(TotalRemRequestEvent.CANCEL) + .guard(hasSubmitOrIsOwnerGuard()) + .and() + .withExternal() + .source(TotalRemRequestState.AWAITING) + .target(TotalRemRequestState.APPROVED) + .event(TotalRemRequestEvent.APPROVE) + .guard(hasApproveGuard()) + .and() + .withExternal() + .source(TotalRemRequestState.AWAITING) + .target(TotalRemRequestState.REJECTED) + .event(TotalRemRequestEvent.REJECT) + .guard(hasRejectGuard()) + .and() + .withExternal() + .source(TotalRemRequestState.APPROVED) + .target(TotalRemRequestState.PAID) + .event(TotalRemRequestEvent.PAY) + .guard(hasTotRemPayAbacGuard()) + .and() + .withExternal() + .source(TotalRemRequestState.APPROVED) + .target(TotalRemRequestState.REJECTED) + .event(TotalRemRequestEvent.REJECT) + .guard(hasRejectGuard()) + + .and() + .withExternal() + .source(TotalRemRequestState.PAID) + .target(TotalRemRequestState.REJECTED) + .event(TotalRemRequestEvent.REJECT) + .guard(hasPayRejectGuard()) + .and() + .withExternal() + .source(TotalRemRequestState.APPROVED) + .target(TotalRemRequestState.PAID) + .event(TotalRemRequestEvent.MARK_PAID) + .guard(hasTotRemPayManuallyGuard()) + .and() + .withExternal() + .source(TotalRemRequestState.REJECTED) + .target(TotalRemRequestState.DRAFT) + .event(TotalRemRequestEvent.RESUBMIT) + .guard(hasResubmitOrIsOwnerGuard()) + .and() + .withExternal() + .source(TotalRemRequestState.SENT_TO_P2P) + .target(TotalRemRequestState.APPROVED) + .event(TotalRemRequestEvent.ERROR_IN_P2P) + .guard(hasRejectGuardOrIsSystemOwnerGuard()) + .and() + .withExternal() + .source(TotalRemRequestState.APPROVED) + .target(TotalRemRequestState.SENT_TO_P2P) + .event(TotalRemRequestEvent.SEND_TO_P2P) + .guard(hasTotalRemPayAbacGuardOrIsSystemOwnerGuard()) + .and() + .withExternal() + .source(TotalRemRequestState.SENT_TO_P2P) + .target(TotalRemRequestState.PAID) + .event(TotalRemRequestEvent.SUCCESS_IN_P2P) + .guard(hasTotalRemPayAbacGuardOrIsSystemOwnerGuard()); + } + + @Bean(ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_REJECT_TOT_REM_REQUEST) + public Guard hasRejectGuard() { + MultiLineLog log = this.logger.multiLine("TotalRemRequestStateMachine - Guard - Has Reject Adv REM Request", + ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_REJECT_TOT_REM_REQUEST); + log.log(); + return new HasTotalRemRequestPermissionGuard(MovementFilePermission.REQUEST_REM_REJECT); + } + + @Bean(ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_APPROVE_TOT_REM_REQUEST) + public Guard hasApproveGuard() { + MultiLineLog log = this.logger.multiLine("TotalRemRequestStateMachine - Guard - Has Approve Adv REM Request", + ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_APPROVE_TOT_REM_REQUEST); + log.log(); + return new HasTotalRemRequestPermissionGuard(MovementFilePermission.REQUEST_REM_APPROVE); + } + + @Bean(ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_RESUBMIT_TOT_REM_REQUEST) + public Guard hasAdvResubmitGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("TotalRemRequestStateMachine - Guard - Has Resubmit Adv REM Request", ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_RESUBMIT_TOT_REM_REQUEST); + + result = new HasTotalRemRequestPermissionGuard(MovementFilePermission.REQUEST_REM_RESUBMIT); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_PAY_TOT_REM_REQUEST_MANUALLY) + public Guard hasTotRemPayManuallyGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("TotalRemRequestStateMachine - Guard - Has TOT REM request Manually", ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_PAY_TOT_REM_REQUEST_MANUALLY); + + result = new HasTotalRemRequestPermissionGuard(MovementFilePermission.REQUEST_REM_PAY_MANUALLY); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_PAY_TOT_REM_REQUEST_ABAC) + public Guard hasTotRemPayAbacGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("TotalRemRequestStateMachine - Guard - Has TOT REM request Abac", ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_PAY_TOT_REM_REQUEST_ABAC); + + result = new HasTotalRemRequestPermissionGuard(MovementFilePermission.REQUEST_REM_PAY_ABAC); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_REVIEW_TOT_REM_REQUEST) + public Guard hasReviewGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("TotalRemRequestStateMachine - Guard - Has Review ADV REM request", ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_REVIEW_TOT_REM_REQUEST); + + result = new HasTotalRemRequestPermissionGuard(MovementFilePermission.REQUEST_REM_REVIEW); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_REJECT_PAID_TOT_REM_REQUEST) + public Guard hasPayRejectGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("TotalRemRequestStateMachine - Guard - Has Rejct Paid ADV REM request", ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_REJECT_PAID_TOT_REM_REQUEST); + + result = new HasTotalRemRequestPermissionGuard(MovementFilePermission.REQUEST_REJECT_PAID); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.TotalRemRequestStateMachine.Guard.IS_OWNER) + public Guard isOwnerGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("TotalRemRequestStateMachine - Guard - Is Staff Member", ERightsBeanNames.TotalRemRequestStateMachine.Guard.IS_OWNER); + + result = new IsTotalRemOwnerGuard(); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_SUBMIT) + public Guard hasSubmitGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("TotalRemRequestStateMachine - Guard - Has Submit", ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_SUBMIT); + + result = new HasTotalRemRequestPermissionGuard(MovementFilePermission.REQUEST_REM_SUBMIT); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.TotalRemRequestStateMachine.Guard.IS_OWNER_OR_HAS_RESUBMIT) + public Guard hasResubmitOrIsOwnerGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("TotalRemRequestStateMachine - Guard - Is StaffMember Or Has Resubmit permission", + ERightsBeanNames.TotalRemRequestStateMachine.Guard.IS_OWNER_OR_HAS_RESUBMIT); + + result = new OrGuard<>(hasAdvResubmitGuard(), isOwnerGuard()); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.TotalRemRequestStateMachine.Guard.IS_OWNER_OR_HAS_SUBMIT) + public Guard hasSubmitOrIsOwnerGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("TotalRemRequestStateMachine - Guard - Is StaffMember Or Has Submit permission", + ERightsBeanNames.TotalRemRequestStateMachine.Guard.IS_OWNER_OR_HAS_SUBMIT); + + result = new OrGuard<>(hasSubmitGuard(), isOwnerGuard()); + + log.log(); + + return result; + } + + + @Bean(ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_PAY_TOTAL_REM_OR_IS_SYSTEM_USER) + public Guard hasTotalRemPayAbacGuardOrIsSystemOwnerGuard() { + + + MultiLineLog log = this.logger.multiLine("TotalRemRequestStateMachine - Guard - hasTotalRemPayAbacGuard Or IsSystemOwnerGuard", + ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_PAY_TOTAL_REM_OR_IS_SYSTEM_USER); + + @SuppressWarnings("unchecked") + Guard result = + new OrGuard<>( + hasTotRemPayAbacGuard(), + (Guard) (Guard) isSystemUserGuard + ); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_PAY_TOTAL_REM_OR_IS_SYSTEM_USER) + public Guard hasRejectGuardOrIsSystemOwnerGuard() { + + + MultiLineLog log = this.logger.multiLine("TotalRemRequestStateMachine - Guard - hasRejectGuard Or IsSystemOwnerGuard", + ERightsBeanNames.TotalRemRequestStateMachine.Guard.HAS_PAY_TOTAL_REM_OR_IS_SYSTEM_USER); + + @SuppressWarnings("unchecked") + Guard result = + new OrGuard<>( + hasRejectGuard(), + (Guard) (Guard) isSystemUserGuard + ); + + log.log(); + + return result; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/TudRequestStateMachineFactoryConfiguration.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/TudRequestStateMachineFactoryConfiguration.java new file mode 100644 index 0000000..524fd78 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/boot/configuration/statemachine/TudRequestStateMachineFactoryConfiguration.java @@ -0,0 +1,367 @@ +package eu.europa.eeas.erights.common.boot.configuration.statemachine; + +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.ConfigurationLogger; +import eu.europa.eeas.ananke.core.starter.base.configurationlogger.MultiLineLog; +import eu.europa.eeas.ananke.tools.statemachine.guard.OrGuard; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.security.MovementFilePermission; +import eu.europa.eeas.erights.common.tools.statemachine.*; +import eu.europa.eeas.erights.common.tools.statemachine.guard.request.HasRequestPermissionGuard; +import eu.europa.eeas.erights.common.tools.statemachine.guard.request.IsRecoveryRequest; +import eu.europa.eeas.erights.common.tools.statemachine.guard.request.IsSystemUserGuard; +import eu.europa.eeas.erights.common.tools.statemachine.guard.request.IsTudOwnerGuard; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.statemachine.config.EnableStateMachineFactory; +import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter; +import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer; +import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; +import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; +import org.springframework.statemachine.guard.Guard; + +import java.util.EnumSet; + +@Configuration +@EnableStateMachineFactory(name = {ERightsBeanNames.EntitlementRequestStateMachine.FACTORY}) +@Import(CommonStatMachineFactoryConfiguration.class) +public class TudRequestStateMachineFactoryConfiguration extends EnumStateMachineConfigurerAdapter { + + protected final ConfigurationLogger logger = ConfigurationLogger.getConfigurationLogger(TudRequestStateMachineFactoryConfiguration.class); + + private final Guard isSystemUserGuard; + + public TudRequestStateMachineFactoryConfiguration( + @Qualifier(ERightsBeanNames.MovementFileStateMachine.Guard.IS_SYSTEM_USER) + Guard isSystemUserGuard) { + this.isSystemUserGuard = isSystemUserGuard; + } + + @Override + public void configure(StateMachineConfigurationConfigurer config) throws Exception { + config.withConfiguration() + .machineId(ERightsBeanNames.EntitlementRequestStateMachine.ID) + .autoStartup(true); + } + + @Override + public void configure(StateMachineStateConfigurer states) throws Exception { + states.withStates() + .initial(RequestState.START) + .states(EnumSet.of(RequestState.APPROVED, + RequestState.AWAITING, + RequestState.PENDING3, + RequestState.DISPUTED, + RequestState.PENDING10, + RequestState.PAID, + RequestState.REJECTED, + RequestState.CLOSED, + RequestState.CLO100, + RequestState.CLO0, + RequestState.SENT_TO_P2P)); + } + + @Bean(ERightsBeanNames.EntitlementRequestStateMachine.SERVICE) + public StateMachineService entitlementRequestStateMachineService(ApplicationContext applicationContext) { + StateMachineService result; + + MultiLineLog log = this.logger.multiLine("Entitlement Request State Machine Service", ERightsBeanNames.EntitlementRequestStateMachine.SERVICE); + + result = new StateMachineService<>(RequestState.class, + RequestEvent.class, + applicationContext, + ERightsBeanNames.EntitlementRequestStateMachine.FACTORY); + + log.log(); + + return result; + } + + @Override + public void configure(StateMachineTransitionConfigurer transitions) throws Exception { + transitions + .withExternal() + .source(RequestState.START) + .target(RequestState.APPROVED) + .event(RequestEvent.DECL_WITHOUT_REMARK) + .and() + .withExternal() + .and() + .withExternal() + .source(RequestState.START) + .target(RequestState.AWAITING) + .event(RequestEvent.DECL_WITH_REMARK) + .and() + .withExternal() + .source(RequestState.APPROVED) + .target(RequestState.PENDING3) + .event(RequestEvent.INITIATE_PAYMNT) + .and() + .withExternal() + .source(RequestState.APPROVED) + .target(RequestState.CLOSED) + .event(RequestEvent.CLOSE) + // --- automatic transitions generated when declaration is updated + .and() + .withExternal() + .source(RequestState.APPROVED) + .target(RequestState.AWAITING) + .event(RequestEvent.DECL_WITH_REMARK) + .and() + .withExternal() + .source(RequestState.REJECTED) + .target(RequestState.AWAITING) + .event(RequestEvent.DECL_WITH_REMARK) + .and() + .withExternal() + .source(RequestState.REJECTED) + .target(RequestState.APPROVED) + .event(RequestEvent.APPROVE) + .guard(hasReviewGuardOrIsOwner()) + // ---- + .and() + .withExternal() + .source(RequestState.AWAITING) + .target(RequestState.APPROVED) + .event(RequestEvent.APPROVE) + .guard(hasReviewGuardOrIsOwner()) + .and() + .withExternal() + .source(RequestState.AWAITING) + .target(RequestState.DISPUTED) + .event(RequestEvent.MARK_DISPUTED) + //.guard(isRecovery()) + .and() + .withExternal() + .source(RequestState.AWAITING) + .target(RequestState.CLOSED) + .event(RequestEvent.CLOSE) + .and() + .withExternal() + .source(RequestState.DISPUTED) + .target(RequestState.APPROVED) + .event(RequestEvent.APPROVE) + //.guard(isRecovery()) + .and() + .withExternal() + .source(RequestState.DISPUTED) + .target(RequestState.CLOSED) + .event(RequestEvent.CLOSE) + //.guard(isRecovery()) + .and() + .withExternal() + .source(RequestState.PENDING3) + .target(RequestState.PENDING10) + .event(RequestEvent.INITIATE_PAYMNT) + .and() + .withExternal() + .source(RequestState.PENDING3) + .target(RequestState.CLO0) + .event(RequestEvent.ABAC_REJECT) + .and() + .withExternal() + .source(RequestState.PENDING10) + .target(RequestState.CLO100) + .event(RequestEvent.VERIFY) + .and() + .withExternal() + .source(RequestState.PENDING10) + .target(RequestState.CLO0) + .event(RequestEvent.ABAC_REJECT) + .and() + .withExternal() + .source(RequestState.CLOSED) + .target(RequestState.AWAITING) + .event(RequestEvent.RESUBMIT) + .guard(hasResubmitGuard()) + .and() + .withExternal() + .source(RequestState.CLO0) + .target(RequestState.AWAITING) + .event(RequestEvent.RESUBMIT) + .guard(hasResubmitGuard()) + .and() + .withExternal() + .source(RequestState.CLO0) + .target(RequestState.CLOSED) + .event(RequestEvent.CLOSE) + //------ temporary, until ABAC integration + .and() + .withExternal() + .source(RequestState.APPROVED) + .target(RequestState.PAID) + .event(RequestEvent.PAY) + .guard(hasPayAbacGuard()) + .and() + .withExternal() + .source(RequestState.APPROVED) + .target(RequestState.REJECTED) + .event(RequestEvent.REJECT) + .guard(hasReviewGuard()) + .and() + .withExternal() + .source(RequestState.AWAITING) + .target(RequestState.REJECTED) + .event(RequestEvent.REJECT) + .guard(hasReviewGuard()) + .and() + .withExternal() + .source(RequestState.PAID) + .target(RequestState.REJECTED) + .event(RequestEvent.REJECT) + .and() + .withExternal() + .source(RequestState.CLO0) + .target(RequestState.PAID) + .event(RequestEvent.MARK_PAID) + .guard(hasPayManuallyGuard()) + .and() + .withExternal() + .source(RequestState.APPROVED) + .target(RequestState.PAID) + .event(RequestEvent.MARK_PAID) + .guard(hasPayManuallyGuard()) + .and() + .withExternal() + .source(RequestState.REJECTED) + .target(RequestState.AWAITING) + .event(RequestEvent.RESUBMIT) + .guard(hasResubmitGuard()) + .and() + .withExternal() + .source(RequestState.SENT_TO_P2P) + .target(RequestState.APPROVED) + .event(RequestEvent.ERROR_IN_P2P) + .and() + .withExternal() + .source(RequestState.APPROVED) + .target(RequestState.SENT_TO_P2P) + .event(RequestEvent.SEND_TO_P2P) + .guard(hasTudPayAbacGuardOrIsSystemOwnerGuard()) + .and() + .withExternal() + .source(RequestState.SENT_TO_P2P) + .target(RequestState.PAID) + .event(RequestEvent.SUCCESS_IN_P2P) + .guard(hasTudPayAbacGuardOrIsSystemOwnerGuard()); + //------- + } + + @Bean(ERightsBeanNames.EntitlementRequestStateMachine.Guard.IS_RECOVERY) + public Guard isRecovery() { + Guard result; + + MultiLineLog log = this.logger.multiLine("TudRequest State Machine - Guard - Is Recovery request", + ERightsBeanNames.EntitlementRequestStateMachine.Guard.IS_RECOVERY); + + result = new IsRecoveryRequest(); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.MovementFileStateMachine.Guard.HAS_RESUBMIT_TUD_REQUEST) + public Guard hasResubmitGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("TudRequest state machine - Guard - Has Resubmit TUD Request", ERightsBeanNames.MovementFileStateMachine.Guard.HAS_RESUBMIT_TUD_REQUEST); + + result = new HasRequestPermissionGuard(MovementFilePermission.REQUEST_TUD_RESUBMIT); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.MovementFileStateMachine.Guard.HAS_PAY_TUD_REQUEST_MANUALLY) + public Guard hasPayManuallyGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("TudRequest StateMachine - Guard - Has Pay TUD request Manually", ERightsBeanNames.MovementFileStateMachine.Guard.HAS_PAY_TUD_REQUEST_MANUALLY); + + result = new HasRequestPermissionGuard(MovementFilePermission.REQUEST_TUD_PAY_MANUALLY); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.MovementFileStateMachine.Guard.HAS_PAY_TUD_REQUEST_ABAC) + public Guard hasPayAbacGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("TudRequest StateMachine - Guard - Has Pay TUD request Abac", ERightsBeanNames.MovementFileStateMachine.Guard.HAS_PAY_TUD_REQUEST_ABAC); + + result = new HasRequestPermissionGuard(MovementFilePermission.REQUEST_TUD_PAY_ABAC); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.MovementFileStateMachine.Guard.HAS_REVIEW_TUD_REQUEST_OR_IS_OWNER) + public Guard hasReviewGuardOrIsOwner() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("TudRequestStateMachine - Guard - Has Review TUD request or is owner", ERightsBeanNames.MovementFileStateMachine.Guard.HAS_REVIEW_TUD_REQUEST); + + result = new OrGuard<>(hasReviewGuard(), isTudOwnerGuard()); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.MovementFileStateMachine.Guard.HAS_REVIEW_TUD_REQUEST) + public Guard hasReviewGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("TudRequestStateMachine - Guard - Has Review TUD request", ERightsBeanNames.MovementFileStateMachine.Guard.HAS_REVIEW_TUD_REQUEST); + + result = new HasRequestPermissionGuard(MovementFilePermission.REQUEST_TUD_REVIEW); + + log.log(); + + return result; + } + + @Bean(ERightsBeanNames.MovementFileStateMachine.Guard.IS_TUD_OWNER) + public Guard isTudOwnerGuard() { + Guard result = null; + + MultiLineLog log = this.logger.multiLine("TudRequestStateMachine - Guard - Is Staff Member", ERightsBeanNames.MovementFileStateMachine.Guard.IS_OWNER); + + result = new IsTudOwnerGuard(); + + log.log(); + + return result; + } + + + + @Bean(ERightsBeanNames.EntitlementRequestStateMachine.Guard.HAS_PAY_TUD_OR_IS_SYSTEM_USER) + public Guard hasTudPayAbacGuardOrIsSystemOwnerGuard() { + + + MultiLineLog log = this.logger.multiLine("EntitlementRequestStateMachine - Guard - hasTUDPayAbacGuard Or IsSystemOwnerGuard", + ERightsBeanNames.EntitlementRequestStateMachine.Guard.HAS_PAY_TUD_OR_IS_SYSTEM_USER); + + @SuppressWarnings("unchecked") + Guard result = + new OrGuard<>( + hasPayAbacGuard(), + (Guard) (Guard) isSystemUserGuard + ); + + log.log(); + + return result; + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/dto/AbacCommunicationDTO.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/dto/AbacCommunicationDTO.java new file mode 100644 index 0000000..e40c28e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/dto/AbacCommunicationDTO.java @@ -0,0 +1,79 @@ +package eu.europa.eeas.erights.common.data.jpa.dto; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +import java.time.*; +import java.time.format.DateTimeFormatter; +import java.util.UUID; + +public class AbacCommunicationDTO extends AbstractModel { + + private final UUID abacCommId; + private final String service; + private final String action; + private final String status; + private final LocalDateTime sentAt; + private final LocalDateTime receivedAt; + private final String requestData; + private final String errorData; + private final String responseData; + + public AbacCommunicationDTO(UUID abacCommId, + String service, + String action, + String status, + String sentAt, + String receivedAt, + String requestData, + String errorData, + String responseData) { + this.abacCommId = abacCommId; + this.service = service; + this.action = action; + this.status = status; + // Date converted from UTC (as stored in the DB) string to Local Date time + this.sentAt = sentAt != null ? Instant.ofEpochMilli(ZonedDateTime.parse((sentAt + "Z").replace(" ", "T"), DateTimeFormatter.ISO_DATE_TIME).toLocalDateTime().atZone(ZoneId.of("UTC")).toInstant().toEpochMilli()).atZone(ZoneId.systemDefault()).toLocalDateTime() : null; + // Date converted from UTC (as stored in the DB) string to Local Date time + this.receivedAt = receivedAt != null ? Instant.ofEpochMilli(ZonedDateTime.parse((receivedAt + "Z").replace(" ", "T"), DateTimeFormatter.ISO_DATE_TIME).toLocalDateTime().atZone(ZoneId.of("UTC")).toInstant().toEpochMilli()).atZone(ZoneId.systemDefault()).toLocalDateTime() : null; + this.requestData = requestData; + this.errorData = errorData; + this.responseData = responseData; + } + + public UUID getAbacCommId() { + return abacCommId; + } + + public String getService() { + return service; + } + + public String getAction() { + return action; + } + + public String getStatus() { + return status; + } + + public LocalDateTime getSentAt() { + return sentAt; + } + + public LocalDateTime getReceivedAt() { + return receivedAt; + } + + public String getRequestData() { + return requestData; + } + + public String getErrorData() { + return errorData; + } + + public String getResponseData() { + return responseData; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/dto/BinaryOutputWrapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/dto/BinaryOutputWrapper.java new file mode 100644 index 0000000..783b8c9 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/dto/BinaryOutputWrapper.java @@ -0,0 +1,33 @@ +package eu.europa.eeas.erights.common.data.jpa.dto; + +import org.springframework.http.HttpHeaders; + +public class BinaryOutputWrapper { + + private byte[] data; + private HttpHeaders headers; + + public BinaryOutputWrapper() { + } + + public BinaryOutputWrapper(byte[] data, HttpHeaders headers) { + this.data = data; + this.headers = headers; + } + + public HttpHeaders getHeaders() { + return headers; + } + + public void setHeaders(HttpHeaders headers) { + this.headers = headers; + } + + public byte[] getData() { + return data; + } + + public void setData(byte[] data) { + this.data = data; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/dto/Filter.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/dto/Filter.java new file mode 100644 index 0000000..7a4f389 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/dto/Filter.java @@ -0,0 +1,53 @@ +package eu.europa.eeas.erights.common.data.jpa.dto; + +import java.util.ArrayList; + +public class Filter{ + private String logic; + private String field; + private String operator; + private String value; + private ArrayList filters; + + public String getLogic() { + return logic; + } + + public void setLogic(String logic) { + this.logic = logic; + } + + public ArrayList getFilters() { + return filters; + } + + public void setFilters(ArrayList filters) { + this.filters = filters; + } + + public String getField() { + return field; + } + + public void setField(String field) { + this.field = field; + } + + public String getOperator() { + return operator; + } + + public void setOperator(String operator) { + this.operator = operator; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/dto/FilterModelDto.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/dto/FilterModelDto.java new file mode 100644 index 0000000..96f5492 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/dto/FilterModelDto.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.common.data.jpa.dto; + + +public class FilterModelDto { + + private Filter filter; + + public Filter getFilter() { + return filter; + } + + public void setFilter(Filter filter) { + this.filter = filter; + } + + + +} + + diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/dto/RequestAbacWorkflowDTO.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/dto/RequestAbacWorkflowDTO.java new file mode 100644 index 0000000..de290cc --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/dto/RequestAbacWorkflowDTO.java @@ -0,0 +1,28 @@ +package eu.europa.eeas.erights.common.data.jpa.dto; + +public class RequestAbacWorkflowDTO { + + private final long requestId; + + private final String p2pHubOrderStatus; + + private final String abacId; + + public RequestAbacWorkflowDTO(long requestId, String p2pHubOrderStatus, String abacId) { + this.requestId = requestId; + this.p2pHubOrderStatus = p2pHubOrderStatus; + this.abacId = abacId; + } + + public long getRequestId() { + return requestId; + } + + public String getP2pHubOrderStatus() { + return p2pHubOrderStatus; + } + + public String getAbacId() { + return abacId; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/AbacItemJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/AbacItemJpaEntity.java new file mode 100644 index 0000000..c01524f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/AbacItemJpaEntity.java @@ -0,0 +1,173 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.dto.AbacCommunicationDTO; +import eu.europa.eeas.erights.common.service.model.AbacItemType; +import eu.europa.eeas.erights.common.tools.statemachine.AbacItemState; +import org.hibernate.annotations.Type; + +import javax.persistence.*; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.UUID; + +import static javax.persistence.GenerationType.SEQUENCE; + +@NamedNativeQuery(name = "AbacItemJpaEntity.getAbacCommunicationItemsByRequestId", + query = "SELECT " + + "comm.ID AS abacCommId, " + + "comm.SERVICE AS service, " + + "comm.ACTION AS action, " + + "comm.STATUS AS status, " + + "comm.REQUEST_SENT_AT AS sentAt, " + + "comm.RESPONSE_RECEIVED_AT AS receivedAt, " + + "req.DATA AS requestData, " + + "err.DATA AS errorData, " + + "res.DATA AS responseData " + + "FROM " + + "ank_abac_comm comm, " + + "ank_abac_comm_errors err, " + + "ank_abac_comm_requests req, " + + "ank_abac_comm_responses res " + + "WHERE " + + "comm.id = err.id (+) " + + "AND comm.id = req.id (+) " + + "AND comm.id = res.id (+) " + + "AND comm.id IN (SELECT ABAC_COMM_ID FROM REQUEST_ABAC_ITEM " + + "WHERE REQUEST_ID = :requestId)", + resultSetMapping = "Mapping.AbacCommunicationDTO") +@SqlResultSetMapping(name = "Mapping.AbacCommunicationDTO", + classes = @ConstructorResult(targetClass = AbacCommunicationDTO.class, + columns = {@ColumnResult(name = "abacCommId", type = UUID.class), + @ColumnResult(name = "service", type = String.class), + @ColumnResult(name = "action", type = String.class), + @ColumnResult(name = "status", type = String.class), + @ColumnResult(name = "sentAt", type = String.class), + @ColumnResult(name = "receivedAt", type = String.class), + @ColumnResult(name = "requestData", type = String.class), + @ColumnResult(name = "errorData", type = String.class), + @ColumnResult(name = "responseData", type = String.class)})) +@Entity +@Table(name = AbacItemJpaEntity.TABLE_NAME) +public class AbacItemJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "REQUEST_ABAC_ITEM"; + + public static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + @Id + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "TYPE") + @Enumerated(EnumType.STRING) + private AbacItemType itemType; + + @Type(type = "uuid-binary") + @Column(name = "ABAC_COMM_ID", length = 16, unique = true) + private UUID abacCommunicationId; + + @Column(name = "ABAC_ID") + private String abacId; + + @Column(name = "STATE") + @Enumerated(EnumType.STRING) + private AbacItemState itemState; + + @Column(name = "REQUEST_ID") + private Long requestId; + + @Column + private String messages; + + @Column(name = "REQUEST_PAYMENT_ABAC_INFO_ID") + private Long requestPaymentAbacInfoId; + + @Column(name = "CREATED_AT") + private LocalDateTime createdAt; + + @Column(name = "UPDATED_AT") + private LocalDateTime updatedAt; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public AbacItemType getItemType() { + return itemType; + } + + public void setItemType(AbacItemType type) { + this.itemType = type; + } + + public UUID getAbacCommunicationId() { + return abacCommunicationId; + } + + public void setAbacCommunicationId(UUID abacId) { + this.abacCommunicationId = abacId; + } + + public AbacItemState getItemState() { + return itemState; + } + + public void setItemState(AbacItemState state) { + this.itemState = state; + } + + public Long getRequestId() { + return requestId; + } + + public void setRequestId(Long requestId) { + this.requestId = requestId; + } + + public String getAbacId() { + return abacId; + } + + public void setAbacId(String abacId) { + this.abacId = abacId; + } + + public String getMessages() { + return messages; + } + + public void setMessages(String messages) { + this.messages = messages; + } + + public Long getRequestPaymentAbacInfoId() { + return requestPaymentAbacInfoId; + } + + public void setRequestPaymentAbacInfoId(Long requestPaymentAbacInfoId) { + this.requestPaymentAbacInfoId = requestPaymentAbacInfoId; + } + + public LocalDateTime getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(LocalDateTime createdAt) { + this.createdAt = createdAt; + } + + public LocalDateTime getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(LocalDateTime updatedAt) { + this.updatedAt = updatedAt; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/AppParameterJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/AppParameterJpaEntity.java new file mode 100644 index 0000000..d98100e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/AppParameterJpaEntity.java @@ -0,0 +1,65 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import eu.europa.eeas.erights.common.tools.app.AppParamType; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = AppParameterJpaEntity.TABLE_NAME) +public class AppParameterJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "APP_PARAMETERS"; + + @Id + @Column(name = "PARAMETER_ID") + private Long id; + + @Enumerated(EnumType.STRING) + @Column(name = "PARAMETER_TYPE") + private AppParamType paramType; + + @Column(name = "PARAMETER_KEY") + private String key; + + @Column(name = "PARAMETER_VALUE") + private String value; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public AppParamType getParamType() { + return paramType; + } + + public void setParamType(AppParamType paramType) { + this.paramType = paramType; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/AuditMovementFileJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/AuditMovementFileJpaEntity.java new file mode 100644 index 0000000..dc233c5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/AuditMovementFileJpaEntity.java @@ -0,0 +1,379 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.hibernate.annotations.Immutable; +import org.hibernate.annotations.Type; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.FetchType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import java.time.LocalDate; + +/** + * RIGD-1945 (14/03/2022): View 'V_AUD_MOVEMENT_FILES' does not exist. End-point '/internal/api/audit-movement-files' is not used in the front-end. + * For the moment we do not update the PRIORITY field in this entity and associated models, services, etc. + * + */ +@Entity +@Immutable +@Table(name = AuditMovementFileJpaEntity.TABLE_NAME) +public class AuditMovementFileJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_AUD_MOVEMENT_FILES"; + + private static final long serialVersionUID = 1L; + + @Column(name = "MOVEMENT_FILE_ID") + @Id + private Long id; + + @Column(name = "FILEID") + private String fileId; + + @Column(name = "LAST_NAME") + private String lastName; + + @Column(name = "FIRST_NAME") + private String firstName; + + @Enumerated(EnumType.STRING) + @Column(name = "STATUS") + private MovementFileState status; + + @Column(name = "STARTDATEFUTURE") + private LocalDate startDateFuture; + + @Column(name = "ENDDATEFUTURE") + private LocalDate endDateFuture; + + @Column(name = "MOVEMENTFROM") + private String movementFrom; + + @Column(name = "MOVEMENTTO") + private String movementTo; + + @Column(name = "BUDGDET_LINE_FUTURE") + private String budgetLineFuture; + + @Column(name = "MOVEMENTTYPE") + private String movementType; + + @Column(name = "MOVEMENTYEAR") + private Integer movementYear; + + @Column(name = "MOVEMENTCONTEXT") + private String movementContext; + + @Column(name = "PERID") + private Long perId; + + @Column(name = "FUTUREASSIGNMENT") + private String futureAssignment; + + @Column(name = "PRIORITY") + @Type(type = "yes_no") + private Boolean priority; + + @Column(name = "ALLOCATEDTOCURRENT") + private String allocatedToCurrent; + + @Column(name = "ALLOCATEDTOFUTURE") + private String allocatedToFuture; + + @Column(name = "WITHOUT_RIGHTS") + private Boolean withoutRights; + + @Column(name = "REASON_EOC") + private String reasonEoc; + + @Column(name = "AIPN_FILE_ID") + private String aipnFileId; + + @Column(name = "AIPN_DOCUMENT_ID") + private String aipnDocumentId; + + @Column(name = "AIPN_NOTIF_DATE") + private LocalDate aipnNotifDate; + + @Column(name = "MOVEMENT_NR") + private Long movementNr; + + @Column(name = "REASON_DELETION") + private String reasonDeletion; + + @Column(name = "EVACUATION_STATUS") + private Boolean evacuated; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "COUNTRY_CODE_TO") + private CountryJpaEntity countryTo; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "CITY_CODE_TO") + private CityJpaEntity cityTo; + + @Column(name = "NOTIFICATION_ENTITY_ID") + private Long notificationEntityId; + + @Column(name = "PERSONNEL_TYPE_DESC") + private String personnelTypeDesc; + + @Column(name = "INTERNAL_COMMENT") + private String internalComment; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getFileId() { + return fileId; + } + + public void setFileId(String fileId) { + this.fileId = fileId; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public LocalDate getStartDateFuture() { + return startDateFuture; + } + + public void setStartDateFuture(LocalDate startDateFuture) { + this.startDateFuture = startDateFuture; + } + + public LocalDate getEndDateFuture() { + return endDateFuture; + } + + public void setEndDateFuture(LocalDate endDateFuture) { + this.endDateFuture = endDateFuture; + } + + public String getMovementFrom() { + return movementFrom; + } + + public void setMovementFrom(String movementFrom) { + this.movementFrom = movementFrom; + } + + public String getMovementTo() { + return movementTo; + } + + public void setMovementTo(String movementTo) { + this.movementTo = movementTo; + } + + public String getBudgetLineFuture() { + return budgetLineFuture; + } + + public void setBudgetLineFuture(String budgetLineFuture) { + this.budgetLineFuture = budgetLineFuture; + } + + public String getMovementType() { + return movementType; + } + + public void setMovementType(String movementType) { + this.movementType = movementType; + } + + public Integer getMovementYear() { + return movementYear; + } + + public void setMovementYear(Integer movementYear) { + this.movementYear = movementYear; + } + + public String getMovementContext() { + return movementContext; + } + + public void setMovementContext(String movementContext) { + this.movementContext = movementContext; + } + + public Long getPerId() { + return perId; + } + + public void setPerId(Long perId) { + this.perId = perId; + } + + public String getFutureAssignment() { + return futureAssignment; + } + + public void setFutureAssignment(String futureAssignment) { + this.futureAssignment = futureAssignment; + } + + public Boolean getPriority() { + return priority; + } + + public void setPriority(Boolean priority) { + this.priority = priority; + } + + public String getAllocatedToCurrent() { + return allocatedToCurrent; + } + + public void setAllocatedToCurrent(String allocatedToCurrent) { + this.allocatedToCurrent = allocatedToCurrent; + } + + public String getAllocatedToFuture() { + return allocatedToFuture; + } + + public void setAllocatedToFuture(String allocatedToFuture) { + this.allocatedToFuture = allocatedToFuture; + } + + public MovementFileState getStatus() { + return status; + } + + public void setStatus(MovementFileState status) { + this.status = status; + } + + public Boolean getWithoutRights() { + return withoutRights; + } + + public void setWithoutRights(Boolean withoutRights) { + this.withoutRights = withoutRights; + } + + public String getReasonEoc() { + return reasonEoc; + } + + public void setReasonEoc(String reasonEoc) { + this.reasonEoc = reasonEoc; + } + + public LocalDate getAipnNotifDate() { + return aipnNotifDate; + } + + public void setAipnNotifDate(LocalDate aipnNotifDate) { + this.aipnNotifDate = aipnNotifDate; + } + + public String getAipnFileId() { + return aipnFileId; + } + + public void setAipnFileId(String aipnFileId) { + this.aipnFileId = aipnFileId; + } + + public String getAipnDocumentId() { + return aipnDocumentId; + } + + public void setAipnDocumentId(String aipnDocumentId) { + this.aipnDocumentId = aipnDocumentId; + } + + public Long getMovementNr() { + return movementNr; + } + + public void setMovementNr(Long movementNr) { + this.movementNr = movementNr; + } + + public String getReasonDeletion() { + return reasonDeletion; + } + + public void setReasonDeletion(String reasonDeletion) { + this.reasonDeletion = reasonDeletion; + } + + public Boolean getEvacuated() { + return evacuated; + } + + public void setEvacuated(Boolean evacuated) { + this.evacuated = evacuated; + } + + public CountryJpaEntity getCountryTo() { + return countryTo; + } + + public void setCountryTo(CountryJpaEntity countryTo) { + this.countryTo = countryTo; + } + + public CityJpaEntity getCityTo() { + return cityTo; + } + + public void setCityTo(CityJpaEntity cityTo) { + this.cityTo = cityTo; + } + + public Long getNotificationEntityId() { + return notificationEntityId; + } + + public void setNotificationEntityId(Long notificationEntityId) { + this.notificationEntityId = notificationEntityId; + } + + public String getPersonnelTypeDesc() { + return personnelTypeDesc; + } + + public void setPersonnelTypeDesc(String personnelTypeDesc) { + this.personnelTypeDesc = personnelTypeDesc; + } + + public String getInternalComment() { + return internalComment; + } + + public void setInternalComment(String internalComment) { + this.internalComment = internalComment; + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/CityJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/CityJpaEntity.java new file mode 100644 index 0000000..cb2bda4 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/CityJpaEntity.java @@ -0,0 +1,66 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Immutable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +// SHARED — CDC candidate for future step +@Entity +@Immutable +@Table(name = CityJpaEntity.TABLE_NAME) +public class CityJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_CITIES"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "CITY_CODE") + private String id; + + @Column(name = "COUNTRY_CODE") + private String countryCode; + + @Column(name = "DESCRIPTION_EN") + private String nameEn; + + @Column(name = "DESCRIPTION_FR") + private String nameFr; + + @Override + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getNameEn() { + return nameEn; + } + + public void setNameEn(String nameEn) { + this.nameEn = nameEn; + } + + public String getNameFr() { + return nameFr; + } + + public void setNameFr(String nameFr) { + this.nameFr = nameFr; + } + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/CountryJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/CountryJpaEntity.java new file mode 100644 index 0000000..a2ccffb --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/CountryJpaEntity.java @@ -0,0 +1,56 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Immutable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +// SHARED — CDC candidate for future step +@Entity +@Immutable +@Table(name = CountryJpaEntity.TABLE_NAME) +public class CountryJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_COUNTRIES"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "COUNTRY_CODE") + private String id; + + @Column(name = "NAME_EN") + private String nameEn; + + @Column(name = "NAME_FR") + private String nameFr; + + @Override + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getNameEn() { + return nameEn; + } + + public void setNameEn(String nameEn) { + this.nameEn = nameEn; + } + + public String getNameFr() { + return nameFr; + } + + public void setNameFr(String nameFr) { + this.nameFr = nameFr; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/EmailJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/EmailJpaEntity.java new file mode 100644 index 0000000..9ea4efb --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/EmailJpaEntity.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = EmailJpaEntity.TABLE_NAME) +public class EmailJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "MV_EMAILS"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "PER_ID") + private Long id; + + @Column(name = "EMAIL") + private String email; + + @Override + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/ExchangeRateJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/ExchangeRateJpaEntity.java new file mode 100644 index 0000000..6a44915 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/ExchangeRateJpaEntity.java @@ -0,0 +1,53 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Type; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.math.BigDecimal; +import java.time.LocalDate; + +@Getter +@Setter +@Entity +@Table(name = ExchangeRateJpaEntity.TABLE_NAME) +public class ExchangeRateJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "MV_RATE_EXCHANGE"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "UNIQID") + private Long id; + + @Column(name = "DEV_CD") + private String currency; + + @Column(name = "DT_DEB") + private LocalDate startDate; + + @Column(name = "TAUX_EUR") + private BigDecimal exchangeRate; + + @Column(name = "DT_FIN") + private LocalDate endDate; + + @Column(name = "month_year") + private String monthYear; + + @Column(name = "DECIMALS") + @Type(type = "yes_no") + private Boolean decimals; + + @Override + public Long getId() { + return id; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/HOAFunctionalMailboxJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/HOAFunctionalMailboxJpaEntity.java new file mode 100644 index 0000000..0f4ec13 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/HOAFunctionalMailboxJpaEntity.java @@ -0,0 +1,70 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import java.util.Objects; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Immutable; +import org.hibernate.proxy.HibernateProxy; + +/** + * @author ienaccat + */ +@Entity +@Immutable +@Table(name = HOAFunctionalMailboxJpaEntity.TABLE_NAME) +@Getter +@Setter +public class HOAFunctionalMailboxJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "ENTITIES_EMAILS"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "ORG_ID") + private Long id; + + + @Column(name = "EMAIL") + private String email; + + @Column(name = "EMAIL_TYPE") + private String emailType; + + @Override + public Long getId() { + return id; + } + + @Override + public final boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null) { + return false; + } + Class oEffectiveClass = + o instanceof HibernateProxy ? ((HibernateProxy) o).getHibernateLazyInitializer().getPersistentClass() : o.getClass(); + Class thisEffectiveClass = + this instanceof HibernateProxy ? ((HibernateProxy) this).getHibernateLazyInitializer().getPersistentClass() : this.getClass(); + if (thisEffectiveClass != oEffectiveClass) { + return false; + } + HOAFunctionalMailboxJpaEntity hoaFunctionalMailboxJpaEntity = (HOAFunctionalMailboxJpaEntity) o; + return getId() != null && Objects.equals(getId(), hoaFunctionalMailboxJpaEntity.getId()); + } + + @Override + public final int hashCode() { + return this instanceof HibernateProxy + ? ((HibernateProxy) this).getHibernateLazyInitializer().getPersistentClass().hashCode() + : getClass().hashCode(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/HeadOfAdministrationJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/HeadOfAdministrationJpaEntity.java new file mode 100644 index 0000000..238c72d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/HeadOfAdministrationJpaEntity.java @@ -0,0 +1,55 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Immutable; + +/** + * @author ienaccat + */ +@Entity +@Immutable +@Table(name = HeadOfAdministrationJpaEntity.TABLE_NAME) +@Getter +@Setter +@Deprecated +//TODO RIGD-3615 remove it once HOA FMB is adopted +public class HeadOfAdministrationJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "MV_HEAD_OF_ADMINISTRATIONS"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "ORG_ID") + private Long id; + + @Column(name = "ORG_CD") + private String orgCD; + + @Column(name = "ORG_NAME") + private String orgName; + + @Column(name = "JOB_ID") + private Long jobId; + + @Column(name = "FIRST_NAME") + private String firstName; + + @Column(name = "SURNAME") + private String surname; + + @Column(name = "EMAIL") + private String email; + + @Override + public Long getId() { + return id; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/IataAirportJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/IataAirportJpaEntity.java new file mode 100644 index 0000000..9e75796 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/IataAirportJpaEntity.java @@ -0,0 +1,89 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Immutable; +import org.hibernate.annotations.Type; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Immutable +@Table(name = IataAirportJpaEntity.TABLE_NAME) +public class IataAirportJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "AIRPORTS"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "IATA_CODE") + private String id; + + @Column(name = "AIRPORT_NAME") + private String airportName; + + @Column(name = "LOCATION_NAME") + private String locationName; + + @Column(name = "EASREFN") + private String easrefn; + + @Column(name = "ACTIVE") + @Type(type = "yes_no") + private Boolean active; + + @Column(name = "COUNTRY_CODE") + private String countryCode; + + @Override + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getAirportName() { + return airportName; + } + + public void setAirportName(String airportName) { + this.airportName = airportName; + } + + public String getLocationName() { + return locationName; + } + + public void setLocationName(String locationName) { + this.locationName = locationName; + } + + public String getEasrefn() { + return easrefn; + } + + public void setEasrefn(String easrefn) { + this.easrefn = easrefn; + } + + public Boolean getActive() { + return active; + } + + public void setActive(Boolean active) { + this.active = active; + } + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/MVCountryJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/MVCountryJpaEntity.java new file mode 100644 index 0000000..e8afe55 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/MVCountryJpaEntity.java @@ -0,0 +1,190 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Immutable; +import org.hibernate.annotations.Type; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Immutable +@Table(name = MVCountryJpaEntity.TABLE_NAME) +public class MVCountryJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "MV_COUNTRIES"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "COUNTRY_CODE") + private String id; + + @Column(name = "CD_ISO_A2") + private String cdIsoA2; + + @Column(name = "CD_ISO_N3") + private String cdIsoN3; + + @Column(name = "NAME_EN") + private String nameEn; + + @Column(name = "LONG_NAME_EN") + private String longNameEn; + + @Column(name = "NAME_FR") + private String nameFr; + + @Column(name = "LONG_NAME_FR") + private String longNameFr; + + @Column(name = "EU_STATE") + @Type(type = "yes_no") + private Boolean euState; + + @Column(name = "CAPITAL") + private String capital; + + @Column(name = "COUNTRY_PHONE_CODE") + private String countryPhoneCode; + + + @Column(name = "CONTINENT_CODE") + private String continentCode; + + @Column(name = "STATUS") + private String status; + + @Column(name = "CURRENCY_CODE") + private String currencyCode; + + @Column(name = "CURRENCY_NAME") + private String currencyName; + + @Column(name = "PLACE_OF_ORIGIN_EU_STATE") + @Type(type = "yes_no") + private Boolean placeOfOriginEUState; + + @Override + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getCdIsoA2() { + return cdIsoA2; + } + + public void setCdIsoA2(String cdIsoA2) { + this.cdIsoA2 = cdIsoA2; + } + + public String getCdIsoN3() { + return cdIsoN3; + } + + public void setCdIsoN3(String cdIsoN3) { + this.cdIsoN3 = cdIsoN3; + } + + public String getNameEn() { + return nameEn; + } + + public void setNameEn(String nameEn) { + this.nameEn = nameEn; + } + + public String getLongNameEn() { + return longNameEn; + } + + public void setLongNameEn(String longNameEn) { + this.longNameEn = longNameEn; + } + + public String getNameFr() { + return nameFr; + } + + public void setNameFr(String nameFr) { + this.nameFr = nameFr; + } + + public String getLongNameFr() { + return longNameFr; + } + + public void setLongNameFr(String longNameFr) { + this.longNameFr = longNameFr; + } + + public Boolean getEuState() { + return euState; + } + + public void setEuState(Boolean euState) { + this.euState = euState; + } + + public String getCapital() { + return capital; + } + + public void setCapital(String capital) { + this.capital = capital; + } + + public String getCountryPhoneCode() { + return countryPhoneCode; + } + + public void setCountryPhoneCode(String countryPhoneCode) { + this.countryPhoneCode = countryPhoneCode; + } + + public String getContinentCode() { + return continentCode; + } + + public void setContinentCode(String continentCode) { + this.continentCode = continentCode; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getCurrencyCode() { + return currencyCode; + } + + public void setCurrencyCode(String currencyCode) { + this.currencyCode = currencyCode; + } + + public String getCurrencyName() { + return currencyName; + } + + public void setCurrencyName(String currencyName) { + this.currencyName = currencyName; + } + + public Boolean getPlaceOfOriginEUState() { + return placeOfOriginEUState; + } + + public void setPlaceOfOriginEUState(Boolean placeOfOriginEUState) { + this.placeOfOriginEUState = placeOfOriginEUState; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/MovementContextJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/MovementContextJpaEntity.java new file mode 100644 index 0000000..0e3ea2c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/MovementContextJpaEntity.java @@ -0,0 +1,50 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; + +import static javax.persistence.GenerationType.SEQUENCE; + +@Entity +@Table(name = MovementContextJpaEntity.TABLE_NAME) +public class MovementContextJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "MOVEMENT_CONTEXT"; + + public static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "MOVEMENT_CONTEXT_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "NAME") + private String name; + + @Override + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/MovementFileDetailJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/MovementFileDetailJpaEntity.java new file mode 100644 index 0000000..b0f75f0 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/MovementFileDetailJpaEntity.java @@ -0,0 +1,82 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Immutable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.time.LocalDate; + +/** + * MovementFile Attachment Entity. + * + * @author ityagiks + */ +@Entity +@Immutable +@Table(name = MovementFileDetailJpaEntity.TABLE_NAME) +public class MovementFileDetailJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_MOVEMENT_FILE_DETAIL"; + + private static final long serialVersionUID = 1L; + + @Column(name = "ID") + @Id + private Long id; + + @Column(name = "MOVEMENT_FILE_ID") + private Long movementFileId; + + @Column(name = "DETAIL_NAME") + private String detailName; + + @Column(name = "DETAIL_DESCRIPTION") + private String detailDescription; + + @Column(name = "DETAIL_DATE") + private LocalDate detailDate; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getMovementFileId() { + return movementFileId; + } + + public void setMovementFileId(Long movementFileId) { + this.movementFileId = movementFileId; + } + + public String getDetailName() { + return detailName; + } + + public void setDetailName(String detailName) { + this.detailName = detailName; + } + + public String getDetailDescription() { + return detailDescription; + } + + public void setDetailDescription(String detailDescription) { + this.detailDescription = detailDescription; + } + + public LocalDate getDetailDate() { + return detailDate; + } + + public void setDetailDate(LocalDate detailDate) { + this.detailDate = detailDate; + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/MovementFileJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/MovementFileJpaEntity.java new file mode 100644 index 0000000..f1bc336 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/MovementFileJpaEntity.java @@ -0,0 +1,683 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.hibernate.annotations.NotFound; +import org.hibernate.annotations.NotFoundAction; +import org.hibernate.annotations.Type; +import org.hibernate.envers.AuditOverride; +import org.hibernate.envers.Audited; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.UUID; + +import static javax.persistence.GenerationType.SEQUENCE; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +// SHARED — CDC candidate for future step +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@Table(name = MovementFileJpaEntity.ROTATION_FILE) +@AuditOverride(forClass = AbstractAuditableJpaEntity.class) +public class MovementFileJpaEntity extends AbstractAuditableJpaEntity { + + public static final String ROTATION_FILE = "MOVEMENT_FILES"; + + public static final String SEQUENCE_NAME = "SEQ_" + ROTATION_FILE; + + public static final String SEQUENCE_NAME_NOTIFICATION = "SEQ_NOTIFICATION_ENTITY"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "MOVEMENT_FILE_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "FILE_ID") + private String fileId; + + @JoinColumn(name = "PER_ID") + @ManyToOne(fetch = FetchType.LAZY) + private VPersonJpaEntity jobHolder; + + @JoinColumn(name = "CONTEXT_ID") + @ManyToOne(fetch = FetchType.LAZY) + private MovementContextJpaEntity movementContext; + + @Column(name = "PRIORITY") + @Type(type = "yes_no") + private Boolean priority; + + @JoinColumn(name = "MOVEMENT_TYPE_ID") + @ManyToOne(fetch = FetchType.LAZY) + private MovementTypeJpaEntity movementType; + + @Column(name = "YEAR") + private Integer year; + + @JoinColumn(name = "JOB_ID_TO") + @NotFound(action = NotFoundAction.IGNORE) + @ManyToOne(fetch = FetchType.LAZY) + private VJobJpaEntity jobTo; + + @Column(name = "BUDGET_LINE") + private String budgetLine; + + @Column(name = "BUDGET_LINE_JOB_TO") + private String budgetLineJobTo; + + @Column(name = "BUDGET_LINE_JOB_FROM") + private String budgetLineJobFrom; + + @Column(name = "FAMILY_POSTING") + @Type(type = "yes_no") + private Boolean familyPosting; + + @Column(name = "JOBTO_FAMILY_POSTING") + @Type(type = "yes_no") + private Boolean jobToFamilyPosting; + + @Column(name = "HOD_POSTING") + @Type(type = "yes_no") + private Boolean hodPosting; + + @Column(name = "AIRFREIGHT_VOLUME_CEILING") + private BigDecimal airfreightVolumeCeiling; + + @Column(name = "CHILD_FREE_POSTING") + @Type(type = "yes_no") + private Boolean childFreePosting; + + @Column(name = "START_DATE") + private LocalDate startDate; + + @Column(name = "ESTIMATED_END_DATE") + private LocalDate estimatedEndDate; + + @Enumerated(EnumType.STRING) + @Column(name = "STATE") + private MovementFileState state; + + @Column(name = "AIPN_FILE_ID") + private String aipnFileId; + + @Column(name = "AIPN_DOCUMENT_ID") + private String aipnDocumentId; + + @Column(name = "ORG_ID_FROM") + private Long orgIdFrom; + + @Column(name = "ORG_ID_TO") + private Long orgIdTo; + + @JoinColumn(name = "JOB_ID_FROM") + @NotFound(action = NotFoundAction.IGNORE) + @ManyToOne(fetch = FetchType.LAZY) + private VJobJpaEntity jobFrom; + + @Column(name = "ASSIGN_START_DATE_FROM") + private LocalDate assignStartDateFrom; + + @Column(name = "ASSIGN_END_DATE_FROM") + private LocalDate assignEndDateFrom; + + @Column(name = "ASSIGN_START_DATE_TO") + private LocalDate assignStartDateTo; + + @Column(name = "ASSIGN_END_DATE_TO") + private LocalDate assignEndDateTo; + + @Column(name = "JOB_FROM_START_DATE") + private LocalDate jobFromStartDate; + + @Column(name = "ORG_CD_FROM") + private String orgCdFrom; + + @Column(name = "ORG_CD_TO") + private String orgCdTo; + + @Column(name = "SM_ID", length = 16) + @Type(type = "uuid-binary") + private UUID smId; + + @Column(name = "WITHOUT_RIGHTS") + private Boolean withoutRights; + + @Column(name = "REASON_EOC") + private String reasonEoc; + + @Column(name = "AIPN_NOTIF_DATE") + private LocalDate aipnNotifDate; + + @Column(name = "MOVEMENT_NR") + private Long movementNr; + + @Column(name = "REASON_DELETION") + private String reasonDeletion; + + @Column(name = "EVACUATION_STATUS") + private Boolean evacuated; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "COUNTRY_CODE_TO") + private CountryJpaEntity countryTo; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "CITY_CODE_TO") + private CityJpaEntity cityTo; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "COUNTRY_CODE_FROM") + private CountryJpaEntity countryFrom; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "CITY_CODE_FROM") + private CityJpaEntity cityFrom; + + @Column(name = "DELEGATION_ORG_ID_FROM") + private Long delegationOrgFromId; + + @Column(name = "PERSONNEL_TYPE_ID") + private Long personnelTypeId; + + @Column(name = "PERSONNEL_TYPE_DESC") + private String personnelTypeDesc; + + @Column(name = "JOB_FUNCTION_CODE") + private String jobFunctionCode; + + @Column(name = "JOB_FUNCTION_DESC") + private String jobFunctionDesc; + + @Column(name = "INSTITUTION_CODE") + private String institutionCode; + + @Column(name = "INSTITUTION_DESC") + private String institutionDesc; + + @Column(name = "INTERNAL_COMMENT") + private String internalComment; + + @Column(name = "HOD_JOB_TO") + @Type(type = "yes_no") + private Boolean hodJobTo; + + @Column(name = "HOD_JOB_FROM") + @Type(type = "yes_no") + private Boolean hodJobFrom; + + @Column(name = "FOLLOWUP_FLAGS") + private String followupFlags; + + @Column(name = "IATA_CODE") + private String iataCode; + + @Column(name = "IATA_CODE_FROM") + private String iataFrom; + + @Column(name = "IATA_CODE_TO") + private String iataTo; + + @Override + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getFileId() { + return fileId; + } + + public void setFileId(String fileId) { + this.fileId = fileId; + } + + public VPersonJpaEntity getJobHolder() { + return jobHolder; + } + + public void setJobHolder(VPersonJpaEntity jobHolder) { + this.jobHolder = jobHolder; + } + + public MovementContextJpaEntity getMovementContext() { + return movementContext; + } + + public void setMovementContext(MovementContextJpaEntity movementContext) { + this.movementContext = movementContext; + } + + public Boolean getPriority() { + return priority; + } + + public void setPriority(Boolean priority) { + this.priority = priority; + } + + public MovementTypeJpaEntity getMovementType() { + return movementType; + } + + public void setMovementType(MovementTypeJpaEntity movementType) { + this.movementType = movementType; + } + + public VJobJpaEntity getJobTo() { + return jobTo; + } + + public void setJobTo(VJobJpaEntity jobTo) { + this.jobTo = jobTo; + } + + public Integer getYear() { + return year; + } + + public void setYear(Integer year) { + this.year = year; + } + + public String getBudgetLine() { + return budgetLine; + } + + public void setBudgetLine(String budgetLine) { + this.budgetLine = budgetLine; + } + + public Boolean getChildFreePosting() { + return childFreePosting; + } + + public void setChildFreePosting(Boolean childFreePosting) { + this.childFreePosting = childFreePosting; + } + + public LocalDate getStartDate() { + return startDate; + } + + public void setStartDate(LocalDate startDate) { + this.startDate = startDate; + } + + public LocalDate getEstimatedEndDate() { + return estimatedEndDate; + } + + public void setEstimatedEndDate(LocalDate estimatedEndDate) { + this.estimatedEndDate = estimatedEndDate; + } + + public String getAipnFileId() { + return aipnFileId; + } + + public void setAipnFileId(String aipnFileId) { + this.aipnFileId = aipnFileId; + } + + public Long getOrgIdFrom() { + return orgIdFrom; + } + + public void setOrgIdFrom(Long orgIdFrom) { + this.orgIdFrom = orgIdFrom; + } + + public Long getOrgIdTo() { + return orgIdTo; + } + + public void setOrgIdTo(Long orgIdTo) { + this.orgIdTo = orgIdTo; + } + + public LocalDate getAssignStartDateFrom() { + return assignStartDateFrom; + } + + public void setAssignStartDateFrom(LocalDate assignStartDateFrom) { + this.assignStartDateFrom = assignStartDateFrom; + } + + public LocalDate getAssignEndDateFrom() { + return assignEndDateFrom; + } + + public void setAssignEndDateFrom(LocalDate assignEndDateFrom) { + this.assignEndDateFrom = assignEndDateFrom; + } + + public LocalDate getAssignStartDateTo() { + return assignStartDateTo; + } + + public void setAssignStartDateTo(LocalDate assignStartDateTo) { + this.assignStartDateTo = assignStartDateTo; + } + + public LocalDate getAssignEndDateTo() { + return assignEndDateTo; + } + + public void setAssignEndDateTo(LocalDate assignEndDateTo) { + this.assignEndDateTo = assignEndDateTo; + } + + public LocalDate getJobFromStartDate() { + return jobFromStartDate; + } + + public void setJobFromStartDate(LocalDate jobFromStartDate) { + this.jobFromStartDate = jobFromStartDate; + } + + public String getOrgCdFrom() { + return orgCdFrom; + } + + public void setOrgCdFrom(String orgCdFrom) { + this.orgCdFrom = orgCdFrom; + } + + public String getOrgCdTo() { + return orgCdTo; + } + + public void setOrgCdTo(String orgCdTo) { + this.orgCdTo = orgCdTo; + } + + public MovementFileState getState() { + return state; + } + + public void setState(MovementFileState state) { + this.state = state; + } + + public UUID getSmId() { + return smId; + } + + public void setSmId(UUID smId) { + this.smId = smId; + } + + public Boolean getWithoutRights() { + return withoutRights; + } + + public void setWithoutRights(Boolean withoutRights) { + this.withoutRights = withoutRights; + } + + public String getReasonEoc() { + return reasonEoc; + } + + public void setReasonEoc(String reasonEoc) { + this.reasonEoc = reasonEoc; + } + + public LocalDate getAipnNotifDate() { + return aipnNotifDate; + } + + public void setAipnNotifDate(LocalDate aipnNotifDate) { + this.aipnNotifDate = aipnNotifDate; + } + + public String getAipnDocumentId() { + return aipnDocumentId; + } + + public void setAipnDocumentId(String aipnDocumentId) { + this.aipnDocumentId = aipnDocumentId; + } + + public Long getMovementNr() { + return movementNr; + } + + public void setMovementNr(Long movementNr) { + this.movementNr = movementNr; + } + + public String getReasonDeletion() { + return reasonDeletion; + } + + public void setReasonDeletion(String reasonDeletion) { + this.reasonDeletion = reasonDeletion; + } + + public Boolean getEvacuated() { + return this.evacuated; + } + + public void setEvacuated(Boolean evacuated) { + this.evacuated = evacuated; + } + + public CountryJpaEntity getCountryTo() { + return countryTo; + } + + public void setCountryTo(CountryJpaEntity countryTo) { + this.countryTo = countryTo; + } + + public CityJpaEntity getCityTo() { + return cityTo; + } + + public void setCityTo(CityJpaEntity cityTo) { + this.cityTo = cityTo; + } + + public CountryJpaEntity getCountryFrom() { + return countryFrom; + } + + public void setCountryFrom(CountryJpaEntity countryFrom) { + this.countryFrom = countryFrom; + } + + public CityJpaEntity getCityFrom() { + return cityFrom; + } + + public void setCityFrom(CityJpaEntity cityFrom) { + this.cityFrom = cityFrom; + } + + public VJobJpaEntity getJobFrom() { + return jobFrom; + } + + public void setJobFrom(VJobJpaEntity jobFrom) { + this.jobFrom = jobFrom; + } + + public Long getDelegationOrgFromId() { + return delegationOrgFromId; + } + + public void setDelegationOrgFromId(Long delegationOrgFromId) { + this.delegationOrgFromId = delegationOrgFromId; + } + + public Boolean getFamilyPosting() { + return familyPosting; + } + + public void setFamilyPosting(Boolean familyPosting) { + this.familyPosting = familyPosting; + } + + public Boolean getJobToFamilyPosting() { + return jobToFamilyPosting; + } + + public void setJobToFamilyPosting(Boolean jobToFamilyPosting) { + this.jobToFamilyPosting = jobToFamilyPosting; + } + + public Boolean getHodPosting() { + return hodPosting; + } + + public void setHodPosting(Boolean hodPosting) { + this.hodPosting = hodPosting; + } + + public BigDecimal getAirfreightVolumeCeiling() { + return airfreightVolumeCeiling; + } + + public void setAirfreightVolumeCeiling(BigDecimal airfreightVolumeCeiling) { + this.airfreightVolumeCeiling = airfreightVolumeCeiling; + } + + public String getPersonnelTypeDesc() { + return personnelTypeDesc; + } + + public void setPersonnelTypeDesc(String personnelTypeDesc) { + this.personnelTypeDesc = personnelTypeDesc; + } + + public String getInternalComment() { + return internalComment; + } + + public void setInternalComment(String internalComment) { + this.internalComment = internalComment; + } + + public String getBudgetLineJobTo() { + return budgetLineJobTo; + } + + public void setBudgetLineJobTo(String budgetLineJobTo) { + this.budgetLineJobTo = budgetLineJobTo; + } + + public String getBudgetLineJobFrom() { + return budgetLineJobFrom; + } + + public void setBudgetLineJobFrom(String budgetLineJobFrom) { + this.budgetLineJobFrom = budgetLineJobFrom; + } + + public Boolean getHodJobTo() { + return hodJobTo; + } + + public void setHodJobTo(Boolean hodJobTo) { + this.hodJobTo = hodJobTo; + } + + public Boolean getHodJobFrom() { + return hodJobFrom; + } + + public void setHodJobFrom(Boolean hodJobFrom) { + this.hodJobFrom = hodJobFrom; + } + + public Long getPersonnelTypeId() { + return personnelTypeId; + } + + public void setPersonnelTypeId(Long personnelTypeId) { + this.personnelTypeId = personnelTypeId; + } + + public String getJobFunctionCode() { + return jobFunctionCode; + } + + public void setJobFunctionCode(String jobFunctionCode) { + this.jobFunctionCode = jobFunctionCode; + } + + public String getJobFunctionDesc() { + return jobFunctionDesc; + } + + public void setJobFunctionDesc(String jobFunctionDesc) { + this.jobFunctionDesc = jobFunctionDesc; + } + + public String getInstitutionCode() { + return institutionCode; + } + + public void setInstitutionCode(String institutionCode) { + this.institutionCode = institutionCode; + } + + public String getInstitutionDesc() { + return institutionDesc; + } + + public void setInstitutionDesc(String institutionDesc) { + this.institutionDesc = institutionDesc; + } + + public String getFollowupFlags() { + return followupFlags; + } + + public void setFollowupFlags(String followupFlags) { + this.followupFlags = followupFlags; + } + + public String getIataCode() { + return iataCode; + } + + public void setIataCode(String iataCode) { + this.iataCode = iataCode; + } + + public String getIataFrom() { + return iataFrom; + } + + public void setIataFrom(String iataFrom) { + this.iataFrom = iataFrom; + } + + public String getIataTo() { + return iataTo; + } + + public void setIataTo(String iataTo) { + this.iataTo = iataTo; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/MovementTypeJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/MovementTypeJpaEntity.java new file mode 100644 index 0000000..5b62f51 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/MovementTypeJpaEntity.java @@ -0,0 +1,89 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import eu.europa.eeas.erights.common.service.model.BudgetLineJob; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = MovementTypeJpaEntity.TABLE_NAME) +public class MovementTypeJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "MOVEMENT_TYPES"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "MOVEMENT_TYPE_ID") + private Long id; + + @Column(name = "CODE_FROM") + private String codeFrom; + + @Column(name = "CODE_TO") + private String codeTo; + + @Column(name = "MOVEMENT_TYPE") + private String movementType; + + @Column(name = "CONTEXT_ID") + private Long contextId; + + @Enumerated(EnumType.STRING) + @Column(name = "BUDGETLINE_JOB") + private BudgetLineJob budgetLineJob; + + @Override + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCodeFrom() { + return codeFrom; + } + + public void setCodeFrom(String codeFrom) { + this.codeFrom = codeFrom; + } + + public String getCodeTo() { + return codeTo; + } + + public void setCodeTo(String codeTo) { + this.codeTo = codeTo; + } + + public String getMovementType() { + return movementType; + } + + public void setMovementType(String movementType) { + this.movementType = movementType; + } + + public Long getContextId() { + return contextId; + } + + public void setContextId(Long contextId) { + this.contextId = contextId; + } + + public BudgetLineJob getBudgetLineJob() { + return budgetLineJob; + } + + public void setBudgetLineJob(BudgetLineJob budgetLineJob) { + this.budgetLineJob = budgetLineJob; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PersonAddressHistoryJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PersonAddressHistoryJpaEntity.java new file mode 100644 index 0000000..c41a6f2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PersonAddressHistoryJpaEntity.java @@ -0,0 +1,396 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; + +import javax.persistence.*; +import java.time.LocalDate; + +@Entity +@Table(name = PersonAddressHistoryJpaEntity.TABLE_NAME) +public class PersonAddressHistoryJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_PERSON_ADDRESS_HIST"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "UNIQ_ID") // NUMBER(10,0) + private Long uniqId; + + @Column(name = "PER_ID") // NUMBER(8,0) + private Long perId; + + @Column(name = "START_DATE") // DATE + private LocalDate startDate; + + @Column(name = "END_DATE") // DATE + private LocalDate endDate; + + @Column(name = "EFFECTIVE_DATE") // DATE + private LocalDate effectiveDate; + + @Column(name = "DECL_CHG_DATE") // DATE + private LocalDate declChgDate; + + @Column(name = "TADR_CD") // NUMBER(3,0) + private Integer tadrCd; + + @Column(name = "ADDRESS_TYPE_CODE") // VARCHAR2(100 CHAR) + private String addressTypeCode; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "COUNTRY_CODE", insertable = false, updatable = false) + private CountryJpaEntity country; + + @Column(name = "CITY_NAME") // VARCHAR2(200 CHAR) + private String cityName; + + @Column(name = "POSTAL_CODE") // VARCHAR2(30 CHAR) + private String postalCode; + + @Column(name = "STREET_NAME") // VARCHAR2(250 CHAR) + private String streetName; + + @Column(name = "STREET_NAME1") // VARCHAR2(250 CHAR) + private String streetName1; + + @Column(name = "STREET_NAME2") // VARCHAR2(250 CHAR) + private String streetName2; + + @Column(name = "STREET_NUMBER") // VARCHAR2(20 CHAR) + private String streetNumber; + + @Column(name = "POSTAL_BOX") // VARCHAR2(20 CHAR) + private String postalBox; + + @Column(name = "COMMENTS") // VARCHAR2(2000 CHAR) + private String comments; + + @Column(name = "ADDITIONAL_ADDRESS") // VARCHAR2(400 CHAR) + private String additionalAddress; + + @Column(name = "COUNTRY_CODE") // VARCHAR2(3 CHAR) + private String countryCode; + + @Column(name = "ADDITIONAL_ADDRESS2") // VARCHAR2(400 CHAR) + private String additionalAddress2; + + @Column(name = "OREDER_ADDRESS") // NUMBER(2,0) + private Integer orederAddress; + + @Column(name = "LANGUAGE_CODE") // VARCHAR2(3 CHAR) + private String languageCode; + + @Column(name = "PER_ID_REL_PERS") // NUMBER(8,0) + private Long perIdRelPers; + + @Column(name = "SURNAME") // VARCHAR2(80 CHAR) + private String surname; + + @Column(name = "FIRST_NAME") // VARCHAR2(80 CHAR) + private String firstName; + + @Column(name = "DATE_OF_BIRTH") // DATE + private LocalDate dateOfBirth; + + @Column(name = "TITLE") // VARCHAR2(3 CHAR) + private String title; + + @Column(name = "LINK_ADR_TEL") // VARCHAR2(20 CHAR) + private String linkAdrTel; + + @Column(name = "SP2_ADDRESS_ID") // NUMBER(10,0) + private Long sp2AddressId; + + @Column(name = "IRIS_ADDRESS_ID") // NUMBER(10,0) + private Long irisAddressId; + + @Column(name = "SRC_ID") // NUMBER(10,0) + private Long srcId; + + @Column(name = "INS_CD") // VARCHAR2(10 CHAR) + private String insCd; + + @Column(name = "CREATED_DATE") + private LocalDate createdDate; + + @Column(name = "UPDATED_DATE") + private LocalDate updatedDate; + + @Override + public Long getId() { + return uniqId; + } + + public Long getUniqId() { + return uniqId; + } + + public void setUniqId(Long uniqId) { + this.uniqId = uniqId; + } + + public Long getPerId() { + return perId; + } + + public void setPerId(Long perId) { + this.perId = perId; + } + + public LocalDate getStartDate() { + return startDate; + } + + public void setStartDate(LocalDate startDate) { + this.startDate = startDate; + } + + public LocalDate getEndDate() { + return endDate; + } + + public void setEndDate(LocalDate endDate) { + this.endDate = endDate; + } + + public LocalDate getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(LocalDate effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public LocalDate getDeclChgDate() { + return declChgDate; + } + + public void setDeclChgDate(LocalDate declChgDate) { + this.declChgDate = declChgDate; + } + + public Integer getTadrCd() { + return tadrCd; + } + + public void setTadrCd(Integer tadrCd) { + this.tadrCd = tadrCd; + } + + public String getAddressTypeCode() { + return addressTypeCode; + } + + public void setAddressTypeCode(String addressTypeCode) { + this.addressTypeCode = addressTypeCode; + } + + public CountryJpaEntity getCountry() { + return country; + } + + public void setCountry(CountryJpaEntity country) { + this.country = country; + } + + public String getCityName() { + return cityName; + } + + public void setCityName(String cityName) { + this.cityName = cityName; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getStreetName() { + return streetName; + } + + public void setStreetName(String streetName) { + this.streetName = streetName; + } + + public String getStreetName1() { + return streetName1; + } + + public void setStreetName1(String streetName1) { + this.streetName1 = streetName1; + } + + public String getStreetName2() { + return streetName2; + } + + public void setStreetName2(String streetName2) { + this.streetName2 = streetName2; + } + + public String getStreetNumber() { + return streetNumber; + } + + public void setStreetNumber(String streetNumber) { + this.streetNumber = streetNumber; + } + + public String getPostalBox() { + return postalBox; + } + + public void setPostalBox(String postalBox) { + this.postalBox = postalBox; + } + + public String getComments() { + return comments; + } + + public void setComments(String comments) { + this.comments = comments; + } + + public String getAdditionalAddress() { + return additionalAddress; + } + + public void setAdditionalAddress(String additionalAddress) { + this.additionalAddress = additionalAddress; + } + + public String getAdditionalAddress2() { + return additionalAddress2; + } + + public void setAdditionalAddress2(String additionalAddress2) { + this.additionalAddress2 = additionalAddress2; + } + + public Integer getOrederAddress() { + return orederAddress; + } + + public void setOrederAddress(Integer orederAddress) { + this.orederAddress = orederAddress; + } + + public String getLanguageCode() { + return languageCode; + } + + public void setLanguageCode(String languageCode) { + this.languageCode = languageCode; + } + + public Long getPerIdRelPers() { + return perIdRelPers; + } + + public void setPerIdRelPers(Long perIdRelPers) { + this.perIdRelPers = perIdRelPers; + } + + public String getSurname() { + return surname; + } + + public void setSurname(String surname) { + this.surname = surname; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public LocalDate getDateOfBirth() { + return dateOfBirth; + } + + public void setDateOfBirth(LocalDate dateOfBirth) { + this.dateOfBirth = dateOfBirth; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getLinkAdrTel() { + return linkAdrTel; + } + + public void setLinkAdrTel(String linkAdrTel) { + this.linkAdrTel = linkAdrTel; + } + + public Long getSp2AddressId() { + return sp2AddressId; + } + + public void setSp2AddressId(Long sp2AddressId) { + this.sp2AddressId = sp2AddressId; + } + + public Long getIrisAddressId() { + return irisAddressId; + } + + public void setIrisAddressId(Long irisAddressId) { + this.irisAddressId = irisAddressId; + } + + public Long getSrcId() { + return srcId; + } + + public void setSrcId(Long srcId) { + this.srcId = srcId; + } + + public String getInsCd() { + return insCd; + } + + public void setInsCd(String insCd) { + this.insCd = insCd; + } + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + + public LocalDate getCreatedDate() { + return createdDate; + } + + public void setCreatedDate(LocalDate createdDate) { + this.createdDate = createdDate; + } + + public LocalDate getUpdatedDate() { + return updatedDate; + } + + public void setUpdatedDate(LocalDate updatedDate) { + this.updatedDate = updatedDate; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PersonAddressJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PersonAddressJpaEntity.java new file mode 100644 index 0000000..18867c3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PersonAddressJpaEntity.java @@ -0,0 +1,404 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import java.time.LocalDate; +import org.hibernate.annotations.Immutable; + +@Entity +@Immutable +@Table(name = PersonAddressJpaEntity.TABLE_NAME) +public class PersonAddressJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "MV_PERSON_ADDRESS"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "UNIQ_ID") // NUMBER(10,0) + private Long uniqId; + + @Column(name = "PER_ID") // NUMBER(8,0) + private Long perId; + + @Column(name = "START_DATE") // DATE + private LocalDate startDate; + + @Column(name = "END_DATE") // DATE + private LocalDate endDate; + + @Column(name = "EFFECTIVE_DATE") // DATE + private LocalDate effectiveDate; + + @Column(name = "DECL_CHG_DATE") // DATE + private LocalDate declChgDate; + + @Column(name = "TADR_CD") // NUMBER(3,0) + private Integer tadrCd; + + @Column(name = "ADDRESS_TYPE_CODE") // VARCHAR2(100 CHAR) + private String addressTypeCode; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "COUNTRY_CODE", insertable = false, updatable = false) + private CountryJpaEntity country; + + @Column(name = "CITY_NAME") // VARCHAR2(200 CHAR) + private String cityName; + + @Column(name = "POSTAL_CODE") // VARCHAR2(30 CHAR) + private String postalCode; + + @Column(name = "STREET_NAME") // VARCHAR2(250 CHAR) + private String streetName; + + @Column(name = "STREET_NAME1") // VARCHAR2(250 CHAR) + private String streetName1; + + @Column(name = "STREET_NAME2") // VARCHAR2(250 CHAR) + private String streetName2; + + @Column(name = "STREET_NUMBER") // VARCHAR2(20 CHAR) + private String streetNumber; + + @Column(name = "POSTAL_BOX") // VARCHAR2(20 CHAR) + private String postalBox; + + @Column(name = "COMMENTS") // VARCHAR2(2000 CHAR) + private String comments; + + @Column(name = "ADDITIONAL_ADDRESS") // VARCHAR2(400 CHAR) + private String additionalAddress; + + @Column(name = "COUNTRY_CODE") // VARCHAR2(3 CHAR) + private String countryCode; + + @Column(name = "ADDITIONAL_ADDRESS2") // VARCHAR2(400 CHAR) + private String additionalAddress2; + + @Column(name = "OREDER_ADDRESS") // NUMBER(2,0) + private Integer orederAddress; + + @Column(name = "LANGUAGE_CODE") // VARCHAR2(3 CHAR) + private String languageCode; + + @Column(name = "PER_ID_REL_PERS") // NUMBER(8,0) + private Long perIdRelPers; + + @Column(name = "SURNAME") // VARCHAR2(80 CHAR) + private String surname; + + @Column(name = "FIRST_NAME") // VARCHAR2(80 CHAR) + private String firstName; + + @Column(name = "DATE_OF_BIRTH") // DATE + private LocalDate dateOfBirth; + + @Column(name = "TITLE") // VARCHAR2(3 CHAR) + private String title; + + @Column(name = "LINK_ADR_TEL") // VARCHAR2(20 CHAR) + private String linkAdrTel; + + @Column(name = "SP2_ADDRESS_ID") // NUMBER(10,0) + private Long sp2AddressId; + + @Column(name = "IRIS_ADDRESS_ID") // NUMBER(10,0) + private Long irisAddressId; + + @Column(name = "SRC_ID") // NUMBER(10,0) + private Long srcId; + + @Column(name = "INS_CD") // VARCHAR2(10 CHAR) + private String insCd; + + @Column(name = "CREATED_DATE") + private LocalDate createdDate; + + @Column(name = "UPDATED_DATE") + private LocalDate updatedDate; + + @Override + public Long getId() { + return uniqId; + } + + public Long getUniqId() { + return uniqId; + } + + public void setUniqId(Long uniqId) { + this.uniqId = uniqId; + } + + public Long getPerId() { + return perId; + } + + public void setPerId(Long perId) { + this.perId = perId; + } + + public LocalDate getStartDate() { + return startDate; + } + + public void setStartDate(LocalDate startDate) { + this.startDate = startDate; + } + + public LocalDate getEndDate() { + return endDate; + } + + public void setEndDate(LocalDate endDate) { + this.endDate = endDate; + } + + public LocalDate getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(LocalDate effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public LocalDate getDeclChgDate() { + return declChgDate; + } + + public void setDeclChgDate(LocalDate declChgDate) { + this.declChgDate = declChgDate; + } + + public Integer getTadrCd() { + return tadrCd; + } + + public void setTadrCd(Integer tadrCd) { + this.tadrCd = tadrCd; + } + + public String getAddressTypeCode() { + return addressTypeCode; + } + + public void setAddressTypeCode(String addressTypeCode) { + this.addressTypeCode = addressTypeCode; + } + + public CountryJpaEntity getCountry() { + return country; + } + + public void setCountry(CountryJpaEntity country) { + this.country = country; + } + + public String getCityName() { + return cityName; + } + + public void setCityName(String cityName) { + this.cityName = cityName; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getStreetName() { + return streetName; + } + + public void setStreetName(String streetName) { + this.streetName = streetName; + } + + public String getStreetName1() { + return streetName1; + } + + public void setStreetName1(String streetName1) { + this.streetName1 = streetName1; + } + + public String getStreetName2() { + return streetName2; + } + + public void setStreetName2(String streetName2) { + this.streetName2 = streetName2; + } + + public String getStreetNumber() { + return streetNumber; + } + + public void setStreetNumber(String streetNumber) { + this.streetNumber = streetNumber; + } + + public String getPostalBox() { + return postalBox; + } + + public void setPostalBox(String postalBox) { + this.postalBox = postalBox; + } + + public String getComments() { + return comments; + } + + public void setComments(String comments) { + this.comments = comments; + } + + public String getAdditionalAddress() { + return additionalAddress; + } + + public void setAdditionalAddress(String additionalAddress) { + this.additionalAddress = additionalAddress; + } + + public String getAdditionalAddress2() { + return additionalAddress2; + } + + public void setAdditionalAddress2(String additionalAddress2) { + this.additionalAddress2 = additionalAddress2; + } + + public Integer getOrederAddress() { + return orederAddress; + } + + public void setOrederAddress(Integer orederAddress) { + this.orederAddress = orederAddress; + } + + public String getLanguageCode() { + return languageCode; + } + + public void setLanguageCode(String languageCode) { + this.languageCode = languageCode; + } + + public Long getPerIdRelPers() { + return perIdRelPers; + } + + public void setPerIdRelPers(Long perIdRelPers) { + this.perIdRelPers = perIdRelPers; + } + + public String getSurname() { + return surname; + } + + public void setSurname(String surname) { + this.surname = surname; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public LocalDate getDateOfBirth() { + return dateOfBirth; + } + + public void setDateOfBirth(LocalDate dateOfBirth) { + this.dateOfBirth = dateOfBirth; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getLinkAdrTel() { + return linkAdrTel; + } + + public void setLinkAdrTel(String linkAdrTel) { + this.linkAdrTel = linkAdrTel; + } + + public Long getSp2AddressId() { + return sp2AddressId; + } + + public void setSp2AddressId(Long sp2AddressId) { + this.sp2AddressId = sp2AddressId; + } + + public Long getIrisAddressId() { + return irisAddressId; + } + + public void setIrisAddressId(Long irisAddressId) { + this.irisAddressId = irisAddressId; + } + + public Long getSrcId() { + return srcId; + } + + public void setSrcId(Long srcId) { + this.srcId = srcId; + } + + public String getInsCd() { + return insCd; + } + + public void setInsCd(String insCd) { + this.insCd = insCd; + } + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + + public LocalDate getCreatedDate() { + return createdDate; + } + + public void setCreatedDate(LocalDate createdDate) { + this.createdDate = createdDate; + } + + public LocalDate getUpdatedDate() { + return updatedDate; + } + + public void setUpdatedDate(LocalDate updatedDate) { + this.updatedDate = updatedDate; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PersonEmailJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PersonEmailJpaEntity.java new file mode 100644 index 0000000..6654511 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PersonEmailJpaEntity.java @@ -0,0 +1,86 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import static javax.persistence.GenerationType.SEQUENCE; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.erights.common.tools.person.EmailType; + +/** + * This entity stores additional PRIVATE email addresses. + * + * @author idominju + * + */ +@Entity +@Table(name = PersonEmailJpaEntity.TABLE_NAME) +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) +public class PersonEmailJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "PERSONS_EMAILS"; + public static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "PERSONS_EMAILS_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "PER_ID") + private Long perId; + + @Column(name = "EMAIL") + private String email; + + @Column(name = "EMAIL_TYPE") + @Enumerated(EnumType.STRING) + private EmailType emailType; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getPerId() { + return perId; + } + + public void setPerId(Long perId) { + this.perId = perId; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public EmailType getEmailType() { + return emailType; + } + + public void setEmailType(EmailType emailType) { + this.emailType = emailType; + } + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PersonIndemnityJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PersonIndemnityJpaEntity.java new file mode 100644 index 0000000..eca7057 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PersonIndemnityJpaEntity.java @@ -0,0 +1,125 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.time.LocalDate; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Table(name = PersonIndemnityJpaEntity.TABLE_NAME) +@Getter +@Setter +public class PersonIndemnityJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "MV_PERSON_RELATIVES_RIGHTS"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "RIG_ID") //ID + private Long rigId; + + @Column(name = "PER_ID_BENEF") + private Long benefPerId; + + @Column(name = "CODE") + private String code; + + @Column(name = "DATE_FROM") //VALIDITY + private LocalDate dateFrom; + + @Column(name = "DATE_TO") //VALIDITY + private LocalDate dateTo; + + @Column(name = "INS_NOM_FRA") + private String insNomFra; + + @Column(name = "INS_NOM_ENG") + private String insNomEng; + + @Column(name = "INS_NOM_DEU") + private String insNomDeu; + + @Column(name = "DROIT_FRA") + private String droitFra; + + @Column(name = "DROIT_ENG") + private String droitEn; + + @Column(name = "DROIT_DEU") + private String droitDeu; + + @Column(name = "STATUT") + private String status; + + @Column(name = "YEAR_COUNT") + private Integer yearCount; + + @Column(name = "MONTH_COUNT") + private Integer monthCount; + + @Column(name = "DT_CRE") + private LocalDate creationDate; + + @Column(name = "DT_MAJ") + private LocalDate updatedAt; + + @Column(name = "ORIGIN_PERIOD") + private String originPeriod; + + @Column(name = "PAYMENT_PERIOD") + private String paymentPeriod; + + @Column(name = "ALLOWANCES_COUNT") //NUMBER + private Long allowancesCount; + + @Column(name = "RTT_ID_TYPE") + private Long indemnityIdType; + + @Column(name = "RTT_TYPE_FRA") + private String indemnityTypeFr; + + @Column(name = "RTT_TYPE_ENG") + private String indemnityTypeEn; + + @Column(name = "RTT_TYPE_DEU") + private String indemnityTypeDe; + + @Column(name = "RTT_UNIT_FRA") + private String unitFr; + + @Column(name = "RTT_UNIT_ENG") //unit + private String unitEn; + + @Column(name = "RTT_UNIT_DEU") + private String unitDe; + + @Column(name = "COMM") //comment + private String comment; + + @Column(name = "EVT_ID") + private Long evtId; + + @Column(name = "RGT_ID") + private Long rgtId; + + @Column(name = "RIGHT_PCT") + private Long rightPct; + + @Column(name = "PER_ID_ATTRIB") + private Long perIdAttribute; + + @Column(name = "PET_SEQ_NBR_FROM") + private Long evtNumber; + + + @Override + public Long getId() { + return rigId; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PersonJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PersonJpaEntity.java new file mode 100644 index 0000000..b824f60 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PersonJpaEntity.java @@ -0,0 +1,139 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Immutable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import java.time.LocalDate; + +// SHARED — CDC candidate for future step +@Entity +@Immutable +@Table(name = PersonJpaEntity.TABLE_NAME) +public class PersonJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_PEOPLE"; + + public static final long serialVersionUID = 1L; + + @Id + @Column(name = "PER_ID") + private Long id; + + @Column(name = "TITLE") + private String title; + + @Column(name = "FIRST_NAME") + private String firstName; + + @Column(name = "LAST_NAME") + private String lastName; + + @Column(name = "GENDER") + private String gender; + + @Column(name = "BIRTH_CITY") + private String birthCity; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "BIRTH_COUNTRY_CODE") + private CountryJpaEntity birthCountry; + + @Column(name = "PRIVATE_EMAIL") + private String privateEmail; + + @Column(name = "DATE_OF_BIRTH") + private LocalDate birthDate; + + + @Column(name = "FIRST_NATIONALITY_COUNTRY_CODE") + private String firstNationality; + + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public String getBirthCity() { + return birthCity; + } + + public void setBirthCity(String birthCity) { + this.birthCity = birthCity; + } + + public CountryJpaEntity getBirthCountry() { + return birthCountry; + } + + public void setBirthCountry(CountryJpaEntity birthCountry) { + this.birthCountry = birthCountry; + } + + public String getPrivateEmail() { + return privateEmail; + } + + public void setPrivateEmail(String privateEmail) { + this.privateEmail = privateEmail; + } + + public LocalDate getBirthDate() { + return birthDate; + } + + public void setBirthDate(LocalDate birthDate) { + this.birthDate = birthDate; + } + + public String getFirstNationality() { + return firstNationality; + } + + public void setFirstNationality(String firstNationality) { + this.firstNationality = firstNationality; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PlaceOriginAirportJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PlaceOriginAirportJpaEntity.java new file mode 100644 index 0000000..441d19b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/PlaceOriginAirportJpaEntity.java @@ -0,0 +1,96 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; + +import static javax.persistence.GenerationType.SEQUENCE; + +/** + * @author tapiafo + */ +@Entity +@Table(name = PlaceOriginAirportJpaEntity.TABLE_NAME) +public class PlaceOriginAirportJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "PLACES_OF_ORIGIN_AIRPORT"; + + public static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + public static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + @Column(name = "PLACES_OF_ORIGIN_AIRPORT_ID") + private Long id; + + @Column(name = "CITY_CODE") + private String cityCode; + + @Column(name = "COUNTRY_CODE") + private String countryCode; + + @Column(name = "CITY_NAME") + private String cityName; + + @Column(name = "IATA_CODE") + private String iataCode; + + @Column(name = "AIRPORT_NAME") + private String airportName; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCityCode() { + return cityCode; + } + + public void setCityCode(String cityCode) { + this.cityCode = cityCode; + } + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + + public String getCityName() { + return cityName; + } + + public void setCityName(String cityName) { + this.cityName = cityName; + } + + public String getIataCode() { + return iataCode; + } + + public void setIataCode(String iataCode) { + this.iataCode = iataCode; + } + + public String getAirportName() { + return airportName; + } + + public void setAirportName(String airportName) { + this.airportName = airportName; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/QueryVCurrentExercisePersonIndemnity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/QueryVCurrentExercisePersonIndemnity.java new file mode 100644 index 0000000..023aa86 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/QueryVCurrentExercisePersonIndemnity.java @@ -0,0 +1,11 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import java.time.LocalDate; + +public interface QueryVCurrentExercisePersonIndemnity { + + + LocalDate getStartdate(); + LocalDate getEnddate(); + Integer getMonths(); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/UserPreferenceJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/UserPreferenceJpaEntity.java new file mode 100644 index 0000000..0e69161 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/UserPreferenceJpaEntity.java @@ -0,0 +1,82 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; + +import static javax.persistence.GenerationType.SEQUENCE; + +@Entity +@Table(name = UserPreferenceJpaEntity.TABLE_NAME) +public class UserPreferenceJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "USER_PREFERENCES"; + + public static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "USER_PREFERENCE_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "PER_ID") + private Long perId; + + @Column(name = "LOCALE") + private String locale; + + @Column(name = "PAGE_PATH") + private String pagePath; + + @Column(name = "PREFERENCES") + private String preferences; + + @Override + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getLocale() { + return this.locale; + } + + public void setLocale(String locale) { + this.locale = locale; + } + + public String getPagePath() { + return this.pagePath; + } + + public void setPagePath(String pagePath) { + this.pagePath = pagePath; + } + + public String getPreferences() { + return this.preferences; + } + + public void setPreferences(String preferences) { + this.preferences = preferences; + } + + public Long getperId() { + return perId; + } + + public void setperId(Long perId) { + this.perId = perId; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VAllowanceJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VAllowanceJpaEntity.java new file mode 100644 index 0000000..d267bf8 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VAllowanceJpaEntity.java @@ -0,0 +1,119 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import eu.europa.eeas.erights.common.tools.p2p.OrderStatusEnum; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Immutable; +import org.hibernate.annotations.Type; + +import javax.persistence.*; +import java.math.BigDecimal; +import java.time.LocalDate; + +@Entity +@Immutable +@Getter +@Setter +@Table(name = VAllowanceJpaEntity.TABLE_NAME) +public class VAllowanceJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_ALLOWANCES"; + + private static final long serialVersionUID = 1L; + + @Column(name = "REQUEST_ID") + @Id + private Long id; + + @Column(name = "DECLARATION_ID") + private Long declarationId; + + @Column(name = "MOVEMENT_FILE_ID") + private Long movementFileId; + + @Column(name = "ENTITLMNT_TYPE_ID") + private Long entitlementTypeId; + + @Column(name = "REQUEST_STRING_ID") + private String requestStringId; + + @Column(name = "CREATED_AT") + private LocalDate createdAt; + + @Column(name = "STATE") + private String status; + + @Column(name = "TOTAL_AMOUNT") + private BigDecimal totalAmount; + + @Column(name = "TOTAL_AMOUNT_CURRENCY") + private String totalAmountCurrency; + + @Column(name = "CALC_TOTAL_AMOUNT") + private BigDecimal calcTotalAmount; + + @Column(name = "CALC_TOTAL_AMOUNT_CURRENCY") + private String calcTotalAmountCurrency; + + @Column(name = "ENTITLEMENT") + private String entitlement; + + @Column(name = "LAST_NAME") + private String lastName; + + @Column(name = "FIRST_NAME") + private String firstName; + + @Column(name = "START_DATE") + private LocalDate startDate; + + @Column(name = "CITY_TO") + private String cityTo; + + @Column(name = "COUNTRY_TO") + private String countryTo; + + @Column(name = "FILE_ID") + private String fileId; + + @Column(name = "REQUEST_TYPE") + private String requestType; + + @Column(name = "CITY_FROM") + private String cityFrom; + + @Column(name = "COUNTRY_FROM") + private String countryFrom; + + @Column(name = "PRIORITY") + @Type(type = "yes_no") + private Boolean priority; + + @Column(name = "PAYMENT_REQUEST") + private String paymentRequestNumber; + + @Column(name = "PAYMENT_ORDER") + private String paymentOrder; + + @Column(name = "BUDGET_LINE") + private String budgetLine; + + @Column(name = "DELEGATION_ORG_ID_FROM") + private Long delegationOrgIdFrom; + + @Column(name = "ABAC_STATE") + private String abacStatus; + + @Column(name = "ABAC_WORKFLOW_STATE") + private String abacWorkflowStatus; + + @Column(name = "P2P_HUB_ORDER_ID") + private Long p2pHubOrderId; + + @Column(name = "P2P_HUB_ORDER_STATUS") + @Enumerated(EnumType.STRING) + private OrderStatusEnum p2pHubOrderStatus; + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VAssignmentHistEeasJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VAssignmentHistEeasJpaEntity.java new file mode 100644 index 0000000..7afacee --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VAssignmentHistEeasJpaEntity.java @@ -0,0 +1,122 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Immutable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.time.LocalDate; + +@Entity +@Immutable +@Table(name = VAssignmentHistEeasJpaEntity.TABLE_NAME) +public class VAssignmentHistEeasJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_ASSIGNMENTS_HIST_EEAS"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "SOJ_ID") + private Long id; + + @Column(name = "PER_ID") + private Long perId; + + @Column(name = "JCX_ID") + private Long jcxId; + + @Column(name = "JOB_ID") + private Long jobId; + + @Column(name = "JOB_TYPE") + private String jobType; + + @Column(name = "START_DATE") + private LocalDate startDate; + + @Column(name = "END_DATE") + private LocalDate endDate; + + @Column(name = "INS_CD") + private String insCd; + + @Column(name = "DELEGATION_ORG_ID") + private Long delegationOrgId; + + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getPerId() { + return perId; + } + + public void setPerId(Long perId) { + this.perId = perId; + } + + public Long getJcxId() { + return jcxId; + } + + public void setJcxId(Long jcxId) { + this.jcxId = jcxId; + } + + public Long getJobId() { + return jobId; + } + + public void setJobId(Long jobId) { + this.jobId = jobId; + } + + public String getJobType() { + return jobType; + } + + public void setJobType(String jobType) { + this.jobType = jobType; + } + + public LocalDate getStartDate() { + return startDate; + } + + public void setStartDate(LocalDate startDate) { + this.startDate = startDate; + } + + public LocalDate getEndDate() { + return endDate; + } + + public void setEndDate(LocalDate endDate) { + this.endDate = endDate; + } + + public String getInsCd() { + return insCd; + } + + public void setInsCd(String insCd) { + this.insCd = insCd; + } + + public Long getDelegationOrgId() { + return delegationOrgId; + } + + public void setDelegationOrgId(Long delegationOrgId) { + this.delegationOrgId = delegationOrgId; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VAssignmentHistJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VAssignmentHistJpaEntity.java new file mode 100644 index 0000000..3f6df54 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VAssignmentHistJpaEntity.java @@ -0,0 +1,68 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import java.time.LocalDate; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Immutable; + +@Entity +@Immutable +@Table(name = VAssignmentHistJpaEntity.TABLE_NAME) +@Getter +@Setter +public class VAssignmentHistJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_ASSIGNMENTS_HIST"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "SOJ_ID") + private Long id; + + @Column(name = "PER_ID") + private Long perId; + + @Column(name = "JCX_ID") + private Long jcxId; + + @Column(name = "JOB_ID") + private Long jobId; + + @Column(name = "JOB_TYPE") + private String jobType; + + @Column(name = "START_DATE") + private LocalDate startDate; + + @Column(name = "END_DATE") + private LocalDate endDate; + + @Column(name = "INS_CD") + private String insCd; + + @Column(name = "DELEGATION_ORG_ID") + private Long delegationOrgId; + + @Column(name = "TOJ_CD") + private String tojCd; + + @Column(name = "TYPE_OF_POST") + private String postType; + + @Column(name = "LST_NAME") + private String statutoryLink; + + @Column(name = "HOUSING_POLICY") + private String housingPolicy; + + @Column(name = "LST_CD") + private String statutoryCode; + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VCurrentExerciseNewTravelAllowanceJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VCurrentExerciseNewTravelAllowanceJpaEntity.java new file mode 100644 index 0000000..ed06fff --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VCurrentExerciseNewTravelAllowanceJpaEntity.java @@ -0,0 +1,483 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import lombok.Getter; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.time.LocalDate; + +import static eu.europa.eeas.erights.common.data.jpa.entity.VCurrentExerciseNewTravelAllowanceJpaEntity.TABLE_NAME; + +@Entity +@Table(name = TABLE_NAME) +public class VCurrentExerciseNewTravelAllowanceJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_CURRENT_EXERCISE_NEW_TRAVEL_ALLOWANCES"; + private static final long serialVersionUID = 1L; + + + @Column(name = "RECORD_KEY") + @Id + private String id; + + @Column(name = "SOJ_ID") + private Long sojId; + + @Column(name = "PER_ID") + private Long perId; + + + @Column(name = "JOB_ID") + private Long jobId; + + @Column(name = "JOB_TYPE") + private String jobType; + + + @Column(name = "NO_SYSPER") + private Long noSysper; + + @Column(name = "TITLE") + private String title; + + @Column(name = "SURNAME") + private String surname; + + @Column(name = "GENRE") + private String genre; + + @Column(name = "USERID") + private String userId; + + @Column(name = "MONIKER") + private String moniker; + + @Column(name = "DOMAIN") + private String domain; + + @Column(name = "DISPLAY_NAME") + private String displayName; + + @Column(name = "JCX_ID") + private Long jcxId; + + @Column(name = "ASSIGN_START_DATE") + private LocalDate assStartDat; + + @Column(name = "ASSIGN_END_DATE") + private LocalDate assignEndDate; + + @Column(name = "LST_CD") + private String lstCd; + + @Column(name = "LST_CODE") + private String lstCode; + + @Column(name = "LST_BEG_DATE") + private LocalDate lstBegDate; + + @Column(name = "LST_ASS_DATE") + private LocalDate lstAssDate; + + @Column(name = "LST_END_DATE") + private LocalDate lstEndDate; + + @Column(name = "CGR_CD") + private String cgrCd; + + @Column(name = "ORG_ID") + private Long orgId; + + @Column(name = "MAIN_ORG_ID") + private Long mainOrgId; + + @Column(name = "ORG_NAME") + private String orgName; + + @Column(name = "ORG_CD") + private String orgCd; + + @Column(name = "ORG_DESC") + private String orgDesc; + + @Column(name = "TOR_ID") + private Long torId; + + @Column(name = "TYPEOFENTITY_NAME") + private String typeOfEntityName; + + + @Column(name = "DELEGATION_NAME") + private String delegationName; + + + + + + @Column(name = "RESPONSIBLE") + private String responsible; + + @Column(name = "HEAD_OF_ENTITY") + private String headOfEntity; + + @Column(name = "DELEGATION_ORG_ID") + private Long delegationOrgId; + + @Column(name = "JOB_CITY_CODE") + private String jobCityCode; + + @Column(name = "JOB_CITY_NAME") + private String jobCityName; + + @Column(name = "JOB_COUNTRY_CODE") + private String jobCountryCode; + + @Column(name = "JOB_COUNTRY_NAME") + private String jobCountryName; + + @Column(name = "IATA_CODE") + private String iataCode; + + @Column(name = "EXPATRATION_ALLOWANCE_DATE_FROM") + private LocalDate expatriationAllowanceStartDate; + + @Column(name = "EXPATRATION_ALLOWANCE_DATE_TO") + private LocalDate expatriationAllowanceEndDate; + + @Column(name = "ORIGIN_COUNTRY_CODE") + private String originCountryCode; + + + public String getId() { + return id; + } + + public void setId(String sojId) { + this.id = sojId; + } + + public Long getSojId() { + return sojId; + } + + public void setSojId(Long sojId) { + this.sojId = sojId; + } + + public Long getPerId() { + return perId; + } + + public void setPerId(Long id) { + this.perId = id; + } + + + public Long getJobId() { + return jobId; + } + + public void setJobId(Long jobId) { + this.jobId = jobId; + } + + public String getJobType() { + return jobType; + } + + public void setJobType(String jobType) { + this.jobType = jobType; + } + + public Long getNoSysper() { + return noSysper; + } + + public void setNoSysper(Long noSysper) { + this.noSysper = noSysper; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getSurname() { + return surname; + } + + public void setSurname(String surname) { + this.surname = surname; + } + + public String getGenre() { + return genre; + } + + public void setGenre(String genre) { + this.genre = genre; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getMoniker() { + return moniker; + } + + public void setMoniker(String moniker) { + this.moniker = moniker; + } + + public String getDomain() { + return domain; + } + + public void setDomain(String domain) { + this.domain = domain; + } + + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public Long getJcxId() { + return jcxId; + } + + public void setJcxId(Long jcxId) { + this.jcxId = jcxId; + } + + public LocalDate getAssStartDat() { + return assStartDat; + } + + public void setAssStartDat(LocalDate assStartDat) { + this.assStartDat = assStartDat; + } + + public LocalDate getAssignEndDate() { + return assignEndDate; + } + + public void setAssignEndDate(LocalDate assignEndDate) { + this.assignEndDate = assignEndDate; + } + + public String getLstCd() { + return lstCd; + } + + public void setLstCd(String lstCd) { + this.lstCd = lstCd; + } + + public String getLstCode() { + return lstCode; + } + + public void setLstCode(String lstCode) { + this.lstCode = lstCode; + } + + public LocalDate getLstBegDate() { + return lstBegDate; + } + + public void setLstBegDate(LocalDate lstBegDate) { + this.lstBegDate = lstBegDate; + } + + public LocalDate getLstAssDate() { + return lstAssDate; + } + + public void setLstAssDate(LocalDate lstAssDate) { + this.lstAssDate = lstAssDate; + } + + public LocalDate getLstEndDate() { + return lstEndDate; + } + + public void setLstEndDate(LocalDate lstEndDate) { + this.lstEndDate = lstEndDate; + } + + public String getCgrCd() { + return cgrCd; + } + + public void setCgrCd(String cgrCd) { + this.cgrCd = cgrCd; + } + + public Long getOrgId() { + return orgId; + } + + public void setOrgId(Long orgId) { + this.orgId = orgId; + } + + public Long getMainOrgId() { + return mainOrgId; + } + + public void setMainOrgId(Long mainOrgId) { + this.mainOrgId = mainOrgId; + } + + public String getOrgName() { + return orgName; + } + + public void setOrgName(String orgName) { + this.orgName = orgName; + } + + public String getOrgCd() { + return orgCd; + } + + public void setOrgCd(String orgCd) { + this.orgCd = orgCd; + } + + public String getOrgDesc() { + return orgDesc; + } + + public void setOrgDesc(String orgDesc) { + this.orgDesc = orgDesc; + } + + public Long getTorId() { + return torId; + } + + public void setTorId(Long torId) { + this.torId = torId; + } + + public String getTypeOfEntityName() { + return typeOfEntityName; + } + + public void setTypeOfEntityName(String typeOfEntityName) { + this.typeOfEntityName = typeOfEntityName; + } + + + public String getDelegationName() { + return delegationName; + } + + public void setDelegationName(String delegationName) { + this.delegationName = delegationName; + } + + public String getResponsible() { + return responsible; + } + + public void setResponsible(String responsible) { + this.responsible = responsible; + } + + public String getHeadOfEntity() { + return headOfEntity; + } + + public void setHeadOfEntity(String headOfEntity) { + this.headOfEntity = headOfEntity; + } + + public Long getDelegationOrgId() { + return delegationOrgId; + } + + public void setDelegationOrgId(Long delegationOrgId) { + this.delegationOrgId = delegationOrgId; + } + + public String getJobCityCode() { + return jobCityCode; + } + + public void setJobCityCode(String jobCityCode) { + this.jobCityCode = jobCityCode; + } + + public String getJobCityName() { + return jobCityName; + } + + public void setJobCityName(String jobCityName) { + this.jobCityName = jobCityName; + } + + public String getJobCountryCode() { + return jobCountryCode; + } + + public void setJobCountryCode(String jobCountryCode) { + this.jobCountryCode = jobCountryCode; + } + + public String getJobCountryName() { + return jobCountryName; + } + + public void setJobCountryName(String jobCountryName) { + this.jobCountryName = jobCountryName; + } + + public String getIataCode() { + return iataCode; + } + + public void setIataCode(String iataCode) { + this.iataCode = iataCode; + } + + public LocalDate getExpatriationAllowanceStartDate() { + return expatriationAllowanceStartDate; + } + + public void setExpatriationAllowanceStartDate(LocalDate expatriationAllowanceStartDate) { + this.expatriationAllowanceStartDate = expatriationAllowanceStartDate; + } + + public LocalDate getExpatriationAllowanceEndDate() { + return expatriationAllowanceEndDate; + } + + public void setExpatriationAllowanceEndDate(LocalDate expatriationAllowanceEndDate) { + this.expatriationAllowanceEndDate = expatriationAllowanceEndDate; + } + + public String getOriginCountryCode() { + return originCountryCode; + } + + public void setOriginCountryCode(String originCountryCode) { + this.originCountryCode = originCountryCode; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VEmptyRateEntitlementTypeJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VEmptyRateEntitlementTypeJpaEntity.java new file mode 100644 index 0000000..3f1b8c9 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VEmptyRateEntitlementTypeJpaEntity.java @@ -0,0 +1,226 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeStatus; +import org.hibernate.annotations.Immutable; +import org.hibernate.annotations.Type; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Immutable +@Table(name = VEmptyRateEntitlementTypeJpaEntity.TABLE_NAME) +public class VEmptyRateEntitlementTypeJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_EMPTY_FLAT_RATE_ENTITLEMENTS"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "ENTITLMNT_TYPE_ID") + private Long id; + + @Column(name = "MOVEMENT_FILE_ID") + private Long movementFile; + + @Column(name = "FILE_ID") + private String fileId; + + @Column(name = "MOVEMENTTYPE") + private String movementType; + + @Column(name = "DISABLE_REASON") + private String disableReason; + + @Column(name = "ENT_TYPE_DEFAULT") + @Type(type = "yes_no") + private Boolean defaultEntType; + + @Column(name = "ENABLE") + @Type(type = "yes_no") + private Boolean enable; + + @Column(name = "STATUS") + @Enumerated(EnumType.STRING) + private EntitlementTypeStatus status; + + @Column(name = "ENTITLMNT_MAXS_CAT_CODE_LIST") + private String entitlementMaxCatList; + + @Column(name = "ENTITLMNT_TYPES_CAT_CODE") + private String entitlementTypeCat; + + @Column(name = "MOVEMENTFROM") + private String movementFrom; + + @Column(name = "MOVEMENTTO") + private String movementTo; + + @Column(name = "MOVEMENTYEAR") + private Integer movementYear; + + @Column(name = "ALLOCATEDTOCURRENT") + private String allocatedToCurrent; + + @Column(name = "ALLOCATEDTOFUTURE") + private String allocatedToFuture; + + @Column(name = "PER_ID") + private Integer perId; + + @Column(name = "FIRST_NAME") + private String firstName; + + @Column(name = "LAST_NAME") + private String lastName; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getMovementFile() { + return movementFile; + } + + public void setMovementFile(Long movementFile) { + this.movementFile = movementFile; + } + + public String getMovementType() { + return movementType; + } + + public void setMovementType(String movementType) { + this.movementType = movementType; + } + + public String getDisableReason() { + return disableReason; + } + + public void setDisableReason(String disableReason) { + this.disableReason = disableReason; + } + + public Boolean getDefaultEntType() { + return defaultEntType; + } + + public void setDefaultEntType(Boolean defaultEntType) { + this.defaultEntType = defaultEntType; + } + + public Boolean getEnable() { + return enable; + } + + public void setEnable(Boolean enable) { + this.enable = enable; + } + + public EntitlementTypeStatus getStatus() { + return status; + } + + public void setStatus(EntitlementTypeStatus status) { + this.status = status; + } + + public String getEntitlementMaxCatList() { + return entitlementMaxCatList; + } + + public void setEntitlementMaxCatList(String entitlementMaxCat) { + this.entitlementMaxCatList = entitlementMaxCat; + } + + public String getEntitlementTypeCat() { + return entitlementTypeCat; + } + + public void setEntitlementTypeCat(String entitlementTypeCat) { + this.entitlementTypeCat = entitlementTypeCat; + } + + public String getMovementFrom() { + return movementFrom; + } + + public void setMovementFrom(String movementFrom) { + this.movementFrom = movementFrom; + } + + public String getMovementTo() { + return movementTo; + } + + public void setMovementTo(String movementTo) { + this.movementTo = movementTo; + } + + public Integer getMovementYear() { + return movementYear; + } + + public void setMovementYear(Integer movementYear) { + this.movementYear = movementYear; + } + + public String getAllocatedToCurrent() { + return allocatedToCurrent; + } + + public void setAllocatedToCurrent(String allocatedToCurrent) { + this.allocatedToCurrent = allocatedToCurrent; + } + + public String getAllocatedToFuture() { + return allocatedToFuture; + } + + public void setAllocatedToFuture(String allocatedToFuture) { + this.allocatedToFuture = allocatedToFuture; + } + + public Integer getPerId() { + return perId; + } + + public void setPerId(Integer perId) { + this.perId = perId; + } + + public String getFileId() { + return fileId; + } + + public void setFileId(String fileId) { + this.fileId = fileId; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VJobJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VJobJpaEntity.java new file mode 100644 index 0000000..0de9e93 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VJobJpaEntity.java @@ -0,0 +1,356 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Immutable; +import org.hibernate.annotations.Type; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.time.LocalDate; + +@Entity +@Immutable +@Table(name = VJobJpaEntity.TABLE_NAME) +public class VJobJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_JOBS"; + + public static final long serialVersionUID = 1L; + + @Id + @Column(name = "JOB_ID") + private Long id; + + @Column(name = "BUDGET_LINE") + private String budgetLine; + + @Column(name = "JOB_TYPE") + private String jobType; + + @Column(name = "PERSONNEL_TYPE_ID") + private Long personnelTypeId; + + @Column(name = "PERSONNEL_TYPE_DESC") + private String personnelTypeDesc; + + @Column(name = "FUNCTION_CODE") + private String jobFunctionCode; + + @Column(name = "FUNCTION_DESC") + private String jobFunctionDesc; + + @Column(name = "INSTITUTION_CODE") + private String institutionCode; + + @Column(name = "INSTITUTION_NAME") + private String institutionDesc; + + @Column(name = "ORGANIZATION_NAME") + private String organizationName; + + @Column(name = "ORGANIZATION_CITY") + private String cityName; + + @Column(name = "ORGANIZATION_COUNTRY") + private String countryName; + + @Column(name = "ORG_ID") + private String orgId; + + @Column(name = "ASSIGN_START_DATE_TO") + private LocalDate assignedStartDate; + + @Column(name = "ASSIGN_END_DATE_TO") + private LocalDate assignedEndDate; + + @Column(name = "SEVERITY_LEVEL") + private Long severityLevel; + + @Column(name = "EVACUATION_LEVEL_CODE_ID") + private Long evacuationLevelCodeId; + + @Column(name = "ALERT_STATUS_ID") + private Long alertStatusId; + + @Column(name = "EVACUATION_LEVEL_CODE") + private String evacuationCode; + + @Column(name = "ORGANIZATION_COUNTRY_CODE") + private String orgCountryCode; + + @Column(name = "JOB_COUNTRY_CODE") + private String jobCountryCode; + + @Column(name = "JOB_COUNTRY_NAME") + private String jobCountryName; + + @Column(name = "ORGANIZATION_CITY_CODE") + private String orgCityCode; + + @Column(name = "FAMILY_POSTING_TYPE_ID") + private Long familyPostingTypeId; + + @Column(name = "FAMILY_POSTING_TYPE") + private String familyPostingType; + + @Column(name = "FAMILY_POSTING_TYPE_CAT") + private String familyPostingTypeCategory; + + @Column(name = "HOD") + @Type(type = "yes_no") + private Boolean hod; + + @Column(name = "JOB_CITY_CODE") + private String jobCityCode; + + @Column(name = "JOB_CITY_NAME") + private String jobCityName; + + @Column(name = "DELEGATION_ORG_ID") + private Long delegationOrgId; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getBudgetLine() { + return budgetLine; + } + + public void setBudgetLine(String budgetaryLine) { + this.budgetLine = budgetaryLine; + } + + public String getJobType() { + return jobType; + } + + public void setJobType(String type) { + this.jobType = type; + } + + + + public String getCityName() { + return cityName; + } + + public void setCityName(String cityName) { + this.cityName = cityName; + } + + public String getCountryName() { + return countryName; + } + + public void setCountryName(String countryName) { + this.countryName = countryName; + } + + public String getOrganizationName() { + return organizationName; + } + + public void setOrganizationName(String orgName) { + this.organizationName = orgName; + } + + public String getOrgId() { + return orgId; + } + + public void setOrgId(String orgId) { + this.orgId = orgId; + } + + public LocalDate getAssignedStartDate() { + return assignedStartDate; + } + + public void setAssignedStartDate(LocalDate assignedStartDate) { + this.assignedStartDate = assignedStartDate; + } + + public LocalDate getAssignedEndDate() { + return assignedEndDate; + } + + public void setAssignedEndDate(LocalDate assignedEndDate) { + this.assignedEndDate = assignedEndDate; + } + + public Long getSeverityLevel() { + return severityLevel; + } + + public void setSeverityLevel(Long severityLevel) { + this.severityLevel = severityLevel; + } + + public Long getEvacuationLevelCodeId() { + return evacuationLevelCodeId; + } + + public void setEvacuationLevelCodeId(Long evacuationLevelCodeId) { + this.evacuationLevelCodeId = evacuationLevelCodeId; + } + + public Long getAlertStatusId() { + return alertStatusId; + } + + public void setAlertStatusId(Long alertStatusId) { + this.alertStatusId = alertStatusId; + } + + public String getEvacuationCode() { + return evacuationCode; + } + + public void setEvacuationCode(String evacuationCode) { + this.evacuationCode = evacuationCode; + } + + public String getOrgCountryCode() { + return orgCountryCode; + } + + public void setOrgCountryCode(String orgCountryCode) { + this.orgCountryCode = orgCountryCode; + } + + public String getOrgCityCode() { + return orgCityCode; + } + + public void setOrgCityCode(String orgCityCode) { + this.orgCityCode = orgCityCode; + } + + public Long getFamilyPostingTypeId() { + return familyPostingTypeId; + } + + public void setFamilyPostingTypeId(Long familyPostingTypeId) { + this.familyPostingTypeId = familyPostingTypeId; + } + + public String getFamilyPostingType() { + return familyPostingType; + } + + public void setFamilyPostingType(String familyPostingType) { + this.familyPostingType = familyPostingType; + } + + public String getJobCityCode() { + return jobCityCode; + } + + public void setJobCityCode(String jobCityCode) { + this.jobCityCode = jobCityCode; + } + + public String getJobCityName() { + return jobCityName; + } + + public void setJobCityName(String jobCityName) { + this.jobCityName = jobCityName; + } + + public Boolean getHod() { + return hod; + } + + public void setHod(Boolean hod) { + this.hod = hod; + } + + public String getFamilyPostingTypeCategory() { + return familyPostingTypeCategory; + } + + public void setFamilyPostingTypeCategory(String familyPostingTypeCategory) { + this.familyPostingTypeCategory = familyPostingTypeCategory; + } + + public Long getDelegationOrgId() { + return delegationOrgId; + } + + public void setDelegationOrgId(Long delegationOrgId) { + this.delegationOrgId = delegationOrgId; + } + + public String getJobCountryCode() { + return jobCountryCode; + } + + public void setJobCountryCode(String jobCountryCode) { + this.jobCountryCode = jobCountryCode; + } + + public String getJobCountryName() { + return jobCountryName; + } + + public void setJobCountryName(String jobCountryName) { + this.jobCountryName = jobCountryName; + } + + public Long getPersonnelTypeId() { + return personnelTypeId; + } + + public void setPersonnelTypeId(Long personnelTypeId) { + this.personnelTypeId = personnelTypeId; + } + + public String getPersonnelTypeDesc() { + return personnelTypeDesc; + } + + public void setPersonnelTypeDesc(String personnelTypeDesc) { + this.personnelTypeDesc = personnelTypeDesc; + } + + public String getJobFunctionCode() { + return jobFunctionCode; + } + + public void setJobFunctionCode(String jobFunctionCode) { + this.jobFunctionCode = jobFunctionCode; + } + + public String getJobFunctionDesc() { + return jobFunctionDesc; + } + + public void setJobFunctionDesc(String jobFunctionDesc) { + this.jobFunctionDesc = jobFunctionDesc; + } + + public String getInstitutionCode() { + return institutionCode; + } + + public void setInstitutionCode(String institutionCode) { + this.institutionCode = institutionCode; + } + + public String getInstitutionDesc() { + return institutionDesc; + } + + public void setInstitutionDesc(String institutionDesc) { + this.institutionDesc = institutionDesc; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VPersonIndemnityJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VPersonIndemnityJpaEntity.java new file mode 100644 index 0000000..d3f0210 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VPersonIndemnityJpaEntity.java @@ -0,0 +1,54 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import lombok.Data; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.time.LocalDate; +@Data +@Entity +@Table(name = VPersonIndemnityJpaEntity.TABLE_NAME) +public class VPersonIndemnityJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_PERSON_RELATIVES_RIGHTS"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "UNIQ_ID") + private Long id; + + @Column(name = "PER_ID_ATTRIB") + private Long perIdAttribute; + + @Column(name = "NOM_ATTRIB") + private String surname; + + @Column(name = "PRENOM_ATTRIB") + private String firstName; + + @Column(name = "PER_ID_BENEF") + private Long benefPerId; + + @Column(name = "NOM_BENEF") + private String surnameBeneficiary; + + @Column(name = "PRENOM_BENEF") + private String firstNameBeneficiary; + + @Column(name = "RGT_ID") + private Long rgtId; + + @Column(name = "DROIT_ENG") + private String droitEng; + + @Column(name = "DATE_FROM") + private LocalDate dateFrom; + + @Column(name = "DATE_TO") + private LocalDate dateTo; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VPersonJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VPersonJpaEntity.java new file mode 100644 index 0000000..768d8e7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VPersonJpaEntity.java @@ -0,0 +1,309 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Immutable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.validation.constraints.Email; +import java.time.LocalDate; + +@Entity +@Immutable +@Table(name = VPersonJpaEntity.TABLE_NAME) +public class VPersonJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_STAFFMEMBERS"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "PER_ID") + private Long id; + + @Column(name = "LAST_NAME") + private String lastName; + + @Column(name = "FIRST_NAME") + private String firstName; + + @Column(name = "GENDER") + private String gender; + + @Column(name = "EMAIL") + @Email + private String email; + + @Column(name = "ORIGIN_CITY") + private String originCity; + + @Column(name = "ORIGIN_COUNTRY_CODE") + private String originCountryCode; + + @Column(name = "ORIGIN_COUNTRY_DESC") + private String originCountryDesc; + + @Column(name = "BIRTH_CITY") + private String birthCity; + + @Column(name = "BIRTH_COUNTRY_CODE") + private String birthCountryCode; + + @Column(name = "BIRTH_COUNTRY_DESC") + private String birthCountryDesc; + + @Column(name = "RECRUITMENT_CITY") + private String recruitmentCity; + + @Column(name = "RECRUITMENT_COUNTRY") + private String recruitmentCountry; + + @Column(name = "ORGANIZATION_NAME") + private String organizationName; + + @Column(name = "ORGANIZATION_CITY") + private String organizationCity; + + @Column(name = "ORGANIZATION_COUNTRY") + private String organizationCountry; + + @Column(name = "ORG_ID") + private Long orgId; + + @Column(name = "JOB_ID") + private Long jobId; + + @Column(name = "ASSIGN_START_DATE") + private LocalDate assignedStartDate; + + @Column(name = "ASSIGN_END_DATE") + private LocalDate assignedEndDate; + + @Column(name = "ORG_CD") + private String orgCd; + + @Column(name = "PRIVATE_EMAIL") + private String privateEmail; + + @Column(name = "PRIVATE_EMAIL_SOURCE") + private String privateEmailSource; + + @Column(name = "STATUTORY_LINK_CODE") + private String statutoryLinkCode; + + @Column(name = "STATUTORY_LINK_DESC") + private String statutoryLinkDesc; + + @Column(name = "USERID", insertable = false, updatable = false) + private String userId; + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getOriginCity() { + return originCity; + } + + public void setOriginCity(String originCity) { + this.originCity = originCity; + } + + public String getOriginCountryCode() { + return originCountryCode; + } + + public void setOriginCountryCode(String originCountryCode) { + this.originCountryCode = originCountryCode; + } + + public String getOriginCountryDesc() { + return originCountryDesc; + } + + public void setOriginCountryDesc(String originCountryDesc) { + this.originCountryDesc = originCountryDesc; + } + + public String getBirthCity() { + return birthCity; + } + + public void setBirthCity(String birthCity) { + this.birthCity = birthCity; + } + + public String getBirthCountryCode() { + return birthCountryCode; + } + + public void setBirthCountryCode(String birthCountryCode) { + this.birthCountryCode = birthCountryCode; + } + + public String getBirthCountryDesc() { + return birthCountryDesc; + } + + public void setBirthCountryDesc(String birthCountryDesc) { + this.birthCountryDesc = birthCountryDesc; + } + + public String getRecruitmentCity() { + return recruitmentCity; + } + + public void setRecruitmentCity(String recruitmentCity) { + this.recruitmentCity = recruitmentCity; + } + + public String getRecruitmentCountry() { + return recruitmentCountry; + } + + public void setRecruitmentCountry(String recruitmentCountry) { + this.recruitmentCountry = recruitmentCountry; + } + + public String getOrganizationName() { + return organizationName; + } + + public void setOrganizationName(String organizationName) { + this.organizationName = organizationName; + } + + public String getOrganizationCity() { + return organizationCity; + } + + public void setOrganizationCity(String organizationCity) { + this.organizationCity = organizationCity; + } + + public String getOrganizationCountry() { + return organizationCountry; + } + + public void setOrganizationCountry(String organizationCountry) { + this.organizationCountry = organizationCountry; + } + + public Long getOrgId() { + return orgId; + } + + public void setOrgId(Long orgId) { + this.orgId = orgId; + } + + public Long getJobId() { + return jobId; + } + + public void setJobId(Long jobId) { + this.jobId = jobId; + } + + public LocalDate getAssignedStartDate() { + return assignedStartDate; + } + + public void setAssignedStartDate(LocalDate assignedStartDate) { + this.assignedStartDate = assignedStartDate; + } + + public LocalDate getAssignedEndDate() { + return assignedEndDate; + } + + public void setAssignedEndDate(LocalDate assignedEndDate) { + this.assignedEndDate = assignedEndDate; + } + + public String getOrgCd() { + return orgCd; + } + + public void setOrgCd(String orgCd) { + this.orgCd = orgCd; + } + + public String getPrivateEmail() { + return privateEmail; + } + + public void setPrivateEmail(String privateEmail) { + this.privateEmail = privateEmail; + } + + public String getPrivateEmailSource() { + return privateEmailSource; + } + + public void setPrivateEmailSource(String privateEmailSource) { + this.privateEmailSource = privateEmailSource; + } + + public String getStatutoryLinkCode() { + return statutoryLinkCode; + } + + public void setStatutoryLinkCode(String statutoryLinkCode) { + this.statutoryLinkCode = statutoryLinkCode; + } + + public String getStatutoryLinkDesc() { + return statutoryLinkDesc; + } + + public void setStatutoryLinkDesc(String statutoryLinkDesc) { + this.statutoryLinkDesc = statutoryLinkDesc; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VPlaceOfOriginJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VPlaceOfOriginJpaEntity.java new file mode 100644 index 0000000..1e4c6f3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VPlaceOfOriginJpaEntity.java @@ -0,0 +1,67 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Immutable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.validation.constraints.Email; +import java.time.LocalDate; + +@Entity +@Immutable +@Table(name = VPlaceOfOriginJpaEntity.TABLE_NAME) +public class VPlaceOfOriginJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_PLACES_OF_ORIGIN"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "PER_ID") + private Long id; + + @Column(name = "PLACE_OF_ORIGIN") + private String placeOfOrigin; + + @Column(name = "COUNTRY_CODE") + private String countryCode; + + @Column(name = "COUNTRY_OF_ORIGIN") + private String countryOfOrigin; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getPlaceOfOrigin() { + return placeOfOrigin; + } + + public void setPlaceOfOrigin(String placeOfOrigin) { + this.placeOfOrigin = placeOfOrigin; + } + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + + public String getCountryOfOrigin() { + return countryOfOrigin; + } + + public void setCountryOfOrigin(String countryOfOrigin) { + this.countryOfOrigin = countryOfOrigin; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VReportMovementFileJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VReportMovementFileJpaEntity.java new file mode 100644 index 0000000..c885811 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VReportMovementFileJpaEntity.java @@ -0,0 +1,368 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.hibernate.annotations.Immutable; +import org.hibernate.annotations.Type; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.Id; +import javax.persistence.Table; +import java.time.LocalDate; +import java.util.Objects; + +@Entity +@Immutable +@Table(name = VReportMovementFileJpaEntity.TABLE_NAME) +public class VReportMovementFileJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_REPORT_MOVEMENT_FILES"; + + private static final long serialVersionUID = 1L; + + @Column(name = "MOVEMENT_FILE_ID") + @Id + private Long id; + + @Column(name = "FILEID") + private String fileId; + + @Column(name = "LAST_NAME") + private String lastName; + + @Column(name = "FIRST_NAME") + private String firstName; + + @Enumerated(EnumType.STRING) + @Column(name = "STATUS") + private MovementFileState status; + + @Column(name = "STARTDATEFUTURE") + private LocalDate startDateFuture; + + @Column(name = "ENDDATEFUTURE") + private LocalDate endDateFuture; + + @Column(name = "MOVEMENTFROM") + private String movementFrom; + + @Column(name = "MOVEMENTTO") + private String movementTo; + + @Column(name = "BUDGDET_LINE_FUTURE") + private String budgetLineFuture; + + @Column(name = "MOVEMENTTYPE") + private String movementType; + + @Column(name = "MOVEMENTYEAR") + private Integer movementYear; + + @Column(name = "MOVEMENTCONTEXT") + private String movementContext; + + @Column(name = "PERID") + private Long perId; + + @Column(name = "FUTUREASSIGNMENT") + private String futureAssignment; + + @Column(name = "PRIORITY") + @Type(type = "yes_no") + private Boolean priority; + + @Column(name = "FOLLOWUP_FLAGS") + private String followupFlags; + + @Column(name = "ALLOCATEDTOCURRENT") + private String allocatedToCurrent; + + @Column(name = "ALLOCATEDTOFUTURE") + private String allocatedToFuture; + + @Column(name = "REASON") + @Type(type = "yes_no") + private Boolean reason; + + @Column(name = "DELEGATION_ORG_ID_FROM") + private Long delegationOrgIdFrom; + + @Column(name = "PERSONNEL_TYPE_ID") + private Long personnelTypeId; + + @Column(name = "PERSONNEL_TYPE_DESC") + private String personnelTypeDesc; + + @Column(name = "JOB_FUNCTION_CODE") + private String jobFunctionCode; + + @Column(name = "JOB_FUNCTION_DESC") + private String jobFunctionDesc; + + @Column(name = "INSTITUTION_CODE") + private String institutionCode; + + @Column(name = "INSTITUTION_DESC") + private String institutionDesc; + + @Column(name = "JOBTO_FAMILY_POSTING") + @Type(type = "yes_no") + private Boolean jobToFamPosting; + + + + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getFileId() { + return fileId; + } + + public void setFileId(String fileId) { + this.fileId = fileId; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public LocalDate getStartDateFuture() { + return startDateFuture; + } + + public void setStartDateFuture(LocalDate startDateFuture) { + this.startDateFuture = startDateFuture; + } + + public LocalDate getEndDateFuture() { + return endDateFuture; + } + + public void setEndDateFuture(LocalDate endDateFuture) { + this.endDateFuture = endDateFuture; + } + + public String getMovementFrom() { + return movementFrom; + } + + public void setMovementFrom(String movementFrom) { + this.movementFrom = movementFrom; + } + + public String getMovementTo() { + return movementTo; + } + + public void setMovementTo(String movementTo) { + this.movementTo = movementTo; + } + + public String getBudgetLineFuture() { + return budgetLineFuture; + } + + public void setBudgetLineFuture(String budgetLineFuture) { + this.budgetLineFuture = budgetLineFuture; + } + + public String getMovementType() { + return movementType; + } + + public void setMovementType(String movementType) { + this.movementType = movementType; + } + + public Integer getMovementYear() { + return movementYear; + } + + public void setMovementYear(Integer movementYear) { + this.movementYear = movementYear; + } + + public String getMovementContext() { + return movementContext; + } + + public void setMovementContext(String movementContext) { + this.movementContext = movementContext; + } + + public Long getPerId() { + return perId; + } + + public void setPerId(Long perId) { + this.perId = perId; + } + + public String getFutureAssignment() { + return futureAssignment; + } + + public void setFutureAssignment(String futureAssignment) { + this.futureAssignment = futureAssignment; + } + + public Boolean getPriority() { + return priority; + } + + public void setPriority(Boolean priority) { + this.priority = priority; + } + + public String getAllocatedToCurrent() { + return allocatedToCurrent; + } + + public void setAllocatedToCurrent(String allocatedToCurrent) { + this.allocatedToCurrent = allocatedToCurrent; + } + + public String getAllocatedToFuture() { + return allocatedToFuture; + } + + public void setAllocatedToFuture(String allocatedToFuture) { + this.allocatedToFuture = allocatedToFuture; + } + + public Boolean getReason() { + return reason; + } + + public void setReason(Boolean reason) { + this.reason = reason; + } + + public MovementFileState getStatus() { + return status; + } + + public void setStatus(MovementFileState status) { + this.status = status; + } + + public Long getDelegationOrgIdFrom() { + return delegationOrgIdFrom; + } + + public void setDelegationOrgIdFrom(Long delegationOrgIdFrom) { + this.delegationOrgIdFrom = delegationOrgIdFrom; + } + + public String getFollowupFlags() { + return followupFlags; + } + + public void setFollowupFlags(String followupFlags) { + this.followupFlags = followupFlags; + } + + public Long getPersonnelTypeId() { + return personnelTypeId; + } + + public void setPersonnelTypeId(Long personnelTypeId) { + this.personnelTypeId = personnelTypeId; + } + + public String getPersonnelTypeDesc() { + return personnelTypeDesc; + } + + public void setPersonnelTypeDesc(String personnelTypeDesc) { + this.personnelTypeDesc = personnelTypeDesc; + } + + public String getJobFunctionCode() { + return jobFunctionCode; + } + + public void setJobFunctionCode(String jobFunctionCode) { + this.jobFunctionCode = jobFunctionCode; + } + + public String getJobFunctionDesc() { + return jobFunctionDesc; + } + + public void setJobFunctionDesc(String jobFunctionDesc) { + this.jobFunctionDesc = jobFunctionDesc; + } + + public String getInstitutionCode() { + return institutionCode; + } + + public void setInstitutionCode(String institutionCode) { + this.institutionCode = institutionCode; + } + + public String getInstitutionDesc() { + return institutionDesc; + } + + public void setInstitutionDesc(String institutionDesc) { + this.institutionDesc = institutionDesc; + } + + public Boolean getJobToFamPosting() { + return jobToFamPosting; + } + + public void setJobToFamPosting(Boolean jobToFamPosting) { + this.jobToFamPosting = jobToFamPosting; + } + + @Override + public boolean equals(Object o) {// TODO Refactor Entities equals() and hashCode() methods RIGD-3611 + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + VReportMovementFileJpaEntity that = (VReportMovementFileJpaEntity) o; + return Objects.equals(id, that.id) && Objects.equals(fileId, that.fileId) && Objects.equals(lastName, that.lastName) && Objects + .equals(firstName, that.firstName) && status == that.status && Objects.equals(startDateFuture, that.startDateFuture) && Objects + .equals(endDateFuture, that.endDateFuture) && Objects.equals(movementFrom, that.movementFrom) && Objects + .equals(movementTo, that.movementTo) && Objects.equals(budgetLineFuture, that.budgetLineFuture) && Objects + .equals(movementType, that.movementType) && Objects.equals(movementYear, that.movementYear) && Objects + .equals(movementContext, that.movementContext) && Objects.equals(perId, that.perId) && Objects + .equals(futureAssignment, that.futureAssignment) && Objects.equals(priority, that.priority) && Objects + .equals(allocatedToCurrent, that.allocatedToCurrent) && Objects.equals(allocatedToFuture, that.allocatedToFuture) && Objects + .equals(reason, that.reason) && Objects.equals(delegationOrgIdFrom, that.delegationOrgIdFrom) + && Objects.equals(followupFlags, that.followupFlags)&& Objects.equals(jobToFamPosting, that.jobToFamPosting); + } + + @Override + public int hashCode() { + return Objects.hash(id, fileId, lastName, firstName, status, startDateFuture, endDateFuture, movementFrom, movementTo, budgetLineFuture, + movementType, movementYear, movementContext, perId, futureAssignment, priority, allocatedToCurrent, allocatedToFuture, reason, + delegationOrgIdFrom, followupFlags, jobToFamPosting); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VTravelAllowancesForManualRegularizationJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VTravelAllowancesForManualRegularizationJpaEntity.java new file mode 100644 index 0000000..3b0eebf --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/VTravelAllowancesForManualRegularizationJpaEntity.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.common.data.jpa.entity; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +import java.time.LocalDate; + +import static eu.europa.eeas.erights.common.data.jpa.entity.VCurrentExerciseNewTravelAllowanceJpaEntity.TABLE_NAME; + +@Entity +@Table(name = VTravelAllowancesForManualRegularizationJpaEntity.TABLE_NAME) +@Data +@AllArgsConstructor +@NoArgsConstructor +public class VTravelAllowancesForManualRegularizationJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_TRAVEL_ALLOWANCES_FOR_MANUAL_REGULARIZATION"; + private static final long serialVersionUID = 1L; + + @Column(name = "RECORD_KEY") + @Id + private Long id; + + @Column(name = "POSTING_ALLOWANCE_ID") + private Long postingAllowanceId; + + @Column(name = "EXPATRATION_ALLOWANCE_DATE_FROM") + private LocalDate expatriationAllowanceStartDate; + @Column(name = "EXPATRATION_ALLOWANCE_DATE_TO") + private LocalDate expatriationAllowanceEndDate; + @Column(name = "DELEGATION_ORG_ID") + private Long delegationOrgId; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/AccommodationBankAccountsSyncFailedJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/AccommodationBankAccountsSyncFailedJpaEntity.java new file mode 100644 index 0000000..6079471 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/AccommodationBankAccountsSyncFailedJpaEntity.java @@ -0,0 +1,63 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.allowances; + +import static javax.persistence.GenerationType.SEQUENCE; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonJpaEntity; +import java.time.LocalDate; +import java.time.LocalDateTime; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Type; +import org.hibernate.envers.AuditOverride; +import org.hibernate.envers.Audited; + +/** + * @author ienaccat + * @since 5.0.0 + */ +@Entity +@Table(name = AccommodationBankAccountsSyncFailedJpaEntity.TABLE_NAME) +@Getter +@Setter +public class AccommodationBankAccountsSyncFailedJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "ACCOMMODATION_BANK_ACCOUNTS_SYNC_FAILED"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "ACCOMMODATION_BANK_ACCOUNTS_SYNC_FAILED_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "PER_ID") + private Long personId; + + @Column(name = "FAILURE_NO") + private Integer failureNo; + + @Column(name = "FAILURE_DESCRIPTION") + private String failureDescription; + + @Column(name = "CREATED_DATE") + private LocalDateTime createdDate; + + @Column(name = "UPDATED_DATE") + private LocalDateTime updatedDate; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/AccommodationDeclarationAllowanceJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/AccommodationDeclarationAllowanceJpaEntity.java new file mode 100644 index 0000000..38dddbf --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/AccommodationDeclarationAllowanceJpaEntity.java @@ -0,0 +1,109 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.allowances; + +import static eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceJpaEntity.ALLOWANCE_TYPE_ACCOMMODATION_DECLARATION; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +import eu.europa.eeas.ananke.core.data.provider.jpa.TypeDefinition; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.PersonBankInfoJpaEntity; +import eu.europa.eeas.erights.common.service.model.AccommodationPaymentMethod; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationDeclarationState; +import java.time.LocalDate; +import java.util.List; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.FetchType; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Columns; +import org.hibernate.annotations.Type; +import org.hibernate.envers.Audited; +import org.javamoney.moneta.Money; + +/** + * @author ienaccat + */ +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@DiscriminatorValue(value = ALLOWANCE_TYPE_ACCOMMODATION_DECLARATION) +@Getter +@Setter +public class AccommodationDeclarationAllowanceJpaEntity extends PostingAllowanceJpaEntity { + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "PERSONS_BANK_INFO_ID") + private PersonBankInfoJpaEntity personBankInfo; + + @Enumerated(EnumType.STRING) + @Column(name = "PAYMENT_METHOD") + private AccommodationPaymentMethod paymentMethod; + + @Column(name = "PAYMENT_PERIODIC_INTERVAL") + private Integer paymentPeriodicInterval; + + @Column(name = "PAYMENT_PREFERRED_CURRENCY") + private String paymentPreferredCurrency; + + @Column(name = "RENTAL_START_DATE") + private LocalDate rentalContractStartDate; + + @Column(name = "RENTAL_END_DATE") + private LocalDate rentalContractEndDate; + + @Columns(columns = {@Column(name = "MONTHLY_RENTAL_AMOUNT_CURRENCY"), + @Column(name = "MONTHLY_RENTAL_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money monthlyRentalAmount; + + @Columns(columns = {@Column(name = "MONTHLY_RENTAL_AMOUNT_CEILING_CURRENCY"), + @Column(name = "MONTHLY_RENTAL_AMOUNT_CEILING") + }) + @Type(type = TypeDefinition.MONEY) + private Money monthlyRentalAmountCeiling; + + @Columns(columns = {@Column(name = "MONTHLY_SECURITY_AMOUNT_CURRENCY"), + @Column(name = "MONTHLY_SECURITY_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money monthlySecurityAmount; + + @Columns(columns = {@Column(name = "MONTHLY_RECURRENT_COSTS_CURRENCY"), + @Column(name = "MONTHLY_RECURRENT_COSTS") + }) + @Type(type = TypeDefinition.MONEY) + private Money monthlyRecurrentCosts; + + @Column(name = "MONTHLY_RECURRENT_COSTS_DESCRIPTION") + private String monthlyRecurrentCostsDescription; + + @Columns(columns = {@Column(name = "GUARANTEE_AMOUNT_CURRENCY"), + @Column(name = "GUARANTEE_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money guaranteeAmount; + + @Column(name = "GUARANTEE_REIMBURSEMENT_PERIOD") + private Integer guaranteeReimbursementPeriod; + + @Columns(columns = {@Column(name = "GUARANTEE_REM_TO_REIMBURSE_CURRENCY"), + @Column(name = "GUARANTEE_REM_TO_REIMBURSE") + }) + @Type(type = TypeDefinition.MONEY) + private Money remainingGuaranteeToReimburse; + + @Enumerated(EnumType.STRING) + @Column(name = "STATE") + private AccommodationDeclarationState state; + + @OneToMany(fetch = FetchType.LAZY, mappedBy = "accommodationDeclaration", cascade = CascadeType.ALL) + private List familyMembers; + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/AccommodationDeclarationPersonJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/AccommodationDeclarationPersonJpaEntity.java new file mode 100644 index 0000000..ceb9931 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/AccommodationDeclarationPersonJpaEntity.java @@ -0,0 +1,66 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.allowances; + +import static javax.persistence.GenerationType.SEQUENCE; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonJpaEntity; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Type; +import org.hibernate.envers.AuditOverride; +import org.hibernate.envers.Audited; + +/** + * @author ienaccat + * @since 5.0.0 + */ +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@Table(name = AccommodationDeclarationPersonJpaEntity.TABLE_NAME) +@AuditOverride(forClass = AbstractAuditableJpaEntity.class) +@Getter +@Setter +public class AccommodationDeclarationPersonJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "ACCOMMODATION_DECLARATION_PERSON"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "ACCOMMODATION_DECLARATION_PERSON_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "PER_ID") + private PersonJpaEntity person; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "RELATIVE_PER_ID") + private PersonJpaEntity relative; + + @Column(name = "RELATION") + private String relation; + + @Column(name = "JOINING_ACCOMMODATION") + @Type(type = "yes_no") + private Boolean joiningAccommodation; + + @ManyToOne + @JoinColumn(name = "POSTING_ALLOWANCE_ID") + private AccommodationDeclarationAllowanceJpaEntity accommodationDeclaration; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/AccommodationPaymentAllowanceJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/AccommodationPaymentAllowanceJpaEntity.java new file mode 100644 index 0000000..047f787 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/AccommodationPaymentAllowanceJpaEntity.java @@ -0,0 +1,135 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.allowances; + +import static eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceJpaEntity.ALLOWANCE_TYPE_ACCOMMODATION_PAYMENT; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +import eu.europa.eeas.ananke.core.data.provider.jpa.TypeDefinition; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.PersonBankInfoJpaEntity; +import eu.europa.eeas.erights.common.service.model.AccommodationPaymentMethod; +import eu.europa.eeas.erights.common.tools.statemachine.AbacRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationPaymentState; +import java.time.LocalDate; +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.FetchType; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Columns; +import org.hibernate.annotations.Type; +import org.hibernate.envers.Audited; +import org.javamoney.moneta.Money; + +/** + * @author ienaccat + */ +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@DiscriminatorValue(value = ALLOWANCE_TYPE_ACCOMMODATION_PAYMENT) +@Getter +@Setter +public class AccommodationPaymentAllowanceJpaEntity extends PostingAllowanceJpaEntity { + + @Enumerated(EnumType.STRING) + @Column(name = "STATE") + private AccommodationPaymentState state; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "PERSONS_BANK_INFO_ID") + private PersonBankInfoJpaEntity personBankInfo; + + @Enumerated(EnumType.STRING) + @Column(name = "PAYMENT_METHOD") + private AccommodationPaymentMethod paymentMethod; + + @Column(name = "PAYMENT_PERIODIC_INTERVAL") + private Integer paymentPeriodicInterval; + + @Column(name = "PAYMENT_PREFERRED_CURRENCY") + private String paymentPreferredCurrency; + + @Column(name = "RENTAL_START_DATE") + private LocalDate rentalCoverStartDate; + + @Column(name = "RENTAL_END_DATE") + private LocalDate rentalCoverEndDate; + + @Columns(columns = {@Column(name = "MONTHLY_RENTAL_AMOUNT_CURRENCY"), + @Column(name = "MONTHLY_RENTAL_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money monthlyRentalAmount; + + + @Columns(columns = {@Column(name = "MONTHLY_SECURITY_AMOUNT_CURRENCY"), + @Column(name = "MONTHLY_SECURITY_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money monthlySecurityAmount; + + @Columns(columns = {@Column(name = "MONTHLY_RECURRENT_COSTS_CURRENCY"), + @Column(name = "MONTHLY_RECURRENT_COSTS") + }) + @Type(type = TypeDefinition.MONEY) + private Money monthlyRecurrentCosts; + + @Columns(columns = {@Column(name = "NON_RECURRENT_COSTS_CURRENCY"), + @Column(name = "NON_RECURRENT_COSTS") + }) + @Type(type = TypeDefinition.MONEY) + private Money nonRecurrentCosts; + + @Column(name = "NON_RECURRENT_COSTS_DESCRIPTION") + private String nonRecurrentCostsDescription; + + @Column(name = "MULTIPLYING_FACTOR") + private Double multiplyingFactor; + + @Columns(columns = {@Column(name = "GUARANTEE_REIMBURSED_AMOUNT_CURRENCY"), + @Column(name = "GUARANTEE_REIMBURSED_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money guaranteeReimbursedAmount; + + @Columns(columns = {@Column(name = "GUARANTEE_REM_TO_REIMBURSE_CURRENCY"), + @Column(name = "GUARANTEE_REM_TO_REIMBURSE") + }) + @Type(type = TypeDefinition.MONEY) + private Money remainingGuaranteeToReimburse; + + @Column(name = "ABAC_PAYMENT_ORDER") + private String abacPaymentOrder; + + @Column(name = "ABAC_PAYMENT_REQUEST") + private String abacPaymentRequest; + + @Column(name = "ABAC_PAYMENT_DATE") + private LocalDate abacPaymentDate; + + @Column(name = "ABAC_STATE") + @Enumerated(EnumType.STRING) + private AbacRequestState abacState; + + @Column(name = "ABAC_WORKFLOW_STATE") + private String abacWorkflowState; + + @Column(name = "ACC_TOTAL_AMOUNT") + private Double accommodationTotalAmount; + + @Column(name = "ACC_TOTAL_AMOUNT_CUR") + private String accommodationTotalCurrency; + + @Column(name = "ACC_SUBTOTAL_AMOUNT") + private Double accommodationSubTotalAmount; + + @Column(name = "ACC_SUBTOTAL_CURRENCY") + private String accommodationSubTotalCurrency; + + @Column(name = "BUDGET_LINE") + private String budgetLine; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/BudgetLinesMappingJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/BudgetLinesMappingJpaEntity.java new file mode 100644 index 0000000..f7eeebb --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/BudgetLinesMappingJpaEntity.java @@ -0,0 +1,72 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.allowances; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import org.hibernate.annotations.Immutable; + +/** + * @author itadephe + */ +@Entity +@Immutable +@Table(name = BudgetLinesMappingJpaEntity.TABLE_NAME) +public class BudgetLinesMappingJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "BUDGET_LINES_MAPPING"; + + public static final long serialVersionUID = 1L; + + @Id + @Column(name = "BUDGET_LINES_MAPPING") + private Long budgetLinesMappingId; + + @Column(name = "FROM_BUDGET_LINE") + private String fromBudgetLine; + + @Column(name = "TO_BUDGET_LINE") + private String toBudgetLine; + + @Column(name = "REQUEST_TYPE") + private String requestType; + + + public Long getBudgetLinesMappingId() { + return budgetLinesMappingId; + } + + public void setBudgetLinesMappingId(Long budgetLinesMappingId) { + this.budgetLinesMappingId = budgetLinesMappingId; + } + + public String getFromBudgetLine() { + return fromBudgetLine; + } + + public void setFromBudgetLine(String fromBudgetLine) { + this.fromBudgetLine = fromBudgetLine; + } + + public String getToBudgetLine() { + return toBudgetLine; + } + + public void setToBudgetLine(String toBudgetLine) { + this.toBudgetLine = toBudgetLine; + } + + public String getRequestType() { + return requestType; + } + + public void setRequestType(String requestType) { + this.requestType = requestType; + } + + @Override + public String getId() { + return null; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/MVPersonAccommodationJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/MVPersonAccommodationJpaEntity.java new file mode 100644 index 0000000..e873555 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/MVPersonAccommodationJpaEntity.java @@ -0,0 +1,108 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.allowances; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import java.time.LocalDate; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.validation.constraints.Email; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Immutable; + +/** + * @authoer ienaccat + */ +@Entity +@Immutable +@Table(name = MVPersonAccommodationJpaEntity.TABLE_NAME) +@Getter +@Setter +public class MVPersonAccommodationJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_STAFFMEMBERS_ACCOMMODATION"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "PER_ID") + private Long id; + + @Column(name = "LAST_NAME") + private String lastName; + + @Column(name = "FIRST_NAME") + private String firstName; + + @Column(name = "GENDER") + private String gender; + + @Column(name = "EMAIL") + @Email + private String email; + + @Column(name = "ORIGIN_CITY") + private String originCity; + + @Column(name = "ORIGIN_COUNTRY_CODE") + private String originCountryCode; + + @Column(name = "ORIGIN_COUNTRY_DESC") + private String originCountryDesc; + + @Column(name = "BIRTH_CITY") + private String birthCity; + + @Column(name = "BIRTH_COUNTRY_CODE") + private String birthCountryCode; + + @Column(name = "BIRTH_COUNTRY_DESC") + private String birthCountryDesc; + + @Column(name = "RECRUITMENT_CITY") + private String recruitmentCity; + + @Column(name = "RECRUITMENT_COUNTRY") + private String recruitmentCountry; + + @Column(name = "ORGANIZATION_NAME") + private String organizationName; + + @Column(name = "ORGANIZATION_CITY") + private String organizationCity; + + @Column(name = "ORGANIZATION_COUNTRY") + private String organizationCountry; + + @Column(name = "ORG_ID") + private Long orgId; + + @Column(name = "JOB_ID") + private Long jobId; + + @Column(name = "ASSIGN_START_DATE") + private LocalDate assignedStartDate; + + @Column(name = "ASSIGN_END_DATE") + private LocalDate assignedEndDate; + + @Column(name = "SOJ_ID") + private Long sojId; + + @Column(name = "ORG_CD") + private String orgCd; + + @Column(name = "PRIVATE_EMAIL") + private String privateEmail; + + @Column(name = "PRIVATE_EMAIL_SOURCE") + private String privateEmailSource; + + @Column(name = "STATUTORY_LINK_CODE") + private String statutoryLinkCode; + + @Column(name = "STATUTORY_LINK_DESC") + private String statutoryLinkDesc; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowanceDefaultJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowanceDefaultJpaEntity.java new file mode 100644 index 0000000..141d455 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowanceDefaultJpaEntity.java @@ -0,0 +1,187 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.allowances; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.ananke.core.data.provider.jpa.TypeDefinition; +import org.hibernate.annotations.Columns; +import org.hibernate.annotations.Type; +import org.hibernate.envers.AuditOverride; +import org.hibernate.envers.Audited; +import org.javamoney.moneta.Money; + +import javax.persistence.*; + +import java.math.BigDecimal; +import java.time.LocalDate; + +import static javax.persistence.GenerationType.SEQUENCE; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +@Entity +@NamedStoredProcedureQuery(name = "PostingAllowanceDefaultJpaEntity.getPostingAllowanceFareByIata", + procedureName = "PKG_ROUTE_CALCULATION.P_FIND_IATA_FARE_BY_CODE", parameters = { + @StoredProcedureParameter(mode = ParameterMode.IN, name = "P_ORG_AIRPORT_IATA_CODE", type = String.class), + @StoredProcedureParameter(mode = ParameterMode.IN, name = "P_DST_AIRPORT_IATA_CODE", type = String.class), + @StoredProcedureParameter(mode = ParameterMode.IN, name = "P_DATE", type = LocalDate.class), + @StoredProcedureParameter(mode = ParameterMode.OUT, name = "P_FARE", type = BigDecimal.class)}) +@Audited(targetAuditMode = NOT_AUDITED) +@Table(name = PostingAllowanceDefaultJpaEntity.TABLE_NAME) +@AuditOverride(forClass = AbstractAuditableJpaEntity.class) +public class PostingAllowanceDefaultJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "POSTING_ALLOWANCE_DEFAULT"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "POSTING_ALLOWANCE_DEFAULT_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "POSTING_ALLOWANCE_TYPE") + private String postingAllowanceType; + + @Column(name = "POSTING_ALLOWANCE_REQ_TYPE") + private String postingAllowanceReqType; + + @Column(name = "CITY_CODE_TO") + private String cityCodeTo; + + @Column(name = "CITY_CODE_FROM") + private String cityCodeFrom; + + @Column(name = "COUNTRY_CODE_TO") + private String countryCodeTo; + + @Column(name = "COUNTRY_CODE_FROM") + private String countryCodeFrom; + + @Column(name = "IATA_CODE_FROM") + private String iataCodeFrom; + + @Column(name = "IATA_CODE_TO") + private String iataCodeTo; + + @Columns(columns = {@Column(name = "CURRENCY"), + @Column(name = "AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money amount; + + @Column(name = "EXERCISE_YEAR") + private Integer exerciseYear; + + @Column(name = "LATEST") + @Type(type = "yes_no") + private Boolean latest; + + @Column(name = "SOURCE_DATA") + private String sourceData; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getPostingAllowanceType() { + return postingAllowanceType; + } + + public void setPostingAllowanceType(String postingAllowanceType) { + this.postingAllowanceType = postingAllowanceType; + } + + public String getPostingAllowanceReqType() { + return postingAllowanceReqType; + } + + public void setPostingAllowanceReqType(String postingAllowanceReqType) { + this.postingAllowanceReqType = postingAllowanceReqType; + } + + public String getCityCodeTo() { + return cityCodeTo; + } + + public void setCityCodeTo(String cityCodeTo) { + this.cityCodeTo = cityCodeTo; + } + + public String getCityCodeFrom() { + return cityCodeFrom; + } + + public void setCityCodeFrom(String cityCodeFrom) { + this.cityCodeFrom = cityCodeFrom; + } + + public String getCountryCodeTo() { + return countryCodeTo; + } + + public void setCountryCodeTo(String countryCodeTo) { + this.countryCodeTo = countryCodeTo; + } + + public String getCountryCodeFrom() { + return countryCodeFrom; + } + + public void setCountryCodeFrom(String countryCodeFrom) { + this.countryCodeFrom = countryCodeFrom; + } + + public Money getAmount() { + return amount; + } + + public void setAmount(Money amount) { + this.amount = amount; + } + + public Integer getExerciseYear() { + return exerciseYear; + } + + public void setExerciseYear(Integer exerciseYear) { + this.exerciseYear = exerciseYear; + } + + public Boolean getLatest() { + return latest; + } + + public void setLatest(Boolean latest) { + this.latest = latest; + } + + public String getSourceData() { + return sourceData; + } + + public void setSourceData(String sourceData) { + this.sourceData = sourceData; + } + + public String getIataCodeFrom() { + return iataCodeFrom; + } + + public void setIataCodeFrom(String iataCodeFrom) { + this.iataCodeFrom = iataCodeFrom; + } + + public String getIataCodeTo() { + return iataCodeTo; + } + + public void setIataCodeTo(String iataCodeTo) { + this.iataCodeTo = iataCodeTo; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowanceJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowanceJpaEntity.java new file mode 100644 index 0000000..54db33c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowanceJpaEntity.java @@ -0,0 +1,242 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.allowances; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.ananke.core.data.provider.jpa.TypeDefinition; +import eu.europa.eeas.erights.common.data.jpa.entity.VPersonJpaEntity; +import eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceState; +import java.util.LinkedList; +import java.util.List; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Columns; +import org.hibernate.annotations.Type; +import org.hibernate.envers.AuditOverride; +import org.hibernate.envers.Audited; +import org.hibernate.envers.NotAudited; +import org.javamoney.moneta.Money; + +import javax.persistence.*; +import java.time.LocalDate; +import java.util.UUID; + +import static javax.persistence.GenerationType.SEQUENCE; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) +@DiscriminatorColumn(name = "POSTING_ALLOWANCE_DISCRIMINATORY_TYPE") +@Table(name = PostingAllowanceJpaEntity.TABLE_NAME) +@AuditOverride(forClass = AbstractAuditableJpaEntity.class) +@Getter +@Setter +public class PostingAllowanceJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "POSTING_ALLOWANCES"; + + public static final String ALLOWANCE_TYPE_REGULARIZATION = "Regularization"; + public static final String ALLOWANCE_TYPE_TRAVEL = "Travel"; + public static final String ALLOWANCE_TYPE_ACCOMMODATION_DECLARATION = "AccommodationDeclaration"; + public static final String ALLOWANCE_TYPE_ACCOMMODATION_PAYMENT = "AccommodationPayment"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "POSTING_ALLOWANCE_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "PER_ID") + private VPersonJpaEntity staffMember; + + @Column(name = "POSTING_ALLOWANCE_NUMBER") + private Long postingAllowanceNumber; + + @Column(name = "EXERCISE_YEAR") + private Integer exerciseYear; + + @Column(name = "POSTING_ALLOWANCE_STRING_ID") + private String postingAllowanceStringId; + + @Column(name = "POSTING_ALLOWANCE_TYPE") + private String postingAllowanceType; + + @Column(name = "POSTING_ALLOWANCE_REQ_TYPE") + private String postingAllowanceReqType; + + @Column(name = "PARENT_POSTING_ALLOWANCE_ID") + private Long parentPostingAllowanceId; + + @Column(name = "COMMENTS") + private String comments; + + @Columns(columns = {@Column(name = "OUTGOING_TRIP_AMOUNT_CURRENCY"), + @Column(name = "OUTGOING_TRIP_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money outgoingTripAmount; + + @Columns(columns = {@Column(name = "RETURN_TRIP_AMOUNT_CURRENCY"), + @Column(name = "RETURN_TRIP_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money returnTripAmount; + + @Columns(columns = {@Column(name = "CALC_TOTAL_AMOUNT_CURRENCY"), + @Column(name = "CALC_TOTAL_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money calcTotalAmount; + + @Columns(columns = {@Column(name = "TOTAL_AMOUNT_CURRENCY"), + @Column(name = "TOTAL_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money totalAmount; + + @Column(name = "PAYMENT_PERIOD_YEAR") + private Integer paymentPeriodYear; + + @Column(name = "PAYMENT_PERIOD_MONTH") + private Integer paymentPeriodMonth; + + @Column(name = "ORIGIN_PERIOD_YEAR") + private Integer originPeriodYear; + + @Column(name = "ORIGIN_PERIOD_MONTH") + private Integer originPeriodMonth; + + @Column(name = "PAYMENT_REFERENCE") + private String paymentReference; + + @Column(name = "PAYMENT_STATE") + private String paymentState; + + @Column(name = "ASSIGNMENT_COUNTRY_CODE") + private String assignmentCountryCode; + + @Column(name = "ASSIGNMENT_CITY_CODE") + private String assignmentCityCode; + + @Column(name = "ASSIGNMENT_IATA_CODE") + private String assignmentIataCode; + + @Column(name = "ASSIGNMENT_CITY_NAME") + private String assignmentCityName; + + @Column(name = "ORIGIN_CITY_CODE") + private String originCityCode; + + @Column(name = "ORIGIN_COUNTRY_CODE") + private String originCountryCode; + + @Column(name = "ORIGIN_CITY_NAME") + private String originCityName; + + @Column(name = "ORIGIN_IATA_CODE") + private String originIataCode; + + @Column(name = "RECRUITMENT_CITY_CODE") + private String recruitmentCityCode; + + @Column(name = "RECRUITMENT_COUNTRY_CODE") + private String recruitmentCountryCode; + + @Column(name = "RECRUITMENT_CITY_NAME") + private String recruitmentCityName; + + @Column(name = "RECRUITMENT_IATA_CODE") + private String recruitmentIataCode; + + @Column(name = "SM_ID", length = 16) + @Type(type = "uuid-binary") + private UUID smId; + + @Column(name = "STATE",insertable = false, updatable = false) + private String status; + + @Column(name = "DELEGATION_ORG_ID") + private Long delegationOrgId; + + @Column(name = "POSTING_ALLOWANCE_DISCRIMINATORY_TYPE", insertable = false, updatable = false) + private String postingAllowanceDiscriminatoryType; + + @Column(name = "ORIGIN_COUNTRY_NAME") + private String originCountryName; + + @Column(name = "ASSIGNMENT_COUNTRY_NAME") + private String assignmentCountryName; + + @Column(name = "ASSIGNMENT_START_DATE") + private LocalDate assignmentStartDate ; + + @Column(name = "SOJ_ID") + private Long sojId; + + @Column(name = "SPOUSE_PER_ID") + private Long spouseId; + + @Column(name = "DOUBLE_POSTING") + @Type(type = "yes_no") + private Boolean doublePosting; + + @Column(name = "PAYMENT_ID") + private String paymentId; + + @Column(name = "PAYMENT_EVENT_ID") + private String paymentEventId; + + @Column(name = "DUAL_POSTING") + private String dualPosting; + + @Column(name = "ORIGIN_PLACE_SEARCH") + private String placeOfOrigin; + + @Column(name = "ASSIGNMENT_AIRPORT_NAME") + private String assignmentAirportName; + + @Column(name = "ORIGIN_AIRPORT_NAME") + private String originAirportName; + + @Column(name = "EXPATRIATION_ALLOWANCE_DATE_FROM") + private LocalDate expatriationAllowanceStartDate; + + @Column(name = "EXPATRIATION_ALLOWANCE_DATE_TO") + private LocalDate expatriationAllowanceEndDate; + + @Column(name = "ASSIGNMENT_END_DATE") + private LocalDate assignmentEndDate; + + @Column(name = "FIRST_NATIONALITY_COUNTRY") + private String firstNationality; + + @Override + public Long getId() { + return id; + } + + @NotAudited + @OneToMany(mappedBy = "postingAllowance", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true) + private List supportingDocs = new LinkedList<>(); + + /** + * don't delete this + * + * @param supportingDocs + */ + public void setSupportingDocs( + List supportingDocs) { + if (supportingDocs != null) { + this.supportingDocs.clear(); + this.supportingDocs.addAll(supportingDocs); + for (PostingAllowanceSupportingDocJpaEntity supportingDocument : this.supportingDocs) { + supportingDocument.setPostingAllowance(this); + } + } + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowancePersonJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowancePersonJpaEntity.java new file mode 100644 index 0000000..6f313fd --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowancePersonJpaEntity.java @@ -0,0 +1,308 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.allowances; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.ananke.core.data.provider.jpa.TypeDefinition; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.DeclarationJpaEntity; +import eu.europa.eeas.erights.common.tools.allowances.TravelAllowanceRoute; +import org.hibernate.annotations.Columns; +import org.hibernate.annotations.Type; +import org.hibernate.envers.AuditOverride; +import org.hibernate.envers.Audited; +import org.javamoney.moneta.Money; + +import javax.persistence.*; +import java.time.LocalDate; + +import static javax.persistence.GenerationType.SEQUENCE; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@Table(name = PostingAllowancePersonJpaEntity.TABLE_NAME) +@AuditOverride(forClass = AbstractAuditableJpaEntity.class) +public class PostingAllowancePersonJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "POSTING_ALLOWANCE_PERSONS"; + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "POSTING_ALLOWANCE_PERSON_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "POSTING_ALLOWANCE_ID") + private Long postingAllowanceId; + + @Column(name = "DATE_OF_BIRTH") + private LocalDate dateOfBirth; + + @Column(name = "ROUTE") + @Enumerated(EnumType.STRING) + private TravelAllowanceRoute route; + + @Column(name = "PER_ID") + private Long perId; + + @Column(name = "REL_PER_ID") + private Long relPerId; + + @Column(name = "TRP_CD") + private Long trcCd; + + @Column(name = "TRP_CODE") + private String trcCode; + + @Columns(columns = {@Column(name = "TRIP_AMOUNT_CURRENCY"), + @Column(name = "TRIP_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money tripAmount; + + @Column(name = "ENTITLED_MONTHS") + private Integer entitledMonths; + + @Columns(columns = {@Column(name = "TOTAL_AMOUNT_CURRENCY"), + @Column(name = "TOTAL_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money totalAmount; + + @Column(name = "CITY_FROM") + private String cityFrom; + + @Column(name = "COUNTRY_FROM") + private String countryFrom; + + @Column(name = "IATA_CODE_FROM") + private String iataCodeFrom; + + @Column(name = "CITY_TO") + private String cityTo; + + @Column(name = "COUNTRY_TO") + private String countryTo; + + @Column(name = "IATA_CODE_TO") + private String iataCodeTo; + + @Column(name = "REMARKS") + private String remarks; + + @Column(name = "FIRST_NAME") + private String firstName; + + @Column(name = "SURNAME") + private String surname; + + @Column(name = "WORK_IN_DELEGATION") + @Type(type = "yes_no") + private Boolean workInDelegation; + + + @Column(name = "WORK_IN_HQ") + @Type(type = "yes_no") + private Boolean workInHQ; + + @Column(name = "ORDER_TYPE_OF_PERSON") + private Long orderTypeOfPerson; + + @Column(name = "FIRST_NATIONALITY_COUNTRY") + private String firstNationality; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getPostingAllowanceId() { + return postingAllowanceId; + } + + public void setPostingAllowanceId(Long postingAllowanceId) { + this.postingAllowanceId = postingAllowanceId; + } + + public LocalDate getDateOfBirth() { + return dateOfBirth; + } + + public void setDateOfBirth(LocalDate dateOfBirth) { + this.dateOfBirth = dateOfBirth; + } + + public TravelAllowanceRoute getRoute() { + return route; + } + + public void setRoute(TravelAllowanceRoute route) { + this.route = route; + } + + public Long getPerId() { + return perId; + } + + public void setPerId(Long perId) { + this.perId = perId; + } + + public Long getRelPerId() { + return relPerId; + } + + public void setRelPerId(Long relPerId) { + this.relPerId = relPerId; + } + + public Long getTrcCd() { + return trcCd; + } + + public void setTrcCd(Long trcCd) { + this.trcCd = trcCd; + } + + public String getTrcCode() { + return trcCode; + } + + public void setTrcCode(String trcCode) { + this.trcCode = trcCode; + } + + public Money getTripAmount() { + return tripAmount; + } + + public void setTripAmount(Money tripAmount) { + this.tripAmount = tripAmount; + } + + public Integer getEntitledMonths() { + return entitledMonths; + } + + public void setEntitledMonths(Integer entitledMonths) { + this.entitledMonths = entitledMonths; + } + + public Money getTotalAmount() { + return totalAmount; + } + + public void setTotalAmount(Money totalAmount) { + this.totalAmount = totalAmount; + } + + public String getCityFrom() { + return cityFrom; + } + + public void setCityFrom(String cityFrom) { + this.cityFrom = cityFrom; + } + + public String getCountryFrom() { + return countryFrom; + } + + public void setCountryFrom(String countryFrom) { + this.countryFrom = countryFrom; + } + + public String getIataCodeFrom() { + return iataCodeFrom; + } + + public void setIataCodeFrom(String iataCodeFrom) { + this.iataCodeFrom = iataCodeFrom; + } + + public String getCityTo() { + return cityTo; + } + + public void setCityTo(String cityTo) { + this.cityTo = cityTo; + } + + public String getCountryTo() { + return countryTo; + } + + public void setCountryTo(String countryTo) { + this.countryTo = countryTo; + } + + public String getIataCodeTo() { + return iataCodeTo; + } + + public void setIataCodeTo(String iataCodeTo) { + this.iataCodeTo = iataCodeTo; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getSurname() { + return surname; + } + + public void setSurname(String surname) { + this.surname = surname; + } + + public Boolean getWorkInDelegation() { + return workInDelegation; + } + + public void setWorkInDelegation(Boolean workInDelegation) { + this.workInDelegation = workInDelegation; + } + + public Boolean getWorkInHQ() { + return workInHQ; + } + + public void setWorkInHQ(Boolean workInHQ) { + this.workInHQ = workInHQ; + } + + public Long getOrderTypeOfPerson() { + return orderTypeOfPerson; + } + + public void setOrderTypeOfPerson(Long orderTypeOfPerson) { + this.orderTypeOfPerson = orderTypeOfPerson; + } + + public String getFirstNationality() { + return firstNationality; + } + + public void setFirstNationality(String firstNationality) { + this.firstNationality = firstNationality; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowanceSupportingDocAttachmentJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowanceSupportingDocAttachmentJpaEntity.java new file mode 100644 index 0000000..8812653 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowanceSupportingDocAttachmentJpaEntity.java @@ -0,0 +1,56 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.allowances; + +import static javax.persistence.GenerationType.SEQUENCE; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import java.util.UUID; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +/** + * @author ienaccat + */ +@Entity +@Table(name = PostingAllowanceSupportingDocAttachmentJpaEntity.TABLE_NAME) +@Getter +@Setter +public class PostingAllowanceSupportingDocAttachmentJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "POSTING_ALLOWANCES_SUPPORTING_DOC_ATTS"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "POSTING_ALLOWANCES_SUPPORTING_DOC_ATT_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "UUID") + private UUID uuid; + + @JoinColumn(name = "POSTING_ALLOWANCES_SUPPORTING_DOC_ID") + @ManyToOne(fetch = FetchType.LAZY) + private PostingAllowanceSupportingDocJpaEntity postingAllowanceSupportingDoc; + + @Column(name = "FILE_NAME") + private String fileName; + + @Override + public Long getId() { + return id; + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowanceSupportingDocJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowanceSupportingDocJpaEntity.java new file mode 100644 index 0000000..4549b69 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowanceSupportingDocJpaEntity.java @@ -0,0 +1,96 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.allowances; + +import static javax.persistence.GenerationType.SEQUENCE; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsForSupportingDocJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.SupportingDocType; +import java.util.LinkedList; +import java.util.List; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Type; +import org.hibernate.envers.AuditOverride; +import org.hibernate.envers.Audited; +import org.hibernate.envers.NotAudited; + +/** + * @author ienaccat + */ +@Entity +@Table(name = PostingAllowanceSupportingDocJpaEntity.TABLE_NAME) +@Audited(targetAuditMode = NOT_AUDITED) +@AuditOverride(forClass = AbstractAuditableJpaEntity.class) +@Getter +@Setter +public class PostingAllowanceSupportingDocJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "POSTING_ALLOWANCES_SUPPORTING_DOCS"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + @Id + @Column(name = "POSTING_ALLOWANCES_SUPPORTING_DOC_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "POSTING_ALLOWANCE_ID") + private PostingAllowanceJpaEntity postingAllowance; //declaration or payment - see later + + @Enumerated(EnumType.STRING) + @Column(name = "DOC_TYPE") + private SupportingDocType docType; + + @Column(name = "DOC_ORDER") + private Long docOrder; + + @Column(name = "DOC_MANDATORY") + @Type(type = "yes_no") + private Boolean docMandatory; + + @NotAudited + @OneToMany(mappedBy = "postingAllowanceSupportingDoc", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true) + private List attachments = new LinkedList<>(); + + @JoinColumn(name = "COMMENTS_ID", referencedColumnName = "COMMENTS_ID") + @OneToOne(cascade = CascadeType.ALL) + private CommentsForSupportingDocJpaEntity comment; + + @Override + public Long getId() { + return id; + } + + /** + * Please don't delete this + * + * @param attachments + */ + public void setAttachments(List attachments) { + if (attachments != null) { + this.attachments.clear(); + this.attachments.addAll(attachments); + for (PostingAllowanceSupportingDocAttachmentJpaEntity att : this.attachments) { + att.setPostingAllowanceSupportingDoc(this); + } + } + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowanceTreatedJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowanceTreatedJpaEntity.java new file mode 100644 index 0000000..e951197 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/PostingAllowanceTreatedJpaEntity.java @@ -0,0 +1,142 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.allowances; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import lombok.Getter; +import org.hibernate.envers.AuditOverride; +import javax.persistence.*; + +import java.time.LocalDate; +import static javax.persistence.GenerationType.SEQUENCE; + +@Entity +@Table(name = PostingAllowanceTreatedJpaEntity.TABLE_NAME) +@AuditOverride(forClass = AbstractAuditableJpaEntity.class) +public class PostingAllowanceTreatedJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "POSTING_ALLOWANCES_TREATED"; + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "POSTING_ALLOWANCE_TREATED_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "PER_ID") + private Long perId; + + @Column(name = "EXERCISE_YEAR") + private Integer exerciseYear; + + @Column(name = "DELEGATION_ORG_ID") + private Long delegationOrgId; + + @Column(name = "SOJ_ID") + private Long sojId; + + @Column(name = "POSTING_ALLOWANCE_ID") + private Long postingAllowanceId; + + @Column(name = "ASSIGNMENT_START_DATE") + private LocalDate assignmentStartDate; + + @Column(name = "ASSIGNMENT_END_DATE") + private LocalDate assignmentEndDate; + + @Column(name = "EXPATRIATION_ALLOWANCE_DATE_FROM") + private LocalDate expatriationAllowanceStartDate; + + @Column(name = "EXPATRIATION_ALLOWANCE_DATE_TO") + private LocalDate expatriationAllowanceEndDate; + + @Getter + @Column(name = "ORIGIN_COUNTRY_CODE") + private String originCountryCode; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getPerId() { + return perId; + } + + public void setPerId(Long perId) { + this.perId = perId; + } + + public Integer getExerciseYear() { + return exerciseYear; + } + + public void setExerciseYear(Integer exerciseYear) { + this.exerciseYear = exerciseYear; + } + + public Long getDelegationOrgId() { + return delegationOrgId; + } + + public void setDelegationOrgId(Long delegationOrgId) { + this.delegationOrgId = delegationOrgId; + } + + public Long getSojId() { + return sojId; + } + + public void setSojId(Long sojId) { + this.sojId = sojId; + } + + public Long getPostingAllowanceId() { + return postingAllowanceId; + } + + public void setPostingAllowanceId(Long postingAllowanceId) { + this.postingAllowanceId = postingAllowanceId; + } + + public LocalDate getAssignmentStartDate() { + return assignmentStartDate; + } + + public void setAssignmentStartDate(LocalDate assignmentStartDate) { + this.assignmentStartDate = assignmentStartDate; + } + + public LocalDate getAssignmentEndDate() { + return assignmentEndDate; + } + + public void setAssignmentEndDate(LocalDate assignmentEndDate) { + this.assignmentEndDate = assignmentEndDate; + } + + public LocalDate getExpatriationAllowanceStartDate() { + return expatriationAllowanceStartDate; + } + + public void setExpatriationAllowanceStartDate(LocalDate expatriationAllowanceStartDate) { + this.expatriationAllowanceStartDate = expatriationAllowanceStartDate; + } + + public LocalDate getExpatriationAllowanceEndDate() { + return expatriationAllowanceEndDate; + } + + public void setExpatriationAllowanceEndDate(LocalDate expatriationAllowanceEndDate) { + this.expatriationAllowanceEndDate = expatriationAllowanceEndDate; + } + + public void setOriginCountryCode(String originCountryCode) { + this.originCountryCode = originCountryCode; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/RegularizationAllowanceJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/RegularizationAllowanceJpaEntity.java new file mode 100644 index 0000000..dacd71a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/RegularizationAllowanceJpaEntity.java @@ -0,0 +1,90 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.allowances; + +import com.fasterxml.jackson.annotation.JsonManagedReference; +import eu.europa.eeas.ananke.core.data.provider.jpa.TypeDefinition; +import eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceState; +import org.hibernate.annotations.Columns; +import org.hibernate.annotations.Type; +import org.hibernate.envers.Audited; +import org.javamoney.moneta.Money; + +import javax.persistence.*; +import java.util.List; + +import static eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceJpaEntity.ALLOWANCE_TYPE_REGULARIZATION; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@DiscriminatorValue(value = ALLOWANCE_TYPE_REGULARIZATION) +public class RegularizationAllowanceJpaEntity extends PostingAllowanceJpaEntity { + + @OneToMany(fetch = FetchType.LAZY, mappedBy = "postingAllowanceId", cascade = CascadeType.ALL) + @JsonManagedReference + @OrderBy("orderTypeOfPerson ASC,dateOfBirth ASC ") + private List postingAllowancePersons; + + + @Columns(columns = {@Column(name = "NEW_TOTAL_AMOUNT_CURRENCY"), + @Column(name = "NEW_TOTAL_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money newTotalAmount; + + + @Columns(columns = {@Column(name = "INITIAL_TOTAL_AMOUNT_CURRENCY"), + @Column(name = "INITIAL_TOTAL_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money initialTotalAmount; + + @Columns(columns = {@Column(name = "REGULARIZE_AMOUNT_CURRENCY"), + @Column(name = "REGULARIZE_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money regularizeAmount; + + @Enumerated(EnumType.STRING) + @Column(name = "STATE") + private PostingAllowanceState state; + + public List getPostingAllowancePersons() { + return postingAllowancePersons; + } + + public void setPostingAllowancePersons(List postingAllowancePersons) { + this.postingAllowancePersons = postingAllowancePersons; + } + + public Money getNewTotalAmount() { + return newTotalAmount; + } + + public void setNewTotalAmount(Money newTotalAmount) { + this.newTotalAmount = newTotalAmount; + } + + public Money getInitialTotalAmount() { + return initialTotalAmount; + } + + public void setInitialTotalAmount(Money initialTotalAmount) { + this.initialTotalAmount = initialTotalAmount; + } + + public Money getRegularizeAmount() { + return regularizeAmount; + } + + public void setRegularizeAmount(Money regularizeAmount) { + this.regularizeAmount = regularizeAmount; + } + + public PostingAllowanceState getState() { + return state; + } + + public void setState(PostingAllowanceState state) { + this.state = state; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/TravelAllowanceJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/TravelAllowanceJpaEntity.java new file mode 100644 index 0000000..02802b3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/TravelAllowanceJpaEntity.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.allowances; + +import com.fasterxml.jackson.annotation.JsonManagedReference; +import eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceState; +import org.hibernate.envers.Audited; + +import javax.persistence.*; +import java.util.List; + +import static eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceJpaEntity.ALLOWANCE_TYPE_TRAVEL; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@DiscriminatorValue(value = ALLOWANCE_TYPE_TRAVEL) +public class TravelAllowanceJpaEntity extends PostingAllowanceJpaEntity { + + @Enumerated(EnumType.STRING) + @Column(name = "STATE") + private PostingAllowanceState state; + @OneToMany(fetch = FetchType.LAZY, mappedBy = "postingAllowanceId", cascade = CascadeType.ALL) + @JsonManagedReference + @OrderBy("orderTypeOfPerson ASC,dateOfBirth ASC ") + private List postingAllowancePersons; + + public List getPostingAllowancePersons() { + return postingAllowancePersons; + } + + public void setPostingAllowancePersons(List postingAllowancePersons) { + this.postingAllowancePersons = postingAllowancePersons; + } + + public PostingAllowanceState getState() { + return state; + } + + public void setState(PostingAllowanceState state) { + this.state = state; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/VReportPostingAllowanceJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/VReportPostingAllowanceJpaEntity.java new file mode 100644 index 0000000..ef24d40 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/allowances/VReportPostingAllowanceJpaEntity.java @@ -0,0 +1,208 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.allowances; + +import static javax.persistence.GenerationType.SEQUENCE; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.ananke.core.data.provider.jpa.TypeDefinition; +import java.time.LocalDate; +import java.util.UUID; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Columns; +import org.hibernate.annotations.Immutable; +import org.hibernate.annotations.Type; +import org.javamoney.moneta.Money; + +@Entity +@Immutable +@Table(name = VReportPostingAllowanceJpaEntity.TABLE_NAME) +@Getter +@Setter +public class VReportPostingAllowanceJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "V_REPORT_POSTING_ALLOWANCES"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "POSTING_ALLOWANCE_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + + @Column(name = "PER_ID") + private Long perId; + + @Column(name = "POSTING_ALLOWANCE_NUMBER") + private Long postingAllowanceNumber; + + @Column(name = "EXERCISE_YEAR") + private Integer exerciseYear; + + @Column(name = "POSTING_ALLOWANCE_STRING_ID") + private String postingAllowanceStringId; + + @Column(name = "POSTING_ALLOWANCE_TYPE") + private String postingAllowanceType; + + @Column(name = "POSTING_ALLOWANCE_REQ_TYPE") + private String postingAllowanceReqType; + + @Column(name = "PARENT_POSTING_ALLOWANCE_ID") + private Long parentPostingAllowanceId; + + @Column(name = "COMMENTS") + private String comments; + + @Columns(columns = {@Column(name = "OUTGOING_TRIP_AMOUNT_CURRENCY"), + @Column(name = "OUTGOING_TRIP_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money outgoingTripAmount; + + @Columns(columns = {@Column(name = "RETURN_TRIP_AMOUNT_CURRENCY"), + @Column(name = "RETURN_TRIP_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money returnTripAmount; + + @Columns(columns = {@Column(name = "CALC_TOTAL_AMOUNT_CURRENCY"), + @Column(name = "CALC_TOTAL_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money calcTotalAmount; + + @Columns(columns = {@Column(name = "TOTAL_AMOUNT_CURRENCY"), + @Column(name = "TOTAL_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money totalAmount; + + @Column(name = "PAYMENT_PERIOD_YEAR") + private Integer paymentPeriodYear; + + @Column(name = "PAYMENT_PERIOD_MONTH") + private Integer paymentPeriodMonth; + + @Column(name = "ORIGIN_PERIOD_YEAR") + private Integer originPeriodYear; + + @Column(name = "ORIGIN_PERIOD_MONTH") + private Integer originPeriodMonth; + + @Column(name = "PAYMENT_REFERENCE") + private String paymentReference; + + @Column(name = "PAYMENT_STATE") + private String paymentState; + + @Column(name = "ASSIGNMENT_COUNTRY_CODE") + private String assignmentCountryCode; + + @Column(name = "ASSIGNMENT_CITY_CODE") + private String assignmentCityCode; + + @Column(name = "ASSIGNMENT_IATA_CODE") + private String assignmentIataCode; + + @Column(name = "ASSIGNMENT_CITY_NAME") + private String assignmentCityName; + + @Column(name = "ORIGIN_CITY_CODE") + private String originCityCode; + + @Column(name = "ORIGIN_COUNTRY_CODE") + private String originCountryCode; + + @Column(name = "ORIGIN_CITY_NAME") + private String originCityName; + + @Column(name = "ORIGIN_IATA_CODE") + private String originIataCode; + + @Column(name = "RECRUITMENT_CITY_CODE") + private String recruitmentCityCode; + + @Column(name = "RECRUITMENT_COUNTRY_CODE") + private String recruitmentCountryCode; + + @Column(name = "RECRUITMENT_CITY_NAME") + private String recruitmentCityName; + + @Column(name = "RECRUITMENT_IATA_CODE") + private String recruitmentIataCode; + + @Column(name = "SM_ID", length = 16) + @Type(type = "uuid-binary") + private UUID smId; + + @Column(name = "STATE",insertable = false, updatable = false) + private String status; + + @Column(name = "DELEGATION_ORG_ID") + private Long delegationOrgId; + + @Column(name = "POSTING_ALLOWANCE_DISCRIMINATORY_TYPE", insertable = false, updatable = false) + private String postingAllowanceDiscriminatoryType; + + @Column(name = "ORIGIN_COUNTRY_NAME") + private String originCountryName; + + @Column(name = "ASSIGNMENT_COUNTRY_NAME") + private String assignmentCountryName; + + @Column(name = "FIRST_NAME") + private String firstName; + + @Column(name = "LAST_NAME") + private String lastName; + + @Column(name = "ASSIGNMENT_START_DATE") + private LocalDate assignmentStartDate; + + @Column(name = "ASSIGNMENT_PLACE") + private String assignmentPace; + + @Column(name = "PAYMENT_PERIOD") + private LocalDate paymentPeriod; + + @Column(name = "ORIGIN_PERIOD") + private LocalDate originPeriod; + + @Column(name = "SPOUSE_PER_ID") + private Long spouseId; + + @Column(name = "DOUBLE_POSTING") + @Type(type = "yes_no") + private Boolean doublePosting; + + @Column(name = "DUAL_POSTING") + private String dualPosting; + @Column(name = "ORIGIN_PLACE_SEARCH") + private String placeOfOrigin; + + @Column(name = "ASSIGNMENT_AIRPORT_NAME") + private String assignmentAirportName; + @Column(name = "ORIGIN_AIRPORT_NAME") + private String originAirportName; + @Column(name = "ORIGIN_AIRPORT_LOCATION_NAME") + private String originAirportLocationName; + + @Column(name = "FIRST_NATIONALITY_COUNTRY_CODE") + private String firstNationality; + + @Override + public Long getId() { + return id; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/comments/CommentsForMovementFileJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/comments/CommentsForMovementFileJpaEntity.java new file mode 100644 index 0000000..8083863 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/comments/CommentsForMovementFileJpaEntity.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.comments; + +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + +/** + * Stores comments associated with a MF. + * + * @author idominju + * + */ +@Entity +@DiscriminatorValue(CommentsJpaEntity.COMMENT_TYPE_MOVEMENT_FILE) +public class CommentsForMovementFileJpaEntity extends CommentsJpaEntity { + + private static final long serialVersionUID = 1L; + + /* + * Specific fields here. None for the moment. + */ +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/comments/CommentsForPostingAllowanceJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/comments/CommentsForPostingAllowanceJpaEntity.java new file mode 100644 index 0000000..e7087e0 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/comments/CommentsForPostingAllowanceJpaEntity.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.comments; + +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + +/** + * Stores comments associated with a MF. + * + * @author tapiafo + * + */ +@Entity +@DiscriminatorValue(CommentsJpaEntity.COMMENT_TYPE_POSTING_ALLOWANCE) +public class CommentsForPostingAllowanceJpaEntity extends CommentsJpaEntity { + + private static final long serialVersionUID = 1L; + + /* + * Specific fields here. None for the moment. + */ +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/comments/CommentsForRequestJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/comments/CommentsForRequestJpaEntity.java new file mode 100644 index 0000000..12ed099 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/comments/CommentsForRequestJpaEntity.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.comments; + +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + +/** + * Stores comments associated with a Request. + * + * @author idominju + * + */ +@Entity +@DiscriminatorValue(CommentsJpaEntity.COMMENT_TYPE_REQUEST) +public class CommentsForRequestJpaEntity extends CommentsJpaEntity { + + private static final long serialVersionUID = 1L; + + /* + * Specific fields here. None for the moment. + */ +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/comments/CommentsForSupportingDocJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/comments/CommentsForSupportingDocJpaEntity.java new file mode 100644 index 0000000..4e564e0 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/comments/CommentsForSupportingDocJpaEntity.java @@ -0,0 +1,23 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.comments; + +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestSupportingDocJpaEntity; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.OneToOne; + +/** + * Stores comments associated with a Multiple Attachments entity. + * + * @author ienaccat + * + */ +@Entity +@DiscriminatorValue(CommentsJpaEntity.COMMENT_TYPE_SUPPORTING_DOC) +public class CommentsForSupportingDocJpaEntity extends CommentsJpaEntity { + + private static final long serialVersionUID = 1L; + + @OneToOne(mappedBy = "comment") + private RequestSupportingDocJpaEntity requestSupportingDocument; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/comments/CommentsJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/comments/CommentsJpaEntity.java new file mode 100644 index 0000000..7cbe642 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/comments/CommentsJpaEntity.java @@ -0,0 +1,129 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.comments; + +import static javax.persistence.GenerationType.SEQUENCE; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import javax.persistence.Column; +import javax.persistence.DiscriminatorColumn; +import javax.persistence.DiscriminatorType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import org.hibernate.annotations.Type; + +/** + * This entity will store Comments associated with a Request or Movement File. + * + * @author idominju + * + */ +@Entity +@Table(name = CommentsJpaEntity.TABLE_NAME) +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) +@DiscriminatorColumn(name = "COMMENT_TYPE", discriminatorType = DiscriminatorType.STRING) +public class CommentsJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "COMMENTS"; + public static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + /** + * Values used for discrimination. Apparently it's not possible to use a Enum. + */ + public static final String COMMENT_TYPE_MOVEMENT_FILE = "MOVEMENT_FILE"; + public static final String COMMENT_TYPE_REQUEST = "REQUEST"; + public static final String COMMENT_TYPE_POSTING_ALLOWANCE = "POSTING_ALLOWANCE"; + public static final String COMMENT_TYPE_SUPPORTING_DOC = "SUPPORTING_DOC"; + + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "COMMENTS_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + /** + * Refers to the ID of a MF or Request, according to the value of COMMENT_TYPE. + */ + @Column(name = "ENTITY_ID") + private Long entityId; + + @Column(name = "COMMENT_TEXT") + private String commentText; + + @Column(name = "DISPLAY_ORDER") + private Long displayOrder; + + @Column(name = "DELETED") + @Type(type = "yes_no") + private Boolean deleted; + + @Column(name = "COMMENT_TYPE", insertable = false, updatable = false) + private String commentType; + + @Column(name = "AUTHOR_NAME") + private String authorName; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getEntityId() { + return entityId; + } + + public void setEntityId(Long entityId) { + this.entityId = entityId; + } + + public String getCommentText() { + return commentText; + } + + public void setCommentText(String commentText) { + this.commentText = commentText; + } + + public Long getDisplayOrder() { + return displayOrder; + } + + public void setDisplayOrder(Long displayOrder) { + this.displayOrder = displayOrder; + } + + public Boolean getDeleted() { + return deleted; + } + + public void setDeleted(Boolean deleted) { + this.deleted = deleted; + } + + public String getCommentType() { + return commentType; + } + + public void setCommentType(String commentType) { + this.commentType = commentType; + } + + public String getAuthorName() { + return authorName; + } + + public void setAuthorName(String authorName) { + this.authorName = authorName; + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/declaration/DeclarationJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/declaration/DeclarationJpaEntity.java new file mode 100644 index 0000000..13b5ea5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/declaration/DeclarationJpaEntity.java @@ -0,0 +1,238 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.declaration; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.CityJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.CountryJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonJpaEntity; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationState; +import eu.europa.eeas.erights.common.tools.removal.RemovalRequestType; +import org.hibernate.annotations.Type; +import org.hibernate.envers.AuditOverride; +import org.hibernate.envers.Audited; +import org.hibernate.envers.NotAudited; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +import static javax.persistence.GenerationType.SEQUENCE; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@Table(name = DeclarationJpaEntity.TABLE_NAME) +@AuditOverride(forClass = AbstractAuditableJpaEntity.class) +public class DeclarationJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "DECLARATION"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "DECLARATION_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "MOVEMENT_FILE_ID") + private Long movementFileId; + + @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE}) + @JoinColumn(name = "PERSONS_BANK_INFO_ID") + private PersonBankInfoJpaEntity personBankInfo; + + @OneToMany(fetch = FetchType.LAZY, mappedBy = "declaration", cascade = CascadeType.ALL) + private List declarationPersons; + + @Column(name = "ENABLE") + @Type(type = "yes_no") + private Boolean enable; + + @Enumerated(EnumType.STRING) + @Column(name = "STATE") + private DeclarationState state; + + @Column(name = "HOD_OPTION") + private String hodOption; + + @Column(name = "ENTRY_INTO_STORAGE") + @Type(type = "yes_no") + private Boolean entryIntoStorage; + + /** + * We don't want these columns to behave in the standard way of created/updated audit columns. + * We will explicitly decide when to set the values or null values, so we declare them as normal fields. + * The values are set when the user saves a declaration for the first time and updates a declaration. + */ + @Column(name = "USER_CREATED_AT") + private LocalDateTime userCreatedAt; + + @Column(name = "USER_UPDATED_AT") + private LocalDateTime userUpdatedAt; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "PER_ID") + private PersonJpaEntity staffMember; + + @Column(name = "REMOVAL_OPTION") + @Enumerated(EnumType.STRING) + private RemovalRequestType removalRequestType; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "COUNTRY_EIS") + private CountryJpaEntity countryForEIS; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "CITY_EIS") + private CityJpaEntity cityForEIS; + + @Column(name = "AIRFREIGHT_VOLUME_CEILING") + private BigDecimal volumeAirFreightCeiling; + + @Column(name = "AIRFREIGHT_KG_CEILING") + private BigDecimal kgAirFreightCeiling; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public List getDeclarationPersons() { + return declarationPersons; + } + + public void setDeclarationPersons(List declarationPersons) { + this.declarationPersons = declarationPersons; + } + + public Long getMovementFileId() { + return movementFileId; + } + + public void setMovementFileId(Long movementFileId) { + this.movementFileId = movementFileId; + } + + public PersonBankInfoJpaEntity getPersonBankInfo() { + return personBankInfo; + } + + public void setPersonBankInfo(PersonBankInfoJpaEntity personBankInfo) { + this.personBankInfo = personBankInfo; + } + + public Boolean getEnable() { + return enable; + } + + public void setEnable(Boolean enable) { + this.enable = enable; + } + + public DeclarationState getState() { + return state; + } + + public void setState(DeclarationState state) { + this.state = state; + } + + public LocalDateTime getUserCreatedAt() { + return userCreatedAt; + } + + public void setUserCreatedAt(LocalDateTime userCreatedAt) { + this.userCreatedAt = userCreatedAt; + } + + public LocalDateTime getUserUpdatedAt() { + return userUpdatedAt; + } + + public void setUserUpdatedAt(LocalDateTime userUpdatedAt) { + this.userUpdatedAt = userUpdatedAt; + } + + public PersonJpaEntity getStaffMember() { + return staffMember; + } + + public void setStaffMember(PersonJpaEntity staffMember) { + this.staffMember = staffMember; + } + + public RemovalRequestType getRemovalRequestType() { + return removalRequestType; + } + + public void setRemovalRequestType(RemovalRequestType removalRequestType) { + this.removalRequestType = removalRequestType; + } + + public String getHodOption() { + return hodOption; + } + + public void setHodOption(String hodOption) { + this.hodOption = hodOption; + } + + public Boolean getEntryIntoStorage() { + return entryIntoStorage; + } + + public void setEntryIntoStorage(Boolean entryIntoStorage) { + this.entryIntoStorage = entryIntoStorage; + } + + public CountryJpaEntity getCountryForEIS() { + return countryForEIS; + } + + public void setCountryForEIS(CountryJpaEntity countryForEIS) { + this.countryForEIS = countryForEIS; + } + + public CityJpaEntity getCityForEIS() { + return cityForEIS; + } + + public void setCityForEIS(CityJpaEntity cityForEIS) { + this.cityForEIS = cityForEIS; + } + + public BigDecimal getVolumeAirFreightCeiling() { + return volumeAirFreightCeiling; + } + + public void setVolumeAirFreightCeiling(BigDecimal volumeAirFreightCeiling) { + this.volumeAirFreightCeiling = volumeAirFreightCeiling; + } + + public BigDecimal getKgAirFreightCeiling() { + return kgAirFreightCeiling; + } + + public void setKgAirFreightCeiling(BigDecimal kgAirFreightCeiling) { + this.kgAirFreightCeiling = kgAirFreightCeiling; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/declaration/DeclarationPersonAttachmentJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/declaration/DeclarationPersonAttachmentJpaEntity.java new file mode 100644 index 0000000..03ab1d6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/declaration/DeclarationPersonAttachmentJpaEntity.java @@ -0,0 +1,73 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.declaration; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import java.util.UUID; + +import static javax.persistence.GenerationType.SEQUENCE; + +@Entity +@Table(name = DeclarationPersonAttachmentJpaEntity.TABLE_NAME) +public class DeclarationPersonAttachmentJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "DECLARATION_PERSON_ATTACHMENTS"; + + private static final String SEQUENCE_NAME = "SEQ_DECL_PERS_ATTACHMENTS"; + + @Id + @Column(name = "DECLARATION_PERS_ATTACHMENT_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "UUID") + private UUID uuid; + + @JoinColumn(name = "DECLARATION_PERSON_ID") + @ManyToOne(fetch = FetchType.LAZY) + private DeclarationPersonJpaEntity declarationPerson; + + @Column(name = "FILE_NAME") + private String fileName; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public UUID getUuid() { + return uuid; + } + + public void setUuid(UUID uuid) { + this.uuid = uuid; + } + + public DeclarationPersonJpaEntity getDeclarationPerson() { + return declarationPerson; + } + + public void setDeclarationPerson(DeclarationPersonJpaEntity declarationPerson) { + this.declarationPerson = declarationPerson; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/declaration/DeclarationPersonJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/declaration/DeclarationPersonJpaEntity.java new file mode 100644 index 0000000..02d2b71 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/declaration/DeclarationPersonJpaEntity.java @@ -0,0 +1,218 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.declaration; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonJpaEntity; +import org.hibernate.annotations.Type; +import org.hibernate.envers.AuditOverride; +import org.hibernate.envers.Audited; +import org.hibernate.envers.NotAudited; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import java.util.LinkedList; +import java.util.List; + +import static javax.persistence.GenerationType.SEQUENCE; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@Table(name = DeclarationPersonJpaEntity.TABLE_NAME) +@AuditOverride(forClass = AbstractAuditableJpaEntity.class) +public class DeclarationPersonJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "DECLARATION_PERSON"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "DECLARATION_PERSON_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "PER_ID") + private PersonJpaEntity person; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "REL_PER_ID") + private PersonJpaEntity relative; + + @ManyToOne + @JoinColumn(name = "DECLARATION_ID") + private DeclarationJpaEntity declaration; + + @Column(name = "INS_ELIGIBILITY") + @Type(type = "yes_no") + private Boolean insEligible; + + @Column(name = "REM_ELIGIBILITY") + @Type(type = "yes_no") + private Boolean remEligible; + + @Column(name = "TUD_ELIGIBILITY") + @Type(type = "yes_no") + private Boolean tudEligible; + + @Column(name = "TUD_ELIGIBILITY_REASON") + private String tudEligibleReason; + + @Column(name = "DECLAREDPERSON") + @Type(type = "yes_no") + private Boolean declared; + + @Column(name = "REMARKS") + private String remarks; + + @Column(name = "TRP_CODE") + private String relation; + + @OneToMany(mappedBy = "declarationPerson", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) + @NotAudited + private List attachments = new LinkedList<>(); + + @Column(name = "CLAIM") + @Type(type = "yes_no") + private Boolean claim; + + @Column(name = "JOIN_RSTLMNT") + @Type(type = "yes_no") + private Boolean joiningResettlement; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public PersonJpaEntity getPerson() { + return person; + } + + public void setPerson(PersonJpaEntity person) { + this.person = person; + } + + public PersonJpaEntity getRelative() { + return relative; + } + + public void setRelative(PersonJpaEntity relative) { + this.relative = relative; + } + + public String getRelation() { + return relation; + } + + public void setRelation(String relation) { + this.relation = relation; + } + + public DeclarationJpaEntity getDeclaration() { + return declaration; + } + + public void setDeclaration(DeclarationJpaEntity declaration) { + this.declaration = declaration; + } + + public Boolean getInsEligible() { + return insEligible; + } + + public void setInsEligible(Boolean insEligible) { + this.insEligible = insEligible; + } + + public Boolean getRemEligible() { + return remEligible; + } + + public void setRemEligible(Boolean remEligible) { + this.remEligible = remEligible; + } + + public Boolean getTudEligible() { + return tudEligible; + } + + public void setTudEligible(Boolean tudEligible) { + this.tudEligible = tudEligible; + } + + public Boolean getDeclared() { + return declared; + } + + public void setDeclared(Boolean declared) { + this.declared = declared; + } + + public List getAttachments() { + return attachments; + } + + /** + * Please don't delete this and generate again is the mechanism to update the attachment with the latest ones + * + * + * + * + * @param attachments s + */ + public void setAttachments(List attachments) { + if (attachments != null) { + this.attachments.clear(); + this.attachments.addAll(attachments); + for (DeclarationPersonAttachmentJpaEntity attachment : this.attachments) + attachment.setDeclarationPerson(this); + } + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public Boolean getClaim() { + return claim; + } + + public void setClaim(Boolean claim) { + this.claim = claim; + } + + public Boolean getJoiningResettlement() { + return joiningResettlement; + } + + public void setJoiningResettlement(Boolean joiningResettlement) { + this.joiningResettlement = joiningResettlement; + } + + public String getTudEligibleReason() { + return tudEligibleReason; + } + + public void setTudEligibleReason(String tudEligibleReason) { + this.tudEligibleReason = tudEligibleReason; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/declaration/FamilyMemberJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/declaration/FamilyMemberJpaEntity.java new file mode 100644 index 0000000..326e9a7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/declaration/FamilyMemberJpaEntity.java @@ -0,0 +1,193 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.declaration; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Type; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.time.LocalDate; + +@Entity +@Table(name = FamilyMemberJpaEntity.TABLE_NAME) +public class FamilyMemberJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_FAMILY_MEMBERS"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "FAMILY_MEMBER_ID") + private String id; + + @Column(name = "PER_ID") + private Long perId; + + @Column(name = "SURNAME") + private String surname; + + @Column(name = "DATE_OF_BIRTH") + private LocalDate birthDate; + + @Column(name = "REL_SURNAME") + private String relSurname; + + @Column(name = "REL_FIRST_NAME") + private String relFirstName; + + @Column(name = "REL_DATE_OF_BIRTH") + private LocalDate relBirthDate; + + @Column(name = "REL_PER_ID") + private Long relPerId; + + @Column(name = "TRP_CODE") + private String relation; + + @Column(name = "CHILD_ALLOWANCE_GRANTED") + @Type(type = "yes_no") + private Boolean childAllowanceGranted; + + + @Column(name = "MORE_THAN_2_YEARS_OLD") + @Type(type = "yes_no") + private Boolean moreThan2YearsOld; + + @Column(name = "HOUSEHOLD_ALLOWANCE_GRANTED") + @Type(type = "yes_no") + private Boolean houseHoldAllowanceGranted; + + @Column(name = "RELATIVE_WORK_IN_DELEGATION") + @Type(type = "yes_no") + private Boolean relativeWorkInDelegation; + + @Column(name = "TRP_CD") + private Long trpCD; + + @Column(name = "RELATIVE_WORK_IN_HQ") + @Type(type = "yes_no") + private Boolean relativeWorkInHQ; + + + @Override + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Long getPerId() { + return perId; + } + + public void setPerId(Long perId) { + this.perId = perId; + } + + public String getSurname() { + return surname; + } + + public void setSurname(String surname) { + this.surname = surname; + } + + public LocalDate getBirthDate() { + return birthDate; + } + + public void setBirthDate(LocalDate birthDate) { + this.birthDate = birthDate; + } + + public String getRelSurname() { + return relSurname; + } + + public void setRelSurname(String relSurname) { + this.relSurname = relSurname; + } + + public String getRelFirstName() { + return relFirstName; + } + + public void setRelFirstName(String relFirstName) { + this.relFirstName = relFirstName; + } + + public LocalDate getRelBirthDate() { + return relBirthDate; + } + + public void setRelBirthDate(LocalDate relBirthDate) { + this.relBirthDate = relBirthDate; + } + + public Long getRelPerId() { + return relPerId; + } + + public void setRelPerId(Long relPerId) { + this.relPerId = relPerId; + } + + public String getRelation() { + return relation; + } + + public void setRelation(String relation) { + this.relation = relation; + } + + public Boolean getChildAllowanceGranted() { + return childAllowanceGranted; + } + + public void setChildAllowanceGranted(Boolean childAllowanceGranted) { + this.childAllowanceGranted = childAllowanceGranted; + } + + public Boolean getMoreThan2YearsOld() { + return moreThan2YearsOld; + } + + public void setMoreThan2YearsOld(Boolean moreThan2YearsOld) { + this.moreThan2YearsOld = moreThan2YearsOld; + } + + public Boolean getHouseHoldAllowanceGranted() { + return houseHoldAllowanceGranted; + } + + public void setHouseHoldAllowanceGranted(Boolean houseHoldAllowanceGranted) { + this.houseHoldAllowanceGranted = houseHoldAllowanceGranted; + } + + public Boolean getRelativeWorkInDelegation() { + return relativeWorkInDelegation; + } + + public void setRelativeWorkInDelegation(Boolean relativeWorkInDelegation) { + this.relativeWorkInDelegation = relativeWorkInDelegation; + } + + public Long getTrpCD() { + return trpCD; + } + + public void setTrpCD(Long trpCD) { + this.trpCD = trpCD; + } + + public Boolean getRelativeWorkInHQ() { + return relativeWorkInHQ; + } + + public void setRelativeWorkInHQ(Boolean relativeWorkInHQ) { + this.relativeWorkInHQ = relativeWorkInHQ; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/declaration/PersonBankInfoJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/declaration/PersonBankInfoJpaEntity.java new file mode 100644 index 0000000..6f28ca2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/declaration/PersonBankInfoJpaEntity.java @@ -0,0 +1,78 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.declaration; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; + +import static javax.persistence.GenerationType.SEQUENCE; + +@Getter +@Setter +@Entity +@Table(name = PersonBankInfoJpaEntity.TABLE_NAME) +public class PersonBankInfoJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "PERSONS_BANK_INFO"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + @Id + @Column(name = "PERSONS_BANK_INFO_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "PER_ID") + private Long perId; + + @Column(name = "LEF") + private String lef; + + @Column(name = "BAF") + private String baf; + + @Column(name = "LEGAL_ENTITY") + private String legalEntity; + + @Column(name = "IBAN_CODE") + private String ibanCode; + + @Column(name = "BANK_NAME") + private String bankName; + + @Column(name = "BANK_ACCOUNT_CODE") + private String bankAccountCode; + + @Column(name = "MAIN_BANK_ACCOUNT") + private Long mainBankAccount; + + @Column(name = "ACCOUNT_HOLDER") + private String accountHolder; + + @Column(name = "ACCOUNT_CURRENCY") + private String accountCurrency; + + @Column(name = "BUSINESS_PARTNER") + private String businessPartner; + + @Column(name = "BANK_IDENTIFICATION") + private String bankIdentification; + + + public String getIbanCode() { + String IBAN_TEST_VALUE = "BE12345678901234"; + String HIDDEN_IBAN_CODE = "***"; + if (HIDDEN_IBAN_CODE.equals(ibanCode)) + return IBAN_TEST_VALUE; + return ibanCode; + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/document/MovementDocAttachmentJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/document/MovementDocAttachmentJpaEntity.java new file mode 100644 index 0000000..4c53f88 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/document/MovementDocAttachmentJpaEntity.java @@ -0,0 +1,74 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.document; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.OneToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import java.util.UUID; + +import static javax.persistence.GenerationType.SEQUENCE; + +@Entity +@Table(name = MovementDocAttachmentJpaEntity.TABLE_NAME) +public class MovementDocAttachmentJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "MOVEMENT_DOCS_ATTACHMENTS"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + @Id + @Column(name = "MOVEMENT_DOCS_ATTACHMENT_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "UUID") + private UUID uuid; + + @JoinColumn(name = "MOVEMENT_DOCS_ID") + @OneToOne(fetch = FetchType.LAZY) + private MovementDocJpaEntity movementDoc; + + @Column(name = "FILE_NAME") + private String fileName; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public UUID getUuid() { + return uuid; + } + + public void setUuid(UUID uuid) { + this.uuid = uuid; + } + + public MovementDocJpaEntity getMovementDoc() { + return movementDoc; + } + + public void setMovementDoc(MovementDocJpaEntity movementDoc) { + this.movementDoc = movementDoc; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/document/MovementDocJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/document/MovementDocJpaEntity.java new file mode 100644 index 0000000..81204c1 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/document/MovementDocJpaEntity.java @@ -0,0 +1,124 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.document; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import org.hibernate.annotations.Type; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; + +import static javax.persistence.GenerationType.SEQUENCE; + +@Entity +@Table(name = MovementDocJpaEntity.TABLE_NAME) +public class MovementDocJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "MOVEMENT_DOCS"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "MOVEMENT_DOCS_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @JoinColumn(name = "MOVEMENT_DOC_SECTIONS_ID") + @ManyToOne(fetch = FetchType.LAZY) + private MovementDocSectionJpaEntity movementDocSection; + + @Column(name = "DESCRIPTION") + private String description; + + @Column(name = "LINK_TEXT") + private String linkText; + + @Column(name = "LINK") + @Type(type = "yes_no") + private Boolean link; + + @Column(name = "SORT_ORDER") + private Integer sortOrder; + + @OneToOne(mappedBy = "movementDoc", cascade = CascadeType.ALL, orphanRemoval = true) + private MovementDocAttachmentJpaEntity movementDocAttachment; + + @Column(name = "ENABLED") + @Type(type = "yes_no") + private Boolean enabled; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public MovementDocSectionJpaEntity getMovementDocSection() { + return movementDocSection; + } + + public void setMovementDocSection(MovementDocSectionJpaEntity movementDocSectionJpaEntity) { + this.movementDocSection = movementDocSectionJpaEntity; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getLinkText() { + return linkText; + } + + public void setLinkText(String link) { + this.linkText = link; + } + + public Boolean getLink() { + return link; + } + + public void setLink(Boolean hasLink) { + this.link = hasLink; + } + + public Integer getSortOrder() { + return sortOrder; + } + + public void setSortOrder(Integer order) { + this.sortOrder = order; + } + + public MovementDocAttachmentJpaEntity getMovementDocAttachment() { + return movementDocAttachment; + } + + public void setMovementDocAttachment(MovementDocAttachmentJpaEntity movementDocAttachment) { + this.movementDocAttachment = movementDocAttachment; + } + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/document/MovementDocSectionJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/document/MovementDocSectionJpaEntity.java new file mode 100644 index 0000000..c4373c6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/document/MovementDocSectionJpaEntity.java @@ -0,0 +1,125 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.document; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementContextJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementTypeJpaEntity; +import org.hibernate.annotations.Type; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.OrderBy; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import java.util.LinkedList; +import java.util.List; + +import static javax.persistence.GenerationType.SEQUENCE; + +@Entity +@Table(name = MovementDocSectionJpaEntity.TABLE_NAME) +public class MovementDocSectionJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "MOVEMENT_DOC_SECTIONS"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + @Id + @Column(name = "MOVEMENT_DOC_SECTIONS_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "DESCRIPTION") + private String descriptor; + + @JoinColumn(name = "MOVEMENT_TYPE_ID") + @ManyToOne(fetch = FetchType.LAZY) + private MovementTypeJpaEntity movementType; + + @JoinColumn(name = "MOVEMENT_CONTEXT_ID") + @ManyToOne(fetch = FetchType.LAZY) + private MovementContextJpaEntity movementContext; + + @Column(name = "HOD") + @Type(type = "yes_no") + private Boolean hod; + + + + @Column(name = "SORT_ORDER") + private Integer sortOrder; + + @OneToMany(fetch = FetchType.LAZY, mappedBy = "movementDocSection", cascade = CascadeType.ALL, orphanRemoval = true) + @OrderBy(value = "sortOrder ASC") + private List movementDocs = new LinkedList<>(); + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDescriptor() { + return descriptor; + } + + public void setDescriptor(String descriptor) { + this.descriptor = descriptor; + } + + public MovementTypeJpaEntity getMovementType() { + return movementType; + } + + public void setMovementType(MovementTypeJpaEntity movementType) { + this.movementType = movementType; + } + + public MovementContextJpaEntity getMovementContext() { + return movementContext; + } + + public void setMovementContext(MovementContextJpaEntity movementContext) { + this.movementContext = movementContext; + } + + public Boolean getHod() { + return hod; + } + + public void setHod(Boolean hod) { + this.hod = hod; + } + + + public Integer getSortOrder() { + return sortOrder; + } + + public void setSortOrder(Integer order) { + this.sortOrder = order; + } + + public List getMovementDocs() { + return movementDocs; + } + + public void setMovementDocs(List movementDocs) { + if (movementDocs != null) { + this.movementDocs.clear(); + this.movementDocs.addAll(movementDocs); + for (MovementDocJpaEntity doc : this.movementDocs) + doc.setMovementDocSection(this); + } + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementMaxCatJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementMaxCatJpaEntity.java new file mode 100644 index 0000000..d7e7fa3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementMaxCatJpaEntity.java @@ -0,0 +1,140 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode; +import org.hibernate.annotations.Type; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.FetchType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name = EntitlementMaxCatJpaEntity.TABLE_NAME) +public class EntitlementMaxCatJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "ENTITLMNT_MAXS_CAT"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "ENTITLMNT_MAX_CAT_ID") + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ENTITLMNT_TYPE_CAT_ID") + private EntitlementTypeCatJpaEntity entitlementTypeCat; + + @Column(name = "DESCRIPTION") + private String description; + + @Enumerated(EnumType.STRING) + @Column(name = "CODE") + private EntitlementMaxCatCode code; + + /* + * These two columns refer to availability of the type of Entitlement: + * Example: + * If NON_FAMILY_POSTING == TRUE then this type of Entitlement will be available + * if the fromJob or toJob are NON_FAMILY_POSTING a job. + */ + @Column(name = "NON_FAMILY_POSTING") + @Type(type = "yes_no") + private Boolean nonFamilyPosting; + + @Column(name = "JOBTO_NON_FAMILY_POSTING") + @Type(type = "yes_no") + private Boolean jobToNonFamilyPosting; + + @Column(name = "HOD") + @Type(type = "yes_no") + private Boolean hod; + /* + * + */ + + @Column(name = "SUGGESTION") + @Type(type = "yes_no") + private Boolean suggestion; + + @Column(name = "ENT_ORDER") + private Integer order; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public EntitlementTypeCatJpaEntity getEntitlementTypeCat() { + return entitlementTypeCat; + } + + public void setEntitlementTypeCat(EntitlementTypeCatJpaEntity entitlementTypeCat) { + this.entitlementTypeCat = entitlementTypeCat; + } + + public EntitlementMaxCatCode getCode() { + return code; + } + + public void setCode(EntitlementMaxCatCode code) { + this.code = code; + } + + public Boolean getNonFamilyPosting() { + return nonFamilyPosting; + } + + public void setNonFamilyPosting(Boolean nonFamilyPosting) { + this.nonFamilyPosting = nonFamilyPosting; + } + + public Boolean getHod() { + return hod; + } + + public void setHod(Boolean hod) { + this.hod = hod; + } + + public Boolean getSuggestion() { + return suggestion; + } + + public void setSuggestion(Boolean suggestion) { + this.suggestion = suggestion; + } + + public Integer getOrder() { + return order; + } + + public void setOrder(Integer order) { + this.order = order; + } + + public Boolean getJobToNonFamilyPosting() { + return jobToNonFamilyPosting; + } + + public void setJobToNonFamilyPosting(Boolean jobToNonFamilyPosting) { + this.jobToNonFamilyPosting = jobToNonFamilyPosting; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementMaxDefaultJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementMaxDefaultJpaEntity.java new file mode 100644 index 0000000..7469ce3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementMaxDefaultJpaEntity.java @@ -0,0 +1,158 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.ananke.core.data.provider.jpa.TypeDefinition; +import org.hibernate.annotations.Columns; +import org.hibernate.annotations.Type; +import org.javamoney.moneta.Money; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import java.math.BigDecimal; +import java.time.LocalDate; + +import static javax.persistence.GenerationType.SEQUENCE; + +@Entity +@Table(name = EntitlementMaxDefaultJpaEntity.TABLE_NAME) +public class EntitlementMaxDefaultJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "ENTITLMNT_MAXS_DEFAULT"; + + private static final String SEQUENCE_NAME = "SEQ_ENTITLMNT_MAX_DEFAULT"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "ENTITLMNT_MAX_DEFAULT_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "CITY_CODE_TO") + private String cityCodeTo; + + @Column(name = "CITY_CODE_FROM") + private String cityCodeFrom; + + @Column(name = "COUNTRY_CODE_TO") + private String countryCodeTo; + + @Column(name = "COUNTRY_CODE_FROM") + private String countryCodeFrom; + + @Columns(columns = {@Column(name = "CURRENCY"), + @Column(name = "AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money amount; + + @Column(name = "START_DATE") + private LocalDate startDate; + + @Column(name = "ENTITLMNT_MAX_CAT_ID") + private Long entitlementMaxCatId; + + @Column(name = "LATEST") + @Type(type = "yes_no") + private Boolean latest; + + @Column(name = "KG") + private BigDecimal kg; + + @Column(name = "SOURCE_DATA") + private String sourceData; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCityCodeTo() { + return cityCodeTo; + } + + public void setCityCodeTo(String cityCodeTo) { + this.cityCodeTo = cityCodeTo; + } + + public String getCityCodeFrom() { + return cityCodeFrom; + } + + public void setCityCodeFrom(String cityCodeFrom) { + this.cityCodeFrom = cityCodeFrom; + } + + public String getCountryCodeTo() { + return countryCodeTo; + } + + public void setCountryCodeTo(String countryCodeTo) { + this.countryCodeTo = countryCodeTo; + } + + public String getCountryCodeFrom() { + return countryCodeFrom; + } + + public void setCountryCodeFrom(String countryCodeFrom) { + this.countryCodeFrom = countryCodeFrom; + } + + public Money getAmount() { + return amount; + } + + public void setAmount(Money amount) { + this.amount = amount; + } + + public LocalDate getStartDate() { + return startDate; + } + + public void setStartDate(LocalDate startDateRange) { + this.startDate = startDateRange; + } + + public Long getEntitlementMaxCatId() { + return entitlementMaxCatId; + } + + public void setEntitlementMaxCatId(Long entitlementMaxCatId) { + this.entitlementMaxCatId = entitlementMaxCatId; + } + + public Boolean getLatest() { + return latest; + } + + public void setLatest(Boolean latest) { + this.latest = latest; + } + + public BigDecimal getKg() { + return kg; + } + + public void setKg(BigDecimal kg) { + this.kg = kg; + } + + public String getSourceData() { + return sourceData; + } + + public void setSourceData(String sourceData) { + this.sourceData = sourceData; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementMaxJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementMaxJpaEntity.java new file mode 100644 index 0000000..663f73b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementMaxJpaEntity.java @@ -0,0 +1,250 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.ananke.core.data.provider.jpa.TypeDefinition; +import eu.europa.eeas.erights.common.data.jpa.entity.CityJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.CountryJpaEntity; +import eu.europa.eeas.erights.common.tools.entitlements.FlatRateDuplicator; +import org.hibernate.annotations.Columns; +import org.hibernate.annotations.Type; +import org.hibernate.envers.AuditOverride; +import org.hibernate.envers.Audited; +import org.javamoney.moneta.Money; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import java.math.BigDecimal; +import java.time.LocalDate; + +import static javax.persistence.GenerationType.SEQUENCE; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@Table(name = EntitlementMaxJpaEntity.TABLE_NAME) +@AuditOverride(forClass = AbstractAuditableJpaEntity.class) +public class EntitlementMaxJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "ENTITLMNT_MAXS"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "ENTITLMNT_MAX_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ENTITLMNT_TYPE_ID") + private EntitlementTypeJpaEntity entitlementType; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ENTITLMNT_TYPE_CAT_ID") + private EntitlementTypeCatJpaEntity entitlementTypeCat; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ENTITLMNT_MAX_CAT_ID") + private EntitlementMaxCatJpaEntity entitlementMaxCat; + + @Columns(columns = {@Column(name = "MAX_CURRENCY"), + @Column(name = "MAX_VALUE") + }) + @Type(type = TypeDefinition.MONEY) + private Money maxValue; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ENTITLMNT_MAX_OPTIONS_ID") + private EntitlementMaxOptionJpaEntity entitlementMaxOption; + + @Column(name = "FLAT_RATE_DUPLICATOR") + @Enumerated(EnumType.STRING) + private FlatRateDuplicator flatRateDuplicator; + + @Column(name = "COMMENTS") + private String comments; + + @Column(name = "ENABLE") + @Type(type = "yes_no") + private Boolean enable; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "COUNTRY") + private CountryJpaEntity country; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "CITY") + private CityJpaEntity city; + + + @Column(name = "IATA_FROM") + private String iataFrom; + + @Column(name = "IATA_TO") + private String iataTo; + + + @Column(name = "MAX_VOLUME") + private BigDecimal maxVolume; + + @Column(name = "MAX_KG") + private BigDecimal maxKg; + + @Column(name = "START_DATE") + private LocalDate startDate; + + @Column(name = "RATE_YEAR") + private Long rateYear; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public EntitlementTypeJpaEntity getEntitlementType() { + return entitlementType; + } + + public void setEntitlementType(EntitlementTypeJpaEntity entitlementType) { + this.entitlementType = entitlementType; + } + + public EntitlementTypeCatJpaEntity getEntitlementTypeCat() { + return entitlementTypeCat; + } + + public void setEntitlementTypeCat(EntitlementTypeCatJpaEntity entitlementTypeCat) { + this.entitlementTypeCat = entitlementTypeCat; + } + + public EntitlementMaxCatJpaEntity getEntitlementMaxCat() { + return entitlementMaxCat; + } + + public void setEntitlementMaxCat(EntitlementMaxCatJpaEntity entitlementMaxCat) { + this.entitlementMaxCat = entitlementMaxCat; + } + + public Money getMaxValue() { + return maxValue; + } + + public void setMaxValue(Money maxValue) { + this.maxValue = maxValue; + } + + public EntitlementMaxOptionJpaEntity getEntitlementMaxOption() { + return entitlementMaxOption; + } + + public void setEntitlementMaxOption(EntitlementMaxOptionJpaEntity entitlementMaxOption) { + this.entitlementMaxOption = entitlementMaxOption; + } + + public FlatRateDuplicator getFlatRateDuplicator() { + return flatRateDuplicator; + } + + public void setFlatRateDuplicator(FlatRateDuplicator flatRateDuplicator) { + this.flatRateDuplicator = flatRateDuplicator; + } + + public String getComments() { + return comments; + } + + public void setComments(String comments) { + this.comments = comments; + } + + public Boolean getEnable() { + return enable; + } + + public void setEnable(Boolean enable) { + this.enable = enable; + } + + public CountryJpaEntity getCountry() { + return country; + } + + public void setCountry(CountryJpaEntity country) { + this.country = country; + } + + public CityJpaEntity getCity() { + return city; + } + + public void setCity(CityJpaEntity city) { + this.city = city; + } + + public BigDecimal getMaxVolume() { + return maxVolume; + } + + public void setMaxVolume(BigDecimal maxVolume) { + this.maxVolume = maxVolume; + } + + public BigDecimal getMaxKg() { + return maxKg; + } + + public void setMaxKg(BigDecimal maxKg) { + this.maxKg = maxKg; + } + + public LocalDate getStartDate() { + return startDate; + } + + public void setStartDate(LocalDate startDate) { + this.startDate = startDate; + } + + public Long getRateYear() { + return rateYear; + } + + public void setRateYear(Long rateYear) { + this.rateYear = rateYear; + } + + public String getIataFrom() { + return iataFrom; + } + + public void setIataFrom(String iataFrom) { + this.iataFrom = iataFrom; + } + + public String getIataTo() { + return iataTo; + } + + public void setIataTo(String iataTo) { + this.iataTo = iataTo; + } + + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementMaxOptionJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementMaxOptionJpaEntity.java new file mode 100644 index 0000000..c7ade4e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementMaxOptionJpaEntity.java @@ -0,0 +1,78 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name = EntitlementMaxOptionJpaEntity.TABLE_NAME) +public class EntitlementMaxOptionJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "ENTITLMNT_MAXS_OPTIONS"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "ENTITLMNT_MAX_OPTIONS_ID") + private Long id; + + @Column(name = "DESCRIPTION") + private String description; + + @Column(name = "VALUE_NUMBER") + private Long valueNumber; + + @Column(name = "VALUE_STRING") + private String valueString; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ENTITLMNT_MAX_CAT_ID") + private EntitlementMaxCatJpaEntity entitlementMaxCat; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Long getValueNumber() { + return valueNumber; + } + + public void setValueNumber(Long valueNumber) { + this.valueNumber = valueNumber; + } + + public String getValueString() { + return valueString; + } + + public void setValueString(String valueString) { + this.valueString = valueString; + } + + public EntitlementMaxCatJpaEntity getEntitlementMaxCat() { + return entitlementMaxCat; + } + + public void setEntitlementMaxCat(EntitlementMaxCatJpaEntity entitlementMaxCat) { + this.entitlementMaxCat = entitlementMaxCat; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementTypeCatJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementTypeCatJpaEntity.java new file mode 100644 index 0000000..df1ff9a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementTypeCatJpaEntity.java @@ -0,0 +1,94 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; +import org.hibernate.annotations.Type; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.FetchType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; +import java.util.List; + +@Entity +@Table(name = EntitlementTypeCatJpaEntity.TABLE_NAME) +public class EntitlementTypeCatJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "ENTITLMNT_TYPES_CAT"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "ENTITLMNT_TYPE_CAT_ID") + private Long id; + + @Column(name = "DESCRIPTION") + private String description; + + @Column(name = "MF_TYPE") + @Type(type = "yes_no") + private Boolean mfType; + + @OneToMany(fetch = FetchType.LAZY, mappedBy = "entitlementTypeCat") + private List entitlementMaxCatList; + + @Enumerated(EnumType.STRING) + @Column(name = "CODE") + private EntitlementTypeCatCode code; + + @Column(name = "ENT_ORDER") + private Integer order; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public List getEntitlementMaxCatList() { + return entitlementMaxCatList; + } + + public void setEntitlementMaxCatList(List entitlementMaxsCat) { + this.entitlementMaxCatList = entitlementMaxsCat; + } + + public Boolean getMfType() { + return mfType; + } + + public void setMfType(Boolean mfType) { + this.mfType = mfType; + } + + public EntitlementTypeCatCode getCode() { + return code; + } + + public void setCode(EntitlementTypeCatCode code) { + this.code = code; + } + + public Integer getOrder() { + return order; + } + + public void setOrder(Integer order) { + this.order = order; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementTypeDefaultJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementTypeDefaultJpaEntity.java new file mode 100644 index 0000000..ce76fd6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementTypeDefaultJpaEntity.java @@ -0,0 +1,65 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name = EntitlementTypeDefaultJpaEntity.TABLE_NAME) +public class EntitlementTypeDefaultJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "ENTITLMNT_TYPES_DEFAULT"; + + @Id + @Column(name = "ENTITLMNT_TYPE_DEFAULT_ID") + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ENTITLMNT_TYPE_CAT_ID") + private EntitlementTypeCatJpaEntity entitlementTypeCat; + + @Column(name = "MOVEMENT_TYPE_ID") + private Long movementTypeId; + + @Column(name = "DESCRIPTION") + private String description; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public EntitlementTypeCatJpaEntity getEntitlementTypeCat() { + return entitlementTypeCat; + } + + public void setEntitlementTypeCat(EntitlementTypeCatJpaEntity entitlementCat) { + this.entitlementTypeCat = entitlementCat; + } + + public Long getMovementTypeId() { + return movementTypeId; + } + + public void setMovementTypeId(Long movementTypeId) { + this.movementTypeId = movementTypeId; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementTypeJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementTypeJpaEntity.java new file mode 100644 index 0000000..9de855d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/EntitlementTypeJpaEntity.java @@ -0,0 +1,162 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementTypeJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestJpaEntity; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeStatus; +import org.hibernate.annotations.Type; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import java.util.LinkedList; +import java.util.List; + +import static javax.persistence.GenerationType.SEQUENCE; + +@Entity +@Table(name = EntitlementTypeJpaEntity.TABLE_NAME) +public class EntitlementTypeJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "ENTITLMNT_TYPES"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "ENTITLMNT_TYPE_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ENTITLMNT_TYPE_CATG_ID") + private EntitlementTypeCatJpaEntity entitlementTypeCat; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "MOVEMENT_FILE_ID") + private MovementFileJpaEntity movementFile; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "MOVEMENT_TYPE_ID") + private MovementTypeJpaEntity movementType; + + @OneToMany(mappedBy = "entitlementType", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true) + private List entitlementMaxList = new LinkedList<>(); + + @Column(name = "STATUS") + @Enumerated(EnumType.STRING) + private EntitlementTypeStatus status; + + @Column(name = "DISABLE_REASON") + private String disableReason; + + @Column(name = "ENT_TYPE_DEFAULT") + @Type(type = "yes_no") + private Boolean defaultEntType; + + @Column(name = "ENABLE") + @Type(type = "yes_no") + private Boolean enable; + + @OneToMany(mappedBy = "entitlementType", fetch = FetchType.LAZY) + private List requests; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public EntitlementTypeCatJpaEntity getEntitlementTypeCat() { + return entitlementTypeCat; + } + + public void setEntitlementTypeCat(EntitlementTypeCatJpaEntity entitlementTypeCat) { + this.entitlementTypeCat = entitlementTypeCat; + } + + public MovementFileJpaEntity getMovementFile() { + return movementFile; + } + + public void setMovementFile(MovementFileJpaEntity movementFile) { + this.movementFile = movementFile; + } + + public MovementTypeJpaEntity getMovementType() { + return movementType; + } + + public void setMovementType(MovementTypeJpaEntity movementType) { + this.movementType = movementType; + } + + public List getEntitlementMaxList() { + return entitlementMaxList; + } + + public void setEntitlementMaxList(List entitlementMaxList) { + if (entitlementMaxList != null) { + this.entitlementMaxList.clear(); + this.entitlementMaxList.addAll(entitlementMaxList); + for (EntitlementMaxJpaEntity max : this.entitlementMaxList) + max.setEntitlementType(this); + } + } + + public EntitlementTypeStatus getStatus() { + return status; + } + + public void setStatus(EntitlementTypeStatus status) { + this.status = status; + } + + public String getDisableReason() { + return disableReason; + } + + public void setDisableReason(String disableReason) { + this.disableReason = disableReason; + } + + public Boolean getDefaultEntType() { + return defaultEntType; + } + + public void setDefaultEntType(Boolean defaultEntType) { + this.defaultEntType = defaultEntType; + } + + public Boolean getEnable() { + return enable; + } + + public void setEnable(Boolean enable) { + this.enable = enable; + } + + public List getRequests() { + return requests; + } + + public void setRequests(List requests) { + this.requests = requests; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/GosselinMockId.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/GosselinMockId.java new file mode 100644 index 0000000..057fa83 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/GosselinMockId.java @@ -0,0 +1,66 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement; + +import javax.persistence.Column; +import javax.persistence.Embeddable; +import java.io.Serializable; +import java.math.BigInteger; + +@Embeddable +public class GosselinMockId implements Serializable { + + @Column(name = "YEAR") + private Long year; + + @Column(name = "CITY_TO") + private String cityTo; + + @Column(name = "CITY_FROM") + private String cityFrom; + + @Column(name = "TYPE") + private String type; + + @Column(name = "KG") + private BigInteger kg; + + public Long getYear() { + return year; + } + + public void setYear(Long year) { + this.year = year; + } + + public String getCityTo() { + return cityTo; + } + + public void setCityTo(String cityTo) { + this.cityTo = cityTo; + } + + public String getCityFrom() { + return cityFrom; + } + + public void setCityFrom(String cityFrom) { + this.cityFrom = cityFrom; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public BigInteger getKg() { + return kg; + } + + public void setKg(BigInteger kg) { + this.kg = kg; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/GosselinMockJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/GosselinMockJpaEntity.java new file mode 100644 index 0000000..7e20dc4 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/GosselinMockJpaEntity.java @@ -0,0 +1,64 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; + +import javax.persistence.Column; +import javax.persistence.EmbeddedId; +import javax.persistence.Entity; +import javax.persistence.Table; +import java.math.BigDecimal; +import java.math.BigInteger; + +@Entity +@Table(name = GosselinMockJpaEntity.TABLE_NAME) +public class GosselinMockJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "GOSSELIN_MOCK"; + + private static final long serialVersionUID = 1L; + + @EmbeddedId + private GosselinMockId id; + + @Column(name = "AMOUNT") + private BigDecimal amount; + + @Column(name = "LIMIT_CALLS") + private Integer limitCalls; + + @Column(name = "CURRENT_CALLS") + private Integer currentCalls; + + @Override + public GosselinMockId getId() { + return id; + } + + public void setId(GosselinMockId id) { + this.id = id; + } + + public BigDecimal getAmount() { + return amount; + } + + public void setAmount(BigDecimal amount) { + this.amount = amount; + } + + public Integer getLimitCalls() { + return limitCalls; + } + + public void setLimitCalls(Integer limitCalls) { + this.limitCalls = limitCalls; + } + + public Integer getCurrentCalls() { + return currentCalls; + } + + public void setCurrentCalls(Integer currentCalls) { + this.currentCalls = currentCalls; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/RateMissingJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/RateMissingJpaEntity.java new file mode 100644 index 0000000..03d3799 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/RateMissingJpaEntity.java @@ -0,0 +1,177 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Type; + +import javax.persistence.*; + +import java.math.BigInteger; +import java.time.LocalDateTime; +import java.time.LocalDate; + +import static javax.persistence.GenerationType.SEQUENCE; + +@Entity +@Table(name = RateMissingJpaEntity.TABLE_NAME) +public class RateMissingJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "RATES_MISSING"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = TABLE_NAME + "_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "YEAR") + private String year; + + @Column(name = "CITY_CODE_TO") + private String cityCodeTo; + + @Column(name = "CITY_CODE_FROM") + private String cityCodeFrom; + + @Column(name = "COUNTRY_CODE_TO") + private String countryCodeTo; + + @Column(name = "COUNTRY_CODE_FROM") + private String countryCodeFrom; + + @Column(name = "ENTITLMNT_MAX_CAT_ID") + private Long entitlementMaxCatId; + + @Column(name = "KG") + private BigInteger kg; + + @Column(name = "RATE_TYPE") + private String rateType; + + @Column(name = "RECEIVED") + @Type(type = "yes_no") + private Boolean received; + + @Column(name = "RECEIVED_DATE") + private LocalDateTime receivedDate; + + @Column(name = "START_DATE") + private LocalDate startDate; + + @Column(name = "ERROR_MESSAGE") + private String errorMessage; + + @Column(name = "MOVE_DATE") + private LocalDate moveDate; + + public Long getId() { + return id; + } + + public String getYear() { + return year; + } + + public void setYear(String year) { + this.year = year; + } + + public String getCityCodeTo() { + return cityCodeTo; + } + + public void setCityCodeTo(String cityCodeTo) { + this.cityCodeTo = cityCodeTo; + } + + public String getCityCodeFrom() { + return cityCodeFrom; + } + + public void setCityCodeFrom(String cityCodeFrom) { + this.cityCodeFrom = cityCodeFrom; + } + + public String getCountryCodeTo() { + return countryCodeTo; + } + + public void setCountryCodeTo(String countryCodeTo) { + this.countryCodeTo = countryCodeTo; + } + + public String getCountryCodeFrom() { + return countryCodeFrom; + } + + public void setCountryCodeFrom(String countryCodeFrom) { + this.countryCodeFrom = countryCodeFrom; + } + + public Long getEntitlementMaxCatId() { + return entitlementMaxCatId; + } + + public void setEntitlementMaxCatId(Long entitlementMaxCatId) { + this.entitlementMaxCatId = entitlementMaxCatId; + } + + public BigInteger getKg() { + return kg; + } + + public void setKg(BigInteger kg) { + this.kg = kg; + } + + public String getRateType() { + return rateType; + } + + public void setRateType(String rateType) { + this.rateType = rateType; + } + + public Boolean getReceived() { + return received; + } + + public void setReceived(Boolean received) { + this.received = received; + } + + public LocalDateTime getReceivedDate() { + return receivedDate; + } + + public void setReceivedDate(LocalDateTime receivedDate) { + this.receivedDate = receivedDate; + } + + public LocalDate getStartDate() { + return startDate; + } + + public void setStartDate(LocalDate startDate) { + this.startDate = startDate; + } + + public String getErrorMessage() { + return errorMessage; + } + + public void setErrorMessage(String errorMessage) { + this.errorMessage = errorMessage; + } + + public LocalDate getMoveDate() { + return moveDate; + } + + public void setMoveDate(LocalDate moveDate) { + this.moveDate = moveDate; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/RequestIndemnityJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/RequestIndemnityJpaEntity.java new file mode 100644 index 0000000..f0b686f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/RequestIndemnityJpaEntity.java @@ -0,0 +1,76 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement; + +import static javax.persistence.GenerationType.SEQUENCE; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import java.time.Month; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Type; +import org.hibernate.envers.AuditOverride; +import org.hibernate.envers.Audited; + +@Entity +@Table(name = RequestIndemnityJpaEntity.TABLE_NAME) +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@AuditOverride(forClass = AbstractAuditableJpaEntity.class) +@Audited(targetAuditMode = NOT_AUDITED) +public class RequestIndemnityJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "REQUEST_INDEMNITIES"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + @Id + @Column(name = "indemnity_id") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "indemnity_number") + private Integer number; + + @Column(name = "indemnity_type") + private String type; + + @Column(name = "unit") + private String unit; + + @Column(name = "origin_period_year") + private Integer originPeriodYear; + + @Column(name = "origin_period_month") + @Enumerated(EnumType.STRING) + private Month originPeriodMonth; + + @Column(name = "payment_period_year") + private Integer paymentPeriodYear; + + @Column(name = "payment_period_month") + @Enumerated(EnumType.STRING) + private Month paymentPeriodMonth; + + @Column(name = "indemnity_comment") + private String comment; + + @Column(name = "request_id") + private Long requestId; + + @Column(name = "hoa_email_flag") + @Type(type = "yes_no") + private Boolean hoaEmailFlag; +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/AdvanceRequestJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/AdvanceRequestJpaEntity.java new file mode 100644 index 0000000..a4ffdc9 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/AdvanceRequestJpaEntity.java @@ -0,0 +1,114 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request; + +import eu.europa.eeas.ananke.core.data.provider.jpa.TypeDefinition; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestState; +import org.hibernate.annotations.Columns; +import org.hibernate.annotations.Type; +import org.hibernate.envers.Audited; +import org.javamoney.moneta.Money; + +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; + +import java.time.LocalDate; + +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@DiscriminatorValue(value = "AdvanceRequest") +public class AdvanceRequestJpaEntity extends RequestJpaEntity { + + @Columns(columns = {@Column(name = "SURFACE_CURRENCY"), + @Column(name = "SURFACE_RATE") + }) + @Type(type = TypeDefinition.MONEY) + private Money surfaceRate; + + @Columns(columns = {@Column(name = "CAR_CURRENCY"), + @Column(name = "CAR_RATE") + }) + @Type(type = TypeDefinition.MONEY) + private Money carRate; + + @Columns(columns = {@Column(name = "AIRFREIGHT_CURRENCY"), + @Column(name = "AIRFREIGHT_RATE") + }) + @Type(type = TypeDefinition.MONEY) + private Money airfreightRate; + + @Columns(columns = {@Column(name = "STORAGE_CURRENCY"), + @Column(name = "STORAGE_RATE") + }) + @Type(type = TypeDefinition.MONEY) + private Money storageRate; + + @Column(name = "REQUEST_OPTION") + private String requestOption; + + @Enumerated(EnumType.STRING) + @Column(name = "STATE") + private AdvanceRequestState state; + + @Column(name = "DRAFT_TO_AWAITING_DATE") + private LocalDate draftToAwaitingDate; + + public Money getSurfaceRate() { + return surfaceRate; + } + + public void setSurfaceRate(Money surfaceRate) { + this.surfaceRate = surfaceRate; + } + + public Money getCarRate() { + return carRate; + } + + public void setCarRate(Money carRate) { + this.carRate = carRate; + } + + public Money getAirfreightRate() { + return airfreightRate; + } + + public void setAirfreightRate(Money airfreightRate) { + this.airfreightRate = airfreightRate; + } + + public Money getStorageRate() { + return storageRate; + } + + public void setStorageRate(Money storageRate) { + this.storageRate = storageRate; + } + + public String getRequestOption() { + return requestOption; + } + + public void setRequestOption(String requestOption) { + this.requestOption = requestOption; + } + + public AdvanceRequestState getState() { + return state; + } + + public void setState(AdvanceRequestState state) { + this.state = state; + } + + public LocalDate getDraftToAwaitingDate() { + return draftToAwaitingDate; + } + + public void setDraftToAwaitingDate(LocalDate draftToAwaitingDate) { + this.draftToAwaitingDate = draftToAwaitingDate; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/ClearingRequestJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/ClearingRequestJpaEntity.java new file mode 100644 index 0000000..33a9716 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/ClearingRequestJpaEntity.java @@ -0,0 +1,114 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request; + +import eu.europa.eeas.ananke.core.data.provider.jpa.TypeDefinition; +import eu.europa.eeas.erights.common.tools.statemachine.ClearingRequestState; +import org.hibernate.annotations.Columns; +import org.hibernate.annotations.Type; +import org.hibernate.envers.Audited; +import org.javamoney.moneta.Money; + +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; + +import java.time.LocalDate; + +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@DiscriminatorValue(value = "ClearingRequest") +public class ClearingRequestJpaEntity extends RequestJpaEntity { + + @Columns(columns = {@Column(name = "SURFACE_CURRENCY"), + @Column(name = "SURFACE_RATE") + }) + @Type(type = TypeDefinition.MONEY) + private Money surfaceRate; + + @Columns(columns = {@Column(name = "CAR_CURRENCY"), + @Column(name = "CAR_RATE") + }) + @Type(type = TypeDefinition.MONEY) + private Money carRate; + + @Columns(columns = {@Column(name = "AIRFREIGHT_CURRENCY"), + @Column(name = "AIRFREIGHT_RATE") + }) + @Type(type = TypeDefinition.MONEY) + private Money airfreightRate; + + @Columns(columns = {@Column(name = "STORAGE_CURRENCY"), + @Column(name = "STORAGE_RATE") + }) + @Type(type = TypeDefinition.MONEY) + private Money storageRate; + + @Column(name = "REQUEST_OPTION") + private String requestOption; + + @Enumerated(EnumType.STRING) + @Column(name = "STATE") + private ClearingRequestState state; + + @Column(name = "DRAFT_TO_AWAITING_DATE") + private LocalDate draftToAwaitingDate; + + public Money getSurfaceRate() { + return surfaceRate; + } + + public void setSurfaceRate(Money surfaceRate) { + this.surfaceRate = surfaceRate; + } + + public Money getCarRate() { + return carRate; + } + + public void setCarRate(Money carRate) { + this.carRate = carRate; + } + + public Money getAirfreightRate() { + return airfreightRate; + } + + public void setAirfreightRate(Money airfreightRate) { + this.airfreightRate = airfreightRate; + } + + public Money getStorageRate() { + return storageRate; + } + + public void setStorageRate(Money storageRate) { + this.storageRate = storageRate; + } + + public String getRequestOption() { + return requestOption; + } + + public void setRequestOption(String requestOption) { + this.requestOption = requestOption; + } + + public ClearingRequestState getState() { + return state; + } + + public void setState(ClearingRequestState state) { + this.state = state; + } + + public LocalDate getDraftToAwaitingDate() { + return draftToAwaitingDate; + } + + public void setDraftToAwaitingDate(LocalDate draftToAwaitingDate) { + this.draftToAwaitingDate = draftToAwaitingDate; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/InstallationRequestJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/InstallationRequestJpaEntity.java new file mode 100644 index 0000000..8f48997 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/InstallationRequestJpaEntity.java @@ -0,0 +1,31 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request; + +import eu.europa.eeas.erights.common.tools.statemachine.InstallationState; +import org.hibernate.envers.Audited; + +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; + +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +@Entity +@Audited(targetAuditMode = NOT_AUDITED) + +@DiscriminatorValue(value = "InstallationRequest") +public class InstallationRequestJpaEntity extends RequestJpaEntity { + + @Enumerated(EnumType.STRING) + @Column(name = "STATE") + private InstallationState state; + + public InstallationState getState() { + return state; + } + + public void setState(InstallationState state) { + this.state = state; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestDetailAttachmentJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestDetailAttachmentJpaEntity.java new file mode 100644 index 0000000..37badb9 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestDetailAttachmentJpaEntity.java @@ -0,0 +1,84 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request; + +import static javax.persistence.GenerationType.SEQUENCE; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import java.util.UUID; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; + +@Entity +@Table(name = RequestDetailAttachmentJpaEntity.TABLE_NAME) +public class RequestDetailAttachmentJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "REQUEST_DETAIL_ATTACHMENTS"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + @Id + @Column(name = "REQUEST_DETAIL_ATTACHMENT_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "UUID") + private UUID uuid; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "REQUEST_DETAIL_ID") + private RequestDetailJpaEntity requestDetail; + + @Column(name = "REQUEST_DETAIL_ATTACHMENT_TYPE") + private String attachmentType; + + @Column(name = "FILE_NAME") + private String fileName; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public UUID getUuid() { + return uuid; + } + + public void setUuid(UUID uuid) { + this.uuid = uuid; + } + + public RequestDetailJpaEntity getRequestDetail() { + return requestDetail; + } + + public void setRequestDetail(RequestDetailJpaEntity requestDetail) { + this.requestDetail = requestDetail; + } + + public String getAttachmentType() { + return attachmentType; + } + + public void setAttachmentType(String attachmentType) { + this.attachmentType = attachmentType; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestDetailJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestDetailJpaEntity.java new file mode 100644 index 0000000..f903e65 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestDetailJpaEntity.java @@ -0,0 +1,278 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.ananke.core.data.provider.jpa.TypeDefinition; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxCatJpaEntity; +import org.hibernate.annotations.Columns; +import org.hibernate.annotations.Type; +import org.hibernate.envers.Audited; +import org.hibernate.envers.NotAudited; +import org.javamoney.moneta.Money; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.LinkedList; +import java.util.List; + +import static javax.persistence.GenerationType.SEQUENCE; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@Table(name = RequestDetailJpaEntity.TABLE_NAME) +public class RequestDetailJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "REQUEST_DETAILS"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + @Id + @Column(name = "REQUEST_DETAIL_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "REQUEST_ID") + private RequestJpaEntity request; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ENTITLMNT_MAX_CAT_ID") + private EntitlementMaxCatJpaEntity entitlementMaxCat; + + @Column(name = "REQUEST_DETAIL_TYPE") + private String detailType; + + @Column(name = "REQUEST_DETAIL_TYPE_ORDER") + private Long detailTypeOrder; + + @Column(name = "VOLUMEN") + private BigDecimal volume; + + @Column(name = "INSURANCE_RATE") + private BigDecimal insuranceRate; + + @Column(name = "WEIGHT") + private BigDecimal weight; + + @Columns(columns = {@Column(name = "VALUE_GOODS_CURRENCY"), + @Column(name = "VALUE_GOODS") + }) + @Type(type = TypeDefinition.MONEY) + private Money goodsValue; + + @Columns(columns = {@Column(name = "PROFORMA_CURRENCY"), + @Column(name = "PROFORMA") + }) + @Type(type = TypeDefinition.MONEY) + private Money proforma; + + @Columns(columns = {@Column(name = "INVOICE_CURRENCY"), + @Column(name = "INVOICE") + }) + @Type(type = TypeDefinition.MONEY) + private Money invoice; + + @Columns(columns = {@Column(name = "AMOUNT_CURRENCY"), + @Column(name = "AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money amount; + + @NotAudited + @OneToMany(mappedBy = "requestDetail", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true) + private List attachments = new LinkedList<>(); + + @Column(name = "EXCHANGE_RATE") + private BigDecimal exchangeRate; + + @Column(name = "EXCHANGE_START_DATE") + private LocalDate exchangeRateStartDate; + + @Column(name = "EXCHANE_CURRENCY") + private String exchangeRateCurrency; + + @Column(name = "EXCHANGE_PAY_MONTH") + private String exchangePayMonth; + + @Column(name = "EXTRA_REQUEST_DETAIL") + @Type(type = "yes_no") + private Boolean extraDetail; + + @Column(name = "JUSTIFICATION") + private String justification; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public RequestJpaEntity getRequest() { + return request; + } + + public void setRequest(RequestJpaEntity request) { + this.request = request; + } + + public EntitlementMaxCatJpaEntity getEntitlementMaxCat() { + return entitlementMaxCat; + } + + public void setEntitlementMaxCat(EntitlementMaxCatJpaEntity entitlementMaxCat) { + this.entitlementMaxCat = entitlementMaxCat; + } + + public String getDetailType() { + return detailType; + } + + public void setDetailType(String detailType) { + this.detailType = detailType; + } + + public BigDecimal getVolume() { + return volume; + } + + public void setVolume(BigDecimal volume) { + this.volume = volume; + } + + public BigDecimal getInsuranceRate() { + return insuranceRate; + } + + public void setInsuranceRate(BigDecimal insuranceRate) { + this.insuranceRate = insuranceRate; + } + + public BigDecimal getWeight() { + return weight; + } + + public void setWeight(BigDecimal weight) { + this.weight = weight; + } + + public Money getGoodsValue() { + return goodsValue; + } + + public void setGoodsValue(Money goodsValue) { + this.goodsValue = goodsValue; + } + + public Money getProforma() { + return proforma; + } + + public void setProforma(Money proforma) { + this.proforma = proforma; + } + + public Money getInvoice() { + return invoice; + } + + public void setInvoice(Money invoice) { + this.invoice = invoice; + } + + public Money getAmount() { + return amount; + } + + public void setAmount(Money amount) { + this.amount = amount; + } + + public List getAttachments() { + return attachments; + } + + /** + * Please don't delete this and generate again, it's the mechanism to update the request details with the latest attachments + * + * @param attachments s + */ + public void setAttachments(List attachments) { + if (attachments != null) { + this.attachments.clear(); + this.attachments.addAll(attachments); + for (RequestDetailAttachmentJpaEntity att : this.attachments) + att.setRequestDetail(this); + } + } + + public BigDecimal getExchangeRate() { + return exchangeRate; + } + + public void setExchangeRate(BigDecimal exchangeRate) { + this.exchangeRate = exchangeRate; + } + + public LocalDate getExchangeRateStartDate() { + return exchangeRateStartDate; + } + + public void setExchangeRateStartDate(LocalDate exchangeRateStartDate) { + this.exchangeRateStartDate = exchangeRateStartDate; + } + + public String getExchangeRateCurrency() { + return exchangeRateCurrency; + } + + public void setExchangeRateCurrency(String exchangeRateCurrency) { + this.exchangeRateCurrency = exchangeRateCurrency; + } + + public Long getDetailTypeOrder() { + return detailTypeOrder; + } + + public void setDetailTypeOrder(Long detailTypeOrder) { + this.detailTypeOrder = detailTypeOrder; + } + + public Boolean getExtraDetail() { + return extraDetail; + } + + public void setExtraDetail(Boolean extraDetail) { + this.extraDetail = extraDetail; + } + + public String getJustification() { + return justification; + } + + public void setJustification(String justification) { + this.justification = justification; + } + + public String getExchangePayMonth() { + return exchangePayMonth; + } + + public void setExchangePayMonth(String exchangePayMonth) { + this.exchangePayMonth = exchangePayMonth; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestJpaEntity.java new file mode 100644 index 0000000..ce88263 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestJpaEntity.java @@ -0,0 +1,270 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.ananke.core.data.provider.jpa.TypeDefinition; +import eu.europa.eeas.erights.common.data.jpa.dto.RequestAbacWorkflowDTO; +import eu.europa.eeas.erights.common.data.jpa.entity.CityJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.CountryJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.DeclarationJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.PersonBankInfoJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeCatJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeJpaEntity; +import eu.europa.eeas.erights.common.tools.p2p.OrderStatusEnum; +import eu.europa.eeas.erights.common.tools.statemachine.AbacRequestState; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Columns; +import org.hibernate.annotations.Type; +import org.hibernate.envers.AuditOverride; +import org.hibernate.envers.Audited; +import org.hibernate.envers.NotAudited; +import org.javamoney.moneta.Money; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.ColumnResult; +import javax.persistence.ConstructorResult; +import javax.persistence.DiscriminatorColumn; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.NamedNativeQuery; +import javax.persistence.OneToMany; +import javax.persistence.SequenceGenerator; +import javax.persistence.SqlResultSetMapping; +import javax.persistence.Table; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.LinkedList; +import java.util.List; +import java.util.UUID; + +import static javax.persistence.GenerationType.SEQUENCE; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +// SHARED — CDC candidate for future step +@NamedNativeQuery(name = "RequestJpaEntity.getUnclosedPaymentOrders", + query = "select PAYMENT_ORDER as abacId, " + + "ABAC_WORKFLOW_STATE as p2pHubOrderStatus, " + + "REQUEST_ID as requestId " + + "from REQUESTS request " + + "where request.STATE = 'PAID' " + + "and request.PAYMENT_ORDER is not NULL " + + "and request.ABAC_WORKFLOW_STATE is not NULL " + + "and request.ABAC_WORKFLOW_STATE != 'CLO100'" + + "and request.P2P_HUB_ORDER_STATUS is null " + + "and request.PAYMENT_ORDER_VALID = 'Y'", + resultSetMapping = "Mapping.RequestAbacWorkflowDTO") +@SqlResultSetMapping(name = "Mapping.RequestAbacWorkflowDTO", + classes = @ConstructorResult(targetClass = RequestAbacWorkflowDTO.class, + columns = {@ColumnResult(name = "requestId", type = Long.class), + @ColumnResult(name = "p2pHubOrderStatus", type = String.class), + @ColumnResult(name = "abacId", type = String.class)})) +@Entity +@Setter +@Getter +@Audited(targetAuditMode = NOT_AUDITED) +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) +@DiscriminatorColumn(name = "REQUEST_TYPE") +@Table(name = RequestJpaEntity.TABLE_NAME) +@AuditOverride(forClass = AbstractAuditableJpaEntity.class) +public class RequestJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "REQUESTS"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + public static final String REQUEST_TYPE_ADVANCE = "AdvanceRequest"; + public static final String REQUEST_TYPE_CLEARING = "ClearingRequest"; + public static final String REQUEST_TYPE_TOPUP = "TopUpRequest"; + public static final String REQUEST_TYPE_INSTALLATION = "InstallationRequest"; + public static final String REQUEST_TYPE_TUD = "TudRequest"; + public static final String REQUEST_TYPE_TOTAL_REM = "TotalRemRequest"; + public static final String REQUEST_TYPE_RESETTLEMENT = "ResettlementRequest"; + + @Id + @Column(name = "REQUEST_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "DECLARATION_ID") + private DeclarationJpaEntity declaration; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ENTITLMNT_TYPE_ID") + private EntitlementTypeJpaEntity entitlementType; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ENTITLMNT_TYPE_CAT_ID") + private EntitlementTypeCatJpaEntity entitlementTypeCat; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "PERSONS_BANK_INFO_ID") + private PersonBankInfoJpaEntity personBankInfo; + + @Column(name = "SM_ID", length = 16) + @Type(type = "uuid-binary") + private UUID smId; + + @Column(name = "REQUEST_NUMBER") + private Long requestNumber; + + @Columns(columns = {@Column(name = "TOTAL_AMOUNT_CURRENCY"), + @Column(name = "TOTAL_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money totalAmount; + + @Column(name = "REQUEST_STRING_ID") + private String requestStringId; + + @Column(name = "YEAR") + private Integer year; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "PER_ID") + private PersonJpaEntity staffMember; + + @Column(name = "INCLUDES_STAFF_MEMBER") + @Type(type = "yes_no") + private Boolean includesStaffMember; + + @Columns(columns = {@Column(name = "CALC_TOTAL_AMOUNT_CURRENCY"), + @Column(name = "CALC_TOTAL_AMOUNT") + }) + @Type(type = TypeDefinition.MONEY) + private Money calculatedTotalAmount; + + @Column(name = "COMMENTS") + private String comments; + + @Column(name = "PAYMENT_REQUEST") + private String paymentRequest; + + @Column(name = "PAYMENT_ORDER") + private String paymentOrder; + + @Column(name = "PAYMENT_DATE") + private LocalDate paymentDate; + + @Column(name = "REQUEST_DECLARATION_NUMBER") + private Long requestDeclarationNo; + + @JoinColumn(name = "PARENT_REQUEST_ID") + @ManyToOne(fetch = FetchType.LAZY) + private RequestJpaEntity parent; + + @Column(name = "PARENT_REQUEST_ID", insertable = false, updatable = false) + private Long parentId; + + @OneToMany(mappedBy = "parent", cascade = CascadeType.REMOVE, fetch = FetchType.LAZY) + private List children; + + @Column(name = "REQUEST_TYPE", insertable = false, updatable = false) + private String requestType; + + @NotAudited + @OneToMany(mappedBy = "request", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true) + private List requestDetails = new LinkedList<>(); + + @Column(name = "INDEMNITY_UPDATED_AT") + private LocalDate indemnityUpdatedAt; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "COUNTRY") + private CountryJpaEntity country; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "CITY") + private CityJpaEntity city; + + @Column(name = "ENTRY_INTO_STORAGE") + @Type(type = "yes_no") + private Boolean entryIntoStorage; + + @Column(name = "AIRFREIGHT_VOLUME_CEILING") + private BigDecimal volumeAirFreightCeiling; + + @Column(name = "AIRFREIGHT_KG_CEILING") + private BigDecimal kgAirFreightCeiling; + + @Column(name = "TOTAL_PERSONAL") + private BigDecimal sumOfSectionsTotalPersonal; + + @Column(name = "TOTAL_VEHICLE") + private BigDecimal sumOfSectionsTotalVehicle; + + @Column(name = "TOTAL_STORAGE") + private BigDecimal sumOfSectionsTotalStorage; + + @Column(name = "TOTAL_UNFORESEEN") + private BigDecimal sumOfSectionsUnforeseenAmount; + + @Column(name = "ABAC_STATE") + @Enumerated(EnumType.STRING) + private AbacRequestState abacRequestState; + + @Column(name = "ABAC_WORKFLOW_STATE") + private String abacWorkflowState; + + @Column(name = "PAYMENT_ORDER_VALID") + @Type(type = "yes_no") + private Boolean paymentOrderValid; + + @Column(name = "PAYMENT_ID") + private String paymentId; + + @Column(name = "PAYMENT_EVENT_ID") + private String paymentEventId; + + @Column(name = "JUSTIFICATION") + private String justification; + + @Column(name = "P2P_HUB_ORDER_ID") + private Long p2pHubOrderId; + + @Column(name = "P2P_HUB_ORDER_STATUS") + @Enumerated(EnumType.STRING) + private OrderStatusEnum p2pHubOrderStatus; + + @Column(name = "ORDER_COMMENT") + private String orderComment; + + @Column(name = "PAYMENT_DIRECTIVE_REFERENCE") + private String paymentDirectiveReference; + + + + @Override + public Long getId() { + return id; + } + + + /** + * Please don't delete this and generate again, it's the mechanism to update the request with the latest requestDetails + * + * @param requestDetails s + */ + public void setRequestDetails(List requestDetails) { + if (requestDetails != null) { + this.requestDetails.clear(); + this.requestDetails.addAll(requestDetails); + for (RequestDetailJpaEntity rDetail : this.requestDetails) + rDetail.setRequest(this); + } + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestPersonAttachmentJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestPersonAttachmentJpaEntity.java new file mode 100644 index 0000000..9b0db37 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestPersonAttachmentJpaEntity.java @@ -0,0 +1,76 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import java.util.UUID; + +import static javax.persistence.GenerationType.SEQUENCE; + +@Entity +@Table(name = RequestPersonAttachmentJpaEntity.TABLE_NAME) +public class RequestPersonAttachmentJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "REQUEST_PERSON_ATTACHMENTS"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "REQUEST_PERS_ATTACHMENT_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "UUID") + private UUID uuid; + + @JoinColumn(name = "REQUEST_PERSON_ID") + @ManyToOne(fetch = FetchType.LAZY) + private RequestPersonJpaEntity requestPerson; + + @Column(name = "FILE_NAME") + private String fileName; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public UUID getUuid() { + return uuid; + } + + public void setUuid(UUID uuid) { + this.uuid = uuid; + } + + public RequestPersonJpaEntity getRequestPerson() { + return requestPerson; + } + + public void setRequestPerson(RequestPersonJpaEntity requestPerson) { + this.requestPerson = requestPerson; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestPersonJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestPersonJpaEntity.java new file mode 100644 index 0000000..fe18dce --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestPersonJpaEntity.java @@ -0,0 +1,183 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonJpaEntity; +import org.hibernate.annotations.Type; +import org.hibernate.envers.AuditOverride; +import org.hibernate.envers.Audited; +import org.hibernate.envers.NotAudited; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import java.util.LinkedList; +import java.util.List; + +import static javax.persistence.GenerationType.SEQUENCE; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +@Entity +@Table(name = RequestPersonJpaEntity.TABLE_NAME) +@Audited(targetAuditMode = NOT_AUDITED) +@AuditOverride(forClass = AbstractAuditableJpaEntity.class) + +public class RequestPersonJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "REQUEST_PERSONS"; + + private static final String SEQUENCE_NAME = "SEQ_" + RequestPersonJpaEntity.TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "REQUEST_PERSON_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "REQUEST_ID") + private RequestJpaEntity request; + + @Column(name = "TUD_ELIGIBILITY") + @Type(type = "yes_no") + private Boolean tudEligible; + + @Column(name = "DECLAREDPERSON") + @Type(type = "yes_no") + private Boolean declared; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "PER_ID") + private PersonJpaEntity person; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "REL_PER_ID") + private PersonJpaEntity relative; + + @Column(name = "TRP_CODE") + private String relation; + + @Column(name = "CLAIM") + @Type(type = "yes_no") + private Boolean claim; + + @Column(name = "CLAIM_APPROVED") + @Type(type = "yes_no") + private Boolean claimApproved; + + @OneToMany(mappedBy = "requestPerson", fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.REMOVE}) + @NotAudited + private List attachments = new LinkedList<>(); + + @Column(name = "REMARKS") + private String remarks; + + @Column(name = "TUD_ELIGIBILITY_REASON") + private String tudEligibleReason; + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public RequestJpaEntity getRequest() { + return request; + } + + public void setRequest(RequestJpaEntity request) { + this.request = request; + } + + public Boolean getTudEligible() { + return tudEligible; + } + + public void setTudEligible(Boolean tudEligible) { + this.tudEligible = tudEligible; + } + + public Boolean getDeclared() { + return declared; + } + + public void setDeclared(Boolean declared) { + this.declared = declared; + } + + public PersonJpaEntity getPerson() { + return person; + } + + public void setPerson(PersonJpaEntity person) { + this.person = person; + } + + public PersonJpaEntity getRelative() { + return relative; + } + + public void setRelative(PersonJpaEntity relative) { + this.relative = relative; + } + + public String getRelation() { + return relation; + } + + public void setRelation(String relation) { + this.relation = relation; + } + + public Boolean getClaim() { + return claim; + } + + public void setClaim(Boolean claim) { + this.claim = claim; + } + + public Boolean getClaimApproved() { + return claimApproved; + } + + public void setClaimApproved(Boolean claimApproved) { + this.claimApproved = claimApproved; + } + + public List getAttachments() { + return attachments; + } + + public void setAttachments(List attachments) { + this.attachments = attachments; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getTudEligibleReason() { + return tudEligibleReason; + } + + public void setTudEligibleReason(String tudEligibleReason) { + this.tudEligibleReason = tudEligibleReason; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestSupportingDocAttachmentJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestSupportingDocAttachmentJpaEntity.java new file mode 100644 index 0000000..f484d3f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestSupportingDocAttachmentJpaEntity.java @@ -0,0 +1,56 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request; + +import static javax.persistence.GenerationType.SEQUENCE; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import java.util.UUID; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import lombok.Getter; +import lombok.Setter; + +/** + * @author ienaccat + */ +@Entity +@Table(name = RequestSupportingDocAttachmentJpaEntity.TABLE_NAME) +@Getter +@Setter +public class RequestSupportingDocAttachmentJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "REQUEST_SUPPORTING_DOC_ATTS"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "REQUEST_SUPPORTING_DOC_ATT_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "UUID") + private UUID uuid; + + @JoinColumn(name = "REQUEST_SUPPORTING_DOC_ID") + @ManyToOne(fetch = FetchType.LAZY) + private RequestSupportingDocJpaEntity requestSupportingDoc; + + @Column(name = "FILE_NAME") + private String fileName; + + @Override + public Long getId() { + return id; + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestSupportingDocJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestSupportingDocJpaEntity.java new file mode 100644 index 0000000..b1a1305 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/RequestSupportingDocJpaEntity.java @@ -0,0 +1,95 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request; + +import static javax.persistence.GenerationType.SEQUENCE; +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsForSupportingDocJpaEntity; +import java.util.LinkedList; +import java.util.List; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Type; +import org.hibernate.envers.AuditOverride; +import org.hibernate.envers.Audited; +import org.hibernate.envers.NotAudited; + +/** + * + * @author ienaccat + */ +@Entity +@Table(name = RequestSupportingDocJpaEntity.TABLE_NAME) +@Audited(targetAuditMode = NOT_AUDITED) +@AuditOverride(forClass = AbstractAuditableJpaEntity.class) +@Getter +@Setter +public class RequestSupportingDocJpaEntity extends AbstractAuditableJpaEntity { + + public static final String TABLE_NAME = "REQUEST_SUPPORTING_DOCS"; + + private static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + @Id + @Column(name = "REQUEST_SUPPORTING_DOC_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "REQUEST_ID") + private ResettlementRequestJpaEntity request; + + @Enumerated(EnumType.STRING) + @Column(name = "DOC_TYPE") + private SupportingDocType docType; + + @Column(name = "DOC_ORDER") + private Long docOrder; + + @Column(name = "DOC_MANDATORY") + @Type(type = "yes_no") + private Boolean docMandatory; + + @NotAudited + @OneToMany(mappedBy = "requestSupportingDoc", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true) + private List attachments = new LinkedList<>(); + + @JoinColumn(name = "COMMENTS_ID", referencedColumnName = "COMMENTS_ID") + @OneToOne(cascade = CascadeType.ALL) + private CommentsForSupportingDocJpaEntity comment; + + @Override + public Long getId() { + return id; + } + + /** + * Please don't delete this + * + * @param attachments + */ + public void setAttachments(List attachments) { + if (attachments != null) { + this.attachments.clear(); + this.attachments.addAll(attachments); + for (RequestSupportingDocAttachmentJpaEntity att : this.attachments) + att.setRequestSupportingDoc(this); + } + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/ResettlementRequestJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/ResettlementRequestJpaEntity.java new file mode 100644 index 0000000..93a37b1 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/ResettlementRequestJpaEntity.java @@ -0,0 +1,59 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request; + +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +import eu.europa.eeas.erights.common.tools.statemachine.ResettlementState; +import java.util.LinkedList; +import java.util.List; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.FetchType; +import javax.persistence.OneToMany; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.envers.Audited; +import org.hibernate.envers.NotAudited; + +/** + * @author ienaccat + */ +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@DiscriminatorValue(value = RequestJpaEntity.REQUEST_TYPE_RESETTLEMENT) +@Getter +@Setter +public class ResettlementRequestJpaEntity extends RequestJpaEntity { + + @Enumerated(EnumType.STRING) + @Column(name = "STATE") + private ResettlementState state; + + @Column(name = "ACTIVE_YEARS") + private Integer activeYears; + + @Column(name = "STATUTORY_LINK_DESC") + private String statutoryLinkDesc; + + @NotAudited + @OneToMany(mappedBy = "request", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true) + private List supportingDocs = new LinkedList<>(); + + /** + * don't delete this + * @param requestSupportingDocs + */ + public void setSupportingDocs( + List requestSupportingDocs) { + if (requestSupportingDocs != null) { + this.supportingDocs.clear(); + this.supportingDocs.addAll(requestSupportingDocs); + for (RequestSupportingDocJpaEntity requestSupportingDocument : this.supportingDocs) { + requestSupportingDocument.setRequest(this); + } + } + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/SupportingDocType.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/SupportingDocType.java new file mode 100644 index 0000000..b4ee6d5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/SupportingDocType.java @@ -0,0 +1,25 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request; + +/** + * @author ienaccat + */ +public enum SupportingDocType { + /** resettlement **/ + EVIDENCE_NEW_RESIDENCE, + LEASE_PROPERTY_DEEDS, + UTILITY_BILL, + CERTIFICATE_NO_DEBTS, + PROOF_CANC_RES_PERMIT, + PROOF_CHANGE_CAR_PLATES, + SCHOOL_EVIDENCE, + HOA_EMAIL, + + /** accommodation **/ + ACCOMMODATION_CONTRACT, + APPROVAL_FORM, + ADDENDUM, + PROOF_OF_PAYMENT, + PROOF_OF_UNFORSEEN_COSTS, + + OTHER +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/TopUpRequestJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/TopUpRequestJpaEntity.java new file mode 100644 index 0000000..cbeae65 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/TopUpRequestJpaEntity.java @@ -0,0 +1,27 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request; + +import eu.europa.eeas.erights.common.tools.statemachine.TopUpRequestState; +import org.hibernate.envers.Audited; + +import javax.persistence.*; + +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@DiscriminatorValue(value = "TopUpRequest") +public class TopUpRequestJpaEntity extends RequestJpaEntity { + + @Enumerated(EnumType.STRING) + @Column(name = "STATE") + private TopUpRequestState state; + + public TopUpRequestState getState() { + return state; + } + + public void setState(TopUpRequestState state) { + this.state = state; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/TotalRemRequestJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/TotalRemRequestJpaEntity.java new file mode 100644 index 0000000..fa04667 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/TotalRemRequestJpaEntity.java @@ -0,0 +1,115 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request; + +import eu.europa.eeas.ananke.core.data.provider.jpa.TypeDefinition; +import eu.europa.eeas.erights.common.tools.statemachine.TotalRemRequestState; +import org.hibernate.annotations.Columns; +import org.hibernate.annotations.Type; +import org.hibernate.envers.Audited; +import org.javamoney.moneta.Money; + +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@DiscriminatorValue(value = "TotalRemRequest") +public class TotalRemRequestJpaEntity extends RequestJpaEntity { + + @Columns(columns = {@Column(name = "SURFACE_CURRENCY"), + @Column(name = "SURFACE_RATE") + }) + @Type(type = TypeDefinition.MONEY) + private Money surfaceRate; + + @Columns(columns = {@Column(name = "CAR_CURRENCY"), + @Column(name = "CAR_RATE") + }) + @Type(type = TypeDefinition.MONEY) + private Money carRate; + + @Columns(columns = {@Column(name = "AIRFREIGHT_CURRENCY"), + @Column(name = "AIRFREIGHT_RATE") + }) + @Type(type = TypeDefinition.MONEY) + private Money airfreightRate; + + @Columns(columns = {@Column(name = "STORAGE_CURRENCY"), + @Column(name = "STORAGE_RATE") + }) + @Type(type = TypeDefinition.MONEY) + private Money storageRate; + + @Column(name = "REQUEST_OPTION") + private String requestOption; + + @Enumerated(EnumType.STRING) + @Column(name = "STATE") + private TotalRemRequestState state; + + @Column(name = "DRAFT_TO_AWAITING_DATE") + private LocalDate draftToAwaitingDate; + + public Money getSurfaceRate() { + return surfaceRate; + } + + public void setSurfaceRate(Money surfaceRate) { + this.surfaceRate = surfaceRate; + } + + public Money getCarRate() { + return carRate; + } + + public void setCarRate(Money carRate) { + this.carRate = carRate; + } + + public Money getAirfreightRate() { + return airfreightRate; + } + + public void setAirfreightRate(Money airfreightRate) { + this.airfreightRate = airfreightRate; + } + + public Money getStorageRate() { + return storageRate; + } + + public void setStorageRate(Money storageRate) { + this.storageRate = storageRate; + } + + public String getRequestOption() { + return requestOption; + } + + public void setRequestOption(String requestOption) { + this.requestOption = requestOption; + } + + public TotalRemRequestState getState() { + return state; + } + + public void setState(TotalRemRequestState state) { + this.state = state; + } + + public LocalDate getDraftToAwaitingDate() { + return draftToAwaitingDate; + } + + public void setDraftToAwaitingDate(LocalDate draftToAwaitingDate) { + this.draftToAwaitingDate = draftToAwaitingDate; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/TudRequestJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/TudRequestJpaEntity.java new file mode 100644 index 0000000..2306071 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/entitlement/request/TudRequestJpaEntity.java @@ -0,0 +1,62 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request; + +import eu.europa.eeas.ananke.core.data.provider.jpa.TypeDefinition; +import eu.europa.eeas.erights.common.tools.statemachine.RequestState; +import org.hibernate.annotations.Columns; +import org.hibernate.annotations.Type; +import org.hibernate.envers.Audited; +import org.javamoney.moneta.Money; + +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; + +import static org.hibernate.envers.RelationTargetAuditMode.NOT_AUDITED; + +@Entity +@Audited(targetAuditMode = NOT_AUDITED) +@DiscriminatorValue(value = "TudRequest") +public class TudRequestJpaEntity extends RequestJpaEntity { + + @Columns(columns = {@Column(name = "FLAT_RATE_CURRENCY"), + @Column(name = "FLAT_RATE") + }) + @Type(type = TypeDefinition.MONEY) + private Money flatRate; + + @Columns(columns = {@Column(name = "FLAT_RATE_FAMILY_CURRENCY"), + @Column(name = "FLAT_RATE_FAMILY") + }) + @Type(type = TypeDefinition.MONEY) + private Money flatRateFamily; + + @Enumerated(EnumType.STRING) + @Column(name = "STATE") + private RequestState state; + + public Money getFlatRate() { + return flatRate; + } + + public void setFlatRate(Money flatRate) { + this.flatRate = flatRate; + } + + public Money getFlatRateFamily() { + return flatRateFamily; + } + + public void setFlatRateFamily(Money flatRateFamily) { + this.flatRateFamily = flatRateFamily; + } + + public RequestState getState() { + return state; + } + + public void setState(RequestState state) { + this.state = state; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/job/FunctionCodeJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/job/FunctionCodeJpaEntity.java new file mode 100644 index 0000000..78d21e2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/job/FunctionCodeJpaEntity.java @@ -0,0 +1,55 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.job; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Immutable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Immutable +@Table(name = FunctionCodeJpaEntity.TABLE_NAME) +public class FunctionCodeJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_FUNCTION_CODES"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "FUNCTION_CODE") + private String id; + + @Column(name = "FUNCTION_DESC_FR") + private String nameEn; + + @Column(name = "FUNCTION_DESC_EN") + private String nameFr; + + @Override + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getNameEn() { + return nameEn; + } + + public void setNameEn(String nameEn) { + this.nameEn = nameEn; + } + + public String getNameFr() { + return nameFr; + } + + public void setNameFr(String nameFr) { + this.nameFr = nameFr; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/job/InstitutionCodeJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/job/InstitutionCodeJpaEntity.java new file mode 100644 index 0000000..e8cf94d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/job/InstitutionCodeJpaEntity.java @@ -0,0 +1,54 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.job; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Immutable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Immutable +@Table(name = InstitutionCodeJpaEntity.TABLE_NAME) +public class InstitutionCodeJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_INSTITUTIONS"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "INS_CD") + private String id; + + @Column(name = "INS_TYPE") + private String type; + + @Column(name = "NAME") + private String nameEn; + + @Override + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getNameEn() { + return nameEn; + } + + public void setNameEn(String nameEn) { + this.nameEn = nameEn; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/job/PersonnelTypeJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/job/PersonnelTypeJpaEntity.java new file mode 100644 index 0000000..d0fd1f3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/job/PersonnelTypeJpaEntity.java @@ -0,0 +1,65 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.job; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Immutable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Immutable +@Table(name = PersonnelTypeJpaEntity.TABLE_NAME) +public class PersonnelTypeJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_PERSONNEL_TYPE"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "ID") + private String id; + + @Column(name = "DESCRIPTION") + private String personnelTypeDesc; + + @Column(name = "PRIORITY") + private Long priority; + + @Column(name = "OLD_EDELHRM_CODE") + private String hrmCode; + + @Override + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPersonnelTypeDesc() { + return personnelTypeDesc; + } + + public void setPersonnelTypeDesc(String personnelTypeDesc) { + this.personnelTypeDesc = personnelTypeDesc; + } + + public Long getPriority() { + return priority; + } + + public void setPriority(Long priority) { + this.priority = priority; + } + + public String getHrmCode() { + return hrmCode; + } + + public void setHrmCode(String hrmCode) { + this.hrmCode = hrmCode; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/job/StatutoryLinkCodeJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/job/StatutoryLinkCodeJpaEntity.java new file mode 100644 index 0000000..2778f51 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/job/StatutoryLinkCodeJpaEntity.java @@ -0,0 +1,65 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.job; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import org.hibernate.annotations.Immutable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Immutable +@Table(name = StatutoryLinkCodeJpaEntity.TABLE_NAME) +public class StatutoryLinkCodeJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "V_STATUTORY_LINK_CODES"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "LST_CD") + private String id; + + @Column(name = "EN_NAME") + private String nameEn; + + @Column(name = "FR_NAME") + private String nameFr; + + @Column(name = "DE_NAME") + private String nameDe; + + @Override + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getNameEn() { + return nameEn; + } + + public void setNameEn(String nameEn) { + this.nameEn = nameEn; + } + + public String getNameFr() { + return nameFr; + } + + public void setNameFr(String nameFr) { + this.nameFr = nameFr; + } + + public String getNameDe() { + return nameDe; + } + + public void setNameDe(String nameDe) { + this.nameDe = nameDe; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/notification/NotificationJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/notification/NotificationJpaEntity.java new file mode 100644 index 0000000..831bca2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/notification/NotificationJpaEntity.java @@ -0,0 +1,185 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.notification; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.enums.Status; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import javax.persistence.FetchType; +import org.hibernate.annotations.Type; + +import javax.persistence.Column; +import javax.persistence.DiscriminatorColumn; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import java.time.LocalDateTime; + +import static javax.persistence.GenerationType.SEQUENCE; + +@Entity +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) +@DiscriminatorColumn(name = "NOTIFICATION_TYPE") +@Table(name = NotificationJpaEntity.TABLE_NAME) + +public class NotificationJpaEntity extends AbstractJpaEntity { + + /** + * serialVersionUID. + */ + public static final long serialVersionUID = 4L; + + public static final String TABLE_NAME = "NOTIFICATIONS"; + + public static final String SEQUENCE_NAME = "SEQ_NOTIFICATIONS"; + + /** + * unique id. + */ + @Id + @Column(name = "NOTIFICATION_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + /** + * NOTIFICATION_TEMPLATE_ID field.Identify the entity related to the notification. + */ + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "NOTIFICATION_TEMPLATE_ID") + private NotificationTemplateJpaEntity notificationTemplate; + + /** + * NOTIFICATION_ENTITY_ID field.Identify the entity related to the notification. + */ + @Column(name = "NOTIFICATION_TEMPLATE_CODE") + private NotificationTemplateCode notificationTemplateCode; + + /** + * email id field. + */ + + @Column(name = "EMAIL_ID") + private Long emailMessage; + + @Column(name = "CREATED_DATE") + private LocalDateTime createdDate; + + @Column(name = "UPDATED_AT") + private LocalDateTime updatedAt; + + @Column(name = "SENDING_DATE") + private LocalDateTime sendingDate; + + @Column(name = "STATUS") + @Enumerated(EnumType.STRING) + private Status status; + + @Column(name = "ALERT_SENT") + @Type(type = "yes_no") + private Boolean alertSent; + + @Column(name = "SENT_AT") + private LocalDateTime sentAt; + + @Column(name = "COMMUNICATION_ID") + private String communicationId; + + + @Override + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public NotificationTemplateJpaEntity getNotificationTemplate() { + return notificationTemplate; + } + + public void setNotificationTemplate(NotificationTemplateJpaEntity notificationTemplate) { + this.notificationTemplate = notificationTemplate; + } + + public NotificationTemplateCode getNotificationTemplateCode() { + return notificationTemplateCode; + } + + public void setNotificationTemplateCode(NotificationTemplateCode notificationTemplateCode) { + this.notificationTemplateCode = notificationTemplateCode; + } + + public Long getEmailMessage() { + return emailMessage; + } + + public void setEmailMessage(Long emailMessage) { + this.emailMessage = emailMessage; + } + + public LocalDateTime getCreatedDate() { + return createdDate; + } + + public void setCreatedDate(LocalDateTime createdDate) { + this.createdDate = createdDate; + } + + public LocalDateTime getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(LocalDateTime updatedAt) { + this.updatedAt = updatedAt; + } + + public LocalDateTime getSendingDate() { + return sendingDate; + } + + public void setSendingDate(LocalDateTime sendingDate) { + this.sendingDate = sendingDate; + } + + public Status getStatus() { + return status; + } + + public void setStatus(Status status) { + this.status = status; + } + + public Boolean getAlertSent() { + return alertSent; + } + + public void setAlertSent(Boolean alertSent) { + this.alertSent = alertSent; + } + + public LocalDateTime getSentAt() { + return sentAt; + } + + public void setSentAt(LocalDateTime sentAt) { + this.sentAt = sentAt; + } + + public String getCommunicationId() { + return communicationId; + } + + public void setCommunicationId(String communicationId) { + this.communicationId = communicationId; + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/notification/NotificationMFJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/notification/NotificationMFJpaEntity.java new file mode 100644 index 0000000..19f13b7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/notification/NotificationMFJpaEntity.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.notification; + +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileJpaEntity; + +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; + +@Entity +@DiscriminatorValue(value = "MOVEMENT_FILE") +public class NotificationMFJpaEntity extends NotificationJpaEntity { + + public static final long serialVersionUID = 8L; + + public static final String TABLE_NAME = "NOTIFICATIONS"; + + /** + * template NOTIFICATION_ENTITY_ID. + */ + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "NOTIFICATION_ENTITY_ID") + private MovementFileJpaEntity movementFile; + + public MovementFileJpaEntity getMovementFile() { + return movementFile; + } + + public void setMovementFile(MovementFileJpaEntity movementFile) { + this.movementFile = movementFile; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/notification/NotificationPostingAllowanceJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/notification/NotificationPostingAllowanceJpaEntity.java new file mode 100644 index 0000000..824e739 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/notification/NotificationPostingAllowanceJpaEntity.java @@ -0,0 +1,26 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.notification; + +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceJpaEntity; + +import javax.persistence.*; + +@Entity +@DiscriminatorValue(value = "POSTING_ALLOWANCE") +public class NotificationPostingAllowanceJpaEntity extends NotificationJpaEntity { + + public static final long serialVersionUID = 1L; + + public static final String TABLE_NAME = "NOTIFICATIONS"; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "NOTIFICATION_ENTITY_ID") + private PostingAllowanceJpaEntity postingAllowance; + + public PostingAllowanceJpaEntity getPostingAllowance() { + return postingAllowance; + } + + public void setPostingAllowance(PostingAllowanceJpaEntity postingAllowance) { + this.postingAllowance = postingAllowance; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/notification/NotificationRequestJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/notification/NotificationRequestJpaEntity.java new file mode 100644 index 0000000..aae3aa6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/notification/NotificationRequestJpaEntity.java @@ -0,0 +1,28 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.notification; + +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestJpaEntity; + +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; + +@Entity +@DiscriminatorValue(value = "REQUEST") +public class NotificationRequestJpaEntity extends NotificationJpaEntity { + + public static final long serialVersionUID = 1L; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "NOTIFICATION_ENTITY_ID") + private RequestJpaEntity request; + + public RequestJpaEntity getRequest() { + return request; + } + + public void setRequest(RequestJpaEntity request) { + this.request = request; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/notification/NotificationTemplateJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/notification/NotificationTemplateJpaEntity.java new file mode 100644 index 0000000..f7ce8ea --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/notification/NotificationTemplateJpaEntity.java @@ -0,0 +1,76 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.notification; + +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import java.sql.Clob; +import javax.persistence.Lob; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Type; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; + +import static javax.persistence.GenerationType.SEQUENCE; + +@Entity +@Getter +@Setter +@Table(name = NotificationTemplateJpaEntity.TABLE_NAME) +public class NotificationTemplateJpaEntity extends AbstractJpaEntity { + + public static final String TABLE_NAME = "NOTIFICATION_TEMPLATES"; + + private static final long serialVersionUID = 1L; + + @Id + @Column(name = "NOTIFICATION_TEMPLATE_ID") + private Long id; + + /** + * message subject field. + */ + @Column(name = "MESSAGE_SUBJECT") + private String messageSubject; + + /** + * message body field. + */ + @Lob + @Column(name = "MESSAGE_BODY") + private String messageBody; + + /** + * message body field. + */ + @Column(name = "MESSAGE_SIGNATURE") + private String messageSignature; + + /** + * Code type field. + */ + + @Column(name = "NOTIFICATION_TEMPLATE_TYPE") + private String notificationTemplateType; + + @Enumerated(EnumType.STRING) + @Column(name = "NOTIFICATION_TEMPLATE_CODE") + private NotificationTemplateCode notificationTemplateCode; + + @Column(name = "DEFAULT_TEMPLATE") + @Type(type = "yes_no") + private Boolean defaultTemplate; + + @Override + public Long getId() { + return id; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/statemachine/StateMachineCurrentStateEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/statemachine/StateMachineCurrentStateEntity.java new file mode 100644 index 0000000..3245638 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/statemachine/StateMachineCurrentStateEntity.java @@ -0,0 +1,47 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.statemachine; + +import org.hibernate.annotations.Type; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.Table; +import java.sql.Blob; +import java.util.UUID; + +/** + * TODO This is a temporary entity used for mapping the ANK_SM_CURRENT_STATES. After deliver in production this should be deleted + * RIGD-547 + */ +@Entity +@Table(name = StateMachineCurrentStateEntity.TABLE_NAME) +public class StateMachineCurrentStateEntity { + + public static final String TABLE_NAME = "ANK_SM_CURRENT_STATES"; + + @Id + @Type(type = "uuid-binary") + @Column(name = "ID", length = 16, unique = true, nullable = false, insertable = true, updatable = false) + private UUID id; + + @Column(name = "STATE_MACHINE_CONTEXT") + @Lob + private Blob stateMachineContext; + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public Blob getStateMachineContext() { + return stateMachineContext; + } + + public void setStateMachineContext(Blob stateMachineContext) { + this.stateMachineContext = stateMachineContext; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/tud/RatesTUDJpaEntity.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/tud/RatesTUDJpaEntity.java new file mode 100644 index 0000000..7410b06 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/entity/tud/RatesTUDJpaEntity.java @@ -0,0 +1,353 @@ +package eu.europa.eeas.erights.common.data.jpa.entity.tud; + +import static javax.persistence.GenerationType.SEQUENCE; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; + +import org.hibernate.annotations.Type; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.entity.AbstractAuditableJpaEntity; + +@Entity +@Table(name = RatesTUDJpaEntity.TABLE_NAME) +public class RatesTUDJpaEntity extends AbstractAuditableJpaEntity { + + private static final long serialVersionUID = 1L; + public static final String TABLE_NAME = "RATES_TUD"; + public static final String SEQUENCE_NAME = "SEQ_" + TABLE_NAME; + + @Id + @Column(name = "RATES_TUD_ID") + @GeneratedValue(strategy = SEQUENCE, generator = "SEQ_GENERATOR") + @SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = SEQUENCE_NAME, allocationSize = 1) + private Long id; + + @Column(name = "RESULT_URL_PR_ECONOMY") + private String resultUrlPremiumEconomy; + + @Column(name = "RESULT_URL_BUSINESS") + private String resultUrlBusiness; + + /** + * Raw JSON provided by the web service, + */ + @Column(name = "RESPONSE_PR_ECONOMY") + private String rawResponsePremiumEconomy; + + @Column(name = "RESPONSE_BUSINESS") + private String rawResponseBusiness; + + @Column(name = "COUNTRY") + private String country; + + @Column(name = "CURRENCY") + private String currency; + + @Column(name = "LOCALE") + private String locale; + + @Column(name = "LOCATION_SCHEMA") + private String locationSchema; + + @Column(name = "ORIGIN_PLACE") + private String originPlace; + + @Column(name = "DESTINATION_PLACE") + private String destinationPlace; + + @Column(name = "MOVEMENT_FILE_ID") + private Long movementFileId; + + @Column(name = "ENTITLMNT_SPECIFIC") + @Type(type = "yes_no") + private Boolean entitlementSpecific; + + @Column(name = "ENTITLMNT_MAXS_ID") + private Long entitlementMaxsId; + + @Column(name = "ENTITLMNT_MAXS_CAT_CODE") + private String entitlementMaxsCatCode; + + + @Column(name = "REQ_OUTBOUND_DATE") + private LocalDate requestedOutboundDate; + + @Column(name = "USED_OUTBOUND_DATE") + private LocalDate usedOutboundDate; + + /** + * Whether or not an acceptable itinerary was found in Skyscanner (including in the week after requested date) + */ + @Column(name = "SEARCH_CEASED") + @Type(type = "yes_no") + private Boolean searchCeased; + + /** + * ID inside the Skyscanner JSON of the itinerary that is used as reference (it's price is higher or equal than 80% of the acceptable flights) + */ + @Column(name = "SEL_ITINERARY_ID") + private String selectedItineraryId; + + @Column(name = "SEL_ITINERARY_PRICE") + private Double selectedItineraryPrice; + + @Column(name = "ADULTS") + private Integer adults; + + @Column(name = "CHILDREN") + private Integer children; + + @Column(name = "INFANTS") + private Integer infants; + + /** + * Date/time when the data was received from the Webservice (Skyscanner, etc) + */ + @Column(name = "RETRIEVED_AT") + private LocalDateTime retrievedAt; + + /** + * Whether this session needs to be polled again to retrieve complete information. Initially "false" = Needs new polling. + */ + @Column(name = "INFO_COMPLETE") + @Type(type = "yes_no") + private Boolean infoComplete; + + /** + * 'SKY_SCANNER', etc. + */ + @Column(name = "WEBSERVICE_NAME") + private String webserviceName; + + @Column(name = "DELETED") + @Type(type = "yes_no") + private Boolean deleted; + + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getLocale() { + return locale; + } + + public void setLocale(String locale) { + this.locale = locale; + } + + public String getLocationSchema() { + return locationSchema; + } + + public void setLocationSchema(String locationSchema) { + this.locationSchema = locationSchema; + } + + public String getOriginPlace() { + return originPlace; + } + + public void setOriginPlace(String originPlace) { + this.originPlace = originPlace; + } + + public String getDestinationPlace() { + return destinationPlace; + } + + public void setDestinationPlace(String destinationPlace) { + this.destinationPlace = destinationPlace; + } + + public Integer getAdults() { + return adults; + } + + public void setAdults(Integer adults) { + this.adults = adults; + } + + public Integer getChildren() { + return children; + } + + public void setChildren(Integer children) { + this.children = children; + } + + public Integer getInfants() { + return infants; + } + + public void setInfants(Integer infants) { + this.infants = infants; + } + + public LocalDateTime getRetrievedAt() { + return retrievedAt; + } + + public void setRetrievedAt(LocalDateTime retrievedAt) { + this.retrievedAt = retrievedAt; + } + + public Boolean getInfoComplete() { + return infoComplete; + } + + public void setInfoComplete(Boolean infoComplete) { + this.infoComplete = infoComplete; + } + + public String getWebserviceName() { + return webserviceName; + } + + public void setWebserviceName(String webserviceName) { + this.webserviceName = webserviceName; + } + + public Boolean getDeleted() { + return deleted; + } + + public void setDeleted(Boolean deleted) { + this.deleted = deleted; + } + + public LocalDate getRequestedOutboundDate() { + return requestedOutboundDate; + } + + public void setRequestedOutboundDate(LocalDate requestedOutboundDate) { + this.requestedOutboundDate = requestedOutboundDate; + } + + public LocalDate getUsedOutboundDate() { + return usedOutboundDate; + } + + public void setUsedOutboundDate(LocalDate usedOutboundDate) { + this.usedOutboundDate = usedOutboundDate; + } + + public Boolean getSearchCeased() { + return searchCeased; + } + + public void setSearchCeased(Boolean searchCeased) { + this.searchCeased = searchCeased; + } + + public String getSelectedItineraryId() { + return selectedItineraryId; + } + + public void setSelectedItineraryId(String selectedItineraryId) { + this.selectedItineraryId = selectedItineraryId; + } + + public Double getSelectedItineraryPrice() { + return selectedItineraryPrice; + } + + public void setSelectedItineraryPrice(Double selectedItineraryPrice) { + this.selectedItineraryPrice = selectedItineraryPrice; + } + + public String getResultUrlPremiumEconomy() { + return resultUrlPremiumEconomy; + } + + public void setResultUrlPremiumEconomy(String resultUrlPremiumEconomy) { + this.resultUrlPremiumEconomy = resultUrlPremiumEconomy; + } + + public String getResultUrlBusiness() { + return resultUrlBusiness; + } + + public void setResultUrlBusiness(String resultUrlBusiness) { + this.resultUrlBusiness = resultUrlBusiness; + } + + public String getRawResponsePremiumEconomy() { + return rawResponsePremiumEconomy; + } + + public void setRawResponsePremiumEconomy(String rawResponsePremiumEconomy) { + this.rawResponsePremiumEconomy = rawResponsePremiumEconomy; + } + + public String getRawResponseBusiness() { + return rawResponseBusiness; + } + + public void setRawResponseBusiness(String rawResponseBusiness) { + this.rawResponseBusiness = rawResponseBusiness; + } + + public Boolean getEntitlementSpecific() { + return entitlementSpecific; + } + + public void setEntitlementSpecific(Boolean entitlementSpecific) { + this.entitlementSpecific = entitlementSpecific; + } + + public Long getEntitlementMaxsId() { + return entitlementMaxsId; + } + + public void setEntitlementMaxsId(Long entitlementMaxsId) { + this.entitlementMaxsId = entitlementMaxsId; + } + + public String getEntitlementMaxsCatCode() { + return entitlementMaxsCatCode; + } + + public void setEntitlementMaxsCatCode(String entitlementMaxsCatCode) { + this.entitlementMaxsCatCode = entitlementMaxsCatCode; + } + + public Long getMovementFileId() { + return movementFileId; + } + + public void setMovementFileId(Long movementFileId) { + this.movementFileId = movementFileId; + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/AbacItemJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/AbacItemJpaRepository.java new file mode 100644 index 0000000..0f8538c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/AbacItemJpaRepository.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.dto.AbacCommunicationDTO; +import eu.europa.eeas.erights.common.data.jpa.entity.AbacItemJpaEntity; +import eu.europa.eeas.erights.common.service.model.AbacItemType; +import eu.europa.eeas.erights.common.tools.statemachine.AbacItemState; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; +import java.util.UUID; + +public interface AbacItemJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository { + + @Override + default Class getEntityType() { + return AbacItemJpaEntity.class; + } + + AbacItemJpaEntity findByAbacCommunicationId(UUID uuid); + + AbacItemJpaEntity findByRequestPaymentAbacInfoIdAndItemTypeAndItemState(Long requestPaymentAbacInfoId, AbacItemType itemType, AbacItemState state); + + @Query(value = "select SEQ_REQUEST_ABAC_ITEM.nextval from dual", nativeQuery = true) + long getSequence(); + + List findByRequestIdOrderByAbacId(Long requestId); + + List findByAbacCommunicationIdOrderByAbacId(UUID uuid); + + @Query(nativeQuery = true) + List getAbacCommunicationItemsByRequestId(@Param("requestId") Long requestId); + + AbacItemJpaEntity findByRequestId(Long requestId); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/AppParameterJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/AppParameterJpaRepository.java new file mode 100644 index 0000000..e15c4c2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/AppParameterJpaRepository.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.AppParameterJpaEntity; +import eu.europa.eeas.erights.common.tools.app.AppParamType; + +import java.util.List; + +public interface AppParameterJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return AppParameterJpaEntity.class; + } + + List findAllByParamType(AppParamType paramType); + + List findAllByParamTypeAndKey(AppParamType paramType, String key); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/AuditMovementFileJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/AuditMovementFileJpaRepository.java new file mode 100644 index 0000000..485bb7c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/AuditMovementFileJpaRepository.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.AuditMovementFileJpaEntity; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; + +import java.util.List; + +public interface AuditMovementFileJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return AuditMovementFileJpaEntity.class; + } + + List findByStatusIsNullOrStatusIsNot(MovementFileState state); + + List findByFileId(String fileId); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/CityJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/CityJpaRepository.java new file mode 100644 index 0000000..fb9e3a0 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/CityJpaRepository.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.CityJpaEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; + +public interface CityJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return CityJpaEntity.class; + } + + List findAllByCountryCodeOrderByNameEn(String countryCode); + + List findAllByCountryCodeOrderByNameFr(String countryCode); + + @Query(value = "SELECT countries.COUNTRY_CODE FROM " + + "MV_CITIES cities " + + "INNER JOIN MV_COUNTRIES countries " + + "ON cities.COUNTRY_CODE = countries.COUNTRY_CODE " + + "AND cities.CITY_CODE = :city", nativeQuery = true) + String getCountryCodeByCity(@Param("city") String city); + + @Query(value = "SELECT countries.CD_ISO_A2 FROM " + + "MV_CITIES cities " + + "INNER JOIN MV_COUNTRIES countries " + + "ON cities.COUNTRY_CODE = countries.COUNTRY_CODE " + + "AND cities.CITY_CODE = :city", nativeQuery = true) + String getCountryA2CodeByCity(@Param("city") String city); + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/CountryJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/CountryJpaRepository.java new file mode 100644 index 0000000..7ebfaa9 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/CountryJpaRepository.java @@ -0,0 +1,19 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.CountryJpaEntity; + +import java.util.List; + +public interface CountryJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return CountryJpaEntity.class; + } + + List findByOrderByNameEnAsc(); + + List findByOrderByNameFrAsc(); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/ExchangeRateJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/ExchangeRateJpaRepository.java new file mode 100644 index 0000000..a523771 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/ExchangeRateJpaRepository.java @@ -0,0 +1,29 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.ExchangeRateJpaEntity; +import org.springframework.data.jpa.repository.Query; + +import java.time.LocalDate; +import java.util.List; + +public interface ExchangeRateJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return ExchangeRateJpaEntity.class; + } + + @Query("SELECT exrate FROM ExchangeRateJpaEntity exrate WHERE exrate.startDate <= ?1 AND exrate.endDate >= ?2") + List findAllByIdStartDateBeforeAndIdEndDateAfter(LocalDate startDate, LocalDate endDate); + + @Query("SELECT exrate FROM ExchangeRateJpaEntity exrate WHERE exrate.startDate >= ?1 ") + List findAllByIdStartDateBefore(LocalDate startDate); + + List findByCurrencyAndStartDateAfterOrderByStartDateDesc(String currency, LocalDate startDate); + + List findByStartDateAfterOrderByStartDateDesc(LocalDate startDate); + + List findByStartDateAfter(LocalDate startDate); + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/FunctionCodeJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/FunctionCodeJpaRepository.java new file mode 100644 index 0000000..d8b40bd --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/FunctionCodeJpaRepository.java @@ -0,0 +1,19 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.job.FunctionCodeJpaEntity; + +import java.util.List; + +public interface FunctionCodeJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return FunctionCodeJpaEntity.class; + } + + List findByOrderByNameEnAsc(); + + List findByOrderByNameFrAsc(); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/HOAFunctionalMailboxRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/HOAFunctionalMailboxRepository.java new file mode 100644 index 0000000..8a8b1bf --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/HOAFunctionalMailboxRepository.java @@ -0,0 +1,18 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.HOAFunctionalMailboxJpaEntity; + +/** + * @author ienaccat + */ +public interface HOAFunctionalMailboxRepository extends + EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return HOAFunctionalMailboxJpaEntity.class; + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/HeadOfAdministrationRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/HeadOfAdministrationRepository.java new file mode 100644 index 0000000..4083e99 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/HeadOfAdministrationRepository.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.HeadOfAdministrationJpaEntity; + +/** + * @author ienaccat + */ +@Deprecated +//TODO RIGD-3615 remove it once HOA FMB is adopted +public interface HeadOfAdministrationRepository extends + EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return HeadOfAdministrationJpaEntity.class; + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/IataAirportJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/IataAirportJpaRepository.java new file mode 100644 index 0000000..4af8921 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/IataAirportJpaRepository.java @@ -0,0 +1,40 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.CountryJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.IataAirportJpaEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; + +public interface IataAirportJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return IataAirportJpaEntity.class; + } + + List findByActiveOrderByLocationName(Boolean active); + + IataAirportJpaEntity findByActiveAndId(Boolean active, String iataCode); + + + + IataAirportJpaEntity findById(String id); + + @Query(value = "SELECT iataAirport.airportName from IataAirportJpaEntity iataAirport " + + "WHERE iataAirport.id = :city") + String getIataAirportName(@Param("city") String city); + + + @Query(value = "SELECT iata_code from V_AIRPORT_CITIES " + + "WHERE city_code = :city", nativeQuery = true) + String getIataCode(@Param("city") String city); + + + @Query(value = "SELECT location_name from V_AIRPORT_CITIES " + + "WHERE city_code = :city", nativeQuery = true) + String getAirportNameFromCity(@Param("city") String city); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/InstitutionCodeJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/InstitutionCodeJpaRepository.java new file mode 100644 index 0000000..dbd7bb0 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/InstitutionCodeJpaRepository.java @@ -0,0 +1,17 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.job.InstitutionCodeJpaEntity; + +import java.util.List; + +public interface InstitutionCodeJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return InstitutionCodeJpaEntity.class; + } + + List findAllByOrderByNameEnAsc(); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/MVCountryJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/MVCountryJpaRepository.java new file mode 100644 index 0000000..9bb7191 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/MVCountryJpaRepository.java @@ -0,0 +1,19 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.CountryJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.MVCountryJpaEntity; + +import java.util.List; +import java.util.Optional; + +public interface MVCountryJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + + return MVCountryJpaEntity.class; + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementContextJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementContextJpaRepository.java new file mode 100644 index 0000000..fc1bfaf --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementContextJpaRepository.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementContextJpaEntity; + +/** + * @author imironiu + */ +public interface MovementContextJpaRepository extends + EntitySaverJpaRepository, + EntityReaderJpaRepository, + EntityDeleterJpaRepository { + + @Override + default Class getEntityType() { + return MovementContextJpaEntity.class; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementFileDetailJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementFileDetailJpaRepository.java new file mode 100644 index 0000000..1899b9e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementFileDetailJpaRepository.java @@ -0,0 +1,24 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileDetailJpaEntity; + +import java.util.List; + +public interface MovementFileDetailJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return MovementFileDetailJpaEntity.class; + } + + /** + * Find Attachments by MovementFile id. + * + * @param movementFileId the id of the MovementFile to find. + * + * @return the list of found entities. + */ + List findByMovementFileId(Long movementFileId); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementFileJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementFileJpaRepository.java new file mode 100644 index 0000000..7a2ec77 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementFileJpaRepository.java @@ -0,0 +1,83 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.repository.EntityRevisionJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileJpaEntity; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.math.BigInteger; +import java.time.LocalDate; +import java.util.List; + +/** + * Created by iliessu on 14/11/2019; e-rights. + * + *

    + * {@link MovementFileJpaEntity} jpa repository. + *

    + * + * @author Silviu Ilie. + * @see MovementFileJpaEntity + */ +public interface MovementFileJpaRepository extends EntityRevisionJpaRepository, + EntityReaderJpaRepository, + EntitySaverJpaRepository, + EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return MovementFileJpaEntity.class; + } + + List findByMovementContextId(Long movementContextId); + + @Query("SELECT mf FROM MovementFileJpaEntity mf WHERE ((mf.startDate IS NOT NULL AND mf.startDate < ?1) OR " + + " (mf.estimatedEndDate IS NOT NULL AND mf.estimatedEndDate < ?1) )" + + " AND mf.state = ?2") + List findByStartDateOrEndDateBeforeAndState(LocalDate currentDate1, MovementFileState state); + + @Query("SELECT mv FROM MovementFileJpaEntity mv WHERE mv.jobHolder.id = :perId and mv.movementContext.name = 'EOC' and mv.state in :activeStates ") + List findExistingMovementFileEOC(@Param("perId") Long perId, + @Param("activeStates") List activeStates); + + @Query("SELECT mv FROM MovementFileJpaEntity mv WHERE mv.jobHolder.id = :perId and mv.jobTo.id = :jobNo and mv.state in :activeStates ") + List findExistingMovementFile(@Param("perId") Long perId, @Param("jobNo") Long jobNo, + @Param("activeStates") List activeStates); + + @Query("SELECT mv FROM MovementFileJpaEntity mv WHERE mv.jobHolder.id = :perId and mv.state in :activeStates and mv.jobTo is null ") + List findExistingMovementFileNoJob(@Param("perId") Long perId, + @Param("activeStates") List activeStates); + + @Query("select coalesce(max(mv.movementNr), 0) + 1 as file_id_sequence_next \n" + + "from MovementFileJpaEntity mv\n" + + "where mv.year = :year \n") + Long getSequenceForMovementFileID(@Param("year") Integer year); + + + + List findByIdLessThan(Long movementFileId); + + List findAllByState(MovementFileState state); + + @Query("select distinct mv.jobHolder.id from MovementFileJpaEntity mv where mv.state != 'COMPLETED' and mv.state != 'DELETED' and mv.state != 'WITHDRAWN' ") + List getJobHolderIds(); + + List findByMovementType_IdIn(List movementTypeIds); + + @Query("SELECT mv FROM MovementFileJpaEntity mv WHERE mv.jobHolder.id = :perId") + List findExistingMovementByPersonId(@Param("perId") Long perId); + + @Query("SELECT mv FROM MovementFileJpaEntity mv WHERE mv.jobHolder.id = :perId and mv.movementType.id = :movementTypeId and mv.year = :year") + List findJobHolderAndMovementTypeAndYear(@Param("perId") Long perId,@Param("movementTypeId") Long movementTypeId,@Param("year") Integer year); + + + @Query("select mv from MovementFileJpaEntity mv where mv.year = :year and mv.cityFrom.id = :cityFrom and mv.cityTo.id = :cityTo") + List getMovementFileJpaEntitiesByYearAndCityFromAndCityTo(@Param("year") Integer year, @Param("cityFrom") String cityFrom, @Param("cityTo") String cityTo); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementTypeJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementTypeJpaRepository.java new file mode 100644 index 0000000..3c91899 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementTypeJpaRepository.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementTypeJpaEntity; + +import java.util.List; + +/** + * @author imironiu + */ +public interface MovementTypeJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return MovementTypeJpaEntity.class; + } + + List findByContextId(Long contextId); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/PersonEmailJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/PersonEmailJpaRepository.java new file mode 100644 index 0000000..3e79f83 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/PersonEmailJpaRepository.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import java.util.List; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonEmailJpaEntity; +import eu.europa.eeas.erights.common.tools.person.EmailType; + +public interface PersonEmailJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, + EntityDeleterJpaRepository { + + @Override + default Class getEntityType() { + return PersonEmailJpaEntity.class; + } + + List findByPerIdAndEmailType(Long perId, EmailType emailType); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/PersonIndemnityJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/PersonIndemnityJpaRepository.java new file mode 100644 index 0000000..7c82d62 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/PersonIndemnityJpaRepository.java @@ -0,0 +1,24 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonIndemnityJpaEntity; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +public interface PersonIndemnityJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return PersonIndemnityJpaEntity.class; + } + + List findByBenefPerIdAndCodeAndOriginPeriodIn(Long benefPerId, String code, List periods); + + List findByRgtIdAndBenefPerIdAndRightPctGreaterThan(Long rgtId,Long beneficiaryPerId,Long rightPct); + + List findByRgtIdAndBenefPerId(Long rgtId,Long rightPct); + + List findByRgtIdAndIndemnityIdTypeInAndPerIdAttribute(Long rgtId, List indemnityIdTypes, Long perIdAttribute); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/PersonJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/PersonJpaRepository.java new file mode 100644 index 0000000..65d917d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/PersonJpaRepository.java @@ -0,0 +1,12 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonJpaEntity; + +public interface PersonJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return PersonJpaEntity.class; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/PersonnelTypeJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/PersonnelTypeJpaRepository.java new file mode 100644 index 0000000..ea6f09a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/PersonnelTypeJpaRepository.java @@ -0,0 +1,19 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.job.PersonnelTypeJpaEntity; + +import java.util.List; + +public interface PersonnelTypeJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return PersonnelTypeJpaEntity.class; + } + + + + List findByOrderById(); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/PlaceOriginAirportJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/PlaceOriginAirportJpaRepository.java new file mode 100644 index 0000000..26bd4f7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/PlaceOriginAirportJpaRepository.java @@ -0,0 +1,25 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.PlaceOriginAirportJpaEntity; + +import java.util.List; + +/** + * @author tapiafo + */ +public interface PlaceOriginAirportJpaRepository extends EntityReaderJpaRepository, EntitySaverJpaRepository { + + @Override + default Class getEntityType() { + return PlaceOriginAirportJpaEntity.class; + } + + List findByCityName(String cityName); + + List findByCityNameAndCountryCode(String cityName,String countryCode); + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/StatutoryLinkCodeJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/StatutoryLinkCodeJpaRepository.java new file mode 100644 index 0000000..90c3977 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/StatutoryLinkCodeJpaRepository.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.job.StatutoryLinkCodeJpaEntity; + + +import java.util.List; + +public interface StatutoryLinkCodeJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return StatutoryLinkCodeJpaEntity.class; + } + + List findByOrderByNameEnAsc(); + + List findByOrderById(); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/UserPreferenceJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/UserPreferenceJpaRepository.java new file mode 100644 index 0000000..decd31e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/UserPreferenceJpaRepository.java @@ -0,0 +1,17 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.UserPreferenceJpaEntity; + +public interface UserPreferenceJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository { + + @Override + default Class getEntityType() { + return UserPreferenceJpaEntity.class; + } + + UserPreferenceJpaEntity getByPerIdAndLocaleAndPagePath(Long id, String locale, String pagePath); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VAllowanceJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VAllowanceJpaRepository.java new file mode 100644 index 0000000..c536bbd --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VAllowanceJpaRepository.java @@ -0,0 +1,23 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.VAllowanceJpaEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; +import java.util.Set; + +public interface VAllowanceJpaRepository extends EntityReaderJpaRepository { + + default Class getEntityType() { + return VAllowanceJpaEntity.class; + } + + List findByDelegationOrgIdFromIn(Set orgIds); + + @Query(value = " select rmv.* from v_allowances rmv \n" + + "join v_staffmembers stf on stf.per_id = rmv.per_id \n" + + "where rmv.per_id = :userId or stf.email = :userEmail or stf.private_email = LOWER(TRIM(:userEmail))", nativeQuery = true) + List findAllByUserIdOrEmailNotIn(@Param("userId") Long userId, @Param("userEmail") String userEmail); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VAssignmentHistEeasJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VAssignmentHistEeasJpaRepository.java new file mode 100644 index 0000000..ce97562 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VAssignmentHistEeasJpaRepository.java @@ -0,0 +1,23 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.VAssignmentHistEeasJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.VPersonJpaEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; + + +public interface VAssignmentHistEeasJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return VAssignmentHistEeasJpaEntity.class; + } + + List findByPerIdAndDelegationOrgId(Long perId, Long delegationOrgId); + + List findByPerIdOrderByStartDateAsc(Long perId); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VAssignmentHistJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VAssignmentHistJpaRepository.java new file mode 100644 index 0000000..89e7371 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VAssignmentHistJpaRepository.java @@ -0,0 +1,18 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.VAssignmentHistEeasJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.VAssignmentHistJpaEntity; +import java.util.List; + + +public interface VAssignmentHistJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return VAssignmentHistJpaEntity.class; + } + + List findByPerIdOrderByStartDateAsc(Long perId); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VEmptyRateEntitlementTypeJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VEmptyRateEntitlementTypeJpaRepository.java new file mode 100644 index 0000000..3b88b09 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VEmptyRateEntitlementTypeJpaRepository.java @@ -0,0 +1,12 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.VEmptyRateEntitlementTypeJpaEntity; + +public interface VEmptyRateEntitlementTypeJpaRepository extends EntityReaderJpaRepository { + + default Class getEntityType() { + return VEmptyRateEntitlementTypeJpaEntity.class; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VJobJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VJobJpaRepository.java new file mode 100644 index 0000000..f8dd01c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VJobJpaRepository.java @@ -0,0 +1,23 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.VJobJpaEntity; + +/** + * Created by ipatelav on 10/12/2019; e-rights. + * + *

    + * {@link VJobJpaRepository} jpa repository. + *

    + * + * @author Lavinia Pate. + * @see VJobJpaRepository + */ +public interface VJobJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return VJobJpaEntity.class; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VNewTravelAllowanceJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VNewTravelAllowanceJpaRepository.java new file mode 100644 index 0000000..d2be6c5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VNewTravelAllowanceJpaRepository.java @@ -0,0 +1,28 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.VCurrentExerciseNewTravelAllowanceJpaEntity; + +import java.util.List; + +public interface VNewTravelAllowanceJpaRepository extends EntityReaderJpaRepository { + + + @Override + default Class getEntityType() { + return VCurrentExerciseNewTravelAllowanceJpaEntity.class; + } + + @Override + List findAll(); + + + List getAllByPerId(Long perId); + + List findTop10By(); + + List findTop50By(); + + List findTop100By(); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VPersonIndemnityJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VPersonIndemnityJpaRepository.java new file mode 100644 index 0000000..621e1b9 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VPersonIndemnityJpaRepository.java @@ -0,0 +1,34 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.VPersonIndemnityJpaEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; + +public interface VPersonIndemnityJpaRepository extends EntityReaderJpaRepository { + + + default Class getEntityType() { + return VPersonIndemnityJpaEntity.class; + } + + + @Query(value = "SELECT\n" + + " *\n" + + "FROM\n" + + " V_PERSON_RELATIVES_RIGHTS\n" + + "WHERE\n" + + " PER_ID_ATTRIB = :perId\n" + + " AND PER_ID_BENEF = :beneficiaryPerId\n" + + " AND RGT_ID = :rgtId\n" + + " AND DATE_FROM <= TO_DATE(:dateTo, 'DD-MON-YYYY')\n" + + " AND DATE_TO >= TO_DATE(:dateFrom, 'DD-MON-YYYY')",nativeQuery = true) + List getPersonRelativeRights(@Param("perId") Long perId, + @Param("beneficiaryPerId") Long beneficiaryPerId, + @Param("rgtId")Long rgtId, + @Param("dateFrom")String dateFrom, + @Param("dateTo")String dateTo); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VPersonJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VPersonJpaRepository.java new file mode 100644 index 0000000..e044ef6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VPersonJpaRepository.java @@ -0,0 +1,46 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.VPersonJpaEntity; +import java.util.Optional; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; + +/** + * Created by ipatelav on 10/12/2019; e-rights. + * + *

    + * {@link VPersonJpaRepository} jpa repository. + *

    + * + * @author Lavinia Pate. + * @see VPersonJpaRepository + */ +public interface VPersonJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return VPersonJpaEntity.class; + } + + @Query("select p from VPersonJpaEntity p where " + + "(:perId is null or p.id = :perId ) and " + + "(:firstName is null or upper(p.firstName) like UPPER(concat('%',:firstName,'%'))) and " + + "(:lastName is null or upper(p.lastName) like UPPER(concat('%',:lastName,'%'))) and " + + "(:orgName is null or upper(p.organizationName) = upper(:orgName)) ") + List findByFields(@Param("perId") Long perId, @Param("firstName") String firstName, @Param("lastName") String lastName, + @Param("orgName") String orgName); + + List findByIdOrFirstNameContainingOrLastNameContainingOrOrganizationNameContaining(@Param("perId") Long perId, @Param("firstName") String firstName, + @Param("lastName") String lastName, + @Param("orgName") String orgName); + + List findByFirstNameContainingAndLastNameContainingAndOrganizationNameContaining(@Param("firstName") String firstName, + @Param("lastName") String lastName, @Param("orgName") String orgName); + + VPersonJpaEntity findById(Long perId); + + Optional findByPrivateEmailAndOrgId(String privateEmail, Long orgId); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VPlaceOfOriginJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VPlaceOfOriginJpaRepository.java new file mode 100644 index 0000000..11ffba6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VPlaceOfOriginJpaRepository.java @@ -0,0 +1,14 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.VPlaceOfOriginJpaEntity; + +public interface VPlaceOfOriginJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return VPlaceOfOriginJpaEntity.class; + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VReportMovementFileJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VReportMovementFileJpaRepository.java new file mode 100644 index 0000000..d939e15 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VReportMovementFileJpaRepository.java @@ -0,0 +1,30 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.VReportMovementFileJpaEntity; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import java.util.List; +import java.util.Set; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +public interface VReportMovementFileJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return VReportMovementFileJpaEntity.class; + } + + @Override + List findAll(); + + List findByStatusIsNullOrStatusIsNot(MovementFileState state); + + @Query(value = " select rmv.* from v_report_movement_files rmv \n" + + "join v_people stf on stf.per_id = rmv.perid \n" + + "where (rmv.perid = :userId or stf.professional_email = :userEmail or stf.private_email = LOWER(TRIM(:userEmail))) and rmv.status not in :states", nativeQuery = true) + List findAllByUserIdOrEmailAndStatesNotIn(@Param("userId") Long userId, @Param("userEmail") String userEmail, + @Param("states") List states); + + List findByDelegationOrgIdFromIn(Set orgIds); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VTravelAllowancesForManualRegularizationJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VTravelAllowancesForManualRegularizationJpaRepository.java new file mode 100644 index 0000000..fef88f8 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/VTravelAllowancesForManualRegularizationJpaRepository.java @@ -0,0 +1,17 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.VTravelAllowancesForManualRegularizationJpaEntity; + +import java.util.List; + +public interface VTravelAllowancesForManualRegularizationJpaRepository extends EntityReaderJpaRepository { + + + @Override + default Class getEntityType() { + return VTravelAllowancesForManualRegularizationJpaEntity.class; + } + + List findByPostingAllowanceId(Long postingAllowanceId); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/AccommodationBankAccountsSyncFailedJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/AccommodationBankAccountsSyncFailedJpaRepository.java new file mode 100644 index 0000000..08b6e5f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/AccommodationBankAccountsSyncFailedJpaRepository.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.allowances; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.AccommodationBankAccountsSyncFailedJpaEntity; + +/** + * @author ienaccat + */ +public interface AccommodationBankAccountsSyncFailedJpaRepository extends + EntityReaderJpaRepository, + EntitySaverJpaRepository { + + @Override + default Class getEntityType() { + return AccommodationBankAccountsSyncFailedJpaEntity.class; + } + + AccommodationBankAccountsSyncFailedJpaEntity findByPersonId(Long personId); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/AccommodationDeclarationAllowanceJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/AccommodationDeclarationAllowanceJpaRepository.java new file mode 100644 index 0000000..396589f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/AccommodationDeclarationAllowanceJpaRepository.java @@ -0,0 +1,70 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.allowances; + +import static eu.europa.eeas.erights.common.service.provider.allowances.AccommodationDeclarationAllowanceJpaServiceProvider.POSTING_ALLOWANCE_DECL_REQ_TYPE; +import static eu.europa.eeas.erights.common.service.provider.allowances.AccommodationDeclarationAllowanceJpaServiceProvider.POSTING_ALLOWANCE_TYPE; +import static eu.europa.eeas.erights.common.service.provider.allowances.AccommodationPaymentAllowanceJpaServiceProvider.POSTING_ALLOWANCE_PAYM_REQ_TYPE; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.repository.EntityRevisionJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.AccommodationDeclarationAllowanceJpaEntity; +import eu.europa.eeas.erights.common.service.provider.allowances.AccommodationPaymentAllowanceJpaServiceProvider; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationDeclarationState; +import java.util.List; +import java.util.Set; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +/** + * @author ienaccat + */ +public interface AccommodationDeclarationAllowanceJpaRepository extends + EntityReaderJpaRepository, + EntityRevisionJpaRepository, + EntitySaverJpaRepository, + EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return AccommodationDeclarationAllowanceJpaEntity.class; + } + + + @Query("SELECT coalesce(max(ta.postingAllowanceNumber), 0) + 1 AS file_id_sequence_next \n" + + "FROM PostingAllowanceJpaEntity ta\n" + + "WHERE ta.exerciseYear = :year AND (ta.postingAllowanceReqType = '" + POSTING_ALLOWANCE_DECL_REQ_TYPE + "') \n") + Long getSequenceForPostingAllowanceNumber(@Param("year") Integer year); + + @Query(value = " select pl.* from posting_allowances pl \n" + + "join v_staffmembers stf on stf.per_id = pl.per_id \n" + + "where (pl.per_id = :userId or stf.email = :userEmail or stf.private_email = LOWER(TRIM(:userEmail))) and (pl" + + ".posting_allowance_type='ACCOMMODATION' and pl.posting_allowance_req_type='"+POSTING_ALLOWANCE_DECL_REQ_TYPE+"') ", nativeQuery = true) + List findByUserIdOrEmail(@Param("userId") Long userId, @Param("userEmail") String userEmail); + + @Query(value = " select count(*) from posting_allowances pl \n" + + "join v_staffmembers stf on stf.per_id = pl.per_id \n" + + "where (pl.per_id = :userId or stf.email = :userEmail or stf.private_email = LOWER(TRIM(:userEmail))) and pl.posting_allowance_id = :id", nativeQuery = true) + Long countUserByPerIdOrEmailAndId(@Param("userId") Long userId, @Param("userEmail") String userEmail, + @Param("id") Long id); + + long countByIdAndDelegationOrgIdIn(Long postingAllowanceId, Set delegationOrgIds); + + @Query(value = "SELECT DISTINCT\n" + + " decl.posting_allowance_id \n" + + "FROM\n" + + " posting_allowances decl,\n" + + " posting_allowances pay\n" + + "WHERE\n" + + " pay.parent_posting_allowance_id = decl.posting_allowance_id\n" + + " AND decl.posting_allowance_type = '" + POSTING_ALLOWANCE_TYPE + "'\n" + + " AND decl.posting_allowance_req_type = '" + POSTING_ALLOWANCE_DECL_REQ_TYPE + "'\n" + + " AND decl.state = 'APPROVED'\n" + + " AND pay.posting_allowance_type = '" + POSTING_ALLOWANCE_TYPE + "'\n" + + " AND pay.posting_allowance_req_type = '" + AccommodationPaymentAllowanceJpaServiceProvider.POSTING_ALLOWANCE_PAYM_REQ_TYPE + + "'", nativeQuery = true) + List findAllApprovedDeclarationsHavingPayments(); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/AccommodationPaymentAllowanceJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/AccommodationPaymentAllowanceJpaRepository.java new file mode 100644 index 0000000..c2270af --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/AccommodationPaymentAllowanceJpaRepository.java @@ -0,0 +1,66 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.allowances; + +import static eu.europa.eeas.erights.common.service.provider.allowances.AccommodationPaymentAllowanceJpaServiceProvider.POSTING_ALLOWANCE_PAYM_REQ_TYPE; +import static eu.europa.eeas.erights.common.service.provider.allowances.AccommodationPaymentAllowanceJpaServiceProvider.POSTING_ALLOWANCE_TYPE; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.repository.EntityRevisionJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.AccommodationPaymentAllowanceJpaEntity; +import eu.europa.eeas.erights.common.tools.statemachine.AbacRequestState; +import java.util.List; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +/** + * @author ienaccat + */ +public interface AccommodationPaymentAllowanceJpaRepository extends + EntityReaderJpaRepository, + EntityRevisionJpaRepository, + EntitySaverJpaRepository, + EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return AccommodationPaymentAllowanceJpaEntity.class; + } + + + @Query("SELECT coalesce(max(ta.postingAllowanceNumber), 0) + 1 AS file_id_sequence_next \n" + + "FROM PostingAllowanceJpaEntity ta\n" + + "WHERE ta.exerciseYear = :year AND (ta.postingAllowanceReqType = '" + POSTING_ALLOWANCE_PAYM_REQ_TYPE + "') \n") + Long getSequenceForPostingAllowanceNumber(@Param("year") Integer year); + + @Query(value = "SELECT NVL(SUM(guarantee_reimbursed_amount), 0) FROM posting_allowances WHERE " + + "posting_allowance_type = '" + POSTING_ALLOWANCE_TYPE + "' and " + + "posting_allowance_req_type = '" + POSTING_ALLOWANCE_PAYM_REQ_TYPE + "' and " + + "parent_posting_allowance_id = :accommodationDeclarationId", nativeQuery = true) + Double retrieveAlreadyReimbursedGuaranteeAmountFirstPayment(@Param("accommodationDeclarationId") Long accommodationDeclarationId); + + @Query(value = "SELECT NVL(SUM(guarantee_reimbursed_amount), 0) FROM posting_allowances WHERE " + + "posting_allowance_type = '" + POSTING_ALLOWANCE_TYPE + "' and " + + "posting_allowance_req_type = '" + POSTING_ALLOWANCE_PAYM_REQ_TYPE + "' and " + + "posting_allowance_id != :currentAccommodationPaymentId and " + + "parent_posting_allowance_id = :accommodationDeclarationId", nativeQuery = true) + Double retrieveAlreadyReimbursedGuaranteeAmountExistingPayments(@Param("accommodationDeclarationId") Long accommodationDeclarationId, + @Param("currentAccommodationPaymentId") Long currentAccommodationPaymentId); + + List findAllByParentPostingAllowanceId(Long parentPostingAllowanceId); + + @Modifying + @Query("update AccommodationPaymentAllowanceJpaEntity accPayment set accPayment.abacWorkflowState = :abacWorkflowState where accPayment.id = :id") + void updateAccommodationPaymentAbacWorkflowState( + @Param("abacWorkflowState") String abacWorkflowState, @Param("id") Long id); + + @Modifying + @Query("update AccommodationPaymentAllowanceJpaEntity accPayment set accPayment.abacState = :abacState where accPayment.id = :id") + void updateAccommodationPaymentAbacState(@Param("abacState") AbacRequestState abacState, + @Param("id") Long id); + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/BudgetLineMappingJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/BudgetLineMappingJpaRepository.java new file mode 100644 index 0000000..b64b37b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/BudgetLineMappingJpaRepository.java @@ -0,0 +1,19 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.allowances; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.BudgetLinesMappingJpaEntity; +import java.util.Optional; + +/** + * @author itadephe + */ +public interface BudgetLineMappingJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return BudgetLinesMappingJpaEntity.class; + } + + Optional findByFromBudgetLine( String fromBudgetLine); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/PostingAllowanceDefaultJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/PostingAllowanceDefaultJpaRepository.java new file mode 100644 index 0000000..6f0b4bb --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/PostingAllowanceDefaultJpaRepository.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.allowances; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceDefaultJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowancePersonJpaEntity; +import org.springframework.data.jpa.repository.query.Procedure; +import org.springframework.data.repository.query.Param; + +import java.math.BigDecimal; +import java.time.LocalDate; + +public interface PostingAllowanceDefaultJpaRepository extends + EntityReaderJpaRepository, + EntitySaverJpaRepository, + EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return PostingAllowanceDefaultJpaEntity.class; + } + + PostingAllowanceDefaultJpaEntity getPostingAllowanceDefaultJpaEntityByIataCodeFromAndIataCodeToAndPostingAllowanceTypeAndPostingAllowanceReqTypeAndExerciseYearAndLatest(String iataCodeFrom, + String iataCodeTo, + String type, + String reqType, + Integer exerciseYear, + Boolean latest); + + PostingAllowanceDefaultJpaEntity findByIataCodeFromAndIataCodeToAndPostingAllowanceTypeAndPostingAllowanceReqTypeAndExerciseYear(String iataCodeFrom, String iataCodeTo, String postingAllowanceType, String postingAllowanceReqType, Integer exerciseYear); + + + @Procedure("PostingAllowanceDefaultJpaEntity.getPostingAllowanceFareByIata") + BigDecimal getPostingAllowanceFareByIata(@Param("P_ORG_AIRPORT_IATA_CODE") String iataOrigin, @Param("P_DST_AIRPORT_IATA_CODE") String iataDestiny, @Param("P_DATE") LocalDate date); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/PostingAllowancePersonJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/PostingAllowancePersonJpaRepository.java new file mode 100644 index 0000000..82f1191 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/PostingAllowancePersonJpaRepository.java @@ -0,0 +1,31 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.allowances; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.repository.EntityRevisionJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowancePersonJpaEntity; +import org.springframework.data.jpa.repository.Modifying; + +import java.util.List; + +public interface PostingAllowancePersonJpaRepository extends EntityReaderJpaRepository, + EntityRevisionJpaRepository, + EntitySaverJpaRepository, + EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return PostingAllowancePersonJpaEntity.class; + } + + List getByPerIdAndTrcCd(Long perId, Long trcCd); + + @Modifying(flushAutomatically = true) + void deleteByPostingAllowanceId(Long postingAllowanceId); + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/PostingAllowancesJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/PostingAllowancesJpaRepository.java new file mode 100644 index 0000000..11596c3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/PostingAllowancesJpaRepository.java @@ -0,0 +1,29 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.allowances; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.repository.EntityRevisionJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.VPersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestJpaEntity; + +import java.util.List; + +public interface PostingAllowancesJpaRepository extends EntityReaderJpaRepository, + EntityRevisionJpaRepository, + EntitySaverJpaRepository, + EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return PostingAllowanceJpaEntity.class; + } + + List findByParentPostingAllowanceId(Long parentId); + + List findByStaffMemberAndExerciseYear(VPersonJpaEntity staffMember, Integer exerciseYear); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/PostingAllowancesTreatedJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/PostingAllowancesTreatedJpaRepository.java new file mode 100644 index 0000000..78b505e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/PostingAllowancesTreatedJpaRepository.java @@ -0,0 +1,34 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.allowances; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.repository.EntityRevisionJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.VPersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceTreatedJpaEntity; + +import java.time.LocalDate; +import java.util.List; +import java.util.Optional; + +public interface PostingAllowancesTreatedJpaRepository extends EntityReaderJpaRepository, + EntityRevisionJpaRepository, + EntitySaverJpaRepository, + EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return PostingAllowanceTreatedJpaEntity.class; + } + + List findBySojIdAndPerIdAndDelegationOrgIdAndExerciseYear + (Long sojId,Long perId,Long delegationOrgId,Integer exerciseYear); + + List findByPerIdAndDelegationOrgIdAndExerciseYear + (Long perId,Long delegationOrgId,Integer exerciseYear); + + Optional findByPerIdAndSojIdAndExerciseYearAndExpatriationAllowanceStartDate(Long perId, Long sojId, Integer exerciseYear, LocalDate startDate); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/RegularizationAllowanceJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/RegularizationAllowanceJpaRepository.java new file mode 100644 index 0000000..e514245 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/RegularizationAllowanceJpaRepository.java @@ -0,0 +1,55 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.allowances; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.repository.EntityRevisionJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.data.jpa.entity.VPersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.RegularizationAllowanceJpaEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; +import java.util.Optional; + +public interface RegularizationAllowanceJpaRepository extends + EntityReaderJpaRepository, + EntityRevisionJpaRepository, + EntitySaverJpaRepository, + EntityDeleterJpaRepository, + EntityEnanchedSaverRepository +{ + + @Override + default Class getEntityType() { + return RegularizationAllowanceJpaEntity.class; + } + + + + + @Query("select coalesce(max(ta.postingAllowanceNumber), 0) + 1 as file_id_sequence_next \n" + + "from PostingAllowanceJpaEntity ta\n" + + "where ta.exerciseYear = :year and (ta.postingAllowanceReqType = 'INITIAL' or ta.postingAllowanceReqType ='REGULARIZATION') \n") + Long getSequenceForPostingAllowanceNumber(@Param("year") Integer year); + + List findByPostingAllowanceDiscriminatoryTypeAndStatus(String postingAllowanceDiscriminatoryType, String status); + + List findBySojIdAndExerciseYear(Long sojId,Integer exerciseYear); + + @Query(value = " select pl.* from posting_allowances pl \n" + + "join v_staffmembers stf on stf.per_id = pl.per_id \n" + + "where (pl.per_id = :userId or stf.email = :userEmail or stf.private_email = LOWER(TRIM(:userEmail))) and pl.posting_allowance_id = :id", nativeQuery = true) + Optional findByUserIdOrEmailAndId(@Param("userId") Long userId, @Param("userEmail") String userEmail, + @Param("id") Long id); + + List findByStaffMemberAndExerciseYear(VPersonJpaEntity personJpaEntity, Integer exerciseYear); + + List findByStaffMemberAndDelegationOrgIdAndExerciseYearOrderByIdDesc(VPersonJpaEntity personJpaEntity,Long delegationOrgId,Integer exerciseYear); + + + Optional findByParentPostingAllowanceId(Long parentPostingAllowanceId); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/TravelAllowanceJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/TravelAllowanceJpaRepository.java new file mode 100644 index 0000000..fd4165a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/TravelAllowanceJpaRepository.java @@ -0,0 +1,52 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.allowances; + +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.repository.EntityRevisionJpaRepository; +import eu.europa.eeas.ananke.core.data.entity.Entity; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.VPersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.TravelAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.VReportPostingAllowanceJpaEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; +import java.util.Optional; + +public interface TravelAllowanceJpaRepository extends + EntityReaderJpaRepository, + EntityRevisionJpaRepository, + EntitySaverJpaRepository, + EntityDeleterJpaRepository, + EntityEnanchedSaverRepository +{ + + @Override + default Class getEntityType() { + return TravelAllowanceJpaEntity.class; + } + + + @Query("select coalesce(max(ta.postingAllowanceNumber), 0) + 1 as file_id_sequence_next \n" + + "from PostingAllowanceJpaEntity ta\n" + + "where ta.exerciseYear = :year and (ta.postingAllowanceReqType = 'INITIAL' or ta.postingAllowanceReqType ='REGULARIZATION') \n") + Long getSequenceForPostingAllowanceNumber(@Param("year") Integer year); + + List findByPostingAllowanceDiscriminatoryTypeAndStatus(String postingAllowanceDiscriminatoryType, String status); + + List findBySojIdAndExerciseYear(Long sojId,Integer exerciseYear); + + @Query(value = " select pl.* from posting_allowances pl \n" + + "join v_staffmembers stf on stf.per_id = pl.per_id \n" + + "where (pl.per_id = :userId or stf.email = :userEmail or stf.private_email = LOWER(TRIM(:userEmail))) and pl.posting_allowance_id = :id", nativeQuery = true) + Optional findByUserIdOrEmailAndId(@Param("userId") Long userId, @Param("userEmail") String userEmail, + @Param("id") Long id); + + List findByStaffMemberAndExerciseYear(VPersonJpaEntity personJpaEntity, Integer exerciseYear); + + List findByStaffMemberAndDelegationOrgIdAndExerciseYearOrderByIdDesc(VPersonJpaEntity personJpaEntity,Long delegationOrgId,Integer exerciseYear); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/VReportPostingAllowancesJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/VReportPostingAllowancesJpaRepository.java new file mode 100644 index 0000000..d3e2964 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/VReportPostingAllowancesJpaRepository.java @@ -0,0 +1,55 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.allowances; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.VReportPostingAllowanceJpaEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; +import java.util.Set; + +public interface VReportPostingAllowancesJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return VReportPostingAllowanceJpaEntity.class; + } + + List getByPerId(Long perId); + + List getByExerciseYear(Integer exerciseYear); + + List getByPerIdAndExerciseYear(Long perId, Integer exerciseYear); + + + @Query(value = " select rpl.* from v_report_posting_allowances rpl \n" + + "where (rpl.per_id = :userId or rpl.professional_email = :userEmail or rpl.private_email = LOWER(TRIM(:userEmail))) and rpl.state not in :states", nativeQuery = true) + List findAllByUserIdOrEmailAndStatesNotIn(@Param("userId") Long userId, @Param("userEmail") String userEmail, + @Param("states") List states); + + + @Query(value = " select rpl.* from v_report_posting_allowances rpl \n" + + "where (rpl.per_id = :userId or rpl.professional_email = :userEmail or rpl.private_email = LOWER(TRIM(:userEmail))) and rpl.exercise_year = :exercise_year and rpl.state not in :states", nativeQuery = true) + List findAllByUserIdOrEmailAndYearAndStatesNotIn(@Param("userId") Long userId, @Param("userEmail") String userEmail, + @Param("exercise_year") Integer exercise_year, + @Param("states") List states); + + @Query(value = " select rpl.* from v_report_posting_allowances rpl \n" + + "where (rpl.per_id = :userId or rpl.professional_email = :userEmail or rpl.private_email = LOWER(TRIM(:userEmail))) and rpl.exercise_year = :exercise_year", nativeQuery = true) + List findAllByUserIdOrEmailAndYear(@Param("userId") Long userId, @Param("userEmail") String userEmail, + @Param("exercise_year") Integer exercise_year); + + + @Query(value = " select rpl.* from v_report_posting_allowances rpl \n" + + "where (rpl.per_id = :userId or rpl.professional_email = :userEmail or rpl.private_email = LOWER(TRIM(:userEmail)))", nativeQuery = true) + List findAllByUserIdOrEmail(@Param("userId") Long userId, @Param("userEmail") String userEmail); + + + List getByPerIdAndExerciseYearAndDelegationOrgIdIn(Long perId, Integer exerciseYear, Set orgIds); + + List getByExerciseYearAndDelegationOrgIdIn(Integer exerciseYear, Set orgIds); + + List getByPerIdAndDelegationOrgIdIn(Long perId, Set orgIds); + + List findByDelegationOrgIdIn(Set orgIds); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/VReportPostingAllowancesSpecification.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/VReportPostingAllowancesSpecification.java new file mode 100644 index 0000000..d3163ef --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/VReportPostingAllowancesSpecification.java @@ -0,0 +1,50 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.allowances; + +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.VReportPostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.tools.utils.SpecSearchCriteria; +import org.springframework.data.jpa.domain.Specification; + +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; + +public class VReportPostingAllowancesSpecification implements Specification { + + private final SpecSearchCriteria criteria; + + public VReportPostingAllowancesSpecification(final SpecSearchCriteria criteria) { + super(); + this.criteria = criteria; + } + + public SpecSearchCriteria getCriteria() { + return criteria; + } + + @Override + public Predicate toPredicate(final Root root, final CriteriaQuery query, final CriteriaBuilder builder) { + switch (criteria.getOperation()) { + case EQUALITY: + return builder.equal(root.get(criteria.getKey()), criteria.getValue()); + case NEGATION: + return builder.notEqual(root.get(criteria.getKey()), criteria.getValue()); + case GREATER_THAN: + return builder.greaterThan(root.get(criteria.getKey()), criteria.getValue().toString()); + case LESS_THAN: + return builder.lessThan(root.get(criteria.getKey()), criteria.getValue().toString()); + case LIKE: + return builder.like(root.get(criteria.getKey()), criteria.getValue().toString()); + case STARTS_WITH: + return builder.like(root.get(criteria.getKey()), criteria.getValue() + "%"); + case ENDS_WITH: + return builder.like(root.get(criteria.getKey()), "%" + criteria.getValue()); + case CONTAINS: + return builder.like(root.get(criteria.getKey()), "%" + criteria.getValue() + "%"); + case IN_LIST: + return root.get(criteria.getKey()).in(criteria.getList()); + default: + return null; + } + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/VReportPostingAllowancesSpecificationBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/VReportPostingAllowancesSpecificationBuilder.java new file mode 100644 index 0000000..e72c4b3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/allowances/VReportPostingAllowancesSpecificationBuilder.java @@ -0,0 +1,124 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.allowances; + + +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.VReportPostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.tools.utils.SearchOperation; +import eu.europa.eeas.erights.common.tools.utils.SpecSearchCriteria; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.data.jpa.domain.Specification; + +import java.util.ArrayList; +import java.util.List; + +public final class VReportPostingAllowancesSpecificationBuilder { + + private final List params; + + public VReportPostingAllowancesSpecificationBuilder() { + params = new ArrayList<>(); + } + + public final VReportPostingAllowancesSpecificationBuilder with(final String key, final String operation, final Object value, final String prefix, final String suffix,List list) { + return with(null, key, operation, value, prefix, suffix,list); + } + + public VReportPostingAllowancesSpecificationBuilder with(final String orPredicate, final String key, final String operation, final Object value, final String prefix, final String suffix,List list) { + SearchOperation op = SearchOperation.getSimpleOperation(operation.charAt(0)); + if (op != null) { + if (op == SearchOperation.EQUALITY) { // the operation may be complex operation + final boolean startWithAsterisk = prefix != null && prefix.contains(SearchOperation.ZERO_OR_MORE_REGEX); + final boolean endWithAsterisk = suffix != null && suffix.contains(SearchOperation.ZERO_OR_MORE_REGEX); + + if (startWithAsterisk && endWithAsterisk) { + op = SearchOperation.CONTAINS; + } else if (startWithAsterisk) { + op = SearchOperation.ENDS_WITH; + } else if (endWithAsterisk) { + op = SearchOperation.STARTS_WITH; + } else if(CollectionUtils.isNotEmpty(list)){ + op = SearchOperation.IN_LIST; + } + } + params.add(new SpecSearchCriteria(orPredicate, key, op, value,list)); + } + return this; + } + + public Specification build() { + if (params.size() == 0) + return null; + + Specification result = new VReportPostingAllowancesSpecification(params.get(0)); + + for (int i = 1; i < params.size(); i++) { + result = params.get(i).isOrPredicate() + ? Specification.where(result).or(new VReportPostingAllowancesSpecification(params.get(i))) + : Specification.where(result).and(new VReportPostingAllowancesSpecification(params.get(i))); + } + + return result; + } + + public VReportPostingAllowancesSpecificationBuilder with(VReportPostingAllowancesSpecification spec) { + params.add(spec.getCriteria()); + return this; + } + + public VReportPostingAllowancesSpecificationBuilder with(SpecSearchCriteria criteria) { + params.add(criteria); + return this; + } + + /* + Example code when filterServerSide enabled + if(nonNull(model)){ + ObjectMapper om = new ObjectMapper(); + try { + FilterModelDto root = om.readValue(model, FilterModelDto.class); + + if(nonNull(root) && CollectionUtils.isNotEmpty(root.getFilter().getFilters())){ + + VReportPostingAllowancesSpecificationBuilder builder=new VReportPostingAllowancesSpecificationBuilder(); + + root.getFilter().getFilters().forEach(filter -> { + + if(isNull(filter.getLogic())){ + Object value; + if("exerciseYear".equals(filter.getField()) || "perId".equals(filter.getField())){ + value = Integer.valueOf(filter.getValue()); + builder.with(filter.getField(),":",value,null,null,null); + }else{ + + String prefix = ZERO_OR_MORE_REGEX; + String suffix = ZERO_OR_MORE_REGEX; + if("startswith".equalsIgnoreCase(filter.getOperator())){ + prefix = null; + }else if("endswith".equalsIgnoreCase(filter.getOperator())){ + suffix = null; + } + + value = String.valueOf(filter.getValue()); + builder.with(filter.getField(),":",value,prefix,suffix,null); + } + }else if(CollectionUtils.isNotEmpty(filter.getFilters())){ + + String key = filter.getFilters().get(0).getField(); + List list = filter.getFilters().stream() + .map(Filter::getValue) + .collect(Collectors.toList()); + builder.with(key,":",null,null,null,list); + } + }); + + Specification spec = builder.build(); + return getBeanMapper().mapAsList(repository.findAll(spec), VReportPostingAllowanceModel.class); + } + + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + return getBeanMapper().mapAsList(repository.findAll(), VReportPostingAllowanceModel.class); + } + + */ +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/comments/CommentForMovementFileJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/comments/CommentForMovementFileJpaRepository.java new file mode 100644 index 0000000..24b1ab2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/comments/CommentForMovementFileJpaRepository.java @@ -0,0 +1,25 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.comments; + +import java.util.List; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsForMovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsJpaEntity; + +public interface CommentForMovementFileJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository { + + @Override + default Class getEntityType() { + return CommentsForMovementFileJpaEntity.class; + } + + @Query(value = "select * from COMMENTS where COMMENT_TYPE = '" + CommentsJpaEntity.COMMENT_TYPE_MOVEMENT_FILE + + "' and ENTITY_ID = :entityId and DELETED = 'N' order by CREATED_AT asc", nativeQuery = true) + List getCommentsForMovementFile(@Param("entityId") Long entityId); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/comments/CommentForPostingAllowanceJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/comments/CommentForPostingAllowanceJpaRepository.java new file mode 100644 index 0000000..8ff09b9 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/comments/CommentForPostingAllowanceJpaRepository.java @@ -0,0 +1,30 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.comments; + +/** + * + * @author tapiafo + * + */ + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsForPostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsJpaEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; + +public interface CommentForPostingAllowanceJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository { + + @Override + default Class getEntityType() { + return CommentsForPostingAllowanceJpaEntity.class; + } + + @Query(value = "select * from COMMENTS where COMMENT_TYPE = '" + CommentsJpaEntity.COMMENT_TYPE_POSTING_ALLOWANCE + + "' and ENTITY_ID = :entityId and DELETED = 'N' order by CREATED_AT asc", nativeQuery = true) + List getCommentsForPostingAllowance(@Param("entityId") Long entityId); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/comments/CommentForRequestJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/comments/CommentForRequestJpaRepository.java new file mode 100644 index 0000000..9b36ab7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/comments/CommentForRequestJpaRepository.java @@ -0,0 +1,25 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.comments; + +import java.util.List; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsForRequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsJpaEntity; + +public interface CommentForRequestJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository { + + @Override + default Class getEntityType() { + return CommentsForRequestJpaEntity.class; + } + + @Query(value = "select * from COMMENTS where COMMENT_TYPE = '" + CommentsJpaEntity.COMMENT_TYPE_REQUEST + + "' and ENTITY_ID = :entityId and DELETED = 'N' order by CREATED_AT asc", nativeQuery = true) + List getCommentsForRequest(@Param("entityId") Long entityId); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/comments/CommentJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/comments/CommentJpaRepository.java new file mode 100644 index 0000000..6c88b2d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/comments/CommentJpaRepository.java @@ -0,0 +1,17 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.comments; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsJpaEntity; + +/** + * Common repo for all Comments. This is used to delete. + * @author idominju + * + */ +public interface CommentJpaRepository extends EntityDeleterJpaRepository { + + @Override + default Class getEntityType() { + return CommentsJpaEntity.class; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/DeclarationJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/DeclarationJpaRepository.java new file mode 100644 index 0000000..2dd04a4 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/DeclarationJpaRepository.java @@ -0,0 +1,26 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.declaration; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.DeclarationJpaEntity; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationState; + +import java.util.List; + +public interface DeclarationJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return DeclarationJpaEntity.class; + } + + DeclarationJpaEntity getByMovementFileId(Long movementFileId); + + Integer countByPersonBankInfoId(Long id); + + List findAllByEnableAndState(Boolean enable, DeclarationState state); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/DeclarationPersonAttachmentJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/DeclarationPersonAttachmentJpaRepository.java new file mode 100644 index 0000000..4f33a89 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/DeclarationPersonAttachmentJpaRepository.java @@ -0,0 +1,16 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.declaration; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.DeclarationPersonAttachmentJpaEntity; + +import java.util.List; + +public interface DeclarationPersonAttachmentJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return DeclarationPersonAttachmentJpaEntity.class; + } + + List findAllByDeclarationPerson_id(Long declarationPersonId); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/DeclarationPersonJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/DeclarationPersonJpaRepository.java new file mode 100644 index 0000000..a4cf3b1 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/DeclarationPersonJpaRepository.java @@ -0,0 +1,28 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.declaration; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.DeclarationPersonJpaEntity; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +/** + * @author itadephe + */ +public interface DeclarationPersonJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return DeclarationPersonJpaEntity.class; + } + + @Modifying + @Query("UPDATE DeclarationPersonJpaEntity dpe SET dpe.joiningResettlement = :joiningResettlement WHERE dpe.id = :id") + public void updateJoiningResettlement(@Param("joiningResettlement") Boolean joiningResettlement , + @Param("id") Long declaredPerId); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/FamilyMemberJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/FamilyMemberJpaRepository.java new file mode 100644 index 0000000..1bcade7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/FamilyMemberJpaRepository.java @@ -0,0 +1,18 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.declaration; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.FamilyMemberJpaEntity; + +import java.util.List; + +public interface FamilyMemberJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return FamilyMemberJpaEntity.class; + } + + List findAllByPerId(Long perId); + + FamilyMemberJpaEntity findByPerIdAndTrpCD(Long perId, Long trpCd); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/MVPersonAccommodationJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/MVPersonAccommodationJpaRepository.java new file mode 100644 index 0000000..6e8a9be --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/MVPersonAccommodationJpaRepository.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.declaration; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.MVPersonAccommodationJpaEntity; +import java.util.List; +import java.util.Optional; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +/** + * @author ienaccat + * @since 5.0.0 + */ +public interface MVPersonAccommodationJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return MVPersonAccommodationJpaEntity.class; + } + + @Query("select p from MVPersonAccommodationJpaEntity p where " + + "(:perId is null or p.id = :perId ) and " + + "(:firstName is null or upper(p.firstName) like UPPER(concat('%',:firstName,'%'))) and " + + "(:lastName is null or upper(p.lastName) like UPPER(concat('%',:lastName,'%'))) and " + + "(:orgName is null or upper(p.organizationName) = upper(:orgName)) ") + List findByFields(@Param("perId") Long perId, @Param("firstName") String firstName, + @Param("lastName") String lastName, + @Param("orgName") String orgName); + + + MVPersonAccommodationJpaEntity findById(Long perId); + + Optional findByPrivateEmail(String privateEmail); + + @Query(value = "SELECT per_id FROM v_staffmembers_accommodation " + + " WHERE per_id NOT IN (SELECT per_id FROM persons_bank_info WHERE lef IS NOT NULL AND baf IS NOT NULL)" + + " AND per_id NOT IN (SELECT per_id from accommodation_bank_accounts_sync_failed WHERE failure_no >= :maxRetries)" + + " FETCH FIRST :numRows ROWS ONLY", nativeQuery = true) + List findAllNotHavingBankAccountsAndNotFailed(@Param("numRows") int numRows, @Param("maxRetries") int maxRetries); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/PersonAddressHistoryJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/PersonAddressHistoryJpaRepository.java new file mode 100644 index 0000000..a1eb486 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/PersonAddressHistoryJpaRepository.java @@ -0,0 +1,17 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.declaration; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonAddressHistoryJpaEntity; + +import java.util.List; + +public interface PersonAddressHistoryJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return PersonAddressHistoryJpaEntity.class; + } + + List findAllByPerId(Long perId); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/PersonAddressJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/PersonAddressJpaRepository.java new file mode 100644 index 0000000..626d447 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/PersonAddressJpaRepository.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.declaration; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonAddressJpaEntity; + +import java.util.List; + +public interface PersonAddressJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return PersonAddressJpaEntity.class; + } + + List findAllByPerId(Long perId); + + List findAllByPerIdAndTadrCd(Long perId, Integer tadrCd); + + List findAllByPerIdAndTadrCdAndCountryId(Long perId, Integer tadrCd, String countryCode); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/PersonBankInfoJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/PersonBankInfoJpaRepository.java new file mode 100644 index 0000000..bf24416 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/declaration/PersonBankInfoJpaRepository.java @@ -0,0 +1,26 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.declaration; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.PersonBankInfoJpaEntity; + +import java.util.List; +import java.util.Optional; + +public interface PersonBankInfoJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository { + + @Override + default Class getEntityType() { + return PersonBankInfoJpaEntity.class; + } + + List findAllByPerIdAndLefNotNullAndBafNotNull(Long perId); + + List findAllByPerIdAndLefNotNullAndBankIdentificationNotNull(Long perId); + + Optional> findByPerIdAndIbanCode(Long perId, String ibanCode); + + List findAllByPerId(Long perId); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/document/MovementDocSectionJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/document/MovementDocSectionJpaRepository.java new file mode 100644 index 0000000..22bfa33 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/document/MovementDocSectionJpaRepository.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.document; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.document.MovementDocSectionJpaEntity; + +import java.util.List; + +public interface MovementDocSectionJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return MovementDocSectionJpaEntity.class; + } + + List findByOrderBySortOrderAsc(); +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementMaxDefaultJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementMaxDefaultJpaRepository.java new file mode 100644 index 0000000..dfdc609 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementMaxDefaultJpaRepository.java @@ -0,0 +1,106 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxDefaultJpaEntity; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +public interface EntitlementMaxDefaultJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository { + + @Override + default Class getEntityType() { + return EntitlementMaxDefaultJpaEntity.class; + } + + List findByCityCodeFromAndCityCodeToAndStartDateAndEntitlementMaxCatIdAndLatestAndKg(String cityCodeFrom, String cityCodeTo, LocalDate startDate, Long entitlementMaxCatId, Boolean latest, BigDecimal kg); + + List findByCityCodeFromAndCityCodeToAndStartDateAndEntitlementMaxCatIdAndLatest(String cityCodeFrom, String cityCodeTo, LocalDate startDate, Long entitlementMaxCatId, Boolean latest); + + @Query("SELECT COUNT(entity) FROM EntitlementMaxDefaultJpaEntity entity WHERE " + + "entity.cityCodeFrom = :cityCodeFrom AND " + + "entity.cityCodeTo = :cityCodeTo AND " + + "entity.startDate = :startDate AND " + + "entity.entitlementMaxCatId = :entitlementMaxCatId AND " + + "entity.latest = :latest AND " + + "entity.sourceData = :sourceData") + long countEntitlementMaxDefaultSourceData(@Param("cityCodeFrom") String cityCodeFrom, + @Param("cityCodeTo") String cityCodeTo, + @Param("startDate") LocalDate startDate, + @Param("entitlementMaxCatId") Long entitlementMaxCatId, + @Param("latest") Boolean latest, + @Param("sourceData") String sourceData); + + @Query("SELECT COUNT(entity) FROM EntitlementMaxDefaultJpaEntity entity WHERE " + + "entity.cityCodeFrom = :cityCodeFrom AND " + + "entity.cityCodeTo = :cityCodeTo AND " + + "entity.startDate = :startDate AND " + + "entity.entitlementMaxCatId = :entitlementMaxCatId AND " + + "entity.latest = :latest AND " + + "entity.sourceData = :sourceData AND " + + "entity.kg = :kg") + long countEntitlementMaxDefaultSourceData(@Param("cityCodeFrom") String cityCodeFrom, + @Param("cityCodeTo") String cityCodeTo, + @Param("startDate") LocalDate startDate, + @Param("entitlementMaxCatId") Long entitlementMaxCatId, + @Param("latest") Boolean latest, + @Param("sourceData") String sourceData, + @Param("kg") BigDecimal kg); + + @Modifying + @Query(value = "UPDATE ENTITLMNT_MAXS_DEFAULT " + + "SET LATEST = 'N' " + + "WHERE COUNTRY_CODE_TO = :countryCodeTo " + + "AND COUNTRY_CODE_FROM = :countryCodeFrom " + + "AND ENTITLMNT_MAX_CAT_ID = (SELECT ENTITLMNT_MAX_CAT_ID FROM ENTITLMNT_MAXS_CAT WHERE CODE = :rateType) " + + "AND START_DATE = :startDate", nativeQuery = true) + void cancelEntitlementMaxDefault(@Param("countryCodeFrom") String countryCodeFrom, + @Param("countryCodeTo") String countryCodeTo, + @Param("startDate") LocalDate startDate, + @Param("rateType") String rateType); + + @Modifying + @Query(value = "INSERT INTO ENTITLMNT_MAXS_DEFAULT (ENTITLMNT_MAX_DEFAULT_ID, " + + " CITY_CODE_TO, " + + " CITY_CODE_FROM, " + + " COUNTRY_CODE_TO, " + + " COUNTRY_CODE_FROM, " + + " CREATED_AT, " + + " CREATED_BY, " + + " UPDATED_BY, " + + " UPDATED_AT, " + + " AMOUNT, " + + " CURRENCY, " + + " START_DATE, " + + " ENTITLMNT_MAX_CAT_ID, " + + " LATEST, " + + " SOURCE_DATA) " + + "SELECT SEQ_ENTITLMNT_MAX_DEFAULT.NEXTVAL, " + + " country_to.city_code, " + + " country_from.city_code, " + + " country_to.COUNTRY_CODE, " + + " country_from.COUNTRY_CODE, " + + " sysdate, " + + " 0, " + + " 0, " + + " sysdate, " + + " :amount, " + + " 'EUR', " + + " :startDate, " + + " (SELECT ENTITLMNT_MAX_CAT_ID FROM ENTITLMNT_MAXS_CAT WHERE CODE = :rateType), " + + " 'Y', " + + " 'HR' " + + "FROM MV_CITIES country_from, MV_CITIES country_to " + + "WHERE country_from.COUNTRY_CODE= :countryCodeFrom AND country_to.COUNTRY_CODE = :countryCodeTo", nativeQuery = true) + void activeEntitlementMaxDefault(@Param("countryCodeFrom") String countryCodeFrom, + @Param("countryCodeTo") String countryCodeTo, + @Param("startDate") LocalDate startDate, + @Param("rateType") String rateType, + @Param("amount") BigDecimal amount); +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementMaxJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementMaxJpaRepository.java new file mode 100644 index 0000000..366dde7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementMaxJpaRepository.java @@ -0,0 +1,175 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxJpaEntity; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.math.BigInteger; +import java.time.LocalDate; +import java.util.List; +import java.util.Optional; + +public interface EntitlementMaxJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository { + + @Override + default Class getEntityType() { + return EntitlementMaxJpaEntity.class; + } + + @Query(value = "SELECT entity From EntitlementMaxJpaEntity entity WHERE entity.entitlementType.id = :typeId") + List findByEntitlementTypeId(@Param("typeId") Long typeId); + + @Query(value = "SELECT entity From EntitlementMaxJpaEntity entity WHERE entity.entitlementType.id = :typeId AND entity.entitlementMaxCat.code = :entitlementMaxCat") + EntitlementMaxJpaEntity findByEntitlementTypeIdAndEntitlementMaxCat(@Param("typeId") Long typeId, @Param("entitlementMaxCat")EntitlementTypeCatCode entitlementMaxCat); + + @Query(value = "SELECT ENTITLMNT_MAX_ID FROM ENTITLMNT_MAXS em " + + "INNER JOIN ENTITLMNT_TYPES et on et.ENTITLMNT_TYPE_ID = em.ENTITLMNT_TYPE_ID " + + "INNER JOIN MOVEMENT_FILES mv on mv.MOVEMENT_FILE_ID = et.MOVEMENT_FILE_ID " + + "INNER JOIN MOVEMENT_CONTEXT mc on mc.MOVEMENT_CONTEXT_ID = mv.CONTEXT_ID " + + "WHERE " + + "mv.CITY_CODE_FROM = :cityFrom AND " + + "mv.CITY_CODE_TO = :cityTo AND " + + "em.RATE_YEAR = :rateYear AND " + + "em.ENTITLMNT_MAX_CAT_ID = :entitlementMaxCatId AND " + + "em.MAX_KG = :kg AND " + + "em.MAX_VALUE IS NULL AND " + + "em.MAX_CURRENCY IS NULL AND " + + "mv.STATE NOT IN ('DELETED', 'WITHDRAWN') AND " + + "mc.NAME NOT IN ('CRISIS')", nativeQuery = true) + List getEntitlementMaxJpaEntitiesToUpdate(@Param("cityFrom") String cityFrom, + @Param("cityTo") String cityTo, + @Param("rateYear") Integer rateYear, + @Param("entitlementMaxCatId") Long entitlementMaxCatId, + @Param("kg") BigInteger kg); + + @Query(value = "SELECT ENTITLMNT_MAX_ID FROM ENTITLMNT_MAXS em " + + "INNER JOIN ENTITLMNT_TYPES et on et.ENTITLMNT_TYPE_ID = em.ENTITLMNT_TYPE_ID " + + "INNER JOIN MOVEMENT_FILES mv on mv.MOVEMENT_FILE_ID = et.MOVEMENT_FILE_ID " + + "INNER JOIN MOVEMENT_CONTEXT mc on mc.MOVEMENT_CONTEXT_ID = mv.CONTEXT_ID " + + "WHERE " + + "mv.CITY_CODE_FROM = :cityFrom AND " + + "mv.CITY_CODE_TO = :cityTo AND " + + "em.RATE_YEAR = :rateYear AND " + + "em.ENTITLMNT_MAX_CAT_ID = :entitlementMaxCatId AND " + + "em.MAX_VALUE IS NULL AND " + + "em.MAX_CURRENCY IS NULL AND " + + "mv.STATE NOT IN ('DELETED', 'WITHDRAWN') AND " + + "mc.NAME NOT IN ('CRISIS')", nativeQuery = true) + List getEntitlementMaxJpaEntitiesToUpdate(@Param("cityFrom") String cityFrom, + @Param("cityTo") String cityTo, + @Param("rateYear") Integer rateYear, + @Param("entitlementMaxCatId") Long entitlementMaxCatId); + + @Query(value = "SELECT ENTITLMNT_MAX_ID FROM ENTITLMNT_MAXS em " + + "INNER JOIN ENTITLMNT_TYPES et on et.ENTITLMNT_TYPE_ID = em.ENTITLMNT_TYPE_ID " + + "INNER JOIN MOVEMENT_FILES mv on mv.MOVEMENT_FILE_ID = et.MOVEMENT_FILE_ID " + + "INNER JOIN MOVEMENT_CONTEXT mc on mc.MOVEMENT_CONTEXT_ID = mv.CONTEXT_ID " + + "WHERE " + + "mv.CITY_CODE_FROM = :cityFrom AND " + + "em.CITY = :cityTo AND " + + "em.RATE_YEAR = :rateYear AND " + + "em.ENTITLMNT_MAX_CAT_ID = :entitlementMaxCatId AND " + + "em.MAX_VALUE IS NULL AND " + + "em.MAX_CURRENCY IS NULL AND " + + "mv.STATE NOT IN ('DELETED', 'WITHDRAWN') AND " + + "mc.NAME NOT IN ('CRISIS')", nativeQuery = true) + List getEntitlementMaxStorageJpaEntitiesToUpdate(@Param("cityFrom") String cityFrom, + @Param("cityTo") String cityTo, + @Param("rateYear") Integer rateYear, + @Param("entitlementMaxCatId") Long entitlementMaxCatId); + + @Query(value = "SELECT ENTITLMNT_MAX_ID FROM ENTITLMNT_MAXS em " + + "INNER JOIN ENTITLMNT_TYPES et on et.ENTITLMNT_TYPE_ID = em.ENTITLMNT_TYPE_ID " + + "INNER JOIN MOVEMENT_FILES mv on mv.MOVEMENT_FILE_ID = et.MOVEMENT_FILE_ID " + + "INNER JOIN MOVEMENT_CONTEXT mc on mc.MOVEMENT_CONTEXT_ID = mv.CONTEXT_ID " + + "WHERE " + + "em.IATA_FROM = :cityFrom AND " + + "em.IATA_TO = :cityTo AND " + + "EXTRACT(YEAR from mv.START_DATE) = :year AND " + + "EXTRACT(month from mv.START_DATE) = :month AND " + + "em.MAX_VALUE IS NULL AND " + + "em.MAX_CURRENCY IS NULL AND " + + "mv.STATE NOT IN ('DELETED', 'WITHDRAWN') AND " + + "mc.NAME NOT IN ('CRISIS') AND " + + "mv.START_DATE - sysdate > 60", nativeQuery = true) + List getJobToTudEntitlementMaxJpaEntitiesToUpdate(@Param("cityFrom") String cityFrom, + @Param("cityTo") String cityTo, + @Param("year") int year, + @Param("month") int month); + + @Query(value = "SELECT ENTITLMNT_MAX_ID FROM ENTITLMNT_MAXS em " + + "INNER JOIN ENTITLMNT_TYPES et on et.ENTITLMNT_TYPE_ID = em.ENTITLMNT_TYPE_ID " + + "INNER JOIN MOVEMENT_FILES mv on mv.MOVEMENT_FILE_ID = et.MOVEMENT_FILE_ID " + + "INNER JOIN MOVEMENT_CONTEXT mc on mc.MOVEMENT_CONTEXT_ID = mv.CONTEXT_ID " + + "WHERE " + + "em.IATA_FROM = :cityFrom AND " + + "em.IATA_TO = :cityTo AND " + + "EXTRACT(YEAR from mv.ESTIMATED_END_DATE) = :year AND " + + "EXTRACT(month from mv.ESTIMATED_END_DATE) = :month AND " + + "em.MAX_VALUE IS NULL AND " + + "em.MAX_CURRENCY IS NULL AND " + + "mv.STATE NOT IN ('DELETED', 'WITHDRAWN') AND " + + "mc.NAME NOT IN ('CRISIS') AND " + + "mv.ESTIMATED_END_DATE - sysdate > 60", nativeQuery = true) + List getJobToTudEndOfContractEntitlementMaxJpaEntitiesToUpdate(@Param("cityFrom") String cityFrom, + @Param("cityTo") String cityTo, + @Param("year") int year, + @Param("month") int month); + + @Query(value = "SELECT ENTITLMNT_MAX_ID FROM ENTITLMNT_MAXS em " + + "INNER JOIN ENTITLMNT_TYPES et on et.ENTITLMNT_TYPE_ID = em.ENTITLMNT_TYPE_ID " + + "INNER JOIN MOVEMENT_FILES mv on mv.MOVEMENT_FILE_ID = et.MOVEMENT_FILE_ID " + + "INNER JOIN MOVEMENT_CONTEXT mc on mc.MOVEMENT_CONTEXT_ID = mv.CONTEXT_ID " + + "WHERE " + + "em.IATA_FROM = :cityFrom AND " + + "em.IATA_TO = :cityTo AND " + + "mv.START_DATE = :date AND " + + "em.MAX_VALUE IS NULL AND " + + "em.MAX_CURRENCY IS NULL AND " + + "mc.NAME NOT IN ('CRISIS') AND " + + "mv.STATE NOT IN ('DELETED', 'WITHDRAWN')", nativeQuery = true) + List getJobToTudEntitlementMaxJpaEntitiesToUpdate(@Param("cityFrom") String cityFrom, + @Param("cityTo") String cityTo, + @Param("date") LocalDate date); + + @Query(value = "SELECT ENTITLMNT_MAX_ID FROM ENTITLMNT_MAXS em " + + "INNER JOIN ENTITLMNT_TYPES et on et.ENTITLMNT_TYPE_ID = em.ENTITLMNT_TYPE_ID " + + "INNER JOIN MOVEMENT_FILES mv on mv.MOVEMENT_FILE_ID = et.MOVEMENT_FILE_ID " + + "INNER JOIN MOVEMENT_CONTEXT mc on mc.MOVEMENT_CONTEXT_ID = mv.CONTEXT_ID " + + "WHERE " + + "em.IATA_FROM = :cityFrom AND " + + "em.IATA_TO = :cityTo AND " + + "mv.ESTIMATED_END_DATE = :date AND " + + "em.MAX_VALUE IS NULL AND " + + "em.MAX_CURRENCY IS NULL AND " + + "mc.NAME NOT IN ('CRISIS') AND " + + "mv.STATE NOT IN ('DELETED', 'WITHDRAWN')", nativeQuery = true) + List getJobToTudEndOfContractEntitlementMaxJpaEntitiesToUpdate(@Param("cityFrom") String cityFrom, + @Param("cityTo") String cityTo, + @Param("date") LocalDate date); + @Query(value = "SELECT ENTITLMNT_MAX_ID FROM ENTITLMNT_MAXS em " + + "INNER JOIN ENTITLMNT_TYPES et on et.ENTITLMNT_TYPE_ID = em.ENTITLMNT_TYPE_ID " + + "INNER JOIN MOVEMENT_FILES mv on mv.MOVEMENT_FILE_ID = et.MOVEMENT_FILE_ID " + + "INNER JOIN ENTITLMNT_MAXS_CAT EMC on em.ENTITLMNT_MAX_CAT_ID = EMC.ENTITLMNT_MAX_CAT_ID " + + "where " + + "mv.movement_file_id = :movementFileId AND " + + "EMC.CODE = :entitlementMaxCatCode", nativeQuery = true) + Optional getTUDStaffMemberAmountByMovementFile(@Param("movementFileId") Long movementFileId, + @Param("entitlementMaxCatCode") String entitlementMaxCatCode); + + + @Query(value = "SELECT max_kg FROM entitlmnt_maxs em " + + "INNER JOIN entitlmnt_types et on et.entitlmnt_type_id = em.entitlmnt_type_id " + + "INNER JOIN entitlmnt_maxs_cat emc on em.entitlmnt_max_cat_id = emc.entitlmnt_max_cat_id " + + "where " + + "et.movement_file_id = :movementFileId AND " + + "emc.code = :entitlementMaxCatCode", nativeQuery = true) + Optional getChargeableWeightByMovementFile(@Param("movementFileId") Long movementFileId, + @Param("entitlementMaxCatCode") String entitlementMaxCatCode); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementMaxOptionJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementMaxOptionJpaRepository.java new file mode 100644 index 0000000..76def46 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementMaxOptionJpaRepository.java @@ -0,0 +1,16 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxOptionJpaEntity; + +import java.util.List; + +public interface EntitlementMaxOptionJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return EntitlementMaxOptionJpaEntity.class; + } + + List findAllByEntitlementMaxCat_Id(Long entitlementMaxCatId); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementTypeCatJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementTypeCatJpaRepository.java new file mode 100644 index 0000000..3c354d5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementTypeCatJpaRepository.java @@ -0,0 +1,17 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeCatJpaEntity; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; + +public interface EntitlementTypeCatJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return EntitlementTypeCatJpaEntity.class; + } + + EntitlementTypeCatJpaEntity findByCode(EntitlementTypeCatCode code); + +} + diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementTypeDefaultJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementTypeDefaultJpaRepository.java new file mode 100644 index 0000000..b202694 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementTypeDefaultJpaRepository.java @@ -0,0 +1,16 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeDefaultJpaEntity; + +import java.util.List; + +public interface EntitlementTypeDefaultJpaRepository extends EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return EntitlementTypeDefaultJpaEntity.class; + } + + List findAllByMovementTypeId(Long movementTypeId); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementTypeJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementTypeJpaRepository.java new file mode 100644 index 0000000..e64bf02 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/EntitlementTypeJpaRepository.java @@ -0,0 +1,29 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeCatJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeJpaEntity; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; + +import java.util.List; + +public interface EntitlementTypeJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, + EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return EntitlementTypeJpaEntity.class; + } + + List findAllByMovementFile_idOrderByEntitlementTypeCat_order(Long movementFileId); + + List findAllByMovementFileIdAndEntitlementTypeCatCode(Long movementFileId, EntitlementTypeCatCode code); + + List findByMovementFileAndEntitlementTypeCat(MovementFileJpaEntity movementFile, EntitlementTypeCatJpaEntity entitlementTypeCat); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/GosselinMockJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/GosselinMockJpaRepository.java new file mode 100644 index 0000000..8032762 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/GosselinMockJpaRepository.java @@ -0,0 +1,46 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.GosselinMockId; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.GosselinMockJpaEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.math.BigInteger; + +public interface GosselinMockJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository { + + @Override + default Class getEntityType() { + return GosselinMockJpaEntity.class; + } + + @Query("SELECT entity FROM GosselinMockJpaEntity entity WHERE " + + "entity.id.year = :year AND " + + "entity.id.type = :type AND " + + "entity.id.cityFrom = :cityFrom AND " + + "entity.id.cityTo = :cityTo") + GosselinMockJpaEntity getFromMock( + @Param("year") Integer year, + @Param("type") String type, + @Param("cityFrom") String cityFrom, + @Param("cityTo") String cityTo + ); + + @Query("SELECT entity FROM GosselinMockJpaEntity entity WHERE " + + "entity.id.year = :year AND " + + "entity.id.type = :type AND " + + "entity.id.cityFrom = :cityFrom AND " + + "entity.id.cityTo = :cityTo AND " + + "entity.id.kg = :kg") + GosselinMockJpaEntity getFromMock( + @Param("year") Integer year, + @Param("type") String type, + @Param("cityFrom") String cityFrom, + @Param("cityTo") String cityTo, + @Param("kg") BigInteger kg + ); +} + diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/RateMissingJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/RateMissingJpaRepository.java new file mode 100644 index 0000000..0054921 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/RateMissingJpaRepository.java @@ -0,0 +1,60 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.RateMissingJpaEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.math.BigInteger; +import java.util.List; +import java.util.Optional; + +public interface RateMissingJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository { + + @Override + default Class getEntityType() { + return RateMissingJpaEntity.class; + } + + List findAllByReceived(Boolean received); + + Optional findByCityCodeFromAndAndCityCodeToAndAndRateTypeAndAndYearAndReceived(String cityCodeFrom, + String cityCodeTo, + String rateType, + String startDate, + boolean received); + + Optional findByCityCodeFromAndAndCityCodeToAndAndRateTypeAndAndYearAndKgAndReceived(String cityCodeFrom, + String cityCodeTo, + String rateType, + String startDate, + BigInteger kg, + boolean received); + + @Query("SELECT COUNT(entity) FROM RateMissingJpaEntity entity WHERE " + + "entity.cityCodeFrom = :cityCodeFrom AND " + + "entity.cityCodeTo = :cityCodeTo AND " + + "entity.rateType = :rateType AND " + + "entity.kg = :kg AND " + + "entity.year = :year") + long countPendingRatesToSearchInGosselin(@Param("cityCodeFrom") String cityCodeFrom, + @Param("cityCodeTo") String cityCodeTo, + @Param("rateType") String rateType, + @Param("kg") BigInteger kg, + @Param("year") String year); + + @Query("SELECT COUNT(entity) FROM RateMissingJpaEntity entity WHERE " + + "entity.cityCodeFrom = :cityCodeFrom AND " + + "entity.cityCodeTo = :cityCodeTo AND " + + "entity.rateType = :rateType AND " + + "entity.year = :year") + long countPendingRatesToSearchInGosselin(@Param("cityCodeFrom") String cityCodeFrom, + @Param("cityCodeTo") String cityCodeTo, + @Param("rateType") String rateType, + @Param("year") String year); + +} + diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/RequestIndemnityJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/RequestIndemnityJpaRepository.java new file mode 100644 index 0000000..51d88d4 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/RequestIndemnityJpaRepository.java @@ -0,0 +1,17 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.RequestIndemnityJpaEntity; + +public interface RequestIndemnityJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository { + + @Override + default Class getEntityType() { + return RequestIndemnityJpaEntity.class; + } + + RequestIndemnityJpaEntity findByRequestId(Long requestId); +} + diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/AdvanceRequestJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/AdvanceRequestJpaRepository.java new file mode 100644 index 0000000..021e073 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/AdvanceRequestJpaRepository.java @@ -0,0 +1,31 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.AdvanceRequestJpaEntity; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestState; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; + +public interface AdvanceRequestJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return AdvanceRequestJpaEntity.class; + } + + @Query("select coalesce(max(rq.requestDeclarationNo), 0) + 1 as request_declaration_no \n" + + "from AdvanceRequestJpaEntity rq\n" + + "where rq.declaration.id = :declarationId \n") + Long getRequestDeclarationNo(@Param("declarationId") Long declarationId); + + AdvanceRequestJpaEntity findByDeclarationId(Long declarationId); + + List findAllByState(AdvanceRequestState state); +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/ClearingRequestJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/ClearingRequestJpaRepository.java new file mode 100644 index 0000000..7d38e5d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/ClearingRequestJpaRepository.java @@ -0,0 +1,29 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.ClearingRequestJpaEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +public interface ClearingRequestJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return ClearingRequestJpaEntity.class; + } + + ClearingRequestJpaEntity findByDeclarationId(Long declarationId); + + @Query("select coalesce(max(rq.requestDeclarationNo), 0) + 1 as request_declaration_no \n" + + "from ClearingRequestJpaEntity rq\n" + + "where rq.declaration.id = :declarationId \n") + Long getRequestDeclarationNo(@Param("declarationId") Long declarationId); + + ClearingRequestJpaEntity findByParentId(Long parentId); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/InstallationRequestJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/InstallationRequestJpaRepository.java new file mode 100644 index 0000000..0f706d5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/InstallationRequestJpaRepository.java @@ -0,0 +1,46 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeCatJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.InstallationRequestJpaEntity; +import eu.europa.eeas.erights.common.tools.statemachine.InstallationState; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.time.LocalDate; +import java.util.List; + +public interface InstallationRequestJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return InstallationRequestJpaEntity.class; + } + + @Query("select coalesce(max(rq.requestNumber), 0) + 1 as request_id_sequence_next \n" + + "from InstallationRequestJpaEntity rq \n" + + "where rq.year = :year \n" + + "and rq.entitlementTypeCat = :entitlementTypeCat \n") + Long getSequenceForRequestWithEntitlementID(@Param("year") Integer year, @Param("entitlementTypeCat") EntitlementTypeCatJpaEntity entitlementTypeCat); + + List findAllByDeclarationId(Long id); + + @Query("select coalesce(max(rq.requestDeclarationNo), 0) + 1 as request_declaration_no \n" + + "from InstallationRequestJpaEntity rq\n" + + "where rq.declaration.id = :declarationId \n") + Long getRequestDeclarationNo(@Param("declarationId") Long declarationId); + + List findAllByState(InstallationState state); + + @Query("select installation \n" + + "from InstallationRequestJpaEntity installation, MovementFileJpaEntity m \n" + + "where installation.declaration.movementFileId = m.id\n" + + "and m.startDate = :startDate \n") + List getInstallationWithMovementFileStartDate(@Param("startDate") LocalDate startDate); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/RequestDetailJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/RequestDetailJpaRepository.java new file mode 100644 index 0000000..cc52307 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/RequestDetailJpaRepository.java @@ -0,0 +1,18 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestDetailJpaEntity; + +public interface RequestDetailJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return RequestDetailJpaEntity.class; + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/RequestJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/RequestJpaRepository.java new file mode 100644 index 0000000..3ee131b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/RequestJpaRepository.java @@ -0,0 +1,141 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.dto.RequestAbacWorkflowDTO; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.PersonBankInfoJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeCatJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestJpaEntity; +import eu.europa.eeas.erights.common.tools.statemachine.AbacRequestState; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.time.LocalDate; +import java.util.List; + +public interface RequestJpaRepository extends EntityReaderJpaRepository, EntitySaverJpaRepository, + EntityDeleterJpaRepository, EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return RequestJpaEntity.class; + } + + List findAllByDeclaration_id(Long declarationId); + + List findByParentId(Long parentId); + + Integer countByPersonBankInfoId(Long id); + + @Query("select coalesce(max(rq.requestNumber), 0) + 1 as request_id_sequence_next \n" + + "from RequestJpaEntity rq \n" + + "where rq.year = :year \n" + + "and rq.entitlementTypeCat = :entitlementTypeCat \n") + Long getSequenceForRequestWithEntitlementID(@Param("year") Integer year, @Param("entitlementTypeCat") EntitlementTypeCatJpaEntity entitlementTypeCat); + + + @Query("select coalesce(max(rq.requestNumber), 0) + 1 as request_id_sequence_next \n" + + "from RequestJpaEntity rq \n" + + "where rq.year = :year \n" + + "and rq.requestType = 'TopUpRequest' \n") + Long getSequenceForRequestTopUp(@Param("year") Integer year); + + @Query("select coalesce(max(rq.requestDeclarationNo), 0) + 1 as request_declaration_no \n" + + "from RequestJpaEntity rq\n" + + "where rq.declaration.id = :declarationId \n") + Long getRequestDeclarationNo(@Param("declarationId") Long declarationId); + + /** + * TODO This query must be audited + * @param abacState s + * @param id s + */ + @Modifying + @Query("update RequestJpaEntity request set request.abacRequestState = :abacState where request.id = :id") + void updateRequestAbacState(@Param("abacState") AbacRequestState abacState, @Param("id") Long id); + + @Modifying + @Query("update RequestJpaEntity request set request.p2pHubOrderStatus = :p2pHubOrderStatus where request.id = :id") + void updateRequestp2pHubOrderStatus(@Param("p2pHubOrderStatus") String p2pHubOrderStatus, @Param("id") Long id); + + @Query("select abacRequestState from RequestJpaEntity where id = :id") + AbacRequestState getAbacRequestState(@Param("id") Long id); + + @Query("select request.personBankInfo from RequestJpaEntity request where request.id = :id") + PersonBankInfoJpaEntity getPersonaBankInfo(@Param("id") Long id); + + @Query("select request.requestType from RequestJpaEntity request where request.id = :id") + String getRequestType(@Param("id") Long id); + + @Modifying + @Query("update RequestJpaEntity request set request.paymentRequest = :abacPaymentRequestId where request.id = :requestId") + void updatePaymentRequest(@Param("abacPaymentRequestId") String abacPaymentRequestId, @Param("requestId") Long requestId); + + @Modifying + @Query("update RequestJpaEntity request set request.paymentOrder = :abacPaymentOrderId, request.paymentOrderValid = true where request.id = :requestId") + void updatePaymentOrder(@Param("abacPaymentOrderId") String abacPaymentOrderId, @Param("requestId") Long requestId); + + @Modifying + @Query("update RequestJpaEntity request set request.p2pHubOrderStatus = :p2pHubOrderStatus, request.paymentDate = :date where request.id = :id") + void updatePaymentDateAndWorkflow(@Param("date") LocalDate date, @Param("p2pHubOrderStatus") String p2pHubOrderStatus, @Param("id") Long id); + + @Query(nativeQuery = true) + List getUnclosedPaymentOrders(); + + @Modifying + @Query("update RequestJpaEntity request set request.paymentOrderValid = :isValid where request.id = :requestId") + void updatePaymentOrderValid(@Param("isValid") Boolean isValid, @Param("requestId") Long requestId); + + @Modifying + @Query(value = "DELETE FROM REQUEST_DETAIL_ATTACHMENTS WHERE REQUEST_DETAIL_ID IN (SELECT REQUEST_DETAIL_ID FROM REQUEST_DETAILS WHERE REQUEST_ID = :requestId)", nativeQuery = true) + void deleteRequestDetailAttachments(@Param("requestId") Long requestId); + + @Modifying + @Query(value = "DELETE FROM REQUEST_DETAILS WHERE REQUEST_ID = :requestId", nativeQuery = true) + void deleteRequestDetails(@Param("requestId") Long requestId); + + @Modifying + @Query(value = "DELETE FROM REQUEST_PAYMENT_ABAC_INFO WHERE REQUEST_ID = :requestId", nativeQuery = true) + void deleteRequestPaymentAbacInfo(@Param("requestId") Long requestId); + + + @Modifying + @Query(value = "DELETE FROM REQUESTS WHERE REQUEST_ID = :requestId", nativeQuery = true) + void deleteRequestByIdNativeQuery(@Param("requestId") Long requestId); + + @Modifying + @Query(value = "DELETE FROM REQUEST_ABAC_ITEM WHERE REQUEST_ID = :requestId", nativeQuery = true) + void deleteRequestAbacItems(@Param("requestId") Long requestId); + + @Modifying + @Query(value = "DELETE FROM REQUEST_PERSON_ATTACHMENTS WHERE REQUEST_PERSON_ID IN (SELECT REQUEST_PERSON_ID FROM REQUEST_PERSONS WHERE REQUEST_ID = :requestId)", nativeQuery = true) + void deleteRequestPersonAttachments(@Param("requestId") Long requestId); + + @Modifying + @Query(value = "DELETE FROM REQUEST_PERSONS WHERE REQUEST_ID = :requestId", nativeQuery = true) + void deleteRequestPersons(@Param("requestId") Long requestId); + + @Modifying + @Query(value = "DELETE FROM REQUEST_SUBPOSTS WHERE REQUEST_ID = :requestId", nativeQuery = true) + void deleteRequestSubposts(@Param("requestId") Long requestId); + + @Modifying + @Query(value = "DELETE FROM DECLARATION_PERSON WHERE PER_ID IN (SELECT PER_ID FROM REQUEST_PERSONS WHERE REQUEST_ID = :requestId)", nativeQuery = true) + void deleteDeclarationPerson(@Param("requestId") Long requestId); + + + @Query(value = "SELECT * FROM REQUESTS R ,ORDER_RESPONSE ORE\n" + + " WHERE R.P2P_HUB_ORDER_ID IS NOT NULL \n" + + " AND R.P2P_HUB_ORDER_STATUS IS NOT NULL \n" + + " AND R.P2P_HUB_ORDER_STATUS IN ('INIT', 'VERIF', 'EXEC', 'SENT_TO_P2P')\n" + + " and R.P2P_HUB_ORDER_STATUS = ORE.ORDER_STATUS\n" + + " and R.REQUEST_ID = ORE.REQUEST_ID\n" + + " AND ORE.CREATED_AT > SYSDATE - 10", + nativeQuery = true) + List findRequestsWithActiveP2pHubOrders(); + + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/RequestPersonAttachmentsJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/RequestPersonAttachmentsJpaRepository.java new file mode 100644 index 0000000..2a5791d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/RequestPersonAttachmentsJpaRepository.java @@ -0,0 +1,17 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestPersonAttachmentJpaEntity; + +public interface RequestPersonAttachmentsJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return RequestPersonAttachmentJpaEntity.class; + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/RequestPersonJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/RequestPersonJpaRepository.java new file mode 100644 index 0000000..af4a5a4 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/RequestPersonJpaRepository.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestPersonJpaEntity; + +import java.util.List; + +public interface RequestPersonJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return RequestPersonJpaEntity.class; + } + + List findAllByRequest_id(Long requestId); +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/ResettlementRequestJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/ResettlementRequestJpaRepository.java new file mode 100644 index 0000000..b7e6dd8 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/ResettlementRequestJpaRepository.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeCatJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.ResettlementRequestJpaEntity; +import eu.europa.eeas.erights.common.tools.statemachine.ResettlementState; +import java.util.List; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +public interface ResettlementRequestJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return ResettlementRequestJpaEntity.class; + } + + @Query("select coalesce(max(rq.requestNumber), 0) + 1 as request_id_sequence_next \n" + + "from ResettlementRequestJpaEntity rq \n" + + "where rq.year = :year \n" + + "and rq.entitlementTypeCat = :entitlementTypeCat \n") + Long getSequenceForRequestWithEntitlementID(@Param("year") Integer year, @Param("entitlementTypeCat") EntitlementTypeCatJpaEntity entitlementTypeCat); + + List findAllByDeclarationId(Long id); + + @Query("select coalesce(max(rq.requestDeclarationNo), 0) + 1 as request_declaration_no \n" + + "from ResettlementRequestJpaEntity rq\n" + + "where rq.declaration.id = :declarationId \n") + Long getRequestDeclarationNo(@Param("declarationId") Long declarationId); + + List findAllByState(ResettlementState state); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/TopUpRequestJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/TopUpRequestJpaRepository.java new file mode 100644 index 0000000..9561918 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/TopUpRequestJpaRepository.java @@ -0,0 +1,23 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request; + +import java.util.List; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.TopUpRequestJpaEntity; + +public interface TopUpRequestJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return TopUpRequestJpaEntity.class; + } + + List findByParentId(Long parentId); + + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/TotalRemRequestJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/TotalRemRequestJpaRepository.java new file mode 100644 index 0000000..74174f8 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/TotalRemRequestJpaRepository.java @@ -0,0 +1,26 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.TotalRemRequestJpaEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +public interface TotalRemRequestJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return TotalRemRequestJpaEntity.class; + } + + TotalRemRequestJpaEntity findByDeclarationId(Long declarationId); + + @Query("select coalesce(max(rq.requestDeclarationNo), 0) + 1 as request_declaration_no \n" + + "from TotalRemRequestJpaEntity rq\n" + + "where rq.declaration.id = :declarationId \n") + Long getRequestDeclarationNo(@Param("declarationId") Long declarationId); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/TudRequestJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/TudRequestJpaRepository.java new file mode 100644 index 0000000..f535431 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/entitlement/request/TudRequestJpaRepository.java @@ -0,0 +1,33 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.core.data.repository.EntityEnanchedSaverRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.TudRequestJpaEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; + +public interface TudRequestJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository, + EntityEnanchedSaverRepository { + + @Override + default Class getEntityType() { + return TudRequestJpaEntity.class; + } + + @Query("select coalesce(max(rq.requestNumber), 0) + 1 as request_id_sequence_next \n" + + "from TudRequestJpaEntity rq\n" + + "where rq.year = :year \n") + Long getSequenceForRequestID(@Param("year") Integer year); + + @Query("select coalesce(max(rq.requestDeclarationNo), 0) + 1 as request_declaration_no \n" + + "from TudRequestJpaEntity rq\n" + + "where rq.declaration.id = :declarationId \n") + Long getRequestDeclarationNo(@Param("declarationId") Long declarationId); + + List findAllByDeclaration_id(Long declarationId); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/notification/NotificationJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/notification/NotificationJpaRepository.java new file mode 100644 index 0000000..0e6ea77 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/notification/NotificationJpaRepository.java @@ -0,0 +1,22 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.notification; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.notification.NotificationJpaEntity; + +/** + * @author tapiafo + */ +public interface NotificationJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, + EntityDeleterJpaRepository { + + @Override + default Class getEntityType() { + return NotificationJpaEntity.class; + } + + NotificationJpaEntity getById(Long id); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/notification/NotificationMFJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/notification/NotificationMFJpaRepository.java new file mode 100644 index 0000000..41f2661 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/notification/NotificationMFJpaRepository.java @@ -0,0 +1,28 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.notification; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.enums.Status; +import eu.europa.eeas.erights.common.data.jpa.entity.notification.NotificationMFJpaEntity; + +import java.util.List; + +/** + * @author tapiafo + */ +public interface NotificationMFJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, + EntityDeleterJpaRepository { + + @Override + default Class getEntityType() { + return NotificationMFJpaEntity.class; + } + + NotificationMFJpaEntity getById(Long id); + + List findAllByCommunicationIdNotNullAndStatusNotIn(List statuses); + + List findAllByMovementFile_Id(Long movementFileId); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/notification/NotificationPostingAllowanceJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/notification/NotificationPostingAllowanceJpaRepository.java new file mode 100644 index 0000000..b02ad95 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/notification/NotificationPostingAllowanceJpaRepository.java @@ -0,0 +1,24 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.notification; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.enums.Status; +import eu.europa.eeas.erights.common.data.jpa.entity.notification.NotificationMFJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.notification.NotificationPostingAllowanceJpaEntity; + +import java.util.List; + +/** + * @author tapiafo + */ +public interface NotificationPostingAllowanceJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, + EntityDeleterJpaRepository { + + @Override + default Class getEntityType() { + return NotificationPostingAllowanceJpaEntity.class; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/notification/NotificationRequestJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/notification/NotificationRequestJpaRepository.java new file mode 100644 index 0000000..2f96122 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/notification/NotificationRequestJpaRepository.java @@ -0,0 +1,18 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.notification; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.enums.Status; +import eu.europa.eeas.erights.common.data.jpa.entity.notification.NotificationRequestJpaEntity; +import java.util.List; + +public interface NotificationRequestJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, EntityDeleterJpaRepository { + + @Override + default Class getEntityType() { + return NotificationRequestJpaEntity.class; + } + List findAllByCommunicationIdNotNullAndStatusNotIn(List statuses); +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/notification/NotificationTemplateJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/notification/NotificationTemplateJpaRepository.java new file mode 100644 index 0000000..1df9f82 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/notification/NotificationTemplateJpaRepository.java @@ -0,0 +1,28 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.notification; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityDeleterJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.notification.NotificationTemplateJpaEntity; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; + +/** + * @author tapiafo + */ +public interface NotificationTemplateJpaRepository extends EntityReaderJpaRepository, + EntitySaverJpaRepository, + EntityDeleterJpaRepository { + + @Override + default Class getEntityType() { + return NotificationTemplateJpaEntity.class; + } + + NotificationTemplateJpaEntity getById(Long id); + + NotificationTemplateJpaEntity findByNotificationTemplateCodeAndDefaultTemplate(NotificationTemplateCode notificationTemplateCode, Boolean defaultTemplate); + + NotificationTemplateJpaEntity findByNotificationTemplateTypeAndNotificationTemplateCodeAndDefaultTemplateTrue(String notificationTemplateType, + NotificationTemplateCode notificationTemplateCode); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/statemachine/StateMachineCurrentStateRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/statemachine/StateMachineCurrentStateRepository.java new file mode 100644 index 0000000..c522589 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/statemachine/StateMachineCurrentStateRepository.java @@ -0,0 +1,15 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.statemachine; + +import eu.europa.eeas.erights.common.data.jpa.entity.statemachine.StateMachineCurrentStateEntity; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +/** + * TODO This is a temporary repository used for mapping the ANK_SM_CURRENT_STATES. After deliver in production this should be deleted + * RIGD-547 + */ +@Repository +public interface StateMachineCurrentStateRepository extends CrudRepository { + +} + diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/tud/RatesTUDJpaRepository.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/tud/RatesTUDJpaRepository.java new file mode 100644 index 0000000..bd91a0c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/data/jpa/repository/tud/RatesTUDJpaRepository.java @@ -0,0 +1,53 @@ +package eu.europa.eeas.erights.common.data.jpa.repository.tud; + +import java.util.List; + +import org.springframework.data.jpa.repository.Query; + +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntityReaderJpaRepository; +import eu.europa.eeas.ananke.core.data.provider.jpa.repository.EntitySaverJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.entity.tud.RatesTUDJpaEntity; + +public interface RatesTUDJpaRepository extends EntitySaverJpaRepository, + EntityReaderJpaRepository { + + @Override + default Class getEntityType() { + return RatesTUDJpaEntity.class; + } + + @Query("select r from RatesTUDJpaEntity as r where " + + "r.infoComplete = false and " + + // This means: ignore requested that have been abandoned (no solution found in Skyscanner) + + "r.searchCeased = false and " + + + "r.deleted = false " + + "order by r.requestedOutboundDate asc") + List findIncompleteRequests(); + + @Query("select r from RatesTUDJpaEntity as r where " + + "r.infoComplete = true and " + + "r.searchCeased = false and " + + "r.deleted = false " + // Most recent results first, in case there is more than one + + "order by r.retrievedAt desc") + List findCompleteRequests(); + + + /* + @Query("select count(r) from RatesTUDJpaEntity as r where " + + "r.infoComplete = false and r.searchCeased = false and r.deleted = false and " + + "r.originPlace = :origin and r.destinationPlace = :destination and r.entitlementSpecific = :specific and " + + "r.creationActor.instant > :createdAfterThis") + long countPendingRequests( + @Param("origin") String iataOriginPlace, + @Param("destination") String iataDestinationPlace, + @Param("specific") Boolean entitlementSpecific, + @Param("createdAfterThis") LocalDateTime createdAfterThis); + */ + + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/exceptionhandling/ERightsExceptionCode.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/exceptionhandling/ERightsExceptionCode.java new file mode 100644 index 0000000..55d9837 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/exceptionhandling/ERightsExceptionCode.java @@ -0,0 +1,74 @@ +package eu.europa.eeas.erights.common.exceptionhandling; + +import eu.europa.eeas.ananke.core.base.exception.ExceptionCode; + +public enum ERightsExceptionCode implements ExceptionCode { + + ER001("Movement file not found"), + ER002("MovementFile's workflow error on transition"), + ER003("PerId cannot be null"), + ER004("Year cannot be null"), + ER005("Job Number cannot be null"), + ER006("Movement File already exists"), + ER007("Movement Context cannot be null"), + ER008("Not Authorized"), + ER009("No Documents Found, please insert save number , registration number"), + ER010("Entitlement type not found"), + ER011("Cannot delete entitlement type for MF because it's the default type, it only can be disabled/enabled"), + ER012("Job not found"), + ER013("Entitlement request's workflow error on transition"), + ER014("Advance removal request not found"), + ER015("Cannot delete or update request.Only a request in DRAFT can be deleted"), + ER016("Some changes were done to the draft, please save first draft "), + ER017("Exception getting gosselin WS Rates "), + ER018("The year of the movement file cannot be changed, please create a new movement file "), + ER019("City from and city to are mandatory"), + ER020("Place of Origin Airport is mandatory for Non Family Movement File"), + ER021("Some of the city codes provided cannot be mapped to airports"), + ER023("Movement File date must be in the future and less than one year ahead, in order to refresh TUD rates."), + ER024("Cannot set default TUD rates for Dependents because this Movement File was created without associating an airport with the Place of Origin."), + ER025("Request rejected by Skyscanner or unexpected content in response."), + ER026("ABAC System temporary out of service"), + ER027("Request ID %s: the request or the ABAC payment are not finalized. Please pay or reject the request or make sure the ABAC payment reached the status SUCCESS."), + ER028("Posting Allowance ID %s not found"), + ER029("Posting Allowance ID %s transition not valid"), + ER030("Movement file PerId %d was not found"), + ER031("Workflow error on transition"), + ER032("You cannot approve this request. The staff already has an approved or paid travel request with a different origin period. A staff can only receive one travel allowance per year."), + ER033("Failed to download, please try again later"), + ER034("The request does not have any attachment"), + ER035("Place of origin does not exist in Syper"), + ER036("The total amount must be a positive value for a posting id %s"), + ER037("Payment to SySper was failed for ID %s "), + ER038("Unable to create a new Resettlement Request for movement file %s because has not the right state, context or type"), + ER039("Unable to create a new Resettlement Request for movement file %s because the declaration is not submitted yet"), + ER040("The system couldn't create the regularization because the Staff does not have a validated expatriation allowance"), + ER041("Accommodation Declaration ID %s transition not valid"), + ER042("No record jobId found for perId %d while creating an Accommodation Declaration"), + ER043("No assignments found for the given perId %d. Not able to create an Accommodation Declaration"), + ER044("This staff having perId %d is not eligible to create an Accommodation Declaration"), + ER045("NUP code not found for perId %d"), + ER046("Accommodation Declaration hacing id={} is not in the correct state ({}) for creating the Accommodation Payment"), + ER047("Business Partner not found in SUMMA"); + + + + + + private final String description; + + ERightsExceptionCode(String description) { + this.description = description; + } + + @Override + public String getCode() { + return name(); + } + + @Override + public String getDescription() { + return this.description; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/exceptionhandling/GosselinRateBadRequest.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/exceptionhandling/GosselinRateBadRequest.java new file mode 100644 index 0000000..6ecebba --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/exceptionhandling/GosselinRateBadRequest.java @@ -0,0 +1,7 @@ +package eu.europa.eeas.erights.common.exceptionhandling; + +public class GosselinRateBadRequest extends Exception { + public GosselinRateBadRequest(String message) { + super(message); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/exceptionhandling/GosselinRateNotFound.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/exceptionhandling/GosselinRateNotFound.java new file mode 100644 index 0000000..3b4f4bb --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/exceptionhandling/GosselinRateNotFound.java @@ -0,0 +1,7 @@ +package eu.europa.eeas.erights.common.exceptionhandling; + +public class GosselinRateNotFound extends Exception { + public GosselinRateNotFound(String message) { + super(message); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/exceptionhandling/GosselinRateServerError.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/exceptionhandling/GosselinRateServerError.java new file mode 100644 index 0000000..825799e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/exceptionhandling/GosselinRateServerError.java @@ -0,0 +1,7 @@ +package eu.europa.eeas.erights.common.exceptionhandling; + +public class GosselinRateServerError extends Exception { + public GosselinRateServerError(String message) { + super(message); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/ERightsSecurityChecker.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/ERightsSecurityChecker.java new file mode 100644 index 0000000..afd3195 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/ERightsSecurityChecker.java @@ -0,0 +1,18 @@ +package eu.europa.eeas.erights.common.security; + +import eu.europa.eeas.ananke.core.security.SecurityHelper; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import org.springframework.beans.factory.annotation.Autowired; + +public class ERightsSecurityChecker { + + public static final String CAN_ACCESS_BACK_OFFICE = "@" + ERightsBeanNames.ERIGHTS_SECURITY_CHECKER + "." + "canAccessBackOffice()"; + + @Autowired + private SecurityHelper securityHelper; + + + public Boolean canAccessBackOffice() { + return this.securityHelper.hasAuthority(MovementFilePermission.ADMIN_ACCESS_BACKOFFICE.getValue()); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/ErightsFileManagerSecurityDelegate.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/ErightsFileManagerSecurityDelegate.java new file mode 100644 index 0000000..f51ede6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/ErightsFileManagerSecurityDelegate.java @@ -0,0 +1,30 @@ +package eu.europa.eeas.erights.common.security; + +import eu.europa.eeas.ananke.tools.filemanagement.security.FileManagerSecurityDelegate; +import eu.europa.eeas.ananke.tools.filemanagement.service.PersistentStorageType; + +import java.util.UUID; + +public class ErightsFileManagerSecurityDelegate implements FileManagerSecurityDelegate { + + @Override + public void checkForPersist(PersistentStorageType persistentStorageType) { + + } + + @Override + public void checkForRead(UUID uid, PersistentStorageType persistentStorageType) { + + } + + @Override + public void checkForDelete(PersistentStorageType persistentStorageType) { + + } + + @Override + public void checkForDelete(UUID uid, PersistentStorageType persistentStorageType) { + + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/ExternalUserIdentityFallbackRetriever.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/ExternalUserIdentityFallbackRetriever.java new file mode 100644 index 0000000..0741473 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/ExternalUserIdentityFallbackRetriever.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.common.security; + +import eu.europa.eeas.ananke.tools.security.service.data.jpa.provider.SecurityJpaUserIdentityFallbackRetriever; + +public class ExternalUserIdentityFallbackRetriever extends SecurityJpaUserIdentityFallbackRetriever { + + @Override + public Long retrieveEmployeeNumber(String uid) { + Long perId = super.retrieveEmployeeNumber(uid); + if(perId == Long.MIN_VALUE && uid.length() > 47){ + perId = super.retrieveEmployeeNumber(uid.split("-")[0]); + if(perId == Long.MIN_VALUE) { + perId = -Long.valueOf(uid.hashCode()); + } + } + return perId; + } + + @Override + public Long retrieveOrgId(String uid) { + Long orgId = super.retrieveOrgId(uid); + if(orgId == Long.MIN_VALUE && uid.length() > 47) { + orgId = super.retrieveOrgId(uid.split("-")[0]); + if (orgId == Long.MIN_VALUE) { + orgId = -Long.valueOf(uid.hashCode()); + } + } + return orgId; + } +} + + diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/MovementFilePermission.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/MovementFilePermission.java new file mode 100644 index 0000000..bec1c55 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/MovementFilePermission.java @@ -0,0 +1,86 @@ +package eu.europa.eeas.erights.common.security; + +public enum MovementFilePermission { + /** Admin */ + ADMIN_AUDIT("/ADMIN/AUDIT/VIEW"), + ADMIN_MANAGE("/ADMIN/MANAGE"), + ADMIN_ACCESS_BACKOFFICE("/ADMIN/ACCESS_BACKOFFICE"), + ADMIN_CALCULATE_ROUTE("/ADMIN/CALCULATE_ROUTE"), + ADMIN_IT_SUPPORT("/ADMIN/IT_SUPPORT"), + HOME_PAGE_VIEW("/HOME_PAGE/VIEW"), + MANAGE_GUIDELINES("/ADMIN/GUIDELINES/MANAGE"), + /** Movement File */ + CONFIRM("/MOVEMENT_FILE/CONFIRM"), + CREATE("/MOVEMENT_FILE/CREATE"), + DELETE("/MOVEMENT_FILE/DELETE"), + LIST("/MOVEMENT_FILE/LIST"), + UPDATE("/MOVEMENT_FILE/UPDATE"), + VIEW("/MOVEMENT_FILE/VIEW"), + WITHDRAW("/MOVEMENT_FILE/WITHDRAW"), + COMPLETE("/MOVEMENT_FILE/COMPLETE"), + CANCEL("/MOVEMENT_FILE/CANCEL"), + REOPEN("/MOVEMENT_FILE/REOPEN"), + /** Entitlements */ + ENTITLEMENTS_UPDATE("/ENTITLEMENTS/UPDATE"), + ENTITLEMENTS_CONSULT("/ENTITLEMENTS/CONSULT"), + /** TUD Request */ + REQUEST_TUD_PAY_MANUALLY("/REQUEST/TUD/PAY_MANUALLY"), + REQUEST_TUD_PAY_ABAC("/REQUEST/TUD/PAY_ABAC"), + REQUEST_TUD_RESUBMIT("/REQUEST/TUD/RESUBMIT"), + REQUEST_TUD_REVIEW("/REQUEST/TUD/REVIEW"), + /** Removal Request */ + REQUEST_REM_PAY_MANUALLY("/REQUEST/REM/PAY_MANUALLY"), + REQUEST_REM_PAY_ABAC("/REQUEST/REM/PAY_ABAC"), + REQUEST_REM_RESUBMIT("/REQUEST/REM/RESUBMIT"), + REQUEST_REM_REVIEW("/REQUEST/REM/REVIEW"), + REQUEST_REM_SUBMIT("/REQUEST/REM/SUBMIT"), + REQUEST_REM_EDIT("/REQUEST/REM/EDIT"), + REQUEST_REM_APPROVE("/REQUEST/REM/APPROVE"), + REQUEST_REM_REJECT("/REQUEST/REM/REJECT"), + REQUEST_REJECT_PAID("/REQUEST/REJECT_PAIDREQUEST"), + REQUEST_CLR_PAY("/REQUEST/CLR/PAY"), + /** Installation Request */ + REQUEST_INSTALLATION_REFRESH("/REQUEST/INSTALLATION/REFRESH"), + REQUEST_INSTALLATION_APPROVE("/REQUEST/INSTALLATION/APPROVE"), + REQUEST_INSTALLATION_MANUAL_PAYMENT("/REQUEST/INSTALLATION/PAY_MANUALLY"), + REQUEST_INSTALLATION_SYSPER_PAYMENT("/REQUEST/INSTALLATION/PAY_SYSPER"), + REQUEST_INSTALLATION_REJECT("/REQUEST/INSTALLATION/REJECT"), + REQUEST_INSTALLATION_UPDATE_SYSPER("/REQUEST/INSTALLATION/UPDATE_SYSPER"), + REQUEST_INSTALLATION_EDIT("/REQUEST/INSTALLATION/EDIT"), + REQUEST_INSTALLATION_RESET_APPROVAL("/REQUEST/INSTALLATION/RESET_APPROVAL"), + REQUEST_INSTALLATION_RESET_TO_DRAFT("/REQUEST/INSTALLATION/RESET_TO_DRAFT"), + REQUEST_INSTALLATION_REQUEST_UPDATE("/REQUEST/INSTALLATION/REQUEST_UPDATE"), + REQUEST_INSTALLATION_REQUEST_SUBMIT("/REQUEST/INSTALLATION/SUBMIT"), + /** Resettlement Request */ + REQUEST_RST_CREATE("/REQUEST/RESETTLEMENT/CREATE"), + REQUEST_RST_SUBMIT("/REQUEST/RESETTLEMENT/SUBMIT"), + REQUEST_RST_APPROVE("/REQUEST/RESETTLEMENT/APPROVE"), + REQUEST_RST_REJECT("/REQUEST/RESETTLEMENT/REJECT"), + REQUEST_RST_RESET("/REQUEST/RESETTLEMENT/RESET"), + REQUEST_RST_RESET_APPROVAL("/REQUEST/RESETTLEMENT/RESET_APPROVAL"), + REQUEST_RST_RESET_PAYMENT("/REQUEST/RESETTLEMENT/RESET_PAYMENT"), + REQUEST_RST_PAY_SYSPER("/REQUEST/RESETTLEMENT/PAY_SYSPER"), + REQUEST_RST_PAY_MANUALLY("/REQUEST/RESETTLEMENT/PAY_MANUALLY"), + /** TopUp Request */ + REQUEST_TOP_UP_SUBMIT("/REQUEST/TOP_UP/SUBMIT"), + REQUEST_TOP_UP_APPROVE("/REQUEST/TOP_UP/APPROVE"), + REQUEST_TOP_UP_RESUBMIT("/REQUEST/TOP_UP/RESUBMIT"), + REQUEST_TOP_UP_REJECT("/REQUEST/TOP_UP/REJECT"), + REQUEST_TOP_UP_PAY_MANUALLY("/REQUEST/TOP_UP/PAY_MANUALLY"), + REQUEST_TOP_UP_PAY_ABAC("/REQUEST/TOP_UP/PAY_ABAC"), + /** Others */ + DECLARATION_UPDATE("/DECLARATION/UPDATE"), + REQUEST_DELETE_COMMENTS("/REQUEST/DELETE_COMMENT"), + VIEW_REPORTS("/REPORTS"); + + private final String value; + + MovementFilePermission(String value) { + this.value = value; + } + + public String getValue() { + return this.value; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/MovementFileSecurityChecker.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/MovementFileSecurityChecker.java new file mode 100644 index 0000000..11b5639 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/MovementFileSecurityChecker.java @@ -0,0 +1,393 @@ +package eu.europa.eeas.erights.common.security; + +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.base.user.User; +import eu.europa.eeas.ananke.core.data.support.EntityRepositoryRegistry; +import eu.europa.eeas.ananke.core.security.SecurityHelper; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.VReportMovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.MovementFileJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.VReportMovementFileJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.Arrays; +import java.util.List; +import java.util.Set; + +public class MovementFileSecurityChecker { + + public static final Logger logger = LoggerFactory.getLogger(MovementFileSecurityChecker.class); + + public static final String CAN_CREATE = "@" + ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER + "." + "canCreate()"; + + public static final String CAN_LIST = "@" + ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER + "." + "canList()"; + + public static final String CAN_MANGE_GUIDELINES = "@" + ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER + "." + "canManageGuidelines()"; + + public static final String CAN_VIEW_REPORTS = "@" + ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER + "." + "canViewReports()"; + + public static final String CAN_CALCULATE_ROUTE_PRICE = "@" + ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER + "." + "canCalculateRoutes()"; + + public static final String CAN_ACCESS_ADMIN_IT_SUPPORT = "@" + ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER + "." + "canAccessAdminItSupport()"; + + + public static final String CAN_CONSULT_ENTITLEMENTS = "@" + ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER + "." + "canConsultEntitlements()"; + + public static final String CAN_ACCESS_BACK_OFFICE = "@" + ERightsBeanNames.ERIGHTS_SECURITY_CHECKER + "." + "canAccessBackOffice()"; + + @Autowired + private SecurityHelper securityHelper; + + @Autowired + private AbstractUserHandler userHandler; + + @Autowired + private EntityRepositoryRegistry entityRepositoryRegistry; + + public Boolean canAccessBackOffice() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.ADMIN_ACCESS_BACKOFFICE.getValue()); + } + + public Boolean canCreate() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.CREATE.getValue()); + } + + public Boolean canDelete(Long movementFileId) { + return hasAuthority(MovementFilePermission.DELETE.getValue(), movementFileId); + } + + public Boolean canUpdate(Long movementFileId) { + return hasAuthority(MovementFilePermission.UPDATE.getValue(), movementFileId); + } + + public Boolean canView(Long movementFileId) { + if (movementFileId == null) { + return false; + } + return hasAuthority(MovementFilePermission.VIEW.getValue(), movementFileId); + } + + public Boolean canWithdraw(Long movementFileId) { + return hasAuthority(MovementFilePermission.WITHDRAW.getValue(), movementFileId); + } + + public Boolean canConfirm(Long movementFileId) { + return hasAuthority(MovementFilePermission.CONFIRM.getValue(), movementFileId); + } + + + public Boolean canComplete(Long movementFileId) { + return hasAuthority(MovementFilePermission.COMPLETE.getValue(), movementFileId); + } + + public Boolean canCancel(Long movementFileId) { + return hasAuthority(MovementFilePermission.CANCEL.getValue(), movementFileId); + } + + public Boolean canReopen(Long movementFileId) { + return hasAuthority(MovementFilePermission.REOPEN.getValue(), movementFileId); + } + + + public Boolean canList(Long movementFileId) { + return hasAuthority(MovementFilePermission.LIST.getValue(), movementFileId); + } + + public Boolean canList() { + if (this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.LIST.getValue())) { + return true; + } + + Set orgIds = this.securityHelper.getOrganisationsWithAuthority(MovementFilePermission.LIST.getValue()); + + return orgIds != null && !orgIds.isEmpty(); + } + + public Boolean hasOrganisationIndependentListAuthority() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.LIST.getValue()); + } + + public Set getOrganisationsWithListAuthority() { + return this.securityHelper.getOrganisationsWithAuthority(MovementFilePermission.LIST.getValue()); + } + + public Boolean canViewAudit() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.ADMIN_AUDIT.getValue()); + } + + public Boolean canAdminManage() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.ADMIN_MANAGE.getValue()); + } + + public Boolean canViewHomePage() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.HOME_PAGE_VIEW.getValue()); + } + + public Boolean hasOrganisationIndependentAuthority(MovementFilePermission permission) { + return this.securityHelper.hasOrganisationIndependentAuthority(permission.getValue()); + } + + public Boolean isOwner(Long movementFileId) { + if (movementFileId == null) { + return false; + } + + MovementFileJpaEntity movementFile = getMovementFile(movementFileId); + if (movementFile == null || movementFile.getJobHolder() == null) { + return false; + } + + Long perId = userHandler.getUser().getId(); + String ecasEmail = userHandler.getUser().getEmail(); + String privateEmail = movementFile.getJobHolder().getPrivateEmail(); + String businessEmail = movementFile.getJobHolder().getEmail(); + + logger.info("Check if is owner perId:{}, ecasEmail:{}, privateEmail:{}, businessEmail:{}", perId, ecasEmail, privateEmail, businessEmail); + + // checks the ownership based on perId or business email or personal email + if (perId.equals(movementFile.getJobHolder().getId()) + || (businessEmail != null && businessEmail.equalsIgnoreCase(ecasEmail)) + || (privateEmail != null && privateEmail.equalsIgnoreCase(ecasEmail))) { + return true; + } + + logger.info("The current user: {} is not the owner of the MF:{} ", perId, movementFileId); + + return false; + } + public Boolean isSystemUser() { + + User user = userHandler.getUser(); + Long perId = user.getId(); + if ("SYSTEM".equals(user.getDomainUserName())){ + return true; + } + + + logger.info("The current user: {} is not the System User ", perId); + + return false; + } + + public Boolean isOwnerOfAtLeastOneMovementFile() { + VReportMovementFileJpaRepository repo = entityRepositoryRegistry + .getReaderRepositoryFor(VReportMovementFileJpaEntity.class, VReportMovementFileJpaRepository.class); + User currentUser = this.getCurrentUser(); + + List files = repo.findAllByUserIdOrEmailAndStatesNotIn(currentUser.getId(), currentUser.getEmail(), + Arrays.asList(MovementFileState.DELETED.name(), MovementFileState.DRAFT.name())); + + if (files.isEmpty()) { + logger.info("The current user:{} with email:{} has no active movement files", currentUser.getId(), currentUser.getEmail()); + return false; + } + + return true; + } + + public User getCurrentUser() { + return userHandler.getUser(); + } + + private MovementFileJpaEntity getMovementFile(Long movementFileId) { + MovementFileJpaRepository repository = this.entityRepositoryRegistry.getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class); + + return repository.findById(movementFileId); + } + + public Boolean canConsultEntitlements(Long movementFileId) { + return hasAuthority(MovementFilePermission.ENTITLEMENTS_CONSULT.getValue(), movementFileId); + } + + public Boolean canUpdateDeclaration(Long movementFileId) { + return hasAuthority(MovementFilePermission.DECLARATION_UPDATE.getValue(), movementFileId); + } + + public Boolean canUpdateEntitlements(Long movementFileId) { + return hasAuthority(MovementFilePermission.ENTITLEMENTS_UPDATE.getValue(), movementFileId); + } + + public Boolean canReviewTudRequest(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_TUD_REVIEW.getValue(), movementFileId); + } + + public Boolean canResubmitTudRequest(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_TUD_RESUBMIT.getValue(), movementFileId); + } + + public Boolean canPayTudRequestManually(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_TUD_PAY_MANUALLY.getValue(), movementFileId); + } + + public Boolean canPayTudRequestAbac(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_TUD_PAY_ABAC.getValue(), movementFileId); + } + + public Boolean canReviewRemRequest(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_REM_REVIEW.getValue(), movementFileId); + } + + public Boolean canEditRemRequest(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_REM_EDIT.getValue(), movementFileId); + } + + public Boolean canApproveRemRequest(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_REM_APPROVE.getValue(), movementFileId); + } + + public Boolean canRejectRemRequest(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_REM_REJECT.getValue(), movementFileId); + } + + public Boolean canResubmitRemRequest(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_REM_RESUBMIT.getValue(), movementFileId); + } + + public Boolean canSubmitRemRequest(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_REM_SUBMIT.getValue(), movementFileId); + } + + public Boolean canPayRemRequestManually(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_REM_PAY_MANUALLY.getValue(), movementFileId); + } + + public Boolean canPayRemRequestAbac(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_REM_PAY_ABAC.getValue(), movementFileId); + } + + public Boolean canSubmitTopUpRequest(Long movementFileId) { + return this.isOwner(movementFileId); + } + + public Boolean canApproveTopUpRequest(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_TOP_UP_APPROVE.getValue(), movementFileId); + } + + public Boolean canResubmitTopUpRequest(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_TOP_UP_RESUBMIT.getValue(), movementFileId); + } + + public Boolean canRejectTopUpRequest(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_TOP_UP_REJECT.getValue(), movementFileId); + } + + public Boolean canPayTopUpRequestManually(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_TOP_UP_PAY_MANUALLY.getValue(), movementFileId); + } + + public Boolean canPayTopUpRequestAbac(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_TOP_UP_PAY_ABAC.getValue(), movementFileId); + } + + public Boolean canManageGuidelines() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.MANAGE_GUIDELINES.getValue()); + } + + public Boolean canViewReports() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.VIEW_REPORTS.getValue()); + } + + public Boolean canRejectPaidTudRequest(Long movementFileId) { + return hasAuthority(MovementFilePermission.REQUEST_REJECT_PAID.getValue(), movementFileId); + } + + public Boolean hasAuthority(String permission, Long movementFileId) { + if (this.securityHelper.hasOrganisationIndependentAuthority(permission)) { + return true; + } + + if (movementFileId == null) { + return false; + } + + MovementFileJpaEntity movementFileJpaEntity = getMovementFile(movementFileId); + if (movementFileJpaEntity == null) { + throw new ResourceNotFoundRuntimeException(ERightsExceptionCode.ER001); + } + if (movementFileJpaEntity.getDelegationOrgFromId() == null) { + return false; + } + + Set orgIds = this.securityHelper.getOrganisationsWithAuthority(permission); + return orgIds != null && orgIds.contains(movementFileJpaEntity.getDelegationOrgFromId()); + } + + public Boolean canConsultEntitlements() { + return this.securityHelper.hasAuthority(MovementFilePermission.ENTITLEMENTS_CONSULT.getValue()); + } + + public Boolean hasOrganisationIndependentEntitlementsConsultAuthority() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.ENTITLEMENTS_CONSULT.getValue()); + } + + public Set getOrganisationsWithEntitlementsConsultAuthority() { + return this.securityHelper.getOrganisationsWithAuthority(MovementFilePermission.ENTITLEMENTS_CONSULT.getValue()); + } + + public Boolean canRefreshInstallation() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.REQUEST_INSTALLATION_REFRESH.getValue()); + } + + public Boolean canApproveInstallation() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.REQUEST_INSTALLATION_APPROVE.getValue()); + } + + public Boolean canPayInstallationManually() { + return this.securityHelper.hasOrganisationIndependentAuthority( + MovementFilePermission.REQUEST_INSTALLATION_SYSPER_PAYMENT.getValue()); + } + + public Boolean canRequestInstallationSysperPayment() { + return this.securityHelper.hasOrganisationIndependentAuthority( + MovementFilePermission.REQUEST_INSTALLATION_MANUAL_PAYMENT.getValue()); + } + + public Boolean canRejectInstallation() { + return this.securityHelper.hasOrganisationIndependentAuthority( + MovementFilePermission.REQUEST_INSTALLATION_REJECT.getValue()); + } + + public Boolean canUpdateInstallationPaymentInSysper() { + return this.securityHelper.hasOrganisationIndependentAuthority( + MovementFilePermission.REQUEST_INSTALLATION_UPDATE_SYSPER.getValue()); + } + + public Boolean canEditInstallation() { + return this.securityHelper.hasOrganisationIndependentAuthority( + MovementFilePermission.REQUEST_INSTALLATION_EDIT.getValue()); + } + + public Boolean canRequestUpdatePaid() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.REQUEST_INSTALLATION_REQUEST_UPDATE.getValue()); + } + + public Boolean canDeleteComments() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.REQUEST_DELETE_COMMENTS.getValue()); + } + + public Boolean canResetInstallationRequestFromApproved() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.REQUEST_INSTALLATION_RESET_APPROVAL.getValue()); + } + + public Boolean canResetInstallationRequestToDraft() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.REQUEST_INSTALLATION_RESET_TO_DRAFT.getValue()); + } + public Boolean canSubmitInstallationRequest() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.REQUEST_INSTALLATION_REQUEST_SUBMIT.getValue()); + } + + public Boolean canCalculateRoutes() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.ADMIN_CALCULATE_ROUTE.getValue()); + } + + + public Boolean canAccessAdminItSupport() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.ADMIN_IT_SUPPORT.getValue()); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/PostingAllowancePermission.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/PostingAllowancePermission.java new file mode 100644 index 0000000..7d346f7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/PostingAllowancePermission.java @@ -0,0 +1,50 @@ +package eu.europa.eeas.erights.common.security; + +public enum PostingAllowancePermission { + + REQUEST_TRAVEL_APPROVE("/REQUEST/TRAVEL/APPROVE",""), + REQUEST_TRAVEL_REJECT("/REQUEST/TRAVEL/REJECT",""), + REQUEST_TRAVEL_PAY_SYSPER("/REQUEST/TRAVEL/PAY_SYSPER",""), + REQUEST_TRAVEL_PAY_MANUALLY("/REQUEST/TRAVEL/PAY_MANUALLY",""), + REQUEST_TRAVEL_CREATE_REGULARIZATIONS("/REQUEST/TRAVEL/CREATE_REGULARIZATIONS",""), + REQUEST_TRAVEL_RESUBMIT("/REQUEST/TRAVEL/RESUBMIT",""), + POSTING_ENTITLEMENTS_CONSULT("/POSTING_ENTITLEMENTS/CONSULT",""), + REQUEST_TRAVEL_DELETE_COMMENTS("/REQUEST/DELETE_COMMENT",""), + REQUEST_TRAVEL_SAVE("/REQUEST/TRAVEL/SAVE",""), + REQUESTS_LIST("/POSTING_ENTITLEMENTS/CONSULT",""), + ACCOMMODATION_DECLARATION_CREATE("/REQUEST/ACC_DECLARATION/REQUEST","CREATE"), + ACCOMMODATION_DECLARATION_APPROVE("/REQUEST/ACC_DECLARATION/APPROVE","APPROVE"), + ACCOMMODATION_DECLARATION_SUBMIT("/REQUEST/ACC_DECLARATION/SUBMIT","SUBMIT"), + ACCOMMODATION_DECLARATION_REJECT("/REQUEST/ACC_DECLARATION/REJECT","REJECT"), + ACCOMMODATION_DECLARATION_RESET("/REQUEST/ACC_DECLARATION/RESET","RESET"), + ACCOMMODATION_DECLARATION_RESET_APPROVAL("/REQUEST/ACC_DECLARATION/RESET_APPROVAL","RESET_APPROVAL"), + ACCOMMODATION_DECLARATION_COMPLETE("/REQUEST/ACC_DECLARATION/COMPLETE","COMPLETE"), + ACCOMMODATION_PAYMENT_CREATE("/REQUEST/ACC_PAYMENT/CREATE", "CREATE"), + ACCOMMODATION_PAYMENT_SUBMIT("/REQUEST/ACC_PAYMENT/SUBMIT", "SUBMIT"), + ACCOMMODATION_PAYMENT_APPROVE("/REQUEST/ACC_PAYMENT/APPROVE", "APPROVE"), + ACCOMMODATION_PAYMENT_REJECT("/REQUEST/ACC_PAYMENT/REJECT", "REJECT"), + ACCOMMODATION_PAYMENT_RESET("/REQUEST/ACC_PAYMENT/RESET", "RESET"), + ACCOMMODATION_PAYMENT_RESET_APPROVAL("/REQUEST/ACC_PAYMENT/RESET_APPROVAL", + "RESET_APPROVAL"), + ACCOMMODATION_PAYMENT_PAY("/REQUEST/ACC_PAYMENT/PAY", "PAY"), + ACCOMMODATION_PAYMENT_SUBMIT_POP("/REQUEST/ACC_PAYMENT/SUBMIT_POP", "SUBMIT_POP"), + ACCOMMODATION_PAYMENT_REJECT_POP("/REQUEST/ACC_PAYMENT/REJECT_POP", "REJECT_POP"), + ACCOMMODATION_PAYMENT_VALIDATE_POP("/REQUEST/ACC_PAYMENT/VALIDATE_POP", "VALIDATE_POP"), + ACCOMMODATION_PAYMENT_FINALISE_PAYMENT("/REQUEST/ACC_PAYMENT/FINALISE_PAYMENT", + "FINALISE_PAYMENT"); + + private final String value; + private final String action; + + PostingAllowancePermission(String value,String action) { + this.value = value; + this.action = action; + } + + public String getValue() { + return this.value; + } + public String getAction() { + return this.action; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/PostingAllowanceSecurityChecker.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/PostingAllowanceSecurityChecker.java new file mode 100644 index 0000000..5d59177 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/PostingAllowanceSecurityChecker.java @@ -0,0 +1,169 @@ +package eu.europa.eeas.erights.common.security; + +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.base.user.User; +import eu.europa.eeas.ananke.core.data.support.EntityRepositoryRegistry; +import eu.europa.eeas.ananke.core.security.SecurityHelper; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.VReportPostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.allowances.PostingAllowancesJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.allowances.VReportPostingAllowancesJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationDeclarationAllowanceModel; +import eu.europa.eeas.erights.common.service.provider.allowances.AccommodationDeclarationAllowanceJpaServiceProvider; +import java.util.List; +import java.util.Set; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; + +public class PostingAllowanceSecurityChecker { + + public static final String CAN_CONSULT = "@" + ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER + "." + "canConsult()"; + public static final String HAS_ORGANISATION_INDEPENDENT_LIST_AUTHORITY= "@" + ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER + "." + "hasOrganisationIndependentListAuthority()"; + public static final String HAS_ORGANISATION_WITH_LIST_AUTHORITY= "@" + ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER + "." + "hasOrganisationsWithListAuthority()"; + public static final String CAN_PAY_SYSPER = "@" + ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER + "." + "canPaySysper()"; + public static final String CAN_CREATE_ACCOMMODATION_DECLARATION = "@" + ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER + "." + + "canCreateAccommodationDeclaration()"; + public static final String CAN_VIEW_ACCOMMODATION_DECLARATION = "@" + ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER + "." + + "canViewAccommodationDeclaration()"; + + @Autowired + private SecurityHelper securityHelper; + + @Autowired + private AbstractUserHandler userHandler; + + @Autowired + private EntityRepositoryRegistry entityRepositoryRegistry; + + @Autowired + private VReportPostingAllowancesJpaRepository vReportPostingAllowancesJpaRepository; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + public Boolean canConsult() { + return this.securityHelper.hasOrganisationIndependentAuthority(PostingAllowancePermission.POSTING_ENTITLEMENTS_CONSULT.getValue()); + } + + public Boolean canCreateRegularization() { + return this.securityHelper.hasOrganisationIndependentAuthority(PostingAllowancePermission.REQUEST_TRAVEL_CREATE_REGULARIZATIONS.getValue()); + } + + public Boolean canApprove() { + return this.securityHelper.hasOrganisationIndependentAuthority(PostingAllowancePermission.REQUEST_TRAVEL_APPROVE.getValue()); + } + + public Boolean canPayManually() { + return this.securityHelper.hasOrganisationIndependentAuthority(PostingAllowancePermission.REQUEST_TRAVEL_PAY_MANUALLY.getValue()); + } + + public Boolean canPaySysper() { + return this.securityHelper.hasOrganisationIndependentAuthority(PostingAllowancePermission.REQUEST_TRAVEL_PAY_SYSPER.getValue()); + } + + public Boolean canResubmit() { + return this.securityHelper.hasOrganisationIndependentAuthority(PostingAllowancePermission.REQUEST_TRAVEL_RESUBMIT.getValue()); + } + + public Boolean canReject() { + return this.securityHelper.hasOrganisationIndependentAuthority(PostingAllowancePermission.REQUEST_TRAVEL_REJECT.getValue()); + } + + public Boolean canDeleteComments() { + return this.securityHelper.hasOrganisationIndependentAuthority(PostingAllowancePermission.REQUEST_TRAVEL_DELETE_COMMENTS.getValue()); + } + + public User getCurrentUser() { + return userHandler.getUser(); + } + + + public Boolean isOwnerOfAtLeastOnePostingAllowance() { + + User currentUser = this.getCurrentUser(); + List postingAllowanceJpaEntities = vReportPostingAllowancesJpaRepository.findAllByUserIdOrEmail(currentUser.getId(), currentUser.getEmail()); + + return !postingAllowanceJpaEntities.isEmpty(); + } + + public Boolean canSaveChanges() { + return this.securityHelper.hasOrganisationIndependentAuthority(PostingAllowancePermission.REQUEST_TRAVEL_SAVE.getValue()); + } + + public Boolean canCreateAccommodationDeclaration() { + return this.securityHelper.hasOrganisationIndependentAuthority(PostingAllowancePermission.ACCOMMODATION_DECLARATION_CREATE.getValue()); + } + public Boolean canViewAccommodationDeclaration(Long postingAllowanceId) { + + AccommodationDeclarationAllowanceJpaServiceProvider service = (AccommodationDeclarationAllowanceJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor( + AccommodationDeclarationAllowanceModel.class); + if (canConsult() || hasOrganisationIndependentListAuthority()) { + return true; + } else if (Boolean.TRUE.equals(hasOrganisationsWithListAuthority())) { + Set orgIds = getOrganisationsWithListAuthority(); + return service.isUserWithinDelegation(postingAllowanceId, + orgIds); + } + User currentUser = getCurrentUser(); + return service.userHasAccessToAccommodationDeclaration(postingAllowanceId, currentUser); + } + + + public Boolean hasOrganisationIndependentListAuthority() { + + return this.securityHelper.hasOrganisationIndependentAuthority(PostingAllowancePermission.REQUESTS_LIST.getValue()); + } + public Set getOrganisationsWithListAuthority() { + + return this.securityHelper.getOrganisationsWithAuthority(PostingAllowancePermission.REQUESTS_LIST.getValue()); + } + + public Boolean hasOrganisationsWithListAuthority() { + + return CollectionUtils.isNotEmpty(this.securityHelper.getOrganisationsWithAuthority(PostingAllowancePermission.REQUESTS_LIST.getValue())); + } + + public Boolean hasAuthority(String permission, Long postingAllowanceId) { + + if (this.securityHelper.hasOrganisationIndependentAuthority(permission)) { + return true; + } + + if (postingAllowanceId == null) { + return false; + } + + PostingAllowanceJpaEntity postingAllowanceJpaEntity = getPostingAllowanceJpaEntity(postingAllowanceId); + if (postingAllowanceJpaEntity == null) { + throw new ResourceNotFoundRuntimeException(String.format(ERightsExceptionCode.ER028.getDescription(),postingAllowanceId)); + } + if (postingAllowanceJpaEntity.getDelegationOrgId() == null) { + return false; + } + Set orgIds = this.securityHelper.getOrganisationsWithAuthority(permission); + return orgIds != null && orgIds.contains(postingAllowanceJpaEntity.getDelegationOrgId()); + } + + private PostingAllowanceJpaEntity getPostingAllowanceJpaEntity(Long id) { + PostingAllowancesJpaRepository repository = this.entityRepositoryRegistry.getReaderRepositoryFor(PostingAllowanceJpaEntity.class, PostingAllowancesJpaRepository.class); + return repository.findById(id); + } + + public boolean canListPostingEntitlements(){ + + return Boolean.TRUE.equals(canConsult()) + || hasOrganisationIndependentListAuthority() + || hasOrganisationsWithListAuthority(); + } + + public Boolean hasOrganisationIndependentAuthority( + PostingAllowancePermission postingAllowancePermission) { + return this.securityHelper.hasOrganisationIndependentAuthority( + postingAllowancePermission.getValue()); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/RequestSecurityChecker.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/RequestSecurityChecker.java new file mode 100644 index 0000000..f5ba2f6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/security/RequestSecurityChecker.java @@ -0,0 +1,151 @@ +package eu.europa.eeas.erights.common.security; + +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.base.user.User; +import eu.europa.eeas.ananke.core.data.support.EntityRepositoryRegistry; +import eu.europa.eeas.ananke.core.security.SecurityHelper; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.MovementFileJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TopUpRequestModel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.Objects; +import java.util.Set; + +public class RequestSecurityChecker { + + public static final Logger logger = LoggerFactory.getLogger(RequestSecurityChecker.class); + + @Autowired + private SecurityHelper securityHelper; + + @Autowired + private AbstractUserHandler userHandler; + + @Autowired + private EntityRepositoryRegistry entityRepositoryRegistry; + + @Autowired + private MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + public Boolean canUpdate(RequestModel requestModel, String requestState) { + if (hasAuthority(MovementFilePermission.REQUEST_REM_SUBMIT.getValue(), requestModel)) { + return true; + } + return isOwner(requestModel, requestState); + } + + public Boolean canReject(RequestModel requestModel) { + return hasAuthority(MovementFilePermission.REQUEST_REM_REJECT.getValue(), requestModel); + } + + public Boolean isOwner(RequestModel requestModel, String requestState) { + + if (requestModel == null) { + return false; + } + + MovementFileModel movementFile = movementFileJpaServiceProvider.read(requestModel.getDeclaration().getMovementFileId()); + if (movementFile == null || movementFile.getJobHolder() == null) { + return false; + } + + Long perId = userHandler.getUser().getId(); + String ecasEmail = userHandler.getUser().getEmail(); + String privateEmail = movementFile.getJobHolder().getPrivateEmail(); + String businessEmail = movementFile.getJobHolder().getEmail(); + + logger.info("Check if is owner perId:{}, ecasEmail:{}, privateEmail:{}, businessEmail:{}", perId, ecasEmail, privateEmail, businessEmail); + + // checks the ownership based on perId or business email or personal email + if (perId.equals(movementFile.getJobHolder().getPerId()) + || (businessEmail != null && businessEmail.equalsIgnoreCase(ecasEmail)) + || (privateEmail != null && privateEmail.equalsIgnoreCase(ecasEmail))) { + return isValidUpdateRequestState(requestState); + } + + logger.info("The current user: {} is not the owner of the MF:{} ", perId, movementFile.getId()); + + return false; + } + + public User getCurrentUser() { + return userHandler.getUser(); + } + + private MovementFileJpaEntity getMovementFile(Long movementFileId) { + MovementFileJpaRepository repository = this.entityRepositoryRegistry.getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class); + + return repository.findById(movementFileId); + } + + public Boolean hasAuthority(String permission, RequestModel requestModel) { + if (requestModel == null) { + return false; + } + + MovementFileModel movementFile = movementFileJpaServiceProvider.read(requestModel.getDeclaration().getMovementFileId()); + + if (this.securityHelper.hasOrganisationIndependentAuthority(permission)) { + return true; + } + + if (movementFile == null) { + return false; + } + + MovementFileJpaEntity movementFileJpaEntity = getMovementFile(movementFile.getId()); + if (movementFileJpaEntity == null) { + throw new ResourceNotFoundRuntimeException(ERightsExceptionCode.ER001); + } + if (movementFileJpaEntity.getDelegationOrgFromId() == null) { + return false; + } + + Set orgIds = this.securityHelper.getOrganisationsWithAuthority(permission); + return orgIds != null && orgIds.contains(movementFileJpaEntity.getDelegationOrgFromId()); + } + + public Boolean hasOrganisationIndependentEntitlementsConsultAuthority() { + return this.securityHelper.hasOrganisationIndependentAuthority(MovementFilePermission.ENTITLEMENTS_CONSULT.getValue()); + } + + private boolean isValidUpdateRequestState(String state) { + return Objects.equals(state, "DRAFT") || Objects.equals(state, "AWAITING") || Objects.equals(state, "REJECTED") || Objects.equals(state, "SUBMIT"); + } + + public boolean canSubmitTopUp(TopUpRequestModel requestModel, String requestState) { + if (hasAuthority(MovementFilePermission.REQUEST_TOP_UP_APPROVE.getValue(), requestModel)) { + return true; + } + return isOwner(requestModel, requestState); + } + + public boolean canApproveTopUp(TopUpRequestModel requestModel) { + return hasAuthority(MovementFilePermission.REQUEST_TOP_UP_APPROVE.getValue(), requestModel); + } + + public boolean canRejectTopUp(TopUpRequestModel requestModel) { + return hasAuthority(MovementFilePermission.REQUEST_TOP_UP_REJECT.getValue(), requestModel); + } + + + public boolean canPayManuallyTopUp(TopUpRequestModel requestModel) { + return hasAuthority(MovementFilePermission.REQUEST_TOP_UP_PAY_MANUALLY.getValue(), requestModel); + } + + public boolean canPayAbacTopUp(TopUpRequestModel requestModel) { + return hasAuthority(MovementFilePermission.REQUEST_TOP_UP_PAY_ABAC.getValue(), requestModel); + } + + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/connector/http/soap/provider/HrsSoapConnectorServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/connector/http/soap/provider/HrsSoapConnectorServiceProvider.java new file mode 100644 index 0000000..ed00c18 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/connector/http/soap/provider/HrsSoapConnectorServiceProvider.java @@ -0,0 +1,88 @@ +package eu.europa.eeas.erights.common.service.connector.http.soap.provider; + +import eu.europa.eeas.ananke.core.security.ticketmanagement.TicketType; +import eu.europa.eeas.ananke.core.service.provider.connector.AbstractConnectorServiceProvider; +import eu.europa.eeas.ananke.tools.hermes.connector.http.soap.gateway.HermesDocumentSoapGateway; +import eu.europa.eeas.ananke.tools.hermes.connector.http.soap.model.ws.DocumentRetrievalOptionsConnectorModel; +import eu.europa.eeas.ananke.tools.hermes.connector.http.soap.model.ws.DocumentSearchConnectorModel; +import eu.europa.eeas.ananke.tools.hermes.connector.http.soap.model.ws.DocumentsConnectorModel; +import eu.europa.eeas.ananke.tools.hermes.connector.ql.QueryExpression; +import eu.europa.eeas.ananke.tools.hermes.connector.support.AresUriProvider; +import org.springframework.beans.factory.annotation.Autowired; + +import java.net.URI; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class HrsSoapConnectorServiceProvider extends AbstractConnectorServiceProvider { + + @Autowired + private AresUriProvider aresUriProvider; + + @Autowired + private HermesDocumentSoapGateway gateway; + + public DocumentsConnectorModel searchHrsDocument(String documentId) { + DocumentSearchConnectorModel connectorModel = new DocumentSearchConnectorModel(); + + DocumentRetrievalOptionsConnectorModel options = new DocumentRetrievalOptionsConnectorModel(); + options.assignmentWorkflow() + .externalizationDetails() + .externalSignatures() + .filingInfo() + .itemsAndVersionsMetadata() + .links() + .procedure() + .senders() + .sendersRecipientsValidationForRegistration() + .signatoryWorkflow() + .signatoryWorkflowSupportingItems() + .signedBy() + .specificMetadataItemsMetadata(); + + connectorModel.setDocumentRetrievalOptions(options); + connectorModel.setQueryExpression(new InnerQueryExpression(documentId)); + + return this.gateway.searchDocumentsByExpression(connectorModel, TicketType.PROXY); + + } + + public URI getDocumentUrlByDocumentId(String documentId) { + + return this.aresUriProvider.getDocumentUrlById(documentId); + } + + public URI getDocumentUrl(String type) { + if (type.equals("id")) { + return this.aresUriProvider.getDocumentUrlById(null); + } else { + return this.aresUriProvider.getDocumentUrlBySaveNumber(null); + } + + } + + private static class InnerQueryExpression implements QueryExpression { + + private final String documentId; + + public InnerQueryExpression(String documentId) { + this.documentId = documentId; + } + + @Override + public String compile() { + String queryString; + Pattern pattern = Pattern.compile("^([A-Fa-f0-9]{2}){8,9}$"); + Matcher matcher = pattern.matcher(documentId); + if (matcher.find()) { + queryString = "documentId = '" + documentId + "' "; + + } else { + queryString = " saveNumber = '" + documentId + "' or registrationNumber = '" + documentId + "'"; + } + + return queryString; + } + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/AbacItemModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/AbacItemModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..a7c8a41 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/AbacItemModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,31 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.AbacItemJpaEntity; +import eu.europa.eeas.erights.common.service.model.AbacItemModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class AbacItemModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + public AbacItemModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return TypeFactory.valueOf(AbacItemModel.class); + } + + @Override + protected Type getBType() { + return TypeFactory.valueOf(AbacItemJpaEntity.class); + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/AbstractEntityToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/AbstractEntityToModelClassMapBuilder.java new file mode 100644 index 0000000..754a66d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/AbstractEntityToModelClassMapBuilder.java @@ -0,0 +1,13 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.base.mapping.bean.AbstractClassMapBuilder; +import eu.europa.eeas.ananke.core.data.entity.Entity; +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import org.springframework.context.ApplicationContext; + +public abstract class AbstractEntityToModelClassMapBuilder , T extends AbstractModel> extends AbstractClassMapBuilder { + protected AbstractEntityToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/AppParameterModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/AppParameterModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..44fe956 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/AppParameterModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.AppParameterJpaEntity; +import eu.europa.eeas.erights.common.service.model.AppParameterModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class AppParameterModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(AppParameterModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(AppParameterJpaEntity.class); + + public AppParameterModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/AuditMovementFileModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/AuditMovementFileModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..385e976 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/AuditMovementFileModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.AuditMovementFileJpaEntity; +import eu.europa.eeas.erights.common.service.model.AuditMovementFileModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class AuditMovementFileModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(AuditMovementFileModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(AuditMovementFileJpaEntity.class); + + public AuditMovementFileModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/CityModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/CityModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..a128184 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/CityModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.CityJpaEntity; +import eu.europa.eeas.erights.common.service.data.mapping.custommapper.CityModelToJpaEntityCustomMapper; +import eu.europa.eeas.erights.common.service.model.CityModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class CityModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(CityModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(CityJpaEntity.class); + + public CityModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder + .field("code", "id") + .field("name", "nameEn") + .customize(new CityModelToJpaEntityCustomMapper()) + .byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/CountryModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/CountryModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..dc7239c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/CountryModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.CountryJpaEntity; +import eu.europa.eeas.erights.common.service.data.mapping.custommapper.CountryModelToJpaEntityCustomMapper; +import eu.europa.eeas.erights.common.service.model.CountryModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class CountryModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(CountryModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(CountryJpaEntity.class); + + public CountryModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder + .field("code", "id") + .field("name", "nameEn") + .customize(new CountryModelToJpaEntityCustomMapper()) + .byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/ExchangeRateModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/ExchangeRateModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..1eef2b7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/ExchangeRateModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.ExchangeRateJpaEntity; +import eu.europa.eeas.erights.common.service.model.ExchangeRateModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class ExchangeRateModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(ExchangeRateModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(ExchangeRateJpaEntity.class); + + public ExchangeRateModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/HOAFunctionalMailboxModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/HOAFunctionalMailboxModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..99271f5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/HOAFunctionalMailboxModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,46 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.HOAFunctionalMailboxJpaEntity; +import eu.europa.eeas.erights.common.service.model.HOAFunctionalMailboxModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class HOAFunctionalMailboxModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf( + HOAFunctionalMailboxModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf( + HOAFunctionalMailboxJpaEntity.class); + + public HOAFunctionalMailboxModelToJpaEntityClassMapBuilder( + ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap( + ClassMapBuilder classMapBuilder) { + classMapBuilder + .field("orgId", "id") + .byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/HeadOfAdministrationModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/HeadOfAdministrationModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..b20a9e9 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/HeadOfAdministrationModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,46 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.HeadOfAdministrationJpaEntity; +import eu.europa.eeas.erights.common.service.model.HeadOfAdministrationModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class HeadOfAdministrationModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf( + HeadOfAdministrationModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf( + HeadOfAdministrationJpaEntity.class); + + public HeadOfAdministrationModelToJpaEntityClassMapBuilder( + ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap( + ClassMapBuilder classMapBuilder) { + classMapBuilder + .field("orgId", "id") + .byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/IataAirportModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/IataAirportModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..8ca07f7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/IataAirportModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.IataAirportJpaEntity; +import eu.europa.eeas.erights.common.service.model.IataAirportModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class IataAirportModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(IataAirportModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(IataAirportJpaEntity.class); + + public IataAirportModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/MovementContextModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/MovementContextModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..6497a9e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/MovementContextModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementContextJpaEntity; +import eu.europa.eeas.erights.common.service.model.MovementContextModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author imironiu + */ +public class MovementContextModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(MovementContextModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(MovementContextJpaEntity.class); + + public MovementContextModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/MovementFileDetailModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/MovementFileDetailModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..e1dd46c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/MovementFileDetailModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileDetailJpaEntity; +import eu.europa.eeas.erights.common.service.model.MovementFileDetailModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Claim Attachment Converter. + * + * @author tapaifo + */ +public class MovementFileDetailModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type A_TYPE = TypeFactory.valueOf(MovementFileDetailModel.class); + + private static final Type B_TYPE = TypeFactory.valueOf(MovementFileDetailJpaEntity.class); + + public MovementFileDetailModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return A_TYPE; + } + + @Override + protected Type getBType() { + return B_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/MovementFileModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/MovementFileModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..2c518ed --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/MovementFileModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,46 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileJpaEntity; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * Created by iliessu on 14/11/2019; e-rights. + * + *

    + * TODO : comment class ! + *

    + * + * @author Silviu Ilie. + * + */ +public class MovementFileModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(MovementFileModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(MovementFileJpaEntity.class); + + public MovementFileModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/MovementTypeModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/MovementTypeModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..94df488 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/MovementTypeModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementTypeJpaEntity; +import eu.europa.eeas.erights.common.service.model.MovementTypeModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class MovementTypeModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(MovementTypeModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(MovementTypeJpaEntity.class); + + public MovementTypeModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/PersonAddressModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/PersonAddressModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..83d22a2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/PersonAddressModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonAddressJpaEntity; +import eu.europa.eeas.erights.common.service.model.PersonAddressModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PersonAddressModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(PersonAddressModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(PersonAddressJpaEntity.class); + + public PersonAddressModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/PersonEmailModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/PersonEmailModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..948408e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/PersonEmailModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonEmailJpaEntity; +import eu.europa.eeas.erights.common.service.model.PersonEmailModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PersonEmailModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(PersonEmailModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(PersonEmailJpaEntity.class); + + public PersonEmailModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/PersonIndemnityModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/PersonIndemnityModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..5693ec4 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/PersonIndemnityModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonIndemnityJpaEntity; +import eu.europa.eeas.erights.common.service.data.mapping.custommapper.PersonIndemnityCustomMapper; +import eu.europa.eeas.erights.common.service.model.PersonIndemnityModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PersonIndemnityModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(PersonIndemnityModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(PersonIndemnityJpaEntity.class); + + public PersonIndemnityModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new PersonIndemnityCustomMapper()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/PersonModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/PersonModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..9d52901 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/PersonModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonJpaEntity; +import eu.europa.eeas.erights.common.service.data.mapping.custommapper.PersonModelToJpaEntityCustomMapper; +import eu.europa.eeas.erights.common.service.model.PersonModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PersonModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(PersonModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(PersonJpaEntity.class); + + public PersonModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder classMapBuilder) { + classMapBuilder.byDefault().customize(new PersonModelToJpaEntityCustomMapper()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/UserPreferenceModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/UserPreferenceModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..81220e5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/UserPreferenceModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.UserPreferenceJpaEntity; +import eu.europa.eeas.erights.common.service.model.UserPreferenceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class UserPreferenceModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(UserPreferenceModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(UserPreferenceJpaEntity.class); + + public UserPreferenceModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VAssignmentHistEeasModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VAssignmentHistEeasModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..435fcd2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VAssignmentHistEeasModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.VAssignmentHistEeasJpaEntity; +import eu.europa.eeas.erights.common.service.model.ws.VAssignmentHistEeasModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VAssignmentHistEeasModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(VAssignmentHistEeasModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(VAssignmentHistEeasJpaEntity.class); + + public VAssignmentHistEeasModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VAssignmentHistModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VAssignmentHistModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..678956a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VAssignmentHistModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.VAssignmentHistJpaEntity; +import eu.europa.eeas.erights.common.service.model.VAssignmentHistModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VAssignmentHistModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf( + VAssignmentHistModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(VAssignmentHistJpaEntity.class); + + public VAssignmentHistModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VJobModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VJobModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..75e80f2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VJobModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.VJobJpaEntity; +import eu.europa.eeas.erights.common.service.model.VJobModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VJobModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(VJobModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(VJobJpaEntity.class); + + public VJobModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VNewTravelAllowanceJpaEntityToVNewTravelAllowanceModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VNewTravelAllowanceJpaEntityToVNewTravelAllowanceModelClassMapBuilder.java new file mode 100644 index 0000000..817c99b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VNewTravelAllowanceJpaEntityToVNewTravelAllowanceModelClassMapBuilder.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.erights.common.data.jpa.entity.VCurrentExerciseNewTravelAllowanceJpaEntity; +import eu.europa.eeas.erights.common.service.model.VNewTravelAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VNewTravelAllowanceJpaEntityToVNewTravelAllowanceModelClassMapBuilder extends + AbstractEntityToModelClassMapBuilder { + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(VCurrentExerciseNewTravelAllowanceJpaEntity.class); + + private static final Type MODEL_TYPE= TypeFactory.valueOf(VNewTravelAllowanceModel.class); + + public VNewTravelAllowanceJpaEntityToVNewTravelAllowanceModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return ENTITY_TYPE ; + } + + @Override + protected Type getBType() { + return MODEL_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VPersonModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VPersonModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..d61a16b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VPersonModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.VPersonJpaEntity; +import eu.europa.eeas.erights.common.service.model.VPersonModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VPersonModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(VPersonModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(VPersonJpaEntity.class); + + public VPersonModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.field("perId", "id") + .byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VReportMovementFileModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VReportMovementFileModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..13fa7d7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VReportMovementFileModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.VReportMovementFileJpaEntity; +import eu.europa.eeas.erights.common.service.model.VReportMovementFileModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VReportMovementFileModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(VReportMovementFileModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(VReportMovementFileJpaEntity.class); + + public VReportMovementFileModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VRequestModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VRequestModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..87402dd --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/VRequestModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.VAllowanceJpaEntity; +import eu.europa.eeas.erights.common.service.model.VAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VRequestModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(VAllowanceModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(VAllowanceJpaEntity.class); + + public VRequestModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/AbstractModelToModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/AbstractModelToModelClassMapBuilder.java new file mode 100644 index 0000000..2181da9 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/AbstractModelToModelClassMapBuilder.java @@ -0,0 +1,11 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.allowance; + +import eu.europa.eeas.ananke.core.base.mapping.bean.AbstractClassMapBuilder; +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import org.springframework.context.ApplicationContext; + +public abstract class AbstractModelToModelClassMapBuilder extends AbstractClassMapBuilder { + protected AbstractModelToModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/AccommodationDeclarationAllowanceModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/AccommodationDeclarationAllowanceModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..eebb5c6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/AccommodationDeclarationAllowanceModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,47 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.allowance; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.AccommodationDeclarationAllowanceJpaEntity; +import eu.europa.eeas.erights.common.service.data.mapping.custommapper.AccommodationDeclarationAllowanceModelToJpaEntityCustomMapper; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationDeclarationAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class AccommodationDeclarationAllowanceModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(AccommodationDeclarationAllowanceModel.class); + + private static final Type ENTITY_TYPE= TypeFactory.valueOf(AccommodationDeclarationAllowanceJpaEntity.class); + + public AccommodationDeclarationAllowanceModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE ; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder. + exclude("monthlyRentalAmount"). + exclude("monthlyRentalAmountCeiling"). + exclude("monthlySecurityAmount"). + exclude("monthlyRecurrentCosts"). + exclude("guaranteeAmount"). + exclude("remainingGuaranteeToReimburse"). + customize(new AccommodationDeclarationAllowanceModelToJpaEntityCustomMapper()).byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/AccommodationDeclarationPersonModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/AccommodationDeclarationPersonModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..97d06ea --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/AccommodationDeclarationPersonModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,40 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.allowance; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.AccommodationDeclarationPersonJpaEntity; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationDeclarationPersonModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + * @since 5.0.0 + */ +public class AccommodationDeclarationPersonModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(AccommodationDeclarationPersonModel.class); + + private static final Type ENTITY_TYPE= TypeFactory.valueOf(AccommodationDeclarationPersonJpaEntity.class); + + public AccommodationDeclarationPersonModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE ; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/AccommodationPaymentAllowanceModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/AccommodationPaymentAllowanceModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..8ef1cd5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/AccommodationPaymentAllowanceModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,47 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.allowance; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.AccommodationPaymentAllowanceJpaEntity; +import eu.europa.eeas.erights.common.service.data.mapping.custommapper.AccommodationPaymentAllowanceModelToJpaEntityCustomMapper; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationPaymentAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class AccommodationPaymentAllowanceModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(AccommodationPaymentAllowanceModel.class); + + private static final Type ENTITY_TYPE= TypeFactory.valueOf(AccommodationPaymentAllowanceJpaEntity.class); + + public AccommodationPaymentAllowanceModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE ; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder. + exclude("monthlyRentalAmount"). + exclude("monthlySecurityAmount"). + exclude("monthlyRecurrentCosts"). + exclude("nonRecurrentCosts"). + exclude("guaranteeReimbursedAmount"). + exclude("remainingGuaranteeToReimburse"). + customize(new AccommodationPaymentAllowanceModelToJpaEntityCustomMapper()).byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/PostingAllowanceDefaultModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/PostingAllowanceDefaultModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..bc8e51c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/PostingAllowanceDefaultModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.allowance; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceDefaultJpaEntity; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceDefaultModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PostingAllowanceDefaultModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(PostingAllowanceDefaultModel.class); + + private static final Type ENTITY_TYPE= TypeFactory.valueOf(PostingAllowanceDefaultJpaEntity.class); + + public PostingAllowanceDefaultModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE ; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/PostingAllowanceModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/PostingAllowanceModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..e7c3643 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/PostingAllowanceModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.allowance; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PostingAllowanceModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(PostingAllowanceModel.class); + + private static final Type ENTITY_TYPE= TypeFactory.valueOf(PostingAllowanceJpaEntity.class); + + public PostingAllowanceModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE ; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/PostingAllowancePersonModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/PostingAllowancePersonModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..24c60b1 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/PostingAllowancePersonModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.allowance; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowancePersonJpaEntity; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowancePersonModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PostingAllowancePersonModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(PostingAllowancePersonModel.class); + + private static final Type ENTITY_TYPE= TypeFactory.valueOf(PostingAllowancePersonJpaEntity.class); + + public PostingAllowancePersonModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE ; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/PostingAllowanceSupportingDocAttachmentModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/PostingAllowanceSupportingDocAttachmentModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..22ebf04 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/PostingAllowanceSupportingDocAttachmentModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,42 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.allowance; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceSupportingDocAttachmentJpaEntity; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceSupportingDocAttachmentModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class PostingAllowanceSupportingDocAttachmentModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf( + PostingAllowanceSupportingDocAttachmentModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf( + PostingAllowanceSupportingDocAttachmentJpaEntity.class); + + public PostingAllowanceSupportingDocAttachmentModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap( + ClassMapBuilder builder) { + builder.field("fileUid", "uuid").byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/PostingAllowanceSupportingDocModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/PostingAllowanceSupportingDocModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..9a02d37 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/PostingAllowanceSupportingDocModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,43 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.allowance; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceSupportingDocJpaEntity; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceSupportingDocModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class PostingAllowanceSupportingDocModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf( + PostingAllowanceSupportingDocModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf( + PostingAllowanceSupportingDocJpaEntity.class); + + public PostingAllowanceSupportingDocModelToJpaEntityClassMapBuilder( + ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap( + ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/RegularizationAllowanceModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/RegularizationAllowanceModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..ea7d202 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/RegularizationAllowanceModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.allowance; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.RegularizationAllowanceJpaEntity; +import eu.europa.eeas.erights.common.service.model.allowances.RegularizationAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class RegularizationAllowanceModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(RegularizationAllowanceModel.class); + + private static final Type ENTITY_TYPE= TypeFactory.valueOf(RegularizationAllowanceJpaEntity.class); + + public RegularizationAllowanceModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE ; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/RegularizationAllowanceModelToRegularizationAllowanceModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/RegularizationAllowanceModelToRegularizationAllowanceModelClassMapBuilder.java new file mode 100644 index 0000000..1d8fa9c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/RegularizationAllowanceModelToRegularizationAllowanceModelClassMapBuilder.java @@ -0,0 +1,34 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.allowance; + +import eu.europa.eeas.erights.common.service.model.allowances.RegularizationAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class RegularizationAllowanceModelToRegularizationAllowanceModelClassMapBuilder extends + AbstractModelToModelClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(RegularizationAllowanceModel.class); + + private static final Type ENTITY_TYPE= TypeFactory.valueOf(RegularizationAllowanceModel.class); + + public RegularizationAllowanceModelToRegularizationAllowanceModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE ; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.exclude("postingAllowancePersons").byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/RequestIndemnityModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/RequestIndemnityModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..eb9feb4 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/RequestIndemnityModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.allowance; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; + +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.RequestIndemnityJpaEntity; +import eu.europa.eeas.erights.common.service.data.mapping.custommapper.RequestIndemnityCustomMapper; +import eu.europa.eeas.erights.common.service.model.entitlement.RequestIndemnityModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class RequestIndemnityModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(RequestIndemnityModel.class); + + private static final Type ENTITY_TYPE= TypeFactory.valueOf(RequestIndemnityJpaEntity.class); + + public RequestIndemnityModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE ; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault().customize(new RequestIndemnityCustomMapper()); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/TravelAllowanceModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/TravelAllowanceModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..e194caf --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/TravelAllowanceModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.allowance; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.TravelAllowanceJpaEntity; +import eu.europa.eeas.erights.common.service.model.allowances.TravelAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class TravelAllowanceModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(TravelAllowanceModel.class); + + private static final Type ENTITY_TYPE= TypeFactory.valueOf(TravelAllowanceJpaEntity.class); + + public TravelAllowanceModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE ; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/TravelAllowanceModelToRegularizationAllowanceModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/TravelAllowanceModelToRegularizationAllowanceModelClassMapBuilder.java new file mode 100644 index 0000000..8a9ab06 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/TravelAllowanceModelToRegularizationAllowanceModelClassMapBuilder.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.allowance; + +import eu.europa.eeas.erights.common.service.model.allowances.RegularizationAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.TravelAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class TravelAllowanceModelToRegularizationAllowanceModelClassMapBuilder extends + AbstractModelToModelClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(TravelAllowanceModel.class); + + private static final Type ENTITY_TYPE= TypeFactory.valueOf(RegularizationAllowanceModel.class); + + public TravelAllowanceModelToRegularizationAllowanceModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE ; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.exclude("postingAllowancePersons").byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/VPersonModelModelToVPersonModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/VPersonModelModelToVPersonModelClassMapBuilder.java new file mode 100644 index 0000000..6777a79 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/VPersonModelModelToVPersonModelClassMapBuilder.java @@ -0,0 +1,34 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.allowance; + +import eu.europa.eeas.erights.common.service.model.VPersonModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VPersonModelModelToVPersonModelClassMapBuilder extends + AbstractModelToModelClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(VPersonModel.class); + + private static final Type ENTITY_TYPE= TypeFactory.valueOf(VPersonModel.class); + + public VPersonModelModelToVPersonModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE ; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/VReportPostingAllowanceModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/VReportPostingAllowanceModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..156ea21 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/allowance/VReportPostingAllowanceModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.allowance; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.VReportPostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.service.model.allowances.VReportPostingAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VReportPostingAllowanceModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(VReportPostingAllowanceModel.class); + + private static final Type ENTITY_TYPE= TypeFactory.valueOf(VReportPostingAllowanceJpaEntity.class); + + public VReportPostingAllowanceModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE ; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/comments/CommentForMovementFileModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/comments/CommentForMovementFileModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..c244514 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/comments/CommentForMovementFileModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.comments; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsForMovementFileJpaEntity; +import eu.europa.eeas.erights.common.service.model.comments.CommentForMovementFileModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class CommentForMovementFileModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(CommentForMovementFileModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(CommentsForMovementFileJpaEntity.class); + + public CommentForMovementFileModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/comments/CommentForPostingAllowanceModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/comments/CommentForPostingAllowanceModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..6beb6db --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/comments/CommentForPostingAllowanceModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.comments; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsForPostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.service.model.comments.CommentForPostingAllowanceModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class CommentForPostingAllowanceModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(CommentForPostingAllowanceModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(CommentsForPostingAllowanceJpaEntity.class); + + public CommentForPostingAllowanceModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/comments/CommentForRequestModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/comments/CommentForRequestModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..4e54f59 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/comments/CommentForRequestModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.comments; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsForRequestJpaEntity; +import eu.europa.eeas.erights.common.service.model.comments.CommentForRequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class CommentForRequestModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(CommentForRequestModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(CommentsForRequestJpaEntity.class); + + public CommentForRequestModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/comments/CommentForSupportingDocModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/comments/CommentForSupportingDocModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..6c6069e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/comments/CommentForSupportingDocModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.comments; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsForSupportingDocJpaEntity; +import eu.europa.eeas.erights.common.service.model.comments.CommentForSupportingDocModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class CommentForSupportingDocModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(CommentForSupportingDocModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(CommentsForSupportingDocJpaEntity.class); + + public CommentForSupportingDocModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/DeclarationModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/DeclarationModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..284f900 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/DeclarationModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.declaration; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.DeclarationJpaEntity; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class DeclarationModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(DeclarationModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(DeclarationJpaEntity.class); + + public DeclarationModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/DeclarationPersonAttachmentModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/DeclarationPersonAttachmentModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..819be74 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/DeclarationPersonAttachmentModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.declaration; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.DeclarationPersonAttachmentJpaEntity; +import eu.europa.eeas.erights.common.service.data.mapping.custommapper.DeclarationPersonAttachmentCustomMapper; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationPersonAttachmentModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class DeclarationPersonAttachmentModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(DeclarationPersonAttachmentModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(DeclarationPersonAttachmentJpaEntity.class); + + public DeclarationPersonAttachmentModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.field("fileUid", "uuid").byDefault().customize(new DeclarationPersonAttachmentCustomMapper()); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/DeclarationPersonModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/DeclarationPersonModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..33245d2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/DeclarationPersonModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.declaration; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.DeclarationPersonJpaEntity; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationPersonModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class DeclarationPersonModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(DeclarationPersonModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(DeclarationPersonJpaEntity.class); + + public DeclarationPersonModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/FamilyMemberModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/FamilyMemberModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..16c4145 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/FamilyMemberModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.declaration; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.FamilyMemberJpaEntity; +import eu.europa.eeas.erights.common.service.data.mapping.custommapper.FamilyMemberModelToJpaEntotyCustomMapper; +import eu.europa.eeas.erights.common.service.model.declaration.FamilyMemberModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class FamilyMemberModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(FamilyMemberModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(FamilyMemberJpaEntity.class); + + public FamilyMemberModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault().customize(new FamilyMemberModelToJpaEntotyCustomMapper()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/MVPersonAccommodationModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/MVPersonAccommodationModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..258ea82 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/MVPersonAccommodationModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,42 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.declaration; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.MVPersonAccommodationJpaEntity; +import eu.europa.eeas.erights.common.service.model.declaration.MVPersonAccommodationModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + * @since 5.0.0 + */ +public class MVPersonAccommodationModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(MVPersonAccommodationModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(MVPersonAccommodationJpaEntity.class); + + public MVPersonAccommodationModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.field("perId", "id") + .byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/MVPersonAccommodationModelToVPersonModelClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/MVPersonAccommodationModelToVPersonModelClassMapBuilder.java new file mode 100644 index 0000000..02af0da --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/MVPersonAccommodationModelToVPersonModelClassMapBuilder.java @@ -0,0 +1,45 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.declaration; + +import eu.europa.eeas.ananke.core.base.mapping.bean.AbstractClassMapBuilder; +import eu.europa.eeas.erights.common.service.model.VPersonModel; +import eu.europa.eeas.erights.common.service.model.declaration.MVPersonAccommodationModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + * @since 5.0.0 + */ +public class MVPersonAccommodationModelToVPersonModelClassMapBuilder extends + AbstractClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(MVPersonAccommodationModel.class); + + private static final Type MODEL_TYPE_2 = TypeFactory.valueOf(VPersonModel.class); + + public MVPersonAccommodationModelToVPersonModelClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return MODEL_TYPE_2; + } + + /** + * @param builder + */ + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/PersonBankInfoModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/PersonBankInfoModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..bbf8a56 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/declaration/PersonBankInfoModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.declaration; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.PersonBankInfoJpaEntity; +import eu.europa.eeas.erights.common.service.model.declaration.PersonBankInfoModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PersonBankInfoModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(PersonBankInfoModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(PersonBankInfoJpaEntity.class); + + public PersonBankInfoModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/document/MovementDocAttachmentModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/document/MovementDocAttachmentModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..9dc2f5a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/document/MovementDocAttachmentModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.document; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.document.MovementDocAttachmentJpaEntity; +import eu.europa.eeas.erights.common.service.model.document.MovementDocAttachmentModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class MovementDocAttachmentModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(MovementDocAttachmentModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(MovementDocAttachmentJpaEntity.class); + + public MovementDocAttachmentModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.field("fileUid", "uuid").byDefault(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/document/MovementDocModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/document/MovementDocModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..7f5b2d2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/document/MovementDocModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.document; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.document.MovementDocJpaEntity; +import eu.europa.eeas.erights.common.service.model.document.MovementDocModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class MovementDocModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(MovementDocModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(MovementDocJpaEntity.class); + + public MovementDocModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/document/MovementDocSectionModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/document/MovementDocSectionModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..788741b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/document/MovementDocSectionModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.document; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.document.MovementDocSectionJpaEntity; +import eu.europa.eeas.erights.common.service.model.document.MovementDocSectionModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class MovementDocSectionModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(MovementDocSectionModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(MovementDocSectionJpaEntity.class); + + public MovementDocSectionModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementMaxCatModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementMaxCatModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..f45e117 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementMaxCatModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxCatJpaEntity; +import eu.europa.eeas.erights.common.service.data.mapping.custommapper.EntitlementMaxCatModelToJpaEntityCustomMapper; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxCatModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class EntitlementMaxCatModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(EntitlementMaxCatModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(EntitlementMaxCatJpaEntity.class); + + public EntitlementMaxCatModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault().customize(new EntitlementMaxCatModelToJpaEntityCustomMapper()); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementMaxDefaultModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementMaxDefaultModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..79fac4a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementMaxDefaultModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxDefaultJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxDefaultModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class EntitlementMaxDefaultModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(EntitlementMaxDefaultModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(EntitlementMaxDefaultJpaEntity.class); + + public EntitlementMaxDefaultModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementMaxModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementMaxModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..23b53ef --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementMaxModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class EntitlementMaxModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(EntitlementMaxModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(EntitlementMaxJpaEntity.class); + + public EntitlementMaxModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementMaxOptionModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementMaxOptionModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..e570bcf --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementMaxOptionModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxOptionJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxOptionModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class EntitlementMaxOptionModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(EntitlementMaxOptionModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(EntitlementMaxOptionJpaEntity.class); + + public EntitlementMaxOptionModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementTypeCatModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementTypeCatModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..c4ce80c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementTypeCatModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeCatJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeCatModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class EntitlementTypeCatModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(EntitlementTypeCatModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(EntitlementTypeCatJpaEntity.class); + + public EntitlementTypeCatModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementTypeDefaultModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementTypeDefaultModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..e73665b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementTypeDefaultModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeDefaultJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeDefaultModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class EntitlementTypeDefaultModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(EntitlementTypeDefaultModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(EntitlementTypeDefaultJpaEntity.class); + + public EntitlementTypeDefaultModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementTypeModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementTypeModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..2e00cd1 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/EntitlementTypeModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeJpaEntity; +import eu.europa.eeas.erights.common.service.data.mapping.custommapper.EntitlementTypeModelToJpaCustomMapper; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class EntitlementTypeModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(EntitlementTypeModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(EntitlementTypeJpaEntity.class); + + public EntitlementTypeModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault().customize(new EntitlementTypeModelToJpaCustomMapper()); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/RequestIndemnityModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/RequestIndemnityModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..157c948 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/RequestIndemnityModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.RequestIndemnityJpaEntity; +import eu.europa.eeas.erights.common.service.data.mapping.custommapper.RequestIndemnityCustomMapper; +import eu.europa.eeas.erights.common.service.model.entitlement.RequestIndemnityModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class RequestIndemnityModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(RequestIndemnityModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(RequestIndemnityJpaEntity.class); + + public RequestIndemnityModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault().customize(new RequestIndemnityCustomMapper()); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/VEmptyRateEntitlementTypeModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/VEmptyRateEntitlementTypeModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..c90a949 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/VEmptyRateEntitlementTypeModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.VEmptyRateEntitlementTypeJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.VEmptyRateEntitlementTypeModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class VEmptyRateEntitlementTypeModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(VEmptyRateEntitlementTypeModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(VEmptyRateEntitlementTypeJpaEntity.class); + + public VEmptyRateEntitlementTypeModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/AdvanceRequestModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/AdvanceRequestModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..f83abca --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/AdvanceRequestModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.AdvanceRequestJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.request.AdvanceRequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class AdvanceRequestModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(AdvanceRequestModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(AdvanceRequestJpaEntity.class); + + public AdvanceRequestModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/ClearingRequestModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/ClearingRequestModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..8d48c56 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/ClearingRequestModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.ClearingRequestJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.request.ClearingRequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class ClearingRequestModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(ClearingRequestModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(ClearingRequestJpaEntity.class); + + public ClearingRequestModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/InstallationRequestModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/InstallationRequestModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..424d79f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/InstallationRequestModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.InstallationRequestJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.request.InstallationRequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class InstallationRequestModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(InstallationRequestModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(InstallationRequestJpaEntity.class); + + public InstallationRequestModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestDetailAttachmentModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestDetailAttachmentModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..e0c08a7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestDetailAttachmentModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestDetailAttachmentJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestDetailAttachmentModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class RequestDetailAttachmentModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(RequestDetailAttachmentModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(RequestDetailAttachmentJpaEntity.class); + + public RequestDetailAttachmentModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.field("fileUid", "uuid").byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestDetailModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestDetailModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..286bd77 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestDetailModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestDetailJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestDetailModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class RequestDetailModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(RequestDetailModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(RequestDetailJpaEntity.class); + + public RequestDetailModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..d60f68c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class RequestModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(RequestModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(RequestJpaEntity.class); + + public RequestModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestPersonAttachmentModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestPersonAttachmentModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..7afe0eb --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestPersonAttachmentModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestPersonAttachmentJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestPersonAttachmentModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class RequestPersonAttachmentModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(RequestPersonAttachmentModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(RequestPersonAttachmentJpaEntity.class); + + public RequestPersonAttachmentModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.field("fileUid", "uuid").byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestPersonModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestPersonModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..feb0511 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestPersonModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestPersonJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestPersonModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class RequestPersonModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(RequestPersonModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(RequestPersonJpaEntity.class); + + public RequestPersonModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestSupportingDocAttachmentModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestSupportingDocAttachmentModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..b580c00 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestSupportingDocAttachmentModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestSupportingDocAttachmentJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestSupportingDocAttachmentModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class RequestSupportingDocAttachmentModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(RequestSupportingDocAttachmentModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(RequestSupportingDocAttachmentJpaEntity.class); + + public RequestSupportingDocAttachmentModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.field("fileUid", "uuid").byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestSupportingDocModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestSupportingDocModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..61dac64 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/RequestSupportingDocModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,43 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestSupportingDocJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestSupportingDocModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class RequestSupportingDocModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf( + RequestSupportingDocModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf( + RequestSupportingDocJpaEntity.class); + + public RequestSupportingDocModelToJpaEntityClassMapBuilder( + ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap( + ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/ResettlementRequestModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/ResettlementRequestModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..0ce0317 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/ResettlementRequestModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,42 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.ResettlementRequestJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.request.ResettlementRequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * @author ienaccat + */ +public class ResettlementRequestModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf( + ResettlementRequestModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf( + ResettlementRequestJpaEntity.class); + + public ResettlementRequestModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap( + ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/TopUpRequestModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/TopUpRequestModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..b45fd0d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/TopUpRequestModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.TopUpRequestJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TopUpRequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class TopUpRequestModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(TopUpRequestModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(TopUpRequestJpaEntity.class); + + public TopUpRequestModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/TotalRemRequestModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/TotalRemRequestModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..d79fb26 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/TotalRemRequestModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.TotalRemRequestJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TotalRemRequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class TotalRemRequestModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(TotalRemRequestModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(TotalRemRequestJpaEntity.class); + + public TotalRemRequestModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/TudRequestModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/TudRequestModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..3e70279 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/entitlement/request/TudRequestModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.entitlement.request; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.TudRequestJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TudRequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class TudRequestModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(TudRequestModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(TudRequestJpaEntity.class); + + public TudRequestModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/job/FunctionCodeModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/job/FunctionCodeModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..9fc8d1a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/job/FunctionCodeModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.job; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.job.FunctionCodeJpaEntity; +import eu.europa.eeas.erights.common.service.model.job.FunctionCodeModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class FunctionCodeModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(FunctionCodeModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(FunctionCodeJpaEntity.class); + + public FunctionCodeModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/job/InstitutionCodeModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/job/InstitutionCodeModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..e93bfc2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/job/InstitutionCodeModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.job; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; + +import eu.europa.eeas.erights.common.data.jpa.entity.job.InstitutionCodeJpaEntity; +import eu.europa.eeas.erights.common.service.model.job.InstitutionCodeModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class InstitutionCodeModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(InstitutionCodeModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(InstitutionCodeJpaEntity.class); + + public InstitutionCodeModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/job/PersonnelTypeModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/job/PersonnelTypeModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..f1742a8 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/job/PersonnelTypeModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.job; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.job.PersonnelTypeJpaEntity; +import eu.europa.eeas.erights.common.service.model.job.PersonnelTypeModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class PersonnelTypeModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(PersonnelTypeModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(PersonnelTypeJpaEntity.class); + + public PersonnelTypeModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/job/StatutoryLinkCodeModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/job/StatutoryLinkCodeModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..f9c9c51 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/job/StatutoryLinkCodeModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.job; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.job.StatutoryLinkCodeJpaEntity; +import eu.europa.eeas.erights.common.service.model.job.StatutoryLinkCodeModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class StatutoryLinkCodeModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(StatutoryLinkCodeModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(StatutoryLinkCodeJpaEntity.class); + + public StatutoryLinkCodeModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/notification/NotificationMFModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/notification/NotificationMFModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..a44c3ba --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/notification/NotificationMFModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.notification; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.notification.NotificationMFJpaEntity; +import eu.europa.eeas.erights.common.service.model.notification.NotificationMFModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + + +public class NotificationMFModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(NotificationMFModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(NotificationMFJpaEntity.class); + + public NotificationMFModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/notification/NotificationModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/notification/NotificationModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..8d21a14 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/notification/NotificationModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.notification; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.notification.NotificationJpaEntity; +import eu.europa.eeas.erights.common.service.model.notification.NotificationModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + + +public class NotificationModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(NotificationModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(NotificationJpaEntity.class); + + public NotificationModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/notification/NotificationRequestModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/notification/NotificationRequestModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..4610e39 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/notification/NotificationRequestModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.notification; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.notification.NotificationRequestJpaEntity; +import eu.europa.eeas.erights.common.service.model.notification.NotificationRequestModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +public class NotificationRequestModelToJpaEntityClassMapBuilder extends + AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(NotificationRequestModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(NotificationRequestJpaEntity.class); + + public NotificationRequestModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/notification/NotificationTemplateModelToJpaEntityClassMapBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/notification/NotificationTemplateModelToJpaEntityClassMapBuilder.java new file mode 100644 index 0000000..bdb8658 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/classmapbuilder/notification/NotificationTemplateModelToJpaEntityClassMapBuilder.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder.notification; + +import eu.europa.eeas.ananke.core.service.provider.data.mapping.AbstractModelToEntityClassMapBuilder; +import eu.europa.eeas.erights.common.data.jpa.entity.notification.NotificationTemplateJpaEntity; +import eu.europa.eeas.erights.common.service.model.notification.NotificationTemplateModel; +import ma.glasnost.orika.metadata.ClassMapBuilder; +import ma.glasnost.orika.metadata.Type; +import ma.glasnost.orika.metadata.TypeFactory; +import org.springframework.context.ApplicationContext; + +/** + * + */ +public class NotificationTemplateModelToJpaEntityClassMapBuilder extends AbstractModelToEntityClassMapBuilder { + + private static final Type MODEL_TYPE = TypeFactory.valueOf(NotificationTemplateModel.class); + + private static final Type ENTITY_TYPE = TypeFactory.valueOf(NotificationTemplateJpaEntity.class); + + public NotificationTemplateModelToJpaEntityClassMapBuilder(ApplicationContext applicationContext) { + super(applicationContext); + } + + @Override + protected Type getAType() { + return MODEL_TYPE; + } + + @Override + protected Type getBType() { + return ENTITY_TYPE; + } + + @Override + protected void buildMap(ClassMapBuilder builder) { + builder.byDefault(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/AccommodationDeclarationAllowanceModelToJpaEntityCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/AccommodationDeclarationAllowanceModelToJpaEntityCustomMapper.java new file mode 100644 index 0000000..fea1a50 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/AccommodationDeclarationAllowanceModelToJpaEntityCustomMapper.java @@ -0,0 +1,94 @@ +package eu.europa.eeas.erights.common.service.data.mapping.custommapper; + + +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.AccommodationDeclarationAllowanceJpaEntity; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationDeclarationAllowanceModel; +import javax.money.Monetary; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; +import org.javamoney.moneta.Money; + +/** + * + * @author ienaccat + */ +public class AccommodationDeclarationAllowanceModelToJpaEntityCustomMapper extends + CustomMapper { + + @Override + public void mapBtoA(AccommodationDeclarationAllowanceJpaEntity entity, AccommodationDeclarationAllowanceModel model, + MappingContext context) { + + //monthly rental amount + model.setMonthlyRentalAmount(entity.getMonthlyRentalAmount() == null ? null : + entity.getMonthlyRentalAmount().getNumber().doubleValue()); + + //monthly rental amount ceiling + model.setMonthlyRentalAmountCeiling(entity.getMonthlyRentalAmountCeiling() == null ? null : + entity.getMonthlyRentalAmountCeiling().getNumber().doubleValue()); + + //monthly rental currency based on one of two fields + if (entity.getMonthlyRentalAmount() != null) { + model.setMonthlyRentalCurrency(entity.getMonthlyRentalAmount().getCurrency().getCurrencyCode()); + } else if (entity.getMonthlyRentalAmountCeiling() != null) { + model.setMonthlyRentalCurrency(entity.getMonthlyRentalAmountCeiling().getCurrency().getCurrencyCode()); + } + + //monthly security amount + model.setMonthlySecurityAmount(entity.getMonthlySecurityAmount() == null ? null : + entity.getMonthlySecurityAmount().getNumber().doubleValue()); + model.setMonthlySecurityAmountCurrency(entity.getMonthlySecurityAmount() == null ? null : + entity.getMonthlySecurityAmount().getCurrency().getCurrencyCode()); + + //monthly recurrent costs + model.setMonthlyRecurrentCosts(entity.getMonthlyRecurrentCosts() == null ? null : + entity.getMonthlyRecurrentCosts().getNumber().doubleValue()); + model.setMonthlyRecurrentCostsCurrency(entity.getMonthlyRecurrentCosts() == null ? null : + entity.getMonthlyRecurrentCosts().getCurrency().getCurrencyCode()); + + //guarantee amount + model.setGuaranteeAmount(entity.getGuaranteeAmount() == null ? null : + entity.getGuaranteeAmount().getNumber().doubleValue()); + model.setGuaranteeAmountCurrency(entity.getGuaranteeAmount() == null ? null : + entity.getGuaranteeAmount().getCurrency().getCurrencyCode()); + + //remaining guarantee to reimburse + model.setRemainingGuaranteeToReimburse(entity.getRemainingGuaranteeToReimburse() == null ? null : + entity.getRemainingGuaranteeToReimburse().getNumber().doubleValue()); + model.setRemainingGuaranteeToReimburseCurrency(entity.getRemainingGuaranteeToReimburse() == null ? null : + entity.getRemainingGuaranteeToReimburse().getCurrency().getCurrencyCode()); + + } + + @Override + public void mapAtoB(AccommodationDeclarationAllowanceModel model, AccommodationDeclarationAllowanceJpaEntity entity, + MappingContext context) { + + //monthly rental amount + entity.setMonthlyRentalAmount(model.getMonthlyRentalAmount() != null && model.getMonthlyRentalCurrency() != null ? + Money.of(model.getMonthlyRentalAmount(), model.getMonthlyRentalCurrency()) : null); + + //monthly rental amount ceiling - currency is from rental monthly amount + entity.setMonthlyRentalAmountCeiling(model.getMonthlyRentalAmountCeiling() != null && model.getMonthlyRentalCurrency() != null ? + Money.of(model.getMonthlyRentalAmountCeiling(), model.getMonthlyRentalCurrency()) : null); + + //monthly security amount + entity.setMonthlySecurityAmount(model.getMonthlySecurityAmount() != null && model.getMonthlySecurityAmountCurrency() != null ? + Money.of(model.getMonthlySecurityAmount(), model.getMonthlySecurityAmountCurrency()) : null); + + //monthly recurrent costs + entity.setMonthlyRecurrentCosts(model.getMonthlyRecurrentCosts() != null && model.getMonthlyRecurrentCostsCurrency() != null ? + Money.of(model.getMonthlyRecurrentCosts(), model.getMonthlyRecurrentCostsCurrency()) : null); + + //guarantee amount + entity.setGuaranteeAmount(model.getGuaranteeAmount() != null && model.getGuaranteeAmountCurrency() != null ? + Money.of(model.getGuaranteeAmount(), model.getGuaranteeAmountCurrency()) : null); + + //remaining guarantee to reimburse + entity.setRemainingGuaranteeToReimburse( + model.getRemainingGuaranteeToReimburse() != null && model.getRemainingGuaranteeToReimburseCurrency() != null ? + Money.of(model.getRemainingGuaranteeToReimburse(), model.getRemainingGuaranteeToReimburseCurrency()) : null); + + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/AccommodationPaymentAllowanceModelToJpaEntityCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/AccommodationPaymentAllowanceModelToJpaEntityCustomMapper.java new file mode 100644 index 0000000..71c4b73 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/AccommodationPaymentAllowanceModelToJpaEntityCustomMapper.java @@ -0,0 +1,91 @@ +package eu.europa.eeas.erights.common.service.data.mapping.custommapper; + + +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.AccommodationPaymentAllowanceJpaEntity; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationPaymentAllowanceModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; +import org.javamoney.moneta.Money; + +/** + * + * @author ienaccat + */ +public class AccommodationPaymentAllowanceModelToJpaEntityCustomMapper extends + CustomMapper { + + @Override + public void mapBtoA(AccommodationPaymentAllowanceJpaEntity entity, AccommodationPaymentAllowanceModel model, + MappingContext context) { + + //monthly rental amount + model.setMonthlyRentalAmount(entity.getMonthlyRentalAmount() == null ? null : + entity.getMonthlyRentalAmount().getNumber().doubleValue()); + model.setMonthlyRentalCurrency(entity.getMonthlyRentalAmount() == null ? null : + entity.getMonthlyRentalAmount().getCurrency().getCurrencyCode()); + + //monthly security amount + model.setMonthlySecurityAmount(entity.getMonthlySecurityAmount() == null ? null : + entity.getMonthlySecurityAmount().getNumber().doubleValue()); + model.setMonthlySecurityAmountCurrency(entity.getMonthlySecurityAmount() == null ? null : + entity.getMonthlySecurityAmount().getCurrency().getCurrencyCode()); + + //monthly recurrent costs + model.setMonthlyRecurrentCosts(entity.getMonthlyRecurrentCosts() == null ? null : + entity.getMonthlyRecurrentCosts().getNumber().doubleValue()); + model.setMonthlyRecurrentCostsCurrency(entity.getMonthlyRecurrentCosts() == null ? null : + entity.getMonthlyRecurrentCosts().getCurrency().getCurrencyCode()); + + //non recurrent costs + model.setNonRecurrentCosts(entity.getNonRecurrentCosts() == null ? null : + entity.getNonRecurrentCosts().getNumber().doubleValue()); + model.setNonRecurrentCostsCurrency(entity.getNonRecurrentCosts() == null ? null : + entity.getNonRecurrentCosts().getCurrency().getCurrencyCode()); + + + //guarantee reimbursed amount + model.setGuaranteeReimbursedAmount(entity.getGuaranteeReimbursedAmount() == null ? null : + entity.getGuaranteeReimbursedAmount().getNumber().doubleValue()); + model.setGuaranteeReimbursedAmountCurrency(entity.getGuaranteeReimbursedAmount() == null ? null : + entity.getGuaranteeReimbursedAmount().getCurrency().getCurrencyCode()); + + //remaining guarantee to reimburse + model.setRemainingGuaranteeToReimburse(entity.getRemainingGuaranteeToReimburse() == null ? null : + entity.getRemainingGuaranteeToReimburse().getNumber().doubleValue()); + model.setRemainingGuaranteeToReimburseCurrency(entity.getRemainingGuaranteeToReimburse() == null ? null : + entity.getRemainingGuaranteeToReimburse().getCurrency().getCurrencyCode()); + + } + + @Override + public void mapAtoB(AccommodationPaymentAllowanceModel model, AccommodationPaymentAllowanceJpaEntity entity, + MappingContext context) { + + //monthly rental amount + entity.setMonthlyRentalAmount(model.getMonthlyRentalAmount() != null && model.getMonthlyRentalCurrency() != null ? + Money.of(model.getMonthlyRentalAmount(), model.getMonthlyRentalCurrency()) : null); + + //monthly security amount + entity.setMonthlySecurityAmount(model.getMonthlySecurityAmount() != null && model.getMonthlySecurityAmountCurrency() != null ? + Money.of(model.getMonthlySecurityAmount(), model.getMonthlySecurityAmountCurrency()) : null); + + //monthly recurrent costs + entity.setMonthlyRecurrentCosts(model.getMonthlyRecurrentCosts() != null && model.getMonthlyRecurrentCostsCurrency() != null ? + Money.of(model.getMonthlyRecurrentCosts(), model.getMonthlyRecurrentCostsCurrency()) : null); + + //non recurrent costs + entity.setNonRecurrentCosts(model.getNonRecurrentCosts() != null && model.getNonRecurrentCostsCurrency() != null ? + Money.of(model.getNonRecurrentCosts(), model.getNonRecurrentCostsCurrency()) : null); + + //guarantee reimbursed amount + entity.setGuaranteeReimbursedAmount(model.getGuaranteeReimbursedAmount() != null && model.getGuaranteeReimbursedAmountCurrency() != null ? + Money.of(model.getGuaranteeReimbursedAmount(), model.getGuaranteeReimbursedAmountCurrency()) : null); + + //remaining guarantee to reimburse + entity.setRemainingGuaranteeToReimburse( + model.getRemainingGuaranteeToReimburse() != null && model.getRemainingGuaranteeToReimburseCurrency() != null ? + Money.of(model.getRemainingGuaranteeToReimburse(), model.getRemainingGuaranteeToReimburseCurrency()) : null); + + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/CityModelToJpaEntityCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/CityModelToJpaEntityCustomMapper.java new file mode 100644 index 0000000..ea33662 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/CityModelToJpaEntityCustomMapper.java @@ -0,0 +1,15 @@ +package eu.europa.eeas.erights.common.service.data.mapping.custommapper; + +import eu.europa.eeas.erights.common.data.jpa.entity.CityJpaEntity; +import eu.europa.eeas.erights.common.service.model.CityModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class CityModelToJpaEntityCustomMapper extends CustomMapper { + + @Override + public void mapBtoA(CityJpaEntity entity, CityModel model, MappingContext context) { + model.setName(entity.getNameEn().toUpperCase()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/CountryModelToJpaEntityCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/CountryModelToJpaEntityCustomMapper.java new file mode 100644 index 0000000..90cbe70 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/CountryModelToJpaEntityCustomMapper.java @@ -0,0 +1,17 @@ +package eu.europa.eeas.erights.common.service.data.mapping.custommapper; + +import eu.europa.eeas.erights.common.data.jpa.entity.CountryJpaEntity; +import eu.europa.eeas.erights.common.service.model.CountryModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class CountryModelToJpaEntityCustomMapper extends CustomMapper { + + @Override + public void mapBtoA(CountryJpaEntity entity, CountryModel model, MappingContext context) { + if (entity.getNameEn() != null) { + model.setName(entity.getNameEn().toUpperCase()); + } + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/DeclarationPersonAttachmentCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/DeclarationPersonAttachmentCustomMapper.java new file mode 100644 index 0000000..b5fc0b3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/DeclarationPersonAttachmentCustomMapper.java @@ -0,0 +1,23 @@ +package eu.europa.eeas.erights.common.service.data.mapping.custommapper; + +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.DeclarationPersonAttachmentJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.DeclarationPersonJpaEntity; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationPersonAttachmentModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class DeclarationPersonAttachmentCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(DeclarationPersonAttachmentModel model, DeclarationPersonAttachmentJpaEntity entity, MappingContext context) { + DeclarationPersonJpaEntity personJpaEntity = new DeclarationPersonJpaEntity(); + personJpaEntity.setId(model.getDeclarationPersonId()); + + entity.setDeclarationPerson(personJpaEntity); + } + + @Override + public void mapBtoA(DeclarationPersonAttachmentJpaEntity entity, DeclarationPersonAttachmentModel model, MappingContext context) { + model.setDeclarationPersonId(entity.getDeclarationPerson().getId()); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/EntitlementMaxCatModelToJpaEntityCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/EntitlementMaxCatModelToJpaEntityCustomMapper.java new file mode 100644 index 0000000..818a71d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/EntitlementMaxCatModelToJpaEntityCustomMapper.java @@ -0,0 +1,23 @@ +package eu.europa.eeas.erights.common.service.data.mapping.custommapper; + +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxCatJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeCatJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxCatModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class EntitlementMaxCatModelToJpaEntityCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(EntitlementMaxCatModel model, EntitlementMaxCatJpaEntity entity, MappingContext context) { + EntitlementTypeCatJpaEntity entitlementType = new EntitlementTypeCatJpaEntity(); + entitlementType.setId(model.getEntitlementTypeCatId()); + + entity.setEntitlementTypeCat(entitlementType); + } + + @Override + public void mapBtoA(EntitlementMaxCatJpaEntity entity, EntitlementMaxCatModel model, MappingContext context) { + model.setEntitlementTypeCatId(entity.getEntitlementTypeCat().getId()); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/EntitlementTypeModelToJpaCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/EntitlementTypeModelToJpaCustomMapper.java new file mode 100644 index 0000000..2e6c1d0 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/EntitlementTypeModelToJpaCustomMapper.java @@ -0,0 +1,23 @@ +package eu.europa.eeas.erights.common.service.data.mapping.custommapper; + +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +public class EntitlementTypeModelToJpaCustomMapper extends CustomMapper { + + @Override + public void mapAtoB(EntitlementTypeModel model, EntitlementTypeJpaEntity entity, MappingContext context) { + MovementFileJpaEntity movementFile = new MovementFileJpaEntity(); + movementFile.setId(model.getMovementFileId()); + + entity.setMovementFile(movementFile); + } + + @Override + public void mapBtoA(EntitlementTypeJpaEntity entity, EntitlementTypeModel model, MappingContext context) { + model.setMovementFileId(entity.getMovementFile().getId()); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/FamilyMemberModelToJpaEntotyCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/FamilyMemberModelToJpaEntotyCustomMapper.java new file mode 100644 index 0000000..7531299 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/FamilyMemberModelToJpaEntotyCustomMapper.java @@ -0,0 +1,22 @@ +package eu.europa.eeas.erights.common.service.data.mapping.custommapper; + +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.FamilyMemberJpaEntity; +import eu.europa.eeas.erights.common.service.model.declaration.FamilyMemberModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +import java.time.LocalDate; +import java.time.Period; + +public class FamilyMemberModelToJpaEntotyCustomMapper extends CustomMapper { + + @Override + public void mapBtoA(FamilyMemberJpaEntity entity, FamilyMemberModel model, MappingContext context) { + model.setRelAge(calculateAge(model)); + } + + private Integer calculateAge(FamilyMemberModel fMember) { + Period period = Period.between(fMember.getRelBirthDate(), LocalDate.now()); + return period.getYears(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/PersonIndemnityCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/PersonIndemnityCustomMapper.java new file mode 100644 index 0000000..f908f82 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/PersonIndemnityCustomMapper.java @@ -0,0 +1,24 @@ +package eu.europa.eeas.erights.common.service.data.mapping.custommapper; + +import eu.europa.eeas.erights.common.data.jpa.entity.PersonIndemnityJpaEntity; +import eu.europa.eeas.erights.common.service.model.PersonIndemnityModel; +import eu.europa.eeas.erights.common.tools.math.BigFraction; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +import java.math.BigDecimal; + +import static eu.europa.eeas.erights.common.tools.requests.IndemnityHelper.getIndemnityTypeEnUserFriendly; + +public class PersonIndemnityCustomMapper extends CustomMapper { + + @Override + public void mapBtoA(PersonIndemnityJpaEntity entity, PersonIndemnityModel model, MappingContext context) { + String text = getIndemnityTypeEnUserFriendly(entity.getIndemnityIdType(), + entity.getAllowancesCount(), + entity.getUnitEn()); + + model.setIndemnityTypeEnUserFriendly(text); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/PersonModelToJpaEntityCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/PersonModelToJpaEntityCustomMapper.java new file mode 100644 index 0000000..3843db4 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/PersonModelToJpaEntityCustomMapper.java @@ -0,0 +1,22 @@ +package eu.europa.eeas.erights.common.service.data.mapping.custommapper; + +import eu.europa.eeas.erights.common.data.jpa.entity.PersonJpaEntity; +import eu.europa.eeas.erights.common.service.model.PersonModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +import java.time.LocalDate; +import java.time.Period; + +public class PersonModelToJpaEntityCustomMapper extends CustomMapper { + + @Override + public void mapBtoA(PersonJpaEntity entity, PersonModel model, MappingContext context) { + model.setAge(calculateAge(model)); + } + + private Integer calculateAge(PersonModel person) { + Period period = Period.between(person.getBirthDate(), LocalDate.now()); + return period.getYears(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/RequestIndemnityCustomMapper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/RequestIndemnityCustomMapper.java new file mode 100644 index 0000000..772878b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/RequestIndemnityCustomMapper.java @@ -0,0 +1,34 @@ +package eu.europa.eeas.erights.common.service.data.mapping.custommapper; + +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.RequestIndemnityJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.RequestIndemnityModel; +import ma.glasnost.orika.CustomMapper; +import ma.glasnost.orika.MappingContext; + +import static eu.europa.eeas.erights.common.tools.requests.IndemnityHelper.getIndemnityTypeEnUserFriendly; +import static java.util.Objects.nonNull; + +public class RequestIndemnityCustomMapper extends CustomMapper { + + + @Override + public void mapBtoA(RequestIndemnityJpaEntity entity, RequestIndemnityModel model, MappingContext context) { + mapEndUserFriendlyMessage(model); + } + + private void mapEndUserFriendlyMessage(RequestIndemnityModel requestIndemnityModel) { + + if (nonNull(requestIndemnityModel.getType()) && + nonNull(requestIndemnityModel.getNumber()) && + nonNull(requestIndemnityModel.getUnit())) { + + String text = getIndemnityTypeEnUserFriendly(requestIndemnityModel.getType(), + requestIndemnityModel.getNumber().longValue(), + requestIndemnityModel.getUnit()); + requestIndemnityModel.setIndemnityTypeEnUserFriendly(text); + } + } + + + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/AppParameterJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/AppParameterJpaServiceProvider.java new file mode 100644 index 0000000..2f6a03a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/AppParameterJpaServiceProvider.java @@ -0,0 +1,85 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.AppParameterJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.AppParameterJpaRepository; +import eu.europa.eeas.erights.common.service.model.AppParameterModel; +import eu.europa.eeas.erights.common.tools.app.AppParamType; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.Collections; +import java.util.List; + +@Service +@Transactional +public class AppParameterJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader { + + @Override + public Class getModelType() { + return AppParameterModel.class; + } + + @Override + public Class getEntityType() { + return AppParameterJpaEntity.class; + } + + @Cacheable(value = "appParamsByType", key = "#paramType", condition = "#paramType != null") + public List getAppParameters(String paramType) { + + AppParameterJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(AppParameterJpaEntity.class, AppParameterJpaRepository.class); + if (paramType == null) { + //TODO check why we need such call + return this.read(); + } + + AppParamType param = AppParamType.valueOf(paramType); + List appParams = repo.findAllByParamType(param); + return getBeanMapper().mapAsList(appParams, AppParameterModel.class); + } + + @Cacheable(value = "appParamsByTypeKey", key = "{#paramType, #paramKey}") + public List getAppParametersByTypeAndKey(AppParamType paramType, String paramKey) { + if (paramType == null || paramKey == null) { + return Collections.emptyList(); + } + + AppParameterJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(AppParameterJpaEntity.class, AppParameterJpaRepository.class); + + List appParams = repo.findAllByParamTypeAndKey(paramType, paramKey); + return getBeanMapper().mapAsList(appParams, AppParameterModel.class); + } + + @Cacheable(value = "appParamsByTypeKeyNumber", key = "{#paramType, #paramKey}") + public BigDecimal getFirstAppParametersByTypeAndKeyNumber(AppParamType paramType, String paramKey) { + AppParameterJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(AppParameterJpaEntity.class, AppParameterJpaRepository.class); + + if (paramType == null || paramKey == null) { + return BigDecimal.ZERO; + } + + List appParams = repo.findAllByParamTypeAndKey(paramType, paramKey); + List appParamList = getBeanMapper().mapAsList(appParams, AppParameterModel.class); + BigDecimal returnVal; + if (!appParamList.isEmpty()) { + try { + returnVal = appParamList.stream() + .findFirst() + .map(appParameterModel -> new BigDecimal(appParameterModel.getValue())) + .orElse(BigDecimal.ZERO); + } catch (Exception e) { + return BigDecimal.ZERO; + } + } else { + return BigDecimal.ZERO; + } + return returnVal; + } + + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/AuditMovementFileJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/AuditMovementFileJpaServiceProvider.java new file mode 100644 index 0000000..28a9c8d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/AuditMovementFileJpaServiceProvider.java @@ -0,0 +1,52 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.AuditMovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.AuditMovementFileJpaRepository; +import eu.europa.eeas.erights.common.service.model.AuditMovementFileModel; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class AuditMovementFileJpaServiceProvider extends AbstractDataServiceProvider implements + EntityReader { + + @Override + public Class getModelType() { + return AuditMovementFileModel.class; + } + + @Override + public Class getEntityType() { + return AuditMovementFileJpaEntity.class; + } + + /** + * TODO : add permissions checks + * @return d + */ + public List get() { + return read(); + } + + public List getActiveMovementFiles() { + AuditMovementFileJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(AuditMovementFileJpaEntity.class, AuditMovementFileJpaRepository.class); + + List files = repo.findByStatusIsNullOrStatusIsNot(MovementFileState.DELETED); + + return getBeanMapper().mapAsList(files, AuditMovementFileModel.class); + } + + public List getAuditMovementFilesByFileID(String fileId) { + AuditMovementFileJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(AuditMovementFileJpaEntity.class, AuditMovementFileJpaRepository.class); + + List files = repo.findByFileId(fileId); + return getBeanMapper().mapAsList(files, AuditMovementFileModel.class); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/ExchangeRateJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/ExchangeRateJpaServiceProvider.java new file mode 100644 index 0000000..59c1209 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/ExchangeRateJpaServiceProvider.java @@ -0,0 +1,62 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.ExchangeRateJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.ExchangeRateJpaRepository; +import eu.europa.eeas.erights.common.service.model.ExchangeRateModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.time.LocalDate; +import java.time.YearMonth; +import java.time.temporal.ChronoUnit; +import java.util.List; +import java.util.stream.Collectors; + +@Service +@Transactional +public class ExchangeRateJpaServiceProvider extends AbstractDataServiceProvider implements + EntityReader { + + @Override + public Class getModelType() { + return ExchangeRateModel.class; + } + + @Override + public Class getEntityType() { + return ExchangeRateJpaEntity.class; + } + + public List getActiveExchangeRates(final LocalDate date) { + ExchangeRateJpaRepository repo = getEntityRepositoryRegistry() + .getReaderRepositoryFor(ExchangeRateJpaEntity.class, ExchangeRateJpaRepository.class); + List exchangeRates = repo.findAllByIdStartDateBeforeAndIdEndDateAfter(date, date) + .stream() + .filter(this::isActive) + .collect(Collectors.toList()); + return getBeanMapper().mapAsList(exchangeRates, ExchangeRateModel.class); + } + + public List getActiveExchangeRates() { + return getActiveExchangeRates(LocalDate.now()); + } + + private boolean isActive(ExchangeRateJpaEntity exchangeRateJpaEntity) { + + long monthsBetween = ChronoUnit.MONTHS.between( + YearMonth.from(exchangeRateJpaEntity.getStartDate()), + YearMonth.from(exchangeRateJpaEntity.getEndDate())); + return monthsBetween == 0L; + } + + public List getExchangeRatesForCurrency(String currency) { + ExchangeRateJpaRepository repo = getEntityRepositoryRegistry() + .getReaderRepositoryFor(ExchangeRateJpaEntity.class, ExchangeRateJpaRepository.class); + LocalDate beforeDate = LocalDate.now().minusYears(3).minusMonths(6); + List exchangeRates = repo.findByCurrencyAndStartDateAfterOrderByStartDateDesc(currency, beforeDate); + + return getBeanMapper().mapAsList(exchangeRates, ExchangeRateModel.class); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/FunctionCodeJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/FunctionCodeJpaServiceProvider.java new file mode 100644 index 0000000..6da3087 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/FunctionCodeJpaServiceProvider.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.job.FunctionCodeJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.FunctionCodeJpaRepository; +import eu.europa.eeas.erights.common.service.model.job.FunctionCodeModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class FunctionCodeJpaServiceProvider extends AbstractDataServiceProvider implements EntityReader { + + @Override + public Class getModelType() { + return FunctionCodeModel.class; + } + + @Override + public Class getEntityType() { + return FunctionCodeJpaEntity.class; + } + + public List getAllFunctionCodes() { + FunctionCodeJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(FunctionCodeJpaEntity.class, FunctionCodeJpaRepository.class); + return getBeanMapper().mapAsList(repo.findByOrderByNameEnAsc(), FunctionCodeModel.class); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/HOAFunctionalMailboxJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/HOAFunctionalMailboxJpaServiceProvider.java new file mode 100644 index 0000000..4483946 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/HOAFunctionalMailboxJpaServiceProvider.java @@ -0,0 +1,44 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.HOAFunctionalMailboxJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.HOAFunctionalMailboxRepository; +import eu.europa.eeas.erights.common.service.model.HOAFunctionalMailboxModel; +import java.util.Optional; +import javax.transaction.Transactional; +import org.springframework.stereotype.Service; + +/** + * @author ienaccat + */ +@Service +@Transactional +public class HOAFunctionalMailboxJpaServiceProvider extends + AbstractDataServiceProvider + implements EntityReader { + + @Override + public Class getModelType() { + return HOAFunctionalMailboxModel.class; + } + + @Override + public Class getEntityType() { + return HOAFunctionalMailboxJpaEntity.class; + } + + public Optional getHoAEmailByOrgId(Long orgId) { + HOAFunctionalMailboxModel model = + getBeanMapper().map(getRepository().findById(orgId), HOAFunctionalMailboxModel.class); + if (model == null || model.getEmail() == null) { + return Optional.empty(); + } + return Optional.of(model.getEmail()); + } + + private HOAFunctionalMailboxRepository getRepository() { + return getEntityRepositoryRegistry().getReaderRepositoryFor( + HOAFunctionalMailboxJpaEntity.class, HOAFunctionalMailboxRepository.class); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/HeadOfAdministrationJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/HeadOfAdministrationJpaServiceProvider.java new file mode 100644 index 0000000..55595f9 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/HeadOfAdministrationJpaServiceProvider.java @@ -0,0 +1,46 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.HeadOfAdministrationJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.HeadOfAdministrationRepository; +import eu.europa.eeas.erights.common.service.model.HeadOfAdministrationModel; +import java.util.Optional; +import javax.transaction.Transactional; +import org.springframework.stereotype.Service; + +/** + * @author ienaccat + */ +@Service +@Transactional +@Deprecated +//TODO RIGD-3615 removed once HOA FMB is adopted +public class HeadOfAdministrationJpaServiceProvider extends + AbstractDataServiceProvider + implements EntityReader { + + @Override + public Class getModelType() { + return HeadOfAdministrationModel.class; + } + + @Override + public Class getEntityType() { + return HeadOfAdministrationJpaEntity.class; + } + + public Optional getHoAEmailByOrgId(Long orgId) { + HeadOfAdministrationModel model = + getBeanMapper().map(getRepository().findById(orgId), HeadOfAdministrationModel.class); + if (model == null || model.getEmail() == null) { + return Optional.empty(); + } + return Optional.of(model.getEmail()); + } + + private HeadOfAdministrationRepository getRepository() { + return getEntityRepositoryRegistry().getReaderRepositoryFor( + HeadOfAdministrationJpaEntity.class, HeadOfAdministrationRepository.class); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/InstitutionCodeJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/InstitutionCodeJpaServiceProvider.java new file mode 100644 index 0000000..49bb7f1 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/InstitutionCodeJpaServiceProvider.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.job.InstitutionCodeJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.InstitutionCodeJpaRepository; +import eu.europa.eeas.erights.common.service.model.job.InstitutionCodeModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class InstitutionCodeJpaServiceProvider extends AbstractDataServiceProvider implements EntityReader { + + @Override + public Class getModelType() { + return InstitutionCodeModel.class; + } + + @Override + public Class getEntityType() { + return InstitutionCodeJpaEntity.class; + } + + public List getAllInstitutionCodes() { + InstitutionCodeJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(InstitutionCodeJpaEntity.class, InstitutionCodeJpaRepository.class); + return getBeanMapper().mapAsList(repo.findAllByOrderByNameEnAsc(), InstitutionCodeModel.class); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/LocationJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/LocationJpaServiceProvider.java new file mode 100644 index 0000000..378b3c2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/LocationJpaServiceProvider.java @@ -0,0 +1,150 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.CityJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.CountryJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.IataAirportJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.CityJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.CountryJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.IataAirportJpaRepository; +import eu.europa.eeas.erights.common.service.model.CityModel; +import eu.europa.eeas.erights.common.service.model.CountryModel; +import eu.europa.eeas.erights.common.service.model.IataAirportModel; +import eu.europa.eeas.erights.common.service.model.job.InstitutionCodeModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; +import java.util.stream.Collectors; + +@Service +@Transactional +public class LocationJpaServiceProvider extends AbstractDataServiceProvider implements EntityReader { + + @Autowired + private AbstractUserHandler userHandler; + + @Override + public Class getModelType() { + return CountryModel.class; + } + + @Override + public Class getEntityType() { + return CountryJpaEntity.class; + } + + public List getCountries() { + CountryJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(CountryJpaEntity.class, CountryJpaRepository.class); + String language = userHandler.getUser().getLocale().getLanguage(); + + List countries; + List result; + + if ("fr".equalsIgnoreCase(language)) { + countries = repo.findByOrderByNameFrAsc(); + result = countries.stream().map(countryEntity -> { + CountryModel model = new CountryModel(); + model.setCode(countryEntity.getId()); + model.setName(countryEntity.getNameFr().toUpperCase()); + return model; + }).collect(Collectors.toList()); + } else { + countries = repo.findByOrderByNameEnAsc(); + result = countries.stream().map(countryEntity -> { + CountryModel model = new CountryModel(); + model.setCode(countryEntity.getId()); + model.setName(countryEntity.getNameEn().toUpperCase()); + return model; + }).collect(Collectors.toList()); + } + + return result; + } + + public List getCitiesFor(String countryCode) { + CityJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(CityJpaEntity.class, CityJpaRepository.class); + String language = userHandler.getUser().getLocale().getLanguage(); + + List result; + + List cities; + if ("fr".equalsIgnoreCase(language)) { + cities = repo.findAllByCountryCodeOrderByNameFr(countryCode); + result = cities.stream().map(city -> { + CityModel model = new CityModel(); + model.setCode(city.getId()); + model.setName(city.getNameFr().toUpperCase()); + return model; + }).collect(Collectors.toList()); + } else { + cities = repo.findAllByCountryCodeOrderByNameEn(countryCode); + result = cities.stream().map(city -> { + CityModel model = new CityModel(); + model.setCode(city.getId()); + model.setName(city.getNameEn().toUpperCase()); + return model; + }).collect(Collectors.toList()); + } + return result; + } + + @Cacheable("iataAirports") + public List getIataAirports() { + IataAirportJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(IataAirportJpaEntity.class, IataAirportJpaRepository.class); + + List airports = repo.findByActiveOrderByLocationName(true); + + return getBeanMapper().mapAsList(airports, IataAirportModel.class); + } + + + public IataAirportModel getIataAirportsMapByCity(String cityCode) { + IataAirportJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(IataAirportJpaEntity.class, IataAirportJpaRepository.class); + + + IataAirportJpaEntity airport = repo.findByActiveAndId(true,cityCode); + + + return getBeanMapper().map(airport, IataAirportModel.class); + } + + public IataAirportModel getIataAirportsById(String id) { + IataAirportJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(IataAirportJpaEntity.class, IataAirportJpaRepository.class); + + + IataAirportJpaEntity airport = repo.findByActiveAndId(true,id); + + + return getBeanMapper().map(airport, IataAirportModel.class); + } + + + public String getIataCode(String cityCode) { + IataAirportJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(IataAirportJpaEntity.class, IataAirportJpaRepository.class); + String iataCode = repo.getIataCode(cityCode); + return iataCode; + } + + + public String getAirportNameFromCity(String cityCode) { + IataAirportJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(IataAirportJpaEntity.class, IataAirportJpaRepository.class); + String airportName = repo.getAirportNameFromCity(cityCode); + return airportName; + } + + public String getIataAirportFromCity(String cityCode) { + IataAirportJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(IataAirportJpaEntity.class, IataAirportJpaRepository.class); + String airportName = repo.getAirportNameFromCity(cityCode); + return airportName; + } + + + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/MovementContextJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/MovementContextJpaServiceProvider.java new file mode 100644 index 0000000..8555406 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/MovementContextJpaServiceProvider.java @@ -0,0 +1,54 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementContextJpaEntity; +import eu.europa.eeas.erights.common.service.model.MovementContextModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +/** + * Created by iliessu on 05/12/2019; e-rights. + * + *

    + * Movement context data service. + *

    + * + * @author Silviu Ilie. + * @see MovementContextModel + */ +@Service +@Transactional +public class MovementContextJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader { + + @Override + public Class getModelType() { + return MovementContextModel.class; + } + + @Override + public Class getEntityType() { + return MovementContextJpaEntity.class; + } + + /** + * TODO : add permissions checks + * @param id s + * @return s + */ + public MovementContextModel get(Long id) { + return read(id); + } + + /** + * TODO : add permissions checks + * @return s + */ + public List get() { + return read(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/MovementFileDetailJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/MovementFileDetailJpaServiceProvider.java new file mode 100644 index 0000000..f28bbe5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/MovementFileDetailJpaServiceProvider.java @@ -0,0 +1,75 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntitySaver; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileDetailJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.MovementFileDetailJpaRepository; +import eu.europa.eeas.erights.common.service.model.MovementFileDetailModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +/** + * Created by iliessu on 05/12/2019; e-rights. + * + *

    + * Movement context data service. + *

    + * + * @author Silviu Ilie. + * @see MovementFileDetailModel + */ +@Service +@Transactional +public class MovementFileDetailJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, + EntitySaver { + + @Override + public Class getModelType() { + return MovementFileDetailModel.class; + } + + @Override + public Class getEntityType() { + return MovementFileDetailJpaEntity.class; + } + + /** + * TODO : add permissions checks + * @param id s + * @return d + */ + public MovementFileDetailModel get(Long id) { + return read(id); + } + + /** + * TODO : add permissions checks + * @return s + */ + public List get() { + return read(); + } + + /** + * TODO : add permissions checks + * @param model s + * @return s + */ + public MovementFileDetailModel persist(MovementFileDetailModel model) { + + return save(model); + } + + public List getMovementFileDetailsById(Long movementFileId) { + MovementFileDetailJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(MovementFileDetailJpaEntity.class, MovementFileDetailJpaRepository.class); + + List files = repo.findByMovementFileId(movementFileId); + + return getBeanMapper().mapAsList(files, MovementFileDetailModel.class); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/MovementFileJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/MovementFileJpaServiceProvider.java new file mode 100644 index 0000000..7cc8f52 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/MovementFileJpaServiceProvider.java @@ -0,0 +1,591 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.base.exception.AuthorizationRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.NotAllowedRuntimeException; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.enums.Status; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.ananke.tools.statemachine.service.history.StateMachineHistoryHolder; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionResultModel; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.VAssignmentHistEeasJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.VJobJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.MovementFileJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.VAssignmentHistEeasJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.VJobJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementMaxJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.declaration.DeclarationJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementTypeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.notification.NotificationMFJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.notification.NotificationTemplateJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.validation.MovementFileValidator; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.VPersonModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.notification.NotificationMFModel; +import eu.europa.eeas.erights.common.service.model.notification.NotificationModel; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileEvent; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import javax.transaction.Transactional; +import org.apache.commons.collections4.CollectionUtils; +import org.javamoney.moneta.Money; +import org.jetbrains.annotations.NotNull; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Lazy; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Service; + +/** + * Created by iliessu on 14/11/2019; e-rights. + * + *

    + * TODO : comment class ! + *

    + * + * @author Silviu Ilie. + */ +@Service +@Transactional +public class MovementFileJpaServiceProvider extends AbstractDataServiceProvider implements EntityReader, + EntityCreator, + EntityUpdater, + EntityDeleter { + + private static final int TWO_WEEKS = 14; + + private final VAssignmentHistEeasJpaRepository assignmentHistEeasJpaRepository; + + @Autowired + NotificationTemplateJpaServiceProvider notificationTemplateJpaServiceProvider; + + @Autowired + @Qualifier(ERightsBeanNames.MovementFileStateMachine.SERVICE) + private StateMachineService stateMachineService; + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_VALIDATOR) + private MovementFileValidator movementFileValidator; + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + private MovementFileSecurityChecker movementFileSecurityChecker; + + @Autowired + @Lazy + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + private EntitlementTypeJpaServiceProvider entitlementTypeJpaServiceProvider; + + public MovementFileJpaServiceProvider(VAssignmentHistEeasJpaRepository assignmentHistEeasJpaRepository) { + this.assignmentHistEeasJpaRepository = assignmentHistEeasJpaRepository; + } + + @Override + public Class getModelType() { + return MovementFileModel.class; + } + + @Override + public Class getEntityType() { + return MovementFileJpaEntity.class; + } + + public MovementFileModel get(Long id) { + + if (movementFileSecurityChecker.canView(id) || movementFileSecurityChecker.isOwner(id)) { + MovementFileModel movementFileModel = read(id); + MovementFileModel movFileWithUpdatedAssDate = getMovementFileWithEarliestAssDate(movementFileModel); + this.setAssignmentPlace(movFileWithUpdatedAssDate); + return movFileWithUpdatedAssDate; + } + + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008); + } + + public void setAssignmentPlace(MovementFileModel movementFileModel) { + movementFileModel.setAssignmentCountry( + movementFileModel.getCountryFrom().getName()); + movementFileModel.setAssignmentCity( + movementFileModel.getCityFrom().getName()); + } + + + public MovementFileModel getMovementFile(Long id) { + MovementFileModel movementFileModel = read(id); + MovementFileModel movFileWithUpdatedAssDate = getMovementFileWithEarliestAssDate(movementFileModel); + return movFileWithUpdatedAssDate; + } + + public MovementFileModel getMovementFileWithEarliestAssDate(MovementFileModel movementFileModel){ + //This method gets earliest start date and latest end date for a person if he/she has multiple assignments within the delegation + VPersonModel jobHolder = movementFileModel.getJobHolder(); + List vAssignmentHistEeasJpaEntities = assignmentHistEeasJpaRepository + .findByPerIdAndDelegationOrgId(jobHolder.getPerId(), + movementFileModel.getDelegationOrgFromId()); + + if(CollectionUtils.isNotEmpty(vAssignmentHistEeasJpaEntities)){ + vAssignmentHistEeasJpaEntities.sort(Comparator.comparing(VAssignmentHistEeasJpaEntity::getStartDate)); + jobHolder.setEarliestAssignedstartDate(vAssignmentHistEeasJpaEntities.get(0).getStartDate()); + jobHolder.setLatestAssignmentEndDate(vAssignmentHistEeasJpaEntities.get(vAssignmentHistEeasJpaEntities.size()-1).getEndDate()); + } + movementFileModel.setJobHolder(jobHolder); + return movementFileModel; + } + + @PreAuthorize(MovementFileSecurityChecker.CAN_LIST) + public List get() { + return read(); + } + + public Long saveOrUpdate(MovementFileModel model) { + // use to update MF after draft + MovementFileModel movementFileModelFromDb = getMovementFile(model.getId()); + this.movementFileValidator.validateSaveDraftMovementFile(model, movementFileModelFromDb); + + this.update(model); + + return model.getId(); + } + + public List updateConfirmedMovementFilesToOngoingState() { + getLogger().info("Starting to updated the CONFIRMED movement files with the ONGOING state if the start date is in past"); + + MovementFileJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class); + List files = repo.findByStartDateOrEndDateBeforeAndState(LocalDate.now(), MovementFileState.CONFIRMED); + getLogger().info("Found {} movement files in CONFIRMED state that should be updated with ONGOING", files.size()); + List result = getBeanMapper().mapAsList(files, MovementFileModel.class); + + result.stream().forEach(file -> { + try { + StateMachineTransitionResultModel transitionResult = this.stateMachineService + .send(file.getSmId(), MovementFileEvent.ONGOING); + if (transitionResult.getValid()) { + if (transitionResult.getArrivalState() == MovementFileState.ONGOING) { + file.setState(transitionResult.getArrivalState()); + this.update(file); + getLogger().info("File with ID: {} and startingDate: {} has been updated with ONGOING state", file.getId(), file.getStartDate()); + emailEdmsServiceProvider.notifyStartInstallationRequest(file); + getLogger().info("starting date mail sent {} {}", file.getId(), file.getStartDate()); + } else { + getLogger().error("Transition to {} could not be executed for movement file: {}. Arrival state {} is not matching expected state.", MovementFileState.ONGOING, + file.getId(), transitionResult.getArrivalState()); + } + } else { + getLogger().error("Transition to {} could not be executed for movement file: {} ", MovementFileState.ONGOING, file.getId()); + } + } catch (Exception e) { + getLogger().error("Transition to {} could not be executed for movement file: {} ", MovementFileState.ONGOING, file.getId()); + } + }); + + return result; + } + + public void sendRemainderEmails() { + getLogger().info("Check and try to send remainder emails for pending movement files"); + + LocalDate currentDate = LocalDate.now(); + + MovementFileJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class); + List files = repo.findAllByState(MovementFileState.PENDING); + getLogger().info("Found {} movement files in PENDING state", files.size()); + List models = getBeanMapper().mapAsList(files, MovementFileModel.class); + + models.forEach(file -> { + Optional creationDate = this.getCreationDate(file); + if (creationDate.isPresent()) { + long daysBetween = ChronoUnit.DAYS.between(creationDate.get(), currentDate); + if ((daysBetween - TWO_WEEKS) >= 0 && (daysBetween - TWO_WEEKS) % 7 == 0) { + getLogger().info("MF id: {}. Creation date: {}, there are {} days from creation. The email is sent!", file.getId(), creationDate.get(), daysBetween); + try { + this.emailEdmsServiceProvider.checkTemplateAndSendMovementFileNotification(file, NotificationTemplateCode.REMINDER_AFTER_CREATE.toString()); + } catch (Exception e) { + getLogger().error("An exception occurred when sending email for MF id: {} notification template: {}", file.getId(), + NotificationTemplateCode.REMINDER_AFTER_CREATE, e); + } + } + } + }); + } + + @PreAuthorize(MovementFileSecurityChecker.CAN_CREATE) + public Long createDraft(MovementFileModel model) { + // Validation not performed at this step but when the status changes from draft to pending + Map> tudEntitlementAmountMap = new HashMap<>(); + tudEntitlementAmountMap.put(EntitlementMaxCatCode.TUD_STAFF_MEMBER, Optional.empty()); + tudEntitlementAmountMap.put(EntitlementMaxCatCode.TUD_DEPENDENT, Optional.empty()); + MovementFileModel toSave = this.addFileId(model); + toSave = this.create(toSave); + + toSave = this.initializeMovementFile(toSave); + this.generateDefaultEntitlementTypes(toSave,MovementFileState.DRAFT, tudEntitlementAmountMap , Optional.empty()); + //send to draft + StateMachineTransitionResultModel transitionResult = this.stateMachineService.send(MovementFileEvent.SAVE_AS_DRAFT); + this.update(addState(toSave, transitionResult)); + return toSave.getId(); + } + + + + @PreAuthorize(MovementFileSecurityChecker.CAN_CREATE) + public Long updateDraft(MovementFileModel model) { + // Validation performed only for year at this step but when the status changes from draft to pending + Map> tudEntitlementAmountMap = new HashMap<>(); + tudEntitlementAmountMap.put(EntitlementMaxCatCode.TUD_STAFF_MEMBER, this.getExistingAmount(model, EntitlementMaxCatCode.TUD_STAFF_MEMBER)); + tudEntitlementAmountMap.put(EntitlementMaxCatCode.TUD_DEPENDENT, this.getExistingAmount(model, EntitlementMaxCatCode.TUD_DEPENDENT)); + MovementFileModel movementFileModelFromDb = getMovementFile(model.getId()); + this.movementFileValidator.validateSaveDraftMovementFile(model, movementFileModelFromDb); + Optional chargeableWeight = this.getChargeableWeightBeforeDeletingEntitlements( + model.getId()); + this.deleteAllEntitlementTypeForMF(model); + this.deleteDeclaration(model); + model = this.initializeMovementFile(model); + this.generateDefaultEntitlementTypes(model, MovementFileState.DRAFT, tudEntitlementAmountMap, + chargeableWeight); + model = this.update(model); + + return model.getId(); + } + + @PreAuthorize(MovementFileSecurityChecker.CAN_CREATE) + public Long createPending(MovementFileModel model) { + // Validation not performed at this step but when the status changes from draft to pending + + MovementFileModel movementFileModelFromDb; + if (model.getId() == null) { + this.movementFileValidator.validateTUDCityCodes(model); + model.setId(this.createDraft(model)); + } + + + return this.draftToPending(getMovementFile(model.getId())); + } + + @PreAuthorize(MovementFileSecurityChecker.CAN_CREATE) + public Long draftToPending(MovementFileModel model) { + // we do not recreate the declaration , nor the entitlements + // + Map> tudEntitlementAmountMap = new HashMap<>(); + tudEntitlementAmountMap.put(EntitlementMaxCatCode.TUD_STAFF_MEMBER, this.getExistingAmount(model, EntitlementMaxCatCode.TUD_STAFF_MEMBER)); + tudEntitlementAmountMap.put(EntitlementMaxCatCode.TUD_DEPENDENT, this.getExistingAmount(model, EntitlementMaxCatCode.TUD_DEPENDENT)); + MovementFileModel movementFileModelFromDb; + movementFileModelFromDb = getMovementFile(model.getId()); + + this.movementFileValidator.validateSaveMovementFile(model, movementFileModelFromDb); + + movementFileModelFromDb = this.update(model); + + movementFileModelFromDb = this.initializeMovementFile(movementFileModelFromDb); + + movementFileModelFromDb = this.update(movementFileModelFromDb); + + this.newStateMachineEvent(MovementFileEvent.CREATE.name(), movementFileModelFromDb.getId()); + //When moving from draft to pending chargeable weight must not be recalculated - RIGD-3474 + Optional chargeableWeight = this.getChargeableWeightBeforeDeletingEntitlements( + model.getId()); + this.deleteAllEntitlementTypeForMF(model); + this.generateDefaultEntitlementTypes(model, MovementFileState.PENDING, tudEntitlementAmountMap, + chargeableWeight); + + // Send Notification to the staff memeber when MF is created + emailEdmsServiceProvider.checkTemplateAndSendMovementFileNotification(movementFileModelFromDb, NotificationTemplateCode.CREATE.toString()); + + return movementFileModelFromDb.getId(); + } + + //When moving from draft to pending chargeable weight must not be recalculated - RIGD-3474 + public Optional getChargeableWeightBeforeDeletingEntitlements(Long movementFileId) { + + EntitlementMaxJpaRepository entitlementMaxJpaRepository = (EntitlementMaxJpaRepository) getEntityRepositoryRegistry().getReaderRepositoryFor( + EntitlementMaxJpaEntity.class); + return entitlementMaxJpaRepository.getChargeableWeightByMovementFile( + movementFileId, EntitlementMaxCatCode.AIRFREIGHT.toString()); + } + + public List getNotifications(Long movementFileId) { + NotificationMFJpaServiceProvider notificationMFJpaServiceProvider = (NotificationMFJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(NotificationMFModel.class); + List notifications = notificationMFJpaServiceProvider.getNotifications(movementFileId); + + Map> notificationMFModelList = + notifications.stream() + .filter(n -> n.getStatus() == Status.SENT_OK) + .collect(Collectors.groupingBy(NotificationMFModel::getNotificationTemplateCode)) + .entrySet() + .stream() + .collect(Collectors.toMap(entry -> entry.getKey(), + entry -> entry.getValue() + .stream() + .sorted(Comparator.comparing(NotificationModel::getSentAt) + .reversed()) + .findFirst())); + + return notificationMFModelList.values() + .stream() + .filter(Optional::isPresent) + .map(Optional::get) + .sorted(Comparator.comparing(NotificationModel::getSentAt)) + .collect(Collectors.toList()); + + } + + public MovementFileModel newStateMachineEvent(String stateMachineEvent, Long movementFileId) { + MovementFileEvent event = MovementFileEvent.valueOf(stateMachineEvent); + + MovementFileModel movementFileModel = this.read(movementFileId); + MovementFileState currrentState = this.stateMachineService.getCurrentState(movementFileModel.getSmId()); + guard(stateMachineEvent, currrentState, movementFileId); + if (currrentState.equals(MovementFileState.COMPLETED)) { + event = getMovementFileEventFromCompleted(event, movementFileModel); + } + StateMachineTransitionResultModel transitionResult = this.stateMachineService.send(movementFileModel.getSmId(), event, + Collections.singletonMap(MovementFileMessageHeader.MOVEMENT_FILE_ID.name(), + movementFileId)); + if (transitionResult.getValid()) { + if (transitionResult.getArrivalState().equals(MovementFileState.COMPLETED)) { + this.complete(movementFileModel); + } else if (transitionResult.getArrivalState().equals(MovementFileState.CANCELLED)) { + this.cancel(movementFileModel); + } + movementFileModel.setState(transitionResult.getArrivalState()); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid, newStateMachineEvent()"); + } + return this.update(movementFileModel); + + + } + + private void guard(String stateMachineEvent, MovementFileState currrentState, Long movementFileId) { + if(stateMachineEvent.equals(MovementFileEvent.REOPEN.name()) && + currrentState.equals(MovementFileState.COMPLETED) && + !movementFileSecurityChecker.canReopen(movementFileId)) + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid, newStateMachineEvent()"); + } + + @NotNull + private MovementFileEvent getMovementFileEventFromCompleted(MovementFileEvent incomingEvent, MovementFileModel movementFileModel) { + if (incomingEvent.equals(MovementFileEvent.REOPEN)) { + if (movementFileModel.getStartDate() != null) { + if (LocalDate.now().isAfter(movementFileModel.getStartDate())) { + return MovementFileEvent.ONGOING; + } else { + return MovementFileEvent.CONFIRM; + } + } else { + if (LocalDate.now().isAfter(movementFileModel.getEstimatedEndDate())) { + return MovementFileEvent.ONGOING; + } else { + return MovementFileEvent.CONFIRM; + } + } + } + return incomingEvent; + } + + public List getAllPersonsAssignedToAMovementFile() { + MovementFileJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class); + return repo.getJobHolderIds(); + } + + private MovementFileModel addState(MovementFileModel model, StateMachineTransitionResultModel transitionResult) { + if (transitionResult.getValid()) { + model.setSmId(transitionResult.getId()); + model.setState(transitionResult.getArrivalState()); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid, addState()"); + } + return model; + } + + private MovementFileModel addFileId(MovementFileModel model) { + + MovementFileJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class); + Long fileIdSequence = 0L; + + if (!(repo == null)) { + fileIdSequence = repo.getSequenceForMovementFileID(model.getYear()); + } + + String fileId = Stream.of(model.getYear().toString(), "FILE", String.format("%04d", fileIdSequence)) + .collect(Collectors.joining("-")); + model.setFileId(fileId); + model.setMovementNr(fileIdSequence); + + return model; + } + + public Optional getCreationDate(MovementFileModel model) { + StateMachineHistoryHolder stateMachineHistoryHolder = this.stateMachineService.getHistory(model.getSmId()); + Optional> transitionModel = stateMachineHistoryHolder.getFirstTransitionHavingArrivalState(MovementFileState.PENDING); + return transitionModel.map(m -> m.getExecutor().getInstant().toLocalDate()); + } + + public List> getStateMachineHistory(Long movementFileId) { + StateMachineHistoryHolder stateMachineHistoryHolder; + MovementFileModel movementFileModel = read(movementFileId); + + stateMachineHistoryHolder = this.stateMachineService.getHistory(movementFileModel.getSmId()); + + return stateMachineHistoryHolder.getTransitions(); + } + + public void generateDefaultEntitlementTypes(MovementFileModel toSave, + MovementFileState movementFileState, + Map> tudEntitlementAmountMap, + Optional chargeableWeight) { + EntitlementTypeJpaServiceProvider entitlementTypeMFJpaService = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + EntitlementTypeModel.class); + entitlementTypeMFJpaService.generateDefaultEntitlementTypeList(toSave, movementFileState, + tudEntitlementAmountMap, chargeableWeight); + } + + public void deleteAllEntitlementTypeForMF(MovementFileModel movementFileModel) { + EntitlementTypeJpaServiceProvider entitlementTypeMFJpaService = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + EntitlementTypeModel.class); + entitlementTypeMFJpaService.deleteAllEntitlementTypeForMF(movementFileModel); + + } + + public Optional getExistingAmount(MovementFileModel movementFileModel, EntitlementMaxCatCode entitlementMaxCatCode) { + EntitlementTypeJpaServiceProvider entitlementTypeMFJpaService = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + EntitlementTypeModel.class); + return entitlementTypeMFJpaService.getExistingAmount(movementFileModel.getId(), entitlementMaxCatCode); + } + + public void deleteAllEntitlementTypeForMFAndRequest(MovementFileModel movementFileModel) { + EntitlementTypeJpaServiceProvider entitlementTypeMFJpaService = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + EntitlementTypeModel.class); + entitlementTypeMFJpaService.deleteAllEntitlementTypeForMFAndRequest(movementFileModel); + + } + + private DeclarationModel createDeclaration(MovementFileModel toSave) { + DeclarationJpaServiceProvider declarationJpaService = (DeclarationJpaServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor( + DeclarationModel.class); + return declarationJpaService.createDeclaration(toSave); + } + + private void deleteNotifications(Long movementFileId){ + NotificationMFJpaServiceProvider notificationMFJpaServiceProvider = (NotificationMFJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(NotificationMFModel.class); + notificationMFJpaServiceProvider.deleteAllNotifications(movementFileId); + + } + + private void deleteDeclaration(MovementFileModel toSave) { + DeclarationJpaServiceProvider declarationJpaService = (DeclarationJpaServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor( + DeclarationModel.class); + declarationJpaService.deleteDeclaration(toSave); + } + + public Boolean isHodMovementFile(MovementFileModel model) { + + return (model.getHodJobTo() != null && model.getHodJobTo()) || (model.getHodJobFrom() != null && model.getHodJobFrom()); + + + } + + private void initializePosting(MovementFileModel movementFileModel) { + + movementFileModel.setHodPosting(isHodMovementFile(movementFileModel)); + } + + /** + * @param movementFileModel create entitelments declaration and the rest of entities + * the mf should be persisted before + * + * @return movementFileModel + */ + public MovementFileModel initializeMovementFile(MovementFileModel movementFileModel) { + + DeclarationModel declarationModel = this.createDeclaration(movementFileModel); + + movementFileModel.setAirfreightVolumeCeiling(declarationModel.getVolumeAirFreightCeiling()); + + initializePosting(movementFileModel); + + return movementFileModel; + + } + + + private void cancel(MovementFileModel movementFileModel) { + this.movementFileValidator.validateCanCancel(entitlementTypeJpaServiceProvider.getEntitlementsTypeList(movementFileModel.getId())); + } + + public void complete(MovementFileModel movementFileModel) { + this.movementFileValidator.validateCanComplete(entitlementTypeJpaServiceProvider.getEntitlementsTypeList(movementFileModel.getId())); + } + + public void deleteMovementFile(Long movementFileId) { + MovementFileModel movementFileModel = this.read(movementFileId); + this.movementFileValidator.validateCanDelete(entitlementTypeJpaServiceProvider.getEntitlementsTypeList(movementFileId)); + this.deleteAllEntitlementTypeForMFAndRequest(movementFileModel); + this.deleteDeclaration(movementFileModel); + this.deleteNotifications(movementFileModel.getId()); + this.delete(movementFileModel); + } + + public void deleteMovementFileNoValidation(Long movementFileId) { + MovementFileModel movementFileModel = this.read(movementFileId); + //this.movementFileValidator.validateCanDelete(entitlementTypeJpaServiceProvider.getEntitlementsTypeList(movementFileId)); + this.deleteAllEntitlementTypeForMFAndRequest(movementFileModel); + this.deleteDeclaration(movementFileModel); + this.deleteNotifications(movementFileId); + this.delete(movementFileModel); + } + + public LocalDate getClosestDateForGosselin(Integer year, String cityFrom, String cityTo) { + MovementFileJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class); + List movementFileJpaEntities = repo.getMovementFileJpaEntitiesByYearAndCityFromAndCityTo(year, cityFrom, cityTo); + Optional urgentMovementFile = movementFileJpaEntities.stream().filter(movementFileJpaEntity -> movementFileJpaEntity.getStartDate().isAfter(LocalDate.now())).sorted(Comparator.comparing(MovementFileJpaEntity::getStartDate)).findFirst(); + if (urgentMovementFile.isPresent()) { + return urgentMovementFile.get().getStartDate(); + } + return LocalDate.now(); + } + + public List findByPersonId(Long perId){ + + MovementFileJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class); + + return getBeanMapper().mapAsList(repo.findExistingMovementByPersonId(perId),MovementFileModel.class); + } + + public List findJobHolderAndMovementTypeAndYear(Long perId,Integer year){ + + MovementFileJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class); + + return getBeanMapper().mapAsList(repo.findJobHolderAndMovementTypeAndYear(perId,10L,year),MovementFileModel.class); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/MovementTypeJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/MovementTypeJpaServiceProvider.java new file mode 100644 index 0000000..8b699ca --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/MovementTypeJpaServiceProvider.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementTypeJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.MovementTypeJpaRepository; +import eu.europa.eeas.erights.common.service.model.MovementTypeModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class MovementTypeJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader { + + @Override + public Class getModelType() { + return MovementTypeModel.class; + } + + @Override + public Class getEntityType() { + return MovementTypeJpaEntity.class; + } + + public List getMovementTypesByContext(Long contextId) { + MovementTypeJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(MovementTypeJpaEntity.class, MovementTypeJpaRepository.class); + List movementTypeJpaEntities = repo.findByContextId(contextId); + + return getBeanMapper().mapAsList(movementTypeJpaEntities, MovementTypeModel.class); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/PersonEmailJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/PersonEmailJpaServiceProvider.java new file mode 100644 index 0000000..584adcb --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/PersonEmailJpaServiceProvider.java @@ -0,0 +1,52 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonEmailJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.PersonEmailJpaRepository; +import eu.europa.eeas.erights.common.service.model.PersonEmailModel; +import eu.europa.eeas.erights.common.tools.person.EmailType; + +import org.springframework.stereotype.Service; + +import java.util.List; + +import javax.transaction.Transactional; + +@Service +@Transactional +public class PersonEmailJpaServiceProvider extends AbstractDataServiceProvider + /* + * Add more 'implements' here if needed + */ + implements EntityReader, + EntityCreator, + EntityUpdater, + EntityDeleter{ + + @Override + public Class getModelType() { + return PersonEmailModel.class; + } + + @Override + public Class getEntityType() { + return PersonEmailJpaEntity.class; + } + + public List getPersonPrivateEmails(Long perId) { + List entities = getReaderRepo().findByPerIdAndEmailType(perId, EmailType.PRIV); + List result = getBeanMapper().mapAsList(entities, PersonEmailModel.class); + return result; + } + + private PersonEmailJpaRepository getReaderRepo() { + return getEntityRepositoryRegistry().getReaderRepositoryFor(PersonEmailJpaEntity.class, PersonEmailJpaRepository.class); + } + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/PersonJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/PersonJpaServiceProvider.java new file mode 100644 index 0000000..2924245 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/PersonJpaServiceProvider.java @@ -0,0 +1,29 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonJpaEntity; +import eu.europa.eeas.erights.common.service.model.PersonModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; + +@Service +@Transactional +public class PersonJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader { + + @Override + public Class getModelType() { + return PersonModel.class; + } + + @Override + public Class getEntityType() { + return PersonJpaEntity.class; + } + + public PersonModel getPerson(Long perId) { + return this.read(perId); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/PersonnelTypeJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/PersonnelTypeJpaServiceProvider.java new file mode 100644 index 0000000..1c12861 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/PersonnelTypeJpaServiceProvider.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.job.PersonnelTypeJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.PersonnelTypeJpaRepository; +import eu.europa.eeas.erights.common.service.model.job.PersonnelTypeModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class PersonnelTypeJpaServiceProvider extends AbstractDataServiceProvider implements EntityReader { + + @Override + public Class getModelType() { + return PersonnelTypeModel.class; + } + + @Override + public Class getEntityType() { + return PersonnelTypeJpaEntity.class; + } + + public List getAllPersonnelTypes() { + PersonnelTypeJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(PersonnelTypeJpaEntity.class, PersonnelTypeJpaRepository.class); + return getBeanMapper().mapAsList(repo.findByOrderById(), PersonnelTypeModel.class); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/PlaceOriginAirportJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/PlaceOriginAirportJpaServiceProvider.java new file mode 100644 index 0000000..3755615 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/PlaceOriginAirportJpaServiceProvider.java @@ -0,0 +1,71 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; + + +import eu.europa.eeas.erights.common.data.jpa.entity.PlaceOriginAirportJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.PlaceOriginAirportJpaRepository; +import eu.europa.eeas.erights.common.service.model.PlaceOriginAirportModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class PlaceOriginAirportJpaServiceProvider extends AbstractDataServiceProvider implements + EntityReader, + EntityCreator, + EntityDeleter +{ + + @Override + public Class getModelType() { + return PlaceOriginAirportModel.class; + } + + @Override + public Class getEntityType() { + return PlaceOriginAirportJpaEntity.class; + } + + public PlaceOriginAirportModel findIataCodeByCityNameAndCountryCode(String cityName,String countryCode) { + + PlaceOriginAirportJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + PlaceOriginAirportJpaEntity.class, PlaceOriginAirportJpaRepository.class); + + List entities = repo.findByCityName(cityName); + if(entities.size() == 1){ + return getBeanMapper().map(entities.get(0), PlaceOriginAirportModel.class); + }else if(entities.size() == 0){ + return null; + }else if(entities.size() > 1){ + List entities2 = repo.findByCityNameAndCountryCode(cityName,countryCode); + if(entities2.size() == 1){ + return getBeanMapper().map(entities2.get(0), PlaceOriginAirportModel.class); + }else { + return null; + } + } + + return null; + + } + + public Boolean checkIfPlaceOriginExists(PlaceOriginAirportModel placeOriginAirportModel){ + + PlaceOriginAirportJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + PlaceOriginAirportJpaEntity.class, PlaceOriginAirportJpaRepository.class); + + if(repo.findByCityNameAndCountryCode(placeOriginAirportModel.getCityName(),placeOriginAirportModel.getCountryCode()).size() > 0){ + return true; + } + return false; + } + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/PostingTravelAllowanceTransitionService.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/PostingTravelAllowanceTransitionService.java new file mode 100644 index 0000000..05a6d7e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/PostingTravelAllowanceTransitionService.java @@ -0,0 +1,54 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.base.exception.NotAllowedRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ValidationRuntimeException; +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.erights.common.service.model.allowances.TravelAllowanceModel; +import eu.europa.eeas.erights.common.service.provider.allowances.TravelAllowanceServiceProvider; +import eu.europa.eeas.erights.common.service.provider.allowances.PostingAllowanceValidation; +import eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceEvent; +import eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class PostingTravelAllowanceTransitionService extends AbstractServiceProvider { + + @Autowired + private TravelAllowanceServiceProvider travelAllowanceServiceProvider; + + @Autowired + private StateMachineService stateMachineService; + + public void execute() { + List postingAllowanceModels = travelAllowanceServiceProvider.getTravelAllowancesByDiscriminatorAndStatus("Travel" ,"DRAFT"); + getLogger().info("Travel Allowances in DRAFT: {}", postingAllowanceModels.size()); + postingAllowanceModels.stream().map(travelAllowanceModel -> travelAllowanceServiceProvider.updateDependants(travelAllowanceModel)).filter(this::isReadyToMoveToAwaiting) + .forEach(this::moveToAwaiting); + } + + private boolean isReadyToMoveToAwaiting(TravelAllowanceModel travelAllowanceModel) { + try { + PostingAllowanceValidation.executeTransitionValidation(travelAllowanceModel); + return true; + } catch (ValidationRuntimeException validationRuntimeException) { + getLogger().error(String.format("TravelAllowanceModel in DRAFT %s not valid: ", travelAllowanceModel.getPostingAllowanceStringId())); + validationRuntimeException.getItems().forEach(exception -> getLogger().error(exception.getMessage())); + return false; + } + + } + + private void moveToAwaiting(TravelAllowanceModel travelAllowanceModel) { + try { + travelAllowanceServiceProvider.moveToAwaiting(travelAllowanceModel); + getLogger().info("Posting Allowance {}: Transition to Awaiting in success", travelAllowanceModel.getId()); + } catch (NotAllowedRuntimeException exception) { + getLogger().error("Transition not allowed Posting Allowance {} Status {}, State Machine Status {}", travelAllowanceModel.getId(), travelAllowanceModel.getState().name(), stateMachineService.getCurrentState(travelAllowanceModel.getSmId())); + } + + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/StateMachineServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/StateMachineServiceProvider.java new file mode 100644 index 0000000..7947cc5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/StateMachineServiceProvider.java @@ -0,0 +1,119 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.ananke.tools.statemachine.service.history.StateMachineHistoryHolder; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.service.model.entitlement.request.*; +import eu.europa.eeas.erights.common.tools.statemachine.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Optional; + +@Service +public class StateMachineServiceProvider { + + @Autowired + @Qualifier(ERightsBeanNames.ClearingRequestStateMachine.SERVICE) + private StateMachineService clearingRequestStateMachineService; + + @Autowired + @Qualifier(ERightsBeanNames.TotalRemRequestStateMachine.SERVICE) + private StateMachineService totalRemRequestStateMachineService; + + @Autowired + @Qualifier(ERightsBeanNames.AdvanceRequestStateMachine.SERVICE) + private StateMachineService advanceRequestStateMachineService; + + @Autowired + @Qualifier(ERightsBeanNames.EntitlementRequestStateMachine.SERVICE) + private StateMachineService entitlementRequestStateMachineService; + + @Autowired + @Qualifier(ERightsBeanNames.TopUpRequestStateMachine.SERVICE) + private StateMachineService topUpRequestStateMachineService; + + public LocalDateTime getLastAwaitingDate(RequestModel requestModel) { + if (isAdvance(requestModel)) { + StateMachineHistoryHolder stateMachineHistoryHolder = advanceRequestStateMachineService.getHistory(requestModel.getSmId()); + Optional> machineTransitionModel = stateMachineHistoryHolder.getTransitions() + .stream() + .filter(stateMachineTransitionModel -> stateMachineTransitionModel.getArrivalState().equals(AdvanceRequestState.AWAITING)) + .max(StateMachineTransitionModel::compareTo); + if ( machineTransitionModel.isPresent()) { + return machineTransitionModel.get().getExecutor().getInstant(); + } + } else if (isTotalRem(requestModel)) { + StateMachineHistoryHolder stateMachineHistoryHolder = totalRemRequestStateMachineService.getHistory(requestModel.getSmId()); + Optional> machineTransitionModel = stateMachineHistoryHolder.getTransitions() + .stream() + .filter(stateMachineTransitionModel -> stateMachineTransitionModel.getArrivalState().equals(TotalRemRequestState.AWAITING)) + .max(StateMachineTransitionModel::compareTo); + if ( machineTransitionModel.isPresent()) { + return machineTransitionModel.get().getExecutor().getInstant(); + } + } else if (isClearing(requestModel)) { + StateMachineHistoryHolder stateMachineHistoryHolder = clearingRequestStateMachineService.getHistory(requestModel.getSmId()); + Optional> machineTransitionModel = stateMachineHistoryHolder.getTransitions() + .stream() + .filter(stateMachineTransitionModel -> stateMachineTransitionModel.getArrivalState().equals(ClearingRequestState.AWAITING)) + .max(StateMachineTransitionModel::compareTo); + if ( machineTransitionModel.isPresent()) { + return machineTransitionModel.get().getExecutor().getInstant(); + } + } else if (isTud(requestModel)) { + StateMachineHistoryHolder stateMachineHistoryHolder = entitlementRequestStateMachineService.getHistory(requestModel.getSmId()); + Optional> awaitingMachineTransitionModel = stateMachineHistoryHolder.getTransitions() + .stream() + .filter(stateMachineTransitionModel -> stateMachineTransitionModel.getArrivalState().equals(RequestState.AWAITING)) + .max(StateMachineTransitionModel::compareTo); + if ( awaitingMachineTransitionModel.isPresent()) { + return awaitingMachineTransitionModel.get().getExecutor().getInstant(); + } else { + Optional> approvedMachineTransitionModel = stateMachineHistoryHolder.getTransitions() + .stream() + .filter(stateMachineTransitionModel -> stateMachineTransitionModel.getArrivalState().equals(RequestState.APPROVED)) + .max(StateMachineTransitionModel::compareTo); + if (approvedMachineTransitionModel.isPresent()) { + return approvedMachineTransitionModel.get().getExecutor().getInstant(); + } + } + } else if (isTupUp(requestModel)) { + StateMachineHistoryHolder stateMachineHistoryHolder = topUpRequestStateMachineService.getHistory(requestModel.getSmId()); + Optional> approvedMachineTransitionModel = stateMachineHistoryHolder.getTransitions() + .stream() + .filter(stateMachineTransitionModel -> stateMachineTransitionModel.getArrivalState().equals(TopUpRequestState.APPROVED)) + .max(StateMachineTransitionModel::compareTo); + if (approvedMachineTransitionModel.isPresent()) { + return approvedMachineTransitionModel.get().getExecutor().getInstant(); + } + } + + return LocalDateTime.now(); + } + + private boolean isTupUp(RequestModel requestModel) { + return requestModel instanceof TopUpRequestModel; + } + + private boolean isTud(RequestModel requestModel) { + return requestModel instanceof TudRequestModel; + } + + private boolean isTotalRem(RequestModel requestModel) { + return requestModel instanceof TotalRemRequestModel; + } + + private boolean isAdvance(RequestModel requestModel) { + return requestModel instanceof AdvanceRequestModel; + } + + private boolean isClearing(RequestModel requestModel) { + return requestModel instanceof ClearingRequestModel; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/StatutoryLinkCodeJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/StatutoryLinkCodeJpaServiceProvider.java new file mode 100644 index 0000000..ed470eb --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/StatutoryLinkCodeJpaServiceProvider.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.job.StatutoryLinkCodeJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.StatutoryLinkCodeJpaRepository; +import eu.europa.eeas.erights.common.service.model.job.StatutoryLinkCodeModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class StatutoryLinkCodeJpaServiceProvider extends AbstractDataServiceProvider implements EntityReader { + + @Override + public Class getModelType() { + return StatutoryLinkCodeModel.class; + } + + @Override + public Class getEntityType() { + return StatutoryLinkCodeJpaEntity.class; + } + + public List getAllStatutoryLinkCodes() { + StatutoryLinkCodeJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(StatutoryLinkCodeJpaEntity.class, StatutoryLinkCodeJpaRepository.class); + return getBeanMapper().mapAsList(repo.findByOrderByNameEnAsc(), StatutoryLinkCodeModel.class); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/UserPreferenceJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/UserPreferenceJpaServiceProvider.java new file mode 100644 index 0000000..6f03e98 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/UserPreferenceJpaServiceProvider.java @@ -0,0 +1,68 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.security.user.AuthenticatedUser; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.data.jpa.entity.UserPreferenceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.UserPreferenceJpaRepository; +import eu.europa.eeas.erights.common.service.model.UserPreferenceModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; + +@Service +@Transactional +public class UserPreferenceJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, + EntityCreator, + EntityUpdater { + + @Autowired + private AbstractUserHandler userHandler; + + @Override + public Class getModelType() { + return UserPreferenceModel.class; + } + + @Override + public Class getEntityType() { + return UserPreferenceJpaEntity.class; + } + + public UserPreferenceModel save(UserPreferenceModel model) { + AuthenticatedUser user = (AuthenticatedUser) userHandler.getUser(); + Long userId = user.getId(); + String language = user.getLocale().getLanguage(); + model.setPerId(userId); + model.setLocale(language); + + UserPreferenceJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(UserPreferenceJpaEntity.class, UserPreferenceJpaRepository.class); + UserPreferenceJpaEntity userPreference = repo.getByPerIdAndLocaleAndPagePath(userId, language, model.getPagePath()); + + if (userPreference != null) { + userPreference.setPreferences(model.getPreferences()); + return this.update(getBeanMapper().map(userPreference, UserPreferenceModel.class)); + } else { + return this.create(model); + } + } + + public UserPreferenceModel getByPagePath(String pagePath) { + AuthenticatedUser user = (AuthenticatedUser) userHandler.getUser(); + Long userId = user.getId(); + + UserPreferenceJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(UserPreferenceJpaEntity.class, UserPreferenceJpaRepository.class); + UserPreferenceJpaEntity userPreference = repo.getByPerIdAndLocaleAndPagePath(userId, user.getLocale().getLanguage(), pagePath); + UserPreferenceModel model = getBeanMapper().map(userPreference, UserPreferenceModel.class); + if (model == null) { + model = new UserPreferenceModel(); + } + return model; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VAllowanceJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VAllowanceJpaServiceProvider.java new file mode 100644 index 0000000..c1cc4a3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VAllowanceJpaServiceProvider.java @@ -0,0 +1,158 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.base.user.User; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.VAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.VAllowanceJpaRepository; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.model.VAllowanceModel; +import eu.europa.eeas.erights.common.tools.allowances.AllowancePage; +import eu.europa.eeas.erights.common.tools.utils.KendoSqlBuilder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import javax.transaction.Transactional; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + +@Service +@Transactional +public class VAllowanceJpaServiceProvider extends AbstractDataServiceProvider implements EntityReader { + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + private MovementFileSecurityChecker movementFileSecurityChecker; + + @Autowired + private EntityManager entityManager; + + @Override + public Class getModelType() { + return VAllowanceModel.class; + } + + @Override + public Class getEntityType() { + return VAllowanceJpaEntity.class; + } + + public List getAllowancesBackOffice() { + VAllowanceJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(VAllowanceJpaEntity.class, VAllowanceJpaRepository.class); + + if (this.movementFileSecurityChecker.hasOrganisationIndependentEntitlementsConsultAuthority()) { + Iterable files = repo.findAll(); + return getBeanMapper().mapAsList(files, VAllowanceModel.class); + } else { + Set orgIds = this.movementFileSecurityChecker.getOrganisationsWithEntitlementsConsultAuthority(); + if (orgIds != null && !orgIds.isEmpty()) { + return getBeanMapper().mapAsList(repo.findByDelegationOrgIdFromIn(orgIds), VAllowanceModel.class); + } + } + return Collections.emptyList(); + } + + public AllowancePage getAllowancesBackOfficeFiltered(Integer page, + Integer pageSize, + String sortJson, + String filterJson) { + + VAllowanceJpaRepository repo = + getEntityRepositoryRegistry().getReaderRepositoryFor( + VAllowanceJpaEntity.class, VAllowanceJpaRepository.class); + + List all; + + // Existing security logic + if (movementFileSecurityChecker.hasOrganisationIndependentEntitlementsConsultAuthority()) { + all = findAllAllowancesFiltered(sortJson, filterJson); + } else { + Set orgIds = movementFileSecurityChecker.getOrganisationsWithEntitlementsConsultAuthority(); + if (orgIds != null && !orgIds.isEmpty()) { + all = findAllowancesFiltered(orgIds, sortJson, filterJson); + } else { + all = Collections.emptyList(); + } + } + + // BEFORE paging + int total = all.size(); + + // Apply simple paging + int from = Math.max(0, (page - 1) * pageSize); + int to = Math.min(total, from + pageSize); + List pageItems = (from < to) ? all.subList(from, to) : Collections.emptyList(); + + // Map to model + List mapped = + getBeanMapper().mapAsList(pageItems, VAllowanceModel.class); + + return new AllowancePage(mapped, total); + } + + + public List getAllowancesFrontOffice() { + VAllowanceJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(VAllowanceJpaEntity.class, VAllowanceJpaRepository.class); + + List allowances; + if (this.movementFileSecurityChecker.hasOrganisationIndependentEntitlementsConsultAuthority()) { + allowances = StreamSupport.stream(repo.findAll().spliterator(), false).collect(Collectors.toList()); + } else { + List allowancesInDelegation = new ArrayList<>(); + Set orgIds = this.movementFileSecurityChecker.getOrganisationsWithEntitlementsConsultAuthority(); + if (orgIds != null && !orgIds.isEmpty()) { + allowancesInDelegation = repo.findByDelegationOrgIdFromIn(orgIds); + } + User currentUser = this.movementFileSecurityChecker.getCurrentUser(); + allowances = repo.findAllByUserIdOrEmailNotIn(currentUser.getId(), currentUser.getEmail()); + + allowances.addAll(allowancesInDelegation); + allowances = allowances.stream().distinct().collect(Collectors.toList()); + } + return getBeanMapper().mapAsList(allowances, VAllowanceModel.class); + } + + public List findAllowancesFiltered(Set orgIds, + String sortJson, + String filterJson) { + + String base = "SELECT * FROM V_ALLOWANCES WHERE DELEGATION_ORG_ID_FROM IN (:orgIds)"; + + String extraWhere = KendoSqlBuilder.buildWhere(filterJson); + String finalWhere = ""; + + // If SQL Builder already created a WHERE clause + if (extraWhere.startsWith(" WHERE")) { + finalWhere = " AND " + extraWhere.substring(7); + } + + String orderBy = KendoSqlBuilder.buildOrderBy(sortJson); + + String sql = base + finalWhere + orderBy; + + Query query = entityManager.createNativeQuery(sql, VAllowanceJpaEntity.class); + query.setParameter("orgIds", orgIds); + + return query.getResultList(); + } + public List findAllAllowancesFiltered(String sortJson, String filterJson) { + + String base = "SELECT * FROM V_ALLOWANCES"; + + String where = KendoSqlBuilder.buildWhere(filterJson); + String orderBy = KendoSqlBuilder.buildOrderBy(sortJson); + + String sql = base + where + orderBy; + + Query query = entityManager.createNativeQuery(sql, VAllowanceJpaEntity.class); + + return query.getResultList(); + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VAssignmentHistEeasJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VAssignmentHistEeasJpaServiceProvider.java new file mode 100644 index 0000000..9b9d4ea --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VAssignmentHistEeasJpaServiceProvider.java @@ -0,0 +1,53 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import static java.util.Objects.nonNull; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.VAssignmentHistEeasJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.VAssignmentHistEeasJpaRepository; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.VJobModel; +import eu.europa.eeas.erights.common.service.model.ws.VAssignmentHistEeasModel; +import java.util.List; +import javax.transaction.Transactional; +import lombok.AllArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +@Service +@Transactional +@AllArgsConstructor +public class VAssignmentHistEeasJpaServiceProvider extends AbstractDataServiceProvider implements EntityReader { + + private final VAssignmentHistEeasJpaRepository assignmentHistEeasJpaRepository; + + private final VJobJpaServiceProvider vJobJpaServiceProvider; + + @Override + public Class getModelType() { + return VAssignmentHistEeasModel.class; + } + + @Override + public Class getEntityType() { + return VAssignmentHistEeasJpaEntity.class; + } + + + public List getByPerId(Long perId) { + + List vAssignmentHistEeasModels = getBeanMapper().mapAsList( + assignmentHistEeasJpaRepository.findByPerIdOrderByStartDateAsc( + perId), VAssignmentHistEeasModel.class); + if (CollectionUtils.isNotEmpty(vAssignmentHistEeasModels)) { + vAssignmentHistEeasModels.forEach(vAssignmentHistEeasModel -> { + if (nonNull(vAssignmentHistEeasModel.getJobId())) { + vAssignmentHistEeasModel.setJob( + vJobJpaServiceProvider.get(vAssignmentHistEeasModel.getJobId())); + } + }); + } + return vAssignmentHistEeasModels; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VAssignmentHistJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VAssignmentHistJpaServiceProvider.java new file mode 100644 index 0000000..34cf234 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VAssignmentHistJpaServiceProvider.java @@ -0,0 +1,71 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import static java.util.Objects.nonNull; + +import com.google.common.collect.Iterables; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.VAssignmentHistJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.VAssignmentHistJpaRepository; +import eu.europa.eeas.erights.common.service.model.VAssignmentHistModel; +import java.util.List; +import java.util.Optional; +import javax.transaction.Transactional; +import lombok.AllArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +@Service +@Transactional +@AllArgsConstructor +public class VAssignmentHistJpaServiceProvider extends AbstractDataServiceProvider implements + EntityReader { + + private final VAssignmentHistJpaRepository vAssignmentHistJpaRepository; + + private final VJobJpaServiceProvider vJobJpaServiceProvider; + + @Override + public Class getModelType() { + return VAssignmentHistModel.class; + } + + @Override + public Class getEntityType() { + return VAssignmentHistJpaEntity.class; + } + + + public List getByPerId(Long perId) { + + List vAssignmentHistModels = getBeanMapper().mapAsList( + vAssignmentHistJpaRepository.findByPerIdOrderByStartDateAsc( + perId), VAssignmentHistModel.class); + if (CollectionUtils.isNotEmpty(vAssignmentHistModels)) { + vAssignmentHistModels.forEach(vAssignmentHistModel -> { + if (nonNull(vAssignmentHistModel.getJobId())) { + vAssignmentHistModel.setJob( + vJobJpaServiceProvider.get(vAssignmentHistModel.getJobId())); + } + }); + } + return vAssignmentHistModels; + } + + public Optional getLastByPerId(Long perId) { + List vAssignmentHistModels = getBeanMapper().mapAsList( + vAssignmentHistJpaRepository.findByPerIdOrderByStartDateAsc( + perId), VAssignmentHistModel.class); + + if (CollectionUtils.isNotEmpty(vAssignmentHistModels)) { + VAssignmentHistModel lastAssignment = Iterables.getLast(vAssignmentHistModels); + if (lastAssignment.getJobId() != null) { + //set the job + lastAssignment.setJob( + vJobJpaServiceProvider.get(lastAssignment.getJobId())); + } + return Optional.of(lastAssignment); + } + return Optional.empty(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VJobJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VJobJpaServiceProvider.java new file mode 100644 index 0000000..5b17a3e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VJobJpaServiceProvider.java @@ -0,0 +1,30 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.VJobJpaEntity; +import eu.europa.eeas.erights.common.service.model.VJobModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; + +@Service +@Transactional +public class VJobJpaServiceProvider extends AbstractDataServiceProvider implements EntityReader { + + @Override + public Class getModelType() { + return VJobModel.class; + } + + @Override + public Class getEntityType() { + return VJobJpaEntity.class; + } + + // add permissions + public VJobModel get(Long id) { + return read(id); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VNewTravelAllowanceJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VNewTravelAllowanceJpaServiceProvider.java new file mode 100644 index 0000000..1160e8b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VNewTravelAllowanceJpaServiceProvider.java @@ -0,0 +1,53 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.erights.common.data.jpa.entity.VCurrentExerciseNewTravelAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.VNewTravelAllowanceJpaRepository; +import eu.europa.eeas.erights.common.service.model.VNewTravelAllowanceModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class VNewTravelAllowanceJpaServiceProvider extends AbstractServiceProvider{ + + @Autowired + private VNewTravelAllowanceJpaRepository repository; + + public List findAll() { + + List travelAllowanceJpaEntities = repository.findAll(); + return getBeanMapper().mapAsList(travelAllowanceJpaEntities, VNewTravelAllowanceModel.class); + } + + public List findTop10() { + + List travelAllowanceJpaEntities = repository.findTop10By(); + return getBeanMapper().mapAsList(travelAllowanceJpaEntities, VNewTravelAllowanceModel.class); + } + + public List findTop50() { + + List travelAllowanceJpaEntities = repository.findTop50By(); + return getBeanMapper().mapAsList(travelAllowanceJpaEntities, VNewTravelAllowanceModel.class); + } + + public List findTop100() { + + List travelAllowanceJpaEntities = repository.findTop100By(); + return getBeanMapper().mapAsList(travelAllowanceJpaEntities, VNewTravelAllowanceModel.class); + } + + + + + public List findAllByPerId(Long perId) { + + List travelAllowanceJpaEntities = repository.getAllByPerId(perId); + return getBeanMapper().mapAsList(travelAllowanceJpaEntities, VNewTravelAllowanceModel.class); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VPersonJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VPersonJpaServiceProvider.java new file mode 100644 index 0000000..4ecc51d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/VPersonJpaServiceProvider.java @@ -0,0 +1,43 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.VPersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.VPersonJpaRepository; +import eu.europa.eeas.erights.common.service.model.VPersonModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class VPersonJpaServiceProvider extends AbstractDataServiceProvider implements EntityReader { + + @Override + public Class getModelType() { + return VPersonModel.class; + } + + @Override + public Class getEntityType() { + return VPersonJpaEntity.class; + } + + public List findPersonsBy(Long perId, String firstName, String lastName, String orgName) { + VPersonJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(VPersonJpaEntity.class, VPersonJpaRepository.class); + + List persons = repo.findByFields(perId, firstName, lastName, orgName); + + return getBeanMapper().mapAsList(persons, VPersonModel.class); + } + + public VPersonModel findById(Long id) { + VPersonJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(VPersonJpaEntity.class, VPersonJpaRepository.class); + + VPersonJpaEntity person = repo.findById(id); + + return getBeanMapper().map(person, VPersonModel.class); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/comments/CommentForMovementFileJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/comments/CommentForMovementFileJpaServiceProvider.java new file mode 100644 index 0000000..70b046c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/comments/CommentForMovementFileJpaServiceProvider.java @@ -0,0 +1,44 @@ +package eu.europa.eeas.erights.common.service.data.provider.comments; + +import java.util.List; + +import javax.transaction.Transactional; + +import org.springframework.stereotype.Service; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsForMovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.comments.CommentForMovementFileJpaRepository; +import eu.europa.eeas.erights.common.service.model.comments.CommentForMovementFileModel; + +@Service +@Transactional +public class CommentForMovementFileJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, + EntityCreator, + EntityUpdater { + + @Override + public Class getModelType() { + return CommentForMovementFileModel.class; + } + + @Override + public Class getEntityType() { + return CommentsForMovementFileJpaEntity.class; + } + + public List getCommentsForEntity(Long entityId) { + List entities = this.getRepo().getCommentsForMovementFile(entityId); + return getBeanMapper().mapAsList(entities, CommentForMovementFileModel.class); + } + + private CommentForMovementFileJpaRepository getRepo() { + return getEntityRepositoryRegistry().getReaderRepositoryFor( + CommentsForMovementFileJpaEntity.class, + CommentForMovementFileJpaRepository.class); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/comments/CommentForPostingAllowanceJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/comments/CommentForPostingAllowanceJpaServiceProvider.java new file mode 100644 index 0000000..4caf1ad --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/comments/CommentForPostingAllowanceJpaServiceProvider.java @@ -0,0 +1,42 @@ +package eu.europa.eeas.erights.common.service.data.provider.comments; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsForPostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.comments.CommentForPostingAllowanceJpaRepository; +import eu.europa.eeas.erights.common.service.model.comments.CommentForPostingAllowanceModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Service +@Transactional +public class CommentForPostingAllowanceJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, + EntityCreator, + EntityUpdater { + + @Override + public Class getModelType() { + return CommentForPostingAllowanceModel.class; + } + + @Override + public Class getEntityType() { + return CommentsForPostingAllowanceJpaEntity.class; + } + + public List getCommentsForEntity(Long entityId) { + List entities = this.getRepo().getCommentsForPostingAllowance(entityId); + return getBeanMapper().mapAsList(entities, CommentForPostingAllowanceModel.class); + } + + private CommentForPostingAllowanceJpaRepository getRepo() { + return getEntityRepositoryRegistry().getReaderRepositoryFor( + CommentsForPostingAllowanceJpaEntity.class, + CommentForPostingAllowanceJpaRepository.class); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/comments/CommentForRequestJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/comments/CommentForRequestJpaServiceProvider.java new file mode 100644 index 0000000..b494600 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/comments/CommentForRequestJpaServiceProvider.java @@ -0,0 +1,44 @@ +package eu.europa.eeas.erights.common.service.data.provider.comments; + +import java.util.List; + +import javax.transaction.Transactional; + +import org.springframework.stereotype.Service; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsForRequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.comments.CommentForRequestJpaRepository; +import eu.europa.eeas.erights.common.service.model.comments.CommentForRequestModel; + +@Service +@Transactional +public class CommentForRequestJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, + EntityCreator, + EntityUpdater { + + @Override + public Class getModelType() { + return CommentForRequestModel.class; + } + + @Override + public Class getEntityType() { + return CommentsForRequestJpaEntity.class; + } + + public List getCommentsForEntity(Long entityId) { + List entities = this.getRepo().getCommentsForRequest(entityId); + return getBeanMapper().mapAsList(entities, CommentForRequestModel.class); + } + + private CommentForRequestJpaRepository getRepo() { + return getEntityRepositoryRegistry().getReaderRepositoryFor( + CommentsForRequestJpaEntity.class, + CommentForRequestJpaRepository.class); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/declaration/DeclarationJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/declaration/DeclarationJpaServiceProvider.java new file mode 100644 index 0000000..916ab06 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/declaration/DeclarationJpaServiceProvider.java @@ -0,0 +1,777 @@ +package eu.europa.eeas.erights.common.service.data.provider.declaration; + +import eu.europa.eeas.ananke.core.base.exception.NotAllowedRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ServerInternalRuntimeException; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.ananke.tools.filemanagement.FileManager; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonAddressJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.DeclarationJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.FamilyMemberJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.PersonBankInfoJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.DeclarationJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.FamilyMemberJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.PersonAddressJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.PersonBankInfoJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.service.data.provider.AppParameterJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.PersonJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementMaxDefaultJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementMaxJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementTypeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.*; +import eu.europa.eeas.erights.common.service.data.provider.notification.NotificationMFJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.CountryModel; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.PersonModel; +import eu.europa.eeas.erights.common.service.model.declaration.*; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxDefaultModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.*; +import eu.europa.eeas.erights.common.service.model.notification.NotificationMFModel; +import eu.europa.eeas.erights.common.service.provider.BankAccountServiceProvider; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.app.AppParamType; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; +import eu.europa.eeas.erights.common.tools.job.JobFamilyPostingCode; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateType; +import eu.europa.eeas.erights.common.tools.removal.RemovalRequestType; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.TotalRemRequestState; +import org.javamoney.moneta.Money; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.Month; +import java.time.temporal.ChronoUnit; +import java.util.*; +import java.util.stream.Collectors; + +//import static eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider.NOTIF_TEMPLATE_TYPE_ENTITLEMENTS_REQUEST; + +@Service +@Transactional +public class DeclarationJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, EntityCreator, + EntityUpdater, EntityDeleter { + + public static final String REL_ASSIMILATED_PARTNER = "Assimilated partner"; + + public static final String REL_NOT_ASSIMILATED_PARTNER = "Not assimilated partner"; + + public static final String REL_SPOUSE = "Spouse"; + + public static final String REL_CHILD = "Child"; + + public static final String REL_CHILD_BIOLOGICAL = "Biological child"; + + public static final String REL_CHILD_UNDER_GUARD = "Child under guardianship"; + + public static final String REL_CHILD_SPOUSES = "Spouse's child"; + + public static final String REL_CHILD_ADOPTED = "Adopted child"; + + public static final String REL_EX_SPOUSE = "Ex-spouse / Person"; + + public static final String DEFAULT_TUD_NO_ELIGIBILITY_REASON = " "; + + public static final String NOT_ASSIMILATED_PARTNER_OR_NOT_CHILD_REASON = "This person is not registered as your child or as your spouse/assimilated partner in Sysper"; + + public static final Integer PERSONAL_PRIVATE_ADDRESS_CODE = 1; + + private static final int MINIMUM_YEARS_FOR_TUD_ELIGIBILITY = 2; + + @Autowired + private MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + private FileManager fileManager; + + @Autowired + private FamilyMemberJpaRepository familyMemberJpaRepository; + + @Autowired + private PersonAddressJpaRepository personAddressJpaRepository; + + @Autowired + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @Autowired + private BankAccountServiceProvider bankAccountServiceProvider; + + @Autowired + private EntitlementTypeJpaServiceProvider entitlementTypeJpaServiceProvider; + + @Autowired + private EntitlementMaxJpaServiceProvider entitlementMaxJpaServiceProvider; + + @Autowired + private TotalRemRequestJpaServiceProvider totalRemRequestJpaServiceProvider; + + @Autowired + private AdvanceRequestJpaServiceProvider advanceRequestJpaServiceProvider; + + @Autowired + @Lazy + private AppParameterJpaServiceProvider appParameterService; + + @Override + public Class getModelType() { + return DeclarationModel.class; + } + + @Override + public Class getEntityType() { + return DeclarationJpaEntity.class; + } + + public DeclarationModel createDeclaration(MovementFileModel movementFile) { + + // check if already there is a declaration for the movement file then return this otherwise create a new declaration + DeclarationJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(DeclarationJpaEntity.class, DeclarationJpaRepository.class); + DeclarationJpaEntity declaration = repo.getByMovementFileId(movementFile.getId()); + if (declaration != null) { + return getBeanMapper().map(declaration, DeclarationModel.class); + } + + DeclarationModel declarationModel = new DeclarationModel(); + declarationModel.setMovementFileId(movementFile.getId()); + Long staffMemberId = movementFile.getJobHolder().getPerId(); + declarationModel.setEnable(Boolean.FALSE); + declarationModel.setState(DeclarationState.INITIAL); + + PersonJpaServiceProvider personJpaService = (PersonJpaServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor(PersonModel.class); + declarationModel.setStaffMember(personJpaService.getPerson(movementFile.getJobHolder().getPerId())); + + declarationModel.setDeclarationPersons(generatePersons(staffMemberId, declarationModel, movementFile)); + + declarationModel.setVolumeAirFreightCeiling(calculateAirfrightCeilingForDeclaration(declarationModel)); + declarationModel.setKgAirFreightCeiling(declarationModel.getVolumeAirFreightCeiling().multiply(appParameterService.getFirstAppParametersByTypeAndKeyNumber(AppParamType.ADVANCE_REMOVAL, "M3toKG")).setScale(2, RoundingMode.DOWN)); + + return this.create(declarationModel); + } + + private List generatePersons(Long staffMemberId, DeclarationModel declarationModel, MovementFileModel movementFile) { + FamilyMemberJpaServiceProvider serviceProvider = (FamilyMemberJpaServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor(FamilyMemberModel.class); + PersonJpaServiceProvider personJpaService = (PersonJpaServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor(PersonModel.class); + return serviceProvider.getFamilyMembers(staffMemberId).stream() + .map(member -> { + DeclarationPersonModel declarationPerson = new DeclarationPersonModel(); + declarationPerson.setDeclaration(declarationModel); + declarationPerson.setPerson(personJpaService.getPerson(staffMemberId)); + PersonModel familyMember = personJpaService.getPerson(member.getRelPerId()); + declarationPerson.setRelative(familyMember); + declarationPerson.setRelation(member.getRelation()); + declarationPerson.setTudEligible(isTudEligible(familyMember, movementFile).getTudEligible()); + declarationPerson.setTudEligibleReason(isTudEligible(familyMember, movementFile).getTudNoEligibilityReason()); + return declarationPerson; + }).collect(Collectors.toList()); + } + + public DeclarationModel getDeclaration(Long movementFileId) { + DeclarationJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(DeclarationJpaEntity.class, DeclarationJpaRepository.class); + DeclarationJpaEntity declaration = repo.getByMovementFileId(movementFileId); + return getBeanMapper().map(declaration, DeclarationModel.class); + } + + public DeclarationModel getDeclarationById(Long declarationId) { + + return read(declarationId); + } + + public DeclarationModel updateDeclaration(DeclarationModel model) { + updateBankAccount(model); + activeCeiling(model); + updateRequestFromDeclaration(model); + + model.setEnable(Boolean.TRUE); + + if (DeclarationState.INITIAL.equals(model.getState())) { + // This is when the user saves the Declaration for the first time. + // We set the USER_CREATED_AT column + model.setUserCreatedAt(LocalDateTime.now()); + } else { + // This is when the user updates the Declaration. + // We set the USER_UPDATED_AT column + model.setUserUpdatedAt(LocalDateTime.now()); + } + + // In any case, the state goes to CREATED (it could be already CREATED) + model.setState(DeclarationState.CREATED); + + //first deletes the attachments from FileManager + //deleteRemovedAttachmentsFromFileManager(model); //don't need to remove from file manager + //then make a cleanup in model, removes the files that came without fileName (those files are removed from Front-end) + DeclarationModel cleanedModel = deleteRemovedAttachmentFromModel(model); + clearAttachmentsAndRemarksWhenCancelClaim(cleanedModel); + + //persist the new attachments + Set attachmentsToPersist = getAttachmentsToPersist(cleanedModel); + attachmentsToPersist.forEach(this.fileManager::persist); + + DeclarationModel updated = this.update(cleanedModel); + + TudRequestJpaServiceProvider tudRequestService = (TudRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TudRequestModel.class); + tudRequestService.createOrUpdateRequest(updated); + + //creates the installation request + InstallationRequestJpaServiceProvider installationRequestService = (InstallationRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + InstallationRequestModel.class); + installationRequestService.createInstallation(updated); + + //send the email if there is at least one request created for the declaration and email was not sent yet + RequestJpaServiceProvider requestJpaServiceProvider = (RequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RequestModel.class); + List requests = requestJpaServiceProvider.getRequests(model.getId()); + if (requests.size() > 0 && !isAlreadySentCreateRequestEmailNotification(model.getMovementFileId())) { + sendEmailNotification(model.getMovementFileId()); + } + + //send the email if EIS is set up and enable + MovementFileJpaServiceProvider movementFileJpaService = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(MovementFileModel.class); + MovementFileModel mfModel = movementFileJpaService.read(model.getMovementFileId()); + if (isAlreadySentCreateRequestEmailNotification(model.getMovementFileId()) && entitlementTypeJpaServiceProvider.checkEISCeillingNotificationNeeded(mfModel)) { + emailEdmsServiceProvider.notifyEISAmountsFilled(mfModel); + } + + return updated; + } + + private void activeCeiling(DeclarationModel declarationModel) { + + List entitlementTypeModels = entitlementTypeJpaServiceProvider.getEntitlementsTypeList(declarationModel.getMovementFileId()); + MovementFileModel movementFileModel = movementFileJpaServiceProvider.read(declarationModel.getMovementFileId()); + + entitlementTypeModels.stream() + .filter(movementFile -> movementFile.getEntitlementTypeCat().getCode().equals(EntitlementTypeCatCode.REM)) + .map(EntitlementTypeModel::getEntitlementMaxList).flatMap(Collection::parallelStream) + .filter(entitlementMax -> entitlementMax.getEntitlementMaxCat().getCode().equals(EntitlementMaxCatCode.STORAGE)) + .forEach(entitlementMaxModel -> { + entitlementMaxModel.setCity(declarationModel.getCityForEIS()); + entitlementMaxModel.setCountry(declarationModel.getCountryForEIS()); + entitlementMaxModel.setEnable(declarationModel.getEntryIntoStorage()); + Money suggestedAmount = getSuggestedAmount(entitlementMaxModel, movementFileModel); + entitlementMaxModel.setMaxValue(suggestedAmount); + entitlementMaxJpaServiceProvider.update(entitlementMaxModel); + } + ); + + } + + private Money getSuggestedAmount(EntitlementMaxModel entitlementMax, MovementFileModel movementFile) { + if (entitlementMax.getEntitlementMaxCat().getSuggestion()) { + EntitlementMaxDefaultJpaServiceProvider entitlementMaxDefaultService = + (EntitlementMaxDefaultJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(EntitlementMaxDefaultModel.class); + getLogger().info("Calling Suggested Amount for Storage in Declaration"); + EntitlementMaxDefaultModel model = entitlementMaxDefaultService.getEntitlementMaxDefault(movementFile, entitlementMax); + + if (model != null) { + return model.getAmount(); + } + } + + return null; + } + private boolean isAlreadySentCreateRequestEmailNotification(Long movementFileId) { + NotificationMFJpaServiceProvider notificationMFJpaServiceProvider = this.dataServiceProviderRegistry.getDataServiceProviderFor( + NotificationMFModel.class, NotificationMFJpaServiceProvider.class); + + return notificationMFJpaServiceProvider.getNotifications(movementFileId).stream().anyMatch(notification -> + NotificationTemplateType.ENTITLEMENTS_REQUEST.name().equals(notification.getNotificationTemplate().getNotificationTemplateType()) && + NotificationTemplateCode.CREATE_REQUEST == notification.getNotificationTemplateCode()); + } + + private void updateBankAccount(DeclarationModel model) { + model.setPersonBankInfo(getBeanMapper().map(getById(model), PersonBankInfoModel.class)); + this.update(model); + } + + private PersonBankInfoJpaEntity getById(DeclarationModel model) { + PersonBankInfoJpaRepository personBankInfoJpaRepo = getEntityRepositoryRegistry() + .getReaderRepositoryFor(PersonBankInfoJpaEntity.class, PersonBankInfoJpaRepository.class); + return personBankInfoJpaRepo.findById(model.getPersonBankInfo().getId()); + } + + /** + * Method used to enable/disable the declaration based on the TUD amount and REM ceiling set and MF state. + * Enabling the declaration should be done based on following conditions: + * 1. MF state is CONFIRM + * 2. TUD and REM have all the amounts set. (we don't take in consideration if are disabled) + * 3. declaration is in initial state (is not yet saved by the Staff member) + * + * @param mfModel - the movement file + */ + public void enableOrDisableDeclarationBasedOnFilledAllowances(MovementFileModel mfModel) { + DeclarationModel declaration = this.getDeclaration(mfModel.getId()); + EntitlementTypeJpaServiceProvider entitlementsService = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + EntitlementTypeModel.class); + + if (declaration != null && declaration.getState() == DeclarationState.INITIAL) { + boolean canEnable = entitlementsService.checkAmountEnableDeclarationPossible(mfModel); + declaration.setEnable(canEnable); + this.update(declaration); + } + } + + private Set getAttachmentsToPersist(DeclarationModel model) { + Set result = new HashSet<>(); + + if (!CollectionUtils.isEmpty(model.getDeclarationPersons())) { + for (DeclarationPersonModel person : model.getDeclarationPersons()) { + if (!CollectionUtils.isEmpty(person.getAttachments())) { + person.getAttachments().stream() + .filter(e -> e.getId() == null) + .forEach(e -> result.add(e.getFileUid())); + } + } + } + + return result; + } + + private DeclarationModel clearAttachmentsAndRemarksWhenCancelClaim(DeclarationModel cleanedModel) { + cleanedModel.getDeclarationPersons().forEach(declPers -> { + if (!declPers.getClaim() || !declPers.getDeclared()) { + declPers.setRemarks(null); + declPers.setAttachments(null); + } + }); + + return cleanedModel; + } + + private DeclarationModel deleteRemovedAttachmentFromModel(DeclarationModel model) { + model.getDeclarationPersons().forEach(declPers -> { + if (!CollectionUtils.isEmpty(declPers.getAttachments())) { + declPers.setAttachments(declPers.getAttachments().stream().filter(att -> att.getFileName() != null).collect(Collectors.toList())); + } + }); + + return model; + } + + /** + * Update only the persons in the Declaration, taking into account the TUD eligibility + * (see method mergePersonsUsingEligibility). + * + * @param movementFileId s + * + * @return s + */ + public List updatePersonsInDeclaration(Long movementFileId) { + + MovementFileJpaServiceProvider movementFileJpaService = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(MovementFileModel.class); + + MovementFileModel mfModel = movementFileJpaService.read(movementFileId); + + DeclarationModel declaration = getDeclaration(movementFileId); + + List oldPersons = declaration.getDeclarationPersons(); + List newPersons = generatePersons(mfModel.getJobHolder().getPerId(), declaration, mfModel); + List mergedPersons = mergePersonsUsingEligibility(oldPersons, newPersons); + + declaration.setDeclarationPersons(mergedPersons); + this.update(declaration); + + // Return updated list of Declaration persons + return mergedPersons; + } + + /** + * Merge Declaration persons (relatives). + * + * If the person in the new list was already in the old list, + * and the eligibility is the same, then keep the person as it was. + * + * It the person remains, but the eligibility has changed, then reset the fields and keep the person. + * + * If the person in the new list was not in the old list, then add it. + * + * @param oldPersons + * @param newPersons + * + * @return + */ + private List mergePersonsUsingEligibility(List oldPersons, List newPersons) { + + List merged = new ArrayList(); + newPersons.forEach(p -> { + DeclarationPersonModel person = getPerson(oldPersons, p.getRelative().getId()); + if (person != null && p.getTudEligible().equals(person.getTudEligible())) { + // If the person in the new list was already in the old list, + // and the eligibility is the same, then keep it as it was: + person.setTudEligibleReason(p.getTudEligibleReason()); + merged.add(person); + } else { + if (person != null) { + // If the person in the new list was already in the old list, + // but the eligibility has changed, set the new values in the person and keep it: + person.setTudEligible(p.getTudEligible()); + person.setTudEligibleReason(p.getTudEligibleReason()); + person.setAttachments(new ArrayList()); + person.setClaim(false); + person.setRemarks(null); + + merged.add(person); + } else { + // If the person in the new list was not in the old list, + // then add the new person: + merged.add(p); + } + } + }); + return merged; + } + + /** + * Get relative person from the list, by personId, or null if not found. + * + * @param persons + * @param personId + * + * @return + */ + private DeclarationPersonModel getPerson(List persons, Long personId) { + return persons.stream().filter(person -> personId.equals(person.getRelative().getId())).findFirst().orElse(null); + } + + /** + * Check the TUD eligibility of a family member: + * the age of family member bigger or equal 2 age on by 31st December of the year of assignment (startDate: ROTATION and SECONDMENT and endDate: EOC) + * + * @param familyMember a + * @param movementFile a + * + * @return a + */ + public TudEligibilityModel isTudEligible(PersonModel familyMember, MovementFileModel movementFile) { + try { + if (isNewRecruiter(movementFile) || isNonFamilyPosting(movementFile)) { + // New recruit or coming from NON FAMILY POSTING job + return isTudEligibleNewOrNonFamily(familyMember, movementFile); + } else { + // Normal staff member + return isTudEligibleNormalStaff(familyMember, movementFile); + } + } catch (Exception e) { + getLogger().error("TUD eligibility {}", e.getMessage()); + return new TudEligibilityModel(false, DEFAULT_TUD_NO_ELIGIBILITY_REASON); + } + } + + private boolean isNonFamilyPosting(MovementFileModel movementFile) { + return JobFamilyPostingCode.NON_FAMILY.equals(movementFile.getJobFrom().getFamilyPostingTypeCategory()); + } + + private boolean isNewRecruiter(MovementFileModel movementFile) { + return movementFile.getJobFrom() == null; + } + + private TudEligibilityModel isTudEligibleNormalStaff(PersonModel familyMember, MovementFileModel movementFile) { + + long mainPersonId = movementFile.getJobHolder().getPerId(); + + // Check that the relative is one of the relatives of the person: + Optional optFamilyMember = familyMemberJpaRepository.findAllByPerId(mainPersonId).stream().filter( + item -> item.getRelPerId().equals(familyMember.getId())).findAny(); + + // Relative not found => Not eligible (Is the person a Family Member in Sysper? ) + if (isNotRegisteredInSysper(optFamilyMember)) { + return new TudEligibilityModel(false, DEFAULT_TUD_NO_ELIGIBILITY_REASON); + } + + // Is the current address of the FM the same as the current address of the SM ? + // The check is only performed until the Staff Member submits his declaration. After that, the results is frozen. + // TODO: "The check is only performed until..." + TudEligibilityModel addressValidationResult = sameAddress(mainPersonId, familyMember.getId()); + if (!addressValidationResult.getTudEligible()) { + return addressValidationResult; + } + + // Check remaining conditions: + return isTudEligibleCommonConditions(optFamilyMember.get(), movementFile); + } + + private boolean isNotRegisteredInSysper(Optional optFamilyMember) { + return !optFamilyMember.isPresent(); + } + + private TudEligibilityModel isTudEligibleNewOrNonFamily(PersonModel familyMember, MovementFileModel movementFile) { + + long mainPersonId = movementFile.getJobHolder().getPerId(); + + // Check that the relative is one of the relatives of the person: + Optional optFamilyMember = familyMemberJpaRepository.findAllByPerId(mainPersonId).stream().filter( + item -> item.getRelPerId().equals(familyMember.getId())).findAny(); + + // Relative not found => Not eligible + if (isNotRegisteredInSysper(optFamilyMember)) { + return new TudEligibilityModel(false, DEFAULT_TUD_NO_ELIGIBILITY_REASON); + } + + TudEligibilityModel addressValidationResult = sameAddressDestinationCountry(movementFile.getCountryTo(), familyMember.getId()); + if (!addressValidationResult.getTudEligible()) { + return addressValidationResult; + } + + return isTudEligibleCommonConditions(optFamilyMember.get(), movementFile); + } + + /** + * Additional conditions to be fulfilled in any case + * + * @param familyMember + * @param movementFile + * + * @return + */ + private TudEligibilityModel isTudEligibleCommonConditions(FamilyMemberJpaEntity familyMember, MovementFileModel movementFile) { + + String relation = familyMember.getRelation(); + + // Spouse or assimilated: Yes eligible + if (REL_SPOUSE.equals(relation) || REL_ASSIMILATED_PARTNER.equals(relation)) { + return new TudEligibilityModel(true, DEFAULT_TUD_NO_ELIGIBILITY_REASON); + } + //Not assimilated partner + if (REL_NOT_ASSIMILATED_PARTNER.equals(relation) ) { + return new TudEligibilityModel(false, NOT_ASSIMILATED_PARTNER_OR_NOT_CHILD_REASON); + } + + boolean some_type_of_child = REL_CHILD.equals(relation) + || REL_CHILD_BIOLOGICAL.equals(relation) + || REL_CHILD_UNDER_GUARD.equals(relation) + || REL_CHILD_SPOUSES.equals(relation) + || REL_CHILD_ADOPTED.equals(relation); + + // Not a child => Not eligible + if (!some_type_of_child) { + return new TudEligibilityModel(false, NOT_ASSIMILATED_PARTNER_OR_NOT_CHILD_REASON); + } + + // Child not dependent => Not eligible + if (!familyMember.getChildAllowanceGranted()) { + return new TudEligibilityModel(false, "Your child is not registered as your dependent in Sysper."); + } + + // Final condition: 2 years + + int year; + if (movementFile.getStartDate() == null) { + year = movementFile.getEstimatedEndDate().getYear(); + } else { + year = movementFile.getStartDate().getYear(); + } + + LocalDate lastDayOfAssignationYear = LocalDate.of(year, Month.DECEMBER, 31); + boolean isMoreThatTwoYears = ChronoUnit.YEARS.between(familyMember.getRelBirthDate(), lastDayOfAssignationYear) >= MINIMUM_YEARS_FOR_TUD_ELIGIBILITY; + String reason = DEFAULT_TUD_NO_ELIGIBILITY_REASON; + if (!isMoreThatTwoYears) { + reason = "This person is aged under 2 during the entire year therefore is not eligible for TUD allowance"; + } + return new TudEligibilityModel(isMoreThatTwoYears, reason); + } + + /** + * Utility method to check same address of both persons by PerId. + * TODO: When the table 'MV_PERSON_ADDRESS' has an ID to uniquely identify the physical address, we'll use it. + * For the moment we are comparing the main fields of the address (country, city, etc.) + * + * @param countryModel d + * @param familyMemberId d + * + * @return + */ + private TudEligibilityModel sameAddressDestinationCountry(CountryModel countryModel, long familyMemberId) { + List familyMemberAddresses = personAddressJpaRepository.findAllByPerIdAndTadrCd(familyMemberId, PERSONAL_PRIVATE_ADDRESS_CODE); + if (countryModel == null || countryModel.getCode().isEmpty() || familyMemberAddresses.isEmpty()) { + return new TudEligibilityModel(false, "Your dependant is not entitled to the take-up-duty flat rate because he already lives in the following place of assignment."); + } + PersonAddressJpaEntity addrB = familyMemberAddresses.get(0); + // Compare some fields: country + // If they live in the same country they should not be eligible + if ((sameString(countryModel.getCode(), addrB.getCountryCode()))) + return new TudEligibilityModel(false, "Your dependant is not entitled to the take-up-duty flat rate because he already lives in the following place of assignment."); + return new TudEligibilityModel(true, DEFAULT_TUD_NO_ELIGIBILITY_REASON); + } + + private TudEligibilityModel sameAddress(long mainPersonId, long familyMemberId) { + + List staffAddresses = personAddressJpaRepository.findAllByPerIdAndTadrCd(mainPersonId, PERSONAL_PRIVATE_ADDRESS_CODE); + List familyMemberAddresses = personAddressJpaRepository.findAllByPerIdAndTadrCd(familyMemberId, PERSONAL_PRIVATE_ADDRESS_CODE); + if (staffAddresses.isEmpty() || familyMemberAddresses.isEmpty()) { + return new TudEligibilityModel(false, "This person does not have a registered personal private address. Please complete it correctly in Sysper and refresh the information here."); + } + + PersonAddressJpaEntity addrA = staffAddresses.get(0); + PersonAddressJpaEntity addrB = familyMemberAddresses.get(0); + + // Compare some fields: country, city + if (!(sameString(addrA.getCountryCode(), addrB.getCountryCode()) + && sameString(addrA.getCityName(), addrB.getCityName()))) + return new TudEligibilityModel(false, "This person does not currently live in your households, to be entitled to the Take-up-Duty flat rate your addresses should be the same"); + return new TudEligibilityModel(true, DEFAULT_TUD_NO_ELIGIBILITY_REASON); + } + + /** + * Utility method to compare strings with a "relaxed" approach. + * + * @param a + * @param b + * + * @return + */ + private boolean sameString(String a, String b) { + + // Both null ok + if (a == null && b == null) { + return true; + } + // Only one null => False + if (a == null || b == null) { + return false; + } + // Ignore case and clean white spaces at start and end + return a.trim().equalsIgnoreCase(b.trim()); + } + + private void sendEmailNotification(Long movementFileId) { + MovementFileJpaServiceProvider movementFileJpaService = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(MovementFileModel.class); + MovementFileModel mfModel = movementFileJpaService.read(movementFileId); + if (mfModel == null) { + throw new ServerInternalRuntimeException(ERightsExceptionCode.ER001); + } + emailEdmsServiceProvider.notifyUserAboutRequestCreated(mfModel); + } + + private boolean checkIfChangesInDeclarationAllowedTotalRem(DeclarationModel submittedDeclaration) { + DeclarationModel previousDeclaration = getDeclaration(submittedDeclaration.getMovementFileId()); + TotalRemRequestModel request = totalRemRequestJpaServiceProvider.getTotalRemRequest(submittedDeclaration.getId()); + if (request != null && (request.getState() != TotalRemRequestState.DRAFT || request.getPaymentRequest() != null)) { + if (!submittedDeclaration.getRemovalRequestType().equals(previousDeclaration.getRemovalRequestType())) { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER015, "You have already submitted a removal request. If you wish to change your removal options, please make sure your current request is in draft. If it has not been approved yet, you can cancel it. Otherwise, contact RM.BS.4 on this matter. "); + } + //We avoid NullPinterException from Hod Option + if (submittedDeclaration.getHodOption() != null) { + if (!submittedDeclaration.getHodOption().equals(previousDeclaration.getHodOption())) { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER015, "You have already submitted a removal request. If you wish to change your HOD options, please make sure your current request is in draft. If it has not been approved yet, you can cancel it. Otherwise, contact RM.BS.4 on this matter. "); + } + } + if (previousDeclaration.getHodOption() != null) { + if (!previousDeclaration.getHodOption().equals(submittedDeclaration.getHodOption())) { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER015, "You have already submitted a removal request. If you wish to change your HOD options, please make sure your current request is in draft. If it has not been approved yet, you can cancel it. Otherwise, contact RM.BS.4 on this matter. "); + } + } + if (submittedDeclaration.getEntryIntoStorage() != null && !submittedDeclaration.getEntryIntoStorage().equals(previousDeclaration.getEntryIntoStorage())) { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER015, "You have already submitted a removal request. If you wish to change your Entry into Storage option, please make sure your current request is in draft. If it has not been approved yet, you can cancel it. Otherwise, contact RM.BS.4 on this matter. "); + } + } + + return true; + } + + private boolean checkIfChangesInDeclarationAllowedAdvance(DeclarationModel submittedDeclaration) { + DeclarationModel previousDeclaration = getDeclaration(submittedDeclaration.getMovementFileId()); + AdvanceRequestModel request = advanceRequestJpaServiceProvider.getAdvancedRequest(submittedDeclaration.getId()); + if (request != null && (request.getState() != AdvanceRequestState.DRAFT || request.getPaymentRequest() != null)) { + if (!submittedDeclaration.getRemovalRequestType().equals(previousDeclaration.getRemovalRequestType())) { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER015, "You have already submitted a removal request. If you wish to change your removal options, please make sure your current request is in draft. If it has not been approved yet, you can cancel it. Otherwise, contact RM.BS.4 on this matter. "); + } + if (submittedDeclaration.getHodOption() != null && previousDeclaration.getHodOption() != null && !submittedDeclaration.getHodOption().equals(previousDeclaration.getHodOption())) { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER015, "You have already submitted a removal request. If you wish to change your HOD options, please make sure your current request is in draft. If it has not been approved yet, you can cancel it. Otherwise, contact RM.BS.4 on this matter. "); + } + if (submittedDeclaration.getEntryIntoStorage() != null && previousDeclaration.getEntryIntoStorage() != null && !submittedDeclaration.getEntryIntoStorage().equals(previousDeclaration.getEntryIntoStorage())) { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER015, "You have already submitted a removal request. If you wish to change your Entry into Storage option, please make sure your current request is in draft. If it has not been approved yet, you can cancel it. Otherwise, contact RM.BS.4 on this matter. "); + } + } + + return true; + } + + private void updateRequestFromDeclaration(DeclarationModel submittedDeclaration) { + + DeclarationModel currentDeclaration = getDeclarationById(submittedDeclaration.getId()); + + if (submittedDeclaration.getRemovalRequestType() == RemovalRequestType.ADVANCE) { // + checkIfChangesInDeclarationAllowedAdvance(submittedDeclaration); + if (currentDeclaration.getHodOption() != null && !currentDeclaration.getHodOption().equals(submittedDeclaration.getHodOption())) { + //Delete ADVANCE request - when changing hod option + advanceRequestJpaServiceProvider.deleteRequest(submittedDeclaration); + } + //Delete TOTAL REIMBURSEMENT request + totalRemRequestJpaServiceProvider.deleteRequest(submittedDeclaration); + //create ADVANCE request + AdvanceRequestModel advanceRequestModel = advanceRequestJpaServiceProvider.createRequest(submittedDeclaration); + advanceRequestJpaServiceProvider.updateAdvanceRequestCountryCityEIS(submittedDeclaration, advanceRequestModel); + + } else if (submittedDeclaration.getRemovalRequestType() == RemovalRequestType.REIMBURSEMENT) { + checkIfChangesInDeclarationAllowedTotalRem(submittedDeclaration); + if (currentDeclaration.getHodOption() != null && !currentDeclaration.getHodOption().equals(submittedDeclaration.getHodOption())) { + //Delete TOTAL REIMBURSEMENT request - when changing hod option + totalRemRequestJpaServiceProvider.deleteRequest(submittedDeclaration); + } + //Delete ADVANCE request + advanceRequestJpaServiceProvider.deleteRequest(submittedDeclaration); + // Create REIMBURSEMENT request + + TotalRemRequestModel totalRemRequestModel = totalRemRequestJpaServiceProvider.createRequest(submittedDeclaration); + totalRemRequestJpaServiceProvider.updateTotalRemRequestCountryCityEIS(submittedDeclaration, totalRemRequestModel); //update ceiling request when EIS is N , so we remove the ceiling + + } else if (submittedDeclaration.getRemovalRequestType() == RemovalRequestType.NO_REMOVAL) { + //Delete any other request + //Delete ADVANCE request + advanceRequestJpaServiceProvider.deleteRequest(submittedDeclaration); + //Delete TOTAL REIMBURSEMENT request + totalRemRequestJpaServiceProvider.deleteRequest(submittedDeclaration); + + } + } + + public BigDecimal calculateAirfrightCeilingForDeclaration(DeclarationModel declarationModel) { + + //Calculate ceiling for family meembers + List familyMembersList = declarationModel.getDeclarationPersons(); + BigDecimal calculatedVolumCeiling = appParameterService.getFirstAppParametersByTypeAndKeyNumber(AppParamType.ADVANCE_REMOVAL, "MAXIMUM_VOLUME_AIRFREIGHT"); + for (DeclarationPersonModel familyMember : familyMembersList) { + if (REL_SPOUSE.equals(familyMember.getRelation()) || REL_ASSIMILATED_PARTNER.equals(familyMember.getRelation())) { + BigDecimal valuetOadd = appParameterService.getFirstAppParametersByTypeAndKeyNumber(AppParamType.ADVANCE_REMOVAL, "PLUS_PER_SPOUSE_AIRFREIGHT"); + calculatedVolumCeiling = calculatedVolumCeiling.add(valuetOadd); + } else if (!REL_EX_SPOUSE.equals(familyMember.getRelation())) { + BigDecimal valuetOadd = appParameterService.getFirstAppParametersByTypeAndKeyNumber(AppParamType.ADVANCE_REMOVAL, "PLUS_PER_KID_AIRFREIGHT"); + calculatedVolumCeiling = calculatedVolumCeiling.add(valuetOadd); + } + } + return calculatedVolumCeiling; + } + + public boolean deleteDeclaration(MovementFileModel movementFileModel) { + DeclarationModel declarationToDelete = getDeclaration(movementFileModel.getId()); + if(declarationToDelete != null){ + this.delete(declarationToDelete.getId()); + } + + return true; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/declaration/DeclarationPersonJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/declaration/DeclarationPersonJpaServiceProvider.java new file mode 100644 index 0000000..cab9f75 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/declaration/DeclarationPersonJpaServiceProvider.java @@ -0,0 +1,44 @@ +package eu.europa.eeas.erights.common.service.data.provider.declaration; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.DeclarationPersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.DeclarationPersonJpaRepository; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationPersonModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.ResettlementRequestModel; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +/** + * @author itadephe + */ +@Service +@Transactional +public class DeclarationPersonJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, EntityCreator, + EntityUpdater, EntityDeleter { + + @Override + public Class getModelType() { + return DeclarationPersonModel.class; + } + + @Override + public Class getEntityType() { + return DeclarationPersonJpaEntity.class; + } + + public void updateDeclarationPersons(ResettlementRequestModel request) { + DeclarationPersonJpaRepository declarationPersonJpaRepository = getEntityRepositoryRegistry().getReaderRepositoryFor( + DeclarationPersonJpaEntity.class, DeclarationPersonJpaRepository.class); + request.getDeclaration().getDeclarationPersons().forEach(person -> { + DeclarationPersonModel declaredPersonFromDB = this.read(person.getId()); + if (!declaredPersonFromDB.getJoiningResettlement().equals(person.getJoiningResettlement())) { + declarationPersonJpaRepository.updateJoiningResettlement(person.getJoiningResettlement(), + person.getId()); + } + }); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/declaration/FamilyMemberJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/declaration/FamilyMemberJpaServiceProvider.java new file mode 100644 index 0000000..172c8f9 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/declaration/FamilyMemberJpaServiceProvider.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.service.data.provider.declaration; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.FamilyMemberJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.FamilyMemberJpaRepository; +import eu.europa.eeas.erights.common.service.model.declaration.FamilyMemberModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; +import java.util.Optional; + +@Service +@Transactional +public class FamilyMemberJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader { + + @Override + public Class getModelType() { + return FamilyMemberModel.class; + } + + @Override + public Class getEntityType() { + return FamilyMemberJpaEntity.class; + } + + public List getFamilyMembers(Long staffMemberId) { + FamilyMemberJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(FamilyMemberJpaEntity.class, FamilyMemberJpaRepository.class); + + List familyMembersEntities = repo.findAllByPerId(staffMemberId); + List familyMemberModels = getBeanMapper().mapAsList(familyMembersEntities, FamilyMemberModel.class); + + return familyMemberModels; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/declaration/MVPersonAccommodationJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/declaration/MVPersonAccommodationJpaServiceProvider.java new file mode 100644 index 0000000..1107f9f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/declaration/MVPersonAccommodationJpaServiceProvider.java @@ -0,0 +1,65 @@ +package eu.europa.eeas.erights.common.service.data.provider.declaration; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; + +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.MVPersonAccommodationJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.MVPersonAccommodationJpaRepository; +import eu.europa.eeas.erights.common.service.model.declaration.MVPersonAccommodationModel; +import java.util.List; +import javax.transaction.Transactional; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +/** + * @author ienaccat + */ +@Service +@Transactional +@RequiredArgsConstructor +public class MVPersonAccommodationJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader { + + private final MVPersonAccommodationJpaRepository repository; + + @Override + public Class getModelType() { + return MVPersonAccommodationModel.class; + } + + @Override + public Class getEntityType() { + return MVPersonAccommodationJpaEntity.class; + } + + public List findPersonsBy(Long perId, String firstName, String lastName, String orgName) { + + List persons = repository.findByFields(perId, firstName, lastName, orgName); + + return getBeanMapper().mapAsList(persons, MVPersonAccommodationModel.class); + } + + public MVPersonAccommodationModel findById(Long id) { + + MVPersonAccommodationJpaEntity person = repository.findById(id); + return getBeanMapper().map(person, MVPersonAccommodationModel.class); + } + + public MVPersonAccommodationModel findByPrivateEmail(String email) { + + MVPersonAccommodationJpaEntity person = repository.findByPrivateEmail(email).orElse(null); + return getBeanMapper().map(person, MVPersonAccommodationModel.class); + } + + /** + * Find all perIds of the Staff eligible for Accommodation Declaration and + * not having bank accounts neither failed + * @param numRows + * @param maxRetries + * @return + */ + public List findAllNotHavingBankAccountsAndNotFailed(int numRows, int maxRetries) { + return repository.findAllNotHavingBankAccountsAndNotFailed(numRows, maxRetries); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/declaration/PersonBankInfoJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/declaration/PersonBankInfoJpaServiceProvider.java new file mode 100644 index 0000000..14e887a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/declaration/PersonBankInfoJpaServiceProvider.java @@ -0,0 +1,54 @@ +package eu.europa.eeas.erights.common.service.data.provider.declaration; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.DeclarationJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.PersonBankInfoJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.DeclarationJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.PersonBankInfoJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.RequestJpaRepository; +import eu.europa.eeas.erights.common.service.model.declaration.PersonBankInfoModel; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Transactional +public class PersonBankInfoJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, EntityCreator, + EntityUpdater, EntityDeleter { + + @Override + public Class getModelType() { + return PersonBankInfoModel.class; + } + + @Override + public Class getEntityType() { + return PersonBankInfoJpaEntity.class; + } + + public List getBankInfoForPerson(Long personId) { + PersonBankInfoJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(PersonBankInfoJpaEntity.class, PersonBankInfoJpaRepository.class); + return getBeanMapper().mapAsList(repo.findAllByPerId(personId), PersonBankInfoModel.class); + } + + public boolean isBankAccountAssigned(Long id) { + DeclarationJpaRepository declRepo = getEntityRepositoryRegistry().getReaderRepositoryFor(DeclarationJpaEntity.class, DeclarationJpaRepository.class); + RequestJpaRepository reqRepo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + + int bankAccountOccurrences = declRepo.countByPersonBankInfoId(id) + reqRepo.countByPersonBankInfoId(id); + + return bankAccountOccurrences > 0; + } + + + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/document/MovementDocSectionJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/document/MovementDocSectionJpaServiceProvider.java new file mode 100644 index 0000000..b200613 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/document/MovementDocSectionJpaServiceProvider.java @@ -0,0 +1,83 @@ +package eu.europa.eeas.erights.common.service.data.provider.document; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.ananke.tools.filemanagement.FileManager; +import eu.europa.eeas.erights.common.data.jpa.entity.document.MovementDocSectionJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.document.MovementDocSectionJpaRepository; +import eu.europa.eeas.erights.common.service.model.document.MovementDocSectionModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +@Service +@Transactional +public class MovementDocSectionJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, + EntityCreator, + EntityUpdater { + + @Autowired + private FileManager fileManager; + + @Override + public Class getModelType() { + return MovementDocSectionModel.class; + } + + @Override + public Class getEntityType() { + return MovementDocSectionJpaEntity.class; + } + + public List getMovementDocSections() { + MovementDocSectionJpaRepository repo = getEntityRepositoryRegistry() + .getReaderRepositoryFor(MovementDocSectionJpaEntity.class, MovementDocSectionJpaRepository.class); + List docSections = repo.findByOrderBySortOrderAsc(); + return getBeanMapper().mapAsList(docSections, MovementDocSectionModel.class); + } + + public MovementDocSectionModel updateMovementDocSection(MovementDocSectionModel docSectionModel) { + deleteRemovedAttachmentFromModel(docSectionModel); + + docSectionModel.getMovementDocs().forEach(doc -> { + if (doc.getMovementDocAttachment() != null) { + doc.getMovementDocAttachment().setMovementDoc(doc); + } + }); + + //persist the new attachments + Set attachmentsToPersist = getAttachmentsToPersist(docSectionModel); + attachmentsToPersist.stream().forEach(this.fileManager::persist); + + return this.update(docSectionModel); + } + + private MovementDocSectionModel deleteRemovedAttachmentFromModel(MovementDocSectionModel model) { + model.getMovementDocs().forEach(movDoc -> { + if (movDoc.getMovementDocAttachment() != null && movDoc.getMovementDocAttachment().getFileName() == null) { + movDoc.setMovementDocAttachment(null); + } + }); + + return model; + } + + private Set getAttachmentsToPersist(MovementDocSectionModel docSectionModels) { + Set result = new HashSet<>(); + + docSectionModels.getMovementDocs().stream() + .filter(e -> e.getMovementDocAttachment() != null && e.getMovementDocAttachment().getId() == null) + .forEach(e -> result.add(e.getMovementDocAttachment().getFileUid())); + + return result; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementMaxDefaultJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementMaxDefaultJpaServiceProvider.java new file mode 100644 index 0000000..30f660d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementMaxDefaultJpaServiceProvider.java @@ -0,0 +1,467 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.boot.configuration.data.ERightsRootConfiguration; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxDefaultJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.RateMissingJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.tud.RatesTUDJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.CityJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.IataAirportJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementMaxDefaultJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementMaxJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.RateMissingJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.GosselinRateNotFound; +import eu.europa.eeas.erights.common.exceptionhandling.GosselinRateServerError; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.AdvanceRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.TotalRemRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementContextType; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxDefaultModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.AdvanceRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TotalRemRequestModel; +import eu.europa.eeas.erights.common.service.provider.email.NotificationSenderProvider; +import eu.europa.eeas.erights.common.service.provider.gosselin.RatesWSService; +import eu.europa.eeas.erights.common.service.provider.tud.TUDRatesWSServiceProvider; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementsCalcHelper; +import org.javamoney.moneta.Money; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +@Service +@Transactional +public class EntitlementMaxDefaultJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, + EntityCreator, + EntityUpdater { + + public static final String GOSSELIN_SOURCE_DATA = "GOSSELIN"; + public static final String SKYSCANNER_SRC = "SKYSCANNER"; + public static final String SKYSCANNER_SRC_CAPPED = "SKYSCANNER_CAPPED"; + public static final String HR_SOURCE_DATA = "HR"; + public static final int ENTRY_INTO_STORAGE_CAT_ID = 3; + public static final long ENTITLEMENT_MAX_CAT_ID_STAFF = 6L; + public static final long ENTITLEMENT_MAX_CAT_ID_DEPENDENT = 10L; + + @Autowired + private RatesWSService ratesWSService; + + @Autowired + private RateMissingJpaRepository rateMissingJpaRepository; + + @Autowired + private EntitlementMaxJpaRepository entitlementMaxJpaRepository; + + @Autowired + private ERightsRootConfiguration eRightsRootConfiguration; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + private TUDRatesWSServiceProvider tudRatesWSServiceProvider; + + @Autowired + private CityJpaRepository cityJpaRepository; + + @Autowired + private IataAirportJpaRepository iataAirportJpaRepository; + + @Autowired + private NotificationSenderProvider notificationSenderProvider; + + @Override + public Class getModelType() { + return EntitlementMaxDefaultModel.class; + } + + @Override + public Class getEntityType() { + return EntitlementMaxDefaultJpaEntity.class; + } + + + + public EntitlementMaxDefaultModel getEntitlementMaxDefault(MovementFileModel movementFile, EntitlementMaxModel entitlementMax) { + + LocalDate startInterval = EntitlementsCalcHelper.getStartInterval(movementFile); + if (isTud(entitlementMax)) { + startInterval = EntitlementsCalcHelper.getStartIntervalTud(movementFile); + } + + if (movementFile.getCityTo() == null || movementFile.getCityFrom() == null || movementFile.getCityFrom().getCode() == null || startInterval == null || + (entitlementMax.getEntitlementMaxCat().getCode().equals(EntitlementMaxCatCode.STORAGE) && entitlementMax.getCity() == null) + || isCrisis(movementFile)) { + return null; + } + + EntitlementMaxDefaultJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(EntitlementMaxDefaultJpaEntity.class, EntitlementMaxDefaultJpaRepository.class); + String cityToCode= movementFile.getCityTo().getCode(); + if (entitlementMax.getEntitlementMaxCat().getCode().equals(EntitlementMaxCatCode.STORAGE) && entitlementMax.getCity() != null) { + cityToCode = entitlementMax.getCity().getCode(); + } + + List entitlementMaxList = new ArrayList<>(); + + if (entitlementMax.getMaxKg() != null) { + entitlementMaxList = repo + .findByCityCodeFromAndCityCodeToAndStartDateAndEntitlementMaxCatIdAndLatestAndKg(movementFile.getCityFrom().getCode(), + cityToCode, startInterval, entitlementMax.getEntitlementMaxCat().getId(), Boolean.TRUE, entitlementMax.getMaxKg()); + } else { + if (isTud(entitlementMax)) { + if (LocalDate.now().isBefore(tudRatesWSServiceProvider.getFlightDate(movementFile).minusMonths(2))) { + entitlementMaxList = repo + .findByCityCodeFromAndCityCodeToAndStartDateAndEntitlementMaxCatIdAndLatest(entitlementMax.getIataFrom(), + entitlementMax.getIataTo(), startInterval, entitlementMax.getEntitlementMaxCat().getId(), Boolean.TRUE); + } + } else { + entitlementMaxList = repo + .findByCityCodeFromAndCityCodeToAndStartDateAndEntitlementMaxCatIdAndLatest(movementFile.getCityFrom().getCode(), + cityToCode, startInterval, entitlementMax.getEntitlementMaxCat().getId(), Boolean.TRUE); + } + + } + + if (!entitlementMaxList.isEmpty()) { + return getBeanMapper().map(entitlementMaxList.get(0), EntitlementMaxDefaultModel.class); + } else { + if(entitlementMax.getDefaultMaxVal()) { // When is set as default by HR + return null; + } + return createNewEntitlementMaxDefault(movementFile, entitlementMax, cityToCode); + } + } + + private EntitlementMaxDefaultModel createNewEntitlementMaxDefault( MovementFileModel movementFile, EntitlementMaxModel entitlementMax, String cityToCode) { + if (EntitlementMaxCatCode.TUD_STAFF_MEMBER.equals(entitlementMax.getEntitlementMaxCat().getCode()) && + tudRatesWSServiceProvider.getFlightDate(movementFile).isAfter(LocalDate.now()) && canCallSkyScanner(movementFile) + ) { + askForTudValidFareStaff(movementFile, entitlementMax); + } else if (EntitlementMaxCatCode.TUD_DEPENDENT.equals(entitlementMax.getEntitlementMaxCat().getCode()) && + tudRatesWSServiceProvider.getFlightDate(movementFile).isAfter(LocalDate.now()) && canCallSkyScanner(movementFile)) { + askForTudValidFareDependent(movementFile, entitlementMax); + } else { + if (canCallGosselin(movementFile)) { + getLogger().info("Calling to Gosselin"); + return createUsingGosselin(movementFile, entitlementMax, cityToCode); + } + } + return null; + } + + private boolean isCrisis(MovementFileModel movementFile) { + return movementFile.getMovementContext().getName().equals(MovementContextType.CRISIS.name()); + } + + private boolean canCallSkyScanner(MovementFileModel movementFile) { + return !movementFile.getMovementContext().getName().equals(MovementContextType.CRISIS.name()); + } + + private boolean canCallGosselin(MovementFileModel movementFile) { + return eRightsRootConfiguration.isGosselinActive() && !movementFile.getMovementContext().getName().equals(MovementContextType.CRISIS.name()); + } + + private void askForTudValidFareStaff(MovementFileModel movementFile, EntitlementMaxModel entitlementMax) { + if(entitlementMax.getIataFrom() != null && !entitlementMax.getIataFrom().equals(entitlementMax.getIataTo())) { + tudRatesWSServiceProvider.registerItineraryRequest(iataAirportJpaRepository.findById(entitlementMax.getIataFrom()).getCountryCode(), + entitlementMax.getIataFrom(), entitlementMax.getIataTo(), + movementFile.getId(), entitlementMax.getEntitlementMaxCat().getCode().name(), null, false, + tudRatesWSServiceProvider.getFlightDate(movementFile), + 1); + } + } + + private void askForTudValidFareDependent(MovementFileModel movementFile, EntitlementMaxModel entitlementMax) { + tudRatesWSServiceProvider.registerItineraryRequest(iataAirportJpaRepository.findById(entitlementMax.getIataFrom()).getCountryCode(), + entitlementMax.getIataFrom(), entitlementMax.getIataTo(), + movementFile.getId(), + entitlementMax.getEntitlementMaxCat().getCode().name(), + null, + false, + tudRatesWSServiceProvider.getFlightDate(movementFile), + 1); + } + + private EntitlementMaxDefaultModel createUsingGosselin(MovementFileModel movementFile, EntitlementMaxModel entitlementMax, String cityToCode) { + EntitlementMaxDefaultModel newEntitlementMaxDefault = buildEntitlementMaxDefaultModelGosselin(entitlementMax, movementFile); + Integer year = newEntitlementMaxDefault.getStartDate().getYear(); + try { + Money newRate; + if (EntitlementMaxCatCode.AIRFREIGHT.equals(entitlementMax.getEntitlementMaxCat().getCode())) { + newRate = ratesWSService.getRate(year, movementFile.getCityFrom().getCode(), cityToCode, entitlementMax.getEntitlementMaxCat().getCode().name(), entitlementMax.getMaxKg().toBigInteger(), movementFile.getStartDate() != null ? movementFile.getStartDate() : movementFile.getEstimatedEndDate()); + } else { + newRate = ratesWSService.getRate(year, movementFile.getCityFrom().getCode(), cityToCode, entitlementMax.getEntitlementMaxCat().getCode().name(), movementFile.getStartDate() != null ? movementFile.getStartDate() : movementFile.getEstimatedEndDate()); + } + newEntitlementMaxDefault.setAmount(newRate); + newEntitlementMaxDefault.setSourceData(GOSSELIN_SOURCE_DATA); + updateMissingRate(movementFile, entitlementMax, cityToCode, year); + if (EntitlementMaxCatCode.AIRFREIGHT.equals(entitlementMax.getEntitlementMaxCat().getCode())) { + updateEntitlementMax(movementFile.getCityFrom().getCode(), cityToCode, year, newRate, newEntitlementMaxDefault.getEntitlementMaxCatId(), entitlementMax.getMaxKg().toBigInteger()); + } else { + updateEntitlementMax(movementFile.getCityFrom().getCode(), cityToCode, year, newRate, newEntitlementMaxDefault.getEntitlementMaxCatId()); + } + return this.create(newEntitlementMaxDefault); + } catch (GosselinRateNotFound | GosselinRateServerError e) { + getLogger().info(e.getMessage()); + if (entitlementMax.getMaxKg() != null) { + if (rateMissingJpaRepository.countPendingRatesToSearchInGosselin(movementFile.getCityFrom().getCode(), cityToCode, entitlementMax.getEntitlementMaxCat().getCode().name(), entitlementMax.getMaxKg().toBigInteger(), String.valueOf(year)) == 0) { + saveRateNotFound(newEntitlementMaxDefault, entitlementMax, e.getMessage(), movementFile.getStartDate() != null ? movementFile.getStartDate() : movementFile.getEstimatedEndDate()); + } + } else { + if (rateMissingJpaRepository.countPendingRatesToSearchInGosselin(movementFile.getCityFrom().getCode(), cityToCode, entitlementMax.getEntitlementMaxCat().getCode().name(), String.valueOf(year)) == 0) { + saveRateNotFound(newEntitlementMaxDefault, entitlementMax, e.getMessage(), movementFile.getStartDate() != null ? movementFile.getStartDate() : movementFile.getEstimatedEndDate()); + } + } + } catch (Exception e) { + getLogger().info(e.getMessage() + " EntitlementMaxDefaultJpaServiceProvider : 151 calling grosselin"); + } + return null; + } + + + private void updateEntitlementMax(String cityFromCode, String cityToCode, Integer year, Money rate, Long entitlementMaxCatId) { + if (entitlementMaxCatId == ENTRY_INTO_STORAGE_CAT_ID) { + entitlementMaxJpaRepository + .getEntitlementMaxStorageJpaEntitiesToUpdate(cityFromCode, cityToCode, year, entitlementMaxCatId) + .stream() + .map(entitlementMaxJpaRepository::findById) + .peek(entitlementMaxJpaEntity -> entitlementMaxJpaEntity.setMaxValue(rate)) + .forEach(this::updateEntitlementMax); + } else { + entitlementMaxJpaRepository + .getEntitlementMaxJpaEntitiesToUpdate(cityFromCode, cityToCode, year, entitlementMaxCatId) + .stream() + .map(entitlementMaxJpaRepository::findById) + .peek(entitlementMaxJpaEntity -> entitlementMaxJpaEntity.setMaxValue(rate)) + .forEach(this::updateEntitlementMax); + } + } + + private void updateEntitlementMax(EntitlementMaxJpaEntity entitlementMaxJpaEntity) { + entitlementMaxJpaRepository.save(entitlementMaxJpaEntity); + if (entitlementMaxJpaEntity.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.STORAGE) { + entitlementMaxJpaEntity.getEntitlementType().getRequests().forEach(requestJpaEntity -> updateRequest(requestJpaEntity, entitlementMaxJpaEntity)); + } + notificationSenderProvider.sendNotification(entitlementMaxJpaEntity.getEntitlementType().getMovementFile().getId()); + } + + private void updateRequest(RequestJpaEntity request, EntitlementMaxJpaEntity entitlementMaxJpaEntity) { + if ("TotalRemRequest".equals(request.getRequestType())) { + TotalRemRequestJpaServiceProvider service = (TotalRemRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TotalRemRequestModel.class); + TotalRemRequestModel requestModel = service.getRequest(request.getId()); + if (service.canUpdateRequestEISCeiling(requestModel)) { + requestModel.setStorageRate(entitlementMaxJpaEntity.getMaxValue()); + service.update(requestModel); + } + } else if ("AdvanceRequest".equals(request.getRequestType())) { + AdvanceRequestJpaServiceProvider service = (AdvanceRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + AdvanceRequestModel.class); + AdvanceRequestModel requestModel = service.getRequest(request.getId()); + if (service.canUpdateRequestEISCeiling(requestModel)) { + requestModel.setStorageRate(entitlementMaxJpaEntity.getMaxValue()); + service.update(requestModel); + } + } + } + + private void updateEntitlementMax(String cityFromCode, String cityToCode, Integer year, Money rate, Long entitlementMaxCatId, BigInteger kg) { + entitlementMaxJpaRepository + .getEntitlementMaxJpaEntitiesToUpdate(cityFromCode, cityToCode, year, entitlementMaxCatId, kg) + .stream() + .map(id -> entitlementMaxJpaRepository.findById(id)) + .peek(entitlementMaxJpaEntity -> entitlementMaxJpaEntity.setMaxValue(rate)) + .forEach(this::updateEntitlementMaxUpdateAndNotif); + } + + private void updateEntitlementMaxUpdateAndNotif(EntitlementMaxJpaEntity entitlementMaxJpaEntity){ + entitlementMaxJpaRepository.save(entitlementMaxJpaEntity); + notificationSenderProvider.sendNotification(entitlementMaxJpaEntity.getEntitlementType().getMovementFile().getId()); + + } + private void updateMissingRate(MovementFileModel movementFile, EntitlementMaxModel entitlementMax, String cityToCode, long year) { + Optional rateEntity; + if (entitlementMax.getMaxKg() != null) { + rateEntity = rateMissingJpaRepository.findByCityCodeFromAndAndCityCodeToAndAndRateTypeAndAndYearAndKgAndReceived(movementFile.getCityFrom().getCode(), cityToCode, entitlementMax.getEntitlementMaxCat().getCode().name(), String.valueOf(year), entitlementMax.getMaxKg().toBigInteger(), false); + } else { + rateEntity = rateMissingJpaRepository.findByCityCodeFromAndAndCityCodeToAndAndRateTypeAndAndYearAndReceived(movementFile.getCityFrom().getCode(), cityToCode, entitlementMax.getEntitlementMaxCat().getCode().name(), String.valueOf(year), false); + } + if (rateEntity.isPresent()) { + rateEntity.get().setReceived(true); + rateEntity.get().setReceivedDate(LocalDateTime.now()); + rateMissingJpaRepository.save(rateEntity.get()); + } + } + + private void saveRateNotFound(EntitlementMaxDefaultModel entitlementMaxDefaultModel, EntitlementMaxModel entitlementMax, String errorMessage, LocalDate moveDate) { + RateMissingJpaEntity rateMissingJpaEntity = new RateMissingJpaEntity(); + rateMissingJpaEntity.setYear(String.valueOf(entitlementMaxDefaultModel.getStartDate().getYear())); + rateMissingJpaEntity.setStartDate(entitlementMaxDefaultModel.getStartDate()); + rateMissingJpaEntity.setCityCodeFrom(entitlementMaxDefaultModel.getCityCodeFrom()); + rateMissingJpaEntity.setCityCodeTo(entitlementMaxDefaultModel.getCityCodeTo()); + rateMissingJpaEntity.setCountryCodeTo(entitlementMaxDefaultModel.getCountryCodeTo()); + rateMissingJpaEntity.setCountryCodeFrom(entitlementMaxDefaultModel.getCountryCodeFrom()); + rateMissingJpaEntity.setEntitlementMaxCatId(entitlementMaxDefaultModel.getEntitlementMaxCatId()); + if (entitlementMax.getMaxKg() != null) { + rateMissingJpaEntity.setKg(entitlementMax.getMaxKg().toBigInteger()); + } + rateMissingJpaEntity.setRateType(entitlementMax.getEntitlementMaxCat().getCode().name()); + rateMissingJpaEntity.setReceived(false); + rateMissingJpaEntity.setErrorMessage(errorMessage); + rateMissingJpaEntity.setMoveDate(moveDate); + rateMissingJpaRepository.save(rateMissingJpaEntity); + } + + public void createEntitlementMaxDefault(EntitlementMaxModel entitlementMaxModel, MovementFileModel movementFile) { + //create new entitlement max default with new new amount + LocalDate startInterval = EntitlementsCalcHelper.getStartInterval(movementFile); + if (startInterval != null) { + if(isTud(entitlementMaxModel)) { + setAsDefault(entitlementMaxModel, movementFile, ENTITLEMENT_MAX_CAT_ID_STAFF); + setAsDefault(entitlementMaxModel, movementFile, ENTITLEMENT_MAX_CAT_ID_DEPENDENT); + } else { + disabledPrevieusEtitlkemetMax(entitlementMaxModel, movementFile); + EntitlementMaxDefaultModel newEntitlementMaxDefault = buildEntitlementMaxDefaultModelGosselin(entitlementMaxModel, movementFile); + this.create(newEntitlementMaxDefault); + } + } + } + + private void setAsDefault(EntitlementMaxModel entitlementMaxModel, MovementFileModel movementFile, Long entitlementMaxCatId) { + EntitlementMaxDefaultJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(EntitlementMaxDefaultJpaEntity.class, EntitlementMaxDefaultJpaRepository.class); + List latestMaxDefaults = repo.findByCityCodeFromAndCityCodeToAndStartDateAndEntitlementMaxCatIdAndLatest(entitlementMaxModel.getIataFrom(), + entitlementMaxModel.getIataTo(), + LocalDate.of(EntitlementsCalcHelper.getStartIntervalTud(movementFile).getYear(), EntitlementsCalcHelper.getStartIntervalTud(movementFile).getMonth().getValue(), 1), + entitlementMaxCatId, + true); + latestMaxDefaults.forEach(EntitlemenMaxDefault -> { + EntitlemenMaxDefault.setLatest(false); + repo.save(EntitlemenMaxDefault); + }); + this.create(buildEntitlementMaxDefaultModelTud(entitlementMaxModel, movementFile, entitlementMaxCatId)); + } + + private void disabledPrevieusEtitlkemetMax(EntitlementMaxModel entitlementMaxModel, MovementFileModel movementFile) { + EntitlementMaxDefaultModel entitlementMaxDefault = this.getEntitlementMaxDefault(movementFile, entitlementMaxModel); + if (entitlementMaxDefault != null) { + + //if the amount hasn't changed, there is no need to add new entitlementMaxDefault + if (entitlementMaxModel.getMaxValue() == null || entitlementMaxModel.getMaxValue().getNumber().doubleValue() == 0 + || entitlementMaxDefault.getAmount().isEqualTo(entitlementMaxModel.getMaxValue())) { + return; + } + + //if amount has changed, the current entitlement max default is not anymore the latest one + entitlementMaxDefault.setLatest(Boolean.FALSE); + this.update(entitlementMaxDefault); + } + } + + private void disabledPrevieusEtitlkemetMaxTud(EntitlementMaxModel entitlementMaxModel, MovementFileModel movementFile, long entitlementMaxCatId) { + + EntitlementMaxDefaultModel entitlementMaxDefault = this.getEntitlementMaxDefault(movementFile, entitlementMaxModel); + if (entitlementMaxDefault != null) { + + //if the amount hasn't changed, there is no need to add new entitlementMaxDefault + if (entitlementMaxModel.getMaxValue() == null || entitlementMaxModel.getMaxValue().getNumber().doubleValue() == 0 + || entitlementMaxDefault.getAmount().isEqualTo(entitlementMaxModel.getMaxValue())) { + return; + } + + //if amount has changed, the current entitlement max default is not anymore the latest one + entitlementMaxDefault.setLatest(Boolean.FALSE); + this.update(entitlementMaxDefault); + } + } + + private boolean disabled(EntitlementMaxModel entitlementMaxModel, EntitlementMaxDefaultModel entitlementMaxDefault) { + if (entitlementMaxDefault != null) { + + //if the amount hasn't changed, there is no need to add new entitlementMaxDefault + if (entitlementMaxModel.getMaxValue() == null || entitlementMaxModel.getMaxValue().getNumber().doubleValue() == 0 + || entitlementMaxDefault.getAmount().isEqualTo(entitlementMaxModel.getMaxValue())) { + return true; + } + + //if amount has changed, the current entitlement max default is not anymore the latest one + entitlementMaxDefault.setLatest(Boolean.FALSE); + this.update(entitlementMaxDefault); + } + return false; + } + + public Optional getEntitlementMaxDefaultAMount(String cityFrom, String cityTo, LocalDate startDate, Long entitlementMaxCatId) { + EntitlementMaxDefaultJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(EntitlementMaxDefaultJpaEntity.class, EntitlementMaxDefaultJpaRepository.class); + List entitlementMaxList = repo + .findByCityCodeFromAndCityCodeToAndStartDateAndEntitlementMaxCatIdAndLatest(cityFrom, + cityTo, startDate, entitlementMaxCatId, Boolean.TRUE); + if (!entitlementMaxList.isEmpty()) { + return Optional.ofNullable(getBeanMapper().map(entitlementMaxList.get(0), EntitlementMaxDefaultModel.class).getAmount()); + } else { + return Optional.empty(); + } + } + + private EntitlementMaxDefaultModel buildEntitlementMaxDefaultModelTud(EntitlementMaxModel entitlementMaxModel, MovementFileModel mfModel, Long entitlementMaxCatId) { + EntitlementMaxDefaultModel entitlementMaxDefault = new EntitlementMaxDefaultModel(); + entitlementMaxDefault.setAmount(entitlementMaxModel.getMaxValue()); + entitlementMaxDefault.setStartDate(EntitlementsCalcHelper.getStartIntervalTud(mfModel)); + entitlementMaxDefault.setCityCodeFrom(entitlementMaxModel.getIataFrom()); + entitlementMaxDefault.setCityCodeTo(entitlementMaxModel.getIataTo()); + entitlementMaxDefault.setEntitlementMaxCatId(entitlementMaxCatId); + entitlementMaxDefault.setLatest(Boolean.TRUE); + entitlementMaxDefault.setSourceData(HR_SOURCE_DATA); + entitlementMaxDefault.setKg(entitlementMaxModel.getMaxKg()); + return entitlementMaxDefault; + } + + private EntitlementMaxDefaultModel buildEntitlementMaxDefaultModelGosselin(EntitlementMaxModel entitlementMaxModel, MovementFileModel movementFile) { + EntitlementMaxDefaultModel entitlementMaxDefault = new EntitlementMaxDefaultModel(); + entitlementMaxDefault.setAmount(entitlementMaxModel.getMaxValue()); + entitlementMaxDefault.setStartDate(EntitlementsCalcHelper.getStartInterval(movementFile)); + entitlementMaxDefault.setCityCodeFrom(movementFile.getCityFrom().getCode()); + entitlementMaxDefault.setCountryCodeFrom(movementFile.getCountryFrom().getCode()); + if (entitlementMaxModel.getEntitlementMaxCat().getCode().equals(EntitlementMaxCatCode.STORAGE) && entitlementMaxModel.getCity() != null) { + entitlementMaxDefault.setCityCodeTo(entitlementMaxModel.getCity().getCode()); + entitlementMaxDefault.setCountryCodeTo(entitlementMaxModel.getCountry().getCode()); + } else { + entitlementMaxDefault.setCityCodeTo(movementFile.getCityTo().getCode()); + entitlementMaxDefault.setCountryCodeTo(movementFile.getCountryTo().getCode()); + } + entitlementMaxDefault.setEntitlementMaxCatId(entitlementMaxModel.getEntitlementMaxCat().getId()); + entitlementMaxDefault.setLatest(Boolean.TRUE); + entitlementMaxDefault.setSourceData(HR_SOURCE_DATA); + entitlementMaxDefault.setKg(entitlementMaxModel.getMaxKg()); + return entitlementMaxDefault; + } + + public void newEntitlementMaxDefault(Integer year, BigDecimal amount, String countryFrom, String countryTo, String rateType) { + EntitlementMaxDefaultJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(EntitlementMaxDefaultJpaEntity.class, EntitlementMaxDefaultJpaRepository.class); + getLogger().info("cancelEntitlementMaxDefault countryFrom {}, countryTo {}, EntitlementsCalcHelper.getStartInterval(year) {}, rateType {}", countryFrom, countryTo, EntitlementsCalcHelper.getStartInterval(year), rateType); + repo.cancelEntitlementMaxDefault(countryFrom, countryTo, EntitlementsCalcHelper.getStartInterval(year), rateType); + getLogger().info("activeEntitlementMaxDefault countryFrom {}, countryTo {}, EntitlementsCalcHelper.getStartInterval(year) {}, rateType {}, amount {}", countryFrom, countryTo, EntitlementsCalcHelper.getStartInterval(year), rateType, amount); + repo.activeEntitlementMaxDefault(countryFrom, countryTo, EntitlementsCalcHelper.getStartInterval(year), rateType, amount); + } + + private boolean isTud( EntitlementMaxModel entitlementMax) { + return EntitlementMaxCatCode.TUD_STAFF_MEMBER.equals(entitlementMax.getEntitlementMaxCat().getCode()) || + EntitlementMaxCatCode.TUD_DEPENDENT.equals(entitlementMax.getEntitlementMaxCat().getCode()); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementMaxJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementMaxJpaServiceProvider.java new file mode 100644 index 0000000..7ea4ec9 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementMaxJpaServiceProvider.java @@ -0,0 +1,26 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxJpaEntity; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; + +@Service +@Transactional +public class EntitlementMaxJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, EntityUpdater { + + @Override + public Class getModelType() { + return EntitlementMaxModel.class; + } + + @Override + public Class getEntityType() { + return EntitlementMaxJpaEntity.class; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementMaxOptionJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementMaxOptionJpaServiceProvider.java new file mode 100644 index 0000000..3bc650c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementMaxOptionJpaServiceProvider.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxOptionJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementMaxOptionJpaRepository; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxOptionModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; + +@Transactional +@Service +public class EntitlementMaxOptionJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader { + + @Override + public Class getModelType() { + return EntitlementMaxOptionModel.class; + } + + @Override + public Class getEntityType() { + return EntitlementMaxOptionJpaEntity.class; + } + + public List getEntitlementMaxOptions(Long entitlementMaxCatId) { + // return all of them if entitlementMaxCatId is not specified + if (entitlementMaxCatId == null) { + return this.read(); + } + + EntitlementMaxOptionJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(EntitlementMaxOptionJpaEntity.class, EntitlementMaxOptionJpaRepository.class); + + List entitlementMaxOptions = repo.findAllByEntitlementMaxCat_Id(entitlementMaxCatId); + + return getBeanMapper().mapAsList(entitlementMaxOptions, EntitlementMaxOptionModel.class); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementTypeCatJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementTypeCatJpaServiceProvider.java new file mode 100644 index 0000000..abd394c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementTypeCatJpaServiceProvider.java @@ -0,0 +1,85 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeCatJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementTypeCatJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementTypeJpaRepository; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.ResettlementRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeCatModel; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; +import javax.transaction.Transactional; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@Transactional +@RequiredArgsConstructor +public class EntitlementTypeCatJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader { + + private final ResettlementRequestJpaServiceProvider resettlementRequestJpaServiceProvider; + + @Override + public Class getModelType() { + return EntitlementTypeCatModel.class; + } + + @Override + public Class getEntityType() { + return EntitlementTypeCatJpaEntity.class; + } + + /** + * @param movementFileId s + * + * @param assigned s + * @return Entitlements Types Categories that can be added to the movement file : All EntitlementTypesCat minus the one added in the movement file + */ + public List getEntitlementTypesCatForMovementFile(Long movementFileId, Boolean assigned) { + EntitlementTypeCatJpaRepository entitlementTypeRepo = getEntityRepositoryRegistry().getReaderRepositoryFor(EntitlementTypeCatJpaEntity.class, EntitlementTypeCatJpaRepository.class); + + Iterable entitlementTypeCatList = entitlementTypeRepo.findAll(); + + EntitlementTypeJpaRepository entitlementTypeJpaRepo = getEntityRepositoryRegistry().getReaderRepositoryFor(EntitlementTypeJpaEntity.class, EntitlementTypeJpaRepository.class); + List entitlementTypeJpaEntities = entitlementTypeJpaRepo.findAllByMovementFile_idOrderByEntitlementTypeCat_order(movementFileId); + + List entitlementTypesToReturn; + + if (assigned == null) { + entitlementTypesToReturn = StreamSupport.stream(entitlementTypeCatList.spliterator(), false).collect(Collectors.toList()); + } else if (assigned) { + entitlementTypesToReturn = StreamSupport.stream(entitlementTypeCatList.spliterator(), false) + .filter(EntitlementTypeCatJpaEntity::getMfType) + .filter(et -> { + Optional matchingET = entitlementTypeJpaEntities.stream().filter(met -> Objects.equals(met.getEntitlementTypeCat().getId(), et.getId())).findFirst(); + return matchingET.isPresent(); + }).collect(Collectors.toList()); + + } else { + entitlementTypesToReturn = StreamSupport.stream(entitlementTypeCatList.spliterator(), false) + .filter(EntitlementTypeCatJpaEntity::getMfType) + .filter(et -> { + Optional matchingET = entitlementTypeJpaEntities.stream().filter(met -> Objects.equals(met.getEntitlementTypeCat().getId(), et.getId())).findFirst(); + return !matchingET.isPresent(); + }).collect(Collectors.toList()); + + } + + if (!resettlementRequestJpaServiceProvider.isMovementFileValidToCreateResettlement( + movementFileId)) { + //remove resettlement type + entitlementTypesToReturn.removeIf( + et -> EntitlementTypeCatCode.RES == et.getCode()); + } + + return getBeanMapper().mapAsList(entitlementTypesToReturn, EntitlementTypeCatModel.class); + + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementTypeJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementTypeJpaServiceProvider.java new file mode 100644 index 0000000..75f7710 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementTypeJpaServiceProvider.java @@ -0,0 +1,771 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement; + +import eu.europa.eeas.ananke.core.base.exception.ServerInternalRuntimeException; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeDefaultJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementMaxJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementTypeDefaultJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementTypeJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.service.data.provider.AppParameterJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.LocationJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.declaration.DeclarationJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.AdvanceRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.RequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.TotalRemRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.notification.NotificationMFJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.validation.MovementFileValidator; +import eu.europa.eeas.erights.common.service.model.MovementContextType; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.VJobModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxCatModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxDefaultModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeCatModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeDefaultModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.AdvanceRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TotalRemRequestModel; +import eu.europa.eeas.erights.common.service.model.notification.NotificationMFModel; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.app.AppParamType; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeStatus; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementsCalcHelper; +import eu.europa.eeas.erights.common.tools.job.JobFamilyPostingCode; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateType; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import java.math.BigDecimal; +import org.javamoney.moneta.Money; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.math.RoundingMode; +import java.util.*; +import java.util.stream.Collectors; + +@Service +@Transactional +public class EntitlementTypeJpaServiceProvider extends AbstractDataServiceProvider + implements EntityCreator, + EntityUpdater, + EntityDeleter { + + @Autowired + @Lazy + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + @Lazy + private AppParameterJpaServiceProvider appParameterService; + + @Autowired + private LocationJpaServiceProvider locationJpaServiceProvider; + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_VALIDATOR) + private MovementFileValidator movementFileValidator; + + @Override + public Class getModelType() { + return EntitlementTypeModel.class; + } + + @Override + public Class getEntityType() { + return EntitlementTypeJpaEntity.class; + } + + public EntitlementTypeModel updateEntitlementType(EntitlementTypeModel model) { + + model.getEntitlementMaxList().forEach(entitlementMax -> entitlementMax.setEntitlementType(model)); + + MovementFileJpaServiceProvider movementFileJpaService = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(MovementFileModel.class); + MovementFileModel mfModel = movementFileJpaService.read(model.getMovementFileId()); + if (mfModel == null) { + throw new ServerInternalRuntimeException(ERightsExceptionCode.ER001); + } + + // Validate if we are allowed (because of old MF without iataCode, etc) + movementFileValidator.validateUpdateDefaultAllowed(model, mfModel); + + EntitlementMaxDefaultJpaServiceProvider entitlementMaxDefaultService = (EntitlementMaxDefaultJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(EntitlementMaxDefaultModel.class); + + model.getEntitlementMaxList().stream().filter(EntitlementMaxModel::getDefaultMaxVal) + .forEach(entitlementMax -> entitlementMaxDefaultService.createEntitlementMaxDefault(entitlementMax, mfModel)); + + EntitlementTypeModel updatedModel = this.update(model); + + // === Check if after this update, it is necessary to notify the user because the Amounts are all now set. + try { + if (checkAmountsNotificationNeeded(mfModel)) { + emailEdmsServiceProvider.notifyAllEntitlementAmountsFilled(mfModel); + } + } catch (Exception ex) { + getLogger().error("An exception occurred when checking if notification needed!", ex); + } + // === Check if after this update, it is necessary to notify the user about EIS Amounts set. + // and Update request entry into storage + try { + updateDeclarationOnKgAirFreightChange(model); + Optional entryIntoStorage = model.getEntitlementMaxList().stream().filter(EntitlementMaxModel::getEnable) + .filter(entMax -> entMax.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.STORAGE).findFirst(); + if (entryIntoStorage.isPresent()) { + EntitlementMaxModel entryIntoStorageModel = entryIntoStorage.get(); + //Update ceiling in ADV or total request + model.getRequests().stream() + .forEach(request -> { + if ("TotalRemRequest".equals(request.getRequestType())) { + + TotalRemRequestJpaServiceProvider service = (TotalRemRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TotalRemRequestModel.class); + + TotalRemRequestModel requestModel = service.getRequest(request.getId()); + if (service.canUpdateRequestEISCeiling(requestModel)) { + requestModel.setCity(entryIntoStorageModel.getCity()); + requestModel.setCountry(entryIntoStorageModel.getCountry()); + requestModel.setStorageRate(entryIntoStorageModel.getMaxValue()); + service.update(requestModel); + } + } else if ("AdvanceRequest".equals(request.getRequestType())) { + AdvanceRequestJpaServiceProvider service = (AdvanceRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + AdvanceRequestModel.class); + AdvanceRequestModel requestModel = service.getRequest(request.getId()); + if (service.canUpdateRequestEISCeiling(requestModel)) { + requestModel.setCity(entryIntoStorageModel.getCity()); + requestModel.setCountry(entryIntoStorageModel.getCountry()); + requestModel.setStorageRate(entryIntoStorageModel.getMaxValue()); + service.update(requestModel); + } + + } + + }); + } + + if (checkEISCeillingNotificationNeeded(mfModel)) { + emailEdmsServiceProvider.notifyEISAmountsFilled(mfModel); + } + } catch (Exception ex) { + getLogger().error("An exception occurred when checking if notification needed for EIS!", ex); + } + + // === Check if after this update, declaration should be enabled/disabled the declaration + try { + DeclarationJpaServiceProvider declarationJpaService = (DeclarationJpaServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor(DeclarationModel.class); + declarationJpaService.enableOrDisableDeclarationBasedOnFilledAllowances(mfModel); + } catch (Exception ex) { + getLogger().error("An exception occurred when checking if declaration should be created!", ex); + } + // === + + return updatedModel; + } + + private void updateDeclarationOnKgAirFreightChange(EntitlementTypeModel model) { + DeclarationJpaServiceProvider declarationJpaServiceProvider = (DeclarationJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + DeclarationModel.class); + DeclarationModel declarationModel = declarationJpaServiceProvider.getDeclaration( + model.getMovementFileId()); + + Optional airFreightRequestPresent = model.getEntitlementMaxList().stream() + .filter(EntitlementMaxModel::getEnable) + .filter( + entMax -> (EntitlementMaxCatCode.AIRFREIGHT == entMax.getEntitlementMaxCat().getCode() + && EntitlementTypeCatCode.REM == entMax.getEntitlementTypeCat().getCode())) + .findFirst(); + if (airFreightRequestPresent.isPresent() && (declarationModel.getKgAirFreightCeiling() == null + || + airFreightRequestPresent.get().getMaxKg() == null || + !declarationModel.getKgAirFreightCeiling() + .equals(airFreightRequestPresent.get().getMaxKg()))) { + declarationModel.setKgAirFreightCeiling(airFreightRequestPresent.get().getMaxKg()); + declarationJpaServiceProvider.update(declarationModel); + } + } + + /** + * Method used to check if the preconditions for creation of the declaration are met: + * 1. Movement file state : CONFIRMED or ONGOING + * 2. TUD allowances and REM ceilings amounts are set (if available) + * If one of this condition is not met the method return FALSE otherwise TRUE + * + * @param movFileModel s + * + * @return s + */ + public boolean checkAmountEnableDeclarationPossible(MovementFileModel movFileModel) { + if (!(MovementFileState.CONFIRMED.equals(movFileModel.getState()) || MovementFileState.ONGOING.equals(movFileModel.getState()))) { + return false; + } + + EntitlementTypeJpaServiceProvider etService = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(EntitlementTypeModel.class); + List entitlements = etService.getEntitlementsTypeList(movFileModel.getId()); + + // don't enable the declaration if there are no entitlements + if (entitlements.isEmpty()) { + return false; + } + + List filteredEntitlements = entitlements.stream() + .filter(EntitlementTypeModel::getEnable) + .filter(ent -> ent.getEntitlementTypeCat().getCode() == EntitlementTypeCatCode.REM || + ent.getEntitlementTypeCat().getCode() == EntitlementTypeCatCode.TUD) + .collect(Collectors.toList()); + + for (EntitlementTypeModel etItem : filteredEntitlements) { + if (etItem.getEntitlementMaxList().stream().anyMatch(eMaxItem -> (!isAmountSet(eMaxItem) && eMaxItem.getEnable()))) { + return false; + } + } + + return true; + } + + /** + * This utility method checks if the MF is in state CONFIRMED or ONGOING and + * if with the current change in the Entitlement type, the TUD and REM are set (if are available) + * (and they werent before) + * + * @param movFileModel s + * + * @return s + */ + public boolean checkAmountsNotificationNeeded(MovementFileModel movFileModel) { + + // If not confirmed or ongoing, then no notification: + if (!(MovementFileState.CONFIRMED.equals(movFileModel.getState()) || MovementFileState.ONGOING.equals(movFileModel.getState()))) { + return false; + } + + NotificationMFJpaServiceProvider notificationMFJpaServiceProvider = this.dataServiceProviderRegistry.getDataServiceProviderFor(NotificationMFModel.class, NotificationMFJpaServiceProvider.class); + + // Check if in the history of notifications there is one of this type: + boolean notifDone = notificationMFJpaServiceProvider.getNotifications(movFileModel.getId()).stream().anyMatch(notification -> + NotificationTemplateType.ENTITLEMENTS_AMOUNTS_SET.name().equals( + notification.getNotificationTemplate().getNotificationTemplateType())); + + // The notification was already sent, we dont send it again: + if (notifDone) { + return false; + } + + EntitlementTypeJpaServiceProvider etService = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(EntitlementTypeModel.class); + List entitlements = etService.getEntitlementsTypeList(movFileModel.getId()); + + // don't sent the email if MF has no entitlement + if (entitlements.isEmpty()) { + return false; + } + + List filteredEntitlements = entitlements.stream() + .filter(EntitlementTypeModel::getEnable) + .filter(ent -> ent.getEntitlementTypeCat().getCode() == EntitlementTypeCatCode.REM || + ent.getEntitlementTypeCat().getCode() == EntitlementTypeCatCode.TUD) + .collect(Collectors.toList()); + + for (EntitlementTypeModel etItem : filteredEntitlements) { + if (etItem.getEntitlementMaxList().stream().anyMatch(eMaxItem -> (!isAmountSet(eMaxItem) && eMaxItem.getEntitlementMaxCat().getCode() != EntitlementMaxCatCode.STORAGE))) { + return false; + } + } + + // No NULL value found in enabled TUD and REM: OK + return true; + } + + /** + * This utility method checks if the MF is in state CONFIRMED or ONGOING and + * if with the current change in the Entitlement type, the TUD and REM are set (if are available) + * (and they werent before) + * + * @param movFileModel s + * + * @return s + */ + public boolean checkEISCeillingNotificationNeeded(MovementFileModel movFileModel) { + + // If not confirmed or ongoing, then no notification: + if (!(MovementFileState.CONFIRMED.equals(movFileModel.getState()) || MovementFileState.ONGOING.equals(movFileModel.getState()))) { + return false; + } + + NotificationMFJpaServiceProvider notificationMFJpaServiceProvider = this.dataServiceProviderRegistry.getDataServiceProviderFor(NotificationMFModel.class, NotificationMFJpaServiceProvider.class); + + // Check if in the history of notifications there is one of this type: + boolean notifDone = notificationMFJpaServiceProvider.getNotifications(movFileModel.getId()).stream().anyMatch(notification -> + NotificationTemplateType.EIS_AMOUNTS_SET.name().equals( + notification.getNotificationTemplate().getNotificationTemplateType())); + + // The notification was already sent, we dont send it again: + if (notifDone) { + return false; + } + + EntitlementTypeJpaServiceProvider etService = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(EntitlementTypeModel.class); + List entitlements = etService.getEntitlementsTypeList(movFileModel.getId()); + + // don't sent the email if MF has no entitlement + if (entitlements.isEmpty()) { + return false; + } + + List filteredEntitlements = entitlements.stream() + .filter(EntitlementTypeModel::getEnable) + .filter(ent -> ent.getEntitlementTypeCat().getCode() == EntitlementTypeCatCode.REM) + .collect(Collectors.toList()); + + //get entitlemetn max , if ismountset is enable we send the email + for (EntitlementTypeModel etItem : filteredEntitlements) { + if (etItem.getEntitlementMaxList().stream().anyMatch( + eMaxItem -> (isAmountSet(eMaxItem) + && eMaxItem.getEnable() + && eMaxItem.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.STORAGE))) { + return true; + } + } + + //if did not enter in thr previous + return false; + } + + /** + * Utility method to check if the amount is set for an Entitlement + * + * @param entMaxModel x + * + * @return x + */ + private boolean isAmountSet(EntitlementMaxModel entMaxModel) { + + return entMaxModel.getMaxValue() != null || entMaxModel.getEntitlementMaxOption() != null; + } + + public EntitlementTypeModel createEntitlementType(Long entitlementTypeId, Long movementFileId) { + MovementFileJpaServiceProvider movementFileJpaService = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + MovementFileModel mfModel = movementFileJpaService.read(movementFileId); + if (mfModel == null) { + throw new ServerInternalRuntimeException(ERightsExceptionCode.ER001); + } + Map> tudEntitlementAmount = new HashMap<>(); + tudEntitlementAmount.put(EntitlementMaxCatCode.TUD_STAFF_MEMBER, this.getExistingAmount(movementFileId, EntitlementMaxCatCode.TUD_STAFF_MEMBER)); + tudEntitlementAmount.put(EntitlementMaxCatCode.TUD_DEPENDENT, this.getExistingAmount(movementFileId, EntitlementMaxCatCode.TUD_DEPENDENT)); + //check to see if already exists entitlement type for specified movement type + Optional entitlementTypeOptional = getEntitlementsTypeList(movementFileId).stream().filter(etMF -> etMF.getEntitlementTypeCat().getId().equals(entitlementTypeId)).findFirst(); + if (entitlementTypeOptional.isPresent()) { + getLogger().info("There already exists an entitlementType with id:{} for movementFile id:{}", entitlementTypeId, movementFileId); + return entitlementTypeOptional.get(); + } + + EntitlementTypeCatJpaServiceProvider entitlementTypeCatJpaService = (EntitlementTypeCatJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + EntitlementTypeCatModel.class); + EntitlementTypeCatModel entitlementTypeCatModel = entitlementTypeCatJpaService.read(entitlementTypeId); + if (entitlementTypeCatModel == null) { + throw new ServerInternalRuntimeException(ERightsExceptionCode.ER010); + } + + MovementFileJpaServiceProvider movementFileJpaServiceProvider = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + MovementFileModel.class); + + EntitlementTypeModel entitlementTypeModel = this.buildEntitlementType(mfModel, + entitlementTypeCatModel, Boolean.FALSE, mfModel.getState(), tudEntitlementAmount, + movementFileJpaServiceProvider.getChargeableWeightBeforeDeletingEntitlements( + mfModel.getId())); + + return this.create(entitlementTypeModel); + } + + /** + * Returns the entitlement type list ordered by entitlementTypeCat and the list of entitlementMax is ordered by entitlementMaxCat + * + * @param movementFileId s + * + * @return s + */ + public List getEntitlementsTypeList(Long movementFileId) { + EntitlementTypeJpaRepository repo = (EntitlementTypeJpaRepository) getEntityRepositoryRegistry().getReaderRepositoryFor(EntitlementTypeJpaEntity.class); + + List entitlementTypeJpaEntities = repo.findAllByMovementFile_idOrderByEntitlementTypeCat_order(movementFileId); + List entitlementTypeModels = getBeanMapper().mapAsList(entitlementTypeJpaEntities, EntitlementTypeModel.class); + + List ordered = entitlementTypeModels.stream().map(ent -> { + ent.getEntitlementMaxList().sort(Comparator.comparing(entMax -> entMax.getEntitlementMaxCat().getOrder())); + return ent; + }).collect(Collectors.toList()); + + return orderRequestInEntitltmentListList(ordered); + + + + } + + public List generateDefaultEntitlementTypeList( + MovementFileModel movementFile, MovementFileState movementFileState, + Map> tudEntitlementAmount, + Optional chargeableWeight) { + EntitlementTypeDefaultJpaRepository repo = (EntitlementTypeDefaultJpaRepository) getEntityRepositoryRegistry().getReaderRepositoryFor(EntitlementTypeDefaultJpaEntity.class); + List entitlementTypeDefaultEntities = repo.findAllByMovementTypeId(movementFile.getMovementType().getId()); + List entitlementTypeDefaultList = getBeanMapper().mapAsList(entitlementTypeDefaultEntities, EntitlementTypeDefaultModel.class); + List entitlementTypeList = new ArrayList<>(); + entitlementTypeDefaultList.forEach(entDefault -> { + EntitlementTypeModel model = this.buildEntitlementType(movementFile, + entDefault.getEntitlementTypeCat(), Boolean.TRUE, movementFileState, tudEntitlementAmount, + chargeableWeight); + entitlementTypeList.add(model); + }); + + return this.create(entitlementTypeList); + } + + public void deleteAllEntitlementTypeForMF(MovementFileModel movementFile) { + + List entitlementTypeModelList = this.getEntitlementsTypeList(movementFile.getId()); + + for (EntitlementTypeModel entType : entitlementTypeModelList) { + this.delete(entType.getId()); + } + + } + + public void deleteAllEntitlementTypeForMFAndRequest(MovementFileModel movementFile) { + List entitlementTypeModelList = this.getEntitlementsTypeList(movementFile.getId()); + RequestJpaServiceProvider requestProvider = (RequestJpaServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor( + RequestModel.class); + for (EntitlementTypeModel entType : entitlementTypeModelList) { + for (RequestModel requestModel : entType.getRequests()) { + requestProvider.deleteAllRelatedEntities(requestModel.getId()); + requestProvider.deleteRequestByIdNativeQuery(requestModel.getId()); + } + this.delete(entType.getId()); + } + } + + public void deleteEntitlementTypeNotifyEnableNotif(Long entitlementTypeId) { + + // Before deletion, we get the MF id: + EntitlementTypeJpaRepository repo = (EntitlementTypeJpaRepository) getEntityRepositoryRegistry().getReaderRepositoryFor(EntitlementTypeJpaEntity.class); + EntitlementTypeJpaEntity entType = repo.findById(entitlementTypeId); + MovementFileJpaEntity movFileEntity = entType.getMovementFile(); + Long movFileId = movFileEntity.getId(); + + // --- Actually delete + this.delete(entitlementTypeId); + // --- + + // After deletion, check if all the Amounts are now set in the remaining Entitlements of the MovementFile: + MovementFileJpaServiceProvider movementFileJpaService = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(MovementFileModel.class); + MovementFileModel mfModel = movementFileJpaService.read(movFileId); + + // === Check if after this update, it is necessary to notify the user because the Amounts are all now set. + try { + if (checkAmountsNotificationNeeded(mfModel)) { + emailEdmsServiceProvider.notifyAllEntitlementAmountsFilled(mfModel); + } + } catch (Exception ex) { + getLogger().error("An exception occurred when checking if notification needed!", ex); + } + + // === Check if after this update, it possible to enable the declaration + try { + DeclarationJpaServiceProvider declarationJpaService = (DeclarationJpaServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor(DeclarationModel.class); + declarationJpaService.enableOrDisableDeclarationBasedOnFilledAllowances(mfModel); + } catch (Exception ex) { + getLogger().error("An exception occurred when checking if declaration should be created!", ex); + } + // === + } + + private EntitlementTypeModel buildEntitlementType(MovementFileModel movementFile, + EntitlementTypeCatModel entitlementTypeCat, Boolean isDefault, + MovementFileState movementFileState, + Map> tudEntitlementAmount, + Optional chargeableWeight) { + + EntitlementTypeModel entitlementType = new EntitlementTypeModel(); + entitlementType.setMovementFileId(movementFile.getId()); + entitlementType.setDefaultEntType(isDefault); + entitlementType.setStatus(EntitlementTypeStatus.ACTIVE); + entitlementType.setEnable(Boolean.TRUE); + entitlementType.setMovementType(movementFile.getMovementType()); + entitlementType.setEntitlementTypeCat(entitlementTypeCat); + + List entitlementMaxCatList = entitlementTypeCat.getEntitlementMaxCatList(); + List entitlementMaxList = new ArrayList<>(); + entitlementMaxCatList.forEach(etMaxCat -> { + if (!isAllowedEntitlementMaxCat(etMaxCat, movementFile) ) { + // Skip this item + return; + } + EntitlementMaxModel entitlementMax = new EntitlementMaxModel(); + entitlementMax.setEntitlementMaxCat(etMaxCat); + entitlementMax.setEntitlementTypeCat(entitlementTypeCat); + entitlementMax.setEntitlementType(entitlementType); + entitlementMax.setRateYear(EntitlementsCalcHelper.getStartInterval(movementFile).getYear()); + entitlementMax.setStartDate(EntitlementsCalcHelper.getStartInterval(movementFile)); + if (entitlementMax.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.AIRFREIGHT ) { + if (movementFile.getAirfreightVolumeCeiling() == null) { + entitlementMax.setMaxVolume(appParameterService.getFirstAppParametersByTypeAndKeyNumber(AppParamType.ADVANCE_REMOVAL, "MAXIMUM_VOLUME_AIRFREIGHT")); + } else { + entitlementMax.setMaxVolume(movementFile.getAirfreightVolumeCeiling()); + if (!chargeableWeight.isPresent()) { + entitlementMax.setMaxKg(movementFile.getAirfreightVolumeCeiling().multiply( + appParameterService.getFirstAppParametersByTypeAndKeyNumber( + AppParamType.ADVANCE_REMOVAL, "M3toKG")).setScale(2, RoundingMode.DOWN)); + } else { + entitlementMax.setMaxKg(new BigDecimal(chargeableWeight.get())); + } + } + } + + + + + // check-this + // ====== If it's a TUD, set iata_from, iata_to following the logic of family posting: + if (EntitlementMaxCatCode.TUD_STAFF_MEMBER.equals(entitlementMax.getEntitlementMaxCat().getCode())) { + entitlementMax.setStartDate(EntitlementsCalcHelper.getStartIntervalTud(movementFile)); + // For the staff member, directly assign with city_from, city_to (mapped) + if (movementFile.getCityFrom() != null) { + entitlementMax.setIataFrom(locationJpaServiceProvider.getIataCode(movementFile.getCityFrom().getCode())); + } + if (movementFile.getCityTo() != null) { + entitlementMax.setIataTo(locationJpaServiceProvider.getIataCode(movementFile.getCityTo().getCode())); + } + + } else if (EntitlementMaxCatCode.TUD_DEPENDENT.equals(entitlementMax.getEntitlementMaxCat().getCode())) { + entitlementMax.setStartDate(EntitlementsCalcHelper.getStartIntervalTud(movementFile)); + // ===== Skip this 'entitlementMax' if it's TUD_DEPENDANT and both jobs are NON family posting + if (!movementFile.getFamilyPosting().booleanValue() && !movementFile.getJobToFamilyPosting().booleanValue()) { + // We are inside a for-each + return; + } + // ===== + if (movementFile.getCityFrom() != null) { + String familyIataFrom = movementFile.getFamilyPosting().booleanValue() + ? locationJpaServiceProvider.getIataCode(movementFile.getCityFrom().getCode()) + : movementFile.getIataCode(); + entitlementMax.setIataFrom(familyIataFrom); + } + if (movementFile.getCityTo() != null) { + String familyIataTo = movementFile.getJobToFamilyPosting().booleanValue() + ? locationJpaServiceProvider.getIataCode(movementFile.getCityTo().getCode()) + : movementFile.getIataCode(); + entitlementMax.setIataTo(familyIataTo); + } + + // (Strange case: Family City From and To can be the same) + } + // ====== End of TUD iata settings + //in case entry into storage we disable it RIGD-1462 + if (entitlementMax.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.STORAGE) { + entitlementMax.setEnable(false); + }else if(entitlementMax.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.TUD_STAFF_MEMBER || entitlementMax.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.TUD_DEPENDENT){ + entitlementMax.setEnable(true); + Optional money = Optional.empty(); + if (tudEntitlementAmount.containsKey(entitlementMax.getEntitlementMaxCat().getCode())) { + money = tudEntitlementAmount.get(entitlementMax.getEntitlementMaxCat().getCode()); + } + money.ifPresent(entitlementMax::setMaxValue); + if(movementFileState.equals(MovementFileState.PENDING) || movementFileState.equals(MovementFileState.ONGOING)){ + if (!money.isPresent()) { + Money suggestedAmount = getSuggestedAmount(entitlementMax, movementFile); + if (suggestedAmount != null) { + entitlementMax.setMaxValue(suggestedAmount); + } + } + } + + } else { + // NO STORAGE + entitlementMax.setEnable(true); + Money suggestedAmount = getSuggestedAmount(entitlementMax, movementFile); + if (suggestedAmount != null) { + entitlementMax.setMaxValue(suggestedAmount); + } + } + + entitlementMaxList.add(entitlementMax); + }); + + entitlementType.setEntitlementMaxList(entitlementMaxList); + + return entitlementType; + } + + public Optional getExistingAmount(Long movementFileId, EntitlementMaxCatCode entitlementMaxCatCode) { + EntitlementMaxJpaRepository entitlementMaxJpaRepository = (EntitlementMaxJpaRepository) getEntityRepositoryRegistry().getReaderRepositoryFor(EntitlementMaxJpaEntity.class); + Optional entitlementMaxJpaEntityId = entitlementMaxJpaRepository.getTUDStaffMemberAmountByMovementFile(movementFileId, entitlementMaxCatCode.name()); + if (entitlementMaxJpaEntityId.isPresent()) { + EntitlementMaxJpaEntity entitlementMaxJpaEntity = entitlementMaxJpaRepository.findById(entitlementMaxJpaEntityId.get()); + if (entitlementMaxJpaEntity != null) { + getLogger().info("Entitlement Amount already exist in Movement File {}", movementFileId); + return Optional.ofNullable(entitlementMaxJpaEntity.getMaxValue()); + } + } + getLogger().info("Entitlement Amount does not exist in Movement File {}, we'll call SkyScanner", movementFileId); + return Optional.empty(); + } + + /** + * Filter function to decide if a sub-entitlement (EntitlementMaxCat) + * is allowed in the current situation. See method jobSatisfiesCondition. + * + * @param etMaxCat ss + * @param movFile s + * + * @return True except for the cases where the EntitlementMaxCat is not allowed. + */ + public boolean isAllowedEntitlementMaxCat(EntitlementMaxCatModel etMaxCat, MovementFileModel movFile) { + + //For crisis movement files we show all ceiling + if (movFile.getMovementContext().getName().equals(MovementContextType.CRISIS.name())){ + return true; + } + + // in case of the EOC, surface ceiling is always displayed + if (movFile.getMovementContext().getName().equalsIgnoreCase("EOC") && etMaxCat.getCode() == EntitlementMaxCatCode.SURFACE) { + return true; + } + if (etMaxCat.getHod() != null && movFile.getHodPosting() == etMaxCat.getHod()) { + return true; + + } + + if (etMaxCat.getJobToNonFamilyPosting() != null && movFile.getJobToFamilyPosting() != null) { + if (!movFile.getJobToFamilyPosting() == etMaxCat.getJobToNonFamilyPosting()) { + return true; + } else if (!etMaxCat.getJobToNonFamilyPosting()) {// If tud dependant we need to check the job from + return false; + } + } + + if (etMaxCat.getNonFamilyPosting() != null && movFile.getFamilyPosting() != null && !movFile.getFamilyPosting() == etMaxCat.getNonFamilyPosting()) { + return true; + + } + + return etMaxCat.getJobToNonFamilyPosting() == null && etMaxCat.getHod() == null && etMaxCat.getNonFamilyPosting() == null; + } + + + /** + * Utility method to check if a job satisfies the conditions. The rule is: + * + * - If all the "condition columns" ("HOD" and "NON_FAMILY_POSTING") are NULL, then the sub-entitlement is allowed. + * - Else: At least the condition of one column must be satisfied (in other words, + * we apply the OR operator with all the checks). + * + * This will be applied to fromJob and toJob. + * + * @param job s + * @param etMaxCat s + * @param shouldConsiderNonFamilyPosting e + * + * @return s + */ + public boolean jobSatisfiesCondition(VJobModel job, EntitlementMaxCatModel etMaxCat, boolean shouldConsiderNonFamilyPosting) { + + Boolean condNonFamilyPosting = etMaxCat.getNonFamilyPosting(); + Boolean condHod = etMaxCat.getHod(); + if (condNonFamilyPosting == null && condHod == null) { + // All null, return true: + return true; + } + // Check job is not null + if (job != null) { + + // Check if the NonFamilyPosting column must be checked + if (condNonFamilyPosting != null && shouldConsiderNonFamilyPosting) { + // Check: Value in condition column is TRUE and the job is consistent with that: + if (condNonFamilyPosting && JobFamilyPostingCode.NON_FAMILY.equals(job.getFamilyPostingTypeCategory())) { + return true; + } + // Check: Value in condition column is FALSE and the job is consistent with that: + if (!condNonFamilyPosting && JobFamilyPostingCode.FAMILY.equals(job.getFamilyPostingTypeCategory())) { + return true; + } + } + // Check if the HOD column must be checked + if (condHod != null) { + // Check: Value in condition column is TRUE and the job is consistent with that: + if (condHod && job.getHod() != null && job.getHod()) { + return true; + } + // Check: Value in condition column is FALSE and the job is consistent with that: + return !condHod && job.getHod() != null && !job.getHod(); + } + } + // Nothing satisfied for this job: + return false; + } + + private Money getSuggestedAmount(EntitlementMaxModel entitlementMax, MovementFileModel movementFile) { + if (entitlementMax.getEntitlementMaxCat().getSuggestion()) { + EntitlementMaxDefaultJpaServiceProvider entitlementMaxDefaultService = + (EntitlementMaxDefaultJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(EntitlementMaxDefaultModel.class); + + EntitlementMaxDefaultModel model = entitlementMaxDefaultService.getEntitlementMaxDefault(movementFile, entitlementMax); + + if (model != null) { + return model.getAmount(); + } + } + + return null; + } + + + private List orderRequestInEntitltmentListList(List ordered) { + ordered.forEach(ent -> + { + List requestModelSorted = new ArrayList(); + ent.setRequests(orderChildren(ent.getRequests(),requestModelSorted,1)); + }); + return ordered; + } + private List orderChildren(List requests,List requestModelSorted,Integer level){ + + if(requests == null){ + return null; + } + requests.forEach( + requestModel -> { + if((requestModel.getParent() == null && level == 1 ) + || (requestModel.getParent() != null && level == 2)){ + treatChildren(requestModel,requestModelSorted); + } + }); + return requestModelSorted; + } + void treatChildren(RequestModel requestModel,List requestModelSorted){ + requestModelSorted.add(requestModel); + if (requestModel.getChildren() != null ) { + List topUpList = requestModel.getChildren().stream().filter(req -> req.getRequestType().equals("TopUpRequest")).collect(Collectors.toList()); + List ClearingList = requestModel.getChildren().stream().filter(req -> req.getRequestType().equals("ClearingRequest")).collect(Collectors.toList()); + orderChildren(topUpList,requestModelSorted,2); + orderChildren(ClearingList,requestModelSorted,2); + } + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/RequestIndemnityJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/RequestIndemnityJpaServiceProvider.java new file mode 100644 index 0000000..9cbce4c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/RequestIndemnityJpaServiceProvider.java @@ -0,0 +1,171 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonIndemnityJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.RequestIndemnityJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.PersonIndemnityJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.RequestIndemnityJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.RequestJpaRepository; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.InstallationRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.entitlement.RequestIndemnityModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.InstallationRequestModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.time.Month; +import java.time.format.DateTimeFormatter; +import java.util.Arrays; +import java.util.List; +import java.util.Optional; + +@Service +@Transactional +public class RequestIndemnityJpaServiceProvider extends AbstractDataServiceProvider + implements EntityCreator, + EntityUpdater, + EntityReader +{ + + private final RequestIndemnityJpaRepository requestIndemnityJpaRepository; + + private final RequestJpaRepository requestJpaRepository; + + private final DataServiceProviderRegistry dataServiceProviderRegistry; + + private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyMM"); + + private static final String INDEMNITY_TYPE_IP2 = "IP2"; + + @Autowired + public RequestIndemnityJpaServiceProvider(RequestIndemnityJpaRepository requestIndemnityJpaRepository , RequestJpaRepository requestJpaRepository, DataServiceProviderRegistry dataServiceProviderRegistry) { + this.requestIndemnityJpaRepository = requestIndemnityJpaRepository; + this.dataServiceProviderRegistry = dataServiceProviderRegistry; + this.requestJpaRepository = requestJpaRepository; + } + + @Override + public Class getModelType() { + return RequestIndemnityModel.class; + } + + @Override + public Class getEntityType() { + return RequestIndemnityJpaEntity.class; + } + + public Optional getByRequestId(Long requestId) { + RequestJpaEntity requestJpaEntity = requestJpaRepository.findById(requestId); + RequestIndemnityJpaEntity requestIndemnityJpaEntity = requestIndemnityJpaRepository.findByRequestId(requestId); + if (requestIndemnityJpaEntity != null) { + RequestIndemnityModel requestIndemnityModel = getBeanMapper().map(requestIndemnityJpaEntity, RequestIndemnityModel.class); + return Optional.of(requestIndemnityModel); + } + if(requestJpaEntity.getRequestType().equals(RequestJpaEntity.REQUEST_TYPE_INSTALLATION)) { + //if no indemnity exist for installation we are creating it from Sysper + return createIndemnityFromSysper(requestId); + }else{ + return Optional.empty(); + } + } + + + /** + * Creates a record into REQUEST_INDEMNITIES table if there is none based on Sysper data + * @param requestId + * @return + */ + private Optional createIndemnityFromSysper(Long requestId) { + getLogger().info( + "Request indemnity not found for installation request {}, going to create it from with Sysper data", + requestId); + + return extractIndemnityData(requestId).map(this::create); + } + + /** + * Updates an existing record into REQUEST_INDEMNITIES table based on Sysper data + * @param requestId + * @return + */ + public Optional updateIndemnityFromSysper(Long requestId) { + RequestIndemnityJpaEntity requestIndemnityJpaEntity = requestIndemnityJpaRepository.findByRequestId( + requestId); + if (requestIndemnityJpaEntity != null) { + RequestIndemnityModel existingModel = getBeanMapper().map(requestIndemnityJpaEntity, + RequestIndemnityModel.class); + + extractIndemnityData(requestId).map(modelSysper -> { + existingModel.setUnit(modelSysper.getUnit()); + existingModel.setNumber(modelSysper.getNumber()); + existingModel.setType(modelSysper.getType()); + existingModel.setOriginPeriodYear(modelSysper.getOriginPeriodYear()); + existingModel.setOriginPeriodMonth(modelSysper.getOriginPeriodMonth()); + existingModel.setPaymentPeriodYear(modelSysper.getPaymentPeriodYear()); + existingModel.setPaymentPeriodMonth(modelSysper.getPaymentPeriodMonth()); + existingModel.setComment(modelSysper.getComment()); + getLogger().info( + "Request indemnity found for installation request {}, going to update it with Sysper data", + requestId); + return Optional.of(this.update(existingModel)); + }); + } + return Optional.empty(); + } + + private Optional extractIndemnityData(Long requestId) { + return extractPersonIndemnityData(requestId).map( + personIndemnityJpaEntity -> RequestIndemnityModel.builder() + .unit(personIndemnityJpaEntity.getUnitEn()) + .number(personIndemnityJpaEntity.getAllowancesCount().intValue()) + .type(personIndemnityJpaEntity.getIndemnityTypeEn().substring( + personIndemnityJpaEntity.getIndemnityTypeEn().indexOf("=") + 1, + personIndemnityJpaEntity.getIndemnityTypeEn().indexOf("]") + )) + .originPeriodYear(getPeriodYear(personIndemnityJpaEntity.getOriginPeriod())) + .originPeriodMonth(getPeriodMonth(personIndemnityJpaEntity.getOriginPeriod())) + .paymentPeriodYear(getPeriodYear(personIndemnityJpaEntity.getPaymentPeriod())) + .paymentPeriodMonth(getPeriodMonth(personIndemnityJpaEntity.getPaymentPeriod())) + .comment(personIndemnityJpaEntity.getComment()) + .requestId(requestId).build()); + } + + public Optional extractPersonIndemnityData(Long requestId) { + PersonIndemnityJpaEntity result = null; + InstallationRequestJpaServiceProvider installationRequestJpaServiceProvider = (InstallationRequestJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor(InstallationRequestModel.class); + InstallationRequestModel request = installationRequestJpaServiceProvider.read(requestId); + MovementFileJpaServiceProvider movementFileService = (MovementFileJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + MovementFileModel movementFile = movementFileService.getMovementFile( + request.getDeclaration().getMovementFileId()); + if (movementFile.getStartDate() != null) { + List periods = Arrays.asList(FORMATTER.format(movementFile.getStartDate()), + FORMATTER.format(movementFile.getStartDate().plusMonths(1))); + PersonIndemnityJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + PersonIndemnityJpaEntity.class, PersonIndemnityJpaRepository.class); + List indemnities = repo.findByBenefPerIdAndCodeAndOriginPeriodIn( + request.getStaffMember().getId(), INDEMNITY_TYPE_IP2, periods); + if (!indemnities.isEmpty()) { + result = indemnities.get(0); + } + } + return Optional.ofNullable(result); + } + + private Integer getPeriodYear(String paymentPeriod) { + return Integer.valueOf("20" + paymentPeriod.substring(0, 2)); + } + + private Month getPeriodMonth(String paymentPeriod) { + return Month.of(Integer.parseInt(paymentPeriod.substring(2, 4))); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/VEmptyRateEntitlementTypeJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/VEmptyRateEntitlementTypeJpaServiceProvider.java new file mode 100644 index 0000000..e4844f1 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/VEmptyRateEntitlementTypeJpaServiceProvider.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.VEmptyRateEntitlementTypeJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.VEmptyRateEntitlementTypeJpaRepository; +import eu.europa.eeas.erights.common.service.model.entitlement.VEmptyRateEntitlementTypeModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.ArrayList; +import java.util.List; + +@Service +@Transactional +public class VEmptyRateEntitlementTypeJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader { + + @Override + public Class getModelType() { + return VEmptyRateEntitlementTypeModel.class; + } + + @Override + public Class getEntityType() { + return VEmptyRateEntitlementTypeJpaEntity.class; + } + + public List getEntitlementsWithEmptyRates() { + List entitlementTypeModels = findAllEntitlementTypeModels(); + return new ArrayList<>(entitlementTypeModels); + } + + private List findAllEntitlementTypeModels() { + VEmptyRateEntitlementTypeJpaRepository repo = (VEmptyRateEntitlementTypeJpaRepository) getEntityRepositoryRegistry().getReaderRepositoryFor(VEmptyRateEntitlementTypeJpaEntity.class); + Iterable entitlementTypeJpaEntityList = repo.findAll(); + return getBeanMapper().mapAsList(entitlementTypeJpaEntityList, VEmptyRateEntitlementTypeModel.class); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/AdvanceRequestJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/AdvanceRequestJpaServiceProvider.java new file mode 100644 index 0000000..6b92d61 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/AdvanceRequestJpaServiceProvider.java @@ -0,0 +1,403 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement.request; + +import eu.europa.eeas.ananke.core.base.context.AnankeContext; +import eu.europa.eeas.ananke.core.base.exception.NotAllowedRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.ananke.tools.filemanagement.FileManager; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.ananke.tools.statemachine.service.history.StateMachineHistoryHolder; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionResultModel; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.PersonBankInfoJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeCatJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.AdvanceRequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.PersonBankInfoJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.AdvanceRequestJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.RequestJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.RequestSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementMaxDefaultJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementMaxJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementTypeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementContextType; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import eu.europa.eeas.erights.common.service.model.declaration.PersonBankInfoModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeCatModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.AdvanceRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestDetailAttachmentModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestDetailModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.service.provider.BankAccountServiceProvider; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.javamoney.moneta.Money; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.money.MonetaryAmount; +import java.time.LocalDate; +import java.util.*; +import java.util.stream.Collectors; + +@Service +@Transactional +public class AdvanceRequestJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, EntityCreator, + EntityUpdater, EntityDeleter { + + @Autowired + private FileManager fileManager; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @Autowired + private MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + @Autowired + @Qualifier(ERightsBeanNames.AdvanceRequestStateMachine.SERVICE) + private StateMachineService requestStateMachineService; + + @Autowired + private AnankeContext anankeContext; + + @Autowired + private BankAccountServiceProvider bankAccountServiceProvider; + + @Autowired + @Qualifier(ERightsBeanNames.REQUEST_SECURITY_CHECKER) + private RequestSecurityChecker requestSecurityChecker; + + @Autowired + private EntitlementMaxDefaultJpaServiceProvider entitlementMaxDefaultJpaServiceProvider; + + @Autowired + private EntitlementMaxJpaServiceProvider entitlementMaxJpaServiceProvider; + + @Override + public Class getModelType() { + return AdvanceRequestModel.class; + } + + @Override + public Class getEntityType() { + return AdvanceRequestJpaEntity.class; + } + + public AdvanceRequestModel createRequest(DeclarationModel declaration) { + AdvanceRequestModel advanceRequest = getAdvancedRequest(declaration.getId()); + if (advanceRequest == null) { + advanceRequest = this.buildAdvanceRequest(declaration); + if (advanceRequest != null) { + AdvanceRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(AdvanceRequestJpaEntity.class, AdvanceRequestJpaRepository.class); + repo.save(getBeanMapper().map(advanceRequest, AdvanceRequestJpaEntity.class)); + advanceRequest = getAdvancedRequest(declaration.getId()); + } + + } + + return advanceRequest; + } + + public AdvanceRequestModel getRequest(Long requestId) { + AdvanceRequestModel advanceRequestModel = this.read(requestId); + advanceRequestModel.setPersonBankInfo(bankAccountServiceProvider.getIbanCodeIfDoesNotExistOne(advanceRequestModel.getPersonBankInfo())); + return advanceRequestModel; + } + + public AdvanceRequestModel newStateMachineEvent(String stateMachineEvent, Long requestId) { + AdvanceRequestEvent event = AdvanceRequestEvent.valueOf(stateMachineEvent); + + AdvanceRequestModel request = this.read(requestId); + if (request == null) { + throw new ResourceNotFoundRuntimeException(ERightsExceptionCode.ER014); + } + + StateMachineTransitionResultModel transitionResult = + this.requestStateMachineService.send(request.getSmId(), event, Collections.singletonMap( + MovementFileMessageHeader.MOVEMENT_FILE_ID.name(), + request.getDeclaration().getMovementFileId())); + + if (Boolean.TRUE.equals(transitionResult.getValid())) { + //RIGD-720 reset total amount when transition from rejected -> awaiting + if (request.getState() == AdvanceRequestState.REJECTED && transitionResult.getArrivalState() == AdvanceRequestState.DRAFT) { + request.setTotalAmount(null); + } + + if (transitionResult.getArrivalState() == AdvanceRequestState.REJECTED) { + MovementFileModel movementFile = movementFileJpaServiceProvider.read(request.getDeclaration().getMovementFileId()); + emailEdmsServiceProvider.notifyEntitlementRequestStatus(request, movementFile, NotificationTemplateCode.REJECTED_ADV_REM_REQUEST); + } + + if (transitionResult.getArrivalState() == AdvanceRequestState.APPROVED && AdvanceRequestEvent.APPROVE == transitionResult.getEvent()) { + MovementFileModel movementFile = movementFileJpaServiceProvider.read(request.getDeclaration().getMovementFileId()); + emailEdmsServiceProvider.notifyEntitlementRequestStatus(request, movementFile, NotificationTemplateCode.APPROVED_ADV_REM_REQUEST); + } + + if (transitionResult.getArrivalState() == AdvanceRequestState.PAID) { + MovementFileModel movementFile = movementFileJpaServiceProvider.read(request.getDeclaration().getMovementFileId()); + emailEdmsServiceProvider.notifyEntitlementRequestPaid(request, movementFile); + } + + if (request.getState() == AdvanceRequestState.DRAFT && transitionResult.getArrivalState() == AdvanceRequestState.AWAITING) { + request.setDraftToAwaitingDate(LocalDate.now()); + } + + request.setState(transitionResult.getArrivalState()); + + return this.update(request); + + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid"); + } + + } + + + public List> getStateMachineHistory(Long requestId) { + StateMachineHistoryHolder stateMachineHistoryHolder; + AdvanceRequestModel request = this.read(requestId); + + stateMachineHistoryHolder = this.requestStateMachineService.getHistory(request.getSmId()); + + return stateMachineHistoryHolder.getTransitions(); + } + + public List getAllByState(AdvanceRequestState state) { + AdvanceRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(AdvanceRequestJpaEntity.class, AdvanceRequestJpaRepository.class); + List advanceRequestJpaEntities = repo.findAllByState(state); + return getBeanMapper().mapAsList(advanceRequestJpaEntities, AdvanceRequestModel.class); + + } + + public AdvanceRequestModel getAdvancedRequest(Long declarationId) { + AdvanceRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(AdvanceRequestJpaEntity.class, AdvanceRequestJpaRepository.class); + AdvanceRequestJpaEntity request = repo.findByDeclarationId(declarationId); + return getBeanMapper().map(request, AdvanceRequestModel.class); + } + + private AdvanceRequestModel buildAdvanceRequest(DeclarationModel declaration) { + AdvanceRequestModel model = new AdvanceRequestModel(); + model.setDeclaration(declaration); + + MovementFileJpaServiceProvider movementFileService = (MovementFileJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + MovementFileModel movementFile = movementFileService.getMovementFile(declaration.getMovementFileId()); + + //set entitlement + EntitlementTypeJpaServiceProvider entitlementService = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(EntitlementTypeModel.class); + List entitlements = entitlementService.getEntitlementsTypeList(declaration.getMovementFileId()); + Optional removalEntitlement = entitlements.stream() + .filter(ent -> ent.getEntitlementTypeCat().getCode() == EntitlementTypeCatCode.REM).findFirst(); + if (!isEntitlementAvailable(removalEntitlement)) { + return null; + } + model.setEntitlementType(removalEntitlement.get()); + model.setEntitlementTypeCat(removalEntitlement.get().getEntitlementTypeCat()); + + //set bank account + model.setPersonBankInfo(declaration.getPersonBankInfo()); + + model.setStaffMember(declaration.getStaffMember()); + model.setYear(movementFile.getYear()); + + //set request number and requestStringId + ImmutablePair requestNumberAndStringId = getRequestStringId(removalEntitlement.get().getEntitlementTypeCat(), movementFile); + model.setRequestStringId(requestNumberAndStringId.getValue()); + model.setRequestNumber(requestNumberAndStringId.getKey()); + + //set request declaration no + model.setRequestDeclarationNo(getRequestDeclarationNo(declaration.getId())); + + //Set entry into storage values in request + if (canUpdateRequestEISCeiling(model)) { + model.setCountry(declaration.getCountryForEIS()); + model.setCity(declaration.getCityForEIS()); + model.setEntryIntoStorage(declaration.getEntryIntoStorage()); + + } + + //set state + StateMachineTransitionResultModel transitionResult = + this.requestStateMachineService.send(AdvanceRequestEvent.SAVE_AS_DRAFT, Collections.singletonMap( + MovementFileMessageHeader.MOVEMENT_FILE_ID.name(), + declaration.getMovementFileId())); + if (Boolean.TRUE.equals(transitionResult.getValid())) { + model.setState(transitionResult.getArrivalState()); + model.setSmId(transitionResult.getId()); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid, buildAdvanceRequest()"); + } + + removalEntitlement.get().getEntitlementMaxList().forEach(max -> { + if (max.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.AIRFREIGHT) { + model.setAirfreightRate(max.getMaxValue()); + } else if (max.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.SURFACE) { + model.setSurfaceRate(max.getMaxValue()); + } else if (max.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.STORAGE) { + model.setStorageRate(max.getMaxValue()); + model.setCity(max.getCity()); + model.setCountry(max.getCountry()); + } else if (max.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.CAR) { + model.setCarRate(max.getMaxValue()); + } + }); + + return model; + } + + private boolean isEntitlementAvailable(Optional removalEntitlement) { + return removalEntitlement.isPresent() && removalEntitlement.get().getEnable(); + } + + private Long getRequestDeclarationNo(Long declarationId) { + AdvanceRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(AdvanceRequestJpaEntity.class, AdvanceRequestJpaRepository.class); + return repo.getRequestDeclarationNo(declarationId); + } + + private ImmutablePair getRequestStringId(EntitlementTypeCatModel entTypeCat, MovementFileModel movementFile) { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + Long nextSequence = repo.getSequenceForRequestWithEntitlementID(movementFile.getYear(), getBeanMapper().map(entTypeCat, EntitlementTypeCatJpaEntity.class)); + String requestId = Arrays.asList(movementFile.getYear().toString(), entTypeCat.getCode().name(), String.format("%03d", nextSequence)).stream().collect(Collectors.joining("-")); + + return new ImmutablePair(nextSequence, requestId); + } + + public AdvanceRequestModel updateRequest(AdvanceRequestModel model) { + if (Boolean.TRUE.equals(requestSecurityChecker.canUpdate(model, model.getState().name()))) { + updateBankAccount(model); + + if (model.getRequestDetails() != null) { + model.getRequestDetails().forEach(rDetails -> { + List attachmentModels = rDetails.getAttachments(); + if (attachmentModels != null) { + attachmentModels.forEach(att -> att.setRequestDetail(rDetails)); + + //remove the deleted attachments + rDetails.setAttachments(rDetails.getAttachments().stream().filter(att -> att.getFileName() != null).collect(Collectors.toList())); + + //persist the new attachments + Set attachmentsToPersist = getAttachmentsToPersist(rDetails); + attachmentsToPersist.stream().forEach(this.fileManager::persist); + + } + + //set proforma amount + if (rDetails.getProforma() != null) { + rDetails.setAmount(rDetails.getProforma().divide(rDetails.getExchangeRate())); + } + }); + + //calculate total amount + List amounts = model.getRequestDetails().stream().map(RequestDetailModel::getAmount).collect(Collectors.toList()); + Money sum = Money.of(0, "EUR"); + for (MonetaryAmount monetaryAmount : amounts) { + sum = sum.add(monetaryAmount); + } + + + } + + //preserve on update the database state. State can only be changed through newStateMachine + AdvanceRequestModel dbModel = this.read(model.getId()); + model.setState(dbModel.getState()); + + return this.update(model); + } else if (Boolean.TRUE.equals(requestSecurityChecker.canReject(model))) { + AdvanceRequestModel dbModel = this.read(model.getId()); + dbModel.setComments(model.getComments()); + return this.update(dbModel); + } else { + throw new RuntimeException("User cannot update the request because not have permissions"); + } + } + + private void updateBankAccount(RequestModel model) { + model.setPersonBankInfo(getBeanMapper().map(getById(model), PersonBankInfoModel.class)); + } + + private PersonBankInfoJpaEntity getById(RequestModel model) { + PersonBankInfoJpaRepository personBankInfoJpaRepo = getEntityRepositoryRegistry() + .getReaderRepositoryFor(PersonBankInfoJpaEntity.class, PersonBankInfoJpaRepository.class); + return personBankInfoJpaRepo.findById(model.getPersonBankInfo().getId()); + } + + private Set getAttachmentsToPersist(RequestDetailModel model) { + Set result = new HashSet<>(); + + model.getAttachments().stream().filter(e -> e.getId() == null).forEach(e -> result.add(e.getFileUid())); + + return result; + } + + public void deleteRequest(DeclarationModel declaration) { + AdvanceRequestModel existingAdvanceRequest = getAdvancedRequest(declaration.getId()); + if (existingAdvanceRequest != null) { + AdvanceRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(AdvanceRequestJpaEntity.class, AdvanceRequestJpaRepository.class); + if (existingAdvanceRequest.getState() == AdvanceRequestState.DRAFT && existingAdvanceRequest.getPaymentRequest() == null) { + repo.deleteById(existingAdvanceRequest.getId()); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER015, "You have already submitted a removal request. If you wish to change your removal options, please make sure your current request is in draft. If it has not been approved yet, you can cancel it. Otherwise, contact RM.BS.4 on this matter. "); + } + + } + } + + public AdvanceRequestModel updateAdvanceRequestCountryCityEIS(DeclarationModel declaration, AdvanceRequestModel advanceRequestModel) { + //Set entry into storage values in request + advanceRequestModel.setEntryIntoStorage(declaration.getEntryIntoStorage()); + if (declaration.getEntryIntoStorage() != null && !declaration.getEntryIntoStorage() && canUpdateRequestEISCeiling(advanceRequestModel)) { // we only update when the entry into storage is N, so we disable the ceiling in the request + advanceRequestModel.setCountry(declaration.getCountryForEIS()); + advanceRequestModel.setCity(declaration.getCityForEIS()); + advanceRequestModel.setStorageRate(null); + + } else if (declaration.getEntryIntoStorage() != null && declaration.getEntryIntoStorage().equals(Boolean.TRUE)) { + advanceRequestModel.setCountry(declaration.getCountryForEIS()); + advanceRequestModel.setCity(declaration.getCityForEIS()); + MovementFileJpaServiceProvider movementFileService = (MovementFileJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + MovementFileModel movementFile = movementFileService.getMovementFile(declaration.getMovementFileId()); + Optional amount = isCrisis(movementFile) ? Optional.empty() : entitlementMaxDefaultJpaServiceProvider.getEntitlementMaxDefaultAMount(movementFile.getCityFrom().getCode(), declaration.getCityForEIS().getCode(), movementFile.getStartDate(), 3L); + amount.ifPresent(advanceRequestModel::setStorageRate); + } + if (declaration.getVolumeAirFreightCeiling() != null && canUpdateRequestEISCeiling(advanceRequestModel)) { // we only update when the entry into storage is N, so we disable the ceiling in the request + advanceRequestModel.setVolumeAirFreightCeiling(declaration.getVolumeAirFreightCeiling()); + advanceRequestModel.setKgAirFreightCeiling(declaration.getKgAirFreightCeiling()); + } + return this.update(advanceRequestModel); + } + + public boolean canUpdateRequestEISCeiling(AdvanceRequestModel advanceRequestModel) { + + return advanceRequestModel.getState() == AdvanceRequestState.DRAFT && advanceRequestModel.getPaymentRequest() == null; + + } + private boolean isCrisis(MovementFileModel movementFile) { + return movementFile.getMovementContext().getName().equals(MovementContextType.CRISIS.name()); + } + + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/ClearingRequestJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/ClearingRequestJpaServiceProvider.java new file mode 100644 index 0000000..6574852 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/ClearingRequestJpaServiceProvider.java @@ -0,0 +1,409 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement.request; + +import eu.europa.eeas.ananke.core.base.context.AnankeContext; +import eu.europa.eeas.ananke.core.base.exception.NotAllowedRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.ananke.tools.filemanagement.FileManager; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.ananke.tools.statemachine.service.history.StateMachineHistoryHolder; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionResultModel; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.PersonBankInfoJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeCatJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.ClearingRequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.PersonBankInfoJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.ClearingRequestJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.RequestJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.RequestSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementTypeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import eu.europa.eeas.erights.common.service.model.declaration.PersonBankInfoModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeCatModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.*; +import eu.europa.eeas.erights.common.service.provider.BankAccountServiceProvider; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.ClearingRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.ClearingRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.util.*; +import java.util.stream.Collectors; + +@Service +@Transactional +public class ClearingRequestJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, + EntityUpdater, EntityDeleter, EntityCreator { + + @Autowired + private AnankeContext anankeContext; + + @Autowired + @Qualifier(ERightsBeanNames.ClearingRequestStateMachine.SERVICE) + private StateMachineService requestStateMachineService; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + private FileManager fileManager; + + @Autowired + private MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + @Autowired + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @Autowired + private BankAccountServiceProvider bankAccountServiceProvider; + + @Autowired + @Qualifier(ERightsBeanNames.REQUEST_SECURITY_CHECKER) + private RequestSecurityChecker requestSecurityChecker; + + @Override + public Class getModelType() { + return ClearingRequestModel.class; + } + + @Override + public Class getEntityType() { + return ClearingRequestJpaEntity.class; + } + + public ClearingRequestModel getRequest(Long requestId) { + ClearingRequestModel ClearingRequestModel = this.read(requestId); + PersonBankInfoModel personBankInfoModel = ClearingRequestModel.getPersonBankInfo(); + ClearingRequestModel.setPersonBankInfo(bankAccountServiceProvider.getIbanCodeIfDoesNotExistOne(personBankInfoModel)); + + return ClearingRequestModel; + } + + public List> getStateMachineHistory(Long requestId) { + StateMachineHistoryHolder stateMachineHistoryHolder; + ClearingRequestModel request = this.read(requestId); + stateMachineHistoryHolder = this.requestStateMachineService.getHistory(request.getSmId()); + return stateMachineHistoryHolder.getTransitions(); + } + + public void createRequest(DeclarationModel declaration) { + ClearingRequestModel clearingRequestModel = getClearingRequest(declaration.getId()); + if (clearingRequestModel == null) { + ClearingRequestModel model = this.buildClearingRequest(declaration); + if (model != null) { + ClearingRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(ClearingRequestJpaEntity.class, ClearingRequestJpaRepository.class); + ClearingRequestJpaEntity clearingRequest = getBeanMapper().map(model, ClearingRequestJpaEntity.class); + repo.save(clearingRequest); + } + } + } + + public ClearingRequestModel createRequest(Long advanceRequestId) { + ClearingRequestModel clearingRequestModel = getClearingRequestByAdvanceId(advanceRequestId); + if (clearingRequestModel == null) { + AdvanceRequestJpaServiceProvider advanceRequestService = (AdvanceRequestJpaServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor(AdvanceRequestModel.class); + AdvanceRequestModel advanceRequestModel = advanceRequestService.getRequest(advanceRequestId); + ClearingRequestModel model = this.buildClearingRequestFromAdvance(advanceRequestModel); + if (model != null) { + ClearingRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(ClearingRequestJpaEntity.class, ClearingRequestJpaRepository.class); + ClearingRequestJpaEntity clearingRequest = getBeanMapper().map(model, ClearingRequestJpaEntity.class); + ClearingRequestJpaEntity clearing = repo.save(clearingRequest); + return getBeanMapper().map(clearing, ClearingRequestModel.class); + } + } + return clearingRequestModel; + } + + public void deleteRequest(DeclarationModel declaration) { + ClearingRequestModel request = getClearingRequest(declaration.getId()); + if (request != null) { + ClearingRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(ClearingRequestJpaEntity.class, ClearingRequestJpaRepository.class); + if (request.getState() == ClearingRequestState.DRAFT) { + repo.deleteById(request.getId()); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER015, "You have already submitted a removal request. If you wish to change your removal options, please make sure your current request is in draft. If it has not been approved yet, you can cancel it. Otherwise, contact RM.BS.4 on this matter. "); + } + } + } + + public ClearingRequestModel updateRequest(ClearingRequestModel model) { + if (requestSecurityChecker.canUpdate(model, model.getState().name())) { + updateBankAccount(model); + + if (model.getRequestDetails() != null) { + model.getRequestDetails().forEach(rDetails -> { + List attachmentModels = rDetails.getAttachments(); + if (attachmentModels != null) { + attachmentModels.forEach(att -> att.setRequestDetail(rDetails)); + removeTheDeletedAttachements(rDetails); + persistTheNewAttachements(rDetails); + } + }); + } + preserveOnUpdateTheDatabaseState(model); + return this.update(model); + } else if (requestSecurityChecker.canReject(model)) { + ClearingRequestModel dbModel = this.read(model.getId()); + dbModel.setComments(model.getComments()); + return this.update(dbModel); + } else { + throw new RuntimeException("User cannot update the request because not have permissions"); + } + } + + public ClearingRequestModel newStateMachineEvent(String stateMachineEvent, Long requestId) { + ClearingRequestEvent event = ClearingRequestEvent.valueOf(stateMachineEvent); + + ClearingRequestModel request = this.read(requestId); + if (request == null) { + throw new ResourceNotFoundRuntimeException(ERightsExceptionCode.ER014); + } + + StateMachineTransitionResultModel transitionResult = + this.requestStateMachineService.send(request.getSmId(), event, Collections.singletonMap( + MovementFileMessageHeader.MOVEMENT_FILE_ID.name(), + request.getDeclaration().getMovementFileId())); + + if (transitionResult.getValid()) { + //RIGD-720 reset total amount when transition from rejected -> awaiting + if (request.getState() == ClearingRequestState.REJECTED && transitionResult.getArrivalState() == ClearingRequestState.DRAFT) { + request.setTotalAmount(null); + } + + if (transitionResult.getArrivalState() == ClearingRequestState.REJECTED) { + MovementFileModel movementFile = movementFileJpaServiceProvider.read(request.getDeclaration().getMovementFileId()); + emailEdmsServiceProvider.notifyEntitlementRequestStatus(request, movementFile, NotificationTemplateCode.REJECTED_ADV_REM_REQUEST); + } + + if (transitionResult.getArrivalState() == ClearingRequestState.APPROVED && ClearingRequestEvent.APPROVE == transitionResult.getEvent()) { + MovementFileModel movementFile = movementFileJpaServiceProvider.read(request.getDeclaration().getMovementFileId()); + emailEdmsServiceProvider.notifyEntitlementRequestStatus(request, movementFile, NotificationTemplateCode.APPROVED_ADV_REM_REQUEST); + } + + if (transitionResult.getArrivalState() == ClearingRequestState.PAID) { + MovementFileModel movementFile = movementFileJpaServiceProvider.read(request.getDeclaration().getMovementFileId()); + emailEdmsServiceProvider.notifyEntitlementRequestPaid(request, movementFile); + } + + if (request.getState() == ClearingRequestState.DRAFT && transitionResult.getArrivalState() == ClearingRequestState.AWAITING) { + request.setDraftToAwaitingDate(LocalDate.now()); + } + + request.setState(transitionResult.getArrivalState()); + + return this.update(request); + + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid"); + } + + } + + private void updateBankAccount(RequestModel model) { + model.setPersonBankInfo(getBeanMapper().map(getById(model), PersonBankInfoModel.class)); + } + + private PersonBankInfoJpaEntity getById(RequestModel model) { + PersonBankInfoJpaRepository personBankInfoJpaRepo = getEntityRepositoryRegistry() + .getReaderRepositoryFor(PersonBankInfoJpaEntity.class, PersonBankInfoJpaRepository.class); + return personBankInfoJpaRepo.findById(model.getPersonBankInfo().getId()); + } + + private void preserveOnUpdateTheDatabaseState(ClearingRequestModel model) { + ClearingRequestModel dbModel = this.read(model.getId()); + model.setState(dbModel.getState()); + } + + private void removeTheDeletedAttachements(RequestDetailModel rDetails) { + rDetails.setAttachments(rDetails.getAttachments().stream().filter(att -> att.getFileName() != null).collect(Collectors.toList())); + } + + private void persistTheNewAttachements(RequestDetailModel rDetails) { + Set attachmentsToPersist = getAttachmentsToPersist(rDetails); + attachmentsToPersist.forEach(this.fileManager::persist); + } + + private Set getAttachmentsToPersist(RequestDetailModel model) { + Set result = new HashSet<>(); + model.getAttachments().stream().filter(e -> e.getId() == null).forEach(e -> result.add(e.getFileUid())); + return result; + } + + + + private ClearingRequestModel buildClearingRequest(DeclarationModel declaration) { + ClearingRequestModel model = new ClearingRequestModel(); + model.setDeclaration(declaration); + + MovementFileJpaServiceProvider movementFileService = (MovementFileJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + MovementFileModel movementFile = movementFileService.getMovementFile(declaration.getMovementFileId()); + + //set entitlement + EntitlementTypeJpaServiceProvider entitlementService = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(EntitlementTypeModel.class); + List entitlements = entitlementService.getEntitlementsTypeList(declaration.getMovementFileId()); + Optional removalEntitlement = entitlements.stream() + .filter(ent -> ent.getEntitlementTypeCat().getCode() == EntitlementTypeCatCode.REM).findFirst(); + if (!isEntitlementAvailable(removalEntitlement)) { + return null; + } + model.setEntitlementType(removalEntitlement.get()); + model.setEntitlementTypeCat(removalEntitlement.get().getEntitlementTypeCat()); + model.setPersonBankInfo(declaration.getPersonBankInfo()); + model.setStaffMember(declaration.getStaffMember()); + model.setYear(movementFile.getYear()); + ImmutablePair requestNumberAndStringId = getRequestStringId(removalEntitlement.get().getEntitlementTypeCat(), movementFile); + model.setRequestStringId(requestNumberAndStringId.getValue()); + model.setRequestNumber(requestNumberAndStringId.getKey()); + model.setRequestDeclarationNo(getRequestDeclarationNo(declaration.getId())); + + //set state + StateMachineTransitionResultModel transitionResult = + this.requestStateMachineService.send(ClearingRequestEvent.SAVE_AS_DRAFT, Collections.singletonMap( + MovementFileMessageHeader.MOVEMENT_FILE_ID.name(), + declaration.getMovementFileId())); + if (transitionResult.getValid()) { + model.setState(transitionResult.getArrivalState()); + model.setSmId(transitionResult.getId()); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid, buildClearingRequest()"); + } + + removalEntitlement.get().getEntitlementMaxList().forEach(max -> { + if (max.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.AIRFREIGHT) { + model.setAirfreightRate(max.getMaxValue()); + } else if (max.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.SURFACE) { + model.setSurfaceRate(max.getMaxValue()); + } else if (max.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.STORAGE) { + model.setStorageRate(max.getMaxValue());// we copy city and country from ceiling not from declaration + model.setCity(declaration.getCityForEIS()); + model.setCountry(declaration.getCountryForEIS()); + + } else if (max.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.CAR) { + model.setCarRate(max.getMaxValue()); + } + }); + + return model; + } + + private ClearingRequestModel buildClearingRequestFromAdvance(AdvanceRequestModel advanceRequestModel) { + ClearingRequestModel model = new ClearingRequestModel(); + model.setDeclaration(advanceRequestModel.getDeclaration()); + model.setParent(advanceRequestModel); + + MovementFileJpaServiceProvider movementFileService = (MovementFileJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + MovementFileModel movementFile = movementFileService.getMovementFile(advanceRequestModel.getDeclaration().getMovementFileId()); + + //set entitlement + EntitlementTypeJpaServiceProvider entitlementService = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(EntitlementTypeModel.class); + List entitlements = entitlementService.getEntitlementsTypeList(advanceRequestModel.getDeclaration().getMovementFileId()); + Optional removalEntitlement = entitlements.stream() + .filter(ent -> ent.getEntitlementTypeCat().getCode() == EntitlementTypeCatCode.REM).findFirst(); + if (!isEntitlementAvailable(removalEntitlement)) { + return null; + } + model.setEntitlementType(removalEntitlement.get()); + model.setEntitlementTypeCat(removalEntitlement.get().getEntitlementTypeCat()); + + // Creating Clearing Request: We get person bank info from Adv Request, not from Declaration: + model.setPersonBankInfo(advanceRequestModel.getPersonBankInfo()); + + model.setStaffMember(advanceRequestModel.getDeclaration().getStaffMember()); + model.setYear(movementFile.getYear()); + ImmutablePair requestNumberAndStringId = getRequestStringId(removalEntitlement.get().getEntitlementTypeCat(), movementFile); + model.setRequestStringId(requestNumberAndStringId.getValue()); + model.setRequestNumber(requestNumberAndStringId.getKey()); + model.setRequestDeclarationNo(getRequestDeclarationNo(advanceRequestModel.getDeclaration().getId())); + + //Set entry into storage values in request + model.setCountry(advanceRequestModel.getCountry()); + model.setCity(advanceRequestModel.getCity()); + model.setEntryIntoStorage(advanceRequestModel.getEntryIntoStorage()); + + model.setKgAirFreightCeiling(advanceRequestModel.getKgAirFreightCeiling()); + model.setVolumeAirFreightCeiling(advanceRequestModel.getVolumeAirFreightCeiling()); + + //set state + StateMachineTransitionResultModel transitionResult = + this.requestStateMachineService.send(ClearingRequestEvent.SAVE_AS_DRAFT, Collections.singletonMap( + MovementFileMessageHeader.MOVEMENT_FILE_ID.name(), + advanceRequestModel.getDeclaration().getMovementFileId())); + if (transitionResult.getValid()) { + model.setState(transitionResult.getArrivalState()); + model.setSmId(transitionResult.getId()); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid, buildClearingRequestFromAdvance()"); + } + + removalEntitlement.get().getEntitlementMaxList().forEach(max -> { + if (max.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.AIRFREIGHT) { + model.setAirfreightRate(max.getMaxValue()); + } else if (max.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.SURFACE) { + model.setSurfaceRate(max.getMaxValue()); + } else if (max.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.STORAGE) { + model.setStorageRate(max.getMaxValue()); + model.setCity(max.getCity()); // we copy city and country from the ceiling not from advance request + model.setCountry(max.getCountry()); + + } else if (max.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.CAR) { + model.setCarRate(max.getMaxValue()); + } + }); + + return model; + } + + private boolean isEntitlementAvailable(Optional removalEntitlement) { + return removalEntitlement.isPresent() && removalEntitlement.get().getEnable(); + } + + private ImmutablePair getRequestStringId(EntitlementTypeCatModel entTypeCat, MovementFileModel movementFile) { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + Long nextSequence = repo.getSequenceForRequestWithEntitlementID(movementFile.getYear(), getBeanMapper().map(entTypeCat, EntitlementTypeCatJpaEntity.class)); + String requestId = String.join("-", Arrays.asList(movementFile.getYear().toString(), entTypeCat.getCode().name(), String.format("%03d", nextSequence))); + return new ImmutablePair<>(nextSequence, requestId); + } + + private Long getRequestDeclarationNo(Long declarationId) { + ClearingRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(ClearingRequestJpaEntity.class, ClearingRequestJpaRepository.class); + return repo.getRequestDeclarationNo(declarationId); + } + + private ClearingRequestModel getClearingRequest(Long declarationId) { + ClearingRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(ClearingRequestJpaEntity.class, ClearingRequestJpaRepository.class); + ClearingRequestJpaEntity request = repo.findByDeclarationId(declarationId); + return getBeanMapper().map(request, ClearingRequestModel.class); + } + + public ClearingRequestModel getClearingRequestByAdvanceId(Long advanceId) { + ClearingRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(ClearingRequestJpaEntity.class, ClearingRequestJpaRepository.class); + ClearingRequestJpaEntity request = repo.findByParentId(advanceId); + return getBeanMapper().map(request, ClearingRequestModel.class); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/InstallationRequestJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/InstallationRequestJpaServiceProvider.java new file mode 100644 index 0000000..43c394d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/InstallationRequestJpaServiceProvider.java @@ -0,0 +1,403 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement.request; + +import eu.europa.eeas.ananke.core.base.exception.NotAllowedRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ValidationRuntimeException; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.ananke.tools.statemachine.service.history.StateMachineHistoryHolder; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionResultModel; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonAddressJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonIndemnityJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeCatJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.RequestIndemnityJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.InstallationRequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.PersonIndemnityJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.PersonAddressJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementTypeJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.RequestIndemnityJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.InstallationRequestJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.validation.Violation; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.PersonAddressModel; +import eu.europa.eeas.erights.common.service.model.PersonIndemnityModel; +import eu.europa.eeas.erights.common.service.model.RightVOBuilder; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationPersonModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeCatModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.InstallationPersonAddressModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.InstallationRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestDetailAttachmentModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestDetailModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.service.provider.sysper.SysperServiceProvider; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import eu.europa.eeas.erights.common.tools.statemachine.*; +import eu.europa.eeas.erights.web.client.model.RightVO; +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.time.Year; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; + +import static java.util.Objects.isNull; + +@Service +@Transactional +public class InstallationRequestJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, + EntityUpdater, EntityDeleter, + EntityCreator { + + public static final String ADDRESS_VALIDATED = "VALIDATED"; + + public static final Integer PERSONAL_PRIVATE_ADDRESS_CODE = 1; + + private static final String INDEMNITY_TYPE_IP2 = "IP2"; + + private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyMM"); + + @Autowired + @Qualifier(ERightsBeanNames.InstallationStateMachine.SERVICE) + private InstallationStateMachineService requestStateMachineService; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + private PersonAddressJpaRepository personAddressJpaRepository; + + @Autowired + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @Autowired + private SysperServiceProvider sysperServiceProvider; + @Override + public Class getModelType() { + return InstallationRequestModel.class; + } + + @Override + public Class getEntityType() { + return InstallationRequestJpaEntity.class; + } + + public InstallationRequestModel createInstallation(DeclarationModel declaration) { + List existingRequests = getRequests(declaration); + InstallationRequestModel model = null; + + if (existingRequests.isEmpty()) { + model = buildInstallationRequestModel(declaration); + + if (model != null) { + this.create(model); + } + } + return model; + + } + + public List getRequests(DeclarationModel declarationModel) { + InstallationRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(InstallationRequestJpaEntity.class, InstallationRequestJpaRepository.class); + List requests = repo.findAllByDeclarationId(declarationModel.getId()); + return getBeanMapper().mapAsList(requests, InstallationRequestModel.class); + } + + public InstallationRequestModel getRequest(Long requestId) { + InstallationRequestModel request = this.read(requestId); + + MovementFileModel movementFile = getMovementFileModel( + request.getDeclaration()); + + //add staff member in the list of declared persons + DeclarationPersonModel staffMember = new DeclarationPersonModel(); + staffMember.setId(-123l); + staffMember.setDeclaration(request.getDeclaration()); + staffMember.setPerson(request.getStaffMember()); + staffMember.setRelative(request.getStaffMember()); + staffMember.setDeclared(true); + + List declaredPersons = new ArrayList<>(); + declaredPersons.add(staffMember); + declaredPersons.addAll(request.getDeclaration().getDeclarationPersons()); + + //filter the addresses + declaredPersons.forEach(pers -> filterAddresses(movementFile, pers)); + + request.setAddresses(getInstallationPersonAddress(declaredPersons)); + + //set the indemnities + this.setIndemnities(request, movementFile); + + return request; + + } + + private void setIndemnities(InstallationRequestModel request, MovementFileModel movementFile) { + if (movementFile.getStartDate() == null) { + return; + } + List periods = Arrays.asList(FORMATTER.format(movementFile.getStartDate()), FORMATTER.format(movementFile.getStartDate().plusMonths(1))); + + PersonIndemnityJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(PersonIndemnityJpaEntity.class, PersonIndemnityJpaRepository.class); + List indemnities = repo.findByBenefPerIdAndCodeAndOriginPeriodIn(request.getStaffMember().getId(), INDEMNITY_TYPE_IP2, periods); + request.setIndemnities(getBeanMapper().mapAsList(indemnities, PersonIndemnityModel.class)); + } + + private void filterAddresses(MovementFileModel movementFile, DeclarationPersonModel pers) { + List addresses = personAddressJpaRepository.findAllByPerIdAndTadrCdAndCountryId(pers.getRelative().getId(), + PERSONAL_PRIVATE_ADDRESS_CODE, + movementFile.getCountryTo().getCode()); + + List addressesModel = getBeanMapper().mapAsList(addresses, PersonAddressModel.class); + List filteredAddresses = addressesModel.stream() + .filter(addr -> + movementFile.getStartDate() != null && addr.getCreatedDate() != null + && (addr.getCreatedDate().isAfter(movementFile.getStartDate()) || addr.getCreatedDate().isEqual(movementFile.getStartDate())) + && (addr.getCreatedDate().isBefore(movementFile.getStartDate().plusYears(1)) || addr.getCreatedDate().isEqual(movementFile.getStartDate().plusYears(1))) + ) + .map(addr -> { + addr.setStatus(ADDRESS_VALIDATED); + return addr; + }) + .collect(Collectors.toList()); + + pers.getRelative().setAddresses(filteredAddresses); + } + + private List getInstallationPersonAddress(List dependents) { + return dependents.stream() + .filter(dep -> !dep.getRelative().getAddresses().isEmpty()) + .map(dep -> { + List addresses = dep.getRelative().getAddresses(); + return addresses.stream().map(addr -> { + InstallationPersonAddressModel model = new InstallationPersonAddressModel(); + model.setAddress(addr); + model.setRelative(dep.getRelative()); + model.setRelation(dep.getRelation()); + model.setJoining(dep.getDeclared()); + return model; + }).collect(Collectors.toList()); + }) + .flatMap(x -> x.stream()) + .collect(Collectors.toList()); + } + + private InstallationRequestModel buildInstallationRequestModel(DeclarationModel declaration) { + EntitlementTypeJpaRepository entitlementTypeJpaRepository = (EntitlementTypeJpaRepository) getEntityRepositoryRegistry().getReaderRepositoryFor( + EntitlementTypeJpaEntity.class); + List installationEnt = entitlementTypeJpaRepository.findAllByMovementFileIdAndEntitlementTypeCatCode( + declaration.getMovementFileId(), + EntitlementTypeCatCode.INS); + + if (installationEnt.isEmpty() || !installationEnt.get(0).getEnable()) { + return null; + } + EntitlementTypeModel installationEntitlement = getBeanMapper().map(installationEnt.get(0), EntitlementTypeModel.class); + MovementFileModel movementFile = getMovementFileModel( + declaration); + + InstallationRequestModel model = new InstallationRequestModel(); + model.setEntitlementType(installationEntitlement); + model.setEntitlementTypeCat(installationEntitlement.getEntitlementTypeCat()); + model.setStaffMember(declaration.getStaffMember()); + model.setYear(movementFile.getYear()); + model.setPersonBankInfo(declaration.getPersonBankInfo()); + model.setDeclaration(declaration); + //set request number and requestStringId + ImmutablePair requestNumberAndStringId = getRequestStringId(installationEntitlement.getEntitlementTypeCat(), movementFile); + model.setRequestStringId(requestNumberAndStringId.getValue()); + model.setRequestNumber(requestNumberAndStringId.getKey()); + + //set request declaration no + model.setRequestDeclarationNo(getRequestDeclarationNo(declaration.getId())); + + //set state + StateMachineTransitionResultModel transitionResult = + this.requestStateMachineService.send(InstallationEvent.CREATE, Collections.singletonMap( + MovementFileMessageHeader.MOVEMENT_FILE_ID.name(), + declaration.getMovementFileId())); + if (transitionResult.getValid()) { + model.setState(transitionResult.getArrivalState()); + model.setSmId(transitionResult.getId()); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid, buildAdvanceRequest()"); + } + return model; + } + + private ImmutablePair getRequestStringId(EntitlementTypeCatModel entTypeCat, MovementFileModel movementFile) { + InstallationRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(InstallationRequestJpaEntity.class, InstallationRequestJpaRepository.class); + Long nextSequence = repo.getSequenceForRequestWithEntitlementID(movementFile.getYear(), getBeanMapper().map(entTypeCat, EntitlementTypeCatJpaEntity.class)); + String requestId = Arrays.asList(movementFile.getYear().toString(), entTypeCat.getCode().name(), String.format("%03d", nextSequence)).stream() + .collect(Collectors.joining("-")); + + return new ImmutablePair(nextSequence, requestId); + } + + private Long getRequestDeclarationNo(Long declarationId) { + InstallationRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(InstallationRequestJpaEntity.class, InstallationRequestJpaRepository.class); + return repo.getRequestDeclarationNo(declarationId); + } + + public List> getStateMachineHistory(Long requestId) { + StateMachineHistoryHolder stateMachineHistoryHolder; + RequestModel request = this.read(requestId); + + stateMachineHistoryHolder = this.requestStateMachineService.getHistory(request.getSmId()); + + return stateMachineHistoryHolder.getTransitions(); + } + + public InstallationRequestModel newStateMachineEvent(String stateMachineEvent, Long requestId) { + InstallationEvent event = InstallationEvent.valueOf(stateMachineEvent); + + InstallationRequestModel request = this.read(requestId); + if (request == null) { + throw new ResourceNotFoundRuntimeException(ERightsExceptionCode.ER014); + } + + StateMachineTransitionResultModel transitionResult = + this.requestStateMachineService.send(request.getSmId(), event, Collections.singletonMap( + MovementFileMessageHeader.MOVEMENT_FILE_ID.name(), + request.getDeclaration().getMovementFileId())); + + if (transitionResult.getValid()) { + sendEmailNotifications(request, transitionResult); + request.setSmId(transitionResult.getId()); + request.setState(transitionResult.getArrivalState()); + return this.update(request); + + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid"); + } + } + + private void sendEmailNotifications(InstallationRequestModel request, + StateMachineTransitionResultModel transitionResult) { + InstallationState arrivalState = transitionResult.getArrivalState(); + if (arrivalState == InstallationState.PAID || arrivalState == InstallationState.REJECTED) { + MovementFileModel movementFile = getMovementFileModel( + request.getDeclaration()); + + emailEdmsServiceProvider.notifyInstallationRequest(request, movementFile, + arrivalState == InstallationState.PAID ? + NotificationTemplateCode.PAID_REQUEST : NotificationTemplateCode.REJECTED_REQUEST); + } + } + + private MovementFileModel getMovementFileModel(DeclarationModel request) { + MovementFileJpaServiceProvider movementFileService = (MovementFileJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + MovementFileModel movementFile = movementFileService.getMovementFile(request.getMovementFileId()); + return movementFile; + } + + public void updateRequest(InstallationRequestModel request) { + InstallationRequestModel dbRequest = this.read(request.getId()); + //preserve the state from DB + request.setState(dbRequest.getState()); + this.update(request); + } + + public List getAllByState(InstallationState state) { + InstallationRequestJpaRepository repo = getEntityRepositoryRegistry() + .getReaderRepositoryFor(InstallationRequestJpaEntity.class, InstallationRequestJpaRepository.class); + List installationRequestJpaEntities = repo.findAllByState(state); + return getBeanMapper().mapAsList(installationRequestJpaEntities, InstallationRequestModel.class); + } + + public List getInstallationWithMovementFileStartDate(LocalDate starDate) { + InstallationRequestJpaRepository repo = getEntityRepositoryRegistry() + .getReaderRepositoryFor(InstallationRequestJpaEntity.class, InstallationRequestJpaRepository.class); + List installationRequestJpaEntities = repo.getInstallationWithMovementFileStartDate(starDate); + return getBeanMapper().mapAsList(installationRequestJpaEntities, InstallationRequestModel.class); + } + + public InstallationRequestModel sendPaymentToSysper(Long requestId){ + RequestIndemnityJpaRepository indemnityJpaRepository = getEntityRepositoryRegistry() + .getReaderRepositoryFor(RequestIndemnityJpaEntity.class, RequestIndemnityJpaRepository.class); + RequestIndemnityJpaEntity requestIndemnity = indemnityJpaRepository.findByRequestId(requestId); + InstallationRequestModel installationRequestModel = this.read(requestId); + RightVOBuilder rightVOBuilder= RightVOBuilder + .builder() + .perId(installationRequestModel.getStaffMember().getId()) + .originPeriodMonth(requestIndemnity.getOriginPeriodMonth()) + .originPeriodYear(Year.of(requestIndemnity.getOriginPeriodYear())) + .paymentPeriodMonth(requestIndemnity.getPaymentPeriodMonth()) + .paymentPeriodYear(Year.of(requestIndemnity.getPaymentPeriodYear())) + .type(RightVO.RightsTypeEnum.INSTALLATION_ALLOWANCE_IP2) + .typeOfIndemnity(requestIndemnity.getType()) + .unit(requestIndemnity.getUnit()) + .number(requestIndemnity.getNumber()) + .comments(requestIndemnity.getComment()) + .build(); + RightVO rightRequest = sysperServiceProvider.createRightRequest(rightVOBuilder); + return sendRequestToSysper(rightRequest,installationRequestModel); + } + + private InstallationRequestModel sendRequestToSysper(RightVO rightRequest, InstallationRequestModel installationRequestModel) { + + RightVO createdSysperRight = sysperServiceProvider.createRight(rightRequest); + if(isNull(createdSysperRight) || isNull(createdSysperRight.getEventId()) || isNull(createdSysperRight.getRightId())){ + failedPaymentToSysper(installationRequestModel); + } + if(Objects.equals(InstallationState.APPROVED,installationRequestModel.getState())){ + installationRequestModel = newStateMachineEvent(InstallationEvent.MARK_PAID.name(), installationRequestModel.getId()); + } + installationRequestModel.setPaymentId(createdSysperRight.getRightId().toString()); + installationRequestModel.setPaymentEventId(createdSysperRight.getEventId().toString()); + installationRequestModel.setPaymentDate(LocalDate.now()); + return this.update(installationRequestModel); + } + + private static void failedPaymentToSysper(InstallationRequestModel installationRequestModel) { + List violations = new LinkedList<>(); + violations.add(new Violation(ERightsExceptionCode.ER037, String.format(String.format(ERightsExceptionCode.ER037.getDescription(), installationRequestModel.getRequestStringId())))); + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + + public InstallationRequestModel updateAttachments(InstallationRequestModel model) { + + if (CollectionUtils.isNotEmpty(model.getRequestDetails())) { + RequestJpaServiceProvider requestJpaServiceProvider = getRequestJpaServiceProvider(); + List requestDetails = model.getRequestDetails(); + requestDetails.forEach(rDetails -> { + List attachmentModels = rDetails.getAttachments(); + if (attachmentModels != null) { + attachmentModels.forEach(att -> att.setRequestDetail(rDetails)); + requestJpaServiceProvider.removeTheDeletedAttachements(rDetails); + requestJpaServiceProvider.persistTheNewAttachements(rDetails); + } + }); + } + return model; + } + + private RequestJpaServiceProvider getRequestJpaServiceProvider() { + return (RequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + RequestModel.class); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/InstallationRequestUpdaterServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/InstallationRequestUpdaterServiceProvider.java new file mode 100644 index 0000000..3373618 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/InstallationRequestUpdaterServiceProvider.java @@ -0,0 +1,229 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement.request; + +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.RequestIndemnityJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.PersonIndemnityModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.InstallationRequestModel; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import eu.europa.eeas.erights.common.tools.statemachine.InstallationEvent; +import eu.europa.eeas.erights.common.tools.statemachine.InstallationState; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import java.lang.management.ManagementFactory; +import java.time.LocalDate; +import java.util.List; + +@Service +@RequiredArgsConstructor +public class InstallationRequestUpdaterServiceProvider extends AbstractServiceProvider { + + public static final Logger logger = LoggerFactory.getLogger(InstallationRequestUpdaterServiceProvider.class); + + + private final EmailEdmsServiceProvider emailEdmsServiceProvider; + private final MovementFileJpaServiceProvider movementFileJpaServiceProvider; + private final InstallationRequestJpaServiceProvider installationRequestJpaServiceProvider; + private final RequestIndemnityJpaServiceProvider requestIndemnityJpaServiceProvider; + + + /** + * Update installations by the cronjob + */ + public void updateInstallations() { + List draftInstallations = installationRequestJpaServiceProvider.getAllByState(InstallationState.DRAFT); + draftInstallations.forEach(installationRequestModel -> processDraftInstallation(installationRequestModel)); + + List paidInstallations = installationRequestJpaServiceProvider.getAllByState(InstallationState.PAID); + paidInstallations.forEach(installationRequestModel -> processPaidInstallation(installationRequestModel, false)); + } + + /** + * Manually refresh data from Sysper (update the given installation request) + * @param requestId + * @return + */ + public InstallationRequestModel updateInstallation(final Long requestId) { + InstallationRequestModel installationRequestModel = installationRequestJpaServiceProvider.read(requestId); + + if (InstallationState.AWAITING.equals(installationRequestModel.getState())) { + processAwaitingInstallation(installationRequestModel); + } + if (InstallationState.APPROVED.equals(installationRequestModel.getState())) { + processApprovedInstallation(installationRequestModel); + } + if (InstallationState.PAID.equals(installationRequestModel.getState())) { + processPaidInstallation(installationRequestModel, true); + } + + return installationRequestModel; + } + + private void processDraftInstallation(InstallationRequestModel installationRequestModel) { + try { + InstallationRequestModel request = installationRequestJpaServiceProvider.getRequest( + installationRequestModel.getId()); + MovementFileModel movementFile = movementFileJpaServiceProvider.read( + request.getDeclaration().getMovementFileId()); + boolean isTodayAReminderDay = isTodayAReminderDayForAddresses(movementFile, + installationRequestModel); + logger.info( + "[ThreadID={}, ProcessID={}] MovementFile: {}, InstallationRequest: {}, isTodayAReminderDay: {}", + Thread.currentThread().getId(), + ManagementFactory.getRuntimeMXBean().getName(), + movementFile.getId(), + installationRequestModel.getId(), + isTodayAReminderDay); + if (isTodayAReminderDay) { + emailEdmsServiceProvider.notifyReminderInstallationRequest(request, movementFile); + } + } catch (Exception e) { + getLogger().error( + "Exception when sending reminder email for installation request: {} request state: {}", + installationRequestModel.getId(), installationRequestModel.getState(), e); + } + } + + private void processAwaitingInstallation(InstallationRequestModel installationRequestModel) { + try { + //from AWAITING to PAID if we have indemnities + updateToPaidIfIndemnitiesFound(installationRequestModel, + InstallationEvent.MARK_PAID_SYSPER); + } catch (Exception e) { + getLogger().error( + "Exception when updating state to PAID for installation request: {} request state: {}", + installationRequestModel.getId(), installationRequestModel.getState(), e); + throw e; + } + } + + private void processApprovedInstallation(InstallationRequestModel installationRequestModel) { + try { + //from APPROVED to PAID if we have indemnities + updateToPaidIfIndemnitiesFound(installationRequestModel, InstallationEvent.MARK_PAID); + } catch (Exception e) { + getLogger().error( + "Exception when updating state to PAID for installation request: {} request state: {}", + installationRequestModel.getId(), installationRequestModel.getState(), e); + throw e; + } + } + + + private void processPaidInstallation(InstallationRequestModel installationRequestModel, boolean throwEx) { + try { + InstallationRequestModel request = installationRequestJpaServiceProvider.getRequest(installationRequestModel.getId()); + List indemnityList = request.getIndemnities(); + LocalDate maxDate = indemnityList.stream().map(PersonIndemnityModel::getUpdatedAt).max(LocalDate::compareTo).orElse(LocalDate.MIN); + if (maxDate != LocalDate.MIN) { //No data in Sysper, probably paid manually , we do nothing + if (request.getIndemnityUpdatedAt() == null) { + request = updateIndemnityUpdatedAt(maxDate, installationRequestModel); + getLogger().info("request.getIndemnityUpdatedAt() is null we update the setIndemnityUpdatedAt {}", installationRequestModel.getId()); + } + if (maxDate.isAfter(request.getIndemnityUpdatedAt())) { + getLogger().info("Changes detected for the indemnity installation request id: {}", installationRequestModel.getId()); + request = updateIndemnityUpdatedAt(maxDate, installationRequestModel); + //send email to inform about changes in the indemnity + + MovementFileModel movementFile = movementFileJpaServiceProvider.read(request.getDeclaration().getMovementFileId()); + emailEdmsServiceProvider.notifyInstallationRequest(request, movementFile, NotificationTemplateCode.UPDATE_REQUEST); + } + } + updateRightsIdEventId(installationRequestModel); + } catch (Exception e) { + getLogger().error("Exception when checking changes in Sysper indemnities for for installation request: {}", installationRequestModel.getId(), e); + if (throwEx) throw e; + } + } + + private void updateToPaidIfIndemnitiesFound(InstallationRequestModel installationRequestModel, + InstallationEvent installationEvent) { + InstallationRequestModel request = installationRequestJpaServiceProvider.getRequest( + installationRequestModel.getId()); + List indemnityList = request.getIndemnities(); + Long requestId = installationRequestModel.getId(); + + if (indemnityList != null && !indemnityList.isEmpty()) { + getLogger().info( + "Indemnities found. Status will be changed to PAID for installation request: {}", + requestId); + installationRequestJpaServiceProvider.newStateMachineEvent(installationEvent.name(), + requestId); + + //update the updating date for later checking is there has been any change + LocalDate maxDate = indemnityList.stream().map(PersonIndemnityModel::getUpdatedAt) + .max(LocalDate::compareTo).orElse(LocalDate.now()); + updateIndemnityUpdatedAt(maxDate, installationRequestModel); + + updateRightsIdEventId(installationRequestModel); + } + } + + + private InstallationRequestModel updateIndemnityUpdatedAt(LocalDate maxDate, InstallationRequestModel installationRequestModel) { + installationRequestModel.setIndemnityUpdatedAt(maxDate); + installationRequestJpaServiceProvider.updateRequest(installationRequestModel); + return installationRequestModel; + } + + private InstallationRequestModel updateRightsIdEventId( + InstallationRequestModel installationRequestModel) { + Long requestId = installationRequestModel.getId(); + requestIndemnityJpaServiceProvider.extractPersonIndemnityData(requestId). + map(personIndemnityJpaEntity -> + { + installationRequestModel.setPaymentEventId( + String.valueOf(personIndemnityJpaEntity.getEvtNumber())); + installationRequestModel.setPaymentId( + String.valueOf(personIndemnityJpaEntity.getRigId())); + + getLogger().info("Event and Rights Id updated for for installation request: {}", requestId); + installationRequestJpaServiceProvider.updateRequest(installationRequestModel); + + return installationRequestModel; + }); + + return installationRequestModel; + } + + private boolean isTodayAReminderDayForAddresses(MovementFileModel movementFile, InstallationRequestModel installationRequestModel) { + return isMovementFileOngoing(movementFile) && isRequestDraft(installationRequestModel) && isInReminderDate(movementFile); + } + + private boolean isMovementFileOngoing(MovementFileModel movementFile) { + return MovementFileState.ONGOING.equals(movementFile.getState()); + } + + private boolean isRequestDraft(InstallationRequestModel installationRequestModel) { + return InstallationState.DRAFT.equals(installationRequestModel.getState()); + } + + private boolean isInReminderDate(MovementFileModel movementFile) { + return itIsBeenWeeks(movementFile.getStartDate(), 2) || + itIsBeenWeeks(movementFile.getStartDate(), 4) || + itIsBeenMonths(movementFile.getStartDate(), 3) || + itIsBeenMonths(movementFile.getStartDate(), 6) || + itIsBeenMonths(movementFile.getStartDate(), 11) || + itIsBeenOneYear(movementFile.getStartDate()); + } + + private boolean itIsBeenWeeks(LocalDate date, int weeks) { + return LocalDate.now().equals(date.plusWeeks(weeks)); + } + + private boolean itIsBeenMonths(LocalDate date, int months) { + return LocalDate.now().equals(date.plusMonths(months)); + } + + private boolean itIsBeenOneYear(LocalDate date) { + return LocalDate.now().equals(date.plusYears(1)); + } + +} + diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/RequestJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/RequestJpaServiceProvider.java new file mode 100644 index 0000000..6847475 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/RequestJpaServiceProvider.java @@ -0,0 +1,404 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement.request; + +import eu.europa.eeas.ananke.core.base.exception.NotAllowedRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ValidationRuntimeException; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.ananke.tools.filemanagement.FileManager; +import eu.europa.eeas.ananke.tools.filemanagement.data.jpa.entity.persistentstorage.AnkFileJpaEntity; +import eu.europa.eeas.ananke.tools.filemanagement.data.jpa.repository.persistentstorage.AnkFileJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.dto.BinaryOutputWrapper; +import eu.europa.eeas.erights.common.data.jpa.dto.RequestAbacWorkflowDTO; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.RequestJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.service.data.validation.Violation; +import eu.europa.eeas.erights.common.service.model.declaration.PersonBankInfoModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.*; +import eu.europa.eeas.erights.common.tools.p2p.OrderStatusEnum; +import eu.europa.eeas.erights.common.tools.statemachine.AbacRequestState; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.sql.SQLException; +import java.time.LocalDate; +import java.util.*; +import java.util.stream.Collectors; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +import static java.util.Objects.nonNull; + +@Service +@Transactional +public class RequestJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, EntityCreator, + EntityUpdater, EntityDeleter { + + @Autowired + private ClearingRequestJpaServiceProvider clearingRequestJpaServiceProvider; + + @Autowired + private AdvanceRequestJpaServiceProvider advanceRequestJpaServiceProvider; + + @Autowired + private InstallationRequestJpaServiceProvider installationRequestJpaServiceProvider; + + @Autowired + private TotalRemRequestJpaServiceProvider totalRemRequestJpaServiceProvider; + + @Autowired + private TudRequestJpaServiceProvider tudRequestJpaServiceProvider; + + @Autowired + private TopUpRequestJpaServiceProvider topUpRequestJpaServiceProvider; + + @Autowired + private AnkFileJpaRepository ankFileJpaRepository; + + @Autowired + private FileManager fileManager; + + @Value("file-management.file-system.path.root-folder") + private String tempZipFolder; + + @Override + public Class getModelType() { + return RequestModel.class; + } + + @Override + public Class getEntityType() { + return RequestJpaEntity.class; + } + + public List getRequests(Long declarationId) { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + List requests = repo.findAllByDeclaration_id(declarationId); + return getBeanMapper().mapAsList(requests, RequestModel.class); + } + + public Long getMovementFileId(Long requestId) { + + RequestModel request = this.read(requestId); + + return request.getDeclaration().getMovementFileId(); + } + + public AbacRequestState getRequestAbacState(Long requestId) { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + return repo.getAbacRequestState(requestId); + } + + public void updateRequestP2pOrder( OrderStatusEnum status, Long p2pHubOrderId, String orderComment, Long requestId) { + RequestModel request = this.read(requestId); + request.setP2pHubOrderId(p2pHubOrderId); + request.setP2pHubOrderStatus(status); + request.setOrderComment(orderComment); + this.update(request); + + } + + + public void updateRequestP2pOrderStatus(String event, OrderStatusEnum status,String orderComment,String paymentDirectiveReference, Long requestId) { + RequestModel request = this.read(requestId); + request.setP2pHubOrderStatus(status); + request.setOrderComment(orderComment); + request.setPaymentDirectiveReference(paymentDirectiveReference); + if(!"NO_TRANSITION".equals(event)) { + this.update(request); + this.newStateMachineEvent(event, requestId); + }else{ + this.update(request); + } + } + + public void updatePaymentRequest(String abacPaymentRequestId, Long requestId) { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + repo.updatePaymentRequest(abacPaymentRequestId, requestId); + } + + public void updatePaymentOrder(String abacPaymentOrderId, Long requestId) { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + repo.updatePaymentOrder(abacPaymentOrderId, requestId); + } + + public void updateRequestWorkflowAbacState(String state, Long id) { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + repo.updateRequestp2pHubOrderStatus(state, id); + } + + public void updatePaymentOrderValid(Boolean isValid, Long id) { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + repo.updatePaymentOrderValid(isValid, id); + } + + public PersonBankInfoModel getPersonBankInfo(Long requestId) { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + return getBeanMapper().map(repo.getPersonaBankInfo(requestId), PersonBankInfoModel.class); + } + + public String getRequestType(Long requestId) { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + return repo.getRequestType(requestId); + } + + public List getUnclosedPaymentOrders() { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + return repo.getUnclosedPaymentOrders(); + } + + public RequestModel newStateMachineEvent(String stateMachineEvent, Long requestId) { + RequestModel request = this.read(requestId); + getLogger().info(" newStateMachineEvent in request service provider stateMachineEvent : {} ,requestId : {} ", stateMachineEvent, requestId); + if ("AdvanceRequest".equals(request.getRequestType())) { + return advanceRequestJpaServiceProvider.newStateMachineEvent(stateMachineEvent, requestId); + } else if ("TudRequest".equals(request.getRequestType())) { + return tudRequestJpaServiceProvider.newStateMachineEvent(stateMachineEvent, requestId); + } else if ("InstallationRequest".equals(request.getRequestType())) { + return installationRequestJpaServiceProvider.newStateMachineEvent(stateMachineEvent, requestId); + } else if ("TotalRemRequest".equals(request.getRequestType())) { + return totalRemRequestJpaServiceProvider.newStateMachineEvent(stateMachineEvent, requestId); + } else if ("ClearingRequest".equals(request.getRequestType())) { + return clearingRequestJpaServiceProvider.newStateMachineEvent(stateMachineEvent, requestId); + } else if ("TopUpRequest".equals(request.getRequestType())) { + return topUpRequestJpaServiceProvider.newStateMachineEvent(stateMachineEvent, requestId); + } + + return request; + } + + + public RequestModel updateP2pOrderStatusInRequest(OrderStatusEnum p2pOrderStatus, Long requestId) { + + + RequestModel request = this.read(requestId); + if (request == null) { + throw new ResourceNotFoundRuntimeException(ERightsExceptionCode.ER014); + } + request.setP2pHubOrderStatus(p2pOrderStatus); + return this.update(request); + + } + + + public void updatePaymentDateAndWorkflow(LocalDate date, String state, Long requestId) { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + repo.updatePaymentDateAndWorkflow(date, state, requestId); + } + + public void deleteAllRelatedEntities(Long requestId) { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + // we do not remove the details or attahcment here, they are deleted automatically when we delete the request + repo.deleteRequestDetailAttachments(requestId); + repo.deleteRequestDetails(requestId); + repo.deleteRequestPaymentAbacInfo(requestId); + repo.deleteRequestAbacItems(requestId); + repo.deleteRequestPersonAttachments(requestId); + repo.deleteRequestPersons(requestId); + repo.deleteRequestSubposts(requestId); + } + + public void deleteAttachmentAndDetails(Long requestId) { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + // we do not remove the details or attahcment here, they are deleted automatically when we delete the request + repo.deleteRequestDetailAttachments(requestId); + repo.deleteRequestDetails(requestId); + } + + public RequestModel get(Long requestId) { + return this.read(requestId); + } + + + public void deleteRequestByIdNativeQuery(Long requestId) { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + repo.deleteRequestByIdNativeQuery(requestId); + } + + public List getRequestsByParent(Long parentRequestId) { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + List entities = repo.findByParentId(parentRequestId); + return getBeanMapper().mapAsList(entities, RequestModel.class); + } + + + public BinaryOutputWrapper generateRequestDetailsZip(Long id) throws IOException { + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.parseMediaType("application/zip")); + String outputFilename = id + "_compressed.zip"; + headers.setContentDispositionFormData(outputFilename, outputFilename); + headers.setCacheControl("must-revalidate, post-check=0, pre-check=0"); + RequestModel requestModel = get(id); + List violations = new LinkedList<>(); + if (nonNull(requestModel) && CollectionUtils.isNotEmpty(requestModel.getRequestDetails())) { + + List downloadFilesIds = new ArrayList<>(); + requestModel.getRequestDetails().forEach(requestDetailModel -> { + if (CollectionUtils.isNotEmpty(requestDetailModel.getAttachments())) { + requestDetailModel.getAttachments().forEach(requestDetailAttachmentModel -> { + downloadFilesIds.add(requestDetailAttachmentModel.getFileUid()); + }); + } + }); + if (CollectionUtils.isNotEmpty(downloadFilesIds)) { + List blobs = new ArrayList<>(); + downloadFilesIds.forEach(uuid -> { + AnkFileJpaEntity ankFileJpaEntity = ankFileJpaRepository.findById(uuid); + if (nonNull(ankFileJpaEntity) && nonNull(ankFileJpaEntity.getData())) { + blobs.add(ankFileJpaEntity); + } + }); + if (CollectionUtils.isNotEmpty(blobs)) { + ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream(); + ZipOutputStream zos = new ZipOutputStream(byteOutputStream); + blobs.forEach(ankFileJpaEntity -> { + try { + int blobLength = (int) ankFileJpaEntity.getData().length(); + byte[] blobAsBytes = ankFileJpaEntity.getData().getBytes(1, blobLength); + zos.putNextEntry(new ZipEntry(ankFileJpaEntity.getName())); + zos.write(blobAsBytes, 0, blobLength); + zos.closeEntry(); + } catch (SQLException | IOException e) { + getLogger().error(" ", e); + } + }); + zos.close(); + return new BinaryOutputWrapper(byteOutputStream.toByteArray(), headers); + } + } + violations.add(new Violation(ERightsExceptionCode.ER034, ERightsExceptionCode.ER034.getDescription())); + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + violations.add(new Violation(ERightsExceptionCode.ER033, ERightsExceptionCode.ER033.getDescription())); + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + + public void removeTheDeletedAttachements(RequestDetailModel rDetails) { + rDetails.setAttachments(rDetails.getAttachments().stream().filter(att -> att.getFileName() != null).collect( + Collectors.toList())); + } + + public void persistTheNewAttachements(RequestDetailModel rDetails) { + Set attachmentsToPersist = getAttachmentsToPersist(rDetails); + attachmentsToPersist.forEach(this.fileManager::persist); + } + + private Set getAttachmentsToPersist(RequestDetailModel model) { + Set result = new HashSet<>(); + model.getAttachments().stream().filter(e -> e.getId() == null).forEach(e -> result.add(e.getFileUid())); + return result; + } + + + public List findRequestsWithActiveP2pHubOrders() { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + return getBeanMapper().mapAsList(repo.findRequestsWithActiveP2pHubOrders(), RequestModel.class); + } + + + public RequestModel markAsPAid(RequestModel basicRequestModel) { + + RequestModel request = this.newStateMachineEvent("MARK_PAID", basicRequestModel.getId()); + + if ("TotalRemRequest".equals(request.getRequestType())) { + TotalRemRequestModel totalRemRequest = totalRemRequestJpaServiceProvider.getRequest(request.getId()); + if ("PAID".equals(totalRemRequest.getState().name())) { + totalRemRequest.setP2pHubOrderId(basicRequestModel.getP2pHubOrderId()); + totalRemRequest.setPaymentDirectiveReference(basicRequestModel.getPaymentDirectiveReference()); + totalRemRequest.setAbacRequestState(AbacRequestState.MANUAL_PAYMENT_SUMMA); + totalRemRequestJpaServiceProvider.update(totalRemRequest); + } else { + throw new NotAllowedRuntimeException( + ERightsExceptionCode.ER002, + "Transition result not valid" + ); + } + + } else if ("AdvanceRequest".equals(request.getRequestType())) { + + AdvanceRequestModel advanceRequest = + advanceRequestJpaServiceProvider.getRequest(request.getId()); + + if ("PAID".equals(advanceRequest.getState().name())) { + advanceRequest.setP2pHubOrderId(basicRequestModel.getP2pHubOrderId()); + advanceRequest.setPaymentDirectiveReference(basicRequestModel.getPaymentDirectiveReference()); + advanceRequest.setAbacRequestState(AbacRequestState.MANUAL_PAYMENT_SUMMA); + advanceRequestJpaServiceProvider.update(advanceRequest); + } else { + throw new NotAllowedRuntimeException( + ERightsExceptionCode.ER002, + "Transition result not valid" + ); + } + + } else if ("ClearingRequest".equals(request.getRequestType())) { + + ClearingRequestModel clearingRequest = + clearingRequestJpaServiceProvider.getRequest(request.getId()); + + if ("PAID".equals(clearingRequest.getState().name())) { + clearingRequest.setP2pHubOrderId(basicRequestModel.getP2pHubOrderId()); + clearingRequest.setPaymentDirectiveReference(basicRequestModel.getPaymentDirectiveReference()); + clearingRequest.setAbacRequestState(AbacRequestState.MANUAL_PAYMENT_SUMMA); + clearingRequestJpaServiceProvider.update(clearingRequest); + } else { + throw new NotAllowedRuntimeException( + ERightsExceptionCode.ER002, + "Transition result not valid" + ); + } + + } else if ("TudRequest".equals(request.getRequestType())) { + + TudRequestModel tudRequest = + tudRequestJpaServiceProvider.getRequest(request.getId()); + + if ("PAID".equals(tudRequest.getState().name())) { + tudRequest.setP2pHubOrderId(basicRequestModel.getP2pHubOrderId()); + tudRequest.setPaymentDirectiveReference(basicRequestModel.getPaymentDirectiveReference()); + tudRequest.setAbacRequestState(AbacRequestState.MANUAL_PAYMENT_SUMMA); + tudRequestJpaServiceProvider.update(tudRequest); + } else { + throw new NotAllowedRuntimeException( + ERightsExceptionCode.ER002, + "Transition result not valid" + ); + } + + } else if ("InstallationRequest".equals(request.getRequestType())) { + + InstallationRequestModel installationRequest = + installationRequestJpaServiceProvider.getRequest(request.getId()); + + if ("PAID".equals(installationRequest.getState().name())) { + installationRequest.setP2pHubOrderId(basicRequestModel.getP2pHubOrderId()); + installationRequest.setPaymentDirectiveReference(basicRequestModel.getPaymentDirectiveReference()); + installationRequest.setAbacRequestState(AbacRequestState.MANUAL_PAYMENT_SUMMA); + installationRequestJpaServiceProvider.update(installationRequest); + } else { + throw new NotAllowedRuntimeException( + ERightsExceptionCode.ER002, + "Transition result not PAID. Mark as Paid Failed" + ); + } + } + return request; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/RequestPersonJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/RequestPersonJpaServiceProvider.java new file mode 100644 index 0000000..a333832 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/RequestPersonJpaServiceProvider.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement.request; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestPersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.RequestPersonJpaRepository; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestPersonModel; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Transactional +public class RequestPersonJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, EntityCreator, + EntityUpdater, EntityDeleter { + + @Override + public Class getModelType() { + return RequestPersonModel.class; + } + + @Override + public Class getEntityType() { + return RequestPersonJpaEntity.class; + } + + public List createRequestPersons(List personModels) { + return this.create(personModels); + } + + public List getRequestPersons(Long requestId) { + RequestPersonJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestPersonJpaEntity.class, RequestPersonJpaRepository.class); + + return getBeanMapper().mapAsList(repo.findAllByRequest_id(requestId), RequestPersonModel.class); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/ResettlementRequestJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/ResettlementRequestJpaServiceProvider.java new file mode 100644 index 0000000..897bbbd --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/ResettlementRequestJpaServiceProvider.java @@ -0,0 +1,526 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement.request; + +import static java.util.Objects.isNull; + +import eu.europa.eeas.ananke.core.base.exception.NotAllowedRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ValidationRuntimeException; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.ananke.tools.filemanagement.FileManager; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.ananke.tools.statemachine.service.history.StateMachineHistoryHolder; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionResultModel; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonIndemnityJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeCatJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.RequestIndemnityJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.ResettlementRequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.PersonIndemnityJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementTypeJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.RequestIndemnityJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.ResettlementRequestJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.declaration.DeclarationJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.declaration.DeclarationPersonJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.validation.Violation; +import eu.europa.eeas.erights.common.service.model.MovementContextType; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.PersonIndemnityModel; +import eu.europa.eeas.erights.common.service.model.RightVOBuilder; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationPersonModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeCatModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.InstallationRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestSupportingDocAttachmentModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestSupportingDocModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.ResettlementRequestModel; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.service.provider.sysper.SysperServiceProvider; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import eu.europa.eeas.erights.common.tools.statemachine.InstallationEvent; +import eu.europa.eeas.erights.common.tools.statemachine.InstallationState; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import eu.europa.eeas.erights.common.tools.statemachine.ResettlementEvent; +import eu.europa.eeas.erights.common.tools.statemachine.ResettlementState; +import eu.europa.eeas.erights.web.client.model.RightVO; +import eu.europa.eeas.erights.web.client.model.RightVO.RightsTypeEnum; +import java.time.LocalDate; +import java.time.Year; +import java.time.format.DateTimeFormatter; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; +import javax.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + + +/** + * @author ienaccat + */ +@Service +@Transactional +@RequiredArgsConstructor +public class ResettlementRequestJpaServiceProvider extends + AbstractDataServiceProvider + implements EntityReader, + EntityUpdater, + EntityDeleter, + EntityCreator { + + private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyMM"); + + //TODO Catalin check if we keep this type for Resettlement + private static final String INDEMNITY_TYPE_IP2 = "IP2"; + + private final StateMachineService requestStateMachineService; + private final DataServiceProviderRegistry dataServiceProviderRegistry; + private final FileManager fileManager; + private final EmailEdmsServiceProvider emailEdmsServiceProvider; + private final SysperServiceProvider sysperServiceProvider; + + + @Override + public Class getModelType() { + return ResettlementRequestModel.class; + } + + @Override + public Class getEntityType() { + return ResettlementRequestJpaEntity.class; + } + + /** + * create a new resettlement request + * + * @param movementFileId + * @return + */ + public Optional createResettlement(Long movementFileId) { + + //get the movement file + MovementFileModel movementFile = getMovementFileModel( + movementFileId); + + //get declaration + DeclarationModel declaration = getDeclarationJpaServiceProvider().getDeclaration(movementFileId); + + validateMovementFileAndDeclaration(movementFile, declaration); + + List existingRequests = getRequests(declaration); + if (existingRequests.isEmpty()) { + getLogger().info("No Resettlement Request found for declaration {} going to create one", + declaration.getId()); + return buildResettlementRequestModel(declaration, movementFile); + } + getLogger().warn("There is already a Resettlement Request for movement file {}", + movementFileId); + return Optional.empty(); + } + + /** + * returns existing resettlement request + * @param requestId + * @return + */ + public Optional getResettlement(Long requestId) { + ResettlementRequestModel request = this.read(requestId); + + if (null == request) { + return Optional.empty(); + } + + MovementFileModel movementFile = getMovementFileModel( + request.getDeclaration().getMovementFileId()); + + //set the indemnities + this.setIndemnities(request, movementFile); + + return Optional.of(request); + } + + /** + * updates a Resettlement request + * + * @param request + * @return + */ + public ResettlementRequestModel updateResettlement(ResettlementRequestModel request) { + //supporting documents + if (Objects.equals(ResettlementState.DRAFT, request.getState()) || + Objects.equals(ResettlementState.AWAITING, request.getState())) { + updateSupportingDocuments(request); + } + + //declaration + if (request.getDeclaration() != null && CollectionUtils.isNotEmpty(request.getDeclaration().getDeclarationPersons())) { + this.updateDeclarationPersons(request); + } + + return this.update(request); + } + + + /** + * returns state machine history for Resettlement + * + * @param requestId + * @return + */ + public List> getStateMachineHistory( + Long requestId) { + StateMachineHistoryHolder stateMachineHistoryHolder; + RequestModel request = this.read(requestId); + + stateMachineHistoryHolder = this.requestStateMachineService.getHistory(request.getSmId()); + + return stateMachineHistoryHolder.getTransitions(); + } + + /** + * creates a new state machine event + * + * @param stateMachineEvent + * @param requestId + * @return + */ + public ResettlementRequestModel newStateMachineEvent(String stateMachineEvent, Long requestId) { + ResettlementEvent event = ResettlementEvent.valueOf(stateMachineEvent); + + ResettlementRequestModel request = this.read(requestId); + if (request == null) { + throw new ResourceNotFoundRuntimeException(ERightsExceptionCode.ER014); + } + + StateMachineTransitionResultModel transitionResult = + this.requestStateMachineService.send(request.getSmId(), event, Collections.singletonMap( + MovementFileMessageHeader.MOVEMENT_FILE_ID.name(), + request.getDeclaration().getMovementFileId())); + + if (transitionResult.getValid()) { + sendEmailNotifications(request, transitionResult); + request.setSmId(transitionResult.getId()); + request.setState(transitionResult.getArrivalState()); + return this.update(request); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, + "Transition result not valid"); + } + } + + /** + * sends a payment to Sysper + * + * @param requestId + * @return + */ + public ResettlementRequestModel sendPaymentToSysper(Long requestId) { + RequestIndemnityJpaRepository indemnityJpaRepository = getEntityRepositoryRegistry() + .getReaderRepositoryFor(RequestIndemnityJpaEntity.class, + RequestIndemnityJpaRepository.class); + RequestIndemnityJpaEntity requestIndemnity = indemnityJpaRepository.findByRequestId(requestId); + ResettlementRequestModel resettlementRequestModel = this.read(requestId); + RightVOBuilder rightVOBuilder = RightVOBuilder + .builder() + .perId(resettlementRequestModel.getStaffMember().getId()) + .originPeriodMonth(requestIndemnity.getOriginPeriodMonth()) + .originPeriodYear(Year.of(requestIndemnity.getOriginPeriodYear())) + .paymentPeriodMonth(requestIndemnity.getPaymentPeriodMonth()) + .paymentPeriodYear(Year.of(requestIndemnity.getPaymentPeriodYear())) + .type(RightsTypeEnum.RESETTLEMENT_ALLOWANCE_IP1) + .typeOfIndemnity(requestIndemnity.getType()) + .unit(requestIndemnity.getUnit()) + .number(requestIndemnity.getNumber()) + .comments(requestIndemnity.getComment()) + .build(); + RightVO sysperRequest = sysperServiceProvider.createRightRequest(rightVOBuilder); + return sendRequestToSysper(sysperRequest, resettlementRequestModel); + } + + private void updateDeclarationPersons(ResettlementRequestModel request) { + DeclarationPersonJpaServiceProvider declarationPersonJpaServiceProvider = getDeclarationPersonJpaServiceProvider(); + declarationPersonJpaServiceProvider.updateDeclarationPersons( + request); + } + + public boolean isMovementFileValidToCreateResettlement(@NotNull Long movementFileId) { + //get the movement file + MovementFileModel movementFile = getMovementFileModel( + movementFileId); + + return isMovementFileValidToCreateResettlement(movementFile); + } + + + //TODO RIGD-3571 + private ResettlementRequestModel sendRequestToSysper(RightVO rightRequest, + ResettlementRequestModel resettlementRequestModel) { + + //send the request + RightVO createdSysperRight = sysperServiceProvider.createRight(rightRequest); + + if (createdSysperRight == null || createdSysperRight.getEventId() == null || + createdSysperRight.getRightId() == null) { + failedPaymentToSysper(resettlementRequestModel.getRequestStringId()); + } + + if (Objects.equals(ResettlementState.APPROVED, resettlementRequestModel.getState())) { + resettlementRequestModel = newStateMachineEvent(ResettlementEvent.MARK_PAID.name(), + resettlementRequestModel.getId()); + } + resettlementRequestModel.setPaymentId(createdSysperRight.getRightId().toString()); + resettlementRequestModel.setPaymentEventId(createdSysperRight.getEventId().toString()); + resettlementRequestModel.setPaymentDate(LocalDate.now()); + return this.update(resettlementRequestModel); + } + + private void failedPaymentToSysper(String requestStringId) { + List violations = new LinkedList<>(); + violations.add(new Violation(ERightsExceptionCode.ER037, String.format( + String.format(ERightsExceptionCode.ER037.getDescription(), requestStringId)))); + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + + private DeclarationJpaServiceProvider getDeclarationJpaServiceProvider() { + return (DeclarationJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(DeclarationModel.class); + } + + private DeclarationPersonJpaServiceProvider getDeclarationPersonJpaServiceProvider() { + return (DeclarationPersonJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(DeclarationPersonModel.class); + } + + private boolean isMovementFileValidToCreateResettlement(@NotNull MovementFileModel movementFile) { + return MovementFileState.DRAFT != movementFile.getState() && + MovementFileState.COMPLETED != movementFile.getState() && + MovementFileState.CANCELLED != movementFile.getState() && + MovementFileState.PENDING != movementFile.getState() && + MovementContextType.EOC.name().equals(movementFile.getMovementContext().getName()) && + "DEL-PoOrg".equals(movementFile.getMovementType().getMovementType()); + } + + private void validateMovementFileAndDeclaration(@NotNull MovementFileModel movementFile, + @NotNull DeclarationModel declaration) { + List violations = new LinkedList<>(); + final String movementFileId = movementFile.getFileId(); + if (!isMovementFileValidToCreateResettlement(movementFile)) { + + violations.add(new Violation(ERightsExceptionCode.ER038, String.format( + String.format(ERightsExceptionCode.ER038.getDescription(), + movementFileId)))); + } + if (declaration == null || declaration.getUserCreatedAt() == null) { + violations.add(new Violation(ERightsExceptionCode.ER039, String.format( + String.format(ERightsExceptionCode.ER039.getDescription(), + movementFileId)))); + } + if (!violations.isEmpty()) { + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + } + + private void sendEmailNotifications(ResettlementRequestModel request, + StateMachineTransitionResultModel transitionResult) { + + //add here logic for more state transitions + sendEmailNotificationsFromDraftToAwaiting(request, transitionResult); + + sendEmailNotificationsFromApprovedToPaid(request, transitionResult); + + + } + + private void sendEmailNotificationsFromDraftToAwaiting(ResettlementRequestModel request, + StateMachineTransitionResultModel transitionResult) { + if (ResettlementState.DRAFT.equals(transitionResult.getDepartureState()) + && ResettlementState.AWAITING.equals(transitionResult.getArrivalState())) { + if (hasBeenOnlyOnceInArrivalState(request.getId(), ResettlementState.DRAFT)) { + MovementFileModel movementFile = getMovementFileModel( + request.getDeclaration().getMovementFileId()); + emailEdmsServiceProvider.notifyResettlementRequestDraftToAwaiting(request, movementFile, + NotificationTemplateCode.SUBMIT); + } + } + + } + + private void sendEmailNotificationsFromApprovedToPaid(ResettlementRequestModel request, + StateMachineTransitionResultModel transitionResult) { + if (ResettlementState.APPROVED.equals(transitionResult.getDepartureState()) + && ResettlementState.PAID.equals(transitionResult.getArrivalState())) { + MovementFileModel movementFile = getMovementFileModel( + request.getDeclaration().getMovementFileId()); + if (hasBeenOnlyOnceInArrivalState(request.getId(), + ResettlementState.PAID)) { + emailEdmsServiceProvider.notifyResettlementRequestApprovedToPaid(request, movementFile, + NotificationTemplateCode.PAID_REQUEST); + } else { + emailEdmsServiceProvider.notifyResettlementRequestApprovedToPaid(request, movementFile, + NotificationTemplateCode.UPDATE_REQUEST); + } + } + + } + + private boolean hasBeenOnlyOnceInArrivalState(Long requestId, ResettlementState resettlementState) { + return getStateMachineHistory(requestId).stream().filter(stateMachineTransition -> + resettlementState.equals(stateMachineTransition.getArrivalState())).count() == 1; + } + + private List getRequests(DeclarationModel declarationModel) { + ResettlementRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + ResettlementRequestJpaEntity.class, ResettlementRequestJpaRepository.class); + List requests = repo.findAllByDeclarationId( + declarationModel.getId()); + return getBeanMapper().mapAsList(requests, ResettlementRequestModel.class); + } + + private Optional buildResettlementRequestModel( + DeclarationModel declaration, + MovementFileModel movementFile) { + Long movementFileId = declaration.getMovementFileId(); + EntitlementTypeJpaRepository entitlementTypeJpaRepository = (EntitlementTypeJpaRepository) getEntityRepositoryRegistry().getReaderRepositoryFor( + EntitlementTypeJpaEntity.class); + List entitlements = entitlementTypeJpaRepository.findAllByMovementFileIdAndEntitlementTypeCatCode( + movementFileId, + EntitlementTypeCatCode.RES); + + if (entitlements.isEmpty() || !entitlements.get(0).getEnable()) { + getLogger().warn("Unable to find an EntitlementType {} for movementFileId {}", + EntitlementTypeCatCode.RES, movementFileId); + return Optional.empty(); + } + EntitlementTypeModel resettlementEntitlement = getBeanMapper().map(entitlements.get(0), + EntitlementTypeModel.class); + + ResettlementRequestModel model = new ResettlementRequestModel(); + model.setEntitlementType(resettlementEntitlement); + model.setEntitlementTypeCat(resettlementEntitlement.getEntitlementTypeCat()); + model.setStaffMember(declaration.getStaffMember()); + + model.setYear(movementFile.getYear()); + model.setPersonBankInfo(declaration.getPersonBankInfo()); + model.setDeclaration(declaration); + //set request number and requestStringId + ImmutablePair requestNumberAndStringId = getRequestStringId( + resettlementEntitlement.getEntitlementTypeCat(), movementFile); + model.setRequestStringId(requestNumberAndStringId.getRight()); + model.setRequestNumber(requestNumberAndStringId.getLeft()); + + model.setRequestDeclarationNo(getRequestDeclarationNo(declaration.getId())); + model.setStatutoryLinkDesc(movementFile.getJobHolder() != null ? movementFile.getJobHolder().getStatutoryLinkDesc() : null); + + //set state + StateMachineTransitionResultModel transitionResult = + this.requestStateMachineService.send(ResettlementEvent.CREATE, Collections.singletonMap( + MovementFileMessageHeader.MOVEMENT_FILE_ID.name(), + movementFileId)); + if (transitionResult.getValid()) { + model.setState(transitionResult.getArrivalState()); + model.setSmId(transitionResult.getId()); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, + "Transition result not valid"); + } + ResettlementRequestModel createdModel = this.create(model); + getLogger().info("Resettlement Request created with id {}", + createdModel.getRequestStringId()); + return Optional.of(createdModel); + } + + private ImmutablePair getRequestStringId(EntitlementTypeCatModel entTypeCat, + MovementFileModel movementFile) { + ResettlementRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + ResettlementRequestJpaEntity.class, ResettlementRequestJpaRepository.class); + Long nextSequence = repo.getSequenceForRequestWithEntitlementID(movementFile.getYear(), + getBeanMapper().map(entTypeCat, EntitlementTypeCatJpaEntity.class)); + String requestId = Arrays.asList(movementFile.getYear().toString(), entTypeCat.getCode().name(), + String.format("%03d", nextSequence)).stream() + .collect(Collectors.joining("-")); + + return new ImmutablePair<>(nextSequence, requestId); + } + + private Long getRequestDeclarationNo(Long declarationId) { + ResettlementRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + ResettlementRequestJpaEntity.class, ResettlementRequestJpaRepository.class); + return repo.getRequestDeclarationNo(declarationId); + } + + private void setIndemnities(ResettlementRequestModel request, MovementFileModel movementFile) { + if (movementFile.getStartDate() == null) { + return; + } + List periods = Arrays.asList(FORMATTER.format(movementFile.getStartDate()), FORMATTER.format(movementFile.getStartDate().plusMonths(1))); + + PersonIndemnityJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + PersonIndemnityJpaEntity.class, PersonIndemnityJpaRepository.class); + List indemnities = repo.findByBenefPerIdAndCodeAndOriginPeriodIn(request.getStaffMember().getId(), INDEMNITY_TYPE_IP2, periods); + request.setIndemnities(getBeanMapper().mapAsList(indemnities, PersonIndemnityModel.class)); + } + + + private MovementFileModel getMovementFileModel(Long movementFileId) { + MovementFileJpaServiceProvider movementFileService = (MovementFileJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + MovementFileModel movementFile = movementFileService.getMovementFile(movementFileId); + return movementFile; + } + + /** + * + * @param model + * @return + */ + public ResettlementRequestModel updateSupportingDocuments(ResettlementRequestModel model) { + List supportingDocs = model.getSupportingDocs(); + if (CollectionUtils.isNotEmpty(supportingDocs)) { + supportingDocs.forEach(supportingDoc -> { + List attachmentModels = supportingDoc.getAttachments(); + if (attachmentModels != null) { + attachmentModels.forEach(att -> att.setRequestSupportingDoc(supportingDoc)); + //remove deleted ones + supportingDoc.setAttachments(supportingDoc.getAttachments().stream().filter(att -> att.getFileName() != null).collect( + Collectors.toList())); + + //persist new ones + Set attachmentsToPersist = getAttachmentsToPersist(supportingDoc); + attachmentsToPersist.forEach(this.fileManager::persist); + } + }); + } + return model; + } + + private Set getAttachmentsToPersist(RequestSupportingDocModel model) { + Set result = new HashSet<>(); + model.getAttachments().stream().filter(e -> e.getId() == null).forEach(e -> result.add(e.getFileUid())); + return result; + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/TopUpRequestJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/TopUpRequestJpaServiceProvider.java new file mode 100644 index 0000000..a900780 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/TopUpRequestJpaServiceProvider.java @@ -0,0 +1,320 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement.request; + +import eu.europa.eeas.ananke.core.base.exception.NotAllowedRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.ananke.tools.filemanagement.FileManager; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.ananke.tools.statemachine.service.history.StateMachineHistoryHolder; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionResultModel; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeCatJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestDetailAttachmentJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestDetailJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.TopUpRequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.TudRequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.RequestJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.TopUpRequestJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.TudRequestJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.RequestSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.comments.CommentForRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.comments.CommentForRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeCatModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.*; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.Constants; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import eu.europa.eeas.erights.common.tools.statemachine.TopUpRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.TopUpRequestState; +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; + +@Service +@Transactional +public class TopUpRequestJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, EntityCreator, + EntityUpdater, EntityDeleter { + + @Autowired + @Qualifier(ERightsBeanNames.TopUpRequestStateMachine.SERVICE) + private StateMachineService requestStateMachineService; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + private FileManager fileManager; + + @Autowired + private AbstractUserHandler userHandler; + + @Autowired + @Qualifier(ERightsBeanNames.REQUEST_SECURITY_CHECKER) + private RequestSecurityChecker requestSecurityChecker; + + @Autowired + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @Autowired + private MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + @Override + public Class getModelType() { + return TopUpRequestModel.class; + } + + @Override + public Class getEntityType() { + return TopUpRequestJpaEntity.class; + } + + public TopUpRequestModel newStateMachineEvent(String stateMachineEvent, Long requestId) { + TopUpRequestEvent event = TopUpRequestEvent.valueOf(stateMachineEvent); + + TopUpRequestModel request = this.read(requestId); + if (request == null) { + throw new ResourceNotFoundRuntimeException(ERightsExceptionCode.ER014); + } + + StateMachineTransitionResultModel transitionResult = + this.requestStateMachineService.send(request.getSmId(), event, Collections.singletonMap( + MovementFileMessageHeader.MOVEMENT_FILE_ID.name(), + request.getDeclaration().getMovementFileId())); + + if (transitionResult.getValid()) { + if (transitionResult.getArrivalState() == TopUpRequestState.PAID) { + MovementFileModel movementFile = movementFileJpaServiceProvider.read(request.getDeclaration().getMovementFileId()); + emailEdmsServiceProvider.notifyTopUpRequest(request, movementFile, NotificationTemplateCode.PAID_REQUEST); + } + if (transitionResult.getArrivalState() == TopUpRequestState.REJECTED) { + clearPaymentInfo(request); + MovementFileModel movementFile = movementFileJpaServiceProvider.read(request.getDeclaration().getMovementFileId()); + emailEdmsServiceProvider.notifyTopUpRequest(request, movementFile, NotificationTemplateCode.REJECTED_REQUEST); + } + if (transitionResult.getArrivalState() == TopUpRequestState.APPROVED && TopUpRequestEvent.APPROVE == transitionResult.getEvent()) { + MovementFileModel movementFile = movementFileJpaServiceProvider.read(request.getDeclaration().getMovementFileId()); + emailEdmsServiceProvider.notifyTopUpRequest(request, movementFile, NotificationTemplateCode.APPROVED_REQUEST); + } + request.setState(transitionResult.getArrivalState()); + return this.update(request); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid"); + } + + } + + private void clearPaymentInfo(TopUpRequestModel request) { + request.setAbacRequestState(null); + request.setPaymentRequest(null); + request.setPaymentOrder(null); + request.setP2pHubOrderStatus(null); + request.setPaymentDate(null); + } + + public List> getStateMachineHistory(Long requestId) { + StateMachineHistoryHolder stateMachineHistoryHolder; + TopUpRequestModel request = this.read(requestId); + + stateMachineHistoryHolder = this.requestStateMachineService.getHistory(request.getSmId()); + + List> stateMachineTransitionModelList = stateMachineHistoryHolder.getTransitions(); + + return stateMachineTransitionModelList; + } + + public TopUpRequestModel createRequest(TopUpRequestModel topUpRequestModel) { + MovementFileJpaServiceProvider movementFileService = (MovementFileJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + RequestJpaServiceProvider requestJpaServiceProvider = getRequestJpaServiceProvider(); + RequestModel parentRequest = requestJpaServiceProvider.get(topUpRequestModel.getParentId()); + topUpRequestModel.setParent(parentRequest); + MovementFileModel movementFile = movementFileService.getMovementFile(topUpRequestModel.getParent().getDeclaration().getMovementFileId()); + + topUpRequestModel.setDeclaration(topUpRequestModel.getParent().getDeclaration()); + topUpRequestModel.setEntitlementType(topUpRequestModel.getParent().getEntitlementType()); + topUpRequestModel.setPersonBankInfo(topUpRequestModel.getParent().getPersonBankInfo()); + topUpRequestModel.setEntitlementTypeCat(topUpRequestModel.getParent().getEntitlementTypeCat()); + topUpRequestModel.setYear(topUpRequestModel.getParent().getYear()); + topUpRequestModel.setStaffMember(topUpRequestModel.getParent().getStaffMember()); + + ImmutablePair requestNumberAndStringId = getRequestStringId(topUpRequestModel.getParent().getEntitlementTypeCat(), movementFile); + topUpRequestModel.setRequestStringId(requestNumberAndStringId.getValue()); + topUpRequestModel.setRequestNumber(requestNumberAndStringId.getKey()); + topUpRequestModel= updateAttachments(topUpRequestModel); + + TopUpRequestEvent creationEvent; + if (requestSecurityChecker.canApproveTopUp(topUpRequestModel)) { + creationEvent = TopUpRequestEvent.APPROVE; + } else if ( requestSecurityChecker.canSubmitTopUp(topUpRequestModel,TopUpRequestEvent.SUBMIT.toString())) { + creationEvent = TopUpRequestEvent.SUBMIT; + } else { + throw new RuntimeException("User cannot create the request because not have permissions"); + } + + + + + + //set state + StateMachineTransitionResultModel transitionResult = this.requestStateMachineService.send(creationEvent); + if (Boolean.TRUE.equals(transitionResult.getValid())) { + topUpRequestModel.setState(transitionResult.getArrivalState()); + topUpRequestModel.setSmId(transitionResult.getId()); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid, buildClearingRequest()"); + } + TopUpRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(TopUpRequestJpaEntity.class, TopUpRequestJpaRepository.class); + TopUpRequestJpaEntity topUpRequestJpaEntity = getBeanMapper().map(topUpRequestModel, TopUpRequestJpaEntity.class); + //attachFiles(topUpRequestJpaEntity, attachmentFileList); + repo.save(topUpRequestJpaEntity); + TopUpRequestModel createdTopUp = getBeanMapper().map(topUpRequestJpaEntity, TopUpRequestModel.class); + emailEdmsServiceProvider.notifyTopUpRequest(createdTopUp, movementFile, NotificationTemplateCode.CREATE); + //getCommentsForRequestService().create(createCommentModel(reasonFor, createdTopUp.getId())); + return createdTopUp; + } + + private RequestJpaServiceProvider getRequestJpaServiceProvider() { + return (RequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + RequestModel.class); + } + + private void attachFiles(TopUpRequestJpaEntity newTopUpRequestEntity, List attachmentFileList) { + RequestDetailJpaEntity requestDetailJpaEntity = new RequestDetailJpaEntity(); + List attachments = new LinkedList<>(); + for (DetailAttachmentModel detailAttachmentModel : attachmentFileList) { + RequestDetailAttachmentJpaEntity entity = new RequestDetailAttachmentJpaEntity(); + entity.setUuid(detailAttachmentModel.getUuid()); + entity.setFileName(detailAttachmentModel.getFileName()); + entity.setAttachmentType(detailAttachmentModel.getAttachmentType()); + attachments.add(entity); + } + requestDetailJpaEntity.setAttachments(attachments); + newTopUpRequestEntity.setRequestDetails(Collections.singletonList(requestDetailJpaEntity)); + attachmentFileList.forEach(attachmentFile -> this.fileManager.persist(attachmentFile.getUuid())); + } + + + public TopUpRequestModel updateAttachments(TopUpRequestModel model) { + + if (model.getRequestDetails() != null) { + RequestJpaServiceProvider requestJpaServiceProvider = getRequestJpaServiceProvider(); + model.getRequestDetails().forEach(rDetails -> { + List attachmentModels = rDetails.getAttachments(); + if (attachmentModels != null) { + attachmentModels.forEach(att -> att.setRequestDetail(rDetails)); + requestJpaServiceProvider.removeTheDeletedAttachements(rDetails); + requestJpaServiceProvider.persistTheNewAttachements(rDetails); + } + }); + } + return model; + } + + + public TopUpRequestModel getRequest(Long requestId) { + TopUpRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(TopUpRequestJpaEntity.class, TopUpRequestJpaRepository.class); + TopUpRequestJpaEntity requestJpaEntity = repo.findById(requestId); + return getBeanMapper().map(requestJpaEntity, TopUpRequestModel.class); + } + + public List getRequestsByParent(Long parentRequestId) { + TopUpRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(TopUpRequestJpaEntity.class, TopUpRequestJpaRepository.class); + List entities = repo.findByParentId(parentRequestId); + return getBeanMapper().mapAsList(entities, TopUpRequestModel.class); + } + + public void deleteRequest(Long requestId) { + TopUpRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(TopUpRequestJpaEntity.class, TopUpRequestJpaRepository.class); + repo.deleteById(requestId); + + } + + public TopUpRequestModel updateRequest(TopUpRequestModel model) { + RequestJpaServiceProvider requestJpaServiceProvider = getRequestJpaServiceProvider(); + RequestModel Current = requestJpaServiceProvider.get(model.getId()); + if ( requestSecurityChecker.canSubmitTopUp(model, model.getState().name()) || + (requestSecurityChecker.isOwner(model , model.getState().toString()) && "DRAFT".equals(model.getState().toString() )) //owner can update when in draft + ) + { + model = updateAttachments(model); + RequestModel parentRequest = requestJpaServiceProvider.get(model.getParentId()); + model.setParent(parentRequest); + return this.update(model); + } else if (requestSecurityChecker.canReject(model)) { + TopUpRequestModel dbModel = this.read(model.getId()); + dbModel.setComments(model.getComments()); + RequestModel parentRequest = requestJpaServiceProvider.get(model.getParentId()); + model.setParent(parentRequest); + return this.update(dbModel); + } else { + throw new RuntimeException("User cannot update the request because not have permissions"); + } + } + + + + private CommentForRequestModel createCommentModel(String comment, long requestId) { + CommentForRequestModel commentModel = new CommentForRequestModel(); + commentModel.setDeleted(false); + commentModel.setEntityId(requestId); + commentModel.setCommentText(comment); + commentModel.setCommentType("REQUEST"); + commentModel.setAuthorName(getFullNameWithInitials( + userHandler.getUser().getFirstName(), + userHandler.getUser().getLastName())); + return commentModel; + } + + private CommentForRequestJpaServiceProvider getCommentsForRequestService() { + return dataServiceProviderRegistry.getDataServiceProviderFor(CommentForRequestModel.class, CommentForRequestJpaServiceProvider.class); + } + + private String getFullNameWithInitials(String firstName, String lastName) { + + String fName = firstName != null && firstName.length() > 0 ? firstName : Constants.QUESTION_MARK; + String lName = lastName != null && lastName.length() > 0 ? lastName : Constants.QUESTION_MARK; + + StringBuilder stringBuilder = new StringBuilder(fName).append(Constants.SPACE).append(lName); + stringBuilder.append(Constants.SPACE).append(Constants.RBRACKET_OPEN); + stringBuilder.append(fName.substring(0, 1).toUpperCase()); + stringBuilder.append(lName.substring(0, 1).toUpperCase()); + stringBuilder.append(Constants.RBRACKET_CLOSE); + return stringBuilder.toString(); + } + + private ImmutablePair getRequestStringId(EntitlementTypeCatModel entTypeCat, MovementFileModel movementFile) { + Long nextSequence = 0L; + String requestId = ""; + + + RequestJpaRepository repoRem = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + nextSequence = repoRem.getSequenceForRequestWithEntitlementID(movementFile.getYear(), getBeanMapper().map(entTypeCat, EntitlementTypeCatJpaEntity.class)); + requestId = Arrays.asList(movementFile.getYear().toString(), entTypeCat.getCode().name(), String.format("%03d", nextSequence)).stream().collect(Collectors.joining("-")); + + + + + return new ImmutablePair(nextSequence, requestId); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/TotalRemRequestJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/TotalRemRequestJpaServiceProvider.java new file mode 100644 index 0000000..3aff3fc --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/TotalRemRequestJpaServiceProvider.java @@ -0,0 +1,366 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement.request; + +import eu.europa.eeas.ananke.core.base.context.AnankeContext; +import eu.europa.eeas.ananke.core.base.exception.NotAllowedRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.ananke.tools.filemanagement.FileManager; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.ananke.tools.statemachine.service.history.StateMachineHistoryHolder; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionResultModel; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.PersonBankInfoJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeCatJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.TotalRemRequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.PersonBankInfoJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.RequestJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.TotalRemRequestJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.RequestSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementMaxDefaultJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementMaxJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementTypeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementContextType; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import eu.europa.eeas.erights.common.service.model.declaration.PersonBankInfoModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeCatModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestDetailAttachmentModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestDetailModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TotalRemRequestModel; +import eu.europa.eeas.erights.common.service.provider.BankAccountServiceProvider; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import eu.europa.eeas.erights.common.tools.statemachine.ClearingRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import eu.europa.eeas.erights.common.tools.statemachine.TotalRemRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.TotalRemRequestState; +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.javamoney.moneta.Money; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.util.*; +import java.util.stream.Collectors; + +@Service +@Transactional +public class TotalRemRequestJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, + EntityUpdater, EntityDeleter { + + @Autowired + private AnankeContext anankeContext; + + @Autowired + @Qualifier(ERightsBeanNames.TotalRemRequestStateMachine.SERVICE) + private StateMachineService requestStateMachineService; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + private FileManager fileManager; + + @Autowired + private MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + @Autowired + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @Autowired + private BankAccountServiceProvider bankAccountServiceProvider; + + @Autowired + @Qualifier(ERightsBeanNames.REQUEST_SECURITY_CHECKER) + private RequestSecurityChecker requestSecurityChecker; + + @Autowired + private EntitlementMaxDefaultJpaServiceProvider entitlementMaxDefaultJpaServiceProvider; + + @Override + public Class getModelType() { + return TotalRemRequestModel.class; + } + + @Override + public Class getEntityType() { + return TotalRemRequestJpaEntity.class; + } + + public TotalRemRequestModel getRequest(Long requestId) { + TotalRemRequestModel totalRemRequestModel = this.read(requestId); + totalRemRequestModel.setPersonBankInfo(bankAccountServiceProvider.getIbanCodeIfDoesNotExistOne(totalRemRequestModel.getPersonBankInfo())); + return totalRemRequestModel; + } + + public List> getStateMachineHistory(Long requestId) { + StateMachineHistoryHolder stateMachineHistoryHolder; + TotalRemRequestModel request = this.read(requestId); + stateMachineHistoryHolder = this.requestStateMachineService.getHistory(request.getSmId()); + return stateMachineHistoryHolder.getTransitions(); + } + + public TotalRemRequestModel createRequest(DeclarationModel declaration) { + TotalRemRequestModel totalRemRequest = getTotalRemRequest(declaration.getId()); + if (totalRemRequest == null) { + totalRemRequest = this.buildTotalRemRequest(declaration); + if (totalRemRequest != null) { + TotalRemRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(TotalRemRequestJpaEntity.class, TotalRemRequestJpaRepository.class); + repo.save(getBeanMapper().map(totalRemRequest, TotalRemRequestJpaEntity.class)); + totalRemRequest = getTotalRemRequest(declaration.getId()); + } + } + + return totalRemRequest; + } + + public void deleteRequest(DeclarationModel declaration) { + TotalRemRequestModel request = getTotalRemRequest(declaration.getId()); + if (request != null) { + TotalRemRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(TotalRemRequestJpaEntity.class, TotalRemRequestJpaRepository.class); + if (request.getState() == TotalRemRequestState.DRAFT && request.getPaymentRequest() == null) { + repo.deleteById(request.getId()); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER015, "You have already submitted a removal request. If you wish to change your removal options, please make sure your current request is in draft. If it has not been approved yet, you can cancel it. Otherwise, contact RM.BS.4 on this matter. "); + } + } + } + + public TotalRemRequestModel updateRequest(TotalRemRequestModel model) { + if (requestSecurityChecker.canUpdate(model, model.getState().name())) { + updateBankAccount(model); + + if (model.getRequestDetails() != null) { + model.getRequestDetails().forEach(rDetails -> { + List attachmentModels = rDetails.getAttachments(); + if (attachmentModels != null) { + attachmentModels.forEach(att -> att.setRequestDetail(rDetails)); + removeTheDeletedAttachements(rDetails); + persistTheNewAttachements(rDetails); + } + }); + } + preserveOnUpdateTheDatabaseState(model); + return this.update(model); + } else if (requestSecurityChecker.canReject(model)) { + TotalRemRequestModel dbModel = this.read(model.getId()); + dbModel.setComments(model.getComments()); + return this.update(dbModel); + } else { + throw new RuntimeException("User cannot update the request because not have permissions"); + } + } + + private void updateBankAccount(RequestModel model) { + model.setPersonBankInfo(getBeanMapper().map(getById(model), PersonBankInfoModel.class)); + } + + private PersonBankInfoJpaEntity getById(RequestModel model) { + PersonBankInfoJpaRepository personBankInfoJpaRepo = getEntityRepositoryRegistry() + .getReaderRepositoryFor(PersonBankInfoJpaEntity.class, PersonBankInfoJpaRepository.class); + return personBankInfoJpaRepo.findById(model.getPersonBankInfo().getId()); + } + + public TotalRemRequestModel newStateMachineEvent(String stateMachineEvent, Long requestId) { + TotalRemRequestEvent event = TotalRemRequestEvent.valueOf(stateMachineEvent); + + TotalRemRequestModel request = this.read(requestId); + if (request == null) { + throw new ResourceNotFoundRuntimeException(ERightsExceptionCode.ER014); + } + + StateMachineTransitionResultModel transitionResult = + this.requestStateMachineService.send(request.getSmId(), event, Collections.singletonMap( + MovementFileMessageHeader.MOVEMENT_FILE_ID.name(), + request.getDeclaration().getMovementFileId())); + + if (transitionResult.getValid()) { + //RIGD-720 reset total amount when transition from rejected -> awaiting + if (request.getState() == TotalRemRequestState.REJECTED && transitionResult.getArrivalState() == TotalRemRequestState.DRAFT) { + request.setTotalAmount(null); + } + + if (transitionResult.getArrivalState() == TotalRemRequestState.REJECTED) { + MovementFileModel movementFile = movementFileJpaServiceProvider.read(request.getDeclaration().getMovementFileId()); + emailEdmsServiceProvider.notifyEntitlementRequestStatus(request, movementFile, NotificationTemplateCode.REJECTED_ADV_REM_REQUEST); + } + + if (transitionResult.getArrivalState() == TotalRemRequestState.APPROVED && TotalRemRequestEvent.APPROVE == transitionResult.getEvent()) { + MovementFileModel movementFile = movementFileJpaServiceProvider.read(request.getDeclaration().getMovementFileId()); + emailEdmsServiceProvider.notifyEntitlementRequestStatus(request, movementFile, NotificationTemplateCode.APPROVED_ADV_REM_REQUEST); + } + + if (transitionResult.getArrivalState() == TotalRemRequestState.PAID) { + MovementFileModel movementFile = movementFileJpaServiceProvider.read(request.getDeclaration().getMovementFileId()); + emailEdmsServiceProvider.notifyEntitlementRequestPaid(request, movementFile); + } + + if (request.getState() == TotalRemRequestState.DRAFT && transitionResult.getArrivalState() == TotalRemRequestState.AWAITING) { + request.setDraftToAwaitingDate(LocalDate.now()); + } + + request.setState(transitionResult.getArrivalState()); + + return this.update(request); + + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid"); + } + + } + + private void preserveOnUpdateTheDatabaseState(TotalRemRequestModel model) { + TotalRemRequestModel dbModel = this.read(model.getId()); + model.setState(dbModel.getState()); + } + + private void removeTheDeletedAttachements(RequestDetailModel rDetails) { + rDetails.setAttachments(rDetails.getAttachments().stream().filter(att -> att.getFileName() != null).collect(Collectors.toList())); + } + + private void persistTheNewAttachements(RequestDetailModel rDetails) { + Set attachmentsToPersist = getAttachmentsToPersist(rDetails); + attachmentsToPersist.forEach(this.fileManager::persist); + } + + private Set getAttachmentsToPersist(RequestDetailModel model) { + Set result = new HashSet<>(); + model.getAttachments().stream().filter(e -> e.getId() == null).forEach(e -> result.add(e.getFileUid())); + return result; + } + + + private TotalRemRequestModel buildTotalRemRequest(DeclarationModel declaration) { + TotalRemRequestModel model = new TotalRemRequestModel(); + model.setDeclaration(declaration); + + MovementFileJpaServiceProvider movementFileService = (MovementFileJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + MovementFileModel movementFile = movementFileService.getMovementFile(declaration.getMovementFileId()); + + //set entitlement + EntitlementTypeJpaServiceProvider entitlementService = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(EntitlementTypeModel.class); + List entitlements = entitlementService.getEntitlementsTypeList(declaration.getMovementFileId()); + Optional removalEntitlement = entitlements.stream() + .filter(ent -> ent.getEntitlementTypeCat().getCode() == EntitlementTypeCatCode.REM).findFirst(); + if (!isEntitlementAvailable(removalEntitlement)) { + return null; + } + model.setEntitlementType(removalEntitlement.get()); + model.setEntitlementTypeCat(removalEntitlement.get().getEntitlementTypeCat()); + model.setPersonBankInfo(declaration.getPersonBankInfo()); + model.setStaffMember(declaration.getStaffMember()); + model.setYear(movementFile.getYear()); + ImmutablePair requestNumberAndStringId = getRequestStringId(removalEntitlement.get().getEntitlementTypeCat(), movementFile); + model.setRequestStringId(requestNumberAndStringId.getValue()); + model.setRequestNumber(requestNumberAndStringId.getKey()); + model.setRequestDeclarationNo(getRequestDeclarationNo(declaration.getId())); + + //Set entry into storage values in request + if (canUpdateRequestEISCeiling(model)) { + model.setCountry(declaration.getCountryForEIS()); + model.setCity(declaration.getCityForEIS()); + model.setEntryIntoStorage(declaration.getEntryIntoStorage()); + } + + //set state + StateMachineTransitionResultModel transitionResult = + this.requestStateMachineService.send(TotalRemRequestEvent.SAVE_AS_DRAFT, Collections.singletonMap( + MovementFileMessageHeader.MOVEMENT_FILE_ID.name(), + declaration.getMovementFileId())); + if (transitionResult.getValid()) { + model.setState(transitionResult.getArrivalState()); + model.setSmId(transitionResult.getId()); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid, buildTotalRemRequest()"); + } + + removalEntitlement.get().getEntitlementMaxList().forEach(max -> { + if (max.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.AIRFREIGHT) { + model.setAirfreightRate(max.getMaxValue()); + } else if (max.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.SURFACE) { + model.setSurfaceRate(max.getMaxValue()); + } else if (max.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.STORAGE) { + model.setStorageRate(max.getMaxValue()); + model.setCity(max.getCity());// we copy city and country from ceilling + model.setCountry(max.getCountry()); + } else if (max.getEntitlementMaxCat().getCode() == EntitlementMaxCatCode.CAR) { + model.setCarRate(max.getMaxValue()); + } + }); + + return model; + } + + private boolean isEntitlementAvailable(Optional removalEntitlement) { + return removalEntitlement.isPresent() && removalEntitlement.get().getEnable(); + } + + private ImmutablePair getRequestStringId(EntitlementTypeCatModel entTypeCat, MovementFileModel movementFile) { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + Long nextSequence = repo.getSequenceForRequestWithEntitlementID(movementFile.getYear(), getBeanMapper().map(entTypeCat, EntitlementTypeCatJpaEntity.class)); + String requestId = String.join("-", Arrays.asList(movementFile.getYear().toString(), entTypeCat.getCode().name(), String.format("%03d", nextSequence))); + return new ImmutablePair<>(nextSequence, requestId); + } + + private Long getRequestDeclarationNo(Long declarationId) { + TotalRemRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(TotalRemRequestJpaEntity.class, TotalRemRequestJpaRepository.class); + return repo.getRequestDeclarationNo(declarationId); + } + + public TotalRemRequestModel getTotalRemRequest(Long declarationId) { + TotalRemRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(TotalRemRequestJpaEntity.class, TotalRemRequestJpaRepository.class); + TotalRemRequestJpaEntity request = repo.findByDeclarationId(declarationId); + return getBeanMapper().map(request, TotalRemRequestModel.class); + } + + public TotalRemRequestModel updateTotalRemRequestCountryCityEIS(DeclarationModel declaration, TotalRemRequestModel totalRemRequestModel) { + //Set entry into storage values in request + totalRemRequestModel.setEntryIntoStorage(declaration.getEntryIntoStorage()); + if (declaration.getEntryIntoStorage() != null && declaration.getEntryIntoStorage().equals(Boolean.FALSE) && canUpdateRequestEISCeiling(totalRemRequestModel)) { // we only update when the entry into storage is N, so we disable the ceiling in the request + totalRemRequestModel.setCountry(declaration.getCountryForEIS()); + totalRemRequestModel.setCity(declaration.getCityForEIS()); + totalRemRequestModel.setStorageRate(null); + } else if (declaration.getEntryIntoStorage() != null && declaration.getEntryIntoStorage().equals(Boolean.TRUE)) { + totalRemRequestModel.setCountry(declaration.getCountryForEIS()); + totalRemRequestModel.setCity(declaration.getCityForEIS()); + MovementFileJpaServiceProvider movementFileService = (MovementFileJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + MovementFileModel movementFile = movementFileService.getMovementFile(declaration.getMovementFileId()); + Optional amount = isCrisis(movementFile) ? Optional.empty() : entitlementMaxDefaultJpaServiceProvider.getEntitlementMaxDefaultAMount(movementFile.getCityFrom().getCode(), declaration.getCityForEIS().getCode(), movementFile.getStartDate(), 3L); + amount.ifPresent(totalRemRequestModel::setStorageRate); + } + if (declaration.getVolumeAirFreightCeiling() != null && canUpdateRequestEISCeiling(totalRemRequestModel)) { // we only update when the entry into storage is N, so we disable the ceiling in the request + totalRemRequestModel.setVolumeAirFreightCeiling(declaration.getVolumeAirFreightCeiling()); + totalRemRequestModel.setKgAirFreightCeiling(declaration.getKgAirFreightCeiling()); + } + + return this.update(totalRemRequestModel); + } + + public boolean canUpdateRequestEISCeiling(TotalRemRequestModel totalRemRequestModel) { + + return totalRemRequestModel.getState() == TotalRemRequestState.DRAFT && totalRemRequestModel.getPaymentRequest() == null; + + } + + private boolean isCrisis(MovementFileModel movementFile) { + return movementFile.getMovementContext().getName().equals(MovementContextType.CRISIS.name()); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/TudRequestJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/TudRequestJpaServiceProvider.java new file mode 100644 index 0000000..45a4c29 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/TudRequestJpaServiceProvider.java @@ -0,0 +1,515 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement.request; + +import eu.europa.eeas.ananke.core.base.Profiles; +import eu.europa.eeas.ananke.core.base.context.AnankeContext; +import eu.europa.eeas.ananke.core.base.exception.NotAllowedRuntimeException; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.ananke.tools.statemachine.service.history.StateMachineHistoryHolder; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionResultModel; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeCatJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.RequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.TudRequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.RequestJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.TudRequestJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementTypeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationPersonModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeCatModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestPersonAttachmentModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestPersonModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TudRequestModel; +import eu.europa.eeas.erights.common.service.provider.BankAccountServiceProvider; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import eu.europa.eeas.erights.common.tools.statemachine.RequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.RequestState; +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.commons.collections4.CollectionUtils; +import org.javamoney.moneta.Money; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.stream.Collectors; + +import static eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode.TUD_DEPENDENT; +import static eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode.TUD_STAFF_MEMBER; + +@Service +@Transactional +public class TudRequestJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, EntityCreator, + EntityUpdater, EntityDeleter { + + @Autowired + @Qualifier(ERightsBeanNames.EntitlementRequestStateMachine.SERVICE) + private StateMachineService requestStateMachineService; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @Autowired + private MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + @Autowired + private AnankeContext anankeContext; + + @Autowired + private BankAccountServiceProvider bankAccountServiceProvider; + + @Override + public Class getModelType() { + return TudRequestModel.class; + } + + @Override + public Class getEntityType() { + return TudRequestJpaEntity.class; + } + + public void createOrUpdateRequest(DeclarationModel declaration) { + List existingRequests = getRequests(declaration); + + if (existingRequests.isEmpty()) { + createNewTUDRequest(declaration, declaration.getDeclarationPersons(), true); + } else { + createOrUpdateBasedOnExistingRequests(existingRequests, declaration); + } + } + + protected void createNewTUDRequest(DeclarationModel declaration, List declarationPersons, boolean includesStaffMember) { + RequestPersonJpaServiceProvider requestPersonService = (RequestPersonJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RequestPersonModel.class); + + List requestPersons = buildRequestPersonList(declarationPersons); + TudRequestModel builtRequest = this.buildTUDRequest(declaration, requestPersons, includesStaffMember); + + if (builtRequest != null) { + TudRequestModel created = this.create(builtRequest); + + requestPersons.forEach(req -> req.setRequest(created)); + requestPersonService.createRequestPersons(requestPersons); + } + } + + protected void createOrUpdateBasedOnExistingRequests(List existingRequests, DeclarationModel declaration) { + RequestPersonJpaServiceProvider requestPersonService = (RequestPersonJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RequestPersonModel.class); + + List changeableRequests = existingRequests.stream().filter(this::isRequestChangeable).collect(Collectors.toList()); //it should be always max one + if (multipleChangeableRequests(changeableRequests)) { + //keep just first and update + List sortedList = changeableRequests.stream().sorted(Comparator.comparing(RequestModel::getRequestDeclarationNo)).collect(Collectors.toList()); + List toBeDeleted = sortedList.subList(1, sortedList.size()); + toBeDeleted.forEach(requestModel -> { + requestModel.getRequestPersons().forEach(requestPersonService::delete); + this.delete(requestModel.getId()); + }); + + updateTUDRequest(declaration, requestPersonService, sortedList); + } else if (oneChangeableRequest(changeableRequests)) { + //update + updateTUDRequest(declaration, requestPersonService, changeableRequests); + } else { + //create new + List personsToBeDeclared = getPersonsToBeDeclared(declaration); + if (personsToBeDeclared.isEmpty()) { + return; + } + createNewTUDRequest(declaration, personsToBeDeclared, false); + } + } + + public List> getStateMachineHistory(Long requestId) { + StateMachineHistoryHolder stateMachineHistoryHolder; + RequestModel request = this.read(requestId); + + stateMachineHistoryHolder = this.requestStateMachineService.getHistory(request.getSmId()); + + List> stateMachineTransitionModelList = stateMachineHistoryHolder.getTransitions(); + + return stateMachineTransitionModelList; + } + + private void updateTUDRequest(DeclarationModel declaration, RequestPersonJpaServiceProvider requestPersonService, List requests) { + TudRequestModel changeableRequest = requests.get(0); + changeableRequest.getRequestPersons().forEach(requestPersonService::delete); + + List toBeDeclared = getPersonsToBeDeclared(declaration); + if (toBeDeclared.isEmpty() && !changeableRequest.getIncludesStaffMember()) { + //if there are no persons in request and the staff member is added to another request, the request should be deleted + this.delete(changeableRequest.getId()); + return; + } + List requestPersons = buildRequestPersonList(toBeDeclared); + //update the request + TudRequestModel toUpdate = this.updateTUDRequest(changeableRequest, requestPersons, declaration); + + TudRequestModel updated = this.update(toUpdate); + //save new list of persons in request + requestPersons.forEach(req -> req.setRequest(updated)); + requestPersonService.create(requestPersons); + } + + public List getRequests(DeclarationModel declarationModel) { + TudRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(TudRequestJpaEntity.class, TudRequestJpaRepository.class); + List requests = repo.findAllByDeclaration_id(declarationModel.getId()); + List requestModels = getBeanMapper().mapAsList(requests, TudRequestModel.class); + RequestPersonJpaServiceProvider requestPersonService = (RequestPersonJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RequestPersonModel.class); + + return requestModels.stream().map(req -> { + req.setRequestPersons(requestPersonService.getRequestPersons(req.getId())); + return req; + }).collect(Collectors.toList()); + } + + public TudRequestModel getRequest(Long requestId) { + TudRequestModel request = this.read(requestId); + RequestPersonJpaServiceProvider requestPersonService = (RequestPersonJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RequestPersonModel.class); + request.setRequestPersons(requestPersonService.getRequestPersons(requestId)); + request.setPersonBankInfo(bankAccountServiceProvider.getIbanCodeIfDoesNotExistOne(request.getPersonBankInfo())); + return request; + } + + public TudRequestModel updateRequestAndDeclaredPersons(TudRequestModel request) { + RequestPersonJpaServiceProvider requestPersonService = (RequestPersonJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RequestPersonModel.class); + + //preserve on update the database state. State can only be changed through newStateMachine + TudRequestModel dbModel = this.read(request.getId()); + request.setState(dbModel.getState()); + + this.update(request); + requestPersonService.update(request.getRequestPersons()); + + return request; + } + + public TudRequestModel newStateMachineEvent(String stateMachineEvent, Long requestId) { + RequestEvent event = RequestEvent.valueOf(stateMachineEvent); + + TudRequestModel request = this.read(requestId); + + StateMachineTransitionResultModel transitionResult = this.requestStateMachineService.send(request.getSmId(), event, + Collections.singletonMap( + MovementFileMessageHeader.MOVEMENT_FILE_ID.name(), + request.getDeclaration().getMovementFileId())); + + if (transitionResult.getValid()) { + //RIGD-720 reset total amount when transition from rejected -> awaiting + if (request.getState() == RequestState.REJECTED && transitionResult.getArrivalState() == RequestState.AWAITING) { + request.setTotalAmount(null); + } + + if (transitionResult.getArrivalState() == RequestState.REJECTED) { + MovementFileModel movementFile = movementFileJpaServiceProvider.read(request.getDeclaration().getMovementFileId()); + emailEdmsServiceProvider.notifyEntitlementRequestStatus(request, movementFile, NotificationTemplateCode.REJECTED_REQUEST); + } + + if (transitionResult.getArrivalState() == RequestState.APPROVED && RequestEvent.APPROVE == transitionResult.getEvent()) { + MovementFileModel movementFile = movementFileJpaServiceProvider.read(request.getDeclaration().getMovementFileId()); + emailEdmsServiceProvider.notifyEntitlementRequestStatus(request, movementFile, NotificationTemplateCode.APPROVED_REQUEST); + } + + if (transitionResult.getArrivalState() == RequestState.PAID) { + MovementFileModel movementFile = movementFileJpaServiceProvider.read(request.getDeclaration().getMovementFileId()); + emailEdmsServiceProvider.notifyEntitlementRequestPaid(request, movementFile); + } + + request.setState(transitionResult.getArrivalState()); + + return this.update(request); + + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid, newStateMachineEvent()"); + } + + } + + protected TudRequestModel buildTUDRequest(DeclarationModel declaration, List requestPersons, boolean includesStaffMember) { + + EntitlementTypeJpaServiceProvider entitlementService = (EntitlementTypeJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(EntitlementTypeModel.class); + + MovementFileJpaServiceProvider movementFileService = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + MovementFileModel movementFile = movementFileService.getMovementFile(declaration.getMovementFileId()); + + List entitlements = entitlementService.getEntitlementsTypeList(declaration.getMovementFileId()); + Optional tudEntitlement = entitlements.stream() + .filter(ent -> ent.getEntitlementTypeCat().getCode() == EntitlementTypeCatCode.TUD).findFirst(); + + if (cannotCreateTUDRequest(tudEntitlement)) { + return null; + } + + TudRequestModel requestModel = new TudRequestModel(); + requestModel.setDeclaration(declaration); + + ImmutablePair stateInfo = getStateMachineTransitionInfo(requestPersons); + requestModel.setState(stateInfo.getValue()); + requestModel.setSmId(stateInfo.getKey()); + + requestModel.setEntitlementType(tudEntitlement.get()); + requestModel.setEntitlementTypeCat(tudEntitlement.get().getEntitlementTypeCat()); + requestModel.setPersonBankInfo(declaration.getPersonBankInfo()); + requestModel.setStaffMember(declaration.getStaffMember()); + requestModel.setIncludesStaffMember(includesStaffMember); + + Optional maxStaffMember = tudEntitlement.get().getEntitlementMaxList().stream().filter(max -> max.getEntitlementMaxCat().getCode() == TUD_STAFF_MEMBER).findFirst(); + if (maxStaffMember.isPresent()) { + requestModel.setFlatRate(maxStaffMember.get().getMaxValue()); + } + Optional maxDependent = tudEntitlement.get().getEntitlementMaxList().stream().filter(max -> max.getEntitlementMaxCat().getCode() == TUD_DEPENDENT).findFirst(); + if (maxDependent.isPresent()) { + requestModel.setFlatRateFamily(maxDependent.get().getMaxValue()); + } + + ImmutablePair requestNumberAndStringId = getRequestStringId(tudEntitlement.get().getEntitlementTypeCat(), movementFile); + requestModel.setRequestStringId(requestNumberAndStringId.getValue()); + requestModel.setRequestNumber(requestNumberAndStringId.getKey()); + requestModel.setRequestDeclarationNo(getRequestDeclarationNo(declaration.getId())); + + int noOfDependents = requestPersons.size(); + requestModel.setCalculatedTotalAmount(calculateTotalAmount(noOfDependents, tudEntitlement.get(), requestModel)); + + if (stateInfo.getValue() == RequestState.APPROVED) { + requestModel.setTotalAmount(requestModel.getCalculatedTotalAmount()); + } + requestModel.setYear(movementFile.getYear()); + + return requestModel; + } + + private boolean cannotCreateTUDRequest(Optional tudEntitlement) { + return !tudEntitlement.isPresent() || !tudEntitlement.get().getEnable(); + } + + private boolean oneChangeableRequest(List changeableRequests) { + return changeableRequests.size() == 1; + } + + private boolean multipleChangeableRequests(List changeableRequests) { + return changeableRequests.size() > 1; + } + + /** + * Method used to update the current request with new calculated amount and new state generated based on the claim. + * @param request s + * @param requestPersons s + * @param declaration s + * @return s + */ + protected TudRequestModel updateTUDRequest(TudRequestModel request, List requestPersons, DeclarationModel declaration) { + + request.setCalculatedTotalAmount(calculateTotalAmount(requestPersons.size(), request.getEntitlementType(), request)); + Optional maxStaffMember = request.getEntitlementType().getEntitlementMaxList().stream().filter(max -> max.getEntitlementMaxCat().getCode() == TUD_STAFF_MEMBER).findFirst(); + if (maxStaffMember.isPresent()) { + request.setFlatRate(maxStaffMember.get().getMaxValue()); + } + Optional maxDependent = request.getEntitlementType().getEntitlementMaxList().stream().filter(max -> max.getEntitlementMaxCat().getCode() == TUD_DEPENDENT).findFirst(); + if (maxDependent.isPresent()) { + request.setFlatRateFamily(maxDependent.get().getMaxValue()); + } + request.setPersonBankInfo(declaration.getPersonBankInfo()); + StateMachineTransitionResultModel transitionResult = null; + + if (isThereAtLeastOneClaim(requestPersons) && (request.getState() == RequestState.APPROVED || request.getState() == RequestState.REJECTED)) { + transitionResult = this.requestStateMachineService.send(request.getSmId(), RequestEvent.DECL_WITH_REMARK, + Collections.singletonMap( + MovementFileMessageHeader.MOVEMENT_FILE_ID.name(), + declaration.getMovementFileId())); + } else if (!isThereAtLeastOneClaim(requestPersons) && (request.getState() == RequestState.AWAITING + || request.getState() == RequestState.REJECTED)) { + transitionResult = this.requestStateMachineService.send(request.getSmId(), RequestEvent.APPROVE, Collections.singletonMap( + MovementFileMessageHeader.MOVEMENT_FILE_ID.name(), + declaration.getMovementFileId())); + } + + if (transitionResult != null) { + if (transitionResult.getValid()) { + request.setState(transitionResult.getArrivalState()); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid, updateTUDRequest()"); + } + } + + // if there is no claim then the totalAmount = calculatedAmount otherwise we need to reset the totalAmount (the value will be determined in UI based on user input) + if (request.getState() == RequestState.APPROVED) { + request.setTotalAmount(request.getCalculatedTotalAmount()); + } else { + request.setTotalAmount(null); + } + return request; + } + + private ImmutablePair getStateMachineTransitionInfo(List requestPersons) { + StateMachineTransitionResultModel transitionResult; + if (isThereAtLeastOneClaim(requestPersons)) { + transitionResult = this.requestStateMachineService.send(RequestEvent.DECL_WITH_REMARK); + } else { + transitionResult = this.requestStateMachineService.send(RequestEvent.DECL_WITHOUT_REMARK); + } + + if (transitionResult.getValid()) { + return new ImmutablePair(transitionResult.getId(), transitionResult.getArrivalState()); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid, getStateMachineTransitionInfo()"); + } + } + + private boolean isThereAtLeastOneClaim(List requestPersons) { + return requestPersons.stream().anyMatch(RequestPersonModel::getClaim); + } + + /** + * Calculate the total amount based on the number of declared dependents and entitlements amount + * 1. if there are two amounts for staff member and also for dependent specified, the total amount is calculated: staffMember amount + (noOfDependents * dependent amount) + * 2. if there is only one amount specified (staff member amount), the total amount is calculated: (1 + noOfDependents ) * staffMember amount + * + * @param noOfDependents s + * @param tudEntitlement s + * @param request s + * @return total amount + */ + private Money calculateTotalAmount(int noOfDependents, EntitlementTypeModel tudEntitlement, TudRequestModel request) { + List tudMaxList = tudEntitlement.getEntitlementMaxList(); + Money totalAmount = Money.of(0, "EUR"); + + Optional maxStaffMember = tudMaxList.stream().filter(max -> max.getEntitlementMaxCat().getCode() == TUD_STAFF_MEMBER).findFirst(); + Optional maxDependent = tudMaxList.stream().filter(max -> max.getEntitlementMaxCat().getCode() == TUD_DEPENDENT).findFirst(); + + if (maxStaffMember.isPresent() && maxDependent.isPresent()) { + if (request.getIncludesStaffMember()) { + totalAmount = totalAmount.add(maxStaffMember.get().getMaxValue()); + } + totalAmount = totalAmount.add(maxDependent.get().getMaxValue().multiply(noOfDependents)); + + } else if (maxStaffMember.isPresent()) { + if (request.getIncludesStaffMember()) { + totalAmount = totalAmount.add(maxStaffMember.get().getMaxValue().multiply(noOfDependents + 1L)); + } else { + totalAmount = totalAmount.add(maxStaffMember.get().getMaxValue().multiply(noOfDependents)); + } + } + + return totalAmount; + } + + private ImmutablePair getRequestStringId(EntitlementTypeCatModel entTypeCat, MovementFileModel movementFile) { + RequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(RequestJpaEntity.class, RequestJpaRepository.class); + Long nextSequence = repo.getSequenceForRequestWithEntitlementID(movementFile.getYear(), getBeanMapper().map(entTypeCat, EntitlementTypeCatJpaEntity.class)); + String requestId = Arrays.asList(movementFile.getYear().toString(), entTypeCat.getCode().name(), String.format("%03d", nextSequence)).stream() + .collect(Collectors.joining("-")); + + return new ImmutablePair(nextSequence, requestId); + } + + private Long getRequestDeclarationNo(Long declarationId) { + TudRequestJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(TudRequestJpaEntity.class, TudRequestJpaRepository.class); + return repo.getRequestDeclarationNo(declarationId); + } + + private List buildRequestPersonList(List declarationPersons) { + return declarationPersons.stream() + .filter(DeclarationPersonModel::getDeclared) + .filter(pers -> isEligibleToBeAddedInRequest(pers)) + .map(declPers -> { + + RequestPersonModel requestPersonModel = new RequestPersonModel(); + requestPersonModel.setPerson(declPers.getPerson()); + requestPersonModel.setRelative(declPers.getRelative()); + requestPersonModel.setRelation(declPers.getRelation()); + requestPersonModel.setDeclared(declPers.getDeclared()); + requestPersonModel.setRemarks(declPers.getRemarks()); + requestPersonModel.setTudEligible(declPers.getTudEligible()); + requestPersonModel.setTudEligibleReason(declPers.getTudEligibleReason()); + requestPersonModel.setClaim(declPers.getClaim()); + + if (CollectionUtils.isNotEmpty(declPers.getAttachments())) { + requestPersonModel.setAttachments(declPers.getAttachments().stream().map(att -> { + RequestPersonAttachmentModel attachmentModel = new RequestPersonAttachmentModel(); + attachmentModel.setRequestPerson(requestPersonModel); + attachmentModel.setFileUid(att.getFileUid()); + attachmentModel.setFileName(att.getFileName()); + return attachmentModel; + }).collect(Collectors.toList())); + } + + return requestPersonModel; + }).collect(Collectors.toList()); + } + + private boolean isEligibleToBeAddedInRequest(DeclarationPersonModel person) { + return person.getTudEligible() || person.getClaim(); + } + + protected List getPersonsToBeDeclared(DeclarationModel updatedDeclaration) { + List previouslyDeclaredPersons = getPreviouslyDeclaredPersons(updatedDeclaration); + + return updatedDeclaration.getDeclarationPersons().stream() + .filter(declPers -> !isMatchingAnyPreviouslyDeclaredPerson(previouslyDeclaredPersons, declPers)) + .filter(DeclarationPersonModel::getDeclared) + .filter(this::isEligibleToBeAddedInRequest) + .collect(Collectors.toList()); + } + + private boolean isMatchingAnyPreviouslyDeclaredPerson(List previouslyDeclaredPersons, DeclarationPersonModel declPers) { + return previouslyDeclaredPersons.stream().anyMatch(per -> per.getRelative().getId().equals(declPers.getRelative().getId())); + } + + private boolean isRequestUnchangeable(TudRequestModel request) { + return request.getState() == RequestState.PENDING3 || + request.getState() == RequestState.PENDING10 || + request.getState() == RequestState.CLO100 || + request.getState() == RequestState.CLO0 || + request.getState() == RequestState.PAID; + } + + private boolean isRequestChangeable(TudRequestModel request) { + return request.getState() == RequestState.AWAITING || request.getState() == RequestState.APPROVED || request.getState() == RequestState.REJECTED; + } + + private List getPreviouslyDeclaredPersons(DeclarationModel declaration) { + List existingRequests = getRequests(declaration); + + List unchangeableRequests = existingRequests.stream().filter(this::isRequestUnchangeable).collect(Collectors.toList()); + + List previouslyDeclaredPersons = new ArrayList(); + unchangeableRequests.forEach(req -> req.getRequestPersons().forEach(reqPers -> { + if (isSuccessfullyDeclared(reqPers)) { + previouslyDeclaredPersons.add(reqPers); + } + })); + + return previouslyDeclaredPersons; + } + + private boolean isSuccessfullyDeclared(RequestPersonModel reqPers) { + return reqPers.getTudEligible() || reqPers.getClaimApproved() == null || reqPers.getClaimApproved(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/notification/NotificationJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/notification/NotificationJpaServiceProvider.java new file mode 100644 index 0000000..d15cf1a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/notification/NotificationJpaServiceProvider.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.data.provider.notification; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.data.jpa.entity.notification.NotificationJpaEntity; +import eu.europa.eeas.erights.common.service.model.notification.NotificationModel; +import javax.transaction.Transactional; +import org.springframework.stereotype.Service; + +@Service +@Transactional +public class NotificationJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, EntityCreator, + EntityUpdater { + + @Override + public Class getModelType() { + return NotificationModel.class; + } + + @Override + public Class getEntityType() { + return NotificationJpaEntity.class; + } + + /** + * TODO : add permissions checks + * @param id e + * @return e + */ + public NotificationModel get(Long id) { + return read(id); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/notification/NotificationMFJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/notification/NotificationMFJpaServiceProvider.java new file mode 100644 index 0000000..0c01187 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/notification/NotificationMFJpaServiceProvider.java @@ -0,0 +1,96 @@ +package eu.europa.eeas.erights.common.service.data.provider.notification; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.email.EmailCommunicationDataModel; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.enums.Status; +import eu.europa.eeas.erights.common.data.jpa.entity.notification.NotificationMFJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.notification.NotificationMFJpaRepository; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.notification.NotificationMFModel; +import eu.europa.eeas.erights.common.service.model.notification.NotificationTemplateModel; +import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.List; +import javax.transaction.Transactional; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +@Service +@Transactional +public class NotificationMFJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, + EntityCreator, + EntityUpdater, + EntityDeleter { + + public static final Logger logger = LoggerFactory.getLogger(NotificationMFJpaServiceProvider.class); + + @Override + public Class getModelType() { + return NotificationMFModel.class; + } + + @Override + public Class getEntityType() { + return NotificationMFJpaEntity.class; + } + + /** + * TODO : add permissions checks + * @param id s + * @return s + */ + public NotificationMFModel get(Long id) { + return read(id); + } + + public NotificationMFModel createNotificationFromEmailCommunicationDataModel(EmailCommunicationDataModel emailCommunicationData, NotificationTemplateModel notificationTemplate, + MovementFileModel movementFile) { + + NotificationMFModel notificationMFModel = new NotificationMFModel(); + + // Store the communicationId provided by eDMS, for later use when querying the status of this request + notificationMFModel.setCommunicationId(emailCommunicationData.getServerCommunicationId()); + + notificationMFModel.setSendingDate(LocalDateTime.now()); + notificationMFModel.setCreatedDate(LocalDateTime.now()); + notificationMFModel.setStatus(emailCommunicationData.getStatus()); + notificationMFModel.setEmailMessage(emailCommunicationData.getMessage().getId()); + notificationMFModel.setNotificationTemplate(notificationTemplate); + notificationMFModel.setNotificationTemplateCode(notificationTemplate.getNotificationTemplateCode()); + notificationMFModel.setMovementFile(movementFile); + + return this.create(notificationMFModel); + } + + public List getMFNotificationsInOngoingState() { + NotificationMFJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + NotificationMFJpaEntity.class, NotificationMFJpaRepository.class); + List ongoingNotifications = repo.findAllByCommunicationIdNotNullAndStatusNotIn( + Arrays.asList(Status.SENT_OK, Status.ERROR, Status.FAILED)); + return getBeanMapper().mapAsList(ongoingNotifications, NotificationMFModel.class); + } + + public List getNotifications(Long movementFileId) { + List notifications = getEntityRepositoryRegistry() + .getReaderRepositoryFor(NotificationMFJpaEntity.class, NotificationMFJpaRepository.class) + .findAllByMovementFile_Id(movementFileId); + + return getBeanMapper().mapAsList(notifications, NotificationMFModel.class); + } + + public void deleteAllNotifications( Long movementFileId) { + NotificationMFJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + NotificationMFJpaEntity.class, NotificationMFJpaRepository.class); + List notificationMFJpaEntities = repo.findAllByMovementFile_Id(movementFileId); + logger.info( + "Number of notification mf entities being deleted : {}", + notificationMFJpaEntities.size()); + notificationMFJpaEntities.stream().forEach(n-> this.delete(n.getId())); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/notification/NotificationPostingAllowanceJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/notification/NotificationPostingAllowanceJpaServiceProvider.java new file mode 100644 index 0000000..ce6e003 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/notification/NotificationPostingAllowanceJpaServiceProvider.java @@ -0,0 +1,54 @@ +package eu.europa.eeas.erights.common.service.data.provider.notification; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.email.EmailCommunicationDataModel; +import eu.europa.eeas.erights.common.data.jpa.entity.notification.NotificationPostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceModel; +import eu.europa.eeas.erights.common.service.model.notification.NotificationMFModel; +import eu.europa.eeas.erights.common.service.model.notification.NotificationPostingAllowanceModel; +import eu.europa.eeas.erights.common.service.model.notification.NotificationTemplateModel; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.time.LocalDateTime; + +@Service +@Transactional +public class NotificationPostingAllowanceJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, + EntityCreator, + EntityUpdater { + + @Override + public Class getModelType() { + return NotificationPostingAllowanceModel.class; + } + + @Override + public Class getEntityType() { + return NotificationPostingAllowanceJpaEntity.class; + } + + public NotificationPostingAllowanceModel createNotificationFromEmailCommunicationDataModel(EmailCommunicationDataModel emailCommunicationData, NotificationTemplateModel notificationTemplate, + PostingAllowanceModel postingAllowanceModel) { + + NotificationPostingAllowanceModel notificationPostingAllowanceModel = new NotificationPostingAllowanceModel(); + + // Store the communicationId provided by eDMS, for later use when querying the status of this request + notificationPostingAllowanceModel.setCommunicationId(emailCommunicationData.getServerCommunicationId()); + + notificationPostingAllowanceModel.setSendingDate(LocalDateTime.now()); + notificationPostingAllowanceModel.setCreatedDate(LocalDateTime.now()); + notificationPostingAllowanceModel.setStatus(emailCommunicationData.getStatus()); + notificationPostingAllowanceModel.setEmailMessage(emailCommunicationData.getMessage().getId()); + notificationPostingAllowanceModel.setNotificationTemplate(notificationTemplate); + notificationPostingAllowanceModel.setNotificationTemplateCode(notificationTemplate.getNotificationTemplateCode()); + notificationPostingAllowanceModel.setPostingAllowanceModel(postingAllowanceModel); + + return this.create(notificationPostingAllowanceModel); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/notification/NotificationRequestJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/notification/NotificationRequestJpaServiceProvider.java new file mode 100644 index 0000000..5b8e761 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/notification/NotificationRequestJpaServiceProvider.java @@ -0,0 +1,72 @@ +package eu.europa.eeas.erights.common.service.data.provider.notification; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.email.EmailCommunicationDataModel; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.enums.Status; +import eu.europa.eeas.erights.common.data.jpa.entity.notification.NotificationRequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.notification.NotificationRequestJpaRepository; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.service.model.notification.NotificationRequestModel; +import eu.europa.eeas.erights.common.service.model.notification.NotificationTemplateModel; +import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.List; +import javax.transaction.Transactional; +import org.springframework.stereotype.Service; + +@Service +@Transactional +public class NotificationRequestJpaServiceProvider extends AbstractDataServiceProvider implements + EntityReader, + EntityCreator, + EntityUpdater, + EntityDeleter { + + @Override + public Class getModelType() { + return NotificationRequestModel.class; + } + + @Override + public Class getEntityType() { + return NotificationRequestJpaEntity.class; + } + + /** + * TODO : add permissions checks + * @param id s + * @return s + */ + public NotificationRequestModel get(Long id) { + return read(id); + } + + public NotificationRequestModel createNotificationFromEmailCommunicationDataModel(EmailCommunicationDataModel emailCommunicationData, NotificationTemplateModel notificationTemplate, + RequestModel request) { + + NotificationRequestModel notificationRequestModel = new NotificationRequestModel(); + + notificationRequestModel.setCommunicationId(emailCommunicationData.getServerCommunicationId()); + notificationRequestModel.setSendingDate(LocalDateTime.now()); + notificationRequestModel.setCreatedDate(LocalDateTime.now()); + notificationRequestModel.setStatus(emailCommunicationData.getStatus()); + notificationRequestModel.setEmailMessage(emailCommunicationData.getMessage().getId()); + notificationRequestModel.setNotificationTemplate(notificationTemplate); + notificationRequestModel.setNotificationTemplateCode(notificationTemplate.getNotificationTemplateCode()); + notificationRequestModel.setRequest(request); + + return this.create(notificationRequestModel); + } + + public List getRequestNotificationsInOngoingState() { + List notifications = getEntityRepositoryRegistry() + .getReaderRepositoryFor(NotificationRequestJpaEntity.class, NotificationRequestJpaRepository.class) + .findAllByCommunicationIdNotNullAndStatusNotIn(Arrays.asList(Status.SENT_OK, Status.ERROR , Status.FAILED)); + + return getBeanMapper().mapAsList(notifications, NotificationRequestModel.class); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/notification/NotificationTemplateJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/notification/NotificationTemplateJpaServiceProvider.java new file mode 100644 index 0000000..61e4f19 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/provider/notification/NotificationTemplateJpaServiceProvider.java @@ -0,0 +1,66 @@ +package eu.europa.eeas.erights.common.service.data.provider.notification; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.data.jpa.entity.notification.NotificationTemplateJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.notification.NotificationTemplateJpaRepository; +import eu.europa.eeas.erights.common.service.model.notification.NotificationTemplateModel; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; + +@Service +@Transactional +public class NotificationTemplateJpaServiceProvider extends AbstractDataServiceProvider + implements EntityReader, + EntityCreator, + EntityUpdater { + + @Override + public Class getModelType() { + return NotificationTemplateModel.class; + } + + @Override + public Class getEntityType() { + return NotificationTemplateJpaEntity.class; + } + + /** + * TODO : add permissions checks + * @param id s + * @return s + */ + public NotificationTemplateModel get(Long id) { + return read(id); + } + + public NotificationTemplateModel getDefaultNotificationTemplateForCode(NotificationTemplateCode notificationTemplateCode) { + NotificationTemplateJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(NotificationTemplateJpaEntity.class, NotificationTemplateJpaRepository.class); + + NotificationTemplateJpaEntity notificationTemplate = repo.findByNotificationTemplateCodeAndDefaultTemplate(notificationTemplateCode, true); + + return getBeanMapper().map(notificationTemplate, NotificationTemplateModel.class); + } + + public NotificationTemplateModel getDefaultNotificationTemplateForTypeAndCode(String templateType, NotificationTemplateCode notificationTemplateCode) { + + NotificationTemplateJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(NotificationTemplateJpaEntity.class, NotificationTemplateJpaRepository.class); + + NotificationTemplateJpaEntity notficationTemplateJpa = repo.findByNotificationTemplateTypeAndNotificationTemplateCodeAndDefaultTemplateTrue(templateType, + notificationTemplateCode); + + // TODO FIX + if (notficationTemplateJpa != null) { + return this.get(notficationTemplateJpa.getId()); + + } else { + return null; + } + + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/validation/MovementFileValidator.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/validation/MovementFileValidator.java new file mode 100644 index 0000000..bbb118d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/validation/MovementFileValidator.java @@ -0,0 +1,695 @@ +package eu.europa.eeas.erights.common.service.data.validation; + +import eu.europa.eeas.ananke.core.base.exception.ValidationRuntimeException; +import eu.europa.eeas.ananke.core.data.support.EntityRepositoryRegistry; +import eu.europa.eeas.ananke.core.locale.Localization; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.tools.enhancedlanguagebundle.support.EnhancedLanguageBundleHelper; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.MovementFileJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.*; +import eu.europa.eeas.erights.common.service.model.MovementContextType; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.*; +import eu.europa.eeas.erights.common.service.provider.tud.TUDRatesWSServiceProvider; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeStatus; +import eu.europa.eeas.erights.common.tools.p2p.OrderStatusEnum; +import eu.europa.eeas.erights.common.tools.statemachine.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; + +import java.text.MessageFormat; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; + +public class MovementFileValidator { + + @Autowired + private EntityRepositoryRegistry entityRepositoryRegistry; + + @Autowired + private Localization localization; + + @Autowired + private TUDRatesWSServiceProvider tudRatesWSServiceProvider; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + public void validateSaveMovementFile(MovementFileModel model,MovementFileModel modelFromDB) { + + List violations = new LinkedList<>(); + violations.addAll(validatePerId(model)); + violations.addAll(validateYear(model)); + violations.addAll(validateStaffMemberChanged(model,modelFromDB)); + violations.addAll(validateContextTypeChange(model,modelFromDB)); + violations.addAll(validateHodChanged(model,modelFromDB)); + violations.addAll(validateFamilyPostingChange(model,modelFromDB)); + violations.addAll(validateCitiesExists(model)); + violations.addAll(validateCityChange(model,modelFromDB)); + violations.addAll(validateNonFamilyIata(model)); + violations.addAll(validateMappableAirports(model)); + + + Collection contextViolations = validateMovementContext(model); + if (!contextViolations.isEmpty()) { + violations.addAll(contextViolations); + } else { + List activeStates = Arrays.asList(MovementFileState.PENDING, + MovementFileState.ONGOING, + MovementFileState.CONFIRMED, + MovementFileState.WITHDRAWN); + if (model.getJobTo() == null) { + violations.addAll(validateIfExistsNoJob(model, activeStates)); + } else if (model.getMovementContext().getName().equals(MovementContextType.EOC.name())) { + violations.addAll(validateIfExistsEOC(model, activeStates)); + } else { + Collection jobViolations = validateJobNo(model); + if (!jobViolations.isEmpty()) { + violations.addAll(jobViolations); + } else { + violations.addAll(validateIfExists(model, activeStates)); + } + } + } + + if (!CollectionUtils.isEmpty(violations)) { + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + + + + } + + + public void validateSaveDraftMovementFile(MovementFileModel model,MovementFileModel modelFromDB) { + + List violations = new LinkedList<>(); + + violations.addAll(validateYearChange(model,modelFromDB)); + + if (!CollectionUtils.isEmpty(violations)) { + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + } + + + /** + * Validate availability of airports for TUD, Skyscanner + * @param model + */ + public void validateTUDCityCodes(MovementFileModel model) { + + List violations = new LinkedList<>(); + + violations.addAll(validateMappableAirports(model)); + violations.addAll(validateNonFamilyIata(model)); + + if (!CollectionUtils.isEmpty(violations)) { + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + } + + public void validateMovementDateInOneYearFuture(MovementFileModel model) { + + List violations = new LinkedList<>(); + LocalDate date = tudRatesWSServiceProvider.getFlightDate(model); + if (date.isBefore(LocalDate.now().plusDays(1)) || date.isAfter(LocalDate.now().plusDays(355))) { + violations.add(new Violation(ERightsExceptionCode.ER023, ERightsExceptionCode.ER023.getDescription())); + } + if (!CollectionUtils.isEmpty(violations)) { + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + } + + /** + * Validation error if all of this happens: + * + * - We are dealing with TUD_DEPENDENT + * - setDefault is TRUE + * - Non-family-posting job + * - we dont have iataCode in the MF + * + * @param model + * @param mfModel + */ + public void validateUpdateDefaultAllowed(EntitlementTypeModel model, MovementFileModel mfModel) { + + if (mfModel.getIataCode() != null) { + // no problem + return; + } + if (mfModel.getFamilyPosting().booleanValue() && mfModel.getJobToFamilyPosting()) { + // both family posting, no problem + return; + } + // If this filter returns something -> Not allowed + long count = model.getEntitlementMaxList().stream() + .filter(EntitlementMaxModel::getDefaultMaxVal) + .filter(entMax -> EntitlementMaxCatCode.TUD_DEPENDENT.equals(entMax.getEntitlementMaxCat().getCode())) + .count(); + // OK if empty + if (count > 0) { + ValidationRuntimeException exception = new ValidationRuntimeException(); + exception.addItem(ERightsExceptionCode.ER024, ERightsExceptionCode.ER024.getDescription()); + throw exception; + } + } + + + + + + private Collection validateMovementContext(MovementFileModel model) { + List result = new LinkedList<>(); + if (model.getMovementContext() == null || model.getMovementContext().getName() == null) { + result.add(new Violation(ERightsExceptionCode.ER007, ERightsExceptionCode.ER007.getDescription())); + } + + return result; + } + + private Collection validatePerId(MovementFileModel model) { + + List result = new LinkedList<>(); + + if (model.getJobHolder() == null || model.getJobHolder().getPerId() == null) { + result.add(new Violation(ERightsExceptionCode.ER003, ERightsExceptionCode.ER003.getDescription())); + } + + return result; + + } + + private Collection validateYear(MovementFileModel model) { + + List result = new LinkedList<>(); + + if (model.getYear() == null) { + result.add(new Violation(ERightsExceptionCode.ER004, ERightsExceptionCode.ER004.getDescription())); + } + + return result; + + } + + private Collection validateJobNo(MovementFileModel model) { + List result = new LinkedList<>(); + + if (model.getJobTo() == null || model.getJobTo().getId() == null) { + result.add(new Violation(ERightsExceptionCode.ER005, ERightsExceptionCode.ER005.getDescription())); + } + + return result; + } + + private Collection validateIfExists(MovementFileModel model, List activeStates) { + + List result = new LinkedList<>(); + + MovementFileJpaRepository repository = this.entityRepositoryRegistry.getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class); + List files = repository.findExistingMovementFile(model.getJobHolder().getPerId(), model.getJobTo().getId(), activeStates); + + if (!files.isEmpty()) { + String errorMessage = EnhancedLanguageBundleHelper.getValueFor(this.localization, "e_rights.movement_files.create.main.err_already_exists"); + + String args = String.format("PerId: %s Job No: %s Context: %s", model.getJobHolder().getPerId(), model.getJobTo().getId(), model.getMovementContext().getName()); + result.add(new Violation(ERightsExceptionCode.ER006, MessageFormat.format(errorMessage, args, files.get(0).getFileId()))); + } + + return result; + + } + + private Collection validateIfExistsEOC(MovementFileModel model, List activeStates) { + + List result = new LinkedList<>(); + + MovementFileJpaRepository repository = this.entityRepositoryRegistry.getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class); + List files = repository.findExistingMovementFileEOC(model.getJobHolder().getPerId(), activeStates); + + if (!files.isEmpty()) { + String errorMessage = EnhancedLanguageBundleHelper.getValueFor(this.localization, "e_rights.movement_files.create.main.err_already_exists"); + String args = String.format("PerId: %s Context: %s", model.getJobHolder().getPerId(), model.getMovementContext().getName()); + result.add(new Violation(ERightsExceptionCode.ER006, MessageFormat.format(errorMessage, args, files.get(0).getFileId()))); + } + + return result; + } + + private Collection validateIfExistsNoJob(MovementFileModel model, List activeStates) { + + List result = new LinkedList<>(); + + MovementFileJpaRepository repository = this.entityRepositoryRegistry.getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class); + List files = repository.findExistingMovementFileNoJob(model.getJobHolder().getPerId(), activeStates); + + if (!files.isEmpty()) { + String errorMessage = EnhancedLanguageBundleHelper.getValueFor(this.localization, "e_rights.movement_files.create.main.err_already_exists"); + String args = String.format("PerId: %s Context: %s", model.getJobHolder().getPerId(), model.getMovementContext().getName()); + result.add(new Violation(ERightsExceptionCode.ER006, MessageFormat.format(errorMessage, args, files.get(0).getFileId()))); + } + + return result; + } + + + + private Collection validateStaffMemberChanged(MovementFileModel model,MovementFileModel modelFromDB) { + + List result = new LinkedList<>(); + //in case staff member is change they need to save as draft first to recreate declaration and entitlements + if(!model.getJobHolder().getPerId().equals(modelFromDB.getJobHolder().getPerId())){ + result.add(new Violation(ERightsExceptionCode.ER016, ERightsExceptionCode.ER016.getDescription() + "- Staff member changed")); + } + + + return result; + + } + + private Collection validateContextTypeChange(MovementFileModel model,MovementFileModel modelFromDB) { + + List result = new LinkedList<>(); + //in case staff member is change they need to save as draft first to recreate declaration and entitlements + if(!model.getMovementContext().getId().equals(modelFromDB.getMovementContext().getId()) || !model.getMovementType().getId().equals(modelFromDB.getMovementType().getId())){ + result.add(new Violation(ERightsExceptionCode.ER016, ERightsExceptionCode.ER016.getDescription() + "- Context or Type changed")); + } + + + return result; + + } + private Collection validateHodChanged(MovementFileModel model,MovementFileModel modelFromDB) { + + List result = new LinkedList<>(); + //in case staff member is change they need to save as draft first to recreate declaration and entitlements + //TODO change once ticket RIGD-1843 is done + if( + (model.getHodPosting() != null && !model.getHodPosting().equals(modelFromDB.getHodPosting())) || + (model.getHodJobTo() != null && !model.getHodJobTo().equals(modelFromDB.getHodJobTo())) || + (model.getHodJobFrom() != null && !model.getHodJobFrom().equals(modelFromDB.getHodJobFrom())) + ){ + result.add(new Violation(ERightsExceptionCode.ER016, ERightsExceptionCode.ER016.getDescription() + "- HOD changed")); + } + + + return result; + + } + private Collection validateFamilyPostingChange(MovementFileModel model,MovementFileModel modelFromDB) { + + List result = new LinkedList<>(); + //in case staff member is change they need to save as draft first to recreate declaration and entitlements + if(!model.getFamilyPosting().equals(modelFromDB.getFamilyPosting()) || !model.getJobToFamilyPosting().equals(modelFromDB.getJobToFamilyPosting()) ){ + result.add(new Violation(ERightsExceptionCode.ER016, ERightsExceptionCode.ER016.getDescription() + "- Family posting changed")); + } + + + return result; + + } + + private Collection validateYearChange(MovementFileModel model,MovementFileModel modelFromDB) { + + List result = new LinkedList<>(); + //in case staff member is change they need to save as draft first to recreate declaration and entitlements + if(!model.getYear().equals(modelFromDB.getYear()) ){ + result.add(new Violation(ERightsExceptionCode.ER018, ERightsExceptionCode.ER018.getDescription() + "- Year changed")); + } + + + return result; + + } + + private Collection validateCityChange(MovementFileModel model,MovementFileModel modelFromDB) { + + List result = new LinkedList<>(); + //in case staff member is change they need to save as draft first to recreate declaration and entitlements + if((modelFromDB.getCityFrom() != null && model.getCityFrom() != null && !model.getCityFrom().getCode().equals(modelFromDB.getCityFrom().getCode())) || + (modelFromDB.getCityTo() != null && model.getCityTo() != null && !model.getCityTo().getCode().equals(modelFromDB.getCityTo().getCode())) + ){ + result.add(new Violation(ERightsExceptionCode.ER016, ERightsExceptionCode.ER016.getDescription() + "- City changed")); + } + + + return result; + + } + + private Collection validateCitiesExists(MovementFileModel model) { + + List result = new LinkedList<>(); + + + if (model.getCityFrom() == null || model.getCityTo() == null ) { + result.add(new Violation(ERightsExceptionCode.ER019, ERightsExceptionCode.ER019.getDescription())); + } + + return result; + + + + } + + private Collection validateNonFamilyIata(MovementFileModel model) { + + List result = new LinkedList<>(); + // One of the two, but not both + if ( ( (model.getFamilyPosting().booleanValue() && !model.getJobToFamilyPosting().booleanValue()) + || (!model.getFamilyPosting().booleanValue() && model.getJobToFamilyPosting().booleanValue())) + // And iata of MF is null + && (model.getIataCode() == null)) { + // Not allowed + result.add(new Violation(ERightsExceptionCode.ER020, ERightsExceptionCode.ER020.getDescription() )); + } + return result; + } + + private Collection validateMappableAirports(MovementFileModel model) { + + List result = new LinkedList<>(); + List badCodes = new ArrayList<>(); + if (tudRatesWSServiceProvider.iataCodeFromCityCode(model.getCityFrom().getCode()) == null) { + badCodes.add(model.getCityFrom().getCode()); + } + if (tudRatesWSServiceProvider.iataCodeFromCityCode(model.getCityTo().getCode()) == null) { + badCodes.add(model.getCityTo().getCode()); + } + if (!badCodes.isEmpty()) { + result.add(new Violation(ERightsExceptionCode.ER021, + ERightsExceptionCode.ER021.getDescription() + ": " + String.join(", ", badCodes))); + } + return result; + } + + public void validateCanDelete(List entitlementTypeModels) { + List violations = new LinkedList<>(); + entitlementTypeModels.stream() + .filter(entitlementTypeModel -> entitlementTypeModel.getStatus().equals(EntitlementTypeStatus.ACTIVE)) + .flatMap(entitlementTypeModel -> entitlementTypeModel.getRequests().stream()) + .forEach(requestModel -> { + if ("TotalRemRequest".equals(requestModel.getRequestType())) { + TotalRemRequestJpaServiceProvider service = (TotalRemRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TotalRemRequestModel.class); + + TotalRemRequestModel request = service.getRequest(requestModel.getId()); + if (!(request.getState().equals(TotalRemRequestState.DRAFT) || + request.getState().equals(TotalRemRequestState.REJECTED))) { + violations.add(new Violation(ERightsExceptionCode.ER027, String.format(ERightsExceptionCode.ER027.getDescription(), requestModel.getRequestStringId()))); + } + } else if ("AdvanceRequest".equals(requestModel.getRequestType())) { + AdvanceRequestJpaServiceProvider service = (AdvanceRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + AdvanceRequestModel.class); + AdvanceRequestModel request = service.getRequest(requestModel.getId()); + if (!(request.getState().equals(AdvanceRequestState.DRAFT) || + request.getState().equals(AdvanceRequestState.REJECTED))) { + violations.add(new Violation(ERightsExceptionCode.ER027, String.format(ERightsExceptionCode.ER027.getDescription(), requestModel.getRequestStringId()))); + } + } else if ("ClearingRequest".equals(requestModel.getRequestType())) { + ClearingRequestJpaServiceProvider service = (ClearingRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + ClearingRequestModel.class); + ClearingRequestModel request = service.getRequest(requestModel.getId()); + if (!(request.getState().equals(ClearingRequestState.DRAFT) || + request.getState().equals(ClearingRequestState.REJECTED))) { + violations.add(new Violation(ERightsExceptionCode.ER027, String.format(ERightsExceptionCode.ER027.getDescription(), requestModel.getRequestStringId()))); + } + } else if ("TudRequest".equals(requestModel.getRequestType())) { + TudRequestJpaServiceProvider service = (TudRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TudRequestModel.class); + TudRequestModel request = service.getRequest(requestModel.getId()); + if (!(request.getState().equals(RequestState.DRAFT) || + request.getState().equals(RequestState.REJECTED))) { + violations.add(new Violation(ERightsExceptionCode.ER027, String.format(ERightsExceptionCode.ER027.getDescription(), requestModel.getRequestStringId()))); + } + } + }); + if (!CollectionUtils.isEmpty(violations)) { + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + } + + public void validateCanComplete(List entitlementTypeModels) { + List violations = new LinkedList<>(); + entitlementTypeModels.stream() + .filter(entitlementTypeModel -> entitlementTypeModel.getStatus().equals(EntitlementTypeStatus.ACTIVE)) + .flatMap(entitlementTypeModel -> entitlementTypeModel.getRequests().stream()) + .forEach(requestModel -> { + if ("TotalRemRequest".equals(requestModel.getRequestType())) { + TotalRemRequestJpaServiceProvider service = (TotalRemRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TotalRemRequestModel.class); + + TotalRemRequestModel request = service.getRequest(requestModel.getId()); + if (isNotValidStateToComplete(request)) { + violations.add(new Violation(ERightsExceptionCode.ER027, String.format(ERightsExceptionCode.ER027.getDescription(), requestModel.getRequestStringId()))); + } + } else if ("AdvanceRequest".equals(requestModel.getRequestType())) { + AdvanceRequestJpaServiceProvider service = (AdvanceRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + AdvanceRequestModel.class); + AdvanceRequestModel request = service.getRequest(requestModel.getId()); + if (isNotValidStateToComplete(request)) { + violations.add(new Violation(ERightsExceptionCode.ER027, String.format(ERightsExceptionCode.ER027.getDescription(), requestModel.getRequestStringId()))); + } + } else if ("ClearingRequest".equals(requestModel.getRequestType())) { + ClearingRequestJpaServiceProvider service = (ClearingRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + ClearingRequestModel.class); + ClearingRequestModel request = service.getRequest(requestModel.getId()); + if (isNotValidStateToComplete(request)) { + violations.add(new Violation(ERightsExceptionCode.ER027, String.format(ERightsExceptionCode.ER027.getDescription(), requestModel.getRequestStringId()))); + } + } else if ("TudRequest".equals(requestModel.getRequestType())) { + TudRequestJpaServiceProvider service = (TudRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TudRequestModel.class); + TudRequestModel request = service.getRequest(requestModel.getId()); + if (isNotValidStateToComplete(request)) { + violations.add(new Violation(ERightsExceptionCode.ER027, String.format(ERightsExceptionCode.ER027.getDescription(), requestModel.getRequestStringId()))); + } + } else if ("InstallationRequest".equals(requestModel.getRequestType())) { + InstallationRequestJpaServiceProvider service = (InstallationRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + InstallationRequestModel.class); + InstallationRequestModel request = service.getRequest(requestModel.getId()); + if (isNotValidStateToComplete(request)) { + violations.add(new Violation(ERightsExceptionCode.ER027, String.format(ERightsExceptionCode.ER027.getDescription(), requestModel.getRequestStringId()))); + } + } + }); + if (!CollectionUtils.isEmpty(violations)) { + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + } + + public void validateCanCancel(List entitlementTypeModels) { + List violations = new LinkedList<>(); + entitlementTypeModels.stream() + .filter(entitlementTypeModel -> entitlementTypeModel.getStatus().equals(EntitlementTypeStatus.ACTIVE)) + .flatMap(entitlementTypeModel -> entitlementTypeModel.getRequests().stream()) + .forEach(requestModel -> { + if ("TotalRemRequest".equals(requestModel.getRequestType())) { + TotalRemRequestJpaServiceProvider service = (TotalRemRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TotalRemRequestModel.class); + + TotalRemRequestModel request = service.getRequest(requestModel.getId()); + if (isNotValidStateToCancel(request)) { + violations.add(new Violation(ERightsExceptionCode.ER027, String.format(ERightsExceptionCode.ER027.getDescription(), requestModel.getRequestStringId()))); + } + } else if ("AdvanceRequest".equals(requestModel.getRequestType())) { + AdvanceRequestJpaServiceProvider service = (AdvanceRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + AdvanceRequestModel.class); + AdvanceRequestModel request = service.getRequest(requestModel.getId()); + if (isNotValidStateToCancel(request)) { + violations.add(new Violation(ERightsExceptionCode.ER027, String.format(ERightsExceptionCode.ER027.getDescription(), requestModel.getRequestStringId()))); + } + } else if ("ClearingRequest".equals(requestModel.getRequestType())) { + ClearingRequestJpaServiceProvider service = (ClearingRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + ClearingRequestModel.class); + ClearingRequestModel request = service.getRequest(requestModel.getId()); + if (isNotValidStateToCancel(request)) { + violations.add(new Violation(ERightsExceptionCode.ER027, String.format(ERightsExceptionCode.ER027.getDescription(), requestModel.getRequestStringId()))); + } + } else if ("TudRequest".equals(requestModel.getRequestType())) { + TudRequestJpaServiceProvider service = (TudRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + TudRequestModel.class); + TudRequestModel request = service.getRequest(requestModel.getId()); + if (isNotValidStateToCancel(request)) { + violations.add(new Violation(ERightsExceptionCode.ER027, String.format(ERightsExceptionCode.ER027.getDescription(), requestModel.getRequestStringId()))); + } + } else if ("InstallationRequest".equals(requestModel.getRequestType())) { + InstallationRequestJpaServiceProvider service = (InstallationRequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + InstallationRequestModel.class); + InstallationRequestModel request = service.getRequest(requestModel.getId()); + if (isNotValidStateToCancel(request)) { + violations.add(new Violation(ERightsExceptionCode.ER027, String.format(ERightsExceptionCode.ER027.getDescription(), requestModel.getRequestStringId()))); + } + } + }); + if (!CollectionUtils.isEmpty(violations)) { + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + } + + private boolean isNotValidStateToCancel(InstallationRequestModel request) { + return !(request.getState().equals(InstallationState.PAID) || request.getState().equals(InstallationState.REJECTED)); + } + + private boolean isNotValidStateToCancel(TotalRemRequestModel request) { + return !( + ( + request.getState() == TotalRemRequestState.PAID && + ( + "CLO100".equals(request.getAbacWorkflowState()) + || request.getP2pHubOrderStatus() == OrderStatusEnum.SUCCESS + || ( + AbacRequestState.MANUAL_PAYMENT_SUMMA.equals(request.getAbacRequestState()) + && request.getPaymentDirectiveReference() != null + ) + ) + ) + || request.getState() == TotalRemRequestState.REJECTED + ); + } + + private boolean isNotValidStateToCancel(AdvanceRequestModel request) { + return !( + ( + request.getState() == AdvanceRequestState.PAID && + ( + "CLO100".equals(request.getAbacWorkflowState()) + || request.getP2pHubOrderStatus() == OrderStatusEnum.SUCCESS + || ( + AbacRequestState.MANUAL_PAYMENT_SUMMA.equals(request.getAbacRequestState()) + && request.getPaymentDirectiveReference() != null + ) + ) + ) + || request.getState() == AdvanceRequestState.REJECTED + ); + } + + private boolean isNotValidStateToCancel(ClearingRequestModel request) { + return !( + ( + request.getState() == ClearingRequestState.PAID && + ( + "CLO100".equals(request.getAbacWorkflowState()) + || request.getP2pHubOrderStatus() == OrderStatusEnum.SUCCESS + || ( + AbacRequestState.MANUAL_PAYMENT_SUMMA.equals(request.getAbacRequestState()) + && request.getPaymentDirectiveReference() != null + ) + ) + ) + || request.getState() == ClearingRequestState.REJECTED + ); + } + + private boolean isNotValidStateToCancel(TudRequestModel request) { + return !( + ( + request.getState() == RequestState.PAID && + ( + "CLO100".equals(request.getAbacWorkflowState()) + || request.getP2pHubOrderStatus() == OrderStatusEnum.SUCCESS + || ( + AbacRequestState.MANUAL_PAYMENT_SUMMA.equals(request.getAbacRequestState()) + && request.getPaymentDirectiveReference() != null + ) + ) + ) + || request.getState() == RequestState.REJECTED + ); + } + private boolean isNotValidStateToComplete(TotalRemRequestModel request) { + return !( + ( + request.getState() == TotalRemRequestState.PAID && + ( + "CLO100".equals(request.getAbacWorkflowState()) + || request.getP2pHubOrderStatus() == OrderStatusEnum.SUCCESS + || ( + AbacRequestState.MANUAL_PAYMENT_SUMMA.equals(request.getAbacRequestState()) + && request.getPaymentDirectiveReference() != null + ) + ) + ) + || request.getState() == TotalRemRequestState.REJECTED + ); + } + + private boolean isNotValidStateToComplete(AdvanceRequestModel request) { + return !( + ( + request.getState() == AdvanceRequestState.PAID && + ( + "CLO100".equals(request.getAbacWorkflowState()) + || request.getP2pHubOrderStatus() == OrderStatusEnum.SUCCESS + || ( + AbacRequestState.MANUAL_PAYMENT_SUMMA.equals(request.getAbacRequestState()) + && request.getPaymentDirectiveReference() != null + ) + ) + ) + || request.getState() == AdvanceRequestState.REJECTED + ); + } + + private boolean isNotValidStateToComplete(ClearingRequestModel request) { + return !( + ( + request.getState() == ClearingRequestState.PAID && + ( + "CLO100".equals(request.getAbacWorkflowState()) + || request.getP2pHubOrderStatus() == OrderStatusEnum.SUCCESS + || ( + AbacRequestState.MANUAL_PAYMENT_SUMMA.equals(request.getAbacRequestState()) + && request.getPaymentDirectiveReference() != null + ) + ) + ) + || request.getState() == ClearingRequestState.REJECTED + ); + } + + private boolean isNotValidStateToComplete(TudRequestModel request) { + return !( + ( + request.getState() == RequestState.PAID && + ( + "CLO100".equals(request.getAbacWorkflowState()) + || request.getP2pHubOrderStatus() == OrderStatusEnum.SUCCESS + || ( + AbacRequestState.MANUAL_PAYMENT_SUMMA.equals(request.getAbacRequestState()) + && request.getPaymentDirectiveReference() != null + ) + ) + ) + || request.getState() == RequestState.REJECTED + ); + } + + private boolean isNotValidStateToComplete(InstallationRequestModel request) { + return !(request.getState().equals(InstallationState.PAID) || request.getState().equals(InstallationState.REJECTED)); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/validation/Violation.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/validation/Violation.java new file mode 100644 index 0000000..af33549 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/data/validation/Violation.java @@ -0,0 +1,24 @@ +package eu.europa.eeas.erights.common.service.data.validation; + +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; + +public final class Violation { + + private final ERightsExceptionCode code; + + private final String message; + + public Violation(ERightsExceptionCode code, String message) { + this.code = code; + this.message = message; + } + + public ERightsExceptionCode getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AbacItemModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AbacItemModel.java new file mode 100644 index 0000000..684faec --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AbacItemModel.java @@ -0,0 +1,110 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.erights.common.tools.statemachine.AbacItemState; + +import java.time.LocalDateTime; +import java.util.UUID; + +public class AbacItemModel extends AbstractModel { + + private Long id; + + private AbacItemType itemType; + + private UUID abacCommunicationId; + + private String abacId; + + private AbacItemState itemState; + + private Long requestId; + + private String messages; + + private Long requestPaymentAbacInfoId; + + private LocalDateTime createdAt; + + private LocalDateTime updatedAt; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public UUID getAbacCommunicationId() { + return abacCommunicationId; + } + + public void setAbacCommunicationId(UUID abacCommunicationId) { + this.abacCommunicationId = abacCommunicationId; + } + + public String getAbacId() { + return abacId; + } + + public void setAbacId(String abacId) { + this.abacId = abacId; + } + + public Long getRequestId() { + return requestId; + } + + public void setRequestId(Long requestId) { + this.requestId = requestId; + } + + public String getMessages() { + return messages; + } + + public void setMessages(String messages) { + this.messages = messages; + } + + public AbacItemType getItemType() { + return itemType; + } + + public void setItemType(AbacItemType itemType) { + this.itemType = itemType; + } + + public AbacItemState getItemState() { + return itemState; + } + + public void setItemState(AbacItemState itemState) { + this.itemState = itemState; + } + + public Long getRequestPaymentAbacInfoId() { + return requestPaymentAbacInfoId; + } + + public void setRequestPaymentAbacInfoId(Long requestPaymentAbacInfoId) { + this.requestPaymentAbacInfoId = requestPaymentAbacInfoId; + } + + public LocalDateTime getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(LocalDateTime createdAt) { + this.createdAt = createdAt; + } + + public LocalDateTime getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(LocalDateTime updatedAt) { + this.updatedAt = updatedAt; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AbacItemType.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AbacItemType.java new file mode 100644 index 0000000..fc81a69 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AbacItemType.java @@ -0,0 +1,8 @@ +package eu.europa.eeas.erights.common.service.model; + +public enum AbacItemType { + INVOICE, + INVOICE_SECOND_VISA, + PAYMENT_REQUEST, + PAYMENT_ORDER +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AbstractAttachmentModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AbstractAttachmentModel.java new file mode 100644 index 0000000..a47dbac --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AbstractAttachmentModel.java @@ -0,0 +1,69 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; + +import java.util.UUID; + +/** + * Abstract Attachment Model. + * + * @author tapiafo + */ +public abstract class AbstractAttachmentModel extends AbstractAuditableModel { + + private static final long serialVersionUID = 1L; + + private Long id; + + private UUID fileUid; + + private String fileName; + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((fileUid == null) ? 0 : fileUid.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + AbstractAttachmentModel other = (AbstractAttachmentModel) obj; + if (fileUid == null) { + return other.fileUid == null; + } else return fileUid.equals(other.fileUid); + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public UUID getFileUid() { + return this.fileUid; + } + + public void setFileUid(UUID fileUid) { + this.fileUid = fileUid; + } + + public String getFileName() { + return this.fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AbstractSupportingDocModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AbstractSupportingDocModel.java new file mode 100644 index 0000000..3ca936f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AbstractSupportingDocModel.java @@ -0,0 +1,27 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.SupportingDocType; +import eu.europa.eeas.erights.common.service.model.comments.CommentForSupportingDocModel; +import lombok.Getter; +import lombok.Setter; + +/** + * @author ienaccat + */ +@Getter +@Setter +public class AbstractSupportingDocModel extends AbstractAuditableModel { + + private Long id; + + private SupportingDocType docType; + + private Long docOrder; + + private Boolean docMandatory; + + private CommentForSupportingDocModel comment; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AccommodationPaymentMethod.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AccommodationPaymentMethod.java new file mode 100644 index 0000000..5d5fe71 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AccommodationPaymentMethod.java @@ -0,0 +1,6 @@ +package eu.europa.eeas.erights.common.service.model; + +public enum AccommodationPaymentMethod { + LOCAL, + CENTRAL +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AppParameterModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AppParameterModel.java new file mode 100644 index 0000000..2bec716 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AppParameterModel.java @@ -0,0 +1,47 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.erights.common.tools.app.AppParamType; + +public class AppParameterModel extends AbstractModel { + + private Long id; + + private AppParamType paramType; + + private String key; + + private String value; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public AppParamType getParamType() { + return paramType; + } + + public void setParamType(AppParamType paramType) { + this.paramType = paramType; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AuditMovementFileModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AuditMovementFileModel.java new file mode 100644 index 0000000..b3fd380 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/AuditMovementFileModel.java @@ -0,0 +1,362 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; + +import javax.persistence.Column; +import java.time.LocalDate; + +public class AuditMovementFileModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long id; + + private String fileId; + + private String lastName; + + private String firstName; + + private MovementFileState status; + + private LocalDate startDateFuture; + + private LocalDate endDateFuture; + + private String movementFrom; + + private String movementTo; + + private String budgetLineFuture; + + private String movementType; + + private Integer movementYear; + + private String movementContext; + + private Long perId; + + private String futureAssignment; + + private Boolean priority; + + private String allocatedToCurrent; + + private String allocatedToFuture; + + private String aipnFileId; + + private String aipnDocumentId; + + private LocalDate aipnNotifDate; + + private Boolean withoutRights; + + private String reasonEoc; + + private Long movementNr; + + private String reasonDeletion; + + private Boolean evacuated; + + private CountryModel countryTo; + + private CityModel cityTo; + + private Long notificationEntityId; + + private String personnelTypeId; + + private String personnelTypeDesc; + + private String jobFunctionCode; + + private String jobFunctionDesc; + + private String institutionCode; + + private String institutionDesc; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getFileId() { + return fileId; + } + + public void setFileId(String fileId) { + this.fileId = fileId; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public LocalDate getStartDateFuture() { + return startDateFuture; + } + + public void setStartDateFuture(LocalDate startDateFuture) { + this.startDateFuture = startDateFuture; + } + + public LocalDate getEndDateFuture() { + return endDateFuture; + } + + public void setEndDateFuture(LocalDate endDateFuture) { + this.endDateFuture = endDateFuture; + } + + public String getMovementFrom() { + return movementFrom; + } + + public void setMovementFrom(String movementFrom) { + this.movementFrom = movementFrom; + } + + public String getMovementTo() { + return movementTo; + } + + public void setMovementTo(String movementTo) { + this.movementTo = movementTo; + } + + public String getBudgetLineFuture() { + return budgetLineFuture; + } + + public void setBudgetLineFuture(String budgetLineFuture) { + this.budgetLineFuture = budgetLineFuture; + } + + public String getMovementType() { + return movementType; + } + + public void setMovementType(String movementType) { + this.movementType = movementType; + } + + public Integer getMovementYear() { + return movementYear; + } + + public void setMovementYear(Integer movementYear) { + this.movementYear = movementYear; + } + + public String getMovementContext() { + return movementContext; + } + + public void setMovementContext(String movementContext) { + this.movementContext = movementContext; + } + + public Long getPerId() { + return perId; + } + + public void setPerId(Long perId) { + this.perId = perId; + } + + public String getFutureAssignment() { + return futureAssignment; + } + + public void setFutureAssignment(String futureAssignment) { + this.futureAssignment = futureAssignment; + } + + public Boolean getPriority() { + return priority; + } + + public void setPriority(Boolean priority) { + this.priority = priority; + } + + public String getAllocatedToCurrent() { + return allocatedToCurrent; + } + + public void setAllocatedToCurrent(String allocatedToCurrent) { + this.allocatedToCurrent = allocatedToCurrent; + } + + public String getAllocatedToFuture() { + return allocatedToFuture; + } + + public void setAllocatedToFuture(String allocatedToFuture) { + this.allocatedToFuture = allocatedToFuture; + } + + public MovementFileState getStatus() { + return status; + } + + public void setStatus(MovementFileState status) { + this.status = status; + } + + public String getAipnFileId() { + return aipnFileId; + } + + public void setAipnFileId(String aipnFileId) { + this.aipnFileId = aipnFileId; + } + + public LocalDate getAipnNotifDate() { + return aipnNotifDate; + } + + public void setAipnNotifDate(LocalDate aipnNotifDate) { + this.aipnNotifDate = aipnNotifDate; + } + + public Boolean getWithoutRights() { + return withoutRights; + } + + public void setWithoutRights(Boolean withoutRights) { + this.withoutRights = withoutRights; + } + + public String getReasonEoc() { + return reasonEoc; + } + + public void setReasonEoc(String reasonEoc) { + this.reasonEoc = reasonEoc; + } + + public String getAipnDocumentId() { + return aipnDocumentId; + } + + public void setAipnDocumentId(String aipnDocumentId) { + this.aipnDocumentId = aipnDocumentId; + } + + public Long getMovementNr() { + return movementNr; + } + + public void setMovementNr(Long movementNr) { + this.movementNr = movementNr; + } + + public String getReasonDeletion() { + return reasonDeletion; + } + + public void setReasonDeletion(String reasonDeletion) { + this.reasonDeletion = reasonDeletion; + } + + public Boolean getEvacuated() { + return evacuated; + } + + public void setEvacuated(Boolean evacuated) { + this.evacuated = evacuated; + } + + public CountryModel getCountryTo() { + return countryTo; + } + + public void setCountryTo(CountryModel countryTo) { + this.countryTo = countryTo; + } + + public CityModel getCityTo() { + return cityTo; + } + + public void setCityTo(CityModel cityTo) { + this.cityTo = cityTo; + } + + public Long getNotificationEntityId() { + return notificationEntityId; + } + + public void setNotificationEntityId(Long notificationEntityId) { + this.notificationEntityId = notificationEntityId; + } + + public String getPersonnelTypeId() { + return personnelTypeId; + } + + public void setPersonnelTypeId(String personnelTypeId) { + this.personnelTypeId = personnelTypeId; + } + + public String getPersonnelTypeDesc() { + return personnelTypeDesc; + } + + public void setPersonnelTypeDesc(String personnelTypeDesc) { + this.personnelTypeDesc = personnelTypeDesc; + } + + public String getJobFunctionCode() { + return jobFunctionCode; + } + + public void setJobFunctionCode(String jobFunctionCode) { + this.jobFunctionCode = jobFunctionCode; + } + + public String getJobFunctionDesc() { + return jobFunctionDesc; + } + + public void setJobFunctionDesc(String jobFunctionDesc) { + this.jobFunctionDesc = jobFunctionDesc; + } + + public String getInstitutionCode() { + return institutionCode; + } + + public void setInstitutionCode(String institutionCode) { + this.institutionCode = institutionCode; + } + + public String getInstitutionDesc() { + return institutionDesc; + } + + public void setInstitutionDesc(String institutionDesc) { + this.institutionDesc = institutionDesc; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/BudgetLineJob.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/BudgetLineJob.java new file mode 100644 index 0000000..0e6f068 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/BudgetLineJob.java @@ -0,0 +1,7 @@ +package eu.europa.eeas.erights.common.service.model; + +public enum BudgetLineJob { + FUTURE, + CURRENT, + NONE +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/CityModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/CityModel.java new file mode 100644 index 0000000..e751eed --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/CityModel.java @@ -0,0 +1,29 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +public class CityModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private String code; + + private String name; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/CountryModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/CountryModel.java new file mode 100644 index 0000000..a28d2d0 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/CountryModel.java @@ -0,0 +1,29 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +public class CountryModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private String code; + + private String name; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ExchangeRateModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ExchangeRateModel.java new file mode 100644 index 0000000..98871d2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ExchangeRateModel.java @@ -0,0 +1,29 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import lombok.Getter; +import lombok.Setter; + + +import java.math.BigDecimal; +import java.time.LocalDate; + +@Setter +@Getter +public class ExchangeRateModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private String currency; + + private LocalDate startDate; + + private BigDecimal exchangeRate; + + private LocalDate endDate; + + private String monthYear; + + private Boolean decimals; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/HOAFunctionalMailboxModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/HOAFunctionalMailboxModel.java new file mode 100644 index 0000000..b1d787d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/HOAFunctionalMailboxModel.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import lombok.Getter; +import lombok.Setter; + +/** + * @author ienaccat + */ +@Getter +@Setter +public class HOAFunctionalMailboxModel extends AbstractModel { + + private Long orgId; + + private String email; + + + private String emailType; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/HeadOfAdministrationModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/HeadOfAdministrationModel.java new file mode 100644 index 0000000..240eed3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/HeadOfAdministrationModel.java @@ -0,0 +1,28 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import lombok.Getter; +import lombok.Setter; + +/** + * @author ienaccat + */ +@Getter +@Setter +public class HeadOfAdministrationModel extends AbstractModel { + + private Long orgId; + + private String orgCD; + + private String orgName; + + private Long jobId; + + private String firstName; + + private String surname; + + private String email; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/HrsDocumentModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/HrsDocumentModel.java new file mode 100644 index 0000000..08b623f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/HrsDocumentModel.java @@ -0,0 +1,45 @@ +package eu.europa.eeas.erights.common.service.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +import java.net.URI; + +public class HrsDocumentModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + @JsonProperty + private String saveNumber; + + @JsonProperty + private String documentId; + + @JsonProperty + private URI documentURL; + + public String getSaveNumber() { + return saveNumber; + } + + public void setSaveNumber(String saveNumber) { + this.saveNumber = saveNumber; + } + + public String getDocumentId() { + return documentId; + } + + public void setDocumentId(String documentId) { + this.documentId = documentId; + } + + public URI getDocumentURL() { + return documentURL; + } + + public void setDocumentURL(URI documentURL) { + this.documentURL = documentURL; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/IataAirportModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/IataAirportModel.java new file mode 100644 index 0000000..3944796 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/IataAirportModel.java @@ -0,0 +1,61 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +import javax.persistence.Column; + +public class IataAirportModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private String id; + + private String airportName; + + private String locationName; + + private String easrefn; + + private String countryCode; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getAirportName() { + return airportName; + } + + public void setAirportName(String airportName) { + this.airportName = airportName; + } + + + public String getLocationName() { + return locationName; + } + + public void setLocationName(String locationName) { + this.locationName = locationName; + } + + public String getEasrefn() { + return easrefn; + } + + public void setEasrefn(String easrefn) { + this.easrefn = easrefn; + } + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/MovementContextModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/MovementContextModel.java new file mode 100644 index 0000000..c672fd7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/MovementContextModel.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +/** + * Created by iliessu on 05/12/2019; e-rights. + * + *

    + * describes a movement context model. + *

    + * + * @author Silviu Ilie. + * @see AbstractModel + */ +public class MovementContextModel extends AbstractAuditableModel { + + private static final long serialVersionUID = 1L; + + private Long id; + + private String name; + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/MovementContextType.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/MovementContextType.java new file mode 100644 index 0000000..9baf32e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/MovementContextType.java @@ -0,0 +1,8 @@ +package eu.europa.eeas.erights.common.service.model; + +public enum MovementContextType { + ROTATION, + EOC, + SECONDMENT, + CRISIS +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/MovementFileDetailModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/MovementFileDetailModel.java new file mode 100644 index 0000000..54a9b58 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/MovementFileDetailModel.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.common.service.model; + +/** + * Claim Attachment Model. + * + * @author tapaifo + */ +public class MovementFileDetailModel extends AbstractAttachmentModel { + + private static final long serialVersionUID = 1L; + + private Long movementFileId; + + private String description; + + public Long getMovementFileId() { + return movementFileId; + } + + public void setMovementFileId(Long movementFileId) { + this.movementFileId = movementFileId; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/MovementFileModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/MovementFileModel.java new file mode 100644 index 0000000..b5d4655 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/MovementFileModel.java @@ -0,0 +1,619 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.UUID; + +/** + * Created by iliessu on 14/11/2019; e-rights. + * + *

    + * TODO : comment class ! + *

    + * + * @author Silviu Ilie. + */ +public class MovementFileModel extends AbstractAuditableModel implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + private MovementFileState state; + + private MovementContextModel movementContext; + + private MovementTypeModel movementType; + + private VPersonModel jobHolder; + + private VJobModel jobFrom; + + private VJobModel jobTo; + + private String budgetLine; + + + private String budgetLineJobTo; + + + private String budgetLineJobFrom; + + private Integer year; + + private Boolean priority; + + private String followupFlags; + + + + private Boolean jobToFamilyPosting; + + private Boolean familyPosting; + + private Boolean hodPosting; + + private BigDecimal airfreightVolumeCeiling; + + private Boolean childFreePosting; + + private LocalDate startDate; + + private LocalDate estimatedEndDate; + + private Long allocatedOrganization; + + private String fileId; + + private Long orgIdFrom; + + private Long orgIdTo; + + private LocalDate assignStartDateFrom; + + private LocalDate assignEndDateFrom; + + private LocalDate assignStartDateTo; + + private LocalDate assignEndDateTo; + + private LocalDate jobFromStartDate; + + private String orgCdFrom; + + private String orgCdTo; + + private UUID smId; + + private String aipnFileId; + + private String aipnDocumentId; + + private LocalDate aipnNotifDate; + + private Boolean withoutRights; + + private String reasonEoc; + + private Long movementNr; + + private String reasonDeletion; + + private Boolean evacuated; + + private CountryModel countryTo; + + private CityModel cityTo; + + private CountryModel countryFrom; + + private CityModel cityFrom; + + private Long delegationOrgFromId; + + private Long personnelTypeId; + + private String personnelTypeDesc; + + private String jobFunctionCode; + + private String jobFunctionDesc; + + private String institutionCode; + + private String institutionDesc; + + private String internalComment; + + private Boolean hodJobTo; + + private Boolean hodJobFrom; + + + private String iataCode; + + private String iataFrom; + + + private String iataTo; + + private String assignmentCountry; + + private String assignmentCity; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getBudgetLine() { + return budgetLine; + } + + public void setBudgetLine(String budgetLine) { + this.budgetLine = budgetLine; + } + + public Integer getYear() { + return year; + } + + public void setYear(Integer year) { + this.year = year; + } + + public Boolean getPriority() { + return priority; + } + + public void setPriority(Boolean priority) { + this.priority = priority; + } + + public Boolean getChildFreePosting() { + return childFreePosting; + } + + public void setChildFreePosting(Boolean childFreePosting) { + this.childFreePosting = childFreePosting; + } + + public LocalDate getStartDate() { + return startDate; + } + + public void setStartDate(LocalDate startDate) { + this.startDate = startDate; + } + + public LocalDate getEstimatedEndDate() { + return estimatedEndDate; + } + + public void setEstimatedEndDate(LocalDate estimatedEndDate) { + this.estimatedEndDate = estimatedEndDate; + } + + public Long getAllocatedOrganization() { + return allocatedOrganization; + } + + public void setAllocatedOrganization(Long allocatedOrganization) { + this.allocatedOrganization = allocatedOrganization; + } + + public String getFileId() { + return fileId; + } + + public void setFileId(String fileId) { + this.fileId = fileId; + } + + public MovementContextModel getMovementContext() { + return movementContext; + } + + public void setMovementContext(MovementContextModel movementContext) { + this.movementContext = movementContext; + } + + public MovementTypeModel getMovementType() { + return movementType; + } + + public void setMovementType(MovementTypeModel movementType) { + this.movementType = movementType; + } + + public VPersonModel getJobHolder() { + return jobHolder; + } + + public void setJobHolder(VPersonModel jobHolder) { + this.jobHolder = jobHolder; + } + + public VJobModel getJobTo() { + return jobTo; + } + + public void setJobTo(VJobModel jobTo) { + this.jobTo = jobTo; + } + + public VJobModel getJobFrom() { + return jobFrom; + } + + public void setJobFrom(VJobModel jobFrom) { + this.jobFrom = jobFrom; + } + + public Long getOrgIdFrom() { + return orgIdFrom; + } + + public void setOrgIdFrom(Long orgIdFrom) { + this.orgIdFrom = orgIdFrom; + } + + public Long getOrgIdTo() { + return orgIdTo; + } + + public void setOrgIdTo(Long orgIdTo) { + this.orgIdTo = orgIdTo; + } + + public LocalDate getAssignStartDateFrom() { + return assignStartDateFrom; + } + + public void setAssignStartDateFrom(LocalDate assignStartDateFrom) { + this.assignStartDateFrom = assignStartDateFrom; + } + + public LocalDate getAssignEndDateFrom() { + return assignEndDateFrom; + } + + public void setAssignEndDateFrom(LocalDate assignEndDateFrom) { + this.assignEndDateFrom = assignEndDateFrom; + } + + public LocalDate getAssignStartDateTo() { + return assignStartDateTo; + } + + public void setAssignStartDateTo(LocalDate assignStartDateTo) { + this.assignStartDateTo = assignStartDateTo; + } + + public LocalDate getAssignEndDateTo() { + return assignEndDateTo; + } + + public void setAssignEndDateTo(LocalDate assignEndDateTo) { + this.assignEndDateTo = assignEndDateTo; + } + + public LocalDate getJobFromStartDate() { + return jobFromStartDate; + } + + public void setJobFromStartDate(LocalDate jobFromStartDate) { + this.jobFromStartDate = jobFromStartDate; + } + + public String getOrgCdFrom() { + return orgCdFrom; + } + + public void setOrgCdFrom(String orgCdFrom) { + this.orgCdFrom = orgCdFrom; + } + + public String getOrgCdTo() { + return orgCdTo; + } + + public void setOrgCdTo(String orgCdTo) { + this.orgCdTo = orgCdTo; + } + + public MovementFileState getState() { + return state; + } + + public void setState(MovementFileState state) { + this.state = state; + } + + public UUID getSmId() { + return smId; + } + + public void setSmId(UUID smId) { + this.smId = smId; + } + + public String getAipnFileId() { + return aipnFileId; + } + + public void setAipnFileId(String aipnFileId) { + this.aipnFileId = aipnFileId; + } + + public String getAipnDocumentId() { + return aipnDocumentId; + } + + public void setAipnDocumentId(String aipnDocumentId) { + this.aipnDocumentId = aipnDocumentId; + } + + public LocalDate getAipnNotifDate() { + return aipnNotifDate; + } + + public void setAipnNotifDate(LocalDate aipnNotifDate) { + this.aipnNotifDate = aipnNotifDate; + } + + public Boolean getWithoutRights() { + return withoutRights; + } + + public void setWithoutRights(Boolean withoutRights) { + this.withoutRights = withoutRights; + } + + public String getReasonEoc() { + return reasonEoc; + } + + public void setReasonEoc(String reasonEoc) { + this.reasonEoc = reasonEoc; + } + + public Long getMovementNr() { + return movementNr; + } + + public void setMovementNr(Long movementNr) { + this.movementNr = movementNr; + } + + public String getReasonDeletion() { + return reasonDeletion; + } + + public void setReasonDeletion(String reasonDeletion) { + this.reasonDeletion = reasonDeletion; + } + + public Boolean getEvacuated() { + return evacuated; + } + + public void setEvacuated(Boolean evacuated) { + this.evacuated = evacuated; + } + + public CountryModel getCountryTo() { + return countryTo; + } + + public void setCountryTo(CountryModel countryTo) { + this.countryTo = countryTo; + } + + public CityModel getCityTo() { + return cityTo; + } + + public void setCityTo(CityModel cityTo) { + this.cityTo = cityTo; + } + + public CountryModel getCountryFrom() { + return countryFrom; + } + + public void setCountryFrom(CountryModel countryFrom) { + this.countryFrom = countryFrom; + } + + public CityModel getCityFrom() { + return cityFrom; + } + + public void setCityFrom(CityModel cityFrom) { + this.cityFrom = cityFrom; + } + + public Long getDelegationOrgFromId() { + return delegationOrgFromId; + } + + public void setDelegationOrgFromId(Long delegationOrgFromId) { + this.delegationOrgFromId = delegationOrgFromId; + } + + public Boolean getJobToFamilyPosting() { + return jobToFamilyPosting; + } + + public void setJobToFamilyPosting(Boolean jobToFamilyPosting) { + this.jobToFamilyPosting = jobToFamilyPosting; + } + + public Boolean getFamilyPosting() { + return familyPosting; + } + + public void setFamilyPosting(Boolean familyPosting) { + this.familyPosting = familyPosting; + } + + public Boolean getHodPosting() { + return hodPosting; + } + + public void setHodPosting(Boolean hodPosting) { + this.hodPosting = hodPosting; + } + + public BigDecimal getAirfreightVolumeCeiling() { + return airfreightVolumeCeiling; + } + + public void setAirfreightVolumeCeiling(BigDecimal airfreightVolumeCeiling) { + this.airfreightVolumeCeiling = airfreightVolumeCeiling; + } + + public String getPersonnelTypeDesc() { + return personnelTypeDesc; + } + + public void setPersonnelTypeDesc(String personnelTypeDesc) { + this.personnelTypeDesc = personnelTypeDesc; + } + + public String getInternalComment() { + return internalComment; + } + + public void setInternalComment(String internalComment) { + this.internalComment = internalComment; + } + + public String getBudgetLineJobTo() { + return budgetLineJobTo; + } + + public void setBudgetLineJobTo(String budgetLineJobTo) { + this.budgetLineJobTo = budgetLineJobTo; + } + + public String getBudgetLineJobFrom() { + return budgetLineJobFrom; + } + + public void setBudgetLineJobFrom(String budgetLineJobFrom) { + this.budgetLineJobFrom = budgetLineJobFrom; + } + + public Boolean getHodJobTo() { + return hodJobTo; + } + + public void setHodJobTo(Boolean hodJobTo) { + this.hodJobTo = hodJobTo; + } + + public Boolean getHodJobFrom() { + return hodJobFrom; + } + + public void setHodJobFrom(Boolean hodJobFrom) { + this.hodJobFrom = hodJobFrom; + } + + public Long getPersonnelTypeId() { + return personnelTypeId; + } + + public void setPersonnelTypeId(Long personnelTypeId) { + this.personnelTypeId = personnelTypeId; + } + + public String getJobFunctionCode() { + return jobFunctionCode; + } + + public void setJobFunctionCode(String jobFunctionCode) { + this.jobFunctionCode = jobFunctionCode; + } + + public String getJobFunctionDesc() { + return jobFunctionDesc; + } + + public void setJobFunctionDesc(String jobFunctionDesc) { + this.jobFunctionDesc = jobFunctionDesc; + } + + public String getInstitutionCode() { + return institutionCode; + } + + public void setInstitutionCode(String institutionCode) { + this.institutionCode = institutionCode; + } + + public String getInstitutionDesc() { + return institutionDesc; + } + + public void setInstitutionDesc(String institutionDesc) { + this.institutionDesc = institutionDesc; + } + + public String getFollowupFlags() { + return followupFlags; + } + + public void setFollowupFlags(String followupFlags) { + this.followupFlags = followupFlags; + } + + public String getIataCode() { + return iataCode; + } + + public void setIataCode(String iataCode) { + this.iataCode = iataCode; + } + + public String getIataFrom() { + return iataFrom; + } + + public void setIataFrom(String iataFrom) { + this.iataFrom = iataFrom; + } + + public String getIataTo() { + return iataTo; + } + + public void setIataTo(String iataTo) { + this.iataTo = iataTo; + } + + public String getAssignmentCountry() { + return assignmentCountry; + } + + public void setAssignmentCountry(String assignmentCountry) { + this.assignmentCountry = assignmentCountry; + } + + public String getAssignmentCity() { + return assignmentCity; + } + + public void setAssignmentCity(String assignmentCity) { + this.assignmentCity = assignmentCity; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/MovementTypeModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/MovementTypeModel.java new file mode 100644 index 0000000..7d2b004 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/MovementTypeModel.java @@ -0,0 +1,68 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +public class MovementTypeModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long id; + + private String codeFrom; + + private String codeTo; + + private String movementType; + + private Long contextId; + + private BudgetLineJob budgetLineJob; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCodeFrom() { + return codeFrom; + } + + public void setCodeFrom(String codeFrom) { + this.codeFrom = codeFrom; + } + + public String getCodeTo() { + return codeTo; + } + + public void setCodeTo(String codeTo) { + this.codeTo = codeTo; + } + + public String getMovementType() { + return movementType; + } + + public void setMovementType(String movementType) { + this.movementType = movementType; + } + + public Long getContextId() { + return contextId; + } + + public void setContextId(Long contextId) { + this.contextId = contextId; + } + + public BudgetLineJob getBudgetLineJob() { + return budgetLineJob; + } + + public void setBudgetLineJob(BudgetLineJob budgetLineJob) { + this.budgetLineJob = budgetLineJob; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PermissionsModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PermissionsModel.java new file mode 100644 index 0000000..60c8540 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PermissionsModel.java @@ -0,0 +1,133 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PermissionsModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Boolean canCreate = false; + + private Boolean canDelete = false; + + private Boolean canWithdraw = false; + + private Boolean canConfirm = false; + + private Boolean canExport = false; + + private Boolean canUpdate = false; + + private Boolean isOwner = false; + + private Boolean canView = false; + + private Boolean isOwnerOfAtLeastOneMovementFile = false; + + private Boolean canUpdateEntitlements = false; + + private Boolean canConsultEntitlements = false; + + private Boolean canUpdateDeclaration = false; + + private Boolean canReviewTudRequest = false; + + private Boolean canResubmitTudRequest = false; + + private Boolean canPayTudRequestManually = false; + + private Boolean canPayTudRequestAbac = false; + + private Boolean canReviewRemRequest = false; + + private Boolean canEditRemRequest = false; + + private Boolean canApproveRemRequest = false; + + private Boolean canRejectRemRequest = false; + + private Boolean canResubmitRemRequest = false; + + private Boolean canPayRemRequestManually = false; + + private Boolean canPayRemRequestAbac = false; + + private Boolean canSubmitRemRequest = false; + + private Boolean canRejectPaidTudRequest = false; + + private Boolean canRefreshInstallationRequest = false; + + private Boolean canApproveInstallationRequest = false; + + private Boolean canPayInstallationManually = false; + private Boolean canRequestInstallationSysperPayment = false; + + private Boolean canRejectInstallation = false; + + private Boolean canUpdateInstallationPaymentInSysper = false; + private Boolean canEditInstallation = false; + + private Boolean canRequestUpdatePaid = false; + + private Boolean canResetInstallationRequestFromApproved = false; + + private Boolean canResetInstallationRequestToDraft = false; + + private Boolean canDeleteComments = false; + + private Boolean canComplete = false; + + private Boolean canCancel = false; + + private Boolean canReopen = false; + + private Boolean canApproveTopUpRequest = false; + + private Boolean canRejectTopUpRequest = false; + + private Boolean canResubmitTopUpRequest = false; + + private Boolean canSubmitTopUpRequest = false; + + private Boolean canPayTopUpRequestManually = false; + + private Boolean canPayTopUpRequestAbac = false; + + private Boolean canAccessBackOffice = false; + + private Boolean canSubmitInstallationRequest = false; + + private Boolean canCreateResettlementRequest = false; + + private Boolean canSubmitResettlementRequest = false; + + private Boolean canApproveResettlementRequest = false; + + private Boolean canRejectResettlementRequest = false; + + private Boolean canResetResettlementRequest = false; + + private Boolean canResetApprovalResettlementRequest = false; + + private Boolean canResetPaymentResettlementRequest = false; + + private Boolean canPaySysperResettlementRequest = false; + + private Boolean canPayManuallyResettlementRequest = false; + + private Boolean canCreateAccommodationDeclaration = false; + + private Boolean canListPostingEntitlements = false; + + private Boolean canListMovementFiles = false; + + private Boolean canListRotationalEntitlements = false; + + private Boolean canOwnAtLeastOnePostingAllowance = false; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PersonAddressModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PersonAddressModel.java new file mode 100644 index 0000000..904a409 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PersonAddressModel.java @@ -0,0 +1,358 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +import java.time.LocalDate; + +public class PersonAddressModel extends AbstractModel { + + private Long uniqId; + + private Long perId; + + private LocalDate startDate; + + private LocalDate endDate; + + private LocalDate effectiveDate; + + private LocalDate declChgDate; + + private Integer tadrCd; + + private String addressTypeCode; + + private CountryModel country; + + private String cityName; + + private String postalCode; + + private String streetName; + + private String streetName1; + + private String streetName2; + + private String streetNumber; + + private String postalBox; + + private String comments; + + private String additionalAddress; + + private String additionalAddress2; + + private Integer orederAddress; + + private String languageCode; + + private Long perIdRelPers; + + private String surname; + + private String countryCode; + + private String firstName; + + private LocalDate dateOfBirth; + + private String title; + + private String linkAdrTel; + + private Long sp2AddressId; + + private Long irisAddressId; + + private Long srcId; + + private String insCd; + + private String status; + + private LocalDate createdDate; + + private LocalDate updatedDate; + + public Long getUniqId() { + return uniqId; + } + + public void setUniqId(Long uniqId) { + this.uniqId = uniqId; + } + + public Long getPerId() { + return perId; + } + + public void setPerId(Long perId) { + this.perId = perId; + } + + public LocalDate getStartDate() { + return startDate; + } + + public void setStartDate(LocalDate startDate) { + this.startDate = startDate; + } + + public LocalDate getEndDate() { + return endDate; + } + + public void setEndDate(LocalDate endDate) { + this.endDate = endDate; + } + + public LocalDate getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(LocalDate effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public LocalDate getDeclChgDate() { + return declChgDate; + } + + public void setDeclChgDate(LocalDate declChgDate) { + this.declChgDate = declChgDate; + } + + public Integer getTadrCd() { + return tadrCd; + } + + public void setTadrCd(Integer tadrCd) { + this.tadrCd = tadrCd; + } + + public String getAddressTypeCode() { + return addressTypeCode; + } + + public void setAddressTypeCode(String addressTypeCode) { + this.addressTypeCode = addressTypeCode; + } + + public CountryModel getCountry() { + return country; + } + + public void setCountry(CountryModel country) { + this.country = country; + } + + public String getCityName() { + return cityName; + } + + public void setCityName(String cityName) { + this.cityName = cityName; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getStreetName() { + return streetName; + } + + public void setStreetName(String streetName) { + this.streetName = streetName; + } + + public String getStreetName1() { + return streetName1; + } + + public void setStreetName1(String streetName1) { + this.streetName1 = streetName1; + } + + public String getStreetName2() { + return streetName2; + } + + public void setStreetName2(String streetName2) { + this.streetName2 = streetName2; + } + + public String getStreetNumber() { + return streetNumber; + } + + public void setStreetNumber(String streetNumber) { + this.streetNumber = streetNumber; + } + + public String getPostalBox() { + return postalBox; + } + + public void setPostalBox(String postalBox) { + this.postalBox = postalBox; + } + + public String getComments() { + return comments; + } + + public void setComments(String comments) { + this.comments = comments; + } + + public String getAdditionalAddress() { + return additionalAddress; + } + + public void setAdditionalAddress(String additionalAddress) { + this.additionalAddress = additionalAddress; + } + + public String getAdditionalAddress2() { + return additionalAddress2; + } + + public void setAdditionalAddress2(String additionalAddress2) { + this.additionalAddress2 = additionalAddress2; + } + + public Integer getOrederAddress() { + return orederAddress; + } + + public void setOrederAddress(Integer orederAddress) { + this.orederAddress = orederAddress; + } + + public String getLanguageCode() { + return languageCode; + } + + public void setLanguageCode(String languageCode) { + this.languageCode = languageCode; + } + + public Long getPerIdRelPers() { + return perIdRelPers; + } + + public void setPerIdRelPers(Long perIdRelPers) { + this.perIdRelPers = perIdRelPers; + } + + public String getSurname() { + return surname; + } + + public void setSurname(String surname) { + this.surname = surname; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public LocalDate getDateOfBirth() { + return dateOfBirth; + } + + public void setDateOfBirth(LocalDate dateOfBirth) { + this.dateOfBirth = dateOfBirth; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getLinkAdrTel() { + return linkAdrTel; + } + + public void setLinkAdrTel(String linkAdrTel) { + this.linkAdrTel = linkAdrTel; + } + + public Long getSp2AddressId() { + return sp2AddressId; + } + + public void setSp2AddressId(Long sp2AddressId) { + this.sp2AddressId = sp2AddressId; + } + + public Long getIrisAddressId() { + return irisAddressId; + } + + public void setIrisAddressId(Long irisAddressId) { + this.irisAddressId = irisAddressId; + } + + public Long getSrcId() { + return srcId; + } + + public void setSrcId(Long srcId) { + this.srcId = srcId; + } + + public String getInsCd() { + return insCd; + } + + public void setInsCd(String insCd) { + this.insCd = insCd; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + + public LocalDate getCreatedDate() { + return createdDate; + } + + public void setCreatedDate(LocalDate createdDate) { + this.createdDate = createdDate; + } + + public LocalDate getUpdatedDate() { + return updatedDate; + } + + public void setUpdatedDate(LocalDate updatedDate) { + this.updatedDate = updatedDate; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PersonEmailModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PersonEmailModel.java new file mode 100644 index 0000000..b657ae6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PersonEmailModel.java @@ -0,0 +1,56 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonEmailJpaEntity; + +import java.io.Serializable; + +/** + * Model for PERSONS_EMAILS entity {@link PersonEmailJpaEntity} + * + * @author idominju + * + */ +public class PersonEmailModel extends AbstractAuditableModel implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + private Long perId; + private String email; + private String emailType; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getPerId() { + return perId; + } + + public void setPerId(Long perId) { + this.perId = perId; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getEmailType() { + return emailType; + } + + public void setEmailType(String emailType) { + this.emailType = emailType; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PersonIndemnityModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PersonIndemnityModel.java new file mode 100644 index 0000000..c0d51a1 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PersonIndemnityModel.java @@ -0,0 +1,288 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +import java.time.LocalDate; + +public class PersonIndemnityModel extends AbstractModel { + + private Long rigId; + + private Long benefPerId; + + private String code; + + private LocalDate dateFrom; + + private LocalDate dateTo; + + private String insNomFra; + + private String insNomEng; + + private String insNomDeu; + + private String droitFra; + + private String droitEn; + + private String droitDeu; + + private String status; + + private Integer yearCount; + + private Integer monthCount; + + private LocalDate creationDate; + + private LocalDate updatedAt; + + private String originPeriod; + + private String paymentPeriod; + + private Long allowancesCount; + + private Long indemnityIdType; + + private String indemnityTypeFr; + + private String indemnityTypeEn; + + private String indemnityTypeDe; + + private String indemnityTypeEnUserFriendly; + + private String unitFr; + + private String unitEn; + + private String unitDe; + + private String comment; + + public Long getRigId() { + return rigId; + } + + public void setRigId(Long rigId) { + this.rigId = rigId; + } + + public Long getBenefPerId() { + return benefPerId; + } + + public void setBenefPerId(Long benefPerId) { + this.benefPerId = benefPerId; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public LocalDate getDateFrom() { + return dateFrom; + } + + public void setDateFrom(LocalDate dateFrom) { + this.dateFrom = dateFrom; + } + + public LocalDate getDateTo() { + return dateTo; + } + + public void setDateTo(LocalDate dateTo) { + this.dateTo = dateTo; + } + + public String getDroitFra() { + return droitFra; + } + + public void setDroitFra(String droitFra) { + this.droitFra = droitFra; + } + + public String getDroitEn() { + return droitEn; + } + + public void setDroitEn(String droitEn) { + this.droitEn = droitEn; + } + + public String getDroitDeu() { + return droitDeu; + } + + public void setDroitDeu(String droitDeu) { + this.droitDeu = droitDeu; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public Integer getYearCount() { + return yearCount; + } + + public void setYearCount(Integer yearCount) { + this.yearCount = yearCount; + } + + public Integer getMonthCount() { + return monthCount; + } + + public void setMonthCount(Integer monthCount) { + this.monthCount = monthCount; + } + + public String getInsNomFra() { + return insNomFra; + } + + public void setInsNomFra(String insNomFra) { + this.insNomFra = insNomFra; + } + + public String getInsNomEng() { + return insNomEng; + } + + public void setInsNomEng(String insNomEng) { + this.insNomEng = insNomEng; + } + + public String getInsNomDeu() { + return insNomDeu; + } + + public void setInsNomDeu(String insNomDeu) { + this.insNomDeu = insNomDeu; + } + + public String getOriginPeriod() { + return originPeriod; + } + + public void setOriginPeriod(String originPeriod) { + this.originPeriod = originPeriod; + } + + public String getPaymentPeriod() { + return paymentPeriod; + } + + public void setPaymentPeriod(String paymentPeriod) { + this.paymentPeriod = paymentPeriod; + } + + public LocalDate getCreationDate() { + return creationDate; + } + + public void setCreationDate(LocalDate creationDate) { + this.creationDate = creationDate; + } + + public Long getAllowancesCount() { + return allowancesCount; + } + + public void setAllowancesCount(Long allowancesCount) { + this.allowancesCount = allowancesCount; + } + + public String getIndemnityTypeFr() { + return indemnityTypeFr; + } + + public void setIndemnityTypeFr(String indemnityTypeFr) { + this.indemnityTypeFr = indemnityTypeFr; + } + + public String getIndemnityTypeEn() { + return indemnityTypeEn; + } + + public void setIndemnityTypeEn(String indemnityTypeEn) { + this.indemnityTypeEn = indemnityTypeEn; + } + + public String getIndemnityTypeDe() { + return indemnityTypeDe; + } + + public void setIndemnityTypeDe(String indemnityTypeDe) { + this.indemnityTypeDe = indemnityTypeDe; + } + + public String getUnitFr() { + return unitFr; + } + + public void setUnitFr(String unitFr) { + this.unitFr = unitFr; + } + + public String getUnitEn() { + return unitEn; + } + + public void setUnitEn(String unitEn) { + this.unitEn = unitEn; + } + + public String getUnitDe() { + return unitDe; + } + + public void setUnitDe(String unitDe) { + this.unitDe = unitDe; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public LocalDate getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(LocalDate updatedAt) { + this.updatedAt = updatedAt; + } + + public String getIndemnityTypeEnUserFriendly() { + return indemnityTypeEnUserFriendly; + } + + public void setIndemnityTypeEnUserFriendly(String indemnityTypeEnUserFriendly) { + this.indemnityTypeEnUserFriendly = indemnityTypeEnUserFriendly; + } + + public Long getIndemnityIdType() { + return indemnityIdType; + } + + public void setIndemnityIdType(Long indemnityIdType) { + this.indemnityIdType = indemnityIdType; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PersonModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PersonModel.java new file mode 100644 index 0000000..cebefb3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PersonModel.java @@ -0,0 +1,129 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +import java.time.LocalDate; +import java.util.List; + +public class PersonModel extends AbstractModel { + + private Long id; + + private String title; + + private String firstName; + + private String lastName; + + private String gender; + + private String birthCity; + + private CountryModel birthCountry; + + private String privateEmail; + + private LocalDate birthDate; + + private Integer age; + + private List addresses; + + private String firstNationality; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public String getBirthCity() { + return birthCity; + } + + public void setBirthCity(String birthCity) { + this.birthCity = birthCity; + } + + public CountryModel getBirthCountry() { + return birthCountry; + } + + public void setBirthCountry(CountryModel birthCountry) { + this.birthCountry = birthCountry; + } + + public String getPrivateEmail() { + return privateEmail; + } + + public void setPrivateEmail(String privateEmail) { + this.privateEmail = privateEmail; + } + + public LocalDate getBirthDate() { + return birthDate; + } + + public void setBirthDate(LocalDate birthDate) { + this.birthDate = birthDate; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public List getAddresses() { + return addresses; + } + + public void setAddresses(List addresses) { + this.addresses = addresses; + } + + public String getFirstNationality() { + return firstNationality; + } + + public void setFirstNationality(String firstNationality) { + this.firstNationality = firstNationality; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PlaceOriginAirportModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PlaceOriginAirportModel.java new file mode 100644 index 0000000..72a196a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PlaceOriginAirportModel.java @@ -0,0 +1,71 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +/** + * @author tapiafo + */ +public class PlaceOriginAirportModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long id; + + private String cityCode; + + private String countryCode; + + private String cityName; + + private String iataCode; + + private String airportName; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCityCode() { + return cityCode; + } + + public void setCityCode(String cityCode) { + this.cityCode = cityCode; + } + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + + public String getCityName() { + return cityName; + } + + public void setCityName(String cityName) { + this.cityName = cityName; + } + + public String getIataCode() { + return iataCode; + } + + public void setIataCode(String iataCode) { + this.iataCode = iataCode; + } + + public String getAirportName() { + return airportName; + } + + public void setAirportName(String airportName) { + this.airportName = airportName; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PostingAllowancePermissionModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PostingAllowancePermissionModel.java new file mode 100644 index 0000000..f13ec96 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/PostingAllowancePermissionModel.java @@ -0,0 +1,44 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import java.util.ArrayList; +import java.util.List; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PostingAllowancePermissionModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Boolean canCreateRegularization = false; + + private Boolean canReject = false; + + private Boolean canApprove = false; + + private Boolean canResubmit = false; + + private Boolean canPaySysper = false; + + private Boolean canPayManually = false; + + private Boolean canPayAbac = false; + + private Boolean canConsult = false; + + private Boolean canDeleteComments = false; + + private Boolean canOwnAtLeastOnePostingAllowance = false; + + private Boolean canSaveChanges = false; + + private Boolean hasOrganisationsWithListAuthority = false; + + private Boolean hasOrganisationIndependentListAuthority = false; + + private List accDeclarationPermissions = new ArrayList<>(); + + private List accPaymentPermissions = new ArrayList<>(); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/RightVOBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/RightVOBuilder.java new file mode 100644 index 0000000..54377b8 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/RightVOBuilder.java @@ -0,0 +1,27 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.erights.web.client.model.RightVO; +import lombok.Builder; +import lombok.Getter; +import org.javamoney.moneta.Money; + +import java.time.Month; +import java.time.Year; + +@Builder +@Getter +public class RightVOBuilder { + + private Money amount; + private Year paymentPeriodYear; + private Month paymentPeriodMonth; + private Year originPeriodYear; + private Month originPeriodMonth; + private RightVO.RightsTypeEnum type; + private Long perId; + private String comments; + private String unit; + private Integer number; + private String typeOfIndemnity; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/UserPreferenceModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/UserPreferenceModel.java new file mode 100644 index 0000000..61a072a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/UserPreferenceModel.java @@ -0,0 +1,60 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; + +public class UserPreferenceModel extends AbstractAuditableModel { + + private static final long serialVersionUID = 1L; + + private Long id; + + private Long perId; + + private String locale; + + private String pagePath; + + private String preferences; + + public Long getPerId() { + return perId; + } + + public void setPerId(Long perId) { + this.perId = perId; + } + + public String getLocale() { + return locale; + } + + public void setLocale(String locale) { + this.locale = locale; + } + + public String getPagePath() { + return pagePath; + } + + public void setPagePath(String pagePath) { + this.pagePath = pagePath; + } + + public String getPreferences() { + return preferences; + } + + public void setPreferences(String preferences) { + this.preferences = preferences; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } +} + diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VAllowanceModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VAllowanceModel.java new file mode 100644 index 0000000..bacd22d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VAllowanceModel.java @@ -0,0 +1,77 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.erights.common.tools.p2p.OrderStatusEnum; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.Column; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; + +@Getter +@Setter +public class VAllowanceModel extends AbstractModel { + + private Long id; + + private Long declarationId; + + private Long movementFileId; + + private Long entitlementTypeId; + + private String requestStringId; + + private LocalDate createdAt; + + private String status; + + private BigDecimal calcTotalAmount; + + private String calcTotalAmountCurrency; + + private BigDecimal totalAmount; + + private String totalAmountCurrency; + + private String entitlement; + + private String lastName; + + private String firstName; + + private LocalDate startDate; + + private String cityTo; + + private String countryTo; + + private String fileId; + + private String requestType; + + private String cityFrom; + + private String countryFrom; + + private Boolean priority; + + private String paymentRequestNumber; + + private String paymentOrder; + + private String budgetLine; + + private String abacStatus; + + private String abacWorkflowStatus; + + private Long p2pHubOrderId; + + private OrderStatusEnum p2pHubOrderStatus; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VAssignmentHistModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VAssignmentHistModel.java new file mode 100644 index 0000000..d754d90 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VAssignmentHistModel.java @@ -0,0 +1,42 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import java.time.LocalDate; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class VAssignmentHistModel extends AbstractModel { + + + private Long id; + + private Long perId; + + private Long jcxId; + + private Long jobId; + + private String jobType; + + private LocalDate startDate; + + private LocalDate endDate; + + private String insCd; + + private Long delegationOrgId; + + private VJobModel job; + + private String tojCd; + + private String postType; + + private String statutoryLink; + + private String housingPolicy; + + private String statutoryCode; +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VJobModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VJobModel.java new file mode 100644 index 0000000..37c08b6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VJobModel.java @@ -0,0 +1,311 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.erights.common.tools.job.JobFamilyPostingCode; + +import java.time.LocalDate; + +public class VJobModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long id; + + private String budgetLine; + + private String jobType; + + private Long personnelTypeId; + + private String personnelTypeDesc; + + private String jobFunctionCode; + + private String jobFunctionDesc; + + private String institutionCode; + + private String institutionDesc; + + private String organizationName; + + private String cityName; + + private String countryName; + + private Long orgId; + + private LocalDate assignedStartDate; + + private LocalDate assignedEndDate; + + private Long severityLevel; + + private Long evacuationLevelCodeId; + + private Long alertStatusId; + + private String evacuationCode; + + private String orgCountryCode; + + private String orgCityCode; + + private String jobCountryCode; + + private String jobCountryName; + + private Long familyPostingTypeId; + + private String familyPostingType; + + private JobFamilyPostingCode familyPostingTypeCategory; + + private Boolean hod; + + private String jobCityCode; + + private String jobCityName; + + private Long delegationOrgId; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getBudgetLine() { + return budgetLine; + } + + public void setBudgetLine(String budgetLine) { + this.budgetLine = budgetLine; + } + + public String getJobType() { + return jobType; + } + + public void setJobType(String jobType) { + this.jobType = jobType; + } + + public String getCityName() { + return cityName; + } + + public void setCityName(String cityName) { + this.cityName = cityName; + } + + public String getCountryName() { + return countryName; + } + + public void setCountryName(String countryName) { + this.countryName = countryName; + } + + public String getOrganizationName() { + return organizationName; + } + + public void setOrganizationName(String organizationName) { + this.organizationName = organizationName; + } + + public Long getOrgId() { + return orgId; + } + + public void setOrgId(Long orgId) { + this.orgId = orgId; + } + + public LocalDate getAssignedStartDate() { + return assignedStartDate; + } + + public void setAssignedStartDate(LocalDate assignedStartDate) { + this.assignedStartDate = assignedStartDate; + } + + public LocalDate getAssignedEndDate() { + return assignedEndDate; + } + + public void setAssignedEndDate(LocalDate assignedEndDate) { + this.assignedEndDate = assignedEndDate; + } + + public Long getSeverityLevel() { + return severityLevel; + } + + public void setSeverityLevel(Long severityLevel) { + this.severityLevel = severityLevel; + } + + public Long getEvacuationLevelCodeId() { + return evacuationLevelCodeId; + } + + public void setEvacuationLevelCodeId(Long evacuationLevelCodeId) { + this.evacuationLevelCodeId = evacuationLevelCodeId; + } + + public Long getAlertStatusId() { + return alertStatusId; + } + + public void setAlertStatusId(Long alertStatusId) { + this.alertStatusId = alertStatusId; + } + + public String getEvacuationCode() { + return evacuationCode; + } + + public void setEvacuationCode(String evacuationCode) { + this.evacuationCode = evacuationCode; + } + + public String getOrgCountryCode() { + return orgCountryCode; + } + + public void setOrgCountryCode(String orgCountryCode) { + this.orgCountryCode = orgCountryCode; + } + + public String getOrgCityCode() { + return orgCityCode; + } + + public void setOrgCityCode(String orgCityCode) { + this.orgCityCode = orgCityCode; + } + + public Long getFamilyPostingTypeId() { + return familyPostingTypeId; + } + + public void setFamilyPostingTypeId(Long familyPostingTypeId) { + this.familyPostingTypeId = familyPostingTypeId; + } + + public String getFamilyPostingType() { + return familyPostingType; + } + + public void setFamilyPostingType(String familyPostingType) { + this.familyPostingType = familyPostingType; + } + + public String getJobCityCode() { + return jobCityCode; + } + + public void setJobCityCode(String jobCityCode) { + this.jobCityCode = jobCityCode; + } + + public String getJobCityName() { + return jobCityName; + } + + public void setJobCityName(String jobCityName) { + this.jobCityName = jobCityName; + } + + public Boolean getHod() { + return hod; + } + + public void setHod(Boolean hod) { + this.hod = hod; + } + + public JobFamilyPostingCode getFamilyPostingTypeCategory() { + return familyPostingTypeCategory; + } + + public void setFamilyPostingTypeCategory(JobFamilyPostingCode familyPostingTypeCategory) { + this.familyPostingTypeCategory = familyPostingTypeCategory; + } + + public Long getDelegationOrgId() { + return delegationOrgId; + } + + public void setDelegationOrgId(Long delegationOrgId) { + this.delegationOrgId = delegationOrgId; + } + + public String getJobCountryCode() { + return jobCountryCode; + } + + public void setJobCountryCode(String jobCountryCode) { + this.jobCountryCode = jobCountryCode; + } + + public String getJobCountryName() { + return jobCountryName; + } + + public void setJobCountryName(String jobCountryName) { + this.jobCountryName = jobCountryName; + } + + public Long getPersonnelTypeId() { + return personnelTypeId; + } + + public void setPersonnelTypeId(Long personnelTypeId) { + this.personnelTypeId = personnelTypeId; + } + + public String getPersonnelTypeDesc() { + return personnelTypeDesc; + } + + public void setPersonnelTypeDesc(String personnelTypeDesc) { + this.personnelTypeDesc = personnelTypeDesc; + } + + public String getJobFunctionCode() { + return jobFunctionCode; + } + + public void setJobFunctionCode(String jobFunctionCode) { + this.jobFunctionCode = jobFunctionCode; + } + + public String getJobFunctionDesc() { + return jobFunctionDesc; + } + + public void setJobFunctionDesc(String jobFunctionDesc) { + this.jobFunctionDesc = jobFunctionDesc; + } + + public String getInstitutionCode() { + return institutionCode; + } + + public void setInstitutionCode(String institutionCode) { + this.institutionCode = institutionCode; + } + + public String getInstitutionDesc() { + return institutionDesc; + } + + public void setInstitutionDesc(String institutionDesc) { + this.institutionDesc = institutionDesc; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VNewTravelAllowanceModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VNewTravelAllowanceModel.java new file mode 100644 index 0000000..c68d98c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VNewTravelAllowanceModel.java @@ -0,0 +1,490 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import lombok.Getter; + +import javax.persistence.Column; +import java.time.LocalDate; + +public class VNewTravelAllowanceModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + private Long perId; + + private String id; + + private Long sojId; + + private Long jobId; + + private String tojCd; + + private String jobType; + + private String insCd; + + private Long noSysper; + + private String title; + + private String surname; + + private String genre; + + private String userId; + + private String moniker; + + private String domain; + + private String displayName; + + private Long jcxId; + + private LocalDate assStartDat; + + private LocalDate assignEndDate; + + private String lstCd; + + private String lstCode; + + private LocalDate lstBegDate; + + private LocalDate lstAssDate; + + private LocalDate lstEndDate; + + private String cgrCd; + + private Long orgId; + + private Long mainOrgId; + + private String orgName; + + private String orgCd; + + private String orgDesc; + + private Long torId; + + private String typeOfEntityName; + + private String delegationName; + + private String responsible; + + private String headOfEntity; + + private Long delegationOrgId; + + private String jobCityCode; + + private String jobCityName; + + private String jobCountryCode; + + private String jobCountryName; + + private String iataCode; + + private LocalDate expatriationAllowanceStartDate; + + private LocalDate expatriationAllowanceEndDate; + + private String originCountryCode; + + public Long getPerId() { + return perId; + } + + public void setPerId(Long perId) { + this.perId = perId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Long getJobId() { + return jobId; + } + + public void setJobId(Long jobId) { + this.jobId = jobId; + } + + public String getTojCd() { + return tojCd; + } + + public void setTojCd(String tojCd) { + this.tojCd = tojCd; + } + + public String getJobType() { + return jobType; + } + + public void setJobType(String jobType) { + this.jobType = jobType; + } + + public String getInsCd() { + return insCd; + } + + public void setInsCd(String insCd) { + this.insCd = insCd; + } + + public Long getNoSysper() { + return noSysper; + } + + public void setNoSysper(Long noSysper) { + this.noSysper = noSysper; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getSurname() { + return surname; + } + + public void setSurname(String surname) { + this.surname = surname; + } + + public String getGenre() { + return genre; + } + + public void setGenre(String genre) { + this.genre = genre; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getMoniker() { + return moniker; + } + + public void setMoniker(String moniker) { + this.moniker = moniker; + } + + public String getDomain() { + return domain; + } + + public void setDomain(String domain) { + this.domain = domain; + } + + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public Long getJcxId() { + return jcxId; + } + + public void setJcxId(Long jcxId) { + this.jcxId = jcxId; + } + + public LocalDate getAssStartDat() { + return assStartDat; + } + + public void setAssStartDat(LocalDate assStartDat) { + this.assStartDat = assStartDat; + } + + public LocalDate getAssignEndDate() { + return assignEndDate; + } + + public void setAssignEndDate(LocalDate assignEndDate) { + this.assignEndDate = assignEndDate; + } + + public String getLstCd() { + return lstCd; + } + + public void setLstCd(String lstCd) { + this.lstCd = lstCd; + } + + public String getLstCode() { + return lstCode; + } + + public void setLstCode(String lstCode) { + this.lstCode = lstCode; + } + + public LocalDate getLstBegDate() { + return lstBegDate; + } + + public void setLstBegDate(LocalDate lstBegDate) { + this.lstBegDate = lstBegDate; + } + + public LocalDate getLstAssDate() { + return lstAssDate; + } + + public void setLstAssDate(LocalDate lstAssDate) { + this.lstAssDate = lstAssDate; + } + + public LocalDate getLstEndDate() { + return lstEndDate; + } + + public void setLstEndDate(LocalDate lstEndDate) { + this.lstEndDate = lstEndDate; + } + + public String getCgrCd() { + return cgrCd; + } + + public void setCgrCd(String cgrCd) { + this.cgrCd = cgrCd; + } + + public Long getOrgId() { + return orgId; + } + + public void setOrgId(Long orgId) { + this.orgId = orgId; + } + + public Long getMainOrgId() { + return mainOrgId; + } + + public void setMainOrgId(Long mainOrgId) { + this.mainOrgId = mainOrgId; + } + + public String getOrgName() { + return orgName; + } + + public void setOrgName(String orgName) { + this.orgName = orgName; + } + + public String getOrgCd() { + return orgCd; + } + + public void setOrgCd(String orgCd) { + this.orgCd = orgCd; + } + + public String getOrgDesc() { + return orgDesc; + } + + public void setOrgDesc(String orgDesc) { + this.orgDesc = orgDesc; + } + + public Long getTorId() { + return torId; + } + + public void setTorId(Long torId) { + this.torId = torId; + } + + public String getTypeOfEntityName() { + return typeOfEntityName; + } + + public void setTypeOfEntityName(String typeOfEntityName) { + this.typeOfEntityName = typeOfEntityName; + } + + public String getDelegationName() { + return delegationName; + } + + public void setDelegationName(String delegationName) { + this.delegationName = delegationName; + } + + + public String getResponsible() { + return responsible; + } + + public void setResponsible(String responsible) { + this.responsible = responsible; + } + + public String getHeadOfEntity() { + return headOfEntity; + } + + public void setHeadOfEntity(String headOfEntity) { + this.headOfEntity = headOfEntity; + } + + public Long getDelegationOrgId() { + return delegationOrgId; + } + + public void setDelegationOrgId(Long delegationOrgId) { + this.delegationOrgId = delegationOrgId; + } + + public String getJobCityCode() { + return jobCityCode; + } + + public void setJobCityCode(String jobCityCode) { + this.jobCityCode = jobCityCode; + } + + public String getJobCityName() { + return jobCityName; + } + + public void setJobCityName(String jobCityName) { + this.jobCityName = jobCityName; + } + + public String getJobCountryCode() { + return jobCountryCode; + } + + public void setJobCountryCode(String jobCountryCode) { + this.jobCountryCode = jobCountryCode; + } + + public String getJobCountryName() { + return jobCountryName; + } + + public void setJobCountryName(String jobCountryName) { + this.jobCountryName = jobCountryName; + } + + public String getIataCode() { + return iataCode; + } + + public void setIataCode(String iataCode) { + this.iataCode = iataCode; + } + + public LocalDate getExpatriationAllowanceStartDate() { + return expatriationAllowanceStartDate; + } + + public void setExpatriationAllowanceStartDate(LocalDate expatriationAllowanceStartDate) { + this.expatriationAllowanceStartDate = expatriationAllowanceStartDate; + } + + public LocalDate getExpatriationAllowanceEndDate() { + return expatriationAllowanceEndDate; + } + + public void setExpatriationAllowanceEndDate(LocalDate expatriationAllowanceEndDate) { + this.expatriationAllowanceEndDate = expatriationAllowanceEndDate; + } + + public Long getSojId() { + return sojId; + } + + public void setSojId(Long sojId) { + this.sojId = sojId; + } + + public String getOriginCountryCode() { + return originCountryCode; + } + + public void setOriginCountryCode(String originCountryCode) { + this.originCountryCode = originCountryCode; + } + + @Override + public String toString() { + return "VNewTravelAllowanceModel{" + + "id=" + perId + + ", id=" + id + + ", sojId=" + sojId + + ", jobId=" + jobId + + ", tojCd='" + tojCd + '\'' + + ", jobType='" + jobType + '\'' + + ", insCd='" + insCd + '\'' + + ", noSysper=" + noSysper + + ", title='" + title + '\'' + + ", surname='" + surname + '\'' + + ", genre='" + genre + '\'' + + ", userId='" + userId + '\'' + + ", moniker='" + moniker + '\'' + + ", domain='" + domain + '\'' + + ", displayName='" + displayName + '\'' + + ", jcxId=" + jcxId + + ", assStartDat=" + assStartDat + + ", assignEndDate=" + assignEndDate + + ", lstCd='" + lstCd + '\'' + + ", lstCode='" + lstCode + '\'' + + ", lstBegDate=" + lstBegDate + + ", lstAssDate=" + lstAssDate + + ", lstEndDate=" + lstEndDate + + ", cgrCd='" + cgrCd + '\'' + + ", orgId=" + orgId + + ", mainOrgId=" + mainOrgId + + ", orgName='" + orgName + '\'' + + ", orgCd='" + orgCd + '\'' + + ", orgDesc='" + orgDesc + '\'' + + ", torId=" + torId + + ", typeOfEntityName='" + typeOfEntityName + '\'' + + ", delegationName='" + delegationName + '\'' + + ", responsible='" + responsible + '\'' + + ", headOfEntity='" + headOfEntity + '\'' + + ", delegationOrgId=" + delegationOrgId + + ", jobCityCode='" + jobCityCode + '\'' + + ", jobCityName='" + jobCityName + '\'' + + ", jobCountryCode='" + jobCountryCode + '\'' + + ", jobCountryName='" + jobCountryName + '\'' + + ", iataCode='" + iataCode + '\'' + + ", expatriationAllowanceStartDate='" + expatriationAllowanceStartDate + '\'' + + ", expatriationAllowanceEndDate='" + expatriationAllowanceEndDate + '\'' + + '}'; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VPersonModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VPersonModel.java new file mode 100644 index 0000000..8d2a0a5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VPersonModel.java @@ -0,0 +1,280 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +import java.time.LocalDate; + +public class VPersonModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long perId; + + private String lastName; + + private String firstName; + + private String gender; + + private String email; + + private String originCity; + + private String originCountryDesc; + + private String originCountryCode; + + private String birthCity; + + private String birthCountryDesc; + + private String birthCountryCode; + + private String recruitmentCity; + + private String recruitmentCountry; + + private String organizationName; + + private String organizationCity; + + private String organizationCountry; + + private Long orgId; + + private Long jobId; + + private LocalDate assignedStartDate; + + private LocalDate earliestAssignedstartDate; + + private LocalDate assignedEndDate; + + private LocalDate latestAssignmentEndDate; + + private String orgCd; + + private String privateEmail; + + private String privateEmailSource; + + private String statutoryLinkCode; + + private String statutoryLinkDesc; + + public Long getPerId() { + return perId; + } + + public void setPerId(Long perId) { + this.perId = perId; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getOriginCity() { + return originCity; + } + + public void setOriginCity(String originCity) { + this.originCity = originCity; + } + + public String getOriginCountryDesc() { + return originCountryDesc; + } + + public void setOriginCountryDesc(String originCountryDesc) { + this.originCountryDesc = originCountryDesc; + } + + public String getOriginCountryCode() { + return originCountryCode; + } + + public void setOriginCountryCode(String originCountryCode) { + this.originCountryCode = originCountryCode; + } + + public String getBirthCity() { + return birthCity; + } + + public void setBirthCity(String birthCity) { + this.birthCity = birthCity; + } + + public String getBirthCountryDesc() { + return birthCountryDesc; + } + + public void setBirthCountryDesc(String birthCountryDesc) { + this.birthCountryDesc = birthCountryDesc; + } + + public String getBirthCountryCode() { + return birthCountryCode; + } + + public void setBirthCountryCode(String birthCountryCode) { + this.birthCountryCode = birthCountryCode; + } + + public String getRecruitmentCity() { + return recruitmentCity; + } + + public void setRecruitmentCity(String recruitmentCity) { + this.recruitmentCity = recruitmentCity; + } + + public String getRecruitmentCountry() { + return recruitmentCountry; + } + + public void setRecruitmentCountry(String recruitmentCountry) { + this.recruitmentCountry = recruitmentCountry; + } + + public String getOrganizationName() { + return organizationName; + } + + public void setOrganizationName(String organizationName) { + this.organizationName = organizationName; + } + + public String getOrganizationCity() { + return organizationCity; + } + + public void setOrganizationCity(String organizationCity) { + this.organizationCity = organizationCity; + } + + public String getOrganizationCountry() { + return organizationCountry; + } + + public void setOrganizationCountry(String organizationCountry) { + this.organizationCountry = organizationCountry; + } + + public Long getOrgId() { + return orgId; + } + + public void setOrgId(Long orgId) { + this.orgId = orgId; + } + + public Long getJobId() { + return jobId; + } + + public void setJobId(Long jobId) { + this.jobId = jobId; + } + + public LocalDate getAssignedStartDate() { + return assignedStartDate; + } + + public void setAssignedStartDate(LocalDate assignedStartDate) { + this.assignedStartDate = assignedStartDate; + } + + public LocalDate getEarliestAssignedstartDate() { + return earliestAssignedstartDate; + } + + public void setEarliestAssignedstartDate(LocalDate earliestAssignedstartDate) { + this.earliestAssignedstartDate = earliestAssignedstartDate; + } + + public LocalDate getAssignedEndDate() { + return assignedEndDate; + } + + public void setAssignedEndDate(LocalDate assignedEndDate) { + this.assignedEndDate = assignedEndDate; + } + + public LocalDate getLatestAssignmentEndDate() { + return latestAssignmentEndDate; + } + + public void setLatestAssignmentEndDate(LocalDate latestAssignmentEndDate) { + this.latestAssignmentEndDate = latestAssignmentEndDate; + } + + public String getOrgCd() { + return orgCd; + } + + public void setOrgCd(String orgCd) { + this.orgCd = orgCd; + } + + public String getPrivateEmail() { + return privateEmail; + } + + public void setPrivateEmail(String privateEmail) { + this.privateEmail = privateEmail; + } + + public String getPrivateEmailSource() { + return privateEmailSource; + } + + public void setPrivateEmailSource(String privateEmailSource) { + this.privateEmailSource = privateEmailSource; + } + + public String getStatutoryLinkCode() { + return statutoryLinkCode; + } + + public void setStatutoryLinkCode(String statutoryLinkCode) { + this.statutoryLinkCode = statutoryLinkCode; + } + + public String getStatutoryLinkDesc() { + return statutoryLinkDesc; + } + + public void setStatutoryLinkDesc(String statutoryLinkDesc) { + this.statutoryLinkDesc = statutoryLinkDesc; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VReportMovementFileModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VReportMovementFileModel.java new file mode 100644 index 0000000..e053e75 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/VReportMovementFileModel.java @@ -0,0 +1,292 @@ +package eu.europa.eeas.erights.common.service.model; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; + +import java.time.LocalDate; + +public class VReportMovementFileModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long id; + + private String fileId; + + private String lastName; + + private String firstName; + + private MovementFileState status; + + private LocalDate startDateFuture; + + private LocalDate endDateFuture; + + private String movementFrom; + + private String movementTo; + + private String budgetLineFuture; + + private String movementType; + + private Integer movementYear; + + private String movementContext; + + private Long perId; + + private String futureAssignment; + + private Boolean priority; + + private String allocatedToCurrent; + + private String allocatedToFuture; + + private Boolean reason; + + private Long delegationOrgIdFrom; + + private String followupFlags; + + private Long personnelTypeId; + + private String personnelTypeDesc; + + private String jobFunctionCode; + + private String jobFunctionDesc; + + private String institutionCode; + + private String institutionDesc; + + private Boolean jobToFamPosting; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getFileId() { + return fileId; + } + + public void setFileId(String fileId) { + this.fileId = fileId; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public LocalDate getStartDateFuture() { + return startDateFuture; + } + + public void setStartDateFuture(LocalDate startDateFuture) { + this.startDateFuture = startDateFuture; + } + + public LocalDate getEndDateFuture() { + return endDateFuture; + } + + public void setEndDateFuture(LocalDate endDateFuture) { + this.endDateFuture = endDateFuture; + } + + public String getMovementFrom() { + return movementFrom; + } + + public void setMovementFrom(String movementFrom) { + this.movementFrom = movementFrom; + } + + public String getMovementTo() { + return movementTo; + } + + public void setMovementTo(String movementTo) { + this.movementTo = movementTo; + } + + public String getBudgetLineFuture() { + return budgetLineFuture; + } + + public void setBudgetLineFuture(String budgetLineFuture) { + this.budgetLineFuture = budgetLineFuture; + } + + public String getMovementType() { + return movementType; + } + + public void setMovementType(String movementType) { + this.movementType = movementType; + } + + public Integer getMovementYear() { + return movementYear; + } + + public void setMovementYear(Integer movementYear) { + this.movementYear = movementYear; + } + + public String getMovementContext() { + return movementContext; + } + + public void setMovementContext(String movementContext) { + this.movementContext = movementContext; + } + + public Long getPerId() { + return perId; + } + + public void setPerId(Long perId) { + this.perId = perId; + } + + public String getFutureAssignment() { + return futureAssignment; + } + + public void setFutureAssignment(String futureAssignment) { + this.futureAssignment = futureAssignment; + } + + public Boolean getPriority() { + return priority; + } + + public void setPriority(Boolean priority) { + this.priority = priority; + } + + public String getAllocatedToCurrent() { + return allocatedToCurrent; + } + + public void setAllocatedToCurrent(String allocatedToCurrent) { + this.allocatedToCurrent = allocatedToCurrent; + } + + public String getAllocatedToFuture() { + return allocatedToFuture; + } + + public void setAllocatedToFuture(String allocatedToFuture) { + this.allocatedToFuture = allocatedToFuture; + } + + public Boolean getReason() { + return reason; + } + + public void setReason(Boolean reason) { + this.reason = reason; + } + + public MovementFileState getStatus() { + return status; + } + + public void setStatus(MovementFileState status) { + this.status = status; + } + + public Long getDelegationOrgIdFrom() { + return delegationOrgIdFrom; + } + + public void setDelegationOrgIdFrom(Long delegationOrgIdFrom) { + this.delegationOrgIdFrom = delegationOrgIdFrom; + } + + public String getFollowupFlags() { + return followupFlags; + } + + public void setFollowupFlags(String followupFlags) { + this.followupFlags = followupFlags; + } + + public Long getPersonnelTypeId() { + return personnelTypeId; + } + + public void setPersonnelTypeId(Long personnelTypeId) { + this.personnelTypeId = personnelTypeId; + } + + public String getPersonnelTypeDesc() { + return personnelTypeDesc; + } + + public void setPersonnelTypeDesc(String personnelTypeDesc) { + this.personnelTypeDesc = personnelTypeDesc; + } + + public String getJobFunctionCode() { + return jobFunctionCode; + } + + public void setJobFunctionCode(String jobFunctionCode) { + this.jobFunctionCode = jobFunctionCode; + } + + public String getJobFunctionDesc() { + return jobFunctionDesc; + } + + public void setJobFunctionDesc(String jobFunctionDesc) { + this.jobFunctionDesc = jobFunctionDesc; + } + + public String getInstitutionCode() { + return institutionCode; + } + + public void setInstitutionCode(String institutionCode) { + this.institutionCode = institutionCode; + } + + public String getInstitutionDesc() { + return institutionDesc; + } + + public void setInstitutionDesc(String institutionDesc) { + this.institutionDesc = institutionDesc; + } + + public Boolean getJobToFamPosting() { + return jobToFamPosting; + } + + public void setJobToFamPosting(Boolean jobToFamPosting) { + this.jobToFamPosting = jobToFamPosting; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/AccommodationAllowanceBaseModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/AccommodationAllowanceBaseModel.java new file mode 100644 index 0000000..6ee87d4 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/AccommodationAllowanceBaseModel.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.common.service.model.allowances; + + +import eu.europa.eeas.erights.common.service.model.declaration.PersonBankInfoModel; +import lombok.Getter; +import lombok.Setter; + +/** + * @author ienaccat + * @since 5.0.0 + */ +@Getter +@Setter +public class AccommodationAllowanceBaseModel extends PostingAllowanceBaseModel { + + private PersonBankInfoModel personBankInfo; + + private String paymentMethod; + + private String paymentPreferredCurrency; + + private Integer paymentPeriodicInterval; + + private Double monthlyRentalAmount; + + private String monthlyRentalCurrency; + + private Double monthlySecurityAmount; + + private String monthlySecurityAmountCurrency; + + private Double monthlyRecurrentCosts; + + private String monthlyRecurrentCostsCurrency; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/AccommodationDeclarationAllowanceModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/AccommodationDeclarationAllowanceModel.java new file mode 100644 index 0000000..d77c1a3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/AccommodationDeclarationAllowanceModel.java @@ -0,0 +1,41 @@ +package eu.europa.eeas.erights.common.service.model.allowances; + +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.AccommodationDeclarationPersonJpaEntity; +import eu.europa.eeas.erights.common.service.model.declaration.PersonBankInfoModel; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationDeclarationState; +import java.time.LocalDate; +import java.util.List; +import lombok.Getter; +import lombok.Setter; + +/** + * @author ienaccat + * @since 5.0.0 + */ +@Getter +@Setter +public class AccommodationDeclarationAllowanceModel extends AccommodationAllowanceBaseModel { + + private AccommodationDeclarationState state; + + private LocalDate rentalContractStartDate; + + private LocalDate rentalContractEndDate; + + private Double monthlyRentalAmountCeiling; + + private String monthlyRecurrentCostsDescription; + + private Double guaranteeAmount; + + private String guaranteeAmountCurrency; + + private Integer guaranteeReimbursementPeriod; + + private Double remainingGuaranteeToReimburse; + + private String remainingGuaranteeToReimburseCurrency; + + private List familyMembers; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/AccommodationDeclarationPersonModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/AccommodationDeclarationPersonModel.java new file mode 100644 index 0000000..525be05 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/AccommodationDeclarationPersonModel.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.common.service.model.allowances; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import eu.europa.eeas.erights.common.service.model.PersonAddressModel; +import eu.europa.eeas.erights.common.service.model.PersonModel; +import lombok.Getter; +import lombok.Setter; + +/** + * @author ienaccat + * @since 5.0.0 + */ +@Getter +@Setter +public class AccommodationDeclarationPersonModel extends AbstractAuditableModel { + + private Long id; + + private Boolean joiningAccommodation = false; + + private PersonModel person; + + private PersonModel relative; + + private String relation; + + private PersonAddressModel address; + + private AccommodationDeclarationAllowanceModel accommodationDeclaration; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/AccommodationPaymentAllowanceModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/AccommodationPaymentAllowanceModel.java new file mode 100644 index 0000000..aea029e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/AccommodationPaymentAllowanceModel.java @@ -0,0 +1,67 @@ +package eu.europa.eeas.erights.common.service.model.allowances; + +import eu.europa.eeas.erights.common.service.model.declaration.PersonBankInfoModel; +import eu.europa.eeas.erights.common.tools.statemachine.AbacRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationPaymentState; +import java.time.LocalDate; +import javax.persistence.Column; +import lombok.Getter; +import lombok.Setter; +import org.apache.commons.lang3.StringUtils; + +/** + * @author ienaccat + * @since 5.0.0 + */ +@Getter +@Setter +public class AccommodationPaymentAllowanceModel extends AccommodationAllowanceBaseModel { + + private AccommodationPaymentState state; + + private LocalDate rentalCoverStartDate; + + private LocalDate rentalCoverEndDate; + + private Double nonRecurrentCosts; + + private String nonRecurrentCostsCurrency; + + private String nonRecurrentCostsDescription; + + private Double multiplyingFactor; + + private Double guaranteeReimbursedAmount; + + private String guaranteeReimbursedAmountCurrency; + + private Double remainingGuaranteeToReimburse; + + private String remainingGuaranteeToReimburseCurrency; + + private String abacPaymentOrder; + + private String abacPaymentRequest; + + private LocalDate abacPaymentDate; + + private AbacRequestState abacState; + + private String abacWorkflowState; + + private Double accommodationTotalAmount; + + private String accommodationTotalCurrency; + + private Double accommodationSubTotalAmount; + + private String accommodationSubTotalCurrency; + + private String budgetLine; + + public boolean isAbacPayment() { + return StringUtils.isNotBlank(this.abacPaymentOrder) && StringUtils.isNotBlank( + this.abacPaymentRequest); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/AccommodationPaymentCalculationResponseModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/AccommodationPaymentCalculationResponseModel.java new file mode 100644 index 0000000..b2ea091 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/AccommodationPaymentCalculationResponseModel.java @@ -0,0 +1,30 @@ +package eu.europa.eeas.erights.common.service.model.allowances; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.javamoney.moneta.Money; + +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AccommodationPaymentCalculationResponseModel extends AbstractModel { + + private Double multiplyingFactor; + private Double guaranteeReimbursedAmount; + private String guaranteeReimbursedAmountCurrency; + private Double remainingGuaranteeToReimburse; + private String remainingGuaranteeToReimburseCurrency; + private Double alreadyReimbursedGuaranteeAmount; + private String alreadyReimbursedGuaranteeAmountCurrency; + private Double monthlyRentalAmount; + private String monthlyRentalCurrency; + private Double monthlySecurityAmount; + private Double monthlyRecurrentCosts; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceAmountsModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceAmountsModel.java new file mode 100644 index 0000000..0cbb277 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceAmountsModel.java @@ -0,0 +1,26 @@ +package eu.europa.eeas.erights.common.service.model.allowances; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import org.javamoney.moneta.Money; + +public class PostingAllowanceAmountsModel extends AbstractModel { + + private Money outgoingTripAmount; + private Money returnTripAmount; + + public Money getoutgoingTripAmount() { + return outgoingTripAmount; + } + + public void setoutgoingTripAmount(Money outgoingTripAmount) { + this.outgoingTripAmount = outgoingTripAmount; + } + + public Money getReturnTripAmount() { + return returnTripAmount; + } + + public void setReturnTripAmount(Money returnTripAmount) { + this.returnTripAmount = returnTripAmount; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceBaseModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceBaseModel.java new file mode 100644 index 0000000..f0a6a04 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceBaseModel.java @@ -0,0 +1,138 @@ +package eu.europa.eeas.erights.common.service.model.allowances; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceSupportingDocJpaEntity; +import eu.europa.eeas.erights.common.service.model.VPersonModel; +import java.time.LocalDate; +import java.util.LinkedList; +import java.util.List; +import java.util.UUID; +import lombok.Getter; +import lombok.Setter; +import org.javamoney.moneta.Money; + +/** + * @author ienccat + */ +@Getter +@Setter +public class PostingAllowanceBaseModel extends AbstractAuditableModel { + + private Long id; + + private Long sojId; + + private VPersonModel staffMember; + + private Long postingAllowanceNumber; + + private Integer exerciseYear; + + private String postingAllowanceStringId; + + private String postingAllowanceType; + + private String PostingAllowanceReqType; + + private Long parentPostingAllowanceId; + + private String parentPostingAllowanceIdString; + + private String comments; + + private Money outgoingTripAmount; + + private Money returnTripAmount; + + private Money calcTotalAmount; + + private Money totalAmount; + + private Integer paymentPeriodYear; + + private Integer paymentPeriodMonth; + + private Integer originPeriodYear; + + private Integer originPeriodMonth; + + private String paymentReference; + + private String paymentState; + + private String assignmentCountryCode; + + private String assignmentCityCode; + + private String assignmentIataCode; + + private String assignmentCityName; + + private String originCityCode; + + private String originCountryCode; + + private String originCityName; + + private String originIataCode; + + private String recruimentCityCode; + + private String recruimentCountryCode; + + private String recruimentCityName; + + private String recruimentIataCode; + + private UUID smId; + + private String status; + + private String postingAllowanceDiscriminatoryType; + + private Long delegationOrgId; + + private String originCountryName; + + private String assignmentCountryName; + + private LocalDate assignmentStartDate ; + + private Long spouseId; + + private Boolean doublePosting; + + private String paymentId; + + private String paymentEventId; + + private String placeOfOrigin; + + private String dualPosting; + + private String assignmentAirportName; + + private String originAirportName; + + private LocalDate expatriationAllowanceStartDate; + + private LocalDate expatriationAllowanceEndDate; + + private LocalDate assignmentEndDate; + + private String firstNationality; + + private String iataCodeFrom; + + private String iataCodeTo; + + private boolean saveChanges; + + private Long childPostingAllowanceId; + + private String childPostingAllowanceStringId; + + private List supportingDocs = new LinkedList<>(); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceBatchEventModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceBatchEventModel.java new file mode 100644 index 0000000..01afe2b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceBatchEventModel.java @@ -0,0 +1,34 @@ +package eu.europa.eeas.erights.common.service.model.allowances; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +public class PostingAllowanceBatchEventModel extends AbstractModel { + + private Long postingAllowanceId; + private String postingAllowanceStringId; + private String message; + + public Long getPostingAllowanceId() { + return postingAllowanceId; + } + + public void setPostingAllowanceId(Long postingAllowanceId) { + this.postingAllowanceId = postingAllowanceId; + } + + public String getPostingAllowanceStringId() { + return postingAllowanceStringId; + } + + public void setPostingAllowanceStringId(String postingAllowanceStringId) { + this.postingAllowanceStringId = postingAllowanceStringId; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceBatchEventResponseModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceBatchEventResponseModel.java new file mode 100644 index 0000000..5e8920d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceBatchEventResponseModel.java @@ -0,0 +1,63 @@ +package eu.europa.eeas.erights.common.service.model.allowances; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +import java.util.List; + +public class PostingAllowanceBatchEventResponseModel extends AbstractModel { + + private List success; + private List failed; + private String failedMessage; + private String successMessage; + private Integer numberOfSuccess; + private Integer numberOfFailed; + + public List getSuccess() { + return success; + } + + public void setSuccess(List success) { + this.success = success; + } + + public List getFailed() { + return failed; + } + + public void setFailed(List failed) { + this.failed = failed; + } + + public String getFailedMessage() { + return failedMessage; + } + + public void setFailedMessage(String failedMessage) { + this.failedMessage = failedMessage; + } + + public String getSuccessMessage() { + return successMessage; + } + + public void setSuccessMessage(String successMessage) { + this.successMessage = successMessage; + } + + public Integer getNumberOfSuccess() { + return numberOfSuccess; + } + + public void setNumberOfSuccess(Integer numberOfSuccess) { + this.numberOfSuccess = numberOfSuccess; + } + + public Integer getNumberOfFailed() { + return numberOfFailed; + } + + public void setNumberOfFailed(Integer numberOfFailed) { + this.numberOfFailed = numberOfFailed; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceDefaultModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceDefaultModel.java new file mode 100644 index 0000000..fac0fce --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceDefaultModel.java @@ -0,0 +1,137 @@ +package eu.europa.eeas.erights.common.service.model.allowances; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import org.javamoney.moneta.Money; + +public class PostingAllowanceDefaultModel extends AbstractModel { + + private Long id; + + private String postingAllowanceType; + + private String postingAllowanceReqType; + + private String cityCodeTo; + + private String cityCodeFrom; + + private String countryCodeTo; + + private String countryCodeFrom; + + private String iataCodeFrom; + + private String iataCodeTo; + + private Money amount; + + private Integer exerciseYear; + + private Boolean latest; + + private String sourceData; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getPostingAllowanceType() { + return postingAllowanceType; + } + + public void setPostingAllowanceType(String postingAllowanceType) { + this.postingAllowanceType = postingAllowanceType; + } + + public String getPostingAllowanceReqType() { + return postingAllowanceReqType; + } + + public void setPostingAllowanceReqType(String postingAllowanceReqType) { + this.postingAllowanceReqType = postingAllowanceReqType; + } + + public String getCityCodeTo() { + return cityCodeTo; + } + + public void setCityCodeTo(String cityCodeTo) { + this.cityCodeTo = cityCodeTo; + } + + public String getCityCodeFrom() { + return cityCodeFrom; + } + + public void setCityCodeFrom(String cityCodeFrom) { + this.cityCodeFrom = cityCodeFrom; + } + + public String getCountryCodeTo() { + return countryCodeTo; + } + + public void setCountryCodeTo(String countryCodeTo) { + this.countryCodeTo = countryCodeTo; + } + + public String getCountryCodeFrom() { + return countryCodeFrom; + } + + public void setCountryCodeFrom(String countryCodeFrom) { + this.countryCodeFrom = countryCodeFrom; + } + + public Money getAmount() { + return amount; + } + + public void setAmount(Money amount) { + this.amount = amount; + } + + public Integer getExerciseYear() { + return exerciseYear; + } + + public void setExerciseYear(Integer exerciseYear) { + this.exerciseYear = exerciseYear; + } + + public Boolean getLatest() { + return latest; + } + + public void setLatest(Boolean latest) { + this.latest = latest; + } + + public String getSourceData() { + return sourceData; + } + + public void setSourceData(String sourceData) { + this.sourceData = sourceData; + } + + public String getIataCodeFrom() { + return iataCodeFrom; + } + + public void setIataCodeFrom(String iataCodeFrom) { + this.iataCodeFrom = iataCodeFrom; + } + + public String getIataCodeTo() { + return iataCodeTo; + } + + public void setIataCodeTo(String iataCodeTo) { + this.iataCodeTo = iataCodeTo; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceModel.java new file mode 100644 index 0000000..ebdaea6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceModel.java @@ -0,0 +1,13 @@ +package eu.europa.eeas.erights.common.service.model.allowances; + +import eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceState; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PostingAllowanceModel extends PostingAllowanceBaseModel { + + private PostingAllowanceState state; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowancePersonModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowancePersonModel.java new file mode 100644 index 0000000..eec63eb --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowancePersonModel.java @@ -0,0 +1,43 @@ +package eu.europa.eeas.erights.common.service.model.allowances; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import eu.europa.eeas.erights.common.tools.allowances.TravelAllowanceRoute; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.javamoney.moneta.Money; + +import java.time.LocalDate; +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PostingAllowancePersonModel extends AbstractAuditableModel { + private Long id; + private Long postingAllowanceId; + private LocalDate dateOfBirth; + private TravelAllowanceRoute route; + private Long perId; + private Long relPerId; + private Long trcCd; + private String trcCode; + private Money tripAmount; + private Integer entitledMonths; + private Money totalAmount; + private String cityFrom; + private String countryFrom; + private String iataCodeFrom; + private String cityTo; + private String countryTo; + private String iataCodeTo; + private String remarks; + private String firstName; + private String surname; + private Boolean workInDelegation; + private Boolean workInHQ; + private Long orderTypeOfPerson; + private String dualPosting; + private String firstNationality; +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceSupportingDocAttachmentModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceSupportingDocAttachmentModel.java new file mode 100644 index 0000000..fdf2a3f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceSupportingDocAttachmentModel.java @@ -0,0 +1,18 @@ +package eu.europa.eeas.erights.common.service.model.allowances; + +import eu.europa.eeas.erights.common.service.model.AbstractAttachmentModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestSupportingDocModel; +import lombok.Getter; +import lombok.Setter; + + +/** + * @author ienaccat + */ +@Getter +@Setter +public class PostingAllowanceSupportingDocAttachmentModel extends AbstractAttachmentModel { + + private PostingAllowanceSupportingDocModel postingAllowanceSupportingDoc; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceSupportingDocModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceSupportingDocModel.java new file mode 100644 index 0000000..3b958dc --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/PostingAllowanceSupportingDocModel.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.common.service.model.allowances; + +import eu.europa.eeas.erights.common.service.model.AbstractSupportingDocModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestSupportingDocAttachmentModel; +import java.util.List; +import lombok.Getter; +import lombok.Setter; + +/** + * @author ienaccat + */ +@Getter +@Setter +public class PostingAllowanceSupportingDocModel extends AbstractSupportingDocModel { + + private PostingAllowanceModel postingAllowance; + + private List attachments; + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/RegularizationAllowanceModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/RegularizationAllowanceModel.java new file mode 100644 index 0000000..5e9cc2b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/RegularizationAllowanceModel.java @@ -0,0 +1,18 @@ +package eu.europa.eeas.erights.common.service.model.allowances; + +import java.util.List; +import lombok.Getter; +import lombok.Setter; +import org.javamoney.moneta.Money; + +@Getter +@Setter +public class RegularizationAllowanceModel extends PostingAllowanceModel { + + private List postingAllowancePersons; + private Money newTotalAmount; + private Money initialTotalAmount; + private Money regularizeAmount; + private boolean copiedDependenciesFromPreviousAllowance; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/TravelAllowanceModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/TravelAllowanceModel.java new file mode 100644 index 0000000..23a4c96 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/TravelAllowanceModel.java @@ -0,0 +1,19 @@ +package eu.europa.eeas.erights.common.service.model.allowances; + +import eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceState; +import java.util.List; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class TravelAllowanceModel extends PostingAllowanceModel { + + private List postingAllowancePersons; + //skip validation for rejection + private boolean validationDone; + + private boolean regularizationCreated; + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/VReportPostingAllowanceModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/VReportPostingAllowanceModel.java new file mode 100644 index 0000000..a330d1d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/allowances/VReportPostingAllowanceModel.java @@ -0,0 +1,117 @@ +package eu.europa.eeas.erights.common.service.model.allowances; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import java.time.LocalDate; +import java.util.UUID; +import lombok.Getter; +import lombok.Setter; +import org.javamoney.moneta.Money; + +@Getter +@Setter +public class VReportPostingAllowanceModel extends AbstractAuditableModel { + + private Long id; + + private Long perId; + + private Long postingAllowanceNumber; + + private Integer exerciseYear; + + private String postingAllowanceStringId; + + private String postingAllowanceType; + + private String PostingAllowanceReqType; + + private Long parentPostingAllowanceId; + + private String comments; + + private Money outgoingTripAmount; + + private Money returnTripAmount; + + private Money calcTotalAmount; + + private Money totalAmount; + + private Integer paymentPeriodYear; + + private Integer paymentPeriodMonth; + + private Integer originPeriodYear; + + private Integer originPeriodMonth; + + private String paymentReference; + + private String paymentState; + + private String assignmentCountryCode; + + private String assignmentCityCode; + + private String assignmentIataCode; + + private String assignmentCityName; + + private String originCityCode; + + private String originCountryCode; + + private String originCityName; + + private String originIataCode; + + private String recruimentCityCode; + + private String recruimentCountryCode; + + private String recruimentCityName; + + private String recruimentIataCode; + + private UUID smId; + + private String status; + + private String postingAllowanceDiscriminatoryType; + + private Long delegationOrgId; + + private String originCountryName; + + private String assignmentCountryName; + + private String firstName; + + private String lastName; + + private LocalDate assignmentStartDate; + + private String assignmentPace; + + private LocalDate paymentPeriod; + + private LocalDate originPeriod; + + private Long spouseId; + + private Boolean doublePosting; + + private String dualPosting; + + private String placeOfOrigin; + + private String assignmentAirportName; + + private String originAirportName; + + private String originAirportLocationName; + + private String firstNationality; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/comments/CommentForMovementFileModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/comments/CommentForMovementFileModel.java new file mode 100644 index 0000000..7963a2f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/comments/CommentForMovementFileModel.java @@ -0,0 +1,7 @@ +package eu.europa.eeas.erights.common.service.model.comments; + +public class CommentForMovementFileModel extends CommentModel { + + private static final long serialVersionUID = 1L; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/comments/CommentForPostingAllowanceModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/comments/CommentForPostingAllowanceModel.java new file mode 100644 index 0000000..a2a46aa --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/comments/CommentForPostingAllowanceModel.java @@ -0,0 +1,7 @@ +package eu.europa.eeas.erights.common.service.model.comments; + +public class CommentForPostingAllowanceModel extends CommentModel { + + private static final long serialVersionUID = 1L; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/comments/CommentForRequestModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/comments/CommentForRequestModel.java new file mode 100644 index 0000000..8cf4e99 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/comments/CommentForRequestModel.java @@ -0,0 +1,7 @@ +package eu.europa.eeas.erights.common.service.model.comments; + +public class CommentForRequestModel extends CommentModel { + + private static final long serialVersionUID = 1L; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/comments/CommentForSupportingDocModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/comments/CommentForSupportingDocModel.java new file mode 100644 index 0000000..6c5b453 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/comments/CommentForSupportingDocModel.java @@ -0,0 +1,10 @@ +package eu.europa.eeas.erights.common.service.model.comments; + +/** + * @author ienaccat + */ +public class CommentForSupportingDocModel extends CommentModel { + + private static final long serialVersionUID = 1L; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/comments/CommentModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/comments/CommentModel.java new file mode 100644 index 0000000..456ab0c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/comments/CommentModel.java @@ -0,0 +1,77 @@ +package eu.europa.eeas.erights.common.service.model.comments; + +import java.io.Serializable; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; + +public class CommentModel extends AbstractAuditableModel implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + private String commentText; + private String commentType; + private Long entityId; + private Long displayOrder; + private Boolean deleted; + private String authorName; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCommentText() { + return commentText; + } + + public void setCommentText(String commentText) { + this.commentText = commentText; + } + + public String getCommentType() { + return commentType; + } + + public void setCommentType(String commentType) { + this.commentType = commentType; + } + + public Long getEntityId() { + return entityId; + } + + public void setEntityId(Long entityId) { + this.entityId = entityId; + } + + public Long getDisplayOrder() { + return displayOrder; + } + + public void setDisplayOrder(Long displayOrder) { + this.displayOrder = displayOrder; + } + + public Boolean getDeleted() { + return deleted; + } + + public void setDeleted(Boolean deleted) { + this.deleted = deleted; + } + + public String getAuthorName() { + return authorName; + } + + public void setAuthorName(String authorName) { + this.authorName = authorName; + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/DeclarationModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/DeclarationModel.java new file mode 100644 index 0000000..614f58e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/DeclarationModel.java @@ -0,0 +1,181 @@ +package eu.europa.eeas.erights.common.service.model.declaration; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import eu.europa.eeas.erights.common.service.model.CityModel; +import eu.europa.eeas.erights.common.service.model.CountryModel; +import eu.europa.eeas.erights.common.service.model.PersonModel; +import eu.europa.eeas.erights.common.tools.removal.RemovalRequestType; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +public class DeclarationModel extends AbstractAuditableModel implements Serializable { + + /** + * Default value + */ + private static final long serialVersionUID = 1L; + + private Long id; + + private Long movementFileId; + + private PersonBankInfoModel personBankInfo; + + private Boolean enable; + + private DeclarationState state; + + private LocalDateTime userCreatedAt; + + private LocalDateTime userUpdatedAt; + + private List declarationPersons; + + private PersonModel staffMember; + + private CountryModel countryForEIS; + + private CityModel cityForEIS; + + private RemovalRequestType removalRequestType; + + private String hodOption; + + private Boolean entryIntoStorage; + + private BigDecimal volumeAirFreightCeiling; + + private BigDecimal kgAirFreightCeiling; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public List getDeclarationPersons() { + return declarationPersons; + } + + public void setDeclarationPersons(List declarationPersons) { + this.declarationPersons = declarationPersons; + } + + public Long getMovementFileId() { + return movementFileId; + } + + public void setMovementFileId(Long movementFileId) { + this.movementFileId = movementFileId; + } + + public PersonBankInfoModel getPersonBankInfo() { + return personBankInfo; + } + + public void setPersonBankInfo(PersonBankInfoModel personBankInfo) { + this.personBankInfo = personBankInfo; + } + + public Boolean getEnable() { + return enable; + } + + public void setEnable(Boolean enable) { + this.enable = enable; + } + + public DeclarationState getState() { + return state; + } + + public void setState(DeclarationState state) { + this.state = state; + } + + public LocalDateTime getUserCreatedAt() { + return userCreatedAt; + } + + public void setUserCreatedAt(LocalDateTime userCreatedAt) { + this.userCreatedAt = userCreatedAt; + } + + public LocalDateTime getUserUpdatedAt() { + return userUpdatedAt; + } + + public void setUserUpdatedAt(LocalDateTime userUpdatedAt) { + this.userUpdatedAt = userUpdatedAt; + } + + public PersonModel getStaffMember() { + return staffMember; + } + + public void setStaffMember(PersonModel staffMember) { + this.staffMember = staffMember; + } + + public RemovalRequestType getRemovalRequestType() { + return removalRequestType; + } + + public void setRemovalRequestType(RemovalRequestType removalRequestType) { + this.removalRequestType = removalRequestType; + } + + public String getHodOption() { + return hodOption; + } + + public void setHodOption(String hodOption) { + this.hodOption = hodOption; + } + + public Boolean getEntryIntoStorage() { + return entryIntoStorage; + } + + public void setEntryIntoStorage(Boolean entryIntoStorage) { + this.entryIntoStorage = entryIntoStorage; + } + + public CountryModel getCountryForEIS() { + return countryForEIS; + } + + public void setCountryForEIS(CountryModel countryForEIS) { + this.countryForEIS = countryForEIS; + } + + public CityModel getCityForEIS() { + return cityForEIS; + } + + public void setCityForEIS(CityModel cityForEIS) { + this.cityForEIS = cityForEIS; + } + + public BigDecimal getVolumeAirFreightCeiling() { + return volumeAirFreightCeiling; + } + + public void setVolumeAirFreightCeiling(BigDecimal volumeAirFreightCeiling) { + this.volumeAirFreightCeiling = volumeAirFreightCeiling; + } + + public BigDecimal getKgAirFreightCeiling() { + return kgAirFreightCeiling; + } + + public void setKgAirFreightCeiling(BigDecimal kgAirFreightCeiling) { + this.kgAirFreightCeiling = kgAirFreightCeiling; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/DeclarationPersonAttachmentModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/DeclarationPersonAttachmentModel.java new file mode 100644 index 0000000..b736d06 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/DeclarationPersonAttachmentModel.java @@ -0,0 +1,16 @@ +package eu.europa.eeas.erights.common.service.model.declaration; + +import eu.europa.eeas.erights.common.service.model.AbstractAttachmentModel; + +public class DeclarationPersonAttachmentModel extends AbstractAttachmentModel { + + private Long declarationPersonId; + + public Long getDeclarationPersonId() { + return declarationPersonId; + } + + public void setDeclarationPersonId(Long declarationPersonId) { + this.declarationPersonId = declarationPersonId; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/DeclarationPersonModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/DeclarationPersonModel.java new file mode 100644 index 0000000..facb54c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/DeclarationPersonModel.java @@ -0,0 +1,150 @@ +package eu.europa.eeas.erights.common.service.model.declaration; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import eu.europa.eeas.erights.common.service.model.PersonModel; + +import java.util.List; + +public class DeclarationPersonModel extends AbstractAuditableModel { + + private Long id; + + private DeclarationModel declaration; + + private Boolean insEligible = false; + + private Boolean remEligible = false; + + private Boolean tudEligible = false; + + private String tudEligibleReason; + + private Boolean declared = false; + + private Boolean joiningResettlement = false; + + private String remarks; + + private PersonModel person; + + private PersonModel relative; + + private String relation; + + private List attachments; + + private Boolean claim = false; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public PersonModel getPerson() { + return person; + } + + public void setPerson(PersonModel person) { + this.person = person; + } + + public PersonModel getRelative() { + return relative; + } + + public void setRelative(PersonModel relative) { + this.relative = relative; + } + + public String getRelation() { + return relation; + } + + public void setRelation(String relation) { + this.relation = relation; + } + + public DeclarationModel getDeclaration() { + return declaration; + } + + public void setDeclaration(DeclarationModel declaration) { + this.declaration = declaration; + } + + public Boolean getInsEligible() { + return insEligible; + } + + public void setInsEligible(Boolean insEligible) { + this.insEligible = insEligible; + } + + public Boolean getRemEligible() { + return remEligible; + } + + public void setRemEligible(Boolean remEligible) { + this.remEligible = remEligible; + } + + public Boolean getTudEligible() { + return tudEligible; + } + + public void setTudEligible(Boolean tudEligible) { + this.tudEligible = tudEligible; + } + + public Boolean getDeclared() { + return declared; + } + + public void setDeclared(Boolean declared) { + this.declared = declared; + } + + public Boolean getJoiningResettlement() { + return joiningResettlement; + } + + public void setJoiningResettlement(Boolean joiningResettlement) { + this.joiningResettlement = joiningResettlement; + } + + public List getAttachments() { + return attachments; + } + + public void setAttachments(List attachments) { + this.attachments = attachments; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public Boolean getClaim() { + return claim; + } + + public void setClaim(Boolean claim) { + this.claim = claim; + } + + public String getTudEligibleReason() { + return tudEligibleReason; + } + + public void setTudEligibleReason(String tudEligibleReason) { + this.tudEligibleReason = tudEligibleReason; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/DeclarationState.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/DeclarationState.java new file mode 100644 index 0000000..f0fbd84 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/DeclarationState.java @@ -0,0 +1,7 @@ +package eu.europa.eeas.erights.common.service.model.declaration; + +public enum DeclarationState { + INITIAL, + CREATED, + UPDATED +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/FamilyMemberModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/FamilyMemberModel.java new file mode 100644 index 0000000..d3e1597 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/FamilyMemberModel.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.common.service.model.declaration; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class FamilyMemberModel extends AbstractModel { + private String id; + private Long perId; + private String surname; + private LocalDate birthDate; + private String relSurname; + private String relFirstName; + private LocalDate relBirthDate; + private Long relPerId; + private String relation; + private Integer relAge; + private Boolean childAllowanceGranted; + private Boolean moreThan2YearsOld; + private Boolean houseHoldAllowanceGranted; + private Boolean relativeWorkInDelegation; + private Boolean relativeWorkInHQ; + private Long trpCD; +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/MVPersonAccommodationModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/MVPersonAccommodationModel.java new file mode 100644 index 0000000..07c879c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/MVPersonAccommodationModel.java @@ -0,0 +1,70 @@ +package eu.europa.eeas.erights.common.service.model.declaration; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import java.time.LocalDate; +import lombok.Getter; +import lombok.Setter; + +/** + * @author ienaccat + * @since 5.0.0 + */ +@Getter +@Setter +public class MVPersonAccommodationModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long perId; + + private String lastName; + + private String firstName; + + private String gender; + + private String email; + + private String originCity; + + private String originCountryDesc; + + private String originCountryCode; + + private String birthCity; + + private String birthCountryDesc; + + private String birthCountryCode; + + private String recruitmentCity; + + private String recruitmentCountry; + + private String organizationName; + + private String organizationCity; + + private String organizationCountry; + + private Long orgId; + + private Long jobId; + + private LocalDate assignedStartDate; + + private LocalDate assignedEndDate; + + private Long sojId; + + private String orgCd; + + private String privateEmail; + + private String privateEmailSource; + + private String statutoryLinkCode; + + private String statutoryLinkDesc; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/PersonBankInfoModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/PersonBankInfoModel.java new file mode 100644 index 0000000..4a0192a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/PersonBankInfoModel.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.common.service.model.declaration; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import lombok.Getter; +import lombok.Setter; + + +@Getter +@Setter +public class PersonBankInfoModel extends AbstractModel { + + private Long id; + + private String ibanCode; + + private Long perId; + + private String bankAccountCode; + + private String lef; + + private String baf; + + private String legalEntity; + + private String bankName; + + private Long mainBankAccount; + + private String accountHolder; + + private String accountCurrency; + + private String businessPartner; + + private String bankIdentification; + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/TudEligibilityModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/TudEligibilityModel.java new file mode 100644 index 0000000..bbe141f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/declaration/TudEligibilityModel.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.common.service.model.declaration; + +public class TudEligibilityModel { + + private Boolean tudEligible; + + private String tudNoEligibilityReason; + + public TudEligibilityModel() { + } + + public TudEligibilityModel(Boolean tudEligible, String tudNoEligibilityReason) { + this.tudEligible = tudEligible; + this.tudNoEligibilityReason = tudNoEligibilityReason; + } + + public Boolean getTudEligible() { + return tudEligible; + } + + public void setTudEligible(Boolean tudEligible) { + this.tudEligible = tudEligible; + } + + public String getTudNoEligibilityReason() { + return tudNoEligibilityReason; + } + + public void setTudNoEligibilityReason(String tudNoEligibilityReason) { + this.tudNoEligibilityReason = tudNoEligibilityReason; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/document/MovementDocAttachmentModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/document/MovementDocAttachmentModel.java new file mode 100644 index 0000000..97027b5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/document/MovementDocAttachmentModel.java @@ -0,0 +1,17 @@ +package eu.europa.eeas.erights.common.service.model.document; + +import eu.europa.eeas.erights.common.service.model.AbstractAttachmentModel; + +public class MovementDocAttachmentModel extends AbstractAttachmentModel { + + private MovementDocModel movementDoc; + + public MovementDocModel getMovementDoc() { + return movementDoc; + } + + public void setMovementDoc(MovementDocModel movementDoc) { + this.movementDoc = movementDoc; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/document/MovementDocModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/document/MovementDocModel.java new file mode 100644 index 0000000..c9bc935 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/document/MovementDocModel.java @@ -0,0 +1,88 @@ +package eu.europa.eeas.erights.common.service.model.document; + +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; + +public class MovementDocModel extends AbstractAuditableModel { + + private static final long serialVersionUID = 1L; + + private Long id; + + private MovementDocSectionModel movementDocSection; + + private String description; + + private String linkText; + + private Boolean link; + + private Integer sortOrder; + + private MovementDocAttachmentModel movementDocAttachment; + + private Boolean enabled; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public MovementDocSectionModel getMovementDocSection() { + return movementDocSection; + } + + public void setMovementDocSection(MovementDocSectionModel movementDocSection) { + this.movementDocSection = movementDocSection; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getLinkText() { + return linkText; + } + + public void setLinkText(String linkText) { + this.linkText = linkText; + } + + public Boolean getLink() { + return link; + } + + public void setLink(Boolean link) { + this.link = link; + } + + public Integer getSortOrder() { + return sortOrder; + } + + public void setSortOrder(Integer sortOrder) { + this.sortOrder = sortOrder; + } + + public MovementDocAttachmentModel getMovementDocAttachment() { + return movementDocAttachment; + } + + public void setMovementDocAttachment(MovementDocAttachmentModel movementDocAttachment) { + this.movementDocAttachment = movementDocAttachment; + } + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/document/MovementDocSectionModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/document/MovementDocSectionModel.java new file mode 100644 index 0000000..7f9bb9d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/document/MovementDocSectionModel.java @@ -0,0 +1,90 @@ +package eu.europa.eeas.erights.common.service.model.document; + +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import eu.europa.eeas.erights.common.service.model.MovementContextModel; +import eu.europa.eeas.erights.common.service.model.MovementTypeModel; + +import java.util.List; + +public class MovementDocSectionModel extends AbstractAuditableModel { + + private Long id; + + private String descriptor; + + private MovementTypeModel movementType; + + private MovementContextModel movementContext; + + private Boolean hod; + + private Boolean nonFamilyPosting; + + private Integer sortOrder; + + private List movementDocs; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDescriptor() { + return descriptor; + } + + public void setDescriptor(String descriptor) { + this.descriptor = descriptor; + } + + public MovementTypeModel getMovementType() { + return movementType; + } + + public void setMovementType(MovementTypeModel movementType) { + this.movementType = movementType; + } + + public MovementContextModel getMovementContext() { + return movementContext; + } + + public void setMovementContext(MovementContextModel movementContext) { + this.movementContext = movementContext; + } + + public Boolean getHod() { + return hod; + } + + public void setHod(Boolean hod) { + this.hod = hod; + } + + public Boolean getNonFamilyPosting() { + return nonFamilyPosting; + } + + public void setNonFamilyPosting(Boolean nonFamilyPosting) { + this.nonFamilyPosting = nonFamilyPosting; + } + + public Integer getSortOrder() { + return sortOrder; + } + + public void setSortOrder(Integer sortOrder) { + this.sortOrder = sortOrder; + } + + public List getMovementDocs() { + return movementDocs; + } + + public void setMovementDocs(List movementDocs) { + this.movementDocs = movementDocs; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementMaxCatModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementMaxCatModel.java new file mode 100644 index 0000000..132c13b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementMaxCatModel.java @@ -0,0 +1,97 @@ +package eu.europa.eeas.erights.common.service.model.entitlement; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode; + +public class EntitlementMaxCatModel extends AbstractModel { + + private Long id; + + private Long entitlementTypeCatId; + + private String description; + + private EntitlementMaxCatCode code; + + private Boolean nonFamilyPosting; + + private Boolean jobToNonFamilyPosting; + + private Boolean hod; + + private Boolean suggestion; + + private Integer order; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Long getEntitlementTypeCatId() { + return entitlementTypeCatId; + } + + public void setEntitlementTypeCatId(Long entitlementTypeCatId) { + this.entitlementTypeCatId = entitlementTypeCatId; + } + + public EntitlementMaxCatCode getCode() { + return code; + } + + public void setCode(EntitlementMaxCatCode code) { + this.code = code; + } + + public Boolean getNonFamilyPosting() { + return nonFamilyPosting; + } + + public void setNonFamilyPosting(Boolean nonFamilyPosting) { + this.nonFamilyPosting = nonFamilyPosting; + } + + public Boolean getHod() { + return hod; + } + + public void setHod(Boolean hod) { + this.hod = hod; + } + + public Boolean getSuggestion() { + return suggestion; + } + + public void setSuggestion(Boolean suggestion) { + this.suggestion = suggestion; + } + + public Integer getOrder() { + return order; + } + + public void setOrder(Integer order) { + this.order = order; + } + + public Boolean getJobToNonFamilyPosting() { + return jobToNonFamilyPosting; + } + + public void setJobToNonFamilyPosting(Boolean jobToNonFamilyPosting) { + this.jobToNonFamilyPosting = jobToNonFamilyPosting; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementMaxDefaultModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementMaxDefaultModel.java new file mode 100644 index 0000000..b16b3f7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementMaxDefaultModel.java @@ -0,0 +1,121 @@ +package eu.europa.eeas.erights.common.service.model.entitlement; + +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import org.javamoney.moneta.Money; + +import java.math.BigDecimal; +import java.time.LocalDate; + +public class EntitlementMaxDefaultModel extends AbstractAuditableModel { + + private Long id; + + private String cityCodeTo; + + private String cityCodeFrom; + + private String countryCodeTo; + + private String countryCodeFrom; + + private Money amount; + + private LocalDate startDate; + + private Long entitlementMaxCatId; + + private Boolean latest; + + private String sourceData; + + private BigDecimal kg; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCityCodeTo() { + return cityCodeTo; + } + + public void setCityCodeTo(String cityCodeTo) { + this.cityCodeTo = cityCodeTo; + } + + public String getCityCodeFrom() { + return cityCodeFrom; + } + + public void setCityCodeFrom(String cityCodeFrom) { + this.cityCodeFrom = cityCodeFrom; + } + + public String getCountryCodeTo() { + return countryCodeTo; + } + + public void setCountryCodeTo(String countryCodeTo) { + this.countryCodeTo = countryCodeTo; + } + + public String getCountryCodeFrom() { + return countryCodeFrom; + } + + public void setCountryCodeFrom(String countryCodeFrom) { + this.countryCodeFrom = countryCodeFrom; + } + + public Money getAmount() { + return amount; + } + + public void setAmount(Money amount) { + this.amount = amount; + } + + public LocalDate getStartDate() { + return startDate; + } + + public void setStartDate(LocalDate startDate) { + this.startDate = startDate; + } + + public Long getEntitlementMaxCatId() { + return entitlementMaxCatId; + } + + public void setEntitlementMaxCatId(Long entitlementMaxCatId) { + this.entitlementMaxCatId = entitlementMaxCatId; + } + + public Boolean getLatest() { + return latest; + } + + public void setLatest(Boolean latest) { + this.latest = latest; + } + + public String getSourceData() { + return sourceData; + } + + public void setSourceData(String sourceData) { + this.sourceData = sourceData; + } + + public BigDecimal getKg() { + return kg; + } + + public void setKg(BigDecimal kg) { + this.kg = kg; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementMaxModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementMaxModel.java new file mode 100644 index 0000000..02b8667 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementMaxModel.java @@ -0,0 +1,198 @@ +package eu.europa.eeas.erights.common.service.model.entitlement; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import eu.europa.eeas.erights.common.service.model.CityModel; +import eu.europa.eeas.erights.common.service.model.CountryModel; +import eu.europa.eeas.erights.common.tools.entitlements.FlatRateDuplicator; +import org.javamoney.moneta.Money; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; + +public class EntitlementMaxModel extends AbstractAuditableModel implements Serializable { + + private Long id; + + private EntitlementTypeModel entitlementType; + + private EntitlementTypeCatModel entitlementTypeCat; + + private EntitlementMaxCatModel entitlementMaxCat; + + private Money maxValue; + + private Boolean defaultMaxVal = false; + + private EntitlementMaxOptionModel entitlementMaxOption; + + private FlatRateDuplicator flatRateDuplicator; + + private String comments; + + private Boolean enable; + + private BigDecimal maxVolume; + + private BigDecimal maxKg; + + private CountryModel country; + + private CityModel city; + + private String iataFrom; + + private String iataTo; + + private LocalDate startDate; + + + private long rateYear; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public EntitlementTypeModel getEntitlementType() { + return entitlementType; + } + + public void setEntitlementType(EntitlementTypeModel entitlementType) { + this.entitlementType = entitlementType; + } + + public EntitlementTypeCatModel getEntitlementTypeCat() { + return entitlementTypeCat; + } + + public void setEntitlementTypeCat(EntitlementTypeCatModel entitlementTypeCat) { + this.entitlementTypeCat = entitlementTypeCat; + } + + public EntitlementMaxCatModel getEntitlementMaxCat() { + return entitlementMaxCat; + } + + public void setEntitlementMaxCat(EntitlementMaxCatModel entitlementMaxCat) { + this.entitlementMaxCat = entitlementMaxCat; + } + + public Money getMaxValue() { + return maxValue; + } + + public void setMaxValue(Money maxValue) { + this.maxValue = maxValue; + } + + public Boolean getDefaultMaxVal() { + return defaultMaxVal; + } + + public void setDefaultMaxVal(Boolean defaultMaxVal) { + this.defaultMaxVal = defaultMaxVal; + } + + public EntitlementMaxOptionModel getEntitlementMaxOption() { + return entitlementMaxOption; + } + + public void setEntitlementMaxOption(EntitlementMaxOptionModel entitlementMaxOption) { + this.entitlementMaxOption = entitlementMaxOption; + } + + public FlatRateDuplicator getFlatRateDuplicator() { + return flatRateDuplicator; + } + + public void setFlatRateDuplicator(FlatRateDuplicator flatRateDuplicator) { + this.flatRateDuplicator = flatRateDuplicator; + } + + public String getComments() { + return comments; + } + + public void setComments(String comments) { + this.comments = comments; + } + + public Boolean getEnable() { + return enable; + } + + public void setEnable(Boolean enable) { + this.enable = enable; + } + + public CountryModel getCountry() { + return country; + } + + public void setCountry(CountryModel country) { + this.country = country; + } + + public CityModel getCity() { + return city; + } + + public void setCity(CityModel city) { + this.city = city; + } + + public BigDecimal getMaxVolume() { + return maxVolume; + } + + public void setMaxVolume(BigDecimal maxVolume) { + this.maxVolume = maxVolume; + } + + public BigDecimal getMaxKg() { + return maxKg; + } + + public void setMaxKg(BigDecimal maxKg) { + this.maxKg = maxKg; + } + + public LocalDate getStartDate() { + return startDate; + } + + public void setStartDate(LocalDate startDate) { + this.startDate = startDate; + } + + public long getRateYear() { + return rateYear; + } + + public void setRateYear(long rateYear) { + this.rateYear = rateYear; + } + + public String getIataFrom() { + return iataFrom; + } + + public void setIataFrom(String iataFrom) { + this.iataFrom = iataFrom; + } + + public String getIataTo() { + return iataTo; + } + + public void setIataTo(String iataTo) { + this.iataTo = iataTo; + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementMaxOptionModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementMaxOptionModel.java new file mode 100644 index 0000000..c6ab273 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementMaxOptionModel.java @@ -0,0 +1,56 @@ +package eu.europa.eeas.erights.common.service.model.entitlement; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +public class EntitlementMaxOptionModel extends AbstractModel { + + private Long id; + + private String description; + + private Long valueNumber; + + private String valueString; + + private EntitlementMaxCatModel entitlementMaxCat; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Long getValueNumber() { + return valueNumber; + } + + public void setValueNumber(Long valueNumber) { + this.valueNumber = valueNumber; + } + + public String getValueString() { + return valueString; + } + + public void setValueString(String valueString) { + this.valueString = valueString; + } + + public EntitlementMaxCatModel getEntitlementMaxCat() { + return entitlementMaxCat; + } + + public void setEntitlementMaxCat(EntitlementMaxCatModel entitlementMaxCat) { + this.entitlementMaxCat = entitlementMaxCat; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementTypeCatModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementTypeCatModel.java new file mode 100644 index 0000000..2e4b354 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementTypeCatModel.java @@ -0,0 +1,69 @@ +package eu.europa.eeas.erights.common.service.model.entitlement; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; + +import java.util.List; + +public class EntitlementTypeCatModel extends AbstractModel { + + private Long id; + + private String description; + + private EntitlementTypeCatCode code; + + private List entitlementMaxCatList; + + private Boolean mfType; + + private Integer order; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public EntitlementTypeCatCode getCode() { + return code; + } + + public void setCode(EntitlementTypeCatCode code) { + this.code = code; + } + + public List getEntitlementMaxCatList() { + return entitlementMaxCatList; + } + + public void setEntitlementMaxCatList(List entitlementMaxCatList) { + this.entitlementMaxCatList = entitlementMaxCatList; + } + + public Boolean getMfType() { + return mfType; + } + + public void setMfType(Boolean mfType) { + this.mfType = mfType; + } + + public Integer getOrder() { + return order; + } + + public void setOrder(Integer order) { + this.order = order; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementTypeDefaultModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementTypeDefaultModel.java new file mode 100644 index 0000000..14dc1b0 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementTypeDefaultModel.java @@ -0,0 +1,46 @@ +package eu.europa.eeas.erights.common.service.model.entitlement; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +public class EntitlementTypeDefaultModel extends AbstractModel { + + private Long id; + + private EntitlementTypeCatModel entitlementTypeCat; + + private Long movementTypeId; + + private String description; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public EntitlementTypeCatModel getEntitlementTypeCat() { + return entitlementTypeCat; + } + + public void setEntitlementTypeCat(EntitlementTypeCatModel entitlementTypeCat) { + this.entitlementTypeCat = entitlementTypeCat; + } + + public Long getMovementTypeId() { + return movementTypeId; + } + + public void setMovementTypeId(Long movementTypeId) { + this.movementTypeId = movementTypeId; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementTypeModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementTypeModel.java new file mode 100644 index 0000000..abc6cd9 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/EntitlementTypeModel.java @@ -0,0 +1,111 @@ +package eu.europa.eeas.erights.common.service.model.entitlement; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.erights.common.service.model.MovementTypeModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeStatus; + +import java.util.List; + +public class EntitlementTypeModel extends AbstractModel { + + private Long id; + + private EntitlementTypeCatModel entitlementTypeCat; + + private List entitlementMaxList; + + private EntitlementTypeStatus status; + + private String disableReason; + + private Long movementFileId; + + private MovementTypeModel movementType; + + private Boolean defaultEntType; + + private Boolean enable = false; + + private List requests; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public EntitlementTypeCatModel getEntitlementTypeCat() { + return entitlementTypeCat; + } + + public void setEntitlementTypeCat(EntitlementTypeCatModel entitlementTypeCat) { + this.entitlementTypeCat = entitlementTypeCat; + } + + public List getEntitlementMaxList() { + return entitlementMaxList; + } + + public void setEntitlementMaxList(List entitlementMaxList) { + this.entitlementMaxList = entitlementMaxList; + } + + public EntitlementTypeStatus getStatus() { + return status; + } + + public void setStatus(EntitlementTypeStatus status) { + this.status = status; + } + + public String getDisableReason() { + return disableReason; + } + + public void setDisableReason(String disableReason) { + this.disableReason = disableReason; + } + + public Long getMovementFileId() { + return movementFileId; + } + + public void setMovementFileId(Long movementFileId) { + this.movementFileId = movementFileId; + } + + public MovementTypeModel getMovementType() { + return movementType; + } + + public void setMovementType(MovementTypeModel movementType) { + this.movementType = movementType; + } + + public Boolean getDefaultEntType() { + return defaultEntType; + } + + public void setDefaultEntType(Boolean defaultEntType) { + this.defaultEntType = defaultEntType; + } + + public Boolean getEnable() { + return enable; + } + + public void setEnable(Boolean enable) { + this.enable = enable; + } + + public List getRequests() { + return requests; + } + + public void setRequests(List requests) { + this.requests = requests; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/RequestIndemnityModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/RequestIndemnityModel.java new file mode 100644 index 0000000..84af3ff --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/RequestIndemnityModel.java @@ -0,0 +1,28 @@ +package eu.europa.eeas.erights.common.service.model.entitlement; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import java.time.Month; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class RequestIndemnityModel extends AbstractAuditableModel { + private Long id; + private Integer number; + private String type; + private String unit; + private Integer originPeriodYear; + private Month originPeriodMonth; + private Integer paymentPeriodYear; + private Month paymentPeriodMonth; + private String comment; + private Long requestId; + private String indemnityTypeEnUserFriendly; + private Boolean hoaEmailFlag; +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/VEmptyRateEntitlementTypeModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/VEmptyRateEntitlementTypeModel.java new file mode 100644 index 0000000..71be9bc --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/VEmptyRateEntitlementTypeModel.java @@ -0,0 +1,189 @@ +package eu.europa.eeas.erights.common.service.model.entitlement; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeStatus; + +public class VEmptyRateEntitlementTypeModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long id; + + private Long movementFile; + + private String fileId; + + private String movementType; + + private String disableReason; + + private Boolean defaultEntType; + + private Boolean enable; + + private EntitlementTypeStatus status; + + private String entitlementMaxCatList; + + private String entitlementTypeCat; + + private String movementFrom; + + private String movementTo; + + private Integer movementYear; + + private String allocatedToCurrent; + + private String allocatedToFuture; + + private Integer perId; + + private String firstName; + + private String lastName; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getMovementFile() { + return movementFile; + } + + public void setMovementFile(Long movementFile) { + this.movementFile = movementFile; + } + + public String getMovementType() { + return movementType; + } + + public void setMovementType(String movementType) { + this.movementType = movementType; + } + + public String getDisableReason() { + return disableReason; + } + + public void setDisableReason(String disableReason) { + this.disableReason = disableReason; + } + + public Boolean getDefaultEntType() { + return defaultEntType; + } + + public void setDefaultEntType(Boolean defaultEntType) { + this.defaultEntType = defaultEntType; + } + + public Boolean getEnable() { + return enable; + } + + public void setEnable(Boolean enable) { + this.enable = enable; + } + + public EntitlementTypeStatus getStatus() { + return status; + } + + public void setStatus(EntitlementTypeStatus status) { + this.status = status; + } + + public String getEntitlementMaxCatList() { + return entitlementMaxCatList; + } + + public void setEntitlementMaxCatList(String entitlementMaxCatList) { + this.entitlementMaxCatList = entitlementMaxCatList; + } + + public String getEntitlementTypeCat() { + return entitlementTypeCat; + } + + public void setEntitlementTypeCat(String entitlementTypeCat) { + this.entitlementTypeCat = entitlementTypeCat; + } + + public String getMovementFrom() { + return movementFrom; + } + + public void setMovementFrom(String movementFrom) { + this.movementFrom = movementFrom; + } + + public String getMovementTo() { + return movementTo; + } + + public void setMovementTo(String movementTo) { + this.movementTo = movementTo; + } + + public Integer getMovementYear() { + return movementYear; + } + + public void setMovementYear(Integer movementYear) { + this.movementYear = movementYear; + } + + public String getAllocatedToCurrent() { + return allocatedToCurrent; + } + + public void setAllocatedToCurrent(String allocatedToCurrent) { + this.allocatedToCurrent = allocatedToCurrent; + } + + public String getAllocatedToFuture() { + return allocatedToFuture; + } + + public void setAllocatedToFuture(String allocatedToFuture) { + this.allocatedToFuture = allocatedToFuture; + } + + public Integer getPerId() { + return perId; + } + + public void setPerId(Integer perId) { + this.perId = perId; + } + + public String getFileId() { + return fileId; + } + + public void setFileId(String fileId) { + this.fileId = fileId; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/AdvanceRequestModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/AdvanceRequestModel.java new file mode 100644 index 0000000..11cfac7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/AdvanceRequestModel.java @@ -0,0 +1,79 @@ +package eu.europa.eeas.erights.common.service.model.entitlement.request; + +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestState; +import org.javamoney.moneta.Money; + +import java.time.LocalDate; + +public class AdvanceRequestModel extends RequestModel { + + private Money surfaceRate; + + private Money carRate; + + private Money airfreightRate; + + private Money storageRate; + + private String requestOption; + + private AdvanceRequestState state; + + private LocalDate draftToAwaitingDate; + + public Money getSurfaceRate() { + return surfaceRate; + } + + public void setSurfaceRate(Money surfaceRate) { + this.surfaceRate = surfaceRate; + } + + public Money getCarRate() { + return carRate; + } + + public void setCarRate(Money carRate) { + this.carRate = carRate; + } + + public Money getAirfreightRate() { + return airfreightRate; + } + + public void setAirfreightRate(Money airfreightRate) { + this.airfreightRate = airfreightRate; + } + + public Money getStorageRate() { + return storageRate; + } + + public void setStorageRate(Money storageRate) { + this.storageRate = storageRate; + } + + public String getRequestOption() { + return requestOption; + } + + public void setRequestOption(String requestOption) { + this.requestOption = requestOption; + } + + public AdvanceRequestState getState() { + return state; + } + + public void setState(AdvanceRequestState state) { + this.state = state; + } + + public LocalDate getDraftToAwaitingDate() { + return draftToAwaitingDate; + } + + public void setDraftToAwaitingDate(LocalDate draftToAwaitingDate) { + this.draftToAwaitingDate = draftToAwaitingDate; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/ClearingRequestModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/ClearingRequestModel.java new file mode 100644 index 0000000..ce8bab2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/ClearingRequestModel.java @@ -0,0 +1,91 @@ +package eu.europa.eeas.erights.common.service.model.entitlement.request; + +import eu.europa.eeas.erights.common.tools.statemachine.ClearingRequestState; +import org.javamoney.moneta.Money; + +import java.time.LocalDate; +import java.util.List; + +public class ClearingRequestModel extends RequestModel { + + private Money surfaceRate; + + private Money carRate; + + private Money airfreightRate; + + private Money storageRate; + + private String requestOption; + + private ClearingRequestState state; + + private LocalDate draftToAwaitingDate; + + private List extraRequestDetails; //this is used just for UI + + public ClearingRequestState getState() { + return state; + } + + public void setState(ClearingRequestState state) { + this.state = state; + } + + public Money getSurfaceRate() { + return surfaceRate; + } + + public void setSurfaceRate(Money surfaceRate) { + this.surfaceRate = surfaceRate; + } + + public Money getCarRate() { + return carRate; + } + + public void setCarRate(Money carRate) { + this.carRate = carRate; + } + + public Money getAirfreightRate() { + return airfreightRate; + } + + public void setAirfreightRate(Money airfreightRate) { + this.airfreightRate = airfreightRate; + } + + public Money getStorageRate() { + return storageRate; + } + + public void setStorageRate(Money storageRate) { + this.storageRate = storageRate; + } + + public String getRequestOption() { + return requestOption; + } + + public void setRequestOption(String requestOption) { + this.requestOption = requestOption; + } + + public List getExtraRequestDetails() { + return extraRequestDetails; + } + + public void setExtraRequestDetails(List extraRequestDetails) { + this.extraRequestDetails = extraRequestDetails; + } + + public LocalDate getDraftToAwaitingDate() { + return draftToAwaitingDate; + } + + public void setDraftToAwaitingDate(LocalDate draftToAwaitingDate) { + this.draftToAwaitingDate = draftToAwaitingDate; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/DetailAttachmentModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/DetailAttachmentModel.java new file mode 100644 index 0000000..2ebe361 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/DetailAttachmentModel.java @@ -0,0 +1,49 @@ +package eu.europa.eeas.erights.common.service.model.entitlement.request; + +import eu.europa.eeas.erights.common.service.model.AbstractAttachmentModel; + +import java.util.UUID; + +public class DetailAttachmentModel extends AbstractAttachmentModel { + + private UUID uuid; + + private String attachmentType; + + private String fileName; + + public DetailAttachmentModel() { + } + + public DetailAttachmentModel(UUID uuid, String attachmentType, String fileName) { + this.uuid = uuid; + this.attachmentType = attachmentType; + this.fileName = fileName; + } + + public UUID getUuid() { + return uuid; + } + + public void setUuid(UUID uuid) { + this.uuid = uuid; + } + + public String getAttachmentType() { + return attachmentType; + } + + public void setAttachmentType(String attachmentType) { + this.attachmentType = attachmentType; + } + + @Override + public String getFileName() { + return fileName; + } + + @Override + public void setFileName(String fileName) { + this.fileName = fileName; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/InstallationPersonAddressModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/InstallationPersonAddressModel.java new file mode 100644 index 0000000..9db0cea --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/InstallationPersonAddressModel.java @@ -0,0 +1,48 @@ +package eu.europa.eeas.erights.common.service.model.entitlement.request; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.erights.common.service.model.PersonAddressModel; +import eu.europa.eeas.erights.common.service.model.PersonModel; + +public class InstallationPersonAddressModel extends AbstractModel { + + private PersonAddressModel address; + + private PersonModel relative; + + private String relation; + + private Boolean joining; + + public PersonAddressModel getAddress() { + return address; + } + + public void setAddress(PersonAddressModel address) { + this.address = address; + } + + public PersonModel getRelative() { + return relative; + } + + public void setRelative(PersonModel relative) { + this.relative = relative; + } + + public String getRelation() { + return relation; + } + + public void setRelation(String relation) { + this.relation = relation; + } + + public Boolean getJoining() { + return joining; + } + + public void setJoining(Boolean joining) { + this.joining = joining; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/InstallationRequestModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/InstallationRequestModel.java new file mode 100644 index 0000000..2747a6d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/InstallationRequestModel.java @@ -0,0 +1,49 @@ +package eu.europa.eeas.erights.common.service.model.entitlement.request; + +import eu.europa.eeas.erights.common.service.model.PersonIndemnityModel; +import eu.europa.eeas.erights.common.tools.statemachine.InstallationState; + +import java.util.List; + +public class InstallationRequestModel extends RequestModel { + + private InstallationState state; + + private List indemnities; + + private List addresses; + + private String justification; + + public InstallationState getState() { + return state; + } + + public void setState(InstallationState state) { + this.state = state; + } + + public List getIndemnities() { + return indemnities; + } + + public void setIndemnities(List indemnities) { + this.indemnities = indemnities; + } + + public List getAddresses() { + return addresses; + } + + public void setAddresses(List addresses) { + this.addresses = addresses; + } + + public String getJustification() { + return justification; + } + + public void setJustification(String justification) { + this.justification = justification; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestDetailAttachmentModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestDetailAttachmentModel.java new file mode 100644 index 0000000..b31ab29 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestDetailAttachmentModel.java @@ -0,0 +1,26 @@ +package eu.europa.eeas.erights.common.service.model.entitlement.request; + +import eu.europa.eeas.erights.common.service.model.AbstractAttachmentModel; + +public class RequestDetailAttachmentModel extends AbstractAttachmentModel { + + private RequestDetailModel requestDetail; + + private String attachmentType; + + public RequestDetailModel getRequestDetail() { + return requestDetail; + } + + public void setRequestDetail(RequestDetailModel requestDetail) { + this.requestDetail = requestDetail; + } + + public String getAttachmentType() { + return attachmentType; + } + + public void setAttachmentType(String attachmentType) { + this.attachmentType = attachmentType; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestDetailModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestDetailModel.java new file mode 100644 index 0000000..c2bf36d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestDetailModel.java @@ -0,0 +1,203 @@ +package eu.europa.eeas.erights.common.service.model.entitlement.request; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxCatModel; +import org.javamoney.moneta.Money; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +public class RequestDetailModel extends AbstractAuditableModel { + + private Long id; + + private RequestModel request; + + private EntitlementMaxCatModel entitlementMaxCat; + + private String detailType; + + private Long detailTypeOrder; + + private BigDecimal volume; + + private BigDecimal insuranceRate; + + private BigDecimal weight; + + private Money goodsValue; + + private Money proforma; + + private Money invoice; + + private Money amount; + + private List attachments; + + private BigDecimal exchangeRate; + + private LocalDate exchangeRateStartDate; + + private String exchangeRateCurrency; + + private String exchangePayMonth; + + private Boolean extraDetail; + + private String justification; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public RequestModel getRequest() { + return request; + } + + public void setRequest(RequestModel request) { + this.request = request; + } + + public EntitlementMaxCatModel getEntitlementMaxCat() { + return entitlementMaxCat; + } + + public void setEntitlementMaxCat(EntitlementMaxCatModel entitlementMaxCat) { + this.entitlementMaxCat = entitlementMaxCat; + } + + public String getDetailType() { + return detailType; + } + + public void setDetailType(String detailType) { + this.detailType = detailType; + } + + public BigDecimal getVolume() { + return volume; + } + + public void setVolume(BigDecimal volume) { + this.volume = volume; + } + + public BigDecimal getInsuranceRate() { + return insuranceRate; + } + + public void setInsuranceRate(BigDecimal insuranceRate) { + this.insuranceRate = insuranceRate; + } + + public BigDecimal getWeight() { + return weight; + } + + public void setWeight(BigDecimal weight) { + this.weight = weight; + } + + public Money getGoodsValue() { + return goodsValue; + } + + public void setGoodsValue(Money goodsValue) { + this.goodsValue = goodsValue; + } + + public Money getProforma() { + return proforma; + } + + public void setProforma(Money proforma) { + this.proforma = proforma; + } + + public Money getInvoice() { + return invoice; + } + + public void setInvoice(Money invoice) { + this.invoice = invoice; + } + + public Money getAmount() { + return amount; + } + + public void setAmount(Money amount) { + this.amount = amount; + } + + public List getAttachments() { + return attachments; + } + + public void setAttachments(List attachments) { + this.attachments = attachments; + } + + public BigDecimal getExchangeRate() { + return exchangeRate; + } + + public void setExchangeRate(BigDecimal exchangeRate) { + this.exchangeRate = exchangeRate; + } + + public LocalDate getExchangeRateStartDate() { + return exchangeRateStartDate; + } + + public void setExchangeRateStartDate(LocalDate exchangeRateStartDate) { + this.exchangeRateStartDate = exchangeRateStartDate; + } + + public String getExchangeRateCurrency() { + return exchangeRateCurrency; + } + + public void setExchangeRateCurrency(String exchangeRateCurrency) { + this.exchangeRateCurrency = exchangeRateCurrency; + } + + public Long getDetailTypeOrder() { + return detailTypeOrder; + } + + public void setDetailTypeOrder(Long detailTypeOrder) { + this.detailTypeOrder = detailTypeOrder; + } + + public Boolean getExtraDetail() { + return extraDetail; + } + + public void setExtraDetail(Boolean extraDetail) { + this.extraDetail = extraDetail; + } + + public String getJustification() { + return justification; + } + + public void setJustification(String justification) { + this.justification = justification; + } + + public String getExchangePayMonth() { + return exchangePayMonth; + } + + public void setExchangePayMonth(String exchangePayMonth) { + this.exchangePayMonth = exchangePayMonth; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestModel.java new file mode 100644 index 0000000..f0a0db8 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestModel.java @@ -0,0 +1,119 @@ +package eu.europa.eeas.erights.common.service.model.entitlement.request; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import eu.europa.eeas.erights.common.service.model.CityModel; +import eu.europa.eeas.erights.common.service.model.CountryModel; +import eu.europa.eeas.erights.common.service.model.PersonModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import eu.europa.eeas.erights.common.service.model.declaration.PersonBankInfoModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeCatModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.tools.p2p.OrderStatusEnum; +import eu.europa.eeas.erights.common.tools.statemachine.AbacRequestState; +import lombok.Getter; +import lombok.Setter; +import org.apache.commons.lang3.StringUtils; +import org.javamoney.moneta.Money; + +import javax.persistence.Column; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; +import java.util.UUID; + +@Getter +@Setter +public class RequestModel extends AbstractAuditableModel { + + private Long id; + + private DeclarationModel declaration; + + private EntitlementTypeModel entitlementType; + + private EntitlementTypeCatModel entitlementTypeCat; + + private PersonBankInfoModel personBankInfo; + + private UUID smId; + + private Long requestNumber; + + private Money totalAmount; + + private String requestStringId; + + private Integer year; + + private List requestPersons; + + private PersonModel staffMember; + + private Boolean includesStaffMember; + + private Money calculatedTotalAmount; + + private String comments; + + private String paymentRequest; + + private String paymentOrder; + + private LocalDate paymentDate; + + private Long requestDeclarationNo; + + private String requestType; + + private List requestDetails; + + private RequestModel parent; + + private Long parentId; + + private List children; + + private LocalDate indemnityUpdatedAt; + + private CountryModel country; + + private CityModel city; + + private Boolean entryIntoStorage; + + private BigDecimal volumeAirFreightCeiling; + + private BigDecimal kgAirFreightCeiling; + + private BigDecimal sumOfSectionsTotalPersonal; + + private BigDecimal sumOfSectionsTotalVehicle; + + private BigDecimal sumOfSectionsTotalStorage; + + private BigDecimal sumOfSectionsUnforeseenAmount; + + private AbacRequestState abacRequestState; + + private String abacWorkflowState; + private String paymentId; + private String paymentEventId; + + private Long p2pHubOrderId; + + private OrderStatusEnum p2pHubOrderStatus; + + private String orderComment; + + private String paymentDirectiveReference; + + public boolean isSysperPayment() { + return this.paymentId != null && this.paymentEventId != null; + } + + public boolean isAbacPayment() { + return StringUtils.isNotBlank(this.paymentOrder) && StringUtils.isNotBlank(this.paymentRequest); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestPersonAttachmentModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestPersonAttachmentModel.java new file mode 100644 index 0000000..d985d13 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestPersonAttachmentModel.java @@ -0,0 +1,16 @@ +package eu.europa.eeas.erights.common.service.model.entitlement.request; + +import eu.europa.eeas.erights.common.service.model.AbstractAttachmentModel; + +public class RequestPersonAttachmentModel extends AbstractAttachmentModel { + + private RequestPersonModel requestPerson; + + public RequestPersonModel getRequestPerson() { + return requestPerson; + } + + public void setRequestPerson(RequestPersonModel requestPerson) { + this.requestPerson = requestPerson; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestPersonModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestPersonModel.java new file mode 100644 index 0000000..ae9d827 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestPersonModel.java @@ -0,0 +1,130 @@ +package eu.europa.eeas.erights.common.service.model.entitlement.request; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import eu.europa.eeas.erights.common.service.model.PersonModel; + +import java.util.List; + +public class RequestPersonModel extends AbstractAuditableModel { + + private Long id; + + private RequestModel request; + + private Boolean tudEligible; + + private String tudEligibleReason; + + private Boolean declared; + + private PersonModel person; + + private PersonModel relative; + + private String relation; + + private Boolean claim; + + private Boolean claimApproved; + + private List attachments; + + private String remarks; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public RequestModel getRequest() { + return request; + } + + public void setRequest(RequestModel request) { + this.request = request; + } + + public Boolean getTudEligible() { + return tudEligible; + } + + public void setTudEligible(Boolean tudEligible) { + this.tudEligible = tudEligible; + } + + public Boolean getDeclared() { + return declared; + } + + public void setDeclared(Boolean declared) { + this.declared = declared; + } + + public PersonModel getPerson() { + return person; + } + + public void setPerson(PersonModel person) { + this.person = person; + } + + public PersonModel getRelative() { + return relative; + } + + public void setRelative(PersonModel relative) { + this.relative = relative; + } + + public String getRelation() { + return relation; + } + + public void setRelation(String relation) { + this.relation = relation; + } + + public Boolean getClaim() { + return claim; + } + + public void setClaim(Boolean claim) { + this.claim = claim; + } + + public Boolean getClaimApproved() { + return claimApproved; + } + + public void setClaimApproved(Boolean claimApproved) { + this.claimApproved = claimApproved; + } + + public List getAttachments() { + return attachments; + } + + public void setAttachments(List attachments) { + this.attachments = attachments; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getTudEligibleReason() { + return tudEligibleReason; + } + + public void setTudEligibleReason(String tudEligibleReason) { + this.tudEligibleReason = tudEligibleReason; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestSupportingDocAttachmentModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestSupportingDocAttachmentModel.java new file mode 100644 index 0000000..f0685de --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestSupportingDocAttachmentModel.java @@ -0,0 +1,17 @@ +package eu.europa.eeas.erights.common.service.model.entitlement.request; + +import eu.europa.eeas.erights.common.service.model.AbstractAttachmentModel; +import lombok.Getter; +import lombok.Setter; + + +/** + * @author ienaccat + */ +@Getter +@Setter +public class RequestSupportingDocAttachmentModel extends AbstractAttachmentModel { + + private RequestSupportingDocModel requestSupportingDoc; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestSupportingDocModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestSupportingDocModel.java new file mode 100644 index 0000000..43b99c2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestSupportingDocModel.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.common.service.model.entitlement.request; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.service.model.AbstractAuditableModel; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.SupportingDocType; +import eu.europa.eeas.erights.common.service.model.comments.CommentForSupportingDocModel; +import java.util.List; +import lombok.Getter; +import lombok.Setter; + +/** + * @author ienaccat + */ +@Getter +@Setter +public class RequestSupportingDocModel extends AbstractAuditableModel { + + private Long id; + + private RequestModel request; + + private SupportingDocType docType; + + private Long docOrder; + + private Boolean docMandatory; + + private List attachments; + + private CommentForSupportingDocModel comment; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestTypesForUI.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestTypesForUI.java new file mode 100644 index 0000000..4c7d496 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/RequestTypesForUI.java @@ -0,0 +1,18 @@ +package eu.europa.eeas.erights.common.service.model.entitlement.request; + +public enum RequestTypesForUI { + ADVANCE("Advance"), + TUD("TUD"), + REIMBURSEMENT("Reimbursement"), + CLEARING("Clearing"), + INSTALLATION("Installation"), + TOPUP("Top-up"), + RESETTLEMENT("Resettlement"); + + public final String value; + + private RequestTypesForUI(String value) { + this.value = value; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/ResettlementRequestModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/ResettlementRequestModel.java new file mode 100644 index 0000000..a313153 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/ResettlementRequestModel.java @@ -0,0 +1,26 @@ +package eu.europa.eeas.erights.common.service.model.entitlement.request; + + +import eu.europa.eeas.erights.common.service.model.PersonIndemnityModel; +import eu.europa.eeas.erights.common.tools.statemachine.ResettlementState; +import java.util.List; +import lombok.Getter; +import lombok.Setter; + +/** + * @author ienaccat + */ +@Getter +@Setter +public class ResettlementRequestModel extends RequestModel { + + private ResettlementState state; + + private List indemnities; + + private Integer activeYears; + + private String statutoryLinkDesc; + + private List supportingDocs; +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/TopUpRequestModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/TopUpRequestModel.java new file mode 100644 index 0000000..456d720 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/TopUpRequestModel.java @@ -0,0 +1,28 @@ +package eu.europa.eeas.erights.common.service.model.entitlement.request; + +import eu.europa.eeas.erights.common.tools.statemachine.TopUpRequestState; + +import java.util.List; + +public class TopUpRequestModel extends RequestModel { + + private TopUpRequestState state; + + private List attachments; + + public TopUpRequestState getState() { + return state; + } + + public void setState(TopUpRequestState state) { + this.state = state; + } + + public List getAttachments() { + return attachments; + } + + public void setAttachments(List attachments) { + this.attachments = attachments; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/TotalRemRequestModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/TotalRemRequestModel.java new file mode 100644 index 0000000..9d93c42 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/TotalRemRequestModel.java @@ -0,0 +1,91 @@ +package eu.europa.eeas.erights.common.service.model.entitlement.request; + +import eu.europa.eeas.erights.common.tools.statemachine.TotalRemRequestState; +import org.javamoney.moneta.Money; + +import java.time.LocalDate; +import java.util.List; + +public class TotalRemRequestModel extends RequestModel { + + private Money surfaceRate; + + private Money carRate; + + private Money airfreightRate; + + private Money storageRate; + + private String requestOption; + + private TotalRemRequestState state; + + private LocalDate draftToAwaitingDate; + + private List extraRequestDetails; //this is used just for UI + + public Money getSurfaceRate() { + return surfaceRate; + } + + public void setSurfaceRate(Money surfaceRate) { + this.surfaceRate = surfaceRate; + } + + public Money getCarRate() { + return carRate; + } + + public void setCarRate(Money carRate) { + this.carRate = carRate; + } + + public Money getAirfreightRate() { + return airfreightRate; + } + + public void setAirfreightRate(Money airfreightRate) { + this.airfreightRate = airfreightRate; + } + + public Money getStorageRate() { + return storageRate; + } + + public void setStorageRate(Money storageRate) { + this.storageRate = storageRate; + } + + public String getRequestOption() { + return requestOption; + } + + public void setRequestOption(String requestOption) { + this.requestOption = requestOption; + } + + public TotalRemRequestState getState() { + return state; + } + + public void setState(TotalRemRequestState state) { + this.state = state; + } + + public List getExtraRequestDetails() { + return extraRequestDetails; + } + + public void setExtraRequestDetails(List extraRequestDetails) { + this.extraRequestDetails = extraRequestDetails; + } + + public LocalDate getDraftToAwaitingDate() { + return draftToAwaitingDate; + } + + public void setDraftToAwaitingDate(LocalDate draftToAwaitingDate) { + this.draftToAwaitingDate = draftToAwaitingDate; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/TudRequestModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/TudRequestModel.java new file mode 100644 index 0000000..a5de24d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/entitlement/request/TudRequestModel.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.model.entitlement.request; + +import eu.europa.eeas.erights.common.tools.statemachine.RequestState; +import org.javamoney.moneta.Money; + +public class TudRequestModel extends RequestModel { + + private Money flatRate; + + private Money flatRateFamily; + + private RequestState state; + + public Money getFlatRate() { + return flatRate; + } + + public void setFlatRate(Money flatRate) { + this.flatRate = flatRate; + } + + public Money getFlatRateFamily() { + return flatRateFamily; + } + + public void setFlatRateFamily(Money flatRateFamily) { + this.flatRateFamily = flatRateFamily; + } + + public RequestState getState() { + return state; + } + + public void setState(RequestState state) { + this.state = state; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/job/FunctionCodeModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/job/FunctionCodeModel.java new file mode 100644 index 0000000..cd73c1a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/job/FunctionCodeModel.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.service.model.job; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +public class FunctionCodeModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private String id; + + private String nameEn; + + private String nameFr; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getNameEn() { + return nameEn; + } + + public void setNameEn(String nameEn) { + this.nameEn = nameEn; + } + + public String getNameFr() { + return nameFr; + } + + public void setNameFr(String nameFr) { + this.nameFr = nameFr; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/job/InstitutionCodeModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/job/InstitutionCodeModel.java new file mode 100644 index 0000000..6712f46 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/job/InstitutionCodeModel.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.service.model.job; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +public class InstitutionCodeModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private String id; + + private String type; + + private String nameEn; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getNameEn() { + return nameEn; + } + + public void setNameEn(String nameEn) { + this.nameEn = nameEn; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/job/PersonnelTypeModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/job/PersonnelTypeModel.java new file mode 100644 index 0000000..58aa4f1 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/job/PersonnelTypeModel.java @@ -0,0 +1,53 @@ +package eu.europa.eeas.erights.common.service.model.job; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +import javax.persistence.Column; + +public class PersonnelTypeModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private String id; + + + private String personnelTypeDesc; + + + private Long priority; + + + private String hrmCode; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPersonnelTypeDesc() { + return personnelTypeDesc; + } + + public void setPersonnelTypeDesc(String personnelTypeDesc) { + this.personnelTypeDesc = personnelTypeDesc; + } + + public Long getPriority() { + return priority; + } + + public void setPriority(Long priority) { + this.priority = priority; + } + + public String getHrmCode() { + return hrmCode; + } + + public void setHrmCode(String hrmCode) { + this.hrmCode = hrmCode; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/job/StatutoryLinkCodeModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/job/StatutoryLinkCodeModel.java new file mode 100644 index 0000000..52aec34 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/job/StatutoryLinkCodeModel.java @@ -0,0 +1,50 @@ +package eu.europa.eeas.erights.common.service.model.job; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +import javax.persistence.Id; + +public class StatutoryLinkCodeModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private String id; + + private String nameEn; + + private String nameFr; + + private String nameDe; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getNameEn() { + return nameEn; + } + + public void setNameEn(String nameEn) { + this.nameEn = nameEn; + } + + public String getNameFr() { + return nameFr; + } + + public void setNameFr(String nameFr) { + this.nameFr = nameFr; + } + + public String getNameDe() { + return nameDe; + } + + public void setNameDe(String nameDe) { + this.nameDe = nameDe; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/notification/NotificationMFModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/notification/NotificationMFModel.java new file mode 100644 index 0000000..7f06a0d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/notification/NotificationMFModel.java @@ -0,0 +1,22 @@ +package eu.europa.eeas.erights.common.service.model.notification; + +import eu.europa.eeas.erights.common.service.model.MovementFileModel; + +/** + * @author tapiafo + */ +public class NotificationMFModel extends NotificationModel { + + private static final long serialVersionUID = 1L; + + private MovementFileModel movementFile; + + public MovementFileModel getMovementFile() { + return movementFile; + } + + public void setMovementFile(MovementFileModel movementFile) { + this.movementFile = movementFile; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/notification/NotificationModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/notification/NotificationModel.java new file mode 100644 index 0000000..a64242b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/notification/NotificationModel.java @@ -0,0 +1,128 @@ +package eu.europa.eeas.erights.common.service.model.notification; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.enums.Status; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; + +import java.time.LocalDateTime; + +/** + * @author tapiafo + */ +public class NotificationModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long id; + + private NotificationTemplateModel notificationTemplate; + + private NotificationTemplateCode notificationTemplateCode; + + private Long emailMessage; + + private LocalDateTime createdDate; + + private LocalDateTime updatedAt; + + private LocalDateTime sendingDate; + + private Status status; + + private Boolean alertSent; + + private LocalDateTime sentAt; + + private String communicationId; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public NotificationTemplateModel getNotificationTemplate() { + return notificationTemplate; + } + + public void setNotificationTemplate(NotificationTemplateModel notificationTemplate) { + this.notificationTemplate = notificationTemplate; + } + + public NotificationTemplateCode getNotificationTemplateCode() { + return notificationTemplateCode; + } + + public void setNotificationTemplateCode(NotificationTemplateCode notificationTemplateCode) { + this.notificationTemplateCode = notificationTemplateCode; + } + + public LocalDateTime getCreatedDate() { + return createdDate; + } + + public void setCreatedDate(LocalDateTime createdDate) { + this.createdDate = createdDate; + } + + public LocalDateTime getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(LocalDateTime updatedAt) { + this.updatedAt = updatedAt; + } + + public LocalDateTime getSendingDate() { + return sendingDate; + } + + public void setSendingDate(LocalDateTime sendingDate) { + this.sendingDate = sendingDate; + } + + public Long getEmailMessage() { + return emailMessage; + } + + public void setEmailMessage(Long emailMessage) { + this.emailMessage = emailMessage; + } + + public Boolean getAlertSent() { + return alertSent; + } + + public void setAlertSent(Boolean alertSent) { + this.alertSent = alertSent; + } + + public Status getStatus() { + return status; + } + + public void setStatus(Status status) { + this.status = status; + } + + public LocalDateTime getSentAt() { + return sentAt; + } + + public void setSentAt(LocalDateTime sentAt) { + this.sentAt = sentAt; + } + + public String getCommunicationId() { + return communicationId; + } + + public void setCommunicationId(String communicationId) { + this.communicationId = communicationId; + } + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/notification/NotificationPostingAllowanceModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/notification/NotificationPostingAllowanceModel.java new file mode 100644 index 0000000..48eea93 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/notification/NotificationPostingAllowanceModel.java @@ -0,0 +1,22 @@ +package eu.europa.eeas.erights.common.service.model.notification; + +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceModel; + +/** + * @author tapiafo + */ +public class NotificationPostingAllowanceModel extends NotificationModel { + + private static final long serialVersionUID = 1L; + + private PostingAllowanceModel postingAllowanceModel; + + public PostingAllowanceModel getPostingAllowanceModel() { + return postingAllowanceModel; + } + + public void setPostingAllowanceModel(PostingAllowanceModel postingAllowanceModel) { + this.postingAllowanceModel = postingAllowanceModel; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/notification/NotificationRequestModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/notification/NotificationRequestModel.java new file mode 100644 index 0000000..3de6e28 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/notification/NotificationRequestModel.java @@ -0,0 +1,16 @@ +package eu.europa.eeas.erights.common.service.model.notification; + +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; + +public class NotificationRequestModel extends NotificationModel { + + private RequestModel request; + + public RequestModel getRequest() { + return request; + } + + public void setRequest(RequestModel request) { + this.request = request; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/notification/NotificationTemplateModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/notification/NotificationTemplateModel.java new file mode 100644 index 0000000..65cdf96 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/notification/NotificationTemplateModel.java @@ -0,0 +1,83 @@ +package eu.europa.eeas.erights.common.service.model.notification; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; + +/** + * @author tapiafo + */ +public class NotificationTemplateModel extends AbstractModel { + + private static final long serialVersionUID = 1L; + + private Long id; + + private String messageSubject; + + private String messageBody; + + private String messageSignature; + + private String notificationTemplateType; + + private NotificationTemplateCode notificationTemplateCode; + + private Boolean defaultTemplate; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getMessageSubject() { + return messageSubject; + } + + public void setMessageSubject(String messageSubject) { + this.messageSubject = messageSubject; + } + + public String getMessageBody() { + return messageBody; + } + + public void setMessageBody(String messageBody) { + this.messageBody = messageBody; + } + + public String getMessageSignature() { + return messageSignature; + } + + public void setMessageSignature(String messageSignature) { + this.messageSignature = messageSignature; + } + + public String getNotificationTemplateType() { + return notificationTemplateType; + } + + public void setNotificationTemplateType(String notificationTemplateType) { + this.notificationTemplateType = notificationTemplateType; + } + + public NotificationTemplateCode getNotificationTemplateCode() { + return notificationTemplateCode; + } + + public void setNotificationTemplateCode(NotificationTemplateCode notificationTemplateCode) { + this.notificationTemplateCode = notificationTemplateCode; + } + + public Boolean getDefaultTemplate() { + return defaultTemplate; + } + + public void setDefaultTemplate(Boolean defaultTemplate) { + this.defaultTemplate = defaultTemplate; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ws/Rate.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ws/Rate.java new file mode 100644 index 0000000..fe981fd --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ws/Rate.java @@ -0,0 +1,301 @@ +package eu.europa.eeas.erights.common.service.model.ws; + +import com.fasterxml.jackson.annotation.*; + +import java.math.BigDecimal; +import java.util.Objects; + +@JsonPropertyOrder({"id", "codeCityTo", "codeCountryTo", "codeCityFrom", "codeCountryFrom", "amount", "date", "validityBeginDate", "validityEndDate", "year", "type", "current"}) +@JsonTypeName("Rate") +public class Rate { + public static final String JSON_PROPERTY_ID = "id"; + private Long id; + public static final String JSON_PROPERTY_CODE_CITY_TO = "codeCityTo"; + private String codeCityTo; + public static final String JSON_PROPERTY_CODE_COUNTRY_TO = "codeCountryTo"; + private String codeCountryTo; + public static final String JSON_PROPERTY_CODE_CITY_FROM = "codeCityFrom"; + private String codeCityFrom; + public static final String JSON_PROPERTY_CODE_COUNTRY_FROM = "codeCountryFrom"; + private String codeCountryFrom; + public static final String JSON_PROPERTY_AMOUNT = "amount"; + private BigDecimal amount; + public static final String JSON_PROPERTY_DATE = "date"; + private String date; + public static final String JSON_PROPERTY_VALIDITY_BEGIN_DATE = "validityBeginDate"; + private String validityBeginDate; + public static final String JSON_PROPERTY_VALIDITY_END_DATE = "validityEndDate"; + private String validityEndDate; + public static final String JSON_PROPERTY_YEAR = "year"; + private Long year; + public static final String JSON_PROPERTY_TYPE = "type"; + private Rate.TypeEnum type; + public static final String JSON_PROPERTY_CURRENT = "current"; + private Boolean current; + + public Rate() { + } + + public Rate id(Long id) { + this.id = id; + return this; + } + + @JsonProperty("id") + @JsonInclude(JsonInclude.Include.USE_DEFAULTS) + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public Rate codeCityTo(String codeCityTo) { + this.codeCityTo = codeCityTo; + return this; + } + + @JsonProperty("codeCityTo") + @JsonInclude(JsonInclude.Include.USE_DEFAULTS) + public String getCodeCityTo() { + return this.codeCityTo; + } + + public void setCodeCityTo(String codeCityTo) { + this.codeCityTo = codeCityTo; + } + + public Rate codeCountryTo(String codeCountryTo) { + this.codeCountryTo = codeCountryTo; + return this; + } + + @JsonProperty("codeCountryTo") + @JsonInclude(JsonInclude.Include.USE_DEFAULTS) + public String getCodeCountryTo() { + return this.codeCountryTo; + } + + public void setCodeCountryTo(String codeCountryTo) { + this.codeCountryTo = codeCountryTo; + } + + public Rate codeCityFrom(String codeCityFrom) { + this.codeCityFrom = codeCityFrom; + return this; + } + + @JsonProperty("codeCityFrom") + @JsonInclude(JsonInclude.Include.USE_DEFAULTS) + public String getCodeCityFrom() { + return this.codeCityFrom; + } + + public void setCodeCityFrom(String codeCityFrom) { + this.codeCityFrom = codeCityFrom; + } + + public Rate codeCountryFrom(String codeCountryFrom) { + this.codeCountryFrom = codeCountryFrom; + return this; + } + + @JsonProperty("codeCountryFrom") + @JsonInclude(JsonInclude.Include.USE_DEFAULTS) + public String getCodeCountryFrom() { + return this.codeCountryFrom; + } + + public void setCodeCountryFrom(String codeCountryFrom) { + this.codeCountryFrom = codeCountryFrom; + } + + public Rate amount(BigDecimal amount) { + this.amount = amount; + return this; + } + + @JsonProperty("amount") + @JsonInclude(JsonInclude.Include.USE_DEFAULTS) + public BigDecimal getAmount() { + return this.amount; + } + + public void setAmount(BigDecimal amount) { + this.amount = amount; + } + + public Rate date(String date) { + this.date = date; + return this; + } + + @JsonProperty("date") + @JsonInclude(JsonInclude.Include.USE_DEFAULTS) + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public Rate validityBeginDate(String validityBeginDate) { + this.validityBeginDate = validityBeginDate; + return this; + } + + @JsonProperty("validityBeginDate") + @JsonInclude(JsonInclude.Include.USE_DEFAULTS) + public String getValidityBeginDate() { + return this.validityBeginDate; + } + + public void setValidityBeginDate(String validityBeginDate) { + this.validityBeginDate = validityBeginDate; + } + + public Rate validityEndDate(String validityEndDate) { + this.validityEndDate = validityEndDate; + return this; + } + + @JsonProperty("validityEndDate") + @JsonInclude(JsonInclude.Include.USE_DEFAULTS) + public String getValidityEndDate() { + return this.validityEndDate; + } + + public void setValidityEndDate(String validityEndDate) { + this.validityEndDate = validityEndDate; + } + + public Rate year(Long year) { + this.year = year; + return this; + } + + @JsonProperty("year") + @JsonInclude(JsonInclude.Include.USE_DEFAULTS) + public Long getYear() { + return this.year; + } + + public void setYear(Long year) { + this.year = year; + } + + public Rate type(Rate.TypeEnum type) { + this.type = type; + return this; + } + + @JsonProperty("type") + @JsonInclude(JsonInclude.Include.USE_DEFAULTS) + public Rate.TypeEnum getType() { + return this.type; + } + + public void setType(Rate.TypeEnum type) { + this.type = type; + } + + public Rate current(Boolean current) { + this.current = current; + return this; + } + + @JsonProperty("current") + @JsonInclude(JsonInclude.Include.USE_DEFAULTS) + public Boolean getCurrent() { + return this.current; + } + + public void setCurrent(Boolean current) { + this.current = current; + } + + public boolean equals(Object o) { + if (this == o) { + return true; + } else if (o != null && this.getClass() == o.getClass()) { + Rate rate = (Rate)o; + return Objects.equals(this.id, rate.id) && Objects.equals(this.codeCityTo, rate.codeCityTo) && Objects.equals(this.codeCountryTo, rate.codeCountryTo) && Objects.equals(this.codeCityFrom, rate.codeCityFrom) && Objects.equals(this.codeCountryFrom, rate.codeCountryFrom) && Objects.equals(this.amount, rate.amount) && Objects.equals(this.date, rate.date) && Objects.equals(this.validityBeginDate, rate.validityBeginDate) && Objects.equals(this.validityEndDate, rate.validityEndDate) && Objects.equals(this.year, rate.year) && Objects.equals(this.type, rate.type) && Objects.equals(this.current, rate.current); + } else { + return false; + } + } + + public int hashCode() { + return Objects.hash(this.id, this.codeCityTo, this.codeCountryTo, this.codeCityFrom, this.codeCountryFrom, this.amount, this.date, this.validityBeginDate, this.validityEndDate, this.year, this.type, this.current); + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class Rate {\n"); + sb.append(" id: ").append(this.toIndentedString(this.id)).append("\n"); + sb.append(" codeCityTo: ").append(this.toIndentedString(this.codeCityTo)).append("\n"); + sb.append(" codeCountryTo: ").append(this.toIndentedString(this.codeCountryTo)).append("\n"); + sb.append(" codeCityFrom: ").append(this.toIndentedString(this.codeCityFrom)).append("\n"); + sb.append(" codeCountryFrom: ").append(this.toIndentedString(this.codeCountryFrom)).append("\n"); + sb.append(" amount: ").append(this.toIndentedString(this.amount)).append("\n"); + sb.append(" date: ").append(this.toIndentedString(this.date)).append("\n"); + sb.append(" validityBeginDate: ").append(this.toIndentedString(this.validityBeginDate)).append("\n"); + sb.append(" validityEndDate: ").append(this.toIndentedString(this.validityEndDate)).append("\n"); + sb.append(" year: ").append(this.toIndentedString(this.year)).append("\n"); + sb.append(" type: ").append(this.toIndentedString(this.type)).append("\n"); + sb.append(" current: ").append(this.toIndentedString(this.current)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + private String toIndentedString(Object o) { + return o == null ? "null" : o.toString().replace("\n", "\n "); + } + + public enum TypeEnum { + AIRFREIGHT("AIRFREIGHT"), + CAR("CAR"), + STORAGE("STORAGE"), + EIS("EIS"), + EFS("EFS"), + TUD_STAFF_MEMBER("TUD_STAFF_MEMBER"), + INS("INS"), + RES("RES"), + SURFACE("SURFACE"), + TUD_DEPENDENT("TUD_DEPENDENT"); + + private final String value; + + TypeEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return this.value; + } + + @Override + public String toString() { + return String.valueOf(this.value); + } + + @JsonCreator + public static Rate.TypeEnum fromValue(String value) { + Rate.TypeEnum[] var1 = values(); + int var2 = var1.length; + + for(int var3 = 0; var3 < var2; ++var3) { + Rate.TypeEnum b = var1[var3]; + if (b.value.equals(value)) { + return b; + } + } + + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } +} + diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ws/VAssignmentHistEeasModel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ws/VAssignmentHistEeasModel.java new file mode 100644 index 0000000..856dd67 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ws/VAssignmentHistEeasModel.java @@ -0,0 +1,35 @@ +package eu.europa.eeas.erights.common.service.model.ws; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.erights.common.service.model.VJobModel; +import java.time.LocalDate; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class VAssignmentHistEeasModel extends AbstractModel { + + + private Long id; + + private Long perId; + + private Long jcxId; + + private Long jobId; + + private String jobType; + + private LocalDate startDate; + + private LocalDate endDate; + + private String insCd; + + private Long delegationOrgId; + + private VJobModel job; + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ws/skyscanner/FlightsLivePricesResponse.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ws/skyscanner/FlightsLivePricesResponse.java new file mode 100644 index 0000000..480b948 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ws/skyscanner/FlightsLivePricesResponse.java @@ -0,0 +1,33 @@ +package eu.europa.eeas.erights.common.service.model.ws.skyscanner; + +import java.util.List; + +/** + * Simplified model for the JSON response of Flights Live Prices service of + * Skyscanner: https://skyscanner.github.io/slate/#api-documentation + * + * @author idominju + * + */ +public class FlightsLivePricesResponse { + + private String status; + private List itineraries; + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public List getItineraries() { + return itineraries; + } + + public void setItineraries(List itineraries) { + this.itineraries = itineraries; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ws/skyscanner/Itinerary.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ws/skyscanner/Itinerary.java new file mode 100644 index 0000000..9c62d37 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ws/skyscanner/Itinerary.java @@ -0,0 +1,34 @@ +package eu.europa.eeas.erights.common.service.model.ws.skyscanner; + +public class Itinerary { + + private String id; + private Double price; + private Double durationMinutes; + + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + + public Double getPrice() { + return price; + } + + public void setPrice(Double price) { + this.price = price; + } + + public Double getDurationMinutes() { + return durationMinutes; + } + + public void setDurationMinutes(Double durationMinutes) { + this.durationMinutes = durationMinutes; + } + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ws/skyscanner/Session.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ws/skyscanner/Session.java new file mode 100644 index 0000000..e3410ac --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/model/ws/skyscanner/Session.java @@ -0,0 +1,135 @@ +package eu.europa.eeas.erights.common.service.model.ws.skyscanner; + +import java.time.LocalDate; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import eu.europa.eeas.ananke.core.service.model.AbstractModel; + +public class Session extends AbstractModel { + + private static final long serialVersionUID = 1L; + + + @JsonProperty("cabinclass") + private String cabinClass; // Economy + + private String country; // =UK + private String currency; // =GBP + private String locale; // =en-GB + + private String locationSchema; // =iata + + @JsonProperty("originplace") + private String originPlace; // =EDI + + @JsonProperty("destinationplace") + private String destinationPlace; // =LHR + + @JsonProperty("outbounddate") + private LocalDate outboundDate; // =2017-05-30 + + @JsonProperty("inbounddate") + private LocalDate inboundDate; // =2017-06-02 + + private Integer adults; // =1 + private Integer children; // =0 + private Integer infants; + + public String getCabinClass() { + return cabinClass; + } + + public void setCabinClass(String cabinClass) { + this.cabinClass = cabinClass; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getLocale() { + return locale; + } + + public void setLocale(String locale) { + this.locale = locale; + } + + public String getLocationSchema() { + return locationSchema; + } + + public void setLocationSchema(String locationSchema) { + this.locationSchema = locationSchema; + } + + public String getOriginPlace() { + return originPlace; + } + + public void setOriginPlace(String originPlace) { + this.originPlace = originPlace; + } + + public String getDestinationPlace() { + return destinationPlace; + } + + public void setDestinationPlace(String destinationPlace) { + this.destinationPlace = destinationPlace; + } + + public LocalDate getOutboundDate() { + return outboundDate; + } + + public void setOutboundDate(LocalDate outboundDate) { + this.outboundDate = outboundDate; + } + + public LocalDate getInboundDate() { + return inboundDate; + } + + public void setInboundDate(LocalDate inboundDate) { + this.inboundDate = inboundDate; + } + + public Integer getAdults() { + return adults; + } + + public void setAdults(Integer adults) { + this.adults = adults; + } + + public Integer getChildren() { + return children; + } + + public void setChildren(Integer children) { + this.children = children; + } + + public Integer getInfants() { + return infants; + } + + public void setInfants(Integer infants) { + this.infants = infants; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/BankAccountServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/BankAccountServiceProvider.java new file mode 100644 index 0000000..acf1ffa --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/BankAccountServiceProvider.java @@ -0,0 +1,66 @@ +package eu.europa.eeas.erights.common.service.provider; + +import eu.europa.eeas.ananke.core.base.Profiles; +import eu.europa.eeas.ananke.core.base.context.AnankeContext; +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.PersonBankInfoJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.PersonBankInfoJpaRepository; +import eu.europa.eeas.erights.common.service.model.declaration.PersonBankInfoModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.stream.Collectors; + +@Service +public class BankAccountServiceProvider extends AbstractServiceProvider { + + @Autowired + private PersonBankInfoJpaRepository personBankInfoJpaRepository; + + @Autowired + private AnankeContext anankeContext; + + public List getPersonBankInfo(Long personId) { + List personBankInfoJpaEntities = personBankInfoJpaRepository.findAllByPerIdAndLefNotNullAndBankIdentificationNotNull(personId); + List personBankInfoModels = getBeanMapper().mapAsList(personBankInfoJpaEntities, PersonBankInfoModel.class); + + return getValidBankAccounts(personBankInfoModels); + } + + + + private List getValidBankAccounts(List personBankInfoJpaEntities) { + return personBankInfoJpaEntities.stream() + .filter(personBankInfoModel -> Objects.nonNull(personBankInfoModel.getIbanCode()) || Objects.nonNull(personBankInfoModel.getBankAccountCode())) + .map(this::getIbanCodeIfDoesNotExistOne) + .collect(Collectors.toList()); + } + + public PersonBankInfoModel getIbanCodeIfDoesNotExistOne(PersonBankInfoModel personBankInfoModel) { + if (Objects.isNull(personBankInfoModel.getIbanCode()) && Objects.nonNull(personBankInfoModel.getBankAccountCode())) { + personBankInfoModel.setIbanCode(personBankInfoModel.getBankAccountCode()); + } + return personBankInfoModel; + } + + + + public PersonBankInfoJpaEntity getNewPersonBankInfoJpaEntity(Long perId, String ibanCode) { + + PersonBankInfoModel personBankInfoModel = new PersonBankInfoModel(); + personBankInfoModel.setPerId(perId); + personBankInfoModel.setIbanCode(ibanCode); + return personBankInfoJpaRepository.save(getBeanMapper().map(personBankInfoModel, PersonBankInfoJpaEntity.class)); + } + + public boolean isBankAccountAlreadyExist(Long perId, String ibanCode) { + + Optional> personBankInfoJpaEntities = personBankInfoJpaRepository.findByPerIdAndIbanCode( + perId, ibanCode); + return personBankInfoJpaEntities.isPresent() && !personBankInfoJpaEntities.get().isEmpty(); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/ERightsWebDataSupplierServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/ERightsWebDataSupplierServiceProvider.java new file mode 100644 index 0000000..6cbaac4 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/ERightsWebDataSupplierServiceProvider.java @@ -0,0 +1,30 @@ +package eu.europa.eeas.erights.common.service.provider; + +import eu.europa.eeas.ananke.tools.usermanagement.UserManagementHelper; +import eu.europa.eeas.ananke.tools.usermanagement.service.model.UserManagementUserAdditionalDataModel; +import eu.europa.eeas.ananke.tools.web.service.WebDataSupplierService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class ERightsWebDataSupplierServiceProvider implements WebDataSupplierService { + + @Autowired + private UserManagementHelper userManagementHelper; + + @Override + public Boolean isActingOnBehalf() { + return false; + } + + @Override + public String getUserLabel() { + StringBuilder result = new StringBuilder(); + + UserManagementUserAdditionalDataModel userManagementAdditionalData = this.userManagementHelper.getAdditionalData(); + result.append(userManagementAdditionalData.getDisplayName()); + + return result.toString(); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/PermissionsServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/PermissionsServiceProvider.java new file mode 100644 index 0000000..ffb8b6d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/PermissionsServiceProvider.java @@ -0,0 +1,105 @@ +package eu.europa.eeas.erights.common.service.provider; + +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.security.MovementFilePermission; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.security.PostingAllowancePermission; +import eu.europa.eeas.erights.common.security.PostingAllowanceSecurityChecker; +import eu.europa.eeas.erights.common.service.model.PermissionsModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +@Service +public class PermissionsServiceProvider extends AbstractServiceProvider { + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + private MovementFileSecurityChecker securityChecker; + + @Autowired + @Qualifier(ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER) + private PostingAllowanceSecurityChecker postingAllowanceSecurityChecker; + + public PermissionsModel getPermissions(Long movementFileId) { + PermissionsModel permissions = new PermissionsModel(); + permissions.setCanCreate(securityChecker.canCreate()); + permissions.setCanConfirm(securityChecker.canConfirm(movementFileId)); + permissions.setCanDelete(securityChecker.canDelete(movementFileId)); + permissions.setCanUpdate(securityChecker.canUpdate(movementFileId)); + permissions.setCanExport(securityChecker.canList()); + permissions.setCanWithdraw(securityChecker.canWithdraw(movementFileId)); + + permissions.setCanComplete(securityChecker.canComplete(movementFileId)); + permissions.setCanCancel(securityChecker.canCancel(movementFileId)); + permissions.setCanReopen(securityChecker.canReopen(movementFileId)); + + permissions.setIsOwner(securityChecker.isOwner(movementFileId)); + permissions.setCanView(securityChecker.canView(movementFileId)); + permissions.setIsOwnerOfAtLeastOneMovementFile(securityChecker.isOwnerOfAtLeastOneMovementFile()); + permissions.setCanConsultEntitlements(securityChecker.canConsultEntitlements(movementFileId)); + permissions.setCanUpdateEntitlements(securityChecker.canUpdateEntitlements(movementFileId)); + permissions.setCanUpdateDeclaration(securityChecker.canUpdateDeclaration(movementFileId)); + permissions.setCanPayTudRequestManually(securityChecker.canPayTudRequestManually(movementFileId)); + permissions.setCanPayTudRequestAbac(securityChecker.canPayTudRequestAbac(movementFileId)); + permissions.setCanReviewTudRequest(securityChecker.canReviewTudRequest(movementFileId)); + permissions.setCanResubmitTudRequest(securityChecker.canResubmitTudRequest(movementFileId)); + permissions.setCanReviewRemRequest(securityChecker.canReviewRemRequest(movementFileId)); + permissions.setCanEditRemRequest(securityChecker.canEditRemRequest(movementFileId)); + permissions.setCanApproveRemRequest(securityChecker.canApproveRemRequest(movementFileId)); + permissions.setCanRejectRemRequest(securityChecker.canRejectRemRequest(movementFileId)); + permissions.setCanPayRemRequestManually(securityChecker.canPayRemRequestManually(movementFileId)); + permissions.setCanPayRemRequestAbac(securityChecker.canPayRemRequestAbac(movementFileId)); + permissions.setCanSubmitRemRequest(securityChecker.canSubmitRemRequest(movementFileId)); + permissions.setCanResubmitRemRequest(securityChecker.canResubmitRemRequest(movementFileId)); + permissions.setCanRejectPaidTudRequest(securityChecker.canRejectPaidTudRequest(movementFileId)); + permissions.setCanApproveInstallationRequest(securityChecker.canApproveInstallation()); + permissions.setCanPayInstallationManually(securityChecker.canPayInstallationManually()); + permissions.setCanRequestInstallationSysperPayment( + securityChecker.canRequestInstallationSysperPayment()); + permissions.setCanRejectInstallation(securityChecker.canRejectInstallation()); + permissions.setCanUpdateInstallationPaymentInSysper( + securityChecker.canUpdateInstallationPaymentInSysper()); + permissions.setCanEditInstallation(securityChecker.canEditInstallation()); + permissions.setCanRequestUpdatePaid(securityChecker.canRequestUpdatePaid()); + permissions.setCanResetInstallationRequestFromApproved(securityChecker.canResetInstallationRequestFromApproved()); + permissions.setCanResetInstallationRequestToDraft(securityChecker.canResetInstallationRequestToDraft()); + permissions.setCanRefreshInstallationRequest(securityChecker.canRefreshInstallation()); + permissions.setCanSubmitInstallationRequest(securityChecker.canSubmitInstallationRequest()); + permissions.setCanDeleteComments(securityChecker.canDeleteComments()); + permissions.setCanPayTopUpRequestAbac(securityChecker.canPayTopUpRequestAbac(movementFileId)); + permissions.setCanPayTopUpRequestManually(securityChecker.canPayTopUpRequestManually(movementFileId)); + permissions.setCanSubmitTopUpRequest(securityChecker.canSubmitTopUpRequest(movementFileId)); + permissions.setCanRejectTopUpRequest(securityChecker.canRejectTopUpRequest(movementFileId)); + permissions.setCanApproveTopUpRequest(securityChecker.canApproveTopUpRequest(movementFileId)); + permissions.setCanResubmitTopUpRequest(securityChecker.canResubmitTopUpRequest(movementFileId)); + permissions.setCanCreateResettlementRequest(securityChecker.hasOrganisationIndependentAuthority( + MovementFilePermission.REQUEST_RST_CREATE)); + permissions.setCanSubmitResettlementRequest(securityChecker.hasOrganisationIndependentAuthority( + MovementFilePermission.REQUEST_RST_SUBMIT)); + permissions.setCanApproveResettlementRequest(securityChecker.hasOrganisationIndependentAuthority( + MovementFilePermission.REQUEST_RST_APPROVE)); + permissions.setCanRejectResettlementRequest(securityChecker.hasOrganisationIndependentAuthority( + MovementFilePermission.REQUEST_RST_REJECT)); + permissions.setCanResetResettlementRequest(securityChecker.hasOrganisationIndependentAuthority( + MovementFilePermission.REQUEST_RST_RESET)); + permissions.setCanResetApprovalResettlementRequest(securityChecker.hasOrganisationIndependentAuthority( + MovementFilePermission.REQUEST_RST_RESET_APPROVAL)); + permissions.setCanResetPaymentResettlementRequest(securityChecker.hasOrganisationIndependentAuthority( + MovementFilePermission.REQUEST_RST_RESET_PAYMENT)); + permissions.setCanPaySysperResettlementRequest(securityChecker.hasOrganisationIndependentAuthority( + MovementFilePermission.REQUEST_RST_PAY_SYSPER)); + permissions.setCanPayManuallyResettlementRequest(securityChecker.hasOrganisationIndependentAuthority( + MovementFilePermission.REQUEST_RST_PAY_MANUALLY)); + permissions.setCanAccessBackOffice(securityChecker.canAccessBackOffice()); + permissions.setCanListPostingEntitlements(postingAllowanceSecurityChecker.canListPostingEntitlements()); + permissions.setCanListMovementFiles(securityChecker.canList()); + permissions.setCanListRotationalEntitlements(securityChecker.canConsultEntitlements()); + permissions.setCanOwnAtLeastOnePostingAllowance(postingAllowanceSecurityChecker.isOwnerOfAtLeastOnePostingAllowance()); + + permissions.setCanCreateAccommodationDeclaration(postingAllowanceSecurityChecker.canCreateAccommodationDeclaration()); + return permissions; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/PostingAllowancePermissionServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/PostingAllowancePermissionServiceProvider.java new file mode 100644 index 0000000..8d55ab9 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/PostingAllowancePermissionServiceProvider.java @@ -0,0 +1,124 @@ +package eu.europa.eeas.erights.common.service.provider; + +import static eu.europa.eeas.erights.common.security.PostingAllowancePermission.*; + +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.security.PostingAllowanceSecurityChecker; +import eu.europa.eeas.erights.common.service.model.PostingAllowancePermissionModel; +import java.util.ArrayList; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +@Service +public class PostingAllowancePermissionServiceProvider extends AbstractServiceProvider { + + @Autowired + @Qualifier(ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER) + private PostingAllowanceSecurityChecker securityChecker; + + public PostingAllowancePermissionModel getPermissions() { + PostingAllowancePermissionModel permissions = new PostingAllowancePermissionModel(); + permissions.setCanCreateRegularization(securityChecker.canCreateRegularization()); + permissions.setCanApprove(securityChecker.canApprove()); + permissions.setCanConsult(securityChecker.canConsult()); + permissions.setCanPayManually(securityChecker.canPayManually()); + permissions.setCanPaySysper(securityChecker.canPaySysper()); + permissions.setCanResubmit(securityChecker.canResubmit()); + permissions.setCanReject(securityChecker.canReject()); + permissions.setCanDeleteComments(securityChecker.canDeleteComments()); + permissions.setCanOwnAtLeastOnePostingAllowance(securityChecker.isOwnerOfAtLeastOnePostingAllowance()); + permissions.setCanSaveChanges(securityChecker.canSaveChanges()); + permissions.setHasOrganisationsWithListAuthority(securityChecker.hasOrganisationsWithListAuthority()); + permissions.setHasOrganisationIndependentListAuthority(securityChecker.hasOrganisationIndependentListAuthority()); + addAccommodationDeclarationPermissions(permissions); + addAccommodationPaymentPermissions(permissions); + return permissions; + } + + private void addAccommodationDeclarationPermissions( + PostingAllowancePermissionModel permissions) { + List permissionsList = new ArrayList<>(); + if (Boolean.TRUE.equals(securityChecker.hasOrganisationIndependentAuthority(ACCOMMODATION_DECLARATION_CREATE))) { + permissionsList.add(ACCOMMODATION_DECLARATION_CREATE.getAction()); + } + if (Boolean.TRUE.equals(securityChecker.hasOrganisationIndependentAuthority( + ACCOMMODATION_DECLARATION_APPROVE))) { + permissionsList.add(ACCOMMODATION_DECLARATION_APPROVE.getAction()); + } + if (Boolean.TRUE.equals(securityChecker.hasOrganisationIndependentAuthority(ACCOMMODATION_DECLARATION_SUBMIT))) { + permissionsList.add(ACCOMMODATION_DECLARATION_SUBMIT.getAction()); + } + if (Boolean.TRUE.equals(securityChecker.hasOrganisationIndependentAuthority(ACCOMMODATION_DECLARATION_REJECT))) { + permissionsList.add(ACCOMMODATION_DECLARATION_REJECT.getAction()); + } + if (Boolean.TRUE.equals(securityChecker.hasOrganisationIndependentAuthority(ACCOMMODATION_DECLARATION_RESET))) { + permissionsList.add(ACCOMMODATION_DECLARATION_RESET.getAction()); + } + if (Boolean.TRUE.equals(securityChecker.hasOrganisationIndependentAuthority( + ACCOMMODATION_DECLARATION_RESET_APPROVAL))) { + permissionsList.add(ACCOMMODATION_DECLARATION_RESET_APPROVAL.getAction()); + } + if (Boolean.TRUE.equals(securityChecker.hasOrganisationIndependentAuthority( + ACCOMMODATION_DECLARATION_COMPLETE))) { + permissionsList.add(ACCOMMODATION_DECLARATION_COMPLETE.getAction()); + } + permissions.setAccDeclarationPermissions(permissionsList); + } + private void addAccommodationPaymentPermissions( + PostingAllowancePermissionModel permissions) { + List permissionsList = new ArrayList<>(); + if (Boolean.TRUE.equals( + securityChecker.hasOrganisationIndependentAuthority(ACCOMMODATION_PAYMENT_CREATE))) { + permissionsList.add(ACCOMMODATION_PAYMENT_CREATE.getAction()); + } + if (Boolean.TRUE.equals(securityChecker.hasOrganisationIndependentAuthority( + ACCOMMODATION_PAYMENT_SUBMIT))) { + permissionsList.add(ACCOMMODATION_PAYMENT_SUBMIT.getAction()); + } + if (Boolean.TRUE.equals( + securityChecker.hasOrganisationIndependentAuthority(ACCOMMODATION_PAYMENT_APPROVE))) { + permissionsList.add(ACCOMMODATION_PAYMENT_APPROVE.getAction()); + } + if (Boolean.TRUE.equals( + securityChecker.hasOrganisationIndependentAuthority(ACCOMMODATION_PAYMENT_REJECT))) { + permissionsList.add(ACCOMMODATION_PAYMENT_REJECT.getAction()); + } + if (Boolean.TRUE.equals( + securityChecker.hasOrganisationIndependentAuthority(ACCOMMODATION_PAYMENT_RESET))) { + permissionsList.add(ACCOMMODATION_PAYMENT_RESET.getAction()); + } + if (Boolean.TRUE.equals(securityChecker.hasOrganisationIndependentAuthority( + ACCOMMODATION_PAYMENT_RESET_APPROVAL))) { + permissionsList.add(ACCOMMODATION_PAYMENT_RESET_APPROVAL.getAction()); + } + if (Boolean.TRUE.equals(securityChecker.hasOrganisationIndependentAuthority( + ACCOMMODATION_PAYMENT_PAY))) { + permissionsList.add(ACCOMMODATION_PAYMENT_PAY.getAction()); + } + if (Boolean.TRUE.equals(securityChecker.hasOrganisationIndependentAuthority( + ACCOMMODATION_PAYMENT_SUBMIT_POP))) { + permissionsList.add(ACCOMMODATION_PAYMENT_SUBMIT_POP.getAction()); + } + if (Boolean.TRUE.equals(securityChecker.hasOrganisationIndependentAuthority( + ACCOMMODATION_PAYMENT_VALIDATE_POP))) { + permissionsList.add(ACCOMMODATION_PAYMENT_VALIDATE_POP.getAction()); + } + if (Boolean.TRUE.equals(securityChecker.hasOrganisationIndependentAuthority( + ACCOMMODATION_PAYMENT_REJECT_POP))) { + permissionsList.add(ACCOMMODATION_PAYMENT_REJECT_POP.getAction()); + } + if (Boolean.TRUE.equals(securityChecker.hasOrganisationIndependentAuthority( + ACCOMMODATION_PAYMENT_FINALISE_PAYMENT))) { + permissionsList.add(ACCOMMODATION_PAYMENT_FINALISE_PAYMENT.getAction()); + } + if (Boolean.TRUE.equals(securityChecker.hasOrganisationIndependentAuthority( + ACCOMMODATION_PAYMENT_PAY))) { + permissionsList.add(ACCOMMODATION_PAYMENT_PAY.getAction()); + } + permissions.setAccPaymentPermissions(permissionsList); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/ProceduresForMovementFileServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/ProceduresForMovementFileServiceProvider.java new file mode 100644 index 0000000..978ecb3 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/ProceduresForMovementFileServiceProvider.java @@ -0,0 +1,87 @@ +package eu.europa.eeas.erights.common.service.provider; + +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.MovementFileJpaRepository; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.declaration.DeclarationJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import eu.europa.eeas.erights.common.service.model.declaration.TudEligibilityModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +/** + * TODO TO BE DELETED + */ +public class ProceduresForMovementFileServiceProvider extends AbstractServiceProvider { + + @Autowired + private MovementFileJpaRepository movementFileJpaRepository; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + + + @Autowired + private MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + + + + @Autowired + private DeclarationJpaServiceProvider declarationJpaServiceProvider; + + + + + + + + + public void updateTUDEligibility() { + List declarations = declarationJpaServiceProvider.read(); + + declarations.forEach(decl -> { + try { + MovementFileModel movementFile = movementFileJpaServiceProvider.read(decl.getMovementFileId()); + decl.getDeclarationPersons().forEach(declarationPerson -> { + TudEligibilityModel eligible = declarationJpaServiceProvider.isTudEligible(declarationPerson.getRelative(), movementFile); + declarationPerson.setTudEligible(eligible.getTudEligible()); + declarationPerson.setTudEligibleReason(eligible.getTudNoEligibilityReason()); + }); + declarationJpaServiceProvider.update(decl); + } catch (Exception e) { + getLogger().error("exception occurred when updating TUD eligibility for decl:: {}", decl.getId(), e); + } + }); + } + + public void removeMovementFiles(Long movementFileId) { + Iterable allMovementFiles = movementFileJpaRepository.findByIdLessThan(movementFileId); + + getLogger().info("Starting removing MF ..."); + + allMovementFiles.forEach(movementFile -> { + try { + MovementFileJpaServiceProvider movementFileProvider = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(MovementFileModel.class); + movementFileProvider.deleteMovementFileNoValidation(movementFile.getId()); + + + getLogger().info("DELETED : MF id:{} budgetLine:{}, movementType:{}", movementFile.getId(), movementFile.getBudgetLine(), movementFile.getMovementType().getMovementType()); + + } catch (Exception e) { + getLogger().error("exception deleting for MF:" + movementFile.getId(), e); + } + }); + + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/RequestServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/RequestServiceProvider.java new file mode 100644 index 0000000..147a904 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/RequestServiceProvider.java @@ -0,0 +1,4 @@ +package eu.europa.eeas.erights.common.service.provider; + +public class RequestServiceProvider { +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/address/PersonAddressJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/address/PersonAddressJpaServiceProvider.java new file mode 100644 index 0000000..e10e078 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/address/PersonAddressJpaServiceProvider.java @@ -0,0 +1,44 @@ +package eu.europa.eeas.erights.common.service.provider.address; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonAddressJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.PersonAddressJpaRepository; +import eu.europa.eeas.erights.common.service.model.PersonAddressModel; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + + +/** + * @author ienaccat + * @since 5.0.0 + */ +@Service +@Transactional +@RequiredArgsConstructor +public class PersonAddressJpaServiceProvider extends + AbstractDataServiceProvider + implements EntityReader { + + private final PersonAddressJpaRepository personAddressJpaRepository; + + + @Override + public Class getModelType() { + return PersonAddressModel.class; + } + + @Override + public Class getEntityType() { + return PersonAddressJpaEntity.class; + } + + + @Cacheable(value = "personAddressByPerIdAddressTypeCode", key = "{#perId, #addressTypeCode}") + public List findAllByPerIdAndTadrCd(Long perId, Integer addressTypeCode) { + return getBeanMapper().mapAsList(personAddressJpaRepository.findAllByPerIdAndTadrCd(perId, addressTypeCode), PersonAddressModel.class); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/AccommodationDeclarationAllowanceJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/AccommodationDeclarationAllowanceJpaServiceProvider.java new file mode 100644 index 0000000..2d0d35f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/AccommodationDeclarationAllowanceJpaServiceProvider.java @@ -0,0 +1,514 @@ +package eu.europa.eeas.erights.common.service.provider.allowances; + +import com.google.common.collect.Iterables; +import eu.europa.eeas.ananke.core.base.exception.NotAllowedRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ValidationRuntimeException; +import eu.europa.eeas.ananke.core.base.user.User; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.ananke.tools.filemanagement.FileManager; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.ananke.tools.statemachine.service.history.StateMachineHistoryHolder; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionResultModel; +import eu.europa.eeas.erights.common.data.jpa.entity.VPersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.AccommodationDeclarationAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.VPersonJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.allowances.AccommodationDeclarationAllowanceJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.PostingAllowanceSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.PersonJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.VAssignmentHistJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.VJobJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.declaration.FamilyMemberJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.declaration.MVPersonAccommodationJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.validation.Violation; +import eu.europa.eeas.erights.common.service.model.PersonAddressModel; +import eu.europa.eeas.erights.common.service.model.PersonModel; +import eu.europa.eeas.erights.common.service.model.VJobModel; +import eu.europa.eeas.erights.common.service.model.VPersonModel; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationDeclarationAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationDeclarationPersonModel; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationPaymentAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceSupportingDocAttachmentModel; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceSupportingDocModel; +import eu.europa.eeas.erights.common.service.model.declaration.FamilyMemberModel; +import eu.europa.eeas.erights.common.service.model.declaration.MVPersonAccommodationModel; +import eu.europa.eeas.erights.common.service.provider.address.PersonAddressJpaServiceProvider; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationDeclarationEvent; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationDeclarationState; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationPaymentState; +import eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceMessageHeader; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashSet; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.javamoney.moneta.Money; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + + +/** + * @author ienaccat + * @since 5.0.0 + */ +@Service +@Transactional +@RequiredArgsConstructor +public class AccommodationDeclarationAllowanceJpaServiceProvider extends + AbstractDataServiceProvider + implements EntityReader, + EntityUpdater, + EntityDeleter, + EntityCreator { + + public static final String POSTING_ALLOWANCE_TYPE = "ART.23 ACCOMMODATION"; + public static final String POSTING_ALLOWANCE_DECL_REQ_TYPE = "DECLARATION"; + public static final String ACCOMMODATION_DECL_STR_FORMAT = "%d-ACD-%04d"; + public static final Integer PERSONAL_PRIVATE_ADDRESS_CODE = 1; + public static final String EUR_CURRENCY = "EUR"; + + private final StateMachineService allowancesStateMachineService; + private final DataServiceProviderRegistry dataServiceProviderRegistry; + private final AccommodationDeclarationAllowanceJpaRepository accommodationDeclarationJpaRepository; + private final VJobJpaServiceProvider vJobJpaServiceProvider; + private final PostingAllowanceSecurityChecker securityChecker; + private final VPersonJpaRepository vPersonJpaRepository; + private final PersonAddressJpaServiceProvider personAddressJpaServiceProvider; + private final MVPersonAccommodationJpaServiceProvider personAccommodationServiceProvider; + private final FileManager fileManager; + private final AccommodationPaymentAllowanceJpaServiceProvider accommodationPaymentAllowanceJpaServiceProvider; + + @Override + public Class getModelType() { + return AccommodationDeclarationAllowanceModel.class; + } + + @Override + public Class getEntityType() { + return AccommodationDeclarationAllowanceJpaEntity.class; + } + + /** + * creates a new Accommodation Declaration + * + * @param perId + * @return + */ + public AccommodationDeclarationAllowanceModel createAccommodationDeclaration( + Long perId) { + Set violations = new HashSet<>(); + + MVPersonAccommodationModel personAccommodationModel =personAccommodationServiceProvider.findById(perId); + if (personAccommodationModel == null) { + getLogger().error( + "Staff having perId={} not eligible for creation of an Accommodation Declaration", perId); + violations.add(new Violation(ERightsExceptionCode.ER044, + String.format(ERightsExceptionCode.ER044.getDescription(), perId))); + throwViolation(violations); + } + Long sojId = personAccommodationModel.getSojId(); + if (sojId == null) { + violations.add(new Violation(ERightsExceptionCode.ER043, String.format(ERightsExceptionCode.ER043.getDescription(), perId))); + throwViolation(violations); + } + getLogger().info("For personId: {} last assignmentId is: {}", perId, sojId); + + AccommodationDeclarationAllowanceModel declarationAllowanceModel = new AccommodationDeclarationAllowanceModel(); + + VPersonModel personModel = getBeanMapper().map(personAccommodationModel, VPersonModel.class); + //exercise year + Integer year = Integer.parseInt(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy"))); + Money amountTotal = Money.of(0, EUR_CURRENCY); + declarationAllowanceModel.setCalcTotalAmount(amountTotal); + declarationAllowanceModel.setTotalAmount(amountTotal); + + declarationAllowanceModel.setSojId(sojId); + declarationAllowanceModel.setStaffMember(personModel); + declarationAllowanceModel.setExerciseYear(year); + declarationAllowanceModel.setPostingAllowanceType(POSTING_ALLOWANCE_TYPE); + declarationAllowanceModel.setPostingAllowanceReqType(POSTING_ALLOWANCE_DECL_REQ_TYPE); + addAccommodationDeclarationAllowanceFields(declarationAllowanceModel); + if (personAccommodationModel.getJobId() == null) { + getLogger().error("No jobId found for perId={} while creating an Accommodation Declaration", perId); + violations.add(new Violation(ERightsExceptionCode.ER042, String.format(ERightsExceptionCode.ER042.getDescription(), perId))); + throwViolation(violations); + } + + VJobModel job = vJobJpaServiceProvider.get(personAccommodationModel.getJobId()); + declarationAllowanceModel.setAssignmentCityName(job != null ? job.getJobCityName() : null); + declarationAllowanceModel.setAssignmentCountryName(job != null ? job.getCountryName() : null); + declarationAllowanceModel.setAssignmentCountryCode(job != null ? job.getJobCountryCode() : null); + declarationAllowanceModel.setAssignmentStartDate(personAccommodationModel.getAssignedStartDate()); + + //create the accommodation declaration + AccommodationDeclarationAllowanceModel createdModel = this.create(declarationAllowanceModel); + + //generate family members + createdModel.setFamilyMembers(generateFamilyMembers(createdModel)); + + StateMachineTransitionResultModel transitionResult = + this.allowancesStateMachineService.send(declarationAllowanceModel.getSmId(), AccommodationDeclarationEvent.CREATE, + Collections.singletonMap( + PostingAllowanceMessageHeader.POSTING_ALLOWANCE_ID.name(), + createdModel.getId())); + + if (transitionResult.getValid()) { + sendEmailNotifications(createdModel, transitionResult); + createdModel.setSmId(transitionResult.getId()); + createdModel.setState(transitionResult.getArrivalState()); + } else { + throw new NotAllowedRuntimeException(String.format(ERightsExceptionCode.ER041.getDescription(), + declarationAllowanceModel.getPostingAllowanceStringId())); + } + AccommodationDeclarationAllowanceModel updatedModel = this.update(createdModel); + return updatedModel; + } + + private void addAccommodationDeclarationAllowanceFields(AccommodationDeclarationAllowanceModel model) { + Integer year = model.getExerciseYear(); + Long fileIdSequence = accommodationDeclarationJpaRepository.getSequenceForPostingAllowanceNumber(year); + model.setPostingAllowanceNumber(fileIdSequence); + model.setPostingAllowanceStringId(String.format(ACCOMMODATION_DECL_STR_FORMAT, year, fileIdSequence)); + } + + + /** + * Gets an Accommodation Declaration + * + * @param accommodationDeclarationId + * @return + */ + public Optional getAccommodationDeclaration(Long accommodationDeclarationId) { + AccommodationDeclarationAllowanceModel model = this.read(accommodationDeclarationId); + + if (null == model) { + return Optional.empty(); + } + + model.getFamilyMembers().forEach(familyMember -> getAddress(model, familyMember)); + return Optional.of(model); + } + + /** + * updates an Accommodation Declaration + * + * @param declarationAllowanceModel + * @return + */ + public AccommodationDeclarationAllowanceModel updateAccommodationDeclaration( + AccommodationDeclarationAllowanceModel declarationAllowanceModel) { + + //supporting documents + if (Objects.equals(AccommodationDeclarationState.DRAFT, declarationAllowanceModel.getState()) || + Objects.equals(AccommodationDeclarationState.AWAITING, declarationAllowanceModel.getState())) { + updateSupportingDocuments(declarationAllowanceModel); + } + + //TODO add more methods here - e.g. supporting documents etc + return this.update(declarationAllowanceModel); + } + + public AccommodationDeclarationAllowanceModel updateSupportingDocuments(AccommodationDeclarationAllowanceModel model) { + List supportingDocs = model.getSupportingDocs(); + if (CollectionUtils.isNotEmpty(supportingDocs)) { + supportingDocs.forEach(supportingDoc -> { + List attachmentModels = supportingDoc.getAttachments(); + if (attachmentModels != null) { + attachmentModels.forEach(att -> att.setPostingAllowanceSupportingDoc(supportingDoc)); + //remove deleted ones + supportingDoc.setAttachments(supportingDoc.getAttachments().stream().filter(att -> att.getFileName() != null).collect( + Collectors.toList())); + + //persist new ones + Set attachmentsToPersist = getAttachmentsToPersist(supportingDoc); + attachmentsToPersist.forEach(this.fileManager::persist); + } + }); + } + return model; + } + + + private Set getAttachmentsToPersist(PostingAllowanceSupportingDocModel model) { + Set result = new HashSet<>(); + model.getAttachments().stream().filter(e -> e.getId() == null).forEach(e -> result.add(e.getFileUid())); + return result; + } + + /** + * returns state machine history for Accommodation Declaration + * + * @param accommodationDeclarationId + * @return + */ + public List> getStateMachineHistory( + Long accommodationDeclarationId) { + StateMachineHistoryHolder stateMachineHistoryHolder; + AccommodationDeclarationAllowanceModel accommodationDeclaration = this.read(accommodationDeclarationId); + + stateMachineHistoryHolder = this.allowancesStateMachineService.getHistory(accommodationDeclaration.getSmId()); + + return stateMachineHistoryHolder.getTransitions(); + } + + /** + * creates a new state machine event + * + * @param stateMachineEvent + * @param accommodationDeclarationId + * @return + */ + public AccommodationDeclarationAllowanceModel newStateMachineEvent(String stateMachineEvent, Long accommodationDeclarationId) { + AccommodationDeclarationEvent event = AccommodationDeclarationEvent.valueOf(stateMachineEvent); + + AccommodationDeclarationAllowanceModel declarationAllowanceModel = this.read(accommodationDeclarationId); + if (declarationAllowanceModel == null) { + throw new ResourceNotFoundRuntimeException(ERightsExceptionCode.ER014); + } + + StateMachineTransitionResultModel transitionResult = + this.allowancesStateMachineService.send(declarationAllowanceModel.getSmId(), event, Collections.singletonMap( + PostingAllowanceMessageHeader.POSTING_ALLOWANCE_ID.name(), + declarationAllowanceModel.getId())); + + if (transitionResult.getValid()) { + sendEmailNotifications(declarationAllowanceModel, transitionResult); + declarationAllowanceModel.setSmId(transitionResult.getId()); + declarationAllowanceModel.setState(transitionResult.getArrivalState()); + AccommodationDeclarationAllowanceModel updatedModel = this.update(declarationAllowanceModel); + + //create payment + if (AccommodationDeclarationState.APPROVED.equals(updatedModel.getState()) && hasBeenOnlyOnceInArrivalState(updatedModel.getId(), + AccommodationDeclarationState.APPROVED)) { + AccommodationPaymentAllowanceModel createdAccommodationPayment = + accommodationPaymentAllowanceJpaServiceProvider.createAccommodationPayment(updatedModel, null); + getLogger().info("Accommodation Payment with id={} created from Accommodation Declaration id={}", + createdAccommodationPayment.getId(), updatedModel.getId()); + } + return updatedModel; + + } else { + throw new NotAllowedRuntimeException(String.format(ERightsExceptionCode.ER041.getDescription(), + declarationAllowanceModel.getPostingAllowanceStringId())); + } + } + + + private void sendEmailNotifications(AccommodationDeclarationAllowanceModel accommodationDeclaration, + StateMachineTransitionResultModel transitionResult) { + //TODO add later more logic here + } + + + private boolean hasBeenOnlyOnceInArrivalState(Long accommodationDeclarationId, AccommodationDeclarationState state) { + return getStateMachineHistory(accommodationDeclarationId).stream().filter(stateMachineTransition -> + state.equals(stateMachineTransition.getArrivalState())).count() == 1; + } + + + /** + * used when we create the accommodation declaration + * @param accommodationDeclaration + * @return + */ + private List generateFamilyMembers(AccommodationDeclarationAllowanceModel accommodationDeclaration) { + Long staffMemberId = accommodationDeclaration.getStaffMember().getPerId(); + PersonJpaServiceProvider personJpaService = (PersonJpaServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor( + PersonModel.class); + return getFamilyMemberJpaServiceProvider().getFamilyMembers(staffMemberId).stream() + .map(member -> { + AccommodationDeclarationPersonModel declarationPersonModel = new AccommodationDeclarationPersonModel(); + declarationPersonModel.setAccommodationDeclaration(accommodationDeclaration); + declarationPersonModel.setPerson(personJpaService.getPerson(staffMemberId)); + PersonModel familyMember = personJpaService.getPerson(member.getRelPerId()); + declarationPersonModel.setRelative(familyMember); + declarationPersonModel.setRelation(member.getRelation()); + declarationPersonModel.setJoiningAccommodation(Boolean.FALSE); + + return declarationPersonModel; + }).collect(Collectors.toList()); + } + + /** + * used in read only mode + * @param accommodationDeclaration + * @param familyMember + * @return + */ + private void getAddress(AccommodationDeclarationAllowanceModel accommodationDeclaration, + AccommodationDeclarationPersonModel familyMember) { + PersonAddressModel personAddress = null; + List addressesModel = personAddressJpaServiceProvider.findAllByPerIdAndTadrCd(familyMember.getRelative().getId(), + PERSONAL_PRIVATE_ADDRESS_CODE); + + List filteredAddresses = addressesModel.stream() + .sorted(Comparator.comparing(PersonAddressModel::getStartDate)) + //TODO change later - for MVP will stay with no filtering + /*.filter(addr -> assignmentStartDate + != null && addr.getStartDate() != null + && (addr.getStartDate().isAfter(assignmentStartDate) || addr.getStartDate() + .isEqual(assignmentStartDate)) + && (addr.getStartDate().isBefore(assignmentStartDate.plusYears(1)) || addr.getStartDate() + .isEqual(assignmentStartDate.plusYears(1))) + )*/ + .collect(Collectors.toList()); + + if (CollectionUtils.isNotEmpty(filteredAddresses)) { + personAddress = Iterables.getLast(filteredAddresses);//get last with the latest date + } + familyMember.setAddress(personAddress); + } + + + private FamilyMemberJpaServiceProvider getFamilyMemberJpaServiceProvider() { + return (FamilyMemberJpaServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor(FamilyMemberModel.class); + } + + + /** + * checks if an Accommodation Declaration could be created + * + * @return + */ + public Long canCreateAccommodationDeclarationAndGetPerId() { + //This method is being called by FO + User currentUser = securityChecker.getCurrentUser(); + VPersonJpaEntity staffMember = vPersonJpaRepository.findById(currentUser.getId()); + if (canCreateAccommodationDeclarationWithPerId(staffMember)) { + return currentUser.getId(); + } + return canCreateAccommodationDeclarationWithPrivateEmailAndGetPerId(currentUser.getEmail()); + + } + + private boolean canCreateAccommodationDeclarationWithPerId(VPersonJpaEntity staffMember) { + + if (staffMember == null) { + return false; + } + MVPersonAccommodationModel personAccommodationModel = personAccommodationServiceProvider.findById( + staffMember.getId()); + return personAccommodationHasValidSojId(personAccommodationModel); + } + + private Long canCreateAccommodationDeclarationWithPrivateEmailAndGetPerId(String email) { + + if (email == null) { + return null; + } + MVPersonAccommodationModel personAccommodationModel = personAccommodationServiceProvider.findByPrivateEmail( + email); + return personAccommodationHasValidSojId(personAccommodationModel) + ? personAccommodationModel.getPerId() : null; + } + + private static boolean personAccommodationHasValidSojId( + MVPersonAccommodationModel personAccommodationModel) { + return personAccommodationModel != null && personAccommodationModel.getSojId() != null; + } + + private void throwViolation(Set violations) { + + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + + public boolean isUserWithinDelegation( + Long id, Set orgIds) { + + if (CollectionUtils.isEmpty(orgIds)) { + return false; + } + return + accommodationDeclarationJpaRepository.countByIdAndDelegationOrgIdIn( + id, orgIds) > 0; + } + + public boolean userHasAccessToAccommodationDeclaration(Long id, + User user) { + + return accommodationDeclarationJpaRepository.countUserByPerIdOrEmailAndId(user.getId(), + user.getEmail(), id) > 0; + } + + + + + public void findEligibleDeclarationsAndCreatePayment() { + + List approvedDeclarations = + accommodationDeclarationJpaRepository.findAllApprovedDeclarationsHavingPayments(); + getLogger().info("Found {} Accommodation Declarations in APPROVED state", approvedDeclarations.size()); + + approvedDeclarations.forEach(declarationId -> { + AccommodationDeclarationAllowanceModel declarationModel = + getBeanMapper().map(accommodationDeclarationJpaRepository.findById(declarationId), + AccommodationDeclarationAllowanceModel.class); + checkDeclarationEligibleAndReturnLatestPayment(declarationModel).map(payment -> + accommodationPaymentAllowanceJpaServiceProvider.createAccommodationPayment(declarationModel, payment)); + } + ); + + } + + private Optional checkDeclarationEligibleAndReturnLatestPayment( + AccommodationDeclarationAllowanceModel accommodationDeclarationModel) { + + Optional noPaymentToCreate = Optional.empty(); + + //find the list of associated payments + List accommodationPayments = + accommodationPaymentAllowanceJpaServiceProvider.findAllByAccommodationDeclarationId(accommodationDeclarationModel.getId()); + + if (CollectionUtils.isEmpty(accommodationPayments)) { + //payment will be created when Declaration is moved to APPROVED + return noPaymentToCreate; + } + + AccommodationPaymentAllowanceModel latestPayment = Iterables.getLast(accommodationPayments.stream(). + sorted(Comparator.comparing(AccommodationPaymentAllowanceModel::getRentalCoverStartDate)).collect(Collectors.toList())); + + if (!AccommodationPaymentState.PAYMENT_FINALISED.equals(latestPayment.getState())) { + getLogger().info("Latest Accommodation Payment {} is not in status {}", latestPayment.getId(), + AccommodationPaymentState.PAYMENT_FINALISED); + return noPaymentToCreate; + } + + LocalDate endDatePayment = latestPayment.getRentalCoverEndDate(); + + if (endDatePayment.equals(accommodationDeclarationModel.getRentalContractEndDate())) { + getLogger().info("Latest Accommodation Payment {} has the Rental Contract EndDate equals to Accommodation End Date {}", + latestPayment.getId(), + accommodationDeclarationModel.getRentalContractEndDate()); + return noPaymentToCreate; + } + + LocalDate today = LocalDate.now(); + if (today.equals(endDatePayment.minusMonths(1))) { + getLogger().info("We gonna create a new Accommodation Payment as today is 1 month months before the End Date {} of the " + + "latest Accommodation Payment {}", endDatePayment, latestPayment.getId()); + return Optional.of(latestPayment); + } + + return noPaymentToCreate; + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/AccommodationPaymentAllowanceJpaServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/AccommodationPaymentAllowanceJpaServiceProvider.java new file mode 100644 index 0000000..4cb8818 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/AccommodationPaymentAllowanceJpaServiceProvider.java @@ -0,0 +1,502 @@ +package eu.europa.eeas.erights.common.service.provider.allowances; + +import static eu.europa.eeas.erights.common.tools.utils.AccommodationUtils.calculateMonthsDifference; + +import eu.europa.eeas.ananke.core.base.exception.NotAllowedRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ValidationRuntimeException; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.ananke.tools.filemanagement.FileManager; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.ananke.tools.statemachine.service.history.StateMachineHistoryHolder; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionResultModel; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.AccommodationPaymentAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.BudgetLinesMappingJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.allowances.AccommodationPaymentAllowanceJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.allowances.BudgetLineMappingJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.service.data.provider.VJobJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.validation.Violation; +import eu.europa.eeas.erights.common.service.model.VJobModel; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationDeclarationAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationPaymentAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.AccommodationPaymentCalculationResponseModel; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceSupportingDocAttachmentModel; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceSupportingDocModel; +import eu.europa.eeas.erights.common.tools.statemachine.AbacRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationDeclarationState; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationPaymentEvent; +import eu.europa.eeas.erights.common.tools.statemachine.AccommodationPaymentState; +import eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceMessageHeader; +import eu.europa.eeas.erights.common.tools.utils.AccommodationDateResult; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + + +/** + * @author ienaccat + * @since 5.0.0 + */ +@Service +@Transactional +@RequiredArgsConstructor +public class AccommodationPaymentAllowanceJpaServiceProvider extends + AbstractDataServiceProvider + implements EntityReader, + EntityUpdater, + EntityDeleter, + EntityCreator { + + public static final String POSTING_ALLOWANCE_TYPE = "ART.23 ACCOMMODATION"; + public static final String POSTING_ALLOWANCE_PAYM_REQ_TYPE = "PAYMENT"; + public static final String ACCOMMODATION_DECL_STR_FORMAT = "%d-ACP-%04d"; + + + private final StateMachineService allowancesStateMachineService; + private final AccommodationPaymentAllowanceJpaRepository accommodationPaymentJpaRepository; + + private final FileManager fileManager; + private final DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public Class getModelType() { + return AccommodationPaymentAllowanceModel.class; + } + + @Override + public Class getEntityType() { + return AccommodationPaymentAllowanceJpaEntity.class; + } + + + /** + * creates a new Accommodation Payment based on an existing Accommodation Declaration and latest Payment (if exists) + * + * @param accommodationDeclaration + * @param latestPayment + * @return + */ + public AccommodationPaymentAllowanceModel createAccommodationPayment(AccommodationDeclarationAllowanceModel accommodationDeclaration, + AccommodationPaymentAllowanceModel latestPayment) { + + //validation + validateAccommodationDeclaration(accommodationDeclaration); + Long accommodationDeclarationId = accommodationDeclaration.getId(); + + AccommodationPaymentAllowanceModel accommodationPayment = new AccommodationPaymentAllowanceModel(); + + //mandatory fields default to 0 before + accommodationPayment.setTotalAmount(accommodationDeclaration.getTotalAmount()); + accommodationPayment.setCalcTotalAmount(accommodationDeclaration.getCalcTotalAmount()); + + + + + accommodationPayment.setParentPostingAllowanceId(accommodationDeclarationId); + accommodationPayment.setParentPostingAllowanceIdString(accommodationDeclaration.getPostingAllowanceStringId()); + accommodationPayment.setSojId(accommodationDeclaration.getSojId()); + accommodationPayment.setStaffMember(accommodationDeclaration.getStaffMember()); + //exercise year + Integer year = Integer.parseInt(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy"))); + accommodationPayment.setExerciseYear(year); + accommodationPayment.setPostingAllowanceType(POSTING_ALLOWANCE_TYPE); + accommodationPayment.setPostingAllowanceReqType(POSTING_ALLOWANCE_PAYM_REQ_TYPE); + addAccommodationPaymentAllowanceFields(accommodationPayment); + + //same values as Declaration + accommodationPayment.setAssignmentCityName(accommodationDeclaration.getAssignmentCityName()); + accommodationPayment.setAssignmentCountryName(accommodationDeclaration.getAssignmentCountryName()); + accommodationPayment.setAssignmentCountryCode(accommodationDeclaration.getAssignmentCountryCode()); + accommodationPayment.setAssignmentStartDate(accommodationDeclaration.getAssignmentStartDate()); + accommodationPayment.setPersonBankInfo(accommodationDeclaration.getPersonBankInfo()); + accommodationPayment.setPaymentMethod(accommodationDeclaration.getPaymentMethod()); + accommodationPayment.setPaymentPeriodicInterval(accommodationDeclaration.getPaymentPeriodicInterval()); + accommodationPayment.setPaymentPreferredCurrency(accommodationDeclaration.getPaymentPreferredCurrency()); + + //security amount and recurrent costs + accommodationPayment.setMonthlySecurityAmountCurrency(accommodationDeclaration.getMonthlySecurityAmountCurrency()); + accommodationPayment.setMonthlyRecurrentCostsCurrency(accommodationDeclaration.getMonthlyRecurrentCostsCurrency()); + + //from, to dates + accommodationPayment.setRentalCoverStartDate(latestPayment != null ? latestPayment.getRentalCoverEndDate().plusDays(1) : + accommodationDeclaration.getRentalContractStartDate()); + accommodationPayment.setRentalCoverEndDate(calculateToDate(latestPayment != null ? accommodationPayment.getRentalCoverStartDate() : + accommodationDeclaration.getRentalContractStartDate(), + accommodationPayment.getPaymentPeriodicInterval())); + + //default multiplying factor + Double defaultMultiplyingFactor = Double.valueOf(accommodationDeclaration.getPaymentPeriodicInterval()); + accommodationPayment.setMultiplyingFactor(defaultMultiplyingFactor); + + //rental amount + accommodationPayment.setMonthlyRentalAmount(accommodationDeclaration.getMonthlyRentalAmount() * defaultMultiplyingFactor); + accommodationPayment.setMonthlyRentalCurrency(accommodationDeclaration.getMonthlyRentalCurrency()); + + Double alreadyReimbursedGuaranteeAmount = retrieveAlreadyReimbursedGuaranteeAmount(accommodationDeclarationId, null); + Double guaranteeAmount = accommodationDeclaration.getGuaranteeAmount(); + Integer guaranteeReimbursementPeriod = accommodationDeclaration.getGuaranteeReimbursementPeriod(); + + Double monthlyRecurrentCosts = accommodationDeclaration.getMonthlyRecurrentCosts() != null + ? accommodationDeclaration.getMonthlyRecurrentCosts() : 0.00; + Double monthlySecurityCost = accommodationDeclaration.getMonthlySecurityAmount() != null + ? accommodationDeclaration.getMonthlySecurityAmount() : 0.00; + + //security amount + accommodationPayment.setMonthlySecurityAmount(monthlySecurityCost * defaultMultiplyingFactor); + + //recurrent costs + accommodationPayment.setMonthlyRecurrentCosts(monthlyRecurrentCosts * defaultMultiplyingFactor); + + //guarantee reimbursed amount + Double guaranteeReimbursedAmount = calculateGuaranteeReimbursedAmount(guaranteeAmount, + alreadyReimbursedGuaranteeAmount, guaranteeReimbursementPeriod, + defaultMultiplyingFactor, accommodationDeclarationId); + accommodationPayment.setGuaranteeReimbursedAmount(guaranteeReimbursedAmount); + accommodationPayment.setGuaranteeReimbursedAmountCurrency(null != guaranteeReimbursedAmount ? + accommodationDeclaration.getGuaranteeAmountCurrency() : null); + accommodationPayment.setBudgetLine( + getBudgetLine(accommodationDeclaration.getStaffMember().getJobId())); + + //remaining guarantee to reimburse + Double remainingGuaranteeToReimburse = calculateRemainingGuaranteeToReimburse(guaranteeAmount, alreadyReimbursedGuaranteeAmount, + guaranteeReimbursedAmount, accommodationDeclarationId); + accommodationPayment.setRemainingGuaranteeToReimburse(remainingGuaranteeToReimburse + ); + accommodationPayment.setRemainingGuaranteeToReimburseCurrency(null != remainingGuaranteeToReimburse ? + accommodationDeclaration.getGuaranteeAmountCurrency() : null); + + //create the accommodation declaration + AccommodationPaymentAllowanceModel createdModel = this.create(accommodationPayment); + + StateMachineTransitionResultModel transitionResult = + this.allowancesStateMachineService.send(accommodationPayment.getSmId(), AccommodationPaymentEvent.CREATE, + Collections.singletonMap( + PostingAllowanceMessageHeader.POSTING_ALLOWANCE_ID.name(), + createdModel.getId())); + + if (transitionResult.getValid()) { + sendEmailNotifications(createdModel, transitionResult); + createdModel.setSmId(transitionResult.getId()); + createdModel.setState(transitionResult.getArrivalState()); + } else { + throw new NotAllowedRuntimeException(String.format(ERightsExceptionCode.ER041.getDescription(), + accommodationPayment.getPostingAllowanceStringId())); + } + return this.update(createdModel); + } + + private String getBudgetLine(Long JobId) { + VJobJpaServiceProvider jobJpaServiceProvider = (VJobJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(VJobModel.class); + VJobModel jobModel = jobJpaServiceProvider.get(JobId); + String budgetLine = null; + + BudgetLineMappingJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor( + BudgetLinesMappingJpaEntity.class, BudgetLineMappingJpaRepository.class); + if (jobModel != null) { + Optional budgetLineMapping = repo.findByFromBudgetLine( + jobModel.getBudgetLine()); + budgetLine = budgetLineMapping.isPresent() ? budgetLineMapping.get().getToBudgetLine() : null; + } + return budgetLine; + } + + + private void addAccommodationPaymentAllowanceFields(AccommodationPaymentAllowanceModel model) { + Integer year = model.getExerciseYear(); + Long fileIdSequence = accommodationPaymentJpaRepository.getSequenceForPostingAllowanceNumber(year); + model.setPostingAllowanceNumber(fileIdSequence); + model.setPostingAllowanceStringId(String.format(ACCOMMODATION_DECL_STR_FORMAT, year, fileIdSequence)); + } + + private LocalDate calculateToDate(LocalDate fromDate, Integer paymentPeriodicInterval) { + if (null == fromDate){ + return null; + } + if (null == paymentPeriodicInterval) { + return null; + } + + return fromDate.plusMonths(paymentPeriodicInterval).minusDays(1); + } + + private Double retrieveAlreadyReimbursedGuaranteeAmount(Long accommodationDeclarationId, Long currentAccommodationPaymentId) { + return null == currentAccommodationPaymentId ? + accommodationPaymentJpaRepository.retrieveAlreadyReimbursedGuaranteeAmountFirstPayment(accommodationDeclarationId) : + accommodationPaymentJpaRepository.retrieveAlreadyReimbursedGuaranteeAmountExistingPayments(accommodationDeclarationId, + currentAccommodationPaymentId) + ; + } + + + private Double calculateGuaranteeReimbursedAmount(Double guaranteeAmount, Double alreadyReimbursedGuaranteeAmount, + Integer guaranteeReimbursementPeriod, Double defaultMultiplyingFactor, Long accommodationDeclarationId) { + if (null == guaranteeAmount || 0.0d == guaranteeAmount) { + getLogger().info("GuaranteeAmount is {} for accommodationDeclarationId={} then we cannot calculate the guaranteeReimbursedAmount", + guaranteeAmount, accommodationDeclarationId); + return null; + } + + Double guaranteeReimbursedAmount = guaranteeAmount / + guaranteeReimbursementPeriod * defaultMultiplyingFactor; + + if ((alreadyReimbursedGuaranteeAmount + guaranteeReimbursedAmount) > guaranteeAmount) { + getLogger().info("Already Reimbursed Guarantee Amount {} plus Guarantee Reimbursed Amount {} exceeds the Guarantee amount {} of the " + + "Declaration {}", alreadyReimbursedGuaranteeAmount, guaranteeReimbursedAmount, guaranteeAmount, accommodationDeclarationId); + guaranteeReimbursedAmount = guaranteeAmount - alreadyReimbursedGuaranteeAmount; + } + return guaranteeReimbursedAmount; + } + + private Double calculateRemainingGuaranteeToReimburse(Double guaranteeAmount, Double alreadyReimbursedGuaranteeAmount, + Double guaranteeReimbursedAmount, Long accommodationDeclarationId) { + if (null == guaranteeAmount || 0.0d == guaranteeAmount) { + getLogger().info("GuaranteeAmount is {} for accommodationDeclarationId={} then we cannot calculate the remainingGuaranteeToReimburse", + guaranteeAmount, accommodationDeclarationId); + return null; + } + return guaranteeAmount - alreadyReimbursedGuaranteeAmount - guaranteeReimbursedAmount; + } + + private void validateAccommodationDeclaration(AccommodationDeclarationAllowanceModel accommodationDeclaration) { + Set violations = new HashSet<>(); + + if (!AccommodationDeclarationState.APPROVED.equals(accommodationDeclaration.getState())) { + getLogger().error("Accommodation Declaration having id={} is not in the correct state ({}) for creating the Accommodation Payment", + accommodationDeclaration.getId(), accommodationDeclaration.getState()); + violations.add(new Violation(ERightsExceptionCode.ER046, String.format(ERightsExceptionCode.ER046.getDescription(), + accommodationDeclaration.getId(), accommodationDeclaration.getState()))); + throwViolation(violations); + } + //TODO add more validations + } + + + /** + * Gets an Accommodation Payment + * + * @param accommodationPaymentId + * @return + */ + public Optional getAccommodationPayment(Long accommodationPaymentId) { + AccommodationPaymentAllowanceModel model = this.read(accommodationPaymentId); + + if (null == model) { + return Optional.empty(); + } + return Optional.of(model); + } + + /** + * updates an Accommodation Payment + * + * @param accommodationPayment + * @return + */ + public AccommodationPaymentAllowanceModel updateAccommodationPayment( + AccommodationPaymentAllowanceModel accommodationPayment) { + + //supporting documents + if (Objects.equals(AccommodationPaymentState.DRAFT, accommodationPayment.getState()) || + Objects.equals(AccommodationPaymentState.AWAITING, accommodationPayment.getState()) || + Objects.equals(AccommodationPaymentState.PAID, accommodationPayment.getState()) || + Objects.equals(AccommodationPaymentState.PENDING_VERIF_POP, accommodationPayment.getState()) + || + Objects.equals(AccommodationPaymentState.REJECTED_POP, accommodationPayment.getState())) { + updateSupportingDocuments(accommodationPayment); + } + + return this.update(accommodationPayment); + } + + public AccommodationPaymentAllowanceModel updateSupportingDocuments(AccommodationPaymentAllowanceModel model) { + List supportingDocs = model.getSupportingDocs(); + if (CollectionUtils.isNotEmpty(supportingDocs)) { + supportingDocs.forEach(supportingDoc -> { + List attachmentModels = supportingDoc.getAttachments(); + if (attachmentModels != null) { + attachmentModels.forEach(att -> att.setPostingAllowanceSupportingDoc(supportingDoc)); + //remove deleted ones + supportingDoc.setAttachments(supportingDoc.getAttachments().stream().filter(att -> att.getFileName() != null).collect( + Collectors.toList())); + + //persist new ones + Set attachmentsToPersist = getAttachmentsToPersist(supportingDoc); + attachmentsToPersist.forEach(this.fileManager::persist); + } + }); + } + return model; + } + + + private Set getAttachmentsToPersist(PostingAllowanceSupportingDocModel model) { + Set result = new HashSet<>(); + model.getAttachments().stream().filter(e -> e.getId() == null).forEach(e -> result.add(e.getFileUid())); + return result; + } + + /** + * returns state machine history for Accommodation Payment + * + * @param accommodationPaymentId + * @return + */ + public List> getStateMachineHistory( + Long accommodationPaymentId) { + StateMachineHistoryHolder stateMachineHistoryHolder; + AccommodationPaymentAllowanceModel accommodationPayment = this.read(accommodationPaymentId); + + stateMachineHistoryHolder = this.allowancesStateMachineService.getHistory(accommodationPayment.getSmId()); + + return stateMachineHistoryHolder.getTransitions(); + } + + /** + * creates a new state machine event + * + * @param stateMachineEvent + * @param accommodationPaymentId + * @return + */ + public AccommodationPaymentAllowanceModel newStateMachineEvent(String stateMachineEvent, Long accommodationPaymentId) { + AccommodationPaymentEvent event = AccommodationPaymentEvent.valueOf(stateMachineEvent); + + AccommodationPaymentAllowanceModel accommodationPayment = this.read(accommodationPaymentId); + if (accommodationPayment == null) { + throw new ResourceNotFoundRuntimeException(ERightsExceptionCode.ER014); + } + + StateMachineTransitionResultModel transitionResult = + this.allowancesStateMachineService.send(accommodationPayment.getSmId(), event, Collections.singletonMap( + PostingAllowanceMessageHeader.POSTING_ALLOWANCE_ID.name(), + accommodationPayment.getId())); + + if (transitionResult.getValid()) { + sendEmailNotifications(accommodationPayment, transitionResult); + accommodationPayment.setSmId(transitionResult.getId()); + accommodationPayment.setState(transitionResult.getArrivalState()); + return this.update(accommodationPayment); + } else { + throw new NotAllowedRuntimeException(String.format(ERightsExceptionCode.ER041.getDescription(), + accommodationPayment.getPostingAllowanceStringId())); + } + } + + + private void sendEmailNotifications(AccommodationPaymentAllowanceModel accommodationPayment, + StateMachineTransitionResultModel transitionResult) { + + //TODO add later more logic here + } + + private void throwViolation(Set violations) { + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + + public AccommodationPaymentCalculationResponseModel calculateAmounts(Long accommodationPaymentId, + String fromDate, String toDate) { + + AccommodationPaymentAllowanceModel accommodationPayment = this.read(accommodationPaymentId); + if (accommodationPayment == null) { + throw new ResourceNotFoundRuntimeException(ERightsExceptionCode.ER014); + } + AccommodationDeclarationAllowanceJpaServiceProvider declarationAllowanceJpaServiceProvider = this.getAccommodationDeclarationAllowanceJpaServiceProvider(); + AccommodationDeclarationAllowanceModel declarationAllowanceModel = declarationAllowanceJpaServiceProvider + .read(accommodationPayment.getParentPostingAllowanceId()); + if (declarationAllowanceModel == null) { + throw new ResourceNotFoundRuntimeException(ERightsExceptionCode.ER014); + } + + LocalDate from = LocalDate.parse(fromDate); + LocalDate to = LocalDate.parse(toDate); + AccommodationDateResult accommodationDateResult = calculateMonthsDifference(from, to); + + int endDateMaxDate = to.getMonth().length(to.isLeapYear()); + boolean lastDay = accommodationDateResult.isLastDay(); + int remainingDays = accommodationDateResult.getRemainingDays(); + double division = (lastDay)? 0: (double) remainingDays / endDateMaxDate; + double multiplyingFactor = lastDay ? accommodationDateResult.getMonths() :accommodationDateResult.getMonths() + division; + + Double alreadyReimbursedGuaranteeAmount = retrieveAlreadyReimbursedGuaranteeAmount( + accommodationPayment.getParentPostingAllowanceId(), accommodationPaymentId); + Double guaranteeAmount = declarationAllowanceModel.getGuaranteeAmount(); + Integer guaranteeReimbursementPeriod = declarationAllowanceModel.getGuaranteeReimbursementPeriod(); + //guarantee reimbursed amount + Double guaranteeReimbursedAmount = calculateGuaranteeReimbursedAmount(guaranteeAmount, + alreadyReimbursedGuaranteeAmount, guaranteeReimbursementPeriod, + multiplyingFactor, accommodationPayment.getParentPostingAllowanceId()); + //remaining guarantee to reimburse + Double remainingGuaranteeToReimburse = calculateRemainingGuaranteeToReimburse(guaranteeAmount, + alreadyReimbursedGuaranteeAmount, + guaranteeReimbursedAmount, accommodationPayment.getParentPostingAllowanceId()); + + Double monthlyRecurrentCosts = declarationAllowanceModel.getMonthlyRecurrentCosts() != null + ? declarationAllowanceModel.getMonthlyRecurrentCosts() : 0.00; + Double monthlySecurityCost = declarationAllowanceModel.getMonthlySecurityAmount() != null + ? declarationAllowanceModel.getMonthlySecurityAmount() : 0.00; + + return AccommodationPaymentCalculationResponseModel + .builder() + .multiplyingFactor(multiplyingFactor) + .alreadyReimbursedGuaranteeAmount(alreadyReimbursedGuaranteeAmount) + .guaranteeReimbursedAmount(guaranteeReimbursedAmount) + .guaranteeReimbursedAmountCurrency((null != guaranteeReimbursedAmount ? + declarationAllowanceModel.getGuaranteeAmountCurrency() : null)) + .remainingGuaranteeToReimburse(remainingGuaranteeToReimburse) + .remainingGuaranteeToReimburseCurrency(null != remainingGuaranteeToReimburse ? + declarationAllowanceModel.getGuaranteeAmountCurrency() : null) + .monthlyRentalAmount(declarationAllowanceModel.getMonthlyRentalAmount() * multiplyingFactor) + .monthlyRentalCurrency(declarationAllowanceModel.getMonthlyRentalCurrency()) + .monthlySecurityAmount(monthlySecurityCost * multiplyingFactor) + .monthlyRecurrentCosts(monthlyRecurrentCosts * multiplyingFactor) + .build(); + } + + private AccommodationDeclarationAllowanceJpaServiceProvider getAccommodationDeclarationAllowanceJpaServiceProvider() { + + return (AccommodationDeclarationAllowanceJpaServiceProvider) + this.dataServiceProviderRegistry.getDataServiceProviderFor( + AccommodationDeclarationAllowanceModel.class); + } + public List findAllByAccommodationDeclarationId(Long accommodationDeclarationId) { + return getBeanMapper().mapAsList(accommodationPaymentJpaRepository.findAllByParentPostingAllowanceId(accommodationDeclarationId), + AccommodationPaymentAllowanceModel.class); + } + + public AccommodationPaymentAllowanceJpaRepository getAccommodationPaymentJpaRepository() { + return getEntityRepositoryRegistry().getReaderRepositoryFor( + AccommodationPaymentAllowanceJpaEntity.class, + AccommodationPaymentAllowanceJpaRepository.class); + } + + public void updateAccommodationPaymentWorkflowAbacState(String state, Long id) { + getAccommodationPaymentJpaRepository().updateAccommodationPaymentAbacWorkflowState(state, id); + } + + public void updateAccommodationPaymentAbacState(AbacRequestState state, Long id) { + getAccommodationPaymentJpaRepository().updateAccommodationPaymentAbacState(state, id); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/PostingAllowanceDefaultServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/PostingAllowanceDefaultServiceProvider.java new file mode 100644 index 0000000..3a10934 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/PostingAllowanceDefaultServiceProvider.java @@ -0,0 +1,134 @@ +package eu.europa.eeas.erights.common.service.provider.allowances; + +import static java.util.Objects.nonNull; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceDefaultJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.allowances.PostingAllowanceDefaultJpaRepository; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceAmountsModel; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceDefaultModel; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Objects; +import java.util.Optional; +import javax.validation.constraints.NotNull; +import org.apache.commons.lang3.StringUtils; +import org.javamoney.moneta.Money; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +public class PostingAllowanceDefaultServiceProvider extends AbstractDataServiceProvider + implements EntityReader, + EntityCreator, + EntityUpdater, + EntityDeleter { + + @Autowired + private PostingAllowanceDefaultJpaRepository repository; + + @Override + public Class getModelType() { + return PostingAllowanceDefaultModel.class; + } + + @Override + public Class getEntityType() { + return PostingAllowanceDefaultJpaEntity.class; + } + + public Money getAmount(String iataCodeFrom, String iataCodeTo, String postingAllowanceType, String postingAllowanceReqType, Integer exerciseYear, LocalDate date) { + BigDecimal fare = null; + if (iataCodeFrom != null && iataCodeTo != null && date != null) { + fare = repository.getPostingAllowanceFareByIata(iataCodeFrom, iataCodeTo, date); + } + if (fare == null) { + PostingAllowanceDefaultJpaEntity postingAllowanceDefaultJpaEntity = repository.getPostingAllowanceDefaultJpaEntityByIataCodeFromAndIataCodeToAndPostingAllowanceTypeAndPostingAllowanceReqTypeAndExerciseYearAndLatest(iataCodeFrom, iataCodeTo, postingAllowanceType, postingAllowanceReqType, exerciseYear, true); + return postingAllowanceDefaultJpaEntity == null ? defaultAmount() : postingAllowanceDefaultJpaEntity.getAmount(); + } else { + return Money.of(fare, "EUR"); + } + } + + /** + * Used for IATA routes calculation on the Admin screen + * + * @param originId + * @param destinationId + * @param exerciseYear + * @return + */ + public Optional calculateRoutePrice(@NotNull String originId, @NotNull String destinationId, String firstStopId, + String secondStopId, String thirdStopId, Integer exerciseYear) { + + LocalDate date = LocalDate.of(exerciseYear, LocalDate.now().getMonthValue(), + Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH)); + + String[] inputLegs = {originId, firstStopId, secondStopId, thirdStopId, destinationId}; + String[] legs = Arrays.stream(inputLegs).filter(x -> !StringUtils.isBlank(x)).toArray(String[]::new); + + BigDecimal routePrice = calculateIATARoutes(date, legs); + + if (Objects.equals(routePrice, BigDecimal.ZERO)) { + return Optional.empty(); + } + + return Optional.of(routePrice); + } + + private BigDecimal calculateIATARoutes(LocalDate date, String... iataIds) { + BigDecimal result = BigDecimal.ZERO; + if (iataIds.length < 2 || iataIds.length > 5) { + return null; + } + + for (int i = 0; i < iataIds.length - 1; i++) { + String iataFrom = iataIds[i]; + String iataTo = iataIds[i + 1]; + BigDecimal legPrice = repository.getPostingAllowanceFareByIata(iataFrom, iataTo, date); + if (legPrice != null) { + result = result.add(legPrice); + } else { + getLogger().info("No route price found for IATA code from={} and IATA code to={} ", iataFrom, iataTo + ); + return BigDecimal.ZERO; + } + } + + return result; + } + + public Money defaultAmount() { + return Money.of(0, "EUR"); + } + + public PostingAllowanceAmountsModel getDefaultAmounts(String iataCodeFrom, String iataCodeTo, String postingAllowanceType, String postingAllowanceReqType, Integer exerciseYear) { + PostingAllowanceAmountsModel postingAllowanceAmountsModel = new PostingAllowanceAmountsModel(); + PostingAllowanceDefaultJpaEntity outgoingTrip = repository.findByIataCodeFromAndIataCodeToAndPostingAllowanceTypeAndPostingAllowanceReqTypeAndExerciseYear(iataCodeFrom, iataCodeTo, postingAllowanceType, postingAllowanceReqType, exerciseYear); + PostingAllowanceDefaultJpaEntity returnTrip = repository.findByIataCodeFromAndIataCodeToAndPostingAllowanceTypeAndPostingAllowanceReqTypeAndExerciseYear(iataCodeTo, iataCodeFrom, postingAllowanceType, postingAllowanceReqType, exerciseYear); + postingAllowanceAmountsModel.setoutgoingTripAmount(outgoingTrip != null ? outgoingTrip.getAmount() : Money.of(0, "EUR")); + postingAllowanceAmountsModel.setReturnTripAmount(returnTrip != null ? returnTrip.getAmount() : Money.of(0, "EUR")); + return postingAllowanceAmountsModel; + } + + public boolean exist(String iataCodeFrom, String iataCodeTo, String postingAllowanceType, String postingAllowanceReqType, Integer exerciseYear){ + + PostingAllowanceDefaultJpaEntity postingAllowanceDefaultJpaEntity = repository.findByIataCodeFromAndIataCodeToAndPostingAllowanceTypeAndPostingAllowanceReqTypeAndExerciseYear(iataCodeFrom, iataCodeTo, postingAllowanceType, postingAllowanceReqType, exerciseYear); + return nonNull(postingAllowanceDefaultJpaEntity); + } + + + public PostingAllowanceDefaultModel save(PostingAllowanceDefaultModel postingAllowanceDefaultModel){ + + return create(postingAllowanceDefaultModel); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/PostingAllowancePersonServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/PostingAllowancePersonServiceProvider.java new file mode 100644 index 0000000..513729c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/PostingAllowancePersonServiceProvider.java @@ -0,0 +1,55 @@ +package eu.europa.eeas.erights.common.service.provider.allowances; + +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowancePersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.allowances.PostingAllowancePersonJpaRepository; +import eu.europa.eeas.erights.common.service.data.provider.PersonJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.PersonModel; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowancePersonModel; +import java.util.List; +import java.util.stream.Collectors; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Optional; + +@Service +public class PostingAllowancePersonServiceProvider extends AbstractDataServiceProvider + implements EntityReader, + EntityCreator, + EntityUpdater, + EntityDeleter { + + @Autowired + private PostingAllowancePersonJpaRepository postingAllowancePersonJpaRepository; + + @Autowired + private PersonJpaServiceProvider personJpaServiceProvider; + + @Override + public Class getModelType() { + return PostingAllowancePersonModel.class; + } + + @Override + public Class getEntityType() { + return PostingAllowancePersonJpaEntity.class; + } + + @Transactional + public void deleteByPostingAllowanceId(Long postingAllowanceId){ + postingAllowancePersonJpaRepository.deleteByPostingAllowanceId(postingAllowanceId); + + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/PostingAllowanceServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/PostingAllowanceServiceProvider.java new file mode 100644 index 0000000..983990b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/PostingAllowanceServiceProvider.java @@ -0,0 +1,594 @@ +package eu.europa.eeas.erights.common.service.provider.allowances; + +import com.google.common.collect.Iterables; +import eu.europa.eeas.ananke.core.base.exception.NotAllowedRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ValidationRuntimeException; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityCreator; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityDeleter; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityUpdater; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.ananke.tools.statemachine.service.history.StateMachineHistoryHolder; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionResultModel; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonAddressHistoryJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.VPersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.VPlaceOfOriginJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.VTravelAllowancesForManualRegularizationJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowancePersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.TravelAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.VPlaceOfOriginJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.VTravelAllowancesForManualRegularizationJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.allowances.PostingAllowancesJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.allowances.TravelAllowanceJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.PersonAddressHistoryJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.service.data.validation.Violation; +import eu.europa.eeas.erights.common.service.model.VPersonModel; +import eu.europa.eeas.erights.common.service.model.allowances.*; +import eu.europa.eeas.erights.common.service.model.declaration.FamilyMemberModel; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.service.provider.sysper.SysperServiceProvider; +import eu.europa.eeas.erights.common.tools.statemachine.*; +import eu.europa.eeas.erights.web.client.model.RightVO; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.javamoney.moneta.Money; +import org.jetbrains.annotations.NotNull; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.util.*; +import java.util.stream.Collectors; + +import static java.util.Objects.isNull; +import static java.util.Objects.nonNull; + +@Service +@Transactional +public class PostingAllowanceServiceProvider extends AbstractDataServiceProvider + implements EntityReader, + EntityCreator, + EntityUpdater, + EntityDeleter { + + @Autowired + private PostingAllowancesJpaRepository repository; + + @Autowired + @Qualifier(ERightsBeanNames.PostingAllowanceStateMachine.SERVICE) + private StateMachineService postingAllowanceStateMachineService; + + @Autowired + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @Autowired + private SysperServiceProvider sysperServiceProvider; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + private PersonAddressHistoryJpaRepository personAddressHistoryJpaRepository; + + @Autowired + private TravelAllowanceJpaRepository travelAllowanceJpaRepository; + + public static final String EUR_CURRENCY = "EUR"; + private static final String TRANSITIONS_NOT_VALID = "The Transitions is not valid for the following request(s):"; + private static final String UN_KNOWN_ERROR = "The System error occurred for the following request(s):"; + + private final VPlaceOfOriginJpaRepository placeOfOriginJpaRepository; + + public PostingAllowanceServiceProvider(VPlaceOfOriginJpaRepository placeOfOriginJpaRepository) { + this.placeOfOriginJpaRepository = placeOfOriginJpaRepository; + } + + @Override + public Class getModelType() { + return PostingAllowanceModel.class; + } + + @Override + public Class getEntityType() { + return PostingAllowanceJpaEntity.class; + } + + public void createPostingAllowance(PostingAllowanceModel model) { + //map from model to entity + //repository.save(); + } + + public List getPostingAllowances() { + Iterable postingAllowanceEntities = repository.findAll(); + return getBeanMapper().mapAsList(postingAllowanceEntities, PostingAllowanceModel.class); + } + + public PostingAllowanceModel getPostingAllowance(Long postingAllowanceId) { + PostingAllowanceJpaEntity postingAllowanceEntities = repository.findById(postingAllowanceId); + return getBeanMapper().map(postingAllowanceEntities, PostingAllowanceModel.class); + } + + public PostingAllowanceModel newStateMachineEvent(String stateMachineEvent, Long postingAllowanceId) { + PostingAllowanceEvent event = PostingAllowanceEvent.valueOf(stateMachineEvent); + + PostingAllowanceModel postingAllowance = this.read(postingAllowanceId); + if (postingAllowance == null) { + throw new ResourceNotFoundRuntimeException(String.format(ERightsExceptionCode.ER028.getDescription(), postingAllowanceId)); + } + + + if (isInAwaiting(postingAllowance) && Objects.equals(PostingAllowanceEvent.APPROVE,event)) { + if (postingAllowance instanceof TravelAllowanceModel) { + PostingAllowanceValidation.executeTransitionValidation((TravelAllowanceModel) postingAllowance); + }else if (postingAllowance instanceof RegularizationAllowanceModel) { + PostingAllowanceValidation.executeTransitionValidation((RegularizationAllowanceModel) postingAllowance); + } + validateExistingPostingAllowance(postingAllowance); + } + if (isInDraft(postingAllowance) && Objects.equals(PostingAllowanceEvent.SUBMIT,event)) { + if (postingAllowance instanceof TravelAllowanceModel) { + PostingAllowanceValidation.executeTransitionValidation((TravelAllowanceModel) postingAllowance); + }else if (postingAllowance instanceof RegularizationAllowanceModel) { + PostingAllowanceValidation.executeTransitionValidation((RegularizationAllowanceModel) postingAllowance); + } + } + + StateMachineTransitionResultModel transitionResult = + this.postingAllowanceStateMachineService.send(postingAllowance.getSmId(), event, Collections.singletonMap( + PostingAllowanceMessageHeader.POSTING_ALLOWANCE_ID.name(), + postingAllowance.getId())); + + if (transitionResult.getValid()) { + if (transitionResult.getArrivalState() == PostingAllowanceState.APPROVED) { + PostingAllowanceModel postingAllowanceModel = this.read(postingAllowance.getId()); + emailEdmsServiceProvider.notifyPostingAllowanceStatus(postingAllowanceModel); + } + postingAllowance.setState(transitionResult.getArrivalState()); + return this.update(postingAllowance); + } else { + throw new NotAllowedRuntimeException(String.format(ERightsExceptionCode.ER029.getDescription(), postingAllowance.getPostingAllowanceStringId())); + } + + } + + private boolean isInDraft(PostingAllowanceModel postingAllowance) { + return PostingAllowanceState.DRAFT.name().equals(postingAllowance.getStatus()); + } + + private void validateExistingPostingAllowance(PostingAllowanceModel postingAllowance) { + + int exerciseYear = postingAllowance.getExerciseYear(); + VPersonModel staffMember = postingAllowance.getStaffMember(); + VPersonJpaEntity vPersonJpaEntity = getBeanMapper().map(staffMember, VPersonJpaEntity.class); + List postingAllowanceModels = findByStaffMemberAndExerciseYear(vPersonJpaEntity, exerciseYear); + if (CollectionUtils.isNotEmpty(postingAllowanceModels)) { + + List existingPaidOrApprovedPostingAllowances = postingAllowanceModels.stream() + .filter(postingAllowanceModel -> + Objects.equals(postingAllowanceModel.getState(), PostingAllowanceState.APPROVED) || + Objects.equals(postingAllowanceModel.getState(), PostingAllowanceState.PAID)).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(existingPaidOrApprovedPostingAllowances)){ + + boolean reject = true; + for (PostingAllowanceModel pA : existingPaidOrApprovedPostingAllowances) { + if (Objects.equals(pA.getOriginPeriodYear(), postingAllowance.getOriginPeriodYear()) && + Objects.equals(pA.getOriginPeriodMonth(), postingAllowance.getOriginPeriodMonth())) { + reject = false; + } + } + + if(reject){ + List violations = new LinkedList<>(); + violations.add(new Violation(ERightsExceptionCode.ER032, String.format(ERightsExceptionCode.ER032.getDescription(), existingPaidOrApprovedPostingAllowances.get(0).getPostingAllowanceStringId()))); + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + + + } + } + + } + + private boolean isInAwaiting(PostingAllowanceModel postingAllowanceModel) { + + return PostingAllowanceState.AWAITING.name().equals(postingAllowanceModel.getStatus()); + } + + + + public List> getStateMachineHistory(Long postingAllowanceId) { + StateMachineHistoryHolder stateMachineHistoryHolder; + PostingAllowanceModel postingAllowanceModel = read(postingAllowanceId); + if(postingAllowanceModel.getSmId() == null){ + return new ArrayList>(); + } + stateMachineHistoryHolder = this.postingAllowanceStateMachineService.getHistory(postingAllowanceModel.getSmId()); + return stateMachineHistoryHolder.getTransitions(); + } + + public List getPostingAllowancesByParent(Long parentPostingAllowanceId) { + PostingAllowancesJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(PostingAllowanceJpaEntity.class, PostingAllowancesJpaRepository.class); + List entities = repo.findByParentPostingAllowanceId(parentPostingAllowanceId); + return getBeanMapper().mapAsList(entities, PostingAllowanceModel.class); + } + + public List findByStaffMemberAndExerciseYear(VPersonJpaEntity staffMember, Integer exerciseYear) { + PostingAllowancesJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(PostingAllowanceJpaEntity.class, PostingAllowancesJpaRepository.class); + List entities = repo.findByStaffMemberAndExerciseYear(staffMember, exerciseYear); + return getBeanMapper().mapAsList(entities, PostingAllowanceModel.class); + } + + public PostingAllowanceModel sendPaymentToSysper(Long postingAllowanceId) { + PostingAllowanceModel postingAllowanceModel = read(postingAllowanceId); + return sysperPaymentCall(postingAllowanceModel); + } + + private PostingAllowanceModel sysperPaymentCall(PostingAllowanceModel postingAllowanceModel){ + RightVO rightVO = getRightToBeCreated(postingAllowanceModel); + RightVO createdSysperRight = sysperServiceProvider.createRight(rightVO); + + postingAllowanceModel.setPaymentId(createdSysperRight.getRightId().toString()); + postingAllowanceModel.setPaymentEventId(createdSysperRight.getEventId().toString()); + + StateMachineTransitionResultModel transitionResult = + this.postingAllowanceStateMachineService.send(postingAllowanceModel.getSmId(),PostingAllowanceEvent.PAY, Collections.singletonMap( + PostingAllowanceMessageHeader.POSTING_ALLOWANCE_ID.name(), + postingAllowanceModel.getId())); + + if (Boolean.TRUE.equals(transitionResult.getValid())) { + postingAllowanceModel.setState(transitionResult.getArrivalState()); + return this.update(postingAllowanceModel); + } + + List violations = new LinkedList<>(); + violations.add(new Violation(ERightsExceptionCode.ER029, String.format(String.format(ERightsExceptionCode.ER029.getDescription(), postingAllowanceModel.getPostingAllowanceStringId())))); + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + + @NotNull + private RightVO getRightToBeCreated(PostingAllowanceModel postingAllowanceModel) { + RightVO rightVO = new RightVO(); + rightVO.setAmount(postingAllowanceModel.getTotalAmount().getNumber().doubleValueExact()); + rightVO.setCurrency(postingAllowanceModel.getTotalAmount().getCurrency().getCurrencyCode()); + rightVO.setPaymentPeriod(String.format("%02d%02d", postingAllowanceModel.getPaymentPeriodYear(), postingAllowanceModel.getPaymentPeriodMonth())); + rightVO.setOriginPeriod(String.format("%02d%02d", postingAllowanceModel.getOriginPeriodYear(), postingAllowanceModel.getOriginPeriodMonth())); + rightVO.setRightsType(RightVO.RightsTypeEnum.FRAIS_VOYAGE_OUTSIDE_EU_ETRAVEL); + rightVO.setPerIdAttrib(postingAllowanceModel.getStaffMember().getPerId().intValue()); + rightVO.setPerIdBenef(postingAllowanceModel.getStaffMember().getPerId().intValue()); + rightVO.setComments(String.format("Created by e-Rights. Request ID: %s", postingAllowanceModel.getPostingAllowanceStringId())); + return rightVO; + } + + + + public PostingAllowanceModel refreshPlaceOfOrigingFromSysper(Long postingAllowanceId) { + PostingAllowanceModel postingAllowanceModel = read(postingAllowanceId); + return updatePlaceOfOriginFromSysper(postingAllowanceModel); + } + + private PostingAllowanceModel updatePlaceOfOriginFromSysper(PostingAllowanceModel postingAllowanceModel){ + + + VPlaceOfOriginJpaEntity vPlaceOfOriginJpaEntity = placeOfOriginJpaRepository.findById(postingAllowanceModel.getStaffMember().getPerId()); + if(isNull(vPlaceOfOriginJpaEntity)){ + + List violations = new LinkedList<>(); + violations.add(new Violation(ERightsExceptionCode.ER035, ERightsExceptionCode.ER035.getDescription())); + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + postingAllowanceModel.setOriginCityName(vPlaceOfOriginJpaEntity.getPlaceOfOrigin()); + postingAllowanceModel.setOriginCountryName(vPlaceOfOriginJpaEntity.getCountryOfOrigin()); + postingAllowanceModel.setOriginCountryCode(vPlaceOfOriginJpaEntity.getCountryCode()); + + return this.update(postingAllowanceModel); + + } + + public PostingAllowanceBatchEventResponseModel batchEventStateMachineProcessing(String event, List postingAllowanceIds) { + + PostingAllowanceBatchEventResponseModel allowanceBatchEventResponseModel=new PostingAllowanceBatchEventResponseModel(); + allowanceBatchEventResponseModel.setFailed(new ArrayList<>()); + allowanceBatchEventResponseModel.setSuccess(new ArrayList<>()); + HashMap> failedMessagesMap=new HashMap<>(); + postingAllowanceIds.forEach(postingAllowanceId ->{ + PostingAllowanceModel postingAllowanceModel = read(postingAllowanceId); + + PostingAllowanceBatchEventModel postingAllowanceBatchEventModel = new PostingAllowanceBatchEventModel(); + + + try { + + + postingAllowanceBatchEventModel.setPostingAllowanceId(postingAllowanceModel.getId()); + postingAllowanceBatchEventModel.setPostingAllowanceStringId(postingAllowanceModel.getPostingAllowanceStringId()); + + if(Objects.equals(event, "REFRESH_PLACE_OF_ORIGIN")){ + + refreshPlaceOfOrigingFromSysper(postingAllowanceId); + postingAllowanceBatchEventModel.setMessage("Success"); + allowanceBatchEventResponseModel.getSuccess().add(postingAllowanceBatchEventModel); + } else if(Objects.equals(event, "REFRESH_ADDRESS_DEPENDENTS")){ + + refreshAddressOfDependents(postingAllowanceModel); + postingAllowanceBatchEventModel.setMessage("Success"); + allowanceBatchEventResponseModel.getSuccess().add(postingAllowanceBatchEventModel); + } else if(Objects.equals(PostingAllowanceEvent.valueOf(event), PostingAllowanceEvent.PAY)){ + + if(Objects.equals(postingAllowanceModel.getState(),PostingAllowanceState.APPROVED)){ + + if(postingAllowanceModel.getTotalAmount().getNumber().doubleValueExact() >= 0){ + // send request to Sysper + PostingAllowanceModel paymentToSysper = sendPaymentToSysper(postingAllowanceId); + if(Objects.equals(paymentToSysper.getState(),PostingAllowanceState.PAID)){ + postingAllowanceBatchEventModel.setMessage("Success"); + allowanceBatchEventResponseModel.getSuccess().add(postingAllowanceBatchEventModel); + }else{ + throw new NotAllowedRuntimeException(String.format(ERightsExceptionCode.ER029.getDescription(), postingAllowanceModel.getPostingAllowanceStringId())); + } + }else{ + throw new NotAllowedRuntimeException(String.format(ERightsExceptionCode.ER036.getDescription(), postingAllowanceModel.getPostingAllowanceStringId())); + } + }else{ + throw new NotAllowedRuntimeException(String.format(ERightsExceptionCode.ER029.getDescription(), postingAllowanceModel.getPostingAllowanceStringId())); + } + }else{ + newStateMachineEvent(event, postingAllowanceId); + postingAllowanceBatchEventModel.setMessage("Success"); + allowanceBatchEventResponseModel.getSuccess().add(postingAllowanceBatchEventModel); + } + } catch (ValidationRuntimeException exception) { + getLogger().error("ValidationRuntimeException (batchEventStateMachineProcessing)", exception); + + batchHandleValidationException(allowanceBatchEventResponseModel, failedMessagesMap, postingAllowanceModel, postingAllowanceBatchEventModel, exception); + } catch (Exception exception) { + + + batchHandleGeneralException(allowanceBatchEventResponseModel, failedMessagesMap, postingAllowanceModel, postingAllowanceBatchEventModel, exception); + } + }); + + allowanceBatchEventResponseModel.setNumberOfSuccess(allowanceBatchEventResponseModel.getSuccess().size()); + allowanceBatchEventResponseModel.setNumberOfFailed(allowanceBatchEventResponseModel.getFailed().size()); + allowanceBatchEventResponseModel.setFailedMessage(failedMessage(failedMessagesMap)); + allowanceBatchEventResponseModel.setSuccessMessage(successMessage(allowanceBatchEventResponseModel.getSuccess())); + + return allowanceBatchEventResponseModel; + } + + private void batchHandleGeneralException(PostingAllowanceBatchEventResponseModel allowanceBatchEventResponseModel, HashMap> failedMessagesMap, PostingAllowanceModel postingAllowanceModel, PostingAllowanceBatchEventModel postingAllowanceBatchEventModel, Exception exception) { + if(nonNull(exception.getMessage()) && exception.getMessage().contains("transition not valid") ){ + + if(!failedMessagesMap.containsKey(TRANSITIONS_NOT_VALID)){ + List postingAllowanceIdsList = new ArrayList<>(); + postingAllowanceIdsList.add(postingAllowanceModel.getPostingAllowanceStringId()); + failedMessagesMap.put(TRANSITIONS_NOT_VALID,postingAllowanceIdsList); + }else{ + failedMessagesMap.get(TRANSITIONS_NOT_VALID).add(postingAllowanceModel.getPostingAllowanceStringId()); + } + + }else { + if(!failedMessagesMap.containsKey(UN_KNOWN_ERROR)){ + List postingAllowanceIdsList = new ArrayList<>(); + postingAllowanceIdsList.add(postingAllowanceModel.getPostingAllowanceStringId()); + failedMessagesMap.put(UN_KNOWN_ERROR,postingAllowanceIdsList); + }else{ + failedMessagesMap.get(UN_KNOWN_ERROR).add(postingAllowanceModel.getPostingAllowanceStringId()); + } + } + getLogger().error("Exception (batchEventStateMachineProcessing)", exception); + postingAllowanceBatchEventModel.setMessage(exception.getMessage()); + allowanceBatchEventResponseModel.getFailed().add(postingAllowanceBatchEventModel); + } + + private void batchHandleValidationException(PostingAllowanceBatchEventResponseModel allowanceBatchEventResponseModel, HashMap> failedMessagesMap, PostingAllowanceModel postingAllowanceModel, PostingAllowanceBatchEventModel postingAllowanceBatchEventModel, ValidationRuntimeException exception) { + if(CollectionUtils.isNotEmpty(exception.getItems())){ + StringBuilder stringBuilder=new StringBuilder(); + stringBuilder.append(String.format("Validate the details of the Posting Allowance Id (%s), ", postingAllowanceModel.getPostingAllowanceStringId())); + exception.getItems().forEach(validationItem -> { + String key = getKey(validationItem.getMessage()); + if(!failedMessagesMap.containsKey(key)){ + List postingAllowanceIdsList = new ArrayList<>(); + postingAllowanceIdsList.add(postingAllowanceModel.getPostingAllowanceStringId()); + failedMessagesMap.put(key,postingAllowanceIdsList); + }else{ + failedMessagesMap.get(key).add(postingAllowanceModel.getPostingAllowanceStringId()); + } + stringBuilder.append(String.format("%s ,",validationItem.getMessage())); + }); + String message = stringBuilder.toString(); + postingAllowanceBatchEventModel.setMessage(StringUtils.substring(message, 0, message.length() - 1)); + allowanceBatchEventResponseModel.getFailed().add(postingAllowanceBatchEventModel); + } + } + + public void refreshAddressOfDependents(PostingAllowanceModel postingAllowanceModel) { + + if (postingAllowanceModel instanceof TravelAllowanceModel) { + + refreshTravelAllowanceAddressOfDependents(postingAllowanceModel); + } else if (postingAllowanceModel instanceof RegularizationAllowanceModel) { + + refreshRegularizationAddressOfDependents(postingAllowanceModel); + } + } + + public void refreshTravelAllowanceAddressOfDependents(PostingAllowanceModel postingAllowanceModel){ + + TravelAllowanceServiceProvider travelAllowanceServiceProvider = getTravelAllowanceServiceProvider(); + TravelAllowanceModel travelAllowanceModel = travelAllowanceServiceProvider.getTravelAllowance(postingAllowanceModel.getId()); + travelAllowanceServiceProvider.refreshDependantsAddress(travelAllowanceModel); + + } + public void refreshRegularizationAddressOfDependents(PostingAllowanceModel postingAllowanceModel){ + + RegularizationAllowanceServiceProvider regularizationAllowanceServiceProvider = getRegularizationAllowanceServiceProvider(); + RegularizationAllowanceModel regularizationAllowance = regularizationAllowanceServiceProvider.getRegularizationAllowance(postingAllowanceModel.getId()); + regularizationAllowanceServiceProvider.refreshDependantsAddress(regularizationAllowance); + } + + private RegularizationAllowanceServiceProvider getRegularizationAllowanceServiceProvider(){ + + return (RegularizationAllowanceServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RegularizationAllowanceModel.class); + } + + private TravelAllowanceServiceProvider getTravelAllowanceServiceProvider(){ + + return (TravelAllowanceServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(TravelAllowanceModel.class); + } + + private Money formatAmount(Money money){ + + if(money != null){ + BigDecimal bigDecimal = money.getNumber().numberValue(BigDecimal.class); + return Money.of(bigDecimal.setScale(2, RoundingMode.HALF_EVEN),EUR_CURRENCY); + } + return Money.of(0, EUR_CURRENCY); + } + + public Money calculatePostingAllowancePersonTotal(List personModels) { + + Money sumAmtEUR = Money.of(0, EUR_CURRENCY); + for (PostingAllowancePersonJpaEntity personModel : personModels) { + Money totalAmount = personModel.getTotalAmount(); + sumAmtEUR = sumAmtEUR.add(totalAmount); + } + + return formatAmount(sumAmtEUR); + } + + + + private boolean isChild(FamilyMemberModel familyMemberModel){ + + return !isSpouse(familyMemberModel) ; + } + + private boolean isSpouse(FamilyMemberModel familyMemberModel){ + + return Objects.equals(41L, familyMemberModel.getTrpCD()) + || Objects.equals(42L, familyMemberModel.getTrpCD()) + || Objects.equals(61L, familyMemberModel.getTrpCD()); + } + + private String failedMessage(HashMap> failedMessagesMap){ + if(nonNull(failedMessagesMap)){ + StringBuilder stringBuilder=new StringBuilder(); + failedMessagesMap.forEach((key, strings) -> { + stringBuilder.append("

    "); + stringBuilder.append(key); + stringBuilder.append("

    "); + strings.forEach(s -> { + stringBuilder.append("

    -"); + stringBuilder.append(s); + stringBuilder.append("

    "); + }); + }); + + return stringBuilder.toString(); + } + return ""; + } + private String successMessage( List postingAllowanceBatchEventModels){ + + if(CollectionUtils.isNotEmpty(postingAllowanceBatchEventModels)){ + StringBuilder stringBuilder=new StringBuilder(); + postingAllowanceBatchEventModels.forEach(postingAllowanceBatchEventModel -> { + stringBuilder.append("

    -"); + stringBuilder.append(postingAllowanceBatchEventModel.getPostingAllowanceStringId()); + stringBuilder.append("

    "); + }); + return stringBuilder.toString(); + } + return ""; + } + + private String getKey(String message){ + + if(nonNull(message) && message.contains("The Staff Member already has an approved")){ + + return "The Staff Member already has an approved or paid travel request for the same exercise year for the following request(s):"; + }else if(nonNull(message) && message.contains("The total amount must be a positive value for a posting id")){ + + return "The total amount must be a positive value for the following request(s):"; + }else if(nonNull(message) && message.contains("The Staff Member already has an approved or paid travel request")){ + + return "A staff can only receive one travel allowance per year. An approved or paid travel request with a different origin period for this year already exists for the following request(s):"; + } + return String.format("The %s for the following request(s):",message); + } + + + + private PersonAddressHistoryJpaEntity getPersonAddressHistoryJpaEntity(List personAddressJpaEntities, TravelAllowanceJpaEntity travelAllowanceJpaEntity){ + + LocalDate assignmentStartDate = travelAllowanceJpaEntity.getAssignmentStartDate(); // assignment start date + LocalDate assignmentEndDate = travelAllowanceJpaEntity.getAssignmentEndDate(); // assignment end date + + List list = personAddressJpaEntities.stream() + .sorted(Comparator.comparing(PersonAddressHistoryJpaEntity::getStartDate)) // sort by start date so that we can get the last latest address + .filter( + personAddressHistoryJpaEntity1 -> { + + LocalDate lastAddressStartDate = personAddressHistoryJpaEntity1.getStartDate(); //dependency address history start date + LocalDate lastAddressEndDate = personAddressHistoryJpaEntity1.getEndDate(); //dependency address history end date + + return (lastAddressStartDate.isAfter(assignmentStartDate) || lastAddressStartDate.isEqual(assignmentStartDate)) && + lastAddressStartDate.isBefore(assignmentEndDate) && + !lastAddressStartDate.isBefore(assignmentStartDate) && + (!lastAddressEndDate.isAfter(assignmentEndDate) || lastAddressEndDate.isAfter(assignmentEndDate)) && + Objects.equals(1,personAddressHistoryJpaEntity1.getTadrCd()); // filter on personal private address + } + ).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(list)){ + + return Iterables.getLast(list);//get last with the latest date + } + + return null; + } + + public Optional getChild(Long parentId) { + PostingAllowancesJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(PostingAllowanceJpaEntity.class, PostingAllowancesJpaRepository.class); + List entities = repo.findByParentPostingAllowanceId(parentId); + Optional child = entities.stream().findAny(); + return child.map(postingAllowanceJpaEntity -> getBeanMapper().map(postingAllowanceJpaEntity, PostingAllowanceModel.class)); + } + + public Boolean canBeRegularized(Long postingAllowanceId) { + List entities =getVTravelAllowancesForManualRegularizations(postingAllowanceId); + return isTherePostingAllowancesToBeRegularized(entities); + } + public List getVTravelAllowancesForManualRegularizations(Long postingAllowanceId) { + VTravelAllowancesForManualRegularizationJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(VTravelAllowancesForManualRegularizationJpaEntity.class, VTravelAllowancesForManualRegularizationJpaRepository.class); + return repo.findByPostingAllowanceId(postingAllowanceId); + } + + private static boolean isTherePostingAllowancesToBeRegularized(List entities) { + return entities != null && !entities.isEmpty(); + } + + public Boolean isTheParentARegularization(Long postingAllowanceId) { + PostingAllowanceModel postingAllowanceModel = read(postingAllowanceId); + PostingAllowanceModel parent = read(postingAllowanceModel.getParentPostingAllowanceId()); + return "REGULARIZATION".equals(parent.getPostingAllowanceReqType()); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/PostingAllowanceTreatedServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/PostingAllowanceTreatedServiceProvider.java new file mode 100644 index 0000000..75a2f0d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/PostingAllowanceTreatedServiceProvider.java @@ -0,0 +1,34 @@ +package eu.europa.eeas.erights.common.service.provider.allowances; + +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceTreatedJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.allowances.PostingAllowancesTreatedJpaRepository; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class PostingAllowanceTreatedServiceProvider { + + + private final PostingAllowancesTreatedJpaRepository repository; + + public PostingAllowanceTreatedServiceProvider(PostingAllowancesTreatedJpaRepository repository) { + this.repository = repository; + } + + public PostingAllowanceTreatedJpaEntity save(PostingAllowanceTreatedJpaEntity entity){ + + Optional postingAllowanceTreatedJpaEntityOptional = repository.findByPerIdAndSojIdAndExerciseYearAndExpatriationAllowanceStartDate(entity.getPerId(), entity.getSojId(), entity.getExerciseYear(),entity.getExpatriationAllowanceStartDate()); + postingAllowanceTreatedJpaEntityOptional.ifPresent(postingAllowanceTreatedJpaEntity -> repository.deleteById(postingAllowanceTreatedJpaEntity.getId())); + return repository.save(entity); + } + + + public List findBySojIdAndPerIdAndDelegationOrgIdAndExerciseYear(Long sojId, Long perId, Long delegationOrgId, Integer exerciseYear) { + return repository.findBySojIdAndPerIdAndDelegationOrgIdAndExerciseYear(sojId,perId,delegationOrgId,exerciseYear); + } + public List findByPerIdAndDelegationOrgIdAndExerciseYear(Long perId, Long delegationOrgId, Integer exerciseYear) { + return repository.findByPerIdAndDelegationOrgIdAndExerciseYear(perId,delegationOrgId,exerciseYear); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/PostingAllowanceValidation.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/PostingAllowanceValidation.java new file mode 100644 index 0000000..ba49e90 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/PostingAllowanceValidation.java @@ -0,0 +1,168 @@ +package eu.europa.eeas.erights.common.service.provider.allowances; + +import eu.europa.eeas.ananke.core.base.exception.ValidationRuntimeException; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.service.data.validation.Violation; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowancePersonModel; +import eu.europa.eeas.erights.common.service.model.allowances.RegularizationAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.TravelAllowanceModel; + +import java.math.BigDecimal; +import java.util.*; + +public class PostingAllowanceValidation { + + public static String NULL_POSTING_ALLOWANCE_STRING_ID = "Posting Allowance String Id"; + public static String NULL_STAFF_MEMBER = "Staff member is missing"; + public static String NULL_EXERCISE_YEAR = "Exercise year is missing"; + public static String NULL_ASSIGNMENT_CITY_CODE = "Assignment city code is missing"; + public static String NULL_ASSIGNMENT_COUNTRY_CODE = "Assignment country code is missing"; + public static String NULL_ASSIGNMENT_IATA_CODE = "Arrive airport is missing"; + public static String NULL_ORIGIN_IATA_CODE = "Origin airport is missing"; + public static String NULL_OUT_GOING_TRIP_AMOUNT = "Route Price is missing"; + public static String NULL_ORIGIN_PERIOD = "Origin period is missing"; + public static String NULL_PAYMENT_PERIOD = "Payment period is missing"; + public static String NULL_RETURN_TRIP_AMOUNT = "Route Price Inverted is missing"; + public static String NULL_TOTAL_AMOUNT = "Total amount is missing"; + public static String INVALID_TOTAL_AMOUNT = "Total amount should be more that 0"; + public static String INVALID_PAYMENT_PERIOD = "Payment period should be bigger or equal to origin period"; + public static String INVALID_OUT_GOING_TRIP_AMOUNT = "Route Price should be more than 0"; + public static String INVALID_RETURN_TRIP_AMOUNT = "Route Price Inverted should be more than 0"; + public static String NULL_NEW_TOTAL_AMOUNT = "New Total amount is missing"; + public static String NULL_REGULARIZE_AMOUNT = "Regularize amount is missing"; + public static String INVALID_NEW_TOTAL_AMOUNT = "New Total amount should be more that 0"; + public static String ZERO_REGULARIZE_AMOUNT = "Regularize amount should not be 0"; + + public static void executeTransitionValidation(PostingAllowanceModel postingAllowanceModel) { + Set violations = new HashSet<>(); + if(postingAllowanceModel.getPostingAllowanceStringId() == null) { + violations.add(NULL_POSTING_ALLOWANCE_STRING_ID); + } + if(postingAllowanceModel.getStaffMember() == null) { + violations.add(NULL_STAFF_MEMBER); + } + if(postingAllowanceModel.getExerciseYear() == null) { + violations.add(NULL_EXERCISE_YEAR); + } + if(postingAllowanceModel.getAssignmentCityCode() == null) { + violations.add(NULL_ASSIGNMENT_CITY_CODE); + } + if(postingAllowanceModel.getAssignmentCountryCode() == null) { + violations.add(NULL_ASSIGNMENT_COUNTRY_CODE); + } + if(postingAllowanceModel.getAssignmentIataCode() == null) { + violations.add(NULL_ASSIGNMENT_IATA_CODE); + } + if(postingAllowanceModel.getOriginIataCode() == null) { + violations.add(NULL_ORIGIN_IATA_CODE); + } + if(postingAllowanceModel.getOutgoingTripAmount() == null) { + violations.add(NULL_OUT_GOING_TRIP_AMOUNT); + } + if(postingAllowanceModel.getOriginPeriodYear() == null || postingAllowanceModel.getOriginPeriodMonth() == null) { + violations.add(NULL_ORIGIN_PERIOD); + } + if(postingAllowanceModel.getPaymentPeriodYear() == null || postingAllowanceModel.getPaymentPeriodMonth() == null) { + violations.add(NULL_PAYMENT_PERIOD); + } + if(postingAllowanceModel.getReturnTripAmount() == null) { + violations.add(NULL_RETURN_TRIP_AMOUNT); + } + + if(postingAllowanceModel.getReturnTripAmount() == null) { + violations.add(NULL_RETURN_TRIP_AMOUNT); + } else if (postingAllowanceModel.getReturnTripAmount().getNumberStripped().compareTo(BigDecimal.ZERO) <= 0) { + violations.add(INVALID_RETURN_TRIP_AMOUNT); + } + if(postingAllowanceModel.getOutgoingTripAmount() == null) { + violations.add(NULL_OUT_GOING_TRIP_AMOUNT); + } else if (postingAllowanceModel.getOutgoingTripAmount().getNumberStripped().compareTo(BigDecimal.ZERO) <= 0) { + violations.add(INVALID_OUT_GOING_TRIP_AMOUNT); + } + + if(postingAllowanceModel instanceof TravelAllowanceModel){ + if(postingAllowanceModel.getTotalAmount() == null) { + violations.add(NULL_TOTAL_AMOUNT); + } else if (postingAllowanceModel.getTotalAmount().getNumberStripped().compareTo(BigDecimal.ZERO) <= 0) { + violations.add(INVALID_TOTAL_AMOUNT); + } + TravelAllowanceModel travelAllowanceModel1= (TravelAllowanceModel)postingAllowanceModel; + postingPersonViolations(travelAllowanceModel1.getPostingAllowancePersons()).ifPresent(violations::addAll); + } else if(postingAllowanceModel instanceof RegularizationAllowanceModel){ + + RegularizationAllowanceModel regularizationAllowanceModel= (RegularizationAllowanceModel)postingAllowanceModel; + if(regularizationAllowanceModel.getRegularizeAmount() == null) { + violations.add(NULL_REGULARIZE_AMOUNT); + }else if (regularizationAllowanceModel.getRegularizeAmount().getNumberStripped().compareTo(BigDecimal.ZERO) == 0) { + violations.add(ZERO_REGULARIZE_AMOUNT); + } + + if(regularizationAllowanceModel.getNewTotalAmount() == null) { + violations.add(NULL_NEW_TOTAL_AMOUNT); + }else if (regularizationAllowanceModel.getNewTotalAmount().getNumberStripped().compareTo(BigDecimal.ZERO) <= 0) { + violations.add(INVALID_NEW_TOTAL_AMOUNT); + } + + postingPersonViolations(regularizationAllowanceModel.getPostingAllowancePersons()).ifPresent(violations::addAll); + } + if(!areValidPeriods(postingAllowanceModel)) { + violations.add(INVALID_PAYMENT_PERIOD); + } + if (!violations.isEmpty()) { + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(ERightsExceptionCode.ER031, e)); + throw exception; + } + } + + private static boolean areValidPeriods(PostingAllowanceModel postingAllowanceModel) { + if (postingAllowanceModel.getOriginPeriodYear() == null || + postingAllowanceModel.getPaymentPeriodYear() == null || + postingAllowanceModel.getOriginPeriodMonth() == null || + postingAllowanceModel.getPaymentPeriodMonth() == null) { + return false; + } + if (postingAllowanceModel.getOriginPeriodYear() > postingAllowanceModel.getPaymentPeriodYear()) { + return false; + } + return !Objects.equals(postingAllowanceModel.getOriginPeriodYear(), postingAllowanceModel.getPaymentPeriodYear()) || + postingAllowanceModel.getOriginPeriodMonth() <= postingAllowanceModel.getPaymentPeriodMonth(); + } + + private static Optional> postingPersonViolations(List postingAllowancePersons) { + List postingPersonViolations = new LinkedList<>(); + for (PostingAllowancePersonModel postingAllowancePerson : postingAllowancePersons) { + Set violations = postingPersonMeetsRequirementToMove(postingAllowancePerson); + if (violations.isEmpty()) { + return Optional.empty(); + } else { + postingPersonViolations.addAll(violations); + } + } + return Optional.of(postingPersonViolations); + } + + private static Set postingPersonMeetsRequirementToMove(PostingAllowancePersonModel personModel) { + Set violations = new HashSet<>(); + if (personModel.getFirstName() == null) { + violations.add("Dependent: First name"); + } + if (personModel.getSurname() == null) { + violations.add("Dependent: Surname"); + } + if (personModel.getDateOfBirth() == null) { + violations.add("Dependent: Date of birth"); + } + if (personModel.getRoute() == null) { + violations.add("Dependent: Route"); + } + if (personModel.getTripAmount() == null) { + violations.add("Dependent: Trip amount"); + } + if (personModel.getTotalAmount() == null) { + violations.add("Dependent: Total amount"); + } + return violations; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/RegularizationAllowanceServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/RegularizationAllowanceServiceProvider.java new file mode 100644 index 0000000..98b92f9 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/RegularizationAllowanceServiceProvider.java @@ -0,0 +1,824 @@ +package eu.europa.eeas.erights.common.service.provider.allowances; + +import eu.europa.eeas.ananke.core.base.exception.NotAllowedRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ValidationRuntimeException; +import eu.europa.eeas.ananke.core.base.user.User; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.entity.*; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionResultModel; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonAddressHistoryJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.VTravelAllowancesForManualRegularizationJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.RegularizationAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.VPersonJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.VPlaceOfOriginJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.allowances.RegularizationAllowanceJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.PersonAddressHistoryJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.PersonAddressJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.service.data.provider.*; +import eu.europa.eeas.erights.common.service.data.provider.declaration.FamilyMemberJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.validation.Violation; +import eu.europa.eeas.erights.common.service.model.VNewTravelAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowancePersonModel; +import eu.europa.eeas.erights.common.service.model.allowances.RegularizationAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.TravelAllowanceModel; +import eu.europa.eeas.erights.common.service.model.declaration.FamilyMemberModel; +import eu.europa.eeas.erights.common.tools.allowances.TravelAllowanceRoute; +import eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceEvent; +import eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceState; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.javamoney.moneta.Money; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.util.*; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; + +import static eu.europa.eeas.erights.common.service.provider.allowances.TravelAllowanceServiceProvider.*; +import static eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceEvent.SAVE_AS_DRAFT; +import static java.util.Objects.isNull; +import static java.util.Objects.nonNull; + +@Service +public class RegularizationAllowanceServiceProvider extends AbstractDataServiceProvider implements + EntityReader, + EntityCreator, + EntityUpdater, + EntityDeleter, + EntitySaver { + + private final VNewTravelAllowanceJpaServiceProvider travelAllowanceJpaServiceProvider; + + private final VPersonJpaServiceProvider vPersonJpaServiceProvider; + + private final MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + private final RegularizationAllowanceJpaRepository regularizationAllowanceJpaRepository; + + private final PersonJpaServiceProvider personJpaServiceProvider; + + private final PostingAllowanceDefaultServiceProvider postingAllowanceDefaultServiceProvider; + + private final PostingAllowancePersonServiceProvider postingAllowancePersonServiceProvider; + + private final PostingAllowanceServiceProvider postingAllowanceServiceProvider; + + private final VPersonJpaRepository vPersonJpaRepository; + + private final PlaceOriginAirportJpaServiceProvider placeOriginAirportJpaServiceProvider; + + private final LocationJpaServiceProvider locationJpaServiceProvider; + + + @Qualifier(ERightsBeanNames.PostingAllowanceStateMachine.SERVICE) + private final StateMachineService postingAllowanceStateMachineService; + + + private final DataServiceProviderRegistry dataServiceProviderRegistry; + private final PersonAddressJpaRepository personAddressJpaRepository; + private final PostingAllowanceTreatedServiceProvider treatedServiceProvider; + private final PersonAddressHistoryJpaRepository personAddressHistoryJpaRepository; + + public RegularizationAllowanceServiceProvider(VNewTravelAllowanceJpaServiceProvider travelAllowanceJpaServiceProvider, + VPersonJpaServiceProvider vPersonJpaServiceProvider, + MovementFileJpaServiceProvider movementFileJpaServiceProvider, + RegularizationAllowanceJpaRepository regularizationAllowanceJpaRepository, + PersonJpaServiceProvider personJpaServiceProvider, + PostingAllowanceDefaultServiceProvider postingAllowanceDefaultServiceProvider, PostingAllowanceServiceProvider postingAllowanceServiceProvider, StateMachineService requestStateMachineService, + AppParameterJpaServiceProvider appParameterJpaServiceProvider, + PostingAllowancePersonServiceProvider postingAllowancePersonServiceProvider, + DataServiceProviderRegistry dataServiceProviderRegistry, + PersonAddressJpaRepository personAddressJpaRepository, + VPlaceOfOriginJpaRepository placeOfOriginJpaRepository, VPersonJpaRepository vPersonJpaRepository, + PlaceOriginAirportJpaServiceProvider placeOriginAirportJpaServiceProvider, LocationJpaServiceProvider locationJpaServiceProvider, + PostingAllowanceTreatedServiceProvider treatedServiceProvider, + PersonAddressHistoryJpaRepository personAddressHistoryJpaRepository) { + + this.travelAllowanceJpaServiceProvider = travelAllowanceJpaServiceProvider; + this.vPersonJpaServiceProvider = vPersonJpaServiceProvider; + this.movementFileJpaServiceProvider = movementFileJpaServiceProvider; + this.regularizationAllowanceJpaRepository = regularizationAllowanceJpaRepository; + this.personJpaServiceProvider = personJpaServiceProvider; + this.postingAllowanceDefaultServiceProvider = postingAllowanceDefaultServiceProvider; + this.postingAllowanceServiceProvider = postingAllowanceServiceProvider; + this.postingAllowanceStateMachineService = requestStateMachineService; + this.postingAllowancePersonServiceProvider = postingAllowancePersonServiceProvider; + this.dataServiceProviderRegistry = dataServiceProviderRegistry; + this.personAddressJpaRepository = personAddressJpaRepository; + this.vPersonJpaRepository = vPersonJpaRepository; + this.placeOriginAirportJpaServiceProvider = placeOriginAirportJpaServiceProvider; + this.locationJpaServiceProvider = locationJpaServiceProvider; + this.treatedServiceProvider = treatedServiceProvider; + this.personAddressHistoryJpaRepository = personAddressHistoryJpaRepository; + } + + @Override + public Class getModelType() { + return RegularizationAllowanceModel.class; + } + + @Override + public Class getEntityType() { + return RegularizationAllowanceJpaEntity.class; + } + + private RegularizationAllowanceModel addState(RegularizationAllowanceModel model, + StateMachineTransitionResultModel transitionResult) { + if (transitionResult.getValid()) { + model.setSmId(transitionResult.getId()); + model.setState(transitionResult.getArrivalState()); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid, addState()"); + } + return model; + } + + + private RegularizationAllowanceModel mapTravelAllowanceModelToRegularizationAllowanceModel(TravelAllowanceModel travelAllowanceModel) { + + return getBeanMapper().map(travelAllowanceModel, RegularizationAllowanceModel.class); + } + + private RegularizationAllowanceModel mapRegularizationAllowanceToRegularizationAllowanceModel(RegularizationAllowanceModel regularizationAllowanceModel) { + + return getBeanMapper().map(regularizationAllowanceModel, RegularizationAllowanceModel.class); + } + + + public RegularizationAllowanceModel updateRegularizationAllowance(RegularizationAllowanceModel regularizationAllowanceModel) { + + if (isNull(regularizationAllowanceModel)) { + throw new ResourceNotFoundRuntimeException(); + } + getTravelAllowanceServiceProvider().validateAndCalculateRoutePrice(regularizationAllowanceModel); + regularizationAllowanceModel = updateDependants(regularizationAllowanceModel); + regularizationAllowanceModel.setPostingAllowancePersons(null); + update(regularizationAllowanceModel); + return read(regularizationAllowanceModel.getId()); + } + + private TravelAllowanceServiceProvider getTravelAllowanceServiceProvider() { + + return (TravelAllowanceServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(TravelAllowanceModel.class); + } + + public RegularizationAllowanceModel updateDependants(RegularizationAllowanceModel regularizationAllowanceModel) { + + if (nonNull(regularizationAllowanceModel.getPostingAllowancePersons()) && + !regularizationAllowanceModel.getPostingAllowancePersons().isEmpty()) { + + List postingAllowancePersons = regularizationAllowanceModel.getPostingAllowancePersons(); + TravelAllowanceServiceProvider travelAllowanceServiceProvider = getTravelAllowanceServiceProvider(); + for (PostingAllowancePersonModel personModel : postingAllowancePersons) { + + personModel.setPostingAllowanceId(regularizationAllowanceModel.getId()); + + if (regularizationAllowanceModel.getOriginIataCode() != null) { + double divisionFamilyMember = getPostingAllowanceEntitlementMonthYearlyDivisible(personModel); + + if (personModel.getRoute() == TravelAllowanceRoute.OUTGOING) { + + personModel.setTripAmount(formatAmount(regularizationAllowanceModel.getOutgoingTripAmount())); + personModel.setTotalAmount(regularizationAllowanceModel.getOutgoingTripAmount().multiply(divisionFamilyMember)); + travelAllowanceServiceProvider.addPostingAllowancePersonOutgoingValues(personModel, regularizationAllowanceModel); + } else { + personModel.setTripAmount(formatAmount(regularizationAllowanceModel.getReturnTripAmount())); + personModel.setTotalAmount(regularizationAllowanceModel.getReturnTripAmount().multiply(divisionFamilyMember)); + travelAllowanceServiceProvider.addPostingAllowancePersonReturnValues(personModel, regularizationAllowanceModel); + } + } + + } + calculateTotalAmountOnUpdateAndCreatePersonsAllowances(regularizationAllowanceModel, postingAllowancePersons); + } + return regularizationAllowanceModel; + } + + private void calculateTotalAmountOnUpdateAndCreatePersonsAllowances(RegularizationAllowanceModel regularizationAllowanceModel, List postingAllowancePersonModels) { + + if (CollectionUtils.isNotEmpty(postingAllowancePersonModels)) { + + Money total = calculatePostingAllowancePersonTotal(postingAllowancePersonModels); + + if (!StringUtils.isBlank(regularizationAllowanceModel.getIataCodeTo()) && + !StringUtils.isBlank(regularizationAllowanceModel.getIataCodeFrom())) { + regularizationAllowanceModel.setRegularizeAmount(total); + } + regularizationAllowanceModel.setPostingAllowancePersons(new ArrayList<>()); + regularizationAllowanceModel.setCalcTotalAmount(total); + + if (StringUtils.isBlank(regularizationAllowanceModel.getIataCodeTo()) || + StringUtils.isBlank(regularizationAllowanceModel.getIataCodeFrom())) { + + regularizationAllowanceModel.setNewTotalAmount(formatAmount(regularizationAllowanceModel.getNewTotalAmount())); + } else { + + regularizationAllowanceModel.setNewTotalAmount(total); + } + Money newTotalAmount = formatAmount(regularizationAllowanceModel.getNewTotalAmount()); + regularizationAllowanceModel.setNewTotalAmount(newTotalAmount); + regularizationAllowanceModel.setTotalAmount(newTotalAmount); + + Money regularizeAmount = regularizationAllowanceModel.getNewTotalAmount().subtract(regularizationAllowanceModel.getInitialTotalAmount()); + regularizationAllowanceModel.setRegularizeAmount(formatAmount(regularizeAmount)); + this.update(regularizationAllowanceModel); + List modelList = postingAllowancePersonModels.stream().peek(personModel -> personModel.setTotalAmount(formatAmount(personModel.getTotalAmount()))).collect(Collectors.toList()); + // deleting existing posting allowance persons before creating the new ones + postingAllowancePersonServiceProvider.deleteByPostingAllowanceId(regularizationAllowanceModel.getId()); + postingAllowancePersonServiceProvider.create(modelList); + regularizationAllowanceModel.setPostingAllowancePersons(modelList); + } + } + + public RegularizationAllowanceModel createOrUpdateRegularizationAllowance(TravelAllowanceModel travelAllowanceModel, + TravelAllowanceModel existingTravelAllowanceModel, + int staffMemberEntitlementMonths) { + + // check for an existing regularization + Optional regularizationAllowanceJpaEntityOptional = regularizationAllowanceJpaRepository.findByParentPostingAllowanceId(existingTravelAllowanceModel.getId()); + staffMemberEntitlementMonths = staffMemberEntitlementMonths >= 9 ? 12 : staffMemberEntitlementMonths; + if (regularizationAllowanceJpaEntityOptional.isPresent()) { + getLogger().info("Updating existing regularization id:{} string:{}",regularizationAllowanceJpaEntityOptional.get().getId(),regularizationAllowanceJpaEntityOptional.get().getPostingAllowanceStringId()); + // updating exiting regularization + return updateRegularizationAllowance(travelAllowanceModel, + staffMemberEntitlementMonths, regularizationAllowanceJpaEntityOptional.get()); + } + getLogger().info("Creating new regularization for travel allowance id:{} string:{}",travelAllowanceModel.getId(),travelAllowanceModel.getPostingAllowanceStringId()); + // creating new regularization + RegularizationAllowanceModel allowanceModel = mapTravelAllowanceModelToRegularizationAllowanceModel(travelAllowanceModel); + allowanceModel.setPostingAllowanceReqType("REGULARIZATION"); + allowanceModel.setInitialTotalAmount(Money.of(0, EUR_CURRENCY)); + allowanceModel.setNewTotalAmount(Money.of(0, EUR_CURRENCY)); + allowanceModel.setRegularizeAmount(Money.of(0, EUR_CURRENCY)); + allowanceModel.setOriginPeriodMonth(existingTravelAllowanceModel.getOriginPeriodMonth()); + allowanceModel.setOriginPeriodYear(existingTravelAllowanceModel.getOriginPeriodYear()); + allowanceModel.setPaymentPeriodMonth(LocalDate.now().getMonthValue()); + allowanceModel.setPaymentPeriodYear(LocalDate.now().getYear() % 2000); + allowanceModel.setParentPostingAllowanceId(existingTravelAllowanceModel.getId()); + allowanceModel.setId(null); + Money regularizationTotalAmount = getRegularizationTotalAmount(allowanceModel, + staffMemberEntitlementMonths); + if(regularizationTotalAmount.isEqualTo(existingTravelAllowanceModel.getTotalAmount())){ + getLogger().error("Regularization not created. Initial total amount = {} is equal to regularization amount = {} for posting allowance id {}",existingTravelAllowanceModel.getTotalAmount(),regularizationTotalAmount,existingTravelAllowanceModel.getId()); + throw new RuntimeException("The new total amount which is generated is equal to the initial amount"); + } + RegularizationAllowanceModel toSave = this.create(allowanceModel); + StateMachineTransitionResultModel transitionResult = this.postingAllowanceStateMachineService.send(SAVE_AS_DRAFT); + this.update(addState(toSave, transitionResult)); + generatePersons(toSave, staffMemberEntitlementMonths, existingTravelAllowanceModel); + + return toSave; + } + + + public RegularizationAllowanceModel getRegularizationAllowance(Long id, User user) { + Optional optionalPostingAllowanceJpaEntity = regularizationAllowanceJpaRepository.findByUserIdOrEmailAndId(user.getId(), user.getEmail(), id); + if (optionalPostingAllowanceJpaEntity.isPresent()) { + RegularizationAllowanceModel regularizationAllowanceModel = getBeanMapper().map(optionalPostingAllowanceJpaEntity.get(), RegularizationAllowanceModel.class); + setParentPostingAllowanceString(regularizationAllowanceModel); + Optional childPostingAllowance = postingAllowanceServiceProvider.getChild(regularizationAllowanceModel.getId()); + setChildAllowanceIdAndString(regularizationAllowanceModel , childPostingAllowance); + return regularizationAllowanceModel; + } else { + return null; + } + } + + public RegularizationAllowanceModel getRegularizationAllowance(Long id) { + RegularizationAllowanceModel regularization = read(id); + setParentPostingAllowanceString(regularization); + Optional childPostingAllowance = postingAllowanceServiceProvider.getChild(regularization.getId()); + setChildAllowanceIdAndString(regularization, childPostingAllowance); + return regularization; + + } + + private void setChildAllowanceIdAndString(RegularizationAllowanceModel regularization, Optional childPostingAllowance) { + if(childPostingAllowance.isPresent()){ + regularization.setChildPostingAllowanceId(childPostingAllowance.get().getId()); + regularization.setChildPostingAllowanceStringId(childPostingAllowance.get().getPostingAllowanceStringId()); + } + } + + private void setParentPostingAllowanceString(RegularizationAllowanceModel regularization) { + if(regularization.getParentPostingAllowanceId() != null) { + PostingAllowanceModel postingAllowance = postingAllowanceServiceProvider.getPostingAllowance(regularization.getParentPostingAllowanceId()); + regularization.setParentPostingAllowanceIdString(postingAllowance.getPostingAllowanceStringId()); + } + } + + public RegularizationAllowanceModel getRegularizationAllowanceInOrganisation(Long id, Set orgIds) { + + if (CollectionUtils.isEmpty(orgIds)) { + return null; + } + RegularizationAllowanceModel allowanceModel = read(id); + boolean anyMatch = orgIds.stream().anyMatch(aLong -> Objects.equals(allowanceModel.getDelegationOrgId(), aLong)); + return anyMatch ? allowanceModel : null; + } + + private void generatePersons(RegularizationAllowanceModel regularizationAllowanceModel, + int staffMemberEntitlementMonths, TravelAllowanceModel existingTravelAllowanceModel) { + + getLogger().info("Generating persons on newly created regulatization {}" , regularizationAllowanceModel.getPostingAllowanceStringId()); + + List postingAllowancePersonModels = createPostingAllowanceModels(regularizationAllowanceModel, staffMemberEntitlementMonths); + + if (CollectionUtils.isNotEmpty(postingAllowancePersonModels)) { + getLogger().info("Number of Posting allowance persons created for regularization {}",postingAllowancePersonModels.size()); + Money total = calculatePostingAllowancePersonTotal(postingAllowancePersonModels); + + addTravelAllowanceFields(regularizationAllowanceModel); + regularizationAllowanceModel.setTotalAmount(total); + regularizationAllowanceModel.setCalcTotalAmount(total); + regularizationAllowanceModel.setNewTotalAmount(total); + regularizationAllowanceModel.setInitialTotalAmount(existingTravelAllowanceModel.getTotalAmount()); + + Money regularizeAmount = regularizationAllowanceModel.getNewTotalAmount().subtract(regularizationAllowanceModel.getInitialTotalAmount()); + regularizationAllowanceModel.setRegularizeAmount(formatAmount(regularizeAmount)); + regularizationAllowanceModel.setPostingAllowancePersons(null); + + this.update(regularizationAllowanceModel); + List modelList = postingAllowancePersonModels.stream().peek(personModel -> personModel.setTotalAmount(formatAmount(personModel.getTotalAmount()))).collect(Collectors.toList()); + // deleting existing posting allowance persons before creating the new ones + postingAllowancePersonServiceProvider.deleteByPostingAllowanceId(regularizationAllowanceModel.getId()); + getLogger().info("Existing posting allowance persons are deleted on regularization {}",regularizationAllowanceModel.getPostingAllowanceStringId()); + postingAllowancePersonServiceProvider.create(modelList); + } + + } + + private Money getRegularizationTotalAmount(RegularizationAllowanceModel regularizationAllowanceModel, + int staffMemberEntitlementMonths) { + + List postingAllowancePersonModels = createPostingAllowanceModels( + regularizationAllowanceModel, staffMemberEntitlementMonths); + if (CollectionUtils.isNotEmpty(postingAllowancePersonModels)) { + return calculatePostingAllowancePersonTotal(postingAllowancePersonModels); + } + return Money.of(0, EUR_CURRENCY); + } + + @NotNull + private List createPostingAllowanceModels(RegularizationAllowanceModel regularizationAllowanceModel, int staffMemberEntitlementMonths) { + TravelAllowanceServiceProvider travelAllowanceServiceProvider = (TravelAllowanceServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(TravelAllowanceModel.class); + List postingAllowancePersonModels = new ArrayList<>(); + FamilyMemberJpaServiceProvider serviceProvider = (FamilyMemberJpaServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor(FamilyMemberModel.class); + List familyMembers = serviceProvider.getFamilyMembers(regularizationAllowanceModel.getStaffMember().getPerId()); + regularizationAllowanceModel.setDualPosting("NO"); //by default, we put NO so the ones without spouse will have NO + PostingAllowancePersonModel staffMemberPostingAllowancePerson = travelAllowanceServiceProvider.createPostingAllowancePersonModelFromPersonMode(regularizationAllowanceModel.getStaffMember(), regularizationAllowanceModel, staffMemberEntitlementMonths); + postingAllowancePersonModels.add(staffMemberPostingAllowancePerson); + if (nonNull(familyMembers) && CollectionUtils.isNotEmpty(familyMembers)) { + familyMembers.forEach(familyMemberModel -> { + PostingAllowancePersonModel postingAllowancePersonModelFromFamilyMember = travelAllowanceServiceProvider.createPostingAllowancePersonModelFromFamilyMember(familyMemberModel, regularizationAllowanceModel); + travelAllowanceServiceProvider.assignDefaultValuesForMembers(postingAllowancePersonModelFromFamilyMember, + regularizationAllowanceModel, familyMemberModel, postingAllowancePersonModelFromFamilyMember.getRelPerId(), staffMemberPostingAllowancePerson); + postingAllowancePersonModels.add(postingAllowancePersonModelFromFamilyMember); + }); + } + return postingAllowancePersonModels; + } + + private void addTravelAllowanceFields(RegularizationAllowanceModel regularizationAllowanceModel) { + + Long fileIdSequence = regularizationAllowanceJpaRepository.getSequenceForPostingAllowanceNumber(regularizationAllowanceModel.getExerciseYear()); + regularizationAllowanceModel.setPostingAllowanceNumber(fileIdSequence); + regularizationAllowanceModel.setPostingAllowanceStringId(String.format("%d-FVO-%04d", regularizationAllowanceModel.getExerciseYear(), fileIdSequence)); + this.setOriginAndPaymentPeriodDefaults(regularizationAllowanceModel); + } + + private void addTravelAllowanceFieldsNewRegularization(RegularizationAllowanceModel regularizationAllowanceModel) { + Long fileIdSequence = regularizationAllowanceJpaRepository.getSequenceForPostingAllowanceNumber(regularizationAllowanceModel.getExerciseYear()); + regularizationAllowanceModel.setPostingAllowanceNumber(fileIdSequence); + regularizationAllowanceModel.setPostingAllowanceStringId(String.format("%d-FVO-%04d", regularizationAllowanceModel.getExerciseYear(), fileIdSequence)); + } + + private void setOriginAndPaymentPeriodDefaults(RegularizationAllowanceModel regularizationAllowanceModel) { + TravelAllowanceServiceProvider travelAllowanceServiceProvider = (TravelAllowanceServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(TravelAllowanceModel.class); + + LocalDate expatriationAllowanceStartDate = travelAllowanceServiceProvider.getExpatriationDate(regularizationAllowanceModel); + regularizationAllowanceModel.setOriginPeriodYear(travelAllowanceServiceProvider.getDefaultOriginPeriodYear(expatriationAllowanceStartDate)); + regularizationAllowanceModel.setOriginPeriodMonth(travelAllowanceServiceProvider.getDefaultOriginPeriodMonth(expatriationAllowanceStartDate)); + regularizationAllowanceModel.setPaymentPeriodYear(travelAllowanceServiceProvider.getDefaultPaymentPeriodYear(regularizationAllowanceModel)); + regularizationAllowanceModel.setPaymentPeriodMonth(travelAllowanceServiceProvider.getDefaultPaymentPeriodMonth(regularizationAllowanceModel)); + } + + + private RegularizationAllowanceModel updateRegularizationAllowance(TravelAllowanceModel travelAllowanceModel, + int staffMemberEntitlementMonths, + RegularizationAllowanceJpaEntity regularizationAllowanceJpaEntity) { + + RegularizationAllowanceModel regularizationAllowanceModel = getBeanMapper().map(regularizationAllowanceJpaEntity, RegularizationAllowanceModel.class); + regularizationAllowanceModel.setExpatriationAllowanceEndDate(travelAllowanceModel.getExpatriationAllowanceEndDate()); + if (isPaid(regularizationAllowanceModel)) { + + //todo create Regularization of a Regularization + return regularizationAllowanceModel; + } + + + // regenerate persons again + regeneratePersonsByUpdatingEntitlementMonthsOnly(regularizationAllowanceModel, staffMemberEntitlementMonths, + regularizationAllowanceModel.getPostingAllowancePersons()); + + return regularizationAllowanceModel; + } + + private boolean isPaid(PostingAllowanceModel postingAllowance) { + + return PostingAllowanceState.PAID.name().equals(postingAllowance.getStatus()); + } + + private void regeneratePersonsByUpdatingEntitlementMonthsOnly(RegularizationAllowanceModel regularizationAllowanceModel, + int staffMemberEntitlementMonths, + List postingAllowancePersonModels) { + + getLogger().info("Regenerating persons on regularization id:{} string:{}", + regularizationAllowanceModel.getId(), + regularizationAllowanceModel.getPostingAllowanceStringId()); + List newPostingAllowancePersonModels = new ArrayList<>(); + // looking for a staff member, if exists we get his/her entitlement months. The dependents will never have entitlement months which is greater than staff member + PostingAllowancePersonModel staffMemberPostingAllowancePersonModel = getStaffMemberPostingAllowancePersonModel(postingAllowancePersonModels); + + if (nonNull(staffMemberPostingAllowancePersonModel)) { + TravelAllowanceServiceProvider travelAllowanceServiceProvider = (TravelAllowanceServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(TravelAllowanceModel.class); + + staffMemberPostingAllowancePersonModel.setId(null); // create staff member person with new id since we are going to delete an existing one + staffMemberPostingAllowancePersonModel.setEntitledMonths(staffMemberEntitlementMonths); + Integer entitledMonths = staffMemberPostingAllowancePersonModel.getEntitledMonths(); + double division = entitledMonths / (double) 12; +// calculate staff member entitlement months + staffMemberPostingAllowancePersonModel.setTotalAmount(regularizationAllowanceModel.getOutgoingTripAmount().multiply(division)); + newPostingAllowancePersonModels.add(staffMemberPostingAllowancePersonModel); + + List dependenciesPersons = getStaffMemberDependencies(postingAllowancePersonModels); + + getLogger().info("Found {} dependent persons on staff member :{} ", + dependenciesPersons.size(), staffMemberPostingAllowancePersonModel.getPerId()); + + if (CollectionUtils.isNotEmpty(dependenciesPersons)) { + + FamilyMemberJpaServiceProvider serviceProvider = (FamilyMemberJpaServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor(FamilyMemberModel.class); + + // get family members excluding staff member + List familyMembers = serviceProvider.getFamilyMembers(regularizationAllowanceModel.getStaffMember().getPerId()); + getLogger().info("Family members excluding staff member:{} are {}", + regularizationAllowanceModel.getStaffMember().getPerId(), familyMembers.size()); + // loop family members to calculate their entitlement months + dependenciesPersons.forEach(personModel -> { + getLogger().info("Calculating entitlement months for dependent:{}", + personModel.getPerId()); + personModel.setId(null); // create dependent person with new id + FamilyMemberModel familyMemberModel = new FamilyMemberModel(); + familyMemberModel.setTrpCD(-111L); + //match an existing dependent with a family member + if (CollectionUtils.isNotEmpty(familyMembers)) { + familyMemberModel = familyMembers.stream().filter(familyMemberModel1 -> + Objects.equals(personModel.getRelPerId(), familyMemberModel1.getRelPerId()) && + Objects.equals(personModel.getTrcCd(), familyMemberModel1.getTrpCD()) + ).findFirst().orElse(familyMemberModel); + } + // calculate family member entitlement months + double divisionFamilyMember = calculateFamilyMemberEntitlementMonths(regularizationAllowanceModel, staffMemberPostingAllowancePersonModel, travelAllowanceServiceProvider, personModel, familyMemberModel); + + /* + add new functionality for validating address change + */ + PersonAddressHistoryJpaEntity personAddress = getPersonAddressHistory(regularizationAllowanceModel, travelAllowanceServiceProvider, personModel); + String travelAllowanceAssignmentCountryCode = regularizationAllowanceModel.getAssignmentCountryCode(); + + if (doesNotHaveAddressHistory(personAddress)) { + getLogger().info("Family member do not have address{}.", + personModel.getPerId()); + setReturnTripAmounts(regularizationAllowanceModel, personModel, divisionFamilyMember); + } else if (isDependentAddressSameAsAssigmentAddress(personAddress, travelAllowanceAssignmentCountryCode)) { + getLogger().info( + "Family member have same address as assignement address{}.", + personModel.getPerId()); + setOutgoingTripAmounts(regularizationAllowanceModel, personModel, divisionFamilyMember); + } else { + getLogger().info("Setting return trip amount for family member {}.", + personModel.getPerId()); + setReturnTripAmounts(regularizationAllowanceModel, personModel, divisionFamilyMember); + } + // adding family member to the list + getLogger().info("Added family member {} to the list", personModel.getPerId()); + newPostingAllowancePersonModels.add(personModel); + + }); + + } + } + + calculateTotalAmountAndCreatePersonsAllowances(regularizationAllowanceModel, newPostingAllowancePersonModels); + } + + private void setOutgoingTripAmounts(RegularizationAllowanceModel regularizationAllowanceModel, PostingAllowancePersonModel personModel, double divisionFamilyMember) { + personModel.setRoute(TravelAllowanceRoute.OUTGOING); + personModel.setTripAmount(formatAmount(regularizationAllowanceModel.getOutgoingTripAmount())); + personModel.setTotalAmount(regularizationAllowanceModel.getOutgoingTripAmount().multiply(divisionFamilyMember)); + } + + private void setReturnTripAmounts(RegularizationAllowanceModel regularizationAllowanceModel, PostingAllowancePersonModel personModel, double divisionFamilyMember) { + personModel.setRoute(TravelAllowanceRoute.RETURN); + personModel.setTripAmount(formatAmount(regularizationAllowanceModel.getReturnTripAmount())); + personModel.setTotalAmount(regularizationAllowanceModel.getReturnTripAmount().multiply(divisionFamilyMember)); + } + + private double calculateFamilyMemberEntitlementMonths(RegularizationAllowanceModel regularizationAllowanceModel, PostingAllowancePersonModel staffMemberPostingAllowancePersonModel, TravelAllowanceServiceProvider travelAllowanceServiceProvider, PostingAllowancePersonModel personModel, FamilyMemberModel familyMemberModel) { + getLogger().info("Calculate family member entitlement months {}", + familyMemberModel.getPerId()); + int familyMemberEntitleMonths = travelAllowanceServiceProvider.familyMemberEntitleMonths(personModel, regularizationAllowanceModel, familyMemberModel, + staffMemberPostingAllowancePersonModel.getEntitledMonths()); + if (familyMemberEntitleMonths > staffMemberPostingAllowancePersonModel.getEntitledMonths()) { + familyMemberEntitleMonths = staffMemberPostingAllowancePersonModel.getEntitledMonths(); + } else { + familyMemberEntitleMonths = familyMemberEntitleMonths >= 9 ? 12 : familyMemberEntitleMonths; + } + // use familyMember entitlement months and divide by 12 + double divisionFamilyMember = familyMemberEntitleMonths / (double) 12; + personModel.setEntitledMonths(familyMemberEntitleMonths); + getLogger().info("Calculated entitlement months {}", divisionFamilyMember); + return divisionFamilyMember; + } + + @NotNull + private List getStaffMemberDependencies(List postingAllowancePersonModels) { + return postingAllowancePersonModels.stream().filter(personModel -> isNotAStaffMember(personModel)).collect(Collectors.toList()); + } + + @Nullable + private PostingAllowancePersonModel getStaffMemberPostingAllowancePersonModel(List postingAllowancePersonModels) { + return postingAllowancePersonModels.stream().filter(personModel -> Objects.equals(-1L, personModel.getTrcCd())).findFirst().orElse(null); + } + + private void calculateTotalAmountAndCreatePersonsAllowances(RegularizationAllowanceModel regularizationAllowanceModel, List postingAllowancePersonModels) { + getLogger().info("Calculate total amount and person allowances on regularization {}", + regularizationAllowanceModel.getPostingAllowanceStringId()); + if (CollectionUtils.isNotEmpty(postingAllowancePersonModels)) { + + Money total = calculatePostingAllowancePersonTotal(postingAllowancePersonModels); + + + regularizationAllowanceModel.setTotalAmount(total); + regularizationAllowanceModel.setCalcTotalAmount(total); + regularizationAllowanceModel.setNewTotalAmount(total); + regularizationAllowanceModel.setInitialTotalAmount(regularizationAllowanceModel.getInitialTotalAmount()); + + Money regularizeAmount = regularizationAllowanceModel.getNewTotalAmount().subtract(regularizationAllowanceModel.getInitialTotalAmount()); + regularizationAllowanceModel.setRegularizeAmount(formatAmount(regularizeAmount)); + regularizationAllowanceModel.setPostingAllowancePersons(new ArrayList<>()); + this.update(regularizationAllowanceModel); + List modelList = postingAllowancePersonModels.stream().peek(personModel -> personModel.setTotalAmount(formatAmount(personModel.getTotalAmount()))).collect(Collectors.toList()); + getLogger().info("Posting allowance persons created {}", modelList.size()); + // deleting existing posting allowance persons before creating the new ones + postingAllowancePersonServiceProvider.deleteByPostingAllowanceId(regularizationAllowanceModel.getId()); + postingAllowancePersonServiceProvider.create(modelList); + } + } + + public RegularizationAllowanceModel createRegularization(Long postingAllowanceId) { + PostingAllowanceModel postingAllowanceModel = getPostingAllowanceServiceProvider().getPostingAllowance(postingAllowanceId); + if (postingAllowanceModel.getPostingAllowanceReqType().equals("REGULARIZATION")) { + return createRegularizationFromRegularization(postingAllowanceId); + } else { + return createRegularizationFromTravelAllowance(postingAllowanceId); + } + } + + public RegularizationAllowanceModel createRegularizationFromTravelAllowance(Long postingAllowanceId) { + PostingAllowanceServiceProvider postingAllowanceServiceProvider = getPostingAllowanceServiceProvider(); + List vTravelAllowancesForManualRegularizations = postingAllowanceServiceProvider.getVTravelAllowancesForManualRegularizations(postingAllowanceId); + if (CollectionUtils.isEmpty(vTravelAllowancesForManualRegularizations)) { + throw new RuntimeException("Regularization record does not exist"); + } + validateExpatriationDates(vTravelAllowancesForManualRegularizations); + TravelAllowanceServiceProvider travelAllowanceServiceProvider =getTravelAllowanceServiceProvider(); + TravelAllowanceModel travelAllowance = travelAllowanceServiceProvider.getTravelAllowance(postingAllowanceId); + RegularizationAllowanceModel regularizationAllowance = mapTravelAllowanceModelToRegularizationAllowanceModel(travelAllowance); + regularizationAllowance.setPostingAllowanceReqType("REGULARIZATION"); + regularizationAllowance.setInitialTotalAmount(travelAllowance.getTotalAmount()); + regularizationAllowance.setNewTotalAmount(travelAllowance.getTotalAmount()); + regularizationAllowance.setRegularizeAmount(Money.of(0, EUR_CURRENCY)); + regularizationAllowance.setOriginPeriodMonth(travelAllowance.getOriginPeriodMonth()); + regularizationAllowance.setOriginPeriodYear(travelAllowance.getOriginPeriodYear()); + regularizationAllowance.setPaymentPeriodMonth(LocalDate.now().getMonthValue()); + regularizationAllowance.setPaymentPeriodYear(LocalDate.now().getYear() % 2000); + regularizationAllowance.setParentPostingAllowanceId(travelAllowance.getId()); + regularizationAllowance.setId(null); + regularizationAllowance.setPostingAllowanceStringId(null); + regularizationAllowance.setSmId(null); + RegularizationAllowanceModel created = this.save(regularizationAllowance); + addTravelAllowanceFieldsNewRegularization(created); + createRegularizationPersons(created, travelAllowance.getPostingAllowancePersons(), vTravelAllowancesForManualRegularizations,postingAllowanceId); + this.update(created); + StateMachineTransitionResultModel transitionResult = this.postingAllowanceStateMachineService.send(SAVE_AS_DRAFT); + this.update(addState(created, transitionResult)); + return created; + } + + private void validateExpatriationDates( + List vTravelAllowancesForManualRegularizations) { + + List nullExpatriationDatesList = vTravelAllowancesForManualRegularizations.stream() + .filter(vTravelAllowancesForManualRegularizationJpaEntity -> + isNull( + vTravelAllowancesForManualRegularizationJpaEntity.getExpatriationAllowanceStartDate()) + || + isNull( + vTravelAllowancesForManualRegularizationJpaEntity.getExpatriationAllowanceEndDate())) + .collect( + Collectors.toList()); + + if(CollectionUtils.isNotEmpty(nullExpatriationDatesList)){ + List violations = new LinkedList<>(); + violations.add(new Violation(ERightsExceptionCode.ER040,ERightsExceptionCode.ER040.getDescription())); + ValidationRuntimeException exception = new ValidationRuntimeException(); + violations.forEach(e -> exception.addItem(e.getCode(), e.getMessage())); + throw exception; + } + } + + public RegularizationAllowanceModel createRegularizationFromRegularization(Long postingAllowanceId) { + PostingAllowanceServiceProvider postingAllowanceServiceProvider = getPostingAllowanceServiceProvider(); + List vTravelAllowancesForManualRegularizations = postingAllowanceServiceProvider.getVTravelAllowancesForManualRegularizations(postingAllowanceId); + if (CollectionUtils.isEmpty(vTravelAllowancesForManualRegularizations)) { + throw new RuntimeException("Regularization record does not exist"); + } + validateExpatriationDates(vTravelAllowancesForManualRegularizations); + RegularizationAllowanceModel previousRegularization = read(postingAllowanceId); + RegularizationAllowanceModel regularizationAllowance = mapRegularizationAllowanceToRegularizationAllowanceModel(previousRegularization); + regularizationAllowance.setPostingAllowanceReqType("REGULARIZATION"); + regularizationAllowance.setInitialTotalAmount(previousRegularization.getTotalAmount()); + regularizationAllowance.setNewTotalAmount(previousRegularization.getTotalAmount()); + regularizationAllowance.setRegularizeAmount(Money.of(0, EUR_CURRENCY)); + regularizationAllowance.setOriginPeriodMonth(previousRegularization.getOriginPeriodMonth()); + regularizationAllowance.setOriginPeriodYear(previousRegularization.getOriginPeriodYear()); + regularizationAllowance.setPaymentPeriodMonth(LocalDate.now().getMonthValue()); + regularizationAllowance.setPaymentPeriodYear(LocalDate.now().getYear() % 2000); + regularizationAllowance.setParentPostingAllowanceId(previousRegularization.getId()); + regularizationAllowance.setId(null); + regularizationAllowance.setPostingAllowanceStringId(null); + regularizationAllowance.setSmId(null); + RegularizationAllowanceModel created = this.save(regularizationAllowance); + addTravelAllowanceFieldsNewRegularization(created); + createRegularizationPersons(created, previousRegularization.getPostingAllowancePersons(), vTravelAllowancesForManualRegularizations,postingAllowanceId); + this.update(created); + StateMachineTransitionResultModel transitionResult = this.postingAllowanceStateMachineService.send(SAVE_AS_DRAFT); + this.update(addState(created, transitionResult)); + return created; + } + + private PostingAllowanceServiceProvider getPostingAllowanceServiceProvider() { + return (PostingAllowanceServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor(PostingAllowanceModel.class); + } + + private void createRegularizationPersons(RegularizationAllowanceModel regularizationAllowanceModel, List postingAllowancePersonModels, + List vTravelAllowancesForManualRegularizations,long postingAllowanceId) { + + + boolean arePostingAllowanceDatesExists = arePostingAllowanceDatesExists(postingAllowanceId); + if(!arePostingAllowanceDatesExists){ + copyExistingPersonsFromParentPostingAllowance(regularizationAllowanceModel,postingAllowancePersonModels); + regularizationAllowanceModel.setCopiedDependenciesFromPreviousAllowance(true); + return; + } + List newTravelAllowanceModels = new ArrayList<>(); + vTravelAllowancesForManualRegularizations.forEach(vTravelAllowancesForManualRegularizationJpaEntity -> { + VNewTravelAllowanceModel postingAllowanceExpatriationModel = new VNewTravelAllowanceModel(); + postingAllowanceExpatriationModel.setExpatriationAllowanceStartDate(vTravelAllowancesForManualRegularizationJpaEntity.getExpatriationAllowanceStartDate()); + postingAllowanceExpatriationModel.setExpatriationAllowanceEndDate(vTravelAllowancesForManualRegularizationJpaEntity.getExpatriationAllowanceEndDate()); + postingAllowanceExpatriationModel.setDelegationOrgId(vTravelAllowancesForManualRegularizationJpaEntity.getDelegationOrgId()); + newTravelAllowanceModels.add(postingAllowanceExpatriationModel); + }); + newTravelAllowanceModels.sort(Comparator.comparing(VNewTravelAllowanceModel::getExpatriationAllowanceStartDate)); + // calculate staff member entitlement months + AtomicReference previousAtomicReference = new AtomicReference<>(null); + int months = getTravelAllowanceServiceProvider().calculateMonthsForMultipleAssignments(newTravelAllowanceModels, regularizationAllowanceModel.getExerciseYear(), previousAtomicReference); + List postingAllowancePersonModels1 = getTravelAllowanceServiceProvider().generatePersons(regularizationAllowanceModel, months); + + for (PostingAllowancePersonModel personModel : postingAllowancePersonModels1) { + personModel.setPostingAllowanceId(regularizationAllowanceModel.getId()); + recalculateDependentAmounts(regularizationAllowanceModel, personModel); + } + regularizationAllowanceModel.setPostingAllowancePersons(null); + setTripDefaultAmounts(regularizationAllowanceModel, postingAllowancePersonModels1); + } + + private void copyExistingPersonsFromParentPostingAllowance(RegularizationAllowanceModel regularizationAllowanceModel, + List postingAllowancePersonModels) { + + for (PostingAllowancePersonModel personModel : postingAllowancePersonModels) { + personModel.setId(null); + personModel.setPostingAllowanceId(regularizationAllowanceModel.getId()); + recalculateDependentAmounts(regularizationAllowanceModel, personModel); + } + regularizationAllowanceModel.setPostingAllowancePersons(null); + setTripDefaultAmounts(regularizationAllowanceModel, postingAllowancePersonModels); + } + + private boolean arePostingAllowanceDatesExists(Long postingAllowanceId) { + + PostingAllowanceModel postingAllowance = getPostingAllowanceServiceProvider().getPostingAllowance(postingAllowanceId); + return !isNull(postingAllowance.getExpatriationAllowanceStartDate()) && + !isNull(postingAllowance.getExpatriationAllowanceEndDate()) && + !isNull(postingAllowance.getAssignmentStartDate()) && + !isNull(postingAllowance.getAssignmentEndDate()); + } + + public void refreshDependantsAddress(RegularizationAllowanceModel regularizationAllowanceModel) { + if (CollectionUtils.isNotEmpty(regularizationAllowanceModel.getPostingAllowancePersons())) { + List postingAllowancePersons = regularizationAllowanceModel.getPostingAllowancePersons(); + for (PostingAllowancePersonModel personModel : postingAllowancePersons) { + recalculateDependentAmounts(regularizationAllowanceModel, personModel); + } + setTripDefaultAmounts(regularizationAllowanceModel, postingAllowancePersons); + update(regularizationAllowanceModel); + } + } + + private void recalculateDependentAmounts(RegularizationAllowanceModel regularizationAllowanceModel, PostingAllowancePersonModel personModel) { + TravelAllowanceServiceProvider travelAllowanceServiceProvider = getTravelAllowanceServiceProvider(); + if (isNotAStaffMember(personModel)) { + calculateDependantTripAmountAndEntitlementMonths(regularizationAllowanceModel, personModel, travelAllowanceServiceProvider); + } else { + travelAllowanceServiceProvider.addPostingAllowancePersonOutgoingValues(personModel, regularizationAllowanceModel); + } + } + + private void calculateDependantTripAmountAndEntitlementMonths(RegularizationAllowanceModel regularizationAllowanceModel, PostingAllowancePersonModel personModel, TravelAllowanceServiceProvider travelAllowanceServiceProvider) { + personModel.setPostingAllowanceId(regularizationAllowanceModel.getId()); + double divisionFamilyMember = getPostingAllowanceEntitlementMonthYearlyDivisible(personModel); + PersonAddressHistoryJpaEntity personAddress = getPersonAddressHistory(regularizationAllowanceModel, travelAllowanceServiceProvider, personModel); + String travelAllowanceAssignmentCountryCode = regularizationAllowanceModel.getAssignmentCountryCode(); + setRoundTripAmounts(regularizationAllowanceModel, personModel, travelAllowanceServiceProvider, divisionFamilyMember, personAddress, travelAllowanceAssignmentCountryCode); + } + + private void setRoundTripAmounts(RegularizationAllowanceModel regularizationAllowanceModel, PostingAllowancePersonModel personModel, TravelAllowanceServiceProvider travelAllowanceServiceProvider, double divisionFamilyMember, PersonAddressHistoryJpaEntity personAddress, String travelAllowanceAssignmentCountryCode) { + if (doesNotHaveAddressHistory(personAddress)) { + setReturnAmounts(regularizationAllowanceModel, travelAllowanceServiceProvider, personModel, divisionFamilyMember); + } else if (isDependentAddressSameAsAssigmentAddress(personAddress, travelAllowanceAssignmentCountryCode)) { + setOutgoingAmounts(regularizationAllowanceModel, travelAllowanceServiceProvider, personModel, divisionFamilyMember); + } else { + setReturnAmounts(regularizationAllowanceModel, travelAllowanceServiceProvider, personModel, divisionFamilyMember); + } + } + + private PersonAddressHistoryJpaEntity getPersonAddressHistory(RegularizationAllowanceModel regularizationAllowanceModel, TravelAllowanceServiceProvider travelAllowanceServiceProvider, PostingAllowancePersonModel personModel) { + List personAddressJpaEntities = personAddressHistoryJpaRepository.findAllByPerId(personModel.getRelPerId()); + return travelAllowanceServiceProvider.getPersonAddressHistoryJpaEntity(personAddressJpaEntities, regularizationAllowanceModel.getAssignmentStartDate(), regularizationAllowanceModel.getAssignmentEndDate(), regularizationAllowanceModel, false); + } + + private static double getPostingAllowanceEntitlementMonthYearlyDivisible(PostingAllowancePersonModel personModel) { + return personModel.getEntitledMonths() / (double) 12; + } + + private static boolean isDependentAddressSameAsAssigmentAddress(PersonAddressHistoryJpaEntity personAddress, String travelAllowanceAssignmentCountryCode) { + return nonNull(personAddress.getCountryCode()) && + nonNull(travelAllowanceAssignmentCountryCode) && + personAddress.getCountryCode().equalsIgnoreCase(travelAllowanceAssignmentCountryCode); + } + + private static boolean doesNotHaveAddressHistory(PersonAddressHistoryJpaEntity personAddress) { + return isNull(personAddress); + } + + private void setTripDefaultAmounts(RegularizationAllowanceModel regularizationAllowanceModel, List postingAllowancePersons) { + regularizationAllowanceModel.setIataCodeTo("BEL"); // force calculating total amount by using the existing calculateTotalAmountOnUpdateAndCreatePersonsAllowances + regularizationAllowanceModel.setIataCodeFrom("BEL"); + calculateTotalAmountOnUpdateAndCreatePersonsAllowances(regularizationAllowanceModel, postingAllowancePersons); + regularizationAllowanceModel.setPostingAllowancePersons(null); + } + + private static void setOutgoingAmounts(RegularizationAllowanceModel regularizationAllowanceModel, TravelAllowanceServiceProvider travelAllowanceServiceProvider, PostingAllowancePersonModel personModel, double divisionFamilyMember) { + personModel.setRoute(TravelAllowanceRoute.OUTGOING); + travelAllowanceServiceProvider.addPostingAllowancePersonOutgoingValues(personModel, regularizationAllowanceModel); + personModel.setTripAmount(formatAmount(regularizationAllowanceModel.getOutgoingTripAmount())); + personModel.setTotalAmount(regularizationAllowanceModel.getOutgoingTripAmount().multiply(divisionFamilyMember)); + } + + private static boolean isNotAStaffMember(PostingAllowancePersonModel personModel) { + return !Objects.equals(-1L, personModel.getTrcCd()); + } + + private static void setReturnAmounts(RegularizationAllowanceModel regularizationAllowanceModel, TravelAllowanceServiceProvider travelAllowanceServiceProvider, PostingAllowancePersonModel personModel, double divisionFamilyMember) { + personModel.setTripAmount(formatAmount(regularizationAllowanceModel.getReturnTripAmount())); + personModel.setTotalAmount(regularizationAllowanceModel.getReturnTripAmount().multiply(divisionFamilyMember)); + travelAllowanceServiceProvider.addPostingAllowancePersonReturnValues(personModel, regularizationAllowanceModel); + personModel.setRoute(TravelAllowanceRoute.RETURN); + } + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/TransitionValidation.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/TransitionValidation.java new file mode 100644 index 0000000..2bb863d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/TransitionValidation.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.common.service.provider.allowances; + +public class TransitionValidation { + + private final boolean readyToMove; + private final String errorMessage; + + public TransitionValidation(boolean readyToMove, String errorMessage) { + this.readyToMove = readyToMove; + this.errorMessage = errorMessage; + } + + public boolean isReadyToMove() { + return readyToMove; + } + + public String getErrorMessage() { + return errorMessage; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/TravelAllowanceServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/TravelAllowanceServiceProvider.java new file mode 100644 index 0000000..7e72aa2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/allowances/TravelAllowanceServiceProvider.java @@ -0,0 +1,1751 @@ +package eu.europa.eeas.erights.common.service.provider.allowances; + +import com.google.common.collect.Iterables; +import eu.europa.eeas.ananke.core.base.exception.NotAllowedRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.base.user.User; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.entity.*; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionResultModel; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.*; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.PostingAllowanceTreatedJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.TravelAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.*; +import eu.europa.eeas.erights.common.data.jpa.repository.allowances.TravelAllowanceJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.PersonAddressHistoryJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.*; +import eu.europa.eeas.erights.common.service.data.provider.comments.CommentForPostingAllowanceJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.declaration.FamilyMemberJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.*; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowancePersonModel; +import eu.europa.eeas.erights.common.service.model.allowances.RegularizationAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.TravelAllowanceModel; +import eu.europa.eeas.erights.common.service.model.comments.CommentForPostingAllowanceModel; +import eu.europa.eeas.erights.common.service.model.comments.CommentModel; +import eu.europa.eeas.erights.common.service.model.declaration.FamilyMemberModel; +import eu.europa.eeas.erights.common.tools.allowances.TravelAllowanceRoute; +import eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceEvent; +import eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceState; +import eu.europa.eeas.erights.common.tools.utils.Utils; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.javamoney.moneta.Money; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.Month; +import java.time.format.DateTimeFormatter; +import java.time.temporal.TemporalAdjusters; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +import static eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceEvent.REJECT; +import static eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceEvent.SAVE_AS_DRAFT; +import static java.util.Objects.isNull; +import static java.util.Objects.nonNull; + +@Service +public class TravelAllowanceServiceProvider extends AbstractDataServiceProvider implements + EntityReader, + EntityCreator, + EntityUpdater, + EntityDeleter, + EntitySaver +{ + + + + public static final String EUR_CURRENCY = "EUR"; + public static final DateTimeFormatter FORMATTER_YEAR = DateTimeFormatter.ofPattern("yyyy"); + private static final String LOWER_AMOUNT_REJECTION_MESSAGE = "The travel request for your other assignment has a higher total amount than this one and will therefore be taken into account for this annual travel exercise."; + private static final String NON_EU_REJECTION_MESSAGE = "Per the EU Delegation Guide, you must hold a EU nationality as a first nationality to be eligible to the annual travel allowance."; + + private final VNewTravelAllowanceJpaServiceProvider travelAllowanceJpaServiceProvider; + + private final VPersonJpaServiceProvider vPersonJpaServiceProvider; + + private final MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + private final TravelAllowanceJpaRepository travelAllowanceJpaRepository; + + private final PersonJpaServiceProvider peopleJpaServiceProvider; + + private final PostingAllowanceDefaultServiceProvider postingAllowanceDefaultServiceProvider; + + private final PostingAllowancePersonServiceProvider postingAllowancePersonServiceProvider; + + private final PostingAllowanceServiceProvider postingAllowanceServiceProvider; + + private final VPersonJpaRepository vPersonJpaRepository; + + private final PlaceOriginAirportJpaServiceProvider placeOriginAirportJpaServiceProvider; + + private final LocationJpaServiceProvider locationJpaServiceProvider; + + + @Qualifier(ERightsBeanNames.PostingAllowanceStateMachine.SERVICE) + private final StateMachineService postingAllowanceStateMachineService; + + + private final DataServiceProviderRegistry dataServiceProviderRegistry; + private final PersonAddressHistoryJpaRepository personAddressHistoryJpaRepository; + private final PostingAllowanceTreatedServiceProvider treatedServiceProvider; + private final PersonJpaServiceProvider personJpaServiceProvider; + private final VAssignmentHistEeasJpaRepository assignmentHistEeasJpaRepository; + private final MVCountryJpaRepository mvCountryJpaRepository; + private final VPersonIndemnityJpaRepository vPersonIndemnityJpaRepository; + + @Value("${break.loop.counter:10000}") + private Integer breakLoopCounter; + + public TravelAllowanceServiceProvider(VNewTravelAllowanceJpaServiceProvider travelAllowanceJpaServiceProvider, + VPersonJpaServiceProvider vPersonJpaServiceProvider, + MovementFileJpaServiceProvider movementFileJpaServiceProvider, + TravelAllowanceJpaRepository travelAllowanceJpaRepository, + PersonJpaServiceProvider personJpaServiceProvider, + PostingAllowanceDefaultServiceProvider postingAllowanceDefaultServiceProvider, PostingAllowanceServiceProvider postingAllowanceServiceProvider, StateMachineService requestStateMachineService, + PostingAllowancePersonServiceProvider postingAllowancePersonServiceProvider, + DataServiceProviderRegistry dataServiceProviderRegistry, + PersonAddressHistoryJpaRepository personAddressHistoryJpaRepository, + VPersonJpaRepository vPersonJpaRepository, + PlaceOriginAirportJpaServiceProvider placeOriginAirportJpaServiceProvider, LocationJpaServiceProvider locationJpaServiceProvider, + PostingAllowanceTreatedServiceProvider treatedServiceProvider,PersonJpaServiceProvider peopleJpaServiceProvider, + VAssignmentHistEeasJpaRepository assignmentHistEeasJpaRepository, + MVCountryJpaRepository mvCountryJpaRepository, + VPersonIndemnityJpaRepository vPersonIndemnityJpaRepository) { + this.travelAllowanceJpaServiceProvider = travelAllowanceJpaServiceProvider; + this.vPersonJpaServiceProvider = vPersonJpaServiceProvider; + this.movementFileJpaServiceProvider = movementFileJpaServiceProvider; + this.travelAllowanceJpaRepository = travelAllowanceJpaRepository; + this.personJpaServiceProvider = personJpaServiceProvider; + this.postingAllowanceDefaultServiceProvider = postingAllowanceDefaultServiceProvider; + this.postingAllowanceServiceProvider = postingAllowanceServiceProvider; + this.postingAllowanceStateMachineService = requestStateMachineService; + this.postingAllowancePersonServiceProvider = postingAllowancePersonServiceProvider; + this.dataServiceProviderRegistry = dataServiceProviderRegistry; + this.personAddressHistoryJpaRepository = personAddressHistoryJpaRepository; + this.vPersonJpaRepository = vPersonJpaRepository; + this.placeOriginAirportJpaServiceProvider = placeOriginAirportJpaServiceProvider; + this.locationJpaServiceProvider = locationJpaServiceProvider; + this.treatedServiceProvider = treatedServiceProvider; + this.peopleJpaServiceProvider = peopleJpaServiceProvider; + this.assignmentHistEeasJpaRepository = assignmentHistEeasJpaRepository; + this.mvCountryJpaRepository = mvCountryJpaRepository; + this.vPersonIndemnityJpaRepository = vPersonIndemnityJpaRepository; + + } + + @Override + public Class getModelType() { + return TravelAllowanceModel.class; + } + + @Override + public Class getEntityType() { + return TravelAllowanceJpaEntity.class; + } + + + @PreAuthorize(MovementFileSecurityChecker.CAN_CREATE) + @Transactional + public synchronized TravelAllowanceModel createOrUpdateAllowance(TravelAllowanceModel toCreateTravelAllowance, + int staffMemberEntitlementMonths) { + + + /* + Before creating, let's check if there is existing travel allowance by del org id and year for a staff member + If it exists, then we update it if and only if it is in (DRAFT, AWAITING, APPROVED, REJECTED) + If it exists, and it is in (PAID), then we create a regularization + + */ + List existingTravelAllowanceJpaEntities = travelAllowanceJpaRepository. + findByStaffMemberAndDelegationOrgIdAndExerciseYearOrderByIdDesc(getBeanMapper().map(toCreateTravelAllowance.getStaffMember(), + VPersonJpaEntity.class),toCreateTravelAllowance.getDelegationOrgId(), toCreateTravelAllowance.getExerciseYear()); + if(CollectionUtils.isNotEmpty(existingTravelAllowanceJpaEntities)){ + + TravelAllowanceJpaEntity travelAllowanceJpaEntity = existingTravelAllowanceJpaEntities.get(0); + TravelAllowanceModel existingTravelAllowanceModel = getBeanMapper().map(travelAllowanceJpaEntity, TravelAllowanceModel.class); + existingTravelAllowanceModel.setValidationDone(true); // so that the travel allowance will not be added in a list of rejection later on + /* + Regularization is being created if and only if the existing travel allowance request is in + 1. PAID + + */ + if(Objects.equals(existingTravelAllowanceModel.getState(), PostingAllowanceState.PAID)){ + + return createOrUpdateRegularization(toCreateTravelAllowance, staffMemberEntitlementMonths, existingTravelAllowanceModel); + } + /* + Let's update the existing travel allowance request. The Existing Travel Allowance Request is in + 1. DRAFT + 2. AWAITING + 3. REJECTED + 4. APPROVED + */ + return updateExistingTravelAllowance(existingTravelAllowanceModel,toCreateTravelAllowance,staffMemberEntitlementMonths); + } + // create new travel allowance request + + return createTravelAllowance(toCreateTravelAllowance, staffMemberEntitlementMonths); + } + + @NotNull + private TravelAllowanceModel createTravelAllowance(TravelAllowanceModel toCreateTravelAllowance, int staffMemberEntitlementMonths) { + TravelAllowanceModel toSave = this.create(toCreateTravelAllowance); + addTravelAllowanceFields(toSave); + StateMachineTransitionResultModel transitionResult = this.postingAllowanceStateMachineService.send(SAVE_AS_DRAFT); + this.update(addState(toSave, transitionResult)); + List postingAllowancePersonModels = generatePersons(toSave, staffMemberEntitlementMonths); + calculateTotalAmountAndCreatePersonsAllowances(toSave,postingAllowancePersonModels); + return toSave; + } + + @NotNull + private TravelAllowanceModel createOrUpdateRegularization(TravelAllowanceModel toCreateTravelAllowance, int staffMemberEntitlementMonths, TravelAllowanceModel existingTravelAllowanceModel) { + RegularizationAllowanceServiceProvider regularizationAllowanceServiceProvider = (RegularizationAllowanceServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RegularizationAllowanceModel.class); + existingTravelAllowanceModel.setAssignmentEndDate(toCreateTravelAllowance.getAssignmentEndDate()); + + AtomicReference staffMemberEntitlementMonthsAtomicReference = new AtomicReference<>(staffMemberEntitlementMonths); + recalculateExpatriationAmount(existingTravelAllowanceModel, toCreateTravelAllowance,staffMemberEntitlementMonthsAtomicReference); + getLogger().info("create travel request regularization for posting allowance id {} and sojId {} ", existingTravelAllowanceModel.getId(), + toCreateTravelAllowance.getSojId()); + RegularizationAllowanceModel regularizationAllowance = regularizationAllowanceServiceProvider.createOrUpdateRegularizationAllowance(toCreateTravelAllowance, existingTravelAllowanceModel,staffMemberEntitlementMonthsAtomicReference.get()); + getLogger().info("Regularization {} was created for posting allowance id {} and sojId {} ",regularizationAllowance.getId(), existingTravelAllowanceModel.getId(), + toCreateTravelAllowance.getSojId()); + existingTravelAllowanceModel.setRegularizationCreated(true); + return existingTravelAllowanceModel; + } + + private void recalculateExpatriationAmount(TravelAllowanceModel existingTravelAllowanceModel, + TravelAllowanceModel toCreateTravelAllowance, + AtomicReference staffMemberEntitlementMonthsAtomicReference){ + + //get posting allowance persons + List postingAllowancePersons = existingTravelAllowanceModel.getPostingAllowancePersons(); + if(CollectionUtils.isNotEmpty(postingAllowancePersons)){ + + // looking for a staff member + PostingAllowancePersonModel postingAllowancePersonModel = getStaffMemberFromPostingAllowance(existingTravelAllowanceModel.getPostingAllowancePersons()); + + if(isStaffMember(postingAllowancePersonModel)){ + + //check an existing treated posting allowances + List treatedJpaEntities = treatedServiceProvider.findBySojIdAndPerIdAndDelegationOrgIdAndExerciseYear(toCreateTravelAllowance.getSojId(),existingTravelAllowanceModel.getStaffMember().getPerId(), + toCreateTravelAllowance.getDelegationOrgId(),toCreateTravelAllowance.getExerciseYear()); + //staff member entitlement months + int months = postingAllowancePersonModel.getEntitledMonths(); + int staffMemberEntitlementMonths = staffMemberEntitlementMonthsAtomicReference.get(); + if(CollectionUtils.isNotEmpty(treatedJpaEntities)){ + + + List allowanceTreatedJpaEntities = treatedServiceProvider.findByPerIdAndDelegationOrgIdAndExerciseYear(existingTravelAllowanceModel.getStaffMember().getPerId(), + toCreateTravelAllowance.getDelegationOrgId(), toCreateTravelAllowance.getExerciseYear()); + + // get treated allowances excluding the one with same expatriation start date + allowanceTreatedJpaEntities = allowanceTreatedJpaEntities.stream().filter(entity -> + !(toCreateTravelAllowance.getExpatriationAllowanceStartDate() + .equals(entity.getExpatriationAllowanceStartDate()))) + .collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(allowanceTreatedJpaEntities)){ + + + // we know that we are reducing or extending expatriation + + List vNewTravelAllowanceModels = generateVNewTravelAllowanceModelFromPostingAllowanceTreatedJpaEntities(allowanceTreatedJpaEntities); + vNewTravelAllowanceModels.sort(Comparator.comparing(VNewTravelAllowanceModel::getExpatriationAllowanceStartDate)); + + AtomicReference previousAtomicReference = new AtomicReference<>(null); + + int monthsForMultipleAssignments = calculateMonthsForMultipleAssignments(vNewTravelAllowanceModels, toCreateTravelAllowance.getExerciseYear(), previousAtomicReference); + + int tempStaffMemberEntitlementMonths = staffMemberEntitlementMonths + monthsForMultipleAssignments; + + staffMemberEntitlementMonthsAtomicReference.getAndSet(tempStaffMemberEntitlementMonths); + }else{ + + staffMemberEntitlementMonthsAtomicReference.getAndSet(staffMemberEntitlementMonths); + } + return; + + } + + int tempStaffMemberEntitlementMonths = staffMemberEntitlementMonths + months; + staffMemberEntitlementMonthsAtomicReference.getAndSet(tempStaffMemberEntitlementMonths); + + } + } + + } + + private TravelAllowanceModel updateExistingTravelAllowance(TravelAllowanceModel existingTravelAllowanceModel, + TravelAllowanceModel toCreateTravelAllowance, + int staffMemberEntitlementMonths) { + + + //check an existing treated posting allowance + List treatedJpaEntities = treatedServiceProvider.findBySojIdAndPerIdAndDelegationOrgIdAndExerciseYear(toCreateTravelAllowance.getSojId(),existingTravelAllowanceModel.getStaffMember().getPerId(), + toCreateTravelAllowance.getDelegationOrgId(),toCreateTravelAllowance.getExerciseYear()); + + existingTravelAllowanceModel.setAssignmentEndDate(toCreateTravelAllowance.getAssignmentEndDate()); + //get posting allowance persons + List postingAllowancePersons = existingTravelAllowanceModel.getPostingAllowancePersons(); + if(CollectionUtils.isNotEmpty(postingAllowancePersons)){ + + // looking for a staff member, if exists we get his/her entitlement months. The dependents will never have entitlement months which is greater than staff member + PostingAllowancePersonModel postingAllowancePersonModel = getStaffMemberFromPostingAllowance(existingTravelAllowanceModel.getPostingAllowancePersons()); + + if(isStaffMember(postingAllowancePersonModel)){ + + // work on reducing or extending + if(CollectionUtils.isNotEmpty(treatedJpaEntities)){ + + + List allowanceTreatedJpaEntities = treatedServiceProvider.findByPerIdAndDelegationOrgIdAndExerciseYear(existingTravelAllowanceModel.getStaffMember().getPerId(), + toCreateTravelAllowance.getDelegationOrgId(), toCreateTravelAllowance.getExerciseYear()); + + // get treated allowances excluding the one with same expatriation start date + allowanceTreatedJpaEntities = allowanceTreatedJpaEntities.stream().filter(entity -> + !(toCreateTravelAllowance.getExpatriationAllowanceStartDate() + .equals(entity.getExpatriationAllowanceStartDate()))) + .collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(allowanceTreatedJpaEntities)){ + + List vNewTravelAllowanceModels = generateVNewTravelAllowanceModelFromPostingAllowanceTreatedJpaEntities(allowanceTreatedJpaEntities); + vNewTravelAllowanceModels.sort(Comparator.comparing(VNewTravelAllowanceModel::getExpatriationAllowanceStartDate)); + + AtomicReference previousAtomicReference = new AtomicReference<>(null); + + int monthsForMultipleAssignments = calculateMonthsForMultipleAssignments(vNewTravelAllowanceModels, toCreateTravelAllowance.getExerciseYear(), previousAtomicReference); + + staffMemberEntitlementMonths = staffMemberEntitlementMonths + monthsForMultipleAssignments; + + } + + }else{ + int months = postingAllowancePersonModel.getEntitledMonths(); + staffMemberEntitlementMonths =staffMemberEntitlementMonths + months; + } + + // if entitlement months is greater than 9 then we default to 12 months + if(staffMemberEntitlementMonths >= 9){ + staffMemberEntitlementMonths = 12; + } + + //clear persons posting allowances so that we regenerate them again + + + } + } + // regenerate persons again + regeneratePersonsByUpdatingEntitlementMonthsOnly(existingTravelAllowanceModel,staffMemberEntitlementMonths, + existingTravelAllowanceModel.getPostingAllowancePersons()); + return existingTravelAllowanceModel; + } + + private List generateVNewTravelAllowanceModelFromPostingAllowanceTreatedJpaEntities(List allowanceTreatedJpaEntities){ + + + List vNewTravelAllowanceModels= new ArrayList<>(); + allowanceTreatedJpaEntities.forEach(entity -> { + + VNewTravelAllowanceModel vNewTravelAllowanceModel=new VNewTravelAllowanceModel(); + vNewTravelAllowanceModel.setExpatriationAllowanceStartDate(entity.getExpatriationAllowanceStartDate()); + vNewTravelAllowanceModel.setExpatriationAllowanceEndDate(entity.getExpatriationAllowanceEndDate()); + vNewTravelAllowanceModels.add(vNewTravelAllowanceModel); + }); + + return vNewTravelAllowanceModels; + } + + + private void addTravelAllowanceFields(TravelAllowanceModel travelAllowanceModel) { + + + Long fileIdSequence = travelAllowanceJpaRepository.getSequenceForPostingAllowanceNumber(travelAllowanceModel.getExerciseYear()); + travelAllowanceModel.setPostingAllowanceNumber(fileIdSequence); + travelAllowanceModel.setPostingAllowanceStringId(String.format("%d-FVO-%04d", travelAllowanceModel.getExerciseYear(), fileIdSequence)); + + this.setOriginAndPaymentPeriodDefaults(travelAllowanceModel); + + } + + + private TravelAllowanceModel addState(TravelAllowanceModel model, + StateMachineTransitionResultModel transitionResult) { + if (transitionResult.getValid()) { + model.setSmId(transitionResult.getId()); + model.setState(transitionResult.getArrivalState()); + } else { + throw new NotAllowedRuntimeException(ERightsExceptionCode.ER002, "Transition result not valid, addState()"); + } + return model; + } + + public Long createAllTravelAllowances(Integer numberRequests) { + + List vNewTravelAllowanceModels; + switch( numberRequests) { + case 10: + vNewTravelAllowanceModels = travelAllowanceJpaServiceProvider.findTop10(); + break; + case 50: + vNewTravelAllowanceModels = travelAllowanceJpaServiceProvider.findTop50(); + break; + case 100: + vNewTravelAllowanceModels = travelAllowanceJpaServiceProvider.findTop100(); + break; + default: + vNewTravelAllowanceModels = travelAllowanceJpaServiceProvider.findAll(); + } + + + int year = Integer.parseInt(LocalDateTime.now().format(FORMATTER_YEAR)); + + AtomicInteger counter = new AtomicInteger(0); + AtomicInteger errorCounter = new AtomicInteger(0); + vNewTravelAllowanceModels = getAssignmentsForTheCurrentYearUpToCurrentDay(vNewTravelAllowanceModels, + LocalDate.now(),year); + if (CollectionUtils.isNotEmpty(vNewTravelAllowanceModels)) { + + + //we get the list of new travel allowances group by perId + Map> mapPerId = groupVNewTravelAllowancesByPerId(vNewTravelAllowanceModels); + + + mapPerId.forEach((aLong, vNewTravelAllowanceModels1) -> { + // vNewTravelAllowanceModels1 contains all new travel allowances for a person (perId) + //we order vNewTravelAllowanceModels1 by assigmentStartDate + Map> mapDelegationGroup = vNewTravelAllowanceModels1.stream() + .sorted(Comparator.comparing(VNewTravelAllowanceModel::getExpatriationAllowanceStartDate)) + .collect(Collectors.groupingBy(VNewTravelAllowanceModel::getDelegationOrgId,LinkedHashMap::new, + Collectors.toList())); + + AtomicReference previousAtomicReference = new AtomicReference<>(null); + List persistedTravelAllowances = new ArrayList<>(); + //mapDelegationGroup contains list of new travel allowances order by assignment date and group by delegation + for (Map.Entry>pair : mapDelegationGroup.entrySet()) { + try { + + List vNewTravelAllowanceModels2 = pair.getValue(); + vNewTravelAllowanceModels2.sort(Comparator.comparing(VNewTravelAllowanceModel::getExpatriationAllowanceStartDate)); + // calculate staff member entitlement months + int months = calculateMonthsForMultipleAssignments(vNewTravelAllowanceModels2, year, previousAtomicReference); + + //we get the first one, as all the new travel allowance are the same + VNewTravelAllowanceModel vNewTravelAllowance = vNewTravelAllowanceModels2.stream().filter( + model -> Objects.equals(pair.getKey(), model.getDelegationOrgId()) + ).findFirst().orElse(null); + /* + if vNewTravelAllowanceModels2 has two or more assignments in the same del, + we take the last assignment end date + */ + VNewTravelAllowanceModel last = Iterables.getLast(vNewTravelAllowanceModels2); + + if (breakLoopCounter != 0 && counter.longValue() == breakLoopCounter) { + break; + } + assert vNewTravelAllowance != null; + TravelAllowanceModel travelAllowanceModel = mapVNewPostingAllowanceToTravelAllowanceModel(vNewTravelAllowance, year); + travelAllowanceModel.setAssignmentEndDate(last.getAssignEndDate()); + TravelAllowanceModel draft = createOrUpdateAllowance(travelAllowanceModel, months); + counter.incrementAndGet(); + if(!draft.isValidationDone()){ + persistedTravelAllowances.add(draft); + } + treatPostingAllowances(vNewTravelAllowanceModels2,year,draft); + + + } catch (Exception exception) { + getLogger().error("Error creating travel allowance request ", exception); + errorCounter.incrementAndGet(); + } + } + + + validateAndRejected(persistedTravelAllowances); + }); + + + + } + + // todo persist failed V_NEW_TRAVEL_POSTING_ALLOWANCES records + getLogger().info("Total Count from V_NEW_TRAVEL_POSTING_ALLOWANCES= {}, Success {} , Failed {}", vNewTravelAllowanceModels.size(), counter.longValue(), errorCounter.longValue()); + + return counter.longValue(); + } + + private void treatPostingAllowances(List vNewTravelAllowanceModels2, int year, TravelAllowanceModel travelAllowanceModel) { + + for (VNewTravelAllowanceModel vNewTravelAllowanceModel:vNewTravelAllowanceModels2){ + + MVCountryJpaEntity countryJpaEntity = mvCountryJpaRepository.findById(vNewTravelAllowanceModel.getOriginCountryCode()); + PostingAllowanceTreatedJpaEntity treatedJpa=new PostingAllowanceTreatedJpaEntity(); + treatedJpa.setSojId(vNewTravelAllowanceModel.getSojId()); + treatedJpa.setDelegationOrgId(vNewTravelAllowanceModel.getDelegationOrgId()); + treatedJpa.setPerId(vNewTravelAllowanceModel.getPerId()); + treatedJpa.setExerciseYear(year); + treatedJpa.setPostingAllowanceId(travelAllowanceModel.getId()); + treatedJpa.setAssignmentStartDate(travelAllowanceModel.getAssignmentStartDate()); + treatedJpa.setAssignmentEndDate(travelAllowanceModel.getAssignmentEndDate()); + treatedJpa.setExpatriationAllowanceStartDate(vNewTravelAllowanceModel.getExpatriationAllowanceStartDate()); + treatedJpa.setExpatriationAllowanceEndDate(vNewTravelAllowanceModel.getExpatriationAllowanceEndDate()); + treatedJpa.setOriginCountryCode(vNewTravelAllowanceModel.getOriginCountryCode()); + //check an existing treated posting allowance before saving to avoid constraint issue when updating + List treatedJpaEntities = treatedServiceProvider.findBySojIdAndPerIdAndDelegationOrgIdAndExerciseYear(vNewTravelAllowanceModel.getSojId(),vNewTravelAllowanceModel.getPerId(), + vNewTravelAllowanceModel.getDelegationOrgId(),year); + + if(CollectionUtils.isEmpty(treatedJpaEntities)){ + treatedServiceProvider.save(treatedJpa); + }else if(CollectionUtils.isNotEmpty(treatedJpaEntities)){ + + treatedJpaEntities.forEach(entity -> { + + // If posting allowance being created is regularization and is outside EU and no change in expatriation + if (travelAllowanceModel.isRegularizationCreated() && nonNull(countryJpaEntity) + && !countryJpaEntity.getEuState() + && entity.getExpatriationAllowanceEndDate() + .isEqual(vNewTravelAllowanceModel.getExpatriationAllowanceEndDate())) { + treatedServiceProvider.save(treatedJpa); + } else if (!entity.getExpatriationAllowanceEndDate() + .isEqual(vNewTravelAllowanceModel.getExpatriationAllowanceEndDate())) { + + treatedServiceProvider.save(treatedJpa); + } + }); + } + } + + } + + /* + when a person have 2 assigment in the same year , we reject the lower price travel allowance + persistedTravelAllowances + */ + private void validateAndRejected(List persistedTravelAllowances) { + + if (CollectionUtils.isNotEmpty(persistedTravelAllowances)) { + + TravelAllowanceModel latestTravelAllowanceWithHighestTotalAmount = persistedTravelAllowances.stream().max((Comparator.comparing(TravelAllowanceModel::getTotalAmount))).orElse(null); + assert latestTravelAllowanceWithHighestTotalAmount != null; + List markTheseAsRejected = persistedTravelAllowances.stream(). + filter(travelAllowanceModel -> + !Objects.equals(travelAllowanceModel.getId(), latestTravelAllowanceWithHighestTotalAmount.getId())) + .collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(markTheseAsRejected)){ + markTheseAsRejected.forEach(this::lowerAmountRejectionAndAddAComment); + } + + // get travel allowance of the same year by personId from the database + List travelAllowanceJpaEntityList = this.travelAllowanceJpaRepository.findByStaffMemberAndExerciseYear(vPersonJpaRepository.findById(latestTravelAllowanceWithHighestTotalAmount.getStaffMember().getPerId()), latestTravelAllowanceWithHighestTotalAmount.getExerciseYear()); + // filter by id we know it is in DRAFT state now + travelAllowanceJpaEntityList = travelAllowanceJpaEntityList.stream().filter(travelAllowanceJpaEntity -> !Objects.equals(travelAllowanceJpaEntity.getId(), latestTravelAllowanceWithHighestTotalAmount.getId())).collect(Collectors.toList()); + + // The list is not empty, we want to look for any PAID travel request + List paidTravelRequests = travelAllowanceJpaEntityList.stream() + .filter(travelAllowanceJpaEntity -> Objects.equals(travelAllowanceJpaEntity.getState(), PostingAllowanceState.PAID)).collect(Collectors.toList()); + + // PAID request exists + if (CollectionUtils.isNotEmpty(paidTravelRequests)) { + + TravelAllowanceJpaEntity travelAllowancePaidWithHighestTotalAmount = paidTravelRequests.stream().max((Comparator.comparing(TravelAllowanceJpaEntity::getTotalAmount))).orElse(null); + assert travelAllowancePaidWithHighestTotalAmount != null; + if (!latestTravelAllowanceWithHighestTotalAmount.getTotalAmount().isGreaterThanOrEqualTo(travelAllowancePaidWithHighestTotalAmount.getTotalAmount())) { + + lowerAmountRejectionAndAddAComment(latestTravelAllowanceWithHighestTotalAmount); + + } + } else { + + List draftAwaitingAndApprovedTravelRequests = travelAllowanceJpaEntityList.stream() + .filter(travelAllowanceJpaEntity -> !Objects.equals(travelAllowanceJpaEntity.getState(), PostingAllowanceState.REJECTED)).collect(Collectors.toList()); + + if (CollectionUtils.isNotEmpty(draftAwaitingAndApprovedTravelRequests)) { + + TravelAllowanceJpaEntity travelAllowanceDraftAwaitingAndApprovedWithHighestTotalAmount = draftAwaitingAndApprovedTravelRequests.stream().max((Comparator.comparing(TravelAllowanceJpaEntity::getTotalAmount))).orElse(null); + + assert travelAllowanceDraftAwaitingAndApprovedWithHighestTotalAmount != null; + if (latestTravelAllowanceWithHighestTotalAmount.getTotalAmount().isGreaterThanOrEqualTo(travelAllowanceDraftAwaitingAndApprovedWithHighestTotalAmount.getTotalAmount())) { + draftAwaitingAndApprovedTravelRequests.forEach(travelAllowanceModel -> { + postingAllowanceServiceProvider.newStateMachineEvent(REJECT.name(), travelAllowanceModel.getId()); + createComment(travelAllowanceModel.getId(),LOWER_AMOUNT_REJECTION_MESSAGE); + }); + }else{ + lowerAmountRejectionAndAddAComment(latestTravelAllowanceWithHighestTotalAmount); + } + } + } + + rejectTravelAllowancesForNonEUStaffMembers(persistedTravelAllowances); + } + } + + private void lowerAmountRejectionAndAddAComment(TravelAllowanceModel latestTravelAllowanceWithHighestTotalAmount) { + postingAllowanceServiceProvider.newStateMachineEvent(REJECT.name(), latestTravelAllowanceWithHighestTotalAmount.getId()); + createComment(latestTravelAllowanceWithHighestTotalAmount.getId(),LOWER_AMOUNT_REJECTION_MESSAGE); + } + + private void rejectTravelAllowancesForNonEUStaffMembers(List persistedTravelAllowances) { + /* + Reject travel allowance for staff members: + 1 whose place of origin is outside EU + 2 who do not have any EU nationality + */ + persistedTravelAllowances.forEach(travelAllowanceModel -> { + + MVCountryJpaEntity countryJpaEntity = mvCountryJpaRepository.findById(travelAllowanceModel.getFirstNationality()); + + if(nonNull(countryJpaEntity) && !countryJpaEntity.getEuState()){ + + if(Objects.equals(PostingAllowanceState.REJECTED,travelAllowanceModel.getState())){ + + createComment(travelAllowanceModel.getId(),NON_EU_REJECTION_MESSAGE); + }else if(isTravelAllowanceNotRejectedOrPaidState(travelAllowanceModel)){ + + postingAllowanceServiceProvider.newStateMachineEvent(REJECT.name(), travelAllowanceModel.getId()); + createComment(travelAllowanceModel.getId(),NON_EU_REJECTION_MESSAGE); + } + } + }); + } + + + private boolean isTravelAllowanceNotRejectedOrPaidState(TravelAllowanceModel travelAllowanceModel){ + + if(isNull(travelAllowanceModel)){ + + return false; + }else return Objects.equals(PostingAllowanceState.DRAFT, travelAllowanceModel.getState()) || + Objects.equals(PostingAllowanceState.AWAITING, travelAllowanceModel.getState()) || + Objects.equals(PostingAllowanceState.APPROVED, travelAllowanceModel.getState()); + } + + private TravelAllowanceModel mapVNewPostingAllowanceToTravelAllowanceModel(VNewTravelAllowanceModel vNewTravelAllowanceModel, Integer year) { + + VPersonModel personModel = getPersonModel(vNewTravelAllowanceModel.getPerId()); + + TravelAllowanceModel travelAllowanceModel = new TravelAllowanceModel(); + travelAllowanceModel.setStaffMember(personModel); + travelAllowanceModel.setExerciseYear(year); + travelAllowanceModel.setTotalAmount(Money.of(0, EUR_CURRENCY)); + travelAllowanceModel.setCalcTotalAmount(Money.of(0, EUR_CURRENCY)); + travelAllowanceModel.setPostingAllowanceType("ANNUAL TRAVEL"); + travelAllowanceModel.setPostingAllowanceReqType("INITIAL"); + travelAllowanceModel.setDoublePosting(false); + travelAllowanceModel.setAssignmentStartDate(vNewTravelAllowanceModel.getAssStartDat()); + travelAllowanceModel.setExpatriationAllowanceStartDate(vNewTravelAllowanceModel.getExpatriationAllowanceStartDate()); + travelAllowanceModel.setExpatriationAllowanceEndDate(vNewTravelAllowanceModel.getExpatriationAllowanceEndDate()); + travelAllowanceModel.setAssignmentEndDate(vNewTravelAllowanceModel.getAssignEndDate()); + //find Origin airport + + mapCountryAndCityDetails(travelAllowanceModel); + mapAssignmentDetail(travelAllowanceModel, vNewTravelAllowanceModel); + travelAllowanceModel.setDelegationOrgId(vNewTravelAllowanceModel.getDelegationOrgId()); + travelAllowanceModel.setSojId(vNewTravelAllowanceModel.getSojId()); + getIATACodeAndOriginCityCode(travelAllowanceModel); + calculateRoutePrice(travelAllowanceModel); + return travelAllowanceModel; + } + + + private void mapCountryAndCityDetails(TravelAllowanceModel travelAllowanceModel) { + + + List movementFileModels = movementFileJpaServiceProvider.findByPersonId(travelAllowanceModel.getStaffMember().getPerId()); + VPersonModel personModel = vPersonJpaServiceProvider.findById(travelAllowanceModel.getStaffMember().getPerId()); + + if (CollectionUtils.isNotEmpty(movementFileModels)) { + MovementFileModel movementFileModel1 = movementFileModels.stream().filter(movementFileModel -> movementFileModel.getIataCode() != null).findFirst().orElse(null); + if (nonNull(movementFileModel1)) { + travelAllowanceModel.setOriginIataCode(movementFileModel1.getIataCode()); + IataAirportModel iataAirportModel = locationJpaServiceProvider.getIataAirportsById(movementFileModel1.getIataCode()); + travelAllowanceModel.setOriginAirportName(iataAirportModel != null ? iataAirportModel.getAirportName() : " "); + } + } + if (nonNull(personModel)) { + travelAllowanceModel.setOriginCityName((personModel.getOriginCity() == null) ? null : personModel.getOriginCity().toUpperCase().trim()); + travelAllowanceModel.setOriginCountryName(personModel.getOriginCountryDesc()); + travelAllowanceModel.setOriginCountryCode(personModel.getOriginCountryCode()); + String recruitmentCountry = personModel.getRecruitmentCountry(); + if (nonNull(recruitmentCountry) && recruitmentCountry.length() >= 3) { + travelAllowanceModel.setRecruimentCountryCode(recruitmentCountry.substring(0, 3)); + } + + travelAllowanceModel.setRecruimentCityName(personModel.getRecruitmentCity()); + StringBuilder placeOriginBuilder= new StringBuilder(); + if(!StringUtils.isEmpty(travelAllowanceModel.getOriginCountryName())){ + placeOriginBuilder.append(travelAllowanceModel.getOriginCountryName()); + placeOriginBuilder.append(", "); + } + if(!StringUtils.isEmpty(travelAllowanceModel.getOriginCityName())){ + placeOriginBuilder.append((travelAllowanceModel.getOriginCityName() == null) ? null : travelAllowanceModel.getOriginCityName().toUpperCase().trim()); + } + String placeOfOrigin = placeOriginBuilder.toString(); + if(!StringUtils.isEmpty(placeOfOrigin)){ + travelAllowanceModel.setPlaceOfOrigin(placeOfOrigin); + } + + } + + } + + + private void mapAssignmentDetail(TravelAllowanceModel travelAllowanceModel, VNewTravelAllowanceModel vNewTravelAllowanceModel) { + + travelAllowanceModel.setAssignmentCountryCode(vNewTravelAllowanceModel.getJobCountryCode()); + travelAllowanceModel.setAssignmentCityName(vNewTravelAllowanceModel.getJobCityName()); + travelAllowanceModel.setAssignmentCityCode(vNewTravelAllowanceModel.getJobCityCode()); + travelAllowanceModel.setAssignmentIataCode(vNewTravelAllowanceModel.getIataCode()); + IataAirportModel iataAirportModel = locationJpaServiceProvider.getIataAirportsById(vNewTravelAllowanceModel.getIataCode()); + travelAllowanceModel.setAssignmentAirportName(iataAirportModel != null ? iataAirportModel.getAirportName() : " "); + travelAllowanceModel.setAssignmentCountryName(vNewTravelAllowanceModel.getJobCountryName()); + + } + + + public List generatePersons(PostingAllowanceModel postingAllowanceModel, + int staffMemberEntitlementMonths) { + + List postingAllowancePersonModels = new ArrayList<>(); + List familyMembers = getFamilyMembersExcludingStaffMember(postingAllowanceModel); + postingAllowanceModel.setDualPosting("NO"); //by default, we put NO so the ones without spouse will have NO + PostingAllowancePersonModel staffMemberPostingAllowancePerson = createPostingAllowancePersonModelFromPersonMode(postingAllowanceModel.getStaffMember(), postingAllowanceModel,staffMemberEntitlementMonths); + postingAllowancePersonModels.add(staffMemberPostingAllowancePerson); + if (nonNull(familyMembers) && CollectionUtils.isNotEmpty(familyMembers)) { + familyMembers.forEach(familyMemberModel -> { + PostingAllowancePersonModel postingAllowancePersonModelFromFamilyMember = createPostingAllowancePersonModelFromFamilyMember(familyMemberModel, postingAllowanceModel); + assignDefaultValuesForMembers(postingAllowancePersonModelFromFamilyMember, + postingAllowanceModel,familyMemberModel,postingAllowancePersonModelFromFamilyMember.getRelPerId() + ,staffMemberPostingAllowancePerson); + postingAllowancePersonModels.add(postingAllowancePersonModelFromFamilyMember); + }); + } + return postingAllowancePersonModels; + } + + private void regeneratePersonsByUpdatingEntitlementMonthsOnly(TravelAllowanceModel existingTravelAllowance, + int staffMemberEntitlementMonths, + List postingAllowancePersonModels){ + + + List newPostingAllowancePersonModels =new ArrayList<>(); + // looking for a staff member, if exists we get his/her entitlement months. The dependents will never have entitlement months which is greater than staff member + PostingAllowancePersonModel staffMemberPostingAllowancePersonModel = getStaffMemberFromPostingAllowance(postingAllowancePersonModels); + + if(isStaffMember(staffMemberPostingAllowancePersonModel)){ + addPostingAllowancePersonOutgoingValues(staffMemberPostingAllowancePersonModel,existingTravelAllowance); + regenerateStaffMember(existingTravelAllowance, staffMemberEntitlementMonths, newPostingAllowancePersonModels, staffMemberPostingAllowancePersonModel); + + List dependenciesPersons = getStaffMemberFamilyDependencies(postingAllowancePersonModels); + + if(CollectionUtils.isNotEmpty(dependenciesPersons)){ + + List familyMembers = getFamilyMembersExcludingStaffMember(existingTravelAllowance); + // loop family members to calculate their entitlement months + regeneratingFamilyMembers(existingTravelAllowance, newPostingAllowancePersonModels, staffMemberPostingAllowancePersonModel, dependenciesPersons, familyMembers); + + } + } + + calculateTotalAmountAndCreatePersonsAllowances(existingTravelAllowance,newPostingAllowancePersonModels); + } + + private void regeneratingFamilyMembers(TravelAllowanceModel existingTravelAllowance, List newPostingAllowancePersonModels, PostingAllowancePersonModel staffMemberPostingAllowancePersonModel, List dependenciesPersons, List familyMembers) { + dependenciesPersons.forEach(personModel -> { + + personModel.setId(null); // create dependent person with new id + FamilyMemberModel familyMemberModel=new FamilyMemberModel(); + familyMemberModel.setTrpCD(-111L); + //match an existing dependent with a family member + familyMemberModel = getAnExsitingFamilyMember(familyMembers, personModel, familyMemberModel); + // calculate family member entitlement months + double divisionFamilyMember = recalculateFamilyMemberEntitlementMonths(existingTravelAllowance, staffMemberPostingAllowancePersonModel, personModel, familyMemberModel); + + calculateAmountsBasedOnAddressChange(existingTravelAllowance, personModel, divisionFamilyMember); + // adding family member to the list + newPostingAllowancePersonModels.add(personModel); + + }); + } + + private void calculateAmountsBasedOnAddressChange(TravelAllowanceModel existingTravelAllowance, PostingAllowancePersonModel personModel, double divisionFamilyMember) { + /* + add new functionality for validating address change + */ + List personAddressJpaEntities = personAddressHistoryJpaRepository.findAllByPerId(personModel.getRelPerId()); + PersonAddressHistoryJpaEntity personAddress = getPersonAddressHistoryJpaEntity(personAddressJpaEntities, existingTravelAllowance.getAssignmentStartDate(), + existingTravelAllowance.getAssignmentEndDate(), existingTravelAllowance,false); + String travelAllowanceAssignmentCountryCode = existingTravelAllowance.getAssignmentCountryCode(); + + if(isNull(personAddress)){ + setDefaultReturnTripAmounts(personModel, existingTravelAllowance, divisionFamilyMember); + }else if (addressIsTheSameAsAssignementAddress(personAddress, travelAllowanceAssignmentCountryCode)) { + setDefaultOutgoingTripAmounts(personModel, existingTravelAllowance, divisionFamilyMember); + }else{ + setDefaultReturnTripAmounts(personModel, existingTravelAllowance, divisionFamilyMember); + } + } + + private static boolean addressIsTheSameAsAssignementAddress(PersonAddressHistoryJpaEntity personAddress, String travelAllowanceAssignmentCountryCode) { + return nonNull(personAddress.getCountryCode()) && + nonNull(travelAllowanceAssignmentCountryCode) && + personAddress.getCountryCode().equalsIgnoreCase(travelAllowanceAssignmentCountryCode); + } + + private double recalculateFamilyMemberEntitlementMonths(TravelAllowanceModel existingTravelAllowance, PostingAllowancePersonModel staffMemberPostingAllowancePersonModel, PostingAllowancePersonModel personModel, FamilyMemberModel familyMemberModel) { + int familyMemberEntitleMonths = familyMemberEntitleMonths(personModel, existingTravelAllowance, familyMemberModel, + staffMemberPostingAllowancePersonModel.getEntitledMonths()); + if(familyMemberEntitleMonths > staffMemberPostingAllowancePersonModel.getEntitledMonths()){ + familyMemberEntitleMonths = staffMemberPostingAllowancePersonModel.getEntitledMonths(); + }else{ + familyMemberEntitleMonths = familyMemberEntitleMonths >= 9 ? 12:familyMemberEntitleMonths; + } + // use familyMember entitlement months and divide by 12 + double divisionFamilyMember = familyMemberEntitleMonths/(double) 12; + personModel.setEntitledMonths(familyMemberEntitleMonths); + return divisionFamilyMember; + } + + private static FamilyMemberModel getAnExsitingFamilyMember(List familyMembers, PostingAllowancePersonModel personModel, FamilyMemberModel familyMemberModel) { + if(CollectionUtils.isNotEmpty(familyMembers)){ + familyMemberModel = familyMembers.stream().filter(familyMemberModel1 -> + Objects.equals(personModel.getRelPerId(),familyMemberModel1.getRelPerId()) && + Objects.equals(personModel.getTrcCd(),familyMemberModel1.getTrpCD()) + ).findFirst().orElse(familyMemberModel); + } + return familyMemberModel; + } + + private List getFamilyMembersExcludingStaffMember(PostingAllowanceModel postingAllowanceModel) { + FamilyMemberJpaServiceProvider serviceProvider = getFamilyMemberJpaServiceProvider(); + + // get family members excluding staff member + List familyMembers = serviceProvider.getFamilyMembers(postingAllowanceModel.getStaffMember().getPerId()); + return familyMembers; + } + + private FamilyMemberJpaServiceProvider getFamilyMemberJpaServiceProvider() { + return (FamilyMemberJpaServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor(FamilyMemberModel.class); + } + + @NotNull + private List getStaffMemberFamilyDependencies(List postingAllowancePersonModels) { + return postingAllowancePersonModels.stream().filter(this::notAStaffMember).collect(Collectors.toList()); + } + + private static void regenerateStaffMember(TravelAllowanceModel existingTravelAllowance, int staffMemberEntitlementMonths, List newPostingAllowancePersonModels, PostingAllowancePersonModel staffMemberPostingAllowancePersonModel) { + staffMemberPostingAllowancePersonModel.setId(null); // create staff member person with new id since we are going to delete an existing one + staffMemberPostingAllowancePersonModel.setEntitledMonths(staffMemberEntitlementMonths); + Integer entitledMonths = staffMemberPostingAllowancePersonModel.getEntitledMonths(); + double division = entitledMonths/(double) 12; +// calculate staff member entitlement months + staffMemberPostingAllowancePersonModel.setTotalAmount(existingTravelAllowance.getOutgoingTripAmount().multiply(division)); + newPostingAllowancePersonModels.add(staffMemberPostingAllowancePersonModel); + } + + private static boolean isStaffMember(PostingAllowancePersonModel staffMemberPostingAllowancePersonModel) { + return nonNull(staffMemberPostingAllowancePersonModel); + } + + @Nullable + private PostingAllowancePersonModel getStaffMemberFromPostingAllowance(List postingAllowancePersonModels) { + return postingAllowancePersonModels.stream().filter(isStaffMember()).findFirst().orElse(null); + } + + @NotNull + private static Predicate isStaffMember() { + return personModel -> Objects.equals(-1L, personModel.getTrcCd()); + } + + private void calculateTotalAmountAndCreatePersonsAllowances(TravelAllowanceModel travelAllowanceModel, List postingAllowancePersonModels){ + + if (CollectionUtils.isNotEmpty(postingAllowancePersonModels)) { + + Money total = calculatePostingAllowancePersonTotal(postingAllowancePersonModels); + travelAllowanceModel.setTotalAmount(total); + travelAllowanceModel.setCalcTotalAmount(total); + travelAllowanceModel.setPostingAllowancePersons(new ArrayList<>()); + this.update(travelAllowanceModel); + List modelList = postingAllowancePersonModels.stream().peek(personModel -> personModel.setTotalAmount(formatAmount(personModel.getTotalAmount()))).collect(Collectors.toList()); + // deleting existing posting allowance persons before creating the new ones + postingAllowancePersonServiceProvider.deleteByPostingAllowanceId(travelAllowanceModel.getId()); + postingAllowancePersonServiceProvider.create(modelList); + } + } + + private void calculateTotalAmountOnUpdateAndCreatePersonsAllowances(TravelAllowanceModel travelAllowanceModel, List postingAllowancePersonModels){ + + if (CollectionUtils.isNotEmpty(postingAllowancePersonModels)) { + + Money total = calculatePostingAllowancePersonTotal(postingAllowancePersonModels); + + if(!StringUtils.isBlank(travelAllowanceModel.getIataCodeTo()) && + !StringUtils.isBlank(travelAllowanceModel.getIataCodeFrom())){ + travelAllowanceModel.setTotalAmount(total); + } + travelAllowanceModel.setPostingAllowancePersons(new ArrayList<>()); + travelAllowanceModel.setCalcTotalAmount(total); + this.update(travelAllowanceModel); + List modelList = postingAllowancePersonModels.stream().peek(personModel -> personModel.setTotalAmount(formatAmount(personModel.getTotalAmount()))).collect(Collectors.toList()); + // deleting existing posting allowance persons before creating the new ones + postingAllowancePersonServiceProvider.deleteByPostingAllowanceId(travelAllowanceModel.getId()); + postingAllowancePersonServiceProvider.create(modelList); + travelAllowanceModel.setPostingAllowancePersons(modelList); + } + } + + + public PostingAllowancePersonModel createPostingAllowancePersonModelFromPersonMode(VPersonModel personModel, + PostingAllowanceModel travelAllowanceModel, + int staffMemberEntitlementMonths) { + PostingAllowancePersonModel postingAllowancePersonModel = new PostingAllowancePersonModel(); + postingAllowancePersonModel.setPerId(personModel.getPerId()); + postingAllowancePersonModel.setDateOfBirth(personJpaServiceProvider.getPerson(personModel.getPerId()).getBirthDate()); + postingAllowancePersonModel.setTrcCd(-1L); + postingAllowancePersonModel.setTrcCode("Staff Member"); + postingAllowancePersonModel.setOrderTypeOfPerson(0L);//order staff 0,spouse 1,children 2 + postingAllowancePersonModel.setPostingAllowanceId(travelAllowanceModel.getId()); + postingAllowancePersonModel.setRoute(TravelAllowanceRoute.OUTGOING); + postingAllowancePersonModel.setTripAmount(formatAmount(travelAllowanceModel.getOutgoingTripAmount())); + postingAllowancePersonModel.setFirstName(personModel.getFirstName()); + postingAllowancePersonModel.setSurname(personModel.getLastName()); + postingAllowancePersonModel.setWorkInDelegation(true); + postingAllowancePersonModel.setEntitledMonths(staffMemberEntitlementMonths >= 9 ? 12:staffMemberEntitlementMonths); + addPostingAllowancePersonOutgoingValues(postingAllowancePersonModel,travelAllowanceModel); + Integer entitledMonths = postingAllowancePersonModel.getEntitledMonths(); + double division = entitledMonths/(double) 12; + postingAllowancePersonModel.setTotalAmount(travelAllowanceModel.getOutgoingTripAmount().multiply(division)); + PersonModel person = peopleJpaServiceProvider.getPerson(personModel.getPerId()); + if(nonNull(person)){ + postingAllowancePersonModel.setFirstNationality(person.getFirstNationality()); + travelAllowanceModel.setFirstNationality(person.getFirstNationality()); + } + return postingAllowancePersonModel; + } + + + public PostingAllowancePersonModel createPostingAllowancePersonModelFromFamilyMember(FamilyMemberModel familyMemberModel, + PostingAllowanceModel travelAllowanceModel) { + VPersonModel personModel = vPersonJpaServiceProvider.findById(familyMemberModel.getRelPerId()); + PersonModel person = peopleJpaServiceProvider.getPerson(familyMemberModel.getRelPerId()); + PostingAllowancePersonModel postingAllowancePersonModel = new PostingAllowancePersonModel(); + postingAllowancePersonModel.setPerId(familyMemberModel.getPerId()); + postingAllowancePersonModel.setRelPerId(familyMemberModel.getRelPerId()); + postingAllowancePersonModel.setDateOfBirth(familyMemberModel.getRelBirthDate()); + postingAllowancePersonModel.setTrcCd(familyMemberModel.getTrpCD()); + postingAllowancePersonModel.setTrcCode(familyMemberModel.getRelation()); + postingAllowancePersonModel.setOrderTypeOfPerson(isSpouse(familyMemberModel)?1L:2L); //order staff 0,spouse 1,children 2 + postingAllowancePersonModel.setWorkInDelegation(familyMemberModel.getRelativeWorkInDelegation()); + postingAllowancePersonModel.setWorkInHQ(familyMemberModel.getRelativeWorkInHQ()); + postingAllowancePersonModel.setPostingAllowanceId(travelAllowanceModel.getId()); + + if(nonNull(personModel)){ + postingAllowancePersonModel.setFirstName(personModel.getFirstName()); + postingAllowancePersonModel.setSurname(personModel.getLastName()); + } + if(nonNull(person)){ + postingAllowancePersonModel.setFirstNationality(person.getFirstNationality()); + } + + return postingAllowancePersonModel; + } + + + public TravelAllowanceModel getTravelAllowance(Long id) { + TravelAllowanceModel travelAllowanceModel = read(id); + Optional childPostingAllowance = postingAllowanceServiceProvider.getChild(travelAllowanceModel.getId()); + setChildPostingAllowanceIdAndString(travelAllowanceModel, childPostingAllowance); + return travelAllowanceModel; + } + public TravelAllowanceModel getTravelAllowanceInOrganisation(Long id,Set orgIds) { + + if(CollectionUtils.isEmpty(orgIds)){ + return null; + } + TravelAllowanceModel travelAllowanceModel = read(id); + boolean anyMatch = orgIds.stream().anyMatch(aLong -> Objects.equals(travelAllowanceModel.getDelegationOrgId(), aLong)); + return anyMatch ? travelAllowanceModel:null; + } + + public TravelAllowanceModel getTravelAllowance(Long id, User user) { + Optional optionalPostingAllowanceJpaEntity = travelAllowanceJpaRepository.findByUserIdOrEmailAndId(user.getId(), user.getEmail(), id); + if (optionalPostingAllowanceJpaEntity.isPresent()) { + TravelAllowanceModel travelAllowanceModel = getBeanMapper().map(optionalPostingAllowanceJpaEntity.get(),TravelAllowanceModel.class); + Optional childPostingAllowance = postingAllowanceServiceProvider.getChild(travelAllowanceModel.getId()); + setChildPostingAllowanceIdAndString(travelAllowanceModel, childPostingAllowance); + return travelAllowanceModel; + } else { + return null; + + } + } + + private void setChildPostingAllowanceIdAndString(TravelAllowanceModel travelAllowanceModel, Optional childPostingAllowance) { + if(childPostingAllowance.isPresent()){ + travelAllowanceModel.setChildPostingAllowanceId(childPostingAllowance.get().getId()); + travelAllowanceModel.setChildPostingAllowanceStringId(childPostingAllowance.get().getPostingAllowanceStringId()); + } + } + + + public List getTravelAllowances() { + Iterable travelAllowanceJpaEntities = travelAllowanceJpaRepository.findAll(); + return getBeanMapper().mapAsList(travelAllowanceJpaEntities, TravelAllowanceModel.class); + } + + public Integer getDefaultOriginPeriodYear(LocalDate expatriationAllowanceStartDate) { + if (expatriationAllowanceStartDate.isBefore(LocalDate.of(LocalDate.now().getYear(), Month.JUNE, 2))) { + return LocalDate.now().getYear() % 1000; + } else { + if (expatriationAllowanceStartDate.getDayOfMonth() == 1) { + return expatriationAllowanceStartDate.getYear() % 1000; + } else { + return expatriationAllowanceStartDate.plusMonths(1).getYear() % 1000; + } + } + + } + + public Integer getDefaultOriginPeriodMonth(LocalDate expatriationAllowanceStartDate) { + if (expatriationAllowanceStartDate.isBefore(LocalDate.of(LocalDate.now().getYear(), Month.JUNE, 2))) { + return Month.JUNE.getValue(); + } else { + if (expatriationAllowanceStartDate.getDayOfMonth() == 1) { + return expatriationAllowanceStartDate.getMonthValue(); + } else { + return expatriationAllowanceStartDate.plusMonths(1).getMonthValue(); + } + } + } + + public Integer getDefaultPaymentPeriodYear(PostingAllowanceModel travelAllowanceModel) { + if (isNewcomerStaffMember(travelAllowanceModel)) { + return getMovementFileStartDate(travelAllowanceModel).plusMonths(9).getYear() % 1000; + } else { + if(travelAllowanceModel.getAssignmentStartDate().isBefore(LocalDate.of(LocalDate.now().getYear(), Month.JUNE, 2))) { + return LocalDate.now().getYear() % 1000; + } else { + return travelAllowanceModel.getAssignmentStartDate().plusMonths(1).getYear() % 1000; + } + } + } + + private LocalDate getMovementFileStartDate(PostingAllowanceModel travelAllowanceModel) { + List movementFileModels = movementFileJpaServiceProvider.findByPersonId(travelAllowanceModel.getStaffMember().getPerId()); + MovementFileModel movementFileModel = movementFileModels.stream().filter(movementFile -> movementFile.getMovementType().getMovementType().equals("PoR-DEL")).findFirst().orElse(null); + return movementFileModel != null ? movementFileModel.getStartDate() : LocalDate.now(); + } + + private boolean isNewcomerStaffMember(PostingAllowanceModel travelAllowanceModel) { + List movementFileModels = movementFileJpaServiceProvider.findByPersonId(travelAllowanceModel.getStaffMember().getPerId()); + MovementFileModel movementFileModel = movementFileModels.stream().filter(movementFile -> movementFile.getMovementType().getMovementType().equals("PoR-DEL")).findFirst().orElse(null); + return movementFileModel != null; + } + + public Integer getDefaultPaymentPeriodMonth(PostingAllowanceModel travelAllowanceModel) { + if (isNewcomerStaffMember(travelAllowanceModel)) { + return getMovementFileStartDate(travelAllowanceModel).plusMonths(9).getMonth().getValue(); + } else { + if(travelAllowanceModel.getAssignmentStartDate().isBefore(LocalDate.of(LocalDate.now().getYear(), Month.JUNE, 2))) { + return Month.JUNE.getValue(); + } else { + return travelAllowanceModel.getAssignmentStartDate().plusMonths(1).getMonth().getValue(); + } + } + } + + private void setOriginAndPaymentPeriodDefaults(TravelAllowanceModel travelAllowanceModel) { + LocalDate expatriationAllowanceStartDate = getExpatriationDate(travelAllowanceModel); + travelAllowanceModel.setOriginPeriodYear(getDefaultOriginPeriodYear(expatriationAllowanceStartDate)); + travelAllowanceModel.setOriginPeriodMonth(getDefaultOriginPeriodMonth(expatriationAllowanceStartDate)); + travelAllowanceModel.setPaymentPeriodYear(getDefaultPaymentPeriodYear(travelAllowanceModel)); + travelAllowanceModel.setPaymentPeriodMonth(getDefaultPaymentPeriodMonth(travelAllowanceModel)); + } + + public LocalDate getExpatriationDate(PostingAllowanceModel travelAllowanceModel) { + PersonIndemnityJpaRepository personIndemnityJpaRepository = getEntityRepositoryRegistry().getReaderRepositoryFor(PersonIndemnityJpaEntity.class, PersonIndemnityJpaRepository.class); + ArrayList list=new ArrayList<>(); + list.add(410L); + list.add(411L); + List personIndemnityJpaEntities = personIndemnityJpaRepository.findByRgtIdAndIndemnityIdTypeInAndPerIdAttribute(3002L,list , travelAllowanceModel.getStaffMember().getPerId()); + personIndemnityJpaEntities = personIndemnityJpaEntities.stream().sorted(Comparator.comparing(PersonIndemnityJpaEntity::getDateFrom)) + .collect(Collectors.toList()); + Optional personIndemnity = personIndemnityJpaEntities.stream().filter(this::isCurrentRight) + .findFirst(); + if (personIndemnity.isPresent()) { + + if(personIndemnity.get().getDateFrom().isBefore(LocalDate.of(LocalDate.now().getYear(), Month.JANUARY, 1))){ + + return LocalDate.of(LocalDate.now().getYear(), Month.JANUARY, 1); + } + return personIndemnity.get().getDateFrom(); + } else { + return LocalDate.now(); + } + } + /* + Date From Date To + 1-02-2015 to 31-08-2023 1-01-2023 + 1-09-2023 to 31-12-9999 + */ + + private boolean isCurrentRight(PersonIndemnityJpaEntity personIndemnity) { + return (personIndemnity.getDateFrom().isBefore(LocalDate.of(LocalDate.now().getYear(), Month.DECEMBER, 31)) || + personIndemnity.getDateFrom().isEqual(LocalDate.of(LocalDate.now().getYear(), Month.DECEMBER, 31))) && + (personIndemnity.getDateTo().isAfter(LocalDate.of(LocalDate.now().getYear(), Month.JANUARY, 1)) || + personIndemnity.getDateTo().isEqual(LocalDate.of(LocalDate.now().getYear(), Month.JANUARY, 1))) ; + } + + + public TravelAllowanceModel updateTravelAllowance(TravelAllowanceModel travelAllowanceModel) { + + if (isNull(travelAllowanceModel)) { + throw new ResourceNotFoundRuntimeException(); + } + validateAndCalculateRoutePrice(travelAllowanceModel); + travelAllowanceModel = updateDependants(travelAllowanceModel); + travelAllowanceModel.setPostingAllowancePersons(null); + update(travelAllowanceModel); + return read(travelAllowanceModel.getId()); + } + + public void validateAndCalculateRoutePrice(PostingAllowanceModel postingAllowanceModel) { + + + if(Objects.equals(false,postingAllowanceModel.isSaveChanges()) || StringUtils.isBlank(postingAllowanceModel.getIataCodeTo()) || + StringUtils.isBlank(postingAllowanceModel.getIataCodeFrom())){ + + return; + } + + // travelAllowanceModel.getIATACodeFrom() is assignmentIatCode + // travelAllowanceModel.getIATACodeTo() is originIATACode + + boolean outgoingTripExists = postingAllowanceDefaultServiceProvider.exist(postingAllowanceModel.getIataCodeFrom(), + postingAllowanceModel.getIataCodeTo(), postingAllowanceModel.getPostingAllowanceType(), + postingAllowanceModel.getPostingAllowanceReqType(), postingAllowanceModel.getExerciseYear()); + + boolean returnTripExists = postingAllowanceDefaultServiceProvider.exist(postingAllowanceModel.getIataCodeTo(),postingAllowanceModel.getIataCodeFrom(), postingAllowanceModel.getPostingAllowanceType(), + postingAllowanceModel.getPostingAllowanceReqType(), postingAllowanceModel.getExerciseYear()); + + int monthValue = LocalDate.now().getMonthValue(); + Integer exerciseYear = postingAllowanceModel.getExerciseYear(); + Money outgoingTripAmount = postingAllowanceDefaultServiceProvider.getAmount(postingAllowanceModel.getIataCodeFrom(), + postingAllowanceModel.getIataCodeTo(), postingAllowanceModel.getPostingAllowanceType(), postingAllowanceModel.getPostingAllowanceReqType(), + postingAllowanceModel.getExerciseYear(), LocalDate.of(exerciseYear,monthValue, getMaxDayOfMonthOfDay(exerciseYear,monthValue))); + postingAllowanceModel.setOutgoingTripAmount(outgoingTripAmount); + + Money returnTripAmount = postingAllowanceDefaultServiceProvider.getAmount(postingAllowanceModel.getIataCodeTo(), + postingAllowanceModel.getIataCodeFrom(), postingAllowanceModel.getPostingAllowanceType(), postingAllowanceModel.getPostingAllowanceReqType(), + postingAllowanceModel.getExerciseYear(), LocalDate.of(exerciseYear,monthValue, getMaxDayOfMonthOfDay(exerciseYear,monthValue))); + postingAllowanceModel.setReturnTripAmount(returnTripAmount); + + if(!outgoingTripExists && nonNull(outgoingTripAmount) && + outgoingTripAmount.isGreaterThan(Money.of(0, EUR_CURRENCY))){ + + postingAllowanceModel.setOutgoingTripAmount(outgoingTripAmount); + }else{ + postingAllowanceModel.setOutgoingTripAmount(Money.of(0, EUR_CURRENCY)); + } + + if(!returnTripExists && nonNull(returnTripAmount) && + returnTripAmount.isGreaterThan(Money.of(0, EUR_CURRENCY))){ + + postingAllowanceModel.setReturnTripAmount(returnTripAmount); + }else{ + postingAllowanceModel.setReturnTripAmount(Money.of(0, EUR_CURRENCY)); + } + + } + + + public TravelAllowanceModel updateDependants(TravelAllowanceModel travelAllowanceModel) { + if (nonNull(travelAllowanceModel.getPostingAllowancePersons()) && + !travelAllowanceModel.getPostingAllowancePersons().isEmpty()) { + + List postingAllowancePersons = travelAllowanceModel.getPostingAllowancePersons(); + for (PostingAllowancePersonModel personModel : postingAllowancePersons) { + + personModel.setPostingAllowanceId(travelAllowanceModel.getId()); + + if(travelAllowanceModel.getOriginIataCode() != null){ + double divisionFamilyMember = personModel.getEntitledMonths()/(double) 12; + + if(personModel.getRoute() == TravelAllowanceRoute.OUTGOING){ + + personModel.setTripAmount(formatAmount(travelAllowanceModel.getOutgoingTripAmount())); + personModel.setTotalAmount(travelAllowanceModel.getOutgoingTripAmount().multiply(divisionFamilyMember)); + addPostingAllowancePersonOutgoingValues(personModel,travelAllowanceModel); + }else{ + personModel.setTripAmount(formatAmount(travelAllowanceModel.getReturnTripAmount())); + personModel.setTotalAmount(travelAllowanceModel.getReturnTripAmount().multiply(divisionFamilyMember)); + addPostingAllowancePersonReturnValues(personModel,travelAllowanceModel); + } + } + + } + calculateTotalAmountOnUpdateAndCreatePersonsAllowances(travelAllowanceModel,postingAllowancePersons); + } + return travelAllowanceModel; + } + + public void refreshDependantsAddress(TravelAllowanceModel travelAllowanceModel) { + + if (CollectionUtils.isNotEmpty(travelAllowanceModel.getPostingAllowancePersons())) { + + List postingAllowancePersons = travelAllowanceModel.getPostingAllowancePersons(); + for (PostingAllowancePersonModel personModel : postingAllowancePersons) { + + if(notAStaffMember(personModel)){ + + personModel.setPostingAllowanceId(travelAllowanceModel.getId()); + + double divisionFamilyMember = personModel.getEntitledMonths()/(double) 12; + + /* + add new functionality for validating address change + */ + calculateAmountsBasedOnAddressChange(travelAllowanceModel, personModel, divisionFamilyMember); + + }else{ + addPostingAllowancePersonOutgoingValues(personModel,travelAllowanceModel); + } + + + } + + travelAllowanceModel.setIataCodeTo("BEL"); // force calculating total amount by using the existing calculateTotalAmountOnUpdateAndCreatePersonsAllowances + travelAllowanceModel.setIataCodeFrom("BEL"); + calculateTotalAmountOnUpdateAndCreatePersonsAllowances(travelAllowanceModel,postingAllowancePersons); + travelAllowanceModel.setPostingAllowancePersons(null); + update(travelAllowanceModel); + } + } + + private boolean notAStaffMember(PostingAllowancePersonModel personModel) { + return !Objects.equals(-1L,personModel.getTrcCd()); + } + + + private VPersonModel getPersonModel(Long id) { + + VPersonModel personModel = vPersonJpaServiceProvider.findById(id); + if (isNull(personModel)) { + + throw new ResourceNotFoundRuntimeException(String.format("PerId %d was not found", id)); + } + + return personModel; + } + + public TravelAllowanceModel createTravelAllowance(TravelAllowanceModel travelAllowanceRequest) { + VPersonModel personModel = getPersonModel(travelAllowanceRequest.getStaffMember().getPerId()); + Integer year = Integer.parseInt(LocalDateTime.now().format(FORMATTER_YEAR)); + TravelAllowanceModel travelAllowanceModel = new TravelAllowanceModel(); + travelAllowanceModel.setStaffMember(personModel); + travelAllowanceModel.setExerciseYear(year); + travelAllowanceModel.setPostingAllowanceType("TRAVEL"); + travelAllowanceModel.setPostingAllowanceReqType("INITIAL"); + travelAllowanceModel.setDoublePosting(false); + mapCountryAndCityDetails(travelAllowanceModel); + //todo retrieve staff member assignment details + TravelAllowanceModel savedTravelAllowance = createOrUpdateAllowance(travelAllowanceModel,0); + travelAllowanceModel.setId(savedTravelAllowance.getId()); + getIATACodeAndOriginCityCode(travelAllowanceModel); + calculateRoutePrice(travelAllowanceRequest); + return travelAllowanceModel; + } + + + public List getTravelAllowancesByDiscriminatorAndStatus(String discriminatoryType, String status) { + return getBeanMapper().mapAsList(travelAllowanceJpaRepository.findByPostingAllowanceDiscriminatoryTypeAndStatus(discriminatoryType, status), TravelAllowanceModel.class); + } + + public void assignDefaultValuesForMembers(PostingAllowancePersonModel familyMemberPostingAllowancePerson, + PostingAllowanceModel travelAllowanceModel, + FamilyMemberModel familyMemberModel, + Long perId, + PostingAllowancePersonModel staffMemberPostingAllowancePerson) { + + travelAllowanceModel.setDoublePosting(false); + if(isSpouse(familyMemberModel)){ + travelAllowanceModel.setSpouseId(familyMemberModel.getRelPerId()); + travelAllowanceModel.setDoublePosting(familyMemberModel.getRelativeWorkInDelegation()); + if(Boolean.TRUE.equals(familyMemberModel.getRelativeWorkInDelegation())) { + travelAllowanceModel.setDualPosting("DEL"); + updateSpouseDualPostingStatus(familyMemberModel, travelAllowanceModel.getExerciseYear()); + } else if (Boolean.TRUE.equals(familyMemberModel.getRelativeWorkInHQ())) { + travelAllowanceModel.setDualPosting("HQ"); + } + } + List personAddressJpaEntities = personAddressHistoryJpaRepository.findAllByPerId(perId); + int familyMemberEntitleMonths = familyMemberEntitleMonths(familyMemberPostingAllowancePerson, travelAllowanceModel, familyMemberModel, staffMemberPostingAllowancePerson.getEntitledMonths()); + if(familyMemberEntitleMonths > staffMemberPostingAllowancePerson.getEntitledMonths()){ + familyMemberEntitleMonths = staffMemberPostingAllowancePerson.getEntitledMonths(); + }else{ + familyMemberEntitleMonths = familyMemberEntitleMonths >= 9 ? 12:familyMemberEntitleMonths; + } + familyMemberPostingAllowancePerson.setEntitledMonths(familyMemberEntitleMonths); + double division = familyMemberEntitleMonths/(double) 12; + if (CollectionUtils.isNotEmpty(personAddressJpaEntities)) { + PersonAddressHistoryJpaEntity personCurrentAddress = getPersonAddressHistoryJpaEntity(personAddressJpaEntities,travelAllowanceModel.getAssignmentStartDate(), + travelAllowanceModel.getAssignmentEndDate(),travelAllowanceModel,false); + String travelAllowanceOriginCountryCode = travelAllowanceModel.getOriginCountryCode(); + String travelAllowanceAssignmentCountryCode = travelAllowanceModel.getAssignmentCountryCode(); + + if(isNull(personCurrentAddress)){ + + setDefaultReturnTripAmounts(familyMemberPostingAllowancePerson, travelAllowanceModel, division); + return; + } + String personAddressCountryCode = personCurrentAddress.getCountryCode(); + + if (nonNull(personAddressCountryCode) && + nonNull(travelAllowanceAssignmentCountryCode) && + personAddressCountryCode.equalsIgnoreCase(travelAllowanceAssignmentCountryCode)) { + + setDefaultOutgoingTripAmounts(familyMemberPostingAllowancePerson, travelAllowanceModel, division); + }else{ + setDefaultReturnTripAmounts(familyMemberPostingAllowancePerson, travelAllowanceModel, division); + } + }else{ + setDefaultReturnTripAmounts(familyMemberPostingAllowancePerson, travelAllowanceModel, division); + } + + + } + + private void setDefaultReturnTripAmounts(PostingAllowancePersonModel postingAllowancePersonModel, PostingAllowanceModel postingAllowanceModel, double division) { + postingAllowancePersonModel.setRoute(TravelAllowanceRoute.RETURN); + postingAllowancePersonModel.setTripAmount(formatAmount(postingAllowanceModel.getReturnTripAmount())); + addPostingAllowancePersonReturnValues(postingAllowancePersonModel, postingAllowanceModel); + postingAllowancePersonModel.setTotalAmount(postingAllowanceModel.getReturnTripAmount().multiply(division)); + } + + private void setDefaultOutgoingTripAmounts(PostingAllowancePersonModel postingAllowancePersonModel, PostingAllowanceModel postingAllowanceModel, double division) { + postingAllowancePersonModel.setRoute(TravelAllowanceRoute.OUTGOING); + postingAllowancePersonModel.setTripAmount(formatAmount(postingAllowanceModel.getOutgoingTripAmount())); + addPostingAllowancePersonOutgoingValues(postingAllowancePersonModel, postingAllowanceModel); + postingAllowancePersonModel.setTotalAmount(postingAllowanceModel.getOutgoingTripAmount().multiply(division)); + } + + private void updateSpouseDualPostingStatus(FamilyMemberModel familyMemberModel, Integer exerciseYear) { + List travelAllowanceJpaEntityList = this.travelAllowanceJpaRepository.findByStaffMemberAndExerciseYear(vPersonJpaRepository.findById(familyMemberModel.getRelPerId()), exerciseYear); + for (TravelAllowanceJpaEntity travelAllowance : travelAllowanceJpaEntityList) { + if (!travelAllowance.getState().equals(PostingAllowanceState.PAID)) { + travelAllowance.setSpouseId(familyMemberModel.getPerId()); + travelAllowance.setDualPosting("DEL"); + travelAllowanceJpaRepository.save(travelAllowance); + } + } + } + + + public void addPostingAllowancePersonReturnValues(PostingAllowancePersonModel personModel, + PostingAllowanceModel postingAllowanceModel){ + + personModel.setIataCodeFrom(postingAllowanceModel.getOriginIataCode()); + personModel.setIataCodeTo(postingAllowanceModel.getAssignmentIataCode()); + + personModel.setCityFrom(postingAllowanceModel.getOriginCityCode()); + personModel.setCityTo(postingAllowanceModel.getAssignmentCityCode()); + + personModel.setCountryFrom(postingAllowanceModel.getOriginCountryCode()); + personModel.setCountryTo(postingAllowanceModel.getAssignmentCountryCode()); + } + + public void addPostingAllowancePersonOutgoingValues(PostingAllowancePersonModel personModel, + PostingAllowanceModel travelAllowanceModel){ + + personModel.setIataCodeFrom(travelAllowanceModel.getAssignmentIataCode()); + personModel.setIataCodeTo(travelAllowanceModel.getOriginIataCode()); + + personModel.setCityFrom(travelAllowanceModel.getAssignmentCityCode()); + personModel.setCityTo(travelAllowanceModel.getOriginCityCode()); + + personModel.setCountryFrom(travelAllowanceModel.getAssignmentCountryCode()); + personModel.setCountryTo(travelAllowanceModel.getOriginCountryCode()); + + } + + + public int familyMemberEntitleMonths(PostingAllowancePersonModel postingAllowancePersonModel, PostingAllowanceModel travelAllowanceModel, + FamilyMemberModel familyMemberModel,int entitlementMonths) { + + if (isChild(familyMemberModel) && childHasMoreThan2YearsOld(familyMemberModel,travelAllowanceModel.getExerciseYear())) { + + return calculateChildEntitlementMonths(postingAllowancePersonModel, travelAllowanceModel); + + } else if (isSpouse(familyMemberModel)) { + + return calculateSpouseEntitlementMonths(familyMemberModel, entitlementMonths); + + } else { + + return 0; + } + } + + + public boolean childHasMoreThan2YearsOld(FamilyMemberModel familyMemberModel, int exerciseYear){ + + int childDOB = familyMemberModel.getRelBirthDate().getYear(); + int datesDiff = exerciseYear - childDOB; + if (datesDiff >= 2){ + return true; + } + return false; + } + + private int calculateSpouseEntitlementMonths(FamilyMemberModel familyMemberModel, int entitlementMonths) { + if (familyMemberModel.getRelativeWorkInDelegation()) { + return 0; + }else { + return entitlementMonths; + } + } + + @Nullable + private int calculateChildEntitlementMonths(PostingAllowancePersonModel postingAllowancePersonModel, PostingAllowanceModel travelAllowanceModel) { + + String dateTo = String.format("31-DEC-%d",travelAllowanceModel.getExerciseYear()); + String dateFrom = String.format("01-JAN-%d",travelAllowanceModel.getExerciseYear()); + List personRelativeRights = vPersonIndemnityJpaRepository + .getPersonRelativeRights(travelAllowanceModel.getStaffMember().getPerId(), postingAllowancePersonModel.getRelPerId(), 1003L,dateFrom,dateTo); + + if(CollectionUtils.isNotEmpty(personRelativeRights)){ + List newTravelAllowanceModels = new ArrayList<>(); + personRelativeRights.forEach(vPersonIndemnityJpaEntity -> { + VNewTravelAllowanceModel postingAllowanceExpatriationModel = new VNewTravelAllowanceModel(); + postingAllowanceExpatriationModel.setExpatriationAllowanceStartDate(vPersonIndemnityJpaEntity.getDateFrom()); + postingAllowanceExpatriationModel.setExpatriationAllowanceEndDate(vPersonIndemnityJpaEntity.getDateTo()); + postingAllowanceExpatriationModel.setDelegationOrgId(travelAllowanceModel.getDelegationOrgId()); + newTravelAllowanceModels.add(postingAllowanceExpatriationModel); + + }); + newTravelAllowanceModels.sort(Comparator.comparing(VNewTravelAllowanceModel::getExpatriationAllowanceStartDate)); + AtomicReference previousAtomicReference = new AtomicReference<>(null); + return calculateMonthsForMultipleAssignments(newTravelAllowanceModels, travelAllowanceModel.getExerciseYear(), previousAtomicReference); + } + return 0; + } + + private boolean isChild(FamilyMemberModel familyMemberModel){ + + return !isSpouse(familyMemberModel) ; + } + + private boolean isSpouse(FamilyMemberModel familyMemberModel){ + + return Objects.equals(41L, familyMemberModel.getTrpCD()) + || Objects.equals(42L, familyMemberModel.getTrpCD()) + || Objects.equals(61L, familyMemberModel.getTrpCD()); + } + + + public List createTravelAllowanceFromVNewTravelPostingAllowance(Long perId){ + + int year = Integer.parseInt(LocalDateTime.now().format(FORMATTER_YEAR)); + getLogger().info("createTravelAllowanceFromVNewTravelPostingAllowance start- perId " + perId.toString()); + List vNewTravelAllowanceModels = travelAllowanceJpaServiceProvider.findAllByPerId(perId); + List createdIds = new ArrayList<>(); + vNewTravelAllowanceModels = getAssignmentsForTheCurrentYearUpToCurrentDay(vNewTravelAllowanceModels, + LocalDate.now(),year); + if(CollectionUtils.isNotEmpty(vNewTravelAllowanceModels)) { + + // group list by perId + Map> mapPerId = groupVNewTravelAllowancesByPerId(vNewTravelAllowanceModels); + + mapPerId.forEach((aLong, vNewTravelAllowanceModels1) -> { + getLogger().info("createTravelAllowanceFromVNewTravelPostingAllowance mapPerId.forEach " + vNewTravelAllowanceModels1); + // group staff member list by delegation id + Map> mapDelegationGroup = vNewTravelAllowanceModels1.stream() + .sorted(Comparator.comparing(VNewTravelAllowanceModel::getExpatriationAllowanceStartDate)) + .collect(Collectors.groupingBy(VNewTravelAllowanceModel::getDelegationOrgId,LinkedHashMap::new, + Collectors.toList())); + + AtomicReference previousAtomicReference = new AtomicReference<>(null); + List persistedTravelAllowances = new ArrayList<>(); + mapDelegationGroup.forEach((aLong1, vNewTravelAllowanceModels2) -> { + getLogger().info("createTravelAllowanceFromVNewTravelPostingAllowance mapPerId.forEach aLong1 " + aLong1.toString() + " aLong" + aLong.toString()); + // sort by assignment start date + vNewTravelAllowanceModels2.sort(Comparator.comparing(VNewTravelAllowanceModel::getExpatriationAllowanceStartDate)); + // calculate staff member entitlement months + int months = calculateMonthsForMultipleAssignments(vNewTravelAllowanceModels2, year,previousAtomicReference); + VNewTravelAllowanceModel vNewTravelAllowanceModel = vNewTravelAllowanceModels2.stream().filter( + model -> Objects.equals(aLong1, model.getDelegationOrgId()) + ).findFirst().orElse(null); + /* + if vNewTravelAllowanceModels2 has two or more assignments in the same del, + we take the last assignment end date + */ + VNewTravelAllowanceModel last = Iterables.getLast(vNewTravelAllowanceModels2); + assert vNewTravelAllowanceModel != null; + TravelAllowanceModel travelAllowanceModel = mapVNewPostingAllowanceToTravelAllowanceModel(vNewTravelAllowanceModel, year); + travelAllowanceModel.setAssignmentEndDate(last.getAssignEndDate()); + TravelAllowanceModel savedTravelAllowance = createOrUpdateAllowance(travelAllowanceModel, months); + createdIds.add(savedTravelAllowance.getId()); + if (!savedTravelAllowance.isValidationDone()) { + persistedTravelAllowances.add(savedTravelAllowance); + } + treatPostingAllowances(vNewTravelAllowanceModels2, year, savedTravelAllowance); + + }); + + validateAndRejected(persistedTravelAllowances); + }); + + } + return createdIds; + } + + private static Map> groupVNewTravelAllowancesByPerId(List vNewTravelAllowanceModels) { + Map> mapPerId = vNewTravelAllowanceModels.stream() + .filter(vNewTravelAllowanceModel -> vNewTravelAllowanceModel.getDelegationOrgId() != null) + .collect(Collectors.groupingBy(VNewTravelAllowanceModel::getPerId,LinkedHashMap::new, + Collectors.toList())); + return mapPerId; + } + + public void moveToAwaiting(TravelAllowanceModel travelAllowanceModel) { + postingAllowanceServiceProvider.newStateMachineEvent(PostingAllowanceEvent.SUBMIT.name(), travelAllowanceModel.getId()); + } + + public int calculateMonthsForMultipleAssignments(List newTravelAllowanceModels, int exerciseYear + ,AtomicReference previousRef){ + + newTravelAllowanceModels.sort(Comparator.comparing(VNewTravelAllowanceModel::getExpatriationAllowanceStartDate)); + int months = 0; + /* + preserve order of expatriate start date and assignment end date. + expatriate start date must be after this maxEndOfExpatriateDate + */ + LocalDate maxEndOfExpatriateDate = null; + VNewTravelAllowanceModel previous = previousRef.get(); // reference to the previous assignment + for (VNewTravelAllowanceModel vNewTravelAllowanceModel : newTravelAllowanceModels) { //loop assignments in the same exercise year + + LocalDate expatriateStartDate = vNewTravelAllowanceModel.getExpatriationAllowanceStartDate(); //expatriate start date + LocalDate expatriateEndDate = vNewTravelAllowanceModel.getExpatriationAllowanceEndDate(); // expatriate end date + if (previous != null) { + int previousYear = previous.getExpatriationAllowanceEndDate().getYear(); // previous assignment year + int previousMonth = previous.getExpatriationAllowanceEndDate().getMonthValue(); // previous assignment month + /* + check if assignment start year is the same as previous assignment year + and check if assignment start month is the same as previous assignment month + If the two matches, the expatriate start date will be adjusted to the first day of the next month + */ + if (expatriateStartDate.getYear() == previousYear && + expatriateStartDate.getMonthValue() == previousMonth) { + expatriateStartDate = previous.getExpatriationAllowanceEndDate().with(TemporalAdjusters.firstDayOfNextMonth()); + } + } + // using an existing logic to calculate months + int calculatedMonths = Utils.calculatedMonths(expatriateStartDate, expatriateEndDate, exerciseYear); + + if (maxEndOfExpatriateDate == null) { // initialize it on first loop with end of expatriate date + maxEndOfExpatriateDate = vNewTravelAllowanceModel.getExpatriationAllowanceEndDate(); + } + + if (nonNull(maxEndOfExpatriateDate) && nonNull(previous) && + expatriateStartDate.isBefore(maxEndOfExpatriateDate) && + Objects.equals(previous.getDelegationOrgId(), vNewTravelAllowanceModel.getDelegationOrgId())) { + + if (expatriateEndDate.isAfter(maxEndOfExpatriateDate)) { // current expatriate end date must be before max maxEndOfExpatriateDate + maxEndOfExpatriateDate = expatriateEndDate; + months = Math.max(months, calculatedMonths); + } + } else { + months = months + calculatedMonths; // sum up months + previous = vNewTravelAllowanceModel; // used in the next loop to compare dates of the assignment + previousRef.getAndSet(previous); // update a previous assignment reference + } + } + + return months; + } + + private void calculateRoutePrice(TravelAllowanceModel travelAllowanceModel) { + int monthValue = LocalDate.now().getMonthValue(); + Integer exerciseYear = travelAllowanceModel.getExerciseYear(); + Money outgoingTripAmount = postingAllowanceDefaultServiceProvider.getAmount(travelAllowanceModel.getAssignmentIataCode(), + travelAllowanceModel.getOriginIataCode(), travelAllowanceModel.getPostingAllowanceType(), travelAllowanceModel.getPostingAllowanceReqType(), + travelAllowanceModel.getExerciseYear(), LocalDate.of(exerciseYear, monthValue, getMaxDayOfMonthOfDay(exerciseYear,monthValue))); + travelAllowanceModel.setOutgoingTripAmount(outgoingTripAmount); + Money returnTripAmount = postingAllowanceDefaultServiceProvider.getAmount(travelAllowanceModel.getOriginIataCode(), + travelAllowanceModel.getAssignmentIataCode(), travelAllowanceModel.getPostingAllowanceType(), travelAllowanceModel.getPostingAllowanceReqType(), + travelAllowanceModel.getExerciseYear(), LocalDate.of(exerciseYear,monthValue, getMaxDayOfMonthOfDay(exerciseYear,monthValue))); + travelAllowanceModel.setReturnTripAmount(returnTripAmount); + } + + private void getIATACodeAndOriginCityCode(TravelAllowanceModel travelAllowanceModel) { + + + PlaceOriginAirportModel placeOriginAirportModel = this.placeOriginAirportJpaServiceProvider.findIataCodeByCityNameAndCountryCode( + (travelAllowanceModel.getOriginCityName() == null) ? "" : travelAllowanceModel.getOriginCityName().toUpperCase().trim() + ,travelAllowanceModel.getOriginCountryCode() + ); + if(placeOriginAirportModel == null){ + getLogger().error("Error creating travel allowance request getIATACodeAndOriginCityCode {} - {} - {} - {} ",travelAllowanceModel.getOriginCityName(),travelAllowanceModel.getOriginCountryCode(),travelAllowanceModel.getOriginCityCode(),travelAllowanceModel.getSojId()); + }else { + travelAllowanceModel.setOriginIataCode(placeOriginAirportModel.getIataCode()); + IataAirportModel iataAirportModel = locationJpaServiceProvider.getIataAirportsById(placeOriginAirportModel.getIataCode()); + travelAllowanceModel.setOriginAirportName(iataAirportModel != null ? iataAirportModel.getAirportName() : ""); + if(travelAllowanceModel.getOriginCityCode() == null && placeOriginAirportModel.getCityCode() != null){ + travelAllowanceModel.setOriginCityCode(placeOriginAirportModel.getCityCode()); + } + } + + } + + + + public static Money calculatePostingAllowancePersonTotal(List personModels) { + + Money sumAmtEUR = Money.of(0, EUR_CURRENCY); + for (PostingAllowancePersonModel personModel : personModels) { + Money totalAmount = personModel.getTotalAmount(); + sumAmtEUR = sumAmtEUR.add(totalAmount); + } + + return formatAmount(sumAmtEUR); + } + + public static Money formatAmount(Money money){ + + if(money != null){ + BigDecimal bigDecimal = money.getNumber().numberValue(BigDecimal.class); + return Money.of(bigDecimal.setScale(2, RoundingMode.HALF_UP),EUR_CURRENCY); + } + return Money.of(0, EUR_CURRENCY); + } + + + public PersonAddressHistoryJpaEntity getPersonAddressHistoryJpaEntity(List personAddressJpaEntities, + LocalDate assignmentStartDate, + LocalDate assignmentEndDate, + PostingAllowanceModel postingAllowanceModel, + boolean endSearchIfNull){ + + List list = personAddressJpaEntities.stream() + .sorted(Comparator.comparing(PersonAddressHistoryJpaEntity::getStartDate)) // sort by start date so that we can get the last latest address + .filter( + personAddressHistoryJpaEntity1 -> { + + LocalDate lastAddressStartDate = personAddressHistoryJpaEntity1.getStartDate(); //dependency address history start date + LocalDate lastAddressEndDate = personAddressHistoryJpaEntity1.getEndDate(); //dependency address history end date + + return (lastAddressStartDate.isAfter(assignmentStartDate) || lastAddressStartDate.isEqual(assignmentStartDate)) && + (lastAddressStartDate.isBefore(assignmentEndDate) || lastAddressStartDate.isEqual(assignmentEndDate) )&& + (!lastAddressStartDate.isBefore(assignmentStartDate) || lastAddressStartDate.isEqual(assignmentStartDate) )&& + (!lastAddressEndDate.isAfter(assignmentEndDate) || lastAddressEndDate.isAfter(assignmentEndDate)) && + Objects.equals(1,personAddressHistoryJpaEntity1.getTadrCd()); // filter by personal private address + } + ).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(list)){ + + return Iterables.getLast(list);//get last with the latest date + } + // default is false + if(endSearchIfNull){ + + return null; + } + + // we have to check the start date from previous assignments in the same delegation from assignment history + + List vAssignmentHistEeasJpaEntities = assignmentHistEeasJpaRepository + .findByPerIdAndDelegationOrgId(postingAllowanceModel.getStaffMember().getPerId(), + postingAllowanceModel.getDelegationOrgId()); + + vAssignmentHistEeasJpaEntities = vAssignmentHistEeasJpaEntities.stream(). + filter(vAssignmentHistEeasJpaEntity -> + (vAssignmentHistEeasJpaEntity.getStartDate().equals(assignmentEndDate) || + vAssignmentHistEeasJpaEntity.getStartDate().isBefore(assignmentEndDate))) + .collect(Collectors.toList()); + + + PersonAddressHistoryJpaEntity personAddressHistoryJpaEntity = null; + + if(CollectionUtils.isNotEmpty(vAssignmentHistEeasJpaEntities)){ + + //sort by start date and pick the first assignment start date which is the older one + vAssignmentHistEeasJpaEntities.sort(Comparator.comparing(VAssignmentHistEeasJpaEntity::getStartDate)); + Collections.reverse(vAssignmentHistEeasJpaEntities); //reversing the sorted list + for(VAssignmentHistEeasJpaEntity vAssignmentHistEeasJpaEntity: vAssignmentHistEeasJpaEntities) { + + personAddressHistoryJpaEntity = getPersonAddressHistoryJpaEntity(personAddressJpaEntities,vAssignmentHistEeasJpaEntity.getStartDate(), + vAssignmentHistEeasJpaEntity.getEndDate(),postingAllowanceModel,true); + + // break if personAddressHistoryJpaEntity is not null + if(nonNull(personAddressHistoryJpaEntity)){ + + break; + } + } + } + return personAddressHistoryJpaEntity; + } + + public static List getAssignmentsForTheCurrentYearUpToCurrentDay(List vNewTravelAllowanceModels2, + LocalDate currentDate,int exerciseYear){ + + + return vNewTravelAllowanceModels2.stream() + .filter( + vNewTravelAllowanceModel -> { + LocalDate startDate = vNewTravelAllowanceModel.getAssStartDat(); + return (startDate.isBefore(currentDate) || startDate.isEqual(currentDate)) && + vNewTravelAllowanceModel.getAssignEndDate().getYear()>=exerciseYear; // allow end date greater or equal to exercise year + } + ).collect(Collectors.toList()); + } + + + private int getMaxDayOfMonthOfDay(int year, int month){ + + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.YEAR, year); + calendar.set(Calendar.MONTH, month - 1); + return calendar.getActualMaximum(Calendar.DAY_OF_MONTH); + } + + public void createComment(Long postingAllowanceId,String commentText){ + CommentForPostingAllowanceModel model = new CommentForPostingAllowanceModel(); + model.setCommentText(commentText); + this.preProcess(model, postingAllowanceId); + getCommentsForPostingAllowanceService().create(model); + } + private void preProcess(CommentModel comment, long entityId) { + comment.setDeleted(false); + comment.setEntityId(entityId); + comment.setAuthorName("System"); + } + + private CommentForPostingAllowanceJpaServiceProvider getCommentsForPostingAllowanceService() { + return dataServiceProviderRegistry.getDataServiceProviderFor(CommentForPostingAllowanceModel.class, CommentForPostingAllowanceJpaServiceProvider.class); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EdmsLoginPoPTokenProviderImpl.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EdmsLoginPoPTokenProviderImpl.java new file mode 100644 index 0000000..003c4ca --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EdmsLoginPoPTokenProviderImpl.java @@ -0,0 +1,71 @@ +package eu.europa.eeas.erights.common.service.provider.email; + +import com.nimbusds.jose.JOSEException; +import com.nimbusds.jose.JWSAlgorithm; +import com.nimbusds.jose.jwk.ECKey; +import com.nimbusds.jose.jwk.JWK; +import com.nimbusds.jose.jwk.JWKSet; +import com.nimbusds.oauth2.sdk.auth.ClientAuthenticationMethod; + +import eu.eeas.edms.auth.EdmsLoginPoPTokenProvider; +import eu.europa.ec.ecas.client.oidc.ClientKeyGenerator; +import eu.europa.ec.ecas.client.oidc.OidcScriptClient; +import eu.europa.eeas.erights.common.boot.configuration.edms.EdmsRestClientConfiguration; + +import org.slf4j.Logger; +import org.springframework.stereotype.Service; + +import java.io.IOException; +import java.text.ParseException; + +import static java.lang.String.format; + +@Service +public class EdmsLoginPoPTokenProviderImpl implements EdmsLoginPoPTokenProvider { + + private static final Logger logger = org.slf4j.LoggerFactory.getLogger(EdmsLoginPoPTokenProviderImpl.class); + + private final EdmsRestClientConfiguration edmsRestClientConfiguration; + + public EdmsLoginPoPTokenProviderImpl(EdmsRestClientConfiguration edmsRestClientConfiguration) { + this.edmsRestClientConfiguration = edmsRestClientConfiguration; + } + + @Override + public String getToken() { + String popToken = ""; + logger.info(format("EdmsRestClientConfiguration: %s", edmsRestClientConfiguration.toString())); + + try { + + String decryptedPK = edmsRestClientConfiguration.getEuloginOidcPrivateKey().getValue(); + String decryptedKid = edmsRestClientConfiguration.getEuloginOidcJwkKid().getValue(); + + JWK clientPrivateKey = JWKSet.parse(decryptedPK.replace("\\\\", "")).getKeyByKeyId(decryptedKid); + + String decryptedKidOidcClientId = edmsRestClientConfiguration.getEuloginOidcClientId().getValue(); + + OidcScriptClient oidcScriptClient = OidcScriptClient.builder() + .clientId(decryptedKidOidcClientId.toCharArray()) + .clientPrivateKey(clientPrivateKey) + .tokenEndpointUrl(edmsRestClientConfiguration.getEuloginOidcTokenEndpoint()) + .tokenEndpointAuthJWSAlg(JWSAlgorithm.EdDSA) + .tokenEndpointAuthMethod(ClientAuthenticationMethod.PRIVATE_KEY_JWT) + .build(); + + String bearerAccessToken = oidcScriptClient.getBearerAccessToken(decryptedKidOidcClientId); + logger.debug("[EU-LOGIN] bearerAccessToken = " + bearerAccessToken); + + ECKey popKeyPair = new ClientKeyGenerator().generatePoPEcKeyPair(); + ECKey publicPopKey = popKeyPair.toPublicJWK(); + + String decryptedEdmsClientId = edmsRestClientConfiguration.getRestEdmsClientId().getValue(); + + popToken = oidcScriptClient.getPopAccessToken(decryptedEdmsClientId, publicPopKey); + logger.debug("[EU-LOGIN] popToken = " + popToken); + } catch (ParseException | com.nimbusds.oauth2.sdk.ParseException | IOException | JOSEException e) { + logger.error("[EU-LOGIN] Not able to retrieve popToken", e); + } + return popToken; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EdmsRequestHelper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EdmsRequestHelper.java new file mode 100644 index 0000000..22d97ec --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EdmsRequestHelper.java @@ -0,0 +1,246 @@ +package eu.europa.eeas.erights.common.service.provider.email; + +import static eu.eeas.edms.model.persistence.EDMSStatus.FAILED; + +import eu.eeas.edms.auth.EdmsLoginPoPTokenProvider; +import eu.eeas.edms.model.persistence.EDMSStatus; +import eu.eeas.edms.model.request.ChannelTypeEnum; +import eu.eeas.edms.model.request.MessageContext; +import eu.eeas.edms.model.request.MessageData; +import eu.eeas.edms.model.request.MessageDistributionItem; +import eu.eeas.edms.model.request.MessageFormatEnum; +import eu.eeas.edms.model.request.NotificationStatusRequest; +import eu.eeas.edms.model.request.SendMessagesRequest; +import eu.eeas.edms.model.response.NotificationStatusResponse; +import eu.eeas.edms.model.response.SendMessagesResponse; +import eu.eeas.edms.rest.client.EdmsApiResponse; +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.email.EmailCommunicationDataModel; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.email.EmailCommunicationErrorModel; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.email.EmailMessageModel; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.email.EmailRecipientModel; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.email.enums.EmailFormat; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.enums.Status; +import eu.europa.eeas.erights.common.boot.configuration.edms.EdmsRestClientConfiguration; +import eu.europa.eeas.erights.common.service.model.notification.NotificationModel; +import java.time.Instant; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +/** + * This class provides useful methods to the {@link EmailEdmsServiceProvider}: Mapping of models, provides tokens, etc. + * + * @author idominju + * + */ +@Service +public class EdmsRequestHelper { + + public static final int SECONDS_PER_DAY = 24 * 60 * 60; + public static final String EMAIL_AT = "@"; + public static final String AT_SEPARATOR = "_at_"; + public static final String RECEIVER_PREFIX = "REC_"; + public static final Logger logger = LoggerFactory.getLogger(EdmsRequestHelper.class); + + @Autowired + private AbstractUserHandler userHandler; + + private final EdmsRestClientConfiguration edmsRestClientConfiguration; + private final EdmsLoginPoPTokenProvider edmsLoginPoPTokenProvider; + + public EdmsRequestHelper(EdmsRestClientConfiguration edmsRestClientConfiguration, + EdmsLoginPoPTokenProvider edmsLoginPoPTokenProvider) { + this.edmsRestClientConfiguration = edmsRestClientConfiguration; + this.edmsLoginPoPTokenProvider = edmsLoginPoPTokenProvider; + } + + public String getToken() { + // Tokens cannot be cached, they can be used once only (tested 01/04/2022) + return edmsLoginPoPTokenProvider.getToken(); + } + + + public SendMessagesRequest toSendMessagesRequest(EmailMessageModel emailModel) { + + SendMessagesRequest request = new SendMessagesRequest(); + request.setBatchId(edmsRestClientConfiguration.getBatchId()); + request.setChannelType(ChannelTypeEnum.EMAIL); + + request.setClientDivisionId(edmsRestClientConfiguration.getClientDivisionId()); + + request.setMessageContext(getMessageContext(emailModel)); + request.setMessageData(getMessageData(emailModel)); + request.setMessageDistributionItems(getDistributionItems(emailModel)); + request.setNumberOfAttachments(0); + + return request; + } + + private List getDistributionItems(EmailMessageModel emailModel) { + List list = new ArrayList<>(); + + Set usedEmailAddresses = new HashSet<>(); + int recipientCount = 0; + + for (EmailRecipientModel recipient: emailModel.getRecipients()) { + + // Check null and repetitions + if (recipient.getAddress() != null && !usedEmailAddresses.contains(recipient.getAddress().toLowerCase())) { + + // Add to list of used emails, to avoid repetition. + usedEmailAddresses.add(recipient.getAddress().toLowerCase()); + + MessageDistributionItem item = new MessageDistributionItem(); + item.setReceiverContactDetails(recipient.getAddress()); + + StringBuilder receiverId = new StringBuilder(RECEIVER_PREFIX); + receiverId.append(++recipientCount); + item.setReceiverId(receiverId.toString()); + + item.setReceiverMessageFooter(recipient.getCustomizedFooter()); + item.setReceiverMessageHeader(recipient.getCustomizedHeader()); + list.add(item); + } + } + return list; + } + + private MessageData getMessageData(EmailMessageModel emailModel) { + MessageData data = new MessageData(); + + Integer expirationDays = edmsRestClientConfiguration.getNotificationExpirationDays(); + if (expirationDays != null && expirationDays.intValue() >= 0) { + // Absent or negative => Do not set expiration date + data.setExpirationDate(Instant.now().getEpochSecond() + expirationDays.intValue() * SECONDS_PER_DAY); + } + + data.setMessageBody(emailModel.getContent().getBody()); + data.setMessageFormat(getFormat(emailModel.getContent().getFormat())); + data.setMessageFrom(emailModel.getSender()); + data.setMessageSignature(emailModel.getContent().getSignature()); + data.setMessageSubject(emailModel.getContent().getSubject()); + return data; + } + + private MessageFormatEnum getFormat(EmailFormat emailFormat) { + + if (EmailFormat.HTML.equals(emailFormat)) { + return MessageFormatEnum.HTML; + } else { + // Rich text not supported + return MessageFormatEnum.PLAIN_TEXT; + } + } + + private MessageContext getMessageContext(EmailMessageModel emailModel) { + MessageContext context = new MessageContext(); + context.setRequestId(createRequestId(emailModel)); + context.setSenderApplicationId(edmsRestClientConfiguration.getApplicationId()); + context.setUsername(userHandler.getUser() == null ? "NULL" : userHandler.getUser().getUid()); + return context; + } + + public EmailCommunicationDataModel toEmailCommunicationDataModel(EdmsApiResponse apiResponse) { + + EmailCommunicationDataModel model = new EmailCommunicationDataModel(); + + // At this point (response from a send request), the status can only go to INITIAL or ERROR + if (HttpStatus.OK.value() != apiResponse.getStatusCode()) { + model.setStatus(Status.ERROR); + model.setError(getEmailCommunicationErrorModel(apiResponse.getError())); + } else { + model.setStatus(Status.INITIAL); + SendMessagesResponse response = apiResponse.getEntity(); + model.setServerCommunicationId(response.getCommunicationId()); + } + EmailMessageModel msg = new EmailMessageModel(); + // Avoid null + msg.setId(0L); + model.setMessage(msg); + return model; + + } + + private EmailCommunicationErrorModel getEmailCommunicationErrorModel(String error) { + EmailCommunicationErrorModel model = new EmailCommunicationErrorModel(); + model.setMessage(error); + return model; + } + + /** + * Build a NotificationStatusRequest to find out the status of a notification request, based on the model + * of that previously requested notification. + * + * Mandatory: + * - communicationId that was returned when the request was made + * Optional: + * - receivedTimestamp (epoch seconds) If not provided, the most recent status is returned (this is because of resend requests with same communicationID) + * - receiverId (if not provided, all the recipients status returned) + * + * @param notificationModel + * @return + */ + + public NotificationStatusRequest toNotificationStatus( + NotificationModel notificationModel) { + NotificationStatusRequest request = new NotificationStatusRequest(); + request.setCommunicationId(notificationModel.getCommunicationId()); + return request; + } + + + public EmailCommunicationDataModel fromNotificationStatusResponse(EdmsApiResponse apiStatusResponse, String communicationId) { + + EmailCommunicationDataModel model = new EmailCommunicationDataModel(); + + NotificationStatusResponse responseEntity = apiStatusResponse.getEntity(); + EDMSStatus apiStatus; + if (responseEntity == null || + responseEntity.getStatus() == null) { + logger.warn( + "EDMS entity or status is null for communicationId : {} so we will update the record to FAILED", + communicationId); + apiStatus = FAILED; + } else { + apiStatus = responseEntity.getStatus(); + } + switch (apiStatus) { + case RECEIVED: + model.setStatus(Status.INITIAL); + break; + case SENT: + model.setStatus(Status.SENT_OK); + break; + case PROCESSING: + model.setStatus(Status.PROCESSING); + break; + case FAILED: + model.setStatus(Status.FAILED); + break; + default: + // Unexpected + break; + } + return model; + } + + /** + * Generates a Request ID + * + * @return + */ + private String createRequestId(EmailMessageModel emailModel) { + + String prefix = emailModel.getRefId() == null ? "REQ" : emailModel.getRefId(); + return prefix + "_" + Instant.now().toEpochMilli(); + + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EmailEdmsServiceHelper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EmailEdmsServiceHelper.java new file mode 100644 index 0000000..dbb9502 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EmailEdmsServiceHelper.java @@ -0,0 +1,541 @@ +package eu.europa.eeas.erights.common.service.provider.email; + +import static eu.europa.eeas.erights.common.tools.app.AppParamType.MAILBOX; +import static java.util.Objects.nonNull; + +import eu.europa.eeas.ananke.core.base.Profiles; +import eu.europa.eeas.ananke.core.base.context.AnankeContext; +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.tools.edms.connector.service.support.composer.email.EmailComposer; +import eu.europa.eeas.erights.common.boot.configuration.data.ERightsRootConfiguration; +import eu.europa.eeas.erights.common.service.data.provider.AppParameterJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.HOAFunctionalMailboxJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.AppParameterModel; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.VJobModel; +import eu.europa.eeas.erights.common.service.model.VPersonModel; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceModel; +import eu.europa.eeas.erights.common.service.model.allowances.RegularizationAllowanceModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.AdvanceRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.ClearingRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TotalRemRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TudRequestModel; +import java.text.DecimalFormat; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.format.FormatStyle; +import java.time.temporal.ChronoUnit; +import java.util.List; +import java.util.Optional; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.apache.http.client.utils.URIBuilder; +import org.apache.velocity.VelocityContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +/** + * Helper class which includes Velocity templates and general methods + * @author ienaccat + */ +@Service +@RequiredArgsConstructor +public class EmailEdmsServiceHelper { + + public static final Logger logger = LoggerFactory.getLogger(EmailEdmsServiceHelper.class); + + public static final String MOVEMENT_FILE_ID = "MOVEMENT_FILE_ID"; + public static final String JOB_ID_TO = "JOB_ID_TO"; + public static final String FIRST_NAME = "FIRST_NAME"; + public static final String ENVIRONMENT = "ENVIRONMENT"; + public static final String LAST_NAME = "LAST_NAME"; + public static final String ENTITLEMENT_TYPE = "ENTITLEMENT_TYPE"; + public static final String REQUEST_STRING_ID = "REQUEST_STRING_ID"; + public static final String REQUEST_ID = "requestId"; + public static final String WEEKS_AFTER_START = "WEEKS_AFTER_START"; + public static final String ERIGHTS_MOVEMENT_FILES_VIEW_DO = "/erights/movement-files/view.do"; + public static final String ERIGHTS_REQUESTS_VIEW_ADV_REM_DO = "/erights/requests/view-adv-rem.do"; + public static final String GOTOTAB = "gototab"; + public static final String MOVEMENT_FILE_URL = "MOVEMENT_FILE_URL"; + public static final String ENTITLEMENT_NAME = "ENTITLEMENT_NAME"; + public static final String LIMIT_DATE = "LIMIT_DATE"; + public static final String COUNTRY = "COUNTRY"; + public static final String EOC_DATE = "EOC_DATE"; + public static final String SALUTATION = "SALUTATION"; + public static final String SALUTATION_ADJ = "SALUTATION_ADJ"; + public static final String SALUTATION_ADJ2 = "SALUTATION_ADJ2"; + public static final String RESETTLEMENT_REQUEST_URL = "RESETTLEMENT_REQUEST_URL"; + + + private final AnankeContext anankeContext; + private final ERightsRootConfiguration eRightsRootConfiguration; + private final EmailEnvironment emailEnvironment; + @Lazy + private final AppParameterJpaServiceProvider appParameterService; + private final AbstractUserHandler userHandler; + private final HOAFunctionalMailboxJpaServiceProvider hoaService; + + + + String getEmailFromDependingOnEnvironment(String emailKey) { + //in non production environment we sent the emails from automated-notifications@nomail.ec.europa.eu + if (!anankeContext.getProfiles().contains(Profiles.PRODUCTION)) { + return eRightsRootConfiguration.getMailbox(); + } else { //In prd we send emails from the contact email mailbox + List params = appParameterService.getAppParametersByTypeAndKey(MAILBOX, emailKey); + if (!params.isEmpty()) { + Optional parameterModel = params.stream().findFirst(); + if (parameterModel.isPresent()) + return parameterModel.get().getValue(); + } + return eRightsRootConfiguration.getMailbox(); + } + } + + // add recipients to emailcomposer and return the alert for non productions environment + // if we are in a non prod envronment we send the email to ecas user mail + String addRecipientsForMovementFile(VPersonModel jobHolder, EmailComposer emailComposer) { + final StringBuilder nonProdEmailAlert = new StringBuilder(); + + //Safe check so in non production environment we sent the emails to the EMAIL in the ecas user + if (!anankeContext.getProfiles().contains(Profiles.PRODUCTION)) { + String ecasEmail; + //TODO check a better approach for differentiate a system user from authenticated user + if (userHandler.getUser().getEmployeeNumber() > 0L) { + ecasEmail = userHandler.getUser().getEmail(); + if (ecasEmail == null) { + ecasEmail = eRightsRootConfiguration.getTestMailbox(); + } + + } else { + ecasEmail = eRightsRootConfiguration.getTestMailbox(); + } + + nonProdEmailAlert.append( + "You are in ${ENVIRONMENT} environment , this email should have being sent to : "); + + if (jobHolder.getEmail() != null) { + nonProdEmailAlert.append(jobHolder.getEmail() + " ; "); + } + //Recipients from movementFile Private email + if (jobHolder.getPrivateEmail() != null) { + nonProdEmailAlert.append(jobHolder.getPrivateEmail()); + } + emailComposer.recipient("ToECASEmail", ecasEmail); + nonProdEmailAlert.append("
    "); + + } else { + //Recipients from movementFile Private email + if (jobHolder.getPrivateEmail() != null) { + emailComposer.recipient("PrivateEmail", jobHolder.getPrivateEmail()); + } + if (jobHolder.getEmail() != null) { + emailComposer.recipient("ProEmail", jobHolder.getEmail()); + } + } + + return nonProdEmailAlert.toString(); + } + + + String addRecipientCopy(String toEmail, EmailComposer emailComposer) { + final StringBuilder nonProdEmailAlert = new StringBuilder(); + + //Safe check so in non production environment we sent the emails to the EMAIL in the ecas user + if (!anankeContext.getProfiles().contains(Profiles.PRODUCTION)) { + String ecasEmail; + if (userHandler.getUser().getEmployeeNumber() > 0L) { + ecasEmail = userHandler.getUser().getEmail(); + if (ecasEmail == null) { + ecasEmail = eRightsRootConfiguration.getTestMailbox(); + } + } else { + ecasEmail = eRightsRootConfiguration.getTestMailbox(); + } + + nonProdEmailAlert.append( + "You are in ${ENVIRONMENT} environment , this email should have being sent to : "); + + if (toEmail != null) { + nonProdEmailAlert.append(toEmail + " ; "); + } + + emailComposer.recipient("ToECASEmail", ecasEmail); + nonProdEmailAlert.append("
    "); + } else { + if (nonNull(toEmail)) { + emailComposer.recipient("ProEmail", toEmail); + } + } + return nonProdEmailAlert.toString(); + } + + + String addRecipientForHoANotification(VJobModel jobFrom, EmailComposer emailComposer) { + + String hoaEmail = null; + if (jobFrom != null && jobFrom.getDelegationOrgId() != null) { + Long delegationOrgId = jobFrom.getDelegationOrgId(); + Optional emailOptional = hoaService.getHoAEmailByOrgId(delegationOrgId); + if (emailOptional.isPresent()) { + hoaEmail = emailOptional.get(); + logger.info("HoA email={} found for jobFrom={}", hoaEmail, jobFrom); + } else { + logger.warn("HoA email not found for delegation: {} and delegationOrgId: {}", jobFrom.getOrganizationName(), delegationOrgId); + } + } + + final StringBuilder nonProdEmailAlert = new StringBuilder(); + //Safe check so in non production environment we sent the emails to the EMAIL in the ecas user + if (!anankeContext.getProfiles().contains(Profiles.PRODUCTION)) { + String ecasEmail = eRightsRootConfiguration.getTestMailbox(); + if (userHandler.getUser().getEmployeeNumber() > 0L) { + ecasEmail = userHandler.getUser().getEmail(); + if (ecasEmail == null) { + ecasEmail = eRightsRootConfiguration.getTestMailbox(); + } + } + + nonProdEmailAlert.append( + "You are in ${ENVIRONMENT} environment, this email should have being sent to : "); + nonProdEmailAlert.append(hoaEmail == null ? StringUtils.EMPTY : hoaEmail); + + emailComposer.recipient("ToECASEmail", ecasEmail); + nonProdEmailAlert.append("
    "); + } else { + if (hoaEmail != null) { + emailComposer.recipient("ProEmail", hoaEmail); + } + } + + return nonProdEmailAlert.toString(); + } + + + VelocityContext getContextForMovementFile(MovementFileModel movementFile) { + VelocityContext context = new VelocityContext(); + String templateType = movementFile.getMovementContext().getName(); + + context.put(ENVIRONMENT, emailEnvironment.getEnvironment()); + context.put(FIRST_NAME, movementFile.getJobHolder().getFirstName()); + context.put(LAST_NAME, movementFile.getJobHolder().getLastName()); + context.put(MOVEMENT_FILE_ID, movementFile.getFileId()); + + context.put("MOVEMENT_FROM", + movementFile.getCityFrom().getName() + ", " + movementFile.getCountryFrom().getName()); + context.put("MOVEMENT_TO", + movementFile.getCityTo().getName() + ", " + movementFile.getCountryTo().getName()); + + if (!templateType.equalsIgnoreCase("EOC")) { + if (movementFile.getJobTo() != null) { + context.put( + JOB_ID_TO, movementFile.getJobTo().getId()); + } + + context.put("START_DATE", movementFile.getStartDate() + .format(DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM))); + } else { + context.put("ESTIMATED_END_DATE", movementFile.getEstimatedEndDate() + .format(DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM))); + } + + //Generate URL for movement file + URIBuilder builder = new URIBuilder() + .setScheme(emailEnvironment.getProtocol()) + .setHost(emailEnvironment.getHost()) + .setPath(ERIGHTS_MOVEMENT_FILES_VIEW_DO) + .addParameter("id", movementFile.getId().toString()); + context.put(MOVEMENT_FILE_URL, builder.toString()); + + return context; + } + + VelocityContext getContextForMovementFileCreatedRequest(MovementFileModel movementFile) { + + VelocityContext context = new VelocityContext(); + String templateType = movementFile.getMovementContext().getName(); + + context.put(ENVIRONMENT, emailEnvironment.getEnvironment()); + context.put(FIRST_NAME, movementFile.getJobHolder().getFirstName()); + context.put(LAST_NAME, movementFile.getJobHolder().getLastName()); + context.put(MOVEMENT_FILE_ID, movementFile.getFileId()); + + context.put("MOVEMENT_FROM", + movementFile.getCityFrom().getName() + ", " + movementFile.getCountryFrom().getName()); + context.put("MOVEMENT_TO", + movementFile.getCityTo().getName() + ", " + movementFile.getCountryTo().getName()); + + if (!templateType.equalsIgnoreCase("EOC")) { + if (movementFile.getJobTo() != null) { + context.put(JOB_ID_TO, movementFile.getJobTo().getId()); + } else { + context.put(JOB_ID_TO, movementFile.getCityTo()); + } + context.put("START_DATE", movementFile.getStartDate().format( + DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM))); + } else { + context.put("ESTIMATED_END_DATE", movementFile.getEstimatedEndDate() + .format(DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM))); + } + + //Generate URL for movement file + URIBuilder builder = new URIBuilder() + .setScheme(emailEnvironment.getProtocol()) + .setHost(emailEnvironment.getHost()) + .setPath(ERIGHTS_MOVEMENT_FILES_VIEW_DO) + .addParameter("id", movementFile.getId().toString()) + .addParameter(GOTOTAB, "entitlements-tab"); + context.put(MOVEMENT_FILE_URL, builder.toString()); + + return context; + } + + VelocityContext getContextForEntitlementRequestStatus(RequestModel requestModel) { + + VelocityContext context = new VelocityContext(); + context.put(ENVIRONMENT, emailEnvironment.getEnvironment()); + context.put(FIRST_NAME, requestModel.getStaffMember().getFirstName()); + context.put(LAST_NAME, requestModel.getStaffMember().getLastName()); + context.put(MOVEMENT_FILE_ID, requestModel.getDeclaration().getMovementFileId()); + context.put(REQUEST_STRING_ID, requestModel.getRequestStringId()); + context.put(ENTITLEMENT_NAME, requestModel.getEntitlementTypeCat().getDescription()); + URIBuilder builder = new URIBuilder() + .setScheme(emailEnvironment.getProtocol()) + .setHost(emailEnvironment.getHost()) + + .addParameter(REQUEST_ID, String.valueOf(requestModel.getId())); + if (requestModel instanceof TudRequestModel) { + builder.setPath("/erights/requests/view-tud.do"); + } else if (requestModel instanceof AdvanceRequestModel) { + builder.setPath(ERIGHTS_REQUESTS_VIEW_ADV_REM_DO); + } else if (requestModel instanceof TotalRemRequestModel) { + builder.setPath("/erights/requests/view-total-rem.do"); + } else if (requestModel instanceof ClearingRequestModel) { + builder.setPath("/erights/requests/view-clr-rem.do"); + } + + context.put(MOVEMENT_FILE_URL, builder.toString()); + return context; + } + + VelocityContext getContextForEntitlementRequestPaid(RequestModel requestModel) { + VelocityContext context = new VelocityContext(); + context.put(ENVIRONMENT, emailEnvironment.getEnvironment()); + context.put(FIRST_NAME, requestModel.getStaffMember().getFirstName()); + context.put(LAST_NAME, requestModel.getStaffMember().getLastName()); + context.put(ENTITLEMENT_TYPE, requestModel.getEntitlementTypeCat().getDescription()); + context.put(REQUEST_STRING_ID, requestModel.getRequestStringId()); + URIBuilder builder = new URIBuilder() + .setScheme(emailEnvironment.getProtocol()) + .setHost(emailEnvironment.getHost()) + .addParameter(REQUEST_ID, String.valueOf(requestModel.getId())); + if (requestModel instanceof TudRequestModel) { + builder.setPath("/erights/requests/view-tud.do"); + } else if (requestModel instanceof AdvanceRequestModel) { + builder.setPath(ERIGHTS_REQUESTS_VIEW_ADV_REM_DO); + } else if (requestModel instanceof TotalRemRequestModel) { + builder.setPath("/erights/requests/view-total-rem.do"); + } else if (requestModel instanceof ClearingRequestModel) { + builder.setPath("/erights/requests/view-clr-rem.do"); + } + context.put(MOVEMENT_FILE_URL, builder.toString()); + return context; + } + + VelocityContext getContextForClearingRequest(RequestModel requestModel, + MovementFileModel mfModel) { + DecimalFormat amountFormatter = new DecimalFormat("#,###.00"); + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + VelocityContext context = new VelocityContext(); + context.put(ENVIRONMENT, emailEnvironment.getEnvironment()); + context.put(FIRST_NAME, requestModel.getStaffMember().getFirstName()); + context.put(LAST_NAME, requestModel.getStaffMember().getLastName()); + context.put("FROM_COUNTRY_CITY", + mfModel.getCityFrom().getName() + ", " + mfModel.getCountryFrom().getName()); + context.put("TO_COUNTRY_CITY", + mfModel.getCityTo().getName() + ", " + mfModel.getCountryTo().getName()); + context.put("AMOUNT", amountFormatter.format(requestModel.getTotalAmount().getNumber()) + " " + + requestModel.getTotalAmount().getCurrency().getCurrencyCode()); + context.put("DATE_OF_PAYMENT", dateFormatter.format(requestModel.getPaymentDate())); + context.put("PAYMENT_DATE", dateFormatter.format(requestModel.getPaymentDate().plusMonths(12))); + URIBuilder builder = new URIBuilder() + .setScheme(emailEnvironment.getProtocol()) + .setHost(emailEnvironment.getHost()) + .addParameter(REQUEST_ID, String.valueOf(requestModel.getId())); + builder.setPath(ERIGHTS_REQUESTS_VIEW_ADV_REM_DO); + context.put(MOVEMENT_FILE_URL, builder.toString()); + return context; + } + + VelocityContext getContextForInstallationRequest(RequestModel requestModel) { + VelocityContext context = new VelocityContext(); + context.put(ENVIRONMENT, emailEnvironment.getEnvironment()); + context.put(FIRST_NAME, requestModel.getStaffMember().getFirstName()); + context.put(LAST_NAME, requestModel.getStaffMember().getLastName()); + context.put(ENTITLEMENT_TYPE, requestModel.getEntitlementTypeCat().getDescription()); + context.put(REQUEST_STRING_ID, requestModel.getRequestStringId()); + URIBuilder builder = new URIBuilder() + .setScheme(emailEnvironment.getProtocol()) + .setHost(emailEnvironment.getHost()) + .addParameter(REQUEST_ID, String.valueOf(requestModel.getId())); + builder.setPath("/erights/requests/view-installation.do"); + context.put("INSTALLATION_REQUEST_URL", builder.toString()); + return context; + } + + VelocityContext getContextForStartInstallationRequest(MovementFileModel mfModel) { + VelocityContext context = new VelocityContext(); + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + context.put(ENVIRONMENT, emailEnvironment.getEnvironment()); + context.put(FIRST_NAME, mfModel.getJobHolder().getFirstName()); + context.put(LAST_NAME, mfModel.getJobHolder().getLastName()); + if ("EOC".equalsIgnoreCase(mfModel.getMovementContext().getName())) { + if (mfModel.getEstimatedEndDate() != null) { + context.put(LIMIT_DATE, dateFormatter.format(mfModel.getEstimatedEndDate().plusYears(1))); + } else { + context.put(LIMIT_DATE, "EOC date plus 1 year"); + } + + } else { + context.put(LIMIT_DATE, dateFormatter.format(mfModel.getStartDate().plusYears(1))); + } + + context.put(MOVEMENT_FILE_ID, mfModel.getFileId()); + //Generate URL for movement file + URIBuilder builder = new URIBuilder() + .setScheme(emailEnvironment.getProtocol()) + .setHost(emailEnvironment.getHost()) + .setPath(ERIGHTS_MOVEMENT_FILES_VIEW_DO) + .addParameter("id", mfModel.getId().toString()) + .addParameter(GOTOTAB, "entitlements-tab"); + context.put(MOVEMENT_FILE_URL, builder.toString()); + + URIBuilder builder2 = new URIBuilder() + .setScheme(emailEnvironment.getProtocol()) + .setHost(emailEnvironment.getHost()) + .setPath(ERIGHTS_MOVEMENT_FILES_VIEW_DO) + .addParameter("id", mfModel.getId().toString()) + .addParameter(GOTOTAB, "info-tab"); + context.put("MOVEMENT_FILE_URL_INFO_TAB", builder2.toString()); + return context; + } + + VelocityContext getContextForReminderInstallationRequest(RequestModel requestModel, + MovementFileModel mfModel) { + VelocityContext context = new VelocityContext(); + context.put(ENVIRONMENT, emailEnvironment.getEnvironment()); + context.put(FIRST_NAME, requestModel.getStaffMember().getFirstName()); + context.put(LAST_NAME, requestModel.getStaffMember().getLastName()); + context.put(COUNTRY, mfModel.getCountryTo().getName()); + context.put("CITY", mfModel.getCityTo().getName()); + + if (ChronoUnit.YEARS.between(mfModel.getStartDate(), LocalDate.now()) == 1) { + context.put(WEEKS_AFTER_START, + ChronoUnit.YEARS.between(mfModel.getStartDate(), LocalDate.now()) + " year"); + } else if (ChronoUnit.MONTHS.between(mfModel.getStartDate(), LocalDate.now()) > 1) { + context.put(WEEKS_AFTER_START, + ChronoUnit.MONTHS.between(mfModel.getStartDate(), LocalDate.now()) + " months"); + } else { + context.put(WEEKS_AFTER_START, + ChronoUnit.WEEKS.between(mfModel.getStartDate(), LocalDate.now()) + " weeks"); + } + + context.put(REQUEST_STRING_ID, requestModel.getRequestStringId()); + URIBuilder builder = new URIBuilder() + .setScheme(emailEnvironment.getProtocol()) + .setHost(emailEnvironment.getHost()) + .addParameter(REQUEST_ID, String.valueOf(requestModel.getId())); + builder.setPath("/erights/requests/view-installation.do"); + context.put("INSTALLATION_REQUEST_URL", builder.toString()); + return context; + } + + + VelocityContext getContextForResettlementRequestHoANotif(RequestModel requestModel, MovementFileModel mfModel) { + VelocityContext context = new VelocityContext(); + context.put(ENVIRONMENT, emailEnvironment.getEnvironment()); + context.put(FIRST_NAME, requestModel.getStaffMember().getFirstName()); + context.put(LAST_NAME, requestModel.getStaffMember().getLastName()); + context.put(ENTITLEMENT_TYPE, requestModel.getEntitlementTypeCat().getDescription()); + context.put(REQUEST_STRING_ID, requestModel.getRequestStringId()); + context.put(COUNTRY, mfModel.getJobFrom() != null ? mfModel.getJobFrom().getCountryName() : StringUtils.EMPTY); + context.put(EOC_DATE, mfModel.getEstimatedEndDate()); + context.put(SALUTATION, + EmailGenderLabel.getByValue(mfModel.getJobHolder().getGender()).map(EmailGenderLabel::getSalutation).orElse( + StringUtils.EMPTY)); + context.put(SALUTATION_ADJ, + EmailGenderLabel.getByValue(mfModel.getJobHolder().getGender()).map(EmailGenderLabel::getSalutationAdjective).orElse( + StringUtils.EMPTY)); + context.put(SALUTATION_ADJ2, + EmailGenderLabel.getByValue(mfModel.getJobHolder().getGender()).map(EmailGenderLabel::getSalutationAdjective2).orElse( + StringUtils.EMPTY)); + URIBuilder builder = new URIBuilder() + .setScheme(emailEnvironment.getProtocol()) + .setHost(emailEnvironment.getHost()) + .addParameter(REQUEST_ID, String.valueOf(requestModel.getId())); + builder.setPath("/erights/requests/view-resettlement.do"); + context.put(RESETTLEMENT_REQUEST_URL, builder.toString()); + return context; + } + + VelocityContext getContextForResettlementRequest(RequestModel requestModel, MovementFileModel mfModel) { + VelocityContext context = new VelocityContext(); + context.put(ENVIRONMENT, emailEnvironment.getEnvironment()); + context.put(FIRST_NAME, requestModel.getStaffMember().getFirstName()); + context.put(LAST_NAME, requestModel.getStaffMember().getLastName()); + context.put(ENTITLEMENT_TYPE, requestModel.getEntitlementTypeCat().getDescription()); + context.put(REQUEST_STRING_ID, requestModel.getRequestStringId()); + context.put(SALUTATION, + EmailGenderLabel.getByValue(mfModel.getJobHolder().getGender()).map(EmailGenderLabel::getSalutation).orElse( + StringUtils.EMPTY)); + URIBuilder builder = new URIBuilder() + .setScheme(emailEnvironment.getProtocol()) + .setHost(emailEnvironment.getHost()) + .addParameter(REQUEST_ID, String.valueOf(requestModel.getId())); + builder.setPath("/erights/requests/view-resettlement.do"); + context.put(RESETTLEMENT_REQUEST_URL, builder.toString()); + return context; + } + + + VelocityContext getContextForTopUpRequest(RequestModel requestModel) { + VelocityContext context = new VelocityContext(); + context.put(ENVIRONMENT, emailEnvironment.getEnvironment()); + context.put(FIRST_NAME, requestModel.getStaffMember().getFirstName()); + context.put(LAST_NAME, requestModel.getStaffMember().getLastName()); + context.put(ENTITLEMENT_TYPE, requestModel.getEntitlementTypeCat().getDescription()); + context.put(REQUEST_STRING_ID, requestModel.getRequestStringId()); + URIBuilder builder = new URIBuilder() + .setScheme(emailEnvironment.getProtocol()) + .setHost(emailEnvironment.getHost()) + .addParameter(REQUEST_ID, String.valueOf(requestModel.getId())); + builder.setPath("/erights/requests/view-topup.do"); + context.put("TOP_UP_REQUEST_URL", builder.toString()); + context.put("TOP_UP_SIGNATURE", "Best regards,
    e-Rights Support Team"); + return context; + } + + VelocityContext getContextForPostingAllowances(PostingAllowanceModel postingAllowanceModel) { + VelocityContext context = new VelocityContext(); + context.put(ENVIRONMENT, emailEnvironment.getEnvironment()); + context.put(FIRST_NAME, postingAllowanceModel.getStaffMember().getFirstName()); + context.put(LAST_NAME, postingAllowanceModel.getStaffMember().getLastName()); + context.put("POSTING_ALLOWANCE_STRING_ID", postingAllowanceModel.getPostingAllowanceStringId()); + URIBuilder builder = new URIBuilder() + .setScheme(emailEnvironment.getProtocol()) + .setHost(emailEnvironment.getHost()) + .addParameter("postingAllowanceId", String.valueOf(postingAllowanceModel.getId())); + if (postingAllowanceModel instanceof RegularizationAllowanceModel) { + builder.setPath("/erights/posting-allowances/regularization-view-tar.do"); + } else { + builder.setPath("/erights/posting-allowances/view-tar.do"); + } + context.put("POSTING_ALLOWANCE_URL", builder.toString()); + context.put("POSTING_ALLOWANCE_SIGNATURE", "Best regards,
    e-Rights Support Team"); + return context; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EmailEdmsServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EmailEdmsServiceProvider.java new file mode 100644 index 0000000..3246d00 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EmailEdmsServiceProvider.java @@ -0,0 +1,634 @@ +package eu.europa.eeas.erights.common.service.provider.email; + +import eu.eeas.edms.model.request.NotificationStatusRequest; +import eu.eeas.edms.model.request.SendMessagesRequest; +import eu.eeas.edms.model.response.NotificationStatusResponse; +import eu.eeas.edms.model.response.SendMessagesResponse; +import eu.eeas.edms.rest.client.EdmsApiResponse; +import eu.eeas.edms.rest.client.EdmsRestClient; +import eu.eeas.edms.rest.client.impl.EdmsRestClientImpl; +import eu.europa.eeas.ananke.core.base.Profiles; +import eu.europa.eeas.ananke.core.base.context.AnankeContext; +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.email.EmailCommunicationDataModel; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.email.EmailMessageModel; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.enums.Status; +import eu.europa.eeas.ananke.tools.edms.connector.service.support.composer.email.EmailComposer; +import eu.europa.eeas.erights.common.boot.configuration.data.ERightsRootConfiguration; +import eu.europa.eeas.erights.common.boot.configuration.edms.EdmsRestClientConfiguration; +import eu.europa.eeas.erights.common.service.data.provider.notification.NotificationMFJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.notification.NotificationPostingAllowanceJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.notification.NotificationRequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.notification.NotificationTemplateJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowanceModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.AdvanceRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.ClearingRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TopUpRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TotalRemRequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TudRequestModel; +import eu.europa.eeas.erights.common.service.model.notification.NotificationMFModel; +import eu.europa.eeas.erights.common.service.model.notification.NotificationModel; +import eu.europa.eeas.erights.common.service.model.notification.NotificationRequestModel; +import eu.europa.eeas.erights.common.service.model.notification.NotificationTemplateModel; +import eu.europa.eeas.erights.common.tools.notification.NotificationEmailFromEnv; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateType; +import java.io.StringWriter; +import java.time.LocalDateTime; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; +import org.apache.commons.lang3.EnumUtils; +import org.apache.velocity.Template; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.VelocityEngine; +import org.apache.velocity.runtime.RuntimeConstants; +import org.apache.velocity.runtime.resource.loader.StringResourceLoader; +import org.apache.velocity.runtime.resource.util.StringResourceRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class EmailEdmsServiceProvider extends AbstractServiceProvider { + + public static final Logger logger = LoggerFactory.getLogger(EmailEdmsServiceProvider.class); + + public static final String UTF_8 = "UTF-8"; + + public static final String REPORT_MAILBOX = "ReportMailbox"; + public static final String FAILED_REPORT = "FailedReport"; + public static final String FAILED_NOTIFICATIONS = "FAILED_NOTIFICATIONS"; + + private final String DEL_POSTING_CC_EMAIL ="DEL-POSTINGS@eeas.europa.eu"; + + @Autowired + private AnankeContext anankeContext; + + @Autowired + private ERightsRootConfiguration eRightsRootConfiguration; + + @Autowired + private NotificationMFJpaServiceProvider notificationMFJpaServiceProvider; + + @Autowired + private NotificationRequestJpaServiceProvider notificationRequestJpaServiceProvider; + + @Autowired + private NotificationPostingAllowanceJpaServiceProvider notificationPostingAllowanceJpaServiceProvider; + + @Autowired + private NotificationTemplateJpaServiceProvider notificationTemplateJpaServiceProvider; + + // -------- edms-rest-client --------------- + private final EdmsRestClient edmsClient; + private final EdmsRequestHelper edmsRequestHelper; + // -------- edms-rest-client --------------- + + + @Autowired + private EmailEdmsServiceHelper emailEdmsServiceHelper; + + public EmailEdmsServiceProvider(EdmsRestClientConfiguration edmsRestClientConfiguration, EdmsRequestHelper edmsRequestHelper, + EmailEdmsServiceHelper emailEdmsServiceHelper) { + + this.edmsRequestHelper = edmsRequestHelper; + this.emailEdmsServiceHelper = emailEdmsServiceHelper; + // Init edms-rest-client + this.edmsClient = new EdmsRestClientImpl(edmsRestClientConfiguration.getRestSendMessagesUrl()); + } + + + public void checkTemplateAndSendMovementFileNotification(MovementFileModel movementFile, String notificationTemplateCode) { + + //Get Movement File and MF type SECONDMENT, EOC, ROTATION + if (EnumUtils.isValidEnum(NotificationTemplateCode.class, notificationTemplateCode)) { + NotificationTemplateCode templateCode = NotificationTemplateCode.valueOf(notificationTemplateCode); + //Get temaplte for notification and movement type file + String templateType = movementFile.getMovementContext().getName(); + NotificationTemplateModel notificationTemplate = notificationTemplateJpaServiceProvider.getDefaultNotificationTemplateForTypeAndCode(templateType, templateCode); + + if (notificationTemplate != null) { + sendMovementFileNotification(movementFile, notificationTemplate); + } + + } + + } + /* ------- Using edms-rest-client --- BEGIN ------------ */ + + private EmailCommunicationDataModel send(EmailMessageModel messageModel) { + + String popToken = this.edmsRequestHelper.getToken(); + SendMessagesRequest request = edmsRequestHelper.toSendMessagesRequest(messageModel); + + if (logger.isInfoEnabled()) { + // Print Request (max 1000 chars) + String requestString = request.toString(); + requestString = requestString.substring(0, Math.min(1000, requestString.length())); + + logger.info("Actual Request for e-DMS REST API: {} ... Recipients: {}", requestString, request.getMessageDistributionItems()); + } + + EdmsApiResponse apiResponse = edmsClient.sendMessages(popToken, request, Collections.EMPTY_LIST); + + return edmsRequestHelper.toEmailCommunicationDataModel(apiResponse); + } + + private EmailCommunicationDataModel getStatus(NotificationModel notificationModel) { + String popToken = this.edmsRequestHelper.getToken(); + + NotificationStatusRequest request = edmsRequestHelper.toNotificationStatus(notificationModel); + EdmsApiResponse apiStatusResponse = edmsClient.notificationStatus(popToken, request); + + return edmsRequestHelper.fromNotificationStatusResponse(apiStatusResponse, notificationModel.getCommunicationId()); + } + /* ------- Using edms-rest-client --- END ------------ */ + + public void updateMFNotificationsWithLatestStatusAndSendReport(NotificationTemplateCode notificationTemplateCode) { + logger.info("Start updating ongoing MF notifications with the latest status and sent date."); + + List notifications = updateMFNotificationsWithLatestStatus(); + logger.info("End updating ongoing MF notifications with the latest status and sent date. Count: {}", notifications.size()); + + // send email + List failedNotifications = notifications.stream() + .filter(n -> (!Boolean.TRUE.equals(n.getAlertSent()) && (Status.ERROR.equals(n.getStatus()) + || Status.FAILED.equals(n.getStatus())))) + .collect(Collectors.toList()); + + if (!failedNotifications.isEmpty()) { + try { + logger.info("Sending report to: {} with: {} MF notifications with status ERROR or FAILED", eRightsRootConfiguration.getTestMailbox(), failedNotifications.size()); + NotificationTemplateModel notificationTemplate = this.notificationTemplateJpaServiceProvider.getDefaultNotificationTemplateForCode(notificationTemplateCode); + StringBuilder body = new StringBuilder(); + failedNotifications.forEach(mfNotification -> body.append("ID: ") + .append(mfNotification.getMovementFile().getFileId()).append(" Status: ") + .append(mfNotification.getStatus().name()).append(", ")); + + EmailComposer emailComposer = getEmailComposer(body.toString(), notificationTemplate); + this.send(emailComposer.compose()); + + //mark notifications included in report, it will be excluded in next report + List toBeSaved = failedNotifications.stream().map(fn -> { + fn.setAlertSent(Boolean.TRUE); + fn.setUpdatedAt(LocalDateTime.now()); + return fn; + }).collect(Collectors.toList()); + + notificationMFJpaServiceProvider.update(toBeSaved); + } catch (Exception e) { + logger.error("Error when sending email with failed MF notifications report!", e); + } + } + } + + + public void updateRequestNotificationsWithLatestStatusAndSendReport( + NotificationTemplateCode notificationTemplateCode) { + logger.info( + "Start updating ongoing Request notifications with the latest status and sent date."); + + List notifications = updateRequestNotificationsWithLatestStatus(); + logger.info( + "End updating ongoing Request notifications with the latest status and sent date. Count: {}", + notifications.size()); + // send email + List failedNotifications = notifications.stream() + .filter(n -> (!Boolean.TRUE.equals(n.getAlertSent()) && Status.ERROR.equals(n.getStatus()))) + .collect(Collectors.toList()); + + if (!failedNotifications.isEmpty()) { + try { + logger.info( + "Sending report to: {} with: {} Request notifications with status ERROR or FAILED", + eRightsRootConfiguration.getTestMailbox(), failedNotifications.size()); + NotificationTemplateModel notificationTemplate = this.notificationTemplateJpaServiceProvider.getDefaultNotificationTemplateForCode( + notificationTemplateCode); + + StringBuilder body = new StringBuilder(); + failedNotifications.forEach( + requestNotification -> body.append("ID: ") + .append(requestNotification.getRequest().getRequestStringId()) + .append(" Status: ") + .append(requestNotification.getStatus().name()).append(", ")); + + EmailComposer emailComposer = getEmailComposer(body.toString(), + notificationTemplate); + this.send(emailComposer.compose()); + + //mark notifications included in report, it will be excluded in next report + List toBeSaved = failedNotifications.stream().map(fn -> { + fn.setAlertSent(Boolean.TRUE); + fn.setUpdatedAt(LocalDateTime.now()); + return fn; + }).collect(Collectors.toList()); + + notificationRequestJpaServiceProvider.update(toBeSaved); + } catch (Exception e) { + logger.error("Error when sending email with failed Request notifications report!", e); + } + } + } + + public void sendMovementFileNotification(MovementFileModel movementFile, NotificationTemplateModel notificationTemplate) { + + String mailbox = emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.DELPOSTINGS.name()); + + //composer + EmailComposer emailComposer = EmailComposer.html(movementFile.getFileId(), mailbox); + + //Recipients for movementFile email return the alert to add in the email for non prod environments + String nonProdEmailAlert = emailEdmsServiceHelper.addRecipientsForMovementFile(movementFile.getJobHolder(), emailComposer); + + VelocityContext context = emailEdmsServiceHelper.getContextForMovementFile(movementFile); + + renderTemplate(notificationTemplate, context, emailComposer, nonProdEmailAlert); + + //Create EmailMessageModel + EmailMessageModel emailMessageModel = new EmailMessageModel(); + emailMessageModel.setSender(emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.DELPOSTINGS.name())); // before RIGD-1279 was this "DEL-POSTINGS@eeas.europa.eu" + + EmailCommunicationDataModel result = this.send(emailComposer.compose()); + + notificationMFJpaServiceProvider.createNotificationFromEmailCommunicationDataModel(result, notificationTemplate, movementFile); + + } + + private void renderTemplate(NotificationTemplateModel notificationTemplate, VelocityContext context, EmailComposer emailComposer, String nonProdEmailAlert) { + + // Initialize velocity engine + VelocityEngine engine = new VelocityEngine(); + engine.setProperty(RuntimeConstants.RESOURCE_LOADER, "string"); + engine.addProperty("string.resource.loader.class", StringResourceLoader.class.getName()); + engine.addProperty("string.resource.loader.repository.static", "false"); + engine.init(); + + StringResourceRepository repo = (StringResourceRepository) engine.getApplicationAttribute(StringResourceLoader.REPOSITORY_NAME_DEFAULT); + + String messageSubject = notificationTemplate.getMessageSubject(); + repo.putStringResource("subject", messageSubject); + + Template subjectTemplate = engine.getTemplate("subject", UTF_8); + StringWriter subjectWriter = new StringWriter(); + subjectTemplate.merge(context, subjectWriter); + messageSubject = subjectWriter.toString(); + + String messageBody = notificationTemplate.getMessageBody(); + repo.putStringResource("body", nonProdEmailAlert + messageBody); + Template bodyTemplate = engine.getTemplate("body", UTF_8); + StringWriter bodyWriter = new StringWriter(); + bodyTemplate.merge(context, bodyWriter); + messageBody = bodyWriter.toString(); + + String messageSignature = notificationTemplate.getMessageSignature(); + repo.putStringResource("Signature", messageSignature); + Template signatureTemplate = engine.getTemplate("Signature", UTF_8); + StringWriter signatureWriter = new StringWriter(); + signatureTemplate.merge(context, signatureWriter); + messageSignature = signatureWriter.toString(); + + emailComposer.content(messageBody).subject(messageSubject).signature(messageSignature); + + } + + private List updateMFNotificationsWithLatestStatus() { + List notifications = notificationMFJpaServiceProvider.getMFNotificationsInOngoingState() + .stream().map(notification -> { + logger.info( + "Updating status for MF notification with id: {}", notification.getId()); + EmailCommunicationDataModel emailCommunicationDataModel = this.getStatus(notification); + logger.info( + "EDMS status is:{} for MF ongoing notification having notificationId: {} communication id:{}", + emailCommunicationDataModel.getStatus(), notification.getId(), notification.getCommunicationId()); + notification.setStatus(emailCommunicationDataModel.getStatus()); + notification.setUpdatedAt(LocalDateTime.now()); + + // REST API does not provide "SENT_AT" (date-time when the email was actually sent), + // so we use the same value as in "Sending_time" (when the request was made) if status is "SENT". + // Otherwise it will remain NULL + if (Status.SENT_OK.equals(emailCommunicationDataModel.getStatus())) { + notification.setSentAt(notification.getSendingDate()); + } + + return notificationMFJpaServiceProvider.update(notification); + }).collect(Collectors.toList()); + + return notifications; + } + + private List updateRequestNotificationsWithLatestStatus() { + List notifications = notificationRequestJpaServiceProvider.getRequestNotificationsInOngoingState() + .stream().map(notification -> { + logger.info( + "Updating status for Request notification with id: {}", notification.getId()); + EmailCommunicationDataModel emailCommunicationDataModel = this.getStatus( + notification); + logger.info( + "EDMS status is:{} for ongoing Request notification having notificationId: {} communication id:{}", + emailCommunicationDataModel.getStatus(), notification.getId(), + notification.getCommunicationId()); + notification.setStatus(emailCommunicationDataModel.getStatus()); + notification.setUpdatedAt(LocalDateTime.now()); + + // REST API does not provide "SENT_AT" (date-time when the email was actually sent), + // so we use the same value as in "Sending_time" (when the request was made) if status is "SENT". + // Otherwise it will remain NULL + if (Status.SENT_OK.equals(emailCommunicationDataModel.getStatus())) { + notification.setSentAt(notification.getSendingDate()); + } + + return notificationRequestJpaServiceProvider.update(notification); + }).collect(Collectors.toList()); + + return notifications; + } + + private EmailComposer getEmailComposer(String emailBody, NotificationTemplateModel notificationTemplate) { + + EmailComposer emailComposer = EmailComposer.html(FAILED_REPORT, emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.DELPOSTINGS.name())); + if (anankeContext.getProfiles().contains(Profiles.PRODUCTION)) { + // PROD + emailComposer.recipient(REPORT_MAILBOX, emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.DELPOSTINGS.name())); + } else { + // Non-PROD, it goes to a member of the dev team + emailComposer.recipient(REPORT_MAILBOX, eRightsRootConfiguration.getTestMailbox()); + } + + VelocityContext velocityContext = new VelocityContext(); + velocityContext.put(FAILED_NOTIFICATIONS, emailBody); + + renderTemplate(notificationTemplate, velocityContext, emailComposer, ""); + + return emailComposer; + } + + public void notifyAllEntitlementAmountsFilled(MovementFileModel movementFile) { + + logger.info("Start notification if all Amounts filled..."); + + String mailbox = emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.DELPOSTINGS.name()); + + //composer + EmailComposer emailComposer = EmailComposer.html(movementFile.getFileId(), mailbox); + + //Recipients for movementFile email return the alert to add in the email for non prod environments + String nonProdEmailAlert = emailEdmsServiceHelper.addRecipientsForMovementFile(movementFile.getJobHolder(), emailComposer); + + VelocityContext context = emailEdmsServiceHelper.getContextForMovementFileCreatedRequest(movementFile); + NotificationTemplateModel notificationTemplate = notificationTemplateJpaServiceProvider.getDefaultNotificationTemplateForTypeAndCode( + NotificationTemplateType.ENTITLEMENTS_AMOUNTS_SET.name(), NotificationTemplateCode.CONFIRM); + + renderTemplate(notificationTemplate, context, emailComposer, nonProdEmailAlert); + + //Create EmailMessageModel + EmailMessageModel emailMessageModel = new EmailMessageModel(); + + emailMessageModel.setSender(emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.DELPOSTINGS.name())); // before RIGD-1279 was this "DEL-POSTINGS@eeas.europa.eu" + + EmailCommunicationDataModel result = this.send(emailComposer.compose()); + notificationMFJpaServiceProvider.createNotificationFromEmailCommunicationDataModel(result, notificationTemplate, movementFile); + } + + public void notifyEISAmountsFilled(MovementFileModel movementFile) { + + logger.info("Start notification if EIS filled..."); + + String mailbox = emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.DELPOSTINGS.name()); + + //composer + EmailComposer emailComposer = EmailComposer.html(movementFile.getFileId(), mailbox); + + //Recipients for movementFile email return the alert to add in the email for non prod environments + String nonProdEmailAlert = emailEdmsServiceHelper.addRecipientsForMovementFile(movementFile.getJobHolder(), emailComposer); + + VelocityContext context = emailEdmsServiceHelper.getContextForMovementFileCreatedRequest(movementFile); + NotificationTemplateModel notificationTemplate = notificationTemplateJpaServiceProvider.getDefaultNotificationTemplateForTypeAndCode( + NotificationTemplateType.EIS_AMOUNTS_SET.name(), NotificationTemplateCode.CONFIRM); + + renderTemplate(notificationTemplate, context, emailComposer, nonProdEmailAlert); + + //Create EmailMessageModel + EmailMessageModel emailMessageModel = new EmailMessageModel(); + + emailMessageModel.setSender(emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.DELPOSTINGS.name())); // before RIGD-1279 was this "DEL-POSTINGS@eeas.europa.eu" + + EmailCommunicationDataModel result = this.send(emailComposer.compose()); + notificationMFJpaServiceProvider.createNotificationFromEmailCommunicationDataModel(result, notificationTemplate, movementFile); + } + + public void notifyEntitlementRequestStatus(RequestModel requestModel, MovementFileModel mfModel, NotificationTemplateCode notificationCode) { + String mailbox = emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.DELPOSTINGS.name()); + + + if (requestModel instanceof TudRequestModel) { + mailbox = emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.DELPOSTINGS.name()); + } else if (requestModel instanceof AdvanceRequestModel || requestModel instanceof TotalRemRequestModel || requestModel instanceof ClearingRequestModel) { + mailbox = emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.REMOVALS.name()); + } + + //composer + EmailComposer emailComposer = EmailComposer.html(String.valueOf(requestModel.getDeclaration().getMovementFileId()), mailbox); + + //Recipients for movementFile email return the alert to add in the email for non prod environments + String nonProdEmailAlert = emailEdmsServiceHelper.addRecipientsForMovementFile(mfModel.getJobHolder(), emailComposer); + + VelocityContext context = emailEdmsServiceHelper.getContextForEntitlementRequestStatus(requestModel); + + NotificationTemplateModel notificationTemplate = notificationTemplateJpaServiceProvider.getDefaultNotificationTemplateForTypeAndCode( + NotificationTemplateType.ENTITLEMENTS_REQUEST.name(), notificationCode); + + renderTemplate(notificationTemplate, context, emailComposer, nonProdEmailAlert); + + EmailCommunicationDataModel result = this.send(emailComposer.compose()); + notificationRequestJpaServiceProvider.createNotificationFromEmailCommunicationDataModel(result, notificationTemplate, requestModel); + } + + public void notifyEntitlementRequestPaid(RequestModel requestModel, MovementFileModel mfModel) { + String mailbox = emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.REMOVALS.name()); + + //composer + EmailComposer emailComposer = EmailComposer.html(String.valueOf(requestModel.getDeclaration().getMovementFileId()), mailbox); + + //Recipients for movementFile email return the alert to add in the email for non prod environments + String nonProdEmailAlert = emailEdmsServiceHelper.addRecipientsForMovementFile(mfModel.getJobHolder(), emailComposer); + + VelocityContext context = emailEdmsServiceHelper.getContextForEntitlementRequestPaid(requestModel); + + NotificationTemplateModel notificationTemplate = notificationTemplateJpaServiceProvider.getDefaultNotificationTemplateForTypeAndCode( + NotificationTemplateType.ENTITLEMENTS_REQUEST.name(), NotificationTemplateCode.PAID_REQUEST); + + renderTemplate(notificationTemplate, context, emailComposer, nonProdEmailAlert); + + EmailCommunicationDataModel result = this.send(emailComposer.compose()); + notificationRequestJpaServiceProvider.createNotificationFromEmailCommunicationDataModel(result, notificationTemplate, requestModel); + } + + public void notifyClearingRequest(RequestModel requestModel, MovementFileModel mfModel) { + String mailbox = emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.REMOVALS.name()); + + //composer + EmailComposer emailComposer = EmailComposer.html(String.valueOf(requestModel.getDeclaration().getMovementFileId()), mailbox); + + //Recipients for movementFile email return the alert to add in the email for non prod environments + String nonProdEmailAlert = emailEdmsServiceHelper.addRecipientsForMovementFile(mfModel.getJobHolder(), emailComposer); + + VelocityContext context = emailEdmsServiceHelper.getContextForClearingRequest(requestModel, mfModel); + + NotificationTemplateModel notificationTemplate = notificationTemplateJpaServiceProvider.getDefaultNotificationTemplateForTypeAndCode( + NotificationTemplateType.ENTITLEMENTS_REQUEST.name(), NotificationTemplateCode.CLEARING_REQUEST); + + renderTemplate(notificationTemplate, context, emailComposer, nonProdEmailAlert); + + EmailCommunicationDataModel result = this.send(emailComposer.compose()); + notificationRequestJpaServiceProvider.createNotificationFromEmailCommunicationDataModel(result, notificationTemplate, requestModel); + } + + public void notifyInstallationRequest(RequestModel requestModel, MovementFileModel mfModel, NotificationTemplateCode notificationTemplateCode) { + String mailbox = emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.REMOVALS.name()); + EmailComposer emailComposer = EmailComposer.html(String.valueOf(requestModel.getDeclaration().getMovementFileId()), mailbox); + String nonProdEmailAlert = emailEdmsServiceHelper.addRecipientsForMovementFile(mfModel.getJobHolder(), emailComposer); + VelocityContext context = emailEdmsServiceHelper.getContextForInstallationRequest(requestModel); + NotificationTemplateModel notificationTemplate = notificationTemplateJpaServiceProvider.getDefaultNotificationTemplateForTypeAndCode( + NotificationTemplateType.INSTALLATION_REQUEST.name(), notificationTemplateCode); + renderTemplate(notificationTemplate, context, emailComposer, nonProdEmailAlert); + EmailCommunicationDataModel result = this.send(emailComposer.compose()); + notificationRequestJpaServiceProvider.createNotificationFromEmailCommunicationDataModel(result, notificationTemplate, requestModel); + } + + public void notifyStartInstallationRequest(MovementFileModel mfModel) { + // we send this for every movement file not only for the once that have installations + String mailbox = emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.REMOVALS.name()); + EmailComposer emailComposer = EmailComposer.html(String.valueOf(mfModel.getId()), mailbox); + String nonProdEmailAlert = emailEdmsServiceHelper.addRecipientsForMovementFile(mfModel.getJobHolder(), emailComposer); + VelocityContext context = emailEdmsServiceHelper.getContextForStartInstallationRequest(mfModel); + NotificationTemplateModel notificationTemplate = notificationTemplateJpaServiceProvider.getDefaultNotificationTemplateForTypeAndCode( + NotificationTemplateType.INSTALLATION_REQUEST.name(), NotificationTemplateCode.START); + renderTemplate(notificationTemplate, context, emailComposer, nonProdEmailAlert); + EmailCommunicationDataModel result = this.send(emailComposer.compose()); + notificationMFJpaServiceProvider.createNotificationFromEmailCommunicationDataModel(result, notificationTemplate, mfModel); + + } + + public void notifyReminderInstallationRequest(RequestModel requestModel, MovementFileModel mfModel) { + String mailbox = emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.REMOVALS.name()); + EmailComposer emailComposer = EmailComposer.html(String.valueOf(requestModel.getDeclaration().getMovementFileId()), mailbox); + String nonProdEmailAlert = emailEdmsServiceHelper.addRecipientsForMovementFile(mfModel.getJobHolder(), emailComposer); + VelocityContext context = emailEdmsServiceHelper.getContextForReminderInstallationRequest(requestModel, mfModel); + NotificationTemplateModel notificationTemplate = notificationTemplateJpaServiceProvider.getDefaultNotificationTemplateForTypeAndCode( + NotificationTemplateType.INSTALLATION_REQUEST.name(), NotificationTemplateCode.REMINDER); + renderTemplate(notificationTemplate, context, emailComposer, nonProdEmailAlert); + EmailCommunicationDataModel result = this.send(emailComposer.compose()); + notificationRequestJpaServiceProvider.createNotificationFromEmailCommunicationDataModel(result, notificationTemplate, requestModel); + } + + public void notifyResettlementRequestDraftToAwaiting(RequestModel requestModel, MovementFileModel mfModel, + NotificationTemplateCode notificationTemplateCode) { + String mailbox = emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.REMOVALS.name()); + EmailComposer emailComposer = EmailComposer.html( + String.valueOf(requestModel.getDeclaration().getMovementFileId()), mailbox); + + composeAndSendEmailResettlementRequestDraftToAwaiting(requestModel, mfModel, notificationTemplateCode, emailComposer, null); + composeAndSendEmailResettlementRequestDraftToAwaiting(requestModel, mfModel, notificationTemplateCode, emailComposer, DEL_POSTING_CC_EMAIL); + } + + private void composeAndSendEmailResettlementRequestDraftToAwaiting(RequestModel requestModel, MovementFileModel mfModel, + NotificationTemplateCode notificationTemplateCode, + EmailComposer emailComposer, String alternativeToEmail) { + + //recipients + String nonProdEmailAlert = (alternativeToEmail == null) ? emailEdmsServiceHelper.addRecipientForHoANotification(mfModel.getJobFrom(), + emailComposer) : emailEdmsServiceHelper.addRecipientCopy(alternativeToEmail, emailComposer); + VelocityContext context = emailEdmsServiceHelper.getContextForResettlementRequestHoANotif(requestModel, mfModel); + NotificationTemplateModel notificationTemplate = notificationTemplateJpaServiceProvider.getDefaultNotificationTemplateForTypeAndCode( + NotificationTemplateType.RESETTLEMENT_REQUEST.name(), notificationTemplateCode); + renderTemplate(notificationTemplate, context, emailComposer, nonProdEmailAlert); + + //send the email + EmailCommunicationDataModel result = this.send(emailComposer.compose()); + notificationRequestJpaServiceProvider.createNotificationFromEmailCommunicationDataModel(result, + notificationTemplate, requestModel); + } + + + public void notifyResettlementRequestApprovedToPaid(RequestModel requestModel, MovementFileModel mfModel, + NotificationTemplateCode notificationTemplateCode) { + String mailbox = emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.REMOVALS.name()); + EmailComposer emailComposer = EmailComposer.html( + String.valueOf(requestModel.getDeclaration().getMovementFileId()), mailbox); + + composeAndSendEmailResettlementRequestApprovedToPaid(requestModel, mfModel, notificationTemplateCode, emailComposer, null); + composeAndSendEmailResettlementRequestApprovedToPaid(requestModel, mfModel, notificationTemplateCode, emailComposer, DEL_POSTING_CC_EMAIL); + } + + private void composeAndSendEmailResettlementRequestApprovedToPaid(RequestModel requestModel, MovementFileModel mfModel, + NotificationTemplateCode notificationTemplateCode, EmailComposer emailComposer, String alternativeToEmail) { + + //recipients + String nonProdEmailAlert = (alternativeToEmail == null) ? emailEdmsServiceHelper.addRecipientsForMovementFile(mfModel.getJobHolder(), + emailComposer) : emailEdmsServiceHelper.addRecipientCopy(alternativeToEmail, emailComposer); + VelocityContext context = emailEdmsServiceHelper.getContextForResettlementRequest(requestModel, + mfModel); + NotificationTemplateModel notificationTemplate = notificationTemplateJpaServiceProvider.getDefaultNotificationTemplateForTypeAndCode( + NotificationTemplateType.RESETTLEMENT_REQUEST.name(), notificationTemplateCode); + renderTemplate(notificationTemplate, context, emailComposer, nonProdEmailAlert); + + //send the email + EmailCommunicationDataModel result = this.send(emailComposer.compose()); + notificationRequestJpaServiceProvider.createNotificationFromEmailCommunicationDataModel(result, + notificationTemplate, requestModel); + } + + + public void notifyUserAboutRequestCreated(MovementFileModel mfModel) { + + String mailbox = emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.DELPOSTINGS.name()); + + //composer + EmailComposer emailComposer = EmailComposer.html(String.valueOf(mfModel.getId()), mailbox); + + //Recipients for movementFile email return the alert to add in the email for non prod environments + String nonProdEmailAlert = emailEdmsServiceHelper.addRecipientsForMovementFile(mfModel.getJobHolder(), emailComposer); + + VelocityContext context = emailEdmsServiceHelper.getContextForMovementFileCreatedRequest(mfModel); + + NotificationTemplateModel notificationTemplate = notificationTemplateJpaServiceProvider.getDefaultNotificationTemplateForTypeAndCode( + NotificationTemplateType.ENTITLEMENTS_REQUEST.name(), NotificationTemplateCode.CREATE_REQUEST); + + renderTemplate(notificationTemplate, context, emailComposer, nonProdEmailAlert); + + EmailCommunicationDataModel result = this.send(emailComposer.compose()); + notificationMFJpaServiceProvider.createNotificationFromEmailCommunicationDataModel(result, notificationTemplate, mfModel); + } + + + + public void notifyTopUpRequest(TopUpRequestModel createdTopUp, MovementFileModel mfModel, NotificationTemplateCode notificationTemplateCode) { + String mailbox = emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.REMOVALS.name()); + EmailComposer emailComposer = EmailComposer.html(String.valueOf(createdTopUp.getDeclaration().getMovementFileId()), mailbox); + String nonProdEmailAlert = emailEdmsServiceHelper.addRecipientsForMovementFile(mfModel.getJobHolder(), emailComposer); + VelocityContext context = emailEdmsServiceHelper.getContextForTopUpRequest(createdTopUp); + NotificationTemplateModel notificationTemplate = notificationTemplateJpaServiceProvider.getDefaultNotificationTemplateForTypeAndCode( + NotificationTemplateType.TOP_UP_REQUEST.name(), notificationTemplateCode); + renderTemplate(notificationTemplate, context, emailComposer, nonProdEmailAlert); + EmailCommunicationDataModel result = this.send(emailComposer.compose()); + notificationRequestJpaServiceProvider.createNotificationFromEmailCommunicationDataModel(result, notificationTemplate, createdTopUp); + } + + public void notifyPostingAllowanceStatus(PostingAllowanceModel postingAllowanceModel) { + String mailbox = emailEdmsServiceHelper.getEmailFromDependingOnEnvironment(NotificationEmailFromEnv.REMOVALS.name()); + EmailComposer emailComposer = EmailComposer.html(String.valueOf(postingAllowanceModel.getParentPostingAllowanceId()), mailbox); + String nonProdEmailAlert = emailEdmsServiceHelper.addRecipientsForMovementFile(postingAllowanceModel.getStaffMember(), emailComposer); + VelocityContext context = emailEdmsServiceHelper.getContextForPostingAllowances(postingAllowanceModel); + NotificationTemplateModel notificationTemplate = notificationTemplateJpaServiceProvider.getDefaultNotificationTemplateForTypeAndCode( + NotificationTemplateType.POSTING_ALLOWANCE.name(), NotificationTemplateCode.APPROVED_REQUEST); + renderTemplate(notificationTemplate, context, emailComposer, nonProdEmailAlert); + EmailCommunicationDataModel result = this.send(emailComposer.compose()); + notificationPostingAllowanceJpaServiceProvider.createNotificationFromEmailCommunicationDataModel(result, notificationTemplate, postingAllowanceModel); + } + + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EmailEnvironment.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EmailEnvironment.java new file mode 100644 index 0000000..860db5c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EmailEnvironment.java @@ -0,0 +1,32 @@ +package eu.europa.eeas.erights.common.service.provider.email; + +import eu.europa.eeas.ananke.core.base.context.AnankeContext; +import eu.europa.eeas.erights.common.boot.configuration.data.ERightsRootConfiguration; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class EmailEnvironment { + + @Autowired + private ERightsRootConfiguration eRightsRootConfiguration; + + @Autowired + private AnankeContext anankeContext; + + public String getHost() { + String host = eRightsRootConfiguration.getFrontOfficeHostName() != null ? + eRightsRootConfiguration.getFrontOfficeHostName() : + eRightsRootConfiguration.getHostName(); + + return host; + } + + public String getProtocol() { + return eRightsRootConfiguration.getProtocol(); + } + + public String getEnvironment() { + return anankeContext.getProfiles().toString(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EmailGenderLabel.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EmailGenderLabel.java new file mode 100644 index 0000000..27dd30d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/EmailGenderLabel.java @@ -0,0 +1,33 @@ +package eu.europa.eeas.erights.common.service.provider.email; + +import java.util.Arrays; +import java.util.Optional; +import lombok.Getter; + +/** + * @author ienaccat + * @since 3.6.0 + */ +@Getter +public enum EmailGenderLabel { + MALE("M", "Mr", "his", "him"), + FEMALE("F", "Ms", "her", "her"); + + private final String value; + private final String salutation; + private final String salutationAdjective; + private final String salutationAdjective2; + + EmailGenderLabel(String value, String salutation, String salutationAdjective, String salutationAdjective2) { + this.value = value; + this.salutation = salutation; + this.salutationAdjective = salutationAdjective; + this.salutationAdjective2 = salutationAdjective2; + } + + public static Optional getByValue(String value) { + return Arrays.stream(EmailGenderLabel.values()) + .filter(genderLabel -> genderLabel.value.equals(value)) + .findFirst(); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/NotificationSenderProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/NotificationSenderProvider.java new file mode 100644 index 0000000..879216d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/email/NotificationSenderProvider.java @@ -0,0 +1,53 @@ +package eu.europa.eeas.erights.common.service.provider.email; + +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.declaration.DeclarationJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementTypeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class NotificationSenderProvider extends AbstractServiceProvider { + + private final DataServiceProviderRegistry dataServiceProviderRegistry; + + private final EmailEdmsServiceProvider emailEdmsServiceProvider; + + private final MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + private final EntitlementTypeJpaServiceProvider entitlementTypeJpaServiceProvider; + + @Autowired + public NotificationSenderProvider(DataServiceProviderRegistry dataServiceProviderRegistry, + EmailEdmsServiceProvider emailEdmsServiceProvider, + MovementFileJpaServiceProvider movementFileJpaServiceProvider, EntitlementTypeJpaServiceProvider entitlementTypeJpaServiceProvider) { + this.dataServiceProviderRegistry = dataServiceProviderRegistry; + this.emailEdmsServiceProvider = emailEdmsServiceProvider; + this.movementFileJpaServiceProvider = movementFileJpaServiceProvider; + this.entitlementTypeJpaServiceProvider = entitlementTypeJpaServiceProvider; + } + + public void sendNotification(Long movementFileId) { + getLogger().info("Sending email notification to Movement File: {}", movementFileId); + MovementFileModel movementFileModel = movementFileJpaServiceProvider.getMovementFile(movementFileId); + try { + getLogger().info("checkAmountsNotificationNeeded movementFileID {}: {}", movementFileId, entitlementTypeJpaServiceProvider.checkAmountsNotificationNeeded(movementFileModel)); + if (entitlementTypeJpaServiceProvider.checkAmountsNotificationNeeded(movementFileModel)) { + emailEdmsServiceProvider.notifyAllEntitlementAmountsFilled(movementFileModel); + } + } catch (Exception e) { + getLogger().error("An exeption ocurred when checking if notification needed", e); + } + try { + DeclarationJpaServiceProvider declarationJpaServiceProvider = (DeclarationJpaServiceProvider) dataServiceProviderRegistry.getDataServiceProviderFor(DeclarationModel.class); + declarationJpaServiceProvider.enableOrDisableDeclarationBasedOnFilledAllowances(movementFileModel); + } catch (Exception e) { + getLogger().error("An exception occurred when checking if declaration should be created", e); + } + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/gosselin/RatesWSService.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/gosselin/RatesWSService.java new file mode 100644 index 0000000..82df761 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/gosselin/RatesWSService.java @@ -0,0 +1,17 @@ +package eu.europa.eeas.erights.common.service.provider.gosselin; + +import eu.europa.eeas.erights.common.exceptionhandling.GosselinRateBadRequest; +import eu.europa.eeas.erights.common.exceptionhandling.GosselinRateNotFound; +import eu.europa.eeas.erights.common.exceptionhandling.GosselinRateServerError; +import org.javamoney.moneta.Money; + +import java.math.BigInteger; +import java.time.LocalDate; + +public interface RatesWSService { + + Money getRate(Integer year, String cityFrom, String cityTo, String type, LocalDate startDate) throws GosselinRateNotFound, GosselinRateBadRequest, GosselinRateServerError; + + Money getRate(Integer year, String cityFrom, String cityTo, String type, BigInteger kg, LocalDate startDate) throws GosselinRateNotFound, GosselinRateBadRequest, GosselinRateServerError; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/gosselin/RatesWSServiceMock.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/gosselin/RatesWSServiceMock.java new file mode 100644 index 0000000..fc1bdc5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/gosselin/RatesWSServiceMock.java @@ -0,0 +1,69 @@ +package eu.europa.eeas.erights.common.service.provider.gosselin; + +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.erights.common.boot.configuration.data.ERightsRootConfiguration; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.GosselinMockJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.GosselinMockJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.GosselinRateBadRequest; +import eu.europa.eeas.erights.common.exceptionhandling.GosselinRateNotFound; +import org.javamoney.moneta.Money; +import org.springframework.web.util.UriComponentsBuilder; + +import java.math.BigInteger; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.Map; + +public class RatesWSServiceMock extends AbstractServiceProvider implements RatesWSService { + + private final GosselinMockJpaRepository gosselinMockJpaRepository; + + private final ERightsRootConfiguration eRightsRootConfiguration; + + public RatesWSServiceMock(GosselinMockJpaRepository gosselinMockJpaRepository, ERightsRootConfiguration eRightsRootConfiguration) { + this.gosselinMockJpaRepository = gosselinMockJpaRepository; + this.eRightsRootConfiguration = eRightsRootConfiguration; + } + + @Override + public Money getRate(Integer year, String cityFrom, String cityTo, String type, LocalDate startDate) throws GosselinRateNotFound, GosselinRateBadRequest { + Map urlParams = new HashMap<>(); + urlParams.put("year", String.valueOf(year)); + urlParams.put("cityFrom", cityFrom); + urlParams.put("cityTo", cityTo); + urlParams.put("type", type); + UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(eRightsRootConfiguration.getGosselinHost() + "/RateEEAS/{year}/{cityFrom}/{cityTo}/{type}/rate").queryParam("moveDate", startDate.format(DateTimeFormatter.ISO_DATE)); + getLogger().info("Request to Gosselin: {}", builder.buildAndExpand(urlParams).toUri()); + GosselinMockJpaEntity entity = gosselinMockJpaRepository.getFromMock(year, type, cityFrom, cityTo); + return getAmount(entity); + } + + @Override + public Money getRate(Integer year, String cityFrom, String cityTo, String type, BigInteger kg, LocalDate startDate) throws GosselinRateNotFound, GosselinRateBadRequest { + Map urlParams = new HashMap<>(); + urlParams.put("year", String.valueOf(year)); + urlParams.put("cityFrom", cityFrom); + urlParams.put("cityTo", cityTo); + urlParams.put("type", type); + urlParams.put("kg",kg.toString()); + UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(eRightsRootConfiguration.getGosselinHost() + "/RateEEAS/{year}/{cityFrom}/{cityTo}/{type}/{kg}/rate").queryParam("moveDate", startDate.format(DateTimeFormatter.ISO_DATE)); + getLogger().info("Request to Gosselin: {}", builder.buildAndExpand(urlParams).toUri()); + GosselinMockJpaEntity entity = gosselinMockJpaRepository.getFromMock(year, type, cityFrom, cityTo, kg); + return getAmount(entity); + } + + private Money getAmount(GosselinMockJpaEntity entity) throws GosselinRateNotFound, GosselinRateBadRequest { + if (entity == null) { + throw new GosselinRateBadRequest("No Gosselin Mock found"); + } + if (entity.getCurrentCalls().equals(entity.getLimitCalls())) { + return Money.of(entity.getAmount(), "EUR"); + } else { + Integer currentCalls = entity.getCurrentCalls(); + entity.setCurrentCalls(entity.getCurrentCalls() + 1); + gosselinMockJpaRepository.save(entity); + throw new GosselinRateNotFound(String.format("Current calls %s - Limit calls %s", currentCalls, entity.getLimitCalls())); + } + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/gosselin/RatesWSServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/gosselin/RatesWSServiceProvider.java new file mode 100644 index 0000000..f78d2e4 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/gosselin/RatesWSServiceProvider.java @@ -0,0 +1,112 @@ +package eu.europa.eeas.erights.common.service.provider.gosselin; + +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.erights.common.boot.configuration.data.ERightsRootConfiguration; +import eu.europa.eeas.erights.common.exceptionhandling.GosselinRateBadRequest; +import eu.europa.eeas.erights.common.exceptionhandling.GosselinRateNotFound; +import eu.europa.eeas.erights.common.exceptionhandling.GosselinRateServerError; +import eu.europa.eeas.erights.common.service.model.ws.Rate; +import org.javamoney.moneta.Money; +import org.springframework.http.*; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponentsBuilder; + +import java.math.BigInteger; +import java.net.URI; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.Objects; + +public class RatesWSServiceProvider extends AbstractServiceProvider implements RatesWSService { + + private final RestTemplate restTemplate; + private final ERightsRootConfiguration eRightsRootConfiguration; + + public RatesWSServiceProvider(RestTemplate restTemplate, ERightsRootConfiguration eRightsRootConfiguration) { + this.restTemplate = restTemplate; + this.eRightsRootConfiguration = eRightsRootConfiguration; + } + + @Override + public Money getRate(Integer year, String cityFrom, String cityTo, String type, LocalDate startDate) throws GosselinRateNotFound, GosselinRateBadRequest, GosselinRateServerError { + getLogger().info("Getting rate from Gosselin: year {}, from {}, to {}, type {}, moveDate {}", year, cityFrom, cityTo, type, startDate); + ResponseEntity response = new ResponseEntity<>(HttpStatus.NO_CONTENT); + try { + response = restTemplate.exchange( + getUri(year, cityFrom, cityTo, type, startDate), + HttpMethod.GET, + getHttpEntity(), + Rate.class); + } catch (Exception exception) { + getLogger().info("Error from Gosselin: {} -> {}", exception.getMessage(), response); + throw new GosselinRateServerError(String.format("Error from Gosselin: %s -> %s", exception.getMessage(), response)); + } + if (HttpStatus.NO_CONTENT.equals(response.getStatusCode())) { + throw new GosselinRateNotFound(String.format("Rate NOT FOUND year %s, cityFrom %s, cityTo %s, entitlementMaxCatCode %s", year, cityFrom, cityTo, type)); + } + if (HttpStatus.BAD_REQUEST.equals(response.getStatusCode())) { + throw new GosselinRateBadRequest(String.format("Rate BAD REQUEST year %s, cityFrom %s, cityTo %s, entitlementMaxCatCode %s", year, cityFrom, cityTo, type)); + } + return getMoney(response); + } + + @Override + public Money getRate(Integer year, String cityFrom, String cityTo, String type, BigInteger kg, LocalDate startDate) throws GosselinRateNotFound, GosselinRateBadRequest, GosselinRateServerError { + getLogger().info("Getting rate from Gosselin: year {}, from {}, to {}, type {}, kg {}, moveDate {}", year, cityFrom, cityTo, type, kg, startDate); + ResponseEntity response = new ResponseEntity<>(HttpStatus.NO_CONTENT); + try { + response = restTemplate.exchange( + getUri(year, cityFrom, cityTo, type, kg, startDate), + HttpMethod.GET, + getHttpEntity(), + Rate.class); + } catch (Exception exception) { + getLogger().info("Error from Gosselin: {} -> {}", exception.getMessage(), response); + throw new GosselinRateServerError(String.format("Error from Gosselin: %s -> %s", exception.getMessage(), response)); + } + if (HttpStatus.NO_CONTENT.equals(response.getStatusCode())) { + throw new GosselinRateNotFound(String.format("Rate NOT FOUND year %s, cityFrom %s, cityTo %s, entitlementMaxCatCode %s, kg %s", year, cityFrom, cityTo, type, kg)); + } + if (HttpStatus.BAD_REQUEST.equals(response.getStatusCode())) { + throw new GosselinRateBadRequest(String.format("Rate BAD REQUEST year %s, cityFrom %s, cityTo %s, entitlementMaxCatCode %s, kg %s", year, cityFrom, cityTo, type, kg)); + } + return getMoney(response); + } + + private Money getMoney(ResponseEntity response) { + return Money.of(Objects.requireNonNull(response.getBody()).getAmount(), "EUR"); + } + + private URI getUri(Integer year, String cityFrom, String cityTo, String type, BigInteger kg, LocalDate startDate) { + UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(eRightsRootConfiguration.getGosselinHost() + eRightsRootConfiguration.getGosselinPath()) + .queryParam("moveDate", startDate.format(DateTimeFormatter.ISO_DATE)) + .queryParam("year", String.valueOf(year)) + .queryParam("cityFrom", cityFrom) + .queryParam("cityTo", cityTo) + .queryParam("kg", kg) + .queryParam("type", type); + getLogger().info("Request to Gosselin: {}", builder.build().toUri()); + return builder.build().toUri(); + } + + private URI getUri(Integer year, String cityFrom, String cityTo, String type, LocalDate startDate) { + UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(eRightsRootConfiguration.getGosselinHost() + eRightsRootConfiguration.getGosselinPath()) + .queryParam("moveDate", startDate.format(DateTimeFormatter.ISO_DATE)) + .queryParam("year", String.valueOf(year)) + .queryParam("cityFrom", cityFrom) + .queryParam("cityTo", cityTo) + .queryParam("type", type); + getLogger().info("Request to Gosselin: {}", builder.build().toUri()); + return builder.build().toUri(); + } + + private HttpEntity getHttpEntity() { + HttpHeaders headers = new HttpHeaders(); + headers.set("X-API-KEY", eRightsRootConfiguration.getGosselinApiKey().getValue()); + headers.set("X-API-ID", eRightsRootConfiguration.getGosselinApiId()); + return new HttpEntity(headers); + } + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/sysper/SysperServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/sysper/SysperServiceProvider.java new file mode 100644 index 0000000..b03252f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/sysper/SysperServiceProvider.java @@ -0,0 +1,257 @@ +package eu.europa.eeas.erights.common.service.provider.sysper; + +import eu.europa.eeas.ananke.core.base.Profiles; +import eu.europa.eeas.ananke.core.base.context.AnankeContext; +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.security.SecurityHelper; +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.SysperResponseTransferObject; +import eu.europa.eeas.erights.common.boot.configuration.data.ERightsRootConfiguration; +import eu.europa.eeas.erights.common.service.model.RightVOBuilder; +import eu.europa.eeas.erights.web.ApiClient; +import eu.europa.eeas.erights.web.client.ERightsDescriptionApi; +import eu.europa.eeas.erights.web.client.model.RightVO; +import io.github.resilience4j.retry.annotation.Retry; +import org.apache.logging.log4j.util.Strings; +import org.quartz.xml.ValidationException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.HttpServerErrorException; +import org.springframework.web.client.RestClientException; +import org.springframework.web.client.RestTemplate; + +import java.time.LocalDateTime; + +import static java.util.Objects.isNull; + +@Service +public class SysperServiceProvider extends AbstractServiceProvider { + + public static final String RIGHT_CONTEXT = "/right"; + + private final ERightsDescriptionApi eRightsDescriptionApi; + + private final ERightsRootConfiguration eRightsRootConfiguration; + + private final SecurityHelper securityHelper; + + private final AnankeContext anankeContext; + + @Qualifier("restTemplateSysper") + private final RestTemplate restTemplateSysper; + + @Autowired + public SysperServiceProvider(ERightsDescriptionApi eRightsDescriptionApi, ERightsRootConfiguration eRightsRootConfiguration, SecurityHelper securityHelper, AnankeContext anankeContext, RestTemplate restTemplateSysper) { + this.eRightsDescriptionApi = eRightsDescriptionApi; + this.eRightsRootConfiguration = eRightsRootConfiguration; + this.securityHelper = securityHelper; + this.anankeContext = anankeContext; + this.restTemplateSysper = restTemplateSysper; + } + + @Retry(name="paymentExistSysper") + public Integer paymentExist(String rightId, Long personId) { + try { + this.setupConfiguration(rightId, restTemplateSysper); + RightVO existingRight = eRightsDescriptionApi.getRight(Integer.valueOf(rightId)); + if (existingRight.getEventId() != null && existingRight.getPerIdBenef() != null && existingRight.getPerIdBenef().equals(personId.intValue())) { + return existingRight.getEventId(); + } + } catch (RestClientException e) { + String errorMessage = e.getMessage(); + if (errorMessage != null && errorMessage.contains("cannot find right")) { + getLogger().info("The right ID {} does not exist in SYSPER", rightId); + } else { + getLogger().error("Sysper Rest Client error: {}", e.getMessage()); + throw e; + } + } catch (Exception e) { + getLogger().error("Sysper error: {}", e.getMessage()); + throw e; + } + return 0; + } + + @Retry(name="createSysper") + public RightVO createRight(RightVO body) { + setupConfiguration(restTemplateSysper); + try { + return eRightsDescriptionApi.addRight(body); + } catch (HttpServerErrorException e) { + getLogger().error("Sysper is not available: {}", e.getMessage()); + throw new ResourceNotFoundRuntimeException("Sysper is not available, try later"); + } catch (Exception e) { + getLogger().error("Sysper error: {}", e.getMessage()); + throw e; + } + } + + private void setupConfiguration(RestTemplate restTemplateWithoutProxy) { + ApiClient apiClientCustom = new ApiClient(restTemplateWithoutProxy); + this.eRightsDescriptionApi.setApiClient(apiClientCustom); + + this.eRightsDescriptionApi.getApiClient().setBasePath(eRightsRootConfiguration.getSysperBasePath()) + .addDefaultHeader(eRightsRootConfiguration.getSysperApiKeyHeaderName(), eRightsRootConfiguration.getSysperApiKey()) + .addDefaultHeader(eRightsRootConfiguration.getSysperProxyTicketHeaderName(), getProxyTicket()); + } + + private void setupConfiguration() { + this.eRightsDescriptionApi.getApiClient().setBasePath(eRightsRootConfiguration.getSysperBasePath()); + this.eRightsDescriptionApi.getApiClient().addDefaultHeader(eRightsRootConfiguration.getSysperApiKeyHeaderName(), eRightsRootConfiguration.getSysperApiKey()); + this.eRightsDescriptionApi.getApiClient().addDefaultHeader(eRightsRootConfiguration.getSysperProxyTicketHeaderName(), getProxyTicket()); + } + + private void setupConfiguration(String rightId) { + this.eRightsDescriptionApi.getApiClient().setBasePath(eRightsRootConfiguration.getSysperBasePath()); + this.eRightsDescriptionApi.getApiClient().addDefaultHeader(eRightsRootConfiguration.getSysperApiKeyHeaderName(), eRightsRootConfiguration.getSysperApiKey()); + this.eRightsDescriptionApi.getApiClient().addDefaultHeader(eRightsRootConfiguration.getSysperProxyTicketHeaderName(), getProxyTicket(rightId)); + } + + private void setupConfiguration(String rightId, RestTemplate restTemplateWithoutProxy) { + ApiClient apiClientCustom = new ApiClient(restTemplateWithoutProxy); + this.eRightsDescriptionApi.setApiClient(apiClientCustom); + + this.eRightsDescriptionApi.getApiClient() + .setBasePath(eRightsRootConfiguration.getSysperBasePath()) + .addDefaultHeader(eRightsRootConfiguration.getSysperApiKeyHeaderName(), eRightsRootConfiguration.getSysperApiKey()) + .addDefaultHeader(eRightsRootConfiguration.getSysperProxyTicketHeaderName(), getProxyTicket(rightId)); + } + + private String getProxyTicket() { + String proxyTicketUrl = eRightsRootConfiguration.getSysperServiceUrl() + eRightsRootConfiguration.getSysperContextPath() + RIGHT_CONTEXT; + if (!anankeContext.getProfiles().contains(Profiles.PRODUCTION)) { + getLogger().info("Proxy Ticket URL: {}", proxyTicketUrl); + } + String ticket = securityHelper.requestProxyTicket(proxyTicketUrl); + if (!anankeContext.getProfiles().contains(Profiles.PRODUCTION)) { + getLogger().info("Proxy Ticket: {}", ticket); + } + + return ticket; + } + + private String getProxyTicket(String rightId) { + String proxyTicketUrl = eRightsRootConfiguration.getSysperServiceUrl() + eRightsRootConfiguration.getSysperContextPath() + RIGHT_CONTEXT + "/" + rightId; + if (!anankeContext.getProfiles().contains(Profiles.PRODUCTION)) { + getLogger().info("Proxy Ticket URL: {}", proxyTicketUrl); + } + String ticket = securityHelper.requestProxyTicket(proxyTicketUrl); + if (!anankeContext.getProfiles().contains(Profiles.PRODUCTION)) { + getLogger().info("Proxy Ticket: {}", ticket); + } + return ticket; + } + + public SysperResponseTransferObject createRightTestSysper(Integer perId, String proxyTicket, String servicelUrl, String testKey) { + servicelUrl = servicelUrl == null ? eRightsRootConfiguration.getSysperServiceUrl() : servicelUrl; + String proxyTicketUrl = servicelUrl + eRightsRootConfiguration.getSysperContextPath() + RIGHT_CONTEXT; + if (proxyTicket == null) { + proxyTicket = securityHelper.requestProxyTicket(proxyTicketUrl); + } + proxyTicket = proxyTicket == null ? securityHelper.requestProxyTicket(proxyTicketUrl) : proxyTicket; + testKey = testKey == null ? eRightsRootConfiguration.getSysperApiKey() : testKey; + getLogger().info("Proxy Ticket to test: {}", proxyTicket); + return exchange(getRightVO(perId), proxyTicket, testKey, proxyTicketUrl); + } + + public String getProxyTicketTest(String serviceUrl) { + serviceUrl = serviceUrl == null ? eRightsRootConfiguration.getSysperServiceUrl() : serviceUrl; + String serviceUrlFull = serviceUrl + eRightsRootConfiguration.getSysperContextPath() + RIGHT_CONTEXT; + getLogger().info("Service URL: {}", serviceUrlFull); + return securityHelper.requestProxyTicket(serviceUrlFull); + } + + private SysperResponseTransferObject exchange(RightVO body, String proxyTicket, String testKey, String proxyTicketUrl) { + StringBuilder result = new StringBuilder(); + HttpHeaders headers = new HttpHeaders(); + SysperResponseTransferObject sysperResponse = new SysperResponseTransferObject(); + headers.set("testKey", testKey); + headers.set("proxy-ticket", proxyTicket); + headers.set("Content-Type", "application/json"); + String resourceUrl = eRightsRootConfiguration.getSysperBasePath() + "/erights/right"; + HttpEntity request = new HttpEntity<>(body, headers); + sysperResponse.setBaseUrl(resourceUrl); + result.append(String.format("(Integration TEST) URL: %s%n", resourceUrl)); + sysperResponse.setServiceUrl(proxyTicketUrl); + result.append(String.format("(Integration TEST) Service URL: %s%n", proxyTicketUrl)); + sysperResponse.setRequestHeader(request.getHeaders().toString()); + result.append(String.format("(Integration TEST) Request Header Content: %s%n", request.getHeaders())); + sysperResponse.setRequestBody(request.getBody().toString()); + result.append(String.format("(Integration TEST) Request Body Content: %s%n", request.getBody())); + try { + ResponseEntity response = + restTemplateSysper + .exchange(resourceUrl, + HttpMethod.POST, + request, + String.class); + sysperResponse.setResponseHttpStatus(String.valueOf(response.getStatusCodeValue())); + result.append(String.format("(Integration TEST) Response HTTP Status: %s%n", response.getStatusCodeValue())); + sysperResponse.setResponseHeader(response.getHeaders().toString()); + result.append(String.format("(Integration TEST) Response Header Content: %s%n", response.getHeaders())); + sysperResponse.setResponseBody(response.getBody()); + result.append(String.format("(Integration TEST) Response Body Content: %s%n", response.getBody())); + }catch (Exception e) { + result.append(String.format("(Integration TEST) Sysper error: %s%n", e.getMessage())); + } + getLogger().info(result.toString()); + return sysperResponse; + } + + private RightVO getRightVO(Integer perId) { + RightVO rightVO = new RightVO(); + rightVO.setAmount(1000.00); + rightVO.setNumber(1); + rightVO.setCurrency("EUR"); + rightVO.rightsType(RightVO.RightsTypeEnum.FRAIS_VOYAGE_OUTSIDE_EU_ETRAVEL); + rightVO.perIdAttrib(perId); + rightVO.setPerIdBenef(perId); + rightVO.perIdAlloc(0); + rightVO.setTypeOfIndemnity("INDE"); + rightVO.setUnit("TIE"); + rightVO.setOriginPeriod("2306"); + rightVO.setPaymentPeriod("2306"); + rightVO.setComments("Integration Testing " + LocalDateTime.now()); + rightVO.setEventId(0); + return rightVO; + } + + public RightVO createRightRequest(RightVOBuilder rightVOBuilder) { + validate(rightVOBuilder); + RightVO rightVO = new RightVO(); + rightVO.setPaymentPeriod(String.format("%02d%02d", rightVOBuilder.getPaymentPeriodYear().getValue() % 100, rightVOBuilder.getPaymentPeriodMonth().getValue())); + rightVO.setOriginPeriod(String.format("%02d%02d", rightVOBuilder.getOriginPeriodYear().getValue() % 100, rightVOBuilder.getOriginPeriodMonth().getValue())); + rightVO.setRightsType(rightVOBuilder.getType()); + rightVO.setPerIdAttrib(rightVOBuilder.getPerId().intValue()); + rightVO.setPerIdBenef(rightVOBuilder.getPerId().intValue()); + rightVO.setComments(rightVOBuilder.getComments()); + rightVO.typeOfIndemnity(rightVOBuilder.getTypeOfIndemnity()); + rightVO.unit(rightVOBuilder.getUnit()); + rightVO.number(rightVOBuilder.getNumber()); + rightVO.comments(rightVOBuilder.getComments()); + return rightVO; + } + + + private void validate(RightVOBuilder rightVOBuilder) { + + if (Strings.isBlank(rightVOBuilder.getComments())) { + + throw new RuntimeException("Comments is required"); + } + if (isNull(rightVOBuilder.getPerId())) { + + throw new RuntimeException("PerId is required"); + } + if (isNull(rightVOBuilder.getType())) { + + throw new RuntimeException("Type is required"); + } + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/tud/TUDRatesProviderHelper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/tud/TUDRatesProviderHelper.java new file mode 100644 index 0000000..7128473 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/tud/TUDRatesProviderHelper.java @@ -0,0 +1,31 @@ +package eu.europa.eeas.erights.common.service.provider.tud; + +import eu.europa.eeas.erights.common.service.model.ws.skyscanner.Itinerary; + +import java.math.BigDecimal; +import java.math.MathContext; +import java.math.RoundingMode; +import java.util.List; +import java.util.Optional; + +public class TUDRatesProviderHelper { + + public static Optional getHigherAmountOfTheAvailableFlights(List itineraries) { + if (itineraries.isEmpty()) + return Optional.empty(); + int PERCENTAGE = 80; + BigDecimal extraMoney = BigDecimal.valueOf(200); + BigDecimal percent = BigDecimal.valueOf(PERCENTAGE).divide(BigDecimal.valueOf(100), new MathContext(2)); + BigDecimal numberOfItineraries = BigDecimal.valueOf(itineraries.size()).multiply(percent); + return Optional.of( + BigDecimal.valueOf( + itineraries.stream() + .map(Itinerary::getPrice) + .sorted() + .limit(numberOfItineraries.setScale(0, RoundingMode.UP).intValue()) + .mapToDouble(Double::doubleValue).max().orElse(0) + ).add(extraMoney) + ); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/tud/TUDRatesWSServiceProvider.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/tud/TUDRatesWSServiceProvider.java new file mode 100644 index 0000000..3289c7e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/tud/TUDRatesWSServiceProvider.java @@ -0,0 +1,563 @@ +package eu.europa.eeas.erights.common.service.provider.tud; + +import java.net.URI; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.*; + +import javax.transaction.Transactional; + +import com.fasterxml.jackson.annotation.JsonProperty; +import eu.europa.eeas.erights.common.data.jpa.repository.IataAirportJpaRepository; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.RestClientException; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponentsBuilder; + +import com.fasterxml.jackson.core.JsonProcessingException; + +import eu.europa.eeas.ananke.core.base.exception.ValidationRuntimeException; +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.erights.common.boot.configuration.skyscanner.SkyscannerWSConfiguration; +import eu.europa.eeas.erights.common.data.jpa.entity.tud.RatesTUDJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.tud.RatesTUDJpaRepository; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.service.model.ws.skyscanner.FlightsLivePricesResponse; +import eu.europa.eeas.erights.common.service.model.ws.skyscanner.Itinerary; +import eu.europa.eeas.erights.common.service.provider.tud.skyscanner.FlightsWSService; +import eu.europa.eeas.erights.common.service.provider.tud.skyscanner.SkyScannerHelper; + +/** + * Implements interaction with Skyscanner Flights Live Prices Service + * + * @author idominju + * + */ +@Service +public class TUDRatesWSServiceProvider extends AbstractServiceProvider implements FlightsWSService { + + public static final String SIMPLE_DATE_FORMAT = "yyyy-MM-dd"; + public static final String CURRENCY = "EUR"; + public static final String LOCALE = "en-GB"; + public static final String LOCATION_SCHEMA = "iata"; + + public static final String CABIN_CLASS_PR_ECONOMY = "CABIN_CLASS_PREMIUM_ECONOMY"; + public static final String CABIN_CLASS_BUSINESS = "CABIN_CLASS_BUSINESS"; + + protected static final String[] CABIN_CLASSES = { CABIN_CLASS_PR_ECONOMY, CABIN_CLASS_BUSINESS }; + + public static final String WEBSERVICE_NAME_SKYSCANNER = "SKY_SCANNER"; + + /** + * Max no of days to search for flights, starting with the requested flight date. + */ + public static final int MAX_ALLOWED_OFFSET_DAYS = 7; + + public static final String APIKEY = "apikey"; + + private final RatesTUDJpaRepository ratesTUDRepository; + private final RestTemplate restTemplate; + private final SkyscannerWSConfiguration skyscannerWSConfiguration; + private final SkyScannerHelper skyScannerHelper; + + @Autowired + private IataAirportJpaRepository iataAirportJpaRepository; + + private final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(SIMPLE_DATE_FORMAT); + + public TUDRatesWSServiceProvider(RestTemplate restTemplate, SkyscannerWSConfiguration skyscannerWSConfiguration, + RatesTUDJpaRepository ratesTUDRepository, SkyScannerHelper skyScannerHelper) { + this.restTemplate = restTemplate; + this.skyscannerWSConfiguration = skyscannerWSConfiguration; + this.ratesTUDRepository = ratesTUDRepository; + this.skyScannerHelper = skyScannerHelper; + } + + @Override + @Transactional + public void registerItineraryRequest(String countryMarket, + String iataOriginPlace, String iataDestinationPlace, + Long movementFileId, String entitlementMaxsCatCode, + Long entitlementMaxsId, Boolean entitlementSpecific, + LocalDate requestedOutboundDate, Integer adults) { + + if (iataOriginPlace.equals(iataDestinationPlace) || + requestedOutboundDate.isBefore(LocalDate.now()) || + requestedOutboundDate.isAfter(LocalDate.now().plusDays(355))) { + // We do not request for origin = destination + return; + } + + // Build the entity to store + RatesTUDJpaEntity entity = new RatesTUDJpaEntity(); + + for (String cabinClass: CABIN_CLASSES) { + Optional tokenToPollLater = doPerformRequest(cabinClass, countryMarket, iataOriginPlace, iataDestinationPlace, + requestedOutboundDate, adults); + if (tokenToPollLater.isPresent() && CABIN_CLASS_BUSINESS.equals(cabinClass)) { + entity.setResultUrlBusiness(tokenToPollLater.get()); + } else tokenToPollLater.ifPresent(entity::setResultUrlPremiumEconomy); + } + + entity.setOriginPlace(iataOriginPlace); + entity.setDestinationPlace(iataDestinationPlace); + + entity.setMovementFileId(movementFileId); + entity.setEntitlementMaxsCatCode(entitlementMaxsCatCode); + entity.setEntitlementSpecific(entitlementSpecific); + entity.setEntitlementMaxsId(entitlementMaxsId); + + entity.setRequestedOutboundDate(requestedOutboundDate); + // In this first attempt we have tried the requested outboundDate + // The job will retrieve the result. If no flights found, this field will be updated + entity.setUsedOutboundDate(requestedOutboundDate); + + entity.setCountry(countryMarket); + + entity.setAdults(adults); + entity.setChildren(0); + entity.setInfants(0); + + entity.setCurrency(CURRENCY); + entity.setLocale(LOCALE); + entity.setLocationSchema(LOCATION_SCHEMA); + + entity.setWebserviceName(WEBSERVICE_NAME_SKYSCANNER); + entity.setDeleted(false); + entity.setInfoComplete(false); + entity.setSearchCeased(false); + // Store entity + ratesTUDRepository.save(entity); + } + + @Override + @Transactional + public void updateIncompleteItineraryRequests() { + + List entitiesToUpdate = ratesTUDRepository.findIncompleteRequests(); + getLogger().info("Updating Incomplete Itinerary Requests to Skyscanner. Count: {}. Processing...", entitiesToUpdate.size()); + entitiesToUpdate.forEach(this :: processItineraryRequest); + } + + /** + * Processes incomplete itinerary request. + * Perform the request with the URL stored in RESULT_URL, which is the result + * of using the date in USED_OUTBOUND_DATE. + * + * - If the response has status "Incomplete", then do nothing (waiting to next call) + * - If the response has status "Complete" and has itineraries, then apply the algorithm and set the request as complete. + * - If the response has status "Complete" and has no itineraries, repeat the request with USED_OUTBOUND_DATE + 1 (max: REQ_DATE + 7) + * - If the response has status "Complete" and has no itineraries, and USED_OUTBOUND_DATE = REQ_OUTBOUND_DATE + 7, + * then set SEARCH_CEASED = true in this request. + * + * @param request + */ + private void processItineraryRequest(RatesTUDJpaEntity request) { + + String tokenBusiness = request.getResultUrlBusiness(); + String tokenePremEconomy = request.getResultUrlPremiumEconomy(); + + String rawJsonResponseBusi = getSearchResult(tokenBusiness); + String rawJsonResponsePrem = getSearchResult(tokenePremEconomy); + + if(rawJsonResponseBusi != null && rawJsonResponsePrem != null) { + try { + FlightsLivePricesResponse pricesResponseBusi = skyScannerHelper.parseResponse(rawJsonResponseBusi); + FlightsLivePricesResponse pricesResponsePrem = skyScannerHelper.parseResponse(rawJsonResponsePrem); + + if (!SkyScannerHelper.VALUE_UPDATES_COMPLETE.equals(pricesResponseBusi.getStatus()) + || !SkyScannerHelper.VALUE_UPDATES_COMPLETE.equals(pricesResponsePrem.getStatus())) { + if (SkyScannerHelper.RESULT_STATUS_FAILED.equals(pricesResponseBusi.getStatus()) + && SkyScannerHelper.RESULT_STATUS_FAILED.equals(pricesResponsePrem.getStatus())) { + request.setSearchCeased(true); + // Indicate that Skyscanner did perform the full query + request.setInfoComplete(true); + } + request.setRetrievedAt(LocalDateTime.now()); + // Save as an example of empty responses from Skyscanner + request.setRawResponseBusiness(rawJsonResponseBusi); + request.setRawResponsePremiumEconomy(rawJsonResponsePrem); + // Update the entity + ratesTUDRepository.save(request); + return; + } + // Here the request is complete: We can inspect results: + if (pricesResponseBusi.getItineraries().isEmpty() && pricesResponsePrem.getItineraries().isEmpty()) { + // Both empty: No itineraries + if (moreAttemptsAfterCurrentUrlFailed(request)) { + + // We'll try the next day, so we update the USED_OUTBOUND_DATE and perform a request to get the RESULT_URL + // (but we dont get the result now) + LocalDate nextDateToTry = request.getUsedOutboundDate().plusDays(1); + Optional businessClassToken = doPerformRequest(CABIN_CLASS_BUSINESS, + request.getCountry(), request.getOriginPlace(), request.getDestinationPlace(), + nextDateToTry, request.getAdults()); + Optional primeEconomyClassToken = doPerformRequest(CABIN_CLASS_PR_ECONOMY, + request.getCountry(), request.getOriginPlace(), request.getDestinationPlace(), + nextDateToTry, request.getAdults()); + + // Now we update the USED_OUTBOUND_DATE and the RESULT_URL in the table: + request.setUsedOutboundDate(nextDateToTry); + request.setResultUrlBusiness(businessClassToken.orElse("")); + request.setResultUrlPremiumEconomy(primeEconomyClassToken.orElse("")); + + } else { + // We cannot try the next day (too many days attempted) + // Nothing found in Skyscanner, so update the entity accordingly + request.setSearchCeased(true); + // Make sure that selected itinerary data is NULL + request.setSelectedItineraryId(null); + request.setSelectedItineraryPrice(null); + // Indicate that Skyscanner did perform the full query + request.setInfoComplete(true); + request.setRetrievedAt(LocalDateTime.now()); + // Save as an example of empty responses from Skyscanner + request.setRawResponseBusiness(rawJsonResponseBusi); + request.setRawResponsePremiumEconomy(rawJsonResponsePrem); + } + // Update entity after any of the 2 options above + ratesTUDRepository.save(request); + + } else { + // Here the responses HAVE itineraries, so we call the method to select the itinerary of reference + // and store it in SEL_ITINERARY_ID, SEL_ITINERARY_PRICE + request.setRetrievedAt(LocalDateTime.now()); + request.setRawResponseBusiness(rawJsonResponseBusi); + request.setRawResponsePremiumEconomy(rawJsonResponsePrem); + + // Use pricesResponseBusi and pricesResponsePrem + List allItineraries = new ArrayList<>(); + allItineraries.addAll(pricesResponseBusi.getItineraries()); + allItineraries.addAll(pricesResponsePrem.getItineraries()); + + Optional itinOfReference = skyScannerHelper.getItineraryOfReference(allItineraries); + if (itinOfReference.isPresent()) { + request.setSelectedItineraryPrice(itinOfReference.get().getPrice()); + request.setSelectedItineraryId(itinOfReference.get().getId()); + } + request.setInfoComplete(true); + + // Update the entity + ratesTUDRepository.save(request); + } + + } catch (JsonProcessingException jsonExc) { + // Should never happen: We have a 2XX response (OK) but the result is not parseable. + this.getLogger().error("Unable to parse response from Skyscanner 'Result Service'.", jsonExc); + } + } + + } + + + private Optional doPerformRequest(String cabinClass, String countryMarket, String iataOriginPlace, String iataDestinationPlace, + LocalDate outboundDate, Integer adults) { + URI uri = URI.create(skyscannerWSConfiguration.getCreateUrl()); + CreateRequest query = getCreateRequestBody(cabinClass, countryMarket, CURRENCY, LOCALE, + iataOriginPlace, iataDestinationPlace, outboundDate, adults); + try { + HttpHeaders headers = new HttpHeaders(); + headers.set("x-api-key", skyscannerWSConfiguration.getApiKey().getValue()); + HttpEntity httpEntity = new HttpEntity<>(query, headers); + ResponseEntity result = restTemplate.postForEntity(uri, httpEntity, CreateResponse.class); + return Optional.of(Objects.requireNonNull(result.getBody()).getSessionToken()); + } catch (HttpClientErrorException httpExc) { + getLogger().error(httpExc.getMessage()); + return Optional.empty(); + } + } + + public String getSearchResult(String token) { + getLogger().info("Polling in SkyScanner the token {}", token); + URI uri = URI.create(String.format(skyscannerWSConfiguration.getPollUrl(), token)); + try { + HttpHeaders headers = new HttpHeaders(); + headers.set("x-api-key", skyscannerWSConfiguration.getApiKey().getValue()); + HttpEntity httpEntity = new HttpEntity<>(null, headers); + ResponseEntity result = restTemplate.postForEntity(uri, httpEntity, String.class); + getLogger().info("Result: {}", result.getBody()); + return result.getBody(); + } catch (HttpClientErrorException httpExc) { + getLogger().error(httpExc.getMessage()); + return null; + } + } + /** + * Utility method to build an exception that causes red Ananke error message with explanation. + * @param httpExc + * @param useMessage + * @return + */ + private ValidationRuntimeException createViolationException(HttpClientErrorException httpExc, String useMessage) { + String message = useMessage != null ? useMessage : extractErrorMessage(httpExc); + ValidationRuntimeException exception = new ValidationRuntimeException(); + exception.addItem(ERightsExceptionCode.ER025, message); + return exception; + } + + private String extractErrorMessage(HttpClientErrorException httpExc) { + if (HttpStatus.BAD_REQUEST.equals(httpExc.getStatusCode())) { + // Dirty trick to extract message: + String message = httpExc.getMessage(); + if (message == null) { + return ERightsExceptionCode.ER025.getDescription(); + } + String[] parts = message.split("\""); + Optional longest = Arrays.asList(parts).stream().sorted((a,b) -> b.length() - a.length()).findFirst(); + if (longest.isPresent()) { + return longest.get().replace("-", " "); + } else { + return message; + } + } + // Other cases, just the message: + return httpExc.getMessage(); + } + + /** + * Decide if we should keep on trying more dates. + * This is used after the current URL in the table (obtained with the current value of USED_OUTBOUND_DATE) + * has failed to provide flights, so if the difference is already equal to the MAX allowed, we cannot continue. + * + * + * @param request + * @return + */ + private boolean moreAttemptsAfterCurrentUrlFailed(RatesTUDJpaEntity request) { + + LocalDate lastFailedDate = request.getUsedOutboundDate(); + LocalDate userRequestedDate = request.getRequestedOutboundDate(); + // We are not inside the searching interval + return lastFailedDate != null && userRequestedDate != null + // If the current difference is equal to MAX_ALLOWED_OFFSET_DAYS, it means that we have tried + // with +MAX_ALLOWED_OFFSET_DAYS and it failed. + && ChronoUnit.DAYS.between(userRequestedDate, lastFailedDate) < MAX_ALLOWED_OFFSET_DAYS; + } + + private String toString(LocalDate date) { + return dateFormatter.format(date); + } + + private HttpEntity getCreateSessionBody(String cabinClass, String country, String currency, String locale, String locationSchema, + String originPlace, String destinationPlace, LocalDate outboundDate, Integer adults, + Integer children, Integer infants) { + + MultiValueMap body = new LinkedMultiValueMap<>(); + body.add("cabinclass", cabinClass); + body.add("country", country); + body.add("currency", currency); + body.add("locale", locale); + body.add("locationSchema", locationSchema); + body.add("originplace", originPlace); + body.add("destinationplace", destinationPlace); + body.add("outbounddate", toString(outboundDate)); + body.add("adults", String.valueOf(adults)); + body.add("children", String.valueOf(children)); + body.add("infants", String.valueOf(infants)); + // apikey from configuration + body.add(APIKEY, skyscannerWSConfiguration.getApiKey().getValue()); + + // Headers + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + + return new HttpEntity<>(body, headers); + } + + public List findCompleteRequests() { + return ratesTUDRepository.findCompleteRequests(); + } + + public LocalDate getFlightDate(MovementFileModel movementFileModel) { + if(movementFileModel.getMovementContext().getName().equalsIgnoreCase("EOC")) + return movementFileModel.getEstimatedEndDate(); + return movementFileModel.getStartDate(); + } + + @Override + public String iataCodeFromCityCode(String cityCode) { + + String iata = iataAirportJpaRepository.getIataCode(cityCode); + return iata; + } + public void save(RatesTUDJpaEntity entity) { + ratesTUDRepository.save(entity); + } + + private CreateRequest getCreateRequestBody(String cabinClass, String country, String currency, String locale, + String originPlace, String destinationPlace, LocalDate outboundDate, Integer adults) { + QueryLeg queryLeg = new QueryLeg(new OriginPlaceId(originPlace), new DestinationPlaceId(destinationPlace), new Date(outboundDate.getYear(), outboundDate.getMonth().getValue(), outboundDate.getDayOfMonth())); + return new CreateRequest(new Query(country, locale, currency, adults, cabinClass, Collections.singletonList(queryLeg))); + } + +} + +class CreateRequest { + + @JsonProperty("query") + private Query query; + + public CreateRequest(Query query) { + this.query = query; + } + + public Query getQuery() { + return query; + } +} + +class Query { + + @JsonProperty("market") + private String market; + @JsonProperty("locale") + private String locale; + @JsonProperty("currency") + private String currency; + @JsonProperty("adults") + private Integer adults; + @JsonProperty("cabin_class") + private String cabinClass; + @JsonProperty("query_legs") + private List queryLegs; + + public Query(String market, String locale, String currency, Integer adults, String cabinClass, List queryLegs) { + this.market = market; + this.locale = locale; + this.currency = currency; + this.adults = adults; + this.cabinClass = cabinClass; + this.queryLegs = queryLegs; + } + + public String getMarket() { + return market; + } + + public String getLocale() { + return locale; + } + + public String getCurrency() { + return currency; + } + + public Integer getAdults() { + return adults; + } + + public String getCabinClass() { + return cabinClass; + } + + public List getQueryLegs() { + return queryLegs; + } +} + +class QueryLeg { + @JsonProperty("origin_place_id") + private OriginPlaceId originPlaceId; + @JsonProperty("destination_place_id") + private DestinationPlaceId destinationPlaceId; + @JsonProperty("date") + private Date date; + + public QueryLeg(OriginPlaceId originPlaceId, DestinationPlaceId destinationPlaceId, Date date) { + this.originPlaceId = originPlaceId; + this.destinationPlaceId = destinationPlaceId; + this.date = date; + } + + public OriginPlaceId getOriginPlaceId() { + return originPlaceId; + } + + public DestinationPlaceId getDestinationPlaceId() { + return destinationPlaceId; + } + + public Date getDate() { + return date; + } +} + +class OriginPlaceId { + @JsonProperty("iata") + private String iata; + + public OriginPlaceId(String iata) { + this.iata = iata; + } + + public String getIata() { + return iata; + } +} + +class DestinationPlaceId { + @JsonProperty("iata") + private String iata; + + public DestinationPlaceId(String iata) { + this.iata = iata; + } + + public String getIata() { + return iata; + } +} + +class Date { + @JsonProperty("year") + private Integer year; + @JsonProperty("month") + private Integer month; + @JsonProperty("day") + private Integer day; + + public Date(Integer year, Integer month, Integer day) { + this.year = year; + this.month = month; + this.day = day; + } + + public Integer getYear() { + return year; + } + + public Integer getMonth() { + return month; + } + + public Integer getDay() { + return day; + } +} + +class CreateResponse { + + private String sessionToken; + + public String getSessionToken() { + return sessionToken; + } + + public void setSessionToken(String sessionToken) { + this.sessionToken = sessionToken; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/tud/skyscanner/FlightsWSService.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/tud/skyscanner/FlightsWSService.java new file mode 100644 index 0000000..a8c5373 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/tud/skyscanner/FlightsWSService.java @@ -0,0 +1,22 @@ +package eu.europa.eeas.erights.common.service.provider.tud.skyscanner; + +import java.time.LocalDate; + + +public interface FlightsWSService { + + void registerItineraryRequest(String countryMarket, + String iataOriginPlace, String iataDestinationPlace, + Long movementFileId, String entitlementMaxsCatCode, + Long entitlementMaxsId, Boolean entitlementSpecific, + LocalDate outboundDate, + Integer adults); + + /** + * Update the incomplete flight info requests. They are flagged in the DB as incomplete. + */ + void updateIncompleteItineraryRequests(); + + String iataCodeFromCityCode(String cityCode); + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/tud/skyscanner/SkyScannerHelper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/tud/skyscanner/SkyScannerHelper.java new file mode 100644 index 0000000..3683cf2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/service/provider/tud/skyscanner/SkyScannerHelper.java @@ -0,0 +1,274 @@ +package eu.europa.eeas.erights.common.service.provider.tud.skyscanner; + +import java.math.BigDecimal; +import java.math.MathContext; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.OptionalDouble; +import java.util.stream.Collectors; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import eu.europa.eeas.erights.common.service.data.provider.AppParameterJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.AppParameterModel; +import eu.europa.eeas.erights.common.service.model.ws.skyscanner.FlightsLivePricesResponse; +import eu.europa.eeas.erights.common.service.model.ws.skyscanner.Itinerary; +import eu.europa.eeas.erights.common.tools.app.AppParamType; + +@Component +public class SkyScannerHelper { + + private final Logger logger = LoggerFactory.getLogger(getClass()); + + public static final String FIELD_STATUS = "status"; + public static final String FIELD_ITINERARIES = "itineraries"; + public static final String FIELD_ITINERARY_ID = "OutboundLegId"; + public static final String FIELD_PRICING_OPTIONS = "pricingOptions"; + public static final String FIELD_PRICE = "price"; + public static final String FIELD_DURATION = "durationInMinutes"; + public static final String FIELD_LEGS = "legs"; + public static final String FIELD_LEG_ID = "Id"; + + public static final String VALUE_UPDATES_COMPLETE = "RESULT_STATUS_COMPLETE"; + public static final String RESULT_STATUS_FAILED = "RESULT_STATUS_FAILED"; + + // 10 hours + public static final double ITINERARY_LENGTH_THRESHOLD_MINUTES = 10d * 60d; + // +1h or +2 h + public static final double SHORT_ITINERARY_TOLERANCE_MINUTES = 60d; + public static final double LONG_ITINERARY_TOLERANCE_MINUTES = 120d; + + // =============== Params for the formula + public static final String PARAM_NAME_PRICE_FORMULA_PCT_BELOW_ITINERARY_OF_REFERENCE = "PRICE_FORMULA_PCT_BELOW_ITINERARY_OF_REFERENCE"; + public static final String PARAM_NAME_PRICE_FORMULA_THRESHOLD_FASTEST_FRACTION = "PRICE_FORMULA_THRESHOLD_FASTEST_FRACTION"; + public static final String PARAM_NAME_PRICE_FORMULA_THRESHOLD_ADDITIONAL_MINUTES = "PRICE_FORMULA_THRESHOLD_ADDITIONAL_MINUTES"; + public static final String PARAM_NAME_PRICE_FORMULA_MAXIMUM_EUR = "PRICE_FORMULA_MAXIMUM_EUR"; + + public static final double DEFAULT_PRICE_FORMULA_PCT_BELOW_ITINERARY_OF_REFERENCE = 80d; + public static final double DEFAULT_PRICE_FORMULA_THRESHOLD_FASTEST_FRACTION = 5.5d; + // 0.4 hours = 24 minutes + public static final double DEFAULT_PRICE_FORMULA_THRESHOLD_ADDITIONAL_MINUTES = 24d; + + public static final double DEFAULT_PRICE_FORMULA_MAXIMUM_EUR = 6300d; + + public static final String CAPPED_ID = "CAPPED_PRICE_ITINERARY_ID"; + // =============== Params for the formula + + + + @Autowired + private AppParameterJpaServiceProvider appParameterService; + + private ObjectMapper objMapper; + + + public FlightsLivePricesResponse parseResponse(String skyscannerJson) throws JsonProcessingException { + + FlightsLivePricesResponse response = new FlightsLivePricesResponse(); + + Map rawMap = getMapper().readValue(skyscannerJson, Map.class); + String status = (String) rawMap.get(FIELD_STATUS); + response.setStatus(status); + + if (!VALUE_UPDATES_COMPLETE.equals(status)) { + // Not complete, dont continue parsing: + return response; + } + + // Response is complete: Gather relevant data + Map content = (Map) rawMap.get("content"); + Map results = (Map) content.get("results"); + Map rawItineraries = (Map) results.get(FIELD_ITINERARIES); + List itineraries = parse(rawItineraries); + if (itineraries.isEmpty()) { + response.setItineraries(itineraries); + return response; + } + + Map rawLegs = (Map) results.get(FIELD_LEGS); + itineraries.forEach(itinerary -> fillDuration(itinerary, rawLegs)); + + // Avoid itineraries without price or ID or duration: + itineraries = itineraries.stream().filter(item -> + (item.getDurationMinutes() != null && item.getId() != null && item.getPrice() != null)) + .collect(Collectors.toList()); + response.setItineraries(itineraries); + + return response; + } + + private void fillDuration(Itinerary itinerary, Map rawLegs) { + Integer minimumDuration = Integer.MAX_VALUE; + for (Object entry : rawLegs.entrySet()) { + Map.Entry rawLeg = (Map.Entry) entry; + String id = (String)rawLeg.getKey(); + if( itinerary.getId().equals(id)) { + Map leg = (Map) rawLeg.getValue(); + Integer duration = (Integer) leg.get(FIELD_DURATION); + minimumDuration = Integer.min(minimumDuration, duration); + } + } + itinerary.setDurationMinutes(minimumDuration.doubleValue()); + } + + private List parse(Map rawItineraries) { + + List itineraries = new ArrayList<>(); + for (Object entry : rawItineraries.entrySet()) { + Map.Entry rawItinerary = (Map.Entry) entry; + Itinerary itinerary = new Itinerary(); + itinerary.setId((String)rawItinerary.getKey()); + Map precings = (Map)rawItinerary.getValue(); + Double minPrice = getMinPrice((List) precings.get(FIELD_PRICING_OPTIONS)); + itinerary.setPrice(minPrice); + // Accumulate + itineraries.add(itinerary); + } + return itineraries; + } + + + private Double getMinPrice(List list) { + + BigDecimal minimountAmount = new BigDecimal("1000000000"); + for (Map prices: list) { + Map price = (Map) prices.get("price"); + String stringAmount = (String) price.get("amount"); + if(stringAmount != null && !stringAmount.isEmpty()) { + Integer amount = Integer.valueOf((String) price.get("amount")); + BigDecimal amountInt = new BigDecimal(String.valueOf(amount)); + BigDecimal amountDecimal = amountInt.divide(new BigDecimal("1000")); + minimountAmount = amountDecimal.compareTo(amountDecimal) <= 0 ? amountDecimal : minimountAmount; + } + } + return minimountAmount.doubleValue(); + } + + + private ObjectMapper getMapper() { + if (objMapper == null) { + objMapper = new ObjectMapper(); + } + return objMapper; + } + + public Optional getItineraryOfReference(List itineraries) { + + Optional provisional = getProvisionalItineraryOfReference(itineraries); + if (!provisional.isPresent()) { + return Optional.empty(); + } + // There is a provisional itinerary. Check if > than max price + double paramMaxPrice = this.getParameterOrDefault(PARAM_NAME_PRICE_FORMULA_MAXIMUM_EUR, DEFAULT_PRICE_FORMULA_MAXIMUM_EUR); + + Itinerary itinerary = provisional.get(); + // A negative 'DEFAULT_PRICE_FORMULA_MAXIMUM_EUR' disables the limit + if (paramMaxPrice >= 0 && itinerary.getPrice().doubleValue() >= paramMaxPrice) { + // Too expensive, return capped + Itinerary cappedIti = new Itinerary(); + cappedIti.setId(CAPPED_ID); + cappedIti.setPrice(paramMaxPrice); + return Optional.of(cappedIti); + } else { + // Itinerary from Skyscanner is ok + return Optional.of(itinerary); + } + + } + + + private Optional getProvisionalItineraryOfReference(List itineraries) { + + if (itineraries.isEmpty()) { + return Optional.empty(); + } + + if (itineraries.size() == 1) { + return Optional.of(itineraries.get(0)); + } + + double paramPctBelow = this.getParameterOrDefault( + PARAM_NAME_PRICE_FORMULA_PCT_BELOW_ITINERARY_OF_REFERENCE, + DEFAULT_PRICE_FORMULA_PCT_BELOW_ITINERARY_OF_REFERENCE); + double paramFastestFraction = this.getParameterOrDefault( + PARAM_NAME_PRICE_FORMULA_THRESHOLD_FASTEST_FRACTION, + DEFAULT_PRICE_FORMULA_THRESHOLD_FASTEST_FRACTION); + double paramAdditionalMinutes = this.getParameterOrDefault( + PARAM_NAME_PRICE_FORMULA_THRESHOLD_ADDITIONAL_MINUTES, + DEFAULT_PRICE_FORMULA_THRESHOLD_ADDITIONAL_MINUTES); + + + // Get fastest + Itinerary fastestItinerary = itineraries.stream() + .sorted((i1, i2) -> (i1.getDurationMinutes().compareTo(i2.getDurationMinutes()))) + .findFirst().get(); + + // In Minutes + double fastestDuration = fastestItinerary.getDurationMinutes(); + double maxDurationAllowed = fastestDuration + (fastestDuration / paramFastestFraction) + paramAdditionalMinutes; + + // Filter by allowed duration + List allowedList = itineraries.stream() + .filter(item -> item.getDurationMinutes() <= maxDurationAllowed).collect(Collectors.toList()); + + // Finally apply rule of 80% + + BigDecimal percent = BigDecimal.valueOf(paramPctBelow).divide(BigDecimal.valueOf(100), new MathContext(2)); + BigDecimal numberOfItineraries = BigDecimal.valueOf(allowedList.size()).multiply(percent); + + List sortedList = allowedList.stream().sorted((i1, i2)-> i1.getPrice().compareTo(i2.getPrice())) + .collect(Collectors.toList()); + + if (logger.isDebugEnabled()) { + printPrices(sortedList); + } + + List limitedList = sortedList.stream() + .limit(numberOfItineraries.setScale(0, RoundingMode.UP).intValue()) + .collect(Collectors.toList()); + // Return last element, which is the reference itinerary + return Optional.of(limitedList.get(limitedList.size() - 1)); + } + + private void printPrices(List list) { + logger.debug("========= START List of Itineraries ==========="); + list.forEach(iti -> { + logger.debug(String.format("Duration: %6.0f ; Price: %12.2f EUR ; ID: %s", iti.getDurationMinutes(), iti.getPrice(), iti.getId())); + }); + logger.debug("========= END List of Itineraries ==========="); + } + + private double getParameterOrDefault(String key, double defVal) { + + if (appParameterService == null) { + return defVal; + } + + List list = appParameterService.getAppParametersByTypeAndKey(AppParamType.TUD_RATES_WS, key); + if (list.isEmpty()) { + return defVal; + } + try { + return Double.parseDouble( list.get(0).getValue() ); + } catch (NumberFormatException exc) { + return defVal; + } + } + + + + + + + + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/Constants.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/Constants.java new file mode 100644 index 0000000..71908fb --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/Constants.java @@ -0,0 +1,18 @@ +package eu.europa.eeas.erights.common.tools; + +/** + * Utility class for constants. + * + * @author idominju + * + */ +public class Constants { + + private Constants() {} + + public static final String SPACE = " "; + public static final String QUESTION_MARK = "?"; + public static final String RBRACKET_OPEN = "("; + public static final String RBRACKET_CLOSE = ")"; + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/allowances/AllowancePage.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/allowances/AllowancePage.java new file mode 100644 index 0000000..24f5dfd --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/allowances/AllowancePage.java @@ -0,0 +1,24 @@ +package eu.europa.eeas.erights.common.tools.allowances; + +import eu.europa.eeas.erights.common.service.model.VAllowanceModel; + +import java.util.List; + +public class AllowancePage { + + private List data; + private long total; + + public AllowancePage(List data, long total) { + this.data = data; + this.total = total; + } + + public List getData() { + return data; + } + + public long getTotal() { + return total; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/allowances/PostingAllowanceReqType.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/allowances/PostingAllowanceReqType.java new file mode 100644 index 0000000..134934f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/allowances/PostingAllowanceReqType.java @@ -0,0 +1,7 @@ +package eu.europa.eeas.erights.common.tools.allowances; + +public enum PostingAllowanceReqType { + INITIAL, + REGULARIZATION, + STORAGE +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/allowances/PostingAllowanceType.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/allowances/PostingAllowanceType.java new file mode 100644 index 0000000..21e41c0 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/allowances/PostingAllowanceType.java @@ -0,0 +1,5 @@ +package eu.europa.eeas.erights.common.tools.allowances; + +public enum PostingAllowanceType { + TRAVEL, STORAGE, ACCOMMODATION, REST_LEAVE +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/allowances/TravelAllowanceRoute.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/allowances/TravelAllowanceRoute.java new file mode 100644 index 0000000..6993552 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/allowances/TravelAllowanceRoute.java @@ -0,0 +1,6 @@ +package eu.europa.eeas.erights.common.tools.allowances; + +public enum TravelAllowanceRoute { + OUTGOING, + RETURN +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/app/AppParamType.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/app/AppParamType.java new file mode 100644 index 0000000..d4a64a1 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/app/AppParamType.java @@ -0,0 +1,10 @@ +package eu.europa.eeas.erights.common.tools.app; + +public enum AppParamType { + ADVANCE_REMOVAL, + MAILBOX, + ABAC, + TUD_RATES_WS, + POSTING_ALLOWANCES, + SUMMA +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/entitlements/EntitlementMaxCatCode.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/entitlements/EntitlementMaxCatCode.java new file mode 100644 index 0000000..8bf877d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/entitlements/EntitlementMaxCatCode.java @@ -0,0 +1,15 @@ +package eu.europa.eeas.erights.common.tools.entitlements; + +public enum EntitlementMaxCatCode { + TUD_STAFF_MEMBER, + TUD_DEPENDENT, + AIRFREIGHT, + CAR, + STORAGE, + EIS, + EFS, + INS, + RES, + SURFACE + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/entitlements/EntitlementTypeCatCode.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/entitlements/EntitlementTypeCatCode.java new file mode 100644 index 0000000..9b2e1df --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/entitlements/EntitlementTypeCatCode.java @@ -0,0 +1,15 @@ +package eu.europa.eeas.erights.common.tools.entitlements; + +public enum EntitlementTypeCatCode { + REM, + EIS, + EFS, + TUD, + INS, + RES, + // Others: Not related to the movement type + WEIGHTING_FACTOR, + REST_LEAVE, + ACCOMMODATION, + ANNUAL_TRAVEL +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/entitlements/EntitlementTypeStatus.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/entitlements/EntitlementTypeStatus.java new file mode 100644 index 0000000..8284d97 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/entitlements/EntitlementTypeStatus.java @@ -0,0 +1,6 @@ +package eu.europa.eeas.erights.common.tools.entitlements; + +public enum EntitlementTypeStatus { + ACTIVE, + DISABLED +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/entitlements/EntitlementsCalcHelper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/entitlements/EntitlementsCalcHelper.java new file mode 100644 index 0000000..a662b5b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/entitlements/EntitlementsCalcHelper.java @@ -0,0 +1,66 @@ +package eu.europa.eeas.erights.common.tools.entitlements; + +import eu.europa.eeas.erights.common.service.model.MovementFileModel; + +import java.time.LocalDate; +import java.time.Month; + +public final class EntitlementsCalcHelper { + + private EntitlementsCalcHelper() { + } + + /** + * based on the specified date, finds the suggested date interval. + * interval is [1st May 202X - 30rd April 202X+1] + */ + + + private static LocalDate getStartDateInterval(LocalDate startDateMF) { + if (startDateMF == null) { + return null; + } + + int year = startDateMF.getYear(); + LocalDate startDateInterval = LocalDate.of(year, Month.MAY, 1); + + if (startDateMF.isBefore(startDateInterval)) { + return LocalDate.of(year - 1, Month.MAY, 1); + } else { + return startDateInterval; + } + } + + + public static LocalDate getStartInterval(MovementFileModel movementFile) { + LocalDate startInterval = null; + + if (movementFile.getStartDate() != null) { + startInterval = getStartDateInterval(movementFile.getStartDate()); + } else if (movementFile.getEstimatedEndDate() != null) { + startInterval = getStartDateInterval(movementFile.getEstimatedEndDate()); + } + + return startInterval; + } + + public static LocalDate getStartIntervalTud(MovementFileModel movementFile) { + LocalDate startInterval = null; + + if (movementFile.getStartDate() != null) { + startInterval = getStartIntervalTud(movementFile.getStartDate()); + } else if (movementFile.getEstimatedEndDate() != null) { + startInterval = getStartIntervalTud(movementFile.getEstimatedEndDate()); + } + + return startInterval; + } + + public static LocalDate getStartInterval(int year) { + return LocalDate.of(year - 1, Month.MAY, 1); + } + + public static LocalDate getStartIntervalTud(LocalDate startDate) { + return LocalDate.of(startDate.getYear(), startDate.getMonth(), 1); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/entitlements/FlatRateDuplicator.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/entitlements/FlatRateDuplicator.java new file mode 100644 index 0000000..4905540 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/entitlements/FlatRateDuplicator.java @@ -0,0 +1,6 @@ +package eu.europa.eeas.erights.common.tools.entitlements; + +public enum FlatRateDuplicator { + SIMPLE, + DOUBLE +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/job/JobFamilyPostingCode.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/job/JobFamilyPostingCode.java new file mode 100644 index 0000000..11141a4 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/job/JobFamilyPostingCode.java @@ -0,0 +1,7 @@ +package eu.europa.eeas.erights.common.tools.job; + +public enum JobFamilyPostingCode { + NON_FAMILY, + FAMILY + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/math/BigFraction.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/math/BigFraction.java new file mode 100644 index 0000000..54456e0 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/math/BigFraction.java @@ -0,0 +1,604 @@ +package eu.europa.eeas.erights.common.tools.math; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.math.MathContext; +import java.math.RoundingMode; + +/** + * Arbitrary-precision fractions, utilizing BigIntegers for numerator and + * denominator. Fraction is always kept in lowest terms. Fraction is + * immutable, and guaranteed not to have a null numerator or denominator. + * Denominator will always be positive (so sign is carried by numerator, + * and a zero-denominator is impossible). + */ +public final class BigFraction extends Number implements Comparable { + + public final static BigFraction ZERO = new BigFraction(BigInteger.ZERO, BigInteger.ONE, true); + + public final static BigFraction ONE = new BigFraction(BigInteger.ONE, BigInteger.ONE, true); + + private static final long serialVersionUID = 1L; //because Number is Serializable + + private final BigInteger numerator; + + private final BigInteger denominator; + + /** + * Constructs a BigFraction with given numerator and denominator. Fraction + * will be reduced to lowest terms. If fraction is negative, negative sign will + * be carried on numerator, regardless of how the values were passed in. + * @param numerator a description + * @param denominator description + */ + public BigFraction(BigInteger numerator, BigInteger denominator) { + if (numerator == null) + throw new IllegalArgumentException("Numerator is null"); + if (denominator == null) + throw new IllegalArgumentException("Denominator is null"); + if (denominator.equals(BigInteger.ZERO)) + throw new ArithmeticException("Divide by zero."); + + //only numerator should be negative. + if (denominator.signum() < 0) { + numerator = numerator.negate(); + denominator = denominator.negate(); + } + + //create a reduced fraction + BigInteger gcd = numerator.gcd(denominator); + this.numerator = numerator.divide(gcd); + this.denominator = denominator.divide(gcd); + } + + /** + * Constructs a BigFraction from a whole number. + * @param numerator a + */ + public BigFraction(BigInteger numerator) { + this(numerator, BigInteger.ONE, true); + } + + public BigFraction(long numerator, long denominator) { + this(BigInteger.valueOf(numerator), BigInteger.valueOf(denominator)); + } + + public BigFraction(long numerator) { + this(BigInteger.valueOf(numerator), BigInteger.ONE, true); + } + + /** + * Constructs a BigFraction from a floating-point number. + * + * Warning: round-off error in IEEE floating point numbers can result + * in answers that are unexpected. For example, + * System.out.println(new BigFraction(1.1)) + * will print: + * 2476979795053773/2251799813685248 + * + * This is because 1.1 cannot be expressed exactly in binary form. The + * given fraction is exactly equal to the internal representation of + * the double-precision floating-point number. (Which, for 1.1, is: + * (-1)^0 * 2^0 * (1 + 0x199999999999aL / 0x10000000000000L).) + * + * NOTE: In many cases, BigFraction(Double.toString(d)) may give a result + * closer to what the user expects. + * @param d f + */ + public BigFraction(double d) { + if (Double.isInfinite(d)) + throw new IllegalArgumentException("double val is infinite"); + if (Double.isNaN(d)) + throw new IllegalArgumentException("double val is NaN"); + + //special case - math below won't work right for 0.0 or -0.0 + if (d == 0) { + numerator = BigInteger.ZERO; + denominator = BigInteger.ONE; + return; + } + + final long bits = Double.doubleToLongBits(d); + final int sign = (int) (bits >> 63) & 0x1; + final int exponent = ((int) (bits >> 52) & 0x7ff) - 0x3ff; + final long mantissa = bits & 0xfffffffffffffL; + + //number is (-1)^sign * 2^(exponent) * 1.mantissa + BigInteger tmpNumerator = BigInteger.valueOf(sign == 0 ? 1 : -1); + BigInteger tmpDenominator = BigInteger.ONE; + + //use shortcut: 2^x == 1 << x. if x is negative, shift the denominator + if (exponent >= 0) + tmpNumerator = tmpNumerator.multiply(BigInteger.ONE.shiftLeft(exponent)); + else + tmpDenominator = tmpDenominator.multiply(BigInteger.ONE.shiftLeft(-exponent)); + + //1.mantissa == 1 + mantissa/2^52 == (2^52 + mantissa)/2^52 + tmpDenominator = tmpDenominator.multiply(BigInteger.valueOf(0x10000000000000L)); + tmpNumerator = tmpNumerator.multiply(BigInteger.valueOf(0x10000000000000L + mantissa)); + + BigInteger gcd = tmpNumerator.gcd(tmpDenominator); + numerator = tmpNumerator.divide(gcd); + denominator = tmpDenominator.divide(gcd); + } + + /** + * Constructs a BigFraction from two floating-point numbers. + * + * Warning: round-off error in IEEE floating point numbers can result + * in answers that are unexpected. See BigFraction(double) for more + * information. + * + * NOTE: In many cases, BigFraction(Double.toString(numerator) + "/" + Double.toString(denominator)) + * may give a result closer to what the user expects. + * @param numerator a + * @param denominator a + */ + + + + public BigFraction(double numerator, double denominator) { + if (denominator == 0) + throw new ArithmeticException("Divide by zero."); + + BigFraction tmp = new BigFraction(numerator).divide(new BigFraction(denominator)); + this.numerator = tmp.numerator; + this.denominator = tmp.denominator; + } + + /** + * @param d descriprion + */ + public BigFraction(BigDecimal d) { + this(d.scale() < 0 ? d.unscaledValue().multiply(BigInteger.TEN.pow(-d.scale())) : d.unscaledValue(), + d.scale() < 0 ? BigInteger.ONE : BigInteger.TEN.pow(d.scale())); + } + + /** + * @param numerator descriprion + * @param denominator descriprion + + */ + public BigFraction(BigDecimal numerator, BigDecimal denominator) { + if (denominator.equals(BigDecimal.ZERO)) + throw new ArithmeticException("Divide by zero."); + + BigFraction tmp = new BigFraction(numerator).divide(new BigFraction(denominator)); + this.numerator = tmp.numerator; + this.denominator = tmp.denominator; + } + + /** + * Constructs a BigFraction from a String. Expected format is numerator/denominator, + * but /denominator part is optional. Either numerator or denominator may be a floating- + * point decimal number, which in the same format as a parameter to the + * BigDecimal(String) constructor. + * + * @param s f + * @throws NumberFormatException if the string cannot be properly parsed. + */ + public BigFraction(String s) { + int slashPos = s.indexOf('/'); + if (slashPos < 0) { + BigFraction res = new BigFraction(new BigDecimal(s)); + this.numerator = res.numerator; + this.denominator = res.denominator; + } else { + BigDecimal num = new BigDecimal(s.substring(0, slashPos)); + BigDecimal den = new BigDecimal(s.substring(slashPos + 1)); + BigFraction res = new BigFraction(num, den); + this.numerator = res.numerator; + this.denominator = res.denominator; + } + } + + /** + * Private constructor, used when you can be certain that the fraction is already in + * lowest terms. No check is done to reduce numerator/denominator. A check is still + * done to maintain a positive denominator. + * + * @param throwaway unused variable, only here to signal to the compiler that this + * constructor should be used. + */ + private BigFraction(BigInteger numerator, BigInteger denominator, boolean throwaway) { + if (denominator.signum() < 0) { + this.numerator = numerator.negate(); + this.denominator = denominator.negate(); + } else { + this.numerator = numerator; + this.denominator = denominator; + } + } + + /** + * * Returns a positive BigFraction, greater than or equal to zero, and less than one. + * @return BIgFraction after calculation + */ + public static BigFraction random() { + return new BigFraction(Math.random()); + } + + /** + * Returns this + f. + * @param f description + * @return BIgFraction after calculation + */ + public BigFraction add(BigFraction f) { + if (f == null) + throw new IllegalArgumentException("Null argument"); + + //n1/d1 + n2/d2 = (n1*d2 + d1*n2)/(d1*d2) + return new BigFraction(numerator.multiply(f.denominator).add(denominator.multiply(f.numerator)), + denominator.multiply(f.denominator)); + } + + /** + * Returns this + b. + * @param b description + * @return BIgFraction after calculation + */ + public BigFraction add(BigInteger b) { + if (b == null) + throw new IllegalArgumentException("Null argument"); + + //n1/d1 + n2 = (n1 + d1*n2)/d1 + return new BigFraction(numerator.add(denominator.multiply(b)), + denominator, true); + } + + /** + * Returns this + n. + * @param n description + * @return BIgFraction after calculation + */ + public BigFraction add(long n) { + return add(BigInteger.valueOf(n)); + } + + /** + * Returns this - f. + * @param f description + * @return BIgFraction after calculation + */ + public BigFraction subtract(BigFraction f) { + if (f == null) + throw new IllegalArgumentException("Null argument"); + + return new BigFraction(numerator.multiply(f.denominator).subtract(denominator.multiply(f.numerator)), + denominator.multiply(f.denominator)); + } + + /** + * Returns this - b. + * @param b for calculation + * @return BIgFraction after calculation + */ + public BigFraction subtract(BigInteger b) { + if (b == null) + throw new IllegalArgumentException("Null argument"); + + return new BigFraction(numerator.subtract(denominator.multiply(b)), + denominator, true); + } + + /** + * Returns this - n. + * @param n for calculation + * @return BIgFraction after calculation + */ + public BigFraction subtract(long n) { + return subtract(BigInteger.valueOf(n)); + } + + /** + * Returns this * f. + * @param f for calculation + * @return BIgFraction after calculation + */ + public BigFraction multiply(BigFraction f) { + if (f == null) + throw new IllegalArgumentException("Null argument"); + + return new BigFraction(numerator.multiply(f.numerator), denominator.multiply(f.denominator)); + } + + /** + * Returns this * b. + * @param b for calculation + * @return BIgFraction after calculation + */ + public BigFraction multiply(BigInteger b) { + if (b == null) + throw new IllegalArgumentException("Null argument"); + + return new BigFraction(numerator.multiply(b), denominator); + } + + /** + * Returns this * n. + * @param n for calculation + * @return BIgFraction after calculation + */ + public BigFraction multiply(long n) { + return multiply(BigInteger.valueOf(n)); + } + + /** + * Returns this / f. + * @param f for calculation + * @return BIgFraction after calculation + */ + public BigFraction divide(BigFraction f) { + if (f == null) + throw new IllegalArgumentException("Null argument"); + + return new BigFraction(numerator.multiply(f.denominator), denominator.multiply(f.numerator)); + } + + /** + * Returns this / b. + * @param b for calculation + * @return BIgFraction after calculation + */ + public BigFraction divide(BigInteger b) { + if (b == null) + throw new IllegalArgumentException("Null argument"); + + if (b.equals(BigInteger.ZERO)) + throw new ArithmeticException("Divide by zero"); + + return new BigFraction(numerator, denominator.multiply(b)); + } + + /** + * Returns this / n. + * @param n for calculation + * @return BIgFraction after calculation + */ + public BigFraction divide(long n) { + return divide(BigInteger.valueOf(n)); + } + + /** + * Returns this^exponent. + * @param exponent for calculation + * @return BIgFraction after calculation + */ + public BigFraction pow(int exponent) { + if (exponent == 0) + return BigFraction.ONE; + else if (exponent == 1) + return this; + else if (exponent < 0) + return new BigFraction(denominator.pow(-exponent), numerator.pow(-exponent), true); + else + return new BigFraction(numerator.pow(exponent), denominator.pow(exponent), true); + } + + /** + * Returns the complement of this fraction, which is equal to 1 - this. + * Useful for probabilities/statistics. + + * @return BIgFraction after calculation + */ + public BigFraction complement() { + return new BigFraction(denominator.subtract(numerator), denominator, true); + } + + /** + * Returns -this. + + * @return BIgFraction after calculation + */ + public BigFraction negate() { + return new BigFraction(numerator.negate(), denominator, true); + } + + /** + * Returns -1, 0, or 1, representing the sign of this fraction. + * @return BIgFraction after calculation + */ + public int signum() { + return numerator.signum(); + } + + /** + * Returns the absolute value of this. + * @return BIgFraction after calculation + */ + public BigFraction abs() { + return (signum() < 0 ? negate() : this); + } + + /** + * Returns a string representation of this, in the form + * numerator/denominator. + */ + public String toString() { + return numerator.toString() + "/" + denominator.toString(); + } + + /** + * Returns if this object is equal to another object. + * @return BIgFraction after calculation + */ + public boolean equals(Object o) { + if (!(o instanceof BigFraction)) + return false; + + BigFraction f = (BigFraction) o; + return numerator.equals(f.numerator) && denominator.equals(f.denominator); + } + + /** + * Returns a hash code for this object. + * @return BIgFraction after calculation + */ + public int hashCode() { + //using the method generated by Eclipse, but streamlined a bit.. + return (31 + numerator.hashCode()) * 31 + denominator.hashCode(); + } + + /** + * Returns a negative, zero, or positive number, indicating if this object + * is less than, equal to, or greater than f, respectively. + * @return BIgFraction after calculation + */ + public int compareTo(BigFraction f) { + if (f == null) + throw new IllegalArgumentException("Null argument"); + + //easy case: this and f have different signs + if (signum() != f.signum()) + return signum() - f.signum(); + + //next easy case: this and f have the same denominator + if (denominator.equals(f.denominator)) + return numerator.compareTo(f.numerator); + + //not an easy case, so first make the denominators equal then compare the numerators + return numerator.multiply(f.denominator).compareTo(denominator.multiply(f.numerator)); + } + + /** + * Returns the smaller of this and f. + * @param f for calculation + * @return BIgFraction after calculation + */ + public BigFraction min(BigFraction f) { + if (f == null) + throw new IllegalArgumentException("Null argument"); + + return (this.compareTo(f) <= 0 ? this : f); + } + + /** + * Returns the maximum of this and f. + * @param f for calculation + * @return BIgFraction after calculation + */ + public BigFraction max(BigFraction f) { + if (f == null) + throw new IllegalArgumentException("Null argument"); + + return (this.compareTo(f) >= 0 ? this : f); + } + + public final BigInteger getNumerator() { + return numerator; + } + + public final BigInteger getDenominator() { + return denominator; + } + + //implementation of Number class. may cause overflow. + public byte byteValue() { + return (byte) Math.max(Byte.MIN_VALUE, Math.min(Byte.MAX_VALUE, longValue())); + } + + public short shortValue() { + return (short) Math.max(Short.MIN_VALUE, Math.min(Short.MAX_VALUE, longValue())); + } + + public int intValue() { + return (int) Math.max(Integer.MIN_VALUE, Math.min(Integer.MAX_VALUE, longValue())); + } + + public long longValue() { + return Math.round(doubleValue()); + } + + public float floatValue() { + return (float) doubleValue(); + } + + public double doubleValue() { + return toBigDecimal(18).doubleValue(); + } + + /** + * Returns a BigDecimal representation of this fraction. If possible, the + * returned value will be exactly equal to the fraction. If not, the BigDecimal + * will have a scale large enough to hold the same number of significant figures + * as both numerator and denominator, or the equivalent of a double-precision + * number, whichever is more. + * @return BIgFraction after calculation + */ + public BigDecimal toBigDecimal() { + //Implementation note: A fraction can be represented exactly in base-10 iff its + //denominator is of the form 2^a * 5^b, where a and b are nonnegative integers. + //(In other words, if there are no prime factors of the denominator except for + //2 and 5, or if the denominator is 1). So to determine if this denominator is + //of this form, continually divide by 2 to get the number of 2's, and then + //continually divide by 5 to get the number of 5's. Afterward, if the denominator + //is 1 then there are no other prime factors. + + //Note: number of 2's is given by the number of trailing 0 bits in the number + int twos = denominator.getLowestSetBit(); + BigInteger tmpDen = denominator.shiftRight(twos); // x / 2^n === x >> n + + final BigInteger FIVE = BigInteger.valueOf(5); + int fives = 0; + BigInteger[] divMod = null; + + //while(tmpDen % 5 == 0) { fives++; tmpDen /= 5; } + while (BigInteger.ZERO.equals((divMod = tmpDen.divideAndRemainder(FIVE))[1])) { + fives++; + tmpDen = divMod[0]; + } + + if (BigInteger.ONE.equals(tmpDen)) { + //This fraction will terminate in base 10, so it can be represented exactly as + //a BigDecimal. We would now like to make the fraction of the form + //unscaled / 10^scale. We know that 2^x * 5^x = 10^x, and our denominator is + //in the form 2^twos * 5^fives. So use max(twos, fives) as the scale, and + //multiply the numerator and deminator by the appropriate number of 2's or 5's + //such that the denominator is of the form 2^scale * 5^scale. (Of course, we + //only have to actually multiply the numerator, since all we need for the + //BigDecimal constructor is the scale. + BigInteger unscaled = numerator; + int scale = Math.max(twos, fives); + + if (twos < fives) + unscaled = unscaled.shiftLeft(fives - twos); //x * 2^n === x << n + else if (fives < twos) + unscaled = unscaled.multiply(FIVE.pow(twos - fives)); + + return new BigDecimal(unscaled, scale); + } + + //else: this number will repeat infinitely in base-10. So try to figure out + //a good number of significant digits. Start with the number of digits required + //to represent the numerator and denominator in base-10, which is given by + //bitLength / log[2](10). (bitLenth is the number of digits in base-2). + final double LG10 = 3.321928094887362; //Precomputed ln(10)/ln(2), a.k.a. log[2](10) + int precision = Math.max(numerator.bitLength(), denominator.bitLength()); + precision = (int) Math.ceil(precision / LG10); + + //If the precision is less than 18 digits, use 18 digits so that the number + //will be at least as accurate as a cast to a double. For example, with + //the fraction 1/3, precision will be 1, giving a result of 0.3. This is + //quite a bit different from what a user would expect. + if (precision < 18) + precision = 18; + + return toBigDecimal(precision); + } + + //-------------------------------------------------------------------------- + // PRIVATE FUNCTIONS + //-------------------------------------------------------------------------- + + /** + * Returns a BigDecimal representation of this fraction, with a given precision. + * + * @param precision the number of significant figures to be used in the result. + * + * @return BIgFraction after calculation + */ + public BigDecimal toBigDecimal(int precision) { + return new BigDecimal(numerator).divide(new BigDecimal(denominator), new MathContext(precision, RoundingMode.HALF_EVEN)); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/notification/NotificationContextValues.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/notification/NotificationContextValues.java new file mode 100644 index 0000000..3564543 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/notification/NotificationContextValues.java @@ -0,0 +1,14 @@ +package eu.europa.eeas.erights.common.tools.notification; + +public enum NotificationContextValues { + FIRST_NAME, + SURNAME, + TITLE, + PER_ID, + MOVEMENT_FILE_ID, + FILE_ID, + YEAR, + START_DATE, + ENVIRONMENT + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/notification/NotificationEmailFromEnv.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/notification/NotificationEmailFromEnv.java new file mode 100644 index 0000000..469f029 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/notification/NotificationEmailFromEnv.java @@ -0,0 +1,9 @@ +package eu.europa.eeas.erights.common.tools.notification; + +/** + * @author ienaccat + */ +public enum NotificationEmailFromEnv { + DELPOSTINGS, + REMOVALS +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/notification/NotificationTemplateCode.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/notification/NotificationTemplateCode.java new file mode 100644 index 0000000..8c20f87 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/notification/NotificationTemplateCode.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.common.tools.notification; + +public enum NotificationTemplateCode { + CREATE, + WITHDRAW, + CONFIRM, + REMINDER_AFTER_CREATE, + REPORT_FAILED_COMMS, + CREATE_REQUEST, + APPROVED_REQUEST, + REJECTED_REQUEST, + PAID_REQUEST, + APPROVED_ADV_REM_REQUEST, + REJECTED_ADV_REM_REQUEST, + CLEARING_REQUEST, + START, + REMINDER, + UPDATE_REQUEST, + SUBMIT +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/notification/NotificationTemplateType.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/notification/NotificationTemplateType.java new file mode 100644 index 0000000..50f2dc5 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/notification/NotificationTemplateType.java @@ -0,0 +1,14 @@ +package eu.europa.eeas.erights.common.tools.notification; + +/** + * @author ienaccat + */ +public enum NotificationTemplateType { + ENTITLEMENTS_AMOUNTS_SET, + EIS_AMOUNTS_SET, + ENTITLEMENTS_REQUEST, + POSTING_ALLOWANCE, + TOP_UP_REQUEST, + INSTALLATION_REQUEST, + RESETTLEMENT_REQUEST +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/p2p/OrderStatusEnum.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/p2p/OrderStatusEnum.java new file mode 100644 index 0000000..76c5fb6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/p2p/OrderStatusEnum.java @@ -0,0 +1,29 @@ +package eu.europa.eeas.erights.common.tools.p2p; + + +import com.fasterxml.jackson.annotation.JsonValue; + +public enum OrderStatusEnum { + ERR("Payment Cancelled or Error"), + INIT("Payment Pending Approval"), + VERIF("Payment Approved"), + EXEC("Payment Under Execution"), + SUCCESS("Payment Executed"), + REJ("Payment Rejected"), + SENT_TO_P2P("Order Just sent to P2p"); + + private final String description; + + OrderStatusEnum(String description) { + this.description = description; + } + + public String getDescription() { + return description; + } + + @JsonValue + public String getCode() { + return name(); // ensures only "ERR" etc. is serialized + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/person/EmailType.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/person/EmailType.java new file mode 100644 index 0000000..a281838 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/person/EmailType.java @@ -0,0 +1,6 @@ +package eu.europa.eeas.erights.common.tools.person; + +public enum EmailType { + PRIV, + PROF +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/removal/RemovalRequestType.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/removal/RemovalRequestType.java new file mode 100644 index 0000000..e910c87 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/removal/RemovalRequestType.java @@ -0,0 +1,9 @@ +package eu.europa.eeas.erights.common.tools.removal; + +public enum RemovalRequestType { + ADVANCE, + CLEARING, + REIMBURSEMENT, + NO_REMOVAL + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/requests/IndemnityHelper.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/requests/IndemnityHelper.java new file mode 100644 index 0000000..4b7abd4 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/requests/IndemnityHelper.java @@ -0,0 +1,75 @@ +package eu.europa.eeas.erights.common.tools.requests; + +import eu.europa.eeas.erights.common.tools.math.BigFraction; + +import java.math.BigDecimal; + +public class IndemnityHelper { + + public static final Long INDM_LONG = 414L; + + public static final Long INSE_LONG = 415L; + + public static final Long INDE_LONG = 416L; + + private static final String INDM_STRING = "INDM"; + + private static final String INSE_STRING = "INSE"; + + private static final String INDE_STRING = "INDE"; + + public static String getIndemnityTypeEnUserFriendly(String indemnityIdType, Long allowancesCount, String unitEn) { + if ((INSE_STRING.equals(indemnityIdType) || INDM_STRING.equals(indemnityIdType)) && isOne(allowancesCount, unitEn)) + return "One month's basic salary"; + if (INDE_STRING.equals(indemnityIdType) && isOne(allowancesCount, unitEn)) + return "Two month's basic salary"; + if ((INSE_STRING.equals(indemnityIdType) || INDM_STRING.equals(indemnityIdType)) && !isOne(allowancesCount, unitEn)) + return getMessageOneMonth(allowancesCount, unitEn); + if (INDE_STRING.equals(indemnityIdType) && !isOne(allowancesCount, unitEn)) + return getMessageTwoMonths(allowancesCount, unitEn); + else + return ""; + } + public static String getIndemnityTypeEnUserFriendly(Long indemnityIdType, Long allowancesCount, String unitEn) { + if ((indemnityIdType.equals(INSE_LONG) || indemnityIdType.equals(INDM_LONG)) && isOne(allowancesCount, unitEn)) + return "One month's basic salary"; + if (indemnityIdType.equals(INDE_LONG) && isOne(allowancesCount, unitEn)) + return "Two month's basic salary"; + if ((indemnityIdType.equals(INSE_LONG) || indemnityIdType.equals(INDM_LONG)) && !isOne(allowancesCount, unitEn)) + return getMessageOneMonth(allowancesCount, unitEn); + if (indemnityIdType.equals(INDE_LONG) && !isOne(allowancesCount, unitEn)) + return getMessageTwoMonths(allowancesCount, unitEn); + else + return ""; + } + + public static boolean isOne(Long allowancesCount, String unitEn) { + return (getFractionValue(unitEn).multiply(allowancesCount)).toBigDecimal().equals(BigDecimal.ONE); + } + + public static BigFraction getFractionValue(String unitEn) { + if ("TIE".equals(unitEn)) { + return new BigFraction(BigDecimal.ONE, new BigDecimal(3)); + } + if ("24th".equals(unitEn)) { + return new BigFraction(BigDecimal.ONE, new BigDecimal(24)); + } + if ("36th".equals(unitEn)) { + return new BigFraction(BigDecimal.ONE, new BigDecimal(36)); + } + return new BigFraction(0); + } + + public static String getMessageOneMonth(Long allowancesCount, String unitEn) { + return "One month's basic salary x " + getFractionValue(unitEn).multiply(allowancesCount) + " " + + "according to the length of your assignment.
    info Please note that this installation allowance " + + "does not take into account the possible extension of your contract.
    "; + } + + public static String getMessageTwoMonths(Long allowancesCount, String unitEn) { + return "Two month's basic salary x " + getFractionValue(unitEn).multiply(allowancesCount) + " " + + "according to the length of your assignment.
    info Please note that this installation allowance " + + "does not take into account the possible extension of your contract.
    "; + } + // todo to remove html +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AbacItemEvent.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AbacItemEvent.java new file mode 100644 index 0000000..6e584bf --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AbacItemEvent.java @@ -0,0 +1,7 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum AbacItemEvent { + REQUEST, + SUCCESS, + FAIL +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AbacItemState.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AbacItemState.java new file mode 100644 index 0000000..b8b4c45 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AbacItemState.java @@ -0,0 +1,8 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum AbacItemState { + NEW, + REQUESTED, + SUCCESS, + FAILED +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AbacRequestEvent.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AbacRequestEvent.java new file mode 100644 index 0000000..6103212 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AbacRequestEvent.java @@ -0,0 +1,10 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum AbacRequestEvent { + REQUEST_INVOICE, + REQUEST_SECOND_INVOICE_VISA, + REQUEST_PAYMENT_REQUEST, + REQUEST_PAYMENT_ORDER, + SUCCESS, + FAIL +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AbacRequestState.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AbacRequestState.java new file mode 100644 index 0000000..8fb8f66 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AbacRequestState.java @@ -0,0 +1,16 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum AbacRequestState { + NEW, + INVOICE_REQUESTED, + INVOICE_CREATED, + INVOICE_SECOND_VISA_REQUESTED, + INVOICE_SECOND_VISA_CREATED, + PAYMENT_REQUEST_REQUESTED, + PAYMENT_REQUEST_CREATED, + PAYMENT_ORDER_REQUESTED, + PAYMENT_ORDER_CREATED, + MANUAL_PAYMENT, + FAILED, + MANUAL_PAYMENT_SUMMA, +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AccommodationDeclarationEvent.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AccommodationDeclarationEvent.java new file mode 100644 index 0000000..bae496a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AccommodationDeclarationEvent.java @@ -0,0 +1,11 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum AccommodationDeclarationEvent { + CREATE, + SUBMIT, + REJECT, + APPROVE, + COMPLETE, + RESET_APPROVAL, + RESUBMIT +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AccommodationDeclarationState.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AccommodationDeclarationState.java new file mode 100644 index 0000000..d06e938 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AccommodationDeclarationState.java @@ -0,0 +1,10 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum AccommodationDeclarationState { + START, + DRAFT, + AWAITING, + APPROVED, + COMPLETED, + REJECTED +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AccommodationPaymentABACState.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AccommodationPaymentABACState.java new file mode 100644 index 0000000..10281b7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AccommodationPaymentABACState.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +import java.util.Arrays; +import java.util.List; + +public enum AccommodationPaymentABACState { + START, + APPROVED, + AWAITING, + DISPUTED, + PENDING3, + PENDING10, + CLO100, + CLOSED, + CLO0, + PAID, + REJECTED, + DRAFT; + + public final static List VALID_END_ABAC_WORKFLOW_STATES = Arrays.asList("CLO100", "CLO0", "PEND3", "PEND10"); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AccommodationPaymentEvent.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AccommodationPaymentEvent.java new file mode 100644 index 0000000..3fc574c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AccommodationPaymentEvent.java @@ -0,0 +1,17 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum AccommodationPaymentEvent { + CREATE, + SUBMIT, + REJECT, + APPROVE, + MARK_PAID_ABAC, + MARK_PAID_FINALISED, + RESET_APPROVAL, + RESET_PAID, + SUBMIT_POP, + REJECT_POP, + APPROVE_POP, + RESUBMIT + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AccommodationPaymentState.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AccommodationPaymentState.java new file mode 100644 index 0000000..af3266d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AccommodationPaymentState.java @@ -0,0 +1,13 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum AccommodationPaymentState { + START, + DRAFT, + AWAITING, + APPROVED, + PAID, + REJECTED, + PENDING_VERIF_POP, + REJECTED_POP, + PAYMENT_FINALISED; +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AdvanceRequestEvent.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AdvanceRequestEvent.java new file mode 100644 index 0000000..9e4edbe --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AdvanceRequestEvent.java @@ -0,0 +1,16 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum AdvanceRequestEvent { + CREATE, + APPROVE, + REJECT, + PAY, + MARK_PAID, + SAVE_AS_DRAFT, + SUBMIT, + RESUBMIT, + CANCEL, + SEND_TO_P2P, + SUCCESS_IN_P2P, + ERROR_IN_P2P +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AdvanceRequestState.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AdvanceRequestState.java new file mode 100644 index 0000000..1fe0c01 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/AdvanceRequestState.java @@ -0,0 +1,11 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum AdvanceRequestState { + START, + DRAFT, + APPROVED, + AWAITING, + PAID, + REJECTED, + SENT_TO_P2P +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/ClearingRequestEvent.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/ClearingRequestEvent.java new file mode 100644 index 0000000..52c2c57 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/ClearingRequestEvent.java @@ -0,0 +1,16 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum ClearingRequestEvent { + CREATE, + APPROVE, + REJECT, + PAY, + MARK_PAID, + SAVE_AS_DRAFT, + SUBMIT, + RESUBMIT, + CANCEL, + SEND_TO_P2P, + SUCCESS_IN_P2P, + ERROR_IN_P2P +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/ClearingRequestState.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/ClearingRequestState.java new file mode 100644 index 0000000..f21f161 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/ClearingRequestState.java @@ -0,0 +1,11 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum ClearingRequestState { + START, + DRAFT, + APPROVED, + AWAITING, + PAID, + REJECTED, + SENT_TO_P2P +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/EntitlementRequestMessageHeader.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/EntitlementRequestMessageHeader.java new file mode 100644 index 0000000..9726468 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/EntitlementRequestMessageHeader.java @@ -0,0 +1,5 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum EntitlementRequestMessageHeader { + IS_RECOVERY +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/InstallationEvent.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/InstallationEvent.java new file mode 100644 index 0000000..2f6964d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/InstallationEvent.java @@ -0,0 +1,14 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum InstallationEvent { + CREATE, + APPROVE, + REJECT, + MARK_PAID, + MARK_PAID_SYSPER, + RESUBMIT, + UPDATE_PAID, + UPDATE_PAID_TO_DRAFT, + RESET_APPROVAL, + SUBMIT, +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/InstallationState.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/InstallationState.java new file mode 100644 index 0000000..632158a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/InstallationState.java @@ -0,0 +1,10 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum InstallationState { + START, + DRAFT, + APPROVED, + AWAITING, + PAID, + REJECTED + } diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/InstallationStateMachineService.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/InstallationStateMachineService.java new file mode 100644 index 0000000..ef10722 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/InstallationStateMachineService.java @@ -0,0 +1,209 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +import eu.europa.eeas.ananke.core.base.exception.AbstractApplicationException; +import eu.europa.eeas.ananke.core.base.exception.AbstractApplicationRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ResourceNotFoundRuntimeException; +import eu.europa.eeas.ananke.core.base.exception.ServerInternalRuntimeException; +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.ananke.tools.statemachine.AnankeToolsStateMachineBeanNames; +import eu.europa.eeas.ananke.tools.statemachine.exceptionhandling.StateMachineExceptionCode; +import eu.europa.eeas.ananke.tools.statemachine.service.AbstractStateMachinePersistService; +import eu.europa.eeas.ananke.tools.statemachine.service.history.StateMachineHistoryHolder; +import eu.europa.eeas.ananke.tools.statemachine.service.listener.StandardListener; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionResultModel; +import eu.europa.eeas.ananke.tools.statemachine.service.simulation.StateMachineSimulationContextServiceProvider; +import eu.europa.eeas.ananke.tools.statemachine.service.simulation.StateMachineTransactionSimulator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Stream; +import org.springframework.context.ApplicationContext; +import org.springframework.messaging.Message; +import org.springframework.messaging.support.GenericMessage; +import org.springframework.statemachine.StateMachine; +import org.springframework.statemachine.config.StateMachineFactory; +import org.springframework.statemachine.listener.StateMachineListener; +import org.springframework.statemachine.support.DefaultStateMachineContext; +import org.springframework.transaction.annotation.Transactional; + + +/** + * Installation Requests implementation for Ananke StateMachineService in order to deal with the + * transitions changes + * + * @param + * @param + */ +public class InstallationStateMachineService, E extends Enum> extends + AbstractServiceProvider { + + private final Class stateType; + private final Class eventType; + private final StateMachineFactory factory; + private final AbstractStateMachinePersistService persistService; + private final StateMachineTransactionSimulator simulator; + + @SuppressWarnings("unchecked") + public InstallationStateMachineService(Class stateType, + Class eventType, + ApplicationContext applicationContext, + String factoryName) { + this.stateType = stateType; + this.eventType = eventType; + this.factory = applicationContext.getBean(factoryName, StateMachineFactory.class); + this.persistService = applicationContext.getBean( + AnankeToolsStateMachineBeanNames.PERSIST_SERVICE, AbstractStateMachinePersistService.class); + StateMachineSimulationContextServiceProvider simulationContextService = applicationContext.getBean( + AnankeToolsStateMachineBeanNames.SIMULATION_CONTEXT_SERVICE, + StateMachineSimulationContextServiceProvider.class); + this.simulator = new StateMachineTransactionSimulator<>(simulationContextService, this.factory); + } + + @Transactional + public StateMachineTransitionResultModel send( + UUID id, E event, Map headers) { + StateMachineTransitionResultModel result = null; + + StandardListener listener = new StandardListener<>(); + StateMachine stateMachine = createStateMachine(id, listener); + + if (id != null) { + stateMachine = this.persistService.restore(stateMachine); + + //we check consistency + S currentStateRestored = stateMachine.getState().getId(); + List> historyList = this.getHistory(id).getTransitions(); + + if (!historyList.isEmpty()) { + StateMachineTransitionModel last = historyList.get(historyList.size() - 1); + S currentStatePersisted = last.getArrivalState(); + + if (!currentStatePersisted.equals(currentStateRestored)) { + getLogger().warn("StateMachine uuid=[{}] inconsistency found.", id); + + E eventPersisted = last.getEvent(); + final String machineId = stateMachine.getId(); + //fix - we overwrite the above restore with good data + stateMachine.stopReactively().block(); + stateMachine + .getStateMachineAccessor() + .doWithAllRegions(access -> { + access.resetStateMachine( + new DefaultStateMachineContext(currentStatePersisted, eventPersisted, null, + null, + null, machineId)); + }); + stateMachine.startReactively().block(); + getLogger().info("StateMachine uuid=[{}] inconsistency fixed.", id); + } + } + } + id = stateMachine.getUuid(); + + Message message = new GenericMessage<>(event, headers); + S departureState = stateMachine.getState().getId(); + stateMachine.sendEvent(message); + S arrivalState = null; + Long previousStateId = null; + boolean valid = listener.getEventAccepted() && listener.getTransitionCompleted(); + if (valid) { + arrivalState = stateMachine.getState().getId(); + previousStateId = this.persistService.savePreviousState(id); + this.persistService.persist(departureState, event, stateMachine); + } else if (stateMachine.hasStateMachineError()) { + Exception exception = listener.getException(); + if (AbstractApplicationRuntimeException.class.isAssignableFrom(exception.getClass())) { + throw (AbstractApplicationRuntimeException) exception; + } else if (AbstractApplicationException.class.isAssignableFrom(exception.getClass())) { + throw ((AbstractApplicationException) exception).toRuntimeException(); + } else { + throw new ServerInternalRuntimeException(StateMachineExceptionCode.ATSM003, exception); + } + } + result = new StateMachineTransitionResultModel<>(valid, id, departureState, arrivalState, event, + previousStateId); + + return result; + } + + @Transactional + public StateMachineTransitionResultModel send(UUID id, E event) { + return send(id, event, null); + } + + @Transactional + public StateMachineTransitionResultModel send(E event) { + return send(null, event, null); + } + + @Transactional + public StateMachineTransitionResultModel send(E event, Map headers) { + return send(null, event, headers); + } + + @Transactional + public void delete(UUID id) { + this.persistService.delete(id); + } + + @Transactional + public S getCurrentState(UUID id) { + S result = null; + + StateMachine stateMachine = createStateMachine(id, null); + if (id != null) { + String state = this.persistService.getArrivalState(id); + if (state == null) { + throw new ResourceNotFoundRuntimeException(StateMachineExceptionCode.ATSM004, + id.toString()); + } + result = stateMachine.getStates().stream().filter(e -> e.getId().toString().equals(state)) + .findFirst().get().getId(); + } else { + result = stateMachine.getInitialState().getId(); + } + + return result; + } + + @Transactional + public S getCurrentState() { + return getCurrentState(null); + } + + public Set getExecutableEvents(Map headers) { + return this.simulator.doSimulationFromInitialState(headers); + } + + public Set getExecutableEvents() { + return getExecutableEvents((Map) null); + } + + public Set getExecutableEvents(UUID id, Map headers) { + return this.simulator.doSimulationFromCurrentState(id, headers); + } + + public Set getExecutableEvents(UUID id) { + return getExecutableEvents(id, null); + } + + public StateMachineHistoryHolder getHistory(UUID id) { + return this.persistService.getHistory(id, this.stateType, this.eventType); + } + + private StateMachine createStateMachine(UUID id, StandardListener listener) { + StateMachine result = null; + + result = id == null ? this.factory.getStateMachine() : this.factory.getStateMachine(id); + if (listener != null) { + result.addStateListener(listener); + } + + return result; + } + +} + + diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/MovementFileEvent.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/MovementFileEvent.java new file mode 100644 index 0000000..7a8428c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/MovementFileEvent.java @@ -0,0 +1,13 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum MovementFileEvent { + CREATE, + SAVE_AS_DRAFT, + WITHDRAW, + CONFIRM, + DELETE, + ONGOING, + COMPLETE, + REOPEN, + CANCEL +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/MovementFileMessageHeader.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/MovementFileMessageHeader.java new file mode 100644 index 0000000..df23ebc --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/MovementFileMessageHeader.java @@ -0,0 +1,6 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum MovementFileMessageHeader { + STARTING_DATE, + MOVEMENT_FILE_ID +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/MovementFileState.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/MovementFileState.java new file mode 100644 index 0000000..eaf2b59 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/MovementFileState.java @@ -0,0 +1,14 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +// important! add a new state ALWAYS at the end to avoid messing the indices +public enum MovementFileState { + START, + PENDING, + DRAFT, + CONFIRMED, + WITHDRAWN, + ONGOING, + DELETED, + CANCELLED, + COMPLETED +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/PostingAllowanceEvent.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/PostingAllowanceEvent.java new file mode 100644 index 0000000..2763fe1 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/PostingAllowanceEvent.java @@ -0,0 +1,12 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum PostingAllowanceEvent { + CREATE, + SAVE_AS_DRAFT, + REJECT, + PAY, + SUBMIT, + APPROVE, + RESUBMIT, + MARK_PAID_ABAC, +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/PostingAllowanceMessageHeader.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/PostingAllowanceMessageHeader.java new file mode 100644 index 0000000..a5abff4 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/PostingAllowanceMessageHeader.java @@ -0,0 +1,5 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum PostingAllowanceMessageHeader { + POSTING_ALLOWANCE_ID +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/PostingAllowanceState.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/PostingAllowanceState.java new file mode 100644 index 0000000..582a772 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/PostingAllowanceState.java @@ -0,0 +1,11 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum PostingAllowanceState { + START, + DRAFT, + AWAITING, + APPROVED, + PAID, + REJECTED, + IMPORTED +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/RequestEvent.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/RequestEvent.java new file mode 100644 index 0000000..6fe7bb6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/RequestEvent.java @@ -0,0 +1,24 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum RequestEvent { + CREATE, + DECL_WITH_REMARK, + DECL_WITHOUT_REMARK, + MARK_DISPUTED, + APPROVE, + CLOSE, + INITIATE_PAYMNT, + ABAC_REJECT, + RESUBMIT, + VERIFY, + PAY, + REJECT, + MARK_PAID, + SAVE_AS_DRAFT, + SUBMIT, + RESUBMIT_REM, + CANCEL, + SEND_TO_P2P, + SUCCESS_IN_P2P, + ERROR_IN_P2P +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/RequestState.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/RequestState.java new file mode 100644 index 0000000..9c290ba --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/RequestState.java @@ -0,0 +1,22 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +import java.util.Arrays; +import java.util.List; + +public enum RequestState { + START, + APPROVED, + AWAITING, + DISPUTED, + PENDING3, + PENDING10, + CLO100, + CLOSED, + CLO0, + PAID, + REJECTED, + DRAFT, + SENT_TO_P2P; + + public final static List VALID_END_ABAC_WORKFLOW_STATES = Arrays.asList("CLO100", "CLO0", "PEND3", "PEND10"); +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/ResettlementEvent.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/ResettlementEvent.java new file mode 100644 index 0000000..d12f766 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/ResettlementEvent.java @@ -0,0 +1,15 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +/** + * @author ienaccat + */ +public enum ResettlementEvent { + CREATE, + APPROVE, + REJECT, + SUBMIT, + MARK_PAID, + RESUBMIT, + RESET_APPROVAL, + RESET_PAID +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/ResettlementState.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/ResettlementState.java new file mode 100644 index 0000000..13fe53b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/ResettlementState.java @@ -0,0 +1,13 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +/** + * @author ienaccat + */ +public enum ResettlementState { + START, + DRAFT, + APPROVED, + AWAITING, + PAID, + REJECTED + } diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/TopUpRequestEvent.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/TopUpRequestEvent.java new file mode 100644 index 0000000..1ffa2ab --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/TopUpRequestEvent.java @@ -0,0 +1,13 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum TopUpRequestEvent { + SUBMIT, + APPROVE, + REJECT, + RESUBMIT, + PAY, + MARK_PAID, + SEND_TO_P2P, + SUCCESS_IN_P2P, + ERROR_IN_P2P +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/TopUpRequestState.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/TopUpRequestState.java new file mode 100644 index 0000000..e22e16c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/TopUpRequestState.java @@ -0,0 +1,11 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum TopUpRequestState { + START, + APPROVED, + AWAITING, + REJECTED, + PAID, + DRAFT, + SENT_TO_P2P +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/TotalRemRequestEvent.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/TotalRemRequestEvent.java new file mode 100644 index 0000000..27f495f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/TotalRemRequestEvent.java @@ -0,0 +1,16 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum TotalRemRequestEvent { + CREATE, + APPROVE, + REJECT, + PAY, + MARK_PAID, + SAVE_AS_DRAFT, + SUBMIT, + RESUBMIT, + CANCEL, + SEND_TO_P2P, + SUCCESS_IN_P2P, + ERROR_IN_P2P +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/TotalRemRequestState.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/TotalRemRequestState.java new file mode 100644 index 0000000..1a3e985 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/TotalRemRequestState.java @@ -0,0 +1,11 @@ +package eu.europa.eeas.erights.common.tools.statemachine; + +public enum TotalRemRequestState { + START, + DRAFT, + APPROVED, + AWAITING, + PAID, + REJECTED, + SENT_TO_P2P +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/HasMovementFilePermissionGuard.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/HasMovementFilePermissionGuard.java new file mode 100644 index 0000000..6af8513 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/HasMovementFilePermissionGuard.java @@ -0,0 +1,30 @@ +package eu.europa.eeas.erights.common.tools.statemachine.guard; + +import eu.europa.eeas.erights.common.security.MovementFilePermission; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileEvent; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.statemachine.StateContext; +import org.springframework.statemachine.guard.Guard; + +public class HasMovementFilePermissionGuard implements Guard { + + private final MovementFilePermission permission; + + @Autowired + private MovementFileSecurityChecker movementFileSecurityChecker; + + public HasMovementFilePermissionGuard(MovementFilePermission movementFilePermission) { + this.permission = movementFilePermission; + } + + @Override + public boolean evaluate(StateContext stateContext) { + return this.movementFileSecurityChecker + .hasAuthority(this.permission.getValue(), + (Long) stateContext.getMessageHeader(MovementFileMessageHeader.MOVEMENT_FILE_ID)); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/IsOngoingGuard.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/IsOngoingGuard.java new file mode 100644 index 0000000..deaad6c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/IsOngoingGuard.java @@ -0,0 +1,19 @@ +package eu.europa.eeas.erights.common.tools.statemachine.guard; + +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileEvent; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.springframework.statemachine.StateContext; +import org.springframework.statemachine.guard.Guard; + +import java.time.LocalDate; + +public class IsOngoingGuard implements Guard { + + @Override + public boolean evaluate(StateContext stateContext) { + LocalDate startingDate = (LocalDate) stateContext.getMessageHeader(MovementFileMessageHeader.STARTING_DATE.name()); + LocalDate currentDate = LocalDate.now(); + return currentDate.isAfter(startingDate); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/IsOwnerGuard.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/IsOwnerGuard.java new file mode 100644 index 0000000..f1b99a8 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/IsOwnerGuard.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.common.tools.statemachine.guard; + +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileEvent; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.statemachine.StateContext; +import org.springframework.statemachine.guard.Guard; + +public class IsOwnerGuard implements Guard { + + @Autowired + private MovementFileSecurityChecker securityChecker; + + @Override + public boolean evaluate(StateContext context) { + return this.securityChecker.isOwner((Long) context.getMessageHeader(MovementFileMessageHeader.MOVEMENT_FILE_ID)); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasAdvanceRemovalRequestPermissionGuard.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasAdvanceRemovalRequestPermissionGuard.java new file mode 100644 index 0000000..e48f2d2 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasAdvanceRemovalRequestPermissionGuard.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.common.tools.statemachine.guard.request; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.erights.common.security.MovementFilePermission; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.statemachine.StateContext; +import org.springframework.statemachine.guard.Guard; + +public class HasAdvanceRemovalRequestPermissionGuard implements Guard { + + private final MovementFilePermission permission; + + @Autowired + private MovementFileSecurityChecker movementFileSecurityChecker; + + @Autowired + private AbstractUserHandler userHandler; + + public HasAdvanceRemovalRequestPermissionGuard(MovementFilePermission permission) { + this.permission = permission; + } + + @Override + public boolean evaluate(StateContext stateContext) { + + if (userHandler.getUser().getEmployeeNumber() < 0L) { + // TODO For the moment we use this hack to allow Abac payment (the Controller has its own checks) + return true; + } + + return this.movementFileSecurityChecker + .hasAuthority(this.permission.getValue(), + (Long) stateContext.getMessageHeader(MovementFileMessageHeader.MOVEMENT_FILE_ID)); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasClearingRequestPermissionGuard.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasClearingRequestPermissionGuard.java new file mode 100644 index 0000000..7f9c73e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasClearingRequestPermissionGuard.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.common.tools.statemachine.guard.request; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.erights.common.security.MovementFilePermission; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.tools.statemachine.ClearingRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.ClearingRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.statemachine.StateContext; +import org.springframework.statemachine.guard.Guard; + +public class HasClearingRequestPermissionGuard implements Guard { + + private final MovementFilePermission permission; + + @Autowired + private AbstractUserHandler userHandler; + + @Autowired + private MovementFileSecurityChecker movementFileSecurityChecker; + + public HasClearingRequestPermissionGuard(MovementFilePermission permission) { + this.permission = permission; + } + + @Override + public boolean evaluate(StateContext stateContext) { + + if (userHandler.getUser().getEmployeeNumber() < 0L) { + // TODO For the moment we use this hack to allow Abac payment (the Controller has its own checks) + return true; + } + + return this.movementFileSecurityChecker + .hasAuthority(this.permission.getValue(), + (Long) stateContext.getMessageHeader(MovementFileMessageHeader.MOVEMENT_FILE_ID)); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasInstallationPermissionGuard.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasInstallationPermissionGuard.java new file mode 100644 index 0000000..0d6f94a --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasInstallationPermissionGuard.java @@ -0,0 +1,29 @@ +package eu.europa.eeas.erights.common.tools.statemachine.guard.request; + +import eu.europa.eeas.erights.common.security.MovementFilePermission; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.tools.statemachine.InstallationEvent; +import eu.europa.eeas.erights.common.tools.statemachine.InstallationState; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.statemachine.StateContext; +import org.springframework.statemachine.guard.Guard; + +public class HasInstallationPermissionGuard implements Guard { + + private final MovementFilePermission permission; + + @Autowired + private MovementFileSecurityChecker movementFileSecurityChecker; + + public HasInstallationPermissionGuard(MovementFilePermission permission) { + this.permission = permission; + } + + @Override + public boolean evaluate(StateContext stateContext) { + return this.movementFileSecurityChecker + .hasAuthority(this.permission.getValue(), + (Long) stateContext.getMessageHeader(MovementFileMessageHeader.MOVEMENT_FILE_ID)); + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasRequestPermissionGuard.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasRequestPermissionGuard.java new file mode 100644 index 0000000..f539683 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasRequestPermissionGuard.java @@ -0,0 +1,40 @@ +package eu.europa.eeas.erights.common.tools.statemachine.guard.request; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.erights.common.security.MovementFilePermission; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import eu.europa.eeas.erights.common.tools.statemachine.RequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.RequestState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.statemachine.StateContext; +import org.springframework.statemachine.guard.Guard; + +public class HasRequestPermissionGuard implements Guard { + + private final MovementFilePermission permission; + + @Autowired + private MovementFileSecurityChecker movementFileSecurityChecker; + + @Autowired + private AbstractUserHandler userHandler; + + public HasRequestPermissionGuard(MovementFilePermission permission) { + this.permission = permission; + } + + @Override + public boolean evaluate(StateContext stateContext) { + + if (userHandler.getUser().getEmployeeNumber() < 0L) { + // TODO For the moment we use this hack to allow Abac payment (the Controller has its own checks) + return true; + } + + return this.movementFileSecurityChecker + .hasAuthority(this.permission.getValue(), + (Long) stateContext.getMessageHeader(MovementFileMessageHeader.MOVEMENT_FILE_ID)); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasTopUpRequestPermissionGuard.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasTopUpRequestPermissionGuard.java new file mode 100644 index 0000000..a085504 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasTopUpRequestPermissionGuard.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.common.tools.statemachine.guard.request; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.erights.common.security.MovementFilePermission; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import eu.europa.eeas.erights.common.tools.statemachine.TopUpRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.TopUpRequestState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.statemachine.StateContext; +import org.springframework.statemachine.guard.Guard; + +public class HasTopUpRequestPermissionGuard implements Guard { + + private final MovementFilePermission permission; + + @Autowired + private MovementFileSecurityChecker movementFileSecurityChecker; + + @Autowired + private AbstractUserHandler userHandler; + + public HasTopUpRequestPermissionGuard(MovementFilePermission permission) { + this.permission = permission; + } + + @Override + public boolean evaluate(StateContext stateContext) { + + if (userHandler.getUser().getEmployeeNumber() < 0L) { + // TODO For the moment we use this hack to allow Abac payment (the Controller has its own checks) + return true; + } + + return this.movementFileSecurityChecker + .hasAuthority(this.permission.getValue(), + (Long) stateContext.getMessageHeader(MovementFileMessageHeader.MOVEMENT_FILE_ID)); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasTotalRemRequestPermissionGuard.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasTotalRemRequestPermissionGuard.java new file mode 100644 index 0000000..3af13ef --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/HasTotalRemRequestPermissionGuard.java @@ -0,0 +1,39 @@ +package eu.europa.eeas.erights.common.tools.statemachine.guard.request; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.erights.common.security.MovementFilePermission; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import eu.europa.eeas.erights.common.tools.statemachine.TotalRemRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.TotalRemRequestState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.statemachine.StateContext; +import org.springframework.statemachine.guard.Guard; + +public class HasTotalRemRequestPermissionGuard implements Guard { + + private final MovementFilePermission permission; + + @Autowired + private MovementFileSecurityChecker movementFileSecurityChecker; + + @Autowired + private AbstractUserHandler userHandler; + + public HasTotalRemRequestPermissionGuard(MovementFilePermission permission) { + this.permission = permission; + } + + @Override + public boolean evaluate(StateContext stateContext) { + + if (userHandler.getUser().getEmployeeNumber() < 0L) { + // TODO For the moment we use this hack to allow Abac payment (the Controller has its own checks) + return true; + } + + return this.movementFileSecurityChecker + .hasAuthority(this.permission.getValue(), + (Long) stateContext.getMessageHeader(MovementFileMessageHeader.MOVEMENT_FILE_ID)); + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsClearingOwnerGuard.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsClearingOwnerGuard.java new file mode 100644 index 0000000..a68ffd6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsClearingOwnerGuard.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.common.tools.statemachine.guard.request; + +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.tools.statemachine.ClearingRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.ClearingRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.statemachine.StateContext; +import org.springframework.statemachine.guard.Guard; + +public class IsClearingOwnerGuard implements Guard { + + @Autowired + private MovementFileSecurityChecker securityChecker; + + @Override + public boolean evaluate(StateContext context) { + return this.securityChecker.isOwner((Long) context.getMessageHeader(MovementFileMessageHeader.MOVEMENT_FILE_ID)); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsInstallationOwnerGuard.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsInstallationOwnerGuard.java new file mode 100644 index 0000000..e88fbe6 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsInstallationOwnerGuard.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.common.tools.statemachine.guard.request; + +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.tools.statemachine.InstallationEvent; +import eu.europa.eeas.erights.common.tools.statemachine.InstallationState; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.statemachine.StateContext; +import org.springframework.statemachine.guard.Guard; + +public class IsInstallationOwnerGuard implements Guard { + + @Autowired + private MovementFileSecurityChecker securityChecker; + + @Override + public boolean evaluate(StateContext context) { + return this.securityChecker.isOwner((Long) context.getMessageHeader(MovementFileMessageHeader.MOVEMENT_FILE_ID)); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsOwnerGuard.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsOwnerGuard.java new file mode 100644 index 0000000..d140726 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsOwnerGuard.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.common.tools.statemachine.guard.request; + +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.statemachine.StateContext; +import org.springframework.statemachine.guard.Guard; + +public class IsOwnerGuard implements Guard { + + @Autowired + private MovementFileSecurityChecker securityChecker; + + @Override + public boolean evaluate(StateContext context) { + return this.securityChecker.isOwner((Long) context.getMessageHeader(MovementFileMessageHeader.MOVEMENT_FILE_ID)); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsRecoveryRequest.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsRecoveryRequest.java new file mode 100644 index 0000000..04a4c7e --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsRecoveryRequest.java @@ -0,0 +1,20 @@ +package eu.europa.eeas.erights.common.tools.statemachine.guard.request; + +import eu.europa.eeas.erights.common.tools.statemachine.EntitlementRequestMessageHeader; +import eu.europa.eeas.erights.common.tools.statemachine.RequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.RequestState; +import org.springframework.statemachine.StateContext; +import org.springframework.statemachine.guard.Guard; + +public class IsRecoveryRequest implements Guard { + + @Override + public boolean evaluate(StateContext stateContext) { + Object isRecovery = stateContext.getMessageHeader(EntitlementRequestMessageHeader.IS_RECOVERY.name()); + if (isRecovery != null) { + return (boolean) isRecovery; + } + + return false; + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsSystemUserGuard.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsSystemUserGuard.java new file mode 100644 index 0000000..0dc642c --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsSystemUserGuard.java @@ -0,0 +1,22 @@ +package eu.europa.eeas.erights.common.tools.statemachine.guard.request; + +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.AdvanceRequestState; +import eu.europa.eeas.erights.common.tools.statemachine.RequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.RequestState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.statemachine.StateContext; +import org.springframework.statemachine.guard.Guard; + + +public class IsSystemUserGuard implements Guard { + + @Autowired + private MovementFileSecurityChecker securityChecker; + + @Override + public boolean evaluate(StateContext context) { + return this.securityChecker.isSystemUser(); // adapt to your real API + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsTotalRemOwnerGuard.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsTotalRemOwnerGuard.java new file mode 100644 index 0000000..f00b80b --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsTotalRemOwnerGuard.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.common.tools.statemachine.guard.request; + +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import eu.europa.eeas.erights.common.tools.statemachine.TotalRemRequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.TotalRemRequestState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.statemachine.StateContext; +import org.springframework.statemachine.guard.Guard; + +public class IsTotalRemOwnerGuard implements Guard { + + @Autowired + private MovementFileSecurityChecker securityChecker; + + @Override + public boolean evaluate(StateContext context) { + return this.securityChecker.isOwner((Long) context.getMessageHeader(MovementFileMessageHeader.MOVEMENT_FILE_ID)); + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsTudOwnerGuard.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsTudOwnerGuard.java new file mode 100644 index 0000000..7cce130 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/statemachine/guard/request/IsTudOwnerGuard.java @@ -0,0 +1,21 @@ +package eu.europa.eeas.erights.common.tools.statemachine.guard.request; + +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileMessageHeader; +import eu.europa.eeas.erights.common.tools.statemachine.RequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.RequestState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.statemachine.StateContext; +import org.springframework.statemachine.guard.Guard; + +public class IsTudOwnerGuard implements Guard { + + @Autowired + private MovementFileSecurityChecker securityChecker; + + @Override + public boolean evaluate(StateContext context) { + return this.securityChecker.isOwner((Long) context.getMessageHeader(MovementFileMessageHeader.MOVEMENT_FILE_ID)); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/AccommodationDateResult.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/AccommodationDateResult.java new file mode 100644 index 0000000..cdb32e7 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/AccommodationDateResult.java @@ -0,0 +1,17 @@ +package eu.europa.eeas.erights.common.tools.utils; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class AccommodationDateResult { + /* + months -calculated months difference + isLastDay - true/false if the endDate is last day of the month + remainingDays - remaining days after date difference + */ + private Integer months; + private boolean isLastDay; + private int remainingDays; +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/AccommodationUtils.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/AccommodationUtils.java new file mode 100644 index 0000000..d8975dd --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/AccommodationUtils.java @@ -0,0 +1,53 @@ +package eu.europa.eeas.erights.common.tools.utils; + +import java.time.LocalDate; +import java.time.temporal.ChronoField; +import java.time.temporal.ChronoUnit; + +public class AccommodationUtils { + + private AccommodationUtils() { + } + + + public static AccommodationDateResult calculateMonthsDifference(LocalDate startDate, LocalDate endDate) { + + AccommodationDateResult accommodationDateResult=new AccommodationDateResult(); + // If endDate is before startDate, return 0 + if (endDate.isBefore(startDate)) { + accommodationDateResult.setMonths(0); + return accommodationDateResult; + } + // Calculate the number of whole months between startDate and endDate + int months = (int) ChronoUnit.MONTHS.between(startDate, endDate); + // If endDate is the last day of the month, consider it as a full month + if (endDate.getDayOfMonth() == endDate.lengthOfMonth() && startDate.getDayOfMonth() == 1) { + months++; + accommodationDateResult.setLastDay(true); + } + // If endDate is within any day of the month + if (endDate.getDayOfMonth() == startDate.getDayOfMonth() - 1) { + months++; + accommodationDateResult.setLastDay(true); + } + accommodationDateResult.setMonths(Math.max(months, 0)); + if(!accommodationDateResult.isLastDay()) { + if (startDate.getMonth().equals(endDate.getMonth())) { + long totalDays = ChronoUnit.DAYS.between(startDate, endDate); + accommodationDateResult.setRemainingDays((int) totalDays); + } else { + long daysInLastMonth = endDate.getLong(ChronoField.DAY_OF_MONTH); + LocalDate lastDayOfPreviousMonth = endDate.withDayOfMonth(1).minusDays(1); + long doyOfStartDate = startDate.getLong(ChronoField.DAY_OF_MONTH); + long diff = lastDayOfPreviousMonth.getLong(ChronoField.DAY_OF_MONTH) - doyOfStartDate + 1; + long totalDays = diff + daysInLastMonth; + if (totalDays >= 30) { + totalDays = totalDays % lastDayOfPreviousMonth.lengthOfMonth(); + } + totalDays = months == 0 ?totalDays -1: totalDays; // this case occurs if and only is less than month in different month + accommodationDateResult.setRemainingDays((int) totalDays); + } + } + return accommodationDateResult; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/KendoParamConverter.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/KendoParamConverter.java new file mode 100644 index 0000000..5174956 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/KendoParamConverter.java @@ -0,0 +1,60 @@ +package eu.europa.eeas.erights.common.tools.utils; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class KendoParamConverter { + + public static String extractSortJson(Map params) { + List> sorts = new ArrayList<>(); + + int index = 0; + while (params.containsKey("sort[" + index + "][field]")) { + Map entry = new HashMap<>(); + entry.put("field", params.get("sort[" + index + "][field]")); + entry.put("dir", params.get("sort[" + index + "][dir]")); + sorts.add(entry); + index++; + } + + try { + return new ObjectMapper().writeValueAsString(sorts); + } catch (Exception ex) { + return null; + } + } + + public static String extractFilterJson(Map params) { + + if (!params.containsKey("filter[logic]")) + return null; + + Map filter = new HashMap<>(); + filter.put("logic", params.get("filter[logic]")); + + List> filters = new ArrayList<>(); + int index = 0; + + while (params.containsKey("filter[filters][" + index + "][field]")) { + Map f = new HashMap<>(); + f.put("field", params.get("filter[filters][" + index + "][field]")); + f.put("operator", params.get("filter[filters][" + index + "][operator]")); + f.put("value", params.get("filter[filters][" + index + "][value]")); + filters.add(f); + index++; + } + + filter.put("filters", filters); + + try { + return new ObjectMapper().writeValueAsString(filter); + } catch (Exception ex) { + return null; + } + } +} + diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/KendoSqlBuilder.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/KendoSqlBuilder.java new file mode 100644 index 0000000..c14500f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/KendoSqlBuilder.java @@ -0,0 +1,92 @@ +package eu.europa.eeas.erights.common.tools.utils; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.util.ArrayList; +import java.util.List; + +public class KendoSqlBuilder { + private static final ObjectMapper mapper = new ObjectMapper(); + + /** + * Build SQL ORDER BY clause from Kendo sort JSON. + */ + public static String buildOrderBy(String sortJson) { + if (sortJson == null || sortJson.isEmpty()) { + return " ORDER BY CREATED_AT DESC"; // default + } + + try { + JsonNode array = mapper.readTree(sortJson); + + List orderParts = new ArrayList<>(); + for (JsonNode s : array) { + String field = s.get("field").asText(); + String dir = s.get("dir").asText("asc").toUpperCase(); + orderParts.add(field + " " + dir); + } + + return " ORDER BY " + String.join(", ", orderParts); + + } catch (Exception ex) { + return " ORDER BY CREATED_AT DESC"; + } + } + + /** + * Build SQL WHERE clause from Kendo filter JSON. + */ + public static String buildWhere(String filterJson) { + if (filterJson == null || filterJson.isEmpty()) { + return ""; + } + + try { + JsonNode root = mapper.readTree(filterJson); + String expression = parseFilter(root); + return expression.isEmpty() ? "" : " WHERE " + expression; + } catch (Exception ex) { + return ""; + } + } + + // Recursively parse Kendo filter expressions + private static String parseFilter(JsonNode node) { + + if (node.has("logic")) { + String logic = node.get("logic").asText().toUpperCase(); + List parts = new ArrayList<>(); + + for (JsonNode f : node.get("filters")) { + parts.add(parseFilter(f)); + } + + return "(" + String.join(" " + logic + " ", parts) + ")"; + } + + // Leaf filter + String field = node.get("field").asText(); + String operator = node.get("operator").asText(); + String value = node.get("value").asText("").replace("'", "''"); // prevent SQL injection + + switch (operator) { + case "eq": + return field + " = '" + value + "'"; + case "neq": + return field + " <> '" + value + "'"; + case "contains": + return "LOWER(" + field + ") LIKE '%" + value.toLowerCase() + "%'"; + case "startswith": + return "LOWER(" + field + ") LIKE '" + value.toLowerCase() + "%'"; + case "endswith": + return "LOWER(" + field + ") LIKE '%" + value.toLowerCase() + "'"; + case "gte": + return field + " >= '" + value + "'"; + case "lte": + return field + " <= '" + value + "'"; + default: + return "1=1"; + } + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/SearchCriteria.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/SearchCriteria.java new file mode 100644 index 0000000..9b2f629 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/SearchCriteria.java @@ -0,0 +1,45 @@ +package eu.europa.eeas.erights.common.tools.utils; + + +public class SearchCriteria { + + private String key; + private String operation; + private Object value; + + public SearchCriteria() { + + } + + public SearchCriteria(final String key, final String operation, final Object value) { + super(); + this.key = key; + this.operation = operation; + this.value = value; + } + + public String getKey() { + return key; + } + + public void setKey(final String key) { + this.key = key; + } + + public String getOperation() { + return operation; + } + + public void setOperation(final String operation) { + this.operation = operation; + } + + public Object getValue() { + return value; + } + + public void setValue(final Object value) { + this.value = value; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/SearchOperation.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/SearchOperation.java new file mode 100644 index 0000000..3eb1afb --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/SearchOperation.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.tools.utils; + + +public enum SearchOperation { + EQUALITY, NEGATION, GREATER_THAN, LESS_THAN, LIKE, STARTS_WITH, ENDS_WITH, CONTAINS,IN_LIST; + + public static final String[] SIMPLE_OPERATION_SET = { ":", "!", ">", "<", "~" }; + + public static final String OR_PREDICATE_FLAG = "'"; + + public static final String ZERO_OR_MORE_REGEX = "*"; + + public static final String OR_OPERATOR = "OR"; + + public static final String AND_OPERATOR = "AND"; + + public static final String LEFT_PARANTHESIS = "("; + + public static final String RIGHT_PARANTHESIS = ")"; + + public static SearchOperation getSimpleOperation(final char input) { + switch (input) { + case ':': + return EQUALITY; + case '!': + return NEGATION; + case '>': + return GREATER_THAN; + case '<': + return LESS_THAN; + case '~': + return LIKE; + default: + return null; + } + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/SpecSearchCriteria.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/SpecSearchCriteria.java new file mode 100644 index 0000000..3c4538f --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/SpecSearchCriteria.java @@ -0,0 +1,103 @@ +package eu.europa.eeas.erights.common.tools.utils; + + +import java.util.List; + +public class SpecSearchCriteria { + + private String key; + private SearchOperation operation; + private List list; + private Object value; + private boolean orPredicate; + + public SpecSearchCriteria() { + + } + + public SpecSearchCriteria(final String key, final SearchOperation operation, final Object value) { + super(); + this.key = key; + this.operation = operation; + this.value = value; + } + + public SpecSearchCriteria(final String orPredicate, final String key, final SearchOperation operation, final Object value) { + super(); + this.orPredicate = orPredicate != null && orPredicate.equals(SearchOperation.OR_PREDICATE_FLAG); + this.key = key; + this.operation = operation; + this.value = value; + } + public SpecSearchCriteria(final String orPredicate, final String key, final SearchOperation operation, final Object value,final List list) { + super(); + this.orPredicate = orPredicate != null && orPredicate.equals(SearchOperation.OR_PREDICATE_FLAG); + this.key = key; + this.operation = operation; + this.value = value; + this.list = list; + + } + + + public SpecSearchCriteria(String key, String operation, String prefix, String value, String suffix) { + SearchOperation op = SearchOperation.getSimpleOperation(operation.charAt(0)); + if (op != null) { + if (op == SearchOperation.EQUALITY) { // the operation may be complex operation + final boolean startWithAsterisk = prefix != null && prefix.contains(SearchOperation.ZERO_OR_MORE_REGEX); + final boolean endWithAsterisk = suffix != null && suffix.contains(SearchOperation.ZERO_OR_MORE_REGEX); + + if (startWithAsterisk && endWithAsterisk) { + op = SearchOperation.CONTAINS; + } else if (startWithAsterisk) { + op = SearchOperation.ENDS_WITH; + } else if (endWithAsterisk) { + op = SearchOperation.STARTS_WITH; + } + } + } + this.key = key; + this.operation = op; + this.value = value; + } + + public String getKey() { + return key; + } + + public void setKey(final String key) { + this.key = key; + } + + public SearchOperation getOperation() { + return operation; + } + + public void setOperation(final SearchOperation operation) { + this.operation = operation; + } + + public Object getValue() { + return value; + } + + public void setValue(final Object value) { + this.value = value; + } + + public boolean isOrPredicate() { + return orPredicate; + } + + public void setOrPredicate(boolean orPredicate) { + this.orPredicate = orPredicate; + } + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/Utils.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/Utils.java new file mode 100644 index 0000000..a4e5436 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/common/tools/utils/Utils.java @@ -0,0 +1,66 @@ +package eu.europa.eeas.erights.common.tools.utils; + +import java.time.LocalDate; +import java.time.Period; + +import static java.time.temporal.TemporalAdjusters.firstDayOfMonth; +import static java.time.temporal.TemporalAdjusters.lastDayOfMonth; + +public class Utils { + + public static int calculatedMonths(LocalDate from, LocalDate to, int exerciseYear) { + + LocalDate currentYearEndDay = LocalDate.of(exerciseYear, 12, 31); // end of exercise year which 31 December + LocalDate currentYearStartDay = LocalDate.of(exerciseYear, 1, 1); // start of exercise year which is 1 January + + if (to == null) { // end of assignment is null, then the end date will be 31 Dec of an exercise year + to = currentYearEndDay; // end date will be the same as end of exercise year + } + if (from.isBefore(currentYearStartDay) && to.isBefore(currentYearStartDay) ) { // start date and end date are before the exercise year + + return 0; + }else if (from.isAfter(currentYearEndDay)) { // if start date is after exercise year + + return 0; + } else if (from.isBefore(currentYearEndDay) && + (to.isBefore(currentYearEndDay) || to.isEqual(currentYearEndDay))) { // if start date and end date is before end of exercise year 2021-02-13 to 2022-06-01 + + LocalDate startDate; + if (from.getYear() == to.getYear()) { // if start date is the same as end date, meaning same exercise year + startDate = from; // startDate won't change + } else {// start date is not in exercise year, we have to use exercise year start date which 1 January + startDate = currentYearStartDay; + } + startDate = startDate.with(firstDayOfMonth()); // start date will always be starting day of the month + to = to.with(lastDayOfMonth()); // end date will always be ending day of the month + + return calculatePeriod(startDate, to); + } else if (from.isBefore(currentYearEndDay) && to.isAfter(currentYearEndDay)) { // if start date is before end of exercise year and end date is after exercise year 2021-02-13 to 2023-06-01 + + LocalDate startDate; + if (from.isBefore(currentYearStartDay)) { // is start date is before starting day of the exercise year which is 1 January + startDate = currentYearStartDay;// start date will be starting day of exercise year 1 January + } else { + startDate = from; // start date is within exercise year + } + startDate = startDate.with(firstDayOfMonth()); // start date will always be starting day of the month + to = currentYearEndDay;// end date would be end of exercise year 31 December + return calculatePeriod(startDate, to); + } + return 0; + } + + public static int calculatePeriod(LocalDate startDate, LocalDate to) { + + Period period = Period.between(startDate, to); + + int days = period.getDays(); + int months = period.getMonths(); + + if (days > 0) {// if days is greater than 1, increment number of months with 1 + months += 1; + } + return months; + + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/tools/StateMachineCurrentStateRestController.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/tools/StateMachineCurrentStateRestController.java new file mode 100644 index 0000000..44ebf03 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/tools/StateMachineCurrentStateRestController.java @@ -0,0 +1,28 @@ +package eu.europa.eeas.erights.tools; + +import eu.europa.eeas.ananke.core.api.provider.http.mvc.AbstractMvcController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * TODO This is a temporary rest controller used for mapping the ANK_SM_CURRENT_STATES. After deliver in production this should be deleted + * RIGD-547 + */ +@Controller +@RequestMapping("/statemachine") +public class StateMachineCurrentStateRestController extends AbstractMvcController { + + @Autowired + private StateMachineCurrentStateService service; + + @GetMapping(path = "/converter.do") + public String convertStateMachineBrokenStates() { + + service.searchAllStatesAndSerializeCorrectly(); + + return "welcome"; + } + +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/tools/StateMachineCurrentStateService.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/tools/StateMachineCurrentStateService.java new file mode 100644 index 0000000..2cd5c95 --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/tools/StateMachineCurrentStateService.java @@ -0,0 +1,104 @@ +package eu.europa.eeas.erights.tools; + +import eu.europa.eeas.ananke.core.base.exception.ServerInternalRuntimeException; +import eu.europa.eeas.ananke.tools.statemachine.exceptionhandling.StateMachineExceptionCode; +import eu.europa.eeas.erights.common.data.jpa.entity.statemachine.StateMachineCurrentStateEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.statemachine.StateMachineCurrentStateRepository; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.statemachine.StateMachineContext; +import org.springframework.statemachine.kryo.KryoStateMachineSerialisationService; +import org.springframework.statemachine.service.StateMachineSerialisationService; +import org.springframework.statemachine.support.DefaultStateMachineContext; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.sql.rowset.serial.SerialBlob; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + +/** + * TODO This is a temporary service used for mapping the ANK_SM_CURRENT_STATES. After deliver in production this should be deleted. + * RIGD-547 + */ +@Service +public class StateMachineCurrentStateService { + + public static final Logger logger = LoggerFactory.getLogger(StateMachineCurrentStateService.class); + + private final StateMachineSerialisationService serialisationService; + + @Autowired + private StateMachineCurrentStateRepository stateRepo; + + public StateMachineCurrentStateService() { + this.serialisationService = new KryoStateMachineSerialisationService(); + } + + @Transactional + public void searchAllStatesAndSerializeCorrectly() { + logger.info("Start to serialize state machine current states..."); + + Iterable it = stateRepo.findAll(); + + List states = StreamSupport.stream(it.spliterator(), false) + .collect(Collectors.toList()); + + logger.info("There are {} states found!", states.size()); + AtomicInteger successToSerialized = new AtomicInteger(); + AtomicInteger failedToSerialize = new AtomicInteger(); + AtomicInteger ignored = new AtomicInteger(); + + it.forEach(state -> { + StateMachineContext result = null; + if (state.getStateMachineContext() != null) { + int blobLength; + byte[] blobAsBytes; + try { + blobLength = (int) state.getStateMachineContext().length(); + blobAsBytes = state.getStateMachineContext().getBytes(1, blobLength); + + StateMachineContext context = this.serialisationService.deserialiseStateMachineContext(blobAsBytes); + if (context != null && context.getChilds() != null && context.getChilds().isEmpty()) { + if (!CollectionUtils.isEmpty(context.getChildReferences())) { + throw new ServerInternalRuntimeException(StateMachineExceptionCode.ATSM005); + } + if (context.getState() instanceof eu.europa.eeas.erights.tools.statemachine.MovementFileState) { + eu.europa.eeas.erights.tools.statemachine.MovementFileState oldState = (eu.europa.eeas.erights.tools.statemachine.MovementFileState) context + .getState(); + result = new DefaultStateMachineContext( + context.getChilds(), + MovementFileState.valueOf(oldState.name()), + context.getEvent(), + context.getEventHeaders(), + context.getExtendedState(), + context.getHistoryStates(), + context.getId()); + + //serialize again and save it to DB + byte[] bytesToSave = this.serialisationService.serialiseStateMachineContext(result); + state.setStateMachineContext(new SerialBlob(bytesToSave)); + stateRepo.save(state); + successToSerialized.getAndIncrement(); + } else { + ignored.getAndIncrement(); + } + + } + } catch (Exception ex) { + logger.error("An exception occurred trying to serialize the state ", ex); + failedToSerialize.getAndIncrement(); + } + } + }); + + logger.info("Successfully serialized={}, failed to serialize={} and not needed serialization={} ", successToSerialized.get(), failedToSerialize.get(), ignored.get()); + logger.info("Finished to serialize state machine current states"); + + } +} diff --git a/e-rights-common/src/main/java/eu/europa/eeas/erights/tools/statemachine/MovementFileState.java b/e-rights-common/src/main/java/eu/europa/eeas/erights/tools/statemachine/MovementFileState.java new file mode 100644 index 0000000..292057d --- /dev/null +++ b/e-rights-common/src/main/java/eu/europa/eeas/erights/tools/statemachine/MovementFileState.java @@ -0,0 +1,16 @@ +package eu.europa.eeas.erights.tools.statemachine; + +/** + * TODO This is a temporary enum used for mapping the ANK_SM_CURRENT_STATES. After deliver in production this should be deleted + * RIGD-547 + */ +public enum MovementFileState { + START, + PENDING, + DRAFT, + CONFIRMED, + WITHDRAWN, + ONGOING, + DELETED, + COMPLETED +} diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/jsp/audit/list.movement.file.jsp b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/audit/list.movement.file.jsp new file mode 100644 index 0000000..899fd23 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/audit/list.movement.file.jsp @@ -0,0 +1,17 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + +
    +
    +
    + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/jsp/list/list.file.jsp b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/list/list.file.jsp new file mode 100644 index 0000000..28e6078 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/list/list.file.jsp @@ -0,0 +1,24 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + <%-- + + --%> + + + + +
    +
    +
    + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/jsp/movement-file/edit/file.jsp b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/movement-file/edit/file.jsp new file mode 100644 index 0000000..8bee62d --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/movement-file/edit/file.jsp @@ -0,0 +1,41 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + + + + + + + + + + + + + <%-- --%> + + + + + +
    + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/jsp/posting-allowance/accommodation-declaration-view.jsp b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/posting-allowance/accommodation-declaration-view.jsp new file mode 100644 index 0000000..4514077 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/posting-allowance/accommodation-declaration-view.jsp @@ -0,0 +1,25 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/jsp/posting-allowance/accommodation-payment-view.jsp b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/posting-allowance/accommodation-payment-view.jsp new file mode 100644 index 0000000..0d19fa5 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/posting-allowance/accommodation-payment-view.jsp @@ -0,0 +1,25 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/jsp/posting-allowance/regularization-view.tar.jsp b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/posting-allowance/regularization-view.tar.jsp new file mode 100644 index 0000000..f910f90 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/posting-allowance/regularization-view.tar.jsp @@ -0,0 +1,22 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/jsp/posting-allowance/view.tar.jsp b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/posting-allowance/view.tar.jsp new file mode 100644 index 0000000..7f2e9c8 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/posting-allowance/view.tar.jsp @@ -0,0 +1,23 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + + <%-- --%> + + + + + +
    + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/jsp/request/edit.clr.rem.request.jsp b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/request/edit.clr.rem.request.jsp new file mode 100644 index 0000000..e250e8e --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/request/edit.clr.rem.request.jsp @@ -0,0 +1,24 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/jsp/request/edit.install.request.jsp b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/request/edit.install.request.jsp new file mode 100644 index 0000000..6d799c9 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/request/edit.install.request.jsp @@ -0,0 +1,22 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/jsp/request/edit.resettlement.request.jsp b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/request/edit.resettlement.request.jsp new file mode 100644 index 0000000..2207e44 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/request/edit.resettlement.request.jsp @@ -0,0 +1,24 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/jsp/request/edit.topup.request.jsp b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/request/edit.topup.request.jsp new file mode 100644 index 0000000..97ec6f3 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/request/edit.topup.request.jsp @@ -0,0 +1,34 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/jsp/request/edit.total.rem.request.jsp b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/request/edit.total.rem.request.jsp new file mode 100644 index 0000000..04fa166 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/jsp/request/edit.total.rem.request.jsp @@ -0,0 +1,21 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + + + + +
    + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/messages/e-rights_en.yaml b/e-rights-common/src/main/resources/META-INF/resources/common/messages/e-rights_en.yaml new file mode 100644 index 0000000..7737c72 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/messages/e-rights_en.yaml @@ -0,0 +1,1170 @@ +e_rights: + movement_files: + list: + actions: + create: Add Movement file + open: Open + export: Export + title: List of movement files + clear_all_filters: Clear filters + create: + context_menu: + move: MOVE + actions: + title: ACTIONS + back: BACK + cancel: Cancel + clear: CLEAR + create_job: CREATE JOB + delete: DELETE + edit: EDIT + eoc: END OF CONTRACT + finish: FINISH + get_data: GET DATA + next: NEXT + save: SAVE + search: SEARCH + select: SELECT + selection: SELECTION + + no_job_destination_type: + description: + secondment: Secondment + rotation: Rotation + end_of_contract: End of Contract + crisis: Crisis + selection_text: + secondment: SECONDMENT - NO JOB NUMBER + rotation: ROTATION - NO JOB NUMBER + end_of_contract: END OF CONTRACT + crisis: CRISIS + + details: + details_header: 3. Movement Details + movement_year: Movement Year + movement_type: Movement Type + movement_type_msg: Movement Type is required + movement_context: Movement Context + movement_context_msg: Movement Context is required + future_assignment_ending_date: Ending Date + starting_date: Starting Date + ending_date: End of Contract Date + ending_date_msg: Please, provide a date + context_of_eoc: Context of end of contract + reason: Reason for end of contract + rights: Without Rights + priority: Priority + followup: Follow-up + secondment: Secondment + rotation: Rotation + eoc: End of Contract + crisis: Crisis + aipn_notif_date: AIPN Notification Date + aipn_file_id: AIPN Decision Link + aipn_placeholder: Copy the Reg. Number of the document in ARES + internal_notes: Internal Notes + main: + future_assignment: Future Assignment + job_holder: Job Holder + movement_details: Movement Details + err_already_exists: Movement file with provided {0} already exists - File ID= {1}. If you would like to edit the existing Movement File please proceed to list of all Movement Files, select the Movement File and choose 'Edit'. + future_assignment: + future_assignment_header: 2. Destination + job_no: Job Nooo + job_number: Job number + no_job_number: Without job number + job_type: Job type + moving_to: Moving to + moving_to_place_of_origin: Moving to place of origin (From SYSPER) + place_of_origin: Place of origin (From SYSPER) + starting_date: Starting date + ending_date: Ending date + budget_line: Commitment Item + personnel_type: Personnel type + institution: Institution + job_function: Job Function + posting: Posting + family_posting: Family Posting + non_family_posting: Non-Family Posting + child_free_posting: Child-Free Posting + rotation: Rotation + secondment: Secondment + crisis: Crisis + location_country: Country + location_city: City + in_eu: In EU + international_org: International ORG + tip: Please enter the job number to load all data related to the new assignment. If you do not have a job number select a movement context. + evacuation: + warning: You are about to set a new location for the Job. This location will be used as reference for this movement file. You are responsible for the accuracy and maintenance of this data. + is_change_location: Enter evacuation location + no_job: + allocated_to: + secondment: Secondment + rotation: Headquarters + crisis: Crisis + head_of_delegation: Head of Delegation + + job_holder: + find_job_holder: Find Job Holder + name: Name + first_name: First Name + last_name: Last Name + job_holder_details: Job Holder Details + per_id: Per ID + org_entity: Organisational Entity + gender: Gender + budget_line: Commitment Item + gender_female: Female + gender_male: Male + email: Business Email + privateEmail: Private email + edit_private_email: EDIT + input_private_email_placeholder: Type e-mail address or empty string + cancel: CANCEL + save: SAVE + origin_place: Place of Origin + recruitment_place: Place of Recruitment + staff_member_header: 1. Staff Member + job_holder_current_assignment: Job Holder CURRENT ASSIGNMENT + moving_from: Moving from + job_id: Job No + location_country: Country + location_city: City + in_eu: In EU + international_ORG: International ORG + updated_location_option: Enter updated location if necessary + alerts: + no_JobNo: Job number {0} was not found. Please check the value and try again + aipn: + confirmed_success: AIPN File is valid, you can view the document clicking on link + not_found: AIPN File {0} not found. + empty: AIPN File empty + labels: + select_a_city: Select a city + documents: + alerts: + section_update_success: Documents Updated succesfull + disable_reason: Justify why this entitlement is disabled + flat_rate_help: If you do not know the amount yet, leave it blank. + mandatory_field: Mandatory Field + + entitlements: + flatRate: Flat rate + disable_reason: Justify why this entitlement is disabled + flat_rate_help: If you do not know the amount yet, leave it blank. + actions: + title: ACTIONS + onBehalfDeclaration: DECLARE ON BEHALF + createDeclaration: CREATE DECLARATION + startDeclaration: START DECLARATION + add_entitlement: ADD ENTITLEMENT + no_more_entitlements: Allowed entitlements have all been added. + edit: EDIT + cancel: CANCEL + save: SAVE + enable: Enable + disable: Disable + hints: + in_case_not_accurate: In case your entitlements requests don't reflect your current situation + please_review_declaration: please review your declaration + you_can_add_decl_when_rates_set: You can add your declaration as soon as the flat rates of your entitlements will be set by HR. + please_fill_declaration: Please fill in your declaration in order to generate your entitlements requests. + installation_addresses_submitted_validation: The addresses you recently submitted in Sysper are awaiting validation in order to process the request. + installation_address_validated: Your address declaration has been validated. We will process your installation request. + installation_allowance_encoded: Your installation allowance has been successfully encoded in Sysper. You will receive your allowance along with your salary. + installation_rejected: Your installation request has been rejected. Consult it for more details. + no_removal_created_info: Please carefully read the guidelines related to your Removal Rights to understand the limitations of the volume, the maximum declared value of the goods and the insurance of your removal. + airfright_popover: The maximum weight entitlement was calculated based on your family composition data in Sysper on the creation date of your file.
    If a revision is required, please contact us through the HelloAdmin portal, under “General questions – rotation entitlementsâ€, under the category “Removal of personal belongings from/to Delegations". + not_requested_eis: You have not requested the Entry into Storage ceiling. + flat_date_duplicator: + simple: Simple + double: Double + disable: + place_holder: Type here the reason for disabling + make_default: Set as new default. + reason: + place_holder: Please provide reason for flat rate decision + label: Reason for flat rate decision + alerts: + removal_under_construction_begin: The Removal procedure in e-Rights is under construction. Please refer to the + removal_under_construction_link_label: guidelines + removal_under_construction_end: and carefully read the instructions applicable to your movement type. + installation_under_construction_begin: The installation allowance module in e-Rights is currently under construction. Your installation allowance will be processed once you have physically taken up duties. Please refer to the + installation_under_construction_link_label: guidelines + installation_under_construction_end: for additional information. + created_clearing_request_success: The Clearing Request has been Created. + created_resettlement_request_success: The Resettlement Request has been created. + installation_please_declare_addresses: Please declare the new addresses of you and your dependents in Sysper. Once this is validated, we will process your installation file. + update_specific_tud_entitlements_success: A request has been sent to update this Movement File's TUD entitlements rates. The new values will be available within a few minutes. + validations: + tud_entitlements_refresh: Refreshing TUD Entitlements Rates + tud_entitlements_refresh_no_country_warning: Mising city from or city to. we need both cities. After adding or updating the cities please SAVE CHANGES, we use the cities in the back end. + tud_refresh_rates_validation_introduction_message: Unable to refresh rates due to the following issues + labels: + chargeable_weight: Chargeable weight + + declaration: + bank_account: Bank account + beneficiary: Beneficiary + iban_info_tooltip: Take up Duty travel payments are processed in Euro. In order to avoid important bank fees, please provide a EURO bank account.
    Any charges occurred due to a currency conversion are not eligible for reimbursement and will not be reimbursed in case a non-EURO denominated account is selected. + select_file: Select File... + your_selected_bankaccount: Please select the bank account on which you will receive your Take up Duty. + confirmation_message_update: Please carefully verify the bank account and other personal information you provided. The update of your declaration will propagate the changes to requests that have not been paid yet. The requests concerned will be updated with the new information and new requests will be created if necessary. + confirmation_message_save: Please carefully verify the bank account and other personal information you provided. Your entitlements requests will be created and reviewed based on the given information. + update_message_title: Updating Declaration + confirmation_message_title: Confirm Declaration + validation: + form_validation: Declaration form validation + form_validation_message: Please check the following to submit your declaration + honour_some_statements_unchecked: Tick all the Declarations of honor section before proceeding. + missing_bank_account: Select your bank account on which you will receive your entitlements. e-Right retrieves the bank account from ABAC. It is refreshed every 2 days. + claims_must_have_justification: Please check that every claim in the eligibility table has some text in the Justification text box. + removal_payment_options_unchecked: Select the removal payment options. + hod_options_unchecked: As HOD please select your removal option. + entry_into_storage_options_unchecked: Please answer entry into storage question. + country_for_eis_question_unchecked: Please select city and country for storage. + + honour: + tud_statement_1: I hereby certify that my Dependents added to my declaration above (if any), will join my household at the place of assignment for a period of at least 6 months no later than one year after the start of my assignment. + tud_statement_2: I understand that it is my responsibility to update their address in Sysper and that any undue amounts will be recovered in case of failure to comply with those conditions. + rem_statement_1: I hereby declare that no other removal allowance is paid to me by any other source. + rem_statement_2: I am aware that supporting documents related to my removal costs such as copy of invoice/s, proof/s of payment and transport documents along with the advance clearing/reimbursement request form must be uploaded as soon as possible and in any case within one year after the payment of the advance. Otherwise the EEAS will recover the advance paid. + ins_statement_1: I hereby declare that no other Installation allowance is paid to me by any other source and that my wife/husband does not benefit from a similar allowance in the context of a posting in the same country. + information_page_statement_1: I have read and understood the guidelines regarding my entitlements and obligations provided on the guidelines page in e-Rights. + + alerts: + save_success: Your declaration was saved and corresponding requests were created. + titles: + persons_joinig_asigment: Persons joining the place of assignment + persons_evacuating_asigment: Persons evacuating the place of assignment + removal_options: Removal options + removal_payment_options: Payment options + declaration_hod_options: As HOD choose your removal option Below + declaration_crisis_options: As Crisis Movement File choose your removal option Below + removal: + advance_title: Advance payment of 90% + advance_description: An advance payment of 90% on the provided pro-forma invoices for the removal of your personal belongings, vehicle and/or entry-into-storage. You will need to fill in the advance request that will be created + reimbursement_title: Reimbursement after removal + reimbursement_description: You will need to fill in the reimbursement request that will be created after your removal. + no_removal_request_yet_title: I do not plan to perform any removal or use the removal ceilings towards my new place of assignment. + no_removal_request_yet_description: Any costs related to your removal towards your place of assignment will not be covered. + option_section_title: Please, choose your removal payment options below. The option can be updated later on within the time limits set for your entitlements. + hod: + option_1_part1: Air shipment of personal belongings ( + option_1_part2: kg max) and long-term storage up to 60m³ + option_2: Surface transport of personal belongings up to 60 m³ and no long term storage + option_1_desc: Air shipment of personal belongings with the chargeable weight depending on the family composition (with the possibility to use the airfreight budget for transport by surface) and long-term storage of up to 60 m³ at Headquarters. + option_2_desc: Surface transport of up to 60 m³ of personal belongings, but no long-term storage (with the possibility to ship up to 780 kg of chargeable weight by airfreight within the limits of the fixed budget ceiling and the maximum volume) + eis: + title: Entry into storage ceiling request + question: Do you wish to request the ceiling for your Entry-into-Storage? + country_city_eis: + title: Location for Storage + question: Please select the country and city where you want to enter into storage. + tooltip: In case you cannot find the exact city in the list, select the closest one in terms of kilometres. It will be used for calculation purposes only. + edit: + actions: + edit: EDIT + confirm_on_behalf: CONFIRM ON BEHALF + confirm: CONFIRM + withdraw_on_behalf: WITHDRAW ON BEHALF + withdraw: WITHDRAW + send_info: SEND GENERAL INFO + update: UPDATE + create_file: CREATE FILE + edit_private_email: EDIT + input_private_email_placeholder: Type e-mail address or empty string + discard_changes: DISCARD CHANGES + save_draft: SAVE AS DRAFT + save: SAVE + save_changes: SAVE CHANGES + cancel: CANCEL + discard: DISCARD + complete: COMPLETE + reopen: REOPEN + delete: + action: DELETE + dialog: + body: This action deletes the movement file and its related requests permanently. Do you want to continue? + title: Deleting movement file + confirmation_statement: I understand that this action will permanently delete this movement file. By confirming, this movement file and its entities will be deleted from e-Rights. This action is irreversible. + reason_title: Reason for deletion + reason_placeholder: Type here a short description for the reason of deletion + footer: + button: + cancel: Cancel + ok: Ok + delete: Permanently Delete + validation: + validation_failed: Validation failed + accept: Accept + message_indicate_current_location: You will be now redirected to the 'Staff Member' page where you must indicate the current location (Country and City). + message_eoc_indicate_future_location: You will be now redirected to the 'Staff Member' page where you must indicate the original location (Country and City) of the person. That will be used as the destination in this EOC. + alerts: + create_success: The Movement File has been created. + create_draft_success: The DRAFT version of the Movement File has been saved. + delete_success: The movement file has been permanently deleted. + confirmed_success: The movement file has been confirmed. + withdraw_success: The movement file has been withdrawn. + complete_success: The movement file has been completed. + cancel_success: The movement file has been cancelled. + reopen_success: The movement file has been reopened. + no_reason: A reason for deletion needs to be provided. Please enter the reason. + aipn: + confirmed_success: AIPN File is valid, you can view the document clicking on link + not_found: AIPN File {0} not found. + empty: AIPN File empty + no_movement_type: Movement type is required. + no_country_from: Origin country is required. + must_have_some_email_address: Either a business or a private e-mail address is required. + must_have_private_email_address_in_eoc: A private e-mail address is required in the EOC context. + cannot_create_eoc_mf_without_jobfrom: It's not possible to create a Movement File for EOC if the person does not have a current job. + no_city_from: Origin city is required. + no_country_to: Destination country is required. + no_city_to: Destination city is required. + no_start_date: Start date is required. + no_budget_line: Commitment Position is required. + no_end_date: End date is required. + start_date_before_end_date: Start date must be before end date. + validation_title: Movement File validation + validation_title_complete: Complete file not possible + validation_title_cancel: Cancel file not possible + deletion_title: Movement File deletion validation + validation_message: Please fill the following mandatory fields before creating the Movement File + complete_validation_message: The request or the P2P payment of the movement file are not finalized. Please pay or reject the request or make sure the P2P payment reached the status SUCCESS of the following request(s) + cancel_validation_message: The request or the P2P payment of the movement file are not finalized. Please pay or reject the request or make sure the P2P payment reached the status SUCCESS of the following request(s) + there_are_incomplete_requests: Please pay or reject all the requests linked to the movement file. + delete_validation_message: The movement file cannot be deleted because of the following issues + there_are_active_requests: Some of the requests were processed or are being processed. They have to be either draft requests or rejected to allow deletion of the movement file. + state_info: + movement_file_completed_info_fo: Your movement file has been completed. If you need to bring any changes to your file, please contact the BHR.6 administrator to re-open it. + movement_file_completed_info_bo: The movement file is completed. If any change is required, please re-open the file. + menu: + communication: COMMUNICATION + entitlements: ENTITLEMENTS + overview: OVERVIEW + destination: + budget_line: Commitment Item + city: City + country: Country + moving_from: Moving from + moving_to: Moving to + ending_date: Ending date + job_type: Job type + job_no: Job No + in_EU: In EU + international_org: International ORG + non_family_posting: Non-Family Posting + child_free_posting: Child-Free Posting + destination_title: Destination + starting_date: Starting date + evacuation: + warning: You are about to set a new location for the Job. This location will be used as reference for this movement file. You are responsible for the accuracy and maintenance of this data. + is_change_location: Enter the evacuation location + place_of_origin: Place of Origin (From SYSPER) + allocated_to: + secondment: Secondment + rotation: Headquarters + crisis: Crisis + personnel_type: Personnel type + institution: Institution + job_function: Job Function + staff_member: + business_email: Business email + gender: Gender + staff_member_title: Staff Member + per_id: PER ID + name: Name + place_of_origin: Place of origin + place_of_recruitment: Place of recruitment + private_email: Private email + gender_female: Female + gender_male: Male + details: + movement_type: Movement Type + details_title: Movement Details + priority: Priority + followup: Follow-up + year: Movement Year + context: Movement Context + context_of_eoc: Context of end of contract + reason: Reason for end of contract + rights: Without Rights + aipn_notif_date: AIPN Notification Date + aipn_notif_link: AIPN Decision Link + internal_notes: Internal Notes + notifications: + create: Movement file created + reminder_after_create: Reminder email + withdraw: Withdrawal email + confirm: Invitation to declare + approved_request: Request Approved + rejected_request: Request Rejected + paid_request: Request Paid + create_request: Request created + start: Start or End of assignment + status: + start: START + pending: PENDING + draft: DRAFT + confirmed: CONFIRMED + withdrawn: WITHDRAW + ongoing: ONGOING + deleted: DELETED + completed: COMPLETED + cancelled: CANCELLED + paid: PAID + pending_verif_pop: Pending Verification POP + rejected_pop: Rejected POP + payment_finalised: Payment Finalised + sent_to_p2p: SENT_TO_P2P + breadcrumbs: + list: + movement_files: Movement Files + posting_allowances: Posting Entitlements + movement_files: + add_new: Add new + view: View File + audit: + movement_files: Audit Movement Files + requests: + view: Rotation Entitlements + movement-docs: + edit: Edit Guidelines + reports: + empty_rates_entitlements: Entitlement with empty rates + posting_allowances: + view: Posting Entitlements + accommodation_declarations: + add_new: Add new + view: View Accommodation Declaration + admin: + it_support : IT admin Support + + requests: + view: Request + backToMF_EntitlementsTab: View entitlements + resettlement: + indemnity: + hoa_checkbox_text: Receipt of confirmation from the Head of Administration (HoA) on lack of any debts and any possible misappropriation of Delegation’s property by the Agent (once received, please tick the checkbox and upload a copy of HoA’s reply). + hoa_email_missing: Attach copy of the e-mail of the HoA + hoa_email_checkbox_required_missing: Please tick the checkbox and upload a copy of HoA’s reply + indemnity_type_missing: Select Indemnity Type + indemnity_number_missing: Select Indemnity Number + indemnity_origin_missing: Select Indemnity Origin Period + indemnity_payment_missing: Select Indemnity Payment Period + indemnity_comment_missing: Add Indemnity Comment + labels: + header: Indemnity + indemnity_amount: Indemnity amount + origin_period: Origin Period + payment_period: Payment Period + type_of_indemnity: Type of indemnity + number: Number + unit: Unit + comment: Comments + attach_copy_of_email: Attach copy of the e-mail of the HoA + alerts: + save_success: The request has been saved. + reject_request_success: The request has been rejected. + justification_is_mandatory_for_reject: The justification in the comments section is mandatory for reject or claim refuse. + justification_is_mandatory_for_rem_request: The justification is mandatory for reject. + justification_is_mandatory_for_adv_rem_reject: The justification in the comments section is mandatory for reject. + pay_request_success: The request has been paid. + mark_as_paid_request_success: The request has been mark as paid. + abac_payment_info_updated_success: The P2P payment details were updated successfully. + created_clearing_request_success: The Clearing Request has been Created. + update_request_success: The request has been successfully updated. + refresh_data_sysper_success: The request has been successfully updated with refreshed data from Sysper + approve_and_save_request_success: The request has been Updated and Approved. + analitical_code_updated: The analytical code {0} has been updated for perId {1} + mark_as_paid_and_save_request_success: The request has been Updated and Mark As Paid. + all_claims_must_be_reviewed: All claims must be reviewed. + submit_request_success: The request has been submitted. + cancel_request_success: The request has been cancelled. + save_draft_request_success: The request has been saved as draft. + save_request_success: The request has been saved. + airfright_popover: The maximum weight entitlement was calculated based on your family composition data in Sysper on the creation date of your file. If a revision is required, please contact us through the HelloAdmin portal, under “General questions – rotation entitlementsâ€, under the category “Removal of personal belongings from/to Delegations". + not_requested_eis: You have not requested the Entry into Storage ceiling. + no_subposts_added: No subpost Added + no_position_selected: No position selected + no_commitment_id: No commitment id + select_delegation_workflow: Please, select delegation Workflow + select_fund_delegation: Please, select Delegation + no_available_budget: No available budget + there_is_no_subposts: ERROR - There are not subpost or Commitment Positions for the budget position in the movement file. Please check the mapping table for subposts + user_does_not_have_statutory_link: WARN - Beneficiary does not have statutory link , we will get the first subposts found for any statutory link. + no_budget_line_found: WARN - No Commitment Position found + total_payment_should_be_positive: Total payment should be positive + total_subposts_should_be_equal_to_request_amount: Total payment should be equal to the final amount of this Request + analitical_code_is_mandatory : Analytical Code is mandatory + reset_from_approved_success: The installation request has been successfully reset from Approved state + justification_is_mandatory_for_reset_approval: The justification in the comments section is mandatory for Reset Approval + field_comments_mandatory: Please, fill in a comment. + justification_is_mandatory_for_reset_to_draft: The justification in the comments section is mandatory for Reset to Draft + justification_is_mandatory_for_reset_paid_to_draft: The justification is mandatory to reset the approval of the resettlement request. + reset_to_draft_success: The installation request has been successfully reset to Draft state + missing_criteria_title: P2P payment could not be processed + missing_criteria_message: No posting criteria could be found for the staff member. Please, create an issue via MyIT requesting from BUDGDEL to create posting criteria for the staff member with Per ID + missing_criteria_urgent_message: For urgent payments please fill in the analytical code "DIVERS" by checking the corresponding checkbox. + resettlement: + justification_is_mandatory_for_reset_approval: The justification is mandatory to reset the approval of the resettlement request + justification_is_mandatory_to_reject_resettlement: The justification is mandatory to reject a Resettlement request. + reset_to_draft_success: The resettlement request has been successfully reset to Draft state + approve_request_success: The request has been approved. + confirmation: + submit_confirmation_title: Submit Request + submit_payment_to_P2P_title: Confirmation for Data to send to P2P + submit_confirmation_message_html: Please note that this action completes your removal and closes the removal entitlements. No other costs will be eligible for reimbursement after this stage. + status: + approved: APPROVED + awaiting: AWAITING + draft: DRAFT + rejected: REJECTED + paid: PAID + start: START + disputed: DISPUTED + closed: CLOSED + clo100: CLO100 + clo10: CLO10 + pending3: PENDING3 + sent_to_p2p: SENT_TO_P2P + + type: + clearing: Clearing + advance: Advance + tud: Take up Duty + total_removal: Reimbursement + topup: Top Up request + resettlement: Resettlement + + full_title: + clearing: Removal clearing request + advance: Removal advance request + tud: Take up Duty request + total_removal: Removal reimbursement request + topup: Top Up request + resettlement: Resettlement request + accommodation_payment: Accommodation Payment + + subpost: + code: Code + description: Description + amount: Commit Amount + + mark_as_paid_extra_data_title: Payment details + edit_abac_info_title: Edit P2P payment Info + mark_as_paid_extra_data_msg: sample text + no_family_member_added: No family member was added in the request. if you wish to request the Take up duty flat rate for your family members, please add them first in your declaration. + payment_order: Order ID + payment_order_required_msg: Please, provide a Order ID. + payment_request: Payment Request + payment_request_required_msg: Please, provide a payment request. + payment_directive: Payment Directive + payment_directive_required_msg: Please, provide a payment directive. + + payment_date: Payment Date + payment_date_required_msg: Please, specify a date of payment. + payment_order_request_placeholder: 1234567 + payment_directive_placeholder: 1234567 + + consecutive_active_years_in_institution: Consecutive active years in institution + city: City + country: Country + country_city_resettle_description: Where do you plan to resettle? + stateMachine: + draft: Draft + start: Request Created + approved: Approved + awaiting: Awaiting + disputed: Disputed + paid: Paid + rejected: Rejected + sent_to_p2p: Sent_to_P2P + pending_verif_pop: Pending_Verif_POP + rejected_pop: Rejected_POP + payment_finalised: Payment Finalised + flat_rate: Flat Rate + entitled_people: Entitled People + dependent_flat_rate: Dependent Flat Rate + advance_removal: + request_detail_label: + STORAGE: Entry into Storage + CAR: Vehicle + AIRFREIGHT: Airfreight + SURFACE: Surface + DEMMURRAGE: Demurrage + DOCK_STRIKES: Dock strikes + STORAGE_COST: Storage cost in the port + TRANSPORT_DELAYS: Transport delays + CLEARING_GOODS_DELAY: Delay in clearing the goods in the port + OTHER: Other unforeseen costs + warnings: + volume_warning_personal: The volume of your removal and/or your airfreight exceeds the maximum authorised.
    In the absence of prior authorisation, the costs relating the excess volume will not be reimbursed and a pro-rata reimbursement will be applied. + volume_warning_personal_airfright: The volume of your removal and/or your airfreight exceeds the maximum authorised.
    In the absence of prior authorisation, the costs relating the excess volume will not be reimbursed and a pro-rata reimbursement will be applied. + insurance_exeded_limit: The insurance rate is exceeding the maximum set of 3,5%.
    In the absence of prior authorisation, the costs relating to the excess insurance value will be calculated pro rata and the exceeding costs will not be reimbursed. + value_exeded_limit: Your declared value exceeds the maximum authorised.
    In the absence of prior authorisation, the costs relating the excess value will not be reimbursed and a pro-rata reimbursement will be applied. + volume_warning_storage: The volume of your removal and/or your airfreight exceeds the maximum authorised.
    In the absence of prior authorisation, the costs relating the excess volume will not be reimbursed and a pro-rata reimbursement will be applied. + personal_belongings_exceded_ceiling: The cost of your removal is above the ceiling.
    In the absence of prior authorisation, advance requests and final reimbursements will be limited to this ceiling. + amount_was_limited_by_prorata_function: The total is calculated pro-rata because of your exceeding volume or kg. + entry_storage_ceiling_disable: Your Entry into storage ceiling is not available, please delete the entry into storage + entry_storage_exceded_ceiling: The cost of your removal is above the ceiling.
    In the absence of prior authorisation, advance requests and final reimbursements will be limited to this ceiling. + vehicle_exceded_ceiling: The cost of your removal is above the ceiling.
    In the absence of prior authorisation, advance requests and final reimbursements will be limited to this ceiling. + declared_total_amount: Declared Total Amount + iban_info_tooltip: Removal payments are processed in Euro. In order to avoid important bank fees, please provide a EURO bank account.
    Any charges occurred due to a currency conversion are not eligible for reimbursement and will not be reimbursed in case a non-EURO denominated account is selected. + abac_details: + warnings: + request_amount_higher_than_available_budget: The amount of the request is higher than the available budget on this commitment. Please choose another position. + tooltips: + ral_info: The budget was updated from BUDGDEL on {0} at {1}. + ral_alert: The budget updated from BUDGDEL on {0} at {1} is insufficient to cover this request. + honour: + rem_statement_1: I am aware that supporting documents related to my removal costs such as copy of invoice/s, proof/s of payment and transport documents along with the advance clearing/reimbursement request must be uploaded as soon as possible and in any case within one year after the payment of the advance. Otherwise the EEAS will recover the advance paid. + rem_statement_2: I, hereby declare that, on the date of the removal, all furniture and personal effects to be moved will be my or my immediate family’s property. No items belonging to anyone else will be included. + rem_statement_3: "I hereby declare that in the attached pro-forma invoice/s are figuring: the exact volume that will be transported, and the exact declared value of personal belongings and of the motor vehicle (if applicable)." + total_rem_statement_1: I, hereby declare that, on the date of the removal, all furniture and personal effects to be moved will be my or my immediate family’s property. No items belonging to anyone else will be included. + total_rem_statement_2: "I hereby declare that in the attached invoice/s are figuring: the exact volume that will be transported, and the exact declared value of personal belongings and of the motor vehicle (if applicable)." + total_rem_statement_3: I will keep the original invoice/s as well as the original/s or copies of all supporting documents during a 5-year-period for ex post control purposes. + installation_supporting_documents: I declare in my honour that I have submitted in Sysper an address declaration in the country of my new assignment. + resettlement_supporting_documents: I declare on my honour that a similar allowance has not be paid to my spouse/husband in case he/she is employed elsewhere. + + validations: + honour_some_statements_unchecked: Please tick all statements in the 'Declaration of honour' section before proceeding. + missing_bank_account: Please check your bank account on which you will receive your payment. + some_proformas_have_no_attachment: Please check that all pro-formas have an attachment. + some_proformas_have_missing_fields: Please fill in all the fields in each pro-forma. + no_proformas_added: Please add pro-forma invoices in your removal advance request to submit it. + some_invoices_missing_attachments: Please check that all invoices have the required attachments. + some_invoices_missing_fields: Please fill in all the fields for each invoice. + no_invoices_added: Please add invoices in your removal reimbursement request to submit it. + removal_clearing_amount_should_be_positive: The Removal Clearing amount should be positive. + tud_amount_should_be_positive: The Take up Duty amount should be positive. + accommodation-total-amount-positive: The accommodation amount should be positive. + advance_amount_should_be_positive: The Advance Request amount should be positive. + total_removal_amount_should_be_positive: The Total Removal Request amount should be positive. + form_validation: Form validation + please_justify_request_rejection: Please, justify if you reject the request. + topup_attachments_mandatory: At least one attachment is needed for a Top-up request. + topup_reasonfor_mandatory: A justification for this Top-up request is required in the text area. + topup_amount_mandatory: A positive numeric value is required for the amount of a Top-up request. + topup_validation: Top-up request + submit_installation_validation_documents: Please upload a signed up Take Duty confirmation form of your new place of assignment to submit the request. + submit_installation_validation_declaration: Please tick all statements in the 'Declaration of honour' section before proceeding. + submit_installation_validation_justification: The justification is mandatory to resubmit the installation file. + address_not_validated_title: Address declaration not submitted in Sysper + address_not_validated_body: The address declaration of the staff has not been validated. Are you sure you want to continue and approve the installation request? + submit_mandatory_supporting_documents: All mandatory supporting documents must be attached before submitting your request + submit_resettlement_validation_declaration: Please tick all statements in the 'Declaration of honour' section before proceeding. + initial_amount: Initial amount + indemnity: + indemnity: Indemnity + address_declaration: Address declaration + payments_detail: + analytical_code: Analytical Code + workflow_organization: Payment Method + delegation_codes: Delegation Codes + delegation_codes_req_msg: mandatory + worflow_central: CENTRAL + worflow_central_req_msg: mandatory + worflow_local: LOCAL + worflow_local_req_msg: Mandatory + worflow_local_selection: Select Delegation + currency_selection: Select Currency + position: Position + commitment_id: Commitments ID + available_budget: Available Budget + summa_budget_line: Fund Center + budget_period: Budget Period + ear_marked_fund: EarMarked Fund + analytical_code_manual_entry_description: Please, check this checkbox to fill in the default analytical code "DIVERS" in case no analytical code was found for the beneficiary. + fund_source: Fund Source + send_to_summa: Send to P2P + send_to_abac: Send to ABAC + supporting_documents: + evidence_new_residence: My/our residence certificate(s) or other evidence of residence established by a competent authority (Commune/Police), for UK and Ireland (Taxbill). + lease_property_deeds: Copy of lease/deed of ownership residence in my name and/or my spouse name. + utility_bill: Recent utility bills in my name and/or my spouse name (water/elect. /gas) dated no earlier than after your last day of active assignment at the Delegation. + proof_canc_res_permit: Proof of cancellation of my/our special identity card (s) or "certificate de radiation" from the municipality of my last place of assignment. + proof_canc_res_permit_accepted: Accepted: note/email from Head of Administration confirming the return of diplomatic ID cards. + proof_change_car_plates: Proof of change of car registration plates. + proof_change_car_plates_accepted: Accepted: note/email from Head of Administration confirming the return of diplomatic car plates. + school_evidence: If resettling with children: evidence of schooling before & after the termination of service. + other: Any other pertinent documentary evidence of transfer of permanent residence. + document_name: Document type + mandatory: Mandatory + attachment: Attachment + supporting_documents_title: Supporting documents + supporting_documents_description: Please provide the necessary proofs that you have actually resettled in your resettlement country. + comments: Comments + mandatory_legend_description: Mandatory document, if not available, please provide a valid reason in the comments. + optional_legend_description: Mandatory document if applicable + file_title: Attach your supporting document + career_file: + title: Career file (from Sysper) + description: If there are years of service that would count as active years in the Institution and are not displayed in the career file in Sysper above (working in parliament for example), please provide supporting documents in the relevant section below. + family_members_resettlement: + joining_resettlement: Do you resettle with any member of your family? + retrieved_from_sysper: Family members are retrieved from your SYSPER personal file. If you don't see all your family members , please provide supporting documents below. + no_family_memebrs: No family members are registered in SYSPER. If this is a mistake please update SYSPER. + sysper_payment: Sysper Payment + right_id: Right ID + event_number: Event Number + + detail_type_order_categories: + personal: PERSONAL BELONGINGS + vehicle: VEHICLE + storage: STORAGE + unforeseen: UNFORESEEN COSTS + topup : topup + + reports: + empty_rates: + actions: + create: Create + open: Open + export: Export + title: Empty Rates Report + clear_all_filters: Clear filters + allowances: + actions: + create: Create + open: Open + export: Export + title: Rotation entitlements + clear_all_filters: Clear filters + posting_allowances: + actions: + create: Create + open: Open + export: Export + title: Posting Entitlements + clear_all_filters: Clear filters + actions_summary: Actions summary + unknown_error: Error occurred, please try again later + batch_processing_in_progress: Batch processing is still in progress, usually it won't take time. Please wait a while and refresh the page if you do not get a response in 1 minute + create_travel_allowances_progress: The creation process has been launched successfully. If there are many travel requests to be created, the process might take a while. + new_travel_allowances_retrieval: Creation of Travel allowance requests + empty_new_travel_allowances_retrieval: There is no new travel allowance requests to be created at the moment. + postingAllowances: + view: Request + backToPA: Posting entitlements + alerts: + save_success: The request has been saved. + reject_postingAllowance_success: The request has been rejected. + justification_is_mandatory_for_reject: The justification in the comments section is mandatory for reject or claim refuse. + justification_is_mandatory_for_rem_request: The justification is mandatory for reject. + justification_is_mandatory_for_adv_rem_reject: The justification in the comments section is mandatory for reject. + pay_request_success: The request has been paid. + mark_as_paid_postingAllowance_success: The Allowance has been mark as paid. + abac_payment_info_updated_success: The P2P payment details were updated successfully. + created_clearing_request_success: The Clearing Request has been Created. + resubmit_postingAllowance_success: The request has been resubmitted. + approve_and_save_postingAllowance_success: The request has been Updated and Approve. + analitical_code_updated: The analytical code {0} has been updated for perId {1} + pay_postingAllowance_success: The request has been Updated and Mark As Paid. + refresh_place_of_origin: The request's place of origin has been refreshed from Sysper. + refresh_address_of_dependents: The addresses have been refreshed + all_claims_must_be_reviewed: All claims must be reviewed. + submit_postingAllowance_success: The posting allowance has been submitted. + cancel_postingAllowance_success: The request has been cancelled. + save_draft_postingAllowance_success: The request has been saved as draft. + save_postingAllowance_success: The changes of the request has been saved successfully. + airfright_popover: The maximum weight entitlement was calculated based on your family composition data in Sysper on the creation date of your file. If a revision is required, please contact us through the HelloAdmin portal, under “General questions – rotation entitlementsâ€, under the category “Removal of personal belongings from/to Delegations". + not_requested_eis: You have not requested the Entry into Storage ceiling. + no_subposts_added: No subpost Added + no_position_selected: No position selected + no_commitment_id: No commitment id + select_delegation_workflow: Please, select delegation Workflow + select_fund_delegation: Please, select Delegation + no_available_budget: No available budget + there_is_no_subposts: ERROR - There are not subpost or Commitment Positions for the budget position in the movement file. Please check the mapping table for subposts + user_does_not_have_statutory_link: WARN - Beneficiary does not have statutory link , we will get the first subposts found for any statutory link. + no_budget_line_found: WARN - No Commitment Position found + total_payment_should_be_positive: Total payment should be positive + total_subposts_should_be_equal_to_request_amount: Total payment should be equal to the final amount of this Request + analitical_code_is_mandatory: Analytical Code is mandatory + operation_not_permmited: Operation not permitted + operation_not_permmited_posting_allowance: Sorry we cant' process your request. Please check the following mandatory fields + can_not_process_request: Sorry we cant' process your request.Please try again later + save_posting_allowance_changes_success_message: The changes were successfully saved in the request. The System checks the request every 1 hour. If the request is complete, e-Right will automatically submit it to Awaiting. + batch_event_action_success: Operation was successful + refresh_place_of_origin_error_message: Failed to retrieve place of origin + refresh_address_of_dependents_error_message: Failed to refresh address of dependents + copied_regularization_warning_message: The regularization request duplicated the information from the parent request due to missing data from the past. + confirmation: + submit_confirmation_title: Submit Request + submit_confirmation_message_html: Please note that this action completes your removal and closes the removal entitlements. No other costs will be eligible for reimbursement after this stage. + status: + approved: APPROVED + awaiting: AWAITING + draft: DRAFT + rejected: REJECTED + paid: PAID + start: START + disputed: DISPUTED + closed: CLOSED + clo100: CLO100 + clo10: CLO10 + pending3: PENDING3 + sent_to_p2p: SENT_TO_P2P + + type: + clearing: Clearing + advance: Advance + tud: Take up Duty + total_removal: Reimbursement + topup: Top Up request + + full_title: + clearing: Removal clearing request + advance: Removal advance request + tud: Take up Duty request + total_removal: Removal reimbursement request + topup: Top Up request + + subpost: + code: Code + description: Description + amount: Commit Amount + + mark_as_paid_extra_data_title: Payment details + edit_abac_info_title: Edit P2P payment Info + mark_as_paid_extra_data_msg: sample text + no_family_member_added: No family member was added in the request. if you wish to request the Take up duty flat rate for your family members, please add them first in your declaration. + payment_id_required_msg: The Right ID from Sysper is missing + payment_event_id_required_msg: The Event Number from Sysper is missing + payment_id_placeholder: 1234567 + payment_event_id_placeholder: 1234567 + stateMachine: + draft: Draft + start: Request Created + approved: Approved + awaiting: Awaiting + disputedd: Disputed + paid: Paid + rejected: Rejected + pending_verif_pop: Pending Verification POP + rejected_pop: Rejected POP + payment_finalised: Payment Finalised + sent_to_p2p: Sent_to_P2P + flat_rate: Flat Rate + entitled_people: Entitled People + dependent_flat_rate: Dependent Flat Rate + advance_removal: + request_detail_label: + STORAGE: Entry into Storage + CAR: Vehicle + AIRFREIGHT: Airfreight + SURFACE: Surface + DEMMURRAGE: Demurrage + DOCK_STRIKES: Dock strikes + STORAGE_COST: Storage cost in the port + TRANSPORT_DELAYS: Transport delays + CLEARING_GOODS_DELAY: Delay in clearing the goods in the port + OTHER: Other unforeseen costs + warnings: + volume_warning_personal: The volume of your removal and/or your airfreight exceeds the maximum authorised.
    In the absence of prior authorisation, the costs relating the excess volume will not be reimbursed and a pro-rata reimbursement will be applied. + volume_warning_personal_airfright: The volume of your removal and/or your airfreight exceeds the maximum authorised.
    In the absence of prior authorisation, the costs relating the excess volume will not be reimbursed and a pro-rata reimbursement will be applied. + insurance_exeded_limit: The insurance rate is exceeding the maximum set of 3,5%.
    In the absence of prior authorisation, the costs relating to the excess insurance value will be calculated pro rata and the exceeding costs will not be reimbursed. + value_exeded_limit: Your declared value exceeds the maximum authorised.
    In the absence of prior authorisation, the costs relating the excess value will not be reimbursed and a pro-rata reimbursement will be applied. + volume_warning_storage: The volume of your removal and/or your airfreight exceeds the maximum authorised.
    In the absence of prior authorisation, the costs relating the excess volume will not be reimbursed and a pro-rata reimbursement will be applied. + personal_belongings_exceded_ceiling: The cost of your removal is above the ceiling.
    In the absence of prior authorisation, advance requests and final reimbursements will be limited to this ceiling. + amount_was_limited_by_prorata_function: The total is calculated pro-rata because of your exceeding volume or kg. + entry_storage_ceiling_disable: Your Entry into storage ceiling is not available, please delete the entry into storage + entry_storage_exceded_ceiling: The cost of your removal is above the ceiling.
    In the absence of prior authorisation, advance requests and final reimbursements will be limited to this ceiling. + vehicle_exceded_ceiling: The cost of your removal is above the ceiling.
    In the absence of prior authorisation, advance requests and final reimbursements will be limited to this ceiling. + declared_total_amount: Declared Total Amount + iban_info_tooltip: Removal payments are processed in Euro. In order to avoid important bank fees, please provide a EURO bank account.
    Any charges occurred due to a currency conversion are not eligible for reimbursement and will not be reimbursed in case a non-EURO denominated account is selected. + abac_details: + warnings: + request_amount_higher_than_available_budget: The amount of the request is higher than the available budget on this commitment. Please choose another position. + tooltips: + ral_info: The budget was updated from BUDGDEL on {0} at {1}. + ral_alert: The budget updated from BUDGDEL on {0} at {1} is insufficient to cover this request. + honour: + rem_statement_1: I am aware that supporting documents related to my removal costs such as copy of invoice/s, proof/s of payment and transport documents along with the advance clearing/reimbursement request must be uploaded as soon as possible and in any case within one year after the payment of the advance. Otherwise the EEAS will recover the advance paid. + rem_statement_2: I, hereby declare that, on the date of the removal, all furniture and personal effects to be moved will be my or my immediate family’s property. No items belonging to anyone else will be included. + rem_statement_3: "I hereby declare that in the attached pro-forma invoice/s are figuring: the exact volume that will be transported, and the exact declared value of personal belongings and of the motor vehicle (if applicable)." + total_rem_statement_1: I, hereby declare that, on the date of the removal, all furniture and personal effects to be moved will be my or my immediate family’s property. No items belonging to anyone else will be included. + total_rem_statement_2: "I hereby declare that in the attached invoice/s are figuring: the exact volume that will be transported, and the exact declared value of personal belongings and of the motor vehicle (if applicable)." + total_rem_statement_3: I will keep the original invoice/s as well as the original/s or copies of all supporting documents during a 5-year-period for ex post control purposes. + payments_detail: + analytical_code: Analytical Code + workflow_organization: Workflow Organization + delegation_codes: Delegation Codes + delegation_codes_req_msg: mandatory + worflow_central: CENTRAL + worflow_central_req_msg: mandatory + worflow_local: LOCAL + worflow_local_req_msg: madatory + worflow_local_selection: Select Workflow + position: Position + commitment_id: Commitments ID + available_budget: Available Budget + analytical_code_manual_entry_description: Please, check this checkbox to fill in the default analytical code "DIVERS" in case no analytical code was found for the beneficiary. + accommodation: + payments: + title: PAYMENTS + heading: Accommodation Payment + backToMF_EntitlementsTab: View entitlements + mark_as_paid: + payment_order: Payment Order + payment_order_required_msg: Please, provide a payment order. + payment_request: Payment Request + payment_request_required_msg: Please, provide a payment request. + payment_date: Payment Date + payment_date_required_msg: Please, specify a date of payment. + payment_order_request_placeholder: EAS.1234567 + missing_document: + title: Missing Document + body: Please, upload the Proof of Payment document + declaration: + title: DECLARATION + heading: Accommodation Article 23 File + actions: + title: ACTIONS + submit: SUBMIT + save_changes: SAVE CHANGES + discard_changes: DISCARD CHANGES + search: SEARCH + create: CREATE + reject: REJECT + reset_to_draft: RESET TO DRAFT + submit_success: The accommodation declaration has been submitted. + approve_success: The accommodation declaration has been approved. + reject_success: The accommodation declaration has been rejected. + reset_to_draft_success: The accommodation declaration has been successfully reset to Draft state + submit_acc_payment_success: The accommodation payment has been submitted. + approve_acc_payment_success: The accommodation payment has been approved. + reject_payment_success: The accommodation payment has been rejected. + submit_pop: The Proof of Payment for accommodation payment has been submitted. + reject_pop: The Proof of Payment for accommodation payment has been rejected. + approve_pop: The Proof of Payment for accommodation payment has been approved. + request_details: + title: Request Details + beneficiary: Beneficiary + per_id: Per ID + statutory_link: Statutory Link + place_of_assignment: Place of assignment + posting_start_date: Start date of posting + preferred_payment_currency: Preferred currency for payment + payment_method: Payment method + comments: Comments + add_comment: Add comment + status_information: Status information + draft_status_information: Your accommodation declaration request has been created. Please, fill in the information at the Accommodation details section and provide the necessary supporting documents to further process it. + draft_status_information_acc_payment: Your accommodation payment request has been created. Please, fill in the information at the Accommodation details section and provide the necessary supporting documents to further process it. + milestones: Milestones + accommodation_details: Accommodation Details + from: From + to: To + multiplying_factor: Multiplying Factor + periodic_payment_interval: Periodic payment interval + rental_amount: Rental amount + security_amount: Security amount + other_costs: Other costs + guarantee_reimbursed_amount: Guarantee reimbursed amount + remaining_guarantee_to_reimburse: Remaining guarantee to reimburse + unforseen_costs: Unforeseen costs + unforseen_costs_currency: Unforeseen costs currency + unforseen_costs_description: Description of unforeseen costs + subtotal: Subtotal + total_amount: Total Amount + family_members_accommodation_declaration: + no_family_members: No Family Members + joining_accommodation_declaration: HAVE ANY MEMBERS OF YOUR FAMILY JOINED YOU IN THE ACCOMMODATION? + retrieved_from_sysper: Family members are retrieved from your SYSPER personal file. If you don't see all your family members, please provide supporting documents below. + job_holder: + name: Name + first_name: First Name + last_name: Last Name + job_holder_details: Job Holder Details + per_id: Per ID + staff_member_header: Staff Member + alerts: + declaration_created_successfully: Accommodation Declaration was created successfully + invalid_rental_contract_message: Please, insert a number not greater than the duration of the rental contract in months + invalid_contract_start_and_end_date_message: Rental end date must be greater than start date. + field_comments_mandatory: Please, fill in a comment. + justification_is_mandatory_to_reject_accommodation: The justification in the comments section is mandatory to reject. + justification_is_mandatory_for_reset_approval: The justification in the comments section is mandatory for Reset Approval + update_declaration_success: The Accommodation Declaration has been successfully updated. + supporting_documents_mandatory_message: Please, provide the URL link to the document in IMMOGEST + start_and_end_date_message: End date must be greater than start date. + supporting_documents: + supporting_documents_title: Supporting Documents + supporting_documents_description: Please provide the necessary documents related to your accommodation + mandatory_legend_description: Mandatory document, if not available, please provide a valid reason in the comments + accommodation_contract: Accommodation contract + approval_form: Approval form + addendum: Addendum + other: Other + additional_comments: Additional comments + attachments: Attachment(s) + document: Document + comments_description: Please provide the URL to the document in IMMOGEST and any relevant comments if necessary + proof_of_payment: Proof of payment + proof_of_unforseen_costs: Proof of unforseen costs + verified_proof_of_payment: A verified proof of payment is provided + supporting_documents_description_ap: Please, provide the proof of payment of your rent and the proof of payment for every unforeseen cost if any. + admin: + route: + admin: Admin + calculate_price: Calculate Route Price + origin_airport: Route Origin Airport + destination_airport: Route Destination Airport + first_intermediate_airport: First Intermediate Airport Stop + second_intermediate_airport: Second Intermediate Airport Stop + third_intermediate_airport: Third Intermediate Airport Stop + year: Year + price: Route Price + no_price_found: No route price could be retrieved for the selected airports + payments_detail: + analytical_code: Analytical Code + workflow_organization: Payment Method + delegation_codes: Delegation Codes + delegation_codes_req_msg: mandatory + worflow_central: CENTRAL + worflow_central_req_msg: mandatory + worflow_local: LOCAL + worflow_local_req_msg: Mandatory + worflow_local_selection: Select Delegation + currency_selection: Select Currency + position: Position + commitment_id: Commitments ID + available_budget: Available Budget + analytical_code_manual_entry_description: Please, check this checkbox to fill in the default analytical code "DIVERS" in case no analytical code was found for the beneficiary. + accommodation: + payments: + title: PAYMENTS + heading: Accommodation Payment + backToMF_EntitlementsTab: View entitlements + mark_as_paid: + payment_order: Payment Order + payment_order_required_msg: Please, provide a payment order. + payment_request: Payment Request + payment_request_required_msg: Please, provide a payment request. + payment_directive: Payment Directive + payment_directive_required_msg: Please, provide a payment directive. + payment_date: Payment Date + payment_date_required_msg: Please, specify a date of payment. + payment_order_request_placeholder: EAS.1234567 + missing_document: + title: Missing Document + body: Please, upload the Proof of Payment document + declaration: + title: DECLARATION + heading: Accommodation Article 23 File + actions: + title: ACTIONS + submit: SUBMIT + save_changes: SAVE CHANGES + discard_changes: DISCARD CHANGES + search: SEARCH + create: CREATE + reject: REJECT + reset_to_draft: RESET TO DRAFT + submit_success: The accommodation declaration has been submitted. + approve_success: The accommodation declaration has been approved. + reject_success: The accommodation declaration has been rejected. + reset_to_draft_success: The accommodation declaration has been successfully reset to Draft state + submit_acc_payment_success: The accommodation payment has been submitted. + approve_acc_payment_success: The accommodation payment has been approved. + reject_payment_success: The accommodation payment has been rejected. + submit_pop: The Proof of Payment for accommodation payment has been submitted. + reject_pop: The Proof of Payment for accommodation payment has been rejected. + approve_pop: The Proof of Payment for accommodation payment has been approved. + request_details: + title: Request Details + beneficiary: Beneficiary + per_id: Per ID + statutory_link: Statutory Link + place_of_assignment: Place of assignment + posting_start_date: Start date of posting + preferred_payment_currency: Preferred currency for payment + payment_method: Payment method + comments: Comments + add_comment: Add comment + status_information: Status information + draft_status_information: Your accommodation declaration request has been created. Please, fill in the information at the Accommodation details section and provide the necessary supporting documents to further process it. + draft_status_information_acc_payment: Your accommodation payment request has been created. Please, fill in the information at the Accommodation details section and provide the necessary supporting documents to further process it. + milestones: Milestones + accommodation_details: Accommodation Details + from: From + to: To + multiplying_factor: Multiplying Factor + periodic_payment_interval: Periodic payment interval + rental_amount: Rental amount + security_amount: Security amount + other_costs: Other costs + guarantee_reimbursed_amount: Guarantee reimbursed amount + remaining_guarantee_to_reimburse: Remaining guarantee to reimburse + unforseen_costs: Unforseen costs + unforseen_costs_currency: Unforseen costs currency + unforseen_costs_description: Description of unforseen costs + subtotal: Subtotal + total_amount: Total Amount + family_members_accommodation_declaration: + no_family_members: No Family Members + joining_accommodation_declaration: HAVE ANY MEMBERS OF YOUR FAMILY JOINED YOU IN THE ACCOMMODATION? + retrieved_from_sysper: Family members are retrieved from your SYSPER personal file. If you don't see all your family members, please provide supporting documents below. + job_holder: + name: Name + first_name: First Name + last_name: Last Name + job_holder_details: Job Holder Details + per_id: Per ID + staff_member_header: Staff Member + alerts: + declaration_created_successfully: Accommodation Declaration was created successfully + invalid_rental_contract_message: Please, insert a number not greater than the duration of the rental contract in months + invalid_contract_start_and_end_date_message: Rental end date must be greater than start date. + field_comments_mandatory: Please, fill in a comment. + justification_is_mandatory_to_reject_accommodation: The justification in the comments section is mandatory to reject. + justification_is_mandatory_for_reset_approval: The justification in the comments section is mandatory for Reset Approval + update_declaration_success: The Accommodation Declaration has been successfully updated. + supporting_documents_mandatory_message: Please, provide the URL link to the document in IMMOGEST + start_and_end_date_message: End date must be greater than start date. + supporting_documents: + supporting_documents_title: Supporting Documents + supporting_documents_description: Please provide the necessary documents related to your accommodation + mandatory_legend_description: Mandatory document, if not available, please provide a valid reason in the comments + accommodation_contract: Accommodation contract + approval_form: Approval form + addendum: Addendum + other: Other + additional_comments: Additional comments + attachments: Attachment(s) + document: Document + comments_description: Please provide the URL to the document in IMMOGEST and any relevant comments if necessary + proof_of_payment: Proof of payment + proof_of_un_forseen_costs: Proof of unforseen costs + verified_proof_of_payment: A verified proof of payment is provided + supporting_documents_description_ap: Please, provide the proof of payment of your rent and the proof of payment for every unforeseen cost if any. + admin: + route: + admin: Admin + calculate_price: Calculate Route Price + origin_airport: Route Origin Airport + destination_airport: Route Destination Airport + first_intermediate_airport: First Intermediate Airport Stop + second_intermediate_airport: Second Intermediate Airport Stop + third_intermediate_airport: Third Intermediate Airport Stop + year: Year + price: Route Price + no_price_found: No route price could be retrieved for the selected airports + it_admin: + it_admin: It Admin + admin: Admin + refresh_one_bank_account: Refresh One Bank Account Per Id + refresh_all_bank_account: Refresh All Bank Accounts + get_order_status : Get Order Status + origin_airport: Route Origin Airport + destination_airport: Route Destination Airport + first_intermediate_airport: First Intermediate Airport Stop + second_intermediate_airport: Second Intermediate Airport Stop + third_intermediate_airport: Third Intermediate Airport Stop + year: Year + price: Route Price + no_price_found: No route price could be retrieved for the selected airports \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/rebel.xml b/e-rights-common/src/main/resources/META-INF/resources/common/rebel.xml new file mode 100644 index 0000000..a2dcc51 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/rebel.xml @@ -0,0 +1,65 @@ + + + + + + e-rights-common + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/images/dots-vertical.png b/e-rights-common/src/main/resources/META-INF/resources/common/web/images/dots-vertical.png new file mode 100644 index 0000000..8ad7845 Binary files /dev/null and b/e-rights-common/src/main/resources/META-INF/resources/common/web/images/dots-vertical.png differ diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/images/staff-member.png b/e-rights-common/src/main/resources/META-INF/resources/common/web/images/staff-member.png new file mode 100644 index 0000000..85f2dd1 Binary files /dev/null and b/e-rights-common/src/main/resources/META-INF/resources/common/web/images/staff-member.png differ diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/audit/list.movement.file.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/audit/list.movement.file.js new file mode 100644 index 0000000..f7b4dc3 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/audit/list.movement.file.js @@ -0,0 +1,308 @@ +class Model { + + constructor() { + this.urls = { + action: { + view: $a.utils.url(null, "/movement-files/view.do"), + create: $a.utils.url(null, "/movement-files/create-job-holder.do"), + + } + }; + + this._restCalls = { + listGet: new $a.GetRestCall(null, "/internal/api/report/movement-files"), + list: new $a.PostRestCall(null, "/internal/api/lists/movement-files"), + deleteMovementFileFromSession: new $a.DeleteRestCall(null, "/internal/api/session/collect-movement-file-data"), + }; + + this.dataSource = new kendo.data.DataSource({ + pageSize: 25, + transport: { + read: this._restCalls.list.settings(), + parameterMap: function (options, type) { + // $a.kendoUtils.paginatedGridOnFieldNameCallback(options, new Map().set("requestDate", $al.model._formatFilterDate)); + return kendo.stringify(options); + } + }, + dataType: "json", + schema: { + model: { + fields: { + id: { + type: "number" + }, + lastName: { + type: "string" + }, + firstName: { + type: "string" + }, + status: { + type: "string" + }, + movementFrom: { + type: "string" + }, + movementContext: { + type: "string" + }, + year: { + type: "string" + }, + perId: { + type: "string" + }, + fileId: { + type: "string" + }, + } + } + }, + serverFiltering: true, + serverPaging: true, + serverSorting: true + }); + } + + _create() { + + $al.model._restCalls.deleteMovementFileFromSession.execute(null, null, null, null, $al.model.goToCreateMovementFile()); + } + goToCreateMovementFile(){ + $a.navigation.open($a.utils.formatUrl($al.model.urls.action.create, null, null), "_self"); + } +} + +class View { + + constructor() { + this._elements = new $a.DataContainer("view"); + this._templates = new $a.DataContainer("view"); + + this._templates.node("content").data(new $a.KendoTemplateData()); + this._templates.node("contextmenu").data(new $a.KendoTemplateData()); + this._templates.node("actions").data(new $a.KendoTemplateData()); + this._templates.node("actions").node("edit").data(new $a.KendoTemplateData()); + + this._elements.node("contextmenu").data(new $a.KendoElementData(), "container"); + this._elements.node("contextmenu").data(new $a.ElementData(), "view"); + + this._elements.data(new $a.KendoElementData(), "grid"); + } + + render() { + $al.view._templates.content.data.compile(); + $al.view._templates.contextmenu.data.compile(); + $al.view._templates.actions.data.compile(); + + $al.view._elements.grid.element.kendoGrid({ + dataSource: $al.model.dataSource, + pageable: true, + sortable: true, + filterable: { + extra: false, + search: true + }, + excel: { + fileName: "Kendo UI Grid Export.xlsx", + proxyURL: $al.model._restCalls.list, + filterable: true + }, + toolbar: ["search", "excel"], + columns: [ + { + field: "lastName", + title: "Last name" + }, + { + field: "firstName", + title: "First name" + }, + { + field: "status", + title: "Status" + }, + { + field: "startDateFuture", + title: "Start date (Future)" + }, + { + field: "movementFrom", + title: "Movement From" + }, + { + field: "allocatedToCurrent", + title: "Allocated To (Current)" + }, + //budget line + { + field: "fileId", + title: "File ID", + hidden: true + }, + { + field: "movementContext", + title: "Movement Context", + hidden: true + }, + { + field: "year", + title: "Movement Year", + hidden: true + }, + + { + field: "locationCountryCurrent", + title: "Location - Country (Current)", + hidden: true + }, + { + field: "locationCityCurrent", + title: "Location - City (Current)", + hidden: true + }, + { + field: "movementTo", + title: "Movement To", + type: "string", + hidden: true + }, + { + field: "assignedTo", + title: "Allocated To (Future)", + hidden: true + }, + { + field: "locationCountryFuture", + title: "Location- Country (Future)", + hidden: true + }, + { + field: "locationCityFuture", + title: "Location- City (Future)", + type: "string", + hidden: true + }, + { + field: "inEuFuture", + title: "In EU (Future)", + hidden: true + }, + { + field: "internationalOrg", + hidden: true, + title: "international ORG (Future)" + }, + { + field: "familyPosting", + title: "Family posting", + hidden: true + }, + { + field: "childFreePosting", + title: "Child-Free posting", + hidden: true + }, + { + field: "secondment", + title: "Secondment", + hidden: true + }, + { + field: "perId", + title: "PER ID", + hidden: true + }, + { + field: "estimatedEndDateFuture", + title: "Estimated end date (Future)", + hidden: true + }, + { + field: "id", + title: "ID", + hidden: true + }, + { + command: [ + { + name: "move", + text: "Move",//$al.controller._languageBundle.actions.edit, + template: $al.view._templates.actions.edit.data.template, + } + ], + title: "Move", + attributes: {style: "white-space: nowrap;"}, + width: "85px" + } + ] + }); + $al.view._elements.grid.component = "kendoGrid"; + + $al.view._elements.contextmenu.container.element.kendoContextMenu({ + target: $al.view._elements.grid.selector, + filter: "tr[role='row']", + open: $al.controller.onContextMenuOpen, + select: $al.controller.onContextMenuSelect + }); + $al.view._elements.contextmenu.container.component = "kendoContextMenu"; + } + + showContextMenu() { + var contextMenu = $al.view._elements.contextmenu.container.component; + contextMenu.enable($al.view._elements.contextmenu.view.selector, false); + $a.loading.toggleElement($al.view._elements.contextmenu.container.element, true); + } + + enableContextMenu(view, edit, validate, delete_, exportPdf) { + var contextMenu = $al.view._elements.contextmenu.container.component; + contextMenu.enable($al.view._elements.contextmenu.view.selector, view); + $a.loading.toggleElement($al.view._elements.contextmenu.container.element, false); + } +} + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.movement_files.list", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.view.render(); + $al.notifyOnReadyMvc(); + } + + onContextMenuOpen(event) { + $al.view.enableContextMenu(true, true, true, true, true); + } + + onContextMenuSelect(event) { + var item = $al.view._elements.grid.component.dataItem(event.target); + var actionId = event.item.id; + + switch (actionId) { + case $al.view._elements.contextmenu.view.id: + $a.navigation.open($a.utils.formatUrl($al.model.urls.action.view, null, {id: item.fileId})); + break; + } + + } + + _createMovementFile(source) { + $al.model._create(); + } + + goToEditMovementFile(source) { + var item = $al.view._elements.grid.component.dataItem($(source).closest("tr")); + + $a.navigation.open($a.utils.formatUrl($al.model.urls.action.view, null, {id: item.id})); + } +} + +getSessionStorageID(); +$al.mvc(Model, View, Controller, true); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/commons.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/commons.js new file mode 100644 index 0000000..2dce30b --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/commons.js @@ -0,0 +1,8 @@ +function accessToPrivacyStatement() { + window.open("https://www.eeas.europa.eu/eeas/eeas%C2%A0privacy-statement-data-protection-notice-purpose-processing-personal-data-related_en", '_blank'); +} + +// Disable fade for all Bootstrap modals globally +$(document).on('show.bs.modal', '.modal', function () { + $(this).removeClass('fade'); +}); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/jszip.min.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/jszip.min.js new file mode 100644 index 0000000..30773b6 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/jszip.min.js @@ -0,0 +1,14 @@ +/*! + +JSZip - A Javascript class for generating and reading zip files + + +(c) 2009-2014 Stuart Knightley +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown. + +JSZip uses the library pako released under the MIT license : +https://github.com/nodeca/pako/blob/master/LICENSE +*/ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f-this.zero;return-1},d.prototype.readData=function(a){if(this.checkOffset(a),0===a)return[];var b=this.data.slice(this.zero+this.index,this.zero+this.index+a);return this.index+=a,b},b.exports=d},{"./dataReader":6}],2:[function(a,b,c){"use strict";var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";c.encode=function(a,b){for(var c,e,f,g,h,i,j,k="",l=0;l>2,h=(3&c)<<4|e>>4,i=(15&e)<<2|f>>6,j=63&f,isNaN(e)?i=j=64:isNaN(f)&&(j=64),k=k+d.charAt(g)+d.charAt(h)+d.charAt(i)+d.charAt(j);return k},c.decode=function(a,b){var c,e,f,g,h,i,j,k="",l=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");l>4,e=(15&h)<<4|i>>2,f=(3&i)<<6|j,k+=String.fromCharCode(c),64!=i&&(k+=String.fromCharCode(e)),64!=j&&(k+=String.fromCharCode(f));return k}},{}],3:[function(a,b,c){"use strict";function d(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}d.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=d},{}],4:[function(a,b,c){"use strict";c.STORE={magic:"\0\0",compress:function(a,b){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a("./flate")},{"./flate":9}],5:[function(a,b,c){"use strict";var d=a("./utils"),e=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if("undefined"==typeof a||!a.length)return 0;var c="string"!==d.getTypeOf(a);"undefined"==typeof b&&(b=0);var f=0,g=0,h=0;b^=-1;for(var i=0,j=a.length;i>>8^f;return b^-1}},{"./utils":22}],6:[function(a,b,c){"use strict";function d(a){this.data=null,this.length=0,this.index=0,this.zero=0}var e=a("./utils");d.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.length=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return e.transformTo("string",this.readData(a))},readData:function(a){},lastIndexOfSignature:function(a){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=d},{"./utils":22}],7:[function(a,b,c){"use strict";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.compressionOptions=null,c.comment=null,c.unixPermissions=null,c.dosPermissions=null},{}],8:[function(a,b,c){"use strict";var d=a("./utils");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo("uint8array",a)},c.uint8Array2String=function(a){return d.transformTo("string",a)},c.string2Blob=function(a){var b=d.transformTo("arraybuffer",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{"./utils":22}],9:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,e=a("pako");c.uncompressInputType=d?"uint8array":"array",c.compressInputType=d?"uint8array":"array",c.magic="\b\0",c.compress=function(a,b){return e.deflateRaw(a,{level:b.level||-1})},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:25}],10:[function(a,b,c){"use strict";function d(a,b){return this instanceof d?(this.files={},this.comment=null,this.root="",a&&this.load(a,b),void(this.clone=function(){var a=new d;for(var b in this)"function"!=typeof this[b]&&(a[b]=this[b]);return a})):new d(a,b)}var e=a("./base64");d.prototype=a("./object"),d.prototype.load=a("./load"),d.support=a("./support"),d.defaults=a("./defaults"),d.utils=a("./deprecatedPublicUtils"),d.base64={encode:function(a){return e.encode(a)},decode:function(a){return e.decode(a)}},d.compressions=a("./compressions"),b.exports=d},{"./base64":2,"./compressions":4,"./defaults":7,"./deprecatedPublicUtils":8,"./load":11,"./object":14,"./support":18}],11:[function(a,b,c){"use strict";var d=a("./base64"),e=a("./utf8"),f=a("./utils"),g=a("./zipEntries");b.exports=function(a,b){var c,h,i,j;for(b=f.extend(b||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:e.utf8decode}),b.base64&&(a=d.decode(a)),h=new g(a,b),c=h.files,i=0;i>>=8;return d},u=function(a){return a=a||{},a.base64!==!0||null!==a.binary&&void 0!==a.binary||(a.binary=!0),a=e.extend(a,h),a.date=a.date||new Date,null!==a.compression&&(a.compression=a.compression.toUpperCase()),a},v=function(a,b,c){var d,f=e.getTypeOf(b);if(c=u(c),"string"==typeof c.unixPermissions&&(c.unixPermissions=parseInt(c.unixPermissions,8)),c.unixPermissions&&16384&c.unixPermissions&&(c.dir=!0),c.dosPermissions&&16&c.dosPermissions&&(c.dir=!0),c.dir&&(a=x(a)),c.createFolders&&(d=w(a))&&y.call(this,d,!0),c.dir||null===b||"undefined"==typeof b)c.base64=!1,c.binary=!1,b=null,f=null;else if("string"===f)c.binary&&!c.base64&&c.optimizedBinaryString!==!0&&(b=e.string2binary(b));else{if(c.base64=!1,c.binary=!0,!(f||b instanceof k))throw new Error("The data of '"+a+"' is in an unsupported format !");"arraybuffer"===f&&(b=e.transformTo("uint8array",b))}var g=new s(a,b,c);return this.files[a]=g,g},w=function(a){"/"==a.slice(-1)&&(a=a.substring(0,a.length-1));var b=a.lastIndexOf("/");return b>0?a.substring(0,b):""},x=function(a){return"/"!=a.slice(-1)&&(a+="/"),a},y=function(a,b){return b="undefined"!=typeof b&&b,a=x(a),this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},z=function(a,b,c){var d,g=new k;return a._data instanceof k?(g.uncompressedSize=a._data.uncompressedSize,g.crc32=a._data.crc32,0===g.uncompressedSize||a.dir?(b=j.STORE,g.compressedContent="",g.crc32=0):a._data.compressionMethod===b.magic?g.compressedContent=a._data.getCompressedContent():(d=a._data.getContent(),g.compressedContent=b.compress(e.transformTo(b.compressInputType,d),c))):(d=q(a),d&&0!==d.length&&!a.dir||(b=j.STORE,d=""),g.uncompressedSize=d.length,g.crc32=f(d),g.compressedContent=b.compress(e.transformTo(b.compressInputType,d),c)),g.compressedSize=g.compressedContent.length,g.compressionMethod=b.magic,g},A=function(a,b){var c=a;return a||(c=b?16893:33204),(65535&c)<<16},B=function(a,b){return 63&(a||0)},C=function(a,b,c,d,h,i){var j,k,l,n,o=(c.compressedContent,i!==m.utf8encode),p=e.transformTo("string",i(b.name)),q=e.transformTo("string",m.utf8encode(b.name)),r=b.comment||"",s=e.transformTo("string",i(r)),u=e.transformTo("string",m.utf8encode(r)),v=q.length!==b.name.length,w=u.length!==r.length,x=b.options,y="",z="",C="";l=b._initialMetadata.dir!==b.dir?b.dir:x.dir,n=b._initialMetadata.date!==b.date?b.date:x.date;var D=0,E=0;l&&(D|=16),"UNIX"===h?(E=798,D|=A(b.unixPermissions,l)):(E=20,D|=B(b.dosPermissions,l)),j=n.getHours(),j<<=6,j|=n.getMinutes(),j<<=5,j|=n.getSeconds()/2,k=n.getFullYear()-1980,k<<=4,k|=n.getMonth()+1,k<<=5,k|=n.getDate(),v&&(z=t(1,1)+t(f(p),4)+q,y+="up"+t(z.length,2)+z),w&&(C=t(1,1)+t(this.crc32(s),4)+u,y+="uc"+t(C.length,2)+C);var F="";F+="\n\0",F+=o||!v&&!w?"\0\0":"\0\b",F+=c.compressionMethod,F+=t(j,2),F+=t(k,2),F+=t(c.crc32,4),F+=t(c.compressedSize,4),F+=t(c.uncompressedSize,4),F+=t(p.length,2),F+=t(y.length,2);var G=g.LOCAL_FILE_HEADER+F+p+y,H=g.CENTRAL_FILE_HEADER+t(E,2)+F+t(s.length,2)+"\0\0\0\0"+t(D,4)+t(d,4)+p+y+s;return{fileRecord:G,dirRecord:H,compressedObject:c}},D={load:function(a,b){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(a){var b,c,d,f,g=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],f=new s(d.name,d._data,e.extend(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,f)&&g.push(f));return g},file:function(a,b,c){if(1===arguments.length){if(e.isRegExp(a)){var d=a;return this.filter(function(a,b){return!b.dir&&d.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(e.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=y.call(this,b),d=this.clone();return d.root=c.name,d},remove:function(a){a=this.root+a;var b=this.files[a];if(b||("/"!=a.slice(-1)&&(a+="/"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;f>>6,b[g++]=128|63&c):c<65536?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return c<0?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;b4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&b1?i[c++]=65533:e<65536?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,"utf-8"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo("nodebuffer",a).toString("utf-8");a=d.transformTo(e.uint8array?"uint8array":"array",a);for(var b=[],c=0,f=a.length,g=65536;c1;)try{"array"===f||"nodebuffer"===f?d.push(String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e)))):d.push(String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(i){b=Math.floor(b/2)}return d.join("")}function g(a,b){for(var c=0;c1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var a,b;for(a=0;a0)this.isSignature(c,j.CENTRAL_FILE_HEADER)||(this.reader.zero=e);else if(e<0)throw new Error("Corrupted zip: missing "+Math.abs(e)+" bytes.")},prepareReader:function(a){var b=i.getTypeOf(a);if(i.checkSupport(b),"string"!==b||l.uint8array)if("nodebuffer"===b)this.reader=new f(a);else if(l.uint8array)this.reader=new g(i.transformTo("uint8array",a));else{if(!l.array)throw new Error("Unexpected error: unsupported type '"+b+"'");this.reader=new h(i.transformTo("array",a))}else this.reader=new e(a,this.loadOptions.optimizedBinaryString)},load:function(a){this.prepareReader(a),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},b.exports=d},{"./arrayReader":1,"./nodeBufferReader":13,"./object":14,"./signature":15,"./stringReader":16,"./support":18,"./uint8ArrayReader":19,"./utils":22,"./zipEntry":24}],24:[function(a,b,c){"use strict";function d(a,b){this.options=a,this.loadOptions=b}var e=a("./stringReader"),f=a("./utils"),g=a("./compressedObject"),h=a("./object"),i=a("./support"),j=0,k=3;d.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},prepareCompressedContent:function(a,b,c){return function(){var d=a.index;a.setIndex(b);var e=a.readData(c);return a.setIndex(d),e}},prepareContent:function(a,b,c,d,e){return function(){var a=f.transformTo(d.uncompressInputType,this.getCompressedContent()),b=d.uncompress(a);if(b.length!==e)throw new Error("Bug : uncompressed data size mismatch");return b}},readLocalPart:function(a){var b,c;if(a.skip(22),this.fileNameLength=a.readInt(2),c=a.readInt(2),this.fileName=a.readData(this.fileNameLength),a.skip(c),this.compressedSize==-1||this.uncompressedSize==-1)throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)");if(b=f.findCompression(this.compressionMethod),null===b)throw new Error("Corrupted zip : compression "+f.pretty(this.compressionMethod)+" unknown (inner file : "+f.transformTo("string",this.fileName)+")");if(this.decompressed=new g,this.decompressed.compressedSize=this.compressedSize,this.decompressed.uncompressedSize=this.uncompressedSize,this.decompressed.crc32=this.crc32,this.decompressed.compressionMethod=this.compressionMethod,this.decompressed.getCompressedContent=this.prepareCompressedContent(a,a.index,this.compressedSize,b),this.decompressed.getContent=this.prepareContent(a,a.index,this.compressedSize,b,this.uncompressedSize),this.loadOptions.checkCRC32&&(this.decompressed=f.transformTo("string",this.decompressed.getContent()),h.crc32(this.decompressed)!==this.crc32))throw new Error("Corrupted zip : CRC32 mismatch"); + },readCentralPart:function(a){if(this.versionMadeBy=a.readInt(2),this.versionNeeded=a.readInt(2),this.bitFlag=a.readInt(2),this.compressionMethod=a.readString(2),this.date=a.readDate(),this.crc32=a.readInt(4),this.compressedSize=a.readInt(4),this.uncompressedSize=a.readInt(4),this.fileNameLength=a.readInt(2),this.extraFieldsLength=a.readInt(2),this.fileCommentLength=a.readInt(2),this.diskNumberStart=a.readInt(2),this.internalFileAttributes=a.readInt(2),this.externalFileAttributes=a.readInt(4),this.localHeaderOffset=a.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");this.fileName=a.readData(this.fileNameLength),this.readExtraFields(a),this.parseZIP64ExtraField(a),this.fileComment=a.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var a=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),a===j&&(this.dosPermissions=63&this.externalFileAttributes),a===k&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(a){if(this.extraFields[1]){var b=new e(this.extraFields[1].value);this.uncompressedSize===f.MAX_VALUE_32BITS&&(this.uncompressedSize=b.readInt(8)),this.compressedSize===f.MAX_VALUE_32BITS&&(this.compressedSize=b.readInt(8)),this.localHeaderOffset===f.MAX_VALUE_32BITS&&(this.localHeaderOffset=b.readInt(8)),this.diskNumberStart===f.MAX_VALUE_32BITS&&(this.diskNumberStart=b.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var c=h.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==p)throw new Error(k[c]);if(b.header&&h.deflateSetHeader(this.strm,b.header),b.dictionary){var e;if(e="string"==typeof b.dictionary?j.string2buf(b.dictionary):"[object ArrayBuffer]"===m.call(b.dictionary)?new Uint8Array(b.dictionary):b.dictionary,c=h.deflateSetDictionary(this.strm,e),c!==p)throw new Error(k[c]);this._dict_set=!0}}function e(a,b){var c=new d(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function f(a,b){return b=b||{},b.raw=!0,e(a,b)}function g(a,b){return b=b||{},b.gzip=!0,e(a,b)}var h=a("./zlib/deflate"),i=a("./utils/common"),j=a("./utils/strings"),k=a("./zlib/messages"),l=a("./zlib/zstream"),m=Object.prototype.toString,n=0,o=4,p=0,q=1,r=2,s=-1,t=0,u=8;d.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?o:n,"string"==typeof a?e.input=j.string2buf(a):"[object ArrayBuffer]"===m.call(a)?e.input=new Uint8Array(a):e.input=a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new i.Buf8(f),e.next_out=0,e.avail_out=f),c=h.deflate(e,d),c!==q&&c!==p)return this.onEnd(c),this.ended=!0,!1;0!==e.avail_out&&(0!==e.avail_in||d!==o&&d!==r)||("string"===this.options.to?this.onData(j.buf2binstring(i.shrinkBuf(e.output,e.next_out))):this.onData(i.shrinkBuf(e.output,e.next_out)))}while((e.avail_in>0||0===e.avail_out)&&c!==q);return d===o?(c=h.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===p):d!==r||(this.onEnd(p),e.avail_out=0,!0)},d.prototype.onData=function(a){this.chunks.push(a)},d.prototype.onEnd=function(a){a===p&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=d,c.deflate=e,c.deflateRaw=f,c.gzip=g},{"./utils/common":28,"./utils/strings":29,"./zlib/deflate":33,"./zlib/messages":38,"./zlib/zstream":40}],27:[function(a,b,c){"use strict";function d(a){if(!(this instanceof d))return new d(a);this.options=h.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var c=g.inflateInit2(this.strm,b.windowBits);if(c!==j.Z_OK)throw new Error(k[c]);this.header=new m,g.inflateGetHeader(this.strm,this.header)}function e(a,b){var c=new d(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function f(a,b){return b=b||{},b.raw=!0,e(a,b)}var g=a("./zlib/inflate"),h=a("./utils/common"),i=a("./utils/strings"),j=a("./zlib/constants"),k=a("./zlib/messages"),l=a("./zlib/zstream"),m=a("./zlib/gzheader"),n=Object.prototype.toString;d.prototype.push=function(a,b){var c,d,e,f,k,l,m=this.strm,o=this.options.chunkSize,p=this.options.dictionary,q=!1;if(this.ended)return!1;d=b===~~b?b:b===!0?j.Z_FINISH:j.Z_NO_FLUSH,"string"==typeof a?m.input=i.binstring2buf(a):"[object ArrayBuffer]"===n.call(a)?m.input=new Uint8Array(a):m.input=a,m.next_in=0,m.avail_in=m.input.length;do{if(0===m.avail_out&&(m.output=new h.Buf8(o),m.next_out=0,m.avail_out=o),c=g.inflate(m,j.Z_NO_FLUSH),c===j.Z_NEED_DICT&&p&&(l="string"==typeof p?i.string2buf(p):"[object ArrayBuffer]"===n.call(p)?new Uint8Array(p):p,c=g.inflateSetDictionary(this.strm,l)),c===j.Z_BUF_ERROR&&q===!0&&(c=j.Z_OK,q=!1),c!==j.Z_STREAM_END&&c!==j.Z_OK)return this.onEnd(c),this.ended=!0,!1;m.next_out&&(0!==m.avail_out&&c!==j.Z_STREAM_END&&(0!==m.avail_in||d!==j.Z_FINISH&&d!==j.Z_SYNC_FLUSH)||("string"===this.options.to?(e=i.utf8border(m.output,m.next_out),f=m.next_out-e,k=i.buf2string(m.output,e),m.next_out=f,m.avail_out=o-f,f&&h.arraySet(m.output,m.output,e,f,0),this.onData(k)):this.onData(h.shrinkBuf(m.output,m.next_out)))),0===m.avail_in&&0===m.avail_out&&(q=!0)}while((m.avail_in>0||0===m.avail_out)&&c!==j.Z_STREAM_END);return c===j.Z_STREAM_END&&(d=j.Z_FINISH),d===j.Z_FINISH?(c=g.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===j.Z_OK):d!==j.Z_SYNC_FLUSH||(this.onEnd(j.Z_OK),m.avail_out=0,!0)},d.prototype.onData=function(a){this.chunks.push(a)},d.prototype.onEnd=function(a){a===j.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=d,c.inflate=e,c.inflateRaw=f,c.ungzip=e},{"./utils/common":28,"./utils/strings":29,"./zlib/constants":31,"./zlib/gzheader":34,"./zlib/inflate":36,"./zlib/messages":38,"./zlib/zstream":40}],28:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;f=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;f>>6,b[g++]=128|63&c):c<65536?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;c4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&c1?j[e++]=65533:f<65536?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return c<0?b:0===c?b:c+i[a[c]]>b?c:b}},{"./common":28}],30:[function(a,b,c){"use strict";function d(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=d},{}],31:[function(a,b,c){"use strict";b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],32:[function(a,b,c){"use strict";function d(){for(var a,b=[],c=0;c<256;c++){a=c;for(var d=0;d<8;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function e(a,b,c,d){var e=f,g=d+c;a^=-1;for(var h=d;h>>8^e[255&(a^b[h])];return a^-1}var f=d();b.exports=e},{}],33:[function(a,b,c){"use strict";function d(a,b){return a.msg=I[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(E.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){F._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,E.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=G(a.adler,b,e,c):2===a.state.wrap&&(a.adler=H(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-la?a.strstart-(a.w_size-la):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ka,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&fg){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-la)){E.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=ja)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===J)return ua;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return ua;if(a.strstart-a.block_start>=a.w_size-la&&(h(a,!1),0===a.strm.avail_out))return ua}return a.insert=0,b===M?(h(a,!0),0===a.strm.avail_out?wa:xa):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?ua:ua}function o(a,b){for(var c,d;;){if(a.lookahead=ja&&(a.ins_h=(a.ins_h<=ja)if(d=F._tr_tally(a,a.strstart-a.match_start,a.match_length-ja),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=ja){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<=ja&&(a.ins_h=(a.ins_h<4096)&&(a.match_length=ja-1)),a.prev_length>=ja&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-ja,d=F._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-ja),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<=ja&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ka;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&ea.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=ja?(c=F._tr_tally(a,1,a.match_length-ja),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=F._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return ua}return a.insert=0,b===M?(h(a,!0),0===a.strm.avail_out?wa:xa):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?ua:va}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===J)return ua;break}if(a.match_length=0,c=F._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return ua}return a.insert=0,b===M?(h(a,!0),0===a.strm.avail_out?wa:xa):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?ua:va}function s(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e}function t(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=D[a.level].max_lazy,a.good_match=D[a.level].good_length,a.nice_match=D[a.level].nice_length,a.max_chain_length=D[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=ja-1,a.match_available=0,a.ins_h=0}function u(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=$,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new E.Buf16(2*ha),this.dyn_dtree=new E.Buf16(2*(2*fa+1)),this.bl_tree=new E.Buf16(2*(2*ga+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new E.Buf16(ia+1),this.heap=new E.Buf16(2*ea+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new E.Buf16(2*ea+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function v(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=Z,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?na:sa,a.adler=2===b.wrap?0:1,b.last_flush=J,F._tr_init(b),O):d(a,Q)}function w(a){var b=v(a);return b===O&&t(a.state),b}function x(a,b){return a&&a.state?2!==a.state.wrap?Q:(a.state.gzhead=b,O):Q}function y(a,b,c,e,f,g){if(!a)return Q;var h=1;if(b===T&&(b=6),e<0?(h=0,e=-e):e>15&&(h=2,e-=16),f<1||f>_||c!==$||e<8||e>15||b<0||b>9||g<0||g>X)return d(a,Q);8===e&&(e=9);var i=new u;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<N||b<0)return a?d(a,Q):Q;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===ta&&b!==M)return d(a,0===a.avail_out?S:Q);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===na)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=V||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=H(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=oa):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=V||h.level<2?4:0),i(h,ya),h.status=sa);else{var m=$+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=V||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=ma),m+=31-m%31,h.status=sa,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===oa)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=pa)}else h.status=pa;if(h.status===pa)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=qa)}else h.status=qa;if(h.status===qa)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=H(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=ra)}else h.status=ra;if(h.status===ra&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=sa)):h.status=sa),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,O}else if(0===a.avail_in&&e(b)<=e(c)&&b!==M)return d(a,S);if(h.status===ta&&0!==a.avail_in)return d(a,S);if(0!==a.avail_in||0!==h.lookahead||b!==J&&h.status!==ta){var o=h.strategy===V?r(h,b):h.strategy===W?q(h,b):D[h.level].func(h,b);if(o!==wa&&o!==xa||(h.status=ta),o===ua||o===wa)return 0===a.avail_out&&(h.last_flush=-1),O;if(o===va&&(b===K?F._tr_align(h):b!==N&&(F._tr_stored_block(h,0,0,!1),b===L&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,O}return b!==M?O:h.wrap<=0?P:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?O:P)}function B(a){var b;return a&&a.state?(b=a.state.status,b!==na&&b!==oa&&b!==pa&&b!==qa&&b!==ra&&b!==sa&&b!==ta?d(a,Q):(a.state=null,b===sa?d(a,R):O)):Q}function C(a,b){var c,d,e,g,h,i,j,k,l=b.length;if(!a||!a.state)return Q;if(c=a.state,g=c.wrap,2===g||1===g&&c.status!==na||c.lookahead)return Q;for(1===g&&(a.adler=G(a.adler,b,l,0)),c.wrap=0,l>=c.w_size&&(0===g&&(f(c.head),c.strstart=0,c.block_start=0,c.insert=0),k=new E.Buf8(c.w_size),E.arraySet(k,b,l-c.w_size,c.w_size,0),b=k,l=c.w_size),h=a.avail_in,i=a.next_in,j=a.input,a.avail_in=l,a.next_in=0,a.input=b,m(c);c.lookahead>=ja;){d=c.strstart,e=c.lookahead-(ja-1);do c.ins_h=(c.ins_h<>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<>>=w,q-=w),q<15&&(p+=B[f++]<>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<k){a.msg="invalid distance too far back",c.mode=d;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&c.sane){a.msg="invalid distance too far back",c.mode=d;break a}if(z=0,A=o,0===n){if(z+=l-w,w2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(f>3,f-=x,q-=x<<3,p&=(1<>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new s.Buf16(320),this.work=new s.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=L,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new s.Buf32(pa),b.distcode=b.distdyn=new s.Buf32(qa),b.sane=1,b.back=-1,D):G}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):G}function h(a,b){var c,d;return a&&a.state?(d=a.state,b<0?(c=0,b=-b):(c=(b>>4)+1,b<48&&(b&=15)),b&&(b<8||b>15)?G:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):G}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==D&&(a.state=null),c):G}function j(a){return i(a,sa)}function k(a){if(ta){var b;for(q=new s.Buf32(512),r=new s.Buf32(32),b=0;b<144;)a.lens[b++]=8;for(;b<256;)a.lens[b++]=9;for(;b<280;)a.lens[b++]=7;for(;b<288;)a.lens[b++]=8;for(w(y,a.lens,0,288,q,0,a.work,{bits:9}),b=0;b<32;)a.lens[b++]=5;w(z,a.lens,0,32,r,0,a.work,{bits:5}),ta=!1}a.lencode=q,a.lenbits=9,a.distcode=r,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<=f.wsize?(s.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),s.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(s.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whave>>8&255,c.check=u(c.check,Ba,2,0),m=0,n=0,c.mode=M;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=ma;break}if((15&m)!==K){a.msg="unknown compression method",c.mode=ma;break}if(m>>>=4,n-=4,wa=(15&m)+8,0===c.wbits)c.wbits=wa;else if(wa>c.wbits){a.msg="invalid window size",c.mode=ma;break}c.dmax=1<>8&1),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=u(c.check,Ba,2,0)),m=0,n=0,c.mode=N;case N:for(;n<32;){if(0===i)break a;i--,m+=e[g++]<>>8&255,Ba[2]=m>>>16&255,Ba[3]=m>>>24&255,c.check=u(c.check,Ba,4,0)),m=0,n=0,c.mode=O;case O:for(;n<16;){if(0===i)break a;i--,m+=e[g++]<>8),512&c.flags&&(Ba[0]=255&m,Ba[1]=m>>>8&255,c.check=u(c.check,Ba,2,0)),m=0,n=0,c.mode=P;case P:if(1024&c.flags){for(;n<16;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=u(c.check,Ba,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=Q;case Q:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wa=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),s.arraySet(c.head.extra,e,g,q,wa)),512&c.flags&&(c.check=u(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=R;case R:if(2048&c.flags){if(0===i)break a;q=0;do wa=e[g+q++],c.head&&wa&&c.length<65536&&(c.head.name+=String.fromCharCode(wa));while(wa&&q>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=W;break;case U:for(;n<32;){if(0===i)break a;i--,m+=e[g++]<>>=7&n,n-=7&n,c.mode=ja;break}for(;n<3;){if(0===i)break a;i--,m+=e[g++]<>>=1,n-=1,3&m){case 0:c.mode=Y;break;case 1:if(k(c),c.mode=ca,b===C){m>>>=2,n-=2;break a}break;case 2:c.mode=_;break;case 3:a.msg="invalid block type",c.mode=ma}m>>>=2,n-=2;break;case Y:for(m>>>=7&n,n-=7&n;n<32;){if(0===i)break a;i--,m+=e[g++]<>>16^65535)){a.msg="invalid stored block lengths",c.mode=ma;break}if(c.length=65535&m,m=0,n=0,c.mode=Z,b===C)break a;case Z:c.mode=$;case $:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;s.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=W;break;case _:for(;n<14;){if(0===i)break a;i--,m+=e[g++]<>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=ma;break}c.have=0,c.mode=aa;case aa:for(;c.have>>=3,n-=3}for(;c.have<19;)c.lens[Ca[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,ya={bits:c.lenbits},xa=w(x,c.lens,0,19,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg="invalid code lengths set",c.mode=ma;break}c.have=0,c.mode=ba;case ba:for(;c.have>>24,ra=Aa>>>16&255,sa=65535&Aa,!(qa<=n);){if(0===i)break a;i--,m+=e[g++]<>>=qa,n-=qa,c.lens[c.have++]=sa;else{if(16===sa){for(za=qa+2;n>>=qa,n-=qa,0===c.have){a.msg="invalid bit length repeat",c.mode=ma;break}wa=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sa){for(za=qa+3;n>>=qa,n-=qa,wa=0,q=3+(7&m),m>>>=3,n-=3}else{for(za=qa+7;n>>=qa,n-=qa,wa=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=ma;break}for(;q--;)c.lens[c.have++]=wa}}if(c.mode===ma)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=ma;break}if(c.lenbits=9,ya={bits:c.lenbits},xa=w(y,c.lens,0,c.nlen,c.lencode,0,c.work,ya),c.lenbits=ya.bits,xa){a.msg="invalid literal/lengths set",c.mode=ma;break}if(c.distbits=6,c.distcode=c.distdyn,ya={bits:c.distbits},xa=w(z,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,ya),c.distbits=ya.bits,xa){a.msg="invalid distances set",c.mode=ma;break}if(c.mode=ca,b===C)break a;case ca:c.mode=da;case da:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,v(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===W&&(c.back=-1);break}for(c.back=0;Aa=c.lencode[m&(1<>>24,ra=Aa>>>16&255,sa=65535&Aa,!(qa<=n);){if(0===i)break a;i--,m+=e[g++]<>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(ta+qa<=n);){if(0===i)break a;i--,m+=e[g++]<>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,c.length=sa,0===ra){c.mode=ia;break}if(32&ra){c.back=-1,c.mode=W;break}if(64&ra){a.msg="invalid literal/length code",c.mode=ma;break}c.extra=15&ra,c.mode=ea;case ea:if(c.extra){for(za=c.extra;n>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=fa;case fa:for(;Aa=c.distcode[m&(1<>>24,ra=Aa>>>16&255,sa=65535&Aa,!(qa<=n);){if(0===i)break a;i--,m+=e[g++]<>ta)],qa=Aa>>>24,ra=Aa>>>16&255,sa=65535&Aa,!(ta+qa<=n);){if(0===i)break a;i--,m+=e[g++]<>>=ta,n-=ta,c.back+=ta}if(m>>>=qa,n-=qa,c.back+=qa,64&ra){a.msg="invalid distance code",c.mode=ma;break}c.offset=sa,c.extra=15&ra,c.mode=ga;case ga:if(c.extra){for(za=c.extra;n>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=ma;break}c.mode=ha;case ha:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=ma;break}q>c.wnext?(q-=c.wnext,r=c.wsize-q):r=c.wnext-q,q>c.length&&(q=c.length),pa=c.window}else pa=f,r=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pa[r++];while(--q);0===c.length&&(c.mode=da);break;case ia:if(0===j)break a;f[h++]=c.length,j--,c.mode=da;break;case ja:if(c.wrap){for(;n<32;){if(0===i)break a;i--,m|=e[g++]<=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;F0&&(a===h||1!==G))return-1;for(Q[1]=0,D=1;Df||a===j&&L>g)return 1;for(var T=0;;){T++,z=D-J,r[E]y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[c+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<f||a===j&&L>g)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{"../utils/common":28}],38:[function(a,b,c){"use strict";b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],39:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length}function f(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b}function g(a){return a<256?ia[a]:ia[256+(a>>>7)]}function h(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function i(a,b,c){a.bi_valid>X-c?(a.bi_buf|=b<>X-a.bi_valid,a.bi_valid+=c-X):(a.bi_buf|=b<>>=1,c<<=1;while(--b>0);return c>>>1}function l(a){16===a.bi_valid?(h(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function m(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;f<=W;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;co&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function n(a,b,c){var d,e,f=new Array(W+1),g=0;for(d=1;d<=W;d++)f[d]=g=g+c[d-1]<<1;for(e=0;e<=b;e++){var h=a[2*e+1];0!==h&&(a[2*e]=k(f[h]++,h))}}function o(){var a,b,c,d,f,g=new Array(W+1);for(c=0,d=0;d>=7;d8?h(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function r(a,b,c,d){q(a),d&&(h(a,c),h(a,~c)),G.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function s(a,b,c,d){var e=2*b,f=2*c;return a[e]>1;c>=1;c--)t(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],t(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,t(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],m(a,b),n(f,j,a.bl_count)}function w(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;d<=c;d++)e=g,g=b[2*(d+1)+1],++h=3&&0===a.bl_tree[2*ea[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function z(a,b,c,d){var e;for(i(a,b-257,5),i(a,c-1,5),i(a,d-4,4),e=0;e>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return I;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return J;for(b=32;b0?(a.strm.data_type===K&&(a.strm.data_type=A(a)),v(a,a.l_desc),v(a,a.d_desc),g=y(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,f<=e&&(e=f)):e=f=c+5,c+4<=e&&b!==-1?C(a,b,c,d):a.strategy===H||f===e?(i(a,(M<<1)+(d?1:0),3),u(a,ga,ha)):(i(a,(N<<1)+(d?1:0),3),z(a,a.l_desc.max_code+1,a.d_desc.max_code+1,g+1),u(a,a.dyn_ltree,a.dyn_dtree)),p(a),d&&q(a)}function F(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(ja[c]+R+1)]++,a.dyn_dtree[2*g(b)]++),a.last_lit===a.lit_bufsize-1}var G=a("../utils/common"),H=4,I=0,J=1,K=2,L=0,M=1,N=2,O=3,P=258,Q=29,R=256,S=R+1+Q,T=30,U=19,V=2*S+1,W=15,X=16,Y=7,Z=256,$=16,_=17,aa=18,ba=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ca=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],da=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],ea=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],fa=512,ga=new Array(2*(S+2));d(ga);var ha=new Array(2*T);d(ha);var ia=new Array(fa);d(ia);var ja=new Array(P-O+1);d(ja);var ka=new Array(Q);d(ka);var la=new Array(T);d(la);var ma,na,oa,pa=!1;c._tr_init=B,c._tr_stored_block=C,c._tr_flush_block=E,c._tr_tally=F,c._tr_align=D},{"../utils/common":28}],40:[function(a,b,c){"use strict";function d(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}b.exports=d},{}]},{},[10])(10)}); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/list/list.file.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/list/list.file.js new file mode 100644 index 0000000..bcc2240 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/list/list.file.js @@ -0,0 +1,591 @@ +class Model { + + constructor() { + this.urls = { + action: { + view: $a.utils.url(null, "/movement-files/view.do"), + create: $a.utils.url(null, "/movement-files/create-job-holder.do"), + + } + }; + + this._restCalls = { + list: new $a.GetRestCall(null, "/internal/api/report/movement-files"), + saveUserPreference: new $a.PostRestCall(null, "/internal/api/user-preferences"), + getUserPreferences: new $a.GetRestCall(null, "/internal/api/user-preferences"), + permissions: new $a.GetRestCall(null, "/internal/api/permissions"), + deleteMovementFileFromSession: new $a.DeleteRestCall(null, "/internal/api/session/collect-movement-file-data"), + functionCodes: new $a.GetRestCall(null, "/internal/api/function-codes"), + personnelTypes: new $a.GetRestCall(null, "/internal/api/personnel-types"), + }; + + // Default filter: + var iniFilter = { + logic: "or", + filters: [{ + field: "status", + operator: "equals", + value: $movementFileStatus.PENDING.code + }, { + field: "status", + operator: "equals", + value: $movementFileStatus.DRAFT.code + }, { + field: "status", + operator: "equals", + value: $movementFileStatus.CONFIRMED.code + }, { + field: "status", + operator: "equals", + value: $movementFileStatus.WITHDRAWN.code + }, { + field: "status", + operator: "equals", + value: $movementFileStatus.ONGOING.code + }] + }; + // Check if there is filter in session: + var checkFilter = sessionStorage.getItem("e-rights_mf_list_filter"); + if (checkFilter) { + iniFilter = JSON.parse(checkFilter); + iniFilter.filters.forEach(f => { + if (f.field === "startDateFuture" || f.field === 'endDateFuture') { + f.value = new Date(f.value); + } + }) + } + + this.dataSource = new kendo.data.DataSource({ + pageSize: 25, + transport: { + read: this._restCalls.list.settings() + }, + dataType: "json", + schema: { + model: { + fields: { + id: { + type: "number" + }, + fileId: { + type: "string" + }, + startDateFuture: { + type: "date" + }, + endDateFuture: { + type: "date" + } + + } + } + }, + serverFiltering: false, + serverPaging: false, + serverSorting: false, + sort: { + field: "lastName", + dir: "asc" + }, + // Initial filter, possibly found in sessionStorage + filter: iniFilter + }); + + } + + _create() { + $al.model._restCalls.deleteMovementFileFromSession.execute(null, null, null, null, $al.model.goToCreateMovementFile()); + } + goToCreateMovementFile(){ + $a.navigation.open($a.utils.formatUrl($al.model.urls.action.create, null, null), "_self"); + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.controller._onLoadData); + dataPoolExecutor.add("permissions", $al.model._restCalls.permissions); + dataPoolExecutor.add("userPreferences", $al.model._restCalls.getUserPreferences, null, {pagePath: "bo/list/movement-files.do"}); + dataPoolExecutor.add("functionCodes", $al.model._restCalls.functionCodes, null); + dataPoolExecutor.add("personnelTypes", $al.model._restCalls.personnelTypes, null); + dataPoolExecutor.run(); + } + +} + +class View { + + constructor() { + this._elements = new $a.DataContainer("view"); + this._templates = new $a.DataContainer("view"); + + this._templates.node("content").data(new $a.KendoTemplateData()); + this._templates.node("actions").data(new $a.KendoTemplateData()); + this._templates.node("actions").node("edit").data(new $a.KendoTemplateData()); + + this._templates.node("gridStatus").data(new $a.KendoTemplateData()); + this._elements.data(new $a.KendoElementData(), "grid"); + + this._filter_values = { + statusDS: [{ + status: $movementFileStatus.PENDING.code, label: $movementFileStatus.PENDING.label + }, { status: $movementFileStatus.DRAFT.code, label: $movementFileStatus.DRAFT.label + }, { status: $movementFileStatus.CONFIRMED.code, label: $movementFileStatus.CONFIRMED.label + }, { status: $movementFileStatus.WITHDRAWN.code, label: $movementFileStatus.WITHDRAWN.label + }, { status: $movementFileStatus.ONGOING.code, label: $movementFileStatus.ONGOING.label + }, { status: $movementFileStatus.COMPLETED.code, label: $movementFileStatus.COMPLETED.label + }, { status: $movementFileStatus.CANCELLED.code, label: $movementFileStatus.CANCELLED.label + }], + + movementContextDS: [{movementContext: "ROTATION"}, {movementContext: "SECONDMENT"}, {movementContext: "EOC"}, {movementContext: "CRISIS"}], + + movementTypeDS: [{movementType: "DEL-DEL EU"}, + {movementType: "DEL-Other"}, {movementType: "DEL-HQ"}, + {movementType: "PoR-DEL"}, {movementType: "HQ-DEL"}, {movementType: "DEL-PoOrg"}, + {movementType: "HQ-Other"}, + {movementType: "DEL EU-DEL"}, + {movementType: "DEL-DEL"}, + {movementType: "CRISIS"}], + + followupFlagsDS: [ + { followupFlags: "Derogation", followupFlagsLabel: "Derogation" }, + { followupFlags: "Urgent", followupFlagsLabel: "Urgent" }, + { followupFlags: "DoublePosting", followupFlagsLabel: "Double Posting" } + ], + + + institutionDescDS : [{institutionCode: 'COM',institutionDesc: 'Commission'}, {institutionCode: 'EEAS',institutionDesc: 'EEAS'}] + + + }; + + this._filter_options = { + operators: { + string: { + contains: "Contains", + startswith: "Starts With", + endswith: "Ends With", + eq: "Is Equal To", + doesnotcontain: "Doesn't contain" + } + + } + } + // For the year, use current year and 10 years before: 2021, 2020, 2019... 2011 + var currYear = new Date().getFullYear() + 2; + var ds = []; + for (var y = currYear; y >= (currYear - 10); y--) { + ds.push({movementYear: y, label: ("" + y)}); + } + this._filter_values.movementYearDS = ds; + + } + + render(userPreference) { + + var userOptions = null; + if (userPreference.preferences) { + userOptions = JSON.parse(userPreference.preferences); + } + + + $al.view._templates.content.data.compile(); + + // Deafult definiton of columns. Next they are updated with saved user preferences. + var gridColumns = [ + { + field: "fileId", title: "File ID", width: "140px", + filterable: $al.view._filter_options, + /*hidden: true*/ + }, + { + field: "lastName", title: "Last name", attributes: {"class": "font-weight-medium"}, + filterable: $al.view._filter_options + }, + { + field: "firstName", title: "First name", attributes: {"class": "font-weight-medium"}, + filterable: $al.view._filter_options + }, + { + field: "status", title: "Status", width: "124px", attributes: {style: "text-overflow: initial;"}, + template: '#=status#', + filterable: { + multi: true, + // dataSource: $al.model.filterStatusDataSource + // TODO : with datasource does not work when save optiones + dataSource: $al.view._filter_values.statusDS + } + }, + { + field: "startDateFuture", title: "Starting", width: "120px", format: "{0:d}" // format: "{0:MMM dd, yyyy}" + }, + { + field: "movementFrom", + title: "From - City, Country (Current)", + headerTemplate: 'From info', + filterable: $al.view._filter_options + }, + { + field: "movementTo", + title: "To - City, Country (Future)", + headerTemplate: 'To info', + filterable: $al.view._filter_options + }, + { + field: "budgetLineFuture", + title: "Commitment Position", + width: "120px", + attributes: {style: "text-overflow: initial;"}, + template: '#=data.budgetLineFuture?data.budgetLineFuture:""#', + filterable: $al.view._filter_options + }, + { + field: "followupFlags", + title: "Follow-up", + width: "140px", + attributes: {style: "text-overflow: initial;"}, + template: $followupFlags.renderValue, + filterable: { + multi: true, + dataSource: $al.view._filter_values.followupFlagsDS, + itemTemplate: $followupFlags.filterOptionTemplate + } + }, + { + field: "movementYear", + title: "Year", + width: "100px", + attributes: {style: "text-overflow: initial;"}, + template: '#=data.movementYear?data.movementYear:""#', + filterable: { + multi: true, + dataSource: $al.view._filter_values.movementYearDS + }, + hidden: true + }, + { + hidden: true, + field: "movementType", + title: "Type", + width: "120px", + attributes: {style: "text-overflow: initial;"}, + template: '#=data.movementType?data.movementType:""#', + filterable: { + multi: true, + dataSource: $al.view._filter_values.movementTypeDS + } + }, + { + hidden: true, + field: "movementContext", + title: "Context", + width: "120px", + attributes: {style: "text-overflow: initial;"}, + template: '#=data.movementContext?data.movementContext:""#', + filterable: { + multi: true, + dataSource: $al.view._filter_values.movementContextDS + } + }, + { + field: "perId", title: "PER ID", width: "110px", + filterable: $al.view._filter_options, + hidden: true + }, + { + field: "futureAssignment", title: "Job No.", width: "110px", + filterable: $al.view._filter_options, + hidden: true + }, + { + field: "endDateFuture", title: "Ending", format: "{0:d}", // format: "{0:MMM dd, yyyy}" + hidden: true + }, + { + field: "personnelTypeDesc", title: "Personnel Type", // format: "{0:MMM dd, yyyy}" + filterable: { + multi: true, + dataSource: $al.view._filter_values.personnelTypesDS + }, + hidden: true + }, + { + field: "jobFunctionDesc", title: "Job Function", // format: "{0:MMM dd, yyyy}" + filterable: { + multi: true, + dataSource: $al.view._filter_values.jobFunctionDescDS + }, + hidden: true + }, + { + field: "institutionDesc", title: "Institution", // format: "{0:MMM dd, yyyy}" + filterable: { + multi: true, + dataSource: $al.view._filter_values.institutionDescDS + }, + hidden: true + }, + { + field: "jobToFamPosting", + title: "Family Posting", + hidden: true, + width: "15%", + filterable: { + multi: true, + search: false, + }, + template: "#= jobToFamPosting #", + minResizableWidth: 100 + }, + { + headerTemplate: "", + id: "ColumnMenu", + command: [ + { + name: "edit", + text: "Edit",//$al.controller._languageBundle.actions.edit, + // JSON.stringify() cannot serialize function (the template function) + template: "", + } + ], + attributes: {style: "white-space: nowrap; position; relative"}, + width: "50px", + overflow: "never" + } + ]; + + // Apply saved user preferences + //$al.view._applyUserPreferences(gridColumns, userOptions); + + $al.view._elements.grid.element.kendoGrid({ + dataSource: $al.model.dataSource, + pageable: { + pageSize: 25, + pageSizes: [25, 50, 100, 500] + }, + sortable: true, + resizable: true, + scrollable: true, + columnMenu: false, + filterable: { + extra: false, + search: true + }, + excel: { + fileName: "MovementFiles.xlsx", + proxyURL: $al.model._restCalls.list, + filterable: true, + allPages: true + }, + columns: gridColumns, + + filter: function (e) { + if(e.field == "followupFlags" && e.filter) { + e.filter.filters.forEach(function(f){ + f.operator = "contains"; + }); + // idominju: This sets the AND operation in the Flags filter + // e.filter.logic = 'and'; + } + // Refresh of the Followup filter button when any filter is changed: + setTimeout(function(){ $followupFlags.updateActiveButton(e.sender); }, 250); + }, + + + filterMenuOpen: function (e) { + + if (e.field == "followupFlags") { + if (e.sender.dataSource.filter()) { + e.sender.dataSource.filter().filters.forEach(f => { + if (f.field == "followupFlags") { + // Only one value checked + var checkbox = e.container.find("input[value='"+f.value+"']"); + if (!checkbox[0].checked){ + e.container.find("input[value='"+f.value+"']").click(); + } + } else { + // More than one checked + if (f.filters) { + f.filters.filter(item => item.field == 'followupFlags').forEach(item => { + var cbox = e.container.find("input[value='"+item.value+"']"); + if (!cbox[0].checked){ + e.container.find("input[value='"+item.value+"']").click(); + } + }); + } + } + }); + } + } + }, + + dataBound: function (e) { + // Data updated, save filter + var currentFilter = e.sender.dataSource.filter(); + if (!currentFilter) { + currentFilter = {logic: 'and', filters: []}; + } + var filterString = JSON.stringify(currentFilter); + sessionStorage.setItem("e-rights_mf_list_filter", filterString); + + $al.view._updateClearFilterButton(); + $('[data-toggle="tooltip"]').tooltip(); + + // Initial refresh of the Followup filter button: + setTimeout(function(){ $followupFlags.updateActiveButton(e.sender); }, 250); + } + }); + + $al.view._elements.grid.component = "kendoGrid"; + + $("#columnMenuButton").kendoColumnMenu({ + filterable: false, + sortable: false, + dataSource: $al.view._elements.grid.element.data("kendoGrid").dataSource, + //dataSource: $al.model.dataSource, + columns: true, + owner: $al.view._elements.grid.element.data("kendoGrid"), + }); + + // save the user preferences when a column action is performed + $al.view._elements.grid.component.bind("columnShow", $al.controller._saveUserPreference); + $al.view._elements.grid.component.bind("columnHide", $al.controller._saveUserPreference); + + // Make the row clickable since there is only 1 button. + $("#view-grid").on("click", "tbody tr", function (e) { + $al.controller.goToEditMovementFile(this); + }); + + // Everything rendered: Update Clear Filter Button + $al.view._updateClearFilterButton(); + } + + _getUserPreferencesToSave(grid_component) { + + var all_options = grid_component.getOptions(); + var resp = {}; + var hidden = []; + + all_options.columns.forEach(column => { + if (column.hidden) { + hidden.push(column.field); + } + }); + resp.hiddenColumns = hidden; + return resp; + } + + + _updateClearFilterButton() { + var currentFilter = $("#view-grid").data("kendoGrid").dataSource.filter(); + var emptyFilter = !currentFilter || currentFilter.filters.length == 0; + $("#clear_mfile_list_filters_button").css("display", emptyFilter ? "none" : "inline-block"); + } + + + _applyUserPreferences(gridColumns, userPreferences) { + + if (!userPreferences || !Array.isArray(userPreferences.hiddenColumns)) { + // Nothing to do + return; + } + + var hiddenCols = userPreferences.hiddenColumns; + + gridColumns.forEach(column => { + if (hiddenCols.includes(column.field)) { + column.hidden = true; + } else { + column.hidden = false; + } + }); + } + + +} + + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.movement_files.list", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.model.init(); + } + + _onLoadData(data) { + $al.model.jobFunctionDesc = data.get("functionCodes").data; + $al.model.personnelTypes = data.get("personnelTypes").data; + var jobFunctionDescArray = $al.model.jobFunctionDesc.map(function(item) { + return { jobFunctionDesc : item.nameEn}; + }); + + $al.view._filter_values.jobFunctionDescDS=jobFunctionDescArray ; + $al.view._filter_values.personnelTypesDS= $al.model.personnelTypes; + + + $al.view.render(data.get("userPreferences").data); + + $al.controller._bindPermissions(data.get("permissions").data); + + $al.notifyOnReadyMvc(); + } + + _bindPermissions(permissions) { + $al.model.permissions = permissions; + + var viewModel = new kendo.data.Model.define({ + canCreate: permissions.canCreate, + canExport: permissions.canExport + }); + + + kendo.bind($al.view._templates.content.data.wrapperSelector, new viewModel({})); + } + + _getUserPreferences() { + $al.model._restCalls.getUserPreferences.execute(null, {pagePath: "bo/list/movement-files.do"}, $al.controller._onLoadUserPreferences) + } + + _saveUserPreference(e) { + let options = $al.view._getUserPreferencesToSave($al.view._elements.grid.component); + + let optionsJson = kendo.stringify(options); + let userPref = { + pagePath: "bo/list/movement-files.do", + preferences: optionsJson + }; + + $al.model._restCalls.saveUserPreference.execute(null, userPref, null); + } + + _createMovementFile(source) { + $al.model._create(); + } + + _exportMovementFiles(source) { + $al.view._elements.grid.component.saveAsExcel(); + } + + goToEditMovementFile(source) { + var item = $al.view._elements.grid.component.dataItem($(source).closest("tr")); + + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.view, null, {id: item.id})); + } + + _clearAllFilters() { + // Reset filter, this will trigger the dataBound event + var emptyFilter = {logic: 'and', filters: []}; + $("#view-grid").data("kendoGrid").dataSource.filter(emptyFilter); + } + +} + +getSessionStorageID(); + +$al.mvc(Model, View, Controller, true); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/common/file.followup-flags.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/common/file.followup-flags.js new file mode 100644 index 0000000..ac4ba2a --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/common/file.followup-flags.js @@ -0,0 +1,139 @@ +class FollowupFlags { + + constructor() { + // Custom colors declared in eeas_system.css + this.colorUrgent = 'var(--followup_urgent_red)'; // Red, not too bright + this.colorDerogation = 'var(--followup_derogation_yellow)'; // Yellow, not too bright + this.colorDoubleposting = 'var(--followup_doubleposting_blue)'; // Blue, not too intense + this.dotFontSize ='0.8rem'; + } + + renderValue(record) { + + var value = record.followupFlags; + if (!value || value === '') { + return '
    '; + } + var accum = '
    '; + if (value.includes('Urgent')) { accum += $followupFlags.dotHtml($followupFlags.colorUrgent); } + if (value.includes('Derogation')) { accum += $followupFlags.dotHtml($followupFlags.colorDerogation); } + if (value.includes('DoublePosting')) { accum += $followupFlags.dotHtml($followupFlags.colorDoubleposting); } + accum += '
    '; + return accum; + } + + filterOptionTemplate(e) { + var optionHtml = "
    "; + return optionHtml; + } + + colorInsideTemplate() { + var insideTemplate = "#= data.followupFlags === 'Urgent' ? 'var(--followup_urgent_red)' : data.followupFlags === 'Derogation' ? 'var(--followup_derogation_yellow)' : data.followupFlags === 'DoublePosting' ? 'var(--followup_doubleposting_blue)' : 'white' #"; + return insideTemplate; + } + + dotHtml(color) { + var tooltipText = 'Follow-up'; + + if (color === $followupFlags.colorDerogation) { + tooltipText = 'Derogation'; + } else if (color === $followupFlags.colorUrgent) { + tooltipText = 'Urgent'; + } else if (color === $followupFlags.colorDoubleposting) { + tooltipText = 'Double Posting'; + } + return 'circle'; + } + + // Pre-process the MF field 'followupFlags' to be easily used in the UI + expandFollowupFlags(model, useSet=true) { + + var flags = model.followupFlags; + if (!flags || flags.length == 0) { + // Zero flags + if (useSet) { + model.set("followupFlagsArray", []); + } else { + model.followupFlagsArray = []; + } + } else { + // Split into array + if (useSet) { + model.set("followupFlagsArray", flags.split(',')); + } else { + model.followupFlagsArray = flags.split(','); + } + + } + } + + // Post-process the MF field 'followupFlags' to be stored in the entity + compressFollowupFlags(model, useSet=true) { + var flagsArray = model.followupFlagsArray; + if (flagsArray && flagsArray.length > 0) { + if (useSet) { + model.set("followupFlags", flagsArray.join(',')); + } else { + model.followupFlags = flagsArray.join(','); + } + } else { + if (useSet) { + model.set("followupFlags", null); + } else { + model.followupFlags = null; + } + } + } + + appendIfTrue(value, suffix, condition) { + if (condition) { + if (typeof value === 'string' && value.length > 0) { + return '' + value + ',' + suffix; + } else { + return suffix; + } + } else { + return value; + } + } + + /* + * This method finds out if the Followup column filter is being used, + * and adds/removes the 'k-state-active' to the filter button, so it appears selected/deselected. + * I think this is necessary because we have customized the Followup column filter and the filter button + * is not automatically refreshed. + */ + updateActiveButton(sender) { + var ds = sender.dataSource; + var is_active = false; + ds.filter().filters.forEach(f => { + if (f.field == "followupFlags") { + // Only one value checked + is_active = true; + } else { + // More than one checked + if (f.filters) { + f.filters.filter(item => item.field == 'followupFlags').forEach(item => { + is_active = true; + }); + } + } + }); + if (is_active) { + setTimeout(function(){ + sender.thead.find("[data-field='followupFlags']").find(".k-grid-filter").addClass("k-state-active"); + }); + } else { + setTimeout(function(){ + sender.thead.find("[data-field='followupFlags']").find(".k-grid-filter").removeClass("k-state-active"); + }); + } + } + +} + +const $followupFlags = new FollowupFlags(); diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/common/file.future-assignment-no-job.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/common/file.future-assignment-no-job.js new file mode 100644 index 0000000..bc3284d --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/common/file.future-assignment-no-job.js @@ -0,0 +1,3 @@ +class ViewFileFutureAssignmentNoJob { + +} \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/common/file.status.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/common/file.status.js new file mode 100644 index 0000000..dee3cc2 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/common/file.status.js @@ -0,0 +1,68 @@ +class MovementFileStatus { + + constructor() { + + + this._start = {code: "START", label: null}; + this._pending = {code: "PENDING", label: null}; + this._draft = {code: "DRAFT", label: null}; + this._confirmed = {code: "CONFIRMED", label: null}; + this._withdrawn = {code: "WITHDRAWN", label: null}; + this._ongoing = {code: "ONGOING", label: null}; + this._completed = {code: "COMPLETED", label: null}; + this._cancelled = {code: "CANCELLED", label: null}; + } + + get START() { + return $movementFileStatus._start; + } + + get PENDING() { + return $movementFileStatus._pending; + } + + get DRAFT() { + return $movementFileStatus._draft; + } + + get CONFIRMED() { + return $movementFileStatus._confirmed; + } + + get WITHDRAWN() { + return $movementFileStatus._withdrawn; + } + + get ONGOING() { + return $movementFileStatus._ongoing; + } + + get COMPLETED() { + return $movementFileStatus._completed; + } + + get CANCELLED() { + return $movementFileStatus._cancelled; + } + + + _onReady() { + $a.languageBundle.retrieve($movementFileStatus._onLanguageBundleReady, "common.messages.e-rights", "e_rights.movement_files.status", false); + } + + _onLanguageBundleReady(languageBundle) { + $movementFileStatus._start.label = languageBundle.start; + $movementFileStatus._start.label = languageBundle.pending; + $movementFileStatus._draft.label = languageBundle.draft; + $movementFileStatus._confirmed.label = languageBundle.confirmed; + $movementFileStatus._withdrawn.label = languageBundle.withdrawn; + $movementFileStatus._ongoing.label = languageBundle.ongoing; + $movementFileStatus._completed.label = languageBundle.completed; + $movementFileStatus._cancelled.label = languageBundle.cancelled; + $al.notifyOnReadyComplete($movementFileStatus); + } + +} + +const $movementFileStatus = new MovementFileStatus(); +$al.registerOnReadyListener($movementFileStatus); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/common/wizard.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/common/wizard.js new file mode 100644 index 0000000..1fa73df --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/common/wizard.js @@ -0,0 +1,16 @@ +class ViewWizard { + + + activateStep(stepNum) { + if (stepNum == 1) { + $('#staffmember_article').addClass('active'); + } else if (stepNum == 2) { + $('#staffmember_article').addClass('active'); + $('#destination_article').addClass('active'); + } else if (stepNum == 3) { + $('#staffmember_article').addClass('active'); + $('#destination_article').addClass('active'); + $('#typeofmovement_article').addClass('active'); + } + } +} \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/edit/file.declaration.common.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/edit/file.declaration.common.js new file mode 100644 index 0000000..01fe781 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/edit/file.declaration.common.js @@ -0,0 +1,261 @@ +class DeclarationCommonModel { + + +} + +class DeclarationCommonView { + + + _getDecHonourStatements() { + + var statements = []; + + var ents = $al.model.declaration.entitlementTypes; + var index = 0; + for (var i = 0; i < ents.length; i++) { + var ent = ents[i]; + + + if (ent.enable && ent.entitlementTypeCat.code === 'REM' && $al.model.declarationCommon._viewModel.displayLogic.isVisibleRemovalSection) { + statements.push({ + statementId: "statement_" + index++, + statement: $al.controller.declaration._languageBundle.honour.rem_statement_1, + isChecked: false + }); + // statements.push({ statementId: "statement_"+index++, statement: $al.controller.declaration._languageBundle.honour.rem_statement_2 , isChecked:false }); + } + + + if (ent.enable && ent.entitlementTypeCat.code === 'TUD' && typeof $al.model.declarationCommon._viewModel.TUDStatements === "undefined") { + $al.model.declarationCommon._viewModel.TUDStatements = true; + statements.push({ + statementId: "statement_" + index++, + statement: $al.controller.declaration._languageBundle.honour.tud_statement_1, + isChecked: false + }); + statements.push({ + statementId: "statement_" + index++, + statement: $al.controller.declaration._languageBundle.honour.tud_statement_2, + isChecked: false + }); + } + + if (ent.enable && ent.entitlementTypeCat.code === 'INS' && typeof $al.model.declarationCommon._viewModel.INSStatements === "undefined") { + $al.model.declarationCommon._viewModel.INSStatements = true; + statements.push({ + statementId: "statement_" + index++, + statement: $al.controller.declaration._languageBundle.honour.ins_statement_1, + isChecked: false + }); + } + } + + var statementMessage = kendo.format($al.controller.declaration._languageBundle.honour.information_page_statement_1, $fileId); + + statements.push({statementId: "statement_" + index++, statement: statementMessage, isChecked: false}); + + + return statements; + } + + + _getDisplayLogicForDeclarationSections() { + + var displayLogic = {}; + displayLogic.isVisibleRemovalSection = true; + + var ents = $al.model.declaration.entitlementTypes; + var index = 0; + for (var i = 0; i < ents.length; i++) { + var ent = ents[i]; + + + if (ent.entitlementTypeCat.code === 'REM') { //Logic for removal section + if (!ent.enable) { //If entitlement type removal disable we do not show + displayLogic.isVisibleRemovalSection = false; + + } + for (var y = 0; y < ent.entitlementMaxList.length; y++) { //If any of the entitlement max (flat rates ) are not defined we do not show + var entMax = ent.entitlementMaxList[y]; + + if (typeof entMax.maxValue == "undefined" && entMax.enable && entMax.entitlementMaxCat.code != "STORAGE") { // To show Removal tab we need to check that all enable entmax had a value. this is becasue of the exception of entry into storage + + displayLogic.isVisibleRemovalSection = false; + } + } + + } + + + /* if (ent.entitlementMaxList.maxValue === 'INS' ) { //Logic for Instalation section in the future + + + }*/ + } + + + //All the logic for display declaration of honour or declaration cards goes here $al.model.declarationCommon._viewModel + var viewModel = new kendo.data.Model.define(); + $al.model.declarationCommon._viewModel = new viewModel({ + displayLogic: displayLogic, + + + }); + + var decHonourList = $al.view.declarationCommon._getDecHonourStatements(); + $al.model.declarationCommon._viewModel.displayLogic.isVisibleDecOfHonour = (decHonourList.length > 0); + $al.model.declarationCommon._viewModel.declarationOfHonourList = decHonourList; + + return displayLogic; + } + + _isHODMovementFile() { + if ($al.model.edit.movementFile.movementContext.name === 'CRISIS') + return true; + return (typeof $al.model.edit._viewModel.hodPosting != "undefined" && $al.model.edit._viewModel.hodPosting); + } + + _showHODOptions() { + if (typeof $al.model.declaration._viewModel != "undefined" && typeof $al.model.declaration._viewModel.declaration.removalRequestType != "undefined") { //safe check + if ($al.model.declaration._viewModel.displayLogic.isVisibleRemovalSection === true && $al.model.declaration._viewModel.declaration.removalRequestType !== "NO_REMOVAL") { // if we show removal option, then we check + return $al.view.declarationCommon._isHODMovementFile(); + } + } + delete $al.model.declaration._viewModel.declaration.hodOption; //when false we reset the value + return false; + } + + _showEntryIntoStorage() { + if (typeof $al.model.declaration._viewModel != "undefined" && $al.model.declaration._viewModel.displayLogic.isVisibleRemovalSection === true && $al.model.declaration._viewModel.declaration.removalRequestType !== "NO_REMOVAL") { // if we show removal optio + if ($al.view.declarationCommon._showHODOptions() || $al.view.declarationCommon._isHODMovementFile()) { + if ($al.model.declaration._viewModel.declaration.hodOption === "AIR_WITH_EIS") {// we show EIS when is hod and select option 1 AIR + return true; + } + } else if (typeof $al.model.edit._viewModel.jobToFamilyPosting != "undefined" && !$al.model.edit._viewModel.jobToFamilyPosting) { // if non hod and future job is NON family we show EIS- RIGD-1475 + return true; + } + } + delete $al.model.declaration._viewModel.declaration.entryIntoStorage; //when false we reset the value + return false; + } + + + _showCountryForEntryIntoStorage() { + + if (typeof $al.model.declaration._viewModel != "undefined" && $al.model.declaration._viewModel.showCountryForEntryIntoStorage) { + + if ($al.model.declaration._viewModel.declaration.entryIntoStorage === "true" || $al.model.declaration._viewModel.declaration.entryIntoStorage === true) { //it is a text the true, impirtant the ===, we show EIS when is hod and select option 1 AIR + + return true; + } else { // Else we hide it + + delete $al.model.declaration._viewModel.declaration.countryForEIS; + delete $al.model.declaration._viewModel.declaration.cityForEIS;//when false we reset the value + + return false; + } + } + delete $al.model.declaration._viewModel.declaration.countryForEIS; + delete $al.model.declaration._viewModel.declaration.cityForEIS;//when false we reset the value + + return false; + } + + +} + +class DeclarationCommonController { + + _onLoadCountries(countries) { + + var selValue = "Select a country"; + var selLabel = "Select a country"; + if (typeof $al.model.declaration._viewModel != "undefined") { //safe check + + if ($al.model.declaration._viewModel.declaration.countryForEIS) { + // This is the case when Country/City refers to TO (future location) + selValue = $al.model.declaration._viewModel.declaration.countryForEIS.code; + selLabel = $al.model.declaration._viewModel.declaration.countryForEIS.name; + } + + //$('#country_for_eis_dropdown') + $al.view.declaration._elements.country_for_eis.data.element.kendoDropDownList({ + dataSource: countries, + dataTextField: "name", + dataValueField: "code", + optionLabel: selLabel, + value: selValue, + autoWidth: true, + change: function (e) { + + var index = this.selectedIndex, dataItem; + dataItem = this.dataItem(index); + + + delete $al.model.declaration._viewModel.declaration.cityForEIS; + // Set country + $al.model.declaration._viewModel.declaration.countryForEIS = {}; + $al.model.declaration._viewModel.declaration.countryForEIS.code = dataItem.code; + $al.model.declaration._viewModel.declaration.countryForEIS.name = dataItem.name; + + $al.controller.declarationCommon._getCities(dataItem.code); + } + }); + + + if ($al.model.declaration._viewModel.declaration.countryForEIS) { + $al.controller.declarationCommon._getCities($al.model.declaration._viewModel.declaration.countryForEIS.code); + } else { + $al.controller.declarationCommon._getCities(""); + } + } + + } + + + _getCities(code) { + if (code != "") { + $al.model.declaration._restCalls.cities.execute({countryCode: code}, null, $al.controller.declarationCommon._loadCitiesData); + } else { + // Force instantiation of city list + $al.controller.declarationCommon._getCityDropdownListInstance(); + } + } + + _loadCitiesData(cities) { + + var selValue = "Select a city"; + var selLabel = "Select a city"; + + + if ($al.model.declaration._viewModel.declaration.cityForEIS) { + // This is the case when Country/City refer to TO (future location) + selValue = $al.model.declaration._viewModel.declaration.cityForEIS.code; + selLabel = $al.model.declaration._viewModel.declaration.cityForEIS.name; + } + + var city_list = $al.controller.declarationCommon._getCityDropdownListInstance(); + var dataSource = new kendo.data.DataSource({data: cities}); + city_list.data("kendoDropDownList").setDataSource(dataSource); + city_list.data("kendoDropDownList").select(function (dataItem) { + return dataItem.code === selValue; + }); + } + + + _getCityDropdownListInstance() { + var list = $al.view.declaration._elements.city_for_eis.data.element.kendoDropDownList({ + dataTextField: "name", + dataValueField: "code", + optionLabel: {code: "Select a city", name: "Select a city"}, + autoWidth: true, + + }); + + return list; + } + + +} + +_registerMVCSection("declarationCommon", DeclarationCommonModel, DeclarationCommonView, DeclarationCommonController); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/edit/file.declaration.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/edit/file.declaration.js new file mode 100644 index 0000000..300baf8 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/edit/file.declaration.js @@ -0,0 +1,413 @@ +class DeclarationModel { + + constructor() { + this._restCalls = { + getDeclaration: new $a.GetRestCall(null, "/internal/api/declarations"), + getBankInfo: new $a.GetRestCall(null, "/internal/api/bank-accounts"), + getEntitlementTypes: new $a.GetRestCall(null, "/internal/api/entitlement-types"), + countries: new $a.GetRestCall(null, "/internal/api/countries"), + cities: new $a.GetRestCall(null, "/internal/api/countries/{countryCode}/cities"), + + refreshDeclarationPersons: new $a.GetRestCall(null, "/internal/api/declaration-persons-eligibility") + }; + } + + init(dataPoolExecutor) { + dataPoolExecutor.add("declaration", $al.model.declaration._restCalls.getDeclaration, null, {movementFileId: $fileId}); + dataPoolExecutor.add("entitlementTypes", $al.model.declaration._restCalls.getEntitlementTypes, null, {movementFileId: $fileId}); + + dataPoolExecutor.add("countries", $al.model.declaration._restCalls.countries, null, null); + + + } + + refreshDeclaration() { + if ($al.model.permissions.canConsultEntitlements) { + $al.model.declaration._restCalls.getDeclaration.execute(null, {movementFileId: $fileId}, $al.model.declaration.onDeclarationRetrieved); + + } + } + + onDeclarationRetrieved(data) { + $al.model.declaration.declaration = data; + $al.model.declaration._restCalls.getBankInfo.execute(null, {personId: $al.model.declaration.declaration.staffMember.id}, $al.model.declaration.onDeclaratioAndBankInfonRetrieved); + + } + + onDeclaratioAndBankInfonRetrieved(data) { + $al.model.declaration.bankInfo = data; + + if($a.utils.isNull($al.model.declaration.declaration)){ + $al.view.declaration.renderEmptyTemplate(); + + var viewModel = new kendo.data.Model.define(); + $al.model.declaration._viewModel = new viewModel({ + isVisible: false, + message: "Movement File is in draft state" + }); + + $al.view.declaration._bindView(); + }else if ($a.utils.isNotNull($al.model.declaration.declaration) && $al.model.declaration.declaration.enable) { + + if ($a.utils.isNotNull($al.model.declaration.declaration.declarationPersons)) { + $al.model.declaration._relativesDS = $al.model.declaration.declaration.declarationPersons; + } else { + $al.model.declaration._relativesDS = []; + } + + if ($a.utils.isNull($al.model.declaration.declaration.personBankInfo)) { + $al.model.declaration.declaration.personBankInfo = {baf: '', ibanCode: ''} + } + + $al.view.declaration.render(); + + $al.view.declaration._initializeView(); + $al.controller.declarationCommon._onLoadCountries($al.model.countries); + $al.view.declaration._bindView(); + + } else if ($al.model.movementFile.state === "DRAFT" || "PENDING") { + $al.view.declaration.renderEmptyTemplate(); + + var viewModel = new kendo.data.Model.define(); + $al.model.declaration._viewModel = new viewModel({ + isVisible: false, + message: "You can submit your declaration if your movement file is 'Confirmed' and the flat rates and ceilings in the entitlements are defined. You will be notified accordingly." + }); + + $al.view.declaration._bindView(); + } else if ($al.controller.isMovementFileActive() && !$al.model.declaration.declaration.enable) { + // Is this condition ever met?? + $al.view.declaration.renderEmptyTemplate(); + + var viewModel = new kendo.data.Model.define(); + $al.model.declaration._viewModel = new viewModel({ + isVisible: false, + message: "You can add the declaration as soon as the flat rates will be defined by BHR.6" + }); + + $al.view.declaration._bindView(); + } + } + + notifyDataRetrieved(data) { + $al.model.declaration.declaration = data.get("declaration").data; + $al.model.declaration.entitlementTypes = data.get("entitlementTypes").data; + $al.model.countries = data.get("countries").data; + + + } + +} + +class DeclarationView { + + constructor() { + this._templates = new $a.DataContainer("declaration"); + this._elements = new $a.DataContainer("declaration"); + + this._templates.data(new $a.KendoTemplateData()); + this._elements.node("country_for_eis").data(new $a.KendoElementData()); + this._elements.node("city_for_eis").data(new $a.KendoElementData()); + this._elements.node("relatives").node("grid").data(new $a.KendoElementData()); + this._templates.node("relatives").node("grid").data(new $a.KendoTemplateData()); + + } + + render() { + $al.view.declaration._templates.data.compile(); + // $al.view.declaration._templates.actions.data.compile(); + + $al.view.declaration._templates.relatives.grid.data.compile(); + + $al.view.declaration._renderRelativesGrid(); + + } + + renderEmptyTemplate() { + $al.view.declaration._templates.data.compile(); + } + + _renderRelativesGrid() { + + var columns_desc = [ + { + field: "declared", + title: "Join", + width: "50px", + template: "check_boxcheck_box_outline_blank", + headerAttributes: { + "class": "pr-0" + }, + attributes: { + "class": "pl-2 pr-0" + } + }, + { + field: "relative.lastName", + title: "Name", + width: "35%", + attributes: { + "class": "font-weight-medium" + }, + template: "#= relative.lastName #, #= relative.firstName #" + }, + /*{ + field: "relative.firstName", + title: "First Name", + width: "20%", + attributes: { + "class": "pl-2 pr-0 font-weight-medium" + } + },*/ + { + field: "relative.age", + title: "Age", + width: "75px" + }, + { + field: "relation", + title: "Relation", + width: "30%" + }, + { + field: "tudEligible", + title: "TUD Eligible", + width: "40%", + headerTemplate: "
    " + + "TUD Eligible information" + + "
    ", + template: $al.view.declaration._templateTudEligible, + headerAttributes: { + "class": "pl-0" + }, + attributes: { + "class": "pl-0 pr-0 " + }, + }, + { + // Blank column, will be made visible when "TUD Eligible" is hidden, in order to preserve + // the width of the other columns + title: "", + width: "40%", + template: "
    ", + hidden: true + } + ]; + + var tud_visible = $al.view.declaration._isTUDEnabled($al.model.entitlements.dataSourceListView); + + // If TUD entitlement not available or not enabled, then set "TUD Eligible" column to hidden + columns_desc[4].hidden = !tud_visible; + columns_desc[5].hidden = tud_visible; + + $al.view.declaration._elements.relatives.grid.data.element.kendoGrid({ + dataSource: $al.model.declaration._relativesDS, + scrollable: false, + sortable: true, + noRecords: { + template: "" + }, + detailTemplate: kendo.template($("#claims-edit-template").html()), + detailInit: $al.controller.declaration._detailInit, + dataBound: $al.view.declaration._onDataBound, + columns: columns_desc + }); + + $al.view.declaration._elements.relatives.grid.data.component = "kendoGrid"; + + } + + _isTUDEnabled(entitlement_list) { + for (var i = 0; i < entitlement_list.total(); i++) { + var item = entitlement_list.at(i); + if (item.enable && item.entitlementTypeCat.code === "TUD") { + return true; + } + } + return false; + } + + _onDataBound(e) { + var grid = e.sender; + + $.each(grid.tbody.find('tr'), function () { + var model = grid.dataItem(this); + + if (model.declared) {//changed to see if i can select the row with database Id of 2 + $('[data-uid=' + model.uid + ']').addClass('k-state-selected'); + } + + if (model.hasOwnProperty("attachments") || model.hasOwnProperty("remarks")) { + grid.expandRow($('[data-uid=' + model.uid + ']')); + $('[data-uid=' + model.uid + ']').addClass('eeas-has-claim'); + } + //$('[data-toggle="tooltip"]').tooltip(); + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }) + }); + + /* Hide the first column with the row expand toggle */ + this.wrapper.find(".k-hierarchy-col").remove();//remove col elements for hierarchy column + this.wrapper.find(".k-hierarchy-cell").hide();//remove cell elements for hierarchy column + + /* Select first row with the staff member as he goes by default in rotation */ + // var grid = e.sender; + // grid.select($("tr:first", grid.tbody)); + + + } + + _initializeView() { + + // Fields for rendering "sections" + var displayLogic = $al.view.declarationCommon._getDisplayLogicForDeclarationSections(); + var isVisibleRemovalSection = displayLogic.isVisibleRemovalSection; + + + var bankInfo = {accountCode: "Not Set"}; + + // Unused in Declaration (Back office) + // var has_bank_accounts = false; + + if ($al.model.declaration.declaration.personBankInfo + && ($al.model.declaration.declaration.personBankInfo.ibanCode) + && $al.model.declaration.declaration.personBankInfo.ibanCode.length > 0) { + $al.model.declaration.declaration.personBankInfo.ibanCode = $al.model.declaration.declaration.personBankInfo.ibanCode.replace(/\W/gi, '').replace(/(.{4})/g, '$1 '); + bankInfo = {accountCode: $al.model.declaration.declaration.personBankInfo.ibanCode}; + } + + if ($al.model.declaration.declaration.personBankInfo + && ($al.model.declaration.declaration.personBankInfo.bankAccountCode) + && $al.model.declaration.declaration.personBankInfo.bankAccountCode.length > 0) { + $al.model.declaration.declaration.personBankInfo.bankAccountCode = $al.model.declaration.declaration.personBankInfo.bankAccountCode.replace(/\W/gi, '').replace(/(.{4})/g, '$1 '); + bankInfo = {accountCode: $al.model.declaration.declaration.personBankInfo.bankAccountCode}; + } + + /* + * Unused in Declaration (Back office) + if ($al.model.declaration.declaration.personBankInfo) { + has_bank_accounts = true; + } + */ + + // Fields for rendering "Milestones" (Declaration History) + + var has_created_value = + $al.model.declaration.declaration.hasOwnProperty("userCreatedAt") + && $al.model.declaration.declaration.userCreatedAt != null; + var has_updated_value = + $al.model.declaration.declaration.hasOwnProperty("userUpdatedAt") + && $al.model.declaration.declaration.userUpdatedAt != null; + + + var viewModel = new kendo.data.Model.define(); + $al.model.declaration._viewModel = new viewModel({ + isVisible: true, + displayLogic: $al.model.declarationCommon._viewModel.displayLogic, + declarationOfHonourList: $al.model.declarationCommon._viewModel.declarationOfHonourList, + hasCreatedValue: has_created_value, + hasUpdatedValue: has_updated_value, + declaration: $al.model.declaration.declaration, + creation_date: has_created_value ? + $al.view.declaration._formatDate($al.model.declaration.declaration.userCreatedAt) : '', + updating_date: has_updated_value ? + $al.view.declaration._formatDate($al.model.declaration.declaration.userUpdatedAt) : '', + + message: " ", + name: $al.model.movementFile.jobHolder.firstName + ', ' + $al.model.movementFile.jobHolder.lastName, + personBankInfo: bankInfo, + + isCompleted: ($al.model.movementFile.state === 'COMPLETED'), + + // Unused in Declaration (Back office) + // has BankAccounts: has_bank_accounts, + + isMovementFileActive: $al.controller.isMovementFileActive(), + goToDeclarationInFrontOffice: $al.controller.entitlements._goToDeclarationInFrontOffice, + showHODOptions: $al.view.declarationCommon._showHODOptions, + showEntryIntoStorage: $al.view.declarationCommon._showEntryIntoStorage, + showCountryForEntryIntoStorage: $al.view.declarationCommon._showCountryForEntryIntoStorage, + showUpdateButton: $al.view.declaration._canShowUpdateButton() + }); + } + + _formatDate(yyyMMddTH_date) { + + if (!yyyMMddTH_date) { + return ''; + } + var resp = kendo.toString(kendo.parseDate(yyyMMddTH_date), 'MMM dd, yyyy') + + ' at ' + kendo.toString(kendo.parseDate(yyyMMddTH_date), 't'); + return resp; + } + + _templateTudEligible(dataItem) { + let templateTud = "
    "; + if (dataItem.tudEligible == false) { + templateTud += "
    cancel"; + templateTud += "help
    "; + + } else { + templateTud += "check_circle"; + } + templateTud += "
    "; + return templateTud; + } + + _bindView() { + kendo.bind($al.view.declaration._templates.data.wrapperSelector, $al.model.declaration._viewModel); + } + + _canShowUpdateButton() { + return $al.controller.isMovementFileActive() && $al.model.permissions.canUpdateDeclaration; + } + + +} + +class DeclarationController { + + constructor() { + this._languageBundle = null; + } + + notifyReady(languageBundlePoolExecutor) { + languageBundlePoolExecutor.add("declaration", "common.messages.e-rights", "e_rights.movement_files.declaration", false); + } + + notifyLanguageBundleReady(languageBundles) { + $al.controller.declaration._languageBundle = languageBundles.get("declaration"); + } + + notifyDataInitialized() { + } + + _detailInit(e) { + } + + + //refresh family memebers from sysper + doRefreshDeclarationPersons() { + $al.model.declaration._restCalls.refreshDeclarationPersons.execute(null, {movementFileId: $fileId}, $al.controller.declaration.onDeclarationPersonsRefreshed,null,null,true); + } + + _refreshDeclarationPersons() { + $al.controller.declaration.doRefreshDeclarationPersons(); + } + + onDeclarationPersonsRefreshed() { + // This refreshes the tab without the "refresh page" effect + $("#declaration-tab").click(); + $a.toast.showSuccess(' Declaration has been updated successfully'); + } + +} + +_registerMVCSection("declaration", DeclarationModel, DeclarationView, DeclarationController); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/edit/file.edit.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/edit/file.edit.js new file mode 100644 index 0000000..a74994a --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/edit/file.edit.js @@ -0,0 +1,1570 @@ +class EditModel { + + constructor() { + + this.EMAIL_REGEX = '^(([^<>()[\\]\\\\.,;:\\s@"]+(\\.[^<>()[\\]\\\\.,;:\\s@"]+)*)|(".+"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$'; + + this._restCalls = { + movementTypes: new $a.GetRestCall(null, "/internal/api/movement-types"), + save: new $a.PostRestCall(null, "/internal/api/session/save-movement-file-data"), + newStateMachine: new $a.PostRestCall(null, "/internal/api/movement-files/stateMachineEvent/{stateMachineEvent}"), + getStateMachineHistory: new $a.GetRestCall(null, "/internal/api/movement-files/{movementFileId}/stateMachineHistory"), + getNotificationsHistory: new $a.GetRestCall(null, "/internal/api/movement-files/{movementFileId}/notificationsHistory"), + documentUrlById: new $a.GetRestCall(null, "/internal/api/document/url/{documentId}"), + countries: new $a.GetRestCall(null, "/internal/api/countries"), + cities: new $a.GetRestCall(null, "/internal/api/countries/{countryCode}/cities"), + searchHrsDocument: new $a.GetRestCall(null, "/internal/api/document"), + saveMovementFileInSession: new $a.PostRestCall(null, "/internal/api/session/collect-movement-file-data"), + draftToPending: new $a.PostRestCall(null, "/internal/api/movement-files/draft-to-pending"), + updateDraft: new $a.PutRestCall(null, "/internal/api/movement-files/draft"), + deleteMovementFileFromSession: new $a.DeleteRestCall(null, "/internal/api/session/collect-movement-file-data"), + setPrivatePersonEmail: new $a.PostRestCall(null, "/internal/api/person-emails"), + deletePrivatePersonEmail: new $a.DeleteRestCall(null, "/internal/api/person-emails/{personId}"), + iataAirportCityCode : new $a.GetRestCall(null,"/internal/api/iata-airports/city/{cityCode}"), + iataAirport : new $a.GetRestCall(null,"/internal/api/iata-airports/{id}"), + deleteMovementFile: new $a.DeleteRestCall(null, "/internal/api/movement-files/{id}") + }; + + this.urls = { + action: { + previous: $a.utils.url(null, "/movement-files/staff-member-data.do"), + next: $a.utils.url(null, "/movement-files/create-details.do"), + navigateToList: $a.utils.url(null, "/list/movement-files.do"), + view: $a.utils.url(null, "/movement-files/view.do"), + staffMembers: $a.utils.url(null, "/movement-files/create-job-holder.do"), + details: $a.utils.url(null, "/movement-files/create-details.do"), + noJobDetails: $a.utils.url(null, "/movement-files/create-details-no-job.do"), + futureAssignment: $a.utils.url(null, "/movement-files/create-future-assignment.do"), + createMovementFile: $a.utils.url(null, "/movement-files/create-job-holder.do"), + jobHolderScreen: $a.utils.url(null, "/movement-files/staff-member-data.do") + } + }; + } + + init(dataPoolExecutor) { + dataPoolExecutor.add("stateMachineHistory", $al.model.edit._restCalls.getStateMachineHistory, {movementFileId: $fileId}); + dataPoolExecutor.add("notificationHistory", $al.model.edit._restCalls.getNotificationsHistory, {movementFileId: $fileId}); + + } + + notifyDataRetrieved(data) { + $al.model.edit.movementFile = data.get("movementFile").data; + + + + $followupFlags.expandFollowupFlags($al.model.edit.movementFile, false /* Dont use 'set' method */); + + $al.model.edit.stateMachineHistory = data.get("stateMachineHistory").data; + $al.model.edit.notificationHistory = data.get("notificationHistory").data; + + $al.view.edit._initializeView($al.model.edit.movementFile); + + // Repeat the Follow up flag in the header of the MF + if($al.model.edit._viewModel.followupFlags) { + $al.model._viewModel.set('urgentPresent', $al.model.edit._viewModel.followupFlags.includes('Urgent') ); + $al.model._viewModel.set('derogationPresent', $al.model.edit._viewModel.followupFlags.includes('Derogation') ); + $al.model._viewModel.set('doublepostingPresent', $al.model.edit._viewModel.followupFlags.includes('DoublePosting') ); + } + } + + _getMovementTypes() { + var dataPoolExecutor2 = new $a.RestCallPoolExecutor($al.view.edit._renderMovementTypes); + + + dataPoolExecutor2.add("movementContext",$al.model.edit._restCalls.movementTypes,null,{contextId: $al.model.edit.movementFile.movementContext.id}); + if (typeof $al.model.edit.movementFile.cityFrom != "undefined") { + dataPoolExecutor2.add("iataFrom",$al.model.edit._restCalls.iataAirportCityCode,{cityCode: $al.model.edit.movementFile.cityFrom.code} ); + } + if (typeof $al.model.edit.movementFile.cityTo != "undefined") { + dataPoolExecutor2.add("iataTo", $al.model.edit._restCalls.iataAirportCityCode, {cityCode: $al.model.edit.movementFile.cityTo.code}); + } + if($al.model.edit.movementFile.iataCode) { + dataPoolExecutor2.add("iataOrigin", $al.model.edit._restCalls.iataAirport, {id: $al.model.edit.movementFile.iataCode}); + } + dataPoolExecutor2.run(); + } + + //Checks if Ending date is greater than Starting date + _isEndingDateGreaterThan(serviceStartDate, serviceEndDate) { + var serviceStartDateMidnight = $a.utils.setTimeToMidnight(serviceStartDate); + var serviceEndDateMidnight = $a.utils.setTimeToMidnight(serviceEndDate); + + return serviceEndDateMidnight < serviceStartDateMidnight ? false : true; + } + + _getCities(code) { + + if ($a.utils.isNotNull(code) && code != "") { + $al.model.edit._restCalls.cities.execute({countryCode: code}, null, $al.view.edit._loadCitiesData); + } else { + $al.view.edit._elements_evacuation.evacuation_city.data.element.kendoDropDownList({ + optionLabel: "Select a city", + value: "Select a city" + }); + } + } +} + +class EditView { + + constructor() { + this._templates = new $a.DataContainer("edit"); + this._elements = new $a.DataContainer("edit"); + + this._templates.data(new $a.KendoTemplateData()); + this._templates.node("basic").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("warn").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("staffMember").data(new $a.KendoTemplateData()); + this._templates.node("destination").data(new $a.KendoTemplateData()); + this._templates.node("details").data(new $a.KendoTemplateData()); + this._templates.node("actions").data(new $a.KendoTemplateData()); + this._templates.node("delete").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("delete").node("dialog").data(new $a.KendoTemplateData(), "footer"); + + // Individual checkboes for Followup flags. + this._elements.node("followup_urgent").data(new $a.KendoElementData()); + this._elements.node("followup_derogation").data(new $a.KendoElementData()); + this._elements.node("followup_doubleposting").data(new $a.KendoElementData()); + + this._elements.node("start_date").data(new $a.KendoElementData()); + this._elements.node("end_date").data(new $a.KendoElementData()); + + this._elements.node("eoc_end_date").data(new $a.KendoElementData()); + this._elements.node("year").data(new $a.KendoElementData()); + this._elements.node("context").data(new $a.KendoElementData()); + + this._elements.node("notes").data(new $a.KendoElementData()); + + // This field is not a checkbox now: + // this._elements.node("non_family_posting").data(new $a.KendoElementData()); + + this._elements.node("child_free_posting").data(new $a.KendoElementData()); + this._elements.node("movement_type").data(new $a.KendoElementData()); + this._elements.node("iata_code_from").data(new $a.KendoElementData()); + this._elements.node("iata_code_from_code").data(new $a.KendoElementData()); + this._elements.node("iata_code_from_container").data(new $a.KendoElementData()); + this._elements.node("iata_code_to").data(new $a.KendoElementData()); + this._elements.node("iata_code_to_code").data(new $a.KendoElementData()); + this._elements.node("iata_code_to_container").data(new $a.KendoElementData()); + this._elements.node("iata_code_origin").data(new $a.KendoElementData()); + this._elements.node("iata_code_origin_code").data(new $a.KendoElementData()); + this._elements.node("iata_code_origin_container").data(new $a.KendoElementData()); + + //reason inside the deleted MF - details section + this._templates_deleted = new $a.DataContainer("deleted"); + this._elements_deleted = new $a.DataContainer("deleted"); + this._templates_deleted.data(new $a.KendoTemplateData()); + this._templates_deleted.node("details").data(new $a.KendoTemplateData()); + this._templates_deleted.node("reason").data(new $a.KendoElementData()); + this._elements_deleted.node("details").data(new $a.KendoElementData()); + this._elements_deleted.node("reason").data(new $a.KendoElementData()); + + + this._templates_eoc = new $a.DataContainer("eoc"); + this._elements_eoc = new $a.DataContainer("eoc"); + this._templates_eoc.data(new $a.KendoTemplateData()); + this._templates_eoc.node("details").data(new $a.KendoTemplateData()); + this._elements_eoc.node("details").data(new $a.KendoElementData()); + this._templates_eoc.node("destination").data(new $a.KendoTemplateData()); + this._elements_eoc.node("destination").data(new $a.KendoElementData()); + + this._elements_eoc.node("rights").data(new $a.KendoElementData()); +// this._elements_eoc.node("notes").data(new $a.KendoElementData()); + + //evacuation inside destination section + this._templates_evacuation = new $a.DataContainer("evacuation"); + this._elements_evacuation = new $a.DataContainer("evacuation"); + this._templates_evacuation.node("destination").data(new $a.KendoTemplateData()); + this._elements_evacuation.node("is_evacuation_location").data(new $a.KendoElementData()); + this._elements_evacuation.node("evacuation_country").data(new $a.KendoElementData()); + this._elements_evacuation.node("evacuation_city").data(new $a.KendoElementData()); + + //edit aipn notification inside communication + this._elements_aipn = new $a.DataContainer("edit"); + + this._elements_aipn.node("aipn_notif_date").data(new $a.KendoElementData()); + this._elements_aipn.node("aipn_file_id").data(new $a.KendoElementData()); + this._elements_aipn.node("aipn_document_id").data(new $a.KendoElementData()); + + } + + _render() { + $al.view.edit._templates.data.compile(); + $al.view.edit._templates.actions.data.compile(); + $al.view.edit._templates.staffMember.data.compile(); + + $al.view.edit._templates.details.data.compile(); + + if ($al.model.edit.movementFile.movementContext.name === 'EOC') { + $al.view.edit._templates_eoc.details.data.compile(); + $al.view.edit._templates_eoc.destination.data.compile(); + } else { + $al.view.edit._templates.destination.data.compile(); + } + + var calendarDate = new Date($al.model.edit.movementFile.startDate); + $al.view.edit._elements.start_date.data.element.kendoDatePicker({ + value: $al.model.edit.movementFile.startDate, + max: setSpecificDate(calendarDate, 11, 31), + min: setSpecificDate(calendarDate, 0, 1), + month: { + empty: '#= data.value #' + }, + parseFormats: ["dd/MM/yyyy"] + }); + + $al.view.edit._elements.end_date.data.element.kendoDatePicker(); + + var calendarEocDate = new Date($al.model.edit.movementFile.estimatedEndDate); + $al.view.edit._elements.eoc_end_date.data.element.kendoDatePicker({ + value: $al.model.edit.movementFile.estimatedEndDate, + max: setSpecificDate(calendarEocDate, 11, 31), + min: setSpecificDate(calendarEocDate, 0, 1), + month: { + empty: '#= data.value #' + }, + parseFormats: ["dd/MM/yyyy"] + }); + + $(`#aipn-date-picker-1`).kendoDatePicker({ + max: $a.utils.setTimeToMidnight(new Date()), + parseFormats: ["yyyy-MM-dd"], + value: $al.model.edit.movementFile.aipnNotifDate + }); + $(`#aipn-date-picker-2`).kendoDatePicker({ + max: $a.utils.setTimeToMidnight(new Date()), + parseFormats: ["yyyy-MM-dd"], + value: $al.model.edit.movementFile.aipnNotifDate + }); + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }) + } + + _showDeleteDialog() { + $a.modalDialog.showAnswer(null, + $al.controller.edit._languageBundle.actions.delete.dialog.title, + $al.view.edit._templates.delete.dialog.body.template({}), + $al.view.edit._templates.delete.dialog.footer.template({}) + ); + } + + _renderDates() { + if (typeof $al.model.edit.movementFile.startDate !== 'undefined') { + var startDatePicker = $al.view.edit._elements.start_date.data.element.data("kendoDatePicker"); + if (typeof startDatePicker !== 'undefined') { + let startDateDate = new Date($al.model.edit.movementFile.startDate) ; + let userTimezoneOffset= startDateDate.getTimezoneOffset() * 60000; + startDatePicker.value(new Date(startDateDate.getTime() + userTimezoneOffset)); + } + } + + if (typeof $al.model.edit.movementFile.estimatedEndDate !== 'undefined') { + let endDatePicker = $al.view.edit._elements.end_date.data.element.data("kendoDatePicker"); + if (typeof endDatePicker !== 'undefined') { + endDatePicker.value(new Date($al.model.edit.movementFile.estimatedEndDate)); + } + + let eocEndDatePicker = $al.view.edit._elements.eoc_end_date.data.element.data("kendoDatePicker"); + if (typeof eocEndDatePicker != 'undefined') { + let estimatedEndDateDate = new Date($al.model.edit.movementFile.estimatedEndDate) ; + let userTimezoneOffset= estimatedEndDateDate.getTimezoneOffset() * 60000; + eocEndDatePicker.value(new Date(estimatedEndDateDate.getTime() + userTimezoneOffset)); + } + } + } + + _renderEvacuation() { + if (typeof $al.model.edit.movementFile.jobTo != 'undefined' && typeof $al.model.edit.movementFile.jobTo.evacuationLevelCodeId != 'undefined') { + $al.controller.edit._setEvacuationInfo($al.model.edit.movementFile.jobTo.evacuationCode); + $al.view.edit._templates_evacuation.destination.data.compile(); + $al.model.edit._viewModel.canChangeDestination = false; + $al.model.edit._viewModel.canCheckEvacuationDestination = false; + } + } + + _renderMovementTypes(data) { + $al.model.edit.movementTypes = data.get("movementContext").data; + + if (typeof $al.model.edit.movementFile.cityFrom != "undefined") { + + if(data.get("iataFrom").data == null){ + $al.model.edit.movementFile.iataFrom = ""; + $al.model.edit.movementFile.iataFromAirportName = ""; + }else{ + $al.model.edit.movementFile.iataFrom = data.get("iataFrom").data.id; + $al.model.edit.movementFile.iataFromAirportName = data.get("iataFrom").data.airportName; + } + + }else{ + $al.model.edit.movementFile.iataFrom= "N/A"; + } + + if (typeof $al.model.edit.movementFile.cityTo != "undefined") { + + if(data.get("iataTo").data == null){ + $al.model.edit.movementFile.iataTo = ""; + $al.model.edit.movementFile.iataToAirportName = ""; + }else{ + $al.model.edit.movementFile.iataTo = data.get("iataTo").data.id; + $al.model.edit.movementFile.iataToAirportName = data.get("iataTo").data.airportName; + } + + }else{ + $al.model.edit.movementFile.iataTo= "N/A"; + } + + if($al.model.edit.movementFile.iataCode) { + + if(data.get("iataOrigin").data == null){ + $al.model.edit.movementFile.iataOrigin = ""; + $al.model.edit.movementFile.iataOriginAirportName = ""; + }else{ + $al.model.edit.movementFile.iataOrigin = data.get("iataOrigin").data.id; + $al.model.edit.movementFile.iataOriginAirportName = data.get("iataOrigin").data.airportName; + } + + }else{ + $al.model.edit.movementFile.iataOrigin = "N/A"; + } + + + $al.view.edit._elements.movement_type.data.element.kendoDropDownList({ + dataSource: $al.model.edit.movementTypes, + dataTextField: "movementType", + dataValueField: "id", + enable: false + }); + + $al.view.edit._elements.movement_type.data.element.select(function (dataItem) { + return dataItem.id === $al.model.edit.movementFile.movementType.id; + }); + + if(typeof $al.model.edit.movementFile.iataFromAirportName != "undefined"){ + $al.view.edit._elements.iata_code_from_code.data.element.html($al.model.edit.movementFile.iataFrom ); + $al.view.edit._elements.iata_code_from_container.data.element.attr("data-original-title", $al.model.edit.movementFile.iataFromAirportName); + } + + if(typeof $al.model.edit.movementFile.iataToAirportName != "undefined") { + $al.view.edit._elements.iata_code_to_code.data.element.html($al.model.edit.movementFile.iataTo ); + $al.view.edit._elements.iata_code_to_container.data.element.attr("data-original-title", $al.model.edit.movementFile.iataToAirportName); + } + if(typeof $al.model.edit.movementFile.iataOriginAirportName != "undefined") { + $al.view.edit._elements.iata_code_origin_code.data.element.html($al.model.edit.movementFile.iataOrigin ); + $al.view.edit._elements.iata_code_origin_container.data.element.attr("data-original-title", $al.model.edit.movementFile.iataOriginAirportName); + } + $('[data-toggle="tooltip"]').tooltip(); + + } + /* + _renderCommunication() { + console.log("$al.model.edit.stateMachineHistory", $al.model.edit.stateMachineHistory); + $("#listView").kendoListView({ + dataSource: $al.model.edit.stateMachineHistory, + template: kendo.template($("#edit-communication-template").html()) + }).removeClass('k-widget k-listview'); + + // Item duplicated to display in different position in html based on responsive breaking points (bottom of the page or right column + $("#listView2").kendoListView({ + dataSource: $al.model.edit.stateMachineHistory, + template: kendo.template($("#edit-communication-template").html()) + }).removeClass('k-widget k-listview'); + + $(".listViewWrapper").kendoListView({ + dataSource: $al.model.edit.stateMachineHistory, + template: kendo.template($("#edit-communication-template").html()) + }).removeClass('k-widget k-listview'); + + } + + _renderNotifications() { + let notificationHistoryDataSource = $al.view.edit._prepareNotif($al.model.edit.notificationHistory); + console.log("notificationHistoryDataSource 1 ", $al.model.edit.notificationHistory); + console.log("notificationHistoryDataSource 2 ", notificationHistoryDataSource); + + $al.view.edit._elements.notification.data.element.kendoListView({ + dataSource: notificationHistoryDataSource, + template: $al.view.edit._templates.notification.data.template + }).removeClass('k-widget k-listview'); + $al.view.edit._elements.notification.data.component = "kendoListView"; + + $al.view.edit._elements.notification2.data.element.kendoListView({ + dataSource: notificationHistoryDataSource, + template: $al.view.edit._templates.notification.data.template + }).removeClass('k-widget k-listview'); + $al.view.edit._elements.notification2.data.component = "kendoListView"; + + console.log("notificationHistoryDataSource 3 ", notificationHistoryDataSource); + } + */ + + _renderMilestones() { + let notificationHistoryDataSource = $al.view.edit._prepareNotif($al.model.edit.notificationHistory); + let communicationHistoryDataSource = $al.model.edit.stateMachineHistory; + + const mergedArray = [...communicationHistoryDataSource, ...notificationHistoryDataSource]; + + mergedArray.sort((a, b) => { + const dateA = a.date || a.sentAt; + const dateB = b.date || b.sentAt; + const arrivalStateA = a.arrivalState || ''; + const arrivalStateB = b.arrivalState || ''; + // Compare dates first + const dateComparison = new Date(dateA) - new Date(dateB); + // If dates are the same, prioritize 'DRAFT' arrivalState + if (dateComparison === 0) { + return arrivalStateA.localeCompare(arrivalStateB); + } + return dateComparison; + }); + + $(".milestone-list-wrapper").kendoListView({ + dataSource: mergedArray, + template: kendo.template($("#milestone-item-template").html()) + }).removeClass('k-widget k-listview'); + } + + _prepareNotif(data) { + data.forEach(n => { + n.notificationTemplateCode = $al.controller.edit._languageBundle.notifications[n.notificationTemplateCode.toLowerCase()]; + if (n.sentAt === undefined) { + n.sentAt = n.sendingDate; + } + }); + return data; + } + + _initializeView(movementFile) { + + // We have to set again this value if not present, in order to show it to the user, + // because it's not stored in the movement_files table + // (the movement_files table has a foreign key to the job, which does not have a value for "familyPostingType") + $al.view.edit.familyPostingLogic(movementFile); + if($fromWizard){ + $al.view.edit.budgetLineLogic(movementFile); + } + + var viewModel = new kendo.data.Model.define(); + $al.model.edit._viewModel = new viewModel(movementFile); + + let jobHolder = movementFile['jobHolder']; + + //name + $al.model.edit._viewModel.name = jobHolder.firstName + ', ' + jobHolder.lastName; + + //place of recruitment + let placeOfRecruitment; + if (typeof jobHolder.recruitmentCity === 'undefined' || jobHolder.recruitmentCity === null) { + placeOfRecruitment = "No place of recruitment"; + } else { + placeOfRecruitment = jobHolder.recruitmentCountry + ', ' + jobHolder.recruitmentCity; + } + $al.model.edit._viewModel.placeOfRecruitment = placeOfRecruitment; + + //place of origin + let placeOfOrigin; + if ((typeof jobHolder.originCity === 'undefined' || jobHolder.originCity === null) && (typeof jobHolder.originCountryDesc === 'undefined' || jobHolder.originCountryDesc === null)) { + placeOfOrigin = "No place of origin"; + } else if (typeof jobHolder.originCountryDesc === 'undefined' || jobHolder.originCountryDesc === null) { + placeOfOrigin = jobHolder.originCity; + } else if (typeof jobHolder.originCity === 'undefined' || jobHolder.originCity === null) { + placeOfOrigin = jobHolder.originCountryDesc; + } else { + placeOfOrigin = jobHolder.originCountryDesc + ', ' + jobHolder.originCity; + } + + $al.model.edit._viewModel.placeOfOrigin = placeOfOrigin; + + $al.model.edit._viewModel.aipnNotifDateFromatted = kendo.toString(kendo.parseDate($al.model.edit._viewModel.aipnNotifDate), 'MMM dd, yyyy'); + + // ------------ Adding Private email functionality --------------- + let canCreateOrUpdateMF = $al.model.permissions.canCreate || $al.model.permissions.canUpdate; + let canEditPrivateEmail = canCreateOrUpdateMF && + // Can create/update MFs, AND ( priv email source is ERIGHTS or no private email ) + (jobHolder.privateEmailSource === 'ERIGHTS' || jobHolder.privateEmail == null); + + let privateEmail = jobHolder.privateEmail == null ? "No Private Email" : jobHolder.privateEmail; + $al.model.edit._viewModel.canEditPrivateEmail = canEditPrivateEmail; + $al.model.edit._viewModel.privateEmail = privateEmail; + // Switch to show/hide input text + $al.model.edit._viewModel.showPrivateEmailInput = false; + $al.model.edit._viewModel.isEditVisibleStaffMember = canCreateOrUpdateMF; + // ---------------------------------------------------------------- + + //gender + let gender; + if (jobHolder.gender === "M") { + gender = $al.controller.edit._languageBundle.staff_member.gender_male; + } else { + gender = $al.controller.edit._languageBundle.staff_member.gender_female; + } + $al.model.edit._viewModel.gender = gender; + + + if (typeof movementFile.countryTo != 'undefined') { + $al.model.edit._viewModel.destinationCountry = movementFile.countryTo.name; + } + if (typeof movementFile.cityTo != 'undefined') { + $al.model.edit._viewModel.destinationCity = movementFile.cityTo.name; + } + + $al.model.edit._viewModel.isEditVisibleDestination = $al.controller.edit._isEditButtonVisible; + $al.model.edit._viewModel.isVisibleOnEditDestination = false; + + $al.model.edit._viewModel.isEditVisibleDetails = $al.controller.edit._isEditButtonVisible; + $al.model.edit._viewModel.isVisibleOnEditDetails = false; + + $al.model.edit._viewModel.isEditVisibleAipn = $al.controller.edit._isEditButtonVisible; + $al.model.edit._viewModel.isVisibleOnEditAipn = false; + + // ===== Permissions ===================================== + $al.model.edit._viewModel.canCreate = $al.model.permissions.canCreate; + $al.model.edit._viewModel.canConfirmOnBehalf = $al.model.permissions.canConfirm; + $al.model.edit._viewModel.canConfirm = !$al.model.permissions.canConfirm + && ($al.model.permissions.isOwner && movementFile.state + === "PENDING"); + $al.model.edit._viewModel.canDelete = $al.model.permissions.canDelete; + $al.model.edit._viewModel.canUpdate = $al.model.permissions.canUpdate; + $al.model.edit._viewModel.canWithdrawOnBehalf = $al.model.permissions.canWithdraw; + $al.model.edit._viewModel.canWithdraw = !$al.model.permissions.canWithdraw + && ($al.model.permissions.isOwner && movementFile.state + === "PENDING"); + + // Complete and Cancel (RIGD-1709) + // The status is checked in the HTML code + $al.model.edit._viewModel.canComplete = $al.model.permissions.canComplete; + $al.model.edit._viewModel.canCancel = $al.model.permissions.canCancel; + $al.model.edit._viewModel.canReopen = $al.model.permissions.canReopen; + // ======================================================== + + if (typeof $al.model.edit.movementFile.startDate != 'undefined') { + let startDateDate = new Date($al.model.edit.movementFile.startDate) ; + let userTimezoneOffset= startDateDate.getTimezoneOffset() * 60000; + let startDatePlusTimezone = new Date(startDateDate.getTime() + userTimezoneOffset); + $al.model.edit._viewModel.set("startDate", + kendo.toString(startDatePlusTimezone, + "d")); + } else { + $al.model.edit._viewModel.set("startDate", "-"); + } + + if (typeof $al.model.edit.movementFile.estimatedEndDate + != 'undefined') { + $al.model.edit._viewModel.set("estimatedEndDate", kendo.toString( + new Date($al.model.edit.movementFile.estimatedEndDate), + "d")); + } else { + $al.model.edit._viewModel.set("estimatedEndDate", "-"); + } + + // No job number: set the destination to the description corresponding to the movement context + if (typeof $al.model.edit.movementFile.jobTo === 'undefined') + $al.model.edit._viewModel.set("allocatedToText", $al.view.edit.getAllocatedToText($al.model.edit.movementFile.movementContext.name)); + + // Set as true if the Movement File has a value for destination job + $al.model.edit._viewModel.set("hasJobTo", typeof movementFile.jobTo !== 'undefined'); + + if( $al.model.movementFile.hodJobFrom == true || $al.model.movementFile.hodJobTo == true ){ + $al.model._viewModel.hodPosting = true; + }else{ + $al.model._viewModel.hodPosting = false; + } + + } + familyPostingLogic(movementFile){ + if(typeof movementFile.jobTo != "undefined" && typeof movementFile.jobTo.familyPostingTypeCategory != "undefined" ){ + if(movementFile.jobTo.familyPostingTypeCategory == "NON_FAMILY") { + movementFile.jobToFamilyPosting = false; + }else { + movementFile.jobToFamilyPosting = true; + } + } + if (typeof movementFile.jobToFamilyPosting != "undefined" && !movementFile.jobToFamilyPosting ){ + movementFile.jobToFamilyPosting = false; + } + if(typeof movementFile.jobFrom != "undefined" && typeof movementFile.jobFrom.familyPostingTypeCategory != "undefined"){ + if(movementFile.jobFrom.familyPostingTypeCategory == "NON_FAMILY") { + movementFile.familyPosting = false; + }else { + movementFile.familyPosting = true; + } + } + if (typeof movementFile.jobFromFamilyPosting != "undefined" && !movementFile.familyPosting ){ + movementFile.familyPosting = false; + } + if(!movementFile.familyPosting){ + movementFile.familyPosting = "Non-Family Posting"; + movementFile.familyPosting = false; + }else{ + movementFile.familyPosting = "Family Posting"; + movementFile.familyPosting = true; + } + if(!movementFile.jobToFamilyPosting){ + movementFile.jobToFamilyPostingType = "Non-Family Posting"; + movementFile.jobToFamilyPosting = false; + }else{ + movementFile.jobToFamilyPostingType = "Family Posting"; + movementFile.jobToFamilyPosting = true; + } + } + + budgetLineLogic(data){ + if(typeof data.movementType !== 'undefined') { + + if (data.movementType.budgetLineJob === "CURRENT"){ + if( $a.utils.isNotNull(data.budgetLineJobFrom)) { + data.budgetLine = data.budgetLineJobFrom; + } + } else { + if( $a.utils.isNotNull(data.budgetLineJobTo)) { + data.budgetLine = data.budgetLineJobTo; + } + + } + } + } + _bindView() { + kendo.bind($al.view.edit._templates.data.wrapperSelector, $al.model.edit._viewModel); + } + + _loadCitiesData(cities) { + $al.view.edit._elements_evacuation.evacuation_city.data.element.kendoDropDownList({ + dataSource: cities, + dataTextField: "name", + dataValueField: "code", + optionLabel: "Select a city", + autoWidth: true + }); + let evacCity = $al.view.edit._elements_evacuation.evacuation_city.data.element.data("kendoDropDownList"); + evacCity.enable(true); + } + + _goToTabIfRequested() { + var url_params = window.location.search.substr(1).split("&"); + for (var i = 0; i < url_params.length; i++) { + var param = url_params[i]; + var kv = param.split("="); + if (kv.length == 2 && kv[0] === "gototab") { + var tabid = "#" + kv[1]; + $(tabid).click(); + break; + } + } + } + + getAllocatedToText(movementContextName) { + let text = ""; + + switch (movementContextName) { + case "SECONDMENT": + text = $al.controller.edit._languageBundle.destination.allocated_to.secondment; + break; + case "ROTATION": + text = $al.controller.edit._languageBundle.destination.allocated_to.rotation; + break; + case "CRISIS": + text = $al.controller.edit._languageBundle.destination.allocated_to.crisis; + break; + default: + break; + } + + return text; + } +} + +class EditController { + + constructor() { + this._languageBundle = null; + } + + notifyReady(languageBundlePoolExecutor) { + languageBundlePoolExecutor.add("edit", "common.messages.e-rights", "e_rights.movement_files.edit", false); + } + + notifyDataInitialized() { + $al.view.edit._render(); + + $al.view.edit._renderDates(); + + $al.view.edit._renderEvacuation(); + + $al.view.edit._bindView(); + + $al.view.edit._renderMilestones(); // Render Communications merged with Notifications + + $al.controller.edit._getAipnFile(); + + $al.model.edit._getMovementTypes(); + + $al.view.edit._goToTabIfRequested(); + } + + notifyLanguageBundleReady(languageBundles) { + $al.controller.edit._languageBundle = languageBundles.get("edit"); + } + + _getAipnFile() { + $al.model.edit._viewModel.set("aipnVisible", true); + $al.model.edit._viewModel.set("aipnFileId", $al.model.edit.movementFile.aipnFileId); + if ($al.model.edit.movementFile.aipnFileId === undefined || $al.model.edit.movementFile.aipnFileId.length === 0) { + $al.model.edit._viewModel.set("aipnDocumentURL", false); + } else { + $al.model.edit._viewModel.set("aipnDocumentURL", true); + } + $al.model.edit._viewModel.set("editAipnNotif", false); + } + + validate() { + + let validator = $("#editForm").kendoValidator({ + rules: { + endDateBeforeStartDate: input => { + if (input.filter("[data-role=datepicker]") && input.is("[name=end-date]")) { + let startDate = $al.view.edit._elements.start_date.data.element.data("kendoDatePicker").value(); + let endDate = input.data("kendoDatePicker").value(); + if (endDate !== null) { + return $al.model.edit._isEndingDateGreaterThan(startDate, input.data("kendoDatePicker").value()); + } + } + return true; + }, + evacuationCountryDestination: input => { + if (input.is("[name=evacuationCountry]")) { + let isEvacuated = $al.view.edit._elements_evacuation.is_evacuation_location.data.element.prop("checked"); + let evacCountry = $al.view.edit._elements_evacuation.evacuation_country.data.element.val(); + if (isEvacuated && evacCountry == "") { + return false; + } else { + return true; + } + } else { + return true; + } + }, + evacuationCityDestination: input => { + if (input.is("[name=evacuationCity]")) { + let isEvacuated = $al.view.edit._elements_evacuation.is_evacuation_location.data.element.prop("checked"); + let evacCity = $al.view.edit._elements_evacuation.evacuation_city.data.element.val(); + if (isEvacuated && evacCity == "") { + return false; + } else { + return true; + } + } else { + return true; + } + } + }, + messages: { + endDateBeforeStartDate: "Ending Date should be greater than Starting Date", + evacuationCountryDestination: "Please enter the evacuation country", + evacuationCityDestination: "Please enter the evacuation city" + } + }).data("kendoValidator"); + + if (validator.validate()) { + // If the form is valid, the Validator will return true + } + return validator.validate(); + } + + _isEditButtonVisible() { + return $al.model.permissions.canUpdate; + } + + + _doSaveDestination(event) { + if ($al.controller.edit.validate()) { + + var startDate = $al.view.edit._elements.start_date.data.element.data( + "kendoDatePicker").value(); + var endDate = $al.view.edit._elements.end_date.data.element.data( + "kendoDatePicker").value(); + + $al.model.edit.movementFile.startDate = $a.utils.toLocalDateISO( + startDate); + $al.model.edit.movementFile.estimatedEndDate = $a.utils.toLocalDateISO( + endDate); + + $al.model.edit._viewModel.set("startDate", + kendo.toString(new Date(startDate), "d")); + + if (typeof $al.model.edit.movementFile.estimatedEndDate + != 'undefined') { + $al.model.edit._viewModel.set("estimatedEndDate", + kendo.toString(new Date(endDate), "d")); + } else { + $al.model.edit._viewModel.set("estimatedEndDate", "-"); + } + + + + $al.model.edit.movementFile.childFreePosting = $al.view.edit._elements.child_free_posting.data.element.prop( + "checked"); + + if (typeof $al.model.edit.movementFile.jobTo !== 'undefined' && typeof $al.model.edit.movementFile.jobTo.evacuationLevelCodeId + !== 'undefined') { + let is_evacuation_location = $al.view.edit._elements_evacuation.is_evacuation_location.data.element.prop( + "checked"); + $al.controller.edit._setEvacuationInfo( + $al.model.edit.movementFile.jobTo.evacuationCode); + + if (is_evacuation_location) { + $al.model.edit.movementFile.evacuated = is_evacuation_location; + + let country = $al.view.edit._elements_evacuation.evacuation_country.data.element.data("kendoDropDownList"); + $al.model.edit.movementFile.countryTo = country.dataItem(); + country.enable(false); + let city = $al.view.edit._elements_evacuation.evacuation_city.data.element.data("kendoDropDownList"); + $al.model.edit.movementFile.cityTo = city.dataItem(); + city.enable(false); + + } + } + $al.model.edit._restCalls.save.execute(null, $al.model.edit.movementFile, null, null); + + if (typeof $al.model.edit.movementFile.jobTo !== 'undefined' && typeof $al.model.edit.movementFile.jobTo.evacuationLevelCodeId !== 'undefined') { + $al.view.edit._elements_evacuation.is_evacuation_location.data.element.prop("checked", false); + + $al.model.edit._viewModel.set("destinationCity", $al.model.edit.movementFile.cityTo.name); + $al.model.edit._viewModel.set("destinationCountry", $al.model.edit.movementFile.countryTo.name); + $al.model.edit._viewModel.set("canChangeDestination", false); + $al.model.edit._viewModel.set("canCheckEvacuationDestination", false); + } + + $al.controller.edit._doEnableDestinationEditableElements(false); + + $al.model.edit._viewModel.set("isEditVisibleDestination", true); + $al.model.edit._viewModel.set("isVisibleOnEditDestination", false); + $al.controller.edit._canTudSetAsDefault(); + } + } + + _canTudSetAsDefault() { + var today = new Date(); + var startDate; + if ($a.utils.isNotNull($al.model.movementFile.startDate)) { + startDate = new Date(Date.parse($al.model.movementFile.startDate)); + + } else { + startDate = new Date(Date.parse($al.model.movementFile.estimatedEndDate)); + } + startDate.setMonth(startDate.getMonth() - 2); + $al.model.entitlements._viewModel.canTudSetAsDefault = today < startDate; + } + + _setEvacuationInfo(evacuationCode) { + let evacuationMEssageSplitted = evacuationCode.split(':'); + $al.model.edit._viewModel.set("evacuationLevel", evacuationMEssageSplitted[0]); + var levelNo = evacuationMEssageSplitted[0].replace(/[^0-9]/g, ''); + $al.model.edit._viewModel.set('evacuationIcon', "warning"); + $al.model.edit._viewModel.set("evacuationMessage", evacuationMEssageSplitted[1]); + } + + _doCancelDestination(event) { + $al.view.edit._elements.start_date.data.element.data("kendoDatePicker").value(new Date($al.model.edit.movementFile.startDate)); + $al.view.edit._elements.end_date.data.element.data("kendoDatePicker").value(new Date($al.model.edit.movementFile.estimatedEndDate)); + + $al.view.edit._elements.child_free_posting.data.element.prop("checked", $al.model.edit.movementFile.childFreePosting); + + $al.view.edit._elements_evacuation.is_evacuation_location.data.element.prop("checked", false); + + $al.controller.edit._doEnableDestinationEditableElements(false); + + $al.model.edit._viewModel.set("canChangeDestination", false); + $al.model.edit._viewModel.set("canCheckEvacuationDestination", false); + $al.model.edit._viewModel.set("isEditVisibleDestination", true); + $al.model.edit._viewModel.set("isVisibleOnEditDestination", false); + } + + _doEditDestination(event) { + $al.controller.edit._doEnableDestinationEditableElements(true); + + $al.model.edit._viewModel.set("isEditVisibleDestination", false); + $al.model.edit._viewModel.set("isVisibleOnEditDestination", true); + $al.model.edit._viewModel.set("canCheckEvacuationDestination", true); + } + + _doEditDetails(event) { + $al.controller.edit._doEnableDetailsEditableElements(true); + + $al.model.edit._viewModel.set("isEditVisibleDetails", false); + $al.model.edit._viewModel.set("isVisibleOnEditDetails", true); + } + + _doCancelDetails(event) { + let types = $al.view.edit._elements.movement_type.data.element.data("kendoDropDownList"); + types.select(function (dataItem) { + return dataItem.id == $al.model.edit.movementFile.movementType.id; + }); + + // Cancel manual edit: Restore followupFlagsArray from $al.model.edit.movementFile + $al.model.edit._viewModel.set("followupFlagsArray", $al.model.edit.movementFile.followupFlagsArray); + + if (typeof $al.model.edit.movementFile.withoutRights === 'undefined') { + $al.view.edit._elements_eoc.rights.data.element.prop("checked", false); + } else { + $al.view.edit._elements_eoc.rights.data.element.prop("checked", $al.model.edit.movementFile.withoutRights); + } + + if (typeof $al.view.edit._elements.eoc_end_date.data.element.data("kendoDatePicker") != 'undefined') { + $al.view.edit._elements.eoc_end_date.data.element.data("kendoDatePicker").value(new Date($al.model.edit.movementFile.estimatedEndDate)); + } + + $al.model.edit._viewModel.set("budgetLine", $al.model.edit.movementFile.budgetLine); + + $al.controller.edit._doEnableDetailsEditableElements(false); + + $al.model.edit._viewModel.set("isEditVisibleDetails", true); + $al.model.edit._viewModel.set("isVisibleOnEditDetails", false); + + $al.model.edit._viewModel.set("internalComment", $al.model.edit.movementFile.internalComment); + } + + _doEnableDestinationEditableElements(enable) { + $al.view.edit._elements.start_date.data.element.data("kendoDatePicker").enable(enable); + $al.view.edit._elements.end_date.data.element.data("kendoDatePicker").enable(enable); + + if (enable) { + $al.view.edit._elements.child_free_posting.data.element.removeAttr("disabled"); + // Prevent modification of this check-box while editing Mov. File. Value was retrieved from DB + // when the Movement File was created. + // $al.view.edit._elements.non_family_posting.data.element.removeAttr("disabled"); + $al.view.edit._elements_evacuation.is_evacuation_location.data.element.removeAttr("disabled"); + } else { + $al.view.edit._elements.child_free_posting.data.element.attr("disabled", "true"); + // $al.view.edit._elements.non_family_posting.data.element.attr("disabled", "true"); + $al.view.edit._elements_evacuation.is_evacuation_location.data.element.attr("disabled", "true"); + } + } + + _doSaveAipn(event, customId) { + + const datePicker = '#aipn-date-picker-' + customId; + const aipnNotifDateCustomId = $(datePicker).data("kendoDatePicker").value(); + $al.model.edit.movementFile.aipnNotifDate = $a.utils.toLocalDateISO(aipnNotifDateCustomId); + + const aipnInput = '#aipn_file_id-' + customId; + const aipnFileIdCustomId = $(aipnInput).val(); + $al.model.edit.movementFile.aipnFileId = aipnFileIdCustomId; + + $al.model.edit._restCalls.save.execute(null, $al.model.edit.movementFile, null, null); + + $al.model.edit._viewModel.set("aipnNotifDateFromatted", kendo.toString(kendo.parseDate($al.model.edit.movementFile.aipnNotifDate), 'MMM dd, yyyy')); + $al.model.edit._viewModel.set("aipnFileId", $al.model.edit.movementFile.aipnFileId); + + $al.model.edit._viewModel.set("isEditVisibleAipn", true); + $al.model.edit._viewModel.set("isVisibleOnEditAipn", false); + $al.model.edit._viewModel.set("editAipnNotif", false); + $al.model.edit._viewModel.set("aipnNotifDate", true); + if ($al.model.edit.movementFile.aipnFileId.length === 0) { + $al.model.edit._viewModel.set("aipnDocumentURL", false); + } else { + $al.model.edit._viewModel.set("aipnDocumentURL", true); + } + } + + _doCancelAipn(event) { + $al.model.edit._viewModel.set("isEditVisibleAipn", true); + $al.model.edit._viewModel.set("isVisibleOnEditAipn", false); + $al.model.edit._viewModel.set("editAipnNotif", false); + $al.model.edit._viewModel.set("aipnNotifDate", true); + if ($al.model.edit.movementFile.aipnFileId.length === 0) { + $al.model.edit._viewModel.set("aipnDocumentURL", false); + } else { + $al.model.edit._viewModel.set("aipnDocumentURL", true); + } + } + + _doEditAipn(event) { + + $("#aipn-date-picker-1").data("kendoDatePicker").value($a.utils.setTimeToMidnight(new Date($al.model.edit.movementFile.aipnNotifDate))); + $("#aipn-date-picker-2").data("kendoDatePicker").value($a.utils.setTimeToMidnight(new Date($al.model.edit.movementFile.aipnNotifDate))); + $(`#aipn_file_id-1`).val($al.model.edit.movementFile.aipnFileId); + $(`#aipn_file_id-2`).val($al.model.edit.movementFile.aipnFileId); + + $al.model.edit._viewModel.set("isEditVisibleAipn", false); + $al.model.edit._viewModel.set("isVisibleOnEditAipn", true); + $al.model.edit._viewModel.set("editAipnNotif", true); + $al.model.edit._viewModel.set("aipnNotifDate", false); + $al.model.edit._viewModel.set("aipnDocumentURL", false); + } + + _onLoadCountries(countries) { + $al.view.edit._elements_evacuation.evacuation_country.data.element.kendoDropDownList({ + dataSource: countries, + dataTextField: "name", + dataValueField: "code", + optionLabel: "Select a country", + value: "Select a country", + autoWidth: true, + select: function (e) { + $al.model.edit._getCities(e.dataItem.code) + } + }); + + let evacCountry = $al.view.edit._elements_evacuation.evacuation_country.data.element.data("kendoDropDownList"); + evacCountry.enable(true); + $al.model.edit._getCities(); + } + + _doEnableDetailsEditableElements(enable) { + + var disabledValue = enable ? false : true; + $al.view.edit._elements.followup_urgent.data.element.prop( "disabled", disabledValue); + $al.view.edit._elements.followup_derogation.data.element.prop( "disabled", disabledValue); + $al.view.edit._elements.followup_doubleposting.data.element.prop( "disabled", disabledValue); + + + if(!(typeof $al.model.edit.movementFile.jobTo == 'undefined' && $al.model.edit.movementFile.movementContext.name == 'ROTATION')) + $al.view.edit._elements.movement_type.data.element.data("kendoDropDownList").enable(enable); + + if (typeof $al.view.edit._elements.eoc_end_date.data.element.data("kendoDatePicker") != 'undefined') { + $al.view.edit._elements.eoc_end_date.data.element.data("kendoDatePicker").enable(enable); + } + + if (enable) { + $al.view.edit._elements_eoc.rights.data.element.removeAttr("disabled"); +// $al.view.edit._elements_eoc.notes.data.element.removeAttr("disabled"); + $al.view.edit._elements.notes.data.element.removeAttr("disabled"); + } else { + $al.view.edit._elements_eoc.rights.data.element.attr("disabled", "true"); +// $al.view.edit._elements_eoc.notes.data.element.attr("disabled", "true"); + $al.view.edit._elements.notes.data.element.attr("disabled", "true"); + } + } + + _doSaveDetails(event) { + let selectedMovementType = $al.view.edit._elements.movement_type.data.element.val(); + let movementType = $al.model.edit.movementTypes.find(item => { + if (item.id == selectedMovementType) + return item; + }); + $al.model.edit.movementFile.movementType = movementType; + + // Compress value in view (user may have updated manually the followupFlagsArray): + $followupFlags.compressFollowupFlags($al.model.edit._viewModel); + // Copy both in $al.model.edit.movementFile before saving + $al.model.edit.movementFile.followupFlags = $al.model.edit._viewModel.followupFlags; + $al.model.edit.movementFile.followupFlagsArray = $al.model.edit._viewModel.followupFlagsArray; + + if ($al.model.edit._viewModel.followupFlags) { + $al.model._viewModel.set('urgentPresent', $al.model.edit._viewModel.followupFlags.includes('Urgent') ); + $al.model._viewModel.set('derogationPresent', $al.model.edit._viewModel.followupFlags.includes('Derogation') ); + $al.model._viewModel.set('doublepostingPresent', $al.model.edit._viewModel.followupFlags.includes('DoublePosting') ); + } + + + + // ------------------------- + + $al.model.edit.movementFile.withoutRights = $al.view.edit._elements_eoc.rights.data.element.prop("checked"); + + if (typeof $al.view.edit._elements.eoc_end_date.data.element.data("kendoDatePicker") != 'undefined') { + var endDate = $al.view.edit._elements.eoc_end_date.data.element.data("kendoDatePicker").value(); + $al.model.edit.movementFile.estimatedEndDate = $a.utils.toLocalDateISO(endDate); + } + + + $al.model.edit._viewModel.set("budgetLine", $al.model.edit.movementFile.budgetLine); + + $al.model.edit.movementFile.internalComment = $al.model.edit._viewModel.internalComment; + + $al.model.edit._restCalls.save.execute(null, $al.model.edit.movementFile, null, null); + + $al.controller.edit._doEnableDetailsEditableElements(false); + + $al.model.edit._viewModel.set("isEditVisibleDetails", true); + $al.model.edit._viewModel.set("isVisibleOnEditDetails", false); + } + + // ============== Delete methods in Controller ===================== + _doDelete(theButton) { + + var validationErrors = $al.controller.edit._validateBeforeDeleting(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.controller.edit._showWarnDialog( + $al.controller.edit._languageBundle.alerts.deletion_title, + $al.controller.edit._languageBundle.alerts.delete_validation_message, + validationErrors); + return; + } + // Ok, go to delete confirm dialog + $al.view.edit._showDeleteDialog(); + } + + _validateBeforeDeleting() { + + var errorMessages = []; + if (!$al.model.declaration.entitlementTypes) { return errorMessages; } + + var incompleteCount = 0; + // Search for requests that are not DRAFT nor REJECTED + $al.model.declaration.entitlementTypes.forEach(item => { + if (item.requests) { + item.requests.forEach(req => { + if (req.state !== 'DRAFT' && req.state !== 'REJECTED') { + // Not draft nor rejected + incompleteCount++; + } + }); + } + }); + + if (incompleteCount > 0) { + errorMessages.push($al.controller.edit._languageBundle.alerts.there_are_active_requests); + } + return errorMessages; + } + + _deleteConfirmationClick(theCheckbox) { + $("#delete-mf-final-button").prop('disabled', !theCheckbox.checked) + } + + doDelete() { + + $a.modalDialog.hide(); + // Call DELETE end-point + $al.model.edit._restCalls.deleteMovementFile.execute( + /* pathParams */ { id: $al.model.edit.movementFile.id }, + /* queryParams */ null, + /* onSuccess */ null, + /* onBeforeSend */ null, + /* onComplete */ $al.controller.edit._onMovementFileDeleted); + } + + _onMovementFileDeleted(response) { + // Green toast deleted success + $a.toast.showSuccess($al.controller.edit._languageBundle.alerts.delete_success); + + // Go to list of MFs (5 secs delay so user can reads toast) + setTimeout(function() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.navigateToList, null, null)); + }, 3000); + + } + // ============== END - Delete methods in Controller ===================== + + + + _doConfirmOnBehalf() { + $al.model.edit._restCalls.newStateMachine.execute({stateMachineEvent: "CONFIRM"}, $al.model.edit.movementFile, $al.controller.edit._onConfirmMovementFile); + } + + _doWithdrawOnBehalf() { + $al.model.edit._restCalls.newStateMachine.execute({stateMachineEvent: "WITHDRAW"}, $al.model.edit.movementFile, $al.controller.edit._onWithdrawMovementFile); + } + + + _onConfirmMovementFile() { + $a.toast.showSuccess($al.controller.edit._languageBundle.alerts.confirmed_success); + // Got to view current movement file + $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.view, null, {id: $al.model.edit.movementFile.id})); + } + + _onWithdrawMovementFile() { + $a.toast.showSuccess($al.controller.edit._languageBundle.alerts.withdraw_success); + // Got to view current movement file + $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.view, null, {id: $al.model.edit.movementFile.id})); + } + + + _doDraftToPending() { + + if ($al.controller.edit._performValidation()) { + $a.loading.toggle(true); + + // We prevent the red error message and we handle the possible error message in '_handleLateErrorMessage' + var muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + + $al.model.edit._restCalls.draftToPending.execute( + /* pathParams*/ null, + /* body */ $al.model.edit.movementFile, + /* onSuccess */ $al.controller.edit._onCreateMovementFile, + /* onBeforeSend */ null, + /* onComplete - Handle possible error messages */ $al.controller.edit._handleLateErrorMessage, + /* showGlobalLoading */ null, + /* exceptionHandlingData */ muteAnankeErrorToast + ); + + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + } + + _handleLateErrorMessage(data) { + + $a.loading.toggle(false); + if (data.status != 200) { + // Manage last minute validation errors, for example: FILE_ID already used or Skyscanner HTTP error response. + var validationErrors = $al.controller.edit._extractMessagesFromErrorResponse(data); + $al.controller.edit._showWarnDialog( + $al.controller.edit._languageBundle.alerts.validation_title, + $al.controller.edit._languageBundle.alerts.validation_message, + validationErrors); + } + } + + _extractMessagesFromErrorResponse(response) { + var text = response.responseText; + var textObj = null; + try { + textObj = JSON.parse(text); + } catch (parseExc) { + // Do nothing, textObj remains null + } + var messages = []; + if (textObj && textObj.items && textObj.items.length > 0) { + textObj.items.forEach(item => { + messages.push(item.message); + }); + return messages; + } else { + // Cannot parse, just return 'responseText' + return [ text ]; + } + } + + _doUpdateDraft(){ + + $a.loading.toggle(true); + $al.model.edit._restCalls.updateDraft.execute(null,null, $al.model.edit.movementFile, $al.controller.edit._onUpdateDraftMovementFile); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + + + } + + _doDiscardChanges(){ + $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.view, null, {id: $fileId})); + } + + _onUpdateDraftMovementFile(data) { + $a.toast.showSuccess($al.controller.edit._languageBundle.alerts.create_draft_success); + // $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.navigateToList, null, null)); + // Got to view current movement file + $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.view, null, {id: data})); + + } + _onCreateMovementFile(data) { + + $a.toast.showSuccess($al.controller.edit._languageBundle.alerts.create_success); + // $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.navigateToList, null, null)); + // Got to view current movement file + $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.view, null, {id: data})); + } + + doEvacuation() { + let is_evacuation_location = $al.view.edit._elements_evacuation.is_evacuation_location.data.element.prop("checked"); + + if (is_evacuation_location) { + $al.model.edit._viewModel.set("canChangeDestination", true); + $al.model.edit._restCalls.countries.execute(null, null, $al.controller.edit._onLoadCountries); + } else { + $al.model.edit._viewModel.set("canChangeDestination", false); + } + } + + _goToStaffMembers(event) { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.staffMembers, null, null)); + } + + _goToJobHolderScreen(event) { + var personId = $al.model.edit._viewModel.jobHolder.perId; + $al.model.edit._restCalls.saveMovementFileInSession.execute(null, $al.model.edit.movementFile, $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.jobHolderScreen, null, {perId: personId}))); + + } + + _goToFutureAssignment(event) { + $al.model.edit._restCalls.saveMovementFileInSession.execute(null, $al.model.edit.movementFile, $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.futureAssignment, null, null), null, null)); + } + + _goToDetails(event) { + if (typeof $al.model.edit.movementFile.jobTo !== 'undefined') { + $al.model.edit._restCalls.saveMovementFileInSession.execute(null, $al.model.movementFile, $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.details, null, null)), null, null); + } else { + $al.model.edit._restCalls.saveMovementFileInSession.execute(null, $al.model.movementFile, $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.noJobDetails, null, {movementContext: $al.model.edit.movementFile.movementContext.name})), null, null); + + } + } + + // Invoke the validation method. Return true if there are any errors. + _performValidation() { + var validationErrors = $al.controller.edit._validateBeforeCreatingFile(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.controller.edit._showWarnDialog( + $al.controller.edit._languageBundle.alerts.validation_title, + $al.controller.edit._languageBundle.alerts.validation_message, + validationErrors); + return false; + } + + return true; + } + + // Check if the data are OK for the actual creation of the Movement File + _validateBeforeCreatingFile() { + + var errorMessages = []; + + var jobToUndefined = typeof $al.model.edit.movementFile.jobTo == "undefined"; + + var jobHolder = $al.model.edit.movementFile.jobHolder; + + // Distinguish EOC / non-EOC + if ($al.model.edit.movementFile.movementContext.name === 'EOC') { + + // EOC: Must have jobFrom: + if ( ! $al.model.edit.movementFile.jobFrom) { + errorMessages.push($al.controller.edit._languageBundle.alerts.cannot_create_eoc_mf_without_jobfrom); + } + + // EOC: Must have private email + if (!$al.controller.edit._emailFieldHasValue(jobHolder, 'privateEmail')) { + errorMessages.push($al.controller.edit._languageBundle.alerts.must_have_private_email_address_in_eoc); + } + } else { + // Non-EOC: Must have business or private email + if (!$al.controller.edit._emailFieldHasValue(jobHolder, 'email') && !$al.controller.edit._emailFieldHasValue(jobHolder, 'privateEmail')) { + errorMessages.push($al.controller.edit._languageBundle.alerts.must_have_some_email_address); + } + } + + + if (typeof $al.model.edit.movementFile.countryFrom == "undefined") { + errorMessages.push($al.controller.edit._languageBundle.alerts.no_country_from); + } + + if (typeof $al.model.edit.movementFile.cityFrom == "undefined") { + errorMessages.push($al.controller.edit._languageBundle.alerts.no_city_from); + } + + if (typeof $al.model.edit.movementFile.movementType == "undefined") { + errorMessages.push($al.controller.edit._languageBundle.alerts.no_movement_type); + } + + if (typeof $al.model.edit.movementFile.countryTo == "undefined") { + errorMessages.push($al.controller.edit._languageBundle.alerts.no_country_to); + } + + if (typeof $al.model.edit.movementFile.cityTo == "undefined") { + errorMessages.push($al.controller.edit._languageBundle.alerts.no_city_to); + } + + + if (typeof $al.model.edit.movementFile.budgetLine == "undefined") { + errorMessages.push($al.controller.edit._languageBundle.alerts.no_budget_line); + } + + + if($al.model.edit.movementFile.movementContext.name != "EOC") { + if (typeof $al.model.edit.movementFile.startDate == "undefined") { + errorMessages.push($al.controller.edit._languageBundle.alerts.no_start_date); + } + } + else { + if (typeof $al.model.movementFile.estimatedEndDate == "undefined") { + errorMessages.push($al.controller.edit._languageBundle.alerts.no_end_date); + } + } + if(typeof $al.model.movementFile.startDate !== "undefined" && typeof $al.model.movementFile.estimatedEndDate !== "undefined" && + $al.model.movementFile.startDate > $al.model.movementFile.estimatedEndDate) + { + errorMessages.push($al.controller.edit._languageBundle.alerts.start_date_before_end_date); + } + + if (errorMessages.length == 0) { + // If the form is valid, the Validator will return true + return true; + } + return errorMessages; + + } + + _emailFieldHasValue(theObject, theFieldName) { + return theObject && theObject.hasOwnProperty(theFieldName) && theObject[theFieldName] != null && !theObject[theFieldName].toLowerCase().startsWith('no ') ; + } + + // Show all the error messages returned from the validation check in a dialog + _showWarnDialog(title, intro_message, messages) { + $a.modalDialog.showAnswer(null, + title, + $al.view.edit._templates.warn.dialog.body.template( + { body_message: "
  • " + messages.join("
  • "), + validation_message: intro_message + } ), + $al.view.edit._templates.basic.dialog.footer.template({}) + ); + } + + + doDeleteSessionData(event) { + + $al.model.edit._restCalls.deleteMovementFileFromSession.execute(null, null, null, null, $al.controller.edit.goToCreateMovementFile()); + + } + goToCreateMovementFile() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.createMovementFile, null, null)); + } + + // --- Adding new private email functionality + showEmailInputBox(event) { + $al.model.edit._viewModel.set("showPrivateEmailInput", true); + + var initVal = $al.model.edit._viewModel.jobHolder.privateEmail; + if (!initVal) { + initVal = ''; + $("#jobHolder-private-email-save").prop('disabled', true); + } else { + $("#jobHolder-private-email-save").prop('disabled', false); + } + $("#jobHolder-private-email-input").val(initVal); + } + saveNewPrivateEmail(event) { + var newEmail = $("#jobHolder-private-email-input").val(); + // If 'newEmail' is the empty string, then delete the private email + + var personId = $al.model.edit._viewModel.jobHolder.perId; + + if (newEmail === '') { + // Delete the private email of the person (the one added from e-RIGHTS) + $al.model.edit._restCalls.deletePrivatePersonEmail.execute( { personId: personId }, null, null, null, $al.controller.edit._onPrivateEmailSet); + } else { + $al.model.edit._restCalls.setPrivatePersonEmail.execute(null, { perId: personId, email: newEmail, emailType: "PRIV" }, + $al.controller.edit._onPrivateEmailSet); + } + } + cancelNewPrivateEmail(event) { + // Restore visibility of empty private email + $al.model.edit._viewModel.set("showPrivateEmailInput", false); + } + _onPrivateEmailSet(backend_response) { + // The private email has been set (created or updated or deleted) + // Got to view current movement file: + $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.view, null, {id: $al.model.edit.movementFile.id})); + } + + // Allows empty string, used to delete private email: + checkValidPrivateEmail() { + var newEmail = $("#jobHolder-private-email-input").val(); + + // Validates email with basic regex + var validEmail = (newEmail === '') || String(newEmail).toLowerCase().match($al.model.edit.EMAIL_REGEX); + + $("#jobHolder-private-email-save").prop('disabled', !validEmail); + } + + _doComplete() { + + var validationErrors = $al.controller.edit._validateBeforeCompleting(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.controller.edit._showWarnDialog( + $al.controller.edit._languageBundle.alerts.validation_title_complete, + $al.controller.edit._languageBundle.alerts.complete_validation_message, + validationErrors); + return; + } + // Ok, perform COMPLETE + $al.model.edit._restCalls.newStateMachine.execute({stateMachineEvent: "COMPLETE"}, $al.model.edit.movementFile, $al.controller.edit._onComplete); + } + + _onComplete() { + $a.toast.showSuccess($al.controller.edit._languageBundle.alerts.complete_success); + // Got to view current movement file + $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.view, null, {id: $al.model.edit.movementFile.id})); + } + + _validateBeforeCompleting() { + return $al.controller.edit._validateRequest(); + } + + _validateBeforeCancel() { + return $al.controller.edit._validateRequest(); + } + + _validateRequest() { + var errorMessages = []; + let errorDetailStatus = ' (reason: status='; + let errorDetailAbac = '(reason: ABAC state='; + if (!$al.model.declaration.entitlementTypes) { + return errorMessages; + } + + // Gather requests that are not PAID nor REJECTED + $al.model.declaration.entitlementTypes.forEach(item => { + if (item.requests) { + item.requests.forEach(req => { + if (req.requestType === 'InstallationRequest') { + if (!(req.state === 'PAID' || req.state + === 'REJECTED')) { + errorMessages.push( + req.requestStringId + errorDetailStatus + + req.state + ')'); + } + } else if (req.requestType === 'ResettlementRequest') { + if (req.state !== 'PAID' && req.state !== 'REJECTED') { + errorMessages.push( + req.requestStringId + errorDetailStatus + + req.state + ')'); + } else { + if (req.state === 'PAID' && + (req.p2pHubOrderStatus !== 'SUCCESS' || req.abacWorkflowState !== 'CLO100')) { + errorMessages.push(req.requestStringId + + errorDetailAbac + + req.p2pHubOrderStatus + ')'); + } + } + } else { + if (!((req.state === 'PAID' && (req.p2pHubOrderStatus !== 'SUCCESS' || req.abacWorkflowState !== 'CLO100')) || req.state === 'REJECTED')) { + errorMessages.push(req.requestStringId); + } + } + }); + } + }); + return errorMessages; + } + + _doCancelMovFile() { + var validationErrors = $al.controller.edit._validateBeforeCancel(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.controller.edit._showWarnDialog( + $al.controller.edit._languageBundle.alerts.validation_title_cancel, + $al.controller.edit._languageBundle.alerts.cancel_validation_message, + validationErrors); + return; + } + $al.model.edit._restCalls.newStateMachine.execute({stateMachineEvent: "CANCEL"}, $al.model.edit.movementFile, $al.controller.edit._onCancel); + } + + _onCancel() { + $a.toast.showSuccess($al.controller.edit._languageBundle.alerts.cancel_success); + // Got to view current movement file + $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.view, null, {id: $al.model.edit.movementFile.id})); + } + + _doReopen() { + // Perform REOPEN (no validation so far) + $al.model.edit._restCalls.newStateMachine.execute({stateMachineEvent: "REOPEN"}, $al.model.edit.movementFile, $al.controller.edit._onReopen); + } + + _onReopen() { + $a.toast.showSuccess($al.controller.edit._languageBundle.alerts.reopen_success); + // Got to view current movement file + $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.view, null, {id: $al.model.edit.movementFile.id})); + } + + +} + +getSessionStorageID(); +_registerMVCSection("edit", EditModel, EditView, EditController); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/edit/file.entitlements.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/edit/file.entitlements.js new file mode 100644 index 0000000..c2b5312 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/edit/file.entitlements.js @@ -0,0 +1,466 @@ +class EntitlementsModel { + + constructor() { + this._urls = { + action: { + viewTud: $a.utils.url(null, "/requests/view-tud.do"), + viewAdvRem: $a.utils.url(null, "/requests/view-adv-rem.do"), + viewTotalRem: $a.utils.url(null, "/requests/view-total-rem.do"), + viewClrRem: $a.utils.url(null, "/requests/view-clr-rem.do"), + viewIns: $a.utils.url(null, "/requests/view-installation.do"), + viewTopUp: $a.utils.url(null, "/requests/view-topup.do"), + viewRst: $a.utils.url(null, "/requests/view-resettlement.do"), + goToFrontEndEntitlementTab: $a.utils.url(null, "/movement-files/goToFrontOffice.do") + }, + movementFileView: "/erights/movement-files/view.do", + }; + this._restCalls = { + updateEntitlementType: new $a.PutRestCall(null, "/internal/api/entitlement-types"), + createEntitlementType: new $a.PostRestCall(null, "/internal/api/entitlement-types"), + getEntitlementTypeCat: new $a.GetRestCall(null, "/internal/api/entitlement-types-cat"), + getEntitlementType: new $a.GetRestCall(null, "/internal/api/entitlement-types"), + deleteEntitlementType: new $a.DeleteRestCall(null, "/internal/api/entitlement-types/{entitlementTypeId}"), + getEntitlementMaxOptions: new $a.GetRestCall(null, "/internal/api/entitlement-maxs-options"), + updateMaxTudRatesForThisMovementFile: new $a.GetRestCall(null, "/internal/api/tud-requests/movement-files/{movementFileId}/updateSpecificEntitlementMaxs"), + createResettlementRequest: new $a.PostRestCall(null, "/internal/api/resettlement-requests/{movementFileId}"), + }; + + } + + init(dataPoolExecutor) { + + dataPoolExecutor.add("getEntitlementMaxOptions", $al.model.entitlements._restCalls.getEntitlementMaxOptions, null, null); + } + + notifyDataRetrieved(data) { + $al.model.entitlements.getEntitlementMaxOptions = data.get("getEntitlementMaxOptions").data; + + $al.view.entitlements._initializeView(); + } + +} + +class EntitlementsView { + + constructor() { + this._templates = new $a.DataContainer("entitlements"); + this._elements = new $a.DataContainer("entitlements"); + + this._templates.data(new $a.KendoTemplateData()); + this._templates.node("actions").data(new $a.KendoTemplateData()); + this._templates.node("type").data(new $a.KendoTemplateData()); + //this._templates.node("type").node("edit").node("items").data(new $a.KendoTemplateData()); + this._templates.node("type").node("view").data(new $a.KendoTemplateData()); + this._templates.node("type").node("edit").data(new $a.KendoTemplateData()); + this._templates.node("type").node("view").node("items").data(new $a.KendoTemplateData()); + this._templates.node("type").node("edit").node("items").data(new $a.KendoTemplateData()); + + this._templates.node("basic").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("warn").node("dialog").data(new $a.KendoTemplateData(), "body"); + + this._elements.node("entitlementTypes").data(new $a.KendoElementData()); + this._elements.node("non_default_ent_types").data(new $a.KendoElementData()); + + this._elements.node("type").node("view").data(new $a.KendoElementData()); + this._elements.node("type").node("view").node("items").data(new $a.KendoElementData()); + + this._elements.node("type").node("edit").data(new $a.KendoElementData()); + this._elements.node("type").node("edit").node("items").data(new $a.KendoElementData()); + + this._elements.node("goToDeclaration").data(new $a.KendoElementData()); + + } + + render() { + $al.view.entitlements._templates.data.compile(); + $al.view.entitlements._templates.actions.data.compile(); + + if ($a.utils.isNull($al.model.declaration.declaration) || !$al.model.declaration.declaration.enable || !$al.controller.isMovementFileActive()) { + $al.view.entitlements._elements.goToDeclaration.data.element.attr("disabled", true); + } + } + + renderEntitlementTypes() { + + var dataSourceListView = new kendo.data.DataSource({ + transport: { + read: function (options) { + $.ajax({ + url: $al.model.entitlements._restCalls.getEntitlementType._url, + dataType: "json", + data: { + + movementFileId: $fileId + }, + success: function (result) { + // notify the data source that the request succeeded + options.success(result); + $al.view.entitlements._showpopOvers(); + }, + error: function (result) { + // notify the data source that the request failed + options.error(result); + } + }); + }, + update: function (options) { + + options.data.entitlementMaxList + .map(maxItem => { + if ($a.utils.isNotNull(maxItem.entitlementMaxOption) && maxItem.entitlementMaxOption.id === '') { + maxItem.entitlementMaxOption = null; + } + return maxItem; + }) + .filter(maxItem => $a.utils.isNotNull(maxItem.maxValue)) + .forEach(maxItem => { + if (maxItem.maxValue.amount === 0 || maxItem.maxValue.amount === ' ' || maxItem.maxValue.amount === '' || maxItem.maxValue.amount === null) { + maxItem.maxValue = null; + } + }); + $al.model.entitlements._restCalls.updateEntitlementType.execute(null, null, options.data, $al.controller.entitlements.checkDeclaration); + options.success(); + + }, + destroy: function (options) { + $al.model.entitlements._restCalls.deleteEntitlementType.execute({entitlementTypeId: options.data.id}, null, $al.controller.entitlements._onRemoveEntitlementType); + + options.success(); + } + }, + schema: { + model: { + id: "id", + status: "ACTIVE", + movementFileId: "movementFileId", + defaultEntType: "defaultEntType", + enable: "enable", + entitlementMaxList: [{ + id: "id", + maxValue: { + amount: "amount", + currency: "EUR" + }, + entitlementMaxCat: { + id: "id", + description: "description", + entitlementTypeCatId: "entitlementTypeCatId" + }, + entitlementMaxOption: { + id: "id", + description: "description" + }, + comments: "comments", + flatRateDuplicator: "flatRateDuplicator" + }], + showDefaultButton: function (e, data) { + this.set("defaultMaxValShow", true); + + }, + defaultMaxValShow: false, + + dataSourceOptions: function (e) { + return $al.model.entitlements.getEntitlementMaxOptions + .filter(option => $a.utils.isNotNull(option.entitlementMaxCat)) + .filter(option => option.entitlementMaxCat.id === e.entitlementMaxCat.id); + }, + + setDescription: function (e) { + this.entitlementMaxList[0].entitlementMaxOption.description = e.dataItem.description; + } + + } + } + + }); + + + $al.model.entitlements.dataSourceListView = dataSourceListView; + + $al.view.entitlements._elements.entitlementTypes.data.element.kendoListView({ + dataSource: dataSourceListView, + template: $al.view.entitlements._templates.type.view.data.template, + editTemplate: $al.view.entitlements._templates.type.edit.data.template, + autoBind: true, + editable: true, + save: function (e) { + + }, + edit: function (e) { + $('textarea.autoSize').autosize(); + } + }); + + $al.view.entitlements._elements.entitlementTypes.data.component = "kendoListView"; + $al.view.entitlements._elements.entitlementTypes.data.element.removeClass('k-widget k-listview'); + } + + renderEntitlementTypeCatNotAssignedmentTypeCat() { + var dataSourceDropDown = new kendo.data.DataSource({ + transport: { + read: function (options) { + $.ajax({ + url: $al.model.entitlements._restCalls.getEntitlementTypeCat._url, + dataType: "json", // "jsonp" is required for cross-domain requests; use "json" for same-domain requests + // send the updated data items as the "models" service parameter encoded in JSON + data: { + assigned: false, + movementFileId: $fileId + }, + success: function (result) { + // notify the data source that the request succeeded + options.success(result); + }, + error: function (result) { + // notify the data source that the request failed + options.error(result); + } + }); + } + + }, + schema: { + model: { + id: "id", + description: "description" + } + } + }); + + $al.model.entitlements.dataSourceDropDown = dataSourceDropDown; + + $al.view.entitlements._elements.non_default_ent_types.data.element.kendoDropDownList({ + dataSource: dataSourceDropDown, + dataTextField: "description", + dataValueField: "id", + optionLabel: '#= $al.controller.entitlements._languageBundle.actions.add_entitlement #', + noDataTemplate: '#= $al.controller.entitlements._languageBundle.actions.no_more_entitlements #', + autoWidth: true, + optionLabelTemplate: '#= $al.controller.entitlements._languageBundle.actions.add_entitlement #', + change: function (e) { + var index = this.selectedIndex, dataItem; + var item = this.dataItem(index); + if (item.id != "") { + $al.model.entitlements._restCalls.createEntitlementType.execute(null, { + entitlementTypeCatId: item.id, + movementFileId: $al.model.movementFile.id + }, $al.controller.entitlements._onSaveEntitlementType); + } + } + }); + // remove the redundant optionlabel inside the dropdown + if (typeof $al.view.entitlements._elements.non_default_ent_types.data.element.getKendoDropDownList() != 'undefined') { + $al.view.entitlements._elements.non_default_ent_types.data.element.getKendoDropDownList().list.find(".k-list-optionlabel").hide(); + } + + let nonDefault = $al.view.entitlements._elements.non_default_ent_types.data.element.data("kendoDropDownList"); + } + + _initializeView() { + var viewModel = new kendo.data.Model.define(); + $al.model.entitlements._viewModel = new viewModel(); + $al.model.entitlements._viewModel.entitlementTypes = $al.model.entitlements.entitlementTypes; + $al.model.entitlements._viewModel.editMode = false; + $al.model.entitlements._viewModel.goToDeclaration = $al.controller.entitlements._goToDeclarationInFrontOffice; + $al.model.entitlements._viewModel.canUpdateEntitlements = $al.model.permissions.canUpdateEntitlements && $al.controller.isEntitlementsEditEnabled(); + $al.model.entitlements._viewModel.canConsultEntitlements = $al.model.permissions.canConsultEntitlements; + $al.model.entitlements._viewModel.canUpdateDeclaration = $al.model.permissions.canUpdateDeclaration; + $al.model.entitlements._viewModel.canTudSetAsDefault = $al.view.entitlements._canTudSetAsDefault(); + $al.model.entitlements._viewModel.isCompleted = ($al.model.movementFile.state === 'COMPLETED'); + } + + _showpopOvers() { + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }); + + + } + + _canTudSetAsDefault() { + var today = new Date(); + var startDate; + if ($a.utils.isNotNull($al.model.movementFile.startDate)) { + startDate = new Date(Date.parse($al.model.movementFile.startDate)); + + } else { + startDate = new Date(Date.parse($al.model.movementFile.estimatedEndDate)); + } + startDate.setMonth(startDate.getMonth() - 2); + return today < startDate; + } +} + +class EntitlementsController { + + constructor() { + this._languageBundle = null; + } + + notifyReady(languageBundlePoolExecutor) { + languageBundlePoolExecutor.add("entitlements", "common.messages.e-rights", "e_rights.movement_files.entitlements", false); + } + + notifyLanguageBundleReady(languageBundles) { + $al.controller.entitlements._languageBundle = languageBundles.get("entitlements"); + } + + notifyDataInitialized() { + if (!$al.model.permissions.canConsultEntitlements) + return; + + $al.view.entitlements.render(); + $al.view.entitlements.renderEntitlementTypes(); + $al.view.entitlements.renderEntitlementTypeCatNotAssignedmentTypeCat(); + + //To bind the enable button to change the class in description + kendo.data.binders.cssClass = kendo.data.Binder.extend({ + init: function (element, bindings, options) { + kendo.data.Binder.fn.init.call(this, element, bindings, options); + + var target = $(element); + this.class1 = target.data("enabledClass"); + this.class2 = target.data("disabledClass"); + }, + refresh: function () { + var enabled = this.bindings["cssClass"].get(); + if (enabled) { + $(this.element).addClass(this.class1); + $(this.element).removeClass(this.class2); + } else { + $(this.element).removeClass(this.class1); + $(this.element).addClass(this.class2); + } + } + }); + + + kendo.bind($al.view.entitlements._templates.data.wrapperSelector, $al.model.entitlements._viewModel); + } + + _onSaveEntitlementType(data) { + $al.model.entitlements.dataSourceListView.pushCreate(data); + + let entitlements = $al.view.entitlements._elements.non_default_ent_types.data.element.data("kendoDropDownList"); + let entitlementsData = entitlements.dataSource.data(); + let toDelete = entitlementsData.filter(item => item.id == data.entitlementTypeCat.id); + + entitlements.dataSource.remove(toDelete[0]); + + window.scrollTo(0, document.body.scrollHeight); + } + + _onRemoveEntitlementType(data) { + $al.model.entitlements.dataSourceDropDown.read(); + $al.model.refreshMovementFile(); + } + + _goToDeclarationInFrontOffice() { + // var href = window.location.href.replace("erightsbo", "erights"); + // Add parameter that (if found) will be processed by the Front-office + // Note: Adding simply "#declaration-tab" to the URL is not enough: It causes the tab to be "focused" but the application does not move to it. + // href = href + "&gototab=declaration-tab"; +// $a.navigation.open(href); + + $a.navigation.navigateTo($a.utils.formatUrl($al.model.entitlements._urls.action.goToFrontEndEntitlementTab, null, { + path: $al.model.entitlements._urls.movementFileView, + id: $fileId, + goToTab: 'declaration-tab' + })); + + } + + checkDeclaration(data) { + $al.model.declaration._restCalls.getDeclaration.execute(null, {movementFileId: $fileId}, $al.controller.entitlements.onDeclarationRetrieved); + } + + onDeclarationRetrieved(declaration) { + if (declaration.enable && $al.controller.isMovementFileActive()) { + $al.view.entitlements._elements.goToDeclaration.data.element.attr("disabled", false) + } else { + $al.view.entitlements._elements.goToDeclaration.data.element.attr("disabled", true) + } + } + + updateSpecificTudEntitlements(event) { + + if(typeof $al.model.movementFile.iataFrom != "undefined" && typeof $al.model.movementFile.iataTo != "undefined" && $al.model.movementFile.iataFrom !== "N/A" && $al.model.movementFile.iataTo !== "N/A" ){ + + + var muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + $al.model.entitlements._restCalls.updateMaxTudRatesForThisMovementFile.execute( + /* pathParams */ { movementFileId: $al.model.movementFile.id }, + /* queryParams */ null, + /* onSuccess */ null, + /* onBeforeSend */ null, + /* onComplete: */ $al.controller.entitlements._onUpdateSpecificTudEntitlements, + /* showGlobalLoading */ null, + /* exceptionHandlingData. This prevents the defaut red error message, so we have to deal with in the 'onComplete' callback */ + muteAnankeErrorToast + ); + }else{ + var errorMsg = new Array($al.controller.entitlements._languageBundle.validations.tud_entitlements_refresh_no_country_warning); + + $al.controller.entitlements._showWarnDialog( + $al.controller.entitlements._languageBundle.validations.tud_entitlements_refresh,errorMsg ); + + } + } + + _onUpdateSpecificTudEntitlements(response, other) { + + if (response && response.status === 200) { + // OK + $a.toast.showSuccess($al.controller.entitlements._languageBundle.alerts.update_specific_tud_entitlements_success); + } else { + // extract error message + var errorMsgs = $al.controller.entitlements._extractMessagesFromErrorResponse(response); + $al.controller.entitlements._showWarnDialog( + $al.controller.entitlements._languageBundle.validations.tud_entitlements_refresh, errorMsgs); + } + // If not, automatic red error message + } + + _showWarnDialog(title, messages) { + + $a.modalDialog.showAnswer(null, title, + $al.view.entitlements._templates.warn.dialog.body.template( + {body_message: "
  • " + messages.join("
  • "), + validation_message: $al.controller.entitlements._languageBundle.validations.tud_refresh_rates_validation_introduction_message }), + // ({body_message: messages.join(" ")}), + $al.view.entitlements._templates.basic.dialog.footer.template({}) + ); + } + + _extractMessagesFromErrorResponse(response) { + var text = response.responseText; + var textObj = null; + try { + textObj = JSON.parse(text); + } catch (parseExc) { + // Do nothing, textObj remains null + } + var messages = []; + if (textObj && textObj.items && textObj.items.length > 0) { + textObj.items.forEach(item => { + messages.push(item.message); + }); + return messages; + } else { + // Cannot parse, just return 'responseText' + return [ text ]; + } + } + + doCreateResettlementRequest(event) { + $al.model.entitlements._restCalls.createResettlementRequest.execute({ movementFileId: $al.model.movementFile.id }, null, $al.controller.entitlements._createResettlementRequestResponse); + } + + _createResettlementRequestResponse(data) { + $a.toast.showSuccess($al.controller.entitlements._languageBundle.alerts.created_resettlement_request_success); + $a.navigation.navigateTo($a.utils.formatUrl($al.model.entitlements._urls.action.viewRst, null, {requestId: data.id})); + } + +} + +_registerMVCSection("entitlements", EntitlementsModel, EntitlementsView, EntitlementsController); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/edit/file.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/edit/file.js new file mode 100644 index 0000000..886be46 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/edit/file.js @@ -0,0 +1,204 @@ +class Model { + + constructor() { + this._restCalls = { + movementFile: new $a.GetRestCall(null, "/internal/api/movement-files/{fileId}"), + getMovementFileFromSession: new $a.GetRestCall(null, "/internal/api/session/collect-movement-file-data"), + permissions: new $a.GetRestCall(null, "/internal/api/permissions") + + }; + $_mvcSections.forEach((section, id) => { + this[id] = new section.model(); + }); + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model._onDataRetrieved); + + dataPoolExecutor.add("permissions", $al.model._restCalls.permissions, null, {movementFileId: $fileId}); + if (!($fileId === null)) { + if($fromWizard) + dataPoolExecutor.add("movementFile", $al.model._restCalls.getMovementFileFromSession); + else + dataPoolExecutor.add("movementFile", $al.model._restCalls.movementFile, {fileId: $fileId}); + } + + $_mvcSections.forEach((section, id) => { + if ($al.model[id].init) { + $al.model[id].init(dataPoolExecutor); + } + }); + + dataPoolExecutor.run(); + } + + refreshMovementFile() { + + $al.model._restCalls.movementFile.execute({fileId: $fileId}, null, $al.model._onRefreshMovementFileDataRetrive); + } + + _onRefreshMovementFileDataRetrive(data) { + + $al.model.edit.movementFile = data; + $al.view.edit._initializeView($al.model.edit.movementFile); + // $al.view.edit._bindView(); + $al.view.edit._bindView(); + + } + + _onDataRetrieved(data) { + $al.model.permissions = data.get("permissions").data; + $al.model.movementFile = data.get("movementFile").data; + + $al.view.initializeView($al.model.movementFile); + + $_mvcSections.forEach((section, id) => { + if ($al.model[id].notifyDataRetrieved) { + $al.model[id].notifyDataRetrieved(data); + } + }); + + $al.controller._onDataInitialized(); + } + +} + +class View { + + constructor() { + this._templates = new $a.DataContainer("file"); + this._elements = new $a.DataContainer("file"); + + this._templates.data(new $a.KendoTemplateData()); + + this._templates.node("title").data(new $a.KendoTemplateData()); + + this._elements.node("mainsection").data(new $a.KendoElementData()); + + $_mvcSections.forEach((section, id) => { + this[id] = new section.view(); + }); + } + + _render() { + $al.view._templates.data.compile(); + $al.view._templates.title.data.compile(); + } + + initializeView(movementFile) { + var viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel(); + + $al.model._viewModel.fileId = movementFile.fileId; + + if (movementFile.state === "WITHDRAWN") { + $al.model._viewModel.formattedStatus = '' + movementFile.state + '' + } else { + $al.model._viewModel.formattedStatus = '' + movementFile.state + '' + } + + } + + +} + +class Controller { + + constructor() { + this._languageBundle = null; + + $_mvcSections.forEach((section, id) => { + this[id] = new section.controller(); + }); + } + + _onDataInitialized() { + $al.view._render(); + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + $_mvcSections.forEach((section, id) => { + if ($al.controller[id].notifyDataInitialized) { + $al.controller[id].notifyDataInitialized(); + } + }); + + $al.notifyOnReadyMvc(); + } + + _onReady() { + var languageBundlePoolExecutor = new $a.LanguageBundlePoolExecutor($al.controller._onLanguageBundleReady); + languageBundlePoolExecutor.add("main", "common.messages.e-rights", "e_rights.movement_files", false); + $_mvcSections.forEach((section, id) => { + if ($al.controller[id].notifyReady) { + $al.controller[id].notifyReady(languageBundlePoolExecutor); + } + }); + languageBundlePoolExecutor.run(); + } + + _onLanguageBundleReady(languageBundles) { + + $al.controller._languageBundle = languageBundles.get("main"); + $_mvcSections.forEach((section, id) => { + if ($al.controller[id].notifyLanguageBundleReady) { + $al.controller[id].notifyLanguageBundleReady(languageBundles); + } + }); + + $al.model.init(); + } + + isMovementFileActive() { + if ($al.model.movementFile.state === $movementFileStatus.PENDING.code + || $al.model.movementFile.state === $movementFileStatus.WITHDRAWN.code + || $al.model.movementFile.state === $movementFileStatus.CONFIRMED.code + || $al.model.movementFile.state === $movementFileStatus.ONGOING.code) { + + return true; + } + return false; + } + + + isEntitlementsEditEnabled() { + if ($al.model.movementFile.state === $movementFileStatus.PENDING.code + || $al.model.movementFile.state === $movementFileStatus.CONFIRMED.code + || $al.model.movementFile.state === $movementFileStatus.DRAFT.code + || $al.model.movementFile.state === $movementFileStatus.ONGOING.code) { + + return true; + } + return false; + } + + + canCreateResettlementRequest() { + if ($al.model.movementFile.state !== $movementFileStatus.CANCELLED.code + && $al.model.movementFile.state !== $movementFileStatus.COMPLETED.code + && $al.model.movementFile.state !== $movementFileStatus.DRAFT.code + && $al.model.movementFile.state !== $movementFileStatus.PENDING.code + && $al.model.movementFile.movementContext.name === 'EOC' + && $al.model.movementFile.movementType.movementType === 'DEL-PoOrg' + && $al.model.declaration.declaration.hasOwnProperty("userCreatedAt") + && $al.model.declaration.declaration.userCreatedAt != null + && $al.model.permissions.canCreateResettlementRequest) { + + return true; + } + return false; + } + +} + +getSessionStorageID(); +let $_mvcSections = new Map(); + +function _registerMVCSection(id, model, view, controller) { + $_mvcSections.set(id, { + model: model, + view: view, + controller: controller + }); +} + +$al.mvc(Model, View, Controller, true); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/sessionStorage.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/sessionStorage.js new file mode 100644 index 0000000..f4bf036 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/sessionStorage.js @@ -0,0 +1,8 @@ +function getSessionStorageID() { + if (!sessionStorage.tabIdentifier) { + + sessionStorage.tabIdentifier = Date.now(); + } + + return sessionStorage.tabIdentifier +} \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/specificDate.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/specificDate.js new file mode 100644 index 0000000..3c2020d --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/movement-file/specificDate.js @@ -0,0 +1,9 @@ +function setSpecificDate(fullDate, monthNum, dayNum) { + var returnDate = new Date(); + returnDate.setFullYear(fullDate.getFullYear()); + returnDate.setMonth(monthNum); + returnDate.setDate(dayNum); + + return returnDate; +} + diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-declaration.edit/accommodation-declaration.controller.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-declaration.edit/accommodation-declaration.controller.js new file mode 100644 index 0000000..2c31397 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-declaration.edit/accommodation-declaration.controller.js @@ -0,0 +1,401 @@ +class AccommodationDeclarationController { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.controller(); + }); + this._languageBundle = null; + } + + _onReady() { + + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, + "common.messages.e-rights", "e_rights.postingAllowances", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.model.init(); + $al.notifyOnReadyMvc(); + } + + showResponseErrorMessage(data) { + const validationErrors = $al.controller._extractMessagesFromErrorResponse( + data); + $a.toast.showError(validationErrors); + } + + _extractMessagesFromErrorResponse(response) { + + const text = response.responseText; + let textObj = null; + try { + textObj = JSON.parse(text); + } catch (parseExc) { + } + const messages = []; + if (textObj && textObj.items && textObj.items.length > 0) { + textObj.items.forEach(item => { + messages.push(item.message); + }); + return messages; + } else { + return [text]; + } + } + + doRejectRequest() { + + if ($al.view._validateComments( + $al.controller._languageBundle.accommodation.alerts.justification_is_mandatory_to_reject_accommodation)) { + if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationDeclarationStates.Awaiting) { + $al.controller._mapRequest(); + $a.loading.toggle(true); + $al.controller._updateRequest( + (updateData) => { + $al.controller.doReject(); + }); + } + } + } + + doReject() { + + $al.model._restCalls.changeStateRequest.execute({ + accommodationDeclarationId: $postingAllowanceId, + stateMachineEvent: $al.model.accomodationDeclarationEvents.Reject + }, null, null, $al.controller._rejectRequestResponse); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + modelPermissions() { + $al.controller.postingAllowanceCommon.modelPermissionsCommon(); + + if ($al.model._viewModel.isBackOffice) { //BO + $al.model._viewModel.canDeleteComments = $al.view.postingAllowanceCommon.hasDeleteCommentsPermission(); + if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationDeclarationStates.Draft) { //DRAFT + $al.model._viewModel.commentsVisible = true; + $al.model._viewModel.canAddComments = true; + $al.model._viewModel.isDraft = true; + $al.model._viewModel.canSubmit = $al.controller._hasPermission( + $al.model.accDeclarationsPermisions.Submit); + $al.model._viewModel.showActionsBox = $al.model._viewModel.canSubmit; + $al.model._viewModel.canSave = $al.model._viewModel.canSubmit; + $al.model._viewModel.canDiscard = $al.model._viewModel.canSubmit; + $al.model._viewModel.canEdit = $al.model._viewModel.canSubmit; + } else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationDeclarationStates.Awaiting) { + $al.model._viewModel.isAwaiting = true; + $al.model._viewModel.showDivider = true; + $al.model._viewModel.canApprove = $al.controller._hasPermission( + $al.model.accDeclarationsPermisions.Approve); + $al.model._viewModel.canReject = $al.controller._hasPermission( + $al.model.accDeclarationsPermisions.Reject); + $al.model._viewModel.showActionsBox = $al.model._viewModel.canReject || $al.model._viewModel.canApprove; + $al.model._viewModel.canSave = $al.model._viewModel.canApprove; + $al.model._viewModel.canDiscard = $al.model._viewModel.canApprove; + $al.model._viewModel.canEdit = $al.model._viewModel.canApprove; + } else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationDeclarationStates.Approved) { + $al.model._viewModel.showDivider = true; + $al.model._viewModel.canResetApproval = $al.controller._hasPermission( + $al.model.accDeclarationsPermisions.ResetApproval); + $al.model._viewModel.showActionsBox = $al.model._viewModel.canResetApproval; + } else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationDeclarationStates.Rejected) { + $al.model._viewModel.isRejected = true; + $al.model._viewModel.canResetToDraft = $al.controller._hasPermission( + $al.model.accDeclarationsPermisions.Reset); + $al.model._viewModel.showActionsBox = $al.model._viewModel.canResetToDraft; + } else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationDeclarationStates.Paid) { + + } + } else { //FO + if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationDeclarationStates.Draft) { + $al.model._viewModel.isDraft = true; + $al.model._viewModel.canSubmit = $al.controller._hasPermission( + $al.model.accDeclarationsPermisions.Submit) + || $al.model.permissions.canOwnAtLeastOnePostingAllowance; + $al.model._viewModel.showActionsBox = $al.model._viewModel.canSubmit; + $al.model._viewModel.canSave = $al.model._viewModel.canSubmit; + $al.model._viewModel.canDiscard = $al.model._viewModel.canSubmit; + $al.model._viewModel.canEdit = $al.model._viewModel.canSubmit; + } else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationDeclarationStates.Awaiting) { + $al.model._viewModel.isAwaiting = true; + } else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationDeclarationStates.Rejected) { + $al.model._viewModel.canResetToDraft = $al.controller._hasPermission( + $al.model.accDeclarationsPermisions.Reset) + || $al.model.permissions.canOwnAtLeastOnePostingAllowance; + $al.model._viewModel.showActionsBox = $al.model._viewModel.canResetToDraft; + } else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationDeclarationStates.Approved) { + + $al.model._viewModel.canResetApproval = $al.controller._hasPermission( + $al.model.accDeclarationsPermisions.ResetApproval) + || $al.model.permissions.canOwnAtLeastOnePostingAllowance; + $al.model._viewModel.showActionsBox = $al.model._viewModel.canResetApproval; + } else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationDeclarationStates.Paid) { + + } + } + } + + async _doSubmit() { + + if (!await $al.controller._doValidateAllData()) { + return; + } + + $al.controller._mapRequest(); + + $a.loading.toggle(true); + $al.model._restCalls.updateRequest.execute( + {accommodationDeclarationId: $postingAllowanceId}, null, + $al.model._viewModel.postingAllowance, $al.controller._sendSubmitEvent); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + async _doValidateAllData() { + if (!$al.view._validateRequestDetails()) { + return false; + } + if (!$al.view._validateAccommodationDetails()) { + return false; + } + if (!$al.view._validateSupportingDocumentsComments()) { + $a.toast.showError( + $al.controller._languageBundle.accommodation.alerts.supporting_documents_mandatory_message); + return false; + } + let months = await $al.view._calculateRentalMonths(); + months = parseInt(months); + if (!$al.view._validateIsStartDateGreaterEndDate( + 'accommodationDeclarationStartDate', months) + && !$al.view._validateIsStartDateGreaterEndDate( + 'accommodationDeclarationEndDate', months)) { + $a.toast.showError( + $al.controller._languageBundle.accommodation.alerts.invalid_contract_start_and_end_date_message); + return false; + } + if (!$al.view._validateRentalDates('guaranteeReimbursementPeriod', + months)) { + $al.view._showInvalidRentalDatesErrors(); + return false; + } + return true; + } + + async _doApprove() { + + if (!await $al.controller._doValidateAllData()) { + return; + } + + $al.controller._mapRequest(); + + $a.loading.toggle(true); + $al.model._restCalls.updateRequest.execute( + {accommodationDeclarationId: $postingAllowanceId}, null, + $al.model._viewModel.postingAllowance, $al.controller._sendApproveEvent); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + + } + + _doResetApproval() { + if ($al.model._viewModel.isBackOffice && !$al.view._validateComments( + $al.controller._languageBundle.accommodation.alerts.justification_is_mandatory_for_reset_approval)) { + return; + } + $a.loading.toggle(true); + $al.controller._doResetApprovalRequest(); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + _doResetApprovalRequest() { + $al.model._restCalls.changeStateRequest.execute({ + accommodationDeclarationId: $postingAllowanceId, + stateMachineEvent: $al.model.accomodationDeclarationEvents.ResetApproval + }, null, null, (data) => { + $a.toast.showSuccess( + $al.controller._languageBundle.accommodation.alerts.update_declaration_success); + $al.model.refreshAfterUpdateState(data); + }); + } + + _mapRequest(){ + $al.view.mapRequestAttachments(); + $al.model.mapRequestDetails(); + $al.model.mapAccommodationDetails(); + } + + preparePostingAllowanceForModelView() { + let creationInstant = Date.now().toString(); + if (typeof $al.model.postingAllowance.creationActor != 'undefined') { + creationInstant = $al.model.postingAllowance.creationActor.instant; + } + $al.model.postingAllowance.postingAllowanceCreateDate = kendo.toString( + kendo.parseDate(creationInstant), "MMM") + " " + kendo.toString( + kendo.parseDate(creationInstant), "dd") + ", " + kendo.toString( + kendo.parseDate(creationInstant), "yyyy") + " at " + kendo.toString( + kendo.parseDate(creationInstant), "t"); + + return $al.model.postingAllowance; + } + + _updateRequest(updateRequestCallBack) { + $a.loading.toggle(true); + $al.model._restCalls.updateRequest.execute( + {accommodationDeclarationId: $postingAllowanceId}, null, + $al.model._viewModel.postingAllowance, updateRequestCallBack); + } + + _sendSubmitEvent(data) { + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + accommodationDeclarationId: $postingAllowanceId, + stateMachineEvent: $al.model.accomodationDeclarationEvents.Submit + }, null, null, $al.controller._submitRequestResponse); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + _submitRequestResponse(data) { + $a.loading.toggle(false); + $a.toast.showSuccess( + $al.controller._languageBundle.accommodation.actions.submit_success); + $al.model.refreshAfterUpdateState(data); + } + + _rejectRequestResponse(data) { + $a.loading.toggle(false); + $a.toast.showSuccess( + $al.controller._languageBundle.accommodation.actions.reject_success); + $al.model.refreshAfterUpdateState(data); + } + + _sendApproveEvent(data) { + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + accommodationDeclarationId: $postingAllowanceId, + stateMachineEvent: $al.model.accomodationDeclarationEvents.Approve + }, null, null, $al.controller._approveRequestResponse); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + _approveRequestResponse(data) { + $a.loading.toggle(false); + $a.toast.showSuccess( + $al.controller._languageBundle.accommodation.actions.approve_success); + $al.model.refreshAfterUpdateState(data); + } + + _hasPermission(permission) { + let accPermissions = $al.model.permissions.accDeclarationPermissions; + if (accPermissions) { + return accPermissions.includes(permission) + } + return false + } + + onChangeMonthlySecurityAmount(e) { + const dropDownList = $al.view._elements.security_amount_currency.data.element.data( + "kendoDropDownList"); + const monthlySecurityAmount = $al.view._elements.security_amount_per_month.data.element.val(); + if (monthlySecurityAmount != null && Number(monthlySecurityAmount) > 0) { + dropDownList.enable(!!$al.model._viewModel.canEdit); + } else { + $al.model._viewModel.postingAllowance.monthlySecurityAmount = null; + dropDownList.value(-1); + dropDownList.enable(false); + } + } + + onChangeMonthlyRecurrentCosts(e) { + const dropDownList = $al.view._elements.other_recurrent_costs_currency.data.element.data( + "kendoDropDownList"); + const monthlyRecurrentCosts = $al.view._elements.other_recurrent_costs_per_month.data.element.val(); + if (monthlyRecurrentCosts != null && Number(monthlyRecurrentCosts) > 0) { + dropDownList.enable(!!$al.model._viewModel.canEdit); + $("#other_recurrent_description").prop('disabled', + !$al.model._viewModel.canEdit); + } else { + $al.model._viewModel.postingAllowance.monthlyRecurrentCosts = null + dropDownList.value(-1); + dropDownList.enable(false); + $("#other_recurrent_description").val(null).prop('disabled', true); + } + } + + onChangeGuaranteeAmount(e) { + const dropDownListRemPeriod = $al.view._elements.guarantee_reimbursement_period.data.element.data( + "kendoDropDownList"); + const guaranteeAmount = $al.view._elements.guarantee_amount.data.element.val(); + if (guaranteeAmount != null && Number(guaranteeAmount) > 0) { + dropDownListRemPeriod.enable(!!$al.model._viewModel.canEdit); + } else { + $al.model._viewModel.postingAllowance.guaranteeAmount = null; + dropDownListRemPeriod.value(-1); + dropDownListRemPeriod.enable(false); + } + $al.controller.onChangeRentalCurrency(); + } + + onChangeRentalCurrency(e) { + const dropDownListGuaranteeCurrency = $al.view._elements.guarantee_currency.data.element.data( + "kendoDropDownList"); + let rentalCurrency = $al.view._elements.rental_currency.data.element.data( + "kendoDropDownList").value(); + dropDownListGuaranteeCurrency.value(-1); + if (rentalCurrency) { + dropDownListGuaranteeCurrency.value(rentalCurrency); + } + dropDownListGuaranteeCurrency.enable(false); + } + + doResetToDraftRequest() { /* from REJECTED to DRAFT */ + if ($al.model._viewModel.isBackOffice && !$al.view._validateComments( + $al.controller._languageBundle.accommodation.alerts.justification_is_mandatory_to_reject_accommodation)) { + return; + } + $a.loading.toggle(true); + $al.controller._doResetToDraft(); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + _doResetToDraft() { + $al.model._restCalls.changeStateRequest.execute({ + accommodationDeclarationId: $postingAllowanceId, + stateMachineEvent: $al.model.accomodationDeclarationEvents.Resubmit + }, null, null, $al.controller._resetToDraftResponse); + } + + _resetToDraftResponse(data) { + $a.toast.showSuccess( + $al.controller._languageBundle.accommodation.actions.reset_to_draft_success); + $al.model.refreshAfterUpdateState(data); + } + +} + + + diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-declaration.edit/accommodation-declaration.model.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-declaration.edit/accommodation-declaration.model.js new file mode 100644 index 0000000..7d9397c --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-declaration.edit/accommodation-declaration.model.js @@ -0,0 +1,400 @@ +class AccommodationDeclarationModel { + + constructor() { + + $_mvcSections.forEach((section, id) => { + this[id] = new section.model(); + }); + + this._restCalls = { + getPostingAllowance: new $a.GetRestCall(null, + "/internal/api/accommodation-declarations/{accommodationDeclarationId}"), + getStateHistory: new $a.GetRestCall(null, + "/internal/api/accommodation-declarations/state-machine/history/{accommodationDeclarationId}"), + permissions: new $a.GetRestCall(null, + "/internal/api/posting-allowances-permissions"), + appParameters: new $a.GetRestCall(null, "/internal/api/app-parameters"), + getPostingAllowanceComments: new $a.GetRestCall(null, + "/internal/api/comments/postingAllowance/{postingAllowanceId}"), + addPostingAllowanceComment: new $a.PostRestCall(null, + "/internal/api/comments/postingAllowance/{postingAllowanceId}"), + deleteComment: new $a.DeleteRestCall(null, + "/internal/api/comments/{commentId}"), + exchangeRates: new $a.GetRestCall(null, "/internal/api/exchange-rates"), + getBankInfo: new $a.GetRestCall(null, "/internal/api/bank-accounts"), + updateRequest: new $a.PutRestCall(null, + "/internal/api/accommodation-declarations/{accommodationDeclarationId}"), + changeStateRequest: new $a.PutRestCall(null, + "/internal/api/accommodation-declarations/state-machine/event/{stateMachineEvent}/{accommodationDeclarationId}"), + calculateRentalMonths: new $a.GetRestCall(null, + "/internal/api/accommodation-declarations/rental-months-calculation?startDate={startDate}&endDate={endDate}"), + + }; + this.urls = { + action: { + viewAccommodationDeclaration: $a.utils.url(null, + "/posting-allowances/accommodation-declaration-view.do"), + viewAccommodationPayment: $a.utils.url(null, + "/posting-allowances/accommodation-payment-view.do"), + } + }; + + this.accomodationDeclarationStates = { + Draft: "DRAFT", + Approved: "APPROVED", + Awaiting: "AWAITING", + Paid: "PAID", + Rejected: "REJECTED", + Completed: "COMPLETED", + } + + this.accomodationDeclarationEvents = { + Create: "CREATE", + Approve: "APPROVE", + Reject: "REJECT", + Submit: "SUBMIT", + Complete: "COMPLETE", + ResetApproval: "RESET_APPROVAL", + Resubmit: "RESUBMIT", + } + + this.dataSourcePaymentMethods = new kendo.data.DataSource({ + data: [{key: "LOCAL", value: "Local"}, + {key: "CENTRAL", value: "Central"},] + }); + + + this.dataSourcePaymentPeriods = new kendo.data.DataSource({ + data: [{key: "3", value: "3"}, + {key: "4", value: "4"}, + {key: "6", value: "6"}, + {key: "12", value: "12"}, + {key: "24", value: "24"}, + ] + }); + + this.supportingDocumentsTypes = { + EvidenceOfAccommodationContract: "ACCOMMODATION_CONTRACT", + EvidenceOfApprovalForm: "APPROVAL_FORM", + EvidenceOfAddendum: "ADDENDUM", + EvidenceOfOther: "OTHER" + } + + this.commentTypes = { + PostingAllowance: "POSTING_ALLOWANCE", + SupportingDoc: "SUPPORTING_DOC" + } + + this.columnsSupportingDocumentsNotEditable = [ + { + width: "50px", + template: ` + description + + `, + } + ]; + + this.contentDisposition = { + Attachment: "ATTACHMENT" + } + + + this.accDeclarationsPermisions = { + Create: "CREATE", + Submit: "SUBMIT", + Approve: "APPROVE", + Reset: "RESET", + ResetApproval: "RESET_APPROVAL", + Complete: "COMPLETE", + Reject: "REJECT" + } + + } + + init() { + const dataPoolExecutor = new $a.RestCallPoolExecutor( + $al.model.onAccDeclarationRetrieved); + dataPoolExecutor.add("postingAllowance", + $al.model._restCalls.getPostingAllowance, + {accommodationDeclarationId: $postingAllowanceId}); + dataPoolExecutor.add("stateMachineHistory", + $al.model._restCalls.getStateHistory, + {accommodationDeclarationId: $postingAllowanceId}); + dataPoolExecutor.add("appParameters", $al.model._restCalls.appParameters, + null, {paramType: "POSTING_ALLOWANCES"}); + dataPoolExecutor.add("permissions", $al.model._restCalls.permissions); + dataPoolExecutor.add("exchangeRates", $al.model._restCalls.exchangeRates, + null, null); + dataPoolExecutor.add("postingAllowanceComments", + $al.model.postingAllowanceCommon._restCalls.getPostingAllowanceComments, + {postingAllowanceId: $postingAllowanceId}); + dataPoolExecutor.run(); + } + + _refreshAccDeclaration() { + $al.model.init(); + } + + refreshAfterUpdateState(data) { + $al.model._viewModel.postingAllowance.state = data.state; + $al.model._refreshAccDeclaration(); + } + + onAccDeclarationRetrieved(data) { + $al.model.postingAllowance = data.get("postingAllowance").data; + $al.model.staffMember = $al.model.postingAllowance.staffMember; + $al.model.stateMachineHistory = data.get("stateMachineHistory").data; + $al.model.postingAllowanceComments = data.get( + "postingAllowanceComments").data; + $al.model.permissions = data.get("permissions").data; + const AppParametersArr = data.get("appParameters").data; + $al.model.exchangeRates = data.get("exchangeRates").data; + $al.model.appParameters = new Map( + AppParametersArr.map(i => [i.key, i.value])); + if ($al.model.postingAllowance) { + const dataPoolExecutor2 = new $a.RestCallPoolExecutor( + $al.model.onBankInfoRetrieved); + dataPoolExecutor2.add("bankInfo", $al.model._restCalls.getBankInfo, null, + {personId: $al.model.postingAllowance.staffMember.perId}); + dataPoolExecutor2.run(); + } else { + $al.model._onRenderAndBindView(); + } + + + } + + onBankInfoRetrieved(data) { + $al.model.bankInfo = data.get("bankInfo").data; + $al.model._onRenderAndBindView(); + } + + _onRenderAndBindView() { + $al.view._initializeView(); + $al.view.render(); + $al.view._bindView(); + $al.view._enableDisableAmountFields(); + $a.loading.toggle(false); + } + + mapRequestDetails() { + let paymentMethod = $al.view._elements.payment_method.data.element.data( + "kendoDropDownList").value(); + let paymentCurrency = $al.view._elements.payment_currency.data.element.data( + "kendoDropDownList").value(); + let bankAccount = $al.view._elements.bank_account.data.element.data( + "kendoDropDownList").value(); + $al.model._viewModel.postingAllowance.paymentPreferredCurrency = $al.view.isEmpty( + paymentCurrency) ? null : paymentCurrency; + $al.model._viewModel.postingAllowance.paymentMethod = $al.view.isEmpty( + paymentMethod) ? null : paymentMethod; + if (bankAccount) { + $al.model._viewModel.postingAllowance.personBankInfo = {id: bankAccount} + } + } + + mapAccommodationDetails() { + let rentalCurrency = $al.view._elements.rental_currency.data.element.data( + "kendoDropDownList").value(); + let securityAmountCurrency = $al.view._elements.security_amount_currency.data.element.data( + "kendoDropDownList").value(); + let recurrentCostsCurrency = $al.view._elements.other_recurrent_costs_currency.data.element.data( + "kendoDropDownList").value(); + let guaranteeCurrency = $al.view._elements.guarantee_currency.data.element.data( + "kendoDropDownList").value(); + let monthlyPaymentPeriodInterval = $al.view._elements.periodic_payment_interval.data.element.data( + "kendoDropDownList").value(); + let guaranteeReimbursementPeriod = $al.view._elements.guarantee_reimbursement_period.data.element.data( + "kendoDropDownList").value(); + $al.model._viewModel.postingAllowance.monthlyRentalCurrency = $al.view.isEmpty( + rentalCurrency) ? null : rentalCurrency; + $al.model._viewModel.postingAllowance.monthlySecurityAmountCurrency = $al.view.isEmpty( + securityAmountCurrency) ? null : securityAmountCurrency; + $al.model._viewModel.postingAllowance.monthlyRecurrentCostsCurrency = $al.view.isEmpty( + recurrentCostsCurrency) ? null : recurrentCostsCurrency; + $al.model._viewModel.postingAllowance.guaranteeAmountCurrency = $al.view.isEmpty( + guaranteeCurrency) ? null : guaranteeCurrency; + $al.model._viewModel.postingAllowance.remainingGuaranteeToReimburseCurrency = $al.view.isEmpty( + guaranteeCurrency) ? null : guaranteeCurrency; + $al.model._viewModel.postingAllowance.paymentPeriodicInterval = !$al.view.isEmpty( + monthlyPaymentPeriodInterval) + ? +monthlyPaymentPeriodInterval : null; + $al.model._viewModel.postingAllowance.guaranteeReimbursementPeriod = !$al.view.isEmpty( + guaranteeReimbursementPeriod) ? + +guaranteeReimbursementPeriod : null; + + let rentalContractStartDate = $al.view._elements.rental_start_date.data.element.data( + "kendoDatePicker").value(); + let rentalContractEndDate = $al.view._elements.rental_end_date.data.element.data( + "kendoDatePicker").value(); + $al.model._viewModel.postingAllowance.rentalContractStartDate = $a.utils.toLocalDateISO( + rentalContractStartDate); + $al.model._viewModel.postingAllowance.rentalContractEndDate = $a.utils.toLocalDateISO( + rentalContractEndDate); + + } + + _defaultAccommodationDeclarationSupportingDocs(){ + + return [ + {id: null, + postingAllowanceId: $postingAllowanceId, + docType: $al.model.supportingDocumentsTypes.EvidenceOfAccommodationContract, + docOrder: 1, + docMandatory: true, + comment: { + id: null, + commentText: null, + commentType: $al.model.commentTypes.SupportingDoc, + deleted: false + }, + attachments: [] + }, + {id: null, + postingAllowanceId: $postingAllowanceId, + docType: $al.model.supportingDocumentsTypes.EvidenceOfApprovalForm, + docOrder: 2, + docMandatory: true, + comment: { + id: null, + commentText: null, + commentType: $al.model.commentTypes.SupportingDoc, + deleted: false + }, + attachments: [] + }, + {id: null, + postingAllowanceId: $postingAllowanceId, + docType: $al.model.supportingDocumentsTypes.EvidenceOfAddendum, + docOrder: 3, + docMandatory: false, + comment: { + id: null, + commentText: null, + commentType: $al.model.commentTypes.SupportingDoc, + deleted: false + }, + attachments: [] + }, + {id: null, + postingAllowanceId: $postingAllowanceId, + docType: $al.model.supportingDocumentsTypes.EvidenceOfOther, + docOrder: 4, + docMandatory: false, + comment: { + id: null, + commentText: null, + commentType: $al.model.commentTypes.SupportingDoc, + deleted: false + }, + attachments: [] + } + ]; + } + + getSupportingDocumentDataSource(position){ + return new kendo.data.DataSource({ + autoSync: false, + data: $al.model.getAttachments(position), + dataType: "json", + schema: { + model: { + id: "id", + fields: { + id: {type: "number"}, + downloadUrl: {type: "string"}, + fileName: {type: "string"}, + }, + } + } + }); + } + + getAttachments(position){ + const index = +position; + return $al.model._viewModel.postingAllowance.supportingDocs && + $al.model._viewModel.postingAllowance.supportingDocs.length > index && + $al.model._viewModel.postingAllowance.supportingDocs[index] && + $al.model._viewModel.postingAllowance.supportingDocs[index].attachments; + } + + prepareAccommodationDeclarationAttachmentRequest() { + + let supportingDocs = $al.model._viewModel.postingAllowance.supportingDocs; + let newSupportingDocs = []; + for (let i = 0; i < supportingDocs.length; i++) { + let supportingDoc = supportingDocs[i]; + supportingDoc.postingAllowanceId = $postingAllowanceId; + let attachments = []; + if (supportingDoc.attachments && supportingDoc.attachments.length + > 0) { + supportingDoc.attachments.forEach(item => { + $al.model.addAttachments(attachments, item); + }); + supportingDoc.attachments = attachments; + $al.model.setSupportingDocumentComment(supportingDoc, + supportingDoc.comment ? supportingDoc.comment.commentText : null); + newSupportingDocs.push(supportingDoc); + } else if (supportingDoc.comment && supportingDoc.comment.commentText) { + newSupportingDocs.push(supportingDoc); + } + } + $al.model._viewModel.postingAllowance.supportingDocs = newSupportingDocs; + } + + setSupportingDocumentComment(supportingDoc, comment) { + if (supportingDoc.comment) { + if (!$al.view.isEmpty(comment)) { + supportingDoc.comment.commentText = comment; + } else { + supportingDoc.comment = null; + } + } + } + + addAttachments(attachments, item) { + attachments.push({ + fileUid: item.fileUid ? item.fileUid : item.uid, + fileName: item.fileName ? item.fileName : item.name, + name: item.fileName ? item.fileName : item.name, + title: item.fileName ? item.fileName : item.name, + extension: item.fileName ? '.' + item.fileName.split('.').pop() + : '.' + item.name.split('.').pop(), + id: item.id, + creationActor: item.creationActor, + updatingActor: item.updatingActor, + contentDisposition: $al.model.contentDisposition.Attachment + }); + } + + mapAttachments(attachments) { + const attachList = []; + if (attachments) { + for (let i = 0; i <= attachments.length; i++) { + let attachment = attachments[i]; + if (attachment) { + attachList.push({ + name: '' + attachment.fileName + + '', + fileName: attachment.fileName, + fileUid: attachment.fileUid, + title: attachment.fileName, + extension: '.' + attachment.fileName.split('.').pop(), + id: attachment.id, + creationActor: attachment.creationActor, + updatingActor: attachment.updatingActor, + contentDisposition: $al.model.postingAllowanceCommon.contentDisposition.Attachment, + downloadUrl: $al.fileManagement.restCalls.preview.formatUrl( + {uid: attachment.fileUid}) + }); + } + } + } + return attachList; + } +} diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-declaration.edit/accommodation-declaration.mvc.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-declaration.edit/accommodation-declaration.mvc.js new file mode 100644 index 0000000..0c3d72e --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-declaration.edit/accommodation-declaration.mvc.js @@ -0,0 +1,2 @@ +$al.mvc(AccommodationDeclarationModel, AccommodationDeclarationView, + AccommodationDeclarationController, true); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-declaration.edit/accommodation-declaration.view.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-declaration.edit/accommodation-declaration.view.js new file mode 100644 index 0000000..5134b50 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-declaration.edit/accommodation-declaration.view.js @@ -0,0 +1,797 @@ +class AccommodationDeclarationView { + + constructor() { + + $_mvcSections.forEach((section, id) => { + this[id] = new section.view(); + }); + + this._templates = new $a.DataContainer("postingAllowance"); + this._elements = new $a.DataContainer("postingAllowance"); + this._templates.data(new $a.KendoTemplateData()); + this._elements.node("communication").data(new $a.KendoElementData()); + this._elements.node("communication2").data(new $a.KendoElementData()); + this._elements.node("comments").node("grid").data( + new $a.KendoElementData()); + this._templates.node("comments").node("grid").data( + new $a.KendoTemplateData()); + this._templates.node("add_comment").data(new $a.KendoTemplateData()); + this._elements.node("payment_method").data(new $a.KendoElementData()); + this._elements.node("payment_currency").data(new $a.KendoElementData()); + this._elements.node("bank_account").data(new $a.KendoElementData()); + this._elements.node("rental_start_date").data(new $a.KendoElementData()); + this._elements.node("rental_end_date").data(new $a.KendoElementData()); + this._elements.node("periodic_payment_interval").data( + new $a.KendoElementData()); + this._elements.node("rental_amount_per_month").data( + new $a.KendoElementData()); + this._elements.node("rental_amount_ceiling_per_month").data( + new $a.KendoElementData()); + this._elements.node("rental_currency").data(new $a.KendoElementData()); + this._elements.node("security_amount_currency").data( + new $a.KendoElementData()); + this._elements.node("security_amount_per_month").data( + new $a.KendoElementData()); + this._elements.node("other_recurrent_costs_per_month").data( + new $a.KendoElementData()); + this._elements.node("other_recurrent_costs_currency").data( + new $a.KendoElementData()); + this._elements.node("other_recurrent_description").data( + new $a.KendoElementData()); + this._elements.node("guarantee_amount").data(new $a.KendoElementData()); + this._elements.node("guarantee_currency").data(new $a.KendoElementData()); + this._elements.node("guarantee_reimbursement_period").data( + new $a.KendoElementData()); + this._elements.node("relatives").node("grid").data( + new $a.KendoElementData()); + this._templates.node("relatives").node("grid").data( + new $a.KendoTemplateData()); + this._elements.node("attachmentsListView").data(new $a.KendoElementData()); + + } + + _getDataSourceCurrencies() { + return new kendo.data.DataSource({ + data: $al.model.exchangeRates, + sort: [ + {field: "currency", dir: "asc"}, + ] + }); + } + render() { + $al.view._templates.data.compile(); + $al.view._renderCommunication(); + $al.view._renderPaymentMethod(); + $al.view._renderAccommodationDetails(); + $al.view._templates.comments.grid.data.compile(); + $al.view._templates.add_comment.data.compile(); + $al.view.postingAllowanceCommon._renderCommentsGrid(); + $al.view._templates.relatives.grid.data.compile(); + $al.view._renderRelativesGrid(); + $al.view.initializeSupportingDocsAttachments(); + } + + _renderCommunication() { + $al.view._elements.communication.data.element.kendoListView({ + dataSource: $al.view._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + $al.view._elements.communication.data.component = "kendoListView"; + $al.view._elements.communication2.data.element.kendoListView({ + dataSource: $al.view._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + $al.view._elements.communication2.data.component = "kendoListView"; + } + + _prepareCommunication(data) { + if (typeof data !== "undefined" && data !== null) { + data.forEach(n => { + n.arrivalState = $al.controller._languageBundle.stateMachine[n.arrivalState.toLowerCase()]; + }); + } + return data; + } + + isEmpty(str) { + return (!str || (str && str.length === 0)); + } + + _enableDisableAmountFields() { + $al.controller.onChangeMonthlySecurityAmount(); + $al.controller.onChangeMonthlyRecurrentCosts(); + $al.controller.onChangeGuaranteeAmount(); + } + + _initializeView() { + + $al.model.postingAllowance = $al.controller.postingAllowanceCommon.preparePostingAllowanceForModelView(); + const viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel({ + isVisible: true, + message: " ", + lastPlaceEmpl: " ", + name: $al.model.postingAllowance.staffMember.lastName + ' ' + + $al.model.postingAllowance.staffMember.firstName, + postingAllowance: $al.model.postingAllowance, + staffMember: $al.model.staffMember, + perId: $al.model.staffMember.perId, + statutoryLinkDesc: $al.model.staffMember.statutoryLinkDesc, + exchangeRates: $al.model.exchangeRates, + bankInfo: $al.model.bankInfo, + isBackOffice: $isBackOffice, + commentsVisible: $isBackOffice + || $al.view.postingAllowanceCommon._thereAreComments(false), + showActionsBox: false, + isApproved: false, + isAwaiting: false, + isRejected: false, + showDivider: false, + canApprove: false, + canResetApproval: false, + canReject: false, + canAddComments: $isBackOffice, + canDeleteComments: false, + showCommentButton: true, + canSave: false, + showPaymentInfo: false, + showPaymentAbacInfoLink: false, + isDraft: false, + isLoading: false, + canEdit: false, + showSupportingDocuments: false, + canSubmit: false, + canDiscard: false, + canResetToDraft: false, + showCommentInput: function () { + this.set("showCommentButton", false); + $al.view.postingAllowanceCommon._scrollToBottom(); + $('textarea.autoSize').autosize(); + }, + onApproveRequest: function () { + $al.controller._doApprove(); + }, + onRejectRequest: function () { + $al.controller.doRejectRequest(); + }, + onSaveChanges: function () { + $al.controller._mapRequest(); + $al.controller._updateRequest( + (updateData) => { + $al.model._refreshAccDeclaration(); + }); + }, + onDiscardChanges: function () { + $a.loading.toggle(true); + $al.model._refreshAccDeclaration(); + }, + onSubmit: function () { + $al.controller._doSubmit(); + }, + onResetApproval: function(){ + $al.controller._doResetApproval(); + }, + onResetToDraft: function () { + $al.controller.doResetToDraftRequest(); + } + }); + $al.controller.modelPermissions(); + $al.model._viewModel.declarationOfHonourList = $al.view._getDeclarationHonourStatements(); + + } + + _bindView() { + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } + + scrollToId(id) { + document.getElementById(id).scrollIntoView({block: "center"}); + } + + _getDeclarationHonourStatements() { + const statements = []; + statements.push({ + statementId: "statement_1", + statement: $al.controller._languageBundle.honour.accommodation_declaration_supporting_documents, + isChecked: false + }); + return statements; + } + + _renderPaymentMethod() { + + $al.view._elements.payment_method.data.element.kendoDropDownList({ + dataSource: $al.model.dataSourcePaymentMethods, + dataTextField: "value", + dataValueField: "key", + placeHolder: 'Payment Method', + enable: true, + autoWidth: true, + optionLabel: "--Please select--", + required: "required", + validationMessage: "Select Payment method", + value: $al.model._viewModel.postingAllowance.paymentMethod ? + $al.model._viewModel.postingAllowance.paymentMethod + : "", + }); + + $al.view._elements.payment_currency.data.element.kendoDropDownList({ + enable: true, + optionLabel: "--Please select--", + required: "required", + validationMessage: "Select Preferred Currency", + filter: "startswith", + dataTextField: "currency", + dataValueField: "currency", + dataSource: $al.view._getDataSourceCurrencies(), + autoWidth: true, + value: $al.model._viewModel.postingAllowance.paymentPreferredCurrency ? + $al.model._viewModel.postingAllowance.paymentPreferredCurrency : "", + }); + + $al.view._elements.bank_account.data.element.kendoDropDownList({ + enable: true, + optionLabel: "--Please select--", + required: "required", + validationMessage: "Select Bank Account", + filter: "startswith", + dataTextField: "ibanCode", + dataValueField: "id", + dataSource: $al.model.bankInfo, + autoWidth: true, + value: $al.model._viewModel.postingAllowance.personBankInfo ? + $al.model._viewModel.postingAllowance.personBankInfo.id : "", + }); + } + + _renderAccommodationDetails(){ + + $al.view._elements.rental_start_date.data.element.kendoDatePicker({ + value: $al.model._viewModel.postingAllowance.rentalContractStartDate ? + $al.model._viewModel.postingAllowance.rentalContractStartDate // yyyy-month-day + : null, + parseFormats: ["yyyy-MM-dd"] + }); + $al.view._elements.rental_end_date.data.element.kendoDatePicker({ + value: $al.model._viewModel.postingAllowance.rentalContractEndDate ? + $al.model._viewModel.postingAllowance.rentalContractEndDate + : null, + parseFormats: ["yyyy-MM-dd"] + }); + + $al.view._elements.periodic_payment_interval.data.element.kendoDropDownList({ + dataSource: $al.model.dataSourcePaymentPeriods, + dataTextField: "value", + dataValueField: "key", + enable: true, + autoWidth: true, + optionLabel: "--Please select--", + required: "required", + validationMessage: "Select Payment interval", + template: ({ key, value }) => `${value}  Months`, + valueTemplate:'${value}  Months', + value: $al.model._viewModel.postingAllowance.paymentPeriodicInterval ? + $al.model._viewModel.postingAllowance.paymentPeriodicInterval + : "", + }); + + + $al.view._elements.rental_currency.data.element.kendoDropDownList({ + enable: true, + optionLabel: "--Please select--", + required: "required", + validationMessage: "Select Rental Currency", + filter: "startswith", + dataTextField: "currency", + dataValueField: "currency", + dataSource:$al.view._getDataSourceCurrencies(), + autoWidth: true, + value: $al.model._viewModel.postingAllowance.monthlyRentalCurrency ? + $al.model._viewModel.postingAllowance.monthlyRentalCurrency : "", + }); + + $al.view._elements.security_amount_currency.data.element.kendoDropDownList({ + enable: true, + optionLabel: "--Please select--", + required: "required", + validationMessage: "Select Security Amount Currency", + filter: "startswith", + dataTextField: "currency", + dataValueField: "currency", + dataSource:$al.view._getDataSourceCurrencies(), + autoWidth: true, + value: $al.model._viewModel.postingAllowance.monthlySecurityAmountCurrency ? + $al.model._viewModel.postingAllowance.monthlySecurityAmountCurrency : "" + }); + + $al.view._elements.other_recurrent_costs_currency.data.element.kendoDropDownList({ + enable: true, + optionLabel: "--Please select--", + required: "required", + validationMessage: "Select Other Recurrent Costs Currency", + filter: "startswith", + dataTextField: "currency", + dataValueField: "currency", + dataSource:$al.view._getDataSourceCurrencies(), + autoWidth: true, + value: $al.model._viewModel.postingAllowance.monthlyRecurrentCostsCurrency ? + $al.model._viewModel.postingAllowance.monthlyRecurrentCostsCurrency : "", + }); + + $al.view._elements.guarantee_currency.data.element.kendoDropDownList({ + enable: true, + optionLabel: "--Please select--", + required: "required", + validationMessage: "Select Guarantee Currency", + filter: "startswith", + dataTextField: "currency", + dataValueField: "currency", + dataSource: $al.view._getDataSourceCurrencies(), + autoWidth: true, + value: $al.model._viewModel.postingAllowance.guaranteeAmountCurrency ? + $al.model._viewModel.postingAllowance.guaranteeAmountCurrency : "", + }); + + + $al.view._elements.guarantee_reimbursement_period.data.element.kendoDropDownList({ + dataSource: $al.model.dataSourcePaymentPeriods, + dataTextField: "value", + dataValueField: "key", + enable: true, + autoWidth: true, + optionLabel: "--Please select--", + required: "required", + validationMessage: "Select Guarantee reimbursement period", + template: ({ key, value }) => `${value}  Months`, + valueTemplate:'${value}  Months', + value: $al.model._viewModel.postingAllowance.guaranteeReimbursementPeriod ? + $al.model._viewModel.postingAllowance.guaranteeReimbursementPeriod + : "", + }); + + } + + _renderRelativesGrid() { + const columns_desc = [ + { + field: "joiningAccommodation", + title: "Join", + width: "50px", + template: '', + headerAttributes: { + "class": "pr-0" + }, + attributes: { + "class": "pl-2 pr-0" + } + }, + { + field: "relative.lastName", + title: "Name", + width: "25%", + attributes: { + "class": "font-weight-medium" + }, + template: "#= relative.lastName #, #= relative.firstName #" + }, + { + field: "relative.age", + title: "Age", + width: "75px" + }, + { + field: "relation", + title: "Relation", + width: "20%" + }, + { + field: "address", + title: "Address", + width: "30%", + template: $al.view.familyMemberAddress, + } + ]; + + $al.view._elements.relatives.grid.data.element.kendoGrid({ + dataSource: $al.model.postingAllowance.familyMembers, + scrollable: false, + sortable: true, + noRecords: { + template: "" + }, + columns: columns_desc + }); + + $al.view._elements.relatives.grid.data.component = "kendoGrid"; + } + + _setJoinedAccommodationDeclaration(cb) { + let row = $(cb).closest("tr"); + let grid = $(cb).closest("div[data-role='grid']").data("kendoGrid"); + let item = grid.dataItem(row); + $al.model._viewModel.postingAllowance.familyMembers.forEach(person => { + if (person.id === item.id) { + person.joiningAccommodation = cb.checked; + } + } + ); + } + + familyMemberAddress(item) { + let address = item.address; + if (address) { + return `${address.streetName ? address.streetName + : ''} ${address.streetNumber ? address.streetNumber + : ''} ${address.cityName + ? `, ${address.cityName}` : ''} ${address.country + ? `, ${address.country.name}` : ''}`; + } + return ""; + } + + initializeSupportingDocsAttachments() { + let defaultAccommodationDeclarationDetails = $al.model._defaultAccommodationDeclarationSupportingDocs(); + let supportingDocs = $al.model._viewModel.postingAllowance.supportingDocs; + + if (supportingDocs) { + for (let i = 0; i < supportingDocs.length; i++) { + let supportingDoc = supportingDocs[i]; + const defaultSupportingDocument = defaultAccommodationDeclarationDetails.filter( + function (a) { + if (a.docType === supportingDoc.docType) { + return true; + } + }, Object.create(null)); + if (defaultSupportingDocument && defaultSupportingDocument.length > 0) { + let item = defaultSupportingDocument[0]; + item.id = supportingDoc.id; + item.creationActor = supportingDoc.creationActor; + item.updatingActor = supportingDoc.updatingActor; + item.attachments = supportingDoc.attachments + && supportingDoc.attachments.length > 0 ? $al.model.mapAttachments( + supportingDoc.attachments) : []; + if (supportingDoc.comment) { + item.comment = supportingDoc.comment; + $al.view.bindSupportingDocumentsComments(supportingDoc); + } + } + } + } + $al.model._viewModel.postingAllowance.supportingDocs = defaultAccommodationDeclarationDetails; + $al.model._viewModel.showSupportingDocuments = true; + + let defaultAccommodationDeclarationDetailsFiltered = defaultAccommodationDeclarationDetails.filter( item => item.docType !== $al.model.supportingDocumentsTypes.HOAEmail ); + $al.view._elements.attachmentsListView.data.element.kendoListView({ + dataSource: $al.model._viewModel.canEdit + ? defaultAccommodationDeclarationDetailsFiltered + : defaultAccommodationDeclarationDetailsFiltered.filter( item => item.attachments && item.attachments.length > 0 || (item.comment?.commentText ?? "").trim() !== "" ), + template: kendo.template($("#supporting-document-template").html()), + dataBound: function(e) { + + e.sender.dataSource.view().forEach(function (item, index) { + + const gridId = "attachments_grid_" + item.uid; + const $grid = $("#" + gridId); + new $a.KendoElementData($grid, { + attachments: item.attachments + }); + if (!$al.model._viewModel.canEdit) { + $grid.kendoGrid({ + noRecords: { template: "
    No file provided.
    " }, + dataSource: item.attachments || [], + scrollable: false, + sortable: true, + size: "small", + columns: $al.model.columnsSupportingDocumentsNotEditable + }); + }; + + let uploaderId = "uploaderId_" + item.docType.toLowerCase(); + $al.view.initializeFileUploader(index, uploaderId); + + if (item.comment) { + let commentId = "attachments_comment_" + item.docType.toLowerCase(); + let $comment = $("#" + commentId); + $comment.val(item.comment.commentText); + } + + }); + $('textarea.autoSize').autosize(); + } + }).removeClass('k-widget k-listview'); + $al.view._elements.attachmentsListView.data.component = "kendoListView"; + } + + bindSupportingDocumentsComments(supportingDoc) { + $('#attachment_comment_' + supportingDoc.docType.toLowerCase()).val( supportingDoc.comment.commentText ); + } + + initializeFileUploader(supportingDocPosition, inputId) { + + $(`#${inputId}`).kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, inputId), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.view._refreshAccommodationDeclarationAttachmentsInModel(e.operation, e.files, supportingDocPosition, inputId); + }, + error: function (e) { + $a.toast.showError('Error while uploading files!'); + }, + complete: function (e) { + }, + select: function (e) { + }, + localization: { + select: 'SELECT FILES...' + }, + files: $al.model._viewModel.postingAllowance.supportingDocs[+supportingDocPosition].attachments + }); + $al.view._renderUnEditableSupportingDocumentsGrid(supportingDocPosition,inputId); + } + + _refreshAccommodationDeclarationAttachmentsInModel(operation, files, position, fileUploaderId) { + if (typeof $al.model.postingAllowance.state == 'undefined' + || $al.model.postingAllowance.state === $al.model.accomodationDeclarationStates.Draft + || $al.model.postingAllowance.state === $al.model.accomodationDeclarationStates.Awaiting) { + + if ((typeof $al.model._viewModel.postingAllowance.supportingDocs !== "undefined" + || !$al.model._viewModel.postingAllowance.supportingDocs) + && $al.model._viewModel.postingAllowance.supportingDocs.length !== 4) { + $al.model._viewModel.postingAllowance.supportingDocs = $al.model._defaultAccommodationDeclarationSupportingDocs(); + } + const upload = $(`#${fileUploaderId}`).data("kendoUpload"); + $al.model._viewModel.postingAllowance.supportingDocs[+position].attachments = upload.getFiles(); + } + } + + _renderUnEditableSupportingDocumentsGrid(position, inputId) { + + if (!$al.model._viewModel.canEdit && $al.view.hasAttachments(position)){ + $(`#${inputId}_grid`).kendoGrid({ + noRecords: { + template: "
    No file provided.
    " + }, + dataSource: $al.model.getSupportingDocumentDataSource(position), + scrollable: false, + sortable: true, + size: "small", + columns: $al.model.columnsSupportingDocumentsNotEditable + }); + } + } + + hasAttachments(position){ + const index = +position; + return $al.model._viewModel.postingAllowance.supportingDocs && + $al.model._viewModel.postingAllowance.supportingDocs.length > index && + $al.model._viewModel.postingAllowance.supportingDocs[index] && + $al.model._viewModel.postingAllowance.supportingDocs[index].attachments && + $al.model._viewModel.postingAllowance.supportingDocs[index].attachments.length > 0 + } + + mapRequestAttachments() { + $al.model._viewModel.postingAllowance.supportingDocs.forEach( + (item, index) => { + $al.view.mapRequestAttachmentFiles(index, item.docType.toLowerCase()); + }); + $al.model.prepareAccommodationDeclarationAttachmentRequest(); + } + + mapRequestAttachmentFiles(position, fileDocType) { + const fileDynamicInput = `uploaderId_${fileDocType}`; + const upload = $(`#${fileDynamicInput}`).data("kendoUpload"); + let supportingDoc = $al.model._viewModel.postingAllowance.supportingDocs[position]; + supportingDoc.attachments = upload.getFiles(); + const CommentDynamicInput = `attachments_comment_${fileDocType}`; + const comment = $(`#${CommentDynamicInput}`).val(); + $al.model.setSupportingDocumentComment(supportingDoc, comment); + } + + _validateRequestDetails(){ + + const resettlementDetailsFormValidator = $(".accommodationDeclarationRequestDetailsForm").kendoValidator().data( + "kendoValidator"); + if (!resettlementDetailsFormValidator.validate()) { + $al.view.scrollToId('accommodationDeclarationRequestDetailsForm'); + return false; + } + return true; + } + + _validateAccommodationDetails(){ + + const validator = $(".accommodationDeclarationDetailsForm").kendoValidator({ + messages: { + amountRule: "is required", + requiredFieldEmpty: "is required", + }, + rules: { + amountRule: input => { + if (input.is("[name=guarantee_currency]") + && !$al.view.isEmpty( + $al.model._viewModel.postingAllowance.guaranteeAmount) + && $al.view._amountIsGreaterThanZero( + $al.model._viewModel.postingAllowance.guaranteeAmount) + && $al.view.isEmpty( + $al.view._elements.guarantee_currency.data.element.data( + "kendoDropDownList").value()) + ) { + $al.view.scrollToId('accommodationDeclarationDetailsForm'); + return false; + } else if (input.is("[name=guarantee_reimbursement_period]") + && !$al.view.isEmpty( + $al.model._viewModel.postingAllowance.guaranteeAmount) + && $al.view._amountIsGreaterThanZero( + $al.model._viewModel.postingAllowance.guaranteeAmount) + && $al.view.isEmpty( + $al.view._elements.guarantee_reimbursement_period.data.element.data( + "kendoDropDownList").value()) + ) { + $al.view.scrollToId('accommodationDeclarationDetailsForm'); + return false; + } else if (input.is("[name=other_recurrent_costs_currency]") + && !$al.view.isEmpty( + $al.model._viewModel.postingAllowance.monthlyRecurrentCosts) + && $al.view._amountIsGreaterThanZero( + $al.model._viewModel.postingAllowance.monthlyRecurrentCosts) + && $al.view.isEmpty( + $al.view._elements.other_recurrent_costs_currency.data.element.data( + "kendoDropDownList").value()) + ) { + $al.view.scrollToId('accommodationDeclarationDetailsForm'); + return false; + } else if (input.is("[name=other_recurrent_description]") + && !$al.view.isEmpty( + $al.model._viewModel.postingAllowance.monthlyRecurrentCosts) + && $al.view._amountIsGreaterThanZero( + $al.model._viewModel.postingAllowance.monthlyRecurrentCosts) + && $al.view.isEmpty(input.val().trim()) + ) { + $al.view.scrollToId('accommodationDeclarationDetailsForm'); + return false; + } else if (input.is("[name=security_amount_currency]") + && !$al.view.isEmpty( + $al.model._viewModel.postingAllowance.monthlySecurityAmount) + && $al.view._amountIsGreaterThanZero( + $al.model._viewModel.postingAllowance.monthlySecurityAmount) + && $al.view.isEmpty( + $al.view._elements.security_amount_currency.data.element.data( + "kendoDropDownList").value()) + ) { + $al.view.scrollToId('accommodationDeclarationDetailsForm'); + return false; + } + return true; + }, + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + } + }).data("kendoValidator"); + return validator.validate(); + } + + _amountIsGreaterThanZero(value){ + + return !$al.view.isEmpty(value) && value > 0; + } + + _validateRentalDates(className, months){ + + let guaranteeReimbursementPeriod = $al.view._elements.guarantee_reimbursement_period.data.element.data( + "kendoDropDownList").value(); + const guaranteeAmount = $al.view._elements.guarantee_amount.data.element.val(); + + const validator = $(`.${className}`).kendoValidator({ + messages: { + invalidDates: "is required", + }, + rules: { + invalidDates: input => { + if( $al.view.isEmpty(guaranteeAmount) && + $al.view.isEmpty(guaranteeReimbursementPeriod)){ + return true; + }else if (months === 0) { + return false; + }else if (Number(guaranteeReimbursementPeriod) > months) { + return false; + } + return true; + }, + } + }).data("kendoValidator"); + return validator.validate(); + } + _validateIsStartDateGreaterEndDate(className, months){ + + + + const validator = $(`.${className}`).kendoValidator({ + messages: { + invalidDates: "is required", + }, + rules: { + invalidDates: input => { + return months !== -1; + }, + } + }).data("kendoValidator"); + return validator.validate(); + } + + _showInvalidRentalDatesErrors(){ + $a.toast.showError( + $al.controller._languageBundle.accommodation.alerts.invalid_rental_contract_message); + } + + _calculateRentalMonths( ) { + + let startDate = $al.view._elements.rental_start_date.data.element.data( + "kendoDatePicker").value(); + let endDate = $al.view._elements.rental_end_date.data.element.data( + "kendoDatePicker").value(); + + return new Promise((resolve, reject) => { + + // Check if end date is greater than start date + if (endDate < startDate) { + resolve(-1); + return -1; + } + + $al.model._restCalls.calculateRentalMonths.execute( + {startDate: $a.utils.toLocalDateISO(startDate), endDate: $a.utils.toLocalDateISO(endDate)} + , null, (months) => { + resolve(months); + }, null, null, false + ); + + }) + } + + _validateSupportingDocumentsComments(){ + + const validator = $(".supportingDocumentsForm").kendoValidator({ + messages: { + supportingDocumentRule: "Comment is required", + }, + rules: { + supportingDocumentRule: input => { + if (input.is("[name=attachment_comments_accommodation_contract]") + && $al.view.isEmpty(input.val().trim())) { + $al.view.scrollToId('attachments_comment_accommodation_contract'); + return false; + } else if (input.is("[name=attachment_comments_approval_form]") + && $al.view.isEmpty(input.val().trim())) { + $al.view.scrollToId('attachments_comment_approval_form'); + return false; + } + return true; + } + } + }).data("kendoValidator"); + return validator.validate(); + } + + getFiles(fileUploaderId){ + return $(`#${fileUploaderId}`).data("kendoUpload").getFiles(); + } + + _validateComments(message) { + // Check at least one comment + let valid = $al.view.postingAllowanceCommon._thereAreComments(true); + if (!valid) { + $a.toast.showError(message); + $al.view.postingAllowanceCommon.showMissingCommentMessage('ACCOMMODATION'); + } + return valid; + } +} + + + diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-payment.edit/accommodation-payment.controller.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-payment.edit/accommodation-payment.controller.js new file mode 100644 index 0000000..bba49c9 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-payment.edit/accommodation-payment.controller.js @@ -0,0 +1,614 @@ +class AccommodationPaymentController { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.controller(); + }); + this._languageBundle = null; + } + + _onReady() { + + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, + "common.messages.e-rights", "e_rights.postingAllowances", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.model.init(); + $al.notifyOnReadyMvc(); + } + + showResponseErrorMessage(data) { + const validationErrors = $al.controller._extractMessagesFromErrorResponse( + data); + $a.toast.showError(validationErrors); + } + + _extractMessagesFromErrorResponse(response) { + + const text = response.responseText; + let textObj = null; + try { + textObj = JSON.parse(text); + } catch (parseExc) { + } + const messages = []; + if (textObj && textObj.items && textObj.items.length > 0) { + textObj.items.forEach(item => { + messages.push(item.message); + }); + return messages; + } else { + return [text]; + } + } + + doRejectRequest() { + if ($al.view._validateComments( + $al.controller._languageBundle.accommodation.alerts.justification_is_mandatory_to_reject_accommodation)) { + if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationPaymentStates.Awaiting) { + $al.controller._mapRequest(); + $a.loading.toggle(true); + $al.controller._updateRequest( + (updateData) => { + $al.controller.doReject(); + }); + } + } + } + + doReject() { + + $al.model._restCalls.changeStateRequest.execute({ + accommodationPaymentId: $postingAllowanceId, + stateMachineEvent: $al.model.accomodationPaymentEvents.Reject + }, null, null, $al.controller._rejectRequestResponse); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + modelPermissions() { + $al.controller.postingAllowanceCommon.modelPermissionsCommon(); + + if ($al.model._viewModel.isBackOffice) { //BO + $al.model._viewModel.canDeleteComments = $al.view.postingAllowanceCommon.hasDeleteCommentsPermission(); + if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationPaymentStates.Draft) { //DRAFT + $al.model._viewModel.commentsVisible = true; + $al.model._viewModel.canAddComments = true; + $al.model._viewModel.isDraft = true; + $al.model._viewModel.canSubmit = $al.controller._hasPermission( + $al.model.accPaymentsPermisions.Submit); + $al.model._viewModel.showActionsBox = $al.model._viewModel.canSubmit; + $al.model._viewModel.canSave = $al.model._viewModel.canSubmit; + $al.model._viewModel.canDiscard = $al.model._viewModel.canSubmit; + $al.model._viewModel.canEdit = $al.model._viewModel.canSubmit; + $al.model._viewModel.canEditStartDate = $al.model._viewModel.canSubmit; + $al.model._viewModel.canEditOnlyBO =$al.model._viewModel.canEdit; + $al.model._viewModel.canEditSupportingDocuments = $al.model._viewModel.canSubmit; + } else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationPaymentStates.Awaiting) { + $al.model._viewModel.isAwaiting = true; + $al.model._viewModel.showDivider = true; + $al.model._viewModel.canApprove = $al.controller._hasPermission( + $al.model.accPaymentsPermisions.Approve); + $al.model._viewModel.canReject = $al.controller._hasPermission( + $al.model.accPaymentsPermisions.Reject); + $al.model._viewModel.showActionsBox = $al.model._viewModel.canReject || $al.model._viewModel.canApprove; + $al.model._viewModel.canSave = $al.model._viewModel.canApprove; + $al.model._viewModel.canDiscard = $al.model._viewModel.canApprove; + $al.model._viewModel.canEdit = $al.model._viewModel.canApprove; + $al.model._viewModel.canEditStartDate = $al.model._viewModel.canApprove; + $al.model._viewModel.canEditOnlyBO =$al.model._viewModel.canEdit; + $al.model._viewModel.canEditProofOfPayment = $al.model._viewModel.canEdit; + $al.model._viewModel.canEditSupportingDocuments = $al.model._viewModel.canEdit; + } else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationPaymentStates.Approved) { + $al.model._viewModel.showDivider = true; + $al.model._viewModel.canResetApproval = $al.controller._hasPermission( + $al.model.accPaymentsPermisions.ResetApproval); + $al.model._viewModel.canMarkAsPaid = $al.controller._hasPermission( + $al.model.accPaymentsPermisions.Pay); + $al.model._viewModel.showActionsBox = $al.model._viewModel.canResetApproval; + } else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationPaymentStates.Rejected) { + $al.model._viewModel.isRejected = true; + $al.model._viewModel.canResetToDraft = $al.controller._hasPermission( + $al.model.accPaymentsPermisions.Reset); + $al.model._viewModel.showActionsBox = $al.model._viewModel.canResetToDraft; + } else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationPaymentStates.Paid) { + $al.model._viewModel.canResetApproval = $al.controller._hasPermission( + $al.model.accPaymentsPermisions.ResetApproval); + $al.model._viewModel.isAbacPayment = $al.controller._isAbacPayment(); + $al.model._viewModel.showPaymentInfo = $al.model._viewModel.isAbacPayment; + $al.model._viewModel.canSubmitPop = $al.controller._hasPermission( + $al.model.accPaymentsPermisions.SubmitPop); + $al.model._viewModel.canRefreshAbacInfo = $al.controller._hasPermission( + $al.model.accPaymentsPermisions.Pay); + $al.model._viewModel.showActionsBox = ($al.model._viewModel.canSubmitPop || $al.model._viewModel.canResetApproval); + $al.model._viewModel.canEditSupportingDocuments = $al.model._viewModel.canSubmitPop; + $al.model._viewModel.postingAllowancePaymentDateFormatted = kendo.toString(kendo.parseDate($al.model.postingAllowance.abacPaymentDate), 'MMM dd, yyyy'); + }else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationPaymentStates.PendingVerificationPop){ + $al.model._viewModel.commentsVisible = true; + $al.model._viewModel.canValidatePop = $al.controller._hasPermission( + $al.model.accPaymentsPermisions.ValidatePop); + $al.model._viewModel.canFinalisePop = $al.controller._hasPermission( + $al.model.accPaymentsPermisions.FinalisePop); + $al.model._viewModel.showActionsBox = $al.model._viewModel.canValidatePop + || $al.model._viewModel.canFinalisePop; + $al.model._viewModel.canEditSupportingDocuments = true; + }else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationPaymentStates.RejectPop){ + $al.model._viewModel.commentsVisible = true; + $al.model._viewModel.canEditSupportingDocuments = true; + $al.model._viewModel.canSubmitRejectedPop = $al.controller._hasPermission( + $al.model.accPaymentsPermisions.SubmitPop); + $al.model._viewModel.showActionsBox = $al.model._viewModel.canSubmitRejectedPop; + } + } else { //FO + if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationPaymentStates.Draft) { + $al.model._viewModel.isDraft = true; + $al.model._viewModel.canSubmit = $al.controller._hasPermission( + $al.model.accPaymentsPermisions.Submit) + || $al.model.permissions.canOwnAtLeastOnePostingAllowance; + $al.model._viewModel.showActionsBox = $al.model._viewModel.canSubmit; + $al.model._viewModel.canSave = $al.model._viewModel.canSubmit; + $al.model._viewModel.canDiscard = $al.model._viewModel.canSubmit; + $al.model._viewModel.canEdit = $al.model._viewModel.canSubmit; + $al.model._viewModel.canEditStartDate = $al.model._viewModel.canSubmit; + $al.model._viewModel.canEditSupportingDocuments = $al.model._viewModel.canSubmit; + } else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationPaymentStates.Awaiting) { + $al.model._viewModel.isAwaiting = true; + } else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationPaymentStates.Rejected) { + $al.model._viewModel.canResetToDraft = $al.controller._hasPermission( + $al.model.accPaymentsPermisions.Reset) + || $al.model.permissions.canOwnAtLeastOnePostingAllowance; + $al.model._viewModel.showActionsBox = $al.model._viewModel.canResetToDraft; + } else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationPaymentStates.Approved) { + + } else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationPaymentStates.Paid) { + $al.model._viewModel.isAbacPayment = $al.controller._isAbacPayment(); + $al.model._viewModel.showPaymentInfo = $al.model._viewModel.isAbacPayment; + $al.model._viewModel.canSubmitPop = $al.controller._hasPermission( + $al.model.accPaymentsPermisions.SubmitPop) + || $al.model.permissions.canOwnAtLeastOnePostingAllowance; + $al.model._viewModel.showActionsBox = ($al.model._viewModel.canSubmitPop + || $al.model._viewModel.canResetApproval); + $al.model._viewModel.canEditSupportingDocuments = $al.model._viewModel.canSubmitPop; + $al.model._viewModel.postingAllowancePaymentDateFormatted = kendo.toString( + kendo.parseDate($al.model.postingAllowance.abacPaymentDate), + 'MMM dd, yyyy'); + }else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationPaymentStates.PendingVerificationPop){ + $al.model._viewModel.canEditSupportingDocuments = true; + $al.model._viewModel.commentsVisible = true; + $al.model.postingAllowance.supportingDocs[0].docMandatory=true; + }else if ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationPaymentStates.RejectPop){ + $al.model._viewModel.canEditSupportingDocuments = true; + $al.model._viewModel.canSubmitRejectedPop = $al.controller._hasPermission( + $al.model.accPaymentsPermisions.SubmitPop) || $al.model.permissions.canOwnAtLeastOnePostingAllowance; + $al.model._viewModel.showActionsBox = $al.model._viewModel.canSubmitRejectedPop; + } + } + } + + _doSubmit() { + + if (!$al.controller._doValidateAllData()) { + return; + } + $al.controller._mapRequest(); + console.log($al.model._viewModel.postingAllowance); + $a.loading.toggle(true); + $al.model._restCalls.updateRequest.execute( + {accommodationPaymentId: $postingAllowanceId}, null, + $al.model._viewModel.postingAllowance, $al.controller._sendSubmitEvent); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + + } + + + async _doApprove() { + + if (!$al.controller._doValidateAllData()) { + return; + } + $al.controller._mapRequest(); + $a.loading.toggle(true); + $al.model._restCalls.updateRequest.execute( + {accommodationPaymentId: $postingAllowanceId}, null, + $al.model._viewModel.postingAllowance, $al.controller._sendApproveEvent); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + + } + + doShowMarkAsPaidDialog() { + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.mark_as_paid_extra_data_title, + $al.view._templates.mark_as_paid.dialog.body.template({}), + $al.view._templates.ok_cancel.dialog.footer.template({}) + ); + $al.view._elements.payment_date.data.element.kendoDatePicker({ + value: new Date(), + parseFormats: ["dd/MM/yyyy"] + + }); + kendo.bind("#mark_as_paid_data", $al.model._viewModel.request); + + } + + doValidateAndSubmitMarkAsPaid() { + if (!$al.controller._validateRequiredAndDateFormatOfPaymentDetails()) { + return; + } + $a.loading.toggle(true); + $al.model._restCalls.validatePaymentOrder.execute( + {abacId: $al.view._elements.payment_order.data.element.val()}, null, + $al.controller._onDataRetrievedValidatePaymentOrder); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + _onDataRetrievedValidatePaymentOrder(data) { + if ($al.controller._validatePaymentOrder(data)) { + $al.model.postingAllowanceCommon.preparePostingAllowanceForMarkAsPaid(); + $al.controller._doUpdateAndMarkAsPaidRequest(); + $a.modalDialog.hide(); + }else{ + $al.model._viewModel.isLoading = false; + } + } + + _doUpdateAndMarkAsPaidRequest() { + + if (!$al.controller._doValidateAllData()) { + return; + } + $al.model.prepareAccommodationPaymentForMarkAsPaid(); + $al.model._restCalls.updateRequest.execute( + {accommodationPaymentId: $postingAllowanceId}, null, + $al.model._viewModel.postingAllowance, $al.controller._updateAccommodationPaymentMarkAsPaidResponse); + } + + _updateAccommodationPaymentMarkAsPaidResponse(data) { + + $al.model._restCalls.changeStateRequest.execute({ + accommodationPaymentId: $postingAllowanceId, + stateMachineEvent: $al.model.accomodationPaymentEvents.MarkPaidAbac + }, null, null, $al.controller.postingAllowanceCommon._markAsPaidRefreshAbacStatus,null,null,true); + + } + + _validateRequiredAndDateFormatOfPaymentDetails(){ + + const validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return !$al.view.isEmpty(input.val().trim()); + } else { + return true; + } + }, + paymentDateInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_date.id + "]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + invalidFormat: input => { + if (input.attr('required')) { + return input.val().length === input.val().trim().length; + } else { + return true; + } + }, + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentDateInvalid: "Invalid format of Payment Date", + invalidFormat: "Invalid format: remove spaces" + } + }).data("kendoValidator"); + return validator.validate(); + } + + _validatePaymentOrder(data){ + const validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + paymentOrderInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_order.id + "]") + && !data) { + return false; + } else { + return true; + } + }, + }, + messages: { + paymentOrderInvalid: "Payment Order invalid", + } + }).data("kendoValidator"); + + return validator.validate(); + } + + + + _doResetApproval() { + if ($al.model._viewModel.isBackOffice && !$al.view._validateComments( + $al.controller._languageBundle.accommodation.alerts.justification_is_mandatory_for_reset_approval)) { + return; + } + $a.loading.toggle(true); + $al.controller._doResetApprovalRequest(); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + _doSubmitPop(){ + if($al.view._validateSupportingDocumentsComments()){ + $al.controller._mapRequest(); + $a.loading.toggle(true); + $al.controller._updateRequest( + (updateData) => { + $al.controller._sendPopEvent(); + }); + } + } + + _sendPopEvent(){ + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + accommodationPaymentId: $postingAllowanceId, + stateMachineEvent: $al.model.accomodationPaymentEvents.SubmitPop + }, null, null, $al.controller._submitPopResponse,null,null,true); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + + } + + _doUpdateAndRejectPop(){ + $al.controller._mapRequest(); + $a.loading.toggle(true); + $al.controller._updateRequest( + (updateData) => { + $al.controller.doRejectPop(); + }); + } + + _doUpdateAndAprrovePop(){ + $al.controller._mapRequest(); + $a.loading.toggle(true); + $al.controller._updateRequest( + (updateData) => { + $al.controller.doAcceptPop(); + }); + } + + doAcceptPop(){ + $al.model._restCalls.changeStateRequest.execute({ + accommodationPaymentId: $postingAllowanceId, + stateMachineEvent: $al.model.accomodationPaymentEvents.ApprovePop + }, null, null, $al.controller._approvePopResponse,null,null,true); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + doRejectPop(){ + $al.model._restCalls.changeStateRequest.execute({ + accommodationPaymentId: $postingAllowanceId, + stateMachineEvent: $al.model.accomodationPaymentEvents.RejectPop + }, null, null, $al.controller._rejectPopResponse,null,null,true); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + _submitPopResponse(data) { + $a.loading.toggle(false); + $a.toast.showSuccess( + $al.controller._languageBundle.accommodation.actions.submit_pop); + $al.model.refreshAfterUpdateState(data); + + } + + _rejectPopResponse(data) { + $a.loading.toggle(false); + $a.toast.showSuccess( + $al.controller._languageBundle.accommodation.actions.reject_pop); + $al.model.refreshAfterUpdateState(data); + + } + + _approvePopResponse(data) { + $a.loading.toggle(false); + $a.toast.showSuccess( + $al.controller._languageBundle.accommodation.actions.approve_pop); + $al.model.refreshAfterUpdateState(data); + + } + + _doResetApprovalRequest() { + $al.model._restCalls.changeStateRequest.execute({ + accommodationPaymentId: $postingAllowanceId, + stateMachineEvent: $al.model._viewModel.postingAllowance.state === + $al.model.accomodationPaymentStates.Approved + ? $al.model.accomodationPaymentEvents.ResetApproval + : $al.model.accomodationPaymentEvents.ResetPaid + }, null, null, (data) => { + $a.toast.showSuccess( + $al.controller._languageBundle.accommodation.alerts.update_declaration_success); + $al.model.refreshAfterUpdateState(data); + }); + } + + _mapRequest(){ + + $al.view.mapRequestAttachments(); + $al.model.mapRequestDetails(); + $al.model.mapAccommodationDetails(); + } + + preparePostingAllowanceForModelView() { + let creationInstant = Date.now().toString(); + if (typeof $al.model.postingAllowance.creationActor != 'undefined') { + creationInstant = $al.model.postingAllowance.creationActor.instant; + } + $al.model.postingAllowance.postingAllowanceCreateDate = kendo.toString( + kendo.parseDate(creationInstant), "MMM") + " " + kendo.toString( + kendo.parseDate(creationInstant), "dd") + ", " + kendo.toString( + kendo.parseDate(creationInstant), "yyyy") + " at " + kendo.toString( + kendo.parseDate(creationInstant), "t"); + + return $al.model.postingAllowance; + } + + _updateRequest(updateRequestCallBack) { + $a.loading.toggle(true); + $al.model._restCalls.updateRequest.execute( + {accommodationDeclarationId: $postingAllowanceId}, null, + $al.model._viewModel.postingAllowance, updateRequestCallBack); + } + + _sendSubmitEvent(data) { + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + accommodationPaymentId: $postingAllowanceId, + stateMachineEvent: $al.model.accomodationPaymentEvents.Submit + }, null, null, $al.controller._submitRequestResponse); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + _submitRequestResponse(data) { + $a.loading.toggle(false); + $a.toast.showSuccess( + $al.controller._languageBundle.accommodation.actions.submit_acc_payment_success); + $al.model.refreshAfterUpdateState(data); + + } + + _rejectRequestResponse(data) { + $a.loading.toggle(false); + $a.toast.showSuccess( + $al.controller._languageBundle.accommodation.actions.reject_payment_success); + $al.model.refreshAfterUpdateState(data); + } + + _sendApproveEvent(data) { + + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + accommodationPaymentId: $postingAllowanceId, + stateMachineEvent: $al.model.accomodationPaymentEvents.Approve + }, null, null, $al.controller._approveRequestResponse); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + _approveRequestResponse(data) { + + $a.loading.toggle(false); + $a.toast.showSuccess( + $al.controller._languageBundle.accommodation.actions.approve_acc_payment_success); + $al.model.refreshAfterUpdateState(data); + } + + _hasPermission(permission) { + let accPermissions = $al.model.permissions.accPaymentPermissions; + if (accPermissions) { + return accPermissions.includes(permission) + } + return false + } + + + doResetToDraftRequest() { /* from REJECTED to DRAFT */ + $a.loading.toggle(true); + $al.controller._doResetToDraft(); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + _doResetToDraft() { + $al.model._restCalls.changeStateRequest.execute({ + accommodationPaymentId: $postingAllowanceId, + stateMachineEvent: $al.model.accomodationPaymentEvents.Resubmit + }, null, null, $al.controller._resetToDraftResponse); + } + + _resetToDraftResponse(data) { + $a.toast.showSuccess( + $al.controller._languageBundle.accommodation.actions.reset_to_draft_success); + $al.model.refreshAfterUpdateState(data); + } + + _isAbacPayment(){ + return $al.model._viewModel.postingAllowance.abacPaymentRequest && + $al.model._viewModel.postingAllowance.abacPaymentOrder && + !$al.view.isEmpty($al.model._viewModel.postingAllowance.abacPaymentRequest) && + !$al.view.isEmpty($al.model._viewModel.postingAllowance.abacPaymentOrder) + } + + _saveAndInitiatePayment() { + if (typeof $al.model._viewModel.postingAllowance.budgetLine == "undefined") { + $a.toast.showWarning($al.controller._languageBundle.alerts.no_budget_line_found); + return null; + } + $al.controller._mapRequest(); + $al.model._restCalls.updateRequest.execute( + {accommodationDeclarationId: $postingAllowanceId}, null, + $al.model._viewModel.postingAllowance, $al.controller._initiatePayment); + } + + _initiatePayment() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.abacDetailsAccommodationForm, null, { + postingAllowanceId: $postingAllowanceId, + requestType: "AccommodationPayment" + })); + } + + _doValidateAllData() { + + if (!$al.view._validateRequestDetails()) { + return false; + } + let isValid = $al.view.validateDates(); + if (!isValid) { + return false; + } + if (!$al.view._validateAccommodationDetails()) { + return false; + } + if (!$al.view._validateSupportingDocumentsComments()) { + return false; + } + return true; + } +} + + + diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-payment.edit/accommodation-payment.model.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-payment.edit/accommodation-payment.model.js new file mode 100644 index 0000000..cd558c2 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-payment.edit/accommodation-payment.model.js @@ -0,0 +1,463 @@ +class AccommodationPaymentModel { + + constructor() { + + $_mvcSections.forEach((section, id) => { + this[id] = new section.model(); + }); + + this._restCalls = { + getPostingAllowance: new $a.GetRestCall(null, + "/internal/api/accommodation-payments/{accommodationPaymentId}"), + getStateHistory: new $a.GetRestCall(null, + "/internal/api/accommodation-payments/state-machine/history/{accommodationPaymentId}"), + permissions: new $a.GetRestCall(null, + "/internal/api/posting-allowances-permissions"), + appParameters: new $a.GetRestCall(null, "/internal/api/app-parameters"), + getPostingAllowanceComments: new $a.GetRestCall(null, + "/internal/api/comments/postingAllowance/{postingAllowanceId}"), + addPostingAllowanceComment: new $a.PostRestCall(null, + "/internal/api/comments/postingAllowance/{postingAllowanceId}"), + deleteComment: new $a.DeleteRestCall(null, + "/internal/api/comments/{commentId}"), + exchangeRates: new $a.GetRestCall(null, "/internal/api/exchange-rates"), + getBankInfo: new $a.GetRestCall(null, "/internal/api/bank-accounts"), + updateRequest: new $a.PutRestCall(null, + "/internal/api/accommodation-payments/{accommodationPaymentId}"), + changeStateRequest: new $a.PutRestCall(null, + "/internal/api/accommodation-payments/state-machine/event/{stateMachineEvent}/{accommodationPaymentId}"), + calculateAmounts: new $a.GetRestCall(null, + "/internal/api/accommodation-payments/{accommodationPaymentId}/calculate-amounts?fromDate={startDate}&toDate={endDate}"), + validatePaymentOrder: new $a.GetRestCall(null, "/internal/api/abac/validatePaymentOrder/{abacId}"), + refreshAbacStateForAccommodationPayment: new $a.PutRestCall(null, "/internal/api/abac/workflow/posting-allowance/{postingAllowanceId}"), + showAbacInfo: $a.utils.url(null, "/abac/abac-info.do"), + }; + this.urls = { + action: { + viewAccommodationDeclaration: $a.utils.url(null, + "/posting-allowances/accommodation-declaration-view.do"), + viewAccommodationPayment: $a.utils.url(null, + "/posting-allowances/accommodation-payment-view.do"), + abacDetailsAccommodationForm: $a.utils.url(null, "/abac/abac-payments-details-accommodation.do"), + } + }; + + this.accomodationPaymentStates = { + Draft: "DRAFT", + Approved: "APPROVED", + Awaiting: "AWAITING", + Paid: "PAID", + Rejected: "REJECTED", + Completed: "COMPLETED", + PendingVerificationPop:"PENDING_VERIF_POP", + RejectPop: "REJECTED_POP", + ApprovePop: "PAYMENT FINALIZED" + } + + this.accomodationPaymentEvents = { + Create: "CREATE", + Approve: "APPROVE", + Reject: "REJECT", + Submit: "SUBMIT", + Pay: "PAY", + ResetApproval: "RESET_APPROVAL", + ResetPaid: "RESET_PAID", + Resubmit: "RESUBMIT", + MarkPaidAbac: "MARK_PAID_ABAC", + SubmitPop: "SUBMIT_POP", + RejectPop: "REJECT_POP", + ApprovePop: "APPROVE_POP", + } + + this.dataSourcePaymentMethods = new kendo.data.DataSource({ + data: [{key: "LOCAL", value: "Local"}, + {key: "CENTRAL", value: "Central"},] + }); + + this.columnsSupportingDocumentsNotEditable = [ + { + width: "50px", + template: ` + description + + `, + } + ]; + + this.contentDisposition = { + Attachment: "ATTACHMENT" + } + + + this.accPaymentsPermisions = { + Create: "CREATE", + Submit: "SUBMIT", + Approve: "APPROVE", + Reset: "RESET", + ResetApproval: "RESET_APPROVAL", + Complete: "COMPLETE", + Reject: "REJECT", + Pay: "PAY", + SubmitPop: "SUBMIT_POP", + ValidatePop: "VALIDATE_POP", + FinalisePop: "FINALISE_PAYMENT", + } + + } + + init() { + const dataPoolExecutor = new $a.RestCallPoolExecutor( + $al.model.onAccPaymentRetrieved); + dataPoolExecutor.add("postingAllowance", + $al.model._restCalls.getPostingAllowance, + {accommodationPaymentId: $postingAllowanceId}); + dataPoolExecutor.add("stateMachineHistory", + $al.model._restCalls.getStateHistory, + {accommodationPaymentId: $postingAllowanceId}); + dataPoolExecutor.add("appParameters", $al.model._restCalls.appParameters, + null, {paramType: "POSTING_ALLOWANCES"}); + dataPoolExecutor.add("permissions", $al.model._restCalls.permissions); + dataPoolExecutor.add("exchangeRates", $al.model._restCalls.exchangeRates, + null, null); + dataPoolExecutor.add("postingAllowanceComments", + $al.model.postingAllowanceCommon._restCalls.getPostingAllowanceComments, + {postingAllowanceId: $postingAllowanceId}); + dataPoolExecutor.run(); + } + + _refreshAccPayment() { + $al.model.init(); + } + + refreshAfterUpdateState(data) { + $al.model._viewModel.postingAllowance.state = data.state; + $al.model._refreshAccPayment(); + } + + onAccPaymentRetrieved(data) { + $al.model.postingAllowance = data.get("postingAllowance").data; + $al.model.staffMember = $al.model.postingAllowance.staffMember; + $al.model.stateMachineHistory = data.get("stateMachineHistory").data; + $al.model.postingAllowanceComments = data.get( + "postingAllowanceComments").data; + $al.model.permissions = data.get("permissions").data; + const AppParametersArr = data.get("appParameters").data; + $al.model.exchangeRates = data.get("exchangeRates").data; + $al.model.appParameters = new Map( + AppParametersArr.map(i => [i.key, i.value])); + if ($al.model.postingAllowance) { + const dataPoolExecutor2 = new $a.RestCallPoolExecutor( + $al.model.onBankInfoRetrieved); + dataPoolExecutor2.add("bankInfo", $al.model._restCalls.getBankInfo, null, + {personId: $al.model.postingAllowance.staffMember.perId}); + dataPoolExecutor2.run(); + } else { + $al.model._onRenderAndBindView(); + } + + + } + + onBankInfoRetrieved(data) { + $al.model.bankInfo = data.get("bankInfo").data; + $al.model._onRenderAndBindView(); + } + + _onRenderAndBindView() { + $al.view._initializeView(); + $al.view.render(); + $al.view._bindView(); + $a.loading.toggle(false); + $al.view.onCalculateCosts(); + $al.view.disableOrEnableCurrencyDropDowns(); + $al.view.setSavedTotalAndSubTotalValues(); + } + + mapRequestDetails() { + + let paymentMethod = $al.view._elements.payment_method.data.element.data( + "kendoDropDownList").value(); + let paymentCurrency = $al.view._elements.payment_currency.data.element.data( + "kendoDropDownList").value(); + $al.model._viewModel.postingAllowance.paymentPreferredCurrency = $al.view.isEmpty( + paymentCurrency) ? null : paymentCurrency; + $al.model._viewModel.postingAllowance.paymentMethod = $al.view.isEmpty( + paymentMethod) ? null : paymentMethod; + let bankAccount = $al.view._elements.bank_account.data.element.data( + "kendoDropDownList").value(); + if (bankAccount) { + $al.model._viewModel.postingAllowance.personBankInfo = {id: bankAccount} + } + + } + + mapAccommodationDetails(){ + + let monthlyPaymentPeriodInterval = $al.view._elements.periodic_payment_interval.data.element.data( + "kendoDropDownList").value(); + + $al.model._viewModel.postingAllowance.paymentPeriodicInterval = !$al.view.isEmpty( + monthlyPaymentPeriodInterval) + ? +monthlyPaymentPeriodInterval : null; + + $al.model._viewModel.postingAllowance.paymentPeriodicInterval = !$al.view.isEmpty( + monthlyPaymentPeriodInterval) + ? +monthlyPaymentPeriodInterval : null; + + let rentalContractStartDate = $al.view._elements.start_date.data.element.data( + "kendoDatePicker").value(); + + let rentalContractEndDate = $al.view._elements.end_date.data.element.data( + "kendoDatePicker").value(); + + $al.model._viewModel.postingAllowance.rentalCoverStartDate = $a.utils.toLocalDateISO( + rentalContractStartDate); + + $al.model._viewModel.postingAllowance.rentalCoverEndDate = $a.utils.toLocalDateISO( + rentalContractEndDate); + + let rentalAmount = $al.view._elements.rental_amount.data.element.val(); + let securityAmount = $al.view._elements.security_amount.data.element.val(); + let monthlyRecurrentCosts = $al.view._elements.other_costs.data.element.val(); + let guaranteeReimbursedAmount = $al.view._elements.guarantee_reimbursed_amount.data.element.val(); + + $al.model._viewModel.postingAllowance.monthlyRentalAmount = rentalAmount; + $al.model._viewModel.postingAllowance.monthlySecurityAmount = securityAmount; + $al.model._viewModel.postingAllowance.monthlyRecurrentCosts = monthlyRecurrentCosts; + $al.model._viewModel.postingAllowance.guaranteeReimbursedAmount = guaranteeReimbursedAmount; + + const unForSeenCostsAmount = $al.view._elements.unforseen_costs_amount.data.element.val(); + if (unForSeenCostsAmount != null && !$al.view.isEmpty(unForSeenCostsAmount) + && Number(unForSeenCostsAmount) > 0) { + $al.model._viewModel.postingAllowance.nonRecurrentCostsDescription + = $("#unforseen_description").val(); + $al.model._viewModel.postingAllowance.nonRecurrentCosts = Number(unForSeenCostsAmount); + let unforseenCostsCurrency = $al.view._elements.unforseen_costs_currency.data.element.data( + "kendoDropDownList").value(); + $al.model._viewModel.postingAllowance.nonRecurrentCostsCurrency = $al.view.isEmpty( + unforseenCostsCurrency) ? null : unforseenCostsCurrency; + }else{ + + $al.model._viewModel.postingAllowance.nonRecurrentCostsDescription + = null; + $al.model._viewModel.postingAllowance.nonRecurrentCosts + = null; + $al.model._viewModel.postingAllowance.nonRecurrentCostsCurrency + = null; + } + // clear totalCosts for now, we re not handling currency conversion on this ticket + $al.model._viewModel.postingAllowance.totalAmount + = null; + + const rentalAmountCurrency = $al.view._elements.rental_amount_currency.data.element.data( + "kendoDropDownList").value(); + const securityAmountCurrency = $al.view._elements.security_amount_currency.data.element.data( + "kendoDropDownList").value(); + const otherCostCurrency = $al.view._elements.other_costs_currency.data.element.data( + "kendoDropDownList").value(); + $al.model._viewModel.postingAllowance.monthlyRentalCurrency = $al.view.isEmpty( + rentalAmountCurrency) ? null : rentalAmountCurrency; + $al.model._viewModel.postingAllowance.monthlySecurityAmountCurrency = $al.view.isEmpty( + securityAmountCurrency) ? null : securityAmountCurrency; + $al.model._viewModel.postingAllowance.monthlyRecurrentCostsCurrency = $al.view.isEmpty( + otherCostCurrency) ? null : otherCostCurrency; + + } + + + _defaultAccommodationPaymentSupportingDocs(){ + + return [ + {id: null, + postingAllowanceId: $postingAllowanceId, + docType: $al.model.postingAllowanceCommon.supportingDocumentsTypes.ProofOfPayment, + docOrder: 1, + docMandatory: false, + comment: { + id: null, + commentText: null, + commentType: $al.model.postingAllowanceCommon.commentTypes.SupportingDoc, + deleted: false + }, + attachments: [] + }, + {id: null, + postingAllowanceId: $postingAllowanceId, + docType: $al.model.postingAllowanceCommon.supportingDocumentsTypes.ProofOfUnForSeenCosts, + docOrder: 2, + docMandatory: false, + comment: { + id: null, + commentText: null, + commentType: $al.model.postingAllowanceCommon.commentTypes.SupportingDoc, + deleted: false + }, + attachments: [] + } + ]; + } + + getSupportingDocumentDataSource(position){ + return new kendo.data.DataSource({ + autoSync: false, + data: $al.model.getAttachments(position), + dataType: "json", + schema: { + model: { + id: "id", + fields: { + id: {type: "number"}, + downloadUrl: {type: "string"}, + fileName: {type: "string"}, + }, + } + } + }); + } + + getAttachments(position){ + const index = +position; + return $al.model._viewModel.postingAllowance.supportingDocs && + $al.model._viewModel.postingAllowance.supportingDocs.length > index && + $al.model._viewModel.postingAllowance.supportingDocs[index] && + $al.model._viewModel.postingAllowance.supportingDocs[index].attachments; + } + + prepareAccommodationPaymentAttachmentRequest() { + + let supportingDocs = $al.model._viewModel.postingAllowance.supportingDocs; + let newSupportingDocs = []; + for (let i = 0; i < supportingDocs.length; i++) { + let supportingDoc = supportingDocs[i]; + supportingDoc.postingAllowanceId = $postingAllowanceId; + let attachments = []; + if (supportingDoc.attachments && supportingDoc.attachments.length + > 0) { + supportingDoc.attachments.forEach(item => { + $al.model.addAttachments(attachments, item); + }); + supportingDoc.attachments = attachments; + $al.model.setSupportingDocumentComment(supportingDoc, + supportingDoc.comment ? supportingDoc.comment.commentText : null); + newSupportingDocs.push(supportingDoc); + } else if (supportingDoc.comment && supportingDoc.comment.commentText) { + newSupportingDocs.push(supportingDoc); + } + } + $al.model._viewModel.postingAllowance.supportingDocs = newSupportingDocs; + } + + prepareAccommodationPaymentForMarkAsPaid(){ + + $al.model._viewModel.postingAllowance.supportingDocs.forEach(doc => { + $al.model.setSupportingDocumentComment(doc, + doc.comment ? doc.comment.commentText : null); + }); + $al.model._viewModel.postingAllowance.abacPaymentRequest = $al.view._elements.payment_request.data.element.val(); + $al.model._viewModel.postingAllowance.abacPaymentOrder = $al.view._elements.payment_order.data.element.val(); + $al.model._viewModel.postingAllowance.abacPaymentDate = $a.utils.toLocalDateISO($al.view._elements.payment_date.data.element.data("kendoDatePicker").value()); + + $al.model.mapAccommodationDetails(); + } + + setSupportingDocumentComment(supportingDoc, comment) { + if (supportingDoc.comment) { + if (!$al.view.isEmpty(comment)) { + supportingDoc.comment.commentText = comment; + } else { + supportingDoc.comment = null; + } + } + } + + addAttachments(attachments, item) { + attachments.push({ + fileUid: item.fileUid ? item.fileUid : item.uid, + fileName: item.fileName ? item.fileName : item.name, + name: item.fileName ? item.fileName : item.name, + title: item.fileName ? item.fileName : item.name, + extension: item.fileName ? '.' + item.fileName.split('.').pop() + : '.' + item.name.split('.').pop(), + id: item.id, + creationActor: item.creationActor, + updatingActor: item.updatingActor, + contentDisposition: $al.model.contentDisposition.Attachment + }); + } + + mapAttachments(attachments) { + const attachList = []; + if (attachments) { + for (let i = 0; i <= attachments.length; i++) { + let attachment = attachments[i]; + if (attachment) { + attachList.push({ + name: '' + attachment.fileName + + '', + fileName: attachment.fileName, + fileUid: attachment.fileUid, + title: attachment.fileName, + extension: '.' + attachment.fileName.split('.').pop(), + id: attachment.id, + creationActor: attachment.creationActor, + updatingActor: attachment.updatingActor, + contentDisposition: $al.model.postingAllowanceCommon.contentDisposition.Attachment, + downloadUrl: $al.fileManagement.restCalls.preview.formatUrl( + {uid: attachment.fileUid}) + }); + } + } + } + return attachList; + } + _onDataRetrievedValidatePaymentOrder(data) { + const validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + invalidFormat: input => { + if (input.attr('required')) { + return input.val().length === input.val().trim().length; + } else { + return true; + } + }, + paymentDateInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_date.id + "]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + paymentOrderInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_order.id + "]") && !data) { + return false; + } else { + return true; + } + } + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentDateInvalid: "Invalid format of Payment Date", + paymentOrderInvalid: "Payment Order invalid", + invalidFormat: "Invalid format: remove spaces" + } + }).data("kendoValidator"); + if (validator.validate()) { + $al.model.postingAllowanceCommon.preparePostingAllowanceForMarkAsPaid(); + $al.controller.postingAllowanceCommon.doUpdateAndMarkAsPaidPostingAllowance(); + $a.modalDialog.hide(); + } + } + +} diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-payment.edit/accommodation-payment.mvc.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-payment.edit/accommodation-payment.mvc.js new file mode 100644 index 0000000..82ca82f --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-payment.edit/accommodation-payment.mvc.js @@ -0,0 +1,2 @@ +$al.mvc(AccommodationPaymentModel, AccommodationPaymentView, + AccommodationPaymentController, true); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-payment.edit/accommodation-payment.view.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-payment.edit/accommodation-payment.view.js new file mode 100644 index 0000000..6324b4c --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/accommodation-payment.edit/accommodation-payment.view.js @@ -0,0 +1,1006 @@ +class AccommodationPaymentView { + + constructor() { + + $_mvcSections.forEach((section, id) => { + this[id] = new section.view(); + }); + + this._templates = new $a.DataContainer("postingAllowance"); + this._elements = new $a.DataContainer("postingAllowance"); + this._templates.data(new $a.KendoTemplateData()); + this._elements.node("communication").data(new $a.KendoElementData()); + this._elements.node("communication2").data(new $a.KendoElementData()); + this._elements.node("comments").node("grid").data( + new $a.KendoElementData()); + this._templates.node("comments").node("grid").data( + new $a.KendoTemplateData()); + this._templates.node("add_comment").data(new $a.KendoTemplateData()); + this._elements.node("payment_method").data(new $a.KendoElementData()); + this._elements.node("payment_currency").data(new $a.KendoElementData()); + this._elements.node("bank_account").data(new $a.KendoElementData()); + this._elements.node("start_date").data(new $a.KendoElementData()); + this._elements.node("end_date").data(new $a.KendoElementData()); + this._elements.node("periodic_payment_interval").data(new $a.KendoElementData()); + this._elements.node("rental_amount").data( + new $a.KendoElementData()); + this._elements.node("other_costs").data( + new $a.KendoElementData()); + this._elements.node("security_amount").data( + new $a.KendoElementData()); + this._elements.node("guarantee_reimbursed_amount").data( + new $a.KendoElementData()); + this._elements.node("unforseen_costs_amount").data( + new $a.KendoElementData()); + this._elements.node("unforseen_costs_currency").data( + new $a.KendoElementData()); + this._elements.node("multiplying_factor").data( + new $a.KendoElementData()); + this._elements.node("attachmentsListView").data(new $a.KendoElementData()); + this._elements.node("remaining_guarantee_to_reimburse").data(new $a.KendoElementData()); + this._elements.node("subtotal").data(new $a.KendoElementData()); + this._elements.node("unforseen").data(new $a.KendoElementData()); + this._elements.node("totalAmount").data(new $a.KendoElementData()); + + this._elements.node("payment_date").data(new $a.KendoElementData()); + this._elements.node("payment_order").data(new $a.KendoElementData()); + this._elements.node("payment_request").data(new $a.KendoElementData()); + this._elements.node("payment_date_div").data(new $a.KendoElementData()); + this._elements.node("payment_order_div").data(new $a.KendoElementData()); + this._elements.node("payment_request_div").data(new $a.KendoElementData()); + + this._templates.node("mark_as_paid").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("mark_as_paid").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._elements.node("rental_amount_currency").data( + new $a.KendoElementData()); + this._elements.node("security_amount_currency").data( + new $a.KendoElementData()); + this._elements.node("other_costs_currency").data( + new $a.KendoElementData()); + } + + _getDataSourceCurrencies() { + return new kendo.data.DataSource({ + data: $al.model.exchangeRates, + sort: [ + {field: "currency", dir: "asc"}, + ] + }); + } + render() { + $al.view._templates.data.compile(); + $al.view._renderCommunication(); + $al.view._renderPaymentMethod(); + $al.view._renderAccommodationDetails(); + $al.view._templates.comments.grid.data.compile(); + $al.view._templates.add_comment.data.compile(); + $al.view.postingAllowanceCommon._renderCommentsGrid(); + $al.view.initializeSupportingDocsAttachments(); + $al.view._enableDisableAmountFields(); + } + _renderPaymentMethod() { + + $al.view._elements.payment_method.data.element.kendoDropDownList({ + dataSource: $al.model.dataSourcePaymentMethods, + dataTextField: "value", + dataValueField: "key", + placeHolder: 'Payment Method', + enable: true, + autoWidth: true, + optionLabel: "--Please select--", + required: "required", + validationMessage: "Select Payment method", + value: $al.model._viewModel.postingAllowance.paymentMethod ? + $al.model._viewModel.postingAllowance.paymentMethod + : "", + }); + + $al.view._elements.payment_currency.data.element.kendoDropDownList({ + enable: true, + optionLabel: "--Please select--", + required: "required", + validationMessage: "Select Preferred Currency", + filter: "startswith", + dataTextField: "currency", + dataValueField: "currency", + dataSource: $al.view._getDataSourceCurrencies(), + autoWidth: true, + value: $al.model._viewModel.postingAllowance.paymentPreferredCurrency ? + $al.model._viewModel.postingAllowance.paymentPreferredCurrency : "", + }); + + $al.view._elements.bank_account.data.element.kendoDropDownList({ + enable: true, + optionLabel: "--Please select--", + required: "required", + validationMessage: "Select Bank Account", + filter: "startswith", + dataTextField: "ibanCode", + dataValueField: "id", + dataSource: $al.model.bankInfo, + autoWidth: true, + value: $al.model._viewModel.postingAllowance.personBankInfo ? + $al.model._viewModel.postingAllowance.personBankInfo.id : "", + }); + + } + + _renderAccommodationDetails(){ + + + $al.view._elements.start_date.data.element.kendoDatePicker({ + value: $al.model._viewModel.postingAllowance.rentalCoverStartDate ? + $al.model._viewModel.postingAllowance.rentalCoverStartDate // yyyy-month-day + : null, + parseFormats: ["yyyy-MM-dd"] + }); + $al.view._elements.end_date.data.element.kendoDatePicker({ + value: $al.model._viewModel.postingAllowance.rentalCoverEndDate ? + $al.model._viewModel.postingAllowance.rentalCoverEndDate + : null, + parseFormats: ["yyyy-MM-dd"] + }); + + $al.view._elements.periodic_payment_interval.data.element.kendoDropDownList({ + dataSource: $al.model.postingAllowanceCommon.dataSourcePaymentPeriods, + dataTextField: "value", + dataValueField: "key", + enable: true, + autoWidth: true, + optionLabel: "--Please select--", + required: "required", + validationMessage: "Select Payment interval", + template: ({ key, value }) => `${value}  Months`, + valueTemplate:'${value}  Months', + value: $al.model._viewModel.postingAllowance.paymentPeriodicInterval ? + $al.model._viewModel.postingAllowance.paymentPeriodicInterval + : "", + }); + + + + $al.view._elements.unforseen_costs_currency.data.element.kendoDropDownList({ + optionLabel: "--Please select--", + filter: "startswith", + dataTextField: "currency", + dataValueField: "currency", + dataSource:$al.view._getDataSourceCurrencies(), + autoWidth: true, + value: $al.model._viewModel.postingAllowance.nonRecurrentCostsCurrency ? + $al.model._viewModel.postingAllowance.nonRecurrentCostsCurrency : "", + }); + + $al.view._elements.rental_amount_currency.data.element.kendoDropDownList({ + optionLabel: "--Please select--", + filter: "startswith", + dataTextField: "currency", + dataValueField: "currency", + dataSource:$al.view._getDataSourceCurrencies(), + autoWidth: true, + value: $al.model._viewModel.postingAllowance.monthlyRentalCurrency ? + $al.model._viewModel.postingAllowance.monthlyRentalCurrency : "", + }); + + $al.view._elements.security_amount_currency.data.element.kendoDropDownList({ + optionLabel: "--Please select--", + filter: "startswith", + dataTextField: "currency", + dataValueField: "currency", + dataSource:$al.view._getDataSourceCurrencies(), + autoWidth: true, + value: $al.model._viewModel.postingAllowance.monthlySecurityAmountCurrency ? + $al.model._viewModel.postingAllowance.monthlySecurityAmountCurrency : "", + }); + + $al.view._elements.other_costs_currency.data.element.kendoDropDownList({ + optionLabel: "--Please select--", + filter: "startswith", + dataTextField: "currency", + dataValueField: "currency", + dataSource:$al.view._getDataSourceCurrencies(), + autoWidth: true, + value: $al.model._viewModel.postingAllowance.monthlyRecurrentCostsCurrency ? + $al.model._viewModel.postingAllowance.monthlyRecurrentCostsCurrency : "", + }); + } + + _renderCommunication() { + $al.view._elements.communication.data.element.kendoListView({ + dataSource: $al.view._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + $al.view._elements.communication.data.component = "kendoListView"; + $al.view._elements.communication2.data.element.kendoListView({ + dataSource: $al.view._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + $al.view._elements.communication2.data.component = "kendoListView"; + } + + _prepareCommunication(data) { + if (typeof data !== "undefined" && data !== null) { + data.forEach(n => { + n.arrivalState = $al.controller._languageBundle.stateMachine[n.arrivalState.toLowerCase()]; + }); + } + return data; + } + + isEmpty(str) { + return (!str || (str && str.length === 0)); + } + + + _initializeView() { + + $al.model.postingAllowance = $al.controller.postingAllowanceCommon.preparePostingAllowanceForModelView(); + const viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel({ + isVisible: true, + message: " ", + lastPlaceEmpl: " ", + name: $al.model.postingAllowance.staffMember.lastName + ' ' + + $al.model.postingAllowance.staffMember.firstName, + postingAllowance: $al.model.postingAllowance, + staffMember: $al.model.staffMember, + perId: $al.model.staffMember.perId, + statutoryLinkDesc: $al.model.staffMember.statutoryLinkDesc, + exchangeRates: $al.model.exchangeRates, + bankInfo: $al.model.bankInfo, + isBackOffice: $isBackOffice, + commentsVisible: $isBackOffice + || $al.view.postingAllowanceCommon._thereAreComments(false), + showActionsBox: false, + isApproved: false, + isAwaiting: false, + isRejected: false, + showDivider: false, + canApprove: false, + canResetApproval: false, + canSubmitPop: false, + canSubmitRejectedPop: false, + canReject: false, + canAddComments: $isBackOffice, + canDeleteComments: false, + showCommentButton: true, + canSave: false, + showPaymentInfo: false, + showPaymentAbacInfoLink: false, + isDraft: false, + isLoading: false, + canEdit: false, + canEditStartDate: false, + canEditSupportingDocuments: false, + showSupportingDocuments: false, + canSubmit: false, + canDiscard: false, + canResetToDraft: false, + canEditOnlyBO: false, + canEditProofOfPayment: false, + canMarkAsPaid: false, + isAbacPayment: false, + postingAllowancePaymentDateFormatted: $al.model.postingAllowance.abacPaymentDate, + canRefreshAbacInfo: false, + canValidatePop: false, + canFinalisePop: false, + showCommentInput: function () { + this.set("showCommentButton", false); + $al.view.postingAllowanceCommon._scrollToBottom(); + $('textarea.autoSize').autosize(); + }, + onApproveRequest: function () { + $al.controller._doApprove(); + }, + onRejectRequest: function () { + $al.controller.doRejectRequest(); + }, + onSaveChanges: function () { + $al.controller._mapRequest(); + $al.controller._updateRequest( + (updateData) => { + $al.model._refreshAccPayment(); + }); + }, + onDiscardChanges: function () { + $a.loading.toggle(true); + $al.model._refreshAccPayment(); + }, + onSubmit: function () { + $al.controller._doSubmit(); + }, + onResetApproval: function(){ + $al.controller._doResetApproval(); + }, + onSubmitPop: function(){ + $al.controller._doSubmitPop(); + }, + onRejectPop: function(){ + $al.controller._doUpdateAndRejectPop(); + }, + onApprovePop: function(){ + $al.controller._doUpdateAndAprrovePop(); + }, + onResetToDraft: function () { + $al.controller.doResetToDraftRequest(); + }, + showMarkAsPaidDialog: function() { + $al.controller.doShowMarkAsPaidDialog(); + }, + saveAndInitiatePayment: function(){ + if ($al.view._initiatePaymentValidations()) { + $al.controller._saveAndInitiatePayment(); + } + } + }); + $al.controller.modelPermissions(); + $al.model._viewModel.paymentOfHonourList = $al.view._getPaymentHonourStatements(); + + } + + _bindView() { + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } + + scrollToId(id) { + document.getElementById(id).scrollIntoView({block: "center"}); + } + + _getPaymentHonourStatements() { + const statements = []; + statements.push({ + statementId: "statement_1", + statement: $al.controller._languageBundle.honour.accommodation_payment_supporting_documents, + isChecked: false + }); + return statements; + } + + + initializeSupportingDocsAttachments() { + let defaultAccommodationPaymentSupportingDocs = $al.model._defaultAccommodationPaymentSupportingDocs(); + let supportingDocs = $al.model._viewModel.postingAllowance.supportingDocs; + + if (supportingDocs) { + for (let i = 0; i < supportingDocs.length; i++) { + let supportingDoc = supportingDocs[i]; + const defaultSupportingDocument = defaultAccommodationPaymentSupportingDocs.filter( + function (a) { + if (a.docType === supportingDoc.docType) { + return true; + } + }, Object.create(null)); + if (defaultSupportingDocument && defaultSupportingDocument.length > 0) { + let item = defaultSupportingDocument[0]; + item.id = supportingDoc.id; + item.creationActor = supportingDoc.creationActor; + item.updatingActor = supportingDoc.updatingActor; + item.attachments = supportingDoc.attachments + && supportingDoc.attachments.length > 0 ? $al.model.mapAttachments( + supportingDoc.attachments) : []; + if (supportingDoc.comment) { + item.comment = supportingDoc.comment; + $al.view.bindSupportingDocumentsComments(supportingDoc); + } + } + } + } + $al.model._viewModel.postingAllowance.supportingDocs = defaultAccommodationPaymentSupportingDocs; + $al.model._viewModel.showSupportingDocuments = true; + + let defaultAccommodationPaymentSupportingDocsFiltered = defaultAccommodationPaymentSupportingDocs.filter( item => item.docType !== $al.model.postingAllowanceCommon.supportingDocumentsTypes.HOAEmail ); + $al.view._elements.attachmentsListView.data.element.kendoListView({ + dataSource: $al.model._viewModel.canEditSupportingDocuments + ? defaultAccommodationPaymentSupportingDocsFiltered + : defaultAccommodationPaymentSupportingDocsFiltered.filter( item => item.attachments && item.attachments.length > 0 || (item.comment?.commentText ?? "").trim() !== "" ), + template: kendo.template($("#supporting-document-template").html()), + dataBound: function(e) { + e.sender.dataSource.view().forEach(function (item, index) { + const gridId = "attachments_grid_" + item.uid; + const $grid = $("#" + gridId); + new $a.KendoElementData($grid, { + attachments: item.attachments + }); + if (!$al.model._viewModel.canEditSupportingDocuments) { + $grid.kendoGrid({ + noRecords: { template: "
    No file provided.
    " }, + dataSource: item.attachments || [], + scrollable: false, + sortable: true, + size: "small", + columns: $al.model.columnsSupportingDocumentsNotEditable + }); + }; + + let uploaderId = "uploaderId_" + item.docType.toLowerCase(); + $al.view.initializeFileUploader(index, uploaderId); + + if (item.comment) { + let commentId = "attachments_comment_" + item.docType.toLowerCase(); + let $comment = $("#" + commentId); + $comment.val(item.comment.commentText); + } + + }); + $('textarea.autoSize').autosize(); + } + }).removeClass('k-widget k-listview'); + $al.view._elements.attachmentsListView.data.component = "kendoListView"; + } + + bindSupportingDocumentsComments(supportingDoc) { + $('#attachment_comment_' + supportingDoc.docType.toLowerCase()).val( supportingDoc.comment.commentText ); + } + + initializeFileUploader(supportingDocPosition, inputId) { + + $(`#${inputId}`).kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, inputId), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.view._refreshAccommodationPaymentAttachmentsInModel(e.operation, e.files, supportingDocPosition, inputId); + }, + error: function (e) { + $a.toast.showError('Error while uploading files!'); + }, + complete: function (e) { + }, + select: function (e) { + }, + localization: { + select: 'SELECT FILES...' + }, + files: $al.model._viewModel.postingAllowance.supportingDocs[+supportingDocPosition].attachments + }); + $al.view._renderUnEditableSupportingPaymentsGrid(supportingDocPosition,inputId); + } + + _refreshAccommodationPaymentAttachmentsInModel(operation, files, position, fileUploaderId) { + if (typeof $al.model.postingAllowance.state == 'undefined' + || $al.model.postingAllowance.state === $al.model.accomodationPaymentStates.Draft + || $al.model.postingAllowance.state === $al.model.accomodationPaymentStates.Awaiting) { + + if ((typeof $al.model._viewModel.postingAllowance.supportingDocs !== "undefined" + || !$al.model._viewModel.postingAllowance.supportingDocs) + && $al.model._viewModel.postingAllowance.supportingDocs.length !== 2) { + $al.model._viewModel.postingAllowance.supportingDocs = $al.model._defaultAccommodationPaymentSupportingDocs(); + } + const upload = $(`#${fileUploaderId}`).data("kendoUpload"); + $al.model._viewModel.postingAllowance.supportingDocs[+position].attachments = upload.getFiles(); + } + } + + _renderUnEditableSupportingPaymentsGrid(position, inputId) { + + if (!$al.model._viewModel.canEdit && $al.view.hasAttachments(position)){ + $(`#${inputId}_grid`).kendoGrid({ + noRecords: { + template: "
    No file provided.
    " + }, + dataSource: $al.model.getSupportingDocumentDataSource(position), + scrollable: false, + sortable: true, + size: "small", + columns: $al.model.columnsSupportingDocumentsNotEditable + }); + } + } + + hasAttachments(position){ + const index = +position; + return $al.model._viewModel.postingAllowance.supportingDocs && + $al.model._viewModel.postingAllowance.supportingDocs.length > index && + $al.model._viewModel.postingAllowance.supportingDocs[index] && + $al.model._viewModel.postingAllowance.supportingDocs[index].attachments && + $al.model._viewModel.postingAllowance.supportingDocs[index].attachments.length > 0 + } + + mapRequestAttachments() { + $al.model._viewModel.postingAllowance.supportingDocs.forEach( + (item, index) => { + $al.view.mapRequestAttachmentFiles(index, item.docType.toLowerCase()); + }); + $al.model.prepareAccommodationPaymentAttachmentRequest(); + } + + mapRequestAttachmentFiles(position, fileDocType) { + const fileDynamicInput = `uploaderId_${fileDocType}`; + const upload = $(`#${fileDynamicInput}`).data("kendoUpload"); + let supportingDoc = $al.model._viewModel.postingAllowance.supportingDocs[position]; + supportingDoc.attachments = upload !== undefined ? upload.getFiles() : null; + const CommentDynamicInput = `attachments_comment_${fileDocType}`; + const comment = $(`#${CommentDynamicInput}`).val(); + $al.model.setSupportingDocumentComment(supportingDoc, comment); + } + + _validateRequestDetails(){ + + const requestDetailsFormValidator = $(".accommodationPaymentRequestDetailsForm").kendoValidator().data( + "kendoValidator"); + if (!requestDetailsFormValidator.validate()) { + $al.view.scrollToId('accommodationPaymentRequestDetailsForm'); + return false; + } + return true; + } + + _validateAccommodationDetails(){ + + const validator = $(".accommodationPaymentDetailsForm").kendoValidator({ + messages: { + requiredFieldEmpty: "is required", + amountRule: "is required", + subTotalIsEmpty: "is required" + }, + rules: { + amountRule: input => { + if (input.is("[name=unforseen_costs_currency]") + && !$al.view.isEmpty( + $al.model._viewModel.postingAllowance.nonRecurrentCosts) + && $al.view._amountIsGreaterThanZero( + $al.model._viewModel.postingAllowance.nonRecurrentCosts) + && $al.view.isEmpty( + $al.view._elements.unforseen_costs_currency.data.element.data( + "kendoDropDownList").value()) + ) { + $al.view.scrollToId('accommodationPaymentDetailsForm'); + return false; + } else if (input.is("[name=unforseen_description]") + && !$al.view.isEmpty( + $al.model._viewModel.postingAllowance.nonRecurrentCosts) + && $al.view._amountIsGreaterThanZero( + $al.model._viewModel.postingAllowance.nonRecurrentCosts) + && $al.view.isEmpty(input.val().trim()) + ) { + $al.view.scrollToId('accommodationPaymentDetailsForm'); + return false; + } + return true; + }, + subTotalIsEmpty: input => { + if (input.is("[name=subtotalAmount]")) { + return input.val().length > 0; + } else { + return true; + } + }, + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + } + }).data("kendoValidator"); + return validator.validate(); + } + + _enableDisableAmountFields(){ + if (!$al.view.isEmpty( + $al.model._viewModel.postingAllowance.nonRecurrentCosts)) { + $al.view._elements.unforseen_costs_amount.data.element.val( + Number($al.model._viewModel.postingAllowance.nonRecurrentCosts)); + } + $al.view.onChangeUnforeseenCosts(); + } + + _amountIsGreaterThanZero(value){ + + return !$al.view.isEmpty(value) && value > 0; + } + + onChangeUnforeseenCosts(e) { + + const dropDownList = $al.view._elements.unforseen_costs_currency.data.element.data( + "kendoDropDownList"); + const unForSeenCostsAmount = $al.view._elements.unforseen_costs_amount.data.element.val(); + if (unForSeenCostsAmount != null && Number(unForSeenCostsAmount) > 0) { + dropDownList.enable(!!$al.model._viewModel.canEdit); + $("#unforseen_description").prop('disabled', + !$al.model._viewModel.canEdit); + } else { + $al.model._viewModel.postingAllowance.nonRecurrentCostsCurrency = null; + dropDownList.value(-1); + dropDownList._oldText=""; + dropDownList._prev=""; + dropDownList.enable(false); + $("#unforseen_description").val(null).prop('disabled', true); + + const validator = $(".accommodationPaymentDetailsForm").kendoValidator().data("kendoValidator") + validator.hideMessages(); + $('#postingAllowance-unforseen_costs_currency').prev().removeClass('k-invalid'); + $('#unforseen_description').removeClass('k-invalid'); + + } + $al.view.onCalculateCosts(); + } + + _validateSupportingDocumentsComments(){ + + const validator = $(".supportingDocumentsForm").kendoValidator({ + rules: { + supportingDocumentRule: input => { + if (input.is("[id=uploaderId_proof_of_payment]") + && $('#uploaderId_proof_of_payment').data("kendoUpload").getFiles().length === 0 && + ($al.model._viewModel.postingAllowance.state + === $al.model.accomodationPaymentStates.Paid || $al.model._viewModel.postingAllowance.state + === $al.model.accomodationPaymentStates.RejectPop)) { + $al.view.scrollToId('uploaderId_proof_of_payment'); + return false; + } + return true; + } + } + }).data("kendoValidator"); + if( !validator.validate()){ + $("#uploaderId_proof_of_payment").removeAttr("disabled"); + $a.modalDialog.showInfo($al.controller._languageBundle.accommodation.missing_document.title,$al.controller._languageBundle.accommodation.missing_document.body); + $al.view.scrollToId('uploaderId_proof_of_payment'); + return false; + } + return true; + } + + onCalculateCosts(e) { + + let rentalAmount = $al.view._elements.rental_amount.data.element.val(); + let securityAmount = $al.view._elements.security_amount.data.element.val(); + let monthlyRecurrentCosts = $al.view._elements.other_costs.data.element.val(); + let guaranteeReimbursedAmount = $al.view._elements.guarantee_reimbursed_amount.data.element.val(); + let unforeseenCosts = $al.view._elements.unforseen_costs_amount.data.element.val(); + let subtotal = Number(rentalAmount) + Number( + securityAmount ? securityAmount : 0.00) + Number( + monthlyRecurrentCosts ? monthlyRecurrentCosts : 0.00); + if (!$al.model._viewModel.postingAllowance.unforseenCosts ) { + $al.model._viewModel.postingAllowance.unforseenCosts = { + amount: '', + currency: '' + }; + } + if (!$al.model._viewModel.postingAllowance.totalAmount) { + $al.model._viewModel.postingAllowance.totalAmount = { + amount: '', + currency: '' + }; + } + + $al.model._viewModel.postingAllowance.unforseenCosts.amount = Number( + unforeseenCosts ? unforeseenCosts : 0.00); + $al.model._viewModel.postingAllowance.nonRecurrentCosts = unforeseenCosts; + + //check if currencies are the same + if ($al.view._checkRentalSecurityOtherCostsCurrencies()) { + $al.view._elements.subtotal.data.element.val(subtotal); + $al.model._viewModel.postingAllowance.accommodationSubTotalAmount = subtotal; + }else{ + $al.model._viewModel.postingAllowance.accommodationSubTotalAmount =''; + $al.model._viewModel.postingAllowance.accommodationSubTotalCurrency =''; + } + + + $al.model._viewModel.postingAllowance.accommodationTotalAmount = subtotal + + Number(unforeseenCosts ? unforeseenCosts : 0.00); + if ($al.view._checkSubtotalUnforeseenCostsSameCurrencies()) { + $al.view._elements.totalAmount.data.element.val( + $al.model._viewModel.postingAllowance.accommodationTotalAmount) + } else { + $al.model._viewModel.postingAllowance.accommodationTotalAmount = ''; + } + if(e){ + $al.model._viewModel.postingAllowance.monthlyRentalAmount = rentalAmount; + $al.model._viewModel.postingAllowance.guaranteeReimbursedAmount = guaranteeReimbursedAmount; + $al.model._viewModel.postingAllowance.monthlyRecurrentCosts = monthlyRecurrentCosts; + $al.model._viewModel.postingAllowance.monthlySecurityAmount = securityAmount; + $al.model._viewModel.postingAllowance.nonRecurrentCosts = unforeseenCosts; + } + + $al.view._elements.rental_amount.data.element.val(rentalAmount); + $al.view._elements.unforseen_costs_amount.data.element.val(unforeseenCosts); + $al.view._bindView(); + } + + _checkSubtotalUnforeseenCostsSameCurrencies() { + + const unforeseenCosts = $al.view._elements.unforseen_costs_amount.data.element.val(); + const unforeseenCostsCurrency = $al.view._elements.unforseen_costs_currency.data.element.data( + "kendoDropDownList").value(); + + if ($al.view.isEmpty(unforeseenCosts) && !$al.view.isEmpty( + $al.model._viewModel.postingAllowance.accommodationSubTotalCurrency)) { + return true; + } + + if ($al.view.isEmpty(unforeseenCostsCurrency) || $al.view.isEmpty( + $al.model._viewModel.postingAllowance.accommodationSubTotalCurrency)) { + return false; + } + + //subtotal currency + if ($al.model._viewModel.postingAllowance.accommodationSubTotalCurrency + === unforeseenCostsCurrency) { + return true; + } + + return false; + } + + _checkRentalSecurityOtherCostsCurrencies(e) { + $al.model._viewModel.postingAllowance.accommodationSubTotalCurrency = ''; + + const rentalAmountCurrency = $al.view._elements.rental_amount_currency.data.element.data( + "kendoDropDownList").value(); + + const rentalAmount = $al.view._elements.rental_amount.data.element.val(); + + const securityAmountCurrency = $al.view._elements.security_amount_currency.data.element.data( + "kendoDropDownList").value(); + const securityAmount = $al.view._elements.security_amount.data.element.val(); + + const otherCostsCurrency = $al.view._elements.other_costs_currency.data.element.data( + "kendoDropDownList").value(); + + const otherCosts = $al.view._elements.other_costs.data.element.val(); + + if (!$al.view.isEmpty(securityAmount) && $al.view.isEmpty( + securityAmountCurrency)) { + return false; + } + + if (!$al.view.isEmpty(otherCosts) && $al.view.isEmpty(otherCostsCurrency)) { + return false; + } + + if (rentalAmountCurrency === securityAmountCurrency && rentalAmountCurrency + === otherCostsCurrency) { + $al.model._viewModel.postingAllowance.accommodationSubTotalCurrency = rentalAmountCurrency; + return true; + } + + if (rentalAmountCurrency === securityAmountCurrency && $al.view.isEmpty( + otherCosts)) { + $al.model._viewModel.postingAllowance.accommodationSubTotalCurrency = rentalAmountCurrency; + return true; + } + + if (rentalAmountCurrency === otherCostsCurrency && $al.view.isEmpty( + securityAmount)) { + $al.model._viewModel.postingAllowance.accommodationSubTotalCurrency = rentalAmountCurrency; + return true; + } + + if ($al.view.isEmpty(otherCosts) && $al.view.isEmpty(securityAmount)) { + $al.model._viewModel.postingAllowance.accommodationSubTotalCurrency = rentalAmountCurrency; + return true; + } + + return false; + } + + onChangeRentalSecurityOtherCostsCurrency(e) { + $al.view._checkRentalSecurityOtherCostsCurrencies(); + + $al.view._calculateAndSetSubtotal(!$al.view.isEmpty( + $al.model._viewModel.postingAllowance.accommodationSubTotalCurrency)); + + $al.view._calculateAndSetTotal($al.view._checkSubtotalUnforeseenCostsSameCurrencies()); + + $al.view._bindView(); + } + + _calculateAndSetSubtotal(isSameCurrency) { + $al.view._elements.subtotal.data.element.val(''); + $al.model._viewModel.postingAllowance.accommodationSubTotalAmount = ''; + if (isSameCurrency) { + let rentalAmount = $al.view._elements.rental_amount.data.element.val(); + let securityAmount = $al.view._elements.security_amount.data.element.val(); + let otherCosts = $al.view._elements.other_costs.data.element.val(); + let subtotal = Number(rentalAmount) + Number( + securityAmount ? securityAmount : 0.00) + Number( + otherCosts ? otherCosts : 0.00); + $al.view._elements.subtotal.data.element.val(subtotal); + $al.model._viewModel.postingAllowance.accommodationSubTotalAmount = subtotal; + } + } + + onChangeUnforeseenCostsCurrency(e) { + $al.view._calculateAndSetTotal($al.view._checkSubtotalUnforeseenCostsSameCurrencies()); + $al.view._bindView(); + } + + onChangeSubTotal(e) { + let subtotal = $al.view._elements.subtotal.data.element.val(); + if (!$al.view.isEmpty(subtotal)) { + $al.model._viewModel.postingAllowance.accommodationSubTotalAmount = Number(subtotal); + let unforeseenCosts = $al.view._elements.unforseen_costs_amount.data.element.val(); + $al.model._viewModel.postingAllowance.unforseenCosts.amount = Number( + unforeseenCosts ? unforeseenCosts : 0.00); + $al.view._elements.subtotal.data.element.val(subtotal); + $al.view._calculateAndSetTotal($al.view._checkSubtotalUnforeseenCostsSameCurrencies()); + } + $al.view._bindView(); + } + + _calculateAndSetTotal(isSameCurrency) { + $al.view._elements.totalAmount.data.element.val(''); + $al.model._viewModel.postingAllowance.accommodationTotalAmount = ''; + let subTotal = $al.model._viewModel.postingAllowance.accommodationSubTotalAmount; + let unforeseenCosts = $al.model._viewModel.postingAllowance.unforseenCosts.amount; + if (isSameCurrency) { + $al.model._viewModel.postingAllowance.accommodationTotalAmount = Number(subTotal ? subTotal : 0.00 ) + + Number(unforeseenCosts ? unforeseenCosts : 0.00); + $al.view._elements.totalAmount.data.element.val( + $al.model._viewModel.postingAllowance.accommodationTotalAmount); + } + } + + async onChangeDates(e) { + + let isValid = $al.view.validateDates(); + if (!isValid) { + return; + } + + let data = await $al.view._calculateAmounts(); + const multiplyingFactor = data.multiplyingFactor; + const guaranteeReimbursedAmount = data.guaranteeReimbursedAmount; + const guaranteeReimbursedAmountCurrency = data.guaranteeReimbursedAmountCurrency; + const remainingGuaranteeToReimburse = data.remainingGuaranteeToReimburse; + const remainingGuaranteeToReimburseCurrency = data.remainingGuaranteeToReimburseCurrency; + const alreadyReimbursedGuaranteeAmount = data.alreadyReimbursedGuaranteeAmount; + $al.view._elements.multiplying_factor.data.element.val(multiplyingFactor) + $al.model._viewModel.postingAllowance.multiplyingFactor = multiplyingFactor; + + $al.model._viewModel.postingAllowance.monthlyRentalAmount = data.monthlyRentalAmount; + if (data.monthlyRentalAmount === 0) { + $al.model._viewModel.postingAllowance.monthlyRentalAmount = { + amount: '', + currency: '' + } + } + $al.view._elements.rental_amount.data.element.val( + $al.model._viewModel.postingAllowance.monthlyRentalAmount.amount); + + $al.model._viewModel.postingAllowance.monthlySecurityAmount = data.monthlySecurityAmount; + if (data.monthlySecurityAmount === 0) { + $al.model._viewModel.postingAllowance.monthlySecurityAmount = { + amount: '', + currency: '' + } + } + $al.view._elements.security_amount.data.element.val( + $al.model._viewModel.postingAllowance.monthlySecurityAmount.amount); + + $al.model._viewModel.postingAllowance.monthlyRecurrentCosts = data.monthlyRecurrentCosts; + if (data.monthlyRecurrentCosts === 0) { + $al.model._viewModel.postingAllowance.monthlyRecurrentCosts = { + amount: '', + currency: '' + } + } + $al.view._elements.other_costs.data.element.val( + $al.model._viewModel.postingAllowance.monthlyRecurrentCosts.amount); + + if (guaranteeReimbursedAmount && guaranteeReimbursedAmountCurrency) { + $al.model._viewModel.postingAllowance.guaranteeReimbursedAmount = guaranteeReimbursedAmount; + $al.model._viewModel.postingAllowance.guaranteeReimbursedAmountCurrency = guaranteeReimbursedAmountCurrency; + $al.view._elements.guarantee_reimbursed_amount.data.element.val( + $al.model._viewModel.postingAllowance.guaranteeReimbursedAmount); + + } + if (remainingGuaranteeToReimburse + && remainingGuaranteeToReimburseCurrency) { + $al.model._viewModel.postingAllowance.remainingGuaranteeToReimburse = remainingGuaranteeToReimburse; + $al.model._viewModel.postingAllowance.remainingGuaranteeToReimburseCurrency = remainingGuaranteeToReimburseCurrency; + $al.view._elements.remaining_guarantee_to_reimburse.data.element.val( + $al.model._viewModel.postingAllowance.remainingGuaranteeToReimburse); + } + $al.view.onCalculateCosts(); + $al.view.onChangeRentalSecurityOtherCostsCurrency(); + } + + validateDates(){ + + let startDate = $al.view._elements.start_date.data.element.data( + "kendoDatePicker").value(); + let endDate = $al.view._elements.end_date.data.element.data( + "kendoDatePicker").value(); + if (endDate < startDate) { + $a.toast.showError( + $al.controller._languageBundle.accommodation.alerts.start_and_end_date_message); + return false; + } + + if($al.view.isEmpty(startDate) || $al.view.isEmpty(endDate)){ + $a.toast.showError( + $al.controller._languageBundle.accommodation.alerts.start_and_end_date_message); + return false; + } + return true; + } + + _calculateAmounts() { + + let startDate = $al.view._elements.start_date.data.element.data( + "kendoDatePicker").value(); + let endDate = $al.view._elements.end_date.data.element.data( + "kendoDatePicker").value(); + return new Promise((resolve, reject) => { + // Check if end date is greater than start date + if (endDate < startDate) { + resolve(-1); + return -1; + } + $al.model._restCalls.calculateAmounts.execute( + { + startDate: $a.utils.toLocalDateISO(startDate), + endDate: $a.utils.toLocalDateISO(endDate), + accommodationPaymentId: $postingAllowanceId + } + , null, (data) => { + resolve(data); + }, null, null, false + ); + }) + } + + + _validateComments(message) { + // Check at least one comment + let valid = $al.view.postingAllowanceCommon._thereAreComments(true); + if (!valid) { + $a.toast.showError(message); + $al.view.postingAllowanceCommon.showMissingCommentMessage('ACCOMMODATION'); + } + return valid; + } + + disableOrEnableCurrencyDropDowns(){ + + const dropDownListRentalAmount = $al.view._elements.rental_amount_currency.data.element.data( + "kendoDropDownList"); + const dropDownListSecurityAmount = $al.view._elements.security_amount_currency.data.element.data( + "kendoDropDownList"); + const dropDownListOtherCosts = $al.view._elements.other_costs_currency.data.element.data( + "kendoDropDownList"); + + dropDownListRentalAmount.enable(!!$al.model._viewModel.canEditOnlyBO); + dropDownListSecurityAmount.enable(!!$al.model._viewModel.canEditOnlyBO); + dropDownListOtherCosts.enable(!!$al.model._viewModel.canEditOnlyBO); + + } + + setSavedTotalAndSubTotalValues(){ + if($al.view.isEmpty($al.view._elements.subtotal.data.element.val())) { + $al.model._viewModel.postingAllowance.accommodationSubTotalAmount = $al.model.postingAllowance.accommodationSubTotalAmount; + } + if($al.view.isEmpty($al.view._elements.totalAmount.data.element.val())) { + $al.model._viewModel.postingAllowance.accommodationTotalAmount = $al.model.postingAllowance.accommodationTotalAmount; + } + $al.view._bindView(); + } + + _initiatePaymentValidations() { + let validationErrors = $al.view._validateBeforeInitiatingPayment(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + _validateBeforeInitiatingPayment() { + let messages = []; + + if($al.model._viewModel.postingAllowance.accommodationTotalAmount < 0) + messages.push($al.controller._languageBundle.validations.accommodation-total-amount-positive); + + return messages; + } +} + + + diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/posting-allowance.common.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/posting-allowance.common.js new file mode 100644 index 0000000..f8fc31a --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/posting-allowance.common.js @@ -0,0 +1,965 @@ +class PostingAllowanceCommonModel { + + constructor() { + + this._restCalls = { + getPostingAllowanceComments: new $a.GetRestCall(null, "/internal/api/comments/postingAllowance/{postingAllowanceId}"), + addPostingAllowanceComment: new $a.PostRestCall(null, "/internal/api/comments/postingAllowance/{postingAllowanceId}"), + deleteComment: new $a.DeleteRestCall(null, "/internal/api/comments/{commentId}"), + + updateAbacPaymentInfo: new $a.PutRestCall(null, "/internal/api/abac/paymentReference/{postingAllowanceId}"), + + getPostingAllowancesByParent: new $a.GetRestCall(null, "/internal/api/postingAllowances/parent/{postingAllowanceId}"), + getTopupPostingAllowance: new $a.GetRestCall(null, "/internal/api/topup-postingAllowances/{postingAllowanceId}"), + iataAirports: new $a.GetRestCall(null, "/internal/api/iata-airports"), + spouseTravelAllowances: new $a.GetRestCall(null, "/internal/api/vReportPostingAllowances"), + postingAllowancesDefault: new $a.GetRestCall(null, "/internal/api/postingAllowancesDefault/amounts"), + appParameters: new $a.GetRestCall(null, "/internal/api/app-parameters"), + + + }; + this.urls = { + action: { + viewPostingAllowance: $a.utils.url(null, "/posting-allowances/view-tar.do"), + viewRegularizationPostingAllowance: $a.utils.url(null, "/posting-allowances/regularization-view-tar.do"), + viewAdvancePostingAllowance: $a.utils.url(null, "/postingAllowances/view-adv-rem.do"), + viewClearingPostingAllowance: $a.utils.url(null, "/postingAllowances/view-clr-rem.do"), + viewStaffMember: $a.utils.url(null, "/staffMember/view-stafMember.do"), + viewPostingAllowanceList: $a.utils.url(null, "/list/posting-allowances.do"), + + } + }; + + this.dataSourceMonths = new kendo.data.DataSource({ + data: [ + { month: 1, monthString: "January" },{ month: 2, monthString: "February" },{ month: 3, monthString: "March" },{ month: 4, monthString: "April" },{ month: 5, monthString: "May" }, + { month: 6, monthString: "June" },{ month: 7, monthString: "July" },{ month: 8, monthString: "August" },{ month: 9, monthString: "September" },{ month: 10, monthString: "October" } + ,{ month: 11, monthString: "November" },{ month: 12, monthString: "December" } + + ] + }); + this.dataSourceMonthsEntitled = new kendo.data.DataSource({ + data: [ + { month: 0 }, { month: 1 },{ month: 2 },{ month: 3 },{ month: 4 },{ month: 5 },{ month: 6 },{ month: 7 },{ month: 8 },{ month: 9 },{ month: 10 },{ month: 11 },{ month: 12 } + + ] + }); + this.dataSourceSpouseWork = new kendo.data.DataSource({ + data: [ + { work: 'NO' }, { work: 'HQ' }, { work: 'DEL' } + + ] + }); + + this.contentDisposition = { + Attachment: "ATTACHMENT" + } + + + this.dataSourcePaymentPeriods = new kendo.data.DataSource({ + data: [{key: "3", value: "3"}, + {key: "4", value: "4"}, + {key: "6", value: "6"}, + {key: "12", value: "12"}, + {key: "24", value: "24"}, + ] + }); + + this.supportingDocumentsTypes = { + EvidenceOfPaymentProof: "PAYMENT_PROOF", + EvidenceOfUnForSeenCostsProof: "UNFORESEEN_COSTS_PROOF", + EvidenceOfAccommodationContract: "ACCOMMODATION_CONTRACT", + EvidenceOfApprovalForm: "APPROVAL_FORM", + EvidenceOfAddendum: "ADDENDUM", + EvidenceOfOther: "OTHER", + ProofOfPayment: "PROOF_OF_PAYMENT", + ProofOfUnForSeenCosts: "PROOF_OF_UNFORSEEN_COSTS", + } + this.postingAllowanceStatesEnum = { + DRAFT: "Draft", + APPROVED: "Approved", + AWAITING: "Awaiting", + PAID: "Paid", + REJECTED: "Rejected", + REJECTED_POP: "Rejected POP", + PAYMENT_FINALISED: "Payment Finalised", + PENDING_VERIF_POP:"Pending Verification POP" + } + + this.commentTypes = { + PostingAllowance: "POSTING_ALLOWANCE", + SupportingDoc: "SUPPORTING_DOC" + } + } + + clearPaymentInfo(){ + $al.model._viewModel.postingAllowance.paymentId =null; + $al.model._viewModel.postingAllowance.paymentEventId = null; + + } + + preparePostingAllowanceForMarkAsPaid() { + var paymentDate = $al.view._elements.payment_date.data.element.data( + "kendoDatePicker").value(); + $al.model._viewModel.postingAllowance.paymentDate = $a.utils.toLocalDateISO( + paymentDate); + $al.model._viewModel.postingAllowance.abacWorkflowState = 'PROCESSING'; + $al.model._viewModel.postingAllowance.abacRequestState = 'MANUAL_PAYMENT'; + } + preparePostingAllowanceForMarkAsPaidFromCommon(){ + var paymentDate = $al.view.postingAllowanceCommon._elements.edit_abac_info_payment_date.data.element.data("kendoDatePicker").value(); + $al.model._viewModel.postingAllowance.paymentDate = $a.utils.toLocalDateISO(paymentDate); + } + +} + +class PostingAllowanceCommonView { + + constructor() { + this._templates = new $a.DataContainer("postingAllowanceCommon"); + this._elements = new $a.DataContainer("postingAllowanceCommon"); + + // Footer "Ok/Cancel" + this._templates.node("ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("save_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + // Body for warn + this._templates.node("warn").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("edit_abac_info").node("dialog").data(new $a.KendoTemplateData(), "body"); + + this._elements.node("edit_abac_info_payment_date").data(new $a.KendoElementData()); + this._elements.node("edit_abac_info_payment_order").data(new $a.KendoElementData()); + this._elements.node("edit_abac_info_payment_postingAllowance").data(new $a.KendoElementData()); + this._elements.node("edit_abac_info_payment_date_div").data(new $a.KendoElementData()); + this._elements.node("edit_abac_info_payment_order_div").data(new $a.KendoElementData()); + this._elements.node("edit_abac_info_payment_postingAllowance_div").data(new $a.KendoElementData()); + + } + + + validateMandatoryBankAccount(state) { + var message = []; + // Validate the enabled mandatory-bank-account input: + var mandatoryBankAccountItems = $(".mandatory-bank-account"); + for (var ind = 0; ind < mandatoryBankAccountItems.length; ind++) { + var item = mandatoryBankAccountItems[ind]; + if (!item.disabled && item.validity && !item.validity.valid) { + // Enabled and not valid + message.push($al.controller._languageBundle.validations.missing_bank_account); + break; + } + } + + if (message.length === 0 && (state === 'DRAFT' && !$al.view._thereIs_Abac_BankAccount($al.model.bankInfo))) { + message.push($al.controller._languageBundle.validations.missing_bank_account); + } + return message; + } + + numberCubicMeterEditor(container, options) { + + + if (options.model.detailType === 'CAR') { + return " ... "; + } else if (options.model.detailType === 'AIRFREIGHT') { + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "##.## \\m³", + decimals: 2, + spinners: false, + placeholder: "0 m³" + }); + } else { + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "##.## \\m³", + decimals: 2, + spinners: false, + placeholder: "0 m³" + }); + } + } + + numberKgEditor(container, options) { + if (options.model.detailType === 'AIRFREIGHT') { + + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "##.## \\Kg", + decimals: 2, + spinners: false, + change: $al.controller.onChangeWeight, + placeholder: "0 Kg" + }); + } + } + + numberPercentEditor(container, options) { + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "##.## \\%", + decimals: 2, + spinners: false, + placeholder: "0 %" + }); + } + + goodsValueEditor(container, options) { + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "#.00 EUR", + decimals: 2, + spinners: false, + placeholder: "0 EUR" + }); + } + + invoiceAmountEditor(container, options) { + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "#.00", + decimals: 2, + spinners: false, + placeholder: "0" + }); + } + + justificationEditor(container, options) { + $('
    ') + .appendTo(container) + .TextBox; + } + + /* + * Returns a simple object: { amount: , applied: } + * 'applied' tells if the prorata function has been actually applied to limit the amount + */ + personalBelongingsProrataTotalAmount(surfaceVol, surfaceCost, airfreightVol, airfreightCost, airfreightKg) { + + const TOTAL_VOL_LIMIT = Number($al.model.appParameters.get("MAXIMUM_VOLUME_PERSONAL")); // m3 + const AIRFREIGHT_VOL_LIMIT = Number($al.model.appParameters.get("MAXIMUM_VOLUME_AIRFREIGHT")); // m3 + const AIRFREIGHT_KG_LIMIT = Number($al.model.appParameters.get("MAXIMUM_WEIGHT_AIRFREIGHT")); // kg + + var totalVol = surfaceVol + airfreightVol; + + var prorataTotalAmount; + var prorataApplied = true; + + if (!$al.view.postingAllowanceCommon._isHodAirOrFutureJobIsNFP()) { + if (totalVol > TOTAL_VOL_LIMIT) { + if (airfreightKg <= AIRFREIGHT_KG_LIMIT) { + // [airfreight cost] + [surface Cost]*0.7*[volume ceiling 60m3 - volume airfreight]/[Surface volume amount] + [surface cost]*0.3 + + prorataTotalAmount = airfreightCost + + surfaceCost * 0.7 * (TOTAL_VOL_LIMIT - airfreightVol) / surfaceVol + + surfaceCost * 0.3; + + } else { + // totalVol > TOTAL_VOL_LIMIT + // airfreightKg > AIRFREIGHT_KG_LIMIT + // [airfreight cost]*0.7*[airfreight kg ceiling (780kg)]/[airfreight kg] + [airfreight cost] * 0.3 + [surface Cost]*0.7*[volume ceiling 60m3 - volume airfreight]/[surface volume amount] + [surface cost]*0.3 + prorataTotalAmount = airfreightCost * 0.7 * AIRFREIGHT_KG_LIMIT / airfreightKg + + airfreightCost * 0.3 + + surfaceCost * 0.7 * (TOTAL_VOL_LIMIT - airfreightVol) / surfaceVol + + surfaceCost * 0.3; + } + + } else { + // totalVol <= TOTAL_VOL_LIMIT + if (airfreightKg > AIRFREIGHT_KG_LIMIT) { + // [airfreight cost]*0.7*[airfreight kg ceiling (780kg)]/[airfreight kg] + [airfreight cost] * 0.3 + Surface costs. + prorataTotalAmount = airfreightCost * 0.7 * AIRFREIGHT_KG_LIMIT / airfreightKg + + airfreightCost * 0.3 + + surfaceCost; + + } else { + // totalVol <= TOTAL_VOL_LIMIT + // airfreightKg <= AIRFREIGHT_KG_LIMIT + // Normal case: + prorataTotalAmount = surfaceCost + airfreightCost; + prorataApplied = false; + } + + } + } else { + // Entry into storage we need to apply diferent prorata Now I disable only TODO prorata EIS + prorataTotalAmount = surfaceCost + airfreightCost; + prorataApplied = false; + } + return {"amount": prorataTotalAmount, "applied": prorataApplied}; + } + + roundedToFixed(input, digits) { + var rounded = Math.pow(10, digits); + return (Math.round(input * rounded) / rounded).toFixed(digits); + } + + insuranceRateTemplate(dataItem) { + + let warningExededInsurance = ""; + + if (dataItem.insuranceRate > Number($al.model.appParameters.get("MAXIMUM_INSURANCE_RATE"))) { + warningExededInsurance = "warning"; + } + + return kendo.toString(dataItem.insuranceRate, "n2") + " % " + warningExededInsurance + " "; + + } + + detailTypeOrderTemplate(dataItem) { + + if (dataItem.value == 1) { // Personal belongings + var iconTpl = "inventory_2"; + } else if (dataItem.value == 2) { // Vehicule + var iconTpl = "drive_eta"; + } else { // Storage + var iconTpl = "maps_home_work"; + } + return "
    " + iconTpl + $al.model._viewModel.detailTypeOrderCategories[dataItem.value - 1] + "
    "; + } + + + volumeRateTemplate(dataItem) { + + if (dataItem.detailType === 'AIRFREIGHT') { + return "" + kendo.toString(dataItem.volume, "n2") + " m³ (" + kendo.toString(dataItem.weight) + " Kg)"; + } else if (dataItem.detailType === 'CAR') { + return ""; + } else { + return "" + kendo.toString(dataItem.volume, "n2") + " m³"; + } + + } + + + + // --- Common functions for Comments in PostingAllowances ------------- + + hasDeleteCommentsPermission() { + return $al.model.permissions.canDeleteComments; + } + + postingAllowanceCommentTemplate(comment) { + + let name_initials = $al.view.postingAllowanceCommon.extractNameAndInitials(comment.authorName); + // [ "Albert Batlle", "AB" ] + + let bgcolor = $al.view.postingAllowanceCommon.getLightColorForId(comment.creationActor ? comment.creationActor.id : 0); + + let commentText = comment.commentText ? $al.view.postingAllowanceCommon.escapeHtml(comment.commentText) : ""; + + let template = '
    '; + template += '
    ' + name_initials[1] + '
    '; + template += '
    '; + template += '
    ' + $al.view.postingAllowanceCommon.escapeHtml(name_initials[0]) + ' ' + $al.view.postingAllowanceCommon.getDateSuffix(comment) + '
    '; + template += '

    ' + commentText + '

    '; + template += '
    '; + template += '
    '; + return template; + } + + deleteCommentTemplate(comment) { + // Here we decide if the delete button is visible or not + let delete_visible = $al.model._viewModel.canDeleteComments; + let template = '
    '; + if (delete_visible) { + let comment_id = comment.id; + template += ''; + } + template += '
    '; + return template; + } + + getLightColorForId(id) { + + var value = typeof id === 'number' ? id : 999; + value = (value*39) % 360; + // Here, value is pseudo-random (0-359), based on the ID + // 'value' is used for hue, and s=50%, l=80% create light, pastel colors: + return 'hsl('+ value +',50%,80%)'; + } + + extractNameAndInitials(value) { + + if (!value || value.length == 0) { + return ["??", "??"]; + } + + var parts = value.split(' ('); + if (parts.length == 2 && parts[1].length == 3) { + return [ parts[0], parts[1].substring(0,2) ]; + } + // Unexpected/old format: leave value as is, and get 2 initials: + parts = value.split(' '); + if (parts.length > 1) { + return [ value, (parts[0].substring(0,1).toUpperCase() + parts[1].substring(0,1).toUpperCase()) ]; + } else { + return [ value, value.substring(0,2).toUpperCase() ]; + } + } + + getDateSuffix(comment) { + const creation_date = comment.creationActor.instant; + const date_string = new Date(creation_date).toLocaleString('en-US', { month: 'short', day: '2-digit', year: 'numeric' }); + const time_string = new Date(creation_date).toTimeString().substring(0, 5); + return ' —  ' + date_string + ' at ' + time_string + ''; + } + + escapeHtml(unsafe) { + // if (!_isEmpty(unsafe)) { + return unsafe + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'"); + // } + // return unsafe; + } + + _isEmpty(str) { + return (!str || (str && str.length === 0)); + } + + processAddComment() { + const comment_text = $("#postingAllowance-add_comment-textarea").val(); + if (comment_text == null || comment_text.trim() === '') { + $al.view.postingAllowanceCommon._validateCommentText(); + return; + } + $al.view.postingAllowanceCommon._addPostingAllowanceComment(comment_text); + $("#postingAllowance-add_comment-textarea").val(''); + $(".addComment-wrapper.noCommentYet").removeClass('noCommentYet'); + } + + _validateCommentText() { + let message_to_show = "Please enter a comment before saving"; + // Force open the text area + $al.model._viewModel.set("showCommentButton", false); + $al.view.postingAllowanceCommon._scrollToBottom(); + + var validator = $('#postingAllowance-comment-input-container').kendoValidator({ + rules: { the_rule: input => { return false; } }, + messages: { the_rule: message_to_show } + }).data("kendoValidator"); + validator.validate(); + } + + _scrollToBottom() { + setTimeout(function() { window.scrollTo(0, document.body.scrollHeight); }, 500); + } + + _addPostingAllowanceComment(comment_text) { + $al.model.postingAllowanceCommon._restCalls.addPostingAllowanceComment.execute( + {postingAllowanceId: $al.model.postingAllowance.id}, + { commentText: comment_text }, + $al.view.postingAllowanceCommon._reloadPostingAllowanceComments); + $al.model._viewModel.set("showCommentButton", true); + } + + processCancelComment() { + $al.model._viewModel.set("showCommentButton", true); + $("#postingAllowance-add_comment-textarea").val(''); + } + + _getCommentsDatasource(comments_list) { + return new kendo.data.DataSource({ + data: comments_list, + schema: { model: { id: "id", fields: { + id: {type: "number", nullable: false}, + authorName: {type: "string"}, + commentText: {type: "string"} + } } } + }); + } + + _onCommentsData(endpoint_response) { + $al.model.postingAllowanceComments = endpoint_response; + var ds = $al.view.postingAllowanceCommon._getCommentsDatasource(endpoint_response); + $al.view._elements.comments.grid.data.component.setDataSource(ds); + } + + deletePostingAllowanceComment(comment_id) { + $al.model.postingAllowanceCommon._restCalls.deleteComment.execute({commentId: comment_id}, null, null, null, $al.view.postingAllowanceCommon._reloadPostingAllowanceComments); + } + + _reloadPostingAllowanceComments() { + $al.model.postingAllowanceCommon._restCalls.getPostingAllowanceComments.execute({postingAllowanceId: $al.model.postingAllowance.id}, null, $al.view.postingAllowanceCommon._onCommentsData); + } + + _thereAreComments(while_validating) { + // We are validating, so we check the datasource (may have changed since initial loading of page) + if (while_validating) { + return $al.view._elements.comments.grid.data.component.dataSource.total() > 0; + } else { + // We are not validating, this is used in the first loading of the page + return $al.model.postingAllowanceComments && $al.model.postingAllowanceComments.length > 0; + } + } + + _renderCommentsGrid() { + + var dataSource = $al.view.postingAllowanceCommon._getCommentsDatasource($al.model.postingAllowanceComments); + var columns_desc = [ + { + width: "85%", + attributes: { "class": "font-weight-medium", "style": "border-bottom: 0px" }, + template: $al.view.postingAllowanceCommon.postingAllowanceCommentTemplate + }, + { + width: "15%", + attributes: { "class": "font-weight-medium", "style": "border-bottom: 0px" }, + template: $al.view.postingAllowanceCommon.deleteCommentTemplate + } + ]; + + $al.view._elements.comments.grid.data.element.kendoGrid({ + dataSource: dataSource, + scrollable: false, + noRecords: { + template: function(e){ + $(".addComment-wrapper").addClass('noCommentYet'); + return "

    No comments yet.

    " + } + }, + sortable: true, + // dataBound: $al.view._onDataBound, + columns: columns_desc, + autoBind: true + }); + $al.view._elements.comments.grid.data.component = "kendoGrid"; + // Clean grid: No header + $(".comments-grid thead").css("display", "none"); + } + + showMissingCommentMessage(type) { + var message_to_show = "Please, justify if you reject the postingAllowance."; + + if(type === 'REGULARIZATION'){ + + message_to_show = "Please, justify if you reject the Regularisation."; + } + // Force open the text area + $al.model._viewModel.set("showCommentButton", false); + + $al.view.postingAllowanceCommon._scrollToBottom(); + + // Silly validator that always fails, just to trigger the red error message under the input text area. + if($al.model.postingAllowance.postingAllowanceType === 'TudPostingAllowance'){ + message_to_show = 'Please, justify if you refuse a claim or reject the postingAllowance.'; + } + var validator = $('#postingAllowance-comment-input-container').kendoValidator({ + rules: { the_rule: input => { return false; } }, + messages: { the_rule: message_to_show } + }).data("kendoValidator"); + validator.validate(); + } + + // --------------------------------------------------------- + + + proformaAmountEditor(container, options) { + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "##.##", + decimals: 2, + spinners: false, + placeholder: "0" + }); + } + + + + groupFooterVolumeFunction(e) { + let warningExecedVolume = ""; + let totalKg; + + if (e.value === 2) { // in vehicle we do not show grouptemplate + return ""; + } else if (e.value === 1) {//Personal Belongings + let sumLimit =Number(Number(e.aggregates.volume.sum).toFixed(2)); + let limitWithMargin = Number(Number($al.model.maximunVolume).toFixed(2)); // margin to solve the wrong calculation, as we use 166.666 ans it should be 167 as the policy says + if (sumLimit > limitWithMargin) { + + if ($al.view.postingAllowanceCommon._isHodAirOrFutureJobIsNFP()) { + + totalKg = Number(e.aggregates.volume.sum) * Number($al.model.appParameters.get("M3toKG_ALERT") ) ; + + warningExecedVolume = "warning"; + } else { + warningExecedVolume = "warning"; + } + } + } else if (e.value === 3) { + if (Number(e.aggregates.volume.sum) > Number($al.model.appParameters.get("MAXIMUM_VOLUME_STORAGE"))) { + warningExecedVolume = "warning"; + } + } + let returnString = "" + kendo.toString(e.aggregates.volume.sum, "n2") + " m³"; // add volume for all + returnString += totalKg ? " (" + kendo.toString(totalKg, "n2") + " Kg) " : ""; //if totalkg defined it means AIRFIRGHT , we show kilos + returnString += warningExecedVolume + " "; // add warning + return returnString; + + } + + sumRemovalInvoicesSubtotals() { + if (typeof $al.model._viewModel.postingAllowance.sumOfSectionsTotalPersonal == "undefined") { + $al.model._viewModel.postingAllowance.sumOfSectionsTotalPersonal = 0; + } + if (typeof $al.model._viewModel.postingAllowance.sumOfSectionsTotalVehicle == "undefined") { + $al.model._viewModel.postingAllowance.sumOfSectionsTotalVehicle = 0; + } + if (typeof $al.model._viewModel.postingAllowance.sumOfSectionsTotalStorage == "undefined") { + $al.model._viewModel.postingAllowance.sumOfSectionsTotalStorage = 0; + } + + return Number($al.model._viewModel.postingAllowance.sumOfSectionsTotalPersonal) + Number($al.model._viewModel.postingAllowance.sumOfSectionsTotalVehicle) + Number($al.model._viewModel.postingAllowance.sumOfSectionsTotalStorage); + } + + sumSubtotals() { + if (typeof $al.model._viewModel.postingAllowance.sumOfSectionsUnforeseenAmount == "undefined") { + $al.model._viewModel.postingAllowance.sumOfSectionsUnforeseenAmount = 0; + } + + return this.sumRemovalInvoicesSubtotals() + Number($al.model._viewModel.postingAllowance.sumOfSectionsUnforeseenAmount); + } + + + // Show dialog to edit Abac info + showEditAbacInfoDialog() { + + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.edit_abac_info_title, + $al.view.postingAllowanceCommon._templates.edit_abac_info.dialog.body.template({}), + $al.view.postingAllowanceCommon._templates.save_cancel.dialog.footer.template({ ok_callback: '$al.controller.postingAllowanceCommon.validateAndUpdateAbacInfo()' }) + ); + + $al.model._viewModel.postingAllowance._editAbacInfo_paymentOrder = $al.model._viewModel.postingAllowance.paymentOrder; + $al.model._viewModel.postingAllowance._editAbacInfo_paymentPostingAllowance = $al.model._viewModel.postingAllowance.paymentPostingAllowance; + $al.model._viewModel.postingAllowance._editAbacInfo_paymentDate = $al.model._viewModel.postingAllowance.paymentDate; + + $al.view.postingAllowanceCommon._elements.edit_abac_info_payment_date.data.element.kendoDatePicker({ + value: new Date(), + parseFormats: ["yyyy-MM-dd"] + + }); + kendo.bind("#abac_info_data", $al.model._viewModel.postingAllowance); + } + + +} + +class PostingAllowanceCommonController { + + validateAndUpdateAbacInfo() { + if ($al.view.postingAllowanceCommon._elements.edit_abac_info_payment_order.data.element.val() !== "") { + $al.model._restCalls.validatePaymentId.execute({orderId: $al.view.postingAllowanceCommon._elements.edit_abac_info_payment_order.data.element.val()}, null, $al.controller.postingAllowanceCommon._onDataRetrievedvalidatePaymentId); + } else { + var validator = $("#abac_info_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + paymentDateInvalid: input => { + if (input.is("[name=" + $al.view.postingAllowanceCommon._elements.edit_abac_info_payment_date.id + "]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentDateInvalid: "Invalid format of Payment Date", + } + }).data("kendoValidator"); + validator.validate(); + } + } + + _onDataRetrievedvalidatePaymentId(data) { + const validator = $("#abac_info_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + invalidFormat: input => { + if (input.attr('required')) { + return input.val().length === input.val().trim().length; + } else { + return true; + } + }, + paymentDateInvalid: input => { + if (input.is("[name=" + $al.view.postingAllowanceCommon._elements.edit_abac_info_payment_date.id + "]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + paymentOrderInvalid: input => { + if (input.is("[name=" + $al.view.postingAllowanceCommon._elements.edit_abac_info_payment_order.id + "]") && !data) { + return false; + } else { + return true; + } + } + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentDateInvalid: "Invalid format of Payment Date", + paymentOrderInvalid: "Payment Order invalid", + invalidFormat: "Invalid format: remove spaces" + } + }).data("kendoValidator"); + if (validator.validate()) { + $al.model.postingAllowanceCommon.preparePostingAllowanceForMarkAsPaidFromCommon(); + $al.controller.postingAllowanceCommon.doUpdateAbacInfo(); + $al.controller.postingAllowanceCommon.doUpdateAndMarkAsPaidPostingAllowanceEdit(); + $a.modalDialog.hide(); + } + } + + doUpdateAbacInfo() { + // Format date for end-point + var text_date = null; + if (typeof $al.model._viewModel.postingAllowance._editAbacInfo_paymentDate === 'string') { + // If it's already a string, it does not need to be formatted + text_date = $al.model._viewModel.postingAllowance._editAbacInfo_paymentDate; + } else { + text_date = $a.utils.toLocalDateISO($al.model._viewModel.postingAllowance._editAbacInfo_paymentDate); + } + + // Call the end-point + $al.model.postingAllowanceCommon._restCalls.updateAbacPaymentInfo.execute( + { postingAllowanceId: $postingAllowanceId }, // URL param + null, + { postingAllowanceNumber: $al.model._viewModel.postingAllowance._editAbacInfo_paymentPostingAllowance, // Body + orderNumber: $al.model._viewModel.postingAllowance._editAbacInfo_paymentOrder, + invoiceDate: text_date }, + $al.controller.postingAllowanceCommon._updateAbacInfoDone); + } + + _updateAbacInfoDone(response) { + + // Updated correctly + // Show toast + $a.toast.showSuccess($al.controller._languageBundle.alerts.abac_payment_info_updated_success); + $a.loading.toggle(false); + // Refresh page + $a.navigation.navigateTo($a.utils.formatUrl($al.model.postingAllowanceCommon.urls.action.viewPostingAllowance, null, {postingAllowanceId: $postingAllowanceId})); + } + + + + _createEntMaxList() { + let maxCatList = $al.model.postingAllowance.entitlementTypeCat.entitlementMaxCatList; + return maxCatList + // Sorting the ceiling amounts using the 'order' field, to be consistent with the order in the 'Entitlements' tab + // which comes already sorted from the webservice. + .sort(function (a, b) { + return a.order - b.order; + }) + .map(m => { + if (m.code === 'SURFACE' && typeof $al.model.postingAllowance.surfaceRate != 'undefined') { + return { + description: m.description, + value: $al.model.postingAllowance.surfaceRate, + type: m.code, + enable: true + } + } else if (m.code === 'CAR' && typeof $al.model.postingAllowance.carRate != 'undefined') { + return { + description: m.description, + value: $al.model.postingAllowance.carRate, + type: m.code, + enable: true + } + } else if (m.code === 'AIRFREIGHT' && typeof $al.model.postingAllowance.airfreightRate != 'undefined') { + return { + description: m.description, + value: $al.model.postingAllowance.airfreightRate, + type: m.code, + enable: true, + kgAirFreightCeiling: (typeof $al.model.postingAllowance.kgAirFreightCeiling === "undefined") ? null : $al.model.postingAllowance.kgAirFreightCeiling + } + } else if (m.code === 'STORAGE' && typeof $al.model.postingAllowance.entryIntoStorage !== "undefined") { + return { + description: m.description, + value: $al.model.postingAllowance.storageRate, + type: m.code, + enable: $al.model.postingAllowance.entryIntoStorage, + cityForEIS: (typeof $al.model.postingAllowance.city === "undefined") ? "No city" : $al.model.postingAllowance.city.name, + countryForEIS: (typeof $al.model.postingAllowance.country === "undefined") ? "No country" : $al.model.postingAllowance.country.name, + } + } + }).filter(item => item !== undefined); + } + + preparePostingAllowanceForModelView(){ + let creationInstant = Date.now().toString(); + if(typeof $al.model.postingAllowance.creationActor != 'undefined'){ + creationInstant = $al.model.postingAllowance.creationActor.instant; + } + + let postingAllowanceCreateDate = kendo.toString(kendo.parseDate(creationInstant), "MMM") + " " + kendo.toString(kendo.parseDate(creationInstant), "dd") + ", " + kendo.toString(kendo.parseDate(creationInstant), "yyyy") + " at " + kendo.toString(kendo.parseDate(creationInstant), "t"); + $al.model.postingAllowance.postingAllowanceCreateDate = postingAllowanceCreateDate; + + //logic to display the p2pHubOrderStatus + + $al.model.postingAllowance.p2pHubOrderStatusFrontEnd = $al.model.postingAllowance.p2pHubOrderStatus; + if($al.model.postingAllowance.abacPostingAllowanceState == 'FAILED' || typeof $al.model.postingAllowance.abacPostingAllowanceState == 'undefined' ) { + $al.model.postingAllowance.p2pHubOrderStatusFrontEnd = $al.model.postingAllowance.abacPostingAllowanceState; + } + + return $al.model.postingAllowance; + } + setTopupPermission(isBackoffice) { + + const postingAllowance = $al.model._viewModel.postingAllowance || {}; + const request = $al.model._viewModel.request || {}; + const permissions = $al.model.permissions || {}; + + const abacWorkflowState = postingAllowance.abacWorkflowState; + const p2pHubOrderStatus = postingAllowance.p2pHubOrderStatus; + + const abacRequestState = request.abacRequestState; + const paymentDirectiveReference = request.paymentDirectiveReference; + + const isPaid = + abacWorkflowState === "CLO100" || + p2pHubOrderStatus === "SUCCESS" || + ( + abacRequestState !== undefined && + abacRequestState === "MANUAL_PAYMENT_SUMMA" && + paymentDirectiveReference != null + ); + + if (isPaid) { + $al.model._viewModel.canCreateTopupPostingAllowance = + permissions.isOwner || permissions.canApproveTopUpPostingAllowance; + + if ($al.model._viewModel.canCreateTopupPostingAllowance) { + $al.model._viewModel.showActionsBox = true; + } + } + + if ( + $al.model.postingAllowance && + Array.isArray($al.model.postingAllowance.children) && + $al.model.postingAllowance.children.length > 0 + ) { + $al.model._viewModel.displayChildrenPostingAllowance = true; + } + + if (isBackoffice) { + // RIGD-2249 + } else { + // non-backoffice logic + } + } + + + modelPermissionsCommon() { + + + if ($al.model._viewModel.isBackOffice) { //BACK OFFICE permissions + //Permission to show buttons, in case of needing a security checker I do it here instead of a template + //TODO to move to pay when finish testing + // This determines if the refresh button (circular arrows) is visible + // The MF must be not frozen (not cancelled or completed) + $al.model._viewModel.canRefreshAbacInfo = true; + + // EDIT button to edit Abac info (PostingAllowance number, Order Number and Date) + // Also: MF not frozen + $al.model._viewModel.canEditAbacInfo = true; + + } + } + + + doRefreshAbacInfoAndRefresh() { + $al.model._restCalls.refreshAbacStateForPostingAllowance.execute({postingAllowanceId: $postingAllowanceId}, null,null,$al.controller.postingAllowanceCommon.refreshPage); + + } + refreshPage() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewAccommodationPayment, null, {postingAllowanceId: $postingAllowanceId})); + } + + _markAsPaidRefreshAbacStatus() { + $al.model._restCalls.refreshAbacStateForAccommodationPayment.execute({postingAllowanceId: $postingAllowanceId}, null, null, $al.controller.postingAllowanceCommon._markAsPaidResponse,null,null,true); + } + + //Mark as paid common + + //update postingAllowance and call _updatePostingAllowanceMarkAsPaidResponse to update status + doUpdateAndMarkAsPaidPostingAllowance() { + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.postingAllowance, $al.controller.postingAllowanceCommon._markAsPaidRefreshAbacStatus,null,null,true); + } + + doUpdateAndMarkAsPaidPostingAllowanceEdit() { + $al.model._restCalls.updatePostingAllowance.execute(null, null, $al.model._viewModel.postingAllowance, $al.controller.postingAllowanceCommon._markAsPaidRefreshAbacStatus,null,null,true); + } + + //update status to MARK_PAID and call _markAsPaidResponse + _updatePostingAllowanceMarkAsPaidResponse(data) { + + $al.model._restCalls.changeStatePostingAllowance.execute({ + postingAllowanceId: $postingAllowanceId, + stateMachineEvent: 'PAY' + }, null, $al.controller.postingAllowanceCommon._markAsPaidResponse,null,null,true); + + + + } + + + //Show confirmation message and refresh front end + _markAsPaidResponse(data) { + + $a.toast.showSuccess($al.controller._languageBundle.alerts.mark_as_paid_postingAllowance_success); + $a.loading.toggle(false); + //$al.controller.postingAllowanceCommon.refreshPage(); + $al.model.refreshAfterUpdateState(data); + + + } + + // Top-up postingAllowances + createTopupPostingAllowance( parent_id, parent_type ) { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.postingAllowanceCommon.urls.action.viewTopupPostingAllowance, null, + { parentPostingAllowanceId: parent_id, parentPostingAllowanceType: parent_type } )); + } + + + +} + +let $_mvcSections = new Map(); + +function _registerMVCSection(id, model, view, controller) { + + $_mvcSections.set(id, { + model: model, + view: view, + controller: controller + }); + + +} + +_registerMVCSection("postingAllowanceCommon", PostingAllowanceCommonModel, PostingAllowanceCommonView, PostingAllowanceCommonController); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/posting.allowances.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/posting.allowances.js new file mode 100644 index 0000000..7ca7506 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/posting.allowances.js @@ -0,0 +1,1263 @@ +class Model { + + constructor() { + this.urls = { + action: { + viewTravel: $a.utils.url(null, "/posting-allowances/view-tar.do"), + viewRegularizationTravel: $a.utils.url(null, "/posting-allowances/regularization-view-tar.do"), + viewAccommodationDeclaration: $a.utils.url(null, "/posting-allowances/accommodation-declaration-view.do"), + viewAccommodationPayment: $a.utils.url(null, "/posting-allowances/accommodation-payment-view.do"), + } + }; + + this._restCalls = { + list: new $a.GetRestCall(null, "/internal/api/vReportPostingAllowances"), + saveUserPreference: new $a.PostRestCall(null, "/internal/api/user-preferences"), + getUserPreferences: new $a.GetRestCall(null, "/internal/api/user-preferences"), + permissions: new $a.GetRestCall(null, "/internal/api/permissions"), + initializeToDraft: new $a.GetRestCall(null, "/internal/api/allowances/initialize-to-draft/numberRequest/{numberRequests}"), + batchStateMachine: new $a.PostRestCall(null, "/internal/api/postingAllowances/state-machine-batch-event/{event}"), + postingAllowancePermissions: new $a.GetRestCall(null, "/internal/api/posting-allowances-permissions"), + appParameters: new $a.GetRestCall(null, "/internal/api/app-parameters"), + }; + this.postingAllowanceStatesEnum = { + DRAFT: "Draft", + APPROVED: "Approved", + AWAITING: "Awaiting", + PAID: "Paid", + REJECTED: "Rejected", + REJECTED_POP: "Rejected POP", + PAYMENT_FINALISED: "Payment Finalised", + PENDING_VERIF_POP:"Pending Verification POP" + } + // Default filter: + var iniFilter = {}; + if ($isBackOffice) { + iniFilter = { + logic: "or", + filters: [{ + field: "status", + operator: "equals", + value: $postingAllowanceStatus.APPROVED.code + }, { + field: "status", + operator: "equals", + value: $postingAllowanceStatus.AWAITING.code + }, { + field: "status", + operator: "equals", + value: $postingAllowanceStatus.DRAFT.code + }] + }; + } + // Check if there is filter in session: + var checkFilter = sessionStorage.getItem("e-rights_posting_entitlements"); + if (checkFilter) { + iniFilter = JSON.parse(checkFilter); + + iniFilter.filters.forEach(f => { + if (f.field === "startDate" || f.field === "createdAt") { + f.value = new Date(f.value); + } + }) + } + const now = new Date().getUTCFullYear(); + this.dataSource = new kendo.data.DataSource({ + pageSize: 25, + transport: { + read: ($isBackOffice || $isShowYearDropDown) ? this._restCalls.list.settings(null, {year: now}) : this._restCalls.list.settings(null) + }, + dataType: "json", + schema: { + model: { + fields: { + id: { + type: "number" + }, + perId: { + type: "string" + }, + postingAllowanceType: {type: "string"}, + postingAllowanceReqType: {type: "string"}, + postingAllowanceStringId: { + type: "string" + }, + calcTotalAmount: { + amount: {type: "number", default: 0}, + currency: {type: "number", default: 0} + }, + totalAmount: { + amount: {type: "string", default: 0}, + currency: {type: "number", default: 0} + }, originPeriod: { + type: "date" + }, + paymentPeriod: { + type: "date" + }, + firstName: { + type: "string" + }, + startDate: { + type: "date" + }, + exerciseYear: { + type: "string" + }, + to: { + type: "string" + }, + fileId: { + type: "string" + }, + assignmentPace: { + type: "string" + }, + assignmentStartDate: { + type: "date" + }, + status: { + type: "string" + }, + doublePosting: { + type: "boolean" + }, + assignmentAirportName: { + type: "string" + }, + originAirportLocationName: { + type: "string" + }, + firstNationality: { + type: "string" + } + } + } + }, + serverFiltering: false, + serverPaging: false, + serverSorting: false, + sort: { + field: "createdAt", + dir: "desc" + }, + // Initial filter, possibly found in sessionStorage + filter: iniFilter + }); + this.postingAllowanceTypes = { + Accommodation: "ART.23 ACCOMMODATION", + AnnualTravel: "ANNUAL TRAVEL", + }; + this.postingAllowanceRequestTypes = { + Declaration: "DECLARATION", + Payment: "PAYMENT", + }; + } + + _create() { + $a.navigation.open($a.utils.formatUrl($al.model.urls.action.create, null, null), "_self"); + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.controller._onLoadData); + dataPoolExecutor.add("permissions", $al.model._restCalls.permissions); + dataPoolExecutor.add("userPreferences", $al.model._restCalls.getUserPreferences, null, {pagePath: "list/posting-allowances.do"}); + dataPoolExecutor.add("postingAllowancePermissions", $al.model._restCalls.postingAllowancePermissions); + dataPoolExecutor.add("appParameters", $al.model._restCalls.appParameters, null, {paramType: "POSTING_ALLOWANCES"}); + dataPoolExecutor.run(); + } + +} + +class View { + + constructor() { + this._elements = new $a.DataContainer("view"); + this._templates = new $a.DataContainer("view"); + + this._templates.node("content").data(new $a.KendoTemplateData()); + this._templates.node("actions").data(new $a.KendoTemplateData()); + this._templates.node("actions").node("edit").data(new $a.KendoTemplateData()); + + this._templates.node("gridStatus").data(new $a.KendoTemplateData()); + this._elements.data(new $a.KendoElementData(), "grid"); + this._elements.node("exercise_years").node("grid").data(new $a.KendoElementData()); + this._elements.node("add_exercise_year_dropdown").data(new $a.KendoElementData()); + this._elements.node("status_dropdown").data(new $a.KendoElementData()); + + this._filter_values = { + statusDS: [{ + status: $postingAllowanceStatus.DRAFT.code, label: $postingAllowanceStatus.DRAFT.label + }, { + status: $postingAllowanceStatus.AWAITING.code, label: $postingAllowanceStatus.AWAITING.label + }, { + status: $postingAllowanceStatus.APPROVED.code, label: $postingAllowanceStatus.APPROVED.label + }, { + status: $postingAllowanceStatus.PAID.code, label: $postingAllowanceStatus.PAID.label + }, { + status: $postingAllowanceStatus.REJECTED.code, label: $postingAllowanceStatus.REJECTED.label + }, { + status: $postingAllowanceStatus.REJECTED_POP.code, label: $postingAllowanceStatus.REJECTED_POP.label + }, { + status: $postingAllowanceStatus.PENDING_POP.code, label: $postingAllowanceStatus.PENDING_POP.label + }, { + status: $postingAllowanceStatus.PAYMENT_FINALISED.code, label: $postingAllowanceStatus.PAYMENT_FINALISED.label + } + ] + }; + this._filter_postingAllowanceTypeForUI_values = { + postingAllowanceTypeForUIDS: [{ + postingAllowanceReqType: 'INITIAL' + }, { + postingAllowanceReqType: 'REGULARIZATION' + }, { + postingAllowanceReqType: 'STORAGE' + }, { + postingAllowanceReqType: 'DECLARATION' + }, { + postingAllowanceReqType: 'PAYMENT' + } + ] + }; + this.ids = []; + + + this._filter_postingAllowanceType_values = { + postingAllowanceTypeDS: [{ + postingAllowanceType: 'ANNUAL TRAVEL' + }, { + postingAllowanceType: 'ART.23 ACCOMMODATION' + }, { + postingAllowanceType: 'REST LEAVE' + }, { + postingAllowanceType: 'STORAGE' + }] + }; + + + this._filter_options = { + operators: { + string: { + contains: "Contains", + startswith: "Starts With", + endswith: "Ends With", + eq: "Is Equal To", + doesnotcontain: "Doesn't contain" + } + } + }; + + this._filter_options_date = { + operators: { + date: { + gt: "After", + lt: "Before", + } + }, + messages: { + info: "
    Show items that occurs
    " + }, + extra: true + } + + } + + render(userPreference) { + + + let hideFirstColumn = false; + if (!$isBackOffice) { + hideFirstColumn = true; + } + $al.view._templates.content.data.compile(); + + $al.view._elements.grid.element.kendoGrid({ + dataSource: $al.model.dataSource, + pageable: { + pageSize: 25, + pageSizes: [25, 50, 100, 500, 1000] + }, + sortable: true, + resizable: true, + scrollable: true, + columnMenu: false, + filterable: { + extra: false, + search: true + }, + filterMenuInit: function (e) { + if (e.field === "exerciseYear") { + var filterMultiCheck = this.thead.find("[data-field=" + e.field + "]").data("kendoFilterMultiCheck") + filterMultiCheck.container.empty(); + filterMultiCheck.checkSource.sort({field: e.field, dir: "desc"}); + filterMultiCheck.checkSource.filter([]); + filterMultiCheck.checkSource.data(filterMultiCheck.checkSource.view().toJSON()); + filterMultiCheck.createCheckBoxes(); + filterMultiCheck.refresh(); + } + + if (e.field === "placeOfOrigin" || e.field === "assignmentPace" || e.field === "originAirportLocationName" || e.field === "assignmentAirportName") { + var filterMultiCheck = this.thead.find("[data-field=" + e.field + "]").data("kendoFilterMultiCheck") + filterMultiCheck.container.empty(); + filterMultiCheck.checkSource.sort({field: e.field, dir: "asc"}); + filterMultiCheck.checkSource.filter([]); + filterMultiCheck.checkSource.data(filterMultiCheck.checkSource.view().toJSON()); + filterMultiCheck.createCheckBoxes(); + filterMultiCheck.refresh(); + } + }, + excel: { + fileName: "allowances.xlsx", + proxyURL: $al.model._restCalls.list, + filterable: true, + allPages: true + }, + columns: [ + { + selectable: true, + hidden: hideFirstColumn, + width: 40, + title: "", + attributes: {class: "pr-1 notClickable", style: "cursor: default"}, + headerAttributes: {class: "pr-1"}, + minResizableWidth: 40 + }, { + field: "postingAllowanceStringId", + title: "ID", + width: 130, + attributes: {class: "pr-0"}, + filterable: $al.view._filter_options + }, + { + field: "postingAllowanceType", title: "Entitlements", + width: "140px", + attributes: {class: "text-forced-lowercase"}, + filterable: { + multi: true, + dataSource: $al.view._filter_postingAllowanceType_values.postingAllowanceTypeDS, + } + }, + { + field: "postingAllowanceReqType", + title: "Type", + width: "100px", + attributes: {class: "text-forced-lowercase"}, + filterable: { + multi: true, + dataSource: $al.view._filter_postingAllowanceTypeForUI_values.postingAllowanceTypeForUIDS + + } + }, + { + field: "exerciseYear", + title: "Year", + width: "10%", + filterable: { + multi: true, + search: false, + }, + minResizableWidth: 100 + }, + { + field: "status", + title: "Status", + width: "110px", + attributes: {class: "pr-0"}, + template: '#=$al.model.postingAllowanceStatesEnum[status]#', + filterable: { + multi: true, + search: false, + dataSource: $al.view._filter_values.statusDS + } + }, + { + field: "lastName", + title: "Last Name", + width: "20%", + filterable: $al.view._filter_options, + minResizableWidth: 100 + }, + { + field: "firstName", + title: "First Name", + width: "20%", + filterable: $al.view._filter_options, + minResizableWidth: 100 + }, + { + field: "assignmentPace", + title: "Place Of Assignment", + width: "20%", + + template: '#= data.assignmentCountryName ? data.assignmentCountryName +" ," : "" # #= data.assignmentCityName #', + + filterable: { + multi: true, + search: true + }, + minResizableWidth: 100 + }, + { + field: "placeOfOrigin", + title: "Place Of Origin", + width: "20%", + filterable: { + multi: true, + search: true + }, + minResizableWidth: 100 + }, + { + field: "totalAmount", + title: "Total Amount", + hidden: true, + width: "10%", + template: "#if((typeof totalAmount != 'undefined') && (totalAmount\n" + + " != null) && (totalAmount.amount !== 'undefined')\n" + + " && (totalAmount.amount != null)) {#" + + ' #= kendo.toString(totalAmount.amount,"n2") # #= totalAmount.currency #' + + + "#} else {#" + + "" + + "#}#", + + filterable: $al.view._filter_options, + headerAttributes: {class: "text-right"}, + attributes: {class: "text-right"} + }, + { + field: "perId", + title: "PerId", + width: "10%", + filterable: $al.view._filter_options, + minResizableWidth: 100, + hidden: true + }, + { + field: "assignmentStartDate", + title: "Assignment Start Date", + width: "15%", + filterable: $al.view._filter_options_date, + minResizableWidth: 100, + template: "#if((typeof assignmentStartDate != 'undefined') " + + "&& (assignmentStartDate != null)) {#" + + ' #= kendo.toString(kendo.parseDate(assignmentStartDate), \'dd MMM yyyy\') #' + +"#} else {#" + + "" + + "#}#", + hidden: true + }, + { + field: "originPeriod", + title: "Origin Period", + hidden: true, + width: "15%", + template: "#if((typeof originPeriod != 'undefined') " + + "&& (originPeriod != null)) {#" + + ' #= kendo.toString(kendo.parseDate(originPeriod), \'MMM yyyy\') #' + +"#} else {#" + + "" + + "#}#", + filterable: $al.view._filter_options_date, + minResizableWidth: 100 + }, + { + field: "paymentPeriod", + title: "Payment Period", + hidden: true, + width: "15%", + filterable: $al.view._filter_options_date, + minResizableWidth: 100, + template: "#if((typeof paymentPeriod != 'undefined') " + + "&& (paymentPeriod != null)) {#" + + ' #= kendo.toString(kendo.parseDate(paymentPeriod), \'MMM yyyy\') #' + +"#} else {#" + + "" + + "#}#", + }, + { + field: "dualPosting", + title: "Dual Posting", + hidden: true, + width: "15%", + filterable: { + multi: true, + search: false, + + }, + template: "#= dualPosting #", + minResizableWidth: 100 + }, + { + field: "originAirportLocationName", + title: "Origin Airport", + width: "20%", + filterable: { + multi: true, + search: true + }, + minResizableWidth: 100 + }, + { + field: "assignmentAirportName", + title: "Assignment Airport", + width: "20%", + filterable: { + multi: true, + search: true + }, + minResizableWidth: 100 + }, + { + field: "firstNationality", + title: "1st Nationality", + width: "10%", + filterable: $al.view._filter_options, + minResizableWidth: 100, + hidden: true + }, + { + headerTemplate: "", + id: "ColumnMenu", + command: [ + { + name: "edit", + text: "Edit", + template: "", + } + ], + attributes: {style: "white-space: nowrap; position; relative"}, + width: "50px", + overflow: "never" + } + ], + + dataBound: function (e) { + // Data updated, save filter + var currentFilter = e.sender.dataSource.filter(); + if (!currentFilter) { + currentFilter = {logic: 'and', filters: []}; + } + var filterString = JSON.stringify(currentFilter); + sessionStorage.setItem("e-rights_posting_entitlements", filterString); + + $al.view._updateClearFilterButton(); + + }, + change: function (e) { + + const grid = e.sender; + const rows = grid.select(); + $al.view.ids = []; + const statusSet = new Set(); + let existAccommodationPostingAllowance = false; + rows.each(function (e) { + const id = grid.dataItem(this).id; + const status = grid.dataItem(this).status; + const postingAllowanceType = grid.dataItem(this).postingAllowanceType; + if(postingAllowanceType === $al.model.postingAllowanceTypes.Accommodation){ + existAccommodationPostingAllowance = true; + } + $al.view.ids.push({"id": id, "status": status}); + statusSet.add(status); + }); + + if(existAccommodationPostingAllowance){ + $al.view.ids = []; + }else if (statusSet.size > 0) { + + if (statusSet.has('DRAFT') && + statusSet.has('AWAITING') && + statusSet.has('APPROVED') && + statusSet.has('PAID') && + statusSet.has('REJECTED')) { + + $al.view._renderStatusDropDownByTravelStatus([]); + } else if (statusSet.has('DRAFT') && + statusSet.has('AWAITING') && + !statusSet.has('APPROVED') && + !statusSet.has('PAID') && + !statusSet.has('REJECTED')) { + + let statusObjects = []; + statusObjects.push({ + "id": 'REFRESH_PLACE_OF_ORIGIN', + "event": 'REFRESH_PLACE_OF_ORIGIN', + "display": "Refresh the place of origin" + }); + statusObjects.push({ + "id": 'REFRESH_ADDRESS_DEPENDENTS', + "event": 'REFRESH_ADDRESS_DEPENDENTS', + "display": "Refresh address of dependents" + }); + + $al.view._renderStatusDropDownByTravelStatus(statusObjects); + } else if (statusSet.has('APPROVED') && + !statusSet.has('DRAFT') && + !statusSet.has('AWAITING') && + !statusSet.has('PAID') && + !statusSet.has('REJECTED')) { + let statusObjects = []; + statusObjects.push({ + "id":'PAID', + "event":'PAY', + "display": "Send to Sysper" + }); + + $al.view._renderStatusDropDownByTravelStatus(statusObjects); + } else if (statusSet.has('AWAITING') && + !statusSet.has('DRAFT') && + !statusSet.has('APPROVED') && + !statusSet.has('PAID') && + !statusSet.has('REJECTED')) { + + let statusObjects = []; + statusObjects.push({ + "id": 'APPROVED', + "event": 'APPROVE', + "display": "Approve" + }); + statusObjects.push({ + "id": 'REFRESH_PLACE_OF_ORIGIN', + "event": 'REFRESH_PLACE_OF_ORIGIN', + "display": "Refresh the place of origin" + }); + statusObjects.push({ + "id": 'REFRESH_ADDRESS_DEPENDENTS', + "event": 'REFRESH_ADDRESS_DEPENDENTS', + "display": "Refresh address of dependents" + }); + $al.view._renderStatusDropDownByTravelStatus(statusObjects); + } else if (statusSet.has('DRAFT') && + !statusSet.has('AWAITING') && + !statusSet.has('APPROVED') && + !statusSet.has('PAID') && + !statusSet.has('REJECTED')) { + + let statusObjects = []; + statusObjects.push({ + "id": 'REFRESH_PLACE_OF_ORIGIN', + "event": 'REFRESH_PLACE_OF_ORIGIN', + "display": "Refresh the place of origin" + }); + statusObjects.push({ + "id": 'REFRESH_ADDRESS_DEPENDENTS', + "event": 'REFRESH_ADDRESS_DEPENDENTS', + "display": "Refresh address of dependents" + }); + $al.view._renderStatusDropDownByTravelStatus(statusObjects); + } else { + $al.view._renderStatusDropDownByTravelStatus([]); + } + + } + $al.view._enableBulkActionButton(); + + + }, + filter: function (e) { + $al.view.ids = []; + $al.view._enableBulkActionButton(); + }, + + filterMenuOpen: function (e) { + } + + }); + + $al.view._elements.grid.component = "kendoGrid"; + + //set the user preferences if exists + + if (userPreference.preferences) { + + var options = JSON.parse(userPreference.preferences); + if ((typeof options != 'undefined') && (options != null) && (options != '')) { + + $al.view._elements.grid.component.setOptions({ + columns: options.columns, + autoBind: false + }); + } + } + + $("#columnMenuButton").kendoColumnMenu({ + filterable: false, + sortable: false, + dataSource: $al.view._elements.grid.element.data("kendoGrid").dataSource, + //dataSource: $al.model.dataSource, + columns: true, + owner: $al.view._elements.grid.element.data("kendoGrid"), + }); + + // save the user preferences when a column action is performed + $al.view._elements.grid.component.bind("columnShow", $al.controller._saveUserPreference); + $al.view._elements.grid.component.bind("columnHide", $al.controller._saveUserPreference); + + // Make the row clickable since there is only 1 button except the first td with the checkbox + $("#view-grid").on("click", "tbody tr td:not('.notClickable')", function (e) { + $al.controller._goToPostingAllowanceTab(this) + }); + + // Everything rendered: Update Clear Filter Button + $al.view._updateClearFilterButton(); + $al.view._renderAddExerciseYearDropDown(); + $al.view._renderStatusDropDownByTravelStatus([]); + } + + _updateClearFilterButton() { + var currentFilter = $("#view-grid").data("kendoGrid").dataSource.filter(); + var emptyFilter = !currentFilter || currentFilter.filters.length == 0; + $("#clear_mfile_list_filters_button").css("display", emptyFilter ? "none" : "inline-block"); + } + + _enableBulkActionButton() { + var dropdownlist = $al.view._elements.status_dropdown.data.element.data("kendoDropDownList"); + if (!dropdownlist) { + return; + } + if ($al.view.ids.length > 0) { + dropdownlist.enable(true); + } else { + dropdownlist.enable(false); + } + } + + _renderAddExerciseYearDropDown() { + + let yearsObjects = []; + yearsObjects.push({ + "id": 2999, + "display": "All" + }); + const now = new Date().getUTCFullYear(); + const years = Array(now - (now - 7)).fill('').map((v, idx) => now - idx); + years.forEach(value => { + yearsObjects.push({ + "id": value, + "display": `${value}` + }); + }); + + var dropdownlist = $al.view._elements.add_exercise_year_dropdown.data.element.kendoDropDownList({ + dataSource: yearsObjects, + dataTextField: "display", + dataValueField: "id", + enable: true, + open: function () { + + + }, + autoWidth: true, + select: function (e) { + + $al.view._getPostingAllowancesByExerciseYear(e.dataItem.id); + } + }); + dropdownlist.data("kendoDropDownList").select(1); + + } + + _renderStatusDropDownByTravelStatus(statusObjects) { + var dropdownElement = $al.view._elements.status_dropdown.data.element; + var dropdownlist = dropdownElement.kendoDropDownList({ + dataSource: statusObjects, + dataTextField: "display", + dataValueField: "id", + enable: false, + autoWidth: true, + optionLabel: "ACTIONS", + noDataTemplate: '
    No actions available
    for the selected status.
    ', + open: function () { + $( "#view-status_dropdown-list .k-list-optionlabel" ).css( "display", "none" ); + }, + select: function (e) { + + if (e.dataItem.event === 'REFRESH_PLACE_OF_ORIGIN' || e.dataItem.event === 'APPROVE' || e.dataItem.event === 'REFRESH_ADDRESS_DEPENDENTS') { + // send event to backend with list ok ids + let ids = []; + $al.view.ids.forEach(value => ids.push(value.id)); + var muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + if (ids && ids.length > 0) { + $a.loading.toggle(true); + $al.model.showBatchInprogressDialog = true; + $al.model._restCalls.batchStateMachine.execute({event: e.dataItem.event}, ids, null, null, $al.view._onBatchActionSuccess, null, muteAnankeErrorToast); + setTimeout(() => { + + if ($al.model.showBatchInprogressDialog === true) { + $a.modalDialog.showInfo($al.controller._languageBundle.actions.actions_summary, $al.controller._languageBundle.actions.batch_processing_in_progress); + } + }, 300000); + } + } else if (e.dataItem.event === 'PAY') { + $al.model.batchActions.event = e.dataItem.event; + // send event to backend with list ok ids + $al.model.batchActions.ids = []; + $al.model.batchActions.response = {}; + $al.view.ids.forEach(value => $al.model.batchActions.ids.push(value.id)); + $al.model.batchActions.totalNumberOfRequestTBePaid = $al.model.batchActions.ids.length; + $al.model.batchActions.muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + if ($al.model.batchActions.ids && $al.model.batchActions.ids.length > 0) { + + let itemsToPayNow = $al.model.batchActions.ids.splice(0, $al.model.batchActions.numberRequestsToPayTogether); + $al.model.batchActions.numberOfrequestSentInThisCall = itemsToPayNow.length; + + $al.view._createProgressBar(); + $a.loading.toggle(true); + $al.model.showBatchInprogressDialog = true; + $al.model._restCalls.batchStateMachine.execute({event: e.dataItem.event}, itemsToPayNow, null, null, $al.view._onBatchActionPaySuccess, null, $al.model.batchActions.muteAnankeErrorToast); + + } + } + // Reset Dropdown label once clicked in order to show back 'Actions' + setTimeout(function () { + dropdownlist.value(null); + dropdownlist.refresh(); + }); + } + }).data("kendoDropDownList"); + } + + _createProgressBar() { + $("#modalWindow").kendoWindow({ + title: "Batch Payment Progress: ", + modal: true, + visible: false + }); + + + $al.model.batchActions.numberOfRequestTreated = $al.model.batchActions.numberOfrequestSentInThisCall; + + + $("#progressbar").kendoProgressBar({ + type: "percent", + min: 0, + max: 100, + value: Math.ceil(($al.model.batchActions.numberOfrequestSentInThisCall / $al.model.batchActions.totalNumberOfRequestTBePaid) * 100), //here we calculate with the numberRequestsToPayTogether as it is first + animation: { + duration: 500 + } + }); + + $("#modalWindow").data("kendoWindow").open(); + + } + + _onBatchActionPaySuccess(data) { + + + $("#progressbar").data("kendoProgressBar").value(Math.ceil(($al.model.batchActions.numberOfRequestTreated / $al.model.batchActions.totalNumberOfRequestTBePaid) * 100)); + + + //$a.loading.toggle(false); + //$al.model.showBatchInprogressDialog = false; + if (data.status === 200) { + + $al.view.ids = []; + //$al.view._enableBulkActionButton(); + const now = new Date().getUTCFullYear(); + $al.model.batchActions.response = $al.controller._sumResponses(data, $al.model.batchActions.response); + + if ($al.model.batchActions.totalNumberOfRequestTBePaid > $al.model.batchActions.numberOfRequestTreated) { + $al.model.batchActions.numberOfRequestTreated = $al.model.batchActions.numberOfRequestTreated + $al.model.batchActions.numberOfrequestSentInThisCall; + let itemsToPayNow = $al.model.batchActions.ids.splice(0, $al.model.batchActions.numberRequestsToPayTogether); + $al.model.batchActions.numberOfrequestSentInThisCall = itemsToPayNow.length; + + $al.model._restCalls.batchStateMachine.execute({event: $al.model.batchActions.event}, itemsToPayNow, null, null, $al.view._onBatchActionPaySuccess, null, $al.model.batchActions.muteAnankeErrorToast); + } else { + + + $al.view._onBatchActionPaySuccessEnd(); + } + + + } else { + $a.toast.showError($al.controller._languageBundle.actions.unknown_error); + $al.controller._inizializeBatchActions(); + $a.loading.toggle(false); + } + } + + _onBatchActionPaySuccessEnd() { + $("#progressbar").data("kendoProgressBar").value(100); + $a.loading.toggle(false); + + $al.model.showBatchInprogressDialog = false; + $al.view.ids = []; + $al.view._enableBulkActionButton(); + const now = new Date().getUTCFullYear(); + $al.model.batchActions.messages = $al.controller.treatErrors($al.model.batchActions.response); + $al.view._getPostingAllowancesByExerciseYear(now); + $("#modalWindow").data("kendoWindow").close(); + + $a.modalDialog.showInfo($al.controller._languageBundle.actions.actions_summary, $al.model.batchActions.messages); + $al.controller._inizializeBatchActions(); + + + } + + _onBatchActionSuccess(data) { + + $a.loading.toggle(false); + $al.model.showBatchInprogressDialog = false; + if (data.status === 200) { + $al.view.ids = []; + $al.view._enableBulkActionButton(); + const now = new Date().getUTCFullYear(); + $al.view._getPostingAllowancesByExerciseYear(now); + const messages = $al.controller._parseAndExtractMessagesFromResponse(data); + $a.modalDialog.showInfo($al.controller._languageBundle.actions.actions_summary, messages); + } else { + $a.toast.showError($al.controller._languageBundle.actions.unknown_error); + } + } + + _getPostingAllowancesByExerciseYear(year) { + + if (year === 2999) { + $al.model._restCalls.list.execute(null, null, $al.view._onDataPostingAllowanceResponse, null, null, true); + } else { + $al.model._restCalls.list.execute(null, {year: year}, $al.view._onDataPostingAllowanceResponse, null, null, true); + } + } + + _onDataPostingAllowanceResponse(data) { + + var iniFilter = { + logic: "or", + filters: [{ + field: "status", + operator: "equals", + value: $postingAllowanceStatus.APPROVED.code + }, { + field: "status", + operator: "equals", + value: $postingAllowanceStatus.AWAITING.code + }, { + field: "status", + operator: "equals", + value: $postingAllowanceStatus.DRAFT.code + }] + }; + // Check if there is filter in session: + var checkFilter = sessionStorage.getItem("e-rights_posting_entitlements"); + if (checkFilter) { + iniFilter = JSON.parse(checkFilter); + + iniFilter.filters.forEach(f => { + if (f.field === "startDate" || f.field === "createdAt") { + f.value = new Date(f.value); + } + }) + } + + this.dataSource = new kendo.data.DataSource({ + pageSize: 25, + data: data, + dataType: "json", + schema: { + model: { + fields: { + id: { + type: "number" + }, + perId: { + type: "string" + }, + postingAllowanceType: {type: "string"}, + postingAllowanceReqType: {type: "string"}, + postingAllowanceStringId: { + type: "string" + }, + calcTotalAmount: { + amount: {type: "number", default: 0}, + currency: {type: "number", default: 0} + }, + totalAmount: { + amount: {type: "string", default: 0}, + currency: {type: "number", default: 0} + }, originPeriod: { + type: "date" + }, + paymentPeriod: { + type: "date" + }, + firstName: { + type: "string" + }, + startDate: { + type: "date" + }, + exerciseYear: { + type: "string" + }, + to: { + type: "string" + }, + fileId: { + type: "string" + }, + assignmentPace: { + type: "string" + }, + assignmentStartDate: { + type: "date" + }, + status: { + type: "string" + }, + doublePosting: { + type: "boolean" + }, + assignmentAirportName: { + type: "string" + }, + originAirportName: { + type: "string" + } + } + } + }, + serverFiltering: false, + serverPaging: false, + serverSorting: false, + sort: { + field: "createdAt", + dir: "desc" + }, + filter: iniFilter + }); + + + $("#view-grid").data("kendoGrid").setDataSource(this.dataSource); + $("#view-grid").data("kendoGrid").dataSource.read(); + $("#view-grid").data("kendoGrid").refresh(); + } +} + + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.reports.posting_allowances", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.model.init(); + } + + _onLoadData(data) { + $al.view.render(data.get("userPreferences").data); + var AppParametersArr = data.get("appParameters").data; + $al.model.appParameters = new Map(AppParametersArr.map(i => [i.key, i.value])); + + $al.controller._bindPermissions(data.get("permissions").data, data.get("postingAllowancePermissions").data); + + $al.notifyOnReadyMvc(); + } + + _bindPermissions(permissions, allowancePermissions) { + $al.controller._inizializeBatchActions(); + + $al.model.showBatchInprogressDialog = false; + $al.model.permissions = permissions; + + $al.model.postingAllowancePermissions = allowancePermissions; + let canAccessPostingAllowance = false; + let showActionButton = true; + if ($al.model.postingAllowancePermissions.canOwnAtLeastOnePostingAllowance || + $al.model.postingAllowancePermissions.hasOrganisationsWithListAuthority || + $al.model.postingAllowancePermissions.hasOrganisationIndependentListAuthority || + $al.model.postingAllowancePermissions.canConsult) { + canAccessPostingAllowance = true; + if ($al.controller.isReadAccess()) { + showActionButton = false; + } + } + var viewModel = new kendo.data.Model.define({ + canCreate: permissions.canCreate, + canExport: permissions.canExport, + canAccessPostingAllowance: canAccessPostingAllowance, + showActionButton: showActionButton, + isBackOffice: $isBackOffice, + }); + + kendo.bind($al.view._templates.content.data.wrapperSelector, new viewModel({})); + } + + _inizializeBatchActions() { + $al.model.batchActions = {}; + $al.model.batchActions.messages = ' '; + $al.model.batchActions.numberRequestsToPayTogether = $al.model.appParameters.get("NUMBER_OF_REQUEST_TREATED_PAY_SYSPER"); + $al.model.batchActions.numberRequests = 10000; + $al.model.batchActions.response = {}; + $al.model.batchActions.numberOfRequestTreated = 0; + $al.model.emptyTravelAllowances = false; + $al.model.progessDialogShown = false; + + + } + + isReadAccess() { + + return !$al.model.postingAllowancePermissions.canApprove && + !$al.model.postingAllowancePermissions.canReject && + !$al.model.postingAllowancePermissions.canResubmit && + !$al.model.postingAllowancePermissions.canPaySysper && + !$al.model.postingAllowancePermissions.canPayManually && + !$al.model.postingAllowancePermissions.canDeleteComments && + !$al.model.postingAllowancePermissions.canSaveChanges; + } + + _getUserPreferences() { + $al.model._restCalls.getUserPreferences.execute(null, {pagePath: "list/posting-allowances.do"}, $al.controller._onLoadUserPreferences) + } + + _saveUserPreference(e) { + let options = $al.view._elements.grid.component.getOptions(); + + let optionsJson = kendo.stringify(options); + let userPref = { + pagePath: "list/posting-allowances.do", + preferences: optionsJson + }; + + $al.model._restCalls.saveUserPreference.execute(null, userPref, null); + } + + + _exportEmptyEntitlementsRates(source) { + $al.view._elements.grid.component.saveAsExcel(); + } + + _goToPostingAllowanceTab(source) { + + var item = $al.view._elements.grid.component.dataItem($(source).closest("tr")); + + if (item.postingAllowanceReqType === "REGULARIZATION") { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewRegularizationTravel, null, {postingAllowanceId: item.id})); + } else if (item.postingAllowanceType === "ANNUAL TRAVEL") { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewTravel, null, {postingAllowanceId: item.id})); + } else if (item.postingAllowanceReqType === $al.model.postingAllowanceRequestTypes.Declaration) { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewAccommodationDeclaration, null, {postingAllowanceId: item.id})); + }else if (item.postingAllowanceReqType === $al.model.postingAllowanceRequestTypes.Payment) { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewAccommodationPayment, null, {postingAllowanceId: item.id})); + } + + } + + _clearAllFilters() { + // Reset filter, this will trigger the dataBound event + var emptyFilter = {logic: 'and', filters: []}; + $("#view-grid").data("kendoGrid").dataSource.filter(emptyFilter); + } + + + _createAllTravelAllowances() { + try { + $a.loading.toggle(true); + var muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + $al.model._restCalls.initializeToDraft.execute({numberRequests: $al.model.batchActions.numberRequests}, null, null + , null, $al.controller._onCreateTravelAllowancesRetrievalSuccess, null, muteAnankeErrorToast); + } catch (error) { + console.error(error); + // expected output: ReferenceError: nonExistentFunction is not defined + // Note - error messages will vary depending on browser + $a.toast.showError($al.controller._languageBundle.actions.unknown_error); + + } + + setTimeout(() => { + + $a.loading.toggle(false); + if(!$al.model.emptyTravelAllowances){ + $al.model.progessDialogShown = true; + $a.modalDialog.showInfo($al.controller._languageBundle.actions.new_travel_allowances_retrieval, $al.controller._languageBundle.actions.create_travel_allowances_progress); + } + + }, 30000); + } + + _onCreateTravelAllowancesRetrievalSuccess(data) { + + $a.loading.toggle(false); + if (data.status === 200) { + + if($al.model.progessDialogShown){ + + return; + } + $al.model.emptyTravelAllowances = true; + if(data.responseJSON === 0){ + + $a.modalDialog.showInfo($al.controller._languageBundle.actions.new_travel_allowances_retrieval, $al.controller._languageBundle.actions.empty_new_travel_allowances_retrieval); + }else{ + $a.modalDialog.showInfo($al.controller._languageBundle.actions.new_travel_allowances_retrieval, $al.controller._languageBundle.actions.create_travel_allowances_progress); + } + + } else { + + if($al.model.progessDialogShown){ + return; + } + $al.model.emptyTravelAllowances = true; + $a.toast.showError($al.controller._languageBundle.actions.unknown_error); + } + } + + + _parseAndExtractMessagesFromResponse(response) { + + var textObj = $al.controller._extractMessagesFromResponse(response) + return $al.controller.treatErrors(textObj); + } + + _extractMessagesFromResponse(response) { + var text = response.responseText; + var textObj = null; + try { + textObj = JSON.parse(text); + } catch (parseExc) { + // Do nothing, textObj remains null + } + return textObj; + } + + treatErrors(textObj) { + var messages = ''; + + if (textObj && textObj.numberOfSuccess && textObj.numberOfSuccess > 0) { + messages = messages + (`
    ${textObj.numberOfSuccess} requests were processed successfully:
    `); + messages = messages + (`${textObj.successMessage}`); + + } + if (textObj && textObj.numberOfFailed && textObj.numberOfFailed > 0) { + messages = messages + (`
    ${textObj.numberOfFailed} requests failed to be processed:
    `); + messages = messages + (`${textObj.failedMessage}`); + } + return messages; + } + + _sumResponses(object1, object2) { + var textObj = $al.controller._extractMessagesFromResponse(object1) + + + for (let property in textObj) { + if (object2.hasOwnProperty(property)) { + object2[property] = object2[property] + textObj[property]; + } else { + object2[property] = textObj[property]; + } + } + return object2; + } +} + +getSessionStorageID(); + +$al.mvc(Model, View, Controller, true); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/posting.allowances.status.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/posting.allowances.status.js new file mode 100644 index 0000000..64430bf --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/posting.allowances.status.js @@ -0,0 +1,101 @@ +class PostingAllowanceStatus { + + constructor() { + this._approved = {code: "APPROVED", label: null}; + this._awaiting = {code: "AWAITING", label: null}; + this._draft = {code: "DRAFT", label: null}; + this._rejected = {code: "REJECTED", label: null}; + this._paid = {code: "PAID", label: null}; + this._start = {code: "START", label: null}; + this._disputed = {code: "DISPUTED", label: null}; + this._closed = {code: "CLOSED", label: null}; + this._clo100 = {code: "CLO100", label: null}; + this._clo10 = {code: "CLO10", label: null}; + this._ares = {code: "ARES", label: null}; + this._paymentFinalised = {code: "PAYMENT_FINALISED", label: null}; + this._popRejected = {code: "REJECTED_POP", label: null}; + this._pendingPop = {code: "PENDING_VERIF_POP", label: null}; + } + + get APPROVED() { + return $postingAllowanceStatus._approved; + } + + get AWAITING() { + return $postingAllowanceStatus._awaiting; + } + + get DRAFT() { + return $postingAllowanceStatus._draft; + } + + get REJECTED() { + return $postingAllowanceStatus._rejected; + } + + get PAID() { + return $postingAllowanceStatus._paid; + } + + get START() { + return $postingAllowanceStatus._start; + } + + get DISPUTED() { + return $postingAllowanceStatus._disputed; + } + + get CLOSED() { + return $postingAllowanceStatus._closed; + } + + get CLO100() { + return $postingAllowanceStatus._clo100; + } + + get CLO10() { + return $postingAllowanceStatus._clo10; + } + + get ARES() { + return $postingAllowanceStatus._ares; + } + + get PAYMENT_FINALISED() { + return $postingAllowanceStatus._paymentFinalised; + } + + get REJECTED_POP() { + return $postingAllowanceStatus._popRejected; + } + + get PENDING_POP() { + return $postingAllowanceStatus._pendingPop; + } + + _onReady() { + $a.languageBundle.retrieve($postingAllowanceStatus._onLanguageBundleReady, "common.messages.e-rights", "e_rights.movement_files.status", false); + } + + _onLanguageBundleReady(languageBundle) { + $postingAllowanceStatus._approved.label = languageBundle.approved; + $postingAllowanceStatus._awaiting.label = languageBundle.awaiting; + $postingAllowanceStatus._draft.label = languageBundle.draft; + $postingAllowanceStatus._rejected.label = languageBundle.rejected; + $postingAllowanceStatus._paid.label = languageBundle.paid; + $postingAllowanceStatus._start.label = languageBundle.start; + $postingAllowanceStatus._disputed.label = languageBundle.disputed; + $postingAllowanceStatus._closed.label = languageBundle.closed; + $postingAllowanceStatus._clo100.label = languageBundle.clo100; + $postingAllowanceStatus._clo10.label = languageBundle.clo10; + $postingAllowanceStatus._ares.label = languageBundle.ares; + $postingAllowanceStatus._pendingPop.label = languageBundle.pending_verif_pop; + $postingAllowanceStatus._popRejected.label = languageBundle.rejected_pop; + $postingAllowanceStatus._paymentFinalised.label = languageBundle.payment_finalised; + $al.notifyOnReadyComplete($postingAllowanceStatus); + } + +} + +const $postingAllowanceStatus = new PostingAllowanceStatus(); +$al.registerOnReadyListener($postingAllowanceStatus); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/regularization-view.tar.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/regularization-view.tar.js new file mode 100644 index 0000000..6d5142c --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/regularization-view.tar.js @@ -0,0 +1,2267 @@ +class PostingAllowanceModel { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.model(); + }); + this._restCalls = { + validatePayment: new $a.GetRestCall(null, "/internal/api/postingAllowances/getEventNumber/{rightId}/{personId}"), + getPostingAllowance: new $a.GetRestCall(null, "/internal/api/regularizationAllowances/{travelAllowanceId}"), + getBankInfo: new $a.GetRestCall(null, "/internal/api/bank-accounts"), + + updatePostingAllowance: new $a.PutRestCall(null, "/internal/api/regularizationAllowances/{travelAllowanceId}"), + getStateHistory: new $a.GetRestCall(null, "/internal/api/postingAllowances/{postingAllowanceId}/stateMachineHistory"), + changeStatePostingAllowance: new $a.PostRestCall(null, "/internal/api/postingAllowances/stateMachineEvent/{stateMachineEvent}/{postingAllowanceId}"), + permissions: new $a.GetRestCall(null, "/internal/api/posting-allowances-permissions"), + abacPay: new $a.PostRestCall(null, "/internal/api/abac/invoices"), + + appParameters: new $a.GetRestCall(null, "/internal/api/app-parameters"), + iataAirportCityCode: new $a.GetRestCall(null, "/internal/api/iata-airports/city/{cityCode}"), + payInSysper: new $a.PostRestCall(null, "/internal/api/postingAllowances/payInSysper/{postingAllowanceId}"), + updatePlaceOfOrigin: new $a.PostRestCall(null, "/internal/api/postingAllowances/refreshPlaceOfOrigin/{postingAllowanceId}"), + savePlaceOfOriginAirportPost: new $a.PostRestCall(null, "/internal/api/placeOriginAirport"), + getPlaceOfOriginAirport: new $a.GetRestCall(null, "/internal/api/placeOriginAirport"), + createRegularization: new $a.PostRestCall(null, "/internal/api/createRegularizationAllowances/{postingAllowanceId}"), + canBeRegularized: new $a.GetRestCall(null, "/internal/api/postingAllowances/{postingAllowanceId}/canBeRegularized"), + isTheParentARegularization: new $a.GetRestCall(null, "/internal/api/postingAllowances/{postingAllowanceId}/isTheParentARegularization"), + }; + this.urls = { + action: { + + viewStaffMember: $a.utils.url(null, "/staffMember/view-stafMember.do"), + abacDetailsForm: $a.utils.url(null, "/summa/p2p-payments-details.do"), + showAbacInfo: $a.utils.url(null, "/abac/abac-info.do"), + viewParentLink: $a.utils.url(null, "/posting-allowances/view-tar.do"), + viewRegularization: $a.utils.url(null, "/posting-allowances/regularization-view-tar.do") + + } + }; + this.preserveInvoicesTotal = true; + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model.onPostingAllowanceRetrieved,true); + + dataPoolExecutor.add("postingAllowance", $al.model._restCalls.getPostingAllowance, {travelAllowanceId: $postingAllowanceId}); + dataPoolExecutor.add("stateMachineHistory", $al.model._restCalls.getStateHistory, {postingAllowanceId: $postingAllowanceId}); + dataPoolExecutor.add("canBeRegularized", $al.model._restCalls.canBeRegularized, {postingAllowanceId: $postingAllowanceId}); + dataPoolExecutor.add("isTheParentARegularization", $al.model._restCalls.isTheParentARegularization, {postingAllowanceId: $postingAllowanceId}); + dataPoolExecutor.add("appParameters", $al.model._restCalls.appParameters, null, {paramType: "POSTING_ALLOWANCES"}); + // dataPoolExecutor.add("exchangeRatesPerMonth", $al.model._restCalls.exchangeRatesPerMonth, {currency : "ALL"}, ); + dataPoolExecutor.add("childrenPostingAllowance", $al.model.postingAllowanceCommon._restCalls.getPostingAllowancesByParent, {postingAllowanceId: $postingAllowanceId}); + + dataPoolExecutor.add("postingAllowanceComments", $al.model.postingAllowanceCommon._restCalls.getPostingAllowanceComments, {postingAllowanceId: $postingAllowanceId}); + dataPoolExecutor.add("permissions", $al.model._restCalls.permissions); + + + if (window.localStorage.getItem("iataAirports") == null) { + dataPoolExecutor.add("iataAirports", $al.model.postingAllowanceCommon._restCalls.iataAirports); + } + + dataPoolExecutor.run(); + + } + + + refreshPostingAllowance() { + $al.model.init(); + } + + refreshAfterUpdateState(data) { + $al.model._viewModel.postingAllowance.state = data.state; + $al.model.refreshPostingAllowance(); + } + + onPostingAllowanceRetrieved(data) { + + $al.model.postingAllowance = data.get("postingAllowance").data; + if (typeof $al.model.postingAllowance.postingAllowancePersons == 'undefined') { + $al.model.postingAllowance.postingAllowancePersons = {}; + } + $al.model.postingAllowanceComments = data.get("postingAllowanceComments").data; + $al.model.postingAllowance.children = data.get("childrenPostingAllowance").data; + $al.model.permissions = data.get("permissions").data; + //Map is easier to work with + var AppParametersArr = data.get("appParameters").data; + $al.model.appParameters = new Map(AppParametersArr.map(i => [i.key, i.value])); + $al.model.stateMachineHistory = data.get("stateMachineHistory").data; + $al.model.canBeRegularized = data.get("canBeRegularized").data; + $al.model.isTheParentARegularization = data.get("isTheParentARegularization").data; + if (typeof data.get("iataAirports") != "undefined") { + + window.localStorage.setItem("iataAirports", JSON.stringify(data.get("iataAirports").data)); + + + } + $al.model.iataAirports = JSON.parse(window.localStorage.getItem("iataAirports")); + + //check undefinedFields + if (typeof $al.model.postingAllowance.paymentId == "undefined") { + $al.model.postingAllowance.paymentId = ""; + $al.model.postingAllowance.paymentEventId = ""; + } + + + $al.view._initializeView(); + + if ($al.model.postingAllowance.dualPosting == 'DEL' && typeof $al.model.postingAllowance.spouseId == "number") { + $al.model.postingAllowanceCommon._restCalls.spouseTravelAllowances.execute(null, { + personId: $al.model.postingAllowance.spouseId, + year: $al.model.postingAllowance.exerciseYear + }, $al.model._onSpouseTarResponse); + } else { + $al.model._renderAndBindAndIATA(); + $al.model._viewModel.editPersonsGrid = true; + + } + $al.model.postingAllowance.savePlaceOfOriginAirport = false; + + + } + + _getIataCodesAndSpouseTar() { + $al.model.postingAllowanceCommon._restCalls.iataAirports.execute(null, null, $al.model._onDataIata); + + + } + + _onSpouseTarResponse(data) { + + if (typeof data[0] != 'undefined') { + $al.model._viewModel.spouseTravelAllowanceId = data[0].id; + } + $al.model._viewModel.editPersonsGrid = true; + + + $al.model._renderAndBindAndIATA(); + } + + _renderAndBind() { + $al.view.render(); + $al.view._bindView(); + } + + _renderAndBindAndIATA() { + + $al.model._renderAndBind(); + + + $al.model._onDataIata($al.model.iataAirports); + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }); + } + + _onDataIata(data) { + + $al.view._elements.origin_iata.data.element.kendoDropDownList({ + dataSource: data, + dataTextField: "locationName", + dataValueField: "id", + optionLabel: "Select Airport", + value: $al.model._viewModel.postingAllowance.originIataCode, + autoWidth: true, + filter: "contains", + change: function (e) { + var index = this.selectedIndex, dataItem; + var item = this.dataItem(index); + + $al.model._viewModel.postingAllowance.originIataCode = item.id; + $al.model._viewModel.postingAllowance.originAirportName = item.airportName; + $al.model._getPostingAllowancesDefault(); + $al.model.postingAllowance.savePlaceOfOriginAirport = true; + } + }); + + $al.model._viewModel.set("iataReady", true); + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } + + _getPostingAllowancesDefault() { + /*if (typeof $al.model._viewModel.postingAllowance.outgoingTripAmount == 'undefined' || $al.model._viewModel.postingAllowance.outgoingTripAmount.amount == 0 || + typeof $al.model._viewModel.postingAllowance.returnTripAmount == 'undefined' || $al.model._viewModel.postingAllowance.returnTripAmount.amount == 0) {*/ + $al.model.postingAllowanceCommon._restCalls.postingAllowancesDefault.execute(null, { + iataCodeFrom: $al.model._viewModel.postingAllowance.assignmentIataCode, + iataCodeTo: $al.model._viewModel.postingAllowance.originIataCode, + postingAllowanceType: $al.model._viewModel.postingAllowance.postingAllowanceType, + postingAllowanceReqType: 'INITIAL', + exerciseYear: $al.model._viewModel.postingAllowance.exerciseYear + + }, $al.model._onGetPostingAllowancesDefaultResponse); + + + } + + _onGetPostingAllowancesDefaultResponse(data) { + if((data.outgoingTripAmount && data.outgoingTripAmount.amount <= 1) || + (data.returnTripAmount && data.returnTripAmount.amount <= 1)){ + $al.controller.iataCodeFrom = $al.model._viewModel.postingAllowance.assignmentIataCode; + $al.controller.iataCodeTo = $al.model._viewModel.postingAllowance.originIataCode; + }else{ + $al.controller.iataCodeFrom = null; + $al.controller.iataCodeTo = null; + } + $al.model._viewModel.postingAllowance.outgoingTripAmount = data.outgoingTripAmount; + $al.model._viewModel.postingAllowance.returnTripAmount = data.returnTripAmount; + $al.controller.onChangeTripAmount(); + $al.model._updateRegularizationAmounts(); + + } + + _updateRegularizationAmounts() { + let currency = "EUR"; + const regularizeAmount = $al.model._viewModel.postingAllowance.calcTotalAmount.amount - $al.model._viewModel.postingAllowance.initialTotalAmount.amount; + let regularizeAmountTotal; + const newNumber = new Number(regularizeAmount + '').toFixed(parseInt(3)); + regularizeAmountTotal = parseFloat(newNumber); + regularizeAmountTotal = Math.round(regularizeAmountTotal * 100) / 100; + $al.model._viewModel.postingAllowance.regularizeAmount = {amount: regularizeAmountTotal, currency: currency}; + $al.model._viewModel.postingAllowance.newTotalAmount = $al.model._viewModel.postingAllowance.calcTotalAmount; + $al.view._bindView(); + } + + _onExchangeRatesByCurrencyRetrieved(data) { + $al.model.currencymonthPayment = data; + + } + + _onDataRetrievedvalidatePayment(data) { + $al.model.eventNumber = data; + var validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + invalidFormat: input => { + if (input.attr('required')) { + return input.val().length === input.val().trim().length; + } else { + return true; + } + }, + paymentDateInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_date.id + "]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + paymentOrderInvalidRightId: input => { + if (input.is("[name=" + $al.view._elements.payment_order.id + "]") && $al.model.eventNumber === 0) { + return false; + } else { + $al.model._viewModel.postingAllowance.paymentEventId = $al.model.eventNumber; + return true; + } + }, + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentOrderInvalidRightId: "The Right ID not valid", + invalidFormat: "Invalid format: remove spaces" + } + }).data("kendoValidator"); + if (validator.validate()) { + $al.controller.postingAllowanceCommon.doUpdateAndMarkAsPaidPostingAllowance(); + $a.modalDialog.hide(); + } + } +} + +class PostingAllowanceView { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.view(); + }); + this._templates = new $a.DataContainer("postingAllowance"); + this._elements = new $a.DataContainer("postingAllowance"); + + this._templates.data(new $a.KendoTemplateData()); + + + this._elements.node("invoice").node("grid").data(new $a.KendoElementData()); + + this._elements.node("payment_date").data(new $a.KendoElementData()); + this._elements.node("payment_order").data(new $a.KendoElementData()); + this._elements.node("payment_postingAllowance").data(new $a.KendoElementData()); + + this._elements.node("payment_date_div").data(new $a.KendoElementData()); + this._elements.node("payment_order_div").data(new $a.KendoElementData()); + this._elements.node("payment_postingAllowance_div").data(new $a.KendoElementData()); + this._elements.node("communication").data(new $a.KendoElementData()); + this._elements.node("communication2").data(new $a.KendoElementData()); + + + this._elements.node("comments").node("grid").data(new $a.KendoElementData()); + + this._elements.node("origin_iata").data(new $a.KendoElementData()); + + this._elements.node("origin_period_month").data(new $a.KendoElementData()); + this._elements.node("origin_period_year").data(new $a.KendoElementData()); + this._elements.node("payment_period_month").data(new $a.KendoElementData()); + this._elements.node("payment_period_year").data(new $a.KendoElementData()); + this._elements.node("iata_code_assignment").data(new $a.KendoElementData()); + this._elements.node("iata_code_assignment_code").data(new $a.KendoElementData()); + this._elements.node("iata_code_assignment_container").data(new $a.KendoElementData()); + + this._templates.node("invoice").node("grid").data(new $a.KendoTemplateData()); + + this._templates.node("calculation").data(new $a.KendoTemplateData()); + this._templates.node("calculation").node("staff").data(new $a.KendoTemplateData()); + this._templates.node("documents").node("view").data(new $a.KendoTemplateData()); + + this._templates.node("calculation").node("family").data(new $a.KendoTemplateData()); + this._templates.node("calculation").node("total").data(new $a.KendoTemplateData()); + // One footer "basic" + this._templates.node("basic").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("warn").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("mark_as_paid").node("dialog").data(new $a.KendoTemplateData(), "body"); + + this._templates.node("ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + + this._templates.node("comments").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("add_comment").data(new $a.KendoTemplateData()); + } + + render() { + $al.view._templates.data.compile(); + $al.controller._renderCommunication(); + $al.controller._renderOriginAndPaymentPeriod(); + $al.view._templates.invoice.grid.data.compile(); + + $al.view._renderInvoiceGrid(); + + + $al.controller._renderCommunication(); + + $al.view._templates.comments.grid.data.compile(); + $al.view._templates.add_comment.data.compile(); + + $al.view.postingAllowanceCommon._renderCommentsGrid(); + + if (typeof $al.model.postingAllowance.assignmentIataCode != "undefined") { + $al.view._elements.iata_code_assignment_code.data.element.html($al.model.postingAllowance.assignmentIataCode); + let airportNameArray = $al.view.getIataByCode($al.model.postingAllowance.assignmentIataCode); + + $al.view._elements.iata_code_assignment_container.data.element.attr("data-original-title", airportNameArray[0].airportName); + } + + } + + + getIataByCode(code) { + return $al.model.iataAirports.filter( + function (data) { + return data.id == code + } + ); + + } + + getAirportNameIataByCode(code) { + + let airports = $al.model.iataAirports.filter( + function (data) { + return data.id === code + } + ); + + return airports && airports.length > 0 ? airports[0].airportName : ''; + } + + renderEmptyTemplate() { + $al.view._templates.data.compile(); + } + + _renderInvoiceGrid() { + + var dataSource = new kendo.data.DataSource({ + + transport: { + read: function (options) { + options.success($al.model._viewModel.postingAllowance.postingAllowancePersons); + }, + update: function (options) { + var data = options.data; + + + // Copy data back to dataList + $al.model._viewModel.postingAllowance.postingAllowancePersons = dataSource.data().slice(); + + options.success(data); + $al.model._viewModel.changesAppliedInGrid = true; + + } + }, + data: $al.model._viewModel.postingAllowance.postingAllowancePersons, + + schema: { + model: { + id: "id", + fields: { + id: {type: "number"}, + dateOfBirth: {type: "string"}, + route: {type: "string"}, + perId: {type: "number"}, + relPerId: {type: "number"}, + trcCd: {type: "number"}, + trcCode: {type: "string"}, + tripAmount: { + amount: {type: "number"}, + currency: {type: "string"} + }, + entitledMonths: {type: "number"}, + totalAmount: { + amount: {type: "number"}, + currency: {type: "string"} + }, + cityFrom: {type: "string"}, + countryFrom: {type: "string"}, + iataCodeFrom: {type: "string"}, + cityTo: {type: "string"}, + countryTo: {type: "string"}, + iataCodeTo: {type: "string"}, + remarks: {type: "string"}, + firstName: {type: "string"}, + surname: {type: "string"}, + workInDelegation: {type: "boolean"} + + + }, + DetailTotalAmountEur: function () { + // if(this.entitledMonths == 0){ + // return 0; + // } + if (typeof this.tripAmount == "undefined") { + this.tripAmount = {amount: 0, currency: 'EUR'} + return 0; + } + + return this.tripAmount.amount * (this.entitledMonths / 12); + } + } + }, + aggregate: [ + {field: "DetailTotalAmountEur()", aggregate: "sum"}, + ] + }); + + + var columns_desc = [ + {hidden: true, field: "id"}, + { + field: "Name", + title: "Name", + attributes: {class: "pl-2 pr-0 font-weight-medium"}, + headerAttributes: {class: "pl-2"}, + template: $al.view.surnameFieldTemplate, + width: "18%", + editor: $al.view.nameNoEditTemplate + }, + { + title: " ", + field: "workInDelegation", + template: " ", + editor: $al.view.entitleSpouseWork, + width: "2%", + attributes: {class: "pl-0"}, + }, + { + field: "trcCode", + title: "Relationship", + attributes: {class: "px-0"}, + headerAttributes: {class: "px-2"}, + width: "11%", + editor: $al.view.nonEditor + }, + { + field: "dateOfBirth", + title: "Birth Date", + width: "11%", + editor: $al.view.dateOfBirthNoEditTemplate, + template: "#= kendo.toString(kendo.parseDate(dateOfBirth), 'dd MMM yyyy') #", + }, + { + field: "route", + title: "Destination", + headerTemplate: "
    Destination information", + editor: $al.view.routeDropDownEditor, + template: $al.view.routeFieldTemplate, + }, + { + field: "tripAmount.amount", + title: "Price", + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: $al.view.tripAmountTemplate, + editor: $al.view.nonEditor, + footerAttributes: {class: "text-right pl-0"}, + width: "11%", + }, + { + field: "entitledMonths", + title: "Entitled Months", + headerTemplate: "
    Months information
    ", + headerAttributes: {class: "text-right pl-0", style: "padding-bottom: 10px"}, + attributes: {class: "text-right pl-0"}, + template: "#= entitledMonths # / 12", + editor: $al.view.entitleMonthDropDownEditor, + width: "10%" + }, + { + field: "DetailTotalAmountEur()", + title: "Total", + aggregates: ["sum"], + attributes: {class: "text-right pl-2"}, + headerAttributes: {class: "text-right pl-2"}, + template: "#= kendo.toString(DetailTotalAmountEur(), \"n2\") # EUR", + footerTemplate: "#= kendo.toString($al.model._viewModel.postingAllowance.calcTotalAmount.amount, \"n2\") # EUR ", + footerAttributes: {class: "text-right pl-0"}, + editor: " ", + width: "12%" + }, + { + command: [ + { + name: "edit", + template: "", + text: {edit: "", update: "", cancel: ""} + } + ], + width: "90px", + attributes: {class: "pl-0 pr-1 pr-lg-2 py-2 text-right text-nowrap"}, + headerAttributes: {class: "col-command"}, + hidden: !$al.model._viewModel.isInvoiceGridEnabled + } + ]; + + $al.view._elements.invoice.grid.data.element.kendoGrid({ + + dataSource: dataSource, + + noRecords: { + template: "" + }, + scrollable: false, + sortable: false, + resizable: false, + + columns: columns_desc, + + editable: "inline", + dataBound: $al.view._onDataBound, + cancel: function (e) { + //insert into the dropdown the entMax ceiling, when the insert was done just now + + + // prevent page scroll position change + e.preventDefault(); + + + dataSource.cancelChanges(this); + var container = this.wrapper.children(".k-grid-content"); // or ".k-virtual-scrollable-wrap" + + this.refresh(); + }, + beforeEdit: function (e) { + + + }, + + }); + + $al.view._elements.invoice.grid.data.component = "kendoGrid"; + + } + + + _initializeView() { + + var viewModel = new kendo.data.Model.define(); + $al.model.postingAllowance = $al.controller.postingAllowanceCommon.preparePostingAllowanceForModelView(); + + $al.model._viewModel = new viewModel({ + isVisible: true, + message: " ", + name: $al.model.postingAllowance.staffMember.lastName + ' ' + $al.model.postingAllowance.staffMember.firstName, + perId: $al.model.postingAllowance.staffMember.id, + postingAllowance: $al.model.postingAllowance, + entMax: $al.model.entMax, + editPersonsGrid: false, + + exchangeRates: $al.model.exchangeRates, + + bankInfo: $al.model.bankInfo, + + + isBackOffice: $isBackOffice, + + commentsVisible: $isBackOffice || $al.view.postingAllowanceCommon._thereAreComments(false), + + + // --- Comments logic --- + canAddComments: $isBackOffice, + canDeleteComments: false, + displayChildrenPostingAllowance: true, + changesAppliedInGrid: false, + + // This is a switch: the button disappears when the text area is visible. Initial value: visible + showCommentButton: true, + showCommentInput: function () { + this.set("showCommentButton", false); + $al.view.postingAllowanceCommon._scrollToBottom(); + $('textarea.autoSize').autosize(); + }, + // ---------------------- + + onSubmit: function () { + + if ($al.view._validations()) { + + // RIGD-1924 After the validation, we finally warn te user about the exact consequences of this submit + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.confirmation.submit_confirmation_title, + $al.view.postingAllowanceCommon._templates.warn.dialog.body.template({ + body_message: $al.controller._languageBundle.confirmation.submit_confirmation_message_html, + render_html: true + }), + $al.view.postingAllowanceCommon._templates.ok_cancel.dialog.footer.template( + {ok_callback: '$al.controller.doSubmitPostingAllowance()'}) + ); + } + + }, + onSaveAndApprovePostingAllowance: function () { + if ($al.view._validations()) { + $al.model._viewModel.postingAllowance.saveChanges = false; + $al.model._viewModel.postingAllowance.iataCodeFrom = null; + $al.model._viewModel.postingAllowance.iataCodeTo = null; + $al.controller.doSaveAndApprovePostingAllowance(); + } + }, + onRejectPostingAllowance: function () { + $al.controller.doUpdateAndRejectPostingAllowance(); + }, + showMarkAsPaidDialog: function () { + $al.controller.doShowMarkAsPaidDialog(); + }, + onDiscardChanges: function () { + $al.controller.refreshPage(); + }, + onCancelPostingAllowance: function () { + $al.controller.doCancelPostingAllowance(); + }, + onSaveDraftAndSubmit: function () { + $al.model._viewModel.postingAllowance.saveChanges = false; + $al.model._viewModel.postingAllowance.iataCodeFrom = null; + $al.model._viewModel.postingAllowance.iataCodeTo = null; + // We are saving changes in DB, so we go back to 'preserveInvoicesTotal' + $al.model.preserveInvoicesTotal = true; + if ($al.view._validations()) { + $al.controller.doSubmitPostingAllowance(); + } + }, + + onSaveDraft: function () { + + // We are saving changes in DB, so we go back to 'preserveInvoicesTotal' + $al.model.preserveInvoicesTotal = true; + $al.model._viewModel.postingAllowance.saveChanges = true; + $al.model._viewModel.postingAllowance.iataCodeFrom = $al.controller.iataCodeFrom; + $al.model._viewModel.postingAllowance.iataCodeTo = $al.controller.iataCodeTo; + $al.controller.doSaveDraftPostingAllowance(); + }, + onCreateTopupPostingAllowance() { + $al.controller.postingAllowanceCommon.createTopupPostingAllowance($al.model._viewModel.postingAllowance.id, $al.model._viewModel.postingAllowance.postingAllowanceType); + }, + + onSave: function () { + if ($al.view._draftValidations()) { + // We are saving changes in DB, so we go back to 'preserveInvoicesTotal' + $al.model.preserveInvoicesTotal = true; + $al.model._viewModel.postingAllowance.saveChanges = true; + $al.model._viewModel.postingAllowance.iataCodeFrom = $al.controller.iataCodeFrom; + $al.model._viewModel.postingAllowance.iataCodeTo = $al.controller.iataCodeTo; + $al.controller.doSavePostingAllowance(); + } + }, + onResubmit: function () { + $al.controller.doResubmit(); + }, + onRegularize: function () { + $al.controller.doRegularize(); + }, + showAbacInfo: function () { + $al.controller.doShowAbacInfo(); + }, + onRefreshAbacInfo: function () { + $al.controller.postingAllowanceCommon.doRefreshAbacInfoAndRefresh(); + + }, + saveAndInitiatePayment: function () { + if ($al.view._initiatePaymentValidations()) { + $al.controller._saveAndInitiatePayment(); + } + + }, + viewParentLink: function () { + $al.controller.doViewParentLink(); + }, + refreshPlaceOfOrigin() { + $al.controller._refreshPlaceOfOrigin(); + }, + displayClaimApproveRejectButtons: false, + showActionsBox: false, + canApprove: false, + canReject: false, + canMarkAsPaid: false, + canPayAbac: false, + isTotalAmountDisabled: true, + canEditGrid: false, + canCancel: false, + canDiscardChanges: false, + showPaymentInfo: false, + showPaymentAbacInfoLink: false, + someClaimRejected: false, + isDraft: false, + isAwaiting: false, + isApproved: false, + isPaid: false, + isRejected: false, + detailTypeOrderCategories: ["PERSONAL BELONGINGS", "VEHICLE", "STORAGE"], + appParameters: $al.model.appParameters, + sumOfSectionsTotalPersonal: 0, + sumOfSectionsTotalVehicle: 0, + sumOfSectionsTotalStorage: 0, + totalAmountApproved: 0, + canEditTotalAmount: false, + outgoingText: typeof $al.model.postingAllowance.originCityName == "undefined" ? "No Origin" : $al.model.postingAllowance.originCityName + ", " + $al.model.postingAllowance.originCountryName, + returnText: typeof $al.model.postingAllowance.assignmentCityName == "undefined" ? "No Destination" : $al.model.postingAllowance.assignmentCityName + ", " + $al.model.postingAllowance.assignmentCountryCode, + isOriginAirportEnabled: true, + isOriginPeriodEnabled: false, + isPaymentPeriodEnabled: true, + isInvoiceGridEnabled: true, + showAlertNoPlaceOfOrigin: typeof $al.model.postingAllowance.originCityName == "undefined" ? true : false, + canRefreshPlaceOriginFromSySper: true, + canAccessPostingAllowance: false, + canOwnAtLeastOnePostingAllowance: false, + canConsult: false, + canShowParentLink: true, + canShowChildPostingAllowanceLink: false, + }); + + if ($a.utils.isNotNull($al.model._viewModel.postingAllowance.postingAllowanceDetails)) { + $al.model._viewModel.postingAllowance.postingAllowanceDetails = $al.model.postingAllowance.postingAllowanceDetails; + } else { + $al.model._viewModel.postingAllowance.postingAllowanceDetails = []; + } + if ($a.utils.isNotNull($al.model.postingAllowance.extraPostingAllowanceDetails)) { + $al.model._viewModel.postingAllowance.extraPostingAllowanceDetails = $al.model.postingAllowance.extraPostingAllowanceDetails; + } else { + $al.model._viewModel.postingAllowance.extraPostingAllowanceDetails = []; + } + + + $al.controller.modelPermissions(); + + + } + + _initiatePaymentValidations() { + let validationErrors = $al.view._validateBeforeInitiatingPayment(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + _validateBeforeInitiatingPayment() { + let messages = []; + + if ($al.model._viewModel.postingAllowance.totalAmount.amount < 0) + messages.push($al.controller._languageBundle.validations.total_removal_amount_should_be_positive); + + return messages; + } + + + _thereIs_Abac_BankAccount(bankAccounts) { + + if (typeof bankAccounts === "undefined" || !bankAccounts.length) { + return false; + } + for (const acc of bankAccounts) { + if (acc.lef || acc.baf) { + return true; + } + } + return false; + } + + + _validations() { + var validationErrors = $al.view._validateBeforeUpdatingDeclaration(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + + lineValidation(input) { + + if (input.is("[name='monthPaymentDropDownList']")) { + + if (input[0].value === "Select Month") { + var stateDropDown = $("#routePersonalDropDownList").data("kendoDropDownList"); + + if (stateDropDown.value() === 'EUR') { + + return true; + } else { + return false; + } + + } + + + } + + return true; + } + + + _validateBeforeUpdatingDeclaration() { + $al.controller.validate(); + var errorMessages = []; + + + return errorMessages; + } + + _draftValidations() { + + // Validate the bank account + var validationErrors = $al.view.postingAllowanceCommon.validateMandatoryBankAccount($al.model._viewModel.postingAllowance.state); + + // Validate invoices (Removal and Unforeseen). false means we are in draft, not in submit + validationErrors = validationErrors.concat($al.view._validateInvoices(false)); + + + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + + // Get Invoices validation error messages or empty array if OK. + _validateInvoices(isSubmit) { + + var messages = []; + var invoices = $al.model._viewModel.postingAllowance.postingAllowanceDetails; + var unfo_invoices = $al.model._viewModel.postingAllowance.extraPostingAllowanceDetails; + + // Used to avoid repeated messages + var missing_field_msg = false; + var missing_attach_msg = false; + + // For submit: Validate that there is at least one removal invoice and all attachs are ok (removal invoice and unforeseen invoice) + if (isSubmit) { + if (!invoices || invoices.length === 0) { + // There are no invoices + messages.push($al.controller._languageBundle.validations.no_invoices_added); + } else { + // Check that all the attachs are ok in removal invoices + for (const invo_item of invoices) { + if (!$al.view._checkAttachmentTypes(invo_item.attachments, ['INVOICE', 'PROOF_OF_PAYMENT', 'TRANSPORT_OWNERSHIP_PROOF'])) { + messages.push($al.controller._languageBundle.validations.some_invoices_missing_attachments); + missing_attach_msg = true; + break; + } + } + } + // Also for 'submit': Check that all the attachs are ok in unforeseen invoices + if (unfo_invoices && unfo_invoices.length && !missing_attach_msg) { + for (const unfo_item of unfo_invoices) { + if (!$al.view._checkAttachmentTypes(unfo_item.attachments, ['UNFORESEEN_INVOICE', 'BANK_STATEMENT'])) { + messages.push($al.controller._languageBundle.validations.some_invoices_missing_attachments); + break; + } + } + } + } + + // In any case (submit or draft) + + + // Return array of accumulated error messages or empty array if everything OK + return messages; + } + + // Check all the typeNames are present in attachs + _checkAttachmentTypes(attachs, typeNames) { + + if (!attachs || attachs.length == 0) { + // Array of attachments is empty + return false; + } + + for (const typeN of typeNames) { + var found = false; + for (const att of attachs) { + if (att.attachmentType === typeN) { + found = true; + break; + } + } + if (!found) { + return false; + } + } + // All found + return true; + } + + _cleanRemovedAttachments(invoice_entry) { + + if (!invoice_entry.attachments) { + // No attachments, ok: + return invoice_entry; + } + + var clean_attachs = []; + invoice_entry.attachments.forEach(attach => { + if (attach.fileName) { + // Preserve the ones where 'fileName' is not null (it's null for removed attachments) + clean_attachs.push(attach); + } + }); + // Overwrite 'attachments' field: + invoice_entry.attachments = clean_attachs; + return invoice_entry; + } + + _validateJustification() { + + // Check at least one comment + var valid = $al.view.postingAllowanceCommon._thereAreComments(true); + + if (!valid) { + $a.toast.showError($al.controller._languageBundle.alerts.justification_is_mandatory_for_adv_rem_reject); + $al.view.postingAllowanceCommon.showMissingCommentMessage('REGULARIZATION'); + } + return valid; + } + + + _showWarnDialog(title, messages) { + $a.modalDialog.showAnswer(null, title, + $al.view._templates.warn.dialog.body.template( + { + body_message: "
  • " + messages.join("
  • "), + validation_message: $al.controller._languageBundle.alerts.validation_message + }), + $al.view._templates.basic.dialog.footer.template({}) + ); + } + + _bindView() { + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + $('[data-toggle="tooltip"]').tooltip(); + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }); + } + + + tripAmountTemplate(dataItem) { + if (typeof dataItem.tripAmount == "undefined") { + dataItem.tripAmount = {amount: 0, currency: 'EUR'} + } + return kendo.toString(dataItem.tripAmount.amount, "n2") + ' ' + dataItem.tripAmount.currency + ""; + + } + + routeFieldTemplate(dataItem) { + if (dataItem.route == 'OUTGOING') { + return $al.model._viewModel.outgoingText; + } + return $al.model._viewModel.returnText; + } + + surnameFieldTemplate(dataItem) { + let returnvalue = dataItem.surname + ' ' + dataItem.firstName; + + if (dataItem.trcCd == -1 && dataItem.workInDelegation) { + returnvalue = dataItem.surname + ' ' + dataItem.firstName; + } else if (dataItem.workInDelegation) { + if (typeof $al.model._viewModel.spouseTravelAllowanceId == 'undefined') { + returnvalue = dataItem.surname + ' ' + dataItem.firstName + 'Travel request not found.\">people'; + } else { + var linkToSpouseTar = $a.utils.formatUrl($al.model.postingAllowanceCommon.urls.action.viewPostingAllowance, null, {postingAllowanceId: $al.model._viewModel.spouseTravelAllowanceId}); + + if ($al.model._viewModel.isBackOffice) { + returnvalue = dataItem.surname + ' ' + dataItem.firstName + 'Click to open the spouse′s request.\">people'; + } else { + returnvalue = dataItem.surname + ' ' + dataItem.firstName + 'people'; + } + } + + } + if (dataItem.workInHQ) { + returnvalue = dataItem.surname + ' ' + dataItem.firstName + 'people'; + } + return returnvalue; + } + + routeDropDownEditor(container, options) { + + + var dataSourceRoutes = new kendo.data.DataSource({ + data: [ + {route: 'OUTGOING', routeText: $al.model._viewModel.outgoingText}, { + route: 'RETURN', + routeText: $al.model._viewModel.returnText + } + + ] + }); + + let textField = $al.view.routeFieldTemplate(options.model); + + + let dropdownlist = $('') + .appendTo(container) + .kendoDropDownList({ + + dataTextField: "routeText", + dataValueField: "route", + dataSource: dataSourceRoutes, + autoWidth: true, + + change: $al.controller.onChangeRoute, + + }); + + } + + entitleMonthDropDownEditor(container, options) { + + let dropdownlist = $('') + .appendTo(container) + .kendoDropDownList({ + dataSource: $al.model.postingAllowanceCommon.dataSourceMonthsEntitled, + dataTextField: "month", + dataValueField: "month", + placeHolder: 'Month', + enable: true, + + //optionLabel: 'EUR', + autoWidth: true, + + change: $al.controller.onChangeEntitleMonths, + }); + + } + + entitleSpouseWork(container, options) { + if (options.model.trcCd != -1) { // we do not show for staff member + let dropdownlist = $('') + .appendTo(container) + .kendoDropDownList({ + dataSource: $al.model.postingAllowanceCommon.dataSourceSpouseWork, + dataTextField: "work", + dataValueField: "work", + placeHolder: 'work', + enable: true, + + //optionLabel: 'EUR', + autoWidth: true, + autoBind: false, + change: $al.controller.onChangeSpouseWork, + }); + } + + } + + + nonEditor(container, options) { + container.text(options.model[options.field]); + container.removeClass("k-edit-cell"); + } + + nameNoEditTemplate(container, options) { + + container.text(options.model.surname + " " + options.model.firstName); + container.removeClass("k-edit-cell"); + + + } + + dateOfBirthNoEditTemplate(container, options) { + + container.text(kendo.toString(kendo.parseDate(options.model.dateOfBirth), 'dd MMM yyyy')); + container.removeClass("k-edit-cell"); + + + } + + _onDataBound(e) { + + this.wrapper.find(".k-reset").hide(); + + let total = 0, currency = "EUR", items = e.sender.items(); + items.each(function () { + var dataItem = e.sender.dataItem(this); + if (typeof dataItem.tripAmount == "undefined") { + dataItem.tripAmount = {amount: 0, currency: currency}; + } + var totalAmount = { + amount: Number(dataItem.tripAmount.amount * (dataItem.entitledMonths / 12)), + currency: dataItem.tripAmount.currency + }; + dataItem.familyWorkStatus = ""; + if (dataItem.workInDelegation) { + dataItem.familyWorkStatus = 'DEL'; + } else if (dataItem.workInHQ) { + dataItem.familyWorkStatus = 'HQ'; + } + + total += Number(totalAmount.amount); + currency = dataItem.tripAmount.currency; + + if (dataItem.entitledMonths > 0) { + this.className += " k-state-selected"; + } else { + this.className += " k-state-muted"; + } + + + }); + const newNumber = new Number(total + '').toFixed(parseInt(3)); + total = parseFloat(newNumber); + + + total = Math.round(total * 100) / 100; + $al.model._viewModel.postingAllowance.calcTotalAmount = {amount: total, currency: currency}; + if ($al.model._viewModel.editPersonsGrid) { + if (typeof $al.model._viewModel.postingAllowance.newTotalAmount == 'undefined'){ + $al.model._viewModel.postingAllowance.newTotalAmount = {amount: 0, currency: currency}; + } + const regularizeAmount= $al.model._viewModel.postingAllowance.newTotalAmount.amount - $al.model._viewModel.postingAllowance.initialTotalAmount.amount; + let regularizeAmountTotal; + const newNumber = new Number(regularizeAmount + '').toFixed(parseInt(3)); + regularizeAmountTotal = parseFloat(newNumber); + regularizeAmountTotal = Math.round(regularizeAmountTotal * 100) / 100; + $al.model._viewModel.postingAllowance.regularizeAmount = {amount: regularizeAmountTotal, currency: currency}; + + } + + + if (typeof $al.model._viewModel.postingAllowance.newTotalAmount == 'undefined' || $al.model._viewModel.postingAllowance.newTotalAmount.amount === 0 || $al.model._viewModel.changesAppliedInGrid) { + $al.model._viewModel.postingAllowance.newTotalAmount = {amount: total, currency: currency}; + $al.model._viewModel.changesAppliedInGrid = false; + if (typeof $al.model._viewModel.postingAllowance.newTotalAmount == 'undefined'){ + $al.model._viewModel.postingAllowance.newTotalAmount = {amount: 0, currency: currency}; + } + const regularizeAmount= $al.model._viewModel.postingAllowance.newTotalAmount.amount - $al.model._viewModel.postingAllowance.initialTotalAmount.amount; + let regularizeAmountTotal = 0; + const newNumber = new Number(regularizeAmount + '').toFixed(parseInt(3)); + regularizeAmountTotal = parseFloat(newNumber); + regularizeAmountTotal = Math.round(regularizeAmountTotal * 100) / 100; + $al.model._viewModel.postingAllowance.regularizeAmount = {amount: regularizeAmountTotal, currency: currency}; + } + + $al.view._bindView(); + + //$al.view._calculateTotalsAndRender(); + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }); + + const grid = $("#postingAllowance-invoice-grid").data("kendoGrid"); + grid.footer.find('#aggregationSum').html(`${kendo.toString($al.model._viewModel.postingAllowance.calcTotalAmount.amount, "n2")} EUR`); + } + + alignTotal() { + // align total in summary wrapper + var colWidthInvoice = $(".col-invoice").width() + 24; + var colWidthStatement = $(".col-statement").width() + 24; + var colWidthCommand = 0; + if ($(".col-command").css('display') !== 'none') { + var colWidthCommand = $(".col-command").width() + 24; + } + var offsetRight = colWidthInvoice + colWidthStatement + colWidthCommand; + $(".resizeMeToAlignTotal").width(offsetRight - 10); + } + + _calculateTotalsAndRender() { + + if (typeof $al.model._viewModel.totalAmountRemovalInvoices === "undefined" || + typeof $al.model._viewModel.postingAllowance.sumOfSectionsUnforeseenAmount === "undefined") { + // Avoid first call when data is not available + return; + } + + if (typeof $al.model._viewModel.postingAllowance.calculatedTotalAmount === "undefined") { + $al.model._viewModel.postingAllowance.calculatedTotalAmount = {amount: '', currency: 'EUR'}; + } + + $al.model._viewModel.postingAllowance.calculatedTotalAmount.amount = Number($al.model._viewModel.totalAmountRemovalInvoices) + Number($al.model._viewModel.postingAllowance.sumOfSectionsUnforeseenAmount); + $al.model._viewModel.postingAllowance.calculatedTotalAmount.amountFormatted = kendo.toString($al.model._viewModel.postingAllowance.calculatedTotalAmount.amount, "n2"); + $al.model._viewModel.postingAllowance.calculatedTotalAmount.amount = $al.model._viewModel.postingAllowance.calculatedTotalAmount.amount.toFixed(2); + if (($al.model._viewModel.postingAllowance.state === 'DRAFT' || $al.model._viewModel.postingAllowance.state === 'AWAITING') + && typeof $al.model._viewModel.postingAllowance.totalAmount !== "undefined") { + //it is comming from being approve so we need to remove the total amount not to be shown + // if ($al.model.previousCalculatedTotalAmount == 0) { + // delete $al.model._viewModel.postingAllowance.totalAmount; + // } + + if (!$al.model.preserveInvoicesTotal) { + delete $al.model._viewModel.postingAllowance.totalAmount; + } + } + + + if (typeof $al.model._viewModel.postingAllowance.totalAmount === "undefined") { + // it is a new postingAllowance or draft so we should use the calculated amount + $al.model._viewModel.postingAllowance.totalAmount = {amount: '', currency: 'EUR'}; + + $al.model._viewModel.postingAllowance.totalAmount.amount = Number($al.model._viewModel.totalAmountRemovalInvoices) + Number($al.model._viewModel.postingAllowance.sumOfSectionsUnforeseenAmount); + + } else { + //It is defined so this in a state that is not draft, so we show the totalamount that is the approve amount + $al.model._viewModel.postingAllowance.totalAmount.amount = Number($al.model._viewModel.postingAllowance.totalAmount.amount); + + + } + + $al.model._viewModel.postingAllowance.totalAmount.amount = $al.model._viewModel.postingAllowance.totalAmount.amount.toFixed(2); + $al.model._viewModel.postingAllowance.totalAmount.amountFormatted = kendo.toString($al.model._viewModel.postingAllowance.totalAmount.amount, "n2"); + + $al.model._viewModel.totalAmountRemovalInvoicesFormatted = kendo.toString(parseFloat($al.model._viewModel.totalAmountRemovalInvoices), "n2"); + $al.model._viewModel.postingAllowance.sumOfSectionsUnforeseenAmountFormatted = kendo.toString(parseFloat($al.model._viewModel.postingAllowance.sumOfSectionsUnforeseenAmount), "n2"); + + //var wrapper = e.sender.element.find(".summaryWrapper"); + var wrapper = $(".summaryWrapper") + + wrapper.find("#totalAmountRemovalInvoicesWrapper").html("
    " + $al.model._viewModel.totalAmountRemovalInvoicesFormatted + " EUR
    "); + wrapper.find("#totalUnforeseenAmountWraper").html("
    " + $al.model._viewModel.postingAllowance.sumOfSectionsUnforeseenAmountFormatted + " EUR
    "); + wrapper.find("#totalInvoicesAndUnforeseenWraper").html("
    " + $al.model._viewModel.postingAllowance.totalAmount.amountFormatted + " EUR
    "); + wrapper.find("#initialAmount").html("
    " + $al.controller._languageBundle.initial_amount + "
    " + $al.model._viewModel.postingAllowance.calculatedTotalAmount.amountFormatted + "
    "); + + + $al.view._bindView(); + } + + entitleMonthsEditor(container, options) { + $('') + .appendTo(container) + .kendoNumericTextBox({ + + decimals: 0, + spinners: false, + placeholder: "0" + }); + } + +} + +class PostingAllowanceController { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.controller(); + }); + this._languageBundle = null; + this.iataCodeFrom = null; + this.iataCodeTo = null; + this.isRegularizationCreated = false; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.postingAllowances", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + + $al.model.init(); + $al.notifyOnReadyMvc(); + } + + doSaveAndApprovePostingAllowance() { + $al.model._restCalls.updatePostingAllowance.execute({travelAllowanceId: $postingAllowanceId}, null, $al.model._viewModel.postingAllowance, $al.controller._updatePostingAllowanceResponse,null,null,true); + } + + validateBeforeUpdate(action) { + let everythingOk = false; + if ("APPROVE" == action) { //check the periods + if ($al.model._viewModel.postingAllowance.originPeriodYear < $al.model._viewModel.postingAllowance.paymentPeriodYear) { + everythingOk = true; + } else if ($al.model._viewModel.postingAllowance.originPeriodYear > $al.model._viewModel.postingAllowance.paymentPeriodYear) { + everythingOk = false; + } else if ($al.model._viewModel.postingAllowance.originPeriodYear == $al.model._viewModel.postingAllowance.paymentPeriodYear) { + if ($al.model._viewModel.postingAllowance.originPeriodMonth <= $al.model._viewModel.postingAllowance.paymentPeriodMonth) { + everythingOk = true; + } else { + everythingOk = false; + } + } + + } + if (!everythingOk) { + $a.toast.showError("Payment period should be bigger or equal to origin period"); + } + + + return everythingOk; + + } + + doSubmitPostingAllowance() { + $al.model._restCalls.updatePostingAllowance.execute({travelAllowanceId: $postingAllowanceId}, null, $al.model._viewModel.postingAllowance, $al.controller._submitPostingAllowanceResponse,null,null,true); + } + + + _submitPostingAllowanceResponse(data) { + var muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + $al.model._restCalls.changeStatePostingAllowance.execute({ + postingAllowanceId: $postingAllowanceId, + stateMachineEvent: 'SUBMIT' + }, null, null, null, $al.controller._approveResponse, true, muteAnankeErrorToast); + $al.controller.savePlaceOfOriginAirport(); + } + + _updatePostingAllowanceResponse(data) { + + // We prevent the red error message and we handle the error message in '_showCreateSuccessMessage' + var muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + $al.model._restCalls.changeStatePostingAllowance.execute({ + postingAllowanceId: $postingAllowanceId, + stateMachineEvent: 'APPROVE' + }, null, null, null, $al.controller._approveResponse, true, muteAnankeErrorToast); + $al.controller.savePlaceOfOriginAirport(); + + + } + + _submitResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.submit_postingAllowance_success); + $al.model.refreshAfterUpdateState(data); + } + + _approveResponse(data) { + + if (data.status === 200) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.approve_and_save_postingAllowance_success); + $al.model.refreshAfterUpdateState(data); + } else { + + var validationErrors = $al.controller._extractMessagesFromErrorResponse(data); + $al.view._showWarnDialog( + $al.controller._languageBundle.alerts.operation_not_permmited_posting_allowance, validationErrors); + } + + } + + _extractMessagesFromErrorResponse(response) { + var text = response.responseText; + var textObj = null; + try { + textObj = JSON.parse(text); + } catch (parseExc) { + // Do nothing, textObj remains null + } + var messages = []; + if (textObj && textObj.items && textObj.items.length > 0) { + textObj.items.forEach(item => { + messages.push(item.message); + }); + return messages; + } else { + // Cannot parse, just return 'responseText' + return [text]; + } + } + + + doPayPostingAllowance() { + $al.model._restCalls.changeStatePostingAllowance.execute({ + postingAllowanceId: $postingAllowanceId, + stateMachineEvent: 'PAY' + }, null, null, $al.controller._payResponse,null,null,true); + } + + _payResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.pay_postingAllowance_success); + $al.model.refreshAfterUpdateState(data); + + } + + _saveAndInitiatePayment() { + /* if (typeof $al.model._viewModel.postingAllowance.budgetLine == "undefined") { + $a.toast.showWarning($al.controller._languageBundle.alerts.no_budget_line_found); + return null; + }*/ + $al.model._restCalls.updatePostingAllowance.execute({travelAllowanceId: $postingAllowanceId}, null, $al.model._viewModel.postingAllowance, $al.controller._initiatePayment,null,null,true); + } + + _initiatePayment() { + + $a.loading.toggle(true); + $al.model._restCalls.payInSysper.execute({postingAllowanceId: $postingAllowanceId}, null, null, null, $al.controller._payInSysperPostingAllowanceSuccess, true, null); + setTimeout(() => { + $a.loading.toggle(false); + }, 12000); + } + + _payInSysperPostingAllowanceSuccess(data) { + + if (data.status === 200) { + $al.controller._payResponse(data) + } else { + var validationErrors = $al.controller._extractMessagesFromErrorResponse(data); + $a.toast.showError(validationErrors); + } + } + + doShowAbacInfo() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.showAbacInfo, null, + { + postingAllowanceId: $postingAllowanceId, + postingAllowanceType: "TotalRemPostingAllowance" + }) + ); + } + + //Reject + + //update postingAllowance and then call doRejectPostingAllowance to move postingAllowance to rejected + doUpdateAndRejectPostingAllowance() { + + if ($al.view._validateJustification()) { + if ($al.model._viewModel.postingAllowance.state == 'DRAFT') { + $al.controller.doRejectPostingAllowance(); + } else { + if ($al.model._viewModel.postingAllowance.state == 'PAID') { // in case rejecting and paid we clean abac info + $al.model.postingAllowanceCommon.clearPaymentInfo(); + } + $al.model._restCalls.updatePostingAllowance.execute({travelAllowanceId: $al.model._viewModel.postingAllowance.id}, null, $al.model._viewModel.postingAllowance, $al.controller.doRejectPostingAllowance,null,null,true); + } + + } + } + + doCancelPostingAllowance() { + $al.model._restCalls.changeStatePostingAllowance.execute({ + postingAllowanceId: $postingAllowanceId, + stateMachineEvent: 'CANCEL' + }, null, null, $al.controller._cancelPostingAllowanceResponse,null,true); + } + + doSaveDraftPostingAllowance() { + $al.model._restCalls.updatePostingAllowance.execute({travelAllowanceId: $al.model._viewModel.postingAllowance.id}, null, $al.model._viewModel.postingAllowance, $al.controller._saveDraftPostingAllowanceSuccess, null, null, true); + } + + doSaveDraftAndSubmitPostingAllowance() { + $al.model._restCalls.updatePostingAllowance.execute({travelAllowanceId: $al.model._viewModel.postingAllowance.id}, null, $al.model._viewModel.postingAllowance, $al.controller._saveDraftAndSubmitPostingAllowanceSuccess, null, null, true); + } + + _saveDraftPostingAllowanceSuccess(data) { + $al.model._viewModel.postingAllowance.saveChanges = false; + $al.controller.iataCodeFrom = null; + $al.controller.iataCodeTo = null; + $a.toast.showSuccess($al.controller._languageBundle.alerts.save_posting_allowance_changes_success_message); + $al.model.refreshAfterUpdateState(data); + $al.controller.savePlaceOfOriginAirport(); + } + + _saveDraftAndSubmitPostingAllowanceSuccess(data) { + $al.model._restCalls.changeStatePostingAllowance.execute({ + postingAllowanceId: $postingAllowanceId, + stateMachineEvent: 'SUBMIT' + }, null, $al.controller._submitPostingAllowanceComplete,null,null,true); + $al.controller.savePlaceOfOriginAirport(); + + } + + _submitPostingAllowanceComplete(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.submit_postingAllowance_success); + $al.model.refreshAfterUpdateState(data); + + } + + _savePostingAllowance(data) { + $al.controller.iataCodeFrom = null; + $al.controller.iataCodeTo = null; + $a.toast.showSuccess($al.controller._languageBundle.alerts.save_postingAllowance_success); + $al.model.refreshAfterUpdateState(data); + $al.controller.savePlaceOfOriginAirport(); + } + + doSavePostingAllowance() { + $al.model._restCalls.updatePostingAllowance.execute({travelAllowanceId: $al.model._viewModel.postingAllowance.id}, null, $al.model._viewModel.postingAllowance, $al.controller._savePostingAllowance,null,null,true); + } + + + //change the state to reject and _rejectPostingAllowanceResponse to message and refresh page + doRejectPostingAllowance() { + $al.model._restCalls.changeStatePostingAllowance.execute({ + postingAllowanceId: $postingAllowanceId, + stateMachineEvent: 'REJECT' + }, null, $al.controller._rejectPostingAllowanceResponse,null,null,true); + } + + //message and refresh page + _rejectPostingAllowanceResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.reject_postingAllowance_success); + $al.model.refreshAfterUpdateState(data); + + + } + + _cancelPostingAllowanceResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.cancel_postingAllowance_success); + $al.model.refreshAfterUpdateState(data); + } + + doRegularize() { + $al.model._restCalls.createRegularization.execute({ + postingAllowanceId: $postingAllowanceId + }, null, $al.controller._onRegularizeResponse,null ,null , true); + } + + doResubmit() { + $al.model._restCalls.changeStatePostingAllowance.execute({ + postingAllowanceId: $postingAllowanceId, + stateMachineEvent: 'RESUBMIT' + }, null, $al.controller._resubmitResponse,null,null,true); + } + + _resubmitResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.resubmit_postingAllowance_success); + $al.model.refreshAfterUpdateState(data); + + } + _onRegularizeResponse(data) { + if(data.copiedDependenciesFromPreviousAllowance){ + $a.toast.showWarning($al.controller._languageBundle.alerts.copied_regularization_warning_message); + }else{ + $a.toast.showSuccess($al.controller._languageBundle.alerts.resubmit_postingAllowance_success); + $al.controller.isRegularizationCreated = true; + } + $al.model.refreshAfterUpdateState(data); + } + + + //MARK as PAID + + //show model dialog and bind + doShowMarkAsPaidDialog() { + + + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.mark_as_paid_extra_data_title, + $al.view._templates.mark_as_paid.dialog.body.template({}), + $al.view._templates.ok_cancel.dialog.footer.template({}) + ); + $al.view._elements.payment_date.data.element.kendoDatePicker({ + value: new Date(), + parseFormats: ["dd/MM/yyyy"] + + }); + kendo.bind("#mark_as_paid_data", $al.model._viewModel.postingAllowance); + + } + + //when user click ok , we validate and call doUpdateAndMarkAsPaidPostingAllowance + doValidateAndSubmitMarkAsPaid() { + var validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + requiredFormatRightId: input => { + if (input.is("[name=" + $al.view._elements.payment_order.id + "]")) { + return !isNaN($al.view._elements.payment_order.data.element.val()); + } else { + return true; + } + }, + requiredFormatEventNumber: input => { + if (input.is("[name=" + $al.view._elements.payment_postingAllowance.id + "]")) { + return !isNaN($al.view._elements.payment_postingAllowance.data.element.val()); + } else { + return true; + } + }, + invalidFormatSpaces: input => { + if (input.attr('required')) { + return input.val().length === input.val().trim().length; + } else { + return true; + } + } + }, + messages: { + requiredFieldEmpty: "All fields are required", + requiredFormatRightId: "Only Numeric value can be encoded", + requiredFormatEventNumber: "Only Numeric value can be encoded", + invalidFormatSpaces: "Invalid format: remove spaces", + } + }).data("kendoValidator"); + if (validator.validate()) { + $al.model._restCalls.validatePayment.execute({ + rightId: $al.view._elements.payment_order.data.element.val(), + personId: $al.model.postingAllowance.staffMember.perId + }, null, $al.model._onDataRetrievedvalidatePayment,null,null,true); + } + } + + + _renderCommunication() { + $al.view._elements.communication.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#postingAllowance-communication-template").html()) + }).removeClass('k-widget k-listview'); + $al.view._elements.communication.data.component = "kendoListView"; + + $al.view._elements.communication2.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#postingAllowance-communication-template").html()) + }).removeClass('k-widget k-listview'); + $al.view._elements.communication2.data.component = "kendoListView"; + } + + + _renderOriginAndPaymentPeriod() { + + let yearBased = new Date().getFullYear().toString(), yearBasedLoopStart = Number(yearBased) + 90, + dataSourceYears = new kendo.data.DataSource({}), yearVal = yearBasedLoopStart, + finalloop = yearBasedLoopStart + 20; + if (typeof $al.model._viewModel.postingAllowance.originPeriodYear != "undefined") { + let yearBased = $al.model._viewModel.postingAllowance.originPeriodYear; + } + for (let i = yearBasedLoopStart; i <= finalloop; i++) { + dataSourceYears.add({year: i % 100, yearString: i - 100}); + } + $al.view._elements.origin_period_month.data.element.kendoDropDownList({ + dataSource: $al.model.postingAllowanceCommon.dataSourceMonths, + dataTextField: "monthString", + dataValueField: "month", + placeHolder: 'Month', + enable: true, + value: $al.model._viewModel.postingAllowance.originPeriodMonth, + autoWidth: true, + change: function (e) { + var index = this.selectedIndex, dataItem; + var item = this.dataItem(index); + + $al.model._viewModel.postingAllowance.originPeriodMonth = item.month; + } + }); + $al.view._elements.payment_period_month.data.element.kendoDropDownList({ + dataSource: $al.model.postingAllowanceCommon.dataSourceMonths, + dataTextField: "monthString", + dataValueField: "month", + placeHolder: 'Month', + enable: true, + value: $al.model._viewModel.postingAllowance.paymentPeriodMonth, + autoWidth: true, + change: function (e) { + var index = this.selectedIndex, dataItem; + var item = this.dataItem(index); + + $al.model._viewModel.postingAllowance.paymentPeriodMonth = item.month; + } + }); + $al.view._elements.origin_period_year.data.element.kendoDropDownList({ + dataSource: dataSourceYears, + dataTextField: "yearString", + dataValueField: "year", + placeHolder: 'Year', + enable: true, + value: $al.model._viewModel.postingAllowance.originPeriodYear, + autoWidth: true, + + change: function (e) { + var index = this.selectedIndex, dataItem; + var item = this.dataItem(index); + + $al.model._viewModel.postingAllowance.originPeriodYear = item.year; + } + }); + $al.view._elements.payment_period_year.data.element.kendoDropDownList({ + dataSource: dataSourceYears, + dataTextField: "yearString", + dataValueField: "year", + placeHolder: 'Year', + enable: true, + value: $al.model._viewModel.postingAllowance.paymentPeriodYear, + autoWidth: true, + change: function (e) { + var index = this.selectedIndex, dataItem; + var item = this.dataItem(index); + + $al.model._viewModel.postingAllowance.paymentPeriodYear = item.year; + } + }); + } + + _prepareCommunication(data) { + if (typeof data !== "undefined" && data !== null) { + data.forEach(n => { + if (n.arrivalState) + n.arrivalState = $al.controller._languageBundle.stateMachine[n.arrivalState.toLowerCase()]; + + }); + } + return data; + } + + //discard changes + + refreshPage() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewPostingAllowance, null, {postingAllowanceId: $postingAllowanceId})); + } + + refreshExchangeRatesPerMonth(currency) { + $al.model._restCalls.exchangeRatesPerMonth.execute({currency: currency}, null, $al.controller._onChangeCurrencyRetrieved,null,null,true); + } + + + _onChangeCurrencyRetrieved(data) { + var stateDropDown = $("#monthPaymentDropDownList").data("kendoDropDownList"); + + // changed to use another approach to set dataSource + var dataSource = new kendo.data.DataSource({ + data: data + }); + stateDropDown.setDataSource(dataSource); + } + + + onChangeEntitleMonths(e) { + var grid = $("#postingAllowance-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-grid-edit-row"); + var dataItem = grid.dataItem(row); + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + dataItem.set("totalAmount", { + amount: dataItem.tripAmount.amount * (dataItem.entitledMonths / 12), + currency: dataItem.tripAmount.currency + } + ); + + } + + onChangeSpouseWork(e) { + var grid = $("#postingAllowance-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-grid-edit-row"); + var dataItem = grid.dataItem(row); + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + + var indexDropDown = this.selectedIndex, dataItemDropDown; + dataItemDropDown = this.dataItem(indexDropDown); + if (dataItem.trcCd == 42 || dataItem.trcCd == 41) { + $al.model._viewModel.postingAllowance.dualPosting = dataItemDropDown.work; + } + + if (dataItemDropDown.work == 'DEL') { + dataItem.set("workInDelegation", true); + dataItem.set("workInHQ", false); + + } else if (dataItemDropDown.work == 'HQ') { + dataItem.set("workInDelegation", false); + dataItem.set("workInHQ", true); + $al.model._viewModel.postingAllowance.doublePosting = false; + } else { + dataItem.set("workInDelegation", false); + dataItem.set("workInHQ", false); + $al.model._viewModel.postingAllowance.doublePosting = false; + } + + } + + onChangeRoute(e) { + var grid = $("#postingAllowance-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-grid-edit-row"); + var dataItem = grid.dataItem(row); + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + if (dataItem.route == "OUTGOING") { + dataItem.set("tripAmount", $al.model._viewModel.postingAllowance.outgoingTripAmount); + } else { + dataItem.set("tripAmount", $al.model._viewModel.postingAllowance.returnTripAmount); + } + + dataItem.set("totalAmount", { + amount: dataItem.tripAmount.amount * (dataItem.entitledMonths / 12), + currency: dataItem.tripAmount.currency + } + ); + + + } + + onChangeTripAmount(e) { + var grid = $("#postingAllowance-invoice-grid").data("kendoGrid"); + grid.dataSource.data().forEach(item => { + if (item.route == "OUTGOING") { + item.set("tripAmount", $al.model._viewModel.postingAllowance.outgoingTripAmount); + } else { + item.set("tripAmount", $al.model._viewModel.postingAllowance.returnTripAmount); + } + }); + grid.dataSource.read(); + + + } + + onEuroSelection(e) { + //hide drop down and put exchange rate to 1 + var grid = $("#postingAllowance-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + dataItem.set("exchangeRate", 1); + dataItem.set("exchangePayMonth", 'Select Month'); + + } + + + onChangeWeight(e) { + + var grid = $("#postingAllowance-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + + // dataItemDropBox = e.sender.dataItem(index); + let calculateVolume = Number(e.sender.value()) * Number($al.model.appParameters.get("KGtoM3")); + + //calculateVolume=$al.view.postingAllowanceCommon.roundedToFixed(calculateVolume,2); + dataItem.set("volume", calculateVolume); + + } + + + _onUploadSuccess(event, attType, gridId) { + + + var grid = $(gridId).data("kendoGrid"); + var row = $(event.sender.element.closest("tr")); + var mRow = row.prev(".k-master-row") + var dataItem = grid.dataItem(mRow); + + if (typeof dataItem.attachments != 'undefined') { + var attachments = dataItem.attachments; + } else { + var attachments = []; + } + + if (event.operation == "remove") { + let toBeRemoved = attachments.filter(a => a.fileUid == event.files[0].fileUid)[0]; + if (typeof toBeRemoved == 'undefined') { + toBeRemoved = attachments.filter(a => a.fileUid == event.files[0].uid)[0]; + } + if (typeof toBeRemoved != 'undefined') { + toBeRemoved.remove = true; + toBeRemoved.fileName = null; + } + } else { + var attch = {}; + attch.fileUid = event.response.uid; + attch.fileName = event.response.name; + + attch.postingAllowanceDetailId = dataItem.id; + attch.attachmentType = attType; + attachments.push(attch); + } + + dataItem.set("attachments", attachments); + dataItem.dirty = true; + + $($(".k-file-name")[0]).removeAttr("title"); + } + + _detailInit(e) { + var detailRow = e.detailRow; + var model = e.data; + kendo.bind(detailRow, model); + + e.detailCell.find("textarea.autoSize").autosize(); + + var files1 = []; + var files2 = []; + var files3 = []; + + if (typeof model.get("attachments") !== "undefined") { + var modelArray = model.get("attachments"); + modelArray.forEach(att => { + if (typeof att.fileName !== "undefined" && att.remove != true) { + var attch = {}; + attch.name = '' + att.fileName + ''; + attch.title = att.fileName; + attch.extension = '.' + att.fileName.split('.').pop(); + attch.fileUid = att.fileUid; + if (att.attachmentType === "TRANSPORT_OWNERSHIP_PROOF") { + files3.push(attch); + } else if (att.attachmentType === "PROOF_OF_PAYMENT") { + files2.push(attch); + } else if (att.attachmentType === "INVOICE") { + files1.push(attch); + } + } + }); + } + + + e.detailCell.find("#claim-id1").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id1"), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.controller._onUploadSuccess(e, "INVOICE", "#postingAllowance-invoice-grid") + }, + localization: { + select: "Select File ..." + }, + files: files1 + }); + + + e.detailCell.find("#claim-id2").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id2"), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.controller._onUploadSuccess(e, "PROOF_OF_PAYMENT", "#postingAllowance-invoice-grid") + }, + localization: { + select: "Select File ..." + }, + files: files2 + }); + + e.detailCell.find("#claim-id3").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id3"), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.controller._onUploadSuccess(e, "TRANSPORT_OWNERSHIP_PROOF", "#postingAllowance-invoice-grid") + }, + localization: { + select: "Select File ..." + }, + files: files3 + }); + + } + + + validate() { + var validator = $($al.view._templates.data.wrapperSelector).kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + } + }, + messages: { + requiredFieldEmpty: "Required Field", + + } + }).data("kendoValidator"); + + + return validator.validate(); + } + + + modelPermissions() { + $al.controller.postingAllowanceCommon.modelPermissionsCommon(); + + // Create top-up permission + $al.controller.postingAllowanceCommon.setTopupPermission($al.model._viewModel.isBackOffice); + + + $al.model._viewModel.canOwnAtLeastOnePostingAllowance = $al.model.permissions.canOwnAtLeastOnePostingAllowance; + $al.model._viewModel.canConsult = $al.model.permissions.canConsult; + if ($al.model._viewModel.isBackOffice) { //BACK OFFICE permissions + + // Set flag to see the DELETE button in the comments (regardless of state) + $al.model._viewModel.canDeleteComments = $al.view.postingAllowanceCommon.hasDeleteCommentsPermission(); + $al.model._viewModel.showActionsBox = true; + //Permission to show buttons, in case of needing a security checker I do it here instead of a template + + if ($al.model._viewModel.postingAllowance.state === 'DRAFT') { + + // Show comments section only if there some. + $al.model._viewModel.canSaveAsDraft = $al.model.permissions.canSaveChanges; + $al.model._viewModel.commentsVisible = true; + // Cannot add/delete comments + $al.model._viewModel.canReject = $al.model.permissions.canReject; + $al.model._viewModel.canEditTotalAmount = $al.model.permissions.canApprove; + $al.model._viewModel.isOriginAirportEnabled = true; + if(!$al.model._viewModel.canSaveAsDraft && !$al.model._viewModel.canReject){ + $al.model._viewModel.showActionsBox = false; + $al.controller.disableAllElements(); + } + + } else if ($al.model._viewModel.postingAllowance.state === 'AWAITING') { + + $al.model._viewModel.showDivider = true; + $al.model._viewModel.canApprove = $al.model.permissions.canApprove; + $al.model._viewModel.canReject = $al.model.permissions.canReject; + $al.model._viewModel.canSave = $al.model.permissions.canSaveChanges; + $al.model._viewModel.isOriginAirportEnabled = true; + $al.model._viewModel.canEditTotalAmount = $al.model.permissions.canApprove; + $al.model._viewModel.canEditGrid = $al.model.permissions.canEditRemPostingAllowance; + $al.model._viewModel.canEditGridInline = + ( ($al.model.permissions.canEditRemPostingAllowance || $al.model.permissions.isOwner) ? {mode: "inline"} : false ); + $al.model._viewModel.canEditTotalAmount = $al.model.permissions.canApprove; + + if(!$al.model._viewModel.canApprove && + !$al.model._viewModel.canReject && + !$al.model._viewModel.canSave){ + $al.model._viewModel.showActionsBox = false; + $al.controller.disableAllElements(); + } + } else if ($al.model._viewModel.postingAllowance.state === 'APPROVED') { + + $al.model._viewModel.canReject = $al.model.permissions.canReject; + $al.model._viewModel.canPaySysper = $al.model.permissions.canPaySysper; + $al.model._viewModel.canMarkAsPaid = $al.model.permissions.canPayManually; + $al.model._viewModel.showDivider = true; + $al.model._viewModel.isOriginAirportEnabled = false; + $al.model._viewModel.isOriginPeriodEnabled = false; + $al.model._viewModel.isPaymentPeriodEnabled = false; + $al.model._viewModel.isInvoiceGridEnabled = false; + $al.model._viewModel.canEditTotalAmount = false; + $al.model._viewModel.canRefreshPlaceOriginFromSySper=false; + + if(!$al.model._viewModel.canReject && + !$al.model._viewModel.canPaySysper && + !$al.model._viewModel.canMarkAsPaid){ + $al.model._viewModel.showActionsBox = false; + } + } else if ($al.model._viewModel.postingAllowance.state === 'REJECTED') { + + $al.model._viewModel.canResubmit = $al.model.permissions.canResubmit; + $al.model._viewModel.canEditTotalAmount = false; + $al.model._viewModel.isOriginAirportEnabled = false; + $al.model._viewModel.isOriginPeriodEnabled = false; + $al.model._viewModel.isPaymentPeriodEnabled = false; + $al.model._viewModel.isInvoiceGridEnabled = false; + $al.model._viewModel.canRefreshPlaceOriginFromSySper=false; + if(!$al.model._viewModel.canResubmit){ + $al.model._viewModel.showActionsBox = false; + } + } else if ($al.model._viewModel.postingAllowance.state === 'PAID') { + $al.model._viewModel.canRegularize = $al.controller.postingAllowanceCanBeRegularized(); + $al.model._viewModel.showActionsBox = $al.model._viewModel.canRegularize; + $al.model._viewModel.showPaymentInfo = true; + $al.model._viewModel.showPaymentAbacInfoLink = true; + $al.model._viewModel.isOriginAirportEnabled = false; + $al.model._viewModel.isOriginPeriodEnabled = false; + $al.model._viewModel.isPaymentPeriodEnabled = false; + $al.model._viewModel.isInvoiceGridEnabled = false; + $al.model._viewModel.canEditTotalAmount = false; + $al.model._viewModel.canReject = false; + $al.model._viewModel.postingAllowancePaymentDateFormatted = kendo.toString(kendo.parseDate($al.model._viewModel.postingAllowance.paymentDate), 'MMM dd, yyyy'); + $al.model._viewModel.canRefreshPlaceOriginFromSySper=false; + $al.model._viewModel.canShowChildPostingAllowanceLink = $al.controller.showChildPostingAllowanceLink(); + if($al.controller.isRegularizationCreated){ + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewRegularization, null, { postingAllowanceId: $al.model._viewModel.postingAllowance.childPostingAllowanceId})); + $al.controller.isRegularizationCreated = false; + } + + } + + } else { + + $al.model._viewModel.showPaymentInfo = false; + $al.model._viewModel.showActionsBox = false; + $al.model._viewModel.isOriginAirportEnabled = false; + $al.model._viewModel.isOriginPeriodEnabled = false; + $al.model._viewModel.isPaymentPeriodEnabled = false; + $al.model._viewModel.isInvoiceGridEnabled = false; + $al.model._viewModel.postingAllowancePaymentDateFormatted = kendo.toString(kendo.parseDate($al.model._viewModel.postingAllowance.paymentDate), 'MMM dd, yyyy'); + $al.model._viewModel.canRefreshPlaceOriginFromSySper=false; + + + if ($al.model._viewModel.postingAllowance.state === 'DRAFT') { + + $al.model._viewModel.isDraft = true; + + } else if ($al.model._viewModel.postingAllowance.state === 'AWAITING') { + + $al.model._viewModel.isAwaiting = true; + + + } else if ($al.model._viewModel.postingAllowance.state === 'APPROVED') { + + $al.model._viewModel.isApproved = true; + + } else if ($al.model._viewModel.postingAllowance.state === 'REJECTED') { + + $al.model._viewModel.isRejected = true; + + } else if ($al.model._viewModel.postingAllowance.state === 'PAID') { + + $al.model._viewModel.isPaid = true; + $al.model._viewModel.showPaymentInfo = true; + $al.model._viewModel.canShowChildPostingAllowanceLink = $al.controller.showChildPostingAllowanceLink(); + } + } + if($al.model._viewModel.canOwnAtLeastOnePostingAllowance || + $al.model.permissions.hasOrganisationsWithListAuthority || + $al.model.permissions.hasOrganisationIndependentListAuthority || + $al.model._viewModel.canConsult){ + $al.model._viewModel.canAccessPostingAllowance = true; + } + + } + + //disable all option + + disableAllElements() { + $al.model._viewModel.showActionsBox = false; + $al.model._viewModel.showPaymentInfo = false; + $al.model._viewModel.showPaymentAbacInfoLink = false; + $al.model._viewModel.isOriginAirportEnabled = false; + $al.model._viewModel.isOriginPeriodEnabled = false; + $al.model._viewModel.isPaymentPeriodEnabled = false; + $al.model._viewModel.isInvoiceGridEnabled = false; + $al.model._viewModel.canEditTotalAmount = false; + $al.model._viewModel.canReject = false; + $al.model._viewModel.postingAllowancePaymentDateFormatted = kendo.toString(kendo.parseDate($al.model._viewModel.postingAllowance.paymentDate), 'MMM dd, yyyy'); + $al.model._viewModel.canRefreshPlaceOriginFromSySper = false; + } + + postingAllowanceCanBeRegularized() { + return typeof ($al.model.postingAllowance.childPostingAllowanceId + === "undefined" + || $al.model._viewModel.postingAllowance.childPostingAllowanceId + === null) && $al.model.canBeRegularized + && $al.model.permissions.canCreateRegularization; + + } + + showChildPostingAllowanceLink() { + return typeof $al.model.postingAllowance.childPostingAllowanceId !== "undefined" && $al.model._viewModel.postingAllowance.childPostingAllowanceId !== null; + } + + //refresh place of origin from sysper + doRefreshPlaceOfOrigin() { + + var muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + $al.model._restCalls.updatePlaceOfOrigin.execute({postingAllowanceId: $postingAllowanceId}, null, null, null, $al.controller.refreshPlaceOfOriginResponse, null, muteAnankeErrorToast); + } + + doViewParentLink() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewParentLink, null, + { + postingAllowanceId: $al.model._viewModel.postingAllowance.parentPostingAllowanceId, + }) + ); + } + + _refreshPlaceOfOrigin() { + $al.controller.doRefreshPlaceOfOrigin(); + } + + refreshPlaceOfOriginResponse(data) { + + if (data.status === 200) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.refresh_place_of_origin); + $al.model.refreshAfterUpdateState(data); + } else { + const validationErrors = $al.controller._extractMessagesFromErrorResponse(data); + $al.view._showWarnDialog( + $al.controller._languageBundle.alerts.refresh_place_of_origin_error_message, validationErrors); + } + + + } + + savePlaceOfOriginAirport() { + if ($al.model.postingAllowance.savePlaceOfOriginAirport) { + if (typeof $al.model.postingAllowance.originCityName != "undefined") { + let placeOriginPlace = { + //cityCode: + countryCode: $al.model._viewModel.postingAllowance.originCountryCode, + cityName: $al.model._viewModel.postingAllowance.originCityName, + iataCode: $al.model._viewModel.postingAllowance.originIataCode, + airportName: $al.model._viewModel.postingAllowance.originAirportName + } + var muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + $al.model._restCalls.savePlaceOfOriginAirportPost.execute(null, placeOriginPlace, null, null, $al.controller.savePlaceOfOriginAirportOnComplete, null, muteAnankeErrorToast); + } + } + + } + + savePlaceOfOriginAirportOnComplete(data) { + if (data.status === 200) { + $a.toast.showSuccess("Airport <=> Place of Origin mapping added for future reference"); + $al.model.refreshAfterUpdateState(data); + } else if (data.status === 409) { + $a.toast.showError( + "Place of Origin - IATA code mapping already exists. "); + $al.model.refreshAfterUpdateState(data); + } else { + const validationErrors = $al.controller._extractMessagesFromErrorResponse(data); + $al.view._showWarnDialog( + $al.controller._languageBundle.alerts.refresh_place_of_origin_error_message, validationErrors); + } + + } + + _getPlaceOfOriginAirport() { + + $al.model._restCalls.getPlaceOfOriginAirport.execute(null, { + cityName: "VEURNE", + countryCode: "BEL" + }, null, null, null, null); + + + } + + +} + +$al.mvc(PostingAllowanceModel, PostingAllowanceView, PostingAllowanceController, true); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/view.tar.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/view.tar.js new file mode 100644 index 0000000..a58bb44 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/posting-allowance/view.tar.js @@ -0,0 +1,2324 @@ +class PostingAllowanceModel { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.model(); + }); + this._restCalls = { + validatePayment: new $a.GetRestCall(null, "/internal/api/postingAllowances/getEventNumber/{rightId}/{personId}"), + getPostingAllowance: new $a.GetRestCall(null, "/internal/api/travelAllowances/{travelAllowanceId}"), + getBankInfo: new $a.GetRestCall(null, "/internal/api/bank-accounts"), + + updatePostingAllowance: new $a.PutRestCall(null, "/internal/api/travelAllowances/{travelAllowanceId}"), + getStateHistory: new $a.GetRestCall(null, "/internal/api/postingAllowances/{postingAllowanceId}/stateMachineHistory"), + changeStatePostingAllowance: new $a.PostRestCall(null, "/internal/api/postingAllowances/stateMachineEvent/{stateMachineEvent}/{postingAllowanceId}"), + permissions: new $a.GetRestCall(null, "/internal/api/posting-allowances-permissions"), + abacPay: new $a.PostRestCall(null, "/internal/api/abac/invoices"), + createRegularization: new $a.PostRestCall(null, "/internal/api/createRegularizationAllowances/{postingAllowanceId}"), + canBeRegularized: new $a.GetRestCall(null, "/internal/api/postingAllowances/{postingAllowanceId}/canBeRegularized"), + + appParameters: new $a.GetRestCall(null, "/internal/api/app-parameters"), + iataAirportCityCode : new $a.GetRestCall(null,"/internal/api/iata-airports/city/{cityCode}"), + payInSysper: new $a.PostRestCall(null, "/internal/api/postingAllowances/payInSysper/{postingAllowanceId}"), + updatePlaceOfOrigin: new $a.PostRestCall(null, "/internal/api/postingAllowances/refreshPlaceOfOrigin/{postingAllowanceId}"), + refreshDependentsAddress: new $a.PostRestCall(null, "/internal/api/postingAllowances/{postingAllowanceId}/refreshDependentsAddress"), + savePlaceOfOriginAirportPost:new $a.PostRestCall(null, "/internal/api/placeOriginAirport"), + getPlaceOfOriginAirport:new $a.GetRestCall(null, "/internal/api/placeOriginAirport"), + + }; + this.urls = { + action: { + + viewStaffMember: $a.utils.url(null, "/staffMember/view-stafMember.do"), + abacDetailsForm: $a.utils.url(null, "/summa/p2p-payments-details.do"), + showAbacInfo: $a.utils.url(null, "/abac/abac-info.do"), + viewRegularization: $a.utils.url(null, "/posting-allowances/regularization-view-tar.do") + + } + }; + this.preserveInvoicesTotal = true; + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model.onPostingAllowanceRetrieved,true); + + dataPoolExecutor.add("postingAllowance", $al.model._restCalls.getPostingAllowance, {travelAllowanceId: $postingAllowanceId}); + dataPoolExecutor.add("stateMachineHistory", $al.model._restCalls.getStateHistory, {postingAllowanceId: $postingAllowanceId}); + dataPoolExecutor.add("canBeRegularized", $al.model._restCalls.canBeRegularized, {postingAllowanceId: $postingAllowanceId}); + + dataPoolExecutor.add("appParameters", $al.model._restCalls.appParameters, null, {paramType: "POSTING_ALLOWANCES"}); + // dataPoolExecutor.add("exchangeRatesPerMonth", $al.model._restCalls.exchangeRatesPerMonth, {currency : "ALL"}, ); + dataPoolExecutor.add("childrenPostingAllowance", $al.model.postingAllowanceCommon._restCalls.getPostingAllowancesByParent, {postingAllowanceId: $postingAllowanceId}); + + dataPoolExecutor.add("postingAllowanceComments", $al.model.postingAllowanceCommon._restCalls.getPostingAllowanceComments, {postingAllowanceId: $postingAllowanceId}); + dataPoolExecutor.add("permissions", $al.model._restCalls.permissions); + + + if(window.localStorage.getItem("iataAirports") == null) { + dataPoolExecutor.add("iataAirports", $al.model.postingAllowanceCommon._restCalls.iataAirports); + } + + dataPoolExecutor.run(); + + window.addEventListener("beforeunload", function (e) { + + if(!$al.model._viewModel.changesMade){ + + return undefined; + } + const confirmationMessage = 'Are you sure you want to leave the page without saving the changes?'; + + (e || window.event).returnValue = confirmationMessage; + return confirmationMessage; + }); + + } + + + refreshPostingAllowance() { + $al.model.init(); + } + + refreshAfterUpdateState(data) { + $al.model._viewModel.postingAllowance.state = data.state; + $al.model.refreshPostingAllowance(); + } + + onPostingAllowanceRetrieved(data) { + + $al.model.postingAllowance = data.get("postingAllowance").data; + if(typeof $al.model.postingAllowance.postingAllowancePersons == 'undefined'){ + $al.model.postingAllowance.postingAllowancePersons = {}; + } + + $al.model.postingAllowance.firstNationality = $al.model.postingAllowance.firstNationality ? $al.model.postingAllowance.firstNationality : ''; + $al.model.postingAllowanceComments = data.get("postingAllowanceComments").data; + $al.model.postingAllowance.children = data.get("childrenPostingAllowance").data; + $al.model.permissions = data.get("permissions").data; + $al.model.canBeRegularized = data.get("canBeRegularized").data; + //Map is easier to work with + var AppParametersArr = data.get("appParameters").data; + $al.model.appParameters = new Map(AppParametersArr.map(i => [i.key, i.value])); + $al.model.stateMachineHistory = data.get("stateMachineHistory").data; + + if (typeof data.get("iataAirports") !== "undefined") { + + const payload = { + createdAt: Date.now(), // milliseconds + data: data.get("iataAirports").data + }; + + window.localStorage.setItem( + "iataAirports", + JSON.stringify(payload) + ); + } + + + const TEN_DAYS_MS = 10 * 24 * 60 * 60 * 1000; + + const stored = window.localStorage.getItem("iataAirports"); + + if (stored) { + const parsed = JSON.parse(stored); + const isExpired = + !parsed.createdAt || + (Date.now() - parsed.createdAt) > TEN_DAYS_MS; + + if (isExpired) { + window.localStorage.removeItem("iataAirports"); + $al.model.iataAirports = null; // triggers refresh from server + } else { + $al.model.iataAirports = parsed.data; + } + } else { + $al.model.iataAirports = null; // not present → fetch from server + } + + //check undefinedFields + if(typeof $al.model.postingAllowance.paymentId == "undefined"){ + $al.model.postingAllowance.paymentId = ""; + $al.model.postingAllowance.paymentEventId = ""; + } + + + $al.view._initializeView(); + + if( $al.model.postingAllowance.dualPosting == 'DEL' && typeof $al.model.postingAllowance.spouseId == "number" ){ + $al.model.postingAllowanceCommon._restCalls.spouseTravelAllowances.execute(null, {personId : $al.model.postingAllowance.spouseId, year: $al.model.postingAllowance.exerciseYear }, $al.model._onSpouseTarResponse ); + }else{ + $al.model._renderAndBindAndIATA(); + $al.model._viewModel.editPersonsGrid = true; + + } + $al.model.postingAllowance.savePlaceOfOriginAirport =false; + + + } + + _getIataCodesAndSpouseTar() { + $al.model.postingAllowanceCommon._restCalls.iataAirports.execute(null, null, $al.model._onDataIata); + + + } + + _onSpouseTarResponse(data){ + + if(typeof data[0] != 'undefined'){ + $al.model._viewModel.spouseTravelAllowanceId = data[0].id; + } + + + $al.model._renderAndBindAndIATA(); + } + _renderAndBind(){ + $al.view.render(); + $al.view._bindView(); + } + + _renderAndBindAndIATA(){ + + $al.model._renderAndBind(); + + + $al.model._onDataIata( $al.model.iataAirports); + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }); + } + _onDataIata(data){ + + $al.view._elements.origin_iata.data.element.kendoDropDownList({ + dataSource: data, + dataTextField: "locationName", + dataValueField: "id", + optionLabel: "Select Airport", + value: $al.model._viewModel.postingAllowance.originIataCode, + autoWidth: true, + filter: "contains", + change: function (e) { + + $al.model._viewModel.changesMade = true; + var index = this.selectedIndex, dataItem; + var item = this.dataItem(index); + + $al.model._viewModel.postingAllowance.originIataCode=item.id; + $al.model._viewModel.postingAllowance.originAirportName=item.airportName; + $al.model._getPostingAllowancesDefault(); + $al.model.postingAllowance.savePlaceOfOriginAirport = true; + } + }); + + $al.model._viewModel.set("iataReady",true); + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } + _getPostingAllowancesDefault() { + /*if (typeof $al.model._viewModel.postingAllowance.outgoingTripAmount == 'undefined' || $al.model._viewModel.postingAllowance.outgoingTripAmount.amount == 0 || + typeof $al.model._viewModel.postingAllowance.returnTripAmount == 'undefined' || $al.model._viewModel.postingAllowance.returnTripAmount.amount == 0) {*/ + $al.model.postingAllowanceCommon._restCalls.postingAllowancesDefault.execute(null, { + iataCodeFrom: $al.model._viewModel.postingAllowance.assignmentIataCode, + iataCodeTo: $al.model._viewModel.postingAllowance.originIataCode, + postingAllowanceType: $al.model._viewModel.postingAllowance.postingAllowanceType, + postingAllowanceReqType: $al.model._viewModel.postingAllowance.postingAllowanceReqType, + exerciseYear: $al.model._viewModel.postingAllowance.exerciseYear + + }, $al.model._onGetPostingAllowancesDefaultResponse); + + + } + + _onGetPostingAllowancesDefaultResponse(data){ + + if((data.outgoingTripAmount && data.outgoingTripAmount.amount <= 1) || + (data.returnTripAmount && data.returnTripAmount.amount <= 1)){ + $al.controller.iataCodeFrom = $al.model._viewModel.postingAllowance.assignmentIataCode; + $al.controller.iataCodeTo = $al.model._viewModel.postingAllowance.originIataCode; + }else{ + $al.controller.iataCodeFrom = null; + $al.controller.iataCodeTo = null; + } + $al.model._viewModel.postingAllowance.outgoingTripAmount = data.outgoingTripAmount; + $al.model._viewModel.postingAllowance.returnTripAmount = data.returnTripAmount; + $al.controller.onChangeTripAmount(); + // $al.view._bindView(); + //$al.view._renderInvoiceGrid(); + + } + _onExchangeRatesByCurrencyRetrieved(data) { + $al.model.currencymonthPayment = data; + + } + + _onDataRetrievedvalidatePayment(data) { + $al.model.eventNumber = data; + var validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + invalidFormat: input => { + if (input.attr('required')) { + return input.val().length === input.val().trim().length; + } else { + return true; + } + }, + paymentDateInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_date.id + "]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + paymentOrderInvalidRightId: input => { + if (input.is("[name=" + $al.view._elements.payment_order.id + "]") && $al.model.eventNumber === 0) { + return false; + } else { + $al.model._viewModel.postingAllowance.paymentEventId = $al.model.eventNumber; + return true; + } + }, + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentOrderInvalidRightId: "The Right ID not valid", + invalidFormat: "Invalid format: remove spaces" + } + }).data("kendoValidator"); + if (validator.validate()) { + $al.controller.doUpdateAndMarkAsPaidPostingAllowance(); + $a.modalDialog.hide(); + }else{ + $a.toast.showError("The Right ID not valid"); + + } + } +} + +class PostingAllowanceView { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.view(); + }); + this._templates = new $a.DataContainer("postingAllowance"); + this._elements = new $a.DataContainer("postingAllowance"); + + this._templates.data(new $a.KendoTemplateData()); + + + this._elements.node("invoice").node("grid").data(new $a.KendoElementData()); + + this._elements.node("payment_date").data(new $a.KendoElementData()); + this._elements.node("payment_order").data(new $a.KendoElementData()); + this._elements.node("payment_postingAllowance").data(new $a.KendoElementData()); + + this._elements.node("payment_date_div").data(new $a.KendoElementData()); + this._elements.node("payment_order_div").data(new $a.KendoElementData()); + this._elements.node("payment_postingAllowance_div").data(new $a.KendoElementData()); + this._elements.node("communication").data(new $a.KendoElementData()); + this._elements.node("communication2").data(new $a.KendoElementData()); + + + this._elements.node("comments").node("grid").data(new $a.KendoElementData()); + + this._elements.node("origin_iata").data(new $a.KendoElementData()); + + this._elements.node("origin_period_month").data(new $a.KendoElementData()); + this._elements.node("origin_period_year").data(new $a.KendoElementData()); + this._elements.node("payment_period_month").data(new $a.KendoElementData()); + this._elements.node("payment_period_year").data(new $a.KendoElementData()); + this._elements.node("iata_code_assignment").data(new $a.KendoElementData()); + this._elements.node("iata_code_assignment_code").data(new $a.KendoElementData()); + this._elements.node("iata_code_assignment_container").data(new $a.KendoElementData()); + + this._templates.node("invoice").node("grid").data(new $a.KendoTemplateData()); + + this._templates.node("calculation").data(new $a.KendoTemplateData()); + this._templates.node("calculation").node("staff").data(new $a.KendoTemplateData()); + this._templates.node("documents").node("view").data(new $a.KendoTemplateData()); + + this._templates.node("calculation").node("family").data(new $a.KendoTemplateData()); + this._templates.node("calculation").node("total").data(new $a.KendoTemplateData()); + // One footer "basic" + this._templates.node("basic").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("warn").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("mark_as_paid").node("dialog").data(new $a.KendoTemplateData(), "body"); + + this._templates.node("ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + + this._templates.node("comments").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("add_comment").data(new $a.KendoTemplateData()); + } + + render() { + $al.view._templates.data.compile(); + $al.controller._renderCommunication(); + $al.controller._renderOriginAndPaymentPeriod(); + $al.view._templates.invoice.grid.data.compile(); + + $al.view._renderInvoiceGrid(); + + + + $al.controller._renderCommunication(); + + $al.view._templates.comments.grid.data.compile(); + $al.view._templates.add_comment.data.compile(); + + $al.view.postingAllowanceCommon._renderCommentsGrid(); + + if(typeof $al.model.postingAllowance.assignmentIataCode != "undefined") { + $al.view._elements.iata_code_assignment_code.data.element.html($al.model.postingAllowance.assignmentIataCode ); + let airportNameArray = $al.view.getIataByCode($al.model.postingAllowance.assignmentIataCode); + + $al.view._elements.iata_code_assignment_container.data.element.attr("data-original-title", airportNameArray[0].airportName); + } + + } + + + getIataByCode(code) { + return $al.model.iataAirports.filter( + function(data){ return data.id == code } + ); + + } + + getAirportNameIataByCode(code) { + + let airports = $al.model.iataAirports.filter( + function(data){ return data.id === code } + ); + + return airports && airports.length > 0 ? airports[0].airportName : ''; + } + + renderEmptyTemplate() { + $al.view._templates.data.compile(); + } + + _renderInvoiceGrid() { + + var dataSource = new kendo.data.DataSource({ + + transport: { + read: function (options) { + options.success($al.model._viewModel.postingAllowance.postingAllowancePersons); + }, + update: function (options) { + var data = options.data; + + + // Copy data back to dataList + $al.model._viewModel.postingAllowance.postingAllowancePersons = dataSource.data().slice(); + + options.success(data); + $al.model._viewModel.changesAppliedInGrid = true; + + } + }, + data: $al.model._viewModel.postingAllowance.postingAllowancePersons, + + schema: { + model: { + id: "id", + fields: { + id: {type: "number"}, + dateOfBirth: {type:"string"}, + route: {type: "string"}, + perId: {type: "number"}, + relPerId: {type: "number"}, + trcCd: {type: "number"}, + trcCode: {type: "string"}, + tripAmount: { + amount: {type: "number"}, + currency: {type: "string"} + }, + entitledMonths: {type: "number"}, + totalAmount: { + amount: {type: "number"}, + currency: {type: "string"} + }, + cityFrom: {type: "string"}, + countryFrom: {type: "string"}, + iataCodeFrom: {type: "string"}, + cityTo: {type: "string"}, + countryTo: {type: "string"}, + iataCodeTo: {type: "string"}, + remarks: {type: "string"}, + firstName: {type: "string"}, + surname: {type: "string"}, + workInDelegation:{type: "boolean"} + + }, + DetailTotalAmountEur: function () { + // if(this.entitledMonths == 0){ + // return 0; + // } + if(typeof this.tripAmount == "undefined"){ + this.tripAmount = {amount: 0, currency : 'EUR'} + return 0; + } + + return this.tripAmount.amount * (this.entitledMonths/12); + } + } + }, + aggregate: [ + {field: "DetailTotalAmountEur()", aggregate: "sum"}, + ] + }); + + + var columns_desc = [ + {hidden: true, field: "id"}, + { + field: "Name", + title: "Name", + attributes: {class: "pl-2 pr-0 font-weight-medium"}, + headerAttributes: {class: "pl-2"}, + template: $al.view.surnameFieldTemplate , + width: "18%", + editor: $al.view.nameNoEditTemplate + }, + { + title: " ", + field: "workInDelegation", + template: " ", + editor: $al.view.entitleSpouseWork, + width: "2%", + attributes: {class: "pl-0"}, + }, + { + field: "trcCode", + title: "Relationship", + attributes: {class: "px-0"}, + headerAttributes: {class: "px-0"}, + width: "11%", + editor: $al.view.nonEditor + }, + { + field: "dateOfBirth", + title: "Birth Date", + width: "11%", + editor: $al.view.dateOfBirthNoEditTemplate, + template: "#= kendo.toString(kendo.parseDate(dateOfBirth), 'dd MMM yyyy') #", + }, + { + field: "route", + title: "Destination", + width: "20%", + headerTemplate: "
    " + + "Destination information" + + "sync" + + "
    ", + headerAttributes: {style: "padding-bottom: 10px"}, + editor: $al.view.routeDropDownEditor, + template : $al.view.routeFieldTemplate, + }, + { + field: "tripAmount.amount", + title: "Price", + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: $al.view.tripAmountTemplate, + editor: $al.view.nonEditor, + footerAttributes: {class: "text-right pl-0"}, + width: "11%", + }, + { + field: "entitledMonths", + title: "Entitled Months", + headerTemplate: "
    Months information
    ", + headerAttributes: {class: "text-right pl-0", style: "padding-bottom: 10px"}, + attributes: {class: "text-right pl-0"}, + template: "#= entitledMonths # / 12", + editor: $al.view.entitleMonthDropDownEditor, + width: "10%" + }, + { + field: "DetailTotalAmountEur()", + title: "Total", + aggregates: ["sum"], + attributes: {class: "text-right pl-2"}, + headerAttributes: {class: "text-right pl-2"}, + template: "#= kendo.toString(DetailTotalAmountEur(), \"n2\") # EUR", + footerTemplate: "#= kendo.toString($al.model._viewModel.postingAllowance.calcTotalAmount.amount, \"n2\") # EUR ", + footerAttributes: {class: "text-right pl-0"}, + editor: " ", + width: "12%" + }, + { + command: [ + { + name: "edit", + template: "", + text: {edit: "", update: "", cancel: ""} + } + ], + width: "90px", + attributes: {class: "pl-0 pr-1 pr-lg-2 py-2 text-right"}, + headerAttributes: {class: "col-command"}, + hidden: !$al.model._viewModel.isInvoiceGridEnabled + } + ]; + + $al.view._elements.invoice.grid.data.element.kendoGrid({ + + dataSource: dataSource, + + noRecords: { + template: "" + }, + scrollable: false, + sortable: false, + resizable: false, + + columns: columns_desc, + + editable: "inline", + dataBound: $al.view._onDataBound, + cancel: function (e) { + //insert into the dropdown the entMax ceiling, when the insert was done just now + + + // prevent page scroll position change + e.preventDefault(); + + + + dataSource.cancelChanges(this); + var container = this.wrapper.children(".k-grid-content"); // or ".k-virtual-scrollable-wrap" + + this.refresh(); + }, + beforeEdit: function (e) { + + + + }, + + }); + + $al.view._elements.invoice.grid.data.component = "kendoGrid"; + + } + + + + _initializeView() { + + var viewModel = new kendo.data.Model.define(); + $al.model.postingAllowance = $al.controller.postingAllowanceCommon.preparePostingAllowanceForModelView(); + //$al.model.entMax = $al.controller.postingAllowanceCommon._createEntMaxList(); + + $al.model._viewModel = new viewModel({ + isVisible: true, + message: " ", + name: $al.model.postingAllowance.staffMember.lastName + ' ' + $al.model.postingAllowance.staffMember.firstName, + perId: $al.model.postingAllowance.staffMember.id, + postingAllowance: $al.model.postingAllowance, + entMax: $al.model.entMax, + editPersonsGrid: false, + changesMade: false, + + exchangeRates: $al.model.exchangeRates, + + bankInfo: $al.model.bankInfo, + + + + isBackOffice: $isBackOffice, + + commentsVisible: $isBackOffice || $al.view.postingAllowanceCommon._thereAreComments(false), + + + + // --- Comments logic --- + canAddComments: $isBackOffice, + canDeleteComments: false, + displayChildrenPostingAllowance: false, + changesAppliedInGrid : false, + + // This is a switch: the button disappears when the text area is visible. Initial value: visible + showCommentButton: true, + showCommentInput: function() { + this.set("showCommentButton", false); + $al.view.postingAllowanceCommon._scrollToBottom(); + $('textarea.autoSize').autosize(); + }, + // ---------------------- + + onSubmit: function () { + + if ($al.view._validations()) { + + // RIGD-1924 After the validation, we finally warn te user about the exact consequences of this submit + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.confirmation.submit_confirmation_title, + $al.view.postingAllowanceCommon._templates.warn.dialog.body.template({ + body_message: $al.controller._languageBundle.confirmation.submit_confirmation_message_html, + render_html: true + }), + $al.view.postingAllowanceCommon._templates.ok_cancel.dialog.footer.template( + {ok_callback: '$al.controller.doSubmitPostingAllowance()'}) + ); + } + + }, + onSaveAndApprovePostingAllowance: function () { + if ($al.view._validations()) { + $al.model._viewModel.postingAllowance.saveChanges = false; + $al.model._viewModel.postingAllowance.iataCodeFrom = null; + $al.model._viewModel.postingAllowance.iataCodeTo = null; + $al.controller.doSaveAndApprovePostingAllowance(); + } + }, + onRejectPostingAllowance: function () { + $al.controller.doUpdateAndRejectPostingAllowance(); + }, + showMarkAsPaidDialog: function () { + $al.controller.doShowMarkAsPaidDialog(); + }, + onDiscardChanges: function () { + $al.controller.refreshPage(); + }, + onCancelPostingAllowance: function () { + $al.controller.doCancelPostingAllowance(); + }, + onSaveDraftAndSubmit: function () { + $al.model._viewModel.postingAllowance.saveChanges = false; + $al.model._viewModel.postingAllowance.iataCodeFrom = null; + $al.model._viewModel.postingAllowance.iataCodeTo = null; + // We are saving changes in DB, so we go back to 'preserveInvoicesTotal' + $al.model.preserveInvoicesTotal = true; + if ($al.view._validations()) { + $al.controller.doSubmitPostingAllowance(); + } + }, + + onSaveDraft: function () { + + // We are saving changes in DB, so we go back to 'preserveInvoicesTotal' + $al.model.preserveInvoicesTotal = true; + $al.model._viewModel.postingAllowance.saveChanges = true; + $al.model._viewModel.postingAllowance.iataCodeFrom = $al.controller.iataCodeFrom; + $al.model._viewModel.postingAllowance.iataCodeTo = $al.controller.iataCodeTo; + $al.controller.doSaveDraftPostingAllowance(); + }, + onCreateTopupPostingAllowance() { + $al.controller.postingAllowanceCommon.createTopupPostingAllowance( $al.model._viewModel.postingAllowance.id, $al.model._viewModel.postingAllowance.postingAllowanceType ); + }, + + onSave: function () { + if ($al.view._draftValidations()) { + // We are saving changes in DB, so we go back to 'preserveInvoicesTotal' + $al.model.preserveInvoicesTotal = true; + $al.model._viewModel.postingAllowance.saveChanges = true; + $al.model._viewModel.postingAllowance.iataCodeFrom = $al.controller.iataCodeFrom; + $al.model._viewModel.postingAllowance.iataCodeTo = $al.controller.iataCodeTo; + $al.controller.doSavePostingAllowance(); + } + }, + onResubmit: function () { + $al.controller.doResubmit(); + }, + onRegularize: function () { + $al.controller.doRegularize(); + }, + showAbacInfo: function () { + $al.controller.doShowAbacInfo(); + }, + viewRegularization: function () { + $al.controller.doViewRegularization(); + }, + onRefreshAbacInfo: function () { + $al.controller.postingAllowanceCommon.doRefreshAbacInfoAndRefresh(); + + }, + saveAndInitiatePayment: function () { + if ($al.view._initiatePaymentValidations()) { + $al.controller._saveAndInitiatePayment(); + } + + }, + refreshPlaceOfOrigin() { + $al.controller._refreshPlaceOfOrigin(); + }, + refreshDependentsAddress() { + $al.controller._refreshDependentsAddress(); + }, + displayClaimApproveRejectButtons: false, + showActionsBox: false, + canApprove: false, + canReject: false, + canMarkAsPaid: false, + canPayAbac: false, + isTotalAmountDisabled: true, + canEditGrid: false, + canCancel: false, + canDiscardChanges: false, + showPaymentInfo: false, + showPaymentAbacInfoLink: false, + someClaimRejected: false, + isDraft: false, + isAwaiting: false, + isApproved: false, + isPaid: false, + isRejected: false, + detailTypeOrderCategories: ["PERSONAL BELONGINGS", "VEHICLE", "STORAGE"], + appParameters: $al.model.appParameters, + sumOfSectionsTotalPersonal: 0, + sumOfSectionsTotalVehicle: 0, + sumOfSectionsTotalStorage: 0, + totalAmountApproved: 0, + canEditTotalAmount: false, + outgoingText : typeof $al.model.postingAllowance.originCityName == "undefined" ? "No Origin" : $al.model.postingAllowance.originCityName + ", " + $al.model.postingAllowance.originCountryName, + returnText : typeof $al.model.postingAllowance.assignmentCityName == "undefined" ? "No Destination" : $al.model.postingAllowance.assignmentCityName + ", " + $al.model.postingAllowance.assignmentCountryCode, + isOriginAirportEnabled: true, + isOriginPeriodEnabled: true, + isPaymentPeriodEnabled: true, + isInvoiceGridEnabled: true, + showAlertNoPlaceOfOrigin: typeof $al.model.postingAllowance.originCityName == "undefined" ? true : false, + canRefreshPlaceOriginFromSySper: true, + canAccessPostingAllowance: false, + canOwnAtLeastOnePostingAllowance: false, + canConsult: false, + canShowChildPostingAllowanceLink: false, + }); + + if ($a.utils.isNotNull($al.model._viewModel.postingAllowance.postingAllowanceDetails)) { + $al.model._viewModel.postingAllowance.postingAllowanceDetails = $al.model.postingAllowance.postingAllowanceDetails; + } else { + $al.model._viewModel.postingAllowance.postingAllowanceDetails = []; + } + if ($a.utils.isNotNull($al.model.postingAllowance.extraPostingAllowanceDetails)) { + $al.model._viewModel.postingAllowance.extraPostingAllowanceDetails = $al.model.postingAllowance.extraPostingAllowanceDetails; + } else { + $al.model._viewModel.postingAllowance.extraPostingAllowanceDetails = []; + } + + + + $al.controller.modelPermissions(); + + + } + + _initiatePaymentValidations() { + let validationErrors = $al.view._validateBeforeInitiatingPayment(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + _validateBeforeInitiatingPayment() { + let messages = []; + + if($al.model._viewModel.postingAllowance.totalAmount.amount < 0) + messages.push($al.controller._languageBundle.validations.total_removal_amount_should_be_positive); + + return messages; + } + + + _thereIs_Abac_BankAccount(bankAccounts) { + + if (typeof bankAccounts === "undefined" || !bankAccounts.length) { + return false; + } + for (const acc of bankAccounts) { + if (acc.lef || acc.baf) { + return true; + } + } + return false; + } + + + _validations() { + var validationErrors = $al.view._validateBeforeUpdatingDeclaration(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + + lineValidation(input) { + + if (input.is("[name='monthPaymentDropDownList']")) { + + if (input[0].value === "Select Month") { + var stateDropDown = $("#routePersonalDropDownList").data("kendoDropDownList"); + + if (stateDropDown.value() === 'EUR') { + + return true; + } else { + return false; + } + + } + + + } + + return true; + } + + + + _validateBeforeUpdatingDeclaration() { + $al.controller.validate(); + var errorMessages = []; + + + + + return errorMessages; + } + + _draftValidations() { + + // Validate the bank account + var validationErrors = $al.view.postingAllowanceCommon.validateMandatoryBankAccount($al.model._viewModel.postingAllowance.state); + + // Validate invoices (Removal and Unforeseen). false means we are in draft, not in submit + validationErrors = validationErrors.concat($al.view._validateInvoices(false)); + + + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + + // Get Invoices validation error messages or empty array if OK. + _validateInvoices(isSubmit) { + + var messages = []; + var invoices = $al.model._viewModel.postingAllowance.postingAllowanceDetails; + var unfo_invoices = $al.model._viewModel.postingAllowance.extraPostingAllowanceDetails; + + // Used to avoid repeated messages + var missing_field_msg = false; + var missing_attach_msg = false; + + // For submit: Validate that there is at least one removal invoice and all attachs are ok (removal invoice and unforeseen invoice) + if (isSubmit) { + if (!invoices || invoices.length === 0) { + // There are no invoices + messages.push($al.controller._languageBundle.validations.no_invoices_added); + } else { + // Check that all the attachs are ok in removal invoices + for (const invo_item of invoices) { + if (!$al.view._checkAttachmentTypes(invo_item.attachments, ['INVOICE', 'PROOF_OF_PAYMENT', 'TRANSPORT_OWNERSHIP_PROOF'])) { + messages.push($al.controller._languageBundle.validations.some_invoices_missing_attachments); + missing_attach_msg = true; + break; + } + } + } + // Also for 'submit': Check that all the attachs are ok in unforeseen invoices + if (unfo_invoices && unfo_invoices.length && !missing_attach_msg) { + for (const unfo_item of unfo_invoices) { + if (!$al.view._checkAttachmentTypes(unfo_item.attachments, ['UNFORESEEN_INVOICE', 'BANK_STATEMENT'])) { + messages.push($al.controller._languageBundle.validations.some_invoices_missing_attachments); + break; + } + } + } + } + + // In any case (submit or draft) + + + // Return array of accumulated error messages or empty array if everything OK + return messages; + } + + // Check all the typeNames are present in attachs + _checkAttachmentTypes(attachs, typeNames) { + + if (!attachs || attachs.length == 0) { + // Array of attachments is empty + return false; + } + + for (const typeN of typeNames) { + var found = false; + for (const att of attachs) { + if (att.attachmentType === typeN) { + found = true; + break; + } + } + if (!found) { + return false; + } + } + // All found + return true; + } + + _cleanRemovedAttachments(invoice_entry) { + + if (!invoice_entry.attachments) { + // No attachments, ok: + return invoice_entry; + } + + var clean_attachs = []; + invoice_entry.attachments.forEach(attach => { + if (attach.fileName) { + // Preserve the ones where 'fileName' is not null (it's null for removed attachments) + clean_attachs.push(attach); + } + }); + // Overwrite 'attachments' field: + invoice_entry.attachments = clean_attachs; + return invoice_entry; + } + + _validateJustification() { + + // Check at least one comment + var valid = $al.view.postingAllowanceCommon._thereAreComments(true); + + if (!valid) { + $a.toast.showError($al.controller._languageBundle.alerts.justification_is_mandatory_for_adv_rem_reject); + $al.view.postingAllowanceCommon.showMissingCommentMessage('INITIAL'); + } + return valid; + } + + + _showWarnDialog(title, messages) { + $a.modalDialog.showAnswer(null, title, + $al.view._templates.warn.dialog.body.template( + {body_message: "
  • " + messages.join("
  • "), + validation_message: $al.controller._languageBundle.alerts.validation_message }), + $al.view._templates.basic.dialog.footer.template({}) + ); + } + + _bindView() { + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + $('[data-toggle="tooltip"]').tooltip(); + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }); + } + + + tripAmountTemplate(dataItem){ + if(typeof dataItem.tripAmount == "undefined"){ + dataItem.tripAmount = {amount: 0, currency : 'EUR'} + } + return kendo.toString(dataItem.tripAmount.amount, "n2") + ' ' + dataItem.tripAmount.currency +""; + + } + + routeFieldTemplate(dataItem){ + if (dataItem.route == 'OUTGOING'){ + return $al.model._viewModel.outgoingText; + } + return $al.model._viewModel.returnText; + } + + surnameFieldTemplate(dataItem){ + let returnvalue = dataItem.surname + ' ' + dataItem.firstName ; + + if (dataItem.trcCd == -1 && dataItem.workInDelegation) { + returnvalue = dataItem.surname + ' ' + dataItem.firstName; + } else if (dataItem.workInDelegation) { + if(typeof $al.model._viewModel.spouseTravelAllowanceId == 'undefined'){ + returnvalue = dataItem.surname + ' ' + dataItem.firstName + 'Travel request not found.\">people'; + }else{ + var linkToSpouseTar= $a.utils.formatUrl($al.model.postingAllowanceCommon.urls.action.viewPostingAllowance, null, {postingAllowanceId: $al.model._viewModel.spouseTravelAllowanceId }); + + if($al.model._viewModel.isBackOffice){ + returnvalue = dataItem.surname + ' ' + dataItem.firstName + 'Click to open the spouse′s request.\">people'; + }else{ + returnvalue = dataItem.surname + ' ' + dataItem.firstName + 'people'; + } + } + + } + if (dataItem.workInHQ) { + returnvalue = dataItem.surname + ' ' + dataItem.firstName + 'people'; + } + return returnvalue; + } + + routeDropDownEditor(container, options) { + + + var dataSourceRoutes = new kendo.data.DataSource({ + data: [ + { route: 'OUTGOING' , routeText: $al.model._viewModel.outgoingText},{ route: 'RETURN',routeText: $al.model._viewModel.returnText } + + ] + }); + + let textField = $al.view.routeFieldTemplate(options.model); + + + let dropdownlist = $('') + .appendTo(container) + .kendoDropDownList({ + + dataTextField: "routeText", + dataValueField: "route", + dataSource: dataSourceRoutes, + autoWidth: true, + + change: $al.controller.onChangeRoute, + + }); + + } + entitleMonthDropDownEditor(container, options) { + + let dropdownlist = $('') + .appendTo(container) + .kendoDropDownList({ + dataSource: $al.model.postingAllowanceCommon.dataSourceMonthsEntitled, + dataTextField: "month", + dataValueField: "month", + placeHolder: 'Month', + enable: true, + + //optionLabel: 'EUR', + autoWidth: true, + + change: $al.controller.onChangeEntitleMonths, + }); + + } + entitleSpouseWork(container, options) { + if (options.model.trcCd != -1 ) { // we do not show for staff member + let dropdownlist = $('') + .appendTo(container) + .kendoDropDownList({ + dataSource: $al.model.postingAllowanceCommon.dataSourceSpouseWork, + dataTextField: "work", + dataValueField: "work", + placeHolder: 'work', + enable: true, + + //optionLabel: 'EUR', + autoWidth: true, + autoBind: false, + change: $al.controller.onChangeSpouseWork, + }); + } + + } + + + nonEditor(container, options) { + container.text(options.model[options.field]); + container.removeClass("k-edit-cell"); + } + + nameNoEditTemplate(container, options) { + + container.text(options.model.surname + " " + options.model.firstName); + container.removeClass("k-edit-cell"); + + + } + dateOfBirthNoEditTemplate(container, options) { + + container.text(kendo.toString(kendo.parseDate(options.model.dateOfBirth), 'dd MMM yyyy')); + container.removeClass("k-edit-cell"); + + + } + + _onDataBound(e) { + + this.wrapper.find(".k-reset").hide(); + + let total = 0,currency = "EUR",items = e.sender.items(); + items.each(function () { + var dataItem = e.sender.dataItem(this); + if(typeof dataItem.tripAmount == "undefined") { + dataItem.tripAmount = { amount: 0, currency : currency}; + } + var totalAmount = { + amount: Number(dataItem.tripAmount.amount * (dataItem.entitledMonths/12)), + currency: dataItem.tripAmount.currency + }; + dataItem.familyWorkStatus = ""; + if(dataItem.workInDelegation){ + dataItem.familyWorkStatus = 'DEL'; + }else if(dataItem.workInHQ){ + dataItem.familyWorkStatus = 'HQ'; + } + + total += Number(totalAmount.amount); + currency = dataItem.tripAmount.currency; + + if (dataItem.entitledMonths > 0) { + this.className += " k-state-selected"; + } else { + this.className += " k-state-muted"; + } + + + }); + const newNumber = new Number(total + '').toFixed(parseInt(3)); + total = parseFloat(newNumber); + + + total = Math.round(total * 100) / 100; + $al.model._viewModel.postingAllowance.calcTotalAmount = { amount: total , currency : currency}; + if($al.model._viewModel.editPersonsGrid){ + $al.model._viewModel.postingAllowance.totalAmount.amount = total; + } + if(typeof $al.model._viewModel.postingAllowance.totalAmount == 'undefined' || $al.model._viewModel.postingAllowance.totalAmount.amount === 0 || $al.model._viewModel.changesAppliedInGrid ){ + $al.model._viewModel.postingAllowance.totalAmount = { amount: total, currency : currency}; + $al.model._viewModel.changesAppliedInGrid = false; + //TODO make the total amount editing input to flash + } + + $al.view._bindView(); + + //$al.view._calculateTotalsAndRender(); + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }); + + const grid = $("#postingAllowance-invoice-grid").data("kendoGrid"); + grid.footer.find('#aggregationSum').html(`${kendo.toString($al.model._viewModel.postingAllowance.calcTotalAmount.amount, "n2")} EUR`); + } + + alignTotal() { + // align total in summary wrapper + var colWidthInvoice = $(".col-invoice").width() + 24; + var colWidthStatement = $(".col-statement").width() + 24; + var colWidthCommand = 0; + if ($(".col-command").css('display') !== 'none') { + var colWidthCommand = $(".col-command").width() + 24; + } + var offsetRight = colWidthInvoice + colWidthStatement + colWidthCommand; + $(".resizeMeToAlignTotal").width(offsetRight - 10); + } + + _calculateTotalsAndRender() { + + if (typeof $al.model._viewModel.totalAmountRemovalInvoices === "undefined" || + typeof $al.model._viewModel.postingAllowance.sumOfSectionsUnforeseenAmount === "undefined") { + // Avoid first call when data is not available + return; + } + + if (typeof $al.model._viewModel.postingAllowance.calculatedTotalAmount === "undefined") { + $al.model._viewModel.postingAllowance.calculatedTotalAmount = {amount: '', currency: 'EUR'}; + } + + $al.model._viewModel.postingAllowance.calculatedTotalAmount.amount = Number($al.model._viewModel.totalAmountRemovalInvoices) + Number($al.model._viewModel.postingAllowance.sumOfSectionsUnforeseenAmount); + $al.model._viewModel.postingAllowance.calculatedTotalAmount.amountFormatted = kendo.toString($al.model._viewModel.postingAllowance.calculatedTotalAmount.amount, "n2"); + $al.model._viewModel.postingAllowance.calculatedTotalAmount.amount = $al.model._viewModel.postingAllowance.calculatedTotalAmount.amount.toFixed(2); + if (($al.model._viewModel.postingAllowance.state === 'DRAFT' || $al.model._viewModel.postingAllowance.state === 'AWAITING') + && typeof $al.model._viewModel.postingAllowance.totalAmount !== "undefined") { + //it is comming from being approve so we need to remove the total amount not to be shown + // if ($al.model.previousCalculatedTotalAmount == 0) { + // delete $al.model._viewModel.postingAllowance.totalAmount; + // } + + if (!$al.model.preserveInvoicesTotal) { + delete $al.model._viewModel.postingAllowance.totalAmount; + } + } + + + if (typeof $al.model._viewModel.postingAllowance.totalAmount === "undefined") { + // it is a new postingAllowance or draft so we should use the calculated amount + $al.model._viewModel.postingAllowance.totalAmount = {amount: '', currency: 'EUR'}; + + $al.model._viewModel.postingAllowance.totalAmount.amount = Number($al.model._viewModel.totalAmountRemovalInvoices) + Number($al.model._viewModel.postingAllowance.sumOfSectionsUnforeseenAmount); + + } else { + //It is defined so this in a state that is not draft, so we show the totalamount that is the approve amount + $al.model._viewModel.postingAllowance.totalAmount.amount = Number($al.model._viewModel.postingAllowance.totalAmount.amount); + + + } + + $al.model._viewModel.postingAllowance.totalAmount.amount = $al.model._viewModel.postingAllowance.totalAmount.amount.toFixed(2); + $al.model._viewModel.postingAllowance.totalAmount.amountFormatted = kendo.toString($al.model._viewModel.postingAllowance.totalAmount.amount, "n2"); + + $al.model._viewModel.totalAmountRemovalInvoicesFormatted = kendo.toString(parseFloat($al.model._viewModel.totalAmountRemovalInvoices), "n2"); + $al.model._viewModel.postingAllowance.sumOfSectionsUnforeseenAmountFormatted = kendo.toString(parseFloat($al.model._viewModel.postingAllowance.sumOfSectionsUnforeseenAmount), "n2"); + + //var wrapper = e.sender.element.find(".summaryWrapper"); + var wrapper = $(".summaryWrapper") + + wrapper.find("#totalAmountRemovalInvoicesWrapper").html("
    " + $al.model._viewModel.totalAmountRemovalInvoicesFormatted + " EUR
    "); + wrapper.find("#totalUnforeseenAmountWraper").html("
    " + $al.model._viewModel.postingAllowance.sumOfSectionsUnforeseenAmountFormatted + " EUR
    "); + wrapper.find("#totalInvoicesAndUnforeseenWraper").html("
    " + $al.model._viewModel.postingAllowance.totalAmount.amountFormatted + " EUR
    "); + wrapper.find("#initialAmount").html("
    " + $al.controller._languageBundle.initial_amount + "
    " + $al.model._viewModel.postingAllowance.calculatedTotalAmount.amountFormatted + "
    "); + + + $al.view._bindView(); + } + + entitleMonthsEditor(container, options) { + $('') + .appendTo(container) + .kendoNumericTextBox({ + + decimals: 0, + spinners: false, + placeholder: "0" + }); + } + +} + +class PostingAllowanceController { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.controller(); + }); + this._languageBundle = null; + this.iataCodeFrom = null; + this.iataCodeTo = null; + this.isRegularizationCreated = false; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.postingAllowances", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + + $al.model.init(); + $al.notifyOnReadyMvc(); + } + + doSaveAndApprovePostingAllowance() { + $al.model._restCalls.updatePostingAllowance.execute({travelAllowanceId: $postingAllowanceId}, null, $al.model._viewModel.postingAllowance, $al.controller._updatePostingAllowanceResponse,null ,null , true); + + } + + validateBeforeUpdate(action) { + let everythingOk = false; + if ("APPROVE" == action) { //check the periods + if( $al.model._viewModel.postingAllowance.originPeriodYear < $al.model._viewModel.postingAllowance.paymentPeriodYear){ + everythingOk = true; + }else if ( $al.model._viewModel.postingAllowance.originPeriodYear > $al.model._viewModel.postingAllowance.paymentPeriodYear){ + everythingOk = false; + }else if( $al.model._viewModel.postingAllowance.originPeriodYear == $al.model._viewModel.postingAllowance.paymentPeriodYear){ + if( $al.model._viewModel.postingAllowance.originPeriodMonth <= $al.model._viewModel.postingAllowance.paymentPeriodMonth){ + everythingOk = true; + }else{ + everythingOk = false; + } + } + + } + if(!everythingOk){ + $a.toast.showError("Payment period should be bigger or equal to origin period"); + } + + + return everythingOk; + + } + + doSubmitPostingAllowance() { + $al.model._restCalls.updatePostingAllowance.execute({travelAllowanceId: $postingAllowanceId}, null, $al.model._viewModel.postingAllowance, $al.controller._submitPostingAllowanceResponse,null ,null , true); + } + + + _submitPostingAllowanceResponse(data) { + var muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + $al.model._restCalls.changeStatePostingAllowance.execute({ + postingAllowanceId: $postingAllowanceId, + stateMachineEvent: 'SUBMIT' + }, null, null,null,$al.controller._approveResponse,true,muteAnankeErrorToast); + $al.controller.savePlaceOfOriginAirport(); + } + + _updatePostingAllowanceResponse(data) { + + // We prevent the red error message and we handle the error message in '_showCreateSuccessMessage' + var muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + $al.model._restCalls.changeStatePostingAllowance.execute({ + postingAllowanceId: $postingAllowanceId, + stateMachineEvent: 'APPROVE' + }, null, null,null,$al.controller._approveResponse,true,muteAnankeErrorToast); + $al.controller.savePlaceOfOriginAirport(); + + + } + + _submitResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.submit_postingAllowance_success); + $al.model.refreshAfterUpdateState(data); + } + + _approveResponse(data) { + + if (data.status === 200) { + $al.model._viewModel.changesMade = false; + $a.toast.showSuccess($al.controller._languageBundle.alerts.approve_and_save_postingAllowance_success); + $al.model.refreshAfterUpdateState(data); + }else{ + + var validationErrors = $al.controller._extractMessagesFromErrorResponse(data); + $al.view._showWarnDialog( + $al.controller._languageBundle.alerts.operation_not_permmited_posting_allowance, validationErrors); + } + + } + _extractMessagesFromErrorResponse(response) { + var text = response.responseText; + var textObj = null; + try { + textObj = JSON.parse(text); + } catch (parseExc) { + // Do nothing, textObj remains null + } + var messages = []; + if (textObj && textObj.items && textObj.items.length > 0) { + textObj.items.forEach(item => { + messages.push(item.message); + }); + return messages; + } else { + // Cannot parse, just return 'responseText' + return [ text ]; + } + } + + + + doPayPostingAllowance() { + $al.model._restCalls.changeStatePostingAllowance.execute({ + postingAllowanceId: $postingAllowanceId, + stateMachineEvent: 'PAY' + }, null, null, $al.controller._payResponse); + } + + _payResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.pay_postingAllowance_success); + $al.model.refreshAfterUpdateState(data); + + } + + _saveAndInitiatePayment() { +/* if (typeof $al.model._viewModel.postingAllowance.budgetLine == "undefined") { + $a.toast.showWarning($al.controller._languageBundle.alerts.no_budget_line_found); + return null; + }*/ + $al.model._restCalls.updatePostingAllowance.execute({travelAllowanceId: $postingAllowanceId}, null, $al.model._viewModel.postingAllowance, $al.controller._initiatePayment,null,null,true); + } + + _initiatePayment() { + + $a.loading.toggle(true); + $al.model._restCalls.payInSysper.execute({postingAllowanceId: $postingAllowanceId}, null, null, null, $al.controller._payInSysperPostingAllowanceSuccess,null,null); + setTimeout(() => { + $a.loading.toggle(false); + }, 12000); + } + + _payInSysperPostingAllowanceSuccess(data) { + + if (data.status === 200) { + $al.controller._payResponse(data) + }else{ + var validationErrors = $al.controller._extractMessagesFromErrorResponse(data); + $a.toast.showError(validationErrors); + } + } + + doShowAbacInfo() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.showAbacInfo, null, + { + postingAllowanceId: $postingAllowanceId, + postingAllowanceType: "TotalRemPostingAllowance" + }) + ); + } + + doViewRegularization() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewRegularization, null, + { + postingAllowanceId: $al.model._viewModel.postingAllowance.childPostingAllowanceId, + }) + ); + } + + //Reject + + //update postingAllowance and then call doRejectPostingAllowance to move postingAllowance to rejected + doUpdateAndRejectPostingAllowance() { + + if ($al.view._validateJustification()) { + if ($al.model._viewModel.postingAllowance.state == 'DRAFT'){ + $al.controller.doRejectPostingAllowance(); + } else { + if($al.model._viewModel.postingAllowance.state == 'PAID'){ // in case rejecting and paid we clean abac info + $al.model.postingAllowanceCommon.clearPaymentInfo(); + } + $al.model._restCalls.updatePostingAllowance.execute({travelAllowanceId: $al.model._viewModel.postingAllowance.id}, null, $al.model._viewModel.postingAllowance, $al.controller.doRejectPostingAllowance,null ,null , true); + } + + } + } + + doCancelPostingAllowance() { + $al.model._restCalls.changeStatePostingAllowance.execute({ + postingAllowanceId: $postingAllowanceId, + stateMachineEvent: 'CANCEL' + }, null, null, $al.controller._cancelPostingAllowanceResponse); + } + + doSaveDraftPostingAllowance() { + $al.model._restCalls.updatePostingAllowance.execute({travelAllowanceId : $al.model._viewModel.postingAllowance.id}, null, $al.model._viewModel.postingAllowance, $al.controller._saveDraftPostingAllowanceSuccess ,null ,null , true); + } + doSaveDraftAndSubmitPostingAllowance(){ + $al.model._restCalls.updatePostingAllowance.execute({travelAllowanceId : $al.model._viewModel.postingAllowance.id}, null, $al.model._viewModel.postingAllowance, $al.controller._saveDraftAndSubmitPostingAllowanceSuccess ,null ,null , true); + } + + _saveDraftPostingAllowanceSuccess(data) { + $al.model._viewModel.postingAllowance.saveChanges = false; + $al.controller.iataCodeFrom = null; + $al.controller.iataCodeTo = null; + $a.toast.showSuccess($al.controller._languageBundle.alerts.save_posting_allowance_changes_success_message); + $al.model.refreshAfterUpdateState(data); + $al.controller.savePlaceOfOriginAirport(); + } + _saveDraftAndSubmitPostingAllowanceSuccess(data) { + $al.model._restCalls.changeStatePostingAllowance.execute({ + postingAllowanceId: $postingAllowanceId, + stateMachineEvent: 'SUBMIT' + }, null, $al.controller._submitPostingAllowanceComplete,null ,null , true); + $al.controller.savePlaceOfOriginAirport(); + + } + + _submitPostingAllowanceComplete(data){ + $a.toast.showSuccess($al.controller._languageBundle.alerts.submit_postingAllowance_success); + $al.model.refreshAfterUpdateState(data); + } + + _savePostingAllowance(data) { + $al.controller.iataCodeFrom = null; + $al.controller.iataCodeTo = null; + $a.toast.showSuccess($al.controller._languageBundle.alerts.save_postingAllowance_success); + $al.model.refreshAfterUpdateState(data); + $al.controller.savePlaceOfOriginAirport(); + } + + doSavePostingAllowance() { + $al.model._restCalls.updatePostingAllowance.execute({travelAllowanceId: $al.model._viewModel.postingAllowance.id}, null, $al.model._viewModel.postingAllowance, $al.controller._savePostingAllowance,null ,null , true); + } + + + //change the state to reject and _rejectPostingAllowanceResponse to message and refresh page + doRejectPostingAllowance() { + $al.model._restCalls.changeStatePostingAllowance.execute({ + postingAllowanceId: $postingAllowanceId, + stateMachineEvent: 'REJECT' + }, null, $al.controller._rejectPostingAllowanceResponse,null ,null , true); + } + + //message and refresh page + _rejectPostingAllowanceResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.reject_postingAllowance_success); + $al.model.refreshAfterUpdateState(data); + } + + _cancelPostingAllowanceResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.cancel_postingAllowance_success); + $al.model.refreshAfterUpdateState(data); + } + + doResubmit() { + $al.model._restCalls.changeStatePostingAllowance.execute({ + postingAllowanceId: $postingAllowanceId, + stateMachineEvent: 'RESUBMIT' + }, null, $al.controller._resubmitResponse,null ,null , true); + } + + doRegularize() { + $al.model._restCalls.createRegularization.execute({ + postingAllowanceId: $postingAllowanceId + }, null, $al.controller._onRegularizeResponse,null ,null , true); + } + + _onRegularizeResponse(data) { + if(data.copiedDependenciesFromPreviousAllowance){ + $a.toast.showWarning($al.controller._languageBundle.alerts.copied_regularization_warning_message); + }else{ + $a.toast.showSuccess($al.controller._languageBundle.alerts.resubmit_postingAllowance_success); + $al.controller.isRegularizationCreated = true; + } + $al.model.refreshAfterUpdateState(data); + } + _resubmitResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.resubmit_postingAllowance_success); + $al.model.refreshAfterUpdateState(data); + } + + + + //MARK as PAID + + //show model dialog and bind + doShowMarkAsPaidDialog() { + + + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.mark_as_paid_extra_data_title, + $al.view._templates.mark_as_paid.dialog.body.template({}), + $al.view._templates.ok_cancel.dialog.footer.template({}) + ); + $al.view._elements.payment_date.data.element.kendoDatePicker({ + value: new Date(), + parseFormats: ["dd/MM/yyyy"] + + }); + kendo.bind("#mark_as_paid_data", $al.model._viewModel.postingAllowance); + + } + + //when user click ok , we validate and call doUpdateAndMarkAsPaidPostingAllowance + doValidateAndSubmitMarkAsPaid() { + var validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + requiredFormatRightId: input => { + if (input.is("[name=" + $al.view._elements.payment_order.id + "]")) { + return !isNaN($al.view._elements.payment_order.data.element.val()); + } else { + return true; + } + }, + requiredFormatEventNumber: input => { + if (input.is("[name=" + $al.view._elements.payment_postingAllowance.id + "]")) { + return !isNaN($al.view._elements.payment_postingAllowance.data.element.val()); + } else { + return true; + } + }, + invalidFormatSpaces: input => { + if (input.attr('required')) { + return input.val().length === input.val().trim().length; + } else { + return true; + } + } + }, + messages: { + requiredFieldEmpty: "All fields are required", + requiredFormatRightId: "Only Numeric value can be encoded", + requiredFormatEventNumber: "Only Numeric value can be encoded", + invalidFormatSpaces: "Invalid format: remove spaces", + } + }).data("kendoValidator"); + if (validator.validate()) { + $a.modalDialog.hide(); + $al.model._restCalls.validatePayment.execute({ + rightId: $al.view._elements.payment_order.data.element.val(), + personId: $al.model.postingAllowance.staffMember.perId}, null, $al.model._onDataRetrievedvalidatePayment,null,null,true); + } + } + + doUpdateAndMarkAsPaidPostingAllowance() { + $al.model._restCalls.updatePostingAllowance.execute({travelAllowanceId: $postingAllowanceId}, null, $al.model._viewModel.postingAllowance, $al.controller._updatePostingAllowanceMarkAsPaidResponse,null,null,true); + } + + //update status to MARK_PAID and call _markAsPaidResponse + _updatePostingAllowanceMarkAsPaidResponse(data) { + + var muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + $al.model._restCalls.changeStatePostingAllowance.execute({ + postingAllowanceId: $postingAllowanceId, + stateMachineEvent: 'PAY' + }, null,null,null, $al.controller._markAsPaidResponse,true,muteAnankeErrorToast); + } + + //Show confirmation message and refresh front end + _markAsPaidResponse(data) { + + if (data.status === 200) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.mark_as_paid_postingAllowance_success); + $al.model.refreshAfterUpdateState(data); + }else{ + $a.toast.showError($al.controller._languageBundle.alerts.can_not_process_request); + } + } + + + + _renderCommunication() { + + $al.view._elements.communication.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#postingAllowance-communication-template").html()) + }).removeClass('k-widget k-listview'); + + $al.view._elements.communication.data.component = "kendoListView"; + + $al.view._elements.communication2.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#postingAllowance-communication-template").html()) + }).removeClass('k-widget k-listview'); + + $al.view._elements.communication2 .data.component = "kendoListView"; + } + + + _renderOriginAndPaymentPeriod(){ + + let yearBased =new Date().getFullYear().toString(),yearBasedLoopStart = Number(yearBased) + 90,dataSourceYears= new kendo.data.DataSource({}),yearVal = yearBasedLoopStart,finalloop = yearBasedLoopStart + 20; + if(typeof $al.model._viewModel.postingAllowance.originPeriodYear != "undefined"){ + let yearBased = $al.model._viewModel.postingAllowance.originPeriodYear; + } + for (let i = yearBasedLoopStart; i <= finalloop; i++) { + dataSourceYears.add({ year:i % 100 , yearString: i-100 }); + } + $al.view._elements.origin_period_month.data.element.kendoDropDownList({ + dataSource: $al.model.postingAllowanceCommon.dataSourceMonths, + dataTextField: "monthString", + dataValueField: "month", + placeHolder: 'Month', + enable: true, + value: $al.model._viewModel.postingAllowance.originPeriodMonth, + autoWidth: true, + change: function (e) { + var index = this.selectedIndex, dataItem; + var item = this.dataItem(index); + + $al.model._viewModel.postingAllowance.originPeriodMonth=item.month; + } + }); + $al.view._elements.payment_period_month.data.element.kendoDropDownList({ + dataSource: $al.model.postingAllowanceCommon.dataSourceMonths, + dataTextField: "monthString", + dataValueField: "month", + placeHolder: 'Month', + enable: true, + value: $al.model._viewModel.postingAllowance.paymentPeriodMonth, + autoWidth: true, + change: function (e) { + var index = this.selectedIndex, dataItem; + var item = this.dataItem(index); + + $al.model._viewModel.postingAllowance.paymentPeriodMonth=item.month; + } + }); + $al.view._elements.origin_period_year.data.element.kendoDropDownList({ + dataSource: dataSourceYears, + dataTextField: "yearString", + dataValueField: "year", + placeHolder: 'Year', + enable: true, + value: $al.model._viewModel.postingAllowance.originPeriodYear, + autoWidth: true, + + change: function (e) { + var index = this.selectedIndex, dataItem; + var item = this.dataItem(index); + + $al.model._viewModel.postingAllowance.originPeriodYear=item.year; + } + }); + $al.view._elements.payment_period_year.data.element.kendoDropDownList({ + dataSource: dataSourceYears, + dataTextField: "yearString", + dataValueField: "year", + placeHolder: 'Year', + enable: true, + value: $al.model._viewModel.postingAllowance.paymentPeriodYear, + autoWidth: true, + change: function (e) { + var index = this.selectedIndex, dataItem; + var item = this.dataItem(index); + + $al.model._viewModel.postingAllowance.paymentPeriodYear=item.year; + } + }); + } + + _prepareCommunication(data) { + if (typeof data !== "undefined" && data !== null) { + data.forEach(n => { + if (n.arrivalState) + n.arrivalState = $al.controller._languageBundle.stateMachine[n.arrivalState.toLowerCase()]; + + }); + } + return data; + } + + //discard changes + + refreshPage() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewPostingAllowance, null, {postingAllowanceId: $postingAllowanceId})); + } + + refreshExchangeRatesPerMonth(currency) { + $al.model._restCalls.exchangeRatesPerMonth.execute({currency: currency}, null, $al.controller._onChangeCurrencyRetrieved); + } + + + _onChangeCurrencyRetrieved(data) { + var stateDropDown = $("#monthPaymentDropDownList").data("kendoDropDownList"); + + // changed to use another approach to set dataSource + var dataSource = new kendo.data.DataSource({ + data: data + }); + stateDropDown.setDataSource(dataSource); + } + + + + onChangeEntitleMonths(e) { + var grid = $("#postingAllowance-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-grid-edit-row"); + var dataItem = grid.dataItem(row); + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + dataItem.set("totalAmount", { + amount: dataItem.tripAmount.amount * (dataItem.entitledMonths/12), + currency: dataItem.tripAmount.currency + } + ); + + } + onChangeSpouseWork(e) { + var grid = $("#postingAllowance-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-grid-edit-row"); + var dataItem = grid.dataItem(row); + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + + var indexDropDown = this.selectedIndex, dataItemDropDown; + dataItemDropDown = this.dataItem(indexDropDown); + if (dataItem.trcCd == 42 || dataItem.trcCd == 41){ + $al.model._viewModel.postingAllowance.dualPosting = dataItemDropDown.work; + } + + if(dataItemDropDown.work == 'DEL'){ + dataItem.set("workInDelegation", true ); + dataItem.set("workInHQ", false ); + + }else if(dataItemDropDown.work == 'HQ'){ + dataItem.set("workInDelegation", false ); + dataItem.set("workInHQ", true ); + $al.model._viewModel.postingAllowance.doublePosting = false; + }else{ + dataItem.set("workInDelegation", false ); + dataItem.set("workInHQ", false ); + $al.model._viewModel.postingAllowance.doublePosting = false; + } + + } + + onChangeRoute(e) { + var grid = $("#postingAllowance-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-grid-edit-row"); + var dataItem = grid.dataItem(row); + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + if(dataItem.route == "OUTGOING"){ + dataItem.set("tripAmount", $al.model._viewModel.postingAllowance.outgoingTripAmount); + }else{ + dataItem.set("tripAmount", $al.model._viewModel.postingAllowance.returnTripAmount); + } + + dataItem.set("totalAmount", { + amount: dataItem.tripAmount.amount * (dataItem.entitledMonths/12), + currency: dataItem.tripAmount.currency + } + ); + + + + } + + onChangeTripAmount(e) { + var grid = $("#postingAllowance-invoice-grid").data("kendoGrid"); + grid.dataSource.data().forEach(item => { + if(item.route == "OUTGOING"){ + item.set("tripAmount", $al.model._viewModel.postingAllowance.outgoingTripAmount); + }else{ + item.set("tripAmount", $al.model._viewModel.postingAllowance.returnTripAmount); + } + }); + grid.dataSource.read(); + + + + + } + + onEuroSelection(e) { + //hide drop down and put exchange rate to 1 + var grid = $("#postingAllowance-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + dataItem.set("exchangeRate", 1); + dataItem.set("exchangePayMonth", 'Select Month'); + + } + + + + onChangeWeight(e) { + + var grid = $("#postingAllowance-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + + // dataItemDropBox = e.sender.dataItem(index); + let calculateVolume = Number(e.sender.value()) * Number($al.model.appParameters.get("KGtoM3")); + + //calculateVolume=$al.view.postingAllowanceCommon.roundedToFixed(calculateVolume,2); + dataItem.set("volume", calculateVolume); + + } + + + _onUploadSuccess(event, attType, gridId) { + + + var grid = $(gridId).data("kendoGrid"); + var row = $(event.sender.element.closest("tr")); + var mRow = row.prev(".k-master-row") + var dataItem = grid.dataItem(mRow); + + if (typeof dataItem.attachments != 'undefined') { + var attachments = dataItem.attachments; + } else { + var attachments = []; + } + + if (event.operation == "remove") { + let toBeRemoved = attachments.filter(a => a.fileUid == event.files[0].fileUid)[0]; + if (typeof toBeRemoved == 'undefined') { + toBeRemoved = attachments.filter(a => a.fileUid == event.files[0].uid)[0]; + } + if (typeof toBeRemoved != 'undefined') { + toBeRemoved.remove = true; + toBeRemoved.fileName = null; + } + } else { + var attch = {}; + attch.fileUid = event.response.uid; + attch.fileName = event.response.name; + + attch.postingAllowanceDetailId = dataItem.id; + attch.attachmentType = attType; + attachments.push(attch); + } + + dataItem.set("attachments", attachments); + dataItem.dirty = true; + + $($(".k-file-name")[0]).removeAttr("title"); + } + + _detailInit(e) { + var detailRow = e.detailRow; + var model = e.data; + kendo.bind(detailRow, model); + + e.detailCell.find("textarea.autoSize").autosize(); + + var files1 = []; + var files2 = []; + var files3 = []; + + if (typeof model.get("attachments") !== "undefined") { + var modelArray = model.get("attachments"); + modelArray.forEach(att => { + if (typeof att.fileName !== "undefined" && att.remove != true) { + var attch = {}; + attch.name = '' + att.fileName + ''; + attch.title = att.fileName; + attch.extension = '.' + att.fileName.split('.').pop(); + attch.fileUid = att.fileUid; + if (att.attachmentType === "TRANSPORT_OWNERSHIP_PROOF") { + files3.push(attch); + } else if (att.attachmentType === "PROOF_OF_PAYMENT") { + files2.push(attch); + } else if (att.attachmentType === "INVOICE") { + files1.push(attch); + } + } + }); + } + + + e.detailCell.find("#claim-id1").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id1"), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.controller._onUploadSuccess(e, "INVOICE", "#postingAllowance-invoice-grid") + }, + localization: { + select: "Select File ..." + }, + files: files1 + }); + + + e.detailCell.find("#claim-id2").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id2"), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.controller._onUploadSuccess(e, "PROOF_OF_PAYMENT", "#postingAllowance-invoice-grid") + }, + localization: { + select: "Select File ..." + }, + files: files2 + }); + + e.detailCell.find("#claim-id3").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id3"), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.controller._onUploadSuccess(e, "TRANSPORT_OWNERSHIP_PROOF", "#postingAllowance-invoice-grid") + }, + localization: { + select: "Select File ..." + }, + files: files3 + }); + + } + + + validate() { + var validator = $($al.view._templates.data.wrapperSelector).kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + } + }, + messages: { + requiredFieldEmpty: "Required Field", + + } + }).data("kendoValidator"); + + + return validator.validate(); + } + + + modelPermissions() { + $al.controller.postingAllowanceCommon.modelPermissionsCommon(); + + // Create top-up permission + $al.controller.postingAllowanceCommon.setTopupPermission( $al.model._viewModel.isBackOffice ); + + + $al.model._viewModel.canOwnAtLeastOnePostingAllowance = $al.model.permissions.canOwnAtLeastOnePostingAllowance; + $al.model._viewModel.canConsult = $al.model.permissions.canConsult; + if ($al.model._viewModel.isBackOffice) { //BACK OFFICE permissions + + // Set flag to see the DELETE button in the comments (regardless of state) + $al.model._viewModel.canDeleteComments = $al.view.postingAllowanceCommon.hasDeleteCommentsPermission(); + $al.model._viewModel.showActionsBox = true; + //Permission to show buttons, in case of needing a security checker I do it here instead of a template + + if ($al.model._viewModel.postingAllowance.state === 'DRAFT') { + + // Show comments section only if there some. + $al.model._viewModel.canSaveAsDraft = $al.model.permissions.canSaveChanges; + $al.model._viewModel.commentsVisible = true; + // Cannot add/delete comments + $al.model._viewModel.canReject = $al.model.permissions.canReject; + $al.model._viewModel.canEditTotalAmount = $al.model.permissions.canApprove; + $al.model._viewModel.isOriginAirportEnabled = true; + if(!$al.model._viewModel.canSaveAsDraft && !$al.model._viewModel.canReject){ + $al.model._viewModel.showActionsBox = false; + $al.controller.disableAllElements(); + } + + } else if ($al.model._viewModel.postingAllowance.state === 'AWAITING') { + + $al.model._viewModel.showDivider = true; + $al.model._viewModel.canApprove = $al.model.permissions.canApprove; + $al.model._viewModel.canReject = $al.model.permissions.canReject; + $al.model._viewModel.canSave = $al.model.permissions.canSaveChanges; + $al.model._viewModel.isOriginAirportEnabled = true; + $al.model._viewModel.canEditTotalAmount = $al.model.permissions.canApprove; + $al.model._viewModel.canEditGrid = $al.model.permissions.canEditRemPostingAllowance; + $al.model._viewModel.canEditGridInline = + ( ($al.model.permissions.canEditRemPostingAllowance || $al.model.permissions.isOwner) ? {mode: "inline"} : false ); + $al.model._viewModel.canEditTotalAmount = $al.model.permissions.canApprove; + + if(!$al.model._viewModel.canApprove && + !$al.model._viewModel.canReject && + !$al.model._viewModel.canSave){ + $al.model._viewModel.showActionsBox = false; + $al.controller.disableAllElements(); + } + } else if ($al.model._viewModel.postingAllowance.state === 'APPROVED') { + + $al.model._viewModel.canReject = $al.model.permissions.canReject; + $al.model._viewModel.canPaySysper = $al.model.permissions.canPaySysper; + $al.model._viewModel.canMarkAsPaid = $al.model.permissions.canPayManually; + $al.model._viewModel.showDivider = true; + $al.model._viewModel.isOriginAirportEnabled = false; + $al.model._viewModel.isOriginPeriodEnabled = false; + $al.model._viewModel.isPaymentPeriodEnabled = false; + $al.model._viewModel.isInvoiceGridEnabled = false; + $al.model._viewModel.canEditTotalAmount = false; + $al.model._viewModel.canRefreshPlaceOriginFromSySper=false; + + if(!$al.model._viewModel.canReject && + !$al.model._viewModel.canPaySysper && + !$al.model._viewModel.canMarkAsPaid){ + $al.model._viewModel.showActionsBox = false; + } + } else if ($al.model._viewModel.postingAllowance.state === 'REJECTED') { + + $al.model._viewModel.canResubmit = $al.model.permissions.canResubmit; + $al.model._viewModel.canEditTotalAmount = false; + $al.model._viewModel.isOriginAirportEnabled = false; + $al.model._viewModel.isOriginPeriodEnabled = false; + $al.model._viewModel.isPaymentPeriodEnabled = false; + $al.model._viewModel.isInvoiceGridEnabled = false; + $al.model._viewModel.canRefreshPlaceOriginFromSySper=false; + if(!$al.model._viewModel.canResubmit){ + $al.model._viewModel.showActionsBox = false; + } + } else if ($al.model._viewModel.postingAllowance.state === 'PAID') { + $al.model._viewModel.canRegularize = $al.controller.postingAllowanceCanBeRegularized(); + $al.model._viewModel.showActionsBox = $al.model._viewModel.canRegularize; + $al.model._viewModel.showPaymentInfo = true; + $al.model._viewModel.showPaymentAbacInfoLink = true; + $al.model._viewModel.isOriginAirportEnabled = false; + $al.model._viewModel.isOriginPeriodEnabled = false; + $al.model._viewModel.isPaymentPeriodEnabled = false; + $al.model._viewModel.isInvoiceGridEnabled = false; + $al.model._viewModel.canEditTotalAmount = false; + $al.model._viewModel.canReject = false; + $al.model._viewModel.postingAllowancePaymentDateFormatted = kendo.toString(kendo.parseDate($al.model._viewModel.postingAllowance.paymentDate), 'MMM dd, yyyy'); + $al.model._viewModel.canRefreshPlaceOriginFromSySper=false; + $al.model._viewModel.canShowChildPostingAllowanceLink = $al.controller.showChildPostingAllowanceLink(); + if($al.controller.isRegularizationCreated){ + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewRegularization, null, { postingAllowanceId: $al.model._viewModel.postingAllowance.childPostingAllowanceId})); + $al.controller.isRegularizationCreated = false; + } + } + + } else { + + $al.model._viewModel.showPaymentInfo = false; + $al.model._viewModel.showActionsBox = false; + $al.model._viewModel.isOriginAirportEnabled = false; + $al.model._viewModel.isOriginPeriodEnabled = false; + $al.model._viewModel.isPaymentPeriodEnabled = false; + $al.model._viewModel.isInvoiceGridEnabled = false; + $al.model._viewModel.postingAllowancePaymentDateFormatted = kendo.toString(kendo.parseDate($al.model._viewModel.postingAllowance.paymentDate), 'MMM dd, yyyy'); + $al.model._viewModel.canRefreshPlaceOriginFromSySper=false; + + if ($al.model._viewModel.postingAllowance.state === 'DRAFT') { + + $al.model._viewModel.isDraft = true; + + } else if ($al.model._viewModel.postingAllowance.state === 'AWAITING') { + + $al.model._viewModel.isAwaiting = true; + + } else if ($al.model._viewModel.postingAllowance.state === 'APPROVED') { + + $al.model._viewModel.isApproved = true; + + } else if ($al.model._viewModel.postingAllowance.state === 'REJECTED') { + + $al.model._viewModel.isRejected = true; + + } else if ($al.model._viewModel.postingAllowance.state === 'PAID') { + + $al.model._viewModel.isPaid = true; + $al.model._viewModel.showPaymentInfo = true; + + } + } + if($al.model._viewModel.canOwnAtLeastOnePostingAllowance || + $al.model.permissions.hasOrganisationsWithListAuthority || + $al.model.permissions.hasOrganisationIndependentListAuthority || + $al.model._viewModel.canConsult){ + $al.model._viewModel.canAccessPostingAllowance = true; + } + + } + + postingAllowanceCanBeRegularized() { + return typeof ($al.model.postingAllowance.childPostingAllowanceId + === "undefined" + || $al.model._viewModel.postingAllowance.childPostingAllowanceId + === null) && $al.model.canBeRegularized + && $al.model.permissions.canCreateRegularization; + } + + showChildPostingAllowanceLink() { + return typeof $al.model.postingAllowance.childPostingAllowanceId !== "undefined" && $al.model._viewModel.postingAllowance.childPostingAllowanceId !== null; + } + //disable all option + + disableAllElements(){ + $al.model._viewModel.showActionsBox = false; + $al.model._viewModel.showPaymentInfo = false; + $al.model._viewModel.showPaymentAbacInfoLink = false; + $al.model._viewModel.isOriginAirportEnabled = false; + $al.model._viewModel.isOriginPeriodEnabled = false; + $al.model._viewModel.isPaymentPeriodEnabled = false; + $al.model._viewModel.isInvoiceGridEnabled = false; + $al.model._viewModel.canEditTotalAmount = false; + $al.model._viewModel.canReject = false; + $al.model._viewModel.postingAllowancePaymentDateFormatted = kendo.toString(kendo.parseDate($al.model._viewModel.postingAllowance.paymentDate), 'MMM dd, yyyy'); + $al.model._viewModel.canRefreshPlaceOriginFromSySper=false; + } + //refresh place of origin from sysper + doRefreshPlaceOfOrigin() { + + var muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + $al.model._restCalls.updatePlaceOfOrigin.execute({postingAllowanceId: $postingAllowanceId},null, null, null,$al.controller.refreshPlaceOfOriginResponse,null,muteAnankeErrorToast); + } + + doRefreshDependentsAddress() { + + var muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + $al.model._restCalls.refreshDependentsAddress.execute({postingAllowanceId: $postingAllowanceId},null, null, null,$al.controller.refreshDependentsAddressResponse,null,muteAnankeErrorToast); + } + + _refreshPlaceOfOrigin() { + $al.controller.doRefreshPlaceOfOrigin(); + } + + _refreshDependentsAddress() { + $al.controller.doRefreshDependentsAddress(); + } + + refreshPlaceOfOriginResponse(data){ + + if (data.status === 200) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.refresh_place_of_origin); + $al.model.refreshAfterUpdateState(data); + }else{ + const validationErrors = $al.controller._extractMessagesFromErrorResponse(data); + $al.view._showWarnDialog( + $al.controller._languageBundle.alerts.refresh_place_of_origin_error_message, validationErrors); + } + + + } + + refreshDependentsAddressResponse(data){ + + if (data.status === 200) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.refresh_address_of_dependents); + $al.model.refreshAfterUpdateState(data); + }else{ + const validationErrors = $al.controller._extractMessagesFromErrorResponse(data); + $al.view._showWarnDialog( + $al.controller._languageBundle.alerts.refresh_address_of_dependents_error_message, validationErrors); + } + + + } + + savePlaceOfOriginAirport(){ + if($al.model.postingAllowance.savePlaceOfOriginAirport){ + if( typeof $al.model.postingAllowance.originCityName != "undefined"){ + let placeOriginPlace= { + //cityCode: + countryCode: $al.model._viewModel.postingAllowance.originCountryCode, + cityName:$al.model._viewModel.postingAllowance.originCityName, + iataCode:$al.model._viewModel.postingAllowance.originIataCode, + airportName: $al.model._viewModel.postingAllowance.originAirportName + } + var muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + $al.model._restCalls.savePlaceOfOriginAirportPost.execute(null,placeOriginPlace, null, null,$al.controller.savePlaceOfOriginAirportOnComplete,null,muteAnankeErrorToast); + } + } + + } + + savePlaceOfOriginAirportOnComplete(data){ + + if (data.status === 200) { + $a.toast.showSuccess("Airport <=> Place of Origin mapping added for future reference"); + $al.model.refreshAfterUpdateState(data); + }else if (data.status === 409) { + $a.toast.showError( + "Place of Origin - IATA code mapping already exists. "); + $al.model.refreshAfterUpdateState(data); + } else{ + const validationErrors = $al.controller._extractMessagesFromErrorResponse(data); + $al.view._showWarnDialog( + $al.controller._languageBundle.alerts.refresh_place_of_origin_error_message, validationErrors); + } + + } + _getPlaceOfOriginAirport(){ + + $al.model._restCalls.getPlaceOfOriginAirport.execute(null,{cityName: "VEURNE", countryCode:"BEL"}, null, null,null,null); + + + } + + +} + +$al.mvc(PostingAllowanceModel, PostingAllowanceView, PostingAllowanceController, true); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/allowances.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/allowances.js new file mode 100644 index 0000000..de2c2cf --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/allowances.js @@ -0,0 +1,679 @@ +class Model { + + constructor() { + this.urls = { + action: { + viewTud: $a.utils.url(null, "/requests/view-tud.do"), + viewTotalRem: $a.utils.url(null, "/requests/view-total-rem.do"), + viewAdvance: $a.utils.url(null, "/requests/view-adv-rem.do"), + viewClearing: $a.utils.url(null, "/requests/view-clr-rem.do"), + viewInstallation: $a.utils.url(null, "/requests/view-installation.do"), + viewTopup: $a.utils.url(null, "/requests/view-topup.do"), + viewResettlement: $a.utils.url(null, "/requests/view-resettlement.do"), + } + }; + + this._restCalls = { + list: new $a.GetRestCall(null, "/internal/api/allowances"), + saveUserPreference: new $a.PostRestCall(null, "/internal/api/user-preferences"), + getUserPreferences: new $a.GetRestCall(null, "/internal/api/user-preferences"), + permissions: new $a.GetRestCall(null, "/internal/api/permissions") + }; + // Default filter: + var iniFilter = {}; + if ($isBackOffice) { + iniFilter = { + logic: "or", + filters: [{ + field: "status", + operator: "equals", + value: $requestStatus.APPROVED.code + }, { + field: "status", + operator: "equals", + value: $requestStatus.AWAITING.code + }] + }; + } + // Check if there is filter in session: + var checkFilter = sessionStorage.getItem("e-rights_empty_entlmt_list_filter"); + if (checkFilter) { + iniFilter = JSON.parse(checkFilter); + + iniFilter.filters.forEach(f => { + if (f.field === "startDate" || f.field === "createdAt") { + f.value = new Date(f.value); + } + }) + } + + this.dataSource = new kendo.data.DataSource({ + pageSize: 25, + transport: { + read: this._restCalls.list.settings() + }, + dataType: "json", + schema: { + model: { + fields: { + id: { + type: "number" + }, + declarationId: { + type: "number" + }, + movementFileId: { + type: "number" + }, + entitlementTypeId: { + type: "number" + }, + requestStringId: { + type: "string" + }, status: { + type: "string" + }, calcTotalAmount: { + type: "number" + }, calcTotalAmountCurrency: { + type: "string", defaultValue: "EUR", + }, totalAmount: { + type: "number" + }, totalAmountCurrency: { + type: "string", defaultValue: "EUR", + }, entitlement: { + type: "string" + }, lastName: { + type: "string" + }, firstName: { + type: "string" + }, startDate: { + type: "date" + }, createdAt: { + type: "date" + }, to: { + type: "string" + }, fileId: { + type: "string" + }, requestType: { + type: "string" + }, requestTypeForUI: { + type: "string" + }, budgetLine: { + type: "string" + }, + paymentRequestNumber: { + type: "string" + }, + paymentOrder: { + type: "string" + }, + abacStatus: { + type: "string" + }, + abacWorkflowStatus: { + type: "string" + }, + p2pHubOrderStatus:{ + type: "string" + } + + } + } + }, + serverFiltering: false, + serverPaging: false, + serverSorting: false, + sort: { + field: "createdAt", + dir: "desc" + }, + // Initial filter, possibly found in sessionStorage + filter: iniFilter + }); + + } + + _create() { + $a.navigation.open($a.utils.formatUrl($al.model.urls.action.create, null, null), "_self"); + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.controller._onLoadData); + dataPoolExecutor.add("permissions", $al.model._restCalls.permissions); + dataPoolExecutor.add("userPreferences", $al.model._restCalls.getUserPreferences, null, {pagePath: "reports/allowances.do"}); + dataPoolExecutor.run(); + } + +} + +class View { + + constructor() { + this._elements = new $a.DataContainer("view"); + this._templates = new $a.DataContainer("view"); + + this._templates.node("content").data(new $a.KendoTemplateData()); + this._templates.node("actions").data(new $a.KendoTemplateData()); + this._templates.node("actions").node("edit").data(new $a.KendoTemplateData()); + + this._templates.node("gridStatus").data(new $a.KendoTemplateData()); + this._elements.data(new $a.KendoElementData(), "grid"); + + this._filter_values = { + statusDS: [{ + status: $requestStatus.DRAFT.code, + label: $requestStatus.DRAFT.label + }, { + status: $requestStatus.AWAITING.code, + label: $requestStatus.AWAITING.label + }, { + status: $requestStatus.APPROVED.code, + label: $requestStatus.APPROVED.label + }, { + status: $requestStatus.PAID.code, + label: $requestStatus.PAID.label + }, { + status: $requestStatus.REJECTED.code, + label: $requestStatus.REJECTED.label + }, { + status: $requestStatus.SENT_TO_P2P.code, + label: $requestStatus.SENT_TO_P2P.label + } + ] + }; + + this.requestStates = { + Draft: "DRAFT", + Approved: "APPROVED", + Awaiting: "AWAITING", + Paid: "PAID", + Rejected: "REJECTED", + SentToP2P: "SENT_TO_P2P", + } + this.requestTypes = { + Advance: "Advance", + TUD: "TUD", + Clearing: "Clearing", + Reimbursement: "Reimbursement", + Installation: "Installation", + Topup: "Top-up", + Resettlement: "Resettlement", + } + this._filter_requestTypeForUI_values = { + requestTypeForUIDS: [{ + requestTypeForUI: 'Advance' + }, { + requestTypeForUI: 'TUD' + }, { + requestTypeForUI: 'Clearing' + }, { + requestTypeForUI: 'Reimbursement' + }, { + requestTypeForUI: 'Installation' + }, { + requestTypeForUI: 'Top-up' + }, { + requestTypeForUI: 'Resettlement' + }] + }; + this._filter_abacWorkflowStatus_values = { + abacWorkflowStatusDS: [{ + abacWorkflowStatus: 'FAILED' + }, { + abacWorkflowStatus: 'PROCESSING' + }, { + abacWorkflowStatus: 'MOD0' + }, { + abacWorkflowStatus: 'PEND3' + }, { + abacWorkflowStatus: 'PEND-3' + }, { + abacWorkflowStatus: 'PEND10' + },{ + abacWorkflowStatus: 'PEND-10' + }, { + abacWorkflowStatus: 'PEND20' + }, { + abacWorkflowStatus: 'PEND25' + }, { + abacWorkflowStatus: 'PEND30' + }, { + abacWorkflowStatus: 'CLO0' + }, { + abacWorkflowStatus: 'CLO100' + }] + }; + + this._filter_p2pHubOrderStatus_values = { + p2pHubOrderStatusDS: [{ + p2pHubOrderStatus: 'ERR' + }, { + p2pHubOrderStatus: 'INIT' + }, { + p2pHubOrderStatus: 'VERIF' + }, { + p2pHubOrderStatus: 'EXEC' + }, { + p2pHubOrderStatus: 'SUCCESS' + }, { + p2pHubOrderStatus: 'REJ' + },{ + p2pHubOrderStatus: 'SENT_TO_P2P' + }] + }; + + + this._filter_entitlement_values = { + entitlementDS: [{ + entitlement: 'Removal' + }, { + entitlement: 'Take up Duty' + }, { + entitlement: 'Installation' + }, { + entitlement: 'Resettlement' + }, { + entitlement: 'Exit from Storage' + }] + }; + + + this._filter_options = { + operators: { + string: { + contains: "Contains", + startswith: "Starts With", + endswith: "Ends With", + eq: "Is Equal To", + doesnotcontain: "Doesn't contain" + } + + } + } + + } + + render(userPreference) { + + + $al.view._templates.content.data.compile(); + + $al.view._elements.grid.element.kendoGrid({ + dataSource: $al.model.dataSource, + pageable: { + pageSize: 25, + pageSizes: [25, 50, 100, 500] + }, + sortable: true, + resizable: true, + scrollable: true, + columnMenu: false, + filterable: { + extra: false, + search: true + }, + excel: { + fileName: "allowances.xlsx", + proxyURL: $al.model._restCalls.list, + filterable: true, + allPages: true + }, + columns: [ + { + field: "requestStringId", + title: "ID", + width: 130, + attributes: {class: "pr-0"}, + filterable: $al.view._filter_options + }, + { + field: "entitlement", title: "Entitlement", + width: "140px", + filterable: { + multi: true, + dataSource: $al.view._filter_entitlement_values.entitlementDS + } + }, + { + field: "requestTypeForUI", + title: "Request Type", + + width: "100px", + filterable: { + multi: true, + dataSource: $al.view._filter_requestTypeForUI_values.requestTypeForUIDS + + } + }, + { + field: "createdAt", + title: "Date", + width: "100px", + format: "{0:d}" + }, + { + field: "status", + title: "Status", + width: "100px", + attributes: {class: "pr-0"}, + template: '#=status#', + filterable: { + multi: true, + dataSource: $al.view._filter_values.statusDS + } + }, + { + field: "lastName", + title: "Last Name", + width: "10%", + filterable: $al.view._filter_options, + minResizableWidth: 100 + }, + { + field: "firstName", + title: "First Name", + width: "10%", + filterable: $al.view._filter_options, + minResizableWidth: 100 + }, + { + field: "from", + title: "From", + width: "15%", + filterable: $al.view._filter_options, + minResizableWidth: 100 + }, + { + field: "to", + title: "To", + width: "15%", + filterable: $al.view._filter_options, + minResizableWidth: 100 + }, + { + field: "totalAmount", + title: "Amount", + hidden: true, + width: "140px", + template: ' #=data.totalAmount?kendo.toString(data.totalAmount,"n2"):(data.calcTotalAmount?kendo.toString(data.calcTotalAmount,"n2"):"")# #=data.totalAmount?data.totalAmountCurrency:(data.calcTotalAmount?kendo.toString(data.calcTotalAmountCurrency,"n2"):"")#', + headerAttributes: {class: "text-right"}, + attributes: {class: "text-right"} + }, + { + field: "paymentRequestNumber", + title: "Payment request", + width: "15%", + filterable: $al.view._filter_options, + template: $al.view._paymentRequestTemplate, + hidden: true + }, + { + field: "paymentOrder", + title: "Payment Order", + width: "150px", + template: $al.view._paymentOrderTemplate, + filterable: $al.view._filter_options, + hidden: true + }, + { + field: "startDate", + title: "Start", + width: "100px", + format: "{0:d}", + hidden: true + }, + { + field: "budgetLine", + title: "Commitment Position", + width: "100px", + filterable: $al.view._filter_options, + hidden: true + }, + { + field: "abacWorkflowStatus", + title: "Abac Status", + width: "110px", + attributes: {class: "pr-0"}, + template: $al.view._abacWorkflowStatusTemplate, + filterable: { + multi: true, + dataSource: $al.view._filter_abacWorkflowStatus_values.abacWorkflowStatusDS + }, + //hidden: true + }, + { + field: "p2pHubOrderStatus", + title: "P2P Status", + width: "110px", + attributes: {class: "pr-0"}, + template: $al.view._p2PHubWorkflowStatusTemplate, + filterable: { + multi: true, + dataSource: $al.view._filter_p2pHubOrderStatus_values.p2pHubOrderStatusDS + }, + //hidden: true + }, + { + headerTemplate: "", + id: "ColumnMenu", + command: [ + { + name: "edit", + text: "Edit", + template: "", + } + ], + attributes: {style: "white-space: nowrap; position; relative"}, + width: "50px", + overflow: "never" + } + ], + + dataBound: function (e) { + // Data updated, save filter + var currentFilter = e.sender.dataSource.filter(); + if (!currentFilter) { + currentFilter = {logic: 'and', filters: []}; + } + var filterString = JSON.stringify(currentFilter); + sessionStorage.setItem("e-rights_empty_entlmt_list_filter", filterString); + + $al.view._updateClearFilterButton(); + + }, + + filter: function (e) { + }, + + filterMenuOpen: function (e) { + } + + }); + + $al.view._elements.grid.component = "kendoGrid"; + + //set the user preferences if exists + + if (userPreference.preferences) { + + var options = JSON.parse(userPreference.preferences); + options.columns[10].template = $al.view._paymentRequestTemplate + options.columns[11].template = $al.view._paymentOrderTemplate + options.columns[14].template = $al.view._abacWorkflowStatusTemplate + if ((typeof options != 'undefined') && (options != null) && (options != '')) { + + $al.view._elements.grid.component.setOptions({ + columns: options.columns, + autoBind: false + }); + } + } + + $("#columnMenuButton").kendoColumnMenu({ + filterable: false, + sortable: false, + dataSource: $al.view._elements.grid.element.data("kendoGrid").dataSource, + //dataSource: $al.model.dataSource, + columns: true, + owner: $al.view._elements.grid.element.data("kendoGrid"), + }); + + // save the user preferences when a column action is performed + $al.view._elements.grid.component.bind("columnShow", $al.controller._saveUserPreference); + $al.view._elements.grid.component.bind("columnHide", $al.controller._saveUserPreference); + + // Make the row clickable since there is only 1 button. + $("#view-grid").on("click", "tbody tr", function (e) { + $al.controller._goToRequestTab(this); + }); + + // Everything rendered: Update Clear Filter Button + $al.view._updateClearFilterButton(); + + } + + _updateClearFilterButton() { + var currentFilter = $("#view-grid").data("kendoGrid").dataSource.filter(); + var emptyFilter = !currentFilter || currentFilter.filters.length == 0; + $("#clear_mfile_list_filters_button").css("display", emptyFilter ? "none" : "inline-block"); + } + + _abacWorkflowStatusTemplate(e) { + let returnValue = ''; + if (e.requestTypeForUI === $al.view.requestTypes.Resettlement + && e.status !== $al.view.requestStates.Paid) { + returnValue = ''; + } else if (e.abacWorkflowStatus != null) { + returnValue = '
    ' + + 'circle' + + e.abacWorkflowStatus + '
    '; + } + return returnValue; + } + _p2PHubWorkflowStatusTemplate(e) { + let returnValue = ''; + if (e.requestTypeForUI === $al.view.requestTypes.Resettlement + && e.status !== $al.view.requestStates.Paid) { + returnValue = ''; + } else if (e.p2pHubOrderStatus != null) { + returnValue = '
    ' + + 'circle' + + e.p2pHubOrderStatus + '
    '; + } + return returnValue; + } + + _paymentRequestTemplate(e) { + let returnValue = ''; + if (e.requestTypeForUI === $al.view.requestTypes.Resettlement + && e.status !== $al.view.requestStates.Paid) { + returnValue = ''; + } else if (e.paymentRequestNumber != null) { + returnValue = e.paymentRequestNumber; + } + return returnValue; + + } + + _paymentOrderTemplate(e) { + let returnValue = ''; + if (e.requestTypeForUI === $al.view.requestTypes.Resettlement + && e.status !== $al.view.requestStates.Paid) { + returnValue = ''; + } else if (e.paymentOrder != null) { + returnValue = e.paymentOrder; + } + return returnValue; + } +} + + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.reports.allowances", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.model.init(); + } + + _onLoadData(data) { + $al.view.render(data.get("userPreferences").data); + + $al.controller._bindPermissions(data.get("permissions").data); + + $al.notifyOnReadyMvc(); + } + + _bindPermissions(permissions) { + $al.model.permissions = permissions; + + var viewModel = new kendo.data.Model.define({ + canCreate: permissions.canCreate, + canExport: permissions.canExport + }); + + kendo.bind($al.view._templates.content.data.wrapperSelector, new viewModel({})); + } + + _getUserPreferences() { + $al.model._restCalls.getUserPreferences.execute(null, {pagePath: "reports/allowances.do"}, $al.controller._onLoadUserPreferences) + } + + _saveUserPreference(e) { + let options = $al.view._elements.grid.component.getOptions(); + + let optionsJson = kendo.stringify(options); + let userPref = { + pagePath: "reports/allowances.do", + preferences: optionsJson + }; + + $al.model._restCalls.saveUserPreference.execute(null, userPref, null); + } + + + _exportEmptyEntitlementsRates(source) { + $al.view._elements.grid.component.saveAsExcel(); + } + + _goToRequestTab(source) { + var item = $al.view._elements.grid.component.dataItem($(source).closest("tr")); + + if (item.requestTypeForUI === $al.view.requestTypes.Advance) { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewAdvance, null, {requestId: item.id})); + } else if (item.requestTypeForUI === $al.view.requestTypes.TUD) { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewTud, null, {requestId: item.id})); + } else if (item.requestTypeForUI === $al.view.requestTypes.Reimbursement) { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewTotalRem, null, {requestId: item.id})); + } else if (item.requestTypeForUI === $al.view.requestTypes.Clearing) { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewClearing, null, {requestId: item.id})); + } else if (item.requestTypeForUI === $al.view.requestTypes.Installation) { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewInstallation, null, {requestId: item.id})); + } else if (item.requestTypeForUI === $al.view.requestTypes.Topup) { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewTopup, null, {requestId: item.id})); + } else if (item.requestTypeForUI === $al.view.requestTypes.Resettlement) { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewResettlement, null, {requestId: item.id})); + } + + } + + _clearAllFilters() { + // Reset filter, this will trigger the dataBound event + var emptyFilter = {logic: 'and', filters: []}; + $("#view-grid").data("kendoGrid").dataSource.filter(emptyFilter); + } + +} + +getSessionStorageID(); + +$al.mvc(Model, View, Controller, true); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.adv.rem.request.bo.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.adv.rem.request.bo.js new file mode 100644 index 0000000..b7602e1 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.adv.rem.request.bo.js @@ -0,0 +1,1592 @@ +class RequestModel { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.model(); + }); + this._restCalls = { + + getRequest: new $a.GetRestCall(null, "/internal/api/adv-rem-requests/{requestId}"), + getBankInfo: new $a.GetRestCall(null, "/internal/api/bank-accounts"), + movementFile: new $a.GetRestCall(null, "/internal/api/movement-files/{fileId}"), + updateRequest: new $a.PutRestCall(null, "/internal/api/adv-rem-requests"), + getStateHistory: new $a.GetRestCall(null, "/internal/api/adv-rem-requests/{requestId}/stateMachineHistory"), + changeStateRequest: new $a.PutRestCall(null, "/internal/api/adv-rem-requests/stateMachineEvent/{stateMachineEvent}/{requestId}"), + permissions: new $a.GetRestCall(null, "/internal/api/permissions"), + exchangeRates: new $a.GetRestCall(null, "/internal/api/exchange-rates"), + appParameters: new $a.GetRestCall(null, "/internal/api/app-parameters"), + getClearingRequest: new $a.GetRestCall(null, "/internal/api/clearing-requests/{requestId}"), + refreshAbacStateForRequest: new $a.PutRestCall(null, "/internal/api/abac/workflow/{requestId}"), + getChildRequest: new $a.GetRestCall(null, "/internal/api/requests/{requestId}"), + validatePaymentOrder: new $a.GetRestCall(null, "/internal/api/summa/validateOrder/{orderId}"), + getAllOrderResposes: new $a.GetRestCall(null, "/internal/api/summa/order-response?requestId={requestId}"), + + }; + this.urls = { + action: { + viewMovementFile: $a.utils.url(null, "/movement-files/view.do"), + viewRequest: $a.utils.url(null, "/requests/view-adv-rem.do"), + viewClearingRequest: $a.utils.url(null, "/requests/view-clr-rem.do"), + abacDetailsForm: $a.utils.url(null, "/summa/p2p-payments-details.do"), + showAbacInfo: $a.utils.url(null, "/abac/abac-info.do") + + } + }; + this.previousTotal90PercentCp = 0; + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model.onRequestRetrieved); + + dataPoolExecutor.add("request", $al.model._restCalls.getRequest, {requestId: $requestId}); + dataPoolExecutor.add("stateMachineHistory", $al.model._restCalls.getStateHistory, {requestId: $requestId}); + dataPoolExecutor.add("exchangeRates", $al.model._restCalls.exchangeRates, null, null); + dataPoolExecutor.add("appParameters", $al.model._restCalls.appParameters, null, {paramType: "ADVANCE_REMOVAL"}); + dataPoolExecutor.add("childrenRequest", $al.model.requestCommon._restCalls.getRequestsByParent, {requestId: $requestId}); + + dataPoolExecutor.add("requestComments", $al.model.requestCommon._restCalls.getRequestComments, {requestId: $requestId}); + dataPoolExecutor.add("allOrderResposes",$al.model._restCalls.getAllOrderResposes, {requestId: $requestId}); + + dataPoolExecutor.run(); + + } + + + refreshRequest() { + $al.model.init(); + } + + refreshAfterUpdateState(data) { + $al.model._viewModel.request.state = data.state; + $al.model.refreshRequest(); + } + + onRequestRetrieved(data) { + $al.model.request = data.get("request").data; + $al.model.request.children = data.get("childrenRequest").data; + //Map is easier to work with + var AppParametersArr = data.get("appParameters").data; + $al.model.appParameters = new Map(AppParametersArr.map(i => [i.key, i.value])); + $al.model.requestComments = data.get("requestComments").data; + $al.model.allOrderResposes =data.get("allOrderResposes").data; + + + + $al.model.stateMachineHistory = data.get("stateMachineHistory").data; + $al.model.exchangeRates = data.get("exchangeRates").data; + + var dataPoolExecutor2 = new $a.RestCallPoolExecutor($al.model.onMovementFileRetrieved); + + + + + dataPoolExecutor2.add("movementFile", $al.model._restCalls.movementFile, {fileId: $al.model.request.declaration.movementFileId}); + $al.model.entMaxDropDownSortMap = new Map([ + ['SURFACE', 1], + ['CAR', 2], + ['AIRFREIGHT', 3], + ['STORAGE', 4] + + ]); + dataPoolExecutor2.run(); + } + + onMovementFileRetrieved(data) { + + $al.model.request.hasClearing= false; + $al.model.movementFile = data.get("movementFile").data; + if(typeof $al.model.request.childrenId != 'undefined'){ + $al.model.request.children.forEach((x, i) => + { + + if(x.requestType == 'ClearingRequest'){ + $al.model.request.hasClearing= true; + $al.model.request.clearingId= x.id; + $al.model.clearingRequest = x; + } + + } + + ); + + } + + //use airfright or volume storage depending on hod or nfp + $al.model.maximunVolume = $al.model.appParameters.get("MAXIMUM_VOLUME_PERSONAL"); + if ($al.view.requestCommon._isHodAirOrFutureJobIsNFP()) { + $al.model.maximunVolume = $al.model.request.volumeAirFreightCeiling; + } + // One more step in this chain of rest calls + $al.model._restCalls.getBankInfo.execute(null, {personId: $al.model.request.staffMember.id}, $al.model.onBankInfonRetrieved); + } + + onBankInfonRetrieved(data) { + $al.model.bankInfo = data; + $al.model._restCalls.permissions.execute(null, {movementFileId: $al.model.movementFile.id}, $al.model.onPermissionsRetrieved); + } + + onPermissionsRetrieved(data) { + $al.model.permissions = data; + + + $al.view._initializeView(); + + $al.view.render(); + $al.view._bindView(); + + } + + _onDataRetrievedValidatePaymentOrder(data) { + $al.model.validPaymentOrder = data; + var validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + paymentOrderInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_order.id + "]") && !$al.model.validPaymentOrder) { + return false; + } else { + return true; + } + }, + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentOrderInvalid: "Payment Order invalid", + invalidFormat: "Invalid format: remove spaces" + } + }).data("kendoValidator"); + if (validator.validate()) { + $al.model.requestCommon.prepareRequestForMarkAsPaid(); + + $al.controller.requestCommon.doUpdateAndMarkAsPaidRequest(); + $a.modalDialog.hide(); + } + } + +} + +class RequestView { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.view(); + }); + this._templates = new $a.DataContainer("request"); + this._elements = new $a.DataContainer("request"); + + this._templates.data(new $a.KendoTemplateData()); + + + this._elements.node("proforma").node("grid").data(new $a.KendoElementData()); + this._elements.node("payment_date").data(new $a.KendoElementData()); + this._elements.node("payment_order").data(new $a.KendoElementData()); + this._elements.node("payment_request").data(new $a.KendoElementData()); + + this._elements.node("payment_date_div").data(new $a.KendoElementData()); + this._elements.node("payment_order_div").data(new $a.KendoElementData()); + this._elements.node("payment_request_div").data(new $a.KendoElementData()); + this._elements.node("communication_side").data(new $a.KendoElementData()); + this._elements.node("communication_bottom").data(new $a.KendoElementData()); + this._elements.node("add_remove_entMax_dropdown").data(new $a.KendoElementData()); + this._elements.node("comments").node("grid").data(new $a.KendoElementData()); + + this._templates.node("proforma").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("calculation").data(new $a.KendoTemplateData()); + this._templates.node("calculation").node("staff").data(new $a.KendoTemplateData()); + this._templates.node("documents").node("view").data(new $a.KendoTemplateData()); + + this._templates.node("calculation").node("family").data(new $a.KendoTemplateData()); + this._templates.node("calculation").node("total").data(new $a.KendoTemplateData()); + // One footer "basic" + this._templates.node("basic").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("warn").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("mark_as_paid").node("dialog").data(new $a.KendoTemplateData(), "body"); + + this._templates.node("ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + + this._templates.node("comments").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("add_comment").data(new $a.KendoTemplateData()); + + } + + render() { + + + $al.view._templates.data.compile(); + $al.controller._renderCommunication(); + $al.view._templates.proforma.grid.data.compile(); + $al.view._renderProformaGrid(); + $al.view._renderAddProformaRemovalItemDropDown(); + + $al.view._templates.comments.grid.data.compile(); + $al.view._templates.add_comment.data.compile(); + + $al.view.requestCommon._renderCommentsGrid(); + + } + + renderEmptyTemplate() { + $al.view._templates.data.compile(); + } + + _cleanRemovedAttachments(proforma_entry) { + + if (!proforma_entry.attachments) { + // No attachments, ok: + return proforma_entry; + } + + var clean_attachs = []; + proforma_entry.attachments.forEach(attach => { + if (attach.fileName) { + // Preserve the ones where 'fileName' is not null (it's null for removed attachments) + clean_attachs.push(attach); + } + }); + // Overwrite 'attachments' field: + proforma_entry.attachments = clean_attachs; + return proforma_entry; + } + + + _renderProformaGrid() { + + var dataSource = new kendo.data.DataSource({ + + transport: { + read: function (options) { + options.success($al.model._viewModel.request.requestDetails); + }, + destroy: function (options) { + + //w need to clean all the parcial totals, becasue when we remove the method footerDetailTotalAmountEurFunction is not call, so it does not update the footers + $al.model._viewModel.request.sumOfSectionsTotalPersonal = 0; + $al.model._viewModel.request.sumOfSectionsTotalVehicle = 0; + $al.model._viewModel.request.sumOfSectionsTotalStorage = 0; + $al.model._viewModel.request.requestDetails = dataSource.data().slice(); + options.success($al.model._viewModel.request.requestDetails); + + //insert into the dropdown the entMax ceiling + $al.view.insertIntoDropdownEntMaxCeiling(options.data.detailType); + + }, + create: function (options) { + + + options.success($al.model._viewModel.request.requestDetails); + + }, + update: function (options) { + var data = options.data; + + // Clean attachments that were removed + data = $al.view._cleanRemovedAttachments(data); + + // Copy data back to dataList + $al.model._viewModel.request.requestDetails = dataSource.data().slice(); + + options.success(data); + + } + }, + data: $al.model._viewModel.request.requestDetails, + + schema: { + model: { + id: "id", + fields: { + id: {type: "number"}, + requestId: {type: "number"}, + detailType: {editable: false, type: "string"}, + detailTypeOrder: {type: "number", validation: {required: true}}, + volume: {type: "number", validation: {required: true, min: 0}}, + weight: {type: "number"}, + insuranceRate: {type: "number", validation: {required: true, min: 0}}, + goodsValue: { + amount: {type: "number", validation: {required: true, min: 0}}, + currency: {type: "string"} + }, + proforma: { + amount: {type: "number", validation: {required: true, min: 0}}, + currency: {type: "string"} + + }, + exchangeRate: {exchangeRate: "number", validation: {required: true, min: 0}}, + + exchangeRateCurrency: {defaultValue: "EUR"}, + + proformaExchangeRate: {type: "number"}, + invoice: { + amount: {type: "number"}, + currency: {type: "string"} + }, + amount: { + amount: {type: "number"}, + currency: {type: "string"} + }, + attachments: [{ + id: {type: "number"}, + requestDetailId: {type: "number"}, + fileName: {type: "string"}, + fileUid: {type: "string"}, + attachmentType: {type: "string"}, + + }] + + }, + DetailTotalAmountEur: function () { + return this.proforma.amount / this.exchangeRate; + } + } + }, + group: { + field: "detailTypeOrder", + aggregates: [ + {field: "volume", aggregate: "sum"}, + {field: "insuranceRate", aggregate: "max"}, + {field: "goodsValue.amount", aggregate: "sum"}, + {field: "DetailTotalAmountEur", aggregate: "sum"} + + ], + }, + aggregate: [ + {field: "DetailTotalAmountEur", aggregate: "sum"}, + {field: "volume", aggregate: "sum"}, + {field: "goodsValue.amount", aggregate: "sum"}, + ] + }); + + var columns_desc = [ + {hidden: true, field: "id"}, + { + field: "detailType", + title: "Type", + attributes: {class: "px-0 font-weight-medium"}, + headerAttributes: {class: "pl-0"}, + editor: $al.view.detailTypeTemplate, + template: $al.view.detailTypeTemplate, + groupFooterTemplate: "Total : ", + width: "11%" + }, + { + field: "detailTypeOrder", + title: "TypeOrder", + hidden: true, + groupHeaderTemplate: $al.view.requestCommon.detailTypeOrderTemplate + }, + { + field: "volume", //Column 3 + title: "Volume / Weight", + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + editor: $al.view.requestCommon.numberCubicMeterEditor, + template: $al.view.requestCommon.volumeRateTemplate, + aggregates: ["sum"], + groupFooterTemplate: $al.view.requestCommon.groupFooterVolumeFunction, + footerAttributes: {class: "text-right pl-0"}, + width: "13%" + }, + { + field: "weight",//Column 4 + title: "Volume / Weight", + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + editor: $al.view.requestCommon.numberKgEditor, + width: "13%", + hidden: true, + + }, + { + field: "insuranceRate", + title: "Insurance Rate", + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: $al.view.insuranceRateTemplate, + editor: $al.view.numberPercentEditor, + width: "8%" + }, + { + field: "goodsValue.amount", + title: "Current Value of Goods", + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: "#= kendo.toString(goodsValue.amount, \"n2\") # #= goodsValue.currency #", + //format: '{0:n2} EUR', + editor: $al.view.requestCommon.goodsValueEditor, + aggregates: ["sum"], + groupFooterTemplate: $al.view.requestCommon.currentValueGroupFooterTemplate, + footerAttributes: {class: "text-right pl-0"}, + width: "13%", + }, + { + field: "proforma.amount", + title: "Amount on proforma", + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: "#= kendo.toString(proforma.amount, \"n2\") # #=exchangeRateCurrency#", + format: '{0:n2}', + editor: $al.view.requestCommon.proformaAmountEditor, + width: "13%", + //footerTemplate: "
    Declared amount

    Advance Payment (90%)
    ", + }, + { + field: "exchangeRateCurrency", // Column 8 + title: "Proforma Currency", + editor: $al.view.currencyDropDownEditor, + attributes: {class: "pl-0"}, + //template: "#=exchangeRateCurrency#", + template: "", + width: "10%", + hidden: true + }, + { + field: "DetailTotalAmountEur()", // Column 9 + title: "Amount in Euro", + aggregates: ["sum"], + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: "#= kendo.toString(DetailTotalAmountEur(), \"n2\") # EUR", + groupFooterTemplate: $al.view.footerDetailTotalAmountEurFunction, + //footerTemplate: "
    ssss
    ", + footerAttributes: {class: "text-right pl-0"}, + editor: " ", + width: "13%" + }, + { + field: "attachments", + title: "Proforma Invoices", + headerAttributes: {class: "col-attachments"}, + attributes: {class: "pr-0"}, + template: $al.view._templates.documents.view.data.template, + editor: " ", + width: "15%", + }, + { + command: [ + { + name: "edit", + // template: "Add add", + template: "edit", + + text: {edit: "", update: "", cancel: ""} + }, + { + name: "destroy", + template: "close", + text: "" + } + ], + + attributes: {class: "pl-0 pr-0 pr-xxl-2 text-right"}, + headerAttributes: {class: "col-command"}, + hidden: !$al.model._viewModel.canEditGrid + } + ]; + + $al.view._elements.proforma.grid.data.element.kendoGrid({ + save: function (e) { + if (e.model.detailType === 'AIRFREIGHT') { + this.hideColumn(4); + this.showColumn(3); + } + this.hideColumn(8); // Proforma Currency + this.showColumn(9); // Amount(EUR) + this.collapseRow($('[data-uid=' + e.model.uid + ']')); + }, + cancel: function (e) { + + + //insert into the dropdown the entMax ceiling, when the insert was done just now + + $al.view.insertIntoDropdownEntMaxCeiling(e.model.detailType); + + if (e.model.detailType === 'AIRFREIGHT') { + this.hideColumn(4); + this.showColumn(3); + } + this.hideColumn(8); // Proforma Currency + this.showColumn(9); // Amount(EUR) + this.collapseRow($('[data-uid=' + e.model.uid + ']')); + }, + beforeEdit: function (e) { + if (e.model.detailType === 'AIRFREIGHT') { + this.hideColumn(3); + this.showColumn(4); + } + this.showColumn(8); // Proforma Currency + this.hideColumn(9); // Amount(EUR) + this.collapseRow($('tr.k-master-row')); + this.expandRow($('[data-uid=' + e.model.uid + ']')); + + }, + dataSource: dataSource, + + noRecords: { + template: "" + }, + scrollable: false, + sortable: false, + resizable: false, + detailTemplate: kendo.template($("#claims-edit-template").html()), + detailInit: $al.controller._detailInit, + detailExpand: function (e) { + /* The result can be observed in the DevTools(F12) console of the browser. */ + + }, + columns: columns_desc, + + editable: $al.model._viewModel.canEditGridInline, + dataBound: $al.view._onDataBound + }); + + $al.view._elements.proforma.grid.data.component = "kendoGrid"; + + + $('textarea.autoSize').autosize(); + } + + _getElementForDropDown(detailType) { + return { + type: detailType, + description: $al.controller._languageBundle.advance_removal.request_detail_label[detailType], + order: $al.model.entMaxDropDownSortMap.get(detailType) + }; + } + + _renderAddProformaRemovalItemDropDown() { + + let dropDownDataSource = []; + + var grid = $al.view._elements.proforma.grid.data.element.data("kendoGrid"); + + + let request_detail_type = $al.view._getElementForDropDown("AIRFREIGHT"); + dropDownDataSource.push(request_detail_type); + request_detail_type = $al.view._getElementForDropDown("SURFACE"); + dropDownDataSource.push(request_detail_type); + + $al.model.entMax.forEach(emax => { + + if (emax.type !== "SURFACE" && emax.type !== "AIRFREIGHT") { + let toDelete = []; + + if (grid.dataSource.data() && grid.dataSource.data().length > 0) { + toDelete = grid.dataSource.data().filter(d => d.detailType === emax.type); + } + + + if (typeof toDelete[0] === 'undefined' && emax.enable && typeof emax.value != "undefined") {//It is not inside the grid we add them + request_detail_type = $al.view._getElementForDropDown(emax.type); + dropDownDataSource.push(request_detail_type); + + + } + } + + }); + + + var dataSourceEntMax = new kendo.data.DataSource({ + data: dropDownDataSource, + sort: {field: "order", dir: "asc"} + }); + + var dropdownlist = $al.view._elements.add_remove_entMax_dropdown.data.element.kendoDropDownList({ + dataSource: dataSourceEntMax, + dataTextField: "description", + dataValueField: "type", + optionLabel: 'ADD PROFORMA', + enable: $al.model._viewModel.canEditGrid, + optionLabelTemplate: 'ADD PROFORMA', + // remove reduntant optionlabel inside the dropdown as we are using a kendoDropdownList + open: function () { + $al.view._elements.add_remove_entMax_dropdown.data.element.getKendoDropDownList().list.find(".k-list-optionlabel").hide(); + }, + autoWidth: true, + change: function () { + var typeOfRemoval = this.value(); + var detailTypeOrder = 1; + // Find the group based on type + if (typeOfRemoval === 'STORAGE') { + detailTypeOrder = 3; + } else if (typeOfRemoval === 'CAR') { + detailTypeOrder = 2; + } else if (typeOfRemoval === '') { + return true; + + } + + // Add row in right group + var index = 100; //random hard-coded index to force row to appear last + + var dataSource = grid.dataSource; + + var newItem = dataSource.insert(index, { + id: null, + detailTypeOrder: detailTypeOrder, + requestId: $requestId, + detailType: typeOfRemoval, + volume: "", + insuranceRate: "", + goodsValue: {amount: "", currency: "EUR"}, + proforma: {amount: "", currency: "EUR"}, + invoice: {amount: 0, currency: "EUR"}, + amount: {amount: 0, currency: "EUR"}, + exchangeRateCurrency: 'EUR', + exchangeRate: 1, + newItem: true + }); + var newRow = grid.items().filter("[data-uid='" + newItem.uid + "']"); + grid.editRow(newRow); + + // Reset dropdownlist once clicked + $al.view._elements.add_remove_entMax_dropdown.data.element.data("kendoDropDownList").value(-1); + + //delete from dropdown after inserting in the grid + let toDelete = this.dataSource.data().filter(item => item.type === typeOfRemoval); + if (detailTypeOrder !== 1) { //we do not remove arifreight or surface they can add as many as they want + this.dataSource.remove(toDelete[0]); + } + + } + }); + + + if (!$al.model._viewModel.canEditGrid) { // in view mode we hide proforma dropdown + $al.view._elements.add_remove_entMax_dropdown.data.element.data("kendoDropDownList").wrapper.hide(); + } + } + + _initializeView() { + + var viewModel = new kendo.data.Model.define(); + $al.model.request = $al.controller.requestCommon.prepareRequestForModelView(); + $al.model.entMax = $al.controller.requestCommon._createEntMaxList(); + + var _movFileFrozen = $al.model.movementFile.state === 'CANCELLED' || $al.model.movementFile.state === 'COMPLETED'; + + $al.model._viewModel = new viewModel({ + isVisible: true, + message: " ", + name: $al.model.movementFile.jobHolder.lastName + ' ' + $al.model.movementFile.jobHolder.firstName, + perId: $al.model.request.staffMember.id, + request: $al.model.request, + entMax: $al.model.entMax, + movementFile: $al.model.movementFile, + exchangeRates: $al.model.exchangeRates, + allOrderResposes: $al.model.allOrderResposes, + movFileFrozen: _movFileFrozen, + + isBackOffice: true, + + bankInfo: $al.model.bankInfo, + + // --- Comments logic --- + commentsVisible: true, + canAddComments: true, + canDeleteComments: false, + // This is a switch: the button disappears when the text area is visible. Initial value: visible + showCommentButton: true, + showCommentInput: function() { + this.set("showCommentButton", false); + $al.view.requestCommon._scrollToBottom(); + $('textarea.autoSize').autosize(); + }, + // ---------------------- + + onSubmit: function () { + if ($al.view._validations()) { + $al.controller.doSubmitRequest(); + } + + }, + onUpdateAndApproveRequest: function () { + if ($al.view._validations()) { + $al.controller.doUpdateAndApproveRequest(); + } + }, + onRejectRequest: function () { + $al.controller.doUpdateAndRejectRequest(); + }, + showMarkAsPaidDialog: function () { + $al.controller.doShowMarkAsPaidDialog(); + }, + onDiscardChanges: function () { + $al.controller.refreshPage(); + }, + onCancelRequest: function () { + $al.controller.doCancelRequest(); + }, + onCreateTopupRequest() { + $al.controller.requestCommon.createTopupRequest( $al.model.request.id, $al.model.request.requestType ); + }, + onSaveDraft: function () { + if ($al.view._draftValidations()) { + $al.controller.doSaveDraftRequest(); + } + }, + onSave: function () { + if ($al.view._draftValidations()) { + $al.controller.doSaveRequest(); + } + }, + + onResubmit: function () { + $al.controller.doResubmit(); + }, + onCreateClearingRequest: function () { + $al.controller.doCreateClearingRequest(); + }, + showAbacInfo: function () { + $al.controller.doShowAbacInfo(); + }, + onRefreshP2pInfo: function () { + $al.controller.requestCommon.doRefreshP2pInfoAndRefresh(); + + }, + saveAndInitiatePayment: function () { + if ($al.view._initiatePaymentValidations()) { + $al.controller._saveAndInitiatePayment(); + } + + }, + showActionsBox: false, + showDivider: false, + displayClaimApproveRejectButtons: false, + canApprove: false, + canReject: false, + canMarkAsPaid: false, + canPayAbac: false, + isTotalAmountDisabled: true, + canEditGrid: false, + canCancel: false, + canDiscardChanges: false, + showPaymentInfoP2P: false, + showPaymentInfoABAC: false, + showPaymentAbacInfoLink: false, + someClaimRejected: false, + isApproved: false, + isAwaiting: false, + isRejected: false, + detailTypeOrderCategories: ["PERSONAL BELONGINGS", "VEHICLE", "STORAGE"], + appParameters: $al.model.appParameters, + maximunVolume: $al.model.maximunVolume, + sumOfSectionsTotalPersonal: 0, + sumOfSectionsTotalVehicle: 0, + sumOfSectionsTotalStorage: 0, + totalAmountApproved: 0, + canCreateClearingRequest: false, + displayChildrenRequest: false, + p2pHubOrderStatusFrontEnd:true, + abacWorkflowStateFrontEnd:false, + canRefreshAbacInfo:true, + canEditAbacInfo:false, + + + }); + + if ($a.utils.isNotNull($al.model.request.requestDetails)) { + $al.model._viewModel.request.requestDetails = $al.model.request.requestDetails; + } else { + $al.model._viewModel.request.requestDetails = []; + } + + // Format Iban code + if (!$a.utils.isNull($al.model._viewModel.request.personBankInfo) + && $al.model._viewModel.request.personBankInfo.ibanCode.length > 0) { + $al.model._viewModel.request.personBankInfo.ibanCode = $al.model._viewModel.request.personBankInfo.ibanCode.replace(/\W/gi, '').replace(/(.{4})/g, '$1 '); + } + + if ($a.utils.isNull($al.model.request.personBankInfo)) { + $al.model.request.personBankInfo = {baf: '', ibanCode: ''} + } + + $al.controller.requestCommon.modelPermissionsCommon(); + + + // Set flag to see the DELETE button in the comments (regardless of state) + $al.model._viewModel.canDeleteComments = $al.view.requestCommon.hasDeleteCommentsPermission(); + $al.view.requestCommon._logicForP2pOrderLink(); + //Permission to show buttons, in case of needing a security checker I do it here instead of a template + if ($al.model._viewModel.request.state === 'APPROVED') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.view._setCanReject($al.model.permissions.canRejectRemRequest); + $al.model._viewModel.canPayAbac = $al.model.permissions.canPayRemRequestAbac; + $al.model._viewModel.canMarkAsPaid = $al.model.permissions.canPayRemRequestManually; + $al.model._viewModel.showDivider = true; + + } else if ($al.model._viewModel.request.state === 'DRAFT') { + $al.view._setCanReject(false); + // Show comments section only if there some. + $al.model._viewModel.commentsVisible = $al.view.requestCommon._thereAreComments(false); + // Cannot add/delete comments + $al.model._viewModel.canAddComments = false; + + } else if ($al.model._viewModel.request.state === 'REJECTED') { + $al.model._viewModel.showActionsBox = !_movFileFrozen && $al.model.permissions.canResubmitRemRequest; + $al.model._viewModel.canResubmit = $al.model.permissions.canResubmitRemRequest; + + } else if ($al.model._viewModel.request.state === 'AWAITING') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.showDivider = true; + $al.model._viewModel.canApprove = $al.model.permissions.canApproveRemRequest; + $al.view._setCanReject($al.model.permissions.canRejectRemRequest); + $al.model._viewModel.canDiscardChanges = true; + $al.model._viewModel.canSave = $al.model.permissions.canEditRemRequest; + + $al.model._viewModel.canEditTotalAmount = _movFileFrozen ? false : $al.model.permissions.canEditRemRequest; + $al.model._viewModel.canEditGrid = _movFileFrozen ? false : $al.model.permissions.canEditRemRequest; + $al.model._viewModel.canEditGridInline = _movFileFrozen ? false : + ( ($al.model.permissions.canEditRemRequest || $al.model.permissions.isOwner) ? {mode: "inline"} : false ); + + } else if ($al.model._viewModel.request.state === 'PAID' || $al.model._viewModel.request.state === 'SENT_TO_P2P' ) { + if($al.model._viewModel.request.state === 'PAID'){ + $al.controller.requestCommon.setTopupPermission(true,_movFileFrozen); + $al.view.requestCommon._setCanRejectPaidType2( + $al.model.permissions.canRejectRemRequest && + (typeof $al.model.clearingRequest === 'undefined' || $al.model.clearingRequest.state === 'REJECTED')); + } + $al.view.requestCommon._logiForShowingPaymentInfo(); + + $al.model._viewModel.showPaymentAbacInfoLink = true; + // If the Adv request is in state PAID, we can only reject it if the Clearing Request does NOT exist yet + // OR the Clearing Request is in state REJECTED + + + $al.model._viewModel.requestPaymentDateFormatted = kendo.toString(kendo.parseDate($al.model.request.paymentDate), 'MMM dd, yyyy'); + $al.model._viewModel.showActionsBox = !_movFileFrozen && ( $al.model._viewModel.canReject || $al.model._viewModel.canCreateTopupRequest ); + } + + + $al.model._viewModel.declarationOfHonourList = $al.view._getDecHonourStatements($al.model._viewModel.request.state === 'AWAITING'); + } + + + + + _setCanReject(boolean_value) { + // Set value of 'canReject' + $al.model._viewModel.canReject = boolean_value; + } + _initiatePaymentValidations() { + let validationErrors = $al.view._validateBeforeInitiatingPayment(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + _validateBeforeInitiatingPayment() { + let messages = []; + + if($al.model._viewModel.request.totalAmount.amount < 0) + messages.push($al.controller._languageBundle.validations.advance_amount_should_be_positive); + + return messages; + } + + _thereIs_Abac_BankAccount(bankAccounts) { + + if (typeof bankAccounts === "undefined" || !bankAccounts.length) { + return false; + } + for (const acc of bankAccounts) { + if (acc.lef || acc.baf) { + return true; + } + } + return false; + } + + _validations() { + var validationErrors = $al.view._validateBeforeUpdatingDeclaration(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + _draftValidations() { + + var validationErrors = $al.view.requestCommon.validateMandatoryBankAccount($al.model._viewModel.request.state); + validationErrors = validationErrors.concat($al.view._validateProformas(false)); + + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + + _validateBeforeUpdatingDeclaration() { + $al.controller.validate(); + var errorMessages = []; + // Validate all Decl of Honour statements have been ticked + var checkboxes = $("#declaration_of_honour_statements_list").find("input[type=checkbox]"); + if (checkboxes.length > 0) { + var checked = $("#declaration_of_honour_statements_list").find("input[type=checkbox]:checked"); + if (checked.length < checkboxes.length) { + errorMessages.push($al.controller._languageBundle.validations.honour_some_statements_unchecked); + } + } + + // Validate also the bank account + errorMessages = errorMessages.concat($al.view.requestCommon.validateMandatoryBankAccount($al.model._viewModel.request.state)); + + // Validate proformas + errorMessages = errorMessages.concat($al.view._validateProformas(true)); + + + return errorMessages; + } + + // Get Proformas validation error messages or empty array if OK. + _validateProformas(isSubmit) { + + var messages = []; + var proformas = $al.model._viewModel.request.requestDetails; + + // Validate that there is at least one proforma + if (!proformas || proformas.length === 0) { + // There are no proformas + if (isSubmit) { + messages.push($al.controller._languageBundle.validations.no_proformas_added); + } + } else { + // Validate that each proforma entry has some attachment and the numeric fields are filled: + if (isSubmit) { + for (const prof_item of proformas) { + if (!prof_item.attachments || prof_item.attachments.length === 0) { + messages.push($al.controller._languageBundle.validations.some_proformas_have_no_attachment); + break; + } + } + } + // For submit or draft: + for (const prof_item of proformas) { + if (!prof_item.goodsValue || !prof_item.proforma + || typeof prof_item.goodsValue.amount != 'number' || typeof prof_item.proforma.amount != 'number' + // Special case: Vehicle ('CAR') does not have 'volume' field so we check when detailType is not CAR + || (typeof prof_item.volume != 'number' && prof_item.detailType != 'CAR') + || typeof prof_item.insuranceRate != 'number') { + messages.push($al.controller._languageBundle.validations.some_proformas_have_missing_fields); + + break; + } + } + } + return messages; + } + + _showWarnDialog(title, messages) { + + $a.modalDialog.showAnswer(null, + title, + $al.view._templates.warn.dialog.body.template({body_message: messages.join(" ")}), + $al.view._templates.basic.dialog.footer.template({}) + ); + } + + _bindView() { + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }); + } + + + currencyDropDownEditor(container, options) { + + let dropdownlist = $('') + .appendTo(container) + .kendoDropDownList({ + filter: "startswith", + dataTextField: "currency", + dataValueField: "currency", + dataSource: $al.model.exchangeRates, + //optionLabel: 'EUR', + autoWidth: true, + autoBind: false, + change: $al.controller.onChange, + }); + + + } + + footerDetailTotalAmountEurFunction(e) { + return $al.view.requestCommon.footerDetailTotalAmountEurFunction(e, false); + } + + _onDataBound() { + + // hide the group expand / collapse buttons + this.wrapper.find(".k-i-collapse").hide();//remove cell elements for hierarchy colum + this.wrapper.find(".k-group-col").css("width", "1px");//remove col elements for hierarchy column + + var totalAfterCap = $al.view.requestCommon.sumSubtotals(); + var total90PercentCapped = totalAfterCap * 0.9; + + $al.model._viewModel.totalAmountApproved = total90PercentCapped; + var totalAfterCapFormatted = kendo.toString(parseFloat(totalAfterCap), "n2"); + + total90PercentCapped = total90PercentCapped.toFixed(2); + + if (typeof $al.model._viewModel.request.calculatedTotalAmount === "undefined") { + $al.model._viewModel.request.calculatedTotalAmount = { + amount: '', + currency: 'EUR' + }; + } + + $al.model._viewModel.request.calculatedTotalAmount.amountFormatted = kendo.toString(parseFloat(total90PercentCapped), "n2"); + $al.model._viewModel.request.calculatedTotalAmount.amount = total90PercentCapped; + if (typeof $al.model._viewModel.request.totalAmount !== "undefined" && $al.model.previousTotal90PercentCp != total90PercentCapped && + $al.model.previousTotal90PercentCp != 0) { + + $al.model._viewModel.request.totalAmount = { + amount: total90PercentCapped, + amountFormatted: kendo.toString(parseFloat(total90PercentCapped), "n2"), + currency: 'EUR' + }; + } else { + if (typeof $al.model._viewModel.request.totalAmount === "undefined") { + //it is comming from being approve so we need to remove the total amount not to be shown + $al.model._viewModel.request.totalAmount = { + amount: total90PercentCapped, + currency: 'EUR' + }; + } + + $al.model._viewModel.request.totalAmount.amountFormatted = kendo.toString(parseFloat($al.model._viewModel.request.totalAmount.amount), "n2"); + $al.model._viewModel.request.totalAmount.amount = Number($al.model._viewModel.request.totalAmount.amount).toFixed(2); + } + + + var summaryWrapper = $(".summaryWrapper") + summaryWrapper.find("#total90PercentWrapper").html("
    " + totalAfterCapFormatted + " EUR
    "); + + $al.view.alignTotal(); + $(window).resize(function () { + $al.view.alignTotal(); + }); + + $al.model.previousTotal90PercentCp = total90PercentCapped; + + $al.view._bindView(); + } + + + alignTotal() { + // align total in summary wrapper + var colAttachmentsWidth = $(".col-attachments").width() + 24; + var colCommandWidth = 0; + if ($(".col-command").css('display') !== 'none') { + colCommandWidth = $(".col-command").width() + 24; + } + $(".resizeMeToAlignTotal").width(colAttachmentsWidth + colCommandWidth); + } + + detailTypeTemplate(dataItem) { + return $al.controller._languageBundle.advance_removal.request_detail_label[dataItem.detailType]; + + } + + insertIntoDropdownEntMaxCeiling(elemento) { + // we insert the ceiling that is not in grid and it is not in dropdown + var grid = $al.view._elements.proforma.grid.data.element.data( + "kendoGrid"); + + grid.dataSource.data().filter(d => d.detailType === elemento); + let addRemovalItemdropdownlist = $al.view._elements.add_remove_entMax_dropdown.data.element.data("kendoDropDownList"); + $al.model.entMax.forEach(ceilingToAdd => { + let toDelete = []; + + let request_detail_type = $al.view._getElementForDropDown(ceilingToAdd.type); + let itIsAlreadyThere = addRemovalItemdropdownlist.dataSource.data().filter(item => item.type === ceilingToAdd.type); + + if (grid.dataSource.data() && grid.dataSource.data().length > 0) { + toDelete = grid.dataSource.data().filter(d => d.detailType === ceilingToAdd.type); + } + + + if (typeof toDelete[0] === 'undefined' && itIsAlreadyThere.length == 0 && ceilingToAdd.enable && typeof ceilingToAdd.value != "undefined") {//It is not inside the grid we add them + addRemovalItemdropdownlist.dataSource.insert(request_detail_type); + + } + + + }); + + + } + + + _getDecHonourStatements(initialChecked) { + var statements = []; + statements.push({ + statementId: "statement_1", + statement: $al.controller._languageBundle.honour.rem_statement_1, + isChecked: initialChecked + }); + statements.push({ + statementId: "statement_2", + statement: $al.controller._languageBundle.honour.rem_statement_2, + isChecked: initialChecked + }); + statements.push({ + statementId: "statement_3", + statement: $al.controller._languageBundle.honour.rem_statement_3, + isChecked: initialChecked + }); + + return statements; + } + + insuranceRateTemplate(dataItem) { + + let warningExededInsurance = ""; + + if (dataItem.insuranceRate > Number($al.model.appParameters.get("MAXIMUM_INSURANCE_RATE"))) { + warningExededInsurance = "warning"; + } + + return kendo.toString(dataItem.insuranceRate, "n2") + " % " + warningExededInsurance + " "; + + } + + numberPercentEditor(container, options) { + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "##.## \\%", + decimals: 2, + spinners: false, + placeholder: "0 %" + }); + } + + +} + +class RequestController { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.controller(); + }); + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.requests", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + + $al.model.init(); + $al.notifyOnReadyMvc(); + } + + doUpdateAndApproveRequest() { + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._updateRequestResponse); + } + + doSubmitRequest() { + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._submitRequestResponse); + } + + + _submitRequestResponse(data) { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'SUBMIT' + }, null, null, $al.controller._submitResponse); + $al.model.refreshAfterUpdateState(data); + + } + + _updateRequestResponse(data) { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'APPROVE' + }, null, null, $al.controller._approveResponse); + $al.model.refreshAfterUpdateState(data); + + } + + _submitResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.submit_request_success); + $al.model.refreshAfterUpdateState(data); + } + + _approveResponse(data) { + + $a.toast.showSuccess($al.controller._languageBundle.alerts.approve_and_save_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doPayRequest() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'PAY' + }, null, null, $al.controller._payResponse); + } + + _payResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.pay_request_success); + $al.model.refreshAfterUpdateState(data); + } + + // Init. Payment button calls this + _saveAndInitiatePayment() { + if (typeof $al.model._viewModel.movementFile.budgetLine == "undefined") { + $a.toast.showWarning($al.controller._languageBundle.alerts.no_budget_line_found); + return null; + } + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._initiatePayment); + } + // Navigate after init. payment + _initiatePayment() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.abacDetailsForm, null, { + requestId: $requestId, + requestType: "AdvanceRequest", + movementFileId: $al.model.movementFile.id + })); + } + + doShowAbacInfo() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.showAbacInfo, null, + { + requestId: $requestId, + requestType: "AdvanceRequest", + movementFileId: $al.model.movementFile.id + }) + ); + } + + //Reject + + //update request and then call doRejectRequest to move request to rejected + doUpdateAndRejectRequest() { + + if ($al.controller.validateBeforeUpdate('REJECT')) { + if($al.model._viewModel.request.state == 'PAID' || $al.model._viewModel.request.state == 'SENT_TO_P2P'){ // in case rejecting and paid we clean abac info + $al.model.requestCommon.clearPaymentInfo(); + } + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller.doRejectRequest); + + } + } + + + validateBeforeUpdate(action) { + $al.model._viewModel.someClaimRejected = false; + let everythingOk ; + if ($al.controller.validateJustification(action)) { //check the justification is empty for action REJECT + everythingOk = true; + } else { + everythingOk = false; + } + + return everythingOk; + + } + + doCancelRequest() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'CANCEL' + }, null, null, $al.controller._cancelRequestResponse); + } + + doSaveDraftRequest() { + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._saveDraftRequest); + } + + doSaveRequest() { + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._saveRequest); + } + + _saveDraftRequest(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.save_draft_request_success); + $al.model.refreshAfterUpdateState(data); + } + + _saveRequest(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.save_request_success); + $al.model.refreshAfterUpdateState(data); + } + + //change the state to reject and _rejectRequestResponse to message and refresh page + doRejectRequest() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'REJECT' + }, null, null, $al.controller._rejectRequestResponse); + } + + //message and refresh page + _rejectRequestResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.reject_request_success); + $al.model.refreshAfterUpdateState(data); + } + + _cancelRequestResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.cancel_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doResubmit() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'RESUBMIT' + }, null, null, $al.controller._resubmitResponse); + } + + + _resubmitResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.resubmit_request_success); + $al.model.refreshAfterUpdateState(data); + + } + + validateMarkAsPaid() { + + $a.toast.showSuccess($al.controller._languageBundle.alerts.create_draft_success); + } + + //MARK as PAID + + //show model dialog and bind + doShowMarkAsPaidDialog() { + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.mark_as_paid_extra_data_title, + $al.view._templates.mark_as_paid.dialog.body.template({}), + $al.view._templates.ok_cancel.dialog.footer.template({}) + ); + $al.view._elements.payment_date.data.element.kendoDatePicker({ + value: new Date(), + parseFormats: ["dd/MM/yyyy"] + + }); + kendo.bind("#mark_as_paid_data", $al.model._viewModel.request); + + } + + //when user click ok , we validate and call doUpdateAndMarkAsPaidRequest + doValidateAndSubmitMarkAsPaid() { + if ($al.view._elements.payment_order.data.element.val() !== "") { + $al.model._restCalls.validatePaymentOrder.execute({abacId: $al.view._elements.payment_order.data.element.val()}, null, $al.model._onDataRetrievedValidatePaymentOrder); + } else { + var validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + } + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentDateInvalid: "Invalid format of Payment Date", + } + }).data("kendoValidator"); + validator.validate(); + } + + } + + + _renderCommunication() { + $al.view._elements.communication_side.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + + $al.view._elements.communication_side.data.component = "kendoListView"; + + $al.view._elements.communication_bottom.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + + $al.view._elements.communication_bottom.data.component = "kendoListView"; + } + + _prepareCommunication(data) { + if (typeof data !== "undefined" && data !== null) { + data.forEach(n => { + if (n.arrivalState) + n.arrivalState = $al.controller._languageBundle.stateMachine[n.arrivalState.toLowerCase()]; + + }); + } + return data; + } + + //discard changes + + refreshPage() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewRequest, null, {requestId: $requestId})); + } + + validateJustification(action) { + var valid = true; + if ($al.model._viewModel.someClaimRejected || action == 'REJECT') { + // Check at least one comment + valid = $al.view.requestCommon._thereAreComments(true); + } + + if (!valid) { + $a.toast.showError($al.controller._languageBundle.alerts.justification_is_mandatory_for_adv_rem_reject); + $al.view.requestCommon.showMissingCommentMessage(); + } + return valid; + } + + + onChange(e) { + + var grid = $("#request-proforma-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + dataItem.set("exchangeRate", dataItemDropBox.exchangeRate); + + } + + onChangeWeight(e) { + + var grid = $("#request-proforma-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + let calculateVolume = Number(e.sender.value()) * Number($al.model.appParameters.get("KGtoM3")); + dataItem.set("volume", calculateVolume); + + } + + + _onUploadSuccess(event) { + var attachments; + var grid = $("#request-proforma-grid").data("kendoGrid"); + var row = $(event.sender.element.closest("tr")); + var mRow = row.prev(".k-master-row") + var dataItem = grid.dataItem(mRow); + + if (typeof dataItem.attachments != 'undefined') { + attachments = dataItem.attachments; + } else { + attachments = []; + } + + if (event.operation == "remove") { + let toBeRemoved = attachments.filter(a => a.fileUid == event.files[0].fileUid)[0]; + if (typeof toBeRemoved == 'undefined') { + toBeRemoved = attachments.filter(a => a.fileUid == event.files[0].uid)[0]; + } + if (typeof toBeRemoved != 'undefined') { + toBeRemoved.remove = true; + toBeRemoved.fileName = null; + } + } else { + var attch = {}; + attch.fileUid = event.response.uid; + attch.fileName = event.response.name; + + attch.requestDetailId = dataItem.id; + attch.attachmentType = "PROFORMA"; + attachments.push(attch); + } + + dataItem.set("attachments", attachments); + dataItem.dirty = true; + + $($(".k-file-name")[0]).removeAttr("title"); + } + + _detailInit(e) { + var detailRow = e.detailRow; + var model = e.data; + kendo.bind(detailRow, model); + + e.detailCell.find("textarea.autoSize").autosize(); + + var files = []; + + if (typeof model.get("attachments") !== "undefined") { + var modelArray = model.get("attachments"); + modelArray.forEach(att => { + if (typeof att.fileName !== "undefined" && !att.remove) { + var attch = {}; + attch.name = '' + att.fileName + ''; + attch.title = att.fileName; + attch.extension = '.' + att.fileName.split('.').pop(); + attch.fileUid = att.fileUid; + files.push(attch); + } + }); + } + + e.detailCell.find("#claim-id").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id"), + remove: $al.fileManagement.onRemove, + success: $al.controller._onUploadSuccess, + localization: { + select: "Select File ..." + }, + files: files + }); + + } + + validate() { + var validator = $($al.view._templates.data.wrapperSelector).kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + } + }, + messages: { + requiredFieldEmpty: "Required Field", + + } + }).data("kendoValidator"); + + + return validator.validate(); + } +} + + +$al.mvc(RequestModel, RequestView, RequestController, true); + + + + + diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.adv.rem.request.fo.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.adv.rem.request.fo.js new file mode 100644 index 0000000..c53851b --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.adv.rem.request.fo.js @@ -0,0 +1,1416 @@ +class RequestModel { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.model(); + }); + this._restCalls = { + + getRequest: new $a.GetRestCall(null, "/internal/api/adv-rem-requests/{requestId}"), + getBankInfo: new $a.GetRestCall(null, "/internal/api/bank-accounts"), + movementFile: new $a.GetRestCall(null, "/internal/api/movement-files/{fileId}"), + updateRequest: new $a.PutRestCall(null, "/internal/api/adv-rem-requests"), + getStateHistory: new $a.GetRestCall(null, "/internal/api/adv-rem-requests/{requestId}/stateMachineHistory"), + changeStateRequest: new $a.PutRestCall(null, "/internal/api/adv-rem-requests/stateMachineEvent/{stateMachineEvent}/{requestId}"), + permissions: new $a.GetRestCall(null, "/internal/api/permissions"), + exchangeRates: new $a.GetRestCall(null, "/internal/api/exchange-rates"), + appParameters: new $a.GetRestCall(null, "/internal/api/app-parameters"), + createClearingRequest: new $a.PostRestCall(null, "/internal/api/clearing-requests"), + getClearingRequest: new $a.GetRestCall(null, "/internal/api/clearing-requests/{requestId}"), + refreshAbacStateForRequest: new $a.PutRestCall(null, "/internal/api/abac/workflow/{requestId}"), + getChildRequest: new $a.GetRestCall(null, "/internal/api/requests/{requestId}"), + + }; + this.urls = { + action: { + viewMovementFile: $a.utils.url(null, "/movement-files/view.do"), + viewRequest: $a.utils.url(null, "/requests/view-adv-rem.do"), + viewClearingRequest: $a.utils.url(null, "/requests/view-clr-rem.do") + + } + }; + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model.onRequestRetrieved); + + dataPoolExecutor.add("request", $al.model._restCalls.getRequest, {requestId: $requestId}); + dataPoolExecutor.add("stateMachineHistory", $al.model._restCalls.getStateHistory, {requestId: $requestId}); + dataPoolExecutor.add("exchangeRates", $al.model._restCalls.exchangeRates, null, null); + dataPoolExecutor.add("appParameters", $al.model._restCalls.appParameters, null, {paramType: "ADVANCE_REMOVAL"}); + dataPoolExecutor.add("childrenRequest", $al.model.requestCommon._restCalls.getRequestsByParent, {requestId: $requestId}); + dataPoolExecutor.add("requestComments", $al.model.requestCommon._restCalls.getRequestComments, {requestId: $requestId}); + + dataPoolExecutor.run(); + + } + + + refreshRequest(requestId) { + $al.model.init(); + } + + refreshAfterUpdateState(data) { + $al.model._viewModel.request.state = data.state; + $al.model.refreshRequest($al.model._viewModel.request.id); + } + + onRequestRetrieved(data) { + $al.model.request = data.get("request").data; + $al.model.request.children = data.get("childrenRequest").data; + //Map is easier to work with + var AppParametersArr = data.get("appParameters").data; + $al.model.requestComments = data.get("requestComments").data; + + $al.model.appParameters = new Map(AppParametersArr.map(i => [i.key, i.value])); + + + $al.model.stateMachineHistory = data.get("stateMachineHistory").data; + $al.model.exchangeRates = data.get("exchangeRates").data; + + var dataPoolExecutor2 = new $a.RestCallPoolExecutor($al.model.onMovementFileRetrieved); + + + + + dataPoolExecutor2.add("movementFile", $al.model._restCalls.movementFile, {fileId: $al.model.request.declaration.movementFileId}); + $al.model.entMaxDropDownSortMap = new Map([ + ['SURFACE', 1], + ['CAR', 2], + ['AIRFREIGHT', 3], + ['STORAGE', 4] + + ]); + dataPoolExecutor2.run(); + } + + onMovementFileRetrieved(data) { + + $al.model.request.hasClearing= false; + $al.model.movementFile = data.get("movementFile").data; + if(typeof $al.model.request.childrenId != 'undefined') { + $al.model.request.children.forEach((x, i) => + { + + if(x.requestType == 'ClearingRequest'){ + $al.model.request.hasClearing = true; + $al.model.request.clearingId= x.id; + $al.model.clearingRequest = x; + } + + }); + } + + + //use airfright or volume storage depending on hod or nfp + $al.model.maximunVolume = $al.model.appParameters.get("MAXIMUM_VOLUME_PERSONAL"); + if ($al.view.requestCommon._isHodAirOrFutureJobIsNFP()) { + $al.model.maximunVolume = $al.model.request.volumeAirFreightCeiling; + } + // One more step in this chain of rest calls + $al.model._restCalls.getBankInfo.execute(null, {personId: $al.model.request.staffMember.id}, $al.model.onBankInfonRetrieved); + } + + onBankInfonRetrieved(data) { + $al.model.bankInfo = data; + $al.model._restCalls.permissions.execute(null, {movementFileId: $al.model.movementFile.id}, $al.model.onPermissionsRetrieved); + } + + onPermissionsRetrieved(data) { + $al.model.permissions = data; + + + $al.view._initializeView(); + + $al.view.render(); + $al.view._bindView(); + + } + + + +} + +class RequestView { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.view(); + }); + this._templates = new $a.DataContainer("request"); + this._elements = new $a.DataContainer("request"); + + this._templates.data(new $a.KendoTemplateData()); + + + this._elements.node("proforma").node("grid").data(new $a.KendoElementData()); + this._elements.node("payment_date").data(new $a.KendoElementData()); + this._elements.node("payment_order").data(new $a.KendoElementData()); + this._elements.node("payment_request").data(new $a.KendoElementData()); + + this._elements.node("payment_date_div").data(new $a.KendoElementData()); + this._elements.node("payment_order_div").data(new $a.KendoElementData()); + this._elements.node("payment_request_div").data(new $a.KendoElementData()); + this._elements.node("communication_bottom").data(new $a.KendoElementData()); + this._elements.node("communication_side").data(new $a.KendoElementData()); + this._elements.node("add_remove_entMax_dropdown").data(new $a.KendoElementData()); + this._elements.node("comments").node("grid").data(new $a.KendoElementData()); + + this._templates.node("proforma").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("calculation").data(new $a.KendoTemplateData()); + this._templates.node("calculation").node("staff").data(new $a.KendoTemplateData()); + this._templates.node("documents").node("view").data(new $a.KendoTemplateData()); + + this._templates.node("calculation").node("family").data(new $a.KendoTemplateData()); + this._templates.node("calculation").node("total").data(new $a.KendoTemplateData()); + // One footer "basic" + this._templates.node("basic").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("warn").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("mark_as_paid").node("dialog").data(new $a.KendoTemplateData(), "body"); + + this._templates.node("ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + + this._templates.node("comments").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("add_comment").data(new $a.KendoTemplateData()); + + } + + render() { + + + $al.view._templates.data.compile(); + $al.controller._renderCommunication(); + $al.view._templates.proforma.grid.data.compile(); + $al.view._renderProformaGrid(); + $al.view._renderAddProformaRemovalItemDropDown(); + $al.controller._renderCommunication(); + + $al.view._templates.comments.grid.data.compile(); + $al.view._templates.add_comment.data.compile(); + + $al.view.requestCommon._renderCommentsGrid(); + + } + + renderEmptyTemplate() { + $al.view._templates.data.compile(); + } + + _cleanRemovedAttachments(proforma_entry) { + + if (!proforma_entry.attachments) { + // No attachments, ok: + return proforma_entry; + } + + var clean_attachs = []; + proforma_entry.attachments.forEach(attach => { + if (attach.fileName) { + // Preserve the ones where 'fileName' is not null (it's null for removed attachments) + clean_attachs.push(attach); + } + }); + // Overwrite 'attachments' field: + proforma_entry.attachments = clean_attachs; + return proforma_entry; + } + + + _renderProformaGrid() { + + var dataSource = new kendo.data.DataSource({ + + transport: { + read: function (options) { + options.success($al.model._viewModel.request.requestDetails); + }, + destroy: function (options) { + + //w need to clean all the parcial totals, becasue when we remove the method footerDetailTotalAmountEurFunction is not call, so it does not update the footers + $al.model._viewModel.request.sumOfSectionsTotalPersonal = 0; + $al.model._viewModel.request.sumOfSectionsTotalVehicle = 0; + $al.model._viewModel.request.sumOfSectionsTotalStorage = 0; + $al.model._viewModel.request.requestDetails = dataSource.data().slice(); + options.success($al.model._viewModel.request.requestDetails); + + //insert into the dropdown the entMax ceiling + $al.view.insertIntoDropdownEntMaxCeiling(options.data.detailType); + + }, + create: function (options) { + + + options.success($al.model._viewModel.request.requestDetails); + + }, + update: function (options) { + var data = options.data; + + // Clean attachments that were removed + data = $al.view._cleanRemovedAttachments(data); + + // Copy data back to dataList + $al.model._viewModel.request.requestDetails = dataSource.data().slice(); + + options.success(data); + + } + }, + data: $al.model._viewModel.request.requestDetails, + + schema: { + model: { + id: "id", + fields: { + id: {type: "number"}, + requestId: {type: "number"}, + detailType: {editable: false, type: "string"}, + detailTypeOrder: {type: "number", validation: {required: true}}, + volume: {type: "number", validation: {required: true, min: 0}}, + weight: {type: "number"}, + insuranceRate: {type: "number", validation: {required: true, min: 0}}, + goodsValue: { + amount: {type: "number", validation: {required: true, min: 0}}, + currency: {type: "string"} + }, + proforma: { + amount: {type: "number", validation: {required: true, min: 0}}, + currency: {type: "string"} + + }, + exchangeRate: {exchangeRate: "number", validation: {required: true, min: 0}}, + + exchangeRateCurrency: {defaultValue: "EUR"}, + + proformaExchangeRate: {type: "number"}, + invoice: { + amount: {type: "number"}, + currency: {type: "string"} + }, + amount: { + amount: {type: "number"}, + currency: {type: "string"} + }, + attachments: [{ + id: {type: "number"}, + requestDetailId: {type: "number"}, + fileName: {type: "string"}, + fileUid: {type: "string"}, + attachmentType: {type: "string"}, + + }] + + }, + DetailTotalAmountEur: function () { + return this.proforma.amount / this.exchangeRate; + } + } + }, + group: { + field: "detailTypeOrder", + aggregates: [ + {field: "volume", aggregate: "sum"}, + {field: "insuranceRate", aggregate: "max"}, + {field: "goodsValue.amount", aggregate: "sum"}, + {field: "DetailTotalAmountEur", aggregate: "sum"} + + ], + }, + aggregate: [ + {field: "DetailTotalAmountEur", aggregate: "sum"}, + {field: "volume", aggregate: "sum"}, + {field: "goodsValue.amount", aggregate: "sum"}, + ] + }); + + var columns_desc = [ + {hidden: true, field: "id"}, + { + field: "detailType", + title: "Type", + attributes: {class: "px-0 font-weight-medium"}, + headerAttributes: {class: "pl-0"}, + editor: $al.view.detailTypeTemplate, + template: $al.view.detailTypeTemplate, + groupFooterTemplate: "Total : ", + width: "11%" + }, + { + field: "detailTypeOrder", + title: "TypeOrder", + hidden: true, + groupHeaderTemplate: $al.view.requestCommon.detailTypeOrderTemplate + }, + { + field: "volume", //Column 3 + title: "Volume / Weight", + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + editor: $al.view.requestCommon.numberCubicMeterEditor, + template: $al.view.requestCommon.volumeRateTemplate, + aggregates: ["sum"], + groupFooterTemplate: $al.view.requestCommon.groupFooterVolumeFunction, + footerAttributes: {class: "text-right pl-0"}, + width: "13%" + }, + { + field: "weight",//Column 4 + title: "Volume / Weight", + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + editor: $al.view.requestCommon.numberKgEditor, + width: "13%", + hidden: true, + + }, + { + field: "insuranceRate", + title: "Insurance Rate", + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: $al.view.insuranceRateTemplate, + editor: $al.view.numberPercentEditor, + width: "8%" + }, + { + field: "goodsValue.amount", + title: "Current Value of Goods", + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: "#= kendo.toString(goodsValue.amount, \"n2\") # #= goodsValue.currency #", + //format: '{0:n2} EUR', + editor: $al.view.requestCommon.goodsValueEditor, + aggregates: ["sum"], + groupFooterTemplate: $al.view.requestCommon.currentValueGroupFooterTemplate, + footerAttributes: {class: "text-right pl-0"}, + width: "13%", + }, + { + field: "proforma.amount", + title: "Amount on proforma", + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: "#= kendo.toString(proforma.amount, \"n2\") # #=exchangeRateCurrency#", + format: '{0:n2}', + editor: $al.view.requestCommon.proformaAmountEditor, + width: "13%", + //footerTemplate: "
    Declared amount

    Advance Payment (90%)
    ", + }, + { + field: "exchangeRateCurrency", // Column 8 + title: "Proforma Currency", + editor: $al.view.currencyDropDownEditor, + attributes: {class: "pl-0"}, + //template: "#=exchangeRateCurrency#", + template: "", + width: "10%", + hidden: true + }, + { + field: "DetailTotalAmountEur()", // Column 9 + title: "Amount in Euro", + aggregates: ["sum"], + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: "#= kendo.toString(DetailTotalAmountEur(), \"n2\") # EUR", + groupFooterTemplate: $al.view.footerDetailTotalAmountEurFunction, + //footerTemplate: "
    ssss
    ", + footerAttributes: {class: "text-right pl-0"}, + editor: " ", + width: "13%" + }, + { + field: "attachments", + title: "Proforma Invoices", + headerAttributes: {class: "col-attachments"}, + attributes: {class: "pr-0"}, + template: $al.view._templates.documents.view.data.template, + editor: " ", + width: "15%", + }, + { + command: [ + { + name: "edit", + // template: "Add add", + template: "edit", + + text: {edit: "", update: "", cancel: ""} + }, + { + name: "destroy", + template: "close", + text: "" + } + ], + + attributes: {class: "pl-0 pr-0 pr-xxl-2 text-right"}, + headerAttributes: {class: "col-command"}, + hidden: !$al.model._viewModel.canEditGrid + } + ]; + + $al.view._elements.proforma.grid.data.element.kendoGrid({ + save: function (e) { + if (e.model.detailType === 'AIRFREIGHT') { + this.hideColumn(4); + this.showColumn(3); + } + this.hideColumn(8); // Proforma Currency + this.showColumn(9); // Amount(EUR) + this.collapseRow($('[data-uid=' + e.model.uid + ']')); + }, + cancel: function (e) { + + + //insert into the dropdown the entMax ceiling, when the insert was done just now + + $al.view.insertIntoDropdownEntMaxCeiling(e.model.detailType); + + if (e.model.detailType === 'AIRFREIGHT') { + this.hideColumn(4); + this.showColumn(3); + } + this.hideColumn(8); // Proforma Currency + this.showColumn(9); // Amount(EUR) + this.collapseRow($('[data-uid=' + e.model.uid + ']')); + }, + beforeEdit: function (e) { + if (e.model.detailType === 'AIRFREIGHT') { + this.hideColumn(3); + this.showColumn(4); + } + this.showColumn(8); // Proforma Currency + this.hideColumn(9); // Amount(EUR) + this.collapseRow($('tr.k-master-row')); + this.expandRow($('[data-uid=' + e.model.uid + ']')); + + }, + dataSource: dataSource, + + noRecords: { + template: "" + }, + scrollable: false, + sortable: false, + resizable: false, + detailTemplate: kendo.template($("#claims-edit-template").html()), + detailInit: $al.controller._detailInit, + detailExpand: function (e) { + /* The result can be observed in the DevTools(F12) console of the browser. */ + + }, + columns: columns_desc, + + editable: $al.model._viewModel.canEditGridInline, + dataBound: $al.view._onDataBound + }); + + $al.view._elements.proforma.grid.data.component = "kendoGrid"; + + + $('textarea.autoSize').autosize(); + } + + _getElementForDropDown(detailType) { + return { + type: detailType, + description: $al.controller._languageBundle.advance_removal.request_detail_label[detailType], + order: $al.model.entMaxDropDownSortMap.get(detailType) + }; + } + + _renderAddProformaRemovalItemDropDown() { + + let dropDownDataSource = []; + + var grid = $al.view._elements.proforma.grid.data.element.data("kendoGrid"); + + + let request_detail_type = $al.view._getElementForDropDown("AIRFREIGHT"); + dropDownDataSource.push(request_detail_type); + request_detail_type = $al.view._getElementForDropDown("SURFACE"); + dropDownDataSource.push(request_detail_type); + + $al.model.entMax.forEach(emax => { + + if (emax.type !== "SURFACE" && emax.type !== "AIRFREIGHT") { + let toDelete = []; + + if (grid.dataSource.data() && grid.dataSource.data().length > 0) { + toDelete = grid.dataSource.data().filter(d => d.detailType === emax.type); + } + + + if (typeof toDelete[0] === 'undefined' && emax.enable && typeof emax.value != "undefined") {//It is not inside the grid we add them + request_detail_type = $al.view._getElementForDropDown(emax.type); + dropDownDataSource.push(request_detail_type); + + + } + } + + }); + + + var dataSourceEntMax = new kendo.data.DataSource({ + data: dropDownDataSource, + sort: {field: "order", dir: "asc"} + }); + + + var dropdownlist = $al.view._elements.add_remove_entMax_dropdown.data.element.kendoDropDownList({ + dataSource: dataSourceEntMax, + dataTextField: "description", + dataValueField: "type", + optionLabel: 'ADD PROFORMA', + enable: $al.model._viewModel.canEditGrid, + optionLabelTemplate: 'ADD PROFORMA', + // remove reduntant optionlabel inside the dropdown as we are using a kendoDropdownList + open: function () { + $al.view._elements.add_remove_entMax_dropdown.data.element.getKendoDropDownList().list.find(".k-list-optionlabel").hide(); + }, + autoWidth: true, + change: function (e) { + var typeOfRemoval = this.value(); + + // Find the group based on type + if (typeOfRemoval === 'STORAGE') { + var detailTypeOrder = 3; + } else if (typeOfRemoval === 'CAR') { + var detailTypeOrder = 2; + } else if (typeOfRemoval === '') { + return true; + + } else { + var detailTypeOrder = 1; + } + + // Add row in right group + var index = 100; //random hard-coded index to force row to appear last + + var dataSource = grid.dataSource; + + var newItem = dataSource.insert(index, { + id: null, + detailTypeOrder: detailTypeOrder, + requestId: $requestId, + detailType: typeOfRemoval, + volume: "", + insuranceRate: "", + goodsValue: {amount: "", currency: "EUR"}, + proforma: {amount: "", currency: "EUR"}, + invoice: {amount: 0, currency: "EUR"}, + amount: {amount: 0, currency: "EUR"}, + exchangeRateCurrency: 'EUR', + exchangeRate: 1, + newItem: true + }); + var newRow = grid.items().filter("[data-uid='" + newItem.uid + "']"); + grid.editRow(newRow); + + // Reset dropdownlist once clicked + $al.view._elements.add_remove_entMax_dropdown.data.element.data("kendoDropDownList").value(-1); + + //delete from dropdown after inserting in the grid + let toDelete = this.dataSource.data().filter(item => item.type === typeOfRemoval); + if (detailTypeOrder !== 1) { //we do not remove arifreight or surface they can add as many as they want + this.dataSource.remove(toDelete[0]); + } + + } + }); + + + if (!$al.model._viewModel.canEditGrid) { // in view mode we hide proforma dropdown + $al.view._elements.add_remove_entMax_dropdown.data.element.data("kendoDropDownList").wrapper.hide(); + } + } + + _initializeView() { + + var viewModel = new kendo.data.Model.define(); + $al.model.request = $al.controller.requestCommon.prepareRequestForModelView(); + $al.model.entMax = $al.controller.requestCommon._createEntMaxList(); + + var _movFileFrozen = $al.model.movementFile.state === 'CANCELLED' || $al.model.movementFile.state === 'COMPLETED'; + + $al.model._viewModel = new viewModel({ + isVisible: true, + message: " ", + name: $al.model.movementFile.jobHolder.lastName + ' ' + $al.model.movementFile.jobHolder.firstName, + perId: $al.model.request.staffMember.id, + request: $al.model.request, + entMax: $al.model.entMax, + movementFile: $al.model.movementFile, + exchangeRates: $al.model.exchangeRates, + + movFileFrozen: _movFileFrozen, + + isBackOffice: false, + + bankInfo: $al.model.bankInfo, + bankAccountDropListEnabled: !_movFileFrozen && $al.view._thereIs_Abac_BankAccount($al.model.bankInfo), + + + // --- Comments logic --- + commentsVisible: $al.view.requestCommon._thereAreComments(false), + + // ---------------------- + + onSubmition: function () { + if ($al.view._validations()) { + $al.controller.doSubmitRequest(); + } + + }, + onUpdateAndApproveRequest: function () { + $al.controller.doUpdateAndApproveRequest(); + }, + onRejectRequest: function () { + $al.controller.doUpdateAndRejectRequest(); + }, + onDiscardChanges: function () { + $al.controller.refreshPage(); + }, + onCancelRequest: function () { + $al.controller.doCancelRequest(); + }, + onCreateTopupRequest() { + $al.controller.requestCommon.createTopupRequest( $al.model.request.id, $al.model.request.requestType ); + }, + onSaveDraft: function () { + if ($al.view._draftValidations()) { + $al.controller.doSaveDraftRequest(); + } + }, + onResubmit: function () { + $al.controller.doResubmit(); + }, + onCreateClearingRequest: function () { + $al.controller.doCreateClearingRequest(); + }, + showAbacInfo: function () { + $al.controller.doShowAbacInfo(); + }, + + displayClaimApproveRejectButtons: false, + showActionsBox: false, + showDivider: false, + canApprove: false, + canReject: false, + canMarkAsPaid: false, + canPayAbac: false, + isTotalAmountDisabled: true, + canEditGrid: false, + canCancel: false, + canDiscardChanges: false, + showPaymentInfo: false, + showPaymentAbacInfoLink: false, + someClaimRejected: false, + isApproved: false, + isAwaiting: false, + isRejected: false, + detailTypeOrderCategories: ["PERSONAL BELONGINGS", "VEHICLE", "STORAGE"], + appParameters: $al.model.appParameters, + sumOfSectionsTotalPersonal: 0, + sumOfSectionsTotalVehicle: 0, + sumOfSectionsTotalStorage: 0, + totalAmountApproved: 0, + canCreateClearingRequest: false, + displayChildrenRequest: false + + }); + + if ($a.utils.isNotNull($al.model.request.requestDetails)) { + $al.model._viewModel.request.requestDetails = $al.model.request.requestDetails; + } else { + $al.model._viewModel.request.requestDetails = []; + } + + // Format Iban code + if (!$a.utils.isNull($al.model._viewModel.request.personBankInfo) + && $al.model._viewModel.request.personBankInfo.ibanCode.length > 0) { + $al.model._viewModel.request.personBankInfo.ibanCode = $al.model._viewModel.request.personBankInfo.ibanCode.replace(/\W/gi, '').replace(/(.{4})/g, '$1 '); + } + + if ($a.utils.isNull($al.model.request.personBankInfo)) { + $al.model.request.personBankInfo = {baf: '', ibanCode: ''} + } + + + + + //Permission to show buttons, in case of needing a security checker I do it here instead of a template + if ($al.model._viewModel.request.state === 'DRAFT') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.showDivider = true; + $al.model._viewModel.canSubmit = $al.model.permissions.canSubmitRemRequest || $al.model.permissions.isOwner; + $al.model._viewModel.canSaveAsDraft = $al.model.permissions.canSubmitRemRequest || $al.model.permissions.isOwner; + $al.model._viewModel.canDiscardChanges = true; + + $al.model._viewModel.canEditGrid = _movFileFrozen ? false : $al.model.permissions.canSubmitRemRequest || $al.model.permissions.isOwner; + $al.model._viewModel.canEditGridInline = _movFileFrozen ? false : + ( ($al.model.permissions.canSubmitRemRequest || $al.model.permissions.isOwner) ? {mode: "inline"} : false ); + + } else if ($al.model._viewModel.request.state === 'APPROVED') { + $al.model._viewModel.isApproved = true; + //$al.model._viewModel.canPayAbac = $al.model.permissions.canPayRemRequestAbac; + //$al.model._viewModel.canMarkAsPaid = $al.model.permissions.canPayRemRequestManually; + + } else if ($al.model._viewModel.request.state === 'REJECTED') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.canResubmit = $al.model.permissions.canResubmitRemRequest || $al.model.permissions.isOwner; + $al.model._viewModel.isRejected = true; + + } else if ($al.model._viewModel.request.state === 'AWAITING') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.isAwaiting = true; + // $al.model._viewModel.canApprove = $al.model.permissions.canReviewRemRequest; + // $al.model._viewModel.canReject = $al.model.permissions.canReviewRemRequest; + $al.model._viewModel.canCancel = $al.model.permissions.canSubmitRemRequest || $al.model.permissions.isOwner; + + } else if ($al.model._viewModel.request.state === 'PAID') { + // Create top-up permission + + $al.model._viewModel.showPaymentInfo = true; + + $al.model._viewModel.requestPaymentDateFormatted = kendo.toString(kendo.parseDate($al.model.request.paymentDate), 'MMM dd, yyyy'); + // $al.model._viewModel.canReject = $al.model.permissions.canRejectPaidTudRequest; + } + + if ($al.model._viewModel.request.state === 'PAID' && !$al.model._viewModel.request.hasClearing) { + $al.controller.requestCommon.setTopupPermission(false,_movFileFrozen); + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.canCreateClearingRequest = true; + $al.model._viewModel.displayChildrenRequest = false; + } else if ( $al.model.request.children.length > 0) { + + $al.model._viewModel.canCreateClearingRequest = false; + $al.model._viewModel.displayChildrenRequest = true; + } + + $al.model._viewModel.declarationOfHonourList = $al.view._getDecHonourStatements(); + } + + _thereIs_Abac_BankAccount(bankAccounts) { + if (typeof bankAccounts === "undefined" || !bankAccounts.length) { + return false; + } + for (const acc of bankAccounts) { + if (acc.lef || acc.baf) { + return true; + } + } + return false; + } + + _validations() { + var validationErrors = $al.view._validateBeforeUpdatingDeclaration(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + _draftValidations() { + + var validationErrors = $al.view.requestCommon.validateMandatoryBankAccount($al.model._viewModel.request.state); + validationErrors = validationErrors.concat($al.view._validateProformas(false)); + + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + + _validateBeforeUpdatingDeclaration() { + //$al.controller.validate(); + var errorMessages = []; + // Validate all Decl of Honour statements have been ticked + var checkboxes = $("#declaration_of_honour_statements_list").find("input[type=checkbox]"); + if (checkboxes.length > 0) { + var checked = $("#declaration_of_honour_statements_list").find("input[type=checkbox]:checked"); + if (checked.length < checkboxes.length) { + errorMessages.push($al.controller._languageBundle.validations.honour_some_statements_unchecked); + } + } + + // Validate also the bank account + errorMessages = errorMessages.concat($al.view.requestCommon.validateMandatoryBankAccount($al.model._viewModel.request.state)); + + // Validate proformas + errorMessages = errorMessages.concat($al.view._validateProformas(true)); + + + return errorMessages; + } + + // Get Proformas validation error messages or empty array if OK. + _validateProformas(isSubmit) { + + var messages = []; + var proformas = $al.model._viewModel.request.requestDetails; + + // Validate that there is at least one proforma + if (!proformas || proformas.length === 0) { + // There are no proformas + if (isSubmit) { + messages.push($al.controller._languageBundle.validations.no_proformas_added); + } + } else { + // Validate that each proforma entry has some attachment and the numeric fields are filled: + if (isSubmit) { + for (const prof_item of proformas) { + if (!prof_item.attachments || prof_item.attachments.length === 0) { + messages.push($al.controller._languageBundle.validations.some_proformas_have_no_attachment); + break; + } + } + } + // For submit or draft: + for (const prof_item of proformas) { + if (!prof_item.goodsValue || !prof_item.proforma + || typeof prof_item.goodsValue.amount != 'number' || typeof prof_item.proforma.amount != 'number' + // Special case: Vehicle ('CAR') does not have 'volume' field so we check when detailType is not CAR + || (typeof prof_item.volume != 'number' && prof_item.detailType != 'CAR') + || typeof prof_item.insuranceRate != 'number') { + messages.push($al.controller._languageBundle.validations.some_proformas_have_missing_fields); + + break; + } + } + } + return messages; + } + + _showWarnDialog(title, messages) { + $a.modalDialog.showAnswer( + null, + title, + $al.view._templates.warn.dialog.body.template({ + body_message: messages.join(" ") + }), + $al.view._templates.basic.dialog.footer.template({}) + ); + + // 🔧 Cleanup fallback: remove stuck backdrop if no modal is visible + setTimeout(() => { + if ($('.modal-backdrop').length && !$('.modal.show').length) { + console.warn("Cleaning orphaned modal-backdrop"); + $('.modal-backdrop').remove(); + $('body').removeClass('modal-open'); + } + }, 800); + } + + _bindView() { + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }); + } + + + currencyDropDownEditor(container, options) { + + let dropdownlist = $('') + .appendTo(container) + .kendoDropDownList({ + filter: "startswith", + dataTextField: "currency", + dataValueField: "currency", + dataSource: $al.model.exchangeRates, + //optionLabel: 'EUR', + autoWidth: true, + autoBind: false, + change: $al.controller.onChange, + }); + + + } + + footerDetailTotalAmountEurFunction(e) { + return $al.view.requestCommon.footerDetailTotalAmountEurFunction(e, false); + } + + + _onDataBound(e) { + + // hide the group expand / collapse buttons + /*this.wrapper.find(".k-i-collapse").hide();//remove cell elements for hierarchy colum + this.wrapper.find(".k-group-col").css("width", "1px");//remove col elements for hierarchy column + + this.wrapper.find(".k-hierarchy-cell").css("width", "1px");*/ + + this.wrapper.find(".k-reset").hide(); + + var items = e.sender.items(); + var total = 0; + items.each(function () { + var dataItem = e.sender.dataItem(this); + var totalItem = dataItem.proforma.amount / dataItem.exchangeRate; + total += totalItem; + }); + var total90Percent = total; + var totalAfterCap = $al.view.requestCommon.sumSubtotals(); + var total90PercentCapped = totalAfterCap * 0.9; + $al.model._viewModel.totalAmountApproved = total90PercentCapped; + var totalAfterCapFormatted = kendo.toString(parseFloat(totalAfterCap), "n2"); + totalAfterCap = totalAfterCap.toFixed(2); + total90PercentCapped = total90PercentCapped.toFixed(2); + + if (typeof $al.model._viewModel.request.calculatedTotalAmount === "undefined") { + $al.model._viewModel.request.calculatedTotalAmount = {amount: '', currency: 'EUR'}; + } + $al.model._viewModel.request.calculatedTotalAmount.amountFormatted = kendo.toString(parseFloat(total90PercentCapped), "n2"); + $al.model._viewModel.request.calculatedTotalAmount.amount = total90PercentCapped; + + if ($al.model._viewModel.request.state === 'DRAFT' && typeof $al.model._viewModel.request.totalAmount !== "undefined") { + //it is comming from being approve so we need to remove the total amount not to be shown + delete $al.model._viewModel.request.totalAmount; + } + + if (typeof $al.model._viewModel.request.totalAmount === "undefined") { + // it is a new request or draft so we should use the calculated amount + $al.model._viewModel.totalAmountApprovedFormatted = kendo.toString(parseFloat(total90PercentCapped), "n2"); + $al.model._viewModel.totalAmountApproved = total90PercentCapped; + + } else { + //It is defined so this in a state that is not draft, so we show the totalamount that is the approve amount + $al.model._viewModel.totalAmountApprovedFormatted = kendo.toString(parseFloat($al.model._viewModel.request.totalAmount.amount), "n2"); + $al.model._viewModel.totalAmountApproved = Number($al.model._viewModel.request.totalAmount.amount).toFixed(2); + + } + + //var wrapper = e.sender.element.find(".summaryWrapper"); + var wrapper = $(".summaryWrapper") + + wrapper.find("#total90PercentWrapper").html("
    " + totalAfterCapFormatted + " EUR
    "); + wrapper.find("#total90PercentApprove").html("
    " + $al.model._viewModel.totalAmountApprovedFormatted + " EUR
    "); + wrapper.find("#initialAmount").html("
    \n" + $al.controller._languageBundle.initial_amount + "
    " + $al.model._viewModel.request.calculatedTotalAmount.amountFormatted + "
    "); + + $al.view.alignTotal(); + $(window).resize(function () { + $al.view.alignTotal(); + }); + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }); + + + } + + + alignTotal() { + // align total in summary wrapper + var colAttachmentsWidth = $(".col-attachments").width() + 24; + var colCommandWidth = 0; + if ($(".col-command").css('display') !== 'none') { + var colCommandWidth = $(".col-command").width() + 24; + } + $(".resizeMeToAlignTotal").width(colAttachmentsWidth + colCommandWidth); + } + + detailTypeTemplate(dataItem) { + return $al.controller._languageBundle.advance_removal.request_detail_label[dataItem.detailType]; + + } + + insertIntoDropdownEntMaxCeiling(elemento) { + // we insert the ceiling that is not in grid and it is not in dropdown + var grid = $al.view._elements.proforma.grid.data.element.data( + "kendoGrid"); + + grid.dataSource.data().filter(d => d.detailType === elemento); + let addRemovalItemdropdownlist = $al.view._elements.add_remove_entMax_dropdown.data.element.data( + "kendoDropDownList"); + $al.model.entMax.forEach(ceilingToAdd => { + let toDelete = []; + + let request_detail_type = $al.view._getElementForDropDown( + ceilingToAdd.type); + let itIsAlreadyThere = addRemovalItemdropdownlist.dataSource.data().filter( + item => item.type === ceilingToAdd.type); + + if (grid.dataSource.data() && grid.dataSource.data().length > 0) { + toDelete = grid.dataSource.data().filter(d => d.detailType === ceilingToAdd.type); + } + + + if (typeof toDelete[0] === 'undefined' && itIsAlreadyThere.length == 0 && ceilingToAdd.enable && typeof ceilingToAdd.value != "undefined") {//It is not inside the grid we add them + addRemovalItemdropdownlist.dataSource.insert(request_detail_type); + + } + + + }); + + + } + + + _getDecHonourStatements() { + var statements = []; + statements.push({ + statementId: "statement_1", + statement: $al.controller._languageBundle.honour.rem_statement_1, + isChecked: false + }); + statements.push({ + statementId: "statement_2", + statement: $al.controller._languageBundle.honour.rem_statement_2, + isChecked: false + }); + statements.push({ + statementId: "statement_3", + statement: $al.controller._languageBundle.honour.rem_statement_3, + isChecked: false + }); + + return statements; + } + + insuranceRateTemplate(dataItem) { + + let warningExededInsurance = ""; + + if (dataItem.insuranceRate > Number($al.model.appParameters.get("MAXIMUM_INSURANCE_RATE"))) { + warningExededInsurance = "warning"; + } + + return kendo.toString(dataItem.insuranceRate, "n2") + " % " + warningExededInsurance + " "; + + } + + numberPercentEditor(container, options) { + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "##.## \\%", + decimals: 2, + spinners: false, + placeholder: "0 %" + }); + } + + +} + +class RequestController { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.controller(); + }); + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.requests", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + + $al.model.init(); + $al.notifyOnReadyMvc(); + } + + doUpdateAndApproveRequest() { + //if($al.controller.validateBeforeUpdate('APPROVE')){ + + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._updateRequestResponse); + //} + } + + doSubmitRequest() { + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._submitRequestResponse); + } + + + _submitRequestResponse(data) { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'SUBMIT' + }, null, null, $al.controller._submitResponse); + $al.model.refreshAfterUpdateState(data); + + } + + _updateRequestResponse(data) { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'APPROVE' + }, null, null, $al.controller._approveResponse); + $al.model.refreshAfterUpdateState(data); + + } + + _submitResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.submit_request_success); + $al.model.refreshAfterUpdateState(data); + } + + _approveResponse(data) { + // $al.model._restCalls.changeStateRequest.execute({requestId: $requestId,stateMachineEvent : 'APPROVE'},null , $al.model.onRequestRetrieved); + $a.toast.showSuccess($al.controller._languageBundle.alerts.approve_and_save_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doPayRequest() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'PAY' + }, null, null, $al.controller._payResponse); + } + + _payResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.pay_request_success); + $al.model.refreshAfterUpdateState(data); + } + + //Reject + + //update request and then call doRejectRequest to move request to rejected + doUpdateAndRejectRequest() { + + //if($al.controller.validateBeforeUpdate('REJECT') ) { + + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller.doRejectRequest); + + //} + } + + doCancelRequest() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'CANCEL' + }, null, null, $al.controller._cancelRequestResponse); + } + + doSaveDraftRequest() { + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._saveDraftRequest); + } + + _saveDraftRequest(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.save_draft_request_success); + $al.model.refreshAfterUpdateState(data); + } + + //change the state to reject and _rejectRequestResponse to message and refresh page + doRejectRequest() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'REJECT' + }, null, null, $al.controller._rejectRequestResponse); + } + + //message and refresh page + _rejectRequestResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.reject_request_success); + $al.model.refreshAfterUpdateState(data); + } + + _cancelRequestResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.cancel_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doResubmit() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'RESUBMIT' + }, null, null, $al.controller._resubmitResponse); + } + + doCreateClearingRequest() { + $al.model._viewModel.ClearingRequest = $al.model._viewModel.request; + $al.model._restCalls.createClearingRequest.execute(null, {requestId: $al.model._viewModel.ClearingRequest.id}, $al.controller._createClearingRequestResponse); + } + + _createClearingRequestResponse(data) { + + $a.toast.showSuccess($al.controller._languageBundle.alerts.created_clearing_request_success); + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewClearingRequest, null, {requestId: data.id})); + } + + _resubmitResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.resubmit_request_success); + $al.model.refreshAfterUpdateState(data); + + } + + + + _renderCommunication() { + $al.view._elements.communication_bottom.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + $al.view._elements.communication_bottom.data.component = "kendoListView"; + + $al.view._elements.communication_side.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + $al.view._elements.communication_side.data.component = "kendoListView"; + } + + _prepareCommunication(data) { + if (typeof data !== "undefined" && data !== null) { + data.forEach(n => { + if (n.arrivalState) + n.arrivalState = $al.controller._languageBundle.stateMachine[n.arrivalState.toLowerCase()]; + + }); + } + return data; + } + + //discard changes + + refreshPage() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewRequest, null, {requestId: $requestId})); + } + + onChange(e) { + + var grid = $("#request-proforma-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + dataItem.set("exchangeRate", dataItemDropBox.exchangeRate); + + } + + onChangeWeight(e) { + + var grid = $("#request-proforma-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + + // dataItemDropBox = e.sender.dataItem(index); + let calculateVolume = Number(e.sender.value()) * Number($al.model.appParameters.get("KGtoM3")); + + // calculateVolume=$al.view.requestCommon.roundedToFixed(calculateVolume,2); + dataItem.set("volume", calculateVolume); + + } + + + _onUploadSuccess(event) { + + var grid = $("#request-proforma-grid").data("kendoGrid"); + var row = $(event.sender.element.closest("tr")); + var mRow = row.prev(".k-master-row") + var dataItem = grid.dataItem(mRow); + + if (typeof dataItem.attachments != 'undefined') { + var attachments = dataItem.attachments; + } else { + var attachments = []; + } + + if (event.operation == "remove") { + let toBeRemoved = attachments.filter(a => a.fileUid == event.files[0].fileUid)[0]; + if (typeof toBeRemoved == 'undefined') { + toBeRemoved = attachments.filter(a => a.fileUid == event.files[0].uid)[0]; + } + if (typeof toBeRemoved != 'undefined') { + toBeRemoved.remove = true; + toBeRemoved.fileName = null; + } + } else { + var attch = {}; + attch.fileUid = event.response.uid; + attch.fileName = event.response.name; + + attch.requestDetailId = dataItem.id; + attch.attachmentType = "PROFORMA"; + attachments.push(attch); + } + + dataItem.set("attachments", attachments); + dataItem.dirty = true; + + $($(".k-file-name")[0]).removeAttr("title"); + } + + _detailInit(e) { + var detailRow = e.detailRow; + var model = e.data; + kendo.bind(detailRow, model); + + e.detailCell.find("textarea.autoSize").autosize(); + + var files = []; + + if (typeof model.get("attachments") !== "undefined") { + var modelArray = model.get("attachments"); + modelArray.forEach(att => { + if (typeof att.fileName !== "undefined" && att.remove != true) { + var attch = {}; + attch.name = '' + att.fileName + ''; + attch.title = att.fileName; + attch.extension = '.' + att.fileName.split('.').pop(); + attch.fileUid = att.fileUid; + files.push(attch); + } + }); + } + + e.detailCell.find("#claim-id").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id"), + remove: $al.fileManagement.onRemove, + success: $al.controller._onUploadSuccess, + localization: { + select: "Select File ..." + }, + files: files + }); + + } + + validate() { + var validator = $($al.view._templates.data.wrapperSelector).kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + } + }, + messages: { + requiredFieldEmpty: "Required Field", + + } + }).data("kendoValidator"); + + + return validator.validate(); + } +} + +$al.mvc(RequestModel, RequestView, RequestController, true); + + + + + diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.clr.rem.request.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.clr.rem.request.js new file mode 100644 index 0000000..7c986f7 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.clr.rem.request.js @@ -0,0 +1,2637 @@ +class RequestModel { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.model(); + }); + this._restCalls = { + + getRequest: new $a.GetRestCall(null, "/internal/api/clearing-requests/{requestId}"), + getAdvanceRequest: new $a.GetRestCall(null, "/internal/api/adv-rem-requests/{requestId}"), + getBankInfo: new $a.GetRestCall(null, "/internal/api/bank-accounts"), + movementFile: new $a.GetRestCall(null, "/internal/api/movement-files/{fileId}"), + updateRequest: new $a.PutRestCall(null, "/internal/api/clearing-requests"), + getStateHistory: new $a.GetRestCall(null, "/internal/api/clearing-requests/{requestId}/stateMachineHistory"), + changeStateRequest: new $a.PutRestCall(null, "/internal/api/clearing-requests/stateMachineEvent/{stateMachineEvent}/{requestId}"), + permissions: new $a.GetRestCall(null, "/internal/api/permissions"), + exchangeRates: new $a.GetRestCall(null, "/internal/api/exchange-rates"), + exchangeRatesPerMonth: new $a.GetRestCall(null, "/internal/api/exchange-rates/{currency}"), + appParameters: new $a.GetRestCall(null, "/internal/api/app-parameters"), + refreshAbacStateForRequest: new $a.PutRestCall(null, "/internal/api/abac/workflow/{requestId}"), + validatePaymentOrder: new $a.GetRestCall(null, "/internal/api/summa/validateOrder/{orderId}"), + getAllOrderResposes: new $a.GetRestCall(null, "/internal/api/summa/order-response?requestId={requestId}"), + + }; + this.urls = { + action: { + viewMovementFile: $a.utils.url(null, "/movement-files/view.do"), + viewRequest: $a.utils.url(null, "/requests/view-clr-rem.do"), + viewAdvanceRequest: $a.utils.url(null, "/requests/view-adv-rem.do"), + abacDetailsForm: $a.utils.url(null, "/summa/p2p-payments-details.do"), + showAbacInfo: $a.utils.url(null, "/abac/abac-info.do"), + } + }; + this.preserveInvoicesTotal = true; + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model.onRequestRetrieved); + + dataPoolExecutor.add("request", $al.model._restCalls.getRequest, {requestId: $requestId}); + dataPoolExecutor.add("stateMachineHistory", $al.model._restCalls.getStateHistory, {requestId: $requestId}); + dataPoolExecutor.add("exchangeRates", $al.model._restCalls.exchangeRates, null, null); + dataPoolExecutor.add("appParameters", $al.model._restCalls.appParameters, null, {paramType: "ADVANCE_REMOVAL"}); + dataPoolExecutor.add("childrenRequest", $al.model.requestCommon._restCalls.getRequestsByParent, {requestId: $requestId}); + // dataPoolExecutor.add("exchangeRatesPerMonth", $al.model._restCalls.exchangeRatesPerMonth, {currency : "ALL"}, ); + + dataPoolExecutor.add("requestComments", $al.model.requestCommon._restCalls.getRequestComments, {requestId: $requestId}); + if( $isBackOffice) { + dataPoolExecutor.add("allOrderResposes", $al.model._restCalls.getAllOrderResposes, {requestId: $requestId}); + } + + dataPoolExecutor.run(); + + } + + + refreshRequest() { + $al.model.init(); + } + + refreshAfterUpdateState(data) { + $al.model._viewModel.request.state = data.state; + $al.model._viewModel.request.sumOfSectionsTotalPersonal = 0; + $al.model._viewModel.request.sumOfSectionsTotalVehicle = 0; + $al.model._viewModel.request.sumOfSectionsTotalStorage = 0; + $al.model.refreshRequest($al.model._viewModel.request.id); + } + + onRequestRetrieved(data) { + $al.model.request = data.get("request").data; + $al.model.requestComments = data.get("requestComments").data; + $al.model.request.children = data.get("childrenRequest").data; + + $al.controller.fixRequestDefaultValues(); + + + //Map is easier to work with + var AppParametersArr = data.get("appParameters").data; + $al.model.requestComments = data.get("requestComments").data; + if( $isBackOffice) { + $al.model.allOrderResposes =data.get("allOrderResposes").data; + } + + + $al.model.appParameters = new Map(AppParametersArr.map(i => [i.key, i.value])); + + + + + $al.model.stateMachineHistory = data.get("stateMachineHistory").data; + + $al.model.exchangeRates = data.get("exchangeRates").data; + + var dataPoolExecutor2 = new $a.RestCallPoolExecutor($al.model.onMovementFileRetrieved); + dataPoolExecutor2.add("permissions", $al.model._restCalls.permissions, null, {movementFileId: $al.model.request.declaration.movementFileId}); + // $al.model._restCalls.permissions.execute(null, {movementFileId: $al.model.movementFile.id}, $al.model.onPermissionsRetrieved); + dataPoolExecutor2.add("movementFile", $al.model._restCalls.movementFile, {fileId: $al.model.request.declaration.movementFileId}); + //$al.model._restCalls.movementFile.execute({fileId: $al.model.request.declaration.movementFileId}, null, $al.model.onMovementFileRetrieved); + + dataPoolExecutor2.add("bankInfo",$al.model._restCalls.getBankInfo, null,{personId: $al.model.request.staffMember.id}); + // $al.model._restCalls.getBankInfo.execute(null, {personId: $al.model.request.staffMember.id}, $al.model.onBankInfonRetrieved); + dataPoolExecutor2.add("advanceRequest", $al.model._restCalls.getAdvanceRequest, {requestId: $al.model.request.parentId}); + //$al.model._restCalls.getAdvanceRequest.execute({requestId: $al.model.request.parentId}, null, $al.model.onAdvanceRequestRetrieved); + + + + dataPoolExecutor2.run(); + $al.model.entMaxDropDownSortMap = new Map([ + ['SURFACE', 1], + ['CAR', 2], + ['AIRFREIGHT', 3], + ['STORAGE', 4] + + ]); + + + } + + + onMovementFileRetrieved(data) { + $al.model.movementFile = data.get("movementFile").data; + $al.model.bankInfo = data.get("bankInfo").data; + $al.model.advanceRequest = data.get("advanceRequest").data; + $al.model.permissions = data.get("permissions").data; + $al.model.request.children.push(data.get("advanceRequest").data); + //use airfright or volume storage depending on hod or nfp + $al.model.maximunVolume = $al.model.appParameters.get("MAXIMUM_VOLUME_PERSONAL"); + if ($al.view.requestCommon._isHodAirOrFutureJobIsNFP()) { + $al.model.maximunVolume = $al.model.request.volumeAirFreightCeiling; + } + $al.model.initializeView(); + + + } + + + + + initializeView() { + + if (typeof $al.model.bankInfo !== "undefined" && typeof $al.model.permissions !== "undefined" + && typeof $al.model.advanceRequest !== "undefined" && typeof $al.model.movementFile !== "undefined") { + + $al.view._initializeView(); + + $al.view.render(); + $al.view._bindView(); + } + $a.loading.toggle(false); + + } + + _onExchangeRatesByCurrencyRetrieved(data) { + $al.model.currencymonthPayment = data; + + } + + _onDataRetrievedValidatePaymentOrder(data) { + $al.model.validPaymentOrder = data; + var validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + invalidFormat: input => { + if (input.attr('required')) { + return input.val().length === input.val().trim().length; + } else { + return true; + } + }, + paymentDateInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_date.id + "]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + paymentOrderInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_order.id + "]") && !$al.model.validPaymentOrder) { + return false; + } else { + return true; + } + }, + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentDateInvalid: "Invalid format of Payment Date", + paymentOrderInvalid: "Payment Order invalid", + invalidFormat: "Invalid format: remove spaces" + } + }).data("kendoValidator"); + if (validator.validate()) { + $al.model.requestCommon.prepareRequestForMarkAsPaid(); + + $al.controller.requestCommon.doUpdateAndMarkAsPaidRequest(); + $a.modalDialog.hide(); + } + } +} + +class RequestView { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.view(); + }); + this._templates = new $a.DataContainer("request"); + this._elements = new $a.DataContainer("request"); + + this._templates.data(new $a.KendoTemplateData()); + + + this._elements.node("invoice").node("grid").data(new $a.KendoElementData()); + this._elements.node("unforeseen").node("invoices").node("grid").data(new $a.KendoElementData()); + this._elements.node("payment_date").data(new $a.KendoElementData()); + this._elements.node("payment_order").data(new $a.KendoElementData()); + this._elements.node("payment_request").data(new $a.KendoElementData()); + + this._elements.node("payment_date_div").data(new $a.KendoElementData()); + this._elements.node("payment_order_div").data(new $a.KendoElementData()); + this._elements.node("payment_request_div").data(new $a.KendoElementData()); + this._elements.node("communication").data(new $a.KendoElementData()); + this._elements.node("communication2").data(new $a.KendoElementData()); + this._elements.node("add_remove_entMax_dropdown").data(new $a.KendoElementData()); + this._elements.node("add_remove_invoices_dropdown").data(new $a.KendoElementData()); + + this._elements.node("comments").node("grid").data(new $a.KendoElementData()); + + this._templates.node("invoice").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("unforeseen").node("invoices").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("calculation").data(new $a.KendoTemplateData()); + this._templates.node("calculation").node("staff").data(new $a.KendoTemplateData()); + this._templates.node("documents").node("view").data(new $a.KendoTemplateData()); + + this._templates.node("calculation").node("family").data(new $a.KendoTemplateData()); + this._templates.node("calculation").node("total").data(new $a.KendoTemplateData()); + // One footer "basic" + this._templates.node("basic").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("warn").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("mark_as_paid").node("dialog").data(new $a.KendoTemplateData(), "body"); + + this._templates.node("ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + + this._templates.node("comments").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("add_comment").data(new $a.KendoTemplateData()); + } + + render() { + $al.view._templates.data.compile(); + $al.controller._renderCommunication(); + $al.view._templates.invoice.grid.data.compile(); + $al.view._templates.unforeseen.invoices.grid.data.compile(); + $al.view._renderInvoiceGrid(); + $al.view._renderUnforeseenInvoicesGrid(); + $al.view._renderAddInvoiceRemovalItemDropDown(); + $al.view._renderAddUnforeseenInvoicesDropDown(); + $al.controller._renderCommunication(); + + $al.view._templates.comments.grid.data.compile(); + $al.view._templates.add_comment.data.compile(); + + $al.view.requestCommon._renderCommentsGrid(); + } + + renderEmptyTemplate() { + $al.view._templates.data.compile(); + } + + _renderInvoiceGrid() { + + var dataSource = new kendo.data.DataSource({ + + transport: { + read: function (options) { + options.success($al.model._viewModel.request.requestDetails); + }, + destroy: function (options) { + + //w need to clean all the parcial totals, becasue when we remove the method footerDetailTotalAmountEurFunction is not call, so it does not update the footers + $al.model._viewModel.request.sumOfSectionsTotalPersonal = 0; + $al.model._viewModel.request.sumOfSectionsTotalVehicle = 0; + $al.model._viewModel.request.sumOfSectionsTotalStorage = 0; + $al.model._viewModel.request.requestDetails = dataSource.data().slice(); + options.success($al.model._viewModel.request.requestDetails); + + //insert into the dropdown the entMax ceiling + $al.view.insertIntoDropdownEntMaxCeiling(options.data.detailType); + + }, + create: function (options) { + + + options.success($al.model._viewModel.request.requestDetails); + + }, + update: function (options) { + var data = options.data; + + // Clean attachments that were removed + data = $al.view._cleanRemovedAttachments(data); + + // Copy data back to dataList + $al.model._viewModel.request.requestDetails = dataSource.data().slice(); + + options.success(data); + + } + }, + data: $al.model._viewModel.request.requestDetails, + + schema: { + model: { + id: "id", + fields: { + id: {type: "number"}, + requestId: {type: "number"}, + detailType: {editable: false, type: "string"}, + detailTypeOrder: {type: "number", validation: {required: true}}, + volume: {type: "number", validation: {required: true, min: 0}}, + weight: {type: "number"}, + insuranceRate: {type: "number", validation: {required: true, min: 0}}, + goodsValue: { + amount: {type: "number", validation: {required: true, min: 1}}, + currency: {type: "string"} + }, + invoice: { + amount: {type: "number", validation: {required: true, min: 1}}, + currency: {type: "string"} + + }, + exchangeRate: {exchangeRate: "number", validation: {required: true, min: 1}}, + + exchangeRateCurrency: {defaultValue: "EUR", validation: {required: true}}, + exchangePayMonth: { + type: "string", + + validation: { + required: true, + lineValidation: $al.view.lineValidation + } + }, + + invoiceExchangeRate: {type: "number", validation: {required: true}}, + + amount: { + amount: {type: "number"}, + currency: {type: "string"} + }, + attachments: [{ + id: {type: "number"}, + requestDetailId: {type: "number"}, + fileName: {type: "string"}, + fileUid: {type: "string"}, + attachmentType: {type: "string"}, + + }] + + }, + DetailTotalAmountEur: function () { + return this.invoice.amount / this.exchangeRate; + } + } + }, + group: { + field: "detailTypeOrder", + aggregates: [ + {field: "volume", aggregate: "sum"}, + {field: "insuranceRate", aggregate: "max"}, + {field: "goodsValue.amount", aggregate: "sum"}, + {field: "DetailTotalAmountEur", aggregate: "sum"} + + ], + }, + aggregate: [ + {field: "DetailTotalAmountEur", aggregate: "sum"}, + {field: "volume", aggregate: "sum"}, + {field: "goodsValue.amount", aggregate: "sum"}, + ] + }); + + var columns_desc = [ + {hidden: true, field: "id"}, + { + field: "detailType", + title: "Type", + attributes: {class: "px-0 font-weight-medium"}, + headerAttributes: {class: "pl-0"}, + editor: $al.view.detailTypeTemplate, + template: $al.view.detailTypeTemplate, + groupFooterTemplate: "Total : ", + width: "11%" + }, + { + field: "detailTypeOrder", + title: "TypeOrder", + hidden: true, + groupHeaderTemplate: $al.view.requestCommon.detailTypeOrderTemplate + }, + { + field: "volume", //Column 3 + title: "Volume / Weight", + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + editor: $al.view.requestCommon.numberCubicMeterEditor, + template: $al.view.requestCommon.volumeRateTemplate, + aggregates: ["sum"], + groupFooterTemplate: $al.view.requestCommon.groupFooterVolumeFunction, + footerAttributes: {class: "text-right pl-0"}, + width: "11%" + }, + { + field: "weight",//Column 4 + title: "Volume / Weight", + attributes: {class: "text-right"}, + headerAttributes: {class: "text-right pl-0"}, + editor: $al.view.requestCommon.numberKgEditor, + width: "11%", + hidden: true, + + }, + { + field: "insuranceRate", + title: "Insurance Rate", + attributes: {class: "text-right px-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: $al.view.requestCommon.insuranceRateTemplate, + editor: $al.view.requestCommon.numberPercentEditor, + width: "6%" + }, + { + field: "goodsValue.amount", + title: "Current Value of Goods", + attributes: {class: "text-right"}, + headerAttributes: {class: "text-right pl-0"}, + template: "#= kendo.toString(goodsValue.amount, \"n2\") # #= goodsValue.currency #", + //format: '{0:n2} EUR', + editor: $al.view.requestCommon.goodsValueEditor, + aggregates: ["sum"], + groupFooterTemplate: $al.view.requestCommon.currentValueGroupFooterTemplate, + footerAttributes: {class: "text-right pl-0"}, + width: "11%", + }, + { + field: "invoice.amount", + title: "Amount on invoice", + attributes: {class: "text-right"}, + headerAttributes: {class: "text-right pl-0"}, + template: "#= kendo.toString(invoice.amount, \"n2\") # #=exchangeRateCurrency#", + format: '{0:n2}', + editor: $al.view.requestCommon.invoiceAmountEditor, + width: "11%", + //footerTemplate: "
    Declared amount

    Advance Payment (90%)
    ", + }, + { + field: "exchangeRateCurrency", // Column 8 + title: "Invoice Currency", + editor: $al.view.currencyDropDownEditor, + attributes: {class: "pl-0"}, + //template: "#=exchangeRateCurrency#", + template: "", + width: "10%", + hidden: true, + }, + { + field: "exchangePayMonth", // Column 9 + title: "Month of Payment", + editor: $al.view.monthPaymentDropDownEditor, + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + headerTemplate: 'info
    Month of Payment
    ', + template: $al.view.templateForExchangePayMonth, + width: "10%", + //hidden: true, + }, + { + field: "DetailTotalAmountEur()", // Column 10 + title: "Amount in Euro", + aggregates: ["sum"], + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: "#= kendo.toString(DetailTotalAmountEur(), \"n2\") # EUR", + groupFooterTemplate: $al.view.footerDetailTotalAmountEurFunction, + //footerTemplate: "
    ssss
    ", + footerAttributes: {class: "text-right pl-0"}, + editor: " ", + width: "11%" + }, + { + field: "attachments", + title: "Invoice", + attributes: {class: "pr-0"}, + template: function (dataItem) { + if (typeof dataItem.attachments != 'undefined') { + dataItem.attachments.headerType = 'INVOICE'; + } + return kendo.template( + $("#request-documents-view-template").html())( + dataItem); + }, + editor: " ", + width: "10%", + }, + { + field: "attachments", + title: "Proof of Payment", + attributes: {class: "pr-0"}, + template: function (dataItem) { + if (typeof dataItem.attachments != 'undefined') { + dataItem.attachments.headerType = 'PROOF_OF_PAYMENT'; + } + return kendo.template( + $("#request-documents-view-template").html())( + dataItem); + }, + editor: " ", + width: "10%", + }, + { + field: "attachments", + title: "Bill of lading / Vehicle Ownership", + attributes: {class: "pr-0"}, + template: function (dataItem) { + if (typeof dataItem.attachments != 'undefined') { + dataItem.attachments.headerType = 'TRANSPORT_OWNERSHIP_PROOF'; + } + return kendo.template( + $("#request-documents-view-template").html())( + dataItem); + }, + editor: " ", + width: "10%", + }, + { + command: [ + { + name: "edit", + // template: "Add add", + template: "edit", + + text: {edit: "", update: "", cancel: ""} + }, + { + name: "destroy", + template: "close", + + text: "" + } + ], + width: "80px", + attributes: {class: "pl-2 pr-0 pr-xxl-2 text-right text-nowrap"}, + headerAttributes: {class: "col-command"}, + title: " ", + hidden: !$al.model._viewModel.canEditGrid + } + ]; + + $al.view._elements.invoice.grid.data.element.kendoGrid({ + save: function (e) { + if (e.model.detailType === 'AIRFREIGHT') { + this.hideColumn(4); + this.showColumn(3); + } + this.hideColumn(8); // Invoice Currency + //this.hideColumn(9); // Month of payment + this.showColumn(10); // Amount(EUR) + this.collapseRow($('[data-uid=' + e.model.uid + ']')); + + // Disable 'preserveInvoicesTotal' because user has edited invoice + $al.model.preserveInvoicesTotal = false; + }, + remove: function (e) { + // Disable 'preserveInvoicesTotal' also when user removes an invoice + $al.model.preserveInvoicesTotal = false; + }, + cancel: function (e) { + //insert into the dropdown the entMax ceiling, when the insert was done just now + $al.view.insertIntoDropdownEntMaxCeiling(e.model.detailType); + + if (e.model.detailType === 'AIRFREIGHT') { + this.hideColumn(4); + this.showColumn(3); + } + this.hideColumn(8); // Invoice Currency + //this.hideColumn(9); // Month of payment + this.showColumn(10); // Amount(EUR) + this.collapseRow($('[data-uid=' + e.model.uid + ']')); + }, + beforeEdit: function (e) { + + // This utility field is set dynamically here (we are accessing the 3 attachment buttons) + // and then read by "#claims-edit-template" in order to decide the label for the third attachment button + $al.view.nowEditingDetailType = e.model.detailType; + + if (e.model.detailType === 'AIRFREIGHT') { + this.hideColumn(3); + this.showColumn(4); + } + this.showColumn(8); // Invoice Currency + this.showColumn(9); // Month of payment + this.hideColumn(10); // Amount(EUR) + this.collapseRow($('tr.k-master-row')); + this.expandRow($('[data-uid=' + e.model.uid + ']')); + }, + dataSource: dataSource, + + noRecords: { + template: "" + }, + scrollable: true, + sortable: false, + resizable: false, + detailTemplate: kendo.template($("#claims-edit-template").html()), + detailInit: $al.controller._detailInit, + detailExpand: function (e) { + /* The result can be observed in the DevTools(F12) console of the browser. */ + }, + columns: columns_desc, + editable: $al.model._viewModel.canEditGridInline, + dataBound: $al.view._onDataBound + }); + + $al.view._elements.invoice.grid.data.component = "kendoGrid"; + + + $('textarea.autoSize').autosize(); + } + + _renderUnforeseenInvoicesGrid() { + var dataSource = new kendo.data.DataSource({ + + transport: { + read: function (options) { + options.success($al.model._viewModel.request.extraRequestDetails); + }, + destroy: function (options) { + + //w need to clean all the parcial totals, becasue when we remove the method footerDetailTotalAmountEurFunction is not call, so it does not update the footers + + $al.model._viewModel.request.extraRequestDetails = dataSource.data().slice(); + options.success($al.model._viewModel.request.extraRequestDetails); + + //insert into the dropdown the entMax ceiling + $al.view.insertIntoDropdownEntMaxCeiling(options.data.detailType); + + }, + create: function (options) { + + options.success($al.model._viewModel.request.extraRequestDetails); + + }, + update: function (options) { + var data = options.data; + + // Clean attachments that were removed + data = $al.view._cleanRemovedAttachments(data); + + // Copy data back to dataList + $al.model._viewModel.request.extraRequestDetails = dataSource.data().slice(); + + options.success(data); + + } + }, + data: $al.model._viewModel.request.extraRequestDetails, + + schema: { + model: { + id: "id", + fields: { + id: {type: "number"}, + requestId: {type: "number"}, + detailType: {editable: false, type: "string"}, + invoice: { + amount: {type: "number", validation: {required: true, min: 0}}, + currency: {type: "string"} + + }, + justification: {type: "string", validation: {required: true}}, + exchangeRate: {exchangeRate: "number", validation: {required: true, min: 0}}, + + exchangeRateCurrency: {defaultValue: "EUR"}, + exchangePayMonth: { + type: "string", + + validation: { + required: true, + lineValidation: $al.view.lineValidationUnforeseen + } + }, + invoiceExchangeRate: {type: "number", validation: {required: true}}, + + amount: { + amount: {type: "number"}, + currency: {type: "string"} + }, + attachments: [{ + id: {type: "number"}, + requestDetailId: {type: "number"}, + fileName: {type: "string"}, + fileUid: {type: "string"}, + attachmentType: {type: "string"}, + + }] + + }, + DetailTotalAmountEur: function () { + return this.invoice.amount / this.exchangeRate; + } + } + }, + aggregate: [ + {field: "DetailTotalAmountEur", aggregate: "sum"}, + ] + }); + + var columns_desc = [ + {hidden: true, field: "id"}, + { + field: "detailType", + title: "Type", + attributes: {class: "px-0 font-weight-medium"}, + headerAttributes: {class: "pl-0"}, + editor: $al.view.detailTypeTemplate, + template: $al.view.detailTypeTemplate, + footerTemplate: "Total :", + groupFooterTemplate: "Total : ", + width: "12%" + }, + { + field: "justification", + title: "Justification", + editor: $al.view.requestCommon.justificationEditor, + width: "25%", + }, + { + field: "invoice.amount", + title: "Amount on invoice", + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: "#= kendo.toString(invoice.amount, \"n2\") # #=exchangeRateCurrency#", + format: '{0:n2}', + editor: $al.view.requestCommon.invoiceAmountEditor, + width: "11%", + //footerTemplate: "
    Declared amount

    Advance Payment (90%)
    ", + }, + { + field: "exchangeRateCurrency", ///column 4 + title: "Invoice Currency", + editor: $al.view.currencyDropDownEditorUnforeseen, + attributes: {class: "pl-0"}, + //template: "#=exchangeRateCurrency#", + template: "", + width: "11%", + hidden: true + }, + { + field: "exchangePayMonth", // Column 5 + title: "Month of Payment", + editor: $al.view.monthPaymentUnforeseenDropDownEditor, + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + headerTemplate: 'info
    Month of Payment
    ', + template: $al.view.templateForExchangePayMonth, + width: "11%", + }, + { + field: "DetailTotalAmountEur()", + title: "Amount in Euro", + aggregates: ["sum"], + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: "#= kendo.toString(DetailTotalAmountEur(), \"n2\") # EUR", + footerTemplate: "
    ", + footerAttributes: {class: "text-right pl-0"}, + editor: " ", + width: "11%" + }, + { + field: "attachments", + title: "Invoice", + headerAttributes: {class: "col-invoice"}, + attributes: {class: "pr-0"}, + template: function (dataItem) { + if (typeof dataItem.attachments != 'undefined') { + dataItem.attachments.headerType = 'UNFORESEEN_INVOICE'; + } + return kendo.template( + $("#request-documents-view-template").html())( + dataItem); + }, + editor: " ", + width: "13%", + }, + { + field: "attachments", + title: "Proof of Payment", // "Bank statement", + headerAttributes: {class: "col-statement"}, + attributes: {class: "pr-0"}, + template: function (dataItem) { + if (typeof dataItem.attachments != 'undefined') { + dataItem.attachments.headerType = 'BANK_STATEMENT'; + } + return kendo.template( + $("#request-documents-view-template").html())( + dataItem); + }, + editor: " ", + width: "17%", + }, + { + command: [ + { + name: "edit", + // template: "Add add", + template: "edit", + + text: {edit: "", update: "", cancel: ""} + }, + { + name: "destroy", + template: "close", + + text: "" + } + ], + width: "80px", + attributes: {class: "pl-0 pr-0 pr-xxl-2 text-right text-nowrap"}, + headerAttributes: {class: "col-command"}, + hidden: !$al.model._viewModel.canEditGrid + } + ]; + + $al.view._elements.unforeseen.invoices.grid.data.element.kendoGrid({ + save: function (e) { + this.hideColumn(4); // Invoice Currency + this.showColumn(6); // Amount in Euro + this.collapseRow($('[data-uid=' + e.model.uid + ']')); + // Disable 'preserveInvoicesTotal' because user has edited invoice + $al.model.preserveInvoicesTotal = false; + }, + remove: function (e) { + // Disable 'preserveInvoicesTotal' also when user removes an invoice + $al.model.preserveInvoicesTotal = false; + }, + cancel: function (e) { + this.hideColumn(4); // Invoice Currency + this.showColumn(6); // Amount in Euro + this.collapseRow($('[data-uid=' + e.model.uid + ']')); + }, + beforeEdit: function (e) { + this.showColumn(4); // Invoice Currency + this.hideColumn(6); // Amount in Euro + this.collapseRow($('tr.k-master-row')); + this.expandRow($('[data-uid=' + e.model.uid + ']')); + }, + dataSource: dataSource, + + noRecords: { + template: "" + }, + scrollable: false, + sortable: false, + resizable: false, + detailTemplate: kendo.template($("#unforeseen-attachments-edit-template").html()), + detailInit: $al.controller._detailInitUnforeseenInvoices, + detailExpand: function (e) { + }, + columns: columns_desc, + + editable: $al.model._viewModel.canEditGridInline, + dataBound: $al.view._onDataBoundUnforeseenInvoices + }); + + $al.view._elements.unforeseen.invoices.grid.data.component = "kendoGrid"; + + + $('textarea.autoSize').autosize(); + } + + _getElementForDropDown(detailType) { + return { + type: detailType, + description: $al.controller._languageBundle.advance_removal.request_detail_label[detailType], + order: $al.model.entMaxDropDownSortMap.get(detailType) + }; + } + + _renderAddInvoiceRemovalItemDropDown() { + + let dropDownDataSource = []; + + var grid = $al.view._elements.invoice.grid.data.element.data("kendoGrid"); + + let request_detail_type = $al.view._getElementForDropDown("AIRFREIGHT"); + dropDownDataSource.push(request_detail_type); + request_detail_type = $al.view._getElementForDropDown("SURFACE"); + dropDownDataSource.push(request_detail_type); + + $al.model.entMax.forEach(emax => { + + if (emax.type !== "SURFACE" && emax.type !== "AIRFREIGHT") { + let toDelete = []; + + if (grid.dataSource.data() && grid.dataSource.data().length > 0) { + toDelete = grid.dataSource.data().filter(d => d.detailType === emax.type); + } + + + if (typeof toDelete[0] === 'undefined' && emax.enable && typeof emax.value != "undefined") {//It is not inside the grid we add them + request_detail_type = $al.view._getElementForDropDown(emax.type); + dropDownDataSource.push(request_detail_type); + + + } + } + + }); + + + var dataSourceEntMax = new kendo.data.DataSource({ + data: dropDownDataSource, + sort: {field: "order", dir: "asc"} + }); + + var dropdownlist = $al.view._elements.add_remove_entMax_dropdown.data.element.kendoDropDownList({ + dataSource: dataSourceEntMax, + dataTextField: "description", + dataValueField: "type", + optionLabel: 'ADD INVOICE', + enable: $al.model._viewModel.canEditGrid, + optionLabelTemplate: 'ADD INVOICE', + // remove reduntant optionlabel inside the dropdown as we are using a kendoDropdownList + open: function () { + $al.view._elements.add_remove_entMax_dropdown.data.element.getKendoDropDownList().list.find(".k-list-optionlabel").hide(); + }, + autoWidth: true, + change: function (e) { + var typeOfRemoval = this.value(); + + // Find the group based on type + if (typeOfRemoval === 'STORAGE') { + var detailTypeOrder = 3; + } else if (typeOfRemoval === 'CAR') { + var detailTypeOrder = 2; + } else if (typeOfRemoval === '') { + return true; + + } else { + var detailTypeOrder = 1; + } + + // Add row in right group + var index = 100; //random hard-coded index to force row to appear last + + var dataSource = grid.dataSource; + + var newItem = dataSource.insert(index, { + id: null, + detailTypeOrder: detailTypeOrder, + requestId: $requestId, + detailType: typeOfRemoval, + volume: "", + insuranceRate: "", + goodsValue: {amount: "", currency: "EUR"}, + invoice: {amount: "", currency: "EUR"}, + amount: {amount: 0, currency: "EUR"}, + exchangeRateCurrency: 'EUR', + exchangePayMonth: 'Select Month', + exchangeRate: 1, + newItem: true, + extraDetail: false + }); + var newRow = grid.items().filter("[data-uid='" + newItem.uid + "']"); + grid.editRow(newRow); + + // Reset dropdownlist once clicked + $al.view._elements.add_remove_entMax_dropdown.data.element.data("kendoDropDownList").value(-1); + + //delete from dropdown after inserting in the grid + let toDelete = this.dataSource.data().filter(item => item.type === typeOfRemoval); + if (detailTypeOrder !== 1) { //we do not remove arifreight or surface they can add as many as they want + this.dataSource.remove(toDelete[0]); + } + + } + }); + + + if (!$al.model._viewModel.canEditGrid) { // in view mode we hide invoice dropdown + $al.view._elements.add_remove_entMax_dropdown.data.element.data("kendoDropDownList").wrapper.hide(); + } + } + + _renderAddUnforeseenInvoicesDropDown() { + + let dropDownDataSource = [ + {type: "DEMMURRAGE", description: "Demurrage"}, + {type: "DOCK_STRIKES", description: "Dock strikes"}, + {type: "STORAGE_COST", description: "Storage cost in the port"}, + {type: "TRANSPORT_DELAYS", description: "Transport delays"}, + {type: "CLEARING_GOODS_DELAY", description: "Delay in clearing the goods in the port"}, + {type: "OTHER", description: "Other unforeseen costs"}, + ]; + + var grid = $al.view._elements.unforeseen.invoices.grid.data.element.data("kendoGrid"); + + var dropdownlist = $al.view._elements.add_remove_invoices_dropdown.data.element.kendoDropDownList({ + dataSource: dropDownDataSource, + dataTextField: "description", + dataValueField: "type", + optionLabel: 'ADD INVOICE', + enable: $al.model._viewModel.canEditGrid, + optionLabelTemplate: 'ADD INVOICE', + // remove reduntant optionlabel inside the dropdown as we are using a kendoDropdownList + open: function () { + $al.view._elements.add_remove_invoices_dropdown.data.element.getKendoDropDownList().list.find(".k-list-optionlabel").hide(); + }, + autoWidth: true, + change: function (e) { + var typeOfRemoval = this.value(); + + + // Add row in right group + var index = 100; //random hard-coded index to force row to appear last + + var dataSource = grid.dataSource; + + var newItem = dataSource.insert(index, { + id: null, + requestId: $requestId, + detailType: typeOfRemoval, + invoice: {amount: "", currency: "EUR"}, + amount: {amount: 0, currency: "EUR"}, + exchangeRateCurrency: 'EUR', + exchangePayMonth: 'Select Month', + exchangeRate: 1, + newItem: true, + extraDetail: true + }); + var newRow = grid.items().filter("[data-uid='" + newItem.uid + "']"); + grid.editRow(newRow); + + // Reset dropdownlist once clicked + $al.view._elements.add_remove_invoices_dropdown.data.element.data("kendoDropDownList").value(-1); + + // //delete from dropdown after inserting in the grid + // let toDelete = this.dataSource.data().filter(item => item.type === typeOfRemoval); + // if(detailTypeOrder !== 1){ //we do not remove arifreight or surface they can add as many as they want + // this.dataSource.remove(toDelete[0]); + // } + + } + }); + + + if (!$al.model._viewModel.canEditGrid) { // in view mode we hide invoice dropdown + $al.view._elements.add_remove_invoices_dropdown.data.element.data("kendoDropDownList").wrapper.hide(); + } + } + + _initializeView() { + + var viewModel = new kendo.data.Model.define(); + $al.model.request = $al.controller.requestCommon.prepareRequestForModelView(); + $al.model.entMax = $al.controller.requestCommon._createEntMaxList(); + + var _movFileFrozen = $al.model.movementFile.state === 'CANCELLED' || $al.model.movementFile.state === 'COMPLETED'; + + $al.model._viewModel = new viewModel({ + isVisible: true, + message: " ", + name: $al.model.movementFile.jobHolder.lastName + ' ' + $al.model.movementFile.jobHolder.firstName, + perId: $al.model.request.staffMember.id, + request: $al.model.request, + entMax: $al.model.entMax, + movementFile: $al.model.movementFile, + exchangeRates: $al.model.exchangeRates, + + bankInfo: $al.model.bankInfo, + bankAccountDropListEnabled: !_movFileFrozen && $al.view._thereIs_Abac_BankAccount($al.model.bankInfo), + + + isBackOffice: $isBackOffice, + movFileFrozen: _movFileFrozen, + + commentsVisible: $isBackOffice || $al.view.requestCommon._thereAreComments(false), + + // --- Comments logic --- + canAddComments: $isBackOffice, + canDeleteComments: false, + + // This is a switch: the button disappears when the text area is visible. Initial value: visible + showCommentButton: true, + allOrderResposes: $al.model.allOrderResposes, + showCommentInput: function() { + this.set("showCommentButton", false); + $al.view.requestCommon._scrollToBottom(); + $('textarea.autoSize').autosize(); + }, + // ---------------------- + onSubmit: function () { + + if ($al.view._validations()) { + // RIGD-1924 After the validation, we finally warn te user about the exact consequences of this submit + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.confirmation.submit_confirmation_title, + $al.view.requestCommon._templates.warn.dialog.body.template({ + body_message: $al.controller._languageBundle.confirmation.submit_confirmation_message_html, + render_html: true + }), + $al.view.requestCommon._templates.ok_cancel.dialog.footer.template( + {ok_callback: '$al.controller.doSubmitRequest()'}) + ); + } + }, + onUpdateAndApproveRequest: function () { + if ($al.view._validations()) { + + // We are saving changes in DB, so we go back to 'preserveInvoicesTotal' + $al.model.preserveInvoicesTotal = true; + + $al.controller.doUpdateAndApproveRequest(); + } + }, + onRejectRequest: function () { + $al.controller.doUpdateAndRejectRequest(); + }, + onRefreshAbacInfo: function () { + $al.controller.requestCommon.doRefreshAbacInfoAndRefresh(); + + }, + showMarkAsPaidDialog: function () { + $al.controller.doShowMarkAsPaidDialog(); + }, + showAbacInfo: function () { + $al.controller.doShowAbacInfo(); + }, + onDiscardChanges: function () { + $al.controller.refreshPage(); + }, + onCancelRequest: function () { + $al.controller.doCancelRequest(); + }, + onSaveDraft: function () { + if ($al.view._draftValidations()) { + + // We are saving changes in DB, so we go back to 'preserveInvoicesTotal' + $al.model.preserveInvoicesTotal = true; + + $al.controller.doSaveDraftRequest(); + } + }, + onSave: function () { + if ($al.view._draftValidations()) { + + // We are saving changes in DB, so we go back to 'preserveInvoicesTotal' + $al.model.preserveInvoicesTotal = true; + + $al.controller.doSaveRequest(); + } + }, + onResubmit: function () { + $al.controller.doResubmit(); + }, + saveAndInitiatePayment: function () { + if ($al.view._initiatePaymentValidations()) { + $al.controller._saveAndInitiatePayment(); + } + + }, + onRefreshP2pInfo: function () { + $al.controller.requestCommon.doRefreshP2pInfoAndRefresh(); + + }, + onCreateTopupRequest() { + $al.controller.requestCommon.createTopupRequest( $al.model.request.id, $al.model.request.requestType ); + }, + onDownloadZipfile() { + $al.controller.requestCommon.downloadZipfile( $al.model.request.id ); + }, + displayClaimApproveRejectButtons: false, + showActionsBox: false, + canApprove: false, + canReject: false, + canMarkAsPaid: false, + canPayAbac: false, + isTotalAmountDisabled: true, + canEditGrid: false, + canCancel: false, + showDivider: false, + canDiscardChanges: false, + showPaymentInfo: false, + showPaymentInfoP2P: false, + showPaymentInfoABAC: false, + showPaymentAbacInfoLink: false, + someClaimRejected: false, + isApproved: false, + isAwaiting: false, + isRejected: false, + detailTypeOrderCategories: ["PERSONAL BELONGINGS", "VEHICLE", "STORAGE"], + appParameters: $al.model.appParameters, + canCreateTopupRequest: false, + totalAmountApproved: 0, + canEditTotalAmount: false, + canDownloadZipfile: false, + + }); + + if ($a.utils.isNotNull($al.model.request.requestDetails)) { + $al.model._viewModel.request.requestDetails = $al.model.request.requestDetails; + } else { + $al.model._viewModel.request.requestDetails = []; + } + if ($a.utils.isNotNull($al.model.request.extraRequestDetails)) { + $al.model._viewModel.request.extraRequestDetails = $al.model.request.extraRequestDetails; + } else { + $al.model._viewModel.request.extraRequestDetails = []; + } + + // Format Iban code + if (!$a.utils.isNull($al.model._viewModel.request.personBankInfo) + && $al.model._viewModel.request.personBankInfo.ibanCode.length > 0) { + $al.model._viewModel.request.personBankInfo.ibanCode = $al.model._viewModel.request.personBankInfo.ibanCode.replace(/\W/gi, '').replace(/(.{4})/g, '$1 '); + } + + if ($a.utils.isNull($al.model.request.personBankInfo)) { + $al.model.request.personBankInfo = {baf: '', ibanCode: ''} + } + + $al.controller.modelPermissions(); + + // We are in Clearing Request. Decl. of Honour statements are checked by default if this is Back Office and state = AWAITING + $al.model._viewModel.declarationOfHonourList = $al.view._getDecHonourStatements($isBackOffice && $al.model._viewModel.request.state === 'AWAITING'); + } + + + _setCanReject(boolean_value) { + // Set value of 'canReject' + $al.model._viewModel.canReject = boolean_value; + } + + _thereIs_Abac_BankAccount(bankAccounts) { + + if (typeof bankAccounts === "undefined" || !bankAccounts.length) { + return false; + } + for (const acc of bankAccounts) { + if (acc.lef || acc.baf) { + return true; + } + } + return false; + } + + _validations() { + var validationErrors = $al.view._validateBeforeUpdatingDeclaration(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + _initiatePaymentValidations() { + let validationErrors = $al.view._validateBeforeInitiatingPayment(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + + lineValidation(input) { + + if (input.is("[name='monthPaymentDropDownList']")) { + + if (input[0].value === "Select Month") { + var stateDropDown = $("#currencyPersonalDropDownList").data("kendoDropDownList"); + + if (stateDropDown.value() === 'EUR') { + + return true; + } else { + return false; + } + + } + + + } + + return true; + } + + lineValidationUnforeseen(input) { + + if (input.is("[name='monthPaymentUnforeseenDropDownList']")) { + if (input[0].value === "Select Month") { + var stateDropDown = $("#currencyUnforeseenDropDownList").data("kendoDropDownList"); + + if (stateDropDown.value() === 'EUR') { + + return true; + } else { + return false; + } + + } + + + } + + return true; + } + + _validateBeforeUpdatingDeclaration() { + $al.controller.validate(); + var errorMessages = []; + // Validate all Decl of Honour statements have been ticked + var checkboxes = $("#declaration_of_honour_statements_list").find("input[type=checkbox]"); + if (checkboxes.length > 0) { + var checked = $("#declaration_of_honour_statements_list").find("input[type=checkbox]:checked"); + if (checked.length < checkboxes.length) { + errorMessages.push($al.controller._languageBundle.validations.honour_some_statements_unchecked); + } + } + + // Validate also the bank account + errorMessages = errorMessages.concat($al.view.requestCommon.validateMandatoryBankAccount($al.model._viewModel.request.state)); + + // Validate invoices (Removal and Unforeseen) + errorMessages = errorMessages.concat($al.view._validateInvoices(true)); + + return errorMessages; + } + + _draftValidations() { + + // Validate the bank account + var validationErrors = $al.view.requestCommon.validateMandatoryBankAccount($al.model._viewModel.request.state); + + // Validate invoices (Removal and Unforeseen). false means we are in draft, not in submit + validationErrors = validationErrors.concat($al.view._validateInvoices(false)); + + + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + _validateBeforeInitiatingPayment() { + let messages = []; + + if($al.model._viewModel.request.totalAmount.amount < 0) + messages.push($al.controller._languageBundle.validations.removal_clearing_amount_should_be_positive); + + return messages; + } + + // Get Invoices validation error messages or empty array if OK. + _validateInvoices(isSubmit) { + + var messages = []; + var invoices = $al.model._viewModel.request.requestDetails; + var unfo_invoices = $al.model._viewModel.request.extraRequestDetails; + + // Used to avoid repeated messages + var missing_field_msg = false; + var missing_attach_msg = false; + + // For submit: Validate that there is at least one removal invoice and all attachs are ok (removal invoice and unforeseen invoice) + if (isSubmit) { + if (!invoices || invoices.length === 0) { + // There are no invoices + messages.push($al.controller._languageBundle.validations.no_invoices_added); + } else { + // Check that all the attachs are ok in removal invoices + for (const invo_item of invoices) { + if (!$al.view._checkAttachmentTypes(invo_item.attachments, ['INVOICE', 'PROOF_OF_PAYMENT', 'TRANSPORT_OWNERSHIP_PROOF'])) { + messages.push($al.controller._languageBundle.validations.some_invoices_missing_attachments); + missing_attach_msg = true; + break; + } + } + } + // Also for 'submit': Check that all the attachs are ok in unforeseen invoices + if (unfo_invoices && unfo_invoices.length && !missing_attach_msg) { + for (const unfo_item of unfo_invoices) { + if (!$al.view._checkAttachmentTypes(unfo_item.attachments, ['UNFORESEEN_INVOICE', 'BANK_STATEMENT'])) { + messages.push($al.controller._languageBundle.validations.some_invoices_missing_attachments); + break; + } + } + } + } + + // In any case (submit or draft) + + // Validate the numeric fields are filled (removal invoices): + if (invoices && invoices.length) { + for (const invo_item of invoices) { + if (!invo_item.goodsValue || !invo_item.invoice + || typeof invo_item.goodsValue.amount != 'number' || typeof invo_item.invoice.amount != 'number' + // Special case: Vehicle ('CAR') does not have 'volume' field, so we check when detailType is not CAR + || (typeof invo_item.volume != 'number' && invo_item.detailType != 'CAR') + || typeof invo_item.insuranceRate != 'number') { + messages.push($al.controller._languageBundle.validations.some_invoices_missing_fields); + missing_field_msg = true; + break; + } + } + } + // Validate the numeric fields are filled (unforeseen invoices): + if (unfo_invoices && unfo_invoices.length && !missing_field_msg) { + for (const unfo_item of unfo_invoices) { + if (!unfo_item.invoice || typeof unfo_item.invoice.amount != 'number' + || !unfo_item.justification || unfo_item.justification.length == 0) { + messages.push($al.controller._languageBundle.validations.some_invoices_missing_fields); + break; + } + } + } + // Return array of accumulated error messages or empty array if everything OK + return messages; + } + + // Check all the typeNames are present in attachs + _checkAttachmentTypes(attachs, typeNames) { + + if (!attachs || attachs.length == 0) { + // Array of attachments is empty + return false; + } + + for (const typeN of typeNames) { + var found = false; + for (const att of attachs) { + if (att.attachmentType === typeN) { + found = true; + break; + } + } + if (!found) { + return false; + } + } + // All found + return true; + } + + _cleanRemovedAttachments(invoice_entry) { + + if (!invoice_entry.attachments) { + // No attachments, ok: + return invoice_entry; + } + + var clean_attachs = []; + invoice_entry.attachments.forEach(attach => { + if (attach.fileName) { + // Preserve the ones where 'fileName' is not null (it's null for removed attachments) + clean_attachs.push(attach); + } + }); + // Overwrite 'attachments' field: + invoice_entry.attachments = clean_attachs; + return invoice_entry; + } + + _validateJustification() { + // Check at least one comment + var valid = $al.view.requestCommon._thereAreComments(true); + + if (!valid) { + $a.toast.showError($al.controller._languageBundle.alerts.justification_is_mandatory_for_adv_rem_reject); + $al.view.requestCommon.showMissingCommentMessage(); + } + return valid; + } + + + _showWarnDialog(title, messages) { + + $a.modalDialog.showAnswer(null, + title, + $al.view._templates.warn.dialog.body.template({body_message: messages.join(" ")}), + $al.view._templates.basic.dialog.footer.template({}) + ); + } + + _bindView() { + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }); + } + + + currencyDropDownEditor(container, options) { + + let dropdownlist = $('') + .appendTo(container) + .kendoDropDownList({ + filter: "startswith", + dataTextField: "currency", + dataValueField: "currency", + dataSource: $al.model.exchangeRates, + //optionLabel: 'EUR', + autoWidth: true, + autoBind: false, + change: $al.controller.onChangeCurrency, + }); + + } + + currencyDropDownEditorUnforeseen(container, options) { + + let dropdownlist = $('') + .appendTo(container) + .kendoDropDownList({ + filter: "startswith", + dataTextField: "currency", + dataValueField: "currency", + dataSource: $al.model.exchangeRates, + //optionLabel: 'EUR', + autoWidth: true, + autoBind: false, + change: $al.controller.onChangeCurrencyUnforeseenCosts, + }); + + } + + monthPaymentDropDownEditor(container, options) { + + let dropdownlist = $('') + .appendTo(container) + .kendoDropDownList({ + filter: "startswith", + dataTextField: "monthYear", + dataValueField: "monthYear", + dataSource: [], + //optionLabel: 'EUR', + autoWidth: true, + autoBind: false, + change: $al.controller.onChangeMonth, + }); + + $al.controller.refreshExchangeRatesPerMonth(options.model.exchangeRateCurrency); + var stateDropDown = $("#monthPaymentDropDownList").data("kendoDropDownList"); + if (options.model.exchangePayMonth === "Select Month" && options.model.exchangeRate < Number.MAX_SAFE_INTEGER) { + + stateDropDown.wrapper.hide(); + } else { + stateDropDown.wrapper.show(); + } + + } + + + monthPaymentUnforeseenDropDownEditor(container, options) { + + let dropdownlist = $('') + .appendTo(container) + .kendoDropDownList({ + filter: "startswith", + dataTextField: "monthYear", + dataValueField: "monthYear", + dataSource: [], + //optionLabel: 'EUR', + autoWidth: true, + autoBind: false, + change: $al.controller.onChangeMonthUnforeseen, + }); + + $al.controller.refreshExchangeRatesPerMonthUnforeseen(options.model.exchangeRateCurrency); + var stateDropDown = $("#monthPaymentUnforeseenDropDownList").data("kendoDropDownList"); + if (options.model.exchangePayMonth === "Select Month" && options.model.exchangeRate < Number.MAX_SAFE_INTEGER) { + + stateDropDown.wrapper.hide(); + } else { + stateDropDown.wrapper.show(); + } + + } + + templateForExchangePayMonth(dataItem) { + if (dataItem.exchangePayMonth === "Select Month") { + return ""; + } else { + return dataItem.exchangePayMonth; + } + + } + + footerDetailTotalAmountEurFunction(e) { + return $al.view.requestCommon.footerDetailTotalAmountEurFunction(e, true); + } + + + _onDataBound(e) { + + // hide the group expand / collapse buttons + /*this.wrapper.find(".k-i-collapse").hide();//remove cell elements for hierarchy colum + this.wrapper.find(".k-group-col").css("width", "1px");//remove col elements for hierarchy column + + this.wrapper.find(".k-hierarchy-cell").css("width", "1px");*/ + + this.wrapper.find(".k-reset").hide(); + + var items = e.sender.items(); + var total = 0; + items.each(function () { + var dataItem = e.sender.dataItem(this); + var totalItem = dataItem.invoice.amount / dataItem.exchangeRate; + total += totalItem; + }); + + $al.model._viewModel.totalAmountRemovalInvoices = $al.view.requestCommon.sumRemovalInvoicesSubtotals(); + $al.model._viewModel.totalAmountRemovalInvoices = $al.model._viewModel.totalAmountRemovalInvoices.toFixed(2); + + $al.view._calculateTotalsAndRender(); + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }); + + } + + _onDataBoundUnforeseenInvoices(e) { + // hide the group expand / collapse buttons + /*this.wrapper.find(".k-i-collapse").hide();//remove cell elements for hierarchy colum + this.wrapper.find(".k-group-col").css("width", "1px");//remove col elements for hierarchy column + + this.wrapper.find(".k-hierarchy-cell").css("width", "1px");*/ + + this.wrapper.find(".k-reset").hide(); + + var items = e.sender.items(); + var total = 0; + items.each(function () { + var dataItem = e.sender.dataItem(this); + var totalItem = dataItem.invoice.amount / dataItem.exchangeRate; + total += totalItem; + }); + $al.model._viewModel.request.sumOfSectionsUnforeseenAmountFormatted = kendo.toString(total, "n2"); + $al.model._viewModel.request.sumOfSectionsUnforeseenAmount = total.toFixed(2); + + var wrapper = e.sender.element.find(".summaryDetailTotalUforseenAmountEur"); + wrapper.append("" + $al.model._viewModel.request.sumOfSectionsUnforeseenAmountFormatted + " EUR"); + + + $al.view._calculateTotalsAndRender(); + + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }); + + $al.view.alignTotal(); + $(window).resize(function () { + $al.view.alignTotal(); + }); + } + + alignTotal() { + // align total in summary wrapper + var colWidthInvoice = $(".col-invoice").width() + 24; + var colWidthStatement = $(".col-statement").width() + 24; + var colWidthCommand = 0; + if ($(".col-command").css('display') !== 'none') { + var colWidthCommand = $(".col-command").width() + 24; + } + var offsetRight = colWidthInvoice + colWidthStatement + colWidthCommand; + $(".resizeMeToAlignTotal").width(offsetRight - 10); + } + + _calculateTotalsAndRender() { + + if (typeof $al.model._viewModel.totalAmountRemovalInvoices === "undefined" || + typeof $al.model._viewModel.request.sumOfSectionsUnforeseenAmount === "undefined") { + // Avoid first call when data is not available + return; + } + + var invo_sum = Number($al.model._viewModel.totalAmountRemovalInvoices) + Number($al.model._viewModel.request.sumOfSectionsUnforeseenAmount); + + // Utility field for the small label "Initial amount" + $al.model._viewModel.request.totalInvoicesAmount = { + amount: invo_sum, + amountFormatted: kendo.toString(invo_sum, "n2") + }; + + // Get amount of Advance Request: + var advPaid = 0; + + if (typeof $al.model.advanceRequest.totalAmount !== 'undefined') { + // Normal case: take the totalAmount of the Adv Request + advPaid = Number($al.model.advanceRequest.totalAmount.amount); + } else { + + // advanceRequest does not have totalAmount: This can happen for example if the Adv Request is in DRAFT state + // (recently Resubmitted) so we take the value from the calculatedAmount + if (typeof $al.model.advanceRequest.calculatedTotalAmount !== 'undefined') { + advPaid = Number($al.model.advanceRequest.calculatedTotalAmount.amount); + } + } + + + // Save this calculated amount in the model. It will be used (if totalAmount is missing) in the list of requests + $al.model._viewModel.request.calculatedTotalAmount = { + amount: invo_sum - advPaid, + currency: "EUR" + }; + + + if ($al.model._viewModel.request.state !== 'DRAFT') { + + // We are not in the process of adding invoices, etc (F.O.) so we can deduce the value corrected manually = Final value + Advance paid + // (unless we have to reset the total from the sum of invoices) + + if ($al.model.preserveInvoicesTotal) { + // We have to preserve the 'totalClearingAmount' (this is when we have just loaded the page or just saved the changes) + $al.model._viewModel.request.totalClearingAmount.amount = Number($al.model._viewModel.request.totalAmount.amount) + advPaid; + } else { + // We dont have to preserve the 'totalClearingAmount' (this is when the user has modified/removed an invoice) + $al.model._viewModel.request.totalClearingAmount.amount = invo_sum; + } + + } else { + // We are in DRAFT, so we are going to re-do the request in the FO, therefore reset the total sum for invoices + $al.model._viewModel.request.totalClearingAmount.amount = invo_sum; + } + + $al.model._viewModel.request.totalClearingAmount.amountFormatted = kendo.toString($al.model._viewModel.request.totalClearingAmount.amount, "n2"); + // Round the value + $al.model._viewModel.request.totalClearingAmount.amount = $al.model._viewModel.request.totalClearingAmount.amount.toFixed(2); + + // Format strings + + $al.model._viewModel.totalAmountRemovalInvoicesFormatted = kendo.toString(parseFloat($al.model._viewModel.totalAmountRemovalInvoices), "n2"); + $al.model._viewModel.request.sumOfSectionsUnforeseenAmountFormatted = kendo.toString(parseFloat($al.model._viewModel.request.sumOfSectionsUnforeseenAmount), "n2"); + + //var wrapper = e.sender.element.find(".summaryWrapper"); + var wrapper = $(".summaryWrapper") + + wrapper.find("#totalAmountRemovalInvoicesWrapper").html("
    " + $al.model._viewModel.totalAmountRemovalInvoicesFormatted + " EUR
    "); + wrapper.find("#totalUnforeseenAmountWraper").html("
    " + $al.model._viewModel.request.sumOfSectionsUnforeseenAmountFormatted + " EUR
    "); + wrapper.find("#totalInvoicesAndUnforeseenWraper").html("
    " + $al.model._viewModel.request.totalClearingAmount.amountFormatted + " EUR
    "); + + wrapper.find("#initialAmount").html("
    " + $al.controller._languageBundle.initial_amount + "
    " + $al.model._viewModel.request.totalInvoicesAmount.amountFormatted + "
    "); + + + if (typeof $al.model._viewModel.request.totalAmount === "undefined") { + $al.model._viewModel.request.totalAmount = {amount: 0, currency: 'EUR'}; + } + + $al.model._viewModel.request.totalAmount.amount = Number($al.model._viewModel.request.totalClearingAmount.amount) - advPaid; + + + var advPaidFormatted = kendo.toString(advPaid, "n2"); + var cleResFormatted = kendo.toString(parseFloat($al.model._viewModel.request.totalAmount.amount), "n2"); + + wrapper.find("#advancePaid").html("
    - " + advPaidFormatted + " EUR
    "); + wrapper.find("#clearingResult").html("
    " + cleResFormatted + " EUR
    "); + + $al.view._bindView(); + } + + detailTypeTemplate(dataItem) { + return $al.controller._languageBundle.advance_removal.request_detail_label[dataItem.detailType]; + + } + + insertIntoDropdownEntMaxCeiling(elemento) { + // we insert the ceiling that is not in grid and it is not in dropdown + var grid = $al.view._elements.invoice.grid.data.element.data("kendoGrid"); + + grid.dataSource.data().filter(d => d.detailType === elemento); + let addRemovalItemdropdownlist = $al.view._elements.add_remove_entMax_dropdown.data.element.data("kendoDropDownList"); + $al.model.entMax.forEach(ceilingToAdd => { + let toDelete = []; + + let request_detail_type = $al.view._getElementForDropDown(ceilingToAdd.type); + let itIsAlreadyThere = addRemovalItemdropdownlist.dataSource.data().filter(item => item.type === ceilingToAdd.type); + + if (grid.dataSource.data() && grid.dataSource.data().length > 0) { + toDelete = grid.dataSource.data().filter(d => d.detailType === ceilingToAdd.type); + } + + + if (typeof toDelete[0] === 'undefined' && itIsAlreadyThere.length == 0 && ceilingToAdd.enable && typeof ceilingToAdd.value != "undefined") {//It is not inside the grid we add them + addRemovalItemdropdownlist.dataSource.insert(request_detail_type); + + } + + + }); + + + } + + + _getDecHonourStatements(initialChecked) { + var statements = []; + statements.push({ + statementId: "statement_1", + statement: $al.controller._languageBundle.honour.total_rem_statement_1, + isChecked: initialChecked + }); + statements.push({ + statementId: "statement_2", + statement: $al.controller._languageBundle.honour.total_rem_statement_2, + isChecked: initialChecked + }); + statements.push({ + statementId: "statement_3", + statement: $al.controller._languageBundle.honour.total_rem_statement_3, + isChecked: initialChecked + }); + return statements; + } + + +} + +class RequestController { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.controller(); + }); + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.requests", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + + $al.model.init(); + $al.notifyOnReadyMvc(); + } + + doUpdateAndApproveRequest() { + //if($al.controller.validateBeforeUpdate('APPROVE')){ + + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._updateRequestResponse,null,null,true); + //} + } + + doSubmitRequest() { + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._submitRequestResponse,null,null,true); + } + + + _submitRequestResponse(data) { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'SUBMIT' + }, null, null, $al.controller._submitResponse); + $al.model.refreshAfterUpdateState(data); + + } + + _updateRequestResponse(data) { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'APPROVE' + }, null, null, $al.controller._approveResponse); + $al.model.refreshAfterUpdateState(data); + + } + + _submitResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.submit_request_success); + $al.model.refreshAfterUpdateState(data); + } + + _approveResponse(data) { + // $al.model._restCalls.changeStateRequest.execute({requestId: $requestId,stateMachineEvent : 'APPROVE'},null , $al.model.onRequestRetrieved); + $a.toast.showSuccess($al.controller._languageBundle.alerts.approve_and_save_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doPayRequest() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'PAY' + }, null, null, $al.controller._payResponse); + } + + _payResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.pay_request_success); + $al.model.refreshAfterUpdateState(data); + } + + //Reject + + //update request and then call doRejectRequest to move request to rejected + doUpdateAndRejectRequest() { + + + + if ($al.view._validateJustification()) { + if($al.model._viewModel.request.state == 'PAID'){ // in case rejecting and paid we clean abac info + $al.model.requestCommon.clearPaymentInfo(); + } + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller.doRejectRequest,null,true); + } + } + + doRefreshAbacInfoAndRefresh() { + $al.model._restCalls.refreshAbacStateForRequest.execute({requestId: $requestId}, null,null,$al.model.init()); + + } + + doCancelRequest() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'CANCEL' + }, null, null, $al.controller._cancelRequestResponse); + } + + doSaveDraftRequest() { + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._saveDraftRequest); + } + + doSaveRequest() { + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._saveRequest); + } + + _saveDraftRequest(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.save_draft_request_success); + $al.model.refreshAfterUpdateState(data); + } + + _saveRequest(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.save_request_success); + $al.model.refreshAfterUpdateState(data); + } + + //change the state to reject and _rejectRequestResponse to message and refresh page + doRejectRequest() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'REJECT' + }, null, null, $al.controller._rejectRequestResponse,null,null,true); + } + + //message and refresh page + _rejectRequestResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.reject_request_success); + $al.model.refreshAfterUpdateState(data); + + } + + _cancelRequestResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.cancel_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doResubmit() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'RESUBMIT' + }, null, null, $al.controller._resubmitResponse,null,null,true); + } + + _resubmitResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.resubmit_request_success); + $al.model.refreshAfterUpdateState(data); + + } + + validateMarkAsPaid() { + + $a.toast.showSuccess($al.controller._languageBundle.alerts.create_draft_success); + } + + //MARK as PAID + + //show model dialog and bind + doShowMarkAsPaidDialog() { + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.mark_as_paid_extra_data_title, + $al.view._templates.mark_as_paid.dialog.body.template({}), + $al.view._templates.ok_cancel.dialog.footer.template({}) + ); + $al.view._elements.payment_date.data.element.kendoDatePicker({ + value: new Date(), + parseFormats: ["dd/MM/yyyy"] + + }); + kendo.bind("#mark_as_paid_data", $al.model._viewModel.request); + + } + + //when user click ok , we validate and call doUpdateAndMarkAsPaidRequest + doValidateAndSubmitMarkAsPaid() { + if ($al.view._elements.payment_order.data.element.val() !== "") { + $al.model._restCalls.validatePaymentOrder.execute({orderId: $al.view._elements.payment_order.data.element.val()}, null, $al.model._onDataRetrievedValidatePaymentOrder); + } else { + var validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + paymentDateInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_date.id + "]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentDateInvalid: "Invalid format of Payment Date", + } + }).data("kendoValidator"); + validator.validate(); + } + } + + + + _renderCommunication() { + $al.view._elements.communication.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + $al.view._elements.communication.data.component = "kendoListView"; + + // Item duplicated to display in different position in html based responsive breaking points (bottom of the page or right column + $al.view._elements.communication2.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + $al.view._elements.communication2.data.component = "kendoListView"; + } + + _prepareCommunication(data) { + if (typeof data !== "undefined" && data !== null) { + data.forEach(n => { + if (n.arrivalState) + n.arrivalState = $al.controller._languageBundle.stateMachine[n.arrivalState.toLowerCase()]; + + }); + } + return data; + } + + //discard changes + + refreshPage() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewRequest, null, {requestId: $requestId})); + } + + doShowAbacInfo() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.showAbacInfo, null, + { + requestId: $requestId, + requestType: "ClearingRequest", + movementFileId: $al.model.movementFile.id + }) + ); + } + + onChangeCurrency(e) { + + var grid = $("#request-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + if (dataItemDropBox.currency === "EUR") { + $al.controller.onEuroSelection(e); //hide drop down and put exchange rate to 1 TODO onEuroSelection + dataItem.set("exchangeRate", 1); + dataItem.set("exchangePayMonth", 'Select Month'); + var stateDropDown = $("#monthPaymentDropDownList").data("kendoDropDownList"); + stateDropDown.wrapper.hide(); + } else { + $al.controller.refreshExchangeRatesPerMonth(dataItemDropBox.currency); + var stateDropDown = $("#monthPaymentDropDownList").data("kendoDropDownList"); + stateDropDown.wrapper.show(); + stateDropDown.select(1); + dataItem.set("exchangeRate", Number.MAX_SAFE_INTEGER); + //stateDropDown.trigger("change"); + dataItem.set("exchangePayMonth", 'Select Month'); + + } + + + } + + onChangeCurrencyUnforeseenCosts(e) { + var grid = $("#request-unforeseen-invoices-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + if (dataItemDropBox.currency === "EUR") { + $al.controller.onEuroSelectionUnforeseen(e); //hide drop down and put exchange rate to 1 //TODO unforeseen??? + dataItem.set("exchangeRate", 1); + dataItem.set("exchangePayMonth", 'Select Month'); + var stateDropDown = $("#monthPaymentUnforeseenDropDownList").data("kendoDropDownList"); + stateDropDown.wrapper.hide(); + } else { + $al.controller.refreshExchangeRatesPerMonthUnforeseen(dataItemDropBox.currency); + var stateDropDown = $("#monthPaymentUnforeseenDropDownList").data("kendoDropDownList"); + stateDropDown.wrapper.show(); + stateDropDown.select(1); + dataItem.set("exchangeRate", Number.MAX_SAFE_INTEGER); + //stateDropDown.trigger("change"); + dataItem.set("exchangePayMonth", 'Select Month'); + + } + + + } + + refreshExchangeRatesPerMonth(currency) { + $al.model._restCalls.exchangeRatesPerMonth.execute({currency: currency}, null, $al.controller._onChangeCurrencyRetrieved); + } + + refreshExchangeRatesPerMonthUnforeseen(currency) { + $al.model._restCalls.exchangeRatesPerMonth.execute({currency: currency}, null, $al.controller._onChangeCurrencyUnforeseenRetrieved); + } + + _onChangeCurrencyRetrieved(data) { + var stateDropDown = $("#monthPaymentDropDownList").data("kendoDropDownList"); + + // changed to use another approach to set dataSource + var dataSource = new kendo.data.DataSource({ + data: data + }); + stateDropDown.setDataSource(dataSource); + } + + _onChangeCurrencyUnforeseenRetrieved(data) { + var stateDropDown = $("#monthPaymentUnforeseenDropDownList").data("kendoDropDownList"); + + // changed to use another approach to set dataSource + var dataSource = new kendo.data.DataSource({ + data: data + }); + stateDropDown.setDataSource(dataSource); + } + + onChangeMonth(e) { + var grid = $("#request-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + dataItem.set("exchangeRate", dataItemDropBox.exchangeRate); + + + } + + onChangeMonthUnforeseen(e) { + var grid = $("#request-unforeseen-invoices-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + dataItem.set("exchangeRate", dataItemDropBox.exchangeRate); + + + } + + + onEuroSelection(e) { + //hide drop down and put exchange rate to 1 + var grid = $("#request-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + dataItem.set("exchangeRate", 1); + dataItem.set("exchangePayMonth", 'Select Month'); + + } + + onEuroSelectionUnforeseen(e) { + //hide drop down and put exchange rate to 1 + var grid = $("#request-unforeseen-invoices-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + dataItem.set("exchangeRate", 1); + dataItem.set("exchangePayMonth", 'Select Month'); + + } + + onChangeWeight(e) { + + var grid = $("#request-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + + // dataItemDropBox = e.sender.dataItem(index); + let calculateVolume = Number(e.sender.value()) * Number($al.model.appParameters.get("KGtoM3")); + + //calculateVolume=$al.view.requestCommon.roundedToFixed(calculateVolume,2); + dataItem.set("volume", calculateVolume); + + } + + + _onUploadSuccess(event, attType, gridId) { + + + var grid = $(gridId).data("kendoGrid"); + var row = $(event.sender.element.closest("tr")); + var mRow = row.prev(".k-master-row") + var dataItem = grid.dataItem(mRow); + + if (typeof dataItem.attachments != 'undefined') { + var attachments = dataItem.attachments; + } else { + var attachments = []; + } + + if (event.operation == "remove") { + let toBeRemoved = attachments.filter(a => a.fileUid == event.files[0].fileUid)[0]; + if (typeof toBeRemoved == 'undefined') { + toBeRemoved = attachments.filter(a => a.fileUid == event.files[0].uid)[0]; + } + if (typeof toBeRemoved != 'undefined') { + toBeRemoved.remove = true; + toBeRemoved.fileName = null; + } + } else { + var attch = {}; + attch.fileUid = event.response.uid; + attch.fileName = event.response.name; + + attch.requestDetailId = dataItem.id; + attch.attachmentType = attType; + attachments.push(attch); + } + + dataItem.set("attachments", attachments); + dataItem.dirty = true; + + $($(".k-file-name")[0]).removeAttr("title"); + } + + _detailInit(e) { + var detailRow = e.detailRow; + var model = e.data; + kendo.bind(detailRow, model); + + e.detailCell.find("textarea.autoSize").autosize(); + + var files1 = []; + var files2 = []; + var files3 = []; + + if (typeof model.get("attachments") !== "undefined") { + var modelArray = model.get("attachments"); + modelArray.forEach(att => { + if (typeof att.fileName !== "undefined" && att.remove != true) { + var attch = {}; + attch.name = '' + att.fileName + ''; + attch.title = att.fileName; + attch.extension = '.' + att.fileName.split('.').pop(); + attch.fileUid = att.fileUid; + if (att.attachmentType === "TRANSPORT_OWNERSHIP_PROOF") { + files3.push(attch); + } else if (att.attachmentType === "PROOF_OF_PAYMENT") { + files2.push(attch); + } else if (att.attachmentType === "INVOICE") { + files1.push(attch); + } + } + }); + } + + + e.detailCell.find("#claim-id1").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id1"), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.controller._onUploadSuccess(e, "INVOICE", "#request-invoice-grid") + }, + localization: { + select: "Select File ..." + }, + files: files1 + }); + + + e.detailCell.find("#claim-id2").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id2"), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.controller._onUploadSuccess(e, "PROOF_OF_PAYMENT", "#request-invoice-grid") + }, + localization: { + select: "Select File ..." + }, + files: files2 + }); + + e.detailCell.find("#claim-id3").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id3"), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.controller._onUploadSuccess(e, "TRANSPORT_OWNERSHIP_PROOF", "#request-invoice-grid") + }, + localization: { + select: "Select File ..." + }, + files: files3 + }); + + } + + _detailInitUnforeseenInvoices(e) { + + var detailRow = e.detailRow; + var model = e.data; + kendo.bind(detailRow, model); + + e.detailCell.find("textarea.autoSize").autosize(); + + var files4 = []; + var files5 = []; + + if (typeof model.get("attachments") !== "undefined") { + var modelArray = model.get("attachments"); + modelArray.forEach(att => { + if (typeof att.fileName !== "undefined" && att.remove != true) { + var attch = {}; + attch.name = '' + att.fileName + ''; + attch.title = att.fileName; + attch.extension = '.' + att.fileName.split('.').pop(); + attch.fileUid = att.fileUid; + if (att.attachmentType === "UNFORESEEN_INVOICE") { + files4.push(attch); + } else if (att.attachmentType === "BANK_STATEMENT") { + files5.push(attch); + } + } + }); + } + + + e.detailCell.find("#claim-id4").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id4"), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.controller._onUploadSuccess(e, "UNFORESEEN_INVOICE", "#request-unforeseen-invoices-grid") + }, + localization: { + select: "Select File ..." + }, + files: files4 + }); + + + e.detailCell.find("#claim-id5").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id5"), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.controller._onUploadSuccess(e, "BANK_STATEMENT", "#request-unforeseen-invoices-grid") + }, + localization: { + select: "Select File ..." + }, + files: files5 + }); + + + } + + validate() { + var validator = $($al.view._templates.data.wrapperSelector).kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + } + }, + messages: { + requiredFieldEmpty: "Required Field", + + } + }).data("kendoValidator"); + + + return validator.validate(); + } + + + modelPermissions() { + $al.controller.requestCommon.modelPermissionsCommon(); + var _movFileFrozen = $al.model.movementFile.state === 'CANCELLED' || $al.model.movementFile.state === 'COMPLETED'; + // Create top-up permission + + $al.view.requestCommon._logicForP2pOrderLink(); + + + if ($al.model._viewModel.isBackOffice) { //BACK OFFICE permissions + + // Set flag to see the DELETE button in the comments (regardless of state) + $al.model._viewModel.canDeleteComments = $al.view.requestCommon.hasDeleteCommentsPermission(); + + //Permission to show buttons, in case of needing a security checker I do it here instead of a template + + if ($al.model._viewModel.request.state === 'DRAFT') { + // Show comments section only if there some. + $al.model._viewModel.commentsVisible = $al.view.requestCommon._thereAreComments(false); + // Cannot add/delete comments + $al.model._viewModel.canAddComments = false; + $al.model._viewModel.canDownloadZipfile = false; + + } else if ($al.model._viewModel.request.state === 'AWAITING') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.canApprove = $al.model.permissions.canApproveRemRequest; + $al.view._setCanReject($al.model.permissions.canRejectRemRequest); + $al.model._viewModel.canSave = $al.model.permissions.canEditRemRequest; + $al.model._viewModel.canDiscardChanges = true; + $al.model._viewModel.canDownloadZipfile = true; + + $al.model._viewModel.canEditTotalAmount = _movFileFrozen ? false : $al.model.permissions.canEditRemRequest; + $al.model._viewModel.canEditGrid = _movFileFrozen ? false : $al.model.permissions.canEditRemRequest; + $al.model._viewModel.canEditGridInline = _movFileFrozen ? false : + ( ($al.model.permissions.canEditRemRequest || $al.model.permissions.isOwner) ? {mode: "inline"} : false ); + + $al.model._viewModel.showDivider = true; + + } else if ($al.model._viewModel.request.state === 'APPROVED') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.view._setCanReject($al.model.permissions.canRejectRemRequest); + $al.model._viewModel.canPayAbac = $al.model.permissions.canPayRemRequestAbac; + $al.model._viewModel.canMarkAsPaid = $al.model.permissions.canPayRemRequestManually; + $al.model._viewModel.showDivider = true; + $al.model._viewModel.canDownloadZipfile = true; + + } else if ($al.model._viewModel.request.state === 'REJECTED') { + $al.model._viewModel.showActionsBox = !_movFileFrozen && + ( $al.model.permissions.canResubmitRemRequest && + $al.model.advanceRequest && $al.model.advanceRequest.state === 'PAID' ); + + // User can Resubmit Clearing Request if user has permission AND Advance Request is in state PAID + $al.model._viewModel.canResubmit = $al.model.permissions.canResubmitRemRequest && + $al.model.advanceRequest && $al.model.advanceRequest.state === 'PAID'; + + } else if ($al.model._viewModel.request.state === 'PAID' || $al.model._viewModel.request.state === 'SENT_TO_P2P') { + + + if ($al.model._viewModel.request.state == 'PAID'){ + $al.controller.requestCommon.setTopupPermissionByDisableFrontOffice( $al.model._viewModel.isBackOffice,_movFileFrozen ); + $al.view.requestCommon._setCanRejectPaidType2($al.model.permissions.canRejectPaidTudRequest); + } + + + + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.showPaymentInfo = true; + $al.model._viewModel.showPaymentAbacInfoLink = true; + + $al.model._viewModel.requestPaymentDateFormatted = kendo.toString(kendo.parseDate($al.model.request.paymentDate), 'MMM dd, yyyy'); + $al.model._viewModel.canDownloadZipfile = true; + $al.view.requestCommon._logiForShowingPaymentInfo(); + $al.model._viewModel.showActionsBox = $al.model._viewModel.showActionsBox && ($al.model._viewModel.canReject || $al.model._viewModel.canCreateTopupRequest); + + } + + } else { // FRONT OFFICE PERMISSIONS + //Permission to show buttons, in case of needing a security checker I do it here instead of a template + if ($al.model._viewModel.request.state === 'DRAFT') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.canSubmit = $al.model.permissions.canSubmitRemRequest || $al.model.permissions.isOwner; + $al.model._viewModel.canSaveAsDraft = $al.model.permissions.canSubmitRemRequest || $al.model.permissions.isOwner; + $al.model._viewModel.canDiscardChanges = true; + + $al.model._viewModel.canEditGrid = _movFileFrozen ? false : $al.model.permissions.canSubmitRemRequest || $al.model.permissions.isOwner; + $al.model._viewModel.canEditGridInline = _movFileFrozen ? false : + ( ($al.model.permissions.canSubmitRemRequest || $al.model.permissions.isOwner) ? {mode: "inline"} : false ); + + $al.model._viewModel.showDivider = true; + + } else if ($al.model._viewModel.request.state === 'AWAITING') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.isAwaiting = true; + $al.model._viewModel.showDivider = false; + // $al.model._viewModel.canApprove = $al.model.permissions.canReviewRemRequest; + // $al.model._viewModel.canReject = $al.model.permissions.canReviewRemRequest; + $al.model._viewModel.canCancel = $al.model.permissions.canSubmitRemRequest || $al.model.permissions.isOwner; + + } else if ($al.model._viewModel.request.state === 'APPROVED') { + //$al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.isApproved = true; + // $al.model._viewModel.canReject = $al.model.permissions.canReviewRemRequest; + $al.model._viewModel.canPayAbac = $al.model.permissions.canPayRemRequestAbac; + $al.model._viewModel.canMarkAsPaid = $al.model.permissions.canPayRemRequestManually; + + } else if ($al.model._viewModel.request.state === 'REJECTED') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + // User can Resubmit Clearing Request if user has permission (or is owner) AND Advance Request is in state PAID + $al.model._viewModel.canResubmit = ($al.model.permissions.canResubmitRemRequest || $al.model.permissions.isOwner); + + $al.model._viewModel.isRejected = true; + + } else if ($al.model._viewModel.request.state === 'PAID' || $al.model._viewModel.request.state === 'SENT_TO_P2P') { + $al.model._viewModel.showPaymentInfo = true; + $al.model._viewModel.requestPaymentDateFormatted = kendo.toString(kendo.parseDate($al.model.request.paymentDate), 'MMM dd, yyyy'); + + } + } + + } + + + onChangeTotalAmount(totalAmountInput) { + + + var advPaid = 0; + + if (typeof $al.model.advanceRequest.totalAmount !== 'undefined') { + // Normal case: take the totalAmount of the Adv Request + advPaid = Number($al.model.advanceRequest.totalAmount.amount); + } else { + // advanceRequest does not have totalAmount: This can happen for example if the Adv Request is in DRAFT state + // (recently Resubmitted) so we take the value from the calculatedAmount + if (typeof $al.model.advanceRequest.calculatedTotalAmount !== 'undefined') { + advPaid = Number($al.model.advanceRequest.calculatedTotalAmount.amount); + } + } + + $al.model._viewModel.request.totalAmount.amount = totalAmountInput.value - advPaid; + var cleResFormatted = kendo.toString(parseFloat($al.model._viewModel.request.totalAmount.amount), "n2"); + var wrapper = $(".summaryWrapper") + wrapper.find("#clearingResult").html("
    " + cleResFormatted + " EUR
    "); + + } + + _saveAndInitiatePayment() { + + if (typeof $al.model._viewModel.movementFile.budgetLine == "undefined") { + $a.toast.showWarning($al.controller._languageBundle.alerts.no_budget_line_found); + return null; + } + + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._initiatePayment); + + + } + + _initiatePayment() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.abacDetailsForm, null, { + requestId: $requestId, + requestType: "ClearingRequest", + movementFileId: $al.model.movementFile.id + })); + } + + fixRequestDefaultValues() { + if (typeof $al.model.request.totalAmount === "undefined") { + $al.model.request.totalAmount = { + amount: 0, + currency: "EUR" + } + } + + $al.model.request.totalClearingAmount = { + amount: 0, + currency: "EUR" + } + if (typeof $al.model.request.sumOfSectionsTotalPersonal === "undefined") { + $al.model.request.sumOfSectionsTotalPersonal = 0; + } + if (typeof $al.model.request.sumOfSectionsTotalVehicle === "undefined") { + $al.model.request.sumOfSectionsTotalVehicle = 0; + } + if (typeof $al.model.request.sumOfSectionsTotalStorage === "undefined") { + $al.model.request.sumOfSectionsTotalStorage = 0; + } + + } + + +} + +$al.mvc(RequestModel, RequestView, RequestController, true); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.install.request.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.install.request.js new file mode 100644 index 0000000..fb1227f --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.install.request.js @@ -0,0 +1,1661 @@ +class RequestModel { + + constructor() { + + $_mvcSections.forEach((section, id) => { + this[id] = new section.model(); + }); + + this._restCalls = { + + getRequest: new $a.GetRestCall(null, "/internal/api/installation-requests/{requestId}"), + movementFile: new $a.GetRestCall(null, "/internal/api/movement-files/{fileId}"), + updateRequest: new $a.PutRestCall(null, "/internal/api/installation-requests"), + getStateHistory: new $a.GetRestCall(null, "/internal/api/installation-requests/{requestId}/stateMachineHistory"), + changeStateRequest: new $a.PutRestCall(null, "/internal/api/installation-requests/stateMachineEvent/{stateMachineEvent}/{requestId}"), + permissions: new $a.GetRestCall(null, "/internal/api/permissions"), + payInSysper: new $a.PostRestCall(null, "/internal/api/installation-requests/payInSysper/{requestId}"), + saveUpdateIndemnity: new $a.PostRestCall(null, "/internal/api/requests/{requestId}/indemnity"), + getIndemnity: new $a.GetRestCall(null, "/internal/api/requests/{requestId}/indemnity"), + refreshDataSysper: new $a.PutRestCall(null, "/internal/api/installation-requests/refresh-data-sysper/{requestId}"), + }; + this.urls = { + action: { + viewMovementFile: $a.utils.url(null, "/movement-files/view.do"), + viewRequest: $a.utils.url(null, "/requests/view-installation.do"), + + } + }; + + this.dataSourceMonths = new kendo.data.DataSource({ + data: [ + {month: 'JANUARY', monthString: "January" },{ month: 'FEBRUARY', monthString: "February" },{ month: 'MARCH', monthString: "March" },{ month: 'APRIL', monthString: "April" },{ month: 'MAY', monthString: "May" }, + { month: 'JUNE', monthString: "June" },{ month: 'JULY', monthString: "July" },{ month: 'AUGUST', monthString: "August" },{ month: 'SEPTEMBER', monthString: "September" },{ month: 'OCTOBER', monthString: "October" } + ,{ month: 'NOVEMBER', monthString: "November" },{ month: 'DECEMBER', monthString: "December" } + + ] + }); + + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model.onRequestRetrieved); + + dataPoolExecutor.add("request", $al.model._restCalls.getRequest, {requestId: $requestId}); + dataPoolExecutor.add("stateMachineHistory", $al.model._restCalls.getStateHistory, {requestId: $requestId}); + dataPoolExecutor.add("childrenRequest", $al.model.requestCommon._restCalls.getRequestsByParent, {requestId: $requestId}); + dataPoolExecutor.add("requestComments", $al.model.requestCommon._restCalls.getRequestComments, {requestId: $requestId}); + + dataPoolExecutor.run(); + } + + refreshRequest() { + $al.model.init(); + } + + refreshAfterUpdateState(data) { + $al.model._viewModel.request.state = data.state; + $al.model.refreshRequest($al.model._viewModel.request.id); + } + + onRequestRetrieved(data) { + $al.model.request = data.get("request").data; + $al.model.requestComments = data.get("requestComments").data; + $al.model.request.children = data.get("childrenRequest").data; + //Map is easier to work with + // var AppParametersArr = data.get("appParameters").data; + // $al.model.appParameters = new Map(AppParametersArr.map(i => [i.key, i.value])); + $al.model.stateMachineHistory = data.get("stateMachineHistory").data; + $al.model._restCalls.movementFile.execute({fileId: $al.model.request.declaration.movementFileId}, null, $al.model.onMovementFileRetrieved); + if (!($al.model.request.state === 'DRAFT' || $al.model.request.state + === 'REJECTED')) { + $al.model._restCalls.getIndemnity.execute({requestId: $requestId}, + null, $al.model.onIndemnityRetrieved); + } + } + + onMovementFileRetrieved(data) { + $al.model.movementFile = data; + $al.model._restCalls.permissions.execute(null, {movementFileId: $al.model.movementFile.id}, $al.model.onPermissionsRetrieved); + } + + onIndemnityRetrieved(data) { + $al.model.indemnityModel = data; + } + + onPermissionsRetrieved(data) { + $al.model.permissions = data; + $al.view._initializeView(); + $al.view.render(); + if($al.model._viewModel.request.state === "AWAITING" ){ + $al.view._setDefaultValues(); + } + $al.view._bindView(); + $a.loading.toggle(false); + } + +} + +class RequestView { + + constructor() { + + $_mvcSections.forEach((section, id) => { + this[id] = new section.view(); + }); + + this._templates = new $a.DataContainer("request"); + this._elements = new $a.DataContainer("request"); + + this._templates.data(new $a.KendoTemplateData()); + this._elements.node("address").node("grid").data(new $a.KendoElementData()); + this._elements.node("indemnity").node("grid").data(new $a.KendoElementData()); + this._elements.node("communication").data(new $a.KendoElementData()); + this._elements.node("communication2").data(new $a.KendoElementData()); + this._elements.node("comments").node("grid").data(new $a.KendoElementData()); + + this._templates.node("address").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("indemnity").node("grid").data(new $a.KendoTemplateData()); + + this._templates.node("ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("basic").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("warn").node("dialog").data(new $a.KendoTemplateData(), "body"); + + this._templates.node("comments").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("add_comment").data(new $a.KendoTemplateData()); + this._elements.node("origin_period_month").data(new $a.KendoElementData()); + this._elements.node("origin_period_year").data(new $a.KendoElementData()); + this._elements.node("payment_period_month").data(new $a.KendoElementData()); + this._elements.node("payment_period_year").data(new $a.KendoElementData()); + this._elements.node("indemnity_type").data(new $a.KendoElementData()); + this._elements.node("indemnity_number").data(new $a.KendoElementData()); + this._elements.node("indemnity_unit").data(new $a.KendoElementData()); + } + + + _renderIndemnity(){ + + let yearBased =new Date().getFullYear().toString(), + yearBasedLoopStart = Number(yearBased) + 90,dataSourceYears= new kendo.data.DataSource({}),yearVal = yearBasedLoopStart,finalloop = yearBasedLoopStart + 20; + + let dataSourceIndemnityTypes= new kendo.data.DataSource({}); + dataSourceIndemnityTypes.add({key:'INDE',value:'IP=INDE'}); + dataSourceIndemnityTypes.add({key:'INDM',value:'IP=INDM'}); + dataSourceIndemnityTypes.add({key:'INSE',value:'IP=INSE'}); + + + let dataSourceIndemnityNumbers= new kendo.data.DataSource({}); + if($al.model._viewModel.indemnityModel.unit != null){ + let indemnityUnit = $al.model._viewModel.indemnityModel.unit; + dataSourceIndemnityNumbers.data([]); + if(indemnityUnit != null && indemnityUnit.length >= 2 && /^\d+$/.test(indemnityUnit.slice(0, 2))){ + for(let i=1; i<= indemnityUnit.slice(0, 2) ; i++){ + dataSourceIndemnityNumbers.add({key: i.toString(), value: i.toString()}) + } + }else{ + for(let i=1; i<= 3; i++){ + dataSourceIndemnityNumbers.add({ key: i.toString(), value: i.toString() }); + } + } + + }else { + dataSourceIndemnityNumbers.add({key: "1", value: "1"}); + dataSourceIndemnityNumbers.add({key: "2", value: "2"}); + dataSourceIndemnityNumbers.add({key: "3", value: "3"}); + } + let dataSourceIndemnityUnits= new kendo.data.DataSource({}); + dataSourceIndemnityUnits.add({key:'TIE',value:'TIE'}); + dataSourceIndemnityUnits.add({key:'24th',value:'24th'}); + dataSourceIndemnityUnits.add({key:'36th',value:'36th'}); + + for (let i = yearBasedLoopStart; i <= finalloop; i++) { + dataSourceYears.add({ year:i-100 , yearString: i-100 }); + } + + const currentYear = new Date().getFullYear(); + if( $al.model._viewModel.request.state != "AWAITING" ) { + if (!$al.model._viewModel.indemnityModel.originPeriodMonth) { + $al.model._viewModel.indemnityModel.originPeriodMonth = 'JANUARY'; + } + + if (!$al.model._viewModel.indemnityModel.paymentPeriodMonth) { + $al.model._viewModel.indemnityModel.paymentPeriodMonth = 'JANUARY'; + } + if (!$al.model._viewModel.indemnityModel.originPeriodYear) { + $al.model._viewModel.indemnityModel.originPeriodYear = currentYear; + } + + if (!$al.model._viewModel.indemnityModel.paymentPeriodYear) { + $al.model._viewModel.indemnityModel.paymentPeriodYear = currentYear; + } + } + + $al.view._elements.origin_period_month.data.element.kendoDropDownList({ + dataSource: $al.model.dataSourceMonths, + dataTextField: "monthString", + dataValueField: "month", + placeHolder: 'Month', + enable: true, + value: $al.model._viewModel.indemnityModel.originPeriodMonth, + autoWidth: true, + optionLabel: "--Select--" + }); + + + $al.view._elements.origin_period_year.data.element.kendoDropDownList({ + dataSource: dataSourceYears, + dataTextField: "yearString", + dataValueField: "year", + placeHolder: 'Year', + enable: true, + value: $al.model._viewModel.indemnityModel.originPeriodYear, + autoWidth: true, + optionLabel: "--Select--" + }); + + + $al.view._elements.payment_period_month.data.element.kendoDropDownList({ + dataSource: $al.model.dataSourceMonths, + dataTextField: "monthString", + dataValueField: "month", + placeHolder: 'Month', + enable: true, + value: $al.model._viewModel.indemnityModel.paymentPeriodMonth, + autoWidth: true, + optionLabel: "--Select--" + }); + + $al.view._elements.payment_period_year.data.element.kendoDropDownList({ + dataSource: dataSourceYears, + dataTextField: "yearString", + dataValueField: "year", + placeHolder: 'Year', + enable: true, + value: $al.model._viewModel.indemnityModel.paymentPeriodYear, + autoWidth: true, + optionLabel: "--Select--" + }); + + $al.view._elements.indemnity_type.data.element.kendoDropDownList({ + dataSource: dataSourceIndemnityTypes, + dataTextField: "value", + dataValueField: "key", + placeHolder: 'Type of Indemnity', + enable: true, + value: $al.model._viewModel.indemnityModel.type, + autoWidth: true, + optionLabel: "--Select--", + required: "required", + validationMessage: "Select Type" + }); + + $al.view._elements.indemnity_number.data.element.kendoDropDownList({ + dataSource: dataSourceIndemnityNumbers, + dataTextField: "value", + dataValueField: "key", + placeHolder: 'Number', + enable: true, + value: $al.model._viewModel.indemnityModel.number, + autoWidth: true, + optionLabel: "--Select--" + }); + + $al.view._elements.indemnity_unit.data.element.kendoDropDownList({ + dataSource: dataSourceIndemnityUnits, + dataTextField: "value", + dataValueField: "key", + placeHolder: 'Unit', + enable: true, + value: $al.model._viewModel.indemnityModel.unit, + autoWidth: true, + optionLabel: "--Select--", + change: function (e) { + var index = this.selectedIndex, dataItem; + var item = this.dataItem(index); + $al.view._elements.indemnity_number.data.element.data("kendoDropDownList").dataSource.data([]); + if(item.key != null && item.key.length >= 2 && /^\d+$/.test(item.key.slice(0, 2))){//if unit is 34th or 36th + for(let i=1; i<= item.key.slice(0, 2) ; i++){ + $al.view._elements.indemnity_number.data.element.data("kendoDropDownList").dataSource.add({key: i.toString(), value: i.toString()}) + } + if(item.key.slice(0, 2) === "24") { + // if unit is 24, default value of dropdown is 24 + $al.view._elements.indemnity_number.data.element.data("kendoDropDownList").value(item.key.slice(0, 2)); + }else{//if unit is 36, default value of dropdown is 1 + $al.view._elements.indemnity_number.data.element.data("kendoDropDownList").value("1"); + } + }else{ + for(let i=1; i<= 3; i++){ + $al.view._elements.indemnity_number.data.element.data("kendoDropDownList").dataSource.add({ key: i.toString(), value: i.toString() }); + } + } + + } + }); + + + if($al.model._viewModel.indemnityModel.id){ + $('#indemnity_id').val($al.model._viewModel.indemnityModel.id); + } + if($al.model._viewModel.indemnityModel.comment){ + $('#indemnity_comment').val($al.model._viewModel.indemnityModel.comment); + } + + $('textarea.autoSize').autosize(); + + } + + _renderJustification() { + if ($al.model.request.justification != undefined) { + $('#justification').val($al.model.request.justification); + } else { + $al.model.request.justification = ""; + } + } + + validateIndemnityRequest() { + var validationErrors = $al.view._validateBeforeSendToSysper(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + 'Please check the following mandatory fields', validationErrors); + return false; + } + return true; + } + + enableOriginPeriod() { + var enable = true; + //Indemnity - origin period must not be editable in Approved status + if($al.model._viewModel.request.state === "APPROVED"){ + return false; + } + if (typeof $al.model.stateMachineHistory !== "undefined" && $al.model.stateMachineHistory !== null) { + $al.model.stateMachineHistory.forEach(n => { + if (n.arrivalState === 'PAID') { + enable = false; + } + }); + } + return enable; + } + + _hasBeenInDraftMoreThanOneTime() { + var hasDraftStatus = 0; + if (typeof $al.model.stateMachineHistory !== "undefined" && $al.model.stateMachineHistory !== null) { + $al.model.stateMachineHistory.forEach(n => { + if (n.arrivalState === 'Draft') { + hasDraftStatus = hasDraftStatus + 1; + } + }); + } + return hasDraftStatus > 1; + } + + _validateBeforeSendToSysper() { + + var errorMessages = []; + + if (typeof $al.model._viewModel.indemnityModel.unit === "undefined" || + $al.view.isEmpty($al.model._viewModel.indemnityModel.unit) || + $al.model._viewModel.indemnityModel.unit === "--Select--") { + errorMessages.push("Select Indemnity Unit"); + } + + if (typeof $al.model._viewModel.indemnityModel.type === "undefined" || + $al.view.isEmpty($al.model._viewModel.indemnityModel.type) || + $al.model._viewModel.indemnityModel.type === "--Select--") { + errorMessages.push("Select Indemnity Type"); + } + + if (typeof $al.model._viewModel.indemnityModel.originPeriodYear === "undefined" || + $al.model._viewModel.indemnityModel.originPeriodYear === "Select" || + $al.view.isEmpty($al.model._viewModel.indemnityModel.originPeriodYear) || + typeof $al.model._viewModel.indemnityModel.originPeriodMonth == "undefined" || + $al.view.isEmpty($al.model._viewModel.indemnityModel.originPeriodMonth) || + $al.model._viewModel.indemnityModel.originPeriodMonth === "Select") { + errorMessages.push("Select Indemnity Origin Period"); + } + + if (typeof $al.model._viewModel.indemnityModel.paymentPeriodYear === "undefined" || + $al.model._viewModel.indemnityModel.paymentPeriodYear === "Select" || + $al.view.isEmpty($al.model._viewModel.indemnityModel.paymentPeriodYear) || + typeof $al.model._viewModel.indemnityModel.paymentPeriodMonth == "undefined" || + $al.view.isEmpty($al.model._viewModel.indemnityModel.paymentPeriodMonth) || + $al.model._viewModel.indemnityModel.paymentPeriodMonth === "Select" ) { + errorMessages.push("Select Indemnity Payment Period"); + } + + if (typeof $al.model._viewModel.indemnityModel.number == "undefined" || + $al.view.isEmpty($al.model._viewModel.indemnityModel.number)) { + errorMessages.push("Select Indemnity Number"); + } + + if (typeof $al.model._viewModel.indemnityModel.comment == "undefined" || + $al.view.isEmpty($al.model._viewModel.indemnityModel.comment )) { + errorMessages.push("Add Indemnity Comment"); + } + + return errorMessages; + } + + isEmpty(str) { + return (!str || (str && str.length === 0)); + } + + _showWarnDialog(title, messages) { + + $a.modalDialog.showAnswer(null, + title, + $al.view._templates.warn.dialog.body.template( + {body_message: "
  • " + messages.join("
  • "), validation_message: $al.controller._languageBundle.alerts.validation_message}), + $al.view._templates.basic.dialog.footer.template({}) + ); + } + + render() { + $al.view._templates.data.compile(); + $al.view._renderCommunication(); + $al.view._templates.address.grid.data.compile(); + $al.view._templates.indemnity.grid.data.compile(); + $al.view._renderAddressGrid(); + $al.view._renderIndemnityGrid(); + $al.view._initSupportingDocumentsFileUploader(); + $al.view._templates.comments.grid.data.compile(); + $al.view._templates.add_comment.data.compile(); + $al.view.requestCommon._renderCommentsGrid(); + $al.view._renderIndemnity(); + $al.view._renderJustification(); + } + + _renderAddressGrid() { + + var columns_desc = [ + {hidden: true, field: "id"}, + { + field: "joining", + title: "Joined", + width: 42, + headerAttributes: {class: "pl-0"}, + attributes: {class: "px-0 text-center"}, + template: $al.view.joiningTemplate + }, + { + field: "relative.lastName", + title: "Name", + attributes: {class: "px-0 font-weight-medium"}, + headerAttributes: {class: "pl-0"}, + template: "#= relative.lastName #, #= relative.firstName #", + width: "22%", + }, + { + field: "relative.age", + title: "Age", + width: 60, + }, + { + field: "relation", + title: "Relation", + width: 100, + }, + { + field: "address", + title: "Address", + template: $al.view.addressTemplate, + width: "25%", + attributes: {class: "pr-0"} + }, + { + field: "address", + title: "Status", + width: "100", + attributes: {style: "text-overflow: initial;", class: "pr-0"}, + template: '#= address.status #', + }, + { + field: "relative.addresses", + title: "Since", + width: 125, + template: " " + + "#= kendo.toString(kendo.parseDate(address.startDate), \"dd-MM-yyyy\") # " + + "" + }, + { + field: "relative.addresses", + title: "Created on", + width: 125, + template: " " + + "#= kendo.toString(kendo.parseDate(address.createdDate), \"dd-MM-yyyy\") # " + + "" + } + ]; + + var dataSourceAddresses = new kendo.data.DataSource({ + data: $al.model.request.addresses, + sort: [ + {field: "relation", dir: "asc"}, + ] + }); + $al.view._elements.address.grid.data.element.kendoGrid({ + dataSource: dataSourceAddresses, + dataBound: function (e) { + var rows = e.sender.tbody.children(); + for (var j = 0; j < rows.length; j++) { + var row = $(rows[j]); + var dataItem = e.sender.dataItem(row); + // Mark joining person row in blue + if (dataItem.joining) { + row.addClass("k-state-selected"); + } + // Hide Joined icon for staff member + if (j === 0) { + row.find("i.material-icons-round").addClass("d-none"); + } + } + $('[data-toggle="tooltip"]').tooltip(); + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }) + }, + noRecords: { + template: $al.view.noAddressesTemplate + }, + scrollable: false, + sortable: false, + resizable: false, + columns: columns_desc + }); + + $al.view._elements.address.grid.data.component = "kendoGrid"; + + } + + addressTemplate(dataItem) { + + let templateData; + if (typeof dataItem.address != 'undefined') { + let address = dataItem.address; + templateData = ""; + if (typeof address.streetName != 'undefined') { + templateData = templateData + address.streetName.toLowerCase() + " "; + } + if (typeof address.streetNumber != 'undefined') { + templateData = templateData + address.streetNumber.toLowerCase() + " "; + } + if (typeof address.postalBox != 'undefined') { + templateData = templateData + address.postalBox.toLowerCase() + " "; + } + if (typeof address.postalCode != 'undefined') { + templateData = templateData + address.postalCode + " "; + } + if (typeof address.cityName != 'undefined') { + templateData = templateData + address.cityName.toLowerCase() + " "; + } + if (typeof address.country != 'undefined') { + templateData = templateData + ", " + address.country.name.toLowerCase(); + } + templateData = templateData + ""; + return templateData; + } + + return ""; + } + + indemnityCardTemplate() { + + if ($al.model.indemnityModel && $al.model.indemnityModel.indemnityTypeEnUserFriendly && + $al.model._viewModel.isPaid) { + $al.model._viewModel.showIndemnityAmount = true; + let messageReturn = $al.model.indemnityModel.indemnityTypeEnUserFriendly;//we just get the latest, if we need to show all we put the plus in the = + messageReturn = " " + messageReturn + "" + const summaryWrapper = $("#summaryWrapperIndemnities"); + summaryWrapper.html(messageReturn); + if ($al.model._viewModel.isBackOffice) { + $('#collapseIndemnity').removeClass('collapse'); + } + } + + } + + + joiningTemplate(dataItem) { + if (dataItem.joining) { + return 'done'; + } else { + return 'info'; + } + } + + noAddressesTemplate() { + + if ($isBackOffice) { + return "
    No new address submitted in Sysper at this time.
    " + } else { + return "
    Please declare the new addresses of your Dependents and yourself in Sysper. Once validated, we will process your installation allowance.
    " + } + + } + + noIndemnitiesTemplate() { + return "
    Your installation allowance will be determined based on your address declaration.
    "; + } + + _renderIndemnityGrid() { + + var columns_desc = [ + { + field: "rigId", + title: "ID", + headerAttributes: {class: "pl-0"}, + attributes: {class: "pl-0"}, + }, + /*{ + field: "dateFrom", + title: "Validity period", + template: "#= kendo.toString(kendo.parseDate(dateFrom), \"dd-MM-yyyy\") # - #= kendo.toString(kendo.parseDate(dateTo), \"dd-MM-yyyy\") #", + + },*/ + { + field: "originPeriod", + title: "Origin period" + }, + { + field: "indemnityTypeEn", + title: "Type of indemnity" + }, + { + field: "allowancesCount", + title: "Number" + }, + { + field: "unitEn", + title: "Unit" + }, + { + field: "comment", + title: "Comment" + } + ]; + + $al.view._elements.indemnity.grid.data.element.kendoGrid({ + + dataSource: $al.model.request.indemnities, + + noRecords: $al.view.noIndemnitiesTemplate, + + scrollable: false, + sortable: false, + resizable: false, + columns: columns_desc, + + dataBound: function (e) { + if (e.sender.dataSource.view().length === 0) { + $('.request-indemnity-tpl').hide() + } + }, + }); + + $al.view._elements.indemnity.grid.data.component = "kendoGrid"; + $al.view.indemnityCardTemplate(); + + } + + _setDefaultValues(){ + //if there is 1 address declaration type should be "IP=INSE" else "IP=INDE" + let addressLength = $al.view._elements.address.grid.data._component.dataSource.view().length; + if ($al.model._viewModel.indemnityModel.type == null && addressLength === 1) { + $al.view._elements.indemnity_type.data.element.data("kendoDropDownList").value("INSE"); + } else if ($al.model._viewModel.indemnityModel.type == null && addressLength >= 2) { + $al.view._elements.indemnity_type.data.element.data("kendoDropDownList").value("INDE"); + } else { + $al.view._elements.indemnity_type.data.element.data("kendoDropDownList").value($al.model._viewModel.indemnityModel.type); + } + + // for contractors indemnity_unit = TIE and for officials it is 24th. + if ($al.model._viewModel.indemnityModel.unit == null && + ['CA', 'CB'].includes($al.model.movementFile.jobHolder.statutoryLinkCode)) { + $al.view._elements.indemnity_unit.data.element.data("kendoDropDownList").value("TIE"); + } else if ($al.model._viewModel.indemnityModel.unit == null && + ['TMD', 'TP', 'TT', 'FMD', 'FP', 'FS', 'TC' ,'TE'].includes($al.model.movementFile.jobHolder.statutoryLinkCode)) { + $al.view._elements.indemnity_unit.data.element.data("kendoDropDownList").value("24th"); + for (let i = 1; i <= 24; i++) { + $al.view._elements.indemnity_number.data.element.data("kendoDropDownList").dataSource.add({ + key: i.toString(), + value: i.toString() + }) + } + $al.view._elements.indemnity_number.data.element.data("kendoDropDownList").value("24"); + } + + if (($al.model._viewModel.indemnityModel.unit === "TIE" || $al.view._elements.indemnity_unit.data.element.data("kendoDropDownList").value() === "TIE") + && ($al.model._viewModel.indemnityModel.number == null || typeof $al.model._viewModel.indemnityModel.number === "undefined")) { + //If the unit is TIE, we change the value of indemnity_number dropdown based on assignment duration + if ($al.model.movementFile.jobHolder.latestAssignmentEndDate === null || + $al.model.movementFile.jobHolder.latestAssignmentEndDate === "undefined") { + $al.view._elements.indemnity_number.data.element.data("kendoDropDownList").value("3") + } else { + let assignmentDurationInYears = $al.view._findAssignmentDuration(new Date($al.model.movementFile.jobHolder.latestAssignmentEndDate), new Date($al.model.movementFile.jobHolder.earliestAssignedstartDate)); + + //if assignment is less than 1 year + if (assignmentDurationInYears < 1) { + $al.view._elements.indemnity_number.data.element.data("kendoDropDownList").value("--Select--") + }//if assignment is equal to or more than 1 and less than 2 years + else if (assignmentDurationInYears >= 1 && assignmentDurationInYears < 2) { + $al.view._elements.indemnity_number.data.element.data("kendoDropDownList").value("1") + }//if assignment is equal to or more than 2 years and less than 3 years + else if (assignmentDurationInYears >= 2 && assignmentDurationInYears < 3) { + $al.view._elements.indemnity_number.data.element.data("kendoDropDownList").value("2") + }//if assignment is equal to or more than 3 year + else if (assignmentDurationInYears >= 3) { + $al.view._elements.indemnity_number.data.element.data("kendoDropDownList").value("3") + } + } + } + if ($al.model._viewModel.indemnityModel.comment == null) { + $('#indemnity_comment').val("Created by e-Rights. Request ID: " + $al.model.request.requestStringId) + } + $al.view._calculateOriginAndPaymentPeriodMonthAndYear(); + } + + _calculateMonthAfterMovementFileStartDate(){ + let movementFileStartDateMonth= new Date($al.model.movementFile.startDate).getMonth(); + if(movementFileStartDateMonth ===11){ + return 0; + }else{ + return movementFileStartDateMonth+1; + } + + } + _calculateOriginAndPaymentPeriodMonthAndYear(){ + let movementFileStartDateMonth = new Date( + $al.model.movementFile.startDate).getMonth(); + let movementFileStartDate = new Date( + $al.model.movementFile.startDate).getDate(); + let movementFileStartDateYear = new Date( + $al.model.movementFile.startDate).getFullYear(); + let originPeriodYear = $al.model._viewModel.indemnityModel.originPeriodYear; + let paymentPeriodYear = $al.model._viewModel.indemnityModel.paymentPeriodYear; + let originPeriodMonth = $al.model._viewModel.indemnityModel.originPeriodMonth; + let paymentPeriodMonth = $al.model._viewModel.indemnityModel.paymentPeriodMonth; + //if movement file start date is first of month, origin period is month of start date else origin period is month right after start date + if (originPeriodMonth == null && movementFileStartDate === 1) { + $al.view._elements.origin_period_month.data.element.data( + "kendoDropDownList").value($al.model.dataSourceMonths._data.at( + movementFileStartDateMonth).month); + } else if (originPeriodMonth == null) { + $al.view._elements.origin_period_month.data.element.data( + "kendoDropDownList").value($al.model.dataSourceMonths._data.at( + $al.view._calculateMonthAfterMovementFileStartDate()).month); + } + + //payment period is month after start date of movement file + if (paymentPeriodMonth == null) { + $al.view._elements.payment_period_month.data.element.data( + "kendoDropDownList").value($al.model.dataSourceMonths._data.at( + $al.view._calculateMonthAfterMovementFileStartDate()).month); + } + //payment period year should be set to next year if movement file start month is 12 since (12 +1) falls in next year) + if (paymentPeriodYear == null && movementFileStartDateMonth === 11) { + $al.view._elements.payment_period_year.data.element.data( + "kendoDropDownList").value(movementFileStartDateYear + 1); + } else if (paymentPeriodYear == null) { + $al.view._elements.payment_period_year.data.element.data( + "kendoDropDownList").value(movementFileStartDateYear); + } + // origin period year should be set to next year if start month of movement file is 12 and start date is not first of month + //same logic here( month 12+1) falls in next year + if (originPeriodYear == null && movementFileStartDateMonth === 11 + && movementFileStartDate !== 1) { + $al.view._elements.origin_period_year.data.element.data( + "kendoDropDownList").value(movementFileStartDateYear + 1); + } else if (originPeriodYear == null) { + $al.view._elements.origin_period_year.data.element.data( + "kendoDropDownList").value(movementFileStartDateYear); + } + + } + _findAssignmentDuration(assignmentEndDate , assignmentStartDate){ + let assignmentDurationInYears = assignmentEndDate.getFullYear() - assignmentStartDate.getFullYear(); + //It is considered as exactly 1/2/3(rounded) etc years only if the end date is one day less than startdate+1 year + if (assignmentEndDate.getTime() === new Date(assignmentStartDate.setFullYear(assignmentStartDate.getFullYear() + assignmentDurationInYears)).getTime() - 24 * 60 * 60 * 1000) { + return assignmentDurationInYears; + } else { + if (assignmentEndDate.getMonth() < assignmentStartDate.getMonth() || (assignmentEndDate.getMonth() === assignmentStartDate.getMonth() && + assignmentEndDate.getDate() < assignmentStartDate.getDate())) { + assignmentDurationInYears -= 0.5;//Reduced 0.5 years to check if the difference is less than calculated years + } else if (assignmentEndDate.getMonth() > assignmentStartDate.getMonth() || + (assignmentEndDate.getMonth() === assignmentStartDate.getMonth() && + assignmentEndDate.getDate() >= assignmentStartDate.getDate())) { + assignmentDurationInYears += 0.5//added 0.5 years to check if assignmentDurationInYears is more than 2 years + } + return assignmentDurationInYears; + } + } + + _initializeView() { + + var viewModel = new kendo.data.Model.define(); + //let creationInstant = $al.model.request.creationActor.instant; + //let requestCreateDate = kendo.toString(kendo.parseDate(creationInstant), "MMM") + " " + kendo.toString(kendo.parseDate(creationInstant), "dd") + ", " + kendo.toString(kendo.parseDate(creationInstant), "yyyy") + " at " + kendo.toString(kendo.parseDate(creationInstant), "t"); + //$al.model.request.requestCreateDate=requestCreateDate; + $al.model._viewModel = new viewModel({ + isVisible: true, + message: " ", + name: $al.model.movementFile.jobHolder.lastName + ' ' + $al.model.movementFile.jobHolder.firstName, + perId: $al.model.request.staffMember.id, + request: $al.model.request, + movementFile: $al.model.movementFile, + movFileFrozen: $al.model.movementFile.state === 'CANCELLED' || $al.model.movementFile.state === 'COMPLETED', + isBackOffice: $isBackOffice, + commentsVisible: $isBackOffice || $al.view.requestCommon._thereAreComments(false), + showActionsBox: false, + isApproved: false, + isAwaiting: false, + isRejected: false, + isPaid: false, + showDivider: false, + canReject: false, + canUpdateRequest: false, + // --- Comments logic --- + canAddComments: $isBackOffice, + canDeleteComments: false, + displayChildrenRequest: false, + // This is a switch: the button disappears when the text area is visible. Initial value: visible + showCommentButton: true, + editIndemnity: false, + indemnityApproved: false, + canSave: false, + showPaymentInfo: false, + indemnityModel: $al.model.indemnityModel ? $al.model.indemnityModel: {}, + enableOriginPeriod: false, + canEditIndemnity: false, + canEditJustification: true, + showIndemnityAmount: false, + isDraft: false, + canRefreshDataSysper: false, + canResetFromApproved: false, + canResetToDraft: false, + canEditAttachments: false, + canUpdateRequestPaidToDraft: false, + // ---------------------- + showCommentInput: function() { + this.set("showCommentButton", false); + $al.view.requestCommon._scrollToBottom(); + + }, + onApproveRequest: function () { + $al.controller._setIndemnityValues(); + + if ($al.controller._hasNoValidAddressDeclaration()) { + //show warning message if there are none of address declarations are validated in sysper or address is not declared at all + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.validations.address_not_validated_title, + $al.view._templates.warn.dialog.body.template( + {body_message: $al.controller._languageBundle.validations.address_not_validated_body}), + $al.view._templates.ok_cancel.dialog.footer.template({}) + ); + } else { + $al.controller._validateAndSaveIndemnityOnApprove(); + } + }, + onRejectRequest: function () { + $al.controller.doRejectRequest(); + }, + onUpdateRequest: function () { + $al.controller.doUpdateRequest(); + }, + onPayManually: function () { + $al.controller._saveOrUpdateIndemnityAndPay(); + }, + onRefreshAbacInfo: function () { + $al.controller.requestCommon.doRefreshAbacInfoAndRefresh(); + + }, + onPayWithSysper: function () { + $al.controller._saveOrUpdateIndemnityAndPayWithSysper(); + }, + showIndemnityViewMode: function() { + this.set("editIndemnity", false); + this.set("indemnityApproved", true); + if($al.model._viewModel.request.state === "APPROVED" ){ + $al.view._setDefaultValues();// set initial values on cancel and then set the values of model to respective dropdowns + } + if($al.model._viewModel.indemnityModel.type != null){ + $al.view._elements.indemnity_type.data.element.data("kendoDropDownList").value($al.model._viewModel.indemnityModel.type); + } + if($al.model._viewModel.indemnityModel.unit != null) { + $al.view._elements.indemnity_unit.data.element.data("kendoDropDownList").value($al.model._viewModel.indemnityModel.unit); + } + if($al.model._viewModel.indemnityModel.originPeriodMonth != null) { + $al.view._elements.origin_period_month.data.element.data("kendoDropDownList").value($al.model._viewModel.indemnityModel.originPeriodMonth); + } + if( $al.model._viewModel.indemnityModel.comment != null) { + $('#indemnity_comment').val($al.model._viewModel.indemnityModel.comment); + } + if($al.model._viewModel.indemnityModel.paymentPeriodMonth != null) { + $al.view._elements.payment_period_month.data.element.data("kendoDropDownList").value($al.model._viewModel.indemnityModel.paymentPeriodMonth); + } + if($al.model._viewModel.indemnityModel.number != null) { + $al.view._elements.indemnity_number.data.element.data("kendoDropDownList").value($al.model._viewModel.indemnityModel.number); + } + if($al.model._viewModel.indemnityModel.unit != null ) { + $al.view._elements.indemnity_unit.data.element.data("kendoDropDownList").value($al.model._viewModel.indemnityModel.unit); + } + if( $al.model._viewModel.indemnityModel.originPeriodYear != null ) { + $al.view._elements.origin_period_year.data.element.data("kendoDropDownList").value($al.model._viewModel.indemnityModel.originPeriodYear); + } + if($al.model._viewModel.indemnityModel.paymentPeriodYear != null) { + $al.view._elements.payment_period_year.data.element.data("kendoDropDownList").value($al.model._viewModel.indemnityModel.paymentPeriodYear); + } + + }, + saveOrUpdateIndemnity: function() { + this.set("editIndemnity", false); + this.set("indemnityApproved", true); + $al.controller._updateRequestWithAttachmentDocumentsAndJustification( + (updateData) => { + $a.loading.toggle(false); + $al.controller._saveOrUpdateIndemnity(); + }); + }, + onRefreshDataSysper: function () { + $al.controller.doRefreshDataSysper(); + }, + onResetFromApproved: function () { + $al.controller.doResetFromApprovedRequest(); + }, + onResetToDraft: function () { + $al.controller.doResetToDraftRequest(); + }, + onUpdateRequestPaidToDraft: function () { + $al.controller.doResetRequestInPaidToDraft(); + }, + onSubmit: function () { + $al.controller._doSubmit(); + } + + }); + + $al.controller.modelPermissions(); + $al.model._viewModel.declarationOfHonourList = $al.view._getDeclarationHonourStatements(); + + } + + _setCanReject(boolean_value) { + // Set value of 'canReject' + $al.model._viewModel.canReject = boolean_value; + } + + _renderCommunication() { + $al.view._elements.communication.data.element.kendoListView({ + dataSource: $al.view._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + + $al.view._elements.communication.data.component = "kendoListView"; + + $al.view._elements.communication2.data.element.kendoListView({ + dataSource: $al.view._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + + $al.view._elements.communication2.data.component = "kendoListView"; + } + + _prepareCommunication(data) { + if (typeof data !== "undefined" && data !== null) { + data.forEach(n => { + if (n.arrivalState) + n.arrivalState = $al.controller._languageBundle.stateMachine[n.arrivalState.toLowerCase()]; + + }); + } + return data; + } + + _validateComments(message) { + // Check at least one comment + let valid = $al.view.requestCommon._thereAreComments(true); + + if (!valid) { + $a.toast.showError(message); + $al.view.requestCommon.showCommentsFieldMessage($al.controller._languageBundle.alerts.field_comments_mandatory); + } + return valid; + } + + _bindView() { + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } + + justificationEditor(container, options) { + $('
    ') + .appendTo(container) + .TextBox; + } + + _initSupportingDocumentsFileUploader() { + if(!$al.model._viewModel.request.requestDetails){ + $al.model._viewModel.request.requestDetails = $al.controller._defaultRequestDetails(); + } + // Setup the attachment uploader + $("#supporting-document-file-id").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "supporting-document-file-id"), + remove: $al.fileManagement.onRemove, + success: function (e) { + // TODO Allow 0.5 seconds do the list of files is updated inside the kendoUpload component: + setTimeout( function(){ $al.controller._refreshAttachmentsInModel(e.operation,e.files); }, 500 ); + }, + error: function (e) { + $a.toast.showError('Error while uploading files!'); + }, + complete: function (e) { }, + select: function (e) { }, + localization: { + select: 'SELECT FILES...' + }, + files: $al.model._viewModel.request.requestDetails[0].attachments + }); + } + + + _getDeclarationHonourStatements() { + var statements = []; + statements.push({ + statementId: "statement_1", + statement: $al.controller._languageBundle.honour.installation_supporting_documents, + isChecked: false + }); + return statements; + } + + extractAttachmentsList(request){ + const attachList = []; + if (request.requestDetails && request.requestDetails.length > 0 && request.requestDetails[0].attachments) { + request.requestDetails[0].attachments.forEach(attachment => { + + attachList.push({ + name : '' + attachment.fileName + '' , + fileName: attachment.fileName, + fileUid: attachment.fileUid, + title : attachment.fileName, + extension : '.' + attachment.fileName.split('.').pop(), + id: attachment.id, + creationActor: attachment.creationActor, + updatingActor: attachment.updatingActor, + contentDisposition : 'ATTACHMENT', + downloadUrl: $al.fileManagement.restCalls.preview.formatUrl({uid: attachment.fileUid}) + }); + }); + + } + if(request.requestDetails){ + request.requestDetails[0].attachments = attachList; + } + } +} + +class RequestController { + + constructor() { + this._languageBundle = null; + } + + + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.requests", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + + $al.model.init(); + $al.notifyOnReadyMvc(); + } + + doApproveRequest() { + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'APPROVE' + }, null, null, $al.controller._approveResponse); + + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + _approveResponse(data) { + // $al.model._restCalls.changeStateRequest.execute({requestId: $requestId,stateMachineEvent : 'APPROVE'},null , $al.model.onRequestRetrieved); + $a.toast.showSuccess($al.controller._languageBundle.alerts.approve_and_save_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doPay() { /* from APPROVED to PAID */ + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'MARK_PAID' + }, null, null, $al.controller._payResponse); + + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + doPayWithSysper() { + if ($al.view.validateIndemnityRequest()) { + $a.loading.toggle(true); + $al.model._restCalls.payInSysper.execute({requestId: $requestId}, null, null, + null, $al.controller._payInSysperResponse, null, null); + setTimeout(() => { + $a.loading.toggle(false); + if($al.view.isEmpty($al.model._viewModel.request.paymentId) || + $al.view.isEmpty($al.model._viewModel.request.paymentEventId)){ + $a.toast.showWarning('Payment is still in progress. Please wait for a while and then refresh the page'); + } + + }, 60000); + } + } + + _setIndemnityValues(){ + // set all the values to model so they can be saved + $al.model._viewModel.indemnityModel.type = $al.view._elements.indemnity_type.data.element.data("kendoDropDownList").value(); + $al.model._viewModel.indemnityModel.originPeriodMonth = $al.view._elements.origin_period_month.data.element.data("kendoDropDownList").value(); + $al.model._viewModel.indemnityModel.originPeriodYear = $al.view._elements.origin_period_year.data.element.data("kendoDropDownList").value(); + $al.model._viewModel.indemnityModel.paymentPeriodMonth = $al.view._elements.payment_period_month.data.element.data("kendoDropDownList").value(); + $al.model._viewModel.indemnityModel.paymentPeriodYear = $al.view._elements.payment_period_year.data.element.data("kendoDropDownList").value(); + $al.model._viewModel.indemnityModel.number = $al.view._elements.indemnity_number.data.element.data("kendoDropDownList").value(); + $al.model._viewModel.indemnityModel.unit = $al.view._elements.indemnity_unit.data.element.data("kendoDropDownList").value(); + $al.model._viewModel.indemnityModel.comment = $("#indemnity_comment").val(); + } + + _hasNoValidAddressDeclaration() { + let addresses = $al.model.request.addresses; + let addressLength = addresses == undefined ? 0 : addresses.length; + let hasNotValidatedAddressInSysper = false; + if (addressLength == 0) { + hasNotValidatedAddressInSysper = true; + } else { + addresses.forEach(address => { + if (address.address.status != "VALIDATED") { + hasNotValidatedAddressInSysper = true; + } + }); + } + return hasNotValidatedAddressInSysper; + } + + _validateAndSaveIndemnityOnApprove() { + if ($al.view.validateIndemnityRequest()) { + $a.modalDialog.hide(); + $al.controller._updateRequestWithAttachmentDocumentsAndJustification( + (updateData) => { + $a.loading.toggle(false); + $al.controller._saveOrUpdateIndemnityOnApprove(); + }); + } + } + + _saveOrUpdateIndemnityOnApprove() { + $al.controller._setIndemnityValues(); + $a.loading.toggle(true); + $al.model._restCalls.saveUpdateIndemnity.execute( + {requestId: $requestId}, $al.model._viewModel.indemnityModel, null, + null, $al.controller._onSaveIndemnityForApproval, null, null); + setTimeout(() => { + $a.loading.toggle(false); + }, 12000); + } + + _onSaveIndemnityForApproval(data) { + if (data.status === 200) { + $al.controller.doApproveRequest(); + } else { + const validationErrors = $al.controller._extractMessagesFromErrorResponse( + data); + $a.toast.showError(validationErrors); + } + } + + _validateAndSaveIndemnity() { + if ($al.view.validateIndemnityRequest()) { + $a.modalDialog.hide(); + $al.controller._updateRequestWithAttachmentDocumentsAndJustification( + (updateData) => { + $a.loading.toggle(false); + $al.controller._saveOrUpdateIndemnity(); + $al.controller.doApproveRequest(); + }); + } + } + + _saveOrUpdateIndemnityAndPayWithSysper() { + $a.loading.toggle(true); + $al.model._restCalls.saveUpdateIndemnity.execute({requestId: $requestId}, $al.model._viewModel.indemnityModel, null, + null, $al.controller._onSaveIndemnityResponseAndPayWithSysper, null, null); + setTimeout(() => { + $a.loading.toggle(false); + }, 60000); + } + + _onSaveIndemnityResponseAndPayWithSysper(data) { + $a.loading.toggle(false); + if (data.status === 200) { + $al.controller.doPayWithSysper(); + } else { + const validationErrors = $al.controller._extractMessagesFromErrorResponse( + data); + $a.toast.showError(validationErrors); + } + } + + _saveOrUpdateIndemnityAndPay() { + $a.loading.toggle(true); + $al.model._restCalls.saveUpdateIndemnity.execute({requestId: $requestId}, $al.model._viewModel.indemnityModel, null, + null, $al.controller._onSaveIndemnityResponseAndPay, null, null); + setTimeout(() => { + $a.loading.toggle(false); + }, 60000); + } + + _onSaveIndemnityResponseAndPay(data) { + $a.loading.toggle(false); + if (data.status === 200) { + $al.controller.doPay(); + }else{ + const validationErrors = $al.controller._extractMessagesFromErrorResponse(data); + $a.toast.showError(validationErrors); + } + } + + _saveOrUpdateIndemnity() { + $al.controller._setIndemnityValues(); + $a.loading.toggle(true); + $al.model._restCalls.saveUpdateIndemnity.execute({requestId: $requestId}, $al.model._viewModel.indemnityModel, null, + null, $al.controller._onSaveIndemnityResponse, null, null); + setTimeout(() => { + $a.loading.toggle(false); + }, 12000); + } + + _payInSysperResponse(data) { + if (data.status === 200) { + $al.controller._payResponse(data); + }else{ + const validationErrors = $al.controller._extractMessagesFromErrorResponse(data); + $a.toast.showError(validationErrors); + } + } + + _onSaveIndemnityResponse(data) { + + if (data.status === 200) { + $al.model.refreshAfterUpdateState(data); + }else{ + $a.loading.toggle(false); + const validationErrors = $al.controller._extractMessagesFromErrorResponse(data); + $a.toast.showError(validationErrors); + } + } + + _extractMessagesFromErrorResponse(response) { + + const text = response.responseText; + let textObj = null; + try { + textObj = JSON.parse(text); + } catch (parseExc) { + } + const messages = []; + if (textObj && textObj.items && textObj.items.length > 0) { + textObj.items.forEach(item => { + messages.push(item.message); + }); + return messages; + } else { + return [ text ]; + } + } + + _payResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.pay_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doRejectRequest() { + if ($al.view._validateComments($al.controller._languageBundle.alerts.justification_is_mandatory_for_adv_rem_reject)) { + // default values for indemnity should be saved only when the request is in approved status RIGD-3352 + if($al.model._viewModel.request.state === "AWAITING" ) { + $al.controller._saveOrUpdateIndemnity(); + } + $al.controller._updateRequestWithAttachmentDocumentsAndJustification( + (updateData) => { + $a.loading.toggle(false); + $al.controller.doReject(); + }); + } + } + + doUpdateRequest() { /* from PAID to AWAITING */ + if ($al.view._validateComments($al.controller._languageBundle.alerts.justification_is_mandatory_for_reset_approval)) { + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'UPDATE_PAID' + }, null, null, $al.controller._updateRequestResponse); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + } + + _updateRequestResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.update_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doReject() { + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'REJECT' + }, null, null, $al.controller._rejectRequestResponse); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + //message and refresh page + _rejectRequestResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.reject_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doRefreshDataSysper() { + $a.loading.toggle(true); + $al.model._restCalls.refreshDataSysper.execute({ + requestId: $requestId + }, null, null, $al.controller._refreshDataSysperResponse); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + _refreshDataSysperResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.refresh_data_sysper_success); + $al.model.refreshAfterUpdateState(data); + } + + doResetFromApprovedRequest() { /* from APPROVED to AWAITING */ + if ($al.view._validateComments($al.controller._languageBundle.alerts.justification_is_mandatory_for_reset_approval)) { + $a.loading.toggle(true); + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, + $al.controller._doResetFromApproved); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + } + + _doResetFromApproved() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'RESET_APPROVAL' + }, null, null, $al.controller._resetFromApprovedResponse); + + } + + _resetFromApprovedResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.reset_from_approved_success); + $al.model.refreshAfterUpdateState(data); + } + + doResetToDraftRequest() { /* from REJECTED to DRAFT */ + if ($al.view._validateComments($al.controller._languageBundle.alerts.justification_is_mandatory_for_reset_to_draft)) { + $a.loading.toggle(true); + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, + $al.controller._doResetToDraft); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + } + + _doResetToDraft() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'RESUBMIT' + }, null, null, $al.controller._resetToDraftResponse); + + } + + doResetRequestInPaidToDraft() { /* from PAID to DRAFT */ + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'UPDATE_PAID_TO_DRAFT' + }, null, null, $al.controller._resetPaidToDraftResponse); + } + + _resetPaidToDraftResponse(data) { + $a.toast.showSuccess( + $al.controller._languageBundle.alerts.reset_to_draft_success); + $al.model.refreshAfterUpdateState(data); + } + + _resetToDraftResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.reset_to_draft_success); + $al.model.refreshAfterUpdateState(data); + } + + modelPermissions() { + + var _movFileFrozen = $al.model.movementFile.state === 'CANCELLED' || $al.model.movementFile.state === 'COMPLETED'; + let _movFileNotCancelled = $al.model.movementFile.state !== 'CANCELLED'; + $al.view.extractAttachmentsList($al.model._viewModel.request); + if ($al.model._viewModel.isBackOffice) { //BACK OFFICE permissions + + // Set flag to see the DELETE button in the comments (regardless of state) + $al.model._viewModel.canDeleteComments = $al.view.requestCommon.hasDeleteCommentsPermission(); + + //Permission to show buttons, in case of needing a security checker I do it here instead of a template + if ($al.model._viewModel.request.state === 'DRAFT') { + // Show comments section only if there some. + $al.model._viewModel.commentsVisible = $al.view.requestCommon._thereAreComments(false); + // Cannot add/delete comments + $al.model._viewModel.canAddComments = false; + $al.model._viewModel.isDraft = true; + $al.model._viewModel.canSubmit = $al.model.permissions.canSubmitInstallationRequest; + $al.model._viewModel.canEditAttachments = $al.model.permissions.canSubmitInstallationRequest; + $al.model._viewModel.showActionsBox = $al.model.permissions.canSubmitInstallationRequest && $al.model._viewModel.canSubmit; + } else if ($al.model._viewModel.request.state === 'AWAITING') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.view._setCanReject( + $al.model.permissions.canRejectInstallation); + $al.model._viewModel.canApprove = $al.model.permissions.canApproveInstallationRequest; + $al.model._viewModel.enableOriginPeriod = $al.view.enableOriginPeriod() + && $al.model.permissions.canEditInstallation; + $al.model._viewModel.isAwaiting = true; + $al.model._viewModel.showDivider = true; + $al.model._viewModel.canEditIndemnity = $al.model.permissions.canEditInstallation; + $al.model._viewModel.canSave = $al.model.permissions.canEditInstallation; + $al.model._viewModel.canEditAttachments = $al.model.permissions.canEditInstallation; + $al.model._viewModel.canRefreshDataSysper = $al.model.permissions.canRefreshInstallationRequest; + } else if ($al.model._viewModel.request.state === 'APPROVED') { + $al.model._viewModel.canEditJustification = false; + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.view._setCanReject( + $al.model.permissions.canRejectInstallation); + $al.model._viewModel.canPayManually = $al.model.permissions.canPayInstallationManually; + $al.model._viewModel.canPayWithSysper = $al.model.permissions.canRequestInstallationSysperPayment; + $al.model._viewModel.isApproved = true; + $al.model._viewModel.showDivider = true; + $al.model._viewModel.indemnityApproved = true; + $al.model._viewModel.canRefreshDataSysper = $al.model.permissions.canRefreshInstallationRequest; + $al.model._viewModel.canResetFromApproved = $al.model.permissions.canResetInstallationRequestFromApproved; + } else if ($al.model._viewModel.request.state === 'REJECTED') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.isRejected = true; + $al.model._viewModel.canEditJustification = false; + $al.model._viewModel.canResetToDraft = $al.model.permissions.canResetInstallationRequestToDraft; + } else if ($al.model._viewModel.request.state === 'PAID') { + $al.model._viewModel.showActionsBox = _movFileNotCancelled; //we show the actions section if the movement file is not Cancelled only - needed for Request Update button + $al.model._viewModel.canUpdateRequest = _movFileNotCancelled && $al.model.permissions.canRequestUpdatePaid; + $al.model._viewModel.isPaid = true; + $al.model._viewModel.showPaymentInfo = $al.model._viewModel.request.paymentId ? true : false; + $al.model._viewModel.indemnityApproved = true; + $al.model._viewModel.canPayWithSysper = !_movFileFrozen + && $al.model.permissions.canUpdateInstallationPaymentInSysper; + $al.model._viewModel.canPayManually = false; + $al.model._viewModel.canEditJustification = false; + $al.model._viewModel.canRefreshDataSysper = $al.model.permissions.canRefreshInstallationRequest; + } + + } else { // FRONT OFFICE PERMISSIONS + //Permission to show buttons, in case of needing a security checker I do it here instead of a template + if ($al.model._viewModel.request.state === 'DRAFT') { + $al.model._viewModel.commentsVisible = $al.view.requestCommon._thereAreComments(false); + $al.model._viewModel.isDraft = true; + $al.model._viewModel.canSubmit = $al.model.permissions.canSubmitInstallationRequest || $al.model.permissions.isOwner; + $al.model._viewModel.canEditAttachments = $al.model.permissions.canSubmitInstallationRequest || $al.model.permissions.isOwner; + $al.model._viewModel.showActionsBox = ($al.model.permissions.canSubmitInstallationRequest || $al.model.permissions.isOwner) && $al.model._viewModel.canSubmit; + $al.model._viewModel.showDivider = false; + } else if ($al.model._viewModel.request.state === 'AWAITING') { + $al.model._viewModel.isAwaiting = true; + $al.model._viewModel.canEditJustification = false; + } else if ($al.model._viewModel.request.state === 'REJECTED') { + $al.model._viewModel.showDivider = false; + $al.model._viewModel.canEditJustification = false; + $al.model._viewModel.canResetToDraft = $al.model.permissions.isOwner || $al.model.permissions.canResetInstallationRequestToDraft; + $al.model._viewModel.showActionsBox = $al.model._viewModel.canResetToDraft; + $al.model._viewModel.isRejected = true; + } else if ($al.model._viewModel.request.state === 'APPROVED') { + $al.model._viewModel.isApproved = true; + $al.model._viewModel.indemnityApproved = true; + $al.model._viewModel.canSave = false; + $al.model._viewModel.canEditJustification = false; + } else if ($al.model._viewModel.request.state === 'PAID') { + $al.model._viewModel.isPaid = true; + $al.model._viewModel.canEditJustification = false; + $al.model._viewModel.canUpdateRequestPaidToDraft = $al.model.permissions.canRequestUpdatePaid || $al.model.permissions.isOwner; + $al.model._viewModel.showActionsBox = $al.model.permissions.canRequestUpdatePaid || $al.model.permissions.isOwner; + //$al.model._viewModel.showActionsBox = _movFileNotCancelled; //to be enabled back once we add new buttons + $al.model._viewModel.showPaymentInfo = $al.model._viewModel.request.paymentId + ? true : false; + } + } + } + + + _validateJustification() { + let justification = $("#justification").val(); + return (justification == undefined || + justification === "" || + justification === null) + && $al.view._hasBeenInDraftMoreThanOneTime(); + } + + _refreshAttachmentsInModel(operation, files) { + // Update the attachments in the request of the view model + if(typeof $al.model.request.state == 'undefined' || $al.model.request.state === 'DRAFT' + || $al.model.request.state === 'AWAITING'){ + if(!$al.model._viewModel.request.requestDetails){ + $al.model._viewModel.request.requestDetails = $al.controller._defaultRequestDetails(); + } + const upload = $("#supporting-document-file-id").data( + "kendoUpload"); + $al.model._viewModel.request.requestDetails[0].attachments = upload.getFiles(); + } + } + + _defaultRequestDetails(){ + + return [ + {id: null, + detailTypeOrder: 1, + requestId: $requestId, + volume: "", + insuranceRate: "", + goodsValue: {amount: 0, currency: "EUR"}, + detailType: 'INSTALLATION', + invoice: {amount: 0, currency: "EUR"}, + amount: {amount: 0, currency: "EUR"}, + exchangeRateCurrency: 'EUR', + exchangeRate: 1, + exchangePayMonth: '0', + newItem: true, + extraDetail: false, + attachments: [] + }]; + } + + _doSubmit() { + if(!$al.controller._validateSubmitInputs()){ + return; + } + $a.loading.toggle(true); + $al.model._viewModel.request = $al.controller.prepareAttachmentRequest($al.model._viewModel.request); + $al.model._viewModel.request.justification = $("#justification").val(); + const upload = $("#supporting-document-file-id").data("kendoUpload"); + if (upload.getFiles().length > 0 + || $al.model._viewModel.request.justification !== undefined) { + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._sendSubmitEvent); + }else{ + $al.controller._sendSubmitEvent(null); + } + setTimeout(() => { + $a.loading.toggle(false); + }, 30000); + } + + prepareAttachmentRequest(request) { + + const attachments = []; + if (request.requestDetails[0].attachments && request.requestDetails[0].attachments.length > 0) { + request.requestDetails[0].attachments.forEach(item => { + attachments.push({ + fileUid: item.fileUid ? item.fileUid : item.uid, + fileName: item.fileName ? item.fileName : item.name, + name: item.fileName ? item.fileName:item.name, + attachmentType: 'INSTALLATION_REQUEST', + title : item.fileName ? item.fileName:item.name, + extension : item.fileName ?'.' + item.fileName.split('.').pop():'.' + item.name.split('.').pop(), + id: item.id, + creationActor: item.creationActor, + updatingActor: item.updatingActor, + contentDisposition : 'ATTACHMENT' + }); + }); + } + request.requestDetails[0].attachments = attachments; + return request; + } + + _updateRequestWithAttachmentDocumentsAndJustification(updateRequestCallBack) { + $al.model._viewModel.request.justification = $('#justification').val(); + if ($al.model._viewModel.canEditAttachments + || $al.model._viewModel.request.justification !== undefined) { + $a.loading.toggle(true); + $al.model._viewModel.request = $al.controller.prepareAttachmentRequest($al.model._viewModel.request); + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, updateRequestCallBack); + }else{ + updateRequestCallBack(null); + } + } + + _submitRequestResponse(data) { + $a.loading.toggle(false); + $a.toast.showSuccess($al.controller._languageBundle.alerts.submit_request_success); + $al.model.refreshAfterUpdateState(data); + } + _sendSubmitEvent(data) { + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'SUBMIT' + }, null, null, $al.controller._submitRequestResponse); + setTimeout(() => { + $a.loading.toggle(false); + }, 30000); + } + + _validateSubmitInputs() { + const validation_messages = $al.controller.validatePageSubmitInputs(); + if (validation_messages.length > 0) { + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validation_messages); + $a.loading.toggle(false); + return false; + } + return true; + } + + validatePageSubmitInputs() { + const messages = []; + const upload = $("#supporting-document-file-id").data("kendoUpload"); + const validator = $(".declarationForm").kendoValidator().data( + "kendoValidator"); + if($al.controller._validateJustification()) { + messages.push( $al.controller._languageBundle.validations.submit_installation_validation_justification); + } + if (!validator.validate()) { + messages.push( $al.controller._languageBundle.validations.submit_installation_validation_declaration); + } + if ($al.controller.isRequestDetailsAttachmentsNotEmpty()) { + return messages; + } + if ( upload.getFiles().length === 0) { + messages.push( $al.controller._languageBundle.validations.submit_installation_validation_documents); + } + return messages; + } + isRequestDetailsAttachmentsNotEmpty(){ + return $al.model._viewModel.request.requestDetails && + $al.model._viewModel.request.requestDetails[0].attachments.length > 0; + } +} + +$al.mvc(RequestModel, RequestView, RequestController, true); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.topup.request.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.topup.request.js new file mode 100644 index 0000000..e8af116 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.topup.request.js @@ -0,0 +1,1023 @@ +class RequestModel { + + constructor() { + + $_mvcSections.forEach((section, id) => { + this[id] = new section.model(); + }); + + this._restCalls = { + + getTopupRequest: new $a.GetRestCall(null, "/internal/api/topup-requests/{requestId}"), + deleteTopupRequest: new $a.DeleteRestCall(null, "/internal/api/topup-requests/{requestId}"), + // Parent requests: Advance, TUD, Clearing, Reimbursement + getAdvanceRequest: new $a.GetRestCall(null, "/internal/api/adv-rem-requests/{requestId}"), + getTudRequest: new $a.GetRestCall(null, "/internal/api/tud-requests/{requestId}"), + getClearingRequest: new $a.GetRestCall(null, "/internal/api/clearing-requests/{requestId}"), + getReimbursementRequest: new $a.GetRestCall(null, "/internal/api/total-rem-requests/{requestId}"), + validatePaymentOrder: new $a.GetRestCall(null, "/internal/api/summa/validateOrder/{orderId}"), + // ================== + movementFile: new $a.GetRestCall(null, "/internal/api/movement-files/{fileId}"), + updateRequest: new $a.PutRestCall(null, "/internal/api/topup-requests"), + createRequest: new $a.PostRestCall(null, "/internal/api/topup-requests"), + getStateHistory: new $a.GetRestCall(null, "/internal/api/topup-requests/{requestId}/stateMachineHistory"), + changeStateRequest: new $a.PutRestCall(null, "/internal/api/topup-requests/stateMachineEvent/{stateMachineEvent}/{requestId}"), + permissions: new $a.GetRestCall(null, "/internal/api/permissions"), + getAllOrderResposes: new $a.GetRestCall(null, "/internal/api/summa/order-response?requestId={requestId}"), + + appParameters: new $a.GetRestCall(null, "/internal/api/app-parameters"), + + + }; + this.urls = { + action: { + viewMovementFile: $a.utils.url(null, "/movement-files/view.do"), + viewTopupRequest: $a.utils.url(null, "/requests/view-topup.do"), + // Link to Parent request + viewAdvanceRequest: $a.utils.url(null, "/requests/view-adv-rem.do"), + viewTudRequest: $a.utils.url(null, "/requests/view-tud.do"), + viewClearingRequest: $a.utils.url(null, "/requests/view-clr-rem.do"), + viewReimbursementRequest: $a.utils.url(null, "/requests/view-total-rem.do"), + abacDetailsForm: $a.utils.url(null, "/summa/p2p-payments-details.do"), + showAbacInfo: $a.utils.url(null, "/abac/abac-info.do"), + viewRequest: $a.utils.url(null, "/requests/view-topup.do"), + } + }; + } + + init() { + + var something_missing = false; + var dataPoolExecutor = null; + + if ($parentRequestId && $parentRequestType) { + // We received parentRequestId, so the Topup request is being created + var parent_request_call = $al.model.getRestCallForRequestType($parentRequestType); + if (parent_request_call) { + // Prepare for getting parent request + dataPoolExecutor = new $a.RestCallPoolExecutor($al.model.onParentRequestRetrieved); + dataPoolExecutor.add("parentRequest", parent_request_call, {requestId: $parentRequestId}); + + // Others? + } else { + something_missing = true; + } + + } else { + if ($requestId) { + // We received requestId, so the Topup request exists + // Prepare for getting topup request + dataPoolExecutor = new $a.RestCallPoolExecutor($al.model.onRequestDataRetrieved); + dataPoolExecutor.add("request", $al.model._restCalls.getTopupRequest, {requestId: $requestId}); + dataPoolExecutor.add("stateMachineHistory", $al.model._restCalls.getStateHistory, {requestId: $requestId}); + + if( $isBackOffice) { + dataPoolExecutor.add("allOrderResposes",$al.model._restCalls.getAllOrderResposes, {requestId: $requestId}); + } + dataPoolExecutor.add("comments", $al.model.requestCommon._restCalls.getRequestComments, {requestId: $requestId}); + + } else { + // Received no params + something_missing = true; + } + } + if (dataPoolExecutor) { + dataPoolExecutor.add("appParameters", $al.model._restCalls.appParameters, null, {paramType: "ADVANCE_REMOVAL"}); + } + + if (something_missing) { + // Did not receive requiered params: Error + $al.model.pageVisible = false; + $a.toast.showError('Unable to show page: Either requestId or parentRequestId and valid parentRequestType must be provided.' + + 'Received: ' + $requestId + ', ' + $parentRequestId + ', ' + $parentRequestType + '.'); + return; + } + // --- + dataPoolExecutor.run(); + } + + onRequestDataRetrieved(pool_data) { + + $al.model.stateMachineHistory = pool_data.get('stateMachineHistory').data; + if( $isBackOffice) { + $al.model.allOrderResposes =pool_data.get("allOrderResposes").data; + } + $al.model.request = pool_data.get('request').data; + if(typeof $al.model.request.requestDetails[0].attachments == 'undefined'){ + $al.model.request.requestDetails[0].attachments=[]; + } + $al.model.requestComments = pool_data.get('comments').data; + var AppParametersArr = pool_data.get("appParameters").data; + $al.model.appParameters = new Map(AppParametersArr.map(i => [i.key, i.value])); + $al.model.request.totalAmount.amountFormatted = kendo.toString( $al.model.request.totalAmount.amount, "n2") + ' EUR'; + + $al.model.parentUrlAction = $al.model.getActionForRequestType( $al.model.request.parent.requestType ); + $al.model.parentRequestAmount = 0; + if(typeof $al.model.request.parent.totalAmount != 'undefined'){ + $al.model.parentRequestAmount = kendo.toString(parseFloat($al.model.request.parent.totalAmount.amount), "n2"); + } + + $al.model.parentRequestStringId = $al.model.request.parent.requestStringId; + + $al.model.pageVisible = true; + + var AppParametersArr = pool_data.get("appParameters").data; + $al.model.appParameters = new Map(AppParametersArr.map(i => [i.key, i.value])); + + // Retrieve permissions. Mov file is: parent_request.declaration.movementFileId + var moreDataPoolExecutor = new $a.RestCallPoolExecutor($al.model.onAdditionalDataRetrieved); + moreDataPoolExecutor.add("permissions", $al.model._restCalls.permissions, null, {movementFileId: $al.model.request.parent.declaration.movementFileId}); + moreDataPoolExecutor.add("movementFile", $al.model._restCalls.movementFile, {fileId: $al.model.request.parent.declaration.movementFileId}); + moreDataPoolExecutor.run(); + } + + onParentRequestRetrieved(pool_data) { + // Get the amount + var parent_request = pool_data.get('parentRequest').data; + if(typeof parent_request.totalAmount == 'undefined'){ + parent_request.totalAmount={amount : 0, currency : 'EUR' }; + } + var AppParametersArr = pool_data.get("appParameters").data; + $al.model.appParameters = new Map(AppParametersArr.map(i => [i.key, i.value])); + // Create basic request with needed fields, from the parent request + $al.model.request = { + parentId: parent_request.id, + parent: parent_request, + staffMember: parent_request.staffMember, + totalAmount: { + amount: 0, + currency: 'EUR' + }, + amount: { + amount: 0, + currency: 'EUR' + }, + personBankInfo: parent_request.personBankInfo, + reasonFor: '', + requestType: 'TopUpRequest', + requestDetails: [{id: null, + detailTypeOrder: 1, + requestId: $requestId, + detailType: 'TOPUP', + volume: "", + insuranceRate: "", + goodsValue: {amount: 0, currency: "EUR"}, + invoice: {amount: 0, currency: "EUR"}, + amount: {amount: 0, currency: "EUR"}, + exchangeRateCurrency: 'EUR', + exchangePayMonth: '0', + exchangeRate: 1, + newItem: true, + extraDetail: false, + attachments: [] + }] + + }; + + + $al.model.parentUrlAction = $al.model.getActionForRequestType( parent_request.requestType ); + + $al.model.parentRequestAmount = kendo.toString(parseFloat(parent_request.totalAmount.amount), "n2"); + $al.model.parentRequestStringId = parent_request.requestStringId; + + $al.model.pageVisible = true; + + // Retrieve permissions. Mov file is: parent_request.declaration.movementFileId + var moreDataPoolExecutor = new $a.RestCallPoolExecutor($al.model.onAdditionalDataRetrieved); + moreDataPoolExecutor.add("permissions", $al.model._restCalls.permissions, null, {movementFileId: parent_request.declaration.movementFileId}); + moreDataPoolExecutor.add("movementFile", $al.model._restCalls.movementFile, {fileId: parent_request.declaration.movementFileId}); + moreDataPoolExecutor.run(); + } + + onAdditionalDataRetrieved(pool_data) { + $al.model.permissions = pool_data.get('permissions').data; + $al.model.movementFile = pool_data.get('movementFile').data; + + $al.model.onAllRetrieved(); + } + + + + onAllRetrieved() { + + $al.view._initializeView(); + $al.view.render(); + $al.view._bindView(); + + } + + getRestCallForRequestType(request_type) { + + switch (request_type) { + case 'AdvanceRequest': + return $al.model._restCalls.getAdvanceRequest; + case 'TudRequest': + return $al.model._restCalls.getTudRequest; + case 'TotalRemRequest': + return $al.model._restCalls.getReimbursementRequest; + case 'ClearingRequest': + return $al.model._restCalls.getClearingRequest; + default: + return null; + } + } + + getActionForRequestType(request_type) { + + switch (request_type) { + case 'AdvanceRequest': + return $al.model.urls.action.viewAdvanceRequest; + case 'TudRequest': + return $al.model.urls.action.viewTudRequest; + case 'TotalRemRequest': + return $al.model.urls.action.viewReimbursementRequest; + case 'ClearingRequest': + return $al.model.urls.action.viewClearingRequest; + default: + return null; + } + } + + _onDataRetrievedValidatePaymentOrder(data) { + $al.model.validPaymentOrder = data; + var validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + invalidFormat: input => { + if (input.attr('required')) { + return input.val().length === input.val().trim().length; + } else { + return true; + } + }, + paymentDateInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_date.id + "]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + paymentOrderInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_order.id + "]") && !$al.model.validPaymentOrder) { + return false; + } else { + return true; + } + }, + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentDateInvalid: "Invalid format of Payment Date", + paymentOrderInvalid: "Payment Order invalid", + invalidFormat: "Invalid format: remove spaces" + } + }).data("kendoValidator"); + if (validator.validate()) { + $al.model.requestCommon.prepareRequestForMarkAsPaid(); + + $al.controller.requestCommon.doUpdateAndMarkAsPaidRequest(); + $a.modalDialog.hide(); + } + } + + _extractComments(comments_list) { + var resp = []; + comments_list.forEach(item => { resp.push(item.commentText); }); + return resp.join("\n\n"); + } + +} + +class RequestView { + + constructor() { + + $_mvcSections.forEach((section, id) => { + this[id] = new section.view(); + }); + + this._templates = new $a.DataContainer("request"); + this._elements = new $a.DataContainer("request"); + + this._templates.data(new $a.KendoTemplateData()); + this._templates.node("topup_attachment").data(new $a.KendoTemplateData()); + this._elements.node("payment_order").data(new $a.KendoElementData()); + this._elements.node("payment_request").data(new $a.KendoElementData()); + this._templates.node("ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("basic").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("warn").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("mark_as_paid").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._elements.node("comments").node("grid").data(new $a.KendoElementData()); + this._templates.node("comments").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("add_comment").data(new $a.KendoTemplateData()); + + this._elements.node("payment_date").data(new $a.KendoElementData()); + this._elements.node("payment_date_div").data(new $a.KendoElementData()); + this._elements.node("payment_order_div").data(new $a.KendoElementData()); + this._elements.node("payment_request_div").data(new $a.KendoElementData()); + this._elements.node("beneficiary_name_div").data(new $a.KendoElementData()); + this._elements.node("gross_amount_div").data(new $a.KendoElementData()); + this._elements.node("iso_code_div").data(new $a.KendoElementData()); + this._elements.node("communication").data(new $a.KendoElementData()); + this._elements.node("communication2").data(new $a.KendoElementData()); + } + + render() { + $al.view._templates.data.compile(); + $al.view._templates.topup_attachment.data.compile(); + + $al.view._initFileUploader(); + $al.view._templates.comments.grid.data.compile(); + $al.view._templates.add_comment.data.compile(); + + $al.view.requestCommon._renderCommentsGrid(); + $al.controller._renderCommunication(); + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }) + + } + + _initFileUploader() { + + // Setup the attachment uploader + $("#topup-attachment-input").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "topup-attachment-input"), + remove: $al.fileManagement.onRemove, + success: function (e) { + // Allow 0.5 seconds do the list of files is updated inside the kendoUpload component: + setTimeout( function(){ $al.controller._refreshAttachmentsInModel(); }, 500 ); + }, + error: function (e) { + $a.toast.showError('Error while uploading files!'); + }, + complete: function (e) { }, + select: function (e) { }, + localization: { + select: 'Select Files...' + }, + files: $al.model.request.requestDetails[0].attachments + }); + } + + _initializeView() { + $al.model.request = $al.controller.requestCommon.prepareRequestForModelView(); + var viewModel = new kendo.data.Model.define(); + $al.model.movementFileFrozen = $al.model.movementFile.state === 'CANCELLED' || $al.model.movementFile.state === 'COMPLETED'; + $al.view.extractAttachmentsList($al.model.request); + + + $al.model._viewModel = new viewModel({ + isVisible: $al.model.pageVisible, + // name: $al.model.movementFile.jobHolder.lastName + ' ' + $al.model.movementFile.jobHolder.firstName, + // perId: $al.model.request.staffMember.id, + request: $al.model.request, + parentRequestAmount: $al.model.parentRequestAmount, + parentRequestStringId: $al.model.parentRequestStringId, + staffMemberFullName: $al.model.request.staffMember.lastName + " " + $al.model.request.staffMember.firstName, + // movFileFrozen: $al.model.movementFile.state === 'CANCELLED' || $al.model.movementFile.state === 'COMPLETED', + isBackOffice: $isBackOffice, + showAbacInfo: function () { + $al.controller.doShowAbacInfo(); + }, + showActionsBox: !$al.model.movementFileFrozen, + showPaymentInfoP2P: false, + showPaymentInfoABAC: false, + movFileFrozen: $al.model.movementFileFrozen, + showPaymentAbacInfoLink: false, + reasonTextEnabled: false, + movementFile: $al.model.movementFile, + // --- Comments logic --- + commentsVisible: $isBackOffice , + showCommentButton: $al.model.permissions.canApproveTopUpRequest, + showCommentInput: function() { + this.set("showCommentButton", false); + $al.view.requestCommon._scrollToBottom(); + $('textarea.autoSize').autosize(); + }, + + // Cannot add/delete comments + canAddComments : $al.model.permissions.canApproveTopUpRequest && $isBackOffice , + + // Set in method modelPermissions(), see below + canSaveApprove: false, + canApprove: false, + canSubmit: false, + canMarkAsPaid: false, + canInitiatePayment: false, + canReject: false, + canCancel: false, + canEditAmount: false, + canEditAttachments: false, + canDiscardChanges: false, + // Set flag to see the DELETE button in the comments (regardless of state) + canDeleteComments : $al.view.requestCommon.hasDeleteCommentsPermission(), + allOrderResposes: $al.model.allOrderResposes, + // ---------------------- + onSaveApprove: function () { + if ($al.model.request.state === 'DRAFT') { + if(!$al.controller._validateInputs()){ + return; + } + $al.controller.doApproveFromDraft(); + } else { + // Refresh the list of attachments + $al.controller._refreshAttachmentsInModel(); + + if(!$al.controller._validateInputs()){ + return; + } + // Validation ok + $al.controller.doSaveApproveRequest(); + } + + }, + onApprove: function () { + $a.loading.toggle(true); + // Refresh the list of attachments + $al.controller._refreshAttachmentsInModel(); + + if(!$al.controller._validateInputs()){ + return; + } + // Validation ok + $al.controller.doApproveRequest(); + + }, + onSubmit: function () { + if ($al.model.request.state === 'DRAFT') { + if(!$al.controller._validateInputs()){ + return; + } + $al.controller.doAwaiting(); + } else { + // Refresh the list of attachments + $al.controller._refreshAttachmentsInModel(); + + if(!$al.controller._validateInputs()){ + return; + } + // Validation ok + $al.controller.doSaveApproveRequest(); + } + }, + showMarkAsPaidDialog: function () { + $al.controller.doShowMarkAsPaidDialog(); + }, + onResubmit: function () { + $al.controller.doResubmit(); + }, + onInitiatePayment: function () { + if (typeof $al.model.movementFile.budgetLine == "undefined") { + $a.toast.showWarning($al.controller._languageBundle.alerts.no_budget_line_found); + return null; + } + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.abacDetailsForm, null, { + requestId: $requestId, + requestType: "TopUpRequest", + movementFileId: $al.model.movementFile.id + })); + }, + onReject: function () { + // $al.controller.requestCommon.doRefreshAbacInfoAndRefresh(); + $al.controller.doRejectRequest() + }, + onRefreshAbacInfo: function () { + $al.controller.requestCommon.doRefreshAbacInfoAndRefresh(); + + }, + onDiscardChanges: function () { + $al.controller.refreshPage(); + }, + onCancel: function () { + // $al.controller.requestCommon.doRefreshAbacInfoAndRefresh(); + $al.controller._goToParent(); + }, + onRefreshP2pInfo: function () { + $al.controller.requestCommon.doRefreshP2pInfoAndRefresh(); + + } + + }); + $al.view.requestCommon._logicForP2pOrderLink(); + if ($al.model._viewModel.request.state === 'PAID' || $al.model._viewModel.request.state === 'SENT_TO_P2P') { + $al.model._viewModel.showActionsBox = $al.model._viewModel.canReject; + $al.model._viewModel.showPaymentAbacInfoLink = $al.model._viewModel.isBackOffice; + $al.model._viewModel.requestPaymentDateFormatted = kendo.toString(kendo.parseDate($al.model.request.paymentDate), 'MMM dd, yyyy'); + if( $isBackOffice) { + $al.view.requestCommon._setCanRejectPaidType2($al.model.permissions.canRejectRemRequest); + $al.view.requestCommon._logiForShowingPaymentInfo(); + } + } + $al.controller.requestCommon.modelPermissionsCommon(); + $al.controller.modelPermissions(); + } + + _bindView() { + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } + + _showWarnDialog(title, messages) { + + $a.modalDialog.showAnswer(null, + title, + $al.view._templates.warn.dialog.body.template({body_message: messages.join(" ")}), + $al.view._templates.basic.dialog.footer.template({}) + ); + } + + extractAttachmentsList(the_request){ + + var attachList = []; + if (the_request.requestDetails && the_request.requestDetails.length > 0 && the_request.requestDetails[0].attachments) { + the_request.requestDetails[0].attachments.forEach(attach => { + + attachList.push({ + name : '' + attach.fileName + '' , + fileName: attach.fileName, + fileUid: attach.fileUid, + title : attach.fileName, + extension : '.' + attach.fileName.split('.').pop(), + id: attach.id, + creationActor: attach.creationActor, + updatingActor: attach.updatingActor, + contentDisposition : 'ATTACHMENT', + downloadUrl: $al.fileManagement.restCalls.preview.formatUrl({uid: attach.fileUid}) + }); + }); + + } + the_request.requestDetails[0].attachments = attachList; + + } + + _validateJustification() { + // Check at least one comment + var valid = $al.view.requestCommon._thereAreComments(true); + + if (!valid) { + $a.toast.showError($al.controller._languageBundle.alerts.justification_is_mandatory_for_adv_rem_reject); + $al.view.requestCommon.showMissingCommentMessage(); + } + return valid; + } + +} + +class RequestController { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.controller(); + }); + this._languageBundle = null; + } + + doShowMarkAsPaidDialog() { + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.mark_as_paid_extra_data_title, + $al.view._templates.mark_as_paid.dialog.body.template({}), + $al.view._templates.ok_cancel.dialog.footer.template({}) + ); + $al.view._elements.payment_date.data.element.kendoDatePicker({ + value: new Date(), + parseFormats: ["dd/MM/yyyy"] + + }); + kendo.bind("#mark_as_paid_data", $al.model._viewModel.request); + + } + + doValidateAndSubmitMarkAsPaid() { + if ($al.view._elements.payment_order.data.element.val() !== "") { + $al.model._restCalls.validatePaymentOrder.execute({orderId: $al.view._elements.payment_order.data.element.val()}, null, $al.model._onDataRetrievedValidatePaymentOrder); + } else { + var validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + paymentDateInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_date.id + "]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentDateInvalid: "Invalid format of Payment Date", + } + }).data("kendoValidator"); + validator.validate(); + } + } + + _renderCommunication() { + $al.view._elements.communication.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + $al.view._elements.communication.data.component = "kendoListView"; + + $al.view._elements.communication2.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + $al.view._elements.communication2.data.component = "kendoListView"; + } + + _prepareCommunication(data) { + if (typeof data !== "undefined" && data !== null) { + data.forEach(n => { + if (n.arrivalState) + n.arrivalState = $al.controller._languageBundle.stateMachine[n.arrivalState.toLowerCase()]; + + }); + } + return data; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.requests", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + + $al.model.init(); + $al.notifyOnReadyMvc(); + } + + _refreshAttachmentsInModel() { + // Update the attachments in the request of the view model + + if(typeof $al.model.request.state == 'undefined' || $al.model.request.state === 'DRAFT' || $al.model.request.state === 'AWAITING'){ + var upload = $("#topup-attachment-input").data("kendoUpload"); + $al.model._viewModel.request.requestDetails[0].attachments = upload.getFiles(); + } + + + } + + _validateInputs() { + var validation_messages = $al.controller.validatePageInputs(); + if (validation_messages.length > 0) { + // validation dialog + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.topup_validation, validation_messages); + $a.loading.toggle(false); + return false; + } + + return true; + } + + + validatePageInputs() { + var messages = []; + if ($al.model._viewModel.request.totalAmount.amount <= 0) { + messages.push( $al.controller._languageBundle.validations.topup_amount_mandatory ); + } + if (!($al.model._viewModel.request.comments && $al.model._viewModel.request.comments.length > 0)) { + messages.push( $al.controller._languageBundle.validations.topup_reasonfor_mandatory ); + } + /* Attachments are not mandatory + if ($al.model._viewModel.request.attachments.length == 0) { + messages.push( $al.controller._languageBundle.validations.topup_attachments_mandatory ); + } + */ + return messages; + } + + prepareRequestForBackend(request) { + + var attachs = []; + if (request.requestDetails[0].attachments && request.requestDetails[0].attachments.length > 0) { + request.requestDetails[0].attachments.forEach(item => { + + attachs.push({ + fileUid: item.fileUid ? item.fileUid : item.uid, + fileName: item.fileName ? item.fileName : item.name, + name: item.name, + attachmentType: 'TOPUP_REQUEST', + title : item.name, + extension : '.' + item.name.split('.').pop(), + id: item.id, + creationActor: item.creationActor, + updatingActor: item.updatingActor, + contentDisposition : 'ATTACHMENT' + }); + + }); + + } + request.requestDetails[0].attachments = attachs; + + return request; + } + + + modelPermissions() { + + /* + canSaveApprove: true, + canSubmit: true, + canInitiatePayment: true, + canReject: true, + canCancel: true, + canEditAmount: true, + + canEditAttachments + reasonTextEnabled + + + */ + + // var _movFileFrozen = $al.model.movementFile.state === 'CANCELLED' || $al.model.movementFile.state === 'COMPLETED'; + // BACK OFFICE permissions ------------------------ + if (!$al.model.movementFileFrozen) { + //como logic front and bak end + if ($requestId) { + // Topup exists + $al.model._viewModel.reasonTextEnabled = false; + $al.model._viewModel.canEditAttachments = false; + + } else { + // The Topup does not exist yet, so we can edit text + $al.model._viewModel.reasonTextEnabled = true; + $al.model._viewModel.canEditAttachments = true; + $al.model._viewModel.commentsVisible = false; + } + + if ($al.model._viewModel.isBackOffice) { + + + + if ($requestId) { + // Topup exists + if( $al.model.request.state === 'AWAITING' ){ + $al.model._viewModel.canApprove =$al.model.permissions.canApproveTopUpRequest; + $al.model._viewModel.reasonTextEnabled = $al.model.permissions.canApproveTopUpRequest; + $al.model._viewModel.canEditAttachments = $al.model.permissions.canApproveTopUpRequest; + $al.model._viewModel.canEditAmount = $al.model.permissions.canApproveTopUpRequest; + $al.model._viewModel.canDiscardChanges = $al.model.permissions.canApproveTopUpRequest; + $al.controller._setCanRejectPaid($al.model.permissions.canRejectTopUpRequest); + + } else if( $al.model.request.state === 'DRAFT' ){ + $al.model._viewModel.canSubmit =$al.model.permissions.canApproveTopUpRequest; + + + $al.model._viewModel.reasonTextEnabled = $al.model.permissions.canApproveTopUpRequest; + $al.model._viewModel.canEditAttachments = $al.model.permissions.canApproveTopUpRequest; + $al.model._viewModel.canEditAmount = $al.model.permissions.canApproveTopUpRequest; + } else if( $al.model.request.state === 'APPROVED' ){ + + $al.model._viewModel.canReject =$al.model.permissions.canRejectTopUpRequest; + $al.model._viewModel.canInitiatePayment =$al.model.permissions.canPayTopUpRequestAbac; + $al.model._viewModel.canMarkAsPaid = $al.model.permissions.canPayTopUpRequestManually; + $al.controller._setCanRejectPaid($al.model.permissions.canRejectTopUpRequest); + + + } else if( $al.model.request.state === 'REJECTED' ){ + $al.model._viewModel.canResubmit =$al.model.permissions.canResubmitTopUpRequest; + } else if( $al.model.request.state === 'PAID' ){ + $al.view.requestCommon._setCanRejectPaidType2($al.model.permissions.canRejectTopUpRequest); + } + $al.model._viewModel.canCancel = false; + $al.model._viewModel.commentsVisible = true; + + } else { + // The Topup does not exist yet, so we can edit text + + $al.model._viewModel.canSaveApprove = $al.model.permissions.isOwner || $al.model.permissions.canApproveTopUpRequest; + $al.model._viewModel.commentsVisible = false; + $al.model._viewModel.canCancel = true; + $al.model._viewModel.commentsVisible = false; + $al.model._viewModel.canEditAmount = $al.model._viewModel.canSaveApprove; + } + + + + + $al.model._viewModel.canMarkAsPaid = ($al.model.request.state === 'APPROVED') && $al.model.permissions.canPayTopUpRequestManually; + + + } else { + // FRONT OFFICE PERMISSIONS ------------------------ + if ($requestId) { + $al.model._viewModel.canReject = false; + // Topup exists + if($al.model.request.state === 'REJECTED' ) + { + $al.model._viewModel.showActionsBox = true; + $al.model._viewModel.canResubmit = $al.model.permissions.isOwner || $al.model.permissions.canApproveTopUpRequest; + } else if( $al.model.request.state === 'DRAFT' ){ + $al.model._viewModel.canSubmit = $al.model.permissions.isOwner || $al.model.permissions.canApproveTopUpRequest ; + $al.model._viewModel.reasonTextEnabled = $al.model.permissions.isOwner || $al.model.permissions.canApproveTopUpRequest; + $al.model._viewModel.canEditAttachments = $al.model.permissions.isOwner || $al.model.permissions.canApproveTopUpRequest; + $al.model._viewModel.canEditAmount = $al.model.permissions.isOwner || $al.model.permissions.canApproveTopUpRequest; + } else if( $al.model.request.state === 'PAID' || $al.model.request.state === 'APPROVED' ){ + + $al.model._viewModel.showActionsBox = false; + + } + $al.model._viewModel.commentsVisible = true; + } else { + // The Topup does not exist yet, so we can edit text + $al.model._viewModel.showActionsBox = + $al.model._viewModel.canSubmit = true; + $al.model._viewModel.canEditAmount = true; + $al.model._viewModel.canCancel = true; + } + + /* + if ($al.model._viewModel.request.state === 'AWAITING') { + $al.model._viewModel.isAwaiting = true; + } + */ + } + } + + } + + _setCanRejectPaid(boolean_value) { + // Set value of 'canReject' + $al.model._viewModel.canReject = (boolean_value && (typeof $al.model._viewModel.request.p2pHubOrderStatus !== "undefined" + && ($al.model._viewModel.request.p2pHubOrderStatus === 'CLO100' || + $al.model._viewModel.request.p2pHubOrderStatus === 'CLO0' || + $al.model._viewModel.request.p2pHubOrderStatus === 'FAILED'))) + || (boolean_value && ($al.model._viewModel.request.state === 'AWAITING' || $al.model._viewModel.request.state === 'APPROVED')); + } + + doSaveApproveRequest() { + $a.loading.toggle(true); + $al.model._viewModel.request = $al.controller.prepareRequestForBackend($al.model._viewModel.request); + // alert("Save and Approve: " + JSON.stringify(preparedRequest, null, 4)); + $al.model._viewModel.request.amount =$al.model._viewModel.request.totalAmount; + $al.model._restCalls.createRequest.execute( + null, // path params + $al.model._viewModel.request, // body + $al.controller.onDoSaveApproveRequest ); + setTimeout(() => { + $a.loading.toggle(false); + }, 11000); + } + + doApproveRequest() { + $a.loading.toggle(true); + $al.model._viewModel.request = $al.controller.prepareRequestForBackend($al.model._viewModel.request); + // alert("Save and Approve: " + JSON.stringify(preparedRequest, null, 4)); + $al.model._viewModel.request.amount =$al.model._viewModel.request.totalAmount; + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._updateRequestResponse); + setTimeout(() => { + $a.loading.toggle(false); + }, 11000); + } + + _updateRequestResponse(data) { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'APPROVE' + }, null, null, $al.controller.refreshAfterUpdateState); + } + + doAwaiting() { + $a.loading.toggle(true); + $al.model._viewModel.request = $al.controller.prepareRequestForBackend($al.model._viewModel.request); + $al.model._viewModel.request.amount =$al.model._viewModel.request.totalAmount; + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._updateFromDraftToAwaiting); + setTimeout(() => { + $a.loading.toggle(false); + }, 11000); + } + + _updateFromDraftToAwaiting(data) { + $a.loading.toggle(true); + $al.model._viewModel.request = $al.controller.prepareRequestForBackend($al.model._viewModel.request); + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'SUBMIT' + }, null, null, $al.controller.refreshAfterUpdateState); + setTimeout(() => { + $a.loading.toggle(false); + }, 11000); + } + + doApproveFromDraft() { + $a.loading.toggle(true); + $al.model._viewModel.request = $al.controller.prepareRequestForBackend($al.model._viewModel.request); + $al.model._viewModel.request.amount =$al.model._viewModel.request.totalAmount; + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._updateFromDraftToApprove); + setTimeout(() => { + $a.loading.toggle(false); + }, 11000); + } + + _updateFromDraftToApprove(data) { + + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'APPROVE' + }, null, null, $al.controller.refreshAfterUpdateState); + + } + + onDoSaveApproveRequest(endpoint_response) { + // alert('Saved and approved: ' + JSON.stringify(endpoint_response, null, 4)); + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewTopupRequest, null, { requestId: endpoint_response.id })); + } + + doResubmit() { + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'RESUBMIT' + }, null, null, $al.controller._resubmitResponse); + setTimeout(() => { + $a.loading.toggle(false); + }, 11000); + } + _resubmitResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.resubmit_request_success); + $al.controller.refreshAfterUpdateState(data); + + } + + doDeleteTopUpRequests(){ + $a.loading.toggle(true); + $al.model._restCalls.deleteTopupRequest.execute( + {requestId: $al.model._viewModel.request.id}, // path params + null + ,$al.controller._goToParent + ); + setTimeout(() => { + $a.loading.toggle(false); + }, 11000); + } + _goToParent(){ + + $a.navigation.navigateTo($a.utils.formatUrl($al.model.parentUrlAction, null, { requestId: $al.model._viewModel.request.parentId })); + } + + doRejectRequest() { + + if ($al.view._validateJustification()) { + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'REJECT' + }, null, null, $al.controller._rejectRequestResponse); + setTimeout(() => { + $a.loading.toggle(false); + }, 11000); + } + + } + + //message and refresh page + _rejectRequestResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.reject_request_success); + $al.controller.refreshAfterUpdateState(data); + + } + + refreshAfterUpdateState(data) { + $al.model._viewModel.request.state = data.state; + $al.controller.refreshRequest($al.model._viewModel.request.id); + + } + + refreshRequest(requestId) { + $al.model.init(); + $a.loading.toggle(false); + } + + doShowAbacInfo() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.showAbacInfo, null, + { + requestId: $requestId, + requestType: "TopUpRequest", + movementFileId: $al.model.movementFile.id + }) + ); + } + + refreshPage() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewRequest, null, {requestId: $requestId})); + } +} + +$al.mvc(RequestModel, RequestView, RequestController, true); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.total.rem.request.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.total.rem.request.js new file mode 100644 index 0000000..843fb4b --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/edit.total.rem.request.js @@ -0,0 +1,2483 @@ +class RequestModel { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.model(); + }); + this._restCalls = { + + getRequest: new $a.GetRestCall(null, "/internal/api/total-rem-requests/{requestId}"), + getBankInfo: new $a.GetRestCall(null, "/internal/api/bank-accounts"), + movementFile: new $a.GetRestCall(null, "/internal/api/movement-files/{fileId}"), + updateRequest: new $a.PutRestCall(null, "/internal/api/total-rem-requests"), + getStateHistory: new $a.GetRestCall(null, "/internal/api/total-rem-requests/{requestId}/stateMachineHistory"), + changeStateRequest: new $a.PutRestCall(null, "/internal/api/total-rem-requests/stateMachineEvent/{stateMachineEvent}/{requestId}"), + permissions: new $a.GetRestCall(null, "/internal/api/permissions"), + exchangeRates: new $a.GetRestCall(null, "/internal/api/exchange-rates"), + exchangeRatesPerMonth: new $a.GetRestCall(null, "/internal/api/exchange-rates/{currency}"), + appParameters: new $a.GetRestCall(null, "/internal/api/app-parameters"), + refreshAbacStateForRequest: new $a.PutRestCall(null, "/internal/api/abac/workflow/{requestId}"), + validatePaymentOrder: new $a.GetRestCall(null, "/internal/api/summa/validateOrder/{orderId}"), + getAllOrderResposes: new $a.GetRestCall(null, "/internal/api/summa/order-response?requestId={requestId}"), + + }; + this.urls = { + action: { + viewMovementFile: $a.utils.url(null, "/movement-files/view.do"), + viewRequest: $a.utils.url(null, "/requests/view-total-rem.do"), + abacDetailsForm: $a.utils.url(null, "/summa/p2p-payments-details.do"), + showAbacInfo: $a.utils.url(null, "/abac/abac-info.do") + + } + }; + this.preserveInvoicesTotal = true; + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model.onRequestRetrieved); + + dataPoolExecutor.add("request", $al.model._restCalls.getRequest, {requestId: $requestId}); + dataPoolExecutor.add("stateMachineHistory", $al.model._restCalls.getStateHistory, {requestId: $requestId}); + dataPoolExecutor.add("exchangeRates", $al.model._restCalls.exchangeRates, null, null); + dataPoolExecutor.add("appParameters", $al.model._restCalls.appParameters, null, {paramType: "ADVANCE_REMOVAL"}); + // dataPoolExecutor.add("exchangeRatesPerMonth", $al.model._restCalls.exchangeRatesPerMonth, {currency : "ALL"}, ); + dataPoolExecutor.add("childrenRequest", $al.model.requestCommon._restCalls.getRequestsByParent, {requestId: $requestId}); + + dataPoolExecutor.add("requestComments", $al.model.requestCommon._restCalls.getRequestComments, {requestId: $requestId}); + if( $isBackOffice) { + dataPoolExecutor.add("allOrderResposes",$al.model._restCalls.getAllOrderResposes, {requestId: $requestId}); + } + + dataPoolExecutor.run(); + + } + + + refreshRequest() { + $al.model.init(); + } + + refreshAfterUpdateState(data) { + $al.model._viewModel.request.state = data.state; + $al.model.refreshRequest($al.model._viewModel.request.id); + } + + onRequestRetrieved(data) { + $al.model.request = data.get("request").data; + $al.model.requestComments = data.get("requestComments").data; + $al.model.request.children = data.get("childrenRequest").data; + //Map is easier to work with + var AppParametersArr = data.get("appParameters").data; + $al.model.appParameters = new Map(AppParametersArr.map(i => [i.key, i.value])); + $al.model.stateMachineHistory = data.get("stateMachineHistory").data; + $al.model.exchangeRates = data.get("exchangeRates").data; + if( $isBackOffice) { + $al.model.allOrderResposes =data.get("allOrderResposes").data; + } + + $al.model.entMaxDropDownSortMap = new Map([ + ['SURFACE', 1], + ['CAR', 2], + ['AIRFREIGHT', 3], + ['STORAGE', 4] + + ]); + + + $al.model._restCalls.movementFile.execute({fileId: $al.model.request.declaration.movementFileId}, null, $al.model.onMovementFileRetrieved); + } + + onMovementFileRetrieved(data) { + $al.model.movementFile = data; + + //use airfright or volume storage depending on hod or nfp + $al.model.maximunVolume = $al.model.appParameters.get("MAXIMUM_VOLUME_PERSONAL"); + if ($al.view.requestCommon._isHodAirOrFutureJobIsNFP()) { + $al.model.maximunVolume = $al.model.request.volumeAirFreightCeiling; + } + // One more step in this chain of rest calls + $al.model._restCalls.getBankInfo.execute(null, {personId: $al.model.request.staffMember.id}, $al.model.onBankInfonRetrieved); + } + + onBankInfonRetrieved(data) { + $al.model.bankInfo = data; + $al.model._restCalls.permissions.execute(null, {movementFileId: $al.model.movementFile.id}, $al.model.onPermissionsRetrieved); + } + + onPermissionsRetrieved(data) { + $al.model.permissions = data; + $al.view._initializeView(); + + $al.view.render(); + $al.view._bindView(); + } + + _onExchangeRatesByCurrencyRetrieved(data) { + $al.model.currencymonthPayment = data; + + } + + _onDataRetrievedValidatePaymentOrder(data) { + $al.model.validPaymentOrder = data; + var validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + invalidFormat: input => { + if (input.attr('required')) { + return input.val().length === input.val().trim().length; + } else { + return true; + } + }, + paymentDateInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_date.id + "]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + paymentOrderInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_order.id + "]") && !$al.model.validPaymentOrder) { + return false; + } else { + return true; + } + }, + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentDateInvalid: "Invalid format of Payment Date", + paymentOrderInvalid: "Payment Order invalid", + invalidFormat: "Invalid format: remove spaces" + } + }).data("kendoValidator"); + if (validator.validate()) { + $al.model.requestCommon.prepareRequestForMarkAsPaid(); + + $al.controller.requestCommon.doUpdateAndMarkAsPaidRequest(); + $a.modalDialog.hide(); + } + } +} + +class RequestView { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.view(); + }); + this._templates = new $a.DataContainer("request"); + this._elements = new $a.DataContainer("request"); + + this._templates.data(new $a.KendoTemplateData()); + + + this._elements.node("invoice").node("grid").data(new $a.KendoElementData()); + this._elements.node("unforeseen").node("invoices").node("grid").data(new $a.KendoElementData()); + this._elements.node("payment_date").data(new $a.KendoElementData()); + this._elements.node("payment_order").data(new $a.KendoElementData()); + this._elements.node("payment_request").data(new $a.KendoElementData()); + + this._elements.node("payment_date_div").data(new $a.KendoElementData()); + this._elements.node("payment_order_div").data(new $a.KendoElementData()); + this._elements.node("payment_request_div").data(new $a.KendoElementData()); + this._elements.node("communication").data(new $a.KendoElementData()); + this._elements.node("communication2").data(new $a.KendoElementData()); + this._elements.node("add_remove_entMax_dropdown").data(new $a.KendoElementData()); + this._elements.node("add_remove_invoices_dropdown").data(new $a.KendoElementData()); + + this._elements.node("comments").node("grid").data(new $a.KendoElementData()); + + this._templates.node("invoice").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("unforeseen").node("invoices").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("calculation").data(new $a.KendoTemplateData()); + this._templates.node("calculation").node("staff").data(new $a.KendoTemplateData()); + this._templates.node("documents").node("view").data(new $a.KendoTemplateData()); + + this._templates.node("calculation").node("family").data(new $a.KendoTemplateData()); + this._templates.node("calculation").node("total").data(new $a.KendoTemplateData()); + // One footer "basic" + this._templates.node("basic").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("warn").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("mark_as_paid").node("dialog").data(new $a.KendoTemplateData(), "body"); + + this._templates.node("ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + + this._templates.node("comments").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("add_comment").data(new $a.KendoTemplateData()); + } + + render() { + $al.view._templates.data.compile(); + $al.controller._renderCommunication(); + $al.view._templates.invoice.grid.data.compile(); + $al.view._templates.unforeseen.invoices.grid.data.compile(); + $al.view._renderInvoiceGrid(); + $al.view._renderUnforeseenInvoicesGrid(); + $al.view._renderAddInvoiceRemovalItemDropDown(); + $al.view._renderAddUnforeseenInvoicesDropDown(); + $al.controller._renderCommunication(); + + $al.view._templates.comments.grid.data.compile(); + $al.view._templates.add_comment.data.compile(); + + $al.view.requestCommon._renderCommentsGrid(); + } + + renderEmptyTemplate() { + $al.view._templates.data.compile(); + } + + _renderInvoiceGrid() { + + var dataSource = new kendo.data.DataSource({ + + transport: { + read: function (options) { + options.success($al.model._viewModel.request.requestDetails); + }, + destroy: function (options) { + + //w need to clean all the parcial totals, becasue when we remove the method footerDetailTotalAmountEurFunction is not call, so it does not update the footers + $al.model._viewModel.request.sumOfSectionsTotalPersonal = 0; + $al.model._viewModel.request.sumOfSectionsTotalVehicle = 0; + $al.model._viewModel.request.sumOfSectionsTotalStorage = 0; + $al.model._viewModel.request.requestDetails = dataSource.data().slice(); + options.success($al.model._viewModel.request.requestDetails); + + //insert into the dropdown the entMax ceiling + $al.view.insertIntoDropdownEntMaxCeiling(options.data.detailType); + + }, + create: function (options) { + + + options.success($al.model._viewModel.request.requestDetails); + + }, + update: function (options) { + var data = options.data; + + // Clean attachments that were removed + data = $al.view._cleanRemovedAttachments(data); + + // Copy data back to dataList + $al.model._viewModel.request.requestDetails = dataSource.data().slice(); + + options.success(data); + + } + }, + data: $al.model._viewModel.request.requestDetails, + + schema: { + model: { + id: "id", + fields: { + id: {type: "number"}, + requestId: {type: "number"}, + detailType: {editable: false, type: "string"}, + detailTypeOrder: {type: "number", validation: {required: true}}, + volume: {type: "number", validation: {required: true, min: 0}}, + weight: {type: "number"}, + insuranceRate: {type: "number", validation: {required: true, min: 0}}, + goodsValue: { + amount: {type: "number", validation: {required: true, min: 1}}, + currency: {type: "string"} + }, + invoice: { + amount: {type: "number", validation: {required: true, min: 1}}, + currency: {type: "string"} + + }, + exchangeRate: {exchangeRate: "number", validation: {required: true, min: 1}}, + + exchangeRateCurrency: {defaultValue: "EUR", validation: {required: true}}, + exchangePayMonth: { + type: "string", + + validation: { + required: true, + lineValidation: $al.view.lineValidation + } + }, + + invoiceExchangeRate: {type: "number", validation: {required: true}}, + + amount: { + amount: {type: "number"}, + currency: {type: "string"} + }, + attachments: [{ + id: {type: "number"}, + requestDetailId: {type: "number"}, + fileName: {type: "string"}, + fileUid: {type: "string"}, + attachmentType: {type: "string"}, + + }] + + }, + DetailTotalAmountEur: function () { + return this.invoice.amount / this.exchangeRate; + } + } + }, + group: { + field: "detailTypeOrder", + aggregates: [ + {field: "volume", aggregate: "sum"}, + {field: "insuranceRate", aggregate: "max"}, + {field: "goodsValue.amount", aggregate: "sum"}, + {field: "DetailTotalAmountEur", aggregate: "sum"} + + ], + }, + aggregate: [ + {field: "DetailTotalAmountEur", aggregate: "sum"}, + {field: "volume", aggregate: "sum"}, + {field: "goodsValue.amount", aggregate: "sum"}, + ] + }); + + var columns_desc = [ + {hidden: true, field: "id"}, + { + field: "detailType", + title: "Type", + attributes: {class: "px-0 font-weight-medium"}, + headerAttributes: {class: "pl-0"}, + editor: $al.view.detailTypeTemplate, + template: $al.view.detailTypeTemplate, + groupFooterTemplate: "Total : ", + width: "11%" + }, + { + field: "detailTypeOrder", + title: "TypeOrder", + hidden: true, + groupHeaderTemplate: $al.view.requestCommon.detailTypeOrderTemplate + }, + { + field: "volume", //Column 3 + title: "Volume / Weight", + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + editor: $al.view.requestCommon.numberCubicMeterEditor, + template: $al.view.requestCommon.volumeRateTemplate, + aggregates: ["sum"], + groupFooterTemplate: $al.view.requestCommon.groupFooterVolumeFunction, + footerAttributes: {class: "text-right pl-0"}, + width: "11%" + }, + { + field: "weight",//Column 4 + title: "Volume / Weight", + attributes: {class: "text-right"}, + headerAttributes: {class: "text-right pl-0"}, + editor: $al.view.requestCommon.numberKgEditor, + width: "11%", + hidden: true, + + }, + { + field: "insuranceRate", + title: "Insurance Rate", + attributes: {class: "text-right px-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: $al.view.requestCommon.insuranceRateTemplate, + editor: $al.view.requestCommon.numberPercentEditor, + width: "6%" + }, + { + field: "goodsValue.amount", + title: "Current Value of Goods", + attributes: {class: "text-right"}, + headerAttributes: {class: "text-right pl-0"}, + template: "#= kendo.toString(goodsValue.amount, \"n2\") # #= goodsValue.currency #", + //format: '{0:n2} EUR', + editor: $al.view.requestCommon.goodsValueEditor, + aggregates: ["sum"], + groupFooterTemplate: $al.view.requestCommon.currentValueGroupFooterTemplate, + footerAttributes: {class: "text-right pl-0"}, + width: "11%", + }, + { + field: "invoice.amount", + title: "Amount on invoice", + attributes: {class: "text-right"}, + headerAttributes: {class: "text-right pl-0"}, + template: "#= kendo.toString(invoice.amount, \"n2\") # #=exchangeRateCurrency#", + format: '{0:n2}', + editor: $al.view.requestCommon.invoiceAmountEditor, + width: "11%", + //footerTemplate: "
    Declared amount

    Advance Payment (90%)
    ", + }, + { + field: "exchangeRateCurrency", // Column 8 + title: "Invoice Currency", + editor: $al.view.currencyDropDownEditor, + attributes: {class: "pl-0"}, + //template: "#=exchangeRateCurrency#", + template: "", + width: "10%", + hidden: true, + }, + { + field: "exchangePayMonth", // Column 9 + title: "Month of Payment", + editor: $al.view.monthPaymentDropDownEditor, + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + headerTemplate: 'info
    Month of Payment
    ', + template: $al.view.templateForExchangePayMonth, + width: "10%", + //hidden: true, + }, + { + field: "DetailTotalAmountEur()", // Column 10 + title: "Amount in Euro", + aggregates: ["sum"], + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: "#= kendo.toString(DetailTotalAmountEur(), \"n2\") # EUR", + groupFooterTemplate: $al.view.footerDetailTotalAmountEurFunction, + //footerTemplate: "
    ssss
    ", + footerAttributes: {class: "text-right pl-0"}, + editor: " ", + width: "11%" + }, + { + field: "attachments", + title: "Invoice", + attributes: {class: "pr-0"}, + template: function (dataItem) { + if (typeof dataItem.attachments != 'undefined') { + dataItem.attachments.headerType = 'INVOICE'; + } + return kendo.template( + $("#request-documents-view-template").html())( + dataItem); + }, + editor: " ", + width: "10%", + }, + { + field: "attachments", + title: "Proof of Payment", + attributes: {class: "pr-0"}, + template: function (dataItem) { + if (typeof dataItem.attachments != 'undefined') { + dataItem.attachments.headerType = 'PROOF_OF_PAYMENT'; + } + return kendo.template( + $("#request-documents-view-template").html())( + dataItem); + }, + editor: " ", + width: "10%", + }, + { + field: "attachments", + title: "Bill of lading / Vehicle Ownership", + attributes: {class: "pr-0"}, + template: function (dataItem) { + if (typeof dataItem.attachments != 'undefined') { + dataItem.attachments.headerType = 'TRANSPORT_OWNERSHIP_PROOF'; + } + return kendo.template( + $("#request-documents-view-template").html())( + dataItem); + }, + editor: " ", + width: "10%", + }, + { + command: [ + { + name: "edit", + // template: "Add add", + template: "edit", + + text: {edit: "", update: "", cancel: ""} + }, + { + name: "destroy", + template: "close", + + text: "" + } + ], + width: "80px", + attributes: {class: "pl-2 pr-0 pr-xxl-2 text-right text-nowrap"}, + headerAttributes: {class: "col-command"}, + title: " ", + hidden: !$al.model._viewModel.canEditGrid + } + ]; + + $al.view._elements.invoice.grid.data.element.kendoGrid({ + save: function (e) { + if (e.model.detailType === 'AIRFREIGHT') { + this.hideColumn(4); + this.showColumn(3); + } + this.hideColumn(8); // Invoice Currency + //this.hideColumn(9); // Month of payment + this.showColumn(10); // Amount(EUR) + this.collapseRow($('[data-uid=' + e.model.uid + ']')); + + // Disable 'preserveInvoicesTotal' because user has edited invoice + $al.model.preserveInvoicesTotal = false; + }, + remove: function (e) { + // Disable 'preserveInvoicesTotal' also when user removes an invoice + $al.model.preserveInvoicesTotal = false; + }, + cancel: function (e) { + //insert into the dropdown the entMax ceiling, when the insert was done just now + $al.view.insertIntoDropdownEntMaxCeiling(e.model.detailType); + + if (e.model.detailType === 'AIRFREIGHT') { + this.hideColumn(4); + this.showColumn(3); + } + this.hideColumn(8); // Invoice Currency + //this.hideColumn(9); // Month of payment + this.showColumn(10); // Amount(EUR) + this.collapseRow($('[data-uid=' + e.model.uid + ']')); + }, + beforeEdit: function (e) { + + // This utility field is set dynamically here (we are accessing the 3 attachment buttons) + // and then read by "#claims-edit-template" in order to decide the label for the third attachment button + $al.view.nowEditingDetailType = e.model.detailType; + + if (e.model.detailType === 'AIRFREIGHT') { + this.hideColumn(3); + this.showColumn(4); + } + this.showColumn(8); // Invoice Currency + this.showColumn(9); // Month of payment + this.hideColumn(10); // Amount(EUR) + this.collapseRow($('tr.k-master-row')); + this.expandRow($('[data-uid=' + e.model.uid + ']')); + }, + dataSource: dataSource, + + noRecords: { + template: "" + }, + scrollable: true, + sortable: false, + resizable: false, + detailTemplate: kendo.template($("#claims-edit-template").html()), + detailInit: $al.controller._detailInit, + detailExpand: function (e) { + /* The result can be observed in the DevTools(F12) console of the browser. */ + }, + columns: columns_desc, + editable: $al.model._viewModel.canEditGridInline, + dataBound: $al.view._onDataBound + }); + + $al.view._elements.invoice.grid.data.component = "kendoGrid"; + + + $('textarea.autoSize').autosize(); + } + + _renderUnforeseenInvoicesGrid() { + var dataSource = new kendo.data.DataSource({ + + transport: { + read: function (options) { + options.success($al.model._viewModel.request.extraRequestDetails); + }, + destroy: function (options) { + + //w need to clean all the parcial totals, becasue when we remove the method footerDetailTotalAmountEurFunction is not call, so it does not update the footers + + $al.model._viewModel.request.extraRequestDetails = dataSource.data().slice(); + options.success($al.model._viewModel.request.extraRequestDetails); + + //insert into the dropdown the entMax ceiling + $al.view.insertIntoDropdownEntMaxCeiling(options.data.detailType); + + }, + create: function (options) { + + options.success($al.model._viewModel.request.extraRequestDetails); + + }, + update: function (options) { + var data = options.data; + + // Clean attachments that were removed + data = $al.view._cleanRemovedAttachments(data); + + // Copy data back to dataList + $al.model._viewModel.request.extraRequestDetails = dataSource.data().slice(); + + options.success(data); + + } + }, + data: $al.model._viewModel.request.extraRequestDetails, + + schema: { + model: { + id: "id", + fields: { + id: {type: "number"}, + requestId: {type: "number"}, + detailType: {editable: false, type: "string"}, + invoice: { + amount: {type: "number", validation: {required: true, min: 0}}, + currency: {type: "string"} + + }, + justification: {type: "string", validation: {required: true}}, + exchangeRate: {exchangeRate: "number", validation: {required: true, min: 0}}, + + exchangeRateCurrency: {defaultValue: "EUR"}, + exchangePayMonth: { + type: "string", + + validation: { + required: true, + lineValidation: $al.view.lineValidationUnforeseen + } + }, + invoiceExchangeRate: {type: "number", validation: {required: true}}, + + amount: { + amount: {type: "number"}, + currency: {type: "string"} + }, + attachments: [{ + id: {type: "number"}, + requestDetailId: {type: "number"}, + fileName: {type: "string"}, + fileUid: {type: "string"}, + attachmentType: {type: "string"}, + + }] + + }, + DetailTotalAmountEur: function () { + return this.invoice.amount / this.exchangeRate; + } + } + }, + aggregate: [ + {field: "DetailTotalAmountEur", aggregate: "sum"}, + ] + }); + + var columns_desc = [ + {hidden: true, field: "id"}, + { + field: "detailType", + title: "Type", + attributes: {class: "px-0 font-weight-medium"}, + headerAttributes: {class: "pl-0"}, + editor: $al.view.detailTypeTemplate, + template: $al.view.detailTypeTemplate, + footerTemplate: "Total :", + groupFooterTemplate: "Total : ", + width: "12%" + }, + { + field: "justification", + title: "Justification", + editor: $al.view.requestCommon.justificationEditor, + width: "25%", + }, + { + field: "invoice.amount", + title: "Amount on invoice", + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: "#= kendo.toString(invoice.amount, \"n2\") # #=exchangeRateCurrency#", + format: '{0:n2}', + editor: $al.view.requestCommon.invoiceAmountEditor, + width: "11%", + //footerTemplate: "
    Declared amount

    Advance Payment (90%)
    ", + }, + { + field: "exchangeRateCurrency", ///column 4 + title: "Invoice Currency", + editor: $al.view.currencyDropDownEditorUnforeseen, + attributes: {class: "pl-0"}, + //template: "#=exchangeRateCurrency#", + template: "", + width: "11%", + hidden: true + }, + { + field: "exchangePayMonth", // Column 5 + title: "Month of Payment", + editor: $al.view.monthPaymentUnforeseenDropDownEditor, + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + headerTemplate: 'info
    Month of Payment
    ', + template: $al.view.templateForExchangePayMonth, + width: "11%", + }, + { + field: "DetailTotalAmountEur()", + title: "Amount in Euro", + aggregates: ["sum"], + attributes: {class: "text-right pl-0"}, + headerAttributes: {class: "text-right pl-0"}, + template: "#= kendo.toString(DetailTotalAmountEur(), \"n2\") # EUR", + footerTemplate: "
    ", + footerAttributes: {class: "text-right pl-0"}, + editor: " ", + width: "11%" + }, + { + field: "attachments", + title: "Invoice", + headerAttributes: {class: "col-invoice"}, + attributes: {class: "pr-0"}, + template: function (dataItem) { + if (typeof dataItem.attachments != 'undefined') { + dataItem.attachments.headerType = 'UNFORESEEN_INVOICE'; + } + return kendo.template( + $("#request-documents-view-template").html())( + dataItem); + }, + editor: " ", + width: "13%", + }, + { + field: "attachments", + title: "Proof of Payment", // "Bank statement", + headerAttributes: {class: "col-statement"}, + attributes: {class: "pr-0"}, + template: function (dataItem) { + if (typeof dataItem.attachments != 'undefined') { + dataItem.attachments.headerType = 'BANK_STATEMENT'; + } + return kendo.template( + $("#request-documents-view-template").html())( + dataItem); + }, + editor: " ", + width: "17%", + }, + { + command: [ + { + name: "edit", + // template: "Add add", + template: "edit", + + text: {edit: "", update: "", cancel: ""} + }, + { + name: "destroy", + template: "close", + + text: "" + } + ], + width: "5%", + attributes: {class: "pl-0 pr-0 pr-xxl-2 text-right text-nowrap"}, + headerAttributes: {class: "col-command"}, + hidden: !$al.model._viewModel.canEditGrid + } + ]; + + $al.view._elements.unforeseen.invoices.grid.data.element.kendoGrid({ + save: function (e) { + this.hideColumn(4); // Invoice Currency + this.showColumn(6); // Amount in Euro + this.collapseRow($('[data-uid=' + e.model.uid + ']')); + // Disable 'preserveInvoicesTotal' also when user removes an invoice + $al.model.preserveInvoicesTotal = false; + }, + remove: function (e) { + // Disable 'preserveInvoicesTotal' also when user removes an invoice + $al.model.preserveInvoicesTotal = false; + }, + cancel: function (e) { + this.hideColumn(4); // Invoice Currency + this.showColumn(6); // Amount in Euro + this.collapseRow($('[data-uid=' + e.model.uid + ']')); + }, + beforeEdit: function (e) { + this.showColumn(4); // Invoice Currency + this.hideColumn(6); // Amount in Euro + this.collapseRow($('tr.k-master-row')); + this.expandRow($('[data-uid=' + e.model.uid + ']')); + }, + dataSource: dataSource, + + noRecords: { + template: "" + }, + scrollable: false, + sortable: false, + resizable: false, + detailTemplate: kendo.template($("#unforeseen-attachments-edit-template").html()), + detailInit: $al.controller._detailInitUnforeseenInvoices, + detailExpand: function (e) { + }, + columns: columns_desc, + + editable: $al.model._viewModel.canEditGridInline, + dataBound: $al.view._onDataBoundUnforeseenInvoices + }); + + $al.view._elements.unforeseen.invoices.grid.data.component = "kendoGrid"; + + + $('textarea.autoSize').autosize(); + } + + _getElementForDropDown(detailType) { + return { + type: detailType, + description: $al.controller._languageBundle.advance_removal.request_detail_label[detailType], + order: $al.model.entMaxDropDownSortMap.get(detailType) + }; + } + + _renderAddInvoiceRemovalItemDropDown() { + + let dropDownDataSource = []; + + var grid = $al.view._elements.invoice.grid.data.element.data("kendoGrid"); + + let request_detail_type = $al.view._getElementForDropDown("AIRFREIGHT"); + dropDownDataSource.push(request_detail_type); + request_detail_type = $al.view._getElementForDropDown("SURFACE"); + dropDownDataSource.push(request_detail_type); + + $al.model.entMax.forEach(emax => { + + if (emax.type !== "SURFACE" && emax.type !== "AIRFREIGHT") { + let toDelete = []; + + if (grid.dataSource.data() && grid.dataSource.data().length > 0) { + toDelete = grid.dataSource.data().filter(d => d.detailType === emax.type); + } + + + if (typeof toDelete[0] === 'undefined' && emax.enable && typeof emax.value != "undefined") {//It is not inside the grid we add them + request_detail_type = $al.view._getElementForDropDown(emax.type); + dropDownDataSource.push(request_detail_type); + + + } + } + + }); + + var dataSourceEntMax = new kendo.data.DataSource({ + data: dropDownDataSource, + // order by "age" in descending order + sort: {field: "order", dir: "asc"} + }); + + var dropdownlist = $al.view._elements.add_remove_entMax_dropdown.data.element.kendoDropDownList({ + dataSource: dataSourceEntMax, + dataTextField: "description", + dataValueField: "type", + optionLabel: 'ADD INVOICE', + enable: $al.model._viewModel.canEditGrid, + optionLabelTemplate: 'ADD INVOICE', + // remove reduntant optionlabel inside the dropdown as we are using a kendoDropdownList + open: function () { + $al.view._elements.add_remove_entMax_dropdown.data.element.getKendoDropDownList().list.find(".k-list-optionlabel").hide(); + }, + autoWidth: true, + change: function (e) { + var typeOfRemoval = this.value(); + + // Find the group based on type + if (typeOfRemoval === 'STORAGE') { + var detailTypeOrder = 3; + } else if (typeOfRemoval === 'CAR') { + var detailTypeOrder = 2; + } else if (typeOfRemoval === '') { + return true; + + } else { + var detailTypeOrder = 1; + } + + // Add row in right group + var index = 100; //random hard-coded index to force row to appear last + + var dataSource = grid.dataSource; + + var newItem = dataSource.insert(index, { + id: null, + detailTypeOrder: detailTypeOrder, + requestId: $requestId, + detailType: typeOfRemoval, + volume: "", + insuranceRate: "", + goodsValue: {amount: "", currency: "EUR"}, + invoice: {amount: "", currency: "EUR"}, + amount: {amount: 0, currency: "EUR"}, + exchangeRateCurrency: 'EUR', + exchangePayMonth: 'Select Month', + exchangeRate: 1, + newItem: true, + extraDetail: false + }); + var newRow = grid.items().filter("[data-uid='" + newItem.uid + "']"); + grid.editRow(newRow); + + // Reset dropdownlist once clicked + $al.view._elements.add_remove_entMax_dropdown.data.element.data("kendoDropDownList").value(-1); + + //delete from dropdown after inserting in the grid + let toDelete = this.dataSource.data().filter(item => item.type === typeOfRemoval); + if (detailTypeOrder !== 1) { //we do not remove arifreight or surface they can add as many as they want + this.dataSource.remove(toDelete[0]); + } + + } + }); + + + if (!$al.model._viewModel.canEditGrid) { // in view mode we hide invoice dropdown + $al.view._elements.add_remove_entMax_dropdown.data.element.data("kendoDropDownList").wrapper.hide(); + } + } + + _renderAddUnforeseenInvoicesDropDown() { + + let dropDownDataSource = [ + {type: "DEMMURRAGE", description: "Demurrage"}, + {type: "DOCK_STRIKES", description: "Dock strikes"}, + {type: "STORAGE_COST", description: "Storage cost in the port"}, + {type: "TRANSPORT_DELAYS", description: "Transport delays"}, + {type: "CLEARING_GOODS_DELAY", description: "Delay in clearing the goods in the port"}, + {type: "OTHER", description: "Other unforeseen costs"}, + ]; + + var grid = $al.view._elements.unforeseen.invoices.grid.data.element.data("kendoGrid"); + + var dropdownlist = $al.view._elements.add_remove_invoices_dropdown.data.element.kendoDropDownList({ + dataSource: dropDownDataSource, + dataTextField: "description", + dataValueField: "type", + optionLabel: 'ADD INVOICE', + enable: $al.model._viewModel.canEditGrid, + optionLabelTemplate: 'ADD INVOICE', + // remove reduntant optionlabel inside the dropdown as we are using a kendoDropdownList + open: function () { + $al.view._elements.add_remove_invoices_dropdown.data.element.getKendoDropDownList().list.find(".k-list-optionlabel").hide(); + }, + autoWidth: true, + change: function (e) { + var typeOfRemoval = this.value(); + + + // Add row in right group + var index = 100; //random hard-coded index to force row to appear last + + var dataSource = grid.dataSource; + + var newItem = dataSource.insert(index, { + id: null, + requestId: $requestId, + detailType: typeOfRemoval, + invoice: {amount: "", currency: "EUR"}, + amount: {amount: 0, currency: "EUR"}, + exchangeRateCurrency: 'EUR', + exchangePayMonth: 'Select Month', + exchangeRate: 1, + newItem: true, + extraDetail: true + }); + var newRow = grid.items().filter("[data-uid='" + newItem.uid + "']"); + grid.editRow(newRow); + + // Reset dropdownlist once clicked + $al.view._elements.add_remove_invoices_dropdown.data.element.data("kendoDropDownList").value(-1); + + // //delete from dropdown after inserting in the grid + // let toDelete = this.dataSource.data().filter(item => item.type === typeOfRemoval); + // if(detailTypeOrder !== 1){ //we do not remove arifreight or surface they can add as many as they want + // this.dataSource.remove(toDelete[0]); + // } + + } + }); + + + if (!$al.model._viewModel.canEditGrid) { // in view mode we hide invoice dropdown + $al.view._elements.add_remove_invoices_dropdown.data.element.data("kendoDropDownList").wrapper.hide(); + } + } + + _initializeView() { + + var viewModel = new kendo.data.Model.define(); + $al.model.request = $al.controller.requestCommon.prepareRequestForModelView(); + $al.model.entMax = $al.controller.requestCommon._createEntMaxList(); + + var _movFileFrozen = $al.model.movementFile.state === 'CANCELLED' || $al.model.movementFile.state === 'COMPLETED'; + + $al.model._viewModel = new viewModel({ + isVisible: true, + message: " ", + name: $al.model.movementFile.jobHolder.lastName + ' ' + $al.model.movementFile.jobHolder.firstName, + perId: $al.model.request.staffMember.id, + request: $al.model.request, + entMax: $al.model.entMax, + movementFile: $al.model.movementFile, + exchangeRates: $al.model.exchangeRates, + + bankInfo: $al.model.bankInfo, + bankAccountDropListEnabled: !_movFileFrozen && $al.view._thereIs_Abac_BankAccount($al.model.bankInfo), + + isBackOffice: $isBackOffice, + + commentsVisible: $isBackOffice || $al.view.requestCommon._thereAreComments(false), + + movFileFrozen: _movFileFrozen, + + // --- Comments logic --- + canAddComments: $isBackOffice, + canDeleteComments: false, + displayChildrenRequest: false, + + // This is a switch: the button disappears when the text area is visible. Initial value: visible + showCommentButton: true, + allOrderResposes: $al.model.allOrderResposes, + showCommentInput: function() { + this.set("showCommentButton", false); + $al.view.requestCommon._scrollToBottom(); + $('textarea.autoSize').autosize(); + }, + // ---------------------- + + onSubmit: function () { + + if ($al.view._validations()) { + + // RIGD-1924 After the validation, we finally warn te user about the exact consequences of this submit + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.confirmation.submit_confirmation_title, + $al.view.requestCommon._templates.warn.dialog.body.template({ + body_message: $al.controller._languageBundle.confirmation.submit_confirmation_message_html, + render_html: true + }), + $al.view.requestCommon._templates.ok_cancel.dialog.footer.template( + {ok_callback: '$al.controller.doSubmitRequest()'}) + ); + } + }, + onUpdateAndApproveRequest: function () { + if ($al.view._validations()) { + $al.controller.doUpdateAndApproveRequest(); + } + }, + onRejectRequest: function () { + $al.controller.doUpdateAndRejectRequest(); + }, + showMarkAsPaidDialog: function () { + $al.controller.doShowMarkAsPaidDialog(); + }, + onDiscardChanges: function () { + $al.controller.refreshPage(); + }, + onCancelRequest: function () { + $al.controller.doCancelRequest(); + }, + onSaveDraft: function () { + if ($al.view._draftValidations()) { + + // We are saving changes in DB, so we go back to 'preserveInvoicesTotal' + $al.model.preserveInvoicesTotal = true; + $al.controller.doSaveDraftRequest(); + } + }, + onCreateTopupRequest() { + $al.controller.requestCommon.createTopupRequest( $al.model.request.id, $al.model.request.requestType ); + }, + onDownloadZipfile() { + $al.controller.requestCommon.downloadZipfile( $al.model.request.id ); + }, + onSave: function () { + if ($al.view._draftValidations()) { + // We are saving changes in DB, so we go back to 'preserveInvoicesTotal' + $al.model.preserveInvoicesTotal = true; + $al.controller.doSaveRequest(); + } + }, + onResubmit: function () { + $al.controller.doResubmit(); + }, + showAbacInfo: function () { + $al.controller.doShowAbacInfo(); + }, + onRefreshAbacInfo: function () { + $al.controller.requestCommon.doRefreshAbacInfoAndRefresh(); + + }, + saveAndInitiatePayment: function () { + if ($al.view._initiatePaymentValidations()) { + $al.controller._saveAndInitiatePayment(); + } + + }, + onRefreshP2pInfo: function () { + $al.controller.requestCommon.doRefreshP2pInfoAndRefresh(); + + }, + displayClaimApproveRejectButtons: false, + showActionsBox: false, + canApprove: false, + canReject: false, + canMarkAsPaid: false, + canPayAbac: false, + isTotalAmountDisabled: true, + canEditGrid: false, + canCancel: false, + canDiscardChanges: false, + showPaymentInfoP2P: false, + showPaymentInfoABAC: false, + showPaymentAbacInfoLink: false, + someClaimRejected: false, + isApproved: false, + isAwaiting: false, + isRejected: false, + detailTypeOrderCategories: ["PERSONAL BELONGINGS", "VEHICLE", "STORAGE"], + appParameters: $al.model.appParameters, + sumOfSectionsTotalPersonal: 0, + sumOfSectionsTotalVehicle: 0, + sumOfSectionsTotalStorage: 0, + totalAmountApproved: 0, + canEditTotalAmount: false, + canDownloadZipfile: false, + + }); + + if ($a.utils.isNotNull($al.model.request.requestDetails)) { + $al.model._viewModel.request.requestDetails = $al.model.request.requestDetails; + } else { + $al.model._viewModel.request.requestDetails = []; + } + if ($a.utils.isNotNull($al.model.request.extraRequestDetails)) { + $al.model._viewModel.request.extraRequestDetails = $al.model.request.extraRequestDetails; + } else { + $al.model._viewModel.request.extraRequestDetails = []; + } + + // Format Iban code + if (!$a.utils.isNull($al.model._viewModel.request.personBankInfo) + && $al.model._viewModel.request.personBankInfo.ibanCode.length > 0) { + $al.model._viewModel.request.personBankInfo.ibanCode = $al.model._viewModel.request.personBankInfo.ibanCode.replace(/\W/gi, '').replace(/(.{4})/g, '$1 '); + } + + if ($a.utils.isNull($al.model.request.personBankInfo)) { + $al.model.request.personBankInfo = {baf: '', ibanCode: ''} + } + + $al.controller.modelPermissions(); + + // We are in Tot Reimb Request. Decl. of Honour statements are checked by default if this is Back Office and state = AWAITING + $al.model._viewModel.declarationOfHonourList = $al.view._getDecHonourStatements($isBackOffice && $al.model._viewModel.request.state === 'AWAITING'); + } + + _initiatePaymentValidations() { + let validationErrors = $al.view._validateBeforeInitiatingPayment(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + _validateBeforeInitiatingPayment() { + let messages = []; + + if($al.model._viewModel.request.totalAmount.amount < 0) + messages.push($al.controller._languageBundle.validations.total_removal_amount_should_be_positive); + + return messages; + } + + + _thereIs_Abac_BankAccount(bankAccounts) { + + if (typeof bankAccounts === "undefined" || !bankAccounts.length) { + return false; + } + for (const acc of bankAccounts) { + if (acc.lef || acc.baf) { + return true; + } + } + return false; + } + + _validations() { + var validationErrors = $al.view._validateBeforeUpdatingDeclaration(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + + lineValidation(input) { + + if (input.is("[name='monthPaymentDropDownList']")) { + + if (input[0].value === "Select Month") { + var stateDropDown = $("#currencyPersonalDropDownList").data("kendoDropDownList"); + + if (stateDropDown.value() === 'EUR') { + + return true; + } else { + return false; + } + + } + + + } + + return true; + } + + lineValidationUnforeseen(input) { + + if (input.is("[name='monthPaymentUnforeseenDropDownList']")) { + if (input[0].value === "Select Month") { + var stateDropDown = $("#currencyUnforeseenDropDownList").data("kendoDropDownList"); + + if (stateDropDown.value() === 'EUR') { + + return true; + } else { + return false; + } + + } + + + } + + return true; + } + + _validateBeforeUpdatingDeclaration() { + $al.controller.validate(); + var errorMessages = []; + // Validate all Decl of Honour statements have been ticked + var checkboxes = $("#declaration_of_honour_statements_list").find("input[type=checkbox]"); + if (checkboxes.length > 0) { + var checked = $("#declaration_of_honour_statements_list").find("input[type=checkbox]:checked"); + if (checked.length < checkboxes.length) { + errorMessages.push($al.controller._languageBundle.validations.honour_some_statements_unchecked); + } + } + + // Validate also the bank account + errorMessages = errorMessages.concat($al.view.requestCommon.validateMandatoryBankAccount($al.model._viewModel.request.state)); + + // Validate invoices (Removal and Unforeseen) + errorMessages = errorMessages.concat($al.view._validateInvoices(true)); + + return errorMessages; + } + + _draftValidations() { + + // Validate the bank account + var validationErrors = $al.view.requestCommon.validateMandatoryBankAccount($al.model._viewModel.request.state); + + // Validate invoices (Removal and Unforeseen). false means we are in draft, not in submit + validationErrors = validationErrors.concat($al.view._validateInvoices(false)); + + + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, validationErrors); + return false; + } + return true; + } + + + // Get Invoices validation error messages or empty array if OK. + _validateInvoices(isSubmit) { + + var messages = []; + var invoices = $al.model._viewModel.request.requestDetails; + var unfo_invoices = $al.model._viewModel.request.extraRequestDetails; + + // Used to avoid repeated messages + var missing_field_msg = false; + var missing_attach_msg = false; + + // For submit: Validate that there is at least one removal invoice and all attachs are ok (removal invoice and unforeseen invoice) + if (isSubmit) { + if (!invoices || invoices.length === 0) { + // There are no invoices + messages.push($al.controller._languageBundle.validations.no_invoices_added); + } else { + // Check that all the attachs are ok in removal invoices + for (const invo_item of invoices) { + if (!$al.view._checkAttachmentTypes(invo_item.attachments, ['INVOICE', 'PROOF_OF_PAYMENT', 'TRANSPORT_OWNERSHIP_PROOF'])) { + messages.push($al.controller._languageBundle.validations.some_invoices_missing_attachments); + missing_attach_msg = true; + break; + } + } + } + // Also for 'submit': Check that all the attachs are ok in unforeseen invoices + if (unfo_invoices && unfo_invoices.length && !missing_attach_msg) { + for (const unfo_item of unfo_invoices) { + if (!$al.view._checkAttachmentTypes(unfo_item.attachments, ['UNFORESEEN_INVOICE', 'BANK_STATEMENT'])) { + messages.push($al.controller._languageBundle.validations.some_invoices_missing_attachments); + break; + } + } + } + } + + // In any case (submit or draft) + + // Validate the numeric fields are filled (removal invoices): + if (invoices && invoices.length) { + for (const invo_item of invoices) { + if (!invo_item.goodsValue || !invo_item.invoice + || typeof invo_item.goodsValue.amount != 'number' || typeof invo_item.invoice.amount != 'number' + // Special case: Vehicle ('CAR') does not have 'volume' field, so we check when detailType is not CAR + || (typeof invo_item.volume != 'number' && invo_item.detailType != 'CAR') + || typeof invo_item.insuranceRate != 'number') { + messages.push($al.controller._languageBundle.validations.some_invoices_missing_fields); + missing_field_msg = true; + break; + } + } + } + // Validate the numeric fields are filled (unforeseen invoices): + if (unfo_invoices && unfo_invoices.length && !missing_field_msg) { + for (const unfo_item of unfo_invoices) { + if (!unfo_item.invoice || typeof unfo_item.invoice.amount != 'number' + || !unfo_item.justification || unfo_item.justification.length == 0) { + messages.push($al.controller._languageBundle.validations.some_invoices_missing_fields); + break; + } + } + } + // Return array of accumulated error messages or empty array if everything OK + return messages; + } + + // Check all the typeNames are present in attachs + _checkAttachmentTypes(attachs, typeNames) { + + if (!attachs || attachs.length == 0) { + // Array of attachments is empty + return false; + } + + for (const typeN of typeNames) { + var found = false; + for (const att of attachs) { + if (att.attachmentType === typeN) { + found = true; + break; + } + } + if (!found) { + return false; + } + } + // All found + return true; + } + + _cleanRemovedAttachments(invoice_entry) { + + if (!invoice_entry.attachments) { + // No attachments, ok: + return invoice_entry; + } + + var clean_attachs = []; + invoice_entry.attachments.forEach(attach => { + if (attach.fileName) { + // Preserve the ones where 'fileName' is not null (it's null for removed attachments) + clean_attachs.push(attach); + } + }); + // Overwrite 'attachments' field: + invoice_entry.attachments = clean_attachs; + return invoice_entry; + } + + _validateJustification() { + // Check at least one comment + var valid = $al.view.requestCommon._thereAreComments(true); + + if (!valid) { + $a.toast.showError($al.controller._languageBundle.alerts.justification_is_mandatory_for_adv_rem_reject); + $al.view.requestCommon.showMissingCommentMessage(); + } + return valid; + } + + + _showWarnDialog(title, messages) { + + $a.modalDialog.showAnswer(null, + title, + $al.view._templates.warn.dialog.body.template({body_message: messages.join(" ")}), + $al.view._templates.basic.dialog.footer.template({}) + ); + } + + _bindView() { + + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }); + } + + + currencyDropDownEditor(container, options) { + + let dropdownlist = $('') + .appendTo(container) + .kendoDropDownList({ + filter: "startswith", + dataTextField: "currency", + dataValueField: "currency", + dataSource: $al.model.exchangeRates, + //optionLabel: 'EUR', + autoWidth: true, + autoBind: false, + change: $al.controller.onChangeCurrency, + }); + + } + + currencyDropDownEditorUnforeseen(container, options) { + + let dropdownlist = $('') + .appendTo(container) + .kendoDropDownList({ + filter: "startswith", + dataTextField: "currency", + dataValueField: "currency", + dataSource: $al.model.exchangeRates, + //optionLabel: 'EUR', + autoWidth: true, + autoBind: false, + change: $al.controller.onChangeCurrencyUnforeseenCosts, + }); + + } + + monthPaymentDropDownEditor(container, options) { + + let dropdownlist = $('') + .appendTo(container) + .kendoDropDownList({ + filter: "startswith", + dataTextField: "monthYear", + dataValueField: "monthYear", + dataSource: [], + //optionLabel: 'EUR', + autoWidth: true, + autoBind: false, + change: $al.controller.onChangeMonth, + }); + + $al.controller.refreshExchangeRatesPerMonth(options.model.exchangeRateCurrency); + var stateDropDown = $("#monthPaymentDropDownList").data("kendoDropDownList"); + if (options.model.exchangePayMonth === "Select Month" && options.model.exchangeRate < Number.MAX_SAFE_INTEGER) { + + stateDropDown.wrapper.hide(); + } else { + stateDropDown.wrapper.show(); + } + + } + + + monthPaymentUnforeseenDropDownEditor(container, options) { + + let dropdownlist = $('') + .appendTo(container) + .kendoDropDownList({ + filter: "startswith", + dataTextField: "monthYear", + dataValueField: "monthYear", + dataSource: [], + //optionLabel: 'EUR', + autoWidth: true, + autoBind: false, + change: $al.controller.onChangeMonthUnforeseen, + }); + + $al.controller.refreshExchangeRatesPerMonthUnforeseen(options.model.exchangeRateCurrency); + var stateDropDown = $("#monthPaymentUnforeseenDropDownList").data("kendoDropDownList"); + if (options.model.exchangePayMonth === "Select Month" && options.model.exchangeRate < Number.MAX_SAFE_INTEGER) { + + stateDropDown.wrapper.hide(); + } else { + stateDropDown.wrapper.show(); + } + + } + + templateForExchangePayMonth(dataItem) { + if (dataItem.exchangePayMonth === "Select Month") { + return ""; + } else { + return dataItem.exchangePayMonth; + } + + } + + + _onDataBound(e) { + + // hide the group expand / collapse buttons + /*this.wrapper.find(".k-i-collapse").hide();//remove cell elements for hierarchy colum + this.wrapper.find(".k-group-col").css("width", "1px");//remove col elements for hierarchy column + + this.wrapper.find(".k-hierarchy-cell").css("width", "1px");*/ + + this.wrapper.find(".k-reset").hide(); + + var items = e.sender.items(); + var total = 0; + items.each(function () { + var dataItem = e.sender.dataItem(this); + var totalItem = dataItem.invoice.amount / dataItem.exchangeRate; + total += totalItem; + }); + + $al.model._viewModel.totalAmountRemovalInvoices = $al.view.requestCommon.sumRemovalInvoicesSubtotals(); + $al.model._viewModel.totalAmountRemovalInvoices = $al.model._viewModel.totalAmountRemovalInvoices.toFixed(2); + + $al.view._calculateTotalsAndRender(); + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }); + + } + + _onDataBoundUnforeseenInvoices(e) { + // hide the group expand / collapse buttons + /*this.wrapper.find(".k-i-collapse").hide();//remove cell elements for hierarchy colum + this.wrapper.find(".k-group-col").css("width", "1px");//remove col elements for hierarchy column + + this.wrapper.find(".k-hierarchy-cell").css("width", "1px");*/ + + this.wrapper.find(".k-reset").hide(); + + var items = e.sender.items(); + var total = 0; + items.each(function () { + var dataItem = e.sender.dataItem(this); + var totalItem = dataItem.invoice.amount / dataItem.exchangeRate; + total += totalItem; + }); + $al.model._viewModel.request.sumOfSectionsUnforeseenAmountFormatted = kendo.toString(total, "n2"); + $al.model._viewModel.request.sumOfSectionsUnforeseenAmount = total.toFixed(2); + + var wrapper = e.sender.element.find(".summaryDetailTotalUforseenAmountEur"); + wrapper.append("" + $al.model._viewModel.request.sumOfSectionsUnforeseenAmountFormatted + " EUR"); + + + $al.view._calculateTotalsAndRender(); + + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }); + + $al.view.alignTotal(); + $(window).resize(function () { + $al.view.alignTotal(); + }); + } + + alignTotal() { + // align total in summary wrapper + var colWidthInvoice = $(".col-invoice").width() + 24; + var colWidthStatement = $(".col-statement").width() + 24; + var colWidthCommand = 0; + if ($(".col-command").css('display') !== 'none') { + var colWidthCommand = $(".col-command").width() + 24; + } + var offsetRight = colWidthInvoice + colWidthStatement + colWidthCommand; + $(".resizeMeToAlignTotal").width(offsetRight - 10); + $(".resizeMeToAlignTotal-withLink").width(offsetRight - 144); + + } + + _calculateTotalsAndRender() { + + if (typeof $al.model._viewModel.totalAmountRemovalInvoices === "undefined" || + typeof $al.model._viewModel.request.sumOfSectionsUnforeseenAmount === "undefined") { + // Avoid first call when data is not available + return; + } + + if (typeof $al.model._viewModel.request.calculatedTotalAmount === "undefined") { + $al.model._viewModel.request.calculatedTotalAmount = {amount: '', currency: 'EUR'}; + } + + $al.model._viewModel.request.calculatedTotalAmount.amount = Number($al.model._viewModel.totalAmountRemovalInvoices) + Number($al.model._viewModel.request.sumOfSectionsUnforeseenAmount); + $al.model._viewModel.request.calculatedTotalAmount.amountFormatted = kendo.toString($al.model._viewModel.request.calculatedTotalAmount.amount, "n2"); + $al.model._viewModel.request.calculatedTotalAmount.amount = $al.model._viewModel.request.calculatedTotalAmount.amount.toFixed(2); + if (($al.model._viewModel.request.state === 'DRAFT' || $al.model._viewModel.request.state === 'AWAITING') + && typeof $al.model._viewModel.request.totalAmount !== "undefined") { + //it is comming from being approve so we need to remove the total amount not to be shown + // if ($al.model.previousCalculatedTotalAmount == 0) { + // delete $al.model._viewModel.request.totalAmount; + // } + + if (!$al.model.preserveInvoicesTotal) { + delete $al.model._viewModel.request.totalAmount; + } + } + + + if (typeof $al.model._viewModel.request.totalAmount === "undefined") { + // it is a new request or draft so we should use the calculated amount + $al.model._viewModel.request.totalAmount = {amount: '', currency: 'EUR'}; + + $al.model._viewModel.request.totalAmount.amount = Number($al.model._viewModel.totalAmountRemovalInvoices) + Number($al.model._viewModel.request.sumOfSectionsUnforeseenAmount); + + } else { + //It is defined so this in a state that is not draft, so we show the totalamount that is the approve amount + $al.model._viewModel.request.totalAmount.amount = Number($al.model._viewModel.request.totalAmount.amount); + + + } + $al.model._viewModel.request.totalAmount.amountFormatted = kendo.toString($al.model._viewModel.request.totalAmount.amount, "n2"); + $al.model._viewModel.request.totalAmount.amount = $al.model._viewModel.request.totalAmount.amount.toFixed(2); + + + $al.model._viewModel.totalAmountRemovalInvoicesFormatted = kendo.toString(parseFloat($al.model._viewModel.totalAmountRemovalInvoices), "n2"); + $al.model._viewModel.request.sumOfSectionsUnforeseenAmountFormatted = kendo.toString(parseFloat($al.model._viewModel.request.sumOfSectionsUnforeseenAmount), "n2"); + + //var wrapper = e.sender.element.find(".summaryWrapper"); + var wrapper = $(".summaryWrapper") + + wrapper.find("#totalAmountRemovalInvoicesWrapper").html("
    " + $al.model._viewModel.totalAmountRemovalInvoicesFormatted + " EUR
    "); + wrapper.find("#totalUnforeseenAmountWraper").html("
    " + $al.model._viewModel.request.sumOfSectionsUnforeseenAmountFormatted + " EUR
    "); + wrapper.find("#totalInvoicesAndUnforeseenWraper").html("
    " + $al.model._viewModel.request.totalAmount.amountFormatted + " EUR
    "); + wrapper.find("#initialAmount").html("
    " + $al.controller._languageBundle.initial_amount + "
    " + $al.model._viewModel.request.calculatedTotalAmount.amountFormatted + "
    "); + + + $al.view._bindView(); + } + + detailTypeTemplate(dataItem) { + return $al.controller._languageBundle.advance_removal.request_detail_label[dataItem.detailType]; + + } + + insertIntoDropdownEntMaxCeiling(elemento) { + // we insert the ceiling that is not in grid and it is not in dropdown + var grid = $al.view._elements.invoice.grid.data.element.data("kendoGrid"); + + grid.dataSource.data().filter(d => d.detailType === elemento); + let addRemovalItemdropdownlist = $al.view._elements.add_remove_entMax_dropdown.data.element.data("kendoDropDownList"); + $al.model.entMax.forEach(ceilingToAdd => { + let toDelete = []; + + let request_detail_type = $al.view._getElementForDropDown(ceilingToAdd.type); + let itIsAlreadyThere = addRemovalItemdropdownlist.dataSource.data().filter(item => item.type === ceilingToAdd.type); + + if (grid.dataSource.data() && grid.dataSource.data().length > 0) { + toDelete = grid.dataSource.data().filter(d => d.detailType === ceilingToAdd.type); + } + + + if (typeof toDelete[0] === 'undefined' && itIsAlreadyThere.length == 0 && ceilingToAdd.enable && typeof ceilingToAdd.value != "undefined") {//It is not inside the grid we add them + addRemovalItemdropdownlist.dataSource.insert(request_detail_type); + + } + + + }); + + + } + + + _getDecHonourStatements(initialChecked) { + var statements = []; + statements.push({ + statementId: "statement_1", + statement: $al.controller._languageBundle.honour.total_rem_statement_1, + isChecked: initialChecked + }); + statements.push({ + statementId: "statement_2", + statement: $al.controller._languageBundle.honour.total_rem_statement_2, + isChecked: initialChecked + }); + statements.push({ + statementId: "statement_3", + statement: $al.controller._languageBundle.honour.total_rem_statement_3, + isChecked: initialChecked + }); + return statements; + } + + + footerDetailTotalAmountEurFunction(e) { + return $al.view.requestCommon.footerDetailTotalAmountEurFunction(e, true); + } + +} + +class RequestController { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.controller(); + }); + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.requests", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + + $al.model.init(); + $al.notifyOnReadyMvc(); + } + + doUpdateAndApproveRequest() { + //if($al.controller.validateBeforeUpdate('APPROVE')){ + + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._updateRequestResponse); + //} + } + + doSubmitRequest() { + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._submitRequestResponse); + } + + + _submitRequestResponse(data) { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'SUBMIT' + }, null, null, $al.controller._submitResponse); + $al.model.refreshAfterUpdateState(data); + + } + + _updateRequestResponse(data) { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'APPROVE' + }, null, null, $al.controller._approveResponse); + $al.model.refreshAfterUpdateState(data); + + } + + _submitResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.submit_request_success); + $al.model.refreshAfterUpdateState(data); + } + + _approveResponse(data) { + // $al.model._restCalls.changeStateRequest.execute({requestId: $requestId,stateMachineEvent : 'APPROVE'},null , $al.model.onRequestRetrieved); + $a.toast.showSuccess($al.controller._languageBundle.alerts.approve_and_save_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doPayRequest() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'PAY' + }, null, null, $al.controller._payResponse); + } + + _payResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.pay_request_success); + $al.model.refreshAfterUpdateState(data); + } + + _saveAndInitiatePayment() { + if (typeof $al.model._viewModel.movementFile.budgetLine == "undefined") { + $a.toast.showWarning($al.controller._languageBundle.alerts.no_budget_line_found); + return null; + } + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._initiatePayment); + } + + _initiatePayment() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.abacDetailsForm, null, { + requestId: $requestId, + requestType: "TotalRemRequest", + movementFileId: $al.model.movementFile.id + })); + } + + doShowAbacInfo() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.showAbacInfo, null, + { + requestId: $requestId, + requestType: "TotalRemRequest", + movementFileId: $al.model.movementFile.id + }) + ); + } + + //Reject + + //update request and then call doRejectRequest to move request to rejected + doUpdateAndRejectRequest() { + + if ($al.view._validateJustification()) { + if($al.model._viewModel.request.state == 'PAID'){ // in case rejecting and paid we clean abac info + $al.model.requestCommon.clearPaymentInfo(); + } + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller.doRejectRequest); + } + } + + doCancelRequest() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'CANCEL' + }, null, null, $al.controller._cancelRequestResponse); + } + + doSaveDraftRequest() { + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._saveDraftRequest); + } + + _saveDraftRequest(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.save_draft_request_success); + $al.model.refreshAfterUpdateState(data); + } + + _saveRequest(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.save_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doSaveRequest() { + $al.model._restCalls.updateRequest.execute(null, null, $al.model._viewModel.request, $al.controller._saveRequest); + } + + + //change the state to reject and _rejectRequestResponse to message and refresh page + doRejectRequest() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'REJECT' + }, null, null, $al.controller._rejectRequestResponse); + } + + //message and refresh page + _rejectRequestResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.reject_request_success); + $al.model.refreshAfterUpdateState(data); + } + + _cancelRequestResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.cancel_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doResubmit() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: 'RESUBMIT' + }, null, null, $al.controller._resubmitResponse); + } + + _resubmitResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.resubmit_request_success); + $al.model.refreshAfterUpdateState(data); + + } + + validateMarkAsPaid() { + + $a.toast.showSuccess($al.controller._languageBundle.alerts.create_draft_success); + } + + //MARK as PAID + + //show model dialog and bind + doShowMarkAsPaidDialog() { + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.mark_as_paid_extra_data_title, + $al.view._templates.mark_as_paid.dialog.body.template({}), + $al.view._templates.ok_cancel.dialog.footer.template({}) + ); + $al.view._elements.payment_date.data.element.kendoDatePicker({ + value: new Date(), + parseFormats: ["dd/MM/yyyy"] + + }); + kendo.bind("#mark_as_paid_data", $al.model._viewModel.request); + + } + + //when user click ok , we validate and call doUpdateAndMarkAsPaidRequest + doValidateAndSubmitMarkAsPaid() { + if ($al.view._elements.payment_order.data.element.val() !== "") { + $al.model._restCalls.validatePaymentOrder.execute({orderId: $al.view._elements.payment_order.data.element.val()}, null, $al.model._onDataRetrievedValidatePaymentOrder); + } else { + var validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + paymentDateInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_date.id + "]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentDateInvalid: "Invalid format of Payment Date", + } + }).data("kendoValidator"); + validator.validate(); + } + } + + + + _renderCommunication() { + $al.view._elements.communication.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + $al.view._elements.communication.data.component = "kendoListView"; + + // Item duplicated to display in different position in html based responsive breaking points (bottom of the page or right column + $al.view._elements.communication2.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + $al.view._elements.communication2.data.component = "kendoListView"; + } + + _prepareCommunication(data) { + if (typeof data !== "undefined" && data !== null) { + data.forEach(n => { + if (n.arrivalState) + n.arrivalState = $al.controller._languageBundle.stateMachine[n.arrivalState.toLowerCase()]; + + }); + } + return data; + } + + //discard changes + + refreshPage() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewRequest, null, {requestId: $requestId})); + } + + onChangeCurrency(e) { + + var grid = $("#request-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + if (dataItemDropBox.currency === "EUR") { + $al.controller.onEuroSelection(e); //hide drop down and put exchange rate to 1 TODO onEuroSelection + dataItem.set("exchangeRate", 1); + dataItem.set("exchangePayMonth", 'Select Month'); + var stateDropDown = $("#monthPaymentDropDownList").data("kendoDropDownList"); + stateDropDown.wrapper.hide(); + } else { + $al.controller.refreshExchangeRatesPerMonth(dataItemDropBox.currency); + var stateDropDown = $("#monthPaymentDropDownList").data("kendoDropDownList"); + stateDropDown.wrapper.show(); + stateDropDown.select(1); + dataItem.set("exchangeRate", Number.MAX_SAFE_INTEGER); + //stateDropDown.trigger("change"); + dataItem.set("exchangePayMonth", 'Select Month'); + + } + + + } + + onChangeCurrencyUnforeseenCosts(e) { + var grid = $("#request-unforeseen-invoices-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + if (dataItemDropBox.currency === "EUR") { + $al.controller.onEuroSelectionUnforeseen(e); //hide drop down and put exchange rate to 1 //TODO unforeseen??? + dataItem.set("exchangeRate", 1); + dataItem.set("exchangePayMonth", 'Select Month'); + var stateDropDown = $("#monthPaymentUnforeseenDropDownList").data("kendoDropDownList"); + stateDropDown.wrapper.hide(); + } else { + $al.controller.refreshExchangeRatesPerMonthUnforeseen(dataItemDropBox.currency); + var stateDropDown = $("#monthPaymentUnforeseenDropDownList").data("kendoDropDownList"); + stateDropDown.wrapper.show(); + stateDropDown.select(1); + dataItem.set("exchangeRate", Number.MAX_SAFE_INTEGER); + //stateDropDown.trigger("change"); + dataItem.set("exchangePayMonth", 'Select Month'); + + } + + + } + + refreshExchangeRatesPerMonth(currency) { + $al.model._restCalls.exchangeRatesPerMonth.execute({currency: currency}, null, $al.controller._onChangeCurrencyRetrieved); + } + + refreshExchangeRatesPerMonthUnforeseen(currency) { + $al.model._restCalls.exchangeRatesPerMonth.execute({currency: currency}, null, $al.controller._onChangeCurrencyUnforeseenRetrieved); + } + + _onChangeCurrencyRetrieved(data) { + var stateDropDown = $("#monthPaymentDropDownList").data("kendoDropDownList"); + + // changed to use another approach to set dataSource + var dataSource = new kendo.data.DataSource({ + data: data + }); + stateDropDown.setDataSource(dataSource); + } + + _onChangeCurrencyUnforeseenRetrieved(data) { + var stateDropDown = $("#monthPaymentUnforeseenDropDownList").data("kendoDropDownList"); + + // changed to use another approach to set dataSource + var dataSource = new kendo.data.DataSource({ + data: data + }); + stateDropDown.setDataSource(dataSource); + } + + onChangeMonth(e) { + var grid = $("#request-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + dataItem.set("exchangeRate", dataItemDropBox.exchangeRate); + + + } + + onChangeMonthUnforeseen(e) { + var grid = $("#request-unforeseen-invoices-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + dataItem.set("exchangeRate", dataItemDropBox.exchangeRate); + + + } + + + onEuroSelection(e) { + //hide drop down and put exchange rate to 1 + var grid = $("#request-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + dataItem.set("exchangeRate", 1); + dataItem.set("exchangePayMonth", 'Select Month'); + + } + + onEuroSelectionUnforeseen(e) { + //hide drop down and put exchange rate to 1 + var grid = $("#request-unforeseen-invoices-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + var index = e.sender.selectedIndex, dataItemDropBox; + dataItemDropBox = e.sender.dataItem(index); + dataItem.set("exchangeRate", 1); + dataItem.set("exchangePayMonth", 'Select Month'); + + } + + onChangeWeight(e) { + + var grid = $("#request-invoice-grid").data("kendoGrid"); + var row = e.sender.element.closest(".k-master-row"); + var dataItem = grid.dataItem(row); + + + // dataItemDropBox = e.sender.dataItem(index); + let calculateVolume = Number(e.sender.value()) * Number($al.model.appParameters.get("KGtoM3")); + + //calculateVolume=$al.view.requestCommon.roundedToFixed(calculateVolume,2); + dataItem.set("volume", calculateVolume); + + } + + + _onUploadSuccess(event, attType, gridId) { + + + var grid = $(gridId).data("kendoGrid"); + var row = $(event.sender.element.closest("tr")); + var mRow = row.prev(".k-master-row") + var dataItem = grid.dataItem(mRow); + + if (typeof dataItem.attachments != 'undefined') { + var attachments = dataItem.attachments; + } else { + var attachments = []; + } + + if (event.operation == "remove") { + let toBeRemoved = attachments.filter(a => a.fileUid == event.files[0].fileUid)[0]; + if (typeof toBeRemoved == 'undefined') { + toBeRemoved = attachments.filter(a => a.fileUid == event.files[0].uid)[0]; + } + if (typeof toBeRemoved != 'undefined') { + toBeRemoved.remove = true; + toBeRemoved.fileName = null; + } + } else { + var attch = {}; + attch.fileUid = event.response.uid; + attch.fileName = event.response.name; + + attch.requestDetailId = dataItem.id; + attch.attachmentType = attType; + attachments.push(attch); + } + + dataItem.set("attachments", attachments); + dataItem.dirty = true; + + $($(".k-file-name")[0]).removeAttr("title"); + } + + _detailInit(e) { + var detailRow = e.detailRow; + var model = e.data; + kendo.bind(detailRow, model); + + e.detailCell.find("textarea.autoSize").autosize(); + + var files1 = []; + var files2 = []; + var files3 = []; + + if (typeof model.get("attachments") !== "undefined") { + var modelArray = model.get("attachments"); + modelArray.forEach(att => { + if (typeof att.fileName !== "undefined" && att.remove != true) { + var attch = {}; + attch.name = '' + att.fileName + ''; + attch.title = att.fileName; + attch.extension = '.' + att.fileName.split('.').pop(); + attch.fileUid = att.fileUid; + if (att.attachmentType === "TRANSPORT_OWNERSHIP_PROOF") { + files3.push(attch); + } else if (att.attachmentType === "PROOF_OF_PAYMENT") { + files2.push(attch); + } else if (att.attachmentType === "INVOICE") { + files1.push(attch); + } + } + }); + } + + + e.detailCell.find("#claim-id1").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id1"), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.controller._onUploadSuccess(e, "INVOICE", "#request-invoice-grid") + }, + localization: { + select: "Select File ..." + }, + files: files1 + }); + + + e.detailCell.find("#claim-id2").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id2"), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.controller._onUploadSuccess(e, "PROOF_OF_PAYMENT", "#request-invoice-grid") + }, + localization: { + select: "Select File ..." + }, + files: files2 + }); + + e.detailCell.find("#claim-id3").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id3"), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.controller._onUploadSuccess(e, "TRANSPORT_OWNERSHIP_PROOF", "#request-invoice-grid") + }, + localization: { + select: "Select File ..." + }, + files: files3 + }); + + } + + _detailInitUnforeseenInvoices(e) { + + var detailRow = e.detailRow; + var model = e.data; + kendo.bind(detailRow, model); + + e.detailCell.find("textarea.autoSize").autosize(); + + var files4 = []; + var files5 = []; + + if (typeof model.get("attachments") !== "undefined") { + var modelArray = model.get("attachments"); + modelArray.forEach(att => { + if (typeof att.fileName !== "undefined" && att.remove != true) { + var attch = {}; + attch.name = '' + att.fileName + ''; + attch.title = att.fileName; + attch.extension = '.' + att.fileName.split('.').pop(); + attch.fileUid = att.fileUid; + if (att.attachmentType === "UNFORESEEN_INVOICE") { + files4.push(attch); + } else if (att.attachmentType === "BANK_STATEMENT") { + files5.push(attch); + } + } + }); + } + + + e.detailCell.find("#claim-id4").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id4"), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.controller._onUploadSuccess(e, "UNFORESEEN_INVOICE", "#request-unforeseen-invoices-grid") + }, + localization: { + select: "Select File ..." + }, + files: files4 + }); + + + e.detailCell.find("#claim-id5").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id5"), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.controller._onUploadSuccess(e, "BANK_STATEMENT", "#request-unforeseen-invoices-grid") + }, + localization: { + select: "Select File ..." + }, + files: files5 + }); + + + } + + validate() { + var validator = $($al.view._templates.data.wrapperSelector).kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + } + }, + messages: { + requiredFieldEmpty: "Required Field", + + } + }).data("kendoValidator"); + + + return validator.validate(); + } + + + modelPermissions() { + $al.controller.requestCommon.modelPermissionsCommon(); + var _movFileFrozen = $al.model.movementFile.state === 'CANCELLED' || $al.model.movementFile.state === 'COMPLETED'; + $al.view.requestCommon._logicForP2pOrderLink(); + + + if ($al.model._viewModel.isBackOffice) { //BACK OFFICE permissions + + // Set flag to see the DELETE button in the comments (regardless of state) + $al.model._viewModel.canDeleteComments = $al.view.requestCommon.hasDeleteCommentsPermission(); + + //Permission to show buttons, in case of needing a security checker I do it here instead of a template + + if ($al.model._viewModel.request.state === 'DRAFT') { + // Show comments section only if there some. + $al.model._viewModel.commentsVisible = $al.view.requestCommon._thereAreComments(false); + // Cannot add/delete comments + $al.model._viewModel.canAddComments = false; + $al.model._viewModel.canDownloadZipfile = false; + + } else if ($al.model._viewModel.request.state === 'AWAITING') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.showDivider = true; + $al.model._viewModel.canApprove = $al.model.permissions.canApproveRemRequest; + $al.model._viewModel.canReject = $al.model.permissions.canRejectRemRequest; + $al.model._viewModel.canSave = $al.model.permissions.canEditRemRequest; + $al.model._viewModel.canDiscardChanges = true; + $al.model._viewModel.canDownloadZipfile = true; + $al.model._viewModel.canEditTotalAmount = _movFileFrozen ? false : $al.model.permissions.canEditRemRequest; + $al.model._viewModel.canEditGrid = _movFileFrozen ? false : $al.model.permissions.canEditRemRequest; + $al.model._viewModel.canEditGridInline = _movFileFrozen ? false : + ( ($al.model.permissions.canEditRemRequest || $al.model.permissions.isOwner) ? {mode: "inline"} : false ); + + } else if ($al.model._viewModel.request.state === 'APPROVED') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.canReject = $al.model.permissions.canRejectRemRequest; + $al.model._viewModel.canPayAbac = $al.model.permissions.canPayRemRequestAbac; + $al.model._viewModel.canMarkAsPaid = $al.model.permissions.canPayRemRequestManually; + $al.model._viewModel.showDivider = true; + $al.model._viewModel.canDownloadZipfile = true; + } else if ($al.model._viewModel.request.state === 'REJECTED') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.canResubmit = $al.model.permissions.canResubmitRemRequest; + } else if ($al.model._viewModel.request.state === 'PAID' || $al.model._viewModel.request.state === 'SENT_TO_P2P') { + + + if ($al.model._viewModel.request.state == 'PAID'){ + $al.controller.requestCommon.setTopupPermissionByDisableFrontOffice( $al.model._viewModel.isBackOffice,_movFileFrozen ); + $al.view.requestCommon._setCanRejectPaidType2($al.model.permissions.canRejectRemRequest); + } + + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.showPaymentAbacInfoLink = true; + $al.model._viewModel.canDownloadZipfile = true; + + $al.model._viewModel.canDownloadZipfile = true; + $al.model._viewModel.requestPaymentDateFormatted = kendo.toString(kendo.parseDate($al.model.request.paymentDate), 'MMM dd, yyyy'); + $al.view.requestCommon._logiForShowingPaymentInfo(); + $al.model._viewModel.showActionsBox = $al.model._viewModel.showActionsBox && ($al.model._viewModel.canReject || $al.model._viewModel.canCreateTopupRequest); + } + + } else { // FRONT OFFICE PERMISSIONS + //Permission to show buttons, in case of needing a security checker I do it here instead of a template + if ($al.model._viewModel.request.state === 'DRAFT') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.showDivider = true; + $al.model._viewModel.canSubmit = $al.model.permissions.canSubmitRemRequest || $al.model.permissions.isOwner; + $al.model._viewModel.canSaveAsDraft = $al.model.permissions.canSubmitRemRequest || $al.model.permissions.isOwner; + $al.model._viewModel.canDiscardChanges = true; + + $al.model._viewModel.canEditGrid = _movFileFrozen ? false : ( $al.model.permissions.canSubmitRemRequest || $al.model.permissions.isOwner ); + $al.model._viewModel.canEditGridInline = _movFileFrozen ? false : + ( ($al.model.permissions.canSubmitRemRequest || $al.model.permissions.isOwner) ? {mode: "inline"} : false ); + + } else if ($al.model._viewModel.request.state === 'AWAITING') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.isAwaiting = true; + // $al.model._viewModel.canApprove = $al.model.permissions.canReviewRemRequest; + // $al.model._viewModel.canReject = $al.model.permissions.canReviewRemRequest; + $al.model._viewModel.canCancel = $al.model.permissions.canSubmitRemRequest || $al.model.permissions.isOwner; + + } else if ($al.model._viewModel.request.state === 'APPROVED') { + $al.model._viewModel.isApproved = true; + // $al.model._viewModel.canReject = $al.model.permissions.canReviewRemRequest; + // $al.model._viewModel.canMarkAsPaid = $al.model.permissions.canPayRemRequest; + + } else if ($al.model._viewModel.request.state === 'REJECTED') { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.canResubmit = $al.model.permissions.canResubmitRemRequest || $al.model.permissions.isOwner; + $al.model._viewModel.isRejected = true; + + } else if ($al.model._viewModel.request.state === 'PAID') { + $al.model._viewModel.showPaymentInfo = true; + $al.model._viewModel.showActionsBox = !_movFileFrozen; + + $al.model._viewModel.requestPaymentDateFormatted = kendo.toString(kendo.parseDate($al.model.request.paymentDate), 'MMM dd, yyyy'); + // $al.model._viewModel.canReject = $al.model.permissions.canRejectPaidTudRequest; + } + } + + } + + +} + +$al.mvc(RequestModel, RequestView, RequestController, true); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/request.common.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/request.common.js new file mode 100644 index 0000000..42453ec --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/request.common.js @@ -0,0 +1,1217 @@ +class RequestCommonModel { + + constructor() { + + this._restCalls = { + getRequestComments: new $a.GetRestCall(null, "/internal/api/comments/request/{requestId}"), + addRequestComment: new $a.PostRestCall(null, "/internal/api/comments/request/{requestId}"), + deleteComment: new $a.DeleteRestCall(null, "/internal/api/comments/{commentId}"), + updateAbacPaymentInfo: new $a.PutRestCall(null, "/internal/api/abac/paymentReference/{requestId}"), + getRequestsByParent: new $a.GetRestCall(null, "/internal/api/requests/parent/{requestId}"), + getTopupRequest: new $a.GetRestCall(null, "/internal/api/topup-requests/{requestId}"), + downloadZipfileRest: new $a.GetRestCall(null, "/internal/api/requests/downloadAsZip/{requestId}"), + refreshP2pStateForRequest: new $a.PutRestCall(null, "/internal/api/summa/refresh-allowance-p2p-order-status/{requestId}"), + + + }; + this.urls = { + action: { + viewTopupRequest: $a.utils.url(null, "/requests/view-topup.do"), + viewAdvanceRequest: $a.utils.url(null, "/requests/view-adv-rem.do"), + viewClearingRequest: $a.utils.url(null, "/requests/view-clr-rem.do"), + downloadZipfile: $a.utils.url(null, "/internal/api/requests/downloadAsZip/{requestId}") + } + }; + + this.requestDetailTypes = { + Resettlement: "RESETTLEMENT_REQUEST", + Installation: "INSTALLATION_REQUEST" + } + this.contentDisposition = { + Attachment: "ATTACHMENT" + } + + } + + + clearPaymentInfo(){ + + //if we reject in the payment when there was a payment sent to abac + // when in the version os summa, we keep this info for future reference + /* $al.model._viewModel.request.abacRequestState = null; + $al.model._viewModel.request.paymentRequest = null; + $al.model._viewModel.request.paymentOrder = null; + $al.model._viewModel.request.p2pHubOrderStatus = null; + $al.model._viewModel.request.paymentDate = null;*/ + + } + prepareRequestForMarkAsPaid(){ + var paymentDate = $al.view._elements.payment_date.data.element.data("kendoDatePicker").value(); + $al.model._viewModel.request.paymentDate = $a.utils.toLocalDateISO(paymentDate); + $al.model._viewModel.request.abacWorkflowState = 'PROCESSING'; + $al.model._viewModel.request.abacRequestState = 'MANUAL_PAYMENT'; + } + + prepareRequestForMarkAsPaidFromCommon(){ + var paymentDate = $al.view.requestCommon._elements.edit_abac_info_payment_date.data.element.data("kendoDatePicker").value(); + $al.model._viewModel.request.paymentDate = $a.utils.toLocalDateISO(paymentDate); + } + +} + +class RequestCommonView { + + constructor() { + this._templates = new $a.DataContainer("requestCommon"); + this._elements = new $a.DataContainer("requestCommon"); + + // Footer "Ok/Cancel" + this._templates.node("ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + this._templates.node("save_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + // Body for warn + this._templates.node("warn").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("edit_abac_info").node("dialog").data(new $a.KendoTemplateData(), "body"); + + this._elements.node("edit_abac_info_payment_date").data(new $a.KendoElementData()); + this._elements.node("edit_abac_info_payment_order").data(new $a.KendoElementData()); + this._elements.node("edit_abac_info_payment_request").data(new $a.KendoElementData()); + this._elements.node("edit_abac_info_payment_date_div").data(new $a.KendoElementData()); + this._elements.node("edit_abac_info_payment_order_div").data(new $a.KendoElementData()); + this._elements.node("edit_abac_info_payment_request_div").data(new $a.KendoElementData()); + + } + + + validateMandatoryBankAccount(state) { + var message = []; + // Validate the enabled mandatory-bank-account input: + var mandatoryBankAccountItems = $(".mandatory-bank-account"); + for (var ind = 0; ind < mandatoryBankAccountItems.length; ind++) { + var item = mandatoryBankAccountItems[ind]; + if (!item.disabled && item.validity && !item.validity.valid) { + // Enabled and not valid + message.push($al.controller._languageBundle.validations.missing_bank_account); + break; + } + } + + if (message.length === 0 && (state === 'DRAFT' && !$al.view._thereIs_Abac_BankAccount($al.model.bankInfo))) { + message.push($al.controller._languageBundle.validations.missing_bank_account); + } + return message; + } + + numberCubicMeterEditor(container, options) { + + + if (options.model.detailType === 'CAR') { + return " ... "; + } else if (options.model.detailType === 'AIRFREIGHT') { + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "##.## \\m³", + decimals: 2, + spinners: false, + placeholder: "0 m³" + }); + } else { + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "##.## \\m³", + decimals: 2, + spinners: false, + placeholder: "0 m³" + }); + } + } + + numberKgEditor(container, options) { + if (options.model.detailType === 'AIRFREIGHT') { + + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "##.## \\Kg", + decimals: 2, + spinners: false, + change: $al.controller.onChangeWeight, + placeholder: "0 Kg" + }); + } + } + + numberPercentEditor(container, options) { + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "##.## \\%", + decimals: 2, + spinners: false, + placeholder: "0 %" + }); + } + + goodsValueEditor(container, options) { + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "#.00 EUR", + decimals: 2, + spinners: false, + placeholder: "0 EUR" + }); + } + + invoiceAmountEditor(container, options) { + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "#.00", + decimals: 2, + spinners: false, + placeholder: "0" + }); + } + + justificationEditor(container, options) { + $('
    ') + .appendTo(container) + .TextBox; + } + + /* + * Returns a simple object: { amount: , applied: } + * 'applied' tells if the prorata function has been actually applied to limit the amount + */ + personalBelongingsProrataTotalAmount(surfaceVol, surfaceCost, airfreightVol, airfreightCost, airfreightKg) { + + const TOTAL_VOL_LIMIT = Number($al.model.appParameters.get("MAXIMUM_VOLUME_PERSONAL")); // m3 + const AIRFREIGHT_VOL_LIMIT = Number($al.model.appParameters.get("MAXIMUM_VOLUME_AIRFREIGHT")); // m3 + const AIRFREIGHT_KG_LIMIT = Number($al.model.appParameters.get("MAXIMUM_WEIGHT_AIRFREIGHT")); // kg + + var totalVol = surfaceVol + airfreightVol; + + var prorataTotalAmount; + var prorataApplied = true; + + if (!$al.view.requestCommon._isHodAirOrFutureJobIsNFP()) { + if (totalVol > TOTAL_VOL_LIMIT) { + if (airfreightKg <= AIRFREIGHT_KG_LIMIT) { + // [airfreight cost] + [surface Cost]*0.7*[volume ceiling 60m3 - volume airfreight]/[Surface volume amount] + [surface cost]*0.3 + + prorataTotalAmount = airfreightCost + + surfaceCost * 0.7 * (TOTAL_VOL_LIMIT - airfreightVol) / surfaceVol + + surfaceCost * 0.3; + + } else { + // totalVol > TOTAL_VOL_LIMIT + // airfreightKg > AIRFREIGHT_KG_LIMIT + // [airfreight cost]*0.7*[airfreight kg ceiling (780kg)]/[airfreight kg] + [airfreight cost] * 0.3 + [surface Cost]*0.7*[volume ceiling 60m3 - volume airfreight]/[surface volume amount] + [surface cost]*0.3 + prorataTotalAmount = airfreightCost * 0.7 * AIRFREIGHT_KG_LIMIT / airfreightKg + + airfreightCost * 0.3 + + surfaceCost * 0.7 * (TOTAL_VOL_LIMIT - airfreightVol) / surfaceVol + + surfaceCost * 0.3; + } + + } else { + // totalVol <= TOTAL_VOL_LIMIT + if (airfreightKg > AIRFREIGHT_KG_LIMIT) { + // [airfreight cost]*0.7*[airfreight kg ceiling (780kg)]/[airfreight kg] + [airfreight cost] * 0.3 + Surface costs. + prorataTotalAmount = airfreightCost * 0.7 * AIRFREIGHT_KG_LIMIT / airfreightKg + + airfreightCost * 0.3 + + surfaceCost; + + } else { + // totalVol <= TOTAL_VOL_LIMIT + // airfreightKg <= AIRFREIGHT_KG_LIMIT + // Normal case: + prorataTotalAmount = surfaceCost + airfreightCost; + prorataApplied = false; + } + + } + } else { + // Entry into storage we need to apply diferent prorata Now I disable only TODO prorata EIS + prorataTotalAmount = surfaceCost + airfreightCost; + prorataApplied = false; + } + return {"amount": prorataTotalAmount, "applied": prorataApplied}; + } + + roundedToFixed(input, digits) { + var rounded = Math.pow(10, digits); + return (Math.round(input * rounded) / rounded).toFixed(digits); + } + + insuranceRateTemplate(dataItem) { + + let warningExededInsurance = ""; + + if (dataItem.insuranceRate > Number($al.model.appParameters.get("MAXIMUM_INSURANCE_RATE"))) { + warningExededInsurance = "warning"; + } + + return kendo.toString(dataItem.insuranceRate, "n2") + " % " + warningExededInsurance + " "; + + } + + detailTypeOrderTemplate(dataItem) { + + if (dataItem.value == 1) { // Personal belongings + var iconTpl = "inventory_2"; + } else if (dataItem.value == 2) { // Vehicule + var iconTpl = "drive_eta"; + } else { // Storage + var iconTpl = "maps_home_work"; + } + return "
    " + iconTpl + $al.model._viewModel.detailTypeOrderCategories[dataItem.value - 1] + "
    "; + } + + + volumeRateTemplate(dataItem) { + + if (dataItem.detailType === 'AIRFREIGHT') { + return "" + kendo.toString(dataItem.volume, "n2") + " m³ (" + kendo.toString(dataItem.weight) + " Kg)"; + } else if (dataItem.detailType === 'CAR') { + return ""; + } else { + return "" + kendo.toString(dataItem.volume, "n2") + " m³"; + } + + } + + currentValueGroupFooterTemplate(e) { + + let warningExecedValue = "warning"; + let sumatoryValue = e["goodsValue.amount"].sum; + let total = 0; + if (e.value === 1) {//Personal belongings limit + var items = e.items; + items.forEach(function (el, idx) { + var totalItem = Number(el.goodsValue.amount); + total += totalItem + }) + if ($al.view.requestCommon._isHodAirOrFutureJobIsNFP() && total <= Number($al.model.appParameters.get("MAX_VALUE_GOODS_PERSONAL_OPT_1"))) { + warningExecedValue = ""; + } else if (!$al.view.requestCommon._isHodAirOrFutureJobIsNFP() && total <= Number($al.model.appParameters.get("MAX_VALUE_GOODS_PERSONAL"))) { + warningExecedValue = ""; + } + + } else if (e.value === 2) { // vehicle limit + total = e["goodsValue.amount"].sum; + + if (total <= Number($al.model.appParameters.get("MAX_VALUE_GOODS_CAR"))) { + warningExecedValue = ""; + } + } else { // Entry into storage TODO not defined yet + total = e["goodsValue.amount"].sum; + + if (total <= Number($al.model.appParameters.get("MAX_VALUE_GOODS_EIS"))) { + warningExecedValue = ""; + } + + + } + + return "
    " + kendo.toString(total, "n2") + " EUR " + warningExecedValue + " "; + + } + + // --- Common functions for Comments in Requests ------------- + + hasDeleteCommentsPermission() { + return $al.model.permissions.canDeleteComments; + } + + requestCommentTemplate(comment) { + + let name_initials = $al.view.requestCommon.extractNameAndInitials(comment.authorName); + + let bgcolor = $al.view.requestCommon.getLightColorForId(comment.creationActor ? comment.creationActor.id : 0); + + let commentText = comment.commentText ? $al.view.requestCommon.escapeHtml(comment.commentText) : ""; + + let template = '
    '; + template += '
    ' + name_initials[1] + '
    '; + template += '
    '; + template += '
    ' + $al.view.requestCommon.escapeHtml(name_initials[0]) + ' ' + $al.view.requestCommon.getDateSuffix(comment) + '
    '; + template += '

    ' + commentText + '

    '; + template += '
    '; + template += '
    '; + return template; + } + + deleteCommentTemplate(comment) { + // Here we decide if the delete button is visible or not + let delete_visible = $al.model._viewModel.canDeleteComments; + let template = '
    '; + if (delete_visible) { + let comment_id = comment.id; + template += ''; + } + template += '
    '; + return template; + } + + getLightColorForId(id) { + + var value = typeof id === 'number' ? id : 999; + value = (value*39) % 360; + // Here, value is pseudo-random (0-359), based on the ID + // 'value' is used for hue, and s=50%, l=80% create light, pastel colors: + return 'hsl('+ value +',50%,80%)'; + } + + extractNameAndInitials(value) { + + if (!value || value.length == 0) { + return ["??", "??"]; + } + + var parts = value.split(' ('); + if (parts.length == 2 && parts[1].length == 3) { + return [ parts[0], parts[1].substring(0,2) ]; + } + // Unexpected/old format: leave value as is, and get 2 initials: + parts = value.split(' '); + if (parts.length > 1) { + return [ value, (parts[0].substring(0,1).toUpperCase() + parts[1].substring(0,1).toUpperCase()) ]; + } else { + return [ value, value.substring(0,2).toUpperCase() ]; + } + } + + getDateSuffix(comment) { + const creation_date = comment.creationActor.instant; + const date_string = new Date(creation_date).toLocaleString('en-US', { month: 'short', day: '2-digit', year: 'numeric' }); + const time_string = new Date(creation_date).toTimeString().substring(0, 5); + return ' —  ' + date_string + ' at ' + time_string + ''; + } + + escapeHtml(unsafe) { + return unsafe + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'"); + } + + processAddComment() { + const comment_text = $("#request-add_comment-textarea").val(); + if (comment_text == null || comment_text.trim() === '') { + $al.view.requestCommon._validateCommentText(); + return; + } + $al.view.requestCommon._addRequestComment(comment_text); + $("#request-add_comment-textarea").val(''); + $(".addComment-wrapper.noCommentYet").removeClass('noCommentYet'); + } + + + _validateCommentText() { + let message_to_show = "Please enter a comment before saving"; + // Force open the text area + $al.model._viewModel.set("showCommentButton", false); + + $al.view.requestCommon._scrollToBottom(); + + var validator = $('#request-comment-input-container').kendoValidator({ + rules: { the_rule: input => { return false; } }, + messages: { the_rule: message_to_show } + }).data("kendoValidator"); + validator.validate(); + } + + _scrollToBottom() { + setTimeout(function() { window.scrollTo(0, document.body.scrollHeight); }, 500); + } + + _addRequestComment(comment_text) { + $al.model.requestCommon._restCalls.addRequestComment.execute( + {requestId: $al.model.request.id}, + { commentText: comment_text }, + $al.view.requestCommon._reloadRequestComments); + $al.model._viewModel.set("showCommentButton", true); + } + + processCancelComment() { + $al.model._viewModel.set("showCommentButton", true); + $("#request-add_comment-textarea").val(''); + } + + _getCommentsDatasource(comments_list) { + return new kendo.data.DataSource({ + data: comments_list, + schema: { model: { id: "id", fields: { + id: {type: "number", nullable: false}, + authorName: {type: "string"}, + commentText: {type: "string"} + } } } + }); + } + + _onCommentsData(endpoint_response) { + $al.model.requestComments = endpoint_response; + var ds = $al.view.requestCommon._getCommentsDatasource(endpoint_response); + $al.view._elements.comments.grid.data.component.setDataSource(ds); + } + + deleteRequestComment(comment_id) { + $al.model.requestCommon._restCalls.deleteComment.execute({commentId: comment_id}, null, null, null, $al.view.requestCommon._reloadRequestComments); + } + + _reloadRequestComments() { + $al.model.requestCommon._restCalls.getRequestComments.execute({requestId: $al.model.request.id}, null, $al.view.requestCommon._onCommentsData); + } + + _thereAreComments(while_validating) { + // We are validating, so we check the datasource (may have changed since initial loading of page) + if (while_validating) { + return $al.view._elements.comments.grid.data.component.dataSource.total() > 0; + } else { + // We are not validating, this is used in the first loading of the page + return $al.model.requestComments && $al.model.requestComments.length > 0; + } + } + + _renderCommentsGrid() { + + var dataSource = $al.view.requestCommon._getCommentsDatasource($al.model.requestComments); + var columns_desc = [ + { + width: "85%", + attributes: { "class": "font-weight-medium", "style": "border-bottom: 0px" }, + template: $al.view.requestCommon.requestCommentTemplate + }, + { + width: "15%", + attributes: { "class": "font-weight-medium", "style": "border-bottom: 0px" }, + template: $al.view.requestCommon.deleteCommentTemplate + } + ]; + + $al.view._elements.comments.grid.data.element.kendoGrid({ + dataSource: dataSource, + scrollable: false, + noRecords: { + template: function(e){ + $(".addComment-wrapper").addClass('noCommentYet'); + return "

    No comments yet.

    " + } + }, + sortable: true, + // dataBound: $al.view._onDataBound, + columns: columns_desc, + autoBind: true + }); + $al.view._elements.comments.grid.data.component = "kendoGrid"; + // Clean grid: No header + $(".comments-grid thead").css("display", "none"); + } + + showMissingCommentMessage() { + let message_to_show = "Please, justify if you reject the request."; + // Force open the text area + $al.model._viewModel.set("showCommentButton", false); + + $al.view.requestCommon._scrollToBottom(); + + // Silly validator that always fails, just to trigger the red error message under the input text area. + if($al.model.request.requestType === 'TudRequest'){ + message_to_show = 'Please, justify if you refuse a claim or reject the request.'; + } + var validator = $('#request-comment-input-container').kendoValidator({ + rules: { the_rule: input => { return false; } }, + messages: { the_rule: message_to_show } + }).data("kendoValidator"); + validator.validate(); + } + + showCommentsFieldMessage(message_to_show) { + // Force open the text area + $al.model._viewModel.set("showCommentButton", false); + + $al.view.requestCommon._scrollToBottom(); + + var validator = $('#request-comment-input-container').kendoValidator({ + rules: { the_rule: input => { return false; } }, + messages: { the_rule: message_to_show } + }).data("kendoValidator"); + validator.validate(); + } + + // --------------------------------------------------------- + + + proformaAmountEditor(container, options) { + $('') + .appendTo(container) + .kendoNumericTextBox({ + format: "##.##", + decimals: 2, + spinners: false, + placeholder: "0" + }); + } + _logiForShowingPaymentInfo(){ + if (typeof $al.model._viewModel.request.p2pHubOrderStatus !== 'undefined' || typeof $al.model._viewModel.request.paymentDirectiveReference !== 'undefined' || typeof $al.model._viewModel.request.p2pHubOrderId !== 'undefined') { + $al.model._viewModel.showPaymentInfoP2P = true; + } + + if($al.model._viewModel.request.abacWorkflowState){ + $al.model._viewModel.showPaymentInfoABAC = true; + } + + this._logicForP2pOrderLink(); + + } + _logicForP2pOrderLink() { + if ( + $al.model.allOrderResposes !== undefined && + Array.isArray($al.model.allOrderResposes) && + $al.model.allOrderResposes.length > 0 + ) { + $al.model._viewModel.linkToP2pOrder = + $al.model.appParameters.get("P2P_ORDER_URL"); + } + $al.model._viewModel.linkToSummaPaymentDirective = + $al.model.appParameters.get("SUMMA_PAYMENT_DIRECTIVE_URL"); + } + _isHodAirOrFutureJobIsNFP() { + //if return false we use prorata formula + //if return false we use volume storge + // if return true we do no use prorata and use airfright volume + if($al.model.movementFile.movementContext.name == 'CRISIS'){ + if ($al.view.requestCommon.isAir()) { + return true; + }else{ + return false; + } + + + }else{ + //normal movement file + if ($al.view.requestCommon.isHODAir()) { + return true; + } + if ( $al.view.requestCommon.isHOD() ) { + return false; + } + if (!$al.model.movementFile.jobToFamilyPosting) { + return true; + } + return false; + } + + return false; + + + + + } + + isHOD() { + return (typeof $al.model.request.declaration.hodOption != "undefined" ); + } + + isHODAir() { + return (typeof $al.model.request.declaration.hodOption != "undefined" && $al.model.request.declaration.hodOption == "AIR_WITH_EIS"); + } + isAir() { + return ( $al.model.request.declaration.hodOption == "AIR_WITH_EIS"); + } + + groupFooterVolumeFunction(e) { + let warningExecedVolume = ""; + let totalKg; + + if (e.value === 2) { // in vehicle we do not show grouptemplate + return ""; + } else if (e.value === 1) {//Personal Belongings + let sumLimit = Number(Number(e.aggregates.volume.sum).toFixed(2)); + let limitWithMargin = 0; + if ($al.view.requestCommon._isHodAirOrFutureJobIsNFP() + && $al.model.request.kgAirFreightCeiling != undefined) { + limitWithMargin = Number( + Number($al.model.request.kgAirFreightCeiling) * Number( + $al.model.appParameters.get("KGtoM3"))).toFixed(2); + } else { + limitWithMargin = Number( + Number($al.model.maximunVolume).toFixed(2)); // margin to solve the wrong calculation, as we use 166.666 ans it should be 167 as the policy says + } + if (sumLimit > limitWithMargin || limitWithMargin === 0) { + + if ($al.view.requestCommon._isHodAirOrFutureJobIsNFP()) { + + totalKg = Number(e.aggregates.volume.sum) * Number($al.model.appParameters.get("M3toKG_ALERT") ) ; + + warningExecedVolume = "warning"; + } else { + warningExecedVolume = "warning"; + } + } + } else if (e.value === 3) { + if (Number(e.aggregates.volume.sum) > Number($al.model.appParameters.get("MAXIMUM_VOLUME_STORAGE"))) { + warningExecedVolume = "warning"; + } + } + let returnString = "" + kendo.toString(e.aggregates.volume.sum, "n2") + " m³"; // add volume for all + returnString += totalKg ? " (" + kendo.toString(totalKg, "n2") + " Kg)" : ""; //if totalkg defined it means AIRFIRGHT , we show kilos + returnString += warningExecedVolume + " "; // add warning + return returnString; + + } + + + footerDetailTotalAmountEurFunction(e, invoice) { + var total = 0; + var items = e.items; + + // This will be the warning message to be displayed if the Ceiling is exceeded (this message will take precedence) + // or the prorata function has limited the amount. + let warningCeilingOrProrata = ""; + let ceilingToExceed = 0; + + var prorataResult = {}; + + // For Personal Belongings, we use the prorata formula to compute the total: + if (e.value === 1) { + + // === Personal Belongings + var _surfaceVol = 0, _surfaceCost = 0, _airfreightVol = 0, _airfreightCost = 0, _airfreightKg = 0; + items.forEach(function (dataItem) { + // Accumulate values + if (dataItem.detailType === 'SURFACE') { + _surfaceVol += Number(dataItem.volume); + // The value "dataItem.amount.amount" is not available yet: + if (invoice) { + _surfaceCost += Number(dataItem.invoice.amount) / Number(dataItem.exchangeRate); + } else { + _surfaceCost += Number(dataItem.proforma.amount) / Number(dataItem.exchangeRate); + } + + } else { + if (dataItem.detailType === 'AIRFREIGHT') { + _airfreightVol += Number(dataItem.volume); + // The value "dataItem.amount.amount" is not available yet: + if (invoice) { + _airfreightCost += Number(dataItem.invoice.amount) / Number(dataItem.exchangeRate); + } else { + _airfreightCost += Number(dataItem.proforma.amount) / Number(dataItem.exchangeRate); + } + _airfreightKg += Number(dataItem.weight); + } + } + }); + // Call prorata function + prorataResult = $al.view.requestCommon.personalBelongingsProrataTotalAmount(_surfaceVol, _surfaceCost, _airfreightVol, _airfreightCost, _airfreightKg); + // prorataResult.applied tells if the prorata function has limited the amount + total = prorataResult.amount; + + + } else { + // -- Other cases: normal summatory for the total + items.forEach(function (el, idx) { + var totalItem = 0; + if (invoice) { + totalItem = el.invoice.amount / el.exchangeRate; + } else { + totalItem = el.proforma.amount / el.exchangeRate; + } + total += totalItem + }); + } + + + total = Number(total); + let sectionTotal = total; + let ceilingToAdd = $al.model.entMax.filter(item => item.type === e.detailType); + e.sectionTotal = total; + if (e.value === 1) { //Personal Belongings + $al.model._viewModel.request.sumOfSectionsTotalPersonal = 0; + + // We set the warning message for the prorata if the function actually limited the value + // (might be overwritten by the ceiling warning) + if (prorataResult.applied) { + warningCeilingOrProrata = "warning"; + } + + if ($al.view.requestCommon._isHodAirOrFutureJobIsNFP()) { // when future job is not family we take AIRFREIGHT else we take SURFACE, also we check jobto is defined for EOC MF + ceilingToExceed = $al.model.entMax.filter(item => item.type === "AIRFREIGHT")[0]; + } else { + ceilingToExceed = $al.model.entMax.filter(item => item.type === "SURFACE")[0]; + } + if (typeof ceilingToExceed != "undefined" && Number(ceilingToExceed.value.amount) < total) { + warningCeilingOrProrata = "warning"; + total = ceilingToExceed.value.amount; + + e.sectionTotal = ceilingToExceed.value.amount; + } + $al.model._viewModel.request.sumOfSectionsTotalPersonal = total; + + } else if (e.value === 2) { //Vehicle + $al.model._viewModel.request.sumOfSectionsTotalVehicle = 0; + ceilingToExceed = $al.model.entMax.filter(item => item.type === "CAR")[0]; + if (Number(ceilingToExceed.value.amount) < total) { + warningCeilingOrProrata = "warning"; + total = ceilingToExceed.value.amount; + + e.sectionTotal = ceilingToExceed.value.amount; + } + $al.model._viewModel.request.sumOfSectionsTotalVehicle = total; + } else { + $al.model._viewModel.request.sumOfSectionsTotalStorage = 0; + ceilingToExceed = $al.model.entMax.filter(item => item.type === "STORAGE")[0]; + if (typeof ceilingToExceed.value == "undefined") { + warningCeilingOrProrata = "warning"; + } else if (Number(ceilingToExceed.value.amount) < total) { + warningCeilingOrProrata = "warning"; + total = ceilingToExceed.value.amount; + e.sectionTotal = ceilingToExceed.value.amount; + } + $al.model._viewModel.request.sumOfSectionsTotalStorage = total; + } + + return "
    " + kendo.toString(total, "n2") + " EUR " + warningCeilingOrProrata + "
    "; + } + + sumRemovalInvoicesSubtotals() { + if (typeof $al.model._viewModel.request.sumOfSectionsTotalPersonal == "undefined") { + $al.model._viewModel.request.sumOfSectionsTotalPersonal = 0; + } + if (typeof $al.model._viewModel.request.sumOfSectionsTotalVehicle == "undefined") { + $al.model._viewModel.request.sumOfSectionsTotalVehicle = 0; + } + if (typeof $al.model._viewModel.request.sumOfSectionsTotalStorage == "undefined") { + $al.model._viewModel.request.sumOfSectionsTotalStorage = 0; + } + + return Number($al.model._viewModel.request.sumOfSectionsTotalPersonal) + Number($al.model._viewModel.request.sumOfSectionsTotalVehicle) + Number($al.model._viewModel.request.sumOfSectionsTotalStorage); + } + + sumSubtotals() { + if (typeof $al.model._viewModel.request.sumOfSectionsUnforeseenAmount == "undefined") { + $al.model._viewModel.request.sumOfSectionsUnforeseenAmount = 0; + } + + return this.sumRemovalInvoicesSubtotals() + Number($al.model._viewModel.request.sumOfSectionsUnforeseenAmount); + } + + + // Show dialog to edit Abac info + showEditAbacInfoDialog() { + + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.edit_abac_info_title, + $al.view.requestCommon._templates.edit_abac_info.dialog.body.template({}), + $al.view.requestCommon._templates.save_cancel.dialog.footer.template({ ok_callback: '$al.controller.requestCommon.validateAndUpdateAbacInfo()' }) + ); + + $al.model._viewModel.request._editAbacInfo_paymentOrder = $al.model._viewModel.request.paymentOrder; + $al.model._viewModel.request._editAbacInfo_paymentRequest = $al.model._viewModel.request.paymentRequest; + $al.model._viewModel.request._editAbacInfo_paymentDate = $al.model._viewModel.request.paymentDate; + + $al.view.requestCommon._elements.edit_abac_info_payment_date.data.element.kendoDatePicker({ + value: new Date(), + parseFormats: ["yyyy-MM-dd"] + + }); + kendo.bind("#abac_info_data", $al.model._viewModel.request); + } + _setCanRejectPaidType2(boolean_value) { + // Set value of 'canReject' + const viewModel = $al.model._viewModel; + const request = viewModel.request; + + let canReject = false; + + if (boolean_value) { + if(typeof request.abacRequestState !== "undefined" && request.abacRequestState === 'MANUAL_PAYMENT_SUMMA' ){ + canReject = true; + }else if (typeof request.p2pHubOrderStatus !== "undefined") { + // p2pHubOrderStatus has priority + canReject = request.p2pHubOrderStatus === 'REJ' || request.p2pHubOrderStatus === 'ERR' ; + } else if (typeof request.abacWorkflowState !== "undefined") { + // fallback only if p2pHubOrderStatus is NOT defined + canReject = request.abacWorkflowState === 'CLO100' || request.abacWorkflowState === 'CLO0'; + } + } + + viewModel.canReject = canReject; + if (canReject === true) { + viewModel.showActionsBox = true; + } + } + +} + +class RequestCommonController { + + validateAndUpdateAbacInfo() { + if ($al.view.requestCommon._elements.edit_abac_info_payment_order.data.element.val() !== "") { + $al.model._restCalls.validatePaymentOrder.execute({orderId: $al.view.requestCommon._elements.edit_abac_info_payment_order.data.element.val()}, null, $al.controller.requestCommon._onDataRetrievedValidatePaymentOrder); + } else { + var validator = $("#abac_info_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + paymentDateInvalid: input => { + if (input.is("[name=" + $al.view.requestCommon._elements.edit_abac_info_payment_date.id + "]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentDateInvalid: "Invalid format of Payment Date", + } + }).data("kendoValidator"); + validator.validate(); + } + } + + _onDataRetrievedValidatePaymentOrder(data) { + const validator = $("#abac_info_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + invalidFormat: input => { + if (input.attr('required')) { + return input.val().length === input.val().trim().length; + } else { + return true; + } + }, + paymentDateInvalid: input => { + if (input.is("[name=" + $al.view.requestCommon._elements.edit_abac_info_payment_date.id + "]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + paymentOrderInvalid: input => { + if (input.is("[name=" + $al.view.requestCommon._elements.edit_abac_info_payment_order.id + "]") && !data) { + return false; + } else { + return true; + } + } + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentDateInvalid: "Invalid format of Payment Date", + paymentOrderInvalid: "Payment Order invalid", + invalidFormat: "Invalid format: remove spaces" + } + }).data("kendoValidator"); + if (validator.validate()) { + $al.model.requestCommon.prepareRequestForMarkAsPaidFromCommon(); + $al.controller.requestCommon.doUpdateAbacInfo(); + $a.modalDialog.hide(); + } + } + + doUpdateAbacInfo() { + // Format date for end-point + var text_date = null; + if (typeof $al.model._viewModel.request._editAbacInfo_paymentDate === 'string') { + // If it's already a string, it does not need to be formatted + text_date = $al.model._viewModel.request._editAbacInfo_paymentDate; + } else { + text_date = $a.utils.toLocalDateISO($al.model._viewModel.request._editAbacInfo_paymentDate); + } + + // Call the end-point + $al.model.requestCommon._restCalls.updateAbacPaymentInfo.execute( + { requestId: $requestId }, // URL param + null, + { requestNumber: $al.model._viewModel.request._editAbacInfo_paymentRequest, // Body + orderNumber: $al.model._viewModel.request._editAbacInfo_paymentOrder, + invoiceDate: text_date }, + $al.controller.requestCommon._updateAbacInfoDone); + } + + _updateAbacInfoDone(response) { + + // Updated correctly + // Show toast + $a.toast.showSuccess($al.controller._languageBundle.alerts.abac_payment_info_updated_success); + $a.loading.toggle(false); + // Refresh page + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewRequest, null, {requestId: $requestId , + requestType: $al.model.request.requestType, + movementFileId: $movementFileId })); + } + + + + + _createEntMaxList() { + let maxCatList = $al.model.request.entitlementTypeCat.entitlementMaxCatList; + return maxCatList + // Sorting the ceiling amounts using the 'order' field, to be consistent with the order in the 'Entitlements' tab + // which comes already sorted from the webservice. + .sort(function (a, b) { + return a.order - b.order; + }) + .map(m => { + if (m.code === 'SURFACE' && typeof $al.model.request.surfaceRate != 'undefined') { + return { + description: m.description, + value: $al.model.request.surfaceRate, + type: m.code, + enable: true + } + } else if (m.code === 'CAR' && typeof $al.model.request.carRate != 'undefined') { + return { + description: m.description, + value: $al.model.request.carRate, + type: m.code, + enable: true + } + } else if (m.code === 'AIRFREIGHT' && typeof $al.model.request.airfreightRate != 'undefined') { + return { + description: m.description, + value: $al.model.request.airfreightRate, + type: m.code, + enable: true, + kgAirFreightCeiling: (typeof $al.model.request.kgAirFreightCeiling === "undefined") ? null : $al.model.request.kgAirFreightCeiling + } + } else if (m.code === 'STORAGE' && typeof $al.model.request.entryIntoStorage !== "undefined") { + return { + description: m.description, + value: $al.model.request.storageRate, + type: m.code, + enable: $al.model.request.entryIntoStorage, + cityForEIS: (typeof $al.model.request.city === "undefined") ? "No city" : $al.model.request.city.name, + countryForEIS: (typeof $al.model.request.country === "undefined") ? "No country" : $al.model.request.country.name, + } + } + }).filter(item => item !== undefined); + } + + prepareRequestForModelView(){ + let creationInstant = Date.now().toString(); + if(typeof $al.model.request.creationActor != 'undefined'){ + creationInstant = $al.model.request.creationActor.instant; + } + + let requestCreateDate = kendo.toString(kendo.parseDate(creationInstant), "MMM") + " " + kendo.toString(kendo.parseDate(creationInstant), "dd") + ", " + kendo.toString(kendo.parseDate(creationInstant), "yyyy") + " at " + kendo.toString(kendo.parseDate(creationInstant), "t"); + $al.model.request.requestCreateDate = requestCreateDate; + + + //logic to display the abacWorkflowState + + $al.model.request.abacWorkflowStateFrontEnd = $al.model.request.abacWorkflowState; + if($al.model.request.abacRequestState == 'FAILED' || typeof $al.model.request.abacRequestState == 'undefined' ) { + $al.model.request.abacWorkflowStateFrontEnd = $al.model.request.abacRequestState; + } + + //logic to display the p2pHubOrderStatus + + const excludedStatuses = ["ERR", "REJ"]; + + if (typeof $al.model.request.p2pHubOrderStatus !== 'undefined' && !excludedStatuses.includes($al.model.request.p2pHubOrderStatus)) { + $al.model.request.p2pHubOrderStatusFrontEnd = true; // in INIT,VERIF,EXEC,SENT_TO_P2P,"SUCCESS" + } else { + $al.model.request.p2pHubOrderStatusFrontEnd = false; + } + + + return $al.model.request; + } + + + + + setTopupPermission(isBackoffice,_movFileFrozen) { + + if($al.model._viewModel.request.abacWorkflowState == "CLO100" || $al.model._viewModel.request.p2pHubOrderStatus == "SUCCESS" + || ( $al.model._viewModel.request.abacRequestState === "MANUAL_PAYMENT_SUMMA" + && $al.model._viewModel.request.paymentDirectiveReference != null)){ + $al.model._viewModel.canCreateTopupRequest = $al.model.permissions.isOwner || $al.model.permissions.canApproveTopUpRequest; + if($al.model._viewModel.canCreateTopupRequest) + $al.model._viewModel.showActionsBox = !_movFileFrozen; + } + + if ( $al.model.request.children.length > 0 ) { + $al.model._viewModel.displayChildrenRequest = true; + } + + if (isBackoffice) { + // RIGD-2249 + + + } else { + + + } + + } + + + setTopupPermissionByDisableFrontOffice(isBackoffice, _movFileFrozen) { + + if($al.model._viewModel.request.abacWorkflowState == "CLO100" || $al.model._viewModel.request.p2pHubOrderStatus == "SUCCESS" + || ( $al.model._viewModel.request.abacRequestState === "MANUAL_PAYMENT_SUMMA" + && $al.model._viewModel.request.paymentDirectiveReference != null)){ + $al.model._viewModel.canCreateTopupRequest = $al.model.permissions.isOwner || $al.model.permissions.canApproveTopUpRequest; + if($al.model._viewModel.canCreateTopupRequest) + $al.model._viewModel.showActionsBox = !_movFileFrozen; + } + + if ( $al.model.request.children.length > 0 ) { + $al.model._viewModel.displayChildrenRequest = true; + } + + if (isBackoffice) { + + }else{ + $al.model._viewModel.canCreateTopupRequest = false; + } + } + + + modelPermissionsCommon() { + + + if ($al.model._viewModel.isBackOffice) { //BACK OFFICE permissions + //Permission to show buttons, in case of needing a security checker I do it here instead of a template + //TODO to move to pay when finish testing + // This determines if the refresh button (circular arrows) is visible + // The MF must be not frozen (not cancelled or completed) + $al.model._viewModel.canRefreshP2pInfo = + $al.model._viewModel.movFileFrozen === false && + ($al.model._viewModel.request.state === 'PAID' || $al.model._viewModel.request.state === 'SENT_TO_P2P') && + // Here we use the same flags 'canPay...Request' that are used in the various Request types, + // Maybe will have to change this if those flag names are changed in Back-end + (($al.model.request.requestType === 'TudRequest' && $al.model.permissions.canPayTudRequestAbac) + || + ($al.model.request.requestType === 'TopUpRequest' && $al.model.permissions.canPayTopUpRequestAbac) + || + ($al.model.request.requestType !== 'TudRequest' && $al.model.permissions.canPayRemRequestAbac)); + + // EDIT button to edit Abac info (Request number, Order Number and Date) + // Also: MF not frozen + $al.model._viewModel.canEditP2PInfo = + $al.model._viewModel.movFileFrozen === false + && + ($al.model._viewModel.request.p2pHubOrderStatus === 'ERR' || + $al.model._viewModel.request.p2pHubOrderStatus === 'REJ') + && + (($al.model.request.requestType === 'TudRequest' && $al.model.permissions.canPayTudRequestManually) + || ($al.model.request.requestType === 'TopUpRequest' && $al.model.permissions.canPayTopUpRequestManually) + || ($al.model.request.requestType !== 'TudRequest' && $al.model.permissions.canPayRemRequestManually)) + ; + + $al.model._viewModel.canEditAbacInfo = + $al.model._viewModel.movFileFrozen === false + && + ($al.model._viewModel.request.abacWorkflowStateFrontEnd === 'CLO0' || + $al.model._viewModel.request.abacWorkflowStateFrontEnd === 'FAILED') + && + (($al.model.request.requestType === 'TudRequest' && $al.model.permissions.canPayTudRequestManually) + || ($al.model.request.requestType === 'TopUpRequest' && $al.model.permissions.canPayTopUpRequestManually) + || ($al.model.request.requestType !== 'TudRequest' && $al.model.permissions.canPayRemRequestManually)) + ; + + } + + + } + + + doRefreshP2pInfoAndRefresh() { + $a.loading.toggle(true); + $al.model.requestCommon._restCalls.refreshP2pStateForRequest.execute({requestId: $requestId}, null,null,$al.controller.requestCommon.refreshPage); + + } + refreshPage() { + $a.loading.toggle(false); + + const params = {}; + + if (typeof $requestId !== "undefined") { + params.requestId = $requestId; + } + + if (typeof $al?.model?.request?.requestType !== "undefined") { + params.requestType = $al.model.request.requestType; + } + + if (typeof $movementFileId !== "undefined") { + params.movementFileId = $movementFileId; + } + + $a.navigation.navigateTo( + $a.utils.formatUrl($al.model.urls.action.viewRequest, null, params) + ); + } + + + + //Mark as paid common + + //update request and call _updateRequestMarkAsPaidResponse to update status + doUpdateAndMarkAsPaidRequest() { + $al.model._restCalls.markAsPaid.execute(null, null, $al.model._viewModel.request, $al.controller.requestCommon._updateRequestMarkAsPaidResponse,null,null,true); + } + + + //update status to MARK_PAID and call _markAsPaidResponse + _updateRequestMarkAsPaidResponse(data) { + console.log("data",data); + $al.controller.requestCommon.doRefreshP2pInfoAndRefresh(); + } + + //Show confirmation message and refresh front end + _markAsPaidResponse() { + + $a.toast.showSuccess($al.controller._languageBundle.alerts.mark_as_paid_request_success); + $a.loading.toggle(false); + $al.controller.requestCommon.refreshPage(); + + } + + // Top-up requests + createTopupRequest( parent_id, parent_type ) { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.requestCommon.urls.action.viewTopupRequest, null, + { parentRequestId: parent_id, parentRequestType: parent_type } )); + } + + downloadZipfile( request_id ) { + $a.navigation.open($a.utils.formatUrl($al.model.requestCommon.urls.action.downloadZipfile, {requestId: request_id}, null), "_self"); + //$al.model.requestCommon._restCalls.downloadZipfile.execute({requestId: request_id}, null,null,null); + } + +} + +let $_mvcSections = new Map(); + +function _registerMVCSection(id, model, view, controller) { + + $_mvcSections.set(id, { + model: model, + view: view, + controller: controller + }); + + +} + +_registerMVCSection("requestCommon", RequestCommonModel, RequestCommonView, RequestCommonController); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/request.status.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/request.status.js new file mode 100644 index 0000000..dc9c562 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/request.status.js @@ -0,0 +1,91 @@ +class RequestStatus { + + constructor() { + this._approved = {code: "APPROVED", label: null}; + this._awaiting = {code: "AWAITING", label: null}; + this._draft = {code: "DRAFT", label: null}; + + this._rejected = {code: "REJECTED", label: null}; + this._paid = {code: "PAID", label: null}; + this._sent_to_p2p = {code: "SENT_TO_P2P", label: null}; + + this._start = {code: "START", label: null}; + this._disputed = {code: "DISPUTED", label: null}; + this._closed = {code: "CLOSED", label: null}; + this._clo100 = {code: "CLO100", label: null}; + this._clo10 = {code: "CLO10", label: null}; + this._pending3 = {code: "PENDING3", label: null}; + } + + get APPROVED() { + return $requestStatus._approved; + } + + get AWAITING() { + return $requestStatus._awaiting; + } + + get DRAFT() { + return $requestStatus._draft; + } + + get REJECTED() { + return $requestStatus._rejected; + } + + get PAID() { + return $requestStatus._paid; + } + + get SENT_TO_P2P() { + return $requestStatus._sent_to_p2p; + } + + get START() { + return $requestStatus._start; + } + + get DISPUTED() { + return $requestStatus._disputed; + } + + get CLOSED() { + return $requestStatus._closed; + } + + get CLO100() { + return $requestStatus._clo100; + } + + get CLO10() { + return $requestStatus._clo10; + } + + get PENDING3() { + return $requestStatus._pending3; + } + + _onReady() { + $a.languageBundle.retrieve($requestStatus._onLanguageBundleReady, "common.messages.e-rights", "e_rights.movement_files.status", false); + } + + _onLanguageBundleReady(languageBundle) { + $requestStatus._approved.label = languageBundle.approved; + $requestStatus._awaiting.label = languageBundle.awaiting; + $requestStatus._draft.label = languageBundle.draft; + $requestStatus._rejected.label = languageBundle.rejected; + $requestStatus._paid.label = languageBundle.paid; + $requestStatus._sent_to_p2p.label = languageBundle.sent_to_p2p; + $requestStatus._start.label = languageBundle.start; + $requestStatus._disputed.label = languageBundle.disputed; + $requestStatus._closed.label = languageBundle.closed; + $requestStatus._clo100.label = languageBundle.clo100; + $requestStatus._clo10.label = languageBundle.clo10; + $requestStatus._pending3.label = languageBundle.pending3; + $al.notifyOnReadyComplete($requestStatus); + } + +} + +const $requestStatus = new RequestStatus(); +$al.registerOnReadyListener($requestStatus); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/resettlement/edit/resettlement.controller.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/resettlement/edit/resettlement.controller.js new file mode 100644 index 0000000..add0922 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/resettlement/edit/resettlement.controller.js @@ -0,0 +1,513 @@ +class ResettlementRequestController { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.controller(); + }); + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, + "common.messages.e-rights", "e_rights.requests", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + + $al.model.init(); + $al.notifyOnReadyMvc(); + } + + doApproveRequest() { + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: $al.model.resettlementEvents.Approve + }, null, null, $al.controller._approveResponse); + + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + _approveResponse(data) { + $a.toast.showSuccess( + $al.controller._languageBundle.alerts.approve_and_save_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doPay() { /* from APPROVED to PAID */ + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: $al.model.resettlementEvents.MarkPaid + }, null, null, $al.controller._payResponse); + + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + doPayWithSysper() { + $a.loading.toggle(true); + $al.model._restCalls.payInSysper.execute({requestId: $requestId}, null, + null, + null, $al.controller._payInSysperResponse, null, null); + setTimeout(() => { + $a.loading.toggle(false); + if ($al.view.isEmpty($al.model._viewModel.request.paymentId) || + $al.view.isEmpty($al.model._viewModel.request.paymentEventId)) { + $a.toast.showWarning( + 'Payment is still in progress. Please wait for a while and then refresh the page'); + } + + }, 60000); + + } + + _payInSysperResponse(data) { + if (data.status === 200) { + $al.controller._payResponse(data); + } else { + $al.controller.showResponseErrorMessage(data); + } + } + + showResponseErrorMessage(data){ + const validationErrors = $al.controller._extractMessagesFromErrorResponse( + data); + $a.toast.showError(validationErrors); + } + + _extractMessagesFromErrorResponse(response) { + + const text = response.responseText; + let textObj = null; + try { + textObj = JSON.parse(text); + } catch (parseExc) { + } + const messages = []; + if (textObj && textObj.items && textObj.items.length > 0) { + textObj.items.forEach(item => { + messages.push(item.message); + }); + return messages; + } else { + return [text]; + } + } + + _payResponse(data) { + $a.toast.showSuccess( + $al.controller._languageBundle.alerts.pay_request_success); + $al.model.refreshAfterUpdateState(data); + } + + doRejectRequest() { + if ($al.view._validateComments( + $al.controller._languageBundle.alerts.resettlement.justification_is_mandatory_to_reject_resettlement)) { + if ($al.model._viewModel.request.state + === $al.model.resettlementStates.Awaiting) { + $al.view._saveOrUpdateIndemnity(); + $al.view.mapRequestAttachments(); + } else if ($al.model._viewModel.request.state + === $al.model.resettlementStates.Approved) { + $al.model.prepareResettlementAttachmentRequest(); + } + // todo update indemnities details before rejection Hema + $al.controller._updateRequest( + (updateData) => { + $a.loading.toggle(false); + $al.controller.doReject(); + }); + } + } + + + doReject() { + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: $al.model.resettlementEvents.Reject + }, null, null, $al.controller._rejectRequestResponse); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + _rejectRequestResponse(data) { + $a.toast.showSuccess( + $al.controller._languageBundle.alerts.reject_request_success); + $al.model.refreshAfterUpdateState(data); + } + + modelPermissions() { + + var _movFileFrozen = $al.model.movementFile.state === 'CANCELLED' + || $al.model.movementFile.state === 'COMPLETED'; + let _movFileNotCancelled = $al.model.movementFile.state !== 'CANCELLED'; + + if ($al.model._viewModel.isBackOffice) { //BACK OFFICE permissions + + // Set flag to see the DELETE button in the comments (regardless of state) + $al.model._viewModel.canDeleteComments = $al.view.requestCommon.hasDeleteCommentsPermission(); + + //Permission to show buttons, in case of needing a security checker I do it here instead of a template + if ($al.model._viewModel.request.state === $al.model.resettlementStates.Draft) { + // Show comments section only if there are some. + $al.model._viewModel.commentsVisible = true; + // Cannot add/delete comments + $al.model._viewModel.canAddComments = true; + $al.model._viewModel.isDraft = true; + $al.model._viewModel.canSubmit = $al.model.permissions.canSubmitResettlementRequest; + $al.model._viewModel.canEditAttachments = $al.model._viewModel.canSubmit ; + $al.model._viewModel.showActionsBox = $al.model._viewModel.canSubmit; + $al.model._viewModel.canSave = $al.model._viewModel.canSubmit; + $al.model._viewModel.canDiscard = $al.model._viewModel.canSave; + $al.model._viewModel.canEdit = $al.model._viewModel.canSubmit; + } else if ($al.model._viewModel.request.state === $al.model.resettlementStates.Awaiting) { + $al.model._viewModel.showActionsBox = !_movFileFrozen; + $al.model._viewModel.canApprove = $al.model.permissions.canApproveResettlementRequest; + $al.model._viewModel.canReject = $al.model.permissions.canRejectResettlementRequest; + $al.model._viewModel.isAwaiting = true; + $al.model._viewModel.showDivider = true; + $al.model._viewModel.canSave = $al.model._viewModel.canApprove; + $al.model._viewModel.canEdit = $al.model._viewModel.canApprove; + $al.model._viewModel.enableOriginPeriod = $al.view.enableOriginPeriod() && $al.model._viewModel.canEdit; + } else if ($al.model._viewModel.request.state === $al.model.resettlementStates.Approved) { + $al.model._viewModel.canReject = $al.model.permissions.canRejectResettlementRequest; + $al.model._viewModel.canResetApproval = $al.model.permissions.canResetApprovalResettlementRequest; + $al.model._viewModel.isSysperPayment = $al.controller._isSysperPayment(); + $al.model._viewModel.canMarkAsPaid = $al.model.permissions.canPayManuallyResettlementRequest + && !$al.model._viewModel.isSysperPayment; + $al.model._viewModel.showDivider = true; + $al.model._viewModel.showActionsBox = $al.model._viewModel.canResetApproval || $al.model._viewModel.canReject; + $al.model._viewModel.isAbacPayment = $al.controller._isAbacPayment(); + $al.model._viewModel.canPayWithSysper = $al.model.permissions.canPaySysperResettlementRequest + && !$al.model._viewModel.isAbacPayment; + } else if ($al.model._viewModel.request.state === $al.model.resettlementStates.Rejected) { + $al.model._viewModel.isRejected = true; + $al.model._viewModel.canEditJustification = false; + $al.model._viewModel.canResetToDraft = $al.model.permissions.canResetResettlementRequest; + $al.model._viewModel.showActionsBox = $al.model._viewModel.canResetToDraft; + } else if ($al.model._viewModel.request.state === $al.model.resettlementStates.Paid) { + $al.model._viewModel.canRefreshAbacInfo = $al.model.permissions.canPayManuallyResettlementRequest; + $al.model._viewModel.isAbacPayment = $al.controller._isAbacPayment(); + $al.controller._bindAbacInformation(); + $al.model._viewModel.canResetFromPaid = !$al.model._viewModel.movFileFrozen && $al.model.permissions.canResetApprovalResettlementRequest; + $al.model._viewModel.showActionsBox = $al.model._viewModel.canResetFromPaid; + $al.model._viewModel.isSysperPayment = $al.controller._isSysperPayment(); + $al.model._viewModel.showPaymentInfo = $al.model._viewModel.isSysperPayment || $al.model._viewModel.isAbacPayment; + } + } else { // FRONT OFFICE PERMISSIONS + //Permission to show buttons, in case of needing a security checker I do it here instead of a template + if ($al.model._viewModel.request.state === $al.model.resettlementStates.Draft) { + $al.model._viewModel.commentsVisible = $al.view.requestCommon._thereAreComments( + false); + $al.model._viewModel.isDraft = true; + $al.model._viewModel.canSubmit = $al.model.permissions.canSubmitResettlementRequest + || $al.model.permissions.isOwner; + $al.model._viewModel.canEditAttachments = $al.model._viewModel.canSubmit; + $al.model._viewModel.showActionsBox = $al.model._viewModel.canSubmit + $al.model._viewModel.showDivider = false; + $al.model._viewModel.canSave = $al.model._viewModel.canSubmit; + $al.model._viewModel.canDiscard = $al.model._viewModel.canSubmit; + $al.model._viewModel.canEdit = $al.model._viewModel.canSubmit; + } else if ($al.model._viewModel.request.state === $al.model.resettlementStates.Awaiting) { + $al.model._viewModel.isAwaiting = true; + } else if ($al.model._viewModel.request.state === $al.model.resettlementStates.Rejected) { + $al.model._viewModel.canResetToDraft = $al.model.permissions.canResetResettlementRequest + || $al.model.permissions.isOwner; + $al.model._viewModel.showActionsBox = $al.model._viewModel.canResetToDraft; + } else if ($al.model._viewModel.request.state === $al.model.resettlementStates.Approved) { + + } else if ($al.model._viewModel.request.state === $al.model.resettlementStates.Paid) { + $al.model._viewModel.isAbacPayment = $al.controller._isAbacPayment(); + $al.controller._bindAbacInformation(); + $al.model._viewModel.isSysperPayment = $al.controller._isSysperPayment(); + $al.model._viewModel.showPaymentInfo = $al.model._viewModel.isSysperPayment || $al.model._viewModel.isAbacPayment; + } + } + } + + _doSubmit() { + + if(!$al.view._validateRequestDetails()){ + return; + } + if(!$al.view._validateSupportingDocumentsComments()){ + return; + } + if (!$al.controller._validateSubmitInputs()) { + return; + } + $a.loading.toggle(true); + $al.view.mapRequestAttachments(); + $al.model._restCalls.updateRequest.execute(null, null, + $al.model._viewModel.request, $al.controller._sendSubmitEvent); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + _updateRequest(updateRequestCallBack) { + $a.loading.toggle(true); + $al.model._restCalls.updateRequest.execute(null, null, + $al.model._viewModel.request, updateRequestCallBack); + } + + _submitRequestResponse(data) { + $a.loading.toggle(false); + $a.toast.showSuccess( + $al.controller._languageBundle.alerts.submit_request_success); + $al.model.refreshAfterUpdateState(data); + } + + _sendSubmitEvent(data) { + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: $al.model.resettlementEvents.Submit + }, null, null, $al.controller._submitRequestResponse); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + _validateSubmitInputs() { + + const validation_messages = $al.controller.validatePageSubmitInputs(); + if (validation_messages.length > 0) { + $al.view._showWarnDialog( + $al.controller._languageBundle.validations.form_validation, + validation_messages); + $a.loading.toggle(false); + return false; + } + return true; + } + + validatePageSubmitInputs() { + const messages = []; + const validator = $(".declarationForm").kendoValidator().data( + "kendoValidator"); + if (!validator.validate()) { + messages.push( + $al.controller._languageBundle.validations.submit_resettlement_validation_declaration); + } + + return messages; + } + + _getCities(code) { + + if (code !== "") { + $al.model._restCalls.cities.execute({countryCode: code}, null, + $al.view._loadCitiesData); + } else { + $al.view._elements.resettlement_city.data.element.kendoDropDownList({ + optionLabel: "Select a city", + value: "Select a city" + }); + } + } + + doResetApproval() { /* from APPROVED to AWAITING */ + if ($al.view._validateComments($al.controller._languageBundle.alerts.resettlement.justification_is_mandatory_for_reset_approval)) { + $a.loading.toggle(true); + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: $al.model.resettlementEvents.ResetApproval + }, null, null, (data)=>{ + $a.toast.showSuccess($al.controller._languageBundle.alerts.update_request_success); + $al.model.refreshAfterUpdateState(data); + }); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + } + doResetToDraftRequest() { /* from REJECTED to DRAFT */ + if( $al.model._viewModel.isBackOffice && + !$al.view._validateComments($al.controller._languageBundle.alerts.justification_is_mandatory_for_reset_to_draft)){ + return; + } + $a.loading.toggle(true); + $al.controller._doResetToDraft(); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + doResetPaid() { + if ($al.model._viewModel.isBackOffice && !$al.view._validateComments( + $al.controller._languageBundle.alerts.justification_is_mandatory_for_reset_paid_to_draft)) { + return; + } + $al.controller._doResetPaidToDraft(); + } + + _doResetPaidToDraft() { + $a.loading.toggle(true); + $al.controller._doResetPaidStateToDraft(); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + _doResetPaidStateToDraft() { /* Paid to draft*/ + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: $al.model.resettlementEvents.ResetPaid + }, null, null, $al.controller._resetToDraftResponse); + } + _doResetToDraft() { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: $al.model.resettlementEvents.Resubmit + }, null, null, $al.controller._resetToDraftResponse); + } + _resetToDraftResponse(data) { + $a.toast.showSuccess($al.controller._languageBundle.alerts.resettlement.reset_to_draft_success); + $al.model.refreshAfterUpdateState(data); + } + + _doApprove() { + + if (!$al.view._validateRequestDetails()) { + return; + } + if (!$al.view._validateSupportingDocumentsComments()) { + return; + } + if (!$al.view._validateApprovalInputs()) { + return; + } + + $al.view._saveOrUpdateIndemnity($al.controller._onSaveIndemnityAndApproveRequestCallback); + } + + _onSaveIndemnityAndApproveRequestCallback(data){ + if (data.status === 200) { + $a.loading.toggle(true); + $al.view.mapRequestAttachments(); + $al.model._restCalls.updateRequest.execute(null, null, + $al.model._viewModel.request, $al.controller._sendApproveEvent); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + }else{ + const validationErrors = $al.controller._extractMessagesFromErrorResponse( + data); + $a.toast.showError(validationErrors); + } + } + + _sendApproveEvent(data) { + $al.model._restCalls.changeStateRequest.execute({ + requestId: $requestId, + stateMachineEvent: $al.model.resettlementEvents.Approve + }, null, null, $al.controller._approveRequestResponse); + setTimeout(() => { + $a.loading.toggle(false); + }, 9000); + } + + _approveRequestResponse(data) { + $a.toast.showSuccess( + $al.controller._languageBundle.alerts.resettlement.approve_request_success); + $al.model.refreshAfterUpdateState(data); + } + + _onSaveIndemnity(data) { + if (data.status !== 200) { + const validationErrors = $al.controller._extractMessagesFromErrorResponse( + data); + $a.toast.showError(validationErrors); + } + } + + doShowMarkAsPaidDialog() { + $a.modalDialog.showAnswer(null, + $al.controller._languageBundle.mark_as_paid_extra_data_title, + $al.view._templates.mark_as_paid.dialog.body.template({}), + $al.view._templates.pay_ok_cancel.dialog.footer.template({}) + ); + $al.view._elements.payment_date.data.element.kendoDatePicker({ + value: new Date(), + parseFormats: ["dd/MM/yyyy"] + + }); + kendo.bind("#mark_as_paid_data", $al.model._viewModel.request); + + } + + doValidateAndSubmitMarkAsPaid() { + if ($al.model._viewModel.isLoading + || !$al.view._validateRequiredAndDateFormatOfPaymentDetails()) { + return; + } + $al.model._viewModel.isLoading = true; + $al.model._restCalls.validatePaymentOrder.execute( + {orderId: $al.view._elements.payment_order.data.element.val()}, null, + $al.controller._onDataRetrievedValidatePaymentOrder); + } + + _onDataRetrievedValidatePaymentOrder(data) { + if ($al.view._validatePaymentOrder(data)) { + $al.model.requestCommon.prepareRequestForMarkAsPaid(); + $al.controller._doUpdateAndMarkAsPaidRequest(); + $a.modalDialog.hide(); + }else{ + $al.model._viewModel.isLoading = false; + } + } + + _bindAbacInformation() { + if ($al.model._viewModel.isAbacPayment && + $al.model._viewModel.request.state + === $al.model.resettlementStates.Paid) { + $al.model._viewModel.showPaymentInfo = true; + $al.model._viewModel.showPaymentAbacInfoLink = $al.model._viewModel.isBackOffice; + $al.model._viewModel.requestPaymentDateFormatted = kendo.toString( + kendo.parseDate($al.model.request.paymentDate), 'MMM dd, yyyy'); + } + } + + _doUpdateAndMarkAsPaidRequest() { + $al.model.prepareResettlementAttachmentRequest(); + $al.model._restCalls.updateRequest.execute(null, null, + $al.model._viewModel.request, $al.controller.requestCommon._updateRequestMarkAsPaidResponse, + null, null, true); + } + + doShowAbacInfo() { + $a.navigation.navigateTo( + $a.utils.formatUrl($al.model.urls.action.showAbacInfo, null, + { + requestId: $requestId, + requestType: "ResettlementRequest", + movementFileId: $al.model.movementFile.id + }) + ); + } + + _isAbacPayment(){ + return $al.model._viewModel.request.paymentRequest && + $al.model._viewModel.request.paymentOrder && + !$al.view.isEmpty($al.model._viewModel.request.paymentRequest) && + !$al.view.isEmpty($al.model._viewModel.request.paymentOrder) + } + + _isSysperPayment(){ + return $al.model._viewModel.request.paymentEventId && + $al.model._viewModel.request.paymentId && + !$al.view.isEmpty($al.model._viewModel.request.paymentEventId) && + !$al.view.isEmpty($al.model._viewModel.request.paymentId) + } +} + + + diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/resettlement/edit/resettlement.model.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/resettlement/edit/resettlement.model.js new file mode 100644 index 0000000..b756930 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/resettlement/edit/resettlement.model.js @@ -0,0 +1,432 @@ +class ResettlementRequestModel { + + constructor() { + + $_mvcSections.forEach((section, id) => { + this[id] = new section.model(); + }); + + this._restCalls = { + + getRequest: new $a.GetRestCall(null, "/internal/api/resettlement-requests/{requestId}"), + movementFile: new $a.GetRestCall(null, "/internal/api/movement-files/{fileId}"), + updateRequest: new $a.PutRestCall(null, "/internal/api/resettlement-requests"), + getStateHistory: new $a.GetRestCall(null, "/internal/api/resettlement-requests/state-machine/history/{requestId}"), + changeStateRequest: new $a.PutRestCall(null, "/internal/api/resettlement-requests/state-machine/event/{stateMachineEvent}/{requestId}"), + permissions: new $a.GetRestCall(null, "/internal/api/permissions"), + payInSysper: new $a.PostRestCall(null, "/internal/api/resettlement-requests/pay-sysper/{requestId}"), + countries: new $a.GetRestCall(null, "/internal/api/countries"), + cities: new $a.GetRestCall(null, "/internal/api/countries/{countryCode}/cities"), + assignmentsHistory: new $a.GetRestCall(null, "/internal/api/assignments-history"), + getResettlementIndemnity: new $a.GetRestCall(null, "/internal/api/requests/{requestId}/indemnity"), + saveOrUpdateResetlmntIndemnity: new $a.PostRestCall(null, "/internal/api/requests/{requestId}/indemnity"), + validatePaymentOrder: new $a.GetRestCall(null, "/internal/api/summa/validateOrder/{orderId}"), + refreshAbacStateForRequest: new $a.PutRestCall(null, "/internal/api/abac/workflow/{requestId}"), + }; + this.urls = { + action: { + viewMovementFile: $a.utils.url(null, "/movement-files/view.do"), + viewRequest: $a.utils.url(null, "/requests/view-resettlement.do"), + showAbacInfo: $a.utils.url(null, "/abac/abac-info.do"), + } + }; + + + this.dataSourceActiveYears = new kendo.data.DataSource({ + data: [ + {key: '1', value: "1 year" }, + {key: '2', value: "2 years" }, + {key: '3', value: "3 years" }, + {key: '4', value: "More than 4 years" }, + ] + }); + + this.careerFileGridColumns = [ + { + field: "startDate", + title: "Start date", + headerAttributes: {class: "pl-0"}, + attributes: {class: "px-0 "}, + width: "110", + template: '#= kendo.toString(kendo.parseDate(startDate), "dd/MM/yyyy")#' + }, + { + field: "endDate", + title: "End date", + headerAttributes: {class: "pl-0"}, + attributes: {class: "px-0 "}, + width: "110", + template: '#= kendo.toString(kendo.parseDate(endDate), "dd/MM/yyyy")#' + }, + { + field: "jobId", + title: "Job ID", + headerAttributes: {class: "pl-0"}, + attributes: {class: "px-0 "}, + width: "100", + }, + { + field: "statutoryLink", + title: "Statutory Link", + headerAttributes: {class: "pl-0"}, + attributes: {class: "px-0 "}, + width: "20%", + }, + { + field: "organizationName", + title: "Organization", + headerAttributes: {class: "pl-0"}, + attributes: {class: "px-0 "}, + width: "20%", + }, + { + field: "jobCountryName", + title: "Location", + headerAttributes: {class: "pl-0"}, + attributes: {class: "px-0 "}, + width: "20%", + }, + + ]; + + this.supportingDocumentsTypes = { + EvidenceOfNewResidence: "EVIDENCE_NEW_RESIDENCE", + EvidenceOfLease: "LEASE_PROPERTY_DEEDS", + EvidenceOfRecentUtility: "UTILITY_BILL", + EvidenceOfResidencePermitCancellation: "PROOF_CANC_RES_PERMIT", + EvidenceOfChangeCarRegistrationPlates: "PROOF_CHANGE_CAR_PLATES", + EvidenceOfSchooling: "SCHOOL_EVIDENCE", + EvidenceOfOtherPertinentDocumentary: "OTHER", + EvidenceOfCertificateNoDebts: "CERTIFICATE_NO_DEBTS", + HOAEmail:"HOA_EMAIL" + } + this.resettlementEvents = { + Create: "CREATE", + Approve: "APPROVE", + Reject: "REJECT", + Submit: "SUBMIT", + MarkPaid: "MARK_PAID", + Resubmit: "RESUBMIT", + ResetApproval: "RESET_APPROVAL", + ResetPaid: "RESET_PAID", + } + this.resettlementStates = { + Draft: "DRAFT", + Approved: "APPROVED", + Awaiting: "AWAITING", + Paid: "PAID", + Rejected: "REJECTED", + } + + this.dataSourceMonths = new kendo.data.DataSource({ + data: [ + {month: 'JANUARY', monthString: "January"}, + {month: 'FEBRUARY', monthString: "February"}, + {month: 'MARCH', monthString: "March"}, + {month: 'APRIL', monthString: "April"}, + {month: 'MAY', monthString: "May"}, + {month: 'JUNE', monthString: "June"}, + {month: 'JULY', monthString: "July"}, + {month: 'AUGUST', monthString: "August"}, + {month: 'SEPTEMBER', monthString: "September"}, + {month: 'OCTOBER', monthString: "October"} + , {month: 'NOVEMBER', monthString: "November"}, + {month: 'DECEMBER', monthString: "December"} + + ] + }); + this.dataSourceIndemnityTypes = new kendo.data.DataSource({ + data: [{key: 'IRIS', value: 'IP=IRIS'}, + {key: 'IRID', value: 'IP=IRID'} + ] + }); + + this.dataSourceIndemnityNumbers = new kendo.data.DataSource({ + data: [{key: "1", value: "1"}, + {key: "2", value: "2"}, + {key: "3", value: "3"}, + {key: "4", value: "4"} + ] + }); + + + this.commentTypes = { + MovementFile: "MOVEMENT_FILE", + Request: "REQUEST", + PostingAllowance: "POSTING_ALLOWANCE", + SupportingDoc: "SUPPORTING_DOC" + } + + this.columnsSupportingDocumentsNotEditable = [ + { + width: "50px", + template: ` + description + + `, + } + ]; + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model.onRequestRetrieved); + + dataPoolExecutor.add("request", $al.model._restCalls.getRequest, {requestId: $requestId}); + dataPoolExecutor.add("stateMachineHistory", $al.model._restCalls.getStateHistory, {requestId: $requestId}); + dataPoolExecutor.add("requestComments", $al.model.requestCommon._restCalls.getRequestComments, {requestId: $requestId}); + dataPoolExecutor.add("countries", $al.model._restCalls.countries, null, null); + dataPoolExecutor.add("indemnity", $al.model._restCalls.getResettlementIndemnity, {requestId: $requestId}); + dataPoolExecutor.run(); + } + + refreshRequest() { + $al.model.init(); + } + + refreshAfterUpdateState(data) { + $al.model._viewModel.request.state = data.state; + $al.model.refreshRequest($al.model._viewModel.request.id); + } + + onRequestRetrieved(data) { + $al.model.request = data.get("request").data; + $al.model.requestComments = data.get("requestComments").data; + $al.model.stateMachineHistory = data.get("stateMachineHistory").data; + $al.model.countries = data.get("countries").data; + $al.model._restCalls.movementFile.execute({fileId: $al.model.request.declaration.movementFileId}, null, $al.model.onMovementFileRetrieved); + $al.model.request._relativesDS = []; + if ($a.utils.isNotNull( + $al.model.request.declaration.declarationPersons)) { + $al.model.request._relativesDS = $al.model.request.declaration.declarationPersons; + } + $al.model.indemnityModel = data.get("indemnity").data; + if($al.model.indemnityModel && + typeof $al.model.indemnityModel.hoaEmailFlag === "undefined"){ + $al.model.indemnityModel.hoaEmailFlag = false; + } + } + + onMovementFileRetrieved(data) { + $al.model.movementFile = data; + $al.model._restCalls.permissions.execute(null, {movementFileId: $al.model.movementFile.id}, $al.model.onPermissionsRetrieved); + } + + onPermissionsRetrieved(data) { + $al.model.permissions = data; + $al.view._initializeView(); + $al.view.render(); + $al.view._bindView(); + $a.loading.toggle(false); + } + + _defaultResettlementSupportingDocs(){ + + return [ + {id: null, + requestId: $requestId, + docType: $al.model.supportingDocumentsTypes.EvidenceOfNewResidence, + docOrder: 1, + docMandatory: true, + comment: { + id: null, + commentText: null, + commentType: $al.model.commentTypes.SupportingDoc, + deleted: false + }, + attachments: [] + }, + {id: null, + requestId: $requestId, + docType: $al.model.supportingDocumentsTypes.EvidenceOfLease, + docOrder: 2, + docMandatory: true, + comment: { + id: null, + commentText: null, + commentType: $al.model.commentTypes.SupportingDoc, + deleted: false + }, + attachments: [] + }, + {id: null, + requestId: $requestId, + docType: $al.model.supportingDocumentsTypes.EvidenceOfRecentUtility, + docOrder: 3, + docMandatory: true, + comment: { + id: null, + commentText: null, + commentType: $al.model.commentTypes.SupportingDoc, + deleted: false + }, + attachments: [] + }, + {id: null, + requestId: $requestId, + docType: $al.model.supportingDocumentsTypes.EvidenceOfResidencePermitCancellation, + docOrder: 4, + docMandatory: true, + comment: { + id: null, + commentText: null, + commentType: $al.model.commentTypes.SupportingDoc, + deleted: false + }, + attachments: [] + }, + {id: null, + requestId: $requestId, + docType: $al.model.supportingDocumentsTypes.EvidenceOfChangeCarRegistrationPlates, + docOrder: 5, + docMandatory: false, + comment: { + id: null, + commentText: null, + commentType: $al.model.commentTypes.SupportingDoc, + deleted: false + }, + attachments: [] + }, + {id: null, + requestId: $requestId, + docType: $al.model.supportingDocumentsTypes.EvidenceOfSchooling, + docOrder: 6, + docMandatory: false, + comment: { + id: null, + commentText: null, + commentType: $al.model.commentTypes.SupportingDoc, + deleted: false + }, + attachments: [] + }, + {id: null, + requestId: $requestId, + docType: $al.model.supportingDocumentsTypes.EvidenceOfOtherPertinentDocumentary, + docOrder: 7, + docMandatory: false, + comment: { + id: null, + commentText: null, + commentType: $al.model.commentTypes.SupportingDoc, + deleted: false + }, + + attachments: [] + }, + { + id: null, + requestId: $requestId, + docType: $al.model.supportingDocumentsTypes.HOAEmail, + docOrder: 8, + docMandatory: false, + comment: null, + attachments: [] + } + ]; + } + + prepareResettlementAttachmentRequest() { + + let supportingDocs = $al.model._viewModel.request.supportingDocs; + let newSupportingDocs = []; + for (let i = 0; i < supportingDocs.length; i++) { + let supportingDoc = supportingDocs[i]; + supportingDoc.requestId = $requestId; + let attachments = []; + if (supportingDoc.attachments && supportingDoc.attachments.length + > 0) { + supportingDoc.attachments.forEach(item => { + $al.model.addAttachments(attachments, item); + }); + supportingDoc.attachments = attachments; + $al.model.setSupportingDocumentComment(supportingDoc, supportingDoc.comment ? supportingDoc.comment.commentText:null); + newSupportingDocs.push(supportingDoc); + } else if (supportingDoc.comment && supportingDoc.comment.commentText) { + newSupportingDocs.push(supportingDoc); + } + } + $al.model._viewModel.request.supportingDocs = newSupportingDocs; + } + + mapAttachments(attachments) { + const attachList = []; + if (attachments) { + for (let i = 0; i <= attachments.length; i++) { + let attachment = attachments[i]; + if (attachment) { + attachList.push({ + name: '' + attachment.fileName + + '', + fileName: attachment.fileName, + fileUid: attachment.fileUid, + title: attachment.fileName, + extension: '.' + attachment.fileName.split('.').pop(), + id: attachment.id, + creationActor: attachment.creationActor, + updatingActor: attachment.updatingActor, + contentDisposition: $al.model.requestCommon.contentDisposition.Attachment, + downloadUrl: $al.fileManagement.restCalls.preview.formatUrl( + {uid: attachment.fileUid}) + }); + } + } + } + return attachList; + } + + addAttachments(attachments, item) { + attachments.push({ + fileUid: item.fileUid ? item.fileUid : item.uid, + fileName: item.fileName ? item.fileName : item.name, + name: item.fileName ? item.fileName : item.name, + title: item.fileName ? item.fileName : item.name, + extension: item.fileName ? '.' + item.fileName.split('.').pop() + : '.' + item.name.split('.').pop(), + id: item.id, + creationActor: item.creationActor, + updatingActor: item.updatingActor, + contentDisposition: $al.model.requestCommon.contentDisposition.Attachment + }); + } + + setSupportingDocumentComment(supportingDoc, comment) { + if (supportingDoc.comment) { + if (!$al.view.isEmpty(comment)) { + supportingDoc.comment.commentText = comment; + } else { + supportingDoc.comment = null; + } + } + } + + getSupportingDocumentDataSource(position){ + return new kendo.data.DataSource({ + autoSync: false, + data: $al.model.getAttachments(position), + dataType: "json", + schema: { + model: { + id: "id", + fields: { + id: {type: "number"}, + downloadUrl: {type: "string"}, + fileName: {type: "string"}, + }, + } + } + }); + } + + getAttachments(position){ + const index = +position; + return $al.model._viewModel.request.supportingDocs && + $al.model._viewModel.request.supportingDocs.length > index && + $al.model._viewModel.request.supportingDocs[index] && + $al.model._viewModel.request.supportingDocs[index].attachments; + } +} diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/resettlement/edit/resettlement.mvc.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/resettlement/edit/resettlement.mvc.js new file mode 100644 index 0000000..1c8bc7e --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/resettlement/edit/resettlement.mvc.js @@ -0,0 +1 @@ +$al.mvc(ResettlementRequestModel, ResettlementRequestView, ResettlementRequestController, true); \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/resettlement/edit/resettlement.view.js b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/resettlement/edit/resettlement.view.js new file mode 100644 index 0000000..ec46f78 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/scripts/request/resettlement/edit/resettlement.view.js @@ -0,0 +1,1071 @@ +class ResettlementRequestView { + + constructor() { + + $_mvcSections.forEach((section, id) => { + this[id] = new section.view(); + }); + + this._templates = new $a.DataContainer("request"); + this._elements = new $a.DataContainer("request"); + this._templates.data(new $a.KendoTemplateData()); + this._elements.node("relatives").node("grid").data( + new $a.KendoElementData()); + this._templates.node("relatives").node("grid").data( + new $a.KendoTemplateData()); + this._elements.node("indemnity").node("grid").data( + new $a.KendoElementData()); + this._templates.node("indemnity").node("grid").data( + new $a.KendoTemplateData()); + this._elements.node("address").node("grid").data(new $a.KendoElementData()); + this._elements.node("communication").data(new $a.KendoElementData()); + this._elements.node("communication2").data(new $a.KendoElementData()); + this._elements.node("attachmentsListView").data(new $a.KendoElementData()); + + this._elements.node("comments").node("grid").data( + new $a.KendoElementData()); + this._templates.node("ok_cancel").node("dialog").data( + new $a.KendoTemplateData(), "footer"); + this._templates.node("basic").node("dialog").data( + new $a.KendoTemplateData(), "footer"); + this._templates.node("warn").node("dialog").data(new $a.KendoTemplateData(), + "body"); + this._templates.node("comments").node("grid").data( + new $a.KendoTemplateData()); + this._templates.node("add_comment").data(new $a.KendoTemplateData()); + this._elements.node("resettlement_country").data(new $a.KendoElementData()); + this._elements.node("resettlement_city").data(new $a.KendoElementData()); + this._elements.node("resettlement_active_years").data( + new $a.KendoElementData()); + this._elements.node("career_file").node("grid").data(new $a.KendoElementData()); + this._templates.node("career_file").node("grid").data(new $a.KendoTemplateData()); + this._elements.node("origin_period_month").data(new $a.KendoElementData()); + this._elements.node("origin_period_year").data(new $a.KendoElementData()); + this._elements.node("payment_period_month").data(new $a.KendoElementData()); + this._elements.node("payment_period_year").data(new $a.KendoElementData()); + this._elements.node("indemnity_type").data(new $a.KendoElementData()); + this._elements.node("indemnity_number").data(new $a.KendoElementData()); + this._elements.node("indemnity_unit").data(new $a.KendoElementData()); + + this._templates.node("mark_as_paid").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._elements.node("payment_date").data(new $a.KendoElementData()); + this._elements.node("payment_order").data(new $a.KendoElementData()); + this._elements.node("payment_request").data(new $a.KendoElementData()); + this._elements.node("payment_date_div").data(new $a.KendoElementData()); + this._elements.node("payment_order_div").data(new $a.KendoElementData()); + this._elements.node("payment_request_div").data(new $a.KendoElementData()); + this._templates.node("pay_ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + + } + + + _showWarnDialog(title, messages) { + + $a.modalDialog.showAnswer(null, + title, + $al.view._templates.warn.dialog.body.template( + { + body_message: "
  • " + messages.join( + "
  • "), + validation_message: $al.controller._languageBundle.alerts.validation_message + }), + $al.view._templates.basic.dialog.footer.template({}) + ); + } + + render() { + $al.view._templates.data.compile(); + $al.view._templates.comments.grid.data.compile(); + $al.view._templates.add_comment.data.compile(); + $al.view._templates.relatives.grid.data.compile(); + $al.view._templates.indemnity.grid.data.compile() + $al.view._renderIndemnity(); + if ($al.model._viewModel.isAwaiting) { + $al.view._setDefaultValues(); + } + $al.view._renderRelativesGrid(); + $al.view.requestCommon._renderCommentsGrid(); + $al.view._renderCommunication(); + $al.view._renderCountries(); + $al.view._initSupportingDocumentsGrid(); + $al.view._initCareerFileGrid(); + } + + noIndemnitiesTemplate() { + return "
    Your installation allowance will be determined based on your address declaration.
    "; + } + + _setDefaultValues() { + if ($al.model._viewModel.indemnityModel.comment == null) { + let organizationName = $al.view.isEmpty( + $al.model.movementFile.jobHolder.organizationName) ? + $al.model.movementFile.jobFrom.organizationName + : $al.model.movementFile.jobHolder.organizationName; + $('#indemnity_comment').val("Created by e-Rights. Request ID: " + + $al.model.request.requestStringId + " \n" + + organizationName); + } + $('#request-indemnity_unit').val("ANN"); + $al.view._calculateOriginAndPaymentPeriodMonthAndYear(); + } + + _calculateOriginAndPaymentPeriodMonthAndYear() { + let assignmentEndDate = $al.model.movementFile.estimatedEndDate; + let contractEndDate = !$al.view.isEmpty(assignmentEndDate) ? new Date( + assignmentEndDate) : null; + let originPeriodYear = $al.model._viewModel.indemnityModel.originPeriodYear; + let paymentPeriodYear = $al.model._viewModel.indemnityModel.paymentPeriodYear; + let originPeriodMonth = $al.model._viewModel.indemnityModel.originPeriodMonth; + let paymentPeriodMonth = $al.model._viewModel.indemnityModel.paymentPeriodMonth; + let lastDayOfContractEndMonth = !$al.view.isEmpty(contractEndDate) + ? new Date(contractEndDate.getFullYear(), + contractEndDate.getMonth() + 1, 0).getDate() : null; + let contractEndDateNotNull = !$al.view.isEmpty(contractEndDate) + && !$al.view.isEmpty(lastDayOfContractEndMonth); + //if movement file start date is first of month, origin period is month of start date else origin period is month right after start date + if ($al.view.isEmpty(originPeriodMonth) && contractEndDateNotNull + && contractEndDate.getDate() === lastDayOfContractEndMonth) { + $al.view._elements.origin_period_month.data.element.data( + "kendoDropDownList").value($al.model.dataSourceMonths._data.at( + contractEndDate.getMonth()).month); + } else if ($al.view.isEmpty(originPeriodMonth) && contractEndDateNotNull) { + let originPeriodMonth = contractEndDate.getMonth() !== 0 + ? contractEndDate.getMonth() - 1 : 11; + $al.view._elements.origin_period_month.data.element.data( + "kendoDropDownList").value( + $al.model.dataSourceMonths._data.at(originPeriodMonth).month); + } + + if ($al.view.isEmpty(paymentPeriodMonth) && contractEndDateNotNull + && contractEndDate.getDate() === lastDayOfContractEndMonth) { + $al.view._elements.payment_period_month.data.element.data( + "kendoDropDownList").value($al.model.dataSourceMonths._data.at( + contractEndDate.getMonth()).month); + } else if (paymentPeriodMonth == null && contractEndDateNotNull) { + let paymentPeriodMonth = contractEndDate.getMonth() !== 0 + ? contractEndDate.getMonth() - 1 : 11; + $al.view._elements.payment_period_month.data.element.data( + "kendoDropDownList").value( + $al.model.dataSourceMonths._data.at(paymentPeriodMonth).month); + } + + //payment period year should be set to previous year if contract end is in january and previous month falls in previous year) + if ($al.view.isEmpty(paymentPeriodYear) && contractEndDateNotNull + && contractEndDate.getMonth() === 0 && contractEndDate.getDate() + != lastDayOfContractEndMonth) { + + $al.view._elements.payment_period_year.data.element.data( + "kendoDropDownList").value(contractEndDate.getFullYear() - 1); + } else if (contractEndDateNotNull && $al.view.isEmpty(paymentPeriodYear)) { + $al.view._elements.payment_period_year.data.element.data( + "kendoDropDownList").value(contractEndDate.getFullYear()); + } + // origin period year should be set to previous year if contract end is in january and previous month falls in previous year + if ($al.view.isEmpty(originPeriodYear) && contractEndDateNotNull + && contractEndDate.getMonth() === 0 + && contractEndDate.getDate() != lastDayOfContractEndMonth) { + $al.view._elements.origin_period_year.data.element.data( + "kendoDropDownList").value(contractEndDate.getFullYear() - 1); + } else if (contractEndDateNotNull && $al.view.isEmpty(originPeriodYear)) { + $al.view._elements.origin_period_year.data.element.data( + "kendoDropDownList").value(contractEndDate.getFullYear()); + } + + } + + _renderIndemnity() { + let dataSourceYears = new kendo.data.DataSource({}); + for (let i = new Date().getFullYear() - 3; i <= new Date().getFullYear(); + i++) { + dataSourceYears.add({year: i, yearString: i}); + } + + $al.view._elements.origin_period_month.data.element.kendoDropDownList({ + dataSource: $al.model.dataSourceMonths, + dataTextField: "monthString", + dataValueField: "month", + placeHolder: 'Month', + enable: true, + value: $al.model._viewModel.indemnityModel.originPeriodMonth, + autoWidth: true, + optionLabel: "--Select--" + }); + + $al.view._elements.origin_period_year.data.element.kendoDropDownList({ + dataSource: dataSourceYears, + dataTextField: "yearString", + dataValueField: "year", + placeHolder: 'Year', + enable: true, + value: $al.model._viewModel.indemnityModel.originPeriodYear, + autoWidth: true, + optionLabel: "--Select--" + }); + $al.view._elements.payment_period_month.data.element.kendoDropDownList({ + dataSource: $al.model.dataSourceMonths, + dataTextField: "monthString", + dataValueField: "month", + placeHolder: 'Month', + enable: true, + value: $al.model._viewModel.indemnityModel.paymentPeriodMonth, + autoWidth: true, + optionLabel: "--Select--" + }); + + $al.view._elements.payment_period_year.data.element.kendoDropDownList({ + dataSource: dataSourceYears, + dataTextField: "yearString", + dataValueField: "year", + placeHolder: 'Year', + enable: true, + value: $al.model._viewModel.indemnityModel.paymentPeriodYear, + autoWidth: true, + optionLabel: "--Select--" + }); + + $al.view._elements.indemnity_type.data.element.kendoDropDownList({ + dataSource: $al.model.dataSourceIndemnityTypes, + dataTextField: "value", + dataValueField: "key", + placeHolder: 'Type of Indemnity', + enable: true, + value: $al.model._viewModel.indemnityModel.type, + autoWidth: true, + optionLabel: "--Select--", + required: "required", + validationMessage: "Select Type", + change: $al.view._setIndemnityAmount + }); + + $al.view._elements.indemnity_number.data.element.kendoDropDownList({ + dataSource: $al.model.dataSourceIndemnityNumbers, + dataTextField: "value", + dataValueField: "key", + placeHolder: 'Number', + enable: true, + value: $al.model._viewModel.indemnityModel.number, + autoWidth: true, + optionLabel: "--Select--", + change: $al.view._setIndemnityAmount + }); + + if ($al.model._viewModel.indemnityModel.unit) { + $al.view._elements.indemnity_unit.data.element.kendoDropDownList({ + dataSource: [{ unit: $al.model._viewModel.indemnityModel.unit }], + dataTextField: "unit", + value: $al.model._viewModel.indemnityModel.unit, + autoWidth: true, + }); + } + + if ($al.model._viewModel.indemnityModel.id) { + $('#indemnity_id').val($al.model._viewModel.indemnityModel.id); + } + if ($al.model._viewModel.indemnityModel.comment) { + $('#indemnity_comment').val($al.model._viewModel.indemnityModel.comment); + } + + if ($al.model._viewModel.indemnityModel.type + && $al.model._viewModel.indemnityModel.number) { + $('#indemnity_amount').text( + $al.model._viewModel.indemnityModel.number + "/4 * " + + $al.view._elements.indemnity_type.data.element.data( + "kendoDropDownList").select() + + " months basic salary"); + } + + } + _renderRelativesGrid(data) { + var columns_desc = [ + { + field: "joiningResettlement", + title: "Join", + width: "25px", + template: '', + headerAttributes: { + "class": "pr-0" + }, + attributes: { + "class": "pl-2 pr-0" + } + }, + { + field: "relative.lastName", + title: "Name", + width: "50%", + attributes: { + "class": "font-weight-medium" + }, + template: "#= relative.lastName #, #= relative.firstName #" + }, + { + field: "relative.age", + title: "Age", + width: "75px" + }, + { + field: "relation", + title: "Relation", + width: "30%" + } + ]; + + $al.view._elements.relatives.grid.data.element.kendoGrid({ + dataSource: $al.model.request._relativesDS, + scrollable: false, + sortable: true, + noRecords: { + template: "" + }, + columns: columns_desc + }); + + $al.view._elements.relatives.grid.data.component = "kendoGrid"; + + } + + _setJoinedResettlement(cb) { + let row = $(cb).closest("tr"); + let grid = $(cb).closest("div[data-role='grid']").data("kendoGrid"); + let item = grid.dataItem(row); + $al.model._viewModel.request.declaration.declarationPersons.forEach(person => { + if (person.id === item.id) { + person.joiningResettlement = cb.checked; + } + } + ); + } + + + _renderCommunication() { + $al.view._elements.communication.data.element.kendoListView({ + dataSource: $al.view._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + + $al.view._elements.communication.data.component = "kendoListView"; + + $al.view._elements.communication2.data.element.kendoListView({ + dataSource: $al.view._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + + $al.view._elements.communication2.data.component = "kendoListView"; + } + + _renderCountries() { + if ($al.model.countries) { + $al.view._elements.resettlement_country.data.element.kendoDropDownList({ + dataSource: $al.model.countries, + dataTextField: "name", + dataValueField: "code", + optionLabel: "Select a country", + value: $al.model._viewModel.request.country + ? $al.model._viewModel.request.country.code : '', + autoWidth: true, + change: function (e) { + var index = this.selectedIndex, dataItem; + dataItem = this.dataItem(index); + $al.controller._getCities(dataItem.code); + if ($al.view.isEmpty(dataItem.code)) { + $al.model._viewModel.request.country = null; + $al.model._viewModel.request.city = null; + } else { + $al.model._viewModel.request.country = dataItem; + } + } + }); + + let resettlementCountry = $al.view._elements.resettlement_country.data.element.data( + "kendoDropDownList"); + let dataItem = resettlementCountry.dataItem(); + $al.controller._getCities(dataItem.code); + } + + $al.view._elements.resettlement_active_years.data.element.kendoDropDownList({ + dataSource: $al.model.dataSourceActiveYears, + dataTextField: "value", + dataValueField: "key", + optionLabel: "Select", + value: $al.model._viewModel.request.activeYears, + autoWidth: true, + change: function (e) { + var index = this.selectedIndex, dataItem; + dataItem = this.dataItem(index); + $al.model._viewModel.request.activeYears = dataItem.key; + } + }); + } + + isEmpty(str) { + return (!str || (str && str.length === 0)); + } + + + _initializeView() { + + const viewModel = new kendo.data.Model.define(); + $al.model.request = $al.controller.requestCommon.prepareRequestForModelView(); + $al.model._viewModel = new viewModel({ + isVisible: true, + message: " ", + staffName: $al.model.movementFile.jobHolder.lastName + ' ' + + $al.model.movementFile.jobHolder.firstName, + lastPlaceEmpl: ($al.model.movementFile.assignmentCountry === undefined + && $al.model.movementFile.assignmentCity === undefined) ? 'N/A' + : $al.model.movementFile.assignmentCountry + ', ' + + $al.model.movementFile.assignmentCity, + statutoryLinkDesc: ($al.model.request.statutoryLinkDesc === undefined) ? 'N/A' : $al.model.request.statutoryLinkDesc, + perId: $al.model.request.staffMember.id, + request: $al.model.request, + movementFile: $al.model.movementFile, + movFileFrozen: $al.model.movementFile.state === 'CANCELLED' + || $al.model.movementFile.state === 'COMPLETED', + isBackOffice: $isBackOffice, + commentsVisible: $isBackOffice + || $al.view.requestCommon._thereAreComments(false), + showActionsBox: false, + isApproved: false, + isAwaiting: false, + isRejected: false, + isPaid: false, + showDivider: false, + canReject: false, + canUpdateRequest: false, + canMarkAsPaid: false, + canAddComments: $isBackOffice, + canDeleteComments: false, + displayChildrenRequest: false, + showCommentButton: true, + canSave: false, + showPaymentInfo: false, + showPaymentAbacInfoLink: false, + isDraft: false, + showSupportingDocuments: false, + canResetApproval: false, + canResetFromPaid: false, + canDiscard: false, + canResetToDraft: false, + enableOriginPeriod: false, + indemnityModel: $al.model.indemnityModel ? $al.model.indemnityModel : {hoaEmailFlag: false}, + canEdit: false, + canPayWithSysper: false, + isAbacPayment: false, + isSysperPayment: false, + isLoading: false, + showCommentInput: function () { + this.set("showCommentButton", false); + $al.view.requestCommon._scrollToBottom(); + $('textarea.autoSize').autosize(); + }, + onRejectRequest: function () { + $al.controller.doRejectRequest(); + }, + onPayWithSysper: function () { + $al.controller.doPayWithSysper(); + }, + onSaveChanges: function () { + $al.view._saveOrUpdateIndemnity(); + $al.view.mapRequestAttachments(); + $al.controller._updateRequest( + (updateData) => { + $al.model.refreshRequest(); + }); + }, + onDiscardChanges: function () { + $a.loading.toggle(true); + $al.model.refreshRequest(); + }, + onSubmit: function () { + $al.controller._doSubmit(); + }, + onResetApproval: function(){ + $al.controller.doResetApproval(); + }, + onResetPaid: function(){ + $al.controller.doResetPaid(); + }, + onApproveRequest: function () { + $al.controller._doApprove(); + }, + onResetToDraft: function () { + $al.controller.doResetToDraftRequest(); + }, + showMarkAsPaidDialog: function () { + $al.controller.doShowMarkAsPaidDialog(); + }, + onRefreshAbacInfo: function () { + $al.controller.requestCommon.doRefreshAbacInfoAndRefresh(); + }, + showAbacInfo: function () { + $al.controller.doShowAbacInfo(); + }, + }); + $al.controller.requestCommon.modelPermissionsCommon(); + $al.controller.modelPermissions(); + $al.model._viewModel.declarationOfHonourList = $al.view._getDeclarationHonourStatements(); + + } + + + _setIndemnityAmount(e) { + + let indemnityNumber = $al.view._elements.indemnity_number.data.element.data( + "kendoDropDownList").value(); + let indemnityKey = $al.view._elements.indemnity_type.data.element.data( + "kendoDropDownList").select(); + if (!$al.view.isEmpty(indemnityNumber) && !$al.view.isEmpty(indemnityKey)) { + $('#indemnity_amount').text( + indemnityNumber + "/4 * " + indemnityKey + " months basic salary"); + } else { + $('#indemnity_amount').text(''); + } + + } + + _setIndemnityValues() { + // set all the values to model so they can be saved + $al.model._viewModel.indemnityModel.type = $al.view._elements.indemnity_type.data.element.data( + "kendoDropDownList").value(); + $al.model._viewModel.indemnityModel.originPeriodMonth = $al.view._elements.origin_period_month.data.element.data( + "kendoDropDownList").value(); + $al.model._viewModel.indemnityModel.originPeriodYear = $al.view._elements.origin_period_year.data.element.data( + "kendoDropDownList").value(); + $al.model._viewModel.indemnityModel.paymentPeriodMonth = $al.view._elements.payment_period_month.data.element.data( + "kendoDropDownList").value(); + $al.model._viewModel.indemnityModel.paymentPeriodYear = $al.view._elements.payment_period_year.data.element.data( + "kendoDropDownList").value(); + $al.model._viewModel.indemnityModel.number = $al.view._elements.indemnity_number.data.element.data( + "kendoDropDownList").value(); + $al.model._viewModel.indemnityModel.unit = $( + "#request-indemnity_unit").val(); + $al.model._viewModel.indemnityModel.comment = $("#indemnity_comment").val(); + } + + _validateApprovalInputs() { + $al.view._setIndemnityValues(); + var validationErrors = $al.view._validateIndemnityDetails(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.view._showWarnDialog( + 'Please check the following mandatory fields', validationErrors); + return false; + } + return true; + + } + + _validateIndemnityDetails() { + + var errorMessages = []; + + if (typeof $al.model._viewModel.indemnityModel.type === "undefined" || + $al.view.isEmpty($al.model._viewModel.indemnityModel.type) || + $al.model._viewModel.indemnityModel.type === "--Select--") { + //$al.controller._languageBundle.alerts.resettlement.hoa_email_missing + errorMessages.push( + $al.controller._languageBundle.resettlement.indemnity.indemnity_type_missing); + } + + if (typeof $al.model._viewModel.indemnityModel.number == "undefined" || + $al.view.isEmpty($al.model._viewModel.indemnityModel.number)) { + errorMessages.push( + $al.controller._languageBundle.resettlement.indemnity.indemnity_number_missing); + } + if (typeof $al.model._viewModel.indemnityModel.originPeriodYear + === "undefined" || + $al.model._viewModel.indemnityModel.originPeriodYear === "Select" || + $al.view.isEmpty($al.model._viewModel.indemnityModel.originPeriodYear) + || + typeof $al.model._viewModel.indemnityModel.originPeriodMonth + == "undefined" || + $al.view.isEmpty($al.model._viewModel.indemnityModel.originPeriodMonth) + || + $al.model._viewModel.indemnityModel.originPeriodMonth === "Select") { + errorMessages.push( + $al.controller._languageBundle.resettlement.indemnity.indemnity_origin_missing); + } + + if (typeof $al.model._viewModel.indemnityModel.paymentPeriodYear + === "undefined" || + $al.model._viewModel.indemnityModel.paymentPeriodYear === "Select" || + $al.view.isEmpty($al.model._viewModel.indemnityModel.paymentPeriodYear) + || + typeof $al.model._viewModel.indemnityModel.paymentPeriodMonth + == "undefined" || + $al.view.isEmpty($al.model._viewModel.indemnityModel.paymentPeriodMonth) + || + $al.model._viewModel.indemnityModel.paymentPeriodMonth === "Select") { + errorMessages.push( + $al.controller._languageBundle.resettlement.indemnity.indemnity_payment_missing); + } + + if (typeof $al.model._viewModel.indemnityModel.comment == "undefined" || + $al.view.isEmpty($al.model._viewModel.indemnityModel.comment)) { + errorMessages.push( + $al.controller._languageBundle.resettlement.indemnity.indemnity_comment_missing); + } + + if ($al.view.getFiles('hoa-email').length === 0 + && $al.model._viewModel.indemnityModel.hoaEmailFlag) { + errorMessages.push( + $al.controller._languageBundle.resettlement.indemnity.hoa_email_missing); + } + + if (!$al.model._viewModel.indemnityModel.hoaEmailFlag) { + const hoACheckboxValidator = $("#hoaEmail").kendoValidator().data( + "kendoValidator"); + if (!hoACheckboxValidator.validate()) { + errorMessages.push( + $al.controller._languageBundle.resettlement.indemnity.hoa_email_checkbox_required_missing); + } + } + + return errorMessages; + + } + + _saveOrUpdateIndemnity(onResponse) { + if (!$al.model._viewModel.isDraft) { + $al.view._setIndemnityValues(); + $a.loading.toggle(true); + $al.model._restCalls.saveOrUpdateResetlmntIndemnity.execute( + {requestId: $requestId}, $al.model._viewModel.indemnityModel, null, + null, onResponse ? onResponse : $al.controller._onSaveIndemnity, null, null); + setTimeout(() => { + $a.loading.toggle(false); + }, 12000); + } + } + + _validateComments(message) { + // Check at least one comment + let valid = $al.view.requestCommon._thereAreComments(true); + + if (!valid) { + $a.toast.showError(message); + $al.view.requestCommon.showCommentsFieldMessage( + $al.controller._languageBundle.alerts.field_comments_mandatory); + } + return valid; + } + + _bindView() { + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } + + _prepareCommunication(data) { + if (typeof data !== "undefined" && data !== null) { + data.forEach(n => { + if (n.arrivalState) + n.arrivalState = $al.controller._languageBundle.stateMachine[n.arrivalState.toLowerCase()]; + }); + } + return data; + } + + _getDeclarationHonourStatements() { + const statements = []; + statements.push({ + statementId: "statement_1", + statement: $al.controller._languageBundle.honour.resettlement_supporting_documents, + isChecked: false + }); + return statements; + } + + _loadCitiesData(cities) { + $al.view._elements.resettlement_city.data.element.kendoDropDownList({ + dataSource: cities, + dataTextField: "name", + dataValueField: "code", + optionLabel: "Select a city", + value: $al.model._viewModel.request.city + ? $al.model._viewModel.request.city.code : '', + autoWidth: true, + change: function (e) { + let dataItem = $al.view._elements.resettlement_city.data.element.data("kendoDropDownList").dataItem(); + $al.model._viewModel.request.city = !$al.view.isEmpty(dataItem.code) ? dataItem : null; + } + }); + let resettlementCity = $al.view._elements.resettlement_city.data.element.data( + "kendoDropDownList"); + resettlementCity.enable( $al.model._viewModel.canEdit); + } + + _initSupportingDocumentsGrid() { + + $al.view.initializeSupportingDocsAttachments(); + $al.view.initializeFileUploaderForHoaEmail(7, 'hoa-email'); + + } + + initializeFileUploaderForHoaEmail(supportingDocPosition, inputId) { + + $(`#${inputId}`).kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, inputId), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.view._refreshResettlementAttachmentsInModel(e.operation, e.files, + supportingDocPosition, inputId); + }, + error: function (e) { + $a.toast.showError('Error while uploading files!'); + }, + complete: function (e) { + }, + select: function (e) { + }, + multiple: false, + localization: { + select: 'SELECT FILES...' + }, + files: $al.model._viewModel.request.supportingDocs[+supportingDocPosition].attachments + }); + $al.view._renderUnEditableSupportingDocumentsGrid(supportingDocPosition,inputId); + } + + initializeFileUploader(supportingDocPosition, inputId) { + + $(`#${inputId}`).kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, inputId), + remove: $al.fileManagement.onRemove, + success: function (e) { + $al.view._refreshResettlementAttachmentsInModel(e.operation, e.files, supportingDocPosition, inputId); + }, + error: function (e) { + $a.toast.showError('Error while uploading files!'); + }, + complete: function (e) { + }, + select: function (e) { + }, + localization: { + select: 'SELECT FILES...' + }, + files: $al.model._viewModel.request.supportingDocs[+supportingDocPosition].attachments + }); + $al.view._renderUnEditableSupportingDocumentsGrid(supportingDocPosition,inputId); + } + + _refreshResettlementAttachmentsInModel(operation, files, position, fileUploaderId) { + if (typeof $al.model.request.state == 'undefined' + || $al.model.request.state === $al.model.resettlementStates.Draft + || $al.model.request.state === $al.model.resettlementStates.Awaiting) { + + if ((typeof $al.model._viewModel.request.supportingDocs !== "undefined" + || !$al.model._viewModel.request.supportingDocs) + && $al.model._viewModel.request.supportingDocs.length !== 8) { + $al.model._viewModel.request.supportingDocs = $al.model._defaultResettlementSupportingDocs(); + } + const upload = $(`#${fileUploaderId}`).data("kendoUpload"); + $al.model._viewModel.request.supportingDocs[+position].attachments = upload.getFiles(); + } + } + + mapRequestAttachments(){ + + $al.model._viewModel.request.supportingDocs.forEach((item, index) => { + if(item.docType !== $al.model.supportingDocumentsTypes.HOAEmail) { + $al.view.mapRequestAttachmentFiles(index, item.docType.toLowerCase()); + } + }); + $al.model.prepareResettlementAttachmentRequest(); + + } + + mapRequestAttachmentFiles(position, fileDocType) { + const fileDynamicInput = `uploaderId_${fileDocType}`; + const upload = $(`#${fileDynamicInput}`).data("kendoUpload"); + let supportingDoc = $al.model._viewModel.request.supportingDocs[position]; + supportingDoc.attachments = upload.getFiles(); + + const CommentDynamicInput = `attachments_comment_${fileDocType}`; + const comment = $(`#${CommentDynamicInput}`).val(); + $al.model.setSupportingDocumentComment(supportingDoc, comment); + } + + getFiles(fileUploaderId){ + return $(`#${fileUploaderId}`).data("kendoUpload").getFiles(); + } + + enableOriginPeriod() { + var enable = true; + if (typeof $al.model.stateMachineHistory !== "undefined" + && $al.model.stateMachineHistory !== null && + $al.model._viewModel.request.state === $al.model.resettlementStates.Awaiting) { + $al.model.stateMachineHistory.forEach(n => { + if (n.arrivalState === $al.model.resettlementStates.Paid) { + enable = false; + } + }); + } + return enable; + } + + initializeSupportingDocsAttachments() { + let defaultResettlementDetails = $al.model._defaultResettlementSupportingDocs(); + let supportingDocs = $al.model._viewModel.request.supportingDocs; + + if (supportingDocs) { + for (let i = 0; i < supportingDocs.length; i++) { + let supportingDoc = supportingDocs[i]; + const defaultSupportingDocument = defaultResettlementDetails.filter( + function (a) { + if (a.docType === supportingDoc.docType) { + return true; + } + }, Object.create(null)); + if (defaultSupportingDocument && defaultSupportingDocument.length > 0) { + let item = defaultSupportingDocument[0]; + item.id = supportingDoc.id; + item.creationActor = supportingDoc.creationActor; + item.updatingActor = supportingDoc.updatingActor; + item.attachments = supportingDoc.attachments + && supportingDoc.attachments.length > 0 ? $al.model.mapAttachments( + supportingDoc.attachments) : []; + if (supportingDoc.comment) { + item.comment = supportingDoc.comment; + $al.view.bindSupportingDocumentsComments(supportingDoc); + } + } + } + } + $al.model._viewModel.request.supportingDocs = defaultResettlementDetails; + $al.model._viewModel.showSupportingDocuments = true; + + let defaultResettlementDetailsFiltered = defaultResettlementDetails.filter( item => item.docType !== $al.model.supportingDocumentsTypes.HOAEmail ); + $al.view._elements.attachmentsListView.data.element.kendoListView({ + dataSource: $al.model._viewModel.canEdit + ? defaultResettlementDetailsFiltered + : defaultResettlementDetailsFiltered.filter( item => item.attachments && item.attachments.length > 0 || (item.comment?.commentText ?? "").trim() !== "" ), + template: kendo.template($("#supporting-document-template").html()), + dataBound: function(e) { + + e.sender.dataSource.view().forEach(function (item, index) { + + var gridId = "attachments_grid_" + item.uid; + var $grid = $("#" + gridId); + new $a.KendoElementData($grid, { + attachments: item.attachments + }); + if (!$al.model._viewModel.canEdit) { + $grid.kendoGrid({ + noRecords: { template: "
    No file provided.
    " }, + dataSource: item.attachments || [], + scrollable: false, + sortable: true, + size: "small", + columns: $al.model.columnsSupportingDocumentsNotEditable + }); + }; + + let uploaderId = "uploaderId_" + item.docType.toLowerCase(); + $al.view.initializeFileUploader(index, uploaderId); + + if (item.comment) { + let commentId = "attachments_comment_" + item.docType.toLowerCase(); + let $comment = $("#" + commentId); + $comment.val(item.comment.commentText); + } + + }); + $('textarea.autoSize').autosize(); + } + }).removeClass('k-widget k-listview'); + $al.view._elements.attachmentsListView.data.component = "kendoListView"; + } + + bindSupportingDocumentsComments(supportingDoc) { + $('#attachment_comment_' + supportingDoc.docType.toLowerCase()).val( supportingDoc.comment.commentText ); + } + + _initCareerFileGrid() { + + const dataSourceAssignments = new kendo.data.DataSource({ + transport: { + read: function (options) { + $.ajax({ + url: $al.model._restCalls.assignmentsHistory._url, + data: { + "perId": $al.model._viewModel.perId, + }, + dataType: "json", + success: function (result) { + // notify the data source that the request succeeded + options.success(result); + }, + error: function (result) { + // notify the data source that the request failed + options.error(result); + } + }); + } + }, + schema: { + model: { + id: "id", + fields: { + id: {type: "number"}, + startDate: {type: "string"}, + endDate: {type: "string"}, + jobId: {type: "number"}, + statutoryLink: {from: "statutoryLink"}, + organizationName: {from: "job.organizationName"}, + jobCountryName: {from: "job.jobCountryName"}, + } + } + }, + sort: [ + {field: "startDate", dir: "desc"}, + ] + }); + + $al.view._elements.career_file.grid.data.element.kendoGrid({ + dataSource: dataSourceAssignments, + noRecords: { + template: $al.view.noCareerFilesTemplate + }, + scrollable: false, + sortable: false, + resizable: false, + size: "small", + columns: $al.model.careerFileGridColumns + }); + $al.view._elements.career_file.grid.data.component = "kendoGrid"; + } + + noCareerFilesTemplate() { + return "
    No Career File
    " + } + + _validateRequestDetails(){ + + const resettlementDetailsFormValidator = $(".resettlementDetailsForm").kendoValidator().data( + "kendoValidator"); + if (!resettlementDetailsFormValidator.validate()) { + $al.view.scrollToId('resettlementDetailsForm'); + return false; + } + return true; + } + _validateSupportingDocumentsComments(){ + + const validator = $(".supportingDocumentsForm").kendoValidator({ + messages: { + supportingDocumentRule: "Comment is required because document is mandatory", + }, + rules: { + supportingDocumentRule: input => { + if (input.is("[name=attachment_comments_evidence_new_residence]") + && $al.view.getFiles('uploaderId_evidence_new_residence').length === 0 + && $al.view.isEmpty(input.val().trim())) { + $al.view.scrollToId('attachments_comment_evidence_new_residence'); + return false; + } else if (input.is("[name=attachment_comments_lease_property_deeds]") + && $al.view.getFiles('uploaderId_lease_property_deeds').length === 0 + && $al.view.isEmpty(input.val().trim())) { + $al.view.scrollToId('attachments_comment_lease_property_deeds'); + return false; + } else if (input.is("[name=attachment_comments_utility_bill]") + && $al.view.getFiles('uploaderId_utility_bill').length === 0 + && $al.view.isEmpty(input.val().trim())) { + $al.view.scrollToId('attachments_comment_utility_bill'); + return false; + } + return true; + } + } + }).data("kendoValidator"); + return validator.validate(); + } + + scrollToId(id){ + document.getElementById(id).scrollIntoView({block: "center"}); + } + + hasAttachments(position){ + const index = +position; + return $al.model._viewModel.request.supportingDocs && + $al.model._viewModel.request.supportingDocs.length > index && + $al.model._viewModel.request.supportingDocs[index] && + $al.model._viewModel.request.supportingDocs[index].attachments && + $al.model._viewModel.request.supportingDocs[index].attachments.length > 0 + } + + _renderUnEditableSupportingDocumentsGrid(position, inputId) { + + if (!$al.model._viewModel.canEdit && $al.view.hasAttachments(position)){ + $(`#${inputId}_grid`).kendoGrid({ + noRecords: { + template: "
    No file provided.
    " + }, + dataSource: $al.model.getSupportingDocumentDataSource(position), + scrollable: false, + sortable: true, + size: "small", + columns: $al.model.columnsSupportingDocumentsNotEditable + }); + } + } + + _validateRequiredAndDateFormatOfPaymentDetails(){ + + const validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return !$al.view.isEmpty(input.val().trim()); + } else { + return true; + } + }, + paymentDateInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_date.id + "]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + invalidFormat: input => { + if (input.attr('required')) { + return input.val().length === input.val().trim().length; + } else { + return true; + } + }, + }, + messages: { + requiredFieldEmpty: "All fields are required", + paymentDateInvalid: "Invalid format of Payment Date", + invalidFormat: "Invalid format: remove spaces" + } + }).data("kendoValidator"); + return validator.validate(); + } + + _validatePaymentOrder(data){ + const validator = $("#mark_as_paid_data").kendoValidator({ + rules: { + paymentOrderInvalid: input => { + if (input.is("[name=" + $al.view._elements.payment_order.id + "]") + && !data) { + return false; + } else { + return true; + } + }, + }, + messages: { + paymentOrderInvalid: "Payment Order invalid", + } + }).data("kendoValidator"); + + return validator.validate(); + } +} + + + diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/styles/application.css b/e-rights-common/src/main/resources/META-INF/resources/common/web/styles/application.css new file mode 100644 index 0000000..5111067 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/styles/application.css @@ -0,0 +1,30 @@ +/* + Styling for breadcrumbs +*/ +ul.breadcrumb { + padding: 10px 16px; + list-style: none; + background-color: #eee; + margin-top: 80px; + margin-left: 15px; + margin-right: 15px; +} +ul.breadcrumb li { + display: inline; + font-size: 12px; +} +ul.breadcrumb li+li:before { + padding: 8px; + color: #999; + content: "/\00a0"; +} +ul.breadcrumb li a { + color: #428bca; + text-decoration: none; +} +.activeBreadcrumb { + color: #999; +} +.folderBreadcrumb { + color: #000000; +} diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/styles/e-rights-classes.css b/e-rights-common/src/main/resources/META-INF/resources/common/web/styles/e-rights-classes.css new file mode 100644 index 0000000..f6664b2 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/styles/e-rights-classes.css @@ -0,0 +1,329 @@ +.active-breadcrumb { + color: #999; +} + +.ank-sticky-menu #ank-layout-menu-hidden { + left: 250px; +} + +.ank-sticky-menu main { + padding-left: 270px; +} + +.ank-sticky-menu footer.ank-layout { + margin-left: 250px; +} + +.badge-gray { + background-color: #ced4da; +} + +.blockquote__copypaste { + background-color: #f5f6f6; + border: 1px solid #bdbdbd; + border-radius: 4px; + font-size: 14px; + padding: 15px 20px; + position:relative; + margin: 0; +} + +.blockquote__copypaste p {margin-bottom:0;} +.blockquote__copypaste .btn-copy { + color: #bdbdbd; + position: relative; + opacity:0; + transition: all 0.3s ease; + top: 11px; + right: 15px; + font-size: 20px;; +} + +.blockquote__copypaste:hover { + cursor:pointer; +} + +.blockquote__copypaste:hover .btn-copy { + opacity:1; +} + +.blockquote__copypaste-notification { + color: #ffffff; + background-color: #70B3E2; + padding: 10px; + border-radius: 4px; + position: absolute; + top: 50%; + left: 50%; + width: 150px; + margin-top: -22px; + margin-left: -85px; + display: none; + text-align:center; +} + +.btn { + font-size: 14px; +} + +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background: #d2322d; + border-color: #ac2925; +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #3276b1; + border-color: #285e8e; +} + +.btn-secondary { + color: #333; + background-color: #ebebeb; + border-color: #adadad; +} + +.btn-secondary:hover, +.btn-secondary:focus, +.btn-secondary:active, +.btn-secondary.active, +.open .dropdown-toggle.btn-secondary { + color: #333; + background-color: #ebebeb; + border-color: #adadad; +} + +.btn-sq-sm { + width: 11px !important; + height: 19px !important; + font-size: 13px; +} + +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #47a447; + border-color: #398439; +} + +.folder-breadcrumb { + color: #000000; +} + +.form-control { + font-size: 12px; +} + +.form-control:focus { + color: #495057; + background-color: #fff; + border-color: #80bdff; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25); +} + +.k-alt, +.k-grid-header, +.k-pivot-layout>tbody>tr:first-child>td:first-child, +.k-resource.k-alt, +.k-separator { + background-color: #f8f9fa; +} + +.k-autocomplete, +.k-dropdown-wrap.k-state-default, +.k-numeric-wrap.k-state-default, +.k-picker-wrap.k-state-default { + background-image: url(textures/highlight.png); + background-image: none,linear-gradient(to bottom,rgba(255,255,255,.25) 0,rgba(255,255,255,0) 100%); + background-position: 50% 50%; + background-color: #ffffff; + border-color: #ced4da; + transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; +} + +.k-autocomplete .k-input, +.k-dropdown-wrap .k-input, +.k-multiselect-wrap .k-input, +.k-numeric-wrap .k-input, +.k-picker-wrap .k-input, +.k-selectbox .k-input, +.k-textbox>input { + padding: .31257143em 0; +} + +.k-autocomplete, +.k-draghandle, +.k-dropdown-wrap, +.k-grid-header, +.k-grouping-header, +.k-header, +.k-numeric-wrap, +.k-pager-wrap, +.k-panelbar .k-tabstrip-items .k-item, +.k-picker-wrap, +.k-progressbar, +.k-state-highlight, +.k-tabstrip-items .k-item, +.k-textbox, .k-toolbar { + background-image: none; + background-color: #fff; +} + +.k-draghandle.k-state-selected:hover, +.k-ghost-splitbar-horizontal, +.k-ghost-splitbar-vertical, +.k-list>.k-state-highlight, +.k-list>.k-state-selected, +.k-marquee-color, +.k-panel>.k-state-selected, +.k-scheduler .k-scheduler-toolbar .k-state-selected, +.k-scheduler .k-today.k-state-selected, +.k-state-selected, +.k-state-selected:link, +.k-state-selected:visited, +.k-tool.k-state-selected { + background-color: #c4dffe; + border-color: #c4dffe; + font-weight: bold; +} + +.k-dropdown .k-state-focused, +.k-filebrowser-dropzone, +.k-list>.k-state-hover, +.k-pager-wrap .k-link:hover, +.k-scheduler .k-scheduler-toolbar ul li.k-state-hover, +.k-splitbar-horizontal-hover, +.k-splitbar-vertical-hover, +.k-state-hover { + color: #2e2e2e; + background-color: #c4dffe; + border-color: #c4dffe; +} + +.k-dropdown-wrap.k-state-active.k-state-border-down, +.k-dropdown-wrap.k-state-focused { + box-shadow: none; + color: #495057; + background-color: #fff; + border-color: #80bdff; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25); +} + +.k-dropdown-wrap .k-select, +.k-numeric-wrap .k-select, +.k-picker-wrap .k-select { + line-height: 2.15em; +} + +.k-dropzone { + padding: .25em; +} + +.k-grid-filter.k-state-active { + background-color: #87b7e6; +} + +.k-grid tr td { + border-top-width: 0px; + border-bottom-width: 0px; +} + +.k-grid tr td:first-child { + border-left-width: 0px; +} + +.k-grid tr:hover { + background-color: #efefef; + background-image: none; +} + +.k-grid-header th.k-header>.k-link { + font-weight: bold; +} + +.k-filter-row th, +.k-grid-header th.k-header { + border:none; + border-bottom: 2px solid #c5c5c5; + background-color: #f8f9fa; + font-size: 14px; + font-weight: bold; +} + +.k-list>.k-state-focused.k-state-selected, +.k-listview>.k-state-focused.k-state-selected, +.k-state-focused.k-state-selected, +td.k-state-focused.k-state-selected { + box-shadow: none; + color: #212529; +} + +.k-list-container { + border-color: #ccc; + background-color: #fff; +} + +.k-radio:checked+.k-radio-label:after { + border-color: #3276b1; + background-color: #3276b1; + border-radius: 50%; +} + +.k-radio:focus+.k-radio-label:before { + border-color: #3276b1; + box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25); +} + +.k-widget.k-dropdown .k-dropdown-wrap .k-select, +.k-widget.k-datepicker .k-picker-wrap .k-select { + padding-top: 4px; +} + +.k-widget .k-picker-wrap, +.k-widget .k-dropdown-wrap { + height: calc(1.5em + .75rem + 2px); +} + +.k-widget .k-picker-wrap .k-input, +.k-widget .k-dropdown-wrap .k-input { + padding: 0.612571em 0 0 5px; +} + +.k-widget.k-upload { + border-width: 1px; + border-color: rgb(206, 212, 218); +} + +#ear_marked_fund_listbox .k-item, +#ear_marked_fund + .k-dropdown .k-dropdown-wrap .k-input { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + min-width: 22ch; +} diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/styles/e-rights-elements.css b/e-rights-common/src/main/resources/META-INF/resources/common/web/styles/e-rights-elements.css new file mode 100644 index 0000000..cc3b6fa --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/styles/e-rights-elements.css @@ -0,0 +1,52 @@ +/* a.btn-primary, button.btn-primary { + color: #fff; + background-color: #428bca; + border-color: #357ebd; +} + +body { + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; + font-size: 12px; +} + +h1, h2, h3, h4, h5, h6 { + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; +} + +label { + margin-bottom: .25rem; + width: 200px; +} + +nav.ank-layout { + width: 250px; +} + +thead.k-grid-header th.k-header:last-child { + font-weight: bold; +} + +ul.breadcrumb { + padding: 10px 16px; + list-style: none; + background-color: #eee; + margin-top: 80px; + margin-left: 15px; + margin-right: 15px; +} + +ul.breadcrumb li { + display: inline; + font-size: 12px; +} + +ul.breadcrumb li+li:before { + padding: 8px; + color: #999; + content: "/\00a0"; +} + +ul.breadcrumb li a { + color: #428bca; + text-decoration: none; +} */ \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/styles/eeas_system.css b/e-rights-common/src/main/resources/META-INF/resources/common/web/styles/eeas_system.css new file mode 100644 index 0000000..f7bf855 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/styles/eeas_system.css @@ -0,0 +1,1356 @@ +/* ============= + Main styles to include in Ananke +=============*/ +.k-widget input { + border: 1px solid transparent; +} +.fs-11 { font-size: 11px } +.fs-12 { font-size: 12px } +.fs-13 { font-size: 13px } + +.w-85 { width: 85% } + +.text-forced-lowercase {text-transform: lowercase !important} +.text-forced-lowercase::first-letter {text-transform: uppercase !important} + +.text-info { + color: #5cc8cd!important; +} +.text-muted.text-muted-darkHoverColor:hover { + color: #424242!important; +} +.alert.alert-info { + border-color: #b6d7f6; + background: #edf5fd; +} +.alert.alert-info .metaTitle { color: #0c5460; margin-bottom: .75rem; } +.metaTitle-d-inline .metaTitle { display: inline;} + +.sidebar-menu ul li a i { + font-size: 22px; +} + +.btn-secondary { + color: #757575; + font-weight: 500; +} + +.eeas-global-loading { position: fixed; z-index: 12;} + +/* Remove following line */ +.enlarged #wrapper .left.side-menu .sidebar-menu>ul>li>a i { + font-size: 22px; +} + +.custom-control.custom-checkbox .k-tooltip-validation { + z-index: 1; +} + +.mimicBtn-primary .k-dropdown-wrap .k-input, +.mimicBtn-secondary .k-dropdown-wrap .k-input, +.mimicBtn-primaryOutline .k-dropdown-wrap .k-input, +.mimicBtn-secondaryOutline .k-dropdown-wrap .k-input{ + font-size: 0.875rem; + letter-spacing: .0892857143em; + font-weight: 700; +} +.k-dropdown.mimicBtn-primary.mimicBtn-primary__plus .k-dropdown-wrap .k-select, +.k-dropdown.mimicBtn-secondary.mimicBtn-secondary__plus .k-dropdown-wrap .k-select, +.k-dropdown.mimicBtn-primaryOutline.mimicBtn-primary__plus .k-dropdown-wrap .k-select, +.k-dropdown.mimicBtn-secondaryOutline.mimicBtn-secondary__plus .k-dropdown-wrap .k-select { + padding: 0 .375rem 0 0; +} + +.k-dropdown.mimicBtn-primary.mimicBtn-primary__plus .k-dropdown-wrap .k-select .k-icon, +.k-dropdown.mimicBtn-primaryOutline.mimicBtn-primary__plus .k-dropdown-wrap .k-select .k-icon { + font-family: "Material Icons Round"; + content:"add"; + font-size: 24px; + color: white; +} +.k-dropdown.mimicBtn-primaryOutline.mimicBtn-primary__plus .k-dropdown-wrap .k-select .k-icon { + color: #1976d2; +} +.k-dropdown.mimicBtn-primary.mimicBtn-primary__plus .k-dropdown-wrap .k-select .k-icon.k-i-arrow-60-down::before, +.k-dropdown.mimicBtn-primaryOutline.mimicBtn-primary__plus .k-dropdown-wrap .k-select .k-icon.k-i-arrow-60-down::before{ + content:"add"; +} +.mimicBtn-primary.k-dropdown .k-dropdown-wrap { + background-color: #1976d2; + border-color: #1976d2; + color: #fff; +} +.mimicBtn-primary.k-dropdown .k-dropdown-wrap.k-state-disabled, +.mimicBtn-primary.k-dropdown:hover .k-dropdown-wrap.k-state-disabled { + background-color: #1976d2; + border-color: #1976d2; + color: #fff; + opacity: .35; +} +.mimicBtn-secondary.k-dropdown .k-dropdown-wrap { + background-color: #eee; + border-color: #eee; + color: #757575; +} +.mimicBtn-primaryOutline.k-dropdown .k-dropdown-wrap { + background-color: #fff; + border-color: #1976d2; + color: #1976d2; +} +.mimicBtn-secondaryOutline.k-dropdown .k-dropdown-wrap { + background-color: #fff; + border-color: #eee; + color: #757575; +} +.k-autocomplete .k-input, .k-dateinput-wrap .k-input, .k-dropdown-wrap .k-input, .k-multiselect-wrap .k-input, .k-numeric-wrap .k-input, .k-picker-wrap .k-input { + height: calc(.75rem + 1.5em); +} + +.eeas-year-filter.k-dropdown .k-dropdown-wrap { + border-color: #e0e0e0; +} +.eeas-year-filter.k-dropdown .k-dropdown-wrap .k-input { + height: calc(.75rem + 1em); + font-size: 0.875rem; + font-weight: 700; + color: #757575; +} + + +.form-control::placeholder, +input.k-textbox::placeholder, +input.k-input::placeholder{ + font-weight: 400; + opacity: 1; + font-style: italic; + color: rgb(117, 117, 117); +} +/* Filter in dropdown */ +.k-list-filter { + padding: 0 .5rem .25rem; + min-height: calc(2.85rem + 0em); +} +.k-list-filter>.k-icon { + right: 1.5rem; + transform: translateY(-75%); +} + + + +.k-tooltip-validation { + font-weight: 400; +} + +/* eeas_forms.scss */ +.k-tooltip:not(.k-tooltip-closable) { + font-size: .75rem; +} +/**/ +.custom-validation-msg { + white-space: nowrap; + display: inline-flex; + position: relative; +} + +.k-grid.table-layout-fixed .k-grid-header-wrap, .k-grid.table-layout-fixed table { + table-layout: fixed; + width: 100%; +} + +.k-grid .k-tooltip.k-tooltip-validation { + /*max-width: 160px !important;*/ + margin: 0 !important; + left: 50%; + transform: translate(-50%, 130%); + color: #fff; + background-color: #f0544f; + padding: .35rem .5rem; +} +.k-grid .k-tooltip.k-tooltip-validation .k-callout-n { + border-bottom-color: #f0544f; +} +.k-textbox.fs-14 { + font-size: .875rem !important; +} + +.k-filter-menu .k-filter-menu-container .k-action-buttons .k-button { + font-size: 0.725rem; +} +.k-filter-menu .k-filter-menu-container .k-filter-help-text, +.k-filter-menu .k-filter-menu-container .k-filter-selected-items { + font-size: .8125rem; + font-weight: 400; + color: #757575; +} +.k-filter-menu .k-filter-menu-container .k-multicheck-wrap .k-label input { + margin: 0 0.5rem 0 0; +} +.k-filter-menu .k-filter-menu-container .k-multicheck-wrap .k-label .k-item-title { + font-weight: 500; + color: #424242; +} + +.k-filter-menu .k-autocomplete, .k-filter-menu .k-combobox, .k-filter-menu .k-dateinput, .k-filter-menu .k-datepicker, .k-filter-menu .k-datetimepicker, .k-filter-menu .k-dropdown, .k-filter-menu .k-dropdowntree, .k-filter-menu .k-maskedtextbox, .k-filter-menu .k-multiselect, .k-filter-menu .k-numerictextbox, .k-filter-menu .k-timepicker { + font-size: 0.875rem; +} + +.k-widget .row, .k-widget .row * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.k-grid.eeas-grid-sm td { + padding: 0.4rem; +} +.k-grid.eeas-grid-noHoverState tbody tr.k-alt:hover, +.k-grid.eeas-grid-noHoverState tbody tr.k-state-hover, +.k-grid.eeas-grid-noHoverState tbody tr:hover { + background-color: rgba(25,118,210,0); +} + +.k-grid.eeas-grid-noHeader .k-grid-header {display: none;} +.k-grid.eeas-grid-noBorder {} + +.k-button, .k-button-group .k-button.k-state-disabled:not(.k-state-active), .k-button-group.k-state-disabled .k-button:not(.k-state-active), +.k-colorpicker .k-picker-wrap, .k-combobox .k-select, .k-dateinput .k-select, .k-datepicker .k-select, .k-datetimepicker .k-select, +.k-dropdown .k-dropdown-wrap, .k-dropdowntree .k-dropdown-wrap, .k-editor-toolbar a.k-tool, .k-fieldselector .k-list li.k-item, +.k-gantt-views li, .k-grouping-header .k-group-indicator, .k-handle, .k-list-container .k-nodata .k-button, .k-map .k-navigator, +.k-multiselect, .k-numerictextbox .k-select, .k-pivot-toolbar .k-button, .k-scheduler-footer li, .k-scheduler-navigation .k-nav-next, +.k-scheduler-navigation .k-nav-prev, .k-scheduler-navigation .k-nav-today, .k-scheduler-views li, .k-spreadsheet-filter, .k-task-single, .k-timepicker .k-select, +.k-datepicker .k-picker-wrap, +.k-dropdown:hover .k-dropdown-wrap.k-state-disabled { + background-color: #f8f9fa; + border-color: #eee; +} +.k-button:hover, +.k-button-group .k-button.k-state-disabled:not(.k-state-active), +.k-button-group.k-state-disabled .k-button:not(.k-state-active), +.k-colorpicker:hover .k-picker-wrap, .k-combobox:hover .k-select, .k-dateinput:hover .k-select, .k-datepicker:hover .k-select, .k-datetimepicker:hover .k-select, +.k-dropdown:hover .k-dropdown-wrap, .k-dropdowntree:hover .k-dropdown-wrap, .k-editor-toolbar a.k-tool, .k-fieldselector .k-list li.k-item, +.k-gantt-views li, .k-grouping-header .k-group-indicator, .k-handle, .k-list-container .k-nodata .k-button, .k-map .k-navigator, +.k-multiselect, .k-numerictextbox .k-select, .k-pivot-toolbar .k-button, .k-scheduler-footer li, .k-scheduler-navigation .k-nav-next, +.k-scheduler-navigation .k-nav-prev, .k-scheduler-navigation .k-nav-today, .k-scheduler-views li, .k-spreadsheet-filter:hover, .k-task-single:hover, .k-timepicker:hover .k-select { + border-color: #b2dedb; +} + +.form-control { + border-color: #eee; + background-color: #f8f9fa; +} +.form-control:disabled, .form-control[readonly] { + border-color: #eee; + background-color: #f8f9fa; + cursor: not-allowed; + color: #212529; + opacity: 0.65; +} +.form-control:disabled:hover, .form-control[readonly]:hover { + border-color: #eee; +} + + +.custom-control-label:before { + background-color: #f8f9fa; + border: 2px solid rgba(33,37,41,.2); +} +.custom-switch .custom-control-label:after { + background-color: rgba(33,37,41,.2); +} +.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before { + background-color: rgba(25,118,210,.5); + border-color: transparent; +} +.custom-control-input:disabled~.custom-control-label { + color: #9b9b9b; +} +.followup-options-wrapper .custom-control-input:checked:disabled~.custom-control-label { + color: #424242; + font-weight: 400 ; +} + +/*.followup-options-wrapper .custom-switch .custom-control-input:disabled:not(:checked)~.custom-control-label, +.followup-options-wrapper .custom-switch .custom-control-input:disabled:checked~.custom-control-label:before, +.followup-options-wrapper .custom-switch .custom-control-input:disabled:checked~.custom-control-label:after { + display: none; +}*/ + +.customCheckRadio input[disabled]:not([checked]) + label:hover:after { + background-color: #eee; + border-color: #eee; +} + +.customCheckRadio input:disabled:hover + label, +.customCheckRadio input:disabled:hover + label::after { cursor: default } + +:root { + --followup_derogation_yellow: #fdb74e; + --followup_urgent_red: #f0544f; + --followup_doubleposting_blue: #368fe7; +} + +.customCheckRadio.optionDerogation input:checked:disabled~label:after, +.customCheckRadio.optionDerogation input:checked~label:after, +.customCheckRadio.optionDerogation label:hover:after { + background-color: var(--followup_derogation_yellow); + border-color: var(--followup_derogation_yellow); +} +.customCheckRadio.optionUrgent input:checked:disabled~label:after, +.customCheckRadio.optionUrgent input:checked~label:after, +.customCheckRadio.optionUrgent label:hover:after { + background-color: var(--followup_urgent_red); + border-color: var(--followup_urgent_red); +} +.customCheckRadio.optionException input:checked:disabled~label:after, +.customCheckRadio.optionDoubleposting input:checked~label:after, +.customCheckRadio.optionDoubleposting input:enabled + label:hover:after { + background-color: var(--followup_doubleposting_blue); + border-color: var(--followup_doubleposting_blue); +} +.customCheckRadio input[disabled]:not([checked])~label:hover:after { + background-color: #eee; + border-color: #eee; +} + +.followupBadge { padding-top: 0.35rem;} +.followupBadge .optionDerogation {color: var(--followup_derogation_yellow);} +.followupBadge .optionUrgent {color: var(--followup_urgent_red);} +.followupBadge .optionDoubleposting {color: var(--followup_doubleposting_blue);} + +/* ============= +Movement file : status +============= */ +.eeas-badge-status { + letter-spacing: 1px; + padding-left: .8em; + padding-right: .8em; + text-transform: uppercase; + line-height: 1rem; +} + +h1 + .eeas-badge-status-wrapper .eeas-badge-status { + transform: translateY(-7px); + font-size: 0.75rem; +} + +.eeas-badge-status.eeas-status-DRAFT, +.eeas-badge-status.badge-light { + background-color: #D9DEE2 !important; + color: #757575; +} +.eeas-badge-status.eeas-status-AWAITING, +.eeas-badge-status.eeas-status-PENDING, +.eeas-badge-status.eeas-status-DISPUTED, +.eeas-badge-status.eeas-status-PENDING_VERIF_POP, +.eeas-badge-status.badge-warning { + background-color: #FFE0B2 !important; + color: #8C4703; +} +.eeas-badge-status.eeas-status-CONFIRMED, +.eeas-badge-status.eeas-status-APPROVED, +.eeas-badge-status.eeas-status-PENDING-3, +.eeas-badge-status.eeas-status-PENDING-10, +.eeas-badge-status.eeas-status-CLO-100, +.eeas-badge-status.eeas-status-CLOSED, +.eeas-badge-status.eeas-status-VALIDATED, +.eeas-badge-status.badge-success { + background-color: #A6D6A6 !important; + color: #065B06; +} + +.eeas-badge-status.eeas-status-WITHDRAWN, +.eeas-badge-status.eeas-status-DELETED, +.eeas-badge-status.eeas-status-CLOSED, +.eeas-badge-status.eeas-status-CLO-0, +.eeas-badge-status.eeas-status-REJECTED, +.eeas-badge-status.eeas-status-CANCELLED, +.eeas-badge-status.eeas-status-REJECTED_POP, +.eeas-badge-status.badge-danger { + background-color: #FFCCD1 !important; + color: #A15653; +} +.eeas-badge-status.eeas-status-PAID, +.eeas-badge-status.eeas-status-SENT_TO_P2P, +.eeas-badge-status.eeas-status-COMPLETED { + background-color: #D1C4E8 !important; + color: #6B46BC; +} + +.eeas-badge-status.eeas-status-PAYMENT_FINALISED{ + background-color: #961cb9 !important; + color: #cb94e1; +} + +.eeas-badge-status.eeas-status-ONGOING { + background-color: #ACDBFC !important; + color: #0D47A1; +} + +/* Abac payment status colour */ + +div[class^='abac-status-'] .material-icons-round, div[class*=' abac-status-'] .material-icons-round { + transform: translateY(-1px); +} +.abac-status-undefined { + display: none; +} + +/*FAILED*/ +.abac-status-CLO0 .material-icons-round, +.abac-status-FAILED .material-icons-round { + color: #e35753; +} + +/* Information : Attention Needed */ +.abac-status-INVOICE_REQUESTED .material-icons-round, +.abac-status-INVOICE_REQUESTED .material-icons-round, +.abac-status-INVOICE_SECOND_VISA_REQUESTED .material-icons-round, +/* PASSIVE */ +.abac-status-PROCESSING .material-icons-round, +.abac-status-MOD0 .material-icons-round, +.abac-status-PEND20 .material-icons-round, +.abac-status-PEND30 .material-icons-round{ + color: #ACDBFC; +} + +/* Warning : Something not good */ +.abac-status-PEND3 .material-icons-round, +.abac-status-PEND10 .material-icons-round, +.abac-status-PEND-3 .material-icons-round, +.abac-status-PEND-10 .material-icons-round, +.abac-status-PEND25 .material-icons-round{ + color: #ffb84d; +} + +/* Done : Finish OK*/ +.abac-status-CLO100 .material-icons-round { + color: #D1C4E8; /* add more contrast with this colour #ae9ad9 */ +} +.abac-status-undefined .material-icons-round { + display: none; +} +.abac-status-undefined .abac-status-label { + display: none; +} + +/* Information : Attention Needed */ +.p2p-hub-status-ERR .material-icons-round, + /* PASSIVE */ +.p2p-hub-status-INIT .material-icons-round, +.p2p-hub-status-VERIF .material-icons-round, +.p2p-hub-status-EXEC .material-icons-round{ + color: #ACDBFC; +} + +/* Warning : Something not good */ +.p2p-hub-status-REJ .material-icons-round{ + color: #ffb84d; +} + +/* Done : Finish OK*/ +.p2p-hub-status-SUCCESS .material-icons-round { + color: #D1C4E8; /* add more contrast with this colour #ae9ad9 */ +} +.p2p-hub-status-undefined .material-icons-round { + display: none; +} + + + + +.eeas-pill-circle-user { + display: grid; + grid-template-columns: 1fr; + background-color: #BCD5EF; /* verdigris-lightest ?? */ + color: white; + border-radius: 50%; + width: 42px; + height: 42px; + font-size: 1.25rem; + font-weight: 500; + text-transform: uppercase; + align-content: center; + justify-items: center; + line-height: 1; +} + +/* ============= + Evacuation Level Icon color +============= */ + +.eeas-evacuation-level-1 {color: #ffb74d;} +.eeas-evacuation-level-2 {color: #ffb74d;} +.eeas-evacuation-level-3 {color: #F0544f;} +.eeas-evacuation-level-4 {color: #F0544f;} + +.verdigris-light {color: #80ccc4;} +.verdigris-lightest {color: #b2dedb;} + + /* ============= + ?? +============= */ + +.nav-pills.bg-primary .nav-item {padding: 0 1rem;} +.nav-pills.bg-primary a.nav-link {color: rgba(255,255,255,.6); font-size:.875rem; padding: 0.5rem 0; letter-spacing: 0.0892857143em; font-weight: 500;} +.nav-pills.bg-primary a.nav-link.underlineLink::before, +.nav-pills.bg-primary a.nav-link.underlineLink::after {top: calc(100% + -6px);} +.nav-pills.bg-primary a.nav-link:hover {color: rgba(255,255,255,.8);} +.nav-pills.bg-primary a.nav-link.active {color: rgba(255,255,255,1);} +.nav-pills.bg-primary a.nav-link.active.underlineLink::before, +.nav-pills.bg-primary a.nav-link.active.underlineLink::after, +.nav-pills.bg-primary a.nav-link.active .underlineLink::before, +.nav-pills.bg-primary a.nav-link.active .underlineLink::after {width: 100%; left: 0;} + +/* ============= + Button with dropdown - caret position +============= */ +.btn-block.dropdown-toggle::after { + float: right; + font-size: 18px; + margin: 7px 5px 0 0; +} + +/* eeas_default.scss */ +.btn i.e-lg { + margin-left: 10px; +} + + +/* ============= + Movement file Grid : show button on hover +============= */ +.k-grid .k-checkbox-label, .k-treeview .k-checkbox-label { + cursor: pointer; +} +.table-header-label, +.k-grid .k-grid-header th.k-header, +.k-grid-header .k-header>.k-link { + font-size: 11.5px; + letter-spacing: 0.05rem; + text-transform: uppercase; + line-height: .925rem; + font-weight: 800; +} + +.eeas-show-on-hover { + opacity: 0; + position: absolute; + right: 10px; + margin-top: -16px; +} +tr:hover .eeas-show-on-hover { + opacity: 1; +} + +.eeas-list-movement .k-grid-header { + padding: 0 !important; +} + +.eeas-list-movement .k-grid-content {overflow-y: visible;} +.eeas-list-movement .k-grid-content tr:hover, +.eeas-list-movement .k-grid-content tr.k-alt:hover {cursor: pointer;} + +.separator { + height: 4px; + width: 90px; + background-color: #bdbdbd; + transition: width 0.3s ease; +} +.section-links h2 { + color: #424242; +} +.section-links:hover .separator { + width: 180px; +} +/* ============= + Movement file View / Edit +============= */ +.eeas-card { position: relative;} + +.eeas-card .card-btn-edit, +.eeas-card .card-btn-edit-flatRate, +.eeas-card .card-btn-refresh-flatRate { + opacity: 0; + transition: opacity .3s ease; + position: absolute; + right: 15px; + z-index: 1; +} + + +.eeas-card .eeas-flatRates-wrapper { + position: relative; +} + +.eeas-card .eeas-flatRates-wrapper .font-weight-medium { + color: #757575; +} +.eeas-card .eeas-flatRates-wrapper .card-btn-edit-flatRate { + right: 0; + top: -41px; +} +.eeas-card .eeas-flatRates-wrapper .card-btn-refresh-flatRate { + right: 88px; + top: -41px; +} +.eeas-card.eeas-card-entitlement.disabled .eeas-flatRates-wrapper .card-btn-edit-flatRate { + display: none; +} + +.eeas-card:hover .card-btn-edit { + opacity:1; +} +.eeas-card .eeas-flatRates-wrapper:hover .card-btn-edit-flatRate, +.eeas-card.eeas-card-entitlement.disabled:hover .card-btn-edit-flatRate, +.eeas-card .eeas-flatRates-wrapper:hover .card-btn-refresh-flatRate { + opacity:1; +} + +.eeas-card .eeas-responseData-wrapper { + position: relative; + background-color: #A6D6A6; + color: #065B06; +} + +.eeas-card .eeas-errorData-wrapper { + position: relative; + background-color: #FFE0B2; + color: #8C4703; +} + +.error-label { + font-size: .8125rem; + letter-spacing: .5px; +} + +.eeas-card .eeas-timeline-axis-y { + position: absolute; + left: 31px; + top: 125px; +} + +@media (min-width: 768px) { + .eeas-pl-offset-left-icon { + padding-left: 62px; + } +} +@media (min-width: 1440px) { + .eeas-pl-offset-left-icon { + padding-left: 70px; + } +} + +.eeas-card .eeas-icon-overlay-circle { + position: absolute; + top: 15px; + left: 22px; + color: white; +} + + +/* Aside */ +.eeas-wizard-sidebar-sticky, +.eeas-sidebar-sticky { + position: sticky; + top: 65px; + +} + + +.eeas-sidebar-btn-wrapper .btn-block, +.eeas-rem-sidebar-btn-wrapper .btn-block { + display: inline-block; + width: inherit; + margin-top: 0rem; +} +@media (min-width: 1200px) { + .eeas-sidebar-sticky { + position: sticky; + top: 65px; + width:280px;/**/ + } + .eeas-sidebar-btn-wrapper .btn-block { + display: block; + width: 100%; + } +} +.eeas-rem-sidebar-btn-wrapper { + background-color: rgba(255,255,255, .85); +} + +.eeas-rem-sidebar-sticky { + position: sticky; + top: 48px; + z-index: 10; +} + +.eeas-rem-sidebar-sticky .shadow-sm { + box-shadow: 0 1px 1px rgba(0,0,0,.1),0px 0px 4px rgba(0,0,0,.1)!important; + -webkit-backdrop-filter: saturate(50%) blur(8px); + backdrop-filter: saturate(50%) blur(6px); +} + +.k-upload-files .k-file-name > a { + white-space: break-spaces; +} +.fs-14 .k-upload-files .k-file-name { + font-size: 14px; + font-weight: 500; +} + +@media (min-width: 1200px) { + .eeas-rem-sidebar-sticky { + position: relative; + top: unset; + } + .eeas-rem-sidebar-sticky .shadow-sm { + box-shadow: 0 1px 1px rgba(0,0,0,.1),0px 2px 2px rgba(0,0,0,.1)!important; + } + .eeas-rem-sidebar-sticky > div { + position: sticky; + top: 65px; + width:280px; + z-index: 10; + } + .eeas-rem-sidebar-btn-wrapper { + background-color: #ffffff; + } + .eeas-rem-sidebar-btn-wrapper .btn-block { + display: block; + width: 100%; + } + .eeas-rem-sidebar-btn-wrapper .btn-block+.btn-block { + margin-top: 0.5rem; + } +} + +.eeas-mouvement-timeline { + position: relative; + max-width: 320px; +} +.eeas-mouvement-timeline article { + position: relative; + overflow-y: hidden; +} +.eeas-mouvement-timeline article h6 { + font-size: .9375rem; +} +.eeas-mouvement-timeline article:last-child svg.eeas-bg-line { + display:none; +} +.eeas-mouvement-timeline .eeas-bg-line { + position: absolute; + z-index:0; + top: 10px; + left: 7px; +} + + + +/* ============= + Movement file wizard +============= */ + +.eeas-movement-wizard-steps article { + padding-bottom: 2.24rem; + background: url('../images/dots-vertical.png') transparent 12px 45px no-repeat; +} +.eeas-movement-wizard-steps article:last-child { + background: none; + padding-bottom: 0; +} +.eeas-movement-wizard-steps article .media-body { + min-height:88px; +} +.eeas-movement-wizard-steps h6.metaTitle, +.eeas-movement-wizard-steps span { + color: #9e9e9e; + font-size: 0.875rem; +} +.eeas-movement-wizard-steps .active h6, +.eeas-movement-wizard-steps .active span { + color: #424242; +} +.eeas-movement-wizard-steps svg.number-active { + display:none; +} +.eeas-movement-wizard-steps .active svg.number-default { + display:none; +} +.eeas-movement-wizard-steps .active svg.number-active { + display:block; +} + +/* ============= + Entitlements +============= */ + +#entitlements-non_default_ent_types-list .k-nodata div { + width: 180px; +} +/* TODO : clean up as we don't use it anymore +.eeas-card-entitlement .eeas-entitlement-btn-collapse { + color: #9e9e9e; + transform: translateY(-4px) rotate(180deg); + transition: all .3s ease; +} +.eeas-card-entitlement .eeas-entitlement-btn-collapse:hover { + color: #1976d2; +} +.eeas-card-entitlement .eeas-entitlement-btn-collapse.collapsed { + transform: translateY(-4px) rotate(0deg); +}*/ +.eeas-card-entitlement h3 { + color:#1976d2; +} +.eeas-card-entitlement.disabled h3 { + color:#9e9e9e +} +.eeas-card-entitlement .eeas-card-entitlement-status { + transform: translateY(-4px); + display: none; +} + +.eeas-card-entitlement.disabled .eeas-card-entitlement-status { + display: inline-block; +} +.eeas-card-entitlement.disabled .hide-if-disabled {display: none;} + +.eeas-card-entitlement .infoMsg-noRequest {display: block;} +.eeas-card-entitlement.disabled .infoMsg-noRequest {display: none;} +.eeas-card-entitlement .infoMsg-justification {display: none;} +.eeas-card-entitlement.disabled .infoMsg-justification {display: flex;} + +.eeas-card-entitlement a.eeas-card-entitlement-request, +.eeas-card-entitlement a.eeas-card-entitlement-topup-recovery, +.eeas-card-outline-dashed { + border: 1px dashed rgba(0,0,0,.125); + color: #424242; + padding: .875rem .875rem .65rem .875rem; + background-color: white; + z-index: 1; +} +.eeas-card-entitlement a.eeas-card-entitlement-request { margin-bottom: 15px} +.eeas-card-entitlement a.eeas-card-entitlement-request:last-child { margin-bottom: 0} + +.eeas-card-entitlement a.eeas-card-entitlement-request:hover, +.eeas-card-entitlement a.eeas-card-entitlement-topup-recovery:hover { + z-index: 1; + box-shadow: 0 10px 20px 0 rgb(0 0 0 / 20%); + border: 1px solid white; + text-decoration: none; + /*background-color: rgba(25,118,210,.11); + border: 1px solid rgba(25,118,210,.11); + border: 1px solid white;*/ +} +.eeas-card-entitlement a.eeas-card-entitlement-request:hover h3, +.eeas-card-entitlement a.eeas-card-entitlement-request:hover h4, +.eeas-card-entitlement a.eeas-card-entitlement-topup-recovery:hover h3, +.eeas-card-entitlement a.eeas-card-entitlement-topup-recovery:hover h4 { + color: #1976d2; + text-decoration: underline; +} + +.eeas-card-entitlement .eeas-input-amount { + width: 100%; + max-width: 150px; +} + +.eeas-card-entitlement.disabled h2.text-primary, +.eeas-card-entitlement.disabled .label, +.eeas-card-entitlement.disabled .font-weight-medium { + color: #9e9e9e !important; +} + +/* Top up / Recovery */ +.eeas-card-entitlement .eeas-card-entitlement-topup-recovery { + margin: 0 15px 0 45px; +} +.eeas-card-entitlement .eeas-card-entitlement-topup-recovery:last-child { + margin: 0 15px 0 45px; +} + +.eeas-card-entitlement .eeas-card-entitlement-topup-recovery-wrapper::before { + content: ""; + position: absolute; + top: -56px; + height: 90px; + left: 28px; + width: 16px; + border: 1px dashed rgba(0,0,0,.125); + border-bottom-left-radius: .25rem; + border-top: none; + border-right: none; +} + + + +/* ============= + Movement Files - Relatives +============= */ +.relatives-grid a.btn {color: white; height: 31px; opacity: 0; } + +.relatives-grid tbody tr.k-master-row:hover a.btn {opacity: 1; } +.relatives-grid a.btn.entitlementClaimEligibilityBtn, +.relatives-grid.relatives-grid-request a.btn{opacity: 1; } +.relatives-grid.relatives-grid-request tr.eeas-has-claim-reviewed a.btn {opacity: 0; } +.relatives-grid a.btn-outline-primary {color: #1976d2;} +.relatives-grid a.btn-outline-primary:hover {color: #ffffff;} + +.relatives-grid a.btn:not([href]):not([tabindex]), +.relatives-grid a.btn:not([href]):not([tabindex]):focus, +.relatives-grid a.btn:not([href]):not([tabindex]):hover { + color: white; + cursor: pointer; +} +.relatives-grid a.btn-outline-primary:not([href]):not([tabindex]){ + color: #1976d2; +} +.relatives-grid a.btn-outline-primary:not([href]):not([tabindex]):focus, +.relatives-grid a.btn-outline-primary:not([href]):not([tabindex]):hover { + color: #ffffff; + cursor: pointer; +} +.relatives-grid .k-grid tr > td { + color: #9e9e9e; +} +.eeas-grid .k-grid tr.k-state-selected > td { + background-color: rgba(25,118,210,.11); +} +.eeas-grid .k-grid tr.k-state-muted > td { + color: #9e9e9e; +} +.relatives-grid .k-grid tr.k-state-selected > td, +.relatives-grid .k-grid tr.k-state-selected + .k-detail-row > td, +.relatives-grid .k-grid tr.k-state-selected + .k-detail-row.k-alt > td, +.proforma-grid .k-grid tr.k-grid-edit-row > td, +.proforma-grid .k-grid tr.k-grid-edit-row + .k-detail-row > td, +.k-grid tr.k-state-selected > td { + color: #424242; + background-color: rgba(25,118,210,.11); +} +.proforma-grid .k-grid tr.k-grid-edit-row > td, +.relatives-grid .k-grid tr.eeas-has-claim > td { + border-bottom: 1px solid transparent; +} +.relatives-grid .k-detail-row td.k-detail-cell, +.proforma-grid .k-detail-row td.k-detail-cell { padding-top: 0; padding-bottom: 27px; } + +.relatives-grid .k-detail-row td.k-detail-cell h6, +.relatives-grid .k-detail-row td.k-detail-cell label, +.relatives-grid .k-detail-row td.k-detail-cell .eeas-claim-body-color { color:#9e9e9e } +.relatives-grid .k-detail-row td.k-detail-cell a.font-weight-medium { color:#9e9e9e } +.relatives-grid .k-grid tr.k-state-selected + .k-detail-row td.k-detail-cell h5 { color:#1976d2 } +.relatives-grid .k-grid tr.k-state-selected + .k-detail-row td.k-detail-cell .eeas-claim-body-color { color:#424242; } +.relatives-grid .k-grid tr.k-state-selected + .k-detail-row td.k-detail-cell a.font-weight-medium { color:#424242; } +.relatives-grid .k-grid tr.k-state-selected + .k-detail-row td.k-detail-cell a.font-weight-medium:hover { color:#1976d2 } + +.relatives-grid .k-grid tr.k-state-selected + .k-detail-row td.k-detail-cell .eeas-card-outline-dashed { border: 1px solid white;} + +.relatives-grid .k-detail-row td.k-detail-cell .material-icons-round.fs-48 { color: rgba(0,0,0,.125);} +.relatives-grid .k-grid tr.k-state-selected + .k-detail-row td.k-detail-cell .material-icons-round.fs-48{ color: #b2dedb;} + + +.relatives-grid .k-grid tbody tr.k-detail-row > td { + color: #424242; +} +.relatives-grid .k-grid tbody tr.k-master-row:hover { + background-color: white; +} + .k-grid tbody tr.k-detail-row:hover { + background-color: transparent; +} +.tudEligibility-icons-wrapper { + display: flex; + height: 33px; + align-items: center; +} +.tudEligibility-icons-wrapper + .eeas-badge-status { + margin: 6px 0 0 15px; + height: 22px; +} + + + +.eeas-joining-icon { display:none; } +.eeas-notJoining-icon { color: #dde2e7; } +.k-state-selected .eeas-notJoining-icon { display:none; } +.k-state-selected .eeas-joining-icon { display:block; } + +.k-grid a.entitlementClaimEligibilityCancelBtn { + color: #9e9e9e; +} +.k-grid a.entitlementClaimEligibilityCancelBtn:hover { + color: #1976d2; +} + +/* ============= + TUD Request +============= */ +span[class^='eeas-info-claim-'], +span[class*=' eeas-info-claim-'] { + opacity: 0; +} +span[class^='eeas-info-claim-'].d-inline-block, +span[class*=' eeas-info-claim-'].d-inline-block { + opacity: 1; +} + +.eeas-route-separator { + transform: translateY(2px); + display: inline-block; +} +.eeas-route-separator .material-icons-round { + transform: translate(0, -2px) rotate(90deg); +} + +.eeas-route-separator.eeas-route-separator-fat .material-icons-round { + transform: translate(0, -2px); + font-size: 48px; +} +/* ============= + Removal Request +============= */ + +@media (min-width: 1440px) { + .k-grid table { + font-size: .875rem; + } +} +.proforma-grid .k-grid-content.k-auto-scrollable { + overflow-x: hidden; + overflow-y: hidden; +} + +.proforma-grid .k-grouping-row:not(:first-child) > td { padding-top:40px;} +.k-grid .k-grid-toolbar .k-grid-add, +.k-grid tbody .k-grid-edit, +.k-grid tbody .k-grid-update, +.k-grid tbody .k-grid-cancel, +.k-grid tbody .k-grid-delete { + min-width: 0; +} +/* show validator message outside td */ +.proforma-grid .k-grid td { + overflow: visible; +} +.eeas-grid .k-grid .k-grid-toolbar .k-grid-add .k-icon, +.eeas-grid .k-grid tbody .k-grid-edit .k-icon, +.eeas-grid .k-grid tbody .k-grid-update .k-icon, +.eeas-grid .k-grid tbody .k-grid-cancel .k-icon, +.eeas-grid .k-grid tbody .k-grid-delete .k-icon, +.proforma-grid .k-grid .k-grid-toolbar .k-grid-add .k-icon, +.proforma-grid .k-grid tbody .k-grid-edit .k-icon, +.proforma-grid .k-grid tbody .k-grid-update .k-icon, +.proforma-grid .k-grid tbody .k-grid-cancel .k-icon, +.proforma-grid .k-grid tbody .k-grid-delete .k-icon { + margin: 0; +} +.proforma-grid .k-grid-header .k-header { + overflow: visible; + white-space: normal; +} +.proforma-grid .k-hierarchy-cell .k-i-expand, +.proforma-grid .k-hierarchy-cell .k-i-collapse { + display: none; +} +.proforma-grid .k-group-cell, +.proforma-grid .k-hierarchy-cell, +.proforma-grid .k-grid .k-group-col, +.proforma-grid .k-grid .k-hierarchy-col { + padding: 0; + width: 0; +} +/*.proforma-grid .k-hierarchy-cell, +.proforma-grid .k-group-cell { + width: 0; + padding:0; + border-width: 0px 0; +}*/ +.proforma-grid .k-grid .k-group-footer .k-group-cell+td { + border-left-width: 0; +} +.proforma-grid .k-grid .k-group-footer td { + border-width: 0; +} +.proforma-grid .k-grid-pager, +.proforma-grid .k-group-cell, +.proforma-grid .k-grouping-row, +.proforma-grid .k-grouping-row:hover, +.proforma-grid .k-grid tbody tr.k-grid-footer, +.proforma-grid .k-grid tbody tr.k-grid-footer:hover, +.proforma-grid .k-grid tfoot.k-grid-footer { + background-color: transparent; +} + + +.proforma-grid .k-autocomplete, +.proforma-grid .k-combobox .k-dropdown-wrap, +.proforma-grid .k-dateinput .k-dateinput-wrap, +.proforma-grid .k-datepicker .k-picker-wrap, +.proforma-grid .k-datetimepicker .k-picker-wrap, +.proforma-grid .k-input.k-textbox, +.proforma-grid .k-multiselect-wrap, +.proforma-grid .k-numerictextbox .k-numeric-wrap, +.proforma-grid .k-switch-off .k-switch-container, +.proforma-grid .k-textarea, +.proforma-grid .k-textbox, +.proforma-grid .k-timepicker .k-picker-wrap, +.proforma-grid .k-master-row .k-dropdown .k-dropdown-wrap { + background-color: #f8f9fa; + border-color: #dee2e6; +} + +.proforma-grid .k-input.k-textbox.k-invalid, +.proforma-grid .k-input.k-textbox.k-state-invalid, +.proforma-grid .k-input.k-textbox.ng-invalid.ng-dirty, +.proforma-grid .k-input.k-textbox.ng-invalid.ng-touched, +.proforma-grid .k-textarea.k-invalid, +.proforma-grid .k-textarea.k-state-invalid, +.proforma-grid .k-textarea.ng-invalid.ng-dirty, +.proforma-grid .k-textarea.ng-invalid.ng-touched, +.proforma-grid .k-textbox.k-invalid, +.proforma-grid .k-textbox.k-state-invalid, +.proforma-grid .k-textbox.ng-invalid.ng-dirty, +.proforma-grid .k-textbox.ng-invalid.ng-touched, +.proforma-grid .k-numerictextbox .k-numeric-wrap.k-invalid, +.k-numerictextbox .k-numeric-wrap.k-invalid, +.proforma-grid .k-master-row .k-dropdown .k-dropdown-wrap.k-invalid { + color: #f0544f; + border-color: #f0544f; +} + +.proforma-grid .k-numerictextbox:hover .k-numeric-wrap, +.proforma-grid .k-textbox:hover { + border-color: #c7cdd5; +} +.proforma-grid .k-dropdown .k-dropdown-wrap.k-state-focused, +.proforma-grid .k-numerictextbox .k-numeric-wrap.k-state-focused, +.proforma-grid .k-numerictextbox:focus .k-numeric-wrap, +.proforma-grid .k-textbox:focus { + background-color: white; + border-color: #c7cdd5; +} + + +.proforma-grid .k-autocomplete .k-input, +.proforma-grid .k-dateinput-wrap .k-input, +.proforma-grid .k-dropdown-wrap .k-input, +.proforma-grid .k-multiselect-wrap .k-input, +.proforma-grid .k-numeric-wrap .k-input, +.proforma-grid .k-picker-wrap .k-input { + font-size: 0.875rem; +} + + +.proforma-grid .k-grid tbody tr.k-group-footer:hover, +.proforma-grid .k-grid tbody tr.k-grid-edit-row:hover { + background-color: transparent; +} +.eeas-grid .k-grid tbody tr .btn-primary, +.proforma-grid .k-grid tbody tr.k-master-row .btn-primary { + border-color: #eee; + background-color: #eee; + box-shadow:none; +} +.eeas-grid .k-grid tbody tr.k-state-selected .btn-primary { + border-color: #dedede; + background-color: #dedede; +} +.eeas-grid .k-grid tbody tr .btn-primary .material-icons-round, +.eeas-grid .k-grid tbody tr .btn-danger .material-icons-round, +.proforma-grid .k-grid tbody tr.k-master-row .btn-primary .material-icons-round, +.proforma-grid .k-grid tbody tr.k-master-row .btn-danger .material-icons-round { + color: #757575; +} +.eeas-grid .k-grid tbody tr:hover .btn-primary, +.proforma-grid .k-grid tbody tr.k-master-row:hover .btn-primary { + background-color: #1976d2; + border-color: #1976d2; + box-shadow: 0 3px 1px -2px rgb(0 0 0 / 10%), 0 2px 2px 0 rgb(0 0 0 / 5%), 0 1px 5px 0 rgb(0 0 0 / 5%); + cursor: pointer; +} +.eeas-grid .k-grid tbody tr:hover .btn-danger .material-icons-round, +.eeas-grid .k-grid tbody tr:hover .btn-primary .material-icons-round, +.proforma-grid .k-grid tbody tr.k-master-row:hover .btn-danger .material-icons-round, +.proforma-grid .k-grid tbody tr.k-master-row:hover .btn-primary .material-icons-round { + color: white; +} +.eeas-grid .k-button.k-primary, .k-slider .k-draghandle { + font-size: .875rem; + border-color: #1976d2; + background-color: #1976d2; +} + + +.proforma-grid .k-grid tbody tr.k-master-row .btn-danger { + border-color: #eee; + background-color: #eee; + box-shadow:none; +} +.proforma-grid .k-grid tbody tr.k-master-row:hover .btn-danger { + background-color: #f0544f; + border-color: #f0544f; + box-shadow: inset 0 1px 0 hsl(0deg 0% 100% / 15%), 0 1px 1px rgb(0 0 0 / 8%); + box-shadow: 0 3px 1px -2px rgb(0 0 0 / 10%), 0 2px 2px 0 rgb(0 0 0 / 5%), 0 1px 5px 0 rgb(0 0 0 / 5%); + cursor: pointer; +} +.eeas-grid .k-grid tbody tr .k-grid-cancel, +.proforma-grid .k-grid tbody tr .k-grid-cancel { + border-color: #c9d0da; + color: #212529; + background-color: #c9d0da; +} +/* edit button size*/ +.eeas-grid .k-button, +.proforma-grid .k-button{ + padding: 0.375rem 0.39rem; +} +.eeas-grid .btn-group-sm>.btn, +.eeas-grid .btn-sm, +.proforma-grid .btn-group-sm>.btn, +.proforma-grid .btn-sm { + padding: .1875rem .3rem; +} +.text-warning.darker { color: #FA8C00 !important; } +.material-icons-round.text-warning.dark, +.proforma-grid .material-icons-round.text-warning { color: #FA8C00 !important; font-size: 18px; transform: translateY(1px); +} + +.proforma-grid .k-grid .k-grouping-row + tr .k-group-cell, +.proforma-grid .k-grid .k-grouping-row .k-group-cell { + border-top-width: 1px; +} +.proforma-grid .k-grouping-row td { + padding-left: 0; +} + +.proforma-grid .k-footer-template {display: none;} +.proforma-grid.grid-show-footer-tpl .k-footer-template {display: table-row;} + +.proforma-grid .k-footer-template td { + border-bottom: 0 solid transparent; +} + +.proforma-grid .summaryWrapper {margin-top: 40px;} +.proforma-grid .summaryWrapper small {font-size: 14px;} + +.proforma-grid .px-grid-cell {padding-left: 12px; padding-right: 12px} + + + /* ============= + Information Page + ============= */ +input.eeas-toggle-file-url + .eeas-toggle-tpl-url, +input.eeas-toggle-file-url + .eeas-toggle-tpl-file { + display: none; +} +input.eeas-toggle-file-url:not(:checked) ~ .eeas-toggle-tpl-url { + display: none; +} +input.eeas-toggle-file-url:not(:checked) ~ .eeas-toggle-tpl-file { + display: block; +} +input.eeas-toggle-file-url:checked ~ .eeas-toggle-tpl-url { + display: block; +} +input.eeas-toggle-file-url:checked ~ .eeas-toggle-tpl-file { + display: none; +} + +.eeas-card-info-category a h2 {color: #424242;} +.eeas-card-info-category a:hover h2 {color: #1976d2;} +.eeas-card-info-category a .material-icons-round {transition: all .2s ease; transform: rotate(180deg)} +.eeas-card-info-category a.collapsed .material-icons-round {transform: rotate(0deg)} +.eeas-card-info-category a:hover .material-icons-round { + transform: scale(1.25) rotate(180deg) translateY(1px); +} + +.eeas-card-info-category a.collapsed:hover .material-icons-round { + transform: scale(1.25) rotate(0deg) translateY(-1px); +} + + +.eeas-card-info-attachment .font-weight-medium { + color: #9e9e9e; +} + +.eeas-card-info-attachment.active .font-weight-medium { + color: #424242; +} + +.eeas-card-info-attachment label { + color: #9e9e9e; +} + +.eeas-card-info-attachment.active label { + color: #757575; +} + +.eeas-card-info-attachment a.font-weight-medium.text-decoration-none { + color: #9e9e9e; +} + +.eeas-card-info-attachment.active a.font-weight-medium.text-decoration-none { + color: #1976d2; +} +/* Comments in request */ + +.addComment-wrapper { + width: 100%; + padding-left: 70px; +} +.addComment-wrapper.noCommentYet { + padding-left: 0; +} +@media (min-width: 1200px) { + .addComment-wrapper { + width: 85%; + } +} +.comments-grid .k-grid { + background-color: transparent; +} + +/* ABAC PAYMENT DETAILS */ + +.eeas-sidebar-abac-wrapper .btn-abac-refresh {color: #5cc8cd; font-size: .875rem; } +.eeas-sidebar-abac-wrapper .btn.btn-sm.btn-abac-refresh .material-icons-round {font-size: 1.25rem; } + +.eeas-sidebar-abac-wrapper:hover .btn-abac-refresh {color: #1976d2; } + +.eeas-sidebar-abac-wrapper .btn-abac-mode-details { color: #757575; } +.eeas-sidebar-abac-wrapper:hover .btn-abac-mode-details { color: #1976d2; } +.eeas-sidebar-abac-wrapper:hover .btn-abac-mode-details:hover { } + +#abac-details-subposts-grid .k-grid-footer { + background-color: #f8f9fa; +} + + +/* Movement file creation wizard */ + +.checkbox-desc-label { + font-size: 0.95rem; + font-weight: 400; +} + +.eeas-actions-dropdown.mimicBtn-primary.k-dropdown .k-dropdown-wrap { + background-color: #ffffff !important; + color: #1976d2 !important; + border-color: #1976d2 !important; +} + +/* TRavel allowance */ +.postingAllowanceTotal .k-numerictextbox .k-numeric-wrap { + background-color: #f8f9fa; + border-color: #eee; +} +.postingAllowanceTotal .k-dropdown:hover .k-dropdown-wrap { + border-color: #b2dedb; +} +/* Resettlement */ +.supportingDocumentsForm .k-grid td { padding: 0rem 0 0 0; border: 0px solid transparent } +.supportingDocumentsForm .k-grid a { color: #1976d2; } + +.hide-dropdown-caret .k-dropdown-wrap .k-select { display: none; } \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/audit/list.movement.file.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/audit/list.movement.file.html new file mode 100644 index 0000000..a95b3f3 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/audit/list.movement.file.html @@ -0,0 +1,22 @@ + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/list/list.file.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/list/list.file.html new file mode 100644 index 0000000..557d594 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/list/list.file.html @@ -0,0 +1,29 @@ + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/common/file.future-assignment-no-job.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/common/file.future-assignment-no-job.html new file mode 100644 index 0000000..3dc252c --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/common/file.future-assignment-no-job.html @@ -0,0 +1,115 @@ + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/common/wizard.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/common/wizard.html new file mode 100644 index 0000000..96741ec --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/common/wizard.html @@ -0,0 +1,97 @@ + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/edit/file.declaration.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/edit/file.declaration.html new file mode 100644 index 0000000..7ad1f98 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/edit/file.declaration.html @@ -0,0 +1,322 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/edit/file.edit.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/edit/file.edit.html new file mode 100644 index 0000000..75b9fff --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/edit/file.edit.html @@ -0,0 +1,783 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/edit/file.entitlements.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/edit/file.entitlements.html new file mode 100644 index 0000000..cd5d3b5 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/edit/file.entitlements.html @@ -0,0 +1,480 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/edit/file.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/edit/file.html new file mode 100644 index 0000000..b5a85a3 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/movement-file/edit/file.html @@ -0,0 +1,386 @@ + + + + + diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/posting-allowance/accommodation-declaration-view.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/posting-allowance/accommodation-declaration-view.html new file mode 100644 index 0000000..7f810ec --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/posting-allowance/accommodation-declaration-view.html @@ -0,0 +1,730 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/posting-allowance/accommodation-payment-view.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/posting-allowance/accommodation-payment-view.html new file mode 100644 index 0000000..0f88650 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/posting-allowance/accommodation-payment-view.html @@ -0,0 +1,865 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/posting-allowance/posting-allowance.common.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/posting-allowance/posting-allowance.common.html new file mode 100644 index 0000000..e2a5498 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/posting-allowance/posting-allowance.common.html @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/posting-allowance/regularization-view.tar.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/posting-allowance/regularization-view.tar.html new file mode 100644 index 0000000..a97bcfe --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/posting-allowance/regularization-view.tar.html @@ -0,0 +1,626 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/posting-allowance/view.tar.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/posting-allowance/view.tar.html new file mode 100644 index 0000000..d7fd8b7 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/posting-allowance/view.tar.html @@ -0,0 +1,556 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/common.request.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/common.request.html new file mode 100644 index 0000000..eddeab1 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/common.request.html @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/edit.clr.rem.request.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/edit.clr.rem.request.html new file mode 100644 index 0000000..3919dbe --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/edit.clr.rem.request.html @@ -0,0 +1,585 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/edit.install.request.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/edit.install.request.html new file mode 100644 index 0000000..6fc3303 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/edit.install.request.html @@ -0,0 +1,637 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/edit.resettlement.request.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/edit.resettlement.request.html new file mode 100644 index 0000000..ddc64c3 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/edit.resettlement.request.html @@ -0,0 +1,612 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/edit.topup.request.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/edit.topup.request.html new file mode 100644 index 0000000..06b493c --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/edit.topup.request.html @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/edit.total.rem.request.html b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/edit.total.rem.request.html new file mode 100644 index 0000000..8ae5679 --- /dev/null +++ b/e-rights-common/src/main/resources/META-INF/resources/common/web/templates/request/edit.total.rem.request.html @@ -0,0 +1,566 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-common/src/main/resources/swagger/internal/e-rights-allowances.yml b/e-rights-common/src/main/resources/swagger/internal/e-rights-allowances.yml new file mode 100644 index 0000000..9cf467f --- /dev/null +++ b/e-rights-common/src/main/resources/swagger/internal/e-rights-allowances.yml @@ -0,0 +1,1627 @@ +swagger: '2.0' + +info: + description: EEAS e-RIGHTS Posting Allowances Request + version: 1.0.0 + title: EEAS e-RIGHTS Posting Allowances Request + termsOfService: 'http://swagger.io/terms/' + contact: + email: Fernando.TAPIA@ext.eeas.europa.eu + +host: intragate.test.ec.europa.eu + +tags: + - name: e-RIGHTS Posting Allowances Request + description: e-RIGHTS Posting Allowances Request + +schemes: + - https + +basePath: /internal/api + +paths: + /postingAllowances: + get: + tags: + - e-RIGHTS Posting Allowances Request + summary: lists Posting Allowances request + operationId: getPostingAllowances + description: getPostingAllowances + produces: + - application/json + responses: + '201': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/PostingAllowance' + '400': + description: Malformed syntax or a bad query + '401': + description: Permission Denied + '403': + description: Authentication failure + '500': + description: Internal server error + post: + tags: + - e-RIGHTS Create Posting Allowance Request + summary: Create Posting Allowance request + operationId: createPostingAllowance + description: createPostingAllowance + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: postingAllowance + required: true + schema: + $ref: '#/definitions/PostingAllowance' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/PostingAllowance' + '401': + description: Authentication failure + '403': + description: Not authorized + /postingAllowances/{postingAllowanceId}: + get: + tags: + - e-RIGHTS Posting Allowance Request + summary: Posting Allowance request + operationId: getPostingAllowance + description: getPostingAllowance + parameters: + - in: path + required: true + name: postingAllowanceId + type: integer + format: int64 + produces: + - application/json + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/PostingAllowance' + '400': + description: Malformed syntax or a bad query + '401': + description: Permission Denied + '403': + description: Authentication failure + '500': + description: Internal server error + put: + tags: + - e-RIGHTS Update Posting Allowance Request + summary: Update Posting Allowance request + operationId: updatePostingAllowance + description: updatePostingAllowance + consumes: + - application/json + parameters: + - in: path + required: true + name: postingAllowanceId + type: integer + format: int64 + - in: body + name: postingAllowance + required: true + schema: + $ref: '#/definitions/PostingAllowance' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/PostingAllowance' + '401': + description: Authentication failure + '403': + description: Not authorized + + /postingAllowances/stateMachineEvent/{stateMachineEvent}/{postingAllowanceId}: + post: + tags: + - e-RIGHTS Common + description: stateMachineEvent + operationId: stateMachineEvent + consumes: + - application/json + produces: + - application/json + parameters: + - in: path + name: postingAllowanceId + required: true + type: integer + format: int64 + - in: path + name: stateMachineEvent + type: string + required: true + + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/PostingAllowance' + '401': + description: Authentication failure + '403': + description: Not authorized + + /postingAllowances/{postingAllowanceId}/stateMachineHistory: + get: + tags: + - e-RIGHTS Back Office + operationId: getPostingAllowanceStateMachineHistory + produces: + - application/json + parameters: + - in: path + name: postingAllowanceId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/StateMachineTransition' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /allowances/initialize-to-draft/: + post: + tags: + - e-RIGHTS Back Office + description: create all allowances + operationId: createAllAsDraft + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: integer + format: int64 + '401': + description: Authentication failure + '403': + description: Not authorized + + + /postingAllowances/parent/{requestId}: + get: + + operationId: getPostingAllowancesByParent + parameters: + - in: path + required: true + name: requestId + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/PostingAllowance' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + + + /travelAllowances: + get: + tags: + - e-RIGHTS Travel Allowances Request + summary: lists Travel Allowances request + operationId: getTravelAllowances + description: getTravelAllowances + produces: + - application/json + responses: + '201': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/TravelAllowance' + '400': + description: Malformed syntax or a bad query + '401': + description: Permission Denied + '403': + description: Authentication failure + '500': + description: Internal server error + post: + tags: + - e-RIGHTS Create Travel Allowance Request + summary: Create Travel Allowance request + operationId: createTravelAllowance + description: createTravelAllowance + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: travelAllowance + required: true + schema: + $ref: '#/definitions/TravelAllowance' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/TravelAllowance' + '401': + description: Authentication failure + '403': + description: Not authorized + /travelAllowances/{travelAllowanceId}: + get: + tags: + - e-RIGHTS Travel Allowance Request + summary: Travel Allowance request + operationId: getTravelAllowance + description: getTravelAllowance + parameters: + - in: path + required: true + name: travelAllowanceId + type: integer + format: int64 + produces: + - application/json + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/TravelAllowance' + '400': + description: Malformed syntax or a bad query + '401': + description: Permission Denied + '403': + description: Authentication failure + '500': + description: Internal server error + put: + tags: + - e-RIGHTS Update Travel Allowance Request + summary: Update Travel Allowance request + operationId: updateTravelAllowance + description: updateTravelAllowance + consumes: + - application/json + parameters: + - in: body + name: travelAllowance + required: true + schema: + $ref: '#/definitions/TravelAllowance' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/TravelAllowance' + '401': + description: Authentication failure + '403': + description: Not authorized + + /regularizationAllowances/{regularizationAllowanceId}: + get: + tags: + - e-RIGHTS Regularization Allowance Request + summary: Regularization Allowance request + operationId: getRegularizationAllowance + description: getRegularizationAllowance + parameters: + - in: path + required: true + name: regularizationAllowanceId + type: integer + format: int64 + produces: + - application/json + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/RegularizationAllowance' + '400': + description: Malformed syntax or a bad query + '401': + description: Permission Denied + '403': + description: Authentication failure + '500': + description: Internal server error + put: + tags: + - e-RIGHTS Update Regularization Allowance Request + summary: Update Regularization Allowance request + operationId: updateRegularizationAllowance + description: updateRegularizationAllowance + consumes: + - application/json + parameters: + - in: body + name: regularizationAllowance + required: true + schema: + $ref: '#/definitions/RegularizationAllowance' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/RegularizationAllowance' + '401': + description: Authentication failure + '403': + description: Not authorized + + /createRegularizationAllowances/{postingAllowanceId}: + post: + tags: + - e-RIGHTS Create Regularization Allowance Request + summary: Create Regularization Allowance request + operationId: createRegularizationAllowance + description: createRegularizationAllowance + consumes: + - application/json + parameters: + - in: path + required: true + name: postingAllowanceId + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/RegularizationAllowance' + '401': + description: Authentication failure + '403': + description: Not authorized + + /accommodation-declarations/{personId}: + post: + tags: + - e-RIGHTS Create Accommodation Declaration Request + summary: Create Accommodation Declaration request + operationId: createAccommodationDeclaration + description: createAccommodationDeclaration + consumes: + - application/json + produces: + - application/json + parameters: + - in: path + name: personId + required: true + type: integer + format: int64 + responses: + '201': + description: Successful operation + schema: + type: integer + format: int64 + '401': + description: Authentication failure + '403': + description: Not authorized + /accommodation-declarations/{accommodationDeclarationId}: + get: + tags: + - e-RIGHTS Accommodation Declaration + summary: Accommodation Declaration + operationId: getAccommodationDeclaration + description: getAccommodationDeclaration + parameters: + - in: path + required: true + name: accommodationDeclarationId + type: integer + format: int64 + produces: + - application/json + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/AccommodationDeclarationAllowance' + '400': + description: Malformed syntax or a bad query + '401': + description: Permission Denied + '403': + description: Authentication failure + '500': + description: Internal server error + put: + tags: + - e-RIGHTS Update Accommodation Declaration + summary: Update Accommodation Declaration + operationId: updateAccommodationDeclaration + description: updateAccommodationDeclaration + consumes: + - application/json + parameters: + - in: body + name: accommodationDeclaration + required: true + schema: + $ref: '#/definitions/AccommodationDeclarationAllowance' + responses: + '200': + description: Successful operation + schema: + type: integer + format: int64 + '401': + description: Authentication failure + '403': + description: Not authorized + /accommodation-declarations/state-machine/event/{stateMachineEvent}/{accommodationDeclarationId}: + put: + tags: + - e-RIGHTS Create State Machine event for an Accommodation Declaration + description: stateMachineEvent + operationId: stateMachineEvent + produces: + - application/json + parameters: + - in: path + name: accommodationDeclarationId + required: true + type: integer + format: int64 + - in: path + name: stateMachineEvent + type: string + required: true + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/AccommodationDeclarationAllowance' + '401': + description: Authentication failure + '403': + description: Not authorized + /accommodation-declarations/state-machine/history/{accommodationDeclarationId}: + get: + tags: + - e-RIGHTS Gets State Machine history for an Accommodation Declaration + operationId: getStateMachineHistory + produces: + - application/json + parameters: + - in: path + name: accommodationDeclarationId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/StateMachineTransition' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /accommodation-declarations/can-create-accommodation-declaration: + get: + tags: + - e-RIGHTS Can accommodation declaration created + summary: Verify if an accommodation declaration can be created + operationId: canCreateAccommodationDeclaration + description: canCreateAccommodationDeclaration + responses: + '200': + description: Successful operation + schema: + type: integer + format: int64 + '401': + description: Authentication failure + '403': + description: Not authorized + + /accommodation-declarations/persons: + get: + tags: + - e-RIGHTS Back Office + summary: Retrieves list of persons/staff been able to create an Accommodation Declaration + operationId: getPersons + produces: + - application/json + parameters: + - in: query + name: perId + required: false + type: integer + format: int64 + description: Person ID + - in: query + name: firstName + required: false + type: string + description: First name + - in: query + name: lastName + required: false + type: string + description: Last name + - in: query + name: orgName + required: false + type: string + description: Organization name + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: MVPersonAccommodation + '400': + description: Malformed syntax or a bad query + '401': + description: Not authorized + '403': + description: Not authorized + '500': + description: Internal server error + + /accommodation-declarations/rental-months-calculation: + get: + tags: + - e-RIGHTS Back Office + summary: Calculate rental months + operationId: calculateRentalMonths + produces: + - application/json + parameters: + - in: query + name: startDate + type: string + required: true + description: Start Date + - in: query + name: endDate + type: string + required: true + description: End Date + responses: + '200': + description: Successful operation + schema: + type: integer + '400': + description: Malformed syntax or a bad query + '401': + description: Not authorized + '403': + description: Not authorized + '500': + description: Internal server error + + + /accommodation-payments/{accommodationPaymentId}: + get: + tags: + - e-RIGHTS Accommodation Payment + summary: Accommodation Payment + operationId: getAccommodationPayment + description: getAccommodationPayment + parameters: + - in: path + required: true + name: accommodationPaymentId + type: integer + format: int64 + produces: + - application/json + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/AccommodationPaymentAllowance' + '400': + description: Malformed syntax or a bad query + '401': + description: Permission Denied + '403': + description: Authentication failure + '500': + description: Internal server error + put: + tags: + - e-RIGHTS Update Accommodation Payment + summary: Update Accommodation Payment + operationId: updateAccommodationPayment + description: updateAccommodationPayment + consumes: + - application/json + parameters: + - in: body + name: accommodationDeclaration + required: true + schema: + $ref: '#/definitions/AccommodationPaymentAllowance' + responses: + '200': + description: Successful operation + schema: + type: integer + format: int64 + '401': + description: Authentication failure + '403': + description: Not authorized + /accommodation-payments/state-machine/event/{stateMachineEvent}/{accommodationPaymentId}: + put: + tags: + - e-RIGHTS Create State Machine event for an Accommodation Payment + description: stateMachineEvent + operationId: stateMachineEvent + produces: + - application/json + parameters: + - in: path + name: accommodationPaymentId + required: true + type: integer + format: int64 + - in: path + name: stateMachineEvent + type: string + required: true + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/AccommodationPaymentAllowance' + '401': + description: Authentication failure + '403': + description: Not authorized + /accommodation-payments/state-machine/history/{accommodationPaymentId}: + get: + tags: + - e-RIGHTS Gets State Machine history for an Accommodation Payment + operationId: getStateMachineHistory + produces: + - application/json + parameters: + - in: path + name: accommodationPaymentId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/StateMachineTransition' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + /accommodation-payments/{accommodationPaymentId}/calculate-amounts: + get: + tags: + - e-RIGHTS Calculate accommodation payment amount + operationId: calculateAmounts + produces: + - application/json + parameters: + - in: path + name: accommodationPaymentId + required: true + type: integer + format: int64 + - in: query + name: fromDate + required: true + type: string + - in: query + name: toDate + required: true + type: string + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/AccommodationPaymentCalculationResponse' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /postingAllowances/{postingAllowanceId}/canBeRegularized: + get: + tags: + - e-RIGHTS Can be regularized + summary: Verify if Posting Allowance can be regularized + operationId: canBeRegularized + description: canBeRegularized + parameters: + - in: path + required: true + name: postingAllowanceId + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: boolean + '401': + description: Authentication failure + '403': + description: Not authorized + + /postingAllowances/{postingAllowanceId}/isTheParentARegularization: + get: + tags: + - e-RIGHTS Can be regularized + summary: Chek if the parent is a regularization + operationId: isTheParentARegularization + description: isTheParentARegularization + parameters: + - in: path + required: true + name: postingAllowanceId + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: boolean + '401': + description: Authentication failure + '403': + description: Not authorized + + /postingAllowances/getEventNumber/{rightId}/{personId}: + get: + description: getEventNumber in sysper if right exists id and person who owns the right + operationId: getEventNumber + parameters: + - in: path + name: rightId + required: true + type: string + - in: path + name: personId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: integer + format: int32 + '401': + description: Authentication failure + '403': + description: Not authorized + + /postingAllowances/payInSysper/{postingAllowanceId}: + post: + description: send payment to sysper + operationId: sendPaymentToSysper + consumes: + - application/json + parameters: + - in: path + name: postingAllowanceId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/PostingAllowance' + '401': + description: Authentication failure + '403': + description: Not authorized + + /postingAllowances/refreshPlaceOfOrigin/{postingAllowanceId}: + post: + description: refresh place of origin + operationId: refreshPlaceOfOriginFromSysper + consumes: + - application/json + parameters: + - in: path + name: postingAllowanceId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/PostingAllowance' + '401': + description: Authentication failure + '403': + description: Not authorized + + /postingAllowances/state-machine-batch-event/{event}: + post: + description: batch event processing posting allowance + operationId: batchEventStateMachineProcessing + consumes: + - application/json + parameters: + - in: path + name: event + required: true + type: string + - in: body + name: postingAllowanceIds + required: true + schema: + type: array + items: + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/PostingAllowanceBatchEventResponse' + '401': + description: Authentication failure + '403': + description: Not authorized + + /postingAllowancesDefault/amounts: + get: + description: get default amount depending on iata codes + operationId: amounts + parameters: + - in: query + name: iataCodeFrom + required: true + type: string + - in: query + name: iataCodeTo + required: true + type: string + - in: query + name: postingAllowanceType + required: true + type: string + - in: query + name: postingAllowanceReqType + required: true + type: string + - in: query + name: exerciseYear + required: true + type: integer + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/PostingAllowanceAmounts' + '401': + description: Authentication failure + '403': + description: Not authorized + + /postingAllowances/{postingAllowanceId}/refreshDependentsAddress: + post: + tags: + - e-RIGHTS Common + operationId: refreshDependentsAddress + description: Refresh address of the dependents + parameters: + - in: path + name: postingAllowanceId + required: true + type: integer + format: int64 + responses: + '201': + description: Successful operation + '401': + description: Authentication failure + '403': + description: Not authorized + +definitions: + + PostingAllowance: + type: object + discriminator: postingAllowanceDiscriminatoryType + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + postingAllowanceId: + type: integer + format: int64 + staffMember: + $ref: VPerson + exerciseYear: + type: integer + format: int32 + postingAllowanceNumber: + type: integer + format: int32 + postingAllowanceStringId: + type: string + postingAllowanceType: + type: string + postingAllowanceReqType: + type: string + parentPostingAllowanceId: + type: integer + format: int64 + parentPostingAllowanceIdString: + type: string + comments: + type: string + outgoingTripAmount: + type: string + x-nt-type: Money + returnTripAmount: + type: string + x-nt-type: Money + calcTotalAmount: + type: string + x-nt-type: Money + totalAmount: + type: string + x-nt-type: Money + paymentPeriodYear: + type: integer + format: int32 + paymentPeriodMonth: + type: integer + format: int32 + originPeriodYear: + type: integer + format: int32 + originPeriodMonth: + type: integer + format: int32 + smId: + type: string + format: uuid + paymentReference: + type: string + paymentState: + type: string + assignmentCityCode: + type: string + assignmentCountryCode: + type: string + assignmentCityName: + type: string + assignmentIataCode: + type: string + originCityCode: + type: string + originCountryCode: + type: string + originCityName: + type: string + originIataCode: + type: string + recruitmentCityCode: + type: string + recruitmentCountryCode: + type: string + recruitmentCityName: + type: string + recruitmentIataCode: + type: string + status: + type: string + state: + type: string + delegationOrgId: + type: integer + format: int64 + originCountryName: + type: string + assignmentCountryName: + type: string + assignmentStartDate: + type: string + format: date + assignmentEndDate: + type: string + format: date + spouseId: + type: integer + format: int64 + doublePosting: + type: boolean + dualPosting: + type: string + paymentId: + type: string + paymentEventId: + type: string + sojId: + type: integer + format: int64 + placeOfOrigin: + type: string + assignmentAirportName: + type: string + originAirportName: + type: string + firstNationality: + type: string + iataCodeFrom: + type: string + iataCodeTo: + type: string + saveChanges: + type: boolean + expatriationAllowanceStartDate: + type: string + format: date + expatriationAllowanceEndDate: + type: string + format: date + childPostingAllowanceId: + type: integer + format: int64 + childPostingAllowanceStringId: + type: string + + VReportPostingAllowance: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + perId: + type: integer + format: int64 + postingAllowanceId: + type: integer + format: int64 + exerciseYear: + type: integer + format: int32 + postingAllowanceNumber: + type: integer + format: int32 + postingAllowanceStringId: + type: string + postingAllowanceType: + type: string + postingAllowanceReqType: + type: string + parentPostingAllowanceId: + type: integer + format: int64 + comments: + type: string + outgoingTripAmount: + type: string + x-nt-type: Money + returnTripAmount: + type: string + x-nt-type: Money + calcTotalAmount: + type: string + x-nt-type: Money + totalAmount: + type: string + x-nt-type: Money + paymentPeriodYear: + type: integer + format: int32 + paymentPeriodMonth: + type: integer + format: int32 + originPeriodYear: + type: integer + format: int32 + originPeriodMonth: + type: integer + format: int32 + smId: + type: string + format: uuid + paymentReference: + type: string + paymentState: + type: string + assignmentCityCode: + type: string + assignmentCountryCode: + type: string + assignmentPlace: + type: string + assignmentCityName: + type: string + assignmentIataCode: + type: string + originCityCode: + type: string + originCountryCode: + type: string + originCityName: + type: string + originIataCode: + type: string + recruitmentCityCode: + type: string + recruitmentCountryCode: + type: string + recruitmentCityName: + type: string + recruitmentIataCode: + type: string + status: + type: string + delegationOrgId: + type: integer + format: int64 + originCountryName: + type: string + assignmentCountryName: + type: string + assignmentStartDate: + type: string + format: date + assignmentPace: + type: string + paymentPeriod: + type: string + originPeriod: + type: string + firstName: + type: string + lastName: + type: string + spouseId: + type: integer + format: int64 + doublePosting: + type: boolean + dualPosting: + type: string + placeOfOrigin: + type: string + assignmentAirportName: + type: string + originAirportName: + type: string + originAirportLocationName: + type: string + firstNationality: + type: string + + AllowancePerson: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + dateOfBirth: + type: string + format: date + route: + type: string + perId: + type: integer + format: int64 + relPerId: + type: integer + format: int64 + trcCd: + type: integer + format: int64 + trcCode: + type: string + tripAmount: + type: string + x-nt-type: Money + entitledMonths: + type: integer + totalAmount: + type: string + x-nt-type: Money + cityFrom: + type: string + countryFrom: + type: string + iataCodeFrom: + type: string + cityTo: + type: string + countryTo: + type: string + iataCodeTo: + type: string + remarks: + type: string + firstName: + type: string + surname: + type: string + workInDelegation: + type: boolean + workInHQ: + type: boolean + orderTypeOfPerson: + type: integer + format: int64 + firstNationality: + type: string + + + TravelAllowance: + allOf: + - $ref: '#/definitions/PostingAllowance' + - type: object + properties: + postingAllowancePersons: + type: array + items: + $ref: AllowancePerson + RegularizationAllowance: + allOf: + - $ref: '#/definitions/PostingAllowance' + - type: object + properties: + postingAllowancePersons: + type: array + items: + $ref: AllowancePerson + newTotalAmount: + type: string + x-nt-type: Money + initialTotalAmount: + type: string + x-nt-type: Money + regularizeAmount: + type: string + x-nt-type: Money + copiedDependenciesFromPreviousAllowance: + type: boolean + AccommodationDeclarationAllowance: + allOf: + - $ref: '#/definitions/PostingAllowance' + - type: object + properties: + personBankInfo: + $ref: PersonBankInfo + paymentPreferredCurrency: + type: string + paymentPeriodicInterval: + type: integer + format: int32 + paymentMethod: + type: string + rentalContractStartDate: + type: string + format: date + rentalContractEndDate: + type: string + format: date + monthlyRentalAmount: + type: number + format: double + monthlyRentalAmountCeiling: + type: number + format: double + monthlyRentalCurrency: + type: string + monthlySecurityAmount: + type: number + format: double + monthlySecurityAmountCurrency: + type: string + monthlyRecurrentCosts: + type: number + format: double + monthlyRecurrentCostsCurrency: + type: string + monthlyRecurrentCostsDescription: + type: string + guaranteeAmount: + type: number + format: double + guaranteeAmountCurrency: + type: string + guaranteeReimbursementPeriod: + type: integer + format: int32 + remainingGuaranteeToReimburse: + type: number + format: double + remainingGuaranteeToReimburseCurrency: + type: string + familyMembers: + type: array + items: + $ref: '#/definitions/AccommodationDeclarationPerson' + supportingDocs: + type: array + items: + $ref: PostingAllowanceSupportingDoc + + AccommodationPaymentAllowance: + allOf: + - $ref: '#/definitions/PostingAllowance' + - type: object + properties: + personBankInfo: + $ref: PersonBankInfo + paymentPreferredCurrency: + type: string + paymentPeriodicInterval: + type: integer + format: int32 + paymentMethod: + type: string + rentalCoverStartDate: + type: string + format: date + rentalCoverEndDate: + type: string + format: date + monthlyRentalAmount: + type: number + format: double + monthlyRentalCurrency: + type: string + monthlySecurityAmount: + type: number + format: double + monthlySecurityAmountCurrency: + type: string + monthlyRecurrentCosts: + type: number + format: double + monthlyRecurrentCostsCurrency: + type: string + nonRecurrentCosts: + type: number + format: double + nonRecurrentCostsCurrency: + type: string + nonRecurrentCostsDescription: + type: string + multiplyingFactor: + type: number + format: double + guaranteeReimbursedAmount: + type: number + format: double + guaranteeReimbursedAmountCurrency: + type: string + remainingGuaranteeToReimburse: + type: number + format: double + remainingGuaranteeToReimburseCurrency: + type: string + supportingDocs: + type: array + items: + $ref: PostingAllowanceSupportingDoc + abacPaymentOrder: + type: string + abacPaymentRequest: + type: string + abacPaymentDate: + type: string + format: date + abacState: + type: string + abacWorkflowState: + type: string + abacPayment: + type: boolean + accommodationTotalAmount: + type: number + format: double + accommodationTotalCurrency: + type: string + accommodationSubTotalAmount: + type: number + format: double + accommodationSubTotalCurrency: + type: string + budgetLine: + type: string + PostingAllowanceSupportingDoc: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + postingAllowanceId: + type: integer + format: int64 + comment: + $ref: Comment + docType: + $ref: SupportingDocType + docOrder: + type: integer + format: int64 + docMandatory: + type: boolean + attachments: + type: array + items: + $ref: PostingAllowanceSupportingDocAttachment + + PostingAllowanceSupportingDocAttachment: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + fileUid: + type: string + format: uuid + fileName: + type: string + postingAllowanceSupportingDocId: + type: integer + format: int64 + + AccommodationDeclarationPerson: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + joiningAccommodation: + type: boolean + person: + $ref: Person + relative: + $ref: Person + relation: + type: string + address: + $ref: PersonAddress + accommodationDeclarationId: + type: integer + format: int64 + + PostingAllowanceBatchEvent: + type: object + x-nt-super-class: + - TransferObject + properties: + postingAllowanceId: + type: integer + format: int64 + postingAllowanceStringId: + type: string + message: + type: string + PostingAllowanceBatchEventResponse: + type: object + x-nt-super-class: + - TransferObject + properties: + failedMessage: + type: string + successMessage: + type: string + numberOfSuccess: + type: integer + numberOfFailed: + type: integer + + PostingAllowanceAmounts: + type: object + x-nt-super-class: + - TransferObject + properties: + outgoingTripAmount: + type: string + x-nt-type: Money + returnTripAmount: + type: string + x-nt-type: Money + + AccommodationPaymentCalculationResponse: + type: object + x-nt-super-class: + - TransferObject + properties: + multiplyingFactor: + type: number + format: double + guaranteeReimbursedAmount: + type: number + format: double + guaranteeReimbursedAmountCurrency: + type: string + remainingGuaranteeToReimburse: + type: number + format: double + remainingGuaranteeToReimburseCurrency: + type: string + alreadyReimbursedGuaranteeAmount: + type: number + format: double + alreadyReimbursedGuaranteeAmountCurrency: + type: string + monthlyRentalAmount: + type: number + format: double + monthlyRentalCurrency: + type: string + monthlySecurityAmount: + type: number + format: double + monthlyRecurrentCosts: + type: number + format: double \ No newline at end of file diff --git a/e-rights-common/src/main/resources/swagger/internal/e-rights-common.yml b/e-rights-common/src/main/resources/swagger/internal/e-rights-common.yml new file mode 100644 index 0000000..1a26335 --- /dev/null +++ b/e-rights-common/src/main/resources/swagger/internal/e-rights-common.yml @@ -0,0 +1,4020 @@ +swagger: '2.0' + +info: + description: EEAS e-RIGHTS Common + version: 1.0.0 + title: EEAS e-RIGHTS Common + termsOfService: 'http://swagger.io/terms/' + contact: + email: Fernando.TAPIA@ext.eeas.europa.eu + +host: intragate.test.ec.europa.eu + +tags: + - name: e-RIGHTS Common + description: e-RIGHTS Common + +schemes: + - https + +basePath: /internal/api + +paths: + /contexts: + get: + tags: + - e-RIGHTS Common + summary: lists contexts + operationId: getContexts + description: getContexts + produces: + - application/json + responses: + '201': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/MovementContext' + '400': + description: Malformed syntax or a bad query + '401': + description: Permission Denied + '403': + description: Authentication failure + '500': + description: Internal server error + + /contexts/{contextId}: + get: + tags: + - e-RIGHTS Common + operationId: getContext + produces: + - application/json + parameters: + - in: path + name: contextId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/MovementContext' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /document: + get: + tags: + - e-RIGHTS Common + operationId: searchDocument + parameters: + - in: query + name: criteria + required: true + type: string + description: criteria could be document id or savenumber + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/HrsDocument' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /document/url/{id}: + get: + tags: + - e-RIGHTS Common + operationId: getDocumentUrl + parameters: + - in: path + name: id + required: true + type: string + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/HrsDocument' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /movement-files/stateMachineEvent/{stateMachineEvent}: + post: + tags: + - e-RIGHTS Common + description: stateMachineEvent + operationId: stateMachineEvent + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: movementFile + required: true + schema: + $ref: '#/definitions/MovementFile' + - in: path + name: stateMachineEvent + type: string + required: true + + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/MovementFile' + '401': + description: Authentication failure + '403': + description: Not authorized + + /movement-files/{movementFileId}/stateMachineHistory: + get: + tags: + - e-RIGHTS Back Office + operationId: getStateMachineHistory + produces: + - application/json + parameters: + - in: path + name: movementFileId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/StateMachineTransition' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /movement-files/{movementFileId}/notificationsHistory: + get: + tags: + - e-RIGHTS Back Office + operationId: getEmailNotificationsHistory + produces: + - application/json + parameters: + - in: path + name: movementFileId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/Notification' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /permissions: + get: + tags: + - e-RIGHTS Common + operationId: getPermissions + parameters: + - in: query + name: movementFileId + required: false + type: integer + format: int64 + description: Movement file ID + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/Permissions' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /posting-allowances-permissions: + get: + tags: + - e-RIGHTS Common + operationId: getPostingAllowancePermissions + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/PostingAllowancePermissions' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /user-preferences: + post: + tags: + - e-RIGHTS Common + operationId: saveUserPreference + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: userPreference + required: true + schema: + $ref: '#/definitions/UserPreference' + responses: + '201': + description: Successful operation + schema: + type: integer + format: int64 + '401': + description: Authentication failure + '403': + description: Not authorized + get: + tags: + - e-RIGHTS Common + operationId: getUserPreferences + parameters: + - in: query + name: pagePath + required: true + type: string + description: page path + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/UserPreference' + '401': + description: Authentication failure + '403': + description: Not authorized + + /entitlement-types: + put: + tags: + - entitlement types + operationId: saveEntitlementType + consumes: + - application/json + produces: + - application/json + parameters: + - in: query + name: updateDefault + required: false + default: false + type: boolean + - in: body + name: entitlementType + required: true + schema: + $ref: '#/definitions/EntitlementType' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/EntitlementType' + '401': + description: Authentication failure + '403': + description: Not authorized + + post: + tags: + - entitlement types + operationId: createEntitlementType + produces: + - application/json + parameters: + - in: body + name: valueMap + description: Entitlement type category id and movement file id + required: true + schema: + type: object + properties: + entitlementTypeCatId: + type: integer + format: int64 + movementFileId: + type: integer + format: int64 + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/EntitlementType' + '401': + description: Authentication failure + '403': + description: Not authorized + + get: + tags: + - e-RIGHTS Common + operationId: getEntitlementTypes + produces: + - application/json + parameters: + - in: query + name: movementFileId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/EntitlementType' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /entitlement-types/emptyRates: + get: + tags: + - e-RIGHTS Common + operationId: getEntitlementsWithEmptyRates + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/VEmptyRateEntitlementType' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /entitlement-types/{entitlementTypeId}: + delete: + tags: + - entitlement types + operationId: deleteEntitlementType + produces: + - application/json + parameters: + - in: path + name: entitlementTypeId + description: Entitlement type id + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: integer + format: int64 + '401': + description: Authentication failure + '403': + description: Not authorized + + /entitlement-types-cat: + get: + tags: + - entitlement types cat + operationId: getEntitlementTypesCatForMovementFile + parameters: + - in: query + name: movementFileId + description: MovementFileId + required: true + type: integer + format: int64 + - in: query + name: assigned + description: true if entitelmetn Category Type is assigned to the movement file + type: boolean + + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/EntitlementTypeCat' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /entitlement-maxs-options: + get: + tags: + - entitlement max options + operationId: getEntitlementMaxCatOptions + parameters: + - in: query + name: entitlementMaxCatId + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/EntitlementMaxOption' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + + /movement-types: + get: + tags: + - e-RIGHTS Back Office + summary: list of movement types + operationId: getMovementTypes + description: get movement types + produces: + - application/json + parameters: + - in: query + name: contextId + required: false + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + type: string + x-nt-type: MovementType + '401': + description: Permission Denied + '403': + description: Authentication failure + '500': + description: Internal server error + + + /declaration-persons-eligibility: + get: + tags: + - declaration person family member eligibility + operationId: refreshDeclarationPersons + parameters: + - in: query + required: true + name: movementFileId + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/DeclarationPerson' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + + /declarations: + get: + tags: + - declaration + operationId: getDeclaration + parameters: + - in: query + required: true + name: movementFileId + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/Declaration' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + put: + operationId: updateDeclaration + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: declaration + required: true + schema: + $ref: '#/definitions/Declaration' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/Declaration' + '401': + description: Authentication failure + '403': + description: Not authorized + + /bank-accounts: + get: + tags: + - bank account + operationId: getBankAccounts + parameters: + - in: query + required: true + name: personId + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/PersonBankInfo' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /tud-requests: + put: + operationId: updateRequest + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: request + required: true + schema: + $ref: '#/definitions/TudRequest' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/TudRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /tud-requests/{requestId}: + get: + tags: + - tud request + operationId: getTudRequest + parameters: + - in: path + required: true + name: requestId + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/TudRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /adv-rem-requests: + put: + operationId: updateAdvanceRequest + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: request + required: true + schema: + $ref: '#/definitions/AdvanceRequest' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/AdvanceRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /adv-rem-requests/{requestId}: + get: + tags: + - advance request + operationId: getAdvanceRequest + parameters: + - in: path + required: true + name: requestId + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/AdvanceRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + + /tud-requests/stateMachineEvent/{stateMachineEvent}/{requestId}: + put: + tags: + - e-RIGHTS Common + description: stateMachineEvent + operationId: stateMachineEvent + produces: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + - in: path + name: stateMachineEvent + type: string + required: true + + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/TudRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /tud-requests/{requestId}/stateMachineHistory: + get: + tags: + - e-RIGHTS Back Office + operationId: getStateMachineHistory + produces: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/StateMachineTransition' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /tud-requests/movement-files/{movementFileId}/updateSpecificEntitlementMaxs: + get: + tags: + - e-RIGHTS Back Office tud Entitlement rate update skyscanner + operationId: updateSpecificEntitlementMaxs + produces: + - application/json + parameters: + - in: path + name: movementFileId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: string + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + + + + /adv-rem-requests/stateMachineEvent/{stateMachineEvent}/{requestId}: + put: + tags: + - e-RIGHTS Common + description: stateMachineEvent + operationId: stateMachineEvent + produces: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + - in: path + name: stateMachineEvent + type: string + required: true + + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/AdvanceRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /adv-rem-requests/{requestId}/stateMachineHistory: + get: + tags: + - e-RIGHTS Back Office + operationId: getStateMachineHistory + produces: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/StateMachineTransition' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /total-rem-requests: + put: + operationId: updateTotalRemRequest + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: request + required: true + schema: + $ref: '#/definitions/TotalRemRequest' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/TotalRemRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /total-rem-requests/{requestId}: + get: + tags: + - advance request + operationId: getTotalRemRequest + parameters: + - in: path + required: true + name: requestId + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/TotalRemRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /total-rem-requests/stateMachineEvent/{stateMachineEvent}/{requestId}: + put: + tags: + - e-RIGHTS Common + description: stateMachineEvent + operationId: stateMachineEvent + produces: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + - in: path + name: stateMachineEvent + type: string + required: true + + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/TotalRemRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /total-rem-requests/{requestId}/stateMachineHistory: + get: + tags: + - e-RIGHTS Back Office + operationId: getStateMachineHistory + produces: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/StateMachineTransition' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /clearing-requests: + put: + operationId: updateClearingRequest + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: request + required: true + schema: + $ref: '#/definitions/ClearingRequest' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/ClearingRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + post: + operationId: createClearingRequest + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: simpleRequestMap + required: true + schema: + type: object + properties: + requestId: + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/ClearingRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /clearing-requests/{requestId}: + get: + tags: + - clearing request + operationId: getClearingRequest + parameters: + - in: path + required: true + name: requestId + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/ClearingRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /clearing-requests/stateMachineEvent/{stateMachineEvent}/{requestId}: + put: + tags: + - e-RIGHTS Common + description: stateMachineEvent + operationId: stateMachineEvent + produces: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + - in: path + name: stateMachineEvent + type: string + required: true + + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/ClearingRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /clearing-requests/{requestId}/stateMachineHistory: + get: + tags: + - e-RIGHTS Back Office + operationId: getStateMachineHistory + produces: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/StateMachineTransition' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /topup-requests: + put: + operationId: updateTopUpRequest + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: request + required: true + schema: + $ref: '#/definitions/TopUpRequest' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/TopUpRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + post: + operationId: createTopUpRequest + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: request + required: true + schema: + $ref: '#/definitions/TopUpRequest' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/TopUpRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /topup-requests/{requestId}: + get: + tags: + - clearing request + operationId: getTopUpRequest + parameters: + - in: path + required: true + name: requestId + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/TopUpRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + delete: + tags: + - clearing request + operationId: deleteTopUpRequest + parameters: + - in: path + required: true + name: requestId + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/TopUpRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + + /requests/parent/{requestId}: + get: + tags: + - top-up request + operationId: getRequestsByParent + parameters: + - in: path + required: true + name: requestId + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/Request' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + /requests/downloadAsZip/{requestId}: + get: + tags: + - download requests + operationId: downloadFilesAsZip + parameters: + - in: path + required: true + name: requestId + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: string + format: byte + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /topup-requests/stateMachineEvent/{stateMachineEvent}/{requestId}: + put: + tags: + - e-RIGHTS Common + description: stateMachineEvent + operationId: stateMachineEvent + produces: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + - in: path + name: stateMachineEvent + type: string + required: true + + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/TopUpRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /topup-requests/{requestId}/stateMachineHistory: + get: + tags: + - e-RIGHTS Back Office + operationId: getStateMachineHistory + produces: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/StateMachineTransition' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /requests/{requestId}: + get: + tags: + - request + operationId: getRequest + parameters: + - in: path + required: true + name: requestId + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/Request' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /requests/{requestId}/indemnity: + post: + tags: + - request indemnity + operationId: createRequestIndemnity + parameters: + - in: path + required: true + name: requestId + type: integer + format: int64 + - in: body + name: requestIndemnity + required: true + schema: + $ref: '#/definitions/RequestIndemnity' + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/RequestIndemnity' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + get: + tags: + - request + operationId: getIndemnityRequest + parameters: + - in: path + required: true + name: requestId + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/RequestIndemnity' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /requests/markAsPaid: + put: + operationId: markAsPaidRequestInSumma + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: request + required: true + schema: + $ref: '#/definitions/Request' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/Request' + '401': + description: Authentication failure + '403': + description: Not authorized + /installation-requests: + put: + operationId: updateInstallationRequest + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: request + required: true + schema: + $ref: '#/definitions/InstallationRequest' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/InstallationRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /installation-requests/{requestId}: + get: + tags: + - instalation request + operationId: getInstallationRequest + parameters: + - in: path + required: true + name: requestId + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/InstallationRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /installation-requests/stateMachineEvent/{stateMachineEvent}/{requestId}: + put: + tags: + - e-RIGHTS Common + description: stateMachineEvent + operationId: stateMachineEvent + produces: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + - in: path + name: stateMachineEvent + type: string + required: true + + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/InstallationRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /installation-requests/{requestId}/stateMachineHistory: + get: + tags: + - e-RIGHTS Back Office + operationId: getStateMachineHistory + produces: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/StateMachineTransition' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /installation-requests/payInSysper/{requestId}: + post: + description: send payment to sysper + operationId: sendPaymentToSysper + consumes: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/InstallationRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /installation-requests/refresh-data-sysper/{requestId}: + put: + description: Refresh data from sysper + operationId: refreshDataFromSysper + consumes: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/InstallationRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /movement-docs/sections: + get: + tags: + - e-RIGHTS Back Office + operationId: getSections + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/MovementDocSection' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + put: + tags: + - e-RIGHTS Back Office + operationId: updateSection + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: docSection + required: true + schema: + $ref: '#/definitions/MovementDocSection' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/MovementDocSection' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /comments/request/{requestId}: + post: + tags: + - comments e-RIGHTS Common + operationId: createCommentForRequest + produces: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + description: The ID of the request to which the comment will be associated. + - in: body + name: comment + description: Comment model object + required: true + schema: + $ref: '#/definitions/Comment' + responses: + '201': + description: Successful operation. Returns new comment added. + schema: + $ref: '#/definitions/Comment' + '400': + description: Bad request + '401': + description: Authentication failure + '403': + description: Not authorized + get: + tags: + - comments e-RIGHTS Common + operationId: getCommentsForRequest + produces: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/Comment' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /comments/movement-file/{movementFileId}: + post: + tags: + - comments e-RIGHTS Common + operationId: createCommentForMovementFile + produces: + - application/json + parameters: + - in: path + name: movementFileId + required: true + type: integer + format: int64 + description: The ID of the MF to which the comment will be associated. + - in: body + name: comment + description: Comment model object + required: true + schema: + $ref: '#/definitions/Comment' + responses: + '201': + description: Successful operation. Returns new comment added. + schema: + $ref: '#/definitions/Comment' + '400': + description: Bad request + '401': + description: Authentication failure + '403': + description: Not authorized + get: + tags: + - comments e-RIGHTS Common + operationId: getCommentsForMovementFile + produces: + - application/json + parameters: + - in: path + name: movementFileId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/Comment' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /comments/{commentId}: + delete: + tags: + - comments e-RIGHTS Common + operationId: deleteComment + description: Performs a soft delete (marks a comment as deleted). + produces: + - application/json + parameters: + - in: path + name: commentId + description: ID of the comment to be marked as deleted + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /comments/postingAllowance/{postingAllowanceId}: + post: + tags: + - comments e-RIGHTS Common + operationId: createCommentForPostingAllowance + produces: + - application/json + parameters: + - in: path + name: postingAllowanceId + required: true + type: integer + format: int64 + description: The ID of the postingAllowance to which the comment will be associated. + - in: body + name: comment + description: Comment model object + required: true + schema: + $ref: '#/definitions/Comment' + responses: + '201': + description: Successful operation. Returns new comment added. + schema: + $ref: '#/definitions/Comment' + '400': + description: Bad postingAllowance + '401': + description: Authentication failure + '403': + description: Not authorized + get: + tags: + - comments e-RIGHTS Common + operationId: getCommentsForPostingAllowance + produces: + - application/json + parameters: + - in: path + name: postingAllowanceId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/Comment' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /testSYSPER/createRight/{perId}: + get: + tags: + - "ERights description" + summary: "Create Right [TEST SYSPER]" + description: "" + operationId: "createRightTestSysper" + produces: + - application/json + parameters: + - name: "perId" + in: "path" + description: "PerId for the person" + type: "integer" + format: "int32" + required: true + - name: "proxyTicket" + in: "query" + description: "The proxy ticket" + type: "string" + required: false + - name: "serviceUrl" + in: "query" + description: "Service Url" + type: "string" + required: false + - name: "testKey" + in: "query" + description: "Test key" + type: "string" + required: false + responses: + 200: + description: "Returns list of ERights for this agent" + schema: + $ref: '#/definitions/SysperResponse' + 403: + description: "Forbidden" + schema: + $ref: "#/definitions/Sp2RestMessageVO" + 500: + description: "Internal Server Error" + schema: + $ref: "#/definitions/Sp2RestMessageVO" + + /testSYSPER/getProxyTicket: + get: + tags: + - "ERights description" + summary: "Get Proxy Ticket [TEST SYSPER]" + description: "" + operationId: "getProxyTicket" + parameters: + - name: "serviceUrl" + in: "query" + description: "Service Url" + type: "string" + required: false + responses: + 200: + description: "Get Proxy Ticket" + schema: + type: string + 403: + description: "Forbidden" + schema: + $ref: "#/definitions/Sp2RestMessageVO" + 500: + description: "Internal Server Error" + schema: + $ref: "#/definitions/Sp2RestMessageVO" + + + + /resettlement-requests: + put: + operationId: updateResettlementRequest + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: request + required: true + schema: + $ref: '#/definitions/ResettlementRequest' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/ResettlementRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /resettlement-requests/{movementFileId}: + post: + operationId: createResettlementRequest + consumes: + - application/json + produces: + - application/json + parameters: + - in: path + name: movementFileId + required: true + type: integer + format: int64 + description: The ID of the MF for which we create the Resettlement Request. + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/ResettlementRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /resettlement-requests/{requestId}: + get: + tags: + - clearing request + operationId: getResettlementRequest + parameters: + - in: path + required: true + name: requestId + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/ResettlementRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /resettlement-requests/pay-sysper/{requestId}: + post: + description: send payment to Sysper + operationId: sendPaymentToSysper + consumes: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/ResettlementRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /resettlement-requests/state-machine/event/{stateMachineEvent}/{requestId}: + put: + tags: + - e-RIGHTS Common + description: stateMachineEvent + operationId: stateMachineEvent + produces: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + - in: path + name: stateMachineEvent + type: string + required: true + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/ResettlementRequest' + '401': + description: Authentication failure + '403': + description: Not authorized + + /resettlement-requests/state-machine/history/{requestId}: + get: + tags: + - e-RIGHTS Back Office + operationId: getStateMachineHistory + produces: + - application/json + parameters: + - in: path + name: requestId + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/StateMachineTransition' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + /assignments-history: + get: + tags: + - e-RIGHTS Back Office + operationId: getAssignmentsHistoryByPersonId + produces: + - application/json + parameters: + - in: query + name: perId + required: true + type: integer + format: int64 + description: Person ID + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/VAssignmentHist' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found +definitions: + + City: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + code: + type: string + name: + type: string + + Country: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + code: + type: string + name: + type: string + + HrsDocument: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + documentId: + type: string + saveNumber: + type: string + documentURL: + type: string + + MovementContext: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + description: Identifier + name: + type: string + description: Movement Context (Type) Name + + MovementFile: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + description: Identifier + state: + type: string + x-nt-type: MovementFileState + description: Movement file state + jobHolder: + $ref: VPerson + jobTo: + $ref: VJob + jobFrom: + $ref: VJob + movementContext: + $ref: MovementContext + movementType: + $ref: MovementType + budgetLineJobTo: + type: string + description: Commitment Position Job To + budgetLineJobFrom: + type: string + description: Commitment Position Job From + budgetLine: + type: string + description: Commitment Position + year: + type: integer + format: int32 + priority: + type: boolean + hodJobTo: + type: boolean + hodJobFrom: + type: boolean + + familyPosting: + type: boolean + jobToFamilyPosting: + type: boolean + hodPosting: + type: boolean + childFreePosting: + type: boolean + airfreightVolumeCeiling: + type: number + startDate: + type: string + format: date + description: Service Date + estimatedEndDate: + type: string + format: date + description: Service Date + allocatedOrganization: + type: integer + format: int64 + fileId: + type: string + readOnly: true + orgIdFrom: + type: integer + format: int64 + description: Organization id of the current job + orgIdTo: + type: integer + format: int64 + description: Organization id of the future job + assignStartDateFrom: + type: string + format: date + description: Staring date of the current assignment + assignEndDateFrom: + type: string + format: date + description: End date of the current assignment + assignStartDateTo: + type: string + format: date + description: Staring date of the future assignment + assignEndDateTo: + type: string + format: date + description: End date of the future assignment + jobFromStartDate: + type: string + format: date + description: Start date of the current job + orgCdFrom: + type: string + description: Current organization name + orgCdTo: + type: string + description: Future organization name + smId: + type: string + format: uuid + aipnFileId: + type: string + aipnDocumentId: + type: string + aipnNotifDate: + type: string + format: date + reasonEoc: + type: string + withoutRights: + type: boolean + movementNr: + type: integer + format: int64 + reasonDeletion: + type: string + evacuated: + type: boolean + countryTo: + $ref: Country + cityTo: + $ref: City + countryFrom: + $ref: Country + cityFrom: + $ref: City + delegationOrgFromId: + type: integer + format: int64 + personnelTypeId: + type: integer + format: int64 + personnelTypeDesc: + type: string + jobFunctionCode: + type: string + jobFunctionDesc: + type: string + institutionCode: + type: string + institutionDesc: + type: string + internalComment: + type: string + followupFlags: + type: string + iataCode: + type: string + iataFrom: + type: string + iataTo: + type: string + assignmentCountry: + type: string + assignmentCity: + type: string + + VReportMovementFile: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + description: Identifier + fileId: + type: string + lastName: + type: string + firstName: + type: string + status: + type: string + x-nt-type: MovementFileState + description: Movement file state + startDateFuture: + type: string + format: date + description: Start date of future job + endDateFuture: + type: string + format: date + description: End date of future job + movementTo: + type: string + movementFrom: + type: string + budgetLineFuture: + type: string + movementYear: + type: string + movementType: + type: string + movementContext: + type: string + perId: + type: integer + format: int64 + description: Person ID + futureAssignment: + type: string + priority: + type: boolean + allocatedToCurrent: + type: string + allocatedToFuture: + type: string + reason: + type: boolean + followupFlags: + type: string + personnelTypeId: + type: integer + format: int64 + personnelTypeDesc: + type: string + jobFunctionCode: + type: string + jobFunctionDesc: + type: string + institutionCode: + type: string + institutionDesc: + type: string + jobToFamPosting: + type: string + + MovementType: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + codeTo: + type: string + codeFrom: + type: string + movementType: + type: string + contextId: + type: integer + format: int64 + budgetLineJob: + type: string + x-nt-type: BudgetLineJob + + Permissions: + type: object + x-nt-super-class: + - TransferObject + properties: + canCreate: + type: boolean + canDelete: + type: boolean + canWithdraw: + type: boolean + canConfirm: + type: boolean + canExport: + type: boolean + canUpdate: + type: boolean + canView: + type: boolean + isOwner: + type: boolean + isOwnerOfAtLeastOneMovementFile: + type: boolean + canUpdateEntitlements: + type: boolean + canConsultEntitlements: + type: boolean + canUpdateDeclaration: + type: boolean + canReviewTudRequest: + type: boolean + canPayTudRequestManually: + type: boolean + canPayTudRequestAbac: + type: boolean + canResubmitTudRequest: + type: boolean + canReviewRemRequest: + type: boolean + canPayRemRequestManually: + type: boolean + canPayRemRequestAbac: + type: boolean + canAccessBackOffice: + type: boolean + canPayTopUpRequestManually: + type: boolean + canPayTopUpRequestAbac: + type: boolean + canApproveTopUpRequest: + type: boolean + canResubmitTopUpRequest: + type: boolean + canRejectTopUpRequest: + type: boolean + canSubmitTopUpRequest: + type: boolean + canResubmitRemRequest: + type: boolean + canSubmitRemRequest: + type: boolean + canRejectPaidTudRequest: + type: boolean + canRefreshInstallationRequest: + type: boolean + canApproveInstallationRequest: + type: boolean + canPayInstallationManually: + type: boolean + canRequestInstallationSysperPayment: + type: boolean + canRejectInstallation: + type: boolean + canUpdateInstallationPaymentInSysper: + type: boolean + canEditInstallation: + type: boolean + canRequestUpdatePaid: + type: boolean + canResetInstallationRequestFromApproved: + type: boolean + canResetInstallationRequestToDraft: + type: boolean + canRejectRemRequest: + type: boolean + canApproveRemRequest: + type: boolean + canEditRemRequest: + type: boolean + canDeleteComments: + type: boolean + canComplete: + type: boolean + canCancel: + type: boolean + canReopen: + type: boolean + personnelTypeId: + type: integer + format: int64 + personnelTypeDesc: + type: string + jobFunctionCode: + type: string + jobFunctionDesc: + type: string + institutionCode: + type: string + institutionDesc: + type: string + canSubmitInstallationRequest: + type: boolean + canCreateResettlementRequest: + type: boolean + canSubmitResettlementRequest: + type: boolean + canApproveResettlementRequest: + type: boolean + canRejectResettlementRequest: + type: boolean + canResetResettlementRequest: + type: boolean + canResetApprovalResettlementRequest: + type: boolean + canResetPaymentResettlementRequest: + type: boolean + canPaySysperResettlementRequest: + type: boolean + canPayManuallyResettlementRequest: + type: boolean + canCreateAccommodationDeclaration: + type: boolean + canListPostingEntitlements: + type: boolean + canListMovementFiles: + type: boolean + canListRotationalEntitlements: + type: boolean + canOwnAtLeastOnePostingAllowance: + type: boolean + + PostingAllowancePermissions: + type: object + x-nt-super-class: + - TransferObject + properties: + canCreateRegularization: + type: boolean + canReject: + type: boolean + canApprove: + type: boolean + canResubmit: + type: boolean + canPaySysper: + type: boolean + canPayManually: + type: boolean + canConsult: + type: boolean + canDeleteComments: + type: boolean + canOwnAtLeastOnePostingAllowance: + type: boolean + canSaveChanges: + type: boolean + hasOrganisationsWithListAuthority: + type: boolean + hasOrganisationIndependentListAuthority: + type: boolean + accDeclarationPermissions: + type: array + items: + type: string + accPaymentPermissions: + type: array + items: + type: string + UserPreference: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + description: Person id + perId: + type: integer + format: int64 + description: Person id + locale: + type: string + description: language + pagePath: + type: string + description: page path where the grid is displayed + preferences: + type: string + + VJob: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + description: Identifier + jobType: + type: string + description: Job type + example: Head of Delegation + personnelTypeId: + type: integer + format: int64 + personnelTypeDesc: + type: string + jobFunctionCode: + type: string + jobFunctionDesc: + type: string + institutionCode: + type: string + institutionDesc: + type: string + budgetLine: + type: string + description: Budgetary line + example: A-1100 + countryName: + type: string + description: Location - country + cityName: + type: string + description: Location - city + organizationName: + type: string + description: Organization name + orgId: + type: integer + format: int64 + description: Identifier + assignedStartDate: + type: string + format: date + assignedEndDate: + type: string + format: date + severityLevel: + type: integer + format: int64 + evacuationLevelCodeId: + type: integer + format: int64 + alertStatusId: + type: integer + format: int64 + evacuationCode: + type: string + orgCountryCode: + type: string + orgCityCode: + type: string + familyPostingTypeId: + type: integer + format: int64 + familyPostingType: + type: string + jobCountryCode: + type: string + jobCountryName: + type: string + jobCityCode: + type: string + jobCityName: + type: string + hod: + type: boolean + description: Is Head of Delegation + familyPostingTypeCategory: + type: string + delegationOrgId: + type: integer + format: int64 + + VPerson: + type: object + x-nt-super-class: + - TransferObject + properties: + perId: + type: integer + format: int64 + description: Person Identifier + firstName: + type: string + lastName: + type: string + gender: + type: string + email: + type: string + originCity: + type: string + originCountryDesc: + type: string + originCountryCode: + type: string + birthCity: + type: string + birthCountryDesc: + type: string + birthCountryCode: + type: string + recruitmentCity: + type: string + recruitmentCountry: + type: string + organizationName: + type: string + organizationCountry: + type: string + organizationCity: + type: string + orgId: + type: integer + format: int64 + description: Organization id + jobId: + type: integer + format: int64 + description: Job id + assignedStartDate: + type: string + format: date + earliestAssignedstartDate: + type: string + format: date + assignedEndDate: + type: string + format: date + latestAssignmentEndDate: + type: string + format: date + orgCd: + type: string + description: Organization name + privateEmail: + type: string + privateEmailSource: + type: string + description: Indicates source of the private email. Values 'EASREFN', 'ERIGHTS' (e-RIGHTS table for private emails) + statutoryLinkCode: + type: string + statutoryLinkDesc: + type: string + + EntitlementType: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + status: + type: string + x-nt-type: EntitlementTypeStatus + description: status of the entitlement type + example: active/disabled + entitlementMaxList: + type: array + items: + $ref: EntitlementMax + movementType: + $ref: MovementType + movementFileId: + type: integer + format: int64 + disableReason: + type: string + entitlementTypeCat: + $ref: EntitlementTypeCat + defaultEntType: + type: boolean + enable: + type: boolean + description: status of the entitlement type for the MF + example: active/disabled + requests: + type: array + items: + $ref: Request + + EntitlementMax: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + entitlementTypeCat: + $ref: EntitlementTypeCat + entitlementMaxCat: + $ref: EntitlementMaxCat + maxValue: + type: string + x-nt-type: Money + defaultMaxVal: + type: boolean + description: flag used when this flat rate amount should be saved as default for specific route + entitlementMaxOption: + $ref: EntitlementMaxOption + flatRateDuplicator: + type: string + x-nt-type: FlatRateDuplicator + comments: + type: string + enable: + type: boolean + city: + $ref: City + country: + $ref: Country + iataFrom: + type: string + iataTo: + type: string + maxVolume: + type: number + maxKg: + type: number + rateYear: + type: integer + format: int64 + startDate: + type: string + format: date + + EntitlementTypeCat: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + description: + type: string + entitlementMaxCatList: + type: array + items: + $ref: EntitlementMaxCat + mfType: + type: boolean + code: + type: string + x-nt-type: EntitlementTypeCatCode + order: + type: integer + format: int32 + + EntitlementMaxCat: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + description: + type: string + entitlementTypeCatId: + type: integer + format: int64 + nonFamilyPosting: + type: boolean + jobToNonFamilyPosting: + type: boolean + hod: + type: boolean + suggestion: + type: boolean + order: + type: integer + format: int32 + code: + type: string + x-nt-type: EntitlementMaxCatCode + + EntitlementTypeDefault: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + description: + type: string + entitlementTypeCat: + $ref: EntitlementTypeCat + movementTypeId: + type: integer + format: int64 + + StateMachineTransition: + type: object + x-nt-super-class: + - TransferObject + properties: + date: + type: string + format: date-time + departureState: + type: string + arrivalState: + type: string + event: + type: string + historyId: + type: integer + format: int64 + + Notification: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + description: Person id + notificationTemplateCode: + type: string + x-nt-type: NotificationTemplateCode + sentAt: + type: string + format: date-time + status: + type: string + x-nt-type: NotificationStatus + sendingDate: + type: string + format: date-time + + EntitlementMaxOption: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + description: + type: string + valueNumber: + type: integer + format: int64 + valueString: + type: string + entitlementMaxCat: + $ref: EntitlementMaxCat + + Person: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + title: + type: string + lastName: + type: string + firstName: + type: string + gender: + type: string + age: + type: integer + format: int32 + birthDate: + type: string + format: date + birthCity: + type: string + privateEmail: + type: string + + PersonAddress: + type: object + x-nt-super-class: + - TransferObject + properties: + perId: + type: integer + format: int64 + tadrCd: + type: integer + format: int32 + country: + $ref: Country + cityName: + type: string + postalCode: + type: string + streetName: + type: string + streetName1: + type: string + streetName2: + type: string + streetNumber: + type: string + postalBox: + type: string + additionalAddress: + type: string + additionalAddress2: + type: string + startDate: + type: string + format: date + endDate: + type: string + format: date + effectiveDate: + type: string + format: date + status: + type: string + createdDate: + type: string + format: date + updatedDate: + type: string + format: date + + + + Declaration: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + movementFileId: + type: integer + format: int64 + personBankInfo: + $ref: PersonBankInfo + declarationPersons: + type: array + items: + $ref: DeclarationPerson + enable: + type: boolean + state: + type: string + x-nt-type: DeclarationState + userCreatedAt: + type: string + format: date-time + userUpdatedAt: + type: string + format: date-time + staffMember: + $ref: Person + removalRequestType: + type: string + entryIntoStorage: + type: boolean + hodOption: + type: string + cityForEIS: + $ref: City + countryForEIS: + $ref: Country + volumeAirFreightCeiling: + type: number + kgAirFreightCeiling: + type: number + + + DeclarationPerson: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + person: + $ref: Person + relative: + $ref: Person + relation: + type: string + insEligible: + type: boolean + remEligible: + type: boolean + tudEligible: + type: boolean + tudEligibleReason: + type: string + declarationId: + type: integer + format: int64 + declared: + type: boolean + joiningResettlement: + type: boolean + remarks: + type: string + attachments: + type: array + items: + $ref: DeclarationPersonAttachment + claim: + type: boolean + + DeclarationPersonAttachment: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + fileUid: + type: string + format: uuid + fileName: + type: string + declarationPersonId: + type: integer + format: int64 + + + PersonBankInfo: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + ibanCode: + type: string + bankAccountCode: + type: string + baf: + type: string + perId: + type: integer + format: int64 + lef: + type: string + legalEntity: + type: string + bankName: + type: string + mainBankAccount: + type: integer + format: int64 + accountHolder: + type: string + accountCurrency: + type: string + businessPartner: + type: string + bankIdentification: + type: string + + BankAccount: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + ibanCode: + type: string + baf: + type: string + lef: + type: string + bankName: + type: string + + Request: + type: object + discriminator: requestType + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + requestStringId: + type: string + smId: + type: string + format: uuid + requestNumber: + type: integer + format: int64 + declaration: + $ref: Declaration + entitlementTypeId: + type: integer + format: int64 + entitlementTypeCat: + $ref: EntitlementTypeCat + personBankInfo: + $ref: PersonBankInfo + totalAmount: + type: string + x-nt-type: Money + year: + type: integer + format: int32 + requestPersons: + type: array + items: + $ref: RequestPerson + staffMember: + $ref: Person + includesStaffMember: + type: boolean + calculatedTotalAmount: + type: string + x-nt-type: Money + comments: + type: string + paymentOrder: + type: string + paymentRequest: + type: string + paymentDate: + type: string + format: date + requestDeclarationNo: + type: integer + format: int64 + requestType: + type: string + parentId: + type: integer + format: int64 + childrenId: + type: array + items: + type: integer + format: int64 + requestDetails: + type: array + items: + $ref: RequestDetail + city: + $ref: City + country: + $ref: Country + entryIntoStorage: + type: boolean + volumeAirFreightCeiling: + type: number + format: double + kgAirFreightCeiling: + type: number + format: double + sumOfSectionsTotalPersonal: + type: number + format: double + sumOfSectionsTotalVehicle: + type: number + format: double + sumOfSectionsTotalStorage: + type: number + format: double + sumOfSectionsUnforeseenAmount: + type: number + format: double + abacRequestState: + type: string + abacWorkflowState: + type: string + parent: + type: object + $ref: '#/definitions/Request' + paymentId: + type: string + paymentEventId: + type: string + justification: + type: string + abacPayment: + type: boolean + sysperPayment: + type: boolean + p2pHubOrderId: + type: number + format: double + p2pHubOrderStatus: + type: string + orderComment: + type: string + paymentDirectiveReference: + type: string + + + TudRequest: + allOf: + - $ref: '#/definitions/Request' + - type: object + properties: + flatRate: + type: string + x-nt-type: Money + flatRateFamily: + type: string + x-nt-type: Money + state: + type: string + x-nt-type: RequestState + description: Request state + required: + - requestType + + AdvanceRequest: + allOf: + - $ref: '#/definitions/Request' + - type: object + properties: + surfaceRate: + type: string + x-nt-type: Money + carRate: + type: string + x-nt-type: Money + airfreightRate: + type: string + x-nt-type: Money + storageRate: + type: string + x-nt-type: Money + requestOption: + type: string + state: + type: string + x-nt-type: AdvanceRequestState + description: Advance Request state + required: + - requestType + + RequestDetail: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + requestId: + type: integer + format: int64 + entitlementMaxCat: + $ref: EntitlementMaxCat + detailType: + type: string + detailTypeOrder: + type: integer + format: int64 + volume: + type: number + format: double + insuranceRate: + type: number + format: double + weight: + type: number + format: double + goodsValue: + type: string + x-nt-type: Money + proforma: + type: string + x-nt-type: Money + invoice: + type: string + x-nt-type: Money + amount: + type: string + x-nt-type: Money + attachments: + type: array + items: + $ref: RequestDetailAttachment + exchangeRate: + type: number + exchangeRateStartDate: + type: string + format: date + exchangeRateCurrency: + type: string + extraDetail: + type: boolean + justification: + type: string + exchangePayMonth: + type: string + + RequestDetailAttachment: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + fileUid: + type: string + format: uuid + fileName: + type: string + requestDetailId: + type: integer + format: int64 + attachmentType: + type: string + + RequestSupportingDoc: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + requestId: + type: integer + format: int64 + comment: + $ref: Comment + docType: + $ref: SupportingDocType + docOrder: + type: integer + format: int64 + docMandatory: + type: boolean + attachments: + type: array + items: + $ref: RequestSupportingDocAttachment + + RequestSupportingDocAttachment: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + fileUid: + type: string + format: uuid + fileName: + type: string + requestSupportingDocId: + type: integer + format: int64 + + RequestPerson: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + requestId: + type: integer + format: int64 + tudEligible: + type: boolean + tudEligibleReason: + type: string + declared: + type: boolean + person: + $ref: Person + relative: + $ref: Person + relation: + type: string + claim: + type: boolean + claimApproved: + type: boolean + attachments: + type: array + items: + $ref: RequestPersonAttachment + remarks: + type: string + + RequestPersonAttachment: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + fileUid: + type: string + format: uuid + fileName: + type: string + requestPersonId: + type: integer + format: int64 + + TotalRemRequest: + allOf: + - $ref: '#/definitions/Request' + - type: object + properties: + surfaceRate: + type: string + x-nt-type: Money + carRate: + type: string + x-nt-type: Money + airfreightRate: + type: string + x-nt-type: Money + storageRate: + type: string + x-nt-type: Money + requestOption: + type: string + state: + type: string + x-nt-type: TotalRemRequestState + extraRequestDetails: + type: array + items: + $ref: RequestDetail + + required: + - requestType + + ClearingRequest: + allOf: + - $ref: '#/definitions/Request' + - type: object + properties: + surfaceRate: + type: string + x-nt-type: Money + carRate: + type: string + x-nt-type: Money + airfreightRate: + type: string + x-nt-type: Money + storageRate: + type: string + x-nt-type: Money + requestOption: + type: string + state: + type: string + x-nt-type: ClearingRequestState + extraRequestDetails: + type: array + items: + $ref: RequestDetail + required: + - requestType + TopUpRequest: + allOf: + - $ref: '#/definitions/Request' + - type: object + properties: + parentId: + type: integer + format: int64 + reasonFor: + type: string + state: + type: string + x-nt-type: TopUpRequestState + attachments: + type: array + items: + $ref: RequestDetailAttachment + required: + - requestType + + + InstallationRequest: + allOf: + - $ref: '#/definitions/Request' + - type: object + properties: + state: + type: string + x-nt-type: InstallationState + indemnities: + type: array + items: + $ref: PersonIndemnity + addresses: + type: array + items: + $ref: InstallationPersonAddress + required: + - requestType + + ResettlementRequest: + allOf: + - $ref: '#/definitions/Request' + - type: object + properties: + state: + type: string + x-nt-type: ResettlementState + activeYears: + type: integer + format: int32 + statutoryLinkDesc: + type: string + supportingDocs: + type: array + items: + $ref: RequestSupportingDoc + + MovementDocAttachment: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + fileUid: + type: string + format: uuid + fileName: + type: string + movementDocId: + type: integer + format: int64 + + MovementDoc: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + description: + type: string + linkText: + type: string + link: + type: boolean + sortOrder: + type: integer + format: int32 + movementDocSectionId: + type: integer + format: int64 + movementDocAttachment: + $ref: MovementDocAttachment + enabled: + type: boolean + + MovementDocSection: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + descriptor: + type: string + movementType: + $ref: MovementType + movementContext: + $ref: MovementContext + hod: + type: boolean + nonFamilyPosting: + type: boolean + sortOrder: + type: integer + format: int32 + movementDocs: + type: array + items: + $ref: MovementDoc + + ExchangeRate: + type: object + x-nt-super-class: + - TransferObject + properties: + currency: + type: string + startDate: + type: string + format: date + exchangeRate: + type: number + endDate: + type: string + format: date + monthYear: + type: string + decimals: + type: boolean + + + VEmptyRateEntitlementType: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + status: + type: string + x-nt-type: EntitlementTypeStatus + description: status of the entitlement type + example: active/disabled + movementFile: + type: integer + format: int64 + disableReason: + type: string + defaultEntType: + type: boolean + enable: + type: boolean + description: status of the entitlement type for the MF + example: active/disabled + entitlementTypeCat: + type: string + entitlementMaxCatList: + type: string + movementType: + type: string + movementContext: + type: string + movementTo: + type: string + movementFrom: + type: string + allocatedToFuture: + type: string + movementYear: + type: string + perId: + type: integer + format: int64 + description: Person ID + fileId: + type: string + firstName: + type: string + lastName: + type: string + + AppParameter: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + paramType: + type: string + x-nt-type: AppParamType + key: + type: string + value: + type: string + + VAllowances: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + declarationId: + type: integer + format: int64 + movementFileId: + type: integer + format: int64 + entitlementTypeId: + type: integer + format: int64 + requestStringId: + type: string + createdAt: + format: date-time + status: + type: string + calcTotalAmount: + type: string + calcTotalAmountCurrency: + type: string + totalAmount: + type: string + totalAmountCurrency: + type: string + entitlement: + type: string + lastName: + type: string + firstName: + type: string + startDate: + format: date-time + to: + type: string + fileId: + type: string + requestType: + type: string + requestTypeForUI: + type: string + from: + type: string + priority: + type: boolean + paymentRequestNumber: + type: string + paymentOrder: + type: string + budgetLine: + type: string + abacStatus: + type: string + abacWorkflowStatus: + type: string + p2pHubOrderId: + type: number + format: double + p2pHubOrderStatus: + type: string + + PersonIndemnity: + type: object + x-nt-super-class: + - TransferObject + properties: + rigId: + type: integer + format: int64 + code: + type: string + dateFrom: + type: string + format: date + dateTo: + type: string + format: date + originPeriod: + type: string + paymentPeriod: + type: string + insNomFra: + type: string + insNomEng: + type: string + insNomDeu: + type: string + allowancesCount: + type: integer + format: int64 + indemnityTypeFr: + type: string + indemnityTypeEn: + type: string + indemnityTypeDe: + type: string + indemnityTypeEnUserFriendly: + type: string + unitFr: + type: string + unitEn: + type: string + unitDe: + type: string + comment: + type: string + + InstallationPersonAddress: + type: object + x-nt-super-class: + - TransferObject + properties: + address: + $ref: PersonAddress + relative: + $ref: Person + relation: + type: string + joining: + type: boolean + + Comment: + type: object + x-nt-super-class: + - AuditableTransferObject + description: Independent entity that stores comments associated with a Request or Movement File, etc. + required: + - commentText + properties: + id: + type: integer + format: int64 + description: Identifier + commentText: + type: string + authorName: + type: string + commentType: + schema: + type: string + enum: + - REQUEST + - MOVEMENT_FILE + entityId: + type: integer + format: int64 + description: Reference to the MF or Request that this comment is associated with. + displayOrder: + type: integer + format: int64 + deleted: + type: boolean + description: Whether or not it has to be displayed. + + Sp2RestMessageVO: + type: "object" + properties: + message: + type: "string" + type: + type: "string" + enum: + - "INFO" + - "SUCCESS" + - "WARNING" + - "ERROR" + - "DEBUG" + SysperResponse: + type: "object" + x-nt-super-class: + - TransferObject + properties: + baseUrl: + type: string + serviceUrl: + type: string + requestHeader: + type: string + requestBody: + type: string + responseHttpStatus: + type: string + responseHeader: + type: string + responseBody: + type: string + + RequestIndemnity: + type: "object" + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + number: + type: integer + format: int32 + type: + type: string + unit: + type: string + originPeriodYear: + type: integer + format: int32 + originPeriodMonth: + type: string + paymentPeriodYear: + type: integer + format: int32 + paymentPeriodMonth: + type: string + comment: + type: string + indemnityTypeEnUserFriendly: + type: string + hoaEmailFlag: + type: boolean + VAssignmentHistEeas: + type: "object" + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + perId: + type: integer + format: int64 + startDate: + type: string + format: date + endDate: + type: string + format: date + jobId: + type: integer + format: int64 + job: + $ref: VJob + VAssignmentHist: + type: "object" + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + perId: + type: integer + format: int64 + startDate: + type: string + format: date + endDate: + type: string + format: date + jobId: + type: integer + format: int64 + job: + $ref: VJob + statutoryLink: + type: string + MVPersonAccommodation: + type: object + x-nt-super-class: + - TransferObject + properties: + perId: + type: integer + format: int64 + description: Person Identifier + firstName: + type: string + lastName: + type: string + organizationName: + type: string + + \ No newline at end of file diff --git a/e-rights-common/src/main/resources/swagger/internal/e-rights-entities.yml b/e-rights-common/src/main/resources/swagger/internal/e-rights-entities.yml new file mode 100644 index 0000000..9f24acd --- /dev/null +++ b/e-rights-common/src/main/resources/swagger/internal/e-rights-entities.yml @@ -0,0 +1,607 @@ +swagger: '2.0' + +info: + description: EEAS e-RIGHTS Common + version: 1.0.0 + title: EEAS e-RIGHTS Common + termsOfService: 'http://swagger.io/terms/' + contact: + email: Fernando.Tapia@ext.eeas.europa.eu + +host: intragate.test.ec.europa.eu + +tags: + - name: e-RIGHTS Entities + description: e-RIGHTS Entities + +schemes: + - https + +basePath: /internal/api + +paths: + + /family-members: + get: + tags: + - family members + operationId: getFamilyMembers + parameters: + - in: query + required: true + name: staffMemberId + type: integer + format: int64 + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/FamilyMember' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + + /exchange-rates: + get: + parameters: + - name: validDate + in: query + description: Date the exchange rate is valid, current date by default if not informed. + type: string + format: date + tags: + - e-RIGHTS Back Office + operationId: getExchangeRates + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/ExchangeRate' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /exchange-rates/{currency}: + get: + parameters: + - in: path + name: currency + required: true + type: string + description: Currency to obtain the exchange rates + tags: + - e-RIGHTS Back Office + operationId: getExchangeRatesForCurrency + produces: + - application/json + description: Return all the exchange rates of the last 4 years + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/ExchangeRate' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + /app-parameters: + get: + parameters: + - name: paramType + in: query + description: Parameter type + type: string + required: false + tags: + - e-RIGHTS Back Office + operationId: getAppParameters + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/AppParameter' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + /countries: + get: + tags: + - e-RIGHTS Back Office + operationId: getCountries + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/Country' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /countries/{countryCode}/cities: + get: + tags: + - e-RIGHTS Back Office + operationId: getCities + parameters: + - in: path + name: countryCode + description: Country code + required: true + type: string + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/City' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /iata-airports/city/{cityCode}: + get: + tags: + - e-RIGHTS Back Office + operationId: getAirportFromCity + parameters: + - in: path + required: true + name: cityCode + type: string + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/IataAirport' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + + + /iata-airports/{id}: + get: + tags: + - e-RIGHTS Back Office + operationId: getIataAirportsById + parameters: + - in: path + required: true + name: id + type: string + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/IataAirport' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + + /iata-airports: + get: + tags: + - e-RIGHTS Back Office + operationId: getIataAirports + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/IataAirport' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /iata-airports/route-price: + get: + tags: + - e-RIGHTS Back Office + operationId: getIATARoutePrice + parameters: + - in: query + required: true + name: originId + type: string + - in: query + required: true + name: destinationId + type: string + - in: query + required: false + name: firstStopId + type: string + - in: query + required: false + name: secondStopId + type: string + - in: query + required: false + name: thirdStopId + type: string + - in: query + name: exerciseYear + required: true + type: integer + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: number + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /institution-codes: + get: + tags: + - e-RIGHTS Back Office + operationId: getInstitutionCodes + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/InstitutionCode' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /function-codes: + get: + tags: + - e-RIGHTS Back Office + operationId: getFunctionCodes + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/FunctionCode' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /statutory-link-codes: + get: + tags: + - e-RIGHTS Back Office + operationId: getStatutoryLinkCodes + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/StatutoryLinkCode' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + /personnel-types: + get: + tags: + - e-RIGHTS Back Office + operationId: getPersonnelType + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/PersonnelType' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /person-emails: + post: + tags: + - e-RIGHTS Common Person Private Email Create Update + operationId: setPersonPrivateEmail + description: | + This is an emergency end-point, used to associate a private e-mail address to a person + when other sources provide no private e-mail address. If the person already has a private e-mail + address in the e-RIGHTS table of private e-mails, then its updated. + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: personEmail + required: true + schema: + $ref: '#/definitions/PersonEmail' + responses: + '200': + description: Successful operation + schema: + $ref: '#/definitions/PersonEmail' + '401': + description: Authentication failure + '403': + description: Not authorized + + /person-emails/{personId}: + delete: + tags: + - e-RIGHTS Common Person Private Email Delete + operationId: deletePersonPrivateEmail + description: Deletes the Person's private e-mail address from the e-RIGHTS table of private e-mails. + parameters: + - in: path + name: personId + description: ID of the Person whose private e-mail addresses are going to be deleted. + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + '401': + description: Authentication failure + '403': + description: Not authorized + + +definitions: + + City: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + code: + type: string + name: + type: string + + Country: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + code: + type: string + name: + type: string + + + IataAirport: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: string + airportName: + type: string + locationName: + type: string + easrefn: + type: string + + InstitutionCode: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: string + nameEn: + type: string + type: + type: string + + FunctionCode: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: string + nameEn: + type: string + nameFr: + type: string + + StatutoryLinkCode: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: string + nameEn: + type: string + nameFr: + type: string + nameDe: + type: string + + PersonnelType: + type: object + x-nt-super-class: + - AuditableTransferObject + properties: + id: + type: integer + format: int64 + personnelTypeDesc: + type: string + priority: + type: string + hrmCode: + type: string + + FamilyMember: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: string + relPerId: + type: integer + format: int64 + relSurname: + type: string + relFirstName: + type: string + relGender: + type: string + relAge: + type: integer + format: int32 + relation: + type: string + + + ExchangeRate: + type: object + x-nt-super-class: + - TransferObject + properties: + currency: + type: string + startDate: + type: string + format: date + exchangeRate: + type: number + endDate: + type: string + format: date + monthYear: + type: string + decimals: + type: boolean + + + + AppParameter: + type: object + x-nt-super-class: + - TransferObject + properties: + id: + type: integer + format: int64 + paramType: + type: string + x-nt-type: AppParamType + key: + type: string + value: + type: string + + PersonEmail: + type: object + x-nt-super-class: + - AuditableTransferObject + description: Model for the entity to store additional private email addresses. + required: + - perId + - email + - emailType + properties: + id: + type: integer + format: int64 + description: Identifier of this record. + perId: + type: integer + format: int64 + description: Person ID. + email: + type: string + emailType: + schema: + type: string + enum: + - PROF + - PRIV + + + diff --git a/e-rights-common/src/main/resources/swagger/internal/e-rights-sysper.yml b/e-rights-common/src/main/resources/swagger/internal/e-rights-sysper.yml new file mode 100644 index 0000000..bd68e3a --- /dev/null +++ b/e-rights-common/src/main/resources/swagger/internal/e-rights-sysper.yml @@ -0,0 +1,263 @@ +--- +swagger: "2.0" +info: + description: "Sysper ERights API" + version: "v1" + title: "Sysper ERights API" +tags: +- name: "ERights description" +paths: + /erights/person/{perId}/rights: + get: + tags: + - "ERights description" + summary: "Get a list of Rights by Person ID" + description: "" + operationId: "getRights" + consumes: + - "application/json" + produces: + - "application/json" + parameters: + - name: "perId" + in: "path" + description: "PerId for the person assignee and beneficiary that we want to get rights for." + required: true + type: "integer" + format: "int32" + - name: "dateFrom" + in: "query" + description: "Period from, if null ignore date check" + required: false + type: "string" + format: "date-time" + - name: "dateTo" + in: "query" + description: "Period to, if null use infinite date" + required: false + type: "string" + format: "date-time" + responses: + 200: + description: "Returns list of Rights for this agent" + schema: + $ref: "#/definitions/RightsListVO" + 403: + description: "Forbidden" + schema: + $ref: "#/definitions/Sp2RestMessageVO" + 500: + description: "Internal Server Error" + schema: + $ref: "#/definitions/Sp2RestMessageVO" + /erights/right: + post: + tags: + - "ERights description" + summary: "Add right for agent" + description: "" + operationId: "addRight" + consumes: + - "application/json" + produces: + - "application/json" + parameters: + - in: "body" + name: "body" + description: "Right properties to insert" + required: true + schema: + $ref: "#/definitions/RightVO" + responses: + 200: + description: "Returns status of Right insertion for this agent" + schema: + $ref: "#/definitions/RightVO" + 403: + description: "Forbidden" + schema: + $ref: "#/definitions/Sp2RestMessageVO" + 422: + description: "Validation failed" + schema: + $ref: "#/definitions/Sp2RestMessageVO" + 500: + description: "Internal Server Error" + schema: + $ref: "#/definitions/Sp2RestMessageVO" + put: + tags: + - "ERights description" + summary: "Update right for right ID" + description: "" + operationId: "updateRight" + consumes: + - "application/json" + produces: + - "application/json" + parameters: + - in: "body" + name: "body" + description: "Right properties to update" + required: true + schema: + $ref: "#/definitions/RightVO" + responses: + 200: + description: "Returns status of Right update for this agent" + schema: + $ref: "#/definitions/RightVO" + 403: + description: "Forbidden" + schema: + $ref: "#/definitions/Sp2RestMessageVO" + 422: + description: "Validation failed" + schema: + $ref: "#/definitions/Sp2RestMessageVO" + 500: + description: "Internal Server Error" + schema: + $ref: "#/definitions/Sp2RestMessageVO" + /erights/right/{rightId}: + get: + tags: + - "ERights description" + summary: "Get Right by RightId" + description: "" + operationId: "getRight" + consumes: + - "application/json" + produces: + - "application/json" + parameters: + - name: "rightId" + in: "path" + required: true + type: "integer" + format: "int32" + responses: + 200: + description: "Returns list of ERights for this agent" + schema: + $ref: "#/definitions/RightVO" + 403: + description: "Forbidden" + schema: + $ref: "#/definitions/Sp2RestMessageVO" + 500: + description: "Internal Server Error" + schema: + $ref: "#/definitions/Sp2RestMessageVO" + delete: + tags: + - "ERights description" + summary: "Delete right by right ID" + description: "" + operationId: "deleteRight" + consumes: + - "application/json" + produces: + - "application/json" + parameters: + - name: "rightId" + in: "path" + description: "RightId we want to delete rights for" + required: true + type: "integer" + format: "int32" + responses: + 200: + description: "Returns status of Right delete for this agent" + schema: + $ref: "#/definitions/RightVO" + 403: + description: "Forbidden" + schema: + $ref: "#/definitions/Sp2RestMessageVO" + 422: + description: "Validation failed" + schema: + $ref: "#/definitions/Sp2RestMessageVO" + 500: + description: "Internal Server Error" + schema: + $ref: "#/definitions/Sp2RestMessageVO" +definitions: + RightVO: + type: "object" + required: + - "originPeriod" + - "paymentPeriod" + properties: + rightId: + type: "integer" + format: "int32" + description: "RightId we want to search/insert/update/delete rights for. If\ + \ inserting use as null, for other operations must be not null" + amount: + type: "number" + format: "double" + example: 500.5 + number: + type: "integer" + format: "int32" + example: 1 + currency: + type: "string" + example: "EUR" + rightsType: + type: "string" + example: "INSTALLATION_ALLOWANCE_IP2" + enum: + - "RESETTLEMENT_ALLOWANCE_IP1" + - "INSTALLATION_ALLOWANCE_IP2" + - "FRAIS_VOYAGE_OUTSIDE_EU_ETRAVEL" + - "ANNUAL_TRAVEL_EXPENSES_AMOUNT" + perIdAttrib: + type: "integer" + format: "int32" + perIdBenef: + type: "integer" + format: "int32" + perIdAlloc: + type: "integer" + format: "int32" + typeOfIndemnity: + type: "string" + example: "INDE" + unit: + type: "string" + example: "TIE" + originPeriod: + type: "string" + example: "2206" + paymentPeriod: + type: "string" + example: "2206" + comments: + type: "string" + example: "My Comment" + eventId: + type: "integer" + format: "int32" + RightsListVO: + type: "object" + properties: + rightVOList: + type: "array" + items: + $ref: "#/definitions/RightVO" + Sp2RestMessageVO: + type: "object" + properties: + message: + type: "string" + type: + type: "string" + enum: + - "INFO" + - "SUCCESS" + - "WARNING" + - "ERROR" + - "DEBUG" diff --git a/e-rights-common/src/main/resources/swagger/internal/rate_everywhere_1.2.yml b/e-rights-common/src/main/resources/swagger/internal/rate_everywhere_1.2.yml new file mode 100644 index 0000000..bab5ac5 --- /dev/null +++ b/e-rights-common/src/main/resources/swagger/internal/rate_everywhere_1.2.yml @@ -0,0 +1,249 @@ +swagger: "2.0" +info: + description: "Definition of service to retrive the amounts for a route" + version: "1.0.0" + title: "RatesEveryWhere" +host: eeas.gosselingroup.eu +schemes: + - https +paths: + /EEAS/rate.php: + get: + summary: "Rates" + description: "Returns rate, in case we need to query" + operationId: getRates + produces: + - "application/json" + parameters: + - in: query + name: year + required: true + type: integer + format: int64 + default: 2021 + - in: query + name: cityFrom + required: true + type: string + default: PAR + - in: query + name: countryFrom + type: string + - in: query + name: cityTo + required: true + type: string + default: COO + - in: query + name: countryTo + type: string + - in: query + name: type + required: true + type: "string" + description: "rate type" + enum: + - "AIRFREIGHT" + - "CAR" + - "STORAGE" + - "EIS" + - "EFS" + - "TUD_STAFF_MEMBER" + - "INS" + - "RES" + - "SURFACE" + - "TUD_DEPENDENT" + default: SURFACE + - in: query + name: currentlyValid + type: boolean + + + responses: + '201': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/Rate' + '400': + description: Malformed syntax or a bad query + '401': + description: Permission Denied + '403': + description: Authentication failure + '500': + description: Internal server error + + /RateEEAS/{year}/{cityFrom}/{cityTo}/{type}/rate: + get: + summary: "Rate" + description: "Returns current and valid rate" + operationId: getRate + produces: + - "application/json" + parameters: + - in: path + name: year + required: true + type: integer + format: int64 + default: 2021 + - in: path + name: cityFrom + required: true + type: string + default: BRU + - in: path + name: cityTo + required: true + type: string + default: POM + - in: path + name: type + required: true + type: "string" + description: "rate type" + enum: + + - "CAR" + - "STORAGE" + - "EIS" + - "EFS" + - "TUD_STAFF_MEMBER" + - "INS" + - "RES" + - "SURFACE" + - "TUD_DEPENDENT" + default: SURFACE + + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/Rate' + '400': + description: Malformed syntax or a bad query + '204': + description: Rate not found + '401': + description: Permission Denied + '403': + description: Authentication failure + '500': + description: Internal server error + /RateEEAS/{year}/{cityFrom}/{cityTo}/{type}/{kg}/rate: + get: + summary: "Rate" + description: "Returns current and valid rate" + operationId: getRateAirfright + produces: + - "application/json" + parameters: + - in: path + name: year + required: true + type: integer + format: int64 + default: 2021 + - in: path + name: cityFrom + required: true + type: string + default: BRU + - in: path + name: cityTo + required: true + type: string + default: AMM + - in: path + name: type + required: true + type: "string" + description: "rate type" + enum: + - "AIRFREIGHT" + default: AIRFREIGHT + - in: path + name: kg + required: true + type: string + default: 1560 + + responses: + '201': + description: Successful operation + schema: + $ref: '#/definitions/Rate' + '400': + description: Malformed syntax or a bad query + '204': + description: Rate not found + '401': + description: Permission Denied + '403': + description: Authentication failure + '500': + description: Internal server error + +definitions: + Rate: + type: "object" + properties: + id: + type: "integer" + format: "int64" + codeCityTo: + type: "string" + description: "ISO Alpha-3 code " + codeCountryTo: + type: "string" + description: "ISO Alpha-3 code " + codeCityFrom: + type: "string" + description: "ISO Alpha-3 code " + codeCountryFrom: + type: "string" + description: "ISO Alpha-3 code " + amount: + type: "integer" + format: "int64" + date: + type: "string" + validityBeginDate: + type: "string" + description: "Nice to Have, in case we need to refresh yearly " + validityEndDate: + type: "string" + description: "this can be use to be able to refresh the rate before is not valid anymore, in case we need to refresh yearly" + year: + type: "integer" + format: "int64" + description: "year for the rate" + type: + type: "string" + description: "rate type" + enum: + - "AIRFREIGHT" + - "CAR" + - "STORAGE" + - "EIS" + - "EFS" + - "TUD_STAFF_MEMBER" + - "INS" + - "RES" + - "SURFACE" + - "TUD_DEPENDENT" + current: + type: boolean + +securityDefinitions: + apiKey: + type: apiKey + in: header + name: X-API-KEY + apiId: + type: apiKey + in: header + name: X-API-ID + \ No newline at end of file diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/StateMachineTransitionTransferObjectToModelCustomMapperTest.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/StateMachineTransitionTransferObjectToModelCustomMapperTest.java new file mode 100644 index 0000000..8bfa5ea --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/mapping/custommapper/StateMachineTransitionTransferObjectToModelCustomMapperTest.java @@ -0,0 +1,15 @@ +package eu.europa.eeas.erights.common.api.http.rest.mapping.custommapper; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +@Disabled("Need refactoring") +class StateMachineTransitionTransferObjectToModelCustomMapperTest { + + @Test + void testStateTransition(Boolean param) { + assertThat(param).isFalse(); + } +} \ No newline at end of file diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/provider/AbstractRestApiProviderUTBase.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/provider/AbstractRestApiProviderUTBase.java new file mode 100644 index 0000000..28f0932 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/provider/AbstractRestApiProviderUTBase.java @@ -0,0 +1,56 @@ +package eu.europa.eeas.erights.common.api.http.rest.provider; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.base.mapping.bean.BeanMapper; +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.provider.configuration.DefaultRestApiProviderConfiguration; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Import; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +import static org.mockito.Mockito.when; + +/** + * Created by iliessu on 05/12/2019; e-rights. + * + *

    + * TODO : comment class ! + *

    + * + * @author Silviu Ilie. + * + */ +@Import(DefaultRestApiProviderConfiguration.class) +@Disabled("Need refactoring") +public abstract class AbstractRestApiProviderUTBase { + + @Autowired + protected BeanMapper beanMapper; + + @Autowired + protected DataServiceProviderRegistry dataServiceProviderRegistry; + + @Autowired + protected T restApiController; + + protected MockMvc mvc; + + @BeforeEach + public void setUp() { + this.mvc = MockMvcBuilders.standaloneSetup(this.restApiController).build(); + } + + protected void registerServiceProvider(Class modelType, AbstractDataServiceProvider service) { + when(this.dataServiceProviderRegistry.getDataServiceProviderFor(modelType)).thenReturn(service); + } + + protected > void registerServiceProvider(Class modelType, Class serviceType, S service) { + when(this.dataServiceProviderRegistry.getDataServiceProviderFor(modelType, serviceType)).thenReturn(service); + } + +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/provider/configuration/DefaultRestApiProviderConfiguration.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/provider/configuration/DefaultRestApiProviderConfiguration.java new file mode 100644 index 0000000..e6c8b51 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/provider/configuration/DefaultRestApiProviderConfiguration.java @@ -0,0 +1,40 @@ +package eu.europa.eeas.erights.common.api.http.rest.provider.configuration; + +import eu.europa.eeas.ananke.core.base.AnankeCoreBaseBeanNames; +import eu.europa.eeas.ananke.core.base.mapping.bean.BeanMapper; +import eu.europa.eeas.ananke.core.base.validation.AnankeValidator; +import eu.europa.eeas.ananke.core.service.provider.data.AnankeCoreServiceProviderDataBeanNames; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import org.mockito.Mockito; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Created by iliessu on 05/12/2019; e-rights. + * + *

    + * {@code erights.api.http.rest.provider} configuration. + *

    + * + * @author Silviu Ilie. + * + */ +@Configuration +public class DefaultRestApiProviderConfiguration { + + @Bean(AnankeCoreBaseBeanNames.BEAN_MAPPER) + public BeanMapper beanMapper() { + return Mockito.mock(BeanMapper.class); + } + + @Bean(AnankeCoreServiceProviderDataBeanNames.DATA_SERVICE_PROVIDER_REGISTRY) + public DataServiceProviderRegistry dataServiceProviderRegistry() { + return Mockito.mock(DataServiceProviderRegistry.class); + } + + @Bean + public AnankeValidator validator() { + return Mockito.mock(AnankeValidator.class); + } + +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/provider/integrationtests/ITConfiguration.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/provider/integrationtests/ITConfiguration.java new file mode 100644 index 0000000..d30428a --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/provider/integrationtests/ITConfiguration.java @@ -0,0 +1,58 @@ +package eu.europa.eeas.erights.common.api.http.rest.provider.integrationtests; + +import org.apache.catalina.Context; +import org.apache.catalina.startup.Tomcat; +import org.apache.tomcat.util.descriptor.web.ContextResource; +import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; +import org.springframework.boot.web.embedded.tomcat.TomcatWebServer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.sql.DataSource; + +@Configuration +public class ITConfiguration { + + @Bean + public TomcatServletWebServerFactory tomcatServletWebServerFactory() { + return new TomcatServletWebServerFactoryImpl(); + } + + private static class TomcatServletWebServerFactoryImpl extends TomcatServletWebServerFactory { + + @Override + protected TomcatWebServer getTomcatWebServer(Tomcat tomcat) { + tomcat.enableNaming(); + return new TomcatWebServer(tomcat, getPort() >= 0); + } + + @Override + protected void postProcessContext(Context context) { + ContextResource resource = new ContextResource(); + resource.setName(System.getProperty("dev.jndi.name", "jdbc/e-rights")); + resource.setType(DataSource.class.getName()); + resource.setProperty("driverClassName", System.getProperty("dev.driver.class.name", "oracle.jdbc.OracleDriver")); + resource.setProperty("url", System.getProperty("dev.url", "jdbc:oracle:thin:@BELBRU-ORAP401.EEAS.EUROPA.EU:1521/JAVADBD")); + resource.setProperty("username", System.getProperty("dev.username", "E_RIGHTS_TEST")); + resource.setProperty("password", System.getProperty("dev.password", "ERIGHTS$123")); + + context.getNamingResources().addResource(resource); + } + } +// +// @Bean(AnankeCoreDataProviderJpaBeanNames.DATA_SOURCE) +// public DataSource jndiDataSource() throws IllegalArgumentException, NamingException { +// JndiObjectFactoryBean bean = new JndiObjectFactoryBean(); +// bean.setJndiName("jdbc/e-rights"); +// bean.setProxyInterface(DataSource.class); +// bean.setLookupOnStartup(true); +// bean.afterPropertiesSet(); +// return (DataSource)bean.getObject(); +// } +// +// @Bean +// public JdbcTemplate jdbcTemplate() throws IllegalArgumentException, NamingException { +// return new JdbcTemplate(jndiDataSource()); +// } + +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/provider/integrationtests/MovementFileIT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/provider/integrationtests/MovementFileIT.java new file mode 100644 index 0000000..9b853ca --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/provider/integrationtests/MovementFileIT.java @@ -0,0 +1,62 @@ +package eu.europa.eeas.erights.common.api.http.rest.provider.integrationtests; + +import eu.europa.eeas.ananke.core.starter.api.provider.http.AnankeCoreApiProviderHttpAutoConfiguration; +import eu.europa.eeas.ananke.core.starter.api.provider.http.AnankeCoreApiProviderHttpMvcAutoConfiguration; +import eu.europa.eeas.ananke.core.starter.base.AnankeCoreBaseAutoConfiguration; +import eu.europa.eeas.ananke.core.starter.data.AnankeCoreDataAutoConfiguration; +import eu.europa.eeas.ananke.core.starter.data.provider.jpa.AnankeCoreDataProviderJpaAutoConfiguration; +import eu.europa.eeas.ananke.core.starter.security.AnankeCoreSecurityAutoConfiguration; +import eu.europa.eeas.ananke.core.starter.service.provider.data.AnankeCoreServiceProviderDataAutoConfiguration; +import eu.europa.eeas.ananke.tools.starter.statemachine.AnankeToolsStateMachineAutoConfiguration; +import eu.europa.eeas.ananke.tools.starter.statemachine.AnankeToolsStateMachineJpaAutoConfiguration; +import eu.europa.eeas.ananke.tools.starter.statemachine.configuration.StateMachineRootConfiguration; +import eu.europa.eeas.erights.common.api.http.rest.controller.internal.MovementFilesRestController; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBootAutoConfiguration; +import eu.europa.eeas.erights.common.boot.configuration.statemachine.MovementFileStateMachineFactoryConfiguration; +import eu.europa.eeas.erights.common.service.model.MovementContextType; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.web.servlet.MockMvc; + +import static org.hamcrest.CoreMatchers.is; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = MovementFilesRestController.class) +@AutoConfigureMockMvc +@ContextConfiguration(classes = {ERightsBootAutoConfiguration.class, ITConfiguration.class}) +@Import({AnankeCoreBaseAutoConfiguration.class, AnankeCoreServiceProviderDataAutoConfiguration.class, AnankeCoreSecurityAutoConfiguration.class, + AnankeCoreDataAutoConfiguration.class, + MovementFileStateMachineFactoryConfiguration.class, + AnankeToolsStateMachineJpaAutoConfiguration.class, + AnankeToolsStateMachineAutoConfiguration.class, + StateMachineRootConfiguration.class, + AnankeCoreDataProviderJpaAutoConfiguration.class, + AnankeCoreApiProviderHttpAutoConfiguration.class, + AnankeCoreApiProviderHttpMvcAutoConfiguration.class +}) +@EnableAutoConfiguration +@Disabled("Need refactoring") +class MovementFileIT { + + @Autowired + private MockMvc mockMvc; + + @Test + void test() throws Exception { + + this.mockMvc.perform(get("/internal/api/movement-files/1").accept(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.movementContext.name", is(MovementContextType.EOC.name()))) + .andExpect(jsonPath("$.budgetLine", is("budget"))); + + } +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/provider/internal/MovementContextRestApiProviderUT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/provider/internal/MovementContextRestApiProviderUT.java new file mode 100644 index 0000000..3ba1b22 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/api/http/rest/provider/internal/MovementContextRestApiProviderUT.java @@ -0,0 +1,89 @@ +package eu.europa.eeas.erights.common.api.http.rest.provider.internal; + +import eu.europa.eeas.erights.common.api.http.rest.controller.internal.ContextsRestController; +import eu.europa.eeas.erights.common.api.http.rest.provider.AbstractRestApiProviderUTBase; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementContextTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.MovementContextJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementContextModel; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; + +import java.util.ArrayList; +import java.util.List; + +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.when; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +/** + * Created by iliessu on 05/12/2019; e-rights. + * + *

    + * MovementContextRestApiProvider unit test. + *

    + * + * @author Silviu Ilie. + + */ +@ContextConfiguration(classes = {ContextsRestController.class}) +@Disabled("Need refactoring") +class MovementContextRestApiProviderUT extends AbstractRestApiProviderUTBase { + + @MockBean + private MovementContextJpaServiceProvider service; + + @Override + public void setUp() { + super.setUp(); + registerServiceProvider(MovementContextModel.class, this.service); + } + + @Test + void listsContexts() throws Exception { + + List source = new ArrayList<>(); + source.add(new MovementContextModel()); + + when(this.service.get()).thenReturn(source); + when(this.beanMapper.mapAsList(new ArrayList(), MovementContextTransferObject.class)).thenReturn(new ArrayList<>()); + + this.mvc.perform( + get("/internal/api/contexts") + ).andExpect(status().isOk()); + + verify(this.service, times(1)).get(); + verify(this.beanMapper).mapAsList(source, MovementContextTransferObject.class); + + verifyNoMoreInteractions(this.service); + } + + @Test + void getContext() throws Exception { + final Long expectedId = -42L; + + MovementContextModel contextModel = new MovementContextModel(); + contextModel.setId(expectedId); + + MovementContextTransferObject expected = new MovementContextTransferObject(); + expected.setId(expectedId); + + when(this.service.get(expectedId)).thenReturn(contextModel); + when(this.beanMapper.map(contextModel, MovementContextTransferObject.class)).thenReturn(expected); + + this.mvc.perform(get("/internal/api/contexts/-42") + .accept(MediaType.APPLICATION_JSON) + ).andExpect(status().isOk()); + + verify(this.service, times(1)).get(expectedId); + verify(this.beanMapper).map(contextModel, MovementContextTransferObject.class); + + verifyNoMoreInteractions(this.service); + } + +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/DatabaseConfiguration.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/DatabaseConfiguration.java new file mode 100644 index 0000000..fef55d9 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/DatabaseConfiguration.java @@ -0,0 +1,115 @@ +package eu.europa.eeas.erights.common.data.jpa; + +import eu.europa.eeas.ananke.core.starter.base.AnankeCoreBaseCipherAutoConfiguration; +import eu.europa.eeas.ananke.core.starter.data.provider.jpa.configuration.DataProviderJpaRootConfiguration; +import oracle.jdbc.driver.OracleDriver; +import org.hibernate.cfg.Environment; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jdbc.datasource.SimpleDriverDataSource; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; +import org.springframework.transaction.support.AbstractPlatformTransactionManager; + +import javax.sql.DataSource; +import java.util.Properties; + +/** + * Created by iliessu on 25/11/2019; e-rights. + * + *

    + * data access related configuration + *

    + * + * @author Silviu Ilie. + * + */ +@Configuration +@ImportAutoConfiguration({ + AnankeCoreBaseCipherAutoConfiguration.class + }) +@EnableTransactionManagement +@EnableJpaRepositories( + value = { + "eu.europa.eeas.erights.common.data.jpa.repository.comments", + "eu.europa.eeas.erights.common.data.jpa.repository.tud" + } +) +@EnableConfigurationProperties(DataProviderJpaRootConfiguration.class) +public class DatabaseConfiguration { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private DataProviderJpaRootConfiguration conf; + + private final Properties jpaProperties = new Properties(); + + @Bean + public DataSource simpleDriverDataSource() { + SimpleDriverDataSource dataSource = new SimpleDriverDataSource(); + + dataSource.setDriver(new OracleDriver()); + dataSource.setUrl(this.conf.getDataSource().getUrl()); + dataSource.setUsername(this.conf.getDataSource().getUsername()); + dataSource.setPassword(this.conf.getDataSource().getPassword().getValue()); + return dataSource; + } + + @Bean + public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) { + + LocalContainerEntityManagerFactoryBean emFactory = new LocalContainerEntityManagerFactoryBean(); + + jpaProperties.setProperty(Environment.AUTOCOMMIT, "false"); + jpaProperties.setProperty(Environment.CONNECTION_PROVIDER_DISABLES_AUTOCOMMIT, "true"); + + jpaProperties.setProperty(org.hibernate.cfg.Environment.DIALECT, this.conf.getDialect().getName()); + jpaProperties.setProperty(org.hibernate.cfg.Environment.SHOW_SQL, this.conf.getShowSql().toString()); + jpaProperties.setProperty(org.hibernate.cfg.Environment.FORMAT_SQL, this.conf.getFormatSql().toString()); + jpaProperties.setProperty(org.hibernate.cfg.Environment.ENABLE_LAZY_LOAD_NO_TRANS, this.conf.getEnableLazyLoadNoTrans().toString()); + jpaProperties.setProperty(org.hibernate.cfg.Environment.C3P0_TIMEOUT, this.conf.getConnectionPool().getTimeout().getValue().toString()); + jpaProperties.setProperty(org.hibernate.cfg.Environment.C3P0_MAX_STATEMENTS, this.conf.getConnectionPool().getMaxStatements().toString()); + jpaProperties.setProperty(org.hibernate.cfg.Environment.C3P0_IDLE_TEST_PERIOD, this.conf.getConnectionPool().getIdleTestPeriod().getValue().toString()); + + emFactory.setJpaProperties(jpaProperties); + emFactory.setDataSource(dataSource); + + emFactory.setPackagesToScan(this.conf.getPackagesToScan().stream().toArray(String[]::new)); + + emFactory.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); + emFactory.setPersistenceProviderClass(org.hibernate.jpa.HibernatePersistenceProvider.class); + + if (logger.isDebugEnabled()) { + logger.info("Entity manager factory created : " + emFactory); + } else { + logger.info("Entity manager factory created"); + } + + return emFactory; + } + + /** + * registers {@code PlatformTransactionManager}.. + * + * @param entityManagerFactory the factory. + * + * @return {@code PlatformTransactionManager}. + */ + @Bean("transactionManager") + public PlatformTransactionManager transactionManager(final LocalContainerEntityManagerFactoryBean entityManagerFactory) { + JpaTransactionManager txManager = new JpaTransactionManager(entityManagerFactory.getObject()); + txManager.setJpaProperties(jpaProperties); + txManager.setTransactionSynchronization(AbstractPlatformTransactionManager.SYNCHRONIZATION_NEVER); + return txManager; + } +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/CommentsRepositoryJpaITest.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/CommentsRepositoryJpaITest.java new file mode 100644 index 0000000..1f28ea4 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/CommentsRepositoryJpaITest.java @@ -0,0 +1,120 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import static org.junit.Assert.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.time.LocalDateTime; +import java.util.Collections; +import java.util.stream.StreamSupport; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.ConfigDataApplicationContextInitializer; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; + +import eu.europa.eeas.ananke.core.audit.AuditManager; +import eu.europa.eeas.ananke.core.audit.Auditable; +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.listener.AuditJpaEntityListener; +import eu.europa.eeas.erights.common.data.jpa.DatabaseConfiguration; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsForMovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsForRequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.comments.CommentsJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.comments.CommentForMovementFileJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.comments.CommentForRequestJpaRepository; + +/** + * Simple test (Repo/Entity => Oracle DB). Ignored during building. + * + * Details: + * + * - Check parameter 'packages-to-scan' in /e-rights-common/src/test/resources/application.yml + * - Check parameter 'data-source' in /e-rights-common/src/test/resources/application.yml (the schema is not the TEST database, + * it's a DEV schema) + * - The AuditManager is partially implemented in the method getAuditManager. I didn't know how to autowire or mock it. + * + * @author idominju + * + */ +@SpringBootTest +@ContextConfiguration( + classes = { DatabaseConfiguration.class }, + initializers = ConfigDataApplicationContextInitializer.class + ) +@Disabled("This is an IT with DEV Oracle database. Avoid this in builds.") +class CommentsRepositoryJpaITest { + + @Autowired + private CommentForRequestJpaRepository commReqRepo; + + @Autowired + private CommentForMovementFileJpaRepository commMovFileRepo; + + @BeforeEach + void init() { + AuditJpaEntityListener.init(getAuditManager()); + } + + @Test + void basicTest() { + + assertNotNull("Repo is null.", commReqRepo); + assertNotNull("Repo is null.", commMovFileRepo); + + commReqRepo.findAll().forEach(item -> { print(item, "REQ"); }); + commMovFileRepo.findAll().forEach(item -> { print(item, "MF"); }); + + long size_ra = StreamSupport.stream(commReqRepo.findAll().spliterator(), false).count(); + /* + commReqRepo.save(new CommentsForRequestJpaEntity()); + commMovFileRepo.save(new CommentsForMovementFileJpaEntity()); + commReqRepo.save(new CommentsForRequestJpaEntity()); + long size_rb = StreamSupport.stream(commReqRepo.findAll().spliterator(), false).count(); + + long size_ma = StreamSupport.stream(commMovFileRepo.findAll().spliterator(), false).count(); + commMovFileRepo.save(new CommentsForMovementFileJpaEntity()); + commReqRepo.save(new CommentsForRequestJpaEntity()); + commMovFileRepo.save(new CommentsForMovementFileJpaEntity()); + commMovFileRepo.save(new CommentsForMovementFileJpaEntity()); + long size_mb = StreamSupport.stream(commMovFileRepo.findAll().spliterator(), false).count(); + */ + + // assertEquals(size_rb, size_ra + 2, "Save did not go as expected, REQ."); + // assertEquals(size_mb, size_ma + 3, "Save did not go as expected, MF."); + assertNotNull("Repo is null.", commMovFileRepo); + + System.out.println("--- Count: " + size_ra); + System.out.println("--- DONE ---"); + + } + + private void print(CommentsJpaEntity item, String type) { + System.out.println("---- COMMENT for " + type + " --------"); + System.out.println("ID: " + item.getId()); + System.out.println("Type: " + item.getCommentType()); + System.out.println("Entity ID: " + item.getEntityId()); + System.out.println("Text: " + item.getCommentText()); + System.out.println("Order: " + item.getDisplayOrder()); + System.out.println("Deleted: " + item.getDeleted()); + System.out.println("Author: " + item.getAuthorName()); + System.out.println("-------------------------"); + + } + + private AuditManager getAuditManager() { + return new AuditManager(Collections.EMPTY_SET, Collections.EMPTY_SET, null) { + + public void manageCreate(Auditable auditable) { + + System.out.println("Managing creation (-999) for: " + auditable.getClass().getSimpleName()); + CommentsJpaEntity entity = (CommentsJpaEntity) auditable; + entity.setCreationActor(new AuditActor(-999L, LocalDateTime.now())); + } + + }; + } + +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementContextRepositoryJpaIT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementContextRepositoryJpaIT.java new file mode 100644 index 0000000..1441134 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementContextRepositoryJpaIT.java @@ -0,0 +1,73 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.audit.AuditManager; +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.listener.AuditJpaEntityListener; +import eu.europa.eeas.erights.common.data.jpa.DatabaseConfiguration; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementContextJpaEntity; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.ConfigDataApplicationContextInitializer; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.transaction.TestTransaction; + +import javax.transaction.Transactional; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.*; + +/** + * @author imironiu + */ + +@ContextConfiguration(classes = DatabaseConfiguration.class, initializers = ConfigDataApplicationContextInitializer.class) +@Transactional +@Disabled("Need refactoring") +class MovementContextRepositoryJpaIT { + + @Mock + AuditManager auditManagerMock; + + @Autowired + private MovementContextJpaRepository repo; + + @BeforeEach + void init() { + TestTransaction.flagForRollback(); + AuditJpaEntityListener.init(this.auditManagerMock); + } + + @Test + void findAnExistingMovementContext() { + MovementContextJpaEntity created = this.repo.save(buildEntity()); + + MovementContextJpaEntity entity = this.repo.findById(created.getId()); + + assertThat(entity, is(notNullValue())); + } + + @Test + void saveANewMovementContext() { + MovementContextJpaEntity created = this.repo.save(buildEntity()); + + assertThat(created.getName(), equalTo("TERMINATION")); + } + + private MovementContextJpaEntity buildEntity() { + MovementContextJpaEntity movementContext = new MovementContextJpaEntity(); + movementContext.setId(-1L); + movementContext.setName("TERMINATION"); + movementContext.setCreationActor(getActor(1L)); + movementContext.setUpdatingActor(getActor(2L)); + return movementContext; + } + + private AuditActor getActor(long id) { + return new AuditActor(id); + } + +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementFileRepositoryJpaIT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementFileRepositoryJpaIT.java new file mode 100644 index 0000000..33448a7 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementFileRepositoryJpaIT.java @@ -0,0 +1,77 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.audit.AuditManager; +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.listener.AuditJpaEntityListener; +import eu.europa.eeas.erights.common.data.jpa.DatabaseConfiguration; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.ConfigDataApplicationContextInitializer; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.transaction.TestTransaction; + +import javax.transaction.Transactional; + +import static junit.framework.TestCase.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Created by iliessu on 21/11/2019; e-rights. + * + *

    + * {@link MovementFileJpaRepository} unit test. + *

    + * + * @author
    Silviu Ilie. + * + */ + +@ContextConfiguration(classes = DatabaseConfiguration.class, initializers = ConfigDataApplicationContextInitializer.class) +@Sql( + scripts = "MovementFileRepositoryJpaIT-data.sql", + executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD +) +@Sql( + scripts = "MovementFileRepositoryJpaIT-cleanup.sql", + executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD +) +@Transactional +@Disabled("Need refactoring") +class MovementFileRepositoryJpaIT { + + private static final Long TEST_IDENTITY = -1L; + + @Mock + AuditManager auditManager; + + @Autowired + private MovementFileJpaRepository repository; + + @BeforeEach + public void init() { + TestTransaction.flagForRollback(); + assertTrue(TestTransaction.isFlaggedForRollback()); + AuditJpaEntityListener.init(auditManager); + } + + @Test + void findAll() { + assertThat( + this.repository.findAll() + ).isNotNull(); + } + + @Test + void findById() { + assertThat( + this.repository.findById(TEST_IDENTITY) + ).isNotNull(); + } +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementTypeRepositoryJpaIT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementTypeRepositoryJpaIT.java new file mode 100644 index 0000000..ebbe8aa --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/MovementTypeRepositoryJpaIT.java @@ -0,0 +1,34 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.erights.common.data.jpa.DatabaseConfiguration; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.ConfigDataApplicationContextInitializer; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.transaction.TestTransaction; + +import javax.transaction.Transactional; + +import static junit.framework.TestCase.assertTrue; + +/** + * @author imironiu + */ + +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = DatabaseConfiguration.class, initializers = ConfigDataApplicationContextInitializer.class) +@Transactional +@Disabled("Need refactoring") +public class MovementTypeRepositoryJpaIT { + + @BeforeEach + void init() { + TestTransaction.flagForRollback(); + assertTrue(TestTransaction.isFlaggedForRollback()); + } + +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/VJobRepositoryJpaIT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/VJobRepositoryJpaIT.java new file mode 100644 index 0000000..e400476 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/VJobRepositoryJpaIT.java @@ -0,0 +1,79 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.audit.AuditManager; +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.listener.AuditJpaEntityListener; +import eu.europa.eeas.erights.common.data.jpa.DatabaseConfiguration; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.ConfigDataApplicationContextInitializer; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.transaction.TestTransaction; + +import javax.transaction.Transactional; + +import static junit.framework.TestCase.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Created by ipatelav on 21/11/2019; e-rights. + * + *

    + * {@link VJobJpaRepository} unit test. + *

    + * + * @author Lavinia Pate. + * + */ +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = DatabaseConfiguration.class, initializers = ConfigDataApplicationContextInitializer.class) +@Sql( + scripts = "VJobRepositoryJpaIT-data.sql", + executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD + +) +@Sql( + scripts = "VJobRepositoryJpaIT-cleanup.sql", + executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD + +) +@Transactional +@Disabled("Need refactoring") +class VJobRepositoryJpaIT { + + private static final Long TEST_IDENTITY = -10L; + + @Mock + AuditManager auditManager; + + @Autowired + private VJobJpaRepository repository; + + @BeforeEach + void init() { + TestTransaction.flagForRollback(); + assertTrue(TestTransaction.isFlaggedForRollback()); + AuditJpaEntityListener.init(auditManager); + } + + @Test + void findAll() { + assertThat( + this.repository.findAll() + ).isNotNull(); + } + + @Test + void findById() { + assertThat( + this.repository.findById(TEST_IDENTITY) + ).isNotNull(); + } +} + diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/VNewTravelAllowanceJpaRepositoryIT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/VNewTravelAllowanceJpaRepositoryIT.java new file mode 100644 index 0000000..c9af77e --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/VNewTravelAllowanceJpaRepositoryIT.java @@ -0,0 +1,49 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.audit.AuditManager; +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.listener.AuditJpaEntityListener; +import eu.europa.eeas.erights.common.data.jpa.DatabaseConfiguration; +import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.ConfigDataApplicationContextInitializer; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.transaction.TestTransaction; + +import javax.transaction.Transactional; + +import static junit.framework.TestCase.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; + +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = DatabaseConfiguration.class, initializers = ConfigDataApplicationContextInitializer.class) +@Transactional +@Disabled("Need refactoring") +public class VNewTravelAllowanceJpaRepositoryIT { + + + @Mock + AuditManager auditManager; + + @Autowired + private VNewTravelAllowanceJpaRepository vNewTravelAllowanceJpaRepository; + + + @BeforeEach + void init() { + TestTransaction.flagForRollback(); + assertTrue(TestTransaction.isFlaggedForRollback()); + AuditJpaEntityListener.init(auditManager); + } + + @Test + public void findAll() { + assertThat( + this.vNewTravelAllowanceJpaRepository.findAll() + ).isNotNull(); + } +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/VPersonRepositoryJpaIT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/VPersonRepositoryJpaIT.java new file mode 100644 index 0000000..42da430 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/data/jpa/repository/VPersonRepositoryJpaIT.java @@ -0,0 +1,78 @@ +package eu.europa.eeas.erights.common.data.jpa.repository; + +import eu.europa.eeas.ananke.core.audit.AuditManager; +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.listener.AuditJpaEntityListener; +import eu.europa.eeas.erights.common.data.jpa.DatabaseConfiguration; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.ConfigDataApplicationContextInitializer; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.transaction.TestTransaction; + +import javax.transaction.Transactional; + +import static junit.framework.TestCase.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Created by ipatelav on 21/11/2019; e-rights. + * + *

    + * {@link VPersonJpaRepository} unit test. + *

    + * + * @author Lavinia Pate. + * + */ +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = DatabaseConfiguration.class, initializers = ConfigDataApplicationContextInitializer.class) +@Sql( + scripts = "VPersonRepositoryJpaIT-data.sql", + executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD + +) +@Sql( + scripts = "VPersonRepositoryJpaIT-cleanup.sql", + executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD + +) +@Transactional +@Disabled("Need refactoring") +class VPersonRepositoryJpaIT { + + private static final Long TEST_IDENTITY = -1L; + + @Autowired + private final ThreadLocal repository = new ThreadLocal(); + + @Mock + AuditManager auditManager; + + @BeforeEach + void init() { + TestTransaction.flagForRollback(); + assertTrue(TestTransaction.isFlaggedForRollback()); + AuditJpaEntityListener.init(auditManager); + } + + @Test + void findAll() { + assertThat( + this.repository.get().findAll() + ).isNotNull(); + } + + @Test + void findById() { + assertThat( + this.repository.get().findById(TEST_IDENTITY) + ).isNotNull(); + } +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/security/DefaultConfiguration.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/security/DefaultConfiguration.java new file mode 100644 index 0000000..f227263 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/security/DefaultConfiguration.java @@ -0,0 +1,29 @@ +package eu.europa.eeas.erights.common.security; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.data.AnankeCoreDataBeanNames; +import eu.europa.eeas.ananke.core.data.support.EntityRepositoryRegistry; +import eu.europa.eeas.ananke.core.security.AnankeCoreSecurityBeanNames; +import eu.europa.eeas.ananke.core.security.SecurityHelper; +import org.mockito.Mockito; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class DefaultConfiguration { + + @Bean(AnankeCoreSecurityBeanNames.SECURITY_HELPER) + public SecurityHelper securityHelper() { + return Mockito.mock(SecurityHelper.class); + } + + @Bean(AnankeCoreDataBeanNames.ENTITY_REPOSITORY_REGISTRY) + public EntityRepositoryRegistry entityRepositoryRegistry() { + return Mockito.mock(EntityRepositoryRegistry.class); + } + + @Bean + public AbstractUserHandler abstractUserHandler() { + return Mockito.mock(AbstractUserHandler.class); + } +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/security/MovementFileSecurityCheckerUT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/security/MovementFileSecurityCheckerUT.java new file mode 100644 index 0000000..f11e436 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/security/MovementFileSecurityCheckerUT.java @@ -0,0 +1,129 @@ +package eu.europa.eeas.erights.common.security; + +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.data.support.EntityRepositoryRegistry; +import eu.europa.eeas.ananke.core.security.SecurityHelper; +import eu.europa.eeas.ananke.core.security.user.AnankeSecurityUser; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.VPersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.MovementFileJpaRepository; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; +import org.springframework.test.context.ContextConfiguration; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; + +@Import(DefaultConfiguration.class) +@ContextConfiguration(classes = {MovementFileSecurityChecker.class}) +@Disabled("Need refactoring") +public class MovementFileSecurityCheckerUT { + + @MockBean + private SecurityHelper securityHelper; + + @Autowired + private MovementFileSecurityChecker movementFileSecurityChecker; + + @Autowired + private EntityRepositoryRegistry entityRepositoryRegistry; + + @Autowired + private AbstractUserHandler userHandlerMock; + + @MockBean + private AnankeSecurityUser user; + + @MockBean + private MovementFileJpaRepository movementFileJpaRepo; + + @Test + void whenMovementFileIdIsNull_thenReturnFalse() { + Boolean result = this.movementFileSecurityChecker.isOwner(null); + + assertThat(result).isFalse(); + } + + @Test + void whenMovementFileIsNotFound_thenReturnFalse() { + Long movementFileId = 1l; + when(this.entityRepositoryRegistry.getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class)).thenReturn(movementFileJpaRepo); + when(movementFileJpaRepo.findById(movementFileId)).thenReturn(null); + + Boolean result = this.movementFileSecurityChecker.isOwner(movementFileId); + + assertThat(result).isFalse(); + } + + @Test + void whenEacsIsIsMatchingJobHolderId_thenReturnTrue() { + Long mvId = 1l; + Long ecasId = 12L; + givenTheUserWithIdAndEmail(ecasId, null); + when(this.entityRepositoryRegistry.getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class)).thenReturn(movementFileJpaRepo); + when(movementFileJpaRepo.findById(mvId)).thenReturn(getMovementFile(mvId, ecasId, null, null)); + + Boolean result = this.movementFileSecurityChecker.isOwner(mvId); + + assertThat(result).isTrue(); + } + + @Test + void whenEacsEmailIsMatchingJobHolderBusinessEmail_thenReturnTrue() { + Long mvId = 1l; + Long ecasId = 12L; + givenTheUserWithIdAndEmail(ecasId, "business@email.com"); + when(this.entityRepositoryRegistry.getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class)).thenReturn(movementFileJpaRepo); + when(movementFileJpaRepo.findById(mvId)).thenReturn(getMovementFile(mvId, 100L, "business@email.com", null)); + + Boolean result = this.movementFileSecurityChecker.isOwner(mvId); + + assertThat(result).isTrue(); + } + + @Test + void whenEacsEmailIsMatchingJobHolderPrivateEmail_thenReturnTrue() { + Long mvId = 1l; + Long ecasId = 12L; + givenTheUserWithIdAndEmail(ecasId, "private@email.com"); + when(this.entityRepositoryRegistry.getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class)).thenReturn(movementFileJpaRepo); + when(movementFileJpaRepo.findById(mvId)).thenReturn(getMovementFile(mvId, 100L, "business@email.com", "private@email.com")); + + Boolean result = this.movementFileSecurityChecker.isOwner(mvId); + + assertThat(result).isTrue(); + } + + @Test + void whenEacsIdOrEmailIsNotMatchingAnyJobHolderValues_thenReturnFalse() { + Long mvId = 1l; + Long ecasId = 12L; + givenTheUserWithIdAndEmail(ecasId, "some@email.com"); + when(this.entityRepositoryRegistry.getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class)).thenReturn(movementFileJpaRepo); + when(movementFileJpaRepo.findById(mvId)).thenReturn(getMovementFile(mvId, 100L, "business@email.com", "private@email.com")); + + Boolean result = this.movementFileSecurityChecker.isOwner(mvId); + + assertThat(result).isFalse(); + } + + private void givenTheUserWithIdAndEmail(Long id, String email) { + when(this.userHandlerMock.getUser()).thenReturn(user); + when(user.getId()).thenReturn(id); + when(user.getEmail()).thenReturn(email); + } + + private MovementFileJpaEntity getMovementFile(Long movementFileId, Long personId, String email, String privateEmail) { + MovementFileJpaEntity entity = new MovementFileJpaEntity(); + entity.setId(movementFileId); + VPersonJpaEntity personJpaEntity = new VPersonJpaEntity(); + personJpaEntity.setId(personId); + personJpaEntity.setEmail(email); + personJpaEntity.setPrivateEmail(privateEmail); + entity.setJobHolder(personJpaEntity); + return entity; + } +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/AbstractServiceProviderUTBase.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/AbstractServiceProviderUTBase.java new file mode 100644 index 0000000..810acc1 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/AbstractServiceProviderUTBase.java @@ -0,0 +1,86 @@ +package eu.europa.eeas.erights.common.service.data; + +import eu.europa.eeas.ananke.core.base.mapping.bean.BeanMapper; +import eu.europa.eeas.ananke.core.base.user.AbstractUserHandler; +import eu.europa.eeas.ananke.core.data.entity.Entity; +import eu.europa.eeas.ananke.core.data.provider.jpa.entity.AbstractJpaEntity; +import eu.europa.eeas.ananke.core.data.repository.EntityReaderRepository; +import eu.europa.eeas.ananke.core.data.repository.EntitySaverRepository; +import eu.europa.eeas.ananke.core.data.support.EntityRepositoryRegistry; +import eu.europa.eeas.ananke.core.security.SecurityHelper; +import eu.europa.eeas.ananke.core.service.AbstractServiceProvider; +import eu.europa.eeas.ananke.core.service.model.AbstractModel; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.configuration.DefaultServiceDataProviderConfiguration; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; + +import java.io.Serializable; + +import static org.mockito.Mockito.when; + +/** + * Created by iliessu on 06/12/2019; e-rights. + * + *

    + * {@code AbstractServiceProvider} unit test base. + *

    + * + * @author Silviu Ilie. + * @see AbstractServiceProvider + */ +@Import(DefaultServiceDataProviderConfiguration.class) +@EnableGlobalMethodSecurity(prePostEnabled = true, proxyTargetClass = true) +public class AbstractServiceProviderUTBase { + + @Autowired + public BeanMapper beanMapper; + + @Autowired + protected EntityRepositoryRegistry entityRepositoryRegistry; + + @Autowired + protected T serviceProvider; + + @Autowired + protected MovementFileSecurityChecker movementFileSecurityChecker; + + @Autowired + protected SecurityHelper securityHelper; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @MockBean + private AbstractUserHandler userHandler; + + public BeanMapper getBeanMapper() { + return this.beanMapper; + } + + protected , R extends EntityReaderRepository> void registerReaderRepository(Class entityType, + R repository) { + when(this.entityRepositoryRegistry.getReaderRepositoryFor(entityType)).thenReturn(repository); + } + + protected , R extends EntityReaderRepository> void registerReaderRepository(Class entityType, + Class repositoryType, + R repository) { + when(this.entityRepositoryRegistry.getReaderRepositoryFor(entityType, repositoryType)).thenReturn(repository); + } + + protected , R extends EntitySaverRepository> void registerSaverRepository(Class entityType, + R repository) { + when(this.entityRepositoryRegistry.getSaverRepositoryFor(entityType)).thenReturn(repository); + } + + protected > void registerDataServiceProviderRegistry(Class modelType, + R service) { + when(this.dataServiceProviderRegistry.getDataServiceProviderFor(modelType)).thenReturn(service); + } + +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/configuration/DefaultServiceDataProviderConfiguration.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/configuration/DefaultServiceDataProviderConfiguration.java new file mode 100644 index 0000000..b079a6c --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/configuration/DefaultServiceDataProviderConfiguration.java @@ -0,0 +1,66 @@ +package eu.europa.eeas.erights.common.service.data.configuration; + +import eu.europa.eeas.ananke.core.base.AnankeCoreBaseBeanNames; +import eu.europa.eeas.ananke.core.base.mapping.bean.BeanMapper; +import eu.europa.eeas.ananke.core.base.validation.AnankeValidator; +import eu.europa.eeas.ananke.core.data.AnankeCoreDataBeanNames; +import eu.europa.eeas.ananke.core.data.support.EntityRepositoryRegistry; +import eu.europa.eeas.ananke.core.security.AnankeCoreSecurityBeanNames; +import eu.europa.eeas.ananke.core.security.SecurityHelper; +import eu.europa.eeas.ananke.core.service.provider.data.AnankeCoreServiceProviderDataBeanNames; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.validation.MovementFileValidator; +import org.mockito.Mockito; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Created by iliessu on 06/12/2019; e-rights. + * + *

    + * TODO : comment class ! + *

    + * + * @author Silviu Ilie. + * + */ +@Configuration +public class DefaultServiceDataProviderConfiguration { + + @Bean(AnankeCoreBaseBeanNames.BEAN_MAPPER) + public BeanMapper beanMapper() { + return Mockito.mock(BeanMapper.class); + } + + @Bean(AnankeCoreServiceProviderDataBeanNames.DATA_SERVICE_PROVIDER_REGISTRY) + public DataServiceProviderRegistry dataServiceProviderRegistry() { + return Mockito.mock(DataServiceProviderRegistry.class); + } + + @Bean(AnankeCoreDataBeanNames.ENTITY_REPOSITORY_REGISTRY) + public EntityRepositoryRegistry entityRepositoryRegistry() { + return Mockito.mock(EntityRepositoryRegistry.class); + } + + @Bean(AnankeCoreSecurityBeanNames.SECURITY_HELPER) + public SecurityHelper securityHelper() { + return Mockito.mock(SecurityHelper.class); + } + + @Bean + public AnankeValidator validator() { + return Mockito.mock(AnankeValidator.class); + } + + @Bean(ERightsBeanNames.MOVEMENT_FILE_VALIDATOR) + public MovementFileValidator movementFileValidator() { + return Mockito.mock(MovementFileValidator.class); + } + + @Bean(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + public MovementFileSecurityChecker movementFileSecurityChecker() { + return Mockito.mock(MovementFileSecurityChecker.class); + } +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/configuration/SkyScannerTestConfig.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/configuration/SkyScannerTestConfig.java new file mode 100644 index 0000000..f910215 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/configuration/SkyScannerTestConfig.java @@ -0,0 +1,38 @@ +package eu.europa.eeas.erights.common.service.data.configuration; + +import org.apache.http.HttpException; +import org.apache.http.HttpHost; +import org.apache.http.HttpRequest; +import org.apache.http.client.HttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.conn.DefaultProxyRoutePlanner; +import org.apache.http.protocol.HttpContext; +import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; + +@Configuration +@ComponentScan("eu.europa.eeas.erights.common.service.provider.tud") +public class SkyScannerTestConfig { + + @Bean + public RestTemplate getRestTemplate() { + RestTemplate restTemplate = new RestTemplateBuilder(rt -> { + HttpHost proxy = new HttpHost("iasproxy.eeas.europa.eu", 3128); + HttpClient httpClient = HttpClientBuilder.create() + .setRoutePlanner(new DefaultProxyRoutePlanner(proxy) { + @Override + public HttpHost determineProxy(HttpHost target, HttpRequest request, HttpContext context) throws HttpException { + return super.determineProxy(target, request, context); + } + }) + .build(); + rt.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient)); + }).build(); + return restTemplate; + } + +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/PersonIndemnityCustomMapperTest.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/PersonIndemnityCustomMapperTest.java new file mode 100644 index 0000000..e60f0d5 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/mapping/custommapper/PersonIndemnityCustomMapperTest.java @@ -0,0 +1,215 @@ +package eu.europa.eeas.erights.common.service.data.mapping.custommapper; + +import eu.europa.eeas.erights.common.data.jpa.entity.PersonIndemnityJpaEntity; +import eu.europa.eeas.erights.common.service.model.PersonIndemnityModel; +import ma.glasnost.orika.MappingContext; +import org.junit.jupiter.api.Test; + +import static eu.europa.eeas.erights.common.tools.requests.IndemnityHelper.*; +import static org.assertj.core.api.Assertions.assertThat; + +class PersonIndemnityCustomMapperTest { + + PersonIndemnityCustomMapper mapper = new PersonIndemnityCustomMapper(); + + @Test + void inseIndemnityTIE() { + //given + Long indemnityIdType = INSE_LONG; + Long allowancesCount = 3L; + String unitEn = "TIE"; + PersonIndemnityJpaEntity jpaEntity = getJpaEntity(indemnityIdType, allowancesCount, unitEn); + PersonIndemnityModel model = new PersonIndemnityModel(); + //when + mapper.mapBtoA(jpaEntity, model, new MappingContext.Factory().getContext()); + //then + assertThat(model.getIndemnityTypeEnUserFriendly()).isEqualTo("One month's basic salary"); + } + + @Test + void inseIndemnity24th() { + //given + Long indemnityIdType = INSE_LONG; + Long allowancesCount = 24L; + String unitEn = "24th"; + PersonIndemnityJpaEntity jpaEntity = getJpaEntity(indemnityIdType, allowancesCount, unitEn); + PersonIndemnityModel model = new PersonIndemnityModel(); + //when + mapper.mapBtoA(jpaEntity, model, new MappingContext.Factory().getContext()); + //then + assertThat(model.getIndemnityTypeEnUserFriendly()).isEqualTo("One month's basic salary"); + } + + @Test + void inseIndemnity36th() { + //given + Long indemnityIdType = INSE_LONG; + Long allowancesCount = 36L; + String unitEn = "36th"; + PersonIndemnityJpaEntity jpaEntity = getJpaEntity(indemnityIdType, allowancesCount, unitEn); + PersonIndemnityModel model = new PersonIndemnityModel(); + //when + mapper.mapBtoA(jpaEntity, model, new MappingContext.Factory().getContext()); + //then + assertThat(model.getIndemnityTypeEnUserFriendly()).isEqualTo("One month's basic salary"); + } + + @Test + void indmIndemnityTIE() { + //given + Long indemnityIdType = INDM_LONG; + Long allowancesCount = 3L; + String unitEn = "TIE"; + PersonIndemnityJpaEntity jpaEntity = getJpaEntity(indemnityIdType, allowancesCount, unitEn); + PersonIndemnityModel model = new PersonIndemnityModel(); + //when + mapper.mapBtoA(jpaEntity, model, new MappingContext.Factory().getContext()); + //then + assertThat(model.getIndemnityTypeEnUserFriendly()).isEqualTo("One month's basic salary"); + } + + @Test + void indmIndemnity24th() { + //given + Long indemnityIdType = INDM_LONG; + Long allowancesCount = 24L; + String unitEn = "24th"; + PersonIndemnityJpaEntity jpaEntity = getJpaEntity(indemnityIdType, allowancesCount, unitEn); + PersonIndemnityModel model = new PersonIndemnityModel(); + //when + mapper.mapBtoA(jpaEntity, model, new MappingContext.Factory().getContext()); + //then + assertThat(model.getIndemnityTypeEnUserFriendly()).isEqualTo("One month's basic salary"); + } + + @Test + void indmIndemnity36th() { + //given + Long indemnityIdType = INDM_LONG; + Long allowancesCount = 36L; + String unitEn = "36th"; + PersonIndemnityJpaEntity jpaEntity = getJpaEntity(indemnityIdType, allowancesCount, unitEn); + PersonIndemnityModel model = new PersonIndemnityModel(); + //when + mapper.mapBtoA(jpaEntity, model, new MappingContext.Factory().getContext()); + //then + assertThat(model.getIndemnityTypeEnUserFriendly()).isEqualTo("One month's basic salary"); + } + + @Test + void indeIndemnityTIE() { + //given + Long indemnityIdType = INDE_LONG; + Long allowancesCount = 3L; + String unitEn = "TIE"; + PersonIndemnityJpaEntity jpaEntity = getJpaEntity(indemnityIdType, allowancesCount, unitEn); + PersonIndemnityModel model = new PersonIndemnityModel(); + //when + mapper.mapBtoA(jpaEntity, model, new MappingContext.Factory().getContext()); + //then + assertThat(model.getIndemnityTypeEnUserFriendly()).isEqualTo("Two month's basic salary"); + } + + @Test + void indeIndemnity24th() { + //given + Long indemnityIdType = INDE_LONG; + Long allowancesCount = 24L; + String unitEn = "24th"; + PersonIndemnityJpaEntity jpaEntity = getJpaEntity(indemnityIdType, allowancesCount, unitEn); + PersonIndemnityModel model = new PersonIndemnityModel(); + //when + mapper.mapBtoA(jpaEntity, model, new MappingContext.Factory().getContext()); + //then + assertThat(model.getIndemnityTypeEnUserFriendly()).isEqualTo("Two month's basic salary"); + } + + @Test + void indeIndemnity36th() { + //given + Long indemnityIdType = INDE_LONG; + Long allowancesCount = 36L; + String unitEn = "36th"; + PersonIndemnityJpaEntity jpaEntity = getJpaEntity(indemnityIdType, allowancesCount, unitEn); + PersonIndemnityModel model = new PersonIndemnityModel(); + //when + mapper.mapBtoA(jpaEntity, model, new MappingContext.Factory().getContext()); + //then + assertThat(model.getIndemnityTypeEnUserFriendly()).isEqualTo("Two month's basic salary"); + } + + @Test + void inseIndemnity36thWithNoMatchingAllowanceCount() { + //given + Long indemnityIdType = INSE_LONG; + Long allowancesCount = 35L; + String unitEn = "36th"; + PersonIndemnityJpaEntity jpaEntity = getJpaEntity(indemnityIdType, allowancesCount, unitEn); + PersonIndemnityModel model = new PersonIndemnityModel(); + //when + mapper.mapBtoA(jpaEntity, model, new MappingContext.Factory().getContext()); + //then + assertThat(model.getIndemnityTypeEnUserFriendly()).isEqualTo(getExpectedOneMonthMessage("35/36")); + } + + @Test + void indmIndemnity36thWithNoMatchingAllowanceCount() { + //given + Long indemnityIdType = INDM_LONG; + Long allowancesCount = 13L; + String unitEn = "24th"; + PersonIndemnityJpaEntity jpaEntity = getJpaEntity(indemnityIdType, allowancesCount, unitEn); + PersonIndemnityModel model = new PersonIndemnityModel(); + //when + mapper.mapBtoA(jpaEntity, model, new MappingContext.Factory().getContext()); + //then + assertThat(model.getIndemnityTypeEnUserFriendly()).isEqualTo(getExpectedOneMonthMessage("13/24")); + } + + @Test + void indeIndemnity36thWithNoMatchingAllowanceCount() { + //given + Long indemnityIdType = INDE_LONG; + Long allowancesCount = 13L; + String unitEn = "24th"; + PersonIndemnityJpaEntity jpaEntity = getJpaEntity(indemnityIdType, allowancesCount, unitEn); + PersonIndemnityModel model = new PersonIndemnityModel(); + //when + mapper.mapBtoA(jpaEntity, model, new MappingContext.Factory().getContext()); + //then + assertThat(model.getIndemnityTypeEnUserFriendly()).isEqualTo("Two month's basic salary x 13/24 " + + "according to the length of your assignment.
    " + + "info Please note that this installation allowance " + + "does not take into account the possible extension of your contract.
    "); + } + + @Test + void otherIndemnity36thWithNoMatchingAllowanceCount() { + //given + Long indemnityIdType = 111L; + Long allowancesCount = 13L; + String unitEn = "24th"; + PersonIndemnityJpaEntity jpaEntity = getJpaEntity(indemnityIdType, allowancesCount, unitEn); + PersonIndemnityModel model = new PersonIndemnityModel(); + //when + mapper.mapBtoA(jpaEntity, model, new MappingContext.Factory().getContext()); + //then + assertThat(model.getIndemnityTypeEnUserFriendly()).isEqualTo(""); + } + + private PersonIndemnityJpaEntity getJpaEntity(Long indemnityIdType, Long allowancesCount, String unitEn) { + PersonIndemnityJpaEntity jpaEntity = new PersonIndemnityJpaEntity(); + jpaEntity.setIndemnityIdType(indemnityIdType); + jpaEntity.setAllowancesCount(allowancesCount); + jpaEntity.setUnitEn(unitEn); + jpaEntity.setIndemnityTypeEn("Default Text"); + return jpaEntity; + } + + private String getExpectedOneMonthMessage(String fraction) { + return "One month's basic salary x " + fraction + " " + + "according to the length of your assignment.
    " + + "info Please note that this installation " + + "allowance does not take into account the possible extension of your contract.
    "; + } +} \ No newline at end of file diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/DeclarationJpaServiceProviderUT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/DeclarationJpaServiceProviderUT.java new file mode 100644 index 0000000..f9e41a4 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/DeclarationJpaServiceProviderUT.java @@ -0,0 +1,413 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.erights.common.data.jpa.entity.PersonAddressJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.FamilyMemberJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.FamilyMemberJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.PersonAddressJpaRepository; +import eu.europa.eeas.erights.common.service.data.provider.declaration.DeclarationJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.PersonModel; +import eu.europa.eeas.erights.common.service.model.VJobModel; +import eu.europa.eeas.erights.common.service.model.VPersonModel; +import eu.europa.eeas.erights.common.service.model.declaration.TudEligibilityModel; +import org.junit.Test; +import org.junit.jupiter.api.Disabled; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.springframework.test.context.junit4.SpringRunner; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +import static eu.europa.eeas.erights.common.service.data.provider.declaration.DeclarationJpaServiceProvider.PERSONAL_PRIVATE_ADDRESS_CODE; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.when; + +/** + * @author idominju + */ +@RunWith(SpringRunner.class) +@Disabled("Need refactoring") +class DeclarationJpaServiceProviderUT { + + MovementFileModel movementFileModel; + + PersonModel familyMember; + + long staffId; + + LocalDate staffAssignmentDate; + + boolean isNonFamilyPosting; + + String staffCountry; + + String staffCity; + + boolean isNewRecruiter; + + long familyMemberId; + + String familyMemberRelation; + + boolean familyMemberAllowanceDependent; + + LocalDate familyMemberBirthday; + + String familyMemberCountry; + + String familyMemberCity; + + @Mock + private FamilyMemberJpaRepository familyMemberJpaRepositoryMock; + + @Mock + private PersonAddressJpaRepository personAddressJpaRepositoryMock; + + @InjectMocks + private DeclarationJpaServiceProvider declarationJpaServiceProvider; + + @Test + void familyMemberChildrenOneYearsOldENoEligible() { + // given a staff + staffId = 1100L; + staffAssignmentDate = LocalDate.of(2022, 1, 1); + // and a family member + familyMemberId = 1L; + familyMemberRelation = DeclarationJpaServiceProvider.REL_CHILD; + familyMemberAllowanceDependent = true; + familyMemberBirthday = LocalDate.of(2021, 1, 1); + + arrange(); + + // when + TudEligibilityModel result = declarationJpaServiceProvider.isTudEligible(familyMember, movementFileModel); + // then + assertFalse(result.getTudEligible()); + assertEquals("This person is aged under 2 during the entire year therefore is not eligible for TUD allowance", result.getTudNoEligibilityReason()); + } + + @Test + void familyMemberChildrenTwoYearsOldEligible() { + // given a staff + staffId = 1100L; + staffAssignmentDate = LocalDate.of(2022, 1, 1); + // and a family member + familyMemberId = 1L; + familyMemberRelation = DeclarationJpaServiceProvider.REL_CHILD; + familyMemberAllowanceDependent = true; + familyMemberBirthday = LocalDate.of(2020, 12, 31); + + arrange(); + + // when + TudEligibilityModel result = declarationJpaServiceProvider.isTudEligible(familyMember, movementFileModel); + // then + assertTrue(result.getTudEligible()); + } + + @Test + void familyMemberChildrenTwoYearsOldNoEligibleSameAddressNormalStaff() { + // given a staff + staffId = 1100L; + staffAssignmentDate = LocalDate.of(2022, 1, 1); + staffCountry = "BEL"; + staffCity = "BRU"; + // and a family member + familyMemberId = 1L; + familyMemberRelation = DeclarationJpaServiceProvider.REL_CHILD; + familyMemberAllowanceDependent = true; + familyMemberBirthday = LocalDate.of(2020, 12, 31); + familyMemberCountry = "BEL"; + familyMemberCity = "BRU"; + + arrange(); + + // when + TudEligibilityModel result = declarationJpaServiceProvider.isTudEligible(familyMember, movementFileModel); + // then + assertTrue(result.getTudEligible()); + } + + @Test + void familyMemberChildrenTwoYearsOldNoEligibleDifferentCountryNormalStaff() { + // given a staff + staffId = 1100L; + staffAssignmentDate = LocalDate.of(2022, 1, 1); + staffCountry = "BEL"; + staffCity = "BRU"; + // and a family member + familyMemberId = 1L; + familyMemberRelation = DeclarationJpaServiceProvider.REL_CHILD; + familyMemberAllowanceDependent = true; + familyMemberBirthday = LocalDate.of(2020, 12, 31); + familyMemberCountry = "MAD"; + familyMemberCity = "BRU"; + + arrange(); + + // when + TudEligibilityModel result = declarationJpaServiceProvider.isTudEligible(familyMember, movementFileModel); + // then + assertFalse(result.getTudEligible()); + assertEquals("This person does not currently live in your households, to be entitled to the Take-up-Duty flat rate your addresses should be the same", result.getTudNoEligibilityReason()); + } + + @Test + void familyMemberChildrenTwoYearsOldNoEligibleDifferentCityNormalStaff() { + // given a staff + staffId = 1100L; + staffAssignmentDate = LocalDate.of(2022, 1, 1); + staffCountry = "BEL"; + staffCity = "BRU"; + // and a family member + familyMemberId = 1L; + familyMemberRelation = DeclarationJpaServiceProvider.REL_CHILD; + familyMemberAllowanceDependent = true; + familyMemberBirthday = LocalDate.of(2020, 12, 31); + familyMemberCountry = "BEL"; + familyMemberCity = "GHE"; + + arrange(); + + // when + TudEligibilityModel result = declarationJpaServiceProvider.isTudEligible(familyMember, movementFileModel); + // then + assertFalse(result.getTudEligible()); + assertEquals("This person does not currently live in your households, to be entitled to the Take-up-Duty flat rate your addresses should be the same", result.getTudNoEligibilityReason()); + } + + @Test + void familyMemberChildrenTwoYearsOldNoEligibleSameAddressNonFamilyPosting() { + // given a staff + staffId = 1100L; + staffAssignmentDate = LocalDate.of(2022, 1, 1); + staffCountry = "BEL"; + staffCity = "BRU"; + // and a family member + familyMemberId = 1L; + familyMemberRelation = DeclarationJpaServiceProvider.REL_CHILD; + familyMemberAllowanceDependent = true; + familyMemberBirthday = LocalDate.of(2020, 12, 31); + familyMemberCountry = "BEL"; + familyMemberCity = "BRU"; + + arrange(); + + // when + TudEligibilityModel result = declarationJpaServiceProvider.isTudEligible(familyMember, movementFileModel); + // then + assertTrue(result.getTudEligible()); + assertTrue("".equals(result.getTudNoEligibilityReason())); + } + + @Test + void familyMemberChildrenTwoYearsOldNoEligibleDifferentCountryNonFamilyPosting() { + // given a staff + staffId = 1100L; + staffAssignmentDate = LocalDate.of(2022, 1, 1); + staffCountry = "BEL"; + staffCity = "BRU"; + // and a family member + familyMemberId = 1L; + familyMemberRelation = DeclarationJpaServiceProvider.REL_CHILD; + familyMemberAllowanceDependent = true; + familyMemberBirthday = LocalDate.of(2020, 12, 31); + familyMemberCountry = "MAD"; + familyMemberCity = "BRU"; + + arrange(); + + // when + TudEligibilityModel result = declarationJpaServiceProvider.isTudEligible(familyMember, movementFileModel); + // then + assertFalse(result.getTudEligible()); + assertEquals("This person does not currently live in your households, to be entitled to the Take-up-Duty flat rate your addresses should be the same", result.getTudNoEligibilityReason()); + } + + @Test + void familyMemberChildrenTwoYearsOldNoEligibleDifferentCityNonFamilyPosting() { + // given a staff + staffId = 1100L; + staffAssignmentDate = LocalDate.of(2022, 1, 1); + staffCountry = "BEL"; + staffCity = "BRU"; + // and a family member + familyMemberId = 1L; + familyMemberRelation = DeclarationJpaServiceProvider.REL_CHILD; + familyMemberAllowanceDependent = true; + familyMemberBirthday = LocalDate.of(2020, 12, 31); + familyMemberCountry = "BEL"; + familyMemberCity = "GHE"; + + arrange(); + + // when + TudEligibilityModel result = declarationJpaServiceProvider.isTudEligible(familyMember, movementFileModel); + // then + assertFalse(result.getTudEligible()); + assertEquals("This person does not currently live in your households, to be entitled to the Take-up-Duty flat rate your addresses should be the same", result.getTudNoEligibilityReason()); + } + + @Test + void familyMemberChildrenNoAllowanceDependent() { + // given a staff + staffId = 1100L; + staffAssignmentDate = LocalDate.of(2022, 1, 1); + // and a family member + familyMemberId = 1L; + familyMemberRelation = DeclarationJpaServiceProvider.REL_CHILD; + familyMemberAllowanceDependent = false; + + arrange(); + + // when + TudEligibilityModel result = declarationJpaServiceProvider.isTudEligible(familyMember, movementFileModel); + // then + assertFalse(result.getTudEligible()); + assertEquals("Your child is not registered as your dependent in Sysper.", result.getTudNoEligibilityReason()); + } + + @Test + void familyMemberChildrenAllowanceDependentNonFamilyPosting() { + // given a staff + staffId = 1100L; + staffAssignmentDate = LocalDate.of(2022, 1, 1); + // and a family member + familyMemberId = 1L; + familyMemberRelation = DeclarationJpaServiceProvider.REL_CHILD; + familyMemberAllowanceDependent = true; + familyMemberBirthday = LocalDate.of(2015, 12, 31); + + arrange(); + + // when + TudEligibilityModel result = declarationJpaServiceProvider.isTudEligible(familyMember, movementFileModel); + // then + assertTrue(result.getTudEligible()); + } + + @Test + void familyMemberSpouse() { + // given a staff + staffId = 1100L; + staffAssignmentDate = LocalDate.of(2022, 1, 1); + // and a family member + familyMemberId = 1L; + familyMemberRelation = DeclarationJpaServiceProvider.REL_SPOUSE; + + arrange(); + + // when + TudEligibilityModel result = declarationJpaServiceProvider.isTudEligible(familyMember, movementFileModel); + // then + assertTrue(result.getTudEligible()); + } + + @Test + void familyMemberAdoptedChild() { + // given a staff + staffId = 1100L; + staffAssignmentDate = LocalDate.of(2022, 1, 1); + isNewRecruiter = true; + // and a family member + familyMemberId = 1L; + familyMemberRelation = DeclarationJpaServiceProvider.REL_CHILD_ADOPTED; + familyMemberAllowanceDependent = true; + familyMemberBirthday = LocalDate.of(2015, 12, 31); + + arrange(); + + // when + TudEligibilityModel result = declarationJpaServiceProvider.isTudEligible(familyMember, movementFileModel); + // then + assertTrue(result.getTudEligible()); + } + + @Test + void familyMemberAdoptedChildSameNoAddress() { + // given a staff + staffId = 1100L; + staffAssignmentDate = LocalDate.of(2022, 1, 1); + isNonFamilyPosting = true; + // and a family member + familyMemberId = 1L; + familyMemberRelation = DeclarationJpaServiceProvider.REL_CHILD_ADOPTED; + familyMemberAllowanceDependent = true; + familyMemberBirthday = LocalDate.of(2015, 12, 31); + + arrange(); + + // when + TudEligibilityModel result = declarationJpaServiceProvider.isTudEligible(familyMember, movementFileModel); + // then + assertTrue(result.getTudEligible()); + } + + private List getAddresses(long id, String countryCode, String cityName) { + List list = new ArrayList(); + PersonAddressJpaEntity item = new PersonAddressJpaEntity(); + item.setPerId(id); + item.setCountryCode(countryCode); + item.setCityName(cityName); + list.add(item); + return list; + } + + private MovementFileModel getMovementFileModel(boolean isNewRecruiter, Long personModelId, LocalDate startDate, Boolean familyPosting) { + MovementFileModel mfFromNonFam = new MovementFileModel(); + mfFromNonFam.setJobHolder(getPersonModel(personModelId)); + mfFromNonFam.setStartDate(startDate); + if (!isNewRecruiter) + mfFromNonFam.setJobFrom(new VJobModel()); + mfFromNonFam.setFamilyPosting(familyPosting); + return mfFromNonFam; + } + + private VPersonModel getPersonModel(Long id) { + VPersonModel vperson = new VPersonModel(); + vperson.setPerId(id); + return vperson; + } + + private PersonModel getFamilyMember(Long id) { + PersonModel relative = new PersonModel(); + relative.setId(id); + return relative; + } + + private List getFamilyMembers(Long staffMemberId, + Long relationPerId, + String relation, + boolean allowanceDependent, + LocalDate birthDay) { + List familyMembers = new ArrayList<>(); + FamilyMemberJpaEntity familyMember = new FamilyMemberJpaEntity(); + familyMember.setPerId(staffMemberId); + familyMember.setRelPerId(relationPerId); + familyMember.setRelation(relation); + familyMember.setChildAllowanceGranted(allowanceDependent); + familyMember.setRelBirthDate(birthDay); + familyMembers.add(familyMember); + return familyMembers; + } + + private void arrange() { + movementFileModel = getMovementFileModel(isNewRecruiter, staffId, staffAssignmentDate, isNonFamilyPosting); + familyMember = getFamilyMember(familyMemberId); + when(familyMemberJpaRepositoryMock.findAllByPerId(staffId)).thenReturn( + getFamilyMembers(staffId, + familyMemberId, + familyMemberRelation, + familyMemberAllowanceDependent, + familyMemberBirthday) + ); + when(personAddressJpaRepositoryMock.findAllByPerIdAndTadrCd(staffId, PERSONAL_PRIVATE_ADDRESS_CODE)).thenReturn(getAddresses(staffId, staffCountry, staffCity)); + when(personAddressJpaRepositoryMock.findAllByPerIdAndTadrCd(familyMemberId, PERSONAL_PRIVATE_ADDRESS_CODE)).thenReturn(getAddresses(familyMemberId, familyMemberCountry, familyMemberCity)); + } + +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/ExchangeRateJpaServiceProviderUT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/ExchangeRateJpaServiceProviderUT.java new file mode 100644 index 0000000..d6fc5dc --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/ExchangeRateJpaServiceProviderUT.java @@ -0,0 +1,72 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.locale.Localization; +import eu.europa.eeas.erights.common.data.jpa.entity.ExchangeRateJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.ExchangeRateJpaRepository; +import eu.europa.eeas.erights.common.service.data.AbstractServiceProviderUTBase; +import eu.europa.eeas.erights.common.service.model.ExchangeRateModel; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.Month; +import java.util.Collections; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.when; + + +@ContextConfiguration(classes = {ExchangeRateJpaServiceProvider.class}) +@Disabled("Need refactoring") +class ExchangeRateJpaServiceProviderUT extends AbstractServiceProviderUTBase { + + @MockBean + private Localization localization; + + @MockBean + private ExchangeRateJpaRepository exchangeRateJpaRepository; + + @BeforeEach + public void setUp() { + registerReaderRepository(ExchangeRateJpaEntity.class, ExchangeRateJpaRepository.class, exchangeRateJpaRepository); + } + + @Test + void getActiveExchangeRates() { + //given + LocalDate date = LocalDate.of(2021, Month.MAY, 17); + List exchangeRateJpaEntities = getExchangeRateJpaEntities(); + given(exchangeRateJpaRepository.findAllByIdStartDateBeforeAndIdEndDateAfter(date, date)).willReturn(exchangeRateJpaEntities); + when(this.beanMapper.mapAsList(exchangeRateJpaEntities, ExchangeRateModel.class)).thenReturn(getExchangeRateJpaModels()); + //when + List modelList = this.serviceProvider.getActiveExchangeRates(date); + //then + assertThat(modelList.size()).isEqualTo(1); + } + + private List getExchangeRateJpaEntities() { + ExchangeRateJpaEntity entity = new ExchangeRateJpaEntity(); + entity.setId(1L); + entity.setCurrency("EUR"); + entity.setEndDate(LocalDate.of(2021, Month.MAY, 31)); + entity.setStartDate(LocalDate.of(2021, Month.MAY, 1)); + entity.setExchangeRate(BigDecimal.ONE); + return Collections.singletonList(entity); + } + + private List getExchangeRateJpaModels() { + ExchangeRateModel model = new ExchangeRateModel(); + model.setCurrency("EUR"); + model.setEndDate(LocalDate.of(2021, Month.MAY, 1)); + model.setExchangeRate(BigDecimal.ONE); + model.setStartDate(LocalDate.of(2021, Month.MAY, 31)); + return Collections.singletonList(model); + } +} \ No newline at end of file diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/MovementContextProviderUT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/MovementContextProviderUT.java new file mode 100644 index 0000000..685c3fd --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/MovementContextProviderUT.java @@ -0,0 +1,84 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.locale.Localization; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementContextJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.MovementContextJpaRepository; +import eu.europa.eeas.erights.common.service.data.AbstractServiceProviderUTBase; +import eu.europa.eeas.erights.common.service.model.MovementContextModel; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; + +import java.util.ArrayList; +import java.util.List; + +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +/** + * Created by iliessu on 06/12/2019; e-rights. + * + *

    + * {@link MovementContextJpaServiceProvider} unit test. + *

    + * + * @author Silviu Ilie. + * + */ +@ContextConfiguration(classes = {MovementContextJpaServiceProvider.class}) +@Disabled("Need refactoring") +class MovementContextProviderUT extends AbstractServiceProviderUTBase { + + @MockBean + private MovementContextJpaRepository movementContextRepository; + + @MockBean + private Localization localization; + + @BeforeEach + void setUp() { + registerReaderRepository(MovementContextJpaEntity.class, this.movementContextRepository); + } + + @Test + void list() { + + MovementContextJpaEntity movementEntity = new MovementContextJpaEntity(); + List allEntitiesFound = new ArrayList<>(); + allEntitiesFound.add(movementEntity); + + MovementContextModel movementModel = new MovementContextModel(); + List allMovements = new ArrayList<>(); + allMovements.add(movementModel); + + when(this.movementContextRepository.findAll()).thenReturn(allEntitiesFound); + when(this.beanMapper.mapAsList(allEntitiesFound, MovementContextModel.class)).thenReturn(allMovements); + + this.serviceProvider.get(); + + verify(this.movementContextRepository).findAll(); + verify(this.beanMapper).mapAsList(allEntitiesFound, MovementContextModel.class); + } + + @Test + void get() { + + final Long identity = 42L; + + MovementContextJpaEntity movementEntity = new MovementContextJpaEntity(); + movementEntity.setId(identity); + + MovementContextModel movementModel = new MovementContextModel(); + movementModel.setId(identity); + + when(this.movementContextRepository.findById(identity)).thenReturn(movementEntity); + when(this.beanMapper.map(movementEntity, MovementContextModel.class)).thenReturn(movementModel); + + this.serviceProvider.get(identity); + + verify(this.movementContextRepository).findById(identity); + verify(this.beanMapper).map(movementEntity, MovementContextModel.class); + } +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/MovementFileJpaServiceProviderUT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/MovementFileJpaServiceProviderUT.java new file mode 100644 index 0000000..e21fcab --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/MovementFileJpaServiceProviderUT.java @@ -0,0 +1,418 @@ +package eu.europa.eeas.erights.common.service.data.provider; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.base.exception.ValidationRuntimeException; +import eu.europa.eeas.ananke.tools.edms.connector.service.model.enums.Status; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.ananke.tools.statemachine.service.history.StateMachineHistoryHolder; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionModel; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionResultModel; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementContextJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementTypeJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.VPersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.notification.NotificationMFJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.MovementFileJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.VPersonJpaRepository; +import eu.europa.eeas.erights.common.service.data.AbstractServiceProviderUTBase; +import eu.europa.eeas.erights.common.service.data.configuration.DefaultServiceDataProviderConfiguration; +import eu.europa.eeas.erights.common.service.data.provider.declaration.DeclarationJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementTypeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.notification.NotificationMFJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.notification.NotificationTemplateJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.validation.MovementFileValidator; +import eu.europa.eeas.erights.common.service.model.MovementContextModel; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.MovementTypeModel; +import eu.europa.eeas.erights.common.service.model.VPersonModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.notification.NotificationMFModel; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileEvent; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.UUID; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +/** + * @author imironiu + */ +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = {MovementFileJpaServiceProvider.class, DefaultServiceDataProviderConfiguration.class}) +@Disabled("Need refactoring") +class MovementFileJpaServiceProviderUT extends AbstractServiceProviderUTBase { + + public static final String DATE_FORMATTER = "yyyy-MM-dd HH:mm:ss"; + + private static final String CONTEXT_ROTATION = "ROTATION"; + + private static final Long ID = 1L; + + private static final Long MOVEMNT_TYPE_ID = 10L; + + private static final Long PER_ID = 1L; + + private static final String MOVEMNT_TYPE = "DEL-DEL"; + + private static final Integer YEAR = 2000; + + private static final String FILE_ID = "2000-ROTATION-1"; + + private static final UUID uuid = UUID.randomUUID(); + + @MockBean + private MovementFileJpaRepository repository; + + @MockBean + private VPersonJpaRepository personJpaRepository; + + @MockBean + private MovementFileValidator validatorMock; + + @MockBean + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @MockBean + private EntitlementTypeJpaServiceProvider entitlementTypeJpaServiceProvider; + + @MockBean + private DeclarationJpaServiceProvider declarationJpaServiceProvider; + + @MockBean + private NotificationMFJpaServiceProvider notificationMFJpaServiceProvider; + + @MockBean + @Qualifier(ERightsBeanNames.MovementFileStateMachine.SERVICE) + private StateMachineService stateMachineService; + + @MockBean + private NotificationTemplateJpaServiceProvider notificationTemplateJpaServiceProvider; + + @BeforeEach + void setUp() { + registerReaderRepository(MovementFileJpaEntity.class, repository); + registerSaverRepository(MovementFileJpaEntity.class, repository); + registerDataServiceProviderRegistry(EntitlementTypeModel.class, this.entitlementTypeJpaServiceProvider); + registerDataServiceProviderRegistry(DeclarationModel.class, this.declarationJpaServiceProvider); + registerDataServiceProviderRegistry(NotificationMFModel.class, this.notificationMFJpaServiceProvider); + } + + @Test + @WithMockUser + void getAMovementFileReturnsSuccessfully() { + when(this.movementFileSecurityChecker.canView(ID)).thenReturn(true); + when(this.entityRepositoryRegistry.getReaderRepositoryFor(VPersonJpaEntity.class, VPersonJpaRepository.class)).thenReturn(personJpaRepository); + MovementFileModel model = createMovementFileModel(ID); + MovementFileJpaEntity movementFileEntity = createMovementFileEntity(ID); + //mock read movement file + when(this.beanMapper.map(model, MovementFileJpaEntity.class)).thenReturn(movementFileEntity); + when(this.repository.findById(ID)).thenReturn(movementFileEntity); + when(this.beanMapper.map(movementFileEntity, MovementFileModel.class)).thenReturn(model); + + this.serviceProvider.get(ID); + + verify(this.repository).findById(ID); + } + + @Test + void onSaveMovementFileTheFileIdIsGeneratedAndSmIdAdded() { + MovementFileModel model = createMovementFileModel(null); + + when(this.movementFileSecurityChecker.canCreate()).thenReturn(true); + doNothing().when(validatorMock).validateSaveMovementFile(model,model); + + MovementFileJpaEntity movementFileEntity = createMovementFileEntity(null); + MovementFileJpaEntity movementFileEntitySaved = createMovementFileEntity(ID); + + StateMachineTransitionResultModel stateModel = new StateMachineTransitionResultModel(true, uuid, + MovementFileState.START, MovementFileState.PENDING, MovementFileEvent.CREATE, null); + when(this.stateMachineService.send(MovementFileEvent.CREATE)).thenReturn(stateModel); + + //mock create + when(this.beanMapper.map(model, MovementFileJpaEntity.class)).thenReturn(movementFileEntity); + when(this.repository.save(movementFileEntity)).thenReturn(movementFileEntitySaved); + when(this.beanMapper.map(movementFileEntitySaved, MovementFileModel.class)).thenReturn(createMovementFileModel(ID)); + + //mock update + MovementFileModel updatedModel = updateMovementFileModel(createMovementFileModel(ID)); + MovementFileJpaEntity updatedMovementFileEntity = updateMovementFileEntity(movementFileEntitySaved); + when(this.beanMapper.map(updatedModel, MovementFileJpaEntity.class)).thenReturn(updatedMovementFileEntity); + when(this.repository.existsById(ID)).thenReturn(true); + when(this.repository.save(updatedMovementFileEntity)).thenReturn(updatedMovementFileEntity); + when(this.beanMapper.map(updatedMovementFileEntity, MovementFileModel.class)).thenReturn(updatedModel); + + Long fileId = this.serviceProvider.saveOrUpdate(model); + + assertThat(fileId).isIn(0L, 1L); + } + + @Test + void updateMovementFileIsSuccessful() { + MovementFileModel modelToUpdate = createMovementFileModel(ID); + when(this.movementFileSecurityChecker.canUpdate(ID)).thenReturn(true); + doNothing().when(validatorMock).validateSaveMovementFile(modelToUpdate,modelToUpdate); + MovementFileJpaEntity dbEntity = createMovementFileEntity(ID); + MovementFileModel modelMergedWithEntityState = modelToUpdate; + modelMergedWithEntityState.setState(dbEntity.getState()); + when(this.beanMapper.map(modelToUpdate, MovementFileJpaEntity.class)).thenReturn(dbEntity); + when(this.beanMapper.map(dbEntity, MovementFileModel.class)).thenReturn(modelMergedWithEntityState); + when(this.repository.findById(ID)).thenReturn(dbEntity); + when(this.repository.existsById(ID)).thenReturn(true); + when(this.repository.save(dbEntity)).thenReturn(dbEntity); + + this.serviceProvider.saveOrUpdate(modelToUpdate); + + verify(this.repository).save(dbEntity); + } + + @Test + void saveOrUpdateNotPerformed_whenValidationIsFailing() { + MovementFileModel model = createMovementFileModel(null); + when(this.movementFileSecurityChecker.canCreate()).thenReturn(true); + doThrow(new ValidationRuntimeException()).when(validatorMock).validateSaveMovementFile(model,model); + + try { + this.serviceProvider.saveOrUpdate(model); + } catch (ValidationRuntimeException e) { + } + + verify(this.repository, never()).save(any(MovementFileJpaEntity.class)); + } + + @Test + void onUpdate_statusIsPreservedFromDatabase() { + MovementFileModel model = createMovementFileModel(ID); + + MovementFileModel modelAny = any(MovementFileModel.class); + model.setState(MovementFileState.PENDING); + when(this.movementFileSecurityChecker.canUpdate(ID)).thenReturn(true); + //mock update + MovementFileJpaEntity movementFileEntitySaved = createMovementFileEntity(ID); + MovementFileJpaEntity updatedMovementFileEntity = updateMovementFileEntity(movementFileEntitySaved); + when(this.repository.findById(ID)).thenReturn(movementFileEntitySaved); + updatedMovementFileEntity.setState(MovementFileState.CONFIRMED); + when(this.beanMapper.map(model, MovementFileJpaEntity.class)).thenReturn(updatedMovementFileEntity); + when(this.repository.existsById(ID)).thenReturn(true); + when(this.repository.save(updatedMovementFileEntity)).thenReturn(updatedMovementFileEntity); + when(this.beanMapper.map(updatedMovementFileEntity, MovementFileModel.class)).thenReturn(model); + + try { + this.serviceProvider.saveOrUpdate(model); + } catch (ValidationRuntimeException ignored) { + } + + verify(this.validatorMock, never()).validateSaveMovementFile(modelAny,modelAny); + } + + @Test + @WithMockUser + void getAllMovementFilesReturnsSuccessfully() { + when(this.movementFileSecurityChecker.canList()).thenReturn(true); + MovementFileJpaEntity movementFile1 = createMovementFileEntity(1L); + MovementFileJpaEntity movementFile2 = createMovementFileEntity(2L); + + MovementFileModel movementFileModel1 = createMovementFileModel(1L); + MovementFileModel movementFileModel2 = createMovementFileModel(2L); + + when(this.beanMapper.mapAsList(Arrays.asList(movementFile1, movementFile2), MovementFileModel.class)) + .thenReturn(Arrays.asList(movementFileModel1, movementFileModel2)); + when(this.repository.findAll()).thenReturn(Arrays.asList(movementFile1, movementFile2)); + + List actual = this.serviceProvider.get(); + + verify(this.repository).findAll(); + assertThat(actual).containsExactlyElementsOf(Arrays.asList(movementFileModel1, movementFileModel2)); + } + + @Test + void updatesConfirmedMovementFilesToOngoingState() { + MovementFileJpaEntity entity = updateMovementFileEntity(createMovementFileEntity(ID)); + List files = new ArrayList<>(); + files.add(entity); + MovementFileModel model = updateMovementFileModel(createMovementFileModel(ID)); + List models = new ArrayList<>(); + models.add(model); + when(this.entityRepositoryRegistry.getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class)).thenReturn(this.repository); + when(this.repository.findByStartDateOrEndDateBeforeAndState(LocalDate.now(), MovementFileState.CONFIRMED)).thenReturn(files); + when(this.beanMapper.mapAsList(files, MovementFileModel.class)).thenReturn(models); + + //mock state machine + StateMachineTransitionResultModel stateModel = new StateMachineTransitionResultModel(true, uuid, + MovementFileState.CONFIRMED, MovementFileState.ONGOING, MovementFileEvent.ONGOING, null); + when(this.stateMachineService.send(uuid, MovementFileEvent.ONGOING)).thenReturn(stateModel); + + //mock update + entity.setState(MovementFileState.DELETED); + model.setState(MovementFileState.DELETED); + when(this.beanMapper.map(model, MovementFileJpaEntity.class)).thenReturn(entity); + when(this.repository.existsById(ID)).thenReturn(true); + when(this.repository.save(entity)).thenReturn(entity); + + this.serviceProvider.updateConfirmedMovementFilesToOngoingState(); + + verify(this.repository).save(entity); + } + + @Test + void sendReminderEmails_sendsOnlyOnceAWeekAfterFirst2Weeks() { + List files = + Stream.of(14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L).map(this::createMovementFileEntity).collect(Collectors.toList()); + List models = + Stream.of(14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L).map(this::createMovementFileModel).collect(Collectors.toList()); + when(this.entityRepositoryRegistry.getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class)).thenReturn(this.repository); + when(this.repository.findAllByState(MovementFileState.PENDING)).thenReturn(files); + when(this.beanMapper.mapAsList(files, MovementFileModel.class)).thenReturn(models); + + models.stream().forEach(file -> { + AuditActor auditActor = Mockito.mock(AuditActor.class); + StateMachineHistoryHolder stateMachineHistoryHolder = Mockito.mock(StateMachineHistoryHolder.class); + StateMachineTransitionModel stateMachineTransitionModel = Mockito.mock(StateMachineTransitionModel.class); + when(this.stateMachineService.getHistory(file.getSmId())).thenReturn(stateMachineHistoryHolder); + when(stateMachineHistoryHolder.getFirstTransitionHavingArrivalState(MovementFileState.PENDING)).thenReturn(Optional.of(stateMachineTransitionModel)); + when(stateMachineTransitionModel.getExecutor()).thenReturn(auditActor); + LocalDateTime localDateTime = LocalDateTime.now().minusDays(file.getId().intValue()); + when(auditActor.getInstant()).thenReturn(localDateTime); + }); + + this.serviceProvider.sendRemainderEmails(); + + verify(this.emailEdmsServiceProvider).checkTemplateAndSendMovementFileNotification(getMovementFileModelById(models, 14L), NotificationTemplateCode.REMINDER_AFTER_CREATE.toString()); + verify(this.emailEdmsServiceProvider, never()).checkTemplateAndSendMovementFileNotification(getMovementFileModelById(models, 15L), NotificationTemplateCode.REMINDER_AFTER_CREATE.toString()); + verify(this.emailEdmsServiceProvider, never()).checkTemplateAndSendMovementFileNotification(getMovementFileModelById(models, 16L), NotificationTemplateCode.REMINDER_AFTER_CREATE.toString()); + verify(this.emailEdmsServiceProvider, never()).checkTemplateAndSendMovementFileNotification(getMovementFileModelById(models, 20L), NotificationTemplateCode.REMINDER_AFTER_CREATE.toString()); + verify(this.emailEdmsServiceProvider).checkTemplateAndSendMovementFileNotification(getMovementFileModelById(models, 21L), NotificationTemplateCode.REMINDER_AFTER_CREATE.toString()); + } + + @Test + @WithMockUser + void getNotifications_returnsFilteredByLastSentDateInOrderOfSentDate() { + when(this.movementFileSecurityChecker.canView(ID)).thenReturn(true); + Map notifis = new HashMap<>(); + notifis.put("2020-11-01 09:20:22", NotificationTemplateCode.CREATE); + notifis.put("2020-11-15 04:20:22", NotificationTemplateCode.REMINDER_AFTER_CREATE); + notifis.put("2020-11-22 04:20:22", NotificationTemplateCode.REMINDER_AFTER_CREATE); + notifis.put("2020-11-29 04:20:22", NotificationTemplateCode.REMINDER_AFTER_CREATE); + notifis.put("2020-12-06 04:20:22", NotificationTemplateCode.REMINDER_AFTER_CREATE); + notifis.put("2020-12-10 10:20:22", NotificationTemplateCode.WITHDRAW); + + List notifications = notifis.keySet().stream() + .map(date -> createNotificationEntity(notifis.get(date), date)).collect(Collectors.toList()); + List notificationModels = notifications.stream() + .map(n -> createNotificationModel(n.getNotificationTemplateCode(), n.getSentAt())).collect(Collectors.toList()); + when(this.notificationMFJpaServiceProvider.getNotifications(1L)).thenReturn(notificationModels); + + List filteredNotifications = this.serviceProvider.getNotifications(1L); + + assertEquals(3, filteredNotifications.size()); + assertEquals(NotificationTemplateCode.CREATE, filteredNotifications.get(0).getNotificationTemplateCode()); + assertEquals(NotificationTemplateCode.REMINDER_AFTER_CREATE, filteredNotifications.get(1).getNotificationTemplateCode()); + assertEquals("2020-12-06 04:20:22", filteredNotifications.get(1).getSentAt().format(DateTimeFormatter.ofPattern(DATE_FORMATTER))); + assertEquals(NotificationTemplateCode.WITHDRAW, filteredNotifications.get(2).getNotificationTemplateCode()); + } + + private NotificationMFJpaEntity createNotificationEntity(NotificationTemplateCode code, String str) { + NotificationMFJpaEntity notification = new NotificationMFJpaEntity(); + notification.setNotificationTemplateCode(code); + notification.setStatus(Status.SENT_OK); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_FORMATTER); + notification.setSentAt(LocalDateTime.parse(str, formatter)); + return notification; + } + + private NotificationMFModel createNotificationModel(NotificationTemplateCode code, LocalDateTime date) { + NotificationMFModel notification = new NotificationMFModel(); + notification.setNotificationTemplateCode(code); + notification.setStatus(Status.SENT_OK); + notification.setSentAt(date); + return notification; + } + + private MovementFileModel getMovementFileModelById(List models, Long id) { + return models.stream().filter(model -> model.getId().equals(id)).findFirst().get(); + } + + private MovementFileModel updateMovementFileModel(MovementFileModel model) { + model.setFileId(FILE_ID); + model.setSmId(uuid); + model.setState(MovementFileState.PENDING); + return model; + } + + private MovementFileJpaEntity updateMovementFileEntity(MovementFileJpaEntity entity) { + entity.setFileId(FILE_ID); + entity.setSmId(uuid); + entity.setState(MovementFileState.CONFIRMED); + return entity; + } + + private MovementFileModel createMovementFileModel(Long movementFileId) { + MovementFileModel model = new MovementFileModel(); + model.setId(movementFileId); + model.setYear(YEAR); + MovementContextModel context = new MovementContextModel(); + context.setName(MovementFileJpaServiceProviderUT.CONTEXT_ROTATION); + model.setMovementContext(context); + VPersonModel person = new VPersonModel(); + person.setPerId(PER_ID); + model.setJobHolder(person); + model.setSmId(UUID.randomUUID()); + MovementTypeModel movementTypeModel = new MovementTypeModel(); + movementTypeModel.setId(MOVEMNT_TYPE_ID); + movementTypeModel.setMovementType(MOVEMNT_TYPE); + model.setMovementType(movementTypeModel); + return model; + } + + private MovementFileJpaEntity createMovementFileEntity(Long movementFileId) { + MovementFileJpaEntity entity = new MovementFileJpaEntity(); + entity.setId(movementFileId); + entity.setYear(YEAR); + MovementContextJpaEntity context = new MovementContextJpaEntity(); + context.setName(CONTEXT_ROTATION); + VPersonJpaEntity person = new VPersonJpaEntity(); + person.setId(PER_ID); + entity.setJobHolder(person); + entity.setMovementContext(context); + entity.setSmId(UUID.randomUUID()); + entity.setState(MovementFileState.CONFIRMED); + MovementTypeJpaEntity movementTypeJpaEntity = new MovementTypeJpaEntity(); + movementTypeJpaEntity.setId(MOVEMNT_TYPE_ID); + movementTypeJpaEntity.setMovementType(MOVEMNT_TYPE); + entity.setMovementType(movementTypeJpaEntity); + return entity; + } + +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementMaxDefaultJpaServiceProviderUT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementMaxDefaultJpaServiceProviderUT.java new file mode 100644 index 0000000..ea1358c --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementMaxDefaultJpaServiceProviderUT.java @@ -0,0 +1,160 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement; + +import eu.europa.eeas.ananke.core.locale.Localization; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxDefaultJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementMaxDefaultJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.RateMissingJpaRepository; +import eu.europa.eeas.erights.common.service.data.AbstractServiceProviderUTBase; +import eu.europa.eeas.erights.common.service.model.CityModel; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.MovementTypeModel; +import eu.europa.eeas.erights.common.service.model.VJobModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxCatModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxDefaultModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxModel; +import eu.europa.eeas.erights.common.service.provider.gosselin.RatesWSServiceProvider; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode; +import org.javamoney.moneta.Money; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.Month; +import java.util.ArrayList; +import java.util.Arrays; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ContextConfiguration(classes = {EntitlementMaxDefaultJpaServiceProvider.class}) +@Disabled("Need refactoring") +class EntitlementMaxDefaultJpaServiceProviderUT extends AbstractServiceProviderUTBase { + + private static final String MOVEMNT_TYPE = "DEL-DEL"; + + private static final Long MOVEMNT_TYPE_ID = 10L; + + private static final Long ID = 1L; + + private static final Long JOB_ID = 11L; + + @Mock + EntitlementMaxDefaultJpaRepository repo; + + @MockBean + private Localization localization; + + @MockBean + private RatesWSServiceProvider ratesWSServiceProvider; + + @MockBean + private RateMissingJpaRepository rateMissingJpaRepository; + + + @BeforeEach + public void setUp() { + registerReaderRepository(EntitlementMaxDefaultJpaEntity.class, EntitlementMaxDefaultJpaRepository.class, repo); + registerSaverRepository(EntitlementMaxDefaultJpaEntity.class, repo); + } + + @Test + void getEntitlementMaxDefaultReturnsSuccessfully() { + LocalDate calculatedStartInterval = LocalDate.of(2021, Month.MAY, 1); + MovementFileModel mfModel = createMovementFileModel(ID, LocalDate.of(2021, Month.MAY, 22)); + EntitlementMaxCatModel maxCatModel = createEntitlementMaxCatModel(ID); + + EntitlementMaxDefaultJpaEntity maxDefaultJpaEntity = createEntitlementMaxDefaultJpaEntity(ID); + when(repo.findByCityCodeFromAndCityCodeToAndStartDateAndEntitlementMaxCatIdAndLatestAndKg(mfModel.getCityFrom().getCode(), mfModel.getCityTo().getCode(), + calculatedStartInterval, maxCatModel.getId(), Boolean.TRUE, null)).thenReturn(Arrays.asList(maxDefaultJpaEntity)); + when(this.beanMapper.map(maxDefaultJpaEntity, EntitlementMaxDefaultModel.class)).thenReturn(createEntitlementMaxDefaultModel(ID, mfModel, calculatedStartInterval)); + EntitlementMaxModel maxModel = createEntitlementMaxModel(ID, Money.of(BigDecimal.TEN, "EUR"), maxCatModel); + EntitlementMaxDefaultModel result = this.serviceProvider.getEntitlementMaxDefault(mfModel, maxModel); + + assertThat(result).isNotNull(); + } + + @Test + void createEntitlementMaxDefaultWhenIsNotFountAnExistingOne() { + LocalDate calculatedStartInterval = LocalDate.of(2021, Month.MAY, 1); + MovementFileModel mfModel = createMovementFileModel(ID, LocalDate.of(2021, Month.MAY, 22)); + EntitlementMaxCatModel maxCatModel = createEntitlementMaxCatModel(ID); + when(repo.findByCityCodeFromAndCityCodeToAndStartDateAndEntitlementMaxCatIdAndLatestAndKg(mfModel.getCityFrom().getCode(), mfModel.getCityTo().getCode(), + calculatedStartInterval, maxCatModel.getId(), Boolean.TRUE, null)).thenReturn(new ArrayList<>()); + EntitlementMaxDefaultJpaEntity maxDefaultJpaEntity = createEntitlementMaxDefaultJpaEntity(ID); + EntitlementMaxModel maxModel = createEntitlementMaxModel(ID, Money.of(BigDecimal.TEN, "EUR"), maxCatModel); + when(getBeanMapper().map(any(EntitlementMaxDefaultModel.class), eq(EntitlementMaxDefaultJpaEntity.class))).thenReturn(maxDefaultJpaEntity); + when(repo.existsById(ID)).thenReturn(Boolean.FALSE); + + this.serviceProvider.createEntitlementMaxDefault(maxModel, mfModel); + + verify(repo).save(maxDefaultJpaEntity); + } + + private MovementFileModel createMovementFileModel(Long movementFileId, LocalDate startDate) { + MovementFileModel model = new MovementFileModel(); + model.setId(movementFileId); + MovementTypeModel movementTypeModel = new MovementTypeModel(); + movementTypeModel.setId(MOVEMNT_TYPE_ID); + movementTypeModel.setMovementType(MOVEMNT_TYPE); + model.setMovementType(movementTypeModel); + model.setStartDate(startDate); + + CityModel city = new CityModel(); + city.setCode("ADS"); + + model.setCityFrom(city); + + // JOB_ID + VJobModel job = new VJobModel(); + job.setId(JOB_ID); + model.setJobFrom(job); + + city = new CityModel(); + city.setCode("ARD"); + model.setCityTo(city); + return model; + } + + private EntitlementMaxCatModel createEntitlementMaxCatModel(Long id) { + EntitlementMaxCatModel maxCatModel = new EntitlementMaxCatModel(); + maxCatModel.setId(id); + maxCatModel.setCode(EntitlementMaxCatCode.TUD_STAFF_MEMBER); + maxCatModel.setDescription("Entitlement max cat-" + id); + return maxCatModel; + } + + private EntitlementMaxDefaultModel createEntitlementMaxDefaultModel(Long id, MovementFileModel mfModel, LocalDate calculatedStartInterval) { + EntitlementMaxDefaultModel model = new EntitlementMaxDefaultModel(); + //model.setId(id); + model.setCityCodeFrom(mfModel.getCityFrom().getCode()); + model.setCityCodeTo(mfModel.getCityTo().getCode()); + model.setAmount(Money.of(BigDecimal.TEN, "EUR")); + model.setStartDate(calculatedStartInterval); + model.setEntitlementMaxCatId(id); + model.setLatest(Boolean.TRUE); + return model; + } + + private EntitlementMaxDefaultJpaEntity createEntitlementMaxDefaultJpaEntity(Long id) { + EntitlementMaxDefaultJpaEntity entity = new EntitlementMaxDefaultJpaEntity(); + entity.setId(id); + return entity; + } + + private EntitlementMaxModel createEntitlementMaxModel(Long id, Money amount, EntitlementMaxCatModel maxCatModel) { + EntitlementMaxModel model = new EntitlementMaxModel(); + model.setId(id); + model.setMaxValue(amount); + model.setEntitlementMaxCat(maxCatModel); + return model; + } + +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementTypeJpaServiceProviderUT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementTypeJpaServiceProviderUT.java new file mode 100644 index 0000000..31151b8 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/EntitlementTypeJpaServiceProviderUT.java @@ -0,0 +1,663 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement; + +import eu.europa.eeas.ananke.core.locale.Localization; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxCatJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementMaxJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeCatJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeDefaultJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.EntitlementTypeJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementTypeDefaultJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.EntitlementTypeJpaRepository; +import eu.europa.eeas.erights.common.service.data.AbstractServiceProviderUTBase; +import eu.europa.eeas.erights.common.service.model.CityModel; +import eu.europa.eeas.erights.common.service.model.MovementContextModel; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.MovementTypeModel; +import eu.europa.eeas.erights.common.service.model.VJobModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxCatModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxDefaultModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeCatModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeDefaultModel; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; +import eu.europa.eeas.erights.common.tools.job.JobFamilyPostingCode; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.javamoney.moneta.Money; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.Month; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ContextConfiguration(classes = {EntitlementTypeJpaServiceProvider.class}) +@Disabled("Need refactoring") +class EntitlementTypeJpaServiceProviderUT extends AbstractServiceProviderUTBase { + + private static final String MOVEMNT_TYPE = "DEL-DEL"; + + private static final Long MOVEMNT_TYPE_ID = 10L; + + private static final Long ID = 1L; + + @MockBean + private Localization localization; + + @MockBean + private EntitlementTypeDefaultJpaRepository entitlementTypeDefaultRepo; + + @MockBean + private EntitlementMaxDefaultJpaServiceProvider entitlementMaxDefaultService; + + @MockBean + private EntitlementTypeJpaRepository entitlementTypeJpaRepository; + + @BeforeEach + public void setUp() { + registerReaderRepository(EntitlementTypeDefaultJpaEntity.class, entitlementTypeDefaultRepo); + registerSaverRepository(EntitlementTypeJpaEntity.class, entitlementTypeJpaRepository); + registerDataServiceProviderRegistry(EntitlementMaxDefaultModel.class, this.entitlementMaxDefaultService); + } + + @Test + void generateTUDEntitlementTypeWithoutSuggestedAmount() { + MovementFileModel movementFileModel = createMovementFileModel(ID, LocalDate.of(2021, Month.FEBRUARY, 5)); + EntitlementMaxCatModel maxCatModel = createEntitlementMaxCatModel(ID); + List entDefaultList = Arrays.asList(createEntitlementTypeDefaultJpaEntity(11L, ID)); + EntitlementMaxModel maxModel = createEntitlementMaxModel(ID, Money.of(BigDecimal.TEN, "EUR"), maxCatModel); + when(entitlementTypeDefaultRepo.findAllByMovementTypeId(MOVEMNT_TYPE_ID)).thenReturn(entDefaultList); + when(entitlementMaxDefaultService.getEntitlementMaxDefault(movementFileModel, maxModel)).thenReturn(null); + when(this.beanMapper.mapAsList(entDefaultList, EntitlementTypeDefaultModel.class)).thenReturn(Arrays.asList(createEntitlementTypeDefaultModel(11L, ID, maxCatModel))); + when(this.beanMapper.mapAsList(any(List.class), eq(EntitlementTypeJpaEntity.class))).thenReturn(Arrays.asList(createEntitlementType(ID))); + when(this.entitlementTypeJpaRepository.existsById(ID)).thenReturn(false); + + this.serviceProvider.generateDefaultEntitlementTypeList(movementFileModel, MovementFileState.PENDING, new HashMap<>() , Optional.empty()); + + verify(this.entitlementTypeJpaRepository).existsById(ID); + verify(this.entitlementTypeJpaRepository).saveAll(any(List.class)); + } + + @Test + void shouldAllowEntryIntoStorage_whenGoingToNonFamilyPosting() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.STORAGE); + etMaxCat.setHod(true); + etMaxCat.setNonFamilyPosting(true); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("ROTATION"); + movFile.setMovementContext(context); + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(false); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.FAMILY); + movFile.setJobFrom(jobFrom); + // job to + VJobModel jobTo = new VJobModel(); + jobTo.setHod(false); + jobTo.setFamilyPostingTypeCategory(JobFamilyPostingCode.NON_FAMILY); + movFile.setJobTo(jobTo); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isTrue(); + } + + @Test + void shouldNotAllowEntryIntoStorage_whenEOCNotHodNonFamilyPosting() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.STORAGE); + etMaxCat.setHod(true); + etMaxCat.setNonFamilyPosting(true); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("EOC"); + movFile.setMovementContext(context); + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(false); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.NON_FAMILY); + movFile.setJobFrom(jobFrom); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isFalse(); + } + + @Test + void shouldAllowEntryIntoStorage_whenGoingToHODFamilyPosting() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.STORAGE); + etMaxCat.setHod(true); + etMaxCat.setNonFamilyPosting(true); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("ROTATION"); + movFile.setMovementContext(context); + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(false); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.FAMILY); + movFile.setJobFrom(jobFrom); + // job to + VJobModel jobTo = new VJobModel(); + jobTo.setHod(true); + jobTo.setFamilyPostingTypeCategory(JobFamilyPostingCode.FAMILY); + movFile.setJobTo(jobTo); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isTrue(); + } + + @Test + void shouldNotAllowEntryIntoStorage_whenGoingToFamilyPosting() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.STORAGE); + etMaxCat.setHod(true); + etMaxCat.setNonFamilyPosting(true); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("ROTATION"); + movFile.setMovementContext(context); + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(false); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.NON_FAMILY); + movFile.setJobFrom(jobFrom); + // job to + VJobModel jobTo = new VJobModel(); + jobTo.setHod(false); + jobTo.setFamilyPostingTypeCategory(JobFamilyPostingCode.FAMILY); + movFile.setJobTo(jobTo); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isFalse(); + } + + @Test + void shouldAllowEntryIntoStorage_whenCurrentAssignmentIsHOD() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.STORAGE); + etMaxCat.setHod(true); + etMaxCat.setNonFamilyPosting(true); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("ROTATION"); + movFile.setMovementContext(context); + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(true); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.FAMILY); + movFile.setJobFrom(jobFrom); + // job to + VJobModel jobTo = new VJobModel(); + jobTo.setHod(false); + jobTo.setFamilyPostingTypeCategory(JobFamilyPostingCode.FAMILY); + movFile.setJobTo(jobTo); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isTrue(); + } + + @Test + void shouldAllowEntryIntoStorage_whenFutureAssignmentIsHOD() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.STORAGE); + etMaxCat.setHod(true); + etMaxCat.setNonFamilyPosting(true); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("ROTATION"); + movFile.setMovementContext(context); + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(false); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.FAMILY); + movFile.setJobFrom(jobFrom); + // job to + VJobModel jobTo = new VJobModel(); + jobTo.setHod(true); + jobTo.setFamilyPostingTypeCategory(JobFamilyPostingCode.FAMILY); + movFile.setJobTo(jobTo); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isTrue(); + } + + @Test + void shouldNotAllowTudDependent_whenBothAssignmentsAreFamilyPosting() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.TUD_DEPENDENT); + etMaxCat.setNonFamilyPosting(true); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("ROTATION"); + movFile.setMovementContext(context); + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(false); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.FAMILY); + movFile.setJobFrom(jobFrom); + // job to + VJobModel jobTo = new VJobModel(); + jobTo.setHod(false); + jobTo.setFamilyPostingTypeCategory(JobFamilyPostingCode.FAMILY); + movFile.setJobTo(jobTo); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isFalse(); + } + + @Test + void shouldAllowTudDependent_whenOneAssignmentIsNonFamilyPosting() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.TUD_DEPENDENT); + etMaxCat.setNonFamilyPosting(true); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("ROTATION"); + movFile.setMovementContext(context); + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(false); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.NON_FAMILY); + movFile.setJobFrom(jobFrom); + // job to + VJobModel jobTo = new VJobModel(); + jobTo.setHod(false); + jobTo.setFamilyPostingTypeCategory(JobFamilyPostingCode.FAMILY); + movFile.setJobTo(jobTo); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isTrue(); + } + + @Test + void shouldAllowEntryIntoStorage_whenFutureAssignmentIsHod() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.STORAGE); + etMaxCat.setHod(true); + etMaxCat.setNonFamilyPosting(true); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("ROTATION"); + movFile.setMovementContext(context); + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(false); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.FAMILY); + movFile.setJobFrom(jobFrom); + // job to + VJobModel jobTo = new VJobModel(); + jobTo.setHod(true); + jobTo.setFamilyPostingTypeCategory(JobFamilyPostingCode.FAMILY); + movFile.setJobTo(jobTo); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isTrue(); + } + + @Test + void shouldAllowSurfaceCeiling_whenGoingToNotHodFamilyPosting() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.SURFACE); + etMaxCat.setNonFamilyPosting(false); + etMaxCat.setHod(true); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("ROTATION"); + movFile.setMovementContext(context); + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(false); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.NON_FAMILY); + movFile.setJobFrom(jobFrom); + // job to + VJobModel jobTo = new VJobModel(); + jobTo.setHod(false); + jobTo.setFamilyPostingTypeCategory(JobFamilyPostingCode.FAMILY); + movFile.setJobTo(jobTo); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isTrue(); + } + + @Test + void shouldNotAllowSurfaceCeiling_whenGoingToNotHodNonFamilyPosting() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.SURFACE); + etMaxCat.setNonFamilyPosting(false); + etMaxCat.setHod(true); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("ROTATION"); + movFile.setMovementContext(context); + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(false); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.FAMILY); + movFile.setJobFrom(jobFrom); + // job to + VJobModel jobTo = new VJobModel(); + jobTo.setHod(false); + jobTo.setFamilyPostingTypeCategory(JobFamilyPostingCode.NON_FAMILY); + movFile.setJobTo(jobTo); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isFalse(); + } + + @Test + void shouldNotAllowAirfreightCeiling_whenComingFromEOCNotHodFamilyPosting() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.AIRFREIGHT); + etMaxCat.setNonFamilyPosting(true); + etMaxCat.setHod(true); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("EOC"); + movFile.setMovementContext(context); + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(false); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.FAMILY); + movFile.setJobFrom(jobFrom); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isFalse(); + } + + @Test + void shouldAllowSurfaceCeiling_whenComingFromHodNonFamilyPosting() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.SURFACE); + etMaxCat.setNonFamilyPosting(false); + etMaxCat.setHod(true); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("ROTATION"); + movFile.setMovementContext(context); + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(true); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.NON_FAMILY); + movFile.setJobFrom(jobFrom); + // job to + VJobModel jobTo = new VJobModel(); + jobTo.setHod(false); + jobTo.setFamilyPostingTypeCategory(JobFamilyPostingCode.NON_FAMILY); + movFile.setJobTo(jobTo); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isTrue(); + } + + @Test + void shouldAllowSurfaceCeiling_whenGoingToHodNonFamilyPosting() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.SURFACE); + etMaxCat.setNonFamilyPosting(false); + etMaxCat.setHod(true); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("ROTATION"); + movFile.setMovementContext(context); + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(false); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.NON_FAMILY); + movFile.setJobFrom(jobFrom); + // job to + VJobModel jobTo = new VJobModel(); + jobTo.setHod(true); + jobTo.setFamilyPostingTypeCategory(JobFamilyPostingCode.NON_FAMILY); + movFile.setJobTo(jobTo); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isTrue(); + } + + @Test + void shouldAllowTudStaffMemberAllTheTime() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.TUD_STAFF_MEMBER); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("ROTATION"); + movFile.setMovementContext(context); + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(false); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.NON_FAMILY); + movFile.setJobFrom(jobFrom); + // job to + VJobModel jobTo = new VJobModel(); + jobTo.setHod(true); + jobTo.setFamilyPostingTypeCategory(JobFamilyPostingCode.NON_FAMILY); + movFile.setJobTo(jobTo); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isTrue(); + } + + @Test + void shouldAllowSurfaceCeiling_whenFromEOCNonFamilyPosting() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.SURFACE); + etMaxCat.setNonFamilyPosting(false); + etMaxCat.setHod(true); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("EOC"); + movFile.setMovementContext(context); + + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(false); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.NON_FAMILY); + movFile.setJobFrom(jobFrom); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isTrue(); + } + + @Test + void shouldAllowSurfaceCeiling_whenFromEOCFamilyPosting() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.SURFACE); + etMaxCat.setNonFamilyPosting(false); + etMaxCat.setHod(true); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("EOC"); + movFile.setMovementContext(context); + + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(false); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.FAMILY); + movFile.setJobFrom(jobFrom); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isTrue(); + } + + @Test + void shouldAllowSurfaceCeiling_whenFromEOCHODNonFamilyPosting() { + EntitlementMaxCatModel etMaxCat = new EntitlementMaxCatModel(); + etMaxCat.setCode(EntitlementMaxCatCode.SURFACE); + etMaxCat.setNonFamilyPosting(false); + etMaxCat.setHod(true); + + //movement file + MovementFileModel movFile = new MovementFileModel(); + MovementContextModel context = new MovementContextModel(); + context.setName("EOC"); + movFile.setMovementContext(context); + + // job from + VJobModel jobFrom = new VJobModel(); + jobFrom.setHod(true); + jobFrom.setFamilyPostingTypeCategory(JobFamilyPostingCode.NON_FAMILY); + movFile.setJobFrom(jobFrom); + + boolean result = serviceProvider.isAllowedEntitlementMaxCat(etMaxCat, movFile); + + assertThat(result).isTrue(); + } + + private EntitlementTypeJpaEntity createEntitlementType(Long id) { + EntitlementTypeJpaEntity entity = new EntitlementTypeJpaEntity(); + entity.setId(id); + EntitlementMaxJpaEntity maxJpaEntity = new EntitlementMaxJpaEntity(); + maxJpaEntity.setEntitlementType(entity); + maxJpaEntity.setMaxValue(Money.of(BigDecimal.ZERO, "EUR")); + entity.setEntitlementMaxList(Arrays.asList(maxJpaEntity)); + return entity; + } + + private MovementFileModel createMovementFileModel(Long movementFileId, LocalDate startDate) { + MovementFileModel model = new MovementFileModel(); + model.setId(movementFileId); + MovementTypeModel movementTypeModel = new MovementTypeModel(); + movementTypeModel.setId(MOVEMNT_TYPE_ID); + movementTypeModel.setMovementType(MOVEMNT_TYPE); + model.setMovementType(movementTypeModel); + MovementContextModel context = new MovementContextModel(); + context.setName("ROTATION"); + model.setMovementContext(context); + + CityModel city = new CityModel(); + city.setCode("BRU"); + model.setCityFrom(city); + + model.setStartDate(startDate); + return model; + } + + private EntitlementMaxCatModel createEntitlementMaxCatModel(Long id) { + EntitlementMaxCatModel maxCatModel = new EntitlementMaxCatModel(); + maxCatModel.setId(id); + maxCatModel.setCode(EntitlementMaxCatCode.TUD_STAFF_MEMBER); + maxCatModel.setDescription("Entitlement max cat-" + id); + maxCatModel.setSuggestion(Boolean.TRUE); + return maxCatModel; + } + + private EntitlementTypeDefaultJpaEntity createEntitlementTypeDefaultJpaEntity(Long id, Long movementFileId) { + EntitlementTypeDefaultJpaEntity entity = new EntitlementTypeDefaultJpaEntity(); + entity.setId(id); + + EntitlementTypeCatJpaEntity catEntity = new EntitlementTypeCatJpaEntity(); + catEntity.setId(id); + catEntity.setDescription("Entitlement type cat-" + id); + catEntity.setCode(EntitlementTypeCatCode.TUD); + catEntity.setMfType(Boolean.TRUE); + + EntitlementMaxCatJpaEntity maxCatJpaEntity = new EntitlementMaxCatJpaEntity(); + maxCatJpaEntity.setId(id); + maxCatJpaEntity.setCode(EntitlementMaxCatCode.TUD_STAFF_MEMBER); + maxCatJpaEntity.setDescription("Entitlement max cat-" + id); + + catEntity.setEntitlementMaxCatList(Arrays.asList(maxCatJpaEntity)); + + entity.setEntitlementTypeCat(catEntity); + + entity.setMovementTypeId(movementFileId); + + return entity; + } + + private EntitlementTypeDefaultModel createEntitlementTypeDefaultModel(Long id, Long movementFileId, EntitlementMaxCatModel maxCatModel) { + EntitlementTypeDefaultModel model = new EntitlementTypeDefaultModel(); + model.setId(id); + + EntitlementTypeCatModel catModel = new EntitlementTypeCatModel(); + catModel.setId(id); + catModel.setDescription("Entitlement type cat-" + id); + catModel.setCode(EntitlementTypeCatCode.TUD); + catModel.setMfType(Boolean.TRUE); + + catModel.setEntitlementMaxCatList(Arrays.asList(maxCatModel)); + + model.setEntitlementTypeCat(catModel); + + model.setMovementTypeId(movementFileId); + + return model; + } + + private EntitlementMaxModel createEntitlementMaxModel(Long id, Money amount, EntitlementMaxCatModel maxCatModel) { + EntitlementMaxModel model = new EntitlementMaxModel(); + model.setId(id); + model.setMaxValue(amount); + model.setEntitlementMaxCat(maxCatModel); + return model; + } +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/VEmptyRateEntitlementTypeJpaServiceProviderUT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/VEmptyRateEntitlementTypeJpaServiceProviderUT.java new file mode 100644 index 0000000..527f0f7 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/VEmptyRateEntitlementTypeJpaServiceProviderUT.java @@ -0,0 +1,76 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement; + +import eu.europa.eeas.ananke.core.locale.Localization; +import eu.europa.eeas.erights.common.data.jpa.entity.VEmptyRateEntitlementTypeJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.VEmptyRateEntitlementTypeJpaRepository; +import eu.europa.eeas.erights.common.service.data.AbstractServiceProviderUTBase; +import eu.europa.eeas.erights.common.service.model.entitlement.VEmptyRateEntitlementTypeModel; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; + +import java.util.Arrays; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.BDDMockito.given; + +@ContextConfiguration(classes = {VEmptyRateEntitlementTypeJpaServiceProvider.class}) +@Disabled("Need refactoring") +class VEmptyRateEntitlementTypeJpaServiceProviderUT extends AbstractServiceProviderUTBase { + + @MockBean + private Localization localization; + + @MockBean + private VEmptyRateEntitlementTypeJpaRepository vEmptyRateEntitlementTypeJpaRepository; + + @BeforeEach + public void setUp() { + registerReaderRepository(VEmptyRateEntitlementTypeJpaEntity.class, vEmptyRateEntitlementTypeJpaRepository); + } + + @Test() + void shouldReturnEntitlementsWithEmptyRates() { + // given + List entitlementTypeJpaEntityList = getEntitlementTypeJpaEntitiesWithNoMax(); + given(vEmptyRateEntitlementTypeJpaRepository.findAll()).willReturn(entitlementTypeJpaEntityList); + given(this.beanMapper.mapAsList(entitlementTypeJpaEntityList, VEmptyRateEntitlementTypeModel.class)).willReturn(getEntitlementTypeModelsWithNoMax()); + // when + List entitlementsModel = serviceProvider.getEntitlementsWithEmptyRates(); + // then + assertThat(entitlementsModel.size()).isEqualTo(5); + } + + private List getEntitlementTypeJpaEntitiesWithNoMax() { + VEmptyRateEntitlementTypeJpaEntity entitlementTypeJpaEntity1 = new VEmptyRateEntitlementTypeJpaEntity(); + VEmptyRateEntitlementTypeJpaEntity entitlementTypeJpaEntity2 = new VEmptyRateEntitlementTypeJpaEntity(); + VEmptyRateEntitlementTypeJpaEntity entitlementTypeJpaEntity3 = new VEmptyRateEntitlementTypeJpaEntity(); + VEmptyRateEntitlementTypeJpaEntity entitlementTypeJpaEntity4 = new VEmptyRateEntitlementTypeJpaEntity(); + VEmptyRateEntitlementTypeJpaEntity entitlementTypeJpaEntity5 = new VEmptyRateEntitlementTypeJpaEntity(); + return Arrays.asList( + entitlementTypeJpaEntity1, + entitlementTypeJpaEntity2, + entitlementTypeJpaEntity3, + entitlementTypeJpaEntity4, + entitlementTypeJpaEntity5 + ); + } + + private List getEntitlementTypeModelsWithNoMax() { + VEmptyRateEntitlementTypeModel entitlementTypeModel1 = new VEmptyRateEntitlementTypeModel(); + VEmptyRateEntitlementTypeModel entitlementTypeModel2 = new VEmptyRateEntitlementTypeModel(); + VEmptyRateEntitlementTypeModel entitlementTypeModel3 = new VEmptyRateEntitlementTypeModel(); + VEmptyRateEntitlementTypeModel entitlementTypeModel4 = new VEmptyRateEntitlementTypeModel(); + VEmptyRateEntitlementTypeModel entitlementTypeModel5 = new VEmptyRateEntitlementTypeModel(); + return Arrays.asList( + entitlementTypeModel1, + entitlementTypeModel2, + entitlementTypeModel3, + entitlementTypeModel4, + entitlementTypeModel5 + ); + } +} \ No newline at end of file diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/TudRequestJpaServiceProviderUT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/TudRequestJpaServiceProviderUT.java new file mode 100644 index 0000000..f4c2266 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/provider/entitlement/request/TudRequestJpaServiceProviderUT.java @@ -0,0 +1,372 @@ +package eu.europa.eeas.erights.common.service.data.provider.entitlement.request; + +import eu.europa.eeas.ananke.core.locale.Localization; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.ananke.tools.statemachine.service.model.StateMachineTransitionResultModel; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.DeclarationJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.DeclarationPersonJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.declaration.PersonBankInfoJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.entitlement.request.TudRequestJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.entitlement.request.TudRequestJpaRepository; +import eu.europa.eeas.erights.common.service.data.AbstractServiceProviderUTBase; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementTypeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.PersonModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationModel; +import eu.europa.eeas.erights.common.service.model.declaration.DeclarationPersonModel; +import eu.europa.eeas.erights.common.service.model.declaration.PersonBankInfoModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxCatModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementMaxModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeCatModel; +import eu.europa.eeas.erights.common.service.model.entitlement.EntitlementTypeModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestPersonModel; +import eu.europa.eeas.erights.common.service.model.entitlement.request.TudRequestModel; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode; +import eu.europa.eeas.erights.common.tools.statemachine.RequestEvent; +import eu.europa.eeas.erights.common.tools.statemachine.RequestState; +import org.javamoney.moneta.Money; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.Arrays; +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; + +import static org.apache.commons.collections4.CollectionUtils.EMPTY_COLLECTION; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; + +@ContextConfiguration(classes = {TudRequestJpaServiceProvider.class}) +@Disabled("Need refactoring") +public class TudRequestJpaServiceProviderUT extends AbstractServiceProviderUTBase { + + @MockBean + private TudRequestJpaRepository tudRepo; + + @MockBean + private RequestPersonJpaServiceProvider requestPersonJpaServiceProvider; + + @MockBean + private EntitlementTypeJpaServiceProvider entitlementTypeJpaServiceProvider; + + @MockBean + private MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + @MockBean + @Qualifier(ERightsBeanNames.EntitlementRequestStateMachine.SERVICE) + private StateMachineService stateMachineService; + + @MockBean + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @MockBean + private Localization localization; + + private PersonBankInfoModel personBankInfo; + + @BeforeEach + void setUp() { + registerReaderRepository(TudRequestJpaEntity.class, TudRequestJpaRepository.class, tudRepo); + registerDataServiceProviderRegistry(RequestPersonModel.class, this.requestPersonJpaServiceProvider); + registerDataServiceProviderRegistry(EntitlementTypeModel.class, this.entitlementTypeJpaServiceProvider); + registerDataServiceProviderRegistry(MovementFileModel.class, this.movementFileJpaServiceProvider); + } + + @Test + void whenIsFirstRequest_tudRequestTotalAmountIncludesStaffMember() { + DeclarationModel declarationModel = createDeclarationModel(); + givenEmptyListOfRequests(); + givenMovementFile(); + givenTUDEntitlementType(); + givenNewStateTransition(); + givenRequestStringId(); + + TudRequestModel result = this.serviceProvider.buildTUDRequest(declarationModel, createRequestPersons(), true); + + assertThat(result.getCalculatedTotalAmount()).isEqualTo(Money.of(25, "EUR")); + assertThat(result.getRequestNumber()).isEqualTo(12L); + assertThat(result.getState()).isEqualTo(RequestState.AWAITING); + assertThat(result.getYear()).isEqualTo(2020); + assertThat(result.getRequestStringId()).isEqualTo("2020-TUD-012"); + } + + @Test + void whenIsNotTheFirstRequest_tudRequestTotalAmountDoesNotIncludeStaffMember() { + DeclarationModel declarationModel = createDeclarationModel(); + givenEmptyListOfRequests(); + givenMovementFile(); + givenTUDEntitlementType(); + givenNewStateTransition(); + givenRequestStringId(); + + TudRequestModel result = this.serviceProvider.buildTUDRequest(declarationModel, createRequestPersons(), false); + + assertThat(result.getCalculatedTotalAmount()).isEqualTo(Money.of(15, "EUR")); + assertThat(result.getRequestNumber()).isEqualTo(12L); + assertThat(result.getState()).isEqualTo(RequestState.AWAITING); + assertThat(result.getYear()).isEqualTo(2020); + assertThat(result.getRequestStringId()).isEqualTo("2020-TUD-012"); + } + + @Test + void testGetUnpaidDeclaredPersons() { + DeclarationModel declarationModel = createDeclarationModel(); + givenAListOfPaidRequests(declarationModel); + + List unpaidDeclaredPersons = this.serviceProvider.getPersonsToBeDeclared(declarationModel); + + assertThat(unpaidDeclaredPersons.size()).isEqualTo(2); + List relativeIds = unpaidDeclaredPersons.stream().map(DeclarationPersonModel::getRelative).map(PersonModel::getId) + .collect(Collectors.toList()); + assertThat(relativeIds).contains(20L, 30L); + } + + @Test + void whenIsTheFirstRequest_updatedTUDRequestTotalAmountIncludesTheStaffMember() { + DeclarationModel declaration = createDeclarationModel(); + TudRequestModel request = createRequestModel(declaration); + request.setIncludesStaffMember(true); + givenNewStateTransition(); + + RequestModel result = this.serviceProvider.updateTUDRequest(request, createRequestPersons(), declaration); + + assertThat(result.getCalculatedTotalAmount()).isEqualTo(Money.of(25, "EUR")); + } + + @Test + void whenIsNotTheFirstRequest_updatedTUDRequestTotalAmountDoesNotIncludeTheStaffMember() { + DeclarationModel declaration = createDeclarationModel(); + TudRequestModel request = createRequestModel(declaration); + request.setIncludesStaffMember(false); + givenNewStateTransition(); + + RequestModel result = this.serviceProvider.updateTUDRequest(request, createRequestPersons(), declaration); + + assertThat(result.getCalculatedTotalAmount()).isEqualTo(Money.of(15, "EUR")); + } + + private void givenEmptyListOfRequests() { + when(tudRepo.findAllByDeclaration_id(1L)).thenReturn((List) EMPTY_COLLECTION); + } + + private void givenTUDEntitlementType() { + when(entitlementTypeJpaServiceProvider.getEntitlementsTypeList(1l)).thenReturn(createEntitlementTypes()); + } + + private void givenAListOfPaidRequests(DeclarationModel declarationModel) { + DeclarationJpaEntity declarationJpaEntity = createDeclarationJpaEntity(declarationModel); + List listOfPaidRequests = createListOfPaidRequests(declarationJpaEntity); + when(tudRepo.findAllByDeclaration_id(declarationModel.getId())).thenReturn(listOfPaidRequests); + when(requestPersonJpaServiceProvider.getRequestPersons(100l)).thenReturn(createRequestPersonsList()); + when(getBeanMapper().mapAsList(listOfPaidRequests, TudRequestModel.class)).thenReturn(createListOfPaidRequestModels(declarationModel)); + } + + private List createRequestPersonsList() { + RequestPersonModel p1 = new RequestPersonModel(); + p1.setDeclared(true); + PersonModel rel1 = new PersonModel(); + rel1.setId(10l); + p1.setRelative(rel1); + p1.setTudEligible(true); + + RequestPersonModel p2 = new RequestPersonModel(); + p2.setDeclared(true); + PersonModel rel2 = new PersonModel(); + rel2.setId(10l); + p2.setRelative(rel2); + p2.setTudEligible(false); + p2.setClaimApproved(false); + + return Arrays.asList(p1, p2); + } + + private DeclarationJpaEntity createDeclarationJpaEntity(DeclarationModel declarationModel) { + DeclarationJpaEntity entity = new DeclarationJpaEntity(); + entity.setId(1l); + entity.setState(declarationModel.getState()); + entity.setPersonBankInfo(new PersonBankInfoJpaEntity()); + entity.setMovementFileId(declarationModel.getMovementFileId()); + entity.setDeclarationPersons(createDeclarationPersonEntities()); + return entity; + } + + private void givenMovementFile() { + MovementFileModel model = new MovementFileModel(); + model.setYear(2020); + when(movementFileJpaServiceProvider.getMovementFile(1L)).thenReturn(model); + } + + private void givenRequestStringId() { + when(tudRepo.getSequenceForRequestID(2020)).thenReturn(12L); + } + + private void givenNewStateTransition() { + StateMachineTransitionResultModel stateModel = new StateMachineTransitionResultModel<>(true, UUID.fromString("d0fde0e9-a95c-4221-bbd4-400e9718c489"), + RequestState.START, RequestState.AWAITING, RequestEvent.DECL_WITH_REMARK, null); + when(this.stateMachineService.send(RequestEvent.DECL_WITH_REMARK)).thenReturn(stateModel); + } + + private List createListOfPaidRequests(DeclarationJpaEntity declarationJpaEntity) { + TudRequestJpaEntity r1 = new TudRequestJpaEntity(); + r1.setState(RequestState.PAID); + r1.setId(100L); + r1.setDeclaration(declarationJpaEntity); + return Arrays.asList(r1); + } + + private List createListOfPaidRequestModels(DeclarationModel declaration) { + TudRequestModel r1 = new TudRequestModel(); + r1.setState(RequestState.PAID); + r1.setId(100L); + r1.setDeclaration(declaration); + return Arrays.asList(r1); + } + + private List createEntitlementTypes() { + EntitlementTypeModel tud = new EntitlementTypeModel(); + tud.setEnable(true); + EntitlementTypeCatModel entitlementTypeCatModel = new EntitlementTypeCatModel(); + entitlementTypeCatModel.setId(1L); + entitlementTypeCatModel.setCode(EntitlementTypeCatCode.TUD); + tud.setEntitlementTypeCat(entitlementTypeCatModel); + + EntitlementMaxModel staffMemberMax = new EntitlementMaxModel(); + staffMemberMax.setId(5L); + staffMemberMax.setMaxValue(Money.of(10, "EUR")); + EntitlementMaxCatModel staffCat = new EntitlementMaxCatModel(); + staffCat.setCode(EntitlementMaxCatCode.TUD_STAFF_MEMBER); + staffMemberMax.setEntitlementMaxCat(staffCat); + + EntitlementMaxModel dependentMax = new EntitlementMaxModel(); + dependentMax.setId(6L); + EntitlementMaxCatModel dependentMaxCat = new EntitlementMaxCatModel(); + dependentMaxCat.setCode(EntitlementMaxCatCode.TUD_DEPENDENT); + dependentMax.setEntitlementMaxCat(dependentMaxCat); + dependentMax.setMaxValue(Money.of(5, "EUR")); + + tud.setEntitlementMaxList(Arrays.asList(staffMemberMax, dependentMax)); + + return Arrays.asList(tud); + } + + private DeclarationModel createDeclarationModel() { + DeclarationModel model = new DeclarationModel(); + model.setId(1L); + model.setMovementFileId(1L); + PersonBankInfoModel personBankInfo = new PersonBankInfoModel(); + this.personBankInfo = personBankInfo; + model.setPersonBankInfo(personBankInfo); + model.setDeclarationPersons(createDeclarationPersonModels()); + return model; + } + + private List createDeclarationPersonModels() { + DeclarationPersonModel p1 = new DeclarationPersonModel(); + p1.setTudEligible(true); + p1.setDeclared(true); + PersonModel r1 = new PersonModel(); + r1.setId(10L); + p1.setRelative(r1); + p1.setClaim(false); + + DeclarationPersonModel p2 = new DeclarationPersonModel(); + p2.setTudEligible(false); + p2.setDeclared(true); + PersonModel r2 = new PersonModel(); + r2.setId(20L); + p2.setRelative(r2); + p2.setClaim(true); + + DeclarationPersonModel p3 = new DeclarationPersonModel(); + p3.setTudEligible(true); + p3.setDeclared(true); + PersonModel r3 = new PersonModel(); + r3.setId(30L); + p3.setRelative(r3); + p3.setClaim(false); + return Arrays.asList(p1, p2, p3); + } + + private List createRequestPersons() { + RequestPersonModel p1 = new RequestPersonModel(); + p1.setTudEligible(true); + p1.setDeclared(true); + PersonModel r1 = new PersonModel(); + r1.setId(10L); + p1.setRelative(r1); + p1.setClaim(false); + + RequestPersonModel p2 = new RequestPersonModel(); + p2.setTudEligible(false); + p2.setDeclared(true); + PersonModel r2 = new PersonModel(); + r2.setId(20L); + p2.setRelative(r2); + p2.setClaim(true); + + RequestPersonModel p3 = new RequestPersonModel(); + p3.setTudEligible(true); + p3.setDeclared(true); + PersonModel r3 = new PersonModel(); + r3.setId(30L); + p3.setRelative(r3); + p3.setClaim(false); + return Arrays.asList(p1, p2, p3); + } + + private List createDeclarationPersonEntities() { + DeclarationPersonJpaEntity p1 = new DeclarationPersonJpaEntity(); + p1.setTudEligible(true); + p1.setDeclared(true); + PersonJpaEntity r1 = new PersonJpaEntity(); + r1.setId(10L); + p1.setRelative(r1); + p1.setClaim(false); + + DeclarationPersonJpaEntity p2 = new DeclarationPersonJpaEntity(); + p2.setTudEligible(false); + p2.setDeclared(true); + PersonJpaEntity r2 = new PersonJpaEntity(); + r2.setId(20L); + p2.setRelative(r2); + p2.setClaim(true); + + DeclarationPersonJpaEntity p3 = new DeclarationPersonJpaEntity(); + p3.setTudEligible(true); + p3.setDeclared(true); + PersonJpaEntity r3 = new PersonJpaEntity(); + r3.setId(30L); + p3.setRelative(r3); + p3.setClaim(false); + return Arrays.asList(p1, p2, p3); + } + + private TudRequestModel createRequestModel(DeclarationModel declarationModel) { + TudRequestModel model = new TudRequestModel(); + model.setSmId(UUID.fromString("d0fde0e9-a95c-4221-bbd4-400e9718c489")); + model.setState(RequestState.AWAITING); + model.setEntitlementType(createEntitlementTypes().get(0)); + model.setDeclaration(declarationModel); + model.setRequestNumber(12L); + model.setRequestStringId("2020-TUD-012"); + model.setYear(2020); + model.setCalculatedTotalAmount(Money.of(20, "EUR")); + model.setPersonBankInfo(this.personBankInfo); + model.setEntitlementTypeCat(createEntitlementTypes().get(0).getEntitlementTypeCat()); + return model; + } +} \ No newline at end of file diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/validation/MovementFileValidatorUT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/validation/MovementFileValidatorUT.java new file mode 100644 index 0000000..e3195d5 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/validation/MovementFileValidatorUT.java @@ -0,0 +1,185 @@ +package eu.europa.eeas.erights.common.service.data.validation; + +import eu.europa.eeas.ananke.core.base.exception.ValidationRuntimeException; +import eu.europa.eeas.ananke.core.data.support.EntityRepositoryRegistry; +import eu.europa.eeas.ananke.core.locale.Localization; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.MovementFileJpaRepository; +import eu.europa.eeas.erights.common.service.model.MovementContextModel; +import eu.europa.eeas.erights.common.service.model.MovementContextType; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.model.VJobModel; +import eu.europa.eeas.erights.common.service.model.VPersonModel; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.hamcrest.CoreMatchers; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.rules.ExpectedException; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.when; + +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = {MovementFileValidator.class, ValidatorConfiguration.class}) +@Disabled("Need refactoring") +class MovementFileValidatorUT { + + private static final Long ID = 1l; + + @Rule + public final ExpectedException exceptionRule = ExpectedException.none(); + + @Autowired + protected EntityRepositoryRegistry entityRepositoryRegistry; + + @MockBean + private MovementFileJpaRepository repository; + + @MockBean + private Localization localization; + + @Autowired + private MovementFileValidator validator; + + private final List active = Arrays.asList(MovementFileState.PENDING); + + @BeforeEach + void setUp() { + when(this.entityRepositoryRegistry.getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class)).thenReturn(this.repository); + } + + @Test + void validateMovementFile_withoutPerIdJobIdContextAndYear() { + MovementFileModel model = new MovementFileModel(); + model.setId(ID); + try { + validator.validateSaveMovementFile(model,model); + } catch (ValidationRuntimeException e) { + assertThat(e.getItems().size(), CoreMatchers.is(3)); + } + } + + @Test + void validateMovementFile_IsNotEOCIsWithoutJobId() { + MovementFileModel model = new MovementFileModel(); + model.setId(ID); + model.setYear(2000); + VPersonModel person = new VPersonModel(); + person.setPerId(1l); + model.setJobHolder(person); + MovementContextModel context = new MovementContextModel(); + context.setId(1l); + context.setName(MovementContextType.ROTATION.name()); + model.setMovementContext(context); + + try { + validator.validateSaveMovementFile(model,model); + } catch (ValidationRuntimeException e) { + assertThat(e.getItems().size(), CoreMatchers.is(1)); + } + } + + @Test + void validateMovementFile_IsNotEOCIsAlreadyExisting() { + MovementFileModel model = new MovementFileModel(); + model.setId(ID); + model.setYear(2000); + VPersonModel person = new VPersonModel(); + person.setPerId(1L); + model.setJobHolder(person); + MovementContextModel context = new MovementContextModel(); + context.setId(1L); + context.setName(MovementContextType.ROTATION.name()); + model.setMovementContext(context); + VJobModel jobTo = new VJobModel(); + jobTo.setId(1L); + model.setJobTo(jobTo); + + List entities = new ArrayList<>(); + entities.add(new MovementFileJpaEntity()); + when(this.repository.findExistingMovementFile(1L, 1L, active)).thenReturn(entities); + + try { + validator.validateSaveMovementFile(model,model); + } catch (ValidationRuntimeException e) { + assertThat(e.getItems().size(), CoreMatchers.is(1)); + } + } + + @Test + void validateMovementFile_IsNotEOCIsNotExisting() { + MovementFileModel model = new MovementFileModel(); + model.setId(ID); + model.setYear(2000); + VPersonModel person = new VPersonModel(); + person.setPerId(1l); + model.setJobHolder(person); + MovementContextModel context = new MovementContextModel(); + context.setId(1l); + context.setName(MovementContextType.ROTATION.name()); + model.setMovementContext(context); + VJobModel jobTo = new VJobModel(); + jobTo.setId(1l); + model.setJobTo(jobTo); + + when(this.repository.findExistingMovementFile(1l, 1l, active)).thenReturn(Collections.emptyList()); + + validator.validateSaveMovementFile(model,model); + } + + @Test + void validateMovementFile_IsEOCIsAlreadyExisting() { + MovementFileModel model = new MovementFileModel(); + model.setId(ID); + model.setYear(2000); + VPersonModel person = new VPersonModel(); + person.setPerId(1L); + model.setJobHolder(person); + MovementContextModel context = new MovementContextModel(); + context.setId(1L); + context.setName(MovementContextType.EOC.name()); + model.setMovementContext(context); + + List entities = new ArrayList<>(); + entities.add(new MovementFileJpaEntity()); + when(this.repository.findExistingMovementFileEOC(1L, active)).thenReturn(entities); + + try { + validator.validateSaveMovementFile(model,model); + } catch (ValidationRuntimeException e) { + assertThat(e.getItems().size(), CoreMatchers.is(1)); + } + } + + @Test + void validateMovementFile_IsEOCIsNotExisting() { + MovementFileModel model = new MovementFileModel(); + model.setId(ID); + model.setYear(2000); + VPersonModel person = new VPersonModel(); + person.setPerId(1l); + model.setJobHolder(person); + MovementContextModel context = new MovementContextModel(); + context.setId(1l); + context.setName(MovementContextType.EOC.name()); + model.setMovementContext(context); + + when(this.repository.findExistingMovementFileEOC(1l, active)).thenReturn(Collections.emptyList()); + + validator.validateSaveMovementFile(model,model); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/validation/ValidatorConfiguration.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/validation/ValidatorConfiguration.java new file mode 100644 index 0000000..f2329f7 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/data/validation/ValidatorConfiguration.java @@ -0,0 +1,17 @@ +package eu.europa.eeas.erights.common.service.data.validation; + +import eu.europa.eeas.ananke.core.data.AnankeCoreDataBeanNames; +import eu.europa.eeas.ananke.core.data.support.EntityRepositoryRegistry; +import org.mockito.Mockito; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class ValidatorConfiguration { + + @Bean(AnankeCoreDataBeanNames.ENTITY_REPOSITORY_REGISTRY) + public EntityRepositoryRegistry entityRepositoryRegistry() { + return Mockito.mock(EntityRepositoryRegistry.class); + } + +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/Fixture.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/Fixture.java new file mode 100644 index 0000000..410764b --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/Fixture.java @@ -0,0 +1,37 @@ +package eu.europa.eeas.erights.common.service.provider; + +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileJpaEntity; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; + +import java.time.LocalDateTime; +import java.util.UUID; + +public class Fixture { + + + public static MovementFileModel createMovementFileModel(){ + + MovementFileModel movementFileModel=new MovementFileModel(); + movementFileModel.setId(1l); + movementFileModel.setSmId(UUID.randomUUID()); + movementFileModel.setState(MovementFileState.PENDING); + LocalDateTime currentDate = LocalDateTime.now().minusDays(14); + movementFileModel.setCreationActor(new AuditActor(1123l,currentDate)); + + return movementFileModel; + } + + public static MovementFileJpaEntity createMovementFileJpa(){ + + MovementFileJpaEntity movementFileJpaEntity=new MovementFileJpaEntity(); + movementFileJpaEntity.setId(1l); + movementFileJpaEntity.setSmId(UUID.randomUUID()); + movementFileJpaEntity.setState(MovementFileState.PENDING); + LocalDateTime currentDate = LocalDateTime.now().minusDays(14); + movementFileJpaEntity.setCreationActor(new AuditActor(1123l,currentDate)); + + return movementFileJpaEntity; + } +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/MovementFileJpaServiceProviderTest.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/MovementFileJpaServiceProviderTest.java new file mode 100644 index 0000000..fab16e4 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/MovementFileJpaServiceProviderTest.java @@ -0,0 +1,163 @@ +package eu.europa.eeas.erights.common.service.provider; + +import eu.europa.eeas.ananke.core.base.mapping.bean.BeanMapper; +import eu.europa.eeas.ananke.core.data.support.EntityRepositoryRegistry; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.erights.common.data.jpa.entity.MovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.MovementFileJpaRepository; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.EntitlementTypeJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.provider.notification.NotificationTemplateJpaServiceProvider; +import eu.europa.eeas.erights.common.service.data.validation.MovementFileValidator; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.service.provider.email.EmailEdmsServiceProvider; +import eu.europa.eeas.erights.common.tools.notification.NotificationTemplateCode; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileEvent; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.*; +import org.mockito.junit.MockitoJUnitRunner; + +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.*; + +@RunWith(MockitoJUnitRunner.class) +public class MovementFileJpaServiceProviderTest { + + + private static final int TWO_WEEKS = 14; + + + @Mock + NotificationTemplateJpaServiceProvider notificationTemplateJpaServiceProvider; + + + @Mock + private StateMachineService stateMachineService; + + @Mock + private MovementFileValidator movementFileValidator; + @Mock + + private MovementFileSecurityChecker movementFileSecurityChecker; + + @Mock + private EmailEdmsServiceProvider emailEdmsServiceProvider; + + @Mock + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Mock + private EntitlementTypeJpaServiceProvider entitlementTypeJpaServiceProvider; + + @Mock + private EntityRepositoryRegistry entityRepositoryRegistry; + + @Mock + MovementFileJpaRepository movementFileJpaRepository; + + @Mock + private BeanMapper beanMapper; + + @InjectMocks + @Spy + private MovementFileJpaServiceProvider movementFileJpaServiceProvider; + + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + } + + @Test + public void testIsMovementFileTwoWeeksOld() { + + MovementFileModel movementFileModel = Fixture.createMovementFileModel(); + LocalDate currentDate = LocalDate.now(); + Optional creationDate = Optional.of(movementFileModel.getCreationActor().getInstant().toLocalDate()); + long daysBetween = ChronoUnit.DAYS.between(creationDate.get(), currentDate); + boolean valid = (daysBetween - TWO_WEEKS) >= 0 && (daysBetween - TWO_WEEKS) % 7 == 0; + assertTrue(valid); + + } + + + @Test + public void testSendRemainderAtExact2Weeks() { + + MovementFileModel movementFileModel = Fixture.createMovementFileModel(); + MovementFileJpaEntity movementFileJpaEntity = Fixture.createMovementFileJpa(); + + List files =new ArrayList<>(); + files.add(movementFileJpaEntity); + + List models =new ArrayList<>(); + models.add(movementFileModel); + + List beanModelsMapper = beanMapper.mapAsList(files, MovementFileModel.class); + Mockito.when(beanModelsMapper).thenReturn(models); + LocalDate pendingMFDate = LocalDate.now().minusDays(14); + doReturn(movementFileJpaRepository).when(entityRepositoryRegistry).getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class); + when(movementFileJpaRepository.findAllByState(MovementFileState.PENDING)).thenReturn(files); + doReturn(Optional.of(pendingMFDate)).when(movementFileJpaServiceProvider).getCreationDate(movementFileModel); + movementFileJpaServiceProvider.sendRemainderEmails(); + verify(this.emailEdmsServiceProvider).checkTemplateAndSendMovementFileNotification(movementFileModel, NotificationTemplateCode.REMINDER_AFTER_CREATE.toString()); + + } + + @Test + public void testSendRemainderNotExact2Weeks() { + + MovementFileModel movementFileModel = Fixture.createMovementFileModel(); + MovementFileJpaEntity movementFileJpaEntity = Fixture.createMovementFileJpa(); + + List files =new ArrayList<>(); + files.add(movementFileJpaEntity); + + List models =new ArrayList<>(); + models.add(movementFileModel); + + List beanModelsMapper = beanMapper.mapAsList(files, MovementFileModel.class); + Mockito.when(beanModelsMapper).thenReturn(models); + LocalDate pendingMFDate = LocalDate.now().minusDays(10); + doReturn(movementFileJpaRepository).when(entityRepositoryRegistry).getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class); + when(movementFileJpaRepository.findAllByState(MovementFileState.PENDING)).thenReturn(files); + doReturn(Optional.of(pendingMFDate)).when(movementFileJpaServiceProvider).getCreationDate(movementFileModel); + movementFileJpaServiceProvider.sendRemainderEmails(); + verify(this.emailEdmsServiceProvider,never()).checkTemplateAndSendMovementFileNotification(movementFileModel, NotificationTemplateCode.REMINDER_AFTER_CREATE.toString()); + + } + + @Test + public void testSendRemainderAtExact3Weeks() { + + MovementFileModel movementFileModel = Fixture.createMovementFileModel(); + MovementFileJpaEntity movementFileJpaEntity = Fixture.createMovementFileJpa(); + + List files =new ArrayList<>(); + files.add(movementFileJpaEntity); + + List models =new ArrayList<>(); + models.add(movementFileModel); + + List beanModelsMapper = beanMapper.mapAsList(files, MovementFileModel.class); + Mockito.when(beanModelsMapper).thenReturn(models); + LocalDate pendingMFDate = LocalDate.now().minusDays(21); + doReturn(movementFileJpaRepository).when(entityRepositoryRegistry).getReaderRepositoryFor(MovementFileJpaEntity.class, MovementFileJpaRepository.class); + when(movementFileJpaRepository.findAllByState(MovementFileState.PENDING)).thenReturn(files); + doReturn(Optional.of(pendingMFDate)).when(movementFileJpaServiceProvider).getCreationDate(movementFileModel); + movementFileJpaServiceProvider.sendRemainderEmails(); + verify(this.emailEdmsServiceProvider).checkTemplateAndSendMovementFileNotification(movementFileModel, NotificationTemplateCode.REMINDER_AFTER_CREATE.toString()); + + } +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/RatesWSServiceProviderTest.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/RatesWSServiceProviderTest.java new file mode 100644 index 0000000..139698b --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/RatesWSServiceProviderTest.java @@ -0,0 +1,68 @@ +package eu.europa.eeas.erights.common.service.provider; + +import io.restassured.RestAssured; +import io.restassured.specification.ProxySpecification; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.web.util.UriComponentsBuilder; + +import java.time.LocalDate; +import java.time.Month; +import java.time.format.DateTimeFormatter; +import java.util.*; + +import static io.restassured.RestAssured.given; +import static org.hamcrest.Matchers.*; +import static org.junit.Assert.assertEquals; + +class RatesWSServiceProviderTest { + + @Test + @DisplayName("Gosselin Integration Test: Brussels to Mexico City") + @Disabled("Gosselin is not stable") + void integrationGosselin() { + // given + RestAssured.proxy(ProxySpecification + .host("ps-bxl-usr.cec.eu.int") + .withPort(8012) + .withAuth("a0099a5c", "k4B5yPe3")); + given().header("X-API-KEY","60d8def0a9f5bebd66c78825ec14dd5e") + .header("X-API-ID","RequestorEEAS") + .pathParam("year","2021") + .pathParam("cityFrom","BRU") + .pathParam("cityTo","MEX") + .pathParam("type","SURFACE") + .queryParam("startDate","2023-02-12") + //when + .when().get("https://eeas.gosselingroup.eu/RateEEAS/{year}/{cityFrom}/{cityTo}/{type}/rate?startDate={startDate}") + //then + .then().assertThat().statusCode(200).body("amount", is(notNullValue())); + } + + @Test + @Disabled("Gosselin is not stable") + void testUrlFormat() { + Map urlParams = new HashMap<>(); + urlParams.put("year", "2003"); + urlParams.put("cityFrom", "MEX"); + urlParams.put("cityTo", "BRU"); + urlParams.put("type", "SURFACE"); + UriComponentsBuilder builder = UriComponentsBuilder.fromUriString("gosselinHost" + "/RateEEAS/{year}/{cityFrom}/{cityTo}/{type}/rate").queryParam("startDate", LocalDate.now().format(DateTimeFormatter.ISO_DATE)); + assertEquals("gosselinHost/RateEEAS/2003/MEX/BRU/SURFACE/rate?startDate=2023-03-09", builder.buildAndExpand(urlParams).toUri().toString()); + } + + @Test + @Disabled("Gosselin is not stable") + void testSortDates() { + List localDateList = new ArrayList<>(); + localDateList.add(LocalDate.now()); + localDateList.add(LocalDate.of(2023, Month.FEBRUARY, 12)); + localDateList.add(LocalDate.of(2022, Month.FEBRUARY, 12)); + localDateList.add(LocalDate.of(2025, Month.FEBRUARY, 12)); + localDateList.add(LocalDate.of(2026, Month.FEBRUARY, 12)); + Optional theDate = localDateList.stream().sorted().findFirst(); + assertEquals(LocalDate.of(2022, Month.FEBRUARY, 12), theDate.get()); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/SkyScannerTest.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/SkyScannerTest.java new file mode 100644 index 0000000..f053eb9 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/SkyScannerTest.java @@ -0,0 +1,61 @@ +package eu.europa.eeas.erights.common.service.provider; + +import io.restassured.RestAssured; +import io.restassured.specification.ProxySpecification; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import static io.restassured.RestAssured.given; +import static org.hamcrest.Matchers.is; + +@Disabled +class SkyScannerTest { + + @Test + void allCountries() { + // given + RestAssured.proxy(ProxySpecification + .host("ps-bxl-usr.cec.eu.int") + .withPort(8012) + .withAuth("a0099a5c", "k4B5yPe3")); + given().queryParam("apiKey","eu847462319462799979241421154933") + //when + .when().get("https://partners.api.skyscanner.net/apiservices/reference/v1.0/countries/en-US") + //then + .then().assertThat().statusCode(200).body("Countries.size()", is(235)); + } + + @Test + void allFlight() { + // given + RestAssured.proxy(ProxySpecification + .host("ps-bxl-usr.cec.eu.int") + .withPort(8012) + .withAuth("a0099a5c", "k4B5yPe3")); + String responseString = given().queryParam("apiKey","eu847462319462799979241421154933") + .pathParam("country","BE") + .pathParam("currency","EUR") + .pathParam("locale","en-US") + .pathParam("originPlace","BRU-iata") + .pathParam("destinationPlace","MEX-iata") + .pathParam("outboundPartialDate","2022") + .pathParam("inboundPartialDate","2022") + //when + .when().get("https://partners.api.skyscanner.net/apiservices/browsequotes/v1.0/" + + "{country}/" + + "{currency}/" + + "{locale}/" + + "{originPlace}/" + + "{destinationPlace}/" + + "{outboundPartialDate}/" + + "{inboundPartialDate}") + //then + .then().assertThat().statusCode(200) + .extract() + .asString(); + + System.out.println(responseString); + } + +} \ No newline at end of file diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/TravelAllowanceServiceProviderTest.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/TravelAllowanceServiceProviderTest.java new file mode 100644 index 0000000..a63b8cd --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/TravelAllowanceServiceProviderTest.java @@ -0,0 +1,679 @@ +package eu.europa.eeas.erights.common.service.provider; + +import com.google.common.collect.Iterables; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonIndemnityJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.entity.VCurrentExerciseNewTravelAllowanceJpaEntity; +import eu.europa.eeas.erights.common.service.model.allowances.PostingAllowancePersonModel; +import eu.europa.eeas.erights.common.tools.utils.Utils; +import org.javamoney.moneta.Money; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnitRunner; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.temporal.TemporalAdjusters; +import java.util.*; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; + +import static eu.europa.eeas.erights.common.service.provider.allowances.TravelAllowanceServiceProvider.*; +import static java.util.Objects.nonNull; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +@RunWith(MockitoJUnitRunner.class) +public class TravelAllowanceServiceProviderTest { + + + @Test + public void testPostingPersonEntitledMonths() { + + int testSameYear = Utils.calculatedMonths(LocalDate.of(2022, 1, 31), + LocalDate.of(2022, 9, 1), 2022); + assertEquals(9, testSameYear); + + int testDateInRangeExerciseYearAboveThreshold = Utils.calculatedMonths(LocalDate.of(2021, 1, 31), LocalDate.of(2023, 9, 1), 2022); + assertEquals(12, testDateInRangeExerciseYearAboveThreshold); + + + int testDateNotInRangeExerciseYear = Utils.calculatedMonths(LocalDate.of(2021, 1, 31), LocalDate.of(2021, 9, 1), 2022); + assertEquals(0, testDateNotInRangeExerciseYear); + + + int testDateIsAfterExerciseYear = Utils.calculatedMonths(LocalDate.of(2023, 1, 31), LocalDate.of(2023, 9, 1), 2022); + assertEquals(0, testDateIsAfterExerciseYear); + + } + + @Test + public void testLatestPersonIndemnityJpaEntityList() { + List personIndemnityJpaEntityList = new ArrayList<>(); + PersonIndemnityJpaEntity personIndemnityJpaEntity = new PersonIndemnityJpaEntity(); + personIndemnityJpaEntity.setRgtId(1l); + LocalDate localDateTime = LocalDate.now(); + personIndemnityJpaEntity.setUpdatedAt(localDateTime); + personIndemnityJpaEntityList.add(personIndemnityJpaEntity); + + PersonIndemnityJpaEntity personIndemnityJpaEntity2 = new PersonIndemnityJpaEntity(); + personIndemnityJpaEntity2.setRgtId(2l); + personIndemnityJpaEntity2.setUpdatedAt(localDateTime); + personIndemnityJpaEntityList.add(personIndemnityJpaEntity2); + Optional personIndemnityJpaEntity3 = personIndemnityJpaEntityList.stream().max((Comparator.comparing(PersonIndemnityJpaEntity::getRgtId))); + long result = personIndemnityJpaEntity3.get().getRgtId(); + assertEquals(2, result); + } + + + @Test + public void testStaffMemberMultipleAssignmentInSameYearAndSameDelegation() { + + List list = new ArrayList<>(); + + + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA1 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA1.setAssStartDat(LocalDate.of(2019, 5, 16)); + vCTA1.setAssignEndDate(LocalDate.of(2022, 5, 15)); + vCTA1.setDelegationOrgId(1L); + vCTA1.setPerId(100L); + list.add(vCTA1); + + + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA5 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA5.setAssStartDat(LocalDate.of(2022, 9, 1)); + vCTA5.setAssignEndDate(LocalDate.of(2025, 5, 15)); + vCTA5.setDelegationOrgId(2L); + vCTA5.setPerId(200L); + list.add(vCTA5); + + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA4 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA4.setAssStartDat(LocalDate.of(2022, 9, 1)); + vCTA4.setAssignEndDate(LocalDate.of(2025, 5, 15)); + vCTA4.setDelegationOrgId(1L); + vCTA4.setPerId(100L); + vCTA4.setDomain("eeas"); + list.add(vCTA4); + + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA3 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA3.setAssStartDat(LocalDate.of(2022, 8, 1)); + vCTA3.setAssignEndDate(LocalDate.of(2022, 8, 31)); + vCTA3.setDelegationOrgId(1L); + vCTA3.setPerId(100L); + list.add(vCTA3); + + + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA2 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA2.setAssStartDat(LocalDate.of(2022, 5, 16)); + vCTA2.setAssignEndDate(LocalDate.of(2022, 7, 31)); + vCTA2.setDelegationOrgId(1L); + vCTA2.setPerId(100L); + list.add(vCTA2); + + Map> map = list.stream().collect(Collectors.groupingBy(VCurrentExerciseNewTravelAllowanceJpaEntity::getPerId,LinkedHashMap::new, + Collectors.toList())); + + assertEquals(2, map.size()); + + Iterator>> iterator = map.entrySet().iterator(); + + while (iterator.hasNext()) { + Map.Entry> entry = iterator.next(); + + List staffMemberAssignments = entry.getValue(); + + Map> mapDelegationGroup = staffMemberAssignments.stream() + .sorted(Comparator.comparing(VCurrentExerciseNewTravelAllowanceJpaEntity::getAssStartDat)) + .collect(Collectors.groupingBy(VCurrentExerciseNewTravelAllowanceJpaEntity::getDelegationOrgId,LinkedHashMap::new, + Collectors.toList())); + + Iterator>> iteratorDelegation = mapDelegationGroup.entrySet().iterator(); + AtomicReference previous = new AtomicReference<>(null); + while (iteratorDelegation.hasNext()) { + Map.Entry> entryDelegation = iteratorDelegation.next(); + list = entryDelegation.getValue(); + list.sort(Comparator.comparing(VCurrentExerciseNewTravelAllowanceJpaEntity::getAssStartDat)); + + if (Objects.equals(1L, entryDelegation.getKey())) { + VCurrentExerciseNewTravelAllowanceJpaEntity last = Iterables.getLast(list); + assertEquals("eeas", last.getDomain()); + int months = calculateMonthsForMultipleAssignments(list, 2022,previous); + assertEquals(12, months); + }else if (Objects.equals(2L, entryDelegation.getKey())) { + VCurrentExerciseNewTravelAllowanceJpaEntity last = Iterables.getLast(list); + int months = calculateMonthsForMultipleAssignments(list, 2022,previous); + assertEquals(4, months); + } + } + + } + + + } + + + + + @Test + public void testStaffMemberMultipleAssignmentInExerciseYearSameAndDifferentDelegation() { + + List list = new ArrayList<>(); + + + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA2 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA2.setAssStartDat(LocalDate.of(2022, 4, 1)); + vCTA2.setAssignEndDate(LocalDate.of(2022, 8, 31)); + vCTA2.setDelegationOrgId(69L); + vCTA2.setPerId(90224529L); + list.add(vCTA2); + + + + + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA4 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA4.setAssStartDat(LocalDate.of(2022, 9, 1)); + vCTA4.setAssignEndDate(LocalDate.of(2025, 3, 31)); + vCTA4.setDelegationOrgId(1205L); + vCTA4.setPerId(90224529L); + list.add(vCTA4); + + + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA1 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA1.setAssStartDat(LocalDate.of(2019, 4, 1)); + vCTA1.setAssignEndDate(LocalDate.of(2022, 3, 31)); + vCTA1.setDelegationOrgId(69L); + vCTA1.setPerId(90224529L); + list.add(vCTA1); + + + Map> map = list.stream().collect(Collectors.groupingBy(VCurrentExerciseNewTravelAllowanceJpaEntity::getPerId,LinkedHashMap::new, + Collectors.toList())); + + assertEquals(1, map.size()); + + Iterator>> iterator = map.entrySet().iterator(); + + while (iterator.hasNext()) { + Map.Entry> entry = iterator.next(); + + List staffMemberAssignments = entry.getValue(); + + Map> mapDelegationGroup = staffMemberAssignments.stream() + .sorted(Comparator.comparing(VCurrentExerciseNewTravelAllowanceJpaEntity::getAssStartDat)) + .collect(Collectors.groupingBy(VCurrentExerciseNewTravelAllowanceJpaEntity::getDelegationOrgId,LinkedHashMap::new, + Collectors.toList())); + + Iterator>> iteratorDelegation = mapDelegationGroup.entrySet().iterator(); + AtomicReference previous = new AtomicReference<>(null); + while (iteratorDelegation.hasNext()) { + Map.Entry> entryDelegation = iteratorDelegation.next(); + list = entryDelegation.getValue(); + list.sort(Comparator.comparing(VCurrentExerciseNewTravelAllowanceJpaEntity::getAssStartDat)); + + if (Objects.equals(69L, entryDelegation.getKey())) { + int months = calculateMonthsForMultipleAssignments(list, 2022,previous); + assertEquals(8, months); + }else if (Objects.equals(1205L, entryDelegation.getKey())) { + VCurrentExerciseNewTravelAllowanceJpaEntity last = Iterables.getLast(list); + int months = calculateMonthsForMultipleAssignments(list, 2022,previous); + assertEquals(4, months); + } + } + } + } + + + + @Test + public void testStaffMemberMultipleAssignmentInSameYearAndDifferentDelegation() { + + List list = new ArrayList<>(); + + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA2 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA2.setAssStartDat(LocalDate.of(2022, 8, 16)); + vCTA2.setAssignEndDate(LocalDate.of(2024, 12, 31)); + vCTA2.setDelegationOrgId(68L); + vCTA2.setPerId(90223089L); + list.add(vCTA2); + + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA1 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA1.setAssStartDat(LocalDate.of(2019, 1, 1)); + vCTA1.setAssignEndDate(LocalDate.of(2022, 8, 15)); + vCTA1.setDelegationOrgId(49L); + vCTA1.setPerId(90223089L); + list.add(vCTA1); + + + + Map> map = list.stream().collect(Collectors.groupingBy(VCurrentExerciseNewTravelAllowanceJpaEntity::getPerId,LinkedHashMap::new, + Collectors.toList())); + + assertEquals(1, map.size()); + + Iterator>> iterator = map.entrySet().iterator(); + + while (iterator.hasNext()) { + Map.Entry> entry = iterator.next(); + + List staffMemberAssignments = entry.getValue(); + + Map> mapDelegationGroup = staffMemberAssignments.stream() + .sorted(Comparator.comparing(VCurrentExerciseNewTravelAllowanceJpaEntity::getAssStartDat)) + .collect(Collectors.groupingBy(VCurrentExerciseNewTravelAllowanceJpaEntity::getDelegationOrgId,LinkedHashMap::new, + Collectors.toList())); + + Iterator>> iteratorDelegation = mapDelegationGroup.entrySet().iterator(); + AtomicReference previous = new AtomicReference<>(null); + while (iteratorDelegation.hasNext()) { + Map.Entry> entryDelegation = iteratorDelegation.next(); + list = entryDelegation.getValue(); + list.sort(Comparator.comparing(VCurrentExerciseNewTravelAllowanceJpaEntity::getAssStartDat)); + + if (Objects.equals(49L, entryDelegation.getKey())) { + + int months = calculateMonthsForMultipleAssignments(list, 2022,previous); + assertEquals(8, months); + } else if (Objects.equals(68L, entryDelegation.getKey())) { + + int months = calculateMonthsForMultipleAssignments(list, 2022,previous); + assertEquals(4, months); + } + } + + } + + } + + + private int calculateMonthsForMultipleAssignments(List list, int exerciseYear + ,AtomicReference previousRef) { + + + VCurrentExerciseNewTravelAllowanceJpaEntity previous = previousRef.get(); + + int months = 0; + LocalDate maxEndOfAssignmentDate = null; + for (VCurrentExerciseNewTravelAllowanceJpaEntity vNewTravelAllowanceModel : list) { + + LocalDate assignmentStartDate = vNewTravelAllowanceModel.getAssStartDat(); + LocalDate assignmentEndDate = vNewTravelAllowanceModel.getAssignEndDate(); + if (previous != null) { + int previousYear = previous.getAssignEndDate().getYear(); + int previousMonth = previous.getAssignEndDate().getMonthValue(); + if (assignmentStartDate.getYear() == previousYear && + assignmentStartDate.getMonthValue() == previousMonth) { + assignmentStartDate = previous.getAssignEndDate().with(TemporalAdjusters.firstDayOfNextMonth()); + } + } + + int calculatedMonths = Utils.calculatedMonths(assignmentStartDate, assignmentEndDate, exerciseYear); + + if (maxEndOfAssignmentDate == null) { + maxEndOfAssignmentDate = vNewTravelAllowanceModel.getAssignEndDate(); + } + + if (nonNull(maxEndOfAssignmentDate) && nonNull(previous) && + assignmentStartDate.isBefore(maxEndOfAssignmentDate) && + Objects.equals(previous.getDelegationOrgId(), vNewTravelAllowanceModel.getDelegationOrgId())) { + + if (assignmentEndDate.isAfter(maxEndOfAssignmentDate)) { + maxEndOfAssignmentDate = assignmentEndDate; + months = Math.max(months, calculatedMonths); + } + } else { + months = months + calculatedMonths; + previous = vNewTravelAllowanceModel; + previousRef.getAndSet(previous); + } + } + return months; + } + + + + @Test + public void testStaffMemberMultipleAssignmentInSameYearAndDifferentDelegationAndSameMonthNotIncluded() { + + + + List list = new ArrayList<>(); + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA1 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA1.setAssStartDat(LocalDate.of(2021, 5, 1)); + vCTA1.setAssignEndDate(LocalDate.of(2022, 8, 15)); + vCTA1.setDelegationOrgId(129L); + vCTA1.setPerId(80506555L); + list.add(vCTA1); + + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA2 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA2.setAssStartDat(LocalDate.of(2022, 8, 16)); + vCTA2.setAssignEndDate(LocalDate.of(9999, 12, 31)); + vCTA2.setDelegationOrgId(31L); + vCTA2.setPerId(80506555L); + list.add(vCTA2); + + + Map> map = list.stream().collect(Collectors.groupingBy(VCurrentExerciseNewTravelAllowanceJpaEntity::getPerId,LinkedHashMap::new, + Collectors.toList())); + + assertEquals(1, map.size()); + + map.forEach((aLong, vCurrentExerciseNewTravelAllowanceJpaEntities) -> { + + Map> mapDelegationGroup = vCurrentExerciseNewTravelAllowanceJpaEntities.stream() + .sorted(Comparator.comparing(VCurrentExerciseNewTravelAllowanceJpaEntity::getAssStartDat)) + .collect(Collectors.groupingBy(VCurrentExerciseNewTravelAllowanceJpaEntity::getDelegationOrgId,LinkedHashMap::new, + Collectors.toList())); + + AtomicReference previous = new AtomicReference<>(null); + + mapDelegationGroup.forEach((aLong1, vCurrentExerciseNewTravelAllowanceJpaEntities1) -> { + + vCurrentExerciseNewTravelAllowanceJpaEntities1.sort(Comparator.comparing(VCurrentExerciseNewTravelAllowanceJpaEntity::getAssStartDat)); + + if (Objects.equals(129L, aLong1)) { + + int months = calculateMonthsForMultipleAssignments(vCurrentExerciseNewTravelAllowanceJpaEntities1, 2022,previous); + assertEquals(8, months); + } else if (Objects.equals(31L, aLong1)) { + + int months = calculateMonthsForMultipleAssignments(vCurrentExerciseNewTravelAllowanceJpaEntities1, 2022,previous); + assertEquals(4, months); + } + }); + + }); + + + } + + + @Test + public void testStaffMemberMultipleAssignmentsInSameYearInSameDelegationWithAndTakeMaxEntitlementMonths() { + + + + List list = new ArrayList<>(); + + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA2 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA2.setAssStartDat(LocalDate.of(2022, 7, 1)); + vCTA2.setAssignEndDate(LocalDate.of(2022, 7, 31)); + vCTA2.setDelegationOrgId(129L); + vCTA2.setPerId(80506555L); + list.add(vCTA2); + + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA1 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA1.setAssStartDat(LocalDate.of(2018, 5, 1)); + vCTA1.setAssignEndDate(LocalDate.of(9999, 12, 31)); + vCTA1.setDelegationOrgId(129L); + vCTA1.setPerId(80506555L); + list.add(vCTA1); + + + + + Map> map = list.stream().collect(Collectors.groupingBy(VCurrentExerciseNewTravelAllowanceJpaEntity::getPerId,LinkedHashMap::new, + Collectors.toList())); + + assertEquals(1, map.size()); + + map.forEach((aLong, vCurrentExerciseNewTravelAllowanceJpaEntities) -> { + + Map> mapDelegationGroup = vCurrentExerciseNewTravelAllowanceJpaEntities.stream() + .sorted(Comparator.comparing(VCurrentExerciseNewTravelAllowanceJpaEntity::getAssStartDat)) + .collect(Collectors.groupingBy(VCurrentExerciseNewTravelAllowanceJpaEntity::getDelegationOrgId,LinkedHashMap::new, + Collectors.toList())); + + AtomicReference previous = new AtomicReference<>(null); + + mapDelegationGroup.forEach((aLong1, vCurrentExerciseNewTravelAllowanceJpaEntities1) -> { + + vCurrentExerciseNewTravelAllowanceJpaEntities1.sort(Comparator.comparing(VCurrentExerciseNewTravelAllowanceJpaEntity::getAssStartDat)); + + int months = calculateMonthsForMultipleAssignments(vCurrentExerciseNewTravelAllowanceJpaEntities1, 2022,previous); + assertEquals(12, months); + }); + + }); + + + } + + + + @Test + public void testStaffMemberMultipleAssignmentsInSameYearInSameDelegationWithAndTakeMaxEntitlementMonths2() { + + List list = new ArrayList<>(); + + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA2 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA2.setAssStartDat(LocalDate.of(2022, 7, 1)); + vCTA2.setAssignEndDate(LocalDate.of(2022, 7, 31)); + vCTA2.setDelegationOrgId(129L); + vCTA2.setPerId(80506555L); + list.add(vCTA2); + + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA1 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA1.setAssStartDat(LocalDate.of(2018, 5, 1)); + vCTA1.setAssignEndDate(LocalDate.of(2022, 5, 31)); + vCTA1.setDelegationOrgId(129L); + vCTA1.setPerId(80506555L); + list.add(vCTA1); + + + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA3 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA3.setAssStartDat(LocalDate.of(2022, 4, 1)); + vCTA3.setAssignEndDate(LocalDate.of(9999, 12, 31)); + vCTA3.setDelegationOrgId(129L); + vCTA3.setPerId(80506555L); + list.add(vCTA3); + + + Map> map = list.stream().collect(Collectors.groupingBy(VCurrentExerciseNewTravelAllowanceJpaEntity::getPerId,LinkedHashMap::new, + Collectors.toList())); + + assertEquals(1, map.size()); + + map.forEach((aLong, vCurrentExerciseNewTravelAllowanceJpaEntities) -> { + + Map> mapDelegationGroup = vCurrentExerciseNewTravelAllowanceJpaEntities.stream() + .sorted(Comparator.comparing(VCurrentExerciseNewTravelAllowanceJpaEntity::getAssStartDat)) + .collect(Collectors.groupingBy(VCurrentExerciseNewTravelAllowanceJpaEntity::getDelegationOrgId,LinkedHashMap::new, + Collectors.toList())); + + AtomicReference previous = new AtomicReference<>(null); + + mapDelegationGroup.forEach((aLong1, vCurrentExerciseNewTravelAllowanceJpaEntities1) -> { + + vCurrentExerciseNewTravelAllowanceJpaEntities1.sort(Comparator.comparing(VCurrentExerciseNewTravelAllowanceJpaEntity::getAssStartDat)); + + int months = calculateMonthsForMultipleAssignments(vCurrentExerciseNewTravelAllowanceJpaEntities1, 2022,previous); + assertEquals(9, months); + }); + + }); + } + + + @Test + public void testStaffMemberMultipleAssignmentAssignmentDates() { + + List list = new ArrayList<>(); + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA1 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA1.setAssStartDat(LocalDate.of(2021, 5, 1)); + vCTA1.setAssignEndDate(LocalDate.of(2022, 8, 15)); + vCTA1.setDelegationOrgId(129L); + vCTA1.setPerId(80506555L); + list.add(vCTA1); + + VCurrentExerciseNewTravelAllowanceJpaEntity vCTA2 = new VCurrentExerciseNewTravelAllowanceJpaEntity(); + vCTA2.setAssStartDat(LocalDate.of(2022, 8, 16)); + vCTA2.setAssignEndDate(LocalDate.of(9999, 12, 31)); + vCTA2.setDelegationOrgId(31L); + vCTA2.setPerId(80506555L); + list.add(vCTA2); + + + Map> map = list.stream().collect(Collectors.groupingBy(VCurrentExerciseNewTravelAllowanceJpaEntity::getPerId,LinkedHashMap::new, + Collectors.toList())); + + assertEquals(1, map.size()); + + map.forEach((aLong, vCurrentExerciseNewTravelAllowanceJpaEntities) -> { + + Map> mapDelegationGroup = vCurrentExerciseNewTravelAllowanceJpaEntities.stream() + .sorted(Comparator.comparing(VCurrentExerciseNewTravelAllowanceJpaEntity::getAssStartDat)) + .collect(Collectors.groupingBy(VCurrentExerciseNewTravelAllowanceJpaEntity::getDelegationOrgId,LinkedHashMap::new, + Collectors.toList())); + + AtomicReference previous = new AtomicReference<>(null); + + mapDelegationGroup.forEach((aLong1, vCurrentExerciseNewTravelAllowanceJpaEntities1) -> { + + vCurrentExerciseNewTravelAllowanceJpaEntities1.sort(Comparator.comparing(VCurrentExerciseNewTravelAllowanceJpaEntity::getAssStartDat)); + VCurrentExerciseNewTravelAllowanceJpaEntity vCurrentExerciseNewTravelAllowanceJpaEntity = vCurrentExerciseNewTravelAllowanceJpaEntities1.stream().filter( + model -> Objects.equals(aLong1, model.getDelegationOrgId()) + ).findFirst().get(); + + if (Objects.equals(129L, aLong1)) { + + LocalDate assignmentStartDate = LocalDate.of(2021, 5, 1); + assertTrue(assignmentStartDate.isEqual(vCurrentExerciseNewTravelAllowanceJpaEntity.getAssStartDat())); + } else if (Objects.equals(31L, aLong1)) { + + LocalDate assignmentStartDate = LocalDate.of(2022, 8, 16); + assertTrue(assignmentStartDate.isEqual(vCurrentExerciseNewTravelAllowanceJpaEntity.getAssStartDat())); + } + }); + + }); + + + } + + + @Test + public void testFormat2DecimalPlaces(){ + + + Money outgoingAmount = Money.of(2711.3334141373634672 ,"EUR"); + float division = 8/(float) 12; + Money totalAmount = outgoingAmount.multiply(division); + BigDecimal bigDecimal =totalAmount.getNumber().numberValue(BigDecimal.class); + Money money = Money.of(bigDecimal.setScale(2, RoundingMode.HALF_EVEN), "EUR"); + BigDecimal bigDecimalExpected = new BigDecimal("1807.56"); + assertEquals(bigDecimalExpected,money.getNumber().numberValue(BigDecimal.class)); + + } + + @Test + public void testSumListValues(){ + + List list=new ArrayList<>(); + + Money outgoingAmount = Money.of(4448 ,"EUR"); + double division = 4/(double) 12; + Money totalAmount = outgoingAmount.multiply(division); + + PostingAllowancePersonModel postingAllowancePersonModel=new PostingAllowancePersonModel(); + postingAllowancePersonModel.setTotalAmount(totalAmount); + + list.add(postingAllowancePersonModel); + list.add(postingAllowancePersonModel); + list.add(postingAllowancePersonModel); + + Money money = calculatePostingAllowancePersonTotal(list); + BigDecimal bigDecimalExpected = new BigDecimal("4448"); + assertEquals(bigDecimalExpected,money.getNumber().numberValue(BigDecimal.class)); + + List modelList = list.stream().peek(personModel -> personModel.setTotalAmount(formatAmount(personModel.getTotalAmount()))).collect(Collectors.toList()); + + modelList.forEach(personModel -> { + System.out.println(personModel.getTotalAmount().getNumber()); + }); + } + + @Test + public void testSumListValues2(){ + + List list=new ArrayList<>(); + Money outgoingAmount = Money.of(61888.04 ,"EUR"); + double division = 8/(double) 12; + Money totalAmount = outgoingAmount.multiply(division); + PostingAllowancePersonModel postingAllowancePersonModel=new PostingAllowancePersonModel(); + postingAllowancePersonModel.setTotalAmount(totalAmount); + list.add(postingAllowancePersonModel); + list.add(postingAllowancePersonModel); + list.add(postingAllowancePersonModel); + list.add(postingAllowancePersonModel); + Money money = calculatePostingAllowancePersonTotal(list); + BigDecimal bigDecimalExpected = new BigDecimal("165034.77"); + assertEquals(bigDecimalExpected,money.getNumber().numberValue(BigDecimal.class)); + } + + + @Test + public void testSumListValues3(){ + + List list=new ArrayList<>(); + Money outgoingAmount = Money.of(92534.12 ,"EUR"); + double division = 6/(double) 12; + Money totalAmount = outgoingAmount.multiply(division); + Money returnAmount = Money.of(10431.37 ,"EUR"); + double divisionReturn = 6/(double) 12; + Money totalAmountReturn = returnAmount.multiply(divisionReturn); + PostingAllowancePersonModel postingAllowancePersonModel=new PostingAllowancePersonModel(); + postingAllowancePersonModel.setTotalAmount(totalAmount); + PostingAllowancePersonModel postingAllowancePersonModelReturn=new PostingAllowancePersonModel(); + postingAllowancePersonModelReturn.setTotalAmount(totalAmountReturn); + list.add(postingAllowancePersonModel); + list.add(postingAllowancePersonModelReturn); + list.add(postingAllowancePersonModelReturn); + list.add(postingAllowancePersonModelReturn); + Money money = calculatePostingAllowancePersonTotal(list); + BigDecimal bigDecimalExpected = new BigDecimal("61914.12"); + assertEquals(bigDecimalExpected,money.getNumber().numberValue(BigDecimal.class)); + List modelList = list.stream().peek(personModel -> personModel.setTotalAmount(formatAmount(personModel.getTotalAmount()))).collect(Collectors.toList()); + modelList.forEach(personModel -> { + System.out.println(personModel.getTotalAmount().getNumber().numberValue(BigDecimal.class)); + }); + } + + + @Test + public void testSumListValues4(){ + + List list=new ArrayList<>(); + + Money outgoingAmount = Money.of(1638.42 ,"EUR"); + double division = 6/(double) 12; + Money totalAmount = outgoingAmount.multiply(division); + + + Money returnAmount = Money.of(1641.81 ,"EUR"); + double divisionReturn = 6/(double) 12; + Money totalAmountReturn = returnAmount.multiply(divisionReturn); + + PostingAllowancePersonModel dependencies=new PostingAllowancePersonModel(); + dependencies.setTotalAmount(totalAmountReturn); + + list.add(dependencies); + list.add(dependencies); + list.add(dependencies); + + PostingAllowancePersonModel staffMember=new PostingAllowancePersonModel(); + staffMember.setTotalAmount(totalAmount); + list.add(staffMember); + + + Money money = calculatePostingAllowancePersonTotal(list); + + BigDecimal bigDecimalExpected = new BigDecimal("3281.93"); + assertEquals(bigDecimalExpected,money.getNumber().numberValue(BigDecimal.class)); + + List modelList = list.stream().peek(personModel -> personModel.setTotalAmount(formatAmount(personModel.getTotalAmount()))).collect(Collectors.toList()); + + modelList.forEach(personModel -> { + System.out.println(personModel.getTotalAmount().getNumber()); + }); + } +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/allowances/TravelAllowanceServiceProviderTest.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/allowances/TravelAllowanceServiceProviderTest.java new file mode 100644 index 0000000..2230b17 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/allowances/TravelAllowanceServiceProviderTest.java @@ -0,0 +1,469 @@ +package eu.europa.eeas.erights.common.service.provider.allowances; + +import com.google.common.collect.Iterables; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.tools.statemachine.service.StateMachineService; +import eu.europa.eeas.erights.common.data.jpa.entity.PersonAddressHistoryJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.*; +import eu.europa.eeas.erights.common.data.jpa.repository.allowances.TravelAllowanceJpaRepository; +import eu.europa.eeas.erights.common.data.jpa.repository.declaration.PersonAddressHistoryJpaRepository; +import eu.europa.eeas.erights.common.service.data.provider.*; +import eu.europa.eeas.erights.common.service.model.VNewTravelAllowanceModel; +import eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceEvent; +import eu.europa.eeas.erights.common.tools.statemachine.PostingAllowanceState; +import org.apache.commons.collections4.CollectionUtils; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.time.LocalDate; +import java.time.Month; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +import static eu.europa.eeas.erights.common.service.provider.allowances.TravelAllowanceServiceProvider.getAssignmentsForTheCurrentYearUpToCurrentDay; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +@ExtendWith(MockitoExtension.class) +@Disabled("Need refactoring") +class TravelAllowanceServiceProviderTest { + + TravelAllowanceServiceProvider sut; + + @Mock + VNewTravelAllowanceJpaServiceProvider travelAllowanceJpaServiceProvider; + @Mock + VPersonJpaServiceProvider vPersonJpaServiceProvider; + @Mock + MovementFileJpaServiceProvider movementFileJpaServiceProvider; + @Mock + TravelAllowanceJpaRepository travelAllowanceJpaRepository; + @Mock + PersonJpaServiceProvider personJpaServiceProvider; + @Mock + PostingAllowanceDefaultServiceProvider postingAllowanceDefaultServiceProvider; + @Mock + PostingAllowanceServiceProvider postingAllowanceServiceProvider; + @Mock + StateMachineService< PostingAllowanceState, PostingAllowanceEvent> requestStateMachineService; + + @Mock + PostingAllowancePersonServiceProvider postingAllowancePersonServiceProvider; + @Mock + DataServiceProviderRegistry dataServiceProviderRegistry; + @Mock + PersonAddressHistoryJpaRepository personAddressJpaRepository; + + @Mock + VPersonJpaRepository vPersonJpaRepository; + @Mock + PlaceOriginAirportJpaServiceProvider placeOriginAirportJpaServiceProvider; + @Mock + LocationJpaServiceProvider locationJpaServiceProvider; + @Mock + PostingAllowanceTreatedServiceProvider treatedServiceProvider; + @Mock + PersonJpaServiceProvider peopleJpaServiceProvider; + + @Mock + private VAssignmentHistEeasJpaRepository assignmentHistEeasJpaRepository; + + @Mock + private MVCountryJpaRepository mvCountryJpaRepository; + + @Mock + private VPersonIndemnityJpaRepository vPersonIndemnityJpaRepository; + @BeforeEach + void setUp() { + sut = new TravelAllowanceServiceProvider(travelAllowanceJpaServiceProvider, + vPersonJpaServiceProvider, + movementFileJpaServiceProvider, + travelAllowanceJpaRepository, + personJpaServiceProvider, + postingAllowanceDefaultServiceProvider, + postingAllowanceServiceProvider, + requestStateMachineService, + postingAllowancePersonServiceProvider, + dataServiceProviderRegistry, + personAddressJpaRepository, + vPersonJpaRepository,placeOriginAirportJpaServiceProvider, locationJpaServiceProvider,treatedServiceProvider,peopleJpaServiceProvider, + assignmentHistEeasJpaRepository, + mvCountryJpaRepository, + vPersonIndemnityJpaRepository); + } + + @Test + void originPeriodYear() { + LocalDate expatriationAllowanceStartDate = LocalDate.of(2020, 8, 31); + Integer originPeriodYear = sut.getDefaultOriginPeriodYear(expatriationAllowanceStartDate); + assertEquals(22, originPeriodYear); + } + + @Test + void originPeriodMonth() { + LocalDate expatriationAllowanceStartDate = LocalDate.of(2020, 8, 31); + Integer originPeriodMonth = sut.getDefaultOriginPeriodMonth(expatriationAllowanceStartDate); + assertEquals(Month.JUNE.getValue(), originPeriodMonth); + } + + @Test + void originPeriodMonthAfterCurrentDate() { + LocalDate expatriationAllowanceStartDate = LocalDate.of(2022, 8, 31); + Integer originPeriodMonth = sut.getDefaultOriginPeriodMonth(expatriationAllowanceStartDate); + assertEquals(Month.SEPTEMBER.getValue(), originPeriodMonth); + } + + @Test + void originPeriodMonthAfterCurrentDateDecember() { + LocalDate expatriationAllowanceStartDate = LocalDate.of(2022, 12, 31); + Integer originPeriodMonth = sut.getDefaultOriginPeriodMonth(expatriationAllowanceStartDate); + assertEquals(Month.JANUARY.getValue(), originPeriodMonth); + } + + @Test + void originPeriodYearAfterCurrentDateDecember() { + LocalDate expatriationAllowanceStartDate = LocalDate.of(2022, 12, 31); + Integer originPeriodYear = sut.getDefaultOriginPeriodYear(expatriationAllowanceStartDate); + assertEquals(23, originPeriodYear); + } + + @Test + void testSingleDependencyDateIsWithinAssignmentDates() { + + LocalDate assignmentStartDate = LocalDate.of(2022, 9, 30); + LocalDate assignmentEndDate = LocalDate.of(2023, 3, 31); + List personAddressJpaEntities = new ArrayList<>(); + + PersonAddressHistoryJpaEntity personAddressHistoryJpaEntity=new PersonAddressHistoryJpaEntity(); + personAddressHistoryJpaEntity.setStartDate(LocalDate.of(2022, 9, 30)); + personAddressHistoryJpaEntity.setEndDate(LocalDate.of(2023, 5, 31)); + + personAddressJpaEntities.add(personAddressHistoryJpaEntity); + + + PersonAddressHistoryJpaEntity first = personAddressJpaEntities.stream().filter( + personAddressHistoryJpaEntity1 -> { +// asd 30 september 2022 +// aed 31 March 2023 + + LocalDate startDate = personAddressHistoryJpaEntity1.getStartDate(); //30 september 2022 + LocalDate endDate = personAddressHistoryJpaEntity1.getEndDate(); //31 march 2023 + + + return (startDate.isAfter(assignmentStartDate) || startDate.isEqual(assignmentStartDate)) && + startDate.isBefore(assignmentEndDate) && + !startDate.isBefore(assignmentStartDate) && + (!endDate.isAfter(assignmentEndDate) || endDate.isAfter(assignmentEndDate)); + } + ).findFirst().orElse(null); + + assertNotNull(first); + } + + + + @Test + void testMultipleDependencyDatesIsWithinAssignmentDatesWithOneHasInvalidStartDate() { + + LocalDate assignmentStartDate = LocalDate.of(2022, 9, 30); + LocalDate assignmentEndDate = LocalDate.of(2023, 3, 31); + List personAddressJpaEntities = new ArrayList<>(); + + PersonAddressHistoryJpaEntity personAddressHistoryJpaEntity=new PersonAddressHistoryJpaEntity(); + personAddressHistoryJpaEntity.setStartDate(LocalDate.of(2022, 9, 30)); + personAddressHistoryJpaEntity.setEndDate(LocalDate.of(2023, 5, 31)); + personAddressHistoryJpaEntity.setUniqId(2L); + + PersonAddressHistoryJpaEntity personAddressHistoryJpaEntity11=new PersonAddressHistoryJpaEntity(); + personAddressHistoryJpaEntity11.setStartDate(LocalDate.of(2022, 8, 31)); + personAddressHistoryJpaEntity11.setEndDate(LocalDate.of(2023, 5, 31)); + personAddressHistoryJpaEntity11.setUniqId(1L); + + personAddressJpaEntities.add(personAddressHistoryJpaEntity); + personAddressJpaEntities.add(personAddressHistoryJpaEntity11); + + + List list = personAddressJpaEntities.stream() + .sorted(Comparator.comparing(PersonAddressHistoryJpaEntity::getStartDate)) + .filter( + personAddressHistoryJpaEntity1 -> { + + LocalDate startDate = personAddressHistoryJpaEntity1.getStartDate(); //30 september 2022 + LocalDate endDate = personAddressHistoryJpaEntity1.getEndDate(); //31 march 2023 + + return (startDate.isAfter(assignmentStartDate) || startDate.isEqual(assignmentStartDate)) && + startDate.isBefore(assignmentEndDate) && + !startDate.isBefore(assignmentStartDate) && + (!endDate.isAfter(assignmentEndDate) || endDate.isAfter(assignmentEndDate)); + } + ).collect(Collectors.toList()); + + + if(CollectionUtils.isNotEmpty(list)){ + + PersonAddressHistoryJpaEntity last = Iterables.getLast(list); + assertEquals(1,list.size()); + assertEquals(2L,last.getUniqId()); + } + + } + + + + @Test + void testMultipleDependencyDatesIsNotWithinAssignmentDatesOutOfScope() { + + LocalDate assignmentStartDate = LocalDate.of(2022, 9, 30); + LocalDate assignmentEndDate = LocalDate.of(2023, 3, 31); + List personAddressJpaEntities = new ArrayList<>(); + + PersonAddressHistoryJpaEntity personAddressHistoryJpaEntity=new PersonAddressHistoryJpaEntity(); + personAddressHistoryJpaEntity.setStartDate(LocalDate.of(2022, 9, 29)); + personAddressHistoryJpaEntity.setEndDate(LocalDate.of(2023, 5, 31)); + personAddressHistoryJpaEntity.setUniqId(2L); + + PersonAddressHistoryJpaEntity personAddressHistoryJpaEntity11=new PersonAddressHistoryJpaEntity(); + personAddressHistoryJpaEntity11.setStartDate(LocalDate.of(2022, 8, 31)); + personAddressHistoryJpaEntity11.setEndDate(LocalDate.of(2023, 5, 31)); + personAddressHistoryJpaEntity11.setUniqId(1L); + + PersonAddressHistoryJpaEntity personAddressHistoryJpaEntity112=new PersonAddressHistoryJpaEntity(); + personAddressHistoryJpaEntity112.setStartDate(LocalDate.of(2023, 4, 1)); + personAddressHistoryJpaEntity112.setEndDate(LocalDate.of(2023, 5, 31)); + personAddressHistoryJpaEntity112.setUniqId(3L); + + + + personAddressJpaEntities.add(personAddressHistoryJpaEntity); + personAddressJpaEntities.add(personAddressHistoryJpaEntity11); + personAddressJpaEntities.add(personAddressHistoryJpaEntity112); + + + List list = personAddressJpaEntities.stream() + .sorted(Comparator.comparing(PersonAddressHistoryJpaEntity::getStartDate)) + .filter( + personAddressHistoryJpaEntity1 -> { + + LocalDate startDate = personAddressHistoryJpaEntity1.getStartDate(); //30 september 2022 + LocalDate endDate = personAddressHistoryJpaEntity1.getEndDate(); //31 march 2023 + + + return (startDate.isAfter(assignmentStartDate) || startDate.isEqual(assignmentStartDate)) && + startDate.isBefore(assignmentEndDate) && + !startDate.isBefore(assignmentStartDate) && + (!endDate.isAfter(assignmentEndDate) || endDate.isAfter(assignmentEndDate)); + } + ).collect(Collectors.toList()); + + assertEquals(0,list.size()); + + } + + + + @Test + void testMultipleDependencyDatesIsWithinAssignmentAngGetLatest() { + + LocalDate assignmentStartDate = LocalDate.of(2022, 9, 30); + LocalDate assignmentEndDate = LocalDate.of(2023, 3, 31); + List personAddressJpaEntities = new ArrayList<>(); + + PersonAddressHistoryJpaEntity personAddressHistoryJpaEntity=new PersonAddressHistoryJpaEntity(); + personAddressHistoryJpaEntity.setStartDate(LocalDate.of(2022, 9, 30)); + personAddressHistoryJpaEntity.setEndDate(LocalDate.of(2023, 5, 31)); + personAddressHistoryJpaEntity.setUniqId(2L); + + PersonAddressHistoryJpaEntity personAddressHistoryJpaEntity11=new PersonAddressHistoryJpaEntity(); + personAddressHistoryJpaEntity11.setStartDate(LocalDate.of(2022, 12, 31)); + personAddressHistoryJpaEntity11.setEndDate(LocalDate.of(2023, 6, 30)); + personAddressHistoryJpaEntity11.setUniqId(1L); + + PersonAddressHistoryJpaEntity personAddressHistoryJpaEntity112=new PersonAddressHistoryJpaEntity(); + personAddressHistoryJpaEntity112.setStartDate(LocalDate.of(2023, 4, 1)); + personAddressHistoryJpaEntity112.setEndDate(LocalDate.of(2023, 5, 31)); + personAddressHistoryJpaEntity112.setUniqId(3L); + + personAddressJpaEntities.add(personAddressHistoryJpaEntity); + personAddressJpaEntities.add(personAddressHistoryJpaEntity11); + personAddressJpaEntities.add(personAddressHistoryJpaEntity112); + + + List list = personAddressJpaEntities.stream() + .sorted(Comparator.comparing(PersonAddressHistoryJpaEntity::getStartDate)) + .filter( + personAddressHistoryJpaEntity1 -> { + + LocalDate startDate = personAddressHistoryJpaEntity1.getStartDate(); + LocalDate endDate = personAddressHistoryJpaEntity1.getEndDate(); + +// 31 sept 2022 after 31 sep +// 31 dec 2022 after 31 sep +// 1 april 2021 after 31 sep + + return (startDate.isAfter(assignmentStartDate) || startDate.isEqual(assignmentStartDate)) && + startDate.isBefore(assignmentEndDate) && + !startDate.isBefore(assignmentStartDate) && + (!endDate.isAfter(assignmentEndDate) || endDate.isAfter(assignmentEndDate)); + } + ).collect(Collectors.toList()); + + assertEquals(2,list.size()); + PersonAddressHistoryJpaEntity last = Iterables.getLast(list); + assertEquals(1L,last.getUniqId()); + + } + + + + @Test + void testMultipleVCurrentTravelAllowanceDatesAreAfterCurrentDate() { + + + List vNewTravelAllowanceModels = new ArrayList<>(); + + VNewTravelAllowanceModel vNewTravelAllowanceModel=new VNewTravelAllowanceModel(); + vNewTravelAllowanceModel.setAssStartDat(LocalDate.of(2023, 9, 30)); + vNewTravelAllowanceModel.setAssignEndDate(LocalDate.of(2024, 5, 31)); + + VNewTravelAllowanceModel vNewTravelAllowanceModel1=new VNewTravelAllowanceModel(); + vNewTravelAllowanceModel1.setAssStartDat(LocalDate.of(2023, 12, 31)); + vNewTravelAllowanceModel1.setAssignEndDate(LocalDate.of(2024, 6, 30)); + + VNewTravelAllowanceModel vNewTravelAllowanceModel2=new VNewTravelAllowanceModel(); + vNewTravelAllowanceModel2.setAssStartDat(LocalDate.of(2024, 4, 1)); + vNewTravelAllowanceModel2.setAssignEndDate(LocalDate.of(2024, 5, 31)); + + vNewTravelAllowanceModels.add(vNewTravelAllowanceModel); + vNewTravelAllowanceModels.add(vNewTravelAllowanceModel1); + vNewTravelAllowanceModels.add(vNewTravelAllowanceModel2); + + + List assignmentsForTheCurrentYearUpToCurrentDay = getAssignmentsForTheCurrentYearUpToCurrentDay(vNewTravelAllowanceModels, + LocalDate.of(2023, 3, 28),2023); + + assertEquals(0,assignmentsForTheCurrentYearUpToCurrentDay.size()); + } + + + @Test + void testMultipleVCurrentTravelAllowanceDatesAreBeforeCurrentDateInExerciseYear() { + + + List vNewTravelAllowanceModels = new ArrayList<>(); + + VNewTravelAllowanceModel vNewTravelAllowanceModel=new VNewTravelAllowanceModel(); + vNewTravelAllowanceModel.setAssStartDat(LocalDate.of(2022, 9, 30)); + vNewTravelAllowanceModel.setAssignEndDate(LocalDate.of(2023, 5, 31)); + + VNewTravelAllowanceModel vNewTravelAllowanceModel1=new VNewTravelAllowanceModel(); + vNewTravelAllowanceModel1.setAssStartDat(LocalDate.of(2022, 12, 31)); + vNewTravelAllowanceModel1.setAssignEndDate(LocalDate.of(2023, 6, 30)); + + VNewTravelAllowanceModel vNewTravelAllowanceModel2=new VNewTravelAllowanceModel(); + vNewTravelAllowanceModel2.setAssStartDat(LocalDate.of(2023, 4, 1)); + vNewTravelAllowanceModel2.setAssignEndDate(LocalDate.of(2023, 5, 31)); + + vNewTravelAllowanceModels.add(vNewTravelAllowanceModel); + vNewTravelAllowanceModels.add(vNewTravelAllowanceModel1); + vNewTravelAllowanceModels.add(vNewTravelAllowanceModel2); + + + List assignmentsForTheCurrentYearUpToCurrentDay = getAssignmentsForTheCurrentYearUpToCurrentDay(vNewTravelAllowanceModels, + LocalDate.of(2023, 3, 28),2023); + + assertEquals(2,assignmentsForTheCurrentYearUpToCurrentDay.size()); + } + + + @Test + void testMultipleVCurrentTravelAllowanceDatesAreBeforeCurrentDateAndExerciseYearIsInvalid() { + + + List vNewTravelAllowanceModels = new ArrayList<>(); + + VNewTravelAllowanceModel vNewTravelAllowanceModel=new VNewTravelAllowanceModel(); + vNewTravelAllowanceModel.setAssStartDat(LocalDate.of(2022, 9, 30)); + vNewTravelAllowanceModel.setAssignEndDate(LocalDate.of(2022, 11, 30)); + + VNewTravelAllowanceModel vNewTravelAllowanceModel1=new VNewTravelAllowanceModel(); + vNewTravelAllowanceModel1.setAssStartDat(LocalDate.of(2022, 12, 1)); + vNewTravelAllowanceModel1.setAssignEndDate(LocalDate.of(2022, 12, 31)); + + + vNewTravelAllowanceModels.add(vNewTravelAllowanceModel); + vNewTravelAllowanceModels.add(vNewTravelAllowanceModel1); + + + List assignmentsForTheCurrentYearUpToCurrentDay = getAssignmentsForTheCurrentYearUpToCurrentDay(vNewTravelAllowanceModels, + LocalDate.of(2023, 3, 28),2023); + + assertEquals(0,assignmentsForTheCurrentYearUpToCurrentDay.size()); + } + + + + + @Test + void testMultipleDependencyDatesIsWithinAssignmentAndGetLatest2() { + + LocalDate assignmentStartDate = LocalDate.of(2018, 11, 16); + LocalDate assignmentEndDate = LocalDate.of(2023, 1, 31); + + + List personAddressJpaEntities = new ArrayList<>(); +//[ +// { +// "START_DATE": "2019-01-01", +// "END_DATE": "2023-01-31" +// } +//] + PersonAddressHistoryJpaEntity personAddressHistoryJpaEntity=new PersonAddressHistoryJpaEntity(); + personAddressHistoryJpaEntity.setStartDate(LocalDate.of(2019, 1, 1)); + personAddressHistoryJpaEntity.setEndDate(LocalDate.of(2023, 1, 31)); + personAddressHistoryJpaEntity.setUniqId(2L); + + + //[ + // { + // "START_DATE": "2023-02-01", + // "END_DATE": "9999-12-31" + // } + //] + PersonAddressHistoryJpaEntity personAddressHistoryJpaEntity11=new PersonAddressHistoryJpaEntity(); + personAddressHistoryJpaEntity11.setStartDate(LocalDate.of(2023, 02, 01)); + personAddressHistoryJpaEntity11.setEndDate(LocalDate.of(9999, 12, 31)); + personAddressHistoryJpaEntity11.setUniqId(1L); + + + personAddressJpaEntities.add(personAddressHistoryJpaEntity); + personAddressJpaEntities.add(personAddressHistoryJpaEntity11); + + + List list = personAddressJpaEntities.stream() + .sorted(Comparator.comparing(PersonAddressHistoryJpaEntity::getStartDate)) + .filter( + personAddressHistoryJpaEntity1 -> { + + LocalDate startDate = personAddressHistoryJpaEntity1.getStartDate(); + LocalDate endDate = personAddressHistoryJpaEntity1.getEndDate(); + + + return (startDate.isAfter(assignmentStartDate) || startDate.isEqual(assignmentStartDate)) && + startDate.isBefore(assignmentEndDate) && + !startDate.isBefore(assignmentStartDate) && + (!endDate.isAfter(assignmentEndDate) || endDate.isAfter(assignmentEndDate)); + } + ).collect(Collectors.toList()); + + assertEquals(1,list.size()); + PersonAddressHistoryJpaEntity last = Iterables.getLast(list); + assertEquals(2L,last.getUniqId()); + + } +} \ No newline at end of file diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/skyscanner/FlightOfReferenceTest.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/skyscanner/FlightOfReferenceTest.java new file mode 100644 index 0000000..560f648 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/skyscanner/FlightOfReferenceTest.java @@ -0,0 +1,57 @@ +package eu.europa.eeas.erights.common.service.provider.skyscanner; + +import eu.europa.eeas.erights.common.service.model.ws.skyscanner.FlightsLivePricesResponse; +import eu.europa.eeas.erights.common.service.model.ws.skyscanner.Itinerary; +import eu.europa.eeas.erights.common.service.provider.tud.skyscanner.SkyScannerHelper; + +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import org.apache.commons.io.FileUtils; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +@Disabled +class FlightOfReferenceTest { + + private final SkyScannerHelper skyScannerHelper = new SkyScannerHelper(); + private static final String RES_PATH = "src/test/resources/skyscanner/"; + + @Test + void testItinerarySelection() throws Exception { + // given + assertTrue(true); + + File busiJson = new File(RES_PATH + "test_10may2022/busi.json"); + File peconJson = new File(RES_PATH + "test_10may2022/pecon.json"); + + String rawBusi = FileUtils.readFileToString(busiJson, Charset.defaultCharset()); + String rawPecon = FileUtils.readFileToString(peconJson, Charset.defaultCharset()); + + FlightsLivePricesResponse busiFlights = skyScannerHelper.parseResponse(rawBusi); + FlightsLivePricesResponse peconFlights = skyScannerHelper.parseResponse(rawPecon); + + + List allItineraries = new ArrayList<>(); + allItineraries.addAll(busiFlights.getItineraries()); + allItineraries.addAll(peconFlights.getItineraries()); + + Optional optRefIti = skyScannerHelper.getItineraryOfReference(allItineraries); + + assertTrue(optRefIti.isPresent()); + + if (optRefIti.isPresent()) { + Itinerary refIti = optRefIti.get(); + System.out.println("Iti. of Reference ID: " + refIti.getId()); + } + + System.out.println("DONE."); + System.out.println("DONE."); + } + +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/skyscanner/SkyScannerSessionIT.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/skyscanner/SkyScannerSessionIT.java new file mode 100644 index 0000000..d6d80a2 --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/skyscanner/SkyScannerSessionIT.java @@ -0,0 +1,192 @@ +package eu.europa.eeas.erights.common.service.provider.skyscanner; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Optional; + +import eu.europa.eeas.erights.common.service.provider.tud.skyscanner.SkyScannerHelper; +import eu.europa.eeas.erights.common.tools.entitlements.EntitlementMaxCatCode; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.ConfigDataApplicationContextInitializer; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; + +import eu.europa.eeas.ananke.core.audit.AuditManager; +import eu.europa.eeas.ananke.core.audit.Auditable; +import eu.europa.eeas.ananke.core.audit.actor.AuditActor; +import eu.europa.eeas.ananke.core.audit.provider.data.jpa.listener.AuditJpaEntityListener; +import eu.europa.eeas.ananke.core.locale.Localization; +import eu.europa.eeas.erights.common.boot.configuration.skyscanner.SkyscannerWSConfiguration; +import eu.europa.eeas.erights.common.data.jpa.DatabaseConfiguration; +import eu.europa.eeas.erights.common.data.jpa.entity.tud.RatesTUDJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.tud.RatesTUDJpaRepository; +import eu.europa.eeas.erights.common.service.data.AbstractServiceProviderUTBase; +import eu.europa.eeas.erights.common.service.data.configuration.SkyScannerTestConfig; +import eu.europa.eeas.erights.common.service.model.ws.skyscanner.Itinerary; +import eu.europa.eeas.erights.common.service.provider.tud.TUDRatesWSServiceProvider; + +@SpringBootTest(classes = SkyScannerTestConfig.class) +@ContextConfiguration( classes = { DatabaseConfiguration.class, SkyscannerWSConfiguration.class }, + initializers = ConfigDataApplicationContextInitializer.class) +@Disabled("This is an IT to test SkyScanner service. Avoid this in builds.") +class SkyScannerSessionIT extends AbstractServiceProviderUTBase { + + @Autowired + private RatesTUDJpaRepository ratesTUDJpaRepository; + + @BeforeEach + void init() { + AuditJpaEntityListener.init(getAuditManager()); + } + + @Autowired + private TUDRatesWSServiceProvider tudRatesWSServiceProvider; + + @MockBean + private Localization localization; + + private final SkyScannerHelper skyScannerHelper = new SkyScannerHelper(); + + private static final boolean REGISTER = false; + private static final boolean UPDATE = true; + + @Test + void basicSessionTest() throws Exception { + + assertNotNull(ratesTUDJpaRepository); + assertNotNull(tudRatesWSServiceProvider); + + if (REGISTER) { + // Santiago Chile SCLA-sky + // Dhaka Bangladesh DACA-sky + // CL Chile + // ES Spain + // "ES", "MADR-sky", "VALE-sky", + // LocalDate.of(2022, 5, 15), + + tudRatesWSServiceProvider.registerItineraryRequest("CL", + "SCL", "MAD", + 999L, + EntitlementMaxCatCode.TUD_STAFF_MEMBER.name(), null, false, + LocalDate.of(2022, 6, 15), 1); + } + + if (UPDATE) { + for (int v=0; v<1; v++) { + System.out.println(String.format("Updating: Attempt %d / %d...", v+1, 15)); + tudRatesWSServiceProvider.updateIncompleteItineraryRequests(); + Thread.sleep(3000); + } + } + + System.out.println("DONE:" + (REGISTER ? " REGISTER " : "") + (UPDATE ? " UPDATE " : "")); + } + + @Test + void referenceItineraryTest() throws Exception { + + if (REGISTER || UPDATE) { + // Dont do this + return; + } + + Optional ref1 = skyScannerHelper.getItineraryOfReference(createItineraries(0, true)); + Optional ref2 = skyScannerHelper.getItineraryOfReference(createItineraries(0, false)); + + Optional ref3 = skyScannerHelper.getItineraryOfReference(createItineraries(1, true)); + Optional ref4 = skyScannerHelper.getItineraryOfReference(createItineraries(1, false)); + + Optional ref5 = skyScannerHelper.getItineraryOfReference(createItineraries(2, true)); + Optional ref6 = skyScannerHelper.getItineraryOfReference(createItineraries(2, false)); + + Optional ref7 = skyScannerHelper.getItineraryOfReference(createItineraries(3, true)); + Optional ref8 = skyScannerHelper.getItineraryOfReference(createItineraries(3, false)); + + Optional ref9 = skyScannerHelper.getItineraryOfReference(createItineraries(4, true)); + Optional ref10 = skyScannerHelper.getItineraryOfReference(createItineraries(4, false)); + + Optional ref11 = skyScannerHelper.getItineraryOfReference(createItineraries(5, true)); + Optional ref12 = skyScannerHelper.getItineraryOfReference(createItineraries(5, false)); + + Optional ref13 = skyScannerHelper.getItineraryOfReference(createItineraries(6, true)); + Optional ref14 = skyScannerHelper.getItineraryOfReference(createItineraries(6, false)); + + Optional ref15 = skyScannerHelper.getItineraryOfReference(createItineraries(50, true)); + Optional ref16 = skyScannerHelper.getItineraryOfReference(createItineraries(50, false)); + + assertFalse(ref1.isPresent()); + assertFalse(ref2.isPresent()); + + assertTrue(ref3.isPresent() && "1".equals(ref3.get().getId())); + assertTrue(ref4.isPresent() && "1".equals(ref4.get().getId())); + + assertTrue(ref5.isPresent() && "2".equals(ref5.get().getId())); + assertTrue(ref6.isPresent() && "2".equals(ref6.get().getId())); + + assertTrue(ref7.isPresent() && "3".equals(ref7.get().getId())); + assertTrue(ref8.isPresent() && "3".equals(ref8.get().getId())); + + assertTrue(ref9.isPresent() && "4".equals(ref9.get().getId())); + assertTrue(ref10.isPresent() && "4".equals(ref10.get().getId())); + + assertTrue(ref11.isPresent() && "4".equals(ref11.get().getId())); + assertTrue(ref12.isPresent() && "4".equals(ref12.get().getId())); + + assertTrue(ref13.isPresent() && "5".equals(ref13.get().getId())); + assertTrue(ref14.isPresent() && "5".equals(ref14.get().getId())); + + assertTrue(ref15.isPresent() && "40".equals(ref15.get().getId())); + assertTrue(ref16.isPresent() && "40".equals(ref16.get().getId())); + } + + private List createItineraries(int size, boolean sameValue) { + + List resp = new ArrayList<>(); + for (int i=0; i void manageCreate(Auditable auditable) { + System.out.println("Managing creation (-999) for: " + auditable.getClass().getSimpleName()); + RatesTUDJpaEntity entity = (RatesTUDJpaEntity) auditable; + entity.setCreationActor(new AuditActor(-999L, LocalDateTime.now())); + } + public void manageUpdate(Auditable auditable) { + System.out.println("Managing update (-888) for: " + auditable.getClass().getSimpleName()); + RatesTUDJpaEntity entity = (RatesTUDJpaEntity) auditable; + entity.setUpdatingActor(new AuditActor(-888L, LocalDateTime.now())); + } + + + }; + } + +} diff --git a/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/tud/TUDRatesProviderHelperTest.java b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/tud/TUDRatesProviderHelperTest.java new file mode 100644 index 0000000..b03476f --- /dev/null +++ b/e-rights-common/src/test/java/eu/europa/eeas/erights/common/service/provider/tud/TUDRatesProviderHelperTest.java @@ -0,0 +1,103 @@ +package eu.europa.eeas.erights.common.service.provider.tud; + +import eu.europa.eeas.erights.common.service.model.ws.skyscanner.Itinerary; +import org.junit.jupiter.api.Test; + +import java.math.BigDecimal; +import java.util.*; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class TUDRatesProviderHelperTest { + + @Test + void testEmptyItineraries() { + //given + List itineraries = new ArrayList<>(); + //when + Optional amount = TUDRatesProviderHelper.getHigherAmountOfTheAvailableFlights(itineraries); + //then + assertFalse(amount.isPresent()); + } + + @Test + void onlyOneItinerary() { + //given + List itineraries = getItineraries(1); + //when + Optional amount = TUDRatesProviderHelper.getHigherAmountOfTheAvailableFlights(itineraries); + //then + assertTrue(amount.isPresent()); + assertThat(amount.get(), equalTo(BigDecimal.valueOf(210.99))); + } + + @Test + void twoItineraries() { + //given + List itineraries = getItineraries(2); + //when + Optional amount = TUDRatesProviderHelper.getHigherAmountOfTheAvailableFlights(itineraries); + //then + assertTrue(amount.isPresent()); + assertThat(amount.get(), equalTo(BigDecimal.valueOf(300.99))); + } + + @Test + void threeItineraries() { + //given + List itineraries = getItineraries(3); + //when + Optional amount = TUDRatesProviderHelper.getHigherAmountOfTheAvailableFlights(itineraries); + //then + assertTrue(amount.isPresent()); + assertThat(amount.get(), equalTo(BigDecimal.valueOf(1200.99))); + } + + @Test + void fourItineraries() { + //given + List itineraries = getItineraries(4); + //when + Optional amount = TUDRatesProviderHelper.getHigherAmountOfTheAvailableFlights(itineraries); + //then + assertTrue(amount.isPresent()); + assertThat(amount.get(), equalTo(BigDecimal.valueOf(10200.99))); + } + + @Test + void fiveItineraries() { + //given + List itineraries = getItineraries(5); + //when + Optional amount = TUDRatesProviderHelper.getHigherAmountOfTheAvailableFlights(itineraries); + //then + assertTrue(amount.isPresent()); + assertThat(amount.get(), equalTo(BigDecimal.valueOf(10200.99))); + } + + @Test + void tenItineraries() { + //given + List itineraries = getItineraries(10); + //when + Optional amount = TUDRatesProviderHelper.getHigherAmountOfTheAvailableFlights(itineraries); + //then + assertTrue(amount.isPresent()); + assertThat(amount.get(), equalTo(BigDecimal.valueOf(100000200.99))); + } + + private List getItineraries(int numberOfItineraries) { + List itineraries = new ArrayList<>(); + int price = 10; + for(int i = 1; i <= numberOfItineraries; i++) { + Itinerary itinerary = new Itinerary(); + itinerary.setPrice(price + 0.99); + price *= 10; + itineraries.add(itinerary); + } + return itineraries; + } +} \ No newline at end of file diff --git a/e-rights-common/src/test/resources/application.yml b/e-rights-common/src/test/resources/application.yml new file mode 100644 index 0000000..75ecfec --- /dev/null +++ b/e-rights-common/src/test/resources/application.yml @@ -0,0 +1,113 @@ +data: + jpa: + data-source-jndi-name: jdbc/e-rights + enable-lazy-load-no-trans: true + dialect: eu.europa.eeas.ananke.core.data.provider.jpa.dialect.CustomOracle10gDialect + connection-provider: org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl + bytecode-provider: bytebuddy + packages-to-scan: + - eu.europa.eeas.erights.common.data.jpa.entity + connection-pool: + max-statements: 0 + timeout: + value: 60 + time-unit: SECONDS + idle-test-period: + value: 60 + time-unit: SECONDS + second-level-cache: + enable: false + + data-source: + jndi: jdbc/e-rights + # DEV Database + # driver-class-name: oracle.jdbc.OracleDriver + # url: jdbc:oracle:thin:@olrdev26.cc.cec.eu.int:1597/ERIGHTS_EEAS_01_D_TAF.cc.cec.eu.int + # username: ERIGHTS + # password: encrypted:E2gdnXzCq3HWZrfWhlXckVzagu33lI2o6sepsKkwAetpk7vcfvMLfGlGdz1+Sgwub+DbI+nGzRU/s6a22DDsLH3B59RyZxkHmwCLgtUp6DXYaAmkVZLDLOMbWInXF5+yet1HxCc9DDyVSmu39PAb52kF4JQZ7ZQK1Fir76xj39JkdrD/LdK5+KgqD/mzO0/4CPy6EfhsS2h8+0hRBZvGI71fQ3VH1CGIZTx9PRZc6CIX04PcjWzgjvldT3GVGw5Y9Ey5xO4FG0S6LFIfH0uYemKOQ2B3zd/8PRlydXafpc1/766SGPK3q3Qrbd9gVm+FckwzXHiiDAH6jescBo9l+dKnHpR5UpRGZzC2HSsh4kPkl8Wn8W4WGEAQyhYjx2BZlihGcOiSzyID+tAmXX+g0rpH5ZlEjCq2ghuOyVnOOI8He9/KTWuQ348uqgs+RTHIFww1EE6zvwk/+gfh3fWpx+17UUFLTJYfIuMJpSvwK84z5nh9oQyDOcMNQAVBegEhiO7/CKvrA6bf9W3ZumtsDl5M3Vlkm6Mxd6Pec7jlul6MFWSqXkANlHIEjZSPbSGpAepXFF2RURXM6tFzAJRkyFmKGW+YHEuFMu07fu9n6WdJyapc/pu+i4/VGjnJRu2Ht9oICxRQl6T5tbzpot8gnXzJgeO6rH3k9Ft1yLuxU0o=|YEYywiswA4RE8Y6/YCo2PIRUCzKfJiStjQqS4JPrq90hNS3ciLPib6wLg88Vsjd2VrY2DsgPYhrfz1o0nbgXfg== + # ------------------------------ + # TEST Database + driver-class-name: oracle.jdbc.OracleDriver + url: jdbc:oracle:thin:@OLRDEV13.CC.CEC.EU.INT:1597/ERIGHTS_EEAS_01_T_TAF.CC.CEC.EU.INT + username: ERIGHTS + password: encrypted:KqXrxoeQdSx1epV+0UTMndEXHnkJThGhCtHJv+VBOsXHz/WOeEe/wT7yZZi/q0OZ1vKethtT2DhwulQ3Csco2jCc+4W5sIP6lCPJMEFQ/qH3pr6UF0mc+xxI1tc9z/BysWXANxVj/NC1lS5PFTll7Z90WDnEVrYaWX9Za1FdDTuEsuNsz8y3S7YYHVNc7BEHQK6i4ZeAZyey8NgGmo/ZEcE/kDu7N8cySlXsk9fwzQTuJpKMqhujTk/pBxBiW92pfHmuxYOPuhJWpTNdIfllRQtuo9xMZwax1w8N+tA8wnI9mKfVCDG3uniu44/416B2XDQx1NssmNFmh+PfB0QdOD/3nhnt/8EQI3IBUCu0EHvEAh171MTrJ457CKhO4euXxB+1ceYXBKr2qmwQGxifUodWCBdM6jFqZJr8zG5vSanP4Z2zwXsJBV0RALeWRug+wPyFXgBuqpbQdFncrwB1QiAF2uasUAfdd2M0Ue0OuFGYSjM4olBo5awinRVMDHYyWFCAXV2PbB+OHAWcfpnHWSbHkpJIiORtLVKVJkjDu5O3SLbOADO4l1k/vc/CnFbvELHU9PSBWFuPjFxuaOWx6US28NCtlZajJc6v81R3mRH6gFLreeNvsIsMwk8eY0QDscHVPlFl21VplNdmSXzaot92OgnyIvrkaeDIPaZv6As=|OOKV/3EvgnUnUv5JdGCSAMS4NuuDILh1xVwGZHwkXrPFO41xTRpE/tcQpOGNDktQPEiUAqvLzAQJ5jOJWgnIPQ== + + +application: + context-path: /e-rights + name: e-rights + full-name: e-RIGHTS + version: 2.8.0 + +base: + mapping: + bean: + enable: true + auto-mapping: false + class-map-builder-packages-to-scan: + - eu.europa.eeas.erights.api.http.rest.mapping.classmapbuilder + - eu.europa.eeas.erights.service.data.mapping.classmapbuilder + jaxb: + enable: false + json: + enable: true + inclusions: + - NON_EMPTY + serialization-features: + WRITE_DATES_AS_TIMESTAMPS: false + deserialization-features: + FAIL_ON_UNKNOWN_PROPERTIES: false + validation: + enable-entity-validation: true + +spring: + main: + allow-bean-definition-overriding: true + +state-machine: + persistent-storage: + type: DATABASE + +user-management: + user-additional-data-plugin: + provider-type: PERSON + user-preferences-plugin: + provider-type: JPA + +locale: + api: + http: + enable-rest-apis: true + skip-localization-header-for-urls: + - /ananke/web/* + - /webjars/* + - /static/* + - '*.do' + default-language: en + default-country: GB + default-zone-id: Europe/Brussels + supported-locales: + - en-GB + +enhanced-language-bundle: + language-bundles-data: + - base-name: messages.e-rights + main: true + - base-name: ananke.messages.core + - base-name: ananke.messages.on-demand.act-on-behalf + - base-name: ananke.messages.on-demand.breadcrumbs + agents: + - type: CLASS_PATH_RESOURCE + class-path-resource: + types: + - YAML + enable-rest-apis: true + +################# +# Skyscanner WS # +################# + +skyscanner: + create-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/create + poll-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/poll/%s + api-key: encrypted:0vVXCvl5kdwkak+nHnTQmM2rukrmLlbR8lQTe2wTHY1tafxhnqmbPR5SJzDM56XfHqnlPhFmyYNTF3GlFu1kZzfmseymgoPvX4R06CoMYxIJyQ0pVLhG3G0s7NnIJPdFUkKbjo2B2EsSwlhSihZ0+oZRHBb79xe10Fwye/8O2aF+YU1RCn42ns4E9hBZwnFDPtYnVXGYZ/vbfn0mHgq9tpLBAJlfRBVbgwVoi5dDoMoMnUHd2/FuWCj4PsA1GaiNzTP2mqyFv1ABd/Mg0Aw1gTfsiMIo10/ehNVm+nPUksHVoxLP7d704YXmIB9PZkpREovgTzkPumVpXktHZxEHgLeJxoJMa6u073XjAjxdWg2mHENEzxInT8UMrp8Gg9rqbhEQPLQy0lMYO9O9l38IVeZvplV6MiA+8Xq/aoSWxobbjmhIjk91fYK3S0cTVTDE1x3wm0UkoSLH9OzOXrRsXiqdc2Q/XrHac1g2M9wxA8FPVXNFHykKBztC1NLq9TluTTsbIZwoeCH09DajaQwZL9T4cYJ4H97y6vf5yJ7voQjJXEjKMwWd8DmTyOz3SQ2DMvxm8yBj5hCJfkAkuR2lbSElX0cUA2kceYaVdQZg9uAExr7LtV4cTedL24BFVqyit0oFhfEFytocw1+3HXfu6T0eGS0NVFD2uic0NUvdOMI=|ef5SrkI5p/3i4vnVXqhuDVt26g3belo1esWoDb7uPyzzqThW1b5IqIZeLTVnpElJzEFvfJayQzHD7cWjHwVMaA== diff --git a/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/MovementFileRepositoryJpaIT-cleanup.sql b/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/MovementFileRepositoryJpaIT-cleanup.sql new file mode 100644 index 0000000..544c9db --- /dev/null +++ b/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/MovementFileRepositoryJpaIT-cleanup.sql @@ -0,0 +1 @@ +DELETE FROM MOVEMENT_FILES WHERE ID = -1; \ No newline at end of file diff --git a/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/MovementFileRepositoryJpaIT-data.sql b/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/MovementFileRepositoryJpaIT-data.sql new file mode 100644 index 0000000..8a71672 --- /dev/null +++ b/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/MovementFileRepositoryJpaIT-data.sql @@ -0,0 +1 @@ +INSERT INTO MOVEMENT_FILES(ID, FILE_ID, CONTEXT_ID, MOVEMENT_TYPE_ID, YEAR) VALUES (-1,'MovementFileEntityRepositoryJpaIntegrationTest', 1, 1, 2020); \ No newline at end of file diff --git a/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/VJobRepositoryJpaIT-cleanup.sql b/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/VJobRepositoryJpaIT-cleanup.sql new file mode 100644 index 0000000..ad2c928 --- /dev/null +++ b/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/VJobRepositoryJpaIT-cleanup.sql @@ -0,0 +1,3 @@ +DELETE FROM V_JOBS WHERE JOB_ID = -10; +DELETE FROM V_ORGANIZATIONS WHERE ORG_ID= -10; + diff --git a/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/VJobRepositoryJpaIT-data.sql b/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/VJobRepositoryJpaIT-data.sql new file mode 100644 index 0000000..b22b55d --- /dev/null +++ b/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/VJobRepositoryJpaIT-data.sql @@ -0,0 +1,5 @@ +insert into v_organizations +values(-10,'EEAS','Belgiul','Bru',1,1,1,1,10,10,sysdate); + +insert into V_JOBS (job_id, org_id, statutory_link, job_type,job_status,job_title, job_name) +values (-10, -10, 'eRights', 'TEMP', 'OPEN', 'HR MANAGER', 'Recruiter'); \ No newline at end of file diff --git a/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/VPersonRepositoryJpaIT-cleanup.sql b/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/VPersonRepositoryJpaIT-cleanup.sql new file mode 100644 index 0000000..6ea2965 --- /dev/null +++ b/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/VPersonRepositoryJpaIT-cleanup.sql @@ -0,0 +1,4 @@ +DELETE FROM V_PERSONS WHERE PER_ID = -1; +DELETE FROM V_JOBS WHERE JOB_ID = -10; +DELETE FROM V_ORGANIZATIONS WHERE ORG_ID= -10; + diff --git a/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/VPersonRepositoryJpaIT-data.sql b/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/VPersonRepositoryJpaIT-data.sql new file mode 100644 index 0000000..1c39d9e --- /dev/null +++ b/e-rights-common/src/test/resources/eu/europa/eeas/erights/data/jpa/repository/VPersonRepositoryJpaIT-data.sql @@ -0,0 +1,10 @@ +insert into v_organizations +values(-10,'EEAS','Belgiul','Bru',1,1,1,1,10,10,sysdate); + + +insert into V_JOBS (job_id, org_id, statutory_link, job_type,job_status,job_title, job_name) +values (-10, -10, 'eRights', 'TEMP', 'OPEN', 'HR MANAGER', 'Recruiter'); + +insert into V_PERSONS (PER_ID, job_id, LAST_NAME, FIRST_NAME, GENDER, EMAIL, PLACE_OF_ORIGIN, PLACE_OF_RECRUITMENT,date_of_birth,org_id, created_at, created_by,updated_at, updated_by,FLAG_EASREFN) +values (-1,-10, 'eRights', 'eRights', 'M', 'test@gmail.com', null, null,sysdate,-10,sysdate,1,sysdate,1,0); + diff --git a/e-rights-common/src/test/resources/messages/e-rights_en_GB.properties b/e-rights-common/src/test/resources/messages/e-rights_en_GB.properties new file mode 100644 index 0000000..d0c37a9 --- /dev/null +++ b/e-rights-common/src/test/resources/messages/e-rights_en_GB.properties @@ -0,0 +1 @@ +test.label = TEST_EN_GB \ No newline at end of file diff --git a/e-rights-common/src/test/resources/messages/e-rights_fr_FR.properties b/e-rights-common/src/test/resources/messages/e-rights_fr_FR.properties new file mode 100644 index 0000000..0fbf86b --- /dev/null +++ b/e-rights-common/src/test/resources/messages/e-rights_fr_FR.properties @@ -0,0 +1 @@ +test.label = TEST_FR_FR \ No newline at end of file diff --git a/e-rights-common/src/test/resources/skyscanner/skyscanner_output_example.json b/e-rights-common/src/test/resources/skyscanner/skyscanner_output_example.json new file mode 100644 index 0000000..0ec1935 --- /dev/null +++ b/e-rights-common/src/test/resources/skyscanner/skyscanner_output_example.json @@ -0,0 +1,6069 @@ +{ + "SessionKey": "3039ebf8-5657-4215-8782-95a7ed33cc35-c2", + "Query": { + "Country": "ES", + "Currency": "EUR", + "Locale": "en-US", + "Adults": 1, + "Children": 0, + "Infants": 0, + "OriginPlace": "4854", + "DestinationPlace": "8162", + "OutboundDate": "2022-06-15", + "LocationSchema": "Default", + "CabinClass": "economy", + "GroupPricing": false + }, + "Status": "UpdatesComplete", + "Itineraries": [ + { + "OutboundLegId": "13870-2206151120--32221,-32222-1-17543-2206151630", + "PricingOptions": [ + { + "Agents": [ + 2369555 + ], + "QuoteAgeInMinutes": 65, + "Price": 417.09, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fedes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3756%7C13870%7C2022-06-15T11%3A20%7C13874%7C2022-06-15T12%3A45%7C85%7C-%7C-%7C-%3Bflight%7C-32222%7C8441%7C13874%7C2022-06-15T15%3A25%7C17543%7C2022-06-15T16%3A30%7C65%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D417.09%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJTUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCHN_x8HQAAAA%7C-4062691927347135660%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4251817 + ], + "QuoteAgeInMinutes": 65, + "Price": 417.72, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fveci%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3756%7C13870%7C2022-06-15T11%3A20%7C13874%7C2022-06-15T12%3A45%7C85%7C-%7C-%7C-%3Bflight%7C-32222%7C8441%7C13874%7C2022-06-15T15%3A25%7C17543%7C2022-06-15T16%3A30%7C65%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D417.72%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpS03OFGLmWJcjxcLR3smo0HBoyVQ2IyYFRgAmFA1DHQAAAA%7C-4062691927347135660%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 3503123 + ], + "QuoteAgeInMinutes": 65, + "Price": 422.71, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fopes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3756%7C13870%7C2022-06-15T11%3A20%7C13874%7C2022-06-15T12%3A45%7C85%7C-%7C-%7C-%3Bflight%7C-32222%7C8441%7C13874%7C2022-06-15T15%3A25%7C17543%7C2022-06-15T16%3A30%7C65%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D422.71%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJL0gtFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAPY_zWHQAAAA%7C-4062691927347135660%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 430.98, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3756%7C13870%7C2022-06-15T11%3A20%7C13874%7C2022-06-15T12%3A45%7C85%7C-%7C-%7C-%3Bflight%7C-32222%7C8441%7C13874%7C2022-06-15T15%3A25%7C17543%7C2022-06-15T16%3A30%7C65%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D430.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-4062691927347135660%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 456.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3756%7C13870%7C2022-06-15T11%3A20%7C13874%7C2022-06-15T12%3A45%7C85%7C-%7C-%7C-%3Bflight%7C-32222%7C8441%7C13874%7C2022-06-15T15%3A25%7C17543%7C2022-06-15T16%3A30%7C65%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D456.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-4062691927347135660%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151120--32221,-32222-1-17543-2206151630&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151125--32221,-32222-1-17543-2206152325", + "PricingOptions": [ + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 409.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3950%7C13870%7C2022-06-15T11%3A25%7C16628%7C2022-06-15T12%3A35%7C70%7C-%7C-%7C-%3Bflight%7C-32222%7C8395%7C16628%7C2022-06-15T22%3A15%7C17543%7C2022-06-15T23%3A25%7C70%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D409.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-2499521378464240388%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151125--32221,-32222-1-17543-2206152325&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151150--32222-1-17543-2206160955", + "PricingOptions": [ + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 981.98, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C426%7C13870%7C2022-06-15T11%3A50%7C9925%7C2022-06-15T12%3A55%7C65%7C-%7C-%7C-%3Bflight%7C-32222%7C8313%7C9925%7C2022-06-16T08%3A45%7C17543%7C2022-06-16T09%3A55%7C70%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32222%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D981.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-6872448679104126701%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151150--32222-1-17543-2206160955&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206152050--31685,-31915-1-17543-2206152345", + "PricingOptions": [ + { + "Agents": [ + 2185235 + ], + "QuoteAgeInMinutes": 1, + "Price": 62.17, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fctes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31685%7C3417%7C13870%7C2022-06-15T20%3A50%7C12404%7C2022-06-15T22%3A05%7C75%7C-%7C-%7C-%3Bflight%7C-31915%7C7210%7C12404%7C2022-06-15T23%3A00%7C17543%7C2022-06-15T23%3A45%7C45%7C-%7C-%7C-%26carriers%3D-31685%2C-31915%26operators%3D-31685%3B-31915%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D62.17%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLkktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAcJExoHQAAAA%7C8358369132896843096%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206152050--31685,-31915-1-17543-2206152345&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151505--32680-0-17543-2206151605", + "PricingOptions": [ + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 22.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4065%7C13870%7C2022-06-15T15%3A05%7C17543%7C2022-06-15T16%3A05%7C60%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D22.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C23570042117456029%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2185235 + ], + "QuoteAgeInMinutes": 1, + "Price": 23.29, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fctes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4065%7C13870%7C2022-06-15T15%3A05%7C17543%7C2022-06-15T16%3A05%7C60%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D23.29%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLkktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAcJExoHQAAAA%7C23570042117456029%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2388174 + ], + "QuoteAgeInMinutes": 779, + "Price": 30.22, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Felin%2F1%2F13870.17543.2022-06-15%2Fair%2Fairli%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4065%7C13870%7C2022-06-15T15%3A05%7C17543%7C2022-06-15T16%3A05%7C60%7CZWON5L%7CZ%7CTURISTA%2BLITE%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D30.22%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJzcnME2LmWJcjxcLR3smo0HBoyVQ2IyYFRgANcin1HQAAAA%7C-3985272937718567509%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-26T20%3A40%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 31.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4065%7C13870%7C2022-06-15T15%3A05%7C17543%7C2022-06-15T16%3A05%7C60%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D31.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C23570042117456029%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4033043 + ], + "QuoteAgeInMinutes": 1, + "Price": 34.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Ftfes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4065%7C13870%7C2022-06-15T15%3A05%7C17543%7C2022-06-15T16%3A05%7C60%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D34.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpSUstFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDoTFtYHQAAAA%7C23570042117456029%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 35.16, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4065%7C13870%7C2022-06-15T15%3A05%7C17543%7C2022-06-15T16%3A05%7C60%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D35.16%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C23570042117456029%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4251817 + ], + "QuoteAgeInMinutes": 65, + "Price": 36.22, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fveci%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4065%7C13870%7C2022-06-15T15%3A05%7C17543%7C2022-06-15T16%3A05%7C60%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D36.22%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpS03OFGLmWJcjxcLR3smo0HBoyVQ2IyYFRgAmFA1DHQAAAA%7C23570042117456029%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 3934928 + ], + "QuoteAgeInMinutes": 1, + "Price": 39.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fskyp%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4065%7C13870%7C2022-06-15T15%3A05%7C17543%7C2022-06-15T16%3A05%7C60%7C-%7CZ%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D39.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpzq4sEGLmWJcjxcLR3smo0HBoyVQ2IyYFRgA_vsqUHQAAAA%7C-8598010961046384208%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 45.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4065%7C13870%7C2022-06-15T15%3A05%7C17543%7C2022-06-15T16%3A05%7C60%7CZWON5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D45.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C6271257357443163115%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2369555 + ], + "QuoteAgeInMinutes": 65, + "Price": 48.30, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fedes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4065%7C13870%7C2022-06-15T15%3A05%7C17543%7C2022-06-15T16%3A05%7C60%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D48.30%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJTUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCHN_x8HQAAAA%7C23570042117456029%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3503123 + ], + "QuoteAgeInMinutes": 65, + "Price": 63.51, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fopes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4065%7C13870%7C2022-06-15T15%3A05%7C17543%7C2022-06-15T16%3A05%7C60%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D63.51%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJL0gtFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAPY_zWHQAAAA%7C23570042117456029%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 69.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4065%7C13870%7C2022-06-15T15%3A05%7C17543%7C2022-06-15T16%3A05%7C60%7CZWON5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D69.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C6271257357443163115%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151505--32680-0-17543-2206151605&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151120--32221,-32222-2-17543-2206151630", + "PricingOptions": [ + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 339.98, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3914%7C13870%7C2022-06-15T11%3A20%7C15434%7C2022-06-15T12%3A45%7C85%7C-%7C-%7C-%3Bflight%7C-32222%7C8480%7C15434%7C2022-06-15T13%3A55%7C13874%7C2022-06-15T14%3A40%7C45%7C-%7C-%7C-%3Bflight%7C-32222%7C8441%7C13874%7C2022-06-15T15%3A25%7C17543%7C2022-06-15T16%3A30%7C65%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D339.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C8523562947111380919%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 356.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3914%7C13870%7C2022-06-15T11%3A20%7C15434%7C2022-06-15T12%3A45%7C85%7C-%7C-%7C-%3Bflight%7C-32222%7C8480%7C15434%7C2022-06-15T13%3A55%7C13874%7C2022-06-15T14%3A40%7C45%7C-%7C-%7C-%3Bflight%7C-32222%7C8441%7C13874%7C2022-06-15T15%3A25%7C17543%7C2022-06-15T16%3A30%7C65%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D356.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C8523562947111380919%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151120--32221,-32222-2-17543-2206151630&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206152020--32222-0-17543-2206152125", + "PricingOptions": [ + { + "Agents": [ + 2807314 + ], + "QuoteAgeInMinutes": 65, + "Price": 108.22, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fiber%2F1%2F13870.17543.2022-06-15%2Fair%2Fairli%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8878%7C13870%7C2022-06-15T20%3A20%7C17543%7C2022-06-15T21%3A25%7C65%7CSZNOB4%7CS%7CTBAESES%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D108.22%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJTEotEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBb2F8MHQAAAA%7C7193093043323617812%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 4251817 + ], + "QuoteAgeInMinutes": 65, + "Price": 114.71, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fveci%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8878%7C13870%7C2022-06-15T20%3A20%7C17543%7C2022-06-15T21%3A25%7C65%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D114.71%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpS03OFGLmWJcjxcLR3smo0HBoyVQ2IyYFRgAmFA1DHQAAAA%7C5884656174477589618%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 2369555 + ], + "QuoteAgeInMinutes": 65, + "Price": 115.66, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fedes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8878%7C13870%7C2022-06-15T20%3A20%7C17543%7C2022-06-15T21%3A25%7C65%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D115.66%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJTUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCHN_x8HQAAAA%7C5884656174477589618%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4033043 + ], + "QuoteAgeInMinutes": 1, + "Price": 116.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Ftfes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8878%7C13870%7C2022-06-15T20%3A20%7C17543%7C2022-06-15T21%3A25%7C65%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D116.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpSUstFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDoTFtYHQAAAA%7C5884656174477589618%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 118.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8878%7C13870%7C2022-06-15T20%3A20%7C17543%7C2022-06-15T21%3A25%7C65%7C-%7CS%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D118.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C3075216272047288181%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3503123 + ], + "QuoteAgeInMinutes": 65, + "Price": 128.41, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fopes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8878%7C13870%7C2022-06-15T20%3A20%7C17543%7C2022-06-15T21%3A25%7C65%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D128.41%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJL0gtFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAPY_zWHQAAAA%7C5884656174477589618%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2185235 + ], + "QuoteAgeInMinutes": 1, + "Price": 129.41, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fctes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8878%7C13870%7C2022-06-15T20%3A20%7C17543%7C2022-06-15T21%3A25%7C65%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D129.41%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLkktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAcJExoHQAAAA%7C5884656174477589618%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 131.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8878%7C13870%7C2022-06-15T20%3A20%7C17543%7C2022-06-15T21%3A25%7C65%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D131.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C5884656174477589618%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 135.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8878%7C13870%7C2022-06-15T20%3A20%7C17543%7C2022-06-15T21%3A25%7C65%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D135.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C5884656174477589618%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3934928 + ], + "QuoteAgeInMinutes": 1, + "Price": 136.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fskyp%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8878%7C13870%7C2022-06-15T20%3A20%7C17543%7C2022-06-15T21%3A25%7C65%7CSZNOB4%7CS%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D136.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpzq4sEGLmWJcjxcLR3smo0HBoyVQ2IyYFRgA_vsqUHQAAAA%7C8719629058202632030%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 142.67, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8878%7C13870%7C2022-06-15T20%3A20%7C17543%7C2022-06-15T21%3A25%7C65%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D142.67%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C5884656174477589618%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 147.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8878%7C13870%7C2022-06-15T20%3A20%7C17543%7C2022-06-15T21%3A25%7C65%7C-%7CS%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D147.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C3075216272047288181%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206152020--32222-0-17543-2206152125&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206150745--32222-0-17543-2206150850", + "PricingOptions": [ + { + "Agents": [ + 2807314 + ], + "QuoteAgeInMinutes": 65, + "Price": 30.22, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fiber%2F1%2F13870.17543.2022-06-15%2Fair%2Fairli%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8872%7C13870%7C2022-06-15T07%3A45%7C17543%7C2022-06-15T08%3A50%7C65%7CAONOB4%7CA%7CTBAESES%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D30.22%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJTEotEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBb2F8MHQAAAA%7C-8505405754290613754%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 34.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8872%7C13870%7C2022-06-15T07%3A45%7C17543%7C2022-06-15T08%3A50%7C65%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D34.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C61181285778377860%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2185235 + ], + "QuoteAgeInMinutes": 1, + "Price": 35.77, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fctes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8872%7C13870%7C2022-06-15T07%3A45%7C17543%7C2022-06-15T08%3A50%7C65%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D35.77%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLkktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAcJExoHQAAAA%7C61181285778377860%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4251817 + ], + "QuoteAgeInMinutes": 65, + "Price": 36.22, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fveci%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8872%7C13870%7C2022-06-15T07%3A45%7C17543%7C2022-06-15T08%3A50%7C65%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D36.22%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpS03OFGLmWJcjxcLR3smo0HBoyVQ2IyYFRgAmFA1DHQAAAA%7C61181285778377860%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 4033043 + ], + "QuoteAgeInMinutes": 1, + "Price": 37.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Ftfes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8872%7C13870%7C2022-06-15T07%3A45%7C17543%7C2022-06-15T08%3A50%7C65%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D37.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpSUstFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDoTFtYHQAAAA%7C61181285778377860%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 38.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8872%7C13870%7C2022-06-15T07%3A45%7C17543%7C2022-06-15T08%3A50%7C65%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D38.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C61181285778377860%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 41.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8872%7C13870%7C2022-06-15T07%3A45%7C17543%7C2022-06-15T08%3A50%7C65%7C-%7CA%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D41.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C-2538633063383278787%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2369555 + ], + "QuoteAgeInMinutes": 65, + "Price": 43.40, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fedes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8872%7C13870%7C2022-06-15T07%3A45%7C17543%7C2022-06-15T08%3A50%7C65%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D43.40%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJTUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCHN_x8HQAAAA%7C61181285778377860%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 49.34, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8872%7C13870%7C2022-06-15T07%3A45%7C17543%7C2022-06-15T08%3A50%7C65%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D49.34%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C61181285778377860%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3934928 + ], + "QuoteAgeInMinutes": 1, + "Price": 54.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fskyp%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8872%7C13870%7C2022-06-15T07%3A45%7C17543%7C2022-06-15T08%3A50%7C65%7CAONOB4%7CA%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D54.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpzq4sEGLmWJcjxcLR3smo0HBoyVQ2IyYFRgA_vsqUHQAAAA%7C5149067830361915914%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3503123 + ], + "QuoteAgeInMinutes": 65, + "Price": 58.96, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fopes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8872%7C13870%7C2022-06-15T07%3A45%7C17543%7C2022-06-15T08%3A50%7C65%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D58.96%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJL0gtFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAPY_zWHQAAAA%7C61181285778377860%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 71.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8872%7C13870%7C2022-06-15T07%3A45%7C17543%7C2022-06-15T08%3A50%7C65%7C-%7CA%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D71.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C-2538633063383278787%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206150745--32222-0-17543-2206150850&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206152145--32680-1-17543-2206160800", + "PricingOptions": [ + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 32.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6049%7C13870%7C2022-06-15T21%3A45%7C15434%7C2022-06-15T23%3A05%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-16T07%3A05%7C17543%7C2022-06-16T08%3A00%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D32.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C-5964645943910656081%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2185235 + ], + "QuoteAgeInMinutes": 1, + "Price": 33.18, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fctes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6049%7C13870%7C2022-06-15T21%3A45%7C15434%7C2022-06-15T23%3A05%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-16T07%3A05%7C17543%7C2022-06-16T08%3A00%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D33.18%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLkktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAcJExoHQAAAA%7C-5964645943910656081%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 34.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6049%7C13870%7C2022-06-15T21%3A45%7C15434%7C2022-06-15T23%3A05%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-16T07%3A05%7C17543%7C2022-06-16T08%3A00%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D34.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-5964645943910656081%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 43.29, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6049%7C13870%7C2022-06-15T21%3A45%7C15434%7C2022-06-15T23%3A05%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-16T07%3A05%7C17543%7C2022-06-16T08%3A00%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D43.29%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-5964645943910656081%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4033043 + ], + "QuoteAgeInMinutes": 1, + "Price": 44.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Ftfes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6049%7C13870%7C2022-06-15T21%3A45%7C15434%7C2022-06-15T23%3A05%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-16T07%3A05%7C17543%7C2022-06-16T08%3A00%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D44.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpSUstFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDoTFtYHQAAAA%7C-5964645943910656081%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 2369555 + ], + "QuoteAgeInMinutes": 65, + "Price": 46.71, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fedes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6049%7C13870%7C2022-06-15T21%3A45%7C15434%7C2022-06-15T23%3A05%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-16T07%3A05%7C17543%7C2022-06-16T08%3A00%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D46.71%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJTUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCHN_x8HQAAAA%7C-5964645943910656081%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4251817 + ], + "QuoteAgeInMinutes": 65, + "Price": 50.18, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fveci%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6049%7C13870%7C2022-06-15T21%3A45%7C15434%7C2022-06-15T23%3A05%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-16T07%3A05%7C17543%7C2022-06-16T08%3A00%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D50.18%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpS03OFGLmWJcjxcLR3smo0HBoyVQ2IyYFRgAmFA1DHQAAAA%7C-5964645943910656081%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 54.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6049%7C13870%7C2022-06-15T21%3A45%7C15434%7C2022-06-15T23%3A05%7C80%7CZD7O0L%7CZ%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-16T07%3A05%7C17543%7C2022-06-16T08%3A00%7C55%7CZWON5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D54.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C-3780330117108550774%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3503123 + ], + "QuoteAgeInMinutes": 65, + "Price": 61.78, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fopes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6049%7C13870%7C2022-06-15T21%3A45%7C15434%7C2022-06-15T23%3A05%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-16T07%3A05%7C17543%7C2022-06-16T08%3A00%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D61.78%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJL0gtFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAPY_zWHQAAAA%7C-5964645943910656081%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3934928 + ], + "QuoteAgeInMinutes": 1, + "Price": 78.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fskyp%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6049%7C13870%7C2022-06-15T21%3A45%7C15434%7C2022-06-15T23%3A05%7C80%7C-%7CZ%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-16T07%3A05%7C17543%7C2022-06-16T08%3A00%7C55%7C-%7CZ%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D78.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpzq4sEGLmWJcjxcLR3smo0HBoyVQ2IyYFRgA_vsqUHQAAAA%7C-2721850866249397442%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 79.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6049%7C13870%7C2022-06-15T21%3A45%7C15434%7C2022-06-15T23%3A05%7C80%7CZD7O0L%7CZ%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-16T07%3A05%7C17543%7C2022-06-16T08%3A00%7C55%7CZWON5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D79.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C-3780330117108550774%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206152145--32680-1-17543-2206160800&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206152235--32221,-32222-1-17543-2206161320", + "PricingOptions": [ + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 483.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3916%7C13870%7C2022-06-15T22%3A35%7C15434%7C2022-06-15T23%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32222%7C8402%7C15434%7C2022-06-16T12%3A25%7C17543%7C2022-06-16T13%3A20%7C55%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D483.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-2796429513417179408%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 486.98, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3916%7C13870%7C2022-06-15T22%3A35%7C15434%7C2022-06-15T23%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32222%7C8402%7C15434%7C2022-06-16T12%3A25%7C17543%7C2022-06-16T13%3A20%7C55%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D486.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-2796429513417179408%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2369555 + ], + "QuoteAgeInMinutes": 65, + "Price": 500.98, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fedes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3916%7C13870%7C2022-06-15T22%3A35%7C15434%7C2022-06-15T23%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32222%7C8402%7C15434%7C2022-06-16T12%3A25%7C17543%7C2022-06-16T13%3A20%7C55%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D500.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJTUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCHN_x8HQAAAA%7C-2796429513417179408%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3503123 + ], + "QuoteAgeInMinutes": 65, + "Price": 505.74, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fopes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3916%7C13870%7C2022-06-15T22%3A35%7C15434%7C2022-06-15T23%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32222%7C8402%7C15434%7C2022-06-16T12%3A25%7C17543%7C2022-06-16T13%3A20%7C55%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D505.74%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJL0gtFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAPY_zWHQAAAA%7C-2796429513417179408%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206152235--32221,-32222-1-17543-2206161320&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151510--32680-2-17543-2206160800", + "PricingOptions": [ + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 116.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C7703%7C13870%7C2022-06-15T15%3A10%7C9772%7C2022-06-15T16%3A35%7C85%7CPDYO5L%7CP%7C-%3Bflight%7C-32680%7C6103%7C9772%7C2022-06-15T22%3A00%7C15434%7C2022-06-15T22%3A45%7C45%7CPDYO4L%7CP%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-16T07%3A05%7C17543%7C2022-06-16T08%3A00%7C55%7CZWON5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D116.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C-8068339899327604918%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4033043 + ], + "QuoteAgeInMinutes": 1, + "Price": 127.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Ftfes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C7703%7C13870%7C2022-06-15T15%3A10%7C9772%7C2022-06-15T16%3A35%7C85%7C-%7C-%7C-%3Bflight%7C-32680%7C6073%7C9772%7C2022-06-15T18%3A45%7C15434%7C2022-06-15T19%3A30%7C45%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-16T07%3A05%7C17543%7C2022-06-16T08%3A00%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D127.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpSUstFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDoTFtYHQAAAA%7C1408078696339514469%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 147.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C7703%7C13870%7C2022-06-15T15%3A10%7C9772%7C2022-06-15T16%3A35%7C85%7CPDYO5L%7CP%7C-%3Bflight%7C-32680%7C6103%7C9772%7C2022-06-15T22%3A00%7C15434%7C2022-06-15T22%3A45%7C45%7CPDYO4L%7CP%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-16T07%3A05%7C17543%7C2022-06-16T08%3A00%7C55%7CZWON5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D147.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C-8068339899327604918%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3934928 + ], + "QuoteAgeInMinutes": 1, + "Price": 177.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fskyp%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C7703%7C13870%7C2022-06-15T15%3A10%7C9772%7C2022-06-15T16%3A35%7C85%7CPDYO5L%7CP%7C-%3Bflight%7C-32680%7C6103%7C9772%7C2022-06-15T22%3A00%7C15434%7C2022-06-15T22%3A45%7C45%7CPDYO4L%7CP%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-16T07%3A05%7C17543%7C2022-06-16T08%3A00%7C55%7CZWON5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D177.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpzq4sEGLmWJcjxcLR3smo0HBoyVQ2IyYFRgA_vsqUHQAAAA%7C-8068339899327604918%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151510--32680-2-17543-2206160800&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151545--32222-1-17543-2206151935", + "PricingOptions": [ + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 484.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3912%7C13870%7C2022-06-15T15%3A45%7C15434%7C2022-06-15T17%3A10%7C85%7CYDN0B2%7CY%7C-%3Bflight%7C-32222%7C8400%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7CADN0B8%7CA%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D484.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C-4545556344196812796%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 486.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3912%7C13870%7C2022-06-15T15%3A45%7C15434%7C2022-06-15T17%3A10%7C85%7C-%7C-%7C-%3Bflight%7C-32222%7C8400%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D486.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C-8821167411443084789%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 505.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3912%7C13870%7C2022-06-15T15%3A45%7C15434%7C2022-06-15T17%3A10%7C85%7CYDN0B2%7CY%7C-%3Bflight%7C-32222%7C8400%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7CADN0B8%7CA%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D505.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C-4545556344196812796%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151545--32222-1-17543-2206151935&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151155--32221,-32222-2-17543-2206151935", + "PricingOptions": [ + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 180.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3808%7C13870%7C2022-06-15T11%3A55%7C12404%7C2022-06-15T13%3A10%7C75%7C-%7C-%7C-%3Bflight%7C-32222%7C8519%7C12404%7C2022-06-15T17%3A10%7C15434%7C2022-06-15T17%3A55%7C45%7C-%7C-%7C-%3Bflight%7C-32222%7C8400%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D180.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-5455064386305987927%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 183.46, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3808%7C13870%7C2022-06-15T11%3A55%7C12404%7C2022-06-15T13%3A10%7C75%7C-%7C-%7C-%3Bflight%7C-32222%7C8519%7C12404%7C2022-06-15T17%3A10%7C15434%7C2022-06-15T17%3A55%7C45%7C-%7C-%7C-%3Bflight%7C-32222%7C8400%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D183.46%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-5455064386305987927%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151155--32221,-32222-2-17543-2206151935&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151535--31915,-32680-1-17543-2206151935", + "PricingOptions": [ + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 41.94, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31915%7C2053%7C13870%7C2022-06-15T15%3A35%7C15434%7C2022-06-15T17%3A00%7C85%7C-%7C-%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-31915%2C-32680%26operators%3D-31915%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D41.94%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C2853218477147848973%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151535--31915,-32680-1-17543-2206151935&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206150705--32680-0-17543-2206150805", + "PricingOptions": [ + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 21.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4063%7C13870%7C2022-06-15T07%3A05%7C17543%7C2022-06-15T08%3A05%7C60%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D21.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C5645531268910424218%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 22.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4063%7C13870%7C2022-06-15T07%3A05%7C17543%7C2022-06-15T08%3A05%7C60%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D22.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C5645531268910424218%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2185235 + ], + "QuoteAgeInMinutes": 1, + "Price": 23.29, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fctes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4063%7C13870%7C2022-06-15T07%3A05%7C17543%7C2022-06-15T08%3A05%7C60%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D23.29%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLkktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAcJExoHQAAAA%7C5645531268910424218%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2388174 + ], + "QuoteAgeInMinutes": 779, + "Price": 30.22, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Felin%2F1%2F13870.17543.2022-06-15%2Fair%2Fairli%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4063%7C13870%7C2022-06-15T07%3A05%7C17543%7C2022-06-15T08%3A05%7C60%7CZWON5L%7CZ%7CTURISTA%2BLITE%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D30.22%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJzcnME2LmWJcjxcLR3smo0HBoyVQ2IyYFRgANcin1HQAAAA%7C-341371923143145911%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-26T20%3A40%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 4033043 + ], + "QuoteAgeInMinutes": 1, + "Price": 34.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Ftfes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4063%7C13870%7C2022-06-15T07%3A05%7C17543%7C2022-06-15T08%3A05%7C60%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D34.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpSUstFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDoTFtYHQAAAA%7C5645531268910424218%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 34.43, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4063%7C13870%7C2022-06-15T07%3A05%7C17543%7C2022-06-15T08%3A05%7C60%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D34.43%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C5645531268910424218%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4251817 + ], + "QuoteAgeInMinutes": 65, + "Price": 36.22, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fveci%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4063%7C13870%7C2022-06-15T07%3A05%7C17543%7C2022-06-15T08%3A05%7C60%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D36.22%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpS03OFGLmWJcjxcLR3smo0HBoyVQ2IyYFRgAmFA1DHQAAAA%7C5645531268910424218%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 2369555 + ], + "QuoteAgeInMinutes": 65, + "Price": 38.32, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fedes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4063%7C13870%7C2022-06-15T07%3A05%7C17543%7C2022-06-15T08%3A05%7C60%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D38.32%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJTUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCHN_x8HQAAAA%7C5645531268910424218%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3934928 + ], + "QuoteAgeInMinutes": 1, + "Price": 39.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fskyp%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4063%7C13870%7C2022-06-15T07%3A05%7C17543%7C2022-06-15T08%3A05%7C60%7C-%7CZ%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D39.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpzq4sEGLmWJcjxcLR3smo0HBoyVQ2IyYFRgA_vsqUHQAAAA%7C8552096636349187251%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 45.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4063%7C13870%7C2022-06-15T07%3A05%7C17543%7C2022-06-15T08%3A05%7C60%7CZWON5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D45.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C123224747463525119%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3503123 + ], + "QuoteAgeInMinutes": 65, + "Price": 53.88, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fopes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4063%7C13870%7C2022-06-15T07%3A05%7C17543%7C2022-06-15T08%3A05%7C60%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D53.88%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJL0gtFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAPY_zWHQAAAA%7C5645531268910424218%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 69.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4063%7C13870%7C2022-06-15T07%3A05%7C17543%7C2022-06-15T08%3A05%7C60%7CZWON5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D69.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C123224747463525119%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206150705--32680-0-17543-2206150805&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206150715--32221,-32222-2-17543-2206151240", + "PricingOptions": [ + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 147.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3918%7C13870%7C2022-06-15T07%3A15%7C15434%7C2022-06-15T08%3A40%7C85%7C-%7C-%7C-%3Bflight%7C-32222%7C8514%7C15434%7C2022-06-15T09%3A45%7C12404%7C2022-06-15T10%3A30%7C45%7C-%7C-%7C-%3Bflight%7C-32222%7C8431%7C12404%7C2022-06-15T11%3A50%7C17543%7C2022-06-15T12%3A40%7C50%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D147.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-7552115074608776813%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 150.46, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3918%7C13870%7C2022-06-15T07%3A15%7C15434%7C2022-06-15T08%3A40%7C85%7C-%7C-%7C-%3Bflight%7C-32222%7C8514%7C15434%7C2022-06-15T09%3A45%7C12404%7C2022-06-15T10%3A30%7C45%7C-%7C-%7C-%3Bflight%7C-32222%7C8431%7C12404%7C2022-06-15T11%3A50%7C17543%7C2022-06-15T12%3A40%7C50%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D150.46%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-7552115074608776813%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206150715--32221,-32222-2-17543-2206151240&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206150815--32680-1-17543-2206151135", + "PricingOptions": [ + { + "Agents": [ + 2185235 + ], + "QuoteAgeInMinutes": 1, + "Price": 73.75, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fctes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6031%7C13870%7C2022-06-15T08%3A15%7C15434%7C2022-06-15T09%3A35%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-15T10%3A40%7C17543%7C2022-06-15T11%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D73.75%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLkktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAcJExoHQAAAA%7C-3180658607257759251%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 73.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6031%7C13870%7C2022-06-15T08%3A15%7C15434%7C2022-06-15T09%3A35%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-15T10%3A40%7C17543%7C2022-06-15T11%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D73.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-3180658607257759251%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 74.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6031%7C13870%7C2022-06-15T08%3A15%7C15434%7C2022-06-15T09%3A35%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-15T10%3A40%7C17543%7C2022-06-15T11%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D74.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C-3180658607257759251%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4033043 + ], + "QuoteAgeInMinutes": 1, + "Price": 83.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Ftfes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6031%7C13870%7C2022-06-15T08%3A15%7C15434%7C2022-06-15T09%3A35%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-15T10%3A40%7C17543%7C2022-06-15T11%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D83.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpSUstFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDoTFtYHQAAAA%7C-3180658607257759251%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 85.45, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6031%7C13870%7C2022-06-15T08%3A15%7C15434%7C2022-06-15T09%3A35%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-15T10%3A40%7C17543%7C2022-06-15T11%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D85.45%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-3180658607257759251%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2388174 + ], + "QuoteAgeInMinutes": 779, + "Price": 86.18, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Felin%2F1%2F13870.17543.2022-06-15%2Fair%2Fairli%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6031%7C13870%7C2022-06-15T08%3A15%7C15434%7C2022-06-15T09%3A35%7C80%7CADYO4L%7CA%7CTURISTA%2BECONOMY%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-15T10%3A40%7C17543%7C2022-06-15T11%3A35%7C55%7CZDYO5L%7CZ%7CTURISTA%2BLITE%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D86.18%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJzcnME2LmWJcjxcLR3smo0HBoyVQ2IyYFRgANcin1HQAAAA%7C-6574837668456662155%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-26T20%3A40%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 2369555 + ], + "QuoteAgeInMinutes": 65, + "Price": 88.45, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fedes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6031%7C13870%7C2022-06-15T08%3A15%7C15434%7C2022-06-15T09%3A35%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-15T10%3A40%7C17543%7C2022-06-15T11%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D88.45%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJTUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCHN_x8HQAAAA%7C-3180658607257759251%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4251817 + ], + "QuoteAgeInMinutes": 65, + "Price": 92.18, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fveci%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6031%7C13870%7C2022-06-15T08%3A15%7C15434%7C2022-06-15T09%3A35%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-15T10%3A40%7C17543%7C2022-06-15T11%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D92.18%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpS03OFGLmWJcjxcLR3smo0HBoyVQ2IyYFRgAmFA1DHQAAAA%7C-3180658607257759251%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 95.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6031%7C13870%7C2022-06-15T08%3A15%7C15434%7C2022-06-15T09%3A35%7C80%7CADYO4L%7CA%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-15T10%3A40%7C17543%7C2022-06-15T11%3A35%7C55%7CZWON5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D95.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C5516318795432899213%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3503123 + ], + "QuoteAgeInMinutes": 65, + "Price": 102.32, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fopes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6031%7C13870%7C2022-06-15T08%3A15%7C15434%7C2022-06-15T09%3A35%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-15T10%3A40%7C17543%7C2022-06-15T11%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D102.32%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJL0gtFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAPY_zWHQAAAA%7C-3180658607257759251%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3934928 + ], + "QuoteAgeInMinutes": 1, + "Price": 108.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fskyp%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6031%7C13870%7C2022-06-15T08%3A15%7C15434%7C2022-06-15T09%3A35%7C80%7C-%7CA%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-15T10%3A40%7C17543%7C2022-06-15T11%3A35%7C55%7C-%7CZ%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D108.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpzq4sEGLmWJcjxcLR3smo0HBoyVQ2IyYFRgA_vsqUHQAAAA%7C5878361092519656325%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 118.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6031%7C13870%7C2022-06-15T08%3A15%7C15434%7C2022-06-15T09%3A35%7C80%7CADYO4L%7CA%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-15T10%3A40%7C17543%7C2022-06-15T11%3A35%7C55%7CZWON5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D118.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C5516318795432899213%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206150815--32680-1-17543-2206151135&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151710--32132-1-17543-2206152300", + "PricingOptions": [ + { + "Agents": [ + 3934928 + ], + "QuoteAgeInMinutes": 1, + "Price": 207.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fskyp%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32132%7C1704%7C13870%7C2022-06-15T17%3A10%7C9451%7C2022-06-15T19%3A50%7C160%7C-%7CL%7C-%3Bflight%7C-32132%7C1501%7C9451%7C2022-06-15T20%3A35%7C17543%7C2022-06-15T23%3A00%7C145%7C-%7CL%7C-%26carriers%3D-32132%26operators%3D-32132%3B-32131%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D207.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpzq4sEGLmWJcjxcLR3smo0HBoyVQ2IyYFRgA_vsqUHQAAAA%7C5623583886748206852%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151710--32132-1-17543-2206152300&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151550--32222-2-17543-2206152310", + "PricingOptions": [ + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 449.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3878%7C13870%7C2022-06-15T15%3A50%7C16142%7C2022-06-15T17%3A05%7C75%7CYDN0B2%7CY%7C-%3Bflight%7C-32222%7C8357%7C16142%7C2022-06-15T19%3A45%7C9925%7C2022-06-15T20%3A50%7C65%7CAJN0B4%7CA%7C-%3Bflight%7C-32222%7C8311%7C9925%7C2022-06-15T22%3A00%7C17543%7C2022-06-15T23%3A10%7C70%7CAJN0B4%7CA%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D449.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C8623668732325329948%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 471.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3878%7C13870%7C2022-06-15T15%3A50%7C16142%7C2022-06-15T17%3A05%7C75%7CYDN0B2%7CY%7C-%3Bflight%7C-32222%7C8357%7C16142%7C2022-06-15T19%3A45%7C9925%7C2022-06-15T20%3A50%7C65%7CAJN0B4%7CA%7C-%3Bflight%7C-32222%7C8311%7C9925%7C2022-06-15T22%3A00%7C17543%7C2022-06-15T23%3A10%7C70%7CAJN0B4%7CA%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D471.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C8623668732325329948%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151550--32222-2-17543-2206152310&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206150825--31915-1-17543-2206151405", + "PricingOptions": [ + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 22.98, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31915%7C5897%7C13870%7C2022-06-15T08%3A25%7C17109%7C2022-06-15T10%3A20%7C115%7C-%7C-%7C-%3Bflight%7C-31915%7C2259%7C17109%7C2022-06-15T12%3A05%7C17543%7C2022-06-15T14%3A05%7C120%7C-%7C-%7C-%26carriers%3D-31915%26operators%3D-31915%3B-31915%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D22.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-4074986735158088701%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206150825--31915-1-17543-2206151405&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151550--32221,-32222-2-17543-2206152310", + "PricingOptions": [ + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 447.98, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3878%7C13870%7C2022-06-15T15%3A50%7C16142%7C2022-06-15T17%3A05%7C75%7C-%7C-%7C-%3Bflight%7C-32222%7C8357%7C16142%7C2022-06-15T19%3A45%7C9925%7C2022-06-15T20%3A50%7C65%7C-%7C-%7C-%3Bflight%7C-32222%7C8311%7C9925%7C2022-06-15T22%3A00%7C17543%7C2022-06-15T23%3A10%7C70%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D447.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C362590881046318965%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 448.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3878%7C13870%7C2022-06-15T15%3A50%7C16142%7C2022-06-15T17%3A05%7C75%7C-%7C-%7C-%3Bflight%7C-32222%7C8357%7C16142%7C2022-06-15T19%3A45%7C9925%7C2022-06-15T20%3A50%7C65%7C-%7C-%7C-%3Bflight%7C-32222%7C8311%7C9925%7C2022-06-15T22%3A00%7C17543%7C2022-06-15T23%3A10%7C70%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D448.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C362590881046318965%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151550--32221,-32222-2-17543-2206152310&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151550--32221,-32222-1-17543-2206161630", + "PricingOptions": [ + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 414.98, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3796%7C13870%7C2022-06-15T15%3A50%7C13874%7C2022-06-15T17%3A20%7C90%7C-%7C-%7C-%3Bflight%7C-32222%7C8441%7C13874%7C2022-06-16T15%3A25%7C17543%7C2022-06-16T16%3A30%7C65%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D414.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-4888093042040377555%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 437.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3796%7C13870%7C2022-06-15T15%3A50%7C13874%7C2022-06-15T17%3A20%7C90%7C-%7C-%7C-%3Bflight%7C-32222%7C8441%7C13874%7C2022-06-16T15%3A25%7C17543%7C2022-06-16T16%3A30%7C65%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D437.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-4888093042040377555%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151550--32221,-32222-1-17543-2206161630&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206152210--31781-1-17543-2206162325", + "PricingOptions": [ + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 73.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31781%7C1029%7C13870%7C2022-06-15T22%3A10%7C13577%7C2022-06-15T22%3A30%7C80%7C-%7C-%7C-%3Bflight%7C-31781%7C1090%7C13577%7C2022-06-16T20%3A20%7C17543%7C2022-06-16T23%3A25%7C125%7C-%7C-%7C-%26carriers%3D-31781%26operators%3D-31953%3B-31678%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D73.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C8520160507752574737%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 82.03, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31781%7C1029%7C13870%7C2022-06-15T22%3A10%7C13577%7C2022-06-15T22%3A30%7C80%7C-%7C-%7C-%3Bflight%7C-31781%7C1090%7C13577%7C2022-06-16T20%3A20%7C17543%7C2022-06-16T23%3A25%7C125%7C-%7C-%7C-%26carriers%3D-31781%26operators%3D-31953%3B-31678%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D82.03%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C8520160507752574737%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206152210--31781-1-17543-2206162325&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151435--32680-1-17543-2206151935", + "PricingOptions": [ + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 73.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6067%7C13870%7C2022-06-15T14%3A35%7C15434%7C2022-06-15T15%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D73.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-7087187297235661839%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 74.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6067%7C13870%7C2022-06-15T14%3A35%7C15434%7C2022-06-15T15%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D74.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C-7087187297235661839%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 85.45, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6067%7C13870%7C2022-06-15T14%3A35%7C15434%7C2022-06-15T15%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D85.45%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-7087187297235661839%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2388174 + ], + "QuoteAgeInMinutes": 779, + "Price": 86.18, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Felin%2F1%2F13870.17543.2022-06-15%2Fair%2Fairli%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6067%7C13870%7C2022-06-15T14%3A35%7C15434%7C2022-06-15T15%3A55%7C80%7CADYO4L%7CA%7CTURISTA%2BECONOMY%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7CZDYO5L%7CZ%7CTURISTA%2BLITE%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D86.18%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJzcnME2LmWJcjxcLR3smo0HBoyVQ2IyYFRgANcin1HQAAAA%7C3129514082310205269%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-26T20%3A40%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 2369555 + ], + "QuoteAgeInMinutes": 65, + "Price": 88.45, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fedes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6067%7C13870%7C2022-06-15T14%3A35%7C15434%7C2022-06-15T15%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D88.45%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJTUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCHN_x8HQAAAA%7C-7087187297235661839%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4033043 + ], + "QuoteAgeInMinutes": 1, + "Price": 89.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Ftfes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6067%7C13870%7C2022-06-15T14%3A35%7C15434%7C2022-06-15T15%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D89.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpSUstFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDoTFtYHQAAAA%7C-7087187297235661839%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 4251817 + ], + "QuoteAgeInMinutes": 65, + "Price": 92.18, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fveci%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6067%7C13870%7C2022-06-15T14%3A35%7C15434%7C2022-06-15T15%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D92.18%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpS03OFGLmWJcjxcLR3smo0HBoyVQ2IyYFRgAmFA1DHQAAAA%7C-7087187297235661839%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 95.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6067%7C13870%7C2022-06-15T14%3A35%7C15434%7C2022-06-15T15%3A55%7C80%7CADYO4L%7CA%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7CZWON5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D95.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C631627980140959342%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3503123 + ], + "QuoteAgeInMinutes": 65, + "Price": 102.32, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fopes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6067%7C13870%7C2022-06-15T14%3A35%7C15434%7C2022-06-15T15%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D102.32%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJL0gtFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAPY_zWHQAAAA%7C-7087187297235661839%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 118.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6067%7C13870%7C2022-06-15T14%3A35%7C15434%7C2022-06-15T15%3A55%7C80%7CADYO4L%7CA%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7CZWON5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D118.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C631627980140959342%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3934928 + ], + "QuoteAgeInMinutes": 1, + "Price": 127.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fskyp%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6067%7C13870%7C2022-06-15T14%3A35%7C15434%7C2022-06-15T15%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D127.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpzq4sEGLmWJcjxcLR3smo0HBoyVQ2IyYFRgA_vsqUHQAAAA%7C-7087187297235661839%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151435--32680-1-17543-2206151935&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206150725--32222-2-17543-2206151610", + "PricingOptions": [ + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 200.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8858%7C13870%7C2022-06-15T07%3A25%7C9409%7C2022-06-15T08%3A35%7C70%7CQJN0B4%7CQ%7C-%3Bflight%7C-32222%7C8450%7C9409%7C2022-06-15T13%3A50%7C12404%7C2022-06-15T14%3A35%7C45%7CQJN0B4%7CQ%7C-%3Bflight%7C-32222%7C8433%7C12404%7C2022-06-15T15%3A20%7C17543%7C2022-06-15T16%3A10%7C50%7CADN0B8%7CA%7C-%26carriers%3D-32222%26operators%3D-32639%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D200.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C-3711404248984182594%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 223.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8858%7C13870%7C2022-06-15T07%3A25%7C9409%7C2022-06-15T08%3A35%7C70%7CQJN0B4%7CQ%7C-%3Bflight%7C-32222%7C8450%7C9409%7C2022-06-15T13%3A50%7C12404%7C2022-06-15T14%3A35%7C45%7CQJN0B4%7CQ%7C-%3Bflight%7C-32222%7C8433%7C12404%7C2022-06-15T15%3A20%7C17543%7C2022-06-15T16%3A10%7C50%7CADN0B8%7CA%7C-%26carriers%3D-32222%26operators%3D-32639%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D223.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C-3711404248984182594%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206150725--32222-2-17543-2206151610&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151600--32222-0-17543-2206151700", + "PricingOptions": [ + { + "Agents": [ + 2807314 + ], + "QuoteAgeInMinutes": 65, + "Price": 108.22, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fiber%2F1%2F13870.17543.2022-06-15%2Fair%2Fairli%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8876%7C13870%7C2022-06-15T16%3A00%7C17543%7C2022-06-15T17%3A00%7C60%7CSZNOB4%7CS%7CTBAESES%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D108.22%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJTEotEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBb2F8MHQAAAA%7C8388226710980449297%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 4251817 + ], + "QuoteAgeInMinutes": 65, + "Price": 114.71, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fveci%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8876%7C13870%7C2022-06-15T16%3A00%7C17543%7C2022-06-15T17%3A00%7C60%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D114.71%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpS03OFGLmWJcjxcLR3smo0HBoyVQ2IyYFRgAmFA1DHQAAAA%7C-8565799379604005061%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 2369555 + ], + "QuoteAgeInMinutes": 65, + "Price": 115.66, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fedes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8876%7C13870%7C2022-06-15T16%3A00%7C17543%7C2022-06-15T17%3A00%7C60%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D115.66%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJTUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCHN_x8HQAAAA%7C-8565799379604005061%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4033043 + ], + "QuoteAgeInMinutes": 1, + "Price": 116.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Ftfes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8876%7C13870%7C2022-06-15T16%3A00%7C17543%7C2022-06-15T17%3A00%7C60%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D116.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpSUstFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDoTFtYHQAAAA%7C-8565799379604005061%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 118.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8876%7C13870%7C2022-06-15T16%3A00%7C17543%7C2022-06-15T17%3A00%7C60%7C-%7CS%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D118.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C-1668897104344528753%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3934928 + ], + "QuoteAgeInMinutes": 1, + "Price": 123.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fskyp%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8876%7C13870%7C2022-06-15T16%3A00%7C17543%7C2022-06-15T17%3A00%7C60%7CSZNOB4%7CS%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D123.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpzq4sEGLmWJcjxcLR3smo0HBoyVQ2IyYFRgA_vsqUHQAAAA%7C-4485746949794860880%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3503123 + ], + "QuoteAgeInMinutes": 65, + "Price": 128.41, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fopes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8876%7C13870%7C2022-06-15T16%3A00%7C17543%7C2022-06-15T17%3A00%7C60%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D128.41%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJL0gtFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAPY_zWHQAAAA%7C-8565799379604005061%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2185235 + ], + "QuoteAgeInMinutes": 1, + "Price": 129.41, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fctes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8876%7C13870%7C2022-06-15T16%3A00%7C17543%7C2022-06-15T17%3A00%7C60%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D129.41%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLkktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAcJExoHQAAAA%7C-8565799379604005061%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 131.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8876%7C13870%7C2022-06-15T16%3A00%7C17543%7C2022-06-15T17%3A00%7C60%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D131.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-8565799379604005061%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 135.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8876%7C13870%7C2022-06-15T16%3A00%7C17543%7C2022-06-15T17%3A00%7C60%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D135.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C-8565799379604005061%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 142.67, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8876%7C13870%7C2022-06-15T16%3A00%7C17543%7C2022-06-15T17%3A00%7C60%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D142.67%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-8565799379604005061%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 147.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8876%7C13870%7C2022-06-15T16%3A00%7C17543%7C2022-06-15T17%3A00%7C60%7C-%7CS%7C-%26carriers%3D-32222%26operators%3D-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D147.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C-1668897104344528753%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151600--32222-0-17543-2206151700&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206152000--32221,-32222-1-17543-2206152325", + "PricingOptions": [ + { + "Agents": [ + 2369555 + ], + "QuoteAgeInMinutes": 65, + "Price": 400.93, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fedes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3948%7C13870%7C2022-06-15T20%3A00%7C16628%7C2022-06-15T21%3A05%7C65%7C-%7C-%7C-%3Bflight%7C-32222%7C8395%7C16628%7C2022-06-15T22%3A15%7C17543%7C2022-06-15T23%3A25%7C70%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D400.93%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJTUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCHN_x8HQAAAA%7C3377073193381828991%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4251817 + ], + "QuoteAgeInMinutes": 65, + "Price": 401.04, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fveci%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3948%7C13870%7C2022-06-15T20%3A00%7C16628%7C2022-06-15T21%3A05%7C65%7C-%7C-%7C-%3Bflight%7C-32222%7C8395%7C16628%7C2022-06-15T22%3A15%7C17543%7C2022-06-15T23%3A25%7C70%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D401.04%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpS03OFGLmWJcjxcLR3smo0HBoyVQ2IyYFRgAmFA1DHQAAAA%7C3377073193381828991%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 3503123 + ], + "QuoteAgeInMinutes": 65, + "Price": 406.55, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fopes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3948%7C13870%7C2022-06-15T20%3A00%7C16628%7C2022-06-15T21%3A05%7C65%7C-%7C-%7C-%3Bflight%7C-32222%7C8395%7C16628%7C2022-06-15T22%3A15%7C17543%7C2022-06-15T23%3A25%7C70%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D406.55%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJL0gtFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAPY_zWHQAAAA%7C3377073193381828991%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 414.98, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3948%7C13870%7C2022-06-15T20%3A00%7C16628%7C2022-06-15T21%3A05%7C65%7C-%7C-%7C-%3Bflight%7C-32222%7C8395%7C16628%7C2022-06-15T22%3A15%7C17543%7C2022-06-15T23%3A25%7C70%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D414.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C3377073193381828991%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 438.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3948%7C13870%7C2022-06-15T20%3A00%7C16628%7C2022-06-15T21%3A05%7C65%7C-%7C-%7C-%3Bflight%7C-32222%7C8395%7C16628%7C2022-06-15T22%3A15%7C17543%7C2022-06-15T23%3A25%7C70%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D438.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C3377073193381828991%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206152000--32221,-32222-1-17543-2206152325&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151155--32222-2-17543-2206151935", + "PricingOptions": [ + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 211.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3808%7C13870%7C2022-06-15T11%3A55%7C12404%7C2022-06-15T13%3A10%7C75%7CQJN0B4%7CQ%7C-%3Bflight%7C-32222%7C8519%7C12404%7C2022-06-15T17%3A10%7C15434%7C2022-06-15T17%3A55%7C45%7CQJN0B4%7CQ%7C-%3Bflight%7C-32222%7C8400%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7CADN0B8%7CA%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D211.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C-8843808434901384458%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 213.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3808%7C13870%7C2022-06-15T11%3A55%7C12404%7C2022-06-15T13%3A10%7C75%7CQJN0B4%7CQ%7C-%3Bflight%7C-32222%7C8519%7C12404%7C2022-06-15T17%3A10%7C15434%7C2022-06-15T17%3A55%7C45%7CQJN0B4%7CQ%7C-%3Bflight%7C-32222%7C8400%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7CADN0B8%7CA%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D213.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C-8843808434901384458%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151155--32222-2-17543-2206151935&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151620--31781-1-17543-2206152325", + "PricingOptions": [ + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 269.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31781%7C1015%7C13870%7C2022-06-15T16%3A20%7C13577%7C2022-06-15T16%3A40%7C80%7C-%7C-%7C-%3Bflight%7C-31781%7C1090%7C13577%7C2022-06-15T20%3A20%7C17543%7C2022-06-15T23%3A25%7C125%7C-%7C-%7C-%26carriers%3D-31781%26operators%3D-31781%3B-31678%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D269.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C5869547802167636595%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151620--31781-1-17543-2206152325&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206150725--32221,-32222-1-17543-2206152055", + "PricingOptions": [ + { + "Agents": [ + 2369555 + ], + "QuoteAgeInMinutes": 65, + "Price": 460.50, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fedes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3866%7C13870%7C2022-06-15T07%3A25%7C9320%7C2022-06-15T08%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32222%7C8380%7C9320%7C2022-06-15T19%3A25%7C17543%7C2022-06-15T20%3A55%7C90%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D460.50%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJTUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCHN_x8HQAAAA%7C5967757482715894444%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3503123 + ], + "QuoteAgeInMinutes": 65, + "Price": 466.35, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fopes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3866%7C13870%7C2022-06-15T07%3A25%7C9320%7C2022-06-15T08%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32222%7C8380%7C9320%7C2022-06-15T19%3A25%7C17543%7C2022-06-15T20%3A55%7C90%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D466.35%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJL0gtFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAPY_zWHQAAAA%7C5967757482715894444%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 472.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3866%7C13870%7C2022-06-15T07%3A25%7C9320%7C2022-06-15T08%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32222%7C8380%7C9320%7C2022-06-15T19%3A25%7C17543%7C2022-06-15T20%3A55%7C90%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D472.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C5967757482715894444%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206150725--32221,-32222-1-17543-2206152055&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206150635--31781-1-17543-2206151200", + "PricingOptions": [ + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 205.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31781%7C1023%7C13870%7C2022-06-15T06%3A35%7C13577%7C2022-06-15T06%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-31781%7C1094%7C13577%7C2022-06-15T08%3A55%7C17543%7C2022-06-15T12%3A00%7C125%7C-%7C-%7C-%26carriers%3D-31781%26operators%3D-31953%3B-31678%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D205.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C6333141078216573395%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 209.98, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31781%7C1023%7C13870%7C2022-06-15T06%3A35%7C13577%7C2022-06-15T06%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-31781%7C1094%7C13577%7C2022-06-15T08%3A55%7C17543%7C2022-06-15T12%3A00%7C125%7C-%7C-%7C-%26carriers%3D-31781%26operators%3D-31953%3B-31678%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D209.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C6333141078216573395%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 216.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31781%7C1023%7C13870%7C2022-06-15T06%3A35%7C13577%7C2022-06-15T06%3A55%7C80%7CQ04DSC0C%7CQ%7C-%3Bflight%7C-31781%7C1094%7C13577%7C2022-06-15T08%3A55%7C17543%7C2022-06-15T12%3A00%7C125%7CQ04DSC0C%7CQ%7C-%26carriers%3D-31781%26operators%3D-31953%3B-31678%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D216.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C1113866081088101779%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 244.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31781%7C1023%7C13870%7C2022-06-15T06%3A35%7C13577%7C2022-06-15T06%3A55%7C80%7CQ04DSC0C%7CQ%7C-%3Bflight%7C-31781%7C1094%7C13577%7C2022-06-15T08%3A55%7C17543%7C2022-06-15T12%3A00%7C125%7CQ04DSC0C%7CQ%7C-%26carriers%3D-31781%26operators%3D-31953%3B-31678%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D244.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C1113866081088101779%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 274.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31781%7C1023%7C13870%7C2022-06-15T06%3A35%7C13577%7C2022-06-15T06%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-31781%7C1094%7C13577%7C2022-06-15T08%3A55%7C17543%7C2022-06-15T12%3A00%7C125%7C-%7C-%7C-%26carriers%3D-31781%26operators%3D-31953%3B-31678%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D274.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C6333141078216573395%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206150635--31781-1-17543-2206151200&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151550--32222-1-17543-2206160910", + "PricingOptions": [ + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 473.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3804%7C13870%7C2022-06-15T15%3A50%7C12404%7C2022-06-15T17%3A00%7C70%7C-%7C-%7C-%3Bflight%7C-32222%7C8431%7C12404%7C2022-06-16T08%3A20%7C17543%7C2022-06-16T09%3A10%7C50%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D473.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C-996709729219937557%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151550--32222-1-17543-2206160910&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151505--32680-2-17543-2206151935", + "PricingOptions": [ + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 151.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4049%7C13870%7C2022-06-15T15%3A05%7C9409%7C2022-06-15T16%3A10%7C65%7C-%7C-%7C-%3Bflight%7C-32680%7C4027%7C9409%7C2022-06-15T17%3A00%7C15434%7C2022-06-15T17%3A50%7C50%7C-%7C-%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-31597%3B-31597%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D151.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-4877642901389453238%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 157.39, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4049%7C13870%7C2022-06-15T15%3A05%7C9409%7C2022-06-15T16%3A10%7C65%7C-%7C-%7C-%3Bflight%7C-32680%7C4027%7C9409%7C2022-06-15T17%3A00%7C15434%7C2022-06-15T17%3A50%7C50%7C-%7C-%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-31597%3B-31597%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D157.39%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-4877642901389453238%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 159.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4049%7C13870%7C2022-06-15T15%3A05%7C9409%7C2022-06-15T16%3A10%7C65%7CPDYO5L%7CP%7C-%3Bflight%7C-32680%7C4027%7C9409%7C2022-06-15T17%3A00%7C15434%7C2022-06-15T17%3A50%7C50%7CPDYO5L%7CP%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7CZWON5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-31597%3B-31597%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D159.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C-303048093116103328%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2388174 + ], + "QuoteAgeInMinutes": 779, + "Price": 162.21, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Felin%2F1%2F13870.17543.2022-06-15%2Fair%2Fairli%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4049%7C13870%7C2022-06-15T15%3A05%7C9409%7C2022-06-15T16%3A10%7C65%7CPDYO5L%7CP%7CTURISTA%2BLITE%3Bflight%7C-32680%7C4027%7C9409%7C2022-06-15T17%3A00%7C15434%7C2022-06-15T17%3A50%7C50%7CPDYO5L%7CP%7CTURISTA%2BLITE%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7CZDYO5L%7CZ%7CTURISTA%2BLITE%26carriers%3D-32680%26operators%3D-31597%3B-31597%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D162.21%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJzcnME2LmWJcjxcLR3smo0HBoyVQ2IyYFRgANcin1HQAAAA%7C6758445857431453983%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-26T20%3A40%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 4033043 + ], + "QuoteAgeInMinutes": 1, + "Price": 163.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Ftfes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4049%7C13870%7C2022-06-15T15%3A05%7C9409%7C2022-06-15T16%3A10%7C65%7C-%7C-%7C-%3Bflight%7C-32680%7C4027%7C9409%7C2022-06-15T17%3A00%7C15434%7C2022-06-15T17%3A50%7C50%7C-%7C-%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-31597%3B-31597%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D163.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpSUstFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDoTFtYHQAAAA%7C-4877642901389453238%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 188.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4049%7C13870%7C2022-06-15T15%3A05%7C9409%7C2022-06-15T16%3A10%7C65%7CPDYO5L%7CP%7C-%3Bflight%7C-32680%7C4027%7C9409%7C2022-06-15T17%3A00%7C15434%7C2022-06-15T17%3A50%7C50%7CPDYO5L%7CP%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7CZWON5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-31597%3B-31597%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D188.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C-303048093116103328%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3934928 + ], + "QuoteAgeInMinutes": 1, + "Price": 192.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fskyp%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4049%7C13870%7C2022-06-15T15%3A05%7C9409%7C2022-06-15T16%3A10%7C65%7C-%7C-%7C-%3Bflight%7C-32680%7C4027%7C9409%7C2022-06-15T17%3A00%7C15434%7C2022-06-15T17%3A50%7C50%7C-%7C-%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-31597%3B-31597%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D192.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpzq4sEGLmWJcjxcLR3smo0HBoyVQ2IyYFRgA_vsqUHQAAAA%7C-4877642901389453238%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151505--32680-2-17543-2206151935&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206152210--31781-1-17543-2206161740", + "PricingOptions": [ + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 205.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31781%7C1029%7C13870%7C2022-06-15T22%3A10%7C13577%7C2022-06-15T22%3A30%7C80%7C-%7C-%7C-%3Bflight%7C-31781%7C1092%7C13577%7C2022-06-16T14%3A35%7C17543%7C2022-06-16T17%3A40%7C125%7C-%7C-%7C-%26carriers%3D-31781%26operators%3D-31953%3B-31678%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D205.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-3871026545165241011%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 209.98, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31781%7C1029%7C13870%7C2022-06-15T22%3A10%7C13577%7C2022-06-15T22%3A30%7C80%7C-%7C-%7C-%3Bflight%7C-31781%7C1092%7C13577%7C2022-06-16T14%3A35%7C17543%7C2022-06-16T17%3A40%7C125%7C-%7C-%7C-%26carriers%3D-31781%26operators%3D-31953%3B-31678%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D209.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-3871026545165241011%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 311.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31781%7C1029%7C13870%7C2022-06-15T22%3A10%7C13577%7C2022-06-15T22%3A30%7C80%7C-%7C-%7C-%3Bflight%7C-31781%7C1092%7C13577%7C2022-06-16T14%3A35%7C17543%7C2022-06-16T17%3A40%7C125%7C-%7C-%7C-%26carriers%3D-31781%26operators%3D-31953%3B-31678%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D311.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C-3871026545165241011%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206152210--31781-1-17543-2206161740&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206150705--32680-2-17543-2206151935", + "PricingOptions": [ + { + "Agents": [ + 4033043 + ], + "QuoteAgeInMinutes": 1, + "Price": 71.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Ftfes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4047%7C13870%7C2022-06-15T07%3A05%7C9409%7C2022-06-15T08%3A10%7C65%7C-%7C-%7C-%3Bflight%7C-32680%7C4027%7C9409%7C2022-06-15T17%3A00%7C15434%7C2022-06-15T17%3A50%7C50%7C-%7C-%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-31597%3B-31597%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D71.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpSUstFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDoTFtYHQAAAA%7C8172862502648033919%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 71.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4047%7C13870%7C2022-06-15T07%3A05%7C9409%7C2022-06-15T08%3A10%7C65%7CZD4O4L%7CZ%7C-%3Bflight%7C-32680%7C4027%7C9409%7C2022-06-15T17%3A00%7C15434%7C2022-06-15T17%3A50%7C50%7CZWON5L%7CZ%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7CZDYO5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-31597%3B-31597%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D71.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C-1010464571692451727%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3934928 + ], + "QuoteAgeInMinutes": 1, + "Price": 95.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fskyp%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4047%7C13870%7C2022-06-15T07%3A05%7C9409%7C2022-06-15T08%3A10%7C65%7CZD4O4L%7CZ%7C-%3Bflight%7C-32680%7C4027%7C9409%7C2022-06-15T17%3A00%7C15434%7C2022-06-15T17%3A50%7C50%7CZWON5L%7CZ%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7CZDYO5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-31597%3B-31597%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D95.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpzq4sEGLmWJcjxcLR3smo0HBoyVQ2IyYFRgA_vsqUHQAAAA%7C-1010464571692451727%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 95.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4047%7C13870%7C2022-06-15T07%3A05%7C9409%7C2022-06-15T08%3A10%7C65%7CZD4O4L%7CZ%7C-%3Bflight%7C-32680%7C4027%7C9409%7C2022-06-15T17%3A00%7C15434%7C2022-06-15T17%3A50%7C50%7CZWON5L%7CZ%7C-%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7CZDYO5L%7CZ%7C-%26carriers%3D-32680%26operators%3D-31597%3B-31597%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D95.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C-1010464571692451727%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206150705--32680-2-17543-2206151935&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151120--32222-1-17543-2206151630", + "PricingOptions": [ + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 430.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3756%7C13870%7C2022-06-15T11%3A20%7C13874%7C2022-06-15T12%3A45%7C85%7CYDN0B2%7CY%7C-%3Bflight%7C-32222%7C8441%7C13874%7C2022-06-15T15%3A25%7C17543%7C2022-06-15T16%3A30%7C65%7CODN0B8%7CO%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D430.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C4510953364784198796%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 431.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3756%7C13870%7C2022-06-15T11%3A20%7C13874%7C2022-06-15T12%3A45%7C85%7C-%7C-%7C-%3Bflight%7C-32222%7C8441%7C13874%7C2022-06-15T15%3A25%7C17543%7C2022-06-15T16%3A30%7C65%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D431.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C-228430076051026251%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 453.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3756%7C13870%7C2022-06-15T11%3A20%7C13874%7C2022-06-15T12%3A45%7C85%7CYDN0B2%7CY%7C-%3Bflight%7C-32222%7C8441%7C13874%7C2022-06-15T15%3A25%7C17543%7C2022-06-15T16%3A30%7C65%7CODN0B8%7CO%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D453.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C4510953364784198796%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151120--32222-1-17543-2206151630&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206152015--31915-1-17543-2206152345", + "PricingOptions": [ + { + "Agents": [ + 2185235 + ], + "QuoteAgeInMinutes": 1, + "Price": 51.21, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fctes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31915%7C2084%7C13870%7C2022-06-15T20%3A15%7C12404%7C2022-06-15T21%3A30%7C75%7C-%7C-%7C-%3Bflight%7C-31915%7C7210%7C12404%7C2022-06-15T23%3A00%7C17543%7C2022-06-15T23%3A45%7C45%7C-%7C-%7C-%26carriers%3D-31915%26operators%3D-31915%3B-31915%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D51.21%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLkktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAcJExoHQAAAA%7C-7021487062543406598%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + }, + { + "Agents": [ + 4033043 + ], + "QuoteAgeInMinutes": 1, + "Price": 63.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Ftfes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31915%7C2084%7C13870%7C2022-06-15T20%3A15%7C12404%7C2022-06-15T21%3A30%7C75%7C-%7C-%7C-%3Bflight%7C-31915%7C7210%7C12404%7C2022-06-15T23%3A00%7C17543%7C2022-06-15T23%3A45%7C45%7C-%7C-%7C-%26carriers%3D-31915%26operators%3D-31915%3B-31915%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D63.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpSUstFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDoTFtYHQAAAA%7C-7021487062543406598%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26transfer_protection%3Dprotected%26pqid%3Dfalse" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 63.90, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31915%7C2084%7C13870%7C2022-06-15T20%3A15%7C12404%7C2022-06-15T21%3A30%7C75%7C-%7C-%7C-%3Bflight%7C-31915%7C7210%7C12404%7C2022-06-15T23%3A00%7C17543%7C2022-06-15T23%3A45%7C45%7C-%7C-%7C-%26carriers%3D-31915%26operators%3D-31915%3B-31915%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D63.90%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-7021487062543406598%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + }, + { + "Agents": [ + 3934928 + ], + "QuoteAgeInMinutes": 1, + "Price": 81.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fskyp%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31915%7C2084%7C13870%7C2022-06-15T20%3A15%7C12404%7C2022-06-15T21%3A30%7C75%7C-%7C-%7C-%3Bflight%7C-31915%7C7210%7C12404%7C2022-06-15T23%3A00%7C17543%7C2022-06-15T23%3A45%7C45%7C-%7C-%7C-%26carriers%3D-31915%26operators%3D-31915%3B-31915%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D81.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpzq4sEGLmWJcjxcLR3smo0HBoyVQ2IyYFRgA_vsqUHQAAAA%7C-7021487062543406598%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206152015--31915-1-17543-2206152345&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151015--32680-1-17543-2206151935", + "PricingOptions": [ + { + "Agents": [ + 2388174 + ], + "QuoteAgeInMinutes": 779, + "Price": 56.18, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Felin%2F1%2F13870.17543.2022-06-15%2Fair%2Fairli%2Fflights%3Fitinerary%3Dflight%7C-32680%7C6013%7C13870%7C2022-06-15T10%3A15%7C15434%7C2022-06-15T11%3A35%7C80%7CNWON5L%7CN%7CTURISTA%2BLITE%3Bflight%7C-32680%7C4011%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7CZDYO5L%7CZ%7CTURISTA%2BLITE%26carriers%3D-32680%26operators%3D-32680%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D56.18%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJzcnME2LmWJcjxcLR3smo0HBoyVQ2IyYFRgANcin1HQAAAA%7C4146929858010662609%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-26T20%3A40%3A00%26pqid%3Dfalse" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151015--32680-1-17543-2206151935&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206150620--32478-1-17543-2206151505", + "PricingOptions": [ + { + "Agents": [ + 4033043 + ], + "QuoteAgeInMinutes": 1, + "Price": 259.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Ftfes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32478%7C3732%7C13870%7C2022-06-15T06%3A20%7C10141%7C2022-06-15T08%3A35%7C135%7C-%7C-%7C-%3Bflight%7C-32478%7C3751%7C10141%7C2022-06-15T12%3A45%7C17543%7C2022-06-15T15%3A05%7C140%7C-%7C-%7C-%26carriers%3D-32478%26operators%3D-32478%3B-32478%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D259.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpSUstFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDoTFtYHQAAAA%7C581636352520066428%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 3934928 + ], + "QuoteAgeInMinutes": 1, + "Price": 261.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fskyp%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32478%7C3732%7C13870%7C2022-06-15T06%3A20%7C10141%7C2022-06-15T08%3A35%7C135%7C-%7CK%7C-%3Bflight%7C-32478%7C3751%7C10141%7C2022-06-15T12%3A45%7C17543%7C2022-06-15T15%3A05%7C140%7C-%7CV%7C-%26carriers%3D-32478%26operators%3D-32478%3B-32478%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D261.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpzq4sEGLmWJcjxcLR3smo0HBoyVQ2IyYFRgA_vsqUHQAAAA%7C8820924307653842157%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206150620--32478-1-17543-2206151505&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206152235--32222-1-17543-2206161320", + "PricingOptions": [ + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 505.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3916%7C13870%7C2022-06-15T22%3A35%7C15434%7C2022-06-15T23%3A55%7C80%7CYDN0B2%7CY%7C-%3Bflight%7C-32222%7C8402%7C15434%7C2022-06-16T12%3A25%7C17543%7C2022-06-16T13%3A20%7C55%7CADN0B8%7CA%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D505.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C-3799055286841686630%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 506.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3916%7C13870%7C2022-06-15T22%3A35%7C15434%7C2022-06-15T23%3A55%7C80%7CYDN0B2%7CY%7C-%3Bflight%7C-32222%7C8402%7C15434%7C2022-06-16T12%3A25%7C17543%7C2022-06-16T13%3A20%7C55%7CADN0B8%7CA%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D506.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C-3799055286841686630%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 519.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3916%7C13870%7C2022-06-15T22%3A35%7C15434%7C2022-06-15T23%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32222%7C8402%7C15434%7C2022-06-16T12%3A25%7C17543%7C2022-06-16T13%3A20%7C55%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D519.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C-28977764850309038%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206152235--32222-1-17543-2206161320&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151550--32221,-32222-1-17543-2206160910", + "PricingOptions": [ + { + "Agents": [ + 2369555 + ], + "QuoteAgeInMinutes": 65, + "Price": 456.77, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fedes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3804%7C13870%7C2022-06-15T15%3A50%7C12404%7C2022-06-15T17%3A00%7C70%7C-%7C-%7C-%3Bflight%7C-32222%7C8431%7C12404%7C2022-06-16T08%3A20%7C17543%7C2022-06-16T09%3A10%7C50%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D456.77%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJTUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCHN_x8HQAAAA%7C-2147899015928413133%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3503123 + ], + "QuoteAgeInMinutes": 65, + "Price": 462.62, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fopes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3804%7C13870%7C2022-06-15T15%3A50%7C12404%7C2022-06-15T17%3A00%7C70%7C-%7C-%7C-%3Bflight%7C-32222%7C8431%7C12404%7C2022-06-16T08%3A20%7C17543%7C2022-06-16T09%3A10%7C50%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D462.62%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJL0gtFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAPY_zWHQAAAA%7C-2147899015928413133%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 468.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3804%7C13870%7C2022-06-15T15%3A50%7C12404%7C2022-06-15T17%3A00%7C70%7C-%7C-%7C-%3Bflight%7C-32222%7C8431%7C12404%7C2022-06-16T08%3A20%7C17543%7C2022-06-16T09%3A10%7C50%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D468.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-2147899015928413133%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 471.98, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3804%7C13870%7C2022-06-15T15%3A50%7C12404%7C2022-06-15T17%3A00%7C70%7C-%7C-%7C-%3Bflight%7C-32222%7C8431%7C12404%7C2022-06-16T08%3A20%7C17543%7C2022-06-16T09%3A10%7C50%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D471.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-2147899015928413133%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151550--32221,-32222-1-17543-2206160910&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206152235--32222-2-17543-2206160910", + "PricingOptions": [ + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 151.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3916%7C13870%7C2022-06-15T22%3A35%7C15434%7C2022-06-15T23%3A55%7C80%7CAJN0B4%7CA%7C-%3Bflight%7C-32222%7C8514%7C15434%7C2022-06-16T07%3A00%7C12404%7C2022-06-16T07%3A45%7C45%7CAJN0B4%7CA%7C-%3Bflight%7C-32222%7C8431%7C12404%7C2022-06-16T08%3A20%7C17543%7C2022-06-16T09%3A10%7C50%7CADN0B8%7CA%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D151.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C8867993300264259691%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 181.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3916%7C13870%7C2022-06-15T22%3A35%7C15434%7C2022-06-15T23%3A55%7C80%7CAJN0B4%7CA%7C-%3Bflight%7C-32222%7C8514%7C15434%7C2022-06-16T07%3A00%7C12404%7C2022-06-16T07%3A45%7C45%7CAJN0B4%7CA%7C-%3Bflight%7C-32222%7C8431%7C12404%7C2022-06-16T08%3A20%7C17543%7C2022-06-16T09%3A10%7C50%7CADN0B8%7CA%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D181.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C8867993300264259691%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206152235--32222-2-17543-2206160910&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151300--32222-2-17543-2206152055", + "PricingOptions": [ + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 362.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8292%7C13870%7C2022-06-15T13%3A00%7C14164%7C2022-06-15T14%3A50%7C110%7C-%7C-%7C-%3Bflight%7C-32222%7C8265%7C14164%7C2022-06-15T17%3A00%7C9320%7C2022-06-15T17%3A55%7C55%7C-%7C-%7C-%3Bflight%7C-32222%7C8380%7C9320%7C2022-06-15T19%3A25%7C17543%7C2022-06-15T20%3A55%7C90%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D362.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-8803750373820856579%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 362.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8292%7C13870%7C2022-06-15T13%3A00%7C14164%7C2022-06-15T14%3A50%7C110%7CNDN0B8%7CN%7C-%3Bflight%7C-32222%7C8265%7C14164%7C2022-06-15T17%3A00%7C9320%7C2022-06-15T17%3A55%7C55%7CQJN0B4%7CQ%7C-%3Bflight%7C-32222%7C8380%7C9320%7C2022-06-15T19%3A25%7C17543%7C2022-06-15T20%3A55%7C90%7CQJN0B4%7CQ%7C-%26carriers%3D-32222%26operators%3D-32639%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D362.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C-2727842481025840924%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 362.98, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8292%7C13870%7C2022-06-15T13%3A00%7C14164%7C2022-06-15T14%3A50%7C110%7C-%7C-%7C-%3Bflight%7C-32222%7C8265%7C14164%7C2022-06-15T17%3A00%7C9320%7C2022-06-15T17%3A55%7C55%7C-%7C-%7C-%3Bflight%7C-32222%7C8380%7C9320%7C2022-06-15T19%3A25%7C17543%7C2022-06-15T20%3A55%7C90%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D362.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-8803750373820856579%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 390.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8292%7C13870%7C2022-06-15T13%3A00%7C14164%7C2022-06-15T14%3A50%7C110%7CNDN0B8%7CN%7C-%3Bflight%7C-32222%7C8265%7C14164%7C2022-06-15T17%3A00%7C9320%7C2022-06-15T17%3A55%7C55%7CQJN0B4%7CQ%7C-%3Bflight%7C-32222%7C8380%7C9320%7C2022-06-15T19%3A25%7C17543%7C2022-06-15T20%3A55%7C90%7CQJN0B4%7CQ%7C-%26carriers%3D-32222%26operators%3D-32639%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D390.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C-2727842481025840924%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151300--32222-2-17543-2206152055&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206150715--32222-2-17543-2206151240", + "PricingOptions": [ + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 181.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3918%7C13870%7C2022-06-15T07%3A15%7C15434%7C2022-06-15T08%3A40%7C85%7CAJN0B4%7CA%7C-%3Bflight%7C-32222%7C8514%7C15434%7C2022-06-15T09%3A45%7C12404%7C2022-06-15T10%3A30%7C45%7CAJN0B4%7CA%7C-%3Bflight%7C-32222%7C8431%7C12404%7C2022-06-15T11%3A50%7C17543%7C2022-06-15T12%3A40%7C50%7CADN0B8%7CA%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D181.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C4362876645265897296%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 189.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3918%7C13870%7C2022-06-15T07%3A15%7C15434%7C2022-06-15T08%3A40%7C85%7CAJN0B4%7CA%7C-%3Bflight%7C-32222%7C8514%7C15434%7C2022-06-15T09%3A45%7C12404%7C2022-06-15T10%3A30%7C45%7CAJN0B4%7CA%7C-%3Bflight%7C-32222%7C8431%7C12404%7C2022-06-15T11%3A50%7C17543%7C2022-06-15T12%3A40%7C50%7CADN0B8%7CA%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D189.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C4362876645265897296%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206150715--32222-2-17543-2206151240&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206150935--32222-1-17543-2206151815", + "PricingOptions": [ + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 140.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C5001%7C13870%7C2022-06-15T09%3A35%7C9772%7C2022-06-15T10%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32222%7C5046%7C9772%7C2022-06-15T17%3A15%7C17543%7C2022-06-15T18%3A15%7C60%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-31685%3B-31685%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D140.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C-667715741776324888%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 140.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C5001%7C13870%7C2022-06-15T09%3A35%7C9772%7C2022-06-15T10%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32222%7C5046%7C9772%7C2022-06-15T17%3A15%7C17543%7C2022-06-15T18%3A15%7C60%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-31685%3B-31685%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D140.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-667715741776324888%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2369555 + ], + "QuoteAgeInMinutes": 65, + "Price": 142.23, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fedes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C5001%7C13870%7C2022-06-15T09%3A35%7C9772%7C2022-06-15T10%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32222%7C5046%7C9772%7C2022-06-15T17%3A15%7C17543%7C2022-06-15T18%3A15%7C60%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-31685%3B-31685%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D142.23%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJTUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCHN_x8HQAAAA%7C-667715741776324888%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 149.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C5001%7C13870%7C2022-06-15T09%3A35%7C9772%7C2022-06-15T10%3A55%7C80%7CADBVYN%7CA%7C-%3Bflight%7C-32222%7C5046%7C9772%7C2022-06-15T17%3A15%7C17543%7C2022-06-15T18%3A15%7C60%7CQOWNVY%7CQ%7C-%26carriers%3D-32222%26operators%3D-31685%3B-31685%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D149.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C4196566075228715914%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 150.91, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C5001%7C13870%7C2022-06-15T09%3A35%7C9772%7C2022-06-15T10%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32222%7C5046%7C9772%7C2022-06-15T17%3A15%7C17543%7C2022-06-15T18%3A15%7C60%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-31685%3B-31685%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D150.91%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-667715741776324888%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3503123 + ], + "QuoteAgeInMinutes": 65, + "Price": 153.75, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fopes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C5001%7C13870%7C2022-06-15T09%3A35%7C9772%7C2022-06-15T10%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32222%7C5046%7C9772%7C2022-06-15T17%3A15%7C17543%7C2022-06-15T18%3A15%7C60%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-31685%3B-31685%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D153.75%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJL0gtFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAPY_zWHQAAAA%7C-667715741776324888%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4251817 + ], + "QuoteAgeInMinutes": 65, + "Price": 154.23, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fveci%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C5001%7C13870%7C2022-06-15T09%3A35%7C9772%7C2022-06-15T10%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-32222%7C5046%7C9772%7C2022-06-15T17%3A15%7C17543%7C2022-06-15T18%3A15%7C60%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-31685%3B-31685%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D154.23%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpS03OFGLmWJcjxcLR3smo0HBoyVQ2IyYFRgAmFA1DHQAAAA%7C-667715741776324888%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 178.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C5001%7C13870%7C2022-06-15T09%3A35%7C9772%7C2022-06-15T10%3A55%7C80%7CADBVYN%7CA%7C-%3Bflight%7C-32222%7C5046%7C9772%7C2022-06-15T17%3A15%7C17543%7C2022-06-15T18%3A15%7C60%7CQOWNVY%7CQ%7C-%26carriers%3D-32222%26operators%3D-31685%3B-31685%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D178.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C4196566075228715914%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206150935--32222-1-17543-2206151815&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206150935--31685-1-17543-2206151815", + "PricingOptions": [ + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 91.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31685%7C1003%7C13870%7C2022-06-15T09%3A35%7C9772%7C2022-06-15T10%3A55%7C80%7CPOWVYLB%7C-%7C-%3Bflight%7C-31685%7C1316%7C9772%7C2022-06-15T17%3A15%7C17543%7C2022-06-15T18%3A15%7C60%7CQOWVYLB%7C-%7C-%26carriers%3D-31685%26operators%3D-31685%3B-31685%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D91.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C-2915740813511904129%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4033043 + ], + "QuoteAgeInMinutes": 1, + "Price": 94.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Ftfes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31685%7C1003%7C13870%7C2022-06-15T09%3A35%7C9772%7C2022-06-15T10%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-31685%7C1316%7C9772%7C2022-06-15T17%3A15%7C17543%7C2022-06-15T18%3A15%7C60%7C-%7C-%7C-%26carriers%3D-31685%26operators%3D-31685%3B-31685%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D94.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpSUstFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDoTFtYHQAAAA%7C-8973828245641574622%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 3934928 + ], + "QuoteAgeInMinutes": 1, + "Price": 101.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fskyp%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31685%7C1003%7C13870%7C2022-06-15T09%3A35%7C9772%7C2022-06-15T10%3A55%7C80%7CPOWVYLB%7CP%7C-%3Bflight%7C-31685%7C1316%7C9772%7C2022-06-15T17%3A15%7C17543%7C2022-06-15T18%3A15%7C60%7CWOWVYLB%7CW%7C-%26carriers%3D-31685%26operators%3D-31685%3B-31685%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D101.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpzq4sEGLmWJcjxcLR3smo0HBoyVQ2IyYFRgA_vsqUHQAAAA%7C4381364270917833012%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2369555 + ], + "QuoteAgeInMinutes": 65, + "Price": 104.67, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fedes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31685%7C1003%7C13870%7C2022-06-15T09%3A35%7C9772%7C2022-06-15T10%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-31685%7C1316%7C9772%7C2022-06-15T17%3A15%7C17543%7C2022-06-15T18%3A15%7C60%7C-%7C-%7C-%26carriers%3D-31685%26operators%3D-31685%3B-31685%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D104.67%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJTUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCHN_x8HQAAAA%7C-8973828245641574622%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3503123 + ], + "QuoteAgeInMinutes": 65, + "Price": 118.27, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fopes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31685%7C1003%7C13870%7C2022-06-15T09%3A35%7C9772%7C2022-06-15T10%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-31685%7C1316%7C9772%7C2022-06-15T17%3A15%7C17543%7C2022-06-15T18%3A15%7C60%7C-%7C-%7C-%26carriers%3D-31685%26operators%3D-31685%3B-31685%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D118.27%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJL0gtFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAPY_zWHQAAAA%7C-8973828245641574622%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 124.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31685%7C1003%7C13870%7C2022-06-15T09%3A35%7C9772%7C2022-06-15T10%3A55%7C80%7CPOWVYLB%7C-%7C-%3Bflight%7C-31685%7C1316%7C9772%7C2022-06-15T17%3A15%7C17543%7C2022-06-15T18%3A15%7C60%7CQOWVYLB%7C-%7C-%26carriers%3D-31685%26operators%3D-31685%3B-31685%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D124.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C-2915740813511904129%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 164.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31685%7C1003%7C13870%7C2022-06-15T09%3A35%7C9772%7C2022-06-15T10%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-31685%7C1316%7C9772%7C2022-06-15T17%3A15%7C17543%7C2022-06-15T18%3A15%7C60%7C-%7C-%7C-%26carriers%3D-31685%26operators%3D-31685%3B-31685%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D164.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-8973828245641574622%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 178.49, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31685%7C1003%7C13870%7C2022-06-15T09%3A35%7C9772%7C2022-06-15T10%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-31685%7C1316%7C9772%7C2022-06-15T17%3A15%7C17543%7C2022-06-15T18%3A15%7C60%7C-%7C-%7C-%26carriers%3D-31685%26operators%3D-31685%3B-31685%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D178.49%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-8973828245641574622%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4251817 + ], + "QuoteAgeInMinutes": 65, + "Price": 180.40, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fveci%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31685%7C1003%7C13870%7C2022-06-15T09%3A35%7C9772%7C2022-06-15T10%3A55%7C80%7C-%7C-%7C-%3Bflight%7C-31685%7C1316%7C9772%7C2022-06-15T17%3A15%7C17543%7C2022-06-15T18%3A15%7C60%7C-%7C-%7C-%26carriers%3D-31685%26operators%3D-31685%3B-31685%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D180.40%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpS03OFGLmWJcjxcLR3smo0HBoyVQ2IyYFRgAmFA1DHQAAAA%7C-8973828245641574622%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dfalse" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206150935--31685-1-17543-2206151815&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151020--32132-1-17543-2206151630", + "PricingOptions": [ + { + "Agents": [ + 3934928 + ], + "QuoteAgeInMinutes": 1, + "Price": 186.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fskyp%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32132%7C1700%7C13870%7C2022-06-15T10%3A20%7C9451%7C2022-06-15T13%3A00%7C160%7C-%7CT%7C-%3Bflight%7C-32132%7C1503%7C9451%7C2022-06-15T14%3A05%7C17543%7C2022-06-15T16%3A30%7C145%7C-%7CT%7C-%26carriers%3D-32132%26operators%3D-32132%3B-32131%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D186.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpzq4sEGLmWJcjxcLR3smo0HBoyVQ2IyYFRgA_vsqUHQAAAA%7C4803665622819714058%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T09%3A38%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151020--32132-1-17543-2206151630&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206150715--32222-2-17543-2206151610", + "PricingOptions": [ + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 165.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3918%7C13870%7C2022-06-15T07%3A15%7C15434%7C2022-06-15T08%3A40%7C85%7CAJN0B4%7CA%7C-%3Bflight%7C-32222%7C8514%7C15434%7C2022-06-15T09%3A45%7C12404%7C2022-06-15T10%3A30%7C45%7CAJN0B4%7CA%7C-%3Bflight%7C-32222%7C8433%7C12404%7C2022-06-15T15%3A20%7C17543%7C2022-06-15T16%3A10%7C50%7CADN0B8%7CA%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D165.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C-4068152742329873431%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206150715--32222-2-17543-2206151610&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151545--32222-1-17543-2206152055", + "PricingOptions": [ + { + "Agents": [ + 2369555 + ], + "QuoteAgeInMinutes": 65, + "Price": 460.50, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fedes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8948%7C13870%7C2022-06-15T15%3A45%7C9320%7C2022-06-15T17%3A00%7C75%7C-%7C-%7C-%3Bflight%7C-32222%7C8380%7C9320%7C2022-06-15T19%3A25%7C17543%7C2022-06-15T20%3A55%7C90%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D460.50%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJTUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCHN_x8HQAAAA%7C-4912515665627051709%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3503123 + ], + "QuoteAgeInMinutes": 65, + "Price": 466.35, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fopes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8948%7C13870%7C2022-06-15T15%3A45%7C9320%7C2022-06-15T17%3A00%7C75%7C-%7C-%7C-%3Bflight%7C-32222%7C8380%7C9320%7C2022-06-15T19%3A25%7C17543%7C2022-06-15T20%3A55%7C90%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D466.35%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJL0gtFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAPY_zWHQAAAA%7C-4912515665627051709%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 475.98, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8948%7C13870%7C2022-06-15T15%3A45%7C9320%7C2022-06-15T17%3A00%7C75%7C-%7C-%7C-%3Bflight%7C-32222%7C8380%7C9320%7C2022-06-15T19%3A25%7C17543%7C2022-06-15T20%3A55%7C90%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D475.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-4912515665627051709%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 476.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8948%7C13870%7C2022-06-15T15%3A45%7C9320%7C2022-06-15T17%3A00%7C75%7CYDN0B2%7CY%7C-%3Bflight%7C-32222%7C8380%7C9320%7C2022-06-15T19%3A25%7C17543%7C2022-06-15T20%3A55%7C90%7CQDN0B8%7CQ%7C-%26carriers%3D-32222%26operators%3D-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D476.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C1178944414321651142%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 478.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8948%7C13870%7C2022-06-15T15%3A45%7C9320%7C2022-06-15T17%3A00%7C75%7C-%7C-%7C-%3Bflight%7C-32222%7C8380%7C9320%7C2022-06-15T19%3A25%7C17543%7C2022-06-15T20%3A55%7C90%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D478.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C-4912515665627051709%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 497.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8948%7C13870%7C2022-06-15T15%3A45%7C9320%7C2022-06-15T17%3A00%7C75%7CYDN0B2%7CY%7C-%3Bflight%7C-32222%7C8380%7C9320%7C2022-06-15T19%3A25%7C17543%7C2022-06-15T20%3A55%7C90%7CQDN0B8%7CQ%7C-%26carriers%3D-32222%26operators%3D-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D497.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C1178944414321651142%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 505.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C8948%7C13870%7C2022-06-15T15%3A45%7C9320%7C2022-06-15T17%3A00%7C75%7C-%7C-%7C-%3Bflight%7C-32222%7C8380%7C9320%7C2022-06-15T19%3A25%7C17543%7C2022-06-15T20%3A55%7C90%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D505.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-4912515665627051709%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151545--32222-1-17543-2206152055&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206152010--31781-1-17543-2206161740", + "PricingOptions": [ + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 203.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31781%7C1025%7C13870%7C2022-06-15T20%3A10%7C13577%7C2022-06-15T20%3A30%7C80%7C-%7C-%7C-%3Bflight%7C-31781%7C1092%7C13577%7C2022-06-16T14%3A35%7C17543%7C2022-06-16T17%3A40%7C125%7C-%7C-%7C-%26carriers%3D-31781%26operators%3D-31781%3B-31678%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D203.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C5853370503642105534%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 206.98, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31781%7C1025%7C13870%7C2022-06-15T20%3A10%7C13577%7C2022-06-15T20%3A30%7C80%7C-%7C-%7C-%3Bflight%7C-31781%7C1092%7C13577%7C2022-06-16T14%3A35%7C17543%7C2022-06-16T17%3A40%7C125%7C-%7C-%7C-%26carriers%3D-31781%26operators%3D-31781%3B-31678%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D206.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C5853370503642105534%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 269.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31781%7C1025%7C13870%7C2022-06-15T20%3A10%7C13577%7C2022-06-15T20%3A30%7C80%7C-%7C-%7C-%3Bflight%7C-31781%7C1092%7C13577%7C2022-06-16T14%3A35%7C17543%7C2022-06-16T17%3A40%7C125%7C-%7C-%7C-%26carriers%3D-31781%26operators%3D-31781%3B-31678%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D269.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C5853370503642105534%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206152010--31781-1-17543-2206161740&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206152000--32222-1-17543-2206152325", + "PricingOptions": [ + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 413.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3948%7C13870%7C2022-06-15T20%3A00%7C16628%7C2022-06-15T21%3A05%7C65%7CYDN0B2%7CY%7C-%3Bflight%7C-32222%7C8395%7C16628%7C2022-06-15T22%3A15%7C17543%7C2022-06-15T23%3A25%7C70%7CAD70B8%7CA%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D413.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C-2958180273119943132%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1964051 + ], + "QuoteAgeInMinutes": 65, + "Price": 414.00, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fates%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3948%7C13870%7C2022-06-15T20%3A00%7C16628%7C2022-06-15T21%3A05%7C65%7C-%7C-%7C-%3Bflight%7C-32222%7C8395%7C16628%7C2022-06-15T22%3A15%7C17543%7C2022-06-15T23%3A25%7C70%7C-%7C-%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D414.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJLEktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgBBAir4HQAAAA%7C2723952787974271448%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 436.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3948%7C13870%7C2022-06-15T20%3A00%7C16628%7C2022-06-15T21%3A05%7C65%7CYDN0B2%7CY%7C-%3Bflight%7C-32222%7C8395%7C16628%7C2022-06-15T22%3A15%7C17543%7C2022-06-15T23%3A25%7C70%7CAD70B8%7CA%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D436.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C-2958180273119943132%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206152000--32222-1-17543-2206152325&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206150705--32680-2-17543-2206151135", + "PricingOptions": [ + { + "Agents": [ + 2388174 + ], + "QuoteAgeInMinutes": 779, + "Price": 270.21, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Felin%2F1%2F13870.17543.2022-06-15%2Fair%2Fairli%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4047%7C13870%7C2022-06-15T07%3A05%7C9409%7C2022-06-15T08%3A10%7C65%7CRDYO5L%7CR%7CTURISTA%2BLITE%3Bflight%7C-32680%7C4025%7C9409%7C2022-06-15T08%3A55%7C15434%7C2022-06-15T09%3A45%7C50%7CRDYO5L%7CR%7CTURISTA%2BLITE%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-15T10%3A40%7C17543%7C2022-06-15T11%3A35%7C55%7CZWON5L%7CZ%7CTURISTA%2BLITE%26carriers%3D-32680%26operators%3D-31597%3B-31597%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D270.21%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJzcnME2LmWJcjxcLR3smo0HBoyVQ2IyYFRgANcin1HQAAAA%7C-7723801878828306595%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-26T20%3A40%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 306.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4047%7C13870%7C2022-06-15T07%3A05%7C9409%7C2022-06-15T08%3A10%7C65%7C-%7C-%7C-%3Bflight%7C-32680%7C4025%7C9409%7C2022-06-15T08%3A55%7C15434%7C2022-06-15T09%3A45%7C50%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-15T10%3A40%7C17543%7C2022-06-15T11%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-31597%3B-31597%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D306.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C-8214834800790418864%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 310.98, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32680%7C4047%7C13870%7C2022-06-15T07%3A05%7C9409%7C2022-06-15T08%3A10%7C65%7C-%7C-%7C-%3Bflight%7C-32680%7C4025%7C9409%7C2022-06-15T08%3A55%7C15434%7C2022-06-15T09%3A45%7C50%7C-%7C-%7C-%3Bflight%7C-32680%7C4007%7C15434%7C2022-06-15T10%3A40%7C17543%7C2022-06-15T11%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32680%26operators%3D-31597%3B-31597%3B-32680%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D310.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C-8214834800790418864%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206150705--32680-2-17543-2206151135&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151545--32221,-32222-1-17543-2206151935", + "PricingOptions": [ + { + "Agents": [ + 2369555 + ], + "QuoteAgeInMinutes": 65, + "Price": 468.90, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fedes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3912%7C13870%7C2022-06-15T15%3A45%7C15434%7C2022-06-15T17%3A10%7C85%7C-%7C-%7C-%3Bflight%7C-32222%7C8400%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D468.90%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJTUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCHN_x8HQAAAA%7C877142397881551943%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 4251817 + ], + "QuoteAgeInMinutes": 65, + "Price": 471.18, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fveci%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3912%7C13870%7C2022-06-15T15%3A45%7C15434%7C2022-06-15T17%3A10%7C85%7C-%7C-%7C-%3Bflight%7C-32222%7C8400%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D471.18%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mIpS03OFGLmWJcjxcLR3smo0HBoyVQ2IyYFRgAmFA1DHQAAAA%7C877142397881551943%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dfalse" + }, + { + "Agents": [ + 3503123 + ], + "QuoteAgeInMinutes": 65, + "Price": 474.75, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fopes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3912%7C13870%7C2022-06-15T15%3A45%7C15434%7C2022-06-15T17%3A10%7C85%7C-%7C-%7C-%3Bflight%7C-32222%7C8400%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D474.75%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJL0gtFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAPY_zWHQAAAA%7C877142397881551943%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 2627603 + ], + "QuoteAgeInMinutes": 65, + "Price": 483.98, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fgtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3912%7C13870%7C2022-06-15T15%3A45%7C15434%7C2022-06-15T17%3A10%7C85%7C-%7C-%7C-%3Bflight%7C-32222%7C8400%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D483.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJL0ktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDnbvGTHQAAAA%7C877142397881551943%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 3291155 + ], + "QuoteAgeInMinutes": 65, + "Price": 514.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fmtes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32221%7C3912%7C13870%7C2022-06-15T15%3A45%7C15434%7C2022-06-15T17%3A10%7C85%7C-%7C-%7C-%3Bflight%7C-32222%7C8400%7C15434%7C2022-06-15T18%3A40%7C17543%7C2022-06-15T19%3A35%7C55%7C-%7C-%7C-%26carriers%3D-32221%2C-32222%26operators%3D-32221%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D514.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJLUktFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgAN25wvHQAAAA%7C877142397881551943%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151545--32221,-32222-1-17543-2206151935&InboundLegId=", + "Method": "PUT" + } + }, + { + "OutboundLegId": "13870-2206151120--32222-2-17543-2206151630", + "PricingOptions": [ + { + "Agents": [ + 3164435 + ], + "QuoteAgeInMinutes": 65, + "Price": 359.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Flmes%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3914%7C13870%7C2022-06-15T11%3A20%7C15434%7C2022-06-15T12%3A45%7C85%7CLJN0B4%7CL%7C-%3Bflight%7C-32222%7C8480%7C15434%7C2022-06-15T13%3A55%7C13874%7C2022-06-15T14%3A40%7C45%7CLJN0B4%7CL%7C-%3Bflight%7C-32222%7C8441%7C13874%7C2022-06-15T15%3A25%7C17543%7C2022-06-15T16%3A30%7C65%7CODN0B8%7CO%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D359.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mLJyU0tFmLmWJcjxcLR3smo0HBoyVQ2IyYFRgCnbVSmHQAAAA%7C-1003123058981259516%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + }, + { + "Agents": [ + 1891970 + ], + "QuoteAgeInMinutes": 65, + "Price": 366.99, + "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FES%2Fen-US%2FEUR%2Fa582%2F1%2F13870.17543.2022-06-15%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32222%7C3914%7C13870%7C2022-06-15T11%3A20%7C15434%7C2022-06-15T12%3A45%7C85%7CLJN0B4%7CL%7C-%3Bflight%7C-32222%7C8480%7C15434%7C2022-06-15T13%3A55%7C13874%7C2022-06-15T14%3A40%7C45%7CLJN0B4%7CL%7C-%3Bflight%7C-32222%7C8441%7C13874%7C2022-06-15T15%3A25%7C17543%7C2022-06-15T16%3A30%7C65%7CODN0B8%7CO%7C-%26carriers%3D-32222%26operators%3D-32221%3B-32639%3B-32639%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Deconomy%26facilitated%3Dfalse%26fps_session_id%3D3039ebf8-5657-4215-8782-95a7ed33cc35%26ticket_price%3D366.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Dc3c927ad-9d31-4fc0-a8aa-dbeef5be650b%26q_ids%3DH4sIAAAAAAAAAOOS5mJJNLUwEmLmWJcjxcLR3smo0HBoyVQ2IyYFRgDJTZsdHQAAAA%7C-1003123058981259516%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-04-27T08%3A34%3A00%26pqid%3Dtrue" + } + ], + "BookingDetailsLink": { + "Uri": "/apiservices/pricing/v1.0/3039ebf8-5657-4215-8782-95a7ed33cc35-c2/booking", + "Body": "OutboundLegId=13870-2206151120--32222-2-17543-2206151630&InboundLegId=", + "Method": "PUT" + } + } + ], + "Legs": [ + { + "Id": "13870-2206151120--32221,-32222-1-17543-2206151630", + "SegmentIds": [ + 0, + 1 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T11:20:00", + "Arrival": "2022-06-15T16:30:00", + "Duration": 310, + "JourneyMode": "Flight", + "Stops": [ + 13874 + ], + "Carriers": [ + 1202, + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "3756", + "CarrierId": 1202 + }, + { + "FlightNumber": "8441", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206151125--32221,-32222-1-17543-2206152325", + "SegmentIds": [ + 2, + 3 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T11:25:00", + "Arrival": "2022-06-15T23:25:00", + "Duration": 720, + "JourneyMode": "Flight", + "Stops": [ + 16628 + ], + "Carriers": [ + 1202, + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "3950", + "CarrierId": 1202 + }, + { + "FlightNumber": "8395", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206151150--32222-1-17543-2206160955", + "SegmentIds": [ + 4, + 5 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T11:50:00", + "Arrival": "2022-06-16T09:55:00", + "Duration": 1325, + "JourneyMode": "Flight", + "Stops": [ + 9925 + ], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 1218, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "426", + "CarrierId": 1218 + }, + { + "FlightNumber": "8313", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206152050--31685,-31915-1-17543-2206152345", + "SegmentIds": [ + 6, + 7 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T20:50:00", + "Arrival": "2022-06-15T23:45:00", + "Duration": 175, + "JourneyMode": "Flight", + "Stops": [ + 12404 + ], + "Carriers": [ + 7, + 1090 + ], + "OperatingCarriers": [ + 7, + 1090 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "3417", + "CarrierId": 7 + }, + { + "FlightNumber": "7210", + "CarrierId": 1090 + } + ] + }, + { + "Id": "13870-2206151505--32680-0-17543-2206151605", + "SegmentIds": [ + 10 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T15:05:00", + "Arrival": "2022-06-15T16:05:00", + "Duration": 60, + "JourneyMode": "Flight", + "Stops": [], + "Carriers": [ + 1816 + ], + "OperatingCarriers": [ + 1816 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "4065", + "CarrierId": 1816 + } + ] + }, + { + "Id": "13870-2206151120--32221,-32222-2-17543-2206151630", + "SegmentIds": [ + 12, + 13, + 1 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T11:20:00", + "Arrival": "2022-06-15T16:30:00", + "Duration": 310, + "JourneyMode": "Flight", + "Stops": [ + 15434, + 13874 + ], + "Carriers": [ + 1202, + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8441", + "CarrierId": 1218 + }, + { + "FlightNumber": "3914", + "CarrierId": 1202 + }, + { + "FlightNumber": "8480", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206152020--32222-0-17543-2206152125", + "SegmentIds": [ + 14 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T20:20:00", + "Arrival": "2022-06-15T21:25:00", + "Duration": 65, + "JourneyMode": "Flight", + "Stops": [], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8878", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206150745--32222-0-17543-2206150850", + "SegmentIds": [ + 15 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T07:45:00", + "Arrival": "2022-06-15T08:50:00", + "Duration": 65, + "JourneyMode": "Flight", + "Stops": [], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8872", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206152145--32680-1-17543-2206160800", + "SegmentIds": [ + 16, + 17 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T21:45:00", + "Arrival": "2022-06-16T08:00:00", + "Duration": 615, + "JourneyMode": "Flight", + "Stops": [ + 15434 + ], + "Carriers": [ + 1816 + ], + "OperatingCarriers": [ + 1816 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "6049", + "CarrierId": 1816 + }, + { + "FlightNumber": "4007", + "CarrierId": 1816 + } + ] + }, + { + "Id": "13870-2206152235--32221,-32222-1-17543-2206161320", + "SegmentIds": [ + 18, + 19 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T22:35:00", + "Arrival": "2022-06-16T13:20:00", + "Duration": 885, + "JourneyMode": "Flight", + "Stops": [ + 15434 + ], + "Carriers": [ + 1202, + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "3916", + "CarrierId": 1202 + }, + { + "FlightNumber": "8402", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206151510--32680-2-17543-2206160800", + "SegmentIds": [ + 20, + 21, + 17 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T15:10:00", + "Arrival": "2022-06-16T08:00:00", + "Duration": 1010, + "JourneyMode": "Flight", + "Stops": [ + 9772, + 15434 + ], + "Carriers": [ + 1816 + ], + "OperatingCarriers": [ + 1816 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "4007", + "CarrierId": 1816 + }, + { + "FlightNumber": "7703", + "CarrierId": 1816 + }, + { + "FlightNumber": "6103", + "CarrierId": 1816 + } + ] + }, + { + "Id": "13870-2206151545--32222-1-17543-2206151935", + "SegmentIds": [ + 22, + 23 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T15:45:00", + "Arrival": "2022-06-15T19:35:00", + "Duration": 230, + "JourneyMode": "Flight", + "Stops": [ + 15434 + ], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "3912", + "CarrierId": 1218 + }, + { + "FlightNumber": "8400", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206151155--32221,-32222-2-17543-2206151935", + "SegmentIds": [ + 24, + 25, + 23 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T11:55:00", + "Arrival": "2022-06-15T19:35:00", + "Duration": 460, + "JourneyMode": "Flight", + "Stops": [ + 12404, + 15434 + ], + "Carriers": [ + 1202, + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8400", + "CarrierId": 1218 + }, + { + "FlightNumber": "3808", + "CarrierId": 1202 + }, + { + "FlightNumber": "8519", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206151535--31915,-32680-1-17543-2206151935", + "SegmentIds": [ + 11, + 26 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T15:35:00", + "Arrival": "2022-06-15T19:35:00", + "Duration": 240, + "JourneyMode": "Flight", + "Stops": [ + 15434 + ], + "Carriers": [ + 1090, + 1816 + ], + "OperatingCarriers": [ + 1090, + 1816 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "2053", + "CarrierId": 1090 + }, + { + "FlightNumber": "4011", + "CarrierId": 1816 + } + ] + }, + { + "Id": "13870-2206150705--32680-0-17543-2206150805", + "SegmentIds": [ + 27 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T07:05:00", + "Arrival": "2022-06-15T08:05:00", + "Duration": 60, + "JourneyMode": "Flight", + "Stops": [], + "Carriers": [ + 1816 + ], + "OperatingCarriers": [ + 1816 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "4063", + "CarrierId": 1816 + } + ] + }, + { + "Id": "13870-2206150715--32221,-32222-2-17543-2206151240", + "SegmentIds": [ + 28, + 29, + 30 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T07:15:00", + "Arrival": "2022-06-15T12:40:00", + "Duration": 325, + "JourneyMode": "Flight", + "Stops": [ + 15434, + 12404 + ], + "Carriers": [ + 1202, + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "3918", + "CarrierId": 1202 + }, + { + "FlightNumber": "8514", + "CarrierId": 1218 + }, + { + "FlightNumber": "8431", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206150815--32680-1-17543-2206151135", + "SegmentIds": [ + 31, + 32 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T08:15:00", + "Arrival": "2022-06-15T11:35:00", + "Duration": 200, + "JourneyMode": "Flight", + "Stops": [ + 15434 + ], + "Carriers": [ + 1816 + ], + "OperatingCarriers": [ + 1816 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "6031", + "CarrierId": 1816 + }, + { + "FlightNumber": "4007", + "CarrierId": 1816 + } + ] + }, + { + "Id": "13870-2206151710--32132-1-17543-2206152300", + "SegmentIds": [ + 33, + 34 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T17:10:00", + "Arrival": "2022-06-15T23:00:00", + "Duration": 350, + "JourneyMode": "Flight", + "Stops": [ + 9451 + ], + "Carriers": [ + 1324 + ], + "OperatingCarriers": [ + 1324, + 1889 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "1704", + "CarrierId": 1324 + }, + { + "FlightNumber": "1501", + "CarrierId": 1324 + } + ] + }, + { + "Id": "13870-2206151550--32222-2-17543-2206152310", + "SegmentIds": [ + 35, + 36, + 37 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T15:50:00", + "Arrival": "2022-06-15T23:10:00", + "Duration": 440, + "JourneyMode": "Flight", + "Stops": [ + 16142, + 9925 + ], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "3878", + "CarrierId": 1218 + }, + { + "FlightNumber": "8357", + "CarrierId": 1218 + }, + { + "FlightNumber": "8311", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206150825--31915-1-17543-2206151405", + "SegmentIds": [ + 38, + 39 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T08:25:00", + "Arrival": "2022-06-15T14:05:00", + "Duration": 340, + "JourneyMode": "Flight", + "Stops": [ + 17109 + ], + "Carriers": [ + 1090 + ], + "OperatingCarriers": [ + 1090 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "5897", + "CarrierId": 1090 + }, + { + "FlightNumber": "2259", + "CarrierId": 1090 + } + ] + }, + { + "Id": "13870-2206151550--32221,-32222-2-17543-2206152310", + "SegmentIds": [ + 40, + 36, + 37 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T15:50:00", + "Arrival": "2022-06-15T23:10:00", + "Duration": 440, + "JourneyMode": "Flight", + "Stops": [ + 16142, + 9925 + ], + "Carriers": [ + 1202, + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8357", + "CarrierId": 1218 + }, + { + "FlightNumber": "8311", + "CarrierId": 1218 + }, + { + "FlightNumber": "3878", + "CarrierId": 1202 + } + ] + }, + { + "Id": "13870-2206151550--32221,-32222-1-17543-2206161630", + "SegmentIds": [ + 41, + 42 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T15:50:00", + "Arrival": "2022-06-16T16:30:00", + "Duration": 1480, + "JourneyMode": "Flight", + "Stops": [ + 13874 + ], + "Carriers": [ + 1202, + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "3796", + "CarrierId": 1202 + }, + { + "FlightNumber": "8441", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206152210--31781-1-17543-2206162325", + "SegmentIds": [ + 43, + 44 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T22:10:00", + "Arrival": "2022-06-16T23:25:00", + "Duration": 1515, + "JourneyMode": "Flight", + "Stops": [ + 13577 + ], + "Carriers": [ + 1760 + ], + "OperatingCarriers": [ + 1465, + 1897 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "1029", + "CarrierId": 1760 + }, + { + "FlightNumber": "1090", + "CarrierId": 1760 + } + ] + }, + { + "Id": "13870-2206151435--32680-1-17543-2206151935", + "SegmentIds": [ + 45, + 26 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T14:35:00", + "Arrival": "2022-06-15T19:35:00", + "Duration": 300, + "JourneyMode": "Flight", + "Stops": [ + 15434 + ], + "Carriers": [ + 1816 + ], + "OperatingCarriers": [ + 1816 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "4011", + "CarrierId": 1816 + }, + { + "FlightNumber": "6067", + "CarrierId": 1816 + } + ] + }, + { + "Id": "13870-2206150725--32222-2-17543-2206151610", + "SegmentIds": [ + 46, + 47, + 48 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T07:25:00", + "Arrival": "2022-06-15T16:10:00", + "Duration": 525, + "JourneyMode": "Flight", + "Stops": [ + 9409, + 12404 + ], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8858", + "CarrierId": 1218 + }, + { + "FlightNumber": "8450", + "CarrierId": 1218 + }, + { + "FlightNumber": "8433", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206151600--32222-0-17543-2206151700", + "SegmentIds": [ + 49 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T16:00:00", + "Arrival": "2022-06-15T17:00:00", + "Duration": 60, + "JourneyMode": "Flight", + "Stops": [], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8876", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206152000--32221,-32222-1-17543-2206152325", + "SegmentIds": [ + 50, + 3 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T20:00:00", + "Arrival": "2022-06-15T23:25:00", + "Duration": 205, + "JourneyMode": "Flight", + "Stops": [ + 16628 + ], + "Carriers": [ + 1202, + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8395", + "CarrierId": 1218 + }, + { + "FlightNumber": "3948", + "CarrierId": 1202 + } + ] + }, + { + "Id": "13870-2206151155--32222-2-17543-2206151935", + "SegmentIds": [ + 51, + 25, + 23 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T11:55:00", + "Arrival": "2022-06-15T19:35:00", + "Duration": 460, + "JourneyMode": "Flight", + "Stops": [ + 12404, + 15434 + ], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8400", + "CarrierId": 1218 + }, + { + "FlightNumber": "8519", + "CarrierId": 1218 + }, + { + "FlightNumber": "3808", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206151620--31781-1-17543-2206152325", + "SegmentIds": [ + 52, + 53 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T16:20:00", + "Arrival": "2022-06-15T23:25:00", + "Duration": 425, + "JourneyMode": "Flight", + "Stops": [ + 13577 + ], + "Carriers": [ + 1760 + ], + "OperatingCarriers": [ + 1760, + 1897 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "1015", + "CarrierId": 1760 + }, + { + "FlightNumber": "1090", + "CarrierId": 1760 + } + ] + }, + { + "Id": "13870-2206150725--32221,-32222-1-17543-2206152055", + "SegmentIds": [ + 54, + 55 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T07:25:00", + "Arrival": "2022-06-15T20:55:00", + "Duration": 810, + "JourneyMode": "Flight", + "Stops": [ + 9320 + ], + "Carriers": [ + 1202, + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "3866", + "CarrierId": 1202 + }, + { + "FlightNumber": "8380", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206150635--31781-1-17543-2206151200", + "SegmentIds": [ + 56, + 57 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T06:35:00", + "Arrival": "2022-06-15T12:00:00", + "Duration": 325, + "JourneyMode": "Flight", + "Stops": [ + 13577 + ], + "Carriers": [ + 1760 + ], + "OperatingCarriers": [ + 1465, + 1897 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "1023", + "CarrierId": 1760 + }, + { + "FlightNumber": "1094", + "CarrierId": 1760 + } + ] + }, + { + "Id": "13870-2206151550--32222-1-17543-2206160910", + "SegmentIds": [ + 58, + 59 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T15:50:00", + "Arrival": "2022-06-16T09:10:00", + "Duration": 1040, + "JourneyMode": "Flight", + "Stops": [ + 12404 + ], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "3804", + "CarrierId": 1218 + }, + { + "FlightNumber": "8431", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206151505--32680-2-17543-2206151935", + "SegmentIds": [ + 60, + 61, + 26 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T15:05:00", + "Arrival": "2022-06-15T19:35:00", + "Duration": 270, + "JourneyMode": "Flight", + "Stops": [ + 9409, + 15434 + ], + "Carriers": [ + 1816 + ], + "OperatingCarriers": [ + 2016, + 1816 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "4011", + "CarrierId": 1816 + }, + { + "FlightNumber": "4049", + "CarrierId": 1816 + }, + { + "FlightNumber": "4027", + "CarrierId": 1816 + } + ] + }, + { + "Id": "13870-2206152210--31781-1-17543-2206161740", + "SegmentIds": [ + 43, + 62 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T22:10:00", + "Arrival": "2022-06-16T17:40:00", + "Duration": 1170, + "JourneyMode": "Flight", + "Stops": [ + 13577 + ], + "Carriers": [ + 1760 + ], + "OperatingCarriers": [ + 1465, + 1897 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "1029", + "CarrierId": 1760 + }, + { + "FlightNumber": "1092", + "CarrierId": 1760 + } + ] + }, + { + "Id": "13870-2206150705--32680-2-17543-2206151935", + "SegmentIds": [ + 63, + 61, + 26 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T07:05:00", + "Arrival": "2022-06-15T19:35:00", + "Duration": 750, + "JourneyMode": "Flight", + "Stops": [ + 9409, + 15434 + ], + "Carriers": [ + 1816 + ], + "OperatingCarriers": [ + 2016, + 1816 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "4011", + "CarrierId": 1816 + }, + { + "FlightNumber": "4027", + "CarrierId": 1816 + }, + { + "FlightNumber": "4047", + "CarrierId": 1816 + } + ] + }, + { + "Id": "13870-2206151120--32222-1-17543-2206151630", + "SegmentIds": [ + 64, + 1 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T11:20:00", + "Arrival": "2022-06-15T16:30:00", + "Duration": 310, + "JourneyMode": "Flight", + "Stops": [ + 13874 + ], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8441", + "CarrierId": 1218 + }, + { + "FlightNumber": "3756", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206152015--31915-1-17543-2206152345", + "SegmentIds": [ + 65, + 7 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T20:15:00", + "Arrival": "2022-06-15T23:45:00", + "Duration": 210, + "JourneyMode": "Flight", + "Stops": [ + 12404 + ], + "Carriers": [ + 1090 + ], + "OperatingCarriers": [ + 1090 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "7210", + "CarrierId": 1090 + }, + { + "FlightNumber": "2084", + "CarrierId": 1090 + } + ] + }, + { + "Id": "13870-2206151015--32680-1-17543-2206151935", + "SegmentIds": [ + 66, + 26 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T10:15:00", + "Arrival": "2022-06-15T19:35:00", + "Duration": 560, + "JourneyMode": "Flight", + "Stops": [ + 15434 + ], + "Carriers": [ + 1816 + ], + "OperatingCarriers": [ + 1816 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "4011", + "CarrierId": 1816 + }, + { + "FlightNumber": "6013", + "CarrierId": 1816 + } + ] + }, + { + "Id": "13870-2206150620--32478-1-17543-2206151505", + "SegmentIds": [ + 67, + 68 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T06:20:00", + "Arrival": "2022-06-15T15:05:00", + "Duration": 525, + "JourneyMode": "Flight", + "Stops": [ + 10141 + ], + "Carriers": [ + 1710 + ], + "OperatingCarriers": [ + 1710 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "3732", + "CarrierId": 1710 + }, + { + "FlightNumber": "3751", + "CarrierId": 1710 + } + ] + }, + { + "Id": "13870-2206152235--32222-1-17543-2206161320", + "SegmentIds": [ + 69, + 19 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T22:35:00", + "Arrival": "2022-06-16T13:20:00", + "Duration": 885, + "JourneyMode": "Flight", + "Stops": [ + 15434 + ], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8402", + "CarrierId": 1218 + }, + { + "FlightNumber": "3916", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206151550--32221,-32222-1-17543-2206160910", + "SegmentIds": [ + 70, + 59 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T15:50:00", + "Arrival": "2022-06-16T09:10:00", + "Duration": 1040, + "JourneyMode": "Flight", + "Stops": [ + 12404 + ], + "Carriers": [ + 1202, + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8431", + "CarrierId": 1218 + }, + { + "FlightNumber": "3804", + "CarrierId": 1202 + } + ] + }, + { + "Id": "13870-2206152235--32222-2-17543-2206160910", + "SegmentIds": [ + 69, + 71, + 59 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T22:35:00", + "Arrival": "2022-06-16T09:10:00", + "Duration": 635, + "JourneyMode": "Flight", + "Stops": [ + 15434, + 12404 + ], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8431", + "CarrierId": 1218 + }, + { + "FlightNumber": "3916", + "CarrierId": 1218 + }, + { + "FlightNumber": "8514", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206151300--32222-2-17543-2206152055", + "SegmentIds": [ + 72, + 73, + 55 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T13:00:00", + "Arrival": "2022-06-15T20:55:00", + "Duration": 475, + "JourneyMode": "Flight", + "Stops": [ + 14164, + 9320 + ], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8380", + "CarrierId": 1218 + }, + { + "FlightNumber": "8292", + "CarrierId": 1218 + }, + { + "FlightNumber": "8265", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206150715--32222-2-17543-2206151240", + "SegmentIds": [ + 74, + 29, + 30 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T07:15:00", + "Arrival": "2022-06-15T12:40:00", + "Duration": 325, + "JourneyMode": "Flight", + "Stops": [ + 15434, + 12404 + ], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8514", + "CarrierId": 1218 + }, + { + "FlightNumber": "8431", + "CarrierId": 1218 + }, + { + "FlightNumber": "3918", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206150935--32222-1-17543-2206151815", + "SegmentIds": [ + 75, + 76 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T09:35:00", + "Arrival": "2022-06-15T18:15:00", + "Duration": 520, + "JourneyMode": "Flight", + "Stops": [ + 9772 + ], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 7 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "5001", + "CarrierId": 1218 + }, + { + "FlightNumber": "5046", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206150935--31685-1-17543-2206151815", + "SegmentIds": [ + 77, + 78 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T09:35:00", + "Arrival": "2022-06-15T18:15:00", + "Duration": 520, + "JourneyMode": "Flight", + "Stops": [ + 9772 + ], + "Carriers": [ + 7 + ], + "OperatingCarriers": [ + 7 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "1003", + "CarrierId": 7 + }, + { + "FlightNumber": "1316", + "CarrierId": 7 + } + ] + }, + { + "Id": "13870-2206151020--32132-1-17543-2206151630", + "SegmentIds": [ + 79, + 80 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T10:20:00", + "Arrival": "2022-06-15T16:30:00", + "Duration": 370, + "JourneyMode": "Flight", + "Stops": [ + 9451 + ], + "Carriers": [ + 1324 + ], + "OperatingCarriers": [ + 1324, + 1889 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "1700", + "CarrierId": 1324 + }, + { + "FlightNumber": "1503", + "CarrierId": 1324 + } + ] + }, + { + "Id": "13870-2206150715--32222-2-17543-2206151610", + "SegmentIds": [ + 74, + 29, + 48 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T07:15:00", + "Arrival": "2022-06-15T16:10:00", + "Duration": 535, + "JourneyMode": "Flight", + "Stops": [ + 15434, + 12404 + ], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8514", + "CarrierId": 1218 + }, + { + "FlightNumber": "8433", + "CarrierId": 1218 + }, + { + "FlightNumber": "3918", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206151545--32222-1-17543-2206152055", + "SegmentIds": [ + 81, + 55 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T15:45:00", + "Arrival": "2022-06-15T20:55:00", + "Duration": 310, + "JourneyMode": "Flight", + "Stops": [ + 9320 + ], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8380", + "CarrierId": 1218 + }, + { + "FlightNumber": "8948", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206152010--31781-1-17543-2206161740", + "SegmentIds": [ + 82, + 62 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T20:10:00", + "Arrival": "2022-06-16T17:40:00", + "Duration": 1290, + "JourneyMode": "Flight", + "Stops": [ + 13577 + ], + "Carriers": [ + 1760 + ], + "OperatingCarriers": [ + 1760, + 1897 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "1092", + "CarrierId": 1760 + }, + { + "FlightNumber": "1025", + "CarrierId": 1760 + } + ] + }, + { + "Id": "13870-2206152000--32222-1-17543-2206152325", + "SegmentIds": [ + 83, + 3 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T20:00:00", + "Arrival": "2022-06-15T23:25:00", + "Duration": 205, + "JourneyMode": "Flight", + "Stops": [ + 16628 + ], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8395", + "CarrierId": 1218 + }, + { + "FlightNumber": "3948", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206150705--32680-2-17543-2206151135", + "SegmentIds": [ + 63, + 84, + 32 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T07:05:00", + "Arrival": "2022-06-15T11:35:00", + "Duration": 270, + "JourneyMode": "Flight", + "Stops": [ + 9409, + 15434 + ], + "Carriers": [ + 1816 + ], + "OperatingCarriers": [ + 2016, + 1816 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "4007", + "CarrierId": 1816 + }, + { + "FlightNumber": "4047", + "CarrierId": 1816 + }, + { + "FlightNumber": "4025", + "CarrierId": 1816 + } + ] + }, + { + "Id": "13870-2206151545--32221,-32222-1-17543-2206151935", + "SegmentIds": [ + 85, + 23 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T15:45:00", + "Arrival": "2022-06-15T19:35:00", + "Duration": 230, + "JourneyMode": "Flight", + "Stops": [ + 15434 + ], + "Carriers": [ + 1202, + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8400", + "CarrierId": 1218 + }, + { + "FlightNumber": "3912", + "CarrierId": 1202 + } + ] + }, + { + "Id": "13870-2206151120--32222-2-17543-2206151630", + "SegmentIds": [ + 86, + 13, + 1 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T11:20:00", + "Arrival": "2022-06-15T16:30:00", + "Duration": 310, + "JourneyMode": "Flight", + "Stops": [ + 15434, + 13874 + ], + "Carriers": [ + 1218 + ], + "OperatingCarriers": [ + 1202, + 2007 + ], + "Directionality": "Outbound", + "FlightNumbers": [ + { + "FlightNumber": "8441", + "CarrierId": 1218 + }, + { + "FlightNumber": "8480", + "CarrierId": 1218 + }, + { + "FlightNumber": "3914", + "CarrierId": 1218 + } + ] + }, + { + "Id": "13870-2206151815--31915,-31685-1-17543-2206152205", + "SegmentIds": [ + 8, + 9 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T18:15:00", + "Arrival": "2022-06-15T22:05:00", + "Duration": 230, + "JourneyMode": "Flight", + "Stops": [ + 15434 + ], + "Carriers": [ + 1090, + 7 + ], + "OperatingCarriers": [ + 1090, + 7 + ], + "Directionality": "Inbound", + "FlightNumbers": [ + { + "FlightNumber": "5430", + "CarrierId": 1090 + }, + { + "FlightNumber": "3952", + "CarrierId": 7 + } + ] + }, + { + "Id": "13870-2206151535--31915,-31685-1-17543-2206152205", + "SegmentIds": [ + 11, + 9 + ], + "OriginStation": 13870, + "DestinationStation": 17543, + "Departure": "2022-06-15T15:35:00", + "Arrival": "2022-06-15T22:05:00", + "Duration": 390, + "JourneyMode": "Flight", + "Stops": [ + 15434 + ], + "Carriers": [ + 1090, + 7 + ], + "OperatingCarriers": [ + 1090, + 7 + ], + "Directionality": "Inbound", + "FlightNumbers": [ + { + "FlightNumber": "3952", + "CarrierId": 7 + }, + { + "FlightNumber": "2053", + "CarrierId": 1090 + } + ] + } + ], + "Segments": [ + { + "Id": 0, + "OriginStation": 13870, + "DestinationStation": 13874, + "DepartureDateTime": "2022-06-15T11:20:00", + "ArrivalDateTime": "2022-06-15T12:45:00", + "Carrier": 1202, + "OperatingCarrier": 1202, + "Duration": 85, + "FlightNumber": "3756", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 1, + "OriginStation": 13874, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T15:25:00", + "ArrivalDateTime": "2022-06-15T16:30:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 65, + "FlightNumber": "8441", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 2, + "OriginStation": 13870, + "DestinationStation": 16628, + "DepartureDateTime": "2022-06-15T11:25:00", + "ArrivalDateTime": "2022-06-15T12:35:00", + "Carrier": 1202, + "OperatingCarrier": 1202, + "Duration": 70, + "FlightNumber": "3950", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 3, + "OriginStation": 16628, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T22:15:00", + "ArrivalDateTime": "2022-06-15T23:25:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 70, + "FlightNumber": "8395", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 4, + "OriginStation": 13870, + "DestinationStation": 9925, + "DepartureDateTime": "2022-06-15T11:50:00", + "ArrivalDateTime": "2022-06-15T12:55:00", + "Carrier": 1218, + "OperatingCarrier": 1218, + "Duration": 65, + "FlightNumber": "426", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 5, + "OriginStation": 9925, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-16T08:45:00", + "ArrivalDateTime": "2022-06-16T09:55:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 70, + "FlightNumber": "8313", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 6, + "OriginStation": 13870, + "DestinationStation": 12404, + "DepartureDateTime": "2022-06-15T20:50:00", + "ArrivalDateTime": "2022-06-15T22:05:00", + "Carrier": 7, + "OperatingCarrier": 7, + "Duration": 75, + "FlightNumber": "3417", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 7, + "OriginStation": 12404, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T23:00:00", + "ArrivalDateTime": "2022-06-15T23:45:00", + "Carrier": 1090, + "OperatingCarrier": 1090, + "Duration": 45, + "FlightNumber": "7210", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 8, + "OriginStation": 13870, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T18:15:00", + "ArrivalDateTime": "2022-06-15T19:40:00", + "Carrier": 1090, + "OperatingCarrier": 1090, + "Duration": 85, + "FlightNumber": "5430", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 9, + "OriginStation": 15434, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T21:10:00", + "ArrivalDateTime": "2022-06-15T22:05:00", + "Carrier": 7, + "OperatingCarrier": 7, + "Duration": 55, + "FlightNumber": "3952", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 10, + "OriginStation": 13870, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T15:05:00", + "ArrivalDateTime": "2022-06-15T16:05:00", + "Carrier": 1816, + "OperatingCarrier": 1816, + "Duration": 60, + "FlightNumber": "4065", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 11, + "OriginStation": 13870, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T15:35:00", + "ArrivalDateTime": "2022-06-15T17:00:00", + "Carrier": 1090, + "OperatingCarrier": 1090, + "Duration": 85, + "FlightNumber": "2053", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 12, + "OriginStation": 13870, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T11:20:00", + "ArrivalDateTime": "2022-06-15T12:45:00", + "Carrier": 1202, + "OperatingCarrier": 1202, + "Duration": 85, + "FlightNumber": "3914", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 13, + "OriginStation": 15434, + "DestinationStation": 13874, + "DepartureDateTime": "2022-06-15T13:55:00", + "ArrivalDateTime": "2022-06-15T14:40:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 45, + "FlightNumber": "8480", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 14, + "OriginStation": 13870, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T20:20:00", + "ArrivalDateTime": "2022-06-15T21:25:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 65, + "FlightNumber": "8878", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 15, + "OriginStation": 13870, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T07:45:00", + "ArrivalDateTime": "2022-06-15T08:50:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 65, + "FlightNumber": "8872", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 16, + "OriginStation": 13870, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T21:45:00", + "ArrivalDateTime": "2022-06-15T23:05:00", + "Carrier": 1816, + "OperatingCarrier": 1816, + "Duration": 80, + "FlightNumber": "6049", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 17, + "OriginStation": 15434, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-16T07:05:00", + "ArrivalDateTime": "2022-06-16T08:00:00", + "Carrier": 1816, + "OperatingCarrier": 1816, + "Duration": 55, + "FlightNumber": "4007", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 18, + "OriginStation": 13870, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T22:35:00", + "ArrivalDateTime": "2022-06-15T23:55:00", + "Carrier": 1202, + "OperatingCarrier": 1202, + "Duration": 80, + "FlightNumber": "3916", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 19, + "OriginStation": 15434, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-16T12:25:00", + "ArrivalDateTime": "2022-06-16T13:20:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 55, + "FlightNumber": "8402", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 20, + "OriginStation": 13870, + "DestinationStation": 9772, + "DepartureDateTime": "2022-06-15T15:10:00", + "ArrivalDateTime": "2022-06-15T16:35:00", + "Carrier": 1816, + "OperatingCarrier": 1816, + "Duration": 85, + "FlightNumber": "7703", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 21, + "OriginStation": 9772, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T22:00:00", + "ArrivalDateTime": "2022-06-15T22:45:00", + "Carrier": 1816, + "OperatingCarrier": 1816, + "Duration": 45, + "FlightNumber": "6103", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 22, + "OriginStation": 13870, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T15:45:00", + "ArrivalDateTime": "2022-06-15T17:10:00", + "Carrier": 1218, + "OperatingCarrier": 1202, + "Duration": 85, + "FlightNumber": "3912", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 23, + "OriginStation": 15434, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T18:40:00", + "ArrivalDateTime": "2022-06-15T19:35:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 55, + "FlightNumber": "8400", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 24, + "OriginStation": 13870, + "DestinationStation": 12404, + "DepartureDateTime": "2022-06-15T11:55:00", + "ArrivalDateTime": "2022-06-15T13:10:00", + "Carrier": 1202, + "OperatingCarrier": 1202, + "Duration": 75, + "FlightNumber": "3808", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 25, + "OriginStation": 12404, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T17:10:00", + "ArrivalDateTime": "2022-06-15T17:55:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 45, + "FlightNumber": "8519", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 26, + "OriginStation": 15434, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T18:40:00", + "ArrivalDateTime": "2022-06-15T19:35:00", + "Carrier": 1816, + "OperatingCarrier": 1816, + "Duration": 55, + "FlightNumber": "4011", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 27, + "OriginStation": 13870, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T07:05:00", + "ArrivalDateTime": "2022-06-15T08:05:00", + "Carrier": 1816, + "OperatingCarrier": 1816, + "Duration": 60, + "FlightNumber": "4063", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 28, + "OriginStation": 13870, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T07:15:00", + "ArrivalDateTime": "2022-06-15T08:40:00", + "Carrier": 1202, + "OperatingCarrier": 1202, + "Duration": 85, + "FlightNumber": "3918", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 29, + "OriginStation": 15434, + "DestinationStation": 12404, + "DepartureDateTime": "2022-06-15T09:45:00", + "ArrivalDateTime": "2022-06-15T10:30:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 45, + "FlightNumber": "8514", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 30, + "OriginStation": 12404, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T11:50:00", + "ArrivalDateTime": "2022-06-15T12:40:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 50, + "FlightNumber": "8431", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 31, + "OriginStation": 13870, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T08:15:00", + "ArrivalDateTime": "2022-06-15T09:35:00", + "Carrier": 1816, + "OperatingCarrier": 1816, + "Duration": 80, + "FlightNumber": "6031", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 32, + "OriginStation": 15434, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T10:40:00", + "ArrivalDateTime": "2022-06-15T11:35:00", + "Carrier": 1816, + "OperatingCarrier": 1816, + "Duration": 55, + "FlightNumber": "4007", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 33, + "OriginStation": 13870, + "DestinationStation": 9451, + "DepartureDateTime": "2022-06-15T17:10:00", + "ArrivalDateTime": "2022-06-15T19:50:00", + "Carrier": 1324, + "OperatingCarrier": 1324, + "Duration": 160, + "FlightNumber": "1704", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 34, + "OriginStation": 9451, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T20:35:00", + "ArrivalDateTime": "2022-06-15T23:00:00", + "Carrier": 1324, + "OperatingCarrier": 1889, + "Duration": 145, + "FlightNumber": "1501", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 35, + "OriginStation": 13870, + "DestinationStation": 16142, + "DepartureDateTime": "2022-06-15T15:50:00", + "ArrivalDateTime": "2022-06-15T17:05:00", + "Carrier": 1218, + "OperatingCarrier": 1202, + "Duration": 75, + "FlightNumber": "3878", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 36, + "OriginStation": 16142, + "DestinationStation": 9925, + "DepartureDateTime": "2022-06-15T19:45:00", + "ArrivalDateTime": "2022-06-15T20:50:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 65, + "FlightNumber": "8357", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 37, + "OriginStation": 9925, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T22:00:00", + "ArrivalDateTime": "2022-06-15T23:10:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 70, + "FlightNumber": "8311", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 38, + "OriginStation": 13870, + "DestinationStation": 17109, + "DepartureDateTime": "2022-06-15T08:25:00", + "ArrivalDateTime": "2022-06-15T10:20:00", + "Carrier": 1090, + "OperatingCarrier": 1090, + "Duration": 115, + "FlightNumber": "5897", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 39, + "OriginStation": 17109, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T12:05:00", + "ArrivalDateTime": "2022-06-15T14:05:00", + "Carrier": 1090, + "OperatingCarrier": 1090, + "Duration": 120, + "FlightNumber": "2259", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 40, + "OriginStation": 13870, + "DestinationStation": 16142, + "DepartureDateTime": "2022-06-15T15:50:00", + "ArrivalDateTime": "2022-06-15T17:05:00", + "Carrier": 1202, + "OperatingCarrier": 1202, + "Duration": 75, + "FlightNumber": "3878", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 41, + "OriginStation": 13870, + "DestinationStation": 13874, + "DepartureDateTime": "2022-06-15T15:50:00", + "ArrivalDateTime": "2022-06-15T17:20:00", + "Carrier": 1202, + "OperatingCarrier": 1202, + "Duration": 90, + "FlightNumber": "3796", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 42, + "OriginStation": 13874, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-16T15:25:00", + "ArrivalDateTime": "2022-06-16T16:30:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 65, + "FlightNumber": "8441", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 43, + "OriginStation": 13870, + "DestinationStation": 13577, + "DepartureDateTime": "2022-06-15T22:10:00", + "ArrivalDateTime": "2022-06-15T22:30:00", + "Carrier": 1760, + "OperatingCarrier": 1465, + "Duration": 80, + "FlightNumber": "1029", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 44, + "OriginStation": 13577, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-16T20:20:00", + "ArrivalDateTime": "2022-06-16T23:25:00", + "Carrier": 1760, + "OperatingCarrier": 1897, + "Duration": 125, + "FlightNumber": "1090", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 45, + "OriginStation": 13870, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T14:35:00", + "ArrivalDateTime": "2022-06-15T15:55:00", + "Carrier": 1816, + "OperatingCarrier": 1816, + "Duration": 80, + "FlightNumber": "6067", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 46, + "OriginStation": 13870, + "DestinationStation": 9409, + "DepartureDateTime": "2022-06-15T07:25:00", + "ArrivalDateTime": "2022-06-15T08:35:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 70, + "FlightNumber": "8858", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 47, + "OriginStation": 9409, + "DestinationStation": 12404, + "DepartureDateTime": "2022-06-15T13:50:00", + "ArrivalDateTime": "2022-06-15T14:35:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 45, + "FlightNumber": "8450", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 48, + "OriginStation": 12404, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T15:20:00", + "ArrivalDateTime": "2022-06-15T16:10:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 50, + "FlightNumber": "8433", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 49, + "OriginStation": 13870, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T16:00:00", + "ArrivalDateTime": "2022-06-15T17:00:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 60, + "FlightNumber": "8876", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 50, + "OriginStation": 13870, + "DestinationStation": 16628, + "DepartureDateTime": "2022-06-15T20:00:00", + "ArrivalDateTime": "2022-06-15T21:05:00", + "Carrier": 1202, + "OperatingCarrier": 1202, + "Duration": 65, + "FlightNumber": "3948", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 51, + "OriginStation": 13870, + "DestinationStation": 12404, + "DepartureDateTime": "2022-06-15T11:55:00", + "ArrivalDateTime": "2022-06-15T13:10:00", + "Carrier": 1218, + "OperatingCarrier": 1202, + "Duration": 75, + "FlightNumber": "3808", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 52, + "OriginStation": 13870, + "DestinationStation": 13577, + "DepartureDateTime": "2022-06-15T16:20:00", + "ArrivalDateTime": "2022-06-15T16:40:00", + "Carrier": 1760, + "OperatingCarrier": 1760, + "Duration": 80, + "FlightNumber": "1015", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 53, + "OriginStation": 13577, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T20:20:00", + "ArrivalDateTime": "2022-06-15T23:25:00", + "Carrier": 1760, + "OperatingCarrier": 1897, + "Duration": 125, + "FlightNumber": "1090", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 54, + "OriginStation": 13870, + "DestinationStation": 9320, + "DepartureDateTime": "2022-06-15T07:25:00", + "ArrivalDateTime": "2022-06-15T08:40:00", + "Carrier": 1202, + "OperatingCarrier": 1202, + "Duration": 75, + "FlightNumber": "3866", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 55, + "OriginStation": 9320, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T19:25:00", + "ArrivalDateTime": "2022-06-15T20:55:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 90, + "FlightNumber": "8380", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 56, + "OriginStation": 13870, + "DestinationStation": 13577, + "DepartureDateTime": "2022-06-15T06:35:00", + "ArrivalDateTime": "2022-06-15T06:55:00", + "Carrier": 1760, + "OperatingCarrier": 1465, + "Duration": 80, + "FlightNumber": "1023", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 57, + "OriginStation": 13577, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T08:55:00", + "ArrivalDateTime": "2022-06-15T12:00:00", + "Carrier": 1760, + "OperatingCarrier": 1897, + "Duration": 125, + "FlightNumber": "1094", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 58, + "OriginStation": 13870, + "DestinationStation": 12404, + "DepartureDateTime": "2022-06-15T15:50:00", + "ArrivalDateTime": "2022-06-15T17:00:00", + "Carrier": 1218, + "OperatingCarrier": 1202, + "Duration": 70, + "FlightNumber": "3804", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 59, + "OriginStation": 12404, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-16T08:20:00", + "ArrivalDateTime": "2022-06-16T09:10:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 50, + "FlightNumber": "8431", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 60, + "OriginStation": 13870, + "DestinationStation": 9409, + "DepartureDateTime": "2022-06-15T15:05:00", + "ArrivalDateTime": "2022-06-15T16:10:00", + "Carrier": 1816, + "OperatingCarrier": 2016, + "Duration": 65, + "FlightNumber": "4049", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 61, + "OriginStation": 9409, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T17:00:00", + "ArrivalDateTime": "2022-06-15T17:50:00", + "Carrier": 1816, + "OperatingCarrier": 2016, + "Duration": 50, + "FlightNumber": "4027", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 62, + "OriginStation": 13577, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-16T14:35:00", + "ArrivalDateTime": "2022-06-16T17:40:00", + "Carrier": 1760, + "OperatingCarrier": 1897, + "Duration": 125, + "FlightNumber": "1092", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 63, + "OriginStation": 13870, + "DestinationStation": 9409, + "DepartureDateTime": "2022-06-15T07:05:00", + "ArrivalDateTime": "2022-06-15T08:10:00", + "Carrier": 1816, + "OperatingCarrier": 2016, + "Duration": 65, + "FlightNumber": "4047", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 64, + "OriginStation": 13870, + "DestinationStation": 13874, + "DepartureDateTime": "2022-06-15T11:20:00", + "ArrivalDateTime": "2022-06-15T12:45:00", + "Carrier": 1218, + "OperatingCarrier": 1202, + "Duration": 85, + "FlightNumber": "3756", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 65, + "OriginStation": 13870, + "DestinationStation": 12404, + "DepartureDateTime": "2022-06-15T20:15:00", + "ArrivalDateTime": "2022-06-15T21:30:00", + "Carrier": 1090, + "OperatingCarrier": 1090, + "Duration": 75, + "FlightNumber": "2084", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 66, + "OriginStation": 13870, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T10:15:00", + "ArrivalDateTime": "2022-06-15T11:35:00", + "Carrier": 1816, + "OperatingCarrier": 1816, + "Duration": 80, + "FlightNumber": "6013", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 67, + "OriginStation": 13870, + "DestinationStation": 10141, + "DepartureDateTime": "2022-06-15T06:20:00", + "ArrivalDateTime": "2022-06-15T08:35:00", + "Carrier": 1710, + "OperatingCarrier": 1710, + "Duration": 135, + "FlightNumber": "3732", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 68, + "OriginStation": 10141, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T12:45:00", + "ArrivalDateTime": "2022-06-15T15:05:00", + "Carrier": 1710, + "OperatingCarrier": 1710, + "Duration": 140, + "FlightNumber": "3751", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 69, + "OriginStation": 13870, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T22:35:00", + "ArrivalDateTime": "2022-06-15T23:55:00", + "Carrier": 1218, + "OperatingCarrier": 1202, + "Duration": 80, + "FlightNumber": "3916", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 70, + "OriginStation": 13870, + "DestinationStation": 12404, + "DepartureDateTime": "2022-06-15T15:50:00", + "ArrivalDateTime": "2022-06-15T17:00:00", + "Carrier": 1202, + "OperatingCarrier": 1202, + "Duration": 70, + "FlightNumber": "3804", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 71, + "OriginStation": 15434, + "DestinationStation": 12404, + "DepartureDateTime": "2022-06-16T07:00:00", + "ArrivalDateTime": "2022-06-16T07:45:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 45, + "FlightNumber": "8514", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 72, + "OriginStation": 13870, + "DestinationStation": 14164, + "DepartureDateTime": "2022-06-15T13:00:00", + "ArrivalDateTime": "2022-06-15T14:50:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 110, + "FlightNumber": "8292", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 73, + "OriginStation": 14164, + "DestinationStation": 9320, + "DepartureDateTime": "2022-06-15T17:00:00", + "ArrivalDateTime": "2022-06-15T17:55:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 55, + "FlightNumber": "8265", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 74, + "OriginStation": 13870, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T07:15:00", + "ArrivalDateTime": "2022-06-15T08:40:00", + "Carrier": 1218, + "OperatingCarrier": 1202, + "Duration": 85, + "FlightNumber": "3918", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 75, + "OriginStation": 13870, + "DestinationStation": 9772, + "DepartureDateTime": "2022-06-15T09:35:00", + "ArrivalDateTime": "2022-06-15T10:55:00", + "Carrier": 1218, + "OperatingCarrier": 7, + "Duration": 80, + "FlightNumber": "5001", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 76, + "OriginStation": 9772, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T17:15:00", + "ArrivalDateTime": "2022-06-15T18:15:00", + "Carrier": 1218, + "OperatingCarrier": 7, + "Duration": 60, + "FlightNumber": "5046", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 77, + "OriginStation": 13870, + "DestinationStation": 9772, + "DepartureDateTime": "2022-06-15T09:35:00", + "ArrivalDateTime": "2022-06-15T10:55:00", + "Carrier": 7, + "OperatingCarrier": 7, + "Duration": 80, + "FlightNumber": "1003", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 78, + "OriginStation": 9772, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T17:15:00", + "ArrivalDateTime": "2022-06-15T18:15:00", + "Carrier": 7, + "OperatingCarrier": 7, + "Duration": 60, + "FlightNumber": "1316", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 79, + "OriginStation": 13870, + "DestinationStation": 9451, + "DepartureDateTime": "2022-06-15T10:20:00", + "ArrivalDateTime": "2022-06-15T13:00:00", + "Carrier": 1324, + "OperatingCarrier": 1324, + "Duration": 160, + "FlightNumber": "1700", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 80, + "OriginStation": 9451, + "DestinationStation": 17543, + "DepartureDateTime": "2022-06-15T14:05:00", + "ArrivalDateTime": "2022-06-15T16:30:00", + "Carrier": 1324, + "OperatingCarrier": 1889, + "Duration": 145, + "FlightNumber": "1503", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 81, + "OriginStation": 13870, + "DestinationStation": 9320, + "DepartureDateTime": "2022-06-15T15:45:00", + "ArrivalDateTime": "2022-06-15T17:00:00", + "Carrier": 1218, + "OperatingCarrier": 2007, + "Duration": 75, + "FlightNumber": "8948", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 82, + "OriginStation": 13870, + "DestinationStation": 13577, + "DepartureDateTime": "2022-06-15T20:10:00", + "ArrivalDateTime": "2022-06-15T20:30:00", + "Carrier": 1760, + "OperatingCarrier": 1760, + "Duration": 80, + "FlightNumber": "1025", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 83, + "OriginStation": 13870, + "DestinationStation": 16628, + "DepartureDateTime": "2022-06-15T20:00:00", + "ArrivalDateTime": "2022-06-15T21:05:00", + "Carrier": 1218, + "OperatingCarrier": 1202, + "Duration": 65, + "FlightNumber": "3948", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 84, + "OriginStation": 9409, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T08:55:00", + "ArrivalDateTime": "2022-06-15T09:45:00", + "Carrier": 1816, + "OperatingCarrier": 2016, + "Duration": 50, + "FlightNumber": "4025", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 85, + "OriginStation": 13870, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T15:45:00", + "ArrivalDateTime": "2022-06-15T17:10:00", + "Carrier": 1202, + "OperatingCarrier": 1202, + "Duration": 85, + "FlightNumber": "3912", + "JourneyMode": "Flight", + "Directionality": "Outbound" + }, + { + "Id": 86, + "OriginStation": 13870, + "DestinationStation": 15434, + "DepartureDateTime": "2022-06-15T11:20:00", + "ArrivalDateTime": "2022-06-15T12:45:00", + "Carrier": 1218, + "OperatingCarrier": 1202, + "Duration": 85, + "FlightNumber": "3914", + "JourneyMode": "Flight", + "Directionality": "Outbound" + } + ], + "Carriers": [ + { + "Id": 1202, + "Code": "I2", + "Name": "Iberia Express", + "ImageUrl": "https://s1.apideeplink.com/images/airlines/I2.png", + "DisplayCode": "I2" + }, + { + "Id": 2007, + "Code": "YW", + "Name": "Air Nostrum", + "ImageUrl": "https://s1.apideeplink.com/images/airlines/YW.png", + "DisplayCode": "YW" + }, + { + "Id": 1218, + "Code": "IB", + "Name": "Iberia", + "ImageUrl": "https://s1.apideeplink.com/images/airlines/IB.png", + "DisplayCode": "IB" + }, + { + "Id": 7, + "Code": "VY", + "Name": "Vueling Airlines", + "ImageUrl": "https://s1.apideeplink.com/images/airlines/07.png", + "DisplayCode": "VY" + }, + { + "Id": 1090, + "Code": "FR", + "Name": "Ryanair", + "ImageUrl": "https://s1.apideeplink.com/images/airlines/default.png", + "DisplayCode": "FR" + }, + { + "Id": 1816, + "Code": "UX", + "Name": "Air Europa", + "ImageUrl": "https://s1.apideeplink.com/images/airlines/UX.png", + "DisplayCode": "UX" + }, + { + "Id": 1324, + "Code": "KL", + "Name": "KLM", + "ImageUrl": "https://s1.apideeplink.com/images/airlines/KL.png", + "DisplayCode": "KL" + }, + { + "Id": 1889, + "Code": "WA", + "Name": "KLM Cityhopper", + "ImageUrl": "https://s1.apideeplink.com/images/airlines/WA.png", + "DisplayCode": "WA" + }, + { + "Id": 1465, + "Code": "NI", + "Name": "Portugalia Airlines", + "ImageUrl": "https://s1.apideeplink.com/images/airlines/NI.png", + "DisplayCode": "NI" + }, + { + "Id": 1760, + "Code": "TP", + "Name": "TAP Air Portugal", + "ImageUrl": "https://s1.apideeplink.com/images/airlines/TP.png", + "DisplayCode": "TP" + }, + { + "Id": 1897, + "Code": "WI", + "Name": "White Airways", + "ImageUrl": "https://s1.apideeplink.com/images/airlines/default.png", + "DisplayCode": "WI" + }, + { + "Id": 2016, + "Code": "X5", + "Name": "Air Europa Express", + "ImageUrl": "https://s1.apideeplink.com/images/airlines/Z0.png", + "DisplayCode": "OVA" + }, + { + "Id": 1710, + "Code": "SN", + "Name": "Brussels Airlines", + "ImageUrl": "https://s1.apideeplink.com/images/airlines/SN.png", + "DisplayCode": "SN" + } + ], + "Agents": [ + { + "Id": 2388174, + "Name": "Air Europa", + "ImageUrl": "https://s1.apideeplink.com/images/websites/elin.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "Airline" + }, + { + "Id": 3855438, + "Name": "Ryanair", + "ImageUrl": "https://s1.apideeplink.com/images/websites/ryan.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "Airline" + }, + { + "Id": 2363321, + "Name": "easyJet", + "ImageUrl": "https://s1.apideeplink.com/images/websites/easy.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "Airline" + }, + { + "Id": 4288780, + "Name": "Vueling Airlines", + "ImageUrl": "https://s1.apideeplink.com/images/websites/vuel.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "Airline" + }, + { + "Id": 4289593, + "Name": "Vueling", + "ImageUrl": "https://s1.apideeplink.com/images/websites/vuvi.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "Airline" + }, + { + "Id": 2409351, + "Name": "Eurowings", + "ImageUrl": "https://s1.apideeplink.com/images/websites/eurw.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "Airline" + }, + { + "Id": 3503123, + "Name": "Opodo", + "ImageUrl": "https://s1.apideeplink.com/images/websites/opes.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "TravelAgent" + }, + { + "Id": 4035342, + "Name": "Travelgenio", + "ImageUrl": "https://s1.apideeplink.com/images/websites/tgen.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "TravelAgent" + }, + { + "Id": 2369555, + "Name": "eDreams", + "ImageUrl": "https://s1.apideeplink.com/images/websites/edes.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "TravelAgent" + }, + { + "Id": 2807320, + "Name": "Iberia Express", + "ImageUrl": "https://s1.apideeplink.com/images/websites/ibex.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "Airline" + }, + { + "Id": 3164435, + "Name": "lastminute.com", + "ImageUrl": "https://s1.apideeplink.com/images/websites/lmes.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "TravelAgent" + }, + { + "Id": 2627603, + "Name": "GotoGate", + "ImageUrl": "https://s1.apideeplink.com/images/websites/gtes.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "TravelAgent" + }, + { + "Id": 3588371, + "Name": "Tripair", + "ImageUrl": "https://s1.apideeplink.com/images/websites/pees.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "TravelAgent" + }, + { + "Id": 3593711, + "Name": "Pegasus Airlines", + "ImageUrl": "https://s1.apideeplink.com/images/websites/pgt_.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "Airline" + }, + { + "Id": 4074515, + "Name": "Tix.es", + "ImageUrl": "https://s1.apideeplink.com/images/websites/txes.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "TravelAgent" + }, + { + "Id": 1891970, + "Name": "Rumbo", + "ImageUrl": "https://s1.apideeplink.com/images/websites/a582.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "TravelAgent" + }, + { + "Id": 2031529, + "Name": "transavia", + "ImageUrl": "https://s1.apideeplink.com/images/websites/basi.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "Airline" + }, + { + "Id": 4033043, + "Name": "Travelfrom.es", + "ImageUrl": "https://s1.apideeplink.com/images/websites/tfes.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "TravelAgent" + }, + { + "Id": 2185235, + "Name": "Trip.com", + "ImageUrl": "https://s1.apideeplink.com/images/websites/ctes.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "TravelAgent" + }, + { + "Id": 4251817, + "Name": "Viajes El Corte Ingles", + "ImageUrl": "https://s1.apideeplink.com/images/websites/veci.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": false, + "Type": "TravelAgent" + }, + { + "Id": 3934928, + "Name": "Kiwi.com", + "ImageUrl": "https://s1.apideeplink.com/images/websites/skyp.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "TravelAgent" + }, + { + "Id": 2807314, + "Name": "Iberia", + "ImageUrl": "https://s1.apideeplink.com/images/websites/iber.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "Airline" + }, + { + "Id": 3986805, + "Name": "Travel2Be", + "ImageUrl": "https://s1.apideeplink.com/images/websites/t2be.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "TravelAgent" + }, + { + "Id": 3291155, + "Name": "Mytrip", + "ImageUrl": "https://s1.apideeplink.com/images/websites/mtes.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "TravelAgent" + }, + { + "Id": 4372746, + "Name": "Wizz Air", + "ImageUrl": "https://s1.apideeplink.com/images/websites/wizz.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "Airline" + }, + { + "Id": 1964051, + "Name": "BudgetAir.es", + "ImageUrl": "https://s1.apideeplink.com/images/websites/ates.png", + "Status": "UpdatesComplete", + "OptimisedForMobile": true, + "Type": "TravelAgent" + } + ], + "Places": [ + { + "Id": 4609, + "ParentId": 202, + "Code": "LIS", + "Type": "City", + "Name": "Lisbon" + }, + { + "Id": 9409, + "ParentId": 470, + "Code": "ALC", + "Type": "Airport", + "Name": "Alicante" + }, + { + "Id": 4866, + "ParentId": 200, + "Code": "AGP", + "Type": "City", + "Name": "Málaga" + }, + { + "Id": 9925, + "ParentId": 967, + "Code": "BIO", + "Type": "Airport", + "Name": "Bilbao" + }, + { + "Id": 17543, + "ParentId": 8162, + "Code": "VLC", + "Type": "Airport", + "Name": "Valencia" + }, + { + "Id": 967, + "ParentId": 200, + "Code": "BIO", + "Type": "City", + "Name": "Bilbao" + }, + { + "Id": 200, + "Code": "ES", + "Type": "Country", + "Name": "Spain" + }, + { + "Id": 13577, + "ParentId": 4609, + "Code": "LIS", + "Type": "Airport", + "Name": "Lisbon" + }, + { + "Id": 15434, + "ParentId": 6065, + "Code": "PMI", + "Type": "Airport", + "Name": "Palma - Majorca" + }, + { + "Id": 202, + "Code": "PT", + "Type": "Country", + "Name": "Portugal" + }, + { + "Id": 16142, + "ParentId": 6910, + "Code": "SCQ", + "Type": "Airport", + "Name": "Santiago de Compostela" + }, + { + "Id": 782, + "ParentId": 200, + "Code": "BCN", + "Type": "City", + "Name": "Barcelona" + }, + { + "Id": 14164, + "ParentId": 4972, + "Code": "MLN", + "Type": "Airport", + "Name": "Melilla" + }, + { + "Id": 17109, + "ParentId": 7929, + "Code": "TRN", + "Type": "Airport", + "Name": "Turin" + }, + { + "Id": 470, + "ParentId": 200, + "Code": "ALC", + "Type": "City", + "Name": "Alicante" + }, + { + "Id": 1178, + "ParentId": 240, + "Code": "BRU", + "Type": "City", + "Name": "Brussels" + }, + { + "Id": 10141, + "ParentId": 1178, + "Code": "BRU", + "Type": "Airport", + "Name": "Brussels International" + }, + { + "Id": 8162, + "ParentId": 200, + "Code": "VLC", + "Type": "City", + "Name": "Valencia" + }, + { + "Id": 226, + "Code": "IT", + "Type": "Country", + "Name": "Italy" + }, + { + "Id": 7014, + "ParentId": 200, + "Code": "SVQ", + "Type": "City", + "Name": "Seville" + }, + { + "Id": 9320, + "ParentId": 4866, + "Code": "AGP", + "Type": "Airport", + "Name": "Malaga" + }, + { + "Id": 3371, + "ParentId": 200, + "Code": "IBZ", + "Type": "City", + "Name": "Ibiza" + }, + { + "Id": 9451, + "ParentId": 509, + "Code": "AMS", + "Type": "Airport", + "Name": "Amsterdam" + }, + { + "Id": 235, + "Code": "NL", + "Type": "Country", + "Name": "Netherlands" + }, + { + "Id": 9772, + "ParentId": 782, + "Code": "BCN", + "Type": "Airport", + "Name": "Barcelona" + }, + { + "Id": 4972, + "ParentId": 200, + "Code": "MLN", + "Type": "City", + "Name": "Melilla" + }, + { + "Id": 13870, + "ParentId": 4854, + "Code": "MAD", + "Type": "Airport", + "Name": "Madrid" + }, + { + "Id": 4976, + "ParentId": 200, + "Code": "MAH", + "Type": "City", + "Name": "Menorca" + }, + { + "Id": 240, + "Code": "BE", + "Type": "Country", + "Name": "Belgium" + }, + { + "Id": 6065, + "ParentId": 200, + "Code": "PMI", + "Type": "City", + "Name": "Palma" + }, + { + "Id": 13874, + "ParentId": 4976, + "Code": "MAH", + "Type": "Airport", + "Name": "Menorca" + }, + { + "Id": 12404, + "ParentId": 3371, + "Code": "IBZ", + "Type": "Airport", + "Name": "Ibiza" + }, + { + "Id": 16628, + "ParentId": 7014, + "Code": "SVQ", + "Type": "Airport", + "Name": "Seville" + }, + { + "Id": 4854, + "ParentId": 200, + "Code": "MAD", + "Type": "City", + "Name": "Madrid" + }, + { + "Id": 7929, + "ParentId": 226, + "Code": "TRN", + "Type": "City", + "Name": "Turin" + }, + { + "Id": 509, + "ParentId": 235, + "Code": "AMS", + "Type": "City", + "Name": "Amsterdam" + }, + { + "Id": 6910, + "ParentId": 200, + "Code": "SCQ", + "Type": "City", + "Name": "Santiago de Compostela" + } + ], + "Currencies": [ + { + "Code": "EUR", + "Symbol": "€", + "ThousandsSeparator": ".", + "DecimalSeparator": ",", + "SymbolOnLeft": false, + "SpaceBetweenAmountAndSymbol": true, + "RoundingCoefficient": 0, + "DecimalDigits": 2 + } + ] +} \ No newline at end of file diff --git a/e-rights-common/src/test/resources/skyscanner/test_10may2022/busi.json b/e-rights-common/src/test/resources/skyscanner/test_10may2022/busi.json new file mode 100644 index 0000000..5fceffd --- /dev/null +++ b/e-rights-common/src/test/resources/skyscanner/test_10may2022/busi.json @@ -0,0 +1,731 @@ +{ + "SessionKey" : "b365f66f-2d0c-4fe3-af96-fb7eba44432f-c1", + "Query" : { + "Country" : "CF", + "Currency" : "EUR", + "Locale" : "en-GB", + "Adults" : 1, + "Children" : 0, + "Infants" : 0, + "OriginPlace" : "922", + "DestinationPlace" : "1178", + "OutboundDate" : "2022-09-01", + "LocationSchema" : "Default", + "CabinClass" : "business", + "GroupPricing" : false + }, + "Status" : "UpdatesComplete", + "Itineraries" : [ { + "OutboundLegId" : "9865-2209010830--32340-3-10141-2209020840", + "PricingOptions" : [ { + "Agents" : [ 1963108 ], + "QuoteAgeInMinutes" : 7, + "Price" : 2124.68, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FCF%2Fen-GB%2FEUR%2Fat24%2F1%2F9865.10141.2022-09-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32340%7C1035%7C9865%7C2022-09-01T08%3A30%7C11028%7C2022-09-01T10%3A15%7C105%7C-%7C-%7C-%3Bflight%7C-32340%7C955%7C11028%7C2022-09-01T13%3A50%7C9252%7C2022-09-01T20%3A20%7C270%7C-%7C-%7C-%3Bflight%7C-32340%7C724%7C9252%7C2022-09-02T00%3A35%7C17517%7C2022-09-02T05%3A55%7C380%7C-%7C-%7C-%3Bflight%7C-32340%7C724%7C17517%7C2022-09-02T06%3A55%7C10141%7C2022-09-02T08%3A40%7C105%7C-%7C-%7C-%26carriers%3D-32340%26operators%3D-32557%3B-32340%3B-32340%3B-32340%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3Db365f66f-2d0c-4fe3-af96-fb7eba44432f%26ticket_price%3D2124.68%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D9dc0703d-a28b-4bd1-a9f7-32ffc4c3e04c%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLDEyEWLm6PSVYuaYxanQ8Gb_DDYjJgVGCyYAd3GGMR4AAAA%7C-6470205604821819571%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-10T08%3A43%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/b365f66f-2d0c-4fe3-af96-fb7eba44432f-c1/booking", + "Body" : "OutboundLegId=9865-2209010830--32340-3-10141-2209020840&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "9865-2209010830--32340-4-10141-2209020840", + "PricingOptions" : [ { + "Agents" : [ 1963108 ], + "QuoteAgeInMinutes" : 7, + "Price" : 2610.85, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FCF%2Fen-GB%2FEUR%2Fat24%2F1%2F9865.10141.2022-09-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32340%7C1035%7C9865%7C2022-09-01T08%3A30%7C11028%7C2022-09-01T10%3A15%7C105%7C-%7C-%7C-%3Bflight%7C-32340%7C1035%7C11028%7C2022-09-01T10%3A55%7C13521%7C2022-09-01T11%3A40%7C105%7C-%7C-%7C-%3Bflight%7C-32340%7C513%7C13521%7C2022-09-01T12%3A35%7C9252%7C2022-09-01T21%3A00%7C325%7C-%7C-%7C-%3Bflight%7C-32340%7C724%7C9252%7C2022-09-02T00%3A35%7C17517%7C2022-09-02T05%3A55%7C380%7C-%7C-%7C-%3Bflight%7C-32340%7C724%7C17517%7C2022-09-02T06%3A55%7C10141%7C2022-09-02T08%3A40%7C105%7C-%7C-%7C-%26carriers%3D-32340%26operators%3D-32557%3B-32557%3B-32340%3B-32340%3B-32340%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3Db365f66f-2d0c-4fe3-af96-fb7eba44432f%26ticket_price%3D2610.85%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D9dc0703d-a28b-4bd1-a9f7-32ffc4c3e04c%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLDEyEWLm6PSVYuaYxanQ8Gb_DDYjJgVGCyYAd3GGMR4AAAA%7C4814895359234471328%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-10T08%3A43%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/b365f66f-2d0c-4fe3-af96-fb7eba44432f-c1/booking", + "Body" : "OutboundLegId=9865-2209010830--32340-4-10141-2209020840&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "9865-2209011420--31917,-32353-4-10141-2209021515", + "PricingOptions" : [ { + "Agents" : [ 1963108 ], + "QuoteAgeInMinutes" : 7, + "Price" : 1822.93, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FCF%2Fen-GB%2FEUR%2Fat24%2F1%2F9865.10141.2022-09-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31917%7C213%7C9865%7C2022-09-01T14%3A20%7C11028%7C2022-09-01T16%3A10%7C110%7C-%7C-%7C-%3Bflight%7C-31917%7C213%7C11028%7C2022-09-01T17%3A10%7C13011%7C2022-09-01T21%3A30%7C200%7C-%7C-%7C-%3Bflight%7C-32353%7C835%7C13011%7C2022-09-02T03%3A20%7C11209%7C2022-09-02T05%3A20%7C60%7C-%7C-%7C-%3Bflight%7C-32353%7C835%7C11209%7C2022-09-02T06%3A10%7C10337%7C2022-09-02T09%3A35%7C265%7C-%7C-%7C-%3Bflight%7C-32353%7C725%7C10337%7C2022-09-02T10%3A35%7C10141%7C2022-09-02T15%3A15%7C280%7C-%7C-%7C-%26carriers%3D-31917%2C-32353%26operators%3D-31917%3B-31917%3B-32353%3B-32353%3B-32353%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3Db365f66f-2d0c-4fe3-af96-fb7eba44432f%26ticket_price%3D1822.93%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D9dc0703d-a28b-4bd1-a9f7-32ffc4c3e04c%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLDEyEWLm6PSVYuaYxanQ8Gb_DDYjJgVGCyYAd3GGMR4AAAA%7C5954396842798029585%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-10T08%3A43%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/b365f66f-2d0c-4fe3-af96-fb7eba44432f-c1/booking", + "Body" : "OutboundLegId=9865-2209011420--31917,-32353-4-10141-2209021515&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "9865-2209011420--31917-3-10141-2209031100", + "PricingOptions" : [ { + "Agents" : [ 1963108 ], + "QuoteAgeInMinutes" : 7, + "Price" : 1546.34, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FCF%2Fen-GB%2FEUR%2Fat24%2F1%2F9865.10141.2022-09-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31917%7C213%7C9865%7C2022-09-01T14%3A20%7C11028%7C2022-09-01T16%3A10%7C110%7C-%7C-%7C-%3Bflight%7C-31917%7C211%7C11028%7C2022-09-02T14%3A45%7C10326%7C2022-09-02T16%3A40%7C115%7C-%7C-%7C-%3Bflight%7C-31917%7C211%7C10326%7C2022-09-02T17%3A40%7C13011%7C2022-09-02T21%3A15%7C155%7C-%7C-%7C-%3Bflight%7C-31917%7C700%7C13011%7C2022-09-03T02%3A30%7C10141%7C2022-09-03T11%3A00%7C510%7C-%7C-%7C-%26carriers%3D-31917%26operators%3D-31917%3B-31917%3B-31917%3B-31917%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3Db365f66f-2d0c-4fe3-af96-fb7eba44432f%26ticket_price%3D1546.34%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D9dc0703d-a28b-4bd1-a9f7-32ffc4c3e04c%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLDEyEWLm6PSVYuaYxanQ8Gb_DDYjJgVGCyYAd3GGMR4AAAA%7C-1420328571096152225%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-10T08%3A43%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/b365f66f-2d0c-4fe3-af96-fb7eba44432f-c1/booking", + "Body" : "OutboundLegId=9865-2209011420--31917-3-10141-2209031100&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "9865-2209010830--32340,-32353-2-10141-2209021515", + "PricingOptions" : [ { + "Agents" : [ 1963108 ], + "QuoteAgeInMinutes" : 7, + "Price" : 1688.75, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FCF%2Fen-GB%2FEUR%2Fat24%2F1%2F9865.10141.2022-09-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32340%7C1035%7C9865%7C2022-09-01T08%3A30%7C11028%7C2022-09-01T10%3A15%7C105%7C-%7C-%7C-%3Bflight%7C-32353%7C888%7C11028%7C2022-09-01T14%3A50%7C10337%7C2022-09-01T21%3A10%7C320%7C-%7C-%7C-%3Bflight%7C-32353%7C725%7C10337%7C2022-09-02T10%3A35%7C10141%7C2022-09-02T15%3A15%7C280%7C-%7C-%7C-%26carriers%3D-32340%2C-32353%26operators%3D-32557%3B-32353%3B-32353%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3Db365f66f-2d0c-4fe3-af96-fb7eba44432f%26ticket_price%3D1688.75%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D9dc0703d-a28b-4bd1-a9f7-32ffc4c3e04c%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLDEyEWLm6PSVYuaYxanQ8Gb_DDYjJgVGCyYAd3GGMR4AAAA%7C-2791011751813767872%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-10T08%3A43%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/b365f66f-2d0c-4fe3-af96-fb7eba44432f-c1/booking", + "Body" : "OutboundLegId=9865-2209010830--32340,-32353-2-10141-2209021515&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "9865-2209010830--32557,-32340-3-10141-2209020840", + "PricingOptions" : [ { + "Agents" : [ 1963108 ], + "QuoteAgeInMinutes" : 7, + "Price" : 2123.72, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FCF%2Fen-GB%2FEUR%2Fat24%2F1%2F9865.10141.2022-09-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32557%7C35%7C9865%7C2022-09-01T08%3A30%7C11028%7C2022-09-01T10%3A15%7C105%7C-%7C-%7C-%3Bflight%7C-32340%7C955%7C11028%7C2022-09-01T13%3A50%7C9252%7C2022-09-01T20%3A20%7C270%7C-%7C-%7C-%3Bflight%7C-32340%7C724%7C9252%7C2022-09-02T00%3A35%7C17517%7C2022-09-02T05%3A55%7C380%7C-%7C-%7C-%3Bflight%7C-32340%7C724%7C17517%7C2022-09-02T06%3A55%7C10141%7C2022-09-02T08%3A40%7C105%7C-%7C-%7C-%26carriers%3D-32557%2C-32340%26operators%3D-32557%3B-32340%3B-32340%3B-32340%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3Db365f66f-2d0c-4fe3-af96-fb7eba44432f%26ticket_price%3D2123.72%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D9dc0703d-a28b-4bd1-a9f7-32ffc4c3e04c%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLDEyEWLm6PSVYuaYxanQ8Gb_DDYjJgVGCyYAd3GGMR4AAAA%7C2392098993741121865%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-10T08%3A43%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/b365f66f-2d0c-4fe3-af96-fb7eba44432f-c1/booking", + "Body" : "OutboundLegId=9865-2209010830--32557,-32340-3-10141-2209020840&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "9865-2209011420--31917,-32353-2-10141-2209031445", + "PricingOptions" : [ { + "Agents" : [ 1963108 ], + "QuoteAgeInMinutes" : 7, + "Price" : 1685.66, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FCF%2Fen-GB%2FEUR%2Fat24%2F1%2F9865.10141.2022-09-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31917%7C213%7C9865%7C2022-09-01T14%3A20%7C11028%7C2022-09-01T16%3A10%7C110%7C-%7C-%7C-%3Bflight%7C-32353%7C888%7C11028%7C2022-09-02T14%3A50%7C10337%7C2022-09-02T21%3A10%7C320%7C-%7C-%7C-%3Bflight%7C-32353%7C725%7C10337%7C2022-09-03T10%3A05%7C10141%7C2022-09-03T14%3A45%7C280%7C-%7C-%7C-%26carriers%3D-31917%2C-32353%26operators%3D-31917%3B-32353%3B-32353%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3Db365f66f-2d0c-4fe3-af96-fb7eba44432f%26ticket_price%3D1685.66%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D9dc0703d-a28b-4bd1-a9f7-32ffc4c3e04c%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLDEyEWLm6PSVYuaYxanQ8Gb_DDYjJgVGCyYAd3GGMR4AAAA%7C-6902717826819118340%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-10T08%3A43%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/b365f66f-2d0c-4fe3-af96-fb7eba44432f-c1/booking", + "Body" : "OutboundLegId=9865-2209011420--31917,-32353-2-10141-2209031445&InboundLegId=", + "Method" : "PUT" + } + } ], + "Legs" : [ { + "Id" : "9865-2209010830--32340-3-10141-2209020840", + "SegmentIds" : [ 0, 1, 2, 3 ], + "OriginStation" : 9865, + "DestinationStation" : 10141, + "Departure" : "2022-09-01T08:30:00", + "Arrival" : "2022-09-02T08:40:00", + "Duration" : 1390, + "JourneyMode" : "Flight", + "Stops" : [ 11028, 9252, 17517 ], + "Carriers" : [ 1044 ], + "OperatingCarriers" : [ 1328, 1044 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "1035", + "CarrierId" : 1044 + }, { + "FlightNumber" : "955", + "CarrierId" : 1044 + }, { + "FlightNumber" : "724", + "CarrierId" : 1044 + }, { + "FlightNumber" : "724", + "CarrierId" : 1044 + } ] + }, { + "Id" : "9865-2209010830--32340-4-10141-2209020840", + "SegmentIds" : [ 0, 4, 5, 2, 3 ], + "OriginStation" : 9865, + "DestinationStation" : 10141, + "Departure" : "2022-09-01T08:30:00", + "Arrival" : "2022-09-02T08:40:00", + "Duration" : 1390, + "JourneyMode" : "Flight", + "Stops" : [ 11028, 13521, 9252, 17517 ], + "Carriers" : [ 1044 ], + "OperatingCarriers" : [ 1328, 1044 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "1035", + "CarrierId" : 1044 + }, { + "FlightNumber" : "724", + "CarrierId" : 1044 + }, { + "FlightNumber" : "724", + "CarrierId" : 1044 + }, { + "FlightNumber" : "1035", + "CarrierId" : 1044 + }, { + "FlightNumber" : "513", + "CarrierId" : 1044 + } ] + }, { + "Id" : "9865-2209011420--31917,-32353-4-10141-2209021515", + "SegmentIds" : [ 6, 7, 8, 9, 10 ], + "OriginStation" : 9865, + "DestinationStation" : 10141, + "Departure" : "2022-09-01T14:20:00", + "Arrival" : "2022-09-02T15:15:00", + "Duration" : 1435, + "JourneyMode" : "Flight", + "Stops" : [ 11028, 13011, 11209, 10337 ], + "Carriers" : [ 1890, 1427 ], + "OperatingCarriers" : [ 1890, 1427 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "213", + "CarrierId" : 1890 + }, { + "FlightNumber" : "213", + "CarrierId" : 1890 + }, { + "FlightNumber" : "835", + "CarrierId" : 1427 + }, { + "FlightNumber" : "835", + "CarrierId" : 1427 + }, { + "FlightNumber" : "725", + "CarrierId" : 1427 + } ] + }, { + "Id" : "9865-2209011420--31917-3-10141-2209031100", + "SegmentIds" : [ 6, 11, 12, 13 ], + "OriginStation" : 9865, + "DestinationStation" : 10141, + "Departure" : "2022-09-01T14:20:00", + "Arrival" : "2022-09-03T11:00:00", + "Duration" : 2620, + "JourneyMode" : "Flight", + "Stops" : [ 11028, 10326, 13011 ], + "Carriers" : [ 1890 ], + "OperatingCarriers" : [ 1890 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "213", + "CarrierId" : 1890 + }, { + "FlightNumber" : "211", + "CarrierId" : 1890 + }, { + "FlightNumber" : "211", + "CarrierId" : 1890 + }, { + "FlightNumber" : "700", + "CarrierId" : 1890 + } ] + }, { + "Id" : "9865-2209010830--32340,-32353-2-10141-2209021515", + "SegmentIds" : [ 0, 14, 10 ], + "OriginStation" : 9865, + "DestinationStation" : 10141, + "Departure" : "2022-09-01T08:30:00", + "Arrival" : "2022-09-02T15:15:00", + "Duration" : 1785, + "JourneyMode" : "Flight", + "Stops" : [ 11028, 10337 ], + "Carriers" : [ 1044, 1427 ], + "OperatingCarriers" : [ 1328, 1427 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "1035", + "CarrierId" : 1044 + }, { + "FlightNumber" : "725", + "CarrierId" : 1427 + }, { + "FlightNumber" : "888", + "CarrierId" : 1427 + } ] + }, { + "Id" : "9865-2209010830--32557,-32340-3-10141-2209020840", + "SegmentIds" : [ 15, 1, 2, 3 ], + "OriginStation" : 9865, + "DestinationStation" : 10141, + "Departure" : "2022-09-01T08:30:00", + "Arrival" : "2022-09-02T08:40:00", + "Duration" : 1390, + "JourneyMode" : "Flight", + "Stops" : [ 11028, 9252, 17517 ], + "Carriers" : [ 1328, 1044 ], + "OperatingCarriers" : [ 1328, 1044 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "955", + "CarrierId" : 1044 + }, { + "FlightNumber" : "724", + "CarrierId" : 1044 + }, { + "FlightNumber" : "724", + "CarrierId" : 1044 + }, { + "FlightNumber" : "35", + "CarrierId" : 1328 + } ] + }, { + "Id" : "9865-2209011420--31917,-32353-2-10141-2209031445", + "SegmentIds" : [ 6, 16, 17 ], + "OriginStation" : 9865, + "DestinationStation" : 10141, + "Departure" : "2022-09-01T14:20:00", + "Arrival" : "2022-09-03T14:45:00", + "Duration" : 2845, + "JourneyMode" : "Flight", + "Stops" : [ 11028, 10337 ], + "Carriers" : [ 1890, 1427 ], + "OperatingCarriers" : [ 1890, 1427 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "213", + "CarrierId" : 1890 + }, { + "FlightNumber" : "888", + "CarrierId" : 1427 + }, { + "FlightNumber" : "725", + "CarrierId" : 1427 + } ] + } ], + "Segments" : [ { + "Id" : 0, + "OriginStation" : 9865, + "DestinationStation" : 11028, + "DepartureDateTime" : "2022-09-01T08:30:00", + "ArrivalDateTime" : "2022-09-01T10:15:00", + "Carrier" : 1044, + "OperatingCarrier" : 1328, + "Duration" : 105, + "FlightNumber" : "1035", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 1, + "OriginStation" : 11028, + "DestinationStation" : 9252, + "DepartureDateTime" : "2022-09-01T13:50:00", + "ArrivalDateTime" : "2022-09-01T20:20:00", + "Carrier" : 1044, + "OperatingCarrier" : 1044, + "Duration" : 270, + "FlightNumber" : "955", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 2, + "OriginStation" : 9252, + "DestinationStation" : 17517, + "DepartureDateTime" : "2022-09-02T00:35:00", + "ArrivalDateTime" : "2022-09-02T05:55:00", + "Carrier" : 1044, + "OperatingCarrier" : 1044, + "Duration" : 380, + "FlightNumber" : "724", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 3, + "OriginStation" : 17517, + "DestinationStation" : 10141, + "DepartureDateTime" : "2022-09-02T06:55:00", + "ArrivalDateTime" : "2022-09-02T08:40:00", + "Carrier" : 1044, + "OperatingCarrier" : 1044, + "Duration" : 105, + "FlightNumber" : "724", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 4, + "OriginStation" : 11028, + "DestinationStation" : 13521, + "DepartureDateTime" : "2022-09-01T10:55:00", + "ArrivalDateTime" : "2022-09-01T11:40:00", + "Carrier" : 1044, + "OperatingCarrier" : 1328, + "Duration" : 105, + "FlightNumber" : "1035", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 5, + "OriginStation" : 13521, + "DestinationStation" : 9252, + "DepartureDateTime" : "2022-09-01T12:35:00", + "ArrivalDateTime" : "2022-09-01T21:00:00", + "Carrier" : 1044, + "OperatingCarrier" : 1044, + "Duration" : 325, + "FlightNumber" : "513", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 6, + "OriginStation" : 9865, + "DestinationStation" : 11028, + "DepartureDateTime" : "2022-09-01T14:20:00", + "ArrivalDateTime" : "2022-09-01T16:10:00", + "Carrier" : 1890, + "OperatingCarrier" : 1890, + "Duration" : 110, + "FlightNumber" : "213", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 7, + "OriginStation" : 11028, + "DestinationStation" : 13011, + "DepartureDateTime" : "2022-09-01T17:10:00", + "ArrivalDateTime" : "2022-09-01T21:30:00", + "Carrier" : 1890, + "OperatingCarrier" : 1890, + "Duration" : 200, + "FlightNumber" : "213", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 8, + "OriginStation" : 13011, + "DestinationStation" : 11209, + "DepartureDateTime" : "2022-09-02T03:20:00", + "ArrivalDateTime" : "2022-09-02T05:20:00", + "Carrier" : 1427, + "OperatingCarrier" : 1427, + "Duration" : 60, + "FlightNumber" : "835", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 9, + "OriginStation" : 11209, + "DestinationStation" : 10337, + "DepartureDateTime" : "2022-09-02T06:10:00", + "ArrivalDateTime" : "2022-09-02T09:35:00", + "Carrier" : 1427, + "OperatingCarrier" : 1427, + "Duration" : 265, + "FlightNumber" : "835", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 10, + "OriginStation" : 10337, + "DestinationStation" : 10141, + "DepartureDateTime" : "2022-09-02T10:35:00", + "ArrivalDateTime" : "2022-09-02T15:15:00", + "Carrier" : 1427, + "OperatingCarrier" : 1427, + "Duration" : 280, + "FlightNumber" : "725", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 11, + "OriginStation" : 11028, + "DestinationStation" : 10326, + "DepartureDateTime" : "2022-09-02T14:45:00", + "ArrivalDateTime" : "2022-09-02T16:40:00", + "Carrier" : 1890, + "OperatingCarrier" : 1890, + "Duration" : 115, + "FlightNumber" : "211", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 12, + "OriginStation" : 10326, + "DestinationStation" : 13011, + "DepartureDateTime" : "2022-09-02T17:40:00", + "ArrivalDateTime" : "2022-09-02T21:15:00", + "Carrier" : 1890, + "OperatingCarrier" : 1890, + "Duration" : 155, + "FlightNumber" : "211", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 13, + "OriginStation" : 13011, + "DestinationStation" : 10141, + "DepartureDateTime" : "2022-09-03T02:30:00", + "ArrivalDateTime" : "2022-09-03T11:00:00", + "Carrier" : 1890, + "OperatingCarrier" : 1890, + "Duration" : 510, + "FlightNumber" : "700", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 14, + "OriginStation" : 11028, + "DestinationStation" : 10337, + "DepartureDateTime" : "2022-09-01T14:50:00", + "ArrivalDateTime" : "2022-09-01T21:10:00", + "Carrier" : 1427, + "OperatingCarrier" : 1427, + "Duration" : 320, + "FlightNumber" : "888", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 15, + "OriginStation" : 9865, + "DestinationStation" : 11028, + "DepartureDateTime" : "2022-09-01T08:30:00", + "ArrivalDateTime" : "2022-09-01T10:15:00", + "Carrier" : 1328, + "OperatingCarrier" : 1328, + "Duration" : 105, + "FlightNumber" : "35", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 16, + "OriginStation" : 11028, + "DestinationStation" : 10337, + "DepartureDateTime" : "2022-09-02T14:50:00", + "ArrivalDateTime" : "2022-09-02T21:10:00", + "Carrier" : 1427, + "OperatingCarrier" : 1427, + "Duration" : 320, + "FlightNumber" : "888", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 17, + "OriginStation" : 10337, + "DestinationStation" : 10141, + "DepartureDateTime" : "2022-09-03T10:05:00", + "ArrivalDateTime" : "2022-09-03T14:45:00", + "Carrier" : 1427, + "OperatingCarrier" : 1427, + "Duration" : 280, + "FlightNumber" : "725", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + } ], + "Carriers" : [ { + "Id" : 1328, + "Code" : "KP", + "Name" : "ASKY Airlines", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/KP.png", + "DisplayCode" : "KP" + }, { + "Id" : 1044, + "Code" : "ET", + "Name" : "Ethiopian Airlines", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/ET.png", + "DisplayCode" : "ET" + }, { + "Id" : 1890, + "Code" : "WB", + "Name" : "RwandAir", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/WB.png", + "DisplayCode" : "WB" + }, { + "Id" : 1427, + "Code" : "MS", + "Name" : "EgyptAir", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/MS.png", + "DisplayCode" : "MS" + } ], + "Agents" : [ { + "Id" : 1963108, + "Name" : "Mytrip", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/at24.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "TravelAgent" + }, { + "Id" : 2406553, + "Name" : "Ethiopian Airlines", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/ethi.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "Airline" + } ], + "Places" : [ { + "Id" : 1345, + "ParentId" : 60, + "Code" : "BZV", + "Type" : "City", + "Name" : "Brazzaville" + }, { + "Id" : 322, + "ParentId" : 63, + "Code" : "ADD", + "Type" : "City", + "Name" : "Addis Ababa" + }, { + "Id" : 199, + "Code" : "AT", + "Type" : "Country", + "Name" : "Austria" + }, { + "Id" : 9865, + "ParentId" : 922, + "Code" : "BGF", + "Type" : "Airport", + "Name" : "Bangui" + }, { + "Id" : 11209, + "ParentId" : 2323, + "Code" : "EBB", + "Type" : "Airport", + "Name" : "Entebbe" + }, { + "Id" : 4558, + "ParentId" : 219, + "Code" : "LFW", + "Type" : "City", + "Name" : "Lome" + }, { + "Id" : 1361, + "ParentId" : 58, + "Code" : "CAI", + "Type" : "City", + "Name" : "Cairo" + }, { + "Id" : 13521, + "ParentId" : 4558, + "Code" : "LFW", + "Type" : "Airport", + "Name" : "Lome" + }, { + "Id" : 13011, + "ParentId" : 4076, + "Code" : "KGL", + "Type" : "Airport", + "Name" : "Kigali" + }, { + "Id" : 2323, + "ParentId" : 222, + "Code" : "EBB", + "Type" : "City", + "Name" : "Entebbe" + }, { + "Id" : 11028, + "ParentId" : 2171, + "Code" : "DLA", + "Type" : "Airport", + "Name" : "Douala" + }, { + "Id" : 20, + "Code" : "CF", + "Type" : "Country", + "Name" : "Central African Republic" + }, { + "Id" : 10326, + "ParentId" : 1345, + "Code" : "BZV", + "Type" : "Airport", + "Name" : "Brazzaville" + }, { + "Id" : 1178, + "ParentId" : 240, + "Code" : "BRU", + "Type" : "City", + "Name" : "Brussels" + }, { + "Id" : 922, + "ParentId" : 20, + "Code" : "BGF", + "Type" : "City", + "Name" : "Bangui" + }, { + "Id" : 219, + "Code" : "TG", + "Type" : "Country", + "Name" : "Togo" + }, { + "Id" : 10141, + "ParentId" : 1178, + "Code" : "BRU", + "Type" : "Airport", + "Name" : "Brussels International" + }, { + "Id" : 8222, + "ParentId" : 199, + "Code" : "VIE", + "Type" : "City", + "Name" : "Vienna" + }, { + "Id" : 222, + "Code" : "UG", + "Type" : "Country", + "Name" : "Uganda" + }, { + "Id" : 10337, + "ParentId" : 1361, + "Code" : "CAI", + "Type" : "Airport", + "Name" : "Cairo" + }, { + "Id" : 9252, + "ParentId" : 322, + "Code" : "ADD", + "Type" : "Airport", + "Name" : "Addis Ababa" + }, { + "Id" : 4076, + "ParentId" : 48, + "Code" : "KGL", + "Type" : "City", + "Name" : "Kigali" + }, { + "Id" : 45, + "Code" : "CM", + "Type" : "Country", + "Name" : "Cameroon" + }, { + "Id" : 17517, + "ParentId" : 8222, + "Code" : "VIE", + "Type" : "Airport", + "Name" : "Vienna" + }, { + "Id" : 48, + "Code" : "RW", + "Type" : "Country", + "Name" : "Rwanda" + }, { + "Id" : 240, + "Code" : "BE", + "Type" : "Country", + "Name" : "Belgium" + }, { + "Id" : 58, + "Code" : "EG", + "Type" : "Country", + "Name" : "Egypt" + }, { + "Id" : 2171, + "ParentId" : 45, + "Code" : "DLA", + "Type" : "City", + "Name" : "Douala" + }, { + "Id" : 60, + "Code" : "CG", + "Type" : "Country", + "Name" : "Republic of the Congo" + }, { + "Id" : 63, + "Code" : "ET", + "Type" : "Country", + "Name" : "Ethiopia" + } ], + "Currencies" : [ { + "Code" : "EUR", + "Symbol" : "€", + "ThousandsSeparator" : ".", + "DecimalSeparator" : ",", + "SymbolOnLeft" : false, + "SpaceBetweenAmountAndSymbol" : true, + "RoundingCoefficient" : 0, + "DecimalDigits" : 2 + } ] +} \ No newline at end of file diff --git a/e-rights-common/src/test/resources/skyscanner/test_10may2022/pecon.json b/e-rights-common/src/test/resources/skyscanner/test_10may2022/pecon.json new file mode 100644 index 0000000..b97cf7f --- /dev/null +++ b/e-rights-common/src/test/resources/skyscanner/test_10may2022/pecon.json @@ -0,0 +1,56 @@ +{ + "SessionKey" : "25a58dcd-b7ad-470d-8f3b-9053023f4b68-c1", + "Query" : { + "Country" : "CF", + "Currency" : "EUR", + "Locale" : "en-GB", + "Adults" : 1, + "Children" : 0, + "Infants" : 0, + "OriginPlace" : "922", + "DestinationPlace" : "1178", + "OutboundDate" : "2022-09-01", + "LocationSchema" : "Default", + "CabinClass" : "premium_economy", + "GroupPricing" : false + }, + "Status" : "UpdatesComplete", + "Itineraries" : [ ], + "Legs" : [ ], + "Segments" : [ ], + "Carriers" : [ ], + "Agents" : [ ], + "Places" : [ { + "Id" : 240, + "Code" : "BE", + "Type" : "Country", + "Name" : "Belgium" + }, { + "Id" : 20, + "Code" : "CF", + "Type" : "Country", + "Name" : "Central African Republic" + }, { + "Id" : 922, + "ParentId" : 20, + "Code" : "BGF", + "Type" : "City", + "Name" : "Bangui" + }, { + "Id" : 1178, + "ParentId" : 240, + "Code" : "BRU", + "Type" : "City", + "Name" : "Brussels" + } ], + "Currencies" : [ { + "Code" : "EUR", + "Symbol" : "€", + "ThousandsSeparator" : ".", + "DecimalSeparator" : ",", + "SymbolOnLeft" : false, + "SpaceBetweenAmountAndSymbol" : true, + "RoundingCoefficient" : 0, + "DecimalDigits" : 2 + } ] +} \ No newline at end of file diff --git a/e-rights-common/src/test/resources/skyscanner/test_6may2022/busi.json b/e-rights-common/src/test/resources/skyscanner/test_6may2022/busi.json new file mode 100644 index 0000000..f17fdf3 --- /dev/null +++ b/e-rights-common/src/test/resources/skyscanner/test_6may2022/busi.json @@ -0,0 +1,1705 @@ +{ + "SessionKey" : "7c6c9a1f-9310-4def-894b-c157b43fe14a-c1", + "Query" : { + "Country" : "BE", + "Currency" : "EUR", + "Locale" : "en-GB", + "Adults" : 1, + "Children" : 0, + "Infants" : 0, + "OriginPlace" : "1178", + "DestinationPlace" : "1781", + "OutboundDate" : "2022-10-01", + "LocationSchema" : "Default", + "CabinClass" : "business", + "GroupPricing" : false + }, + "Status" : "UpdatesComplete", + "Itineraries" : [ { + "OutboundLegId" : "10141-2210010811--32283,-32132,-32677-2-10675-2210012020", + "PricingOptions" : [ { + "Agents" : [ 1963893 ], + "QuoteAgeInMinutes" : 3, + "Price" : 5089.00, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fatbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32283%7C9219%7C10141%7C2022-10-01T08%3A11%7C9451%7C2022-10-01T10%3A19%7C128%7C-%7C-%7C-%3Bflight%7C-32132%7C1233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32283%2C-32132%2C-32677%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D5089.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLElKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAnUxb5x4AAAA%7C1454167790210205721%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A02%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210010811--32283,-32132,-32677-2-10675-2210012020&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210010930--32090,-32677-2-10675-2210012020", + "PricingOptions" : [ { + "Agents" : [ 2185077 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2856.71, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fctbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32090%7C1007%7C10141%7C2022-10-01T09%3A30%7C11616%7C2022-10-01T10%3A30%7C60%7C-%7C-%7C-%3Bflight%7C-32677%7C1619%7C11616%7C2022-10-01T12%3A05%7C10413%7C2022-10-01T13%3A35%7C90%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32090%2C-32677%26operators%3D-32090%3B-32226%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2856.71%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLklKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYA8gcR8h4AAAA%7C1847192962098841047%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210010930--32090,-32677-2-10675-2210012020&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210010620--32478,-32677-2-10675-2210012020", + "PricingOptions" : [ { + "Agents" : [ 1959285 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2881.99, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Farbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32478%7C3153%7C10141%7C2022-10-01T06%3A20%7C14476%7C2022-10-01T07%3A45%7C85%7C-%7C-%7C-%3Bflight%7C-32677%7C1831%7C14476%7C2022-10-01T10%3A25%7C10413%7C2022-10-01T11%3A55%7C90%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32478%2C-32677%26operators%3D-32478%3B-32677%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2881.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLEpKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAOyCAjB4AAAA%7C2306186760169147006%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 2627445 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2921.99, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fgtbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32478%7C3153%7C10141%7C2022-10-01T06%3A20%7C14476%7C2022-10-01T07%3A45%7C85%7C-%7C-%7C-%3Bflight%7C-32677%7C1831%7C14476%7C2022-10-01T10%3A25%7C10413%7C2022-10-01T11%3A55%7C90%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32478%2C-32677%26operators%3D-32478%3B-32677%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2921.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJL0lKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYALJGF2B4AAAA%7C2306186760169147006%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 1963893 ], + "QuoteAgeInMinutes" : 3, + "Price" : 3403.00, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fatbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32478%7C3139%7C10141%7C2022-10-01T06%3A20%7C11565%7C2022-10-01T08%3A10%7C110%7C-%7C-%7C-%3Bflight%7C-32677%7C1067%7C11565%7C2022-10-01T09%3A50%7C10413%7C2022-10-01T11%3A40%7C110%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32478%2C-32677%26operators%3D-32478%3B-32677%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D3403.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLElKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAnUxb5x4AAAA%7C-2938787499213551454%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A02%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210010620--32478,-32677-2-10675-2210012020&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210010935--32478,-32677-2-10675-2210012020", + "PricingOptions" : [ { + "Agents" : [ 1959285 ], + "QuoteAgeInMinutes" : 4, + "Price" : 4467.99, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Farbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32478%7C2257%7C10141%7C2022-10-01T09%3A35%7C10694%7C2022-10-01T11%3A05%7C90%7C-%7C-%7C-%3Bflight%7C-32677%7C1151%7C10694%7C2022-10-01T11%3A55%7C10413%7C2022-10-01T14%3A00%7C125%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32478%2C-32677%26operators%3D-32478%3B-32677%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D4467.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLEpKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAOyCAjB4AAAA%7C-549701133092647113%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 2627445 ], + "QuoteAgeInMinutes" : 4, + "Price" : 4525.99, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fgtbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32478%7C2257%7C10141%7C2022-10-01T09%3A35%7C10694%7C2022-10-01T11%3A05%7C90%7C-%7C-%7C-%3Bflight%7C-32677%7C1151%7C10694%7C2022-10-01T11%3A55%7C10413%7C2022-10-01T14%3A00%7C125%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32478%2C-32677%26operators%3D-32478%3B-32677%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D4525.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJL0lKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYALJGF2B4AAAA%7C-549701133092647113%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210010935--32478,-32677-2-10675-2210012020&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210010800--32677-2-10675-2210012020", + "PricingOptions" : [ { + "Agents" : [ 1959285 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2079.98, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Farbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32677%7C3149%7C10141%7C2022-10-01T08%3A00%7C9451%7C2022-10-01T08%3A55%7C55%7C-%7C-%7C-%3Bflight%7C-32677%7C8233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32677%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2079.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLEpKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAOyCAjB4AAAA%7C2909294883053824508%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 2627445 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2085.98, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fgtbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32677%7C3149%7C10141%7C2022-10-01T08%3A00%7C9451%7C2022-10-01T08%3A55%7C55%7C-%7C-%7C-%3Bflight%7C-32677%7C8233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32677%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2085.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJL0lKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYALJGF2B4AAAA%7C2909294883053824508%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 3065788 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2175.00, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fkrnl%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32677%7C3149%7C10141%7C2022-10-01T08%3A00%7C9451%7C2022-10-01T08%3A55%7C55%7C-%7C-%7C-%3Bflight%7C-32677%7C8233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32677%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2175.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WLJLsrLEWLmmMUpxcyxOVihoe3eTDYjJgVGCyYA-00i7B4AAAA%7C2909294883053824508%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dfalse" + }, { + "Agents" : [ 1963893 ], + "QuoteAgeInMinutes" : 3, + "Price" : 2185.00, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fatbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32677%7C3149%7C10141%7C2022-10-01T08%3A00%7C9451%7C2022-10-01T08%3A55%7C55%7C-%7C-%7C-%3Bflight%7C-32677%7C8233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32677%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2185.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLElKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAnUxb5x4AAAA%7C2909294883053824508%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A02%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210010800--32677-2-10675-2210012020&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210010735--31734-1-10675-2210012140", + "PricingOptions" : [ { + "Agents" : [ 4068219 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2247.35, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fturk%2F1%2F10141.10675.2022-10-01%2Fair%2Fairli%2Fflights%3Fitinerary%3Dflight%7C-31734%7C1942%7C10141%7C2022-10-01T07%3A35%7C12585%7C2022-10-01T12%3A05%7C210%7CZNOW%7CZ%7CBUSGLOBAL%3Bflight%7C-31734%7C557%7C12585%7C2022-10-01T16%3A50%7C10675%7C2022-10-01T21%3A40%7C410%7CZNOW%7CZ%7CBUSGLOBAL%26carriers%3D-31734%26operators%3D-31734%3B-31734%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2247.35%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WIpKS3KFmLmmMUpxcyxOVihoe3eTDYjJgVGCyYAw_kTtx4AAAA%7C8162534199126596623%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dfalse" + }, { + "Agents" : [ 3934928 ], + "QuoteAgeInMinutes" : 3, + "Price" : 2849.00, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fskyp%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31734%7C1942%7C10141%7C2022-10-01T07%3A35%7C12585%7C2022-10-01T12%3A05%7C210%7CJY1BROW%7CJ%7C-%3Bflight%7C-31734%7C557%7C12585%7C2022-10-01T16%3A50%7C10675%7C2022-10-01T21%3A40%7C410%7CZT1BOX%7CZ%7C-%26carriers%3D-31734%26operators%3D-31734%3B-31734%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2849.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WIpzq4sEGLmmMUpxcyxOVihoe3eTDYjJgVGCyYAWzMqjR4AAAA%7C6051694064967711662%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A02%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210010735--31734-1-10675-2210012140&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210010930--32478,-32677-2-10675-2210012020", + "PricingOptions" : [ { + "Agents" : [ 1963893 ], + "QuoteAgeInMinutes" : 3, + "Price" : 4167.00, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fatbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32478%7C7001%7C10141%7C2022-10-01T09%3A30%7C11616%7C2022-10-01T10%3A30%7C60%7C-%7C-%7C-%3Bflight%7C-32677%7C1619%7C11616%7C2022-10-01T12%3A05%7C10413%7C2022-10-01T13%3A35%7C90%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32478%2C-32677%26operators%3D-32090%3B-32226%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D4167.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLElKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAnUxb5x4AAAA%7C3541744266615855877%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A02%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210010930--32478,-32677-2-10675-2210012020&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210010850--31939,-32684-3-10675-2210022200", + "PricingOptions" : [ { + "Agents" : [ 2185077 ], + "QuoteAgeInMinutes" : 4, + "Price" : 3522.12, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fctbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31939%7C196%7C10141%7C2022-10-01T08%3A50%7C11089%7C2022-10-01T16%3A00%7C370%7C-%7C-%7C-%3Bflight%7C-31939%7C1423%7C11089%7C2022-10-02T02%3A40%7C9229%7C2022-10-02T07%3A00%7C440%7C-%7C-%7C-%3Bflight%7C-31939%7C1423%7C9229%7C2022-10-02T08%3A30%7C9210%7C2022-10-02T09%3A30%7C60%7C-%7C-%7C-%3Bflight%7C-32684%7C520%7C9210%7C2022-10-02T19%3A35%7C10675%7C2022-10-02T22%3A00%7C85%7C-%7C-%7C-%26carriers%3D-31939%2C-32684%26operators%3D-31939%3B-31939%3B-31939%3B-32684%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D3522.12%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLklKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYA8gcR8h4AAAA%7C1548378240275018698%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210010850--31939,-32684-3-10675-2210022200&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210010610--32132,-31734-3-10675-2210012140", + "PricingOptions" : [ { + "Agents" : [ 3934928 ], + "QuoteAgeInMinutes" : 3, + "Price" : 2256.00, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fskyp%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32132%7C1720%7C10141%7C2022-10-01T06%3A10%7C9451%7C2022-10-01T07%3A05%7C55%7CIS50BENB%7CI%7C-%3Bflight%7C-32132%7C1413%7C9451%7C2022-10-01T07%3A50%7C13853%7C2022-10-01T09%3A25%7C95%7CIS50BENB%7CI%7C-%3Bflight%7C-31734%7C1808%7C13853%7C2022-10-01T11%3A35%7C12585%7C2022-10-01T15%3A50%7C195%7CJN2BOX%7CJ%7C-%3Bflight%7C-31734%7C557%7C12585%7C2022-10-01T16%3A50%7C10675%7C2022-10-01T21%3A40%7C410%7CJN2BOX%7CJ%7C-%26carriers%3D-32132%2C-31734%26operators%3D-32131%3B-32131%3B-31734%3B-31734%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2256.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WIpzq4sEGLmmMUpxcyxOVihoe3eTDYjJgVGCyYAWzMqjR4AAAA%7C-2864580558861341774%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A02%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + }, { + "Agents" : [ 2185077 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2336.33, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fctbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32132%7C1720%7C10141%7C2022-10-01T06%3A10%7C9451%7C2022-10-01T07%3A05%7C55%7C-%7C-%7C-%3Bflight%7C-32132%7C1413%7C9451%7C2022-10-01T07%3A50%7C13853%7C2022-10-01T09%3A25%7C95%7C-%7C-%7C-%3Bflight%7C-31734%7C1808%7C13853%7C2022-10-01T11%3A35%7C12585%7C2022-10-01T15%3A50%7C195%7C-%7C-%7C-%3Bflight%7C-31734%7C557%7C12585%7C2022-10-01T16%3A50%7C10675%7C2022-10-01T21%3A40%7C410%7C-%7C-%7C-%26carriers%3D-32132%2C-31734%26operators%3D-32131%3B-32131%3B-31734%3B-31734%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2336.33%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLklKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYA8gcR8h4AAAA%7C-1366670612827855919%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210010610--32132,-31734-3-10675-2210012140&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210010930--32090,-31734-2-10675-2210012140", + "PricingOptions" : [ { + "Agents" : [ 2185077 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2389.17, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fctbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32090%7C1007%7C10141%7C2022-10-01T09%3A30%7C11616%7C2022-10-01T10%3A30%7C60%7C-%7C-%7C-%3Bflight%7C-31734%7C1588%7C11616%7C2022-10-01T11%3A40%7C12585%7C2022-10-01T15%3A50%7C190%7C-%7C-%7C-%3Bflight%7C-31734%7C557%7C12585%7C2022-10-01T16%3A50%7C10675%7C2022-10-01T21%3A40%7C410%7C-%7C-%7C-%26carriers%3D-32090%2C-31734%26operators%3D-32090%3B-31734%3B-31734%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2389.17%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLklKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYA8gcR8h4AAAA%7C8078012009643439498%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210010930--32090,-31734-2-10675-2210012140&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210011035--32132-2-10675-2210012020", + "PricingOptions" : [ { + "Agents" : [ 1959285 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2091.98, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Farbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32132%7C1724%7C10141%7C2022-10-01T10%3A35%7C9451%7C2022-10-01T11%3A35%7C60%7C-%7C-%7C-%3Bflight%7C-32132%7C1233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32132%7C2274%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32132%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2091.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLEpKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAOyCAjB4AAAA%7C651242127846624900%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 2627445 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2096.98, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fgtbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32132%7C1724%7C10141%7C2022-10-01T10%3A35%7C9451%7C2022-10-01T11%3A35%7C60%7C-%7C-%7C-%3Bflight%7C-32132%7C1233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32132%7C2274%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32132%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2096.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJL0lKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYALJGF2B4AAAA%7C651242127846624900%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 3065788 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2175.00, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fkrnl%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32132%7C1724%7C10141%7C2022-10-01T10%3A35%7C9451%7C2022-10-01T11%3A35%7C60%7C-%7C-%7C-%3Bflight%7C-32132%7C1233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32132%7C2274%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32132%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2175.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WLJLsrLEWLmmMUpxcyxOVihoe3eTDYjJgVGCyYA-00i7B4AAAA%7C651242127846624900%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dfalse" + }, { + "Agents" : [ 1963893 ], + "QuoteAgeInMinutes" : 3, + "Price" : 2195.00, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fatbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32132%7C1724%7C10141%7C2022-10-01T10%3A35%7C9451%7C2022-10-01T11%3A35%7C60%7C-%7C-%7C-%3Bflight%7C-32132%7C1233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32132%7C2274%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32132%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2195.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLElKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAnUxb5x4AAAA%7C651242127846624900%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A02%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210011035--32132-2-10675-2210012020&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210010950--32090,-32677-2-10675-2210012020", + "PricingOptions" : [ { + "Agents" : [ 1959285 ], + "QuoteAgeInMinutes" : 4, + "Price" : 3311.99, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Farbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32090%7C5594%7C10141%7C2022-10-01T09%3A50%7C13554%7C2022-10-01T10%3A15%7C85%7C-%7C-%7C-%3Bflight%7C-32677%7C1581%7C13554%7C2022-10-01T11%3A30%7C10413%7C2022-10-01T13%3A50%7C80%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32090%2C-32677%26operators%3D-32478%3B-32677%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D3311.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLEpKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAOyCAjB4AAAA%7C-773863552676494600%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 2627445 ], + "QuoteAgeInMinutes" : 4, + "Price" : 3351.99, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fgtbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32090%7C5594%7C10141%7C2022-10-01T09%3A50%7C13554%7C2022-10-01T10%3A15%7C85%7C-%7C-%7C-%3Bflight%7C-32677%7C1581%7C13554%7C2022-10-01T11%3A30%7C10413%7C2022-10-01T13%3A50%7C80%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32090%2C-32677%26operators%3D-32478%3B-32677%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D3351.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJL0lKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYALJGF2B4AAAA%7C-773863552676494600%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 2185077 ], + "QuoteAgeInMinutes" : 4, + "Price" : 3670.35, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fctbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32090%7C5594%7C10141%7C2022-10-01T09%3A50%7C13554%7C2022-10-01T10%3A15%7C85%7C-%7C-%7C-%3Bflight%7C-32677%7C1581%7C13554%7C2022-10-01T11%3A30%7C10413%7C2022-10-01T13%3A50%7C80%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32090%2C-32677%26operators%3D-32478%3B-32677%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D3670.35%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLklKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYA8gcR8h4AAAA%7C-773863552676494600%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + }, { + "Agents" : [ 1963893 ], + "QuoteAgeInMinutes" : 3, + "Price" : 3827.00, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fatbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32090%7C5594%7C10141%7C2022-10-01T09%3A50%7C13554%7C2022-10-01T10%3A15%7C85%7C-%7C-%7C-%3Bflight%7C-32677%7C1581%7C13554%7C2022-10-01T11%3A30%7C10413%7C2022-10-01T13%3A50%7C80%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32090%2C-32677%26operators%3D-32478%3B-32677%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D3827.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLElKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAnUxb5x4AAAA%7C-773863552676494600%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A02%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210010950--32090,-32677-2-10675-2210012020&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210010811--32283,-32677-2-10675-2210012020", + "PricingOptions" : [ { + "Agents" : [ 1963893 ], + "QuoteAgeInMinutes" : 3, + "Price" : 5074.00, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fatbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32283%7C9219%7C10141%7C2022-10-01T08%3A11%7C9451%7C2022-10-01T10%3A19%7C128%7C-%7C-%7C-%3Bflight%7C-32677%7C8233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32283%2C-32677%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D5074.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLElKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAnUxb5x4AAAA%7C-8415820881155668302%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A02%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210010811--32283,-32677-2-10675-2210012020&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210011955--32340-3-10675-2210021500", + "PricingOptions" : [ { + "Agents" : [ 2627445 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2129.98, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fgtbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32340%7C725%7C10141%7C2022-10-01T19%3A55%7C17517%7C2022-10-01T21%3A25%7C90%7C-%7C-%7C-%3Bflight%7C-32340%7C725%7C17517%7C2022-10-01T22%3A25%7C9252%7C2022-10-02T05%3A45%7C380%7C-%7C-%7C-%3Bflight%7C-32340%7C508%7C9252%7C2022-10-02T08%3A30%7C13521%7C2022-10-02T11%3A00%7C330%7C-%7C-%7C-%3Bflight%7C-32340%7C1030%7C13521%7C2022-10-02T13%3A20%7C10675%7C2022-10-02T15%3A00%7C40%7C-%7C-%7C-%26carriers%3D-32340%26operators%3D-32340%3B-32340%3B-32340%3B-32557%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2129.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJL0lKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYALJGF2B4AAAA%7C3769030244678168349%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 1959285 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2143.98, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Farbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32340%7C725%7C10141%7C2022-10-01T19%3A55%7C17517%7C2022-10-01T21%3A25%7C90%7C-%7C-%7C-%3Bflight%7C-32340%7C725%7C17517%7C2022-10-01T22%3A25%7C9252%7C2022-10-02T05%3A45%7C380%7C-%7C-%7C-%3Bflight%7C-32340%7C508%7C9252%7C2022-10-02T08%3A30%7C13521%7C2022-10-02T11%3A00%7C330%7C-%7C-%7C-%3Bflight%7C-32340%7C1030%7C13521%7C2022-10-02T13%3A20%7C10675%7C2022-10-02T15%3A00%7C40%7C-%7C-%7C-%26carriers%3D-32340%26operators%3D-32340%3B-32340%3B-32340%3B-32557%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2143.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLEpKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAOyCAjB4AAAA%7C3769030244678168349%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 1963893 ], + "QuoteAgeInMinutes" : 3, + "Price" : 2587.00, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fatbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32340%7C725%7C10141%7C2022-10-01T19%3A55%7C17517%7C2022-10-01T21%3A25%7C90%7C-%7C-%7C-%3Bflight%7C-32340%7C725%7C17517%7C2022-10-01T22%3A25%7C9252%7C2022-10-02T05%3A45%7C380%7C-%7C-%7C-%3Bflight%7C-32340%7C508%7C9252%7C2022-10-02T08%3A30%7C13521%7C2022-10-02T11%3A00%7C330%7C-%7C-%7C-%3Bflight%7C-32340%7C1030%7C13521%7C2022-10-02T13%3A20%7C10675%7C2022-10-02T15%3A00%7C40%7C-%7C-%7C-%26carriers%3D-32340%26operators%3D-32340%3B-32340%3B-32340%3B-32557%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2587.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLElKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAnUxb5x4AAAA%7C3769030244678168349%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A02%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210011955--32340-3-10675-2210021500&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210011955--32340-4-10675-2210031110", + "PricingOptions" : [ { + "Agents" : [ 2627445 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2226.98, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fgtbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32340%7C725%7C10141%7C2022-10-01T19%3A55%7C17517%7C2022-10-01T21%3A25%7C90%7C-%7C-%7C-%3Bflight%7C-32340%7C725%7C17517%7C2022-10-01T22%3A25%7C9252%7C2022-10-02T05%3A45%7C380%7C-%7C-%7C-%3Bflight%7C-32340%7C913%7C9252%7C2022-10-02T09%3A00%7C11028%7C2022-10-02T11%3A30%7C270%7C-%7C-%7C-%3Bflight%7C-32340%7C913%7C11028%7C2022-10-02T12%3A30%7C16542%7C2022-10-02T13%3A15%7C45%7C-%7C-%7C-%3Bflight%7C-32340%7C1031%7C16542%7C2022-10-03T09%3A30%7C10675%7C2022-10-03T11%3A10%7C100%7C-%7C-%7C-%26carriers%3D-32340%26operators%3D-32340%3B-32340%3B-32340%3B-32340%3B-32557%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2226.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJL0lKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYALJGF2B4AAAA%7C2602786559436643415%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 1959285 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2241.98, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Farbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32340%7C725%7C10141%7C2022-10-01T19%3A55%7C17517%7C2022-10-01T21%3A25%7C90%7C-%7C-%7C-%3Bflight%7C-32340%7C725%7C17517%7C2022-10-01T22%3A25%7C9252%7C2022-10-02T05%3A45%7C380%7C-%7C-%7C-%3Bflight%7C-32340%7C913%7C9252%7C2022-10-02T09%3A00%7C11028%7C2022-10-02T11%3A30%7C270%7C-%7C-%7C-%3Bflight%7C-32340%7C913%7C11028%7C2022-10-02T12%3A30%7C16542%7C2022-10-02T13%3A15%7C45%7C-%7C-%7C-%3Bflight%7C-32340%7C1031%7C16542%7C2022-10-03T09%3A30%7C10675%7C2022-10-03T11%3A10%7C100%7C-%7C-%7C-%26carriers%3D-32340%26operators%3D-32340%3B-32340%3B-32340%3B-32340%3B-32557%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2241.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLEpKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAOyCAjB4AAAA%7C2602786559436643415%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210011955--32340-4-10675-2210031110&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210011450--31734-1-10675-2210022145", + "PricingOptions" : [ { + "Agents" : [ 4068219 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2247.35, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fturk%2F1%2F10141.10675.2022-10-01%2Fair%2Fairli%2Fflights%3Fitinerary%3Dflight%7C-31734%7C1944%7C10141%7C2022-10-01T14%3A50%7C12585%7C2022-10-01T19%3A15%7C205%7CZNOW%7CZ%7CBUSGLOBAL%3Bflight%7C-31734%7C559%7C12585%7C2022-10-02T16%3A50%7C10675%7C2022-10-02T21%3A45%7C415%7CZNOW%7CZ%7CBUSGLOBAL%26carriers%3D-31734%26operators%3D-31734%3B-31734%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2247.35%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WIpKS3KFmLmmMUpxcyxOVihoe3eTDYjJgVGCyYAw_kTtx4AAAA%7C5692553869276892221%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dfalse" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210011450--31734-1-10675-2210022145&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210011035--32132,-32677-2-10675-2210012020", + "PricingOptions" : [ { + "Agents" : [ 1959285 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2094.98, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Farbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32132%7C1724%7C10141%7C2022-10-01T10%3A35%7C9451%7C2022-10-01T11%3A35%7C60%7C-%7C-%7C-%3Bflight%7C-32132%7C1233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32132%2C-32677%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2094.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLEpKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAOyCAjB4AAAA%7C1083777713194180138%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 2627445 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2100.98, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fgtbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32132%7C1724%7C10141%7C2022-10-01T10%3A35%7C9451%7C2022-10-01T11%3A35%7C60%7C-%7C-%7C-%3Bflight%7C-32132%7C1233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32132%2C-32677%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2100.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJL0lKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYALJGF2B4AAAA%7C1083777713194180138%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 1963893 ], + "QuoteAgeInMinutes" : 3, + "Price" : 2200.00, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fatbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32132%7C1724%7C10141%7C2022-10-01T10%3A35%7C9451%7C2022-10-01T11%3A35%7C60%7C-%7C-%7C-%3Bflight%7C-32132%7C1233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32132%2C-32677%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2200.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLElKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAnUxb5x4AAAA%7C1083777713194180138%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A02%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 2185077 ], + "QuoteAgeInMinutes" : 4, + "Price" : 5738.88, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fctbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32132%7C1724%7C10141%7C2022-10-01T10%3A35%7C9451%7C2022-10-01T11%3A35%7C60%7C-%7C-%7C-%3Bflight%7C-32132%7C1233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32132%2C-32677%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D5738.88%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLklKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYA8gcR8h4AAAA%7C1083777713194180138%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210011035--32132,-32677-2-10675-2210012020&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210011125--31734-1-10675-2210012140", + "PricingOptions" : [ { + "Agents" : [ 2627445 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2123.98, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fgtbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31734%7C1938%7C10141%7C2022-10-01T11%3A25%7C12585%7C2022-10-01T15%3A50%7C205%7C-%7C-%7C-%3Bflight%7C-31734%7C557%7C12585%7C2022-10-01T16%3A50%7C10675%7C2022-10-01T21%3A40%7C410%7C-%7C-%7C-%26carriers%3D-31734%26operators%3D-31734%3B-31734%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2123.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJL0lKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYALJGF2B4AAAA%7C-516086244284689016%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 1959285 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2127.98, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Farbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31734%7C1938%7C10141%7C2022-10-01T11%3A25%7C12585%7C2022-10-01T15%3A50%7C205%7C-%7C-%7C-%3Bflight%7C-31734%7C557%7C12585%7C2022-10-01T16%3A50%7C10675%7C2022-10-01T21%3A40%7C410%7C-%7C-%7C-%26carriers%3D-31734%26operators%3D-31734%3B-31734%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2127.98%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLEpKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAOyCAjB4AAAA%7C-516086244284689016%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 4035189 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2200.69, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Ftgbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31734%7C1938%7C10141%7C2022-10-01T11%3A25%7C12585%7C2022-10-01T15%3A50%7C205%7C-%7C-%7C-%3Bflight%7C-31734%7C557%7C12585%7C2022-10-01T16%3A50%7C10675%7C2022-10-01T21%3A40%7C410%7C-%7C-%7C-%26carriers%3D-31734%26operators%3D-31734%3B-31734%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2200.69%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WIpSU9KFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAkbZ67R4AAAA%7C-516086244284689016%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 1963893 ], + "QuoteAgeInMinutes" : 3, + "Price" : 2246.00, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fatbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31734%7C1938%7C10141%7C2022-10-01T11%3A25%7C12585%7C2022-10-01T15%3A50%7C205%7C-%7C-%7C-%3Bflight%7C-31734%7C557%7C12585%7C2022-10-01T16%3A50%7C10675%7C2022-10-01T21%3A40%7C410%7C-%7C-%7C-%26carriers%3D-31734%26operators%3D-31734%3B-31734%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2246.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLElKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYAnUxb5x4AAAA%7C-516086244284689016%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A02%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 4068219 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2247.35, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fturk%2F1%2F10141.10675.2022-10-01%2Fair%2Fairli%2Fflights%3Fitinerary%3Dflight%7C-31734%7C1938%7C10141%7C2022-10-01T11%3A25%7C12585%7C2022-10-01T15%3A50%7C205%7CZNOW%7CZ%7CBUSGLOBAL%3Bflight%7C-31734%7C557%7C12585%7C2022-10-01T16%3A50%7C10675%7C2022-10-01T21%3A40%7C410%7CZNOW%7CZ%7CBUSGLOBAL%26carriers%3D-31734%26operators%3D-31734%3B-31734%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2247.35%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WIpKS3KFmLmmMUpxcyxOVihoe3eTDYjJgVGCyYAw_kTtx4AAAA%7C-1785878349419557707%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dfalse" + }, { + "Agents" : [ 3065788 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2290.00, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fkrnl%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31734%7C1938%7C10141%7C2022-10-01T11%3A25%7C12585%7C2022-10-01T15%3A50%7C205%7C-%7C-%7C-%3Bflight%7C-31734%7C557%7C12585%7C2022-10-01T16%3A50%7C10675%7C2022-10-01T21%3A40%7C410%7C-%7C-%7C-%26carriers%3D-31734%26operators%3D-31734%3B-31734%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2290.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WLJLsrLEWLmmMUpxcyxOVihoe3eTDYjJgVGCyYA-00i7B4AAAA%7C-516086244284689016%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dfalse" + }, { + "Agents" : [ 2185077 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2361.85, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fctbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31734%7C1938%7C10141%7C2022-10-01T11%3A25%7C12585%7C2022-10-01T15%3A50%7C205%7C-%7C-%7C-%3Bflight%7C-31734%7C557%7C12585%7C2022-10-01T16%3A50%7C10675%7C2022-10-01T21%3A40%7C410%7C-%7C-%7C-%26carriers%3D-31734%26operators%3D-31734%3B-31734%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dbusiness%26facilitated%3Dfalse%26fps_session_id%3D7c6c9a1f-9310-4def-894b-c157b43fe14a%26ticket_price%3D2361.85%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3D6de9e2cc-d995-4219-8ee4-eb4420b35086%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLklKFWLmmMUpxcyxOVihoe3eTDYjJgVGCyYA8gcR8h4AAAA%7C-516086244284689016%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/7c6c9a1f-9310-4def-894b-c157b43fe14a-c1/booking", + "Body" : "OutboundLegId=10141-2210011125--31734-1-10675-2210012140&InboundLegId=", + "Method" : "PUT" + } + } ], + "Legs" : [ { + "Id" : "10141-2210010811--32283,-32132,-32677-2-10675-2210012020", + "SegmentIds" : [ 0, 1, 2 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T08:11:00", + "Arrival" : "2022-10-01T20:20:00", + "Duration" : 789, + "JourneyMode" : "Flight", + "Stops" : [ 9451, 10413 ], + "Carriers" : [ 1121, 1324, 838 ], + "OperatingCarriers" : [ 1889, 1324, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "9219", + "CarrierId" : 1121 + }, { + "FlightNumber" : "1233", + "CarrierId" : 1324 + }, { + "FlightNumber" : "800", + "CarrierId" : 838 + } ] + }, { + "Id" : "10141-2210010930--32090,-32677-2-10675-2210012020", + "SegmentIds" : [ 3, 4, 2 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T09:30:00", + "Arrival" : "2022-10-01T20:20:00", + "Duration" : 710, + "JourneyMode" : "Flight", + "Stops" : [ 11616, 10413 ], + "Carriers" : [ 1368, 838 ], + "OperatingCarriers" : [ 1368, 821, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "800", + "CarrierId" : 838 + }, { + "FlightNumber" : "1007", + "CarrierId" : 1368 + }, { + "FlightNumber" : "1619", + "CarrierId" : 838 + } ] + }, { + "Id" : "10141-2210010620--32478,-32677-2-10675-2210012020", + "SegmentIds" : [ 5, 6, 2 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T06:20:00", + "Arrival" : "2022-10-01T20:20:00", + "Duration" : 900, + "JourneyMode" : "Flight", + "Stops" : [ 14476, 10413 ], + "Carriers" : [ 1710, 838 ], + "OperatingCarriers" : [ 1710, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "800", + "CarrierId" : 838 + }, { + "FlightNumber" : "3153", + "CarrierId" : 1710 + }, { + "FlightNumber" : "1831", + "CarrierId" : 838 + } ] + }, { + "Id" : "10141-2210010935--32478,-32677-2-10675-2210012020", + "SegmentIds" : [ 7, 8, 2 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T09:35:00", + "Arrival" : "2022-10-01T20:20:00", + "Duration" : 705, + "JourneyMode" : "Flight", + "Stops" : [ 10694, 10413 ], + "Carriers" : [ 1710, 838 ], + "OperatingCarriers" : [ 1710, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "800", + "CarrierId" : 838 + }, { + "FlightNumber" : "2257", + "CarrierId" : 1710 + }, { + "FlightNumber" : "1151", + "CarrierId" : 838 + } ] + }, { + "Id" : "10141-2210010800--32677-2-10675-2210012020", + "SegmentIds" : [ 9, 10, 2 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T08:00:00", + "Arrival" : "2022-10-01T20:20:00", + "Duration" : 800, + "JourneyMode" : "Flight", + "Stops" : [ 9451, 10413 ], + "Carriers" : [ 838 ], + "OperatingCarriers" : [ 1889, 1324, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "800", + "CarrierId" : 838 + }, { + "FlightNumber" : "3149", + "CarrierId" : 838 + }, { + "FlightNumber" : "8233", + "CarrierId" : 838 + } ] + }, { + "Id" : "10141-2210010735--31734-1-10675-2210012140", + "SegmentIds" : [ 11, 12 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T07:35:00", + "Arrival" : "2022-10-01T21:40:00", + "Duration" : 905, + "JourneyMode" : "Flight", + "Stops" : [ 12585 ], + "Carriers" : [ 1755 ], + "OperatingCarriers" : [ 1755 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "1942", + "CarrierId" : 1755 + }, { + "FlightNumber" : "557", + "CarrierId" : 1755 + } ] + }, { + "Id" : "10141-2210010930--32478,-32677-2-10675-2210012020", + "SegmentIds" : [ 13, 4, 2 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T09:30:00", + "Arrival" : "2022-10-01T20:20:00", + "Duration" : 710, + "JourneyMode" : "Flight", + "Stops" : [ 11616, 10413 ], + "Carriers" : [ 1710, 838 ], + "OperatingCarriers" : [ 1368, 821, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "800", + "CarrierId" : 838 + }, { + "FlightNumber" : "1619", + "CarrierId" : 838 + }, { + "FlightNumber" : "7001", + "CarrierId" : 1710 + } ] + }, { + "Id" : "10141-2210010850--31939,-32684-3-10675-2210022200", + "SegmentIds" : [ 14, 15, 16, 17 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T08:50:00", + "Arrival" : "2022-10-02T22:00:00", + "Duration" : 2290, + "JourneyMode" : "Flight", + "Stops" : [ 11089, 9229, 9210 ], + "Carriers" : [ 1618, 262 ], + "OperatingCarriers" : [ 1618, 262 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "196", + "CarrierId" : 1618 + }, { + "FlightNumber" : "1423", + "CarrierId" : 1618 + }, { + "FlightNumber" : "1423", + "CarrierId" : 1618 + }, { + "FlightNumber" : "520", + "CarrierId" : 262 + } ] + }, { + "Id" : "10141-2210010610--32132,-31734-3-10675-2210012140", + "SegmentIds" : [ 18, 19, 20, 12 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T06:10:00", + "Arrival" : "2022-10-01T21:40:00", + "Duration" : 990, + "JourneyMode" : "Flight", + "Stops" : [ 9451, 13853, 12585 ], + "Carriers" : [ 1324, 1755 ], + "OperatingCarriers" : [ 1889, 1755 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "557", + "CarrierId" : 1755 + }, { + "FlightNumber" : "1720", + "CarrierId" : 1324 + }, { + "FlightNumber" : "1413", + "CarrierId" : 1324 + }, { + "FlightNumber" : "1808", + "CarrierId" : 1755 + } ] + }, { + "Id" : "10141-2210010930--32090,-31734-2-10675-2210012140", + "SegmentIds" : [ 3, 21, 12 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T09:30:00", + "Arrival" : "2022-10-01T21:40:00", + "Duration" : 790, + "JourneyMode" : "Flight", + "Stops" : [ 11616, 12585 ], + "Carriers" : [ 1368, 1755 ], + "OperatingCarriers" : [ 1368, 1755 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "1007", + "CarrierId" : 1368 + }, { + "FlightNumber" : "557", + "CarrierId" : 1755 + }, { + "FlightNumber" : "1588", + "CarrierId" : 1755 + } ] + }, { + "Id" : "10141-2210011035--32132-2-10675-2210012020", + "SegmentIds" : [ 22, 1, 23 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T10:35:00", + "Arrival" : "2022-10-01T20:20:00", + "Duration" : 645, + "JourneyMode" : "Flight", + "Stops" : [ 9451, 10413 ], + "Carriers" : [ 1324 ], + "OperatingCarriers" : [ 1889, 1324, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "1233", + "CarrierId" : 1324 + }, { + "FlightNumber" : "1724", + "CarrierId" : 1324 + }, { + "FlightNumber" : "2274", + "CarrierId" : 1324 + } ] + }, { + "Id" : "10141-2210010950--32090,-32677-2-10675-2210012020", + "SegmentIds" : [ 24, 25, 2 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T09:50:00", + "Arrival" : "2022-10-01T20:20:00", + "Duration" : 690, + "JourneyMode" : "Flight", + "Stops" : [ 13554, 10413 ], + "Carriers" : [ 1368, 838 ], + "OperatingCarriers" : [ 1710, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "800", + "CarrierId" : 838 + }, { + "FlightNumber" : "5594", + "CarrierId" : 1368 + }, { + "FlightNumber" : "1581", + "CarrierId" : 838 + } ] + }, { + "Id" : "10141-2210010811--32283,-32677-2-10675-2210012020", + "SegmentIds" : [ 0, 10, 2 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T08:11:00", + "Arrival" : "2022-10-01T20:20:00", + "Duration" : 789, + "JourneyMode" : "Flight", + "Stops" : [ 9451, 10413 ], + "Carriers" : [ 1121, 838 ], + "OperatingCarriers" : [ 1889, 1324, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "9219", + "CarrierId" : 1121 + }, { + "FlightNumber" : "800", + "CarrierId" : 838 + }, { + "FlightNumber" : "8233", + "CarrierId" : 838 + } ] + }, { + "Id" : "10141-2210011955--32340-3-10675-2210021500", + "SegmentIds" : [ 26, 27, 28, 29 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T19:55:00", + "Arrival" : "2022-10-02T15:00:00", + "Duration" : 1205, + "JourneyMode" : "Flight", + "Stops" : [ 17517, 9252, 13521 ], + "Carriers" : [ 1044 ], + "OperatingCarriers" : [ 1044, 1328 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "725", + "CarrierId" : 1044 + }, { + "FlightNumber" : "725", + "CarrierId" : 1044 + }, { + "FlightNumber" : "508", + "CarrierId" : 1044 + }, { + "FlightNumber" : "1030", + "CarrierId" : 1044 + } ] + }, { + "Id" : "10141-2210011955--32340-4-10675-2210031110", + "SegmentIds" : [ 26, 27, 30, 31, 32 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T19:55:00", + "Arrival" : "2022-10-03T11:10:00", + "Duration" : 2415, + "JourneyMode" : "Flight", + "Stops" : [ 17517, 9252, 11028, 16542 ], + "Carriers" : [ 1044 ], + "OperatingCarriers" : [ 1044, 1328 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "725", + "CarrierId" : 1044 + }, { + "FlightNumber" : "725", + "CarrierId" : 1044 + }, { + "FlightNumber" : "913", + "CarrierId" : 1044 + }, { + "FlightNumber" : "913", + "CarrierId" : 1044 + }, { + "FlightNumber" : "1031", + "CarrierId" : 1044 + } ] + }, { + "Id" : "10141-2210011450--31734-1-10675-2210022145", + "SegmentIds" : [ 33, 34 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T14:50:00", + "Arrival" : "2022-10-02T21:45:00", + "Duration" : 1915, + "JourneyMode" : "Flight", + "Stops" : [ 12585 ], + "Carriers" : [ 1755 ], + "OperatingCarriers" : [ 1755 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "1944", + "CarrierId" : 1755 + }, { + "FlightNumber" : "559", + "CarrierId" : 1755 + } ] + }, { + "Id" : "10141-2210011035--32132,-32677-2-10675-2210012020", + "SegmentIds" : [ 22, 1, 2 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T10:35:00", + "Arrival" : "2022-10-01T20:20:00", + "Duration" : 645, + "JourneyMode" : "Flight", + "Stops" : [ 9451, 10413 ], + "Carriers" : [ 1324, 838 ], + "OperatingCarriers" : [ 1889, 1324, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "1233", + "CarrierId" : 1324 + }, { + "FlightNumber" : "800", + "CarrierId" : 838 + }, { + "FlightNumber" : "1724", + "CarrierId" : 1324 + } ] + }, { + "Id" : "10141-2210011125--31734-1-10675-2210012140", + "SegmentIds" : [ 35, 12 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T11:25:00", + "Arrival" : "2022-10-01T21:40:00", + "Duration" : 675, + "JourneyMode" : "Flight", + "Stops" : [ 12585 ], + "Carriers" : [ 1755 ], + "OperatingCarriers" : [ 1755 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "557", + "CarrierId" : 1755 + }, { + "FlightNumber" : "1938", + "CarrierId" : 1755 + } ] + } ], + "Segments" : [ { + "Id" : 0, + "OriginStation" : 10141, + "DestinationStation" : 9451, + "DepartureDateTime" : "2022-10-01T08:11:00", + "ArrivalDateTime" : "2022-10-01T10:19:00", + "Carrier" : 1121, + "OperatingCarrier" : 1889, + "Duration" : 128, + "FlightNumber" : "9219", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 1, + "OriginStation" : 9451, + "DestinationStation" : 10413, + "DepartureDateTime" : "2022-10-01T12:25:00", + "ArrivalDateTime" : "2022-10-01T13:40:00", + "Carrier" : 1324, + "OperatingCarrier" : 1324, + "Duration" : 75, + "FlightNumber" : "1233", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 2, + "OriginStation" : 10413, + "DestinationStation" : 10675, + "DepartureDateTime" : "2022-10-01T15:00:00", + "ArrivalDateTime" : "2022-10-01T20:20:00", + "Carrier" : 838, + "OperatingCarrier" : 838, + "Duration" : 380, + "FlightNumber" : "800", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 3, + "OriginStation" : 10141, + "DestinationStation" : 11616, + "DepartureDateTime" : "2022-10-01T09:30:00", + "ArrivalDateTime" : "2022-10-01T10:30:00", + "Carrier" : 1368, + "OperatingCarrier" : 1368, + "Duration" : 60, + "FlightNumber" : "1007", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 4, + "OriginStation" : 11616, + "DestinationStation" : 10413, + "DepartureDateTime" : "2022-10-01T12:05:00", + "ArrivalDateTime" : "2022-10-01T13:35:00", + "Carrier" : 838, + "OperatingCarrier" : 821, + "Duration" : 90, + "FlightNumber" : "1619", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 5, + "OriginStation" : 10141, + "DestinationStation" : 14476, + "DepartureDateTime" : "2022-10-01T06:20:00", + "ArrivalDateTime" : "2022-10-01T07:45:00", + "Carrier" : 1710, + "OperatingCarrier" : 1710, + "Duration" : 85, + "FlightNumber" : "3153", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 6, + "OriginStation" : 14476, + "DestinationStation" : 10413, + "DepartureDateTime" : "2022-10-01T10:25:00", + "ArrivalDateTime" : "2022-10-01T11:55:00", + "Carrier" : 838, + "OperatingCarrier" : 838, + "Duration" : 90, + "FlightNumber" : "1831", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 7, + "OriginStation" : 10141, + "DestinationStation" : 10694, + "DepartureDateTime" : "2022-10-01T09:35:00", + "ArrivalDateTime" : "2022-10-01T11:05:00", + "Carrier" : 1710, + "OperatingCarrier" : 1710, + "Duration" : 90, + "FlightNumber" : "2257", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 8, + "OriginStation" : 10694, + "DestinationStation" : 10413, + "DepartureDateTime" : "2022-10-01T11:55:00", + "ArrivalDateTime" : "2022-10-01T14:00:00", + "Carrier" : 838, + "OperatingCarrier" : 838, + "Duration" : 125, + "FlightNumber" : "1151", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 9, + "OriginStation" : 10141, + "DestinationStation" : 9451, + "DepartureDateTime" : "2022-10-01T08:00:00", + "ArrivalDateTime" : "2022-10-01T08:55:00", + "Carrier" : 838, + "OperatingCarrier" : 1889, + "Duration" : 55, + "FlightNumber" : "3149", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 10, + "OriginStation" : 9451, + "DestinationStation" : 10413, + "DepartureDateTime" : "2022-10-01T12:25:00", + "ArrivalDateTime" : "2022-10-01T13:40:00", + "Carrier" : 838, + "OperatingCarrier" : 1324, + "Duration" : 75, + "FlightNumber" : "8233", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 11, + "OriginStation" : 10141, + "DestinationStation" : 12585, + "DepartureDateTime" : "2022-10-01T07:35:00", + "ArrivalDateTime" : "2022-10-01T12:05:00", + "Carrier" : 1755, + "OperatingCarrier" : 1755, + "Duration" : 210, + "FlightNumber" : "1942", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 12, + "OriginStation" : 12585, + "DestinationStation" : 10675, + "DepartureDateTime" : "2022-10-01T16:50:00", + "ArrivalDateTime" : "2022-10-01T21:40:00", + "Carrier" : 1755, + "OperatingCarrier" : 1755, + "Duration" : 410, + "FlightNumber" : "557", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 13, + "OriginStation" : 10141, + "DestinationStation" : 11616, + "DepartureDateTime" : "2022-10-01T09:30:00", + "ArrivalDateTime" : "2022-10-01T10:30:00", + "Carrier" : 1710, + "OperatingCarrier" : 1368, + "Duration" : 60, + "FlightNumber" : "7001", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 14, + "OriginStation" : 10141, + "DestinationStation" : 11089, + "DepartureDateTime" : "2022-10-01T08:50:00", + "ArrivalDateTime" : "2022-10-01T16:00:00", + "Carrier" : 1618, + "OperatingCarrier" : 1618, + "Duration" : 370, + "FlightNumber" : "196", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 15, + "OriginStation" : 11089, + "DestinationStation" : 9229, + "DepartureDateTime" : "2022-10-02T02:40:00", + "ArrivalDateTime" : "2022-10-02T07:00:00", + "Carrier" : 1618, + "OperatingCarrier" : 1618, + "Duration" : 440, + "FlightNumber" : "1423", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 16, + "OriginStation" : 9229, + "DestinationStation" : 9210, + "DepartureDateTime" : "2022-10-02T08:30:00", + "ArrivalDateTime" : "2022-10-02T09:30:00", + "Carrier" : 1618, + "OperatingCarrier" : 1618, + "Duration" : 60, + "FlightNumber" : "1423", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 17, + "OriginStation" : 9210, + "DestinationStation" : 10675, + "DepartureDateTime" : "2022-10-02T19:35:00", + "ArrivalDateTime" : "2022-10-02T22:00:00", + "Carrier" : 262, + "OperatingCarrier" : 262, + "Duration" : 85, + "FlightNumber" : "520", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 18, + "OriginStation" : 10141, + "DestinationStation" : 9451, + "DepartureDateTime" : "2022-10-01T06:10:00", + "ArrivalDateTime" : "2022-10-01T07:05:00", + "Carrier" : 1324, + "OperatingCarrier" : 1889, + "Duration" : 55, + "FlightNumber" : "1720", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 19, + "OriginStation" : 9451, + "DestinationStation" : 13853, + "DepartureDateTime" : "2022-10-01T07:50:00", + "ArrivalDateTime" : "2022-10-01T09:25:00", + "Carrier" : 1324, + "OperatingCarrier" : 1889, + "Duration" : 95, + "FlightNumber" : "1413", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 20, + "OriginStation" : 13853, + "DestinationStation" : 12585, + "DepartureDateTime" : "2022-10-01T11:35:00", + "ArrivalDateTime" : "2022-10-01T15:50:00", + "Carrier" : 1755, + "OperatingCarrier" : 1755, + "Duration" : 195, + "FlightNumber" : "1808", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 21, + "OriginStation" : 11616, + "DestinationStation" : 12585, + "DepartureDateTime" : "2022-10-01T11:40:00", + "ArrivalDateTime" : "2022-10-01T15:50:00", + "Carrier" : 1755, + "OperatingCarrier" : 1755, + "Duration" : 190, + "FlightNumber" : "1588", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 22, + "OriginStation" : 10141, + "DestinationStation" : 9451, + "DepartureDateTime" : "2022-10-01T10:35:00", + "ArrivalDateTime" : "2022-10-01T11:35:00", + "Carrier" : 1324, + "OperatingCarrier" : 1889, + "Duration" : 60, + "FlightNumber" : "1724", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 23, + "OriginStation" : 10413, + "DestinationStation" : 10675, + "DepartureDateTime" : "2022-10-01T15:00:00", + "ArrivalDateTime" : "2022-10-01T20:20:00", + "Carrier" : 1324, + "OperatingCarrier" : 838, + "Duration" : 380, + "FlightNumber" : "2274", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 24, + "OriginStation" : 10141, + "DestinationStation" : 13554, + "DepartureDateTime" : "2022-10-01T09:50:00", + "ArrivalDateTime" : "2022-10-01T10:15:00", + "Carrier" : 1368, + "OperatingCarrier" : 1710, + "Duration" : 85, + "FlightNumber" : "5594", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 25, + "OriginStation" : 13554, + "DestinationStation" : 10413, + "DepartureDateTime" : "2022-10-01T11:30:00", + "ArrivalDateTime" : "2022-10-01T13:50:00", + "Carrier" : 838, + "OperatingCarrier" : 838, + "Duration" : 80, + "FlightNumber" : "1581", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 26, + "OriginStation" : 10141, + "DestinationStation" : 17517, + "DepartureDateTime" : "2022-10-01T19:55:00", + "ArrivalDateTime" : "2022-10-01T21:25:00", + "Carrier" : 1044, + "OperatingCarrier" : 1044, + "Duration" : 90, + "FlightNumber" : "725", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 27, + "OriginStation" : 17517, + "DestinationStation" : 9252, + "DepartureDateTime" : "2022-10-01T22:25:00", + "ArrivalDateTime" : "2022-10-02T05:45:00", + "Carrier" : 1044, + "OperatingCarrier" : 1044, + "Duration" : 380, + "FlightNumber" : "725", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 28, + "OriginStation" : 9252, + "DestinationStation" : 13521, + "DepartureDateTime" : "2022-10-02T08:30:00", + "ArrivalDateTime" : "2022-10-02T11:00:00", + "Carrier" : 1044, + "OperatingCarrier" : 1044, + "Duration" : 330, + "FlightNumber" : "508", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 29, + "OriginStation" : 13521, + "DestinationStation" : 10675, + "DepartureDateTime" : "2022-10-02T13:20:00", + "ArrivalDateTime" : "2022-10-02T15:00:00", + "Carrier" : 1044, + "OperatingCarrier" : 1328, + "Duration" : 40, + "FlightNumber" : "1030", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 30, + "OriginStation" : 9252, + "DestinationStation" : 11028, + "DepartureDateTime" : "2022-10-02T09:00:00", + "ArrivalDateTime" : "2022-10-02T11:30:00", + "Carrier" : 1044, + "OperatingCarrier" : 1044, + "Duration" : 270, + "FlightNumber" : "913", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 31, + "OriginStation" : 11028, + "DestinationStation" : 16542, + "DepartureDateTime" : "2022-10-02T12:30:00", + "ArrivalDateTime" : "2022-10-02T13:15:00", + "Carrier" : 1044, + "OperatingCarrier" : 1044, + "Duration" : 45, + "FlightNumber" : "913", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 32, + "OriginStation" : 16542, + "DestinationStation" : 10675, + "DepartureDateTime" : "2022-10-03T09:30:00", + "ArrivalDateTime" : "2022-10-03T11:10:00", + "Carrier" : 1044, + "OperatingCarrier" : 1328, + "Duration" : 100, + "FlightNumber" : "1031", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 33, + "OriginStation" : 10141, + "DestinationStation" : 12585, + "DepartureDateTime" : "2022-10-01T14:50:00", + "ArrivalDateTime" : "2022-10-01T19:15:00", + "Carrier" : 1755, + "OperatingCarrier" : 1755, + "Duration" : 205, + "FlightNumber" : "1944", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 34, + "OriginStation" : 12585, + "DestinationStation" : 10675, + "DepartureDateTime" : "2022-10-02T16:50:00", + "ArrivalDateTime" : "2022-10-02T21:45:00", + "Carrier" : 1755, + "OperatingCarrier" : 1755, + "Duration" : 415, + "FlightNumber" : "559", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 35, + "OriginStation" : 10141, + "DestinationStation" : 12585, + "DepartureDateTime" : "2022-10-01T11:25:00", + "ArrivalDateTime" : "2022-10-01T15:50:00", + "Carrier" : 1755, + "OperatingCarrier" : 1755, + "Duration" : 205, + "FlightNumber" : "1938", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + } ], + "Carriers" : [ { + "Id" : 1889, + "Code" : "WA", + "Name" : "KLM Cityhopper", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/WA.png", + "DisplayCode" : "WA" + }, { + "Id" : 1121, + "Code" : "GA", + "Name" : "Garuda Indonesia", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/GA.png", + "DisplayCode" : "GA" + }, { + "Id" : 1324, + "Code" : "KL", + "Name" : "KLM", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/KL.png", + "DisplayCode" : "KL" + }, { + "Id" : 838, + "Code" : "AF", + "Name" : "Air France", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/AF.png", + "DisplayCode" : "AF" + }, { + "Id" : 1368, + "Code" : "LH", + "Name" : "Lufthansa", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/LH.png", + "DisplayCode" : "LH" + }, { + "Id" : 821, + "Code" : "A5", + "Name" : "HOP!", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/A5.png", + "DisplayCode" : "A5" + }, { + "Id" : 1710, + "Code" : "SN", + "Name" : "Brussels Airlines", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/SN.png", + "DisplayCode" : "SN" + }, { + "Id" : 1755, + "Code" : "TK", + "Name" : "Turkish Airlines", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/TK.png", + "DisplayCode" : "TK" + }, { + "Id" : 1618, + "Code" : "QR", + "Name" : "Qatar Airways", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/QR.png", + "DisplayCode" : "QR" + }, { + "Id" : 262, + "Code" : "HF", + "Name" : "Air Côte dIvoire", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/5F.png", + "DisplayCode" : "HF" + }, { + "Id" : 1044, + "Code" : "ET", + "Name" : "Ethiopian Airlines", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/ET.png", + "DisplayCode" : "ET" + }, { + "Id" : 1328, + "Code" : "KP", + "Name" : "ASKY Airlines", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/KP.png", + "DisplayCode" : "KP" + } ], + "Agents" : [ { + "Id" : 1959285, + "Name" : "Mytrip", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/arbe.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "TravelAgent" + }, { + "Id" : 3986809, + "Name" : "Travel2Be", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/t2bi.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "TravelAgent" + }, { + "Id" : 2627445, + "Name" : "GotoGate", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/gtbe.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "TravelAgent" + }, { + "Id" : 1963893, + "Name" : "Budgetair.be", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/atbe.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "TravelAgent" + }, { + "Id" : 3934928, + "Name" : "Kiwi.com", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/skyp.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "TravelAgent" + }, { + "Id" : 4035189, + "Name" : "Travelgenio", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/tgbe.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "TravelAgent" + }, { + "Id" : 3065788, + "Name" : "KILROY", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/krnl.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "TravelAgent" + }, { + "Id" : 4068219, + "Name" : "Turkish Airlines", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/turk.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "Airline" + }, { + "Id" : 2185077, + "Name" : "Trip.com", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/ctbe.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "TravelAgent" + }, { + "Id" : 2406553, + "Name" : "Ethiopian Airlines", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/ethi.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "Airline" + } ], + "Places" : [ { + "Id" : 14476, + "ParentId" : 5072, + "Code" : "MXP", + "Type" : "Airport", + "Name" : "Milan Malpensa" + }, { + "Id" : 9229, + "ParentId" : 306, + "Code" : "ACC", + "Type" : "Airport", + "Name" : "Accra" + }, { + "Id" : 19, + "Code" : "BJ", + "Type" : "Country", + "Name" : "Benin" + }, { + "Id" : 11028, + "ParentId" : 2171, + "Code" : "DLA", + "Type" : "Airport", + "Name" : "Douala" + }, { + "Id" : 1178, + "ParentId" : 240, + "Code" : "BRU", + "Type" : "City", + "Name" : "Brussels" + }, { + "Id" : 10141, + "ParentId" : 1178, + "Code" : "BRU", + "Type" : "Airport", + "Name" : "Brussels International" + }, { + "Id" : 29, + "Code" : "TR", + "Type" : "Country", + "Name" : "Turkey" + }, { + "Id" : 13853, + "ParentId" : 4838, + "Code" : "LYS", + "Type" : "Airport", + "Name" : "Lyon" + }, { + "Id" : 8222, + "ParentId" : 199, + "Code" : "VIE", + "Type" : "City", + "Name" : "Vienna" + }, { + "Id" : 16542, + "ParentId" : 7338, + "Code" : "SSG", + "Type" : "Airport", + "Name" : "Malabo" + }, { + "Id" : 287, + "ParentId" : 59, + "Code" : "ABJ", + "Type" : "City", + "Name" : "Abidjan" + }, { + "Id" : 9252, + "ParentId" : 322, + "Code" : "ADD", + "Type" : "Airport", + "Name" : "Addis Ababa" + }, { + "Id" : 2214, + "ParentId" : 41, + "Code" : "DOH", + "Type" : "City", + "Name" : "Doha" + }, { + "Id" : 12585, + "ParentId" : 3637, + "Code" : "IST", + "Type" : "Airport", + "Name" : "Istanbul" + }, { + "Id" : 41, + "Code" : "QA", + "Type" : "Country", + "Name" : "Qatar" + }, { + "Id" : 7338, + "ParentId" : 61, + "Code" : "SSG", + "Type" : "City", + "Name" : "Malabo" + }, { + "Id" : 10413, + "ParentId" : 6073, + "Code" : "CDG", + "Type" : "Airport", + "Name" : "Paris Charles de Gaulle" + }, { + "Id" : 11565, + "ParentId" : 2641, + "Code" : "FLR", + "Type" : "Airport", + "Name" : "Florence" + }, { + "Id" : 45, + "Code" : "CM", + "Type" : "Country", + "Name" : "Cameroon" + }, { + "Id" : 306, + "ParentId" : 69, + "Code" : "ACC", + "Type" : "City", + "Name" : "Accra" + }, { + "Id" : 10675, + "ParentId" : 1781, + "Code" : "COO", + "Type" : "Airport", + "Name" : "Cotonou" + }, { + "Id" : 3637, + "ParentId" : 29, + "Code" : "IST", + "Type" : "City", + "Name" : "Istanbul" + }, { + "Id" : 6073, + "ParentId" : 244, + "Code" : "PAR", + "Type" : "City", + "Name" : "Paris" + }, { + "Id" : 59, + "Code" : "CI", + "Type" : "Country", + "Name" : "Ivory Coast" + }, { + "Id" : 61, + "Code" : "GQ", + "Type" : "Country", + "Name" : "Equatorial Guinea" + }, { + "Id" : 63, + "Code" : "ET", + "Type" : "Country", + "Name" : "Ethiopia" + }, { + "Id" : 322, + "ParentId" : 63, + "Code" : "ADD", + "Type" : "City", + "Name" : "Addis Ababa" + }, { + "Id" : 69, + "Code" : "GH", + "Type" : "Country", + "Name" : "Ghana" + }, { + "Id" : 10694, + "ParentId" : 1783, + "Code" : "CPH", + "Type" : "Airport", + "Name" : "Copenhagen" + }, { + "Id" : 199, + "Code" : "AT", + "Type" : "Country", + "Name" : "Austria" + }, { + "Id" : 4558, + "ParentId" : 219, + "Code" : "LFW", + "Type" : "City", + "Name" : "Lome" + }, { + "Id" : 206, + "Code" : "DK", + "Type" : "Country", + "Name" : "Denmark" + }, { + "Id" : 5072, + "ParentId" : 226, + "Code" : "MIL", + "Type" : "City", + "Name" : "Milan" + }, { + "Id" : 11089, + "ParentId" : 2214, + "Code" : "DOH", + "Type" : "Airport", + "Name" : "Hamad International" + }, { + "Id" : 13521, + "ParentId" : 4558, + "Code" : "LFW", + "Type" : "Airport", + "Name" : "Lome" + }, { + "Id" : 2641, + "ParentId" : 226, + "Code" : "FLR", + "Type" : "City", + "Name" : "Florence" + }, { + "Id" : 4698, + "ParentId" : 247, + "Code" : "LON", + "Type" : "City", + "Name" : "London" + }, { + "Id" : 219, + "Code" : "TG", + "Type" : "Country", + "Name" : "Togo" + }, { + "Id" : 11616, + "ParentId" : 2687, + "Code" : "FRA", + "Type" : "Airport", + "Name" : "Frankfurt am Main" + }, { + "Id" : 226, + "Code" : "IT", + "Type" : "Country", + "Name" : "Italy" + }, { + "Id" : 4838, + "ParentId" : 244, + "Code" : "LYS", + "Type" : "City", + "Name" : "Lyon" + }, { + "Id" : 9451, + "ParentId" : 509, + "Code" : "AMS", + "Type" : "Airport", + "Name" : "Amsterdam" + }, { + "Id" : 235, + "Code" : "NL", + "Type" : "Country", + "Name" : "Netherlands" + }, { + "Id" : 17517, + "ParentId" : 8222, + "Code" : "VIE", + "Type" : "Airport", + "Name" : "Vienna" + }, { + "Id" : 240, + "Code" : "BE", + "Type" : "Country", + "Name" : "Belgium" + }, { + "Id" : 13554, + "ParentId" : 4698, + "Code" : "LHR", + "Type" : "Airport", + "Name" : "London Heathrow" + }, { + "Id" : 244, + "Code" : "MXN", + "Type" : "Country", + "Name" : "France" + }, { + "Id" : 1781, + "ParentId" : 19, + "Code" : "COO", + "Type" : "City", + "Name" : "Cotonou" + }, { + "Id" : 1783, + "ParentId" : 206, + "Code" : "CPH", + "Type" : "City", + "Name" : "Copenhagen" + }, { + "Id" : 247, + "Code" : "GB", + "Type" : "Country", + "Name" : "United Kingdom" + }, { + "Id" : 9210, + "ParentId" : 287, + "Code" : "ABJ", + "Type" : "Airport", + "Name" : "Abidjan" + }, { + "Id" : 2171, + "ParentId" : 45, + "Code" : "DLA", + "Type" : "City", + "Name" : "Douala" + }, { + "Id" : 252, + "Code" : "DE", + "Type" : "Country", + "Name" : "Germany" + }, { + "Id" : 509, + "ParentId" : 235, + "Code" : "AMS", + "Type" : "City", + "Name" : "Amsterdam" + }, { + "Id" : 2687, + "ParentId" : 252, + "Code" : "FRA", + "Type" : "City", + "Name" : "Frankfurt" + } ], + "Currencies" : [ { + "Code" : "EUR", + "Symbol" : "€", + "ThousandsSeparator" : ".", + "DecimalSeparator" : ",", + "SymbolOnLeft" : true, + "SpaceBetweenAmountAndSymbol" : true, + "RoundingCoefficient" : 0, + "DecimalDigits" : 2 + } ] +} \ No newline at end of file diff --git a/e-rights-common/src/test/resources/skyscanner/test_6may2022/pecon.json b/e-rights-common/src/test/resources/skyscanner/test_6may2022/pecon.json new file mode 100644 index 0000000..6d315ed --- /dev/null +++ b/e-rights-common/src/test/resources/skyscanner/test_6may2022/pecon.json @@ -0,0 +1,898 @@ +{ + "SessionKey" : "262808c3-117b-4159-81e5-1168ea24339f-c1", + "Query" : { + "Country" : "BE", + "Currency" : "EUR", + "Locale" : "en-GB", + "Adults" : 1, + "Children" : 0, + "Infants" : 0, + "OriginPlace" : "1178", + "DestinationPlace" : "1781", + "OutboundDate" : "2022-10-01", + "LocationSchema" : "Default", + "CabinClass" : "premium_economy", + "GroupPricing" : false + }, + "Status" : "UpdatesComplete", + "Itineraries" : [ { + "OutboundLegId" : "10141-2210010930--32090,-32677-2-10675-2210012020", + "PricingOptions" : [ { + "Agents" : [ 2185077 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2808.02, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fctbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32090%7C1007%7C10141%7C2022-10-01T09%3A30%7C11616%7C2022-10-01T10%3A30%7C60%7C-%7C-%7C-%3Bflight%7C-32677%7C1619%7C11616%7C2022-10-01T12%3A05%7C10413%7C2022-10-01T13%3A35%7C90%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32090%2C-32677%26operators%3D-32090%3B-32226%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dpremium_economy%26facilitated%3Dfalse%26fps_session_id%3D262808c3-117b-4159-81e5-1168ea24339f%26ticket_price%3D2808.02%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Df096f5f0-ffcf-4951-88aa-4207dca7bd46%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLklKFWLmmMUpxcyxOVihoe3eTDYjJgVGC0YASFYYax4AAAA%7C1847192962098841047%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/262808c3-117b-4159-81e5-1168ea24339f-c1/booking", + "Body" : "OutboundLegId=10141-2210010930--32090,-32677-2-10675-2210012020&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210010650--32544,-32677-3-10675-2210012020", + "PricingOptions" : [ { + "Agents" : [ 2185077 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2206.05, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fctbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32544%7C8172%7C10141%7C2022-10-01T06%3A50%7C17517%7C2022-10-01T08%3A35%7C105%7C-%7C-%7C-%3Bflight%7C-32544%7C705%7C17517%7C2022-10-01T09%3A45%7C15538%7C2022-10-01T10%3A35%7C50%7C-%7C-%7C-%3Bflight%7C-32677%7C1383%7C15538%7C2022-10-01T11%3A50%7C10413%7C2022-10-01T13%3A40%7C110%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32544%2C-32677%26operators%3D-32478%3B-32544%3B-32677%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dpremium_economy%26facilitated%3Dfalse%26fps_session_id%3D262808c3-117b-4159-81e5-1168ea24339f%26ticket_price%3D2206.05%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Df096f5f0-ffcf-4951-88aa-4207dca7bd46%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLklKFWLmmMUpxcyxOVihoe3eTDYjJgVGC0YASFYYax4AAAA%7C-5557159435283468732%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/262808c3-117b-4159-81e5-1168ea24339f-c1/booking", + "Body" : "OutboundLegId=10141-2210010650--32544,-32677-3-10675-2210012020&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210010800--32677-2-10675-2210012020", + "PricingOptions" : [ { + "Agents" : [ 2627445 ], + "QuoteAgeInMinutes" : 4, + "Price" : 1369.99, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fgtbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32677%7C3149%7C10141%7C2022-10-01T08%3A00%7C9451%7C2022-10-01T08%3A55%7C55%7C-%7C-%7C-%3Bflight%7C-32677%7C8233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32677%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dpremium_economy%26facilitated%3Dfalse%26fps_session_id%3D262808c3-117b-4159-81e5-1168ea24339f%26ticket_price%3D1369.99%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Df096f5f0-ffcf-4951-88aa-4207dca7bd46%26q_ids%3DH4sIAAAAAAAAAOOS4WJJL0lKFWLmmMUpxcyxOVihoe3eTDYjJgVGC0YAlsCMQR4AAAA%7C2909294883053824508%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 3065788 ], + "QuoteAgeInMinutes" : 4, + "Price" : 1420.00, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fkrnl%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32677%7C3149%7C10141%7C2022-10-01T08%3A00%7C9451%7C2022-10-01T08%3A55%7C55%7C-%7C-%7C-%3Bflight%7C-32677%7C8233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32677%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dpremium_economy%26facilitated%3Dfalse%26fps_session_id%3D262808c3-117b-4159-81e5-1168ea24339f%26ticket_price%3D1420.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Df096f5f0-ffcf-4951-88aa-4207dca7bd46%26q_ids%3DH4sIAAAAAAAAAOOS4WLJLsrLEWLmmMUpxcyxOVihoe3eTDYjJgVGC0YAQRwrdR4AAAA%7C2909294883053824508%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dfalse" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/262808c3-117b-4159-81e5-1168ea24339f-c1/booking", + "Body" : "OutboundLegId=10141-2210010800--32677-2-10675-2210012020&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210010610--32677-2-10675-2210012020", + "PricingOptions" : [ { + "Agents" : [ 3164430 ], + "QuoteAgeInMinutes" : 4, + "Price" : 1330.96, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Flmen%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32677%7C3147%7C10141%7C2022-10-01T06%3A10%7C9451%7C2022-10-01T07%3A05%7C55%7CSS52BBJ3%7CY%7C-%3Bflight%7C-32677%7C8229%7C9451%7C2022-10-01T08%3A00%7C10413%7C2022-10-01T09%3A25%7C85%7CSS52BBJ3%7CY%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7CSS52BBJ3%7CS%7C-%26carriers%3D-32677%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dpremium_economy%26facilitated%3Dfalse%26fps_session_id%3D262808c3-117b-4159-81e5-1168ea24339f%26ticket_price%3D1330.96%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Df096f5f0-ffcf-4951-88aa-4207dca7bd46%26q_ids%3DH4sIAAAAAAAAAOOS4WLJyU3NE2LmmMUpxcyxOVihoe3eTDYjJgVGC0YAaWkhcB4AAAA%7C7647965174735211735%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/262808c3-117b-4159-81e5-1168ea24339f-c1/booking", + "Body" : "OutboundLegId=10141-2210010610--32677-2-10675-2210012020&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210010925--31799,-32677-2-10675-2210012020", + "PricingOptions" : [ { + "Agents" : [ 2185077 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2153.57, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fctbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31799%7C791%7C10141%7C2022-10-01T09%3A25%7C12015%7C2022-10-01T10%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-31799%7C4606%7C12015%7C2022-10-01T12%3A00%7C10413%7C2022-10-01T13%3A15%7C75%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-31799%2C-32677%26operators%3D-31799%3B-32677%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dpremium_economy%26facilitated%3Dfalse%26fps_session_id%3D262808c3-117b-4159-81e5-1168ea24339f%26ticket_price%3D2153.57%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Df096f5f0-ffcf-4951-88aa-4207dca7bd46%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLklKFWLmmMUpxcyxOVihoe3eTDYjJgVGC0YASFYYax4AAAA%7C-4846840910560978937%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/262808c3-117b-4159-81e5-1168ea24339f-c1/booking", + "Body" : "OutboundLegId=10141-2210010925--31799,-32677-2-10675-2210012020&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210010700--32090,-32677-2-10675-2210012020", + "PricingOptions" : [ { + "Agents" : [ 2185077 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2005.16, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fctbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32090%7C5629%7C10141%7C2022-10-01T07%3A00%7C14385%7C2022-10-01T08%3A15%7C75%7C-%7C-%7C-%3Bflight%7C-32090%7C2228%7C14385%7C2022-10-01T09%3A50%7C10413%7C2022-10-01T11%3A25%7C95%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32090%2C-32677%26operators%3D-32478%3B-32090%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dpremium_economy%26facilitated%3Dfalse%26fps_session_id%3D262808c3-117b-4159-81e5-1168ea24339f%26ticket_price%3D2005.16%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Df096f5f0-ffcf-4951-88aa-4207dca7bd46%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLklKFWLmmMUpxcyxOVihoe3eTDYjJgVGC0YASFYYax4AAAA%7C-1034146974610155790%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/262808c3-117b-4159-81e5-1168ea24339f-c1/booking", + "Body" : "OutboundLegId=10141-2210010700--32090,-32677-2-10675-2210012020&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210011030--31901,-32677-3-10675-2210022020", + "PricingOptions" : [ { + "Agents" : [ 2185077 ], + "QuoteAgeInMinutes" : 4, + "Price" : 1968.24, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fctbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31901%7C594%7C10141%7C2022-10-01T10%3A30%7C10694%7C2022-10-01T12%3A00%7C90%7C-%7C-%7C-%3Bflight%7C-31901%7C505%7C10694%7C2022-10-01T15%3A00%7C13554%7C2022-10-01T16%3A00%7C120%7C-%7C-%7C-%3Bflight%7C-32677%7C1181%7C13554%7C2022-10-01T19%3A45%7C10413%7C2022-10-01T22%3A00%7C75%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-02T15%3A00%7C10675%7C2022-10-02T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-31901%2C-32677%26operators%3D-32430%3B-31901%3B-32677%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dpremium_economy%26facilitated%3Dfalse%26fps_session_id%3D262808c3-117b-4159-81e5-1168ea24339f%26ticket_price%3D1968.24%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Df096f5f0-ffcf-4951-88aa-4207dca7bd46%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLklKFWLmmMUpxcyxOVihoe3eTDYjJgVGC0YASFYYax4AAAA%7C-5031383674898332767%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + }, { + "Agents" : [ 3934928 ], + "QuoteAgeInMinutes" : 3, + "Price" : 2216.00, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fskyp%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-31901%7C594%7C10141%7C2022-10-01T10%3A30%7C10694%7C2022-10-01T12%3A00%7C90%7CBKEOSMA%7CB%7C-%3Bflight%7C-31901%7C687%7C10694%7C2022-10-01T15%3A40%7C14476%7C2022-10-01T17%3A45%7C125%7CBKDOSMA%7CB%7C-%3Bflight%7C-32677%7C1831%7C14476%7C2022-10-02T10%3A25%7C10413%7C2022-10-02T11%3A55%7C90%7CSK50BBJ7%7CY%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-02T15%3A00%7C10675%7C2022-10-02T20%3A20%7C380%7CSK50BBJ7%7CS%7C-%26carriers%3D-31901%2C-32677%26operators%3D-32430%3B-31901%3B-32677%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dpremium_economy%26facilitated%3Dfalse%26fps_session_id%3D262808c3-117b-4159-81e5-1168ea24339f%26ticket_price%3D2216.00%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Df096f5f0-ffcf-4951-88aa-4207dca7bd46%26q_ids%3DH4sIAAAAAAAAAOOS4WIpzq4sEGLmmMUpxcyxOVihoe3eTDYjJgVGC0YA4WIjFB4AAAA%7C5014442717468442937%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A02%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/262808c3-117b-4159-81e5-1168ea24339f-c1/booking", + "Body" : "OutboundLegId=10141-2210011030--31901,-32677-3-10675-2210022020&InboundLegId=", + "Method" : "PUT" + } + }, { + "OutboundLegId" : "10141-2210011035--32132,-32677-2-10675-2210012020", + "PricingOptions" : [ { + "Agents" : [ 3164430 ], + "QuoteAgeInMinutes" : 4, + "Price" : 1345.21, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Flmen%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32132%7C1724%7C10141%7C2022-10-01T10%3A35%7C9451%7C2022-10-01T11%3A35%7C60%7CSS52BBJ3%7CS%7C-%3Bflight%7C-32132%7C1233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7CSS52BBJ3%7CS%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7CSS52BBJ3%7CS%7C-%26carriers%3D-32132%2C-32677%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dpremium_economy%26facilitated%3Dfalse%26fps_session_id%3D262808c3-117b-4159-81e5-1168ea24339f%26ticket_price%3D1345.21%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Df096f5f0-ffcf-4951-88aa-4207dca7bd46%26q_ids%3DH4sIAAAAAAAAAOOS4WLJyU3NE2LmmMUpxcyxOVihoe3eTDYjJgVGC0YAaWkhcB4AAAA%7C2872349887744125886%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26pqid%3Dtrue" + }, { + "Agents" : [ 2185077 ], + "QuoteAgeInMinutes" : 4, + "Price" : 2240.58, + "DeeplinkUrl" : "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=yrl6FTuHuu6yvTwzAuow7eIBwkC1fgp7XQsNBvU9DdqJpRf4xqG2kPwMGRDKU5U2&url=https%3A%2F%2Fwww.skyscanner.net%2Ftransport_deeplink%2F4.0%2FBE%2Fen-GB%2FEUR%2Fctbe%2F1%2F10141.10675.2022-10-01%2Fair%2Ftrava%2Fflights%3Fitinerary%3Dflight%7C-32132%7C1724%7C10141%7C2022-10-01T10%3A35%7C9451%7C2022-10-01T11%3A35%7C60%7C-%7C-%7C-%3Bflight%7C-32132%7C1233%7C9451%7C2022-10-01T12%3A25%7C10413%7C2022-10-01T13%3A40%7C75%7C-%7C-%7C-%3Bflight%7C-32677%7C800%7C10413%7C2022-10-01T15%3A00%7C10675%7C2022-10-01T20%3A20%7C380%7C-%7C-%7C-%26carriers%3D-32132%2C-32677%26operators%3D-32131%3B-32132%3B-32677%26passengers%3D1%26channel%3Ddataapi%26cabin_class%3Dpremium_economy%26facilitated%3Dfalse%26fps_session_id%3D262808c3-117b-4159-81e5-1168ea24339f%26ticket_price%3D2240.58%26is_npt%3Dfalse%26is_multipart%3Dfalse%26client_id%3Dskyscanner_b2b%26request_id%3Df096f5f0-ffcf-4951-88aa-4207dca7bd46%26q_ids%3DH4sIAAAAAAAAAOOS4WJJLklKFWLmmMUpxcyxOVihoe3eTDYjJgVGC0YASFYYax4AAAA%7C1083777713194180138%7CV3%26q_sources%3DJACQUARD%26commercial_filters%3Dfalse%26q_datetime_utc%3D2022-05-06T13%3A01%3A00%26transfer_protection%3Dprotected%26pqid%3Dtrue" + } ], + "BookingDetailsLink" : { + "Uri" : "/apiservices/pricing/v1.0/262808c3-117b-4159-81e5-1168ea24339f-c1/booking", + "Body" : "OutboundLegId=10141-2210011035--32132,-32677-2-10675-2210012020&InboundLegId=", + "Method" : "PUT" + } + } ], + "Legs" : [ { + "Id" : "10141-2210010930--32090,-32677-2-10675-2210012020", + "SegmentIds" : [ 0, 1, 2 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T09:30:00", + "Arrival" : "2022-10-01T20:20:00", + "Duration" : 710, + "JourneyMode" : "Flight", + "Stops" : [ 11616, 10413 ], + "Carriers" : [ 1368, 838 ], + "OperatingCarriers" : [ 1368, 821, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "1007", + "CarrierId" : 1368 + }, { + "FlightNumber" : "1619", + "CarrierId" : 838 + }, { + "FlightNumber" : "800", + "CarrierId" : 838 + } ] + }, { + "Id" : "10141-2210010650--32544,-32677-3-10675-2210012020", + "SegmentIds" : [ 3, 4, 5, 2 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T06:50:00", + "Arrival" : "2022-10-01T20:20:00", + "Duration" : 870, + "JourneyMode" : "Flight", + "Stops" : [ 17517, 15538, 10413 ], + "Carriers" : [ 1523, 838 ], + "OperatingCarriers" : [ 1710, 1523, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "800", + "CarrierId" : 838 + }, { + "FlightNumber" : "8172", + "CarrierId" : 1523 + }, { + "FlightNumber" : "705", + "CarrierId" : 1523 + }, { + "FlightNumber" : "1383", + "CarrierId" : 838 + } ] + }, { + "Id" : "10141-2210010800--32677-2-10675-2210012020", + "SegmentIds" : [ 6, 7, 2 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T08:00:00", + "Arrival" : "2022-10-01T20:20:00", + "Duration" : 800, + "JourneyMode" : "Flight", + "Stops" : [ 9451, 10413 ], + "Carriers" : [ 838 ], + "OperatingCarriers" : [ 1889, 1324, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "800", + "CarrierId" : 838 + }, { + "FlightNumber" : "3149", + "CarrierId" : 838 + }, { + "FlightNumber" : "8233", + "CarrierId" : 838 + } ] + }, { + "Id" : "10141-2210010610--32677-2-10675-2210012020", + "SegmentIds" : [ 8, 9, 2 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T06:10:00", + "Arrival" : "2022-10-01T20:20:00", + "Duration" : 910, + "JourneyMode" : "Flight", + "Stops" : [ 9451, 10413 ], + "Carriers" : [ 838 ], + "OperatingCarriers" : [ 1889, 1324, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "800", + "CarrierId" : 838 + }, { + "FlightNumber" : "3147", + "CarrierId" : 838 + }, { + "FlightNumber" : "8229", + "CarrierId" : 838 + } ] + }, { + "Id" : "10141-2210010925--31799,-32677-2-10675-2210012020", + "SegmentIds" : [ 10, 11, 2 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T09:25:00", + "Arrival" : "2022-10-01T20:20:00", + "Duration" : 715, + "JourneyMode" : "Flight", + "Stops" : [ 12015, 10413 ], + "Carriers" : [ 1384, 838 ], + "OperatingCarriers" : [ 1384, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "800", + "CarrierId" : 838 + }, { + "FlightNumber" : "791", + "CarrierId" : 1384 + }, { + "FlightNumber" : "4606", + "CarrierId" : 1384 + } ] + }, { + "Id" : "10141-2210010700--32090,-32677-2-10675-2210012020", + "SegmentIds" : [ 12, 13, 2 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T07:00:00", + "Arrival" : "2022-10-01T20:20:00", + "Duration" : 860, + "JourneyMode" : "Flight", + "Stops" : [ 14385, 10413 ], + "Carriers" : [ 1368, 838 ], + "OperatingCarriers" : [ 1710, 1368, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "800", + "CarrierId" : 838 + }, { + "FlightNumber" : "5629", + "CarrierId" : 1368 + }, { + "FlightNumber" : "2228", + "CarrierId" : 1368 + } ] + }, { + "Id" : "10141-2210011030--31901,-32677-3-10675-2210022020", + "SegmentIds" : [ 14, 15, 16, 17 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T10:30:00", + "Arrival" : "2022-10-02T20:20:00", + "Duration" : 2090, + "JourneyMode" : "Flight", + "Stops" : [ 10694, 14476, 10413 ], + "Carriers" : [ 1707, 838 ], + "OperatingCarriers" : [ 1912, 1707, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "594", + "CarrierId" : 1707 + }, { + "FlightNumber" : "687", + "CarrierId" : 1707 + }, { + "FlightNumber" : "1831", + "CarrierId" : 838 + }, { + "FlightNumber" : "800", + "CarrierId" : 838 + } ] + }, { + "Id" : "10141-2210011035--32132,-32677-2-10675-2210012020", + "SegmentIds" : [ 18, 19, 2 ], + "OriginStation" : 10141, + "DestinationStation" : 10675, + "Departure" : "2022-10-01T10:35:00", + "Arrival" : "2022-10-01T20:20:00", + "Duration" : 645, + "JourneyMode" : "Flight", + "Stops" : [ 9451, 10413 ], + "Carriers" : [ 1324, 838 ], + "OperatingCarriers" : [ 1889, 1324, 838 ], + "Directionality" : "Outbound", + "FlightNumbers" : [ { + "FlightNumber" : "800", + "CarrierId" : 838 + }, { + "FlightNumber" : "1724", + "CarrierId" : 1324 + }, { + "FlightNumber" : "1233", + "CarrierId" : 1324 + } ] + } ], + "Segments" : [ { + "Id" : 0, + "OriginStation" : 10141, + "DestinationStation" : 11616, + "DepartureDateTime" : "2022-10-01T09:30:00", + "ArrivalDateTime" : "2022-10-01T10:30:00", + "Carrier" : 1368, + "OperatingCarrier" : 1368, + "Duration" : 60, + "FlightNumber" : "1007", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 1, + "OriginStation" : 11616, + "DestinationStation" : 10413, + "DepartureDateTime" : "2022-10-01T12:05:00", + "ArrivalDateTime" : "2022-10-01T13:35:00", + "Carrier" : 838, + "OperatingCarrier" : 821, + "Duration" : 90, + "FlightNumber" : "1619", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 2, + "OriginStation" : 10413, + "DestinationStation" : 10675, + "DepartureDateTime" : "2022-10-01T15:00:00", + "ArrivalDateTime" : "2022-10-01T20:20:00", + "Carrier" : 838, + "OperatingCarrier" : 838, + "Duration" : 380, + "FlightNumber" : "800", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 3, + "OriginStation" : 10141, + "DestinationStation" : 17517, + "DepartureDateTime" : "2022-10-01T06:50:00", + "ArrivalDateTime" : "2022-10-01T08:35:00", + "Carrier" : 1523, + "OperatingCarrier" : 1710, + "Duration" : 105, + "FlightNumber" : "8172", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 4, + "OriginStation" : 17517, + "DestinationStation" : 15538, + "DepartureDateTime" : "2022-10-01T09:45:00", + "ArrivalDateTime" : "2022-10-01T10:35:00", + "Carrier" : 1523, + "OperatingCarrier" : 1523, + "Duration" : 50, + "FlightNumber" : "705", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 5, + "OriginStation" : 15538, + "DestinationStation" : 10413, + "DepartureDateTime" : "2022-10-01T11:50:00", + "ArrivalDateTime" : "2022-10-01T13:40:00", + "Carrier" : 838, + "OperatingCarrier" : 838, + "Duration" : 110, + "FlightNumber" : "1383", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 6, + "OriginStation" : 10141, + "DestinationStation" : 9451, + "DepartureDateTime" : "2022-10-01T08:00:00", + "ArrivalDateTime" : "2022-10-01T08:55:00", + "Carrier" : 838, + "OperatingCarrier" : 1889, + "Duration" : 55, + "FlightNumber" : "3149", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 7, + "OriginStation" : 9451, + "DestinationStation" : 10413, + "DepartureDateTime" : "2022-10-01T12:25:00", + "ArrivalDateTime" : "2022-10-01T13:40:00", + "Carrier" : 838, + "OperatingCarrier" : 1324, + "Duration" : 75, + "FlightNumber" : "8233", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 8, + "OriginStation" : 10141, + "DestinationStation" : 9451, + "DepartureDateTime" : "2022-10-01T06:10:00", + "ArrivalDateTime" : "2022-10-01T07:05:00", + "Carrier" : 838, + "OperatingCarrier" : 1889, + "Duration" : 55, + "FlightNumber" : "3147", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 9, + "OriginStation" : 9451, + "DestinationStation" : 10413, + "DepartureDateTime" : "2022-10-01T08:00:00", + "ArrivalDateTime" : "2022-10-01T09:25:00", + "Carrier" : 838, + "OperatingCarrier" : 1324, + "Duration" : 85, + "FlightNumber" : "8229", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 10, + "OriginStation" : 10141, + "DestinationStation" : 12015, + "DepartureDateTime" : "2022-10-01T09:25:00", + "ArrivalDateTime" : "2022-10-01T10:40:00", + "Carrier" : 1384, + "OperatingCarrier" : 1384, + "Duration" : 75, + "FlightNumber" : "791", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 11, + "OriginStation" : 12015, + "DestinationStation" : 10413, + "DepartureDateTime" : "2022-10-01T12:00:00", + "ArrivalDateTime" : "2022-10-01T13:15:00", + "Carrier" : 1384, + "OperatingCarrier" : 838, + "Duration" : 75, + "FlightNumber" : "4606", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 12, + "OriginStation" : 10141, + "DestinationStation" : 14385, + "DepartureDateTime" : "2022-10-01T07:00:00", + "ArrivalDateTime" : "2022-10-01T08:15:00", + "Carrier" : 1368, + "OperatingCarrier" : 1710, + "Duration" : 75, + "FlightNumber" : "5629", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 13, + "OriginStation" : 14385, + "DestinationStation" : 10413, + "DepartureDateTime" : "2022-10-01T09:50:00", + "ArrivalDateTime" : "2022-10-01T11:25:00", + "Carrier" : 1368, + "OperatingCarrier" : 1368, + "Duration" : 95, + "FlightNumber" : "2228", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 14, + "OriginStation" : 10141, + "DestinationStation" : 10694, + "DepartureDateTime" : "2022-10-01T10:30:00", + "ArrivalDateTime" : "2022-10-01T12:00:00", + "Carrier" : 1707, + "OperatingCarrier" : 1912, + "Duration" : 90, + "FlightNumber" : "594", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 15, + "OriginStation" : 10694, + "DestinationStation" : 14476, + "DepartureDateTime" : "2022-10-01T15:40:00", + "ArrivalDateTime" : "2022-10-01T17:45:00", + "Carrier" : 1707, + "OperatingCarrier" : 1707, + "Duration" : 125, + "FlightNumber" : "687", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 16, + "OriginStation" : 14476, + "DestinationStation" : 10413, + "DepartureDateTime" : "2022-10-02T10:25:00", + "ArrivalDateTime" : "2022-10-02T11:55:00", + "Carrier" : 838, + "OperatingCarrier" : 838, + "Duration" : 90, + "FlightNumber" : "1831", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 17, + "OriginStation" : 10413, + "DestinationStation" : 10675, + "DepartureDateTime" : "2022-10-02T15:00:00", + "ArrivalDateTime" : "2022-10-02T20:20:00", + "Carrier" : 838, + "OperatingCarrier" : 838, + "Duration" : 380, + "FlightNumber" : "800", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 18, + "OriginStation" : 10141, + "DestinationStation" : 9451, + "DepartureDateTime" : "2022-10-01T10:35:00", + "ArrivalDateTime" : "2022-10-01T11:35:00", + "Carrier" : 1324, + "OperatingCarrier" : 1889, + "Duration" : 60, + "FlightNumber" : "1724", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + }, { + "Id" : 19, + "OriginStation" : 9451, + "DestinationStation" : 10413, + "DepartureDateTime" : "2022-10-01T12:25:00", + "ArrivalDateTime" : "2022-10-01T13:40:00", + "Carrier" : 1324, + "OperatingCarrier" : 1324, + "Duration" : 75, + "FlightNumber" : "1233", + "JourneyMode" : "Flight", + "Directionality" : "Outbound" + } ], + "Carriers" : [ { + "Id" : 1368, + "Code" : "LH", + "Name" : "Lufthansa", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/LH.png", + "DisplayCode" : "LH" + }, { + "Id" : 821, + "Code" : "A5", + "Name" : "HOP!", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/A5.png", + "DisplayCode" : "A5" + }, { + "Id" : 838, + "Code" : "AF", + "Name" : "Air France", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/AF.png", + "DisplayCode" : "AF" + }, { + "Id" : 1710, + "Code" : "SN", + "Name" : "Brussels Airlines", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/SN.png", + "DisplayCode" : "SN" + }, { + "Id" : 1523, + "Code" : "OS", + "Name" : "Austrian Airlines", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/OS.png", + "DisplayCode" : "OS" + }, { + "Id" : 1889, + "Code" : "WA", + "Name" : "KLM Cityhopper", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/WA.png", + "DisplayCode" : "WA" + }, { + "Id" : 1324, + "Code" : "KL", + "Name" : "KLM", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/KL.png", + "DisplayCode" : "KL" + }, { + "Id" : 1384, + "Code" : "LX", + "Name" : "SWISS", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/LX.png", + "DisplayCode" : "LX" + }, { + "Id" : 1912, + "Code" : "WX", + "Name" : "CityJet", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/WX.png", + "DisplayCode" : "WX" + }, { + "Id" : 1707, + "Code" : "SK", + "Name" : "SAS", + "ImageUrl" : "https://s1.apideeplink.com/images/airlines/SK.png", + "DisplayCode" : "SK" + } ], + "Agents" : [ { + "Id" : 3986809, + "Name" : "Travel2Be", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/t2bi.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "TravelAgent" + }, { + "Id" : 3164430, + "Name" : "lastminute.com", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/lmen.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "TravelAgent" + }, { + "Id" : 2627445, + "Name" : "GotoGate", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/gtbe.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "TravelAgent" + }, { + "Id" : 3934928, + "Name" : "Kiwi.com", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/skyp.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "TravelAgent" + }, { + "Id" : 4035189, + "Name" : "Travelgenio", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/tgbe.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "TravelAgent" + }, { + "Id" : 3065788, + "Name" : "KILROY", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/krnl.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "TravelAgent" + }, { + "Id" : 4068219, + "Name" : "Turkish Airlines", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/turk.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "Airline" + }, { + "Id" : 2185077, + "Name" : "Trip.com", + "ImageUrl" : "https://s1.apideeplink.com/images/websites/ctbe.png", + "Status" : "UpdatesComplete", + "OptimisedForMobile" : true, + "Type" : "TravelAgent" + } ], + "Places" : [ { + "Id" : 6403, + "ParentId" : 251, + "Code" : "PRG", + "Type" : "City", + "Name" : "Prague" + }, { + "Id" : 10694, + "ParentId" : 1783, + "Code" : "CPH", + "Type" : "Airport", + "Name" : "Copenhagen" + }, { + "Id" : 199, + "Code" : "AT", + "Type" : "Country", + "Name" : "Austria" + }, { + "Id" : 14476, + "ParentId" : 5072, + "Code" : "MXP", + "Type" : "Airport", + "Name" : "Milan Malpensa" + }, { + "Id" : 206, + "Code" : "DK", + "Type" : "Country", + "Name" : "Denmark" + }, { + "Id" : 5072, + "ParentId" : 226, + "Code" : "MIL", + "Type" : "City", + "Name" : "Milan" + }, { + "Id" : 19, + "Code" : "BJ", + "Type" : "Country", + "Name" : "Benin" + }, { + "Id" : 2835, + "ParentId" : 242, + "Code" : "GVA", + "Type" : "City", + "Name" : "Geneva" + }, { + "Id" : 4698, + "ParentId" : 247, + "Code" : "LON", + "Type" : "City", + "Name" : "London" + }, { + "Id" : 1178, + "ParentId" : 240, + "Code" : "BRU", + "Type" : "City", + "Name" : "Brussels" + }, { + "Id" : 10141, + "ParentId" : 1178, + "Code" : "BRU", + "Type" : "Airport", + "Name" : "Brussels International" + }, { + "Id" : 8222, + "ParentId" : 199, + "Code" : "VIE", + "Type" : "City", + "Name" : "Vienna" + }, { + "Id" : 11616, + "ParentId" : 2687, + "Code" : "FRA", + "Type" : "Airport", + "Name" : "Frankfurt am Main" + }, { + "Id" : 226, + "Code" : "IT", + "Type" : "Country", + "Name" : "Italy" + }, { + "Id" : 9451, + "ParentId" : 509, + "Code" : "AMS", + "Type" : "Airport", + "Name" : "Amsterdam" + }, { + "Id" : 235, + "Code" : "NL", + "Type" : "Country", + "Name" : "Netherlands" + }, { + "Id" : 17517, + "ParentId" : 8222, + "Code" : "VIE", + "Type" : "Airport", + "Name" : "Vienna" + }, { + "Id" : 10413, + "ParentId" : 6073, + "Code" : "CDG", + "Type" : "Airport", + "Name" : "Paris Charles de Gaulle" + }, { + "Id" : 12015, + "ParentId" : 2835, + "Code" : "GVA", + "Type" : "Airport", + "Name" : "Geneva" + }, { + "Id" : 240, + "Code" : "BE", + "Type" : "Country", + "Name" : "Belgium" + }, { + "Id" : 14385, + "ParentId" : 5363, + "Code" : "MUC", + "Type" : "Airport", + "Name" : "Munich" + }, { + "Id" : 13554, + "ParentId" : 4698, + "Code" : "LHR", + "Type" : "Airport", + "Name" : "London Heathrow" + }, { + "Id" : 242, + "Code" : "CH", + "Type" : "Country", + "Name" : "Switzerland" + }, { + "Id" : 15538, + "ParentId" : 6403, + "Code" : "PRG", + "Type" : "Airport", + "Name" : "Prague" + }, { + "Id" : 10675, + "ParentId" : 1781, + "Code" : "COO", + "Type" : "Airport", + "Name" : "Cotonou" + }, { + "Id" : 5363, + "ParentId" : 252, + "Code" : "MUC", + "Type" : "City", + "Name" : "Munich" + }, { + "Id" : 244, + "Code" : "MXN", + "Type" : "Country", + "Name" : "France" + }, { + "Id" : 1781, + "ParentId" : 19, + "Code" : "COO", + "Type" : "City", + "Name" : "Cotonou" + }, { + "Id" : 1783, + "ParentId" : 206, + "Code" : "CPH", + "Type" : "City", + "Name" : "Copenhagen" + }, { + "Id" : 247, + "Code" : "GB", + "Type" : "Country", + "Name" : "United Kingdom" + }, { + "Id" : 6073, + "ParentId" : 244, + "Code" : "PAR", + "Type" : "City", + "Name" : "Paris" + }, { + "Id" : 251, + "Code" : "CZ", + "Type" : "Country", + "Name" : "Czechia" + }, { + "Id" : 252, + "Code" : "DE", + "Type" : "Country", + "Name" : "Germany" + }, { + "Id" : 509, + "ParentId" : 235, + "Code" : "AMS", + "Type" : "City", + "Name" : "Amsterdam" + }, { + "Id" : 2687, + "ParentId" : 252, + "Code" : "FRA", + "Type" : "City", + "Name" : "Frankfurt" + } ], + "Currencies" : [ { + "Code" : "EUR", + "Symbol" : "€", + "ThousandsSeparator" : ".", + "DecimalSeparator" : ",", + "SymbolOnLeft" : true, + "SpaceBetweenAmountAndSymbol" : true, + "RoundingCoefficient" : 0, + "DecimalDigits" : 2 + } ] +} \ No newline at end of file diff --git a/e-rights-common/src/test/resources/skyscanner/test_6may2022/sel.txt b/e-rights-common/src/test/resources/skyscanner/test_6may2022/sel.txt new file mode 100644 index 0000000..82705ec --- /dev/null +++ b/e-rights-common/src/test/resources/skyscanner/test_6may2022/sel.txt @@ -0,0 +1 @@ +10141-2210010950--32090,-32677-2-10675-2210012020 \ No newline at end of file diff --git a/e-rights-front-office/pom.xml b/e-rights-front-office/pom.xml new file mode 100644 index 0000000..a2c521a --- /dev/null +++ b/e-rights-front-office/pom.xml @@ -0,0 +1,206 @@ + + + + 4.0.0 + + + eu.europa.eeas + e-rights + 5.0.1 + ../pom.xml + + + e-rights-front-office + ${e-rights.version} + war + + e-RIGHTS + EEAS' e-RIGHTS + + + + eu.europa.eeas + e-rights-common + ${e-rights.version} + + + + + + + org.apache.tomcat.embed + tomcat-embed-jasper + provided + + + eu.europa.ec.digit.iam.ecas.client + ecas-tomcat-8.0 + provided + + + org.apache.logging.log4j + log4j-1.2-api + provided + + + org.springframework.boot + spring-boot-devtools + true + provided + + + + com.google.crypto.tink + tink + 1.6.1 + runtime + + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + e-rights-front-office + + + + + + org.projectlombok + lombok + + + + + + it.ninjatech + swagger-codegen-maven-plugin + + + e-rights-front-office + + generate-api + generate-model + + + e-rights-front-office + ${project.build.directory}/generated-sources + eu.europa.eeas.erights.frontoffice.api.http.rest.api.internal + eu.europa.eeas.erights.frontoffice.api.http.rest.transferobject.internal + RestApi + TransferObject + + ${urlPrefix}${basedir}/src/main/resources/swagger/internal/e-rights-front-office.yml + + + + + javax.money.CurrencyUnit + org.javamoney.moneta.Money + + + eu.europa.eeas.ananke.core.audit.provider.api.transferobject.AbstractAuditableTransferObject + eu.europa.eeas.ananke.core.api.transferobject.AbstractTransferObject + eu.europa.eeas.ananke.tools.edms.connector.service.model.enums.Status + + + eu.europa.eeas.erights.common.tools.statemachine.MovementFileState + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementFileTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementContextTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VJobTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VPersonTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.CityTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.CountryTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VReportMovementFileTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VAllowancesTransferObject + + + eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeStatus + eu.europa.eeas.erights.common.tools.entitlements.EntitlementTypeCatCode + eu.europa.eeas.erights.common.tools.entitlements.FlatRateDuplicator + + + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.FunctionCodeTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.StatutoryLinkCodeTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.InstitutionCodeTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.PersonnelTypeTransferObject + eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VReportPostingAllowanceTransferObject + + + + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.0.0 + + + enforce-versions + + enforce + + + + + + org.apache.logging.log4j:*:2.0.0 + + + org.apache.logging.log4j:*:2.16.0 + + + + + + + + + org.zeroturnaround + jrebel-maven-plugin + 1.1.10 + + + generate-rebel-xml + process-resources + + generate + + + + + + + + + add-webapp-as-resource + + true + + + + + src/main/resources + true + + + src/main/webapp + true + + + + + + diff --git a/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/mvc/controller/ListControllerFrontOffice.java b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/mvc/controller/ListControllerFrontOffice.java new file mode 100644 index 0000000..415ec82 --- /dev/null +++ b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/mvc/controller/ListControllerFrontOffice.java @@ -0,0 +1,67 @@ +package eu.europa.eeas.erights.frontoffice.api.http.mvc.controller; + +import eu.europa.eeas.ananke.core.api.provider.http.mvc.AbstractMvcController; +import eu.europa.eeas.ananke.core.base.exception.AuthorizationRuntimeException; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.Breadcrumb; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.CascadingBreadcrumb; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.security.PostingAllowanceSecurityChecker; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +@RequestMapping("/list") +public class ListControllerFrontOffice extends AbstractMvcController { + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + private MovementFileSecurityChecker movementFileSecurityChecker; + + + @Autowired + @Qualifier(ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER) + private PostingAllowanceSecurityChecker postingAllowanceSecurityChecker; + + @GetMapping(path = {"/movement-files.do"}) + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.list.movement_files")) + public String listClaim() { + + if (movementFileSecurityChecker.isOwnerOfAtLeastOneMovementFile() || movementFileSecurityChecker.canList()) { + return "list/list.file"; + + } + + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008); + + } + + @GetMapping(path = "/allowances.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + public String listRequest(Model model) { + model.addAttribute("isBackOffice", false); + return "request/allowances"; + } + + @GetMapping(path = "/posting-allowances.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + public String listPostingAllowances(Model model) { + model.addAttribute("isBackOffice", false); + + if (postingAllowanceSecurityChecker.canConsult() + || postingAllowanceSecurityChecker.hasOrganisationIndependentListAuthority() + || postingAllowanceSecurityChecker.hasOrganisationsWithListAuthority()) { + + model.addAttribute("isShowYearDropDown", true); + }else{ + + model.addAttribute("isShowYearDropDown", false); + } + return "reports/posting.allowances"; + } +} \ No newline at end of file diff --git a/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/mvc/controller/MovementFileControllerFrontOffice.java b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/mvc/controller/MovementFileControllerFrontOffice.java new file mode 100644 index 0000000..5b79900 --- /dev/null +++ b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/mvc/controller/MovementFileControllerFrontOffice.java @@ -0,0 +1,36 @@ +package eu.europa.eeas.erights.frontoffice.api.http.mvc.controller; + +import eu.europa.eeas.ananke.core.api.provider.http.mvc.AbstractMvcController; +import eu.europa.eeas.ananke.core.base.exception.AuthorizationRuntimeException; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.Breadcrumb; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.CascadingBreadcrumb; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@Controller +@RequestMapping("/movement-files") +public class MovementFileControllerFrontOffice extends AbstractMvcController { + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + private MovementFileSecurityChecker movementFileSecurityChecker; + + @GetMapping(path = "/view.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.movement_files.view")) + public String editMovementFileCommon(@RequestParam(required = true) String id, Model model) { + if (movementFileSecurityChecker.isOwner(Long.valueOf(id)) || movementFileSecurityChecker.canView(Long.valueOf(id))) { + model.addAttribute("fileId", id); + return "movement-file/edit/file"; + } + + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008); + } +} diff --git a/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/mvc/controller/PostingAllowanceControllerFrontOffice.java b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/mvc/controller/PostingAllowanceControllerFrontOffice.java new file mode 100644 index 0000000..a9f2c3d --- /dev/null +++ b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/mvc/controller/PostingAllowanceControllerFrontOffice.java @@ -0,0 +1,70 @@ +package eu.europa.eeas.erights.frontoffice.api.http.mvc.controller; + +import eu.europa.eeas.ananke.core.api.provider.http.mvc.AbstractMvcController; +import eu.europa.eeas.ananke.core.base.exception.AuthorizationRuntimeException; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.Breadcrumb; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.CascadingBreadcrumb; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.PostingAllowanceSecurityChecker; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * Created by mchabanga on 06/01/2023; e-rights. + * + * @author Marshall Chabanga. + */ +@Controller +@RequestMapping("/posting-allowances") +public class PostingAllowanceControllerFrontOffice extends AbstractMvcController { + + @Autowired + @Qualifier(ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER) + private PostingAllowanceSecurityChecker postingAllowanceSecurityChecker; + + + @GetMapping(path = "/view-tar.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.posting_allowances.view")) + public String editTarRequestBackOffice(@RequestParam(required = true) String postingAllowanceId, Model model) { + model.addAttribute("postingAllowanceId", postingAllowanceId); + model.addAttribute("isBackOffice", false); + return "e-rights-common:posting-allowance/view.tar"; + } + @GetMapping(path = "/regularization-view-tar.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.posting_allowances.view")) + public String editTarRegularizationRequestBackOffice(@RequestParam(required = true) String postingAllowanceId, Model model) { + model.addAttribute("postingAllowanceId", postingAllowanceId); + model.addAttribute("isBackOffice", false); + return "e-rights-common:posting-allowance/regularization-view.tar"; + } + + @GetMapping(path = "/accommodation-declaration-view.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.posting_allowances.view")) + public String editAccommodationDeclarationBackOffice( + @RequestParam(required = true) String postingAllowanceId, Model model) { + if(Boolean.TRUE.equals(postingAllowanceSecurityChecker.canViewAccommodationDeclaration(Long.valueOf(postingAllowanceId)))){ + model.addAttribute("postingAllowanceId", postingAllowanceId); + model.addAttribute("isBackOffice", false); + return "e-rights-common:posting-allowance/accommodation-declaration-view"; + } + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008); + } + + @GetMapping(path = "/accommodation-payment-view.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.posting_allowances.view")) + public String editAccommodationPaymentBackOffice( + @RequestParam(required = true) String postingAllowanceId, Model model) { + if(Boolean.TRUE.equals(postingAllowanceSecurityChecker.canViewAccommodationDeclaration(Long.valueOf(postingAllowanceId)))){ + model.addAttribute("postingAllowanceId", postingAllowanceId); + model.addAttribute("isBackOffice", false); + return "e-rights-common:posting-allowance/accommodation-payment-view"; + } + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008); + } +} diff --git a/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/mvc/controller/RequestsControllerFrontOffice.java b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/mvc/controller/RequestsControllerFrontOffice.java new file mode 100644 index 0000000..a94cc18 --- /dev/null +++ b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/mvc/controller/RequestsControllerFrontOffice.java @@ -0,0 +1,152 @@ +package eu.europa.eeas.erights.frontoffice.api.http.mvc.controller; + +import eu.europa.eeas.ananke.core.api.provider.http.mvc.AbstractMvcController; +import eu.europa.eeas.ananke.core.base.exception.AuthorizationRuntimeException; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.Breadcrumb; +import eu.europa.eeas.ananke.tools.web.breadcrumbs.annotation.CascadingBreadcrumb; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.entitlement.request.RequestJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.entitlement.request.RequestModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * Created by tapiafo on 15/03/2021; e-rights. + * + *

    + * TODO : comment class ! + *

    + * + * @author Fernando Tapia. + * + */ +@Controller +@RequestMapping("/requests") +public class RequestsControllerFrontOffice extends AbstractMvcController { + + public static final String REQUEST_ID = "requestId"; + + public static final String IS_BACK_OFFICE = "isBackOffice"; + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + private MovementFileSecurityChecker movementFileSecurityChecker; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @GetMapping(path = "/view.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + public String editTudRequestFrontOfficeOldUrl(@RequestParam(required = true) String requestId, Model model) { + //for mails already sent with the old url , we need to do a this + return editTudRequestFrontOffice(requestId, model); + } + + @GetMapping(path = "/view-tud.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + public String editTudRequestFrontOffice(@RequestParam(required = true) String requestId, Model model) { + + if (movementFileSecurityChecker.canConsultEntitlements(getMovementFileId(Long.valueOf(requestId))) || isOwnerOfTheMovementFile(requestId)) { + model.addAttribute(REQUEST_ID, requestId); + return "request/edit.tud.request"; + } + + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008); + } + + @GetMapping(path = "/view-adv-rem.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + public String editAdvanceRequestFrontOffice(@RequestParam(required = true) String requestId, Model model) { + + if (movementFileSecurityChecker.canConsultEntitlements(getMovementFileId(Long.valueOf(requestId))) || isOwnerOfTheMovementFile(requestId)) { + model.addAttribute(REQUEST_ID, requestId); + return "request/edit.adv.rem.request"; + } + + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008); + } + + @GetMapping(path = "/view-total-rem.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + public String editTotalRemRequestFrontOffice(@RequestParam(required = true) String requestId, Model model) { + + model.addAttribute(REQUEST_ID, requestId); + model.addAttribute(IS_BACK_OFFICE, false); + return "e-rights-common:request/edit.total.rem.request"; + + } + + @GetMapping(path = "/view-clr-rem.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + public String editClrRemRequestFrontOffice(@RequestParam(required = true) String requestId, Model model) { + + model.addAttribute(REQUEST_ID, requestId); + model.addAttribute(IS_BACK_OFFICE, false); + return "e-rights-common:request/edit.clr.rem.request"; + + } + + @GetMapping(path = "/view-installation.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + public String editInstallationRequestFrontOffice(@RequestParam(required = true) String requestId, Model model) { + + model.addAttribute(REQUEST_ID, requestId); + model.addAttribute(IS_BACK_OFFICE, false); + return "e-rights-common:request/edit.install.request"; + + } + + private Long getMovementFileId(Long requestId) { + RequestJpaServiceProvider service = (RequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RequestModel.class); + RequestModel request = service.read(requestId); + + return request.getDeclaration().getMovementFileId(); + } + + private boolean isOwnerOfTheMovementFile(String requestId) { + RequestJpaServiceProvider service = (RequestJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(RequestModel.class); + RequestModel request = service.read(Long.valueOf(requestId)); + + if (request != null) { + return movementFileSecurityChecker.isOwner(request.getDeclaration().getMovementFileId()); + } else { + return false; + } + } + + @GetMapping(path = "/view-topup.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + public String viewTopupBackOffice( + // We'll use one of the two: + // If 'requestId' is used, it means that the Topup request already exists + // If 'parentRequestId' are 'parentRequestType' are used, it means that the Topup request is being created + @RequestParam(required = false) String requestId, + @RequestParam(required = false) String parentRequestId, + @RequestParam(required = false) String parentRequestType, + Model model) { + + model.addAttribute(REQUEST_ID, requestId); + model.addAttribute("parentRequestId", parentRequestId); + model.addAttribute("parentRequestType", parentRequestType); + model.addAttribute(IS_BACK_OFFICE, false); + return "e-rights-common:request/edit.topup.request"; + } + + @GetMapping(path = "/view-resettlement.do") + @CascadingBreadcrumb(label = @Breadcrumb.Label(key = "e_rights.breadcrumbs.requests.view")) + public String viewResettlementBackOffice(@RequestParam(required = true) String requestId, Model model) { + + model.addAttribute(REQUEST_ID, requestId); + model.addAttribute(IS_BACK_OFFICE, false); + return "e-rights-common:request/edit.resettlement.request"; + + } +} diff --git a/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/rest/controller/internal/AllowancesRestController.java b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/rest/controller/internal/AllowancesRestController.java new file mode 100644 index 0000000..c42fb05 --- /dev/null +++ b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/rest/controller/internal/AllowancesRestController.java @@ -0,0 +1,29 @@ +package eu.europa.eeas.erights.frontoffice.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VAllowancesTransferObject; +import eu.europa.eeas.erights.common.service.data.provider.VAllowanceJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.VAllowanceModel; +import eu.europa.eeas.erights.frontoffice.api.http.rest.api.internal.AllowancesRestApi; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class AllowancesRestController extends AbstractRestController implements AllowancesRestApi { + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + @Override + public ResponseEntity> getAllowancesFrontOffice() { + VAllowanceJpaServiceProvider service = (VAllowanceJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor( + VAllowanceModel.class); + List transferObject = getBeanMapper().mapAsList(service.getAllowancesFrontOffice(), VAllowancesTransferObject.class); + return ResponseEntity.ok(transferObject); + } + +} diff --git a/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/rest/controller/internal/MovementFilesFrontOfficeRestController.java b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/rest/controller/internal/MovementFilesFrontOfficeRestController.java new file mode 100644 index 0000000..8c5e324 --- /dev/null +++ b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/rest/controller/internal/MovementFilesFrontOfficeRestController.java @@ -0,0 +1,27 @@ +package eu.europa.eeas.erights.frontoffice.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.MovementFileTransferObject; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.frontoffice.api.http.rest.api.internal.MovementFilesRestApi; +import eu.europa.eeas.erights.frontoffice.service.provider.MovementFileFrontOfficeServiceProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class MovementFilesFrontOfficeRestController extends AbstractRestController implements MovementFilesRestApi { + + @Autowired + MovementFileFrontOfficeServiceProvider serviceProvider; + + @Override + public ResponseEntity getMovementFile(Long id) { + ResponseEntity result; + + MovementFileModel movementFileModel = serviceProvider.get(id); + result = ResponseEntity.ok(getBeanMapper().map(movementFileModel, MovementFileTransferObject.class)); + + return result; + } +} diff --git a/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/rest/controller/internal/ReportFrontOfficeRestController.java b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/rest/controller/internal/ReportFrontOfficeRestController.java new file mode 100644 index 0000000..161bb3e --- /dev/null +++ b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/api/http/rest/controller/internal/ReportFrontOfficeRestController.java @@ -0,0 +1,48 @@ +package eu.europa.eeas.erights.frontoffice.api.http.rest.controller.internal; + +import eu.europa.eeas.ananke.core.api.provider.http.rest.AbstractRestController; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VReportMovementFileTransferObject; +import eu.europa.eeas.erights.common.api.http.rest.transferobject.internal.VReportPostingAllowanceTransferObject; +import eu.europa.eeas.erights.common.service.model.VReportMovementFileModel; +import eu.europa.eeas.erights.common.service.model.allowances.VReportPostingAllowanceModel; +import eu.europa.eeas.erights.frontoffice.api.http.rest.api.internal.ReportRestApi; +import eu.europa.eeas.erights.frontoffice.api.http.rest.api.internal.VReportPostingAllowancesRestApi; +import eu.europa.eeas.erights.frontoffice.service.data.provider.VReportMovementFileJpaServiceProvider; +import eu.europa.eeas.erights.frontoffice.service.data.provider.allowance.VReportPostingAllowanceServiceProvider; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class ReportFrontOfficeRestController extends AbstractRestController implements ReportRestApi, VReportPostingAllowancesRestApi { + + + private final DataServiceProviderRegistry dataServiceProviderRegistry; + private final VReportPostingAllowanceServiceProvider vReportPostingAllowanceServiceProvider; + + public ReportFrontOfficeRestController(DataServiceProviderRegistry dataServiceProviderRegistry, + VReportPostingAllowanceServiceProvider vReportPostingAllowanceServiceProvider) { + this.dataServiceProviderRegistry = dataServiceProviderRegistry; + this.vReportPostingAllowanceServiceProvider = vReportPostingAllowanceServiceProvider; + } + + @Override + public ResponseEntity> getReportMovementFiles() { + ResponseEntity> result; + + VReportMovementFileJpaServiceProvider reportMovementFileProvider = (VReportMovementFileJpaServiceProvider) this.dataServiceProviderRegistry + .getDataServiceProviderFor(VReportMovementFileModel.class); + List models = reportMovementFileProvider.getMovementFiles(); + List transferObjects = getBeanMapper().mapAsList(models, VReportMovementFileTransferObject.class); + result = ResponseEntity.ok(transferObjects); + return result; + } + + @Override + public ResponseEntity> getVReportPostingAllowances(Long personId, Integer year) { + List reportPostingAllowanceModels = vReportPostingAllowanceServiceProvider.getVReportPostingAllowances(personId, year); + return ResponseEntity.ok(getBeanMapper().mapAsList(reportPostingAllowanceModels, VReportPostingAllowanceTransferObject.class)); + } +} diff --git a/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/boot/ERightsFrontOffice.java b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/boot/ERightsFrontOffice.java new file mode 100644 index 0000000..b04e90a --- /dev/null +++ b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/boot/ERightsFrontOffice.java @@ -0,0 +1,11 @@ +package eu.europa.eeas.erights.frontoffice.boot; + +import eu.europa.eeas.ananke.core.base.boot.AnankeStarter; + +public class ERightsFrontOffice extends AnankeStarter { + + public static void main(String[] args) throws Exception { + start(new ERightsFrontOffice(), args); + } + +} diff --git a/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/boot/configuration/ERightsFrontOfficeBeanNames.java b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/boot/configuration/ERightsFrontOfficeBeanNames.java new file mode 100644 index 0000000..14eb623 --- /dev/null +++ b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/boot/configuration/ERightsFrontOfficeBeanNames.java @@ -0,0 +1,13 @@ +package eu.europa.eeas.erights.frontoffice.boot.configuration; + +public final class ERightsFrontOfficeBeanNames { + + /** + * PREFIX. + */ + + + private ERightsFrontOfficeBeanNames() { + } + +} diff --git a/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/boot/configuration/ERightsFrontOfficeBootAutoConfiguration.java b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/boot/configuration/ERightsFrontOfficeBootAutoConfiguration.java new file mode 100644 index 0000000..3b712bf --- /dev/null +++ b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/boot/configuration/ERightsFrontOfficeBootAutoConfiguration.java @@ -0,0 +1,27 @@ +package eu.europa.eeas.erights.frontoffice.boot.configuration; + +import eu.europa.eeas.erights.common.boot.configuration.ERightsBootAutoConfiguration; +import eu.europa.eeas.erights.common.boot.configuration.skyscanner.SkyscannerWSConfiguration; +import eu.europa.eeas.erights.frontoffice.api.http.mvc.controller.MovementFileControllerFrontOffice; +import eu.europa.eeas.erights.frontoffice.api.http.rest.controller.internal.ReportFrontOfficeRestController; +import eu.europa.eeas.erights.frontoffice.service.data.provider.VReportMovementFileJpaServiceProvider; +import eu.europa.eeas.erights.frontoffice.service.provider.MenuServiceProvider; +import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ImportAutoConfiguration({ERightsBootAutoConfiguration.class, + SkyscannerWSConfiguration.class}) + +@ComponentScan(basePackageClasses = { + MovementFileControllerFrontOffice.class, + MenuServiceProvider.class, + ReportFrontOfficeRestController.class, + VReportMovementFileJpaServiceProvider.class + //eu.europa.eeas.erights.common.api.http.rest.api.internal.client.DefaultApi.class, + //eu.europa.eeas.erights.common.api.http.rest.api.internal.ApiClient.class +}) +public class ERightsFrontOfficeBootAutoConfiguration { + +} diff --git a/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/exceptionhandling/ERightsFrontOfficeExceptionCode.java b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/exceptionhandling/ERightsFrontOfficeExceptionCode.java new file mode 100644 index 0000000..6536274 --- /dev/null +++ b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/exceptionhandling/ERightsFrontOfficeExceptionCode.java @@ -0,0 +1,25 @@ +package eu.europa.eeas.erights.frontoffice.exceptionhandling; + +import eu.europa.eeas.ananke.core.base.exception.ExceptionCode; + +public enum ERightsFrontOfficeExceptionCode implements ExceptionCode { + + ERFO001("TODO"); + + private final String description; + + ERightsFrontOfficeExceptionCode(String description) { + this.description = description; + } + + @Override + public String getCode() { + return name(); + } + + @Override + public String getDescription() { + return this.description; + } + +} diff --git a/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/service/data/provider/VReportMovementFileJpaServiceProvider.java b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/service/data/provider/VReportMovementFileJpaServiceProvider.java new file mode 100644 index 0000000..dfb2dfe --- /dev/null +++ b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/service/data/provider/VReportMovementFileJpaServiceProvider.java @@ -0,0 +1,66 @@ +package eu.europa.eeas.erights.frontoffice.service.data.provider; + +import eu.europa.eeas.ananke.core.base.user.User; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.VReportMovementFileJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.VReportMovementFileJpaRepository; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.model.VReportMovementFileModel; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +@Service +@Transactional +public class VReportMovementFileJpaServiceProvider extends AbstractDataServiceProvider implements + EntityReader { + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + private MovementFileSecurityChecker movementFileSecurityChecker; + + @Override + public Class getModelType() { + return VReportMovementFileModel.class; + } + + @Override + public Class getEntityType() { + return VReportMovementFileJpaEntity.class; + } + + public List getMovementFiles() { + VReportMovementFileJpaRepository repo = getEntityRepositoryRegistry().getReaderRepositoryFor(VReportMovementFileJpaEntity.class, VReportMovementFileJpaRepository.class); + + // filter the list by permissions + List files; + if (this.movementFileSecurityChecker.hasOrganisationIndependentListAuthority()) { + files = repo.findAll(); + } else { + Set orgIds = this.movementFileSecurityChecker.getOrganisationsWithListAuthority(); + + List movementFileInDelegation = new ArrayList<>(); + if (orgIds != null && !orgIds.isEmpty()) { + movementFileInDelegation = repo.findByDelegationOrgIdFromIn(orgIds); + } + User currentUser = this.movementFileSecurityChecker.getCurrentUser(); + files = repo.findAllByUserIdOrEmailAndStatesNotIn(currentUser.getId(), currentUser.getEmail(), Arrays.asList(MovementFileState.DELETED.name(), MovementFileState.DRAFT.name())); + + files.addAll(movementFileInDelegation); + files = files.stream().distinct().collect(Collectors.toList()); + } + + return getBeanMapper().mapAsList(files, VReportMovementFileModel.class); + + } +} diff --git a/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/service/data/provider/allowance/VReportPostingAllowanceServiceProvider.java b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/service/data/provider/allowance/VReportPostingAllowanceServiceProvider.java new file mode 100644 index 0000000..64a636c --- /dev/null +++ b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/service/data/provider/allowance/VReportPostingAllowanceServiceProvider.java @@ -0,0 +1,90 @@ +package eu.europa.eeas.erights.frontoffice.service.data.provider.allowance; + +import eu.europa.eeas.ananke.core.base.user.User; +import eu.europa.eeas.ananke.core.service.provider.data.AbstractDataServiceProvider; +import eu.europa.eeas.ananke.core.service.provider.data.entity.EntityReader; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.data.jpa.entity.allowances.VReportPostingAllowanceJpaEntity; +import eu.europa.eeas.erights.common.data.jpa.repository.allowances.VReportPostingAllowancesJpaRepository; +import eu.europa.eeas.erights.common.security.PostingAllowanceSecurityChecker; +import eu.europa.eeas.erights.common.service.model.allowances.VReportPostingAllowanceModel; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Collections; +import java.util.List; +import java.util.Set; + +@Service +@Transactional +public class VReportPostingAllowanceServiceProvider extends AbstractDataServiceProvider + implements EntityReader { + + @Autowired + @Qualifier(ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER) + private PostingAllowanceSecurityChecker postingAllowanceSecurityChecker; + @Autowired + private VReportPostingAllowancesJpaRepository repository; + + @Override + public Class getModelType() { + return VReportPostingAllowanceModel.class; + } + + @Override + public Class getEntityType() { + return VReportPostingAllowanceJpaEntity.class; + } + + public List getVReportPostingAllowances(Long personId, Integer year) { + + User currentUser = this.postingAllowanceSecurityChecker.getCurrentUser(); + List postingAllowanceJpaEntities = repository.findAllByUserIdOrEmail(currentUser.getId(), currentUser.getEmail()); + List vReportPostingAllowanceModels = getBeanMapper().mapAsList(postingAllowanceJpaEntities, VReportPostingAllowanceModel.class); + if (this.postingAllowanceSecurityChecker.hasOrganisationIndependentListAuthority()) { + if (personId != null && year != null) { + return concatenatePostingAllowanceList(vReportPostingAllowanceModels,getBeanMapper().mapAsList(repository.getByPerIdAndExerciseYear(personId, year), VReportPostingAllowanceModel.class)); + } else if (personId == null && year != null) { + return concatenatePostingAllowanceList(vReportPostingAllowanceModels,getBeanMapper().mapAsList(repository.getByExerciseYear(year), VReportPostingAllowanceModel.class)); + } else if (personId != null) { + return concatenatePostingAllowanceList(vReportPostingAllowanceModels,getBeanMapper().mapAsList(repository.getByPerId(personId), VReportPostingAllowanceModel.class)); + } else { + return concatenatePostingAllowanceList(vReportPostingAllowanceModels,getBeanMapper().mapAsList(repository.findAll(), VReportPostingAllowanceModel.class)); + } + }else{ + + Set orgIds = this.postingAllowanceSecurityChecker.getOrganisationsWithListAuthority(); + if (orgIds != null && !orgIds.isEmpty()) { + if (personId != null && year != null) { + return concatenatePostingAllowanceList(vReportPostingAllowanceModels,getBeanMapper().mapAsList(repository.getByPerIdAndExerciseYearAndDelegationOrgIdIn(personId, year,orgIds), VReportPostingAllowanceModel.class)); + } else if (personId == null && year != null) { + return concatenatePostingAllowanceList(vReportPostingAllowanceModels,getBeanMapper().mapAsList(repository.getByExerciseYearAndDelegationOrgIdIn(year,orgIds), VReportPostingAllowanceModel.class)); + } else if (personId != null) { + return concatenatePostingAllowanceList(vReportPostingAllowanceModels,getBeanMapper().mapAsList(repository.getByPerIdAndDelegationOrgIdIn(personId,orgIds), VReportPostingAllowanceModel.class)); + } else { + return concatenatePostingAllowanceList(vReportPostingAllowanceModels,getBeanMapper().mapAsList(repository.findByDelegationOrgIdIn(orgIds), VReportPostingAllowanceModel.class)); + } + } + return vReportPostingAllowanceModels; + } + } + + private List concatenatePostingAllowanceList(List usersList, List list){ + + if(CollectionUtils.isNotEmpty(usersList) && CollectionUtils.isNotEmpty(list)){ + + list.addAll(usersList); + return list; + }else if(CollectionUtils.isNotEmpty(usersList) && CollectionUtils.isEmpty(list)){ + + return usersList; + }else if(CollectionUtils.isEmpty(usersList) && CollectionUtils.isNotEmpty(list)){ + + return list; + } + return Collections.emptyList(); + } +} diff --git a/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/service/provider/MenuServiceProvider.java b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/service/provider/MenuServiceProvider.java new file mode 100644 index 0000000..2ae13b5 --- /dev/null +++ b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/service/provider/MenuServiceProvider.java @@ -0,0 +1,90 @@ +package eu.europa.eeas.erights.frontoffice.service.provider; + +import eu.europa.eeas.ananke.tools.web.service.MenuService; +import eu.europa.eeas.ananke.tools.web.service.model.MenuItemModel; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.security.PostingAllowanceSecurityChecker; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +import java.util.LinkedList; +import java.util.List; +import java.util.Set; + +/** + * Created by iliessu on 20/11/2019; e-rights. + * + *

    + * TODO : comment class ! + *

    + * + * @author Silviu Ilie. + * + */ +@Service +public class MenuServiceProvider implements MenuService { + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + private MovementFileSecurityChecker securityChecker; + + @Autowired + @Qualifier(ERightsBeanNames.POSTING_ALLOWANCE_SECURITY_CHECKER) + private PostingAllowanceSecurityChecker postingAllowanceSecurityChecker; + + @Override + public List getMenuItems() { + List result = new LinkedList<>(); + + MenuItemModel item1 = new MenuItemModel(); + item1.setId(1l); + item1.setLabel("Dashboard"); + item1.setLink("/welcome.do"); + item1.setIcon("home"); + item1.setOrder(1L); + + MenuItemModel item2 = new MenuItemModel(); + item2.setId(2l); + item2.setLabel("Movement Files"); + item2.setLink("/list/movement-files.do"); + item2.setIcon("swap_horizontal_circle"); + item2.setOrder(2L); + + MenuItemModel item3 = new MenuItemModel(); + item3.setId(3L); + item3.setLabel("Rotation Entitlements"); + item3.setLink("/list/allowances.do"); + item3.setIcon("article"); + item3.setOrder(3L); + + MenuItemModel item4 = new MenuItemModel(); + item4.setId(4L); + item4.setLabel("Posting Entitlements"); + item4.setLink("/list/posting-allowances.do"); + item4.setIcon("event"); + item4.setOrder(4L); + + //dashboard + if (securityChecker.isOwnerOfAtLeastOneMovementFile() || securityChecker.canList()) { + result.add(item1); + result.add(item2); + } + + if (securityChecker.isOwnerOfAtLeastOneMovementFile() || securityChecker.canConsultEntitlements()) { + result.add(item3); + } + + if (postingAllowanceSecurityChecker.isOwnerOfAtLeastOnePostingAllowance() + || postingAllowanceSecurityChecker.canConsult() + || postingAllowanceSecurityChecker.hasOrganisationIndependentListAuthority() + || postingAllowanceSecurityChecker.hasOrganisationsWithListAuthority()) { + result.add(item4); + } + + return result; + } + +} diff --git a/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/service/provider/MovementFileFrontOfficeServiceProvider.java b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/service/provider/MovementFileFrontOfficeServiceProvider.java new file mode 100644 index 0000000..43a90dc --- /dev/null +++ b/e-rights-front-office/src/main/java/eu/europa/eeas/erights/frontoffice/service/provider/MovementFileFrontOfficeServiceProvider.java @@ -0,0 +1,46 @@ +package eu.europa.eeas.erights.frontoffice.service.provider; + +import eu.europa.eeas.ananke.core.base.exception.AuthorizationRuntimeException; +import eu.europa.eeas.ananke.core.service.provider.data.DataServiceProviderRegistry; +import eu.europa.eeas.erights.common.boot.configuration.ERightsBeanNames; +import eu.europa.eeas.erights.common.exceptionhandling.ERightsExceptionCode; +import eu.europa.eeas.erights.common.security.MovementFileSecurityChecker; +import eu.europa.eeas.erights.common.service.data.provider.MovementFileJpaServiceProvider; +import eu.europa.eeas.erights.common.service.model.MovementFileModel; +import eu.europa.eeas.erights.common.tools.statemachine.MovementFileState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +@Service +public class MovementFileFrontOfficeServiceProvider { + + @Autowired + @Qualifier(ERightsBeanNames.MOVEMENT_FILE_SECURITY_CHECKER) + private MovementFileSecurityChecker movementFileSecurityChecker; + + @Autowired + private DataServiceProviderRegistry dataServiceProviderRegistry; + + public MovementFileModel get(Long id) { + MovementFileJpaServiceProvider movementFileJpaService = (MovementFileJpaServiceProvider) this.dataServiceProviderRegistry.getDataServiceProviderFor(MovementFileModel.class); + + MovementFileModel model = movementFileJpaService.getMovementFile(id); + + // check current users's VIEW permission or if the it's the owner of the file + if (this.isOwner(model) || this.movementFileSecurityChecker.canView(id)) { + movementFileJpaService.setAssignmentPlace(model); + return model; + } + + throw new AuthorizationRuntimeException(ERightsExceptionCode.ER008); + } + + /** + * checks if is the owner of the file and files are not in DRAFT or DELETE states + */ + private Boolean isOwner(MovementFileModel movementFileModel) { + return this.movementFileSecurityChecker.isOwner(movementFileModel.getId()) && movementFileModel.getState() != MovementFileState.DRAFT + && movementFileModel.getState() != MovementFileState.DELETED; + } +} diff --git a/e-rights-front-office/src/main/resources/META-INF/spring-devtools.properties b/e-rights-front-office/src/main/resources/META-INF/spring-devtools.properties new file mode 100644 index 0000000..8bdfd05 --- /dev/null +++ b/e-rights-front-office/src/main/resources/META-INF/spring-devtools.properties @@ -0,0 +1 @@ +restart.include.ananke=/ananke-[\\w\\d-\.]+\.jar \ No newline at end of file diff --git a/e-rights-front-office/src/main/resources/application-acceptance.yml b/e-rights-front-office/src/main/resources/application-acceptance.yml new file mode 100644 index 0000000..122d206 --- /dev/null +++ b/e-rights-front-office/src/main/resources/application-acceptance.yml @@ -0,0 +1,158 @@ +############ +# e-RIGHTS # +############ + +application: + protocol: HTTPS + host-name: webgate.acceptance.ec.testa.eu + test-mailbox: Martial-Franck.TCHEPGANG@ext.eeas.europa.eu + proxy-host: ps-lux-usr.cec.eu.int + proxy-port: 8012 + proxy-user: a00jqdke + proxy-pass: JkUjhA789ghL + gosselin-host: https://eeas.gosselingroup.eu + gosselin-path: /EEAS/rateTEST.php + gosselin-api-key: 60d8def0a9f5bebd66c78825ec14dd5e + gosselin-api-id: RequestorEEAS + gosselin-active: true + environment: ACCEPTANCE + +########## +# Spring # +########## + +management: + endpoints: + web: + exposure: + include: '*' + +############### +# Ananke Core # +############### + +base: + money: + currencies: + - code: STN + default-fraction-digits: 2 + numeric-code: 930 + - code: UYW + default-fraction-digits: 4 + numeric-code: 927 + +connector: + http: + secure: + socket-timeout: + value: 10 + time-unit: SECONDS + connection-timeout: + value: 10 + time-unit: SECONDS + connection-pool: + max-size: 20 + max-size-per-route: 20 + time-to-live: + value: 5 + time-unit: SECONDS +data: + jpa: + show-sql: false + format-sql: false + connection-pool: + min-size: 10 + max-size: 20 + +security: + api: + http: + authentication: + managed: + assurance-level: LOW + accept-strengths: PASSWORD + + server: + protocol: ${application.protocol} + host-name: ${application.host-name} + ssl-port: 443 + security-headers: + content-security-policy: + policy-directives: default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://uap.dev.eeas.europa.eu; style-src 'self' 'unsafe-inline' ; img-src * data:; font-src 'self' data:; connect-src 'self' https://uap.dev.eeas.europa.eu; media-src 'none'; object-src 'self'; child-src 'self'; frame-ancestors 'self'; form-action 'self' webgate.ec.europa.eu:* ecas.cc.cec.eu.int:* intragate.test.ec.europa.eu:*; upgrade-insecure-requests; block-all-mixed-content; sandbox allow-downloads allow-forms allow-same-origin allow-scripts allow-popups allow-modals; base-uri 'self'; manifest-src 'self'; plugin-types application/pdf + + + eu-login-server: + direct: + host-name: webgate.acceptance.ec.europa.eu + one-way-ssl-port: 443 + ticket: + proxy: + requestor: + type: FIXED + fixed: + source: BASE + +################ +# Ananke Tools # +################ + + +hermes-connector: + environment: TEST + ecas: + environment: ACCEPTANCE + +file-management: + file-system: + path: + root-folder: /ec/local/weblogic/app/files/file-management + + +# ------------------------------------------------- + +# e-DMS REST requests settings: All fields mandatory if enabled = true +edms: + enabled: true + + # Unused: We use "application: mailbox:" in application.yml + message-from: Unused + + # From the generated JWKS keys take kid value PublicJWKS + eulogin-oidc-jwk-kid: encrypted:WUPgynZQ/lc/1FY0bCX+KNEZnqZsYU70lzktos0oLbfvmNJnpeVpSXjT637Z2fK4XHMlFc0RkV9A6xGjKIPeNEu/aNZCA7Bw2PKMzizAGOQs4L5wAzGkTK4xPiZMRKaokFVUZItkN585HtLfn7VOsAQENIzmebTHSB2pE0ux4k3xNEvUPSomVhZwNqjv9NtEZmyJdZorQJKneX8eZJ8cbIHp4ij4KV10b2d8cvQXbky2urcccKmiiOe1FGoZuGDlASSuSp6awBQ71YsCatp24LU6OCccmJVmOQQmkPeaZtNOk4VhKG/raRJQMNjZCCeB2XB1ZY3GFTe3+yB5pfyh/3VRcyxvqB7i66SmpGBOeNxpMhfsK7+O2o72AW/JhIJpZX0Yyo9QbwLM69H7Ar80kCN86drch0+xpzSQB/0InxCSGoVK3ywSQNFAIIaYl9N4H41vyli7L/CQHyALNPqSx8z9kkEsOHw4ZydAzRas19jW0/fqVCzLXUqb+lcZNEBrpnW8SxRIpbw14V1yZU2cCHJ5MgPt6JTcBxtrsNcIZvWYJE5nCQYWnXmILpMmU307BVLPKwfqx1sg3YcZczzTL9y4+At0iFlOuexql/IQt1gZ5Q11hwJkaETq16yq1A1D6+FvQBBQyn25Qjm5EPYyCGfwPdueVsof0U93rqaRkng=|ZDG30WWIWJt2RoJhVd2DV6vXaUtPtExKChga+cDF9sXzTv/szytMzbN2/NibH8ovARZo4IvHiaVQNf2E2iBMJQ== + + # From the generated JWKS keys take, kid and x values from PublicJWKS, and d value from Private JWKS + eulogin-oidc-private-key: encrypted:faXzxbncs+uFRc2czJpb5NGAAomkttkGzPlq5sfsyklxy9AAtECgGjb2Mr7j20ApW/ejuI2DKz+qIrWkJ9MmCR6+xtZALuzzY/v3EAncnXZJkAm+YU3W+s3znQ9lZ5gEDSH+sKPFIvSkeZx4+Y1u4XwvwSbgLdxCvni2urVBGIqtg91XjijXnW9frZtD5foeFwRmXRKXRYr9gdM7Sti4o7LQagwJne+6J4WwD3FSRQt78SFukcbcYFAXpD66vkVsWwXh5uAgZBrcd1IevVW0I1jpMiJr0TwCFfOdBAilaQWu+IdpIPHX5ckd6qdLgem+2h/9n4qwOaUT1WrejudRROnL2Khrb7PUEN1dnmIwivwzr3yiZp1h/9mlz7za7WpBETlINfiF+jv5VWU0dpaFL8gdu9R8i7yOxkY2PWGkG3jMPmADJ1czOTtUDD2ZVL5lT7H0L91yPB3DiPgAZRJC6DOmbsp72fPIae8WIWkNxhdUKoaqZ00A1yg9XkJrIkAhQyvDrgxpsImUVsNs9skjPoY49qLaXctdbfoUP5aT2f+FG6+GJPMhznDtAPjQ4YqtmrQT70b4TlwHsUubM0pgd1IxRmVxxNeaPReSRa9GQe8UiS/HnJo6H0l1MUHCsMqqtLiWzi8eESwIKKmaa5Gp87VLIUPY74oCZTVFyn72C6U=|weg0CPlamml2ysvAolv/oJcnEQbkOriwdlNnYfwwRJ/Oug8LT8NtrgFIzL7vogbapKdPS+lG0yW7HLRviEKCCA== + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:huQAI8F4mbg+uJJEkhGXaOFQlF/XJS9kXQ3FaReUETatEFlkIcFvohqNpOvJhExpNG0jy9NuJkZI8N+pPyWiAcag2I92C0aKxrczgK5tVm0Gj43FSIuEAf/2HXxQW3DS8aPKtTJ2u1mambVbs7CzZaoRSWo+RHfXZhQloqMK6czOnSuc7aIuvafar5PQTtUicG1IAKn7uDUVFFyxozXP+l3qH3B2Bac5K0YUPcgi8+/zvHUZ/H+hxdZs+KaXWB8ItDCuhbvyvPwA6kjkQcJl86gBiCkBbVSX56NIT+8pXdYxl9wVH4N9sLf85lWY9e+9DIi51dAvsJCNwyNvvq3AcpO7IQHr1kDeStfEH9maeCakuO4BqxTE9iqcO0n2MO5V/XB2xVAihcQF2YE0utSFNLylstkLRQZXtLqGIMOIpX8xaAMUM9GUxGkpkusPHYWVek/cKU135yOPdHgbCcROLLu9QlnkgFmqfvOH3m5ZCFfVAM52+iuXGIV0isZJSSp4xh3uwJV8lzpAmBtRxdBIxCy7cGLaX1MKWsWpMPPCwDe8n3qwbo2qTim8hbqVtOVrbVSIa4Ju9iGDLBwuo/HKOTCo3NyfDt426XEzPLfrjmVXMLxkZsILq/LpbRxDYCz4GtGLUIo2ppEQ49ZdmxW6Zc57J/ifNbmA11X0g5pwamU=|Gh46ZtreuugTBJsWJ4K77Opk2lLPpuHmw09gNfEGCKiYBphs4GHfYG61yIpUimcsZOeI626q85R4Qk1arfwNLw== + + eulogin-oidc-token-endpoint: https://ecas.acceptance.ec.europa.eu/cas/oauth2/token + + # Rest config (previously with "rest:", now with prefix "rest-") + # ------------------------------------- + rest-pop-token-provider: edmsLoginPoPTokenProvider + # rest-send-messages-url: https://intragate.test.ec.europa.eu/e-dms-rest + rest-send-messages-url: https://webgate.acceptance.ec.testa.eu/e-dms-rest + # OIDC Client ID - It should be provided by the e-DMS team or the Deployment Manager + rest-edms-client-id: encrypted:fu033SWVy3PIi+iDMq35LLFNXnsIe5YyqFKiCVxOXCILwYuMXG0nkhFO5BnFTVzhnM5Cf70PLJ16CivuLNNJpESD3IxRKok8RqIz6pwu+743ZhGVcN8MTOZZnSWA7uLPK25p/RMz2nm4CSkBKg1BoosMgrTEipm8qxx4LfEt+MxDtr+rqoSt/y/dVk9CzgNY59I3dPPHUGyskttaTOVctupPtn/uAjeGKKmBKhUP+8aSYqYLqTHAuW+f7NHWoKZyx2oqwtyPz7ey0rxcIkijUDDUQgC9c4FisfyEs9NQL0WNevCWKmwEGoGCS9C6r3/8TXoe94S2if2ZLxrfzzTGa9DLuLPv371UL7I8cOuC3AlRYgX837E34HzqtazucpmKlDO+2s6QBDb6PYxIw4HzKp6J2BRTvbc766gRzYRa9FfBIk2XKOOOLAh2vikTqCZhcM1bL4e8WcmMS/j8My8BgUCoCHaQhti0LQb5TjkqH7h0vE7hfYemigfKDrpQEfNBXaSIUeBGHwq3Uc0R3+cuiPG/YUVu/ySzzN4iNWFjvf6FNd+3RYcmPickkqFtkKP3APHxFO5ZG9CuS2+Z1xp80jKzR+hxPUl3wSn8CtFjWd0LgQj7jcSJoPRam9Qhf1rFNJmgnSybWKIxsXrFyVwXRdNFTO/8J2v6JRUVicDBLls=|dHmhpHMJsWeq+QB/z2H7Iv0rcj6Ye2rfI0Vo/As99rbOUoDvF5e8Z5Ro/qY3JWrI2JCK6hK1NEufRBUrWxr5Fw== + # + # Other fields used in the notification request sent to e-DMS + # + batch-id: BATCH_999 + client-division-id: CLIENT_DIVISION_999 + application-id: E-RIGHTS + # In case of issues when sending notification, the number of days after which the message will not be sent anyway. + notification-expiration-days: 28 + + +################# +# Skyscanner WS # +################# + +skyscanner: + create-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/create + poll-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/poll/%s + api-key: encrypted:W6EC+V//Rusc6MCN3+c3RxMqBbQnSq8sVvH8ewal84CyaVIbWGRgzukwVlb9KIuxk/uVW08TFlyUc4TM8zimQ0EKdXg/FiY3GagItFUDfitED91lFO+NIvT2yde5TcqtkI9ig4krkfcelYzFQdO2Dxg9sUck8w4X/vBxRX38EwMK2aS098E2n7F1PraMUcx6BuAsqKovbCer3Y2+mIsAr7MetGhZsCIDaV+MADnoxOTFw2WkLoIpq6DynvurBnvlwO/OTz5lyve/vr6BB/+ic84iuJqWdM/Z5r11Zgbr4Mcc+a6KJhxbmS36KDDj6boKi9RZh+ZeipJeYk4nxSly9LGftR4RA3aQln9ZRjOP+yp5mcc8UwYjDNmpN63Ioqd6GJcK2Nr9AisoxtNoRQXTmaM+lTAROOxFD1y6n7y7Q1y1pAuBodqfuJimGN+87YCUjSCOLuwqp+DV5uaq+AWw0R8YHrZ6NTdVQho7nlREwGsZZgsQayFK8MGyEDscA0vU2l39KIGUnBWFFXwF+F+kP0867RjBQz5IlFOZLjHFBk9BXm50dcV97L2BhNSdUBzOlFyEQGjUrtF1FvHH8Eo+DqOVLWCarRXhM1ME9o8esqdEAQGILj11IpuPcOFVjc/v5mWYWdy65usXgY3bM/qEFF4TRXMAsfB/CIq1DBbDQv0=|6aqvplbtGeQbtDk8s9uZg4vcMna+VmZ5hzVXK7SjTAuYpKyp37nhONWTzZ2p8D6CmA1nSmkHdIJRRFXyn3lL0A== + + + diff --git a/e-rights-front-office/src/main/resources/application-development-ws.yml b/e-rights-front-office/src/main/resources/application-development-ws.yml new file mode 100644 index 0000000..0e18a39 --- /dev/null +++ b/e-rights-front-office/src/main/resources/application-development-ws.yml @@ -0,0 +1,138 @@ +############ +# e-RIGHTS # +############ + +application: + protocol: HTTPS + host-name: localhost + test-mailbox: Martial-Franck.TCHEPGANG@ext.eeas.europa.eu + proxy-host: ps-bxl-usr.cec.eu.int + proxy-port: 8012 + proxy-user: a0099a5c + proxy-pass: encrypted:bVh4/iHDAg7gC/Vui/OyHLpgg3tVX65SFi71J/Q1QDNBSJnpvPfsmxnH+u+NVX1HbJGUbA1huSO5Ta2cfYCBXTpAwfSrQaxHQkK97Chp+IfqTdR+YkT74ahfW7fC8ryIgwp/prKPbZsHBTo72xg4HC87k08P5MI1ezKMP9HTFfmRFT4os5pwYbatqpaNJFhkCm2RH8LK2mKvmsGMtD1CUIvmqt+mffFTsCoCubjgbOVl+hh4xDkRBH3jzJ2rJfA2iwBoje2D0ZGO8t11juLA4syd9ecrAv27jdmfxMkG1z9J6bSUwrGlFSSd8h3kYqCscdD9I9Y1WZ/PMO+kofXwk+kOdUqrD2tDB8IfkoI8Mf+q7ToVdR5H5ZHUIrvHOGeDEBbrTA3H/fXiViNUZGLIQCj32ti0pEqoYXWlVkcBtURvO5RtgydgN9qRKmh8KWk7tnSrLbRkdg+4MF8sTLWlO43F+UjcrU76832LiNkjcmsm/PbtuSSaaOZ5p6wyWVoqJpKurquQiXD2bFJL0NDFSfoh9JHBEKR82RfjbJ8trHWRkTgyByLrb7xgQi2AxdOfd3O/4blPRexMZ9rPE911ux2lBVmpcE+PNKTc3WHYL25M+fkJQGSrXapMuy7fPVV2cqI5mLwesL2o9VIukeqXvfuWtD/SoOxEZ1OEuNMiGE8=|qEc63l7SBmnrV1H7tobrS2K1v1VCUt/HILFuS6aeZDyAX03b4o0AEdzgLlAbeakhF+59qbrPVeqCQYiBq5rQag== + gosselin-host: https://eeas.gosselingroup.eu + gosselin-api-key: 60d8def0a9f5bebd66c78825ec14dd5e + gosselin-api-id: RequestorEEAS + gosselin-active: true +########## +# Spring # +########## + +#logging: +# level: +# org.springframework.security: DEBUG + +management: + endpoints: + web: + exposure: + include: '*' + +############### +# Ananke Core # +############### + +base: + money: + currencies: + - code: STN + default-fraction-digits: 2 + numeric-code: 930 + - code: UYW + default-fraction-digits: 4 + numeric-code: 927 + +connector: + http: + secure: + socket-timeout: + value: 10 + time-unit: SECONDS + connection-timeout: + value: 10 + time-unit: SECONDS + connection-pool: + max-size: 20 + max-size-per-route: 20 + time-to-live: + value: 5 + time-unit: SECONDS +data: + jpa: + show-sql: true + format-sql: true + connection-pool: + min-size: 2 + max-size: 2 + +security: + api: + http: + authentication: + managed: + assurance-level: LOW + accept-strengths: PASSWORD + server: + protocol: ${application.protocol} + host-name: ${application.host-name} + port: 6111 + ssl-port: 6112 + ticket: + proxy: + requestor: + type: PATH_BASED + path-based: + - pattern: http://playground:7013/Ares_pg/ecas/login.do + source: SUPPLIED + supplied: + mode: FIXED + fixed: + ticket: T1ck3t + + +################ +# Ananke Tools # +################ + + +hermes-connector: + environment: TEST + + +# ------------------------------------------------- + +# e-DMS REST requests settings: All fields mandatory if enabled = true +edms: + enabled: true + + # Unused: We use "application: mailbox:" in application.yml + message-from: Unused + + # From the generated JWKS keys take kid value PublicJWKS + eulogin-oidc-jwk-kid: encrypted:skbeM9ikaCHZbecdZX5ho2HY6aW1gGdTY8pIUcwr2ExcEy6V1hV9lBAaVV23bUGpfqODRqx/c2oyq6fnASuguvX3fyKJC7oRXyt1f+QyvTL5UBLqA9Css1sUD5FsO/QkQgvjuV7Z1O6rgl81m9JkfviWmymuQlmlhw6/f44YGtsXD1rH0LBkFFiG4dVy59hBYS5/WFBnb+7bLwdKAMRa47rQDuqlveUt2zd+JaG02/3ZOHUl67h1BqzvfO5qAvR9qKlR7UwuJoIW9ZS1KpiwAnTKYhz0N/1vJsb1P3Ze2AmdK10xFl3tGqDpljI+5z1rAhLY+0IVgUbm4sz5MdXqcCWQZYJ9ju7Q+060lyFWQv2i8axwpSU/b53C1WNRGTcg63JaUWJvMpyMZLkZh8yR0Ety1C1GX5YHR9XBKttHmmDGfb/9ADr/qFsx+1ekQuEUwvYwv29E0GP1tW/JVtc4IG0GAW5Ppxp7VnRC2nT1NWN/rvoQLHMEtlL4HoXtgr1uamfdcnxMgYA2+5tfgl1/lMm17QrxeFYKklX3UCp0iifUoXo9FV07gCGYbyzRp7z34Irp7EZdeKk3sQNcVO0q8NUDdJZIQ4LVTz2ZGrUiLdLryqidCTlGwfxhQt7WLNvC3eRcJhANkbQEL/oMFiHtYTgEgMqCLBd6aHyVoZY6Rfk=|97LEaFaPlWV6fGjsuTZ/XKB2QgBgaUO5yz5euLsaSiyeLNmK6qRYD73ucGeI0TMLXn4/nHg3Eksxg97FMfvLzA== + + # From the generated JWKS keys take, kid and x values from PublicJWKS, and d value from Private JWKS + eulogin-oidc-private-key: encrypted:fOO10XL4KkvkevZW7HdsvmX7wv3LWXrJJk9YPjsVZ29chiETnybL+NAWef0qV9RHELGVi5Oc0WVMJh5PKIWDhCBlKCJpn/v1p1p8RXMa7Bds/i3PPsqe7EFh/yH4brt5656EldXXhMttKYwgxS1tojdGE15O5dP96ylcKafD1pus7J3ohdjUi4CziVafaj58B230jH8Q4WZIPPwm0aQ7r8JJWw2fbVy1mDFwUagewuztruKfanlPNVgsBi+vOimiQcoyxJ5j9CAZBcribwJC1HbL4a4n7Y4jwVkOcB2Mj37aJVDghtYsud3YvsUyi1QJm2ta5CsZ5vUmANPGRVw3kCgM8XexebS39Sx1Tc+lAsz2ufWw6ijFzHmH4Ls2n3zxJGmLBixGBt5rrlcQ1L20xwBP2r6EwgfOmFpXco2O4VlYwRFkAJWGDaaA/IxGOsLqlnRemkdV73H6ghSR4K3KnpHleDK2n0O+/BnSszMVtvORJHLiq0R15KP5GJLoC0ljxQ1LMtCkEn8mIqiXVd3RdUWhewfpUa2VJQl9AOylDGaNNCA+L/VuRGNF92Axe6qNtE0uBIOkyV44tIQ4p45uNcU6GaFica0Z49XAn7O2Dkr750tfCr8JxuCgcLEm3jidqGCk1E8sTpZG0QxZsMPtl9txN/jxE/sfK3opsbFYp98=|52SC6KQ0Bd/znJb9UkRvrP9xv4YB+uMDAkSyaZ98ijfQ14tLTtce9EOdndlmie7eoNSEjLY/nb50d3MGe+yqyA== + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:EJFavNxx0Ih+Yj7lndwi4eHbufQjneaCmQEcYJUYBD3AARbwgJqazVwur9IBEpylihNJnfmESGJwxjNVq6kWQM9+du+c14VrRfMkSmrOv8EfRF2oBD6etE/ZefsKdV8MZnEZZJvahykJIHcfqXL2horKHF2tRnhFTDwD2iYBx7F1SVfK7o7nW8x43qJiAlYP+r9KP6HD4A7vydlI6mfTp7KFcZU/IQbV5k6amHne/68ed4ClFRkH3QDZimUN+PXuWLmWBGxk68EXYCTHEGdsAqr+PnHpfuWqYyL9X+8YcsPi646i3ulWjxWrFlxQBtEZbECBmmRTE3D+VrKAUYQWgHsH5ZnldGZMnwYTCVfer+OLGTsvf70oqzX9SBUD0kw5MIxED4AejG+qDAVY75Bf4zHyncBlQDqxX2tPSK+4J9dtg0Gri8KhZA4kThEJohNYIiL2VCRac7Ok8sV1gNZ0ywayX4WzXS29S58KwFi7He4PUB6mnnhKCo2qw0xom17X7xI5IY2z14Of09zArdPDU2UfjcNVxDH2sihZH71ZckgDbtHOXwcxKk6Pen+94fzhWUoDY3l0p9pavIZ81UX33benMg5+szJrIuUNlf09rwRI3zn8dPJPb2fjR5tiFgXsKr4bDwRkefKAakS5kOT/GfaLK+6BLyP55cg7OLQqsSg=|j4oOlyoyXT1yNXdGf7r9JPM4LChByk00mWgCCdoLnAxOxTu6eHTLn6Dwo59WKDT7mMDsJXEdTuhTCaxOhF1fBQ== + + eulogin-oidc-token-endpoint: https://ecas.acceptance.ec.europa.eu/cas/oauth2/token + + # Rest config (previously with "rest:", now with prefix "rest-") + # ------------------------------------- + rest-pop-token-provider: edmsLoginPoPTokenProvider + # rest-send-messages-url: https://intragate.test.ec.europa.eu/e-dms-rest + rest-send-messages-url: https://webgate.acceptance.ec.testa.eu/e-dms-rest + # OIDC Client ID - It should be provided by the e-DMS team or the Deployment Manager + rest-edms-client-id: encrypted:hhlYoHgC4xRkpoegG+brzFjAbBGeHCEYLbKI9k4ROE6vCbWOiZaPyCYjl16p/S5hzCLBaKYnzUrGZv+jpQ4fypwl7JNyFo+CUd/nBrB3Hl8tckKlIss2JjQ+8EqmxIrxN5Eonb7cEkErmSVMX19jcNYikWeRgaFUEGJHKdkyORnDXXX0N8S7ARZrR1s9JUHr4LDUeq+rpPbaFECQuhEAX/tZWobrZC69NRlX1wqURoszEpi1Yni1GepnoXp9eDTfjTkVfjJYuFL3DUWdY2LuAj0PGKjSvMTlM93kLLXAvsuiD+DVzOWRUlR9rqijpxsH10Yzp4fiixG4qBjw0pr4LJLnmXgMe6ypc1QOZulshdloYr6NWzbyedRqhTuxx5wOtAvqH2Pj13TrtrvvO9xCp9Im25QX99gutM1nCNV4j00ESX2cn8sYNJWQZQFAgQOpkfY3k4ktwbD7xpxOuGr7hZUag5f5HlskQfkPYbHlGY/dIZTJLPNtLJ4Zienmsgp38cVp1uYT25phyq21fsIhYpP87YkD2TwviVRG4fxoe2NHBFlkGyq4B7eMacVgEaQwYW9dKyTgMMKqM7RDSNAE0vN4VOUNeqUk8jqvk0L4gz61tknhsdJPVPFI8xFtSFvI4yfyrc3tUjHocfW8NLhGC5aOZnI2qjnmP9FOUQmMlvs=|6O7Hk8OZNec6RytZ/H287r4S4aGfRFDf9RkL0B2SbfDx0YEiI5PjCzLZBpQD/HTfJ0X2HCpY23lg/jlQr3eMcA== + # + # Other fields used in the notification request sent to e-DMS + # + batch-id: BATCH_999 + client-division-id: CLIENT_DIVISION_999 + application-id: E-RIGHTS + # In case of issues when sending notification, the number of days after which the message will not be sent anyway. + notification-expiration-days: 28 + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/resources/application-development.yml b/e-rights-front-office/src/main/resources/application-development.yml new file mode 100644 index 0000000..249a9c9 --- /dev/null +++ b/e-rights-front-office/src/main/resources/application-development.yml @@ -0,0 +1,163 @@ +############ +# e-RIGHTS # +############ + +application: + protocol: HTTPS + host-name: localhost + test-mailbox: Martial-Franck.TCHEPGANG@ext.eeas.europa.eu + proxy-host: ps-bxl-usr.cec.eu.int + proxy-port: 8012 + proxy-user: a0099a5c + proxy-pass: encrypted:bVh4/iHDAg7gC/Vui/OyHLpgg3tVX65SFi71J/Q1QDNBSJnpvPfsmxnH+u+NVX1HbJGUbA1huSO5Ta2cfYCBXTpAwfSrQaxHQkK97Chp+IfqTdR+YkT74ahfW7fC8ryIgwp/prKPbZsHBTo72xg4HC87k08P5MI1ezKMP9HTFfmRFT4os5pwYbatqpaNJFhkCm2RH8LK2mKvmsGMtD1CUIvmqt+mffFTsCoCubjgbOVl+hh4xDkRBH3jzJ2rJfA2iwBoje2D0ZGO8t11juLA4syd9ecrAv27jdmfxMkG1z9J6bSUwrGlFSSd8h3kYqCscdD9I9Y1WZ/PMO+kofXwk+kOdUqrD2tDB8IfkoI8Mf+q7ToVdR5H5ZHUIrvHOGeDEBbrTA3H/fXiViNUZGLIQCj32ti0pEqoYXWlVkcBtURvO5RtgydgN9qRKmh8KWk7tnSrLbRkdg+4MF8sTLWlO43F+UjcrU76832LiNkjcmsm/PbtuSSaaOZ5p6wyWVoqJpKurquQiXD2bFJL0NDFSfoh9JHBEKR82RfjbJ8trHWRkTgyByLrb7xgQi2AxdOfd3O/4blPRexMZ9rPE911ux2lBVmpcE+PNKTc3WHYL25M+fkJQGSrXapMuy7fPVV2cqI5mLwesL2o9VIukeqXvfuWtD/SoOxEZ1OEuNMiGE8=|qEc63l7SBmnrV1H7tobrS2K1v1VCUt/HILFuS6aeZDyAX03b4o0AEdzgLlAbeakhF+59qbrPVeqCQYiBq5rQag== + gosselin-host: https://eeas.gosselingroup.eu + gosselin-path: /EEAS/rateTEST.php + gosselin-api-key: 60d8def0a9f5bebd66c78825ec14dd5e + gosselin-api-id: RequestorEEAS + gosselin-active: true + environment: DEVELOPMENT + + +########## +# Spring # +########## + +#logging: +# level: +# org.springframework.security: DEBUG + +management: + endpoints: + web: + exposure: + include: '*' + +############### +# Ananke Core # +############### + +base: + money: + currencies: + - code: STN + default-fraction-digits: 2 + numeric-code: 930 + - code: UYW + default-fraction-digits: 4 + numeric-code: 927 + +connector: + http: + secure: + socket-timeout: + value: 10 + time-unit: SECONDS + connection-timeout: + value: 10 + time-unit: SECONDS + connection-pool: + max-size: 20 + max-size-per-route: 20 + time-to-live: + value: 5 + time-unit: SECONDS +data: + jpa: + show-sql: true + format-sql: true + connection-pool: + min-size: 2 + max-size: 2 + +security: + api: + http: + authentication: + managed: + assurance-level: LOW + accept-strengths: PASSWORD + server: + protocol: ${application.protocol} + host-name: ${application.host-name} + port: 6111 + ssl-port: 6112 + security-headers: + content-security-policy: + policy-directives: default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://uap.dev.eeas.europa.eu; style-src 'self' 'unsafe-inline' ; img-src * data:; font-src 'self' data:; connect-src 'self' https://uap.dev.eeas.europa.eu; media-src 'none'; object-src 'self'; child-src 'self'; frame-ancestors 'self'; form-action 'self' webgate.ec.europa.eu:* ecas.cc.cec.eu.int:* intragate.test.ec.europa.eu:*; upgrade-insecure-requests; block-all-mixed-content; sandbox allow-downloads allow-forms allow-same-origin allow-scripts allow-popups allow-modals; base-uri 'self'; manifest-src 'self'; plugin-types application/pdf + + + ticket: + proxy: + requestor: + type: PATH_BASED + path-based: + - pattern: http://playground:7013/Ares_pg/ecas/login.do + source: SUPPLIED + supplied: + mode: FIXED + fixed: + ticket: T1ck3t + + + + + +################ +# Ananke Tools # +################ + + +hermes-connector: + environment: TEST + + +# ------------------------------------------------- + +# e-DMS REST requests settings: All fields mandatory if enabled = true +edms: + enabled: true + + # Unused: We use "application: mailbox:" in application.yml + message-from: Unused + + # From the generated JWKS keys take kid value PublicJWKS + eulogin-oidc-jwk-kid: encrypted:skbeM9ikaCHZbecdZX5ho2HY6aW1gGdTY8pIUcwr2ExcEy6V1hV9lBAaVV23bUGpfqODRqx/c2oyq6fnASuguvX3fyKJC7oRXyt1f+QyvTL5UBLqA9Css1sUD5FsO/QkQgvjuV7Z1O6rgl81m9JkfviWmymuQlmlhw6/f44YGtsXD1rH0LBkFFiG4dVy59hBYS5/WFBnb+7bLwdKAMRa47rQDuqlveUt2zd+JaG02/3ZOHUl67h1BqzvfO5qAvR9qKlR7UwuJoIW9ZS1KpiwAnTKYhz0N/1vJsb1P3Ze2AmdK10xFl3tGqDpljI+5z1rAhLY+0IVgUbm4sz5MdXqcCWQZYJ9ju7Q+060lyFWQv2i8axwpSU/b53C1WNRGTcg63JaUWJvMpyMZLkZh8yR0Ety1C1GX5YHR9XBKttHmmDGfb/9ADr/qFsx+1ekQuEUwvYwv29E0GP1tW/JVtc4IG0GAW5Ppxp7VnRC2nT1NWN/rvoQLHMEtlL4HoXtgr1uamfdcnxMgYA2+5tfgl1/lMm17QrxeFYKklX3UCp0iifUoXo9FV07gCGYbyzRp7z34Irp7EZdeKk3sQNcVO0q8NUDdJZIQ4LVTz2ZGrUiLdLryqidCTlGwfxhQt7WLNvC3eRcJhANkbQEL/oMFiHtYTgEgMqCLBd6aHyVoZY6Rfk=|97LEaFaPlWV6fGjsuTZ/XKB2QgBgaUO5yz5euLsaSiyeLNmK6qRYD73ucGeI0TMLXn4/nHg3Eksxg97FMfvLzA== + + # From the generated JWKS keys take, kid and x values from PublicJWKS, and d value from Private JWKS + eulogin-oidc-private-key: encrypted:fOO10XL4KkvkevZW7HdsvmX7wv3LWXrJJk9YPjsVZ29chiETnybL+NAWef0qV9RHELGVi5Oc0WVMJh5PKIWDhCBlKCJpn/v1p1p8RXMa7Bds/i3PPsqe7EFh/yH4brt5656EldXXhMttKYwgxS1tojdGE15O5dP96ylcKafD1pus7J3ohdjUi4CziVafaj58B230jH8Q4WZIPPwm0aQ7r8JJWw2fbVy1mDFwUagewuztruKfanlPNVgsBi+vOimiQcoyxJ5j9CAZBcribwJC1HbL4a4n7Y4jwVkOcB2Mj37aJVDghtYsud3YvsUyi1QJm2ta5CsZ5vUmANPGRVw3kCgM8XexebS39Sx1Tc+lAsz2ufWw6ijFzHmH4Ls2n3zxJGmLBixGBt5rrlcQ1L20xwBP2r6EwgfOmFpXco2O4VlYwRFkAJWGDaaA/IxGOsLqlnRemkdV73H6ghSR4K3KnpHleDK2n0O+/BnSszMVtvORJHLiq0R15KP5GJLoC0ljxQ1LMtCkEn8mIqiXVd3RdUWhewfpUa2VJQl9AOylDGaNNCA+L/VuRGNF92Axe6qNtE0uBIOkyV44tIQ4p45uNcU6GaFica0Z49XAn7O2Dkr750tfCr8JxuCgcLEm3jidqGCk1E8sTpZG0QxZsMPtl9txN/jxE/sfK3opsbFYp98=|52SC6KQ0Bd/znJb9UkRvrP9xv4YB+uMDAkSyaZ98ijfQ14tLTtce9EOdndlmie7eoNSEjLY/nb50d3MGe+yqyA== + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:EJFavNxx0Ih+Yj7lndwi4eHbufQjneaCmQEcYJUYBD3AARbwgJqazVwur9IBEpylihNJnfmESGJwxjNVq6kWQM9+du+c14VrRfMkSmrOv8EfRF2oBD6etE/ZefsKdV8MZnEZZJvahykJIHcfqXL2horKHF2tRnhFTDwD2iYBx7F1SVfK7o7nW8x43qJiAlYP+r9KP6HD4A7vydlI6mfTp7KFcZU/IQbV5k6amHne/68ed4ClFRkH3QDZimUN+PXuWLmWBGxk68EXYCTHEGdsAqr+PnHpfuWqYyL9X+8YcsPi646i3ulWjxWrFlxQBtEZbECBmmRTE3D+VrKAUYQWgHsH5ZnldGZMnwYTCVfer+OLGTsvf70oqzX9SBUD0kw5MIxED4AejG+qDAVY75Bf4zHyncBlQDqxX2tPSK+4J9dtg0Gri8KhZA4kThEJohNYIiL2VCRac7Ok8sV1gNZ0ywayX4WzXS29S58KwFi7He4PUB6mnnhKCo2qw0xom17X7xI5IY2z14Of09zArdPDU2UfjcNVxDH2sihZH71ZckgDbtHOXwcxKk6Pen+94fzhWUoDY3l0p9pavIZ81UX33benMg5+szJrIuUNlf09rwRI3zn8dPJPb2fjR5tiFgXsKr4bDwRkefKAakS5kOT/GfaLK+6BLyP55cg7OLQqsSg=|j4oOlyoyXT1yNXdGf7r9JPM4LChByk00mWgCCdoLnAxOxTu6eHTLn6Dwo59WKDT7mMDsJXEdTuhTCaxOhF1fBQ== + + eulogin-oidc-token-endpoint: https://ecas.acceptance.ec.europa.eu/cas/oauth2/token + + # Rest config (previously with "rest:", now with prefix "rest-") + # ------------------------------------- + rest-pop-token-provider: edmsLoginPoPTokenProvider + # rest-send-messages-url: https://intragate.test.ec.europa.eu/e-dms-rest + rest-send-messages-url: https://webgate.acceptance.ec.testa.eu/e-dms-rest + # OIDC Client ID - It should be provided by the e-DMS team or the Deployment Manager + rest-edms-client-id: encrypted:hhlYoHgC4xRkpoegG+brzFjAbBGeHCEYLbKI9k4ROE6vCbWOiZaPyCYjl16p/S5hzCLBaKYnzUrGZv+jpQ4fypwl7JNyFo+CUd/nBrB3Hl8tckKlIss2JjQ+8EqmxIrxN5Eonb7cEkErmSVMX19jcNYikWeRgaFUEGJHKdkyORnDXXX0N8S7ARZrR1s9JUHr4LDUeq+rpPbaFECQuhEAX/tZWobrZC69NRlX1wqURoszEpi1Yni1GepnoXp9eDTfjTkVfjJYuFL3DUWdY2LuAj0PGKjSvMTlM93kLLXAvsuiD+DVzOWRUlR9rqijpxsH10Yzp4fiixG4qBjw0pr4LJLnmXgMe6ypc1QOZulshdloYr6NWzbyedRqhTuxx5wOtAvqH2Pj13TrtrvvO9xCp9Im25QX99gutM1nCNV4j00ESX2cn8sYNJWQZQFAgQOpkfY3k4ktwbD7xpxOuGr7hZUag5f5HlskQfkPYbHlGY/dIZTJLPNtLJ4Zienmsgp38cVp1uYT25phyq21fsIhYpP87YkD2TwviVRG4fxoe2NHBFlkGyq4B7eMacVgEaQwYW9dKyTgMMKqM7RDSNAE0vN4VOUNeqUk8jqvk0L4gz61tknhsdJPVPFI8xFtSFvI4yfyrc3tUjHocfW8NLhGC5aOZnI2qjnmP9FOUQmMlvs=|6O7Hk8OZNec6RytZ/H287r4S4aGfRFDf9RkL0B2SbfDx0YEiI5PjCzLZBpQD/HTfJ0X2HCpY23lg/jlQr3eMcA== + # + # Other fields used in the notification request sent to e-DMS + # + batch-id: BATCH_999 + client-division-id: CLIENT_DIVISION_999 + application-id: E-RIGHTS + # In case of issues when sending notification, the number of days after which the message will not be sent anyway. + notification-expiration-days: 28 + + + + +################# +# Skyscanner WS # +################# + +skyscanner: + create-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/create + poll-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/poll/%s + api-key: encrypted:0vVXCvl5kdwkak+nHnTQmM2rukrmLlbR8lQTe2wTHY1tafxhnqmbPR5SJzDM56XfHqnlPhFmyYNTF3GlFu1kZzfmseymgoPvX4R06CoMYxIJyQ0pVLhG3G0s7NnIJPdFUkKbjo2B2EsSwlhSihZ0+oZRHBb79xe10Fwye/8O2aF+YU1RCn42ns4E9hBZwnFDPtYnVXGYZ/vbfn0mHgq9tpLBAJlfRBVbgwVoi5dDoMoMnUHd2/FuWCj4PsA1GaiNzTP2mqyFv1ABd/Mg0Aw1gTfsiMIo10/ehNVm+nPUksHVoxLP7d704YXmIB9PZkpREovgTzkPumVpXktHZxEHgLeJxoJMa6u073XjAjxdWg2mHENEzxInT8UMrp8Gg9rqbhEQPLQy0lMYO9O9l38IVeZvplV6MiA+8Xq/aoSWxobbjmhIjk91fYK3S0cTVTDE1x3wm0UkoSLH9OzOXrRsXiqdc2Q/XrHac1g2M9wxA8FPVXNFHykKBztC1NLq9TluTTsbIZwoeCH09DajaQwZL9T4cYJ4H97y6vf5yJ7voQjJXEjKMwWd8DmTyOz3SQ2DMvxm8yBj5hCJfkAkuR2lbSElX0cUA2kceYaVdQZg9uAExr7LtV4cTedL24BFVqyit0oFhfEFytocw1+3HXfu6T0eGS0NVFD2uic0NUvdOMI=|ef5SrkI5p/3i4vnVXqhuDVt26g3belo1esWoDb7uPyzzqThW1b5IqIZeLTVnpElJzEFvfJayQzHD7cWjHwVMaA== + + + diff --git a/e-rights-front-office/src/main/resources/application-maintenance.yml b/e-rights-front-office/src/main/resources/application-maintenance.yml new file mode 100644 index 0000000..f14ce48 --- /dev/null +++ b/e-rights-front-office/src/main/resources/application-maintenance.yml @@ -0,0 +1,158 @@ +############ +# e-RIGHTS # +############ + +application: + protocol: HTTPS + host-name: intragate.maintenance.ec.europa.eu + test-mailbox: Martial-Franck.TCHEPGANG@ext.eeas.europa.eu + proxy-host: ps-lux-usr.cec.eu.int + proxy-port: 8012 + proxy-user: a0099a5c + proxy-pass: encrypted:B+uVXy1aAVO4ZKE1PE+lzAtuwVpSm3/2HJwGRvgGnNsMgSq5dNTrj4sLRsRIlI4+B3JFPMb8ZCVirYGsP7g0KbfgnZtzkOil2K0EDAj2Bz81+P2vmn9Hr0EkppI1+X5yEeJHti9mHw1SqJoTJPWM4HToixUGenwotRqlBzFudlBE6GjNxGBtLU2+8xvialF7+i+oRi4mJl2k/S1qxCtvx+h/3EAQe711UrBVluQAMJCeai+sM7YFwjKuMoTaATtiQbrYCbatnGMmd349VNGjOY3eco3rN+cAZeoqRMOGmUjUeLCC2UjBhcHitVwIU9nepRAfBXecPXvHyxg5T0Mae5QmsgjsSGmgBd7QLne3cyrNF4Iez86PCGIXJYwbSLcrwT950gCdbsl3IOSD+IEFX1lprtkLsbNchdvjRAa1LVbSXcPkwxsUdYW8VVoKueajpdPHdpJ+kd+wHLNJGVppDeIB8+CMrPqHUSmNGUUQeYgi814CbMCaLtg7dro2eUD/LucMyttx3p/IJ2us2+C0ARfbqx6GUJS0kSoAwa4Qy66ro81YLpzPCoG1cO3VjVqgfNKZacsKhrzfazXsS8+ej8qDSzV4m099wBvKg7UbuDyu+0d8wMuDU08NktWZrM5eKbMfChLXOUdRzFkbklBFiAH1/IzmJnqJtv3DwwknNXA=|4G8sGlAAVNkJhYlMfP8SZzFqnoz58L60OvXF6uE4GzyRs78GPbyDr6tgcAQtyRWdpc0KH9mco3ACMFGIUOoc3w== + gosselin-host: https://eeas.gosselingroup.eu + gosselin-path: /EEAS/rateTEST.php + gosselin-api-key: 60d8def0a9f5bebd66c78825ec14dd5e + gosselin-api-id: RequestorEEAS + gosselin-active: true + environment: MAINTENANCE + +########## +# Spring # +########## + +management: + endpoints: + web: + exposure: + include: '*' + +############### +# Ananke Core # +############### + +base: + money: + currencies: + - code: STN + default-fraction-digits: 2 + numeric-code: 930 + - code: UYW + default-fraction-digits: 4 + numeric-code: 927 + +connector: + http: + secure: + socket-timeout: + value: 10 + time-unit: SECONDS + connection-timeout: + value: 10 + time-unit: SECONDS + connection-pool: + max-size: 20 + max-size-per-route: 20 + time-to-live: + value: 5 + time-unit: SECONDS +data: + jpa: + show-sql: false + format-sql: false + connection-pool: + min-size: 10 + max-size: 20 + +security: + api: + http: + authentication: + managed: + assurance-level: LOW + accept-strengths: PASSWORD + server: + protocol: ${application.protocol} + host-name: ${application.host-name} + ssl-port: 443 + security-headers: + content-security-policy: + policy-directives: default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline' ; img-src * data:; font-src 'self' data:; connect-src 'self'; media-src 'none'; object-src 'self'; child-src 'self'; frame-ancestors 'self'; form-action 'self' webgate.ec.europa.eu:* ecas.cc.cec.eu.int:* intragate.test.ec.europa.eu:*; upgrade-insecure-requests; block-all-mixed-content; sandbox allow-downloads allow-forms allow-same-origin allow-scripts allow-popups allow-modals; base-uri 'self'; manifest-src 'self'; plugin-types application/pdf + + eu-login-server: + direct: + host-name: webgate.acceptance.ec.europa.eu + one-way-ssl-port: 443 + ticket: + proxy: + requestor: + type: FIXED + fixed: + source: BASE + +################ +# Ananke Tools # +################ + + +hermes-connector: + environment: TEST + ecas: + environment: ACCEPTANCE + + +file-management: + file-system: + path: + root-folder: /ec/local/weblogic/app/files/file-management + + + # ------------------------------------------------- + +# e-DMS REST requests settings: All fields mandatory if enabled = true +edms: + enabled: true + + # Unused: We use "application: mailbox:" in application.yml + message-from: Unused + + # From the generated JWKS keys take kid value PublicJWKS + eulogin-oidc-jwk-kid: encrypted:WUPgynZQ/lc/1FY0bCX+KNEZnqZsYU70lzktos0oLbfvmNJnpeVpSXjT637Z2fK4XHMlFc0RkV9A6xGjKIPeNEu/aNZCA7Bw2PKMzizAGOQs4L5wAzGkTK4xPiZMRKaokFVUZItkN585HtLfn7VOsAQENIzmebTHSB2pE0ux4k3xNEvUPSomVhZwNqjv9NtEZmyJdZorQJKneX8eZJ8cbIHp4ij4KV10b2d8cvQXbky2urcccKmiiOe1FGoZuGDlASSuSp6awBQ71YsCatp24LU6OCccmJVmOQQmkPeaZtNOk4VhKG/raRJQMNjZCCeB2XB1ZY3GFTe3+yB5pfyh/3VRcyxvqB7i66SmpGBOeNxpMhfsK7+O2o72AW/JhIJpZX0Yyo9QbwLM69H7Ar80kCN86drch0+xpzSQB/0InxCSGoVK3ywSQNFAIIaYl9N4H41vyli7L/CQHyALNPqSx8z9kkEsOHw4ZydAzRas19jW0/fqVCzLXUqb+lcZNEBrpnW8SxRIpbw14V1yZU2cCHJ5MgPt6JTcBxtrsNcIZvWYJE5nCQYWnXmILpMmU307BVLPKwfqx1sg3YcZczzTL9y4+At0iFlOuexql/IQt1gZ5Q11hwJkaETq16yq1A1D6+FvQBBQyn25Qjm5EPYyCGfwPdueVsof0U93rqaRkng=|ZDG30WWIWJt2RoJhVd2DV6vXaUtPtExKChga+cDF9sXzTv/szytMzbN2/NibH8ovARZo4IvHiaVQNf2E2iBMJQ== + + # From the generated JWKS keys take, kid and x values from PublicJWKS, and d value from Private JWKS + eulogin-oidc-private-key: encrypted:faXzxbncs+uFRc2czJpb5NGAAomkttkGzPlq5sfsyklxy9AAtECgGjb2Mr7j20ApW/ejuI2DKz+qIrWkJ9MmCR6+xtZALuzzY/v3EAncnXZJkAm+YU3W+s3znQ9lZ5gEDSH+sKPFIvSkeZx4+Y1u4XwvwSbgLdxCvni2urVBGIqtg91XjijXnW9frZtD5foeFwRmXRKXRYr9gdM7Sti4o7LQagwJne+6J4WwD3FSRQt78SFukcbcYFAXpD66vkVsWwXh5uAgZBrcd1IevVW0I1jpMiJr0TwCFfOdBAilaQWu+IdpIPHX5ckd6qdLgem+2h/9n4qwOaUT1WrejudRROnL2Khrb7PUEN1dnmIwivwzr3yiZp1h/9mlz7za7WpBETlINfiF+jv5VWU0dpaFL8gdu9R8i7yOxkY2PWGkG3jMPmADJ1czOTtUDD2ZVL5lT7H0L91yPB3DiPgAZRJC6DOmbsp72fPIae8WIWkNxhdUKoaqZ00A1yg9XkJrIkAhQyvDrgxpsImUVsNs9skjPoY49qLaXctdbfoUP5aT2f+FG6+GJPMhznDtAPjQ4YqtmrQT70b4TlwHsUubM0pgd1IxRmVxxNeaPReSRa9GQe8UiS/HnJo6H0l1MUHCsMqqtLiWzi8eESwIKKmaa5Gp87VLIUPY74oCZTVFyn72C6U=|weg0CPlamml2ysvAolv/oJcnEQbkOriwdlNnYfwwRJ/Oug8LT8NtrgFIzL7vogbapKdPS+lG0yW7HLRviEKCCA== + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:huQAI8F4mbg+uJJEkhGXaOFQlF/XJS9kXQ3FaReUETatEFlkIcFvohqNpOvJhExpNG0jy9NuJkZI8N+pPyWiAcag2I92C0aKxrczgK5tVm0Gj43FSIuEAf/2HXxQW3DS8aPKtTJ2u1mambVbs7CzZaoRSWo+RHfXZhQloqMK6czOnSuc7aIuvafar5PQTtUicG1IAKn7uDUVFFyxozXP+l3qH3B2Bac5K0YUPcgi8+/zvHUZ/H+hxdZs+KaXWB8ItDCuhbvyvPwA6kjkQcJl86gBiCkBbVSX56NIT+8pXdYxl9wVH4N9sLf85lWY9e+9DIi51dAvsJCNwyNvvq3AcpO7IQHr1kDeStfEH9maeCakuO4BqxTE9iqcO0n2MO5V/XB2xVAihcQF2YE0utSFNLylstkLRQZXtLqGIMOIpX8xaAMUM9GUxGkpkusPHYWVek/cKU135yOPdHgbCcROLLu9QlnkgFmqfvOH3m5ZCFfVAM52+iuXGIV0isZJSSp4xh3uwJV8lzpAmBtRxdBIxCy7cGLaX1MKWsWpMPPCwDe8n3qwbo2qTim8hbqVtOVrbVSIa4Ju9iGDLBwuo/HKOTCo3NyfDt426XEzPLfrjmVXMLxkZsILq/LpbRxDYCz4GtGLUIo2ppEQ49ZdmxW6Zc57J/ifNbmA11X0g5pwamU=|Gh46ZtreuugTBJsWJ4K77Opk2lLPpuHmw09gNfEGCKiYBphs4GHfYG61yIpUimcsZOeI626q85R4Qk1arfwNLw== + + eulogin-oidc-token-endpoint: https://ecas.acceptance.ec.europa.eu/cas/oauth2/token + + # Rest config (previously with "rest:", now with prefix "rest-") + # ------------------------------------- + rest-pop-token-provider: edmsLoginPoPTokenProvider + # rest-send-messages-url: https://intragate.test.ec.europa.eu/e-dms-rest + rest-send-messages-url: https://webgate.acceptance.ec.testa.eu/e-dms-rest + # OIDC Client ID - It should be provided by the e-DMS team or the Deployment Manager + rest-edms-client-id: encrypted:fu033SWVy3PIi+iDMq35LLFNXnsIe5YyqFKiCVxOXCILwYuMXG0nkhFO5BnFTVzhnM5Cf70PLJ16CivuLNNJpESD3IxRKok8RqIz6pwu+743ZhGVcN8MTOZZnSWA7uLPK25p/RMz2nm4CSkBKg1BoosMgrTEipm8qxx4LfEt+MxDtr+rqoSt/y/dVk9CzgNY59I3dPPHUGyskttaTOVctupPtn/uAjeGKKmBKhUP+8aSYqYLqTHAuW+f7NHWoKZyx2oqwtyPz7ey0rxcIkijUDDUQgC9c4FisfyEs9NQL0WNevCWKmwEGoGCS9C6r3/8TXoe94S2if2ZLxrfzzTGa9DLuLPv371UL7I8cOuC3AlRYgX837E34HzqtazucpmKlDO+2s6QBDb6PYxIw4HzKp6J2BRTvbc766gRzYRa9FfBIk2XKOOOLAh2vikTqCZhcM1bL4e8WcmMS/j8My8BgUCoCHaQhti0LQb5TjkqH7h0vE7hfYemigfKDrpQEfNBXaSIUeBGHwq3Uc0R3+cuiPG/YUVu/ySzzN4iNWFjvf6FNd+3RYcmPickkqFtkKP3APHxFO5ZG9CuS2+Z1xp80jKzR+hxPUl3wSn8CtFjWd0LgQj7jcSJoPRam9Qhf1rFNJmgnSybWKIxsXrFyVwXRdNFTO/8J2v6JRUVicDBLls=|dHmhpHMJsWeq+QB/z2H7Iv0rcj6Ye2rfI0Vo/As99rbOUoDvF5e8Z5Ro/qY3JWrI2JCK6hK1NEufRBUrWxr5Fw== + # + # Other fields used in the notification request sent to e-DMS + # + batch-id: BATCH_999 + client-division-id: CLIENT_DIVISION_999 + application-id: E-RIGHTS + # In case of issues when sending notification, the number of days after which the message will not be sent anyway. + notification-expiration-days: 28 + + + +################# +# Skyscanner WS # +################# + +skyscanner: + create-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/create + poll-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/poll/%s + api-key: encrypted:W6EC+V//Rusc6MCN3+c3RxMqBbQnSq8sVvH8ewal84CyaVIbWGRgzukwVlb9KIuxk/uVW08TFlyUc4TM8zimQ0EKdXg/FiY3GagItFUDfitED91lFO+NIvT2yde5TcqtkI9ig4krkfcelYzFQdO2Dxg9sUck8w4X/vBxRX38EwMK2aS098E2n7F1PraMUcx6BuAsqKovbCer3Y2+mIsAr7MetGhZsCIDaV+MADnoxOTFw2WkLoIpq6DynvurBnvlwO/OTz5lyve/vr6BB/+ic84iuJqWdM/Z5r11Zgbr4Mcc+a6KJhxbmS36KDDj6boKi9RZh+ZeipJeYk4nxSly9LGftR4RA3aQln9ZRjOP+yp5mcc8UwYjDNmpN63Ioqd6GJcK2Nr9AisoxtNoRQXTmaM+lTAROOxFD1y6n7y7Q1y1pAuBodqfuJimGN+87YCUjSCOLuwqp+DV5uaq+AWw0R8YHrZ6NTdVQho7nlREwGsZZgsQayFK8MGyEDscA0vU2l39KIGUnBWFFXwF+F+kP0867RjBQz5IlFOZLjHFBk9BXm50dcV97L2BhNSdUBzOlFyEQGjUrtF1FvHH8Eo+DqOVLWCarRXhM1ME9o8esqdEAQGILj11IpuPcOFVjc/v5mWYWdy65usXgY3bM/qEFF4TRXMAsfB/CIq1DBbDQv0=|6aqvplbtGeQbtDk8s9uZg4vcMna+VmZ5hzVXK7SjTAuYpKyp37nhONWTzZ2p8D6CmA1nSmkHdIJRRFXyn3lL0A== + + + diff --git a/e-rights-front-office/src/main/resources/application-production.yml b/e-rights-front-office/src/main/resources/application-production.yml new file mode 100644 index 0000000..7dc25ac --- /dev/null +++ b/e-rights-front-office/src/main/resources/application-production.yml @@ -0,0 +1,149 @@ +############ +# e-RIGHTS # +############ + +application: + protocol: HTTPS + host-name: webgate.ec.europa.eu + proxy-host: ps-lux-usr.cec.eu.int + proxy-port: 8012 + proxy-user: a00jqdke + proxy-pass: JkUjhA789ghL + gosselin-host: https://eeas.gosselingroup.eu + gosselin-path: /EEAS/rate.php + gosselin-api-key: encrypted:wmLvkpIrnt5WZsUbkEoFeszvk5sdYEyMVL51fkANIcw9bYTp69TzitfMcGKFvKbMea+spaOGfNK8mHneRkY2GVwM0frlUL6+svRIGXq8zWEyuRqUoyT/sUHvgcfketeBeetmQJ4VP9632EGlWL+9Vw7OKmaHYj0qeMTBXrdTcyPYT/lbtOhwo2SfoB+QfJofFeWAcrd0VVDNQZaatiZuGHOOfxTwB4VaZIRx5xAMYT9KE2TK77T5Luc2F/wtZvLZoc6PQOLC8Uig++cZcBHLaPeeXPQ4vxEadoFd3en0ov8IEg8WapUss4oa7yYsYNxWI8uDyuPtJsjrkCagx8DT79ID5TKFMS3tojHL/s1oQ2uROBNrNMDgJ5uiC0Tu5VirLvyj+UlIOKaXeP5FtUJKU9bBROLAfg1rZwjCCWRedGblrI0RZopxWpFEY5dRlSug0BbBvyGDwLXl02NeImnj3Z/ZWoilAH2owjglq7uS0ULuUplceRqU+FN+GzNBSd1sfgeW3A/XZOltZlJ9ZsnL75n/IaIdP3mY8ijRpTCb5efuOcKIaTEvyovDS0xWCzkF0RbKdTsGa21cXuVZhGcF88sG6D+RFBGe0ypiO2ctVXbak6m8YK8nDERR7D9PxiFcdpVqj8hJqcIpPpjelrhl6zHbAvLpfYqNSh9BWiTadPg=|xh8Mg/0pwBOoHB1HY/Jilk22oiieM7mnjmxELz5DBP+FtND0Cvg/JQxo1iO5WtfHiZaVoGQQskgGbAJrjs/0Nw== + gosselin-api-id: RequestorEEAS + gosselin-active: true + environment: PRODUCTION + +########## +# Spring # +########## + +management: + endpoints: + web: + exposure: + include: '*' + +############### +# Ananke Core # +############### + +base: + money: + currencies: + - code: STN + default-fraction-digits: 2 + numeric-code: 930 + - code: UYW + default-fraction-digits: 4 + numeric-code: 927 + +connector: + http: + secure: + socket-timeout: + value: 10 + time-unit: SECONDS + connection-timeout: + value: 10 + time-unit: SECONDS + connection-pool: + max-size: 20 + max-size-per-route: 20 + time-to-live: + value: 5 + time-unit: SECONDS +data: + jpa: + show-sql: false + format-sql: false + connection-pool: + min-size: 10 + max-size: 20 + +security: + api: + http: + authentication: + managed: + assurance-level: LOW + server: + protocol: ${application.protocol} + host-name: ${application.host-name} + ssl-port: 443 + security-headers: + content-security-policy: + policy-directives: default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://uap.dev.eeas.europa.eu; style-src 'self' 'unsafe-inline' ; img-src * data:; font-src 'self' data:; connect-src 'self' https://uap.dev.eeas.europa.eu; media-src 'none'; object-src 'self'; child-src 'self'; frame-ancestors 'self'; form-action 'self' webgate.ec.europa.eu:* ecas.cc.cec.eu.int:* intragate.test.ec.europa.eu:*; upgrade-insecure-requests; block-all-mixed-content; sandbox allow-downloads allow-forms allow-same-origin allow-scripts allow-popups allow-modals; base-uri 'self'; manifest-src 'self'; plugin-types application/pdf + + ticket: + proxy: + requestor: + type: FIXED + fixed: + source: BASE + +################ +# Ananke Tools # +################ + + + +hermes-connector: + environment: PRODUCTION + ecas: + environment: PRODUCTION + +# --- +# e-DMS REST requests settings: All fields mandatory if enabled = true +# ------------------------------------------------- +# These are the NON-PROD keys +# TODO: Obtain PROD keys and encrypt them +# ------------------------------------------------- +edms: + enabled: true + + # Unused: We use "application: mailbox:" in application.yml + message-from: Unused + + # From the generated JWKS keys take kid value PublicJWKS + eulogin-oidc-jwk-kid: encrypted:YS6QpLgzZzqO+UEqBnrFU9fWjJGTueaErb77R8meX/mQ6VHFW22jXQGR1fuQhEB1uiZEb0MKEMWd/JBvJViAC8t+WdpUSAA5JGys7oePXN9uEH7krybUGqYE0d3KZXCfD5O09uvU/5mpT6L/kaROnI92alXvfD0HLsZyZLNnLprrkxavzJ9kwfb88F5zbkuEPWPzUA41pOwJN8Ao2qspo5t6Ud5YN1Yd9noZOW+zQHbtepb+qhITAZciVeD/yMFMBg5gSmjxQrUgD/TasSnPq/01QmuvkAMjFm3zH022F92hmpfwAa6UAmpHVIq/XqGTGSTk1jdRzgyHh2WLHweBLYi0cMf01ZZL+yp0EoFf754C1vX8vCc4eXXuvG25Hy5XRdX2k2hs96D2KpabeIrpBjbM42G3nE/86POuktThsTz45dEyH7QC4YQRqWhcN3NyDhDwhcasUPWxcoZ98/fkkpOtGa3Bp3FPuBBA8etZOM2tEjWUfMGbI+NlyQGt7bgxM6dBRXfrEafN4qtNhH0eE5NmE2OZIN2cKlgQLUbAzoQC22JFikEWq+Np+4Qfyl3kz2S1QtTLxzWOdc+g1yalV8ASUIMhvaBGtc5FUXeHj0D+Izgk+pR6cWOxndYGJyxL1tPpov4a6j7So/VvQFCbuBArgkJgq/MK8+ytM4G6rBU=|kab4v2hPuU0f8EaXnjCsKr+/hK03wURImnSZ7yZkGp32ohJHAjZb0M2b018m1m4kXI6rP+bvjF4/FyYsR2pNrA== + + # From the generated JWKS keys take, kid and x values from PublicJWKS, and d value from Private JWKS + eulogin-oidc-private-key: encrypted:tat+GuEbVDiZwHqGwG7LRfn3ui0qm5kDzIsICOe+SRgeyrkcBR4hSJ/upsBSwN6Uq+4T1M2hVQrY63xTE7mFQ4l82taBbbURHCucByK97sljfoUhD6W8RlgQn8WfnZMkQ7TNC23oObHIFUQ4f4kHd4DijM6XQNA6TYC4uDzIMHJtd26ECJIe9BR/svHwfENjAnzgJyHNg0pMFM4oPGx1dX3Oo6v6QWRIFF63IDujRy2AFmPR9tRmN9daPSobPr8CER0W3A3q1VuPv5n4B3nxSCR8Zrfxo+GQLq54bRouX74JdsO7Ldw7Bq5QJJtkThLz1OQiWdEyvCEwFXDcEmOXhHbqNUeGvTSzQ2S3BdmFi1KX3Elem1IO1Etem4fhgLIookossEhuIZC4buj8nXSzRxTKa/piazv/WfkilcZ3ZAf7VFJOdqHT0qW4a7t1dOy0horY6suqUwnOMBgoJsSWRyRgIhwwoDJhM2dMJ0OL/ylfpwX87B0Pt5xfWTisscyHndfBdF2jGmdMZt8/Ct3FcLGUTNpVDgKND2+UnmLrryrcdRgG/17+FfpX5sTep/Bu+GGUXcGrmfzL29+Y1KlnXQSifcGVG1nbiQaFgfwkZ/8GGFV8MccABYUof0Z39x2g6cuZ7/Yhp7fwaqAM8aVEp6smdcAtJIdC5p2kXYcOJW0=|zS9Nf09sRpHULoMIWZ+D/yBiRiiI1eO41j8y25lkWqmn2DmJCcSOGWggEiEm3NHgSAw+TWL8VJxBFogMfs/v5A== + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:rNy73HfS2cPENON5aNe1NaftT9ImCYfUxp7T5hqoddbFcDA7fEU8TJfGVeWdrnYcQ99x34hbcyKMTSl02YhRKwc1UXnHPU9LkUS38fJVEIVKEuEn1R1RrqX7x0Z0fOeasWyytAwwYpV6C9qDHm9Dgpf74C2BmkBXcnYUgN8Z+HZUvuN0CV+GEZe6krBr5BFKJVnMe611GXvDXvQMjpeMalL/XUAVg/lYA+f2IcPYOUY23Mt5aif7RcO8Tk01BXObypJWkiGHEFlTZ5/DVTJomL9uAS3kteqNUsT5OyXUCWw0JpbBFrIhFU+Fs/F9JNGTvn550/EzYBKpzJCTI/LOWoi7pBM3I1RTzIf4ly2QRqv/xWD16JlRnjQjUCC/exHigGY/4NXDjPrUV7mXMgmrNbpJeMXGgGQiDI+KLAsdvFqRbceSjUePcXphzzpFzHN/CVIX48MWo9XLNqJ+ystZPqTJfHjAYe4hCDF4Gpg/BywXXcD3HPMi6j9rV2P13VaNdZIRRY2eHdGa+j0DBr9KYTUhsDlX8kQWVNYvIYiYZ1lp71YaC2BxoxcXNRVe9BgxpBmWar7pryuBMm7gBbGV/4zWjlSjNxkZs3rMpBrwmkV1ZhXOMWzyT/VArGWDQIeocuHS4NncM3aSqJFqEElzG+DdHmOx6AYq4Kqa2Rq8nwg=|Ehm9r7iJi8iUvdnohjyLkzW+Cr6WEOJT5l+Bpa4Qpi/1mZA1Zt17hNKQ2kC5yZQVgV3DlFGxBOkMCTYf4T/0fQ== + + eulogin-oidc-token-endpoint: https://ecas.ec.europa.eu/cas/oauth2/token + + # Rest config (previously with "rest:", now with prefix "rest-") + # ------------------------------------- + rest-pop-token-provider: edmsLoginPoPTokenProvider + rest-send-messages-url: https://webgate.ec.testa.eu/e-dms-rest + # OIDC Client ID - It should be provided by the e-DMS team or the Deployment Manager + rest-edms-client-id: encrypted:XsjltMKwRFLuxTcJYygonldv89RMfekBmUN3+q6cRvmd1ExjHG7tCmcNOLwCB6XL9QxWTMwE2uSF5F1HIhB17r1R0d5msod+f+Vc1Y0e9WiHjDC7GMppXVtbRBqJag+YJj1wDct1iya9I6ZRIhDfPvzlZccI8dluFrg8MrhlgaMyJklddLfKCrA2mRJjpY8A5oITaNpL3cP63+NYW5U+Db8hO7GmIUqMDkkW1pavKNmd+OfdKYNGNSx37FjVGuXIFGivdlN0n7s+LXFx0DSG7RvSpEunDRNfGbVKC1HqCa4DpCRN1KVw1lrtbMcEIV711dCOi2H8JluiVAagGEOPAk3Y6ff38+F8X7OYqy43okel1iH2v7FbN1XRCMjGb8mXJ0bwYIWxPZ3hBzikfXWZT3CGWeXc4jYV39zMeBF7OmLQXcazsZ+EIT43U0VjrQj8yHWRJTJmX1PLKXATO8gfForLebVfM29REIMS3ioK42t78949NlAlNWYO1xvzM8VLupcvcnjmy2+Gi2UF9mfp1E2GHVKmXfVHMWE5QFhOs3XRzOVh87yNvhMrlZsFFPYJpT2vL9yqdaNIRLvnsmNwQk72ZnMjINAYOYf88hEazKb2rAzUitYVqlXcZW9z4qFg0QK/Qieok2/mddZi84QhA+UOxy/Hm3++Q6Nf1vf26Z8=|w4qIoHmCFcKMaJkcpKh19cTVFiPyckKmjdxoOaBcsct33/2JhaFOlW1WiPm5e2WSjZCh9+2jwgw6odpJV+tUOA== + # + # Other fields used in the notification request sent to e-DMS + # + batch-id: BATCH_999 + client-division-id: CLIENT_DIVISION_999 + application-id: E-RIGHTS + # In case of issues when sending notification, the number of days after which the message will not be sent anyway. + notification-expiration-days: 28 + + +################# +# Skyscanner WS # +################# + +skyscanner: + create-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/create + poll-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/poll/%s + api-key: eu847462319462799979241421154933 + + + + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/resources/application-standalone.yml b/e-rights-front-office/src/main/resources/application-standalone.yml new file mode 100644 index 0000000..1646f35 --- /dev/null +++ b/e-rights-front-office/src/main/resources/application-standalone.yml @@ -0,0 +1,75 @@ +########## +# Spring # +########## + +server: + port: 6112 + servlet: + context-path: ${application.context-path} + +############### +# Ananke Core # +############### + + +data: + jpa: + data-source: + driver-class-name: oracle.jdbc.OracleDriver + username: ERIGHTS + url: "jdbc:oracle:thin:@(DESCRIPTION_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON)(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ1.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT1.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV15.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_A_TAF.CC.CEC.EU.INT)))(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ1.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT2.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV15.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_A_TAF.CC.CEC.EU.INT)))(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ2.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT1.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV15.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_A_TAF.CC.CEC.EU.INT)))(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ2.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT2.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV15.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_A_TAF.CC.CEC.EU.INT))))" # ACC DB + password: f+.jc7bWvMP^PH8a + + # TEST DB url: "jdbc:oracle:thin:@(DESCRIPTION_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON)(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ1.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT1.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV13.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_T_TAF.CC.CEC.EU.INT)))(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ1.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT2.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV13.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_T_TAF.CC.CEC.EU.INT)))(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ2.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT1.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV13.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_T_TAF.CC.CEC.EU.INT)))(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ2.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT2.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV13.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_T_TAF.CC.CEC.EU.INT))))" # TEST DB + #TEST PASS password: encrypted:KqXrxoeQdSx1epV+0UTMndEXHnkJThGhCtHJv+VBOsXHz/WOeEe/wT7yZZi/q0OZ1vKethtT2DhwulQ3Csco2jCc+4W5sIP6lCPJMEFQ/qH3pr6UF0mc+xxI1tc9z/BysWXANxVj/NC1lS5PFTll7Z90WDnEVrYaWX9Za1FdDTuEsuNsz8y3S7YYHVNc7BEHQK6i4ZeAZyey8NgGmo/ZEcE/kDu7N8cySlXsk9fwzQTuJpKMqhujTk/pBxBiW92pfHmuxYOPuhJWpTNdIfllRQtuo9xMZwax1w8N+tA8wnI9mKfVCDG3uniu44/416B2XDQx1NssmNFmh+PfB0QdOD/3nhnt/8EQI3IBUCu0EHvEAh171MTrJ457CKhO4euXxB+1ceYXBKr2qmwQGxifUodWCBdM6jFqZJr8zG5vSanP4Z2zwXsJBV0RALeWRug+wPyFXgBuqpbQdFncrwB1QiAF2uasUAfdd2M0Ue0OuFGYSjM4olBo5awinRVMDHYyWFCAXV2PbB+OHAWcfpnHWSbHkpJIiORtLVKVJkjDu5O3SLbOADO4l1k/vc/CnFbvELHU9PSBWFuPjFxuaOWx6US28NCtlZajJc6v81R3mRH6gFLreeNvsIsMwk8eY0QDscHVPlFl21VplNdmSXzaot92OgnyIvrkaeDIPaZv6As=|OOKV/3EvgnUnUv5JdGCSAMS4NuuDILh1xVwGZHwkXrPFO41xTRpE/tcQpOGNDktQPEiUAqvLzAQJ5jOJWgnIPQ== + #ACC url: "jdbc:oracle:thin:@(DESCRIPTION_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON)(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ1.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT1.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV15.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_A_TAF.CC.CEC.EU.INT)))(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ1.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT2.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV15.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_A_TAF.CC.CEC.EU.INT)))(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ2.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT1.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV15.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_A_TAF.CC.CEC.EU.INT)))(DESCRIPTION=(SOURCE_ROUTE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=CMANDMZ2.EC.TESTA.EU)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=CMANINT2.CC.CEC.EU.INT)(PORT=1630))(ADDRESS=(PROTOCOL=TCP)(HOST=OLRDEV15.CC.CEC.EU.INT)(PORT=1597))(CONNECT_DATA=(SERVICE_NAME=ERIGHTS_EEAS_01_A_TAF.CC.CEC.EU.INT))))" # ACC DB + #ACC password: f+.jc7bWvMP^PH8a + # + +################ +# Ananke Tools # +################ + + +hermes-connector: + environment: TEST + ecas: + environment: ACCEPTANCE + +# ------------------------------------------------- + +# e-DMS REST requests settings: All fields mandatory if enabled = true +edms: + enabled: true + + # Unused: We use "application: mailbox:" in application.yml + message-from: Unused + + # From the generated JWKS keys take kid value PublicJWKS + eulogin-oidc-jwk-kid: encrypted:skbeM9ikaCHZbecdZX5ho2HY6aW1gGdTY8pIUcwr2ExcEy6V1hV9lBAaVV23bUGpfqODRqx/c2oyq6fnASuguvX3fyKJC7oRXyt1f+QyvTL5UBLqA9Css1sUD5FsO/QkQgvjuV7Z1O6rgl81m9JkfviWmymuQlmlhw6/f44YGtsXD1rH0LBkFFiG4dVy59hBYS5/WFBnb+7bLwdKAMRa47rQDuqlveUt2zd+JaG02/3ZOHUl67h1BqzvfO5qAvR9qKlR7UwuJoIW9ZS1KpiwAnTKYhz0N/1vJsb1P3Ze2AmdK10xFl3tGqDpljI+5z1rAhLY+0IVgUbm4sz5MdXqcCWQZYJ9ju7Q+060lyFWQv2i8axwpSU/b53C1WNRGTcg63JaUWJvMpyMZLkZh8yR0Ety1C1GX5YHR9XBKttHmmDGfb/9ADr/qFsx+1ekQuEUwvYwv29E0GP1tW/JVtc4IG0GAW5Ppxp7VnRC2nT1NWN/rvoQLHMEtlL4HoXtgr1uamfdcnxMgYA2+5tfgl1/lMm17QrxeFYKklX3UCp0iifUoXo9FV07gCGYbyzRp7z34Irp7EZdeKk3sQNcVO0q8NUDdJZIQ4LVTz2ZGrUiLdLryqidCTlGwfxhQt7WLNvC3eRcJhANkbQEL/oMFiHtYTgEgMqCLBd6aHyVoZY6Rfk=|97LEaFaPlWV6fGjsuTZ/XKB2QgBgaUO5yz5euLsaSiyeLNmK6qRYD73ucGeI0TMLXn4/nHg3Eksxg97FMfvLzA== + + # From the generated JWKS keys take, kid and x values from PublicJWKS, and d value from Private JWKS + eulogin-oidc-private-key: encrypted:fOO10XL4KkvkevZW7HdsvmX7wv3LWXrJJk9YPjsVZ29chiETnybL+NAWef0qV9RHELGVi5Oc0WVMJh5PKIWDhCBlKCJpn/v1p1p8RXMa7Bds/i3PPsqe7EFh/yH4brt5656EldXXhMttKYwgxS1tojdGE15O5dP96ylcKafD1pus7J3ohdjUi4CziVafaj58B230jH8Q4WZIPPwm0aQ7r8JJWw2fbVy1mDFwUagewuztruKfanlPNVgsBi+vOimiQcoyxJ5j9CAZBcribwJC1HbL4a4n7Y4jwVkOcB2Mj37aJVDghtYsud3YvsUyi1QJm2ta5CsZ5vUmANPGRVw3kCgM8XexebS39Sx1Tc+lAsz2ufWw6ijFzHmH4Ls2n3zxJGmLBixGBt5rrlcQ1L20xwBP2r6EwgfOmFpXco2O4VlYwRFkAJWGDaaA/IxGOsLqlnRemkdV73H6ghSR4K3KnpHleDK2n0O+/BnSszMVtvORJHLiq0R15KP5GJLoC0ljxQ1LMtCkEn8mIqiXVd3RdUWhewfpUa2VJQl9AOylDGaNNCA+L/VuRGNF92Axe6qNtE0uBIOkyV44tIQ4p45uNcU6GaFica0Z49XAn7O2Dkr750tfCr8JxuCgcLEm3jidqGCk1E8sTpZG0QxZsMPtl9txN/jxE/sfK3opsbFYp98=|52SC6KQ0Bd/znJb9UkRvrP9xv4YB+uMDAkSyaZ98ijfQ14tLTtce9EOdndlmie7eoNSEjLY/nb50d3MGe+yqyA== + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:EJFavNxx0Ih+Yj7lndwi4eHbufQjneaCmQEcYJUYBD3AARbwgJqazVwur9IBEpylihNJnfmESGJwxjNVq6kWQM9+du+c14VrRfMkSmrOv8EfRF2oBD6etE/ZefsKdV8MZnEZZJvahykJIHcfqXL2horKHF2tRnhFTDwD2iYBx7F1SVfK7o7nW8x43qJiAlYP+r9KP6HD4A7vydlI6mfTp7KFcZU/IQbV5k6amHne/68ed4ClFRkH3QDZimUN+PXuWLmWBGxk68EXYCTHEGdsAqr+PnHpfuWqYyL9X+8YcsPi646i3ulWjxWrFlxQBtEZbECBmmRTE3D+VrKAUYQWgHsH5ZnldGZMnwYTCVfer+OLGTsvf70oqzX9SBUD0kw5MIxED4AejG+qDAVY75Bf4zHyncBlQDqxX2tPSK+4J9dtg0Gri8KhZA4kThEJohNYIiL2VCRac7Ok8sV1gNZ0ywayX4WzXS29S58KwFi7He4PUB6mnnhKCo2qw0xom17X7xI5IY2z14Of09zArdPDU2UfjcNVxDH2sihZH71ZckgDbtHOXwcxKk6Pen+94fzhWUoDY3l0p9pavIZ81UX33benMg5+szJrIuUNlf09rwRI3zn8dPJPb2fjR5tiFgXsKr4bDwRkefKAakS5kOT/GfaLK+6BLyP55cg7OLQqsSg=|j4oOlyoyXT1yNXdGf7r9JPM4LChByk00mWgCCdoLnAxOxTu6eHTLn6Dwo59WKDT7mMDsJXEdTuhTCaxOhF1fBQ== + + eulogin-oidc-token-endpoint: https://ecas.acceptance.ec.europa.eu/cas/oauth2/token + + # Rest config (previously with "rest:", now with prefix "rest-") + # ------------------------------------- + rest-pop-token-provider: edmsLoginPoPTokenProvider + # rest-send-messages-url: https://intragate.test.ec.europa.eu/e-dms-rest + rest-send-messages-url: https://webgate.acceptance.ec.testa.eu/e-dms-rest + # OIDC Client ID - It should be provided by the e-DMS team or the Deployment Manager + rest-edms-client-id: encrypted:hhlYoHgC4xRkpoegG+brzFjAbBGeHCEYLbKI9k4ROE6vCbWOiZaPyCYjl16p/S5hzCLBaKYnzUrGZv+jpQ4fypwl7JNyFo+CUd/nBrB3Hl8tckKlIss2JjQ+8EqmxIrxN5Eonb7cEkErmSVMX19jcNYikWeRgaFUEGJHKdkyORnDXXX0N8S7ARZrR1s9JUHr4LDUeq+rpPbaFECQuhEAX/tZWobrZC69NRlX1wqURoszEpi1Yni1GepnoXp9eDTfjTkVfjJYuFL3DUWdY2LuAj0PGKjSvMTlM93kLLXAvsuiD+DVzOWRUlR9rqijpxsH10Yzp4fiixG4qBjw0pr4LJLnmXgMe6ypc1QOZulshdloYr6NWzbyedRqhTuxx5wOtAvqH2Pj13TrtrvvO9xCp9Im25QX99gutM1nCNV4j00ESX2cn8sYNJWQZQFAgQOpkfY3k4ktwbD7xpxOuGr7hZUag5f5HlskQfkPYbHlGY/dIZTJLPNtLJ4Zienmsgp38cVp1uYT25phyq21fsIhYpP87YkD2TwviVRG4fxoe2NHBFlkGyq4B7eMacVgEaQwYW9dKyTgMMKqM7RDSNAE0vN4VOUNeqUk8jqvk0L4gz61tknhsdJPVPFI8xFtSFvI4yfyrc3tUjHocfW8NLhGC5aOZnI2qjnmP9FOUQmMlvs=|6O7Hk8OZNec6RytZ/H287r4S4aGfRFDf9RkL0B2SbfDx0YEiI5PjCzLZBpQD/HTfJ0X2HCpY23lg/jlQr3eMcA== + # + # Other fields used in the notification request sent to e-DMS + # + batch-id: BATCH_999 + client-division-id: CLIENT_DIVISION_999 + application-id: E-RIGHTS + # In case of issues when sending notification, the number of days after which the message will not be sent anyway. + notification-expiration-days: 28 + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/resources/application-tapiafo.yml b/e-rights-front-office/src/main/resources/application-tapiafo.yml new file mode 100644 index 0000000..c349343 --- /dev/null +++ b/e-rights-front-office/src/main/resources/application-tapiafo.yml @@ -0,0 +1,12 @@ + +server: + ssl: + key-store: C:/Users/tapiafo/Projects/security/BELBRU-V2435032.eeas.europa.eu.jks + key-store-password: changeit + key-store-type: JKS + key-alias: BELBRU-V2435032.eeas.europa.eu + +file-management: + temporary-storage: + file-system: + root-folder: C:/tmp \ No newline at end of file diff --git a/e-rights-front-office/src/main/resources/application-test.yml b/e-rights-front-office/src/main/resources/application-test.yml new file mode 100644 index 0000000..9113caf --- /dev/null +++ b/e-rights-front-office/src/main/resources/application-test.yml @@ -0,0 +1,159 @@ +############ +# e-RIGHTS # +############ + +application: + protocol: HTTPS + host-name: intragate.test.ec.europa.eu + test-mailbox: Martial-Franck.TCHEPGANG@ext.eeas.europa.eu + proxy-host: ps-lux-usr.cec.eu.int + proxy-port: 8012 + proxy-user: a00jqdke + proxy-pass: JkUjhA789ghL + gosselin-host: https://eeas.gosselingroup.eu + gosselin-path: /EEAS/rateTEST.php + gosselin-api-key: 60d8def0a9f5bebd66c78825ec14dd5e + gosselin-api-id: RequestorEEAS + gosselin-active: true + environment: TEST + +########## +# Spring # +########## + +management: + endpoints: + web: + exposure: + include: '*' + +############### +# Ananke Core # +############### + +base: + money: + currencies: + - code: STN + default-fraction-digits: 2 + numeric-code: 930 + - code: UYW + default-fraction-digits: 4 + numeric-code: 927 + +connector: + http: + secure: + socket-timeout: + value: 10 + time-unit: SECONDS + connection-timeout: + value: 10 + time-unit: SECONDS + connection-pool: + max-size: 20 + max-size-per-route: 20 + time-to-live: + value: 5 + time-unit: SECONDS +data: + jpa: + show-sql: false + format-sql: false + connection-pool: + min-size: 10 + max-size: 20 + +security: + api: + http: + authentication: + managed: + assurance-level: LOW + accept-strengths: PASSWORD + server: + protocol: ${application.protocol} + host-name: ${application.host-name} + ssl-port: 443 + security-headers: + content-security-policy: + policy-directives: default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://uap.dev.eeas.europa.eu; style-src 'self' 'unsafe-inline' ; img-src * data:; font-src 'self' data:; connect-src 'self' https://uap.dev.eeas.europa.eu; media-src 'none'; object-src 'self'; child-src 'self'; frame-ancestors 'self'; form-action 'self' webgate.ec.europa.eu:* ecas.cc.cec.eu.int:* intragate.test.ec.europa.eu:*; upgrade-insecure-requests; block-all-mixed-content; sandbox allow-downloads allow-forms allow-same-origin allow-scripts allow-popups allow-modals; base-uri 'self'; manifest-src 'self'; plugin-types application/pdf + + eu-login-server: + direct: + host-name: webgate.acceptance.ec.europa.eu + one-way-ssl-port: 443 + ticket: + proxy: + requestor: + type: FIXED + fixed: + source: BASE + +################ +# Ananke Tools # +################ + +hermes-connector: + environment: TEST + ecas: + environment: ACCEPTANCE + + +file-management: + file-system: + path: + root-folder: /ec/local/weblogic/app/files/file-management + + + +# ------------------------------------------------- + +# e-DMS REST requests settings: All fields mandatory if enabled = true +edms: + enabled: true + + # Unused: We use "application: mailbox:" in application.yml + message-from: Unused + + # From the generated JWKS keys take kid value PublicJWKS + eulogin-oidc-jwk-kid: encrypted:WUPgynZQ/lc/1FY0bCX+KNEZnqZsYU70lzktos0oLbfvmNJnpeVpSXjT637Z2fK4XHMlFc0RkV9A6xGjKIPeNEu/aNZCA7Bw2PKMzizAGOQs4L5wAzGkTK4xPiZMRKaokFVUZItkN585HtLfn7VOsAQENIzmebTHSB2pE0ux4k3xNEvUPSomVhZwNqjv9NtEZmyJdZorQJKneX8eZJ8cbIHp4ij4KV10b2d8cvQXbky2urcccKmiiOe1FGoZuGDlASSuSp6awBQ71YsCatp24LU6OCccmJVmOQQmkPeaZtNOk4VhKG/raRJQMNjZCCeB2XB1ZY3GFTe3+yB5pfyh/3VRcyxvqB7i66SmpGBOeNxpMhfsK7+O2o72AW/JhIJpZX0Yyo9QbwLM69H7Ar80kCN86drch0+xpzSQB/0InxCSGoVK3ywSQNFAIIaYl9N4H41vyli7L/CQHyALNPqSx8z9kkEsOHw4ZydAzRas19jW0/fqVCzLXUqb+lcZNEBrpnW8SxRIpbw14V1yZU2cCHJ5MgPt6JTcBxtrsNcIZvWYJE5nCQYWnXmILpMmU307BVLPKwfqx1sg3YcZczzTL9y4+At0iFlOuexql/IQt1gZ5Q11hwJkaETq16yq1A1D6+FvQBBQyn25Qjm5EPYyCGfwPdueVsof0U93rqaRkng=|ZDG30WWIWJt2RoJhVd2DV6vXaUtPtExKChga+cDF9sXzTv/szytMzbN2/NibH8ovARZo4IvHiaVQNf2E2iBMJQ== + + # From the generated JWKS keys take, kid and x values from PublicJWKS, and d value from Private JWKS + eulogin-oidc-private-key: encrypted:faXzxbncs+uFRc2czJpb5NGAAomkttkGzPlq5sfsyklxy9AAtECgGjb2Mr7j20ApW/ejuI2DKz+qIrWkJ9MmCR6+xtZALuzzY/v3EAncnXZJkAm+YU3W+s3znQ9lZ5gEDSH+sKPFIvSkeZx4+Y1u4XwvwSbgLdxCvni2urVBGIqtg91XjijXnW9frZtD5foeFwRmXRKXRYr9gdM7Sti4o7LQagwJne+6J4WwD3FSRQt78SFukcbcYFAXpD66vkVsWwXh5uAgZBrcd1IevVW0I1jpMiJr0TwCFfOdBAilaQWu+IdpIPHX5ckd6qdLgem+2h/9n4qwOaUT1WrejudRROnL2Khrb7PUEN1dnmIwivwzr3yiZp1h/9mlz7za7WpBETlINfiF+jv5VWU0dpaFL8gdu9R8i7yOxkY2PWGkG3jMPmADJ1czOTtUDD2ZVL5lT7H0L91yPB3DiPgAZRJC6DOmbsp72fPIae8WIWkNxhdUKoaqZ00A1yg9XkJrIkAhQyvDrgxpsImUVsNs9skjPoY49qLaXctdbfoUP5aT2f+FG6+GJPMhznDtAPjQ4YqtmrQT70b4TlwHsUubM0pgd1IxRmVxxNeaPReSRa9GQe8UiS/HnJo6H0l1MUHCsMqqtLiWzi8eESwIKKmaa5Gp87VLIUPY74oCZTVFyn72C6U=|weg0CPlamml2ysvAolv/oJcnEQbkOriwdlNnYfwwRJ/Oug8LT8NtrgFIzL7vogbapKdPS+lG0yW7HLRviEKCCA== + + # OIDC Client ID provided by DIGIT IAM BO that was requested for the specific Job Account + eulogin-oidc-client-id: encrypted:huQAI8F4mbg+uJJEkhGXaOFQlF/XJS9kXQ3FaReUETatEFlkIcFvohqNpOvJhExpNG0jy9NuJkZI8N+pPyWiAcag2I92C0aKxrczgK5tVm0Gj43FSIuEAf/2HXxQW3DS8aPKtTJ2u1mambVbs7CzZaoRSWo+RHfXZhQloqMK6czOnSuc7aIuvafar5PQTtUicG1IAKn7uDUVFFyxozXP+l3qH3B2Bac5K0YUPcgi8+/zvHUZ/H+hxdZs+KaXWB8ItDCuhbvyvPwA6kjkQcJl86gBiCkBbVSX56NIT+8pXdYxl9wVH4N9sLf85lWY9e+9DIi51dAvsJCNwyNvvq3AcpO7IQHr1kDeStfEH9maeCakuO4BqxTE9iqcO0n2MO5V/XB2xVAihcQF2YE0utSFNLylstkLRQZXtLqGIMOIpX8xaAMUM9GUxGkpkusPHYWVek/cKU135yOPdHgbCcROLLu9QlnkgFmqfvOH3m5ZCFfVAM52+iuXGIV0isZJSSp4xh3uwJV8lzpAmBtRxdBIxCy7cGLaX1MKWsWpMPPCwDe8n3qwbo2qTim8hbqVtOVrbVSIa4Ju9iGDLBwuo/HKOTCo3NyfDt426XEzPLfrjmVXMLxkZsILq/LpbRxDYCz4GtGLUIo2ppEQ49ZdmxW6Zc57J/ifNbmA11X0g5pwamU=|Gh46ZtreuugTBJsWJ4K77Opk2lLPpuHmw09gNfEGCKiYBphs4GHfYG61yIpUimcsZOeI626q85R4Qk1arfwNLw== + + eulogin-oidc-token-endpoint: https://ecas.acceptance.ec.europa.eu/cas/oauth2/token + + # Rest config (previously with "rest:", now with prefix "rest-") + # ------------------------------------- + rest-pop-token-provider: edmsLoginPoPTokenProvider + # rest-send-messages-url: https://intragate.test.ec.europa.eu/e-dms-rest + rest-send-messages-url: https://webgate.acceptance.ec.testa.eu/e-dms-rest + # OIDC Client ID - It should be provided by the e-DMS team or the Deployment Manager + rest-edms-client-id: encrypted:fu033SWVy3PIi+iDMq35LLFNXnsIe5YyqFKiCVxOXCILwYuMXG0nkhFO5BnFTVzhnM5Cf70PLJ16CivuLNNJpESD3IxRKok8RqIz6pwu+743ZhGVcN8MTOZZnSWA7uLPK25p/RMz2nm4CSkBKg1BoosMgrTEipm8qxx4LfEt+MxDtr+rqoSt/y/dVk9CzgNY59I3dPPHUGyskttaTOVctupPtn/uAjeGKKmBKhUP+8aSYqYLqTHAuW+f7NHWoKZyx2oqwtyPz7ey0rxcIkijUDDUQgC9c4FisfyEs9NQL0WNevCWKmwEGoGCS9C6r3/8TXoe94S2if2ZLxrfzzTGa9DLuLPv371UL7I8cOuC3AlRYgX837E34HzqtazucpmKlDO+2s6QBDb6PYxIw4HzKp6J2BRTvbc766gRzYRa9FfBIk2XKOOOLAh2vikTqCZhcM1bL4e8WcmMS/j8My8BgUCoCHaQhti0LQb5TjkqH7h0vE7hfYemigfKDrpQEfNBXaSIUeBGHwq3Uc0R3+cuiPG/YUVu/ySzzN4iNWFjvf6FNd+3RYcmPickkqFtkKP3APHxFO5ZG9CuS2+Z1xp80jKzR+hxPUl3wSn8CtFjWd0LgQj7jcSJoPRam9Qhf1rFNJmgnSybWKIxsXrFyVwXRdNFTO/8J2v6JRUVicDBLls=|dHmhpHMJsWeq+QB/z2H7Iv0rcj6Ye2rfI0Vo/As99rbOUoDvF5e8Z5Ro/qY3JWrI2JCK6hK1NEufRBUrWxr5Fw== + # + # Other fields used in the notification request sent to e-DMS + # + batch-id: BATCH_999 + client-division-id: CLIENT_DIVISION_999 + application-id: E-RIGHTS + # In case of issues when sending notification, the number of days after which the message will not be sent anyway. + notification-expiration-days: 28 + + + +################# +# Skyscanner WS # +################# + +skyscanner: + create-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/create + poll-url: https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/poll/%s + api-key: encrypted:W6EC+V//Rusc6MCN3+c3RxMqBbQnSq8sVvH8ewal84CyaVIbWGRgzukwVlb9KIuxk/uVW08TFlyUc4TM8zimQ0EKdXg/FiY3GagItFUDfitED91lFO+NIvT2yde5TcqtkI9ig4krkfcelYzFQdO2Dxg9sUck8w4X/vBxRX38EwMK2aS098E2n7F1PraMUcx6BuAsqKovbCer3Y2+mIsAr7MetGhZsCIDaV+MADnoxOTFw2WkLoIpq6DynvurBnvlwO/OTz5lyve/vr6BB/+ic84iuJqWdM/Z5r11Zgbr4Mcc+a6KJhxbmS36KDDj6boKi9RZh+ZeipJeYk4nxSly9LGftR4RA3aQln9ZRjOP+yp5mcc8UwYjDNmpN63Ioqd6GJcK2Nr9AisoxtNoRQXTmaM+lTAROOxFD1y6n7y7Q1y1pAuBodqfuJimGN+87YCUjSCOLuwqp+DV5uaq+AWw0R8YHrZ6NTdVQho7nlREwGsZZgsQayFK8MGyEDscA0vU2l39KIGUnBWFFXwF+F+kP0867RjBQz5IlFOZLjHFBk9BXm50dcV97L2BhNSdUBzOlFyEQGjUrtF1FvHH8Eo+DqOVLWCarRXhM1ME9o8esqdEAQGILj11IpuPcOFVjc/v5mWYWdy65usXgY3bM/qEFF4TRXMAsfB/CIq1DBbDQv0=|6aqvplbtGeQbtDk8s9uZg4vcMna+VmZ5hzVXK7SjTAuYpKyp37nhONWTzZ2p8D6CmA1nSmkHdIJRRFXyn3lL0A== + + + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/resources/application.yml b/e-rights-front-office/src/main/resources/application.yml new file mode 100644 index 0000000..5a917e4 --- /dev/null +++ b/e-rights-front-office/src/main/resources/application.yml @@ -0,0 +1,290 @@ +############ +# e-RIGHTS # +############ + +application: + context-path: /erights + name: ${project.artifactId} + full-name: ${project.name} + version: ${project.version} + build: + date-time: ${build-date-time} + id: ${build-id} + mailbox: automated-notifications@nomail.ec.europa.eu + +########## +# Spring # +########## +spring: + application: + name: ${application.name} + web: + resources: + add-mappings: false + mvc: + pathmatch: + matching-strategy: ant_path_matcher + +logging: + file: + name: ./logs/${application.name} + +############### +# Ananke Core # +############### + + +base: + mapping: + bean: + enable: true + auto-mapping: false + class-map-builder-packages-to-scan: + - eu.europa.eeas.erights.common.api.http.rest.mapping.classmapbuilder + - eu.europa.eeas.erights.common.service.data.mapping.classmapbuilder + - eu.europa.eeas.erights.frontoffice.api.http.rest.mapping.classmapbuilder + pass-through-types: + - org.javamoney.moneta.Money + - java.util.UUID + jaxb: + enable: true + json: + enable: true + inclusions: + - NON_EMPTY + serialization-features: + WRITE_DATES_AS_TIMESTAMPS: false + deserialization-features: + FAIL_ON_UNKNOWN_PROPERTIES: false + validation: + enable-entity-validation: true + user: + system: + enabled: true + +api: + http: + error-path: /ananke-error + default-error-mime-type: application/json + mvc: + error-view-resolver: + view-prefix: /ananke/v2/jsp/views/error/ + mime-type-exception-handler: + mime-types: + - text/html + rest: + mime-type-exception-handler: + mime-types: + - application/json +audit: + revision: + actor-type: eu.europa.eeas.ananke.core.audit.actor.AuditRevisionActor + +connector: + http: + secure: + enable: true + x509-hostname-verifier: + type: NOOP + modules: + rest: + enable: false + enable-mock: false + soap: + enable: true + enable-mock: false + +# Database separation: eRights_front (Front Office) +data: + jpa: + data-source-jndi-name: jdbc/eRights_front + enable-lazy-load-no-trans: true + dialect: eu.europa.eeas.ananke.core.data.provider.jpa.dialect.CustomOracle10gDialect + connection-provider: org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl + bytecode-provider: bytebuddy + packages-to-scan: + - eu.europa.eeas.erights.common.data.jpa.entity + connection-pool: + max-statements: 0 + timeout: + value: 1 + time-unit: SECONDS + idle-test-period: + value: 5 + time-unit: SECONDS + second-level-cache: + enable: false + +locale: + api: + http: + enable-rest-apis: true + skip-localization-header-for-urls: + - /ananke/web/* + - /webjars/* + - /static/* + - '*.do' + default-language: en + default-country: GB + default-zone-id: Europe/Brussels + supported-locales: + - en-GB + +security: + api: + http: + authentication: + managed: + proxy-ticket-callback-url: /proxy-ticket-receptor + user-details: true + unmanaged: + retrieve-additional-data: false + retrieve-granted-authorities: false + retrieve-preferences: false + cookie: + regular: + - menu-appearance + csrf: + enable: true + server: + context-path: ${application.context-path} + system-user: + data-provider: + type: FIXED + fixed: + uid: SYSTEM + user-id: -1234 + last-name: SYSTEM + first-name: + granted-authorities-retriever: + type: FIXED + fixed: + - TEST_AUTHORITY + provider: + type: CACHED + ticket: + proxy: + requestor: + enable: true + +################ +# Ananke Tools # +################ + +enhanced-language-bundle: + language-bundles-data: + - base-name: common.messages.e-rights + main: true + - base-name: ananke.messages.core + - base-name: ananke.messages.on-demand.act-on-behalf + - base-name: ananke.messages.on-demand.breadcrumbs + agents: + - type: CLASS_PATH_RESOURCE + class-path-resource: + types: + - YAML + enable-rest-apis: true + +hermes-connector: + application-id: SECp4iO1zq + #job-user: + +scheduler: + job-store-type: MEMORY + +security-sentry: + user-granted-authorities-retriever: + type: JPA + jpa: + repository-suppliers: + user-permission: EMBEDDED + +state-machine: + persistent-storage: + type: DATABASE + +user-management: + user-additional-data-plugin: + provider-type: PERSON + allow-missing-people: true + user-preferences-plugin: + provider-type: JPA + +web: + layout: + version: VERSION_2 + v2: + contact-us-email-address : it-helpdesk@eeas.europa.eu + breadcrumbs: + enable: true + show-icons: false + rest-controllers: + enable-person: true + sitemesh: + decorator-paths: + - content-path: '*.do*' + decorator-paths: + - /ananke/%LAYOUT_VERSION%/jsp/layout/layout.jsp + excluded-paths: + - /logout + - '*.js' + - '*.css' + include-error-pages: true + view-mapping-handler: + head-addon: /WEB-INF/jsp/head-addon.jsp + welcome: welcome + +file-management: + max-file-size: 10MB + cache-storage: + type: FILE_SYSTEM + temporary-storage: + type: FILE_SYSTEM + persistent-storage: + default-type: DATABASE + types: + - DATABASE + supported-formats: + - content-type: application/pdf + extensions: + - pdf + - content-type: application/rtf + extensions: + - rtf + - content-type: application/x-tika-msoffice + extensions: + - doc + - ppt + - xls + - msg + - content-type: application/x-tika-ooxml + extensions: + - docx + - pptx + - xlsx + - content-type: application/zip + extensions: + - zip + - content-type: image/bmp + extensions: + - bmp + - jpeg + - content-type: image/gif + extensions: + - gif + - content-type: image/jpeg + extensions: + - jpg + - content-type: image/png + extensions: + - png + - content-type: text/plain + extensions: + - txt + + +server: + servlet: + session: + cookie: + secure: true \ No newline at end of file diff --git a/e-rights-front-office/src/main/resources/swagger/internal/e-rights-front-office.yml b/e-rights-front-office/src/main/resources/swagger/internal/e-rights-front-office.yml new file mode 100644 index 0000000..28a7eaf --- /dev/null +++ b/e-rights-front-office/src/main/resources/swagger/internal/e-rights-front-office.yml @@ -0,0 +1,133 @@ +swagger: '2.0' + +info: + description: EEAS e-RIGHTS Front Office + version: 1.0.0 + title: EEAS e-RIGHTS Front Office + termsOfService: 'http://swagger.io/terms/' + contact: + email: Silviu.ILIE@ext.eeas.europa.eu + +host: intragate.test.ec.europa.eu + +tags: + - name: e-RIGHTS Front Office + description: e-RIGHTS Front Office + +schemes: + - https + +basePath: /internal/api + +paths: + + /movement-files/{id}: + get: + tags: + - e-RIGHTS Common + operationId: getMovementFile + produces: + - application/json + parameters: + - in: path + name: id + required: true + type: integer + format: int64 + responses: + '200': + description: Successful operation + schema: + type: string + x-nt-type: MovementFile + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + + /report/movement-files: + get: + tags: + - e-RIGHTS Common + summary: get report of movement files + operationId: getReportMovementFiles + description: get report of movement files + produces: + - application/json + responses: + '201': + description: Successful operation + schema: + type: array + items: + type: string + x-nt-type: VReportMovementFile + '400': + description: Malformed syntax or a bad query + '401': + description: Permission Denied + '403': + description: Authentication failure + '500': + description: Internal server error + + /allowances: + get: + tags: + - e-RIGHTS Allowances + operationId: getAllowancesFrontOffice + produces: + - application/json + responses: + '200': + description: Successful operation + schema: + type: array + items: + $ref: '#/definitions/VAllowances' + '401': + description: Authentication failure + '403': + description: Not authorized + '404': + description: Not found + /vReportPostingAllowances: + get: + tags: + - e-RIGHTS Posting Allowances Request + summary: lists Posting Allowances request for grid + operationId: getVReportPostingAllowances + description: getVReportPostingAllowances + parameters: + - in: query + name: personId + required: false + type: integer + format: int64 + description: Person who has Posting Allowances + - in: query + name: year + required: false + type: integer + format: int32 + description: Year of Posting Alowances + produces: + - application/json + responses: + '201': + description: Successful operation + schema: + type: array + items: + type: string + x-nt-type: VReportPostingAllowance + '400': + description: Malformed syntax or a bad query + '401': + description: Permission Denied + '403': + description: Authentication failure + '500': + description: Internal server error diff --git a/e-rights-front-office/src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml b/e-rights-front-office/src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml new file mode 100644 index 0000000..8462938 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/WEB-INF/jsp/head-addon.jsp b/e-rights-front-office/src/main/webapp/WEB-INF/jsp/head-addon.jsp new file mode 100644 index 0000000..8c2bdd8 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/WEB-INF/jsp/head-addon.jsp @@ -0,0 +1,9 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/WEB-INF/jsp/list/list.file.jsp b/e-rights-front-office/src/main/webapp/WEB-INF/jsp/list/list.file.jsp new file mode 100644 index 0000000..0fbb0d4 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/WEB-INF/jsp/list/list.file.jsp @@ -0,0 +1,22 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + <%-- + + --%> + + + + +
    +
    +
    + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/WEB-INF/jsp/movement-file/edit/file.jsp b/e-rights-front-office/src/main/webapp/WEB-INF/jsp/movement-file/edit/file.jsp new file mode 100644 index 0000000..bb7207e --- /dev/null +++ b/e-rights-front-office/src/main/webapp/WEB-INF/jsp/movement-file/edit/file.jsp @@ -0,0 +1,41 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + + + + + + + + + + + + + <%-- --%> + + + + + + +
    + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/WEB-INF/jsp/reports/posting.allowances.jsp b/e-rights-front-office/src/main/webapp/WEB-INF/jsp/reports/posting.allowances.jsp new file mode 100644 index 0000000..4885198 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/WEB-INF/jsp/reports/posting.allowances.jsp @@ -0,0 +1,23 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + <%@ include file="/static/templates/posting-allowances/posting.allowances.html" %> + + + + + +
    +
    +
    + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/WEB-INF/jsp/request/allowances.jsp b/e-rights-front-office/src/main/webapp/WEB-INF/jsp/request/allowances.jsp new file mode 100644 index 0000000..9272ce0 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/WEB-INF/jsp/request/allowances.jsp @@ -0,0 +1,23 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + <%@ include file="/static/templates/request/allowances.html" %> + + + + + +
    +
    +
    + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/WEB-INF/jsp/request/edit.adv.rem.request.jsp b/e-rights-front-office/src/main/webapp/WEB-INF/jsp/request/edit.adv.rem.request.jsp new file mode 100644 index 0000000..aed47b9 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/WEB-INF/jsp/request/edit.adv.rem.request.jsp @@ -0,0 +1,23 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + <%-- --%> + + + + + +
    + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/WEB-INF/jsp/request/edit.tud.request.jsp b/e-rights-front-office/src/main/webapp/WEB-INF/jsp/request/edit.tud.request.jsp new file mode 100644 index 0000000..f8417b1 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/WEB-INF/jsp/request/edit.tud.request.jsp @@ -0,0 +1,22 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + + + + + + <%-- --%> + + + + + +
    + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/WEB-INF/jsp/welcome.jsp b/e-rights-front-office/src/main/webapp/WEB-INF/jsp/welcome.jsp new file mode 100644 index 0000000..1aa4e37 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/WEB-INF/jsp/welcome.jsp @@ -0,0 +1,14 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + + <%@ include file="/static/templates/welcome.html" %> + + + +
    +
    + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/WEB-INF/web.xml b/e-rights-front-office/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..f084625 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,63 @@ + + + + e-RIGHTS-Front-Office + + + + #public# + /common/web/* + + /ananke-error + /ananke/v2/web/* + /proxy-ticket-receptor + /static/* + /webjars/* + + + + + + #secure_managed# + /internal/api/* + + *.do + /actuator/* + /ananke-core/* + /ananke-tools/* + /logout + / + #EMPTY# + + + + * + + + NONE + + + + + Syntetic role that indicates if the principal is authenticated + authenticated + + + + eu.cec.digit.ecas.client.filter.externalConfigurationKey + AnankeCoreSecurityEULoginConfiguration + + + + 60 + + + + welcome.do + + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/WEB-INF/weblogic.xml b/e-rights-front-office/src/main/webapp/WEB-INF/weblogic.xml new file mode 100644 index 0000000..13b0e34 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/WEB-INF/weblogic.xml @@ -0,0 +1,51 @@ + + + + erights + + + + + /erights + true + + + + + com.fasterxml.jackson.* + javax.persistence.* + javax.validation.* + org.hibernate.* + org.joda.time.* + org.slf4j.* + org.springframework.* + com.google.crypto.* + com.nimbusds.* + + + + + + + authenticated + authenticated + + + + 5 + true + + + + true + + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/static/scripts/list/list.file.js b/e-rights-front-office/src/main/webapp/static/scripts/list/list.file.js new file mode 100644 index 0000000..bc04112 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/scripts/list/list.file.js @@ -0,0 +1,444 @@ +class Model { + + constructor() { + this.urls = { + action: { + view: $a.utils.url(null, "/movement-files/view.do") + } + }; + + this._restCalls = { + list: new $a.GetRestCall(null, "/internal/api/report/movement-files"), + saveUserPreference: new $a.PostRestCall(null, "/internal/api/user-preferences"), + getUserPreferences: new $a.GetRestCall(null, "/internal/api/user-preferences"), + permissions: new $a.GetRestCall(null, "/internal/api/permissions") + }; + + // Default filter: Empty for Front-office + var iniFilter = { + logic: "or", + filters: [] + }; + // Check if there is filter in session: + var checkFilter = sessionStorage.getItem("e-rights_mf_list_filter"); + if (checkFilter) { + iniFilter = JSON.parse(checkFilter); + iniFilter.filters.forEach(f => { + if (f.field === "startDateFuture" || f.field === 'endDateFuture') { + f.value = new Date(f.value); + } + }) + } + + this.dataSource = new kendo.data.DataSource({ + pageSize: 25, + transport: { + read: this._restCalls.list.settings() + }, + dataType: "json", + schema: { + model: { + fields: { + id: { + type: "number" + }, + fileId: { + type: "string" + }, + startDateFuture: { + type: "date" + }, + endDateFuture: { + type: "date" + } + + } + } + }, + serverFiltering: false, + serverPaging: false, + serverSorting: false, + sort: { + field: "lastName", + dir: "asc" + }, + // Initial filter, possibly found in sessionStorage + filter: iniFilter + }); + + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.controller._onLoadData); + dataPoolExecutor.add("permissions", $al.model._restCalls.permissions); + dataPoolExecutor.add("userPreferences", $al.model._restCalls.getUserPreferences, null, {pagePath: "fo/list/movement-files.do"}); + dataPoolExecutor.run(); + } + +} + +class View { + + constructor() { + this._elements = new $a.DataContainer("view"); + this._templates = new $a.DataContainer("view"); + + this._templates.node("content").data(new $a.KendoTemplateData()); + this._templates.node("actions").data(new $a.KendoTemplateData()); + this._templates.node("actions").node("edit").data(new $a.KendoTemplateData()); + + this._templates.node("gridStatus").data(new $a.KendoTemplateData()); + this._elements.data(new $a.KendoElementData(), "grid"); + + this._filter_values = { + statusDS: [ + { status: $movementFileStatus.PENDING.code, label: $movementFileStatus.PENDING.label + }, { status: $movementFileStatus.DRAFT.code, label: $movementFileStatus.DRAFT.label + }, { status: $movementFileStatus.CONFIRMED.code, label: $movementFileStatus.CONFIRMED.label + }, { status: $movementFileStatus.WITHDRAWN.code, label: $movementFileStatus.WITHDRAWN.label + }, { status: $movementFileStatus.ONGOING.code, label: $movementFileStatus.ONGOING.label + }, { status: $movementFileStatus.COMPLETED.code, label: $movementFileStatus.COMPLETED.label + }, { status: $movementFileStatus.CANCELLED.code, label: $movementFileStatus.CANCELLED.label + } ], + + movementTypeDS: [{movementType: "DEL-DEL EU"}, + {movementType: "DEL-Other"}, {movementType: "DEL-HQ"}, + {movementType: "PoR-DEL"}, {movementType: "HQ-DEL"}, {movementType: "DEL-PoOrg"}, + {movementType: "HQ-Other"}, + {movementType: "DEL EU-DEL"}, + {movementType: "DEL-DEL"}, + {movementType: "CRISIS"}] + + }; + + this._filter_options = { + operators: { + string: { + contains: "Contains", + startswith: "Starts With", + endswith: "Ends With", + eq: "Is Equal To", + doesnotcontain: "Doesn't contain" + } + + } + } + // For the year, use current year and 10 years before: 2021, 2020, 2019... 2011 + var currYear = new Date().getFullYear() + 2; + var ds = []; + for (var y = currYear; y >= (currYear - 10); y--) { + ds.push({movementYear: y, label: ("" + y)}); + } + this._filter_values.movementYearDS = ds; + + } + + render(userPreference) { + + var userOptions = null; + if (userPreference.preferences) { + userOptions = JSON.parse(userPreference.preferences); + } + + $al.view._templates.content.data.compile(); + + // Deafult definiton of columns. Next they are updated with saved user preferences. + var gridColumns = [ + { + field: "fileId", title: "File ID", width: "200px", hidden: true, + filterable: $al.view._filter_options + }, + { + field: "lastName", title: "Last name", attributes: {"class": "font-weight-medium"}, + filterable: $al.view._filter_options + }, + { + field: "firstName", title: "First name", attributes: {"class": "font-weight-medium"}, + filterable: $al.view._filter_options + }, + { + field: "status", title: "Status", width: "124px", attributes: {style: "text-overflow: initial;"}, + template: '#=status#', + filterable: { + multi: true, + // dataSource: $al.model.filterStatusDataSource + // TODO : with datasource does not work when save optiones + dataSource: $al.view._filter_values.statusDS + } + }, + { + field: "startDateFuture", title: "Starting", width: "120px", format: "{0:d}" // format: "{0:MMM dd, yyyy}" + }, + { + field: "movementFrom", + title: "From - City, Country (Current)", + headerTemplate: 'From info', + filterable: $al.view._filter_options + }, + { + field: "movementTo", + title: "To - City, Country (Future)", + headerTemplate: 'To info', + filterable: $al.view._filter_options + }, + { + field: "budgetLineFuture", + title: "Commitment Position", + width: "120px", + attributes: {style: "text-overflow: initial;"}, + template: '#=data.budgetLineFuture?data.budgetLineFuture:""#', + filterable: $al.view._filter_options + + }, + { + field: "movementYear", + title: "Year", + width: "120px", + attributes: {style: "text-overflow: initial;"}, + template: '#=data.movementYear?data.movementYear:""#', + filterable: { + multi: true, + dataSource: $al.view._filter_values.movementYearDS + }, + hidden: true + + }, + { + hidden: true, + field: "movementType", + title: "Type", + width: "120px", + attributes: {style: "text-overflow: initial;"}, + template: '#=data.movementType?data.movementType:""#', + filterable: { + multi: true, + dataSource: $al.view._filter_values.movementTypeDS + } + }, + { + field: "perId", title: "PER ID", width: "110px", hidden: true, + filterable: $al.view._filter_options + }, + { + field: "futureAssignment", title: "Job No.", width: "110px", hidden: true, + filterable: $al.view._filter_options + }, + { + field: "endDateFuture", title: "Ending", hidden: true, format: "{0:d}" // format: "{0:MMM dd, yyyy}" + }, + { + field: "jobToFamPosting", + title: "Family Posting", + hidden: true, + width: "15%", + filterable: { + multi: true, + search: false, + }, + template: "#= jobToFamPosting #", + minResizableWidth: 100 + }, + { + headerTemplate: "", + id: "ColumnMenu", + command: [ + { + name: "edit", + text: "Edit",//$al.controller._languageBundle.actions.edit, + // JSON.stringify() cannot serialize function (the template function) + template: "", + } + ], + attributes: {style: "white-space: nowrap; position; relative"}, + width: "50px", + overflow: "never" + } + ]; + + // Apply saved user preferences + $al.view._applyUserPreferences(gridColumns, userOptions); + + $al.view._elements.grid.element.kendoGrid({ + dataSource: $al.model.dataSource, + pageable: { + pageSize: 25, + pageSizes: [25, 50, 100, 500] + }, + sortable: true, + resizable: true, + scrollable: true, + columnMenu: false, + filterable: { + extra: false, + search: true + }, + excel: { + fileName: "MovementFiles.xlsx", + proxyURL: $al.model._restCalls.list, + filterable: true, + allPages: true + }, + columns: gridColumns, + + filter: function (e) { + // Special treatment for some filter... + }, + + filterMenuOpen: function (e) { + // Special treatment for some filter... + }, + + dataBound: function (e) { + // Data updated, save filter + var currentFilter = e.sender.dataSource.filter(); + if (!currentFilter) { + currentFilter = {logic: 'and', filters: []}; + } + var filterString = JSON.stringify(currentFilter); + sessionStorage.setItem("e-rights_mf_list_filter", filterString); + + $al.view._updateClearFilterButton(); + } + }); + + $al.view._elements.grid.component = "kendoGrid"; + + $("#columnMenuButton").kendoColumnMenu({ + filterable: false, + sortable: false, + dataSource: $al.view._elements.grid.element.data("kendoGrid").dataSource, + //dataSource: $al.model.dataSource, + columns: true, + owner: $al.view._elements.grid.element.data("kendoGrid"), + }); + + // save the user preferences when a column action is performed + $al.view._elements.grid.component.bind("columnShow", $al.controller._saveUserPreference); + $al.view._elements.grid.component.bind("columnHide", $al.controller._saveUserPreference); + + // Make the row clickable since there is only 1 button. + $("#view-grid").on("click", "tbody tr", function (e) { + $al.controller.goToEditMovementFile(this); + }); + + // Everything rendered: Update Clear Filter Button + $al.view._updateClearFilterButton(); + } + + _updateClearFilterButton() { + var currentFilter = $("#view-grid").data("kendoGrid").dataSource.filter(); + var emptyFilter = !currentFilter || currentFilter.filters.length == 0; + $("#clear_mfile_list_filters_button").css("display", emptyFilter ? "none" : "inline-block"); + } + + _getUserPreferencesToSave(grid_component) { + + var all_options = grid_component.getOptions(); + var resp = {}; + var hidden = []; + + all_options.columns.forEach(column => { + if (column.hidden) { + hidden.push(column.field); + } + }); + resp.hiddenColumns = hidden; + return resp; + } + + _applyUserPreferences(gridColumns, userPreferences) { + + if (!userPreferences || !Array.isArray(userPreferences.hiddenColumns)) { + // Nothing to do + return; + } + + var hiddenCols = userPreferences.hiddenColumns; + + gridColumns.forEach(column => { + if (hiddenCols.includes(column.field)) { + column.hidden = true; + } else { + column.hidden = false; + } + }); + } + +} + + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.movement_files.list", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + $al.model.init(); + } + + _onLoadData(data) { + $al.view.render(data.get("userPreferences").data); + + $al.controller._bindPermissions(data.get("permissions").data); + + $al.notifyOnReadyMvc(); + } + + _bindPermissions(permissions) { + $al.model.permissions = permissions; + + var viewModel = new kendo.data.Model.define({ + canCreate: permissions.canCreate, + canExport: permissions.canExport + }); + + kendo.bind($al.view._templates.content.data.wrapperSelector, new viewModel({})); + } + + _getUserPreferences() { + $al.model._restCalls.getUserPreferences.execute(null, {pagePath: "fo/list/movement-files.do"}, $al.controller._onLoadUserPreferences) + } + + _saveUserPreference(e) { + let options = $al.view._getUserPreferencesToSave($al.view._elements.grid.component); + + let optionsJson = kendo.stringify(options); + let userPref = { + pagePath: "fo/list/movement-files.do", + preferences: optionsJson + }; + + $al.model._restCalls.saveUserPreference.execute(null, userPref, null); + } + + _createMovementFile(source) { + $al.model._create(); + } + + _exportMovementFiles(source) { + $al.view._elements.grid.component.saveAsExcel(); + } + + goToEditMovementFile(source) { + var item = $al.view._elements.grid.component.dataItem($(source).closest("tr")); + + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.view, null, {id: item.id})); + } + + _clearAllFilters() { + // Reset filter, this will trigger the dataBound event + var emptyFilter = {logic: 'and', filters: []}; + $("#view-grid").data("kendoGrid").dataSource.filter(emptyFilter); + } + +} + +getSessionStorageID(); + +$al.mvc(Model, View, Controller, true); \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/static/scripts/movement-file/edit/file.declaration.js b/e-rights-front-office/src/main/webapp/static/scripts/movement-file/edit/file.declaration.js new file mode 100644 index 0000000..9053939 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/scripts/movement-file/edit/file.declaration.js @@ -0,0 +1,969 @@ +class DeclarationModel { + + constructor() { + this._restCalls = { + getDeclaration: new $a.GetRestCall(null, "/internal/api/declarations"), + getBankInfo: new $a.GetRestCall(null, "/internal/api/bank-accounts"), + updateDeclaration: new $a.PutRestCall(null, "/internal/api/declarations"), + getEntitlementTypes: new $a.GetRestCall(null, "/internal/api/entitlement-types"), + countries: new $a.GetRestCall(null, "/internal/api/countries"), + cities: new $a.GetRestCall(null, "/internal/api/countries/{countryCode}/cities"), + + refreshDeclarationPersons: new $a.GetRestCall(null, "/internal/api/declaration-persons-eligibility") + }; + this.urls = { + action: { + view: $a.utils.url(null, "/movement-files/view.do"), + + } + }; + } + + init(dataPoolExecutor) { + dataPoolExecutor.add("declaration", $al.model.declaration._restCalls.getDeclaration, null, {movementFileId: $fileId}); + //dataPoolExecutor.add("bankInfo", $al.model.declaration._restCalls.getBankInfo, null, {personId: $fileId}); + dataPoolExecutor.add("entitlementTypes", $al.model.declaration._restCalls.getEntitlementTypes, null, {movementFileId: $fileId}); + + dataPoolExecutor.add("countries", $al.model.declaration._restCalls.countries, null, null); + + + } + + refreshDeclaration() { + if ($al.model.permissions.canConsultEntitlements || $al.model.permissions.isOwner) { + $al.model.declaration._restCalls.getDeclaration.execute(null, {movementFileId: $fileId}, $al.model.declaration.onDeclarationRetrieved); + + } + } + + onDeclarationRetrieved(data) { + $al.model.declaration.declaration = data; + $al.model.declaration._restCalls.getBankInfo.execute(null, {personId: $al.model.declaration.declaration.staffMember.id}, $al.model.declaration.onDeclaratioAndBankInfonRetrieved); + + } + + onDeclaratioAndBankInfonRetrieved(data) { + $al.model.declaration.bankInfo = data; + + if($al.model.declaration.declaration == null){ + $al.view.declaration.renderEmptyTemplate(); + + var viewModel = new kendo.data.Model.define(); + $al.model.declaration._viewModel = new viewModel({ + isVisible: false, + message: "Movement File si in draft state" + }); + + $al.view.declaration._bindView(); + }else if ($a.utils.isNotNull($al.model.declaration.declaration) && $al.model.declaration.declaration.enable) { + + if ($a.utils.isNotNull($al.model.declaration.declaration.declarationPersons)) { + $al.model.declaration._relativesDS = $al.model.declaration.declaration.declarationPersons; + } else { + $al.model.declaration._relativesDS = []; + } + + if ($a.utils.isNull($al.model.declaration.declaration.personBankInfo)) { + $al.model.declaration.declaration.personBankInfo = {baf: '', ibanCode: ''} + } + + $al.view.declaration.render(); + + $al.view.declaration._initializeView(); + $al.controller.declarationCommon._onLoadCountries($al.model.countries); + $al.view.declaration._bindView(); + + } else if ($al.model.movementFile.state === "DRAFT" || "PENDING") { + $al.view.declaration.renderEmptyTemplate(); + + var viewModel = new kendo.data.Model.define(); + $al.model.declaration._viewModel = new viewModel({ + isVisible: false, + message: "You can submit your declaration if your movement file is 'Confirmed' and the flat rates and ceilings in the entitlements are defined. You will be notified accordingly." + }); + + $al.view.declaration._bindView(); + } else if ($al.controller.isMovementFileActive() && !$al.model.declaration.declaration.enable) { + // Is this condition ever met?? + $al.view.declaration.renderEmptyTemplate(); + + var viewModel = new kendo.data.Model.define(); + $al.model.declaration._viewModel = new viewModel({ + isVisible: false, + message: "You can add the declaration as soon as the flat rates will be defined by BHR.6" + }); + + $al.view.declaration._bindView(); + } + } + + notifyDataRetrieved(data) { + //$al.model.declaration.bankInfo = data.get("bankInfo").data; + $al.model.declaration.declaration = data.get("declaration").data; + $al.model.declaration.entitlementTypes = data.get("entitlementTypes").data; + $al.model.countries = data.get("countries").data; + + + } + +} + +class DeclarationView { + + constructor() { + this._templates = new $a.DataContainer("declaration"); + this._elements = new $a.DataContainer("declaration"); + + this._templates.data(new $a.KendoTemplateData()); + + this._elements.node("relatives").node("grid").data(new $a.KendoElementData()); + this._templates.node("relatives").node("grid").data(new $a.KendoTemplateData()); + + this._elements.node("bank").data(new $a.KendoElementData()); + + // One footer "basic" + this._templates.node("basic").node("dialog").data(new $a.KendoTemplateData(), "footer"); + // One footer "Ok/Cancel" + this._templates.node("ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + // Two different body: warn/info + this._templates.node("warn").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("info").node("dialog").data(new $a.KendoTemplateData(), "body"); + + this._elements.node("country_for_eis").data(new $a.KendoElementData()); + this._elements.node("city_for_eis").data(new $a.KendoElementData()); + + this._elements.data(new $a.KendoElementData()); + } + + render() { + $al.view.declaration._templates.data.compile(); + // $al.view.declaration._templates.actions.data.compile(); + + $al.view.declaration._templates.relatives.grid.data.compile(); + + $al.view.declaration._renderRelativesGrid(); + + if ($al.model.declaration.declaration.state == 'INITIAL') { + $("#update-declaration").find("span").text("Save declaration"); + } else { + $("#update-declaration").find("span").text("Update declaration"); + } + } + + renderEmptyTemplate() { + $al.view.declaration._templates.data.compile(); + } + + _renderRelativesGrid() { + var dataSource = new kendo.data.DataSource({ + autoSync: true, + transport: { + read: function (options) { + options.success($al.model.declaration._relativesDS); + }, + destroy: function (options) { + + $al.model.declaration._relativesDS = dataSource.data().slice(); + options.success($al.model.declaration._relativesDS); + }, + create: function (options) { + options.success($al.model.declaration._relativesDS); + + }, + update: function (options) { + var data = options.data; + + + // Copy data back to dataList + $al.model.declaration._relativesDS = dataSource.data().slice(); + options.success([data.models[0]]); + + + } + }, + data: $al.model.declaration._relativesDS, + batch: true, + schema: { + model: { + id: "id", + fields: { + id: {type: "number", nullable: false}, + + movementFileId: {type: "number", editable: false}, + enable: {type: "boolean"}, + state: {type: "string"}, + declarationId: {type: "number"}, + declared: {type: "boolean"}, + remarks: {type: "string"}, + insEligible: {type: "boolean"}, + remEligible: {type: "boolean"}, + tudEligible: {type: "boolean"}, + relation: {type: "string"}, + person: { + id: {type: "number"}, + age: {type: "number"}, + firstName: {type: "string"}, + lastName: {type: "string"} + }, + relative: { + id: {type: "number"}, + age: {type: "number"}, + firstName: {type: "string"}, + lastName: {type: "string"} + }, attachments: [{ + declarationPersonId: {type: "number"}, + fileName: {type: "string"}, + fileUid: {type: "string"} + }] + + } + } + } + }); + + // This is used in the "TUD Eligible" column (hidden: ...) of the grid + var tud_visible = $al.view.declaration._isTUDEnabled($al.model.declaration.entitlementTypes); + + // This variable is used to establish the behavior of the grid (if MF is frozen, we disable buttons, checkboxes, etc) + var movFileFrozen = $al.model.movementFile.state === "COMPLETED" || $al.model.movementFile.state === "CANCELLED"; + + $al.view.declaration._elements.relatives.grid.data.element.kendoGrid({ + dataSource: dataSource, + scrollable: false, + sortable: true, + noRecords: { + template: "" + }, + detailTemplate: kendo.template($("#claims-edit-template").html()), + detailInit: $al.controller.declaration._detailInit, + dataBound: $al.view.declaration._onDataBound, + autoBind: true, + selectable: false, + columns: [ + {hidden: true, field: "id"}, + { + field: "remarks", hidden: true + }, + { + title: "Join", + width: "35px", + command: [ + { + name: "join", + // Add the class that provides "checkbox" behavior only if MF is not frozen (completed, cancelled) + template: "check_box_outline_blank", + click(e) { + var tr = $(e.target).closest("tr"); //get the row + this.select(tr); + } + }, + { + name: "remove", + // Add the class that provides "checkbox" behavior only if MF is not frozen (completed, cancelled) + template: "check_box", + click(e) { + var tr = $(e.target).closest("tr"); //get the row + this.select(tr); + } + } + ] + }, + /* { + field: "declared", + title: "Join", + width: "35px", + template: "check_boxcheck_box_outline_blank", + headerAttributes: { + "class": "pr-0" + }, + attributes: { + "class": "pl-2 pr-0" + } + },*/ + { + field: "relative.lastName", + title: "Name", + width: "35%", + attributes: { + "class": "font-weight-medium" + }, + template: "#= relative.lastName #, #= relative.firstName #" + }, + /*{ + field: "relative.firstName", + title: "First Name", + width: "20%", + attributes: { + "class": "pl-2 pr-0 font-weight-medium" + } + },*/ + { + field: "relative.age", + title: "Age", + width: "50px" + }, + { + field: "relation", + title: "Relation", + width: "30%" + }, + { + field: "tudEligible", + title: "TUD Eligible", + width: "20%", + hidden: !tud_visible, + template: $al.view.declaration._templateTudEligible, + headerTemplate: '' + + 'TUD Eligible info', + headerAttributes: { + "class": "pl-0" + }, + attributes: { + "class": "pl-0 pr-0 " + }, + }, + { + title: "Actions", + // Actions column hidden when MF is frozen (completed, cancelled) + hidden: movFileFrozen, + headerAttributes: { + style: "text-align: right;" + }, + width: "15%", + command: [ + { + name: "join", + template: "Add add", + click(e) { + var tr = $(e.target).closest("tr"); //get the row + this.select(tr); + var data = this.dataItem(tr); //get the row data so it can be referred later + data.set("declared", true); + } + }, + { + name: "remove", + template: "Remove close", + click(e) { + var tr = $(e.target).closest("tr"); //get the row + this.select(tr); + var data = this.dataItem(tr); //get the row data so it can be referred later + data.set("declared", false); + } + } + ] + }, + ] + }); + $al.view.declaration._elements.relatives.grid.data.component = "kendoGrid"; + + + $(".relatives-grid").on("click", ".entitlementClaimEligibilityBtn", function (e) { + + e.preventDefault(); + + var tr = $(e.target).closest("tr"); //get the row + + var data = $al.view.declaration._elements.relatives.grid.data.component.dataItem(tr); //get the row data so it can be referred later + data.set("claim", true); + + $(this).hide(); + tr.find(".entitlementClaimEligibilityCancelBtn").show(); + + $al.view.declaration._elements.relatives.grid.data.component.expandRow($(e.currentTarget).closest("tr")); + + + }); + + $(".relatives-grid").on("click", ".entitlementClaimEligibilityCancelBtn", function (e) { + e.preventDefault(); + if ($(e.target).closest("tr").hasClass("k-detail-row")) { + var tr = $(e.target).closest("tr").prev(); //get the row + } else { + var tr = $(e.target).closest("tr"); //get the row + } + + var data = $al.view.declaration._elements.relatives.grid.data.component.dataItem(tr); //get the row data so it can be referred later + data.set("claim", false); + + tr.find(".entitlementClaimEligibilityBtn").show(); + + $al.view.declaration._elements.relatives.grid.data.component.collapseRow($(e.currentTarget).closest("tr")); + + }); + + } + + + _isTUDEnabled(entitlement_list) { + for (var i = 0; i < entitlement_list.length; i++) { + var item = entitlement_list[i]; + if (item.enable && item.entitlementTypeCat.code === "TUD") { + return true; + } + } + return false; + } + + _uploadfile() { + $al.fileManagement.onUpload.bind(null, "claim-id"); + } + + _onDataBound(e) { + + if (typeof e !== "undefined") { + e.preventDefault(); + + /* Hide the first colum with the row expand toggle */ + this.wrapper.find(".k-hierarchy-col").remove();//remove col elements for hierarchy column + this.wrapper.find(".k-hierarchy-cell").hide();//remove cell elements for hierarchy column + // get the index of the UnitsInStock cell + var columns = e.sender.columns; + + + // iterate the table rows and apply custom row and cell styling + var rows = e.sender.tbody.children(); + for (var j = 0; j < rows.length; j++) { + + var row = $(rows[j]); + var dataItem = e.sender.dataItem(row); + var declared = dataItem.get("declared"); + var tudEligible = dataItem.get("tudEligible"); + var claim = dataItem.get("claim"); + + + if (declared) { + row.addClass("k-state-selected"); + $(row).closest("tr").find(".k-grid-join").hide(); + $(row).closest("tr").find(".k-grid-remove").show(); + + if (!tudEligible) { + + if (claim) { + $(row).closest("tr").find(".entitlementClaimEligibilityCancelBtn").show(); + this.expandRow(row); + row.addClass('eeas-has-claim'); + //this.expandRow(this.tbody.find("tr.k-master-row")); expand all + + + } else { + $(row).closest("tr").find(".entitlementClaimEligibilityBtn").show(); + } + + } + } else { + $(row).closest("tr").find(".k-grid-join").show(); + $(row).closest("tr").find(".k-grid-remove").hide(); + } + + } + /* Select first row with the staff member as he goes by default in rotation */ + // var grid = e.sender; + // grid.select($("tr:first", grid.tbody)); + } + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }) + $('[data-toggle="tooltip"]').tooltip(); + } + + _initializeView() { + + // Fields for rendering "sections" + var displayLogic = $al.view.declarationCommon._getDisplayLogicForDeclarationSections(); + var isVisibleRemovalSection = displayLogic.isVisibleRemovalSection; + + // Fields for rendering "Milestones" (Declaration History) + + var has_created_value = + $al.model.declaration.declaration.hasOwnProperty("userCreatedAt") + && $al.model.declaration.declaration.userCreatedAt != null; + var has_updated_value = + $al.model.declaration.declaration.hasOwnProperty("userUpdatedAt") + && $al.model.declaration.declaration.userUpdatedAt != null; + + + var viewModel = new kendo.data.Model.define(); + var _movFileFrozen = $al.model.movementFile.state === "CANCELLED" || $al.model.movementFile.state === "COMPLETED"; + + $al.model.declaration._viewModel = new viewModel({ + + // movement file is frozen if: $al.model.movementFile.state === "CANCELLED" || $al.model.movementFile.state === "COMPLETED", + movFileFrozen: _movFileFrozen, + bankAccountDropListEnabled: !_movFileFrozen && $al.view.declaration._thereIs_Abac_BankAccount($al.model.declaration.bankInfo), + visibleDecOfHonour: $al.model.declarationCommon._viewModel.displayLogic.isVisibleDecOfHonour, + + isVisible: true, + displayLogic: $al.model.declarationCommon._viewModel.displayLogic, + declarationOfHonourList: $al.model.declarationCommon._viewModel.declarationOfHonourList, + + canUpdateDeclaration: $al.model.permissions.canUpdateDeclaration || $al.model.permissions.isOwner, + + isCompleted: ($al.model.movementFile.state === "COMPLETED"), + + + hasCreatedValue: has_created_value, + hasUpdatedValue: has_updated_value, + + creation_date: has_created_value ? + $al.view.declaration._formatDate($al.model.declaration.declaration.userCreatedAt) : '', + updating_date: has_updated_value ? + $al.view.declaration._formatDate($al.model.declaration.declaration.userUpdatedAt) : '', + + message: " ", + name: $al.model.movementFile.jobHolder.firstName + ', ' + $al.model.movementFile.jobHolder.lastName, + declaration: $al.model.declaration.declaration, + bankInfo: $al.model.declaration.bankInfo, + onUpdateDeclaration: function (e) { + + var validationErrors = $al.view.declaration._validateBeforeUpdatingDeclaration(); + if (validationErrors.length > 0) { + // Show validation error messages and do nothing: + $al.controller.declaration._showWarnDialog( + $al.controller.declaration._languageBundle.validation.form_validation, validationErrors); + return; + } + + // Validation passed. + + //get the selected persons + this.declaration.declarationPersons = $al.model.declaration._relativesDS; + + $al.model.declaration.declarationToUpdate = this.declaration; + + // set entry into storage to false in case the question was not shown, but it is HOD or NON family + if (typeof $al.model.declaration.declarationToUpdate.entryIntoStorage == "undefined") { // is not defined + + if ($al.view.declarationCommon._isHODMovementFile() || + (typeof $al.model.edit._viewModel.jobTo != "undefined" && $al.model.edit._viewModel.jobTo.familyPostingTypeCategory === 'NON_FAMILY')) { + //is non family or HOD we put it to false, in other case we put it null so we know there is no EIS, I hate this solution + $al.model.declaration.declarationToUpdate.entryIntoStorage = false; + } else { + $al.model.declaration.declarationToUpdate.entryIntoStorage = null; + } + } + + + //when it does not have the entry into storage we put it null , when is family post and NON HOD + + + // Finally: Confirmation Message before actually doing the operation + // Different message in each case (save/update declaration): + var confirmation_msg = ""; + if ($al.model.declaration.declaration.state === 'INITIAL') { + confirmation_msg = $al.controller.declaration._languageBundle.confirmation_message_save; + } else { + confirmation_msg = $al.controller.declaration._languageBundle.confirmation_message_update; + } + + // Show OK/Cancel dialog. The OK button will call 'doUpdateDeclaration' + $a.modalDialog.showAnswer(null, + $al.controller.declaration._languageBundle.confirmation_message_title, + $al.view.declaration._templates.info.dialog.body.template({body_message: confirmation_msg}), + $al.view.declaration._templates.ok_cancel.dialog.footer.template({}) + ); + + }, + onDiscardChanges: function (e) { + // This quickly restores values without the "refresh page effect" because we are already in the Declaration tab + $("#declaration-tab").click(); + }, + + onSelectBankAccount: function (e) { + if (this.declaration.personBankInfo === null) { + this.declaration.personBankInfo = {ibanCode: "", baf: ""} + } + + if (e.dataItem.ibanCode === e.sender.options.optionLabel) { + // User has selected "Please select" so we remove the values: + this.declaration.personBankInfo.ibanCode = ''; + this.declaration.personBankInfo.baf = ''; + this.declaration.personBankInfo.perId = ''; + } else { + // Ok + this.declaration.personBankInfo.ibanCode = e.dataItem.ibanCode; + this.declaration.personBankInfo.baf = e.dataItem.baf; + this.declaration.personBankInfo.perId = $al.model.movementFile.jobHolder.perId; + } + // Also update the model: + $al.model.declaration.declaration.personBankInfo = this.declaration.personBankInfo; + }, + showHODOptions: $al.view.declarationCommon._showHODOptions, + showEntryIntoStorage: $al.view.declarationCommon._showEntryIntoStorage, + showCountryForEntryIntoStorage: $al.view.declarationCommon._showCountryForEntryIntoStorage, + bindViewNow: function (e) { + + $al.view.declaration._bindView(); + } + + }); + } + + _thereIs_Abac_BankAccount(bankAccounts) { + + if (typeof bankAccounts === "undefined" || !bankAccounts.length) { + return false; + } + for (const acc of bankAccounts) { + if (acc.lef || acc.baf) { + return true; + } + } + return false; + } + + + _formatDate(yyyMMddTH_date) { + + if (!yyyMMddTH_date) { + return ''; + } + var resp = kendo.toString(kendo.parseDate(yyyMMddTH_date), 'MMM dd, yyyy') + + ' at ' + kendo.toString(kendo.parseDate(yyyMMddTH_date), 't'); + return resp; + } + + /* + * This method will return a list of error messages. If the list is empty, it means validation OK + */ + _validateBeforeUpdatingDeclaration() { + + $al.controller.declaration.validate(); + var errorMessages = []; + // Validate IBAN selected: + if (!$al.model.declaration._viewModel.declaration.personBankInfo + || $al.model.declaration._viewModel.declaration.personBankInfo.ibanCode === '') { + + // Add missing bank account message + errorMessages.push($al.controller.declaration._languageBundle.validation.missing_bank_account); + } + + // Validate every justification in Claim is not empty: + var relatives_len = $al.model.declaration._relativesDS.length; + if (relatives_len > 0) { + for (var i = 0; i < relatives_len; i++) { + var iperson = $al.model.declaration._relativesDS[i]; + // There must be a claim, and tudEligible = false, and justification is empty + if (iperson.declared && iperson.claim && iperson.tudEligible === false && (typeof iperson.remarks === 'undefined' || iperson.remarks.trim().length === 0)) { + errorMessages.push($al.controller.declaration._languageBundle.validation.claims_must_have_justification); + // Once is enough + break; + } + } + } + // Validate removalRequestType have been ticked + if ($al.model.declaration._viewModel.displayLogic.isVisibleRemovalSection) { // if we show removal option, then we check + if (typeof $al.model.declaration._viewModel.declaration.removalRequestType == "undefined") { + errorMessages.push($al.controller.declaration._languageBundle.validation.removal_payment_options_unchecked + " "); + } + + } + + // Validate HOD option have been ticked + + if ($al.view.declarationCommon._showHODOptions()) { // if we show removal option, then we check + if (typeof $al.model.declaration._viewModel.declaration.hodOption == "undefined") { + errorMessages.push($al.controller.declaration._languageBundle.validation.hod_options_unchecked + " "); + } + } + + // Validate EIS question have been ticked + if ($al.model.declaration._viewModel.showEntryIntoStorage()) { // if we show removal option, then we check + if (typeof $al.model.declaration._viewModel.declaration.entryIntoStorage == "undefined") { + errorMessages.push($al.controller.declaration._languageBundle.validation.entry_into_storage_options_unchecked + " "); + } + } + + // Validate Country/City for EIS + if ($al.model.declaration._viewModel.showCountryForEntryIntoStorage()) { // if we show removal option, then we check + if (typeof $al.model.declaration._viewModel.declaration.countryForEIS == "undefined" || + typeof $al.model.declaration._viewModel.declaration.cityForEIS == "undefined") { + errorMessages.push($al.controller.declaration._languageBundle.validation.country_for_eis_question_unchecked + " "); + } + } + + // Validate all Decl of Honour statements have been ticked + var checkboxes = $("#declaration_of_honour_statements_list").find("input[type=checkbox]"); + if (checkboxes.length > 0) { + var checked = $("#declaration_of_honour_statements_list").find("input[type=checkbox]:checked"); + if (checked.length < checkboxes.length) { + errorMessages.push($al.controller.declaration._languageBundle.validation.honour_some_statements_unchecked); + } + } + return errorMessages; + + } + + _showInfoDialog(title, messages, declaration) { + $a.modalDialog.showAnswer(null, + title, + $al.view.declaration._templates.info.dialog.body.template({body_message: messages.join(" ")}), + $al.view.declaration._templates.basic.dialog.footer.template(declaration) + ); + } + + _templateTudEligible(dataItem) { + + + let templateTud = "
    "; + + if (dataItem.tudEligible == false) { + templateTud += "
    cancel"; + templateTud += "help
    "; + + } else { + templateTud += "check_circle"; + } + + templateTud += ""; + templateTud += "
    "; + + return templateTud; + } + + + _bindView() { + kendo.bind($al.view.declaration._templates.data.wrapperSelector, $al.model.declaration._viewModel); + } +} + +class DeclarationController { + + constructor() { + this._languageBundle = null; + } + + notifyReady(languageBundlePoolExecutor) { + languageBundlePoolExecutor.add("declaration", "common.messages.e-rights", "e_rights.movement_files.declaration", false); + } + + notifyLanguageBundleReady(languageBundles) { + $al.controller.declaration._languageBundle = languageBundles.get("declaration"); + } + + notifyDataInitialized() { + } + + _showWarnDialog(title, messages) { + $a.modalDialog.showAnswer(null, title, + $al.view.declaration._templates.warn.dialog.body.template( + {body_message: "
  • " + messages.join("
  • "), + validation_message: $al.controller.declaration._languageBundle.validation.form_validation_message }), + $al.view.declaration._templates.basic.dialog.footer.template({}) + ); + } + + _detailInit(e) { + var detailRow = e.detailRow; + var model = e.data; + kendo.bind(detailRow, model); + + e.detailCell.find("textarea.autoSize").autosize(); + + + e.detailCell.find("textarea").on("change", function (e) { + var value = e.target.value; + var field = e.target.name; + + var dRow = $(e.target.closest("tr")) + var mRow = dRow.prev(".k-master-row") + var grid = $("#declaration-relatives-grid").data("kendoGrid"); + var dataItem = grid.dataItem(mRow); + dataItem.set(field, value); + + + }); + + + var files = []; + + if (typeof model.get("attachments") !== "undefined" && typeof model.get("attachments")[0].fileName !== "undefined") { + var modelArray = model.get("attachments"); + var attch = {}; + attch.name = '' + modelArray[0].fileName + ''; + attch.title = modelArray[0].fileName; + attch.extension = '.' + modelArray[0].fileName.split('.').pop(); + attch.fileUid = modelArray[0].fileUid; + files.push(attch); + + + } + + //$("#claim-id").kendoUpload({ + e.detailCell.find("#claim-id").kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id"), + remove: $al.fileManagement.onRemove, + success: $al.controller.declaration._onOperationSuccess, + localization: { + select: "Select Files ..." + }, + files: files + }); + + } + + _onOperationSuccess(event) { + + var dRow = $(event.sender.element.closest("tr")) + var mRow = dRow.prev(".k-master-row") + var grid = $("#declaration-relatives-grid").data("kendoGrid"); + var dataItem = grid.dataItem(mRow); + + var attachments = []; + var attch = {}; + if (event.operation == "remove") { + attch.fileUid = event.files[0].fileUid; + attch.remove = true; + } else { + attch.fileUid = event.response.uid; + attch.fileName = event.response.name; + } + + // attch.id = "23"; + + + attch.declarationPersonId = dataItem.id; + + attachments.push(attch); + + + dataItem.set("attachments", attachments); + dataItem.dirty = true; + + $($(".k-file-name")[0]).removeAttr("title"); + + } + + doUpdateDeclaration() { + $a.modalDialog.hide(); + + //update the declaration + if (typeof $al.model.declaration.declarationToUpdate.updatingActor != 'undefined') { + $al.model.declaration.declarationToUpdate.updatingActor.id = BigInt($al.model.declaration.declarationToUpdate.updatingActor.id).toString(); + } + if (typeof $al.model.declaration.declarationToUpdate.creationActor != 'undefined') { + $al.model.declaration.declarationToUpdate.creationActor.id = BigInt($al.model.declaration.declarationToUpdate.creationActor.id).toString(); + } + + $al.model.declaration._restCalls.updateDeclaration.execute(null, null, $al.model.declaration.declarationToUpdate, $al.controller.declaration._updateDeclarationResponse, null, $al.controller.declaration._updateDeclarationResponseComplete); + } + + _updateDeclarationResponse(data) { + + $a.toast.showSuccess($al.controller.declaration._languageBundle.alerts.save_success); + // not the best solution, but we need to do some work on the entitlement page, we are not using bindings so it is difficult to refresh rebinding working on RIGD-645 + setTimeout(() => { + $al.controller.declaration.goToEntitlementTabAfterDeclarationUpdate() + }, 4000); + + //$al.controller.entitlements.declarationUpdate(); // the page is not using the binding to show buttons , we need to do some work on here + //$("#entitlements-tab").click(); + } + + _updateDeclarationResponseComplete(data) { + + if (typeof data.responseJSON.message !== "undefined") { + $a.toast.showError(data.responseJSON.message); + } + + } + + goToEntitlementTabAfterDeclarationUpdate() { + + $a.navigation.navigateTo($a.utils.formatUrl($al.model.declaration.urls.action.view, null, { + id: $al.model.movementFile.id, + gototab: 'entitlements-tab' + })); + + } + + //refresh family memebers from sysper + doRefreshDeclarationPersons() { + $al.model.declaration._restCalls.refreshDeclarationPersons.execute(null, {movementFileId: $fileId}, $al.controller.declaration.onDeclarationPersonsRefreshed,null,null,true); + } + + _refreshDeclarationPersons() { + $al.controller.declaration.doRefreshDeclarationPersons(); + } + + onDeclarationPersonsRefreshed() { + // This refreshes the tab without the "refresh page" effect + $("#declaration-tab").click(); + $a.toast.showSuccess(' Declaration has been updated successfully'); + } + + validate() { + var validator = $($al.view.declaration._templates.data.wrapperSelector).kendoValidator({ + rules: { + requiredFieldEmpty: input => { + if (input.attr('required')) { + return input.length > 0; + } else { + return true; + } + }, + + removalOptionRequired: function (input) { + + if (input.is("[name=removal-option]") && input.attr("required")) { + return $("#removal_payment_option_div").find("[type=radio][name=" + input.attr("name") + "]").is(":checked"); + } + return true; + }, + hodOptionRequired: function (input) { + + if (input.is("[name=hod-option]") && input.attr("required")) { + return $("#hod_option_div").find("[type=radio][name=" + input.attr("name") + "]").is(":checked"); + } + return true; + }, + eisOptionRequired: function (input) { + + if (input.is("[name=eis-option]") && input.attr("required")) { + return $("#eis_option_div").find("[type=radio][name=" + input.attr("name") + "]").is(":checked"); + } + return true; + }, + endDateOfServiceInvalid: input => { + if (input.is("[name=end-date]")) { + return input.data("kendoDatePicker").value(); + } else { + return true; + } + }, + // aipnDocumentIdExists: input => { + // if (input.is("[name=aipn_file_id]")) { + // if(input.val().length>0){ + // + // return ($al.view._elements.aipn_document_id.data.element.val().length > 0) ; + // }else{ + // return true; + // } + // } else { + // return true; + // } + // } + }, + messages: { + requiredFieldEmpty: "Required Field", + removalOptionRequired: "You need to select one of the Removal payment options", + hodOptionRequired: "You need to select one of the HOD options", + eisOptionRequired: "Please answer the entry into storage question" + // aipnDocumentIdExists: "AIPN Decisison is INVALID, Please validate the file or clear AIPN decision" + } + }).data("kendoValidator"); + + + return validator.validate(); + } + +} + +_registerMVCSection("declaration", DeclarationModel, DeclarationView, DeclarationController); \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/static/scripts/movement-file/edit/file.edit.js b/e-rights-front-office/src/main/webapp/static/scripts/movement-file/edit/file.edit.js new file mode 100644 index 0000000..5b03e78 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/scripts/movement-file/edit/file.edit.js @@ -0,0 +1,570 @@ +class EditModel { + + constructor() { + this._restCalls = { + movementTypes: new $a.GetRestCall(null, "/internal/api/movement-types"), + save: new $a.PostRestCall(null, "/internal/api/session/save-movement-file-data"), + newStateMachine: new $a.PostRestCall(null, "/internal/api/movement-files/stateMachineEvent/{stateMachineEvent}"), + getStateMachineHistory: new $a.GetRestCall(null, "/internal/api/movement-files/{movementFileId}/stateMachineHistory"), + getNotificationsHistory: new $a.GetRestCall(null, "/internal/api/movement-files/{movementFileId}/notificationsHistory"), + documentUrlById: new $a.GetRestCall(null, "/internal/api/document/url/{documentId}"), + countries: new $a.GetRestCall(null, "/internal/api/countries"), + cities: new $a.GetRestCall(null, "/internal/api/countries/{countryCode}/cities"), + searchHrsDocument: new $a.GetRestCall(null, "/internal/api/document") + }; + + this.urls = { + action: { + previous: $a.utils.url(null, "/movement-files/staff-member-data.do"), + next: $a.utils.url(null, "/movement-files/create-details.do"), + navigateToList: $a.utils.url(null, "/list/movement-files.do"), + view: $a.utils.url(null, "/movement-files/view.do") + } + }; + } + + init(dataPoolExecutor) { + dataPoolExecutor.add("stateMachineHistory", $al.model.edit._restCalls.getStateMachineHistory, {movementFileId: $fileId}); + dataPoolExecutor.add("notificationHistory", $al.model.edit._restCalls.getNotificationsHistory, {movementFileId: $fileId}); + + } + + notifyDataRetrieved(data) { + $al.model.edit.movementFile = data.get("movementFile").data; + $al.model.edit.stateMachineHistory = data.get("stateMachineHistory").data; + $al.model.edit.notificationHistory = data.get("notificationHistory").data; + + $al.view.edit._initializeView($al.model.edit.movementFile); + } + + _getMovementTypes() { + $al.model.edit._restCalls.movementTypes.execute(null, {contextId: $al.model.edit.movementFile.movementContext.id}, $al.view.edit._renderMovementTypes); + } + + //Checks if Ending date is greater than Starting date + _isEndingDateGreaterThan(serviceStartDate, serviceEndDate) { + var serviceStartDateMidnight = $a.utils.setTimeToMidnight(serviceStartDate); + var serviceEndDateMidnight = $a.utils.setTimeToMidnight(serviceEndDate); + + return serviceEndDateMidnight < serviceStartDateMidnight ? false : true; + } + + _getCities(code) { + + if (code != "") { + $al.model.edit._restCalls.cities.execute({countryCode: code}, null, $al.view.edit._loadCitiesData); + } else { + $al.view.edit._elements.evacuation_city.data.element.kendoDropDownList({ + optionLabel: "Select a city", + value: "Select a city" + }); + } + } + + _getCitiesFromSession(code) { + $al.model.edit._restCalls.cities.execute({countryCode: code}, null, $al.view.edit._loadCitiesDataFromSession); + } +} + +class EditView { + + constructor() { + this._templates = new $a.DataContainer("edit"); + this._elements = new $a.DataContainer("edit"); + + this._templates.data(new $a.KendoTemplateData()); + this._templates.node("staffMember").data(new $a.KendoTemplateData()); + this._templates.node("destination").data(new $a.KendoTemplateData()); + this._templates.node("details").data(new $a.KendoTemplateData()); + this._templates.node("actions").data(new $a.KendoTemplateData()); + // this._templates.node("delete").node("dialog").data(new $a.KendoTemplateData(), "body"); + // this._templates.node("delete").node("dialog").data(new $a.KendoTemplateData(), "footer"); + + this._elements.node("start_date").data(new $a.KendoElementData()); + this._elements.node("end_date").data(new $a.KendoElementData()); + + this._elements.node("eoc_end_date").data(new $a.KendoElementData()); + this._elements.node("year").data(new $a.KendoElementData()); + this._elements.node("context").data(new $a.KendoElementData()); + this._elements.node("non_family_posting").data(new $a.KendoElementData()); + this._elements.node("child_free_posting").data(new $a.KendoElementData()); + this._elements.node("movement_type").data(new $a.KendoElementData()); + + //reason for deletion - in the popup + // this._elements.node("reason_deletion").data(new $a.KendoElementData()); + + this._templates_eoc = new $a.DataContainer("eoc"); + this._elements_eoc = new $a.DataContainer("eoc"); + this._templates_eoc.data(new $a.KendoTemplateData()); + this._templates_eoc.node("details").data(new $a.KendoTemplateData()); + this._elements_eoc.node("details").data(new $a.KendoElementData()); + this._templates_eoc.node("destination").data(new $a.KendoTemplateData()); + this._elements_eoc.node("destination").data(new $a.KendoElementData()); + + this._elements_eoc.node("rights").data(new $a.KendoElementData()); + + //evacuation inside destination section + this._templates_evacuation = new $a.DataContainer("evacuation"); + this._elements_evacuation = new $a.DataContainer("evacuation"); + this._templates_evacuation.node("destination").data(new $a.KendoTemplateData()); + this._elements_evacuation.node("is_evacuation_location").data(new $a.KendoElementData()); + this._elements_evacuation.node("evacuation_country").data(new $a.KendoElementData()); + this._elements_evacuation.node("evacuation_city").data(new $a.KendoElementData()); + + //edit aipn notification inside communication + // this._templates_aipn = new $a.DataContainer("edit"); + this._elements_aipn = new $a.DataContainer("edit"); + + this._elements_aipn.node("aipn_notif_date").data(new $a.KendoElementData()); + this._elements_aipn.node("aipn_file_id").data(new $a.KendoElementData()); + this._elements_aipn.node("aipn_document_id").data(new $a.KendoElementData()); + } + + _render() { + $al.view.edit._templates.data.compile(); + $al.view.edit._templates.actions.data.compile(); + $al.view.edit._templates.staffMember.data.compile(); + + $al.view.edit._templates.details.data.compile(); + + if ($al.model.edit.movementFile.movementContext.name === 'EOC') { + $al.view.edit._templates_eoc.details.data.compile(); + $al.view.edit._templates_eoc.destination.data.compile(); + } else { + $al.view.edit._templates.destination.data.compile(); + } + + var calendarDate = new Date($al.model.edit.movementFile.startDate); + $al.view.edit._elements.start_date.data.element.kendoDatePicker({ + value: $al.model.edit.movementFile.startDate, + max: setSpecificDate(calendarDate, 11, 31), + min: setSpecificDate(calendarDate, 0, 1), + month: { + empty: '#= data.value #' + }, + parseFormats: ["dd/MM/yyyy"] + }); + + $al.view.edit._elements.end_date.data.element.kendoDatePicker(); + + var calendarEocDate = new Date($al.model.edit.movementFile.estimatedEndDate); + $al.view.edit._elements.eoc_end_date.data.element.kendoDatePicker({ + value: $al.model.edit.movementFile.estimatedEndDate, + max: setSpecificDate(calendarEocDate, 11, 31), + min: setSpecificDate(calendarEocDate, 0, 1), + month: { + empty: '#= data.value #' + }, + parseFormats: ["dd/MM/yyyy"] + }); + + $(`#aipn-date-picker-1`).kendoDatePicker({ + max: $a.utils.setTimeToMidnight(new Date()), + parseFormats: ["yyyy-MM-dd"], + value: $al.model.edit.movementFile.aipnNotifDate + }); + $(`#aipn-date-picker-2`).kendoDatePicker({ + max: $a.utils.setTimeToMidnight(new Date()), + parseFormats: ["yyyy-MM-dd"], + value: $al.model.edit.movementFile.aipnNotifDate + }); + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }) + } + + /* + * This method has been simplified but in one case (end date of EOC) we still have a disabled date picker: + */ + _renderDates() { + + if (typeof $al.model.edit.movementFile.estimatedEndDate !== 'undefined') { + + let eocEndDatePicker = $al.view.edit._elements.eoc_end_date.data.element.data("kendoDatePicker"); + if (typeof eocEndDatePicker != 'undefined') { + let estimatedEndDateDate = new Date($al.model.edit.movementFile.estimatedEndDate); + let userTimezoneOffset = estimatedEndDateDate.getTimezoneOffset() * 60000; + eocEndDatePicker.value(new Date(estimatedEndDateDate.getTime() + userTimezoneOffset)); + } + } + } + + _renderEvacuation() { + if (typeof $al.model.edit.movementFile.jobTo != 'undefined' && typeof $al.model.edit.movementFile.jobTo.evacuationLevelCodeId != 'undefined') { + $al.controller.edit._setEvacuationInfo($al.model.edit.movementFile.jobTo.evacuationCode); + $al.view.edit._templates_evacuation.destination.data.compile(); + $al.model.edit._viewModel.canChangeDestination = false; + $al.model.edit._viewModel.canCheckEvacuationDestination = false; + } + } + + _renderMovementTypes(data) { + $al.model.edit.movementTypes = data; + + $al.view.edit._elements.movement_type.data.element.kendoDropDownList({ + dataSource: data, + dataTextField: "movementType", + dataValueField: "id", + enable: false + }); + + $al.view.edit._elements.movement_type.data.element.select(function (dataItem) { + return dataItem.id === $al.model.edit.movementFile.movementType.id; + + }); + } + + _renderMilestones() { + let notificationHistoryDataSource = $al.view.edit._prepareNotif($al.model.edit.notificationHistory); + let communicationHistoryDataSource = $al.model.edit.stateMachineHistory; + + const mergedArray = [...communicationHistoryDataSource, ...notificationHistoryDataSource]; + + mergedArray.sort((a, b) => { + const dateA = a.date || a.sentAt; + const dateB = b.date || b.sentAt; + const arrivalStateA = a.arrivalState || ''; + const arrivalStateB = b.arrivalState || ''; + // Compare dates first + const dateComparison = new Date(dateA) - new Date(dateB); + // If dates are the same, prioritize 'DRAFT' arrivalState + if (dateComparison === 0) { + return arrivalStateA.localeCompare(arrivalStateB); + } + return dateComparison; + }); + + $(".milestone-list-wrapper").kendoListView({ + dataSource: mergedArray, + template: kendo.template($("#milestone-item-template").html()) + }).removeClass('k-widget k-listview'); + } + + _prepareNotif(data) { + data.forEach(n => { + n.notificationTemplateCode = $al.controller.edit._languageBundle.notifications[n.notificationTemplateCode.toLowerCase()]; + if (n.sentAt === undefined) { + n.sentAt = n.sendingDate; + } + }); + return data; + } + + _initializeView(movementFile) { + + // FOffice: We have to set again this value if not present, in order to show it to the user, + // because it's not stored in the movement_files table + // (the movement_files table has a foreign key to the job, which does not have a value for "familyPostingType") + + $al.view.edit.familyPostingLogic(movementFile); + //$al.view.edit.budgetLineLogic(movementFile); + + + + var viewModel = new kendo.data.Model.define(); + $al.model.edit._viewModel = new viewModel(movementFile); + + let jobHolder = movementFile['jobHolder']; + + //name + $al.model.edit._viewModel.name = jobHolder.firstName + ', ' + jobHolder.lastName; + + //place of recruitment + let placeOfRecruitment; + if (typeof jobHolder.recruitmentCity === 'undefined' || jobHolder.recruitmentCity === null) { + placeOfRecruitment = "No place of recruitment"; + } else { + placeOfRecruitment = jobHolder.recruitmentCountry + ', ' + jobHolder.recruitmentCity; + } + $al.model.edit._viewModel.placeOfRecruitment = placeOfRecruitment; + + //place of origin + let placeOfOrigin; + if ((typeof jobHolder.originCity === 'undefined' || jobHolder.originCity === null) && (typeof jobHolder.originCountryDesc === 'undefined' || jobHolder.originCountryDesc === null)) { + placeOfOrigin = "No place of origin"; + } else if (typeof jobHolder.originCountryDesc === 'undefined' || jobHolder.originCountryDesc === null) { + placeOfOrigin = jobHolder.originCity; + } else if (typeof jobHolder.originCity === 'undefined' || jobHolder.originCity === null) { + placeOfOrigin = jobHolder.originCountryDesc; + } else { + placeOfOrigin = jobHolder.originCountryDesc + ', ' + jobHolder.originCity; + } + + $al.model.edit._viewModel.placeOfOrigin = placeOfOrigin; + + $al.model.edit._viewModel.aipnNotifDateFromatted = kendo.toString(kendo.parseDate($al.model.edit._viewModel.aipnNotifDate), 'MMM dd, yyyy'); + + //private email + let privateEmail = jobHolder.privateEmail == null ? "No Private Email" : jobHolder.privateEmail; + + $al.model.edit._viewModel.privateEmail = privateEmail; + + //gender + let gender; + if (jobHolder.gender === "M") { + gender = $al.controller.edit._languageBundle.staff_member.gender_male; + } else { + gender = $al.controller.edit._languageBundle.staff_member.gender_female; + } + $al.model.edit._viewModel.gender = gender; + + + if (typeof movementFile.countryTo != 'undefined') { + $al.model.edit._viewModel.destinationCountry = movementFile.countryTo.name; + } + if (typeof movementFile.cityTo != 'undefined') { + $al.model.edit._viewModel.destinationCity = movementFile.cityTo.name; + } + + //permissions + $al.model.edit._viewModel.canCreate = $al.model.permissions.canCreate; + $al.model.edit._viewModel.canConfirmOnBehalf = $al.model.permissions.canConfirm; + $al.model.edit._viewModel.canConfirm = !$al.model.permissions.canConfirm && ($al.model.permissions.isOwner && movementFile.state === "PENDING"); + $al.model.edit._viewModel.canDelete = $al.model.permissions.canDelete; + $al.model.edit._viewModel.canUpdate = $al.model.permissions.canUpdate; + $al.model.edit._viewModel.canWithdrawOnBehalf = $al.model.permissions.canWithdraw; + $al.model.edit._viewModel.canWithdraw = !$al.model.permissions.canWithdraw && ($al.model.permissions.isOwner && movementFile.state === "PENDING"); + + $al.model.edit._viewModel.showDestinationInfo = !(movementFile.movementType.movementType === "DEL-HQ" || movementFile.movementType.movementType === "DEL EU-HQ"); + + // status flags + $al.model.edit._viewModel.isCompleted = (movementFile.state === 'COMPLETED'); + + // No job number: set the destination to the description corresponding to the movement context + if (typeof movementFile.jobTo === 'undefined') + $al.model.edit._viewModel.set("allocatedToText", $al.view.edit.getAllocatedToText($al.model.edit.movementFile.movementContext.name)); + + // Set as true if the Movement File has a value for destination job + $al.model.edit._viewModel.set("hasJobTo", typeof movementFile.jobTo !== 'undefined'); + + // Set job type description and Family Posting according to the destination job + if($al.model.edit._viewModel.hasJobTo) { + // Existing destination job: the descriptions for the job type and the family posting type can be found in the job data + $al.model.edit._viewModel.jobTypeDesc = movementFile.jobTo.jobType; + + + } + else { + // Not existing destination job: job type and family posting type are directly associated with the Movement File + if(movementFile.hodJobTo) + $al.model.edit._viewModel.jobTypeDesc = "Head of Delegation"; + + + } + + + } + + familyPostingLogic(movementFile){ + if(typeof movementFile.jobTo != "undefined" && typeof movementFile.jobTo.familyPostingTypeCategory != "undefined" ){ + if(movementFile.jobTo.familyPostingTypeCategory == "NON_FAMILY") { + movementFile.jobToFamilyPosting = false; + }else { + movementFile.jobToFamilyPosting = true; + } + } + if (typeof movementFile.jobToFamilyPosting != "undefined" && !movementFile.jobToFamilyPosting ){ + movementFile.jobToFamilyPosting = false; + } + if(typeof movementFile.jobFrom != "undefined" && typeof movementFile.jobFrom.familyPostingTypeCategory != "undefined"){ + if(movementFile.jobFrom.familyPostingTypeCategory == "NON_FAMILY") { + movementFile.familyPosting = false; + }else { + movementFile.familyPosting = true; + } + } + if (typeof movementFile.jobFromFamilyPosting != "undefined" && !movementFile.familyPosting ){ + movementFile.familyPosting = false; + } + if(!movementFile.familyPosting){ + movementFile.familyPosting = "Non-Family Posting"; + movementFile.familyPosting = false; + }else{ + movementFile.familyPosting = "Family Posting"; + movementFile.familyPosting = true; + } + if(!movementFile.jobToFamilyPosting){ + movementFile.jobToFamilyPostingType = "Non-Family Posting"; + movementFile.jobToFamilyPosting = false; + }else{ + movementFile.jobToFamilyPostingType = "Family Posting"; + movementFile.jobToFamilyPosting = true; + } + } + + // budgetLineLogic(data){ + // if(typeof data.movementType !== 'undefined') { + // + // if (data.movementType.budgetLineJob === "CURRENT"){ + // if( $a.utils.isNotNull(data.budgetLineJobFrom)) { + // data.budgetLine = data.budgetLineJobFrom; + // } + // } else { + // if( $a.utils.isNotNull(data.budgetLineJobTo)) { + // data.budgetLine = data.budgetLineJobTo; + // } + // + // } + // } + // } + _bindView() { + kendo.bind($al.view.edit._templates.data.wrapperSelector, $al.model.edit._viewModel); + } + + _loadCitiesData(cities) { + $al.view.edit._elements_evacuation.evacuation_city.data.element.kendoDropDownList({ + dataSource: cities, + dataTextField: "name", + dataValueField: "code", + optionLabel: "Select a city", + autoWidth: true + }); + let evacCity = $al.view.edit._elements_evacuation.evacuation_city.data.element.data("kendoDropDownList"); + evacCity.enable(true); + } + + _goToTabIfRequested() { + var url_params = window.location.search.substr(1).split("&"); + for (var i = 0; i < url_params.length; i++) { + var param = url_params[i]; + var kv = param.split("="); + if (kv.length == 2 && kv[0] === "gototab") { + var tabid = "#" + kv[1]; + $(tabid).click(); + break; + } + } + } + + getAllocatedToText(movementContextName) { + let text = ""; + + switch (movementContextName) { + case "SECONDMENT": + text = $al.controller.edit._languageBundle.destination.allocated_to.secondment; + break; + case "ROTATION": + text = $al.controller.edit._languageBundle.destination.allocated_to.rotation; + break; + case "CRISIS": + text = $al.controller.edit._languageBundle.destination.allocated_to.crisis; + break; + default: + break; + } + + return text; + } +} + +class EditController { + + constructor() { + this._languageBundle = null; + } + + notifyReady(languageBundlePoolExecutor) { + languageBundlePoolExecutor.add("edit", "common.messages.e-rights", "e_rights.movement_files.edit", false); + } + + notifyDataInitialized() { + $al.view.edit._render(); + + $al.view.edit._renderDates(); + + $al.view.edit._renderEvacuation(); + + $al.view.edit._bindView(); + + $al.view.edit._renderMilestones(); + + $al.controller.edit._getAipnFile(); + + $al.model.edit._getMovementTypes(); + + // This is the last step of rendering. + // Now we go to a tab if the parameter "gototab" is present in the URL: + $al.view.edit._goToTabIfRequested(); + + } + + notifyLanguageBundleReady(languageBundles) { + $al.controller.edit._languageBundle = languageBundles.get("edit"); + } + + _getAipnFile() { + $al.model.edit._viewModel.set("aipnVisible", true); + $al.model.edit._viewModel.set("aipnFileId", $al.model.edit.movementFile.aipnFileId); + if ($al.model.edit.movementFile.aipnFileId === undefined || $al.model.edit.movementFile.aipnFileId.length === 0) { + $al.model.edit._viewModel.set("aipnDocumentURL", false); + } else { + $al.model.edit._viewModel.set("aipnDocumentURL", true); + } + $al.model.edit._viewModel.set("editAipnNotif", false); + } + + _setEvacuationInfo(evacuationCode) { + let evacuationMEssageSplitted = evacuationCode.split(':'); + $al.model.edit._viewModel.set("evacuationLevel", evacuationMEssageSplitted[0]); + var levelNo = evacuationMEssageSplitted[0].replace(/[^0-9]/g, ''); + $al.model.edit._viewModel.set('evacuationIcon', "warning"); + $al.model.edit._viewModel.set("evacuationMessage", evacuationMEssageSplitted[1]); + } + + _onLoadCountries(countries) { + $al.view.edit._elements_evacuation.evacuation_country.data.element.kendoDropDownList({ + dataSource: countries, + dataTextField: "name", + dataValueField: "code", + optionLabel: "Select a country", + value: "Select a country", + autoWidth: true, + change: function (e) { + var index = this.selectedIndex, dataItem; + dataItem = this.dataItem(index); + $al.model.edit._getCities(dataItem.code) + } + }); + + let evacCountry = $al.view.edit._elements_evacuation.evacuation_country.data.element.data("kendoDropDownList"); + evacCountry.enable(true); + $al.model.edit._getCities(); + } + + + _doConfirmOnBehalf() { + $al.model.edit._restCalls.newStateMachine.execute({stateMachineEvent: "CONFIRM"}, $al.model.edit.movementFile, $al.controller.edit._onConfirmMovementFile); + } + + _doWithdrawOnBehalf() { + $al.model.edit._restCalls.newStateMachine.execute({stateMachineEvent: "WITHDRAW"}, $al.model.edit.movementFile, $al.controller.edit._onWithdrawMovementFile); + } + + _onConfirmMovementFile() { + $a.toast.showSuccess($al.controller.edit._languageBundle.alerts.confirmed_success); + // Got to view current movement file + $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.view, null, {id: $al.model.edit.movementFile.id})); + } + + _onWithdrawMovementFile() { + $a.toast.showSuccess($al.controller.edit._languageBundle.alerts.withdraw_success); + // Got to view current movement file + $a.navigation.navigateTo($a.utils.formatUrl($al.model.edit.urls.action.view, null, {id: $al.model.edit.movementFile.id})); + } + + doEvacuation() { + let is_evacuation_location = $al.view.edit._elements_evacuation.is_evacuation_location.data.element.prop("checked"); + + if (is_evacuation_location) { + $al.model.edit._viewModel.set("canChangeDestination", true); + $al.model.edit._restCalls.countries.execute(null, null, $al.controller.edit._onLoadCountries); + } else { + $al.model.edit._viewModel.set("canChangeDestination", false); + } + } + +} + +getSessionStorageID(); +_registerMVCSection("edit", EditModel, EditView, EditController); \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/static/scripts/movement-file/edit/file.entitlements.js b/e-rights-front-office/src/main/webapp/static/scripts/movement-file/edit/file.entitlements.js new file mode 100644 index 0000000..4f72e01 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/scripts/movement-file/edit/file.entitlements.js @@ -0,0 +1,270 @@ +class EntitlementsModel { + + constructor() { + + this._urls = { + action: { + viewTud: $a.utils.url(null, "/requests/view-tud.do"), + viewAdvRem: $a.utils.url(null, "/requests/view-adv-rem.do"), + viewTotalRem: $a.utils.url(null, "/requests/view-total-rem.do"), + viewClrRem: $a.utils.url(null, "/requests/view-clr-rem.do"), + viewIns: $a.utils.url(null, "/requests/view-installation.do"), + viewTopUp: $a.utils.url(null, "/requests/view-topup.do"), + viewRst: $a.utils.url(null, "/requests/view-resettlement.do") + }, + movementFileView: "/erights/movement-files/view.do", + }; + this._restCalls = { + getEntitlementTypeCat: new $a.GetRestCall(null, "/internal/api/entitlement-types-cat"), + getEntitlementTypes: new $a.GetRestCall(null, "/internal/api/entitlement-types"), + getEntitlementType: new $a.GetRestCall(null, "/internal/api/entitlement-types"), + getEntitlementMaxOptions: new $a.GetRestCall(null, "/internal/api/entitlement-maxs-options"), + createClearingRequest: new $a.PostRestCall(null, "/internal/api/clearing-requests"), + createResettlementRequest: new $a.PostRestCall(null, "/internal/api/resettlement-requests/{movementFileId}") + }; + + } + + init(dataPoolExecutor) { + dataPoolExecutor.add("getEntitlementMaxOptions", $al.model.entitlements._restCalls.getEntitlementMaxOptions, null, null); + } + + notifyDataRetrieved(data) { + $al.model.entitlements.getEntitlementMaxOptions = data.get("getEntitlementMaxOptions").data; + + $al.view.entitlements._initializeView(); + } + +} + +class EntitlementsView { + + constructor() { + this._templates = new $a.DataContainer("entitlements"); + this._elements = new $a.DataContainer("entitlements"); + + this._templates.data(new $a.KendoTemplateData()); + this._templates.node("actions").data(new $a.KendoTemplateData()); + this._templates.node("type").data(new $a.KendoTemplateData()); + //this._templates.node("type").node("edit").node("items").data(new $a.KendoTemplateData()); + this._templates.node("type").node("view").data(new $a.KendoTemplateData()); + // this._templates.node("type").node("edit").data(new $a.KendoTemplateData()); + this._templates.node("type").node("view").node("items").data(new $a.KendoTemplateData()); + // this._templates.node("type").node("edit").node("items").data(new $a.KendoTemplateData()); + + this._elements.node("entitlementTypes").data(new $a.KendoElementData()); + this._elements.node("non_default_ent_types").data(new $a.KendoElementData()); + + this._elements.node("type").node("view").data(new $a.KendoElementData()); + this._elements.node("type").node("view").node("items").data(new $a.KendoElementData()); + + this._elements.node("type").node("edit").data(new $a.KendoElementData()); + this._elements.node("type").node("edit").node("items").data(new $a.KendoElementData()); + + this._elements.node("goToDeclaration").data(new $a.KendoElementData()); + this._elements.node("start_declaration_button_hint").data(new $a.KendoElementData()); + this._elements.node("info_after_declaration_creation_top").data(new $a.KendoElementData()); + this._elements.node("info_after_declaration_creation_side").data(new $a.KendoElementData()); + } + + render() { + $al.view.entitlements._templates.data.compile(); + $al.view.entitlements._templates.actions.data.compile(); + + if (!$a.utils.isNull($al.model.declaration.declaration) && $al.model.declaration.declaration.state === 'CREATED') { + + // Declaration created, hide button and hint: + $al.view.entitlements._elements.goToDeclaration.data.element.attr("hidden", true); + $al.view.entitlements._elements.start_declaration_button_hint.data.element.attr("hidden", true); + // Show post-creation label: + $al.view.entitlements._elements.info_after_declaration_creation_top.data.element.attr("hidden", false); + $al.view.entitlements._elements.info_after_declaration_creation_side.data.element.attr("hidden", false); + + } else { + + // Declaration not yet created, show enabled/disabled button and hint: + $al.view.entitlements._elements.goToDeclaration.data.element.attr("hidden", false); + $al.view.entitlements._elements.start_declaration_button_hint.data.element.attr("hidden", false); + // Hide post-creation info label + $al.view.entitlements._elements.info_after_declaration_creation_top.data.element.attr("hidden", true); + $al.view.entitlements._elements.info_after_declaration_creation_side.data.element.attr("hidden", true); + + // Enable/disable button according to situation + if ($a.utils.isNull($al.model.declaration.declaration) || !$al.model.declaration.declaration.enable || !$al.controller.isMovementFileActive()) { + $al.view.entitlements._elements.goToDeclaration.data.element.attr("disabled", true); + $al.view.entitlements._elements.start_declaration_button_hint.data.element.text( + $al.controller.entitlements._languageBundle.hints.you_can_add_decl_when_rates_set); + } else { + $al.view.entitlements._elements.goToDeclaration.data.element.attr("disabled", false); + $al.view.entitlements._elements.start_declaration_button_hint.data.element.text( + $al.controller.entitlements._languageBundle.hints.please_fill_declaration); + } + } + } + + renderEntitlementTypes() { + + + var dataSourceListView = new kendo.data.DataSource({ + transport: { + read: function (options) { + $.ajax({ + url: $al.model.entitlements._restCalls.getEntitlementType._url, + dataType: "json", // "jsonp" is required for cross-domain requests; use "json" for same-domain requests + // send the updated data items as the "models" service parameter encoded in JSON + data: { + + movementFileId: $fileId + }, + success: function (result) { + // notify the data source that the request succeeded + options.success(result); + $al.view.entitlements._showpopOvers(); + }, + error: function (result) { + // notify the data source that the request failed + options.error(result); + } + }); + } + }, + schema: { + model: { + id: "id", + status: "ACTIVE", + movementFileId: "movementFileId", + defaultEntType: "defaultEntType", + enable: "enable", + entitlementMaxList: [{ + id: "id", + maxValue: { + amount: "amount", + currency: "EUR" + }, + entitlementMaxCat: { + id: "id", + description: "description", + entitlementTypeCatId: "entitlementTypeCatId" + }, + entitlementMaxOption: { + id: "id", + description: "description" + }, + comments: "comments", + flatRateDuplicator: "flatRateDuplicator" + }] + + } + } + + }); + + + $al.model.entitlements.dataSourceListView = dataSourceListView; + + $al.view.entitlements._elements.entitlementTypes.data.element.kendoListView({ + dataSource: dataSourceListView, + template: $al.view.entitlements._templates.type.view.data.template, + // editTemplate: $al.view.entitlements._templates.type.edit.data.template, + autoBind: true, + editable: true, + save: function (e) { + + } + }); + + $al.view.entitlements._elements.entitlementTypes.data.component = "kendoListView"; + $al.view.entitlements._elements.entitlementTypes.data.element.removeClass('k-widget k-listview'); + } + + _initializeView() { + var viewModel = new kendo.data.Model.define(); + $al.model.entitlements._viewModel = new viewModel(); + $al.model.entitlements._viewModel.entitlementTypes = $al.model.entitlements.entitlementTypes; + $al.model.entitlements._viewModel.editMode = false; + $al.model.entitlements._viewModel.goToDeclaration = $al.controller.entitlements._goToDeclaration; + $al.model.entitlements._viewModel.goToGuidelines = $al.controller.entitlements._goToGuidelines; + $al.model.entitlements._viewModel.canUpdateDeclaration = $al.model.permissions.canUpdateDeclaration || $al.model.permissions.isOwner; + $al.model.entitlements._viewModel.showCreationOfClearing = false; //the list of request is ordered so first if adv req is paid we set it as true, if there is a clearing we set it as false. + + } + + _showpopOvers() { + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }); + + + } +} + +class EntitlementsController { + + constructor() { + this._languageBundle = null; + } + + notifyReady(languageBundlePoolExecutor) { + languageBundlePoolExecutor.add("entitlements", "common.messages.e-rights", "e_rights.movement_files.entitlements", false); + } + + notifyLanguageBundleReady(languageBundles) { + $al.controller.entitlements._languageBundle = languageBundles.get("entitlements"); + } + + notifyDataInitialized() { + if ($al.model.permissions.canConsultEntitlements || $al.model.permissions.isOwner) { + + $al.view.entitlements.render(); + $al.view.entitlements.renderEntitlementTypes(); + // $al.view.entitlements.renderEntitlementTypeCatNotAssignedmentTypeCat(); + + + + + kendo.bind($al.view.entitlements._templates.data.wrapperSelector, $al.model.entitlements._viewModel); + + } + } + + declarationUpdate() { + // after declaration is submitted we call this method to update the entitlements and requests from the server + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model.entitlements.notifyDataRetrieved); + + $al.model.entitlements.init(dataPoolExecutor); + + $al.controller.entitlements.notifyDataInitialized(); + } + + doCreateClearingRequest(advanceId) { + + + $al.model.entitlements._restCalls.createClearingRequest.execute(null, {requestId: advanceId}, $al.controller.entitlements._createClearingRequestResponse); + } + + _createClearingRequestResponse(data) { + + $a.toast.showSuccess($al.controller.entitlements._languageBundle.alerts.created_clearing_request_success); + $a.navigation.navigateTo($a.utils.formatUrl($al.model.entitlements._urls.action.viewClrRem, null, {requestId: data.id})); + } + + doCreateResettlementRequest(event) { + $al.model.entitlements._restCalls.createResettlementRequest.execute({ movementFileId: $al.model.movementFile.id }, null, $al.controller.entitlements._createResettlementRequestResponse); + } + + _createResettlementRequestResponse(data) { + $a.toast.showSuccess($al.controller.entitlements._languageBundle.alerts.created_resettlement_request_success); + $a.navigation.navigateTo($a.utils.formatUrl($al.model.entitlements._urls.action.viewRst, null, {requestId: data.id})); + } + + + _goToDeclaration() { + $("#declaration-tab").click(); + } + + _goToGuidelines() { + $("#info-tab").click(); + } +} + +_registerMVCSection("entitlements", EntitlementsModel, EntitlementsView, EntitlementsController); \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/static/scripts/movement-file/edit/file.info.js b/e-rights-front-office/src/main/webapp/static/scripts/movement-file/edit/file.info.js new file mode 100644 index 0000000..3361493 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/scripts/movement-file/edit/file.info.js @@ -0,0 +1,324 @@ +class InfoModel { + + constructor() { + this._restCalls = { + + + getDocumentSections: new $a.GetRestCall(null, "/internal/api/movement-docs/sections"), + + + }; + this.urls = { + action: { + viewMovementFile: $a.utils.url(null, "/movement-files/view.do"), + viewInfo: $a.utils.url(null, "/documents/view.do") + + } + }; + } + + + // init() { + // + // $al.model.info._restCalls.getInfo.execute({documentId: 4},null , $al.model.info.onInfoRetrieved); + // + // + // + // } + + init() { + $al.view.info._initializeView(); + $al.view.info._bindView(); + + $al.view.info.render(); + + } + + refreshInfo() { + $al.model.info.init(); + } + + +} + +class InfoView { + + constructor() { + + this._templates = new $a.DataContainer("info"); + this._elements = new $a.DataContainer("info"); + + this._templates.data(new $a.KendoTemplateData()); + + this._elements.node("documentDocs").data(new $a.KendoElementData()); + + + this._templates.node("section").data(new $a.KendoTemplateData()); + + + this._templates.node("section").node("edit").data(new $a.KendoTemplateData()); + + this._templates.node("section").node("edit").node("items").data(new $a.KendoTemplateData()); + + + this._templates.node("section").node("view").data(new $a.KendoTemplateData()); + + this._templates.node("section").node("view").node("items").data(new $a.KendoTemplateData()); + + + } + + render() { + + + $al.view.info._templates.data.compile(); + + $al.view.info._renderDocumentSections(); + + + } + + renderEmptyTemplate() { + $al.view.info._templates.data.compile(); + } + + _renderDocumentSections() { + + var dataSourceListView = new kendo.data.DataSource({ + transport: { + read: function (options) { + $.ajax({ + url: $al.model.info._restCalls.getDocumentSections._url, + dataType: "json", + + success: function (result) { + // notify the data source that the request succeeded + options.success(result); + }, + error: function (result) { + // notify the data source that the request failed + options.error(result); + } + }); + }, + update: function (options) { + + $al.model.info._restCalls.updateDocumentSections.execute(null, null, options.data, $al.controller.info.confirmUpdate); + options.success(); + + } + }, + schema: { + model: { + id: "id", + description: "string", + movementType: "integer", + movementContext: "integer", + hod: "boolean", + + familyPosting: "boolean", + sortOrder: "integer", + /* movementDocs : [{ + id:"-9999", + description: "", + linkText: "", + link: "", + movementDocSectionId: "integer", + sortOrder: "integer", + movementDocAttachment: { + id:"", + fileUid: "", + fileName: "", + movementDocId : "", + + } + }],*/ + + + } + } + + + }); + + + $al.model.info.dataSourceListView = dataSourceListView; + + $al.view.info._elements.documentDocs.data.element.kendoListView({ + dataSource: dataSourceListView, + template: $al.view.info._templates.section.view.data.template, + + autoBind: true, + editable: true, + save: function (e) { + + }, + edit: function (e) { + + $al.controller.info._editInit(e); + } + }); + + $al.view.info._elements.documentDocs.data.component = "kendoListView"; + $al.view.info._elements.documentDocs.data.element.removeClass('k-widget k-listview'); + } + + + _initializeView() { + var viewModel = new kendo.data.Model.define(); + + $al.model.info._viewModel = new viewModel({ + + document: $al.model.info.document, + + onUpdateAndApproveInfo: function () { + $al.controller.info.doUpdateAndApproveInfo(); + }, + onRejectInfo: function () { + $al.controller.info.doUpdateAndRejectInfo(); + }, + showMarkAsPaidDialog: function () { + $al.controller.info.doShowMarkAsPaidDialog(); + }, + onDiscardChanges: function () { + $al.controller.info.refreshPage(); + }, + fileAsync: $al.fileManagement.getAsyncSettings("fileName"), + fileUpload: $al.fileManagement.onUpload.bind(null, "claim-id"), + fileRemove: $al.fileManagement.onRemove, + fileSuccess: $al.controller.info._onOperationSuccess, + displayClaimApproveRejectButtons: false, + canApprove: false, + canReject: false, + canMarkAsPaid: false, + canPay: false, + isTotalAmountDisabled: true, + onResubmit: function () { + + $al.controller.info.doResubmit(); + }, + someClaimRejected: false, + }); + + + } + + _bindView() { + + kendo.bind($al.view.info._templates.data.wrapperSelector, $al.model.info._viewModel); + + + } +} + +class InfoController { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller.info._onLanguageBundleReady, "common.messages.e-rights", "e_rights.documents", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller.info._languageBundle = languageBundle; + + $al.model.info.init(); + $al.notifyOnReadyMvc(); + } + + doUpdateAndApproveInfo() { + + + if ($al.controller.info.validateBeforeUpdate('APPROVE')) { + + $al.model.info._restCalls.updateInfo.execute(null, null, $al.model.info._viewModel.document, $al.controller.info._updateInfoResponse); + } + + + } + + + confirmUpdate(data) { + $a.toast.showSuccess($al.controller.info._languageBundle.movement_docs.section_update_success); + } + + + _editInit(e) { + + + if (typeof e.model.movementDocs !== "undefined") { + for (var i = 0; i < e.model.movementDocs.length; i++) { + var item = e.model.movementDocs.at(i); + var files = []; + + if (typeof item.get("movementDocAttachment") !== "undefined" && typeof item.get("movementDocAttachment").fileName !== "undefined") { + var modelArray = item.get("movementDocAttachment"); + var attch = {}; + attch.name = '' + modelArray.fileName + ''; + attch.title = modelArray.fileName; + attch.extension = '.' + modelArray.fileName.split('.').pop(); + attch.fileUid = modelArray.fileUid; + files.push(attch); + + + } + + //$("#claim-id").kendoUpload({ + e.item.find("#claim-id" + item.id).kendoUpload({ + async: $al.fileManagement.getAsyncSettings("fileName"), + upload: $al.fileManagement.onUpload.bind(null, "claim-id" + item.id), + remove: $al.fileManagement.onRemove, + success: $al.controller.info._onOperationSuccess, + localization: { + select: "Select File ..." + }, + files: files + }); + } + } + + } + + _onOperationSuccess(event, c) { + + + var dRow = $(event.sender.element.closest("tr")) + var mRow = dRow.prev(".k-master-row") + + + var listView = $("#document-documentDocs").data("kendoListView"); + + var dataItem = listView.dataItem(mRow); + + + var attachments = []; + var attch = {}; + if (event.operation == "remove") { + attch.fileUid = event.files[0].fileUid; + attch.remove = true; + } else { + attch.fileUid = event.response.uid; + attch.fileName = event.response.name; + } + + // attch.id = "23"; + + + attch.declarationPersonId = dataItem.id; + + attachments.push(attch); + + + dataItem.set("attachments", attachments); + dataItem.dirty = true; + + $($(".k-file-name")[0]).removeAttr("title"); + + } + + +} + +_registerMVCSection("info", InfoModel, InfoView, InfoController); diff --git a/e-rights-front-office/src/main/webapp/static/scripts/movement-file/edit/file.js b/e-rights-front-office/src/main/webapp/static/scripts/movement-file/edit/file.js new file mode 100644 index 0000000..0cd4a23 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/scripts/movement-file/edit/file.js @@ -0,0 +1,290 @@ +class Model { + + constructor() { + this._restCalls = { + movementFile: new $a.GetRestCall(null, "/internal/api/movement-files/{fileId}"), + permissions: new $a.GetRestCall(null, "/internal/api/permissions") + + }; + $_mvcSections.forEach((section, id) => { + this[id] = new section.model(); + }); + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model._onDataRetrieved); + + dataPoolExecutor.add("permissions", $al.model._restCalls.permissions, null, {movementFileId: $fileId}); + if (!($fileId === null)) { + dataPoolExecutor.add("movementFile", $al.model._restCalls.movementFile, {fileId: $fileId}); + } + + $_mvcSections.forEach((section, id) => { + if ($al.model[id].init) { + $al.model[id].init(dataPoolExecutor); + } + }); + + dataPoolExecutor.run(); + } + + refreshMovementFile() { + + $al.model._restCalls.movementFile.execute({fileId: $fileId}, null, $al.model._onRefreshMovementFileDataRetrive); + } + + _onRefreshMovementFileDataRetrive(data) { + + $al.model.edit.movementFile = data; + $al.view.edit._initializeView($al.model.edit.movementFile); + // $al.view.edit._bindView(); + $al.view.edit._bindView(); + + } + + _onDataRetrieved(data) { + $al.model.permissions = data.get("permissions").data; + $al.model.movementFile = data.get("movementFile").data; + + $al.view.initializeView($al.model.movementFile); + + $_mvcSections.forEach((section, id) => { + if ($al.model[id].notifyDataRetrieved) { + $al.model[id].notifyDataRetrieved(data); + } + }); + + $al.controller._onDataInitialized(); + } + +} + +class View { + + constructor() { + this._templates = new $a.DataContainer("file"); + this._elements = new $a.DataContainer("file"); + + this._templates.data(new $a.KendoTemplateData()); + + this._templates.node("title").data(new $a.KendoTemplateData()); + + this._elements.node("mainsection").data(new $a.KendoElementData()); + + $_mvcSections.forEach((section, id) => { + this[id] = new section.view(); + }); + } + + _render() { + $al.view._templates.data.compile(); + $al.view._templates.title.data.compile(); + } + + initializeView(movementFile) { + var viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel(); + + $al.model._viewModel.fileId = movementFile.fileId; + + if (movementFile.state === "WITHDRAWN") { + $al.model._viewModel.formattedStatus = '' + movementFile.state + '' + } else { + $al.model._viewModel.formattedStatus = '' + movementFile.state + '' + } + + } + + +} + +class Controller { + + constructor() { + this._languageBundle = null; + + $_mvcSections.forEach((section, id) => { + this[id] = new section.controller(); + }); + } + + _onDataInitialized() { + $al.view._render(); + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + + $_mvcSections.forEach((section, id) => { + if ($al.controller[id].notifyDataInitialized) { + $al.controller[id].notifyDataInitialized(); + } + }); + + $al.notifyOnReadyMvc(); + } + + _onReady() { + var languageBundlePoolExecutor = new $a.LanguageBundlePoolExecutor($al.controller._onLanguageBundleReady); + languageBundlePoolExecutor.add("main", "common.messages.e-rights", "e_rights.movement_files", false); + $_mvcSections.forEach((section, id) => { + if ($al.controller[id].notifyReady) { + $al.controller[id].notifyReady(languageBundlePoolExecutor); + } + }); + languageBundlePoolExecutor.run(); + } + + _onLanguageBundleReady(languageBundles) { + + $al.controller._languageBundle = languageBundles.get("main"); + $_mvcSections.forEach((section, id) => { + if ($al.controller[id].notifyLanguageBundleReady) { + $al.controller[id].notifyLanguageBundleReady(languageBundles); + } + }); + + $al.model.init(); + } + + isMovementFileActive() { + if ($al.model.movementFile.state === $movementFileStatus.PENDING.code + || $al.model.movementFile.state === $movementFileStatus.WITHDRAWN.code + || $al.model.movementFile.state === $movementFileStatus.CONFIRMED.code + || $al.model.movementFile.state === $movementFileStatus.ONGOING.code) { + + return true; + } + return false; + } + + canCreateResettlementRequest() { + if ($al.model.movementFile.state !== $movementFileStatus.CANCELLED.code + && $al.model.movementFile.state !== $movementFileStatus.COMPLETED.code + && $al.model.movementFile.state !== $movementFileStatus.DRAFT.code + && $al.model.movementFile.state !== $movementFileStatus.PENDING.code + && $al.model.movementFile.movementContext.name === 'EOC' + && $al.model.movementFile.movementType.movementType === 'DEL-PoOrg' + && $al.model.declaration.declaration.hasOwnProperty("userCreatedAt") + && $al.model.declaration.declaration.userCreatedAt != null + && $al.model.permissions.isOwner + && $al.controller._areRemovalsAndTudRequestsPaid()) { + + return true; + } + return false; + } + + _areRemovalsAndTudRequestsPaid() { + let hasTUD = false; + let isTUDPaid = false; + let hasRemovalAdvance = false; + let isRemovalClearingPaid = false; + let hasRemovalReimbursement = false; + let isRemovalReimbursementPaid = false; + + let entitlements = $al.model.declaration.entitlementTypes; + for (let i = 0; i < entitlements.length; i++) { + let entitlement = entitlements[i]; + + if (entitlement.enable && entitlement.entitlementTypeCat.code === 'TUD') { + if (entitlement.requests) { + let requests = entitlement.requests; + for (let j = 0; j < requests.length; j++) { + let request = requests[j]; + if (request.requestType === "TudRequest") { + hasTUD = true; + if ( + request.state === "PAID" && + ( + request.p2pHubOrderStatus === "SUCCESS" + || request.abacWorkflowState === "CLO100" + || ( + request.abacRequestState === "MANUAL_PAYMENT_SUMMA" + && request.paymentDirectiveReference != null + ) + ) + ) { + isTUDPaid = true; + } + } + } + } + } + + if (entitlement.enable && entitlement.entitlementTypeCat.code === 'REM') { + if (entitlement.requests) { + let requests = entitlement.requests; + for (let j = 0; j < requests.length; j++) { + let request = requests[j]; + + if (request.requestType === "AdvanceRequest") { + hasRemovalAdvance = true; + } + + if ( + request.requestType === "ClearingRequest" && + request.state === "PAID" && + ( + request.p2pHubOrderStatus === "SUCCESS" + || request.abacWorkflowState === "CLO100" + || ( + request.abacRequestState === "MANUAL_PAYMENT_SUMMA" + && request.paymentDirectiveReference != null + ) + ) + ) { + isRemovalClearingPaid = true; + } + + if (request.requestType === "TotalRemRequest") { + hasRemovalReimbursement = true; + if ( + request.state === "PAID" && + ( + request.p2pHubOrderStatus === "SUCCESS" + || request.abacWorkflowState === "CLO100" + || ( + request.abacRequestState === "MANUAL_PAYMENT_SUMMA" + && request.paymentDirectiveReference != null + ) + ) + ) { + isRemovalReimbursementPaid = true; + } + } + } + } + } + } + + return !( + (hasTUD && !isTUDPaid) + || (hasRemovalAdvance && !isRemovalClearingPaid) + || (hasRemovalReimbursement && !isRemovalReimbursementPaid) + ); + } + isEocDateWithinThreeYears() { + let result = false; + if ($al.model.movementFile.estimatedEndDate) { + let eocDate = new Date($al.model.movementFile.estimatedEndDate); + let now = new Date(); + let eocDateThreeYears = new Date( + eocDate.setFullYear(eocDate.getFullYear() + 3)); + result = now < eocDateThreeYears; + } + return result; + } + + +} + +getSessionStorageID(); +let $_mvcSections = new Map(); + +function _registerMVCSection(id, model, view, controller) { + $_mvcSections.set(id, { + model: model, + view: view, + controller: controller + }); +} + +$al.mvc(Model, View, Controller, true); \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/static/scripts/request/edit.tud.request.js b/e-rights-front-office/src/main/webapp/static/scripts/request/edit.tud.request.js new file mode 100644 index 0000000..aa6aa7a --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/scripts/request/edit.tud.request.js @@ -0,0 +1,662 @@ +class RequestModel { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.model(); + }); + this._restCalls = { + + getRequest: new $a.GetRestCall(null, "/internal/api/tud-requests/{requestId}"), + getBankInfo: new $a.GetRestCall(null, "/internal/api/bank-accounts"), + movementFile: new $a.GetRestCall(null, "/internal/api/movement-files/{fileId}"), + permissions: new $a.GetRestCall(null, "/internal/api/permissions"), + getStateHistory: new $a.GetRestCall(null, "/internal/api/tud-requests/{requestId}/stateMachineHistory") + }; + this.urls = { + action: { + viewMovementFile: $a.utils.url(null, "/movement-files/view.do"), + viewRequest: $a.utils.url(null, "/requests/view-tud.do") + + } + }; + } + + + // init() { + // + // $al.model._restCalls.getRequest.execute({requestId: $requestId},null , $al.model.onRequestRetrieved); + // + // + // + // } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.model.onRequestRetrieved); + + dataPoolExecutor.add("request", $al.model._restCalls.getRequest, {requestId: $requestId}); + dataPoolExecutor.add("requestComments", $al.model.requestCommon._restCalls.getRequestComments, {requestId: $requestId}); + dataPoolExecutor.add("stateMachineHistory", $al.model._restCalls.getStateHistory, {requestId: $requestId}); + dataPoolExecutor.add("childrenRequest", $al.model.requestCommon._restCalls.getRequestsByParent, {requestId: $requestId}); + + dataPoolExecutor.run(); + + } + + + refreshRequest(requestId) { + $al.model.init(); + //$al.model._restCalls.getRequest.execute({requestId: $requestId},null, $al.model.onRequestRetrieved); + } + + refreshAfterUpdateState(data) { + + + $al.model._viewModel.request.state = data.state; + $al.model.refreshRequest($al.model._viewModel.request.id); + } + + onRequestRetrieved(data) { + $al.model.request = data.get("request").data; + $al.model.requestComments = data.get("requestComments").data; + $al.model.stateMachineHistory = data.get("stateMachineHistory").data; + $al.model.request.children = data.get("childrenRequest").data; + + $al.model._restCalls.movementFile.execute({fileId: $al.model.request.declaration.movementFileId}, null, $al.model.onMovementFileRetrieved); + } + + onMovementFileRetrieved(data) { + $al.model.movementFile = data; + $al.model._restCalls.permissions.execute(null, {movementFileId: data.id}, $al.model.onPermissionsRetrieved); + + } + + onPermissionsRetrieved(data) { + $al.model.permissions = data; + + $al.view._initializeView(); + $al.view._bindView(); + $al.view._calculateAmountData(); + $al.view.render(); + } + +} + +class RequestView { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.view(); + }); + + this._templates = new $a.DataContainer("request"); + this._elements = new $a.DataContainer("request"); + + this._templates.data(new $a.KendoTemplateData()); + + this._elements.node("relatives").node("grid").data(new $a.KendoElementData()); + this._elements.node("comments").node("grid").data(new $a.KendoElementData()); + this._elements.node("payment_date").data(new $a.KendoElementData()); + this._elements.node("payment_order").data(new $a.KendoElementData()); + this._elements.node("payment_request").data(new $a.KendoElementData()); + this._elements.node("payment_date_div").data(new $a.KendoElementData()); + this._elements.node("payment_order_div").data(new $a.KendoElementData()); + this._elements.node("payment_request_div").data(new $a.KendoElementData()); + this._elements.node("communication_bottom").data(new $a.KendoElementData()); + this._elements.node("communication_side").data(new $a.KendoElementData()); + this._templates.node("relatives").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("comments").node("grid").data(new $a.KendoTemplateData()); + this._templates.node("add_comment").data(new $a.KendoTemplateData()); + this._templates.node("calculation").data(new $a.KendoTemplateData()); + this._templates.node("calculation").node("staff").data(new $a.KendoTemplateData()); + this._templates.node("calculation").node("family").data(new $a.KendoTemplateData()); + this._templates.node("calculation").node("total").data(new $a.KendoTemplateData()); + this._templates.node("mark_as_paid").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("mark_as_paid").node("dialog").data(new $a.KendoTemplateData(), "body"); + this._templates.node("ok_cancel").node("dialog").data(new $a.KendoTemplateData(), "footer"); + + } + + render() { + + + $al.view._templates.data.compile(); + $al.view._templates.relatives.grid.data.compile(); + $al.view._renderRelativesGrid(); + $al.controller._renderCommunication(); + + $al.view._templates.comments.grid.data.compile(); + $al.view._templates.add_comment.data.compile(); + + $al.view.requestCommon._renderCommentsGrid(); + + + } + + renderEmptyTemplate() { + $al.view._templates.data.compile(); + } + + + _renderRelativesGrid() { + + var dataSource = new kendo.data.DataSource({ + autoSync: true, + transport: { + read: function (options) { + options.success($al.model._viewModel.request.requestPersons); + }, + destroy: function (options) { + + $al.model._viewModel.request.requestPersons = dataSource.data().slice(); + options.success($al.model._viewModel.request.requestPersons); + }, + create: function (options) { + + + options.success($al.model._viewModel.request.requestPersons); + + }, + update: function (options) { + var data = options.data; + + + // Copy data back to dataList + $al.model._viewModel.request.requestPersons = dataSource.data().slice(); + options.success([data.models[0]]); + + + } + }, + data: $al.model._viewModel.request.requestPersons, + batch: true, + schema: { + model: { + id: "id", + fields: { + id: {type: "number", nullable: false}, + + + claim: {type: "boolean"}, + declared: {type: "boolean"}, + declarationId: {type: "number"}, + claimApproved: {type: "boolean"}, + remarks: {type: "string"}, + insEligible: {type: "boolean"}, + remEligible: {type: "boolean"}, + tudEligible: {type: "boolean"}, + tudEligibleReason: {type: "string"}, + relation: {type: "string"}, + person: { + id: {type: "number"}, + age: {type: "number"}, + firstName: {type: "string"}, + lastName: {type: "string"} + }, + relative: { + id: {type: "number"}, + age: {type: "number"}, + firstName: {type: "string"}, + lastName: {type: "string"} + }, attachments: [{ + declarationPersonId: {type: "number"}, + fileName: {type: "string"}, + fileUid: {type: "string"} + }] + + } + } + } + }); + + + var columnsDesc = [ + {hidden: true, field: "id"}, + { + field: "remarks", hidden: true + }, + { + field: "declared", + title: "Join", + width: "35px", + template: "check_boxcheck_box_outline_blank", + headerAttributes: { + "class": "pl-1 pr-0" + }, + attributes: { + "class": "pl-2 pr-0" + } + }, + { + field: "relative.lastName", + title: "Name", + width: "30%", + attributes: { + "class": "font-weight-medium" + }, + template: "#= relative.lastName #, #= relative.firstName #" + }, + /*{ + field: "relative.firstName", + title: "First Name", + width: "16%", + attributes: { + "class": "pl-2 pr-0 font-weight-medium" + } + },*/ + { + field: "relative.age", + title: "Age", + width: "50px" + }, + { + field: "relation", + title: "Relation", + width: "12%" + }, + { + field: "tudEligible", + title: "TUD Eligible", + width: "112", + template: "
    " + + "#if(tudEligible == false) {#" + + "
    " + + "cancel" + + + "help
    " + + + "" + + + "#} else {#" + + "check_circle" + + + "#}#" + + "
    ", + headerTemplate: 'TUD Eligible info', + headerAttributes: { + "class": "pl-0" + }, + attributes: { + "class": "pl-0 pr-0 " + }, + }, + { + title: "Actions", + width: "250", + hidden: !$al.model._viewModel.displayClaimApproveRejectButtons, + headerAttributes: { + style: "text-align: right;" + }, + attributes: { + style: "text-align: right", + "class": "pl-0 " + } + }, + ]; + + + $al.view._elements.relatives.grid.data.element.kendoGrid({ + dataSource: dataSource, + scrollable: false, + noRecords: { + template: "" + }, + sortable: true, + detailTemplate: kendo.template($("#claims-edit-template").html()), + dataBound: $al.view._onDataBound, + columns: columnsDesc, + autoBind: true, + }); + + $al.view._elements.relatives.grid.data.component = "kendoGrid"; + + $al.view._templates.calculation.staff.data.compile(); + $al.view._templates.calculation.family.data.compile(); + $al.view._templates.calculation.total.data.compile(); + + $('textarea.autoSize').autosize(); + } + + _isTUDEnabled(entitlementList) { + for (var i = 0; i < entitlementList.total(); i++) { + var item = entitlementList.at(i); + if (item.enable && item.entitlementTypeCat.code === "TUD") { + return true; + } + } + return false; + } + + _onDataBound(e) { + + if (typeof e !== "undefined" && typeof $al.model._viewModel !== "undefined") { + e.preventDefault(); + /* Hide the first colum with the row expand toggle */ + this.wrapper.find(".k-hierarchy-col").remove();//remove col elements for hierarchy column + this.wrapper.find(".k-hierarchy-cell").hide();//remove cell elements for hierarchy column + + // iterate the table rows and apply custom row and cell styling + var rows = e.sender.tbody.children(); + for (var j = 0; j < rows.length; j++) { + + var row = $(rows[j]); + var dataItem = e.sender.dataItem(row); + + var declared = dataItem.get("declared"); + var claimApproved = dataItem.get("claimApproved"); + var claim = dataItem.get("claim"); + if (declared) { + row.addClass("k-state-selected"); + + if (claim) { + this.expandRow(row); + row.addClass('eeas-has-claim'); + if (typeof (claimApproved) == "undefined") { + //person declare with claim pending to approve + if ($al.model._viewModel.displayClaimApproveRejectButtons) { + $(row).closest("tr").find(".k-grid-join").removeClass("d-none").addClass("d-inline-block"); + $(row).closest("tr").find(".k-grid-remove").removeClass("d-none").addClass("d-inline-block"); + } + $al.view.addEntitlePerson(); + + } else if (claimApproved) { + + //person declare with claim approved + if ($al.model._viewModel.displayClaimApproveRejectButtons) { + $(row).closest("tr").find(".k-grid-join").removeClass("d-inline-block").addClass("d-none"); + $(row).closest("tr").find(".k-grid-remove").removeClass("d-none").addClass("d-inline-block"); + } + $(row).closest("tr").find(".eeas-badge-status").removeClass("d-none badge-danger").addClass("badge-success").html("Claim accepted"); + $(row).closest("tr").addClass("k-state-selected"); + + $al.view.addEntitlePerson(); + + } else if (!claimApproved) { + //person declare with claim denied + if ($al.model._viewModel.displayClaimApproveRejectButtons) { + $(row).closest("tr").find(".k-grid-join").removeClass("d-none").addClass("d-inline-block"); + $(row).closest("tr").find(".k-grid-remove").removeClass("d-inline-block").addClass("d-none"); + } + $(row).closest("tr").find(".eeas-badge-status").removeClass("d-none badge-success").addClass("badge-danger").html("Claim Refused"); + $(row).closest("tr").removeClass("k-state-selected"); + + } + } else { + //person declared and elegible + $al.view.addEntitlePerson(); + } + + + } + } + + //when we do not have the calculated amount we create the structure + if (typeof $al.model._viewModel.request.calculatedTotalAmount == "undefined") { + $al.model._viewModel.request.calculatedTotalAmount = {}; + $al.model._viewModel.request.calculatedTotalAmount.amount = $al.model._viewModel.request.totalAmount.amount; + $al.model._viewModel.request.calculatedTotalAmount.currency = $al.model._viewModel.request.totalAmount.currency; + } + + if (typeof $al.model._viewModel.request.flatRateFamilyCalculations == "undefined") { + $al.model._viewModel.request.calculatedTotalAmount.amount = $al.model._viewModel.request.flatRateCalculations.amount; + + } else if (typeof $al.model._viewModel.request.flatRateCalculations.amount == "undefined") { + $al.model._viewModel.request.calculatedTotalAmount.amount = $al.model._viewModel.request.flatRateFamilyCalculations.amount; + + } else { + $al.model._viewModel.request.calculatedTotalAmount.amount = parseFloat($al.model._viewModel.request.flatRateCalculations.amount) + parseFloat($al.model._viewModel.request.flatRateFamilyCalculations.amount); + + } + + //when the total amount is set by HR we do not modify it with the calculated value + if (typeof $al.model._viewModel.request.totalAmount == "undefined" || typeof $al.model._viewModel.request.totalAmountNotSet != "undefined") { + //we enter when the totalamount has not been set up yet by HR + $al.model._viewModel.request.totalAmountNotSet = true; + $al.model._viewModel.request.totalAmount = {}; + $al.model._viewModel.request.totalAmount.amount = $al.model._viewModel.request.calculatedTotalAmount.amount; + $al.model._viewModel.request.totalAmount.currency = $al.model._viewModel.request.calculatedTotalAmount.currency; + + $al.model._viewModel.request.totalAmount.amount = parseFloat($al.model._viewModel.request.totalAmount.amount).toFixed(2); + $al.model._viewModel.request.calculatedTotalAmount.amount = parseFloat($al.model._viewModel.request.calculatedTotalAmount.amount).toFixed(2); + } + // Formatted values for UI consistency + $al.model._viewModel.request.flatRate.amountFormatted = kendo.toString($al.model._viewModel.request.flatRate.amount, "n2"); + if ($al.model._viewModel.request.flatRateFamilyExists) { + $al.model._viewModel.request.flatRateFamily.amountFormatted = kendo.toString($al.model._viewModel.request.flatRateFamily.amount, "n2"); + $al.model._viewModel.request.flatRateFamilyCalculations.amountFormatted = kendo.toString(parseFloat($al.model._viewModel.request.flatRateFamilyCalculations.amount), "n2"); + } + $al.model._viewModel.request.flatRateCalculations.amountFormatted = kendo.toString(parseFloat($al.model._viewModel.request.flatRateCalculations.amount), "n2"); + + $al.model._viewModel.request.calculatedTotalAmount.amountFormatted = kendo.toString(parseFloat($al.model._viewModel.request.calculatedTotalAmount.amount), "n2"); + $al.model._viewModel.request.totalAmount.amountFormatted = kendo.toString(parseFloat($al.model._viewModel.request.totalAmount.amount), "n2"); + + + $al.model._viewModel.request.calculatedTotalAmount.amount = parseFloat($al.model._viewModel.request.calculatedTotalAmount.amount).toFixed(2); + $al.model._viewModel.request.totalAmount.amount = parseFloat($al.model._viewModel.request.totalAmount.amount).toFixed(2); + + //I need to bind this, it is not refreshing the template with the data + $al.view._bindView(); + + } + + $('[data-toggle="popover"]').popover({ + trigger: 'hover' + }) + $('[data-toggle="tooltip"]').tooltip(); + + } + + addEntitlePerson() { + if ($al.model._viewModel.request.flatRateFamilyExists) { + $al.model._viewModel.set("request.flatRateFamilyCalculations.people", $al.model._viewModel.request.flatRateFamilyCalculations.people + 1); + + $al.model._viewModel.request.flatRateFamilyCalculations.amount = parseFloat($al.model._viewModel.request.flatRateFamilyCalculations.amount) + parseFloat($al.model._viewModel.request.flatRateFamily.amount); + $al.model._viewModel.request.flatRateFamilyCalculations.amountFormatted = kendo.toString($al.model._viewModel.request.flatRateFamilyCalculations.amount, "n2"); + $al.model._viewModel.request.flatRateFamilyCalculations.amount = parseFloat($al.model._viewModel.request.flatRateFamilyCalculations.amount).toFixed(2); + + } else { + $al.model._viewModel.request.flatRateCalculations.people++; + $al.model._viewModel.request.flatRateCalculations.amount = parseFloat($al.model._viewModel.request.flatRateCalculations.amount) + parseFloat($al.model._viewModel.request.flatRate.amount); + $al.model._viewModel.request.flatRateCalculations.amountFormatted = kendo.toString($al.model._viewModel.request.flatRateCalculations.amount, "n2"); + $al.model._viewModel.request.flatRateCalculations.amount = parseFloat($al.model._viewModel.request.flatRateCalculations.amount).toFixed(2); + } + + + } + + _calculateAmountData() { + $al.model._viewModel.request.flatRateTotals = {}; + + + if ($a.utils.isNotNull($al.model._viewModel.request.flatRateFamily)) { + $al.model._viewModel.request.flatRateFamilyExists = true; + $al.model._viewModel.request.flatRateFamilyCalculations = {}; + $al.model._viewModel.set("request.flatRateFamilyCalculations.people", 0); + $al.model._viewModel.request.flatRateFamilyCalculations.amount = 0; + + + } else { + $al.model._viewModel.request.flatRateFamilyExists = false; + } + //check family member included if family member included + $al.model._viewModel.request.flatRateCalculations = {}; + + if ($al.model._viewModel.request.includesStaffMember) { + + $al.model._viewModel.request.flatRateCalculations.people = 1; + $al.model._viewModel.request.flatRateCalculations.amountFormatted = kendo.toString($al.model._viewModel.request.flatRate.amount, "n2"); + $al.model._viewModel.request.flatRateCalculations.amount = $al.model._viewModel.request.flatRate.amount; + + } else { + $al.model._viewModel.request.flatRateCalculations.people = 0; + $al.model._viewModel.request.flatRateCalculations.amount = kendo.toString(0, "n2"); + } + + + if ($a.utils.isNotNull($al.model._viewModel.request.flatRateFamily)) { + $al.model._viewModel.request.flatRateFamilyExists = true; + $al.model._viewModel.request.flatRateFamilyCalculations = {}; + $al.model._viewModel.set("request.flatRateFamilyCalculations.people", 0); + $al.model._viewModel.request.flatRateFamilyCalculations.amount = 0; + } else { + $al.model._viewModel.request.flatRateFamilyExists = false; + + } + + + } + + + _initializeView() { + var viewModel = new kendo.data.Model.define(); + $al.model.request = $al.controller.requestCommon.prepareRequestForModelView(); + $al.model._viewModel = new viewModel({ + isVisible: true, + message: " ", + name: $al.model.movementFile.jobHolder.lastName + ' ' + $al.model.movementFile.jobHolder.firstName, + perId: $al.model.request.staffMember.id, + request: $al.model.request, + movementFile: $al.model.movementFile, + showAbacInfo: function () { + $al.controller.doShowAbacInfo(); + }, + displayClaimApproveRejectButtons: false, + canApprove: false, + canReject: false, + canMarkAsPaid: false, + canPayAbac: false, + displayChildrenRequest: false, + isTotalAmountDisabled: true, + showPaymentInfoP2P: false, + showPaymentInfoABAC: false, + showPaymentAbacInfoLink: false, + isApproved: false, + isRejected: false, + isAwaiting: false, + // --- Comments logic --- + commentsVisible: $al.model.permissions.canApproveTopUpRequest && $al.view.requestCommon._thereAreComments(false), + canAddComments: $al.model.permissions.canApproveTopUpRequest, + onCreateTopupRequest() { + $al.controller.requestCommon.createTopupRequest($al.model.request.id, $al.model.request.requestType); + }, + + // ---------------------- + onResubmit: function () { + + $al.controller.doResubmit(); + }, + someClaimRejected: false, + + }); + + + if ($a.utils.isNotNull($al.model.request.requestPersons)) { + $al.model._viewModel.request.requestPersons = $al.model.request.requestPersons; + } else { + $al.model._viewModel.request.requestPersons = []; + } + + // Format Iban code + if (!$a.utils.isNull($al.model._viewModel.request.personBankInfo) + && $al.model._viewModel.request.personBankInfo.ibanCode.length > 0) { + $al.model._viewModel.request.personBankInfo.ibanCode = $al.model._viewModel.request.personBankInfo.ibanCode.replace(/\W/gi, '').replace(/(.{4})/g, '$1 '); + } + + if ($a.utils.isNull($al.model.request.personBankInfo)) { + $al.model.request.personBankInfo = {baf: '', ibanCode: ''} + } + var _movFileFrozen = $al.model.movementFile.state === 'CANCELLED' || $al.model.movementFile.state === 'COMPLETED'; + + + //Permission to show buttons, in case of needing a security checker I do it here instead of a template + + if ($al.model._viewModel.request.state == 'APPROVED') { + $al.model._viewModel.canReject = true; + $al.model._viewModel.canMarkAsPaid = $al.model.permissions.canPayRemRequestManually; + $al.model._viewModel.isApproved = true; + } else if ($al.model._viewModel.request.state == 'DISPUTED') { + $al.model._viewModel.canApprove = true; + } else if ($al.model._viewModel.request.state == 'REJECTED') { + $al.model._viewModel.canResubmit = true; + $al.model._viewModel.isRejected = true; + } else if ($al.model._viewModel.request.state == 'AWAITING') { + $al.model._viewModel.canApprove = true; + $al.model._viewModel.canReject = true; + $al.model._viewModel.isTotalAmountDisabled = true; + $al.model._viewModel.displayClaimApproveRejectButtons = true; + $al.model._viewModel.isAwaiting = true; + } else if ($al.model._viewModel.request.state == 'PAID' || $al.model._viewModel.request.state == 'CLO100') { + + $al.model._viewModel.canReject = true; + if ($al.model._viewModel.request.state == 'PAID') { + + $// Create Top-up permission + $al.controller.requestCommon.setTopupPermission(false, _movFileFrozen); + $al.model._viewModel.showPaymentInfo = true; + $al.model._viewModel.requestPaymentDateFormatted = kendo.toString(kendo.parseDate($al.model.request.paymentDate), 'MMM dd, yyyy'); + } + + } + } + + _bindView() { + kendo.bind($al.view._templates.data.wrapperSelector, $al.model._viewModel); + } +} + +class RequestController { + + constructor() { + $_mvcSections.forEach((section, id) => { + this[id] = new section.controller(); + }); + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.requests", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + + $al.model.init(); + $al.notifyOnReadyMvc(); + } + + + _renderCommunication() { + $al.view._elements.communication_bottom.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + $al.view._elements.communication_bottom.data.component = "kendoListView"; + + // Item duplicated to display in different position in html based responsive breaking points (bottom of the page or right column + $al.view._elements.communication_side.data.element.kendoListView({ + dataSource: $al.controller._prepareCommunication($al.model.stateMachineHistory), + template: kendo.template($("#request-communication-template").html()) + }).removeClass('k-widget k-listview'); + + $al.view._elements.communication_side.data.component = "kendoListView"; + } + + _prepareCommunication(data) { + if (typeof data !== "undefined" && data !== null) { + data.forEach(n => { + if (n.arrivalState) + n.arrivalState = $al.controller._languageBundle.stateMachine[n.arrivalState.toLowerCase()]; + }); + } + return data; + } + + //discard changes + + refreshPage() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.viewRequest, null, {requestId: $requestId})); + } + + +} + +$al.mvc(RequestModel, RequestView, RequestController, true); diff --git a/e-rights-front-office/src/main/webapp/static/scripts/welcome.js b/e-rights-front-office/src/main/webapp/static/scripts/welcome.js new file mode 100644 index 0000000..efd004c --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/scripts/welcome.js @@ -0,0 +1,180 @@ +class Model { + + constructor() { + this.urls = { + action: { + create: $a.utils.url(null, "/movement-files/create-job-holder.do"), + list: $a.utils.url(null, "/list/movement-files.do"), + listPostingEntitlements: $a.utils.url(null, "/list/posting-allowances.do"), + viewAccommodationDeclaration: $a.utils.url(null, "/posting-allowances/accommodation-declaration-view.do"), + rotationalEntitlementList: $a.utils.url(null, "/list/allowances.do"), + + } + }; + this._restCalls = { + permissions: new $a.GetRestCall(null, "/internal/api/permissions"), + deleteMovementFileFromSession: new $a.DeleteRestCall(null, "/internal/api/session/collect-movement-file-data"), + canCreateAccommodationDeclaration: new $a.GetRestCall(null, "/internal/api/accommodation-declarations/can-create-accommodation-declaration"), + createAccommodationDeclaration: new $a.PostRestCall(null, + "/internal/api/accommodation-declarations/{personId}"), + }; + + } + + init() { + var dataPoolExecutor = new $a.RestCallPoolExecutor($al.controller._onLoadData); + dataPoolExecutor.add("permissions", $al.model._restCalls.permissions); + dataPoolExecutor.add("accommodationDeclarationPerId", $al.model._restCalls.canCreateAccommodationDeclaration); + dataPoolExecutor.run(); + } + +} + +class View { + + constructor() { + this._elements = new $a.DataContainer("dashboard"); + this._templates = new $a.DataContainer("dashboard"); + + this._templates.node("content").data(new $a.KendoTemplateData()); + this._templates.node("empty").data(new $a.KendoTemplateData()); + + } + + _render() { + $al.view._templates.empty.data.compile(); + + $al.view._bindViewForUserWithoutPermissionsButOwnerOfMF(); + + } + + _bindViewForUserWithoutPermissionsButOwnerOfMF() { + var viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel(); + // staff member must see the list if he/she owns at least a movement file or posting allowance + let isOwnerOfAtLeastOneMovementFile = $al.model.permissions.isOwnerOfAtLeastOneMovementFile; + if (isOwnerOfAtLeastOneMovementFile + || $al.model.permissions.canListMovementFiles) { + $al.model._viewModel.set("canSeeTheList", true); + } else { + $al.model._viewModel.set("canSeeTheList", false); + } + + $al.model._viewModel.set("canCreateAccommodationDeclaration", + !!$al.model.accommodationDeclarationPerId); + + $al.model._viewModel.set("canListRotationalEntitlements", + isOwnerOfAtLeastOneMovementFile + || $al.model.permissions.canConsultEntitlements); + + $al.model._viewModel.set("canListPostingEntitlements", + $al.model.permissions.canListPostingEntitlements + || $al.model.permissions.canOwnAtLeastOnePostingAllowance); + + kendo.bind($al.view._templates.empty.data.wrapperSelector, $al.model._viewModel); + } + + + _initializeView() { + + $al.model.postingAllowance = $al.controller.postingAllowanceCommon.preparePostingAllowanceForModelView(); + const viewModel = new kendo.data.Model.define(); + $al.model._viewModel = new viewModel({ + createNewAccommodationDeclaration: function () { + $al.controller.createNewAccommodationDeclaration(); + } + }); + + } +} + +class Controller { + + constructor() { + this._languageBundle = null; + } + + _onReady() { + $a.languageBundle.retrieve($al.controller._onLanguageBundleReady, "common.messages.e-rights", "e_rights.movement_files.list", false); + } + + _onLanguageBundleReady(languageBundle) { + $al.controller._languageBundle = languageBundle; + + $al.model.init(); + + $al.notifyOnReadyMvc(); + } + + _onLoadData(data) { + $al.model.permissions = data.get("permissions").data; + $al.model.accommodationDeclarationPerId = data.get("accommodationDeclarationPerId").data; + + $al.view._render(); + } + + _createMovementFile() { + $al.model._restCalls.deleteMovementFileFromSession.execute(null, null, null, null, $al.controller.goToCreateMovementFile()); + } + goToCreateMovementFile() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.create, null, null)); + } + + goToListMovementFile() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.list, null, null)); + } + createNewAccommodationDeclaration() { + $al.controller._doCreateAccommodation(); + + } + goToListPostingEntitlements() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.listPostingEntitlements, null, null)); + } + + _doCreateAccommodation() { + + var muteAnankeErrorToast = new $a.RestCallExceptionHandlingData().disable(); + $al.model._restCalls.createAccommodationDeclaration.execute( + {personId: $al.model.accommodationDeclarationPerId}, null, + null, null,$al.controller._createAccommodationDeclarationResponse,true,muteAnankeErrorToast); + } + + _createAccommodationDeclarationResponse(data) { + + if (data.status === 201) { + $a.navigation.navigateTo($a.utils.formatUrl( + $al.model.urls.action.viewAccommodationDeclaration, null, + {postingAllowanceId: data.responseJSON})); + } else { + $a.loading.toggle(false); + const validationErrors = $al.controller._extractMessagesFromResponse( + data); + $a.toast.showError(validationErrors); + } + } + + _extractMessagesFromResponse(response) { + const text = response.responseText; + let textObj = null; + try { + textObj = JSON.parse(text); + } catch (parseExc) { + // Do nothing, textObj remains null + } + const messages = []; + if (textObj && textObj.items && textObj.items.length > 0) { + textObj.items.forEach(item => { + messages.push(item.message); + }); + return messages; + } else { + return [text]; + } + } + + goToListRotationalEntitlements() { + $a.navigation.navigateTo($a.utils.formatUrl($al.model.urls.action.rotationalEntitlementList, null, null)); + } +} + +$al.mvc(Model, View, Controller, true); \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/static/templates/list/list.file.html b/e-rights-front-office/src/main/webapp/static/templates/list/list.file.html new file mode 100644 index 0000000..895b13f --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/templates/list/list.file.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/static/templates/movement-file/edit/file.declaration.html b/e-rights-front-office/src/main/webapp/static/templates/movement-file/edit/file.declaration.html new file mode 100644 index 0000000..83b8898 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/templates/movement-file/edit/file.declaration.html @@ -0,0 +1,427 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-front-office/src/main/webapp/static/templates/movement-file/edit/file.edit.html b/e-rights-front-office/src/main/webapp/static/templates/movement-file/edit/file.edit.html new file mode 100644 index 0000000..8efc8fd --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/templates/movement-file/edit/file.edit.html @@ -0,0 +1,456 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-front-office/src/main/webapp/static/templates/movement-file/edit/file.entitlements.html b/e-rights-front-office/src/main/webapp/static/templates/movement-file/edit/file.entitlements.html new file mode 100644 index 0000000..2652ad6 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/templates/movement-file/edit/file.entitlements.html @@ -0,0 +1,420 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/e-rights-front-office/src/main/webapp/static/templates/movement-file/edit/file.html b/e-rights-front-office/src/main/webapp/static/templates/movement-file/edit/file.html new file mode 100644 index 0000000..aab5cbb --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/templates/movement-file/edit/file.html @@ -0,0 +1,56 @@ + + + + + diff --git a/e-rights-front-office/src/main/webapp/static/templates/movement-file/edit/file.info.html b/e-rights-front-office/src/main/webapp/static/templates/movement-file/edit/file.info.html new file mode 100644 index 0000000..bac1df5 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/templates/movement-file/edit/file.info.html @@ -0,0 +1,93 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/static/templates/posting-allowances/posting.allowances.html b/e-rights-front-office/src/main/webapp/static/templates/posting-allowances/posting.allowances.html new file mode 100644 index 0000000..4914113 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/templates/posting-allowances/posting.allowances.html @@ -0,0 +1,46 @@ + + + + + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/static/templates/request/allowances.html b/e-rights-front-office/src/main/webapp/static/templates/request/allowances.html new file mode 100644 index 0000000..582faa5 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/templates/request/allowances.html @@ -0,0 +1,38 @@ + + + + + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/static/templates/request/edit.adv.rem.request.html b/e-rights-front-office/src/main/webapp/static/templates/request/edit.adv.rem.request.html new file mode 100644 index 0000000..14a7704 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/templates/request/edit.adv.rem.request.html @@ -0,0 +1,448 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/static/templates/request/edit.tud.request.html b/e-rights-front-office/src/main/webapp/static/templates/request/edit.tud.request.html new file mode 100644 index 0000000..de1899c --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/templates/request/edit.tud.request.html @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/e-rights-front-office/src/main/webapp/static/templates/welcome.html b/e-rights-front-office/src/main/webapp/static/templates/welcome.html new file mode 100644 index 0000000..ab12ce8 --- /dev/null +++ b/e-rights-front-office/src/main/webapp/static/templates/welcome.html @@ -0,0 +1,106 @@ + + + + \ No newline at end of file diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..be7b20e --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,286 @@ +{ + "name": "e-rights", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.13.6", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/axios/-/axios-1.13.6.tgz", + "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + } + } +} diff --git a/node_modules/asynckit/LICENSE b/node_modules/asynckit/LICENSE new file mode 100644 index 0000000..c9eca5d --- /dev/null +++ b/node_modules/asynckit/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Alex Indigo + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/asynckit/README.md b/node_modules/asynckit/README.md new file mode 100644 index 0000000..ddcc7e6 --- /dev/null +++ b/node_modules/asynckit/README.md @@ -0,0 +1,233 @@ +# asynckit [![NPM Module](https://img.shields.io/npm/v/asynckit.svg?style=flat)](https://www.npmjs.com/package/asynckit) + +Minimal async jobs utility library, with streams support. + +[![PhantomJS Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=browser&style=flat)](https://travis-ci.org/alexindigo/asynckit) +[![Linux Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=linux:0.12-6.x&style=flat)](https://travis-ci.org/alexindigo/asynckit) +[![Windows Build](https://img.shields.io/appveyor/ci/alexindigo/asynckit/v0.4.0.svg?label=windows:0.12-6.x&style=flat)](https://ci.appveyor.com/project/alexindigo/asynckit) + +[![Coverage Status](https://img.shields.io/coveralls/alexindigo/asynckit/v0.4.0.svg?label=code+coverage&style=flat)](https://coveralls.io/github/alexindigo/asynckit?branch=master) +[![Dependency Status](https://img.shields.io/david/alexindigo/asynckit/v0.4.0.svg?style=flat)](https://david-dm.org/alexindigo/asynckit) +[![bitHound Overall Score](https://www.bithound.io/github/alexindigo/asynckit/badges/score.svg)](https://www.bithound.io/github/alexindigo/asynckit) + + + +AsyncKit provides harness for `parallel` and `serial` iterators over list of items represented by arrays or objects. +Optionally it accepts abort function (should be synchronously return by iterator for each item), and terminates left over jobs upon an error event. For specific iteration order built-in (`ascending` and `descending`) and custom sort helpers also supported, via `asynckit.serialOrdered` method. + +It ensures async operations to keep behavior more stable and prevent `Maximum call stack size exceeded` errors, from sync iterators. + +| compression | size | +| :----------------- | -------: | +| asynckit.js | 12.34 kB | +| asynckit.min.js | 4.11 kB | +| asynckit.min.js.gz | 1.47 kB | + + +## Install + +```sh +$ npm install --save asynckit +``` + +## Examples + +### Parallel Jobs + +Runs iterator over provided array in parallel. Stores output in the `result` array, +on the matching positions. In unlikely event of an error from one of the jobs, +will terminate rest of the active jobs (if abort function is provided) +and return error along with salvaged data to the main callback function. + +#### Input Array + +```javascript +var parallel = require('asynckit').parallel + , assert = require('assert') + ; + +var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] + , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] + , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] + , target = [] + ; + +parallel(source, asyncJob, function(err, result) +{ + assert.deepEqual(result, expectedResult); + assert.deepEqual(target, expectedTarget); +}); + +// async job accepts one element from the array +// and a callback function +function asyncJob(item, cb) +{ + // different delays (in ms) per item + var delay = item * 25; + + // pretend different jobs take different time to finish + // and not in consequential order + var timeoutId = setTimeout(function() { + target.push(item); + cb(null, item * 2); + }, delay); + + // allow to cancel "leftover" jobs upon error + // return function, invoking of which will abort this job + return clearTimeout.bind(null, timeoutId); +} +``` + +More examples could be found in [test/test-parallel-array.js](test/test-parallel-array.js). + +#### Input Object + +Also it supports named jobs, listed via object. + +```javascript +var parallel = require('asynckit/parallel') + , assert = require('assert') + ; + +var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } + , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } + , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] + , expectedKeys = [ 'first', 'one', 'two', 'four', 'eight', 'sixteen', 'thirtyTwo', 'sixtyFour' ] + , target = [] + , keys = [] + ; + +parallel(source, asyncJob, function(err, result) +{ + assert.deepEqual(result, expectedResult); + assert.deepEqual(target, expectedTarget); + assert.deepEqual(keys, expectedKeys); +}); + +// supports full value, key, callback (shortcut) interface +function asyncJob(item, key, cb) +{ + // different delays (in ms) per item + var delay = item * 25; + + // pretend different jobs take different time to finish + // and not in consequential order + var timeoutId = setTimeout(function() { + keys.push(key); + target.push(item); + cb(null, item * 2); + }, delay); + + // allow to cancel "leftover" jobs upon error + // return function, invoking of which will abort this job + return clearTimeout.bind(null, timeoutId); +} +``` + +More examples could be found in [test/test-parallel-object.js](test/test-parallel-object.js). + +### Serial Jobs + +Runs iterator over provided array sequentially. Stores output in the `result` array, +on the matching positions. In unlikely event of an error from one of the jobs, +will not proceed to the rest of the items in the list +and return error along with salvaged data to the main callback function. + +#### Input Array + +```javascript +var serial = require('asynckit/serial') + , assert = require('assert') + ; + +var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] + , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] + , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] + , target = [] + ; + +serial(source, asyncJob, function(err, result) +{ + assert.deepEqual(result, expectedResult); + assert.deepEqual(target, expectedTarget); +}); + +// extended interface (item, key, callback) +// also supported for arrays +function asyncJob(item, key, cb) +{ + target.push(key); + + // it will be automatically made async + // even it iterator "returns" in the same event loop + cb(null, item * 2); +} +``` + +More examples could be found in [test/test-serial-array.js](test/test-serial-array.js). + +#### Input Object + +Also it supports named jobs, listed via object. + +```javascript +var serial = require('asynckit').serial + , assert = require('assert') + ; + +var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] + , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] + , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] + , target = [] + ; + +var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } + , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } + , expectedTarget = [ 1, 1, 4, 16, 64, 32, 8, 2 ] + , target = [] + ; + + +serial(source, asyncJob, function(err, result) +{ + assert.deepEqual(result, expectedResult); + assert.deepEqual(target, expectedTarget); +}); + +// shortcut interface (item, callback) +// works for object as well as for the arrays +function asyncJob(item, cb) +{ + target.push(item); + + // it will be automatically made async + // even it iterator "returns" in the same event loop + cb(null, item * 2); +} +``` + +More examples could be found in [test/test-serial-object.js](test/test-serial-object.js). + +_Note: Since _object_ is an _unordered_ collection of properties, +it may produce unexpected results with sequential iterations. +Whenever order of the jobs' execution is important please use `serialOrdered` method._ + +### Ordered Serial Iterations + +TBD + +For example [compare-property](compare-property) package. + +### Streaming interface + +TBD + +## Want to Know More? + +More examples can be found in [test folder](test/). + +Or open an [issue](https://github.com/alexindigo/asynckit/issues) with questions and/or suggestions. + +## License + +AsyncKit is licensed under the MIT license. diff --git a/node_modules/asynckit/bench.js b/node_modules/asynckit/bench.js new file mode 100644 index 0000000..c612f1a --- /dev/null +++ b/node_modules/asynckit/bench.js @@ -0,0 +1,76 @@ +/* eslint no-console: "off" */ + +var asynckit = require('./') + , async = require('async') + , assert = require('assert') + , expected = 0 + ; + +var Benchmark = require('benchmark'); +var suite = new Benchmark.Suite; + +var source = []; +for (var z = 1; z < 100; z++) +{ + source.push(z); + expected += z; +} + +suite +// add tests + +.add('async.map', function(deferred) +{ + var total = 0; + + async.map(source, + function(i, cb) + { + setImmediate(function() + { + total += i; + cb(null, total); + }); + }, + function(err, result) + { + assert.ifError(err); + assert.equal(result[result.length - 1], expected); + deferred.resolve(); + }); +}, {'defer': true}) + + +.add('asynckit.parallel', function(deferred) +{ + var total = 0; + + asynckit.parallel(source, + function(i, cb) + { + setImmediate(function() + { + total += i; + cb(null, total); + }); + }, + function(err, result) + { + assert.ifError(err); + assert.equal(result[result.length - 1], expected); + deferred.resolve(); + }); +}, {'defer': true}) + + +// add listeners +.on('cycle', function(ev) +{ + console.log(String(ev.target)); +}) +.on('complete', function() +{ + console.log('Fastest is ' + this.filter('fastest').map('name')); +}) +// run async +.run({ 'async': true }); diff --git a/node_modules/asynckit/index.js b/node_modules/asynckit/index.js new file mode 100644 index 0000000..455f945 --- /dev/null +++ b/node_modules/asynckit/index.js @@ -0,0 +1,6 @@ +module.exports = +{ + parallel : require('./parallel.js'), + serial : require('./serial.js'), + serialOrdered : require('./serialOrdered.js') +}; diff --git a/node_modules/asynckit/lib/abort.js b/node_modules/asynckit/lib/abort.js new file mode 100644 index 0000000..114367e --- /dev/null +++ b/node_modules/asynckit/lib/abort.js @@ -0,0 +1,29 @@ +// API +module.exports = abort; + +/** + * Aborts leftover active jobs + * + * @param {object} state - current state object + */ +function abort(state) +{ + Object.keys(state.jobs).forEach(clean.bind(state)); + + // reset leftover jobs + state.jobs = {}; +} + +/** + * Cleans up leftover job by invoking abort function for the provided job id + * + * @this state + * @param {string|number} key - job id to abort + */ +function clean(key) +{ + if (typeof this.jobs[key] == 'function') + { + this.jobs[key](); + } +} diff --git a/node_modules/asynckit/lib/async.js b/node_modules/asynckit/lib/async.js new file mode 100644 index 0000000..7f1288a --- /dev/null +++ b/node_modules/asynckit/lib/async.js @@ -0,0 +1,34 @@ +var defer = require('./defer.js'); + +// API +module.exports = async; + +/** + * Runs provided callback asynchronously + * even if callback itself is not + * + * @param {function} callback - callback to invoke + * @returns {function} - augmented callback + */ +function async(callback) +{ + var isAsync = false; + + // check if async happened + defer(function() { isAsync = true; }); + + return function async_callback(err, result) + { + if (isAsync) + { + callback(err, result); + } + else + { + defer(function nextTick_callback() + { + callback(err, result); + }); + } + }; +} diff --git a/node_modules/asynckit/lib/defer.js b/node_modules/asynckit/lib/defer.js new file mode 100644 index 0000000..b67110c --- /dev/null +++ b/node_modules/asynckit/lib/defer.js @@ -0,0 +1,26 @@ +module.exports = defer; + +/** + * Runs provided function on next iteration of the event loop + * + * @param {function} fn - function to run + */ +function defer(fn) +{ + var nextTick = typeof setImmediate == 'function' + ? setImmediate + : ( + typeof process == 'object' && typeof process.nextTick == 'function' + ? process.nextTick + : null + ); + + if (nextTick) + { + nextTick(fn); + } + else + { + setTimeout(fn, 0); + } +} diff --git a/node_modules/asynckit/lib/iterate.js b/node_modules/asynckit/lib/iterate.js new file mode 100644 index 0000000..5d2839a --- /dev/null +++ b/node_modules/asynckit/lib/iterate.js @@ -0,0 +1,75 @@ +var async = require('./async.js') + , abort = require('./abort.js') + ; + +// API +module.exports = iterate; + +/** + * Iterates over each job object + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {object} state - current job status + * @param {function} callback - invoked when all elements processed + */ +function iterate(list, iterator, state, callback) +{ + // store current index + var key = state['keyedList'] ? state['keyedList'][state.index] : state.index; + + state.jobs[key] = runJob(iterator, key, list[key], function(error, output) + { + // don't repeat yourself + // skip secondary callbacks + if (!(key in state.jobs)) + { + return; + } + + // clean up jobs + delete state.jobs[key]; + + if (error) + { + // don't process rest of the results + // stop still active jobs + // and reset the list + abort(state); + } + else + { + state.results[key] = output; + } + + // return salvaged results + callback(error, state.results); + }); +} + +/** + * Runs iterator over provided job element + * + * @param {function} iterator - iterator to invoke + * @param {string|number} key - key/index of the element in the list of jobs + * @param {mixed} item - job description + * @param {function} callback - invoked after iterator is done with the job + * @returns {function|mixed} - job abort function or something else + */ +function runJob(iterator, key, item, callback) +{ + var aborter; + + // allow shortcut if iterator expects only two arguments + if (iterator.length == 2) + { + aborter = iterator(item, async(callback)); + } + // otherwise go with full three arguments + else + { + aborter = iterator(item, key, async(callback)); + } + + return aborter; +} diff --git a/node_modules/asynckit/lib/readable_asynckit.js b/node_modules/asynckit/lib/readable_asynckit.js new file mode 100644 index 0000000..78ad240 --- /dev/null +++ b/node_modules/asynckit/lib/readable_asynckit.js @@ -0,0 +1,91 @@ +var streamify = require('./streamify.js') + , defer = require('./defer.js') + ; + +// API +module.exports = ReadableAsyncKit; + +/** + * Base constructor for all streams + * used to hold properties/methods + */ +function ReadableAsyncKit() +{ + ReadableAsyncKit.super_.apply(this, arguments); + + // list of active jobs + this.jobs = {}; + + // add stream methods + this.destroy = destroy; + this._start = _start; + this._read = _read; +} + +/** + * Destroys readable stream, + * by aborting outstanding jobs + * + * @returns {void} + */ +function destroy() +{ + if (this.destroyed) + { + return; + } + + this.destroyed = true; + + if (typeof this.terminator == 'function') + { + this.terminator(); + } +} + +/** + * Starts provided jobs in async manner + * + * @private + */ +function _start() +{ + // first argument – runner function + var runner = arguments[0] + // take away first argument + , args = Array.prototype.slice.call(arguments, 1) + // second argument - input data + , input = args[0] + // last argument - result callback + , endCb = streamify.callback.call(this, args[args.length - 1]) + ; + + args[args.length - 1] = endCb; + // third argument - iterator + args[1] = streamify.iterator.call(this, args[1]); + + // allow time for proper setup + defer(function() + { + if (!this.destroyed) + { + this.terminator = runner.apply(null, args); + } + else + { + endCb(null, Array.isArray(input) ? [] : {}); + } + }.bind(this)); +} + + +/** + * Implement _read to comply with Readable streams + * Doesn't really make sense for flowing object mode + * + * @private + */ +function _read() +{ + +} diff --git a/node_modules/asynckit/lib/readable_parallel.js b/node_modules/asynckit/lib/readable_parallel.js new file mode 100644 index 0000000..5d2929f --- /dev/null +++ b/node_modules/asynckit/lib/readable_parallel.js @@ -0,0 +1,25 @@ +var parallel = require('../parallel.js'); + +// API +module.exports = ReadableParallel; + +/** + * Streaming wrapper to `asynckit.parallel` + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {stream.Readable#} + */ +function ReadableParallel(list, iterator, callback) +{ + if (!(this instanceof ReadableParallel)) + { + return new ReadableParallel(list, iterator, callback); + } + + // turn on object mode + ReadableParallel.super_.call(this, {objectMode: true}); + + this._start(parallel, list, iterator, callback); +} diff --git a/node_modules/asynckit/lib/readable_serial.js b/node_modules/asynckit/lib/readable_serial.js new file mode 100644 index 0000000..7822698 --- /dev/null +++ b/node_modules/asynckit/lib/readable_serial.js @@ -0,0 +1,25 @@ +var serial = require('../serial.js'); + +// API +module.exports = ReadableSerial; + +/** + * Streaming wrapper to `asynckit.serial` + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {stream.Readable#} + */ +function ReadableSerial(list, iterator, callback) +{ + if (!(this instanceof ReadableSerial)) + { + return new ReadableSerial(list, iterator, callback); + } + + // turn on object mode + ReadableSerial.super_.call(this, {objectMode: true}); + + this._start(serial, list, iterator, callback); +} diff --git a/node_modules/asynckit/lib/readable_serial_ordered.js b/node_modules/asynckit/lib/readable_serial_ordered.js new file mode 100644 index 0000000..3de89c4 --- /dev/null +++ b/node_modules/asynckit/lib/readable_serial_ordered.js @@ -0,0 +1,29 @@ +var serialOrdered = require('../serialOrdered.js'); + +// API +module.exports = ReadableSerialOrdered; +// expose sort helpers +module.exports.ascending = serialOrdered.ascending; +module.exports.descending = serialOrdered.descending; + +/** + * Streaming wrapper to `asynckit.serialOrdered` + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} sortMethod - custom sort function + * @param {function} callback - invoked when all elements processed + * @returns {stream.Readable#} + */ +function ReadableSerialOrdered(list, iterator, sortMethod, callback) +{ + if (!(this instanceof ReadableSerialOrdered)) + { + return new ReadableSerialOrdered(list, iterator, sortMethod, callback); + } + + // turn on object mode + ReadableSerialOrdered.super_.call(this, {objectMode: true}); + + this._start(serialOrdered, list, iterator, sortMethod, callback); +} diff --git a/node_modules/asynckit/lib/state.js b/node_modules/asynckit/lib/state.js new file mode 100644 index 0000000..cbea7ad --- /dev/null +++ b/node_modules/asynckit/lib/state.js @@ -0,0 +1,37 @@ +// API +module.exports = state; + +/** + * Creates initial state object + * for iteration over list + * + * @param {array|object} list - list to iterate over + * @param {function|null} sortMethod - function to use for keys sort, + * or `null` to keep them as is + * @returns {object} - initial state object + */ +function state(list, sortMethod) +{ + var isNamedList = !Array.isArray(list) + , initState = + { + index : 0, + keyedList: isNamedList || sortMethod ? Object.keys(list) : null, + jobs : {}, + results : isNamedList ? {} : [], + size : isNamedList ? Object.keys(list).length : list.length + } + ; + + if (sortMethod) + { + // sort array keys based on it's values + // sort object's keys just on own merit + initState.keyedList.sort(isNamedList ? sortMethod : function(a, b) + { + return sortMethod(list[a], list[b]); + }); + } + + return initState; +} diff --git a/node_modules/asynckit/lib/streamify.js b/node_modules/asynckit/lib/streamify.js new file mode 100644 index 0000000..f56a1c9 --- /dev/null +++ b/node_modules/asynckit/lib/streamify.js @@ -0,0 +1,141 @@ +var async = require('./async.js'); + +// API +module.exports = { + iterator: wrapIterator, + callback: wrapCallback +}; + +/** + * Wraps iterators with long signature + * + * @this ReadableAsyncKit# + * @param {function} iterator - function to wrap + * @returns {function} - wrapped function + */ +function wrapIterator(iterator) +{ + var stream = this; + + return function(item, key, cb) + { + var aborter + , wrappedCb = async(wrapIteratorCallback.call(stream, cb, key)) + ; + + stream.jobs[key] = wrappedCb; + + // it's either shortcut (item, cb) + if (iterator.length == 2) + { + aborter = iterator(item, wrappedCb); + } + // or long format (item, key, cb) + else + { + aborter = iterator(item, key, wrappedCb); + } + + return aborter; + }; +} + +/** + * Wraps provided callback function + * allowing to execute snitch function before + * real callback + * + * @this ReadableAsyncKit# + * @param {function} callback - function to wrap + * @returns {function} - wrapped function + */ +function wrapCallback(callback) +{ + var stream = this; + + var wrapped = function(error, result) + { + return finisher.call(stream, error, result, callback); + }; + + return wrapped; +} + +/** + * Wraps provided iterator callback function + * makes sure snitch only called once, + * but passes secondary calls to the original callback + * + * @this ReadableAsyncKit# + * @param {function} callback - callback to wrap + * @param {number|string} key - iteration key + * @returns {function} wrapped callback + */ +function wrapIteratorCallback(callback, key) +{ + var stream = this; + + return function(error, output) + { + // don't repeat yourself + if (!(key in stream.jobs)) + { + callback(error, output); + return; + } + + // clean up jobs + delete stream.jobs[key]; + + return streamer.call(stream, error, {key: key, value: output}, callback); + }; +} + +/** + * Stream wrapper for iterator callback + * + * @this ReadableAsyncKit# + * @param {mixed} error - error response + * @param {mixed} output - iterator output + * @param {function} callback - callback that expects iterator results + */ +function streamer(error, output, callback) +{ + if (error && !this.error) + { + this.error = error; + this.pause(); + this.emit('error', error); + // send back value only, as expected + callback(error, output && output.value); + return; + } + + // stream stuff + this.push(output); + + // back to original track + // send back value only, as expected + callback(error, output && output.value); +} + +/** + * Stream wrapper for finishing callback + * + * @this ReadableAsyncKit# + * @param {mixed} error - error response + * @param {mixed} output - iterator output + * @param {function} callback - callback that expects final results + */ +function finisher(error, output, callback) +{ + // signal end of the stream + // only for successfully finished streams + if (!error) + { + this.push(null); + } + + // back to original track + callback(error, output); +} diff --git a/node_modules/asynckit/lib/terminator.js b/node_modules/asynckit/lib/terminator.js new file mode 100644 index 0000000..d6eb992 --- /dev/null +++ b/node_modules/asynckit/lib/terminator.js @@ -0,0 +1,29 @@ +var abort = require('./abort.js') + , async = require('./async.js') + ; + +// API +module.exports = terminator; + +/** + * Terminates jobs in the attached state context + * + * @this AsyncKitState# + * @param {function} callback - final callback to invoke after termination + */ +function terminator(callback) +{ + if (!Object.keys(this.jobs).length) + { + return; + } + + // fast forward iteration index + this.index = this.size; + + // abort jobs + abort(this); + + // send back results we have so far + async(callback)(null, this.results); +} diff --git a/node_modules/asynckit/package.json b/node_modules/asynckit/package.json new file mode 100644 index 0000000..51147d6 --- /dev/null +++ b/node_modules/asynckit/package.json @@ -0,0 +1,63 @@ +{ + "name": "asynckit", + "version": "0.4.0", + "description": "Minimal async jobs utility library, with streams support", + "main": "index.js", + "scripts": { + "clean": "rimraf coverage", + "lint": "eslint *.js lib/*.js test/*.js", + "test": "istanbul cover --reporter=json tape -- 'test/test-*.js' | tap-spec", + "win-test": "tape test/test-*.js", + "browser": "browserify -t browserify-istanbul test/lib/browserify_adjustment.js test/test-*.js | obake --coverage | tap-spec", + "report": "istanbul report", + "size": "browserify index.js | size-table asynckit", + "debug": "tape test/test-*.js" + }, + "pre-commit": [ + "clean", + "lint", + "test", + "browser", + "report", + "size" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/alexindigo/asynckit.git" + }, + "keywords": [ + "async", + "jobs", + "parallel", + "serial", + "iterator", + "array", + "object", + "stream", + "destroy", + "terminate", + "abort" + ], + "author": "Alex Indigo ", + "license": "MIT", + "bugs": { + "url": "https://github.com/alexindigo/asynckit/issues" + }, + "homepage": "https://github.com/alexindigo/asynckit#readme", + "devDependencies": { + "browserify": "^13.0.0", + "browserify-istanbul": "^2.0.0", + "coveralls": "^2.11.9", + "eslint": "^2.9.0", + "istanbul": "^0.4.3", + "obake": "^0.1.2", + "phantomjs-prebuilt": "^2.1.7", + "pre-commit": "^1.1.3", + "reamde": "^1.1.0", + "rimraf": "^2.5.2", + "size-table": "^0.2.0", + "tap-spec": "^4.1.1", + "tape": "^4.5.1" + }, + "dependencies": {} +} diff --git a/node_modules/asynckit/parallel.js b/node_modules/asynckit/parallel.js new file mode 100644 index 0000000..3c50344 --- /dev/null +++ b/node_modules/asynckit/parallel.js @@ -0,0 +1,43 @@ +var iterate = require('./lib/iterate.js') + , initState = require('./lib/state.js') + , terminator = require('./lib/terminator.js') + ; + +// Public API +module.exports = parallel; + +/** + * Runs iterator over provided array elements in parallel + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function parallel(list, iterator, callback) +{ + var state = initState(list); + + while (state.index < (state['keyedList'] || list).length) + { + iterate(list, iterator, state, function(error, result) + { + if (error) + { + callback(error, result); + return; + } + + // looks like it's the last one + if (Object.keys(state.jobs).length === 0) + { + callback(null, state.results); + return; + } + }); + + state.index++; + } + + return terminator.bind(state, callback); +} diff --git a/node_modules/asynckit/serial.js b/node_modules/asynckit/serial.js new file mode 100644 index 0000000..6cd949a --- /dev/null +++ b/node_modules/asynckit/serial.js @@ -0,0 +1,17 @@ +var serialOrdered = require('./serialOrdered.js'); + +// Public API +module.exports = serial; + +/** + * Runs iterator over provided array elements in series + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function serial(list, iterator, callback) +{ + return serialOrdered(list, iterator, null, callback); +} diff --git a/node_modules/asynckit/serialOrdered.js b/node_modules/asynckit/serialOrdered.js new file mode 100644 index 0000000..607eafe --- /dev/null +++ b/node_modules/asynckit/serialOrdered.js @@ -0,0 +1,75 @@ +var iterate = require('./lib/iterate.js') + , initState = require('./lib/state.js') + , terminator = require('./lib/terminator.js') + ; + +// Public API +module.exports = serialOrdered; +// sorting helpers +module.exports.ascending = ascending; +module.exports.descending = descending; + +/** + * Runs iterator over provided sorted array elements in series + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} sortMethod - custom sort function + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function serialOrdered(list, iterator, sortMethod, callback) +{ + var state = initState(list, sortMethod); + + iterate(list, iterator, state, function iteratorHandler(error, result) + { + if (error) + { + callback(error, result); + return; + } + + state.index++; + + // are we there yet? + if (state.index < (state['keyedList'] || list).length) + { + iterate(list, iterator, state, iteratorHandler); + return; + } + + // done here + callback(null, state.results); + }); + + return terminator.bind(state, callback); +} + +/* + * -- Sort methods + */ + +/** + * sort helper to sort array elements in ascending order + * + * @param {mixed} a - an item to compare + * @param {mixed} b - an item to compare + * @returns {number} - comparison result + */ +function ascending(a, b) +{ + return a < b ? -1 : a > b ? 1 : 0; +} + +/** + * sort helper to sort array elements in descending order + * + * @param {mixed} a - an item to compare + * @param {mixed} b - an item to compare + * @returns {number} - comparison result + */ +function descending(a, b) +{ + return -1 * ascending(a, b); +} diff --git a/node_modules/asynckit/stream.js b/node_modules/asynckit/stream.js new file mode 100644 index 0000000..d43465f --- /dev/null +++ b/node_modules/asynckit/stream.js @@ -0,0 +1,21 @@ +var inherits = require('util').inherits + , Readable = require('stream').Readable + , ReadableAsyncKit = require('./lib/readable_asynckit.js') + , ReadableParallel = require('./lib/readable_parallel.js') + , ReadableSerial = require('./lib/readable_serial.js') + , ReadableSerialOrdered = require('./lib/readable_serial_ordered.js') + ; + +// API +module.exports = +{ + parallel : ReadableParallel, + serial : ReadableSerial, + serialOrdered : ReadableSerialOrdered, +}; + +inherits(ReadableAsyncKit, Readable); + +inherits(ReadableParallel, ReadableAsyncKit); +inherits(ReadableSerial, ReadableAsyncKit); +inherits(ReadableSerialOrdered, ReadableAsyncKit); diff --git a/node_modules/axios/CHANGELOG.md b/node_modules/axios/CHANGELOG.md new file mode 100644 index 0000000..fda452c --- /dev/null +++ b/node_modules/axios/CHANGELOG.md @@ -0,0 +1,1416 @@ +# Changelog + +## [1.13.3](https://github.com/axios/axios/compare/v1.13.2...v1.13.3) (2026-01-20) + +### Bug Fixes + +- **http2:** Use port 443 for HTTPS connections by default. ([#7256](https://github.com/axios/axios/issues/7256)) ([d7e6065](https://github.com/axios/axios/commit/d7e60653460480ffacecf85383012ca1baa6263e)) +- **interceptor:** handle the error in the same interceptor ([#6269](https://github.com/axios/axios/issues/6269)) ([5945e40](https://github.com/axios/axios/commit/5945e40bb171d4ac4fc195df276cf952244f0f89)) +- main field in package.json should correspond to cjs artifacts ([#5756](https://github.com/axios/axios/issues/5756)) ([7373fbf](https://github.com/axios/axios/commit/7373fbff24cd92ce650d99ff6f7fe08c2e2a0a04)) +- **package.json:** add 'bun' package.json 'exports' condition. Load the Node.js build in Bun instead of the browser build ([#5754](https://github.com/axios/axios/issues/5754)) ([b89217e](https://github.com/axios/axios/commit/b89217e3e91de17a3d55e2b8f39ceb0e9d8aeda8)) +- silentJSONParsing=false should throw on invalid JSON ([#7253](https://github.com/axios/axios/issues/7253)) ([#7257](https://github.com/axios/axios/issues/7257)) ([7d19335](https://github.com/axios/axios/commit/7d19335e43d6754a1a9a66e424f7f7da259895bf)) +- turn AxiosError into a native error ([#5394](https://github.com/axios/axios/issues/5394)) ([#5558](https://github.com/axios/axios/issues/5558)) ([1c6a86d](https://github.com/axios/axios/commit/1c6a86dd2c0623ee1af043a8491dbc96d40e883b)) +- **types:** add handlers to AxiosInterceptorManager interface ([#5551](https://github.com/axios/axios/issues/5551)) ([8d1271b](https://github.com/axios/axios/commit/8d1271b49fc226ed7defd07cd577bd69a55bb13a)) +- **types:** restore AxiosError.cause type from unknown to Error ([#7327](https://github.com/axios/axios/issues/7327)) ([d8233d9](https://github.com/axios/axios/commit/d8233d9e8e9a64bfba9bbe01d475ba417510b82b)) +- unclear error message is thrown when specifying an empty proxy authorization ([#6314](https://github.com/axios/axios/issues/6314)) ([6ef867e](https://github.com/axios/axios/commit/6ef867e684adf7fb2343e3b29a79078a3c76dc29)) + +### Features + +- add `undefined` as a value in AxiosRequestConfig ([#5560](https://github.com/axios/axios/issues/5560)) ([095033c](https://github.com/axios/axios/commit/095033c626895ecdcda2288050b63dcf948db3bd)) +- add automatic minor and patch upgrades to dependabot ([#6053](https://github.com/axios/axios/issues/6053)) ([65a7584](https://github.com/axios/axios/commit/65a7584eda6164980ddb8cf5372f0afa2a04c1ed)) +- add Node.js coverage script using c8 (closes [#7289](https://github.com/axios/axios/issues/7289)) ([#7294](https://github.com/axios/axios/issues/7294)) ([ec9d94e](https://github.com/axios/axios/commit/ec9d94e9f88da13e9219acadf65061fb38ce080a)) +- added copilot instructions ([3f83143](https://github.com/axios/axios/commit/3f83143bfe617eec17f9d7dcf8bafafeeae74c26)) +- compatibility with frozen prototypes ([#6265](https://github.com/axios/axios/issues/6265)) ([860e033](https://github.com/axios/axios/commit/860e03396a536e9b926dacb6570732489c9d7012)) +- enhance pipeFileToResponse with error handling ([#7169](https://github.com/axios/axios/issues/7169)) ([88d7884](https://github.com/axios/axios/commit/88d78842541610692a04282233933d078a8a2552)) +- **types:** Intellisense for string literals in a widened union ([#6134](https://github.com/axios/axios/issues/6134)) ([f73474d](https://github.com/axios/axios/commit/f73474d02c5aa957b2daeecee65508557fd3c6e5)), closes [/github.com/microsoft/TypeScript/issues/33471#issuecomment-1376364329](https://github.com//github.com/microsoft/TypeScript/issues/33471/issues/issuecomment-1376364329) + +### Reverts + +- Revert "fix: silentJSONParsing=false should throw on invalid JSON (#7253) (#7…" (#7298) ([a4230f5](https://github.com/axios/axios/commit/a4230f5581b3f58b6ff531b6dbac377a4fd7942a)), closes [#7253](https://github.com/axios/axios/issues/7253) [#7](https://github.com/axios/axios/issues/7) [#7298](https://github.com/axios/axios/issues/7298) +- **deps:** bump peter-evans/create-pull-request from 7 to 8 in the github-actions group ([#7334](https://github.com/axios/axios/issues/7334)) ([2d6ad5e](https://github.com/axios/axios/commit/2d6ad5e48bd29b0b2b5e7e95fb473df98301543a)) + +### Contributors to this release + +- avatar [Ashvin Tiwari](https://github.com/ashvin2005 '+1752/-4 (#7218 #7218 )') +- avatar [Nikunj Mochi](https://github.com/mochinikunj '+940/-12 (#7294 #7294 )') +- avatar [Anchal Singh](https://github.com/imanchalsingh '+544/-102 (#7169 #7185 )') +- avatar [jasonsaayman](https://github.com/jasonsaayman '+317/-73 (#7334 #7298 )') +- avatar [Julian Dax](https://github.com/brodo '+99/-120 (#5558 )') +- avatar [Akash Dhar Dubey](https://github.com/AKASHDHARDUBEY '+167/-0 (#7287 #7288 )') +- avatar [Madhumita](https://github.com/madhumitaaa '+20/-68 (#7198 )') +- avatar [Tackoil](https://github.com/Tackoil '+80/-2 (#6269 )') +- avatar [Justin Dhillon](https://github.com/justindhillon '+41/-41 (#6324 #6315 )') +- avatar [Rudransh](https://github.com/Rudrxxx '+71/-2 (#7257 )') +- avatar [WuMingDao](https://github.com/WuMingDao '+36/-36 (#7215 )') +- avatar [codenomnom](https://github.com/codenomnom '+70/-0 (#7201 #7201 )') +- avatar [Nandan Acharya](https://github.com/Nandann018-ux '+60/-10 (#7272 )') +- avatar [Eric Dubé](https://github.com/KernelDeimos '+22/-40 (#7042 )') +- avatar [Tibor Pilz](https://github.com/tiborpilz '+40/-4 (#5551 )') +- avatar [Gabriel Quaresma](https://github.com/joaoGabriel55 '+31/-4 (#6314 )') +- avatar [Turadg Aleahmad](https://github.com/turadg '+23/-6 (#6265 )') +- avatar [JohnTitor](https://github.com/kiritosan '+14/-14 (#6155 )') +- avatar [rohit miryala](https://github.com/rohitmiryala '+22/-0 (#7250 )') +- avatar [Wilson Mun](https://github.com/wmundev '+20/-0 (#6053 )') +- avatar [techcodie](https://github.com/techcodie '+7/-7 (#7236 )') +- avatar [Ved Vadnere](https://github.com/Archis009 '+5/-6 (#7283 )') +- avatar [svihpinc](https://github.com/svihpinc '+5/-3 (#6134 )') +- avatar [SANDESH LENDVE](https://github.com/mrsandy1965 '+3/-3 (#7246 )') +- avatar [Lubos](https://github.com/mrlubos '+5/-1 (#7312 )') +- avatar [Jarred Sumner](https://github.com/Jarred-Sumner '+5/-1 (#5754 )') +- avatar [Adam Hines](https://github.com/thebanjomatic '+2/-1 (#5756 )') +- avatar [Subhan Kumar Rai](https://github.com/Subhan030 '+2/-1 (#7256 )') +- avatar [Joseph Frazier](https://github.com/josephfrazier '+1/-1 (#7311 )') +- avatar [KT0803](https://github.com/KT0803 '+0/-2 (#7229 )') +- avatar [Albie](https://github.com/AlbertoSadoc '+1/-1 (#5560 )') +- avatar [Jake Hayes](https://github.com/thejayhaykid '+1/-0 (#5999 )') + +## [1.13.2](https://github.com/axios/axios/compare/v1.13.1...v1.13.2) (2025-11-04) + +### Bug Fixes + +- **http:** fix 'socket hang up' bug for keep-alive requests when using timeouts; ([#7206](https://github.com/axios/axios/issues/7206)) ([8d37233](https://github.com/axios/axios/commit/8d372335f5c50ecd01e8615f2468a9eb19703117)) +- **http:** use default export for http2 module to support stubs; ([#7196](https://github.com/axios/axios/issues/7196)) ([0588880](https://github.com/axios/axios/commit/0588880ac7ddba7594ef179930493884b7e90bf5)) + +### Performance Improvements + +- **http:** fix early loop exit; ([#7202](https://github.com/axios/axios/issues/7202)) ([12c314b](https://github.com/axios/axios/commit/12c314b603e7852a157e93e47edb626a471ba6c5)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+28/-9 (#7206 #7202 )') +- avatar [Kasper Isager Dalsgarð](https://github.com/kasperisager '+9/-9 (#7196 )') + +## [1.13.1](https://github.com/axios/axios/compare/v1.13.0...v1.13.1) (2025-10-28) + +### Bug Fixes + +- **http:** fixed a regression that caused the data stream to be interrupted for responses with non-OK HTTP statuses; ([#7193](https://github.com/axios/axios/issues/7193)) ([bcd5581](https://github.com/axios/axios/commit/bcd5581d208cd372055afdcb2fd10b68ca40613c)) + +### Contributors to this release + +- avatar [Anchal Singh](https://github.com/imanchalsingh '+220/-111 (#7173 )') +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+18/-1 (#7193 )') + +# [1.13.0](https://github.com/axios/axios/compare/v1.12.2...v1.13.0) (2025-10-27) + +### Bug Fixes + +- **fetch:** prevent TypeError when config.env is undefined ([#7155](https://github.com/axios/axios/issues/7155)) ([015faec](https://github.com/axios/axios/commit/015faeca9f26db76f9562760f04bb9f8229f4db1)) +- resolve issue [#7131](https://github.com/axios/axios/issues/7131) (added spacing in mergeConfig.js) ([#7133](https://github.com/axios/axios/issues/7133)) ([9b9ec98](https://github.com/axios/axios/commit/9b9ec98548d93e9f2204deea10a5f1528bf3ce62)) + +### Features + +- **http:** add HTTP2 support; ([#7150](https://github.com/axios/axios/issues/7150)) ([d676df7](https://github.com/axios/axios/commit/d676df772244726533ca320f42e967f5af056bac)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+794/-180 (#7186 #7150 #7039 )') +- avatar [Noritaka Kobayashi](https://github.com/noritaka1166 '+24/-509 (#7032 )') +- avatar [Aviraj2929](https://github.com/Aviraj2929 '+211/-93 (#7136 #7135 #7134 #7112 )') +- avatar [prasoon patel](https://github.com/Prasoon52 '+167/-6 (#7099 )') +- avatar [Samyak Dandge](https://github.com/Samy-in '+134/-0 (#7171 )') +- avatar [Anchal Singh](https://github.com/imanchalsingh '+53/-56 (#7170 )') +- avatar [Rahul Kumar](https://github.com/jaiyankargupta '+28/-28 (#7073 )') +- avatar [Amit Verma](https://github.com/Amitverma0509 '+24/-13 (#7129 )') +- avatar [Abhishek3880](https://github.com/abhishekmaniy '+23/-4 (#7119 #7117 #7116 #7115 )') +- avatar [Dhvani Maktuporia](https://github.com/Dhvani365 '+14/-5 (#7175 )') +- avatar [Usama Ayoub](https://github.com/sam3690 '+4/-4 (#7133 )') +- avatar [ikuy1203](https://github.com/ikuy1203 '+3/-3 (#7166 )') +- avatar [Nikhil Simon Toppo](https://github.com/Kirito-Excalibur '+1/-1 (#7172 )') +- avatar [Jane Wangari](https://github.com/Wangarijane '+1/-1 (#7155 )') +- avatar [Supakorn Ieamgomol](https://github.com/Supakornn '+1/-1 (#7065 )') +- avatar [Kian-Meng Ang](https://github.com/kianmeng '+1/-1 (#7046 )') +- avatar [UTSUMI Keiji](https://github.com/k-utsumi '+1/-1 (#7037 )') + +## [1.12.2](https://github.com/axios/axios/compare/v1.12.1...v1.12.2) (2025-09-14) + +### Bug Fixes + +- **fetch:** use current global fetch instead of cached one when env fetch is not specified to keep MSW support; ([#7030](https://github.com/axios/axios/issues/7030)) ([cf78825](https://github.com/axios/axios/commit/cf78825e1229b60d1629ad0bbc8a752ff43c3f53)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+247/-16 (#7030 #7022 #7024 )') +- avatar [Noritaka Kobayashi](https://github.com/noritaka1166 '+2/-6 (#7028 #7029 )') + +## [1.12.1](https://github.com/axios/axios/compare/v1.12.0...v1.12.1) (2025-09-12) + +### Bug Fixes + +- **types:** fixed env config types; ([#7020](https://github.com/axios/axios/issues/7020)) ([b5f26b7](https://github.com/axios/axios/commit/b5f26b75bdd9afa95016fb67d0cab15fc74cbf05)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+10/-4 (#7020 )') + +# [1.12.0](https://github.com/axios/axios/compare/v1.11.0...v1.12.0) (2025-09-11) + +### Bug Fixes + +- adding build artifacts ([9ec86de](https://github.com/axios/axios/commit/9ec86de257bfa33856571036279169f385ed92bd)) +- dont add dist on release ([a2edc36](https://github.com/axios/axios/commit/a2edc3606a4f775d868a67bb3461ff18ce7ecd11)) +- **fetch-adapter:** set correct Content-Type for Node FormData ([#6998](https://github.com/axios/axios/issues/6998)) ([a9f47af](https://github.com/axios/axios/commit/a9f47afbf3224d2ca987dbd8188789c7ea853c5d)) +- **node:** enforce maxContentLength for data: URLs ([#7011](https://github.com/axios/axios/issues/7011)) ([945435f](https://github.com/axios/axios/commit/945435fc51467303768202250debb8d4ae892593)) +- package exports ([#5627](https://github.com/axios/axios/issues/5627)) ([aa78ac2](https://github.com/axios/axios/commit/aa78ac23fc9036163308c0f6bd2bb885e7af3f36)) +- **params:** removing '[' and ']' from URL encode exclude characters ([#3316](https://github.com/axios/axios/issues/3316)) ([#5715](https://github.com/axios/axios/issues/5715)) ([6d84189](https://github.com/axios/axios/commit/6d84189349c43b1dcdd977b522610660cc4c7042)) +- release pr run ([fd7f404](https://github.com/axios/axios/commit/fd7f404488b2c4f238c2fbe635b58026a634bfd2)) +- **types:** change the type guard on isCancel ([#5595](https://github.com/axios/axios/issues/5595)) ([0dbb7fd](https://github.com/axios/axios/commit/0dbb7fd4f61dc568498cd13a681fa7f907d6ec7e)) + +### Features + +- **adapter:** surface low‑level network error details; attach original error via cause ([#6982](https://github.com/axios/axios/issues/6982)) ([78b290c](https://github.com/axios/axios/commit/78b290c57c978ed2ab420b90d97350231c9e5d74)) +- **fetch:** add fetch, Request, Response env config variables for the adapter; ([#7003](https://github.com/axios/axios/issues/7003)) ([c959ff2](https://github.com/axios/axios/commit/c959ff29013a3bc90cde3ac7ea2d9a3f9c08974b)) +- support reviver on JSON.parse ([#5926](https://github.com/axios/axios/issues/5926)) ([2a97634](https://github.com/axios/axios/commit/2a9763426e43d996fd60d01afe63fa6e1f5b4fca)), closes [#5924](https://github.com/axios/axios/issues/5924) +- **types:** extend AxiosResponse interface to include custom headers type ([#6782](https://github.com/axios/axios/issues/6782)) ([7960d34](https://github.com/axios/axios/commit/7960d34eded2de66ffd30b4687f8da0e46c4903e)) + +### Contributors to this release + +- avatar [Willian Agostini](https://github.com/WillianAgostini '+132/-16760 (#7002 #5926 #6782 )') +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+4263/-293 (#7006 #7003 )') +- avatar [khani](https://github.com/mkhani01 '+111/-15 (#6982 )') +- avatar [Ameer Assadi](https://github.com/AmeerAssadi '+123/-0 (#7011 )') +- avatar [Emiedonmokumo Dick-Boro](https://github.com/emiedonmokumo '+55/-35 (#6998 )') +- avatar [Zeroday BYTE](https://github.com/opsysdebug '+8/-8 (#6980 )') +- avatar [Jason Saayman](https://github.com/jasonsaayman '+7/-7 (#6985 #6985 )') +- avatar [최예찬](https://github.com/HealGaren '+5/-7 (#5715 )') +- avatar [Gligor Kotushevski](https://github.com/gligorkot '+3/-1 (#5627 )') +- avatar [Aleksandar Dimitrov](https://github.com/adimit '+2/-1 (#5595 )') + +# [1.11.0](https://github.com/axios/axios/compare/v1.10.0...v1.11.0) (2025-07-22) + +### Bug Fixes + +- form-data npm pakcage ([#6970](https://github.com/axios/axios/issues/6970)) ([e72c193](https://github.com/axios/axios/commit/e72c193722530db538b19e5ddaaa4544d226b253)) +- prevent RangeError when using large Buffers ([#6961](https://github.com/axios/axios/issues/6961)) ([a2214ca](https://github.com/axios/axios/commit/a2214ca1bc60540baf2c80573cea3a0ff91ba9d1)) +- **types:** resolve type discrepancies between ESM and CJS TypeScript declaration files ([#6956](https://github.com/axios/axios/issues/6956)) ([8517aa1](https://github.com/axios/axios/commit/8517aa16f8d082fc1d5309c642220fa736159110)) + +### Contributors to this release + +- avatar [izzy goldman](https://github.com/izzygld '+186/-93 (#6970 )') +- avatar [Manish Sahani](https://github.com/manishsahanidev '+70/-0 (#6961 )') +- avatar [Noritaka Kobayashi](https://github.com/noritaka1166 '+12/-10 (#6938 #6939 )') +- avatar [James Nail](https://github.com/jrnail23 '+13/-2 (#6956 )') +- avatar [Tejaswi1305](https://github.com/Tejaswi1305 '+1/-1 (#6894 )') + +# [1.10.0](https://github.com/axios/axios/compare/v1.9.0...v1.10.0) (2025-06-14) + +### Bug Fixes + +- **adapter:** pass fetchOptions to fetch function ([#6883](https://github.com/axios/axios/issues/6883)) ([0f50af8](https://github.com/axios/axios/commit/0f50af8e076b7fb403844789bd5e812dedcaf4ed)) +- **form-data:** convert boolean values to strings in FormData serialization ([#6917](https://github.com/axios/axios/issues/6917)) ([5064b10](https://github.com/axios/axios/commit/5064b108de336ff34862650709761b8a96d26be0)) +- **package:** add module entry point for React Native; ([#6933](https://github.com/axios/axios/issues/6933)) ([3d343b8](https://github.com/axios/axios/commit/3d343b86dc4fd0eea0987059c5af04327c7ae304)) + +### Features + +- **types:** improved fetchOptions interface ([#6867](https://github.com/axios/axios/issues/6867)) ([63f1fce](https://github.com/axios/axios/commit/63f1fce233009f5db1abf2586c145825ac98c3d7)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+30/-19 (#6933 #6920 #6893 #6892 )') +- avatar [Noritaka Kobayashi](https://github.com/noritaka1166 '+2/-6 (#6922 #6923 )') +- avatar [Dimitrios Lazanas](https://github.com/dimitry-lzs '+4/-0 (#6917 )') +- avatar [Adrian Knapp](https://github.com/AdrianKnapp '+2/-2 (#6867 )') +- avatar [Howie Zhao](https://github.com/howiezhao '+3/-1 (#6872 )') +- avatar [Uhyeon Park](https://github.com/warpdev '+1/-1 (#6883 )') +- avatar [Sampo Silvennoinen](https://github.com/stscoundrel '+1/-1 (#6913 )') + +# [1.9.0](https://github.com/axios/axios/compare/v1.8.4...v1.9.0) (2025-04-24) + +### Bug Fixes + +- **core:** fix the Axios constructor implementation to treat the config argument as optional; ([#6881](https://github.com/axios/axios/issues/6881)) ([6c5d4cd](https://github.com/axios/axios/commit/6c5d4cd69286868059c5e52d45085cb9a894a983)) +- **fetch:** fixed ERR_NETWORK mapping for Safari browsers; ([#6767](https://github.com/axios/axios/issues/6767)) ([dfe8411](https://github.com/axios/axios/commit/dfe8411c9a082c3d068bdd1f8d6e73054f387f45)) +- **headers:** allow iterable objects to be a data source for the set method; ([#6873](https://github.com/axios/axios/issues/6873)) ([1b1f9cc](https://github.com/axios/axios/commit/1b1f9ccdc15f1ea745160ec9a5223de9db4673bc)) +- **headers:** fix `getSetCookie` by using 'get' method for caseless access; ([#6874](https://github.com/axios/axios/issues/6874)) ([d4f7df4](https://github.com/axios/axios/commit/d4f7df4b304af8b373488fdf8e830793ff843eb9)) +- **headers:** fixed support for setting multiple header values from an iterated source; ([#6885](https://github.com/axios/axios/issues/6885)) ([f7a3b5e](https://github.com/axios/axios/commit/f7a3b5e0f7e5e127b97defa92a132fbf1b55cf15)) +- **http:** send minimal end multipart boundary ([#6661](https://github.com/axios/axios/issues/6661)) ([987d2e2](https://github.com/axios/axios/commit/987d2e2dd3b362757550f36eab875e60640b6ddc)) +- **types:** fix autocomplete for adapter config ([#6855](https://github.com/axios/axios/issues/6855)) ([e61a893](https://github.com/axios/axios/commit/e61a8934d8f94dd429a2f309b48c67307c700df0)) + +### Features + +- **AxiosHeaders:** add getSetCookie method to retrieve set-cookie headers values ([#5707](https://github.com/axios/axios/issues/5707)) ([80ea756](https://github.com/axios/axios/commit/80ea756e72bcf53110fa792f5d7ab76e8b11c996)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+200/-34 (#6890 #6889 #6888 #6885 #6881 #6767 #6874 #6873 )') +- avatar [Jay](https://github.com/jasonsaayman '+26/-1 ()') +- avatar [Willian Agostini](https://github.com/WillianAgostini '+21/-0 (#5707 )') +- avatar [George Cheng](https://github.com/Gerhut '+3/-3 (#5096 )') +- avatar [FatahChan](https://github.com/FatahChan '+2/-2 (#6855 )') +- avatar [IonuÈ› G. Stan](https://github.com/igstan '+1/-1 (#6661 )') + +## [1.8.4](https://github.com/axios/axios/compare/v1.8.3...v1.8.4) (2025-03-19) + +### Bug Fixes + +- **buildFullPath:** handle `allowAbsoluteUrls: false` without `baseURL` ([#6833](https://github.com/axios/axios/issues/6833)) ([f10c2e0](https://github.com/axios/axios/commit/f10c2e0de7fde0051f848609a29c2906d0caa1d9)) + +### Contributors to this release + +- avatar [Marc Hassan](https://github.com/mhassan1 '+5/-1 (#6833 )') + +## [1.8.3](https://github.com/axios/axios/compare/v1.8.2...v1.8.3) (2025-03-10) + +### Bug Fixes + +- add missing type for allowAbsoluteUrls ([#6818](https://github.com/axios/axios/issues/6818)) ([10fa70e](https://github.com/axios/axios/commit/10fa70ef14fe39558b15a179f0e82f5f5e5d11b2)) +- **xhr/fetch:** pass `allowAbsoluteUrls` to `buildFullPath` in `xhr` and `fetch` adapters ([#6814](https://github.com/axios/axios/issues/6814)) ([ec159e5](https://github.com/axios/axios/commit/ec159e507bdf08c04ba1a10fe7710094e9e50ec9)) + +### Contributors to this release + +- avatar [Ashcon Partovi](https://github.com/Electroid '+6/-0 (#6811 )') +- avatar [StefanBRas](https://github.com/StefanBRas '+4/-0 (#6818 )') +- avatar [Marc Hassan](https://github.com/mhassan1 '+2/-2 (#6814 )') + +## [1.8.2](https://github.com/axios/axios/compare/v1.8.1...v1.8.2) (2025-03-07) + +### Bug Fixes + +- **http-adapter:** add allowAbsoluteUrls to path building ([#6810](https://github.com/axios/axios/issues/6810)) ([fb8eec2](https://github.com/axios/axios/commit/fb8eec214ce7744b5ca787f2c3b8339b2f54b00f)) + +### Contributors to this release + +- avatar [Fasoro-Joseph Alexander](https://github.com/lexcorp16 '+1/-1 (#6810 )') + +## [1.8.1](https://github.com/axios/axios/compare/v1.8.0...v1.8.1) (2025-02-26) + +### Bug Fixes + +- **utils:** move `generateString` to platform utils to avoid importing crypto module into client builds; ([#6789](https://github.com/axios/axios/issues/6789)) ([36a5a62](https://github.com/axios/axios/commit/36a5a620bec0b181451927f13ac85b9888b86cec)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+51/-47 (#6789 )') + +# [1.8.0](https://github.com/axios/axios/compare/v1.7.9...v1.8.0) (2025-02-25) + +### Bug Fixes + +- **examples:** application crashed when navigating examples in browser ([#5938](https://github.com/axios/axios/issues/5938)) ([1260ded](https://github.com/axios/axios/commit/1260ded634ec101dd5ed05d3b70f8e8f899dba6c)) +- missing word in SUPPORT_QUESTION.yml ([#6757](https://github.com/axios/axios/issues/6757)) ([1f890b1](https://github.com/axios/axios/commit/1f890b13f2c25a016f3c84ae78efb769f244133e)) +- **utils:** replace getRandomValues with crypto module ([#6788](https://github.com/axios/axios/issues/6788)) ([23a25af](https://github.com/axios/axios/commit/23a25af0688d1db2c396deb09229d2271cc24f6c)) + +### Features + +- Add config for ignoring absolute URLs ([#5902](https://github.com/axios/axios/issues/5902)) ([#6192](https://github.com/axios/axios/issues/6192)) ([32c7bcc](https://github.com/axios/axios/commit/32c7bcc0f233285ba27dec73a4b1e81fb7a219b3)) + +### Reverts + +- Revert "chore: expose fromDataToStream to be consumable (#6731)" (#6732) ([1317261](https://github.com/axios/axios/commit/1317261125e9c419fe9f126867f64d28f9c1efda)), closes [#6731](https://github.com/axios/axios/issues/6731) [#6732](https://github.com/axios/axios/issues/6732) + +### BREAKING CHANGES + +- code relying on the above will now combine the URLs instead of prefer request URL + +- feat: add config option for allowing absolute URLs + +- fix: add default value for allowAbsoluteUrls in buildFullPath + +- fix: typo in flow control when setting allowAbsoluteUrls + +### Contributors to this release + +- avatar [Michael Toscano](https://github.com/GethosTheWalrus '+42/-8 (#6192 )') +- avatar [Willian Agostini](https://github.com/WillianAgostini '+26/-3 (#6788 #6777 )') +- avatar [Naron](https://github.com/naronchen '+27/-0 (#5901 )') +- avatar [shravan || शà¥à¤°van](https://github.com/shravan20 '+7/-3 (#6116 )') +- avatar [Justin Dhillon](https://github.com/justindhillon '+0/-7 (#6312 )') +- avatar [yionr](https://github.com/yionr '+5/-1 (#6129 )') +- avatar [Shin'ya Ueoka](https://github.com/ueokande '+3/-3 (#5935 )') +- avatar [Dan Dascalescu](https://github.com/dandv '+3/-3 (#5908 #6757 )') +- avatar [Nitin Ramnani](https://github.com/NitinRamnani '+2/-2 (#5938 )') +- avatar [Shay Molcho](https://github.com/shaymolcho '+2/-2 (#6770 )') +- avatar [Jay](https://github.com/jasonsaayman '+0/-3 (#6732 )') +- fancy45daddy +- avatar [Habip Akyol](https://github.com/habipakyol '+1/-1 (#6030 )') +- avatar [Bailey Lissington](https://github.com/llamington '+1/-1 (#6771 )') +- avatar [Bernardo da Eira Duarte](https://github.com/bernardoduarte '+1/-1 (#6480 )') +- avatar [Shivam Batham](https://github.com/Shivam-Batham '+1/-1 (#5949 )') +- avatar [Lipin Kariappa](https://github.com/lipinnnnn '+1/-1 (#5936 )') + +## [1.7.9](https://github.com/axios/axios/compare/v1.7.8...v1.7.9) (2024-12-04) + +### Reverts + +- Revert "fix(types): export CJS types from ESM (#6218)" (#6729) ([c44d2f2](https://github.com/axios/axios/commit/c44d2f2316ad289b38997657248ba10de11deb6c)), closes [#6218](https://github.com/axios/axios/issues/6218) [#6729](https://github.com/axios/axios/issues/6729) + +### Contributors to this release + +- avatar [Jay](https://github.com/jasonsaayman '+596/-108 (#6729 )') + +## [1.7.8](https://github.com/axios/axios/compare/v1.7.7...v1.7.8) (2024-11-25) + +### Bug Fixes + +- allow passing a callback as paramsSerializer to buildURL ([#6680](https://github.com/axios/axios/issues/6680)) ([eac4619](https://github.com/axios/axios/commit/eac4619fe2e0926e876cd260ee21e3690381dbb5)) +- **core:** fixed config merging bug ([#6668](https://github.com/axios/axios/issues/6668)) ([5d99fe4](https://github.com/axios/axios/commit/5d99fe4491202a6268c71e5dcc09192359d73cea)) +- fixed width form to not shrink after 'Send Request' button is clicked ([#6644](https://github.com/axios/axios/issues/6644)) ([7ccd5fd](https://github.com/axios/axios/commit/7ccd5fd42402102d38712c32707bf055be72ab54)) +- **http:** add support for File objects as payload in http adapter ([#6588](https://github.com/axios/axios/issues/6588)) ([#6605](https://github.com/axios/axios/issues/6605)) ([6841d8d](https://github.com/axios/axios/commit/6841d8d18ddc71cc1bd202ffcfddb3f95622eef3)) +- **http:** fixed proxy-from-env module import ([#5222](https://github.com/axios/axios/issues/5222)) ([12b3295](https://github.com/axios/axios/commit/12b32957f1258aee94ef859809ed39f8f88f9dfa)) +- **http:** use `globalThis.TextEncoder` when available ([#6634](https://github.com/axios/axios/issues/6634)) ([df956d1](https://github.com/axios/axios/commit/df956d18febc9100a563298dfdf0f102c3d15410)) +- ios11 breaks when build ([#6608](https://github.com/axios/axios/issues/6608)) ([7638952](https://github.com/axios/axios/commit/763895270f7b50c7c780c3c9807ae8635de952cd)) +- **types:** add missing types for mergeConfig function ([#6590](https://github.com/axios/axios/issues/6590)) ([00de614](https://github.com/axios/axios/commit/00de614cd07b7149af335e202aef0e076c254f49)) +- **types:** export CJS types from ESM ([#6218](https://github.com/axios/axios/issues/6218)) ([c71811b](https://github.com/axios/axios/commit/c71811b00f2fcff558e4382ba913bdac4ad7200e)) +- updated stream aborted error message to be more clear ([#6615](https://github.com/axios/axios/issues/6615)) ([cc3217a](https://github.com/axios/axios/commit/cc3217a612024d83a663722a56d7a98d8759c6d5)) +- use URL API instead of DOM to fix a potential vulnerability warning; ([#6714](https://github.com/axios/axios/issues/6714)) ([0a8d6e1](https://github.com/axios/axios/commit/0a8d6e19da5b9899a2abafaaa06a75ee548597db)) + +### Contributors to this release + +- avatar [Remco Haszing](https://github.com/remcohaszing '+108/-596 (#6218 )') +- avatar [Jay](https://github.com/jasonsaayman '+281/-19 (#6640 #6619 )') +- avatar [Aayush Yadav](https://github.com/aayushyadav020 '+124/-111 (#6617 )') +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+12/-65 (#6714 )') +- avatar [Ell Bradshaw](https://github.com/cincodenada '+29/-0 (#6489 )') +- avatar [Amit Saini](https://github.com/amitsainii '+13/-3 (#5237 )') +- avatar [Tommaso Paulon](https://github.com/guuido '+14/-1 (#6680 )') +- avatar [Akki](https://github.com/Aakash-Rana '+5/-5 (#6668 )') +- avatar [Sampo Silvennoinen](https://github.com/stscoundrel '+3/-3 (#6633 )') +- avatar [Kasper Isager Dalsgarð](https://github.com/kasperisager '+2/-2 (#6634 )') +- avatar [Christian Clauss](https://github.com/cclauss '+4/-0 (#6683 )') +- avatar [Pavan Welihinda](https://github.com/pavan168 '+2/-2 (#5222 )') +- avatar [Taylor Flatt](https://github.com/taylorflatt '+2/-2 (#6615 )') +- avatar [Kenzo Wada](https://github.com/Kenzo-Wada '+2/-2 (#6608 )') +- avatar [Ngole Lawson](https://github.com/echelonnought '+3/-0 (#6644 )') +- avatar [Haven](https://github.com/Baoyx007 '+3/-0 (#6590 )') +- avatar [Shrivali Dutt](https://github.com/shrivalidutt '+1/-1 (#6637 )') +- avatar [Henco Appel](https://github.com/hencoappel '+1/-1 (#6605 )') + +## [1.7.7](https://github.com/axios/axios/compare/v1.7.6...v1.7.7) (2024-08-31) + +### Bug Fixes + +- **fetch:** fix stream handling in Safari by fallback to using a stream reader instead of an async iterator; ([#6584](https://github.com/axios/axios/issues/6584)) ([d198085](https://github.com/axios/axios/commit/d1980854fee1765cd02fa0787adf5d6e34dd9dcf)) +- **http:** fixed support for IPv6 literal strings in url ([#5731](https://github.com/axios/axios/issues/5731)) ([364993f](https://github.com/axios/axios/commit/364993f0d8bc6e0e06f76b8a35d2d0a35cab054c)) + +### Contributors to this release + +- avatar [Rishi556](https://github.com/Rishi556 '+39/-1 (#5731 )') +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+27/-7 (#6584 )') + +## [1.7.6](https://github.com/axios/axios/compare/v1.7.5...v1.7.6) (2024-08-30) + +### Bug Fixes + +- **fetch:** fix content length calculation for FormData payload; ([#6524](https://github.com/axios/axios/issues/6524)) ([085f568](https://github.com/axios/axios/commit/085f56861a83e9ac02c140ad9d68dac540dfeeaa)) +- **fetch:** optimize signals composing logic; ([#6582](https://github.com/axios/axios/issues/6582)) ([df9889b](https://github.com/axios/axios/commit/df9889b83c2cc37e9e6189675a73ab70c60f031f)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+98/-46 (#6582 )') +- avatar [Jacques Germishuys](https://github.com/jacquesg '+5/-1 (#6524 )') +- avatar [kuroino721](https://github.com/kuroino721 '+3/-1 (#6575 )') + +## [1.7.5](https://github.com/axios/axios/compare/v1.7.4...v1.7.5) (2024-08-23) + +### Bug Fixes + +- **adapter:** fix undefined reference to hasBrowserEnv ([#6572](https://github.com/axios/axios/issues/6572)) ([7004707](https://github.com/axios/axios/commit/7004707c4180b416341863bd86913fe4fc2f1df1)) +- **core:** add the missed implementation of AxiosError#status property; ([#6573](https://github.com/axios/axios/issues/6573)) ([6700a8a](https://github.com/axios/axios/commit/6700a8adac06942205f6a7a21421ecb36c4e0852)) +- **core:** fix `ReferenceError: navigator is not defined` for custom environments; ([#6567](https://github.com/axios/axios/issues/6567)) ([fed1a4b](https://github.com/axios/axios/commit/fed1a4b2d78ed4a588c84e09d32749ed01dc2794)) +- **fetch:** fix credentials handling in Cloudflare workers ([#6533](https://github.com/axios/axios/issues/6533)) ([550d885](https://github.com/axios/axios/commit/550d885eb90fd156add7b93bbdc54d30d2f9a98d)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+187/-83 (#6573 #6567 #6566 #6564 #6563 #6557 #6556 #6555 #6554 #6552 )') +- avatar [Antonin Bas](https://github.com/antoninbas '+6/-6 (#6572 )') +- avatar [Hans Otto Wirtz](https://github.com/hansottowirtz '+4/-1 (#6533 )') + +## [1.7.4](https://github.com/axios/axios/compare/v1.7.3...v1.7.4) (2024-08-13) + +### Bug Fixes + +- **sec:** CVE-2024-39338 ([#6539](https://github.com/axios/axios/issues/6539)) ([#6543](https://github.com/axios/axios/issues/6543)) ([6b6b605](https://github.com/axios/axios/commit/6b6b605eaf73852fb2dae033f1e786155959de3a)) +- **sec:** disregard protocol-relative URL to remediate SSRF ([#6539](https://github.com/axios/axios/issues/6539)) ([07a661a](https://github.com/axios/axios/commit/07a661a2a6b9092c4aa640dcc7f724ec5e65bdda)) + +### Contributors to this release + +- avatar [Lev Pachmanov](https://github.com/levpachmanov '+47/-11 (#6543 )') +- avatar [Äá»— Trá»ng Hải](https://github.com/hainenber '+49/-4 (#6539 )') + +## [1.7.3](https://github.com/axios/axios/compare/v1.7.2...v1.7.3) (2024-08-01) + +### Bug Fixes + +- **adapter:** fix progress event emitting; ([#6518](https://github.com/axios/axios/issues/6518)) ([e3c76fc](https://github.com/axios/axios/commit/e3c76fc9bdd03aa4d98afaf211df943e2031453f)) +- **fetch:** fix withCredentials request config ([#6505](https://github.com/axios/axios/issues/6505)) ([85d4d0e](https://github.com/axios/axios/commit/85d4d0ea0aae91082f04e303dec46510d1b4e787)) +- **xhr:** return original config on errors from XHR adapter ([#6515](https://github.com/axios/axios/issues/6515)) ([8966ee7](https://github.com/axios/axios/commit/8966ee7ea62ecbd6cfb39a905939bcdab5cf6388)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+211/-159 (#6518 #6519 )') +- avatar [Valerii Sidorenko](https://github.com/ValeraS '+3/-3 (#6515 )') +- avatar [prianYu](https://github.com/prianyu '+2/-2 (#6505 )') + +## [1.7.2](https://github.com/axios/axios/compare/v1.7.1...v1.7.2) (2024-05-21) + +### Bug Fixes + +- **fetch:** enhance fetch API detection; ([#6413](https://github.com/axios/axios/issues/6413)) ([4f79aef](https://github.com/axios/axios/commit/4f79aef81b7c4644328365bfc33acf0a9ef595bc)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+3/-3 (#6413 )') + +## [1.7.1](https://github.com/axios/axios/compare/v1.7.0...v1.7.1) (2024-05-20) + +### Bug Fixes + +- **fetch:** fixed ReferenceError issue when TextEncoder is not available in the environment; ([#6410](https://github.com/axios/axios/issues/6410)) ([733f15f](https://github.com/axios/axios/commit/733f15fe5bd2d67e1fadaee82e7913b70d45dc5e)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+14/-9 (#6410 )') + +# [1.7.0](https://github.com/axios/axios/compare/v1.7.0-beta.2...v1.7.0) (2024-05-19) + +### Features + +- **adapter:** add fetch adapter; ([#6371](https://github.com/axios/axios/issues/6371)) ([a3ff99b](https://github.com/axios/axios/commit/a3ff99b59d8ec2ab5dd049e68c043617a4072e42)) + +### Bug Fixes + +- **core/axios:** handle un-writable error stack ([#6362](https://github.com/axios/axios/issues/6362)) ([81e0455](https://github.com/axios/axios/commit/81e0455b7b57fbaf2be16a73ebe0e6591cc6d8f9)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+1015/-127 (#6371 )') +- avatar [Jay](https://github.com/jasonsaayman '+30/-14 ()') +- avatar [Alexandre ABRIOUX](https://github.com/alexandre-abrioux '+56/-6 (#6362 )') + +# [1.7.0-beta.2](https://github.com/axios/axios/compare/v1.7.0-beta.1...v1.7.0-beta.2) (2024-05-19) + +### Bug Fixes + +- **fetch:** capitalize HTTP method names; ([#6395](https://github.com/axios/axios/issues/6395)) ([ad3174a](https://github.com/axios/axios/commit/ad3174a3515c3c2573f4bcb94818d582826f3914)) +- **fetch:** fix & optimize progress capturing for cases when the request data has a nullish value or zero data length ([#6400](https://github.com/axios/axios/issues/6400)) ([95a3e8e](https://github.com/axios/axios/commit/95a3e8e346cfd6a5548e171f2341df3235d0e26b)) +- **fetch:** fix headers getting from a stream response; ([#6401](https://github.com/axios/axios/issues/6401)) ([870e0a7](https://github.com/axios/axios/commit/870e0a76f60d0094774a6a63fa606eec52a381af)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+99/-46 (#6405 #6404 #6401 #6400 #6395 )') + +# [1.7.0-beta.1](https://github.com/axios/axios/compare/v1.7.0-beta.0...v1.7.0-beta.1) (2024-05-07) + +### Bug Fixes + +- **core/axios:** handle un-writable error stack ([#6362](https://github.com/axios/axios/issues/6362)) ([81e0455](https://github.com/axios/axios/commit/81e0455b7b57fbaf2be16a73ebe0e6591cc6d8f9)) +- **fetch:** fix cases when ReadableStream or Response.body are not available; ([#6377](https://github.com/axios/axios/issues/6377)) ([d1d359d](https://github.com/axios/axios/commit/d1d359da347704e8b28d768e61515a3e96c5b072)) +- **fetch:** treat fetch-related TypeError as an AxiosError.ERR_NETWORK error; ([#6380](https://github.com/axios/axios/issues/6380)) ([bb5f9a5](https://github.com/axios/axios/commit/bb5f9a5ab768452de9e166dc28d0ffc234245ef1)) + +### Contributors to this release + +- avatar [Alexandre ABRIOUX](https://github.com/alexandre-abrioux '+56/-6 (#6362 )') +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+42/-17 (#6380 #6377 )') + +# [1.7.0-beta.0](https://github.com/axios/axios/compare/v1.6.8...v1.7.0-beta.0) (2024-04-28) + +### Features + +- **adapter:** add fetch adapter; ([#6371](https://github.com/axios/axios/issues/6371)) ([a3ff99b](https://github.com/axios/axios/commit/a3ff99b59d8ec2ab5dd049e68c043617a4072e42)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+1015/-127 (#6371 )') +- avatar [Jay](https://github.com/jasonsaayman '+30/-14 ()') + +## [1.6.8](https://github.com/axios/axios/compare/v1.6.7...v1.6.8) (2024-03-15) + +### Bug Fixes + +- **AxiosHeaders:** fix AxiosHeaders conversion to an object during config merging ([#6243](https://github.com/axios/axios/issues/6243)) ([2656612](https://github.com/axios/axios/commit/2656612bc10fe2757e9832b708ed773ab340b5cb)) +- **import:** use named export for EventEmitter; ([7320430](https://github.com/axios/axios/commit/7320430aef2e1ba2b89488a0eaf42681165498b1)) +- **vulnerability:** update follow-redirects to 1.15.6 ([#6300](https://github.com/axios/axios/issues/6300)) ([8786e0f](https://github.com/axios/axios/commit/8786e0ff55a8c68d4ca989801ad26df924042e27)) + +### Contributors to this release + +- avatar [Jay](https://github.com/jasonsaayman '+4572/-3446 (#6238 )') +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+30/-0 (#6231 )') +- avatar [Mitchell](https://github.com/Creaous '+9/-9 (#6300 )') +- avatar [Emmanuel](https://github.com/mannoeu '+2/-2 (#6196 )') +- avatar [Lucas Keller](https://github.com/ljkeller '+3/-0 (#6194 )') +- avatar [Aditya Mogili](https://github.com/ADITYA-176 '+1/-1 ()') +- avatar [Miroslav Petrov](https://github.com/petrovmiroslav '+1/-1 (#6243 )') + +## [1.6.7](https://github.com/axios/axios/compare/v1.6.6...v1.6.7) (2024-01-25) + +### Bug Fixes + +- capture async stack only for rejections with native error objects; ([#6203](https://github.com/axios/axios/issues/6203)) ([1a08f90](https://github.com/axios/axios/commit/1a08f90f402336e4d00e9ee82f211c6adb1640b0)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+30/-26 (#6203 )') +- avatar [zhoulixiang](https://github.com/zh-lx '+0/-3 (#6186 )') + +## [1.6.6](https://github.com/axios/axios/compare/v1.6.5...v1.6.6) (2024-01-24) + +### Bug Fixes + +- fixed missed dispatchBeforeRedirect argument ([#5778](https://github.com/axios/axios/issues/5778)) ([a1938ff](https://github.com/axios/axios/commit/a1938ff073fcb0f89011f001dfbc1fa1dc995e39)) +- wrap errors to improve async stack trace ([#5987](https://github.com/axios/axios/issues/5987)) ([123f354](https://github.com/axios/axios/commit/123f354b920f154a209ea99f76b7b2ef3d9ebbab)) + +### Contributors to this release + +- avatar [Ilya Priven](https://github.com/ikonst '+91/-8 (#5987 )') +- avatar [Zao Soula](https://github.com/zaosoula '+6/-6 (#5778 )') + +## [1.6.5](https://github.com/axios/axios/compare/v1.6.4...v1.6.5) (2024-01-05) + +### Bug Fixes + +- **ci:** refactor notify action as a job of publish action; ([#6176](https://github.com/axios/axios/issues/6176)) ([0736f95](https://github.com/axios/axios/commit/0736f95ce8776366dc9ca569f49ba505feb6373c)) +- **dns:** fixed lookup error handling; ([#6175](https://github.com/axios/axios/issues/6175)) ([f4f2b03](https://github.com/axios/axios/commit/f4f2b039dd38eb4829e8583caede4ed6d2dd59be)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+41/-6 (#6176 #6175 )') +- avatar [Jay](https://github.com/jasonsaayman '+6/-1 ()') + +## [1.6.4](https://github.com/axios/axios/compare/v1.6.3...v1.6.4) (2024-01-03) + +### Bug Fixes + +- **security:** fixed formToJSON prototype pollution vulnerability; ([#6167](https://github.com/axios/axios/issues/6167)) ([3c0c11c](https://github.com/axios/axios/commit/3c0c11cade045c4412c242b5727308cff9897a0e)) +- **security:** fixed security vulnerability in follow-redirects ([#6163](https://github.com/axios/axios/issues/6163)) ([75af1cd](https://github.com/axios/axios/commit/75af1cdff5b3a6ca3766d3d3afbc3115bb0811b8)) + +### Contributors to this release + +- avatar [Jay](https://github.com/jasonsaayman '+34/-6 ()') +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+34/-3 (#6172 #6167 )') +- avatar [Guy Nesher](https://github.com/gnesher '+10/-10 (#6163 )') + +## [1.6.3](https://github.com/axios/axios/compare/v1.6.2...v1.6.3) (2023-12-26) + +### Bug Fixes + +- Regular Expression Denial of Service (ReDoS) ([#6132](https://github.com/axios/axios/issues/6132)) ([5e7ad38](https://github.com/axios/axios/commit/5e7ad38fb0f819fceb19fb2ee5d5d38f56aa837d)) + +### Contributors to this release + +- avatar [Jay](https://github.com/jasonsaayman '+15/-6 (#6145 )') +- avatar [Willian Agostini](https://github.com/WillianAgostini '+17/-2 (#6132 )') +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+3/-0 (#6084 )') + +## [1.6.2](https://github.com/axios/axios/compare/v1.6.1...v1.6.2) (2023-11-14) + +### Features + +- **withXSRFToken:** added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ([#6046](https://github.com/axios/axios/issues/6046)) ([cff9967](https://github.com/axios/axios/commit/cff996779b272a5e94c2b52f5503ccf668bc42dc)) + +### PRs + +- feat(withXSRFToken): added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ( [#6046](https://api.github.com/repos/axios/axios/pulls/6046) ) + +``` + +📢 This PR added 'withXSRFToken' option as a replacement for old withCredentials behaviour. +You should now use withXSRFToken along with withCredential to get the old behavior. +This functionality is considered as a fix. +``` + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+271/-146 (#6081 #6080 #6079 #6078 #6046 #6064 #6063 )') +- avatar [Ng Choon Khon (CK)](https://github.com/ckng0221 '+4/-4 (#6073 )') +- avatar [Muhammad Noman](https://github.com/mnomanmemon '+2/-2 (#6048 )') + +## [1.6.1](https://github.com/axios/axios/compare/v1.6.0...v1.6.1) (2023-11-08) + +### Bug Fixes + +- **formdata:** fixed content-type header normalization for non-standard browser environments; ([#6056](https://github.com/axios/axios/issues/6056)) ([dd465ab](https://github.com/axios/axios/commit/dd465ab22bbfa262c6567be6574bf46a057d5288)) +- **platform:** fixed emulated browser detection in node.js environment; ([#6055](https://github.com/axios/axios/issues/6055)) ([3dc8369](https://github.com/axios/axios/commit/3dc8369e505e32a4e12c22f154c55fd63ac67fbb)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+432/-65 (#6059 #6056 #6055 )') +- avatar [Fabian Meyer](https://github.com/meyfa '+5/-2 (#5835 )') + +### PRs + +- feat(withXSRFToken): added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ( [#6046](https://api.github.com/repos/axios/axios/pulls/6046) ) + +``` + +📢 This PR added 'withXSRFToken' option as a replacement for old withCredentials behaviour. +You should now use withXSRFToken along with withCredential to get the old behavior. +This functionality is considered as a fix. +``` + +# [1.6.0](https://github.com/axios/axios/compare/v1.5.1...v1.6.0) (2023-10-26) + +### Bug Fixes + +- **CSRF:** fixed CSRF vulnerability CVE-2023-45857 ([#6028](https://github.com/axios/axios/issues/6028)) ([96ee232](https://github.com/axios/axios/commit/96ee232bd3ee4de2e657333d4d2191cd389e14d0)) +- **dns:** fixed lookup function decorator to work properly in node v20; ([#6011](https://github.com/axios/axios/issues/6011)) ([5aaff53](https://github.com/axios/axios/commit/5aaff532a6b820bb9ab6a8cd0f77131b47e2adb8)) +- **types:** fix AxiosHeaders types; ([#5931](https://github.com/axios/axios/issues/5931)) ([a1c8ad0](https://github.com/axios/axios/commit/a1c8ad008b3c13d53e135bbd0862587fb9d3fc09)) + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+449/-114 (#6032 #6021 #6011 #5932 #5931 )') +- avatar [Valentin Panov](https://github.com/valentin-panov '+4/-4 (#6028 )') +- avatar [Rinku Chaudhari](https://github.com/therealrinku '+1/-1 (#5889 )') + +## [1.5.1](https://github.com/axios/axios/compare/v1.5.0...v1.5.1) (2023-09-26) + +### Bug Fixes + +- **adapters:** improved adapters loading logic to have clear error messages; ([#5919](https://github.com/axios/axios/issues/5919)) ([e410779](https://github.com/axios/axios/commit/e4107797a7a1376f6209fbecfbbce73d3faa7859)) +- **formdata:** fixed automatic addition of the `Content-Type` header for FormData in non-browser environments; ([#5917](https://github.com/axios/axios/issues/5917)) ([bc9af51](https://github.com/axios/axios/commit/bc9af51b1886d1b3529617702f2a21a6c0ed5d92)) +- **headers:** allow `content-encoding` header to handle case-insensitive values ([#5890](https://github.com/axios/axios/issues/5890)) ([#5892](https://github.com/axios/axios/issues/5892)) ([4c89f25](https://github.com/axios/axios/commit/4c89f25196525e90a6e75eda9cb31ae0a2e18acd)) +- **types:** removed duplicated code ([9e62056](https://github.com/axios/axios/commit/9e6205630e1c9cf863adf141c0edb9e6d8d4b149)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+89/-18 (#5919 #5917 )') +- avatar [David Dallas](https://github.com/DavidJDallas '+11/-5 ()') +- avatar [Sean Sattler](https://github.com/fb-sean '+2/-8 ()') +- avatar [Mustafa AteÅŸ Uzun](https://github.com/0o001 '+4/-4 ()') +- avatar [Przemyslaw Motacki](https://github.com/sfc-gh-pmotacki '+2/-1 (#5892 )') +- avatar [Michael Di Prisco](https://github.com/Cadienvan '+1/-1 ()') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +# [1.5.0](https://github.com/axios/axios/compare/v1.4.0...v1.5.0) (2023-08-26) + +### Bug Fixes + +- **adapter:** make adapter loading error more clear by using platform-specific adapters explicitly ([#5837](https://github.com/axios/axios/issues/5837)) ([9a414bb](https://github.com/axios/axios/commit/9a414bb6c81796a95c6c7fe668637825458e8b6d)) +- **dns:** fixed `cacheable-lookup` integration; ([#5836](https://github.com/axios/axios/issues/5836)) ([b3e327d](https://github.com/axios/axios/commit/b3e327dcc9277bdce34c7ef57beedf644b00d628)) +- **headers:** added support for setting header names that overlap with class methods; ([#5831](https://github.com/axios/axios/issues/5831)) ([d8b4ca0](https://github.com/axios/axios/commit/d8b4ca0ea5f2f05efa4edfe1e7684593f9f68273)) +- **headers:** fixed common Content-Type header merging; ([#5832](https://github.com/axios/axios/issues/5832)) ([8fda276](https://github.com/axios/axios/commit/8fda2766b1e6bcb72c3fabc146223083ef13ce17)) + +### Features + +- export getAdapter function ([#5324](https://github.com/axios/axios/issues/5324)) ([ca73eb8](https://github.com/axios/axios/commit/ca73eb878df0ae2dace81fe3a7f1fb5986231bf1)) +- **export:** export adapters without `unsafe` prefix ([#5839](https://github.com/axios/axios/issues/5839)) ([1601f4a](https://github.com/axios/axios/commit/1601f4a27a81ab47fea228f1e244b2c4e3ce28bf)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+66/-29 (#5839 #5837 #5836 #5832 #5831 )') +- avatar [夜葬](https://github.com/geekact '+42/-0 (#5324 )') +- avatar [Jonathan Budiman](https://github.com/JBudiman00 '+30/-0 (#5788 )') +- avatar [Michael Di Prisco](https://github.com/Cadienvan '+3/-5 (#5791 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +# [1.4.0](https://github.com/axios/axios/compare/v1.3.6...v1.4.0) (2023-04-27) + +### Bug Fixes + +- **formdata:** add `multipart/form-data` content type for FormData payload on custom client environments; ([#5678](https://github.com/axios/axios/issues/5678)) ([bbb61e7](https://github.com/axios/axios/commit/bbb61e70cb1185adfb1cbbb86eaf6652c48d89d1)) +- **package:** export package internals with unsafe path prefix; ([#5677](https://github.com/axios/axios/issues/5677)) ([df38c94](https://github.com/axios/axios/commit/df38c949f26414d88ba29ec1e353c4d4f97eaf09)) + +### Features + +- **dns:** added support for a custom lookup function; ([#5339](https://github.com/axios/axios/issues/5339)) ([2701911](https://github.com/axios/axios/commit/2701911260a1faa5cc5e1afe437121b330a3b7bb)) +- **types:** export `AxiosHeaderValue` type. ([#5525](https://github.com/axios/axios/issues/5525)) ([726f1c8](https://github.com/axios/axios/commit/726f1c8e00cffa0461a8813a9bdcb8f8b9d762cf)) + +### Performance Improvements + +- **merge-config:** optimize mergeConfig performance by avoiding duplicate key visits; ([#5679](https://github.com/axios/axios/issues/5679)) ([e6f7053](https://github.com/axios/axios/commit/e6f7053bf1a3e87cf1f9da8677e12e3fe829d68e)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+151/-16 (#5684 #5339 #5679 #5678 #5677 )') +- avatar [Arthur Fiorette](https://github.com/arthurfiorette '+19/-19 (#5525 )') +- avatar [PIYUSH NEGI](https://github.com/npiyush97 '+2/-18 (#5670 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.6](https://github.com/axios/axios/compare/v1.3.5...v1.3.6) (2023-04-19) + +### Bug Fixes + +- **types:** added transport to RawAxiosRequestConfig ([#5445](https://github.com/axios/axios/issues/5445)) ([6f360a2](https://github.com/axios/axios/commit/6f360a2531d8d70363fd9becef6a45a323f170e2)) +- **utils:** make isFormData detection logic stricter to avoid unnecessary calling of the `toString` method on the target; ([#5661](https://github.com/axios/axios/issues/5661)) ([aa372f7](https://github.com/axios/axios/commit/aa372f7306295dfd1100c1c2c77ce95c95808e76)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+48/-10 (#5665 #5661 #5663 )') +- avatar [Michael Di Prisco](https://github.com/Cadienvan '+2/-0 (#5445 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.5](https://github.com/axios/axios/compare/v1.3.4...v1.3.5) (2023-04-05) + +### Bug Fixes + +- **headers:** fixed isValidHeaderName to support full list of allowed characters; ([#5584](https://github.com/axios/axios/issues/5584)) ([e7decef](https://github.com/axios/axios/commit/e7decef6a99f4627e27ed9ea5b00ce8e201c3841)) +- **params:** re-added the ability to set the function as `paramsSerializer` config; ([#5633](https://github.com/axios/axios/issues/5633)) ([a56c866](https://github.com/axios/axios/commit/a56c8661209d5ce5a645a05f294a0e08a6c1f6b3)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+28/-10 (#5633 #5584 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.4](https://github.com/axios/axios/compare/v1.3.3...v1.3.4) (2023-02-22) + +### Bug Fixes + +- **blob:** added a check to make sure the Blob class is available in the browser's global scope; ([#5548](https://github.com/axios/axios/issues/5548)) ([3772c8f](https://github.com/axios/axios/commit/3772c8fe74112a56e3e9551f894d899bc3a9443a)) +- **http:** fixed regression bug when handling synchronous errors inside the adapter; ([#5564](https://github.com/axios/axios/issues/5564)) ([a3b246c](https://github.com/axios/axios/commit/a3b246c9de5c3bc4b5a742e15add55b375479451)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+38/-26 (#5564 )') +- avatar [lcysgsg](https://github.com/lcysgsg '+4/-0 (#5548 )') +- avatar [Michael Di Prisco](https://github.com/Cadienvan '+3/-0 (#5444 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.3](https://github.com/axios/axios/compare/v1.3.2...v1.3.3) (2023-02-13) + +### Bug Fixes + +- **formdata:** added a check to make sure the FormData class is available in the browser's global scope; ([#5545](https://github.com/axios/axios/issues/5545)) ([a6dfa72](https://github.com/axios/axios/commit/a6dfa72010db5ad52db8bd13c0f98e537e8fd05d)) +- **formdata:** fixed setting NaN as Content-Length for form payload in some cases; ([#5535](https://github.com/axios/axios/issues/5535)) ([c19f7bf](https://github.com/axios/axios/commit/c19f7bf770f90ae8307f4ea3104f227056912da1)) +- **headers:** fixed the filtering logic of the clear method; ([#5542](https://github.com/axios/axios/issues/5542)) ([ea87ebf](https://github.com/axios/axios/commit/ea87ebfe6d1699af072b9e7cd40faf8f14b0ab93)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+11/-7 (#5545 #5535 #5542 )') +- avatar [陈若枫](https://github.com/ruofee '+2/-2 (#5467 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.2](https://github.com/axios/axios/compare/v1.3.1...v1.3.2) (2023-02-03) + +### Bug Fixes + +- **http:** treat http://localhost as base URL for relative paths to avoid `ERR_INVALID_URL` error; ([#5528](https://github.com/axios/axios/issues/5528)) ([128d56f](https://github.com/axios/axios/commit/128d56f4a0fb8f5f2ed6e0dd80bc9225fee9538c)) +- **http:** use explicit import instead of TextEncoder global; ([#5530](https://github.com/axios/axios/issues/5530)) ([6b3c305](https://github.com/axios/axios/commit/6b3c305fc40c56428e0afabedc6f4d29c2830f6f)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+2/-1 (#5530 #5528 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.1](https://github.com/axios/axios/compare/v1.3.0...v1.3.1) (2023-02-01) + +### Bug Fixes + +- **formdata:** add hotfix to use the asynchronous API to compute the content-length header value; ([#5521](https://github.com/axios/axios/issues/5521)) ([96d336f](https://github.com/axios/axios/commit/96d336f527619f21da012fe1f117eeb53e5a2120)) +- **serializer:** fixed serialization of array-like objects; ([#5518](https://github.com/axios/axios/issues/5518)) ([08104c0](https://github.com/axios/axios/commit/08104c028c0f9353897b1b6691d74c440fd0c32d)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+27/-8 (#5521 #5518 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +# [1.3.0](https://github.com/axios/axios/compare/v1.2.6...v1.3.0) (2023-01-31) + +### Bug Fixes + +- **headers:** fixed & optimized clear method; ([#5507](https://github.com/axios/axios/issues/5507)) ([9915635](https://github.com/axios/axios/commit/9915635c69d0ab70daca5738488421f67ca60959)) +- **http:** add zlib headers if missing ([#5497](https://github.com/axios/axios/issues/5497)) ([65e8d1e](https://github.com/axios/axios/commit/65e8d1e28ce829f47a837e45129730e541950d3c)) + +### Features + +- **fomdata:** added support for spec-compliant FormData & Blob types; ([#5316](https://github.com/axios/axios/issues/5316)) ([6ac574e](https://github.com/axios/axios/commit/6ac574e00a06731288347acea1e8246091196953)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+352/-67 (#5514 #5512 #5510 #5509 #5508 #5316 #5507 )') +- avatar [ItsNotGoodName](https://github.com/ItsNotGoodName '+43/-2 (#5497 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.6](https://github.com/axios/axios/compare/v1.2.5...v1.2.6) (2023-01-28) + +### Bug Fixes + +- **headers:** added missed Authorization accessor; ([#5502](https://github.com/axios/axios/issues/5502)) ([342c0ba](https://github.com/axios/axios/commit/342c0ba9a16ea50f5ed7d2366c5c1a2c877e3f26)) +- **types:** fixed `CommonRequestHeadersList` & `CommonResponseHeadersList` types to be private in commonJS; ([#5503](https://github.com/axios/axios/issues/5503)) ([5a3d0a3](https://github.com/axios/axios/commit/5a3d0a3234d77361a1bc7cedee2da1e11df08e2c)) + +### Contributors to this release + +- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+24/-9 (#5503 #5502 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.5](https://github.com/axios/axios/compare/v1.2.4...v1.2.5) (2023-01-26) + +### Bug Fixes + +- **types:** fixed AxiosHeaders to handle spread syntax by making all methods non-enumerable; ([#5499](https://github.com/axios/axios/issues/5499)) ([580f1e8](https://github.com/axios/axios/commit/580f1e8033a61baa38149d59fd16019de3932c22)) + +### Contributors to this release + +- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+82/-54 (#5499 )') +- ![avatar](https://avatars.githubusercontent.com/u/20516159?v=4&s=16) [Elliot Ford](https://github.com/EFord36 '+1/-1 (#5462 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.4](https://github.com/axios/axios/compare/v1.2.3...v1.2.4) (2023-01-22) + +### Bug Fixes + +- **types:** renamed `RawAxiosRequestConfig` back to `AxiosRequestConfig`; ([#5486](https://github.com/axios/axios/issues/5486)) ([2a71f49](https://github.com/axios/axios/commit/2a71f49bc6c68495fa419003a3107ed8bd703ad0)) +- **types:** fix `AxiosRequestConfig` generic; ([#5478](https://github.com/axios/axios/issues/5478)) ([9bce81b](https://github.com/axios/axios/commit/186ea062da8b7d578ae78b1a5c220986b9bce81b)) + +### Contributors to this release + +- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+242/-108 (#5486 #5482 )') +- ![avatar](https://avatars.githubusercontent.com/u/9430821?v=4&s=16) [Daniel Hillmann](https://github.com/hilleer '+1/-1 (#5478 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.3](https://github.com/axios/axios/compare/1.2.2...1.2.3) (2023-01-10) + +### Bug Fixes + +- **types:** fixed AxiosRequestConfig header interface by refactoring it to RawAxiosRequestConfig; ([#5420](https://github.com/axios/axios/issues/5420)) ([0811963](https://github.com/axios/axios/commit/08119634a22f1d5b19f5c9ea0adccb6d3eebc3bc)) + +### Contributors to this release + +- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+938/-442 (#5456 #5455 #5453 #5451 #5449 #5447 #5446 #5443 #5442 #5439 #5420 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.2] - 2022-12-29 + +### Fixed + +- fix(ci): fix release script inputs [#5392](https://github.com/axios/axios/pull/5392) +- fix(ci): prerelease scipts [#5377](https://github.com/axios/axios/pull/5377) +- fix(ci): release scripts [#5376](https://github.com/axios/axios/pull/5376) +- fix(ci): typescript tests [#5375](https://github.com/axios/axios/pull/5375) +- fix: Brotli decompression [#5353](https://github.com/axios/axios/pull/5353) +- fix: add missing HttpStatusCode [#5345](https://github.com/axios/axios/pull/5345) + +### Chores + +- chore(ci): set conventional-changelog header config [#5406](https://github.com/axios/axios/pull/5406) +- chore(ci): fix automatic contributors resolving [#5403](https://github.com/axios/axios/pull/5403) +- chore(ci): improved logging for the contributors list generator [#5398](https://github.com/axios/axios/pull/5398) +- chore(ci): fix release action [#5397](https://github.com/axios/axios/pull/5397) +- chore(ci): fix version bump script by adding bump argument for target version [#5393](https://github.com/axios/axios/pull/5393) +- chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2 [#5342](https://github.com/axios/axios/pull/5342) +- chore(ci): GitHub Actions Release script [#5384](https://github.com/axios/axios/pull/5384) +- chore(ci): release scripts [#5364](https://github.com/axios/axios/pull/5364) + +### Contributors to this release + +- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- ![avatar](https://avatars.githubusercontent.com/u/1652293?v=4&s=16) [Winnie](https://github.com/winniehell) + +## [1.2.1] - 2022-12-05 + +### Changed + +- feat(exports): export mergeConfig [#5151](https://github.com/axios/axios/pull/5151) + +### Fixed + +- fix(CancelledError): include config [#4922](https://github.com/axios/axios/pull/4922) +- fix(general): removing multiple/trailing/leading whitespace [#5022](https://github.com/axios/axios/pull/5022) +- fix(headers): decompression for responses without Content-Length header [#5306](https://github.com/axios/axios/pull/5306) +- fix(webWorker): exception to sending form data in web worker [#5139](https://github.com/axios/axios/pull/5139) + +### Refactors + +- refactor(types): AxiosProgressEvent.event type to any [#5308](https://github.com/axios/axios/pull/5308) +- refactor(types): add missing types for static AxiosError.from method [#4956](https://github.com/axios/axios/pull/4956) + +### Chores + +- chore(docs): remove README link to non-existent upgrade guide [#5307](https://github.com/axios/axios/pull/5307) +- chore(docs): typo in issue template name [#5159](https://github.com/axios/axios/pull/5159) + +### Contributors to this release + +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- [Zachary Lysobey](https://github.com/zachlysobey) +- [Kevin Ennis](https://github.com/kevincennis) +- [Philipp Loose](https://github.com/phloose) +- [secondl1ght](https://github.com/secondl1ght) +- [wenzheng](https://github.com/0x30) +- [Ivan Barsukov](https://github.com/ovarn) +- [Arthur Fiorette](https://github.com/arthurfiorette) + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.0] - 2022-11-10 + +### Changed + +- changed: refactored module exports [#5162](https://github.com/axios/axios/pull/5162) +- change: re-added support for loading Axios with require('axios').default [#5225](https://github.com/axios/axios/pull/5225) + +### Fixed + +- fix: improve AxiosHeaders class [#5224](https://github.com/axios/axios/pull/5224) +- fix: TypeScript type definitions for commonjs [#5196](https://github.com/axios/axios/pull/5196) +- fix: type definition of use method on AxiosInterceptorManager to match the the README [#5071](https://github.com/axios/axios/pull/5071) +- fix: \_\_dirname is not defined in the sandbox [#5269](https://github.com/axios/axios/pull/5269) +- fix: AxiosError.toJSON method to avoid circular references [#5247](https://github.com/axios/axios/pull/5247) +- fix: Z_BUF_ERROR when content-encoding is set but the response body is empty [#5250](https://github.com/axios/axios/pull/5250) + +### Refactors + +- refactor: allowing adapters to be loaded by name [#5277](https://github.com/axios/axios/pull/5277) + +### Chores + +- chore: force CI restart [#5243](https://github.com/axios/axios/pull/5243) +- chore: update ECOSYSTEM.md [#5077](https://github.com/axios/axios/pull/5077) +- chore: update get/index.html [#5116](https://github.com/axios/axios/pull/5116) +- chore: update Sandbox UI/UX [#5205](https://github.com/axios/axios/pull/5205) +- chore:(actions): remove git credentials after checkout [#5235](https://github.com/axios/axios/pull/5235) +- chore(actions): bump actions/dependency-review-action from 2 to 3 [#5266](https://github.com/axios/axios/pull/5266) +- chore(packages): bump loader-utils from 1.4.1 to 1.4.2 [#5295](https://github.com/axios/axios/pull/5295) +- chore(packages): bump engine.io from 6.2.0 to 6.2.1 [#5294](https://github.com/axios/axios/pull/5294) +- chore(packages): bump socket.io-parser from 4.0.4 to 4.0.5 [#5241](https://github.com/axios/axios/pull/5241) +- chore(packages): bump loader-utils from 1.4.0 to 1.4.1 [#5245](https://github.com/axios/axios/pull/5245) +- chore(docs): update Resources links in README [#5119](https://github.com/axios/axios/pull/5119) +- chore(docs): update the link for JSON url [#5265](https://github.com/axios/axios/pull/5265) +- chore(docs): fix broken links [#5218](https://github.com/axios/axios/pull/5218) +- chore(docs): update and rename UPGRADE_GUIDE.md to MIGRATION_GUIDE.md [#5170](https://github.com/axios/axios/pull/5170) +- chore(docs): typo fix line #856 and #920 [#5194](https://github.com/axios/axios/pull/5194) +- chore(docs): typo fix #800 [#5193](https://github.com/axios/axios/pull/5193) +- chore(docs): fix typos [#5184](https://github.com/axios/axios/pull/5184) +- chore(docs): fix punctuation in README.md [#5197](https://github.com/axios/axios/pull/5197) +- chore(docs): update readme in the Handling Errors section - issue reference #5260 [#5261](https://github.com/axios/axios/pull/5261) +- chore: remove \b from filename [#5207](https://github.com/axios/axios/pull/5207) +- chore(docs): update CHANGELOG.md [#5137](https://github.com/axios/axios/pull/5137) +- chore: add sideEffects false to package.json [#5025](https://github.com/axios/axios/pull/5025) + +### Contributors to this release + +- [Maddy Miller](https://github.com/me4502) +- [Amit Saini](https://github.com/amitsainii) +- [ecyrbe](https://github.com/ecyrbe) +- [Ikko Ashimine](https://github.com/eltociear) +- [Geeth Gunnampalli](https://github.com/thetechie7) +- [Shreem Asati](https://github.com/shreem-123) +- [Frieder Bluemle](https://github.com/friederbluemle) +- [윤세ì˜](https://github.com/yunseyeong) +- [Claudio Busatto](https://github.com/cjcbusatto) +- [Remco Haszing](https://github.com/remcohaszing) +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- [Csaba Maulis](https://github.com/om4csaba) +- [MoPaMo](https://github.com/MoPaMo) +- [Daniel Fjeldstad](https://github.com/w3bdesign) +- [Adrien Brunet](https://github.com/adrien-may) +- [Frazer Smith](https://github.com/Fdawgs) +- [HaiTao](https://github.com/836334258) +- [AZM](https://github.com/aziyatali) +- [relbns](https://github.com/relbns) + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.1.3] - 2022-10-15 + +### Added + +- Added custom params serializer support [#5113](https://github.com/axios/axios/pull/5113) + +### Fixed + +- Fixed top-level export to keep them in-line with static properties [#5109](https://github.com/axios/axios/pull/5109) +- Stopped including null values to query string. [#5108](https://github.com/axios/axios/pull/5108) +- Restored proxy config backwards compatibility with 0.x [#5097](https://github.com/axios/axios/pull/5097) +- Added back AxiosHeaders in AxiosHeaderValue [#5103](https://github.com/axios/axios/pull/5103) +- Pin CDN install instructions to a specific version [#5060](https://github.com/axios/axios/pull/5060) +- Handling of array values fixed for AxiosHeaders [#5085](https://github.com/axios/axios/pull/5085) + +### Chores + +- docs: match badge style, add link to them [#5046](https://github.com/axios/axios/pull/5046) +- chore: fixing comments typo [#5054](https://github.com/axios/axios/pull/5054) +- chore: update issue template [#5061](https://github.com/axios/axios/pull/5061) +- chore: added progress capturing section to the docs; [#5084](https://github.com/axios/axios/pull/5084) + +### Contributors to this release + +- [Jason Saayman](https://github.com/jasonsaayman) +- [scarf](https://github.com/scarf005) +- [Lenz Weber-Tronic](https://github.com/phryneas) +- [Arvindh](https://github.com/itsarvindh) +- [Félix Legrelle](https://github.com/FelixLgr) +- [Patrick Petrovic](https://github.com/ppati000) +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- [littledian](https://github.com/littledian) +- [ChronosMasterOfAllTime](https://github.com/ChronosMasterOfAllTime) + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.1.2] - 2022-10-07 + +### Fixed + +- Fixed broken exports for UMD builds. + +### Contributors to this release + +- [Jason Saayman](https://github.com/jasonsaayman) + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.1.1] - 2022-10-07 + +### Fixed + +- Fixed broken exports for common js. This fix breaks a prior fix, I will fix both issues ASAP but the commonJS use is more impactful. + +### Contributors to this release + +- [Jason Saayman](https://github.com/jasonsaayman) + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.1.0] - 2022-10-06 + +### Fixed + +- Fixed missing exports in type definition index.d.ts [#5003](https://github.com/axios/axios/pull/5003) +- Fixed query params composing [#5018](https://github.com/axios/axios/pull/5018) +- Fixed GenericAbortSignal interface by making it more generic [#5021](https://github.com/axios/axios/pull/5021) +- Fixed adding "clear" to AxiosInterceptorManager [#5010](https://github.com/axios/axios/pull/5010) +- Fixed commonjs & umd exports [#5030](https://github.com/axios/axios/pull/5030) +- Fixed inability to access response headers when using axios 1.x with Jest [#5036](https://github.com/axios/axios/pull/5036) + +### Contributors to this release + +- [Trim21](https://github.com/trim21) +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- [shingo.sasaki](https://github.com/s-sasaki-0529) +- [Ivan Pepelko](https://github.com/ivanpepelko) +- [Richard Kořínek](https://github.com/risa) + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +âš ï¸ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.0.0] - 2022-10-04 + +### Added + +- Added stack trace to AxiosError [#4624](https://github.com/axios/axios/pull/4624) +- Add AxiosError to AxiosStatic [#4654](https://github.com/axios/axios/pull/4654) +- Replaced Rollup as our build runner [#4596](https://github.com/axios/axios/pull/4596) +- Added generic TS types for the exposed toFormData helper [#4668](https://github.com/axios/axios/pull/4668) +- Added listen callback function [#4096](https://github.com/axios/axios/pull/4096) +- Added instructions for installing using PNPM [#4207](https://github.com/axios/axios/pull/4207) +- Added generic AxiosAbortSignal TS interface to avoid importing AbortController polyfill [#4229](https://github.com/axios/axios/pull/4229) +- Added axios-url-template in ECOSYSTEM.md [#4238](https://github.com/axios/axios/pull/4238) +- Added a clear() function to the request and response interceptors object so a user can ensure that all interceptors have been removed from an axios instance [#4248](https://github.com/axios/axios/pull/4248) +- Added react hook plugin [#4319](https://github.com/axios/axios/pull/4319) +- Adding HTTP status code for transformResponse [#4580](https://github.com/axios/axios/pull/4580) +- Added blob to the list of protocols supported by the browser [#4678](https://github.com/axios/axios/pull/4678) +- Resolving proxy from env on redirect [#4436](https://github.com/axios/axios/pull/4436) +- Added enhanced toFormData implementation with additional options [4704](https://github.com/axios/axios/pull/4704) +- Adding Canceler parameters config and request [#4711](https://github.com/axios/axios/pull/4711) +- Added automatic payload serialization to application/x-www-form-urlencoded [#4714](https://github.com/axios/axios/pull/4714) +- Added the ability for webpack users to overwrite built-ins [#4715](https://github.com/axios/axios/pull/4715) +- Added string[] to AxiosRequestHeaders type [#4322](https://github.com/axios/axios/pull/4322) +- Added the ability for the url-encoded-form serializer to respect the formSerializer config [#4721](https://github.com/axios/axios/pull/4721) +- Added isCancel type assert [#4293](https://github.com/axios/axios/pull/4293) +- Added data URL support for node.js [#4725](https://github.com/axios/axios/pull/4725) +- Adding types for progress event callbacks [#4675](https://github.com/axios/axios/pull/4675) +- URL params serializer [#4734](https://github.com/axios/axios/pull/4734) +- Added axios.formToJSON method [#4735](https://github.com/axios/axios/pull/4735) +- Bower platform add data protocol [#4804](https://github.com/axios/axios/pull/4804) +- Use WHATWG URL API instead of url.parse() [#4852](https://github.com/axios/axios/pull/4852) +- Add ENUM containing Http Status Codes to typings [#4903](https://github.com/axios/axios/pull/4903) +- Improve typing of timeout in index.d.ts [#4934](https://github.com/axios/axios/pull/4934) + +### Changed + +- Updated AxiosError.config to be optional in the type definition [#4665](https://github.com/axios/axios/pull/4665) +- Updated README emphasizing the URLSearchParam built-in interface over other solutions [#4590](https://github.com/axios/axios/pull/4590) +- Include request and config when creating a CanceledError instance [#4659](https://github.com/axios/axios/pull/4659) +- Changed func-names eslint rule to as-needed [#4492](https://github.com/axios/axios/pull/4492) +- Replacing deprecated substr() with slice() as substr() is deprecated [#4468](https://github.com/axios/axios/pull/4468) +- Updating HTTP links in README.md to use HTTPS [#4387](https://github.com/axios/axios/pull/4387) +- Updated to a better trim() polyfill [#4072](https://github.com/axios/axios/pull/4072) +- Updated types to allow specifying partial default headers on instance create [#4185](https://github.com/axios/axios/pull/4185) +- Expanded isAxiosError types [#4344](https://github.com/axios/axios/pull/4344) +- Updated type definition for axios instance methods [#4224](https://github.com/axios/axios/pull/4224) +- Updated eslint config [#4722](https://github.com/axios/axios/pull/4722) +- Updated Docs [#4742](https://github.com/axios/axios/pull/4742) +- Refactored Axios to use ES2017 [#4787](https://github.com/axios/axios/pull/4787) + +### Deprecated + +- There are multiple deprecations, refactors and fixes provided in this release. Please read through the full release notes to see how this may impact your project and use case. + +### Removed + +- Removed incorrect argument for NetworkError constructor [#4656](https://github.com/axios/axios/pull/4656) +- Removed Webpack [#4596](https://github.com/axios/axios/pull/4596) +- Removed function that transform arguments to array [#4544](https://github.com/axios/axios/pull/4544) + +### Fixed + +- Fixed grammar in README [#4649](https://github.com/axios/axios/pull/4649) +- Fixed code error in README [#4599](https://github.com/axios/axios/pull/4599) +- Optimized the code that checks cancellation [#4587](https://github.com/axios/axios/pull/4587) +- Fix url pointing to defaults.js in README [#4532](https://github.com/axios/axios/pull/4532) +- Use type alias instead of interface for AxiosPromise [#4505](https://github.com/axios/axios/pull/4505) +- Fix some word spelling and lint style in code comments [#4500](https://github.com/axios/axios/pull/4500) +- Edited readme with 3 updated browser icons of Chrome, FireFox and Safari [#4414](https://github.com/axios/axios/pull/4414) +- Bump follow-redirects from 1.14.9 to 1.15.0 [#4673](https://github.com/axios/axios/pull/4673) +- Fixing http tests to avoid hanging when assertions fail [#4435](https://github.com/axios/axios/pull/4435) +- Fix TS definition for AxiosRequestTransformer [#4201](https://github.com/axios/axios/pull/4201) +- Fix grammatical issues in README [#4232](https://github.com/axios/axios/pull/4232) +- Fixing instance.defaults.headers type [#4557](https://github.com/axios/axios/pull/4557) +- Fixed race condition on immediate requests cancellation [#4261](https://github.com/axios/axios/pull/4261) +- Fixing Z_BUF_ERROR when no content [#4701](https://github.com/axios/axios/pull/4701) +- Fixing proxy beforeRedirect regression [#4708](https://github.com/axios/axios/pull/4708) +- Fixed AxiosError status code type [#4717](https://github.com/axios/axios/pull/4717) +- Fixed AxiosError stack capturing [#4718](https://github.com/axios/axios/pull/4718) +- Fixing AxiosRequestHeaders typings [#4334](https://github.com/axios/axios/pull/4334) +- Fixed max body length defaults [#4731](https://github.com/axios/axios/pull/4731) +- Fixed toFormData Blob issue on node>v17 [#4728](https://github.com/axios/axios/pull/4728) +- Bump grunt from 1.5.2 to 1.5.3 [#4743](https://github.com/axios/axios/pull/4743) +- Fixing content-type header repeated [#4745](https://github.com/axios/axios/pull/4745) +- Fixed timeout error message for http [4738](https://github.com/axios/axios/pull/4738) +- Request ignores false, 0 and empty string as body values [#4785](https://github.com/axios/axios/pull/4785) +- Added back missing minified builds [#4805](https://github.com/axios/axios/pull/4805) +- Fixed a type error [#4815](https://github.com/axios/axios/pull/4815) +- Fixed a regression bug with unsubscribing from cancel token; [#4819](https://github.com/axios/axios/pull/4819) +- Remove repeated compression algorithm [#4820](https://github.com/axios/axios/pull/4820) +- The error of calling extend to pass parameters [#4857](https://github.com/axios/axios/pull/4857) +- SerializerOptions.indexes allows boolean | null | undefined [#4862](https://github.com/axios/axios/pull/4862) +- Require interceptors to return values [#4874](https://github.com/axios/axios/pull/4874) +- Removed unused imports [#4949](https://github.com/axios/axios/pull/4949) +- Allow null indexes on formSerializer and paramsSerializer [#4960](https://github.com/axios/axios/pull/4960) + +### Chores + +- Set permissions for GitHub actions [#4765](https://github.com/axios/axios/pull/4765) +- Included githubactions in the dependabot config [#4770](https://github.com/axios/axios/pull/4770) +- Included dependency review [#4771](https://github.com/axios/axios/pull/4771) +- Update security.md [#4784](https://github.com/axios/axios/pull/4784) +- Remove unnecessary spaces [#4854](https://github.com/axios/axios/pull/4854) +- Simplify the import path of AxiosError [#4875](https://github.com/axios/axios/pull/4875) +- Fix Gitpod dead link [#4941](https://github.com/axios/axios/pull/4941) +- Enable syntax highlighting for a code block [#4970](https://github.com/axios/axios/pull/4970) +- Using Logo Axios in Readme.md [#4993](https://github.com/axios/axios/pull/4993) +- Fix markup for note in README [#4825](https://github.com/axios/axios/pull/4825) +- Fix typo and formatting, add colons [#4853](https://github.com/axios/axios/pull/4853) +- Fix typo in readme [#4942](https://github.com/axios/axios/pull/4942) + +### Security + +- Update SECURITY.md [#4687](https://github.com/axios/axios/pull/4687) + +### Contributors to this release + +- [Bertrand Marron](https://github.com/tusbar) +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- [Dan Mooney](https://github.com/danmooney) +- [Michael Li](https://github.com/xiaoyu-tamu) +- [aong](https://github.com/yxwzaxns) +- [Des Preston](https://github.com/despreston) +- [Ted Robertson](https://github.com/tredondo) +- [zhoulixiang](https://github.com/zh-lx) +- [Arthur Fiorette](https://github.com/arthurfiorette) +- [Kumar Shanu](https://github.com/Kr-Shanu) +- [JALAL](https://github.com/JLL32) +- [Jingyi Lin](https://github.com/MageeLin) +- [Philipp Loose](https://github.com/phloose) +- [Alexander Shchukin](https://github.com/sashsvamir) +- [Dave Cardwell](https://github.com/davecardwell) +- [Cat Scarlet](https://github.com/catscarlet) +- [Luca Pizzini](https://github.com/lpizzinidev) +- [Kai](https://github.com/Schweinepriester) +- [Maxime Bargiel](https://github.com/mbargiel) +- [Brian Helba](https://github.com/brianhelba) +- [reslear](https://github.com/reslear) +- [Jamie Slome](https://github.com/JamieSlome) +- [Landro3](https://github.com/Landro3) +- [rafw87](https://github.com/rafw87) +- [Afzal Sayed](https://github.com/afzalsayed96) +- [Koki Oyatsu](https://github.com/kaishuu0123) +- [Dave](https://github.com/wangcch) +- [æš´èµ°è€ä¸ƒ](https://github.com/baozouai) +- [Spencer](https://github.com/spalger) +- [Adrian Wieprzkowicz](https://github.com/Argeento) +- [Jamie Telin](https://github.com/lejahmie) +- [毛呆](https://github.com/aweikalee) +- [Kirill Shakirov](https://github.com/turisap) +- [Rraji Abdelbari](https://github.com/estarossa0) +- [Jelle Schutter](https://github.com/jelleschutter) +- [Tom Ceuppens](https://github.com/KyorCode) +- [Johann Cooper](https://github.com/JohannCooper) +- [Dimitris Halatsis](https://github.com/mitsos1os) +- [chenjigeng](https://github.com/chenjigeng) +- [João Gabriel Quaresma](https://github.com/joaoGabriel55) +- [Victor Augusto](https://github.com/VictorAugDB) +- [neilnaveen](https://github.com/neilnaveen) +- [Pavlos](https://github.com/psmoros) +- [Kiryl Valkovich](https://github.com/visortelle) +- [Naveen](https://github.com/naveensrinivasan) +- [wenzheng](https://github.com/0x30) +- [hcwhan](https://github.com/hcwhan) +- [Bassel Rachid](https://github.com/basselworkforce) +- [Grégoire Pineau](https://github.com/lyrixx) +- [felipedamin](https://github.com/felipedamin) +- [Karl Horky](https://github.com/karlhorky) +- [Yue JIN](https://github.com/kingyue737) +- [Usman Ali Siddiqui](https://github.com/usman250994) +- [WD](https://github.com/techbirds) +- [Günther Foidl](https://github.com/gfoidl) +- [Stephen Jennings](https://github.com/jennings) +- [C.T.Lin](https://github.com/chentsulin) +- [mia-z](https://github.com/mia-z) +- [Parth Banathia](https://github.com/Parth0105) +- [parth0105pluang](https://github.com/parth0105pluang) +- [Marco Weber](https://github.com/mrcwbr) +- [Luca Pizzini](https://github.com/lpizzinidev) +- [Willian Agostini](https://github.com/WillianAgostini) + +- [Huyen Nguyen](https://github.com/huyenltnguyen) diff --git a/node_modules/axios/LICENSE b/node_modules/axios/LICENSE new file mode 100644 index 0000000..05006a5 --- /dev/null +++ b/node_modules/axios/LICENSE @@ -0,0 +1,7 @@ +# Copyright (c) 2014-present Matt Zabriskie & Collaborators + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/axios/MIGRATION_GUIDE.md b/node_modules/axios/MIGRATION_GUIDE.md new file mode 100644 index 0000000..2e59d9d --- /dev/null +++ b/node_modules/axios/MIGRATION_GUIDE.md @@ -0,0 +1,877 @@ +# Axios Migration Guide + +> **Migrating from Axios 0.x to 1.x** +> +> This guide helps developers upgrade from Axios 0.x to 1.x by documenting breaking changes, providing migration strategies, and offering solutions to common upgrade challenges. + +## Table of Contents + +- [Overview](#overview) +- [Breaking Changes](#breaking-changes) +- [Error Handling Migration](#error-handling-migration) +- [API Changes](#api-changes) +- [Configuration Changes](#configuration-changes) +- [Migration Strategies](#migration-strategies) +- [Common Patterns](#common-patterns) +- [Troubleshooting](#troubleshooting) +- [Resources](#resources) + +## Overview + +Axios 1.x introduced several breaking changes to improve consistency, security, and developer experience. While these changes provide better error handling and more predictable behavior, they require code updates when migrating from 0.x versions. + +### Key Changes Summary + +| Area | 0.x Behavior | 1.x Behavior | Impact | +|------|--------------|--------------|--------| +| Error Handling | Selective throwing | Consistent throwing | High | +| JSON Parsing | Lenient | Strict | Medium | +| Browser Support | IE11+ | Modern browsers | Low-Medium | +| TypeScript | Partial | Full support | Low | + +### Migration Complexity + +- **Simple applications**: 1-2 hours +- **Medium applications**: 1-2 days +- **Large applications with complex error handling**: 3-5 days + +## Breaking Changes + +### 1. Error Handling Changes + +**The most significant change in Axios 1.x is how errors are handled.** + +#### 0.x Behavior +```javascript +// Axios 0.x - Some HTTP error codes didn't throw +axios.get('/api/data') + .then(response => { + // Response interceptor could handle all errors + console.log('Success:', response.data); + }); + +// Response interceptor handled everything +axios.interceptors.response.use( + response => response, + error => { + handleError(error); + // Error was "handled" and didn't propagate + } +); +``` + +#### 1.x Behavior +```javascript +// Axios 1.x - All HTTP errors throw consistently +axios.get('/api/data') + .then(response => { + console.log('Success:', response.data); + }) + .catch(error => { + // Must handle errors at call site or they propagate + console.error('Request failed:', error); + }); + +// Response interceptor must re-throw or return rejected promise +axios.interceptors.response.use( + response => response, + error => { + handleError(error); + // Must explicitly handle propagation + return Promise.reject(error); // or throw error; + } +); +``` + +#### Impact +- **Response interceptors** can no longer "swallow" errors silently +- **Every API call** must handle errors explicitly or they become unhandled promise rejections +- **Centralized error handling** requires new patterns + +### 2. JSON Parsing Changes + +#### 0.x Behavior +```javascript +// Axios 0.x - Lenient JSON parsing +// Would attempt to parse even invalid JSON +response.data; // Might contain partial data or fallbacks +``` + +#### 1.x Behavior +```javascript +// Axios 1.x - Strict JSON parsing +// Throws clear errors for invalid JSON +try { + const data = response.data; +} catch (error) { + // Handle JSON parsing errors explicitly +} +``` + +### 3. Request/Response Transform Changes + +#### 0.x Behavior +```javascript +// Implicit transformations with some edge cases +transformRequest: [function (data) { + // Less predictable behavior + return data; +}] +``` + +#### 1.x Behavior +```javascript +// More consistent transformation pipeline +transformRequest: [function (data, headers) { + // Headers parameter always available + // More predictable behavior + return data; +}] +``` + +### 4. Browser Support Changes + +- **0.x**: Supported IE11 and older browsers +- **1.x**: Requires modern browsers with Promise support +- **Polyfills**: May be needed for older browser support + +## Error Handling Migration + +The error handling changes are the most complex part of migrating to Axios 1.x. Here are proven strategies: + +### Strategy 1: Centralized Error Handling with Error Boundary + +```javascript +// Create a centralized error handler +class ApiErrorHandler { + constructor() { + this.setupInterceptors(); + } + + setupInterceptors() { + axios.interceptors.response.use( + response => response, + error => { + // Centralized error processing + this.processError(error); + + // Return a resolved promise with error info for handled errors + if (this.isHandledError(error)) { + return Promise.resolve({ + data: null, + error: this.normalizeError(error), + handled: true + }); + } + + // Re-throw unhandled errors + return Promise.reject(error); + } + ); + } + + processError(error) { + // Log errors + console.error('API Error:', error); + + // Show user notifications + if (error.response?.status === 401) { + this.handleAuthError(); + } else if (error.response?.status >= 500) { + this.showErrorNotification('Server error occurred'); + } + } + + isHandledError(error) { + // Define which errors are "handled" centrally + const handledStatuses = [401, 403, 404, 422, 500, 502, 503]; + return handledStatuses.includes(error.response?.status); + } + + normalizeError(error) { + return { + status: error.response?.status, + message: error.response?.data?.message || error.message, + code: error.response?.data?.code || error.code + }; + } + + handleAuthError() { + // Redirect to login, clear tokens, etc. + localStorage.removeItem('token'); + window.location.href = '/login'; + } + + showErrorNotification(message) { + // Show user-friendly error message + console.error(message); // Replace with your notification system + } +} + +// Initialize globally +const errorHandler = new ApiErrorHandler(); + +// Usage in components/services +async function fetchUserData(userId) { + try { + const response = await axios.get(`/api/users/${userId}`); + + // Check if error was handled centrally + if (response.handled) { + return { data: null, error: response.error }; + } + + return { data: response.data, error: null }; + } catch (error) { + // Unhandled errors still need local handling + return { data: null, error: { message: 'Unexpected error occurred' } }; + } +} +``` + +### Strategy 2: Wrapper Function Pattern + +```javascript +// Create a wrapper that provides 0.x-like behavior +function createApiWrapper() { + const api = axios.create(); + + // Add response interceptor for centralized handling + api.interceptors.response.use( + response => response, + error => { + // Handle common errors centrally + if (error.response?.status === 401) { + // Handle auth errors + handleAuthError(); + } + + if (error.response?.status >= 500) { + // Handle server errors + showServerErrorNotification(); + } + + // Always reject to maintain error propagation + return Promise.reject(error); + } + ); + + // Wrapper function that mimics 0.x behavior + function safeRequest(requestConfig, options = {}) { + return api(requestConfig) + .then(response => response) + .catch(error => { + if (options.suppressErrors) { + // Return error info instead of throwing + return { + data: null, + error: { + status: error.response?.status, + message: error.response?.data?.message || error.message + } + }; + } + throw error; + }); + } + + return { safeRequest, axios: api }; +} + +// Usage +const { safeRequest } = createApiWrapper(); + +// For calls where you want centralized error handling +const result = await safeRequest( + { method: 'get', url: '/api/data' }, + { suppressErrors: true } +); + +if (result.error) { + // Handle error case + console.log('Request failed:', result.error.message); +} else { + // Handle success case + console.log('Data:', result.data); +} +``` + +### Strategy 3: Global Error Handler with Custom Events + +```javascript +// Set up global error handling with events +class GlobalErrorHandler extends EventTarget { + constructor() { + super(); + this.setupInterceptors(); + } + + setupInterceptors() { + axios.interceptors.response.use( + response => response, + error => { + // Emit custom event for global handling + this.dispatchEvent(new CustomEvent('apiError', { + detail: { error, timestamp: new Date() } + })); + + // Always reject to maintain proper error flow + return Promise.reject(error); + } + ); + } +} + +const globalErrorHandler = new GlobalErrorHandler(); + +// Set up global listeners +globalErrorHandler.addEventListener('apiError', (event) => { + const { error } = event.detail; + + // Centralized error logic + if (error.response?.status === 401) { + handleAuthError(); + } + + if (error.response?.status >= 500) { + showErrorNotification('Server error occurred'); + } +}); + +// Usage remains clean +async function apiCall() { + try { + const response = await axios.get('/api/data'); + return response.data; + } catch (error) { + // Error was already handled globally + // Just handle component-specific logic + return null; + } +} +``` + +## API Changes + +### Request Configuration + +#### 0.x to 1.x Changes +```javascript +// 0.x - Some properties had different defaults +const config = { + timeout: 0, // No timeout by default + maxContentLength: -1, // No limit +}; + +// 1.x - More secure defaults +const config = { + timeout: 0, // Still no timeout, but easier to configure + maxContentLength: 2000, // Default limit for security + maxBodyLength: 2000, // New property +}; +``` + +### Response Object + +The response object structure remains largely the same, but error responses are more consistent: + +```javascript +// Both 0.x and 1.x +response = { + data: {}, // Response body + status: 200, // HTTP status + statusText: 'OK', // HTTP status message + headers: {}, // Response headers + config: {}, // Request config + request: {} // Request object +}; + +// Error responses are more consistent in 1.x +error.response = { + data: {}, // Error response body + status: 404, // HTTP error status + statusText: 'Not Found', + headers: {}, + config: {}, + request: {} +}; +``` + +## Configuration Changes + +### Default Configuration Updates + +```javascript +// 0.x defaults +axios.defaults.timeout = 0; // No timeout +axios.defaults.maxContentLength = -1; // No limit + +// 1.x defaults (more secure) +axios.defaults.timeout = 0; // Still no timeout +axios.defaults.maxContentLength = 2000; // 2MB limit +axios.defaults.maxBodyLength = 2000; // 2MB limit +``` + +### Instance Configuration + +```javascript +// 0.x - Instance creation +const api = axios.create({ + baseURL: 'https://api.example.com', + timeout: 1000, +}); + +// 1.x - Same API, but more options available +const api = axios.create({ + baseURL: 'https://api.example.com', + timeout: 1000, + maxBodyLength: Infinity, // Override default if needed + maxContentLength: Infinity, +}); +``` + +## Migration Strategies + +### Step-by-Step Migration Process + +#### Phase 1: Preparation +1. **Audit Current Error Handling** + ```bash + # Find all axios usage + grep -r "axios\." src/ + grep -r "\.catch" src/ + grep -r "interceptors" src/ + ``` + +2. **Identify Patterns** + - Response interceptors that handle errors + - Components that rely on centralized error handling + - Authentication and retry logic + +3. **Create Test Cases** + ```javascript + // Test current error handling behavior + describe('Error Handling Migration', () => { + it('should handle 401 errors consistently', async () => { + // Test authentication error flows + }); + + it('should handle 500 errors with user feedback', async () => { + // Test server error handling + }); + }); + ``` + +#### Phase 2: Implementation +1. **Update Dependencies** + ```bash + npm update axios + ``` + +2. **Implement New Error Handling** + - Choose one of the strategies above + - Update response interceptors + - Add error handling to API calls + +3. **Update Authentication Logic** + ```javascript + // 0.x pattern + axios.interceptors.response.use(null, error => { + if (error.response?.status === 401) { + logout(); + // Error was "handled" + } + }); + + // 1.x pattern + axios.interceptors.response.use( + response => response, + error => { + if (error.response?.status === 401) { + logout(); + } + return Promise.reject(error); // Always propagate + } + ); + ``` + +#### Phase 3: Testing and Validation +1. **Test Error Scenarios** + - Network failures + - HTTP error codes (401, 403, 404, 500, etc.) + - Timeout errors + - JSON parsing errors + +2. **Validate User Experience** + - Error messages are shown appropriately + - Authentication redirects work + - Loading states are handled correctly + +### Gradual Migration Approach + +For large applications, consider gradual migration: + +```javascript +// Create a compatibility layer +const axiosCompat = { + // Use new axios instance for new code + v1: axios.create({ + // 1.x configuration + }), + + // Wrapper for legacy code + legacy: createLegacyWrapper(axios.create({ + // Configuration that mimics 0.x behavior + })) +}; + +function createLegacyWrapper(axiosInstance) { + // Add interceptors that provide 0.x-like behavior + axiosInstance.interceptors.response.use( + response => response, + error => { + // Handle errors in 0.x style for legacy code + handleLegacyError(error); + // Don't propagate certain errors + if (shouldSuppressError(error)) { + return Promise.resolve({ data: null, error: true }); + } + return Promise.reject(error); + } + ); + + return axiosInstance; +} +``` + +## Common Patterns + +### Authentication Interceptors + +#### Updated Authentication Pattern +```javascript +// Token refresh interceptor for 1.x +let isRefreshing = false; +let refreshSubscribers = []; + +function subscribeTokenRefresh(cb) { + refreshSubscribers.push(cb); +} + +function onTokenRefreshed(token) { + refreshSubscribers.forEach(cb => cb(token)); + refreshSubscribers = []; +} + +axios.interceptors.response.use( + response => response, + async error => { + const originalRequest = error.config; + + if (error.response?.status === 401 && !originalRequest._retry) { + if (isRefreshing) { + // Wait for token refresh + return new Promise(resolve => { + subscribeTokenRefresh(token => { + originalRequest.headers.Authorization = `Bearer ${token}`; + resolve(axios(originalRequest)); + }); + }); + } + + originalRequest._retry = true; + isRefreshing = true; + + try { + const newToken = await refreshToken(); + onTokenRefreshed(newToken); + isRefreshing = false; + + originalRequest.headers.Authorization = `Bearer ${newToken}`; + return axios(originalRequest); + } catch (refreshError) { + isRefreshing = false; + logout(); + return Promise.reject(refreshError); + } + } + + return Promise.reject(error); + } +); +``` + +### Retry Logic + +```javascript +// Retry interceptor for 1.x +function createRetryInterceptor(maxRetries = 3, retryDelay = 1000) { + return axios.interceptors.response.use( + response => response, + async error => { + const config = error.config; + + if (!config || !config.retry) { + return Promise.reject(error); + } + + config.__retryCount = config.__retryCount || 0; + + if (config.__retryCount >= maxRetries) { + return Promise.reject(error); + } + + config.__retryCount += 1; + + // Exponential backoff + const delay = retryDelay * Math.pow(2, config.__retryCount - 1); + await new Promise(resolve => setTimeout(resolve, delay)); + + return axios(config); + } + ); +} + +// Usage +const api = axios.create(); +createRetryInterceptor(3, 1000); + +// Make request with retry +api.get('/api/data', { retry: true }); +``` + +### Loading State Management + +```javascript +// Loading interceptor for 1.x +class LoadingManager { + constructor() { + this.requests = new Set(); + this.setupInterceptors(); + } + + setupInterceptors() { + axios.interceptors.request.use(config => { + this.requests.add(config); + this.updateLoadingState(); + return config; + }); + + axios.interceptors.response.use( + response => { + this.requests.delete(response.config); + this.updateLoadingState(); + return response; + }, + error => { + this.requests.delete(error.config); + this.updateLoadingState(); + return Promise.reject(error); + } + ); + } + + updateLoadingState() { + const isLoading = this.requests.size > 0; + // Update your loading UI + document.body.classList.toggle('loading', isLoading); + } +} + +const loadingManager = new LoadingManager(); +``` + +## Troubleshooting + +### Common Migration Issues + +#### Issue 1: Unhandled Promise Rejections + +**Problem:** +```javascript +// This pattern worked in 0.x but causes unhandled rejections in 1.x +axios.get('/api/data'); // No .catch() handler +``` + +**Solution:** +```javascript +// Always handle promises +axios.get('/api/data') + .catch(error => { + // Handle error appropriately + console.error('Request failed:', error.message); + }); + +// Or use async/await with try/catch +async function fetchData() { + try { + const response = await axios.get('/api/data'); + return response.data; + } catch (error) { + console.error('Request failed:', error.message); + return null; + } +} +``` + +#### Issue 2: Response Interceptors Not "Handling" Errors + +**Problem:** +```javascript +// 0.x style - interceptor "handled" errors +axios.interceptors.response.use(null, error => { + showErrorMessage(error.message); + // Error was considered "handled" +}); +``` + +**Solution:** +```javascript +// 1.x style - explicitly control error propagation +axios.interceptors.response.use( + response => response, + error => { + showErrorMessage(error.message); + + // Choose whether to propagate the error + if (shouldPropagateError(error)) { + return Promise.reject(error); + } + + // Return success-like response for "handled" errors + return Promise.resolve({ + data: null, + handled: true, + error: normalizeError(error) + }); + } +); +``` + +#### Issue 3: JSON Parsing Errors + +**Problem:** +```javascript +// 1.x is stricter about JSON parsing +// This might throw where 0.x was lenient +const data = response.data; +``` + +**Solution:** +```javascript +// Add response transformer for better error handling +axios.defaults.transformResponse = [ + function (data) { + if (typeof data === 'string') { + try { + return JSON.parse(data); + } catch (e) { + // Handle JSON parsing errors gracefully + console.warn('Invalid JSON response:', data); + return { error: 'Invalid JSON', rawData: data }; + } + } + return data; + } +]; +``` + +#### Issue 4: TypeScript Errors After Upgrade + +**Problem:** +```typescript +// TypeScript errors after upgrade +const response = await axios.get('/api/data'); +// Property 'someProperty' does not exist on type 'any' +``` + +**Solution:** +```typescript +// Define proper interfaces +interface ApiResponse { + data: any; + message: string; + success: boolean; +} + +const response = await axios.get('/api/data'); +// Now properly typed +console.log(response.data.data); +``` + +### Debug Migration Issues + +#### Enable Debug Logging +```javascript +// Add request/response logging +axios.interceptors.request.use(config => { + console.log('Request:', config); + return config; +}); + +axios.interceptors.response.use( + response => { + console.log('Response:', response); + return response; + }, + error => { + console.log('Error:', error); + return Promise.reject(error); + } +); +``` + +#### Compare Behavior +```javascript +// Create side-by-side comparison during migration +const axios0x = require('axios-0x'); // Keep old version for testing +const axios1x = require('axios'); + +async function compareRequests(config) { + try { + const [result0x, result1x] = await Promise.allSettled([ + axios0x(config), + axios1x(config) + ]); + + console.log('0.x result:', result0x); + console.log('1.x result:', result1x); + } catch (error) { + console.log('Comparison error:', error); + } +} +``` + +## Resources + +### Official Documentation +- [Axios 1.x Documentation](https://axios-http.com/) +- [Axios GitHub Repository](https://github.com/axios/axios) +- [Axios Changelog](https://github.com/axios/axios/blob/main/CHANGELOG.md) + +### Migration Tools +- [Axios Migration Codemod](https://github.com/axios/axios-migration-codemod) *(if available)* +- [ESLint Rules for Axios 1.x](https://github.com/axios/eslint-plugin-axios) *(if available)* + +### Community Resources +- [Stack Overflow - Axios Migration Questions](https://stackoverflow.com/questions/tagged/axios+migration) +- [GitHub Discussions](https://github.com/axios/axios/discussions) +- [Axios Discord Community](https://discord.gg/axios) *(if available)* + +### Related Issues +- [Error Handling Changes Discussion](https://github.com/axios/axios/issues/7208) +- [Migration Guide Request](https://github.com/axios/axios/issues/xxxx) *(link to related issues)* + +--- + +## Need Help? + +If you encounter issues during migration that aren't covered in this guide: + +1. **Search existing issues** in the [Axios GitHub repository](https://github.com/axios/axios/issues) +2. **Ask questions** in [GitHub Discussions](https://github.com/axios/axios/discussions) +3. **Contribute improvements** to this migration guide + +--- + +*This migration guide is maintained by the community. If you find errors or have suggestions, please [open an issue](https://github.com/axios/axios/issues) or submit a pull request.* \ No newline at end of file diff --git a/node_modules/axios/README.md b/node_modules/axios/README.md new file mode 100644 index 0000000..2317225 --- /dev/null +++ b/node_modules/axios/README.md @@ -0,0 +1,1921 @@ +

    🥇 Gold sponsors

    Principal Financial Group

    We’re bound by one common purpose: to give you the financial tools, resources and information you ne...

    www.principal.com

    +
    Buy Instagram Followers Twicsy

    Buy real Instagram followers from Twicsy starting at only $2.97. Twicsy has been voted the best site...

    twicsy.com

    +
    Descope

    Hi, we're Descope! We are building something in the authentication space for app developers and...

    Website | Docs | Community

    +
    Route4Me

    Best Route Planning And Route Optimization Software

    Explore | Free Trial | Contact

    +
    Buzzoid - Buy Instagram Followers

    At Buzzoid, you can buy Instagram followers quickly, safely, and easily with just a few clicks. Rate...

    buzzoid.com

    +
    Poprey - Buy Instagram Likes

    Buy Instagram Likes

    poprey.com

    +
    Requestly

    A lightweight open-source API Development, Testing & Mocking platform

    requestly.com

    +
    💜 Become a sponsor + 💜 Become a sponsor +
    + + + +

    + +
    + Axios
    +
    + +

    Promise based HTTP client for the browser and node.js

    + +

    + Website • + Documentation +

    + +
    + +[![npm version](https://img.shields.io/npm/v/axios.svg?style=flat-square)](https://www.npmjs.org/package/axios) +[![CDNJS](https://img.shields.io/cdnjs/v/axios.svg?style=flat-square)](https://cdnjs.com/libraries/axios) +[![Build status](https://img.shields.io/github/actions/workflow/status/axios/axios/ci.yml?branch=v1.x&label=CI&logo=github&style=flat-square)](https://github.com/axios/axios/actions/workflows/ci.yml) +[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod&style=flat-square)](https://gitpod.io/#https://github.com/axios/axios) +[![code coverage](https://img.shields.io/coveralls/mzabriskie/axios.svg?style=flat-square)](https://coveralls.io/r/mzabriskie/axios) +[![install size](https://img.shields.io/badge/dynamic/json?url=https://packagephobia.com/v2/api.json?p=axios&query=$.install.pretty&label=install%20size&style=flat-square)](https://packagephobia.now.sh/result?p=axios) +[![npm bundle size](https://img.shields.io/bundlephobia/minzip/axios?style=flat-square)](https://bundlephobia.com/package/axios@latest) +[![npm downloads](https://img.shields.io/npm/dm/axios.svg?style=flat-square)](https://npm-stat.com/charts.html?package=axios) +[![gitter chat](https://img.shields.io/gitter/room/mzabriskie/axios.svg?style=flat-square)](https://gitter.im/mzabriskie/axios) +[![code helpers](https://www.codetriage.com/axios/axios/badges/users.svg)](https://www.codetriage.com/axios/axios) +[![Known Vulnerabilities](https://snyk.io/test/npm/axios/badge.svg)](https://snyk.io/test/npm/axios) +[![Contributors](https://img.shields.io/github/contributors/axios/axios.svg?style=flat-square)](CONTRIBUTORS.md) + +
    + +## Table of Contents + +- [Features](#features) +- [Browser Support](#browser-support) +- [Installing](#installing) + - [Package manager](#package-manager) + - [CDN](#cdn) +- [Example](#example) +- [Axios API](#axios-api) +- [Request method aliases](#request-method-aliases) +- [Concurrency 👎](#concurrency-deprecated) +- [Creating an instance](#creating-an-instance) +- [Instance methods](#instance-methods) +- [Request Config](#request-config) +- [Response Schema](#response-schema) +- [Config Defaults](#config-defaults) + - [Global axios defaults](#global-axios-defaults) + - [Custom instance defaults](#custom-instance-defaults) + - [Config order of precedence](#config-order-of-precedence) +- [Interceptors](#interceptors) + - [Multiple Interceptors](#multiple-interceptors) +- [Handling Errors](#handling-errors) +- [Handling Timeouts](#handling-timeouts) +- [Cancellation](#cancellation) + - [AbortController](#abortcontroller) + - [CancelToken 👎](#canceltoken-deprecated) +- [Using application/x-www-form-urlencoded format](#using-applicationx-www-form-urlencoded-format) + - [URLSearchParams](#urlsearchparams) + - [Query string](#query-string-older-browsers) + - [🆕 Automatic serialization](#-automatic-serialization-to-urlsearchparams) +- [Using multipart/form-data format](#using-multipartform-data-format) + - [FormData](#formdata) + - [🆕 Automatic serialization](#-automatic-serialization-to-formdata) +- [Files Posting](#files-posting) +- [HTML Form Posting](#-html-form-posting-browser) +- [🆕 Progress capturing](#-progress-capturing) +- [🆕 Rate limiting](#-rate-limiting) +- [🆕 AxiosHeaders](#-axiosheaders) +- [🔥 Fetch adapter](#-fetch-adapter) + - [🔥 Custom fetch](#-custom-fetch) + - [🔥 Using with Tauri](#-using-with-tauri) + - [🔥 Using with SvelteKit](#-using-with-sveltekit-) +- [🔥 HTTP2](#-http2) +- [Semver](#semver) +- [Promises](#promises) +- [TypeScript](#typescript) +- [Resources](#resources) +- [Credits](#credits) +- [License](#license) + +## Features + +- **Browser Requests:** Make [XMLHttpRequests](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) directly from the browser. +- **Node.js Requests:** Make [http](https://nodejs.org/api/http.html) requests from Node.js environments. +- **Promise-based:** Fully supports the [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) API for easier asynchronous code. +- **Interceptors:** Intercept requests and responses to add custom logic or transform data. +- **Data Transformation:** Transform request and response data automatically. +- **Request Cancellation:** Cancel requests using built-in mechanisms. +- **Automatic JSON Handling:** Automatically serializes and parses [JSON](https://www.json.org/json-en.html) data. +- **Form Serialization:** 🆕 Automatically serializes data objects to `multipart/form-data` or `x-www-form-urlencoded` formats. +- **XSRF Protection:** Client-side support to protect against [Cross-Site Request Forgery](https://en.wikipedia.org/wiki/Cross-site_request_forgery). + +## Browser Support + +| Chrome | Firefox | Safari | Opera | Edge | +| :------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------: | +| ![Chrome browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/chrome/chrome_48x48.png) | ![Firefox browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/firefox/firefox_48x48.png) | ![Safari browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/safari/safari_48x48.png) | ![Opera browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/opera/opera_48x48.png) | ![Edge browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/edge/edge_48x48.png) | +| Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | + +[![Browser Matrix](https://saucelabs.com/open_sauce/build_matrix/axios.svg)](https://saucelabs.com/u/axios) + +## Installing + +### Package manager + +Using npm: + +```bash +$ npm install axios +``` + +Using bower: + +```bash +$ bower install axios +``` + +Using yarn: + +```bash +$ yarn add axios +``` + +Using pnpm: + +```bash +$ pnpm add axios +``` + +Using bun: + +```bash +$ bun add axios +``` + +Once the package is installed, you can import the library using `import` or `require` approach: + +```js +import axios, { isCancel, AxiosError } from "axios"; +``` + +You can also use the default export, since the named export is just a re-export from the Axios factory: + +```js +import axios from "axios"; + +console.log(axios.isCancel("something")); +``` + +If you use `require` for importing, **only the default export is available**: + +```js +const axios = require("axios"); + +console.log(axios.isCancel("something")); +``` + +For some bundlers and some ES6 linters you may need to do the following: + +```js +import { default as axios } from "axios"; +``` + +For cases where something went wrong when trying to import a module into a custom or legacy environment, +you can try importing the module package directly: + +```js +const axios = require("axios/dist/browser/axios.cjs"); // browser commonJS bundle (ES2017) +// const axios = require('axios/dist/node/axios.cjs'); // node commonJS bundle (ES2017) +``` + +### CDN + +Using jsDelivr CDN (ES5 UMD browser module): + +```html + +``` + +Using unpkg CDN: + +```html + +``` + +## Example + +```js +import axios from "axios"; +//const axios = require('axios'); // legacy way + +try { + const response = await axios.get("/user?ID=12345"); + console.log(response); +} catch (error) { + console.error(error); +} + +// Optionally the request above could also be done as +axios + .get("/user", { + params: { + ID: 12345, + }, + }) + .then(function (response) { + console.log(response); + }) + .catch(function (error) { + console.log(error); + }) + .finally(function () { + // always executed + }); + +// Want to use async/await? Add the `async` keyword to your outer function/method. +async function getUser() { + try { + const response = await axios.get("/user?ID=12345"); + console.log(response); + } catch (error) { + console.error(error); + } +} +``` + +> **Note**: `async/await` is part of ECMAScript 2017 and is not supported in Internet +> Explorer and older browsers, so use with caution. + +Performing a `POST` request + +```js +const response = await axios.post("/user", { + firstName: "Fred", + lastName: "Flintstone", +}); +console.log(response); +``` + +Performing multiple concurrent requests + +```js +function getUserAccount() { + return axios.get("/user/12345"); +} + +function getUserPermissions() { + return axios.get("/user/12345/permissions"); +} + +Promise.all([getUserAccount(), getUserPermissions()]).then(function (results) { + const acct = results[0]; + const perm = results[1]; +}); +``` + +## axios API + +Requests can be made by passing the relevant config to `axios`. + +##### axios(config) + +```js +// Send a POST request +axios({ + method: "post", + url: "/user/12345", + data: { + firstName: "Fred", + lastName: "Flintstone", + }, +}); +``` + +```js +// GET request for remote image in node.js +const response = await axios({ + method: "get", + url: "https://bit.ly/2mTM3nY", + responseType: "stream", +}); +response.data.pipe(fs.createWriteStream("ada_lovelace.jpg")); +``` + +##### axios(url[, config]) + +```js +// Send a GET request (default method) +axios("/user/12345"); +``` + +### Request method aliases + +For convenience, aliases have been provided for all common request methods. + +##### axios.request(config) + +##### axios.get(url[, config]) + +##### axios.delete(url[, config]) + +##### axios.head(url[, config]) + +##### axios.options(url[, config]) + +##### axios.post(url[, data[, config]]) + +##### axios.put(url[, data[, config]]) + +##### axios.patch(url[, data[, config]]) + +###### NOTE + +When using the alias methods `url`, `method`, and `data` properties don't need to be specified in config. + +### Concurrency (Deprecated) + +Please use `Promise.all` to replace the below functions. + +Helper functions for dealing with concurrent requests. + +axios.all(iterable) +axios.spread(callback) + +### Creating an instance + +You can create a new instance of axios with a custom config. + +##### axios.create([config]) + +```js +const instance = axios.create({ + baseURL: "https://some-domain.com/api/", + timeout: 1000, + headers: { "X-Custom-Header": "foobar" }, +}); +``` + +### Instance methods + +The available instance methods are listed below. The specified config will be merged with the instance config. + +##### axios#request(config) + +##### axios#get(url[, config]) + +##### axios#delete(url[, config]) + +##### axios#head(url[, config]) + +##### axios#options(url[, config]) + +##### axios#post(url[, data[, config]]) + +##### axios#put(url[, data[, config]]) + +##### axios#patch(url[, data[, config]]) + +##### axios#getUri([config]) + +## Request Config + +These are the available config options for making requests. Only the `url` is required. Requests will default to `GET` if `method` is not specified. + +```js +{ + // `url` is the server URL that will be used for the request + url: '/user', + + // `method` is the request method to be used when making the request + method: 'get', // default + + // `baseURL` will be prepended to `url` unless `url` is absolute and the option `allowAbsoluteUrls` is set to true. + // It can be convenient to set `baseURL` for an instance of axios to pass relative URLs + // to the methods of that instance. + baseURL: 'https://some-domain.com/api/', + + // `allowAbsoluteUrls` determines whether or not absolute URLs will override a configured `baseUrl`. + // When set to true (default), absolute values for `url` will override `baseUrl`. + // When set to false, absolute values for `url` will always be prepended by `baseUrl`. + allowAbsoluteUrls: true, + + // `transformRequest` allows changes to the request data before it is sent to the server + // This is only applicable for request methods 'PUT', 'POST', 'PATCH' and 'DELETE' + // The last function in the array must return a string or an instance of Buffer, ArrayBuffer, + // FormData or Stream + // You may modify the headers object. + transformRequest: [function (data, headers) { + // Do whatever you want to transform the data + + return data; + }], + + // `transformResponse` allows changes to the response data to be made before + // it is passed to then/catch + transformResponse: [function (data) { + // Do whatever you want to transform the data + + return data; + }], + + // `headers` are custom headers to be sent + headers: {'X-Requested-With': 'XMLHttpRequest'}, + + // `params` are the URL parameters to be sent with the request + // Must be a plain object or a URLSearchParams object + params: { + ID: 12345 + }, + + // `paramsSerializer` is an optional config that allows you to customize serializing `params`. + paramsSerializer: { + + // Custom encoder function which sends key/value pairs in an iterative fashion. + encode?: (param: string): string => { /* Do custom operations here and return transformed string */ }, + + // Custom serializer function for the entire parameter. Allows the user to mimic pre 1.x behaviour. + serialize?: (params: Record, options?: ParamsSerializerOptions ), + + // Configuration for formatting array indexes in the params. + indexes: false // Three available options: (1) indexes: null (leads to no brackets), (2) (default) indexes: false (leads to empty brackets), (3) indexes: true (leads to brackets with indexes). + }, + + // `data` is the data to be sent as the request body + // Only applicable for request methods 'PUT', 'POST', 'DELETE', and 'PATCH' + // When no `transformRequest` is set, it must be of one of the following types: + // - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams + // - Browser only: FormData, File, Blob + // - Node only: Stream, Buffer, FormData (form-data package) + data: { + firstName: 'Fred' + }, + + // syntax alternative to send data into the body + // method post + // only the value is sent, not the key + data: 'Country=Brasil&City=Belo Horizonte', + + // `timeout` specifies the number of milliseconds before the request times out. + // If the request takes longer than `timeout`, the request will be aborted. + timeout: 1000, // default is `0` (no timeout) + + // `withCredentials` indicates whether or not cross-site Access-Control requests + // should be made using credentials + withCredentials: false, // default + + // `adapter` allows custom handling of requests which makes testing easier. + // Return a promise and supply a valid response (see lib/adapters/README.md) + adapter: function (config) { + /* ... */ + }, + // Also, you can set the name of the built-in adapter, or provide an array with their names + // to choose the first available in the environment + adapter: 'xhr', // 'fetch' | 'http' | ['xhr', 'http', 'fetch'] + + // `auth` indicates that HTTP Basic auth should be used, and supplies credentials. + // This will set an `Authorization` header, overwriting any existing + // `Authorization` custom headers you have set using `headers`. + // Please note that only HTTP Basic auth is configurable through this parameter. + // For Bearer tokens and such, use `Authorization` custom headers instead. + auth: { + username: 'janedoe', + password: 's00pers3cret' + }, + + // `responseType` indicates the type of data that the server will respond with + // options are: 'arraybuffer', 'document', 'json', 'text', 'stream' + // browser only: 'blob' + responseType: 'json', // default + + // `responseEncoding` indicates encoding to use for decoding responses (Node.js only) + // Note: Ignored for `responseType` of 'stream' or client-side requests + // options are: 'ascii', 'ASCII', 'ansi', 'ANSI', 'binary', 'BINARY', 'base64', 'BASE64', 'base64url', + // 'BASE64URL', 'hex', 'HEX', 'latin1', 'LATIN1', 'ucs-2', 'UCS-2', 'ucs2', 'UCS2', 'utf-8', 'UTF-8', + // 'utf8', 'UTF8', 'utf16le', 'UTF16LE' + responseEncoding: 'utf8', // default + + // `xsrfCookieName` is the name of the cookie to use as a value for the xsrf token + xsrfCookieName: 'XSRF-TOKEN', // default + + // `xsrfHeaderName` is the name of the http header that carries the xsrf token value + xsrfHeaderName: 'X-XSRF-TOKEN', // default + + // `undefined` (default) - set XSRF header only for the same origin requests + withXSRFToken: boolean | undefined | ((config: InternalAxiosRequestConfig) => boolean | undefined), + + // `onUploadProgress` allows handling of progress events for uploads + // browser & node.js + onUploadProgress: function ({loaded, total, progress, bytes, estimated, rate, upload = true}) { + // Do whatever you want with the Axios progress event + }, + + // `onDownloadProgress` allows handling of progress events for downloads + // browser & node.js + onDownloadProgress: function ({loaded, total, progress, bytes, estimated, rate, download = true}) { + // Do whatever you want with the Axios progress event + }, + + // `maxContentLength` defines the max size of the http response content in bytes allowed in node.js + maxContentLength: 2000, + + // `maxBodyLength` (Node only option) defines the max size of the http request content in bytes allowed + maxBodyLength: 2000, + + // `validateStatus` defines whether to resolve or reject the promise for a given + // HTTP response status code. If `validateStatus` returns `true` (or is set to `null` + // or `undefined`), the promise will be resolved; otherwise, the promise will be + // rejected. + validateStatus: function (status) { + return status >= 200 && status < 300; // default + }, + + // `maxRedirects` defines the maximum number of redirects to follow in node.js. + // If set to 0, no redirects will be followed. + maxRedirects: 21, // default + + // `beforeRedirect` defines a function that will be called before redirect. + // Use this to adjust the request options upon redirecting, + // to inspect the latest response headers, + // or to cancel the request by throwing an error + // If maxRedirects is set to 0, `beforeRedirect` is not used. + beforeRedirect: (options, { headers }) => { + if (options.hostname === "example.com") { + options.auth = "user:password"; + } + }, + + // `socketPath` defines a UNIX Socket to be used in node.js. + // e.g. '/var/run/docker.sock' to send requests to the docker daemon. + // Only either `socketPath` or `proxy` can be specified. + // If both are specified, `socketPath` is used. + socketPath: null, // default + + // `transport` determines the transport method that will be used to make the request. + // If defined, it will be used. Otherwise, if `maxRedirects` is 0, + // the default `http` or `https` library will be used, depending on the protocol specified in `protocol`. + // Otherwise, the `httpFollow` or `httpsFollow` library will be used, again depending on the protocol, + // which can handle redirects. + transport: undefined, // default + + // `httpAgent` and `httpsAgent` define a custom agent to be used when performing http + // and https requests, respectively, in node.js. This allows options to be added like + // `keepAlive` that are not enabled by default before Node.js v19.0.0. After Node.js + // v19.0.0, you no longer need to customize the agent to enable `keepAlive` because + // `http.globalAgent` has `keepAlive` enabled by default. + httpAgent: new http.Agent({ keepAlive: true }), + httpsAgent: new https.Agent({ keepAlive: true }), + + // `proxy` defines the hostname, port, and protocol of the proxy server. + // You can also define your proxy using the conventional `http_proxy` and + // `https_proxy` environment variables. If you are using environment variables + // for your proxy configuration, you can also define a `no_proxy` environment + // variable as a comma-separated list of domains that should not be proxied. + // Use `false` to disable proxies, ignoring environment variables. + // `auth` indicates that HTTP Basic auth should be used to connect to the proxy, and + // supplies credentials. + // This will set a `Proxy-Authorization` header, overwriting any existing + // `Proxy-Authorization` custom headers you have set using `headers`. + // If the proxy server uses HTTPS, then you must set the protocol to `https`. + proxy: { + protocol: 'https', + host: '127.0.0.1', + // hostname: '127.0.0.1' // Takes precedence over 'host' if both are defined + port: 9000, + auth: { + username: 'mikeymike', + password: 'rapunz3l' + } + }, + + // `cancelToken` specifies a cancel token that can be used to cancel the request + // (see Cancellation section below for details) + cancelToken: new CancelToken(function (cancel) { + }), + + // an alternative way to cancel Axios requests using AbortController + signal: new AbortController().signal, + + // `decompress` indicates whether or not the response body should be decompressed + // automatically. If set to `true` will also remove the 'content-encoding' header + // from the responses objects of all decompressed responses + // - Node only (XHR cannot turn off decompression) + decompress: true, // default + + // `insecureHTTPParser` boolean. + // Indicates where to use an insecure HTTP parser that accepts invalid HTTP headers. + // This may allow interoperability with non-conformant HTTP implementations. + // Using the insecure parser should be avoided. + // see options https://nodejs.org/dist/latest-v12.x/docs/api/http.html#http_http_request_url_options_callback + // see also https://nodejs.org/en/blog/vulnerability/february-2020-security-releases/#strict-http-header-parsing-none + insecureHTTPParser: undefined, // default + + // transitional options for backward compatibility that may be removed in the newer versions + transitional: { + // silent JSON parsing mode + // `true` - ignore JSON parsing errors and set response.data to null if parsing failed (old behaviour) + // `false` - throw SyntaxError if JSON parsing failed (Note: responseType must be set to 'json') + silentJSONParsing: true, // default value for the current Axios version + + // try to parse the response string as JSON even if `responseType` is not 'json' + forcedJSONParsing: true, + + // throw ETIMEDOUT error instead of generic ECONNABORTED on request timeouts + clarifyTimeoutError: false, + + // use the legacy interceptor request/response ordering + legacyInterceptorReqResOrdering: true, // default + }, + + env: { + // The FormData class to be used to automatically serialize the payload into a FormData object + FormData: window?.FormData || global?.FormData + }, + + formSerializer: { + visitor: (value, key, path, helpers) => {}; // custom visitor function to serialize form values + dots: boolean; // use dots instead of brackets format + metaTokens: boolean; // keep special endings like {} in parameter key + indexes: boolean; // array indexes format null - no brackets, false - empty brackets, true - brackets with indexes + }, + + // http adapter only (node.js) + maxRate: [ + 100 * 1024, // 100KB/s upload limit, + 100 * 1024 // 100KB/s download limit + ] +} +``` + +## Response Schema + +The response to a request contains the following information. + +```js +{ + // `data` is the response that was provided by the server + data: {}, + + // `status` is the HTTP status code from the server response + status: 200, + + // `statusText` is the HTTP status message from the server response + statusText: 'OK', + + // `headers` the HTTP headers that the server responded with + // All header names are lowercase and can be accessed using the bracket notation. + // Example: `response.headers['content-type']` + headers: {}, + + // `config` is the config that was provided to `axios` for the request + config: {}, + + // `request` is the request that generated this response + // It is the last ClientRequest instance in node.js (in redirects) + // and an XMLHttpRequest instance in the browser + request: {} +} +``` + +When using `then`, you will receive the response as follows: + +```js +const response = await axios.get("/user/12345"); +console.log(response.data); +console.log(response.status); +console.log(response.statusText); +console.log(response.headers); +console.log(response.config); +``` + +When using `catch`, or passing a [rejection callback](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then) as second parameter of `then`, the response will be available through the `error` object as explained in the [Handling Errors](#handling-errors) section. + +## Config Defaults + +You can specify config defaults that will be applied to every request. + +### Global axios defaults + +```js +axios.defaults.baseURL = "https://api.example.com"; + +// Important: If axios is used with multiple domains, the AUTH_TOKEN will be sent to all of them. +// See below for an example using Custom instance defaults instead. +axios.defaults.headers.common["Authorization"] = AUTH_TOKEN; + +axios.defaults.headers.post["Content-Type"] = + "application/x-www-form-urlencoded"; +``` + +### Custom instance defaults + +```js +// Set config defaults when creating the instance +const instance = axios.create({ + baseURL: "https://api.example.com", +}); + +// Alter defaults after instance has been created +instance.defaults.headers.common["Authorization"] = AUTH_TOKEN; +``` + +### Config order of precedence + +Config will be merged with an order of precedence. The order is library defaults found in [lib/defaults/index.js](https://github.com/axios/axios/blob/main/lib/defaults/index.js#L49), then `defaults` property of the instance, and finally `config` argument for the request. The latter will take precedence over the former. Here's an example. + +```js +// Create an instance using the config defaults provided by the library +// At this point the timeout config value is `0` as is the default for the library +const instance = axios.create(); + +// Override timeout default for the library +// Now all requests using this instance will wait 2.5 seconds before timing out +instance.defaults.timeout = 2500; + +// Override timeout for this request as it's known to take a long time +instance.get("/longRequest", { + timeout: 5000, +}); +``` + +## Interceptors + +You can intercept requests or responses before methods like `.get()` or `.post()` +resolve their promises (before code inside `then` or `catch`, or after `await`) + +```js +const instance = axios.create(); + +// Add a request interceptor +instance.interceptors.request.use( + function (config) { + // Do something before the request is sent + return config; + }, + function (error) { + // Do something with the request error + return Promise.reject(error); + }, +); + +// Add a response interceptor +instance.interceptors.response.use( + function (response) { + // Any status code that lies within the range of 2xx causes this function to trigger + // Do something with response data + return response; + }, + function (error) { + // Any status codes that fall outside the range of 2xx cause this function to trigger + // Do something with response error + return Promise.reject(error); + }, +); +``` + +If you need to remove an interceptor later you can. + +```js +const instance = axios.create(); +const myInterceptor = instance.interceptors.request.use(function () { + /*...*/ +}); +axios.interceptors.request.eject(myInterceptor); +``` + +You can also clear all interceptors for requests or responses. + +```js +const instance = axios.create(); +instance.interceptors.request.use(function () { + /*...*/ +}); +instance.interceptors.request.clear(); // Removes interceptors from requests +instance.interceptors.response.use(function () { + /*...*/ +}); +instance.interceptors.response.clear(); // Removes interceptors from responses +``` + +You can add interceptors to a custom instance of axios. + +```js +const instance = axios.create(); +instance.interceptors.request.use(function () { + /*...*/ +}); +``` + +When you add request interceptors, they are presumed to be asynchronous by default. This can cause a delay +in the execution of your axios request when the main thread is blocked (a promise is created under the hood for +the interceptor and your request gets put at the bottom of the call stack). If your request interceptors are synchronous you can add a flag +to the options object that will tell axios to run the code synchronously and avoid any delays in request execution. + +```js +axios.interceptors.request.use( + function (config) { + config.headers.test = "I am only a header!"; + return config; + }, + null, + { synchronous: true }, +); +``` + +If you want to execute a particular interceptor based on a runtime check, +you can add a `runWhen` function to the options object. The request interceptor will not be executed **if and only if** the return +of `runWhen` is `false`. The function will be called with the config +object (don't forget that you can bind your own arguments to it as well.) This can be handy when you have an +asynchronous request interceptor that only needs to run at certain times. + +```js +function onGetCall(config) { + return config.method === "get"; +} +axios.interceptors.request.use( + function (config) { + config.headers.test = "special get headers"; + return config; + }, + null, + { runWhen: onGetCall }, +); +``` + +> **Note:** The options parameter(having `synchronous` and `runWhen` properties) is only supported for request interceptors at the moment. + +### Interceptor Execution Order + +**Important:** Interceptors have different execution orders depending on their type! + +Request interceptors are executed in **reverse order** (LIFO - Last In, First Out). This means the _last_ interceptor added is executed **first**. + +Response interceptors are executed in the **order they were added** (FIFO - First In, First Out). This means the _first_ interceptor added is executed **first**. + +Example: + +```js +const instance = axios.create(); + +const interceptor = (id) => (base) => { + console.log(id); + return base; +}; + +instance.interceptors.request.use(interceptor("Request Interceptor 1")); +instance.interceptors.request.use(interceptor("Request Interceptor 2")); +instance.interceptors.request.use(interceptor("Request Interceptor 3")); +instance.interceptors.response.use(interceptor("Response Interceptor 1")); +instance.interceptors.response.use(interceptor("Response Interceptor 2")); +instance.interceptors.response.use(interceptor("Response Interceptor 3")); + +// Console output: +// Request Interceptor 3 +// Request Interceptor 2 +// Request Interceptor 1 +// [HTTP request is made] +// Response Interceptor 1 +// Response Interceptor 2 +// Response Interceptor 3 +``` + +### Multiple Interceptors + +Given that you add multiple response interceptors +and when the response was fulfilled + +- then each interceptor is executed +- then they are executed in the order they were added +- then only the last interceptor's result is returned +- then every interceptor receives the result of its predecessor +- and when the fulfillment-interceptor throws + - then the following fulfillment-interceptor is not called + - then the following rejection-interceptor is called + - once caught, another following fulfill-interceptor is called again (just like in a promise chain). + +Read [the interceptor tests](./test/specs/interceptors.spec.js) to see all this in code. + +## Error Types + +There are many different axios error messages that can appear which can provide basic information about the specifics of the error and where opportunities may lie in debugging. + +The general structure of axios errors is as follows: +| Property | Definition | +| -------- | ---------- | +| message | A quick summary of the error message and the status it failed with. | +| name | This defines where the error originated from. For axios, it will always be an 'AxiosError'. | +| stack | Provides the stack trace of the error. | +| config | An axios config object with specific instance configurations defined by the user from when the request was made | +| code | Represents an axios identified error. The table below lists specific definitions for internal axios error. | +| status | HTTP response status code. See [here](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) for common HTTP response status code meanings. + +Below is a list of potential axios identified error: + +| Code | Definition | +| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ERR_BAD_OPTION_VALUE | Invalid value provided in axios configuration. | +| ERR_BAD_OPTION | Invalid option provided in axios configuration. | +| ERR_NOT_SUPPORT | Feature or method not supported in the current axios environment. | +| ERR_DEPRECATED | Deprecated feature or method used in axios. | +| ERR_INVALID_URL | Invalid URL provided for axios request. | +| ECONNABORTED | Typically indicates that the request has been timed out (unless `transitional.clarifyTimeoutError` is set) or aborted by the browser or its plugin. | +| ERR_CANCELED | Feature or method is canceled explicitly by the user using an AbortSignal (or a CancelToken). | +| ETIMEDOUT | Request timed out due to exceeding the default axios timelimit. `transitional.clarifyTimeoutError` must be set to `true`, otherwise a generic `ECONNABORTED` error will be thrown instead. | +| ERR_NETWORK | Network-related issue. In the browser, this error can also be caused by a [CORS](https://developer.mozilla.org/ru/docs/Web/HTTP/Guides/CORS) or [Mixed Content](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content) policy violation. The browser does not allow the JS code to clarify the real reason for the error caused by security issues, so please check the console. | +| ERR_FR_TOO_MANY_REDIRECTS | Request is redirected too many times; exceeds max redirects specified in axios configuration. | +| ERR_BAD_RESPONSE | Response cannot be parsed properly or is in an unexpected format. Usually related to a response with `5xx` status code. | +| ERR_BAD_REQUEST | The request has an unexpected format or is missing required parameters. Usually related to a response with `4xx` status code. | + +## Handling Errors + +The default behavior is to reject every response that returns with a status code that falls out of the range of 2xx and treat it as an error. + +```js +axios.get("/user/12345").catch(function (error) { + if (error.response) { + // The request was made and the server responded with a status code + // that falls out of the range of 2xx + console.log(error.response.data); + console.log(error.response.status); + console.log(error.response.headers); + } else if (error.request) { + // The request was made but no response was received + // `error.request` is an instance of XMLHttpRequest in the browser and an instance of + // http.ClientRequest in node.js + console.log(error.request); + } else { + // Something happened in setting up the request that triggered an Error + console.log("Error", error.message); + } + console.log(error.config); +}); +``` + +Using the `validateStatus` config option, you can override the default condition (status >= 200 && status < 300) and define HTTP code(s) that should throw an error. + +```js +axios.get("/user/12345", { + validateStatus: function (status) { + return status < 500; // Resolve only if the status code is less than 500 + }, +}); +``` + +Using `toJSON` you get an object with more information about the HTTP error. + +```js +axios.get("/user/12345").catch(function (error) { + console.log(error.toJSON()); +}); +``` + +## Handling Timeouts + +```js +async function fetchWithTimeout() { + try { + const response = await axios.get("https://example.com/data", { + timeout: 5000, // 5 seconds + }); + + console.log("Response:", response.data); + } catch (error) { + if (axios.isAxiosError(error) && error.code === "ECONNABORTED") { + console.error("⌠Request timed out!"); + } else { + console.error("⌠Error:", error.message); + } + } +} +``` + +## Cancellation + +### AbortController + +Starting from `v0.22.0` Axios supports AbortController to cancel requests in a fetch API way: + +```js +const controller = new AbortController(); + +axios + .get("/foo/bar", { + signal: controller.signal, + }) + .then(function (response) { + //... + }); +// cancel the request +controller.abort(); +``` + +### CancelToken `👎deprecated` + +You can also cancel a request using a _CancelToken_. + +> The axios cancel token API is based on the withdrawn [cancellable promises proposal](https://github.com/tc39/proposal-cancelable-promises). + +> This API is deprecated since v0.22.0 and shouldn't be used in new projects + +You can create a cancel token using the `CancelToken.source` factory as shown below: + +```js +const CancelToken = axios.CancelToken; +const source = CancelToken.source(); + +axios + .get("/user/12345", { + cancelToken: source.token, + }) + .catch(function (thrown) { + if (axios.isCancel(thrown)) { + console.log("Request canceled", thrown.message); + } else { + // handle error + } + }); + +axios.post( + "/user/12345", + { + name: "new name", + }, + { + cancelToken: source.token, + }, +); + +// cancel the request (the message parameter is optional) +source.cancel("Operation canceled by the user."); +``` + +You can also create a cancel token by passing an executor function to the `CancelToken` constructor: + +```js +const CancelToken = axios.CancelToken; +let cancel; + +axios.get("/user/12345", { + cancelToken: new CancelToken(function executor(c) { + // An executor function receives a cancel function as a parameter + cancel = c; + }), +}); + +// cancel the request +cancel(); +``` + +> **Note:** you can cancel several requests with the same cancel token/abort controller. +> If a cancellation token is already cancelled at the moment of starting an Axios request, then the request is cancelled immediately, without any attempts to make a real request. + +> During the transition period, you can use both cancellation APIs, even for the same request: + +## Using `application/x-www-form-urlencoded` format + +### URLSearchParams + +By default, axios serializes JavaScript objects to `JSON`. To send data in the [`application/x-www-form-urlencoded`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) format instead, you can use the [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) API, which is [supported](http://www.caniuse.com/#feat=urlsearchparams) in the vast majority of browsers, and [Node](https://nodejs.org/api/url.html#url_class_urlsearchparams) starting with v10 (released in 2018). + +```js +const params = new URLSearchParams({ foo: "bar" }); +params.append("extraparam", "value"); +axios.post("/foo", params); +``` + +### Query string (Older browsers) + +For compatibility with very old browsers, there is a [polyfill](https://github.com/WebReflection/url-search-params) available (make sure to polyfill the global environment). + +Alternatively, you can encode data using the [`qs`](https://github.com/ljharb/qs) library: + +```js +const qs = require("qs"); +axios.post("/foo", qs.stringify({ bar: 123 })); +``` + +Or in another way (ES6), + +```js +import qs from "qs"; +const data = { bar: 123 }; +const options = { + method: "POST", + headers: { "content-type": "application/x-www-form-urlencoded" }, + data: qs.stringify(data), + url, +}; +axios(options); +``` + +### Older Node.js versions + +For older Node.js engines, you can use the [`querystring`](https://nodejs.org/api/querystring.html) module as follows: + +```js +const querystring = require("querystring"); +axios.post("https://something.com/", querystring.stringify({ foo: "bar" })); +``` + +You can also use the [`qs`](https://github.com/ljharb/qs) library. + +> **Note**: The `qs` library is preferable if you need to stringify nested objects, as the `querystring` method has [known issues](https://github.com/nodejs/node-v0.x-archive/issues/1665) with that use case. + +### 🆕 Automatic serialization to URLSearchParams + +Axios will automatically serialize the data object to urlencoded format if the content-type header is set to "application/x-www-form-urlencoded". + +```js +const data = { + x: 1, + arr: [1, 2, 3], + arr2: [1, [2], 3], + users: [ + { name: "Peter", surname: "Griffin" }, + { name: "Thomas", surname: "Anderson" }, + ], +}; + +await axios.postForm("https://postman-echo.com/post", data, { + headers: { "content-type": "application/x-www-form-urlencoded" }, +}); +``` + +The server will handle it as: + +```js + { + x: '1', + 'arr[]': [ '1', '2', '3' ], + 'arr2[0]': '1', + 'arr2[1][0]': '2', + 'arr2[2]': '3', + 'arr3[]': [ '1', '2', '3' ], + 'users[0][name]': 'Peter', + 'users[0][surname]': 'griffin', + 'users[1][name]': 'Thomas', + 'users[1][surname]': 'Anderson' + } +``` + +If your backend body-parser (like `body-parser` of `express.js`) supports nested objects decoding, you will get the same object on the server-side automatically + +```js +const app = express(); + +app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies + +app.post("/", function (req, res, next) { + // echo body as JSON + res.send(JSON.stringify(req.body)); +}); + +server = app.listen(3000); +``` + +## Using `multipart/form-data` format + +### FormData + +To send the data as a `multipart/form-data` you need to pass a formData instance as a payload. +Setting the `Content-Type` header is not required as Axios guesses it based on the payload type. + +```js +const formData = new FormData(); +formData.append("foo", "bar"); + +axios.post("https://httpbin.org/post", formData); +``` + +In node.js, you can use the [`form-data`](https://github.com/form-data/form-data) library as follows: + +```js +const FormData = require("form-data"); + +const form = new FormData(); +form.append("my_field", "my value"); +form.append("my_buffer", Buffer.alloc(10)); +form.append("my_file", fs.createReadStream("/foo/bar.jpg")); + +axios.post("https://example.com", form); +``` + +### 🆕 Automatic serialization to FormData + +Starting from `v0.27.0`, Axios supports automatic object serialization to a FormData object if the request `Content-Type` +header is set to `multipart/form-data`. + +The following request will submit the data in a FormData format (Browser & Node.js): + +```js +import axios from "axios"; + +axios + .post( + "https://httpbin.org/post", + { x: 1 }, + { + headers: { + "Content-Type": "multipart/form-data", + }, + }, + ) + .then(({ data }) => console.log(data)); +``` + +In the `node.js` build, the ([`form-data`](https://github.com/form-data/form-data)) polyfill is used by default. + +You can overload the FormData class by setting the `env.FormData` config variable, +but you probably won't need it in most cases: + +```js +const axios = require("axios"); +var FormData = require("form-data"); + +axios + .post( + "https://httpbin.org/post", + { x: 1, buf: Buffer.alloc(10) }, + { + headers: { + "Content-Type": "multipart/form-data", + }, + }, + ) + .then(({ data }) => console.log(data)); +``` + +Axios FormData serializer supports some special endings to perform the following operations: + +- `{}` - serialize the value with JSON.stringify +- `[]` - unwrap the array-like object as separate fields with the same key + +> **Note**: unwrap/expand operation will be used by default on arrays and FileList objects + +FormData serializer supports additional options via `config.formSerializer: object` property to handle rare cases: + +- `visitor: Function` - user-defined visitor function that will be called recursively to serialize the data object + to a `FormData` object by following custom rules. + +- `dots: boolean = false` - use dot notation instead of brackets to serialize arrays and objects; + +- `metaTokens: boolean = true` - add the special ending (e.g `user{}: '{"name": "John"}'`) in the FormData key. + The back-end body-parser could potentially use this meta-information to automatically parse the value as JSON. + +- `indexes: null|false|true = false` - controls how indexes will be added to unwrapped keys of `flat` array-like objects. + - `null` - don't add brackets (`arr: 1`, `arr: 2`, `arr: 3`) + - `false`(default) - add empty brackets (`arr[]: 1`, `arr[]: 2`, `arr[]: 3`) + - `true` - add brackets with indexes (`arr[0]: 1`, `arr[1]: 2`, `arr[2]: 3`) + +Let's say we have an object like this one: + +```js +const obj = { + x: 1, + arr: [1, 2, 3], + arr2: [1, [2], 3], + users: [ + { name: "Peter", surname: "Griffin" }, + { name: "Thomas", surname: "Anderson" }, + ], + "obj2{}": [{ x: 1 }], +}; +``` + +The following steps will be executed by the Axios serializer internally: + +```js +const formData = new FormData(); +formData.append("x", "1"); +formData.append("arr[]", "1"); +formData.append("arr[]", "2"); +formData.append("arr[]", "3"); +formData.append("arr2[0]", "1"); +formData.append("arr2[1][0]", "2"); +formData.append("arr2[2]", "3"); +formData.append("users[0][name]", "Peter"); +formData.append("users[0][surname]", "Griffin"); +formData.append("users[1][name]", "Thomas"); +formData.append("users[1][surname]", "Anderson"); +formData.append("obj2{}", '[{"x":1}]'); +``` + +Axios supports the following shortcut methods: `postForm`, `putForm`, `patchForm` +which are just the corresponding http methods with the `Content-Type` header preset to `multipart/form-data`. + +## Files Posting + +You can easily submit a single file: + +```js +await axios.postForm("https://httpbin.org/post", { + myVar: "foo", + file: document.querySelector("#fileInput").files[0], +}); +``` + +or multiple files as `multipart/form-data`: + +```js +await axios.postForm("https://httpbin.org/post", { + "files[]": document.querySelector("#fileInput").files, +}); +``` + +`FileList` object can be passed directly: + +```js +await axios.postForm( + "https://httpbin.org/post", + document.querySelector("#fileInput").files, +); +``` + +All files will be sent with the same field names: `files[]`. + +## 🆕 HTML Form Posting (browser) + +Pass an HTML Form element as a payload to submit it as `multipart/form-data` content. + +```js +await axios.postForm( + "https://httpbin.org/post", + document.querySelector("#htmlForm"), +); +``` + +`FormData` and `HTMLForm` objects can also be posted as `JSON` by explicitly setting the `Content-Type` header to `application/json`: + +```js +await axios.post( + "https://httpbin.org/post", + document.querySelector("#htmlForm"), + { + headers: { + "Content-Type": "application/json", + }, + }, +); +``` + +For example, the Form + +```html +
    + + + + + + + + + +
    +``` + +will be submitted as the following JSON object: + +```js +{ + "foo": "1", + "deep": { + "prop": { + "spaced": "3" + } + }, + "baz": [ + "4", + "5" + ], + "user": { + "age": "value2" + } +} +``` + +Sending `Blobs`/`Files` as JSON (`base64`) is not currently supported. + +## 🆕 Progress capturing + +Axios supports both browser and node environments to capture request upload/download progress. +The frequency of progress events is forced to be limited to `3` times per second. + +```js +await axios.post(url, data, { + onUploadProgress: function (axiosProgressEvent) { + /*{ + loaded: number; + total?: number; + progress?: number; // in range [0..1] + bytes: number; // how many bytes have been transferred since the last trigger (delta) + estimated?: number; // estimated time in seconds + rate?: number; // upload speed in bytes + upload: true; // upload sign + }*/ + }, + + onDownloadProgress: function (axiosProgressEvent) { + /*{ + loaded: number; + total?: number; + progress?: number; + bytes: number; + estimated?: number; + rate?: number; // download speed in bytes + download: true; // download sign + }*/ + }, +}); +``` + +You can also track stream upload/download progress in node.js: + +```js +const { data } = await axios.post(SERVER_URL, readableStream, { + onUploadProgress: ({ progress }) => { + console.log((progress * 100).toFixed(2)); + }, + + headers: { + "Content-Length": contentLength, + }, + + maxRedirects: 0, // avoid buffering the entire stream +}); +``` + +> **Note:** +> Capturing FormData upload progress is not currently supported in node.js environments. + +> **âš ï¸ Warning** +> It is recommended to disable redirects by setting maxRedirects: 0 to upload the stream in the **node.js** environment, +> as the follow-redirects package will buffer the entire stream in RAM without following the "backpressure" algorithm. + +## 🆕 Rate limiting + +Download and upload rate limits can only be set for the http adapter (node.js): + +```js +const { data } = await axios.post(LOCAL_SERVER_URL, myBuffer, { + onUploadProgress: ({ progress, rate }) => { + console.log( + `Upload [${(progress * 100).toFixed(2)}%]: ${(rate / 1024).toFixed(2)}KB/s`, + ); + }, + + maxRate: [100 * 1024], // 100KB/s limit +}); +``` + +## 🆕 AxiosHeaders + +Axios has its own `AxiosHeaders` class to manipulate headers using a Map-like API that guarantees caseless work. +Although HTTP is case-insensitive in headers, Axios will retain the case of the original header for stylistic reasons +and as a workaround when servers mistakenly consider the header's case. +The old approach of directly manipulating the headers object is still available, but deprecated and not recommended for future usage. + +### Working with headers + +An AxiosHeaders object instance can contain different types of internal values. that control setting and merging logic. +The final headers object with string values is obtained by Axios by calling the `toJSON` method. + +> Note: By JSON here we mean an object consisting only of string values intended to be sent over the network. + +The header value can be one of the following types: + +- `string` - normal string value that will be sent to the server +- `null` - skip header when rendering to JSON +- `false` - skip header when rendering to JSON, additionally indicates that `set` method must be called with `rewrite` option set to `true` + to overwrite this value (Axios uses this internally to allow users to opt out of installing certain headers like `User-Agent` or `Content-Type`) +- `undefined` - value is not set + +> Note: The header value is considered set if it is not equal to undefined. + +The headers object is always initialized inside interceptors and transformers: + +```ts +axios.interceptors.request.use((request: InternalAxiosRequestConfig) => { + request.headers.set("My-header", "value"); + + request.headers.set({ + "My-set-header1": "my-set-value1", + "My-set-header2": "my-set-value2", + }); + + request.headers.set("User-Agent", false); // disable subsequent setting the header by Axios + + request.headers.setContentType("text/plain"); + + request.headers["My-set-header2"] = "newValue"; // direct access is deprecated + + return request; +}); +``` + +You can iterate over an `AxiosHeaders` instance using a `for...of` statement: + +```js +const headers = new AxiosHeaders({ + foo: "1", + bar: "2", + baz: "3", +}); + +for (const [header, value] of headers) { + console.log(header, value); +} + +// foo 1 +// bar 2 +// baz 3 +``` + +### new AxiosHeaders(headers?) + +Constructs a new `AxiosHeaders` instance. + +``` +constructor(headers?: RawAxiosHeaders | AxiosHeaders | string); +``` + +If the headers object is a string, it will be parsed as RAW HTTP headers. + +```js +const headers = new AxiosHeaders(` +Host: www.bing.com +User-Agent: curl/7.54.0 +Accept: */*`); + +console.log(headers); + +// Object [AxiosHeaders] { +// host: 'www.bing.com', +// 'user-agent': 'curl/7.54.0', +// accept: '*/*' +// } +``` + +### AxiosHeaders#set + +```ts +set(headerName, value: Axios, rewrite?: boolean); +set(headerName, value, rewrite?: (this: AxiosHeaders, value: string, name: string, headers: RawAxiosHeaders) => boolean); +set(headers?: RawAxiosHeaders | AxiosHeaders | string, rewrite?: boolean); +``` + +The `rewrite` argument controls the overwriting behavior: + +- `false` - do not overwrite if the header's value is set (is not `undefined`) +- `undefined` (default) - overwrite the header unless its value is set to `false` +- `true` - rewrite anyway + +The option can also accept a user-defined function that determines whether the value should be overwritten or not. + +Returns `this`. + +### AxiosHeaders#get(header) + +``` + get(headerName: string, matcher?: true | AxiosHeaderMatcher): AxiosHeaderValue; + get(headerName: string, parser: RegExp): RegExpExecArray | null; +``` + +Returns the internal value of the header. It can take an extra argument to parse the header's value with `RegExp.exec`, +matcher function or internal key-value parser. + +```ts +const headers = new AxiosHeaders({ + "Content-Type": "multipart/form-data; boundary=Asrf456BGe4h", +}); + +console.log(headers.get("Content-Type")); +// multipart/form-data; boundary=Asrf456BGe4h + +console.log(headers.get("Content-Type", true)); // parse key-value pairs from a string separated with \s,;= delimiters: +// [Object: null prototype] { +// 'multipart/form-data': undefined, +// boundary: 'Asrf456BGe4h' +// } + +console.log( + headers.get("Content-Type", (value, name, headers) => { + return String(value).replace(/a/g, "ZZZ"); + }), +); +// multipZZZrt/form-dZZZtZZZ; boundZZZry=Asrf456BGe4h + +console.log(headers.get("Content-Type", /boundary=(\w+)/)?.[0]); +// boundary=Asrf456BGe4h +``` + +Returns the value of the header. + +### AxiosHeaders#has(header, matcher?) + +``` +has(header: string, matcher?: AxiosHeaderMatcher): boolean; +``` + +Returns `true` if the header is set (has no `undefined` value). + +### AxiosHeaders#delete(header, matcher?) + +``` +delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean; +``` + +Returns `true` if at least one header has been removed. + +### AxiosHeaders#clear(matcher?) + +``` +clear(matcher?: AxiosHeaderMatcher): boolean; +``` + +Removes all headers. +Unlike the `delete` method matcher, this optional matcher will be used to match against the header name rather than the value. + +```ts +const headers = new AxiosHeaders({ + foo: "1", + "x-foo": "2", + "x-bar": "3", +}); + +console.log(headers.clear(/^x-/)); // true + +console.log(headers.toJSON()); // [Object: null prototype] { foo: '1' } +``` + +Returns `true` if at least one header has been cleared. + +### AxiosHeaders#normalize(format); + +If the headers object was changed directly, it can have duplicates with the same name but in different cases. +This method normalizes the headers object by combining duplicate keys into one. +Axios uses this method internally after calling each interceptor. +Set `format` to true for converting header names to lowercase and capitalizing the initial letters (`cOntEnt-type` => `Content-Type`) + +```js +const headers = new AxiosHeaders({ + foo: "1", +}); + +headers.Foo = "2"; +headers.FOO = "3"; + +console.log(headers.toJSON()); // [Object: null prototype] { foo: '1', Foo: '2', FOO: '3' } +console.log(headers.normalize().toJSON()); // [Object: null prototype] { foo: '3' } +console.log(headers.normalize(true).toJSON()); // [Object: null prototype] { Foo: '3' } +``` + +Returns `this`. + +### AxiosHeaders#concat(...targets) + +``` +concat(...targets: Array): AxiosHeaders; +``` + +Merges the instance with targets into a new `AxiosHeaders` instance. If the target is a string, it will be parsed as RAW HTTP headers. + +Returns a new `AxiosHeaders` instance. + +### AxiosHeaders#toJSON(asStrings?) + +``` +toJSON(asStrings?: boolean): RawAxiosHeaders; +``` + +Resolve all internal header values into a new null prototype object. +Set `asStrings` to true to resolve arrays as a string containing all elements, separated by commas. + +### AxiosHeaders.from(thing?) + +``` +from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders; +``` + +Returns a new `AxiosHeaders` instance created from the raw headers passed in, +or simply returns the given headers object if it's an `AxiosHeaders` instance. + +### AxiosHeaders.concat(...targets) + +``` +concat(...targets: Array): AxiosHeaders; +``` + +Returns a new `AxiosHeaders` instance created by merging the target objects. + +### Shortcuts + +The following shortcuts are available: + +- `setContentType`, `getContentType`, `hasContentType` + +- `setContentLength`, `getContentLength`, `hasContentLength` + +- `setAccept`, `getAccept`, `hasAccept` + +- `setUserAgent`, `getUserAgent`, `hasUserAgent` + +- `setContentEncoding`, `getContentEncoding`, `hasContentEncoding` + +## 🔥 Fetch adapter + +Fetch adapter was introduced in `v1.7.0`. By default, it will be used if `xhr` and `http` adapters are not available in the build, +or not supported by the environment. +To use it by default, it must be selected explicitly: + +```js +const { data } = axios.get(url, { + adapter: "fetch", // by default ['xhr', 'http', 'fetch'] +}); +``` + +You can create a separate instance for this: + +```js +const fetchAxios = axios.create({ + adapter: "fetch", +}); + +const { data } = fetchAxios.get(url); +``` + +The adapter supports the same functionality as the `xhr` adapter, **including upload and download progress capturing**. +Also, it supports additional response types such as `stream` and `formdata` (if supported by the environment). + +### 🔥 Custom fetch + +Starting from `v1.12.0`, you can customize the fetch adapter to use a custom fetch API instead of environment globals. +You can pass a custom `fetch` function, `Request`, and `Response` constructors via env config. +This can be helpful in case of custom environments & app frameworks. + +Also, when using a custom fetch, you may need to set custom Request and Response too. If you don't set them, global objects will be used. +If your custom fetch api does not have these objects, and the globals are incompatible with a custom fetch, +you must disable their use inside the fetch adapter by passing null. + +> Note: Setting `Request` & `Response` to `null` will make it impossible for the fetch adapter to capture the upload & download progress. + +Basic example: + +```js +import customFetchFunction from "customFetchModule"; + +const instance = axios.create({ + adapter: "fetch", + onDownloadProgress(e) { + console.log("downloadProgress", e); + }, + env: { + fetch: customFetchFunction, + Request: null, // undefined -> use the global constructor + Response: null, + }, +}); +``` + +#### 🔥 Using with Tauri + +A minimal example of setting up Axios for use in a [Tauri](https://tauri.app/plugin/http-client/) app with a platform fetch function that ignores CORS policy for requests. + +```js +import { fetch } from "@tauri-apps/plugin-http"; +import axios from "axios"; + +const instance = axios.create({ + adapter: "fetch", + onDownloadProgress(e) { + console.log("downloadProgress", e); + }, + env: { + fetch, + }, +}); + +const { data } = await instance.get("https://google.com"); +``` + +#### 🔥 Using with SvelteKit + +[SvelteKit](https://svelte.dev/docs/kit/web-standards#Fetch-APIs) framework has a custom implementation of the fetch function for server rendering (so called `load` functions), and also uses relative paths, +which makes it incompatible with the standard URL API. So, Axios must be configured to use the custom fetch API: + +```js +export async function load({ fetch }) { + const { data: post } = await axios.get( + "https://jsonplaceholder.typicode.com/posts/1", + { + adapter: "fetch", + env: { + fetch, + Request: null, + Response: null, + }, + }, + ); + + return { post }; +} +``` + +## 🔥 HTTP2 + +In version `1.13.0`, experimental `HTTP2` support was added to the `http` adapter. +The `httpVersion` option is now available to select the protocol version used. +Additional native options for the internal `session.request()` call can be passed via the `http2Options` config. +This config also includes the custom `sessionTimeout` parameter, which defaults to `1000ms`. + +```js +const form = new FormData(); + +form.append("foo", "123"); + +const { data, headers, status } = await axios.post( + "https://httpbin.org/post", + form, + { + httpVersion: 2, + http2Options: { + // rejectUnauthorized: false, + // sessionTimeout: 1000 + }, + onUploadProgress(e) { + console.log("upload progress", e); + }, + onDownloadProgress(e) { + console.log("download progress", e); + }, + responseType: "arraybuffer", + }, +); +``` + +## Semver + +Since Axios has reached a `v.1.0.0` we will fully embrace semver as per the spec [here](https://semver.org/) + +## Promises + +axios depends on a native ES6 Promise implementation to be [supported](https://caniuse.com/promises). +If your environment doesn't support ES6 Promises, you can [polyfill](https://github.com/jakearchibald/es6-promise). + +## TypeScript + +axios includes [TypeScript](https://typescriptlang.org) definitions and a type guard for axios errors. + +```typescript +let user: User = null; +try { + const { data } = await axios.get("/user?ID=12345"); + user = data.userDetails; +} catch (error) { + if (axios.isAxiosError(error)) { + handleAxiosError(error); + } else { + handleUnexpectedError(error); + } +} +``` + +Because axios dual publishes with an ESM default export and a CJS `module.exports`, there are some caveats. +The recommended setting is to use `"moduleResolution": "node16"` (this is implied by `"module": "node16"`). Note that this requires TypeScript 4.7 or greater. +If use ESM, your settings should be fine. +If you compile TypeScript to CJS and you can’t use `"moduleResolution": "node 16"`, you have to enable `esModuleInterop`. +If you use TypeScript to type check CJS JavaScript code, your only option is to use `"moduleResolution": "node16"`. + +You can also create a custom instance with typed interceptors: + +```typescript +import axios, { AxiosInstance, InternalAxiosRequestConfig } from "axios"; + +const apiClient: AxiosInstance = axios.create({ + baseURL: "https://api.example.com", + timeout: 10000, +}); + +apiClient.interceptors.request.use((config: InternalAxiosRequestConfig) => { + // Add auth token + return config; +}); +``` + +## Online one-click setup + +You can use Gitpod, an online IDE(which is free for Open Source) for contributing or running the examples online. + +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/axios/axios/blob/main/examples/server.js) + +## Resources + +- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) +- [Ecosystem](https://github.com/axios/axios/blob/v1.x/ECOSYSTEM.md) +- [Contributing Guide](https://github.com/axios/axios/blob/v1.x/CONTRIBUTING.md) +- [Code of Conduct](https://github.com/axios/axios/blob/v1.x/CODE_OF_CONDUCT.md) + +## Credits + +axios is heavily inspired by the [$http service](https://docs.angularjs.org/api/ng/service/$http) provided in [AngularJS](https://angularjs.org/). Ultimately axios is an effort to provide a standalone `$http`-like service for use outside of AngularJS. + +## License + +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) diff --git a/node_modules/axios/dist/axios.js b/node_modules/axios/dist/axios.js new file mode 100644 index 0000000..925dc39 --- /dev/null +++ b/node_modules/axios/dist/axios.js @@ -0,0 +1,4463 @@ +/*! Axios v1.13.6 Copyright (c) 2026 Matt Zabriskie and contributors */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.axios = factory()); +})(this, (function () { 'use strict'; + + function _OverloadYield(e, d) { + this.v = e, this.k = d; + } + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function _arrayWithHoles(r) { + if (Array.isArray(r)) return r; + } + function _arrayWithoutHoles(r) { + if (Array.isArray(r)) return _arrayLikeToArray(r); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _asyncGeneratorDelegate(t) { + var e = {}, + n = !1; + function pump(e, r) { + return n = !0, r = new Promise(function (n) { + n(t[e](r)); + }), { + done: !1, + value: new _OverloadYield(r, 1) + }; + } + return e["undefined" != typeof Symbol && Symbol.iterator || "@@iterator"] = function () { + return this; + }, e.next = function (t) { + return n ? (n = !1, t) : pump("next", t); + }, "function" == typeof t.throw && (e.throw = function (t) { + if (n) throw n = !1, t; + return pump("throw", t); + }), "function" == typeof t.return && (e.return = function (t) { + return n ? (n = !1, t) : pump("return", t); + }), e; + } + function _asyncIterator(r) { + var n, + t, + o, + e = 2; + for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) { + if (t && null != (n = r[t])) return n.call(r); + if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r)); + t = "@@asyncIterator", o = "@@iterator"; + } + throw new TypeError("Object is not async iterable"); + } + function AsyncFromSyncIterator(r) { + function AsyncFromSyncIteratorContinuation(r) { + if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); + var n = r.done; + return Promise.resolve(r.value).then(function (r) { + return { + value: r, + done: n + }; + }); + } + return AsyncFromSyncIterator = function (r) { + this.s = r, this.n = r.next; + }, AsyncFromSyncIterator.prototype = { + s: null, + n: null, + next: function () { + return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); + }, + return: function (r) { + var n = this.s.return; + return void 0 === n ? Promise.resolve({ + value: r, + done: !0 + }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); + }, + throw: function (r) { + var n = this.s.return; + return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); + } + }, new AsyncFromSyncIterator(r); + } + function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), + u = i.value; + } catch (n) { + return void e(n); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); + } + function _asyncToGenerator(n) { + return function () { + var t = this, + e = arguments; + return new Promise(function (r, o) { + var a = n.apply(t, e); + function _next(n) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n); + } + function _throw(n) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); + } + _next(void 0); + }); + }; + } + function _awaitAsyncGenerator(e) { + return new _OverloadYield(e, 0); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _construct(t, e, r) { + if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); + var o = [null]; + o.push.apply(o, e); + var p = new (t.bind.apply(t, o))(); + return r && _setPrototypeOf(p, r.prototype), p; + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { + writable: !1 + }), e; + } + function _createForOfIteratorHelper(r, e) { + var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (!t) { + if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { + t && (r = t); + var n = 0, + F = function () {}; + return { + s: F, + n: function () { + return n >= r.length ? { + done: !0 + } : { + done: !1, + value: r[n++] + }; + }, + e: function (r) { + throw r; + }, + f: F + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + var o, + a = !0, + u = !1; + return { + s: function () { + t = t.call(r); + }, + n: function () { + var r = t.next(); + return a = r.done, r; + }, + e: function (r) { + u = !0, o = r; + }, + f: function () { + try { + a || null == t.return || t.return(); + } finally { + if (u) throw o; + } + } + }; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { + value: t, + enumerable: !0, + configurable: !0, + writable: !0 + }) : e[r] = t, e; + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { + return t.__proto__ || Object.getPrototypeOf(t); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + writable: !0, + configurable: !0 + } + }), Object.defineProperty(t, "prototype", { + writable: !1 + }), e && _setPrototypeOf(t, e); + } + function _isNativeFunction(t) { + try { + return -1 !== Function.toString.call(t).indexOf("[native code]"); + } catch (n) { + return "function" == typeof t; + } + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + } catch (t) {} + return (_isNativeReflectConstruct = function () { + return !!t; + })(); + } + function _iterableToArray(r) { + if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); + } + function _iterableToArrayLimit(r, l) { + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (null != t) { + var e, + n, + i, + u, + a = [], + f = !0, + o = !1; + try { + if (i = (t = t.call(r)).next, 0 === l) { + if (Object(t) !== t) return; + f = !1; + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); + } catch (r) { + o = !0, n = r; + } finally { + try { + if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; + } finally { + if (o) throw n; + } + } + return a; + } + } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function (r) { + return Object.getOwnPropertyDescriptor(e, r).enumerable; + })), t.push.apply(t, o); + } + return t; + } + function _objectSpread2(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { + _defineProperty(e, r, t[r]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { + Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); + }); + } + return e; + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == typeof e || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _regenerator() { + /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ + var e, + t, + r = "function" == typeof Symbol ? Symbol : {}, + n = r.iterator || "@@iterator", + o = r.toStringTag || "@@toStringTag"; + function i(r, n, o, i) { + var c = n && n.prototype instanceof Generator ? n : Generator, + u = Object.create(c.prototype); + return _regeneratorDefine(u, "_invoke", function (r, n, o) { + var i, + c, + u, + f = 0, + p = o || [], + y = !1, + G = { + p: 0, + n: 0, + v: e, + a: d, + f: d.bind(e, 4), + d: function (t, r) { + return i = t, c = 0, u = e, G.n = r, a; + } + }; + function d(r, n) { + for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { + var o, + i = p[t], + d = G.p, + l = i[2]; + r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); + } + if (o || r > 1) return a; + throw y = !0, n; + } + return function (o, p, l) { + if (f > 1) throw TypeError("Generator is already running"); + for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { + i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); + try { + if (f = 2, i) { + if (c || (o = "next"), t = i[o]) { + if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); + if (!t.done) return t; + u = t.value, c < 2 && (c = 0); + } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); + i = e; + } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; + } catch (t) { + i = e, c = 1, u = t; + } finally { + f = 1; + } + } + return { + value: t, + done: y + }; + }; + }(r, o, i), !0), u; + } + var a = {}; + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + t = Object.getPrototypeOf; + var c = [][n] ? t(t([][n]())) : (_regeneratorDefine(t = {}, n, function () { + return this; + }), t), + u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); + function f(e) { + return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine(u), _regeneratorDefine(u, o, "Generator"), _regeneratorDefine(u, n, function () { + return this; + }), _regeneratorDefine(u, "toString", function () { + return "[object Generator]"; + }), (_regenerator = function () { + return { + w: i, + m: f + }; + })(); + } + function _regeneratorDefine(e, r, n, t) { + var i = Object.defineProperty; + try { + i({}, "", {}); + } catch (e) { + i = 0; + } + _regeneratorDefine = function (e, r, n, t) { + function o(r, n) { + _regeneratorDefine(e, r, function (e) { + return this._invoke(r, n, e); + }); + } + r ? i ? i(e, r, { + value: n, + enumerable: !t, + configurable: !t, + writable: !t + }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); + }, _regeneratorDefine(e, r, n, t); + } + function _regeneratorValues(e) { + if (null != e) { + var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], + r = 0; + if (t) return t.call(e); + if ("function" == typeof e.next) return e; + if (!isNaN(e.length)) return { + next: function () { + return e && r >= e.length && (e = void 0), { + value: e && e[r++], + done: !e + }; + } + }; + } + throw new TypeError(typeof e + " is not iterable"); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, _setPrototypeOf(t, e); + } + function _slicedToArray(r, e) { + return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); + } + function _toConsumableArray(r) { + return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); + } + function _toPrimitive(t, r) { + if ("object" != typeof t || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != typeof i) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == typeof i ? i : i + ""; + } + function _typeof(o) { + "@babel/helpers - typeof"; + + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, _typeof(o); + } + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; + } + } + function _wrapAsyncGenerator(e) { + return function () { + return new AsyncGenerator(e.apply(this, arguments)); + }; + } + function AsyncGenerator(e) { + var r, t; + function resume(r, t) { + try { + var n = e[r](t), + o = n.value, + u = o instanceof _OverloadYield; + Promise.resolve(u ? o.v : o).then(function (t) { + if (u) { + var i = "return" === r ? "return" : "next"; + if (!o.k || t.done) return resume(i, t); + t = e[i](t).value; + } + settle(n.done ? "return" : "normal", t); + }, function (e) { + resume("throw", e); + }); + } catch (e) { + settle("throw", e); + } + } + function settle(e, n) { + switch (e) { + case "return": + r.resolve({ + value: n, + done: !0 + }); + break; + case "throw": + r.reject(n); + break; + default: + r.resolve({ + value: n, + done: !1 + }); + } + (r = r.next) ? resume(r.key, r.arg) : t = null; + } + this._invoke = function (e, n) { + return new Promise(function (o, u) { + var i = { + key: e, + arg: n, + resolve: o, + reject: u, + next: null + }; + t ? t = t.next = i : (r = t = i, resume(e, n)); + }); + }, "function" != typeof e.return && (this.return = void 0); + } + AsyncGenerator.prototype["function" == typeof Symbol && Symbol.asyncIterator || "@@asyncIterator"] = function () { + return this; + }, AsyncGenerator.prototype.next = function (e) { + return this._invoke("next", e); + }, AsyncGenerator.prototype.throw = function (e) { + return this._invoke("throw", e); + }, AsyncGenerator.prototype.return = function (e) { + return this._invoke("return", e); + }; + function _wrapNativeSuper(t) { + var r = "function" == typeof Map ? new Map() : void 0; + return _wrapNativeSuper = function (t) { + if (null === t || !_isNativeFunction(t)) return t; + if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function"); + if (void 0 !== r) { + if (r.has(t)) return r.get(t); + r.set(t, Wrapper); + } + function Wrapper() { + return _construct(t, arguments, _getPrototypeOf(this).constructor); + } + return Wrapper.prototype = Object.create(t.prototype, { + constructor: { + value: Wrapper, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), _setPrototypeOf(Wrapper, t); + }, _wrapNativeSuper(t); + } + + /** + * Create a bound version of a function with a specified `this` context + * + * @param {Function} fn - The function to bind + * @param {*} thisArg - The value to be passed as the `this` parameter + * @returns {Function} A new function that will call the original function with the specified `this` context + */ + function bind(fn, thisArg) { + return function wrap() { + return fn.apply(thisArg, arguments); + }; + } + + // utils is a library of generic helper functions non-specific to axios + + var toString = Object.prototype.toString; + var getPrototypeOf = Object.getPrototypeOf; + var iterator = Symbol.iterator, + toStringTag = Symbol.toStringTag; + var kindOf = function (cache) { + return function (thing) { + var str = toString.call(thing); + return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); + }; + }(Object.create(null)); + var kindOfTest = function kindOfTest(type) { + type = type.toLowerCase(); + return function (thing) { + return kindOf(thing) === type; + }; + }; + var typeOfTest = function typeOfTest(type) { + return function (thing) { + return _typeof(thing) === type; + }; + }; + + /** + * Determine if a value is a non-null object + * + * @param {Object} val The value to test + * + * @returns {boolean} True if value is an Array, otherwise false + */ + var isArray = Array.isArray; + + /** + * Determine if a value is undefined + * + * @param {*} val The value to test + * + * @returns {boolean} True if the value is undefined, otherwise false + */ + var isUndefined = typeOfTest('undefined'); + + /** + * Determine if a value is a Buffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Buffer, otherwise false + */ + function isBuffer(val) { + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction$1(val.constructor.isBuffer) && val.constructor.isBuffer(val); + } + + /** + * Determine if a value is an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ + var isArrayBuffer = kindOfTest('ArrayBuffer'); + + /** + * Determine if a value is a view on an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ + function isArrayBufferView(val) { + var result; + if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) { + result = ArrayBuffer.isView(val); + } else { + result = val && val.buffer && isArrayBuffer(val.buffer); + } + return result; + } + + /** + * Determine if a value is a String + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a String, otherwise false + */ + var isString = typeOfTest('string'); + + /** + * Determine if a value is a Function + * + * @param {*} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ + var isFunction$1 = typeOfTest('function'); + + /** + * Determine if a value is a Number + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Number, otherwise false + */ + var isNumber = typeOfTest('number'); + + /** + * Determine if a value is an Object + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an Object, otherwise false + */ + var isObject = function isObject(thing) { + return thing !== null && _typeof(thing) === 'object'; + }; + + /** + * Determine if a value is a Boolean + * + * @param {*} thing The value to test + * @returns {boolean} True if value is a Boolean, otherwise false + */ + var isBoolean = function isBoolean(thing) { + return thing === true || thing === false; + }; + + /** + * Determine if a value is a plain Object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a plain Object, otherwise false + */ + var isPlainObject = function isPlainObject(val) { + if (kindOf(val) !== 'object') { + return false; + } + var prototype = getPrototypeOf(val); + return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val); + }; + + /** + * Determine if a value is an empty object (safely handles Buffers) + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an empty object, otherwise false + */ + var isEmptyObject = function isEmptyObject(val) { + // Early return for non-objects or Buffers to prevent RangeError + if (!isObject(val) || isBuffer(val)) { + return false; + } + try { + return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype; + } catch (e) { + // Fallback for any other objects that might cause RangeError with Object.keys() + return false; + } + }; + + /** + * Determine if a value is a Date + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Date, otherwise false + */ + var isDate = kindOfTest('Date'); + + /** + * Determine if a value is a File + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ + var isFile = kindOfTest('File'); + + /** + * Determine if a value is a React Native Blob + * React Native "blob": an object with a `uri` attribute. Optionally, it can + * also have a `name` and `type` attribute to specify filename and content type + * + * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71 + * + * @param {*} value The value to test + * + * @returns {boolean} True if value is a React Native Blob, otherwise false + */ + var isReactNativeBlob = function isReactNativeBlob(value) { + return !!(value && typeof value.uri !== 'undefined'); + }; + + /** + * Determine if environment is React Native + * ReactNative `FormData` has a non-standard `getParts()` method + * + * @param {*} formData The formData to test + * + * @returns {boolean} True if environment is React Native, otherwise false + */ + var isReactNative = function isReactNative(formData) { + return formData && typeof formData.getParts !== 'undefined'; + }; + + /** + * Determine if a value is a Blob + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Blob, otherwise false + */ + var isBlob = kindOfTest('Blob'); + + /** + * Determine if a value is a FileList + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ + var isFileList = kindOfTest('FileList'); + + /** + * Determine if a value is a Stream + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Stream, otherwise false + */ + var isStream = function isStream(val) { + return isObject(val) && isFunction$1(val.pipe); + }; + + /** + * Determine if a value is a FormData + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an FormData, otherwise false + */ + function getGlobal() { + if (typeof globalThis !== 'undefined') return globalThis; + if (typeof self !== 'undefined') return self; + if (typeof window !== 'undefined') return window; + if (typeof global !== 'undefined') return global; + return {}; + } + var G = getGlobal(); + var FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined; + var isFormData = function isFormData(thing) { + var kind; + return thing && (FormDataCtor && thing instanceof FormDataCtor || isFunction$1(thing.append) && ((kind = kindOf(thing)) === 'formdata' || + // detect form-data instance + kind === 'object' && isFunction$1(thing.toString) && thing.toString() === '[object FormData]')); + }; + + /** + * Determine if a value is a URLSearchParams object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ + var isURLSearchParams = kindOfTest('URLSearchParams'); + var _map = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest), + _map2 = _slicedToArray(_map, 4), + isReadableStream = _map2[0], + isRequest = _map2[1], + isResponse = _map2[2], + isHeaders = _map2[3]; + + /** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * + * @returns {String} The String freed of excess whitespace + */ + var trim = function trim(str) { + return str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); + }; + /** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + * + * @param {Object} [options] + * @param {Boolean} [options.allOwnKeys = false] + * @returns {any} + */ + function forEach(obj, fn) { + var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, + _ref$allOwnKeys = _ref.allOwnKeys, + allOwnKeys = _ref$allOwnKeys === void 0 ? false : _ref$allOwnKeys; + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + var i; + var l; + + // Force an array if not already something iterable + if (_typeof(obj) !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + if (isArray(obj)) { + // Iterate over array values + for (i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Buffer check + if (isBuffer(obj)) { + return; + } + + // Iterate over object keys + var keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); + var len = keys.length; + var key; + for (i = 0; i < len; i++) { + key = keys[i]; + fn.call(null, obj[key], key, obj); + } + } + } + + /** + * Finds a key in an object, case-insensitive, returning the actual key name. + * Returns null if the object is a Buffer or if no match is found. + * + * @param {Object} obj - The object to search. + * @param {string} key - The key to find (case-insensitive). + * @returns {?string} The actual key name if found, otherwise null. + */ + function findKey(obj, key) { + if (isBuffer(obj)) { + return null; + } + key = key.toLowerCase(); + var keys = Object.keys(obj); + var i = keys.length; + var _key; + while (i-- > 0) { + _key = keys[i]; + if (key === _key.toLowerCase()) { + return _key; + } + } + return null; + } + var _global = function () { + /*eslint no-undef:0*/ + if (typeof globalThis !== 'undefined') return globalThis; + return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global; + }(); + var isContextDefined = function isContextDefined(context) { + return !isUndefined(context) && context !== _global; + }; + + /** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * const result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * + * @returns {Object} Result of all merge properties + */ + function merge(/* obj1, obj2, obj3, ... */ + ) { + var _ref2 = isContextDefined(this) && this || {}, + caseless = _ref2.caseless, + skipUndefined = _ref2.skipUndefined; + var result = {}; + var assignValue = function assignValue(val, key) { + // Skip dangerous property names to prevent prototype pollution + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return; + } + var targetKey = caseless && findKey(result, key) || key; + if (isPlainObject(result[targetKey]) && isPlainObject(val)) { + result[targetKey] = merge(result[targetKey], val); + } else if (isPlainObject(val)) { + result[targetKey] = merge({}, val); + } else if (isArray(val)) { + result[targetKey] = val.slice(); + } else if (!skipUndefined || !isUndefined(val)) { + result[targetKey] = val; + } + }; + for (var i = 0, l = arguments.length; i < l; i++) { + arguments[i] && forEach(arguments[i], assignValue); + } + return result; + } + + /** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * + * @param {Object} [options] + * @param {Boolean} [options.allOwnKeys] + * @returns {Object} The resulting value of object a + */ + var extend = function extend(a, b, thisArg) { + var _ref3 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}, + allOwnKeys = _ref3.allOwnKeys; + forEach(b, function (val, key) { + if (thisArg && isFunction$1(val)) { + Object.defineProperty(a, key, { + value: bind(val, thisArg), + writable: true, + enumerable: true, + configurable: true + }); + } else { + Object.defineProperty(a, key, { + value: val, + writable: true, + enumerable: true, + configurable: true + }); + } + }, { + allOwnKeys: allOwnKeys + }); + return a; + }; + + /** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * + * @returns {string} content value without BOM + */ + var stripBOM = function stripBOM(content) { + if (content.charCodeAt(0) === 0xfeff) { + content = content.slice(1); + } + return content; + }; + + /** + * Inherit the prototype methods from one constructor into another + * @param {function} constructor + * @param {function} superConstructor + * @param {object} [props] + * @param {object} [descriptors] + * + * @returns {void} + */ + var inherits = function inherits(constructor, superConstructor, props, descriptors) { + constructor.prototype = Object.create(superConstructor.prototype, descriptors); + Object.defineProperty(constructor.prototype, 'constructor', { + value: constructor, + writable: true, + enumerable: false, + configurable: true + }); + Object.defineProperty(constructor, 'super', { + value: superConstructor.prototype + }); + props && Object.assign(constructor.prototype, props); + }; + + /** + * Resolve object with deep prototype chain to a flat object + * @param {Object} sourceObj source object + * @param {Object} [destObj] + * @param {Function|Boolean} [filter] + * @param {Function} [propFilter] + * + * @returns {Object} + */ + var toFlatObject = function toFlatObject(sourceObj, destObj, filter, propFilter) { + var props; + var i; + var prop; + var merged = {}; + destObj = destObj || {}; + // eslint-disable-next-line no-eq-null,eqeqeq + if (sourceObj == null) return destObj; + do { + props = Object.getOwnPropertyNames(sourceObj); + i = props.length; + while (i-- > 0) { + prop = props[i]; + if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { + destObj[prop] = sourceObj[prop]; + merged[prop] = true; + } + } + sourceObj = filter !== false && getPrototypeOf(sourceObj); + } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); + return destObj; + }; + + /** + * Determines whether a string ends with the characters of a specified string + * + * @param {String} str + * @param {String} searchString + * @param {Number} [position= 0] + * + * @returns {boolean} + */ + var endsWith = function endsWith(str, searchString, position) { + str = String(str); + if (position === undefined || position > str.length) { + position = str.length; + } + position -= searchString.length; + var lastIndex = str.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + }; + + /** + * Returns new array from array like object or null if failed + * + * @param {*} [thing] + * + * @returns {?Array} + */ + var toArray = function toArray(thing) { + if (!thing) return null; + if (isArray(thing)) return thing; + var i = thing.length; + if (!isNumber(i)) return null; + var arr = new Array(i); + while (i-- > 0) { + arr[i] = thing[i]; + } + return arr; + }; + + /** + * Checking if the Uint8Array exists and if it does, it returns a function that checks if the + * thing passed in is an instance of Uint8Array + * + * @param {TypedArray} + * + * @returns {Array} + */ + // eslint-disable-next-line func-names + var isTypedArray = function (TypedArray) { + // eslint-disable-next-line func-names + return function (thing) { + return TypedArray && thing instanceof TypedArray; + }; + }(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); + + /** + * For each entry in the object, call the function with the key and value. + * + * @param {Object} obj - The object to iterate over. + * @param {Function} fn - The function to call for each entry. + * + * @returns {void} + */ + var forEachEntry = function forEachEntry(obj, fn) { + var generator = obj && obj[iterator]; + var _iterator = generator.call(obj); + var result; + while ((result = _iterator.next()) && !result.done) { + var pair = result.value; + fn.call(obj, pair[0], pair[1]); + } + }; + + /** + * It takes a regular expression and a string, and returns an array of all the matches + * + * @param {string} regExp - The regular expression to match against. + * @param {string} str - The string to search. + * + * @returns {Array} + */ + var matchAll = function matchAll(regExp, str) { + var matches; + var arr = []; + while ((matches = regExp.exec(str)) !== null) { + arr.push(matches); + } + return arr; + }; + + /* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ + var isHTMLForm = kindOfTest('HTMLFormElement'); + var toCamelCase = function toCamelCase(str) { + return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { + return p1.toUpperCase() + p2; + }); + }; + + /* Creating a function that will check if an object has a property. */ + var hasOwnProperty = function (_ref4) { + var hasOwnProperty = _ref4.hasOwnProperty; + return function (obj, prop) { + return hasOwnProperty.call(obj, prop); + }; + }(Object.prototype); + + /** + * Determine if a value is a RegExp object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a RegExp object, otherwise false + */ + var isRegExp = kindOfTest('RegExp'); + var reduceDescriptors = function reduceDescriptors(obj, reducer) { + var descriptors = Object.getOwnPropertyDescriptors(obj); + var reducedDescriptors = {}; + forEach(descriptors, function (descriptor, name) { + var ret; + if ((ret = reducer(descriptor, name, obj)) !== false) { + reducedDescriptors[name] = ret || descriptor; + } + }); + Object.defineProperties(obj, reducedDescriptors); + }; + + /** + * Makes all methods read-only + * @param {Object} obj + */ + + var freezeMethods = function freezeMethods(obj) { + reduceDescriptors(obj, function (descriptor, name) { + // skip restricted props in strict mode + if (isFunction$1(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { + return false; + } + var value = obj[name]; + if (!isFunction$1(value)) return; + descriptor.enumerable = false; + if ('writable' in descriptor) { + descriptor.writable = false; + return; + } + if (!descriptor.set) { + descriptor.set = function () { + throw Error("Can not rewrite read-only method '" + name + "'"); + }; + } + }); + }; + + /** + * Converts an array or a delimited string into an object set with values as keys and true as values. + * Useful for fast membership checks. + * + * @param {Array|string} arrayOrString - The array or string to convert. + * @param {string} delimiter - The delimiter to use if input is a string. + * @returns {Object} An object with keys from the array or string, values set to true. + */ + var toObjectSet = function toObjectSet(arrayOrString, delimiter) { + var obj = {}; + var define = function define(arr) { + arr.forEach(function (value) { + obj[value] = true; + }); + }; + isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); + return obj; + }; + var noop = function noop() {}; + var toFiniteNumber = function toFiniteNumber(value, defaultValue) { + return value != null && Number.isFinite(value = +value) ? value : defaultValue; + }; + + /** + * If the thing is a FormData object, return true, otherwise return false. + * + * @param {unknown} thing - The thing to check. + * + * @returns {boolean} + */ + function isSpecCompliantForm(thing) { + return !!(thing && isFunction$1(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]); + } + + /** + * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers. + * + * @param {Object} obj - The object to convert. + * @returns {Object} The JSON-compatible object. + */ + var toJSONObject = function toJSONObject(obj) { + var stack = new Array(10); + var _visit = function visit(source, i) { + if (isObject(source)) { + if (stack.indexOf(source) >= 0) { + return; + } + + //Buffer check + if (isBuffer(source)) { + return source; + } + if (!('toJSON' in source)) { + stack[i] = source; + var target = isArray(source) ? [] : {}; + forEach(source, function (value, key) { + var reducedValue = _visit(value, i + 1); + !isUndefined(reducedValue) && (target[key] = reducedValue); + }); + stack[i] = undefined; + return target; + } + } + return source; + }; + return _visit(obj, 0); + }; + + /** + * Determines if a value is an async function. + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is an async function, otherwise false. + */ + var isAsyncFn = kindOfTest('AsyncFunction'); + + /** + * Determines if a value is thenable (has then and catch methods). + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is thenable, otherwise false. + */ + var isThenable = function isThenable(thing) { + return thing && (isObject(thing) || isFunction$1(thing)) && isFunction$1(thing.then) && isFunction$1(thing["catch"]); + }; + + // original code + // https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34 + + /** + * Provides a cross-platform setImmediate implementation. + * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout. + * + * @param {boolean} setImmediateSupported - Whether setImmediate is supported. + * @param {boolean} postMessageSupported - Whether postMessage is supported. + * @returns {Function} A function to schedule a callback asynchronously. + */ + var _setImmediate = function (setImmediateSupported, postMessageSupported) { + if (setImmediateSupported) { + return setImmediate; + } + return postMessageSupported ? function (token, callbacks) { + _global.addEventListener('message', function (_ref5) { + var source = _ref5.source, + data = _ref5.data; + if (source === _global && data === token) { + callbacks.length && callbacks.shift()(); + } + }, false); + return function (cb) { + callbacks.push(cb); + _global.postMessage(token, '*'); + }; + }("axios@".concat(Math.random()), []) : function (cb) { + return setTimeout(cb); + }; + }(typeof setImmediate === 'function', isFunction$1(_global.postMessage)); + + /** + * Schedules a microtask or asynchronous callback as soon as possible. + * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate. + * + * @type {Function} + */ + var asap = typeof queueMicrotask !== 'undefined' ? queueMicrotask.bind(_global) : typeof process !== 'undefined' && process.nextTick || _setImmediate; + + // ********************* + + var isIterable = function isIterable(thing) { + return thing != null && isFunction$1(thing[iterator]); + }; + var utils$1 = { + isArray: isArray, + isArrayBuffer: isArrayBuffer, + isBuffer: isBuffer, + isFormData: isFormData, + isArrayBufferView: isArrayBufferView, + isString: isString, + isNumber: isNumber, + isBoolean: isBoolean, + isObject: isObject, + isPlainObject: isPlainObject, + isEmptyObject: isEmptyObject, + isReadableStream: isReadableStream, + isRequest: isRequest, + isResponse: isResponse, + isHeaders: isHeaders, + isUndefined: isUndefined, + isDate: isDate, + isFile: isFile, + isReactNativeBlob: isReactNativeBlob, + isReactNative: isReactNative, + isBlob: isBlob, + isRegExp: isRegExp, + isFunction: isFunction$1, + isStream: isStream, + isURLSearchParams: isURLSearchParams, + isTypedArray: isTypedArray, + isFileList: isFileList, + forEach: forEach, + merge: merge, + extend: extend, + trim: trim, + stripBOM: stripBOM, + inherits: inherits, + toFlatObject: toFlatObject, + kindOf: kindOf, + kindOfTest: kindOfTest, + endsWith: endsWith, + toArray: toArray, + forEachEntry: forEachEntry, + matchAll: matchAll, + isHTMLForm: isHTMLForm, + hasOwnProperty: hasOwnProperty, + hasOwnProp: hasOwnProperty, + // an alias to avoid ESLint no-prototype-builtins detection + reduceDescriptors: reduceDescriptors, + freezeMethods: freezeMethods, + toObjectSet: toObjectSet, + toCamelCase: toCamelCase, + noop: noop, + toFiniteNumber: toFiniteNumber, + findKey: findKey, + global: _global, + isContextDefined: isContextDefined, + isSpecCompliantForm: isSpecCompliantForm, + toJSONObject: toJSONObject, + isAsyncFn: isAsyncFn, + isThenable: isThenable, + setImmediate: _setImmediate, + asap: asap, + isIterable: isIterable + }; + + var AxiosError = /*#__PURE__*/function (_Error) { + /** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [config] The config. + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * + * @returns {Error} The created error. + */ + function AxiosError(message, code, config, request, response) { + var _this; + _classCallCheck(this, AxiosError); + _this = _callSuper(this, AxiosError, [message]); + + // Make message enumerable to maintain backward compatibility + // The native Error constructor sets message as non-enumerable, + // but axios < v1.13.3 had it as enumerable + Object.defineProperty(_this, 'message', { + value: message, + enumerable: true, + writable: true, + configurable: true + }); + _this.name = 'AxiosError'; + _this.isAxiosError = true; + code && (_this.code = code); + config && (_this.config = config); + request && (_this.request = request); + if (response) { + _this.response = response; + _this.status = response.status; + } + return _this; + } + _inherits(AxiosError, _Error); + return _createClass(AxiosError, [{ + key: "toJSON", + value: function toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: utils$1.toJSONObject(this.config), + code: this.code, + status: this.status + }; + } + }], [{ + key: "from", + value: function from(error, code, config, request, response, customProps) { + var axiosError = new AxiosError(error.message, code || error.code, config, request, response); + axiosError.cause = error; + axiosError.name = error.name; + + // Preserve status from the original error if not already set from response + if (error.status != null && axiosError.status == null) { + axiosError.status = error.status; + } + customProps && Object.assign(axiosError, customProps); + return axiosError; + } + }]); + }(/*#__PURE__*/_wrapNativeSuper(Error)); // This can be changed to static properties as soon as the parser options in .eslint.cjs are updated. + AxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE'; + AxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION'; + AxiosError.ECONNABORTED = 'ECONNABORTED'; + AxiosError.ETIMEDOUT = 'ETIMEDOUT'; + AxiosError.ERR_NETWORK = 'ERR_NETWORK'; + AxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS'; + AxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED'; + AxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE'; + AxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST'; + AxiosError.ERR_CANCELED = 'ERR_CANCELED'; + AxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT'; + AxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL'; + var AxiosError$1 = AxiosError; + + // eslint-disable-next-line strict + var httpAdapter = null; + + /** + * Determines if the given thing is a array or js object. + * + * @param {string} thing - The object or array to be visited. + * + * @returns {boolean} + */ + function isVisitable(thing) { + return utils$1.isPlainObject(thing) || utils$1.isArray(thing); + } + + /** + * It removes the brackets from the end of a string + * + * @param {string} key - The key of the parameter. + * + * @returns {string} the key without the brackets. + */ + function removeBrackets(key) { + return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key; + } + + /** + * It takes a path, a key, and a boolean, and returns a string + * + * @param {string} path - The path to the current key. + * @param {string} key - The key of the current object being iterated over. + * @param {string} dots - If true, the key will be rendered with dots instead of brackets. + * + * @returns {string} The path to the current key. + */ + function renderKey(path, key, dots) { + if (!path) return key; + return path.concat(key).map(function each(token, i) { + // eslint-disable-next-line no-param-reassign + token = removeBrackets(token); + return !dots && i ? '[' + token + ']' : token; + }).join(dots ? '.' : ''); + } + + /** + * If the array is an array and none of its elements are visitable, then it's a flat array. + * + * @param {Array} arr - The array to check + * + * @returns {boolean} + */ + function isFlatArray(arr) { + return utils$1.isArray(arr) && !arr.some(isVisitable); + } + var predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { + return /^is[A-Z]/.test(prop); + }); + + /** + * Convert a data object to FormData + * + * @param {Object} obj + * @param {?Object} [formData] + * @param {?Object} [options] + * @param {Function} [options.visitor] + * @param {Boolean} [options.metaTokens = true] + * @param {Boolean} [options.dots = false] + * @param {?Boolean} [options.indexes = false] + * + * @returns {Object} + **/ + + /** + * It converts an object into a FormData object + * + * @param {Object} obj - The object to convert to form data. + * @param {string} formData - The FormData object to append to. + * @param {Object} options + * + * @returns + */ + function toFormData(obj, formData, options) { + if (!utils$1.isObject(obj)) { + throw new TypeError('target must be an object'); + } + + // eslint-disable-next-line no-param-reassign + formData = formData || new (FormData)(); + + // eslint-disable-next-line no-param-reassign + options = utils$1.toFlatObject(options, { + metaTokens: true, + dots: false, + indexes: false + }, false, function defined(option, source) { + // eslint-disable-next-line no-eq-null,eqeqeq + return !utils$1.isUndefined(source[option]); + }); + var metaTokens = options.metaTokens; + // eslint-disable-next-line no-use-before-define + var visitor = options.visitor || defaultVisitor; + var dots = options.dots; + var indexes = options.indexes; + var _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; + var useBlob = _Blob && utils$1.isSpecCompliantForm(formData); + if (!utils$1.isFunction(visitor)) { + throw new TypeError('visitor must be a function'); + } + function convertValue(value) { + if (value === null) return ''; + if (utils$1.isDate(value)) { + return value.toISOString(); + } + if (utils$1.isBoolean(value)) { + return value.toString(); + } + if (!useBlob && utils$1.isBlob(value)) { + throw new AxiosError$1('Blob is not supported. Use a Buffer instead.'); + } + if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { + return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); + } + return value; + } + + /** + * Default visitor. + * + * @param {*} value + * @param {String|Number} key + * @param {Array} path + * @this {FormData} + * + * @returns {boolean} return true to visit the each prop of the value recursively + */ + function defaultVisitor(value, key, path) { + var arr = value; + if (utils$1.isReactNative(formData) && utils$1.isReactNativeBlob(value)) { + formData.append(renderKey(path, key, dots), convertValue(value)); + return false; + } + if (value && !path && _typeof(value) === 'object') { + if (utils$1.endsWith(key, '{}')) { + // eslint-disable-next-line no-param-reassign + key = metaTokens ? key : key.slice(0, -2); + // eslint-disable-next-line no-param-reassign + value = JSON.stringify(value); + } else if (utils$1.isArray(value) && isFlatArray(value) || (utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))) { + // eslint-disable-next-line no-param-reassign + key = removeBrackets(key); + arr.forEach(function each(el, index) { + !(utils$1.isUndefined(el) || el === null) && formData.append( + // eslint-disable-next-line no-nested-ternary + indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + '[]', convertValue(el)); + }); + return false; + } + } + if (isVisitable(value)) { + return true; + } + formData.append(renderKey(path, key, dots), convertValue(value)); + return false; + } + var stack = []; + var exposedHelpers = Object.assign(predicates, { + defaultVisitor: defaultVisitor, + convertValue: convertValue, + isVisitable: isVisitable + }); + function build(value, path) { + if (utils$1.isUndefined(value)) return; + if (stack.indexOf(value) !== -1) { + throw Error('Circular reference detected in ' + path.join('.')); + } + stack.push(value); + utils$1.forEach(value, function each(el, key) { + var result = !(utils$1.isUndefined(el) || el === null) && visitor.call(formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers); + if (result === true) { + build(el, path ? path.concat(key) : [key]); + } + }); + stack.pop(); + } + if (!utils$1.isObject(obj)) { + throw new TypeError('data must be an object'); + } + build(obj); + return formData; + } + + /** + * It encodes a string by replacing all characters that are not in the unreserved set with + * their percent-encoded equivalents + * + * @param {string} str - The string to encode. + * + * @returns {string} The encoded string. + */ + function encode$1(str) { + var charMap = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+', + '%00': '\x00' + }; + return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { + return charMap[match]; + }); + } + + /** + * It takes a params object and converts it to a FormData object + * + * @param {Object} params - The parameters to be converted to a FormData object. + * @param {Object} options - The options object passed to the Axios constructor. + * + * @returns {void} + */ + function AxiosURLSearchParams(params, options) { + this._pairs = []; + params && toFormData(params, this, options); + } + var prototype = AxiosURLSearchParams.prototype; + prototype.append = function append(name, value) { + this._pairs.push([name, value]); + }; + prototype.toString = function toString(encoder) { + var _encode = encoder ? function (value) { + return encoder.call(this, value, encode$1); + } : encode$1; + return this._pairs.map(function each(pair) { + return _encode(pair[0]) + '=' + _encode(pair[1]); + }, '').join('&'); + }; + + /** + * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their + * URI encoded counterparts + * + * @param {string} val The value to be encoded. + * + * @returns {string} The encoded value. + */ + function encode(val) { + return encodeURIComponent(val).replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+'); + } + + /** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @param {?(object|Function)} options + * + * @returns {string} The formatted url + */ + function buildURL(url, params, options) { + if (!params) { + return url; + } + var _encode = options && options.encode || encode; + var _options = utils$1.isFunction(options) ? { + serialize: options + } : options; + var serializeFn = _options && _options.serialize; + var serializedParams; + if (serializeFn) { + serializedParams = serializeFn(params, _options); + } else { + serializedParams = utils$1.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, _options).toString(_encode); + } + if (serializedParams) { + var hashmarkIndex = url.indexOf('#'); + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + return url; + } + + var InterceptorManager = /*#__PURE__*/function () { + function InterceptorManager() { + _classCallCheck(this, InterceptorManager); + this.handlers = []; + } + + /** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * @param {Object} options The options for the interceptor, synchronous and runWhen + * + * @return {Number} An ID used to remove interceptor later + */ + return _createClass(InterceptorManager, [{ + key: "use", + value: function use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled: fulfilled, + rejected: rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null + }); + return this.handlers.length - 1; + } + + /** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + * + * @returns {void} + */ + }, { + key: "eject", + value: function eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } + } + + /** + * Clear all interceptors from the stack + * + * @returns {void} + */ + }, { + key: "clear", + value: function clear() { + if (this.handlers) { + this.handlers = []; + } + } + + /** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + * + * @returns {void} + */ + }, { + key: "forEach", + value: function forEach(fn) { + utils$1.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); + } + }]); + }(); + var InterceptorManager$1 = InterceptorManager; + + var transitionalDefaults = { + silentJSONParsing: true, + forcedJSONParsing: true, + clarifyTimeoutError: false, + legacyInterceptorReqResOrdering: true + }; + + var URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; + + var FormData$1 = typeof FormData !== 'undefined' ? FormData : null; + + var Blob$1 = typeof Blob !== 'undefined' ? Blob : null; + + var platform$1 = { + isBrowser: true, + classes: { + URLSearchParams: URLSearchParams$1, + FormData: FormData$1, + Blob: Blob$1 + }, + protocols: ['http', 'https', 'file', 'blob', 'url', 'data'] + }; + + var hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; + var _navigator = (typeof navigator === "undefined" ? "undefined" : _typeof(navigator)) === 'object' && navigator || undefined; + + /** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + * + * @returns {boolean} + */ + var hasStandardBrowserEnv = hasBrowserEnv && (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0); + + /** + * Determine if we're running in a standard browser webWorker environment + * + * Although the `isStandardBrowserEnv` method indicates that + * `allows axios to run in a web worker`, the WebWorker will still be + * filtered out due to its judgment standard + * `typeof window !== 'undefined' && typeof document !== 'undefined'`. + * This leads to a problem when axios post `FormData` in webWorker + */ + var hasStandardBrowserWebWorkerEnv = function () { + return typeof WorkerGlobalScope !== 'undefined' && + // eslint-disable-next-line no-undef + self instanceof WorkerGlobalScope && typeof self.importScripts === 'function'; + }(); + var origin = hasBrowserEnv && window.location.href || 'http://localhost'; + + var utils = /*#__PURE__*/Object.freeze({ + __proto__: null, + hasBrowserEnv: hasBrowserEnv, + hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, + hasStandardBrowserEnv: hasStandardBrowserEnv, + navigator: _navigator, + origin: origin + }); + + var platform = _objectSpread2(_objectSpread2({}, utils), platform$1); + + function toURLEncodedForm(data, options) { + return toFormData(data, new platform.classes.URLSearchParams(), _objectSpread2({ + visitor: function visitor(value, key, path, helpers) { + if (platform.isNode && utils$1.isBuffer(value)) { + this.append(key, value.toString('base64')); + return false; + } + return helpers.defaultVisitor.apply(this, arguments); + } + }, options)); + } + + /** + * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] + * + * @param {string} name - The name of the property to get. + * + * @returns An array of strings. + */ + function parsePropPath(name) { + // foo[x][y][z] + // foo.x.y.z + // foo-x-y-z + // foo x y z + return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(function (match) { + return match[0] === '[]' ? '' : match[1] || match[0]; + }); + } + + /** + * Convert an array to an object. + * + * @param {Array} arr - The array to convert to an object. + * + * @returns An object with the same keys and values as the array. + */ + function arrayToObject(arr) { + var obj = {}; + var keys = Object.keys(arr); + var i; + var len = keys.length; + var key; + for (i = 0; i < len; i++) { + key = keys[i]; + obj[key] = arr[key]; + } + return obj; + } + + /** + * It takes a FormData object and returns a JavaScript object + * + * @param {string} formData The FormData object to convert to JSON. + * + * @returns {Object | null} The converted object. + */ + function formDataToJSON(formData) { + function buildPath(path, value, target, index) { + var name = path[index++]; + if (name === '__proto__') return true; + var isNumericKey = Number.isFinite(+name); + var isLast = index >= path.length; + name = !name && utils$1.isArray(target) ? target.length : name; + if (isLast) { + if (utils$1.hasOwnProp(target, name)) { + target[name] = [target[name], value]; + } else { + target[name] = value; + } + return !isNumericKey; + } + if (!target[name] || !utils$1.isObject(target[name])) { + target[name] = []; + } + var result = buildPath(path, value, target[name], index); + if (result && utils$1.isArray(target[name])) { + target[name] = arrayToObject(target[name]); + } + return !isNumericKey; + } + if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { + var obj = {}; + utils$1.forEachEntry(formData, function (name, value) { + buildPath(parsePropPath(name), value, obj, 0); + }); + return obj; + } + return null; + } + + /** + * It takes a string, tries to parse it, and if it fails, it returns the stringified version + * of the input + * + * @param {any} rawValue - The value to be stringified. + * @param {Function} parser - A function that parses a string into a JavaScript object. + * @param {Function} encoder - A function that takes a value and returns a string. + * + * @returns {string} A stringified version of the rawValue. + */ + function stringifySafely(rawValue, parser, encoder) { + if (utils$1.isString(rawValue)) { + try { + (parser || JSON.parse)(rawValue); + return utils$1.trim(rawValue); + } catch (e) { + if (e.name !== 'SyntaxError') { + throw e; + } + } + } + return (encoder || JSON.stringify)(rawValue); + } + var defaults = { + transitional: transitionalDefaults, + adapter: ['xhr', 'http', 'fetch'], + transformRequest: [function transformRequest(data, headers) { + var contentType = headers.getContentType() || ''; + var hasJSONContentType = contentType.indexOf('application/json') > -1; + var isObjectPayload = utils$1.isObject(data); + if (isObjectPayload && utils$1.isHTMLForm(data)) { + data = new FormData(data); + } + var isFormData = utils$1.isFormData(data); + if (isFormData) { + return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; + } + if (utils$1.isArrayBuffer(data) || utils$1.isBuffer(data) || utils$1.isStream(data) || utils$1.isFile(data) || utils$1.isBlob(data) || utils$1.isReadableStream(data)) { + return data; + } + if (utils$1.isArrayBufferView(data)) { + return data.buffer; + } + if (utils$1.isURLSearchParams(data)) { + headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); + return data.toString(); + } + var isFileList; + if (isObjectPayload) { + if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { + return toURLEncodedForm(data, this.formSerializer).toString(); + } + if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { + var _FormData = this.env && this.env.FormData; + return toFormData(isFileList ? { + 'files[]': data + } : data, _FormData && new _FormData(), this.formSerializer); + } + } + if (isObjectPayload || hasJSONContentType) { + headers.setContentType('application/json', false); + return stringifySafely(data); + } + return data; + }], + transformResponse: [function transformResponse(data) { + var transitional = this.transitional || defaults.transitional; + var forcedJSONParsing = transitional && transitional.forcedJSONParsing; + var JSONRequested = this.responseType === 'json'; + if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) { + return data; + } + if (data && utils$1.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) { + var silentJSONParsing = transitional && transitional.silentJSONParsing; + var strictJSONParsing = !silentJSONParsing && JSONRequested; + try { + return JSON.parse(data, this.parseReviver); + } catch (e) { + if (strictJSONParsing) { + if (e.name === 'SyntaxError') { + throw AxiosError$1.from(e, AxiosError$1.ERR_BAD_RESPONSE, this, null, this.response); + } + throw e; + } + } + } + return data; + }], + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + maxContentLength: -1, + maxBodyLength: -1, + env: { + FormData: platform.classes.FormData, + Blob: platform.classes.Blob + }, + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + }, + headers: { + common: { + Accept: 'application/json, text/plain, */*', + 'Content-Type': undefined + } + } + }; + utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], function (method) { + defaults.headers[method] = {}; + }); + var defaults$1 = defaults; + + // RawAxiosHeaders whose duplicates are ignored by node + // c.f. https://nodejs.org/api/http.html#http_message_headers + var ignoreDuplicateOf = utils$1.toObjectSet(['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent']); + + /** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} rawHeaders Headers needing to be parsed + * + * @returns {Object} Headers parsed into an object + */ + var parseHeaders = (function (rawHeaders) { + var parsed = {}; + var key; + var val; + var i; + rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { + i = line.indexOf(':'); + key = line.substring(0, i).trim().toLowerCase(); + val = line.substring(i + 1).trim(); + if (!key || parsed[key] && ignoreDuplicateOf[key]) { + return; + } + if (key === 'set-cookie') { + if (parsed[key]) { + parsed[key].push(val); + } else { + parsed[key] = [val]; + } + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + }); + return parsed; + }); + + var $internals = Symbol('internals'); + function normalizeHeader(header) { + return header && String(header).trim().toLowerCase(); + } + function normalizeValue(value) { + if (value === false || value == null) { + return value; + } + return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); + } + function parseTokens(str) { + var tokens = Object.create(null); + var tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; + var match; + while (match = tokensRE.exec(str)) { + tokens[match[1]] = match[2]; + } + return tokens; + } + var isValidHeaderName = function isValidHeaderName(str) { + return /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); + }; + function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { + if (utils$1.isFunction(filter)) { + return filter.call(this, value, header); + } + if (isHeaderNameFilter) { + value = header; + } + if (!utils$1.isString(value)) return; + if (utils$1.isString(filter)) { + return value.indexOf(filter) !== -1; + } + if (utils$1.isRegExp(filter)) { + return filter.test(value); + } + } + function formatHeader(header) { + return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, function (w, _char, str) { + return _char.toUpperCase() + str; + }); + } + function buildAccessors(obj, header) { + var accessorName = utils$1.toCamelCase(' ' + header); + ['get', 'set', 'has'].forEach(function (methodName) { + Object.defineProperty(obj, methodName + accessorName, { + value: function value(arg1, arg2, arg3) { + return this[methodName].call(this, header, arg1, arg2, arg3); + }, + configurable: true + }); + }); + } + var AxiosHeaders = /*#__PURE__*/function () { + function AxiosHeaders(headers) { + _classCallCheck(this, AxiosHeaders); + headers && this.set(headers); + } + return _createClass(AxiosHeaders, [{ + key: "set", + value: function set(header, valueOrRewrite, rewrite) { + var self = this; + function setHeader(_value, _header, _rewrite) { + var lHeader = normalizeHeader(_header); + if (!lHeader) { + throw new Error('header name must be a non-empty string'); + } + var key = utils$1.findKey(self, lHeader); + if (!key || self[key] === undefined || _rewrite === true || _rewrite === undefined && self[key] !== false) { + self[key || _header] = normalizeValue(_value); + } + } + var setHeaders = function setHeaders(headers, _rewrite) { + return utils$1.forEach(headers, function (_value, _header) { + return setHeader(_value, _header, _rewrite); + }); + }; + if (utils$1.isPlainObject(header) || header instanceof this.constructor) { + setHeaders(header, valueOrRewrite); + } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { + setHeaders(parseHeaders(header), valueOrRewrite); + } else if (utils$1.isObject(header) && utils$1.isIterable(header)) { + var obj = {}, + dest, + key; + var _iterator = _createForOfIteratorHelper(header), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var entry = _step.value; + if (!utils$1.isArray(entry)) { + throw TypeError('Object iterator must return a key-value pair'); + } + obj[key = entry[0]] = (dest = obj[key]) ? utils$1.isArray(dest) ? [].concat(_toConsumableArray(dest), [entry[1]]) : [dest, entry[1]] : entry[1]; + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + setHeaders(obj, valueOrRewrite); + } else { + header != null && setHeader(valueOrRewrite, header, rewrite); + } + return this; + } + }, { + key: "get", + value: function get(header, parser) { + header = normalizeHeader(header); + if (header) { + var key = utils$1.findKey(this, header); + if (key) { + var value = this[key]; + if (!parser) { + return value; + } + if (parser === true) { + return parseTokens(value); + } + if (utils$1.isFunction(parser)) { + return parser.call(this, value, key); + } + if (utils$1.isRegExp(parser)) { + return parser.exec(value); + } + throw new TypeError('parser must be boolean|regexp|function'); + } + } + } + }, { + key: "has", + value: function has(header, matcher) { + header = normalizeHeader(header); + if (header) { + var key = utils$1.findKey(this, header); + return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); + } + return false; + } + }, { + key: "delete", + value: function _delete(header, matcher) { + var self = this; + var deleted = false; + function deleteHeader(_header) { + _header = normalizeHeader(_header); + if (_header) { + var key = utils$1.findKey(self, _header); + if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { + delete self[key]; + deleted = true; + } + } + } + if (utils$1.isArray(header)) { + header.forEach(deleteHeader); + } else { + deleteHeader(header); + } + return deleted; + } + }, { + key: "clear", + value: function clear(matcher) { + var keys = Object.keys(this); + var i = keys.length; + var deleted = false; + while (i--) { + var key = keys[i]; + if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { + delete this[key]; + deleted = true; + } + } + return deleted; + } + }, { + key: "normalize", + value: function normalize(format) { + var self = this; + var headers = {}; + utils$1.forEach(this, function (value, header) { + var key = utils$1.findKey(headers, header); + if (key) { + self[key] = normalizeValue(value); + delete self[header]; + return; + } + var normalized = format ? formatHeader(header) : String(header).trim(); + if (normalized !== header) { + delete self[header]; + } + self[normalized] = normalizeValue(value); + headers[normalized] = true; + }); + return this; + } + }, { + key: "concat", + value: function concat() { + var _this$constructor; + for (var _len = arguments.length, targets = new Array(_len), _key = 0; _key < _len; _key++) { + targets[_key] = arguments[_key]; + } + return (_this$constructor = this.constructor).concat.apply(_this$constructor, [this].concat(targets)); + } + }, { + key: "toJSON", + value: function toJSON(asStrings) { + var obj = Object.create(null); + utils$1.forEach(this, function (value, header) { + value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); + }); + return obj; + } + }, { + key: Symbol.iterator, + value: function value() { + return Object.entries(this.toJSON())[Symbol.iterator](); + } + }, { + key: "toString", + value: function toString() { + return Object.entries(this.toJSON()).map(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + header = _ref2[0], + value = _ref2[1]; + return header + ': ' + value; + }).join('\n'); + } + }, { + key: "getSetCookie", + value: function getSetCookie() { + return this.get('set-cookie') || []; + } + }, { + key: Symbol.toStringTag, + get: function get() { + return 'AxiosHeaders'; + } + }], [{ + key: "from", + value: function from(thing) { + return thing instanceof this ? thing : new this(thing); + } + }, { + key: "concat", + value: function concat(first) { + var computed = new this(first); + for (var _len2 = arguments.length, targets = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + targets[_key2 - 1] = arguments[_key2]; + } + targets.forEach(function (target) { + return computed.set(target); + }); + return computed; + } + }, { + key: "accessor", + value: function accessor(header) { + var internals = this[$internals] = this[$internals] = { + accessors: {} + }; + var accessors = internals.accessors; + var prototype = this.prototype; + function defineAccessor(_header) { + var lHeader = normalizeHeader(_header); + if (!accessors[lHeader]) { + buildAccessors(prototype, _header); + accessors[lHeader] = true; + } + } + utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); + return this; + } + }]); + }(); + AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); + + // reserved names hotfix + utils$1.reduceDescriptors(AxiosHeaders.prototype, function (_ref3, key) { + var value = _ref3.value; + var mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` + return { + get: function get() { + return value; + }, + set: function set(headerValue) { + this[mapped] = headerValue; + } + }; + }); + utils$1.freezeMethods(AxiosHeaders); + var AxiosHeaders$1 = AxiosHeaders; + + /** + * Transform the data for a request or a response + * + * @param {Array|Function} fns A single function or Array of functions + * @param {?Object} response The response object + * + * @returns {*} The resulting transformed data + */ + function transformData(fns, response) { + var config = this || defaults$1; + var context = response || config; + var headers = AxiosHeaders$1.from(context.headers); + var data = context.data; + utils$1.forEach(fns, function transform(fn) { + data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); + }); + headers.normalize(); + return data; + } + + function isCancel(value) { + return !!(value && value.__CANCEL__); + } + + var CanceledError = /*#__PURE__*/function (_AxiosError) { + /** + * A `CanceledError` is an object that is thrown when an operation is canceled. + * + * @param {string=} message The message. + * @param {Object=} config The config. + * @param {Object=} request The request. + * + * @returns {CanceledError} The created error. + */ + function CanceledError(message, config, request) { + var _this; + _classCallCheck(this, CanceledError); + _this = _callSuper(this, CanceledError, [message == null ? 'canceled' : message, AxiosError$1.ERR_CANCELED, config, request]); + _this.name = 'CanceledError'; + _this.__CANCEL__ = true; + return _this; + } + _inherits(CanceledError, _AxiosError); + return _createClass(CanceledError); + }(AxiosError$1); + var CanceledError$1 = CanceledError; + + /** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + * + * @returns {object} The response. + */ + function settle(resolve, reject, response) { + var validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(new AxiosError$1('Request failed with status code ' + response.status, [AxiosError$1.ERR_BAD_REQUEST, AxiosError$1.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], response.config, response.request, response)); + } + } + + function parseProtocol(url) { + var match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); + return match && match[1] || ''; + } + + /** + * Calculate data maxRate + * @param {Number} [samplesCount= 10] + * @param {Number} [min= 1000] + * @returns {Function} + */ + function speedometer(samplesCount, min) { + samplesCount = samplesCount || 10; + var bytes = new Array(samplesCount); + var timestamps = new Array(samplesCount); + var head = 0; + var tail = 0; + var firstSampleTS; + min = min !== undefined ? min : 1000; + return function push(chunkLength) { + var now = Date.now(); + var startedAt = timestamps[tail]; + if (!firstSampleTS) { + firstSampleTS = now; + } + bytes[head] = chunkLength; + timestamps[head] = now; + var i = tail; + var bytesCount = 0; + while (i !== head) { + bytesCount += bytes[i++]; + i = i % samplesCount; + } + head = (head + 1) % samplesCount; + if (head === tail) { + tail = (tail + 1) % samplesCount; + } + if (now - firstSampleTS < min) { + return; + } + var passed = startedAt && now - startedAt; + return passed ? Math.round(bytesCount * 1000 / passed) : undefined; + }; + } + + /** + * Throttle decorator + * @param {Function} fn + * @param {Number} freq + * @return {Function} + */ + function throttle(fn, freq) { + var timestamp = 0; + var threshold = 1000 / freq; + var lastArgs; + var timer; + var invoke = function invoke(args) { + var now = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Date.now(); + timestamp = now; + lastArgs = null; + if (timer) { + clearTimeout(timer); + timer = null; + } + fn.apply(void 0, _toConsumableArray(args)); + }; + var throttled = function throttled() { + var now = Date.now(); + var passed = now - timestamp; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (passed >= threshold) { + invoke(args, now); + } else { + lastArgs = args; + if (!timer) { + timer = setTimeout(function () { + timer = null; + invoke(lastArgs); + }, threshold - passed); + } + } + }; + var flush = function flush() { + return lastArgs && invoke(lastArgs); + }; + return [throttled, flush]; + } + + var progressEventReducer = function progressEventReducer(listener, isDownloadStream) { + var freq = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3; + var bytesNotified = 0; + var _speedometer = speedometer(50, 250); + return throttle(function (e) { + var loaded = e.loaded; + var total = e.lengthComputable ? e.total : undefined; + var progressBytes = loaded - bytesNotified; + var rate = _speedometer(progressBytes); + var inRange = loaded <= total; + bytesNotified = loaded; + var data = _defineProperty({ + loaded: loaded, + total: total, + progress: total ? loaded / total : undefined, + bytes: progressBytes, + rate: rate ? rate : undefined, + estimated: rate && total && inRange ? (total - loaded) / rate : undefined, + event: e, + lengthComputable: total != null + }, isDownloadStream ? 'download' : 'upload', true); + listener(data); + }, freq); + }; + var progressEventDecorator = function progressEventDecorator(total, throttled) { + var lengthComputable = total != null; + return [function (loaded) { + return throttled[0]({ + lengthComputable: lengthComputable, + total: total, + loaded: loaded + }); + }, throttled[1]]; + }; + var asyncDecorator = function asyncDecorator(fn) { + return function () { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return utils$1.asap(function () { + return fn.apply(void 0, args); + }); + }; + }; + + var isURLSameOrigin = platform.hasStandardBrowserEnv ? function (origin, isMSIE) { + return function (url) { + url = new URL(url, platform.origin); + return origin.protocol === url.protocol && origin.host === url.host && (isMSIE || origin.port === url.port); + }; + }(new URL(platform.origin), platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)) : function () { + return true; + }; + + var cookies = platform.hasStandardBrowserEnv ? + // Standard browser envs support document.cookie + { + write: function write(name, value, expires, path, domain, secure, sameSite) { + if (typeof document === 'undefined') return; + var cookie = ["".concat(name, "=").concat(encodeURIComponent(value))]; + if (utils$1.isNumber(expires)) { + cookie.push("expires=".concat(new Date(expires).toUTCString())); + } + if (utils$1.isString(path)) { + cookie.push("path=".concat(path)); + } + if (utils$1.isString(domain)) { + cookie.push("domain=".concat(domain)); + } + if (secure === true) { + cookie.push('secure'); + } + if (utils$1.isString(sameSite)) { + cookie.push("SameSite=".concat(sameSite)); + } + document.cookie = cookie.join('; '); + }, + read: function read(name) { + if (typeof document === 'undefined') return null; + var match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)')); + return match ? decodeURIComponent(match[1]) : null; + }, + remove: function remove(name) { + this.write(name, '', Date.now() - 86400000, '/'); + } + } : + // Non-standard browser env (web workers, react-native) lack needed support. + { + write: function write() {}, + read: function read() { + return null; + }, + remove: function remove() {} + }; + + /** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ + function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + if (typeof url !== 'string') { + return false; + } + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); + } + + /** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * + * @returns {string} The combined URL + */ + function combineURLs(baseURL, relativeURL) { + return relativeURL ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') : baseURL; + } + + /** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * + * @returns {string} The combined full path + */ + function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) { + var isRelativeUrl = !isAbsoluteURL(requestedURL); + if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; + } + + var headersToObject = function headersToObject(thing) { + return thing instanceof AxiosHeaders$1 ? _objectSpread2({}, thing) : thing; + }; + + /** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * + * @returns {Object} New object resulting from merging config2 to config1 + */ + function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + var config = {}; + function getMergedValue(target, source, prop, caseless) { + if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { + return utils$1.merge.call({ + caseless: caseless + }, target, source); + } else if (utils$1.isPlainObject(source)) { + return utils$1.merge({}, source); + } else if (utils$1.isArray(source)) { + return source.slice(); + } + return source; + } + function mergeDeepProperties(a, b, prop, caseless) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(a, b, prop, caseless); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(undefined, a, prop, caseless); + } + } + + // eslint-disable-next-line consistent-return + function valueFromConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(undefined, b); + } + } + + // eslint-disable-next-line consistent-return + function defaultToConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(undefined, b); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(undefined, a); + } + } + + // eslint-disable-next-line consistent-return + function mergeDirectKeys(a, b, prop) { + if (prop in config2) { + return getMergedValue(a, b); + } else if (prop in config1) { + return getMergedValue(undefined, a); + } + } + var mergeMap = { + url: valueFromConfig2, + method: valueFromConfig2, + data: valueFromConfig2, + baseURL: defaultToConfig2, + transformRequest: defaultToConfig2, + transformResponse: defaultToConfig2, + paramsSerializer: defaultToConfig2, + timeout: defaultToConfig2, + timeoutMessage: defaultToConfig2, + withCredentials: defaultToConfig2, + withXSRFToken: defaultToConfig2, + adapter: defaultToConfig2, + responseType: defaultToConfig2, + xsrfCookieName: defaultToConfig2, + xsrfHeaderName: defaultToConfig2, + onUploadProgress: defaultToConfig2, + onDownloadProgress: defaultToConfig2, + decompress: defaultToConfig2, + maxContentLength: defaultToConfig2, + maxBodyLength: defaultToConfig2, + beforeRedirect: defaultToConfig2, + transport: defaultToConfig2, + httpAgent: defaultToConfig2, + httpsAgent: defaultToConfig2, + cancelToken: defaultToConfig2, + socketPath: defaultToConfig2, + responseEncoding: defaultToConfig2, + validateStatus: mergeDirectKeys, + headers: function headers(a, b, prop) { + return mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true); + } + }; + utils$1.forEach(Object.keys(_objectSpread2(_objectSpread2({}, config1), config2)), function computeConfigValue(prop) { + if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return; + var merge = utils$1.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties; + var configValue = merge(config1[prop], config2[prop], prop); + utils$1.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue); + }); + return config; + } + + var resolveConfig = (function (config) { + var newConfig = mergeConfig({}, config); + var data = newConfig.data, + withXSRFToken = newConfig.withXSRFToken, + xsrfHeaderName = newConfig.xsrfHeaderName, + xsrfCookieName = newConfig.xsrfCookieName, + headers = newConfig.headers, + auth = newConfig.auth; + newConfig.headers = headers = AxiosHeaders$1.from(headers); + newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer); + + // HTTP basic authentication + if (auth) { + headers.set('Authorization', 'Basic ' + btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))); + } + if (utils$1.isFormData(data)) { + if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { + headers.setContentType(undefined); // browser handles it + } else if (utils$1.isFunction(data.getHeaders)) { + // Node.js FormData (like form-data package) + var formHeaders = data.getHeaders(); + // Only set safe headers to avoid overwriting security headers + var allowedHeaders = ['content-type', 'content-length']; + Object.entries(formHeaders).forEach(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + key = _ref2[0], + val = _ref2[1]; + if (allowedHeaders.includes(key.toLowerCase())) { + headers.set(key, val); + } + }); + } + } + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + + if (platform.hasStandardBrowserEnv) { + withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig)); + if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(newConfig.url)) { + // Add xsrf header + var xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); + if (xsrfValue) { + headers.set(xsrfHeaderName, xsrfValue); + } + } + } + return newConfig; + }); + + var isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; + var xhrAdapter = isXHRAdapterSupported && function (config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + var _config = resolveConfig(config); + var requestData = _config.data; + var requestHeaders = AxiosHeaders$1.from(_config.headers).normalize(); + var responseType = _config.responseType, + onUploadProgress = _config.onUploadProgress, + onDownloadProgress = _config.onDownloadProgress; + var onCanceled; + var uploadThrottled, downloadThrottled; + var flushUpload, flushDownload; + function done() { + flushUpload && flushUpload(); // flush events + flushDownload && flushDownload(); // flush events + + _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); + _config.signal && _config.signal.removeEventListener('abort', onCanceled); + } + var request = new XMLHttpRequest(); + request.open(_config.method.toUpperCase(), _config.url, true); + + // Set the request timeout in MS + request.timeout = _config.timeout; + function onloadend() { + if (!request) { + return; + } + // Prepare the response + var responseHeaders = AxiosHeaders$1.from('getAllResponseHeaders' in request && request.getAllResponseHeaders()); + var responseData = !responseType || responseType === 'text' || responseType === 'json' ? request.responseText : request.response; + var response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config: config, + request: request + }; + settle(function _resolve(value) { + resolve(value); + done(); + }, function _reject(err) { + reject(err); + done(); + }, response); + + // Clean up request + request = null; + } + if ('onloadend' in request) { + // Use onloadend if available + request.onloadend = onloadend; + } else { + // Listen for ready state to emulate onloadend + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { + return; + } + // readystate handler is calling before onerror or ontimeout handlers, + // so we should call onloadend on the next 'tick' + setTimeout(onloadend); + }; + } + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + reject(new AxiosError$1('Request aborted', AxiosError$1.ECONNABORTED, config, request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError(event) { + // Browsers deliver a ProgressEvent in XHR onerror + // (message may be empty; when present, surface it) + // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event + var msg = event && event.message ? event.message : 'Network Error'; + var err = new AxiosError$1(msg, AxiosError$1.ERR_NETWORK, config, request); + // attach the underlying event for consumers who want details + err.event = event || null; + reject(err); + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + var timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded'; + var transitional = _config.transitional || transitionalDefaults; + if (_config.timeoutErrorMessage) { + timeoutErrorMessage = _config.timeoutErrorMessage; + } + reject(new AxiosError$1(timeoutErrorMessage, transitional.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED, config, request)); + + // Clean up request + request = null; + }; + + // Remove Content-Type if data is undefined + requestData === undefined && requestHeaders.setContentType(null); + + // Add headers to the request + if ('setRequestHeader' in request) { + utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { + request.setRequestHeader(key, val); + }); + } + + // Add withCredentials to request if needed + if (!utils$1.isUndefined(_config.withCredentials)) { + request.withCredentials = !!_config.withCredentials; + } + + // Add responseType to request if needed + if (responseType && responseType !== 'json') { + request.responseType = _config.responseType; + } + + // Handle progress if needed + if (onDownloadProgress) { + var _progressEventReducer = progressEventReducer(onDownloadProgress, true); + var _progressEventReducer2 = _slicedToArray(_progressEventReducer, 2); + downloadThrottled = _progressEventReducer2[0]; + flushDownload = _progressEventReducer2[1]; + request.addEventListener('progress', downloadThrottled); + } + + // Not all browsers support upload events + if (onUploadProgress && request.upload) { + var _progressEventReducer3 = progressEventReducer(onUploadProgress); + var _progressEventReducer4 = _slicedToArray(_progressEventReducer3, 2); + uploadThrottled = _progressEventReducer4[0]; + flushUpload = _progressEventReducer4[1]; + request.upload.addEventListener('progress', uploadThrottled); + request.upload.addEventListener('loadend', flushUpload); + } + if (_config.cancelToken || _config.signal) { + // Handle cancellation + // eslint-disable-next-line func-names + onCanceled = function onCanceled(cancel) { + if (!request) { + return; + } + reject(!cancel || cancel.type ? new CanceledError$1(null, config, request) : cancel); + request.abort(); + request = null; + }; + _config.cancelToken && _config.cancelToken.subscribe(onCanceled); + if (_config.signal) { + _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled); + } + } + var protocol = parseProtocol(_config.url); + if (protocol && platform.protocols.indexOf(protocol) === -1) { + reject(new AxiosError$1('Unsupported protocol ' + protocol + ':', AxiosError$1.ERR_BAD_REQUEST, config)); + return; + } + + // Send the request + request.send(requestData || null); + }); + }; + + var composeSignals = function composeSignals(signals, timeout) { + var _signals = signals = signals ? signals.filter(Boolean) : [], + length = _signals.length; + if (timeout || length) { + var controller = new AbortController(); + var aborted; + var onabort = function onabort(reason) { + if (!aborted) { + aborted = true; + unsubscribe(); + var err = reason instanceof Error ? reason : this.reason; + controller.abort(err instanceof AxiosError$1 ? err : new CanceledError$1(err instanceof Error ? err.message : err)); + } + }; + var timer = timeout && setTimeout(function () { + timer = null; + onabort(new AxiosError$1("timeout of ".concat(timeout, "ms exceeded"), AxiosError$1.ETIMEDOUT)); + }, timeout); + var unsubscribe = function unsubscribe() { + if (signals) { + timer && clearTimeout(timer); + timer = null; + signals.forEach(function (signal) { + signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort); + }); + signals = null; + } + }; + signals.forEach(function (signal) { + return signal.addEventListener('abort', onabort); + }); + var signal = controller.signal; + signal.unsubscribe = function () { + return utils$1.asap(unsubscribe); + }; + return signal; + } + }; + var composeSignals$1 = composeSignals; + + var streamChunk = /*#__PURE__*/_regenerator().m(function streamChunk(chunk, chunkSize) { + var len, pos, end; + return _regenerator().w(function (_context) { + while (1) switch (_context.n) { + case 0: + len = chunk.byteLength; + if (!(!chunkSize || len < chunkSize)) { + _context.n = 2; + break; + } + _context.n = 1; + return chunk; + case 1: + return _context.a(2); + case 2: + pos = 0; + case 3: + if (!(pos < len)) { + _context.n = 5; + break; + } + end = pos + chunkSize; + _context.n = 4; + return chunk.slice(pos, end); + case 4: + pos = end; + _context.n = 3; + break; + case 5: + return _context.a(2); + } + }, streamChunk); + }); + var readBytes = /*#__PURE__*/function () { + var _ref = _wrapAsyncGenerator(/*#__PURE__*/_regenerator().m(function _callee(iterable, chunkSize) { + var _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, chunk, _t; + return _regenerator().w(function (_context2) { + while (1) switch (_context2.p = _context2.n) { + case 0: + _iteratorAbruptCompletion = false; + _didIteratorError = false; + _context2.p = 1; + _iterator = _asyncIterator(readStream(iterable)); + case 2: + _context2.n = 3; + return _awaitAsyncGenerator(_iterator.next()); + case 3: + if (!(_iteratorAbruptCompletion = !(_step = _context2.v).done)) { + _context2.n = 5; + break; + } + chunk = _step.value; + return _context2.d(_regeneratorValues(_asyncGeneratorDelegate(_asyncIterator(streamChunk(chunk, chunkSize)))), 4); + case 4: + _iteratorAbruptCompletion = false; + _context2.n = 2; + break; + case 5: + _context2.n = 7; + break; + case 6: + _context2.p = 6; + _t = _context2.v; + _didIteratorError = true; + _iteratorError = _t; + case 7: + _context2.p = 7; + _context2.p = 8; + if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) { + _context2.n = 9; + break; + } + _context2.n = 9; + return _awaitAsyncGenerator(_iterator["return"]()); + case 9: + _context2.p = 9; + if (!_didIteratorError) { + _context2.n = 10; + break; + } + throw _iteratorError; + case 10: + return _context2.f(9); + case 11: + return _context2.f(7); + case 12: + return _context2.a(2); + } + }, _callee, null, [[8,, 9, 11], [1, 6, 7, 12]]); + })); + return function readBytes(_x, _x2) { + return _ref.apply(this, arguments); + }; + }(); + var readStream = /*#__PURE__*/function () { + var _ref2 = _wrapAsyncGenerator(/*#__PURE__*/_regenerator().m(function _callee2(stream) { + var reader, _yield$_awaitAsyncGen, done, value; + return _regenerator().w(function (_context3) { + while (1) switch (_context3.p = _context3.n) { + case 0: + if (!stream[Symbol.asyncIterator]) { + _context3.n = 2; + break; + } + return _context3.d(_regeneratorValues(_asyncGeneratorDelegate(_asyncIterator(stream))), 1); + case 1: + return _context3.a(2); + case 2: + reader = stream.getReader(); + _context3.p = 3; + case 4: + _context3.n = 5; + return _awaitAsyncGenerator(reader.read()); + case 5: + _yield$_awaitAsyncGen = _context3.v; + done = _yield$_awaitAsyncGen.done; + value = _yield$_awaitAsyncGen.value; + if (!done) { + _context3.n = 6; + break; + } + return _context3.a(3, 8); + case 6: + _context3.n = 7; + return value; + case 7: + _context3.n = 4; + break; + case 8: + _context3.p = 8; + _context3.n = 9; + return _awaitAsyncGenerator(reader.cancel()); + case 9: + return _context3.f(8); + case 10: + return _context3.a(2); + } + }, _callee2, null, [[3,, 8, 10]]); + })); + return function readStream(_x3) { + return _ref2.apply(this, arguments); + }; + }(); + var trackStream = function trackStream(stream, chunkSize, onProgress, onFinish) { + var iterator = readBytes(stream, chunkSize); + var bytes = 0; + var done; + var _onFinish = function _onFinish(e) { + if (!done) { + done = true; + onFinish && onFinish(e); + } + }; + return new ReadableStream({ + pull: function pull(controller) { + return _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() { + var _yield$iterator$next, _done, value, len, loadedBytes, _t2; + return _regenerator().w(function (_context4) { + while (1) switch (_context4.p = _context4.n) { + case 0: + _context4.p = 0; + _context4.n = 1; + return iterator.next(); + case 1: + _yield$iterator$next = _context4.v; + _done = _yield$iterator$next.done; + value = _yield$iterator$next.value; + if (!_done) { + _context4.n = 2; + break; + } + _onFinish(); + controller.close(); + return _context4.a(2); + case 2: + len = value.byteLength; + if (onProgress) { + loadedBytes = bytes += len; + onProgress(loadedBytes); + } + controller.enqueue(new Uint8Array(value)); + _context4.n = 4; + break; + case 3: + _context4.p = 3; + _t2 = _context4.v; + _onFinish(_t2); + throw _t2; + case 4: + return _context4.a(2); + } + }, _callee3, null, [[0, 3]]); + }))(); + }, + cancel: function cancel(reason) { + _onFinish(reason); + return iterator["return"](); + } + }, { + highWaterMark: 2 + }); + }; + + var DEFAULT_CHUNK_SIZE = 64 * 1024; + var isFunction = utils$1.isFunction; + var globalFetchAPI = function (_ref) { + var Request = _ref.Request, + Response = _ref.Response; + return { + Request: Request, + Response: Response + }; + }(utils$1.global); + var _utils$global = utils$1.global, + ReadableStream$1 = _utils$global.ReadableStream, + TextEncoder = _utils$global.TextEncoder; + var test = function test(fn) { + try { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + return !!fn.apply(void 0, args); + } catch (e) { + return false; + } + }; + var factory = function factory(env) { + env = utils$1.merge.call({ + skipUndefined: true + }, globalFetchAPI, env); + var _env = env, + envFetch = _env.fetch, + Request = _env.Request, + Response = _env.Response; + var isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function'; + var isRequestSupported = isFunction(Request); + var isResponseSupported = isFunction(Response); + if (!isFetchSupported) { + return false; + } + var isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream$1); + var encodeText = isFetchSupported && (typeof TextEncoder === 'function' ? function (encoder) { + return function (str) { + return encoder.encode(str); + }; + }(new TextEncoder()) : (/*#__PURE__*/function () { + var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(str) { + var _t, _t2; + return _regenerator().w(function (_context) { + while (1) switch (_context.n) { + case 0: + _t = Uint8Array; + _context.n = 1; + return new Request(str).arrayBuffer(); + case 1: + _t2 = _context.v; + return _context.a(2, new _t(_t2)); + } + }, _callee); + })); + return function (_x) { + return _ref2.apply(this, arguments); + }; + }())); + var supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(function () { + var duplexAccessed = false; + var hasContentType = new Request(platform.origin, { + body: new ReadableStream$1(), + method: 'POST', + get duplex() { + duplexAccessed = true; + return 'half'; + } + }).headers.has('Content-Type'); + return duplexAccessed && !hasContentType; + }); + var supportsResponseStream = isResponseSupported && isReadableStreamSupported && test(function () { + return utils$1.isReadableStream(new Response('').body); + }); + var resolvers = { + stream: supportsResponseStream && function (res) { + return res.body; + } + }; + isFetchSupported && function () { + ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(function (type) { + !resolvers[type] && (resolvers[type] = function (res, config) { + var method = res && res[type]; + if (method) { + return method.call(res); + } + throw new AxiosError$1("Response type '".concat(type, "' is not supported"), AxiosError$1.ERR_NOT_SUPPORT, config); + }); + }); + }(); + var getBodyLength = /*#__PURE__*/function () { + var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(body) { + var _request; + return _regenerator().w(function (_context2) { + while (1) switch (_context2.n) { + case 0: + if (!(body == null)) { + _context2.n = 1; + break; + } + return _context2.a(2, 0); + case 1: + if (!utils$1.isBlob(body)) { + _context2.n = 2; + break; + } + return _context2.a(2, body.size); + case 2: + if (!utils$1.isSpecCompliantForm(body)) { + _context2.n = 4; + break; + } + _request = new Request(platform.origin, { + method: 'POST', + body: body + }); + _context2.n = 3; + return _request.arrayBuffer(); + case 3: + return _context2.a(2, _context2.v.byteLength); + case 4: + if (!(utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body))) { + _context2.n = 5; + break; + } + return _context2.a(2, body.byteLength); + case 5: + if (utils$1.isURLSearchParams(body)) { + body = body + ''; + } + if (!utils$1.isString(body)) { + _context2.n = 7; + break; + } + _context2.n = 6; + return encodeText(body); + case 6: + return _context2.a(2, _context2.v.byteLength); + case 7: + return _context2.a(2); + } + }, _callee2); + })); + return function getBodyLength(_x2) { + return _ref3.apply(this, arguments); + }; + }(); + var resolveBodyLength = /*#__PURE__*/function () { + var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(headers, body) { + var length; + return _regenerator().w(function (_context3) { + while (1) switch (_context3.n) { + case 0: + length = utils$1.toFiniteNumber(headers.getContentLength()); + return _context3.a(2, length == null ? getBodyLength(body) : length); + } + }, _callee3); + })); + return function resolveBodyLength(_x3, _x4) { + return _ref4.apply(this, arguments); + }; + }(); + return /*#__PURE__*/function () { + var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(config) { + var _resolveConfig, url, method, data, signal, cancelToken, timeout, onDownloadProgress, onUploadProgress, responseType, headers, _resolveConfig$withCr, withCredentials, fetchOptions, _fetch, composedSignal, request, unsubscribe, requestContentLength, _request, contentTypeHeader, _progressEventDecorat, _progressEventDecorat2, onProgress, flush, isCredentialsSupported, resolvedOptions, response, isStreamResponse, options, responseContentLength, _ref6, _ref7, _onProgress, _flush, responseData, _t3, _t4, _t5; + return _regenerator().w(function (_context4) { + while (1) switch (_context4.p = _context4.n) { + case 0: + _resolveConfig = resolveConfig(config), url = _resolveConfig.url, method = _resolveConfig.method, data = _resolveConfig.data, signal = _resolveConfig.signal, cancelToken = _resolveConfig.cancelToken, timeout = _resolveConfig.timeout, onDownloadProgress = _resolveConfig.onDownloadProgress, onUploadProgress = _resolveConfig.onUploadProgress, responseType = _resolveConfig.responseType, headers = _resolveConfig.headers, _resolveConfig$withCr = _resolveConfig.withCredentials, withCredentials = _resolveConfig$withCr === void 0 ? 'same-origin' : _resolveConfig$withCr, fetchOptions = _resolveConfig.fetchOptions; + _fetch = envFetch || fetch; + responseType = responseType ? (responseType + '').toLowerCase() : 'text'; + composedSignal = composeSignals$1([signal, cancelToken && cancelToken.toAbortSignal()], timeout); + request = null; + unsubscribe = composedSignal && composedSignal.unsubscribe && function () { + composedSignal.unsubscribe(); + }; + _context4.p = 1; + _t3 = onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head'; + if (!_t3) { + _context4.n = 3; + break; + } + _context4.n = 2; + return resolveBodyLength(headers, data); + case 2: + _t4 = requestContentLength = _context4.v; + _t3 = _t4 !== 0; + case 3: + if (!_t3) { + _context4.n = 4; + break; + } + _request = new Request(url, { + method: 'POST', + body: data, + duplex: 'half' + }); + if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) { + headers.setContentType(contentTypeHeader); + } + if (_request.body) { + _progressEventDecorat = progressEventDecorator(requestContentLength, progressEventReducer(asyncDecorator(onUploadProgress))), _progressEventDecorat2 = _slicedToArray(_progressEventDecorat, 2), onProgress = _progressEventDecorat2[0], flush = _progressEventDecorat2[1]; + data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); + } + case 4: + if (!utils$1.isString(withCredentials)) { + withCredentials = withCredentials ? 'include' : 'omit'; + } + + // Cloudflare Workers throws when credentials are defined + // see https://github.com/cloudflare/workerd/issues/902 + isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype; + resolvedOptions = _objectSpread2(_objectSpread2({}, fetchOptions), {}, { + signal: composedSignal, + method: method.toUpperCase(), + headers: headers.normalize().toJSON(), + body: data, + duplex: 'half', + credentials: isCredentialsSupported ? withCredentials : undefined + }); + request = isRequestSupported && new Request(url, resolvedOptions); + _context4.n = 5; + return isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions); + case 5: + response = _context4.v; + isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response'); + if (supportsResponseStream && (onDownloadProgress || isStreamResponse && unsubscribe)) { + options = {}; + ['status', 'statusText', 'headers'].forEach(function (prop) { + options[prop] = response[prop]; + }); + responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length')); + _ref6 = onDownloadProgress && progressEventDecorator(responseContentLength, progressEventReducer(asyncDecorator(onDownloadProgress), true)) || [], _ref7 = _slicedToArray(_ref6, 2), _onProgress = _ref7[0], _flush = _ref7[1]; + response = new Response(trackStream(response.body, DEFAULT_CHUNK_SIZE, _onProgress, function () { + _flush && _flush(); + unsubscribe && unsubscribe(); + }), options); + } + responseType = responseType || 'text'; + _context4.n = 6; + return resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config); + case 6: + responseData = _context4.v; + !isStreamResponse && unsubscribe && unsubscribe(); + _context4.n = 7; + return new Promise(function (resolve, reject) { + settle(resolve, reject, { + data: responseData, + headers: AxiosHeaders$1.from(response.headers), + status: response.status, + statusText: response.statusText, + config: config, + request: request + }); + }); + case 7: + return _context4.a(2, _context4.v); + case 8: + _context4.p = 8; + _t5 = _context4.v; + unsubscribe && unsubscribe(); + if (!(_t5 && _t5.name === 'TypeError' && /Load failed|fetch/i.test(_t5.message))) { + _context4.n = 9; + break; + } + throw Object.assign(new AxiosError$1('Network Error', AxiosError$1.ERR_NETWORK, config, request, _t5 && _t5.response), { + cause: _t5.cause || _t5 + }); + case 9: + throw AxiosError$1.from(_t5, _t5 && _t5.code, config, request, _t5 && _t5.response); + case 10: + return _context4.a(2); + } + }, _callee4, null, [[1, 8]]); + })); + return function (_x5) { + return _ref5.apply(this, arguments); + }; + }(); + }; + var seedCache = new Map(); + var getFetch = function getFetch(config) { + var env = config && config.env || {}; + var fetch = env.fetch, + Request = env.Request, + Response = env.Response; + var seeds = [Request, Response, fetch]; + var len = seeds.length, + i = len, + seed, + target, + map = seedCache; + while (i--) { + seed = seeds[i]; + target = map.get(seed); + target === undefined && map.set(seed, target = i ? new Map() : factory(env)); + map = target; + } + return target; + }; + getFetch(); + + /** + * Known adapters mapping. + * Provides environment-specific adapters for Axios: + * - `http` for Node.js + * - `xhr` for browsers + * - `fetch` for fetch API-based requests + * + * @type {Object} + */ + var knownAdapters = { + http: httpAdapter, + xhr: xhrAdapter, + fetch: { + get: getFetch + } + }; + + // Assign adapter names for easier debugging and identification + utils$1.forEach(knownAdapters, function (fn, value) { + if (fn) { + try { + Object.defineProperty(fn, 'name', { + value: value + }); + } catch (e) { + // eslint-disable-next-line no-empty + } + Object.defineProperty(fn, 'adapterName', { + value: value + }); + } + }); + + /** + * Render a rejection reason string for unknown or unsupported adapters + * + * @param {string} reason + * @returns {string} + */ + var renderReason = function renderReason(reason) { + return "- ".concat(reason); + }; + + /** + * Check if the adapter is resolved (function, null, or false) + * + * @param {Function|null|false} adapter + * @returns {boolean} + */ + var isResolvedHandle = function isResolvedHandle(adapter) { + return utils$1.isFunction(adapter) || adapter === null || adapter === false; + }; + + /** + * Get the first suitable adapter from the provided list. + * Tries each adapter in order until a supported one is found. + * Throws an AxiosError if no adapter is suitable. + * + * @param {Array|string|Function} adapters - Adapter(s) by name or function. + * @param {Object} config - Axios request configuration + * @throws {AxiosError} If no suitable adapter is available + * @returns {Function} The resolved adapter function + */ + function getAdapter(adapters, config) { + adapters = utils$1.isArray(adapters) ? adapters : [adapters]; + var _adapters = adapters, + length = _adapters.length; + var nameOrAdapter; + var adapter; + var rejectedReasons = {}; + for (var i = 0; i < length; i++) { + nameOrAdapter = adapters[i]; + var id = void 0; + adapter = nameOrAdapter; + if (!isResolvedHandle(nameOrAdapter)) { + adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; + if (adapter === undefined) { + throw new AxiosError$1("Unknown adapter '".concat(id, "'")); + } + } + if (adapter && (utils$1.isFunction(adapter) || (adapter = adapter.get(config)))) { + break; + } + rejectedReasons[id || '#' + i] = adapter; + } + if (!adapter) { + var reasons = Object.entries(rejectedReasons).map(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + id = _ref2[0], + state = _ref2[1]; + return "adapter ".concat(id, " ") + (state === false ? 'is not supported by the environment' : 'is not available in the build'); + }); + var s = length ? reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0]) : 'as no adapter specified'; + throw new AxiosError$1("There is no suitable adapter to dispatch the request " + s, 'ERR_NOT_SUPPORT'); + } + return adapter; + } + + /** + * Exports Axios adapters and utility to resolve an adapter + */ + var adapters = { + /** + * Resolve an adapter from a list of adapter names or functions. + * @type {Function} + */ + getAdapter: getAdapter, + /** + * Exposes all known adapters + * @type {Object} + */ + adapters: knownAdapters + }; + + /** + * Throws a `CanceledError` if cancellation has been requested. + * + * @param {Object} config The config that is to be used for the request + * + * @returns {void} + */ + function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } + if (config.signal && config.signal.aborted) { + throw new CanceledError$1(null, config); + } + } + + /** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * + * @returns {Promise} The Promise to be fulfilled + */ + function dispatchRequest(config) { + throwIfCancellationRequested(config); + config.headers = AxiosHeaders$1.from(config.headers); + + // Transform request data + config.data = transformData.call(config, config.transformRequest); + if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { + config.headers.setContentType('application/x-www-form-urlencoded', false); + } + var adapter = adapters.getAdapter(config.adapter || defaults$1.adapter, config); + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData.call(config, config.transformResponse, response); + response.headers = AxiosHeaders$1.from(response.headers); + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData.call(config, config.transformResponse, reason.response); + reason.response.headers = AxiosHeaders$1.from(reason.response.headers); + } + } + return Promise.reject(reason); + }); + } + + var VERSION = "1.13.6"; + + var validators$1 = {}; + + // eslint-disable-next-line func-names + ['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function (type, i) { + validators$1[type] = function validator(thing) { + return _typeof(thing) === type || 'a' + (i < 1 ? 'n ' : ' ') + type; + }; + }); + var deprecatedWarnings = {}; + + /** + * Transitional option validator + * + * @param {function|boolean?} validator - set to false if the transitional option has been removed + * @param {string?} version - deprecated version / removed since version + * @param {string?} message - some message with additional info + * + * @returns {function} + */ + validators$1.transitional = function transitional(validator, version, message) { + function formatMessage(opt, desc) { + return '[Axios v' + VERSION + "] Transitional option '" + opt + "'" + desc + (message ? '. ' + message : ''); + } + + // eslint-disable-next-line func-names + return function (value, opt, opts) { + if (validator === false) { + throw new AxiosError$1(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), AxiosError$1.ERR_DEPRECATED); + } + if (version && !deprecatedWarnings[opt]) { + deprecatedWarnings[opt] = true; + // eslint-disable-next-line no-console + console.warn(formatMessage(opt, ' has been deprecated since v' + version + ' and will be removed in the near future')); + } + return validator ? validator(value, opt, opts) : true; + }; + }; + validators$1.spelling = function spelling(correctSpelling) { + return function (value, opt) { + // eslint-disable-next-line no-console + console.warn("".concat(opt, " is likely a misspelling of ").concat(correctSpelling)); + return true; + }; + }; + + /** + * Assert object's properties type + * + * @param {object} options + * @param {object} schema + * @param {boolean?} allowUnknown + * + * @returns {object} + */ + + function assertOptions(options, schema, allowUnknown) { + if (_typeof(options) !== 'object') { + throw new AxiosError$1('options must be an object', AxiosError$1.ERR_BAD_OPTION_VALUE); + } + var keys = Object.keys(options); + var i = keys.length; + while (i-- > 0) { + var opt = keys[i]; + var validator = schema[opt]; + if (validator) { + var value = options[opt]; + var result = value === undefined || validator(value, opt, options); + if (result !== true) { + throw new AxiosError$1('option ' + opt + ' must be ' + result, AxiosError$1.ERR_BAD_OPTION_VALUE); + } + continue; + } + if (allowUnknown !== true) { + throw new AxiosError$1('Unknown option ' + opt, AxiosError$1.ERR_BAD_OPTION); + } + } + } + var validator = { + assertOptions: assertOptions, + validators: validators$1 + }; + + var validators = validator.validators; + + /** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + * + * @return {Axios} A new instance of Axios + */ + var Axios = /*#__PURE__*/function () { + function Axios(instanceConfig) { + _classCallCheck(this, Axios); + this.defaults = instanceConfig || {}; + this.interceptors = { + request: new InterceptorManager$1(), + response: new InterceptorManager$1() + }; + } + + /** + * Dispatch a request + * + * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) + * @param {?Object} config + * + * @returns {Promise} The Promise to be fulfilled + */ + return _createClass(Axios, [{ + key: "request", + value: (function () { + var _request2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(configOrUrl, config) { + var dummy, stack, _t; + return _regenerator().w(function (_context) { + while (1) switch (_context.p = _context.n) { + case 0: + _context.p = 0; + _context.n = 1; + return this._request(configOrUrl, config); + case 1: + return _context.a(2, _context.v); + case 2: + _context.p = 2; + _t = _context.v; + if (_t instanceof Error) { + dummy = {}; + Error.captureStackTrace ? Error.captureStackTrace(dummy) : dummy = new Error(); + + // slice off the Error: ... line + stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; + try { + if (!_t.stack) { + _t.stack = stack; + // match without the 2 top stack lines + } else if (stack && !String(_t.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { + _t.stack += '\n' + stack; + } + } catch (e) { + // ignore the case where "stack" is an un-writable property + } + } + throw _t; + case 3: + return _context.a(2); + } + }, _callee, this, [[0, 2]]); + })); + function request(_x, _x2) { + return _request2.apply(this, arguments); + } + return request; + }()) + }, { + key: "_request", + value: function _request(configOrUrl, config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof configOrUrl === 'string') { + config = config || {}; + config.url = configOrUrl; + } else { + config = configOrUrl || {}; + } + config = mergeConfig(this.defaults, config); + var _config = config, + transitional = _config.transitional, + paramsSerializer = _config.paramsSerializer, + headers = _config.headers; + if (transitional !== undefined) { + validator.assertOptions(transitional, { + silentJSONParsing: validators.transitional(validators["boolean"]), + forcedJSONParsing: validators.transitional(validators["boolean"]), + clarifyTimeoutError: validators.transitional(validators["boolean"]), + legacyInterceptorReqResOrdering: validators.transitional(validators["boolean"]) + }, false); + } + if (paramsSerializer != null) { + if (utils$1.isFunction(paramsSerializer)) { + config.paramsSerializer = { + serialize: paramsSerializer + }; + } else { + validator.assertOptions(paramsSerializer, { + encode: validators["function"], + serialize: validators["function"] + }, true); + } + } + + // Set config.allowAbsoluteUrls + if (config.allowAbsoluteUrls !== undefined) ; else if (this.defaults.allowAbsoluteUrls !== undefined) { + config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls; + } else { + config.allowAbsoluteUrls = true; + } + validator.assertOptions(config, { + baseUrl: validators.spelling('baseURL'), + withXsrfToken: validators.spelling('withXSRFToken') + }, true); + + // Set config.method + config.method = (config.method || this.defaults.method || 'get').toLowerCase(); + + // Flatten headers + var contextHeaders = headers && utils$1.merge(headers.common, headers[config.method]); + headers && utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function (method) { + delete headers[method]; + }); + config.headers = AxiosHeaders$1.concat(contextHeaders, headers); + + // filter out skipped interceptors + var requestInterceptorChain = []; + var synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { + return; + } + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; + var transitional = config.transitional || transitionalDefaults; + var legacyInterceptorReqResOrdering = transitional && transitional.legacyInterceptorReqResOrdering; + if (legacyInterceptorReqResOrdering) { + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + } else { + requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + } + }); + var responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); + var promise; + var i = 0; + var len; + if (!synchronousRequestInterceptors) { + var chain = [dispatchRequest.bind(this), undefined]; + chain.unshift.apply(chain, requestInterceptorChain); + chain.push.apply(chain, responseInterceptorChain); + len = chain.length; + promise = Promise.resolve(config); + while (i < len) { + promise = promise.then(chain[i++], chain[i++]); + } + return promise; + } + len = requestInterceptorChain.length; + var newConfig = config; + while (i < len) { + var onFulfilled = requestInterceptorChain[i++]; + var onRejected = requestInterceptorChain[i++]; + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected.call(this, error); + break; + } + } + try { + promise = dispatchRequest.call(this, newConfig); + } catch (error) { + return Promise.reject(error); + } + i = 0; + len = responseInterceptorChain.length; + while (i < len) { + promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); + } + return promise; + } + }, { + key: "getUri", + value: function getUri(config) { + config = mergeConfig(this.defaults, config); + var fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); + return buildURL(fullPath, config.params, config.paramsSerializer); + } + }]); + }(); // Provide aliases for supported request methods + utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function (url, config) { + return this.request(mergeConfig(config || {}, { + method: method, + url: url, + data: (config || {}).data + })); + }; + }); + utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + + function generateHTTPMethod(isForm) { + return function httpMethod(url, data, config) { + return this.request(mergeConfig(config || {}, { + method: method, + headers: isForm ? { + 'Content-Type': 'multipart/form-data' + } : {}, + url: url, + data: data + })); + }; + } + Axios.prototype[method] = generateHTTPMethod(); + Axios.prototype[method + 'Form'] = generateHTTPMethod(true); + }); + var Axios$1 = Axios; + + /** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @param {Function} executor The executor function. + * + * @returns {CancelToken} + */ + var CancelToken = /*#__PURE__*/function () { + function CancelToken(executor) { + _classCallCheck(this, CancelToken); + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + var resolvePromise; + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + var token = this; + + // eslint-disable-next-line func-names + this.promise.then(function (cancel) { + if (!token._listeners) return; + var i = token._listeners.length; + while (i-- > 0) { + token._listeners[i](cancel); + } + token._listeners = null; + }); + + // eslint-disable-next-line func-names + this.promise.then = function (onfulfilled) { + var _resolve; + // eslint-disable-next-line func-names + var promise = new Promise(function (resolve) { + token.subscribe(resolve); + _resolve = resolve; + }).then(onfulfilled); + promise.cancel = function reject() { + token.unsubscribe(_resolve); + }; + return promise; + }; + executor(function cancel(message, config, request) { + if (token.reason) { + // Cancellation has already been requested + return; + } + token.reason = new CanceledError$1(message, config, request); + resolvePromise(token.reason); + }); + } + + /** + * Throws a `CanceledError` if cancellation has been requested. + */ + return _createClass(CancelToken, [{ + key: "throwIfRequested", + value: function throwIfRequested() { + if (this.reason) { + throw this.reason; + } + } + + /** + * Subscribe to the cancel signal + */ + }, { + key: "subscribe", + value: function subscribe(listener) { + if (this.reason) { + listener(this.reason); + return; + } + if (this._listeners) { + this._listeners.push(listener); + } else { + this._listeners = [listener]; + } + } + + /** + * Unsubscribe from the cancel signal + */ + }, { + key: "unsubscribe", + value: function unsubscribe(listener) { + if (!this._listeners) { + return; + } + var index = this._listeners.indexOf(listener); + if (index !== -1) { + this._listeners.splice(index, 1); + } + } + }, { + key: "toAbortSignal", + value: function toAbortSignal() { + var _this = this; + var controller = new AbortController(); + var abort = function abort(err) { + controller.abort(err); + }; + this.subscribe(abort); + controller.signal.unsubscribe = function () { + return _this.unsubscribe(abort); + }; + return controller.signal; + } + + /** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ + }], [{ + key: "source", + value: function source() { + var cancel; + var token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token: token, + cancel: cancel + }; + } + }]); + }(); + var CancelToken$1 = CancelToken; + + /** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * const args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * + * @returns {Function} + */ + function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; + } + + /** + * Determines whether the payload is an error thrown by Axios + * + * @param {*} payload The value to test + * + * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false + */ + function isAxiosError(payload) { + return utils$1.isObject(payload) && payload.isAxiosError === true; + } + + var HttpStatusCode = { + Continue: 100, + SwitchingProtocols: 101, + Processing: 102, + EarlyHints: 103, + Ok: 200, + Created: 201, + Accepted: 202, + NonAuthoritativeInformation: 203, + NoContent: 204, + ResetContent: 205, + PartialContent: 206, + MultiStatus: 207, + AlreadyReported: 208, + ImUsed: 226, + MultipleChoices: 300, + MovedPermanently: 301, + Found: 302, + SeeOther: 303, + NotModified: 304, + UseProxy: 305, + Unused: 306, + TemporaryRedirect: 307, + PermanentRedirect: 308, + BadRequest: 400, + Unauthorized: 401, + PaymentRequired: 402, + Forbidden: 403, + NotFound: 404, + MethodNotAllowed: 405, + NotAcceptable: 406, + ProxyAuthenticationRequired: 407, + RequestTimeout: 408, + Conflict: 409, + Gone: 410, + LengthRequired: 411, + PreconditionFailed: 412, + PayloadTooLarge: 413, + UriTooLong: 414, + UnsupportedMediaType: 415, + RangeNotSatisfiable: 416, + ExpectationFailed: 417, + ImATeapot: 418, + MisdirectedRequest: 421, + UnprocessableEntity: 422, + Locked: 423, + FailedDependency: 424, + TooEarly: 425, + UpgradeRequired: 426, + PreconditionRequired: 428, + TooManyRequests: 429, + RequestHeaderFieldsTooLarge: 431, + UnavailableForLegalReasons: 451, + InternalServerError: 500, + NotImplemented: 501, + BadGateway: 502, + ServiceUnavailable: 503, + GatewayTimeout: 504, + HttpVersionNotSupported: 505, + VariantAlsoNegotiates: 506, + InsufficientStorage: 507, + LoopDetected: 508, + NotExtended: 510, + NetworkAuthenticationRequired: 511, + WebServerIsDown: 521, + ConnectionTimedOut: 522, + OriginIsUnreachable: 523, + TimeoutOccurred: 524, + SslHandshakeFailed: 525, + InvalidSslCertificate: 526 + }; + Object.entries(HttpStatusCode).forEach(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + key = _ref2[0], + value = _ref2[1]; + HttpStatusCode[value] = key; + }); + var HttpStatusCode$1 = HttpStatusCode; + + /** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * + * @returns {Axios} A new instance of Axios + */ + function createInstance(defaultConfig) { + var context = new Axios$1(defaultConfig); + var instance = bind(Axios$1.prototype.request, context); + + // Copy axios.prototype to instance + utils$1.extend(instance, Axios$1.prototype, context, { + allOwnKeys: true + }); + + // Copy context to instance + utils$1.extend(instance, context, null, { + allOwnKeys: true + }); + + // Factory for creating new instances + instance.create = function create(instanceConfig) { + return createInstance(mergeConfig(defaultConfig, instanceConfig)); + }; + return instance; + } + + // Create the default instance to be exported + var axios = createInstance(defaults$1); + + // Expose Axios class to allow class inheritance + axios.Axios = Axios$1; + + // Expose Cancel & CancelToken + axios.CanceledError = CanceledError$1; + axios.CancelToken = CancelToken$1; + axios.isCancel = isCancel; + axios.VERSION = VERSION; + axios.toFormData = toFormData; + + // Expose AxiosError class + axios.AxiosError = AxiosError$1; + + // alias for CanceledError for backward compatibility + axios.Cancel = axios.CanceledError; + + // Expose all/spread + axios.all = function all(promises) { + return Promise.all(promises); + }; + axios.spread = spread; + + // Expose isAxiosError + axios.isAxiosError = isAxiosError; + + // Expose mergeConfig + axios.mergeConfig = mergeConfig; + axios.AxiosHeaders = AxiosHeaders$1; + axios.formToJSON = function (thing) { + return formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); + }; + axios.getAdapter = adapters.getAdapter; + axios.HttpStatusCode = HttpStatusCode$1; + axios["default"] = axios; + + return axios; + +})); +//# sourceMappingURL=axios.js.map diff --git a/node_modules/axios/dist/axios.js.map b/node_modules/axios/dist/axios.js.map new file mode 100644 index 0000000..69e8f30 --- /dev/null +++ b/node_modules/axios/dist/axios.js.map @@ -0,0 +1 @@ +{"version":3,"file":"axios.js","sources":["../lib/helpers/bind.js","../lib/utils.js","../lib/core/AxiosError.js","../lib/helpers/null.js","../lib/helpers/toFormData.js","../lib/helpers/AxiosURLSearchParams.js","../lib/helpers/buildURL.js","../lib/core/InterceptorManager.js","../lib/defaults/transitional.js","../lib/platform/browser/classes/URLSearchParams.js","../lib/platform/browser/classes/FormData.js","../lib/platform/browser/classes/Blob.js","../lib/platform/browser/index.js","../lib/platform/common/utils.js","../lib/platform/index.js","../lib/helpers/toURLEncodedForm.js","../lib/helpers/formDataToJSON.js","../lib/defaults/index.js","../lib/helpers/parseHeaders.js","../lib/core/AxiosHeaders.js","../lib/core/transformData.js","../lib/cancel/isCancel.js","../lib/cancel/CanceledError.js","../lib/core/settle.js","../lib/helpers/parseProtocol.js","../lib/helpers/speedometer.js","../lib/helpers/throttle.js","../lib/helpers/progressEventReducer.js","../lib/helpers/isURLSameOrigin.js","../lib/helpers/cookies.js","../lib/helpers/isAbsoluteURL.js","../lib/helpers/combineURLs.js","../lib/core/buildFullPath.js","../lib/core/mergeConfig.js","../lib/helpers/resolveConfig.js","../lib/adapters/xhr.js","../lib/helpers/composeSignals.js","../lib/helpers/trackStream.js","../lib/adapters/fetch.js","../lib/adapters/adapters.js","../lib/core/dispatchRequest.js","../lib/env/data.js","../lib/helpers/validator.js","../lib/core/Axios.js","../lib/cancel/CancelToken.js","../lib/helpers/spread.js","../lib/helpers/isAxiosError.js","../lib/helpers/HttpStatusCode.js","../lib/axios.js"],"sourcesContent":["'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst { toString } = Object.prototype;\nconst { getPrototypeOf } = Object;\nconst { iterator, toStringTag } = Symbol;\n\nconst kindOf = ((cache) => (thing) => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type;\n};\n\nconst typeOfTest = (type) => (thing) => typeof thing === type;\n\n/**\n * Determine if a value is a non-null object\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst { isArray } = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return (\n val !== null &&\n !isUndefined(val) &&\n val.constructor !== null &&\n !isUndefined(val.constructor) &&\n isFunction(val.constructor.isBuffer) &&\n val.constructor.isBuffer(val)\n );\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && isArrayBuffer(val.buffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = (thing) => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (\n (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(toStringTag in val) &&\n !(iterator in val)\n );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n * \n * @param {*} value The value to test\n * \n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n return !!(value && typeof value.uri !== 'undefined');\n}\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n * \n * @param {*} formData The formData to test\n * \n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') return globalThis;\n if (typeof self !== 'undefined') return self;\n if (typeof window !== 'undefined') return window;\n if (typeof global !== 'undefined') return global;\n return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (FormDataCtor && thing instanceof FormDataCtor) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n 'ReadableStream',\n 'Request',\n 'Response',\n 'Headers',\n].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => {\n return str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n};\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, { allOwnKeys = false } = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n if (isBuffer(obj)) {\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== 'undefined') return globalThis;\n return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global;\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * const result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};\n const result = {};\n const assignValue = (val, key) => {\n // Skip dangerous property names to prevent prototype pollution\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n\n const targetKey = (caseless && findKey(result, key)) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n forEach(\n b,\n (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n value: bind(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(a, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n },\n { allOwnKeys }\n );\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xfeff) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n Object.defineProperty(constructor.prototype, 'constructor', {\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype,\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = ((TypedArray) => {\n // eslint-disable-next-line func-names\n return (thing) => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = (str) => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n ({ hasOwnProperty }) =>\n (obj, prop) =>\n hasOwnProperty.call(obj, prop)\n)(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error(\"Can not rewrite read-only method '\" + name + \"'\");\n };\n }\n });\n};\n\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\n */\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach((value) => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(\n thing &&\n isFunction(thing.append) &&\n thing[toStringTag] === 'FormData' &&\n thing[iterator]\n );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if (!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n thing &&\n (isObject(thing) || isFunction(thing)) &&\n isFunction(thing.then) &&\n isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported\n ? ((token, callbacks) => {\n _global.addEventListener(\n 'message',\n ({ source, data }) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n },\n false\n );\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, '*');\n };\n })(`axios@${Math.random()}`, [])\n : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n typeof queueMicrotask !== 'undefined'\n ? queueMicrotask.bind(_global)\n : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isReactNativeBlob,\n isReactNative,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n\n // Preserve status from the original error if not already set from response\n if (error.status != null && axiosError.status == null) {\n axiosError.status = error.status;\n }\n\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\n\n /**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\n constructor(message, code, config, request, response) {\n super(message);\n \n // Make message enumerable to maintain backward compatibility\n // The native Error constructor sets message as non-enumerable,\n // but axios < v1.13.3 had it as enumerable\n Object.defineProperty(this, 'message', {\n value: message,\n enumerable: true,\n writable: true,\n configurable: true\n });\n \n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path\n .concat(key)\n .map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n })\n .join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(\n options,\n {\n metaTokens: true,\n dots: false,\n indexes: false,\n },\n false,\n function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n }\n );\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob);\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n formData.append(renderKey(path, key, dots), convertValue(value));\n return false;\n }\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)))\n ) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) &&\n formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true\n ? renderKey([key], index, dots)\n : indexes === null\n ? key\n : key + '[]',\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable,\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result =\n !(utils.isUndefined(el) || el === null) &&\n visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00',\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder\n ? function (value) {\n return encoder.call(this, value, encode);\n }\n : encode;\n\n return this._pairs\n .map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '')\n .join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val)\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = (options && options.encode) || encode;\n\n const _options = utils.isFunction(options)\n ? {\n serialize: options,\n }\n : options;\n\n const serializeFn = _options && _options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, _options);\n } else {\n serializedParams = utils.isURLSearchParams(params)\n ? params.toString()\n : new AxiosURLSearchParams(params, _options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n * @param {Object} options The options for the interceptor, synchronous and runWhen\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null,\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false,\n legacyInterceptorReqResOrdering: true,\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict';\n\nexport default typeof Blob !== 'undefined' ? Blob : null;\n","import URLSearchParams from './classes/URLSearchParams.js';\nimport FormData from './classes/FormData.js';\nimport Blob from './classes/Blob.js';\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob,\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data'],\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = (typeof navigator === 'object' && navigator) || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv =\n hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin,\n};\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function (value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options,\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map((match) => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [\n function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if (\n (isFileList = utils.isFileList(data)) ||\n contentType.indexOf('multipart/form-data') > -1\n ) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? { 'files[]': data } : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n },\n ],\n\n transformResponse: [\n function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (\n data &&\n utils.isString(data) &&\n ((forcedJSONParsing && !this.responseType) || JSONRequested)\n ) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n },\n ],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob,\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': undefined,\n },\n },\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age',\n 'authorization',\n 'content-length',\n 'content-type',\n 'etag',\n 'expires',\n 'from',\n 'host',\n 'if-modified-since',\n 'if-unmodified-since',\n 'last-modified',\n 'location',\n 'max-forwards',\n 'proxy-authorization',\n 'referer',\n 'retry-after',\n 'user-agent',\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default (rawHeaders) => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders &&\n rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header\n .trim()\n .toLowerCase()\n .replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach((methodName) => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function (arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true,\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if (\n !key ||\n self[key] === undefined ||\n _rewrite === true ||\n (_rewrite === undefined && self[key] !== false)\n ) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {},\n dest,\n key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[(key = entry[0])] = (dest = obj[key])\n ? utils.isArray(dest)\n ? [...dest, entry[1]]\n : [dest, entry[1]]\n : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(\n key &&\n this[key] !== undefined &&\n (!matcher || matchHeaderValue(this, this[key], key, matcher))\n );\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null &&\n value !== false &&\n (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON())\n .map(([header, value]) => header + ': ' + value)\n .join('\\n');\n }\n\n getSetCookie() {\n return this.get('set-cookie') || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals =\n (this[$internals] =\n this[$internals] =\n {\n accessors: {},\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor([\n 'Content-Type',\n 'Content-Length',\n 'Accept',\n 'Accept-Encoding',\n 'User-Agent',\n 'Authorization',\n]);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n },\n };\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from '../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\n\nclass CanceledError extends AxiosError {\n /**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\n}\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(\n new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][\n Math.floor(response.status / 100) - 4\n ],\n response.config,\n response.request,\n response\n )\n );\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return (match && match[1]) || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round((bytesCount * 1000) / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if (passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle((e) => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? loaded / total : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true,\n };\n\n listener(data);\n }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [\n (loaded) =>\n throttled[0]({\n lengthComputable,\n total,\n loaded,\n }),\n throttled[1],\n ];\n};\n\nexport const asyncDecorator =\n (fn) =>\n (...args) =>\n utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n })(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n )\n : () => true;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n },\n }\n : // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {},\n };\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n if (typeof url !== 'string') {\n return false;\n }\n\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst headersToObject = (thing) => (thing instanceof AxiosHeaders ? { ...thing } : thing);\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({ caseless }, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) =>\n mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n };\n\n utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(\n buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls),\n config.params,\n config.paramsSerializer\n );\n\n // HTTP basic authentication\n if (auth) {\n headers.set(\n 'Authorization',\n 'Basic ' +\n btoa(\n (auth.username || '') +\n ':' +\n (auth.password ? unescape(encodeURIComponent(auth.password)) : '')\n )\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n","import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let { responseType, onUploadProgress, onDownloadProgress } = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData =\n !responseType || responseType === 'text' || responseType === 'json'\n ? request.responseText\n : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request,\n };\n\n settle(\n function _resolve(value) {\n resolve(value);\n done();\n },\n function _reject(err) {\n reject(err);\n done();\n },\n response\n );\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (\n request.status === 0 &&\n !(request.responseURL && request.responseURL.indexOf('file:') === 0)\n ) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout\n ? 'timeout of ' + _config.timeout + 'ms exceeded'\n : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(\n new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request\n )\n );\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = (cancel) => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted\n ? onCanceled()\n : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(\n new AxiosError(\n 'Unsupported protocol ' + protocol + ':',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\n );\n return;\n }\n\n // Send the request\n request.send(requestData || null);\n });\n };\n","import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const { length } = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(\n err instanceof AxiosError\n ? err\n : new CanceledError(err instanceof Error ? err.message : err)\n );\n }\n };\n\n let timer =\n timeout &&\n setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach((signal) => {\n signal.unsubscribe\n ? signal.unsubscribe(onabort)\n : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const { signal } = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n};\n\nexport default composeSignals;\n","export const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream(\n {\n async pull(controller) {\n try {\n const { done, value } = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = (bytes += len);\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n },\n },\n {\n highWaterMark: 2,\n }\n );\n};\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n progressEventReducer,\n progressEventDecorator,\n asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\nconst globalFetchAPI = (({ Request, Response }) => ({\n Request,\n Response,\n}))(utils.global);\n\nconst { ReadableStream, TextEncoder } = utils.global;\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false;\n }\n};\n\nconst factory = (env) => {\n env = utils.merge.call(\n {\n skipUndefined: true,\n },\n globalFetchAPI,\n env\n );\n\n const { fetch: envFetch, Request, Response } = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText =\n isFetchSupported &&\n (typeof TextEncoder === 'function'\n ? (\n (encoder) => (str) =>\n encoder.encode(str)\n )(new TextEncoder())\n : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n const supportsRequestStream =\n isRequestSupported &&\n isReadableStreamSupported &&\n test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream =\n isResponseSupported &&\n isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body),\n };\n\n isFetchSupported &&\n (() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n !resolvers[type] &&\n (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(\n `Response type '${type}' is not supported`,\n AxiosError.ERR_NOT_SUPPORT,\n config\n );\n });\n });\n })();\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions,\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals(\n [signal, cancelToken && cancelToken.toAbortSignal()],\n timeout\n );\n\n let request = null;\n\n const unsubscribe =\n composedSignal &&\n composedSignal.unsubscribe &&\n (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress &&\n supportsRequestStream &&\n method !== 'get' &&\n method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: 'half',\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: 'half',\n credentials: isCredentialsSupported ? withCredentials : undefined,\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported\n ? _fetch(request, fetchOptions)\n : _fetch(url, resolvedOptions));\n\n const isStreamResponse =\n supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach((prop) => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] =\n (onDownloadProgress &&\n progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n )) ||\n [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n response,\n config\n );\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request,\n });\n });\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError(\n 'Network Error',\n AxiosError.ERR_NETWORK,\n config,\n request,\n err && err.response\n ),\n {\n cause: err.cause || err,\n }\n );\n }\n\n throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n }\n };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const { fetch, Request, Response } = env;\n const seeds = [Request, Response, fetch];\n\n let len = seeds.length,\n i = len,\n seed,\n target,\n map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n },\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', { value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons).map(\n ([id, state]) =>\n `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length\n ? reasons.length > 1\n ? 'since :\\n' + reasons.map(renderReason).join('\\n')\n : ' ' + renderReason(reasons[0])\n : 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object}\n */\n adapters: knownAdapters,\n};\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from '../adapters/adapters.js';\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(config, config.transformRequest);\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(\n function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, config.transformResponse, response);\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n },\n function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n }\n );\n}\n","export const VERSION = \"1.13.6\";","'use strict';\n\nimport { VERSION } from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return (\n '[Axios v' +\n VERSION +\n \"] Transitional option '\" +\n opt +\n \"'\" +\n desc +\n (message ? '. ' + message : '')\n );\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError(\n 'option ' + opt + ' must be ' + result,\n AxiosError.ERR_BAD_OPTION_VALUE\n );\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\nimport transitionalDefaults from '../defaults/transitional.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager(),\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack;\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const { transitional, paramsSerializer, headers } = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(\n transitional,\n {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean),\n legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n },\n false\n );\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer,\n };\n } else {\n validator.assertOptions(\n paramsSerializer,\n {\n encode: validators.function,\n serialize: validators.function,\n },\n true\n );\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(\n config,\n {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken'),\n },\n true\n );\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(headers.common, headers[config.method]);\n\n headers &&\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => {\n delete headers[method];\n });\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n const transitional = config.transitional || transitionalDefaults;\n const legacyInterceptorReqResOrdering =\n transitional && transitional.legacyInterceptorReqResOrdering;\n\n if (legacyInterceptorReqResOrdering) {\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n } else {\n requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n }\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data,\n })\n );\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n headers: isForm\n ? {\n 'Content-Type': 'multipart/form-data',\n }\n : {},\n url,\n data,\n })\n );\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then((cancel) => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = (onfulfilled) => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise((resolve) => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel,\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * const args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && payload.isAxiosError === true;\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport { VERSION } from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from './core/AxiosHeaders.js';\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, { allOwnKeys: true });\n\n // Copy context to instance\n utils.extend(instance, context, null, { allOwnKeys: true });\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = (thing) => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios;\n"],"names":["bind","fn","thisArg","wrap","apply","arguments","toString","Object","prototype","getPrototypeOf","iterator","Symbol","toStringTag","kindOf","cache","thing","str","call","slice","toLowerCase","create","kindOfTest","type","typeOfTest","_typeof","isArray","Array","isUndefined","isBuffer","val","constructor","isFunction","isArrayBuffer","isArrayBufferView","result","ArrayBuffer","isView","buffer","isString","isNumber","isObject","isBoolean","isPlainObject","isEmptyObject","keys","length","e","isDate","isFile","isReactNativeBlob","value","uri","isReactNative","formData","getParts","isBlob","isFileList","isStream","pipe","getGlobal","globalThis","self","window","global","G","FormDataCtor","FormData","undefined","isFormData","kind","append","isURLSearchParams","_map","map","_map2","_slicedToArray","isReadableStream","isRequest","isResponse","isHeaders","trim","replace","forEach","obj","_ref","_ref$allOwnKeys","allOwnKeys","i","l","getOwnPropertyNames","len","key","findKey","_key","_global","isContextDefined","context","merge","_ref2","caseless","skipUndefined","assignValue","targetKey","extend","a","b","_ref3","defineProperty","writable","enumerable","configurable","stripBOM","content","charCodeAt","inherits","superConstructor","props","descriptors","assign","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","String","lastIndex","indexOf","toArray","arr","isTypedArray","TypedArray","Uint8Array","forEachEntry","generator","_iterator","next","done","pair","matchAll","regExp","matches","exec","push","isHTMLForm","toCamelCase","replacer","m","p1","p2","toUpperCase","hasOwnProperty","_ref4","isRegExp","reduceDescriptors","reducer","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","freezeMethods","set","Error","toObjectSet","arrayOrString","delimiter","define","split","noop","toFiniteNumber","defaultValue","Number","isFinite","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","then","_setImmediate","setImmediateSupported","postMessageSupported","setImmediate","token","callbacks","addEventListener","_ref5","data","shift","cb","postMessage","concat","Math","random","setTimeout","asap","queueMicrotask","process","nextTick","isIterable","hasOwnProp","AxiosError","_Error","message","code","config","request","response","_this","_classCallCheck","_callSuper","isAxiosError","status","_inherits","_createClass","toJSON","description","number","fileName","lineNumber","columnNumber","utils","from","error","customProps","axiosError","cause","_wrapNativeSuper","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL","isVisitable","removeBrackets","renderKey","path","dots","each","join","isFlatArray","some","predicates","test","toFormData","options","TypeError","metaTokens","indexes","defined","option","visitor","defaultVisitor","_Blob","Blob","useBlob","convertValue","toISOString","Buffer","JSON","stringify","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","encoder","_encode","buildURL","url","_options","serialize","serializeFn","serializedParams","hashmarkIndex","InterceptorManager","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","id","clear","forEachHandler","h","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","legacyInterceptorReqResOrdering","URLSearchParams","isBrowser","classes","protocols","hasBrowserEnv","document","_navigator","navigator","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","origin","location","href","_objectSpread","platform","toURLEncodedForm","helpers","isNode","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","entries","stringifySafely","rawValue","parser","parse","defaults","transitional","transitionalDefaults","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","formSerializer","_FormData","env","transformResponse","JSONRequested","responseType","strictJSONParsing","parseReviver","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","method","ignoreDuplicateOf","rawHeaders","parsed","line","substring","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","w","char","buildAccessors","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","parseHeaders","dest","_createForOfIteratorHelper","_step","s","n","entry","_toConsumableArray","err","f","get","has","matcher","delete","deleted","deleteHeader","normalize","format","normalized","_this$constructor","_len","targets","asStrings","getSetCookie","first","computed","_len2","_key2","accessor","internals","accessors","defineAccessor","mapped","headerValue","transformData","fns","transform","isCancel","__CANCEL__","CanceledError","_AxiosError","settle","resolve","reject","floor","parseProtocol","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","now","Date","startedAt","bytesCount","passed","round","throttle","freq","timestamp","threshold","lastArgs","timer","invoke","args","clearTimeout","throttled","flush","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","loaded","total","lengthComputable","progressBytes","rate","inRange","_defineProperty","progress","estimated","event","progressEventDecorator","asyncDecorator","isMSIE","URL","protocol","host","port","userAgent","write","expires","domain","secure","sameSite","cookie","toUTCString","read","RegExp","decodeURIComponent","remove","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","allowAbsoluteUrls","isRelativeUrl","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","computeConfigValue","configValue","newConfig","auth","btoa","username","password","unescape","getHeaders","formHeaders","allowedHeaders","includes","isURLSameOrigin","xsrfValue","cookies","isXHRAdapterSupported","XMLHttpRequest","Promise","dispatchXhrRequest","_config","resolveConfig","requestData","requestHeaders","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","unsubscribe","signal","removeEventListener","open","onloadend","responseHeaders","getAllResponseHeaders","responseData","responseText","statusText","_resolve","_reject","onreadystatechange","handleLoad","readyState","responseURL","onabort","handleAbort","onerror","handleError","msg","ontimeout","handleTimeout","timeoutErrorMessage","setRequestHeader","_progressEventReducer","_progressEventReducer2","upload","_progressEventReducer3","_progressEventReducer4","cancel","abort","subscribe","aborted","send","composeSignals","signals","_signals","Boolean","controller","AbortController","reason","streamChunk","_regenerator","chunk","chunkSize","pos","end","_context","byteLength","readBytes","_wrapAsyncGenerator","_callee","iterable","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_t","_context2","p","_asyncIterator","readStream","_awaitAsyncGenerator","v","d","_regeneratorValues","_asyncGeneratorDelegate","_x","_x2","_callee2","stream","reader","_yield$_awaitAsyncGen","_context3","asyncIterator","getReader","_x3","trackStream","onProgress","onFinish","_onFinish","ReadableStream","pull","_asyncToGenerator","_callee3","_yield$iterator$next","_done","loadedBytes","_t2","_context4","close","enqueue","highWaterMark","DEFAULT_CHUNK_SIZE","globalFetchAPI","Request","Response","_utils$global","TextEncoder","factory","_env","envFetch","fetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","arrayBuffer","supportsRequestStream","duplexAccessed","hasContentType","body","duplex","supportsResponseStream","resolvers","res","getBodyLength","_request","size","resolveBodyLength","getContentLength","_x4","_callee4","_resolveConfig","_resolveConfig$withCr","fetchOptions","_fetch","composedSignal","requestContentLength","contentTypeHeader","_progressEventDecorat","_progressEventDecorat2","isCredentialsSupported","resolvedOptions","isStreamResponse","responseContentLength","_ref6","_ref7","_onProgress","_flush","_t3","_t4","_t5","toAbortSignal","credentials","_x5","seedCache","Map","getFetch","seeds","seed","knownAdapters","http","httpAdapter","xhr","xhrAdapter","fetchAdapter","renderReason","isResolvedHandle","getAdapter","adapters","_adapters","nameOrAdapter","rejectedReasons","reasons","state","throwIfCancellationRequested","throwIfRequested","dispatchRequest","onAdapterResolution","onAdapterRejection","VERSION","validators","validator","deprecatedWarnings","version","formatMessage","opt","desc","opts","console","warn","spelling","correctSpelling","assertOptions","schema","allowUnknown","Axios","instanceConfig","interceptors","_request2","configOrUrl","dummy","captureStackTrace","baseUrl","withXsrfToken","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","unshiftRequestInterceptors","interceptor","unshift","responseInterceptorChain","pushResponseInterceptors","promise","chain","onFulfilled","onRejected","getUri","fullPath","forEachMethodNoData","forEachMethodWithData","generateHTTPMethod","isForm","httpMethod","CancelToken","executor","resolvePromise","promiseExecutor","_listeners","onfulfilled","splice","c","spread","callback","payload","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","WebServerIsDown","ConnectionTimedOut","OriginIsUnreachable","TimeoutOccurred","SslHandshakeFailed","InvalidSslCertificate","createInstance","defaultConfig","instance","axios","Cancel","all","promises","formToJSON"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACe,SAASA,IAAIA,CAACC,EAAE,EAAEC,OAAO,EAAE;IACxC,OAAO,SAASC,IAAIA,GAAG;EACrB,IAAA,OAAOF,EAAE,CAACG,KAAK,CAACF,OAAO,EAAEG,SAAS,CAAC,CAAA;KACpC,CAAA;EACH;;ECTA;;EAEA,IAAQC,QAAQ,GAAKC,MAAM,CAACC,SAAS,CAA7BF,QAAQ,CAAA;EAChB,IAAQG,cAAc,GAAKF,MAAM,CAAzBE,cAAc,CAAA;EACtB,IAAQC,QAAQ,GAAkBC,MAAM,CAAhCD,QAAQ;IAAEE,WAAW,GAAKD,MAAM,CAAtBC,WAAW,CAAA;EAE7B,IAAMC,MAAM,GAAI,UAACC,KAAK,EAAA;IAAA,OAAK,UAACC,KAAK,EAAK;EACpC,IAAA,IAAMC,GAAG,GAAGV,QAAQ,CAACW,IAAI,CAACF,KAAK,CAAC,CAAA;MAChC,OAAOD,KAAK,CAACE,GAAG,CAAC,KAAKF,KAAK,CAACE,GAAG,CAAC,GAAGA,GAAG,CAACE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAACC,WAAW,EAAE,CAAC,CAAA;KACnE,CAAA;EAAA,CAAA,CAAEZ,MAAM,CAACa,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;EAEvB,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAIC,IAAI,EAAK;EAC3BA,EAAAA,IAAI,GAAGA,IAAI,CAACH,WAAW,EAAE,CAAA;EACzB,EAAA,OAAO,UAACJ,KAAK,EAAA;EAAA,IAAA,OAAKF,MAAM,CAACE,KAAK,CAAC,KAAKO,IAAI,CAAA;EAAA,GAAA,CAAA;EAC1C,CAAC,CAAA;EAED,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAID,IAAI,EAAA;EAAA,EAAA,OAAK,UAACP,KAAK,EAAA;EAAA,IAAA,OAAKS,OAAA,CAAOT,KAAK,CAAA,KAAKO,IAAI,CAAA;EAAA,GAAA,CAAA;EAAA,CAAA,CAAA;;EAE7D;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAQG,OAAO,GAAKC,KAAK,CAAjBD,OAAO,CAAA;;EAEf;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAME,WAAW,GAAGJ,UAAU,CAAC,WAAW,CAAC,CAAA;;EAE3C;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASK,QAAQA,CAACC,GAAG,EAAE;EACrB,EAAA,OACEA,GAAG,KAAK,IAAI,IACZ,CAACF,WAAW,CAACE,GAAG,CAAC,IACjBA,GAAG,CAACC,WAAW,KAAK,IAAI,IACxB,CAACH,WAAW,CAACE,GAAG,CAACC,WAAW,CAAC,IAC7BC,YAAU,CAACF,GAAG,CAACC,WAAW,CAACF,QAAQ,CAAC,IACpCC,GAAG,CAACC,WAAW,CAACF,QAAQ,CAACC,GAAG,CAAC,CAAA;EAEjC,CAAA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMG,aAAa,GAAGX,UAAU,CAAC,aAAa,CAAC,CAAA;;EAE/C;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASY,iBAAiBA,CAACJ,GAAG,EAAE;EAC9B,EAAA,IAAIK,MAAM,CAAA;IACV,IAAI,OAAOC,WAAW,KAAK,WAAW,IAAIA,WAAW,CAACC,MAAM,EAAE;EAC5DF,IAAAA,MAAM,GAAGC,WAAW,CAACC,MAAM,CAACP,GAAG,CAAC,CAAA;EAClC,GAAC,MAAM;EACLK,IAAAA,MAAM,GAAGL,GAAG,IAAIA,GAAG,CAACQ,MAAM,IAAIL,aAAa,CAACH,GAAG,CAACQ,MAAM,CAAC,CAAA;EACzD,GAAA;EACA,EAAA,OAAOH,MAAM,CAAA;EACf,CAAA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMI,QAAQ,GAAGf,UAAU,CAAC,QAAQ,CAAC,CAAA;;EAErC;EACA;EACA;EACA;EACA;EACA;EACA,IAAMQ,YAAU,GAAGR,UAAU,CAAC,UAAU,CAAC,CAAA;;EAEzC;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMgB,QAAQ,GAAGhB,UAAU,CAAC,QAAQ,CAAC,CAAA;;EAErC;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMiB,QAAQ,GAAG,SAAXA,QAAQA,CAAIzB,KAAK,EAAA;IAAA,OAAKA,KAAK,KAAK,IAAI,IAAIS,OAAA,CAAOT,KAAK,MAAK,QAAQ,CAAA;EAAA,CAAA,CAAA;;EAEvE;EACA;EACA;EACA;EACA;EACA;EACA,IAAM0B,SAAS,GAAG,SAAZA,SAASA,CAAI1B,KAAK,EAAA;EAAA,EAAA,OAAKA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAK,KAAK,CAAA;EAAA,CAAA,CAAA;;EAE9D;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAM2B,aAAa,GAAG,SAAhBA,aAAaA,CAAIb,GAAG,EAAK;EAC7B,EAAA,IAAIhB,MAAM,CAACgB,GAAG,CAAC,KAAK,QAAQ,EAAE;EAC5B,IAAA,OAAO,KAAK,CAAA;EACd,GAAA;EAEA,EAAA,IAAMrB,SAAS,GAAGC,cAAc,CAACoB,GAAG,CAAC,CAAA;EACrC,EAAA,OACE,CAACrB,SAAS,KAAK,IAAI,IACjBA,SAAS,KAAKD,MAAM,CAACC,SAAS,IAC9BD,MAAM,CAACE,cAAc,CAACD,SAAS,CAAC,KAAK,IAAI,KAC3C,EAAEI,WAAW,IAAIiB,GAAG,CAAC,IACrB,EAAEnB,QAAQ,IAAImB,GAAG,CAAC,CAAA;EAEtB,CAAC,CAAA;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMc,aAAa,GAAG,SAAhBA,aAAaA,CAAId,GAAG,EAAK;EAC7B;IACA,IAAI,CAACW,QAAQ,CAACX,GAAG,CAAC,IAAID,QAAQ,CAACC,GAAG,CAAC,EAAE;EACnC,IAAA,OAAO,KAAK,CAAA;EACd,GAAA;IAEA,IAAI;MACF,OAAOtB,MAAM,CAACqC,IAAI,CAACf,GAAG,CAAC,CAACgB,MAAM,KAAK,CAAC,IAAItC,MAAM,CAACE,cAAc,CAACoB,GAAG,CAAC,KAAKtB,MAAM,CAACC,SAAS,CAAA;KACxF,CAAC,OAAOsC,CAAC,EAAE;EACV;EACA,IAAA,OAAO,KAAK,CAAA;EACd,GAAA;EACF,CAAC,CAAA;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMC,MAAM,GAAG1B,UAAU,CAAC,MAAM,CAAC,CAAA;;EAEjC;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAM2B,MAAM,GAAG3B,UAAU,CAAC,MAAM,CAAC,CAAA;;EAEjC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAM4B,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,KAAK,EAAK;IACnC,OAAO,CAAC,EAAEA,KAAK,IAAI,OAAOA,KAAK,CAACC,GAAG,KAAK,WAAW,CAAC,CAAA;EACtD,CAAC,CAAA;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,QAAQ,EAAA;EAAA,EAAA,OAAKA,QAAQ,IAAI,OAAOA,QAAQ,CAACC,QAAQ,KAAK,WAAW,CAAA;EAAA,CAAA,CAAA;;EAExF;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMC,MAAM,GAAGlC,UAAU,CAAC,MAAM,CAAC,CAAA;;EAEjC;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMmC,UAAU,GAAGnC,UAAU,CAAC,UAAU,CAAC,CAAA;;EAEzC;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMoC,QAAQ,GAAG,SAAXA,QAAQA,CAAI5B,GAAG,EAAA;IAAA,OAAKW,QAAQ,CAACX,GAAG,CAAC,IAAIE,YAAU,CAACF,GAAG,CAAC6B,IAAI,CAAC,CAAA;EAAA,CAAA,CAAA;;EAE/D;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASC,SAASA,GAAG;EACnB,EAAA,IAAI,OAAOC,UAAU,KAAK,WAAW,EAAE,OAAOA,UAAU,CAAA;EACxD,EAAA,IAAI,OAAOC,IAAI,KAAK,WAAW,EAAE,OAAOA,IAAI,CAAA;EAC5C,EAAA,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE,OAAOA,MAAM,CAAA;EAChD,EAAA,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE,OAAOA,MAAM,CAAA;EAChD,EAAA,OAAO,EAAE,CAAA;EACX,CAAA;EAEA,IAAMC,CAAC,GAAGL,SAAS,EAAE,CAAA;EACrB,IAAMM,YAAY,GAAG,OAAOD,CAAC,CAACE,QAAQ,KAAK,WAAW,GAAGF,CAAC,CAACE,QAAQ,GAAGC,SAAS,CAAA;EAE/E,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAIrD,KAAK,EAAK;EAC5B,EAAA,IAAIsD,IAAI,CAAA;IACR,OAAOtD,KAAK,KACTkD,YAAY,IAAIlD,KAAK,YAAYkD,YAAY,IAC5ClC,YAAU,CAAChB,KAAK,CAACuD,MAAM,CAAC,KACtB,CAACD,IAAI,GAAGxD,MAAM,CAACE,KAAK,CAAC,MAAM,UAAU;EACrC;EACCsD,EAAAA,IAAI,KAAK,QAAQ,IAAItC,YAAU,CAAChB,KAAK,CAACT,QAAQ,CAAC,IAAIS,KAAK,CAACT,QAAQ,EAAE,KAAK,mBAAoB,CAEhG,CACF,CAAA;EACH,CAAC,CAAA;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMiE,iBAAiB,GAAGlD,UAAU,CAAC,iBAAiB,CAAC,CAAA;EAEvD,IAAAmD,IAAA,GAA6D,CAC3D,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,SAAS,CACV,CAACC,GAAG,CAACpD,UAAU,CAAC;IAAAqD,KAAA,GAAAC,cAAA,CAAAH,IAAA,EAAA,CAAA,CAAA;EALVI,EAAAA,gBAAgB,GAAAF,KAAA,CAAA,CAAA,CAAA;EAAEG,EAAAA,SAAS,GAAAH,KAAA,CAAA,CAAA,CAAA;EAAEI,EAAAA,UAAU,GAAAJ,KAAA,CAAA,CAAA,CAAA;EAAEK,EAAAA,SAAS,GAAAL,KAAA,CAAA,CAAA,CAAA,CAAA;;EAOzD;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMM,IAAI,GAAG,SAAPA,IAAIA,CAAIhE,GAAG,EAAK;EACpB,EAAA,OAAOA,GAAG,CAACgE,IAAI,GAAGhE,GAAG,CAACgE,IAAI,EAAE,GAAGhE,GAAG,CAACiE,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAA;EACtF,CAAC,CAAA;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASC,OAAOA,CAACC,GAAG,EAAElF,EAAE,EAA+B;EAAA,EAAA,IAAAmF,IAAA,GAAA/E,SAAA,CAAAwC,MAAA,GAAA,CAAA,IAAAxC,SAAA,CAAA,CAAA,CAAA,KAAA8D,SAAA,GAAA9D,SAAA,CAAA,CAAA,CAAA,GAAJ,EAAE;MAAAgF,eAAA,GAAAD,IAAA,CAAzBE,UAAU;EAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,eAAA,CAAA;EAC5C;IACA,IAAIF,GAAG,KAAK,IAAI,IAAI,OAAOA,GAAG,KAAK,WAAW,EAAE;EAC9C,IAAA,OAAA;EACF,GAAA;EAEA,EAAA,IAAII,CAAC,CAAA;EACL,EAAA,IAAIC,CAAC,CAAA;;EAEL;EACA,EAAA,IAAIhE,OAAA,CAAO2D,GAAG,CAAA,KAAK,QAAQ,EAAE;EAC3B;MACAA,GAAG,GAAG,CAACA,GAAG,CAAC,CAAA;EACb,GAAA;EAEA,EAAA,IAAI1D,OAAO,CAAC0D,GAAG,CAAC,EAAE;EAChB;EACA,IAAA,KAAKI,CAAC,GAAG,CAAC,EAAEC,CAAC,GAAGL,GAAG,CAACtC,MAAM,EAAE0C,CAAC,GAAGC,CAAC,EAAED,CAAC,EAAE,EAAE;EACtCtF,MAAAA,EAAE,CAACgB,IAAI,CAAC,IAAI,EAAEkE,GAAG,CAACI,CAAC,CAAC,EAAEA,CAAC,EAAEJ,GAAG,CAAC,CAAA;EAC/B,KAAA;EACF,GAAC,MAAM;EACL;EACA,IAAA,IAAIvD,QAAQ,CAACuD,GAAG,CAAC,EAAE;EACjB,MAAA,OAAA;EACF,KAAA;;EAEA;EACA,IAAA,IAAMvC,IAAI,GAAG0C,UAAU,GAAG/E,MAAM,CAACkF,mBAAmB,CAACN,GAAG,CAAC,GAAG5E,MAAM,CAACqC,IAAI,CAACuC,GAAG,CAAC,CAAA;EAC5E,IAAA,IAAMO,GAAG,GAAG9C,IAAI,CAACC,MAAM,CAAA;EACvB,IAAA,IAAI8C,GAAG,CAAA;MAEP,KAAKJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGG,GAAG,EAAEH,CAAC,EAAE,EAAE;EACxBI,MAAAA,GAAG,GAAG/C,IAAI,CAAC2C,CAAC,CAAC,CAAA;EACbtF,MAAAA,EAAE,CAACgB,IAAI,CAAC,IAAI,EAAEkE,GAAG,CAACQ,GAAG,CAAC,EAAEA,GAAG,EAAER,GAAG,CAAC,CAAA;EACnC,KAAA;EACF,GAAA;EACF,CAAA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASS,OAAOA,CAACT,GAAG,EAAEQ,GAAG,EAAE;EACzB,EAAA,IAAI/D,QAAQ,CAACuD,GAAG,CAAC,EAAE;EACjB,IAAA,OAAO,IAAI,CAAA;EACb,GAAA;EAEAQ,EAAAA,GAAG,GAAGA,GAAG,CAACxE,WAAW,EAAE,CAAA;EACvB,EAAA,IAAMyB,IAAI,GAAGrC,MAAM,CAACqC,IAAI,CAACuC,GAAG,CAAC,CAAA;EAC7B,EAAA,IAAII,CAAC,GAAG3C,IAAI,CAACC,MAAM,CAAA;EACnB,EAAA,IAAIgD,IAAI,CAAA;EACR,EAAA,OAAON,CAAC,EAAE,GAAG,CAAC,EAAE;EACdM,IAAAA,IAAI,GAAGjD,IAAI,CAAC2C,CAAC,CAAC,CAAA;EACd,IAAA,IAAII,GAAG,KAAKE,IAAI,CAAC1E,WAAW,EAAE,EAAE;EAC9B,MAAA,OAAO0E,IAAI,CAAA;EACb,KAAA;EACF,GAAA;EACA,EAAA,OAAO,IAAI,CAAA;EACb,CAAA;EAEA,IAAMC,OAAO,GAAI,YAAM;EACrB;EACA,EAAA,IAAI,OAAOlC,UAAU,KAAK,WAAW,EAAE,OAAOA,UAAU,CAAA;EACxD,EAAA,OAAO,OAAOC,IAAI,KAAK,WAAW,GAAGA,IAAI,GAAG,OAAOC,MAAM,KAAK,WAAW,GAAGA,MAAM,GAAGC,MAAM,CAAA;EAC7F,CAAC,EAAG,CAAA;EAEJ,IAAMgC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,OAAO,EAAA;IAAA,OAAK,CAACrE,WAAW,CAACqE,OAAO,CAAC,IAAIA,OAAO,KAAKF,OAAO,CAAA;EAAA,CAAA,CAAA;;EAElF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASG,KAAKA;EAAC,EAA6B;IAC1C,IAAAC,KAAA,GAAqCH,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAK,EAAE;MAAlEI,QAAQ,GAAAD,KAAA,CAARC,QAAQ;MAAEC,aAAa,GAAAF,KAAA,CAAbE,aAAa,CAAA;IAC/B,IAAMlE,MAAM,GAAG,EAAE,CAAA;IACjB,IAAMmE,WAAW,GAAG,SAAdA,WAAWA,CAAIxE,GAAG,EAAE8D,GAAG,EAAK;EAChC;MACA,IAAIA,GAAG,KAAK,WAAW,IAAIA,GAAG,KAAK,aAAa,IAAIA,GAAG,KAAK,WAAW,EAAE;EACvE,MAAA,OAAA;EACF,KAAA;MAEA,IAAMW,SAAS,GAAIH,QAAQ,IAAIP,OAAO,CAAC1D,MAAM,EAAEyD,GAAG,CAAC,IAAKA,GAAG,CAAA;EAC3D,IAAA,IAAIjD,aAAa,CAACR,MAAM,CAACoE,SAAS,CAAC,CAAC,IAAI5D,aAAa,CAACb,GAAG,CAAC,EAAE;EAC1DK,MAAAA,MAAM,CAACoE,SAAS,CAAC,GAAGL,KAAK,CAAC/D,MAAM,CAACoE,SAAS,CAAC,EAAEzE,GAAG,CAAC,CAAA;EACnD,KAAC,MAAM,IAAIa,aAAa,CAACb,GAAG,CAAC,EAAE;QAC7BK,MAAM,CAACoE,SAAS,CAAC,GAAGL,KAAK,CAAC,EAAE,EAAEpE,GAAG,CAAC,CAAA;EACpC,KAAC,MAAM,IAAIJ,OAAO,CAACI,GAAG,CAAC,EAAE;QACvBK,MAAM,CAACoE,SAAS,CAAC,GAAGzE,GAAG,CAACX,KAAK,EAAE,CAAA;OAChC,MAAM,IAAI,CAACkF,aAAa,IAAI,CAACzE,WAAW,CAACE,GAAG,CAAC,EAAE;EAC9CK,MAAAA,MAAM,CAACoE,SAAS,CAAC,GAAGzE,GAAG,CAAA;EACzB,KAAA;KACD,CAAA;EAED,EAAA,KAAK,IAAI0D,CAAC,GAAG,CAAC,EAAEC,CAAC,GAAGnF,SAAS,CAACwC,MAAM,EAAE0C,CAAC,GAAGC,CAAC,EAAED,CAAC,EAAE,EAAE;EAChDlF,IAAAA,SAAS,CAACkF,CAAC,CAAC,IAAIL,OAAO,CAAC7E,SAAS,CAACkF,CAAC,CAAC,EAAEc,WAAW,CAAC,CAAA;EACpD,GAAA;EACA,EAAA,OAAOnE,MAAM,CAAA;EACf,CAAA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMqE,MAAM,GAAG,SAATA,MAAMA,CAAIC,CAAC,EAAEC,CAAC,EAAEvG,OAAO,EAA0B;EAAA,EAAA,IAAAwG,KAAA,GAAArG,SAAA,CAAAwC,MAAA,GAAA,CAAA,IAAAxC,SAAA,CAAA,CAAA,CAAA,KAAA8D,SAAA,GAAA9D,SAAA,CAAA,CAAA,CAAA,GAAP,EAAE;MAAjBiF,UAAU,GAAAoB,KAAA,CAAVpB,UAAU,CAAA;EACzCJ,EAAAA,OAAO,CACLuB,CAAC,EACD,UAAC5E,GAAG,EAAE8D,GAAG,EAAK;EACZ,IAAA,IAAIzF,OAAO,IAAI6B,YAAU,CAACF,GAAG,CAAC,EAAE;EAC9BtB,MAAAA,MAAM,CAACoG,cAAc,CAACH,CAAC,EAAEb,GAAG,EAAE;EAC5BzC,QAAAA,KAAK,EAAElD,IAAI,CAAC6B,GAAG,EAAE3B,OAAO,CAAC;EACzB0G,QAAAA,QAAQ,EAAE,IAAI;EACdC,QAAAA,UAAU,EAAE,IAAI;EAChBC,QAAAA,YAAY,EAAE,IAAA;EAChB,OAAC,CAAC,CAAA;EACJ,KAAC,MAAM;EACLvG,MAAAA,MAAM,CAACoG,cAAc,CAACH,CAAC,EAAEb,GAAG,EAAE;EAC5BzC,QAAAA,KAAK,EAAErB,GAAG;EACV+E,QAAAA,QAAQ,EAAE,IAAI;EACdC,QAAAA,UAAU,EAAE,IAAI;EAChBC,QAAAA,YAAY,EAAE,IAAA;EAChB,OAAC,CAAC,CAAA;EACJ,KAAA;EACF,GAAC,EACD;EAAExB,IAAAA,UAAU,EAAVA,UAAAA;EAAW,GACf,CAAC,CAAA;EACD,EAAA,OAAOkB,CAAC,CAAA;EACV,CAAC,CAAA;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMO,QAAQ,GAAG,SAAXA,QAAQA,CAAIC,OAAO,EAAK;IAC5B,IAAIA,OAAO,CAACC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;EACpCD,IAAAA,OAAO,GAAGA,OAAO,CAAC9F,KAAK,CAAC,CAAC,CAAC,CAAA;EAC5B,GAAA;EACA,EAAA,OAAO8F,OAAO,CAAA;EAChB,CAAC,CAAA;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAME,QAAQ,GAAG,SAAXA,QAAQA,CAAIpF,WAAW,EAAEqF,gBAAgB,EAAEC,KAAK,EAAEC,WAAW,EAAK;EACtEvF,EAAAA,WAAW,CAACtB,SAAS,GAAGD,MAAM,CAACa,MAAM,CAAC+F,gBAAgB,CAAC3G,SAAS,EAAE6G,WAAW,CAAC,CAAA;IAC9E9G,MAAM,CAACoG,cAAc,CAAC7E,WAAW,CAACtB,SAAS,EAAE,aAAa,EAAE;EAC1D0C,IAAAA,KAAK,EAAEpB,WAAW;EAClB8E,IAAAA,QAAQ,EAAE,IAAI;EACdC,IAAAA,UAAU,EAAE,KAAK;EACjBC,IAAAA,YAAY,EAAE,IAAA;EAChB,GAAC,CAAC,CAAA;EACFvG,EAAAA,MAAM,CAACoG,cAAc,CAAC7E,WAAW,EAAE,OAAO,EAAE;MAC1CoB,KAAK,EAAEiE,gBAAgB,CAAC3G,SAAAA;EAC1B,GAAC,CAAC,CAAA;IACF4G,KAAK,IAAI7G,MAAM,CAAC+G,MAAM,CAACxF,WAAW,CAACtB,SAAS,EAAE4G,KAAK,CAAC,CAAA;EACtD,CAAC,CAAA;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMG,YAAY,GAAG,SAAfA,YAAYA,CAAIC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,UAAU,EAAK;EAC/D,EAAA,IAAIP,KAAK,CAAA;EACT,EAAA,IAAI7B,CAAC,CAAA;EACL,EAAA,IAAIqC,IAAI,CAAA;IACR,IAAMC,MAAM,GAAG,EAAE,CAAA;EAEjBJ,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAAE,CAAA;EACvB;EACA,EAAA,IAAID,SAAS,IAAI,IAAI,EAAE,OAAOC,OAAO,CAAA;IAErC,GAAG;EACDL,IAAAA,KAAK,GAAG7G,MAAM,CAACkF,mBAAmB,CAAC+B,SAAS,CAAC,CAAA;MAC7CjC,CAAC,GAAG6B,KAAK,CAACvE,MAAM,CAAA;EAChB,IAAA,OAAO0C,CAAC,EAAE,GAAG,CAAC,EAAE;EACdqC,MAAAA,IAAI,GAAGR,KAAK,CAAC7B,CAAC,CAAC,CAAA;EACf,MAAA,IAAI,CAAC,CAACoC,UAAU,IAAIA,UAAU,CAACC,IAAI,EAAEJ,SAAS,EAAEC,OAAO,CAAC,KAAK,CAACI,MAAM,CAACD,IAAI,CAAC,EAAE;EAC1EH,QAAAA,OAAO,CAACG,IAAI,CAAC,GAAGJ,SAAS,CAACI,IAAI,CAAC,CAAA;EAC/BC,QAAAA,MAAM,CAACD,IAAI,CAAC,GAAG,IAAI,CAAA;EACrB,OAAA;EACF,KAAA;MACAJ,SAAS,GAAGE,MAAM,KAAK,KAAK,IAAIjH,cAAc,CAAC+G,SAAS,CAAC,CAAA;EAC3D,GAAC,QAAQA,SAAS,KAAK,CAACE,MAAM,IAAIA,MAAM,CAACF,SAAS,EAAEC,OAAO,CAAC,CAAC,IAAID,SAAS,KAAKjH,MAAM,CAACC,SAAS,EAAA;EAE/F,EAAA,OAAOiH,OAAO,CAAA;EAChB,CAAC,CAAA;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMK,QAAQ,GAAG,SAAXA,QAAQA,CAAI9G,GAAG,EAAE+G,YAAY,EAAEC,QAAQ,EAAK;EAChDhH,EAAAA,GAAG,GAAGiH,MAAM,CAACjH,GAAG,CAAC,CAAA;IACjB,IAAIgH,QAAQ,KAAK7D,SAAS,IAAI6D,QAAQ,GAAGhH,GAAG,CAAC6B,MAAM,EAAE;MACnDmF,QAAQ,GAAGhH,GAAG,CAAC6B,MAAM,CAAA;EACvB,GAAA;IACAmF,QAAQ,IAAID,YAAY,CAAClF,MAAM,CAAA;IAC/B,IAAMqF,SAAS,GAAGlH,GAAG,CAACmH,OAAO,CAACJ,YAAY,EAAEC,QAAQ,CAAC,CAAA;EACrD,EAAA,OAAOE,SAAS,KAAK,CAAC,CAAC,IAAIA,SAAS,KAAKF,QAAQ,CAAA;EACnD,CAAC,CAAA;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMI,OAAO,GAAG,SAAVA,OAAOA,CAAIrH,KAAK,EAAK;EACzB,EAAA,IAAI,CAACA,KAAK,EAAE,OAAO,IAAI,CAAA;EACvB,EAAA,IAAIU,OAAO,CAACV,KAAK,CAAC,EAAE,OAAOA,KAAK,CAAA;EAChC,EAAA,IAAIwE,CAAC,GAAGxE,KAAK,CAAC8B,MAAM,CAAA;EACpB,EAAA,IAAI,CAACN,QAAQ,CAACgD,CAAC,CAAC,EAAE,OAAO,IAAI,CAAA;EAC7B,EAAA,IAAM8C,GAAG,GAAG,IAAI3G,KAAK,CAAC6D,CAAC,CAAC,CAAA;EACxB,EAAA,OAAOA,CAAC,EAAE,GAAG,CAAC,EAAE;EACd8C,IAAAA,GAAG,CAAC9C,CAAC,CAAC,GAAGxE,KAAK,CAACwE,CAAC,CAAC,CAAA;EACnB,GAAA;EACA,EAAA,OAAO8C,GAAG,CAAA;EACZ,CAAC,CAAA;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMC,YAAY,GAAI,UAACC,UAAU,EAAK;EACpC;IACA,OAAO,UAACxH,KAAK,EAAK;EAChB,IAAA,OAAOwH,UAAU,IAAIxH,KAAK,YAAYwH,UAAU,CAAA;KACjD,CAAA;EACH,CAAC,CAAE,OAAOC,UAAU,KAAK,WAAW,IAAI/H,cAAc,CAAC+H,UAAU,CAAC,CAAC,CAAA;;EAEnE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAItD,GAAG,EAAElF,EAAE,EAAK;EAChC,EAAA,IAAMyI,SAAS,GAAGvD,GAAG,IAAIA,GAAG,CAACzE,QAAQ,CAAC,CAAA;EAEtC,EAAA,IAAMiI,SAAS,GAAGD,SAAS,CAACzH,IAAI,CAACkE,GAAG,CAAC,CAAA;EAErC,EAAA,IAAIjD,MAAM,CAAA;EAEV,EAAA,OAAO,CAACA,MAAM,GAAGyG,SAAS,CAACC,IAAI,EAAE,KAAK,CAAC1G,MAAM,CAAC2G,IAAI,EAAE;EAClD,IAAA,IAAMC,IAAI,GAAG5G,MAAM,CAACgB,KAAK,CAAA;EACzBjD,IAAAA,EAAE,CAACgB,IAAI,CAACkE,GAAG,EAAE2D,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;EAChC,GAAA;EACF,CAAC,CAAA;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMC,QAAQ,GAAG,SAAXA,QAAQA,CAAIC,MAAM,EAAEhI,GAAG,EAAK;EAChC,EAAA,IAAIiI,OAAO,CAAA;IACX,IAAMZ,GAAG,GAAG,EAAE,CAAA;IAEd,OAAO,CAACY,OAAO,GAAGD,MAAM,CAACE,IAAI,CAAClI,GAAG,CAAC,MAAM,IAAI,EAAE;EAC5CqH,IAAAA,GAAG,CAACc,IAAI,CAACF,OAAO,CAAC,CAAA;EACnB,GAAA;EAEA,EAAA,OAAOZ,GAAG,CAAA;EACZ,CAAC,CAAA;;EAED;EACA,IAAMe,UAAU,GAAG/H,UAAU,CAAC,iBAAiB,CAAC,CAAA;EAEhD,IAAMgI,WAAW,GAAG,SAAdA,WAAWA,CAAIrI,GAAG,EAAK;EAC3B,EAAA,OAAOA,GAAG,CAACG,WAAW,EAAE,CAAC8D,OAAO,CAAC,uBAAuB,EAAE,SAASqE,QAAQA,CAACC,CAAC,EAAEC,EAAE,EAAEC,EAAE,EAAE;EACrF,IAAA,OAAOD,EAAE,CAACE,WAAW,EAAE,GAAGD,EAAE,CAAA;EAC9B,GAAC,CAAC,CAAA;EACJ,CAAC,CAAA;;EAED;EACA,IAAME,cAAc,GAClB,UAAAC,KAAA,EAAA;EAAA,EAAA,IAAGD,cAAc,GAAAC,KAAA,CAAdD,cAAc,CAAA;IAAA,OACjB,UAACxE,GAAG,EAAEyC,IAAI,EAAA;EAAA,IAAA,OACR+B,cAAc,CAAC1I,IAAI,CAACkE,GAAG,EAAEyC,IAAI,CAAC,CAAA;EAAA,GAAA,CAAA;EAAA,CAChCrH,CAAAA,MAAM,CAACC,SAAS,CAAC,CAAA;;EAEnB;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMqJ,QAAQ,GAAGxI,UAAU,CAAC,QAAQ,CAAC,CAAA;EAErC,IAAMyI,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAI3E,GAAG,EAAE4E,OAAO,EAAK;EAC1C,EAAA,IAAM1C,WAAW,GAAG9G,MAAM,CAACyJ,yBAAyB,CAAC7E,GAAG,CAAC,CAAA;IACzD,IAAM8E,kBAAkB,GAAG,EAAE,CAAA;EAE7B/E,EAAAA,OAAO,CAACmC,WAAW,EAAE,UAAC6C,UAAU,EAAEC,IAAI,EAAK;EACzC,IAAA,IAAIC,GAAG,CAAA;EACP,IAAA,IAAI,CAACA,GAAG,GAAGL,OAAO,CAACG,UAAU,EAAEC,IAAI,EAAEhF,GAAG,CAAC,MAAM,KAAK,EAAE;EACpD8E,MAAAA,kBAAkB,CAACE,IAAI,CAAC,GAAGC,GAAG,IAAIF,UAAU,CAAA;EAC9C,KAAA;EACF,GAAC,CAAC,CAAA;EAEF3J,EAAAA,MAAM,CAAC8J,gBAAgB,CAAClF,GAAG,EAAE8E,kBAAkB,CAAC,CAAA;EAClD,CAAC,CAAA;;EAED;EACA;EACA;EACA;;EAEA,IAAMK,aAAa,GAAG,SAAhBA,aAAaA,CAAInF,GAAG,EAAK;EAC7B2E,EAAAA,iBAAiB,CAAC3E,GAAG,EAAE,UAAC+E,UAAU,EAAEC,IAAI,EAAK;EAC3C;MACA,IAAIpI,YAAU,CAACoD,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAACgD,OAAO,CAACgC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;EAC7E,MAAA,OAAO,KAAK,CAAA;EACd,KAAA;EAEA,IAAA,IAAMjH,KAAK,GAAGiC,GAAG,CAACgF,IAAI,CAAC,CAAA;EAEvB,IAAA,IAAI,CAACpI,YAAU,CAACmB,KAAK,CAAC,EAAE,OAAA;MAExBgH,UAAU,CAACrD,UAAU,GAAG,KAAK,CAAA;MAE7B,IAAI,UAAU,IAAIqD,UAAU,EAAE;QAC5BA,UAAU,CAACtD,QAAQ,GAAG,KAAK,CAAA;EAC3B,MAAA,OAAA;EACF,KAAA;EAEA,IAAA,IAAI,CAACsD,UAAU,CAACK,GAAG,EAAE;QACnBL,UAAU,CAACK,GAAG,GAAG,YAAM;EACrB,QAAA,MAAMC,KAAK,CAAC,oCAAoC,GAAGL,IAAI,GAAG,GAAG,CAAC,CAAA;SAC/D,CAAA;EACH,KAAA;EACF,GAAC,CAAC,CAAA;EACJ,CAAC,CAAA;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMM,WAAW,GAAG,SAAdA,WAAWA,CAAIC,aAAa,EAAEC,SAAS,EAAK;IAChD,IAAMxF,GAAG,GAAG,EAAE,CAAA;EAEd,EAAA,IAAMyF,MAAM,GAAG,SAATA,MAAMA,CAAIvC,GAAG,EAAK;EACtBA,IAAAA,GAAG,CAACnD,OAAO,CAAC,UAAChC,KAAK,EAAK;EACrBiC,MAAAA,GAAG,CAACjC,KAAK,CAAC,GAAG,IAAI,CAAA;EACnB,KAAC,CAAC,CAAA;KACH,CAAA;IAEDzB,OAAO,CAACiJ,aAAa,CAAC,GAAGE,MAAM,CAACF,aAAa,CAAC,GAAGE,MAAM,CAAC3C,MAAM,CAACyC,aAAa,CAAC,CAACG,KAAK,CAACF,SAAS,CAAC,CAAC,CAAA;EAE/F,EAAA,OAAOxF,GAAG,CAAA;EACZ,CAAC,CAAA;EAED,IAAM2F,IAAI,GAAG,SAAPA,IAAIA,GAAS,EAAE,CAAA;EAErB,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAI7H,KAAK,EAAE8H,YAAY,EAAK;EAC9C,EAAA,OAAO9H,KAAK,IAAI,IAAI,IAAI+H,MAAM,CAACC,QAAQ,CAAEhI,KAAK,GAAG,CAACA,KAAM,CAAC,GAAGA,KAAK,GAAG8H,YAAY,CAAA;EAClF,CAAC,CAAA;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASG,mBAAmBA,CAACpK,KAAK,EAAE;IAClC,OAAO,CAAC,EACNA,KAAK,IACLgB,YAAU,CAAChB,KAAK,CAACuD,MAAM,CAAC,IACxBvD,KAAK,CAACH,WAAW,CAAC,KAAK,UAAU,IACjCG,KAAK,CAACL,QAAQ,CAAC,CAChB,CAAA;EACH,CAAA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA,IAAM0K,YAAY,GAAG,SAAfA,YAAYA,CAAIjG,GAAG,EAAK;EAC5B,EAAA,IAAMkG,KAAK,GAAG,IAAI3J,KAAK,CAAC,EAAE,CAAC,CAAA;IAE3B,IAAM4J,MAAK,GAAG,SAARA,KAAKA,CAAIC,MAAM,EAAEhG,CAAC,EAAK;EAC3B,IAAA,IAAI/C,QAAQ,CAAC+I,MAAM,CAAC,EAAE;QACpB,IAAIF,KAAK,CAAClD,OAAO,CAACoD,MAAM,CAAC,IAAI,CAAC,EAAE;EAC9B,QAAA,OAAA;EACF,OAAA;;EAEA;EACA,MAAA,IAAI3J,QAAQ,CAAC2J,MAAM,CAAC,EAAE;EACpB,QAAA,OAAOA,MAAM,CAAA;EACf,OAAA;EAEA,MAAA,IAAI,EAAE,QAAQ,IAAIA,MAAM,CAAC,EAAE;EACzBF,QAAAA,KAAK,CAAC9F,CAAC,CAAC,GAAGgG,MAAM,CAAA;UACjB,IAAMC,MAAM,GAAG/J,OAAO,CAAC8J,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAA;EAExCrG,QAAAA,OAAO,CAACqG,MAAM,EAAE,UAACrI,KAAK,EAAEyC,GAAG,EAAK;YAC9B,IAAM8F,YAAY,GAAGH,MAAK,CAACpI,KAAK,EAAEqC,CAAC,GAAG,CAAC,CAAC,CAAA;YACxC,CAAC5D,WAAW,CAAC8J,YAAY,CAAC,KAAKD,MAAM,CAAC7F,GAAG,CAAC,GAAG8F,YAAY,CAAC,CAAA;EAC5D,SAAC,CAAC,CAAA;EAEFJ,QAAAA,KAAK,CAAC9F,CAAC,CAAC,GAAGpB,SAAS,CAAA;EAEpB,QAAA,OAAOqH,MAAM,CAAA;EACf,OAAA;EACF,KAAA;EAEA,IAAA,OAAOD,MAAM,CAAA;KACd,CAAA;EAED,EAAA,OAAOD,MAAK,CAACnG,GAAG,EAAE,CAAC,CAAC,CAAA;EACtB,CAAC,CAAA;;EAED;EACA;EACA;EACA;EACA;EACA;EACA,IAAMuG,SAAS,GAAGrK,UAAU,CAAC,eAAe,CAAC,CAAA;;EAE7C;EACA;EACA;EACA;EACA;EACA;EACA,IAAMsK,UAAU,GAAG,SAAbA,UAAUA,CAAI5K,KAAK,EAAA;IAAA,OACvBA,KAAK,KACJyB,QAAQ,CAACzB,KAAK,CAAC,IAAIgB,YAAU,CAAChB,KAAK,CAAC,CAAC,IACtCgB,YAAU,CAAChB,KAAK,CAAC6K,IAAI,CAAC,IACtB7J,YAAU,CAAChB,KAAK,CAAA,OAAA,CAAM,CAAC,CAAA;EAAA,CAAA,CAAA;;EAEzB;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAM8K,aAAa,GAAI,UAACC,qBAAqB,EAAEC,oBAAoB,EAAK;EACtE,EAAA,IAAID,qBAAqB,EAAE;EACzB,IAAA,OAAOE,YAAY,CAAA;EACrB,GAAA;EAEA,EAAA,OAAOD,oBAAoB,GACtB,UAACE,KAAK,EAAEC,SAAS,EAAK;EACrBpG,IAAAA,OAAO,CAACqG,gBAAgB,CACtB,SAAS,EACT,UAAAC,KAAA,EAAsB;EAAA,MAAA,IAAnBb,MAAM,GAAAa,KAAA,CAANb,MAAM;UAAEc,IAAI,GAAAD,KAAA,CAAJC,IAAI,CAAA;EACb,MAAA,IAAId,MAAM,KAAKzF,OAAO,IAAIuG,IAAI,KAAKJ,KAAK,EAAE;UACxCC,SAAS,CAACrJ,MAAM,IAAIqJ,SAAS,CAACI,KAAK,EAAE,EAAE,CAAA;EACzC,OAAA;OACD,EACD,KACF,CAAC,CAAA;MAED,OAAO,UAACC,EAAE,EAAK;EACbL,MAAAA,SAAS,CAAC/C,IAAI,CAACoD,EAAE,CAAC,CAAA;EAClBzG,MAAAA,OAAO,CAAC0G,WAAW,CAACP,KAAK,EAAE,GAAG,CAAC,CAAA;OAChC,CAAA;EACH,GAAC,CAAAQ,QAAAA,CAAAA,MAAA,CAAWC,IAAI,CAACC,MAAM,EAAE,CAAI,EAAA,EAAE,CAAC,GAChC,UAACJ,EAAE,EAAA;MAAA,OAAKK,UAAU,CAACL,EAAE,CAAC,CAAA;EAAA,GAAA,CAAA;EAC5B,CAAC,CAAE,OAAOP,YAAY,KAAK,UAAU,EAAEjK,YAAU,CAAC+D,OAAO,CAAC0G,WAAW,CAAC,CAAC,CAAA;;EAEvE;EACA;EACA;EACA;EACA;EACA;EACA,IAAMK,IAAI,GACR,OAAOC,cAAc,KAAK,WAAW,GACjCA,cAAc,CAAC9M,IAAI,CAAC8F,OAAO,CAAC,GAC3B,OAAOiH,OAAO,KAAK,WAAW,IAAIA,OAAO,CAACC,QAAQ,IAAKnB,aAAa,CAAA;;EAE3E;;EAEA,IAAMoB,UAAU,GAAG,SAAbA,UAAUA,CAAIlM,KAAK,EAAA;IAAA,OAAKA,KAAK,IAAI,IAAI,IAAIgB,YAAU,CAAChB,KAAK,CAACL,QAAQ,CAAC,CAAC,CAAA;EAAA,CAAA,CAAA;AAE1E,gBAAe;EACbe,EAAAA,OAAO,EAAPA,OAAO;EACPO,EAAAA,aAAa,EAAbA,aAAa;EACbJ,EAAAA,QAAQ,EAARA,QAAQ;EACRwC,EAAAA,UAAU,EAAVA,UAAU;EACVnC,EAAAA,iBAAiB,EAAjBA,iBAAiB;EACjBK,EAAAA,QAAQ,EAARA,QAAQ;EACRC,EAAAA,QAAQ,EAARA,QAAQ;EACRE,EAAAA,SAAS,EAATA,SAAS;EACTD,EAAAA,QAAQ,EAARA,QAAQ;EACRE,EAAAA,aAAa,EAAbA,aAAa;EACbC,EAAAA,aAAa,EAAbA,aAAa;EACbiC,EAAAA,gBAAgB,EAAhBA,gBAAgB;EAChBC,EAAAA,SAAS,EAATA,SAAS;EACTC,EAAAA,UAAU,EAAVA,UAAU;EACVC,EAAAA,SAAS,EAATA,SAAS;EACTpD,EAAAA,WAAW,EAAXA,WAAW;EACXoB,EAAAA,MAAM,EAANA,MAAM;EACNC,EAAAA,MAAM,EAANA,MAAM;EACNC,EAAAA,iBAAiB,EAAjBA,iBAAiB;EACjBG,EAAAA,aAAa,EAAbA,aAAa;EACbG,EAAAA,MAAM,EAANA,MAAM;EACNsG,EAAAA,QAAQ,EAARA,QAAQ;EACR9H,EAAAA,UAAU,EAAVA,YAAU;EACV0B,EAAAA,QAAQ,EAARA,QAAQ;EACRc,EAAAA,iBAAiB,EAAjBA,iBAAiB;EACjB+D,EAAAA,YAAY,EAAZA,YAAY;EACZ9E,EAAAA,UAAU,EAAVA,UAAU;EACV0B,EAAAA,OAAO,EAAPA,OAAO;EACPe,EAAAA,KAAK,EAALA,KAAK;EACLM,EAAAA,MAAM,EAANA,MAAM;EACNvB,EAAAA,IAAI,EAAJA,IAAI;EACJ+B,EAAAA,QAAQ,EAARA,QAAQ;EACRG,EAAAA,QAAQ,EAARA,QAAQ;EACRK,EAAAA,YAAY,EAAZA,YAAY;EACZ1G,EAAAA,MAAM,EAANA,MAAM;EACNQ,EAAAA,UAAU,EAAVA,UAAU;EACVyG,EAAAA,QAAQ,EAARA,QAAQ;EACRM,EAAAA,OAAO,EAAPA,OAAO;EACPK,EAAAA,YAAY,EAAZA,YAAY;EACZM,EAAAA,QAAQ,EAARA,QAAQ;EACRK,EAAAA,UAAU,EAAVA,UAAU;EACVO,EAAAA,cAAc,EAAdA,cAAc;EACduD,EAAAA,UAAU,EAAEvD,cAAc;EAAE;EAC5BG,EAAAA,iBAAiB,EAAjBA,iBAAiB;EACjBQ,EAAAA,aAAa,EAAbA,aAAa;EACbG,EAAAA,WAAW,EAAXA,WAAW;EACXpB,EAAAA,WAAW,EAAXA,WAAW;EACXyB,EAAAA,IAAI,EAAJA,IAAI;EACJC,EAAAA,cAAc,EAAdA,cAAc;EACdnF,EAAAA,OAAO,EAAPA,OAAO;EACP7B,EAAAA,MAAM,EAAE+B,OAAO;EACfC,EAAAA,gBAAgB,EAAhBA,gBAAgB;EAChBoF,EAAAA,mBAAmB,EAAnBA,mBAAmB;EACnBC,EAAAA,YAAY,EAAZA,YAAY;EACZM,EAAAA,SAAS,EAATA,SAAS;EACTC,EAAAA,UAAU,EAAVA,UAAU;EACVK,EAAAA,YAAY,EAAEH,aAAa;EAC3BgB,EAAAA,IAAI,EAAJA,IAAI;EACJI,EAAAA,UAAU,EAAVA,UAAAA;EACF,CAAC;;ECp5B+B,IAE1BE,UAAU,0BAAAC,MAAA,EAAA;EAeZ;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IACI,SAAAD,UAAAA,CAAYE,OAAO,EAAEC,IAAI,EAAEC,MAAM,EAAEC,OAAO,EAAEC,QAAQ,EAAE;EAAA,IAAA,IAAAC,KAAA,CAAA;EAAAC,IAAAA,eAAA,OAAAR,UAAA,CAAA,CAAA;EACpDO,IAAAA,KAAA,GAAAE,UAAA,CAAAT,IAAAA,EAAAA,UAAA,GAAME,OAAO,CAAA,CAAA,CAAA;;EAEb;EACA;EACA;EACA9M,IAAAA,MAAM,CAACoG,cAAc,CAAA+G,KAAA,EAAO,SAAS,EAAE;EACnCxK,MAAAA,KAAK,EAAEmK,OAAO;EACdxG,MAAAA,UAAU,EAAE,IAAI;EAChBD,MAAAA,QAAQ,EAAE,IAAI;EACdE,MAAAA,YAAY,EAAE,IAAA;EAClB,KAAC,CAAC,CAAA;MAEF4G,KAAA,CAAKvD,IAAI,GAAG,YAAY,CAAA;MACxBuD,KAAA,CAAKG,YAAY,GAAG,IAAI,CAAA;EACxBP,IAAAA,IAAI,KAAKI,KAAA,CAAKJ,IAAI,GAAGA,IAAI,CAAC,CAAA;EAC1BC,IAAAA,MAAM,KAAKG,KAAA,CAAKH,MAAM,GAAGA,MAAM,CAAC,CAAA;EAChCC,IAAAA,OAAO,KAAKE,KAAA,CAAKF,OAAO,GAAGA,OAAO,CAAC,CAAA;EACnC,IAAA,IAAIC,QAAQ,EAAE;QACVC,KAAA,CAAKD,QAAQ,GAAGA,QAAQ,CAAA;EACxBC,MAAAA,KAAA,CAAKI,MAAM,GAAGL,QAAQ,CAACK,MAAM,CAAA;EACjC,KAAA;EAAC,IAAA,OAAAJ,KAAA,CAAA;EACH,GAAA;IAACK,SAAA,CAAAZ,UAAA,EAAAC,MAAA,CAAA,CAAA;IAAA,OAAAY,YAAA,CAAAb,UAAA,EAAA,CAAA;MAAAxH,GAAA,EAAA,QAAA;EAAAzC,IAAAA,KAAA,EAEH,SAAA+K,MAAMA,GAAG;QACP,OAAO;EACL;UACAZ,OAAO,EAAE,IAAI,CAACA,OAAO;UACrBlD,IAAI,EAAE,IAAI,CAACA,IAAI;EACf;UACA+D,WAAW,EAAE,IAAI,CAACA,WAAW;UAC7BC,MAAM,EAAE,IAAI,CAACA,MAAM;EACnB;UACAC,QAAQ,EAAE,IAAI,CAACA,QAAQ;UACvBC,UAAU,EAAE,IAAI,CAACA,UAAU;UAC3BC,YAAY,EAAE,IAAI,CAACA,YAAY;UAC/BjD,KAAK,EAAE,IAAI,CAACA,KAAK;EACjB;UACAkC,MAAM,EAAEgB,OAAK,CAACnD,YAAY,CAAC,IAAI,CAACmC,MAAM,CAAC;UACvCD,IAAI,EAAE,IAAI,CAACA,IAAI;UACfQ,MAAM,EAAE,IAAI,CAACA,MAAAA;SACd,CAAA;EACH,KAAA;EAAC,GAAA,CAAA,EAAA,CAAA;MAAAnI,GAAA,EAAA,MAAA;EAAAzC,IAAAA,KAAA,EAnED,SAAOsL,IAAIA,CAACC,KAAK,EAAEnB,IAAI,EAAEC,MAAM,EAAEC,OAAO,EAAEC,QAAQ,EAAEiB,WAAW,EAAE;QAC/D,IAAMC,UAAU,GAAG,IAAIxB,UAAU,CAACsB,KAAK,CAACpB,OAAO,EAAEC,IAAI,IAAImB,KAAK,CAACnB,IAAI,EAAEC,MAAM,EAAEC,OAAO,EAAEC,QAAQ,CAAC,CAAA;QAC/FkB,UAAU,CAACC,KAAK,GAAGH,KAAK,CAAA;EACxBE,MAAAA,UAAU,CAACxE,IAAI,GAAGsE,KAAK,CAACtE,IAAI,CAAA;;EAE5B;QACA,IAAIsE,KAAK,CAACX,MAAM,IAAI,IAAI,IAAIa,UAAU,CAACb,MAAM,IAAI,IAAI,EAAE;EACrDa,QAAAA,UAAU,CAACb,MAAM,GAAGW,KAAK,CAACX,MAAM,CAAA;EAClC,OAAA;QAEAY,WAAW,IAAInO,MAAM,CAAC+G,MAAM,CAACqH,UAAU,EAAED,WAAW,CAAC,CAAA;EACrD,MAAA,OAAOC,UAAU,CAAA;EACnB,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,CAAAE,cAAAA,gBAAA,CAbsBrE,KAAK,CAuE9B,CAAA,CAAA;EACA2C,UAAU,CAAC2B,oBAAoB,GAAG,sBAAsB,CAAA;EACxD3B,UAAU,CAAC4B,cAAc,GAAG,gBAAgB,CAAA;EAC5C5B,UAAU,CAAC6B,YAAY,GAAG,cAAc,CAAA;EACxC7B,UAAU,CAAC8B,SAAS,GAAG,WAAW,CAAA;EAClC9B,UAAU,CAAC+B,WAAW,GAAG,aAAa,CAAA;EACtC/B,UAAU,CAACgC,yBAAyB,GAAG,2BAA2B,CAAA;EAClEhC,UAAU,CAACiC,cAAc,GAAG,gBAAgB,CAAA;EAC5CjC,UAAU,CAACkC,gBAAgB,GAAG,kBAAkB,CAAA;EAChDlC,UAAU,CAACmC,eAAe,GAAG,iBAAiB,CAAA;EAC9CnC,UAAU,CAACoC,YAAY,GAAG,cAAc,CAAA;EACxCpC,UAAU,CAACqC,eAAe,GAAG,iBAAiB,CAAA;EAC9CrC,UAAU,CAACsC,eAAe,GAAG,iBAAiB,CAAA;AAE9C,qBAAetC,UAAU;;ECzFzB;AACA,oBAAe,IAAI;;ECMnB;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASuC,WAAWA,CAAC3O,KAAK,EAAE;EAC1B,EAAA,OAAOwN,OAAK,CAAC7L,aAAa,CAAC3B,KAAK,CAAC,IAAIwN,OAAK,CAAC9M,OAAO,CAACV,KAAK,CAAC,CAAA;EAC3D,CAAA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS4O,cAAcA,CAAChK,GAAG,EAAE;EAC3B,EAAA,OAAO4I,OAAK,CAACzG,QAAQ,CAACnC,GAAG,EAAE,IAAI,CAAC,GAAGA,GAAG,CAACzE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAGyE,GAAG,CAAA;EAC3D,CAAA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASiK,SAASA,CAACC,IAAI,EAAElK,GAAG,EAAEmK,IAAI,EAAE;EAClC,EAAA,IAAI,CAACD,IAAI,EAAE,OAAOlK,GAAG,CAAA;EACrB,EAAA,OAAOkK,IAAI,CACRpD,MAAM,CAAC9G,GAAG,CAAC,CACXlB,GAAG,CAAC,SAASsL,IAAIA,CAAC9D,KAAK,EAAE1G,CAAC,EAAE;EAC3B;EACA0G,IAAAA,KAAK,GAAG0D,cAAc,CAAC1D,KAAK,CAAC,CAAA;MAC7B,OAAO,CAAC6D,IAAI,IAAIvK,CAAC,GAAG,GAAG,GAAG0G,KAAK,GAAG,GAAG,GAAGA,KAAK,CAAA;KAC9C,CAAC,CACD+D,IAAI,CAACF,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,CAAA;EAC1B,CAAA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASG,WAAWA,CAAC5H,GAAG,EAAE;EACxB,EAAA,OAAOkG,OAAK,CAAC9M,OAAO,CAAC4G,GAAG,CAAC,IAAI,CAACA,GAAG,CAAC6H,IAAI,CAACR,WAAW,CAAC,CAAA;EACrD,CAAA;EAEA,IAAMS,UAAU,GAAG5B,OAAK,CAAChH,YAAY,CAACgH,OAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS7G,MAAMA,CAACE,IAAI,EAAE;EAC3E,EAAA,OAAO,UAAU,CAACwI,IAAI,CAACxI,IAAI,CAAC,CAAA;EAC9B,CAAC,CAAC,CAAA;;EAEF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASyI,UAAUA,CAAClL,GAAG,EAAE9B,QAAQ,EAAEiN,OAAO,EAAE;EAC1C,EAAA,IAAI,CAAC/B,OAAK,CAAC/L,QAAQ,CAAC2C,GAAG,CAAC,EAAE;EACxB,IAAA,MAAM,IAAIoL,SAAS,CAAC,0BAA0B,CAAC,CAAA;EACjD,GAAA;;EAEA;IACAlN,QAAQ,GAAGA,QAAQ,IAAI,KAAyBa,QAAQ,GAAG,CAAA;;EAE3D;EACAoM,EAAAA,OAAO,GAAG/B,OAAK,CAAChH,YAAY,CAC1B+I,OAAO,EACP;EACEE,IAAAA,UAAU,EAAE,IAAI;EAChBV,IAAAA,IAAI,EAAE,KAAK;EACXW,IAAAA,OAAO,EAAE,KAAA;KACV,EACD,KAAK,EACL,SAASC,OAAOA,CAACC,MAAM,EAAEpF,MAAM,EAAE;EAC/B;MACA,OAAO,CAACgD,OAAK,CAAC5M,WAAW,CAAC4J,MAAM,CAACoF,MAAM,CAAC,CAAC,CAAA;EAC3C,GACF,CAAC,CAAA;EAED,EAAA,IAAMH,UAAU,GAAGF,OAAO,CAACE,UAAU,CAAA;EACrC;EACA,EAAA,IAAMI,OAAO,GAAGN,OAAO,CAACM,OAAO,IAAIC,cAAc,CAAA;EACjD,EAAA,IAAMf,IAAI,GAAGQ,OAAO,CAACR,IAAI,CAAA;EACzB,EAAA,IAAMW,OAAO,GAAGH,OAAO,CAACG,OAAO,CAAA;IAC/B,IAAMK,KAAK,GAAGR,OAAO,CAACS,IAAI,IAAK,OAAOA,IAAI,KAAK,WAAW,IAAIA,IAAK,CAAA;IACnE,IAAMC,OAAO,GAAGF,KAAK,IAAIvC,OAAK,CAACpD,mBAAmB,CAAC9H,QAAQ,CAAC,CAAA;EAE5D,EAAA,IAAI,CAACkL,OAAK,CAACxM,UAAU,CAAC6O,OAAO,CAAC,EAAE;EAC9B,IAAA,MAAM,IAAIL,SAAS,CAAC,4BAA4B,CAAC,CAAA;EACnD,GAAA;IAEA,SAASU,YAAYA,CAAC/N,KAAK,EAAE;EAC3B,IAAA,IAAIA,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE,CAAA;EAE7B,IAAA,IAAIqL,OAAK,CAACxL,MAAM,CAACG,KAAK,CAAC,EAAE;EACvB,MAAA,OAAOA,KAAK,CAACgO,WAAW,EAAE,CAAA;EAC5B,KAAA;EAEA,IAAA,IAAI3C,OAAK,CAAC9L,SAAS,CAACS,KAAK,CAAC,EAAE;EAC1B,MAAA,OAAOA,KAAK,CAAC5C,QAAQ,EAAE,CAAA;EACzB,KAAA;MAEA,IAAI,CAAC0Q,OAAO,IAAIzC,OAAK,CAAChL,MAAM,CAACL,KAAK,CAAC,EAAE;EACnC,MAAA,MAAM,IAAIiK,YAAU,CAAC,8CAA8C,CAAC,CAAA;EACtE,KAAA;EAEA,IAAA,IAAIoB,OAAK,CAACvM,aAAa,CAACkB,KAAK,CAAC,IAAIqL,OAAK,CAACjG,YAAY,CAACpF,KAAK,CAAC,EAAE;QAC3D,OAAO8N,OAAO,IAAI,OAAOD,IAAI,KAAK,UAAU,GAAG,IAAIA,IAAI,CAAC,CAAC7N,KAAK,CAAC,CAAC,GAAGiO,MAAM,CAAC3C,IAAI,CAACtL,KAAK,CAAC,CAAA;EACvF,KAAA;EAEA,IAAA,OAAOA,KAAK,CAAA;EACd,GAAA;;EAEA;EACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACE,EAAA,SAAS2N,cAAcA,CAAC3N,KAAK,EAAEyC,GAAG,EAAEkK,IAAI,EAAE;MACxC,IAAIxH,GAAG,GAAGnF,KAAK,CAAA;EAEf,IAAA,IAAIqL,OAAK,CAACnL,aAAa,CAACC,QAAQ,CAAC,IAAIkL,OAAK,CAACtL,iBAAiB,CAACC,KAAK,CAAC,EAAE;EACnEG,MAAAA,QAAQ,CAACiB,MAAM,CAACsL,SAAS,CAACC,IAAI,EAAElK,GAAG,EAAEmK,IAAI,CAAC,EAAEmB,YAAY,CAAC/N,KAAK,CAAC,CAAC,CAAA;EAChE,MAAA,OAAO,KAAK,CAAA;EACd,KAAA;MAEA,IAAIA,KAAK,IAAI,CAAC2M,IAAI,IAAIrO,OAAA,CAAO0B,KAAK,CAAK,KAAA,QAAQ,EAAE;QAC/C,IAAIqL,OAAK,CAACzG,QAAQ,CAACnC,GAAG,EAAE,IAAI,CAAC,EAAE;EAC7B;EACAA,QAAAA,GAAG,GAAG6K,UAAU,GAAG7K,GAAG,GAAGA,GAAG,CAACzE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;EACzC;EACAgC,QAAAA,KAAK,GAAGkO,IAAI,CAACC,SAAS,CAACnO,KAAK,CAAC,CAAA;EAC/B,OAAC,MAAM,IACJqL,OAAK,CAAC9M,OAAO,CAACyB,KAAK,CAAC,IAAI+M,WAAW,CAAC/M,KAAK,CAAC,IAC1C,CAACqL,OAAK,CAAC/K,UAAU,CAACN,KAAK,CAAC,IAAIqL,OAAK,CAACzG,QAAQ,CAACnC,GAAG,EAAE,IAAI,CAAC,MAAM0C,GAAG,GAAGkG,OAAK,CAACnG,OAAO,CAAClF,KAAK,CAAC,CAAE,EACxF;EACA;EACAyC,QAAAA,GAAG,GAAGgK,cAAc,CAAChK,GAAG,CAAC,CAAA;UAEzB0C,GAAG,CAACnD,OAAO,CAAC,SAAS6K,IAAIA,CAACuB,EAAE,EAAEC,KAAK,EAAE;EACnC,UAAA,EAAEhD,OAAK,CAAC5M,WAAW,CAAC2P,EAAE,CAAC,IAAIA,EAAE,KAAK,IAAI,CAAC,IACrCjO,QAAQ,CAACiB,MAAM;EACb;EACAmM,UAAAA,OAAO,KAAK,IAAI,GACZb,SAAS,CAAC,CAACjK,GAAG,CAAC,EAAE4L,KAAK,EAAEzB,IAAI,CAAC,GAC7BW,OAAO,KAAK,IAAI,GACd9K,GAAG,GACHA,GAAG,GAAG,IAAI,EAChBsL,YAAY,CAACK,EAAE,CACjB,CAAC,CAAA;EACL,SAAC,CAAC,CAAA;EACF,QAAA,OAAO,KAAK,CAAA;EACd,OAAA;EACF,KAAA;EAEA,IAAA,IAAI5B,WAAW,CAACxM,KAAK,CAAC,EAAE;EACtB,MAAA,OAAO,IAAI,CAAA;EACb,KAAA;EAEAG,IAAAA,QAAQ,CAACiB,MAAM,CAACsL,SAAS,CAACC,IAAI,EAAElK,GAAG,EAAEmK,IAAI,CAAC,EAAEmB,YAAY,CAAC/N,KAAK,CAAC,CAAC,CAAA;EAEhE,IAAA,OAAO,KAAK,CAAA;EACd,GAAA;IAEA,IAAMmI,KAAK,GAAG,EAAE,CAAA;EAEhB,EAAA,IAAMmG,cAAc,GAAGjR,MAAM,CAAC+G,MAAM,CAAC6I,UAAU,EAAE;EAC/CU,IAAAA,cAAc,EAAdA,cAAc;EACdI,IAAAA,YAAY,EAAZA,YAAY;EACZvB,IAAAA,WAAW,EAAXA,WAAAA;EACF,GAAC,CAAC,CAAA;EAEF,EAAA,SAAS+B,KAAKA,CAACvO,KAAK,EAAE2M,IAAI,EAAE;EAC1B,IAAA,IAAItB,OAAK,CAAC5M,WAAW,CAACuB,KAAK,CAAC,EAAE,OAAA;MAE9B,IAAImI,KAAK,CAAClD,OAAO,CAACjF,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;QAC/B,MAAMsH,KAAK,CAAC,iCAAiC,GAAGqF,IAAI,CAACG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;EACjE,KAAA;EAEA3E,IAAAA,KAAK,CAAClC,IAAI,CAACjG,KAAK,CAAC,CAAA;MAEjBqL,OAAK,CAACrJ,OAAO,CAAChC,KAAK,EAAE,SAAS6M,IAAIA,CAACuB,EAAE,EAAE3L,GAAG,EAAE;EAC1C,MAAA,IAAMzD,MAAM,GACV,EAAEqM,OAAK,CAAC5M,WAAW,CAAC2P,EAAE,CAAC,IAAIA,EAAE,KAAK,IAAI,CAAC,IACvCV,OAAO,CAAC3P,IAAI,CAACoC,QAAQ,EAAEiO,EAAE,EAAE/C,OAAK,CAACjM,QAAQ,CAACqD,GAAG,CAAC,GAAGA,GAAG,CAACX,IAAI,EAAE,GAAGW,GAAG,EAAEkK,IAAI,EAAE2B,cAAc,CAAC,CAAA;QAE1F,IAAItP,MAAM,KAAK,IAAI,EAAE;EACnBuP,QAAAA,KAAK,CAACH,EAAE,EAAEzB,IAAI,GAAGA,IAAI,CAACpD,MAAM,CAAC9G,GAAG,CAAC,GAAG,CAACA,GAAG,CAAC,CAAC,CAAA;EAC5C,OAAA;EACF,KAAC,CAAC,CAAA;MAEF0F,KAAK,CAACqG,GAAG,EAAE,CAAA;EACb,GAAA;EAEA,EAAA,IAAI,CAACnD,OAAK,CAAC/L,QAAQ,CAAC2C,GAAG,CAAC,EAAE;EACxB,IAAA,MAAM,IAAIoL,SAAS,CAAC,wBAAwB,CAAC,CAAA;EAC/C,GAAA;IAEAkB,KAAK,CAACtM,GAAG,CAAC,CAAA;EAEV,EAAA,OAAO9B,QAAQ,CAAA;EACjB;;EC1OA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASsO,QAAMA,CAAC3Q,GAAG,EAAE;EACnB,EAAA,IAAM4Q,OAAO,GAAG;EACd,IAAA,GAAG,EAAE,KAAK;EACV,IAAA,GAAG,EAAE,KAAK;EACV,IAAA,GAAG,EAAE,KAAK;EACV,IAAA,GAAG,EAAE,KAAK;EACV,IAAA,GAAG,EAAE,KAAK;EACV,IAAA,KAAK,EAAE,GAAG;EACV,IAAA,KAAK,EAAE,MAAA;KACR,CAAA;EACD,EAAA,OAAOC,kBAAkB,CAAC7Q,GAAG,CAAC,CAACiE,OAAO,CAAC,kBAAkB,EAAE,SAASqE,QAAQA,CAACwI,KAAK,EAAE;MAClF,OAAOF,OAAO,CAACE,KAAK,CAAC,CAAA;EACvB,GAAC,CAAC,CAAA;EACJ,CAAA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASC,oBAAoBA,CAACC,MAAM,EAAE1B,OAAO,EAAE;IAC7C,IAAI,CAAC2B,MAAM,GAAG,EAAE,CAAA;IAEhBD,MAAM,IAAI3B,UAAU,CAAC2B,MAAM,EAAE,IAAI,EAAE1B,OAAO,CAAC,CAAA;EAC7C,CAAA;EAEA,IAAM9P,SAAS,GAAGuR,oBAAoB,CAACvR,SAAS,CAAA;EAEhDA,SAAS,CAAC8D,MAAM,GAAG,SAASA,MAAMA,CAAC6F,IAAI,EAAEjH,KAAK,EAAE;IAC9C,IAAI,CAAC+O,MAAM,CAAC9I,IAAI,CAAC,CAACgB,IAAI,EAAEjH,KAAK,CAAC,CAAC,CAAA;EACjC,CAAC,CAAA;EAED1C,SAAS,CAACF,QAAQ,GAAG,SAASA,QAAQA,CAAC4R,OAAO,EAAE;EAC9C,EAAA,IAAMC,OAAO,GAAGD,OAAO,GACnB,UAAUhP,KAAK,EAAE;MACf,OAAOgP,OAAO,CAACjR,IAAI,CAAC,IAAI,EAAEiC,KAAK,EAAEyO,QAAM,CAAC,CAAA;EAC1C,GAAC,GACDA,QAAM,CAAA;IAEV,OAAO,IAAI,CAACM,MAAM,CACfxN,GAAG,CAAC,SAASsL,IAAIA,CAACjH,IAAI,EAAE;EACvB,IAAA,OAAOqJ,OAAO,CAACrJ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGqJ,OAAO,CAACrJ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;EAClD,GAAC,EAAE,EAAE,CAAC,CACLkH,IAAI,CAAC,GAAG,CAAC,CAAA;EACd,CAAC;;ECtDD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS2B,MAAMA,CAAC9P,GAAG,EAAE;EACnB,EAAA,OAAOgQ,kBAAkB,CAAChQ,GAAG,CAAC,CAC3BoD,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CACrBA,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CACpBA,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CACrBA,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;EACzB,CAAA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACe,SAASmN,QAAQA,CAACC,GAAG,EAAEL,MAAM,EAAE1B,OAAO,EAAE;IACrD,IAAI,CAAC0B,MAAM,EAAE;EACX,IAAA,OAAOK,GAAG,CAAA;EACZ,GAAA;IAEA,IAAMF,OAAO,GAAI7B,OAAO,IAAIA,OAAO,CAACqB,MAAM,IAAKA,MAAM,CAAA;IAErD,IAAMW,QAAQ,GAAG/D,OAAK,CAACxM,UAAU,CAACuO,OAAO,CAAC,GACtC;EACEiC,IAAAA,SAAS,EAAEjC,OAAAA;EACb,GAAC,GACDA,OAAO,CAAA;EAEX,EAAA,IAAMkC,WAAW,GAAGF,QAAQ,IAAIA,QAAQ,CAACC,SAAS,CAAA;EAElD,EAAA,IAAIE,gBAAgB,CAAA;EAEpB,EAAA,IAAID,WAAW,EAAE;EACfC,IAAAA,gBAAgB,GAAGD,WAAW,CAACR,MAAM,EAAEM,QAAQ,CAAC,CAAA;EAClD,GAAC,MAAM;MACLG,gBAAgB,GAAGlE,OAAK,CAAChK,iBAAiB,CAACyN,MAAM,CAAC,GAC9CA,MAAM,CAAC1R,QAAQ,EAAE,GACjB,IAAIyR,oBAAoB,CAACC,MAAM,EAAEM,QAAQ,CAAC,CAAChS,QAAQ,CAAC6R,OAAO,CAAC,CAAA;EAClE,GAAA;EAEA,EAAA,IAAIM,gBAAgB,EAAE;EACpB,IAAA,IAAMC,aAAa,GAAGL,GAAG,CAAClK,OAAO,CAAC,GAAG,CAAC,CAAA;EAEtC,IAAA,IAAIuK,aAAa,KAAK,CAAC,CAAC,EAAE;QACxBL,GAAG,GAAGA,GAAG,CAACnR,KAAK,CAAC,CAAC,EAAEwR,aAAa,CAAC,CAAA;EACnC,KAAA;EACAL,IAAAA,GAAG,IAAI,CAACA,GAAG,CAAClK,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,IAAIsK,gBAAgB,CAAA;EACjE,GAAA;EAEA,EAAA,OAAOJ,GAAG,CAAA;EACZ;;EC/DgC,IAE1BM,kBAAkB,gBAAA,YAAA;EACtB,EAAA,SAAAA,qBAAc;EAAAhF,IAAAA,eAAA,OAAAgF,kBAAA,CAAA,CAAA;MACZ,IAAI,CAACC,QAAQ,GAAG,EAAE,CAAA;EACpB,GAAA;;EAEA;EACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IARE,OAAA5E,YAAA,CAAA2E,kBAAA,EAAA,CAAA;MAAAhN,GAAA,EAAA,KAAA;MAAAzC,KAAA,EASA,SAAA2P,GAAGA,CAACC,SAAS,EAAEC,QAAQ,EAAEzC,OAAO,EAAE;EAChC,MAAA,IAAI,CAACsC,QAAQ,CAACzJ,IAAI,CAAC;EACjB2J,QAAAA,SAAS,EAATA,SAAS;EACTC,QAAAA,QAAQ,EAARA,QAAQ;EACRC,QAAAA,WAAW,EAAE1C,OAAO,GAAGA,OAAO,CAAC0C,WAAW,GAAG,KAAK;EAClDC,QAAAA,OAAO,EAAE3C,OAAO,GAAGA,OAAO,CAAC2C,OAAO,GAAG,IAAA;EACvC,OAAC,CAAC,CAAA;EACF,MAAA,OAAO,IAAI,CAACL,QAAQ,CAAC/P,MAAM,GAAG,CAAC,CAAA;EACjC,KAAA;;EAEA;EACF;EACA;EACA;EACA;EACA;EACA;EANE,GAAA,EAAA;MAAA8C,GAAA,EAAA,OAAA;EAAAzC,IAAAA,KAAA,EAOA,SAAAgQ,KAAKA,CAACC,EAAE,EAAE;EACR,MAAA,IAAI,IAAI,CAACP,QAAQ,CAACO,EAAE,CAAC,EAAE;EACrB,QAAA,IAAI,CAACP,QAAQ,CAACO,EAAE,CAAC,GAAG,IAAI,CAAA;EAC1B,OAAA;EACF,KAAA;;EAEA;EACF;EACA;EACA;EACA;EAJE,GAAA,EAAA;MAAAxN,GAAA,EAAA,OAAA;EAAAzC,IAAAA,KAAA,EAKA,SAAAkQ,KAAKA,GAAG;QACN,IAAI,IAAI,CAACR,QAAQ,EAAE;UACjB,IAAI,CAACA,QAAQ,GAAG,EAAE,CAAA;EACpB,OAAA;EACF,KAAA;;EAEA;EACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EATE,GAAA,EAAA;MAAAjN,GAAA,EAAA,SAAA;EAAAzC,IAAAA,KAAA,EAUA,SAAAgC,OAAOA,CAACjF,EAAE,EAAE;QACVsO,OAAK,CAACrJ,OAAO,CAAC,IAAI,CAAC0N,QAAQ,EAAE,SAASS,cAAcA,CAACC,CAAC,EAAE;UACtD,IAAIA,CAAC,KAAK,IAAI,EAAE;YACdrT,EAAE,CAACqT,CAAC,CAAC,CAAA;EACP,SAAA;EACF,OAAC,CAAC,CAAA;EACJ,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,CAAA,EAAA,CAAA;AAGH,6BAAeX,kBAAkB;;ACrEjC,6BAAe;EACbY,EAAAA,iBAAiB,EAAE,IAAI;EACvBC,EAAAA,iBAAiB,EAAE,IAAI;EACvBC,EAAAA,mBAAmB,EAAE,KAAK;EAC1BC,EAAAA,+BAA+B,EAAE,IAAA;EACnC,CAAC;;ACJD,0BAAe,OAAOC,eAAe,KAAK,WAAW,GAAGA,eAAe,GAAG5B,oBAAoB;;ACD9F,mBAAe,OAAO7N,QAAQ,KAAK,WAAW,GAAGA,QAAQ,GAAG,IAAI;;ACAhE,eAAe,OAAO6M,IAAI,KAAK,WAAW,GAAGA,IAAI,GAAG,IAAI;;ACExD,mBAAe;EACb6C,EAAAA,SAAS,EAAE,IAAI;EACfC,EAAAA,OAAO,EAAE;EACPF,IAAAA,eAAe,EAAfA,iBAAe;EACfzP,IAAAA,QAAQ,EAARA,UAAQ;EACR6M,IAAAA,IAAI,EAAJA,MAAAA;KACD;EACD+C,EAAAA,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAA;EAC5D,CAAC;;ECZD,IAAMC,aAAa,GAAG,OAAOjQ,MAAM,KAAK,WAAW,IAAI,OAAOkQ,QAAQ,KAAK,WAAW,CAAA;EAEtF,IAAMC,UAAU,GAAI,CAAOC,OAAAA,SAAS,KAAA1S,WAAAA,GAAAA,WAAAA,GAAAA,OAAA,CAAT0S,SAAS,CAAK,MAAA,QAAQ,IAAIA,SAAS,IAAK/P,SAAS,CAAA;;EAE5E;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMgQ,qBAAqB,GACzBJ,aAAa,KACZ,CAACE,UAAU,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC9L,OAAO,CAAC8L,UAAU,CAACG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;;EAExF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMC,8BAA8B,GAAI,YAAM;IAC5C,OACE,OAAOC,iBAAiB,KAAK,WAAW;EACxC;IACAzQ,IAAI,YAAYyQ,iBAAiB,IACjC,OAAOzQ,IAAI,CAAC0Q,aAAa,KAAK,UAAU,CAAA;EAE5C,CAAC,EAAG,CAAA;EAEJ,IAAMC,MAAM,GAAIT,aAAa,IAAIjQ,MAAM,CAAC2Q,QAAQ,CAACC,IAAI,IAAK,kBAAkB;;;;;;;;;;;ACxC5E,iBAAAC,cAAA,CAAAA,cAAA,CACKpG,EAAAA,EAAAA,KAAK,GACLqG,UAAQ,CAAA;;ECCE,SAASC,gBAAgBA,CAACxI,IAAI,EAAEiE,OAAO,EAAE;EACtD,EAAA,OAAOD,UAAU,CAAChE,IAAI,EAAE,IAAIuI,QAAQ,CAACf,OAAO,CAACF,eAAe,EAAE,EAAAgB,cAAA,CAAA;MAC5D/D,OAAO,EAAE,SAATA,OAAOA,CAAY1N,KAAK,EAAEyC,GAAG,EAAEkK,IAAI,EAAEiF,OAAO,EAAE;QAC5C,IAAIF,QAAQ,CAACG,MAAM,IAAIxG,OAAK,CAAC3M,QAAQ,CAACsB,KAAK,CAAC,EAAE;UAC5C,IAAI,CAACoB,MAAM,CAACqB,GAAG,EAAEzC,KAAK,CAAC5C,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;EAC1C,QAAA,OAAO,KAAK,CAAA;EACd,OAAA;QAEA,OAAOwU,OAAO,CAACjE,cAAc,CAACzQ,KAAK,CAAC,IAAI,EAAEC,SAAS,CAAC,CAAA;EACtD,KAAA;KACGiQ,EAAAA,OAAO,CACX,CAAC,CAAA;EACJ;;ECdA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS0E,aAAaA,CAAC7K,IAAI,EAAE;EAC3B;EACA;EACA;EACA;EACA,EAAA,OAAOoE,OAAK,CAACxF,QAAQ,CAAC,eAAe,EAAEoB,IAAI,CAAC,CAAC1F,GAAG,CAAC,UAACqN,KAAK,EAAK;EAC1D,IAAA,OAAOA,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAGA,KAAK,CAAC,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,CAAA;EACtD,GAAC,CAAC,CAAA;EACJ,CAAA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASmD,aAAaA,CAAC5M,GAAG,EAAE;IAC1B,IAAMlD,GAAG,GAAG,EAAE,CAAA;EACd,EAAA,IAAMvC,IAAI,GAAGrC,MAAM,CAACqC,IAAI,CAACyF,GAAG,CAAC,CAAA;EAC7B,EAAA,IAAI9C,CAAC,CAAA;EACL,EAAA,IAAMG,GAAG,GAAG9C,IAAI,CAACC,MAAM,CAAA;EACvB,EAAA,IAAI8C,GAAG,CAAA;IACP,KAAKJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGG,GAAG,EAAEH,CAAC,EAAE,EAAE;EACxBI,IAAAA,GAAG,GAAG/C,IAAI,CAAC2C,CAAC,CAAC,CAAA;EACbJ,IAAAA,GAAG,CAACQ,GAAG,CAAC,GAAG0C,GAAG,CAAC1C,GAAG,CAAC,CAAA;EACrB,GAAA;EACA,EAAA,OAAOR,GAAG,CAAA;EACZ,CAAA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS+P,cAAcA,CAAC7R,QAAQ,EAAE;IAChC,SAAS8R,SAASA,CAACtF,IAAI,EAAE3M,KAAK,EAAEsI,MAAM,EAAE+F,KAAK,EAAE;EAC7C,IAAA,IAAIpH,IAAI,GAAG0F,IAAI,CAAC0B,KAAK,EAAE,CAAC,CAAA;EAExB,IAAA,IAAIpH,IAAI,KAAK,WAAW,EAAE,OAAO,IAAI,CAAA;MAErC,IAAMiL,YAAY,GAAGnK,MAAM,CAACC,QAAQ,CAAC,CAACf,IAAI,CAAC,CAAA;EAC3C,IAAA,IAAMkL,MAAM,GAAG9D,KAAK,IAAI1B,IAAI,CAAChN,MAAM,CAAA;EACnCsH,IAAAA,IAAI,GAAG,CAACA,IAAI,IAAIoE,OAAK,CAAC9M,OAAO,CAAC+J,MAAM,CAAC,GAAGA,MAAM,CAAC3I,MAAM,GAAGsH,IAAI,CAAA;EAE5D,IAAA,IAAIkL,MAAM,EAAE;QACV,IAAI9G,OAAK,CAACrB,UAAU,CAAC1B,MAAM,EAAErB,IAAI,CAAC,EAAE;UAClCqB,MAAM,CAACrB,IAAI,CAAC,GAAG,CAACqB,MAAM,CAACrB,IAAI,CAAC,EAAEjH,KAAK,CAAC,CAAA;EACtC,OAAC,MAAM;EACLsI,QAAAA,MAAM,CAACrB,IAAI,CAAC,GAAGjH,KAAK,CAAA;EACtB,OAAA;EAEA,MAAA,OAAO,CAACkS,YAAY,CAAA;EACtB,KAAA;EAEA,IAAA,IAAI,CAAC5J,MAAM,CAACrB,IAAI,CAAC,IAAI,CAACoE,OAAK,CAAC/L,QAAQ,CAACgJ,MAAM,CAACrB,IAAI,CAAC,CAAC,EAAE;EAClDqB,MAAAA,MAAM,CAACrB,IAAI,CAAC,GAAG,EAAE,CAAA;EACnB,KAAA;EAEA,IAAA,IAAMjI,MAAM,GAAGiT,SAAS,CAACtF,IAAI,EAAE3M,KAAK,EAAEsI,MAAM,CAACrB,IAAI,CAAC,EAAEoH,KAAK,CAAC,CAAA;MAE1D,IAAIrP,MAAM,IAAIqM,OAAK,CAAC9M,OAAO,CAAC+J,MAAM,CAACrB,IAAI,CAAC,CAAC,EAAE;QACzCqB,MAAM,CAACrB,IAAI,CAAC,GAAG8K,aAAa,CAACzJ,MAAM,CAACrB,IAAI,CAAC,CAAC,CAAA;EAC5C,KAAA;EAEA,IAAA,OAAO,CAACiL,YAAY,CAAA;EACtB,GAAA;EAEA,EAAA,IAAI7G,OAAK,CAACnK,UAAU,CAACf,QAAQ,CAAC,IAAIkL,OAAK,CAACxM,UAAU,CAACsB,QAAQ,CAACiS,OAAO,CAAC,EAAE;MACpE,IAAMnQ,GAAG,GAAG,EAAE,CAAA;MAEdoJ,OAAK,CAAC9F,YAAY,CAACpF,QAAQ,EAAE,UAAC8G,IAAI,EAAEjH,KAAK,EAAK;QAC5CiS,SAAS,CAACH,aAAa,CAAC7K,IAAI,CAAC,EAAEjH,KAAK,EAAEiC,GAAG,EAAE,CAAC,CAAC,CAAA;EAC/C,KAAC,CAAC,CAAA;EAEF,IAAA,OAAOA,GAAG,CAAA;EACZ,GAAA;EAEA,EAAA,OAAO,IAAI,CAAA;EACb;;EClFA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASoQ,eAAeA,CAACC,QAAQ,EAAEC,MAAM,EAAEvD,OAAO,EAAE;EAClD,EAAA,IAAI3D,OAAK,CAACjM,QAAQ,CAACkT,QAAQ,CAAC,EAAE;MAC5B,IAAI;EACF,MAAA,CAACC,MAAM,IAAIrE,IAAI,CAACsE,KAAK,EAAEF,QAAQ,CAAC,CAAA;EAChC,MAAA,OAAOjH,OAAK,CAACvJ,IAAI,CAACwQ,QAAQ,CAAC,CAAA;OAC5B,CAAC,OAAO1S,CAAC,EAAE;EACV,MAAA,IAAIA,CAAC,CAACqH,IAAI,KAAK,aAAa,EAAE;EAC5B,QAAA,MAAMrH,CAAC,CAAA;EACT,OAAA;EACF,KAAA;EACF,GAAA;IAEA,OAAO,CAACoP,OAAO,IAAId,IAAI,CAACC,SAAS,EAAEmE,QAAQ,CAAC,CAAA;EAC9C,CAAA;EAEA,IAAMG,QAAQ,GAAG;EACfC,EAAAA,YAAY,EAAEC,oBAAoB;EAElCC,EAAAA,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;IAEjCC,gBAAgB,EAAE,CAChB,SAASA,gBAAgBA,CAAC1J,IAAI,EAAE2J,OAAO,EAAE;MACvC,IAAMC,WAAW,GAAGD,OAAO,CAACE,cAAc,EAAE,IAAI,EAAE,CAAA;MAClD,IAAMC,kBAAkB,GAAGF,WAAW,CAAC9N,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAA;EACvE,IAAA,IAAMiO,eAAe,GAAG7H,OAAK,CAAC/L,QAAQ,CAAC6J,IAAI,CAAC,CAAA;MAE5C,IAAI+J,eAAe,IAAI7H,OAAK,CAACnF,UAAU,CAACiD,IAAI,CAAC,EAAE;EAC7CA,MAAAA,IAAI,GAAG,IAAInI,QAAQ,CAACmI,IAAI,CAAC,CAAA;EAC3B,KAAA;EAEA,IAAA,IAAMjI,UAAU,GAAGmK,OAAK,CAACnK,UAAU,CAACiI,IAAI,CAAC,CAAA;EAEzC,IAAA,IAAIjI,UAAU,EAAE;EACd,MAAA,OAAO+R,kBAAkB,GAAG/E,IAAI,CAACC,SAAS,CAAC6D,cAAc,CAAC7I,IAAI,CAAC,CAAC,GAAGA,IAAI,CAAA;EACzE,KAAA;EAEA,IAAA,IACEkC,OAAK,CAACvM,aAAa,CAACqK,IAAI,CAAC,IACzBkC,OAAK,CAAC3M,QAAQ,CAACyK,IAAI,CAAC,IACpBkC,OAAK,CAAC9K,QAAQ,CAAC4I,IAAI,CAAC,IACpBkC,OAAK,CAACvL,MAAM,CAACqJ,IAAI,CAAC,IAClBkC,OAAK,CAAChL,MAAM,CAAC8I,IAAI,CAAC,IAClBkC,OAAK,CAAC3J,gBAAgB,CAACyH,IAAI,CAAC,EAC5B;EACA,MAAA,OAAOA,IAAI,CAAA;EACb,KAAA;EACA,IAAA,IAAIkC,OAAK,CAACtM,iBAAiB,CAACoK,IAAI,CAAC,EAAE;QACjC,OAAOA,IAAI,CAAChK,MAAM,CAAA;EACpB,KAAA;EACA,IAAA,IAAIkM,OAAK,CAAChK,iBAAiB,CAAC8H,IAAI,CAAC,EAAE;EACjC2J,MAAAA,OAAO,CAACK,cAAc,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAA;EAChF,MAAA,OAAOhK,IAAI,CAAC/L,QAAQ,EAAE,CAAA;EACxB,KAAA;EAEA,IAAA,IAAIkD,UAAU,CAAA;EAEd,IAAA,IAAI4S,eAAe,EAAE;QACnB,IAAIH,WAAW,CAAC9N,OAAO,CAAC,mCAAmC,CAAC,GAAG,CAAC,CAAC,EAAE;UACjE,OAAO0M,gBAAgB,CAACxI,IAAI,EAAE,IAAI,CAACiK,cAAc,CAAC,CAAChW,QAAQ,EAAE,CAAA;EAC/D,OAAA;EAEA,MAAA,IACE,CAACkD,UAAU,GAAG+K,OAAK,CAAC/K,UAAU,CAAC6I,IAAI,CAAC,KACpC4J,WAAW,CAAC9N,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,EAC/C;UACA,IAAMoO,SAAS,GAAG,IAAI,CAACC,GAAG,IAAI,IAAI,CAACA,GAAG,CAACtS,QAAQ,CAAA;UAE/C,OAAOmM,UAAU,CACf7M,UAAU,GAAG;EAAE,UAAA,SAAS,EAAE6I,IAAAA;EAAK,SAAC,GAAGA,IAAI,EACvCkK,SAAS,IAAI,IAAIA,SAAS,EAAE,EAC5B,IAAI,CAACD,cACP,CAAC,CAAA;EACH,OAAA;EACF,KAAA;MAEA,IAAIF,eAAe,IAAID,kBAAkB,EAAE;EACzCH,MAAAA,OAAO,CAACK,cAAc,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAA;QACjD,OAAOd,eAAe,CAAClJ,IAAI,CAAC,CAAA;EAC9B,KAAA;EAEA,IAAA,OAAOA,IAAI,CAAA;EACb,GAAC,CACF;EAEDoK,EAAAA,iBAAiB,EAAE,CACjB,SAASA,iBAAiBA,CAACpK,IAAI,EAAE;MAC/B,IAAMuJ,YAAY,GAAG,IAAI,CAACA,YAAY,IAAID,QAAQ,CAACC,YAAY,CAAA;EAC/D,IAAA,IAAMpC,iBAAiB,GAAGoC,YAAY,IAAIA,YAAY,CAACpC,iBAAiB,CAAA;EACxE,IAAA,IAAMkD,aAAa,GAAG,IAAI,CAACC,YAAY,KAAK,MAAM,CAAA;EAElD,IAAA,IAAIpI,OAAK,CAACzJ,UAAU,CAACuH,IAAI,CAAC,IAAIkC,OAAK,CAAC3J,gBAAgB,CAACyH,IAAI,CAAC,EAAE;EAC1D,MAAA,OAAOA,IAAI,CAAA;EACb,KAAA;EAEA,IAAA,IACEA,IAAI,IACJkC,OAAK,CAACjM,QAAQ,CAAC+J,IAAI,CAAC,KAClBmH,iBAAiB,IAAI,CAAC,IAAI,CAACmD,YAAY,IAAKD,aAAa,CAAC,EAC5D;EACA,MAAA,IAAMnD,iBAAiB,GAAGqC,YAAY,IAAIA,YAAY,CAACrC,iBAAiB,CAAA;EACxE,MAAA,IAAMqD,iBAAiB,GAAG,CAACrD,iBAAiB,IAAImD,aAAa,CAAA;QAE7D,IAAI;UACF,OAAOtF,IAAI,CAACsE,KAAK,CAACrJ,IAAI,EAAE,IAAI,CAACwK,YAAY,CAAC,CAAA;SAC3C,CAAC,OAAO/T,CAAC,EAAE;EACV,QAAA,IAAI8T,iBAAiB,EAAE;EACrB,UAAA,IAAI9T,CAAC,CAACqH,IAAI,KAAK,aAAa,EAAE;EAC5B,YAAA,MAAMgD,YAAU,CAACqB,IAAI,CAAC1L,CAAC,EAAEqK,YAAU,CAACkC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC5B,QAAQ,CAAC,CAAA;EAClF,WAAA;EACA,UAAA,MAAM3K,CAAC,CAAA;EACT,SAAA;EACF,OAAA;EACF,KAAA;EAEA,IAAA,OAAOuJ,IAAI,CAAA;EACb,GAAC,CACF;EAED;EACF;EACA;EACA;EACEyK,EAAAA,OAAO,EAAE,CAAC;EAEVC,EAAAA,cAAc,EAAE,YAAY;EAC5BC,EAAAA,cAAc,EAAE,cAAc;IAE9BC,gBAAgB,EAAE,CAAC,CAAC;IACpBC,aAAa,EAAE,CAAC,CAAC;EAEjBV,EAAAA,GAAG,EAAE;EACHtS,IAAAA,QAAQ,EAAE0Q,QAAQ,CAACf,OAAO,CAAC3P,QAAQ;EACnC6M,IAAAA,IAAI,EAAE6D,QAAQ,CAACf,OAAO,CAAC9C,IAAAA;KACxB;EAEDoG,EAAAA,cAAc,EAAE,SAASA,cAAcA,CAACrJ,MAAM,EAAE;EAC9C,IAAA,OAAOA,MAAM,IAAI,GAAG,IAAIA,MAAM,GAAG,GAAG,CAAA;KACrC;EAEDkI,EAAAA,OAAO,EAAE;EACPoB,IAAAA,MAAM,EAAE;EACNC,MAAAA,MAAM,EAAE,mCAAmC;EAC3C,MAAA,cAAc,EAAElT,SAAAA;EAClB,KAAA;EACF,GAAA;EACF,CAAC,CAAA;AAEDoK,SAAK,CAACrJ,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,UAACoS,MAAM,EAAK;EAC3E3B,EAAAA,QAAQ,CAACK,OAAO,CAACsB,MAAM,CAAC,GAAG,EAAE,CAAA;EAC/B,CAAC,CAAC,CAAA;AAEF,mBAAe3B,QAAQ;;ECvKvB;EACA;EACA,IAAM4B,iBAAiB,GAAGhJ,OAAK,CAAC9D,WAAW,CAAC,CAC1C,KAAK,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,MAAM,EACN,SAAS,EACT,MAAM,EACN,MAAM,EACN,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EACf,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,SAAS,EACT,aAAa,EACb,YAAY,CACb,CAAC,CAAA;;EAEF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA,qBAAe,CAAA,UAAC+M,UAAU,EAAK;IAC7B,IAAMC,MAAM,GAAG,EAAE,CAAA;EACjB,EAAA,IAAI9R,GAAG,CAAA;EACP,EAAA,IAAI9D,GAAG,CAAA;EACP,EAAA,IAAI0D,CAAC,CAAA;EAELiS,EAAAA,UAAU,IACRA,UAAU,CAAC3M,KAAK,CAAC,IAAI,CAAC,CAAC3F,OAAO,CAAC,SAASuQ,MAAMA,CAACiC,IAAI,EAAE;EACnDnS,IAAAA,CAAC,GAAGmS,IAAI,CAACvP,OAAO,CAAC,GAAG,CAAC,CAAA;EACrBxC,IAAAA,GAAG,GAAG+R,IAAI,CAACC,SAAS,CAAC,CAAC,EAAEpS,CAAC,CAAC,CAACP,IAAI,EAAE,CAAC7D,WAAW,EAAE,CAAA;EAC/CU,IAAAA,GAAG,GAAG6V,IAAI,CAACC,SAAS,CAACpS,CAAC,GAAG,CAAC,CAAC,CAACP,IAAI,EAAE,CAAA;EAElC,IAAA,IAAI,CAACW,GAAG,IAAK8R,MAAM,CAAC9R,GAAG,CAAC,IAAI4R,iBAAiB,CAAC5R,GAAG,CAAE,EAAE;EACnD,MAAA,OAAA;EACF,KAAA;MAEA,IAAIA,GAAG,KAAK,YAAY,EAAE;EACxB,MAAA,IAAI8R,MAAM,CAAC9R,GAAG,CAAC,EAAE;EACf8R,QAAAA,MAAM,CAAC9R,GAAG,CAAC,CAACwD,IAAI,CAACtH,GAAG,CAAC,CAAA;EACvB,OAAC,MAAM;EACL4V,QAAAA,MAAM,CAAC9R,GAAG,CAAC,GAAG,CAAC9D,GAAG,CAAC,CAAA;EACrB,OAAA;EACF,KAAC,MAAM;EACL4V,MAAAA,MAAM,CAAC9R,GAAG,CAAC,GAAG8R,MAAM,CAAC9R,GAAG,CAAC,GAAG8R,MAAM,CAAC9R,GAAG,CAAC,GAAG,IAAI,GAAG9D,GAAG,GAAGA,GAAG,CAAA;EAC5D,KAAA;EACF,GAAC,CAAC,CAAA;EAEJ,EAAA,OAAO4V,MAAM,CAAA;EACf,CAAC;;EC/DD,IAAMG,UAAU,GAAGjX,MAAM,CAAC,WAAW,CAAC,CAAA;EAEtC,SAASkX,eAAeA,CAACC,MAAM,EAAE;EAC/B,EAAA,OAAOA,MAAM,IAAI7P,MAAM,CAAC6P,MAAM,CAAC,CAAC9S,IAAI,EAAE,CAAC7D,WAAW,EAAE,CAAA;EACtD,CAAA;EAEA,SAAS4W,cAAcA,CAAC7U,KAAK,EAAE;EAC7B,EAAA,IAAIA,KAAK,KAAK,KAAK,IAAIA,KAAK,IAAI,IAAI,EAAE;EACpC,IAAA,OAAOA,KAAK,CAAA;EACd,GAAA;EAEA,EAAA,OAAOqL,OAAK,CAAC9M,OAAO,CAACyB,KAAK,CAAC,GAAGA,KAAK,CAACuB,GAAG,CAACsT,cAAc,CAAC,GAAG9P,MAAM,CAAC/E,KAAK,CAAC,CAAA;EACzE,CAAA;EAEA,SAAS8U,WAAWA,CAAChX,GAAG,EAAE;EACxB,EAAA,IAAMiX,MAAM,GAAG1X,MAAM,CAACa,MAAM,CAAC,IAAI,CAAC,CAAA;IAClC,IAAM8W,QAAQ,GAAG,kCAAkC,CAAA;EACnD,EAAA,IAAIpG,KAAK,CAAA;IAET,OAAQA,KAAK,GAAGoG,QAAQ,CAAChP,IAAI,CAAClI,GAAG,CAAC,EAAG;MACnCiX,MAAM,CAACnG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,CAAA;EAC7B,GAAA;EAEA,EAAA,OAAOmG,MAAM,CAAA;EACf,CAAA;EAEA,IAAME,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAInX,GAAG,EAAA;IAAA,OAAK,gCAAgC,CAACoP,IAAI,CAACpP,GAAG,CAACgE,IAAI,EAAE,CAAC,CAAA;EAAA,CAAA,CAAA;EAEpF,SAASoT,gBAAgBA,CAACpS,OAAO,EAAE9C,KAAK,EAAE4U,MAAM,EAAEpQ,MAAM,EAAE2Q,kBAAkB,EAAE;EAC5E,EAAA,IAAI9J,OAAK,CAACxM,UAAU,CAAC2F,MAAM,CAAC,EAAE;MAC5B,OAAOA,MAAM,CAACzG,IAAI,CAAC,IAAI,EAAEiC,KAAK,EAAE4U,MAAM,CAAC,CAAA;EACzC,GAAA;EAEA,EAAA,IAAIO,kBAAkB,EAAE;EACtBnV,IAAAA,KAAK,GAAG4U,MAAM,CAAA;EAChB,GAAA;EAEA,EAAA,IAAI,CAACvJ,OAAK,CAACjM,QAAQ,CAACY,KAAK,CAAC,EAAE,OAAA;EAE5B,EAAA,IAAIqL,OAAK,CAACjM,QAAQ,CAACoF,MAAM,CAAC,EAAE;MAC1B,OAAOxE,KAAK,CAACiF,OAAO,CAACT,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;EACrC,GAAA;EAEA,EAAA,IAAI6G,OAAK,CAAC1E,QAAQ,CAACnC,MAAM,CAAC,EAAE;EAC1B,IAAA,OAAOA,MAAM,CAAC0I,IAAI,CAAClN,KAAK,CAAC,CAAA;EAC3B,GAAA;EACF,CAAA;EAEA,SAASoV,YAAYA,CAACR,MAAM,EAAE;IAC5B,OAAOA,MAAM,CACV9S,IAAI,EAAE,CACN7D,WAAW,EAAE,CACb8D,OAAO,CAAC,iBAAiB,EAAE,UAACsT,CAAC,EAAEC,KAAI,EAAExX,GAAG,EAAK;EAC5C,IAAA,OAAOwX,KAAI,CAAC9O,WAAW,EAAE,GAAG1I,GAAG,CAAA;EACjC,GAAC,CAAC,CAAA;EACN,CAAA;EAEA,SAASyX,cAAcA,CAACtT,GAAG,EAAE2S,MAAM,EAAE;IACnC,IAAMY,YAAY,GAAGnK,OAAK,CAAClF,WAAW,CAAC,GAAG,GAAGyO,MAAM,CAAC,CAAA;IAEpD,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC5S,OAAO,CAAC,UAACyT,UAAU,EAAK;MAC5CpY,MAAM,CAACoG,cAAc,CAACxB,GAAG,EAAEwT,UAAU,GAAGD,YAAY,EAAE;QACpDxV,KAAK,EAAE,SAAPA,KAAKA,CAAY0V,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAE;EACjC,QAAA,OAAO,IAAI,CAACH,UAAU,CAAC,CAAC1X,IAAI,CAAC,IAAI,EAAE6W,MAAM,EAAEc,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC,CAAA;SAC7D;EACDhS,MAAAA,YAAY,EAAE,IAAA;EAChB,KAAC,CAAC,CAAA;EACJ,GAAC,CAAC,CAAA;EACJ,CAAA;EAAC,IAEKiS,YAAY,gBAAA,YAAA;IAChB,SAAAA,YAAAA,CAAY/C,OAAO,EAAE;EAAArI,IAAAA,eAAA,OAAAoL,YAAA,CAAA,CAAA;EACnB/C,IAAAA,OAAO,IAAI,IAAI,CAACzL,GAAG,CAACyL,OAAO,CAAC,CAAA;EAC9B,GAAA;IAAC,OAAAhI,YAAA,CAAA+K,YAAA,EAAA,CAAA;MAAApT,GAAA,EAAA,KAAA;MAAAzC,KAAA,EAED,SAAAqH,GAAGA,CAACuN,MAAM,EAAEkB,cAAc,EAAEC,OAAO,EAAE;QACnC,IAAMpV,IAAI,GAAG,IAAI,CAAA;EAEjB,MAAA,SAASqV,SAASA,CAACC,MAAM,EAAEC,OAAO,EAAEC,QAAQ,EAAE;EAC5C,QAAA,IAAMC,OAAO,GAAGzB,eAAe,CAACuB,OAAO,CAAC,CAAA;UAExC,IAAI,CAACE,OAAO,EAAE;EACZ,UAAA,MAAM,IAAI9O,KAAK,CAAC,wCAAwC,CAAC,CAAA;EAC3D,SAAA;UAEA,IAAM7E,GAAG,GAAG4I,OAAK,CAAC3I,OAAO,CAAC/B,IAAI,EAAEyV,OAAO,CAAC,CAAA;UAExC,IACE,CAAC3T,GAAG,IACJ9B,IAAI,CAAC8B,GAAG,CAAC,KAAKxB,SAAS,IACvBkV,QAAQ,KAAK,IAAI,IAChBA,QAAQ,KAAKlV,SAAS,IAAIN,IAAI,CAAC8B,GAAG,CAAC,KAAK,KAAM,EAC/C;YACA9B,IAAI,CAAC8B,GAAG,IAAIyT,OAAO,CAAC,GAAGrB,cAAc,CAACoB,MAAM,CAAC,CAAA;EAC/C,SAAA;EACF,OAAA;EAEA,MAAA,IAAMI,UAAU,GAAG,SAAbA,UAAUA,CAAIvD,OAAO,EAAEqD,QAAQ,EAAA;UAAA,OACnC9K,OAAK,CAACrJ,OAAO,CAAC8Q,OAAO,EAAE,UAACmD,MAAM,EAAEC,OAAO,EAAA;EAAA,UAAA,OAAKF,SAAS,CAACC,MAAM,EAAEC,OAAO,EAAEC,QAAQ,CAAC,CAAA;WAAC,CAAA,CAAA;EAAA,OAAA,CAAA;EAEnF,MAAA,IAAI9K,OAAK,CAAC7L,aAAa,CAACoV,MAAM,CAAC,IAAIA,MAAM,YAAY,IAAI,CAAChW,WAAW,EAAE;EACrEyX,QAAAA,UAAU,CAACzB,MAAM,EAAEkB,cAAc,CAAC,CAAA;SACnC,MAAM,IAAIzK,OAAK,CAACjM,QAAQ,CAACwV,MAAM,CAAC,KAAKA,MAAM,GAAGA,MAAM,CAAC9S,IAAI,EAAE,CAAC,IAAI,CAACmT,iBAAiB,CAACL,MAAM,CAAC,EAAE;EAC3FyB,QAAAA,UAAU,CAACC,YAAY,CAAC1B,MAAM,CAAC,EAAEkB,cAAc,CAAC,CAAA;EAClD,OAAC,MAAM,IAAIzK,OAAK,CAAC/L,QAAQ,CAACsV,MAAM,CAAC,IAAIvJ,OAAK,CAACtB,UAAU,CAAC6K,MAAM,CAAC,EAAE;UAC7D,IAAI3S,GAAG,GAAG,EAAE;YACVsU,IAAI;YACJ9T,GAAG,CAAA;EAAC,QAAA,IAAAgD,SAAA,GAAA+Q,0BAAA,CACc5B,MAAM,CAAA;YAAA6B,KAAA,CAAA;EAAA,QAAA,IAAA;YAA1B,KAAAhR,SAAA,CAAAiR,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAhR,SAAA,CAAAkR,CAAA,EAAAhR,EAAAA,IAAA,GAA4B;EAAA,YAAA,IAAjBiR,KAAK,GAAAH,KAAA,CAAAzW,KAAA,CAAA;EACd,YAAA,IAAI,CAACqL,OAAK,CAAC9M,OAAO,CAACqY,KAAK,CAAC,EAAE;gBACzB,MAAMvJ,SAAS,CAAC,8CAA8C,CAAC,CAAA;EACjE,aAAA;cAEApL,GAAG,CAAEQ,GAAG,GAAGmU,KAAK,CAAC,CAAC,CAAC,CAAE,GAAG,CAACL,IAAI,GAAGtU,GAAG,CAACQ,GAAG,CAAC,IACpC4I,OAAK,CAAC9M,OAAO,CAACgY,IAAI,CAAC,MAAAhN,MAAA,CAAAsN,kBAAA,CACbN,IAAI,IAAEK,KAAK,CAAC,CAAC,CAAC,CAClB,CAAA,GAAA,CAACL,IAAI,EAAEK,KAAK,CAAC,CAAC,CAAC,CAAC,GAClBA,KAAK,CAAC,CAAC,CAAC,CAAA;EACd,WAAA;EAAC,SAAA,CAAA,OAAAE,GAAA,EAAA;YAAArR,SAAA,CAAA7F,CAAA,CAAAkX,GAAA,CAAA,CAAA;EAAA,SAAA,SAAA;EAAArR,UAAAA,SAAA,CAAAsR,CAAA,EAAA,CAAA;EAAA,SAAA;EAEDV,QAAAA,UAAU,CAACpU,GAAG,EAAE6T,cAAc,CAAC,CAAA;EACjC,OAAC,MAAM;UACLlB,MAAM,IAAI,IAAI,IAAIoB,SAAS,CAACF,cAAc,EAAElB,MAAM,EAAEmB,OAAO,CAAC,CAAA;EAC9D,OAAA;EAEA,MAAA,OAAO,IAAI,CAAA;EACb,KAAA;EAAC,GAAA,EAAA;MAAAtT,GAAA,EAAA,KAAA;EAAAzC,IAAAA,KAAA,EAED,SAAAgX,GAAGA,CAACpC,MAAM,EAAErC,MAAM,EAAE;EAClBqC,MAAAA,MAAM,GAAGD,eAAe,CAACC,MAAM,CAAC,CAAA;EAEhC,MAAA,IAAIA,MAAM,EAAE;UACV,IAAMnS,GAAG,GAAG4I,OAAK,CAAC3I,OAAO,CAAC,IAAI,EAAEkS,MAAM,CAAC,CAAA;EAEvC,QAAA,IAAInS,GAAG,EAAE;EACP,UAAA,IAAMzC,KAAK,GAAG,IAAI,CAACyC,GAAG,CAAC,CAAA;YAEvB,IAAI,CAAC8P,MAAM,EAAE;EACX,YAAA,OAAOvS,KAAK,CAAA;EACd,WAAA;YAEA,IAAIuS,MAAM,KAAK,IAAI,EAAE;cACnB,OAAOuC,WAAW,CAAC9U,KAAK,CAAC,CAAA;EAC3B,WAAA;EAEA,UAAA,IAAIqL,OAAK,CAACxM,UAAU,CAAC0T,MAAM,CAAC,EAAE;cAC5B,OAAOA,MAAM,CAACxU,IAAI,CAAC,IAAI,EAAEiC,KAAK,EAAEyC,GAAG,CAAC,CAAA;EACtC,WAAA;EAEA,UAAA,IAAI4I,OAAK,CAAC1E,QAAQ,CAAC4L,MAAM,CAAC,EAAE;EAC1B,YAAA,OAAOA,MAAM,CAACvM,IAAI,CAAChG,KAAK,CAAC,CAAA;EAC3B,WAAA;EAEA,UAAA,MAAM,IAAIqN,SAAS,CAAC,wCAAwC,CAAC,CAAA;EAC/D,SAAA;EACF,OAAA;EACF,KAAA;EAAC,GAAA,EAAA;MAAA5K,GAAA,EAAA,KAAA;EAAAzC,IAAAA,KAAA,EAED,SAAAiX,GAAGA,CAACrC,MAAM,EAAEsC,OAAO,EAAE;EACnBtC,MAAAA,MAAM,GAAGD,eAAe,CAACC,MAAM,CAAC,CAAA;EAEhC,MAAA,IAAIA,MAAM,EAAE;UACV,IAAMnS,GAAG,GAAG4I,OAAK,CAAC3I,OAAO,CAAC,IAAI,EAAEkS,MAAM,CAAC,CAAA;EAEvC,QAAA,OAAO,CAAC,EACNnS,GAAG,IACH,IAAI,CAACA,GAAG,CAAC,KAAKxB,SAAS,KACtB,CAACiW,OAAO,IAAIhC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAACzS,GAAG,CAAC,EAAEA,GAAG,EAAEyU,OAAO,CAAC,CAAC,CAC9D,CAAA;EACH,OAAA;EAEA,MAAA,OAAO,KAAK,CAAA;EACd,KAAA;EAAC,GAAA,EAAA;MAAAzU,GAAA,EAAA,QAAA;EAAAzC,IAAAA,KAAA,EAED,SAAAmX,OAAMA,CAACvC,MAAM,EAAEsC,OAAO,EAAE;QACtB,IAAMvW,IAAI,GAAG,IAAI,CAAA;QACjB,IAAIyW,OAAO,GAAG,KAAK,CAAA;QAEnB,SAASC,YAAYA,CAACnB,OAAO,EAAE;EAC7BA,QAAAA,OAAO,GAAGvB,eAAe,CAACuB,OAAO,CAAC,CAAA;EAElC,QAAA,IAAIA,OAAO,EAAE;YACX,IAAMzT,GAAG,GAAG4I,OAAK,CAAC3I,OAAO,CAAC/B,IAAI,EAAEuV,OAAO,CAAC,CAAA;EAExC,UAAA,IAAIzT,GAAG,KAAK,CAACyU,OAAO,IAAIhC,gBAAgB,CAACvU,IAAI,EAAEA,IAAI,CAAC8B,GAAG,CAAC,EAAEA,GAAG,EAAEyU,OAAO,CAAC,CAAC,EAAE;cACxE,OAAOvW,IAAI,CAAC8B,GAAG,CAAC,CAAA;EAEhB2U,YAAAA,OAAO,GAAG,IAAI,CAAA;EAChB,WAAA;EACF,SAAA;EACF,OAAA;EAEA,MAAA,IAAI/L,OAAK,CAAC9M,OAAO,CAACqW,MAAM,CAAC,EAAE;EACzBA,QAAAA,MAAM,CAAC5S,OAAO,CAACqV,YAAY,CAAC,CAAA;EAC9B,OAAC,MAAM;UACLA,YAAY,CAACzC,MAAM,CAAC,CAAA;EACtB,OAAA;EAEA,MAAA,OAAOwC,OAAO,CAAA;EAChB,KAAA;EAAC,GAAA,EAAA;MAAA3U,GAAA,EAAA,OAAA;EAAAzC,IAAAA,KAAA,EAED,SAAAkQ,KAAKA,CAACgH,OAAO,EAAE;EACb,MAAA,IAAMxX,IAAI,GAAGrC,MAAM,CAACqC,IAAI,CAAC,IAAI,CAAC,CAAA;EAC9B,MAAA,IAAI2C,CAAC,GAAG3C,IAAI,CAACC,MAAM,CAAA;QACnB,IAAIyX,OAAO,GAAG,KAAK,CAAA;QAEnB,OAAO/U,CAAC,EAAE,EAAE;EACV,QAAA,IAAMI,GAAG,GAAG/C,IAAI,CAAC2C,CAAC,CAAC,CAAA;EACnB,QAAA,IAAI,CAAC6U,OAAO,IAAIhC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAACzS,GAAG,CAAC,EAAEA,GAAG,EAAEyU,OAAO,EAAE,IAAI,CAAC,EAAE;YACrE,OAAO,IAAI,CAACzU,GAAG,CAAC,CAAA;EAChB2U,UAAAA,OAAO,GAAG,IAAI,CAAA;EAChB,SAAA;EACF,OAAA;EAEA,MAAA,OAAOA,OAAO,CAAA;EAChB,KAAA;EAAC,GAAA,EAAA;MAAA3U,GAAA,EAAA,WAAA;EAAAzC,IAAAA,KAAA,EAED,SAAAsX,SAASA,CAACC,MAAM,EAAE;QAChB,IAAM5W,IAAI,GAAG,IAAI,CAAA;QACjB,IAAMmS,OAAO,GAAG,EAAE,CAAA;QAElBzH,OAAK,CAACrJ,OAAO,CAAC,IAAI,EAAE,UAAChC,KAAK,EAAE4U,MAAM,EAAK;UACrC,IAAMnS,GAAG,GAAG4I,OAAK,CAAC3I,OAAO,CAACoQ,OAAO,EAAE8B,MAAM,CAAC,CAAA;EAE1C,QAAA,IAAInS,GAAG,EAAE;EACP9B,UAAAA,IAAI,CAAC8B,GAAG,CAAC,GAAGoS,cAAc,CAAC7U,KAAK,CAAC,CAAA;YACjC,OAAOW,IAAI,CAACiU,MAAM,CAAC,CAAA;EACnB,UAAA,OAAA;EACF,SAAA;EAEA,QAAA,IAAM4C,UAAU,GAAGD,MAAM,GAAGnC,YAAY,CAACR,MAAM,CAAC,GAAG7P,MAAM,CAAC6P,MAAM,CAAC,CAAC9S,IAAI,EAAE,CAAA;UAExE,IAAI0V,UAAU,KAAK5C,MAAM,EAAE;YACzB,OAAOjU,IAAI,CAACiU,MAAM,CAAC,CAAA;EACrB,SAAA;EAEAjU,QAAAA,IAAI,CAAC6W,UAAU,CAAC,GAAG3C,cAAc,CAAC7U,KAAK,CAAC,CAAA;EAExC8S,QAAAA,OAAO,CAAC0E,UAAU,CAAC,GAAG,IAAI,CAAA;EAC5B,OAAC,CAAC,CAAA;EAEF,MAAA,OAAO,IAAI,CAAA;EACb,KAAA;EAAC,GAAA,EAAA;MAAA/U,GAAA,EAAA,QAAA;EAAAzC,IAAAA,KAAA,EAED,SAAAuJ,MAAMA,GAAa;EAAA,MAAA,IAAAkO,iBAAA,CAAA;EAAA,MAAA,KAAA,IAAAC,IAAA,GAAAva,SAAA,CAAAwC,MAAA,EAATgY,OAAO,GAAAnZ,IAAAA,KAAA,CAAAkZ,IAAA,GAAA/U,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAA+U,IAAA,EAAA/U,IAAA,EAAA,EAAA;EAAPgV,QAAAA,OAAO,CAAAhV,IAAA,CAAAxF,GAAAA,SAAA,CAAAwF,IAAA,CAAA,CAAA;EAAA,OAAA;EACf,MAAA,OAAO,CAAA8U,iBAAA,GAAA,IAAI,CAAC7Y,WAAW,EAAC2K,MAAM,CAAArM,KAAA,CAAAua,iBAAA,EAAC,CAAA,IAAI,EAAAlO,MAAA,CAAKoO,OAAO,CAAC,CAAA,CAAA;EAClD,KAAA;EAAC,GAAA,EAAA;MAAAlV,GAAA,EAAA,QAAA;EAAAzC,IAAAA,KAAA,EAED,SAAA+K,MAAMA,CAAC6M,SAAS,EAAE;EAChB,MAAA,IAAM3V,GAAG,GAAG5E,MAAM,CAACa,MAAM,CAAC,IAAI,CAAC,CAAA;QAE/BmN,OAAK,CAACrJ,OAAO,CAAC,IAAI,EAAE,UAAChC,KAAK,EAAE4U,MAAM,EAAK;EACrC5U,QAAAA,KAAK,IAAI,IAAI,IACXA,KAAK,KAAK,KAAK,KACdiC,GAAG,CAAC2S,MAAM,CAAC,GAAGgD,SAAS,IAAIvM,OAAK,CAAC9M,OAAO,CAACyB,KAAK,CAAC,GAAGA,KAAK,CAAC8M,IAAI,CAAC,IAAI,CAAC,GAAG9M,KAAK,CAAC,CAAA;EAChF,OAAC,CAAC,CAAA;EAEF,MAAA,OAAOiC,GAAG,CAAA;EACZ,KAAA;EAAC,GAAA,EAAA;MAAAQ,GAAA,EAEAhF,MAAM,CAACD,QAAQ;MAAAwC,KAAA,EAAhB,SAAAA,KAAAA,GAAoB;EAClB,MAAA,OAAO3C,MAAM,CAAC+U,OAAO,CAAC,IAAI,CAACrH,MAAM,EAAE,CAAC,CAACtN,MAAM,CAACD,QAAQ,CAAC,EAAE,CAAA;EACzD,KAAA;EAAC,GAAA,EAAA;MAAAiF,GAAA,EAAA,UAAA;EAAAzC,IAAAA,KAAA,EAED,SAAA5C,QAAQA,GAAG;EACT,MAAA,OAAOC,MAAM,CAAC+U,OAAO,CAAC,IAAI,CAACrH,MAAM,EAAE,CAAC,CACjCxJ,GAAG,CAAC,UAAAW,IAAA,EAAA;EAAA,QAAA,IAAAc,KAAA,GAAAvB,cAAA,CAAAS,IAAA,EAAA,CAAA,CAAA;EAAE0S,UAAAA,MAAM,GAAA5R,KAAA,CAAA,CAAA,CAAA;EAAEhD,UAAAA,KAAK,GAAAgD,KAAA,CAAA,CAAA,CAAA,CAAA;EAAA,QAAA,OAAM4R,MAAM,GAAG,IAAI,GAAG5U,KAAK,CAAA;EAAA,OAAA,CAAC,CAC/C8M,IAAI,CAAC,IAAI,CAAC,CAAA;EACf,KAAA;EAAC,GAAA,EAAA;MAAArK,GAAA,EAAA,cAAA;EAAAzC,IAAAA,KAAA,EAED,SAAA6X,YAAYA,GAAG;EACb,MAAA,OAAO,IAAI,CAACb,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;EACrC,KAAA;EAAC,GAAA,EAAA;MAAAvU,GAAA,EAEIhF,MAAM,CAACC,WAAW;MAAAsZ,GAAA,EAAvB,SAAAA,GAAAA,GAA2B;EACzB,MAAA,OAAO,cAAc,CAAA;EACvB,KAAA;EAAC,GAAA,CAAA,EAAA,CAAA;MAAAvU,GAAA,EAAA,MAAA;EAAAzC,IAAAA,KAAA,EAED,SAAOsL,IAAIA,CAACzN,KAAK,EAAE;QACjB,OAAOA,KAAK,YAAY,IAAI,GAAGA,KAAK,GAAG,IAAI,IAAI,CAACA,KAAK,CAAC,CAAA;EACxD,KAAA;EAAC,GAAA,EAAA;MAAA4E,GAAA,EAAA,QAAA;EAAAzC,IAAAA,KAAA,EAED,SAAOuJ,MAAMA,CAACuO,KAAK,EAAc;EAC/B,MAAA,IAAMC,QAAQ,GAAG,IAAI,IAAI,CAACD,KAAK,CAAC,CAAA;QAAC,KAAAE,IAAAA,KAAA,GAAA7a,SAAA,CAAAwC,MAAA,EADXgY,OAAO,OAAAnZ,KAAA,CAAAwZ,KAAA,GAAAA,CAAAA,GAAAA,KAAA,WAAAC,KAAA,GAAA,CAAA,EAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA,EAAA,EAAA;EAAPN,QAAAA,OAAO,CAAAM,KAAA,GAAA9a,CAAAA,CAAAA,GAAAA,SAAA,CAAA8a,KAAA,CAAA,CAAA;EAAA,OAAA;EAG7BN,MAAAA,OAAO,CAAC3V,OAAO,CAAC,UAACsG,MAAM,EAAA;EAAA,QAAA,OAAKyP,QAAQ,CAAC1Q,GAAG,CAACiB,MAAM,CAAC,CAAA;SAAC,CAAA,CAAA;EAEjD,MAAA,OAAOyP,QAAQ,CAAA;EACjB,KAAA;EAAC,GAAA,EAAA;MAAAtV,GAAA,EAAA,UAAA;EAAAzC,IAAAA,KAAA,EAED,SAAOkY,QAAQA,CAACtD,MAAM,EAAE;QACtB,IAAMuD,SAAS,GACZ,IAAI,CAACzD,UAAU,CAAC,GACjB,IAAI,CAACA,UAAU,CAAC,GACd;EACE0D,QAAAA,SAAS,EAAE,EAAC;SACZ,CAAA;EAEN,MAAA,IAAMA,SAAS,GAAGD,SAAS,CAACC,SAAS,CAAA;EACrC,MAAA,IAAM9a,SAAS,GAAG,IAAI,CAACA,SAAS,CAAA;QAEhC,SAAS+a,cAAcA,CAACnC,OAAO,EAAE;EAC/B,QAAA,IAAME,OAAO,GAAGzB,eAAe,CAACuB,OAAO,CAAC,CAAA;EAExC,QAAA,IAAI,CAACkC,SAAS,CAAChC,OAAO,CAAC,EAAE;EACvBb,UAAAA,cAAc,CAACjY,SAAS,EAAE4Y,OAAO,CAAC,CAAA;EAClCkC,UAAAA,SAAS,CAAChC,OAAO,CAAC,GAAG,IAAI,CAAA;EAC3B,SAAA;EACF,OAAA;EAEA/K,MAAAA,OAAK,CAAC9M,OAAO,CAACqW,MAAM,CAAC,GAAGA,MAAM,CAAC5S,OAAO,CAACqW,cAAc,CAAC,GAAGA,cAAc,CAACzD,MAAM,CAAC,CAAA;EAE/E,MAAA,OAAO,IAAI,CAAA;EACb,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,CAAA,EAAA,CAAA;EAGHiB,YAAY,CAACqC,QAAQ,CAAC,CACpB,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,eAAe,CAChB,CAAC,CAAA;;EAEF;AACA7M,SAAK,CAACzE,iBAAiB,CAACiP,YAAY,CAACvY,SAAS,EAAE,UAAAkG,KAAA,EAAYf,GAAG,EAAK;EAAA,EAAA,IAAjBzC,KAAK,GAAAwD,KAAA,CAALxD,KAAK,CAAA;EACtD,EAAA,IAAIsY,MAAM,GAAG7V,GAAG,CAAC,CAAC,CAAC,CAAC+D,WAAW,EAAE,GAAG/D,GAAG,CAACzE,KAAK,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO;MACLgZ,GAAG,EAAE,SAALA,GAAGA,GAAA;EAAA,MAAA,OAAQhX,KAAK,CAAA;EAAA,KAAA;EAChBqH,IAAAA,GAAG,EAAHA,SAAAA,GAAGA,CAACkR,WAAW,EAAE;EACf,MAAA,IAAI,CAACD,MAAM,CAAC,GAAGC,WAAW,CAAA;EAC5B,KAAA;KACD,CAAA;EACH,CAAC,CAAC,CAAA;AAEFlN,SAAK,CAACjE,aAAa,CAACyO,YAAY,CAAC,CAAA;AAEjC,uBAAeA,YAAY;;ECjV3B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACe,SAAS2C,aAAaA,CAACC,GAAG,EAAElO,QAAQ,EAAE;EACnD,EAAA,IAAMF,MAAM,GAAG,IAAI,IAAIoI,UAAQ,CAAA;EAC/B,EAAA,IAAM3P,OAAO,GAAGyH,QAAQ,IAAIF,MAAM,CAAA;IAClC,IAAMyI,OAAO,GAAG+C,cAAY,CAACvK,IAAI,CAACxI,OAAO,CAACgQ,OAAO,CAAC,CAAA;EAClD,EAAA,IAAI3J,IAAI,GAAGrG,OAAO,CAACqG,IAAI,CAAA;IAEvBkC,OAAK,CAACrJ,OAAO,CAACyW,GAAG,EAAE,SAASC,SAASA,CAAC3b,EAAE,EAAE;MACxCoM,IAAI,GAAGpM,EAAE,CAACgB,IAAI,CAACsM,MAAM,EAAElB,IAAI,EAAE2J,OAAO,CAACwE,SAAS,EAAE,EAAE/M,QAAQ,GAAGA,QAAQ,CAACK,MAAM,GAAG3J,SAAS,CAAC,CAAA;EAC3F,GAAC,CAAC,CAAA;IAEF6R,OAAO,CAACwE,SAAS,EAAE,CAAA;EAEnB,EAAA,OAAOnO,IAAI,CAAA;EACb;;ECzBe,SAASwP,QAAQA,CAAC3Y,KAAK,EAAE;EACtC,EAAA,OAAO,CAAC,EAAEA,KAAK,IAAIA,KAAK,CAAC4Y,UAAU,CAAC,CAAA;EACtC;;ECF+C,IAEzCC,aAAa,0BAAAC,WAAA,EAAA;EACjB;EACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACE,EAAA,SAAAD,cAAY1O,OAAO,EAAEE,MAAM,EAAEC,OAAO,EAAE;EAAA,IAAA,IAAAE,KAAA,CAAA;EAAAC,IAAAA,eAAA,OAAAoO,aAAA,CAAA,CAAA;EACpCrO,IAAAA,KAAA,GAAAE,UAAA,CAAA,IAAA,EAAAmO,aAAA,EAAM1O,CAAAA,OAAO,IAAI,IAAI,GAAG,UAAU,GAAGA,OAAO,EAAEF,YAAU,CAACoC,YAAY,EAAEhC,MAAM,EAAEC,OAAO,CAAA,CAAA,CAAA;MACtFE,KAAA,CAAKvD,IAAI,GAAG,eAAe,CAAA;MAC3BuD,KAAA,CAAKoO,UAAU,GAAG,IAAI,CAAA;EAAC,IAAA,OAAApO,KAAA,CAAA;EACzB,GAAA;IAACK,SAAA,CAAAgO,aAAA,EAAAC,WAAA,CAAA,CAAA;IAAA,OAAAhO,YAAA,CAAA+N,aAAA,CAAA,CAAA;EAAA,CAAA,CAdyB5O,YAAU,CAAA,CAAA;AAiBtC,wBAAe4O,aAAa;;ECjB5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACe,SAASE,MAAMA,CAACC,OAAO,EAAEC,MAAM,EAAE1O,QAAQ,EAAE;EACxD,EAAA,IAAM0J,cAAc,GAAG1J,QAAQ,CAACF,MAAM,CAAC4J,cAAc,CAAA;EACrD,EAAA,IAAI,CAAC1J,QAAQ,CAACK,MAAM,IAAI,CAACqJ,cAAc,IAAIA,cAAc,CAAC1J,QAAQ,CAACK,MAAM,CAAC,EAAE;MAC1EoO,OAAO,CAACzO,QAAQ,CAAC,CAAA;EACnB,GAAC,MAAM;MACL0O,MAAM,CACJ,IAAIhP,YAAU,CACZ,kCAAkC,GAAGM,QAAQ,CAACK,MAAM,EACpD,CAACX,YAAU,CAACmC,eAAe,EAAEnC,YAAU,CAACkC,gBAAgB,CAAC,CACvD3C,IAAI,CAAC0P,KAAK,CAAC3O,QAAQ,CAACK,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CACtC,EACDL,QAAQ,CAACF,MAAM,EACfE,QAAQ,CAACD,OAAO,EAChBC,QACF,CACF,CAAC,CAAA;EACH,GAAA;EACF;;EC5Be,SAAS4O,aAAaA,CAAChK,GAAG,EAAE;EACzC,EAAA,IAAMP,KAAK,GAAG,2BAA2B,CAAC5I,IAAI,CAACmJ,GAAG,CAAC,CAAA;EACnD,EAAA,OAAQP,KAAK,IAAIA,KAAK,CAAC,CAAC,CAAC,IAAK,EAAE,CAAA;EAClC;;ECHA;EACA;EACA;EACA;EACA;EACA;EACA,SAASwK,WAAWA,CAACC,YAAY,EAAEC,GAAG,EAAE;IACtCD,YAAY,GAAGA,YAAY,IAAI,EAAE,CAAA;EACjC,EAAA,IAAME,KAAK,GAAG,IAAI/a,KAAK,CAAC6a,YAAY,CAAC,CAAA;EACrC,EAAA,IAAMG,UAAU,GAAG,IAAIhb,KAAK,CAAC6a,YAAY,CAAC,CAAA;IAC1C,IAAII,IAAI,GAAG,CAAC,CAAA;IACZ,IAAIC,IAAI,GAAG,CAAC,CAAA;EACZ,EAAA,IAAIC,aAAa,CAAA;EAEjBL,EAAAA,GAAG,GAAGA,GAAG,KAAKrY,SAAS,GAAGqY,GAAG,GAAG,IAAI,CAAA;EAEpC,EAAA,OAAO,SAASrT,IAAIA,CAAC2T,WAAW,EAAE;EAChC,IAAA,IAAMC,GAAG,GAAGC,IAAI,CAACD,GAAG,EAAE,CAAA;EAEtB,IAAA,IAAME,SAAS,GAAGP,UAAU,CAACE,IAAI,CAAC,CAAA;MAElC,IAAI,CAACC,aAAa,EAAE;EAClBA,MAAAA,aAAa,GAAGE,GAAG,CAAA;EACrB,KAAA;EAEAN,IAAAA,KAAK,CAACE,IAAI,CAAC,GAAGG,WAAW,CAAA;EACzBJ,IAAAA,UAAU,CAACC,IAAI,CAAC,GAAGI,GAAG,CAAA;MAEtB,IAAIxX,CAAC,GAAGqX,IAAI,CAAA;MACZ,IAAIM,UAAU,GAAG,CAAC,CAAA;MAElB,OAAO3X,CAAC,KAAKoX,IAAI,EAAE;EACjBO,MAAAA,UAAU,IAAIT,KAAK,CAAClX,CAAC,EAAE,CAAC,CAAA;QACxBA,CAAC,GAAGA,CAAC,GAAGgX,YAAY,CAAA;EACtB,KAAA;EAEAI,IAAAA,IAAI,GAAG,CAACA,IAAI,GAAG,CAAC,IAAIJ,YAAY,CAAA;MAEhC,IAAII,IAAI,KAAKC,IAAI,EAAE;EACjBA,MAAAA,IAAI,GAAG,CAACA,IAAI,GAAG,CAAC,IAAIL,YAAY,CAAA;EAClC,KAAA;EAEA,IAAA,IAAIQ,GAAG,GAAGF,aAAa,GAAGL,GAAG,EAAE;EAC7B,MAAA,OAAA;EACF,KAAA;EAEA,IAAA,IAAMW,MAAM,GAAGF,SAAS,IAAIF,GAAG,GAAGE,SAAS,CAAA;EAE3C,IAAA,OAAOE,MAAM,GAAGzQ,IAAI,CAAC0Q,KAAK,CAAEF,UAAU,GAAG,IAAI,GAAIC,MAAM,CAAC,GAAGhZ,SAAS,CAAA;KACrE,CAAA;EACH;;ECpDA;EACA;EACA;EACA;EACA;EACA;EACA,SAASkZ,QAAQA,CAACpd,EAAE,EAAEqd,IAAI,EAAE;IAC1B,IAAIC,SAAS,GAAG,CAAC,CAAA;EACjB,EAAA,IAAIC,SAAS,GAAG,IAAI,GAAGF,IAAI,CAAA;EAC3B,EAAA,IAAIG,QAAQ,CAAA;EACZ,EAAA,IAAIC,KAAK,CAAA;EAET,EAAA,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAIC,IAAI,EAAuB;EAAA,IAAA,IAArBb,GAAG,GAAA1c,SAAA,CAAAwC,MAAA,QAAAxC,SAAA,CAAA,CAAA,CAAA,KAAA8D,SAAA,GAAA9D,SAAA,CAAG2c,CAAAA,CAAAA,GAAAA,IAAI,CAACD,GAAG,EAAE,CAAA;EACpCQ,IAAAA,SAAS,GAAGR,GAAG,CAAA;EACfU,IAAAA,QAAQ,GAAG,IAAI,CAAA;EACf,IAAA,IAAIC,KAAK,EAAE;QACTG,YAAY,CAACH,KAAK,CAAC,CAAA;EACnBA,MAAAA,KAAK,GAAG,IAAI,CAAA;EACd,KAAA;EACAzd,IAAAA,EAAE,CAAAG,KAAA,CAAA,KAAA,CAAA,EAAA2Z,kBAAA,CAAI6D,IAAI,CAAC,CAAA,CAAA;KACZ,CAAA;EAED,EAAA,IAAME,SAAS,GAAG,SAAZA,SAASA,GAAgB;EAC7B,IAAA,IAAMf,GAAG,GAAGC,IAAI,CAACD,GAAG,EAAE,CAAA;EACtB,IAAA,IAAMI,MAAM,GAAGJ,GAAG,GAAGQ,SAAS,CAAA;EAAC,IAAA,KAAA,IAAA3C,IAAA,GAAAva,SAAA,CAAAwC,MAAA,EAFX+a,IAAI,GAAAlc,IAAAA,KAAA,CAAAkZ,IAAA,GAAA/U,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAA+U,IAAA,EAAA/U,IAAA,EAAA,EAAA;EAAJ+X,MAAAA,IAAI,CAAA/X,IAAA,CAAAxF,GAAAA,SAAA,CAAAwF,IAAA,CAAA,CAAA;EAAA,KAAA;MAGxB,IAAIsX,MAAM,IAAIK,SAAS,EAAE;EACvBG,MAAAA,MAAM,CAACC,IAAI,EAAEb,GAAG,CAAC,CAAA;EACnB,KAAC,MAAM;EACLU,MAAAA,QAAQ,GAAGG,IAAI,CAAA;QACf,IAAI,CAACF,KAAK,EAAE;UACVA,KAAK,GAAG9Q,UAAU,CAAC,YAAM;EACvB8Q,UAAAA,KAAK,GAAG,IAAI,CAAA;YACZC,MAAM,CAACF,QAAQ,CAAC,CAAA;EAClB,SAAC,EAAED,SAAS,GAAGL,MAAM,CAAC,CAAA;EACxB,OAAA;EACF,KAAA;KACD,CAAA;EAED,EAAA,IAAMY,KAAK,GAAG,SAARA,KAAKA,GAAA;EAAA,IAAA,OAASN,QAAQ,IAAIE,MAAM,CAACF,QAAQ,CAAC,CAAA;EAAA,GAAA,CAAA;EAEhD,EAAA,OAAO,CAACK,SAAS,EAAEC,KAAK,CAAC,CAAA;EAC3B;;ECrCO,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIC,QAAQ,EAAEC,gBAAgB,EAAe;EAAA,EAAA,IAAbZ,IAAI,GAAAjd,SAAA,CAAAwC,MAAA,GAAA,CAAA,IAAAxC,SAAA,CAAA,CAAA,CAAA,KAAA8D,SAAA,GAAA9D,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC,CAAA;IACvE,IAAI8d,aAAa,GAAG,CAAC,CAAA;EACrB,EAAA,IAAMC,YAAY,GAAG9B,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;EAEzC,EAAA,OAAOe,QAAQ,CAAC,UAACva,CAAC,EAAK;EACrB,IAAA,IAAMub,MAAM,GAAGvb,CAAC,CAACub,MAAM,CAAA;MACvB,IAAMC,KAAK,GAAGxb,CAAC,CAACyb,gBAAgB,GAAGzb,CAAC,CAACwb,KAAK,GAAGna,SAAS,CAAA;EACtD,IAAA,IAAMqa,aAAa,GAAGH,MAAM,GAAGF,aAAa,CAAA;EAC5C,IAAA,IAAMM,IAAI,GAAGL,YAAY,CAACI,aAAa,CAAC,CAAA;EACxC,IAAA,IAAME,OAAO,GAAGL,MAAM,IAAIC,KAAK,CAAA;EAE/BH,IAAAA,aAAa,GAAGE,MAAM,CAAA;MAEtB,IAAMhS,IAAI,GAAAsS,eAAA,CAAA;EACRN,MAAAA,MAAM,EAANA,MAAM;EACNC,MAAAA,KAAK,EAALA,KAAK;EACLM,MAAAA,QAAQ,EAAEN,KAAK,GAAGD,MAAM,GAAGC,KAAK,GAAGna,SAAS;EAC5CsY,MAAAA,KAAK,EAAE+B,aAAa;EACpBC,MAAAA,IAAI,EAAEA,IAAI,GAAGA,IAAI,GAAGta,SAAS;EAC7B0a,MAAAA,SAAS,EAAEJ,IAAI,IAAIH,KAAK,IAAII,OAAO,GAAG,CAACJ,KAAK,GAAGD,MAAM,IAAII,IAAI,GAAGta,SAAS;EACzE2a,MAAAA,KAAK,EAAEhc,CAAC;QACRyb,gBAAgB,EAAED,KAAK,IAAI,IAAA;EAAI,KAAA,EAC9BJ,gBAAgB,GAAG,UAAU,GAAG,QAAQ,EAAG,IAAI,CACjD,CAAA;MAEDD,QAAQ,CAAC5R,IAAI,CAAC,CAAA;KACf,EAAEiR,IAAI,CAAC,CAAA;EACV,CAAC,CAAA;EAEM,IAAMyB,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAIT,KAAK,EAAER,SAAS,EAAK;EAC1D,EAAA,IAAMS,gBAAgB,GAAGD,KAAK,IAAI,IAAI,CAAA;IAEtC,OAAO,CACL,UAACD,MAAM,EAAA;EAAA,IAAA,OACLP,SAAS,CAAC,CAAC,CAAC,CAAC;EACXS,MAAAA,gBAAgB,EAAhBA,gBAAgB;EAChBD,MAAAA,KAAK,EAALA,KAAK;EACLD,MAAAA,MAAM,EAANA,MAAAA;EACF,KAAC,CAAC,CAAA;EAAA,GAAA,EACJP,SAAS,CAAC,CAAC,CAAC,CACb,CAAA;EACH,CAAC,CAAA;EAEM,IAAMkB,cAAc,GACzB,SADWA,cAAcA,CACxB/e,EAAE,EAAA;IAAA,OACH,YAAA;EAAA,IAAA,KAAA,IAAA2a,IAAA,GAAAva,SAAA,CAAAwC,MAAA,EAAI+a,IAAI,GAAAlc,IAAAA,KAAA,CAAAkZ,IAAA,GAAA/U,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAA+U,IAAA,EAAA/U,IAAA,EAAA,EAAA;EAAJ+X,MAAAA,IAAI,CAAA/X,IAAA,CAAAxF,GAAAA,SAAA,CAAAwF,IAAA,CAAA,CAAA;EAAA,KAAA;MAAA,OACN0I,OAAK,CAAC1B,IAAI,CAAC,YAAA;EAAA,MAAA,OAAM5M,EAAE,CAAAG,KAAA,CAAA,KAAA,CAAA,EAAIwd,IAAI,CAAC,CAAA;OAAC,CAAA,CAAA;EAAA,GAAA,CAAA;EAAA,CAAA;;AChDjC,wBAAehJ,QAAQ,CAACT,qBAAqB,GACxC,UAACK,MAAM,EAAEyK,MAAM,EAAA;IAAA,OAAK,UAAC5M,GAAG,EAAK;MAC5BA,GAAG,GAAG,IAAI6M,GAAG,CAAC7M,GAAG,EAAEuC,QAAQ,CAACJ,MAAM,CAAC,CAAA;MAEnC,OACEA,MAAM,CAAC2K,QAAQ,KAAK9M,GAAG,CAAC8M,QAAQ,IAChC3K,MAAM,CAAC4K,IAAI,KAAK/M,GAAG,CAAC+M,IAAI,KACvBH,MAAM,IAAIzK,MAAM,CAAC6K,IAAI,KAAKhN,GAAG,CAACgN,IAAI,CAAC,CAAA;KAEvC,CAAA;EAAA,CACC,CAAA,IAAIH,GAAG,CAACtK,QAAQ,CAACJ,MAAM,CAAC,EACxBI,QAAQ,CAACV,SAAS,IAAI,iBAAiB,CAAC9D,IAAI,CAACwE,QAAQ,CAACV,SAAS,CAACoL,SAAS,CAC3E,CAAC,GACD,YAAA;EAAA,EAAA,OAAM,IAAI,CAAA;EAAA,CAAA;;ACZd,gBAAe1K,QAAQ,CAACT,qBAAqB;EACzC;EACA;EACEoL,EAAAA,KAAK,WAALA,KAAKA,CAACpV,IAAI,EAAEjH,KAAK,EAAEsc,OAAO,EAAE3P,IAAI,EAAE4P,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAE;EAC1D,IAAA,IAAI,OAAO3L,QAAQ,KAAK,WAAW,EAAE,OAAA;EAErC,IAAA,IAAM4L,MAAM,GAAG,CAAAnT,EAAAA,CAAAA,MAAA,CAAItC,IAAI,EAAAsC,GAAAA,CAAAA,CAAAA,MAAA,CAAIoF,kBAAkB,CAAC3O,KAAK,CAAC,CAAG,CAAA,CAAA;EAEvD,IAAA,IAAIqL,OAAK,CAAChM,QAAQ,CAACid,OAAO,CAAC,EAAE;EAC3BI,MAAAA,MAAM,CAACzW,IAAI,CAAAsD,UAAAA,CAAAA,MAAA,CAAY,IAAIuQ,IAAI,CAACwC,OAAO,CAAC,CAACK,WAAW,EAAE,CAAE,CAAC,CAAA;EAC3D,KAAA;EACA,IAAA,IAAItR,OAAK,CAACjM,QAAQ,CAACuN,IAAI,CAAC,EAAE;EACxB+P,MAAAA,MAAM,CAACzW,IAAI,CAAA,OAAA,CAAAsD,MAAA,CAASoD,IAAI,CAAE,CAAC,CAAA;EAC7B,KAAA;EACA,IAAA,IAAItB,OAAK,CAACjM,QAAQ,CAACmd,MAAM,CAAC,EAAE;EAC1BG,MAAAA,MAAM,CAACzW,IAAI,CAAA,SAAA,CAAAsD,MAAA,CAAWgT,MAAM,CAAE,CAAC,CAAA;EACjC,KAAA;MACA,IAAIC,MAAM,KAAK,IAAI,EAAE;EACnBE,MAAAA,MAAM,CAACzW,IAAI,CAAC,QAAQ,CAAC,CAAA;EACvB,KAAA;EACA,IAAA,IAAIoF,OAAK,CAACjM,QAAQ,CAACqd,QAAQ,CAAC,EAAE;EAC5BC,MAAAA,MAAM,CAACzW,IAAI,CAAA,WAAA,CAAAsD,MAAA,CAAakT,QAAQ,CAAE,CAAC,CAAA;EACrC,KAAA;MAEA3L,QAAQ,CAAC4L,MAAM,GAAGA,MAAM,CAAC5P,IAAI,CAAC,IAAI,CAAC,CAAA;KACpC;EAED8P,EAAAA,IAAI,EAAJA,SAAAA,IAAIA,CAAC3V,IAAI,EAAE;EACT,IAAA,IAAI,OAAO6J,QAAQ,KAAK,WAAW,EAAE,OAAO,IAAI,CAAA;EAChD,IAAA,IAAMlC,KAAK,GAAGkC,QAAQ,CAAC4L,MAAM,CAAC9N,KAAK,CAAC,IAAIiO,MAAM,CAAC,UAAU,GAAG5V,IAAI,GAAG,UAAU,CAAC,CAAC,CAAA;MAC/E,OAAO2H,KAAK,GAAGkO,kBAAkB,CAAClO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;KACnD;EAEDmO,EAAAA,MAAM,EAANA,SAAAA,MAAMA,CAAC9V,IAAI,EAAE;EACX,IAAA,IAAI,CAACoV,KAAK,CAACpV,IAAI,EAAE,EAAE,EAAE6S,IAAI,CAACD,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAA;EAClD,GAAA;EACF,CAAC;EACD;EACA;EACEwC,EAAAA,KAAK,EAALA,SAAAA,KAAKA,GAAG,EAAE;IACVO,IAAI,EAAA,SAAJA,IAAIA,GAAG;EACL,IAAA,OAAO,IAAI,CAAA;KACZ;EACDG,EAAAA,MAAM,EAANA,SAAAA,MAAMA,GAAG,EAAC;EACZ,CAAC;;EC7CL;EACA;EACA;EACA;EACA;EACA;EACA;EACe,SAASC,aAAaA,CAAC7N,GAAG,EAAE;EACzC;EACA;EACA;EACA,EAAA,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;EAC3B,IAAA,OAAO,KAAK,CAAA;EACd,GAAA;EAEA,EAAA,OAAO,6BAA6B,CAACjC,IAAI,CAACiC,GAAG,CAAC,CAAA;EAChD;;EChBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACe,SAAS8N,WAAWA,CAACC,OAAO,EAAEC,WAAW,EAAE;IACxD,OAAOA,WAAW,GACdD,OAAO,CAACnb,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,GAAG,GAAGob,WAAW,CAACpb,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GACrEmb,OAAO,CAAA;EACb;;ECTA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACe,SAASE,aAAaA,CAACF,OAAO,EAAEG,YAAY,EAAEC,iBAAiB,EAAE;EAC9E,EAAA,IAAIC,aAAa,GAAG,CAACP,aAAa,CAACK,YAAY,CAAC,CAAA;IAChD,IAAIH,OAAO,KAAKK,aAAa,IAAID,iBAAiB,IAAI,KAAK,CAAC,EAAE;EAC5D,IAAA,OAAOL,WAAW,CAACC,OAAO,EAAEG,YAAY,CAAC,CAAA;EAC3C,GAAA;EACA,EAAA,OAAOA,YAAY,CAAA;EACrB;;EChBA,IAAMG,eAAe,GAAG,SAAlBA,eAAeA,CAAI3f,KAAK,EAAA;IAAA,OAAMA,KAAK,YAAYgY,cAAY,GAAApE,cAAA,CAAQ5T,EAAAA,EAAAA,KAAK,IAAKA,KAAK,CAAA;EAAA,CAAC,CAAA;;EAEzF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACe,SAAS4f,WAAWA,CAACC,OAAO,EAAEC,OAAO,EAAE;EACpD;EACAA,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAAE,CAAA;IACvB,IAAMtT,MAAM,GAAG,EAAE,CAAA;IAEjB,SAASuT,cAAcA,CAACtV,MAAM,EAAED,MAAM,EAAE3D,IAAI,EAAEzB,QAAQ,EAAE;EACtD,IAAA,IAAIoI,OAAK,CAAC7L,aAAa,CAAC8I,MAAM,CAAC,IAAI+C,OAAK,CAAC7L,aAAa,CAAC6I,MAAM,CAAC,EAAE;EAC9D,MAAA,OAAOgD,OAAK,CAACtI,KAAK,CAAChF,IAAI,CAAC;EAAEkF,QAAAA,QAAQ,EAARA,QAAAA;EAAS,OAAC,EAAEqF,MAAM,EAAED,MAAM,CAAC,CAAA;OACtD,MAAM,IAAIgD,OAAK,CAAC7L,aAAa,CAAC6I,MAAM,CAAC,EAAE;QACtC,OAAOgD,OAAK,CAACtI,KAAK,CAAC,EAAE,EAAEsF,MAAM,CAAC,CAAA;OAC/B,MAAM,IAAIgD,OAAK,CAAC9M,OAAO,CAAC8J,MAAM,CAAC,EAAE;EAChC,MAAA,OAAOA,MAAM,CAACrK,KAAK,EAAE,CAAA;EACvB,KAAA;EACA,IAAA,OAAOqK,MAAM,CAAA;EACf,GAAA;IAEA,SAASwV,mBAAmBA,CAACva,CAAC,EAAEC,CAAC,EAAEmB,IAAI,EAAEzB,QAAQ,EAAE;EACjD,IAAA,IAAI,CAACoI,OAAK,CAAC5M,WAAW,CAAC8E,CAAC,CAAC,EAAE;QACzB,OAAOqa,cAAc,CAACta,CAAC,EAAEC,CAAC,EAAEmB,IAAI,EAAEzB,QAAQ,CAAC,CAAA;OAC5C,MAAM,IAAI,CAACoI,OAAK,CAAC5M,WAAW,CAAC6E,CAAC,CAAC,EAAE;QAChC,OAAOsa,cAAc,CAAC3c,SAAS,EAAEqC,CAAC,EAAEoB,IAAI,EAAEzB,QAAQ,CAAC,CAAA;EACrD,KAAA;EACF,GAAA;;EAEA;EACA,EAAA,SAAS6a,gBAAgBA,CAACxa,CAAC,EAAEC,CAAC,EAAE;EAC9B,IAAA,IAAI,CAAC8H,OAAK,CAAC5M,WAAW,CAAC8E,CAAC,CAAC,EAAE;EACzB,MAAA,OAAOqa,cAAc,CAAC3c,SAAS,EAAEsC,CAAC,CAAC,CAAA;EACrC,KAAA;EACF,GAAA;;EAEA;EACA,EAAA,SAASwa,gBAAgBA,CAACza,CAAC,EAAEC,CAAC,EAAE;EAC9B,IAAA,IAAI,CAAC8H,OAAK,CAAC5M,WAAW,CAAC8E,CAAC,CAAC,EAAE;EACzB,MAAA,OAAOqa,cAAc,CAAC3c,SAAS,EAAEsC,CAAC,CAAC,CAAA;OACpC,MAAM,IAAI,CAAC8H,OAAK,CAAC5M,WAAW,CAAC6E,CAAC,CAAC,EAAE;EAChC,MAAA,OAAOsa,cAAc,CAAC3c,SAAS,EAAEqC,CAAC,CAAC,CAAA;EACrC,KAAA;EACF,GAAA;;EAEA;EACA,EAAA,SAAS0a,eAAeA,CAAC1a,CAAC,EAAEC,CAAC,EAAEmB,IAAI,EAAE;MACnC,IAAIA,IAAI,IAAIiZ,OAAO,EAAE;EACnB,MAAA,OAAOC,cAAc,CAACta,CAAC,EAAEC,CAAC,CAAC,CAAA;EAC7B,KAAC,MAAM,IAAImB,IAAI,IAAIgZ,OAAO,EAAE;EAC1B,MAAA,OAAOE,cAAc,CAAC3c,SAAS,EAAEqC,CAAC,CAAC,CAAA;EACrC,KAAA;EACF,GAAA;EAEA,EAAA,IAAM2a,QAAQ,GAAG;EACf9O,IAAAA,GAAG,EAAE2O,gBAAgB;EACrB1J,IAAAA,MAAM,EAAE0J,gBAAgB;EACxB3U,IAAAA,IAAI,EAAE2U,gBAAgB;EACtBZ,IAAAA,OAAO,EAAEa,gBAAgB;EACzBlL,IAAAA,gBAAgB,EAAEkL,gBAAgB;EAClCxK,IAAAA,iBAAiB,EAAEwK,gBAAgB;EACnCG,IAAAA,gBAAgB,EAAEH,gBAAgB;EAClCnK,IAAAA,OAAO,EAAEmK,gBAAgB;EACzBI,IAAAA,cAAc,EAAEJ,gBAAgB;EAChCK,IAAAA,eAAe,EAAEL,gBAAgB;EACjCM,IAAAA,aAAa,EAAEN,gBAAgB;EAC/BnL,IAAAA,OAAO,EAAEmL,gBAAgB;EACzBtK,IAAAA,YAAY,EAAEsK,gBAAgB;EAC9BlK,IAAAA,cAAc,EAAEkK,gBAAgB;EAChCjK,IAAAA,cAAc,EAAEiK,gBAAgB;EAChCO,IAAAA,gBAAgB,EAAEP,gBAAgB;EAClCQ,IAAAA,kBAAkB,EAAER,gBAAgB;EACpCS,IAAAA,UAAU,EAAET,gBAAgB;EAC5BhK,IAAAA,gBAAgB,EAAEgK,gBAAgB;EAClC/J,IAAAA,aAAa,EAAE+J,gBAAgB;EAC/BU,IAAAA,cAAc,EAAEV,gBAAgB;EAChCW,IAAAA,SAAS,EAAEX,gBAAgB;EAC3BY,IAAAA,SAAS,EAAEZ,gBAAgB;EAC3Ba,IAAAA,UAAU,EAAEb,gBAAgB;EAC5Bc,IAAAA,WAAW,EAAEd,gBAAgB;EAC7Be,IAAAA,UAAU,EAAEf,gBAAgB;EAC5BgB,IAAAA,gBAAgB,EAAEhB,gBAAgB;EAClC9J,IAAAA,cAAc,EAAE+J,eAAe;MAC/BlL,OAAO,EAAE,SAATA,OAAOA,CAAGxP,CAAC,EAAEC,CAAC,EAAEmB,IAAI,EAAA;EAAA,MAAA,OAClBmZ,mBAAmB,CAACL,eAAe,CAACla,CAAC,CAAC,EAAEka,eAAe,CAACja,CAAC,CAAC,EAAEmB,IAAI,EAAE,IAAI,CAAC,CAAA;EAAA,KAAA;KAC1E,CAAA;IAED2G,OAAK,CAACrJ,OAAO,CAAC3E,MAAM,CAACqC,IAAI,CAAA+R,cAAA,CAAAA,cAAA,KAAMiM,OAAO,CAAA,EAAKC,OAAO,CAAE,CAAC,EAAE,SAASqB,kBAAkBA,CAACta,IAAI,EAAE;MACvF,IAAIA,IAAI,KAAK,WAAW,IAAIA,IAAI,KAAK,aAAa,IAAIA,IAAI,KAAK,WAAW,EAAE,OAAA;EAC5E,IAAA,IAAM3B,KAAK,GAAGsI,OAAK,CAACrB,UAAU,CAACiU,QAAQ,EAAEvZ,IAAI,CAAC,GAAGuZ,QAAQ,CAACvZ,IAAI,CAAC,GAAGmZ,mBAAmB,CAAA;EACrF,IAAA,IAAMoB,WAAW,GAAGlc,KAAK,CAAC2a,OAAO,CAAChZ,IAAI,CAAC,EAAEiZ,OAAO,CAACjZ,IAAI,CAAC,EAAEA,IAAI,CAAC,CAAA;EAC5D2G,IAAAA,OAAK,CAAC5M,WAAW,CAACwgB,WAAW,CAAC,IAAIlc,KAAK,KAAKib,eAAe,KAAM3T,MAAM,CAAC3F,IAAI,CAAC,GAAGua,WAAW,CAAC,CAAA;EAC/F,GAAC,CAAC,CAAA;EAEF,EAAA,OAAO5U,MAAM,CAAA;EACf;;ACjGA,sBAAe,CAAA,UAACA,MAAM,EAAK;IACzB,IAAM6U,SAAS,GAAGzB,WAAW,CAAC,EAAE,EAAEpT,MAAM,CAAC,CAAA;EAEzC,EAAA,IAAMlB,IAAI,GAAmE+V,SAAS,CAAhF/V,IAAI;MAAEkV,aAAa,GAAoDa,SAAS,CAA1Eb,aAAa;MAAEvK,cAAc,GAAoCoL,SAAS,CAA3DpL,cAAc;MAAED,cAAc,GAAoBqL,SAAS,CAA3CrL,cAAc;MAAEf,OAAO,GAAWoM,SAAS,CAA3BpM,OAAO;MAAEqM,IAAI,GAAKD,SAAS,CAAlBC,IAAI,CAAA;IAExED,SAAS,CAACpM,OAAO,GAAGA,OAAO,GAAG+C,cAAY,CAACvK,IAAI,CAACwH,OAAO,CAAC,CAAA;IAExDoM,SAAS,CAAC/P,GAAG,GAAGD,QAAQ,CACtBkO,aAAa,CAAC8B,SAAS,CAAChC,OAAO,EAAEgC,SAAS,CAAC/P,GAAG,EAAE+P,SAAS,CAAC5B,iBAAiB,CAAC,EAC5EjT,MAAM,CAACyE,MAAM,EACbzE,MAAM,CAAC6T,gBACT,CAAC,CAAA;;EAED;EACA,EAAA,IAAIiB,IAAI,EAAE;EACRrM,IAAAA,OAAO,CAACzL,GAAG,CACT,eAAe,EACf,QAAQ,GACN+X,IAAI,CACF,CAACD,IAAI,CAACE,QAAQ,IAAI,EAAE,IAClB,GAAG,IACFF,IAAI,CAACG,QAAQ,GAAGC,QAAQ,CAAC5Q,kBAAkB,CAACwQ,IAAI,CAACG,QAAQ,CAAC,CAAC,GAAG,EAAE,CACrE,CACJ,CAAC,CAAA;EACH,GAAA;EAEA,EAAA,IAAIjU,OAAK,CAACnK,UAAU,CAACiI,IAAI,CAAC,EAAE;EAC1B,IAAA,IAAIuI,QAAQ,CAACT,qBAAqB,IAAIS,QAAQ,CAACP,8BAA8B,EAAE;EAC7E2B,MAAAA,OAAO,CAACK,cAAc,CAAClS,SAAS,CAAC,CAAC;OACnC,MAAM,IAAIoK,OAAK,CAACxM,UAAU,CAACsK,IAAI,CAACqW,UAAU,CAAC,EAAE;EAC5C;EACA,MAAA,IAAMC,WAAW,GAAGtW,IAAI,CAACqW,UAAU,EAAE,CAAA;EACrC;EACA,MAAA,IAAME,cAAc,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAA;QACzDriB,MAAM,CAAC+U,OAAO,CAACqN,WAAW,CAAC,CAACzd,OAAO,CAAC,UAAAE,IAAA,EAAgB;EAAA,QAAA,IAAAc,KAAA,GAAAvB,cAAA,CAAAS,IAAA,EAAA,CAAA,CAAA;EAAdO,UAAAA,GAAG,GAAAO,KAAA,CAAA,CAAA,CAAA;EAAErE,UAAAA,GAAG,GAAAqE,KAAA,CAAA,CAAA,CAAA,CAAA;UAC5C,IAAI0c,cAAc,CAACC,QAAQ,CAACld,GAAG,CAACxE,WAAW,EAAE,CAAC,EAAE;EAC9C6U,UAAAA,OAAO,CAACzL,GAAG,CAAC5E,GAAG,EAAE9D,GAAG,CAAC,CAAA;EACvB,SAAA;EACF,OAAC,CAAC,CAAA;EACJ,KAAA;EACF,GAAA;;EAEA;EACA;EACA;;IAEA,IAAI+S,QAAQ,CAACT,qBAAqB,EAAE;EAClCoN,IAAAA,aAAa,IAAIhT,OAAK,CAACxM,UAAU,CAACwf,aAAa,CAAC,KAAKA,aAAa,GAAGA,aAAa,CAACa,SAAS,CAAC,CAAC,CAAA;EAE9F,IAAA,IAAIb,aAAa,IAAKA,aAAa,KAAK,KAAK,IAAIuB,eAAe,CAACV,SAAS,CAAC/P,GAAG,CAAE,EAAE;EAChF;QACA,IAAM0Q,SAAS,GAAG/L,cAAc,IAAID,cAAc,IAAIiM,OAAO,CAAClD,IAAI,CAAC/I,cAAc,CAAC,CAAA;EAElF,MAAA,IAAIgM,SAAS,EAAE;EACb/M,QAAAA,OAAO,CAACzL,GAAG,CAACyM,cAAc,EAAE+L,SAAS,CAAC,CAAA;EACxC,OAAA;EACF,KAAA;EACF,GAAA;EAEA,EAAA,OAAOX,SAAS,CAAA;EAClB,CAAC;;EC1DD,IAAMa,qBAAqB,GAAG,OAAOC,cAAc,KAAK,WAAW,CAAA;AAEnE,mBAAeD,qBAAqB,IAClC,UAAU1V,MAAM,EAAE;IAChB,OAAO,IAAI4V,OAAO,CAAC,SAASC,kBAAkBA,CAAClH,OAAO,EAAEC,MAAM,EAAE;EAC9D,IAAA,IAAMkH,OAAO,GAAGC,aAAa,CAAC/V,MAAM,CAAC,CAAA;EACrC,IAAA,IAAIgW,WAAW,GAAGF,OAAO,CAAChX,IAAI,CAAA;EAC9B,IAAA,IAAMmX,cAAc,GAAGzK,cAAY,CAACvK,IAAI,CAAC6U,OAAO,CAACrN,OAAO,CAAC,CAACwE,SAAS,EAAE,CAAA;EACrE,IAAA,IAAM7D,YAAY,GAA2C0M,OAAO,CAA9D1M,YAAY;QAAE6K,gBAAgB,GAAyB6B,OAAO,CAAhD7B,gBAAgB;QAAEC,kBAAkB,GAAK4B,OAAO,CAA9B5B,kBAAkB,CAAA;EACxD,IAAA,IAAIgC,UAAU,CAAA;MACd,IAAIC,eAAe,EAAEC,iBAAiB,CAAA;MACtC,IAAIC,WAAW,EAAEC,aAAa,CAAA;MAE9B,SAAShb,IAAIA,GAAG;EACd+a,MAAAA,WAAW,IAAIA,WAAW,EAAE,CAAC;EAC7BC,MAAAA,aAAa,IAAIA,aAAa,EAAE,CAAC;;QAEjCR,OAAO,CAACtB,WAAW,IAAIsB,OAAO,CAACtB,WAAW,CAAC+B,WAAW,CAACL,UAAU,CAAC,CAAA;EAElEJ,MAAAA,OAAO,CAACU,MAAM,IAAIV,OAAO,CAACU,MAAM,CAACC,mBAAmB,CAAC,OAAO,EAAEP,UAAU,CAAC,CAAA;EAC3E,KAAA;EAEA,IAAA,IAAIjW,OAAO,GAAG,IAAI0V,cAAc,EAAE,CAAA;EAElC1V,IAAAA,OAAO,CAACyW,IAAI,CAACZ,OAAO,CAAC/L,MAAM,CAAC5N,WAAW,EAAE,EAAE2Z,OAAO,CAAChR,GAAG,EAAE,IAAI,CAAC,CAAA;;EAE7D;EACA7E,IAAAA,OAAO,CAACsJ,OAAO,GAAGuM,OAAO,CAACvM,OAAO,CAAA;MAEjC,SAASoN,SAASA,GAAG;QACnB,IAAI,CAAC1W,OAAO,EAAE;EACZ,QAAA,OAAA;EACF,OAAA;EACA;EACA,MAAA,IAAM2W,eAAe,GAAGpL,cAAY,CAACvK,IAAI,CACvC,uBAAuB,IAAIhB,OAAO,IAAIA,OAAO,CAAC4W,qBAAqB,EACrE,CAAC,CAAA;EACD,MAAA,IAAMC,YAAY,GAChB,CAAC1N,YAAY,IAAIA,YAAY,KAAK,MAAM,IAAIA,YAAY,KAAK,MAAM,GAC/DnJ,OAAO,CAAC8W,YAAY,GACpB9W,OAAO,CAACC,QAAQ,CAAA;EACtB,MAAA,IAAMA,QAAQ,GAAG;EACfpB,QAAAA,IAAI,EAAEgY,YAAY;UAClBvW,MAAM,EAAEN,OAAO,CAACM,MAAM;UACtByW,UAAU,EAAE/W,OAAO,CAAC+W,UAAU;EAC9BvO,QAAAA,OAAO,EAAEmO,eAAe;EACxB5W,QAAAA,MAAM,EAANA,MAAM;EACNC,QAAAA,OAAO,EAAPA,OAAAA;SACD,CAAA;EAEDyO,MAAAA,MAAM,CACJ,SAASuI,QAAQA,CAACthB,KAAK,EAAE;UACvBgZ,OAAO,CAAChZ,KAAK,CAAC,CAAA;EACd2F,QAAAA,IAAI,EAAE,CAAA;EACR,OAAC,EACD,SAAS4b,OAAOA,CAACzK,GAAG,EAAE;UACpBmC,MAAM,CAACnC,GAAG,CAAC,CAAA;EACXnR,QAAAA,IAAI,EAAE,CAAA;SACP,EACD4E,QACF,CAAC,CAAA;;EAED;EACAD,MAAAA,OAAO,GAAG,IAAI,CAAA;EAChB,KAAA;MAEA,IAAI,WAAW,IAAIA,OAAO,EAAE;EAC1B;QACAA,OAAO,CAAC0W,SAAS,GAAGA,SAAS,CAAA;EAC/B,KAAC,MAAM;EACL;EACA1W,MAAAA,OAAO,CAACkX,kBAAkB,GAAG,SAASC,UAAUA,GAAG;UACjD,IAAI,CAACnX,OAAO,IAAIA,OAAO,CAACoX,UAAU,KAAK,CAAC,EAAE;EACxC,UAAA,OAAA;EACF,SAAA;;EAEA;EACA;EACA;EACA;UACA,IACEpX,OAAO,CAACM,MAAM,KAAK,CAAC,IACpB,EAAEN,OAAO,CAACqX,WAAW,IAAIrX,OAAO,CAACqX,WAAW,CAAC1c,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EACpE;EACA,UAAA,OAAA;EACF,SAAA;EACA;EACA;UACAyE,UAAU,CAACsX,SAAS,CAAC,CAAA;SACtB,CAAA;EACH,KAAA;;EAEA;EACA1W,IAAAA,OAAO,CAACsX,OAAO,GAAG,SAASC,WAAWA,GAAG;QACvC,IAAI,CAACvX,OAAO,EAAE;EACZ,QAAA,OAAA;EACF,OAAA;EAEA2O,MAAAA,MAAM,CAAC,IAAIhP,YAAU,CAAC,iBAAiB,EAAEA,YAAU,CAAC6B,YAAY,EAAEzB,MAAM,EAAEC,OAAO,CAAC,CAAC,CAAA;;EAEnF;EACAA,MAAAA,OAAO,GAAG,IAAI,CAAA;OACf,CAAA;;EAED;EACAA,IAAAA,OAAO,CAACwX,OAAO,GAAG,SAASC,WAAWA,CAACnG,KAAK,EAAE;EAC5C;EACA;EACA;EACA,MAAA,IAAMoG,GAAG,GAAGpG,KAAK,IAAIA,KAAK,CAACzR,OAAO,GAAGyR,KAAK,CAACzR,OAAO,GAAG,eAAe,CAAA;EACpE,MAAA,IAAM2M,GAAG,GAAG,IAAI7M,YAAU,CAAC+X,GAAG,EAAE/X,YAAU,CAAC+B,WAAW,EAAE3B,MAAM,EAAEC,OAAO,CAAC,CAAA;EACxE;EACAwM,MAAAA,GAAG,CAAC8E,KAAK,GAAGA,KAAK,IAAI,IAAI,CAAA;QACzB3C,MAAM,CAACnC,GAAG,CAAC,CAAA;EACXxM,MAAAA,OAAO,GAAG,IAAI,CAAA;OACf,CAAA;;EAED;EACAA,IAAAA,OAAO,CAAC2X,SAAS,GAAG,SAASC,aAAaA,GAAG;EAC3C,MAAA,IAAIC,mBAAmB,GAAGhC,OAAO,CAACvM,OAAO,GACrC,aAAa,GAAGuM,OAAO,CAACvM,OAAO,GAAG,aAAa,GAC/C,kBAAkB,CAAA;EACtB,MAAA,IAAMlB,YAAY,GAAGyN,OAAO,CAACzN,YAAY,IAAIC,oBAAoB,CAAA;QACjE,IAAIwN,OAAO,CAACgC,mBAAmB,EAAE;UAC/BA,mBAAmB,GAAGhC,OAAO,CAACgC,mBAAmB,CAAA;EACnD,OAAA;QACAlJ,MAAM,CACJ,IAAIhP,YAAU,CACZkY,mBAAmB,EACnBzP,YAAY,CAACnC,mBAAmB,GAAGtG,YAAU,CAAC8B,SAAS,GAAG9B,YAAU,CAAC6B,YAAY,EACjFzB,MAAM,EACNC,OACF,CACF,CAAC,CAAA;;EAED;EACAA,MAAAA,OAAO,GAAG,IAAI,CAAA;OACf,CAAA;;EAED;MACA+V,WAAW,KAAKpf,SAAS,IAAIqf,cAAc,CAACnN,cAAc,CAAC,IAAI,CAAC,CAAA;;EAEhE;MACA,IAAI,kBAAkB,IAAI7I,OAAO,EAAE;EACjCe,MAAAA,OAAK,CAACrJ,OAAO,CAACse,cAAc,CAACvV,MAAM,EAAE,EAAE,SAASqX,gBAAgBA,CAACzjB,GAAG,EAAE8D,GAAG,EAAE;EACzE6H,QAAAA,OAAO,CAAC8X,gBAAgB,CAAC3f,GAAG,EAAE9D,GAAG,CAAC,CAAA;EACpC,OAAC,CAAC,CAAA;EACJ,KAAA;;EAEA;MACA,IAAI,CAAC0M,OAAK,CAAC5M,WAAW,CAAC0hB,OAAO,CAAC/B,eAAe,CAAC,EAAE;EAC/C9T,MAAAA,OAAO,CAAC8T,eAAe,GAAG,CAAC,CAAC+B,OAAO,CAAC/B,eAAe,CAAA;EACrD,KAAA;;EAEA;EACA,IAAA,IAAI3K,YAAY,IAAIA,YAAY,KAAK,MAAM,EAAE;EAC3CnJ,MAAAA,OAAO,CAACmJ,YAAY,GAAG0M,OAAO,CAAC1M,YAAY,CAAA;EAC7C,KAAA;;EAEA;EACA,IAAA,IAAI8K,kBAAkB,EAAE;EAAA,MAAA,IAAA8D,qBAAA,GACevH,oBAAoB,CAACyD,kBAAkB,EAAE,IAAI,CAAC,CAAA;EAAA,MAAA,IAAA+D,sBAAA,GAAA7gB,cAAA,CAAA4gB,qBAAA,EAAA,CAAA,CAAA,CAAA;EAAlF5B,MAAAA,iBAAiB,GAAA6B,sBAAA,CAAA,CAAA,CAAA,CAAA;EAAE3B,MAAAA,aAAa,GAAA2B,sBAAA,CAAA,CAAA,CAAA,CAAA;EACjChY,MAAAA,OAAO,CAACrB,gBAAgB,CAAC,UAAU,EAAEwX,iBAAiB,CAAC,CAAA;EACzD,KAAA;;EAEA;EACA,IAAA,IAAInC,gBAAgB,IAAIhU,OAAO,CAACiY,MAAM,EAAE;EAAA,MAAA,IAAAC,sBAAA,GACL1H,oBAAoB,CAACwD,gBAAgB,CAAC,CAAA;EAAA,MAAA,IAAAmE,sBAAA,GAAAhhB,cAAA,CAAA+gB,sBAAA,EAAA,CAAA,CAAA,CAAA;EAAtEhC,MAAAA,eAAe,GAAAiC,sBAAA,CAAA,CAAA,CAAA,CAAA;EAAE/B,MAAAA,WAAW,GAAA+B,sBAAA,CAAA,CAAA,CAAA,CAAA;QAE7BnY,OAAO,CAACiY,MAAM,CAACtZ,gBAAgB,CAAC,UAAU,EAAEuX,eAAe,CAAC,CAAA;QAE5DlW,OAAO,CAACiY,MAAM,CAACtZ,gBAAgB,CAAC,SAAS,EAAEyX,WAAW,CAAC,CAAA;EACzD,KAAA;EAEA,IAAA,IAAIP,OAAO,CAACtB,WAAW,IAAIsB,OAAO,CAACU,MAAM,EAAE;EACzC;EACA;EACAN,MAAAA,UAAU,GAAG,SAAbA,UAAUA,CAAImC,MAAM,EAAK;UACvB,IAAI,CAACpY,OAAO,EAAE;EACZ,UAAA,OAAA;EACF,SAAA;EACA2O,QAAAA,MAAM,CAAC,CAACyJ,MAAM,IAAIA,MAAM,CAACtkB,IAAI,GAAG,IAAIya,eAAa,CAAC,IAAI,EAAExO,MAAM,EAAEC,OAAO,CAAC,GAAGoY,MAAM,CAAC,CAAA;UAClFpY,OAAO,CAACqY,KAAK,EAAE,CAAA;EACfrY,QAAAA,OAAO,GAAG,IAAI,CAAA;SACf,CAAA;QAED6V,OAAO,CAACtB,WAAW,IAAIsB,OAAO,CAACtB,WAAW,CAAC+D,SAAS,CAACrC,UAAU,CAAC,CAAA;QAChE,IAAIJ,OAAO,CAACU,MAAM,EAAE;EAClBV,QAAAA,OAAO,CAACU,MAAM,CAACgC,OAAO,GAClBtC,UAAU,EAAE,GACZJ,OAAO,CAACU,MAAM,CAAC5X,gBAAgB,CAAC,OAAO,EAAEsX,UAAU,CAAC,CAAA;EAC1D,OAAA;EACF,KAAA;EAEA,IAAA,IAAMtE,QAAQ,GAAG9C,aAAa,CAACgH,OAAO,CAAChR,GAAG,CAAC,CAAA;EAE3C,IAAA,IAAI8M,QAAQ,IAAIvK,QAAQ,CAACd,SAAS,CAAC3L,OAAO,CAACgX,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;EAC3DhD,MAAAA,MAAM,CACJ,IAAIhP,YAAU,CACZ,uBAAuB,GAAGgS,QAAQ,GAAG,GAAG,EACxChS,YAAU,CAACmC,eAAe,EAC1B/B,MACF,CACF,CAAC,CAAA;EACD,MAAA,OAAA;EACF,KAAA;;EAEA;EACAC,IAAAA,OAAO,CAACwY,IAAI,CAACzC,WAAW,IAAI,IAAI,CAAC,CAAA;EACnC,GAAC,CAAC,CAAA;EACJ,CAAC;;ECzNH,IAAM0C,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,OAAO,EAAEpP,OAAO,EAAK;EAC3C,EAAA,IAAAqP,QAAA,GAAoBD,OAAO,GAAGA,OAAO,GAAGA,OAAO,CAACxe,MAAM,CAAC0e,OAAO,CAAC,GAAG,EAAE;MAA5DvjB,MAAM,GAAAsjB,QAAA,CAANtjB,MAAM,CAAA;IAEd,IAAIiU,OAAO,IAAIjU,MAAM,EAAE;EACrB,IAAA,IAAIwjB,UAAU,GAAG,IAAIC,eAAe,EAAE,CAAA;EAEtC,IAAA,IAAIP,OAAO,CAAA;EAEX,IAAA,IAAMjB,OAAO,GAAG,SAAVA,OAAOA,CAAayB,MAAM,EAAE;QAChC,IAAI,CAACR,OAAO,EAAE;EACZA,QAAAA,OAAO,GAAG,IAAI,CAAA;EACdjC,QAAAA,WAAW,EAAE,CAAA;UACb,IAAM9J,GAAG,GAAGuM,MAAM,YAAY/b,KAAK,GAAG+b,MAAM,GAAG,IAAI,CAACA,MAAM,CAAA;UAC1DF,UAAU,CAACR,KAAK,CACd7L,GAAG,YAAY7M,YAAU,GACrB6M,GAAG,GACH,IAAI+B,eAAa,CAAC/B,GAAG,YAAYxP,KAAK,GAAGwP,GAAG,CAAC3M,OAAO,GAAG2M,GAAG,CAChE,CAAC,CAAA;EACH,OAAA;OACD,CAAA;EAED,IAAA,IAAI0D,KAAK,GACP5G,OAAO,IACPlK,UAAU,CAAC,YAAM;EACf8Q,MAAAA,KAAK,GAAG,IAAI,CAAA;EACZoH,MAAAA,OAAO,CAAC,IAAI3X,YAAU,CAAA,aAAA,CAAAV,MAAA,CAAeqK,OAAO,EAAA,aAAA,CAAA,EAAe3J,YAAU,CAAC8B,SAAS,CAAC,CAAC,CAAA;OAClF,EAAE6H,OAAO,CAAC,CAAA;EAEb,IAAA,IAAMgN,WAAW,GAAG,SAAdA,WAAWA,GAAS;EACxB,MAAA,IAAIoC,OAAO,EAAE;EACXxI,QAAAA,KAAK,IAAIG,YAAY,CAACH,KAAK,CAAC,CAAA;EAC5BA,QAAAA,KAAK,GAAG,IAAI,CAAA;EACZwI,QAAAA,OAAO,CAAChhB,OAAO,CAAC,UAAC6e,MAAM,EAAK;EAC1BA,UAAAA,MAAM,CAACD,WAAW,GACdC,MAAM,CAACD,WAAW,CAACgB,OAAO,CAAC,GAC3Bf,MAAM,CAACC,mBAAmB,CAAC,OAAO,EAAEc,OAAO,CAAC,CAAA;EAClD,SAAC,CAAC,CAAA;EACFoB,QAAAA,OAAO,GAAG,IAAI,CAAA;EAChB,OAAA;OACD,CAAA;EAEDA,IAAAA,OAAO,CAAChhB,OAAO,CAAC,UAAC6e,MAAM,EAAA;EAAA,MAAA,OAAKA,MAAM,CAAC5X,gBAAgB,CAAC,OAAO,EAAE2Y,OAAO,CAAC,CAAA;OAAC,CAAA,CAAA;EAEtE,IAAA,IAAQf,MAAM,GAAKsC,UAAU,CAArBtC,MAAM,CAAA;MAEdA,MAAM,CAACD,WAAW,GAAG,YAAA;EAAA,MAAA,OAAMvV,OAAK,CAAC1B,IAAI,CAACiX,WAAW,CAAC,CAAA;EAAA,KAAA,CAAA;EAElD,IAAA,OAAOC,MAAM,CAAA;EACf,GAAA;EACF,CAAC,CAAA;AAED,yBAAekC,cAAc;;ECvDtB,IAAMO,WAAW,gBAAAC,YAAA,EAAAld,CAAAA,CAAA,CAAG,SAAdid,WAAWA,CAAcE,KAAK,EAAEC,SAAS,EAAA;EAAA,EAAA,IAAAjhB,GAAA,EAAAkhB,GAAA,EAAAC,GAAA,CAAA;EAAA,EAAA,OAAAJ,YAAA,EAAA,CAAAlO,CAAA,CAAA,UAAAuO,QAAA,EAAA;MAAA,OAAAA,CAAAA,EAAAA,QAAAA,QAAA,CAAAjN,CAAA;EAAA,MAAA,KAAA,CAAA;UAChDnU,GAAG,GAAGghB,KAAK,CAACK,UAAU,CAAA;EAAA,QAAA,IAAA,EAEtB,CAACJ,SAAS,IAAIjhB,GAAG,GAAGihB,SAAS,CAAA,EAAA;EAAAG,UAAAA,QAAA,CAAAjN,CAAA,GAAA,CAAA,CAAA;EAAA,UAAA,MAAA;EAAA,SAAA;EAAAiN,QAAAA,QAAA,CAAAjN,CAAA,GAAA,CAAA,CAAA;EAC/B,QAAA,OAAM6M,KAAK,CAAA;EAAA,MAAA,KAAA,CAAA;UAAA,OAAAI,QAAA,CAAAtgB,CAAA,CAAA,CAAA,CAAA,CAAA;EAAA,MAAA,KAAA,CAAA;EAITogB,QAAAA,GAAG,GAAG,CAAC,CAAA;EAAA,MAAA,KAAA,CAAA;UAAA,IAGJA,EAAAA,GAAG,GAAGlhB,GAAG,CAAA,EAAA;EAAAohB,UAAAA,QAAA,CAAAjN,CAAA,GAAA,CAAA,CAAA;EAAA,UAAA,MAAA;EAAA,SAAA;UACdgN,GAAG,GAAGD,GAAG,GAAGD,SAAS,CAAA;EAACG,QAAAA,QAAA,CAAAjN,CAAA,GAAA,CAAA,CAAA;EACtB,QAAA,OAAM6M,KAAK,CAACxlB,KAAK,CAAC0lB,GAAG,EAAEC,GAAG,CAAC,CAAA;EAAA,MAAA,KAAA,CAAA;EAC3BD,QAAAA,GAAG,GAAGC,GAAG,CAAA;EAACC,QAAAA,QAAA,CAAAjN,CAAA,GAAA,CAAA,CAAA;EAAA,QAAA,MAAA;EAAA,MAAA,KAAA,CAAA;UAAA,OAAAiN,QAAA,CAAAtgB,CAAA,CAAA,CAAA,CAAA,CAAA;EAAA,KAAA;EAAA,GAAA,EAdDggB,WAAW,CAAA,CAAA;EAAA,CAgBvB,CAAA,CAAA;EAEM,IAAMQ,SAAS,gBAAA,YAAA;EAAA,EAAA,IAAA5hB,IAAA,GAAA6hB,mBAAA,cAAAR,YAAA,EAAA,CAAAld,CAAA,CAAG,SAAA2d,OAAAA,CAAiBC,QAAQ,EAAER,SAAS,EAAA;EAAA,IAAA,IAAAS,yBAAA,EAAAC,iBAAA,EAAAC,cAAA,EAAA3e,SAAA,EAAAgR,KAAA,EAAA+M,KAAA,EAAAa,EAAA,CAAA;EAAA,IAAA,OAAAd,YAAA,EAAA,CAAAlO,CAAA,CAAA,UAAAiP,SAAA,EAAA;EAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAC,CAAA,GAAAD,SAAA,CAAA3N,CAAA;EAAA,QAAA,KAAA,CAAA;YAAAuN,yBAAA,GAAA,KAAA,CAAA;YAAAC,iBAAA,GAAA,KAAA,CAAA;EAAAG,UAAAA,SAAA,CAAAC,CAAA,GAAA,CAAA,CAAA;EAAA9e,UAAAA,SAAA,GAAA+e,cAAA,CACjCC,UAAU,CAACR,QAAQ,CAAC,CAAA,CAAA;EAAA,QAAA,KAAA,CAAA;EAAAK,UAAAA,SAAA,CAAA3N,CAAA,GAAA,CAAA,CAAA;EAAA,UAAA,OAAA+N,oBAAA,CAAAjf,SAAA,CAAAC,IAAA,EAAA,CAAA,CAAA;EAAA,QAAA,KAAA,CAAA;YAAA,IAAAwe,EAAAA,yBAAA,KAAAzN,KAAA,GAAA6N,SAAA,CAAAK,CAAA,EAAAhf,IAAA,CAAA,EAAA;EAAA2e,YAAAA,SAAA,CAAA3N,CAAA,GAAA,CAAA,CAAA;EAAA,YAAA,MAAA;EAAA,WAAA;YAA7B6M,KAAK,GAAA/M,KAAA,CAAAzW,KAAA,CAAA;EACpB,UAAA,OAAAskB,SAAA,CAAAM,CAAA,CAAAC,kBAAA,CAAAC,uBAAA,CAAAN,cAAA,CAAOlB,WAAW,CAACE,KAAK,EAAEC,SAAS,CAAC,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;EAAA,QAAA,KAAA,CAAA;YAAAS,yBAAA,GAAA,KAAA,CAAA;EAAAI,UAAAA,SAAA,CAAA3N,CAAA,GAAA,CAAA,CAAA;EAAA,UAAA,MAAA;EAAA,QAAA,KAAA,CAAA;EAAA2N,UAAAA,SAAA,CAAA3N,CAAA,GAAA,CAAA,CAAA;EAAA,UAAA,MAAA;EAAA,QAAA,KAAA,CAAA;EAAA2N,UAAAA,SAAA,CAAAC,CAAA,GAAA,CAAA,CAAA;YAAAF,EAAA,GAAAC,SAAA,CAAAK,CAAA,CAAA;YAAAR,iBAAA,GAAA,IAAA,CAAA;EAAAC,UAAAA,cAAA,GAAAC,EAAA,CAAA;EAAA,QAAA,KAAA,CAAA;EAAAC,UAAAA,SAAA,CAAAC,CAAA,GAAA,CAAA,CAAA;EAAAD,UAAAA,SAAA,CAAAC,CAAA,GAAA,CAAA,CAAA;YAAA,IAAAL,EAAAA,yBAAA,IAAAze,SAAA,CAAA,QAAA,CAAA,IAAA,IAAA,CAAA,EAAA;EAAA6e,YAAAA,SAAA,CAAA3N,CAAA,GAAA,CAAA,CAAA;EAAA,YAAA,MAAA;EAAA,WAAA;EAAA2N,UAAAA,SAAA,CAAA3N,CAAA,GAAA,CAAA,CAAA;YAAA,OAAA+N,oBAAA,CAAAjf,SAAA,CAAA,QAAA,CAAA,EAAA,CAAA,CAAA;EAAA,QAAA,KAAA,CAAA;EAAA6e,UAAAA,SAAA,CAAAC,CAAA,GAAA,CAAA,CAAA;EAAA,UAAA,IAAA,CAAAJ,iBAAA,EAAA;EAAAG,YAAAA,SAAA,CAAA3N,CAAA,GAAA,EAAA,CAAA;EAAA,YAAA,MAAA;EAAA,WAAA;EAAA,UAAA,MAAAyN,cAAA,CAAA;EAAA,QAAA,KAAA,EAAA;YAAA,OAAAE,SAAA,CAAAvN,CAAA,CAAA,CAAA,CAAA,CAAA;EAAA,QAAA,KAAA,EAAA;YAAA,OAAAuN,SAAA,CAAAvN,CAAA,CAAA,CAAA,CAAA,CAAA;EAAA,QAAA,KAAA,EAAA;YAAA,OAAAuN,SAAA,CAAAhhB,CAAA,CAAA,CAAA,CAAA,CAAA;EAAA,OAAA;EAAA,KAAA,EAAA0gB,OAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,GAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;KAEvC,CAAA,CAAA,CAAA;EAAA,EAAA,OAAA,SAJYF,SAASA,CAAAiB,EAAA,EAAAC,GAAA,EAAA;EAAA,IAAA,OAAA9iB,IAAA,CAAAhF,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;EAAA,GAAA,CAAA;EAAA,CAIrB,EAAA,CAAA;EAED,IAAMsnB,UAAU,gBAAA,YAAA;IAAA,IAAAzhB,KAAA,GAAA+gB,mBAAA,cAAAR,YAAA,GAAAld,CAAA,CAAG,SAAA4e,QAAAA,CAAiBC,MAAM,EAAA;EAAA,IAAA,IAAAC,MAAA,EAAAC,qBAAA,EAAAzf,IAAA,EAAA3F,KAAA,CAAA;EAAA,IAAA,OAAAujB,YAAA,EAAA,CAAAlO,CAAA,CAAA,UAAAgQ,SAAA,EAAA;EAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAd,CAAA,GAAAc,SAAA,CAAA1O,CAAA;EAAA,QAAA,KAAA,CAAA;EAAA,UAAA,IAAA,CACpCuO,MAAM,CAACznB,MAAM,CAAC6nB,aAAa,CAAC,EAAA;EAAAD,YAAAA,SAAA,CAAA1O,CAAA,GAAA,CAAA,CAAA;EAAA,YAAA,MAAA;EAAA,WAAA;EAC9B,UAAA,OAAA0O,SAAA,CAAAT,CAAA,CAAAC,kBAAA,CAAAC,uBAAA,CAAAN,cAAA,CAAOU,MAAM,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;EAAA,QAAA,KAAA,CAAA;YAAA,OAAAG,SAAA,CAAA/hB,CAAA,CAAA,CAAA,CAAA,CAAA;EAAA,QAAA,KAAA,CAAA;EAIT6hB,UAAAA,MAAM,GAAGD,MAAM,CAACK,SAAS,EAAE,CAAA;EAAAF,UAAAA,SAAA,CAAAd,CAAA,GAAA,CAAA,CAAA;EAAA,QAAA,KAAA,CAAA;EAAAc,UAAAA,SAAA,CAAA1O,CAAA,GAAA,CAAA,CAAA;EAAA,UAAA,OAAA+N,oBAAA,CAGCS,MAAM,CAACvI,IAAI,EAAE,CAAA,CAAA;EAAA,QAAA,KAAA,CAAA;YAAAwI,qBAAA,GAAAC,SAAA,CAAAV,CAAA,CAAA;YAAnChf,IAAI,GAAAyf,qBAAA,CAAJzf,IAAI,CAAA;YAAE3F,KAAK,GAAAolB,qBAAA,CAALplB,KAAK,CAAA;EAAA,UAAA,IAAA,CACf2F,IAAI,EAAA;EAAA0f,YAAAA,SAAA,CAAA1O,CAAA,GAAA,CAAA,CAAA;EAAA,YAAA,MAAA;EAAA,WAAA;YAAA,OAAA0O,SAAA,CAAA/hB,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;EAAA,QAAA,KAAA,CAAA;EAAA+hB,UAAAA,SAAA,CAAA1O,CAAA,GAAA,CAAA,CAAA;EAGR,UAAA,OAAM3W,KAAK,CAAA;EAAA,QAAA,KAAA,CAAA;EAAAqlB,UAAAA,SAAA,CAAA1O,CAAA,GAAA,CAAA,CAAA;EAAA,UAAA,MAAA;EAAA,QAAA,KAAA,CAAA;EAAA0O,UAAAA,SAAA,CAAAd,CAAA,GAAA,CAAA,CAAA;EAAAc,UAAAA,SAAA,CAAA1O,CAAA,GAAA,CAAA,CAAA;EAAA,UAAA,OAAA+N,oBAAA,CAGPS,MAAM,CAACzC,MAAM,EAAE,CAAA,CAAA;EAAA,QAAA,KAAA,CAAA;YAAA,OAAA2C,SAAA,CAAAtO,CAAA,CAAA,CAAA,CAAA,CAAA;EAAA,QAAA,KAAA,EAAA;YAAA,OAAAsO,SAAA,CAAA/hB,CAAA,CAAA,CAAA,CAAA,CAAA;EAAA,OAAA;EAAA,KAAA,EAAA2hB,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,GAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;KAExB,CAAA,CAAA,CAAA;IAAA,OAlBKR,SAAAA,UAAUA,CAAAe,GAAA,EAAA;EAAA,IAAA,OAAAxiB,KAAA,CAAA9F,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;EAAA,GAAA,CAAA;EAAA,CAkBf,EAAA,CAAA;EAEM,IAAMsoB,WAAW,GAAG,SAAdA,WAAWA,CAAIP,MAAM,EAAEzB,SAAS,EAAEiC,UAAU,EAAEC,QAAQ,EAAK;EACtE,EAAA,IAAMnoB,QAAQ,GAAGsmB,SAAS,CAACoB,MAAM,EAAEzB,SAAS,CAAC,CAAA;IAE7C,IAAIlK,KAAK,GAAG,CAAC,CAAA;EACb,EAAA,IAAI5T,IAAI,CAAA;EACR,EAAA,IAAIigB,SAAS,GAAG,SAAZA,SAASA,CAAIhmB,CAAC,EAAK;MACrB,IAAI,CAAC+F,IAAI,EAAE;EACTA,MAAAA,IAAI,GAAG,IAAI,CAAA;EACXggB,MAAAA,QAAQ,IAAIA,QAAQ,CAAC/lB,CAAC,CAAC,CAAA;EACzB,KAAA;KACD,CAAA;IAED,OAAO,IAAIimB,cAAc,CACvB;EACQC,IAAAA,IAAI,EAAJA,SAAAA,IAAIA,CAAC3C,UAAU,EAAE;EAAA,MAAA,OAAA4C,iBAAA,cAAAxC,YAAA,EAAAld,CAAAA,CAAA,UAAA2f,QAAA,GAAA;UAAA,IAAAC,oBAAA,EAAAC,KAAA,EAAAlmB,KAAA,EAAAwC,GAAA,EAAA2jB,WAAA,EAAAC,GAAA,CAAA;EAAA,QAAA,OAAA7C,YAAA,EAAA,CAAAlO,CAAA,CAAA,UAAAgR,SAAA,EAAA;EAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA9B,CAAA,GAAA8B,SAAA,CAAA1P,CAAA;EAAA,YAAA,KAAA,CAAA;EAAA0P,cAAAA,SAAA,CAAA9B,CAAA,GAAA,CAAA,CAAA;EAAA8B,cAAAA,SAAA,CAAA1P,CAAA,GAAA,CAAA,CAAA;EAAA,cAAA,OAEWnZ,QAAQ,CAACkI,IAAI,EAAE,CAAA;EAAA,YAAA,KAAA,CAAA;gBAAAugB,oBAAA,GAAAI,SAAA,CAAA1B,CAAA,CAAA;gBAArChf,KAAI,GAAAsgB,oBAAA,CAAJtgB,IAAI,CAAA;gBAAE3F,KAAK,GAAAimB,oBAAA,CAALjmB,KAAK,CAAA;EAAA,cAAA,IAAA,CAEf2F,KAAI,EAAA;EAAA0gB,gBAAAA,SAAA,CAAA1P,CAAA,GAAA,CAAA,CAAA;EAAA,gBAAA,MAAA;EAAA,eAAA;EACNiP,cAAAA,SAAS,EAAE,CAAA;gBACXzC,UAAU,CAACmD,KAAK,EAAE,CAAA;gBAAC,OAAAD,SAAA,CAAA/iB,CAAA,CAAA,CAAA,CAAA,CAAA;EAAA,YAAA,KAAA,CAAA;gBAIjBd,GAAG,GAAGxC,KAAK,CAAC6jB,UAAU,CAAA;EAC1B,cAAA,IAAI6B,UAAU,EAAE;kBACVS,WAAW,GAAI5M,KAAK,IAAI/W,GAAG,CAAA;kBAC/BkjB,UAAU,CAACS,WAAW,CAAC,CAAA;EACzB,eAAA;gBACAhD,UAAU,CAACoD,OAAO,CAAC,IAAIjhB,UAAU,CAACtF,KAAK,CAAC,CAAC,CAAA;EAACqmB,cAAAA,SAAA,CAAA1P,CAAA,GAAA,CAAA,CAAA;EAAA,cAAA,MAAA;EAAA,YAAA,KAAA,CAAA;EAAA0P,cAAAA,SAAA,CAAA9B,CAAA,GAAA,CAAA,CAAA;gBAAA6B,GAAA,GAAAC,SAAA,CAAA1B,CAAA,CAAA;gBAE1CiB,SAAS,CAAAQ,GAAI,CAAC,CAAA;EAAC,cAAA,MAAAA,GAAA,CAAA;EAAA,YAAA,KAAA,CAAA;gBAAA,OAAAC,SAAA,CAAA/iB,CAAA,CAAA,CAAA,CAAA,CAAA;EAAA,WAAA;EAAA,SAAA,EAAA0iB,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;EAAA,OAAA,CAAA,CAAA,EAAA,CAAA;OAGlB;EACDtD,IAAAA,MAAM,EAANA,SAAAA,MAAMA,CAACW,MAAM,EAAE;QACbuC,SAAS,CAACvC,MAAM,CAAC,CAAA;QACjB,OAAO7lB,QAAQ,CAAO,QAAA,CAAA,EAAE,CAAA;EAC1B,KAAA;EACF,GAAC,EACD;EACEgpB,IAAAA,aAAa,EAAE,CAAA;EACjB,GACF,CAAC,CAAA;EACH,CAAC;;EC1ED,IAAMC,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAA;EAEpC,IAAQ5nB,UAAU,GAAKwM,OAAK,CAApBxM,UAAU,CAAA;EAElB,IAAM6nB,cAAc,GAAI,UAAAxkB,IAAA,EAAA;EAAA,EAAA,IAAGykB,OAAO,GAAAzkB,IAAA,CAAPykB,OAAO;MAAEC,QAAQ,GAAA1kB,IAAA,CAAR0kB,QAAQ,CAAA;IAAA,OAAQ;EAClDD,IAAAA,OAAO,EAAPA,OAAO;EACPC,IAAAA,QAAQ,EAARA,QAAAA;KACD,CAAA;EAAA,CAAC,CAAEvb,OAAK,CAACxK,MAAM,CAAC,CAAA;EAEjB,IAAAgmB,aAAA,GAAwCxb,OAAK,CAACxK,MAAM;IAA5CglB,gBAAc,GAAAgB,aAAA,CAAdhB,cAAc;IAAEiB,WAAW,GAAAD,aAAA,CAAXC,WAAW,CAAA;EAEnC,IAAM5Z,IAAI,GAAG,SAAPA,IAAIA,CAAInQ,EAAE,EAAc;IAC5B,IAAI;MAAA,KAAA2a,IAAAA,IAAA,GAAAva,SAAA,CAAAwC,MAAA,EADe+a,IAAI,OAAAlc,KAAA,CAAAkZ,IAAA,GAAAA,CAAAA,GAAAA,IAAA,WAAA/U,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAA+U,IAAA,EAAA/U,IAAA,EAAA,EAAA;EAAJ+X,MAAAA,IAAI,CAAA/X,IAAA,GAAAxF,CAAAA,CAAAA,GAAAA,SAAA,CAAAwF,IAAA,CAAA,CAAA;EAAA,KAAA;EAErB,IAAA,OAAO,CAAC,CAAC5F,EAAE,CAAAG,KAAA,CAAA,KAAA,CAAA,EAAIwd,IAAI,CAAC,CAAA;KACrB,CAAC,OAAO9a,CAAC,EAAE;EACV,IAAA,OAAO,KAAK,CAAA;EACd,GAAA;EACF,CAAC,CAAA;EAED,IAAMmnB,OAAO,GAAG,SAAVA,OAAOA,CAAIzT,GAAG,EAAK;EACvBA,EAAAA,GAAG,GAAGjI,OAAK,CAACtI,KAAK,CAAChF,IAAI,CACpB;EACEmF,IAAAA,aAAa,EAAE,IAAA;EACjB,GAAC,EACDwjB,cAAc,EACdpT,GACF,CAAC,CAAA;IAED,IAAA0T,IAAA,GAA+C1T,GAAG;MAAnC2T,QAAQ,GAAAD,IAAA,CAAfE,KAAK;MAAYP,OAAO,GAAAK,IAAA,CAAPL,OAAO;MAAEC,QAAQ,GAAAI,IAAA,CAARJ,QAAQ,CAAA;EAC1C,EAAA,IAAMO,gBAAgB,GAAGF,QAAQ,GAAGpoB,UAAU,CAACooB,QAAQ,CAAC,GAAG,OAAOC,KAAK,KAAK,UAAU,CAAA;EACtF,EAAA,IAAME,kBAAkB,GAAGvoB,UAAU,CAAC8nB,OAAO,CAAC,CAAA;EAC9C,EAAA,IAAMU,mBAAmB,GAAGxoB,UAAU,CAAC+nB,QAAQ,CAAC,CAAA;IAEhD,IAAI,CAACO,gBAAgB,EAAE;EACrB,IAAA,OAAO,KAAK,CAAA;EACd,GAAA;EAEA,EAAA,IAAMG,yBAAyB,GAAGH,gBAAgB,IAAItoB,UAAU,CAACgnB,gBAAc,CAAC,CAAA;IAEhF,IAAM0B,UAAU,GACdJ,gBAAgB,KACf,OAAOL,WAAW,KAAK,UAAU,GAE5B,UAAC9X,OAAO,EAAA;EAAA,IAAA,OAAK,UAAClR,GAAG,EAAA;EAAA,MAAA,OACfkR,OAAO,CAACP,MAAM,CAAC3Q,GAAG,CAAC,CAAA;EAAA,KAAA,CAAA;EAAA,GAAA,CACrB,IAAIgpB,WAAW,EAAE,CAAC,iBAAA,YAAA;MAAA,IAAA9jB,KAAA,GAAA+iB,iBAAA,cAAAxC,YAAA,GAAAld,CAAA,CACpB,SAAA2d,OAAAA,CAAOlmB,GAAG,EAAA;QAAA,IAAAumB,EAAA,EAAA+B,GAAA,CAAA;EAAA,MAAA,OAAA7C,YAAA,EAAA,CAAAlO,CAAA,CAAA,UAAAuO,QAAA,EAAA;UAAA,OAAAA,CAAAA,EAAAA,QAAAA,QAAA,CAAAjN,CAAA;EAAA,UAAA,KAAA,CAAA;EAAA0N,YAAAA,EAAA,GAAS/e,UAAU,CAAA;EAAAse,YAAAA,QAAA,CAAAjN,CAAA,GAAA,CAAA,CAAA;cAAA,OAAO,IAAIgQ,OAAO,CAAC7oB,GAAG,CAAC,CAAC0pB,WAAW,EAAE,CAAA;EAAA,UAAA,KAAA,CAAA;cAAApB,GAAA,GAAAxC,QAAA,CAAAe,CAAA,CAAA;EAAA,YAAA,OAAAf,QAAA,CAAAtgB,CAAA,CAAA+gB,CAAAA,EAAAA,IAAAA,EAAA,CAAA+B,GAAA,CAAA,CAAA,CAAA;EAAA,SAAA;EAAA,OAAA,EAAApC,OAAA,CAAA,CAAA;OAAC,CAAA,CAAA,CAAA;EAAA,IAAA,OAAA,UAAAe,EAAA,EAAA;EAAA,MAAA,OAAA/hB,KAAA,CAAA9F,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;EAAA,KAAA,CAAA;KAAC,EAAA,CAAA,CAAA,CAAA;IAE1E,IAAMsqB,qBAAqB,GACzBL,kBAAkB,IAClBE,yBAAyB,IACzBpa,IAAI,CAAC,YAAM;MACT,IAAIwa,cAAc,GAAG,KAAK,CAAA;MAE1B,IAAMC,cAAc,GAAG,IAAIhB,OAAO,CAACjV,QAAQ,CAACJ,MAAM,EAAE;EAClDsW,MAAAA,IAAI,EAAE,IAAI/B,gBAAc,EAAE;EAC1BzR,MAAAA,MAAM,EAAE,MAAM;QACd,IAAIyT,MAAMA,GAAG;EACXH,QAAAA,cAAc,GAAG,IAAI,CAAA;EACrB,QAAA,OAAO,MAAM,CAAA;EACf,OAAA;EACF,KAAC,CAAC,CAAC5U,OAAO,CAACmE,GAAG,CAAC,cAAc,CAAC,CAAA;MAE9B,OAAOyQ,cAAc,IAAI,CAACC,cAAc,CAAA;EAC1C,GAAC,CAAC,CAAA;EAEJ,EAAA,IAAMG,sBAAsB,GAC1BT,mBAAmB,IACnBC,yBAAyB,IACzBpa,IAAI,CAAC,YAAA;MAAA,OAAM7B,OAAK,CAAC3J,gBAAgB,CAAC,IAAIklB,QAAQ,CAAC,EAAE,CAAC,CAACgB,IAAI,CAAC,CAAA;KAAC,CAAA,CAAA;EAE3D,EAAA,IAAMG,SAAS,GAAG;EAChB7C,IAAAA,MAAM,EAAE4C,sBAAsB,IAAK,UAACE,GAAG,EAAA;QAAA,OAAKA,GAAG,CAACJ,IAAI,CAAA;EAAA,KAAA;KACrD,CAAA;EAEDT,EAAAA,gBAAgB,IACb,YAAM;EACL,IAAA,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAACnlB,OAAO,CAAC,UAAC5D,IAAI,EAAK;EACtE,MAAA,CAAC2pB,SAAS,CAAC3pB,IAAI,CAAC,KACb2pB,SAAS,CAAC3pB,IAAI,CAAC,GAAG,UAAC4pB,GAAG,EAAE3d,MAAM,EAAK;EAClC,QAAA,IAAI+J,MAAM,GAAG4T,GAAG,IAAIA,GAAG,CAAC5pB,IAAI,CAAC,CAAA;EAE7B,QAAA,IAAIgW,MAAM,EAAE;EACV,UAAA,OAAOA,MAAM,CAACrW,IAAI,CAACiqB,GAAG,CAAC,CAAA;EACzB,SAAA;EAEA,QAAA,MAAM,IAAI/d,YAAU,CAAAV,iBAAAA,CAAAA,MAAA,CACAnL,IAAI,EACtB6L,oBAAAA,CAAAA,EAAAA,YAAU,CAACqC,eAAe,EAC1BjC,MACF,CAAC,CAAA;EACH,OAAC,CAAC,CAAA;EACN,KAAC,CAAC,CAAA;EACJ,GAAC,EAAG,CAAA;EAEN,EAAA,IAAM4d,aAAa,gBAAA,YAAA;MAAA,IAAAzkB,KAAA,GAAAuiB,iBAAA,cAAAxC,YAAA,GAAAld,CAAA,CAAG,SAAA4e,QAAAA,CAAO2C,IAAI,EAAA;EAAA,MAAA,IAAAM,QAAA,CAAA;EAAA,MAAA,OAAA3E,YAAA,EAAA,CAAAlO,CAAA,CAAA,UAAAiP,SAAA,EAAA;UAAA,OAAAA,CAAAA,EAAAA,QAAAA,SAAA,CAAA3N,CAAA;EAAA,UAAA,KAAA,CAAA;cAAA,IAC3BiR,EAAAA,IAAI,IAAI,IAAI,CAAA,EAAA;EAAAtD,cAAAA,SAAA,CAAA3N,CAAA,GAAA,CAAA,CAAA;EAAA,cAAA,MAAA;EAAA,aAAA;EAAA,YAAA,OAAA2N,SAAA,CAAAhhB,CAAA,CAAA,CAAA,EACP,CAAC,CAAA,CAAA;EAAA,UAAA,KAAA,CAAA;EAAA,YAAA,IAAA,CAGN+H,OAAK,CAAChL,MAAM,CAACunB,IAAI,CAAC,EAAA;EAAAtD,cAAAA,SAAA,CAAA3N,CAAA,GAAA,CAAA,CAAA;EAAA,cAAA,MAAA;EAAA,aAAA;EAAA,YAAA,OAAA2N,SAAA,CAAAhhB,CAAA,CACbskB,CAAAA,EAAAA,IAAI,CAACO,IAAI,CAAA,CAAA;EAAA,UAAA,KAAA,CAAA;EAAA,YAAA,IAAA,CAGd9c,OAAK,CAACpD,mBAAmB,CAAC2f,IAAI,CAAC,EAAA;EAAAtD,cAAAA,SAAA,CAAA3N,CAAA,GAAA,CAAA,CAAA;EAAA,cAAA,MAAA;EAAA,aAAA;EAC3BuR,YAAAA,QAAQ,GAAG,IAAIvB,OAAO,CAACjV,QAAQ,CAACJ,MAAM,EAAE;EAC5C8C,cAAAA,MAAM,EAAE,MAAM;EACdwT,cAAAA,IAAI,EAAJA,IAAAA;EACF,aAAC,CAAC,CAAA;EAAAtD,YAAAA,SAAA,CAAA3N,CAAA,GAAA,CAAA,CAAA;EAAA,YAAA,OACYuR,QAAQ,CAACV,WAAW,EAAE,CAAA;EAAA,UAAA,KAAA,CAAA;cAAA,OAAAlD,SAAA,CAAAhhB,CAAA,CAAA,CAAA,EAAAghB,SAAA,CAAAK,CAAA,CAAEd,UAAU,CAAA,CAAA;EAAA,UAAA,KAAA,CAAA;EAAA,YAAA,IAAA,EAG9CxY,OAAK,CAACtM,iBAAiB,CAAC6oB,IAAI,CAAC,IAAIvc,OAAK,CAACvM,aAAa,CAAC8oB,IAAI,CAAC,CAAA,EAAA;EAAAtD,cAAAA,SAAA,CAAA3N,CAAA,GAAA,CAAA,CAAA;EAAA,cAAA,MAAA;EAAA,aAAA;EAAA,YAAA,OAAA2N,SAAA,CAAAhhB,CAAA,CACrDskB,CAAAA,EAAAA,IAAI,CAAC/D,UAAU,CAAA,CAAA;EAAA,UAAA,KAAA,CAAA;EAGxB,YAAA,IAAIxY,OAAK,CAAChK,iBAAiB,CAACumB,IAAI,CAAC,EAAE;gBACjCA,IAAI,GAAGA,IAAI,GAAG,EAAE,CAAA;EAClB,aAAA;EAAC,YAAA,IAAA,CAEGvc,OAAK,CAACjM,QAAQ,CAACwoB,IAAI,CAAC,EAAA;EAAAtD,cAAAA,SAAA,CAAA3N,CAAA,GAAA,CAAA,CAAA;EAAA,cAAA,MAAA;EAAA,aAAA;EAAA2N,YAAAA,SAAA,CAAA3N,CAAA,GAAA,CAAA,CAAA;cAAA,OACR4Q,UAAU,CAACK,IAAI,CAAC,CAAA;EAAA,UAAA,KAAA,CAAA;cAAA,OAAAtD,SAAA,CAAAhhB,CAAA,CAAA,CAAA,EAAAghB,SAAA,CAAAK,CAAA,CAAEd,UAAU,CAAA,CAAA;EAAA,UAAA,KAAA,CAAA;cAAA,OAAAS,SAAA,CAAAhhB,CAAA,CAAA,CAAA,CAAA,CAAA;EAAA,SAAA;EAAA,OAAA,EAAA2hB,QAAA,CAAA,CAAA;OAE7C,CAAA,CAAA,CAAA;MAAA,OA5BKgD,SAAAA,aAAaA,CAAAjD,GAAA,EAAA;EAAA,MAAA,OAAAxhB,KAAA,CAAAtG,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;EAAA,KAAA,CAAA;KA4BlB,EAAA,CAAA;EAED,EAAA,IAAMirB,iBAAiB,gBAAA,YAAA;EAAA,IAAA,IAAA1hB,KAAA,GAAAqf,iBAAA,cAAAxC,YAAA,EAAA,CAAAld,CAAA,CAAG,SAAA2f,QAAAA,CAAOlT,OAAO,EAAE8U,IAAI,EAAA;EAAA,MAAA,IAAAjoB,MAAA,CAAA;EAAA,MAAA,OAAA4jB,YAAA,EAAA,CAAAlO,CAAA,CAAA,UAAAgQ,SAAA,EAAA;UAAA,OAAAA,CAAAA,EAAAA,QAAAA,SAAA,CAAA1O,CAAA;EAAA,UAAA,KAAA,CAAA;cACtChX,MAAM,GAAG0L,OAAK,CAACxD,cAAc,CAACiL,OAAO,CAACuV,gBAAgB,EAAE,CAAC,CAAA;EAAA,YAAA,OAAAhD,SAAA,CAAA/hB,CAAA,CAAA,CAAA,EAExD3D,MAAM,IAAI,IAAI,GAAGsoB,aAAa,CAACL,IAAI,CAAC,GAAGjoB,MAAM,CAAA,CAAA;EAAA,SAAA;EAAA,OAAA,EAAAqmB,QAAA,CAAA,CAAA;OACrD,CAAA,CAAA,CAAA;EAAA,IAAA,OAAA,SAJKoC,iBAAiBA,CAAA5C,GAAA,EAAA8C,GAAA,EAAA;EAAA,MAAA,OAAA5hB,KAAA,CAAAxJ,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;EAAA,KAAA,CAAA;KAItB,EAAA,CAAA;EAED,EAAA,oBAAA,YAAA;MAAA,IAAA+L,KAAA,GAAA6c,iBAAA,cAAAxC,YAAA,GAAAld,CAAA,CAAO,SAAAkiB,QAAAA,CAAOle,MAAM,EAAA;EAAA,MAAA,IAAAme,cAAA,EAAArZ,GAAA,EAAAiF,MAAA,EAAAjL,IAAA,EAAA0X,MAAA,EAAAhC,WAAA,EAAAjL,OAAA,EAAA2K,kBAAA,EAAAD,gBAAA,EAAA7K,YAAA,EAAAX,OAAA,EAAA2V,qBAAA,EAAArK,eAAA,EAAAsK,YAAA,EAAAC,MAAA,EAAAC,cAAA,EAAAte,OAAA,EAAAsW,WAAA,EAAAiI,oBAAA,EAAAX,QAAA,EAAAY,iBAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAtD,UAAA,EAAA7K,KAAA,EAAAoO,sBAAA,EAAAC,eAAA,EAAA3e,QAAA,EAAA4e,gBAAA,EAAA/b,OAAA,EAAAgc,qBAAA,EAAAC,KAAA,EAAAC,KAAA,EAAAC,WAAA,EAAAC,MAAA,EAAArI,YAAA,EAAAsI,GAAA,EAAAC,GAAA,EAAAC,GAAA,CAAA;EAAA,MAAA,OAAApG,YAAA,EAAA,CAAAlO,CAAA,CAAA,UAAAgR,SAAA,EAAA;EAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA9B,CAAA,GAAA8B,SAAA,CAAA1P,CAAA;EAAA,UAAA,KAAA,CAAA;EAAA6R,YAAAA,cAAA,GAcdpI,aAAa,CAAC/V,MAAM,CAAC,EAZvB8E,GAAG,GAAAqZ,cAAA,CAAHrZ,GAAG,EACHiF,MAAM,GAAAoU,cAAA,CAANpU,MAAM,EACNjL,IAAI,GAAAqf,cAAA,CAAJrf,IAAI,EACJ0X,MAAM,GAAA2H,cAAA,CAAN3H,MAAM,EACNhC,WAAW,GAAA2J,cAAA,CAAX3J,WAAW,EACXjL,OAAO,GAAA4U,cAAA,CAAP5U,OAAO,EACP2K,kBAAkB,GAAAiK,cAAA,CAAlBjK,kBAAkB,EAClBD,gBAAgB,GAAAkK,cAAA,CAAhBlK,gBAAgB,EAChB7K,YAAY,GAAA+U,cAAA,CAAZ/U,YAAY,EACZX,OAAO,GAAA0V,cAAA,CAAP1V,OAAO,EAAA2V,qBAAA,GAAAD,cAAA,CACPpK,eAAe,EAAfA,eAAe,GAAAqK,qBAAA,KAAG,KAAA,CAAA,GAAA,aAAa,GAAAA,qBAAA,EAC/BC,YAAY,GAAAF,cAAA,CAAZE,YAAY,CAAA;cAGVC,MAAM,GAAG1B,QAAQ,IAAIC,KAAK,CAAA;EAE9BzT,YAAAA,YAAY,GAAGA,YAAY,GAAG,CAACA,YAAY,GAAG,EAAE,EAAExV,WAAW,EAAE,GAAG,MAAM,CAAA;EAEpE2qB,YAAAA,cAAc,GAAG7F,gBAAc,CACjC,CAAClC,MAAM,EAAEhC,WAAW,IAAIA,WAAW,CAAC+K,aAAa,EAAE,CAAC,EACpDhW,OACF,CAAC,CAAA;EAEGtJ,YAAAA,OAAO,GAAG,IAAI,CAAA;EAEZsW,YAAAA,WAAW,GACfgI,cAAc,IACdA,cAAc,CAAChI,WAAW,IACzB,YAAM;gBACLgI,cAAc,CAAChI,WAAW,EAAE,CAAA;eAC5B,CAAA;EAAAyF,YAAAA,SAAA,CAAA9B,CAAA,GAAA,CAAA,CAAA;cAAAkF,GAAA,GAMAnL,gBAAgB,IAChBmJ,qBAAqB,IACrBrT,MAAM,KAAK,KAAK,IAChBA,MAAM,KAAK,MAAM,CAAA;EAAA,YAAA,IAAA,CAAAqV,GAAA,EAAA;EAAApD,cAAAA,SAAA,CAAA1P,CAAA,GAAA,CAAA,CAAA;EAAA,cAAA,MAAA;EAAA,aAAA;EAAA0P,YAAAA,SAAA,CAAA1P,CAAA,GAAA,CAAA,CAAA;EAAA,YAAA,OACayR,iBAAiB,CAACtV,OAAO,EAAE3J,IAAI,CAAC,CAAA;EAAA,UAAA,KAAA,CAAA;EAAAugB,YAAAA,GAAA,GAA7Db,oBAAoB,GAAAxC,SAAA,CAAA1B,CAAA,CAAA;cAAA8E,GAAA,GAAAC,GAAA,KAA+C,CAAC,CAAA;EAAA,UAAA,KAAA,CAAA;EAAA,YAAA,IAAA,CAAAD,GAAA,EAAA;EAAApD,cAAAA,SAAA,CAAA1P,CAAA,GAAA,CAAA,CAAA;EAAA,cAAA,MAAA;EAAA,aAAA;EAEjEuR,YAAAA,QAAQ,GAAG,IAAIvB,OAAO,CAACxX,GAAG,EAAE;EAC9BiF,cAAAA,MAAM,EAAE,MAAM;EACdwT,cAAAA,IAAI,EAAEze,IAAI;EACV0e,cAAAA,MAAM,EAAE,MAAA;EACV,aAAC,CAAC,CAAA;EAIF,YAAA,IAAIxc,OAAK,CAACnK,UAAU,CAACiI,IAAI,CAAC,KAAK2f,iBAAiB,GAAGZ,QAAQ,CAACpV,OAAO,CAACkE,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE;EACxFlE,cAAAA,OAAO,CAACK,cAAc,CAAC2V,iBAAiB,CAAC,CAAA;EAC3C,aAAA;cAEA,IAAIZ,QAAQ,CAACN,IAAI,EAAE;gBAAAmB,qBAAA,GACWlN,sBAAsB,CAChDgN,oBAAoB,EACpB/N,oBAAoB,CAACgB,cAAc,CAACwC,gBAAgB,CAAC,CACvD,CAAC,EAAA0K,sBAAA,GAAAvnB,cAAA,CAAAsnB,qBAAA,EAAA,CAAA,CAAA,EAHMrD,UAAU,GAAAsD,sBAAA,CAAA,CAAA,CAAA,EAAEnO,KAAK,GAAAmO,sBAAA,CAAA,CAAA,CAAA,CAAA;EAKxB7f,cAAAA,IAAI,GAAGsc,WAAW,CAACyC,QAAQ,CAACN,IAAI,EAAEnB,kBAAkB,EAAEf,UAAU,EAAE7K,KAAK,CAAC,CAAA;EAC1E,aAAA;EAAC,UAAA,KAAA,CAAA;EAGH,YAAA,IAAI,CAACxP,OAAK,CAACjM,QAAQ,CAACgf,eAAe,CAAC,EAAE;EACpCA,cAAAA,eAAe,GAAGA,eAAe,GAAG,SAAS,GAAG,MAAM,CAAA;EACxD,aAAA;;EAEA;EACA;EACM6K,YAAAA,sBAAsB,GAAG7B,kBAAkB,IAAI,aAAa,IAAIT,OAAO,CAACrpB,SAAS,CAAA;EAEjF4rB,YAAAA,eAAe,GAAAzX,cAAA,CAAAA,cAAA,KAChBiX,YAAY,CAAA,EAAA,EAAA,EAAA;EACf7H,cAAAA,MAAM,EAAE+H,cAAc;EACtBxU,cAAAA,MAAM,EAAEA,MAAM,CAAC5N,WAAW,EAAE;gBAC5BsM,OAAO,EAAEA,OAAO,CAACwE,SAAS,EAAE,CAACvM,MAAM,EAAE;EACrC6c,cAAAA,IAAI,EAAEze,IAAI;EACV0e,cAAAA,MAAM,EAAE,MAAM;EACdgC,cAAAA,WAAW,EAAEZ,sBAAsB,GAAG7K,eAAe,GAAGnd,SAAAA;EAAS,aAAA,CAAA,CAAA;cAGnEqJ,OAAO,GAAG8c,kBAAkB,IAAI,IAAIT,OAAO,CAACxX,GAAG,EAAE+Z,eAAe,CAAC,CAAA;EAAC7C,YAAAA,SAAA,CAAA1P,CAAA,GAAA,CAAA,CAAA;EAAA,YAAA,OAE5CyQ,kBAAkB,GACpCuB,MAAM,CAACre,OAAO,EAAEoe,YAAY,CAAC,GAC7BC,MAAM,CAACxZ,GAAG,EAAE+Z,eAAe,CAAC,CAAA;EAAA,UAAA,KAAA,CAAA;cAF5B3e,QAAQ,GAAA8b,SAAA,CAAA1B,CAAA,CAAA;cAINwE,gBAAgB,GACpBrB,sBAAsB,KAAKrU,YAAY,KAAK,QAAQ,IAAIA,YAAY,KAAK,UAAU,CAAC,CAAA;cAEtF,IAAIqU,sBAAsB,KAAKvJ,kBAAkB,IAAK4K,gBAAgB,IAAIvI,WAAY,CAAC,EAAE;gBACjFxT,OAAO,GAAG,EAAE,CAAA;gBAElB,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,CAACpL,OAAO,CAAC,UAAC0C,IAAI,EAAK;EACpD0I,gBAAAA,OAAO,CAAC1I,IAAI,CAAC,GAAG6F,QAAQ,CAAC7F,IAAI,CAAC,CAAA;EAChC,eAAC,CAAC,CAAA;EAEI0kB,cAAAA,qBAAqB,GAAG/d,OAAK,CAACxD,cAAc,CAAC0C,QAAQ,CAACuI,OAAO,CAACkE,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAA;EAAAqS,cAAAA,KAAA,GAGvF9K,kBAAkB,IACjB1C,sBAAsB,CACpBuN,qBAAqB,EACrBtO,oBAAoB,CAACgB,cAAc,CAACyC,kBAAkB,CAAC,EAAE,IAAI,CAC/D,CAAC,IACH,EAAE,EAAA+K,KAAA,GAAA7nB,cAAA,CAAA4nB,KAAA,EANG3D,CAAAA,CAAAA,EAAAA,WAAU,GAAA4D,KAAA,CAAEzO,CAAAA,CAAAA,EAAAA,MAAK,GAAAyO,KAAA,CAAA,CAAA,CAAA,CAAA;EAQxB/e,cAAAA,QAAQ,GAAG,IAAIqc,QAAQ,CACrBnB,WAAW,CAAClb,QAAQ,CAACqd,IAAI,EAAEnB,kBAAkB,EAAEf,WAAU,EAAE,YAAM;kBAC/D7K,MAAK,IAAIA,MAAK,EAAE,CAAA;kBAChB+F,WAAW,IAAIA,WAAW,EAAE,CAAA;iBAC7B,CAAC,EACFxT,OACF,CAAC,CAAA;EACH,aAAA;cAEAqG,YAAY,GAAGA,YAAY,IAAI,MAAM,CAAA;EAAC4S,YAAAA,SAAA,CAAA1P,CAAA,GAAA,CAAA,CAAA;EAAA,YAAA,OAEboR,SAAS,CAAC1c,OAAK,CAAC3I,OAAO,CAACqlB,SAAS,EAAEtU,YAAY,CAAC,IAAI,MAAM,CAAC,CAClFlJ,QAAQ,EACRF,MACF,CAAC,CAAA;EAAA,UAAA,KAAA,CAAA;cAHG8W,YAAY,GAAAkF,SAAA,CAAA1B,CAAA,CAAA;EAKhB,YAAA,CAACwE,gBAAgB,IAAIvI,WAAW,IAAIA,WAAW,EAAE,CAAA;EAACyF,YAAAA,SAAA,CAAA1P,CAAA,GAAA,CAAA,CAAA;EAAA,YAAA,OAErC,IAAIsJ,OAAO,CAAC,UAACjH,OAAO,EAAEC,MAAM,EAAK;EAC5CF,cAAAA,MAAM,CAACC,OAAO,EAAEC,MAAM,EAAE;EACtB9P,gBAAAA,IAAI,EAAEgY,YAAY;kBAClBrO,OAAO,EAAE+C,cAAY,CAACvK,IAAI,CAACf,QAAQ,CAACuI,OAAO,CAAC;kBAC5ClI,MAAM,EAAEL,QAAQ,CAACK,MAAM;kBACvByW,UAAU,EAAE9W,QAAQ,CAAC8W,UAAU;EAC/BhX,gBAAAA,MAAM,EAANA,MAAM;EACNC,gBAAAA,OAAO,EAAPA,OAAAA;EACF,eAAC,CAAC,CAAA;EACJ,aAAC,CAAC,CAAA;EAAA,UAAA,KAAA,CAAA;EAAA,YAAA,OAAA+b,SAAA,CAAA/iB,CAAA,CAAA+iB,CAAAA,EAAAA,SAAA,CAAA1B,CAAA,CAAA,CAAA;EAAA,UAAA,KAAA,CAAA;EAAA0B,YAAAA,SAAA,CAAA9B,CAAA,GAAA,CAAA,CAAA;cAAAoF,GAAA,GAAAtD,SAAA,CAAA1B,CAAA,CAAA;cAEF/D,WAAW,IAAIA,WAAW,EAAE,CAAA;EAAC,YAAA,IAAA,EAEzB+I,GAAA,IAAOA,GAAA,CAAI1iB,IAAI,KAAK,WAAW,IAAI,oBAAoB,CAACiG,IAAI,CAACyc,GAAA,CAAIxf,OAAO,CAAC,CAAA,EAAA;EAAAkc,cAAAA,SAAA,CAAA1P,CAAA,GAAA,CAAA,CAAA;EAAA,cAAA,MAAA;EAAA,aAAA;cAAA,MACrEtZ,MAAM,CAAC+G,MAAM,CACjB,IAAI6F,YAAU,CACZ,eAAe,EACfA,YAAU,CAAC+B,WAAW,EACtB3B,MAAM,EACNC,OAAO,EACPqf,GAAA,IAAOA,GAAA,CAAIpf,QACb,CAAC,EACD;EACEmB,cAAAA,KAAK,EAAEie,GAAA,CAAIje,KAAK,IAAAie,GAAAA;EAClB,aACF,CAAC,CAAA;EAAA,UAAA,KAAA,CAAA;cAAA,MAGG1f,YAAU,CAACqB,IAAI,CAAAqe,GAAA,EAAMA,GAAA,IAAOA,GAAA,CAAIvf,IAAI,EAAEC,MAAM,EAAEC,OAAO,EAAEqf,GAAA,IAAOA,GAAA,CAAIpf,QAAQ,CAAC,CAAA;EAAA,UAAA,KAAA,EAAA;cAAA,OAAA8b,SAAA,CAAA/iB,CAAA,CAAA,CAAA,CAAA,CAAA;EAAA,SAAA;EAAA,OAAA,EAAAilB,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;OAEpF,CAAA,CAAA,CAAA;EAAA,IAAA,OAAA,UAAAuB,GAAA,EAAA;EAAA,MAAA,OAAA5gB,KAAA,CAAAhM,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;EAAA,KAAA,CAAA;EAAA,GAAA,EAAA,CAAA;EACH,CAAC,CAAA;EAED,IAAM4sB,SAAS,GAAG,IAAIC,GAAG,EAAE,CAAA;EAEpB,IAAMC,QAAQ,GAAG,SAAXA,QAAQA,CAAI5f,MAAM,EAAK;IAClC,IAAIiJ,GAAG,GAAIjJ,MAAM,IAAIA,MAAM,CAACiJ,GAAG,IAAK,EAAE,CAAA;EACtC,EAAA,IAAQ4T,KAAK,GAAwB5T,GAAG,CAAhC4T,KAAK;MAAEP,OAAO,GAAerT,GAAG,CAAzBqT,OAAO;MAAEC,QAAQ,GAAKtT,GAAG,CAAhBsT,QAAQ,CAAA;IAChC,IAAMsD,KAAK,GAAG,CAACvD,OAAO,EAAEC,QAAQ,EAAEM,KAAK,CAAC,CAAA;EAExC,EAAA,IAAI1kB,GAAG,GAAG0nB,KAAK,CAACvqB,MAAM;EACpB0C,IAAAA,CAAC,GAAGG,GAAG;MACP2nB,IAAI;MACJ7hB,MAAM;EACN/G,IAAAA,GAAG,GAAGwoB,SAAS,CAAA;IAEjB,OAAO1nB,CAAC,EAAE,EAAE;EACV8nB,IAAAA,IAAI,GAAGD,KAAK,CAAC7nB,CAAC,CAAC,CAAA;EACfiG,IAAAA,MAAM,GAAG/G,GAAG,CAACyV,GAAG,CAACmT,IAAI,CAAC,CAAA;MAEtB7hB,MAAM,KAAKrH,SAAS,IAAIM,GAAG,CAAC8F,GAAG,CAAC8iB,IAAI,EAAG7hB,MAAM,GAAGjG,CAAC,GAAG,IAAI2nB,GAAG,EAAE,GAAGjD,OAAO,CAACzT,GAAG,CAAE,CAAC,CAAA;EAE9E/R,IAAAA,GAAG,GAAG+G,MAAM,CAAA;EACd,GAAA;EAEA,EAAA,OAAOA,MAAM,CAAA;EACf,CAAC,CAAA;EAEe2hB,QAAQ;;ECrUxB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMG,aAAa,GAAG;EACpBC,EAAAA,IAAI,EAAEC,WAAW;EACjBC,EAAAA,GAAG,EAAEC,UAAU;EACftD,EAAAA,KAAK,EAAE;MACLlQ,GAAG,EAAEyT,QAAaR;EACpB,GAAA;EACF,CAAC,CAAA;;EAED;AACA5e,SAAK,CAACrJ,OAAO,CAACooB,aAAa,EAAE,UAACrtB,EAAE,EAAEiD,KAAK,EAAK;EAC1C,EAAA,IAAIjD,EAAE,EAAE;MACN,IAAI;EACFM,MAAAA,MAAM,CAACoG,cAAc,CAAC1G,EAAE,EAAE,MAAM,EAAE;EAAEiD,QAAAA,KAAK,EAALA,KAAAA;EAAM,OAAC,CAAC,CAAA;OAC7C,CAAC,OAAOJ,CAAC,EAAE;EACV;EAAA,KAAA;EAEFvC,IAAAA,MAAM,CAACoG,cAAc,CAAC1G,EAAE,EAAE,aAAa,EAAE;EAAEiD,MAAAA,KAAK,EAALA,KAAAA;EAAM,KAAC,CAAC,CAAA;EACrD,GAAA;EACF,CAAC,CAAC,CAAA;;EAEF;EACA;EACA;EACA;EACA;EACA;EACA,IAAM0qB,YAAY,GAAG,SAAfA,YAAYA,CAAIrH,MAAM,EAAA;IAAA,OAAA9Z,IAAAA,CAAAA,MAAA,CAAU8Z,MAAM,CAAA,CAAA;EAAA,CAAE,CAAA;;EAE9C;EACA;EACA;EACA;EACA;EACA;EACA,IAAMsH,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAI/X,OAAO,EAAA;EAAA,EAAA,OAC/BvH,OAAK,CAACxM,UAAU,CAAC+T,OAAO,CAAC,IAAIA,OAAO,KAAK,IAAI,IAAIA,OAAO,KAAK,KAAK,CAAA;EAAA,CAAA,CAAA;;EAEpE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASgY,UAAUA,CAACC,QAAQ,EAAExgB,MAAM,EAAE;EACpCwgB,EAAAA,QAAQ,GAAGxf,OAAK,CAAC9M,OAAO,CAACssB,QAAQ,CAAC,GAAGA,QAAQ,GAAG,CAACA,QAAQ,CAAC,CAAA;IAE1D,IAAAC,SAAA,GAAmBD,QAAQ;MAAnBlrB,MAAM,GAAAmrB,SAAA,CAANnrB,MAAM,CAAA;EACd,EAAA,IAAIorB,aAAa,CAAA;EACjB,EAAA,IAAInY,OAAO,CAAA;IAEX,IAAMoY,eAAe,GAAG,EAAE,CAAA;IAE1B,KAAK,IAAI3oB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG1C,MAAM,EAAE0C,CAAC,EAAE,EAAE;EAC/B0oB,IAAAA,aAAa,GAAGF,QAAQ,CAACxoB,CAAC,CAAC,CAAA;EAC3B,IAAA,IAAI4N,EAAE,GAAA,KAAA,CAAA,CAAA;EAEN2C,IAAAA,OAAO,GAAGmY,aAAa,CAAA;EAEvB,IAAA,IAAI,CAACJ,gBAAgB,CAACI,aAAa,CAAC,EAAE;EACpCnY,MAAAA,OAAO,GAAGwX,aAAa,CAAC,CAACna,EAAE,GAAGlL,MAAM,CAACgmB,aAAa,CAAC,EAAE9sB,WAAW,EAAE,CAAC,CAAA;QAEnE,IAAI2U,OAAO,KAAK3R,SAAS,EAAE;EACzB,QAAA,MAAM,IAAIgJ,YAAU,CAAA,mBAAA,CAAAV,MAAA,CAAqB0G,EAAE,MAAG,CAAC,CAAA;EACjD,OAAA;EACF,KAAA;EAEA,IAAA,IAAI2C,OAAO,KAAKvH,OAAK,CAACxM,UAAU,CAAC+T,OAAO,CAAC,KAAKA,OAAO,GAAGA,OAAO,CAACoE,GAAG,CAAC3M,MAAM,CAAC,CAAC,CAAC,EAAE;EAC7E,MAAA,MAAA;EACF,KAAA;MAEA2gB,eAAe,CAAC/a,EAAE,IAAI,GAAG,GAAG5N,CAAC,CAAC,GAAGuQ,OAAO,CAAA;EAC1C,GAAA;IAEA,IAAI,CAACA,OAAO,EAAE;EACZ,IAAA,IAAMqY,OAAO,GAAG5tB,MAAM,CAAC+U,OAAO,CAAC4Y,eAAe,CAAC,CAACzpB,GAAG,CACjD,UAAAW,IAAA,EAAA;EAAA,MAAA,IAAAc,KAAA,GAAAvB,cAAA,CAAAS,IAAA,EAAA,CAAA,CAAA;EAAE+N,QAAAA,EAAE,GAAAjN,KAAA,CAAA,CAAA,CAAA;EAAEkoB,QAAAA,KAAK,GAAAloB,KAAA,CAAA,CAAA,CAAA,CAAA;EAAA,MAAA,OACT,UAAAuG,CAAAA,MAAA,CAAW0G,EAAE,EACZib,GAAAA,CAAAA,IAAAA,KAAK,KAAK,KAAK,GAAG,qCAAqC,GAAG,+BAA+B,CAAC,CAAA;EAAA,KAC/F,CAAC,CAAA;EAED,IAAA,IAAIxU,CAAC,GAAG/W,MAAM,GACVsrB,OAAO,CAACtrB,MAAM,GAAG,CAAC,GAChB,WAAW,GAAGsrB,OAAO,CAAC1pB,GAAG,CAACmpB,YAAY,CAAC,CAAC5d,IAAI,CAAC,IAAI,CAAC,GAClD,GAAG,GAAG4d,YAAY,CAACO,OAAO,CAAC,CAAC,CAAC,CAAC,GAChC,yBAAyB,CAAA;EAE7B,IAAA,MAAM,IAAIhhB,YAAU,CAClB,0DAA0DyM,CAAC,EAC3D,iBACF,CAAC,CAAA;EACH,GAAA;EAEA,EAAA,OAAO9D,OAAO,CAAA;EAChB,CAAA;;EAEA;EACA;EACA;AACA,iBAAe;EACb;EACF;EACA;EACA;EACEgY,EAAAA,UAAU,EAAVA,UAAU;EAEV;EACF;EACA;EACA;EACEC,EAAAA,QAAQ,EAAET,aAAAA;EACZ,CAAC;;ECxHD;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASe,4BAA4BA,CAAC9gB,MAAM,EAAE;IAC5C,IAAIA,MAAM,CAACwU,WAAW,EAAE;EACtBxU,IAAAA,MAAM,CAACwU,WAAW,CAACuM,gBAAgB,EAAE,CAAA;EACvC,GAAA;IAEA,IAAI/gB,MAAM,CAACwW,MAAM,IAAIxW,MAAM,CAACwW,MAAM,CAACgC,OAAO,EAAE;EAC1C,IAAA,MAAM,IAAIhK,eAAa,CAAC,IAAI,EAAExO,MAAM,CAAC,CAAA;EACvC,GAAA;EACF,CAAA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACe,SAASghB,eAAeA,CAAChhB,MAAM,EAAE;IAC9C8gB,4BAA4B,CAAC9gB,MAAM,CAAC,CAAA;IAEpCA,MAAM,CAACyI,OAAO,GAAG+C,cAAY,CAACvK,IAAI,CAACjB,MAAM,CAACyI,OAAO,CAAC,CAAA;;EAElD;EACAzI,EAAAA,MAAM,CAAClB,IAAI,GAAGqP,aAAa,CAACza,IAAI,CAACsM,MAAM,EAAEA,MAAM,CAACwI,gBAAgB,CAAC,CAAA;EAEjE,EAAA,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC5N,OAAO,CAACoF,MAAM,CAAC+J,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;MAC1D/J,MAAM,CAACyI,OAAO,CAACK,cAAc,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAA;EAC3E,GAAA;EAEA,EAAA,IAAMP,OAAO,GAAGiY,QAAQ,CAACD,UAAU,CAACvgB,MAAM,CAACuI,OAAO,IAAIH,UAAQ,CAACG,OAAO,EAAEvI,MAAM,CAAC,CAAA;IAE/E,OAAOuI,OAAO,CAACvI,MAAM,CAAC,CAAC3B,IAAI,CACzB,SAAS4iB,mBAAmBA,CAAC/gB,QAAQ,EAAE;MACrC4gB,4BAA4B,CAAC9gB,MAAM,CAAC,CAAA;;EAEpC;EACAE,IAAAA,QAAQ,CAACpB,IAAI,GAAGqP,aAAa,CAACza,IAAI,CAACsM,MAAM,EAAEA,MAAM,CAACkJ,iBAAiB,EAAEhJ,QAAQ,CAAC,CAAA;MAE9EA,QAAQ,CAACuI,OAAO,GAAG+C,cAAY,CAACvK,IAAI,CAACf,QAAQ,CAACuI,OAAO,CAAC,CAAA;EAEtD,IAAA,OAAOvI,QAAQ,CAAA;EACjB,GAAC,EACD,SAASghB,kBAAkBA,CAAClI,MAAM,EAAE;EAClC,IAAA,IAAI,CAAC1K,QAAQ,CAAC0K,MAAM,CAAC,EAAE;QACrB8H,4BAA4B,CAAC9gB,MAAM,CAAC,CAAA;;EAEpC;EACA,MAAA,IAAIgZ,MAAM,IAAIA,MAAM,CAAC9Y,QAAQ,EAAE;EAC7B8Y,QAAAA,MAAM,CAAC9Y,QAAQ,CAACpB,IAAI,GAAGqP,aAAa,CAACza,IAAI,CACvCsM,MAAM,EACNA,MAAM,CAACkJ,iBAAiB,EACxB8P,MAAM,CAAC9Y,QACT,CAAC,CAAA;EACD8Y,QAAAA,MAAM,CAAC9Y,QAAQ,CAACuI,OAAO,GAAG+C,cAAY,CAACvK,IAAI,CAAC+X,MAAM,CAAC9Y,QAAQ,CAACuI,OAAO,CAAC,CAAA;EACtE,OAAA;EACF,KAAA;EAEA,IAAA,OAAOmN,OAAO,CAAChH,MAAM,CAACoK,MAAM,CAAC,CAAA;EAC/B,GACF,CAAC,CAAA;EACH;;EC5EO,IAAMmI,OAAO,GAAG,QAAQ;;ECK/B,IAAMC,YAAU,GAAG,EAAE,CAAA;;EAErB;EACA,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAACzpB,OAAO,CAAC,UAAC5D,IAAI,EAAEiE,CAAC,EAAK;IACnFopB,YAAU,CAACrtB,IAAI,CAAC,GAAG,SAASstB,SAASA,CAAC7tB,KAAK,EAAE;EAC3C,IAAA,OAAOS,OAAA,CAAOT,KAAK,CAAKO,KAAAA,IAAI,IAAI,GAAG,IAAIiE,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,GAAGjE,IAAI,CAAA;KAClE,CAAA;EACH,CAAC,CAAC,CAAA;EAEF,IAAMutB,kBAAkB,GAAG,EAAE,CAAA;;EAE7B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACAF,cAAU,CAAC/Y,YAAY,GAAG,SAASA,YAAYA,CAACgZ,SAAS,EAAEE,OAAO,EAAEzhB,OAAO,EAAE;EAC3E,EAAA,SAAS0hB,aAAaA,CAACC,GAAG,EAAEC,IAAI,EAAE;EAChC,IAAA,OACE,UAAU,GACVP,OAAO,GACP,yBAAyB,GACzBM,GAAG,GACH,GAAG,GACHC,IAAI,IACH5hB,OAAO,GAAG,IAAI,GAAGA,OAAO,GAAG,EAAE,CAAC,CAAA;EAEnC,GAAA;;EAEA;EACA,EAAA,OAAO,UAACnK,KAAK,EAAE8rB,GAAG,EAAEE,IAAI,EAAK;MAC3B,IAAIN,SAAS,KAAK,KAAK,EAAE;QACvB,MAAM,IAAIzhB,YAAU,CAClB4hB,aAAa,CAACC,GAAG,EAAE,mBAAmB,IAAIF,OAAO,GAAG,MAAM,GAAGA,OAAO,GAAG,EAAE,CAAC,CAAC,EAC3E3hB,YAAU,CAACiC,cACb,CAAC,CAAA;EACH,KAAA;EAEA,IAAA,IAAI0f,OAAO,IAAI,CAACD,kBAAkB,CAACG,GAAG,CAAC,EAAE;EACvCH,MAAAA,kBAAkB,CAACG,GAAG,CAAC,GAAG,IAAI,CAAA;EAC9B;EACAG,MAAAA,OAAO,CAACC,IAAI,CACVL,aAAa,CACXC,GAAG,EACH,8BAA8B,GAAGF,OAAO,GAAG,yCAC7C,CACF,CAAC,CAAA;EACH,KAAA;MAEA,OAAOF,SAAS,GAAGA,SAAS,CAAC1rB,KAAK,EAAE8rB,GAAG,EAAEE,IAAI,CAAC,GAAG,IAAI,CAAA;KACtD,CAAA;EACH,CAAC,CAAA;AAEDP,cAAU,CAACU,QAAQ,GAAG,SAASA,QAAQA,CAACC,eAAe,EAAE;EACvD,EAAA,OAAO,UAACpsB,KAAK,EAAE8rB,GAAG,EAAK;EACrB;MACAG,OAAO,CAACC,IAAI,CAAA,EAAA,CAAA3iB,MAAA,CAAIuiB,GAAG,EAAA,8BAAA,CAAA,CAAAviB,MAAA,CAA+B6iB,eAAe,CAAE,CAAC,CAAA;EACpE,IAAA,OAAO,IAAI,CAAA;KACZ,CAAA;EACH,CAAC,CAAA;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,SAASC,aAAaA,CAACjf,OAAO,EAAEkf,MAAM,EAAEC,YAAY,EAAE;EACpD,EAAA,IAAIjuB,OAAA,CAAO8O,OAAO,CAAA,KAAK,QAAQ,EAAE;MAC/B,MAAM,IAAInD,YAAU,CAAC,2BAA2B,EAAEA,YAAU,CAAC2B,oBAAoB,CAAC,CAAA;EACpF,GAAA;EACA,EAAA,IAAMlM,IAAI,GAAGrC,MAAM,CAACqC,IAAI,CAAC0N,OAAO,CAAC,CAAA;EACjC,EAAA,IAAI/K,CAAC,GAAG3C,IAAI,CAACC,MAAM,CAAA;EACnB,EAAA,OAAO0C,CAAC,EAAE,GAAG,CAAC,EAAE;EACd,IAAA,IAAMypB,GAAG,GAAGpsB,IAAI,CAAC2C,CAAC,CAAC,CAAA;EACnB,IAAA,IAAMqpB,SAAS,GAAGY,MAAM,CAACR,GAAG,CAAC,CAAA;EAC7B,IAAA,IAAIJ,SAAS,EAAE;EACb,MAAA,IAAM1rB,KAAK,GAAGoN,OAAO,CAAC0e,GAAG,CAAC,CAAA;EAC1B,MAAA,IAAM9sB,MAAM,GAAGgB,KAAK,KAAKiB,SAAS,IAAIyqB,SAAS,CAAC1rB,KAAK,EAAE8rB,GAAG,EAAE1e,OAAO,CAAC,CAAA;QACpE,IAAIpO,MAAM,KAAK,IAAI,EAAE;EACnB,QAAA,MAAM,IAAIiL,YAAU,CAClB,SAAS,GAAG6hB,GAAG,GAAG,WAAW,GAAG9sB,MAAM,EACtCiL,YAAU,CAAC2B,oBACb,CAAC,CAAA;EACH,OAAA;EACA,MAAA,SAAA;EACF,KAAA;MACA,IAAI2gB,YAAY,KAAK,IAAI,EAAE;QACzB,MAAM,IAAItiB,YAAU,CAAC,iBAAiB,GAAG6hB,GAAG,EAAE7hB,YAAU,CAAC4B,cAAc,CAAC,CAAA;EAC1E,KAAA;EACF,GAAA;EACF,CAAA;AAEA,kBAAe;EACbwgB,EAAAA,aAAa,EAAbA,aAAa;EACbZ,EAAAA,UAAU,EAAVA,YAAAA;EACF,CAAC;;ECjGD,IAAMA,UAAU,GAAGC,SAAS,CAACD,UAAU,CAAA;;EAEvC;EACA;EACA;EACA;EACA;EACA;EACA;EANA,IAOMe,KAAK,gBAAA,YAAA;IACT,SAAAA,KAAAA,CAAYC,cAAc,EAAE;EAAAhiB,IAAAA,eAAA,OAAA+hB,KAAA,CAAA,CAAA;EAC1B,IAAA,IAAI,CAAC/Z,QAAQ,GAAGga,cAAc,IAAI,EAAE,CAAA;MACpC,IAAI,CAACC,YAAY,GAAG;EAClBpiB,MAAAA,OAAO,EAAE,IAAImF,oBAAkB,EAAE;QACjClF,QAAQ,EAAE,IAAIkF,oBAAkB,EAAC;OAClC,CAAA;EACH,GAAA;;EAEA;EACF;EACA;EACA;EACA;EACA;EACA;EACA;IAPE,OAAA3E,YAAA,CAAA0hB,KAAA,EAAA,CAAA;MAAA/pB,GAAA,EAAA,SAAA;MAAAzC,KAAA,GAAA,YAAA;EAAA,MAAA,IAAA2sB,SAAA,GAAA5G,iBAAA,cAAAxC,YAAA,EAAA,CAAAld,CAAA,CAQA,SAAA2d,OAAAA,CAAc4I,WAAW,EAAEviB,MAAM,EAAA;EAAA,QAAA,IAAAwiB,KAAA,EAAA1kB,KAAA,EAAAkc,EAAA,CAAA;EAAA,QAAA,OAAAd,YAAA,EAAA,CAAAlO,CAAA,CAAA,UAAAuO,QAAA,EAAA;EAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAW,CAAA,GAAAX,QAAA,CAAAjN,CAAA;EAAA,YAAA,KAAA,CAAA;EAAAiN,cAAAA,QAAA,CAAAW,CAAA,GAAA,CAAA,CAAA;EAAAX,cAAAA,QAAA,CAAAjN,CAAA,GAAA,CAAA,CAAA;EAAA,cAAA,OAEhB,IAAI,CAACuR,QAAQ,CAAC0E,WAAW,EAAEviB,MAAM,CAAC,CAAA;EAAA,YAAA,KAAA,CAAA;EAAA,cAAA,OAAAuZ,QAAA,CAAAtgB,CAAA,CAAAsgB,CAAAA,EAAAA,QAAA,CAAAe,CAAA,CAAA,CAAA;EAAA,YAAA,KAAA,CAAA;EAAAf,cAAAA,QAAA,CAAAW,CAAA,GAAA,CAAA,CAAA;gBAAAF,EAAA,GAAAT,QAAA,CAAAe,CAAA,CAAA;gBAE/C,IAAIN,EAAA,YAAe/c,KAAK,EAAE;kBACpBulB,KAAK,GAAG,EAAE,CAAA;EAEdvlB,gBAAAA,KAAK,CAACwlB,iBAAiB,GAAGxlB,KAAK,CAACwlB,iBAAiB,CAACD,KAAK,CAAC,GAAIA,KAAK,GAAG,IAAIvlB,KAAK,EAAG,CAAA;;EAEhF;EACMa,gBAAAA,KAAK,GAAG0kB,KAAK,CAAC1kB,KAAK,GAAG0kB,KAAK,CAAC1kB,KAAK,CAACpG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,CAAA;kBACjE,IAAI;EACF,kBAAA,IAAI,CAACsiB,EAAA,CAAIlc,KAAK,EAAE;sBACdkc,EAAA,CAAIlc,KAAK,GAAGA,KAAK,CAAA;EACjB;qBACD,MAAM,IAAIA,KAAK,IAAI,CAACpD,MAAM,CAACsf,EAAA,CAAIlc,KAAK,CAAC,CAACvD,QAAQ,CAACuD,KAAK,CAACpG,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE;EAC/EsiB,oBAAAA,EAAA,CAAIlc,KAAK,IAAI,IAAI,GAAGA,KAAK,CAAA;EAC3B,mBAAA;mBACD,CAAC,OAAOvI,CAAC,EAAE;EACV;EAAA,iBAAA;EAEJ,eAAA;EAAC,cAAA,MAAAykB,EAAA,CAAA;EAAA,YAAA,KAAA,CAAA;gBAAA,OAAAT,QAAA,CAAAtgB,CAAA,CAAA,CAAA,CAAA,CAAA;EAAA,WAAA;EAAA,SAAA,EAAA0gB,OAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;SAIJ,CAAA,CAAA,CAAA;EAAA,MAAA,SAzBK1Z,OAAOA,CAAAya,EAAA,EAAAC,GAAA,EAAA;EAAA,QAAA,OAAA2H,SAAA,CAAAzvB,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;EAAA,OAAA;EAAA,MAAA,OAAPmN,OAAO,CAAA;EAAA,KAAA,EAAA,CAAA;EAAA,GAAA,EAAA;MAAA7H,GAAA,EAAA,UAAA;EAAAzC,IAAAA,KAAA,EA2Bb,SAAAkoB,QAAQA,CAAC0E,WAAW,EAAEviB,MAAM,EAAE;EAC5B;EACA;EACA,MAAA,IAAI,OAAOuiB,WAAW,KAAK,QAAQ,EAAE;EACnCviB,QAAAA,MAAM,GAAGA,MAAM,IAAI,EAAE,CAAA;UACrBA,MAAM,CAAC8E,GAAG,GAAGyd,WAAW,CAAA;EAC1B,OAAC,MAAM;EACLviB,QAAAA,MAAM,GAAGuiB,WAAW,IAAI,EAAE,CAAA;EAC5B,OAAA;QAEAviB,MAAM,GAAGoT,WAAW,CAAC,IAAI,CAAChL,QAAQ,EAAEpI,MAAM,CAAC,CAAA;QAE3C,IAAA8V,OAAA,GAAoD9V,MAAM;UAAlDqI,YAAY,GAAAyN,OAAA,CAAZzN,YAAY;UAAEwL,gBAAgB,GAAAiC,OAAA,CAAhBjC,gBAAgB;UAAEpL,OAAO,GAAAqN,OAAA,CAAPrN,OAAO,CAAA;QAE/C,IAAIJ,YAAY,KAAKzR,SAAS,EAAE;EAC9ByqB,QAAAA,SAAS,CAACW,aAAa,CACrB3Z,YAAY,EACZ;EACErC,UAAAA,iBAAiB,EAAEob,UAAU,CAAC/Y,YAAY,CAAC+Y,UAAU,WAAQ,CAAC;EAC9Dnb,UAAAA,iBAAiB,EAAEmb,UAAU,CAAC/Y,YAAY,CAAC+Y,UAAU,WAAQ,CAAC;EAC9Dlb,UAAAA,mBAAmB,EAAEkb,UAAU,CAAC/Y,YAAY,CAAC+Y,UAAU,WAAQ,CAAC;EAChEjb,UAAAA,+BAA+B,EAAEib,UAAU,CAAC/Y,YAAY,CAAC+Y,UAAU,CAAQ,SAAA,CAAA,CAAA;WAC5E,EACD,KACF,CAAC,CAAA;EACH,OAAA;QAEA,IAAIvN,gBAAgB,IAAI,IAAI,EAAE;EAC5B,QAAA,IAAI7S,OAAK,CAACxM,UAAU,CAACqf,gBAAgB,CAAC,EAAE;YACtC7T,MAAM,CAAC6T,gBAAgB,GAAG;EACxB7O,YAAAA,SAAS,EAAE6O,gBAAAA;aACZ,CAAA;EACH,SAAC,MAAM;EACLwN,UAAAA,SAAS,CAACW,aAAa,CACrBnO,gBAAgB,EAChB;cACEzP,MAAM,EAAEgd,UAAU,CAAS,UAAA,CAAA;EAC3Bpc,YAAAA,SAAS,EAAEoc,UAAU,CAAA,UAAA,CAAA;aACtB,EACD,IACF,CAAC,CAAA;EACH,SAAA;EACF,OAAA;;EAEA;EACA,MAAA,IAAIphB,MAAM,CAACiT,iBAAiB,KAAKrc,SAAS,EAAE,CAE3C,MAAM,IAAI,IAAI,CAACwR,QAAQ,CAAC6K,iBAAiB,KAAKrc,SAAS,EAAE;EACxDoJ,QAAAA,MAAM,CAACiT,iBAAiB,GAAG,IAAI,CAAC7K,QAAQ,CAAC6K,iBAAiB,CAAA;EAC5D,OAAC,MAAM;UACLjT,MAAM,CAACiT,iBAAiB,GAAG,IAAI,CAAA;EACjC,OAAA;EAEAoO,MAAAA,SAAS,CAACW,aAAa,CACrBhiB,MAAM,EACN;EACE0iB,QAAAA,OAAO,EAAEtB,UAAU,CAACU,QAAQ,CAAC,SAAS,CAAC;EACvCa,QAAAA,aAAa,EAAEvB,UAAU,CAACU,QAAQ,CAAC,eAAe,CAAA;SACnD,EACD,IACF,CAAC,CAAA;;EAED;EACA9hB,MAAAA,MAAM,CAAC+J,MAAM,GAAG,CAAC/J,MAAM,CAAC+J,MAAM,IAAI,IAAI,CAAC3B,QAAQ,CAAC2B,MAAM,IAAI,KAAK,EAAEnW,WAAW,EAAE,CAAA;;EAE9E;EACA,MAAA,IAAIgvB,cAAc,GAAGna,OAAO,IAAIzH,OAAK,CAACtI,KAAK,CAAC+P,OAAO,CAACoB,MAAM,EAAEpB,OAAO,CAACzI,MAAM,CAAC+J,MAAM,CAAC,CAAC,CAAA;QAEnFtB,OAAO,IACLzH,OAAK,CAACrJ,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,UAACoS,MAAM,EAAK;UACrF,OAAOtB,OAAO,CAACsB,MAAM,CAAC,CAAA;EACxB,OAAC,CAAC,CAAA;QAEJ/J,MAAM,CAACyI,OAAO,GAAG+C,cAAY,CAACtM,MAAM,CAAC0jB,cAAc,EAAEna,OAAO,CAAC,CAAA;;EAE7D;QACA,IAAMoa,uBAAuB,GAAG,EAAE,CAAA;QAClC,IAAIC,8BAA8B,GAAG,IAAI,CAAA;QACzC,IAAI,CAACT,YAAY,CAACpiB,OAAO,CAACtI,OAAO,CAAC,SAASorB,0BAA0BA,CAACC,WAAW,EAAE;EACjF,QAAA,IAAI,OAAOA,WAAW,CAACtd,OAAO,KAAK,UAAU,IAAIsd,WAAW,CAACtd,OAAO,CAAC1F,MAAM,CAAC,KAAK,KAAK,EAAE;EACtF,UAAA,OAAA;EACF,SAAA;EAEA8iB,QAAAA,8BAA8B,GAAGA,8BAA8B,IAAIE,WAAW,CAACvd,WAAW,CAAA;EAE1F,QAAA,IAAM4C,YAAY,GAAGrI,MAAM,CAACqI,YAAY,IAAIC,oBAAoB,CAAA;EAChE,QAAA,IAAMnC,+BAA+B,GACnCkC,YAAY,IAAIA,YAAY,CAAClC,+BAA+B,CAAA;EAE9D,QAAA,IAAIA,+BAA+B,EAAE;YACnC0c,uBAAuB,CAACI,OAAO,CAACD,WAAW,CAACzd,SAAS,EAAEyd,WAAW,CAACxd,QAAQ,CAAC,CAAA;EAC9E,SAAC,MAAM;YACLqd,uBAAuB,CAACjnB,IAAI,CAAConB,WAAW,CAACzd,SAAS,EAAEyd,WAAW,CAACxd,QAAQ,CAAC,CAAA;EAC3E,SAAA;EACF,OAAC,CAAC,CAAA;QAEF,IAAM0d,wBAAwB,GAAG,EAAE,CAAA;QACnC,IAAI,CAACb,YAAY,CAACniB,QAAQ,CAACvI,OAAO,CAAC,SAASwrB,wBAAwBA,CAACH,WAAW,EAAE;UAChFE,wBAAwB,CAACtnB,IAAI,CAAConB,WAAW,CAACzd,SAAS,EAAEyd,WAAW,CAACxd,QAAQ,CAAC,CAAA;EAC5E,OAAC,CAAC,CAAA;EAEF,MAAA,IAAI4d,OAAO,CAAA;QACX,IAAIprB,CAAC,GAAG,CAAC,CAAA;EACT,MAAA,IAAIG,GAAG,CAAA;QAEP,IAAI,CAAC2qB,8BAA8B,EAAE;UACnC,IAAMO,KAAK,GAAG,CAACrC,eAAe,CAACvuB,IAAI,CAAC,IAAI,CAAC,EAAEmE,SAAS,CAAC,CAAA;UACrDysB,KAAK,CAACJ,OAAO,CAAApwB,KAAA,CAAbwwB,KAAK,EAAYR,uBAAuB,CAAC,CAAA;UACzCQ,KAAK,CAACznB,IAAI,CAAA/I,KAAA,CAAVwwB,KAAK,EAASH,wBAAwB,CAAC,CAAA;UACvC/qB,GAAG,GAAGkrB,KAAK,CAAC/tB,MAAM,CAAA;EAElB8tB,QAAAA,OAAO,GAAGxN,OAAO,CAACjH,OAAO,CAAC3O,MAAM,CAAC,CAAA;UAEjC,OAAOhI,CAAC,GAAGG,GAAG,EAAE;EACdirB,UAAAA,OAAO,GAAGA,OAAO,CAAC/kB,IAAI,CAACglB,KAAK,CAACrrB,CAAC,EAAE,CAAC,EAAEqrB,KAAK,CAACrrB,CAAC,EAAE,CAAC,CAAC,CAAA;EAChD,SAAA;EAEA,QAAA,OAAOorB,OAAO,CAAA;EAChB,OAAA;QAEAjrB,GAAG,GAAG0qB,uBAAuB,CAACvtB,MAAM,CAAA;QAEpC,IAAIuf,SAAS,GAAG7U,MAAM,CAAA;QAEtB,OAAOhI,CAAC,GAAGG,GAAG,EAAE;EACd,QAAA,IAAMmrB,WAAW,GAAGT,uBAAuB,CAAC7qB,CAAC,EAAE,CAAC,CAAA;EAChD,QAAA,IAAMurB,UAAU,GAAGV,uBAAuB,CAAC7qB,CAAC,EAAE,CAAC,CAAA;UAC/C,IAAI;EACF6c,UAAAA,SAAS,GAAGyO,WAAW,CAACzO,SAAS,CAAC,CAAA;WACnC,CAAC,OAAO3T,KAAK,EAAE;EACdqiB,UAAAA,UAAU,CAAC7vB,IAAI,CAAC,IAAI,EAAEwN,KAAK,CAAC,CAAA;EAC5B,UAAA,MAAA;EACF,SAAA;EACF,OAAA;QAEA,IAAI;UACFkiB,OAAO,GAAGpC,eAAe,CAACttB,IAAI,CAAC,IAAI,EAAEmhB,SAAS,CAAC,CAAA;SAChD,CAAC,OAAO3T,KAAK,EAAE;EACd,QAAA,OAAO0U,OAAO,CAAChH,MAAM,CAAC1N,KAAK,CAAC,CAAA;EAC9B,OAAA;EAEAlJ,MAAAA,CAAC,GAAG,CAAC,CAAA;QACLG,GAAG,GAAG+qB,wBAAwB,CAAC5tB,MAAM,CAAA;QAErC,OAAO0C,CAAC,GAAGG,GAAG,EAAE;EACdirB,QAAAA,OAAO,GAAGA,OAAO,CAAC/kB,IAAI,CAAC6kB,wBAAwB,CAAClrB,CAAC,EAAE,CAAC,EAAEkrB,wBAAwB,CAAClrB,CAAC,EAAE,CAAC,CAAC,CAAA;EACtF,OAAA;EAEA,MAAA,OAAOorB,OAAO,CAAA;EAChB,KAAA;EAAC,GAAA,EAAA;MAAAhrB,GAAA,EAAA,QAAA;EAAAzC,IAAAA,KAAA,EAED,SAAA6tB,MAAMA,CAACxjB,MAAM,EAAE;QACbA,MAAM,GAAGoT,WAAW,CAAC,IAAI,CAAChL,QAAQ,EAAEpI,MAAM,CAAC,CAAA;EAC3C,MAAA,IAAMyjB,QAAQ,GAAG1Q,aAAa,CAAC/S,MAAM,CAAC6S,OAAO,EAAE7S,MAAM,CAAC8E,GAAG,EAAE9E,MAAM,CAACiT,iBAAiB,CAAC,CAAA;QACpF,OAAOpO,QAAQ,CAAC4e,QAAQ,EAAEzjB,MAAM,CAACyE,MAAM,EAAEzE,MAAM,CAAC6T,gBAAgB,CAAC,CAAA;EACnE,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,CAGH,EAAA,CAAA;AACA7S,SAAK,CAACrJ,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS+rB,mBAAmBA,CAAC3Z,MAAM,EAAE;EACvF;IACAoY,KAAK,CAAClvB,SAAS,CAAC8W,MAAM,CAAC,GAAG,UAAUjF,GAAG,EAAE9E,MAAM,EAAE;MAC/C,OAAO,IAAI,CAACC,OAAO,CACjBmT,WAAW,CAACpT,MAAM,IAAI,EAAE,EAAE;EACxB+J,MAAAA,MAAM,EAANA,MAAM;EACNjF,MAAAA,GAAG,EAAHA,GAAG;EACHhG,MAAAA,IAAI,EAAE,CAACkB,MAAM,IAAI,EAAE,EAAElB,IAAAA;EACvB,KAAC,CACH,CAAC,CAAA;KACF,CAAA;EACH,CAAC,CAAC,CAAA;AAEFkC,SAAK,CAACrJ,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,SAASgsB,qBAAqBA,CAAC5Z,MAAM,EAAE;EAC7E;;IAEA,SAAS6Z,kBAAkBA,CAACC,MAAM,EAAE;MAClC,OAAO,SAASC,UAAUA,CAAChf,GAAG,EAAEhG,IAAI,EAAEkB,MAAM,EAAE;QAC5C,OAAO,IAAI,CAACC,OAAO,CACjBmT,WAAW,CAACpT,MAAM,IAAI,EAAE,EAAE;EACxB+J,QAAAA,MAAM,EAANA,MAAM;UACNtB,OAAO,EAAEob,MAAM,GACX;EACE,UAAA,cAAc,EAAE,qBAAA;WACjB,GACD,EAAE;EACN/e,QAAAA,GAAG,EAAHA,GAAG;EACHhG,QAAAA,IAAI,EAAJA,IAAAA;EACF,OAAC,CACH,CAAC,CAAA;OACF,CAAA;EACH,GAAA;IAEAqjB,KAAK,CAAClvB,SAAS,CAAC8W,MAAM,CAAC,GAAG6Z,kBAAkB,EAAE,CAAA;IAE9CzB,KAAK,CAAClvB,SAAS,CAAC8W,MAAM,GAAG,MAAM,CAAC,GAAG6Z,kBAAkB,CAAC,IAAI,CAAC,CAAA;EAC7D,CAAC,CAAC,CAAA;AAEF,gBAAezB,KAAK;;EClQpB;EACA;EACA;EACA;EACA;EACA;EACA;EANA,IAOM4B,WAAW,gBAAA,YAAA;IACf,SAAAA,WAAAA,CAAYC,QAAQ,EAAE;EAAA5jB,IAAAA,eAAA,OAAA2jB,WAAA,CAAA,CAAA;EACpB,IAAA,IAAI,OAAOC,QAAQ,KAAK,UAAU,EAAE;EAClC,MAAA,MAAM,IAAIhhB,SAAS,CAAC,8BAA8B,CAAC,CAAA;EACrD,KAAA;EAEA,IAAA,IAAIihB,cAAc,CAAA;MAElB,IAAI,CAACb,OAAO,GAAG,IAAIxN,OAAO,CAAC,SAASsO,eAAeA,CAACvV,OAAO,EAAE;EAC3DsV,MAAAA,cAAc,GAAGtV,OAAO,CAAA;EAC1B,KAAC,CAAC,CAAA;MAEF,IAAMjQ,KAAK,GAAG,IAAI,CAAA;;EAElB;EACA,IAAA,IAAI,CAAC0kB,OAAO,CAAC/kB,IAAI,CAAC,UAACga,MAAM,EAAK;EAC5B,MAAA,IAAI,CAAC3Z,KAAK,CAACylB,UAAU,EAAE,OAAA;EAEvB,MAAA,IAAInsB,CAAC,GAAG0G,KAAK,CAACylB,UAAU,CAAC7uB,MAAM,CAAA;EAE/B,MAAA,OAAO0C,CAAC,EAAE,GAAG,CAAC,EAAE;EACd0G,QAAAA,KAAK,CAACylB,UAAU,CAACnsB,CAAC,CAAC,CAACqgB,MAAM,CAAC,CAAA;EAC7B,OAAA;QACA3Z,KAAK,CAACylB,UAAU,GAAG,IAAI,CAAA;EACzB,KAAC,CAAC,CAAA;;EAEF;EACA,IAAA,IAAI,CAACf,OAAO,CAAC/kB,IAAI,GAAG,UAAC+lB,WAAW,EAAK;EACnC,MAAA,IAAInN,QAAQ,CAAA;EACZ;EACA,MAAA,IAAMmM,OAAO,GAAG,IAAIxN,OAAO,CAAC,UAACjH,OAAO,EAAK;EACvCjQ,QAAAA,KAAK,CAAC6Z,SAAS,CAAC5J,OAAO,CAAC,CAAA;EACxBsI,QAAAA,QAAQ,GAAGtI,OAAO,CAAA;EACpB,OAAC,CAAC,CAACtQ,IAAI,CAAC+lB,WAAW,CAAC,CAAA;EAEpBhB,MAAAA,OAAO,CAAC/K,MAAM,GAAG,SAASzJ,MAAMA,GAAG;EACjClQ,QAAAA,KAAK,CAAC6X,WAAW,CAACU,QAAQ,CAAC,CAAA;SAC5B,CAAA;EAED,MAAA,OAAOmM,OAAO,CAAA;OACf,CAAA;MAEDY,QAAQ,CAAC,SAAS3L,MAAMA,CAACvY,OAAO,EAAEE,MAAM,EAAEC,OAAO,EAAE;QACjD,IAAIvB,KAAK,CAACsa,MAAM,EAAE;EAChB;EACA,QAAA,OAAA;EACF,OAAA;QAEAta,KAAK,CAACsa,MAAM,GAAG,IAAIxK,eAAa,CAAC1O,OAAO,EAAEE,MAAM,EAAEC,OAAO,CAAC,CAAA;EAC1DgkB,MAAAA,cAAc,CAACvlB,KAAK,CAACsa,MAAM,CAAC,CAAA;EAC9B,KAAC,CAAC,CAAA;EACJ,GAAA;;EAEA;EACF;EACA;IAFE,OAAAvY,YAAA,CAAAsjB,WAAA,EAAA,CAAA;MAAA3rB,GAAA,EAAA,kBAAA;EAAAzC,IAAAA,KAAA,EAGA,SAAAorB,gBAAgBA,GAAG;QACjB,IAAI,IAAI,CAAC/H,MAAM,EAAE;UACf,MAAM,IAAI,CAACA,MAAM,CAAA;EACnB,OAAA;EACF,KAAA;;EAEA;EACF;EACA;EAFE,GAAA,EAAA;MAAA5gB,GAAA,EAAA,WAAA;EAAAzC,IAAAA,KAAA,EAIA,SAAA4iB,SAASA,CAAC7H,QAAQ,EAAE;QAClB,IAAI,IAAI,CAACsI,MAAM,EAAE;EACftI,QAAAA,QAAQ,CAAC,IAAI,CAACsI,MAAM,CAAC,CAAA;EACrB,QAAA,OAAA;EACF,OAAA;QAEA,IAAI,IAAI,CAACmL,UAAU,EAAE;EACnB,QAAA,IAAI,CAACA,UAAU,CAACvoB,IAAI,CAAC8U,QAAQ,CAAC,CAAA;EAChC,OAAC,MAAM;EACL,QAAA,IAAI,CAACyT,UAAU,GAAG,CAACzT,QAAQ,CAAC,CAAA;EAC9B,OAAA;EACF,KAAA;;EAEA;EACF;EACA;EAFE,GAAA,EAAA;MAAAtY,GAAA,EAAA,aAAA;EAAAzC,IAAAA,KAAA,EAIA,SAAA4gB,WAAWA,CAAC7F,QAAQ,EAAE;EACpB,MAAA,IAAI,CAAC,IAAI,CAACyT,UAAU,EAAE;EACpB,QAAA,OAAA;EACF,OAAA;QACA,IAAMngB,KAAK,GAAG,IAAI,CAACmgB,UAAU,CAACvpB,OAAO,CAAC8V,QAAQ,CAAC,CAAA;EAC/C,MAAA,IAAI1M,KAAK,KAAK,CAAC,CAAC,EAAE;UAChB,IAAI,CAACmgB,UAAU,CAACE,MAAM,CAACrgB,KAAK,EAAE,CAAC,CAAC,CAAA;EAClC,OAAA;EACF,KAAA;EAAC,GAAA,EAAA;MAAA5L,GAAA,EAAA,eAAA;EAAAzC,IAAAA,KAAA,EAED,SAAA4pB,aAAaA,GAAG;EAAA,MAAA,IAAApf,KAAA,GAAA,IAAA,CAAA;EACd,MAAA,IAAM2Y,UAAU,GAAG,IAAIC,eAAe,EAAE,CAAA;EAExC,MAAA,IAAMT,KAAK,GAAG,SAARA,KAAKA,CAAI7L,GAAG,EAAK;EACrBqM,QAAAA,UAAU,CAACR,KAAK,CAAC7L,GAAG,CAAC,CAAA;SACtB,CAAA;EAED,MAAA,IAAI,CAAC8L,SAAS,CAACD,KAAK,CAAC,CAAA;EAErBQ,MAAAA,UAAU,CAACtC,MAAM,CAACD,WAAW,GAAG,YAAA;EAAA,QAAA,OAAMpW,KAAI,CAACoW,WAAW,CAAC+B,KAAK,CAAC,CAAA;EAAA,OAAA,CAAA;QAE7D,OAAOQ,UAAU,CAACtC,MAAM,CAAA;EAC1B,KAAA;;EAEA;EACF;EACA;EACA;EAHE,GAAA,CAAA,EAAA,CAAA;MAAApe,GAAA,EAAA,QAAA;EAAAzC,IAAAA,KAAA,EAIA,SAAOqI,MAAMA,GAAG;EACd,MAAA,IAAIqa,MAAM,CAAA;QACV,IAAM3Z,KAAK,GAAG,IAAIqlB,WAAW,CAAC,SAASC,QAAQA,CAACM,CAAC,EAAE;EACjDjM,QAAAA,MAAM,GAAGiM,CAAC,CAAA;EACZ,OAAC,CAAC,CAAA;QACF,OAAO;EACL5lB,QAAAA,KAAK,EAALA,KAAK;EACL2Z,QAAAA,MAAM,EAANA,MAAAA;SACD,CAAA;EACH,KAAA;EAAC,GAAA,CAAA,CAAA,CAAA;EAAA,CAAA,EAAA,CAAA;AAGH,sBAAe0L,WAAW;;ECpI1B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACe,SAASQ,MAAMA,CAACC,QAAQ,EAAE;EACvC,EAAA,OAAO,SAAS5xB,IAAIA,CAACkI,GAAG,EAAE;EACxB,IAAA,OAAO0pB,QAAQ,CAAC3xB,KAAK,CAAC,IAAI,EAAEiI,GAAG,CAAC,CAAA;KACjC,CAAA;EACH;;ECvBA;EACA;EACA;EACA;EACA;EACA;EACA;EACe,SAASwF,YAAYA,CAACmkB,OAAO,EAAE;IAC5C,OAAOzjB,OAAK,CAAC/L,QAAQ,CAACwvB,OAAO,CAAC,IAAIA,OAAO,CAACnkB,YAAY,KAAK,IAAI,CAAA;EACjE;;ECbA,IAAMokB,cAAc,GAAG;EACrBC,EAAAA,QAAQ,EAAE,GAAG;EACbC,EAAAA,kBAAkB,EAAE,GAAG;EACvBC,EAAAA,UAAU,EAAE,GAAG;EACfC,EAAAA,UAAU,EAAE,GAAG;EACfC,EAAAA,EAAE,EAAE,GAAG;EACPC,EAAAA,OAAO,EAAE,GAAG;EACZC,EAAAA,QAAQ,EAAE,GAAG;EACbC,EAAAA,2BAA2B,EAAE,GAAG;EAChCC,EAAAA,SAAS,EAAE,GAAG;EACdC,EAAAA,YAAY,EAAE,GAAG;EACjBC,EAAAA,cAAc,EAAE,GAAG;EACnBC,EAAAA,WAAW,EAAE,GAAG;EAChBC,EAAAA,eAAe,EAAE,GAAG;EACpBC,EAAAA,MAAM,EAAE,GAAG;EACXC,EAAAA,eAAe,EAAE,GAAG;EACpBC,EAAAA,gBAAgB,EAAE,GAAG;EACrBC,EAAAA,KAAK,EAAE,GAAG;EACVC,EAAAA,QAAQ,EAAE,GAAG;EACbC,EAAAA,WAAW,EAAE,GAAG;EAChBC,EAAAA,QAAQ,EAAE,GAAG;EACbC,EAAAA,MAAM,EAAE,GAAG;EACXC,EAAAA,iBAAiB,EAAE,GAAG;EACtBC,EAAAA,iBAAiB,EAAE,GAAG;EACtBC,EAAAA,UAAU,EAAE,GAAG;EACfC,EAAAA,YAAY,EAAE,GAAG;EACjBC,EAAAA,eAAe,EAAE,GAAG;EACpBC,EAAAA,SAAS,EAAE,GAAG;EACdC,EAAAA,QAAQ,EAAE,GAAG;EACbC,EAAAA,gBAAgB,EAAE,GAAG;EACrBC,EAAAA,aAAa,EAAE,GAAG;EAClBC,EAAAA,2BAA2B,EAAE,GAAG;EAChCC,EAAAA,cAAc,EAAE,GAAG;EACnBC,EAAAA,QAAQ,EAAE,GAAG;EACbC,EAAAA,IAAI,EAAE,GAAG;EACTC,EAAAA,cAAc,EAAE,GAAG;EACnBC,EAAAA,kBAAkB,EAAE,GAAG;EACvBC,EAAAA,eAAe,EAAE,GAAG;EACpBC,EAAAA,UAAU,EAAE,GAAG;EACfC,EAAAA,oBAAoB,EAAE,GAAG;EACzBC,EAAAA,mBAAmB,EAAE,GAAG;EACxBC,EAAAA,iBAAiB,EAAE,GAAG;EACtBC,EAAAA,SAAS,EAAE,GAAG;EACdC,EAAAA,kBAAkB,EAAE,GAAG;EACvBC,EAAAA,mBAAmB,EAAE,GAAG;EACxBC,EAAAA,MAAM,EAAE,GAAG;EACXC,EAAAA,gBAAgB,EAAE,GAAG;EACrBC,EAAAA,QAAQ,EAAE,GAAG;EACbC,EAAAA,eAAe,EAAE,GAAG;EACpBC,EAAAA,oBAAoB,EAAE,GAAG;EACzBC,EAAAA,eAAe,EAAE,GAAG;EACpBC,EAAAA,2BAA2B,EAAE,GAAG;EAChCC,EAAAA,0BAA0B,EAAE,GAAG;EAC/BC,EAAAA,mBAAmB,EAAE,GAAG;EACxBC,EAAAA,cAAc,EAAE,GAAG;EACnBC,EAAAA,UAAU,EAAE,GAAG;EACfC,EAAAA,kBAAkB,EAAE,GAAG;EACvBC,EAAAA,cAAc,EAAE,GAAG;EACnBC,EAAAA,uBAAuB,EAAE,GAAG;EAC5BC,EAAAA,qBAAqB,EAAE,GAAG;EAC1BC,EAAAA,mBAAmB,EAAE,GAAG;EACxBC,EAAAA,YAAY,EAAE,GAAG;EACjBC,EAAAA,WAAW,EAAE,GAAG;EAChBC,EAAAA,6BAA6B,EAAE,GAAG;EAClCC,EAAAA,eAAe,EAAE,GAAG;EACpBC,EAAAA,kBAAkB,EAAE,GAAG;EACvBC,EAAAA,mBAAmB,EAAE,GAAG;EACxBC,EAAAA,eAAe,EAAE,GAAG;EACpBC,EAAAA,kBAAkB,EAAE,GAAG;EACvBC,EAAAA,qBAAqB,EAAE,GAAA;EACzB,CAAC,CAAA;EAED/1B,MAAM,CAAC+U,OAAO,CAAC2c,cAAc,CAAC,CAAC/sB,OAAO,CAAC,UAAAE,IAAA,EAAkB;EAAA,EAAA,IAAAc,KAAA,GAAAvB,cAAA,CAAAS,IAAA,EAAA,CAAA,CAAA;EAAhBO,IAAAA,GAAG,GAAAO,KAAA,CAAA,CAAA,CAAA;EAAEhD,IAAAA,KAAK,GAAAgD,KAAA,CAAA,CAAA,CAAA,CAAA;EACjD+rB,EAAAA,cAAc,CAAC/uB,KAAK,CAAC,GAAGyC,GAAG,CAAA;EAC7B,CAAC,CAAC,CAAA;AAEF,yBAAessB,cAAc;;ECxD7B;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAASsE,cAAcA,CAACC,aAAa,EAAE;EACrC,EAAA,IAAMxwB,OAAO,GAAG,IAAI0pB,OAAK,CAAC8G,aAAa,CAAC,CAAA;IACxC,IAAMC,QAAQ,GAAGz2B,IAAI,CAAC0vB,OAAK,CAAClvB,SAAS,CAACgN,OAAO,EAAExH,OAAO,CAAC,CAAA;;EAEvD;IACAuI,OAAK,CAAChI,MAAM,CAACkwB,QAAQ,EAAE/G,OAAK,CAAClvB,SAAS,EAAEwF,OAAO,EAAE;EAAEV,IAAAA,UAAU,EAAE,IAAA;EAAK,GAAC,CAAC,CAAA;;EAEtE;IACAiJ,OAAK,CAAChI,MAAM,CAACkwB,QAAQ,EAAEzwB,OAAO,EAAE,IAAI,EAAE;EAAEV,IAAAA,UAAU,EAAE,IAAA;EAAK,GAAC,CAAC,CAAA;;EAE3D;EACAmxB,EAAAA,QAAQ,CAACr1B,MAAM,GAAG,SAASA,MAAMA,CAACuuB,cAAc,EAAE;MAChD,OAAO4G,cAAc,CAAC5V,WAAW,CAAC6V,aAAa,EAAE7G,cAAc,CAAC,CAAC,CAAA;KAClE,CAAA;EAED,EAAA,OAAO8G,QAAQ,CAAA;EACjB,CAAA;;EAEA;AACA,MAAMC,KAAK,GAAGH,cAAc,CAAC5gB,UAAQ,EAAC;;EAEtC;EACA+gB,KAAK,CAAChH,KAAK,GAAGA,OAAK,CAAA;;EAEnB;EACAgH,KAAK,CAAC3a,aAAa,GAAGA,eAAa,CAAA;EACnC2a,KAAK,CAACpF,WAAW,GAAGA,aAAW,CAAA;EAC/BoF,KAAK,CAAC7a,QAAQ,GAAGA,QAAQ,CAAA;EACzB6a,KAAK,CAAChI,OAAO,GAAGA,OAAO,CAAA;EACvBgI,KAAK,CAACrmB,UAAU,GAAGA,UAAU,CAAA;;EAE7B;EACAqmB,KAAK,CAACvpB,UAAU,GAAGA,YAAU,CAAA;;EAE7B;EACAupB,KAAK,CAACC,MAAM,GAAGD,KAAK,CAAC3a,aAAa,CAAA;;EAElC;EACA2a,KAAK,CAACE,GAAG,GAAG,SAASA,GAAGA,CAACC,QAAQ,EAAE;EACjC,EAAA,OAAO1T,OAAO,CAACyT,GAAG,CAACC,QAAQ,CAAC,CAAA;EAC9B,CAAC,CAAA;EAEDH,KAAK,CAAC5E,MAAM,GAAGA,MAAM,CAAA;;EAErB;EACA4E,KAAK,CAAC7oB,YAAY,GAAGA,YAAY,CAAA;;EAEjC;EACA6oB,KAAK,CAAC/V,WAAW,GAAGA,WAAW,CAAA;EAE/B+V,KAAK,CAAC3d,YAAY,GAAGA,cAAY,CAAA;EAEjC2d,KAAK,CAACI,UAAU,GAAG,UAAC/1B,KAAK,EAAA;EAAA,EAAA,OAAKmU,cAAc,CAAC3G,OAAK,CAACnF,UAAU,CAACrI,KAAK,CAAC,GAAG,IAAImD,QAAQ,CAACnD,KAAK,CAAC,GAAGA,KAAK,CAAC,CAAA;EAAA,CAAA,CAAA;EAEnG21B,KAAK,CAAC5I,UAAU,GAAGC,QAAQ,CAACD,UAAU,CAAA;EAEtC4I,KAAK,CAACzE,cAAc,GAAGA,gBAAc,CAAA;EAErCyE,KAAK,CAAA,SAAA,CAAQ,GAAGA,KAAK;;;;;;;;"} \ No newline at end of file diff --git a/node_modules/axios/dist/axios.min.js b/node_modules/axios/dist/axios.min.js new file mode 100644 index 0000000..0530169 --- /dev/null +++ b/node_modules/axios/dist/axios.min.js @@ -0,0 +1,5 @@ +/*! Axios v1.13.6 Copyright (c) 2026 Matt Zabriskie and contributors */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).axios=t()}(this,function(){"use strict";function e(e,t){this.v=e,this.k=t}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n3?(o=h===r)&&(s=i[(u=i[4])?5:(u=3,3)],i[4]=i[5]=e):i[0]<=p&&((o=n<2&&pr||r>h)&&(i[4]=n,i[5]=r,d.n=h,u=0))}if(o||n>1)return a;throw l=!0,r}return function(o,f,h){if(c>1)throw TypeError("Generator is already running");for(l&&1===f&&p(f,h),u=f,s=h;(t=u<2?e:s)||!l;){i||(u?u<3?(u>1&&(d.n=-1),p(u,s)):d.n=s:d.v=s);try{if(c=2,i){if(u||(o="next"),t=i[o]){if(!(t=t.call(i,s)))throw TypeError("iterator result is not an object");if(!t.done)return t;s=t.value,u<2&&(u=0)}else 1===u&&(t=i.return)&&t.call(i),u<2&&(s=TypeError("The iterator does not provide a '"+o+"' method"),u=1);i=e}else if((t=(l=d.n<0)?s:n.call(r,d))!==a)break}catch(t){i=e,u=1,s=t}finally{c=1}}return{value:t,done:l}}}(n,o,i),!0),c}var a={};function u(){}function s(){}function c(){}t=Object.getPrototypeOf;var f=[][r]?t(t([][r]())):(g(t={},r,function(){return this}),t),l=c.prototype=u.prototype=Object.create(f);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,g(e,o,"GeneratorFunction")),e.prototype=Object.create(l),e}return s.prototype=c,g(l,"constructor",c),g(c,"constructor",s),s.displayName="GeneratorFunction",g(c,o,"GeneratorFunction"),g(l),g(l,o,"Generator"),g(l,r,function(){return this}),g(l,"toString",function(){return"[object Generator]"}),(m=function(){return{w:i,m:d}})()}function g(e,t,n,r){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}g=function(e,t,n,r){function i(t,n){g(e,t,function(e){return this._invoke(t,n,e)})}t?o?o(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(i("next",0),i("throw",1),i("return",2))},g(e,t,n,r)}function w(e){if(null!=e){var t=e["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],n=0;if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length))return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}throw new TypeError(typeof e+" is not iterable")}function O(e,t){return O=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},O(e,t)}function E(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,u=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(u.push(r.value),u.length!==t);s=!0);}catch(e){c=!0,o=e}finally{try{if(!s&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(e,t)||j(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function R(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||j(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}function T(e){return T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},T(e)}function j(e,n){if(e){if("string"==typeof e)return t(e,n);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,n):void 0}}function A(e){return function(){return new k(e.apply(this,arguments))}}function k(t){var n,r;function o(n,r){try{var a=t[n](r),u=a.value,s=u instanceof e;Promise.resolve(s?u.v:u).then(function(e){if(s){var r="return"===n?"return":"next";if(!u.k||e.done)return o(r,e);e=t[r](e).value}i(a.done?"return":"normal",e)},function(e){o("throw",e)})}catch(e){i("throw",e)}}function i(e,t){switch(e){case"return":n.resolve({value:t,done:!0});break;case"throw":n.reject(t);break;default:n.resolve({value:t,done:!1})}(n=n.next)?o(n.key,n.arg):r=null}this._invoke=function(e,t){return new Promise(function(i,a){var u={key:e,arg:t,resolve:i,reject:a,next:null};r?r=r.next=u:(n=r=u,o(e,t))})},"function"!=typeof t.return&&(this.return=void 0)}function P(e){var t="function"==typeof Map?new Map:void 0;return P=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return function(e,t,n){if(y())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var o=new(e.bind.apply(e,r));return n&&O(o,n.prototype),o}(e,arguments,p(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),O(n,e)},P(e)}function _(e,t){return function(){return e.apply(t,arguments)}}k.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},k.prototype.next=function(e){return this._invoke("next",e)},k.prototype.throw=function(e){return this._invoke("throw",e)},k.prototype.return=function(e){return this._invoke("return",e)};var x,N=Object.prototype.toString,C=Object.getPrototypeOf,U=Symbol.iterator,F=Symbol.toStringTag,D=(x=Object.create(null),function(e){var t=N.call(e);return x[t]||(x[t]=t.slice(8,-1).toLowerCase())}),B=function(e){return e=e.toLowerCase(),function(t){return D(t)===e}},L=function(e){return function(t){return T(t)===e}},I=Array.isArray,q=L("undefined");function M(e){return null!==e&&!q(e)&&null!==e.constructor&&!q(e.constructor)&&J(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}var z=B("ArrayBuffer");var H=L("string"),J=L("function"),W=L("number"),K=function(e){return null!==e&&"object"===T(e)},V=function(e){if("object"!==D(e))return!1;var t=C(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||F in e||U in e)},G=B("Date"),X=B("File"),$=B("Blob"),Q=B("FileList");var Y="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},Z=void 0!==Y.FormData?Y.FormData:void 0,ee=B("URLSearchParams"),te=E(["ReadableStream","Request","Response","Headers"].map(B),4),ne=te[0],re=te[1],oe=te[2],ie=te[3];function ae(e,t){var n,r,o=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).allOwnKeys,i=void 0!==o&&o;if(null!=e)if("object"!==T(e)&&(e=[e]),I(e))for(n=0,r=e.length;n0;)if(t===(n=r[o]).toLowerCase())return n;return null}var se="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,ce=function(e){return!q(e)&&e!==se};var fe,le=(fe="undefined"!=typeof Uint8Array&&C(Uint8Array),function(e){return fe&&e instanceof fe}),de=B("HTMLFormElement"),pe=function(){var e=Object.prototype.hasOwnProperty;return function(t,n){return e.call(t,n)}}(),he=B("RegExp"),ye=function(e,t){var n=Object.getOwnPropertyDescriptors(e),r={};ae(n,function(n,o){var i;!1!==(i=t(n,o,e))&&(r[o]=i||n)}),Object.defineProperties(e,r)};var ve,be,me,ge,we=B("AsyncFunction"),Oe=(ve="function"==typeof setImmediate,be=J(se.postMessage),ve?setImmediate:be?(me="axios@".concat(Math.random()),ge=[],se.addEventListener("message",function(e){var t=e.source,n=e.data;t===se&&n===me&&ge.length&&ge.shift()()},!1),function(e){ge.push(e),se.postMessage(me,"*")}):function(e){return setTimeout(e)}),Ee="undefined"!=typeof queueMicrotask?queueMicrotask.bind(se):"undefined"!=typeof process&&process.nextTick||Oe,Re={isArray:I,isArrayBuffer:z,isBuffer:M,isFormData:function(e){var t;return e&&(Z&&e instanceof Z||J(e.append)&&("formdata"===(t=D(e))||"object"===t&&J(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&z(e.buffer)},isString:H,isNumber:W,isBoolean:function(e){return!0===e||!1===e},isObject:K,isPlainObject:V,isEmptyObject:function(e){if(!K(e)||M(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(e){return!1}},isReadableStream:ne,isRequest:re,isResponse:oe,isHeaders:ie,isUndefined:q,isDate:G,isFile:X,isReactNativeBlob:function(e){return!(!e||void 0===e.uri)},isReactNative:function(e){return e&&void 0!==e.getParts},isBlob:$,isRegExp:he,isFunction:J,isStream:function(e){return K(e)&&J(e.pipe)},isURLSearchParams:ee,isTypedArray:le,isFileList:Q,forEach:ae,merge:function e(){for(var t=ce(this)&&this||{},n=t.caseless,r=t.skipUndefined,o={},i=function(t,i){if("__proto__"!==i&&"constructor"!==i&&"prototype"!==i){var a=n&&ue(o,i)||i;V(o[a])&&V(t)?o[a]=e(o[a],t):V(t)?o[a]=e({},t):I(t)?o[a]=t.slice():r&&q(t)||(o[a]=t)}},a=0,u=arguments.length;a3&&void 0!==arguments[3]?arguments[3]:{}).allOwnKeys}),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,n,r){e.prototype=Object.create(t.prototype,r),Object.defineProperty(e.prototype,"constructor",{value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:function(e,t,n,r){var o,i,a,u={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],r&&!r(a,e,t)||u[a]||(t[a]=e[a],u[a]=!0);e=!1!==n&&C(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:D,kindOfTest:B,endsWith:function(e,t,n){e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;var r=e.indexOf(t,n);return-1!==r&&r===n},toArray:function(e){if(!e)return null;if(I(e))return e;var t=e.length;if(!W(t))return null;for(var n=new Array(t);t-- >0;)n[t]=e[t];return n},forEachEntry:function(e,t){for(var n,r=(e&&e[U]).call(e);(n=r.next())&&!n.done;){var o=n.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var n,r=[];null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:de,hasOwnProperty:pe,hasOwnProp:pe,reduceDescriptors:ye,freezeMethods:function(e){ye(e,function(t,n){if(J(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;var r=e[n];J(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+n+"'")}))})},toObjectSet:function(e,t){var n={},r=function(e){e.forEach(function(e){n[e]=!0})};return I(e)?r(e):r(String(e).split(t)),n},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n})},noop:function(){},toFiniteNumber:function(e,t){return null!=e&&Number.isFinite(e=+e)?e:t},findKey:ue,global:se,isContextDefined:ce,isSpecCompliantForm:function(e){return!!(e&&J(e.append)&&"FormData"===e[F]&&e[U])},toJSONObject:function(e){var t=new Array(10),n=function(e,r){if(K(e)){if(t.indexOf(e)>=0)return;if(M(e))return e;if(!("toJSON"in e)){t[r]=e;var o=I(e)?[]:{};return ae(e,function(e,t){var i=n(e,r+1);!q(i)&&(o[t]=i)}),t[r]=void 0,o}}return e};return n(e,0)},isAsyncFn:we,isThenable:function(e){return e&&(K(e)||J(e))&&J(e.then)&&J(e.catch)},setImmediate:Oe,asap:Ee,isIterable:function(e){return null!=e&&J(e[U])}},Se=function(e){function t(e,n,r,o,i){var a;return c(this,t),a=s(this,t,[e]),Object.defineProperty(a,"message",{value:e,enumerable:!0,writable:!0,configurable:!0}),a.name="AxiosError",a.isAxiosError=!0,n&&(a.code=n),r&&(a.config=r),o&&(a.request=o),i&&(a.response=i,a.status=i.status),a}return h(t,e),l(t,[{key:"toJSON",value:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Re.toJSONObject(this.config),code:this.code,status:this.status}}}],[{key:"from",value:function(e,n,r,o,i,a){var u=new t(e.message,n||e.code,r,o,i);return u.cause=e,u.name=e.name,null!=e.status&&null==u.status&&(u.status=e.status),a&&Object.assign(u,a),u}}])}(P(Error));Se.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE",Se.ERR_BAD_OPTION="ERR_BAD_OPTION",Se.ECONNABORTED="ECONNABORTED",Se.ETIMEDOUT="ETIMEDOUT",Se.ERR_NETWORK="ERR_NETWORK",Se.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS",Se.ERR_DEPRECATED="ERR_DEPRECATED",Se.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE",Se.ERR_BAD_REQUEST="ERR_BAD_REQUEST",Se.ERR_CANCELED="ERR_CANCELED",Se.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT",Se.ERR_INVALID_URL="ERR_INVALID_URL";var Te=Se;function je(e){return Re.isPlainObject(e)||Re.isArray(e)}function Ae(e){return Re.endsWith(e,"[]")?e.slice(0,-2):e}function ke(e,t,n){return e?e.concat(t).map(function(e,t){return e=Ae(e),!n&&t?"["+e+"]":e}).join(n?".":""):t}var Pe=Re.toFlatObject(Re,{},null,function(e){return/^is[A-Z]/.test(e)});function _e(e,t,n){if(!Re.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var r=(n=Re.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!Re.isUndefined(t[e])})).metaTokens,o=n.visitor||c,i=n.dots,a=n.indexes,u=(n.Blob||"undefined"!=typeof Blob&&Blob)&&Re.isSpecCompliantForm(t);if(!Re.isFunction(o))throw new TypeError("visitor must be a function");function s(e){if(null===e)return"";if(Re.isDate(e))return e.toISOString();if(Re.isBoolean(e))return e.toString();if(!u&&Re.isBlob(e))throw new Te("Blob is not supported. Use a Buffer instead.");return Re.isArrayBuffer(e)||Re.isTypedArray(e)?u&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,n,o){var u=e;if(Re.isReactNative(t)&&Re.isReactNativeBlob(e))return t.append(ke(o,n,i),s(e)),!1;if(e&&!o&&"object"===T(e))if(Re.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(Re.isArray(e)&&function(e){return Re.isArray(e)&&!e.some(je)}(e)||(Re.isFileList(e)||Re.endsWith(n,"[]"))&&(u=Re.toArray(e)))return n=Ae(n),u.forEach(function(e,r){!Re.isUndefined(e)&&null!==e&&t.append(!0===a?ke([n],r,i):null===a?n:n+"[]",s(e))}),!1;return!!je(e)||(t.append(ke(o,n,i),s(e)),!1)}var f=[],l=Object.assign(Pe,{defaultVisitor:c,convertValue:s,isVisitable:je});if(!Re.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!Re.isUndefined(n)){if(-1!==f.indexOf(n))throw Error("Circular reference detected in "+r.join("."));f.push(n),Re.forEach(n,function(n,i){!0===(!(Re.isUndefined(n)||null===n)&&o.call(t,n,Re.isString(i)?i.trim():i,r,l))&&e(n,r?r.concat(i):[i])}),f.pop()}}(e),t}function xe(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return t[e]})}function Ne(e,t){this._pairs=[],e&&_e(e,this,t)}var Ce=Ne.prototype;function Ue(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function Fe(e,t,n){if(!t)return e;var r,o=n&&n.encode||Ue,i=Re.isFunction(n)?{serialize:n}:n,a=i&&i.serialize;if(r=a?a(t,i):Re.isURLSearchParams(t)?t.toString():new Ne(t,i).toString(o)){var u=e.indexOf("#");-1!==u&&(e=e.slice(0,u)),e+=(-1===e.indexOf("?")?"?":"&")+r}return e}Ce.append=function(e,t){this._pairs.push([e,t])},Ce.toString=function(e){var t=e?function(t){return e.call(this,t,xe)}:xe;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};var De=function(){return l(function e(){c(this,e),this.handlers=[]},[{key:"use",value:function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}},{key:"eject",value:function(e){this.handlers[e]&&(this.handlers[e]=null)}},{key:"clear",value:function(){this.handlers&&(this.handlers=[])}},{key:"forEach",value:function(e){Re.forEach(this.handlers,function(t){null!==t&&e(t)})}}])}(),Be={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},Le={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Ne,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},Ie="undefined"!=typeof window&&"undefined"!=typeof document,qe="object"===("undefined"==typeof navigator?"undefined":T(navigator))&&navigator||void 0,Me=Ie&&(!qe||["ReactNative","NativeScript","NS"].indexOf(qe.product)<0),ze="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,He=Ie&&window.location.href||"http://localhost",Je=b(b({},Object.freeze({__proto__:null,hasBrowserEnv:Ie,hasStandardBrowserWebWorkerEnv:ze,hasStandardBrowserEnv:Me,navigator:qe,origin:He})),Le);function We(e){function t(e,n,r,o){var i=e[o++];if("__proto__"===i)return!0;var a=Number.isFinite(+i),u=o>=e.length;return i=!i&&Re.isArray(r)?r.length:i,u?(Re.hasOwnProp(r,i)?r[i]=[r[i],n]:r[i]=n,!a):(r[i]&&Re.isObject(r[i])||(r[i]=[]),t(e,n,r[i],o)&&Re.isArray(r[i])&&(r[i]=function(e){var t,n,r={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=Re.isObject(e);if(i&&Re.isHTMLForm(e)&&(e=new FormData(e)),Re.isFormData(e))return o?JSON.stringify(We(e)):e;if(Re.isArrayBuffer(e)||Re.isBuffer(e)||Re.isStream(e)||Re.isFile(e)||Re.isBlob(e)||Re.isReadableStream(e))return e;if(Re.isArrayBufferView(e))return e.buffer;if(Re.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return _e(e,new Je.classes.URLSearchParams,b({visitor:function(e,t,n,r){return Je.isNode&&Re.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((n=Re.isFileList(e))||r.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return _e(n?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,n){if(Re.isString(e))try{return(t||JSON.parse)(e),Re.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||Ke.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(Re.isResponse(e)||Re.isReadableStream(e))return e;if(e&&Re.isString(e)&&(n&&!this.responseType||r)){var o=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e,this.parseReviver)}catch(e){if(o){if("SyntaxError"===e.name)throw Te.from(e,Te.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Je.classes.FormData,Blob:Je.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Re.forEach(["delete","get","head","post","put","patch"],function(e){Ke.headers[e]={}});var Ve=Ke,Ge=Re.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Xe=Symbol("internals");function $e(e){return e&&String(e).trim().toLowerCase()}function Qe(e){return!1===e||null==e?e:Re.isArray(e)?e.map(Qe):String(e)}function Ye(e,t,n,r,o){return Re.isFunction(r)?r.call(this,t,n):(o&&(t=n),Re.isString(t)?Re.isString(r)?-1!==t.indexOf(r):Re.isRegExp(r)?r.test(t):void 0:void 0)}var Ze=function(){return l(function e(t){c(this,e),t&&this.set(t)},[{key:"set",value:function(e,t,n){var r=this;function o(e,t,n){var o=$e(t);if(!o)throw new Error("header name must be a non-empty string");var i=Re.findKey(r,o);(!i||void 0===r[i]||!0===n||void 0===n&&!1!==r[i])&&(r[i||t]=Qe(e))}var i=function(e,t){return Re.forEach(e,function(e,n){return o(e,n,t)})};if(Re.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(Re.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i(function(e){var t,n,r,o={};return e&&e.split("\n").forEach(function(e){r=e.indexOf(":"),t=e.substring(0,r).trim().toLowerCase(),n=e.substring(r+1).trim(),!t||o[t]&&Ge[t]||("set-cookie"===t?o[t]?o[t].push(n):o[t]=[n]:o[t]=o[t]?o[t]+", "+n:n)}),o}(e),t);else if(Re.isObject(e)&&Re.isIterable(e)){var a,u,s,c={},f=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=j(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw i}}}}(e);try{for(f.s();!(s=f.n()).done;){var l=s.value;if(!Re.isArray(l))throw TypeError("Object iterator must return a key-value pair");c[u=l[0]]=(a=c[u])?Re.isArray(a)?[].concat(R(a),[l[1]]):[a,l[1]]:l[1]}}catch(e){f.e(e)}finally{f.f()}i(c,t)}else null!=e&&o(t,e,n);return this}},{key:"get",value:function(e,t){if(e=$e(e)){var n=Re.findKey(this,e);if(n){var r=this[n];if(!t)return r;if(!0===t)return function(e){for(var t,n=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=r.exec(e);)n[t[1]]=t[2];return n}(r);if(Re.isFunction(t))return t.call(this,r,n);if(Re.isRegExp(t))return t.exec(r);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=$e(e)){var n=Re.findKey(this,e);return!(!n||void 0===this[n]||t&&!Ye(0,this[n],n,t))}return!1}},{key:"delete",value:function(e,t){var n=this,r=!1;function o(e){if(e=$e(e)){var o=Re.findKey(n,e);!o||t&&!Ye(0,n[o],o,t)||(delete n[o],r=!0)}}return Re.isArray(e)?e.forEach(o):o(e),r}},{key:"clear",value:function(e){for(var t=Object.keys(this),n=t.length,r=!1;n--;){var o=t[n];e&&!Ye(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}},{key:"normalize",value:function(e){var t=this,n={};return Re.forEach(this,function(r,o){var i=Re.findKey(n,o);if(i)return t[i]=Qe(r),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n})}(o):String(o).trim();a!==o&&delete t[o],t[a]=Qe(r),n[a]=!0}),this}},{key:"concat",value:function(){for(var e,t=arguments.length,n=new Array(t),r=0;r1?n-1:0),o=1;o2&&void 0!==arguments[2]?arguments[2]:3,r=0,o=function(e,t){e=e||10;var n,r=new Array(e),o=new Array(e),i=0,a=0;return t=void 0!==t?t:1e3,function(u){var s=Date.now(),c=o[a];n||(n=s),r[i]=u,o[i]=s;for(var f=a,l=0;f!==i;)l+=r[f++],f%=e;if((i=(i+1)%e)===a&&(a=(a+1)%e),!(s-n1&&void 0!==arguments[1]?arguments[1]:Date.now();o=i,n=null,r&&(clearTimeout(r),r=null),e.apply(void 0,R(t))};return[function(){for(var e=Date.now(),t=e-o,u=arguments.length,s=new Array(u),c=0;c=i?a(s,e):(n=s,r||(r=setTimeout(function(){r=null,a(n)},i-t)))},function(){return n&&a(n)}]}(function(n){var i=n.loaded,a=n.lengthComputable?n.total:void 0,u=i-r,s=o(u);r=i;var c=d({loaded:i,total:a,progress:a?i/a:void 0,bytes:u,rate:s||void 0,estimated:s&&a&&i<=a?(a-i)/s:void 0,event:n,lengthComputable:null!=a},t?"download":"upload",!0);e(c)},n)},at=function(e,t){var n=null!=e;return[function(r){return t[0]({lengthComputable:n,total:e,loaded:r})},t[1]]},ut=function(e){return function(){for(var t=arguments.length,n=new Array(t),r=0;r1?t-1:0),r=1;r1?"since :\n"+s.map(xt).join("\n"):" "+xt(s[0]):"as no adapter specified";throw new Te("There is no suitable adapter to dispatch the request "+c,"ERR_NOT_SUPPORT")}return r},adapters:_t};function Ut(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new rt(null,e)}function Ft(e){return Ut(e),e.headers=et.from(e.headers),e.data=tt.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Ct.getAdapter(e.adapter||Ve.adapter,e)(e).then(function(t){return Ut(e),t.data=tt.call(e,e.transformResponse,t),t.headers=et.from(t.headers),t},function(t){return nt(t)||(Ut(e),t&&t.response&&(t.response.data=tt.call(e,e.transformResponse,t.response),t.response.headers=et.from(t.response.headers))),Promise.reject(t)})}var Dt="1.13.6",Bt={};["object","boolean","number","function","string","symbol"].forEach(function(e,t){Bt[e]=function(n){return T(n)===e||"a"+(t<1?"n ":" ")+e}});var Lt={};Bt.transitional=function(e,t,n){function r(e,t){return"[Axios v"+Dt+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,o,i){if(!1===e)throw new Te(r(o," has been removed"+(t?" in "+t:"")),Te.ERR_DEPRECATED);return t&&!Lt[o]&&(Lt[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,o,i)}},Bt.spelling=function(e){return function(t,n){return console.warn("".concat(n," is likely a misspelling of ").concat(e)),!0}};var It={assertOptions:function(e,t,n){if("object"!==T(e))throw new Te("options must be an object",Te.ERR_BAD_OPTION_VALUE);for(var r=Object.keys(e),o=r.length;o-- >0;){var i=r[o],a=t[i];if(a){var u=e[i],s=void 0===u||a(u,i,e);if(!0!==s)throw new Te("option "+i+" must be "+s,Te.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new Te("Unknown option "+i,Te.ERR_BAD_OPTION)}},validators:Bt},qt=It.validators,Mt=function(){return l(function e(t){c(this,e),this.defaults=t||{},this.interceptors={request:new De,response:new De}},[{key:"request",value:(e=a(m().m(function e(t,n){var r,o,i;return m().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,e.n=1,this._request(t,n);case 1:return e.a(2,e.v);case 2:if(e.p=2,(i=e.v)instanceof Error){r={},Error.captureStackTrace?Error.captureStackTrace(r):r=new Error,o=r.stack?r.stack.replace(/^.+\n/,""):"";try{i.stack?o&&!String(i.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(i.stack+="\n"+o):i.stack=o}catch(e){}}throw i;case 3:return e.a(2)}},e,this,[[0,2]])})),function(t,n){return e.apply(this,arguments)})},{key:"_request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var n=t=dt(this.defaults,t),r=n.transitional,o=n.paramsSerializer,i=n.headers;void 0!==r&&It.assertOptions(r,{silentJSONParsing:qt.transitional(qt.boolean),forcedJSONParsing:qt.transitional(qt.boolean),clarifyTimeoutError:qt.transitional(qt.boolean),legacyInterceptorReqResOrdering:qt.transitional(qt.boolean)},!1),null!=o&&(Re.isFunction(o)?t.paramsSerializer={serialize:o}:It.assertOptions(o,{encode:qt.function,serialize:qt.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),It.assertOptions(t,{baseUrl:qt.spelling("baseURL"),withXsrfToken:qt.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&Re.merge(i.common,i[t.method]);i&&Re.forEach(["delete","get","head","post","put","patch","common"],function(e){delete i[e]}),t.headers=et.concat(a,i);var u=[],s=!0;this.interceptors.request.forEach(function(e){if("function"!=typeof e.runWhen||!1!==e.runWhen(t)){s=s&&e.synchronous;var n=t.transitional||Be;n&&n.legacyInterceptorReqResOrdering?u.unshift(e.fulfilled,e.rejected):u.push(e.fulfilled,e.rejected)}});var c,f=[];this.interceptors.response.forEach(function(e){f.push(e.fulfilled,e.rejected)});var l,d=0;if(!s){var p=[Ft.bind(this),void 0];for(p.unshift.apply(p,u),p.push.apply(p,f),l=p.length,c=Promise.resolve(t);d0;)r._listeners[t](e);r._listeners=null}}),this.promise.then=function(e){var t,n=new Promise(function(e){r.subscribe(e),t=e}).then(e);return n.cancel=function(){r.unsubscribe(t)},n},t(function(e,t,o){r.reason||(r.reason=new rt(e,t,o),n(r.reason))})}return l(e,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}},{key:"unsubscribe",value:function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}},{key:"toAbortSignal",value:function(){var e=this,t=new AbortController,n=function(e){t.abort(e)};return this.subscribe(n),t.signal.unsubscribe=function(){return e.unsubscribe(n)},t.signal}}],[{key:"source",value:function(){var t;return{token:new e(function(e){t=e}),cancel:t}}}])}(),Jt=Ht;var Wt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(Wt).forEach(function(e){var t=E(e,2),n=t[0],r=t[1];Wt[r]=n});var Kt=Wt;var Vt=function e(t){var n=new zt(t),r=_(zt.prototype.request,n);return Re.extend(r,zt.prototype,n,{allOwnKeys:!0}),Re.extend(r,n,null,{allOwnKeys:!0}),r.create=function(n){return e(dt(t,n))},r}(Ve);return Vt.Axios=zt,Vt.CanceledError=rt,Vt.CancelToken=Jt,Vt.isCancel=nt,Vt.VERSION=Dt,Vt.toFormData=_e,Vt.AxiosError=Te,Vt.Cancel=Vt.CanceledError,Vt.all=function(e){return Promise.all(e)},Vt.spread=function(e){return function(t){return e.apply(null,t)}},Vt.isAxiosError=function(e){return Re.isObject(e)&&!0===e.isAxiosError},Vt.mergeConfig=dt,Vt.AxiosHeaders=et,Vt.formToJSON=function(e){return We(Re.isHTMLForm(e)?new FormData(e):e)},Vt.getAdapter=Ct.getAdapter,Vt.HttpStatusCode=Kt,Vt.default=Vt,Vt}); +//# sourceMappingURL=axios.min.js.map diff --git a/node_modules/axios/dist/axios.min.js.map b/node_modules/axios/dist/axios.min.js.map new file mode 100644 index 0000000..4d84d2c --- /dev/null +++ b/node_modules/axios/dist/axios.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"axios.min.js","sources":["../lib/helpers/bind.js","../lib/utils.js","../lib/core/AxiosError.js","../lib/helpers/toFormData.js","../lib/helpers/AxiosURLSearchParams.js","../lib/helpers/buildURL.js","../lib/core/InterceptorManager.js","../lib/defaults/transitional.js","../lib/platform/browser/index.js","../lib/platform/browser/classes/URLSearchParams.js","../lib/platform/browser/classes/FormData.js","../lib/platform/browser/classes/Blob.js","../lib/platform/common/utils.js","../lib/platform/index.js","../lib/helpers/formDataToJSON.js","../lib/defaults/index.js","../lib/helpers/toURLEncodedForm.js","../lib/helpers/parseHeaders.js","../lib/core/AxiosHeaders.js","../lib/core/transformData.js","../lib/cancel/isCancel.js","../lib/cancel/CanceledError.js","../lib/core/settle.js","../lib/helpers/progressEventReducer.js","../lib/helpers/speedometer.js","../lib/helpers/throttle.js","../lib/helpers/isURLSameOrigin.js","../lib/helpers/cookies.js","../lib/core/buildFullPath.js","../lib/helpers/isAbsoluteURL.js","../lib/helpers/combineURLs.js","../lib/core/mergeConfig.js","../lib/helpers/resolveConfig.js","../lib/adapters/fetch.js","../lib/adapters/xhr.js","../lib/helpers/parseProtocol.js","../lib/helpers/composeSignals.js","../lib/helpers/trackStream.js","../lib/adapters/adapters.js","../lib/helpers/null.js","../lib/core/dispatchRequest.js","../lib/env/data.js","../lib/helpers/validator.js","../lib/core/Axios.js","../lib/cancel/CancelToken.js","../lib/helpers/HttpStatusCode.js","../lib/axios.js","../lib/helpers/spread.js","../lib/helpers/isAxiosError.js"],"sourcesContent":["'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst { toString } = Object.prototype;\nconst { getPrototypeOf } = Object;\nconst { iterator, toStringTag } = Symbol;\n\nconst kindOf = ((cache) => (thing) => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type;\n};\n\nconst typeOfTest = (type) => (thing) => typeof thing === type;\n\n/**\n * Determine if a value is a non-null object\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst { isArray } = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return (\n val !== null &&\n !isUndefined(val) &&\n val.constructor !== null &&\n !isUndefined(val.constructor) &&\n isFunction(val.constructor.isBuffer) &&\n val.constructor.isBuffer(val)\n );\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && isArrayBuffer(val.buffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = (thing) => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (\n (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(toStringTag in val) &&\n !(iterator in val)\n );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n * \n * @param {*} value The value to test\n * \n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n return !!(value && typeof value.uri !== 'undefined');\n}\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n * \n * @param {*} formData The formData to test\n * \n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') return globalThis;\n if (typeof self !== 'undefined') return self;\n if (typeof window !== 'undefined') return window;\n if (typeof global !== 'undefined') return global;\n return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (FormDataCtor && thing instanceof FormDataCtor) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n 'ReadableStream',\n 'Request',\n 'Response',\n 'Headers',\n].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => {\n return str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n};\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, { allOwnKeys = false } = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n if (isBuffer(obj)) {\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== 'undefined') return globalThis;\n return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global;\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * const result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};\n const result = {};\n const assignValue = (val, key) => {\n // Skip dangerous property names to prevent prototype pollution\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n\n const targetKey = (caseless && findKey(result, key)) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n forEach(\n b,\n (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n value: bind(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(a, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n },\n { allOwnKeys }\n );\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xfeff) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n Object.defineProperty(constructor.prototype, 'constructor', {\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype,\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = ((TypedArray) => {\n // eslint-disable-next-line func-names\n return (thing) => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = (str) => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n ({ hasOwnProperty }) =>\n (obj, prop) =>\n hasOwnProperty.call(obj, prop)\n)(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error(\"Can not rewrite read-only method '\" + name + \"'\");\n };\n }\n });\n};\n\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\n */\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach((value) => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(\n thing &&\n isFunction(thing.append) &&\n thing[toStringTag] === 'FormData' &&\n thing[iterator]\n );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if (!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n thing &&\n (isObject(thing) || isFunction(thing)) &&\n isFunction(thing.then) &&\n isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported\n ? ((token, callbacks) => {\n _global.addEventListener(\n 'message',\n ({ source, data }) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n },\n false\n );\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, '*');\n };\n })(`axios@${Math.random()}`, [])\n : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n typeof queueMicrotask !== 'undefined'\n ? queueMicrotask.bind(_global)\n : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isReactNativeBlob,\n isReactNative,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n\n // Preserve status from the original error if not already set from response\n if (error.status != null && axiosError.status == null) {\n axiosError.status = error.status;\n }\n\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\n\n /**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\n constructor(message, code, config, request, response) {\n super(message);\n \n // Make message enumerable to maintain backward compatibility\n // The native Error constructor sets message as non-enumerable,\n // but axios < v1.13.3 had it as enumerable\n Object.defineProperty(this, 'message', {\n value: message,\n enumerable: true,\n writable: true,\n configurable: true\n });\n \n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path\n .concat(key)\n .map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n })\n .join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(\n options,\n {\n metaTokens: true,\n dots: false,\n indexes: false,\n },\n false,\n function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n }\n );\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob);\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n formData.append(renderKey(path, key, dots), convertValue(value));\n return false;\n }\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)))\n ) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) &&\n formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true\n ? renderKey([key], index, dots)\n : indexes === null\n ? key\n : key + '[]',\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable,\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result =\n !(utils.isUndefined(el) || el === null) &&\n visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00',\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder\n ? function (value) {\n return encoder.call(this, value, encode);\n }\n : encode;\n\n return this._pairs\n .map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '')\n .join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val)\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = (options && options.encode) || encode;\n\n const _options = utils.isFunction(options)\n ? {\n serialize: options,\n }\n : options;\n\n const serializeFn = _options && _options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, _options);\n } else {\n serializedParams = utils.isURLSearchParams(params)\n ? params.toString()\n : new AxiosURLSearchParams(params, _options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n * @param {Object} options The options for the interceptor, synchronous and runWhen\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null,\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false,\n legacyInterceptorReqResOrdering: true,\n};\n","import URLSearchParams from './classes/URLSearchParams.js';\nimport FormData from './classes/FormData.js';\nimport Blob from './classes/Blob.js';\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob,\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data'],\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict';\n\nexport default typeof Blob !== 'undefined' ? Blob : null;\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = (typeof navigator === 'object' && navigator) || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv =\n hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin,\n};\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map((match) => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [\n function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if (\n (isFileList = utils.isFileList(data)) ||\n contentType.indexOf('multipart/form-data') > -1\n ) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? { 'files[]': data } : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n },\n ],\n\n transformResponse: [\n function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (\n data &&\n utils.isString(data) &&\n ((forcedJSONParsing && !this.responseType) || JSONRequested)\n ) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n },\n ],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob,\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': undefined,\n },\n },\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function (value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options,\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age',\n 'authorization',\n 'content-length',\n 'content-type',\n 'etag',\n 'expires',\n 'from',\n 'host',\n 'if-modified-since',\n 'if-unmodified-since',\n 'last-modified',\n 'location',\n 'max-forwards',\n 'proxy-authorization',\n 'referer',\n 'retry-after',\n 'user-agent',\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default (rawHeaders) => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders &&\n rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header\n .trim()\n .toLowerCase()\n .replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach((methodName) => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function (arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true,\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if (\n !key ||\n self[key] === undefined ||\n _rewrite === true ||\n (_rewrite === undefined && self[key] !== false)\n ) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {},\n dest,\n key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[(key = entry[0])] = (dest = obj[key])\n ? utils.isArray(dest)\n ? [...dest, entry[1]]\n : [dest, entry[1]]\n : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(\n key &&\n this[key] !== undefined &&\n (!matcher || matchHeaderValue(this, this[key], key, matcher))\n );\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null &&\n value !== false &&\n (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON())\n .map(([header, value]) => header + ': ' + value)\n .join('\\n');\n }\n\n getSetCookie() {\n return this.get('set-cookie') || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals =\n (this[$internals] =\n this[$internals] =\n {\n accessors: {},\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor([\n 'Content-Type',\n 'Content-Length',\n 'Accept',\n 'Accept-Encoding',\n 'User-Agent',\n 'Authorization',\n]);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n },\n };\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from '../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\n\nclass CanceledError extends AxiosError {\n /**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\n}\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(\n new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][\n Math.floor(response.status / 100) - 4\n ],\n response.config,\n response.request,\n response\n )\n );\n }\n}\n","import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle((e) => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? loaded / total : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true,\n };\n\n listener(data);\n }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [\n (loaded) =>\n throttled[0]({\n lengthComputable,\n total,\n loaded,\n }),\n throttled[1],\n ];\n};\n\nexport const asyncDecorator =\n (fn) =>\n (...args) =>\n utils.asap(() => fn(...args));\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round((bytesCount * 1000) / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if (passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n })(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n )\n : () => true;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n },\n }\n : // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {},\n };\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n if (typeof url !== 'string') {\n return false;\n }\n\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst headersToObject = (thing) => (thing instanceof AxiosHeaders ? { ...thing } : thing);\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({ caseless }, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) =>\n mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n };\n\n utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(\n buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls),\n config.params,\n config.paramsSerializer\n );\n\n // HTTP basic authentication\n if (auth) {\n headers.set(\n 'Authorization',\n 'Basic ' +\n btoa(\n (auth.username || '') +\n ':' +\n (auth.password ? unescape(encodeURIComponent(auth.password)) : '')\n )\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n progressEventReducer,\n progressEventDecorator,\n asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\nconst globalFetchAPI = (({ Request, Response }) => ({\n Request,\n Response,\n}))(utils.global);\n\nconst { ReadableStream, TextEncoder } = utils.global;\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false;\n }\n};\n\nconst factory = (env) => {\n env = utils.merge.call(\n {\n skipUndefined: true,\n },\n globalFetchAPI,\n env\n );\n\n const { fetch: envFetch, Request, Response } = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText =\n isFetchSupported &&\n (typeof TextEncoder === 'function'\n ? (\n (encoder) => (str) =>\n encoder.encode(str)\n )(new TextEncoder())\n : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n const supportsRequestStream =\n isRequestSupported &&\n isReadableStreamSupported &&\n test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream =\n isResponseSupported &&\n isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body),\n };\n\n isFetchSupported &&\n (() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n !resolvers[type] &&\n (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(\n `Response type '${type}' is not supported`,\n AxiosError.ERR_NOT_SUPPORT,\n config\n );\n });\n });\n })();\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions,\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals(\n [signal, cancelToken && cancelToken.toAbortSignal()],\n timeout\n );\n\n let request = null;\n\n const unsubscribe =\n composedSignal &&\n composedSignal.unsubscribe &&\n (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress &&\n supportsRequestStream &&\n method !== 'get' &&\n method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: 'half',\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: 'half',\n credentials: isCredentialsSupported ? withCredentials : undefined,\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported\n ? _fetch(request, fetchOptions)\n : _fetch(url, resolvedOptions));\n\n const isStreamResponse =\n supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach((prop) => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] =\n (onDownloadProgress &&\n progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n )) ||\n [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n response,\n config\n );\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request,\n });\n });\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError(\n 'Network Error',\n AxiosError.ERR_NETWORK,\n config,\n request,\n err && err.response\n ),\n {\n cause: err.cause || err,\n }\n );\n }\n\n throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n }\n };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const { fetch, Request, Response } = env;\n const seeds = [Request, Response, fetch];\n\n let len = seeds.length,\n i = len,\n seed,\n target,\n map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let { responseType, onUploadProgress, onDownloadProgress } = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData =\n !responseType || responseType === 'text' || responseType === 'json'\n ? request.responseText\n : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request,\n };\n\n settle(\n function _resolve(value) {\n resolve(value);\n done();\n },\n function _reject(err) {\n reject(err);\n done();\n },\n response\n );\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (\n request.status === 0 &&\n !(request.responseURL && request.responseURL.indexOf('file:') === 0)\n ) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout\n ? 'timeout of ' + _config.timeout + 'ms exceeded'\n : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(\n new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request\n )\n );\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = (cancel) => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted\n ? onCanceled()\n : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(\n new AxiosError(\n 'Unsupported protocol ' + protocol + ':',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\n );\n return;\n }\n\n // Send the request\n request.send(requestData || null);\n });\n };\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return (match && match[1]) || '';\n}\n","import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const { length } = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(\n err instanceof AxiosError\n ? err\n : new CanceledError(err instanceof Error ? err.message : err)\n );\n }\n };\n\n let timer =\n timeout &&\n setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach((signal) => {\n signal.unsubscribe\n ? signal.unsubscribe(onabort)\n : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const { signal } = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n};\n\nexport default composeSignals;\n","export const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream(\n {\n async pull(controller) {\n try {\n const { done, value } = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = (bytes += len);\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n },\n },\n {\n highWaterMark: 2,\n }\n );\n};\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n },\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', { value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons).map(\n ([id, state]) =>\n `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length\n ? reasons.length > 1\n ? 'since :\\n' + reasons.map(renderReason).join('\\n')\n : ' ' + renderReason(reasons[0])\n : 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object}\n */\n adapters: knownAdapters,\n};\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from '../adapters/adapters.js';\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(config, config.transformRequest);\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(\n function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, config.transformResponse, response);\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n },\n function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n }\n );\n}\n","export const VERSION = \"1.13.6\";","'use strict';\n\nimport { VERSION } from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return (\n '[Axios v' +\n VERSION +\n \"] Transitional option '\" +\n opt +\n \"'\" +\n desc +\n (message ? '. ' + message : '')\n );\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError(\n 'option ' + opt + ' must be ' + result,\n AxiosError.ERR_BAD_OPTION_VALUE\n );\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\nimport transitionalDefaults from '../defaults/transitional.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager(),\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack;\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const { transitional, paramsSerializer, headers } = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(\n transitional,\n {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean),\n legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n },\n false\n );\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer,\n };\n } else {\n validator.assertOptions(\n paramsSerializer,\n {\n encode: validators.function,\n serialize: validators.function,\n },\n true\n );\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(\n config,\n {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken'),\n },\n true\n );\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(headers.common, headers[config.method]);\n\n headers &&\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => {\n delete headers[method];\n });\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n const transitional = config.transitional || transitionalDefaults;\n const legacyInterceptorReqResOrdering =\n transitional && transitional.legacyInterceptorReqResOrdering;\n\n if (legacyInterceptorReqResOrdering) {\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n } else {\n requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n }\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data,\n })\n );\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n headers: isForm\n ? {\n 'Content-Type': 'multipart/form-data',\n }\n : {},\n url,\n data,\n })\n );\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then((cancel) => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = (onfulfilled) => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise((resolve) => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel,\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport { VERSION } from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from './core/AxiosHeaders.js';\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, { allOwnKeys: true });\n\n // Copy context to instance\n utils.extend(instance, context, null, { allOwnKeys: true });\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = (thing) => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * const args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && payload.isAxiosError === true;\n}\n"],"names":["bind","fn","thisArg","apply","arguments","cache","toString","Object","prototype","getPrototypeOf","iterator","Symbol","toStringTag","kindOf","create","thing","str","call","slice","toLowerCase","kindOfTest","type","typeOfTest","_typeof","isArray","Array","isUndefined","isBuffer","val","constructor","isFunction","isArrayBuffer","isString","isNumber","isObject","isPlainObject","isDate","isFile","isBlob","isFileList","G","globalThis","self","window","global","FormDataCtor","FormData","undefined","isURLSearchParams","_map2","_slicedToArray","map","isReadableStream","isRequest","isResponse","isHeaders","forEach","obj","i","l","_ref$allOwnKeys","length","allOwnKeys","key","keys","getOwnPropertyNames","len","findKey","_key","_global","isContextDefined","context","TypedArray","isTypedArray","Uint8Array","isHTMLForm","hasOwnProperty","prop","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","setImmediateSupported","postMessageSupported","token","callbacks","isAsyncFn","_setImmediate","setImmediate","postMessage","concat","Math","random","addEventListener","_ref5","source","data","shift","cb","push","setTimeout","asap","queueMicrotask","process","nextTick","utils$1","isFormData","kind","append","isArrayBufferView","ArrayBuffer","isView","buffer","isBoolean","isEmptyObject","e","isReactNativeBlob","value","uri","isReactNative","formData","getParts","isStream","pipe","merge","_ref2","this","caseless","skipUndefined","result","assignValue","targetKey","extend","a","b","defineProperty","writable","enumerable","configurable","trim","replace","stripBOM","content","charCodeAt","inherits","superConstructor","props","assign","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","position","String","lastIndex","indexOf","toArray","arr","forEachEntry","_iterator","next","done","pair","matchAll","regExp","matches","exec","hasOwnProp","freezeMethods","set","Error","toObjectSet","arrayOrString","delimiter","define","split","toCamelCase","m","p1","p2","toUpperCase","noop","toFiniteNumber","defaultValue","Number","isFinite","isSpecCompliantForm","toJSONObject","stack","visit","target","reducedValue","isThenable","then","isIterable","AxiosError","_Error","message","code","config","request","response","_this","_classCallCheck","_callSuper","isAxiosError","status","_inherits","_createClass","description","number","fileName","lineNumber","columnNumber","utils","error","customProps","axiosError","cause","_wrapNativeSuper","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL","AxiosError$1","isVisitable","removeBrackets","renderKey","path","dots","join","predicates","test","toFormData","options","TypeError","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","from","JSON","stringify","some","isFlatArray","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","buildURL","url","serializedParams","_encode","_options","serialize","serializeFn","hashmarkIndex","encoder","InterceptorManager$1","InterceptorManager","handlers","fulfilled","rejected","synchronous","runWhen","id","h","transitionalDefaults","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","legacyInterceptorReqResOrdering","platform$1","isBrowser","classes","URLSearchParams","protocols","hasBrowserEnv","document","_navigator","navigator","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","origin","location","href","_objectSpread","platform","formDataToJSON","buildPath","isNumericKey","isLast","arrayToObject","entries","parsePropPath","defaults","transitional","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","rawValue","parser","parse","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","parseReviver","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","method","defaults$1","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","substring","parseHeaders","dest","_step","_createForOfIteratorHelper","s","n","entry","_toConsumableArray","err","f","tokens","tokensRE","parseTokens","matcher","deleted","deleteHeader","format","normalized","w","char","formatHeader","_this$constructor","_len","targets","asStrings","toJSON","_ref","get","first","computed","_len2","_key2","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","buildAccessors","accessor","_ref3","mapped","headerValue","AxiosHeaders$1","transformData","fns","normalize","isCancel","__CANCEL__","CanceledError$1","_AxiosError","CanceledError","settle","resolve","reject","floor","progressEventReducer","listener","isDownloadStream","freq","bytesNotified","_speedometer","samplesCount","min","firstSampleTS","bytes","timestamps","head","tail","chunkLength","now","Date","startedAt","bytesCount","passed","round","speedometer","lastArgs","timer","timestamp","threshold","invoke","args","clearTimeout","throttle","loaded","total","lengthComputable","progressBytes","rate","_defineProperty","progress","estimated","event","progressEventDecorator","throttled","asyncDecorator","isMSIE","URL","protocol","host","port","userAgent","write","expires","domain","secure","sameSite","cookie","toUTCString","read","RegExp","decodeURIComponent","remove","buildFullPath","baseURL","requestedURL","allowAbsoluteUrls","isRelativeUrl","relativeURL","combineURLs","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","configValue","resolveConfig","newConfig","auth","btoa","username","password","unescape","getHeaders","formHeaders","allowedHeaders","includes","isURLSameOrigin","xsrfValue","cookies","xhrAdapter","XMLHttpRequest","Promise","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","_config","requestData","requestHeaders","unsubscribe","signal","removeEventListener","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","open","onreadystatechange","readyState","responseURL","onabort","onerror","msg","ontimeout","timeoutErrorMessage","setRequestHeader","_progressEventReducer2","upload","_progressEventReducer4","cancel","abort","subscribe","aborted","send","composeSignals$1","signals","Boolean","controller","AbortController","reason","streamChunk","_regenerator","chunk","chunkSize","pos","end","_context","byteLength","readBytes","_wrapAsyncGenerator","_callee","iterable","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_t","_context2","p","_asyncIterator","readStream","_awaitAsyncGenerator","v","d","_regeneratorValues","_asyncGeneratorDelegate","_x","_x2","_callee2","stream","reader","_yield$_awaitAsyncGen","_context3","asyncIterator","getReader","_x3","trackStream","onProgress","onFinish","_onFinish","ReadableStream","pull","_asyncToGenerator","_callee3","_yield$iterator$next","_done","loadedBytes","_t2","_context4","close","enqueue","highWaterMark","globalFetchAPI","Request","Response","_utils$global","TextEncoder","factory","_env","envFetch","fetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","arrayBuffer","supportsRequestStream","duplexAccessed","hasContentType","body","duplex","has","supportsResponseStream","resolvers","res","getBodyLength","_request","size","resolveBodyLength","_ref4","getContentLength","_x4","_callee4","_resolveConfig","_resolveConfig$withCr","fetchOptions","_fetch","composedSignal","requestContentLength","contentTypeHeader","_progressEventDecorat","_progressEventDecorat2","flush","isCredentialsSupported","resolvedOptions","isStreamResponse","responseContentLength","_ref6","_ref7","_onProgress","_flush","responseData","_t3","_t4","_t5","composeSignals","toAbortSignal","credentials","_x5","seedCache","Map","getFetch","seed","seeds","knownAdapters","http","xhr","fetchAdapter","renderReason","isResolvedHandle","adapters","getAdapter","nameOrAdapter","rejectedReasons","reasons","state","throwIfCancellationRequested","throwIfRequested","dispatchRequest","VERSION","validators","deprecatedWarnings","validators$1","validator","version","formatMessage","opt","desc","opts","console","warn","spelling","correctSpelling","assertOptions","schema","allowUnknown","Axios","instanceConfig","interceptors","_request2","configOrUrl","dummy","captureStackTrace","baseUrl","withXsrfToken","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","promise","responseInterceptorChain","chain","onFulfilled","onRejected","generateHTTPMethod","isForm","Axios$1","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","splice","c","CancelToken$1","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","WebServerIsDown","ConnectionTimedOut","OriginIsUnreachable","TimeoutOccurred","SslHandshakeFailed","InvalidSslCertificate","HttpStatusCode$1","axios","createInstance","defaultConfig","instance","Cancel","all","promises","spread","callback","payload","formToJSON"],"mappings":";;;onLASe,SAASA,EAAKC,EAAIC,GAC/B,OAAO,WACL,OAAOD,EAAGE,MAAMD,EAASE,WAE7B,mSCPA,IAIiBC,EAJTC,EAAaC,OAAOC,UAApBF,SACAG,EAAmBF,OAAnBE,eACAC,EAA0BC,OAA1BD,SAAUE,EAAgBD,OAAhBC,YAEZC,GAAWR,EAGdE,OAAOO,OAAO,MAHU,SAACC,GAC1B,IAAMC,EAAMV,EAASW,KAAKF,GAC1B,OAAOV,EAAMW,KAASX,EAAMW,GAAOA,EAAIE,MAAM,GAAI,GAAGC,iBAGhDC,EAAa,SAACC,GAElB,OADAA,EAAOA,EAAKF,cACL,SAACJ,GAAK,OAAKF,EAAOE,KAAWM,CAAI,CAC1C,EAEMC,EAAa,SAACD,GAAI,OAAK,SAACN,GAAK,OAAKQ,EAAOR,KAAUM,CAAI,CAAA,EASrDG,EAAYC,MAAZD,QASFE,EAAcJ,EAAW,aAS/B,SAASK,EAASC,GAChB,OACU,OAARA,IACCF,EAAYE,IACO,OAApBA,EAAIC,cACHH,EAAYE,EAAIC,cACjBC,EAAWF,EAAIC,YAAYF,WAC3BC,EAAIC,YAAYF,SAASC,EAE7B,CASA,IAAMG,EAAgBX,EAAW,eA0BjC,IAAMY,EAAWV,EAAW,UAQtBQ,EAAaR,EAAW,YASxBW,EAAWX,EAAW,UAStBY,EAAW,SAACnB,GAAK,OAAe,OAAVA,GAAmC,WAAjBQ,EAAOR,EAAkB,EAiBjEoB,EAAgB,SAACP,GACrB,GAAoB,WAAhBf,EAAOe,GACT,OAAO,EAGT,IAAMpB,EAAYC,EAAemB,GACjC,QACiB,OAAdpB,GACCA,IAAcD,OAAOC,WACgB,OAArCD,OAAOE,eAAeD,IACtBI,KAAegB,GACflB,KAAYkB,EAElB,EA8BMQ,EAAShB,EAAW,QASpBiB,EAASjB,EAAW,QAkCpBkB,EAASlB,EAAW,QASpBmB,EAAanB,EAAW,YA0B9B,IAAMoB,EAPsB,oBAAfC,WAAmCA,WAC1B,oBAATC,KAA6BA,KAClB,oBAAXC,OAA+BA,OACpB,oBAAXC,OAA+BA,OACnC,GAIHC,OAAqC,IAAfL,EAAEM,SAA2BN,EAAEM,cAAWC,EAsBhEC,GAAoB5B,EAAW,mBAOpB6B,GAAAC,EAL4C,CAC3D,iBACA,UACA,WACA,WACAC,IAAI/B,GAAW,GALVgC,GAAgBH,GAAA,GAAEI,GAASJ,GAAA,GAAEK,GAAUL,GAAA,GAAEM,GAASN,GAAA,GAiCzD,SAASO,GAAQC,EAAKxD,GAAiC,IAMjDyD,EACAC,EAP+CC,GAAExD,UAAAyD,OAAA,QAAAd,IAAA3C,UAAA,GAAAA,UAAA,GAAJ,CAAE,GAAzB0D,WAAAA,OAAa,IAAHF,GAAQA,EAE5C,GAAIH,QAaJ,GALmB,WAAflC,EAAOkC,KAETA,EAAM,CAACA,IAGLjC,EAAQiC,GAEV,IAAKC,EAAI,EAAGC,EAAIF,EAAII,OAAQH,EAAIC,EAAGD,IACjCzD,EAAGgB,KAAK,KAAMwC,EAAIC,GAAIA,EAAGD,OAEtB,CAEL,GAAI9B,EAAS8B,GACX,OAIF,IAEIM,EAFEC,EAAOF,EAAavD,OAAO0D,oBAAoBR,GAAOlD,OAAOyD,KAAKP,GAClES,EAAMF,EAAKH,OAGjB,IAAKH,EAAI,EAAGA,EAAIQ,EAAKR,IACnBK,EAAMC,EAAKN,GACXzD,EAAGgB,KAAK,KAAMwC,EAAIM,GAAMA,EAAKN,EAEjC,CACF,CAUA,SAASU,GAAQV,EAAKM,GACpB,GAAIpC,EAAS8B,GACX,OAAO,KAGTM,EAAMA,EAAI5C,cAIV,IAHA,IAEIiD,EAFEJ,EAAOzD,OAAOyD,KAAKP,GACrBC,EAAIM,EAAKH,OAENH,KAAM,GAEX,GAAIK,KADJK,EAAOJ,EAAKN,IACKvC,cACf,OAAOiD,EAGX,OAAO,IACT,CAEA,IAAMC,GAEsB,oBAAf5B,WAAmCA,WACvB,oBAATC,KAAuBA,KAAyB,oBAAXC,OAAyBA,OAASC,OAGjF0B,GAAmB,SAACC,GAAO,OAAM7C,EAAY6C,IAAYA,IAAYF,EAAO,EA0DlF,IAgJuBG,GAAjBC,IAAiBD,GAKE,oBAAfE,YAA8BjE,EAAeiE,YAH9C,SAAC3D,GACN,OAAOyD,IAAczD,aAAiByD,KA6CpCG,GAAavD,EAAW,mBASxBwD,GACJ,WAAA,IAAGA,EAGHrE,OAAOC,UAHJoE,eAAc,OACjB,SAACnB,EAAKoB,GAAI,OACRD,EAAe3D,KAAKwC,EAAKoB,EAAK,CAAA,CAFhC,GAYIC,GAAW1D,EAAW,UAEtB2D,GAAoB,SAACtB,EAAKuB,GAC9B,IAAMC,EAAc1E,OAAO2E,0BAA0BzB,GAC/C0B,EAAqB,CAAA,EAE3B3B,GAAQyB,EAAa,SAACG,EAAYC,GAChC,IAAIC,GAC2C,KAA1CA,EAAMN,EAAQI,EAAYC,EAAM5B,MACnC0B,EAAmBE,GAAQC,GAAOF,EAEtC,GAEA7E,OAAOgF,iBAAiB9B,EAAK0B,EAC/B,EAmFA,IAkEwBK,GAAuBC,GAMvCC,GAAOC,GA/BTC,GAAYxE,EAAW,iBAyBvByE,IAAkBL,GAuBG,mBAAjBM,aAvBqCL,GAuBR3D,EAAWuC,GAAQ0B,aAtBpDP,GACKM,aAGFL,IACDC,GAeDM,SAAAA,OAAWC,KAAKC,UAfRP,GAeoB,GAd3BtB,GAAQ8B,iBACN,UACA,SAAAC,GAAsB,IAAnBC,EAAMD,EAANC,OAAQC,EAAIF,EAAJE,KACLD,IAAWhC,IAAWiC,IAASZ,IACjCC,GAAU9B,QAAU8B,GAAUY,OAAVZ,EAEvB,GACD,GAGK,SAACa,GACNb,GAAUc,KAAKD,GACfnC,GAAQ0B,YAAYL,GAAO,OAG/B,SAACc,GAAE,OAAKE,WAAWF,EAAG,GAStBG,GACsB,oBAAnBC,eACHA,eAAe5G,KAAKqE,IACA,oBAAZwC,SAA2BA,QAAQC,UAAajB,GAM/CkB,GAAA,CACbvF,QAAAA,EACAO,cAAAA,EACAJ,SAAAA,EACAqF,WA5lBiB,SAACjG,GAClB,IAAIkG,EACJ,OAAOlG,IACJ8B,GAAgB9B,aAAiB8B,GAChCf,EAAWf,EAAMmG,UACY,cAA1BD,EAAOpG,EAAOE,KAEL,WAATkG,GAAqBnF,EAAWf,EAAMT,WAAkC,sBAArBS,EAAMT,YAIlE,EAklBE6G,kBArxBF,SAA2BvF,GAOzB,MAL2B,oBAAhBwF,aAA+BA,YAAYC,OAC3CD,YAAYC,OAAOzF,GAEnBA,GAAOA,EAAI0F,QAAUvF,EAAcH,EAAI0F,OAGpD,EA8wBEtF,SAAAA,EACAC,SAAAA,EACAsF,UAruBgB,SAACxG,GAAK,OAAe,IAAVA,IAA4B,IAAVA,CAAe,EAsuB5DmB,SAAAA,EACAC,cAAAA,EACAqF,cAzsBoB,SAAC5F,GAErB,IAAKM,EAASN,IAAQD,EAASC,GAC7B,OAAO,EAGT,IACE,OAAmC,IAA5BrB,OAAOyD,KAAKpC,GAAKiC,QAAgBtD,OAAOE,eAAemB,KAASrB,OAAOC,SAC/E,CAAC,MAAOiH,GAEP,OAAO,CACT,CACF,EA8rBErE,iBAAAA,GACAC,UAAAA,GACAC,WAAAA,GACAC,UAAAA,GACA7B,YAAAA,EACAU,OAAAA,EACAC,OAAAA,EACAqF,kBAtqBwB,SAACC,GACzB,SAAUA,QAA8B,IAAdA,EAAMC,IAClC,EAqqBEC,cA3pBoB,SAACC,GAAQ,OAAKA,QAAyC,IAAtBA,EAASC,QAAwB,EA4pBtFzF,OAAAA,EACAwC,SAAAA,GACAhD,WAAAA,EACAkG,SApoBe,SAACpG,GAAG,OAAKM,EAASN,IAAQE,EAAWF,EAAIqG,KAAK,EAqoB7DjF,kBAAAA,GACAyB,aAAAA,GACAlC,WAAAA,EACAiB,QAAAA,GACA0E,MApeF,SAASA,IAqBP,IApBA,IAAAC,EAAqC7D,GAAiB8D,OAASA,MAAS,CAAE,EAAlEC,EAAQF,EAARE,SAAUC,EAAaH,EAAbG,cACZC,EAAS,CAAA,EACTC,EAAc,SAAC5G,EAAKmC,GAExB,GAAY,cAARA,GAA+B,gBAARA,GAAiC,cAARA,EAApD,CAIA,IAAM0E,EAAaJ,GAAYlE,GAAQoE,EAAQxE,IAASA,EACpD5B,EAAcoG,EAAOE,KAAetG,EAAcP,GACpD2G,EAAOE,GAAaP,EAAMK,EAAOE,GAAY7G,GACpCO,EAAcP,GACvB2G,EAAOE,GAAaP,EAAM,CAAE,EAAEtG,GACrBJ,EAAQI,GACjB2G,EAAOE,GAAa7G,EAAIV,QACdoH,GAAkB5G,EAAYE,KACxC2G,EAAOE,GAAa7G,EAVtB,GAcO8B,EAAI,EAAGC,EAAIvD,UAAUyD,OAAQH,EAAIC,EAAGD,IAC3CtD,UAAUsD,IAAMF,GAAQpD,UAAUsD,GAAI8E,GAExC,OAAOD,CACT,EA4cEG,OA/ba,SAACC,EAAGC,EAAG1I,GAsBpB,OArBAsD,GACEoF,EACA,SAAChH,EAAKmC,GACA7D,GAAW4B,EAAWF,GACxBrB,OAAOsI,eAAeF,EAAG5E,EAAK,CAC5B4D,MAAO3H,EAAK4B,EAAK1B,GACjB4I,UAAU,EACVC,YAAY,EACZC,cAAc,IAGhBzI,OAAOsI,eAAeF,EAAG5E,EAAK,CAC5B4D,MAAO/F,EACPkH,UAAU,EACVC,YAAY,EACZC,cAAc,GAGpB,EACA,CAAElF,YApBiD1D,UAAAyD,OAAA,QAAAd,IAAA3C,UAAA,GAAAA,UAAA,GAAP,CAAE,GAAjB0D,aAsBxB6E,CACT,EAyaEM,KAnlBW,SAACjI,GACZ,OAAOA,EAAIiI,KAAOjI,EAAIiI,OAASjI,EAAIkI,QAAQ,qCAAsC,GACnF,EAklBEC,SAjae,SAACC,GAIhB,OAH8B,QAA1BA,EAAQC,WAAW,KACrBD,EAAUA,EAAQlI,MAAM,IAEnBkI,CACT,EA6ZEE,SAlZe,SAACzH,EAAa0H,EAAkBC,EAAOvE,GACtDpD,EAAYrB,UAAYD,OAAOO,OAAOyI,EAAiB/I,UAAWyE,GAClE1E,OAAOsI,eAAehH,EAAYrB,UAAW,cAAe,CAC1DmH,MAAO9F,EACPiH,UAAU,EACVC,YAAY,EACZC,cAAc,IAEhBzI,OAAOsI,eAAehH,EAAa,QAAS,CAC1C8F,MAAO4B,EAAiB/I,YAE1BgJ,GAASjJ,OAAOkJ,OAAO5H,EAAYrB,UAAWgJ,EAChD,EAuYEE,aA5XmB,SAACC,EAAWC,EAASC,EAAQC,GAChD,IAAIN,EACA9F,EACAmB,EACEkF,EAAS,CAAA,EAIf,GAFAH,EAAUA,GAAW,GAEJ,MAAbD,EAAmB,OAAOC,EAE9B,EAAG,CAGD,IADAlG,GADA8F,EAAQjJ,OAAO0D,oBAAoB0F,IACzB9F,OACHH,KAAM,GACXmB,EAAO2E,EAAM9F,GACPoG,IAAcA,EAAWjF,EAAM8E,EAAWC,IAAcG,EAAOlF,KACnE+E,EAAQ/E,GAAQ8E,EAAU9E,GAC1BkF,EAAOlF,IAAQ,GAGnB8E,GAAuB,IAAXE,GAAoBpJ,EAAekJ,EACjD,OAASA,KAAeE,GAAUA,EAAOF,EAAWC,KAAaD,IAAcpJ,OAAOC,WAEtF,OAAOoJ,CACT,EAqWE/I,OAAAA,EACAO,WAAAA,EACA4I,SA5Ve,SAAChJ,EAAKiJ,EAAcC,GACnClJ,EAAMmJ,OAAOnJ,SACI+B,IAAbmH,GAA0BA,EAAWlJ,EAAI6C,UAC3CqG,EAAWlJ,EAAI6C,QAEjBqG,GAAYD,EAAapG,OACzB,IAAMuG,EAAYpJ,EAAIqJ,QAAQJ,EAAcC,GAC5C,OAAsB,IAAfE,GAAoBA,IAAcF,CAC3C,EAqVEI,QA5Uc,SAACvJ,GACf,IAAKA,EAAO,OAAO,KACnB,GAAIS,EAAQT,GAAQ,OAAOA,EAC3B,IAAI2C,EAAI3C,EAAM8C,OACd,IAAK5B,EAASyB,GAAI,OAAO,KAEzB,IADA,IAAM6G,EAAM,IAAI9I,MAAMiC,GACfA,KAAM,GACX6G,EAAI7G,GAAK3C,EAAM2C,GAEjB,OAAO6G,CACT,EAmUEC,aAzSmB,SAAC/G,EAAKxD,GAOzB,IANA,IAIIsI,EAFEkC,GAFYhH,GAAOA,EAAI/C,IAEDO,KAAKwC,IAIzB8E,EAASkC,EAAUC,UAAYnC,EAAOoC,MAAM,CAClD,IAAMC,EAAOrC,EAAOZ,MACpB1H,EAAGgB,KAAKwC,EAAKmH,EAAK,GAAIA,EAAK,GAC7B,CACF,EA+REC,SArRe,SAACC,EAAQ9J,GAIxB,IAHA,IAAI+J,EACER,EAAM,GAE4B,QAAhCQ,EAAUD,EAAOE,KAAKhK,KAC5BuJ,EAAI9D,KAAKsE,GAGX,OAAOR,CACT,EA6QE5F,WAAAA,GACAC,eAAAA,GACAqG,WAAYrG,GACZG,kBAAAA,GACAmG,cAnOoB,SAACzH,GACrBsB,GAAkBtB,EAAK,SAAC2B,EAAYC,GAElC,GAAIvD,EAAW2B,KAA6D,IAArD,CAAC,YAAa,SAAU,UAAU4G,QAAQhF,GAC/D,OAAO,EAGT,IAAMsC,EAAQlE,EAAI4B,GAEbvD,EAAW6F,KAEhBvC,EAAW2D,YAAa,EAEpB,aAAc3D,EAChBA,EAAW0D,UAAW,EAInB1D,EAAW+F,MACd/F,EAAW+F,IAAM,WACf,MAAMC,MAAM,qCAAuC/F,EAAO,OAGhE,EACF,EA4MEgG,YAlMkB,SAACC,EAAeC,GAClC,IAAM9H,EAAM,CAAA,EAEN+H,EAAS,SAACjB,GACdA,EAAI/G,QAAQ,SAACmE,GACXlE,EAAIkE,IAAS,CACf,IAKF,OAFAnG,EAAQ8J,GAAiBE,EAAOF,GAAiBE,EAAOrB,OAAOmB,GAAeG,MAAMF,IAE7E9H,CACT,EAuLEiI,YA9QkB,SAAC1K,GACnB,OAAOA,EAAIG,cAAc+H,QAAQ,wBAAyB,SAAkByC,EAAGC,EAAIC,GACjF,OAAOD,EAAGE,cAAgBD,CAC5B,EACF,EA2QEE,KAtLW,aAuLXC,eArLqB,SAACrE,EAAOsE,GAC7B,OAAgB,MAATtE,GAAiBuE,OAAOC,SAAUxE,GAASA,GAAUA,EAAQsE,CACtE,EAoLE9H,QAAAA,GACAvB,OAAQyB,GACRC,iBAAAA,GACA8H,oBA9KF,SAA6BrL,GAC3B,SACEA,GACAe,EAAWf,EAAMmG,SACM,aAAvBnG,EAAMH,IACNG,EAAML,GAEV,EAwKE2L,aAhKmB,SAAC5I,GACpB,IAAM6I,EAAQ,IAAI7K,MAAM,IAElB8K,EAAQ,SAAClG,EAAQ3C,GACrB,GAAIxB,EAASmE,GAAS,CACpB,GAAIiG,EAAMjC,QAAQhE,IAAW,EAC3B,OAIF,GAAI1E,EAAS0E,GACX,OAAOA,EAGT,KAAM,WAAYA,GAAS,CACzBiG,EAAM5I,GAAK2C,EACX,IAAMmG,EAAShL,EAAQ6E,GAAU,GAAK,CAAA,EAStC,OAPA7C,GAAQ6C,EAAQ,SAACsB,EAAO5D,GACtB,IAAM0I,EAAeF,EAAM5E,EAAOjE,EAAI,IACrChC,EAAY+K,KAAkBD,EAAOzI,GAAO0I,EAC/C,GAEAH,EAAM5I,QAAKX,EAEJyJ,CACT,CACF,CAEA,OAAOnG,GAGT,OAAOkG,EAAM9I,EAAK,EACpB,EAgIEmC,UAAAA,GACA8G,WAjHiB,SAAC3L,GAAK,OACvBA,IACCmB,EAASnB,IAAUe,EAAWf,KAC/Be,EAAWf,EAAM4L,OACjB7K,EAAWf,EAAK,MAAO,EA8GvB+E,aAAcD,GACdc,KAAAA,GACAiG,WA7DiB,SAAC7L,GAAK,OAAc,MAATA,GAAiBe,EAAWf,EAAML,GAAU,GCp1BpEmM,YAAUC,GA0BZ,SAAAD,EAAYE,EAASC,EAAMC,EAAQC,EAASC,GAAU,IAAAC,EAqBnD,OArBmDC,OAAAR,GACpDO,EAAAE,EAAAT,KAAAA,GAAME,IAKNxM,OAAOsI,eAAcuE,EAAO,UAAW,CACnCzF,MAAOoF,EACPhE,YAAY,EACZD,UAAU,EACVE,cAAc,IAGlBoE,EAAK/H,KAAO,aACZ+H,EAAKG,cAAe,EACpBP,IAASI,EAAKJ,KAAOA,GACrBC,IAAWG,EAAKH,OAASA,GACzBC,IAAYE,EAAKF,QAAUA,GACvBC,IACAC,EAAKD,SAAWA,EAChBC,EAAKI,OAASL,EAASK,QAC1BJ,CACH,CAAC,OAAAK,EAAAZ,EAAAC,GAAAY,EAAAb,EAAA,CAAA,CAAA9I,IAAA,SAAA4D,MAEH,WACE,MAAO,CAELoF,QAAS3E,KAAK2E,QACd1H,KAAM+C,KAAK/C,KAEXsI,YAAavF,KAAKuF,YAClBC,OAAQxF,KAAKwF,OAEbC,SAAUzF,KAAKyF,SACfC,WAAY1F,KAAK0F,WACjBC,aAAc3F,KAAK2F,aACnBzB,MAAOlE,KAAKkE,MAEZW,OAAQe,GAAM3B,aAAajE,KAAK6E,QAChCD,KAAM5E,KAAK4E,KACXQ,OAAQpF,KAAKoF,OAEjB,IAAC,CAAA,CAAAzJ,IAAA,OAAA4D,MAnED,SAAYsG,EAAOjB,EAAMC,EAAQC,EAASC,EAAUe,GAClD,IAAMC,EAAa,IAAItB,EAAWoB,EAAMlB,QAASC,GAAQiB,EAAMjB,KAAMC,EAAQC,EAASC,GAUtF,OATAgB,EAAWC,MAAQH,EACnBE,EAAW9I,KAAO4I,EAAM5I,KAGJ,MAAhB4I,EAAMT,QAAuC,MAArBW,EAAWX,SACrCW,EAAWX,OAASS,EAAMT,QAG5BU,GAAe3N,OAAOkJ,OAAO0E,EAAYD,GAClCC,CACT,IAAC,EAAAE,EAbsBjD,QAwEzByB,GAAWyB,qBAAuB,uBAClCzB,GAAW0B,eAAiB,iBAC5B1B,GAAW2B,aAAe,eAC1B3B,GAAW4B,UAAY,YACvB5B,GAAW6B,YAAc,cACzB7B,GAAW8B,0BAA4B,4BACvC9B,GAAW+B,eAAiB,iBAC5B/B,GAAWgC,iBAAmB,mBAC9BhC,GAAWiC,gBAAkB,kBAC7BjC,GAAWkC,aAAe,eAC1BlC,GAAWmC,gBAAkB,kBAC7BnC,GAAWoC,gBAAkB,kBAE7B,IAAAC,GAAerC,GC3Ef,SAASsC,GAAYpO,GACnB,OAAOiN,GAAM7L,cAAcpB,IAAUiN,GAAMxM,QAAQT,EACrD,CASA,SAASqO,GAAerL,GACtB,OAAOiK,GAAMhE,SAASjG,EAAK,MAAQA,EAAI7C,MAAM,GAAI,GAAK6C,CACxD,CAWA,SAASsL,GAAUC,EAAMvL,EAAKwL,GAC5B,OAAKD,EACEA,EACJtJ,OAAOjC,GACPZ,IAAI,SAAcuC,EAAOhC,GAGxB,OADAgC,EAAQ0J,GAAe1J,IACf6J,GAAQ7L,EAAI,IAAMgC,EAAQ,IAAMA,CACzC,GACA8J,KAAKD,EAAO,IAAM,IARHxL,CASpB,CAaA,IAAM0L,GAAazB,GAAMtE,aAAasE,GAAO,CAAE,EAAE,KAAM,SAAgBnJ,GACrE,MAAO,WAAW6K,KAAK7K,EACzB,GAyBA,SAAS8K,GAAWlM,EAAKqE,EAAU8H,GACjC,IAAK5B,GAAM9L,SAASuB,GAClB,MAAM,IAAIoM,UAAU,4BAItB/H,EAAWA,GAAY,IAAyBhF,SAiBhD,IAAMgN,GAdNF,EAAU5B,GAAMtE,aACdkG,EACA,CACEE,YAAY,EACZP,MAAM,EACNQ,SAAS,IAEX,EACA,SAAiBC,EAAQ3J,GAEvB,OAAQ2H,GAAMtM,YAAY2E,EAAO2J,GACnC,IAGyBF,WAErBG,EAAUL,EAAQK,SAAWC,EAC7BX,EAAOK,EAAQL,KACfQ,EAAUH,EAAQG,QAElBI,GADQP,EAAQQ,MAAyB,oBAATA,MAAwBA,OACrCpC,GAAM5B,oBAAoBtE,GAEnD,IAAKkG,GAAMlM,WAAWmO,GACpB,MAAM,IAAIJ,UAAU,8BAGtB,SAASQ,EAAa1I,GACpB,GAAc,OAAVA,EAAgB,MAAO,GAE3B,GAAIqG,GAAM5L,OAAOuF,GACf,OAAOA,EAAM2I,cAGf,GAAItC,GAAMzG,UAAUI,GAClB,OAAOA,EAAMrH,WAGf,IAAK6P,GAAWnC,GAAM1L,OAAOqF,GAC3B,MAAM,IAAIkF,GAAW,gDAGvB,OAAImB,GAAMjM,cAAc4F,IAAUqG,GAAMvJ,aAAakD,GAC5CwI,GAA2B,mBAATC,KAAsB,IAAIA,KAAK,CAACzI,IAAU4I,OAAOC,KAAK7I,GAG1EA,CACT,CAYA,SAASuI,EAAevI,EAAO5D,EAAKuL,GAClC,IAAI/E,EAAM5C,EAEV,GAAIqG,GAAMnG,cAAcC,IAAakG,GAAMtG,kBAAkBC,GAE3D,OADAG,EAASZ,OAAOmI,GAAUC,EAAMvL,EAAKwL,GAAOc,EAAa1I,KAClD,EAGT,GAAIA,IAAU2H,GAAyB,WAAjB/N,EAAOoG,GAC3B,GAAIqG,GAAMhE,SAASjG,EAAK,MAEtBA,EAAM+L,EAAa/L,EAAMA,EAAI7C,MAAM,GAAI,GAEvCyG,EAAQ8I,KAAKC,UAAU/I,QAClB,GACJqG,GAAMxM,QAAQmG,IAjHvB,SAAqB4C,GACnB,OAAOyD,GAAMxM,QAAQ+I,KAASA,EAAIoG,KAAKxB,GACzC,CA+GiCyB,CAAYjJ,KACnCqG,GAAMzL,WAAWoF,IAAUqG,GAAMhE,SAASjG,EAAK,SAAWwG,EAAMyD,GAAM1D,QAAQ3C,IAiBhF,OAdA5D,EAAMqL,GAAerL,GAErBwG,EAAI/G,QAAQ,SAAcqN,EAAIC,IAC1B9C,GAAMtM,YAAYmP,IAAc,OAAPA,GACzB/I,EAASZ,QAEK,IAAZ6I,EACIV,GAAU,CAACtL,GAAM+M,EAAOvB,GACZ,OAAZQ,EACEhM,EACAA,EAAM,KACZsM,EAAaQ,GAEnB,IACO,EAIX,QAAI1B,GAAYxH,KAIhBG,EAASZ,OAAOmI,GAAUC,EAAMvL,EAAKwL,GAAOc,EAAa1I,KAElD,EACT,CAEA,IAAM2E,EAAQ,GAERyE,EAAiBxQ,OAAOkJ,OAAOgG,GAAY,CAC/CS,eAAAA,EACAG,aAAAA,EACAlB,YAAAA,KAyBF,IAAKnB,GAAM9L,SAASuB,GAClB,MAAM,IAAIoM,UAAU,0BAKtB,OA5BA,SAASmB,EAAMrJ,EAAO2H,GACpB,IAAItB,GAAMtM,YAAYiG,GAAtB,CAEA,IAA8B,IAA1B2E,EAAMjC,QAAQ1C,GAChB,MAAMyD,MAAM,kCAAoCkE,EAAKE,KAAK,MAG5DlD,EAAM7F,KAAKkB,GAEXqG,GAAMxK,QAAQmE,EAAO,SAAckJ,EAAI9M,IAKtB,OAHXiK,GAAMtM,YAAYmP,IAAc,OAAPA,IAC3BZ,EAAQhP,KAAK6G,EAAU+I,EAAI7C,GAAMhM,SAAS+B,GAAOA,EAAIkF,OAASlF,EAAKuL,EAAMyB,KAGzEC,EAAMH,EAAIvB,EAAOA,EAAKtJ,OAAOjC,GAAO,CAACA,GAEzC,GAEAuI,EAAM2E,KAlBwB,CAmBhC,CAMAD,CAAMvN,GAECqE,CACT,CClOA,SAASoJ,GAAOlQ,GACd,IAAMmQ,EAAU,CACd,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,IACP,MAAO,MAET,OAAOC,mBAAmBpQ,GAAKkI,QAAQ,mBAAoB,SAAkBmI,GAC3E,OAAOF,EAAQE,EACjB,EACF,CAUA,SAASC,GAAqBC,EAAQ3B,GACpCxH,KAAKoJ,OAAS,GAEdD,GAAU5B,GAAW4B,EAAQnJ,KAAMwH,EACrC,CAEA,IAAMpP,GAAY8Q,GAAqB9Q,UC5BvC,SAAS0Q,GAAOtP,GACd,OAAOwP,mBAAmBxP,GACvBsH,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,IACrB,CAWe,SAASuI,GAASC,EAAKH,EAAQ3B,GAC5C,IAAK2B,EACH,OAAOG,EAGT,IAUIC,EAVEC,EAAWhC,GAAWA,EAAQsB,QAAWA,GAEzCW,EAAW7D,GAAMlM,WAAW8N,GAC9B,CACEkC,UAAWlC,GAEbA,EAEEmC,EAAcF,GAAYA,EAASC,UAYzC,GAPEH,EADEI,EACiBA,EAAYR,EAAQM,GAEpB7D,GAAMhL,kBAAkBuO,GACvCA,EAAOjR,WACP,IAAIgR,GAAqBC,EAAQM,GAAUvR,SAASsR,GAGpC,CACpB,IAAMI,EAAgBN,EAAIrH,QAAQ,MAEX,IAAnB2H,IACFN,EAAMA,EAAIxQ,MAAM,EAAG8Q,IAErBN,KAA8B,IAAtBA,EAAIrH,QAAQ,KAAc,IAAM,KAAOsH,CACjD,CAEA,OAAOD,CACT,CDtBAlR,GAAU0G,OAAS,SAAgB7B,EAAMsC,GACvCS,KAAKoJ,OAAO/K,KAAK,CAACpB,EAAMsC,GAC1B,EAEAnH,GAAUF,SAAW,SAAkB2R,GACrC,IAAML,EAAUK,EACZ,SAAUtK,GACR,OAAOsK,EAAQhR,KAAKmH,KAAMT,EAAOuJ,GAClC,EACDA,GAEJ,OAAO9I,KAAKoJ,OACTrO,IAAI,SAAcyH,GACjB,OAAOgH,EAAQhH,EAAK,IAAM,IAAMgH,EAAQhH,EAAK,GAC9C,EAAE,IACF4E,KAAK,IACV,EEzDgC,IAqEhC0C,GAnEwB,WAKtB,OAAAxE,EAJA,SAAAyE,IAAc9E,OAAA8E,GACZ/J,KAAKgK,SAAW,EAClB,EAEA,CAAA,CAAArO,IAAA,MAAA4D,MASA,SAAI0K,EAAWC,EAAU1C,GAOvB,OANAxH,KAAKgK,SAAS3L,KAAK,CACjB4L,UAAAA,EACAC,SAAAA,EACAC,cAAa3C,GAAUA,EAAQ2C,YAC/BC,QAAS5C,EAAUA,EAAQ4C,QAAU,OAEhCpK,KAAKgK,SAASvO,OAAS,CAChC,GAEA,CAAAE,IAAA,QAAA4D,MAOA,SAAM8K,GACArK,KAAKgK,SAASK,KAChBrK,KAAKgK,SAASK,GAAM,KAExB,GAEA,CAAA1O,IAAA,QAAA4D,MAKA,WACMS,KAAKgK,WACPhK,KAAKgK,SAAW,GAEpB,GAEA,CAAArO,IAAA,UAAA4D,MAUA,SAAQ1H,GACN+N,GAAMxK,QAAQ4E,KAAKgK,SAAU,SAAwBM,GACzC,OAANA,GACFzS,EAAGyS,EAEP,EACF,IAAC,CAhEqB,GCFTC,GAAA,CACbC,mBAAmB,EACnBC,mBAAmB,EACnBC,qBAAqB,EACrBC,iCAAiC,GCFpBC,GAAA,CACbC,WAAW,EACXC,QAAS,CACPC,gBCJsC,oBAApBA,gBAAkCA,gBAAkB7B,GDKtExO,SEN+B,oBAAbA,SAA2BA,SAAW,KFOxDsN,KGP2B,oBAATA,KAAuBA,KAAO,MHSlDgD,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAQ,MAAO,SIXhDC,GAAkC,oBAAX1Q,QAA8C,oBAAb2Q,SAExDC,GAAmC,YAALhS,oBAATiS,UAASjS,YAAAA,EAATiS,aAA0BA,gBAAczQ,EAmB7D0Q,GACJJ,MACEE,IAAc,CAAC,cAAe,eAAgB,MAAMlJ,QAAQkJ,GAAWG,SAAW,GAWhFC,GAE2B,oBAAtBC,mBAEPlR,gBAAgBkR,mBACc,mBAAvBlR,KAAKmR,cAIVC,GAAUT,IAAiB1Q,OAAOoR,SAASC,MAAS,mBCxC1DC,GAAAA,EAAAA,EACKjG,CAAAA,sIACAkG,IC2CL,SAASC,GAAerM,GACtB,SAASsM,EAAU9E,EAAM3H,EAAO6E,EAAQsE,GACtC,IAAIzL,EAAOiK,EAAKwB,KAEhB,GAAa,cAATzL,EAAsB,OAAO,EAEjC,IAAMgP,EAAenI,OAAOC,UAAU9G,GAChCiP,EAASxD,GAASxB,EAAKzL,OAG7B,OAFAwB,GAAQA,GAAQ2I,GAAMxM,QAAQgL,GAAUA,EAAO3I,OAASwB,EAEpDiP,GACEtG,GAAM/C,WAAWuB,EAAQnH,GAC3BmH,EAAOnH,GAAQ,CAACmH,EAAOnH,GAAOsC,GAE9B6E,EAAOnH,GAAQsC,GAGT0M,IAGL7H,EAAOnH,IAAU2I,GAAM9L,SAASsK,EAAOnH,MAC1CmH,EAAOnH,GAAQ,IAGF+O,EAAU9E,EAAM3H,EAAO6E,EAAOnH,GAAOyL,IAEtC9C,GAAMxM,QAAQgL,EAAOnH,MACjCmH,EAAOnH,GA/Cb,SAAuBkF,GACrB,IAEI7G,EAEAK,EAJEN,EAAM,CAAA,EACNO,EAAOzD,OAAOyD,KAAKuG,GAEnBrG,EAAMF,EAAKH,OAEjB,IAAKH,EAAI,EAAGA,EAAIQ,EAAKR,IAEnBD,EADAM,EAAMC,EAAKN,IACA6G,EAAIxG,GAEjB,OAAON,CACT,CAoCqB8Q,CAAc/H,EAAOnH,MAG9BgP,EACV,CAEA,GAAIrG,GAAMhH,WAAWc,IAAakG,GAAMlM,WAAWgG,EAAS0M,SAAU,CACpE,IAAM/Q,EAAM,CAAA,EAMZ,OAJAuK,GAAMxD,aAAa1C,EAAU,SAACzC,EAAMsC,GAClCyM,EA1EN,SAAuB/O,GAKrB,OAAO2I,GAAMnD,SAAS,gBAAiBxF,GAAMlC,IAAI,SAACkO,GAChD,MAAoB,OAAbA,EAAM,GAAc,GAAKA,EAAM,IAAMA,EAAM,EACpD,EACF,CAkEgBoD,CAAcpP,GAAOsC,EAAOlE,EAAK,EAC7C,GAEOA,CACT,CAEA,OAAO,IACT,CCzDA,IAAMiR,GAAW,CACfC,aAAchC,GAEdiC,QAAS,CAAC,MAAO,OAAQ,SAEzBC,iBAAkB,CAChB,SAA0BvO,EAAMwO,GAC9B,IAgCIvS,EAhCEwS,EAAcD,EAAQE,kBAAoB,GAC1CC,EAAqBF,EAAY1K,QAAQ,qBAAuB,EAChE6K,EAAkBlH,GAAM9L,SAASoE,GAQvC,GANI4O,GAAmBlH,GAAMrJ,WAAW2B,KACtCA,EAAO,IAAIxD,SAASwD,IAGH0H,GAAMhH,WAAWV,GAGlC,OAAO2O,EAAqBxE,KAAKC,UAAUyD,GAAe7N,IAASA,EAGrE,GACE0H,GAAMjM,cAAcuE,IACpB0H,GAAMrM,SAAS2E,IACf0H,GAAMhG,SAAS1B,IACf0H,GAAM3L,OAAOiE,IACb0H,GAAM1L,OAAOgE,IACb0H,GAAM5K,iBAAiBkD,GAEvB,OAAOA,EAET,GAAI0H,GAAM7G,kBAAkBb,GAC1B,OAAOA,EAAKgB,OAEd,GAAI0G,GAAMhL,kBAAkBsD,GAE1B,OADAwO,EAAQK,eAAe,mDAAmD,GACnE7O,EAAKhG,WAKd,GAAI4U,EAAiB,CACnB,GAAIH,EAAY1K,QAAQ,sCAAwC,EAC9D,OCxEK,SAA0B/D,EAAMsJ,GAC7C,OAAOD,GAAWrJ,EAAM,IAAI4N,GAAShB,QAAQC,gBAAiBc,EAAA,CAC5DhE,QAAS,SAAUtI,EAAO5D,EAAKuL,EAAM8F,GACnC,OAAIlB,GAASmB,QAAUrH,GAAMrM,SAASgG,IACpCS,KAAKlB,OAAOnD,EAAK4D,EAAMrH,SAAS,YACzB,GAGF8U,EAAQlF,eAAe/P,MAAMiI,KAAMhI,UAC5C,GACGwP,GAEP,CD4DiB0F,CAAiBhP,EAAM8B,KAAKmN,gBAAgBjV,WAGrD,IACGiC,EAAayL,GAAMzL,WAAW+D,KAC/ByO,EAAY1K,QAAQ,wBAA0B,EAC9C,CACA,IAAMmL,EAAYpN,KAAKqN,KAAOrN,KAAKqN,IAAI3S,SAEvC,OAAO6M,GACLpN,EAAa,CAAE,UAAW+D,GAASA,EACnCkP,GAAa,IAAIA,EACjBpN,KAAKmN,eAET,CACF,CAEA,OAAIL,GAAmBD,GACrBH,EAAQK,eAAe,oBAAoB,GA5EnD,SAAyBO,EAAUC,EAAQ1D,GACzC,GAAIjE,GAAMhM,SAAS0T,GACjB,IAEE,OADCC,GAAUlF,KAAKmF,OAAOF,GAChB1H,GAAM/E,KAAKyM,EACnB,CAAC,MAAOjO,GACP,GAAe,gBAAXA,EAAEpC,KACJ,MAAMoC,CAEV,CAGF,OAAQwK,GAAWxB,KAAKC,WAAWgF,EACrC,CAgEeG,CAAgBvP,IAGlBA,CACT,GAGFwP,kBAAmB,CACjB,SAA2BxP,GACzB,IAAMqO,EAAevM,KAAKuM,cAAgBD,GAASC,aAC7C9B,EAAoB8B,GAAgBA,EAAa9B,kBACjDkD,EAAsC,SAAtB3N,KAAK4N,aAE3B,GAAIhI,GAAM1K,WAAWgD,IAAS0H,GAAM5K,iBAAiBkD,GACnD,OAAOA,EAGT,GACEA,GACA0H,GAAMhM,SAASsE,KACbuM,IAAsBzK,KAAK4N,cAAiBD,GAC9C,CACA,IACME,IADoBtB,GAAgBA,EAAa/B,oBACPmD,EAEhD,IACE,OAAOtF,KAAKmF,MAAMtP,EAAM8B,KAAK8N,aAC9B,CAAC,MAAOzO,GACP,GAAIwO,EAAmB,CACrB,GAAe,gBAAXxO,EAAEpC,KACJ,MAAMwH,GAAW2D,KAAK/I,EAAGoF,GAAWgC,iBAAkBzG,KAAM,KAAMA,KAAK+E,UAEzE,MAAM1F,CACR,CACF,CACF,CAEA,OAAOnB,CACT,GAOF6P,QAAS,EAETC,eAAgB,aAChBC,eAAgB,eAEhBC,kBAAmB,EACnBC,eAAgB,EAEhBd,IAAK,CACH3S,SAAUoR,GAAShB,QAAQpQ,SAC3BsN,KAAM8D,GAAShB,QAAQ9C,MAGzBoG,eAAgB,SAAwBhJ,GACtC,OAAOA,GAAU,KAAOA,EAAS,GAClC,EAEDsH,QAAS,CACP2B,OAAQ,CACNC,OAAQ,oCACR,oBAAgB3T,KAKtBiL,GAAMxK,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,SAAU,SAACmT,GAChEjC,GAASI,QAAQ6B,GAAU,EAC7B,GAEA,IAAAC,GAAelC,GErKTmC,GAAoB7I,GAAM3C,YAAY,CAC1C,MACA,gBACA,iBACA,eACA,OACA,UACA,OACA,OACA,oBACA,sBACA,gBACA,WACA,eACA,sBACA,UACA,cACA,eClBIyL,GAAanW,OAAO,aAE1B,SAASoW,GAAgBC,GACvB,OAAOA,GAAU7M,OAAO6M,GAAQ/N,OAAO9H,aACzC,CAEA,SAAS8V,GAAetP,GACtB,OAAc,IAAVA,GAA4B,MAATA,EACdA,EAGFqG,GAAMxM,QAAQmG,GAASA,EAAMxE,IAAI8T,IAAkB9M,OAAOxC,EACnE,CAgBA,SAASuP,GAAiB3S,EAASoD,EAAOqP,EAAQnN,EAAQsN,GACxD,OAAInJ,GAAMlM,WAAW+H,GACZA,EAAO5I,KAAKmH,KAAMT,EAAOqP,IAG9BG,IACFxP,EAAQqP,GAGLhJ,GAAMhM,SAAS2F,GAEhBqG,GAAMhM,SAAS6H,IACiB,IAA3BlC,EAAM0C,QAAQR,GAGnBmE,GAAMlJ,SAAS+E,GACVA,EAAO6F,KAAK/H,QADrB,OANA,EASF,CAsBC,IAEKyP,GAAY,WAGf,OAAA1J,EAFD,SAAA0J,EAAYtC,GAASzH,OAAA+J,GACnBtC,GAAW1M,KAAK+C,IAAI2J,EACtB,EAAC,CAAA,CAAA/Q,IAAA,MAAA4D,MAED,SAAIqP,EAAQK,EAAgBC,GAC1B,IAAM5U,EAAO0F,KAEb,SAASmP,EAAUC,EAAQC,EAASC,GAClC,IAAMC,EAAUZ,GAAgBU,GAEhC,IAAKE,EACH,MAAM,IAAIvM,MAAM,0CAGlB,IAAMrH,EAAMiK,GAAM7J,QAAQzB,EAAMiV,KAG7B5T,QACahB,IAAdL,EAAKqB,KACQ,IAAb2T,QACc3U,IAAb2U,IAAwC,IAAdhV,EAAKqB,MAEhCrB,EAAKqB,GAAO0T,GAAWR,GAAeO,GAE1C,CAEA,IAAMI,EAAa,SAAC9C,EAAS4C,GAAQ,OACnC1J,GAAMxK,QAAQsR,EAAS,SAAC0C,EAAQC,GAAO,OAAKF,EAAUC,EAAQC,EAASC,IAAU,EAEnF,GAAI1J,GAAM7L,cAAc6U,IAAWA,aAAkB5O,KAAKvG,YACxD+V,EAAWZ,EAAQK,QACd,GAAIrJ,GAAMhM,SAASgV,KAAYA,EAASA,EAAO/N,UA5EvB,iCAAiCyG,KA4EoBsH,EA5EX/N,QA6EvE2O,EDpES,SAACC,GACd,IACI9T,EACAnC,EACA8B,EAHEoU,EAAS,CAAA,EA0Bf,OArBAD,GACEA,EAAWpM,MAAM,MAAMjI,QAAQ,SAAgBuU,GAC7CrU,EAAIqU,EAAK1N,QAAQ,KACjBtG,EAAMgU,EAAKC,UAAU,EAAGtU,GAAGuF,OAAO9H,cAClCS,EAAMmW,EAAKC,UAAUtU,EAAI,GAAGuF,QAEvBlF,GAAQ+T,EAAO/T,IAAQ8S,GAAkB9S,KAIlC,eAARA,EACE+T,EAAO/T,GACT+T,EAAO/T,GAAK0C,KAAK7E,GAEjBkW,EAAO/T,GAAO,CAACnC,GAGjBkW,EAAO/T,GAAO+T,EAAO/T,GAAO+T,EAAO/T,GAAO,KAAOnC,EAAMA,EAE3D,GAEKkW,CACR,CCwCgBG,CAAajB,GAASK,QAC5B,GAAIrJ,GAAM9L,SAAS8U,IAAWhJ,GAAMpB,WAAWoK,GAAS,CAC7D,IACEkB,EACAnU,EACwBoU,EAHtB1U,EAAM,CAAE,EAENgH,koBAAA2N,CACcpB,GAAM,IAA1B,IAAAvM,EAAA4N,MAAAF,EAAA1N,EAAA6N,KAAA3N,MAA4B,CAAA,IAAjB4N,EAAKJ,EAAAxQ,MACd,IAAKqG,GAAMxM,QAAQ+W,GACjB,MAAM1I,UAAU,gDAGlBpM,EAAKM,EAAMwU,EAAM,KAAQL,EAAOzU,EAAIM,IAChCiK,GAAMxM,QAAQ0W,MAAKlS,OAAAwS,EACbN,IAAMK,EAAM,KAChB,CAACL,EAAMK,EAAM,IACfA,EAAM,EACZ,CAAC,CAAA,MAAAE,GAAAhO,EAAAhD,EAAAgR,EAAA,CAAA,QAAAhO,EAAAiO,GAAA,CAEDd,EAAWnU,EAAK4T,EAClB,MACY,MAAVL,GAAkBO,EAAUF,EAAgBL,EAAQM,GAGtD,OAAOlP,IACT,GAAC,CAAArE,IAAA,MAAA4D,MAED,SAAIqP,EAAQrB,GAGV,GAFAqB,EAASD,GAAgBC,GAEb,CACV,IAAMjT,EAAMiK,GAAM7J,QAAQiE,KAAM4O,GAEhC,GAAIjT,EAAK,CACP,IAAM4D,EAAQS,KAAKrE,GAEnB,IAAK4R,EACH,OAAOhO,EAGT,IAAe,IAAXgO,EACF,OAhIV,SAAqB3U,GAKnB,IAJA,IAEIqQ,EAFEsH,EAASpY,OAAOO,OAAO,MACvB8X,EAAW,mCAGTvH,EAAQuH,EAAS5N,KAAKhK,IAC5B2X,EAAOtH,EAAM,IAAMA,EAAM,GAG3B,OAAOsH,CACT,CAsHiBE,CAAYlR,GAGrB,GAAIqG,GAAMlM,WAAW6T,GACnB,OAAOA,EAAO1U,KAAKmH,KAAMT,EAAO5D,GAGlC,GAAIiK,GAAMlJ,SAAS6Q,GACjB,OAAOA,EAAO3K,KAAKrD,GAGrB,MAAM,IAAIkI,UAAU,yCACtB,CACF,CACF,GAAC,CAAA9L,IAAA,MAAA4D,MAED,SAAIqP,EAAQ8B,GAGV,GAFA9B,EAASD,GAAgBC,GAEb,CACV,IAAMjT,EAAMiK,GAAM7J,QAAQiE,KAAM4O,GAEhC,SACEjT,QACchB,IAAdqF,KAAKrE,IACH+U,IAAW5B,GAAiB9O,EAAMA,KAAKrE,GAAMA,EAAK+U,GAExD,CAEA,OAAO,CACT,GAAC,CAAA/U,IAAA,SAAA4D,MAED,SAAOqP,EAAQ8B,GACb,IAAMpW,EAAO0F,KACT2Q,GAAU,EAEd,SAASC,EAAavB,GAGpB,GAFAA,EAAUV,GAAgBU,GAEb,CACX,IAAM1T,EAAMiK,GAAM7J,QAAQzB,EAAM+U,IAE5B1T,GAAS+U,IAAW5B,GAAiBxU,EAAMA,EAAKqB,GAAMA,EAAK+U,YACtDpW,EAAKqB,GAEZgV,GAAU,EAEd,CACF,CAQA,OANI/K,GAAMxM,QAAQwV,GAChBA,EAAOxT,QAAQwV,GAEfA,EAAahC,GAGR+B,CACT,GAAC,CAAAhV,IAAA,QAAA4D,MAED,SAAMmR,GAKJ,IAJA,IAAM9U,EAAOzD,OAAOyD,KAAKoE,MACrB1E,EAAIM,EAAKH,OACTkV,GAAU,EAEPrV,KAAK,CACV,IAAMK,EAAMC,EAAKN,GACZoV,IAAW5B,GAAiB9O,EAAMA,KAAKrE,GAAMA,EAAK+U,GAAS,YACvD1Q,KAAKrE,GACZgV,GAAU,EAEd,CAEA,OAAOA,CACT,GAAC,CAAAhV,IAAA,YAAA4D,MAED,SAAUsR,GACR,IAAMvW,EAAO0F,KACP0M,EAAU,CAAA,EAsBhB,OApBA9G,GAAMxK,QAAQ4E,KAAM,SAACT,EAAOqP,GAC1B,IAAMjT,EAAMiK,GAAM7J,QAAQ2Q,EAASkC,GAEnC,GAAIjT,EAGF,OAFArB,EAAKqB,GAAOkT,GAAetP,eACpBjF,EAAKsU,GAId,IAAMkC,EAAaD,EAtLzB,SAAsBjC,GACpB,OAAOA,EACJ/N,OACA9H,cACA+H,QAAQ,kBAAmB,SAACiQ,EAAGC,EAAMpY,GACpC,OAAOoY,EAAKtN,cAAgB9K,CAC9B,EACJ,CA+KkCqY,CAAarC,GAAU7M,OAAO6M,GAAQ/N,OAE9DiQ,IAAelC,UACVtU,EAAKsU,GAGdtU,EAAKwW,GAAcjC,GAAetP,GAElCmN,EAAQoE,IAAc,CACxB,GAEO9Q,IACT,GAAC,CAAArE,IAAA,SAAA4D,MAED,WAAmB,IAAA,IAAA2R,EAAAC,EAAAnZ,UAAAyD,OAAT2V,EAAO/X,IAAAA,MAAA8X,GAAAnV,EAAA,EAAAA,EAAAmV,EAAAnV,IAAPoV,EAAOpV,GAAAhE,UAAAgE,GACf,OAAOkV,EAAAlR,KAAKvG,aAAYmE,OAAM7F,MAAAmZ,EAAC,CAAAlR,MAAIpC,OAAKwT,GAC1C,GAAC,CAAAzV,IAAA,SAAA4D,MAED,SAAO8R,GACL,IAAMhW,EAAMlD,OAAOO,OAAO,MAQ1B,OANAkN,GAAMxK,QAAQ4E,KAAM,SAACT,EAAOqP,GACjB,MAATrP,IACY,IAAVA,IACClE,EAAIuT,GAAUyC,GAAazL,GAAMxM,QAAQmG,GAASA,EAAM6H,KAAK,MAAQ7H,EAC1E,GAEOlE,CACT,GAAC,CAAAM,IAEApD,OAAOD,SAAQiH,MAAhB,WACE,OAAOpH,OAAOiU,QAAQpM,KAAKsR,UAAU/Y,OAAOD,WAC9C,GAAC,CAAAqD,IAAA,WAAA4D,MAED,WACE,OAAOpH,OAAOiU,QAAQpM,KAAKsR,UACxBvW,IAAI,SAAAwW,GAAA,IAAAxR,EAAAjF,EAAAyW,EAAA,GAAe,OAAPxR,EAAA,GAAsB,KAAfA,EAAA,EAA2B,GAC9CqH,KAAK,KACV,GAAC,CAAAzL,IAAA,eAAA4D,MAED,WACE,OAAOS,KAAKwR,IAAI,eAAiB,EACnC,GAAC,CAAA7V,IAEIpD,OAAOC,YAAWgZ,IAAvB,WACE,MAAO,cACT,IAAC,CAAA,CAAA7V,IAAA,OAAA4D,MAED,SAAY5G,GACV,OAAOA,aAAiBqH,KAAOrH,EAAQ,IAAIqH,KAAKrH,EAClD,GAAC,CAAAgD,IAAA,SAAA4D,MAED,SAAckS,GACqB,IAAjC,IAAMC,EAAW,IAAI1R,KAAKyR,GAAOE,EAAA3Z,UAAAyD,OADX2V,MAAO/X,MAAAsY,EAAAA,EAAAA,OAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPR,EAAOQ,EAAA5Z,GAAAA,UAAA4Z,GAK7B,OAFAR,EAAQhW,QAAQ,SAACgJ,GAAM,OAAKsN,EAAS3O,IAAIqB,KAElCsN,CACT,GAAC,CAAA/V,IAAA,WAAA4D,MAED,SAAgBqP,GACd,IAOMiD,GANH7R,KAAK0O,IACN1O,KAAK0O,IACH,CACEmD,UAAW,CAAC,IAGUA,UACtBzZ,EAAY4H,KAAK5H,UAEvB,SAAS0Z,EAAezC,GACtB,IAAME,EAAUZ,GAAgBU,GAE3BwC,EAAUtC,MAvPrB,SAAwBlU,EAAKuT,GAC3B,IAAMmD,EAAenM,GAAMtC,YAAY,IAAMsL,GAE7C,CAAC,MAAO,MAAO,OAAOxT,QAAQ,SAAC4W,GAC7B7Z,OAAOsI,eAAepF,EAAK2W,EAAaD,EAAc,CACpDxS,MAAO,SAAU0S,EAAMC,EAAMC,GAC3B,OAAOnS,KAAKgS,GAAYnZ,KAAKmH,KAAM4O,EAAQqD,EAAMC,EAAMC,EACxD,EACDvR,cAAc,GAElB,EACF,CA6OQwR,CAAeha,EAAWiX,GAC1BwC,EAAUtC,IAAW,EAEzB,CAIA,OAFA3J,GAAMxM,QAAQwV,GAAUA,EAAOxT,QAAQ0W,GAAkBA,EAAelD,GAEjE5O,IACT,IAAC,CAnPe,GAsPlBgP,GAAaqD,SAAS,CACpB,eACA,iBACA,SACA,kBACA,aACA,kBAIG1T,GAAChC,kBAAkBqS,GAAa5W,UAAW,SAAAka,EAAY3W,GAAQ,IAAjB4D,EAAK+S,EAAL/S,MAC7CgT,EAAS5W,EAAI,GAAG+H,cAAgB/H,EAAI7C,MAAM,GAC9C,MAAO,CACL0Y,IAAK,WAAF,OAAQjS,CAAK,EAChBwD,IAAAA,SAAIyP,GACFxS,KAAKuS,GAAUC,CACjB,EAEJ,GAEA5M,GAAM9C,cAAckM,IAEpB,IAAAyD,GAAezD,GCzUA,SAAS0D,GAAcC,EAAK5N,GACzC,IAAMF,EAAS7E,MAAQsM,GACjBnQ,EAAU4I,GAAYF,EACtB6H,EAAUsC,GAAa5G,KAAKjM,EAAQuQ,SACtCxO,EAAO/B,EAAQ+B,KAQnB,OANA0H,GAAMxK,QAAQuX,EAAK,SAAmB9a,GACpCqG,EAAOrG,EAAGgB,KAAKgM,EAAQ3G,EAAMwO,EAAQkG,YAAa7N,EAAWA,EAASK,YAASzK,EACjF,GAEA+R,EAAQkG,YAED1U,CACT,CCzBe,SAAS2U,GAAStT,GAC/B,SAAUA,IAASA,EAAMuT,WAC3B,CCF+C,IAmB/CC,YAjBmBC,GAUjB,SAAAC,EAAYtO,EAASE,EAAQC,GAAS,IAAAE,EAGb,OAHaC,OAAAgO,IACpCjO,EAAAE,EAAAlF,KAAAiT,EAAMtO,CAAW,MAAXA,EAAkB,WAAaA,EAASF,GAAWkC,aAAc9B,EAAQC,KAC1E7H,KAAO,gBACZ+H,EAAK8N,YAAa,EAAK9N,CACzB,CAAC,OAAAK,EAAA4N,EAAAD,GAAA1N,EAAA2N,EAAA,EAdyBxO,ICSb,SAASyO,GAAOC,EAASC,EAAQrO,GAC9C,IAAMqJ,EAAiBrJ,EAASF,OAAOuJ,eAClCrJ,EAASK,QAAWgJ,IAAkBA,EAAerJ,EAASK,QAGjEgO,EACE,IAAI3O,GACF,mCAAqCM,EAASK,OAC9C,CAACX,GAAWiC,gBAAiBjC,GAAWgC,kBACtC5I,KAAKwV,MAAMtO,EAASK,OAAS,KAAO,GAEtCL,EAASF,OACTE,EAASD,QACTC,IAVJoO,EAAQpO,EAcZ,CC1BO,IAAMuO,GAAuB,SAACC,EAAUC,GAA+B,IAAbC,EAAIzb,UAAAyD,OAAA,QAAAd,IAAA3C,UAAA,GAAAA,UAAA,GAAG,EAClE0b,EAAgB,EACdC,ECER,SAAqBC,EAAcC,GACjCD,EAAeA,GAAgB,GAC/B,IAIIE,EAJEC,EAAQ,IAAI1a,MAAMua,GAClBI,EAAa,IAAI3a,MAAMua,GACzBK,EAAO,EACPC,EAAO,EAKX,OAFAL,OAAclZ,IAARkZ,EAAoBA,EAAM,IAEzB,SAAcM,GACnB,IAAMC,EAAMC,KAAKD,MAEXE,EAAYN,EAAWE,GAExBJ,IACHA,EAAgBM,GAGlBL,EAAME,GAAQE,EACdH,EAAWC,GAAQG,EAKnB,IAHA,IAAI9Y,EAAI4Y,EACJK,EAAa,EAEVjZ,IAAM2Y,GACXM,GAAcR,EAAMzY,KACpBA,GAAQsY,EASV,IANAK,GAAQA,EAAO,GAAKL,KAEPM,IACXA,GAAQA,EAAO,GAAKN,KAGlBQ,EAAMN,EAAgBD,GAA1B,CAIA,IAAMW,EAASF,GAAaF,EAAME,EAElC,OAAOE,EAAS3W,KAAK4W,MAAoB,IAAbF,EAAqBC,QAAU7Z,CAJ3D,EAMJ,CD9CuB+Z,CAAY,GAAI,KAErC,OEFF,SAAkB7c,EAAI4b,GACpB,IAEIkB,EACAC,EAHAC,EAAY,EACZC,EAAY,IAAOrB,EAIjBsB,EAAS,SAACC,GAA2B,IAArBZ,EAAGpc,UAAAyD,eAAAd,IAAA3C,UAAA,GAAAA,UAAGqc,GAAAA,KAAKD,MAC/BS,EAAYT,EACZO,EAAW,KACPC,IACFK,aAAaL,GACbA,EAAQ,MAEV/c,EAAEE,WAAA,EAAAqY,EAAI4E,KAqBR,MAAO,CAlBW,WAEe,IAD/B,IAAMZ,EAAMC,KAAKD,MACXI,EAASJ,EAAMS,EAAU1D,EAAAnZ,UAAAyD,OAFXuZ,EAAI3b,IAAAA,MAAA8X,GAAAnV,EAAA,EAAAA,EAAAmV,EAAAnV,IAAJgZ,EAAIhZ,GAAAhE,UAAAgE,GAGpBwY,GAAUM,EACZC,EAAOC,EAAMZ,IAEbO,EAAWK,EACNJ,IACHA,EAAQtW,WAAW,WACjBsW,EAAQ,KACRG,EAAOJ,EACT,EAAGG,EAAYN,MAKP,WAAH,OAASG,GAAYI,EAAOJ,EAAS,EAGlD,CFjCSO,CAAS,SAAC7V,GACf,IAAM8V,EAAS9V,EAAE8V,OACXC,EAAQ/V,EAAEgW,iBAAmBhW,EAAE+V,WAAQza,EACvC2a,EAAgBH,EAASzB,EACzB6B,EAAO5B,EAAa2B,GAG1B5B,EAAgByB,EAEhB,IAAMjX,EAAIsX,EAAA,CACRL,OAAAA,EACAC,MAAAA,EACAK,SAAUL,EAAQD,EAASC,OAAQza,EACnCoZ,MAAOuB,EACPC,KAAMA,QAAc5a,EACpB+a,UAAWH,GAAQH,GAVLD,GAAUC,GAUeA,EAAQD,GAAUI,OAAO5a,EAChEgb,MAAOtW,EACPgW,iBAA2B,MAATD,GACjB5B,EAAmB,WAAa,UAAW,GAG9CD,EAASrV,EACV,EAAEuV,EACL,EAEamC,GAAyB,SAACR,EAAOS,GAC5C,IAAMR,EAA4B,MAATD,EAEzB,MAAO,CACL,SAACD,GAAM,OACLU,EAAU,GAAG,CACXR,iBAAAA,EACAD,MAAAA,EACAD,OAAAA,GACA,EACJU,EAAU,GAEd,EAEaC,GACX,SAACje,GAAE,OACH,WAAA,IAAA,IAAAsZ,EAAAnZ,UAAAyD,OAAIuZ,EAAI3b,IAAAA,MAAA8X,GAAAnV,EAAA,EAAAA,EAAAmV,EAAAnV,IAAJgZ,EAAIhZ,GAAAhE,UAAAgE,GAAA,OACN4J,GAAMrH,KAAK,WAAA,OAAM1G,EAAEE,WAAA,EAAIid,IAAM,CAAA,EGhDlBlJ,GAAAA,GAAST,sBACnB,SAACK,EAAQqK,GAAM,OAAK,SAACzM,GAGpB,OAFAA,EAAM,IAAI0M,IAAI1M,EAAKwC,GAASJ,QAG1BA,EAAOuK,WAAa3M,EAAI2M,UACxBvK,EAAOwK,OAAS5M,EAAI4M,OACnBH,GAAUrK,EAAOyK,OAAS7M,EAAI6M,MAElC,CARA,CASC,IAAIH,IAAIlK,GAASJ,QACjBI,GAASV,WAAa,kBAAkB9D,KAAKwE,GAASV,UAAUgL,YAElE,WAAA,OAAM,CAAI,ECZCtK,GAAAA,GAAST,sBAEpB,CACEgL,eAAMpZ,EAAMsC,EAAO+W,EAASpP,EAAMqP,EAAQC,EAAQC,GAChD,GAAwB,oBAAbvL,SAAX,CAEA,IAAMwL,EAAS,CAAA9Y,GAAAA,OAAIX,EAAIW,KAAAA,OAAIoL,mBAAmBzJ,KAE1CqG,GAAM/L,SAASyc,IACjBI,EAAOrY,KAAIT,WAAAA,OAAY,IAAIyW,KAAKiC,GAASK,gBAEvC/Q,GAAMhM,SAASsN,IACjBwP,EAAOrY,KAAI,QAAAT,OAASsJ,IAElBtB,GAAMhM,SAAS2c,IACjBG,EAAOrY,KAAI,UAAAT,OAAW2Y,KAET,IAAXC,GACFE,EAAOrY,KAAK,UAEVuH,GAAMhM,SAAS6c,IACjBC,EAAOrY,KAAI,YAAAT,OAAa6Y,IAG1BvL,SAASwL,OAASA,EAAOtP,KAAK,KApBO,CAqBtC,EAEDwP,KAAAA,SAAK3Z,GACH,GAAwB,oBAAbiO,SAA0B,OAAO,KAC5C,IAAMjC,EAAQiC,SAASwL,OAAOzN,MAAM,IAAI4N,OAAO,WAAa5Z,EAAO,aACnE,OAAOgM,EAAQ6N,mBAAmB7N,EAAM,IAAM,IAC/C,EAED8N,OAAAA,SAAO9Z,GACL+C,KAAKqW,MAAMpZ,EAAM,GAAIoX,KAAKD,MAAQ,MAAU,IAC9C,GAGF,CACEiC,MAAAA,WAAU,EACVO,KAAI,WACF,OAAO,IACR,EACDG,OAAAA,WAAU,GC/BD,SAASC,GAAcC,EAASC,EAAcC,GAC3D,ICPoC7N,EDOhC8N,ICHe,iBAJiB9N,EDOD4N,ICC5B,8BAA8B5P,KAAKgC,IDA1C,OAAI2N,IAAYG,GAAsC,GAArBD,GEPpB,SAAqBF,EAASI,GAC3C,OAAOA,EACHJ,EAAQnW,QAAQ,SAAU,IAAM,IAAMuW,EAAYvW,QAAQ,OAAQ,IAClEmW,CACN,CFIWK,CAAYL,EAASC,GAEvBA,CACT,CGhBA,IAAMK,GAAkB,SAAC5e,GAAK,OAAMA,aAAiBqW,GAAYnD,EAAQlT,CAAAA,EAAAA,GAAUA,CAAK,EAWzE,SAAS6e,GAAYC,EAASC,GAE3CA,EAAUA,GAAW,GACrB,IAAM7S,EAAS,CAAA,EAEf,SAAS8S,EAAevT,EAAQnG,EAAQxB,EAAMwD,GAC5C,OAAI2F,GAAM7L,cAAcqK,IAAWwB,GAAM7L,cAAckE,GAC9C2H,GAAM9F,MAAMjH,KAAK,CAAEoH,SAAAA,GAAYmE,EAAQnG,GACrC2H,GAAM7L,cAAckE,GACtB2H,GAAM9F,MAAM,CAAE,EAAE7B,GACd2H,GAAMxM,QAAQ6E,GAChBA,EAAOnF,QAETmF,CACT,CAEA,SAAS2Z,EAAoBrX,EAAGC,EAAG/D,EAAMwD,GACvC,OAAK2F,GAAMtM,YAAYkH,GAEXoF,GAAMtM,YAAYiH,QAAvB,EACEoX,OAAehd,EAAW4F,EAAG9D,EAAMwD,GAFnC0X,EAAepX,EAAGC,EAAG/D,EAAMwD,EAItC,CAGA,SAAS4X,EAAiBtX,EAAGC,GAC3B,IAAKoF,GAAMtM,YAAYkH,GACrB,OAAOmX,OAAehd,EAAW6F,EAErC,CAGA,SAASsX,EAAiBvX,EAAGC,GAC3B,OAAKoF,GAAMtM,YAAYkH,GAEXoF,GAAMtM,YAAYiH,QAAvB,EACEoX,OAAehd,EAAW4F,GAF1BoX,OAAehd,EAAW6F,EAIrC,CAGA,SAASuX,EAAgBxX,EAAGC,EAAG/D,GAC7B,OAAIA,KAAQib,EACHC,EAAepX,EAAGC,GAChB/D,KAAQgb,EACVE,OAAehd,EAAW4F,QAD5B,CAGT,CAEA,IAAMyX,EAAW,CACf1O,IAAKuO,EACLtJ,OAAQsJ,EACR3Z,KAAM2Z,EACNZ,QAASa,EACTrL,iBAAkBqL,EAClBpK,kBAAmBoK,EACnBG,iBAAkBH,EAClB/J,QAAS+J,EACTI,eAAgBJ,EAChBK,gBAAiBL,EACjBM,cAAeN,EACftL,QAASsL,EACTlK,aAAckK,EACd9J,eAAgB8J,EAChB7J,eAAgB6J,EAChBO,iBAAkBP,EAClBQ,mBAAoBR,EACpBS,WAAYT,EACZ5J,iBAAkB4J,EAClB3J,cAAe2J,EACfU,eAAgBV,EAChBW,UAAWX,EACXY,UAAWZ,EACXa,WAAYb,EACZc,YAAad,EACbe,WAAYf,EACZgB,iBAAkBhB,EAClB1J,eAAgB2J,EAChBrL,QAAS,SAACnM,EAAGC,EAAG/D,GAAI,OAClBmb,EAAoBL,GAAgBhX,GAAIgX,GAAgB/W,GAAI/D,GAAM,EAAK,GAU3E,OAPAmJ,GAAMxK,QAAQjD,OAAOyD,KAAIiQ,EAAAA,KAAM4L,GAAYC,IAAY,SAA4Bjb,GACjF,GAAa,cAATA,GAAiC,gBAATA,GAAmC,cAATA,EAAtD,CACA,IAAMqD,EAAQ8F,GAAM/C,WAAWmV,EAAUvb,GAAQub,EAASvb,GAAQmb,EAC5DmB,EAAcjZ,EAAM2X,EAAQhb,GAAOib,EAAQjb,GAAOA,GACvDmJ,GAAMtM,YAAYyf,IAAgBjZ,IAAUiY,IAAqBlT,EAAOpI,GAAQsc,EAHL,CAI9E,GAEOlU,CACT,CCjGe,ICSS0M,GDTTyH,GAAA,SAACnU,GACd,IAAMoU,EAAYzB,GAAY,CAAE,EAAE3S,GAE5B3G,EAAuE+a,EAAvE/a,KAAMka,EAAiEa,EAAjEb,cAAenK,EAAkDgL,EAAlDhL,eAAgBD,EAAkCiL,EAAlCjL,eAAgBtB,EAAkBuM,EAAlBvM,QAASwM,EAASD,EAATC,KAuBpE,GArBAD,EAAUvM,QAAUA,EAAUsC,GAAa5G,KAAKsE,GAEhDuM,EAAU3P,IAAMD,GACd2N,GAAciC,EAAUhC,QAASgC,EAAU3P,IAAK2P,EAAU9B,mBAC1DtS,EAAOsE,OACPtE,EAAOoT,kBAILiB,GACFxM,EAAQ3J,IACN,gBACA,SACEoW,MACGD,EAAKE,UAAY,IAChB,KACCF,EAAKG,SAAWC,SAAStQ,mBAAmBkQ,EAAKG,WAAa,MAKrEzT,GAAMhH,WAAWV,GACnB,GAAI4N,GAAST,uBAAyBS,GAASP,+BAC7CmB,EAAQK,oBAAepS,QAClB,GAAIiL,GAAMlM,WAAWwE,EAAKqb,YAAa,CAE5C,IAAMC,EAActb,EAAKqb,aAEnBE,EAAiB,CAAC,eAAgB,kBACxCthB,OAAOiU,QAAQoN,GAAape,QAAQ,SAAAmW,GAAgB,IAAAxR,EAAAjF,EAAAyW,EAAA,GAAd5V,EAAGoE,EAAA,GAAEvG,EAAGuG,EAAA,GACxC0Z,EAAeC,SAAS/d,EAAI5C,gBAC9B2T,EAAQ3J,IAAIpH,EAAKnC,EAErB,EACF,CAOF,GAAIsS,GAAST,wBACX+M,GAAiBxS,GAAMlM,WAAW0e,KAAmBA,EAAgBA,EAAca,IAE/Eb,IAAoC,IAAlBA,GAA2BuB,GAAgBV,EAAU3P,MAAO,CAEhF,IAAMsQ,EAAY3L,GAAkBD,GAAkB6L,GAAQjD,KAAK5I,GAE/D4L,GACFlN,EAAQ3J,IAAIkL,EAAgB2L,EAEhC,CAGF,OAAOX,CACR,EExDDa,GAFwD,oBAAnBC,gBAGnC,SAAUlV,GACR,OAAO,IAAImV,QAAQ,SAA4B7G,EAASC,GACtD,IAII6G,EACAC,EAAiBC,EACjBC,EAAaC,EANXC,EAAUtB,GAAcnU,GAC1B0V,EAAcD,EAAQpc,KACpBsc,EAAiBxL,GAAa5G,KAAKkS,EAAQ5N,SAASkG,YACpDhF,EAAuD0M,EAAvD1M,aAAcyK,EAAyCiC,EAAzCjC,iBAAkBC,EAAuBgC,EAAvBhC,mBAKtC,SAAS/V,IACP6X,GAAeA,IACfC,GAAiBA,IAEjBC,EAAQ1B,aAAe0B,EAAQ1B,YAAY6B,YAAYR,GAEvDK,EAAQI,QAAUJ,EAAQI,OAAOC,oBAAoB,QAASV,EAChE,CAEA,IAAInV,EAAU,IAAIiV,eAOlB,SAASa,IACP,GAAK9V,EAAL,CAIA,IAAM+V,EAAkB7L,GAAa5G,KACnC,0BAA2BtD,GAAWA,EAAQgW,yBAehD5H,GACE,SAAkB3T,GAChB4T,EAAQ5T,GACRgD,GACF,EACA,SAAiB8N,GACf+C,EAAO/C,GACP9N,GACD,EAjBc,CACfrE,KAJC0P,GAAiC,SAAjBA,GAA4C,SAAjBA,EAExC9I,EAAQC,SADRD,EAAQiW,aAIZ3V,OAAQN,EAAQM,OAChB4V,WAAYlW,EAAQkW,WACpBtO,QAASmO,EACThW,OAAAA,EACAC,QAAAA,IAgBFA,EAAU,IA/BV,CAgCF,CAgGA,GAxIAA,EAAQmW,KAAKX,EAAQ/L,OAAO7K,cAAe4W,EAAQhR,KAAK,GAGxDxE,EAAQiJ,QAAUuM,EAAQvM,QAuCtB,cAAejJ,EAEjBA,EAAQ8V,UAAYA,EAGpB9V,EAAQoW,mBAAqB,WACtBpW,GAAkC,IAAvBA,EAAQqW,aASH,IAAnBrW,EAAQM,QACNN,EAAQsW,aAAwD,IAAzCtW,EAAQsW,YAAYnZ,QAAQ,WAMvD3D,WAAWsc,IAKf9V,EAAQuW,QAAU,WACXvW,IAILsO,EAAO,IAAI3O,GAAW,kBAAmBA,GAAW2B,aAAcvB,EAAQC,IAG1EA,EAAU,OAIZA,EAAQwW,QAAU,SAAqB3F,GAIrC,IAAM4F,EAAM5F,GAASA,EAAMhR,QAAUgR,EAAMhR,QAAU,gBAC/C0L,EAAM,IAAI5L,GAAW8W,EAAK9W,GAAW6B,YAAazB,EAAQC,GAEhEuL,EAAIsF,MAAQA,GAAS,KACrBvC,EAAO/C,GACPvL,EAAU,MAIZA,EAAQ0W,UAAY,WAClB,IAAIC,EAAsBnB,EAAQvM,QAC9B,cAAgBuM,EAAQvM,QAAU,cAClC,mBACExB,EAAe+N,EAAQ/N,cAAgBhC,GACzC+P,EAAQmB,sBACVA,EAAsBnB,EAAQmB,qBAEhCrI,EACE,IAAI3O,GACFgX,EACAlP,EAAa7B,oBAAsBjG,GAAW4B,UAAY5B,GAAW2B,aACrEvB,EACAC,IAKJA,EAAU,WAIInK,IAAhB4f,GAA6BC,EAAezN,eAAe,MAGvD,qBAAsBjI,GACxBc,GAAMxK,QAAQof,EAAelJ,SAAU,SAA0B9X,EAAKmC,GACpEmJ,EAAQ4W,iBAAiB/f,EAAKnC,EAChC,GAIGoM,GAAMtM,YAAYghB,EAAQnC,mBAC7BrT,EAAQqT,kBAAoBmC,EAAQnC,iBAIlCvK,GAAiC,SAAjBA,IAClB9I,EAAQ8I,aAAe0M,EAAQ1M,cAI7B0K,EAAoB,CAAA,IAC6DqD,EAAA7gB,EAA9CwY,GAAqBgF,GAAoB,GAAK,GAAlF6B,EAAiBwB,EAAA,GAAEtB,EAAasB,EAAA,GACjC7W,EAAQ/G,iBAAiB,WAAYoc,EACvC,CAGA,GAAI9B,GAAoBvT,EAAQ8W,OAAQ,CAAA,IACiCC,EAAA/gB,EAAtCwY,GAAqB+E,GAAiB,GAAtE6B,EAAe2B,EAAA,GAAEzB,EAAWyB,EAAA,GAE7B/W,EAAQ8W,OAAO7d,iBAAiB,WAAYmc,GAE5CpV,EAAQ8W,OAAO7d,iBAAiB,UAAWqc,EAC7C,EAEIE,EAAQ1B,aAAe0B,EAAQI,UAGjCT,EAAa,SAAC6B,GACPhX,IAGLsO,GAAQ0I,GAAUA,EAAO7iB,KAAO,IAAIga,GAAc,KAAMpO,EAAQC,GAAWgX,GAC3EhX,EAAQiX,QACRjX,EAAU,OAGZwV,EAAQ1B,aAAe0B,EAAQ1B,YAAYoD,UAAU/B,GACjDK,EAAQI,SACVJ,EAAQI,OAAOuB,QACXhC,IACAK,EAAQI,OAAO3c,iBAAiB,QAASkc,KAIjD,IC3MgC3Q,EAC9BL,ED0MIgN,GC3M0B3M,ED2MDgR,EAAQhR,KC1MrCL,EAAQ,4BAA4BrG,KAAK0G,KAC9BL,EAAM,IAAO,ID2MtBgN,IAAsD,IAA1CnK,GAASd,UAAU/I,QAAQgU,GACzC7C,EACE,IAAI3O,GACF,wBAA0BwR,EAAW,IACrCxR,GAAWiC,gBACX7B,IAONC,EAAQoX,KAAK3B,GAAe,KAC9B,EACF,EEtKF4B,GAnDuB,SAACC,EAASrO,GAC/B,IAAQtS,GAAY2gB,EAAUA,EAAUA,EAAQ3a,OAAO4a,SAAW,IAA1D5gB,OAER,GAAIsS,GAAWtS,EAAQ,CACrB,IAEIwgB,EAFAK,EAAa,IAAIC,gBAIflB,EAAU,SAAUmB,GACxB,IAAKP,EAAS,CACZA,GAAU,EACVxB,IACA,IAAMpK,EAAMmM,aAAkBxZ,MAAQwZ,EAASxc,KAAKwc,OACpDF,EAAWP,MACT1L,aAAe5L,GACX4L,EACA,IAAI4C,GAAc5C,aAAerN,MAAQqN,EAAI1L,QAAU0L,GAE/D,GAGEuE,EACF7G,GACAzP,WAAW,WACTsW,EAAQ,KACRyG,EAAQ,IAAI5W,GAAU,cAAA7G,OAAemQ,EAAO,eAAetJ,GAAW4B,WACvE,EAAE0H,GAEC0M,EAAc,WACd2B,IACFxH,GAASK,aAAaL,GACtBA,EAAQ,KACRwH,EAAQhhB,QAAQ,SAACsf,GACfA,EAAOD,YACHC,EAAOD,YAAYY,GACnBX,EAAOC,oBAAoB,QAASU,EAC1C,GACAe,EAAU,OAIdA,EAAQhhB,QAAQ,SAACsf,GAAM,OAAKA,EAAO3c,iBAAiB,QAASsd,KAE7D,IAAQX,EAAW4B,EAAX5B,OAIR,OAFAA,EAAOD,YAAc,WAAA,OAAM7U,GAAMrH,KAAKkc,EAAY,EAE3CC,CACT,CACF,ECrDa+B,GAAWC,IAAAnZ,EAAG,SAAdkZ,EAAyBE,EAAOC,GAAS,IAAA9gB,EAAA+gB,EAAAC,EAAA,OAAAJ,IAAA3L,EAAA,SAAAgM,GAAA,cAAAA,EAAA7M,GAAA,KAAA,EAC1B,GAAtBpU,EAAM6gB,EAAMK,WAEXJ,KAAa9gB,EAAM8gB,GAAS,CAAAG,EAAA7M,EAAA,EAAA,KAAA,CAC/B,OAD+B6M,EAAA7M,EAAA,EACzByM,EAAK,KAAA,EAAA,OAAAI,EAAAxc,EAAA,GAAA,KAAA,EAITsc,EAAM,EAAC,KAAA,EAAA,KAGJA,EAAM/gB,GAAG,CAAAihB,EAAA7M,EAAA,EAAA,KAAA,CAEd,OADA4M,EAAMD,EAAMD,EAAUG,EAAA7M,EAAA,EAChByM,EAAM7jB,MAAM+jB,EAAKC,GAAI,KAAA,EAC3BD,EAAMC,EAAIC,EAAA7M,EAAA,EAAA,MAAA,KAAA,EAAA,OAAA6M,EAAAxc,EAAA,GAAA,EAdDkc,EAAW,GAkBXQ,GAAS,WAAA,IAAA1L,EAAA2L,EAAAR,IAAAnZ,EAAG,SAAA4Z,EAAiBC,EAAUR,GAAS,IAAAS,EAAAC,EAAAC,EAAAlb,EAAA0N,EAAA4M,EAAAa,EAAA,OAAAd,IAAA3L,EAAA,SAAA0M,GAAA,cAAAA,EAAAC,EAAAD,EAAAvN,GAAA,KAAA,EAAAmN,GAAA,EAAAC,GAAA,EAAAG,EAAAC,EAAA,EAAArb,EAAAsb,EACjCC,GAAWR,IAAS,KAAA,EAAA,OAAAK,EAAAvN,EAAA,EAAA2N,EAAAxb,EAAAC,QAAA,KAAA,EAAA,KAAA+a,IAAAtN,EAAA0N,EAAAK,GAAAvb,MAAA,CAAAkb,EAAAvN,EAAA,EAAA,KAAA,CAC5C,OADeyM,EAAK5M,EAAAxQ,MACpBke,EAAAM,EAAAC,EAAAC,EAAAN,EAAOlB,GAAYE,EAAOC,MAAU,GAAA,KAAA,EAAAS,GAAA,EAAAI,EAAAvN,EAAA,EAAA,MAAA,KAAA,EAAAuN,EAAAvN,EAAA,EAAA,MAAA,KAAA,EAAAuN,EAAAC,EAAA,EAAAF,EAAAC,EAAAK,EAAAR,GAAA,EAAAC,EAAAC,EAAA,KAAA,EAAA,GAAAC,EAAAC,EAAA,EAAAD,EAAAC,EAAA,GAAAL,GAAA,MAAAhb,EAAA,OAAA,CAAAob,EAAAvN,EAAA,EAAA,KAAA,CAAA,OAAAuN,EAAAvN,EAAA,EAAA2N,EAAAxb,EAAA,UAAA,KAAA,EAAA,GAAAob,EAAAC,EAAA,GAAAJ,EAAA,CAAAG,EAAAvN,EAAA,GAAA,KAAA,CAAA,MAAAqN,EAAA,KAAA,GAAA,OAAAE,EAAAnN,EAAA,GAAA,KAAA,GAAA,OAAAmN,EAAAnN,EAAA,GAAA,KAAA,GAAA,OAAAmN,EAAAld,EAAA,GAAA,EAAA4c,EAAA,KAAA,CAAA,CAAA,EAAA,CAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,KAEvC,IAAA,OAAA,SAJqBe,EAAAC,GAAA,OAAA5M,EAAAxZ,MAAAiI,KAAAhI,UAAA,CAAA,CAAA,GAMhB4lB,GAAU,WAAA,IAAA7d,EAAAmd,EAAAR,IAAAnZ,EAAG,SAAA6a,EAAiBC,GAAM,IAAAC,EAAAC,EAAAhc,EAAAhD,EAAA,OAAAmd,IAAA3L,EAAA,SAAAyN,GAAA,cAAAA,EAAAd,EAAAc,EAAAtO,GAAA,KAAA,EAAA,IACpCmO,EAAO9lB,OAAOkmB,eAAc,CAAAD,EAAAtO,EAAA,EAAA,KAAA,CAC9B,OAAAsO,EAAAT,EAAAC,EAAAC,EAAAN,EAAOU,KAAM,GAAA,KAAA,EAAA,OAAAG,EAAAje,EAAA,GAAA,KAAA,EAIT+d,EAASD,EAAOK,YAAWF,EAAAd,EAAA,EAAA,KAAA,EAAA,OAAAc,EAAAtO,EAAA,EAAA2N,EAGCS,EAAO1H,QAAM,KAAA,EAAxB,GAAwB2H,EAAAC,EAAAV,EAAnCvb,EAAIgc,EAAJhc,KAAMhD,EAAKgf,EAALhf,OACVgD,EAAI,CAAAic,EAAAtO,EAAA,EAAA,KAAA,CAAA,OAAAsO,EAAAje,EAAA,EAAA,GAAA,KAAA,EAGR,OAHQie,EAAAtO,EAAA,EAGF3Q,EAAK,KAAA,EAAAif,EAAAtO,EAAA,EAAA,MAAA,KAAA,EAAA,OAAAsO,EAAAd,EAAA,EAAAc,EAAAtO,EAAA,EAAA2N,EAGPS,EAAOxC,UAAQ,KAAA,EAAA,OAAA0C,EAAAlO,EAAA,GAAA,KAAA,GAAA,OAAAkO,EAAAje,EAAA,GAAA,EAAA6d,EAAA,KAAA,CAAA,CAAA,EAAA,CAAA,EAAA,KAExB,IAAA,OAlBKR,SAAUe,GAAA,OAAA5e,EAAAhI,MAAAiI,KAAAhI,UAAA,CAAA,CAAA,GAoBH4mB,GAAc,SAACP,EAAQzB,EAAWiC,EAAYC,GACzD,IAGIvc,EAHEjK,EAAW2kB,GAAUoB,EAAQzB,GAE/B7I,EAAQ,EAERgL,EAAY,SAAC1f,GACVkD,IACHA,GAAO,EACPuc,GAAYA,EAASzf,KAIzB,OAAO,IAAI2f,eACT,CACQC,KAAAA,SAAK3C,GAAY,OAAA4C,EAAAxC,IAAAnZ,WAAA4b,IAAA,IAAAC,EAAAC,EAAA9f,EAAAzD,EAAAwjB,EAAAC,EAAA,OAAA7C,IAAA3L,EAAA,SAAAyO,GAAA,cAAAA,EAAA9B,EAAA8B,EAAAtP,GAAA,KAAA,EAAA,OAAAsP,EAAA9B,EAAA,EAAA8B,EAAAtP,EAAA,EAEW5X,EAASgK,OAAM,KAAA,EAA1B,GAA0B8c,EAAAI,EAAA1B,EAArCvb,EAAI6c,EAAJ7c,KAAMhD,EAAK6f,EAAL7f,OAEVgD,EAAI,CAAAid,EAAAtP,EAAA,EAAA,KAAA,CAEa,OADnB6O,IACAzC,EAAWmD,QAAQD,EAAAjf,EAAA,GAAA,KAAA,EAIjBzE,EAAMyD,EAAMyd,WACZ6B,IACES,EAAevL,GAASjY,EAC5B+iB,EAAWS,IAEbhD,EAAWoD,QAAQ,IAAIpjB,WAAWiD,IAAQigB,EAAAtP,EAAA,EAAA,MAAA,KAAA,EAE3B,MAF2BsP,EAAA9B,EAAA,EAAA6B,EAAAC,EAAA1B,EAE1CiB,EAASQ,GAAMA,EAAA,KAAA,EAAA,OAAAC,EAAAjf,EAAA,GAAA,EAAA4e,EAAA,KAAA,CAAA,CAAA,EAAA,IAAA,GAjBID,EAoBtB,EACDpD,OAAAA,SAAOU,GAEL,OADAuC,EAAUvC,GACHlkB,EAAe,QACxB,GAEF,CACEqnB,cAAe,GAGrB,EJxEQjmB,GAAekM,GAAflM,WAEFkmB,GAA8C,CAClDC,SADsBtO,GAGpB3L,GAAMpL,QAHiBqlB,QAEzBC,SAF0CvO,GAARuO,UAKpCC,GAAwCna,GAAMpL,OAAtCwkB,GAAce,GAAdf,eAAgBgB,GAAWD,GAAXC,YAElB1Y,GAAO,SAACzP,GACZ,IAAI,IAAAsZ,IAAAA,EAAAnZ,UAAAyD,OADeuZ,MAAI3b,MAAA8X,EAAAA,EAAAA,OAAAnV,EAAA,EAAAA,EAAAmV,EAAAnV,IAAJgZ,EAAIhZ,EAAAhE,GAAAA,UAAAgE,GAErB,QAASnE,EAAEE,WAAA,EAAIid,EAChB,CAAC,MAAO3V,GACP,OAAO,CACT,CACF,EAEM4gB,GAAU,SAAC5S,GASf,IAAA6S,EARA7S,EAAMzH,GAAM9F,MAAMjH,KAChB,CACEqH,eAAe,GAEjB0f,GACAvS,GAGa8S,EAAQD,EAAfE,MAAiBP,EAAOK,EAAPL,QAASC,EAAQI,EAARJ,SAC5BO,EAAmBF,EAAWzmB,GAAWymB,GAA6B,mBAAVC,MAC5DE,EAAqB5mB,GAAWmmB,GAChCU,EAAsB7mB,GAAWomB,GAEvC,IAAKO,EACH,OAAO,EAGT,IAMSxW,EANH2W,EAA4BH,GAAoB3mB,GAAWslB,IAE3DyB,EACJJ,IACwB,mBAAhBL,IAEDnW,EAED,IAAImW,GAFS,SAACpnB,GAAG,OACfiR,EAAQf,OAAOlQ,EAAI,GACH,WAAA,IAAAmH,EAAAmf,EAAAxC,IAAAnZ,EACpB,SAAA4Z,EAAOvkB,GAAG,IAAA4kB,EAAA+B,EAAA,OAAA7C,IAAA3L,EAAA,SAAAgM,GAAA,cAAAA,EAAA7M,GAAA,KAAA,EAAmB,OAAnBsN,EAASlhB,WAAUygB,EAAA7M,EAAA,EAAO,IAAI2P,EAAQjnB,GAAK8nB,cAAa,KAAA,EAAA,OAAAnB,EAAAxC,EAAAe,EAAAf,EAAAxc,EAAAid,EAAAA,IAAAA,EAAA+B,IAAA,EAAApC,EAAC,IAAA,OAAA,SAAAe,GAAA,OAAAne,EAAAhI,MAAAiI,KAAAhI,UAAA,CAAC,KAEpE2oB,EACJL,GACAE,GACAlZ,GAAK,WACH,IAAIsZ,GAAiB,EAEfC,EAAiB,IAAIhB,EAAQ/T,GAASJ,OAAQ,CAClDoV,KAAM,IAAI9B,GACVzQ,OAAQ,OACR,UAAIwS,GAEF,OADAH,GAAiB,EACV,MACT,IACClU,QAAQsU,IAAI,gBAEf,OAAOJ,IAAmBC,CAC5B,GAEII,EACJV,GACAC,GACAlZ,GAAK,WAAA,OAAM1B,GAAM5K,iBAAiB,IAAI8kB,EAAS,IAAIgB,QAE/CI,EAAY,CAChB7C,OAAQ4C,GAA2B,SAACE,GAAG,OAAKA,EAAIL,IAAI,GAGtDT,GAEI,CAAC,OAAQ,cAAe,OAAQ,WAAY,UAAUjlB,QAAQ,SAACnC,IAC5DioB,EAAUjoB,KACRioB,EAAUjoB,GAAQ,SAACkoB,EAAKtc,GACvB,IAAI0J,EAAS4S,GAAOA,EAAIloB,GAExB,GAAIsV,EACF,OAAOA,EAAO1V,KAAKsoB,GAGrB,MAAM,IAAI1c,GAAU7G,kBAAAA,OACA3E,EAClBwL,sBAAAA,GAAWmC,gBACX/B,EAEJ,EACJ,GAGJ,IAAMuc,EAAa,WAAA,IAAA9O,EAAA4M,EAAAxC,IAAAnZ,EAAG,SAAA6a,EAAO0C,GAAI,IAAAO,EAAA,OAAA3E,IAAA3L,EAAA,SAAA0M,GAAA,cAAAA,EAAAvN,GAAA,KAAA,EAAA,GACnB,MAAR4Q,EAAY,CAAArD,EAAAvN,EAAA,EAAA,KAAA,CAAA,OAAAuN,EAAAld,EAAA,EACP,GAAC,KAAA,EAAA,IAGNqF,GAAM1L,OAAO4mB,GAAK,CAAArD,EAAAvN,EAAA,EAAA,KAAA,CAAA,OAAAuN,EAAAld,EACbugB,EAAAA,EAAKQ,MAAI,KAAA,EAAA,IAGd1b,GAAM5B,oBAAoB8c,GAAK,CAAArD,EAAAvN,EAAA,EAAA,KAAA,CAI/B,OAHImR,EAAW,IAAIxB,EAAQ/T,GAASJ,OAAQ,CAC5C6C,OAAQ,OACRuS,KAAAA,IACArD,EAAAvN,EAAA,EACYmR,EAASX,cAAa,KAAA,EAYN,KAAA,EAAA,OAAAjD,EAAAld,EAAA,EAAAkd,EAAAK,EAAEd,YAZgB,KAAA,EAAA,IAG9CpX,GAAM7G,kBAAkB+hB,KAASlb,GAAMjM,cAAcmnB,GAAK,CAAArD,EAAAvN,EAAA,EAAA,KAAA,CAAA,OAAAuN,EAAAld,EACrDugB,EAAAA,EAAK9D,YAAU,KAAA,EAKvB,GAFGpX,GAAMhL,kBAAkBkmB,KAC1BA,GAAc,KAGZlb,GAAMhM,SAASknB,GAAK,CAAArD,EAAAvN,EAAA,EAAA,KAAA,CAAA,OAAAuN,EAAAvN,EAAA,EACRuQ,EAAWK,GAAiB,KAAA,EAAA,OAAArD,EAAAld,EAAA,GAAA,EAAA6d,EAE7C,IAAA,OA5BKgD,SAAajD,GAAA,OAAA7L,EAAAva,MAAAiI,KAAAhI,UAAA,EAAA,GA8BbupB,EAAiB,WAAA,IAAAC,EAAAtC,EAAAxC,IAAAnZ,EAAG,SAAA4b,EAAOzS,EAASoU,GAAI,IAAArlB,EAAA,OAAAihB,IAAA3L,EAAA,SAAAyN,GAAA,UAAA,IAAAA,EAAAtO,EACmB,OAAzDzU,EAASmK,GAAMhC,eAAe8I,EAAQ+U,oBAAmBjD,EAAAje,EAAA,EAE9C,MAAV9E,EAAiB2lB,EAAcN,GAAQrlB,EAAM,EAAA0jB,EACrD,IAAA,OAAA,SAJsBR,EAAA+C,GAAA,OAAAF,EAAAzpB,MAAAiI,KAAAhI,UAAA,EAAA,GAMvB,OAAA,WAAA,IAAAgG,EAAAkhB,EAAAxC,IAAAnZ,EAAO,SAAAoe,EAAO9c,GAAM,IAAA+c,EAAAtY,EAAAiF,EAAArQ,EAAAwc,EAAA9B,EAAA7K,EAAAuK,EAAAD,EAAAzK,EAAAlB,EAAAmV,EAAA1J,EAAA2J,EAAAC,EAAAC,EAAAld,EAAA2V,EAAAwH,EAAAZ,EAAAa,EAAAC,EAAAC,EAAAvD,EAAAwD,EAAAC,EAAAC,EAAAxd,EAAAyd,EAAAhb,EAAAib,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAvG,IAAA3L,EAAA,SAAAyO,GAAA,cAAAA,EAAA9B,EAAA8B,EAAAtP,GAAA,KAAA,EAyCG,GAzCH0R,EAcd5I,GAAcnU,GAZhByE,EAAGsY,EAAHtY,IACAiF,EAAMqT,EAANrT,OACArQ,EAAI0jB,EAAJ1jB,KACAwc,EAAMkH,EAANlH,OACA9B,EAAWgJ,EAAXhJ,YACA7K,EAAO6T,EAAP7T,QACAuK,EAAkBsJ,EAAlBtJ,mBACAD,EAAgBuJ,EAAhBvJ,iBACAzK,EAAYgU,EAAZhU,aACAlB,EAAOkV,EAAPlV,QAAOmV,EAAAD,EACPzJ,gBAAAA,OAAkB,IAAH0J,EAAG,cAAaA,EAC/BC,EAAYF,EAAZE,aAGEC,EAAS5B,GAAYC,MAEzBxS,EAAeA,GAAgBA,EAAe,IAAI7U,cAAgB,OAE9DipB,EAAiBkB,GACnB,CAACxI,EAAQ9B,GAAeA,EAAYuK,iBACpCpV,GAGEjJ,EAAU,KAER2V,EACJuH,GACAA,EAAevH,aACd,WACCuH,EAAevH,eACf+E,EAAA9B,EAAA,IAAAqF,EAMA1K,GACAsI,GACW,QAAXpS,GACW,SAAXA,GAAiB,CAAAiR,EAAAtP,EAAA,EAAA,KAAA,CAAA,OAAAsP,EAAAtP,EAAA,EACaqR,EAAkB7U,EAASxO,GAAK,KAAA,EAAA8kB,EAA7Df,EAAoBzC,EAAA1B,EAAAiF,EAA+C,IAA/CC,EAAgD,KAAA,EAAA,IAAAD,EAAA,CAAAvD,EAAAtP,EAAA,EAAA,KAAA,CAEjEmR,EAAW,IAAIxB,EAAQvW,EAAK,CAC9BiF,OAAQ,OACRuS,KAAM5iB,EACN6iB,OAAQ,SAKNnb,GAAMhH,WAAWV,KAAUgkB,EAAoBb,EAAS3U,QAAQ8E,IAAI,kBACtE9E,EAAQK,eAAemV,GAGrBb,EAASP,OAAMqB,EACWvM,GAC1BqM,EACA3O,GAAqBwC,GAAeuC,KACrC+J,EAAAtnB,EAAAqnB,EAAA,GAHMtD,EAAUuD,EAAA,GAAEC,EAAKD,EAAA,GAKxBlkB,EAAO0gB,GAAYyC,EAASP,KAjMX,MAiMqCjC,EAAYwD,IACnE,KAAA,EAqB+D,OAlB7Dzc,GAAMhM,SAASue,KAClBA,EAAkBA,EAAkB,UAAY,QAK5CmK,EAAyBhC,GAAsB,gBAAiBT,EAAQznB,UAExEmqB,EAAe1W,EAAAA,KAChBiW,GAAY,CAAA,EAAA,CACfpH,OAAQsH,EACRzT,OAAQA,EAAO7K,cACfgJ,QAASA,EAAQkG,YAAYtB,SAC7BwP,KAAM5iB,EACN6iB,OAAQ,OACRqC,YAAad,EAAyBnK,OAAkBxd,IAG1DmK,EAAUwb,GAAsB,IAAIT,EAAQvW,EAAKiZ,GAAiB/C,EAAAtP,EAAA,EAE5CoQ,EAClByB,EAAOjd,EAASgd,GAChBC,EAAOzY,EAAKiZ,GAAgB,KAAA,EA+BM,OAjClCxd,EAAQya,EAAA1B,EAIN0E,EACJvB,IAA4C,WAAjBrT,GAA8C,aAAjBA,GAEtDqT,IAA2B3I,GAAuBkK,GAAoB/H,KAClEjT,EAAU,CAAA,EAEhB,CAAC,SAAU,aAAc,WAAWpM,QAAQ,SAACqB,GAC3C+K,EAAQ/K,GAAQsI,EAAStI,EAC3B,GAEMgmB,EAAwB7c,GAAMhC,eAAemB,EAAS2H,QAAQ8E,IAAI,mBAAkBkR,EAGvFpK,GACC1C,GACE6M,EACAnP,GAAqBwC,GAAewC,IAAqB,KAE7D,GAAEqK,EAAA7nB,EAAA4nB,EANG7D,GAAAA,EAAU8D,EAAEN,GAAAA,EAAKM,EAAA,GAQxB5d,EAAW,IAAI+a,EACblB,GAAY7Z,EAAS+b,KAlPJ,MAkP8BjC,EAAY,WACzDwD,GAASA,IACT5H,GAAeA,MAEjBjT,IAIJoG,EAAeA,GAAgB,OAAO4R,EAAAtP,EAAA,EAEbgR,EAAUtb,GAAM7J,QAAQmlB,EAAWtT,IAAiB,QAC3E7I,EACAF,GACD,KAAA,EAEiD,OAL9Cie,EAAYtD,EAAA1B,GAKf0E,GAAoB/H,GAAeA,IAAc+E,EAAAtP,EAAA,EAErC,IAAI8J,QAAQ,SAAC7G,EAASC,GACjCF,GAAOC,EAASC,EAAQ,CACtBlV,KAAM4kB,EACNpW,QAASsC,GAAa5G,KAAKrD,EAAS2H,SACpCtH,OAAQL,EAASK,OACjB4V,WAAYjW,EAASiW,WACrBnW,OAAAA,EACAC,QAAAA,GAEJ,GAAE,KAAA,EAAA,OAAA0a,EAAAjf,EAAAif,EAAAA,EAAA1B,GAAA,KAAA,EAE2B,GAF3B0B,EAAA9B,EAAA,EAAAuF,EAAAzD,EAAA1B,EAEFrD,GAAeA,KAEXwI,GAAoB,cAAbA,EAAIhmB,OAAwB,qBAAqBqK,KAAK2b,EAAIte,SAAQ,CAAA6a,EAAAtP,EAAA,EAAA,KAAA,CAAA,MACrE/X,OAAOkJ,OACX,IAAIoD,GACF,gBACAA,GAAW6B,YACXzB,EACAC,EACAme,GAAOA,EAAIle,UAEb,CACEiB,MAAOid,EAAIjd,OAAKid,IAEnB,KAAA,EAAA,MAGGxe,GAAW2D,KAAI6a,EAAMA,GAAOA,EAAIre,KAAMC,EAAQC,EAASme,GAAOA,EAAIle,UAAS,KAAA,GAAA,OAAAya,EAAAjf,EAAA,GAAA,EAAAohB,EAAA,KAAA,CAAA,CAAA,EAAA,IAEpF,IAAA,OAAA,SAAA0B,GAAA,OAAArlB,EAAAjG,MAAAiI,KAAAhI,UAAA,CAAA,CA9JD,EA+JF,EAEMsrB,GAAY,IAAIC,IAETC,GAAW,SAAC3e,GAWvB,IAVA,IAME4e,EACArf,EAPEiJ,EAAOxI,GAAUA,EAAOwI,KAAQ,CAAA,EAC5B+S,EAA6B/S,EAA7B+S,MACFsD,EAAQ,CADuBrW,EAAtBwS,QAAsBxS,EAAbyS,SACUM,GAGhC9kB,EADQooB,EAAMjoB,OAIdV,EAAMuoB,GAEDhoB,KACLmoB,EAAOC,EAAMpoB,QAGFX,KAFXyJ,EAASrJ,EAAIyW,IAAIiS,KAEO1oB,EAAIgI,IAAI0gB,EAAOrf,EAAS9I,EAAI,IAAIioB,IAAQtD,GAAQ5S,IAExEtS,EAAMqJ,EAGR,OAAOA,CACT,EAEgBof,KK5ThB,IAAMG,GAAgB,CACpBC,KCfa,KDgBbC,IAAK/J,GACLsG,MAAO,CACL5O,IAAKsS,KAKJnlB,GAACvD,QAAQuoB,GAAe,SAAC9rB,EAAI0H,GAChC,GAAI1H,EAAI,CACN,IACEM,OAAOsI,eAAe5I,EAAI,OAAQ,CAAE0H,MAAAA,GACrC,CAAC,MAAOF,GACP,CAEFlH,OAAOsI,eAAe5I,EAAI,cAAe,CAAE0H,MAAAA,GAC7C,CACF,GAQA,IAAMwkB,GAAe,SAACvH,GAAM,MAAA5e,KAAAA,OAAU4e,EAAM,EAQtCwH,GAAmB,SAACxX,GAAO,OAC/B5G,GAAMlM,WAAW8S,IAAwB,OAAZA,IAAgC,IAAZA,CAAiB,EAmErD,IAAAyX,GAAA,CAKbC,WA5DF,SAAoBD,EAAUpf,GAS5B,IANA,IACIsf,EACA3X,EAFI/Q,GAFRwoB,EAAWre,GAAMxM,QAAQ6qB,GAAYA,EAAW,CAACA,IAEzCxoB,OAIF2oB,EAAkB,CAAA,EAEf9oB,EAAI,EAAGA,EAAIG,EAAQH,IAAK,CAE/B,IAAI+O,OAAE,EAIN,GAFAmC,EAHA2X,EAAgBF,EAAS3oB,IAKpB0oB,GAAiBG,SAGJxpB,KAFhB6R,EAAUmX,IAAetZ,EAAKtI,OAAOoiB,IAAgBprB,gBAGnD,MAAM,IAAI0L,GAAU,oBAAA7G,OAAqByM,QAI7C,GAAImC,IAAY5G,GAAMlM,WAAW8S,KAAaA,EAAUA,EAAQgF,IAAI3M,KAClE,MAGFuf,EAAgB/Z,GAAM,IAAM/O,GAAKkR,CACnC,CAEA,IAAKA,EAAS,CACZ,IAAM6X,EAAUlsB,OAAOiU,QAAQgY,GAAiBrpB,IAC9C,SAAAwW,GAAA,IAAAxR,EAAAjF,EAAAyW,EAAA,GAAElH,EAAEtK,EAAA,GAAEukB,EAAKvkB,EAAA,GAAA,MACT,WAAAnC,OAAWyM,EACVia,OAAU,IAAVA,EAAkB,sCAAwC,gCAAgC,GAG3FrU,EAAIxU,EACJ4oB,EAAQ5oB,OAAS,EACf,YAAc4oB,EAAQtpB,IAAIgpB,IAAc3c,KAAK,MAC7C,IAAM2c,GAAaM,EAAQ,IAC7B,0BAEJ,MAAM,IAAI5f,GACR,wDAA0DwL,EAC1D,kBAEJ,CAEA,OAAOzD,CACT,EAgBEyX,SAAUN,IEhHZ,SAASY,GAA6B1f,GAKpC,GAJIA,EAAO+T,aACT/T,EAAO+T,YAAY4L,mBAGjB3f,EAAO6V,QAAU7V,EAAO6V,OAAOuB,QACjC,MAAM,IAAIhJ,GAAc,KAAMpO,EAElC,CASe,SAAS4f,GAAgB5f,GActC,OAbA0f,GAA6B1f,GAE7BA,EAAO6H,QAAUsC,GAAa5G,KAAKvD,EAAO6H,SAG1C7H,EAAO3G,KAAOwU,GAAc7Z,KAAKgM,EAAQA,EAAO4H,mBAES,IAArD,CAAC,OAAQ,MAAO,SAASxK,QAAQ4C,EAAO0J,SAC1C1J,EAAO6H,QAAQK,eAAe,qCAAqC,GAGrDkX,GAASC,WAAWrf,EAAO2H,SAAWF,GAASE,QAAS3H,EAEjE2H,CAAQ3H,GAAQN,KACrB,SAA6BQ,GAQ3B,OAPAwf,GAA6B1f,GAG7BE,EAAS7G,KAAOwU,GAAc7Z,KAAKgM,EAAQA,EAAO6I,kBAAmB3I,GAErEA,EAAS2H,QAAUsC,GAAa5G,KAAKrD,EAAS2H,SAEvC3H,CACT,EACA,SAA4ByX,GAe1B,OAdK3J,GAAS2J,KACZ+H,GAA6B1f,GAGzB2X,GAAUA,EAAOzX,WACnByX,EAAOzX,SAAS7G,KAAOwU,GAAc7Z,KACnCgM,EACAA,EAAO6I,kBACP8O,EAAOzX,UAETyX,EAAOzX,SAAS2H,QAAUsC,GAAa5G,KAAKoU,EAAOzX,SAAS2H,WAIzDsN,QAAQ5G,OAAOoJ,EACxB,EAEJ,CC5EO,IAAMkI,GAAU,SCKjBC,GAAa,CAAA,EAGnB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAUvpB,QAAQ,SAACnC,EAAMqC,GAC7EqpB,GAAW1rB,GAAQ,SAAmBN,GACpC,OAAOQ,EAAOR,KAAUM,GAAQ,KAAOqC,EAAI,EAAI,KAAO,KAAOrC,EAEjE,GAEA,IAAM2rB,GAAqB,CAAA,EAWjBC,GAACtY,aAAe,SAAsBuY,EAAWC,EAASpgB,GAClE,SAASqgB,EAAcC,EAAKC,GAC1B,MACE,WACAR,GACA,0BACAO,EACA,IACAC,GACCvgB,EAAU,KAAOA,EAAU,GAEhC,CAGA,OAAO,SAACpF,EAAO0lB,EAAKE,GAClB,IAAkB,IAAdL,EACF,MAAM,IAAIrgB,GACRugB,EAAcC,EAAK,qBAAuBF,EAAU,OAASA,EAAU,KACvEtgB,GAAW+B,gBAef,OAXIue,IAAYH,GAAmBK,KACjCL,GAAmBK,IAAO,EAE1BG,QAAQC,KACNL,EACEC,EACA,+BAAiCF,EAAU,8CAK1CD,GAAYA,EAAUvlB,EAAO0lB,EAAKE,GAE7C,EAEAR,GAAWW,SAAW,SAAkBC,GACtC,OAAO,SAAChmB,EAAO0lB,GAGb,OADAG,QAAQC,KAAI,GAAAznB,OAAIqnB,EAAG,gCAAArnB,OAA+B2nB,KAC3C,EAEX,EAsCe,IAAAT,GAAA,CACbU,cA3BF,SAAuBhe,EAASie,EAAQC,GACtC,GAAuB,WAAnBvsB,EAAOqO,GACT,MAAM,IAAI/C,GAAW,4BAA6BA,GAAWyB,sBAI/D,IAFA,IAAMtK,EAAOzD,OAAOyD,KAAK4L,GACrBlM,EAAIM,EAAKH,OACNH,KAAM,GAAG,CACd,IAAM2pB,EAAMrpB,EAAKN,GACXwpB,EAAYW,EAAOR,GACzB,GAAIH,EAAJ,CACE,IAAMvlB,EAAQiI,EAAQyd,GAChB9kB,OAAmBxF,IAAV4E,GAAuBulB,EAAUvlB,EAAO0lB,EAAKzd,GAC5D,IAAe,IAAXrH,EACF,MAAM,IAAIsE,GACR,UAAYwgB,EAAM,YAAc9kB,EAChCsE,GAAWyB,qBAIjB,MACA,IAAqB,IAAjBwf,EACF,MAAM,IAAIjhB,GAAW,kBAAoBwgB,EAAKxgB,GAAW0B,eAE7D,CACF,EAIEwe,WAAAA,IChGIA,GAAaG,GAAUH,WASvBgB,GAAK,WAST,OAAArgB,EARA,SAAAqgB,EAAYC,GAAgB3gB,OAAA0gB,GAC1B3lB,KAAKsM,SAAWsZ,GAAkB,GAClC5lB,KAAK6lB,aAAe,CAClB/gB,QAAS,IAAIiF,GACbhF,SAAU,IAAIgF,GAElB,EAEA,CAAA,CAAApO,IAAA,UAAA4D,OAAAumB,EAAA5G,EAAAxC,IAAAnZ,EAQA,SAAA4Z,EAAc4I,EAAalhB,GAAM,IAAAmhB,EAAA9hB,EAAAsZ,EAAA,OAAAd,IAAA3L,EAAA,SAAAgM,GAAA,cAAAA,EAAAW,EAAAX,EAAA7M,GAAA,KAAA,EAAA,OAAA6M,EAAAW,EAAA,EAAAX,EAAA7M,EAAA,EAEhBlQ,KAAKqhB,SAAS0E,EAAalhB,GAAO,KAAA,EAAA,OAAAkY,EAAAxc,EAAAwc,EAAAA,EAAAe,GAAA,KAAA,EAE/C,GAF+Cf,EAAAW,EAAA,GAAAF,EAAAT,EAAAe,aAE5B9a,MAAO,CACpBgjB,EAAQ,CAAA,EAEZhjB,MAAMijB,kBAAoBjjB,MAAMijB,kBAAkBD,GAAUA,EAAQ,IAAIhjB,MAGlEkB,EAAQ8hB,EAAM9hB,MAAQ8hB,EAAM9hB,MAAMpD,QAAQ,QAAS,IAAM,GAC/D,IACO0c,EAAItZ,MAGEA,IAAUnC,OAAOyb,EAAItZ,OAAOtC,SAASsC,EAAMpD,QAAQ,YAAa,OACzE0c,EAAItZ,OAAS,KAAOA,GAHpBsZ,EAAItZ,MAAQA,CAKf,CAAC,MAAO7E,GACP,CAEJ,CAAC,MAAAme,EAAA,KAAA,EAAA,OAAAT,EAAAxc,EAAA,GAAA,EAAA4c,EAAAnd,KAAA,CAAA,CAAA,EAAA,IAIJ,IAAA,SAzBYke,EAAAC,GAAA,OAAA2H,EAAA/tB,MAAAiI,KAAAhI,UAAA,IAAA,CAAA2D,IAAA,WAAA4D,MA2Bb,SAASwmB,EAAalhB,GAGO,iBAAhBkhB,GACTlhB,EAASA,GAAU,IACZyE,IAAMyc,EAEblhB,EAASkhB,GAAe,GAK1B,IAAAzL,EAFAzV,EAAS2S,GAAYxX,KAAKsM,SAAUzH,GAE5B0H,EAAY+N,EAAZ/N,aAAc0L,EAAgBqC,EAAhBrC,iBAAkBvL,EAAO4N,EAAP5N,aAEnB/R,IAAjB4R,GACFuY,GAAUU,cACRjZ,EACA,CACE/B,kBAAmBma,GAAWpY,aAAaoY,YAC3Cla,kBAAmBka,GAAWpY,aAAaoY,YAC3Cja,oBAAqBia,GAAWpY,aAAaoY,YAC7Cha,gCAAiCga,GAAWpY,aAAaoY,GAAkB,WAE7E,GAIoB,MAApB1M,IACErS,GAAMlM,WAAWue,GACnBpT,EAAOoT,iBAAmB,CACxBvO,UAAWuO,GAGb6M,GAAUU,cACRvN,EACA,CACEnP,OAAQ6b,GAAmB,SAC3Bjb,UAAWib,GAAU,WAEvB,SAM2BhqB,IAA7BkK,EAAOsS,yBAEoCxc,IAApCqF,KAAKsM,SAAS6K,kBACvBtS,EAAOsS,kBAAoBnX,KAAKsM,SAAS6K,kBAEzCtS,EAAOsS,mBAAoB,GAG7B2N,GAAUU,cACR3gB,EACA,CACEqhB,QAASvB,GAAWW,SAAS,WAC7Ba,cAAexB,GAAWW,SAAS,mBAErC,GAIFzgB,EAAO0J,QAAU1J,EAAO0J,QAAUvO,KAAKsM,SAASiC,QAAU,OAAOxV,cAGjE,IAAIqtB,EAAiB1Z,GAAW9G,GAAM9F,MAAM4M,EAAQ2B,OAAQ3B,EAAQ7H,EAAO0J,SAE3E7B,GACE9G,GAAMxK,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,UAAW,SAACmT,UACnE7B,EAAQ6B,EACjB,GAEF1J,EAAO6H,QAAUsC,GAAapR,OAAOwoB,EAAgB1Z,GAGrD,IAAM2Z,EAA0B,GAC5BC,GAAiC,EACrCtmB,KAAK6lB,aAAa/gB,QAAQ1J,QAAQ,SAAoCmrB,GACpE,GAAmC,mBAAxBA,EAAYnc,UAA0D,IAAhCmc,EAAYnc,QAAQvF,GAArE,CAIAyhB,EAAiCA,GAAkCC,EAAYpc,YAE/E,IAAMoC,EAAe1H,EAAO0H,cAAgBhC,GAE1CgC,GAAgBA,EAAa5B,gCAG7B0b,EAAwBG,QAAQD,EAAYtc,UAAWsc,EAAYrc,UAEnEmc,EAAwBhoB,KAAKkoB,EAAYtc,UAAWsc,EAAYrc,SAXlE,CAaF,GAEA,IAKIuc,EALEC,EAA2B,GACjC1mB,KAAK6lB,aAAa9gB,SAAS3J,QAAQ,SAAkCmrB,GACnEG,EAAyBroB,KAAKkoB,EAAYtc,UAAWsc,EAAYrc,SACnE,GAGA,IACIpO,EADAR,EAAI,EAGR,IAAKgrB,EAAgC,CACnC,IAAMK,EAAQ,CAAClC,GAAgB7sB,KAAKoI,WAAOrF,GAO3C,IANAgsB,EAAMH,QAAOzuB,MAAb4uB,EAAiBN,GACjBM,EAAMtoB,KAAItG,MAAV4uB,EAAcD,GACd5qB,EAAM6qB,EAAMlrB,OAEZgrB,EAAUzM,QAAQ7G,QAAQtO,GAEnBvJ,EAAIQ,GACT2qB,EAAUA,EAAQliB,KAAKoiB,EAAMrrB,KAAMqrB,EAAMrrB,MAG3C,OAAOmrB,CACT,CAEA3qB,EAAMuqB,EAAwB5qB,OAI9B,IAFA,IAAIwd,EAAYpU,EAETvJ,EAAIQ,GAAK,CACd,IAAM8qB,EAAcP,EAAwB/qB,KACtCurB,EAAaR,EAAwB/qB,KAC3C,IACE2d,EAAY2N,EAAY3N,EACzB,CAAC,MAAOpT,GACPghB,EAAWhuB,KAAKmH,KAAM6F,GACtB,KACF,CACF,CAEA,IACE4gB,EAAUhC,GAAgB5rB,KAAKmH,KAAMiZ,EACtC,CAAC,MAAOpT,GACP,OAAOmU,QAAQ5G,OAAOvN,EACxB,CAKA,IAHAvK,EAAI,EACJQ,EAAM4qB,EAAyBjrB,OAExBH,EAAIQ,GACT2qB,EAAUA,EAAQliB,KAAKmiB,EAAyBprB,KAAMorB,EAAyBprB,MAGjF,OAAOmrB,CACT,GAAC,CAAA9qB,IAAA,SAAA4D,MAED,SAAOsF,GAGL,OAAOwE,GADU2N,IADjBnS,EAAS2S,GAAYxX,KAAKsM,SAAUzH,IACEoS,QAASpS,EAAOyE,IAAKzE,EAAOsS,mBACxCtS,EAAOsE,OAAQtE,EAAOoT,iBAClD,KA9LA,IAAA6N,CA8LC,CAvMQ,GA2MXlgB,GAAMxK,QAAQ,CAAC,SAAU,MAAO,OAAQ,WAAY,SAA6BmT,GAE/EoX,GAAMvtB,UAAUmW,GAAU,SAAUjF,EAAKzE,GACvC,OAAO7E,KAAK8E,QACV0S,GAAY3S,GAAU,CAAA,EAAI,CACxB0J,OAAAA,EACAjF,IAAAA,EACApL,MAAO2G,GAAU,CAAA,GAAI3G,QAI7B,GAEA0H,GAAMxK,QAAQ,CAAC,OAAQ,MAAO,SAAU,SAA+BmT,GAGrE,SAASuY,EAAmBC,GAC1B,OAAO,SAAoBzd,EAAKpL,EAAM2G,GACpC,OAAO7E,KAAK8E,QACV0S,GAAY3S,GAAU,CAAA,EAAI,CACxB0J,OAAAA,EACA7B,QAASqa,EACL,CACE,eAAgB,uBAElB,CAAE,EACNzd,IAAAA,EACApL,KAAAA,KAIR,CAEAynB,GAAMvtB,UAAUmW,GAAUuY,IAE1BnB,GAAMvtB,UAAUmW,EAAS,QAAUuY,GAAmB,EACxD,GAEA,IAAAE,GAAerB,GC3PTsB,GAAW,WACf,SAAAA,EAAYC,GACV,GADoBjiB,OAAAgiB,GACI,mBAAbC,EACT,MAAM,IAAIzf,UAAU,gCAGtB,IAAI0f,EAEJnnB,KAAKymB,QAAU,IAAIzM,QAAQ,SAAyB7G,GAClDgU,EAAiBhU,CACnB,GAEA,IAAM7V,EAAQ0C,KAGdA,KAAKymB,QAAQliB,KAAK,SAACuX,GACjB,GAAKxe,EAAM8pB,WAAX,CAIA,IAFA,IAAI9rB,EAAIgC,EAAM8pB,WAAW3rB,OAElBH,KAAM,GACXgC,EAAM8pB,WAAW9rB,GAAGwgB,GAEtBxe,EAAM8pB,WAAa,IAPI,CAQzB,GAGApnB,KAAKymB,QAAQliB,KAAO,SAAC8iB,GACnB,IAAIC,EAEEb,EAAU,IAAIzM,QAAQ,SAAC7G,GAC3B7V,EAAM0e,UAAU7I,GAChBmU,EAAWnU,CACb,GAAG5O,KAAK8iB,GAMR,OAJAZ,EAAQ3K,OAAS,WACfxe,EAAMmd,YAAY6M,IAGbb,GAGTS,EAAS,SAAgBviB,EAASE,EAAQC,GACpCxH,EAAMkf,SAKVlf,EAAMkf,OAAS,IAAIvJ,GAActO,EAASE,EAAQC,GAClDqiB,EAAe7pB,EAAMkf,QACvB,EACF,CAEA,OAAAlX,EAAA2hB,EAAA,CAAA,CAAAtrB,IAAA,mBAAA4D,MAGA,WACE,GAAIS,KAAKwc,OACP,MAAMxc,KAAKwc,MAEf,GAEA,CAAA7gB,IAAA,YAAA4D,MAIA,SAAUgU,GACJvT,KAAKwc,OACPjJ,EAASvT,KAAKwc,QAIZxc,KAAKonB,WACPpnB,KAAKonB,WAAW/oB,KAAKkV,GAErBvT,KAAKonB,WAAa,CAAC7T,EAEvB,GAEA,CAAA5X,IAAA,cAAA4D,MAIA,SAAYgU,GACV,GAAKvT,KAAKonB,WAAV,CAGA,IAAM1e,EAAQ1I,KAAKonB,WAAWnlB,QAAQsR,IACvB,IAAX7K,GACF1I,KAAKonB,WAAWG,OAAO7e,EAAO,EAHhC,CAKF,GAAC,CAAA/M,IAAA,gBAAA4D,MAED,WAAgB,IAAAyF,EAAAhF,KACRsc,EAAa,IAAIC,gBAEjBR,EAAQ,SAAC1L,GACbiM,EAAWP,MAAM1L,IAOnB,OAJArQ,KAAKgc,UAAUD,GAEfO,EAAW5B,OAAOD,YAAc,WAAA,OAAMzV,EAAKyV,YAAYsB,EAAM,EAEtDO,EAAW5B,MACpB,IAEA,CAAA,CAAA/e,IAAA,SAAA4D,MAIA,WACE,IAAIuc,EAIJ,MAAO,CACLxe,MAJY,IAAI2pB,EAAY,SAAkBO,GAC9C1L,EAAS0L,CACX,GAGE1L,OAAAA,EAEJ,IAAC,CAxHc,GA2HjB2L,GAAeR,GCtIf,IAAMS,GAAiB,CACrBC,SAAU,IACVC,mBAAoB,IACpBC,WAAY,IACZC,WAAY,IACZC,GAAI,IACJC,QAAS,IACTC,SAAU,IACVC,4BAA6B,IAC7BC,UAAW,IACXC,aAAc,IACdC,eAAgB,IAChBC,YAAa,IACbC,gBAAiB,IACjBC,OAAQ,IACRC,gBAAiB,IACjBC,iBAAkB,IAClBC,MAAO,IACPC,SAAU,IACVC,YAAa,IACbC,SAAU,IACVC,OAAQ,IACRC,kBAAmB,IACnBC,kBAAmB,IACnBC,WAAY,IACZC,aAAc,IACdC,gBAAiB,IACjBC,UAAW,IACXC,SAAU,IACVC,iBAAkB,IAClBC,cAAe,IACfC,4BAA6B,IAC7BC,eAAgB,IAChBC,SAAU,IACVC,KAAM,IACNC,eAAgB,IAChBC,mBAAoB,IACpBC,gBAAiB,IACjBC,WAAY,IACZC,qBAAsB,IACtBC,oBAAqB,IACrBC,kBAAmB,IACnBC,UAAW,IACXC,mBAAoB,IACpBC,oBAAqB,IACrBC,OAAQ,IACRC,iBAAkB,IAClBC,SAAU,IACVC,gBAAiB,IACjBC,qBAAsB,IACtBC,gBAAiB,IACjBC,4BAA6B,IAC7BC,2BAA4B,IAC5BC,oBAAqB,IACrBC,eAAgB,IAChBC,WAAY,IACZC,mBAAoB,IACpBC,eAAgB,IAChBC,wBAAyB,IACzBC,sBAAuB,IACvBC,oBAAqB,IACrBC,aAAc,IACdC,YAAa,IACbC,8BAA+B,IAC/BC,gBAAiB,IACjBC,mBAAoB,IACpBC,oBAAqB,IACrBC,gBAAiB,IACjBC,mBAAoB,IACpBC,sBAAuB,KAGzB5zB,OAAOiU,QAAQsb,IAAgBtsB,QAAQ,SAAAmW,GAAkB,IAAAxR,EAAAjF,EAAAyW,EAAA,GAAhB5V,EAAGoE,EAAA,GAAER,EAAKQ,EAAA,GACjD2nB,GAAenoB,GAAS5D,CAC1B,GAEA,IAAAqwB,GAAetE,GC9Bf,IAAMuE,GAnBN,SAASC,EAAeC,GACtB,IAAMhwB,EAAU,IAAIwpB,GAAMwG,GACpBC,EAAWx0B,EAAK+tB,GAAMvtB,UAAU0M,QAAS3I,GAa/C,OAVAyJ,GAAMtF,OAAO8rB,EAAUzG,GAAMvtB,UAAW+D,EAAS,CAAET,YAAY,IAG/DkK,GAAMtF,OAAO8rB,EAAUjwB,EAAS,KAAM,CAAET,YAAY,IAGpD0wB,EAAS1zB,OAAS,SAAgBktB,GAChC,OAAOsG,EAAe1U,GAAY2U,EAAevG,KAG5CwG,CACT,CAGcF,CAAe5f,WAG7B2f,GAAMtG,MAAQA,GAGdsG,GAAMhZ,cAAgBA,GACtBgZ,GAAMhF,YAAcA,GACpBgF,GAAMpZ,SAAWA,GACjBoZ,GAAMvH,QAAUA,GAChBuH,GAAM1kB,WAAaA,GAGnB0kB,GAAMxnB,WAAaA,GAGnBwnB,GAAMI,OAASJ,GAAMhZ,cAGrBgZ,GAAMK,IAAM,SAAaC,GACvB,OAAOvS,QAAQsS,IAAIC,EACrB,EAEAN,GAAMO,OC9CS,SAAgBC,GAC7B,OAAO,SAActqB,GACnB,OAAOsqB,EAAS10B,MAAM,KAAMoK,GAEhC,ED6CA8pB,GAAM9mB,aE7DS,SAAsBunB,GACnC,OAAO9mB,GAAM9L,SAAS4yB,KAAqC,IAAzBA,EAAQvnB,YAC5C,EF8DA8mB,GAAMzU,YAAcA,GAEpByU,GAAMjd,aAAeA,GAErBid,GAAMU,WAAa,SAACh0B,GAAK,OAAKoT,GAAenG,GAAMrJ,WAAW5D,GAAS,IAAI+B,SAAS/B,GAASA,EAAM,EAEnGszB,GAAM/H,WAAaD,GAASC,WAE5B+H,GAAMvE,eAAiBA,GAEvBuE,GAAK,QAAWA"} \ No newline at end of file diff --git a/node_modules/axios/dist/browser/axios.cjs b/node_modules/axios/dist/browser/axios.cjs new file mode 100644 index 0000000..12bf529 --- /dev/null +++ b/node_modules/axios/dist/browser/axios.cjs @@ -0,0 +1,4239 @@ +/*! Axios v1.13.6 Copyright (c) 2026 Matt Zabriskie and contributors */ +'use strict'; + +/** + * Create a bound version of a function with a specified `this` context + * + * @param {Function} fn - The function to bind + * @param {*} thisArg - The value to be passed as the `this` parameter + * @returns {Function} A new function that will call the original function with the specified `this` context + */ +function bind(fn, thisArg) { + return function wrap() { + return fn.apply(thisArg, arguments); + }; +} + +// utils is a library of generic helper functions non-specific to axios + +const { toString } = Object.prototype; +const { getPrototypeOf } = Object; +const { iterator, toStringTag } = Symbol; + +const kindOf = ((cache) => (thing) => { + const str = toString.call(thing); + return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); +})(Object.create(null)); + +const kindOfTest = (type) => { + type = type.toLowerCase(); + return (thing) => kindOf(thing) === type; +}; + +const typeOfTest = (type) => (thing) => typeof thing === type; + +/** + * Determine if a value is a non-null object + * + * @param {Object} val The value to test + * + * @returns {boolean} True if value is an Array, otherwise false + */ +const { isArray } = Array; + +/** + * Determine if a value is undefined + * + * @param {*} val The value to test + * + * @returns {boolean} True if the value is undefined, otherwise false + */ +const isUndefined = typeOfTest('undefined'); + +/** + * Determine if a value is a Buffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return ( + val !== null && + !isUndefined(val) && + val.constructor !== null && + !isUndefined(val.constructor) && + isFunction$1(val.constructor.isBuffer) && + val.constructor.isBuffer(val) + ); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +const isArrayBuffer = kindOfTest('ArrayBuffer'); + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + let result; + if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) { + result = ArrayBuffer.isView(val); + } else { + result = val && val.buffer && isArrayBuffer(val.buffer); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a String, otherwise false + */ +const isString = typeOfTest('string'); + +/** + * Determine if a value is a Function + * + * @param {*} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +const isFunction$1 = typeOfTest('function'); + +/** + * Determine if a value is a Number + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Number, otherwise false + */ +const isNumber = typeOfTest('number'); + +/** + * Determine if a value is an Object + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an Object, otherwise false + */ +const isObject = (thing) => thing !== null && typeof thing === 'object'; + +/** + * Determine if a value is a Boolean + * + * @param {*} thing The value to test + * @returns {boolean} True if value is a Boolean, otherwise false + */ +const isBoolean = (thing) => thing === true || thing === false; + +/** + * Determine if a value is a plain Object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a plain Object, otherwise false + */ +const isPlainObject = (val) => { + if (kindOf(val) !== 'object') { + return false; + } + + const prototype = getPrototypeOf(val); + return ( + (prototype === null || + prototype === Object.prototype || + Object.getPrototypeOf(prototype) === null) && + !(toStringTag in val) && + !(iterator in val) + ); +}; + +/** + * Determine if a value is an empty object (safely handles Buffers) + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an empty object, otherwise false + */ +const isEmptyObject = (val) => { + // Early return for non-objects or Buffers to prevent RangeError + if (!isObject(val) || isBuffer(val)) { + return false; + } + + try { + return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype; + } catch (e) { + // Fallback for any other objects that might cause RangeError with Object.keys() + return false; + } +}; + +/** + * Determine if a value is a Date + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Date, otherwise false + */ +const isDate = kindOfTest('Date'); + +/** + * Determine if a value is a File + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFile = kindOfTest('File'); + +/** + * Determine if a value is a React Native Blob + * React Native "blob": an object with a `uri` attribute. Optionally, it can + * also have a `name` and `type` attribute to specify filename and content type + * + * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71 + * + * @param {*} value The value to test + * + * @returns {boolean} True if value is a React Native Blob, otherwise false + */ +const isReactNativeBlob = (value) => { + return !!(value && typeof value.uri !== 'undefined'); +}; + +/** + * Determine if environment is React Native + * ReactNative `FormData` has a non-standard `getParts()` method + * + * @param {*} formData The formData to test + * + * @returns {boolean} True if environment is React Native, otherwise false + */ +const isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined'; + +/** + * Determine if a value is a Blob + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Blob, otherwise false + */ +const isBlob = kindOfTest('Blob'); + +/** + * Determine if a value is a FileList + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFileList = kindOfTest('FileList'); + +/** + * Determine if a value is a Stream + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Stream, otherwise false + */ +const isStream = (val) => isObject(val) && isFunction$1(val.pipe); + +/** + * Determine if a value is a FormData + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an FormData, otherwise false + */ +function getGlobal() { + if (typeof globalThis !== 'undefined') return globalThis; + if (typeof self !== 'undefined') return self; + if (typeof window !== 'undefined') return window; + if (typeof global !== 'undefined') return global; + return {}; +} + +const G = getGlobal(); +const FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined; + +const isFormData = (thing) => { + let kind; + return thing && ( + (FormDataCtor && thing instanceof FormDataCtor) || ( + isFunction$1(thing.append) && ( + (kind = kindOf(thing)) === 'formdata' || + // detect form-data instance + (kind === 'object' && isFunction$1(thing.toString) && thing.toString() === '[object FormData]') + ) + ) + ); +}; + +/** + * Determine if a value is a URLSearchParams object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +const isURLSearchParams = kindOfTest('URLSearchParams'); + +const [isReadableStream, isRequest, isResponse, isHeaders] = [ + 'ReadableStream', + 'Request', + 'Response', + 'Headers', +].map(kindOfTest); + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * + * @returns {String} The String freed of excess whitespace + */ +const trim = (str) => { + return str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); +}; +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + * + * @param {Object} [options] + * @param {Boolean} [options.allOwnKeys = false] + * @returns {any} + */ +function forEach(obj, fn, { allOwnKeys = false } = {}) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + let i; + let l; + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Buffer check + if (isBuffer(obj)) { + return; + } + + // Iterate over object keys + const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); + const len = keys.length; + let key; + + for (i = 0; i < len; i++) { + key = keys[i]; + fn.call(null, obj[key], key, obj); + } + } +} + +/** + * Finds a key in an object, case-insensitive, returning the actual key name. + * Returns null if the object is a Buffer or if no match is found. + * + * @param {Object} obj - The object to search. + * @param {string} key - The key to find (case-insensitive). + * @returns {?string} The actual key name if found, otherwise null. + */ +function findKey(obj, key) { + if (isBuffer(obj)) { + return null; + } + + key = key.toLowerCase(); + const keys = Object.keys(obj); + let i = keys.length; + let _key; + while (i-- > 0) { + _key = keys[i]; + if (key === _key.toLowerCase()) { + return _key; + } + } + return null; +} + +const _global = (() => { + /*eslint no-undef:0*/ + if (typeof globalThis !== 'undefined') return globalThis; + return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global; +})(); + +const isContextDefined = (context) => !isUndefined(context) && context !== _global; + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * const result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + const { caseless, skipUndefined } = (isContextDefined(this) && this) || {}; + const result = {}; + const assignValue = (val, key) => { + // Skip dangerous property names to prevent prototype pollution + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return; + } + + const targetKey = (caseless && findKey(result, key)) || key; + if (isPlainObject(result[targetKey]) && isPlainObject(val)) { + result[targetKey] = merge(result[targetKey], val); + } else if (isPlainObject(val)) { + result[targetKey] = merge({}, val); + } else if (isArray(val)) { + result[targetKey] = val.slice(); + } else if (!skipUndefined || !isUndefined(val)) { + result[targetKey] = val; + } + }; + + for (let i = 0, l = arguments.length; i < l; i++) { + arguments[i] && forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * + * @param {Object} [options] + * @param {Boolean} [options.allOwnKeys] + * @returns {Object} The resulting value of object a + */ +const extend = (a, b, thisArg, { allOwnKeys } = {}) => { + forEach( + b, + (val, key) => { + if (thisArg && isFunction$1(val)) { + Object.defineProperty(a, key, { + value: bind(val, thisArg), + writable: true, + enumerable: true, + configurable: true, + }); + } else { + Object.defineProperty(a, key, { + value: val, + writable: true, + enumerable: true, + configurable: true, + }); + } + }, + { allOwnKeys } + ); + return a; +}; + +/** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * + * @returns {string} content value without BOM + */ +const stripBOM = (content) => { + if (content.charCodeAt(0) === 0xfeff) { + content = content.slice(1); + } + return content; +}; + +/** + * Inherit the prototype methods from one constructor into another + * @param {function} constructor + * @param {function} superConstructor + * @param {object} [props] + * @param {object} [descriptors] + * + * @returns {void} + */ +const inherits = (constructor, superConstructor, props, descriptors) => { + constructor.prototype = Object.create(superConstructor.prototype, descriptors); + Object.defineProperty(constructor.prototype, 'constructor', { + value: constructor, + writable: true, + enumerable: false, + configurable: true, + }); + Object.defineProperty(constructor, 'super', { + value: superConstructor.prototype, + }); + props && Object.assign(constructor.prototype, props); +}; + +/** + * Resolve object with deep prototype chain to a flat object + * @param {Object} sourceObj source object + * @param {Object} [destObj] + * @param {Function|Boolean} [filter] + * @param {Function} [propFilter] + * + * @returns {Object} + */ +const toFlatObject = (sourceObj, destObj, filter, propFilter) => { + let props; + let i; + let prop; + const merged = {}; + + destObj = destObj || {}; + // eslint-disable-next-line no-eq-null,eqeqeq + if (sourceObj == null) return destObj; + + do { + props = Object.getOwnPropertyNames(sourceObj); + i = props.length; + while (i-- > 0) { + prop = props[i]; + if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { + destObj[prop] = sourceObj[prop]; + merged[prop] = true; + } + } + sourceObj = filter !== false && getPrototypeOf(sourceObj); + } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); + + return destObj; +}; + +/** + * Determines whether a string ends with the characters of a specified string + * + * @param {String} str + * @param {String} searchString + * @param {Number} [position= 0] + * + * @returns {boolean} + */ +const endsWith = (str, searchString, position) => { + str = String(str); + if (position === undefined || position > str.length) { + position = str.length; + } + position -= searchString.length; + const lastIndex = str.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; +}; + +/** + * Returns new array from array like object or null if failed + * + * @param {*} [thing] + * + * @returns {?Array} + */ +const toArray = (thing) => { + if (!thing) return null; + if (isArray(thing)) return thing; + let i = thing.length; + if (!isNumber(i)) return null; + const arr = new Array(i); + while (i-- > 0) { + arr[i] = thing[i]; + } + return arr; +}; + +/** + * Checking if the Uint8Array exists and if it does, it returns a function that checks if the + * thing passed in is an instance of Uint8Array + * + * @param {TypedArray} + * + * @returns {Array} + */ +// eslint-disable-next-line func-names +const isTypedArray = ((TypedArray) => { + // eslint-disable-next-line func-names + return (thing) => { + return TypedArray && thing instanceof TypedArray; + }; +})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); + +/** + * For each entry in the object, call the function with the key and value. + * + * @param {Object} obj - The object to iterate over. + * @param {Function} fn - The function to call for each entry. + * + * @returns {void} + */ +const forEachEntry = (obj, fn) => { + const generator = obj && obj[iterator]; + + const _iterator = generator.call(obj); + + let result; + + while ((result = _iterator.next()) && !result.done) { + const pair = result.value; + fn.call(obj, pair[0], pair[1]); + } +}; + +/** + * It takes a regular expression and a string, and returns an array of all the matches + * + * @param {string} regExp - The regular expression to match against. + * @param {string} str - The string to search. + * + * @returns {Array} + */ +const matchAll = (regExp, str) => { + let matches; + const arr = []; + + while ((matches = regExp.exec(str)) !== null) { + arr.push(matches); + } + + return arr; +}; + +/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ +const isHTMLForm = kindOfTest('HTMLFormElement'); + +const toCamelCase = (str) => { + return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { + return p1.toUpperCase() + p2; + }); +}; + +/* Creating a function that will check if an object has a property. */ +const hasOwnProperty = ( + ({ hasOwnProperty }) => + (obj, prop) => + hasOwnProperty.call(obj, prop) +)(Object.prototype); + +/** + * Determine if a value is a RegExp object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a RegExp object, otherwise false + */ +const isRegExp = kindOfTest('RegExp'); + +const reduceDescriptors = (obj, reducer) => { + const descriptors = Object.getOwnPropertyDescriptors(obj); + const reducedDescriptors = {}; + + forEach(descriptors, (descriptor, name) => { + let ret; + if ((ret = reducer(descriptor, name, obj)) !== false) { + reducedDescriptors[name] = ret || descriptor; + } + }); + + Object.defineProperties(obj, reducedDescriptors); +}; + +/** + * Makes all methods read-only + * @param {Object} obj + */ + +const freezeMethods = (obj) => { + reduceDescriptors(obj, (descriptor, name) => { + // skip restricted props in strict mode + if (isFunction$1(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { + return false; + } + + const value = obj[name]; + + if (!isFunction$1(value)) return; + + descriptor.enumerable = false; + + if ('writable' in descriptor) { + descriptor.writable = false; + return; + } + + if (!descriptor.set) { + descriptor.set = () => { + throw Error("Can not rewrite read-only method '" + name + "'"); + }; + } + }); +}; + +/** + * Converts an array or a delimited string into an object set with values as keys and true as values. + * Useful for fast membership checks. + * + * @param {Array|string} arrayOrString - The array or string to convert. + * @param {string} delimiter - The delimiter to use if input is a string. + * @returns {Object} An object with keys from the array or string, values set to true. + */ +const toObjectSet = (arrayOrString, delimiter) => { + const obj = {}; + + const define = (arr) => { + arr.forEach((value) => { + obj[value] = true; + }); + }; + + isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); + + return obj; +}; + +const noop = () => {}; + +const toFiniteNumber = (value, defaultValue) => { + return value != null && Number.isFinite((value = +value)) ? value : defaultValue; +}; + +/** + * If the thing is a FormData object, return true, otherwise return false. + * + * @param {unknown} thing - The thing to check. + * + * @returns {boolean} + */ +function isSpecCompliantForm(thing) { + return !!( + thing && + isFunction$1(thing.append) && + thing[toStringTag] === 'FormData' && + thing[iterator] + ); +} + +/** + * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers. + * + * @param {Object} obj - The object to convert. + * @returns {Object} The JSON-compatible object. + */ +const toJSONObject = (obj) => { + const stack = new Array(10); + + const visit = (source, i) => { + if (isObject(source)) { + if (stack.indexOf(source) >= 0) { + return; + } + + //Buffer check + if (isBuffer(source)) { + return source; + } + + if (!('toJSON' in source)) { + stack[i] = source; + const target = isArray(source) ? [] : {}; + + forEach(source, (value, key) => { + const reducedValue = visit(value, i + 1); + !isUndefined(reducedValue) && (target[key] = reducedValue); + }); + + stack[i] = undefined; + + return target; + } + } + + return source; + }; + + return visit(obj, 0); +}; + +/** + * Determines if a value is an async function. + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is an async function, otherwise false. + */ +const isAsyncFn = kindOfTest('AsyncFunction'); + +/** + * Determines if a value is thenable (has then and catch methods). + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is thenable, otherwise false. + */ +const isThenable = (thing) => + thing && + (isObject(thing) || isFunction$1(thing)) && + isFunction$1(thing.then) && + isFunction$1(thing.catch); + +// original code +// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34 + +/** + * Provides a cross-platform setImmediate implementation. + * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout. + * + * @param {boolean} setImmediateSupported - Whether setImmediate is supported. + * @param {boolean} postMessageSupported - Whether postMessage is supported. + * @returns {Function} A function to schedule a callback asynchronously. + */ +const _setImmediate = ((setImmediateSupported, postMessageSupported) => { + if (setImmediateSupported) { + return setImmediate; + } + + return postMessageSupported + ? ((token, callbacks) => { + _global.addEventListener( + 'message', + ({ source, data }) => { + if (source === _global && data === token) { + callbacks.length && callbacks.shift()(); + } + }, + false + ); + + return (cb) => { + callbacks.push(cb); + _global.postMessage(token, '*'); + }; + })(`axios@${Math.random()}`, []) + : (cb) => setTimeout(cb); +})(typeof setImmediate === 'function', isFunction$1(_global.postMessage)); + +/** + * Schedules a microtask or asynchronous callback as soon as possible. + * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate. + * + * @type {Function} + */ +const asap = + typeof queueMicrotask !== 'undefined' + ? queueMicrotask.bind(_global) + : (typeof process !== 'undefined' && process.nextTick) || _setImmediate; + +// ********************* + +const isIterable = (thing) => thing != null && isFunction$1(thing[iterator]); + +var utils$1 = { + isArray, + isArrayBuffer, + isBuffer, + isFormData, + isArrayBufferView, + isString, + isNumber, + isBoolean, + isObject, + isPlainObject, + isEmptyObject, + isReadableStream, + isRequest, + isResponse, + isHeaders, + isUndefined, + isDate, + isFile, + isReactNativeBlob, + isReactNative, + isBlob, + isRegExp, + isFunction: isFunction$1, + isStream, + isURLSearchParams, + isTypedArray, + isFileList, + forEach, + merge, + extend, + trim, + stripBOM, + inherits, + toFlatObject, + kindOf, + kindOfTest, + endsWith, + toArray, + forEachEntry, + matchAll, + isHTMLForm, + hasOwnProperty, + hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection + reduceDescriptors, + freezeMethods, + toObjectSet, + toCamelCase, + noop, + toFiniteNumber, + findKey, + global: _global, + isContextDefined, + isSpecCompliantForm, + toJSONObject, + isAsyncFn, + isThenable, + setImmediate: _setImmediate, + asap, + isIterable, +}; + +class AxiosError extends Error { + static from(error, code, config, request, response, customProps) { + const axiosError = new AxiosError(error.message, code || error.code, config, request, response); + axiosError.cause = error; + axiosError.name = error.name; + + // Preserve status from the original error if not already set from response + if (error.status != null && axiosError.status == null) { + axiosError.status = error.status; + } + + customProps && Object.assign(axiosError, customProps); + return axiosError; + } + + /** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [config] The config. + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * + * @returns {Error} The created error. + */ + constructor(message, code, config, request, response) { + super(message); + + // Make message enumerable to maintain backward compatibility + // The native Error constructor sets message as non-enumerable, + // but axios < v1.13.3 had it as enumerable + Object.defineProperty(this, 'message', { + value: message, + enumerable: true, + writable: true, + configurable: true + }); + + this.name = 'AxiosError'; + this.isAxiosError = true; + code && (this.code = code); + config && (this.config = config); + request && (this.request = request); + if (response) { + this.response = response; + this.status = response.status; + } + } + + toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: utils$1.toJSONObject(this.config), + code: this.code, + status: this.status, + }; + } +} + +// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated. +AxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE'; +AxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION'; +AxiosError.ECONNABORTED = 'ECONNABORTED'; +AxiosError.ETIMEDOUT = 'ETIMEDOUT'; +AxiosError.ERR_NETWORK = 'ERR_NETWORK'; +AxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS'; +AxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED'; +AxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE'; +AxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST'; +AxiosError.ERR_CANCELED = 'ERR_CANCELED'; +AxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT'; +AxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL'; + +var AxiosError$1 = AxiosError; + +// eslint-disable-next-line strict +var httpAdapter = null; + +/** + * Determines if the given thing is a array or js object. + * + * @param {string} thing - The object or array to be visited. + * + * @returns {boolean} + */ +function isVisitable(thing) { + return utils$1.isPlainObject(thing) || utils$1.isArray(thing); +} + +/** + * It removes the brackets from the end of a string + * + * @param {string} key - The key of the parameter. + * + * @returns {string} the key without the brackets. + */ +function removeBrackets(key) { + return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key; +} + +/** + * It takes a path, a key, and a boolean, and returns a string + * + * @param {string} path - The path to the current key. + * @param {string} key - The key of the current object being iterated over. + * @param {string} dots - If true, the key will be rendered with dots instead of brackets. + * + * @returns {string} The path to the current key. + */ +function renderKey(path, key, dots) { + if (!path) return key; + return path + .concat(key) + .map(function each(token, i) { + // eslint-disable-next-line no-param-reassign + token = removeBrackets(token); + return !dots && i ? '[' + token + ']' : token; + }) + .join(dots ? '.' : ''); +} + +/** + * If the array is an array and none of its elements are visitable, then it's a flat array. + * + * @param {Array} arr - The array to check + * + * @returns {boolean} + */ +function isFlatArray(arr) { + return utils$1.isArray(arr) && !arr.some(isVisitable); +} + +const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { + return /^is[A-Z]/.test(prop); +}); + +/** + * Convert a data object to FormData + * + * @param {Object} obj + * @param {?Object} [formData] + * @param {?Object} [options] + * @param {Function} [options.visitor] + * @param {Boolean} [options.metaTokens = true] + * @param {Boolean} [options.dots = false] + * @param {?Boolean} [options.indexes = false] + * + * @returns {Object} + **/ + +/** + * It converts an object into a FormData object + * + * @param {Object} obj - The object to convert to form data. + * @param {string} formData - The FormData object to append to. + * @param {Object} options + * + * @returns + */ +function toFormData(obj, formData, options) { + if (!utils$1.isObject(obj)) { + throw new TypeError('target must be an object'); + } + + // eslint-disable-next-line no-param-reassign + formData = formData || new (FormData)(); + + // eslint-disable-next-line no-param-reassign + options = utils$1.toFlatObject( + options, + { + metaTokens: true, + dots: false, + indexes: false, + }, + false, + function defined(option, source) { + // eslint-disable-next-line no-eq-null,eqeqeq + return !utils$1.isUndefined(source[option]); + } + ); + + const metaTokens = options.metaTokens; + // eslint-disable-next-line no-use-before-define + const visitor = options.visitor || defaultVisitor; + const dots = options.dots; + const indexes = options.indexes; + const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob); + const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); + + if (!utils$1.isFunction(visitor)) { + throw new TypeError('visitor must be a function'); + } + + function convertValue(value) { + if (value === null) return ''; + + if (utils$1.isDate(value)) { + return value.toISOString(); + } + + if (utils$1.isBoolean(value)) { + return value.toString(); + } + + if (!useBlob && utils$1.isBlob(value)) { + throw new AxiosError$1('Blob is not supported. Use a Buffer instead.'); + } + + if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { + return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); + } + + return value; + } + + /** + * Default visitor. + * + * @param {*} value + * @param {String|Number} key + * @param {Array} path + * @this {FormData} + * + * @returns {boolean} return true to visit the each prop of the value recursively + */ + function defaultVisitor(value, key, path) { + let arr = value; + + if (utils$1.isReactNative(formData) && utils$1.isReactNativeBlob(value)) { + formData.append(renderKey(path, key, dots), convertValue(value)); + return false; + } + + if (value && !path && typeof value === 'object') { + if (utils$1.endsWith(key, '{}')) { + // eslint-disable-next-line no-param-reassign + key = metaTokens ? key : key.slice(0, -2); + // eslint-disable-next-line no-param-reassign + value = JSON.stringify(value); + } else if ( + (utils$1.isArray(value) && isFlatArray(value)) || + ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))) + ) { + // eslint-disable-next-line no-param-reassign + key = removeBrackets(key); + + arr.forEach(function each(el, index) { + !(utils$1.isUndefined(el) || el === null) && + formData.append( + // eslint-disable-next-line no-nested-ternary + indexes === true + ? renderKey([key], index, dots) + : indexes === null + ? key + : key + '[]', + convertValue(el) + ); + }); + return false; + } + } + + if (isVisitable(value)) { + return true; + } + + formData.append(renderKey(path, key, dots), convertValue(value)); + + return false; + } + + const stack = []; + + const exposedHelpers = Object.assign(predicates, { + defaultVisitor, + convertValue, + isVisitable, + }); + + function build(value, path) { + if (utils$1.isUndefined(value)) return; + + if (stack.indexOf(value) !== -1) { + throw Error('Circular reference detected in ' + path.join('.')); + } + + stack.push(value); + + utils$1.forEach(value, function each(el, key) { + const result = + !(utils$1.isUndefined(el) || el === null) && + visitor.call(formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers); + + if (result === true) { + build(el, path ? path.concat(key) : [key]); + } + }); + + stack.pop(); + } + + if (!utils$1.isObject(obj)) { + throw new TypeError('data must be an object'); + } + + build(obj); + + return formData; +} + +/** + * It encodes a string by replacing all characters that are not in the unreserved set with + * their percent-encoded equivalents + * + * @param {string} str - The string to encode. + * + * @returns {string} The encoded string. + */ +function encode$1(str) { + const charMap = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+', + '%00': '\x00', + }; + return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { + return charMap[match]; + }); +} + +/** + * It takes a params object and converts it to a FormData object + * + * @param {Object} params - The parameters to be converted to a FormData object. + * @param {Object} options - The options object passed to the Axios constructor. + * + * @returns {void} + */ +function AxiosURLSearchParams(params, options) { + this._pairs = []; + + params && toFormData(params, this, options); +} + +const prototype = AxiosURLSearchParams.prototype; + +prototype.append = function append(name, value) { + this._pairs.push([name, value]); +}; + +prototype.toString = function toString(encoder) { + const _encode = encoder + ? function (value) { + return encoder.call(this, value, encode$1); + } + : encode$1; + + return this._pairs + .map(function each(pair) { + return _encode(pair[0]) + '=' + _encode(pair[1]); + }, '') + .join('&'); +}; + +/** + * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their + * URI encoded counterparts + * + * @param {string} val The value to be encoded. + * + * @returns {string} The encoded value. + */ +function encode(val) { + return encodeURIComponent(val) + .replace(/%3A/gi, ':') + .replace(/%24/g, '$') + .replace(/%2C/gi, ',') + .replace(/%20/g, '+'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @param {?(object|Function)} options + * + * @returns {string} The formatted url + */ +function buildURL(url, params, options) { + if (!params) { + return url; + } + + const _encode = (options && options.encode) || encode; + + const _options = utils$1.isFunction(options) + ? { + serialize: options, + } + : options; + + const serializeFn = _options && _options.serialize; + + let serializedParams; + + if (serializeFn) { + serializedParams = serializeFn(params, _options); + } else { + serializedParams = utils$1.isURLSearchParams(params) + ? params.toString() + : new AxiosURLSearchParams(params, _options).toString(_encode); + } + + if (serializedParams) { + const hashmarkIndex = url.indexOf('#'); + + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +} + +class InterceptorManager { + constructor() { + this.handlers = []; + } + + /** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * @param {Object} options The options for the interceptor, synchronous and runWhen + * + * @return {Number} An ID used to remove interceptor later + */ + use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled, + rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null, + }); + return this.handlers.length - 1; + } + + /** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + * + * @returns {void} + */ + eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } + } + + /** + * Clear all interceptors from the stack + * + * @returns {void} + */ + clear() { + if (this.handlers) { + this.handlers = []; + } + } + + /** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + * + * @returns {void} + */ + forEach(fn) { + utils$1.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); + } +} + +var InterceptorManager$1 = InterceptorManager; + +var transitionalDefaults = { + silentJSONParsing: true, + forcedJSONParsing: true, + clarifyTimeoutError: false, + legacyInterceptorReqResOrdering: true, +}; + +var URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; + +var FormData$1 = typeof FormData !== 'undefined' ? FormData : null; + +var Blob$1 = typeof Blob !== 'undefined' ? Blob : null; + +var platform$1 = { + isBrowser: true, + classes: { + URLSearchParams: URLSearchParams$1, + FormData: FormData$1, + Blob: Blob$1, + }, + protocols: ['http', 'https', 'file', 'blob', 'url', 'data'], +}; + +const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; + +const _navigator = (typeof navigator === 'object' && navigator) || undefined; + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + * + * @returns {boolean} + */ +const hasStandardBrowserEnv = + hasBrowserEnv && + (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0); + +/** + * Determine if we're running in a standard browser webWorker environment + * + * Although the `isStandardBrowserEnv` method indicates that + * `allows axios to run in a web worker`, the WebWorker will still be + * filtered out due to its judgment standard + * `typeof window !== 'undefined' && typeof document !== 'undefined'`. + * This leads to a problem when axios post `FormData` in webWorker + */ +const hasStandardBrowserWebWorkerEnv = (() => { + return ( + typeof WorkerGlobalScope !== 'undefined' && + // eslint-disable-next-line no-undef + self instanceof WorkerGlobalScope && + typeof self.importScripts === 'function' + ); +})(); + +const origin = (hasBrowserEnv && window.location.href) || 'http://localhost'; + +var utils = /*#__PURE__*/Object.freeze({ + __proto__: null, + hasBrowserEnv: hasBrowserEnv, + hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, + hasStandardBrowserEnv: hasStandardBrowserEnv, + navigator: _navigator, + origin: origin +}); + +var platform = { + ...utils, + ...platform$1, +}; + +function toURLEncodedForm(data, options) { + return toFormData(data, new platform.classes.URLSearchParams(), { + visitor: function (value, key, path, helpers) { + if (platform.isNode && utils$1.isBuffer(value)) { + this.append(key, value.toString('base64')); + return false; + } + + return helpers.defaultVisitor.apply(this, arguments); + }, + ...options, + }); +} + +/** + * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] + * + * @param {string} name - The name of the property to get. + * + * @returns An array of strings. + */ +function parsePropPath(name) { + // foo[x][y][z] + // foo.x.y.z + // foo-x-y-z + // foo x y z + return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map((match) => { + return match[0] === '[]' ? '' : match[1] || match[0]; + }); +} + +/** + * Convert an array to an object. + * + * @param {Array} arr - The array to convert to an object. + * + * @returns An object with the same keys and values as the array. + */ +function arrayToObject(arr) { + const obj = {}; + const keys = Object.keys(arr); + let i; + const len = keys.length; + let key; + for (i = 0; i < len; i++) { + key = keys[i]; + obj[key] = arr[key]; + } + return obj; +} + +/** + * It takes a FormData object and returns a JavaScript object + * + * @param {string} formData The FormData object to convert to JSON. + * + * @returns {Object | null} The converted object. + */ +function formDataToJSON(formData) { + function buildPath(path, value, target, index) { + let name = path[index++]; + + if (name === '__proto__') return true; + + const isNumericKey = Number.isFinite(+name); + const isLast = index >= path.length; + name = !name && utils$1.isArray(target) ? target.length : name; + + if (isLast) { + if (utils$1.hasOwnProp(target, name)) { + target[name] = [target[name], value]; + } else { + target[name] = value; + } + + return !isNumericKey; + } + + if (!target[name] || !utils$1.isObject(target[name])) { + target[name] = []; + } + + const result = buildPath(path, value, target[name], index); + + if (result && utils$1.isArray(target[name])) { + target[name] = arrayToObject(target[name]); + } + + return !isNumericKey; + } + + if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { + const obj = {}; + + utils$1.forEachEntry(formData, (name, value) => { + buildPath(parsePropPath(name), value, obj, 0); + }); + + return obj; + } + + return null; +} + +/** + * It takes a string, tries to parse it, and if it fails, it returns the stringified version + * of the input + * + * @param {any} rawValue - The value to be stringified. + * @param {Function} parser - A function that parses a string into a JavaScript object. + * @param {Function} encoder - A function that takes a value and returns a string. + * + * @returns {string} A stringified version of the rawValue. + */ +function stringifySafely(rawValue, parser, encoder) { + if (utils$1.isString(rawValue)) { + try { + (parser || JSON.parse)(rawValue); + return utils$1.trim(rawValue); + } catch (e) { + if (e.name !== 'SyntaxError') { + throw e; + } + } + } + + return (encoder || JSON.stringify)(rawValue); +} + +const defaults = { + transitional: transitionalDefaults, + + adapter: ['xhr', 'http', 'fetch'], + + transformRequest: [ + function transformRequest(data, headers) { + const contentType = headers.getContentType() || ''; + const hasJSONContentType = contentType.indexOf('application/json') > -1; + const isObjectPayload = utils$1.isObject(data); + + if (isObjectPayload && utils$1.isHTMLForm(data)) { + data = new FormData(data); + } + + const isFormData = utils$1.isFormData(data); + + if (isFormData) { + return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; + } + + if ( + utils$1.isArrayBuffer(data) || + utils$1.isBuffer(data) || + utils$1.isStream(data) || + utils$1.isFile(data) || + utils$1.isBlob(data) || + utils$1.isReadableStream(data) + ) { + return data; + } + if (utils$1.isArrayBufferView(data)) { + return data.buffer; + } + if (utils$1.isURLSearchParams(data)) { + headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); + return data.toString(); + } + + let isFileList; + + if (isObjectPayload) { + if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { + return toURLEncodedForm(data, this.formSerializer).toString(); + } + + if ( + (isFileList = utils$1.isFileList(data)) || + contentType.indexOf('multipart/form-data') > -1 + ) { + const _FormData = this.env && this.env.FormData; + + return toFormData( + isFileList ? { 'files[]': data } : data, + _FormData && new _FormData(), + this.formSerializer + ); + } + } + + if (isObjectPayload || hasJSONContentType) { + headers.setContentType('application/json', false); + return stringifySafely(data); + } + + return data; + }, + ], + + transformResponse: [ + function transformResponse(data) { + const transitional = this.transitional || defaults.transitional; + const forcedJSONParsing = transitional && transitional.forcedJSONParsing; + const JSONRequested = this.responseType === 'json'; + + if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) { + return data; + } + + if ( + data && + utils$1.isString(data) && + ((forcedJSONParsing && !this.responseType) || JSONRequested) + ) { + const silentJSONParsing = transitional && transitional.silentJSONParsing; + const strictJSONParsing = !silentJSONParsing && JSONRequested; + + try { + return JSON.parse(data, this.parseReviver); + } catch (e) { + if (strictJSONParsing) { + if (e.name === 'SyntaxError') { + throw AxiosError$1.from(e, AxiosError$1.ERR_BAD_RESPONSE, this, null, this.response); + } + throw e; + } + } + } + + return data; + }, + ], + + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + maxBodyLength: -1, + + env: { + FormData: platform.classes.FormData, + Blob: platform.classes.Blob, + }, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + }, + + headers: { + common: { + Accept: 'application/json, text/plain, */*', + 'Content-Type': undefined, + }, + }, +}; + +utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { + defaults.headers[method] = {}; +}); + +var defaults$1 = defaults; + +// RawAxiosHeaders whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +const ignoreDuplicateOf = utils$1.toObjectSet([ + 'age', + 'authorization', + 'content-length', + 'content-type', + 'etag', + 'expires', + 'from', + 'host', + 'if-modified-since', + 'if-unmodified-since', + 'last-modified', + 'location', + 'max-forwards', + 'proxy-authorization', + 'referer', + 'retry-after', + 'user-agent', +]); + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} rawHeaders Headers needing to be parsed + * + * @returns {Object} Headers parsed into an object + */ +var parseHeaders = (rawHeaders) => { + const parsed = {}; + let key; + let val; + let i; + + rawHeaders && + rawHeaders.split('\n').forEach(function parser(line) { + i = line.indexOf(':'); + key = line.substring(0, i).trim().toLowerCase(); + val = line.substring(i + 1).trim(); + + if (!key || (parsed[key] && ignoreDuplicateOf[key])) { + return; + } + + if (key === 'set-cookie') { + if (parsed[key]) { + parsed[key].push(val); + } else { + parsed[key] = [val]; + } + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + }); + + return parsed; +}; + +const $internals = Symbol('internals'); + +function normalizeHeader(header) { + return header && String(header).trim().toLowerCase(); +} + +function normalizeValue(value) { + if (value === false || value == null) { + return value; + } + + return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); +} + +function parseTokens(str) { + const tokens = Object.create(null); + const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; + let match; + + while ((match = tokensRE.exec(str))) { + tokens[match[1]] = match[2]; + } + + return tokens; +} + +const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); + +function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { + if (utils$1.isFunction(filter)) { + return filter.call(this, value, header); + } + + if (isHeaderNameFilter) { + value = header; + } + + if (!utils$1.isString(value)) return; + + if (utils$1.isString(filter)) { + return value.indexOf(filter) !== -1; + } + + if (utils$1.isRegExp(filter)) { + return filter.test(value); + } +} + +function formatHeader(header) { + return header + .trim() + .toLowerCase() + .replace(/([a-z\d])(\w*)/g, (w, char, str) => { + return char.toUpperCase() + str; + }); +} + +function buildAccessors(obj, header) { + const accessorName = utils$1.toCamelCase(' ' + header); + + ['get', 'set', 'has'].forEach((methodName) => { + Object.defineProperty(obj, methodName + accessorName, { + value: function (arg1, arg2, arg3) { + return this[methodName].call(this, header, arg1, arg2, arg3); + }, + configurable: true, + }); + }); +} + +class AxiosHeaders { + constructor(headers) { + headers && this.set(headers); + } + + set(header, valueOrRewrite, rewrite) { + const self = this; + + function setHeader(_value, _header, _rewrite) { + const lHeader = normalizeHeader(_header); + + if (!lHeader) { + throw new Error('header name must be a non-empty string'); + } + + const key = utils$1.findKey(self, lHeader); + + if ( + !key || + self[key] === undefined || + _rewrite === true || + (_rewrite === undefined && self[key] !== false) + ) { + self[key || _header] = normalizeValue(_value); + } + } + + const setHeaders = (headers, _rewrite) => + utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); + + if (utils$1.isPlainObject(header) || header instanceof this.constructor) { + setHeaders(header, valueOrRewrite); + } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { + setHeaders(parseHeaders(header), valueOrRewrite); + } else if (utils$1.isObject(header) && utils$1.isIterable(header)) { + let obj = {}, + dest, + key; + for (const entry of header) { + if (!utils$1.isArray(entry)) { + throw TypeError('Object iterator must return a key-value pair'); + } + + obj[(key = entry[0])] = (dest = obj[key]) + ? utils$1.isArray(dest) + ? [...dest, entry[1]] + : [dest, entry[1]] + : entry[1]; + } + + setHeaders(obj, valueOrRewrite); + } else { + header != null && setHeader(valueOrRewrite, header, rewrite); + } + + return this; + } + + get(header, parser) { + header = normalizeHeader(header); + + if (header) { + const key = utils$1.findKey(this, header); + + if (key) { + const value = this[key]; + + if (!parser) { + return value; + } + + if (parser === true) { + return parseTokens(value); + } + + if (utils$1.isFunction(parser)) { + return parser.call(this, value, key); + } + + if (utils$1.isRegExp(parser)) { + return parser.exec(value); + } + + throw new TypeError('parser must be boolean|regexp|function'); + } + } + } + + has(header, matcher) { + header = normalizeHeader(header); + + if (header) { + const key = utils$1.findKey(this, header); + + return !!( + key && + this[key] !== undefined && + (!matcher || matchHeaderValue(this, this[key], key, matcher)) + ); + } + + return false; + } + + delete(header, matcher) { + const self = this; + let deleted = false; + + function deleteHeader(_header) { + _header = normalizeHeader(_header); + + if (_header) { + const key = utils$1.findKey(self, _header); + + if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { + delete self[key]; + + deleted = true; + } + } + } + + if (utils$1.isArray(header)) { + header.forEach(deleteHeader); + } else { + deleteHeader(header); + } + + return deleted; + } + + clear(matcher) { + const keys = Object.keys(this); + let i = keys.length; + let deleted = false; + + while (i--) { + const key = keys[i]; + if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { + delete this[key]; + deleted = true; + } + } + + return deleted; + } + + normalize(format) { + const self = this; + const headers = {}; + + utils$1.forEach(this, (value, header) => { + const key = utils$1.findKey(headers, header); + + if (key) { + self[key] = normalizeValue(value); + delete self[header]; + return; + } + + const normalized = format ? formatHeader(header) : String(header).trim(); + + if (normalized !== header) { + delete self[header]; + } + + self[normalized] = normalizeValue(value); + + headers[normalized] = true; + }); + + return this; + } + + concat(...targets) { + return this.constructor.concat(this, ...targets); + } + + toJSON(asStrings) { + const obj = Object.create(null); + + utils$1.forEach(this, (value, header) => { + value != null && + value !== false && + (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); + }); + + return obj; + } + + [Symbol.iterator]() { + return Object.entries(this.toJSON())[Symbol.iterator](); + } + + toString() { + return Object.entries(this.toJSON()) + .map(([header, value]) => header + ': ' + value) + .join('\n'); + } + + getSetCookie() { + return this.get('set-cookie') || []; + } + + get [Symbol.toStringTag]() { + return 'AxiosHeaders'; + } + + static from(thing) { + return thing instanceof this ? thing : new this(thing); + } + + static concat(first, ...targets) { + const computed = new this(first); + + targets.forEach((target) => computed.set(target)); + + return computed; + } + + static accessor(header) { + const internals = + (this[$internals] = + this[$internals] = + { + accessors: {}, + }); + + const accessors = internals.accessors; + const prototype = this.prototype; + + function defineAccessor(_header) { + const lHeader = normalizeHeader(_header); + + if (!accessors[lHeader]) { + buildAccessors(prototype, _header); + accessors[lHeader] = true; + } + } + + utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); + + return this; + } +} + +AxiosHeaders.accessor([ + 'Content-Type', + 'Content-Length', + 'Accept', + 'Accept-Encoding', + 'User-Agent', + 'Authorization', +]); + +// reserved names hotfix +utils$1.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => { + let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` + return { + get: () => value, + set(headerValue) { + this[mapped] = headerValue; + }, + }; +}); + +utils$1.freezeMethods(AxiosHeaders); + +var AxiosHeaders$1 = AxiosHeaders; + +/** + * Transform the data for a request or a response + * + * @param {Array|Function} fns A single function or Array of functions + * @param {?Object} response The response object + * + * @returns {*} The resulting transformed data + */ +function transformData(fns, response) { + const config = this || defaults$1; + const context = response || config; + const headers = AxiosHeaders$1.from(context.headers); + let data = context.data; + + utils$1.forEach(fns, function transform(fn) { + data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); + }); + + headers.normalize(); + + return data; +} + +function isCancel(value) { + return !!(value && value.__CANCEL__); +} + +class CanceledError extends AxiosError$1 { + /** + * A `CanceledError` is an object that is thrown when an operation is canceled. + * + * @param {string=} message The message. + * @param {Object=} config The config. + * @param {Object=} request The request. + * + * @returns {CanceledError} The created error. + */ + constructor(message, config, request) { + super(message == null ? 'canceled' : message, AxiosError$1.ERR_CANCELED, config, request); + this.name = 'CanceledError'; + this.__CANCEL__ = true; + } +} + +var CanceledError$1 = CanceledError; + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + * + * @returns {object} The response. + */ +function settle(resolve, reject, response) { + const validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject( + new AxiosError$1( + 'Request failed with status code ' + response.status, + [AxiosError$1.ERR_BAD_REQUEST, AxiosError$1.ERR_BAD_RESPONSE][ + Math.floor(response.status / 100) - 4 + ], + response.config, + response.request, + response + ) + ); + } +} + +function parseProtocol(url) { + const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); + return (match && match[1]) || ''; +} + +/** + * Calculate data maxRate + * @param {Number} [samplesCount= 10] + * @param {Number} [min= 1000] + * @returns {Function} + */ +function speedometer(samplesCount, min) { + samplesCount = samplesCount || 10; + const bytes = new Array(samplesCount); + const timestamps = new Array(samplesCount); + let head = 0; + let tail = 0; + let firstSampleTS; + + min = min !== undefined ? min : 1000; + + return function push(chunkLength) { + const now = Date.now(); + + const startedAt = timestamps[tail]; + + if (!firstSampleTS) { + firstSampleTS = now; + } + + bytes[head] = chunkLength; + timestamps[head] = now; + + let i = tail; + let bytesCount = 0; + + while (i !== head) { + bytesCount += bytes[i++]; + i = i % samplesCount; + } + + head = (head + 1) % samplesCount; + + if (head === tail) { + tail = (tail + 1) % samplesCount; + } + + if (now - firstSampleTS < min) { + return; + } + + const passed = startedAt && now - startedAt; + + return passed ? Math.round((bytesCount * 1000) / passed) : undefined; + }; +} + +/** + * Throttle decorator + * @param {Function} fn + * @param {Number} freq + * @return {Function} + */ +function throttle(fn, freq) { + let timestamp = 0; + let threshold = 1000 / freq; + let lastArgs; + let timer; + + const invoke = (args, now = Date.now()) => { + timestamp = now; + lastArgs = null; + if (timer) { + clearTimeout(timer); + timer = null; + } + fn(...args); + }; + + const throttled = (...args) => { + const now = Date.now(); + const passed = now - timestamp; + if (passed >= threshold) { + invoke(args, now); + } else { + lastArgs = args; + if (!timer) { + timer = setTimeout(() => { + timer = null; + invoke(lastArgs); + }, threshold - passed); + } + } + }; + + const flush = () => lastArgs && invoke(lastArgs); + + return [throttled, flush]; +} + +const progressEventReducer = (listener, isDownloadStream, freq = 3) => { + let bytesNotified = 0; + const _speedometer = speedometer(50, 250); + + return throttle((e) => { + const loaded = e.loaded; + const total = e.lengthComputable ? e.total : undefined; + const progressBytes = loaded - bytesNotified; + const rate = _speedometer(progressBytes); + const inRange = loaded <= total; + + bytesNotified = loaded; + + const data = { + loaded, + total, + progress: total ? loaded / total : undefined, + bytes: progressBytes, + rate: rate ? rate : undefined, + estimated: rate && total && inRange ? (total - loaded) / rate : undefined, + event: e, + lengthComputable: total != null, + [isDownloadStream ? 'download' : 'upload']: true, + }; + + listener(data); + }, freq); +}; + +const progressEventDecorator = (total, throttled) => { + const lengthComputable = total != null; + + return [ + (loaded) => + throttled[0]({ + lengthComputable, + total, + loaded, + }), + throttled[1], + ]; +}; + +const asyncDecorator = + (fn) => + (...args) => + utils$1.asap(() => fn(...args)); + +var isURLSameOrigin = platform.hasStandardBrowserEnv + ? ((origin, isMSIE) => (url) => { + url = new URL(url, platform.origin); + + return ( + origin.protocol === url.protocol && + origin.host === url.host && + (isMSIE || origin.port === url.port) + ); + })( + new URL(platform.origin), + platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent) + ) + : () => true; + +var cookies = platform.hasStandardBrowserEnv + ? // Standard browser envs support document.cookie + { + write(name, value, expires, path, domain, secure, sameSite) { + if (typeof document === 'undefined') return; + + const cookie = [`${name}=${encodeURIComponent(value)}`]; + + if (utils$1.isNumber(expires)) { + cookie.push(`expires=${new Date(expires).toUTCString()}`); + } + if (utils$1.isString(path)) { + cookie.push(`path=${path}`); + } + if (utils$1.isString(domain)) { + cookie.push(`domain=${domain}`); + } + if (secure === true) { + cookie.push('secure'); + } + if (utils$1.isString(sameSite)) { + cookie.push(`SameSite=${sameSite}`); + } + + document.cookie = cookie.join('; '); + }, + + read(name) { + if (typeof document === 'undefined') return null; + const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)')); + return match ? decodeURIComponent(match[1]) : null; + }, + + remove(name) { + this.write(name, '', Date.now() - 86400000, '/'); + }, + } + : // Non-standard browser env (web workers, react-native) lack needed support. + { + write() {}, + read() { + return null; + }, + remove() {}, + }; + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + if (typeof url !== 'string') { + return false; + } + + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); +} + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * + * @returns {string} The combined URL + */ +function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +} + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * + * @returns {string} The combined full path + */ +function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) { + let isRelativeUrl = !isAbsoluteURL(requestedURL); + if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +} + +const headersToObject = (thing) => (thing instanceof AxiosHeaders$1 ? { ...thing } : thing); + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * + * @returns {Object} New object resulting from merging config2 to config1 + */ +function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + const config = {}; + + function getMergedValue(target, source, prop, caseless) { + if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { + return utils$1.merge.call({ caseless }, target, source); + } else if (utils$1.isPlainObject(source)) { + return utils$1.merge({}, source); + } else if (utils$1.isArray(source)) { + return source.slice(); + } + return source; + } + + function mergeDeepProperties(a, b, prop, caseless) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(a, b, prop, caseless); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(undefined, a, prop, caseless); + } + } + + // eslint-disable-next-line consistent-return + function valueFromConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(undefined, b); + } + } + + // eslint-disable-next-line consistent-return + function defaultToConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(undefined, b); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(undefined, a); + } + } + + // eslint-disable-next-line consistent-return + function mergeDirectKeys(a, b, prop) { + if (prop in config2) { + return getMergedValue(a, b); + } else if (prop in config1) { + return getMergedValue(undefined, a); + } + } + + const mergeMap = { + url: valueFromConfig2, + method: valueFromConfig2, + data: valueFromConfig2, + baseURL: defaultToConfig2, + transformRequest: defaultToConfig2, + transformResponse: defaultToConfig2, + paramsSerializer: defaultToConfig2, + timeout: defaultToConfig2, + timeoutMessage: defaultToConfig2, + withCredentials: defaultToConfig2, + withXSRFToken: defaultToConfig2, + adapter: defaultToConfig2, + responseType: defaultToConfig2, + xsrfCookieName: defaultToConfig2, + xsrfHeaderName: defaultToConfig2, + onUploadProgress: defaultToConfig2, + onDownloadProgress: defaultToConfig2, + decompress: defaultToConfig2, + maxContentLength: defaultToConfig2, + maxBodyLength: defaultToConfig2, + beforeRedirect: defaultToConfig2, + transport: defaultToConfig2, + httpAgent: defaultToConfig2, + httpsAgent: defaultToConfig2, + cancelToken: defaultToConfig2, + socketPath: defaultToConfig2, + responseEncoding: defaultToConfig2, + validateStatus: mergeDirectKeys, + headers: (a, b, prop) => + mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true), + }; + + utils$1.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) { + if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return; + const merge = utils$1.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties; + const configValue = merge(config1[prop], config2[prop], prop); + (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); + }); + + return config; +} + +var resolveConfig = (config) => { + const newConfig = mergeConfig({}, config); + + let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig; + + newConfig.headers = headers = AxiosHeaders$1.from(headers); + + newConfig.url = buildURL( + buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), + config.params, + config.paramsSerializer + ); + + // HTTP basic authentication + if (auth) { + headers.set( + 'Authorization', + 'Basic ' + + btoa( + (auth.username || '') + + ':' + + (auth.password ? unescape(encodeURIComponent(auth.password)) : '') + ) + ); + } + + if (utils$1.isFormData(data)) { + if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { + headers.setContentType(undefined); // browser handles it + } else if (utils$1.isFunction(data.getHeaders)) { + // Node.js FormData (like form-data package) + const formHeaders = data.getHeaders(); + // Only set safe headers to avoid overwriting security headers + const allowedHeaders = ['content-type', 'content-length']; + Object.entries(formHeaders).forEach(([key, val]) => { + if (allowedHeaders.includes(key.toLowerCase())) { + headers.set(key, val); + } + }); + } + } + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + + if (platform.hasStandardBrowserEnv) { + withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig)); + + if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) { + // Add xsrf header + const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); + + if (xsrfValue) { + headers.set(xsrfHeaderName, xsrfValue); + } + } + } + + return newConfig; +}; + +const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; + +var xhrAdapter = isXHRAdapterSupported && + function (config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + const _config = resolveConfig(config); + let requestData = _config.data; + const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize(); + let { responseType, onUploadProgress, onDownloadProgress } = _config; + let onCanceled; + let uploadThrottled, downloadThrottled; + let flushUpload, flushDownload; + + function done() { + flushUpload && flushUpload(); // flush events + flushDownload && flushDownload(); // flush events + + _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); + + _config.signal && _config.signal.removeEventListener('abort', onCanceled); + } + + let request = new XMLHttpRequest(); + + request.open(_config.method.toUpperCase(), _config.url, true); + + // Set the request timeout in MS + request.timeout = _config.timeout; + + function onloadend() { + if (!request) { + return; + } + // Prepare the response + const responseHeaders = AxiosHeaders$1.from( + 'getAllResponseHeaders' in request && request.getAllResponseHeaders() + ); + const responseData = + !responseType || responseType === 'text' || responseType === 'json' + ? request.responseText + : request.response; + const response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config, + request, + }; + + settle( + function _resolve(value) { + resolve(value); + done(); + }, + function _reject(err) { + reject(err); + done(); + }, + response + ); + + // Clean up request + request = null; + } + + if ('onloadend' in request) { + // Use onloadend if available + request.onloadend = onloadend; + } else { + // Listen for ready state to emulate onloadend + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if ( + request.status === 0 && + !(request.responseURL && request.responseURL.indexOf('file:') === 0) + ) { + return; + } + // readystate handler is calling before onerror or ontimeout handlers, + // so we should call onloadend on the next 'tick' + setTimeout(onloadend); + }; + } + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(new AxiosError$1('Request aborted', AxiosError$1.ECONNABORTED, config, request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError(event) { + // Browsers deliver a ProgressEvent in XHR onerror + // (message may be empty; when present, surface it) + // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event + const msg = event && event.message ? event.message : 'Network Error'; + const err = new AxiosError$1(msg, AxiosError$1.ERR_NETWORK, config, request); + // attach the underlying event for consumers who want details + err.event = event || null; + reject(err); + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + let timeoutErrorMessage = _config.timeout + ? 'timeout of ' + _config.timeout + 'ms exceeded' + : 'timeout exceeded'; + const transitional = _config.transitional || transitionalDefaults; + if (_config.timeoutErrorMessage) { + timeoutErrorMessage = _config.timeoutErrorMessage; + } + reject( + new AxiosError$1( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED, + config, + request + ) + ); + + // Clean up request + request = null; + }; + + // Remove Content-Type if data is undefined + requestData === undefined && requestHeaders.setContentType(null); + + // Add headers to the request + if ('setRequestHeader' in request) { + utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { + request.setRequestHeader(key, val); + }); + } + + // Add withCredentials to request if needed + if (!utils$1.isUndefined(_config.withCredentials)) { + request.withCredentials = !!_config.withCredentials; + } + + // Add responseType to request if needed + if (responseType && responseType !== 'json') { + request.responseType = _config.responseType; + } + + // Handle progress if needed + if (onDownloadProgress) { + [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true); + request.addEventListener('progress', downloadThrottled); + } + + // Not all browsers support upload events + if (onUploadProgress && request.upload) { + [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress); + + request.upload.addEventListener('progress', uploadThrottled); + + request.upload.addEventListener('loadend', flushUpload); + } + + if (_config.cancelToken || _config.signal) { + // Handle cancellation + // eslint-disable-next-line func-names + onCanceled = (cancel) => { + if (!request) { + return; + } + reject(!cancel || cancel.type ? new CanceledError$1(null, config, request) : cancel); + request.abort(); + request = null; + }; + + _config.cancelToken && _config.cancelToken.subscribe(onCanceled); + if (_config.signal) { + _config.signal.aborted + ? onCanceled() + : _config.signal.addEventListener('abort', onCanceled); + } + } + + const protocol = parseProtocol(_config.url); + + if (protocol && platform.protocols.indexOf(protocol) === -1) { + reject( + new AxiosError$1( + 'Unsupported protocol ' + protocol + ':', + AxiosError$1.ERR_BAD_REQUEST, + config + ) + ); + return; + } + + // Send the request + request.send(requestData || null); + }); + }; + +const composeSignals = (signals, timeout) => { + const { length } = (signals = signals ? signals.filter(Boolean) : []); + + if (timeout || length) { + let controller = new AbortController(); + + let aborted; + + const onabort = function (reason) { + if (!aborted) { + aborted = true; + unsubscribe(); + const err = reason instanceof Error ? reason : this.reason; + controller.abort( + err instanceof AxiosError$1 + ? err + : new CanceledError$1(err instanceof Error ? err.message : err) + ); + } + }; + + let timer = + timeout && + setTimeout(() => { + timer = null; + onabort(new AxiosError$1(`timeout of ${timeout}ms exceeded`, AxiosError$1.ETIMEDOUT)); + }, timeout); + + const unsubscribe = () => { + if (signals) { + timer && clearTimeout(timer); + timer = null; + signals.forEach((signal) => { + signal.unsubscribe + ? signal.unsubscribe(onabort) + : signal.removeEventListener('abort', onabort); + }); + signals = null; + } + }; + + signals.forEach((signal) => signal.addEventListener('abort', onabort)); + + const { signal } = controller; + + signal.unsubscribe = () => utils$1.asap(unsubscribe); + + return signal; + } +}; + +var composeSignals$1 = composeSignals; + +const streamChunk = function* (chunk, chunkSize) { + let len = chunk.byteLength; + + if (!chunkSize || len < chunkSize) { + yield chunk; + return; + } + + let pos = 0; + let end; + + while (pos < len) { + end = pos + chunkSize; + yield chunk.slice(pos, end); + pos = end; + } +}; + +const readBytes = async function* (iterable, chunkSize) { + for await (const chunk of readStream(iterable)) { + yield* streamChunk(chunk, chunkSize); + } +}; + +const readStream = async function* (stream) { + if (stream[Symbol.asyncIterator]) { + yield* stream; + return; + } + + const reader = stream.getReader(); + try { + for (;;) { + const { done, value } = await reader.read(); + if (done) { + break; + } + yield value; + } + } finally { + await reader.cancel(); + } +}; + +const trackStream = (stream, chunkSize, onProgress, onFinish) => { + const iterator = readBytes(stream, chunkSize); + + let bytes = 0; + let done; + let _onFinish = (e) => { + if (!done) { + done = true; + onFinish && onFinish(e); + } + }; + + return new ReadableStream( + { + async pull(controller) { + try { + const { done, value } = await iterator.next(); + + if (done) { + _onFinish(); + controller.close(); + return; + } + + let len = value.byteLength; + if (onProgress) { + let loadedBytes = (bytes += len); + onProgress(loadedBytes); + } + controller.enqueue(new Uint8Array(value)); + } catch (err) { + _onFinish(err); + throw err; + } + }, + cancel(reason) { + _onFinish(reason); + return iterator.return(); + }, + }, + { + highWaterMark: 2, + } + ); +}; + +const DEFAULT_CHUNK_SIZE = 64 * 1024; + +const { isFunction } = utils$1; + +const globalFetchAPI = (({ Request, Response }) => ({ + Request, + Response, +}))(utils$1.global); + +const { ReadableStream: ReadableStream$1, TextEncoder } = utils$1.global; + +const test = (fn, ...args) => { + try { + return !!fn(...args); + } catch (e) { + return false; + } +}; + +const factory = (env) => { + env = utils$1.merge.call( + { + skipUndefined: true, + }, + globalFetchAPI, + env + ); + + const { fetch: envFetch, Request, Response } = env; + const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function'; + const isRequestSupported = isFunction(Request); + const isResponseSupported = isFunction(Response); + + if (!isFetchSupported) { + return false; + } + + const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream$1); + + const encodeText = + isFetchSupported && + (typeof TextEncoder === 'function' + ? ( + (encoder) => (str) => + encoder.encode(str) + )(new TextEncoder()) + : async (str) => new Uint8Array(await new Request(str).arrayBuffer())); + + const supportsRequestStream = + isRequestSupported && + isReadableStreamSupported && + test(() => { + let duplexAccessed = false; + + const hasContentType = new Request(platform.origin, { + body: new ReadableStream$1(), + method: 'POST', + get duplex() { + duplexAccessed = true; + return 'half'; + }, + }).headers.has('Content-Type'); + + return duplexAccessed && !hasContentType; + }); + + const supportsResponseStream = + isResponseSupported && + isReadableStreamSupported && + test(() => utils$1.isReadableStream(new Response('').body)); + + const resolvers = { + stream: supportsResponseStream && ((res) => res.body), + }; + + isFetchSupported && + (() => { + ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => { + !resolvers[type] && + (resolvers[type] = (res, config) => { + let method = res && res[type]; + + if (method) { + return method.call(res); + } + + throw new AxiosError$1( + `Response type '${type}' is not supported`, + AxiosError$1.ERR_NOT_SUPPORT, + config + ); + }); + }); + })(); + + const getBodyLength = async (body) => { + if (body == null) { + return 0; + } + + if (utils$1.isBlob(body)) { + return body.size; + } + + if (utils$1.isSpecCompliantForm(body)) { + const _request = new Request(platform.origin, { + method: 'POST', + body, + }); + return (await _request.arrayBuffer()).byteLength; + } + + if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) { + return body.byteLength; + } + + if (utils$1.isURLSearchParams(body)) { + body = body + ''; + } + + if (utils$1.isString(body)) { + return (await encodeText(body)).byteLength; + } + }; + + const resolveBodyLength = async (headers, body) => { + const length = utils$1.toFiniteNumber(headers.getContentLength()); + + return length == null ? getBodyLength(body) : length; + }; + + return async (config) => { + let { + url, + method, + data, + signal, + cancelToken, + timeout, + onDownloadProgress, + onUploadProgress, + responseType, + headers, + withCredentials = 'same-origin', + fetchOptions, + } = resolveConfig(config); + + let _fetch = envFetch || fetch; + + responseType = responseType ? (responseType + '').toLowerCase() : 'text'; + + let composedSignal = composeSignals$1( + [signal, cancelToken && cancelToken.toAbortSignal()], + timeout + ); + + let request = null; + + const unsubscribe = + composedSignal && + composedSignal.unsubscribe && + (() => { + composedSignal.unsubscribe(); + }); + + let requestContentLength; + + try { + if ( + onUploadProgress && + supportsRequestStream && + method !== 'get' && + method !== 'head' && + (requestContentLength = await resolveBodyLength(headers, data)) !== 0 + ) { + let _request = new Request(url, { + method: 'POST', + body: data, + duplex: 'half', + }); + + let contentTypeHeader; + + if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) { + headers.setContentType(contentTypeHeader); + } + + if (_request.body) { + const [onProgress, flush] = progressEventDecorator( + requestContentLength, + progressEventReducer(asyncDecorator(onUploadProgress)) + ); + + data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); + } + } + + if (!utils$1.isString(withCredentials)) { + withCredentials = withCredentials ? 'include' : 'omit'; + } + + // Cloudflare Workers throws when credentials are defined + // see https://github.com/cloudflare/workerd/issues/902 + const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype; + + const resolvedOptions = { + ...fetchOptions, + signal: composedSignal, + method: method.toUpperCase(), + headers: headers.normalize().toJSON(), + body: data, + duplex: 'half', + credentials: isCredentialsSupported ? withCredentials : undefined, + }; + + request = isRequestSupported && new Request(url, resolvedOptions); + + let response = await (isRequestSupported + ? _fetch(request, fetchOptions) + : _fetch(url, resolvedOptions)); + + const isStreamResponse = + supportsResponseStream && (responseType === 'stream' || responseType === 'response'); + + if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) { + const options = {}; + + ['status', 'statusText', 'headers'].forEach((prop) => { + options[prop] = response[prop]; + }); + + const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length')); + + const [onProgress, flush] = + (onDownloadProgress && + progressEventDecorator( + responseContentLength, + progressEventReducer(asyncDecorator(onDownloadProgress), true) + )) || + []; + + response = new Response( + trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { + flush && flush(); + unsubscribe && unsubscribe(); + }), + options + ); + } + + responseType = responseType || 'text'; + + let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text']( + response, + config + ); + + !isStreamResponse && unsubscribe && unsubscribe(); + + return await new Promise((resolve, reject) => { + settle(resolve, reject, { + data: responseData, + headers: AxiosHeaders$1.from(response.headers), + status: response.status, + statusText: response.statusText, + config, + request, + }); + }); + } catch (err) { + unsubscribe && unsubscribe(); + + if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) { + throw Object.assign( + new AxiosError$1( + 'Network Error', + AxiosError$1.ERR_NETWORK, + config, + request, + err && err.response + ), + { + cause: err.cause || err, + } + ); + } + + throw AxiosError$1.from(err, err && err.code, config, request, err && err.response); + } + }; +}; + +const seedCache = new Map(); + +const getFetch = (config) => { + let env = (config && config.env) || {}; + const { fetch, Request, Response } = env; + const seeds = [Request, Response, fetch]; + + let len = seeds.length, + i = len, + seed, + target, + map = seedCache; + + while (i--) { + seed = seeds[i]; + target = map.get(seed); + + target === undefined && map.set(seed, (target = i ? new Map() : factory(env))); + + map = target; + } + + return target; +}; + +getFetch(); + +/** + * Known adapters mapping. + * Provides environment-specific adapters for Axios: + * - `http` for Node.js + * - `xhr` for browsers + * - `fetch` for fetch API-based requests + * + * @type {Object} + */ +const knownAdapters = { + http: httpAdapter, + xhr: xhrAdapter, + fetch: { + get: getFetch, + }, +}; + +// Assign adapter names for easier debugging and identification +utils$1.forEach(knownAdapters, (fn, value) => { + if (fn) { + try { + Object.defineProperty(fn, 'name', { value }); + } catch (e) { + // eslint-disable-next-line no-empty + } + Object.defineProperty(fn, 'adapterName', { value }); + } +}); + +/** + * Render a rejection reason string for unknown or unsupported adapters + * + * @param {string} reason + * @returns {string} + */ +const renderReason = (reason) => `- ${reason}`; + +/** + * Check if the adapter is resolved (function, null, or false) + * + * @param {Function|null|false} adapter + * @returns {boolean} + */ +const isResolvedHandle = (adapter) => + utils$1.isFunction(adapter) || adapter === null || adapter === false; + +/** + * Get the first suitable adapter from the provided list. + * Tries each adapter in order until a supported one is found. + * Throws an AxiosError if no adapter is suitable. + * + * @param {Array|string|Function} adapters - Adapter(s) by name or function. + * @param {Object} config - Axios request configuration + * @throws {AxiosError} If no suitable adapter is available + * @returns {Function} The resolved adapter function + */ +function getAdapter(adapters, config) { + adapters = utils$1.isArray(adapters) ? adapters : [adapters]; + + const { length } = adapters; + let nameOrAdapter; + let adapter; + + const rejectedReasons = {}; + + for (let i = 0; i < length; i++) { + nameOrAdapter = adapters[i]; + let id; + + adapter = nameOrAdapter; + + if (!isResolvedHandle(nameOrAdapter)) { + adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; + + if (adapter === undefined) { + throw new AxiosError$1(`Unknown adapter '${id}'`); + } + } + + if (adapter && (utils$1.isFunction(adapter) || (adapter = adapter.get(config)))) { + break; + } + + rejectedReasons[id || '#' + i] = adapter; + } + + if (!adapter) { + const reasons = Object.entries(rejectedReasons).map( + ([id, state]) => + `adapter ${id} ` + + (state === false ? 'is not supported by the environment' : 'is not available in the build') + ); + + let s = length + ? reasons.length > 1 + ? 'since :\n' + reasons.map(renderReason).join('\n') + : ' ' + renderReason(reasons[0]) + : 'as no adapter specified'; + + throw new AxiosError$1( + `There is no suitable adapter to dispatch the request ` + s, + 'ERR_NOT_SUPPORT' + ); + } + + return adapter; +} + +/** + * Exports Axios adapters and utility to resolve an adapter + */ +var adapters = { + /** + * Resolve an adapter from a list of adapter names or functions. + * @type {Function} + */ + getAdapter, + + /** + * Exposes all known adapters + * @type {Object} + */ + adapters: knownAdapters, +}; + +/** + * Throws a `CanceledError` if cancellation has been requested. + * + * @param {Object} config The config that is to be used for the request + * + * @returns {void} + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } + + if (config.signal && config.signal.aborted) { + throw new CanceledError$1(null, config); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * + * @returns {Promise} The Promise to be fulfilled + */ +function dispatchRequest(config) { + throwIfCancellationRequested(config); + + config.headers = AxiosHeaders$1.from(config.headers); + + // Transform request data + config.data = transformData.call(config, config.transformRequest); + + if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { + config.headers.setContentType('application/x-www-form-urlencoded', false); + } + + const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter, config); + + return adapter(config).then( + function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData.call(config, config.transformResponse, response); + + response.headers = AxiosHeaders$1.from(response.headers); + + return response; + }, + function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData.call( + config, + config.transformResponse, + reason.response + ); + reason.response.headers = AxiosHeaders$1.from(reason.response.headers); + } + } + + return Promise.reject(reason); + } + ); +} + +const VERSION = "1.13.6"; + +const validators$1 = {}; + +// eslint-disable-next-line func-names +['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { + validators$1[type] = function validator(thing) { + return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; + }; +}); + +const deprecatedWarnings = {}; + +/** + * Transitional option validator + * + * @param {function|boolean?} validator - set to false if the transitional option has been removed + * @param {string?} version - deprecated version / removed since version + * @param {string?} message - some message with additional info + * + * @returns {function} + */ +validators$1.transitional = function transitional(validator, version, message) { + function formatMessage(opt, desc) { + return ( + '[Axios v' + + VERSION + + "] Transitional option '" + + opt + + "'" + + desc + + (message ? '. ' + message : '') + ); + } + + // eslint-disable-next-line func-names + return (value, opt, opts) => { + if (validator === false) { + throw new AxiosError$1( + formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), + AxiosError$1.ERR_DEPRECATED + ); + } + + if (version && !deprecatedWarnings[opt]) { + deprecatedWarnings[opt] = true; + // eslint-disable-next-line no-console + console.warn( + formatMessage( + opt, + ' has been deprecated since v' + version + ' and will be removed in the near future' + ) + ); + } + + return validator ? validator(value, opt, opts) : true; + }; +}; + +validators$1.spelling = function spelling(correctSpelling) { + return (value, opt) => { + // eslint-disable-next-line no-console + console.warn(`${opt} is likely a misspelling of ${correctSpelling}`); + return true; + }; +}; + +/** + * Assert object's properties type + * + * @param {object} options + * @param {object} schema + * @param {boolean?} allowUnknown + * + * @returns {object} + */ + +function assertOptions(options, schema, allowUnknown) { + if (typeof options !== 'object') { + throw new AxiosError$1('options must be an object', AxiosError$1.ERR_BAD_OPTION_VALUE); + } + const keys = Object.keys(options); + let i = keys.length; + while (i-- > 0) { + const opt = keys[i]; + const validator = schema[opt]; + if (validator) { + const value = options[opt]; + const result = value === undefined || validator(value, opt, options); + if (result !== true) { + throw new AxiosError$1( + 'option ' + opt + ' must be ' + result, + AxiosError$1.ERR_BAD_OPTION_VALUE + ); + } + continue; + } + if (allowUnknown !== true) { + throw new AxiosError$1('Unknown option ' + opt, AxiosError$1.ERR_BAD_OPTION); + } + } +} + +var validator = { + assertOptions, + validators: validators$1, +}; + +const validators = validator.validators; + +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + * + * @return {Axios} A new instance of Axios + */ +class Axios { + constructor(instanceConfig) { + this.defaults = instanceConfig || {}; + this.interceptors = { + request: new InterceptorManager$1(), + response: new InterceptorManager$1(), + }; + } + + /** + * Dispatch a request + * + * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) + * @param {?Object} config + * + * @returns {Promise} The Promise to be fulfilled + */ + async request(configOrUrl, config) { + try { + return await this._request(configOrUrl, config); + } catch (err) { + if (err instanceof Error) { + let dummy = {}; + + Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error()); + + // slice off the Error: ... line + const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; + try { + if (!err.stack) { + err.stack = stack; + // match without the 2 top stack lines + } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { + err.stack += '\n' + stack; + } + } catch (e) { + // ignore the case where "stack" is an un-writable property + } + } + + throw err; + } + } + + _request(configOrUrl, config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof configOrUrl === 'string') { + config = config || {}; + config.url = configOrUrl; + } else { + config = configOrUrl || {}; + } + + config = mergeConfig(this.defaults, config); + + const { transitional, paramsSerializer, headers } = config; + + if (transitional !== undefined) { + validator.assertOptions( + transitional, + { + silentJSONParsing: validators.transitional(validators.boolean), + forcedJSONParsing: validators.transitional(validators.boolean), + clarifyTimeoutError: validators.transitional(validators.boolean), + legacyInterceptorReqResOrdering: validators.transitional(validators.boolean), + }, + false + ); + } + + if (paramsSerializer != null) { + if (utils$1.isFunction(paramsSerializer)) { + config.paramsSerializer = { + serialize: paramsSerializer, + }; + } else { + validator.assertOptions( + paramsSerializer, + { + encode: validators.function, + serialize: validators.function, + }, + true + ); + } + } + + // Set config.allowAbsoluteUrls + if (config.allowAbsoluteUrls !== undefined) ; else if (this.defaults.allowAbsoluteUrls !== undefined) { + config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls; + } else { + config.allowAbsoluteUrls = true; + } + + validator.assertOptions( + config, + { + baseUrl: validators.spelling('baseURL'), + withXsrfToken: validators.spelling('withXSRFToken'), + }, + true + ); + + // Set config.method + config.method = (config.method || this.defaults.method || 'get').toLowerCase(); + + // Flatten headers + let contextHeaders = headers && utils$1.merge(headers.common, headers[config.method]); + + headers && + utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => { + delete headers[method]; + }); + + config.headers = AxiosHeaders$1.concat(contextHeaders, headers); + + // filter out skipped interceptors + const requestInterceptorChain = []; + let synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { + return; + } + + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; + + const transitional = config.transitional || transitionalDefaults; + const legacyInterceptorReqResOrdering = + transitional && transitional.legacyInterceptorReqResOrdering; + + if (legacyInterceptorReqResOrdering) { + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + } else { + requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + } + }); + + const responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); + + let promise; + let i = 0; + let len; + + if (!synchronousRequestInterceptors) { + const chain = [dispatchRequest.bind(this), undefined]; + chain.unshift(...requestInterceptorChain); + chain.push(...responseInterceptorChain); + len = chain.length; + + promise = Promise.resolve(config); + + while (i < len) { + promise = promise.then(chain[i++], chain[i++]); + } + + return promise; + } + + len = requestInterceptorChain.length; + + let newConfig = config; + + while (i < len) { + const onFulfilled = requestInterceptorChain[i++]; + const onRejected = requestInterceptorChain[i++]; + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected.call(this, error); + break; + } + } + + try { + promise = dispatchRequest.call(this, newConfig); + } catch (error) { + return Promise.reject(error); + } + + i = 0; + len = responseInterceptorChain.length; + + while (i < len) { + promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); + } + + return promise; + } + + getUri(config) { + config = mergeConfig(this.defaults, config); + const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); + return buildURL(fullPath, config.params, config.paramsSerializer); + } +} + +// Provide aliases for supported request methods +utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function (url, config) { + return this.request( + mergeConfig(config || {}, { + method, + url, + data: (config || {}).data, + }) + ); + }; +}); + +utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + + function generateHTTPMethod(isForm) { + return function httpMethod(url, data, config) { + return this.request( + mergeConfig(config || {}, { + method, + headers: isForm + ? { + 'Content-Type': 'multipart/form-data', + } + : {}, + url, + data, + }) + ); + }; + } + + Axios.prototype[method] = generateHTTPMethod(); + + Axios.prototype[method + 'Form'] = generateHTTPMethod(true); +}); + +var Axios$1 = Axios; + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @param {Function} executor The executor function. + * + * @returns {CancelToken} + */ +class CancelToken { + constructor(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + let resolvePromise; + + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + const token = this; + + // eslint-disable-next-line func-names + this.promise.then((cancel) => { + if (!token._listeners) return; + + let i = token._listeners.length; + + while (i-- > 0) { + token._listeners[i](cancel); + } + token._listeners = null; + }); + + // eslint-disable-next-line func-names + this.promise.then = (onfulfilled) => { + let _resolve; + // eslint-disable-next-line func-names + const promise = new Promise((resolve) => { + token.subscribe(resolve); + _resolve = resolve; + }).then(onfulfilled); + + promise.cancel = function reject() { + token.unsubscribe(_resolve); + }; + + return promise; + }; + + executor(function cancel(message, config, request) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new CanceledError$1(message, config, request); + resolvePromise(token.reason); + }); + } + + /** + * Throws a `CanceledError` if cancellation has been requested. + */ + throwIfRequested() { + if (this.reason) { + throw this.reason; + } + } + + /** + * Subscribe to the cancel signal + */ + + subscribe(listener) { + if (this.reason) { + listener(this.reason); + return; + } + + if (this._listeners) { + this._listeners.push(listener); + } else { + this._listeners = [listener]; + } + } + + /** + * Unsubscribe from the cancel signal + */ + + unsubscribe(listener) { + if (!this._listeners) { + return; + } + const index = this._listeners.indexOf(listener); + if (index !== -1) { + this._listeners.splice(index, 1); + } + } + + toAbortSignal() { + const controller = new AbortController(); + + const abort = (err) => { + controller.abort(err); + }; + + this.subscribe(abort); + + controller.signal.unsubscribe = () => this.unsubscribe(abort); + + return controller.signal; + } + + /** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ + static source() { + let cancel; + const token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token, + cancel, + }; + } +} + +var CancelToken$1 = CancelToken; + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * const args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * + * @returns {Function} + */ +function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +} + +/** + * Determines whether the payload is an error thrown by Axios + * + * @param {*} payload The value to test + * + * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false + */ +function isAxiosError(payload) { + return utils$1.isObject(payload) && payload.isAxiosError === true; +} + +const HttpStatusCode = { + Continue: 100, + SwitchingProtocols: 101, + Processing: 102, + EarlyHints: 103, + Ok: 200, + Created: 201, + Accepted: 202, + NonAuthoritativeInformation: 203, + NoContent: 204, + ResetContent: 205, + PartialContent: 206, + MultiStatus: 207, + AlreadyReported: 208, + ImUsed: 226, + MultipleChoices: 300, + MovedPermanently: 301, + Found: 302, + SeeOther: 303, + NotModified: 304, + UseProxy: 305, + Unused: 306, + TemporaryRedirect: 307, + PermanentRedirect: 308, + BadRequest: 400, + Unauthorized: 401, + PaymentRequired: 402, + Forbidden: 403, + NotFound: 404, + MethodNotAllowed: 405, + NotAcceptable: 406, + ProxyAuthenticationRequired: 407, + RequestTimeout: 408, + Conflict: 409, + Gone: 410, + LengthRequired: 411, + PreconditionFailed: 412, + PayloadTooLarge: 413, + UriTooLong: 414, + UnsupportedMediaType: 415, + RangeNotSatisfiable: 416, + ExpectationFailed: 417, + ImATeapot: 418, + MisdirectedRequest: 421, + UnprocessableEntity: 422, + Locked: 423, + FailedDependency: 424, + TooEarly: 425, + UpgradeRequired: 426, + PreconditionRequired: 428, + TooManyRequests: 429, + RequestHeaderFieldsTooLarge: 431, + UnavailableForLegalReasons: 451, + InternalServerError: 500, + NotImplemented: 501, + BadGateway: 502, + ServiceUnavailable: 503, + GatewayTimeout: 504, + HttpVersionNotSupported: 505, + VariantAlsoNegotiates: 506, + InsufficientStorage: 507, + LoopDetected: 508, + NotExtended: 510, + NetworkAuthenticationRequired: 511, + WebServerIsDown: 521, + ConnectionTimedOut: 522, + OriginIsUnreachable: 523, + TimeoutOccurred: 524, + SslHandshakeFailed: 525, + InvalidSslCertificate: 526, +}; + +Object.entries(HttpStatusCode).forEach(([key, value]) => { + HttpStatusCode[value] = key; +}); + +var HttpStatusCode$1 = HttpStatusCode; + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * + * @returns {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + const context = new Axios$1(defaultConfig); + const instance = bind(Axios$1.prototype.request, context); + + // Copy axios.prototype to instance + utils$1.extend(instance, Axios$1.prototype, context, { allOwnKeys: true }); + + // Copy context to instance + utils$1.extend(instance, context, null, { allOwnKeys: true }); + + // Factory for creating new instances + instance.create = function create(instanceConfig) { + return createInstance(mergeConfig(defaultConfig, instanceConfig)); + }; + + return instance; +} + +// Create the default instance to be exported +const axios = createInstance(defaults$1); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios$1; + +// Expose Cancel & CancelToken +axios.CanceledError = CanceledError$1; +axios.CancelToken = CancelToken$1; +axios.isCancel = isCancel; +axios.VERSION = VERSION; +axios.toFormData = toFormData; + +// Expose AxiosError class +axios.AxiosError = AxiosError$1; + +// alias for CanceledError for backward compatibility +axios.Cancel = axios.CanceledError; + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; + +axios.spread = spread; + +// Expose isAxiosError +axios.isAxiosError = isAxiosError; + +// Expose mergeConfig +axios.mergeConfig = mergeConfig; + +axios.AxiosHeaders = AxiosHeaders$1; + +axios.formToJSON = (thing) => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); + +axios.getAdapter = adapters.getAdapter; + +axios.HttpStatusCode = HttpStatusCode$1; + +axios.default = axios; + +module.exports = axios; +//# sourceMappingURL=axios.cjs.map diff --git a/node_modules/axios/dist/browser/axios.cjs.map b/node_modules/axios/dist/browser/axios.cjs.map new file mode 100644 index 0000000..cb83798 --- /dev/null +++ b/node_modules/axios/dist/browser/axios.cjs.map @@ -0,0 +1 @@ +{"version":3,"file":"axios.cjs","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/null.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/browser/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/speedometer.js","../../lib/helpers/throttle.js","../../lib/helpers/progressEventReducer.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/cookies.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../lib/core/mergeConfig.js","../../lib/helpers/resolveConfig.js","../../lib/adapters/xhr.js","../../lib/helpers/composeSignals.js","../../lib/helpers/trackStream.js","../../lib/adapters/fetch.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.js","../../lib/env/data.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js"],"sourcesContent":["'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst { toString } = Object.prototype;\nconst { getPrototypeOf } = Object;\nconst { iterator, toStringTag } = Symbol;\n\nconst kindOf = ((cache) => (thing) => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type;\n};\n\nconst typeOfTest = (type) => (thing) => typeof thing === type;\n\n/**\n * Determine if a value is a non-null object\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst { isArray } = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return (\n val !== null &&\n !isUndefined(val) &&\n val.constructor !== null &&\n !isUndefined(val.constructor) &&\n isFunction(val.constructor.isBuffer) &&\n val.constructor.isBuffer(val)\n );\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && isArrayBuffer(val.buffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = (thing) => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (\n (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(toStringTag in val) &&\n !(iterator in val)\n );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n * \n * @param {*} value The value to test\n * \n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n return !!(value && typeof value.uri !== 'undefined');\n}\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n * \n * @param {*} formData The formData to test\n * \n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') return globalThis;\n if (typeof self !== 'undefined') return self;\n if (typeof window !== 'undefined') return window;\n if (typeof global !== 'undefined') return global;\n return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (FormDataCtor && thing instanceof FormDataCtor) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n 'ReadableStream',\n 'Request',\n 'Response',\n 'Headers',\n].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => {\n return str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n};\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, { allOwnKeys = false } = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n if (isBuffer(obj)) {\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== 'undefined') return globalThis;\n return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global;\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * const result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};\n const result = {};\n const assignValue = (val, key) => {\n // Skip dangerous property names to prevent prototype pollution\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n\n const targetKey = (caseless && findKey(result, key)) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n forEach(\n b,\n (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n value: bind(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(a, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n },\n { allOwnKeys }\n );\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xfeff) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n Object.defineProperty(constructor.prototype, 'constructor', {\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype,\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = ((TypedArray) => {\n // eslint-disable-next-line func-names\n return (thing) => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = (str) => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n ({ hasOwnProperty }) =>\n (obj, prop) =>\n hasOwnProperty.call(obj, prop)\n)(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error(\"Can not rewrite read-only method '\" + name + \"'\");\n };\n }\n });\n};\n\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\n */\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach((value) => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(\n thing &&\n isFunction(thing.append) &&\n thing[toStringTag] === 'FormData' &&\n thing[iterator]\n );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if (!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n thing &&\n (isObject(thing) || isFunction(thing)) &&\n isFunction(thing.then) &&\n isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported\n ? ((token, callbacks) => {\n _global.addEventListener(\n 'message',\n ({ source, data }) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n },\n false\n );\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, '*');\n };\n })(`axios@${Math.random()}`, [])\n : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n typeof queueMicrotask !== 'undefined'\n ? queueMicrotask.bind(_global)\n : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isReactNativeBlob,\n isReactNative,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n\n // Preserve status from the original error if not already set from response\n if (error.status != null && axiosError.status == null) {\n axiosError.status = error.status;\n }\n\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\n\n /**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\n constructor(message, code, config, request, response) {\n super(message);\n \n // Make message enumerable to maintain backward compatibility\n // The native Error constructor sets message as non-enumerable,\n // but axios < v1.13.3 had it as enumerable\n Object.defineProperty(this, 'message', {\n value: message,\n enumerable: true,\n writable: true,\n configurable: true\n });\n \n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path\n .concat(key)\n .map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n })\n .join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(\n options,\n {\n metaTokens: true,\n dots: false,\n indexes: false,\n },\n false,\n function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n }\n );\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob);\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n formData.append(renderKey(path, key, dots), convertValue(value));\n return false;\n }\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)))\n ) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) &&\n formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true\n ? renderKey([key], index, dots)\n : indexes === null\n ? key\n : key + '[]',\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable,\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result =\n !(utils.isUndefined(el) || el === null) &&\n visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00',\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder\n ? function (value) {\n return encoder.call(this, value, encode);\n }\n : encode;\n\n return this._pairs\n .map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '')\n .join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val)\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = (options && options.encode) || encode;\n\n const _options = utils.isFunction(options)\n ? {\n serialize: options,\n }\n : options;\n\n const serializeFn = _options && _options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, _options);\n } else {\n serializedParams = utils.isURLSearchParams(params)\n ? params.toString()\n : new AxiosURLSearchParams(params, _options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n * @param {Object} options The options for the interceptor, synchronous and runWhen\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null,\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false,\n legacyInterceptorReqResOrdering: true,\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict';\n\nexport default typeof Blob !== 'undefined' ? Blob : null;\n","import URLSearchParams from './classes/URLSearchParams.js';\nimport FormData from './classes/FormData.js';\nimport Blob from './classes/Blob.js';\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob,\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data'],\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = (typeof navigator === 'object' && navigator) || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv =\n hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin,\n};\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function (value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options,\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map((match) => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [\n function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if (\n (isFileList = utils.isFileList(data)) ||\n contentType.indexOf('multipart/form-data') > -1\n ) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? { 'files[]': data } : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n },\n ],\n\n transformResponse: [\n function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (\n data &&\n utils.isString(data) &&\n ((forcedJSONParsing && !this.responseType) || JSONRequested)\n ) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n },\n ],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob,\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': undefined,\n },\n },\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age',\n 'authorization',\n 'content-length',\n 'content-type',\n 'etag',\n 'expires',\n 'from',\n 'host',\n 'if-modified-since',\n 'if-unmodified-since',\n 'last-modified',\n 'location',\n 'max-forwards',\n 'proxy-authorization',\n 'referer',\n 'retry-after',\n 'user-agent',\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default (rawHeaders) => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders &&\n rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header\n .trim()\n .toLowerCase()\n .replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach((methodName) => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function (arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true,\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if (\n !key ||\n self[key] === undefined ||\n _rewrite === true ||\n (_rewrite === undefined && self[key] !== false)\n ) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {},\n dest,\n key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[(key = entry[0])] = (dest = obj[key])\n ? utils.isArray(dest)\n ? [...dest, entry[1]]\n : [dest, entry[1]]\n : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(\n key &&\n this[key] !== undefined &&\n (!matcher || matchHeaderValue(this, this[key], key, matcher))\n );\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null &&\n value !== false &&\n (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON())\n .map(([header, value]) => header + ': ' + value)\n .join('\\n');\n }\n\n getSetCookie() {\n return this.get('set-cookie') || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals =\n (this[$internals] =\n this[$internals] =\n {\n accessors: {},\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor([\n 'Content-Type',\n 'Content-Length',\n 'Accept',\n 'Accept-Encoding',\n 'User-Agent',\n 'Authorization',\n]);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n },\n };\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from '../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\n\nclass CanceledError extends AxiosError {\n /**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\n}\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(\n new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][\n Math.floor(response.status / 100) - 4\n ],\n response.config,\n response.request,\n response\n )\n );\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return (match && match[1]) || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round((bytesCount * 1000) / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if (passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle((e) => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? loaded / total : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true,\n };\n\n listener(data);\n }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [\n (loaded) =>\n throttled[0]({\n lengthComputable,\n total,\n loaded,\n }),\n throttled[1],\n ];\n};\n\nexport const asyncDecorator =\n (fn) =>\n (...args) =>\n utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n })(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n )\n : () => true;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n },\n }\n : // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {},\n };\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n if (typeof url !== 'string') {\n return false;\n }\n\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst headersToObject = (thing) => (thing instanceof AxiosHeaders ? { ...thing } : thing);\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({ caseless }, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) =>\n mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n };\n\n utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(\n buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls),\n config.params,\n config.paramsSerializer\n );\n\n // HTTP basic authentication\n if (auth) {\n headers.set(\n 'Authorization',\n 'Basic ' +\n btoa(\n (auth.username || '') +\n ':' +\n (auth.password ? unescape(encodeURIComponent(auth.password)) : '')\n )\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n","import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let { responseType, onUploadProgress, onDownloadProgress } = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData =\n !responseType || responseType === 'text' || responseType === 'json'\n ? request.responseText\n : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request,\n };\n\n settle(\n function _resolve(value) {\n resolve(value);\n done();\n },\n function _reject(err) {\n reject(err);\n done();\n },\n response\n );\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (\n request.status === 0 &&\n !(request.responseURL && request.responseURL.indexOf('file:') === 0)\n ) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout\n ? 'timeout of ' + _config.timeout + 'ms exceeded'\n : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(\n new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request\n )\n );\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = (cancel) => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted\n ? onCanceled()\n : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(\n new AxiosError(\n 'Unsupported protocol ' + protocol + ':',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\n );\n return;\n }\n\n // Send the request\n request.send(requestData || null);\n });\n };\n","import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const { length } = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(\n err instanceof AxiosError\n ? err\n : new CanceledError(err instanceof Error ? err.message : err)\n );\n }\n };\n\n let timer =\n timeout &&\n setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach((signal) => {\n signal.unsubscribe\n ? signal.unsubscribe(onabort)\n : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const { signal } = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n};\n\nexport default composeSignals;\n","export const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream(\n {\n async pull(controller) {\n try {\n const { done, value } = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = (bytes += len);\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n },\n },\n {\n highWaterMark: 2,\n }\n );\n};\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n progressEventReducer,\n progressEventDecorator,\n asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\nconst globalFetchAPI = (({ Request, Response }) => ({\n Request,\n Response,\n}))(utils.global);\n\nconst { ReadableStream, TextEncoder } = utils.global;\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false;\n }\n};\n\nconst factory = (env) => {\n env = utils.merge.call(\n {\n skipUndefined: true,\n },\n globalFetchAPI,\n env\n );\n\n const { fetch: envFetch, Request, Response } = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText =\n isFetchSupported &&\n (typeof TextEncoder === 'function'\n ? (\n (encoder) => (str) =>\n encoder.encode(str)\n )(new TextEncoder())\n : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n const supportsRequestStream =\n isRequestSupported &&\n isReadableStreamSupported &&\n test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream =\n isResponseSupported &&\n isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body),\n };\n\n isFetchSupported &&\n (() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n !resolvers[type] &&\n (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(\n `Response type '${type}' is not supported`,\n AxiosError.ERR_NOT_SUPPORT,\n config\n );\n });\n });\n })();\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions,\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals(\n [signal, cancelToken && cancelToken.toAbortSignal()],\n timeout\n );\n\n let request = null;\n\n const unsubscribe =\n composedSignal &&\n composedSignal.unsubscribe &&\n (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress &&\n supportsRequestStream &&\n method !== 'get' &&\n method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: 'half',\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: 'half',\n credentials: isCredentialsSupported ? withCredentials : undefined,\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported\n ? _fetch(request, fetchOptions)\n : _fetch(url, resolvedOptions));\n\n const isStreamResponse =\n supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach((prop) => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] =\n (onDownloadProgress &&\n progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n )) ||\n [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n response,\n config\n );\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request,\n });\n });\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError(\n 'Network Error',\n AxiosError.ERR_NETWORK,\n config,\n request,\n err && err.response\n ),\n {\n cause: err.cause || err,\n }\n );\n }\n\n throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n }\n };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const { fetch, Request, Response } = env;\n const seeds = [Request, Response, fetch];\n\n let len = seeds.length,\n i = len,\n seed,\n target,\n map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n },\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', { value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons).map(\n ([id, state]) =>\n `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length\n ? reasons.length > 1\n ? 'since :\\n' + reasons.map(renderReason).join('\\n')\n : ' ' + renderReason(reasons[0])\n : 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object}\n */\n adapters: knownAdapters,\n};\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from '../adapters/adapters.js';\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(config, config.transformRequest);\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(\n function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, config.transformResponse, response);\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n },\n function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n }\n );\n}\n","export const VERSION = \"1.13.6\";","'use strict';\n\nimport { VERSION } from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return (\n '[Axios v' +\n VERSION +\n \"] Transitional option '\" +\n opt +\n \"'\" +\n desc +\n (message ? '. ' + message : '')\n );\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError(\n 'option ' + opt + ' must be ' + result,\n AxiosError.ERR_BAD_OPTION_VALUE\n );\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\nimport transitionalDefaults from '../defaults/transitional.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager(),\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack;\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const { transitional, paramsSerializer, headers } = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(\n transitional,\n {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean),\n legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n },\n false\n );\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer,\n };\n } else {\n validator.assertOptions(\n paramsSerializer,\n {\n encode: validators.function,\n serialize: validators.function,\n },\n true\n );\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(\n config,\n {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken'),\n },\n true\n );\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(headers.common, headers[config.method]);\n\n headers &&\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => {\n delete headers[method];\n });\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n const transitional = config.transitional || transitionalDefaults;\n const legacyInterceptorReqResOrdering =\n transitional && transitional.legacyInterceptorReqResOrdering;\n\n if (legacyInterceptorReqResOrdering) {\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n } else {\n requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n }\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data,\n })\n );\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n headers: isForm\n ? {\n 'Content-Type': 'multipart/form-data',\n }\n : {},\n url,\n data,\n })\n );\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then((cancel) => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = (onfulfilled) => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise((resolve) => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel,\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * const args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && payload.isAxiosError === true;\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport { VERSION } from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from './core/AxiosHeaders.js';\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, { allOwnKeys: true });\n\n // Copy context to instance\n utils.extend(instance, context, null, { allOwnKeys: true });\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = (thing) => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios;\n"],"names":["isFunction","utils","AxiosError","encode","URLSearchParams","FormData","Blob","platform","defaults","AxiosHeaders","CanceledError","ReadableStream","composeSignals","fetchAdapter.getFetch","validators","InterceptorManager","Axios","CancelToken","HttpStatusCode"],"mappings":";;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE;AAC1C,EAAE,OAAO,SAAS,IAAI,GAAG;AACzB,IAAI,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACxC,GAAG,CAAC;AACJ;;ACTA;AACA;AACA,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;AACtC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;AAClC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;AACzC;AACA,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,KAAK;AACtC,EAAE,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACrE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACxB;AACA,MAAM,UAAU,GAAG,CAAC,IAAI,KAAK;AAC7B,EAAE,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,EAAE,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AAC3C,CAAC,CAAC;AACF;AACA,MAAM,UAAU,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,IAAI,CAAC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,EAAE;AACF,IAAI,GAAG,KAAK,IAAI;AAChB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACrB,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;AACjC,IAAIA,YAAU,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC;AACxC,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;AACjC,IAAI;AACJ,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,GAAG,EAAE;AAChC,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;AAChE,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACrC,GAAG,MAAM;AACT,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC5D,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,YAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK;AAC/B,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;AAChC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AACxC,EAAE;AACF,IAAI,CAAC,SAAS,KAAK,IAAI;AACvB,MAAM,SAAS,KAAK,MAAM,CAAC,SAAS;AACpC,MAAM,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,IAAI;AAC/C,IAAI,EAAE,WAAW,IAAI,GAAG,CAAC;AACzB,IAAI,EAAE,QAAQ,IAAI,GAAG,CAAC;AACtB,IAAI;AACJ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK;AAC/B;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACvC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,IAAI;AACN,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC;AAC5F,GAAG,CAAC,OAAO,CAAC,EAAE;AACd;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iBAAiB,GAAG,CAAC,KAAK,KAAK;AACrC,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC;AACvD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,WAAW,CAAC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,IAAIA,YAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,GAAG;AACrB,EAAE,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,OAAO,UAAU,CAAC;AAC3D,EAAE,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,OAAO,IAAI,CAAC;AAC/C,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;AACnD,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;AACnD,EAAE,OAAO,EAAE,CAAC;AACZ,CAAC;AACD;AACA,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;AACtB,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,QAAQ,KAAK,WAAW,GAAG,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC;AAChF;AACA,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK;AAC9B,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,OAAO,KAAK;AACd,IAAI,CAAC,YAAY,IAAI,KAAK,YAAY,YAAY;AAClD,MAAMA,YAAU,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9B,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,UAAU;AAC7C;AACA,SAAS,IAAI,KAAK,QAAQ,IAAIA,YAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,mBAAmB,CAAC;AACrG,OAAO;AACP,KAAK;AACL,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACxD;AACA,MAAM,CAAC,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,GAAG;AAC7D,EAAE,gBAAgB;AAClB,EAAE,SAAS;AACX,EAAE,UAAU;AACZ,EAAE,SAAS;AACX,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK;AACtB,EAAE,OAAO,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC;AACvF,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE;AACvD;AACA,EAAE,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;AAClD,IAAI,OAAO;AACX,GAAG;AACH;AACA,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,CAAC,CAAC;AACR;AACA;AACA,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B;AACA,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAChB,GAAG;AACH;AACA,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AACpB;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC5C,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACpC,KAAK;AACL,GAAG,MAAM;AACT;AACA,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACvB,MAAM,OAAO;AACb,KAAK;AACL;AACA;AACA,IAAI,MAAM,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjF,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAC5B,IAAI,IAAI,GAAG,CAAC;AACZ;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;AAC3B,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;AAC1B,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACtB,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AAClB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,IAAI,GAAG,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AACpC,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD;AACA,MAAM,OAAO,GAAG,CAAC,MAAM;AACvB;AACA,EAAE,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,OAAO,UAAU,CAAC;AAC3D,EAAE,OAAO,OAAO,IAAI,KAAK,WAAW,GAAG,IAAI,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9F,CAAC,GAAG,CAAC;AACL;AACA,MAAM,gBAAgB,GAAG,CAAC,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,OAAO,CAAC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,8BAA8B;AAC5C,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;AAC7E,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAE,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;AACpC;AACA,IAAI,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,WAAW,EAAE;AAC7E,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,MAAM,SAAS,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC;AAChE,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;AAChE,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;AACxD,KAAK,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;AACnC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACzC,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AAC7B,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AACtC,KAAK,MAAM,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AACpD,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;AAC9B,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpD,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AACvD,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK;AACvD,EAAE,OAAO;AACT,IAAI,CAAC;AACL,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;AAClB,MAAM,IAAI,OAAO,IAAIA,YAAU,CAAC,GAAG,CAAC,EAAE;AACtC,QAAQ,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE;AACtC,UAAU,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;AACnC,UAAU,QAAQ,EAAE,IAAI;AACxB,UAAU,UAAU,EAAE,IAAI;AAC1B,UAAU,YAAY,EAAE,IAAI;AAC5B,SAAS,CAAC,CAAC;AACX,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE;AACtC,UAAU,KAAK,EAAE,GAAG;AACpB,UAAU,QAAQ,EAAE,IAAI;AACxB,UAAU,UAAU,EAAE,IAAI;AAC1B,UAAU,YAAY,EAAE,IAAI;AAC5B,SAAS,CAAC,CAAC;AACX,OAAO;AACP,KAAK;AACL,IAAI,EAAE,UAAU,EAAE;AAClB,GAAG,CAAC;AACJ,EAAE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,OAAO,KAAK;AAC9B,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;AACxC,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,KAAK;AACxE,EAAE,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACjF,EAAE,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE;AAC9D,IAAI,KAAK,EAAE,WAAW;AACtB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,YAAY,EAAE,IAAI;AACtB,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE;AAC9C,IAAI,KAAK,EAAE,gBAAgB,CAAC,SAAS;AACrC,GAAG,CAAC,CAAC;AACL,EAAE,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,KAAK;AACjE,EAAE,IAAI,KAAK,CAAC;AACZ,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC1B;AACA,EAAE,IAAI,SAAS,IAAI,IAAI,EAAE,OAAO,OAAO,CAAC;AACxC;AACA,EAAE,GAAG;AACL,IAAI,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAClD,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AACrB,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACpB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,MAAM,IAAI,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAClF,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACxC,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC5B,OAAO;AACP,KAAK;AACL,IAAI,SAAS,GAAG,MAAM,KAAK,KAAK,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;AAC9D,GAAG,QAAQ,SAAS,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,EAAE;AACnG;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,KAAK;AAClD,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,EAAE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACvD,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;AAC1B,GAAG;AACH,EAAE,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC;AAClC,EAAE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACxD,EAAE,OAAO,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,KAAK,QAAQ,CAAC;AACpD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK;AAC3B,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC;AAC1B,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;AACnC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC;AAChC,EAAE,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AAClB,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,CAAC,UAAU,KAAK;AACtC;AACA,EAAE,OAAO,CAAC,KAAK,KAAK;AACpB,IAAI,OAAO,UAAU,IAAI,KAAK,YAAY,UAAU,CAAC;AACrD,GAAG,CAAC;AACJ,CAAC,EAAE,OAAO,UAAU,KAAK,WAAW,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK;AAClC,EAAE,MAAM,SAAS,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzC;AACA,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC;AACA,EAAE,IAAI,MAAM,CAAC;AACb;AACA,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;AACtD,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9B,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,GAAG;AACH,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK;AAClC,EAAE,IAAI,OAAO,CAAC;AACd,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AACjB;AACA,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE;AAChD,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtB,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF;AACA;AACA,MAAM,UAAU,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACjD;AACA,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK;AAC7B,EAAE,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,uBAAuB,EAAE,SAAS,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;AACzF,IAAI,OAAO,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;AACjC,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF;AACA;AACA,MAAM,cAAc,GAAG;AACvB,EAAE,CAAC,EAAE,cAAc,EAAE;AACrB,EAAE,CAAC,GAAG,EAAE,IAAI;AACZ,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;AAClC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC;AACA,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AAC5C,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;AAC5D,EAAE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAChC;AACA,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK;AAC7C,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,KAAK,EAAE;AAC1D,MAAM,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC;AACnD,KAAK;AACL,GAAG,CAAC,CAAC;AACL;AACA,EAAE,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;AACnD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK;AAC/B,EAAE,iBAAiB,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK;AAC/C;AACA,IAAI,IAAIA,YAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACnF,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL;AACA,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B;AACA,IAAI,IAAI,CAACA,YAAU,CAAC,KAAK,CAAC,EAAE,OAAO;AACnC;AACA,IAAI,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;AAClC;AACA,IAAI,IAAI,UAAU,IAAI,UAAU,EAAE;AAClC,MAAM,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;AAClC,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;AACzB,MAAM,UAAU,CAAC,GAAG,GAAG,MAAM;AAC7B,QAAQ,MAAM,KAAK,CAAC,oCAAoC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;AACvE,OAAO,CAAC;AACR,KAAK;AACL,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,aAAa,EAAE,SAAS,KAAK;AAClD,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AACjB;AACA,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK;AAC1B,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC3B,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACxB,KAAK,CAAC,CAAC;AACP,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AAClG;AACA,EAAE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF;AACA,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC;AACtB;AACA,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK;AAChD,EAAE,OAAO,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,YAAY,CAAC;AACnF,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE;AACpC,EAAE,OAAO,CAAC;AACV,IAAI,KAAK;AACT,IAAIA,YAAU,CAAC,KAAK,CAAC,MAAM,CAAC;AAC5B,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,UAAU;AACrC,IAAI,KAAK,CAAC,QAAQ,CAAC;AACnB,GAAG,CAAC;AACJ,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,GAAG,KAAK;AAC9B,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9B;AACA,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK;AAC/B,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC1B,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACtC,QAAQ,OAAO;AACf,OAAO;AACP;AACA;AACA,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC5B,QAAQ,OAAO,MAAM,CAAC;AACtB,OAAO;AACP;AACA,MAAM,IAAI,EAAE,QAAQ,IAAI,MAAM,CAAC,EAAE;AACjC,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC1B,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACjD;AACA,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK;AACxC,UAAU,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;AACrE,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAC7B;AACA,QAAQ,OAAO,MAAM,CAAC;AACtB,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACvB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,KAAK;AACzB,EAAE,KAAK;AACP,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAIA,YAAU,CAAC,KAAK,CAAC,CAAC;AACxC,EAAEA,YAAU,CAAC,KAAK,CAAC,IAAI,CAAC;AACxB,EAAEA,YAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,CAAC,qBAAqB,EAAE,oBAAoB,KAAK;AACxE,EAAE,IAAI,qBAAqB,EAAE;AAC7B,IAAI,OAAO,YAAY,CAAC;AACxB,GAAG;AACH;AACA,EAAE,OAAO,oBAAoB;AAC7B,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,KAAK;AAC7B,QAAQ,OAAO,CAAC,gBAAgB;AAChC,UAAU,SAAS;AACnB,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK;AAChC,YAAY,IAAI,MAAM,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,EAAE;AACtD,cAAc,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;AACtD,aAAa;AACb,WAAW;AACX,UAAU,KAAK;AACf,SAAS,CAAC;AACV;AACA,QAAQ,OAAO,CAAC,EAAE,KAAK;AACvB,UAAU,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7B,UAAU,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC1C,SAAS,CAAC;AACV,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACtC,MAAM,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC,EAAE,OAAO,YAAY,KAAK,UAAU,EAAEA,YAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI;AACV,EAAE,OAAO,cAAc,KAAK,WAAW;AACvC,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC,MAAM,CAAC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,KAAK,aAAa,CAAC;AAC5E;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,IAAIA,YAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3E;AACA,cAAe;AACf,EAAE,OAAO;AACT,EAAE,aAAa;AACf,EAAE,QAAQ;AACV,EAAE,UAAU;AACZ,EAAE,iBAAiB;AACnB,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,SAAS;AACX,EAAE,QAAQ;AACV,EAAE,aAAa;AACf,EAAE,aAAa;AACf,EAAE,gBAAgB;AAClB,EAAE,SAAS;AACX,EAAE,UAAU;AACZ,EAAE,SAAS;AACX,EAAE,WAAW;AACb,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,iBAAiB;AACnB,EAAE,aAAa;AACf,EAAE,MAAM;AACR,EAAE,QAAQ;AACV,cAAEA,YAAU;AACZ,EAAE,QAAQ;AACV,EAAE,iBAAiB;AACnB,EAAE,YAAY;AACd,EAAE,UAAU;AACZ,EAAE,OAAO;AACT,EAAE,KAAK;AACP,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,YAAY;AACd,EAAE,MAAM;AACR,EAAE,UAAU;AACZ,EAAE,QAAQ;AACV,EAAE,OAAO;AACT,EAAE,YAAY;AACd,EAAE,QAAQ;AACV,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,UAAU,EAAE,cAAc;AAC5B,EAAE,iBAAiB;AACnB,EAAE,aAAa;AACf,EAAE,WAAW;AACb,EAAE,WAAW;AACb,EAAE,IAAI;AACN,EAAE,cAAc;AAChB,EAAE,OAAO;AACT,EAAE,MAAM,EAAE,OAAO;AACjB,EAAE,gBAAgB;AAClB,EAAE,mBAAmB;AACrB,EAAE,YAAY;AACd,EAAE,SAAS;AACX,EAAE,UAAU;AACZ,EAAE,YAAY,EAAE,aAAa;AAC7B,EAAE,IAAI;AACN,EAAE,UAAU;AACZ,CAAC;;ACl5BD,MAAM,UAAU,SAAS,KAAK,CAAC;AAC/B,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE;AACnE,IAAI,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACpG,IAAI,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7B,IAAI,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AACjC;AACA;AACA,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,EAAE;AAC3D,MAAM,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACvC,KAAK;AACL;AACA,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAC1D,IAAI,OAAO,UAAU,CAAC;AACtB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC1D,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;AACrB;AACA;AACA;AACA;AACA,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AAC7C,UAAU,KAAK,EAAE,OAAO;AACxB,UAAU,UAAU,EAAE,IAAI;AAC1B,UAAU,QAAQ,EAAE,IAAI;AACxB,UAAU,YAAY,EAAE,IAAI;AAC5B,OAAO,CAAC,CAAC;AACT;AACA,MAAM,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;AAC/B,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,MAAM,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AACjC,MAAM,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AACvC,MAAM,OAAO,KAAK,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;AAC1C,MAAM,IAAI,QAAQ,EAAE;AACpB,UAAU,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACnC,UAAU,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AACxC,OAAO;AACP,KAAK;AACL;AACA,EAAE,MAAM,GAAG;AACX,IAAI,OAAO;AACX;AACA,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB;AACA,MAAM,WAAW,EAAE,IAAI,CAAC,WAAW;AACnC,MAAM,MAAM,EAAE,IAAI,CAAC,MAAM;AACzB;AACA,MAAM,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC7B,MAAM,UAAU,EAAE,IAAI,CAAC,UAAU;AACjC,MAAM,YAAY,EAAE,IAAI,CAAC,YAAY;AACrC,MAAM,KAAK,EAAE,IAAI,CAAC,KAAK;AACvB;AACA,MAAM,MAAM,EAAEC,OAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7C,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB,MAAM,MAAM,EAAE,IAAI,CAAC,MAAM;AACzB,KAAK,CAAC;AACN,GAAG;AACH,CAAC;AACD;AACA;AACA,UAAU,CAAC,oBAAoB,GAAG,sBAAsB,CAAC;AACzD,UAAU,CAAC,cAAc,GAAG,gBAAgB,CAAC;AAC7C,UAAU,CAAC,YAAY,GAAG,cAAc,CAAC;AACzC,UAAU,CAAC,SAAS,GAAG,WAAW,CAAC;AACnC,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC;AACvC,UAAU,CAAC,yBAAyB,GAAG,2BAA2B,CAAC;AACnE,UAAU,CAAC,cAAc,GAAG,gBAAgB,CAAC;AAC7C,UAAU,CAAC,gBAAgB,GAAG,kBAAkB,CAAC;AACjD,UAAU,CAAC,eAAe,GAAG,iBAAiB,CAAC;AAC/C,UAAU,CAAC,YAAY,GAAG,cAAc,CAAC;AACzC,UAAU,CAAC,eAAe,GAAG,iBAAiB,CAAC;AAC/C,UAAU,CAAC,eAAe,GAAG,iBAAiB,CAAC;AAC/C;AACA,mBAAe,UAAU;;ACzFzB;AACA,kBAAe,IAAI;;ACMnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,EAAE,OAAOA,OAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAIA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B,EAAE,OAAOA,OAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AACpC,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC;AACxB,EAAE,OAAO,IAAI;AACb,KAAK,MAAM,CAAC,GAAG,CAAC;AAChB,KAAK,GAAG,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE;AACjC;AACA,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AACpC,MAAM,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;AACpD,KAAK,CAAC;AACN,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;AAC3B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,OAAOA,OAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACtD,CAAC;AACD;AACA,MAAM,UAAU,GAAGA,OAAK,CAAC,YAAY,CAACA,OAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE;AAC7E,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC5C,EAAE,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5B,IAAI,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;AACpD,GAAG;AACH;AACA;AACA,EAAE,QAAQ,GAAG,QAAQ,IAAI,KAAyB,QAAQ,GAAG,CAAC;AAC9D;AACA;AACA,EAAE,OAAO,GAAGA,OAAK,CAAC,YAAY;AAC9B,IAAI,OAAO;AACX,IAAI;AACJ,MAAM,UAAU,EAAE,IAAI;AACtB,MAAM,IAAI,EAAE,KAAK;AACjB,MAAM,OAAO,EAAE,KAAK;AACpB,KAAK;AACL,IAAI,KAAK;AACT,IAAI,SAAS,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE;AACrC;AACA,MAAM,OAAO,CAACA,OAAK,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACxC;AACA,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC;AACpD,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC5B,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAClC,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC;AACtE,EAAE,MAAM,OAAO,GAAG,KAAK,IAAIA,OAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAC/D;AACA,EAAE,IAAI,CAACA,OAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AAClC,IAAI,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAC;AACtD,GAAG;AACH;AACA,EAAE,SAAS,YAAY,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC;AAClC;AACA,IAAI,IAAIA,OAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC7B,MAAM,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;AACjC,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAChC,MAAM,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC9B,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,IAAIA,OAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACzC,MAAM,MAAM,IAAIC,YAAU,CAAC,8CAA8C,CAAC,CAAC;AAC3E,KAAK;AACL;AACA,IAAI,IAAID,OAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAIA,OAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AACjE,MAAM,OAAO,OAAO,IAAI,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5F,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC;AACpB;AACA,IAAI,IAAIA,OAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAIA,OAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AACzE,MAAM,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACvE,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL;AACA,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrD,MAAM,IAAIA,OAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE;AACrC;AACA,QAAQ,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD;AACA,QAAQ,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACtC,OAAO,MAAM;AACb,QAAQ,CAACA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC;AACnD,SAAS,CAACA,OAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAIA,OAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChG,QAAQ;AACR;AACA,QAAQ,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AAClC;AACA,QAAQ,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE;AAC7C,UAAU,EAAEA,OAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;AACjD,YAAY,QAAQ,CAAC,MAAM;AAC3B;AACA,cAAc,OAAO,KAAK,IAAI;AAC9B,kBAAkB,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC;AAC/C,kBAAkB,OAAO,KAAK,IAAI;AAClC,oBAAoB,GAAG;AACvB,oBAAoB,GAAG,GAAG,IAAI;AAC9B,cAAc,YAAY,CAAC,EAAE,CAAC;AAC9B,aAAa,CAAC;AACd,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AAC5B,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACrE;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;AACnD,IAAI,cAAc;AAClB,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,GAAG,CAAC,CAAC;AACL;AACA,EAAE,SAAS,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;AAC9B,IAAI,IAAIA,OAAK,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO;AACzC;AACA,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACrC,MAAM,MAAM,KAAK,CAAC,iCAAiC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,KAAK;AACL;AACA,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtB;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE;AAChD,MAAM,MAAM,MAAM;AAClB,QAAQ,EAAEA,OAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;AAC/C,QAAQ,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAEA,OAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACjG;AACA,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE;AAC3B,QAAQ,KAAK,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;AAChB,GAAG;AACH;AACA,EAAE,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5B,IAAI,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC;AAClD,GAAG;AACH;AACA,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACb;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,QAAM,CAAC,GAAG,EAAE;AACrB,EAAE,MAAM,OAAO,GAAG;AAClB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,KAAK,EAAE,GAAG;AACd,IAAI,KAAK,EAAE,MAAM;AACjB,GAAG,CAAC;AACJ,EAAE,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,SAAS,QAAQ,CAAC,KAAK,EAAE;AACtF,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1B,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE;AAC/C,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AACD;AACA,MAAM,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC;AACjD;AACA,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;AAChD,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;AACA,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,OAAO,EAAE;AAChD,EAAE,MAAM,OAAO,GAAG,OAAO;AACzB,MAAM,UAAU,KAAK,EAAE;AACvB,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAEA,QAAM,CAAC,CAAC;AACjD,OAAO;AACP,MAAMA,QAAM,CAAC;AACb;AACA,EAAE,OAAO,IAAI,CAAC,MAAM;AACpB,KAAK,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE;AAC7B,MAAM,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,KAAK,EAAE,EAAE,CAAC;AACV,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;;ACtDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,CAAC,GAAG,EAAE;AACrB,EAAE,OAAO,kBAAkB,CAAC,GAAG,CAAC;AAChC,KAAK,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AAC1B,KAAK,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACzB,KAAK,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AAC1B,KAAK,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC1B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;AACvD,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC;AACxD;AACA,EAAE,MAAM,QAAQ,GAAGF,OAAK,CAAC,UAAU,CAAC,OAAO,CAAC;AAC5C,MAAM;AACN,QAAQ,SAAS,EAAE,OAAO;AAC1B,OAAO;AACP,MAAM,OAAO,CAAC;AACd;AACA,EAAE,MAAM,WAAW,GAAG,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC;AACrD;AACA,EAAE,IAAI,gBAAgB,CAAC;AACvB;AACA,EAAE,IAAI,WAAW,EAAE;AACnB,IAAI,gBAAgB,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACrD,GAAG,MAAM;AACT,IAAI,gBAAgB,GAAGA,OAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC;AACtD,QAAQ,MAAM,CAAC,QAAQ,EAAE;AACzB,QAAQ,IAAI,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACrE,GAAG;AACH;AACA,EAAE,IAAI,gBAAgB,EAAE;AACxB,IAAI,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3C;AACA,IAAI,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;AAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,gBAAgB,CAAC;AACpE,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb;;AC7DA,MAAM,kBAAkB,CAAC;AACzB,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACvB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE;AACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvB,MAAM,SAAS;AACf,MAAM,QAAQ;AACd,MAAM,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,KAAK;AACxD,MAAM,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI;AAC/C,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACpC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,EAAE,EAAE;AACZ,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;AAC/B,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,MAAM,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACzB,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,CAAC,EAAE,EAAE;AACd,IAAIA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,cAAc,CAAC,CAAC,EAAE;AAC5D,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;AACtB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AACd,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,CAAC;AACD;AACA,2BAAe,kBAAkB;;ACrEjC,2BAAe;AACf,EAAE,iBAAiB,EAAE,IAAI;AACzB,EAAE,iBAAiB,EAAE,IAAI;AACzB,EAAE,mBAAmB,EAAE,KAAK;AAC5B,EAAE,+BAA+B,EAAE,IAAI;AACvC,CAAC;;ACJD,wBAAe,OAAO,eAAe,KAAK,WAAW,GAAG,eAAe,GAAG,oBAAoB;;ACD9F,iBAAe,OAAO,QAAQ,KAAK,WAAW,GAAG,QAAQ,GAAG,IAAI;;ACAhE,aAAe,OAAO,IAAI,KAAK,WAAW,GAAG,IAAI,GAAG,IAAI;;ACExD,iBAAe;AACf,EAAE,SAAS,EAAE,IAAI;AACjB,EAAE,OAAO,EAAE;AACX,qBAAIG,iBAAe;AACnB,cAAIC,UAAQ;AACZ,UAAIC,MAAI;AACR,GAAG;AACH,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;AAC7D,CAAC;;ACZD,MAAM,aAAa,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,CAAC;AACvF;AACA,MAAM,UAAU,GAAG,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,SAAS,CAAC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,qBAAqB;AAC3B,EAAE,aAAa;AACf,GAAG,CAAC,UAAU,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8BAA8B,GAAG,CAAC,MAAM;AAC9C,EAAE;AACF,IAAI,OAAO,iBAAiB,KAAK,WAAW;AAC5C;AACA,IAAI,IAAI,YAAY,iBAAiB;AACrC,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU;AAC5C,IAAI;AACJ,CAAC,GAAG,CAAC;AACL;AACA,MAAM,MAAM,GAAG,CAAC,aAAa,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,kBAAkB;;;;;;;;;;;ACxC5E,eAAe;AACf,EAAE,GAAG,KAAK;AACV,EAAE,GAAGC,UAAQ;AACb,CAAC;;ACAc,SAAS,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE;AACxD,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE;AAClE,IAAI,OAAO,EAAE,UAAU,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;AAClD,MAAM,IAAI,QAAQ,CAAC,MAAM,IAAIN,OAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACpD,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnD,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP;AACA,MAAM,OAAO,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,GAAG,OAAO;AACd,GAAG,CAAC,CAAC;AACL;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B;AACA;AACA;AACA;AACA,EAAE,OAAOA,OAAK,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;AAC9D,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AACzD,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AACjB,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACxB,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,QAAQ,EAAE;AAClC,EAAE,SAAS,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AACjD,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7B;AACA,IAAI,IAAI,IAAI,KAAK,WAAW,EAAE,OAAO,IAAI,CAAC;AAC1C;AACA,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChD,IAAI,MAAM,MAAM,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;AACxC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;AACjE;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;AAC1C,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AAC7C,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAC7B,OAAO;AACP;AACA,MAAM,OAAO,CAAC,YAAY,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AACxD,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACxB,KAAK;AACL;AACA,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/D;AACA,IAAI,IAAI,MAAM,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/C,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,OAAO,CAAC,YAAY,CAAC;AACzB,GAAG;AACH;AACA,EAAE,IAAIA,OAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAIA,OAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACxE,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;AACnB;AACA,IAAIA,OAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;AAClD,MAAM,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACpD,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;AACpD,EAAE,IAAIA,OAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAChC,IAAI,IAAI;AACR,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACvC,MAAM,OAAOA,OAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClC,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE;AACpC,QAAQ,MAAM,CAAC,CAAC;AAChB,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC;AACD;AACA,MAAM,QAAQ,GAAG;AACjB,EAAE,YAAY,EAAE,oBAAoB;AACpC;AACA,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;AACnC;AACA,EAAE,gBAAgB,EAAE;AACpB,IAAI,SAAS,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE;AAC7C,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;AACzD,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9E,MAAM,MAAM,eAAe,GAAGA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnD;AACA,MAAM,IAAI,eAAe,IAAIA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACrD,QAAQ,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClC,OAAO;AACP;AACA,MAAM,MAAM,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAChD;AACA,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,OAAO,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AAChF,OAAO;AACP;AACA,MAAM;AACN,QAAQA,OAAK,CAAC,aAAa,CAAC,IAAI,CAAC;AACjC,QAAQA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5B,QAAQA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5B,QAAQA,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1B,QAAQA,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1B,QAAQA,OAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACpC,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,MAAM,IAAIA,OAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,OAAO;AACP,MAAM,IAAIA,OAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACzC,QAAQ,OAAO,CAAC,cAAc,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;AACzF,QAAQ,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC/B,OAAO;AACP;AACA,MAAM,IAAI,UAAU,CAAC;AACrB;AACA,MAAM,IAAI,eAAe,EAAE;AAC3B,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC,mCAAmC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3E,UAAU,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxE,SAAS;AACT;AACA,QAAQ;AACR,UAAU,CAAC,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9C,UAAU,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACzD,UAAU;AACV,UAAU,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1D;AACA,UAAU,OAAO,UAAU;AAC3B,YAAY,UAAU,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI;AACnD,YAAY,SAAS,IAAI,IAAI,SAAS,EAAE;AACxC,YAAY,IAAI,CAAC,cAAc;AAC/B,WAAW,CAAC;AACZ,SAAS;AACT,OAAO;AACP;AACA,MAAM,IAAI,eAAe,IAAI,kBAAkB,EAAE;AACjD,QAAQ,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAC1D,QAAQ,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AACrC,OAAO;AACP;AACA,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,GAAG;AACH;AACA,EAAE,iBAAiB,EAAE;AACrB,IAAI,SAAS,iBAAiB,CAAC,IAAI,EAAE;AACrC,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC;AACtE,MAAM,MAAM,iBAAiB,GAAG,YAAY,IAAI,YAAY,CAAC,iBAAiB,CAAC;AAC/E,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC;AACzD;AACA,MAAM,IAAIA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAIA,OAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;AAClE,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP;AACA,MAAM;AACN,QAAQ,IAAI;AACZ,QAAQA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5B,SAAS,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,aAAa,CAAC;AACpE,QAAQ;AACR,QAAQ,MAAM,iBAAiB,GAAG,YAAY,IAAI,YAAY,CAAC,iBAAiB,CAAC;AACjF,QAAQ,MAAM,iBAAiB,GAAG,CAAC,iBAAiB,IAAI,aAAa,CAAC;AACtE;AACA,QAAQ,IAAI;AACZ,UAAU,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACrD,SAAS,CAAC,OAAO,CAAC,EAAE;AACpB,UAAU,IAAI,iBAAiB,EAAE;AACjC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE;AAC1C,cAAc,MAAMC,YAAU,CAAC,IAAI,CAAC,CAAC,EAAEA,YAAU,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/F,aAAa;AACb,YAAY,MAAM,CAAC,CAAC;AACpB,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,EAAE,CAAC;AACZ;AACA,EAAE,cAAc,EAAE,YAAY;AAC9B,EAAE,cAAc,EAAE,cAAc;AAChC;AACA,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACtB,EAAE,aAAa,EAAE,CAAC,CAAC;AACnB;AACA,EAAE,GAAG,EAAE;AACP,IAAI,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ;AACvC,IAAI,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI;AAC/B,GAAG;AACH;AACA,EAAE,cAAc,EAAE,SAAS,cAAc,CAAC,MAAM,EAAE;AAClD,IAAI,OAAO,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC;AACzC,GAAG;AACH;AACA,EAAE,OAAO,EAAE;AACX,IAAI,MAAM,EAAE;AACZ,MAAM,MAAM,EAAE,mCAAmC;AACjD,MAAM,cAAc,EAAE,SAAS;AAC/B,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF;AACAD,OAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,KAAK;AAC7E,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAChC,CAAC,CAAC,CAAC;AACH;AACA,iBAAe,QAAQ;;ACvKvB;AACA;AACA,MAAM,iBAAiB,GAAGA,OAAK,CAAC,WAAW,CAAC;AAC5C,EAAE,KAAK;AACP,EAAE,eAAe;AACjB,EAAE,gBAAgB;AAClB,EAAE,cAAc;AAChB,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,mBAAmB;AACrB,EAAE,qBAAqB;AACvB,EAAE,eAAe;AACjB,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,qBAAqB;AACvB,EAAE,SAAS;AACX,EAAE,aAAa;AACf,EAAE,YAAY;AACd,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAe,CAAC,UAAU,KAAK;AAC/B,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,IAAI,CAAC,CAAC;AACR;AACA,EAAE,UAAU;AACZ,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE;AACzD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACtD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzC;AACA,MAAM,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3D,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,IAAI,GAAG,KAAK,YAAY,EAAE;AAChC,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;AACzB,UAAU,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,SAAS,MAAM;AACf,UAAU,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AACnE,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;;AC/DD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACvC;AACA,SAAS,eAAe,CAAC,MAAM,EAAE;AACjC,EAAE,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACvD,CAAC;AACD;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,EAAE,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,EAAE;AACxC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,OAAOA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AACD;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,EAAE,MAAM,QAAQ,GAAG,kCAAkC,CAAC;AACtD,EAAE,IAAI,KAAK,CAAC;AACZ;AACA,EAAE,QAAQ,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;AACvC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA,MAAM,iBAAiB,GAAG,CAAC,GAAG,KAAK,gCAAgC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACrF;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE;AAC9E,EAAE,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAChC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,IAAI,kBAAkB,EAAE;AAC1B,IAAI,KAAK,GAAG,MAAM,CAAC;AACnB,GAAG;AACH;AACA,EAAE,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;AACrC;AACA,EAAE,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9B,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,GAAG;AACH;AACA,EAAE,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9B,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,GAAG;AACH,CAAC;AACD;AACA,SAAS,YAAY,CAAC,MAAM,EAAE;AAC9B,EAAE,OAAO,MAAM;AACf,KAAK,IAAI,EAAE;AACX,KAAK,WAAW,EAAE;AAClB,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK;AAClD,MAAM,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC;AACtC,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACA,SAAS,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE;AACrC,EAAE,MAAM,YAAY,GAAGA,OAAK,CAAC,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;AACvD;AACA,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AAChD,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,YAAY,EAAE;AAC1D,MAAM,KAAK,EAAE,UAAU,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrE,OAAO;AACP,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAC,CAAC;AACP,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA,MAAM,YAAY,CAAC;AACnB,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE;AACvC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,SAAS,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAClD,MAAM,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAC/C;AACA,MAAM,IAAI,CAAC,OAAO,EAAE;AACpB,QAAQ,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAClE,OAAO;AACP;AACA,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/C;AACA,MAAM;AACN,QAAQ,CAAC,GAAG;AACZ,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;AAC/B,QAAQ,QAAQ,KAAK,IAAI;AACzB,SAAS,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;AACvD,QAAQ;AACR,QAAQ,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AACtD,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,QAAQ;AACzC,MAAMA,OAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxF;AACA,IAAI,IAAIA,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,YAAY,IAAI,CAAC,WAAW,EAAE;AAC3E,MAAM,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AACzC,KAAK,MAAM,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;AACjG,MAAM,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC;AACvD,KAAK,MAAM,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACnE,MAAM,IAAI,GAAG,GAAG,EAAE;AAClB,QAAQ,IAAI;AACZ,QAAQ,GAAG,CAAC;AACZ,MAAM,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAClC,QAAQ,IAAI,CAACA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACnC,UAAU,MAAM,SAAS,CAAC,8CAA8C,CAAC,CAAC;AAC1E,SAAS;AACT;AACA,QAAQ,GAAG,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC;AAChD,YAAYA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AAC/B,cAAc,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,OAAO;AACP;AACA,MAAM,UAAU,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;AACtC,KAAK,MAAM;AACX,MAAM,MAAM,IAAI,IAAI,IAAI,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACnE,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE;AACtB,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AACrC;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C;AACA,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC;AACA,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,UAAU,OAAO,KAAK,CAAC;AACvB,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,UAAU,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AACpC,SAAS;AACT;AACA,QAAQ,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACtC,UAAU,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/C,SAAS;AACT;AACA,QAAQ,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,UAAU,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,SAAS;AACT;AACA,QAAQ,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;AACtE,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE;AACvB,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AACrC;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C;AACA,MAAM,OAAO,CAAC;AACd,QAAQ,GAAG;AACX,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;AAC/B,SAAS,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACrE,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;AAC1B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC;AACxB;AACA,IAAI,SAAS,YAAY,CAAC,OAAO,EAAE;AACnC,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AACzC;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACjD;AACA,QAAQ,IAAI,GAAG,KAAK,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE;AAClF,UAAU,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B;AACA,UAAU,OAAO,GAAG,IAAI,CAAC;AACzB,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC/B,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACnC,KAAK,MAAM;AACX,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,EAAE,KAAK,CAAC,OAAO,EAAE;AACjB,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACxB,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC;AACxB;AACA,IAAI,OAAO,CAAC,EAAE,EAAE;AAChB,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B,MAAM,IAAI,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;AAC7E,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,EAAE,SAAS,CAAC,MAAM,EAAE;AACpB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;AAC3C,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACjD;AACA,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/E;AACA,MAAM,IAAI,UAAU,KAAK,MAAM,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,OAAO;AACP;AACA,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/C;AACA,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;AACjC,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,GAAG,OAAO,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC;AACrD,GAAG;AACH;AACA,EAAE,MAAM,CAAC,SAAS,EAAE;AACpB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;AAC3C,MAAM,KAAK,IAAI,IAAI;AACnB,QAAQ,KAAK,KAAK,KAAK;AACvB,SAAS,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,IAAIA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;AACrF,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;AACtB,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC5D,GAAG;AACH;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACxC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;AACtD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;AAClB,GAAG;AACH;AACA,EAAE,YAAY,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACxC,GAAG;AACH;AACA,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC,GAAG;AAC7B,IAAI,OAAO,cAAc,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE;AACrB,IAAI,OAAO,KAAK,YAAY,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3D,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC,KAAK,EAAE,GAAG,OAAO,EAAE;AACnC,IAAI,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC;AACA,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD;AACA,IAAI,OAAO,QAAQ,CAAC;AACpB,GAAG;AACH;AACA,EAAE,OAAO,QAAQ,CAAC,MAAM,EAAE;AAC1B,IAAI,MAAM,SAAS;AACnB,OAAO,IAAI,CAAC,UAAU,CAAC;AACvB,MAAM,IAAI,CAAC,UAAU,CAAC;AACtB,QAAQ;AACR,UAAU,SAAS,EAAE,EAAE;AACvB,SAAS,CAAC,CAAC;AACX;AACA,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;AAC1C,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACrC;AACA,IAAI,SAAS,cAAc,CAAC,OAAO,EAAE;AACrC,MAAM,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAC/C;AACA,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AAC/B,QAAQ,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC3C,QAAQ,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;AAClC,OAAO;AACP,KAAK;AACL;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AACpF;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,CAAC;AACD;AACA,YAAY,CAAC,QAAQ,CAAC;AACtB,EAAE,cAAc;AAChB,EAAE,gBAAgB;AAClB,EAAE,QAAQ;AACV,EAAE,iBAAiB;AACnB,EAAE,YAAY;AACd,EAAE,eAAe;AACjB,CAAC,CAAC,CAAC;AACH;AACA;AACAA,OAAK,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK;AACpE,EAAE,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,EAAE,OAAO;AACT,IAAI,GAAG,EAAE,MAAM,KAAK;AACpB,IAAI,GAAG,CAAC,WAAW,EAAE;AACrB,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;AACjC,KAAK;AACL,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACAA,OAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AAClC;AACA,qBAAe,YAAY;;ACjV3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE;AACrD,EAAE,MAAM,MAAM,GAAG,IAAI,IAAIO,UAAQ,CAAC;AAClC,EAAE,MAAM,OAAO,GAAG,QAAQ,IAAI,MAAM,CAAC;AACrC,EAAE,MAAM,OAAO,GAAGC,cAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACrD,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC1B;AACA,EAAER,OAAK,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,SAAS,CAAC,EAAE,EAAE;AAC5C,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAC9F,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;AACtB;AACA,EAAE,OAAO,IAAI,CAAC;AACd;;ACzBe,SAAS,QAAQ,CAAC,KAAK,EAAE;AACxC,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;AACvC;;ACAA,MAAM,aAAa,SAASC,YAAU,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACxC,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,GAAG,UAAU,GAAG,OAAO,EAAEA,YAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5F,IAAI,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;AAChC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,GAAG;AACH,CAAC;AACD;AACA,sBAAe,aAAa;;ACjB5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC1D,EAAE,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC;AACxD,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9E,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;AACtB,GAAG,MAAM;AACT,IAAI,MAAM;AACV,MAAM,IAAIA,YAAU;AACpB,QAAQ,kCAAkC,GAAG,QAAQ,CAAC,MAAM;AAC5D,QAAQ,CAACA,YAAU,CAAC,eAAe,EAAEA,YAAU,CAAC,gBAAgB,CAAC;AACjE,UAAU,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC;AAC/C,SAAS;AACT,QAAQ,QAAQ,CAAC,MAAM;AACvB,QAAQ,QAAQ,CAAC,OAAO;AACxB,QAAQ,QAAQ;AAChB,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH;;AC5Be,SAAS,aAAa,CAAC,GAAG,EAAE;AAC3C,EAAE,MAAM,KAAK,GAAG,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtD,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACnC;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,YAAY,EAAE,GAAG,EAAE;AACxC,EAAE,YAAY,GAAG,YAAY,IAAI,EAAE,CAAC;AACpC,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AACxC,EAAE,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAC7C,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;AACf,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;AACf,EAAE,IAAI,aAAa,CAAC;AACpB;AACA,EAAE,GAAG,GAAG,GAAG,KAAK,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC;AACvC;AACA,EAAE,OAAO,SAAS,IAAI,CAAC,WAAW,EAAE;AACpC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC3B;AACA,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,IAAI,IAAI,CAAC,aAAa,EAAE;AACxB,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,KAAK;AACL;AACA,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;AAC9B,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AAC3B;AACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACjB,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;AACvB;AACA,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE;AACvB,MAAM,UAAU,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,YAAY,CAAC;AACrC;AACA,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AACvB,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,YAAY,CAAC;AACvC,KAAK;AACL;AACA,IAAI,IAAI,GAAG,GAAG,aAAa,GAAG,GAAG,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,MAAM,MAAM,GAAG,SAAS,IAAI,GAAG,GAAG,SAAS,CAAC;AAChD;AACA,IAAI,OAAO,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC;AACzE,GAAG,CAAC;AACJ;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE;AAC5B,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;AACpB,EAAE,IAAI,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9B,EAAE,IAAI,QAAQ,CAAC;AACf,EAAE,IAAI,KAAK,CAAC;AACZ;AACA,EAAE,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK;AAC7C,IAAI,SAAS,GAAG,GAAG,CAAC;AACpB,IAAI,QAAQ,GAAG,IAAI,CAAC;AACpB,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;AAC1B,MAAM,KAAK,GAAG,IAAI,CAAC;AACnB,KAAK;AACL,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAChB,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,KAAK;AACjC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC3B,IAAI,MAAM,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC;AACnC,IAAI,IAAI,MAAM,IAAI,SAAS,EAAE;AAC7B,MAAM,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACxB,KAAK,MAAM;AACX,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,IAAI,CAAC,KAAK,EAAE;AAClB,QAAQ,KAAK,GAAG,UAAU,CAAC,MAAM;AACjC,UAAU,KAAK,GAAG,IAAI,CAAC;AACvB,UAAU,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3B,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC;AAC/B,OAAO;AACP,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,KAAK,GAAG,MAAM,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnD;AACA,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC5B;;ACrCO,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,GAAG,CAAC,KAAK;AAC9E,EAAE,IAAI,aAAa,GAAG,CAAC,CAAC;AACxB,EAAE,MAAM,YAAY,GAAG,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC5C;AACA,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK;AACzB,IAAI,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC5B,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC;AAC3D,IAAI,MAAM,aAAa,GAAG,MAAM,GAAG,aAAa,CAAC;AACjD,IAAI,MAAM,IAAI,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;AAC7C,IAAI,MAAM,OAAO,GAAG,MAAM,IAAI,KAAK,CAAC;AACpC;AACA,IAAI,aAAa,GAAG,MAAM,CAAC;AAC3B;AACA,IAAI,MAAM,IAAI,GAAG;AACjB,MAAM,MAAM;AACZ,MAAM,KAAK;AACX,MAAM,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS;AAClD,MAAM,KAAK,EAAE,aAAa;AAC1B,MAAM,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS;AACnC,MAAM,SAAS,EAAE,IAAI,IAAI,KAAK,IAAI,OAAO,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,IAAI,GAAG,SAAS;AAC/E,MAAM,KAAK,EAAE,CAAC;AACd,MAAM,gBAAgB,EAAE,KAAK,IAAI,IAAI;AACrC,MAAM,CAAC,gBAAgB,GAAG,UAAU,GAAG,QAAQ,GAAG,IAAI;AACtD,KAAK,CAAC;AACN;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnB,GAAG,EAAE,IAAI,CAAC,CAAC;AACX,CAAC,CAAC;AACF;AACO,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK;AAC5D,EAAE,MAAM,gBAAgB,GAAG,KAAK,IAAI,IAAI,CAAC;AACzC;AACA,EAAE,OAAO;AACT,IAAI,CAAC,MAAM;AACX,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC;AACnB,QAAQ,gBAAgB;AACxB,QAAQ,KAAK;AACb,QAAQ,MAAM;AACd,OAAO,CAAC;AACR,IAAI,SAAS,CAAC,CAAC,CAAC;AAChB,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACO,MAAM,cAAc;AAC3B,EAAE,CAAC,EAAE;AACL,EAAE,CAAC,GAAG,IAAI;AACV,IAAID,OAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;;AChDjC,sBAAe,QAAQ,CAAC,qBAAqB;AAC7C,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,KAAK;AAClC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1C;AACA,MAAM;AACN,QAAQ,MAAM,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ;AACxC,QAAQ,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;AAChC,SAAS,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC;AAC5C,QAAQ;AACR,KAAK;AACL,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC9B,MAAM,QAAQ,CAAC,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC;AAChF,KAAK;AACL,IAAI,MAAM,IAAI;;ACZd,cAAe,QAAQ,CAAC,qBAAqB;AAC7C;AACA,IAAI;AACJ,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;AAClE,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,OAAO;AACpD;AACA,QAAQ,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE;AACA,QAAQ,IAAIA,OAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACrC,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,SAAS;AACT,QAAQ,IAAIA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAClC,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,SAAS;AACT,QAAQ,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1C,SAAS;AACT,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,UAAU,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,SAAS;AACT,QAAQ,IAAIA,OAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACtC,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9C,SAAS;AACT;AACA,QAAQ,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,OAAO;AACP;AACA,MAAM,IAAI,CAAC,IAAI,EAAE;AACjB,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,OAAO,IAAI,CAAC;AACzD,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;AACxF,QAAQ,OAAO,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAC3D,OAAO;AACP;AACA,MAAM,MAAM,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC;AACzD,OAAO;AACP,KAAK;AACL;AACA,IAAI;AACJ,MAAM,KAAK,GAAG,EAAE;AAChB,MAAM,IAAI,GAAG;AACb,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,MAAM,MAAM,GAAG,EAAE;AACjB,KAAK;;AC7CL;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,aAAa,CAAC,GAAG,EAAE;AAC3C;AACA;AACA;AACA,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,OAAO,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjD;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE;AAC1D,EAAE,OAAO,WAAW;AACpB,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AAC3E,MAAM,OAAO,CAAC;AACd;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE;AAChF,EAAE,IAAI,aAAa,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AACnD,EAAE,IAAI,OAAO,KAAK,aAAa,IAAI,iBAAiB,IAAI,KAAK,CAAC,EAAE;AAChE,IAAI,OAAO,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,OAAO,YAAY,CAAC;AACtB;;AChBA,MAAM,eAAe,GAAG,CAAC,KAAK,MAAM,KAAK,YAAYQ,cAAY,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AACtD;AACA,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC1B,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,SAAS,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC1D,IAAI,IAAIR,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAIA,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AACpE,MAAM,OAAOA,OAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5D,KAAK,MAAM,IAAIA,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AAC5C,MAAM,OAAOA,OAAK,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACrC,KAAK,MAAM,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACtC,MAAM,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH;AACA,EAAE,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;AACrD,IAAI,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAClD,KAAK,MAAM,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AACtC,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC1D,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;AAClC,IAAI,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;AAClC,IAAI,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK,MAAM,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AACtC,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;AACvC,IAAI,IAAI,IAAI,IAAI,OAAO,EAAE;AACzB,MAAM,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,KAAK,MAAM,IAAI,IAAI,IAAI,OAAO,EAAE;AAChC,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,GAAG;AACH;AACA,EAAE,MAAM,QAAQ,GAAG;AACnB,IAAI,GAAG,EAAE,gBAAgB;AACzB,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,iBAAiB,EAAE,gBAAgB;AACvC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,eAAe,EAAE,gBAAgB;AACrC,IAAI,aAAa,EAAE,gBAAgB;AACnC,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,YAAY,EAAE,gBAAgB;AAClC,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,kBAAkB,EAAE,gBAAgB;AACxC,IAAI,UAAU,EAAE,gBAAgB;AAChC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,aAAa,EAAE,gBAAgB;AACnC,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,SAAS,EAAE,gBAAgB;AAC/B,IAAI,SAAS,EAAE,gBAAgB;AAC/B,IAAI,UAAU,EAAE,gBAAgB;AAChC,IAAI,WAAW,EAAE,gBAAgB;AACjC,IAAI,UAAU,EAAE,gBAAgB;AAChC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,cAAc,EAAE,eAAe;AACnC,IAAI,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI;AACxB,MAAM,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;AAC7E,GAAG,CAAC;AACJ;AACA,EAAEA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,EAAE,SAAS,kBAAkB,CAAC,IAAI,EAAE;AAC3F,IAAI,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,WAAW,EAAE,OAAO;AACvF,IAAI,MAAM,KAAK,GAAGA,OAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC;AAC1F,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAClE,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,eAAe,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;AAClG,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB;;ACjGA,oBAAe,CAAC,MAAM,KAAK;AAC3B,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C;AACA,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;AACzF;AACA,EAAE,SAAS,CAAC,OAAO,GAAG,OAAO,GAAGQ,cAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3D;AACA,EAAE,SAAS,CAAC,GAAG,GAAG,QAAQ;AAC1B,IAAI,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,iBAAiB,CAAC;AAChF,IAAI,MAAM,CAAC,MAAM;AACjB,IAAI,MAAM,CAAC,gBAAgB;AAC3B,GAAG,CAAC;AACJ;AACA;AACA,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,eAAe;AACrB,MAAM,QAAQ;AACd,QAAQ,IAAI;AACZ,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE;AAC9B,YAAY,GAAG;AACf,aAAa,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;AAC9E,SAAS;AACT,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAE,IAAIR,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC9B,IAAI,IAAI,QAAQ,CAAC,qBAAqB,IAAI,QAAQ,CAAC,8BAA8B,EAAE;AACnF,MAAM,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACxC,KAAK,MAAM,IAAIA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAClD;AACA,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC5C;AACA,MAAM,MAAM,cAAc,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;AAChE,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK;AAC1D,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE;AACxD,UAAU,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,QAAQ,CAAC,qBAAqB,EAAE;AACtC,IAAI,aAAa,IAAIA,OAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;AACnG;AACA,IAAI,IAAI,aAAa,KAAK,aAAa,KAAK,KAAK,IAAI,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE;AACtF;AACA,MAAM,MAAM,SAAS,GAAG,cAAc,IAAI,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACzF;AACA,MAAM,IAAI,SAAS,EAAE;AACrB,QAAQ,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAC/C,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,SAAS,CAAC;AACnB,CAAC;;AC1DD,MAAM,qBAAqB,GAAG,OAAO,cAAc,KAAK,WAAW,CAAC;AACpE;AACA,iBAAe,qBAAqB;AACpC,EAAE,UAAU,MAAM,EAAE;AACpB,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE;AACpE,MAAM,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAC5C,MAAM,IAAI,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;AACrC,MAAM,MAAM,cAAc,GAAGQ,cAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;AAC5E,MAAM,IAAI,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;AAC3E,MAAM,IAAI,UAAU,CAAC;AACrB,MAAM,IAAI,eAAe,EAAE,iBAAiB,CAAC;AAC7C,MAAM,IAAI,WAAW,EAAE,aAAa,CAAC;AACrC;AACA,MAAM,SAAS,IAAI,GAAG;AACtB,QAAQ,WAAW,IAAI,WAAW,EAAE,CAAC;AACrC,QAAQ,aAAa,IAAI,aAAa,EAAE,CAAC;AACzC;AACA,QAAQ,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAC3E;AACA,QAAQ,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAClF,OAAO;AACP;AACA,MAAM,IAAI,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;AACzC;AACA,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACpE;AACA;AACA,MAAM,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AACxC;AACA,MAAM,SAAS,SAAS,GAAG;AAC3B,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,UAAU,OAAO;AACjB,SAAS;AACT;AACA,QAAQ,MAAM,eAAe,GAAGA,cAAY,CAAC,IAAI;AACjD,UAAU,uBAAuB,IAAI,OAAO,IAAI,OAAO,CAAC,qBAAqB,EAAE;AAC/E,SAAS,CAAC;AACV,QAAQ,MAAM,YAAY;AAC1B,UAAU,CAAC,YAAY,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,MAAM;AAC7E,cAAc,OAAO,CAAC,YAAY;AAClC,cAAc,OAAO,CAAC,QAAQ,CAAC;AAC/B,QAAQ,MAAM,QAAQ,GAAG;AACzB,UAAU,IAAI,EAAE,YAAY;AAC5B,UAAU,MAAM,EAAE,OAAO,CAAC,MAAM;AAChC,UAAU,UAAU,EAAE,OAAO,CAAC,UAAU;AACxC,UAAU,OAAO,EAAE,eAAe;AAClC,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB,SAAS,CAAC;AACV;AACA,QAAQ,MAAM;AACd,UAAU,SAAS,QAAQ,CAAC,KAAK,EAAE;AACnC,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,WAAW;AACX,UAAU,SAAS,OAAO,CAAC,GAAG,EAAE;AAChC,YAAY,MAAM,CAAC,GAAG,CAAC,CAAC;AACxB,YAAY,IAAI,EAAE,CAAC;AACnB,WAAW;AACX,UAAU,QAAQ;AAClB,SAAS,CAAC;AACV;AACA;AACA,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO;AACP;AACA,MAAM,IAAI,WAAW,IAAI,OAAO,EAAE;AAClC;AACA,QAAQ,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AACtC,OAAO,MAAM;AACb;AACA,QAAQ,OAAO,CAAC,kBAAkB,GAAG,SAAS,UAAU,GAAG;AAC3D,UAAU,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,EAAE;AACpD,YAAY,OAAO;AACnB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,YAAY,OAAO,CAAC,MAAM,KAAK,CAAC;AAChC,YAAY,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChF,YAAY;AACZ,YAAY,OAAO;AACnB,WAAW;AACX;AACA;AACA,UAAU,UAAU,CAAC,SAAS,CAAC,CAAC;AAChC,SAAS,CAAC;AACV,OAAO;AACP;AACA;AACA,MAAM,OAAO,CAAC,OAAO,GAAG,SAAS,WAAW,GAAG;AAC/C,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,UAAU,OAAO;AACjB,SAAS;AACT;AACA,QAAQ,MAAM,CAAC,IAAIP,YAAU,CAAC,iBAAiB,EAAEA,YAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5F;AACA;AACA,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO,CAAC;AACR;AACA;AACA,MAAM,OAAO,CAAC,OAAO,GAAG,SAAS,WAAW,CAAC,KAAK,EAAE;AACpD;AACA;AACA;AACA,QAAQ,MAAM,GAAG,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,eAAe,CAAC;AAC7E,QAAQ,MAAM,GAAG,GAAG,IAAIA,YAAU,CAAC,GAAG,EAAEA,YAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACjF;AACA,QAAQ,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC;AAClC,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO,CAAC;AACR;AACA;AACA,MAAM,OAAO,CAAC,SAAS,GAAG,SAAS,aAAa,GAAG;AACnD,QAAQ,IAAI,mBAAmB,GAAG,OAAO,CAAC,OAAO;AACjD,YAAY,aAAa,GAAG,OAAO,CAAC,OAAO,GAAG,aAAa;AAC3D,YAAY,kBAAkB,CAAC;AAC/B,QAAQ,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,oBAAoB,CAAC;AAC1E,QAAQ,IAAI,OAAO,CAAC,mBAAmB,EAAE;AACzC,UAAU,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;AAC5D,SAAS;AACT,QAAQ,MAAM;AACd,UAAU,IAAIA,YAAU;AACxB,YAAY,mBAAmB;AAC/B,YAAY,YAAY,CAAC,mBAAmB,GAAGA,YAAU,CAAC,SAAS,GAAGA,YAAU,CAAC,YAAY;AAC7F,YAAY,MAAM;AAClB,YAAY,OAAO;AACnB,WAAW;AACX,SAAS,CAAC;AACV;AACA;AACA,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO,CAAC;AACR;AACA;AACA,MAAM,WAAW,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACvE;AACA;AACA,MAAM,IAAI,kBAAkB,IAAI,OAAO,EAAE;AACzC,QAAQD,OAAK,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE;AACnF,UAAU,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7C,SAAS,CAAC,CAAC;AACX,OAAO;AACP;AACA;AACA,MAAM,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;AACvD,QAAQ,OAAO,CAAC,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;AAC5D,OAAO;AACP;AACA;AACA,MAAM,IAAI,YAAY,IAAI,YAAY,KAAK,MAAM,EAAE;AACnD,QAAQ,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;AACpD,OAAO;AACP;AACA;AACA,MAAM,IAAI,kBAAkB,EAAE;AAC9B,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,GAAG,oBAAoB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AAC5F,QAAQ,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;AAChE,OAAO;AACP;AACA;AACA,MAAM,IAAI,gBAAgB,IAAI,OAAO,CAAC,MAAM,EAAE;AAC9C,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AAChF;AACA,QAAQ,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AACrE;AACA,QAAQ,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAChE,OAAO;AACP;AACA,MAAM,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE;AACjD;AACA;AACA,QAAQ,UAAU,GAAG,CAAC,MAAM,KAAK;AACjC,UAAU,IAAI,CAAC,OAAO,EAAE;AACxB,YAAY,OAAO;AACnB,WAAW;AACX,UAAU,MAAM,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,IAAIS,eAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;AAC7F,UAAU,OAAO,CAAC,KAAK,EAAE,CAAC;AAC1B,UAAU,OAAO,GAAG,IAAI,CAAC;AACzB,SAAS,CAAC;AACV;AACA,QAAQ,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACzE,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;AAC5B,UAAU,OAAO,CAAC,MAAM,CAAC,OAAO;AAChC,cAAc,UAAU,EAAE;AAC1B,cAAc,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACnE,SAAS;AACT,OAAO;AACP;AACA,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAClD;AACA,MAAM,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AACnE,QAAQ,MAAM;AACd,UAAU,IAAIR,YAAU;AACxB,YAAY,uBAAuB,GAAG,QAAQ,GAAG,GAAG;AACpD,YAAYA,YAAU,CAAC,eAAe;AACtC,YAAY,MAAM;AAClB,WAAW;AACX,SAAS,CAAC;AACV,QAAQ,OAAO;AACf,OAAO;AACP;AACA;AACA,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;AACxC,KAAK,CAAC,CAAC;AACP,GAAG;;ACzNH,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK;AAC7C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACxE;AACA,EAAE,IAAI,OAAO,IAAI,MAAM,EAAE;AACzB,IAAI,IAAI,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;AAC3C;AACA,IAAI,IAAI,OAAO,CAAC;AAChB;AACA,IAAI,MAAM,OAAO,GAAG,UAAU,MAAM,EAAE;AACtC,MAAM,IAAI,CAAC,OAAO,EAAE;AACpB,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,QAAQ,WAAW,EAAE,CAAC;AACtB,QAAQ,MAAM,GAAG,GAAG,MAAM,YAAY,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACnE,QAAQ,UAAU,CAAC,KAAK;AACxB,UAAU,GAAG,YAAYA,YAAU;AACnC,cAAc,GAAG;AACjB,cAAc,IAAIQ,eAAa,CAAC,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC;AACzE,SAAS,CAAC;AACV,OAAO;AACP,KAAK,CAAC;AACN;AACA,IAAI,IAAI,KAAK;AACb,MAAM,OAAO;AACb,MAAM,UAAU,CAAC,MAAM;AACvB,QAAQ,KAAK,GAAG,IAAI,CAAC;AACrB,QAAQ,OAAO,CAAC,IAAIR,YAAU,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,EAAEA,YAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1F,OAAO,EAAE,OAAO,CAAC,CAAC;AAClB;AACA,IAAI,MAAM,WAAW,GAAG,MAAM;AAC9B,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;AACrC,QAAQ,KAAK,GAAG,IAAI,CAAC;AACrB,QAAQ,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACpC,UAAU,MAAM,CAAC,WAAW;AAC5B,cAAc,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;AACzC,cAAc,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3D,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO;AACP,KAAK,CAAC;AACN;AACA,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3E;AACA,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;AAClC;AACA,IAAI,MAAM,CAAC,WAAW,GAAG,MAAMD,OAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACvD;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,CAAC,CAAC;AACF;AACA,uBAAe,cAAc;;ACvDtB,MAAM,WAAW,GAAG,WAAW,KAAK,EAAE,SAAS,EAAE;AACxD,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;AAC7B;AACA,EAAE,IAAI,CAAC,SAAS,IAAI,GAAG,GAAG,SAAS,EAAE;AACrC,IAAI,MAAM,KAAK,CAAC;AAChB,IAAI,OAAO;AACX,GAAG;AACH;AACA,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;AACd,EAAE,IAAI,GAAG,CAAC;AACV;AACA,EAAE,OAAO,GAAG,GAAG,GAAG,EAAE;AACpB,IAAI,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;AAC1B,IAAI,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,IAAI,GAAG,GAAG,GAAG,CAAC;AACd,GAAG;AACH,CAAC,CAAC;AACF;AACO,MAAM,SAAS,GAAG,iBAAiB,QAAQ,EAAE,SAAS,EAAE;AAC/D,EAAE,WAAW,MAAM,KAAK,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;AAClD,IAAI,OAAO,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACzC,GAAG;AACH,CAAC,CAAC;AACF;AACA,MAAM,UAAU,GAAG,iBAAiB,MAAM,EAAE;AAC5C,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;AACpC,IAAI,OAAO,MAAM,CAAC;AAClB,IAAI,OAAO;AACX,GAAG;AACH;AACA,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AACpC,EAAE,IAAI;AACN,IAAI,SAAS;AACb,MAAM,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;AAClD,MAAM,IAAI,IAAI,EAAE;AAChB,QAAQ,MAAM;AACd,OAAO;AACP,MAAM,MAAM,KAAK,CAAC;AAClB,KAAK;AACL,GAAG,SAAS;AACZ,IAAI,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;AAC1B,GAAG;AACH,CAAC,CAAC;AACF;AACO,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,KAAK;AACxE,EAAE,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAChD;AACA,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK;AACzB,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,MAAM,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9B,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,IAAI,cAAc;AAC3B,IAAI;AACJ,MAAM,MAAM,IAAI,CAAC,UAAU,EAAE;AAC7B,QAAQ,IAAI;AACZ,UAAU,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AACxD;AACA,UAAU,IAAI,IAAI,EAAE;AACpB,YAAY,SAAS,EAAE,CAAC;AACxB,YAAY,UAAU,CAAC,KAAK,EAAE,CAAC;AAC/B,YAAY,OAAO;AACnB,WAAW;AACX;AACA,UAAU,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;AACrC,UAAU,IAAI,UAAU,EAAE;AAC1B,YAAY,IAAI,WAAW,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC;AAC7C,YAAY,UAAU,CAAC,WAAW,CAAC,CAAC;AACpC,WAAW;AACX,UAAU,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,SAAS,CAAC,OAAO,GAAG,EAAE;AACtB,UAAU,SAAS,CAAC,GAAG,CAAC,CAAC;AACzB,UAAU,MAAM,GAAG,CAAC;AACpB,SAAS;AACT,OAAO;AACP,MAAM,MAAM,CAAC,MAAM,EAAE;AACrB,QAAQ,SAAS,CAAC,MAAM,CAAC,CAAC;AAC1B,QAAQ,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC;AACjC,OAAO;AACP,KAAK;AACL,IAAI;AACJ,MAAM,aAAa,EAAE,CAAC;AACtB,KAAK;AACL,GAAG,CAAC;AACJ,CAAC;;AC1ED,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAC;AACrC;AACA,MAAM,EAAE,UAAU,EAAE,GAAGA,OAAK,CAAC;AAC7B;AACA,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;AACpD,EAAE,OAAO;AACT,EAAE,QAAQ;AACV,CAAC,CAAC,EAAEA,OAAK,CAAC,MAAM,CAAC,CAAC;AAClB;AACA,MAAM,kBAAEU,gBAAc,EAAE,WAAW,EAAE,GAAGV,OAAK,CAAC,MAAM,CAAC;AACrD;AACA,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,KAAK;AAC9B,EAAE,IAAI;AACN,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AACzB,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,CAAC,CAAC;AACF;AACA,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK;AACzB,EAAE,GAAG,GAAGA,OAAK,CAAC,KAAK,CAAC,IAAI;AACxB,IAAI;AACJ,MAAM,aAAa,EAAE,IAAI;AACzB,KAAK;AACL,IAAI,cAAc;AAClB,IAAI,GAAG;AACP,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;AACrD,EAAE,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC;AACzF,EAAE,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AACjD,EAAE,MAAM,mBAAmB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnD;AACA,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACzB,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,yBAAyB,GAAG,gBAAgB,IAAI,UAAU,CAACU,gBAAc,CAAC,CAAC;AACnF;AACA,EAAE,MAAM,UAAU;AAClB,IAAI,gBAAgB;AACpB,KAAK,OAAO,WAAW,KAAK,UAAU;AACtC,QAAQ;AACR,UAAU,CAAC,OAAO,KAAK,CAAC,GAAG;AAC3B,YAAY,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AAC/B,UAAU,IAAI,WAAW,EAAE,CAAC;AAC5B,QAAQ,OAAO,GAAG,KAAK,IAAI,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC7E;AACA,EAAE,MAAM,qBAAqB;AAC7B,IAAI,kBAAkB;AACtB,IAAI,yBAAyB;AAC7B,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,IAAI,cAAc,GAAG,KAAK,CAAC;AACjC;AACA,MAAM,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC1D,QAAQ,IAAI,EAAE,IAAIA,gBAAc,EAAE;AAClC,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,IAAI,MAAM,GAAG;AACrB,UAAU,cAAc,GAAG,IAAI,CAAC;AAChC,UAAU,OAAO,MAAM,CAAC;AACxB,SAAS;AACT,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACrC;AACA,MAAM,OAAO,cAAc,IAAI,CAAC,cAAc,CAAC;AAC/C,KAAK,CAAC,CAAC;AACP;AACA,EAAE,MAAM,sBAAsB;AAC9B,IAAI,mBAAmB;AACvB,IAAI,yBAAyB;AAC7B,IAAI,IAAI,CAAC,MAAMV,OAAK,CAAC,gBAAgB,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D;AACA,EAAE,MAAM,SAAS,GAAG;AACpB,IAAI,MAAM,EAAE,sBAAsB,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC;AACzD,GAAG,CAAC;AACJ;AACA,EAAE,gBAAgB;AAClB,IAAI,CAAC,MAAM;AACX,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC9E,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;AACxB,WAAW,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK;AAC9C,YAAY,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C;AACA,YAAY,IAAI,MAAM,EAAE;AACxB,cAAc,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,aAAa;AACb;AACA,YAAY,MAAM,IAAIC,YAAU;AAChC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC;AACxD,cAAcA,YAAU,CAAC,eAAe;AACxC,cAAc,MAAM;AACpB,aAAa,CAAC;AACd,WAAW,CAAC,CAAC;AACb,OAAO,CAAC,CAAC;AACT,KAAK,GAAG,CAAC;AACT;AACA,EAAE,MAAM,aAAa,GAAG,OAAO,IAAI,KAAK;AACxC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AACtB,MAAM,OAAO,CAAC,CAAC;AACf,KAAK;AACL;AACA,IAAI,IAAID,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAC5B,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC;AACvB,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;AACzC,MAAM,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpD,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,IAAI;AACZ,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC;AACvD,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAIA,OAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AACpE,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;AACvB,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC9B,MAAM,OAAO,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;AACjD,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,iBAAiB,GAAG,OAAO,OAAO,EAAE,IAAI,KAAK;AACrD,IAAI,MAAM,MAAM,GAAGA,OAAK,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACpE;AACA,IAAI,OAAO,MAAM,IAAI,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACzD,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,OAAO,MAAM,KAAK;AAC3B,IAAI,IAAI;AACR,MAAM,GAAG;AACT,MAAM,MAAM;AACZ,MAAM,IAAI;AACV,MAAM,MAAM;AACZ,MAAM,WAAW;AACjB,MAAM,OAAO;AACb,MAAM,kBAAkB;AACxB,MAAM,gBAAgB;AACtB,MAAM,YAAY;AAClB,MAAM,OAAO;AACb,MAAM,eAAe,GAAG,aAAa;AACrC,MAAM,YAAY;AAClB,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9B;AACA,IAAI,IAAI,MAAM,GAAG,QAAQ,IAAI,KAAK,CAAC;AACnC;AACA,IAAI,YAAY,GAAG,YAAY,GAAG,CAAC,YAAY,GAAG,EAAE,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;AAC7E;AACA,IAAI,IAAI,cAAc,GAAGW,gBAAc;AACvC,MAAM,CAAC,MAAM,EAAE,WAAW,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;AAC1D,MAAM,OAAO;AACb,KAAK,CAAC;AACN;AACA,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC;AACvB;AACA,IAAI,MAAM,WAAW;AACrB,MAAM,cAAc;AACpB,MAAM,cAAc,CAAC,WAAW;AAChC,OAAO,MAAM;AACb,QAAQ,cAAc,CAAC,WAAW,EAAE,CAAC;AACrC,OAAO,CAAC,CAAC;AACT;AACA,IAAI,IAAI,oBAAoB,CAAC;AAC7B;AACA,IAAI,IAAI;AACR,MAAM;AACN,QAAQ,gBAAgB;AACxB,QAAQ,qBAAqB;AAC7B,QAAQ,MAAM,KAAK,KAAK;AACxB,QAAQ,MAAM,KAAK,MAAM;AACzB,QAAQ,CAAC,oBAAoB,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;AAC7E,QAAQ;AACR,QAAQ,IAAI,QAAQ,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;AACxC,UAAU,MAAM,EAAE,MAAM;AACxB,UAAU,IAAI,EAAE,IAAI;AACpB,UAAU,MAAM,EAAE,MAAM;AACxB,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,IAAI,iBAAiB,CAAC;AAC9B;AACA,QAAQ,IAAIX,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE;AAClG,UAAU,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;AACpD,SAAS;AACT;AACA,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;AAC3B,UAAU,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,sBAAsB;AAC5D,YAAY,oBAAoB;AAChC,YAAY,oBAAoB,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;AAClE,WAAW,CAAC;AACZ;AACA,UAAU,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACnF,SAAS;AACT,OAAO;AACP;AACA,MAAM,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AAC5C,QAAQ,eAAe,GAAG,eAAe,GAAG,SAAS,GAAG,MAAM,CAAC;AAC/D,OAAO;AACP;AACA;AACA;AACA,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,IAAI,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC;AAC9F;AACA,MAAM,MAAM,eAAe,GAAG;AAC9B,QAAQ,GAAG,YAAY;AACvB,QAAQ,MAAM,EAAE,cAAc;AAC9B,QAAQ,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;AACpC,QAAQ,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE;AAC7C,QAAQ,IAAI,EAAE,IAAI;AAClB,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,WAAW,EAAE,sBAAsB,GAAG,eAAe,GAAG,SAAS;AACzE,OAAO,CAAC;AACR;AACA,MAAM,OAAO,GAAG,kBAAkB,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;AACxE;AACA,MAAM,IAAI,QAAQ,GAAG,OAAO,kBAAkB;AAC9C,UAAU,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC;AACvC,UAAU,MAAM,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;AACxC;AACA,MAAM,MAAM,gBAAgB;AAC5B,QAAQ,sBAAsB,KAAK,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,UAAU,CAAC,CAAC;AAC7F;AACA,MAAM,IAAI,sBAAsB,KAAK,kBAAkB,KAAK,gBAAgB,IAAI,WAAW,CAAC,CAAC,EAAE;AAC/F,QAAQ,MAAM,OAAO,GAAG,EAAE,CAAC;AAC3B;AACA,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC9D,UAAU,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AACzC,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,MAAM,qBAAqB,GAAGA,OAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACnG;AACA,QAAQ,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC;AACjC,UAAU,CAAC,kBAAkB;AAC7B,YAAY,sBAAsB;AAClC,cAAc,qBAAqB;AACnC,cAAc,oBAAoB,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC;AAC5E,aAAa;AACb,UAAU,EAAE,CAAC;AACb;AACA,QAAQ,QAAQ,GAAG,IAAI,QAAQ;AAC/B,UAAU,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM;AAC3E,YAAY,KAAK,IAAI,KAAK,EAAE,CAAC;AAC7B,YAAY,WAAW,IAAI,WAAW,EAAE,CAAC;AACzC,WAAW,CAAC;AACZ,UAAU,OAAO;AACjB,SAAS,CAAC;AACV,OAAO;AACP;AACA,MAAM,YAAY,GAAG,YAAY,IAAI,MAAM,CAAC;AAC5C;AACA,MAAM,IAAI,YAAY,GAAG,MAAM,SAAS,CAACA,OAAK,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC;AAC1F,QAAQ,QAAQ;AAChB,QAAQ,MAAM;AACd,OAAO,CAAC;AACR;AACA,MAAM,CAAC,gBAAgB,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;AACxD;AACA,MAAM,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACpD,QAAQ,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;AAChC,UAAU,IAAI,EAAE,YAAY;AAC5B,UAAU,OAAO,EAAEQ,cAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AACtD,UAAU,MAAM,EAAE,QAAQ,CAAC,MAAM;AACjC,UAAU,UAAU,EAAE,QAAQ,CAAC,UAAU;AACzC,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,WAAW,IAAI,WAAW,EAAE,CAAC;AACnC;AACA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACrF,QAAQ,MAAM,MAAM,CAAC,MAAM;AAC3B,UAAU,IAAIP,YAAU;AACxB,YAAY,eAAe;AAC3B,YAAYA,YAAU,CAAC,WAAW;AAClC,YAAY,MAAM;AAClB,YAAY,OAAO;AACnB,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ;AAC/B,WAAW;AACX,UAAU;AACV,YAAY,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG;AACnC,WAAW;AACX,SAAS,CAAC;AACV,OAAO;AACP;AACA,MAAM,MAAMA,YAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AACxF,KAAK;AACL,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5B;AACO,MAAM,QAAQ,GAAG,CAAC,MAAM,KAAK;AACpC,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;AACzC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;AAC3C,EAAE,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC3C;AACA,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM;AACxB,IAAI,CAAC,GAAG,GAAG;AACX,IAAI,IAAI;AACR,IAAI,MAAM;AACV,IAAI,GAAG,GAAG,SAAS,CAAC;AACpB;AACA,EAAE,OAAO,CAAC,EAAE,EAAE;AACd,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B;AACA,IAAI,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACnF;AACA,IAAI,GAAG,GAAG,MAAM,CAAC;AACjB,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AACF;AACgB,QAAQ;;ACrUxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG;AACtB,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,GAAG,EAAE,UAAU;AACjB,EAAE,KAAK,EAAE;AACT,IAAI,GAAG,EAAEW,QAAqB;AAC9B,GAAG;AACH,CAAC,CAAC;AACF;AACA;AACAZ,OAAK,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,KAAK,KAAK;AAC5C,EAAE,IAAI,EAAE,EAAE;AACV,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACnD,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB;AACA,KAAK;AACL,IAAI,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACxD,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,gBAAgB,GAAG,CAAC,OAAO;AACjC,EAAEA,OAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE;AACtC,EAAE,QAAQ,GAAGA,OAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC7D;AACA,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;AAC9B,EAAE,IAAI,aAAa,CAAC;AACpB,EAAE,IAAI,OAAO,CAAC;AACd;AACA,EAAE,MAAM,eAAe,GAAG,EAAE,CAAC;AAC7B;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,IAAI,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChC,IAAI,IAAI,EAAE,CAAC;AACX;AACA,IAAI,OAAO,GAAG,aAAa,CAAC;AAC5B;AACA,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE;AAC1C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AAC1E;AACA,MAAM,IAAI,OAAO,KAAK,SAAS,EAAE;AACjC,QAAQ,MAAM,IAAIC,YAAU,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,OAAO,KAAKD,OAAK,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACnF,MAAM,MAAM;AACZ,KAAK;AACL;AACA,IAAI,eAAe,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAC7C,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,EAAE;AAChB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAAG;AACvD,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC;AAClB,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AACxB,SAAS,KAAK,KAAK,KAAK,GAAG,qCAAqC,GAAG,+BAA+B,CAAC;AACnG,KAAK,CAAC;AACN;AACA,IAAI,IAAI,CAAC,GAAG,MAAM;AAClB,QAAQ,OAAO,CAAC,MAAM,GAAG,CAAC;AAC1B,UAAU,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5D,UAAU,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxC,QAAQ,yBAAyB,CAAC;AAClC;AACA,IAAI,MAAM,IAAIC,YAAU;AACxB,MAAM,CAAC,qDAAqD,CAAC,GAAG,CAAC;AACjE,MAAM,iBAAiB;AACvB,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,CAAC;AACD;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,EAAE,UAAU;AACZ;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,EAAE,aAAa;AACzB,CAAC;;ACxHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,4BAA4B,CAAC,MAAM,EAAE;AAC9C,EAAE,IAAI,MAAM,CAAC,WAAW,EAAE;AAC1B,IAAI,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;AAC1C,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC9C,IAAI,MAAM,IAAIQ,eAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC1C,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,eAAe,CAAC,MAAM,EAAE;AAChD,EAAE,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACvC;AACA,EAAE,MAAM,CAAC,OAAO,GAAGD,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrD;AACA;AACA,EAAE,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACpE;AACA,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9D,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;AAC9E,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAID,UAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAClF;AACA,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI;AAC7B,IAAI,SAAS,mBAAmB,CAAC,QAAQ,EAAE;AAC3C,MAAM,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC3C;AACA;AACA,MAAM,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AACrF;AACA,MAAM,QAAQ,CAAC,OAAO,GAAGC,cAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC7D;AACA,MAAM,OAAO,QAAQ,CAAC;AACtB,KAAK;AACL,IAAI,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACxC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC7B,QAAQ,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC7C;AACA;AACA,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;AACvC,UAAU,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;AACnD,YAAY,MAAM;AAClB,YAAY,MAAM,CAAC,iBAAiB;AACpC,YAAY,MAAM,CAAC,QAAQ;AAC3B,WAAW,CAAC;AACZ,UAAU,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAGA,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/E,SAAS;AACT,OAAO;AACP;AACA,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpC,KAAK;AACL,GAAG,CAAC;AACJ;;AC5EO,MAAM,OAAO,GAAG,QAAQ;;ACK/B,MAAMK,YAAU,GAAG,EAAE,CAAC;AACtB;AACA;AACA,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AACrF,EAAEA,YAAU,CAAC,IAAI,CAAC,GAAG,SAAS,SAAS,CAAC,KAAK,EAAE;AAC/C,IAAI,OAAO,OAAO,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;AACtE,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACA,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAA,YAAU,CAAC,YAAY,GAAG,SAAS,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;AAC7E,EAAE,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;AACpC,IAAI;AACJ,MAAM,UAAU;AAChB,MAAM,OAAO;AACb,MAAM,yBAAyB;AAC/B,MAAM,GAAG;AACT,MAAM,GAAG;AACT,MAAM,IAAI;AACV,OAAO,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,CAAC;AACrC,MAAM;AACN,GAAG;AACH;AACA;AACA,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,KAAK;AAC/B,IAAI,IAAI,SAAS,KAAK,KAAK,EAAE;AAC7B,MAAM,MAAM,IAAIZ,YAAU;AAC1B,QAAQ,aAAa,CAAC,GAAG,EAAE,mBAAmB,IAAI,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;AACnF,QAAQA,YAAU,CAAC,cAAc;AACjC,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE;AAC7C,MAAM,kBAAkB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACrC;AACA,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,aAAa;AACrB,UAAU,GAAG;AACb,UAAU,8BAA8B,GAAG,OAAO,GAAG,yCAAyC;AAC9F,SAAS;AACT,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,OAAO,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;AAC1D,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACAY,YAAU,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,eAAe,EAAE;AACzD,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,KAAK;AACzB;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,4BAA4B,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;AACzE,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE;AACtD,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACnC,IAAI,MAAM,IAAIZ,YAAU,CAAC,2BAA2B,EAAEA,YAAU,CAAC,oBAAoB,CAAC,CAAC;AACvF,GAAG;AACH,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACtB,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AAClB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAClC,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AACjC,MAAM,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3E,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE;AAC3B,QAAQ,MAAM,IAAIA,YAAU;AAC5B,UAAU,SAAS,GAAG,GAAG,GAAG,WAAW,GAAG,MAAM;AAChD,UAAUA,YAAU,CAAC,oBAAoB;AACzC,SAAS,CAAC;AACV,OAAO;AACP,MAAM,SAAS;AACf,KAAK;AACL,IAAI,IAAI,YAAY,KAAK,IAAI,EAAE;AAC/B,MAAM,MAAM,IAAIA,YAAU,CAAC,iBAAiB,GAAG,GAAG,EAAEA,YAAU,CAAC,cAAc,CAAC,CAAC;AAC/E,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACA,gBAAe;AACf,EAAE,aAAa;AACf,cAAEY,YAAU;AACZ,CAAC;;ACjGD,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAK,CAAC;AACZ,EAAE,WAAW,CAAC,cAAc,EAAE;AAC9B,IAAI,IAAI,CAAC,QAAQ,GAAG,cAAc,IAAI,EAAE,CAAC;AACzC,IAAI,IAAI,CAAC,YAAY,GAAG;AACxB,MAAM,OAAO,EAAE,IAAIC,oBAAkB,EAAE;AACvC,MAAM,QAAQ,EAAE,IAAIA,oBAAkB,EAAE;AACxC,KAAK,CAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE;AACrC,IAAI,IAAI;AACR,MAAM,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACtD,KAAK,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,KAAK,EAAE;AAChC,QAAQ,IAAI,KAAK,GAAG,EAAE,CAAC;AACvB;AACA,QAAQ,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;AACzF;AACA;AACA,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;AAC1E,QAAQ,IAAI;AACZ,UAAU,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AAC1B,YAAY,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;AAC9B;AACA,WAAW,MAAM,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE;AAC3F,YAAY,GAAG,CAAC,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC;AACtC,WAAW;AACX,SAAS,CAAC,OAAO,CAAC,EAAE;AACpB;AACA,SAAS;AACT,OAAO;AACP;AACA,MAAM,MAAM,GAAG,CAAC;AAChB,KAAK;AACL,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE;AAChC;AACA;AACA,IAAI,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACzC,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;AAC5B,MAAM,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC;AAC/B,KAAK,MAAM;AACX,MAAM,MAAM,GAAG,WAAW,IAAI,EAAE,CAAC;AACjC,KAAK;AACL;AACA,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD;AACA,IAAI,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;AAC/D;AACA,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;AACpC,MAAM,SAAS,CAAC,aAAa;AAC7B,QAAQ,YAAY;AACpB,QAAQ;AACR,UAAU,iBAAiB,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AACxE,UAAU,iBAAiB,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AACxE,UAAU,mBAAmB,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AAC1E,UAAU,+BAA+B,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AACtF,SAAS;AACT,QAAQ,KAAK;AACb,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,IAAI,gBAAgB,IAAI,IAAI,EAAE;AAClC,MAAM,IAAId,OAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;AAC9C,QAAQ,MAAM,CAAC,gBAAgB,GAAG;AAClC,UAAU,SAAS,EAAE,gBAAgB;AACrC,SAAS,CAAC;AACV,OAAO,MAAM;AACb,QAAQ,SAAS,CAAC,aAAa;AAC/B,UAAU,gBAAgB;AAC1B,UAAU;AACV,YAAY,MAAM,EAAE,UAAU,CAAC,QAAQ;AACvC,YAAY,SAAS,EAAE,UAAU,CAAC,QAAQ;AAC1C,WAAW;AACX,UAAU,IAAI;AACd,SAAS,CAAC;AACV,OAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAE3C,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,KAAK,SAAS,EAAE;AAC9D,MAAM,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AACjE,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACtC,KAAK;AACL;AACA,IAAI,SAAS,CAAC,aAAa;AAC3B,MAAM,MAAM;AACZ,MAAM;AACN,QAAQ,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC/C,QAAQ,aAAa,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC;AAC3D,OAAO;AACP,MAAM,IAAI;AACV,KAAK,CAAC;AACN;AACA;AACA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,EAAE,WAAW,EAAE,CAAC;AACnF;AACA;AACA,IAAI,IAAI,cAAc,GAAG,OAAO,IAAIA,OAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACxF;AACA,IAAI,OAAO;AACX,MAAMA,OAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,KAAK;AAC7F,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/B,OAAO,CAAC,CAAC;AACT;AACA,IAAI,MAAM,CAAC,OAAO,GAAGQ,cAAY,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAClE;AACA;AACA,IAAI,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACvC,IAAI,IAAI,8BAA8B,GAAG,IAAI,CAAC;AAC9C,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,0BAA0B,CAAC,WAAW,EAAE;AACvF,MAAM,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,UAAU,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;AAC9F,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,8BAA8B,GAAG,8BAA8B,IAAI,WAAW,CAAC,WAAW,CAAC;AACjG;AACA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,oBAAoB,CAAC;AACvE,MAAM,MAAM,+BAA+B;AAC3C,QAAQ,YAAY,IAAI,YAAY,CAAC,+BAA+B,CAAC;AACrE;AACA,MAAM,IAAI,+BAA+B,EAAE;AAC3C,QAAQ,uBAAuB,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACrF,OAAO,MAAM;AACb,QAAQ,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AAClF,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACxC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,wBAAwB,CAAC,WAAW,EAAE;AACtF,MAAM,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACjF,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,GAAG,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,8BAA8B,EAAE;AACzC,MAAM,MAAM,KAAK,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC5D,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,uBAAuB,CAAC,CAAC;AAChD,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,CAAC;AAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;AACzB;AACA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxC;AACA,MAAM,OAAO,CAAC,GAAG,GAAG,EAAE;AACtB,QAAQ,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,OAAO;AACP;AACA,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK;AACL;AACA,IAAI,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC;AACzC;AACA,IAAI,IAAI,SAAS,GAAG,MAAM,CAAC;AAC3B;AACA,IAAI,OAAO,CAAC,GAAG,GAAG,EAAE;AACpB,MAAM,MAAM,WAAW,GAAG,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,MAAM,MAAM,UAAU,GAAG,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,MAAM,IAAI;AACV,QAAQ,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAC3C,OAAO,CAAC,OAAO,KAAK,EAAE;AACtB,QAAQ,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrC,QAAQ,MAAM;AACd,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI;AACR,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACtD,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnC,KAAK;AACL;AACA,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,GAAG,GAAG,wBAAwB,CAAC,MAAM,CAAC;AAC1C;AACA,IAAI,OAAO,CAAC,GAAG,GAAG,EAAE;AACpB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3F,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzF,IAAI,OAAO,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACtE,GAAG;AACH,CAAC;AACD;AACA;AACAR,OAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,mBAAmB,CAAC,MAAM,EAAE;AACzF;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,EAAE,MAAM,EAAE;AACnD,IAAI,OAAO,IAAI,CAAC,OAAO;AACvB,MAAM,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE;AAChC,QAAQ,MAAM;AACd,QAAQ,GAAG;AACX,QAAQ,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,EAAE,IAAI;AACjC,OAAO,CAAC;AACR,KAAK,CAAC;AACN,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACAA,OAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,qBAAqB,CAAC,MAAM,EAAE;AAC/E;AACA;AACA,EAAE,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACtC,IAAI,OAAO,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;AAClD,MAAM,OAAO,IAAI,CAAC,OAAO;AACzB,QAAQ,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE;AAClC,UAAU,MAAM;AAChB,UAAU,OAAO,EAAE,MAAM;AACzB,cAAc;AACd,gBAAgB,cAAc,EAAE,qBAAqB;AACrD,eAAe;AACf,cAAc,EAAE;AAChB,UAAU,GAAG;AACb,UAAU,IAAI;AACd,SAAS,CAAC;AACV,OAAO,CAAC;AACR,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,kBAAkB,EAAE,CAAC;AACjD;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AACH;AACA,cAAe,KAAK;;AClQpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,CAAC;AAClB,EAAE,WAAW,CAAC,QAAQ,EAAE;AACxB,IAAI,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACxC,MAAM,MAAM,IAAI,SAAS,CAAC,8BAA8B,CAAC,CAAC;AAC1D,KAAK;AACL;AACA,IAAI,IAAI,cAAc,CAAC;AACvB;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,eAAe,CAAC,OAAO,EAAE;AACjE,MAAM,cAAc,GAAG,OAAO,CAAC;AAC/B,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC;AACvB;AACA;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;AAClC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO;AACpC;AACA,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;AACtC;AACA,MAAM,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACtB,QAAQ,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACpC,OAAO;AACP,MAAM,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAC9B,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,WAAW,KAAK;AACzC,MAAM,IAAI,QAAQ,CAAC;AACnB;AACA,MAAM,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AAC/C,QAAQ,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjC,QAAQ,QAAQ,GAAG,OAAO,CAAC;AAC3B,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3B;AACA,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,MAAM,GAAG;AACzC,QAAQ,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACpC,OAAO,CAAC;AACR;AACA,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK,CAAC;AACN;AACA,IAAI,QAAQ,CAAC,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACvD,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;AACxB;AACA,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,KAAK,CAAC,MAAM,GAAG,IAAIS,eAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACjE,MAAM,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACnC,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,MAAM,IAAI,CAAC,MAAM,CAAC;AACxB,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,CAAC,QAAQ,EAAE;AACtB,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrC,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnC,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,QAAQ,EAAE;AACxB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC1B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpD,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACtB,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK;AACL,GAAG;AACH;AACA,EAAE,aAAa,GAAG;AAClB,IAAI,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;AAC7C;AACA,IAAI,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK;AAC3B,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,KAAK,CAAC;AACN;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1B;AACA,IAAI,UAAU,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAClE;AACA,IAAI,OAAO,UAAU,CAAC,MAAM,CAAC;AAC7B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,MAAM,GAAG;AAClB,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,SAAS,QAAQ,CAAC,CAAC,EAAE;AACvD,MAAM,MAAM,GAAG,CAAC,CAAC;AACjB,KAAK,CAAC,CAAC;AACP,IAAI,OAAO;AACX,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,CAAC;AACN,GAAG;AACH,CAAC;AACD;AACA,oBAAe,WAAW;;ACpI1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,MAAM,CAAC,QAAQ,EAAE;AACzC,EAAE,OAAO,SAAS,IAAI,CAAC,GAAG,EAAE;AAC5B,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrC,GAAG,CAAC;AACJ;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,YAAY,CAAC,OAAO,EAAE;AAC9C,EAAE,OAAOT,OAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC;AAClE;;ACbA,MAAM,cAAc,GAAG;AACvB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,EAAE,EAAE,GAAG;AACT,EAAE,OAAO,EAAE,GAAG;AACd,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,2BAA2B,EAAE,GAAG;AAClC,EAAE,SAAS,EAAE,GAAG;AAChB,EAAE,YAAY,EAAE,GAAG;AACnB,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,WAAW,EAAE,GAAG;AAClB,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,gBAAgB,EAAE,GAAG;AACvB,EAAE,KAAK,EAAE,GAAG;AACZ,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,WAAW,EAAE,GAAG;AAClB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,iBAAiB,EAAE,GAAG;AACxB,EAAE,iBAAiB,EAAE,GAAG;AACxB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,YAAY,EAAE,GAAG;AACnB,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,SAAS,EAAE,GAAG;AAChB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,gBAAgB,EAAE,GAAG;AACvB,EAAE,aAAa,EAAE,GAAG;AACpB,EAAE,2BAA2B,EAAE,GAAG;AAClC,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,oBAAoB,EAAE,GAAG;AAC3B,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,iBAAiB,EAAE,GAAG;AACxB,EAAE,SAAS,EAAE,GAAG;AAChB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,gBAAgB,EAAE,GAAG;AACvB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,oBAAoB,EAAE,GAAG;AAC3B,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,2BAA2B,EAAE,GAAG;AAClC,EAAE,0BAA0B,EAAE,GAAG;AACjC,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,uBAAuB,EAAE,GAAG;AAC9B,EAAE,qBAAqB,EAAE,GAAG;AAC5B,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,YAAY,EAAE,GAAG;AACnB,EAAE,WAAW,EAAE,GAAG;AAClB,EAAE,6BAA6B,EAAE,GAAG;AACpC,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,qBAAqB,EAAE,GAAG;AAC5B,CAAC,CAAC;AACF;AACA,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACzD,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AAC9B,CAAC,CAAC,CAAC;AACH;AACA,uBAAe,cAAc;;ACxD7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,aAAa,EAAE;AACvC,EAAE,MAAM,OAAO,GAAG,IAAIe,OAAK,CAAC,aAAa,CAAC,CAAC;AAC3C,EAAE,MAAM,QAAQ,GAAG,IAAI,CAACA,OAAK,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1D;AACA;AACA,EAAEf,OAAK,CAAC,MAAM,CAAC,QAAQ,EAAEe,OAAK,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACzE;AACA;AACA,EAAEf,OAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D;AACA;AACA,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,cAAc,EAAE;AACpD,IAAI,OAAO,cAAc,CAAC,WAAW,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;AACtE,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB,CAAC;AACD;AACA;AACK,MAAC,KAAK,GAAG,cAAc,CAACO,UAAQ,EAAE;AACvC;AACA;AACA,KAAK,CAAC,KAAK,GAAGQ,OAAK,CAAC;AACpB;AACA;AACA,KAAK,CAAC,aAAa,GAAGN,eAAa,CAAC;AACpC,KAAK,CAAC,WAAW,GAAGO,aAAW,CAAC;AAChC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC1B,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AACxB,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AAC9B;AACA;AACA,KAAK,CAAC,UAAU,GAAGf,YAAU,CAAC;AAC9B;AACA;AACA,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;AACnC;AACA;AACA,KAAK,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,QAAQ,EAAE;AACnC,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC,CAAC;AACF;AACA,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACtB;AACA;AACA,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;AAClC;AACA;AACA,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;AAChC;AACA,KAAK,CAAC,YAAY,GAAGO,cAAY,CAAC;AAClC;AACA,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,KAAK,cAAc,CAACR,OAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AACpG;AACA,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;AACvC;AACA,KAAK,CAAC,cAAc,GAAGiB,gBAAc,CAAC;AACtC;AACA,KAAK,CAAC,OAAO,GAAG,KAAK;;;;"} \ No newline at end of file diff --git a/node_modules/axios/dist/esm/axios.js b/node_modules/axios/dist/esm/axios.js new file mode 100644 index 0000000..6a32a01 --- /dev/null +++ b/node_modules/axios/dist/esm/axios.js @@ -0,0 +1,4262 @@ +/*! Axios v1.13.6 Copyright (c) 2026 Matt Zabriskie and contributors */ +/** + * Create a bound version of a function with a specified `this` context + * + * @param {Function} fn - The function to bind + * @param {*} thisArg - The value to be passed as the `this` parameter + * @returns {Function} A new function that will call the original function with the specified `this` context + */ +function bind(fn, thisArg) { + return function wrap() { + return fn.apply(thisArg, arguments); + }; +} + +// utils is a library of generic helper functions non-specific to axios + +const { toString } = Object.prototype; +const { getPrototypeOf } = Object; +const { iterator, toStringTag } = Symbol; + +const kindOf = ((cache) => (thing) => { + const str = toString.call(thing); + return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); +})(Object.create(null)); + +const kindOfTest = (type) => { + type = type.toLowerCase(); + return (thing) => kindOf(thing) === type; +}; + +const typeOfTest = (type) => (thing) => typeof thing === type; + +/** + * Determine if a value is a non-null object + * + * @param {Object} val The value to test + * + * @returns {boolean} True if value is an Array, otherwise false + */ +const { isArray } = Array; + +/** + * Determine if a value is undefined + * + * @param {*} val The value to test + * + * @returns {boolean} True if the value is undefined, otherwise false + */ +const isUndefined = typeOfTest('undefined'); + +/** + * Determine if a value is a Buffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return ( + val !== null && + !isUndefined(val) && + val.constructor !== null && + !isUndefined(val.constructor) && + isFunction$1(val.constructor.isBuffer) && + val.constructor.isBuffer(val) + ); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +const isArrayBuffer = kindOfTest('ArrayBuffer'); + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + let result; + if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) { + result = ArrayBuffer.isView(val); + } else { + result = val && val.buffer && isArrayBuffer(val.buffer); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a String, otherwise false + */ +const isString = typeOfTest('string'); + +/** + * Determine if a value is a Function + * + * @param {*} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +const isFunction$1 = typeOfTest('function'); + +/** + * Determine if a value is a Number + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Number, otherwise false + */ +const isNumber = typeOfTest('number'); + +/** + * Determine if a value is an Object + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an Object, otherwise false + */ +const isObject = (thing) => thing !== null && typeof thing === 'object'; + +/** + * Determine if a value is a Boolean + * + * @param {*} thing The value to test + * @returns {boolean} True if value is a Boolean, otherwise false + */ +const isBoolean = (thing) => thing === true || thing === false; + +/** + * Determine if a value is a plain Object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a plain Object, otherwise false + */ +const isPlainObject = (val) => { + if (kindOf(val) !== 'object') { + return false; + } + + const prototype = getPrototypeOf(val); + return ( + (prototype === null || + prototype === Object.prototype || + Object.getPrototypeOf(prototype) === null) && + !(toStringTag in val) && + !(iterator in val) + ); +}; + +/** + * Determine if a value is an empty object (safely handles Buffers) + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an empty object, otherwise false + */ +const isEmptyObject = (val) => { + // Early return for non-objects or Buffers to prevent RangeError + if (!isObject(val) || isBuffer(val)) { + return false; + } + + try { + return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype; + } catch (e) { + // Fallback for any other objects that might cause RangeError with Object.keys() + return false; + } +}; + +/** + * Determine if a value is a Date + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Date, otherwise false + */ +const isDate = kindOfTest('Date'); + +/** + * Determine if a value is a File + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFile = kindOfTest('File'); + +/** + * Determine if a value is a React Native Blob + * React Native "blob": an object with a `uri` attribute. Optionally, it can + * also have a `name` and `type` attribute to specify filename and content type + * + * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71 + * + * @param {*} value The value to test + * + * @returns {boolean} True if value is a React Native Blob, otherwise false + */ +const isReactNativeBlob = (value) => { + return !!(value && typeof value.uri !== 'undefined'); +}; + +/** + * Determine if environment is React Native + * ReactNative `FormData` has a non-standard `getParts()` method + * + * @param {*} formData The formData to test + * + * @returns {boolean} True if environment is React Native, otherwise false + */ +const isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined'; + +/** + * Determine if a value is a Blob + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Blob, otherwise false + */ +const isBlob = kindOfTest('Blob'); + +/** + * Determine if a value is a FileList + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFileList = kindOfTest('FileList'); + +/** + * Determine if a value is a Stream + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Stream, otherwise false + */ +const isStream = (val) => isObject(val) && isFunction$1(val.pipe); + +/** + * Determine if a value is a FormData + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an FormData, otherwise false + */ +function getGlobal() { + if (typeof globalThis !== 'undefined') return globalThis; + if (typeof self !== 'undefined') return self; + if (typeof window !== 'undefined') return window; + if (typeof global !== 'undefined') return global; + return {}; +} + +const G = getGlobal(); +const FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined; + +const isFormData = (thing) => { + let kind; + return thing && ( + (FormDataCtor && thing instanceof FormDataCtor) || ( + isFunction$1(thing.append) && ( + (kind = kindOf(thing)) === 'formdata' || + // detect form-data instance + (kind === 'object' && isFunction$1(thing.toString) && thing.toString() === '[object FormData]') + ) + ) + ); +}; + +/** + * Determine if a value is a URLSearchParams object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +const isURLSearchParams = kindOfTest('URLSearchParams'); + +const [isReadableStream, isRequest, isResponse, isHeaders] = [ + 'ReadableStream', + 'Request', + 'Response', + 'Headers', +].map(kindOfTest); + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * + * @returns {String} The String freed of excess whitespace + */ +const trim = (str) => { + return str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); +}; +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + * + * @param {Object} [options] + * @param {Boolean} [options.allOwnKeys = false] + * @returns {any} + */ +function forEach(obj, fn, { allOwnKeys = false } = {}) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + let i; + let l; + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Buffer check + if (isBuffer(obj)) { + return; + } + + // Iterate over object keys + const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); + const len = keys.length; + let key; + + for (i = 0; i < len; i++) { + key = keys[i]; + fn.call(null, obj[key], key, obj); + } + } +} + +/** + * Finds a key in an object, case-insensitive, returning the actual key name. + * Returns null if the object is a Buffer or if no match is found. + * + * @param {Object} obj - The object to search. + * @param {string} key - The key to find (case-insensitive). + * @returns {?string} The actual key name if found, otherwise null. + */ +function findKey(obj, key) { + if (isBuffer(obj)) { + return null; + } + + key = key.toLowerCase(); + const keys = Object.keys(obj); + let i = keys.length; + let _key; + while (i-- > 0) { + _key = keys[i]; + if (key === _key.toLowerCase()) { + return _key; + } + } + return null; +} + +const _global = (() => { + /*eslint no-undef:0*/ + if (typeof globalThis !== 'undefined') return globalThis; + return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global; +})(); + +const isContextDefined = (context) => !isUndefined(context) && context !== _global; + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * const result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + const { caseless, skipUndefined } = (isContextDefined(this) && this) || {}; + const result = {}; + const assignValue = (val, key) => { + // Skip dangerous property names to prevent prototype pollution + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return; + } + + const targetKey = (caseless && findKey(result, key)) || key; + if (isPlainObject(result[targetKey]) && isPlainObject(val)) { + result[targetKey] = merge(result[targetKey], val); + } else if (isPlainObject(val)) { + result[targetKey] = merge({}, val); + } else if (isArray(val)) { + result[targetKey] = val.slice(); + } else if (!skipUndefined || !isUndefined(val)) { + result[targetKey] = val; + } + }; + + for (let i = 0, l = arguments.length; i < l; i++) { + arguments[i] && forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * + * @param {Object} [options] + * @param {Boolean} [options.allOwnKeys] + * @returns {Object} The resulting value of object a + */ +const extend = (a, b, thisArg, { allOwnKeys } = {}) => { + forEach( + b, + (val, key) => { + if (thisArg && isFunction$1(val)) { + Object.defineProperty(a, key, { + value: bind(val, thisArg), + writable: true, + enumerable: true, + configurable: true, + }); + } else { + Object.defineProperty(a, key, { + value: val, + writable: true, + enumerable: true, + configurable: true, + }); + } + }, + { allOwnKeys } + ); + return a; +}; + +/** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * + * @returns {string} content value without BOM + */ +const stripBOM = (content) => { + if (content.charCodeAt(0) === 0xfeff) { + content = content.slice(1); + } + return content; +}; + +/** + * Inherit the prototype methods from one constructor into another + * @param {function} constructor + * @param {function} superConstructor + * @param {object} [props] + * @param {object} [descriptors] + * + * @returns {void} + */ +const inherits = (constructor, superConstructor, props, descriptors) => { + constructor.prototype = Object.create(superConstructor.prototype, descriptors); + Object.defineProperty(constructor.prototype, 'constructor', { + value: constructor, + writable: true, + enumerable: false, + configurable: true, + }); + Object.defineProperty(constructor, 'super', { + value: superConstructor.prototype, + }); + props && Object.assign(constructor.prototype, props); +}; + +/** + * Resolve object with deep prototype chain to a flat object + * @param {Object} sourceObj source object + * @param {Object} [destObj] + * @param {Function|Boolean} [filter] + * @param {Function} [propFilter] + * + * @returns {Object} + */ +const toFlatObject = (sourceObj, destObj, filter, propFilter) => { + let props; + let i; + let prop; + const merged = {}; + + destObj = destObj || {}; + // eslint-disable-next-line no-eq-null,eqeqeq + if (sourceObj == null) return destObj; + + do { + props = Object.getOwnPropertyNames(sourceObj); + i = props.length; + while (i-- > 0) { + prop = props[i]; + if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { + destObj[prop] = sourceObj[prop]; + merged[prop] = true; + } + } + sourceObj = filter !== false && getPrototypeOf(sourceObj); + } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); + + return destObj; +}; + +/** + * Determines whether a string ends with the characters of a specified string + * + * @param {String} str + * @param {String} searchString + * @param {Number} [position= 0] + * + * @returns {boolean} + */ +const endsWith = (str, searchString, position) => { + str = String(str); + if (position === undefined || position > str.length) { + position = str.length; + } + position -= searchString.length; + const lastIndex = str.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; +}; + +/** + * Returns new array from array like object or null if failed + * + * @param {*} [thing] + * + * @returns {?Array} + */ +const toArray = (thing) => { + if (!thing) return null; + if (isArray(thing)) return thing; + let i = thing.length; + if (!isNumber(i)) return null; + const arr = new Array(i); + while (i-- > 0) { + arr[i] = thing[i]; + } + return arr; +}; + +/** + * Checking if the Uint8Array exists and if it does, it returns a function that checks if the + * thing passed in is an instance of Uint8Array + * + * @param {TypedArray} + * + * @returns {Array} + */ +// eslint-disable-next-line func-names +const isTypedArray = ((TypedArray) => { + // eslint-disable-next-line func-names + return (thing) => { + return TypedArray && thing instanceof TypedArray; + }; +})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); + +/** + * For each entry in the object, call the function with the key and value. + * + * @param {Object} obj - The object to iterate over. + * @param {Function} fn - The function to call for each entry. + * + * @returns {void} + */ +const forEachEntry = (obj, fn) => { + const generator = obj && obj[iterator]; + + const _iterator = generator.call(obj); + + let result; + + while ((result = _iterator.next()) && !result.done) { + const pair = result.value; + fn.call(obj, pair[0], pair[1]); + } +}; + +/** + * It takes a regular expression and a string, and returns an array of all the matches + * + * @param {string} regExp - The regular expression to match against. + * @param {string} str - The string to search. + * + * @returns {Array} + */ +const matchAll = (regExp, str) => { + let matches; + const arr = []; + + while ((matches = regExp.exec(str)) !== null) { + arr.push(matches); + } + + return arr; +}; + +/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ +const isHTMLForm = kindOfTest('HTMLFormElement'); + +const toCamelCase = (str) => { + return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { + return p1.toUpperCase() + p2; + }); +}; + +/* Creating a function that will check if an object has a property. */ +const hasOwnProperty = ( + ({ hasOwnProperty }) => + (obj, prop) => + hasOwnProperty.call(obj, prop) +)(Object.prototype); + +/** + * Determine if a value is a RegExp object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a RegExp object, otherwise false + */ +const isRegExp = kindOfTest('RegExp'); + +const reduceDescriptors = (obj, reducer) => { + const descriptors = Object.getOwnPropertyDescriptors(obj); + const reducedDescriptors = {}; + + forEach(descriptors, (descriptor, name) => { + let ret; + if ((ret = reducer(descriptor, name, obj)) !== false) { + reducedDescriptors[name] = ret || descriptor; + } + }); + + Object.defineProperties(obj, reducedDescriptors); +}; + +/** + * Makes all methods read-only + * @param {Object} obj + */ + +const freezeMethods = (obj) => { + reduceDescriptors(obj, (descriptor, name) => { + // skip restricted props in strict mode + if (isFunction$1(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { + return false; + } + + const value = obj[name]; + + if (!isFunction$1(value)) return; + + descriptor.enumerable = false; + + if ('writable' in descriptor) { + descriptor.writable = false; + return; + } + + if (!descriptor.set) { + descriptor.set = () => { + throw Error("Can not rewrite read-only method '" + name + "'"); + }; + } + }); +}; + +/** + * Converts an array or a delimited string into an object set with values as keys and true as values. + * Useful for fast membership checks. + * + * @param {Array|string} arrayOrString - The array or string to convert. + * @param {string} delimiter - The delimiter to use if input is a string. + * @returns {Object} An object with keys from the array or string, values set to true. + */ +const toObjectSet = (arrayOrString, delimiter) => { + const obj = {}; + + const define = (arr) => { + arr.forEach((value) => { + obj[value] = true; + }); + }; + + isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); + + return obj; +}; + +const noop = () => {}; + +const toFiniteNumber = (value, defaultValue) => { + return value != null && Number.isFinite((value = +value)) ? value : defaultValue; +}; + +/** + * If the thing is a FormData object, return true, otherwise return false. + * + * @param {unknown} thing - The thing to check. + * + * @returns {boolean} + */ +function isSpecCompliantForm(thing) { + return !!( + thing && + isFunction$1(thing.append) && + thing[toStringTag] === 'FormData' && + thing[iterator] + ); +} + +/** + * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers. + * + * @param {Object} obj - The object to convert. + * @returns {Object} The JSON-compatible object. + */ +const toJSONObject = (obj) => { + const stack = new Array(10); + + const visit = (source, i) => { + if (isObject(source)) { + if (stack.indexOf(source) >= 0) { + return; + } + + //Buffer check + if (isBuffer(source)) { + return source; + } + + if (!('toJSON' in source)) { + stack[i] = source; + const target = isArray(source) ? [] : {}; + + forEach(source, (value, key) => { + const reducedValue = visit(value, i + 1); + !isUndefined(reducedValue) && (target[key] = reducedValue); + }); + + stack[i] = undefined; + + return target; + } + } + + return source; + }; + + return visit(obj, 0); +}; + +/** + * Determines if a value is an async function. + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is an async function, otherwise false. + */ +const isAsyncFn = kindOfTest('AsyncFunction'); + +/** + * Determines if a value is thenable (has then and catch methods). + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is thenable, otherwise false. + */ +const isThenable = (thing) => + thing && + (isObject(thing) || isFunction$1(thing)) && + isFunction$1(thing.then) && + isFunction$1(thing.catch); + +// original code +// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34 + +/** + * Provides a cross-platform setImmediate implementation. + * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout. + * + * @param {boolean} setImmediateSupported - Whether setImmediate is supported. + * @param {boolean} postMessageSupported - Whether postMessage is supported. + * @returns {Function} A function to schedule a callback asynchronously. + */ +const _setImmediate = ((setImmediateSupported, postMessageSupported) => { + if (setImmediateSupported) { + return setImmediate; + } + + return postMessageSupported + ? ((token, callbacks) => { + _global.addEventListener( + 'message', + ({ source, data }) => { + if (source === _global && data === token) { + callbacks.length && callbacks.shift()(); + } + }, + false + ); + + return (cb) => { + callbacks.push(cb); + _global.postMessage(token, '*'); + }; + })(`axios@${Math.random()}`, []) + : (cb) => setTimeout(cb); +})(typeof setImmediate === 'function', isFunction$1(_global.postMessage)); + +/** + * Schedules a microtask or asynchronous callback as soon as possible. + * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate. + * + * @type {Function} + */ +const asap = + typeof queueMicrotask !== 'undefined' + ? queueMicrotask.bind(_global) + : (typeof process !== 'undefined' && process.nextTick) || _setImmediate; + +// ********************* + +const isIterable = (thing) => thing != null && isFunction$1(thing[iterator]); + +const utils$1 = { + isArray, + isArrayBuffer, + isBuffer, + isFormData, + isArrayBufferView, + isString, + isNumber, + isBoolean, + isObject, + isPlainObject, + isEmptyObject, + isReadableStream, + isRequest, + isResponse, + isHeaders, + isUndefined, + isDate, + isFile, + isReactNativeBlob, + isReactNative, + isBlob, + isRegExp, + isFunction: isFunction$1, + isStream, + isURLSearchParams, + isTypedArray, + isFileList, + forEach, + merge, + extend, + trim, + stripBOM, + inherits, + toFlatObject, + kindOf, + kindOfTest, + endsWith, + toArray, + forEachEntry, + matchAll, + isHTMLForm, + hasOwnProperty, + hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection + reduceDescriptors, + freezeMethods, + toObjectSet, + toCamelCase, + noop, + toFiniteNumber, + findKey, + global: _global, + isContextDefined, + isSpecCompliantForm, + toJSONObject, + isAsyncFn, + isThenable, + setImmediate: _setImmediate, + asap, + isIterable, +}; + +class AxiosError$1 extends Error { + static from(error, code, config, request, response, customProps) { + const axiosError = new AxiosError$1(error.message, code || error.code, config, request, response); + axiosError.cause = error; + axiosError.name = error.name; + + // Preserve status from the original error if not already set from response + if (error.status != null && axiosError.status == null) { + axiosError.status = error.status; + } + + customProps && Object.assign(axiosError, customProps); + return axiosError; + } + + /** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [config] The config. + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * + * @returns {Error} The created error. + */ + constructor(message, code, config, request, response) { + super(message); + + // Make message enumerable to maintain backward compatibility + // The native Error constructor sets message as non-enumerable, + // but axios < v1.13.3 had it as enumerable + Object.defineProperty(this, 'message', { + value: message, + enumerable: true, + writable: true, + configurable: true + }); + + this.name = 'AxiosError'; + this.isAxiosError = true; + code && (this.code = code); + config && (this.config = config); + request && (this.request = request); + if (response) { + this.response = response; + this.status = response.status; + } + } + + toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: utils$1.toJSONObject(this.config), + code: this.code, + status: this.status, + }; + } +} + +// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated. +AxiosError$1.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE'; +AxiosError$1.ERR_BAD_OPTION = 'ERR_BAD_OPTION'; +AxiosError$1.ECONNABORTED = 'ECONNABORTED'; +AxiosError$1.ETIMEDOUT = 'ETIMEDOUT'; +AxiosError$1.ERR_NETWORK = 'ERR_NETWORK'; +AxiosError$1.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS'; +AxiosError$1.ERR_DEPRECATED = 'ERR_DEPRECATED'; +AxiosError$1.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE'; +AxiosError$1.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST'; +AxiosError$1.ERR_CANCELED = 'ERR_CANCELED'; +AxiosError$1.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT'; +AxiosError$1.ERR_INVALID_URL = 'ERR_INVALID_URL'; + +const AxiosError$2 = AxiosError$1; + +// eslint-disable-next-line strict +const httpAdapter = null; + +/** + * Determines if the given thing is a array or js object. + * + * @param {string} thing - The object or array to be visited. + * + * @returns {boolean} + */ +function isVisitable(thing) { + return utils$1.isPlainObject(thing) || utils$1.isArray(thing); +} + +/** + * It removes the brackets from the end of a string + * + * @param {string} key - The key of the parameter. + * + * @returns {string} the key without the brackets. + */ +function removeBrackets(key) { + return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key; +} + +/** + * It takes a path, a key, and a boolean, and returns a string + * + * @param {string} path - The path to the current key. + * @param {string} key - The key of the current object being iterated over. + * @param {string} dots - If true, the key will be rendered with dots instead of brackets. + * + * @returns {string} The path to the current key. + */ +function renderKey(path, key, dots) { + if (!path) return key; + return path + .concat(key) + .map(function each(token, i) { + // eslint-disable-next-line no-param-reassign + token = removeBrackets(token); + return !dots && i ? '[' + token + ']' : token; + }) + .join(dots ? '.' : ''); +} + +/** + * If the array is an array and none of its elements are visitable, then it's a flat array. + * + * @param {Array} arr - The array to check + * + * @returns {boolean} + */ +function isFlatArray(arr) { + return utils$1.isArray(arr) && !arr.some(isVisitable); +} + +const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { + return /^is[A-Z]/.test(prop); +}); + +/** + * Convert a data object to FormData + * + * @param {Object} obj + * @param {?Object} [formData] + * @param {?Object} [options] + * @param {Function} [options.visitor] + * @param {Boolean} [options.metaTokens = true] + * @param {Boolean} [options.dots = false] + * @param {?Boolean} [options.indexes = false] + * + * @returns {Object} + **/ + +/** + * It converts an object into a FormData object + * + * @param {Object} obj - The object to convert to form data. + * @param {string} formData - The FormData object to append to. + * @param {Object} options + * + * @returns + */ +function toFormData$1(obj, formData, options) { + if (!utils$1.isObject(obj)) { + throw new TypeError('target must be an object'); + } + + // eslint-disable-next-line no-param-reassign + formData = formData || new (FormData)(); + + // eslint-disable-next-line no-param-reassign + options = utils$1.toFlatObject( + options, + { + metaTokens: true, + dots: false, + indexes: false, + }, + false, + function defined(option, source) { + // eslint-disable-next-line no-eq-null,eqeqeq + return !utils$1.isUndefined(source[option]); + } + ); + + const metaTokens = options.metaTokens; + // eslint-disable-next-line no-use-before-define + const visitor = options.visitor || defaultVisitor; + const dots = options.dots; + const indexes = options.indexes; + const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob); + const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); + + if (!utils$1.isFunction(visitor)) { + throw new TypeError('visitor must be a function'); + } + + function convertValue(value) { + if (value === null) return ''; + + if (utils$1.isDate(value)) { + return value.toISOString(); + } + + if (utils$1.isBoolean(value)) { + return value.toString(); + } + + if (!useBlob && utils$1.isBlob(value)) { + throw new AxiosError$2('Blob is not supported. Use a Buffer instead.'); + } + + if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { + return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); + } + + return value; + } + + /** + * Default visitor. + * + * @param {*} value + * @param {String|Number} key + * @param {Array} path + * @this {FormData} + * + * @returns {boolean} return true to visit the each prop of the value recursively + */ + function defaultVisitor(value, key, path) { + let arr = value; + + if (utils$1.isReactNative(formData) && utils$1.isReactNativeBlob(value)) { + formData.append(renderKey(path, key, dots), convertValue(value)); + return false; + } + + if (value && !path && typeof value === 'object') { + if (utils$1.endsWith(key, '{}')) { + // eslint-disable-next-line no-param-reassign + key = metaTokens ? key : key.slice(0, -2); + // eslint-disable-next-line no-param-reassign + value = JSON.stringify(value); + } else if ( + (utils$1.isArray(value) && isFlatArray(value)) || + ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))) + ) { + // eslint-disable-next-line no-param-reassign + key = removeBrackets(key); + + arr.forEach(function each(el, index) { + !(utils$1.isUndefined(el) || el === null) && + formData.append( + // eslint-disable-next-line no-nested-ternary + indexes === true + ? renderKey([key], index, dots) + : indexes === null + ? key + : key + '[]', + convertValue(el) + ); + }); + return false; + } + } + + if (isVisitable(value)) { + return true; + } + + formData.append(renderKey(path, key, dots), convertValue(value)); + + return false; + } + + const stack = []; + + const exposedHelpers = Object.assign(predicates, { + defaultVisitor, + convertValue, + isVisitable, + }); + + function build(value, path) { + if (utils$1.isUndefined(value)) return; + + if (stack.indexOf(value) !== -1) { + throw Error('Circular reference detected in ' + path.join('.')); + } + + stack.push(value); + + utils$1.forEach(value, function each(el, key) { + const result = + !(utils$1.isUndefined(el) || el === null) && + visitor.call(formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers); + + if (result === true) { + build(el, path ? path.concat(key) : [key]); + } + }); + + stack.pop(); + } + + if (!utils$1.isObject(obj)) { + throw new TypeError('data must be an object'); + } + + build(obj); + + return formData; +} + +/** + * It encodes a string by replacing all characters that are not in the unreserved set with + * their percent-encoded equivalents + * + * @param {string} str - The string to encode. + * + * @returns {string} The encoded string. + */ +function encode$1(str) { + const charMap = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+', + '%00': '\x00', + }; + return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { + return charMap[match]; + }); +} + +/** + * It takes a params object and converts it to a FormData object + * + * @param {Object} params - The parameters to be converted to a FormData object. + * @param {Object} options - The options object passed to the Axios constructor. + * + * @returns {void} + */ +function AxiosURLSearchParams(params, options) { + this._pairs = []; + + params && toFormData$1(params, this, options); +} + +const prototype = AxiosURLSearchParams.prototype; + +prototype.append = function append(name, value) { + this._pairs.push([name, value]); +}; + +prototype.toString = function toString(encoder) { + const _encode = encoder + ? function (value) { + return encoder.call(this, value, encode$1); + } + : encode$1; + + return this._pairs + .map(function each(pair) { + return _encode(pair[0]) + '=' + _encode(pair[1]); + }, '') + .join('&'); +}; + +/** + * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their + * URI encoded counterparts + * + * @param {string} val The value to be encoded. + * + * @returns {string} The encoded value. + */ +function encode(val) { + return encodeURIComponent(val) + .replace(/%3A/gi, ':') + .replace(/%24/g, '$') + .replace(/%2C/gi, ',') + .replace(/%20/g, '+'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @param {?(object|Function)} options + * + * @returns {string} The formatted url + */ +function buildURL(url, params, options) { + if (!params) { + return url; + } + + const _encode = (options && options.encode) || encode; + + const _options = utils$1.isFunction(options) + ? { + serialize: options, + } + : options; + + const serializeFn = _options && _options.serialize; + + let serializedParams; + + if (serializeFn) { + serializedParams = serializeFn(params, _options); + } else { + serializedParams = utils$1.isURLSearchParams(params) + ? params.toString() + : new AxiosURLSearchParams(params, _options).toString(_encode); + } + + if (serializedParams) { + const hashmarkIndex = url.indexOf('#'); + + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +} + +class InterceptorManager { + constructor() { + this.handlers = []; + } + + /** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * @param {Object} options The options for the interceptor, synchronous and runWhen + * + * @return {Number} An ID used to remove interceptor later + */ + use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled, + rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null, + }); + return this.handlers.length - 1; + } + + /** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + * + * @returns {void} + */ + eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } + } + + /** + * Clear all interceptors from the stack + * + * @returns {void} + */ + clear() { + if (this.handlers) { + this.handlers = []; + } + } + + /** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + * + * @returns {void} + */ + forEach(fn) { + utils$1.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); + } +} + +const InterceptorManager$1 = InterceptorManager; + +const transitionalDefaults = { + silentJSONParsing: true, + forcedJSONParsing: true, + clarifyTimeoutError: false, + legacyInterceptorReqResOrdering: true, +}; + +const URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; + +const FormData$1 = typeof FormData !== 'undefined' ? FormData : null; + +const Blob$1 = typeof Blob !== 'undefined' ? Blob : null; + +const platform$1 = { + isBrowser: true, + classes: { + URLSearchParams: URLSearchParams$1, + FormData: FormData$1, + Blob: Blob$1, + }, + protocols: ['http', 'https', 'file', 'blob', 'url', 'data'], +}; + +const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; + +const _navigator = (typeof navigator === 'object' && navigator) || undefined; + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + * + * @returns {boolean} + */ +const hasStandardBrowserEnv = + hasBrowserEnv && + (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0); + +/** + * Determine if we're running in a standard browser webWorker environment + * + * Although the `isStandardBrowserEnv` method indicates that + * `allows axios to run in a web worker`, the WebWorker will still be + * filtered out due to its judgment standard + * `typeof window !== 'undefined' && typeof document !== 'undefined'`. + * This leads to a problem when axios post `FormData` in webWorker + */ +const hasStandardBrowserWebWorkerEnv = (() => { + return ( + typeof WorkerGlobalScope !== 'undefined' && + // eslint-disable-next-line no-undef + self instanceof WorkerGlobalScope && + typeof self.importScripts === 'function' + ); +})(); + +const origin = (hasBrowserEnv && window.location.href) || 'http://localhost'; + +const utils = /*#__PURE__*/Object.freeze({ + __proto__: null, + hasBrowserEnv: hasBrowserEnv, + hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, + hasStandardBrowserEnv: hasStandardBrowserEnv, + navigator: _navigator, + origin: origin +}); + +const platform = { + ...utils, + ...platform$1, +}; + +function toURLEncodedForm(data, options) { + return toFormData$1(data, new platform.classes.URLSearchParams(), { + visitor: function (value, key, path, helpers) { + if (platform.isNode && utils$1.isBuffer(value)) { + this.append(key, value.toString('base64')); + return false; + } + + return helpers.defaultVisitor.apply(this, arguments); + }, + ...options, + }); +} + +/** + * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] + * + * @param {string} name - The name of the property to get. + * + * @returns An array of strings. + */ +function parsePropPath(name) { + // foo[x][y][z] + // foo.x.y.z + // foo-x-y-z + // foo x y z + return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map((match) => { + return match[0] === '[]' ? '' : match[1] || match[0]; + }); +} + +/** + * Convert an array to an object. + * + * @param {Array} arr - The array to convert to an object. + * + * @returns An object with the same keys and values as the array. + */ +function arrayToObject(arr) { + const obj = {}; + const keys = Object.keys(arr); + let i; + const len = keys.length; + let key; + for (i = 0; i < len; i++) { + key = keys[i]; + obj[key] = arr[key]; + } + return obj; +} + +/** + * It takes a FormData object and returns a JavaScript object + * + * @param {string} formData The FormData object to convert to JSON. + * + * @returns {Object | null} The converted object. + */ +function formDataToJSON(formData) { + function buildPath(path, value, target, index) { + let name = path[index++]; + + if (name === '__proto__') return true; + + const isNumericKey = Number.isFinite(+name); + const isLast = index >= path.length; + name = !name && utils$1.isArray(target) ? target.length : name; + + if (isLast) { + if (utils$1.hasOwnProp(target, name)) { + target[name] = [target[name], value]; + } else { + target[name] = value; + } + + return !isNumericKey; + } + + if (!target[name] || !utils$1.isObject(target[name])) { + target[name] = []; + } + + const result = buildPath(path, value, target[name], index); + + if (result && utils$1.isArray(target[name])) { + target[name] = arrayToObject(target[name]); + } + + return !isNumericKey; + } + + if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { + const obj = {}; + + utils$1.forEachEntry(formData, (name, value) => { + buildPath(parsePropPath(name), value, obj, 0); + }); + + return obj; + } + + return null; +} + +/** + * It takes a string, tries to parse it, and if it fails, it returns the stringified version + * of the input + * + * @param {any} rawValue - The value to be stringified. + * @param {Function} parser - A function that parses a string into a JavaScript object. + * @param {Function} encoder - A function that takes a value and returns a string. + * + * @returns {string} A stringified version of the rawValue. + */ +function stringifySafely(rawValue, parser, encoder) { + if (utils$1.isString(rawValue)) { + try { + (parser || JSON.parse)(rawValue); + return utils$1.trim(rawValue); + } catch (e) { + if (e.name !== 'SyntaxError') { + throw e; + } + } + } + + return (encoder || JSON.stringify)(rawValue); +} + +const defaults = { + transitional: transitionalDefaults, + + adapter: ['xhr', 'http', 'fetch'], + + transformRequest: [ + function transformRequest(data, headers) { + const contentType = headers.getContentType() || ''; + const hasJSONContentType = contentType.indexOf('application/json') > -1; + const isObjectPayload = utils$1.isObject(data); + + if (isObjectPayload && utils$1.isHTMLForm(data)) { + data = new FormData(data); + } + + const isFormData = utils$1.isFormData(data); + + if (isFormData) { + return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; + } + + if ( + utils$1.isArrayBuffer(data) || + utils$1.isBuffer(data) || + utils$1.isStream(data) || + utils$1.isFile(data) || + utils$1.isBlob(data) || + utils$1.isReadableStream(data) + ) { + return data; + } + if (utils$1.isArrayBufferView(data)) { + return data.buffer; + } + if (utils$1.isURLSearchParams(data)) { + headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); + return data.toString(); + } + + let isFileList; + + if (isObjectPayload) { + if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { + return toURLEncodedForm(data, this.formSerializer).toString(); + } + + if ( + (isFileList = utils$1.isFileList(data)) || + contentType.indexOf('multipart/form-data') > -1 + ) { + const _FormData = this.env && this.env.FormData; + + return toFormData$1( + isFileList ? { 'files[]': data } : data, + _FormData && new _FormData(), + this.formSerializer + ); + } + } + + if (isObjectPayload || hasJSONContentType) { + headers.setContentType('application/json', false); + return stringifySafely(data); + } + + return data; + }, + ], + + transformResponse: [ + function transformResponse(data) { + const transitional = this.transitional || defaults.transitional; + const forcedJSONParsing = transitional && transitional.forcedJSONParsing; + const JSONRequested = this.responseType === 'json'; + + if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) { + return data; + } + + if ( + data && + utils$1.isString(data) && + ((forcedJSONParsing && !this.responseType) || JSONRequested) + ) { + const silentJSONParsing = transitional && transitional.silentJSONParsing; + const strictJSONParsing = !silentJSONParsing && JSONRequested; + + try { + return JSON.parse(data, this.parseReviver); + } catch (e) { + if (strictJSONParsing) { + if (e.name === 'SyntaxError') { + throw AxiosError$2.from(e, AxiosError$2.ERR_BAD_RESPONSE, this, null, this.response); + } + throw e; + } + } + } + + return data; + }, + ], + + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + maxBodyLength: -1, + + env: { + FormData: platform.classes.FormData, + Blob: platform.classes.Blob, + }, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + }, + + headers: { + common: { + Accept: 'application/json, text/plain, */*', + 'Content-Type': undefined, + }, + }, +}; + +utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { + defaults.headers[method] = {}; +}); + +const defaults$1 = defaults; + +// RawAxiosHeaders whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +const ignoreDuplicateOf = utils$1.toObjectSet([ + 'age', + 'authorization', + 'content-length', + 'content-type', + 'etag', + 'expires', + 'from', + 'host', + 'if-modified-since', + 'if-unmodified-since', + 'last-modified', + 'location', + 'max-forwards', + 'proxy-authorization', + 'referer', + 'retry-after', + 'user-agent', +]); + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} rawHeaders Headers needing to be parsed + * + * @returns {Object} Headers parsed into an object + */ +const parseHeaders = (rawHeaders) => { + const parsed = {}; + let key; + let val; + let i; + + rawHeaders && + rawHeaders.split('\n').forEach(function parser(line) { + i = line.indexOf(':'); + key = line.substring(0, i).trim().toLowerCase(); + val = line.substring(i + 1).trim(); + + if (!key || (parsed[key] && ignoreDuplicateOf[key])) { + return; + } + + if (key === 'set-cookie') { + if (parsed[key]) { + parsed[key].push(val); + } else { + parsed[key] = [val]; + } + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + }); + + return parsed; +}; + +const $internals = Symbol('internals'); + +function normalizeHeader(header) { + return header && String(header).trim().toLowerCase(); +} + +function normalizeValue(value) { + if (value === false || value == null) { + return value; + } + + return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); +} + +function parseTokens(str) { + const tokens = Object.create(null); + const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; + let match; + + while ((match = tokensRE.exec(str))) { + tokens[match[1]] = match[2]; + } + + return tokens; +} + +const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); + +function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { + if (utils$1.isFunction(filter)) { + return filter.call(this, value, header); + } + + if (isHeaderNameFilter) { + value = header; + } + + if (!utils$1.isString(value)) return; + + if (utils$1.isString(filter)) { + return value.indexOf(filter) !== -1; + } + + if (utils$1.isRegExp(filter)) { + return filter.test(value); + } +} + +function formatHeader(header) { + return header + .trim() + .toLowerCase() + .replace(/([a-z\d])(\w*)/g, (w, char, str) => { + return char.toUpperCase() + str; + }); +} + +function buildAccessors(obj, header) { + const accessorName = utils$1.toCamelCase(' ' + header); + + ['get', 'set', 'has'].forEach((methodName) => { + Object.defineProperty(obj, methodName + accessorName, { + value: function (arg1, arg2, arg3) { + return this[methodName].call(this, header, arg1, arg2, arg3); + }, + configurable: true, + }); + }); +} + +class AxiosHeaders$1 { + constructor(headers) { + headers && this.set(headers); + } + + set(header, valueOrRewrite, rewrite) { + const self = this; + + function setHeader(_value, _header, _rewrite) { + const lHeader = normalizeHeader(_header); + + if (!lHeader) { + throw new Error('header name must be a non-empty string'); + } + + const key = utils$1.findKey(self, lHeader); + + if ( + !key || + self[key] === undefined || + _rewrite === true || + (_rewrite === undefined && self[key] !== false) + ) { + self[key || _header] = normalizeValue(_value); + } + } + + const setHeaders = (headers, _rewrite) => + utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); + + if (utils$1.isPlainObject(header) || header instanceof this.constructor) { + setHeaders(header, valueOrRewrite); + } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { + setHeaders(parseHeaders(header), valueOrRewrite); + } else if (utils$1.isObject(header) && utils$1.isIterable(header)) { + let obj = {}, + dest, + key; + for (const entry of header) { + if (!utils$1.isArray(entry)) { + throw TypeError('Object iterator must return a key-value pair'); + } + + obj[(key = entry[0])] = (dest = obj[key]) + ? utils$1.isArray(dest) + ? [...dest, entry[1]] + : [dest, entry[1]] + : entry[1]; + } + + setHeaders(obj, valueOrRewrite); + } else { + header != null && setHeader(valueOrRewrite, header, rewrite); + } + + return this; + } + + get(header, parser) { + header = normalizeHeader(header); + + if (header) { + const key = utils$1.findKey(this, header); + + if (key) { + const value = this[key]; + + if (!parser) { + return value; + } + + if (parser === true) { + return parseTokens(value); + } + + if (utils$1.isFunction(parser)) { + return parser.call(this, value, key); + } + + if (utils$1.isRegExp(parser)) { + return parser.exec(value); + } + + throw new TypeError('parser must be boolean|regexp|function'); + } + } + } + + has(header, matcher) { + header = normalizeHeader(header); + + if (header) { + const key = utils$1.findKey(this, header); + + return !!( + key && + this[key] !== undefined && + (!matcher || matchHeaderValue(this, this[key], key, matcher)) + ); + } + + return false; + } + + delete(header, matcher) { + const self = this; + let deleted = false; + + function deleteHeader(_header) { + _header = normalizeHeader(_header); + + if (_header) { + const key = utils$1.findKey(self, _header); + + if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { + delete self[key]; + + deleted = true; + } + } + } + + if (utils$1.isArray(header)) { + header.forEach(deleteHeader); + } else { + deleteHeader(header); + } + + return deleted; + } + + clear(matcher) { + const keys = Object.keys(this); + let i = keys.length; + let deleted = false; + + while (i--) { + const key = keys[i]; + if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { + delete this[key]; + deleted = true; + } + } + + return deleted; + } + + normalize(format) { + const self = this; + const headers = {}; + + utils$1.forEach(this, (value, header) => { + const key = utils$1.findKey(headers, header); + + if (key) { + self[key] = normalizeValue(value); + delete self[header]; + return; + } + + const normalized = format ? formatHeader(header) : String(header).trim(); + + if (normalized !== header) { + delete self[header]; + } + + self[normalized] = normalizeValue(value); + + headers[normalized] = true; + }); + + return this; + } + + concat(...targets) { + return this.constructor.concat(this, ...targets); + } + + toJSON(asStrings) { + const obj = Object.create(null); + + utils$1.forEach(this, (value, header) => { + value != null && + value !== false && + (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); + }); + + return obj; + } + + [Symbol.iterator]() { + return Object.entries(this.toJSON())[Symbol.iterator](); + } + + toString() { + return Object.entries(this.toJSON()) + .map(([header, value]) => header + ': ' + value) + .join('\n'); + } + + getSetCookie() { + return this.get('set-cookie') || []; + } + + get [Symbol.toStringTag]() { + return 'AxiosHeaders'; + } + + static from(thing) { + return thing instanceof this ? thing : new this(thing); + } + + static concat(first, ...targets) { + const computed = new this(first); + + targets.forEach((target) => computed.set(target)); + + return computed; + } + + static accessor(header) { + const internals = + (this[$internals] = + this[$internals] = + { + accessors: {}, + }); + + const accessors = internals.accessors; + const prototype = this.prototype; + + function defineAccessor(_header) { + const lHeader = normalizeHeader(_header); + + if (!accessors[lHeader]) { + buildAccessors(prototype, _header); + accessors[lHeader] = true; + } + } + + utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); + + return this; + } +} + +AxiosHeaders$1.accessor([ + 'Content-Type', + 'Content-Length', + 'Accept', + 'Accept-Encoding', + 'User-Agent', + 'Authorization', +]); + +// reserved names hotfix +utils$1.reduceDescriptors(AxiosHeaders$1.prototype, ({ value }, key) => { + let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` + return { + get: () => value, + set(headerValue) { + this[mapped] = headerValue; + }, + }; +}); + +utils$1.freezeMethods(AxiosHeaders$1); + +const AxiosHeaders$2 = AxiosHeaders$1; + +/** + * Transform the data for a request or a response + * + * @param {Array|Function} fns A single function or Array of functions + * @param {?Object} response The response object + * + * @returns {*} The resulting transformed data + */ +function transformData(fns, response) { + const config = this || defaults$1; + const context = response || config; + const headers = AxiosHeaders$2.from(context.headers); + let data = context.data; + + utils$1.forEach(fns, function transform(fn) { + data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); + }); + + headers.normalize(); + + return data; +} + +function isCancel$1(value) { + return !!(value && value.__CANCEL__); +} + +class CanceledError$1 extends AxiosError$2 { + /** + * A `CanceledError` is an object that is thrown when an operation is canceled. + * + * @param {string=} message The message. + * @param {Object=} config The config. + * @param {Object=} request The request. + * + * @returns {CanceledError} The created error. + */ + constructor(message, config, request) { + super(message == null ? 'canceled' : message, AxiosError$2.ERR_CANCELED, config, request); + this.name = 'CanceledError'; + this.__CANCEL__ = true; + } +} + +const CanceledError$2 = CanceledError$1; + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + * + * @returns {object} The response. + */ +function settle(resolve, reject, response) { + const validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject( + new AxiosError$2( + 'Request failed with status code ' + response.status, + [AxiosError$2.ERR_BAD_REQUEST, AxiosError$2.ERR_BAD_RESPONSE][ + Math.floor(response.status / 100) - 4 + ], + response.config, + response.request, + response + ) + ); + } +} + +function parseProtocol(url) { + const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); + return (match && match[1]) || ''; +} + +/** + * Calculate data maxRate + * @param {Number} [samplesCount= 10] + * @param {Number} [min= 1000] + * @returns {Function} + */ +function speedometer(samplesCount, min) { + samplesCount = samplesCount || 10; + const bytes = new Array(samplesCount); + const timestamps = new Array(samplesCount); + let head = 0; + let tail = 0; + let firstSampleTS; + + min = min !== undefined ? min : 1000; + + return function push(chunkLength) { + const now = Date.now(); + + const startedAt = timestamps[tail]; + + if (!firstSampleTS) { + firstSampleTS = now; + } + + bytes[head] = chunkLength; + timestamps[head] = now; + + let i = tail; + let bytesCount = 0; + + while (i !== head) { + bytesCount += bytes[i++]; + i = i % samplesCount; + } + + head = (head + 1) % samplesCount; + + if (head === tail) { + tail = (tail + 1) % samplesCount; + } + + if (now - firstSampleTS < min) { + return; + } + + const passed = startedAt && now - startedAt; + + return passed ? Math.round((bytesCount * 1000) / passed) : undefined; + }; +} + +/** + * Throttle decorator + * @param {Function} fn + * @param {Number} freq + * @return {Function} + */ +function throttle(fn, freq) { + let timestamp = 0; + let threshold = 1000 / freq; + let lastArgs; + let timer; + + const invoke = (args, now = Date.now()) => { + timestamp = now; + lastArgs = null; + if (timer) { + clearTimeout(timer); + timer = null; + } + fn(...args); + }; + + const throttled = (...args) => { + const now = Date.now(); + const passed = now - timestamp; + if (passed >= threshold) { + invoke(args, now); + } else { + lastArgs = args; + if (!timer) { + timer = setTimeout(() => { + timer = null; + invoke(lastArgs); + }, threshold - passed); + } + } + }; + + const flush = () => lastArgs && invoke(lastArgs); + + return [throttled, flush]; +} + +const progressEventReducer = (listener, isDownloadStream, freq = 3) => { + let bytesNotified = 0; + const _speedometer = speedometer(50, 250); + + return throttle((e) => { + const loaded = e.loaded; + const total = e.lengthComputable ? e.total : undefined; + const progressBytes = loaded - bytesNotified; + const rate = _speedometer(progressBytes); + const inRange = loaded <= total; + + bytesNotified = loaded; + + const data = { + loaded, + total, + progress: total ? loaded / total : undefined, + bytes: progressBytes, + rate: rate ? rate : undefined, + estimated: rate && total && inRange ? (total - loaded) / rate : undefined, + event: e, + lengthComputable: total != null, + [isDownloadStream ? 'download' : 'upload']: true, + }; + + listener(data); + }, freq); +}; + +const progressEventDecorator = (total, throttled) => { + const lengthComputable = total != null; + + return [ + (loaded) => + throttled[0]({ + lengthComputable, + total, + loaded, + }), + throttled[1], + ]; +}; + +const asyncDecorator = + (fn) => + (...args) => + utils$1.asap(() => fn(...args)); + +const isURLSameOrigin = platform.hasStandardBrowserEnv + ? ((origin, isMSIE) => (url) => { + url = new URL(url, platform.origin); + + return ( + origin.protocol === url.protocol && + origin.host === url.host && + (isMSIE || origin.port === url.port) + ); + })( + new URL(platform.origin), + platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent) + ) + : () => true; + +const cookies = platform.hasStandardBrowserEnv + ? // Standard browser envs support document.cookie + { + write(name, value, expires, path, domain, secure, sameSite) { + if (typeof document === 'undefined') return; + + const cookie = [`${name}=${encodeURIComponent(value)}`]; + + if (utils$1.isNumber(expires)) { + cookie.push(`expires=${new Date(expires).toUTCString()}`); + } + if (utils$1.isString(path)) { + cookie.push(`path=${path}`); + } + if (utils$1.isString(domain)) { + cookie.push(`domain=${domain}`); + } + if (secure === true) { + cookie.push('secure'); + } + if (utils$1.isString(sameSite)) { + cookie.push(`SameSite=${sameSite}`); + } + + document.cookie = cookie.join('; '); + }, + + read(name) { + if (typeof document === 'undefined') return null; + const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)')); + return match ? decodeURIComponent(match[1]) : null; + }, + + remove(name) { + this.write(name, '', Date.now() - 86400000, '/'); + }, + } + : // Non-standard browser env (web workers, react-native) lack needed support. + { + write() {}, + read() { + return null; + }, + remove() {}, + }; + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + if (typeof url !== 'string') { + return false; + } + + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); +} + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * + * @returns {string} The combined URL + */ +function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +} + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * + * @returns {string} The combined full path + */ +function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) { + let isRelativeUrl = !isAbsoluteURL(requestedURL); + if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +} + +const headersToObject = (thing) => (thing instanceof AxiosHeaders$2 ? { ...thing } : thing); + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * + * @returns {Object} New object resulting from merging config2 to config1 + */ +function mergeConfig$1(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + const config = {}; + + function getMergedValue(target, source, prop, caseless) { + if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { + return utils$1.merge.call({ caseless }, target, source); + } else if (utils$1.isPlainObject(source)) { + return utils$1.merge({}, source); + } else if (utils$1.isArray(source)) { + return source.slice(); + } + return source; + } + + function mergeDeepProperties(a, b, prop, caseless) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(a, b, prop, caseless); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(undefined, a, prop, caseless); + } + } + + // eslint-disable-next-line consistent-return + function valueFromConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(undefined, b); + } + } + + // eslint-disable-next-line consistent-return + function defaultToConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(undefined, b); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(undefined, a); + } + } + + // eslint-disable-next-line consistent-return + function mergeDirectKeys(a, b, prop) { + if (prop in config2) { + return getMergedValue(a, b); + } else if (prop in config1) { + return getMergedValue(undefined, a); + } + } + + const mergeMap = { + url: valueFromConfig2, + method: valueFromConfig2, + data: valueFromConfig2, + baseURL: defaultToConfig2, + transformRequest: defaultToConfig2, + transformResponse: defaultToConfig2, + paramsSerializer: defaultToConfig2, + timeout: defaultToConfig2, + timeoutMessage: defaultToConfig2, + withCredentials: defaultToConfig2, + withXSRFToken: defaultToConfig2, + adapter: defaultToConfig2, + responseType: defaultToConfig2, + xsrfCookieName: defaultToConfig2, + xsrfHeaderName: defaultToConfig2, + onUploadProgress: defaultToConfig2, + onDownloadProgress: defaultToConfig2, + decompress: defaultToConfig2, + maxContentLength: defaultToConfig2, + maxBodyLength: defaultToConfig2, + beforeRedirect: defaultToConfig2, + transport: defaultToConfig2, + httpAgent: defaultToConfig2, + httpsAgent: defaultToConfig2, + cancelToken: defaultToConfig2, + socketPath: defaultToConfig2, + responseEncoding: defaultToConfig2, + validateStatus: mergeDirectKeys, + headers: (a, b, prop) => + mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true), + }; + + utils$1.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) { + if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return; + const merge = utils$1.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties; + const configValue = merge(config1[prop], config2[prop], prop); + (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); + }); + + return config; +} + +const resolveConfig = (config) => { + const newConfig = mergeConfig$1({}, config); + + let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig; + + newConfig.headers = headers = AxiosHeaders$2.from(headers); + + newConfig.url = buildURL( + buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), + config.params, + config.paramsSerializer + ); + + // HTTP basic authentication + if (auth) { + headers.set( + 'Authorization', + 'Basic ' + + btoa( + (auth.username || '') + + ':' + + (auth.password ? unescape(encodeURIComponent(auth.password)) : '') + ) + ); + } + + if (utils$1.isFormData(data)) { + if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { + headers.setContentType(undefined); // browser handles it + } else if (utils$1.isFunction(data.getHeaders)) { + // Node.js FormData (like form-data package) + const formHeaders = data.getHeaders(); + // Only set safe headers to avoid overwriting security headers + const allowedHeaders = ['content-type', 'content-length']; + Object.entries(formHeaders).forEach(([key, val]) => { + if (allowedHeaders.includes(key.toLowerCase())) { + headers.set(key, val); + } + }); + } + } + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + + if (platform.hasStandardBrowserEnv) { + withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig)); + + if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) { + // Add xsrf header + const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); + + if (xsrfValue) { + headers.set(xsrfHeaderName, xsrfValue); + } + } + } + + return newConfig; +}; + +const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; + +const xhrAdapter = isXHRAdapterSupported && + function (config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + const _config = resolveConfig(config); + let requestData = _config.data; + const requestHeaders = AxiosHeaders$2.from(_config.headers).normalize(); + let { responseType, onUploadProgress, onDownloadProgress } = _config; + let onCanceled; + let uploadThrottled, downloadThrottled; + let flushUpload, flushDownload; + + function done() { + flushUpload && flushUpload(); // flush events + flushDownload && flushDownload(); // flush events + + _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); + + _config.signal && _config.signal.removeEventListener('abort', onCanceled); + } + + let request = new XMLHttpRequest(); + + request.open(_config.method.toUpperCase(), _config.url, true); + + // Set the request timeout in MS + request.timeout = _config.timeout; + + function onloadend() { + if (!request) { + return; + } + // Prepare the response + const responseHeaders = AxiosHeaders$2.from( + 'getAllResponseHeaders' in request && request.getAllResponseHeaders() + ); + const responseData = + !responseType || responseType === 'text' || responseType === 'json' + ? request.responseText + : request.response; + const response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config, + request, + }; + + settle( + function _resolve(value) { + resolve(value); + done(); + }, + function _reject(err) { + reject(err); + done(); + }, + response + ); + + // Clean up request + request = null; + } + + if ('onloadend' in request) { + // Use onloadend if available + request.onloadend = onloadend; + } else { + // Listen for ready state to emulate onloadend + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if ( + request.status === 0 && + !(request.responseURL && request.responseURL.indexOf('file:') === 0) + ) { + return; + } + // readystate handler is calling before onerror or ontimeout handlers, + // so we should call onloadend on the next 'tick' + setTimeout(onloadend); + }; + } + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(new AxiosError$2('Request aborted', AxiosError$2.ECONNABORTED, config, request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError(event) { + // Browsers deliver a ProgressEvent in XHR onerror + // (message may be empty; when present, surface it) + // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event + const msg = event && event.message ? event.message : 'Network Error'; + const err = new AxiosError$2(msg, AxiosError$2.ERR_NETWORK, config, request); + // attach the underlying event for consumers who want details + err.event = event || null; + reject(err); + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + let timeoutErrorMessage = _config.timeout + ? 'timeout of ' + _config.timeout + 'ms exceeded' + : 'timeout exceeded'; + const transitional = _config.transitional || transitionalDefaults; + if (_config.timeoutErrorMessage) { + timeoutErrorMessage = _config.timeoutErrorMessage; + } + reject( + new AxiosError$2( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError$2.ETIMEDOUT : AxiosError$2.ECONNABORTED, + config, + request + ) + ); + + // Clean up request + request = null; + }; + + // Remove Content-Type if data is undefined + requestData === undefined && requestHeaders.setContentType(null); + + // Add headers to the request + if ('setRequestHeader' in request) { + utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { + request.setRequestHeader(key, val); + }); + } + + // Add withCredentials to request if needed + if (!utils$1.isUndefined(_config.withCredentials)) { + request.withCredentials = !!_config.withCredentials; + } + + // Add responseType to request if needed + if (responseType && responseType !== 'json') { + request.responseType = _config.responseType; + } + + // Handle progress if needed + if (onDownloadProgress) { + [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true); + request.addEventListener('progress', downloadThrottled); + } + + // Not all browsers support upload events + if (onUploadProgress && request.upload) { + [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress); + + request.upload.addEventListener('progress', uploadThrottled); + + request.upload.addEventListener('loadend', flushUpload); + } + + if (_config.cancelToken || _config.signal) { + // Handle cancellation + // eslint-disable-next-line func-names + onCanceled = (cancel) => { + if (!request) { + return; + } + reject(!cancel || cancel.type ? new CanceledError$2(null, config, request) : cancel); + request.abort(); + request = null; + }; + + _config.cancelToken && _config.cancelToken.subscribe(onCanceled); + if (_config.signal) { + _config.signal.aborted + ? onCanceled() + : _config.signal.addEventListener('abort', onCanceled); + } + } + + const protocol = parseProtocol(_config.url); + + if (protocol && platform.protocols.indexOf(protocol) === -1) { + reject( + new AxiosError$2( + 'Unsupported protocol ' + protocol + ':', + AxiosError$2.ERR_BAD_REQUEST, + config + ) + ); + return; + } + + // Send the request + request.send(requestData || null); + }); + }; + +const composeSignals = (signals, timeout) => { + const { length } = (signals = signals ? signals.filter(Boolean) : []); + + if (timeout || length) { + let controller = new AbortController(); + + let aborted; + + const onabort = function (reason) { + if (!aborted) { + aborted = true; + unsubscribe(); + const err = reason instanceof Error ? reason : this.reason; + controller.abort( + err instanceof AxiosError$2 + ? err + : new CanceledError$2(err instanceof Error ? err.message : err) + ); + } + }; + + let timer = + timeout && + setTimeout(() => { + timer = null; + onabort(new AxiosError$2(`timeout of ${timeout}ms exceeded`, AxiosError$2.ETIMEDOUT)); + }, timeout); + + const unsubscribe = () => { + if (signals) { + timer && clearTimeout(timer); + timer = null; + signals.forEach((signal) => { + signal.unsubscribe + ? signal.unsubscribe(onabort) + : signal.removeEventListener('abort', onabort); + }); + signals = null; + } + }; + + signals.forEach((signal) => signal.addEventListener('abort', onabort)); + + const { signal } = controller; + + signal.unsubscribe = () => utils$1.asap(unsubscribe); + + return signal; + } +}; + +const composeSignals$1 = composeSignals; + +const streamChunk = function* (chunk, chunkSize) { + let len = chunk.byteLength; + + if (!chunkSize || len < chunkSize) { + yield chunk; + return; + } + + let pos = 0; + let end; + + while (pos < len) { + end = pos + chunkSize; + yield chunk.slice(pos, end); + pos = end; + } +}; + +const readBytes = async function* (iterable, chunkSize) { + for await (const chunk of readStream(iterable)) { + yield* streamChunk(chunk, chunkSize); + } +}; + +const readStream = async function* (stream) { + if (stream[Symbol.asyncIterator]) { + yield* stream; + return; + } + + const reader = stream.getReader(); + try { + for (;;) { + const { done, value } = await reader.read(); + if (done) { + break; + } + yield value; + } + } finally { + await reader.cancel(); + } +}; + +const trackStream = (stream, chunkSize, onProgress, onFinish) => { + const iterator = readBytes(stream, chunkSize); + + let bytes = 0; + let done; + let _onFinish = (e) => { + if (!done) { + done = true; + onFinish && onFinish(e); + } + }; + + return new ReadableStream( + { + async pull(controller) { + try { + const { done, value } = await iterator.next(); + + if (done) { + _onFinish(); + controller.close(); + return; + } + + let len = value.byteLength; + if (onProgress) { + let loadedBytes = (bytes += len); + onProgress(loadedBytes); + } + controller.enqueue(new Uint8Array(value)); + } catch (err) { + _onFinish(err); + throw err; + } + }, + cancel(reason) { + _onFinish(reason); + return iterator.return(); + }, + }, + { + highWaterMark: 2, + } + ); +}; + +const DEFAULT_CHUNK_SIZE = 64 * 1024; + +const { isFunction } = utils$1; + +const globalFetchAPI = (({ Request, Response }) => ({ + Request, + Response, +}))(utils$1.global); + +const { ReadableStream: ReadableStream$1, TextEncoder } = utils$1.global; + +const test = (fn, ...args) => { + try { + return !!fn(...args); + } catch (e) { + return false; + } +}; + +const factory = (env) => { + env = utils$1.merge.call( + { + skipUndefined: true, + }, + globalFetchAPI, + env + ); + + const { fetch: envFetch, Request, Response } = env; + const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function'; + const isRequestSupported = isFunction(Request); + const isResponseSupported = isFunction(Response); + + if (!isFetchSupported) { + return false; + } + + const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream$1); + + const encodeText = + isFetchSupported && + (typeof TextEncoder === 'function' + ? ( + (encoder) => (str) => + encoder.encode(str) + )(new TextEncoder()) + : async (str) => new Uint8Array(await new Request(str).arrayBuffer())); + + const supportsRequestStream = + isRequestSupported && + isReadableStreamSupported && + test(() => { + let duplexAccessed = false; + + const hasContentType = new Request(platform.origin, { + body: new ReadableStream$1(), + method: 'POST', + get duplex() { + duplexAccessed = true; + return 'half'; + }, + }).headers.has('Content-Type'); + + return duplexAccessed && !hasContentType; + }); + + const supportsResponseStream = + isResponseSupported && + isReadableStreamSupported && + test(() => utils$1.isReadableStream(new Response('').body)); + + const resolvers = { + stream: supportsResponseStream && ((res) => res.body), + }; + + isFetchSupported && + (() => { + ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => { + !resolvers[type] && + (resolvers[type] = (res, config) => { + let method = res && res[type]; + + if (method) { + return method.call(res); + } + + throw new AxiosError$2( + `Response type '${type}' is not supported`, + AxiosError$2.ERR_NOT_SUPPORT, + config + ); + }); + }); + })(); + + const getBodyLength = async (body) => { + if (body == null) { + return 0; + } + + if (utils$1.isBlob(body)) { + return body.size; + } + + if (utils$1.isSpecCompliantForm(body)) { + const _request = new Request(platform.origin, { + method: 'POST', + body, + }); + return (await _request.arrayBuffer()).byteLength; + } + + if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) { + return body.byteLength; + } + + if (utils$1.isURLSearchParams(body)) { + body = body + ''; + } + + if (utils$1.isString(body)) { + return (await encodeText(body)).byteLength; + } + }; + + const resolveBodyLength = async (headers, body) => { + const length = utils$1.toFiniteNumber(headers.getContentLength()); + + return length == null ? getBodyLength(body) : length; + }; + + return async (config) => { + let { + url, + method, + data, + signal, + cancelToken, + timeout, + onDownloadProgress, + onUploadProgress, + responseType, + headers, + withCredentials = 'same-origin', + fetchOptions, + } = resolveConfig(config); + + let _fetch = envFetch || fetch; + + responseType = responseType ? (responseType + '').toLowerCase() : 'text'; + + let composedSignal = composeSignals$1( + [signal, cancelToken && cancelToken.toAbortSignal()], + timeout + ); + + let request = null; + + const unsubscribe = + composedSignal && + composedSignal.unsubscribe && + (() => { + composedSignal.unsubscribe(); + }); + + let requestContentLength; + + try { + if ( + onUploadProgress && + supportsRequestStream && + method !== 'get' && + method !== 'head' && + (requestContentLength = await resolveBodyLength(headers, data)) !== 0 + ) { + let _request = new Request(url, { + method: 'POST', + body: data, + duplex: 'half', + }); + + let contentTypeHeader; + + if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) { + headers.setContentType(contentTypeHeader); + } + + if (_request.body) { + const [onProgress, flush] = progressEventDecorator( + requestContentLength, + progressEventReducer(asyncDecorator(onUploadProgress)) + ); + + data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); + } + } + + if (!utils$1.isString(withCredentials)) { + withCredentials = withCredentials ? 'include' : 'omit'; + } + + // Cloudflare Workers throws when credentials are defined + // see https://github.com/cloudflare/workerd/issues/902 + const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype; + + const resolvedOptions = { + ...fetchOptions, + signal: composedSignal, + method: method.toUpperCase(), + headers: headers.normalize().toJSON(), + body: data, + duplex: 'half', + credentials: isCredentialsSupported ? withCredentials : undefined, + }; + + request = isRequestSupported && new Request(url, resolvedOptions); + + let response = await (isRequestSupported + ? _fetch(request, fetchOptions) + : _fetch(url, resolvedOptions)); + + const isStreamResponse = + supportsResponseStream && (responseType === 'stream' || responseType === 'response'); + + if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) { + const options = {}; + + ['status', 'statusText', 'headers'].forEach((prop) => { + options[prop] = response[prop]; + }); + + const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length')); + + const [onProgress, flush] = + (onDownloadProgress && + progressEventDecorator( + responseContentLength, + progressEventReducer(asyncDecorator(onDownloadProgress), true) + )) || + []; + + response = new Response( + trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { + flush && flush(); + unsubscribe && unsubscribe(); + }), + options + ); + } + + responseType = responseType || 'text'; + + let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text']( + response, + config + ); + + !isStreamResponse && unsubscribe && unsubscribe(); + + return await new Promise((resolve, reject) => { + settle(resolve, reject, { + data: responseData, + headers: AxiosHeaders$2.from(response.headers), + status: response.status, + statusText: response.statusText, + config, + request, + }); + }); + } catch (err) { + unsubscribe && unsubscribe(); + + if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) { + throw Object.assign( + new AxiosError$2( + 'Network Error', + AxiosError$2.ERR_NETWORK, + config, + request, + err && err.response + ), + { + cause: err.cause || err, + } + ); + } + + throw AxiosError$2.from(err, err && err.code, config, request, err && err.response); + } + }; +}; + +const seedCache = new Map(); + +const getFetch = (config) => { + let env = (config && config.env) || {}; + const { fetch, Request, Response } = env; + const seeds = [Request, Response, fetch]; + + let len = seeds.length, + i = len, + seed, + target, + map = seedCache; + + while (i--) { + seed = seeds[i]; + target = map.get(seed); + + target === undefined && map.set(seed, (target = i ? new Map() : factory(env))); + + map = target; + } + + return target; +}; + +getFetch(); + +/** + * Known adapters mapping. + * Provides environment-specific adapters for Axios: + * - `http` for Node.js + * - `xhr` for browsers + * - `fetch` for fetch API-based requests + * + * @type {Object} + */ +const knownAdapters = { + http: httpAdapter, + xhr: xhrAdapter, + fetch: { + get: getFetch, + }, +}; + +// Assign adapter names for easier debugging and identification +utils$1.forEach(knownAdapters, (fn, value) => { + if (fn) { + try { + Object.defineProperty(fn, 'name', { value }); + } catch (e) { + // eslint-disable-next-line no-empty + } + Object.defineProperty(fn, 'adapterName', { value }); + } +}); + +/** + * Render a rejection reason string for unknown or unsupported adapters + * + * @param {string} reason + * @returns {string} + */ +const renderReason = (reason) => `- ${reason}`; + +/** + * Check if the adapter is resolved (function, null, or false) + * + * @param {Function|null|false} adapter + * @returns {boolean} + */ +const isResolvedHandle = (adapter) => + utils$1.isFunction(adapter) || adapter === null || adapter === false; + +/** + * Get the first suitable adapter from the provided list. + * Tries each adapter in order until a supported one is found. + * Throws an AxiosError if no adapter is suitable. + * + * @param {Array|string|Function} adapters - Adapter(s) by name or function. + * @param {Object} config - Axios request configuration + * @throws {AxiosError} If no suitable adapter is available + * @returns {Function} The resolved adapter function + */ +function getAdapter$1(adapters, config) { + adapters = utils$1.isArray(adapters) ? adapters : [adapters]; + + const { length } = adapters; + let nameOrAdapter; + let adapter; + + const rejectedReasons = {}; + + for (let i = 0; i < length; i++) { + nameOrAdapter = adapters[i]; + let id; + + adapter = nameOrAdapter; + + if (!isResolvedHandle(nameOrAdapter)) { + adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; + + if (adapter === undefined) { + throw new AxiosError$2(`Unknown adapter '${id}'`); + } + } + + if (adapter && (utils$1.isFunction(adapter) || (adapter = adapter.get(config)))) { + break; + } + + rejectedReasons[id || '#' + i] = adapter; + } + + if (!adapter) { + const reasons = Object.entries(rejectedReasons).map( + ([id, state]) => + `adapter ${id} ` + + (state === false ? 'is not supported by the environment' : 'is not available in the build') + ); + + let s = length + ? reasons.length > 1 + ? 'since :\n' + reasons.map(renderReason).join('\n') + : ' ' + renderReason(reasons[0]) + : 'as no adapter specified'; + + throw new AxiosError$2( + `There is no suitable adapter to dispatch the request ` + s, + 'ERR_NOT_SUPPORT' + ); + } + + return adapter; +} + +/** + * Exports Axios adapters and utility to resolve an adapter + */ +const adapters = { + /** + * Resolve an adapter from a list of adapter names or functions. + * @type {Function} + */ + getAdapter: getAdapter$1, + + /** + * Exposes all known adapters + * @type {Object} + */ + adapters: knownAdapters, +}; + +/** + * Throws a `CanceledError` if cancellation has been requested. + * + * @param {Object} config The config that is to be used for the request + * + * @returns {void} + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } + + if (config.signal && config.signal.aborted) { + throw new CanceledError$2(null, config); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * + * @returns {Promise} The Promise to be fulfilled + */ +function dispatchRequest(config) { + throwIfCancellationRequested(config); + + config.headers = AxiosHeaders$2.from(config.headers); + + // Transform request data + config.data = transformData.call(config, config.transformRequest); + + if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { + config.headers.setContentType('application/x-www-form-urlencoded', false); + } + + const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter, config); + + return adapter(config).then( + function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData.call(config, config.transformResponse, response); + + response.headers = AxiosHeaders$2.from(response.headers); + + return response; + }, + function onAdapterRejection(reason) { + if (!isCancel$1(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData.call( + config, + config.transformResponse, + reason.response + ); + reason.response.headers = AxiosHeaders$2.from(reason.response.headers); + } + } + + return Promise.reject(reason); + } + ); +} + +const VERSION$1 = "1.13.6"; + +const validators$1 = {}; + +// eslint-disable-next-line func-names +['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { + validators$1[type] = function validator(thing) { + return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; + }; +}); + +const deprecatedWarnings = {}; + +/** + * Transitional option validator + * + * @param {function|boolean?} validator - set to false if the transitional option has been removed + * @param {string?} version - deprecated version / removed since version + * @param {string?} message - some message with additional info + * + * @returns {function} + */ +validators$1.transitional = function transitional(validator, version, message) { + function formatMessage(opt, desc) { + return ( + '[Axios v' + + VERSION$1 + + "] Transitional option '" + + opt + + "'" + + desc + + (message ? '. ' + message : '') + ); + } + + // eslint-disable-next-line func-names + return (value, opt, opts) => { + if (validator === false) { + throw new AxiosError$2( + formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), + AxiosError$2.ERR_DEPRECATED + ); + } + + if (version && !deprecatedWarnings[opt]) { + deprecatedWarnings[opt] = true; + // eslint-disable-next-line no-console + console.warn( + formatMessage( + opt, + ' has been deprecated since v' + version + ' and will be removed in the near future' + ) + ); + } + + return validator ? validator(value, opt, opts) : true; + }; +}; + +validators$1.spelling = function spelling(correctSpelling) { + return (value, opt) => { + // eslint-disable-next-line no-console + console.warn(`${opt} is likely a misspelling of ${correctSpelling}`); + return true; + }; +}; + +/** + * Assert object's properties type + * + * @param {object} options + * @param {object} schema + * @param {boolean?} allowUnknown + * + * @returns {object} + */ + +function assertOptions(options, schema, allowUnknown) { + if (typeof options !== 'object') { + throw new AxiosError$2('options must be an object', AxiosError$2.ERR_BAD_OPTION_VALUE); + } + const keys = Object.keys(options); + let i = keys.length; + while (i-- > 0) { + const opt = keys[i]; + const validator = schema[opt]; + if (validator) { + const value = options[opt]; + const result = value === undefined || validator(value, opt, options); + if (result !== true) { + throw new AxiosError$2( + 'option ' + opt + ' must be ' + result, + AxiosError$2.ERR_BAD_OPTION_VALUE + ); + } + continue; + } + if (allowUnknown !== true) { + throw new AxiosError$2('Unknown option ' + opt, AxiosError$2.ERR_BAD_OPTION); + } + } +} + +const validator = { + assertOptions, + validators: validators$1, +}; + +const validators = validator.validators; + +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + * + * @return {Axios} A new instance of Axios + */ +class Axios$1 { + constructor(instanceConfig) { + this.defaults = instanceConfig || {}; + this.interceptors = { + request: new InterceptorManager$1(), + response: new InterceptorManager$1(), + }; + } + + /** + * Dispatch a request + * + * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) + * @param {?Object} config + * + * @returns {Promise} The Promise to be fulfilled + */ + async request(configOrUrl, config) { + try { + return await this._request(configOrUrl, config); + } catch (err) { + if (err instanceof Error) { + let dummy = {}; + + Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error()); + + // slice off the Error: ... line + const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; + try { + if (!err.stack) { + err.stack = stack; + // match without the 2 top stack lines + } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { + err.stack += '\n' + stack; + } + } catch (e) { + // ignore the case where "stack" is an un-writable property + } + } + + throw err; + } + } + + _request(configOrUrl, config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof configOrUrl === 'string') { + config = config || {}; + config.url = configOrUrl; + } else { + config = configOrUrl || {}; + } + + config = mergeConfig$1(this.defaults, config); + + const { transitional, paramsSerializer, headers } = config; + + if (transitional !== undefined) { + validator.assertOptions( + transitional, + { + silentJSONParsing: validators.transitional(validators.boolean), + forcedJSONParsing: validators.transitional(validators.boolean), + clarifyTimeoutError: validators.transitional(validators.boolean), + legacyInterceptorReqResOrdering: validators.transitional(validators.boolean), + }, + false + ); + } + + if (paramsSerializer != null) { + if (utils$1.isFunction(paramsSerializer)) { + config.paramsSerializer = { + serialize: paramsSerializer, + }; + } else { + validator.assertOptions( + paramsSerializer, + { + encode: validators.function, + serialize: validators.function, + }, + true + ); + } + } + + // Set config.allowAbsoluteUrls + if (config.allowAbsoluteUrls !== undefined) ; else if (this.defaults.allowAbsoluteUrls !== undefined) { + config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls; + } else { + config.allowAbsoluteUrls = true; + } + + validator.assertOptions( + config, + { + baseUrl: validators.spelling('baseURL'), + withXsrfToken: validators.spelling('withXSRFToken'), + }, + true + ); + + // Set config.method + config.method = (config.method || this.defaults.method || 'get').toLowerCase(); + + // Flatten headers + let contextHeaders = headers && utils$1.merge(headers.common, headers[config.method]); + + headers && + utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => { + delete headers[method]; + }); + + config.headers = AxiosHeaders$2.concat(contextHeaders, headers); + + // filter out skipped interceptors + const requestInterceptorChain = []; + let synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { + return; + } + + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; + + const transitional = config.transitional || transitionalDefaults; + const legacyInterceptorReqResOrdering = + transitional && transitional.legacyInterceptorReqResOrdering; + + if (legacyInterceptorReqResOrdering) { + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + } else { + requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + } + }); + + const responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); + + let promise; + let i = 0; + let len; + + if (!synchronousRequestInterceptors) { + const chain = [dispatchRequest.bind(this), undefined]; + chain.unshift(...requestInterceptorChain); + chain.push(...responseInterceptorChain); + len = chain.length; + + promise = Promise.resolve(config); + + while (i < len) { + promise = promise.then(chain[i++], chain[i++]); + } + + return promise; + } + + len = requestInterceptorChain.length; + + let newConfig = config; + + while (i < len) { + const onFulfilled = requestInterceptorChain[i++]; + const onRejected = requestInterceptorChain[i++]; + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected.call(this, error); + break; + } + } + + try { + promise = dispatchRequest.call(this, newConfig); + } catch (error) { + return Promise.reject(error); + } + + i = 0; + len = responseInterceptorChain.length; + + while (i < len) { + promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); + } + + return promise; + } + + getUri(config) { + config = mergeConfig$1(this.defaults, config); + const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); + return buildURL(fullPath, config.params, config.paramsSerializer); + } +} + +// Provide aliases for supported request methods +utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios$1.prototype[method] = function (url, config) { + return this.request( + mergeConfig$1(config || {}, { + method, + url, + data: (config || {}).data, + }) + ); + }; +}); + +utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + + function generateHTTPMethod(isForm) { + return function httpMethod(url, data, config) { + return this.request( + mergeConfig$1(config || {}, { + method, + headers: isForm + ? { + 'Content-Type': 'multipart/form-data', + } + : {}, + url, + data, + }) + ); + }; + } + + Axios$1.prototype[method] = generateHTTPMethod(); + + Axios$1.prototype[method + 'Form'] = generateHTTPMethod(true); +}); + +const Axios$2 = Axios$1; + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @param {Function} executor The executor function. + * + * @returns {CancelToken} + */ +class CancelToken$1 { + constructor(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + let resolvePromise; + + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + const token = this; + + // eslint-disable-next-line func-names + this.promise.then((cancel) => { + if (!token._listeners) return; + + let i = token._listeners.length; + + while (i-- > 0) { + token._listeners[i](cancel); + } + token._listeners = null; + }); + + // eslint-disable-next-line func-names + this.promise.then = (onfulfilled) => { + let _resolve; + // eslint-disable-next-line func-names + const promise = new Promise((resolve) => { + token.subscribe(resolve); + _resolve = resolve; + }).then(onfulfilled); + + promise.cancel = function reject() { + token.unsubscribe(_resolve); + }; + + return promise; + }; + + executor(function cancel(message, config, request) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new CanceledError$2(message, config, request); + resolvePromise(token.reason); + }); + } + + /** + * Throws a `CanceledError` if cancellation has been requested. + */ + throwIfRequested() { + if (this.reason) { + throw this.reason; + } + } + + /** + * Subscribe to the cancel signal + */ + + subscribe(listener) { + if (this.reason) { + listener(this.reason); + return; + } + + if (this._listeners) { + this._listeners.push(listener); + } else { + this._listeners = [listener]; + } + } + + /** + * Unsubscribe from the cancel signal + */ + + unsubscribe(listener) { + if (!this._listeners) { + return; + } + const index = this._listeners.indexOf(listener); + if (index !== -1) { + this._listeners.splice(index, 1); + } + } + + toAbortSignal() { + const controller = new AbortController(); + + const abort = (err) => { + controller.abort(err); + }; + + this.subscribe(abort); + + controller.signal.unsubscribe = () => this.unsubscribe(abort); + + return controller.signal; + } + + /** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ + static source() { + let cancel; + const token = new CancelToken$1(function executor(c) { + cancel = c; + }); + return { + token, + cancel, + }; + } +} + +const CancelToken$2 = CancelToken$1; + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * const args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * + * @returns {Function} + */ +function spread$1(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +} + +/** + * Determines whether the payload is an error thrown by Axios + * + * @param {*} payload The value to test + * + * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false + */ +function isAxiosError$1(payload) { + return utils$1.isObject(payload) && payload.isAxiosError === true; +} + +const HttpStatusCode$1 = { + Continue: 100, + SwitchingProtocols: 101, + Processing: 102, + EarlyHints: 103, + Ok: 200, + Created: 201, + Accepted: 202, + NonAuthoritativeInformation: 203, + NoContent: 204, + ResetContent: 205, + PartialContent: 206, + MultiStatus: 207, + AlreadyReported: 208, + ImUsed: 226, + MultipleChoices: 300, + MovedPermanently: 301, + Found: 302, + SeeOther: 303, + NotModified: 304, + UseProxy: 305, + Unused: 306, + TemporaryRedirect: 307, + PermanentRedirect: 308, + BadRequest: 400, + Unauthorized: 401, + PaymentRequired: 402, + Forbidden: 403, + NotFound: 404, + MethodNotAllowed: 405, + NotAcceptable: 406, + ProxyAuthenticationRequired: 407, + RequestTimeout: 408, + Conflict: 409, + Gone: 410, + LengthRequired: 411, + PreconditionFailed: 412, + PayloadTooLarge: 413, + UriTooLong: 414, + UnsupportedMediaType: 415, + RangeNotSatisfiable: 416, + ExpectationFailed: 417, + ImATeapot: 418, + MisdirectedRequest: 421, + UnprocessableEntity: 422, + Locked: 423, + FailedDependency: 424, + TooEarly: 425, + UpgradeRequired: 426, + PreconditionRequired: 428, + TooManyRequests: 429, + RequestHeaderFieldsTooLarge: 431, + UnavailableForLegalReasons: 451, + InternalServerError: 500, + NotImplemented: 501, + BadGateway: 502, + ServiceUnavailable: 503, + GatewayTimeout: 504, + HttpVersionNotSupported: 505, + VariantAlsoNegotiates: 506, + InsufficientStorage: 507, + LoopDetected: 508, + NotExtended: 510, + NetworkAuthenticationRequired: 511, + WebServerIsDown: 521, + ConnectionTimedOut: 522, + OriginIsUnreachable: 523, + TimeoutOccurred: 524, + SslHandshakeFailed: 525, + InvalidSslCertificate: 526, +}; + +Object.entries(HttpStatusCode$1).forEach(([key, value]) => { + HttpStatusCode$1[value] = key; +}); + +const HttpStatusCode$2 = HttpStatusCode$1; + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * + * @returns {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + const context = new Axios$2(defaultConfig); + const instance = bind(Axios$2.prototype.request, context); + + // Copy axios.prototype to instance + utils$1.extend(instance, Axios$2.prototype, context, { allOwnKeys: true }); + + // Copy context to instance + utils$1.extend(instance, context, null, { allOwnKeys: true }); + + // Factory for creating new instances + instance.create = function create(instanceConfig) { + return createInstance(mergeConfig$1(defaultConfig, instanceConfig)); + }; + + return instance; +} + +// Create the default instance to be exported +const axios = createInstance(defaults$1); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios$2; + +// Expose Cancel & CancelToken +axios.CanceledError = CanceledError$2; +axios.CancelToken = CancelToken$2; +axios.isCancel = isCancel$1; +axios.VERSION = VERSION$1; +axios.toFormData = toFormData$1; + +// Expose AxiosError class +axios.AxiosError = AxiosError$2; + +// alias for CanceledError for backward compatibility +axios.Cancel = axios.CanceledError; + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; + +axios.spread = spread$1; + +// Expose isAxiosError +axios.isAxiosError = isAxiosError$1; + +// Expose mergeConfig +axios.mergeConfig = mergeConfig$1; + +axios.AxiosHeaders = AxiosHeaders$2; + +axios.formToJSON = (thing) => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); + +axios.getAdapter = adapters.getAdapter; + +axios.HttpStatusCode = HttpStatusCode$2; + +axios.default = axios; + +// this module should only have a default export +const axios$1 = axios; + +// This module is intended to unwrap Axios default export as named. +// Keep top-level export same with static properties +// so that it can keep same with es module or cjs +const { + Axios, + AxiosError, + CanceledError, + isCancel, + CancelToken, + VERSION, + all, + Cancel, + isAxiosError, + spread, + toFormData, + AxiosHeaders, + HttpStatusCode, + formToJSON, + getAdapter, + mergeConfig, +} = axios$1; + +export { Axios, AxiosError, AxiosHeaders, Cancel, CancelToken, CanceledError, HttpStatusCode, VERSION, all, axios$1 as default, formToJSON, getAdapter, isAxiosError, isCancel, mergeConfig, spread, toFormData }; +//# sourceMappingURL=axios.js.map diff --git a/node_modules/axios/dist/esm/axios.js.map b/node_modules/axios/dist/esm/axios.js.map new file mode 100644 index 0000000..c7eebba --- /dev/null +++ b/node_modules/axios/dist/esm/axios.js.map @@ -0,0 +1 @@ +{"version":3,"file":"axios.js","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/null.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/browser/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/speedometer.js","../../lib/helpers/throttle.js","../../lib/helpers/progressEventReducer.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/cookies.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../lib/core/mergeConfig.js","../../lib/helpers/resolveConfig.js","../../lib/adapters/xhr.js","../../lib/helpers/composeSignals.js","../../lib/helpers/trackStream.js","../../lib/adapters/fetch.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.js","../../lib/env/data.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js","../../index.js"],"sourcesContent":["'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst { toString } = Object.prototype;\nconst { getPrototypeOf } = Object;\nconst { iterator, toStringTag } = Symbol;\n\nconst kindOf = ((cache) => (thing) => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type;\n};\n\nconst typeOfTest = (type) => (thing) => typeof thing === type;\n\n/**\n * Determine if a value is a non-null object\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst { isArray } = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return (\n val !== null &&\n !isUndefined(val) &&\n val.constructor !== null &&\n !isUndefined(val.constructor) &&\n isFunction(val.constructor.isBuffer) &&\n val.constructor.isBuffer(val)\n );\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && isArrayBuffer(val.buffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = (thing) => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (\n (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(toStringTag in val) &&\n !(iterator in val)\n );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n * \n * @param {*} value The value to test\n * \n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n return !!(value && typeof value.uri !== 'undefined');\n}\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n * \n * @param {*} formData The formData to test\n * \n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') return globalThis;\n if (typeof self !== 'undefined') return self;\n if (typeof window !== 'undefined') return window;\n if (typeof global !== 'undefined') return global;\n return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (FormDataCtor && thing instanceof FormDataCtor) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n 'ReadableStream',\n 'Request',\n 'Response',\n 'Headers',\n].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => {\n return str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n};\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, { allOwnKeys = false } = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n if (isBuffer(obj)) {\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== 'undefined') return globalThis;\n return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global;\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * const result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};\n const result = {};\n const assignValue = (val, key) => {\n // Skip dangerous property names to prevent prototype pollution\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n\n const targetKey = (caseless && findKey(result, key)) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n forEach(\n b,\n (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n value: bind(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(a, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n },\n { allOwnKeys }\n );\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xfeff) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n Object.defineProperty(constructor.prototype, 'constructor', {\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype,\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = ((TypedArray) => {\n // eslint-disable-next-line func-names\n return (thing) => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = (str) => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n ({ hasOwnProperty }) =>\n (obj, prop) =>\n hasOwnProperty.call(obj, prop)\n)(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error(\"Can not rewrite read-only method '\" + name + \"'\");\n };\n }\n });\n};\n\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\n */\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach((value) => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(\n thing &&\n isFunction(thing.append) &&\n thing[toStringTag] === 'FormData' &&\n thing[iterator]\n );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if (!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n thing &&\n (isObject(thing) || isFunction(thing)) &&\n isFunction(thing.then) &&\n isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported\n ? ((token, callbacks) => {\n _global.addEventListener(\n 'message',\n ({ source, data }) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n },\n false\n );\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, '*');\n };\n })(`axios@${Math.random()}`, [])\n : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n typeof queueMicrotask !== 'undefined'\n ? queueMicrotask.bind(_global)\n : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isReactNativeBlob,\n isReactNative,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n\n // Preserve status from the original error if not already set from response\n if (error.status != null && axiosError.status == null) {\n axiosError.status = error.status;\n }\n\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\n\n /**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\n constructor(message, code, config, request, response) {\n super(message);\n \n // Make message enumerable to maintain backward compatibility\n // The native Error constructor sets message as non-enumerable,\n // but axios < v1.13.3 had it as enumerable\n Object.defineProperty(this, 'message', {\n value: message,\n enumerable: true,\n writable: true,\n configurable: true\n });\n \n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path\n .concat(key)\n .map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n })\n .join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(\n options,\n {\n metaTokens: true,\n dots: false,\n indexes: false,\n },\n false,\n function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n }\n );\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob);\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n formData.append(renderKey(path, key, dots), convertValue(value));\n return false;\n }\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)))\n ) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) &&\n formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true\n ? renderKey([key], index, dots)\n : indexes === null\n ? key\n : key + '[]',\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable,\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result =\n !(utils.isUndefined(el) || el === null) &&\n visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00',\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder\n ? function (value) {\n return encoder.call(this, value, encode);\n }\n : encode;\n\n return this._pairs\n .map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '')\n .join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val)\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = (options && options.encode) || encode;\n\n const _options = utils.isFunction(options)\n ? {\n serialize: options,\n }\n : options;\n\n const serializeFn = _options && _options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, _options);\n } else {\n serializedParams = utils.isURLSearchParams(params)\n ? params.toString()\n : new AxiosURLSearchParams(params, _options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n * @param {Object} options The options for the interceptor, synchronous and runWhen\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null,\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false,\n legacyInterceptorReqResOrdering: true,\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict';\n\nexport default typeof Blob !== 'undefined' ? Blob : null;\n","import URLSearchParams from './classes/URLSearchParams.js';\nimport FormData from './classes/FormData.js';\nimport Blob from './classes/Blob.js';\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob,\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data'],\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = (typeof navigator === 'object' && navigator) || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv =\n hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin,\n};\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function (value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options,\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map((match) => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [\n function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if (\n (isFileList = utils.isFileList(data)) ||\n contentType.indexOf('multipart/form-data') > -1\n ) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? { 'files[]': data } : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n },\n ],\n\n transformResponse: [\n function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (\n data &&\n utils.isString(data) &&\n ((forcedJSONParsing && !this.responseType) || JSONRequested)\n ) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n },\n ],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob,\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': undefined,\n },\n },\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age',\n 'authorization',\n 'content-length',\n 'content-type',\n 'etag',\n 'expires',\n 'from',\n 'host',\n 'if-modified-since',\n 'if-unmodified-since',\n 'last-modified',\n 'location',\n 'max-forwards',\n 'proxy-authorization',\n 'referer',\n 'retry-after',\n 'user-agent',\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default (rawHeaders) => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders &&\n rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header\n .trim()\n .toLowerCase()\n .replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach((methodName) => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function (arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true,\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if (\n !key ||\n self[key] === undefined ||\n _rewrite === true ||\n (_rewrite === undefined && self[key] !== false)\n ) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {},\n dest,\n key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[(key = entry[0])] = (dest = obj[key])\n ? utils.isArray(dest)\n ? [...dest, entry[1]]\n : [dest, entry[1]]\n : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(\n key &&\n this[key] !== undefined &&\n (!matcher || matchHeaderValue(this, this[key], key, matcher))\n );\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null &&\n value !== false &&\n (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON())\n .map(([header, value]) => header + ': ' + value)\n .join('\\n');\n }\n\n getSetCookie() {\n return this.get('set-cookie') || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals =\n (this[$internals] =\n this[$internals] =\n {\n accessors: {},\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor([\n 'Content-Type',\n 'Content-Length',\n 'Accept',\n 'Accept-Encoding',\n 'User-Agent',\n 'Authorization',\n]);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n },\n };\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from '../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\n\nclass CanceledError extends AxiosError {\n /**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\n}\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(\n new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][\n Math.floor(response.status / 100) - 4\n ],\n response.config,\n response.request,\n response\n )\n );\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return (match && match[1]) || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round((bytesCount * 1000) / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if (passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle((e) => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? loaded / total : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true,\n };\n\n listener(data);\n }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [\n (loaded) =>\n throttled[0]({\n lengthComputable,\n total,\n loaded,\n }),\n throttled[1],\n ];\n};\n\nexport const asyncDecorator =\n (fn) =>\n (...args) =>\n utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n })(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n )\n : () => true;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n },\n }\n : // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {},\n };\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n if (typeof url !== 'string') {\n return false;\n }\n\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst headersToObject = (thing) => (thing instanceof AxiosHeaders ? { ...thing } : thing);\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({ caseless }, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) =>\n mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n };\n\n utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(\n buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls),\n config.params,\n config.paramsSerializer\n );\n\n // HTTP basic authentication\n if (auth) {\n headers.set(\n 'Authorization',\n 'Basic ' +\n btoa(\n (auth.username || '') +\n ':' +\n (auth.password ? unescape(encodeURIComponent(auth.password)) : '')\n )\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n","import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let { responseType, onUploadProgress, onDownloadProgress } = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData =\n !responseType || responseType === 'text' || responseType === 'json'\n ? request.responseText\n : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request,\n };\n\n settle(\n function _resolve(value) {\n resolve(value);\n done();\n },\n function _reject(err) {\n reject(err);\n done();\n },\n response\n );\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (\n request.status === 0 &&\n !(request.responseURL && request.responseURL.indexOf('file:') === 0)\n ) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout\n ? 'timeout of ' + _config.timeout + 'ms exceeded'\n : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(\n new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request\n )\n );\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = (cancel) => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted\n ? onCanceled()\n : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(\n new AxiosError(\n 'Unsupported protocol ' + protocol + ':',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\n );\n return;\n }\n\n // Send the request\n request.send(requestData || null);\n });\n };\n","import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const { length } = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(\n err instanceof AxiosError\n ? err\n : new CanceledError(err instanceof Error ? err.message : err)\n );\n }\n };\n\n let timer =\n timeout &&\n setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach((signal) => {\n signal.unsubscribe\n ? signal.unsubscribe(onabort)\n : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const { signal } = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n};\n\nexport default composeSignals;\n","export const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream(\n {\n async pull(controller) {\n try {\n const { done, value } = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = (bytes += len);\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n },\n },\n {\n highWaterMark: 2,\n }\n );\n};\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n progressEventReducer,\n progressEventDecorator,\n asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\nconst globalFetchAPI = (({ Request, Response }) => ({\n Request,\n Response,\n}))(utils.global);\n\nconst { ReadableStream, TextEncoder } = utils.global;\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false;\n }\n};\n\nconst factory = (env) => {\n env = utils.merge.call(\n {\n skipUndefined: true,\n },\n globalFetchAPI,\n env\n );\n\n const { fetch: envFetch, Request, Response } = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText =\n isFetchSupported &&\n (typeof TextEncoder === 'function'\n ? (\n (encoder) => (str) =>\n encoder.encode(str)\n )(new TextEncoder())\n : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n const supportsRequestStream =\n isRequestSupported &&\n isReadableStreamSupported &&\n test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream =\n isResponseSupported &&\n isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body),\n };\n\n isFetchSupported &&\n (() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n !resolvers[type] &&\n (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(\n `Response type '${type}' is not supported`,\n AxiosError.ERR_NOT_SUPPORT,\n config\n );\n });\n });\n })();\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions,\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals(\n [signal, cancelToken && cancelToken.toAbortSignal()],\n timeout\n );\n\n let request = null;\n\n const unsubscribe =\n composedSignal &&\n composedSignal.unsubscribe &&\n (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress &&\n supportsRequestStream &&\n method !== 'get' &&\n method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: 'half',\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: 'half',\n credentials: isCredentialsSupported ? withCredentials : undefined,\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported\n ? _fetch(request, fetchOptions)\n : _fetch(url, resolvedOptions));\n\n const isStreamResponse =\n supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach((prop) => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] =\n (onDownloadProgress &&\n progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n )) ||\n [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n response,\n config\n );\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request,\n });\n });\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError(\n 'Network Error',\n AxiosError.ERR_NETWORK,\n config,\n request,\n err && err.response\n ),\n {\n cause: err.cause || err,\n }\n );\n }\n\n throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n }\n };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const { fetch, Request, Response } = env;\n const seeds = [Request, Response, fetch];\n\n let len = seeds.length,\n i = len,\n seed,\n target,\n map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n },\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', { value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons).map(\n ([id, state]) =>\n `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length\n ? reasons.length > 1\n ? 'since :\\n' + reasons.map(renderReason).join('\\n')\n : ' ' + renderReason(reasons[0])\n : 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object}\n */\n adapters: knownAdapters,\n};\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from '../adapters/adapters.js';\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(config, config.transformRequest);\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(\n function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, config.transformResponse, response);\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n },\n function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n }\n );\n}\n","export const VERSION = \"1.13.6\";","'use strict';\n\nimport { VERSION } from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return (\n '[Axios v' +\n VERSION +\n \"] Transitional option '\" +\n opt +\n \"'\" +\n desc +\n (message ? '. ' + message : '')\n );\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError(\n 'option ' + opt + ' must be ' + result,\n AxiosError.ERR_BAD_OPTION_VALUE\n );\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\nimport transitionalDefaults from '../defaults/transitional.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager(),\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack;\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const { transitional, paramsSerializer, headers } = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(\n transitional,\n {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean),\n legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n },\n false\n );\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer,\n };\n } else {\n validator.assertOptions(\n paramsSerializer,\n {\n encode: validators.function,\n serialize: validators.function,\n },\n true\n );\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(\n config,\n {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken'),\n },\n true\n );\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(headers.common, headers[config.method]);\n\n headers &&\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => {\n delete headers[method];\n });\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n const transitional = config.transitional || transitionalDefaults;\n const legacyInterceptorReqResOrdering =\n transitional && transitional.legacyInterceptorReqResOrdering;\n\n if (legacyInterceptorReqResOrdering) {\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n } else {\n requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n }\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data,\n })\n );\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n headers: isForm\n ? {\n 'Content-Type': 'multipart/form-data',\n }\n : {},\n url,\n data,\n })\n );\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then((cancel) => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = (onfulfilled) => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise((resolve) => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel,\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * const args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && payload.isAxiosError === true;\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport { VERSION } from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from './core/AxiosHeaders.js';\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, { allOwnKeys: true });\n\n // Copy context to instance\n utils.extend(instance, context, null, { allOwnKeys: true });\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = (thing) => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios;\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig,\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig,\n};\n"],"names":["isFunction","AxiosError","utils","toFormData","encode","URLSearchParams","FormData","Blob","platform","AxiosHeaders","defaults","isCancel","CanceledError","mergeConfig","ReadableStream","composeSignals","fetchAdapter.getFetch","getAdapter","VERSION","validators","Axios","InterceptorManager","CancelToken","spread","isAxiosError","HttpStatusCode","axios"],"mappings":";AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE;AAC1C,EAAE,OAAO,SAAS,IAAI,GAAG;AACzB,IAAI,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACxC,GAAG,CAAC;AACJ;;ACTA;AACA;AACA,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;AACtC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;AAClC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;AACzC;AACA,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,KAAK;AACtC,EAAE,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACrE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACxB;AACA,MAAM,UAAU,GAAG,CAAC,IAAI,KAAK;AAC7B,EAAE,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,EAAE,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AAC3C,CAAC,CAAC;AACF;AACA,MAAM,UAAU,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,IAAI,CAAC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,EAAE;AACF,IAAI,GAAG,KAAK,IAAI;AAChB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACrB,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;AACjC,IAAIA,YAAU,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC;AACxC,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;AACjC,IAAI;AACJ,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,GAAG,EAAE;AAChC,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;AAChE,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACrC,GAAG,MAAM;AACT,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC5D,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,YAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK;AAC/B,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;AAChC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AACxC,EAAE;AACF,IAAI,CAAC,SAAS,KAAK,IAAI;AACvB,MAAM,SAAS,KAAK,MAAM,CAAC,SAAS;AACpC,MAAM,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,IAAI;AAC/C,IAAI,EAAE,WAAW,IAAI,GAAG,CAAC;AACzB,IAAI,EAAE,QAAQ,IAAI,GAAG,CAAC;AACtB,IAAI;AACJ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK;AAC/B;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACvC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,IAAI;AACN,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC;AAC5F,GAAG,CAAC,OAAO,CAAC,EAAE;AACd;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iBAAiB,GAAG,CAAC,KAAK,KAAK;AACrC,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC;AACvD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,WAAW,CAAC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,IAAIA,YAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,GAAG;AACrB,EAAE,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,OAAO,UAAU,CAAC;AAC3D,EAAE,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,OAAO,IAAI,CAAC;AAC/C,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;AACnD,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;AACnD,EAAE,OAAO,EAAE,CAAC;AACZ,CAAC;AACD;AACA,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;AACtB,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,QAAQ,KAAK,WAAW,GAAG,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC;AAChF;AACA,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK;AAC9B,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,OAAO,KAAK;AACd,IAAI,CAAC,YAAY,IAAI,KAAK,YAAY,YAAY;AAClD,MAAMA,YAAU,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9B,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,UAAU;AAC7C;AACA,SAAS,IAAI,KAAK,QAAQ,IAAIA,YAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,mBAAmB,CAAC;AACrG,OAAO;AACP,KAAK;AACL,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACxD;AACA,MAAM,CAAC,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,GAAG;AAC7D,EAAE,gBAAgB;AAClB,EAAE,SAAS;AACX,EAAE,UAAU;AACZ,EAAE,SAAS;AACX,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK;AACtB,EAAE,OAAO,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC;AACvF,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE;AACvD;AACA,EAAE,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;AAClD,IAAI,OAAO;AACX,GAAG;AACH;AACA,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,CAAC,CAAC;AACR;AACA;AACA,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B;AACA,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAChB,GAAG;AACH;AACA,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AACpB;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC5C,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACpC,KAAK;AACL,GAAG,MAAM;AACT;AACA,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACvB,MAAM,OAAO;AACb,KAAK;AACL;AACA;AACA,IAAI,MAAM,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjF,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAC5B,IAAI,IAAI,GAAG,CAAC;AACZ;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;AAC3B,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;AAC1B,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACtB,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AAClB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,IAAI,GAAG,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AACpC,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD;AACA,MAAM,OAAO,GAAG,CAAC,MAAM;AACvB;AACA,EAAE,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,OAAO,UAAU,CAAC;AAC3D,EAAE,OAAO,OAAO,IAAI,KAAK,WAAW,GAAG,IAAI,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9F,CAAC,GAAG,CAAC;AACL;AACA,MAAM,gBAAgB,GAAG,CAAC,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,OAAO,CAAC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,8BAA8B;AAC5C,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;AAC7E,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAE,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;AACpC;AACA,IAAI,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,WAAW,EAAE;AAC7E,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,MAAM,SAAS,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC;AAChE,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;AAChE,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;AACxD,KAAK,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;AACnC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACzC,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AAC7B,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AACtC,KAAK,MAAM,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AACpD,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;AAC9B,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpD,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AACvD,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK;AACvD,EAAE,OAAO;AACT,IAAI,CAAC;AACL,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;AAClB,MAAM,IAAI,OAAO,IAAIA,YAAU,CAAC,GAAG,CAAC,EAAE;AACtC,QAAQ,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE;AACtC,UAAU,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;AACnC,UAAU,QAAQ,EAAE,IAAI;AACxB,UAAU,UAAU,EAAE,IAAI;AAC1B,UAAU,YAAY,EAAE,IAAI;AAC5B,SAAS,CAAC,CAAC;AACX,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE;AACtC,UAAU,KAAK,EAAE,GAAG;AACpB,UAAU,QAAQ,EAAE,IAAI;AACxB,UAAU,UAAU,EAAE,IAAI;AAC1B,UAAU,YAAY,EAAE,IAAI;AAC5B,SAAS,CAAC,CAAC;AACX,OAAO;AACP,KAAK;AACL,IAAI,EAAE,UAAU,EAAE;AAClB,GAAG,CAAC;AACJ,EAAE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,OAAO,KAAK;AAC9B,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;AACxC,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,KAAK;AACxE,EAAE,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACjF,EAAE,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE;AAC9D,IAAI,KAAK,EAAE,WAAW;AACtB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,YAAY,EAAE,IAAI;AACtB,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE;AAC9C,IAAI,KAAK,EAAE,gBAAgB,CAAC,SAAS;AACrC,GAAG,CAAC,CAAC;AACL,EAAE,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,KAAK;AACjE,EAAE,IAAI,KAAK,CAAC;AACZ,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC1B;AACA,EAAE,IAAI,SAAS,IAAI,IAAI,EAAE,OAAO,OAAO,CAAC;AACxC;AACA,EAAE,GAAG;AACL,IAAI,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAClD,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AACrB,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACpB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,MAAM,IAAI,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAClF,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACxC,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC5B,OAAO;AACP,KAAK;AACL,IAAI,SAAS,GAAG,MAAM,KAAK,KAAK,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;AAC9D,GAAG,QAAQ,SAAS,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,EAAE;AACnG;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,KAAK;AAClD,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,EAAE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACvD,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;AAC1B,GAAG;AACH,EAAE,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC;AAClC,EAAE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACxD,EAAE,OAAO,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,KAAK,QAAQ,CAAC;AACpD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK;AAC3B,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC;AAC1B,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;AACnC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC;AAChC,EAAE,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AAClB,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,CAAC,UAAU,KAAK;AACtC;AACA,EAAE,OAAO,CAAC,KAAK,KAAK;AACpB,IAAI,OAAO,UAAU,IAAI,KAAK,YAAY,UAAU,CAAC;AACrD,GAAG,CAAC;AACJ,CAAC,EAAE,OAAO,UAAU,KAAK,WAAW,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK;AAClC,EAAE,MAAM,SAAS,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzC;AACA,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC;AACA,EAAE,IAAI,MAAM,CAAC;AACb;AACA,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;AACtD,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9B,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,GAAG;AACH,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK;AAClC,EAAE,IAAI,OAAO,CAAC;AACd,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AACjB;AACA,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE;AAChD,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtB,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF;AACA;AACA,MAAM,UAAU,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACjD;AACA,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK;AAC7B,EAAE,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,uBAAuB,EAAE,SAAS,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;AACzF,IAAI,OAAO,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;AACjC,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF;AACA;AACA,MAAM,cAAc,GAAG;AACvB,EAAE,CAAC,EAAE,cAAc,EAAE;AACrB,EAAE,CAAC,GAAG,EAAE,IAAI;AACZ,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;AAClC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC;AACA,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AAC5C,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;AAC5D,EAAE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAChC;AACA,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK;AAC7C,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,KAAK,EAAE;AAC1D,MAAM,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC;AACnD,KAAK;AACL,GAAG,CAAC,CAAC;AACL;AACA,EAAE,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;AACnD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK;AAC/B,EAAE,iBAAiB,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK;AAC/C;AACA,IAAI,IAAIA,YAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACnF,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL;AACA,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B;AACA,IAAI,IAAI,CAACA,YAAU,CAAC,KAAK,CAAC,EAAE,OAAO;AACnC;AACA,IAAI,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;AAClC;AACA,IAAI,IAAI,UAAU,IAAI,UAAU,EAAE;AAClC,MAAM,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;AAClC,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;AACzB,MAAM,UAAU,CAAC,GAAG,GAAG,MAAM;AAC7B,QAAQ,MAAM,KAAK,CAAC,oCAAoC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;AACvE,OAAO,CAAC;AACR,KAAK;AACL,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,aAAa,EAAE,SAAS,KAAK;AAClD,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AACjB;AACA,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK;AAC1B,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC3B,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACxB,KAAK,CAAC,CAAC;AACP,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AAClG;AACA,EAAE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF;AACA,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC;AACtB;AACA,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK;AAChD,EAAE,OAAO,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,YAAY,CAAC;AACnF,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE;AACpC,EAAE,OAAO,CAAC;AACV,IAAI,KAAK;AACT,IAAIA,YAAU,CAAC,KAAK,CAAC,MAAM,CAAC;AAC5B,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,UAAU;AACrC,IAAI,KAAK,CAAC,QAAQ,CAAC;AACnB,GAAG,CAAC;AACJ,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,GAAG,KAAK;AAC9B,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9B;AACA,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK;AAC/B,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC1B,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACtC,QAAQ,OAAO;AACf,OAAO;AACP;AACA;AACA,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC5B,QAAQ,OAAO,MAAM,CAAC;AACtB,OAAO;AACP;AACA,MAAM,IAAI,EAAE,QAAQ,IAAI,MAAM,CAAC,EAAE;AACjC,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC1B,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACjD;AACA,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK;AACxC,UAAU,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;AACrE,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAC7B;AACA,QAAQ,OAAO,MAAM,CAAC;AACtB,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACvB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,KAAK;AACzB,EAAE,KAAK;AACP,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAIA,YAAU,CAAC,KAAK,CAAC,CAAC;AACxC,EAAEA,YAAU,CAAC,KAAK,CAAC,IAAI,CAAC;AACxB,EAAEA,YAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,CAAC,qBAAqB,EAAE,oBAAoB,KAAK;AACxE,EAAE,IAAI,qBAAqB,EAAE;AAC7B,IAAI,OAAO,YAAY,CAAC;AACxB,GAAG;AACH;AACA,EAAE,OAAO,oBAAoB;AAC7B,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,KAAK;AAC7B,QAAQ,OAAO,CAAC,gBAAgB;AAChC,UAAU,SAAS;AACnB,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK;AAChC,YAAY,IAAI,MAAM,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,EAAE;AACtD,cAAc,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;AACtD,aAAa;AACb,WAAW;AACX,UAAU,KAAK;AACf,SAAS,CAAC;AACV;AACA,QAAQ,OAAO,CAAC,EAAE,KAAK;AACvB,UAAU,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7B,UAAU,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC1C,SAAS,CAAC;AACV,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACtC,MAAM,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC,EAAE,OAAO,YAAY,KAAK,UAAU,EAAEA,YAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI;AACV,EAAE,OAAO,cAAc,KAAK,WAAW;AACvC,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC,MAAM,CAAC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,KAAK,aAAa,CAAC;AAC5E;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,IAAIA,YAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3E;AACA,gBAAe;AACf,EAAE,OAAO;AACT,EAAE,aAAa;AACf,EAAE,QAAQ;AACV,EAAE,UAAU;AACZ,EAAE,iBAAiB;AACnB,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,SAAS;AACX,EAAE,QAAQ;AACV,EAAE,aAAa;AACf,EAAE,aAAa;AACf,EAAE,gBAAgB;AAClB,EAAE,SAAS;AACX,EAAE,UAAU;AACZ,EAAE,SAAS;AACX,EAAE,WAAW;AACb,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,iBAAiB;AACnB,EAAE,aAAa;AACf,EAAE,MAAM;AACR,EAAE,QAAQ;AACV,cAAEA,YAAU;AACZ,EAAE,QAAQ;AACV,EAAE,iBAAiB;AACnB,EAAE,YAAY;AACd,EAAE,UAAU;AACZ,EAAE,OAAO;AACT,EAAE,KAAK;AACP,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,YAAY;AACd,EAAE,MAAM;AACR,EAAE,UAAU;AACZ,EAAE,QAAQ;AACV,EAAE,OAAO;AACT,EAAE,YAAY;AACd,EAAE,QAAQ;AACV,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,UAAU,EAAE,cAAc;AAC5B,EAAE,iBAAiB;AACnB,EAAE,aAAa;AACf,EAAE,WAAW;AACb,EAAE,WAAW;AACb,EAAE,IAAI;AACN,EAAE,cAAc;AAChB,EAAE,OAAO;AACT,EAAE,MAAM,EAAE,OAAO;AACjB,EAAE,gBAAgB;AAClB,EAAE,mBAAmB;AACrB,EAAE,YAAY;AACd,EAAE,SAAS;AACX,EAAE,UAAU;AACZ,EAAE,YAAY,EAAE,aAAa;AAC7B,EAAE,IAAI;AACN,EAAE,UAAU;AACZ,CAAC;;ACl5BD,MAAMC,YAAU,SAAS,KAAK,CAAC;AAC/B,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE;AACnE,IAAI,MAAM,UAAU,GAAG,IAAIA,YAAU,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACpG,IAAI,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7B,IAAI,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AACjC;AACA;AACA,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,EAAE;AAC3D,MAAM,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACvC,KAAK;AACL;AACA,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAC1D,IAAI,OAAO,UAAU,CAAC;AACtB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC1D,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;AACrB;AACA;AACA;AACA;AACA,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AAC7C,UAAU,KAAK,EAAE,OAAO;AACxB,UAAU,UAAU,EAAE,IAAI;AAC1B,UAAU,QAAQ,EAAE,IAAI;AACxB,UAAU,YAAY,EAAE,IAAI;AAC5B,OAAO,CAAC,CAAC;AACT;AACA,MAAM,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;AAC/B,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,MAAM,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AACjC,MAAM,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AACvC,MAAM,OAAO,KAAK,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;AAC1C,MAAM,IAAI,QAAQ,EAAE;AACpB,UAAU,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACnC,UAAU,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AACxC,OAAO;AACP,KAAK;AACL;AACA,EAAE,MAAM,GAAG;AACX,IAAI,OAAO;AACX;AACA,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB;AACA,MAAM,WAAW,EAAE,IAAI,CAAC,WAAW;AACnC,MAAM,MAAM,EAAE,IAAI,CAAC,MAAM;AACzB;AACA,MAAM,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC7B,MAAM,UAAU,EAAE,IAAI,CAAC,UAAU;AACjC,MAAM,YAAY,EAAE,IAAI,CAAC,YAAY;AACrC,MAAM,KAAK,EAAE,IAAI,CAAC,KAAK;AACvB;AACA,MAAM,MAAM,EAAEC,OAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7C,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB,MAAM,MAAM,EAAE,IAAI,CAAC,MAAM;AACzB,KAAK,CAAC;AACN,GAAG;AACH,CAAC;AACD;AACA;AACAD,YAAU,CAAC,oBAAoB,GAAG,sBAAsB,CAAC;AACzDA,YAAU,CAAC,cAAc,GAAG,gBAAgB,CAAC;AAC7CA,YAAU,CAAC,YAAY,GAAG,cAAc,CAAC;AACzCA,YAAU,CAAC,SAAS,GAAG,WAAW,CAAC;AACnCA,YAAU,CAAC,WAAW,GAAG,aAAa,CAAC;AACvCA,YAAU,CAAC,yBAAyB,GAAG,2BAA2B,CAAC;AACnEA,YAAU,CAAC,cAAc,GAAG,gBAAgB,CAAC;AAC7CA,YAAU,CAAC,gBAAgB,GAAG,kBAAkB,CAAC;AACjDA,YAAU,CAAC,eAAe,GAAG,iBAAiB,CAAC;AAC/CA,YAAU,CAAC,YAAY,GAAG,cAAc,CAAC;AACzCA,YAAU,CAAC,eAAe,GAAG,iBAAiB,CAAC;AAC/CA,YAAU,CAAC,eAAe,GAAG,iBAAiB,CAAC;AAC/C;AACA,qBAAeA,YAAU;;ACzFzB;AACA,oBAAe,IAAI;;ACMnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,EAAE,OAAOC,OAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAIA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B,EAAE,OAAOA,OAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AACpC,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC;AACxB,EAAE,OAAO,IAAI;AACb,KAAK,MAAM,CAAC,GAAG,CAAC;AAChB,KAAK,GAAG,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE;AACjC;AACA,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AACpC,MAAM,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;AACpD,KAAK,CAAC;AACN,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;AAC3B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,OAAOA,OAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACtD,CAAC;AACD;AACA,MAAM,UAAU,GAAGA,OAAK,CAAC,YAAY,CAACA,OAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE;AAC7E,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,YAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC5C,EAAE,IAAI,CAACD,OAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5B,IAAI,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;AACpD,GAAG;AACH;AACA;AACA,EAAE,QAAQ,GAAG,QAAQ,IAAI,KAAyB,QAAQ,GAAG,CAAC;AAC9D;AACA;AACA,EAAE,OAAO,GAAGA,OAAK,CAAC,YAAY;AAC9B,IAAI,OAAO;AACX,IAAI;AACJ,MAAM,UAAU,EAAE,IAAI;AACtB,MAAM,IAAI,EAAE,KAAK;AACjB,MAAM,OAAO,EAAE,KAAK;AACpB,KAAK;AACL,IAAI,KAAK;AACT,IAAI,SAAS,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE;AACrC;AACA,MAAM,OAAO,CAACA,OAAK,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACxC;AACA,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC;AACpD,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC5B,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAClC,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC;AACtE,EAAE,MAAM,OAAO,GAAG,KAAK,IAAIA,OAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAC/D;AACA,EAAE,IAAI,CAACA,OAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AAClC,IAAI,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAC;AACtD,GAAG;AACH;AACA,EAAE,SAAS,YAAY,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC;AAClC;AACA,IAAI,IAAIA,OAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC7B,MAAM,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;AACjC,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAChC,MAAM,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC9B,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,IAAIA,OAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACzC,MAAM,MAAM,IAAID,YAAU,CAAC,8CAA8C,CAAC,CAAC;AAC3E,KAAK;AACL;AACA,IAAI,IAAIC,OAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAIA,OAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AACjE,MAAM,OAAO,OAAO,IAAI,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5F,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC;AACpB;AACA,IAAI,IAAIA,OAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAIA,OAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AACzE,MAAM,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACvE,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL;AACA,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrD,MAAM,IAAIA,OAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE;AACrC;AACA,QAAQ,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD;AACA,QAAQ,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACtC,OAAO,MAAM;AACb,QAAQ,CAACA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC;AACnD,SAAS,CAACA,OAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAIA,OAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChG,QAAQ;AACR;AACA,QAAQ,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AAClC;AACA,QAAQ,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE;AAC7C,UAAU,EAAEA,OAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;AACjD,YAAY,QAAQ,CAAC,MAAM;AAC3B;AACA,cAAc,OAAO,KAAK,IAAI;AAC9B,kBAAkB,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC;AAC/C,kBAAkB,OAAO,KAAK,IAAI;AAClC,oBAAoB,GAAG;AACvB,oBAAoB,GAAG,GAAG,IAAI;AAC9B,cAAc,YAAY,CAAC,EAAE,CAAC;AAC9B,aAAa,CAAC;AACd,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AAC5B,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACrE;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;AACnD,IAAI,cAAc;AAClB,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,GAAG,CAAC,CAAC;AACL;AACA,EAAE,SAAS,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;AAC9B,IAAI,IAAIA,OAAK,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO;AACzC;AACA,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACrC,MAAM,MAAM,KAAK,CAAC,iCAAiC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,KAAK;AACL;AACA,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtB;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE;AAChD,MAAM,MAAM,MAAM;AAClB,QAAQ,EAAEA,OAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;AAC/C,QAAQ,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAEA,OAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACjG;AACA,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE;AAC3B,QAAQ,KAAK,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;AAChB,GAAG;AACH;AACA,EAAE,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5B,IAAI,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC;AAClD,GAAG;AACH;AACA,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACb;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,QAAM,CAAC,GAAG,EAAE;AACrB,EAAE,MAAM,OAAO,GAAG;AAClB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,KAAK,EAAE,GAAG;AACd,IAAI,KAAK,EAAE,MAAM;AACjB,GAAG,CAAC;AACJ,EAAE,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,SAAS,QAAQ,CAAC,KAAK,EAAE;AACtF,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1B,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE;AAC/C,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,MAAM,IAAID,YAAU,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AACD;AACA,MAAM,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC;AACjD;AACA,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;AAChD,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;AACA,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,OAAO,EAAE;AAChD,EAAE,MAAM,OAAO,GAAG,OAAO;AACzB,MAAM,UAAU,KAAK,EAAE;AACvB,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAEC,QAAM,CAAC,CAAC;AACjD,OAAO;AACP,MAAMA,QAAM,CAAC;AACb;AACA,EAAE,OAAO,IAAI,CAAC,MAAM;AACpB,KAAK,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE;AAC7B,MAAM,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,KAAK,EAAE,EAAE,CAAC;AACV,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;;ACtDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,CAAC,GAAG,EAAE;AACrB,EAAE,OAAO,kBAAkB,CAAC,GAAG,CAAC;AAChC,KAAK,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AAC1B,KAAK,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACzB,KAAK,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AAC1B,KAAK,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC1B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;AACvD,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC;AACxD;AACA,EAAE,MAAM,QAAQ,GAAGF,OAAK,CAAC,UAAU,CAAC,OAAO,CAAC;AAC5C,MAAM;AACN,QAAQ,SAAS,EAAE,OAAO;AAC1B,OAAO;AACP,MAAM,OAAO,CAAC;AACd;AACA,EAAE,MAAM,WAAW,GAAG,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC;AACrD;AACA,EAAE,IAAI,gBAAgB,CAAC;AACvB;AACA,EAAE,IAAI,WAAW,EAAE;AACnB,IAAI,gBAAgB,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACrD,GAAG,MAAM;AACT,IAAI,gBAAgB,GAAGA,OAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC;AACtD,QAAQ,MAAM,CAAC,QAAQ,EAAE;AACzB,QAAQ,IAAI,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACrE,GAAG;AACH;AACA,EAAE,IAAI,gBAAgB,EAAE;AACxB,IAAI,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3C;AACA,IAAI,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;AAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,gBAAgB,CAAC;AACpE,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb;;AC7DA,MAAM,kBAAkB,CAAC;AACzB,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACvB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE;AACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvB,MAAM,SAAS;AACf,MAAM,QAAQ;AACd,MAAM,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,KAAK;AACxD,MAAM,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI;AAC/C,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACpC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,EAAE,EAAE;AACZ,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;AAC/B,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,MAAM,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACzB,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,CAAC,EAAE,EAAE;AACd,IAAIA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,cAAc,CAAC,CAAC,EAAE;AAC5D,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;AACtB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AACd,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,CAAC;AACD;AACA,6BAAe,kBAAkB;;ACrEjC,6BAAe;AACf,EAAE,iBAAiB,EAAE,IAAI;AACzB,EAAE,iBAAiB,EAAE,IAAI;AACzB,EAAE,mBAAmB,EAAE,KAAK;AAC5B,EAAE,+BAA+B,EAAE,IAAI;AACvC,CAAC;;ACJD,0BAAe,OAAO,eAAe,KAAK,WAAW,GAAG,eAAe,GAAG,oBAAoB;;ACD9F,mBAAe,OAAO,QAAQ,KAAK,WAAW,GAAG,QAAQ,GAAG,IAAI;;ACAhE,eAAe,OAAO,IAAI,KAAK,WAAW,GAAG,IAAI,GAAG,IAAI;;ACExD,mBAAe;AACf,EAAE,SAAS,EAAE,IAAI;AACjB,EAAE,OAAO,EAAE;AACX,qBAAIG,iBAAe;AACnB,cAAIC,UAAQ;AACZ,UAAIC,MAAI;AACR,GAAG;AACH,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;AAC7D,CAAC;;ACZD,MAAM,aAAa,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,CAAC;AACvF;AACA,MAAM,UAAU,GAAG,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,SAAS,CAAC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,qBAAqB;AAC3B,EAAE,aAAa;AACf,GAAG,CAAC,UAAU,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8BAA8B,GAAG,CAAC,MAAM;AAC9C,EAAE;AACF,IAAI,OAAO,iBAAiB,KAAK,WAAW;AAC5C;AACA,IAAI,IAAI,YAAY,iBAAiB;AACrC,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU;AAC5C,IAAI;AACJ,CAAC,GAAG,CAAC;AACL;AACA,MAAM,MAAM,GAAG,CAAC,aAAa,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,kBAAkB;;;;;;;;;;;ACxC5E,iBAAe;AACf,EAAE,GAAG,KAAK;AACV,EAAE,GAAGC,UAAQ;AACb,CAAC;;ACAc,SAAS,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE;AACxD,EAAE,OAAOL,YAAU,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE;AAClE,IAAI,OAAO,EAAE,UAAU,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;AAClD,MAAM,IAAI,QAAQ,CAAC,MAAM,IAAID,OAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACpD,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnD,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP;AACA,MAAM,OAAO,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,GAAG,OAAO;AACd,GAAG,CAAC,CAAC;AACL;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B;AACA;AACA;AACA;AACA,EAAE,OAAOA,OAAK,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;AAC9D,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AACzD,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AACjB,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACxB,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,QAAQ,EAAE;AAClC,EAAE,SAAS,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AACjD,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7B;AACA,IAAI,IAAI,IAAI,KAAK,WAAW,EAAE,OAAO,IAAI,CAAC;AAC1C;AACA,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChD,IAAI,MAAM,MAAM,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;AACxC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;AACjE;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;AAC1C,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AAC7C,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAC7B,OAAO;AACP;AACA,MAAM,OAAO,CAAC,YAAY,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AACxD,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACxB,KAAK;AACL;AACA,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/D;AACA,IAAI,IAAI,MAAM,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/C,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,OAAO,CAAC,YAAY,CAAC;AACzB,GAAG;AACH;AACA,EAAE,IAAIA,OAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAIA,OAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACxE,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;AACnB;AACA,IAAIA,OAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;AAClD,MAAM,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACpD,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;AACpD,EAAE,IAAIA,OAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAChC,IAAI,IAAI;AACR,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACvC,MAAM,OAAOA,OAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClC,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE;AACpC,QAAQ,MAAM,CAAC,CAAC;AAChB,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC;AACD;AACA,MAAM,QAAQ,GAAG;AACjB,EAAE,YAAY,EAAE,oBAAoB;AACpC;AACA,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;AACnC;AACA,EAAE,gBAAgB,EAAE;AACpB,IAAI,SAAS,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE;AAC7C,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;AACzD,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9E,MAAM,MAAM,eAAe,GAAGA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnD;AACA,MAAM,IAAI,eAAe,IAAIA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACrD,QAAQ,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClC,OAAO;AACP;AACA,MAAM,MAAM,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAChD;AACA,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,OAAO,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AAChF,OAAO;AACP;AACA,MAAM;AACN,QAAQA,OAAK,CAAC,aAAa,CAAC,IAAI,CAAC;AACjC,QAAQA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5B,QAAQA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5B,QAAQA,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1B,QAAQA,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1B,QAAQA,OAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACpC,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,MAAM,IAAIA,OAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,OAAO;AACP,MAAM,IAAIA,OAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACzC,QAAQ,OAAO,CAAC,cAAc,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;AACzF,QAAQ,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC/B,OAAO;AACP;AACA,MAAM,IAAI,UAAU,CAAC;AACrB;AACA,MAAM,IAAI,eAAe,EAAE;AAC3B,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC,mCAAmC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3E,UAAU,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxE,SAAS;AACT;AACA,QAAQ;AACR,UAAU,CAAC,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9C,UAAU,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACzD,UAAU;AACV,UAAU,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1D;AACA,UAAU,OAAOC,YAAU;AAC3B,YAAY,UAAU,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI;AACnD,YAAY,SAAS,IAAI,IAAI,SAAS,EAAE;AACxC,YAAY,IAAI,CAAC,cAAc;AAC/B,WAAW,CAAC;AACZ,SAAS;AACT,OAAO;AACP;AACA,MAAM,IAAI,eAAe,IAAI,kBAAkB,EAAE;AACjD,QAAQ,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAC1D,QAAQ,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AACrC,OAAO;AACP;AACA,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,GAAG;AACH;AACA,EAAE,iBAAiB,EAAE;AACrB,IAAI,SAAS,iBAAiB,CAAC,IAAI,EAAE;AACrC,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC;AACtE,MAAM,MAAM,iBAAiB,GAAG,YAAY,IAAI,YAAY,CAAC,iBAAiB,CAAC;AAC/E,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC;AACzD;AACA,MAAM,IAAID,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAIA,OAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;AAClE,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP;AACA,MAAM;AACN,QAAQ,IAAI;AACZ,QAAQA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5B,SAAS,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,aAAa,CAAC;AACpE,QAAQ;AACR,QAAQ,MAAM,iBAAiB,GAAG,YAAY,IAAI,YAAY,CAAC,iBAAiB,CAAC;AACjF,QAAQ,MAAM,iBAAiB,GAAG,CAAC,iBAAiB,IAAI,aAAa,CAAC;AACtE;AACA,QAAQ,IAAI;AACZ,UAAU,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACrD,SAAS,CAAC,OAAO,CAAC,EAAE;AACpB,UAAU,IAAI,iBAAiB,EAAE;AACjC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE;AAC1C,cAAc,MAAMD,YAAU,CAAC,IAAI,CAAC,CAAC,EAAEA,YAAU,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/F,aAAa;AACb,YAAY,MAAM,CAAC,CAAC;AACpB,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,EAAE,CAAC;AACZ;AACA,EAAE,cAAc,EAAE,YAAY;AAC9B,EAAE,cAAc,EAAE,cAAc;AAChC;AACA,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACtB,EAAE,aAAa,EAAE,CAAC,CAAC;AACnB;AACA,EAAE,GAAG,EAAE;AACP,IAAI,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ;AACvC,IAAI,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI;AAC/B,GAAG;AACH;AACA,EAAE,cAAc,EAAE,SAAS,cAAc,CAAC,MAAM,EAAE;AAClD,IAAI,OAAO,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC;AACzC,GAAG;AACH;AACA,EAAE,OAAO,EAAE;AACX,IAAI,MAAM,EAAE;AACZ,MAAM,MAAM,EAAE,mCAAmC;AACjD,MAAM,cAAc,EAAE,SAAS;AAC/B,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF;AACAC,OAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,KAAK;AAC7E,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAChC,CAAC,CAAC,CAAC;AACH;AACA,mBAAe,QAAQ;;ACvKvB;AACA;AACA,MAAM,iBAAiB,GAAGA,OAAK,CAAC,WAAW,CAAC;AAC5C,EAAE,KAAK;AACP,EAAE,eAAe;AACjB,EAAE,gBAAgB;AAClB,EAAE,cAAc;AAChB,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,mBAAmB;AACrB,EAAE,qBAAqB;AACvB,EAAE,eAAe;AACjB,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,qBAAqB;AACvB,EAAE,SAAS;AACX,EAAE,aAAa;AACf,EAAE,YAAY;AACd,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAe,CAAC,UAAU,KAAK;AAC/B,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,IAAI,CAAC,CAAC;AACR;AACA,EAAE,UAAU;AACZ,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE;AACzD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACtD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzC;AACA,MAAM,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3D,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,IAAI,GAAG,KAAK,YAAY,EAAE;AAChC,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;AACzB,UAAU,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,SAAS,MAAM;AACf,UAAU,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AACnE,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;;AC/DD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACvC;AACA,SAAS,eAAe,CAAC,MAAM,EAAE;AACjC,EAAE,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACvD,CAAC;AACD;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,EAAE,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,EAAE;AACxC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,OAAOA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AACD;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,EAAE,MAAM,QAAQ,GAAG,kCAAkC,CAAC;AACtD,EAAE,IAAI,KAAK,CAAC;AACZ;AACA,EAAE,QAAQ,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;AACvC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA,MAAM,iBAAiB,GAAG,CAAC,GAAG,KAAK,gCAAgC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACrF;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE;AAC9E,EAAE,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAChC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,IAAI,kBAAkB,EAAE;AAC1B,IAAI,KAAK,GAAG,MAAM,CAAC;AACnB,GAAG;AACH;AACA,EAAE,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;AACrC;AACA,EAAE,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9B,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,GAAG;AACH;AACA,EAAE,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9B,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,GAAG;AACH,CAAC;AACD;AACA,SAAS,YAAY,CAAC,MAAM,EAAE;AAC9B,EAAE,OAAO,MAAM;AACf,KAAK,IAAI,EAAE;AACX,KAAK,WAAW,EAAE;AAClB,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK;AAClD,MAAM,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC;AACtC,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACA,SAAS,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE;AACrC,EAAE,MAAM,YAAY,GAAGA,OAAK,CAAC,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;AACvD;AACA,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AAChD,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,YAAY,EAAE;AAC1D,MAAM,KAAK,EAAE,UAAU,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrE,OAAO;AACP,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAC,CAAC;AACP,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA,MAAMO,cAAY,CAAC;AACnB,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE;AACvC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,SAAS,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAClD,MAAM,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAC/C;AACA,MAAM,IAAI,CAAC,OAAO,EAAE;AACpB,QAAQ,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAClE,OAAO;AACP;AACA,MAAM,MAAM,GAAG,GAAGP,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/C;AACA,MAAM;AACN,QAAQ,CAAC,GAAG;AACZ,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;AAC/B,QAAQ,QAAQ,KAAK,IAAI;AACzB,SAAS,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;AACvD,QAAQ;AACR,QAAQ,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AACtD,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,QAAQ;AACzC,MAAMA,OAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxF;AACA,IAAI,IAAIA,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,YAAY,IAAI,CAAC,WAAW,EAAE;AAC3E,MAAM,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AACzC,KAAK,MAAM,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;AACjG,MAAM,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC;AACvD,KAAK,MAAM,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACnE,MAAM,IAAI,GAAG,GAAG,EAAE;AAClB,QAAQ,IAAI;AACZ,QAAQ,GAAG,CAAC;AACZ,MAAM,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAClC,QAAQ,IAAI,CAACA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACnC,UAAU,MAAM,SAAS,CAAC,8CAA8C,CAAC,CAAC;AAC1E,SAAS;AACT;AACA,QAAQ,GAAG,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC;AAChD,YAAYA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AAC/B,cAAc,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,OAAO;AACP;AACA,MAAM,UAAU,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;AACtC,KAAK,MAAM;AACX,MAAM,MAAM,IAAI,IAAI,IAAI,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACnE,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE;AACtB,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AACrC;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C;AACA,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC;AACA,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,UAAU,OAAO,KAAK,CAAC;AACvB,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,UAAU,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AACpC,SAAS;AACT;AACA,QAAQ,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACtC,UAAU,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/C,SAAS;AACT;AACA,QAAQ,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,UAAU,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,SAAS;AACT;AACA,QAAQ,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;AACtE,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE;AACvB,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AACrC;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C;AACA,MAAM,OAAO,CAAC;AACd,QAAQ,GAAG;AACX,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;AAC/B,SAAS,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACrE,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;AAC1B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC;AACxB;AACA,IAAI,SAAS,YAAY,CAAC,OAAO,EAAE;AACnC,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AACzC;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACjD;AACA,QAAQ,IAAI,GAAG,KAAK,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE;AAClF,UAAU,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B;AACA,UAAU,OAAO,GAAG,IAAI,CAAC;AACzB,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC/B,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACnC,KAAK,MAAM;AACX,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,EAAE,KAAK,CAAC,OAAO,EAAE;AACjB,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACxB,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC;AACxB;AACA,IAAI,OAAO,CAAC,EAAE,EAAE;AAChB,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B,MAAM,IAAI,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;AAC7E,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,EAAE,SAAS,CAAC,MAAM,EAAE;AACpB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;AAC3C,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACjD;AACA,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/E;AACA,MAAM,IAAI,UAAU,KAAK,MAAM,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,OAAO;AACP;AACA,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/C;AACA,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;AACjC,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,GAAG,OAAO,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC;AACrD,GAAG;AACH;AACA,EAAE,MAAM,CAAC,SAAS,EAAE;AACpB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;AAC3C,MAAM,KAAK,IAAI,IAAI;AACnB,QAAQ,KAAK,KAAK,KAAK;AACvB,SAAS,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,IAAIA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;AACrF,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;AACtB,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC5D,GAAG;AACH;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACxC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;AACtD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;AAClB,GAAG;AACH;AACA,EAAE,YAAY,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACxC,GAAG;AACH;AACA,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC,GAAG;AAC7B,IAAI,OAAO,cAAc,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE;AACrB,IAAI,OAAO,KAAK,YAAY,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3D,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC,KAAK,EAAE,GAAG,OAAO,EAAE;AACnC,IAAI,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC;AACA,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD;AACA,IAAI,OAAO,QAAQ,CAAC;AACpB,GAAG;AACH;AACA,EAAE,OAAO,QAAQ,CAAC,MAAM,EAAE;AAC1B,IAAI,MAAM,SAAS;AACnB,OAAO,IAAI,CAAC,UAAU,CAAC;AACvB,MAAM,IAAI,CAAC,UAAU,CAAC;AACtB,QAAQ;AACR,UAAU,SAAS,EAAE,EAAE;AACvB,SAAS,CAAC,CAAC;AACX;AACA,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;AAC1C,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACrC;AACA,IAAI,SAAS,cAAc,CAAC,OAAO,EAAE;AACrC,MAAM,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAC/C;AACA,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AAC/B,QAAQ,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC3C,QAAQ,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;AAClC,OAAO;AACP,KAAK;AACL;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AACpF;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,CAAC;AACD;AACAO,cAAY,CAAC,QAAQ,CAAC;AACtB,EAAE,cAAc;AAChB,EAAE,gBAAgB;AAClB,EAAE,QAAQ;AACV,EAAE,iBAAiB;AACnB,EAAE,YAAY;AACd,EAAE,eAAe;AACjB,CAAC,CAAC,CAAC;AACH;AACA;AACAP,OAAK,CAAC,iBAAiB,CAACO,cAAY,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK;AACpE,EAAE,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,EAAE,OAAO;AACT,IAAI,GAAG,EAAE,MAAM,KAAK;AACpB,IAAI,GAAG,CAAC,WAAW,EAAE;AACrB,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;AACjC,KAAK;AACL,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACAP,OAAK,CAAC,aAAa,CAACO,cAAY,CAAC,CAAC;AAClC;AACA,uBAAeA,cAAY;;ACjV3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE;AACrD,EAAE,MAAM,MAAM,GAAG,IAAI,IAAIC,UAAQ,CAAC;AAClC,EAAE,MAAM,OAAO,GAAG,QAAQ,IAAI,MAAM,CAAC;AACrC,EAAE,MAAM,OAAO,GAAGD,cAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACrD,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC1B;AACA,EAAEP,OAAK,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,SAAS,CAAC,EAAE,EAAE;AAC5C,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAC9F,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;AACtB;AACA,EAAE,OAAO,IAAI,CAAC;AACd;;ACzBe,SAASS,UAAQ,CAAC,KAAK,EAAE;AACxC,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;AACvC;;ACAA,MAAMC,eAAa,SAASX,YAAU,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACxC,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,GAAG,UAAU,GAAG,OAAO,EAAEA,YAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5F,IAAI,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;AAChC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,GAAG;AACH,CAAC;AACD;AACA,wBAAeW,eAAa;;ACjB5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC1D,EAAE,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC;AACxD,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9E,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;AACtB,GAAG,MAAM;AACT,IAAI,MAAM;AACV,MAAM,IAAIX,YAAU;AACpB,QAAQ,kCAAkC,GAAG,QAAQ,CAAC,MAAM;AAC5D,QAAQ,CAACA,YAAU,CAAC,eAAe,EAAEA,YAAU,CAAC,gBAAgB,CAAC;AACjE,UAAU,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC;AAC/C,SAAS;AACT,QAAQ,QAAQ,CAAC,MAAM;AACvB,QAAQ,QAAQ,CAAC,OAAO;AACxB,QAAQ,QAAQ;AAChB,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH;;AC5Be,SAAS,aAAa,CAAC,GAAG,EAAE;AAC3C,EAAE,MAAM,KAAK,GAAG,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtD,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACnC;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,YAAY,EAAE,GAAG,EAAE;AACxC,EAAE,YAAY,GAAG,YAAY,IAAI,EAAE,CAAC;AACpC,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AACxC,EAAE,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAC7C,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;AACf,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;AACf,EAAE,IAAI,aAAa,CAAC;AACpB;AACA,EAAE,GAAG,GAAG,GAAG,KAAK,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC;AACvC;AACA,EAAE,OAAO,SAAS,IAAI,CAAC,WAAW,EAAE;AACpC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC3B;AACA,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,IAAI,IAAI,CAAC,aAAa,EAAE;AACxB,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,KAAK;AACL;AACA,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;AAC9B,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AAC3B;AACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACjB,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;AACvB;AACA,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE;AACvB,MAAM,UAAU,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,YAAY,CAAC;AACrC;AACA,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AACvB,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,YAAY,CAAC;AACvC,KAAK;AACL;AACA,IAAI,IAAI,GAAG,GAAG,aAAa,GAAG,GAAG,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,MAAM,MAAM,GAAG,SAAS,IAAI,GAAG,GAAG,SAAS,CAAC;AAChD;AACA,IAAI,OAAO,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC;AACzE,GAAG,CAAC;AACJ;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE;AAC5B,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;AACpB,EAAE,IAAI,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9B,EAAE,IAAI,QAAQ,CAAC;AACf,EAAE,IAAI,KAAK,CAAC;AACZ;AACA,EAAE,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK;AAC7C,IAAI,SAAS,GAAG,GAAG,CAAC;AACpB,IAAI,QAAQ,GAAG,IAAI,CAAC;AACpB,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;AAC1B,MAAM,KAAK,GAAG,IAAI,CAAC;AACnB,KAAK;AACL,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAChB,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,KAAK;AACjC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC3B,IAAI,MAAM,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC;AACnC,IAAI,IAAI,MAAM,IAAI,SAAS,EAAE;AAC7B,MAAM,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACxB,KAAK,MAAM;AACX,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,IAAI,CAAC,KAAK,EAAE;AAClB,QAAQ,KAAK,GAAG,UAAU,CAAC,MAAM;AACjC,UAAU,KAAK,GAAG,IAAI,CAAC;AACvB,UAAU,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3B,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC;AAC/B,OAAO;AACP,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,KAAK,GAAG,MAAM,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnD;AACA,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC5B;;ACrCO,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,GAAG,CAAC,KAAK;AAC9E,EAAE,IAAI,aAAa,GAAG,CAAC,CAAC;AACxB,EAAE,MAAM,YAAY,GAAG,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC5C;AACA,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK;AACzB,IAAI,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC5B,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC;AAC3D,IAAI,MAAM,aAAa,GAAG,MAAM,GAAG,aAAa,CAAC;AACjD,IAAI,MAAM,IAAI,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;AAC7C,IAAI,MAAM,OAAO,GAAG,MAAM,IAAI,KAAK,CAAC;AACpC;AACA,IAAI,aAAa,GAAG,MAAM,CAAC;AAC3B;AACA,IAAI,MAAM,IAAI,GAAG;AACjB,MAAM,MAAM;AACZ,MAAM,KAAK;AACX,MAAM,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS;AAClD,MAAM,KAAK,EAAE,aAAa;AAC1B,MAAM,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS;AACnC,MAAM,SAAS,EAAE,IAAI,IAAI,KAAK,IAAI,OAAO,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,IAAI,GAAG,SAAS;AAC/E,MAAM,KAAK,EAAE,CAAC;AACd,MAAM,gBAAgB,EAAE,KAAK,IAAI,IAAI;AACrC,MAAM,CAAC,gBAAgB,GAAG,UAAU,GAAG,QAAQ,GAAG,IAAI;AACtD,KAAK,CAAC;AACN;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnB,GAAG,EAAE,IAAI,CAAC,CAAC;AACX,CAAC,CAAC;AACF;AACO,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK;AAC5D,EAAE,MAAM,gBAAgB,GAAG,KAAK,IAAI,IAAI,CAAC;AACzC;AACA,EAAE,OAAO;AACT,IAAI,CAAC,MAAM;AACX,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC;AACnB,QAAQ,gBAAgB;AACxB,QAAQ,KAAK;AACb,QAAQ,MAAM;AACd,OAAO,CAAC;AACR,IAAI,SAAS,CAAC,CAAC,CAAC;AAChB,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACO,MAAM,cAAc;AAC3B,EAAE,CAAC,EAAE;AACL,EAAE,CAAC,GAAG,IAAI;AACV,IAAIC,OAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;;AChDjC,wBAAe,QAAQ,CAAC,qBAAqB;AAC7C,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,KAAK;AAClC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1C;AACA,MAAM;AACN,QAAQ,MAAM,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ;AACxC,QAAQ,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;AAChC,SAAS,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC;AAC5C,QAAQ;AACR,KAAK;AACL,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC9B,MAAM,QAAQ,CAAC,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC;AAChF,KAAK;AACL,IAAI,MAAM,IAAI;;ACZd,gBAAe,QAAQ,CAAC,qBAAqB;AAC7C;AACA,IAAI;AACJ,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;AAClE,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,OAAO;AACpD;AACA,QAAQ,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE;AACA,QAAQ,IAAIA,OAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACrC,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,SAAS;AACT,QAAQ,IAAIA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAClC,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,SAAS;AACT,QAAQ,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1C,SAAS;AACT,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,UAAU,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,SAAS;AACT,QAAQ,IAAIA,OAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACtC,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9C,SAAS;AACT;AACA,QAAQ,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,OAAO;AACP;AACA,MAAM,IAAI,CAAC,IAAI,EAAE;AACjB,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,OAAO,IAAI,CAAC;AACzD,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;AACxF,QAAQ,OAAO,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAC3D,OAAO;AACP;AACA,MAAM,MAAM,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC;AACzD,OAAO;AACP,KAAK;AACL;AACA,IAAI;AACJ,MAAM,KAAK,GAAG,EAAE;AAChB,MAAM,IAAI,GAAG;AACb,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,MAAM,MAAM,GAAG,EAAE;AACjB,KAAK;;AC7CL;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,aAAa,CAAC,GAAG,EAAE;AAC3C;AACA;AACA;AACA,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,OAAO,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjD;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE;AAC1D,EAAE,OAAO,WAAW;AACpB,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AAC3E,MAAM,OAAO,CAAC;AACd;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE;AAChF,EAAE,IAAI,aAAa,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AACnD,EAAE,IAAI,OAAO,KAAK,aAAa,IAAI,iBAAiB,IAAI,KAAK,CAAC,EAAE;AAChE,IAAI,OAAO,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,OAAO,YAAY,CAAC;AACtB;;AChBA,MAAM,eAAe,GAAG,CAAC,KAAK,MAAM,KAAK,YAAYO,cAAY,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASI,aAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AACtD;AACA,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC1B,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,SAAS,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC1D,IAAI,IAAIX,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAIA,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AACpE,MAAM,OAAOA,OAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5D,KAAK,MAAM,IAAIA,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AAC5C,MAAM,OAAOA,OAAK,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACrC,KAAK,MAAM,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACtC,MAAM,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH;AACA,EAAE,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;AACrD,IAAI,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAClD,KAAK,MAAM,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AACtC,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC1D,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;AAClC,IAAI,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;AAClC,IAAI,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK,MAAM,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AACtC,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;AACvC,IAAI,IAAI,IAAI,IAAI,OAAO,EAAE;AACzB,MAAM,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,KAAK,MAAM,IAAI,IAAI,IAAI,OAAO,EAAE;AAChC,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,GAAG;AACH;AACA,EAAE,MAAM,QAAQ,GAAG;AACnB,IAAI,GAAG,EAAE,gBAAgB;AACzB,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,iBAAiB,EAAE,gBAAgB;AACvC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,eAAe,EAAE,gBAAgB;AACrC,IAAI,aAAa,EAAE,gBAAgB;AACnC,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,YAAY,EAAE,gBAAgB;AAClC,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,kBAAkB,EAAE,gBAAgB;AACxC,IAAI,UAAU,EAAE,gBAAgB;AAChC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,aAAa,EAAE,gBAAgB;AACnC,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,SAAS,EAAE,gBAAgB;AAC/B,IAAI,SAAS,EAAE,gBAAgB;AAC/B,IAAI,UAAU,EAAE,gBAAgB;AAChC,IAAI,WAAW,EAAE,gBAAgB;AACjC,IAAI,UAAU,EAAE,gBAAgB;AAChC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,cAAc,EAAE,eAAe;AACnC,IAAI,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI;AACxB,MAAM,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;AAC7E,GAAG,CAAC;AACJ;AACA,EAAEA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,EAAE,SAAS,kBAAkB,CAAC,IAAI,EAAE;AAC3F,IAAI,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,WAAW,EAAE,OAAO;AACvF,IAAI,MAAM,KAAK,GAAGA,OAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC;AAC1F,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAClE,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,eAAe,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;AAClG,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB;;ACjGA,sBAAe,CAAC,MAAM,KAAK;AAC3B,EAAE,MAAM,SAAS,GAAGW,aAAW,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C;AACA,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;AACzF;AACA,EAAE,SAAS,CAAC,OAAO,GAAG,OAAO,GAAGJ,cAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3D;AACA,EAAE,SAAS,CAAC,GAAG,GAAG,QAAQ;AAC1B,IAAI,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,iBAAiB,CAAC;AAChF,IAAI,MAAM,CAAC,MAAM;AACjB,IAAI,MAAM,CAAC,gBAAgB;AAC3B,GAAG,CAAC;AACJ;AACA;AACA,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,eAAe;AACrB,MAAM,QAAQ;AACd,QAAQ,IAAI;AACZ,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE;AAC9B,YAAY,GAAG;AACf,aAAa,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;AAC9E,SAAS;AACT,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAE,IAAIP,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC9B,IAAI,IAAI,QAAQ,CAAC,qBAAqB,IAAI,QAAQ,CAAC,8BAA8B,EAAE;AACnF,MAAM,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACxC,KAAK,MAAM,IAAIA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAClD;AACA,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC5C;AACA,MAAM,MAAM,cAAc,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;AAChE,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK;AAC1D,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE;AACxD,UAAU,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,QAAQ,CAAC,qBAAqB,EAAE;AACtC,IAAI,aAAa,IAAIA,OAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;AACnG;AACA,IAAI,IAAI,aAAa,KAAK,aAAa,KAAK,KAAK,IAAI,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE;AACtF;AACA,MAAM,MAAM,SAAS,GAAG,cAAc,IAAI,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACzF;AACA,MAAM,IAAI,SAAS,EAAE;AACrB,QAAQ,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAC/C,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,SAAS,CAAC;AACnB,CAAC;;AC1DD,MAAM,qBAAqB,GAAG,OAAO,cAAc,KAAK,WAAW,CAAC;AACpE;AACA,mBAAe,qBAAqB;AACpC,EAAE,UAAU,MAAM,EAAE;AACpB,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE;AACpE,MAAM,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAC5C,MAAM,IAAI,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;AACrC,MAAM,MAAM,cAAc,GAAGO,cAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;AAC5E,MAAM,IAAI,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;AAC3E,MAAM,IAAI,UAAU,CAAC;AACrB,MAAM,IAAI,eAAe,EAAE,iBAAiB,CAAC;AAC7C,MAAM,IAAI,WAAW,EAAE,aAAa,CAAC;AACrC;AACA,MAAM,SAAS,IAAI,GAAG;AACtB,QAAQ,WAAW,IAAI,WAAW,EAAE,CAAC;AACrC,QAAQ,aAAa,IAAI,aAAa,EAAE,CAAC;AACzC;AACA,QAAQ,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAC3E;AACA,QAAQ,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAClF,OAAO;AACP;AACA,MAAM,IAAI,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;AACzC;AACA,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACpE;AACA;AACA,MAAM,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AACxC;AACA,MAAM,SAAS,SAAS,GAAG;AAC3B,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,UAAU,OAAO;AACjB,SAAS;AACT;AACA,QAAQ,MAAM,eAAe,GAAGA,cAAY,CAAC,IAAI;AACjD,UAAU,uBAAuB,IAAI,OAAO,IAAI,OAAO,CAAC,qBAAqB,EAAE;AAC/E,SAAS,CAAC;AACV,QAAQ,MAAM,YAAY;AAC1B,UAAU,CAAC,YAAY,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,MAAM;AAC7E,cAAc,OAAO,CAAC,YAAY;AAClC,cAAc,OAAO,CAAC,QAAQ,CAAC;AAC/B,QAAQ,MAAM,QAAQ,GAAG;AACzB,UAAU,IAAI,EAAE,YAAY;AAC5B,UAAU,MAAM,EAAE,OAAO,CAAC,MAAM;AAChC,UAAU,UAAU,EAAE,OAAO,CAAC,UAAU;AACxC,UAAU,OAAO,EAAE,eAAe;AAClC,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB,SAAS,CAAC;AACV;AACA,QAAQ,MAAM;AACd,UAAU,SAAS,QAAQ,CAAC,KAAK,EAAE;AACnC,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,WAAW;AACX,UAAU,SAAS,OAAO,CAAC,GAAG,EAAE;AAChC,YAAY,MAAM,CAAC,GAAG,CAAC,CAAC;AACxB,YAAY,IAAI,EAAE,CAAC;AACnB,WAAW;AACX,UAAU,QAAQ;AAClB,SAAS,CAAC;AACV;AACA;AACA,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO;AACP;AACA,MAAM,IAAI,WAAW,IAAI,OAAO,EAAE;AAClC;AACA,QAAQ,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AACtC,OAAO,MAAM;AACb;AACA,QAAQ,OAAO,CAAC,kBAAkB,GAAG,SAAS,UAAU,GAAG;AAC3D,UAAU,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,EAAE;AACpD,YAAY,OAAO;AACnB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,YAAY,OAAO,CAAC,MAAM,KAAK,CAAC;AAChC,YAAY,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChF,YAAY;AACZ,YAAY,OAAO;AACnB,WAAW;AACX;AACA;AACA,UAAU,UAAU,CAAC,SAAS,CAAC,CAAC;AAChC,SAAS,CAAC;AACV,OAAO;AACP;AACA;AACA,MAAM,OAAO,CAAC,OAAO,GAAG,SAAS,WAAW,GAAG;AAC/C,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,UAAU,OAAO;AACjB,SAAS;AACT;AACA,QAAQ,MAAM,CAAC,IAAIR,YAAU,CAAC,iBAAiB,EAAEA,YAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5F;AACA;AACA,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO,CAAC;AACR;AACA;AACA,MAAM,OAAO,CAAC,OAAO,GAAG,SAAS,WAAW,CAAC,KAAK,EAAE;AACpD;AACA;AACA;AACA,QAAQ,MAAM,GAAG,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,eAAe,CAAC;AAC7E,QAAQ,MAAM,GAAG,GAAG,IAAIA,YAAU,CAAC,GAAG,EAAEA,YAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACjF;AACA,QAAQ,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC;AAClC,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO,CAAC;AACR;AACA;AACA,MAAM,OAAO,CAAC,SAAS,GAAG,SAAS,aAAa,GAAG;AACnD,QAAQ,IAAI,mBAAmB,GAAG,OAAO,CAAC,OAAO;AACjD,YAAY,aAAa,GAAG,OAAO,CAAC,OAAO,GAAG,aAAa;AAC3D,YAAY,kBAAkB,CAAC;AAC/B,QAAQ,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,oBAAoB,CAAC;AAC1E,QAAQ,IAAI,OAAO,CAAC,mBAAmB,EAAE;AACzC,UAAU,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;AAC5D,SAAS;AACT,QAAQ,MAAM;AACd,UAAU,IAAIA,YAAU;AACxB,YAAY,mBAAmB;AAC/B,YAAY,YAAY,CAAC,mBAAmB,GAAGA,YAAU,CAAC,SAAS,GAAGA,YAAU,CAAC,YAAY;AAC7F,YAAY,MAAM;AAClB,YAAY,OAAO;AACnB,WAAW;AACX,SAAS,CAAC;AACV;AACA;AACA,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO,CAAC;AACR;AACA;AACA,MAAM,WAAW,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACvE;AACA;AACA,MAAM,IAAI,kBAAkB,IAAI,OAAO,EAAE;AACzC,QAAQC,OAAK,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE;AACnF,UAAU,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7C,SAAS,CAAC,CAAC;AACX,OAAO;AACP;AACA;AACA,MAAM,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;AACvD,QAAQ,OAAO,CAAC,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;AAC5D,OAAO;AACP;AACA;AACA,MAAM,IAAI,YAAY,IAAI,YAAY,KAAK,MAAM,EAAE;AACnD,QAAQ,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;AACpD,OAAO;AACP;AACA;AACA,MAAM,IAAI,kBAAkB,EAAE;AAC9B,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,GAAG,oBAAoB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AAC5F,QAAQ,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;AAChE,OAAO;AACP;AACA;AACA,MAAM,IAAI,gBAAgB,IAAI,OAAO,CAAC,MAAM,EAAE;AAC9C,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AAChF;AACA,QAAQ,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AACrE;AACA,QAAQ,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAChE,OAAO;AACP;AACA,MAAM,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE;AACjD;AACA;AACA,QAAQ,UAAU,GAAG,CAAC,MAAM,KAAK;AACjC,UAAU,IAAI,CAAC,OAAO,EAAE;AACxB,YAAY,OAAO;AACnB,WAAW;AACX,UAAU,MAAM,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,IAAIU,eAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;AAC7F,UAAU,OAAO,CAAC,KAAK,EAAE,CAAC;AAC1B,UAAU,OAAO,GAAG,IAAI,CAAC;AACzB,SAAS,CAAC;AACV;AACA,QAAQ,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACzE,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;AAC5B,UAAU,OAAO,CAAC,MAAM,CAAC,OAAO;AAChC,cAAc,UAAU,EAAE;AAC1B,cAAc,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACnE,SAAS;AACT,OAAO;AACP;AACA,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAClD;AACA,MAAM,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AACnE,QAAQ,MAAM;AACd,UAAU,IAAIX,YAAU;AACxB,YAAY,uBAAuB,GAAG,QAAQ,GAAG,GAAG;AACpD,YAAYA,YAAU,CAAC,eAAe;AACtC,YAAY,MAAM;AAClB,WAAW;AACX,SAAS,CAAC;AACV,QAAQ,OAAO;AACf,OAAO;AACP;AACA;AACA,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;AACxC,KAAK,CAAC,CAAC;AACP,GAAG;;ACzNH,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK;AAC7C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACxE;AACA,EAAE,IAAI,OAAO,IAAI,MAAM,EAAE;AACzB,IAAI,IAAI,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;AAC3C;AACA,IAAI,IAAI,OAAO,CAAC;AAChB;AACA,IAAI,MAAM,OAAO,GAAG,UAAU,MAAM,EAAE;AACtC,MAAM,IAAI,CAAC,OAAO,EAAE;AACpB,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,QAAQ,WAAW,EAAE,CAAC;AACtB,QAAQ,MAAM,GAAG,GAAG,MAAM,YAAY,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACnE,QAAQ,UAAU,CAAC,KAAK;AACxB,UAAU,GAAG,YAAYA,YAAU;AACnC,cAAc,GAAG;AACjB,cAAc,IAAIW,eAAa,CAAC,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC;AACzE,SAAS,CAAC;AACV,OAAO;AACP,KAAK,CAAC;AACN;AACA,IAAI,IAAI,KAAK;AACb,MAAM,OAAO;AACb,MAAM,UAAU,CAAC,MAAM;AACvB,QAAQ,KAAK,GAAG,IAAI,CAAC;AACrB,QAAQ,OAAO,CAAC,IAAIX,YAAU,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,EAAEA,YAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1F,OAAO,EAAE,OAAO,CAAC,CAAC;AAClB;AACA,IAAI,MAAM,WAAW,GAAG,MAAM;AAC9B,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;AACrC,QAAQ,KAAK,GAAG,IAAI,CAAC;AACrB,QAAQ,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACpC,UAAU,MAAM,CAAC,WAAW;AAC5B,cAAc,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;AACzC,cAAc,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3D,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO;AACP,KAAK,CAAC;AACN;AACA,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3E;AACA,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;AAClC;AACA,IAAI,MAAM,CAAC,WAAW,GAAG,MAAMC,OAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACvD;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,CAAC,CAAC;AACF;AACA,yBAAe,cAAc;;ACvDtB,MAAM,WAAW,GAAG,WAAW,KAAK,EAAE,SAAS,EAAE;AACxD,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;AAC7B;AACA,EAAE,IAAI,CAAC,SAAS,IAAI,GAAG,GAAG,SAAS,EAAE;AACrC,IAAI,MAAM,KAAK,CAAC;AAChB,IAAI,OAAO;AACX,GAAG;AACH;AACA,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;AACd,EAAE,IAAI,GAAG,CAAC;AACV;AACA,EAAE,OAAO,GAAG,GAAG,GAAG,EAAE;AACpB,IAAI,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;AAC1B,IAAI,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,IAAI,GAAG,GAAG,GAAG,CAAC;AACd,GAAG;AACH,CAAC,CAAC;AACF;AACO,MAAM,SAAS,GAAG,iBAAiB,QAAQ,EAAE,SAAS,EAAE;AAC/D,EAAE,WAAW,MAAM,KAAK,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;AAClD,IAAI,OAAO,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACzC,GAAG;AACH,CAAC,CAAC;AACF;AACA,MAAM,UAAU,GAAG,iBAAiB,MAAM,EAAE;AAC5C,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;AACpC,IAAI,OAAO,MAAM,CAAC;AAClB,IAAI,OAAO;AACX,GAAG;AACH;AACA,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AACpC,EAAE,IAAI;AACN,IAAI,SAAS;AACb,MAAM,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;AAClD,MAAM,IAAI,IAAI,EAAE;AAChB,QAAQ,MAAM;AACd,OAAO;AACP,MAAM,MAAM,KAAK,CAAC;AAClB,KAAK;AACL,GAAG,SAAS;AACZ,IAAI,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;AAC1B,GAAG;AACH,CAAC,CAAC;AACF;AACO,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,KAAK;AACxE,EAAE,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAChD;AACA,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK;AACzB,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,MAAM,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9B,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,IAAI,cAAc;AAC3B,IAAI;AACJ,MAAM,MAAM,IAAI,CAAC,UAAU,EAAE;AAC7B,QAAQ,IAAI;AACZ,UAAU,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AACxD;AACA,UAAU,IAAI,IAAI,EAAE;AACpB,YAAY,SAAS,EAAE,CAAC;AACxB,YAAY,UAAU,CAAC,KAAK,EAAE,CAAC;AAC/B,YAAY,OAAO;AACnB,WAAW;AACX;AACA,UAAU,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;AACrC,UAAU,IAAI,UAAU,EAAE;AAC1B,YAAY,IAAI,WAAW,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC;AAC7C,YAAY,UAAU,CAAC,WAAW,CAAC,CAAC;AACpC,WAAW;AACX,UAAU,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,SAAS,CAAC,OAAO,GAAG,EAAE;AACtB,UAAU,SAAS,CAAC,GAAG,CAAC,CAAC;AACzB,UAAU,MAAM,GAAG,CAAC;AACpB,SAAS;AACT,OAAO;AACP,MAAM,MAAM,CAAC,MAAM,EAAE;AACrB,QAAQ,SAAS,CAAC,MAAM,CAAC,CAAC;AAC1B,QAAQ,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC;AACjC,OAAO;AACP,KAAK;AACL,IAAI;AACJ,MAAM,aAAa,EAAE,CAAC;AACtB,KAAK;AACL,GAAG,CAAC;AACJ,CAAC;;AC1ED,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAC;AACrC;AACA,MAAM,EAAE,UAAU,EAAE,GAAGA,OAAK,CAAC;AAC7B;AACA,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;AACpD,EAAE,OAAO;AACT,EAAE,QAAQ;AACV,CAAC,CAAC,EAAEA,OAAK,CAAC,MAAM,CAAC,CAAC;AAClB;AACA,MAAM,kBAAEY,gBAAc,EAAE,WAAW,EAAE,GAAGZ,OAAK,CAAC,MAAM,CAAC;AACrD;AACA,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,KAAK;AAC9B,EAAE,IAAI;AACN,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AACzB,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,CAAC,CAAC;AACF;AACA,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK;AACzB,EAAE,GAAG,GAAGA,OAAK,CAAC,KAAK,CAAC,IAAI;AACxB,IAAI;AACJ,MAAM,aAAa,EAAE,IAAI;AACzB,KAAK;AACL,IAAI,cAAc;AAClB,IAAI,GAAG;AACP,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;AACrD,EAAE,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC;AACzF,EAAE,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AACjD,EAAE,MAAM,mBAAmB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnD;AACA,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACzB,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,yBAAyB,GAAG,gBAAgB,IAAI,UAAU,CAACY,gBAAc,CAAC,CAAC;AACnF;AACA,EAAE,MAAM,UAAU;AAClB,IAAI,gBAAgB;AACpB,KAAK,OAAO,WAAW,KAAK,UAAU;AACtC,QAAQ;AACR,UAAU,CAAC,OAAO,KAAK,CAAC,GAAG;AAC3B,YAAY,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AAC/B,UAAU,IAAI,WAAW,EAAE,CAAC;AAC5B,QAAQ,OAAO,GAAG,KAAK,IAAI,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC7E;AACA,EAAE,MAAM,qBAAqB;AAC7B,IAAI,kBAAkB;AACtB,IAAI,yBAAyB;AAC7B,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,IAAI,cAAc,GAAG,KAAK,CAAC;AACjC;AACA,MAAM,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC1D,QAAQ,IAAI,EAAE,IAAIA,gBAAc,EAAE;AAClC,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,IAAI,MAAM,GAAG;AACrB,UAAU,cAAc,GAAG,IAAI,CAAC;AAChC,UAAU,OAAO,MAAM,CAAC;AACxB,SAAS;AACT,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACrC;AACA,MAAM,OAAO,cAAc,IAAI,CAAC,cAAc,CAAC;AAC/C,KAAK,CAAC,CAAC;AACP;AACA,EAAE,MAAM,sBAAsB;AAC9B,IAAI,mBAAmB;AACvB,IAAI,yBAAyB;AAC7B,IAAI,IAAI,CAAC,MAAMZ,OAAK,CAAC,gBAAgB,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D;AACA,EAAE,MAAM,SAAS,GAAG;AACpB,IAAI,MAAM,EAAE,sBAAsB,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC;AACzD,GAAG,CAAC;AACJ;AACA,EAAE,gBAAgB;AAClB,IAAI,CAAC,MAAM;AACX,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC9E,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;AACxB,WAAW,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK;AAC9C,YAAY,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C;AACA,YAAY,IAAI,MAAM,EAAE;AACxB,cAAc,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,aAAa;AACb;AACA,YAAY,MAAM,IAAID,YAAU;AAChC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC;AACxD,cAAcA,YAAU,CAAC,eAAe;AACxC,cAAc,MAAM;AACpB,aAAa,CAAC;AACd,WAAW,CAAC,CAAC;AACb,OAAO,CAAC,CAAC;AACT,KAAK,GAAG,CAAC;AACT;AACA,EAAE,MAAM,aAAa,GAAG,OAAO,IAAI,KAAK;AACxC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AACtB,MAAM,OAAO,CAAC,CAAC;AACf,KAAK;AACL;AACA,IAAI,IAAIC,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAC5B,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC;AACvB,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;AACzC,MAAM,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpD,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,IAAI;AACZ,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC;AACvD,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAIA,OAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AACpE,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;AACvB,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC9B,MAAM,OAAO,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;AACjD,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,iBAAiB,GAAG,OAAO,OAAO,EAAE,IAAI,KAAK;AACrD,IAAI,MAAM,MAAM,GAAGA,OAAK,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACpE;AACA,IAAI,OAAO,MAAM,IAAI,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACzD,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,OAAO,MAAM,KAAK;AAC3B,IAAI,IAAI;AACR,MAAM,GAAG;AACT,MAAM,MAAM;AACZ,MAAM,IAAI;AACV,MAAM,MAAM;AACZ,MAAM,WAAW;AACjB,MAAM,OAAO;AACb,MAAM,kBAAkB;AACxB,MAAM,gBAAgB;AACtB,MAAM,YAAY;AAClB,MAAM,OAAO;AACb,MAAM,eAAe,GAAG,aAAa;AACrC,MAAM,YAAY;AAClB,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9B;AACA,IAAI,IAAI,MAAM,GAAG,QAAQ,IAAI,KAAK,CAAC;AACnC;AACA,IAAI,YAAY,GAAG,YAAY,GAAG,CAAC,YAAY,GAAG,EAAE,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;AAC7E;AACA,IAAI,IAAI,cAAc,GAAGa,gBAAc;AACvC,MAAM,CAAC,MAAM,EAAE,WAAW,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;AAC1D,MAAM,OAAO;AACb,KAAK,CAAC;AACN;AACA,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC;AACvB;AACA,IAAI,MAAM,WAAW;AACrB,MAAM,cAAc;AACpB,MAAM,cAAc,CAAC,WAAW;AAChC,OAAO,MAAM;AACb,QAAQ,cAAc,CAAC,WAAW,EAAE,CAAC;AACrC,OAAO,CAAC,CAAC;AACT;AACA,IAAI,IAAI,oBAAoB,CAAC;AAC7B;AACA,IAAI,IAAI;AACR,MAAM;AACN,QAAQ,gBAAgB;AACxB,QAAQ,qBAAqB;AAC7B,QAAQ,MAAM,KAAK,KAAK;AACxB,QAAQ,MAAM,KAAK,MAAM;AACzB,QAAQ,CAAC,oBAAoB,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;AAC7E,QAAQ;AACR,QAAQ,IAAI,QAAQ,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;AACxC,UAAU,MAAM,EAAE,MAAM;AACxB,UAAU,IAAI,EAAE,IAAI;AACpB,UAAU,MAAM,EAAE,MAAM;AACxB,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,IAAI,iBAAiB,CAAC;AAC9B;AACA,QAAQ,IAAIb,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE;AAClG,UAAU,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;AACpD,SAAS;AACT;AACA,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;AAC3B,UAAU,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,sBAAsB;AAC5D,YAAY,oBAAoB;AAChC,YAAY,oBAAoB,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;AAClE,WAAW,CAAC;AACZ;AACA,UAAU,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACnF,SAAS;AACT,OAAO;AACP;AACA,MAAM,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AAC5C,QAAQ,eAAe,GAAG,eAAe,GAAG,SAAS,GAAG,MAAM,CAAC;AAC/D,OAAO;AACP;AACA;AACA;AACA,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,IAAI,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC;AAC9F;AACA,MAAM,MAAM,eAAe,GAAG;AAC9B,QAAQ,GAAG,YAAY;AACvB,QAAQ,MAAM,EAAE,cAAc;AAC9B,QAAQ,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;AACpC,QAAQ,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE;AAC7C,QAAQ,IAAI,EAAE,IAAI;AAClB,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,WAAW,EAAE,sBAAsB,GAAG,eAAe,GAAG,SAAS;AACzE,OAAO,CAAC;AACR;AACA,MAAM,OAAO,GAAG,kBAAkB,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;AACxE;AACA,MAAM,IAAI,QAAQ,GAAG,OAAO,kBAAkB;AAC9C,UAAU,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC;AACvC,UAAU,MAAM,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;AACxC;AACA,MAAM,MAAM,gBAAgB;AAC5B,QAAQ,sBAAsB,KAAK,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,UAAU,CAAC,CAAC;AAC7F;AACA,MAAM,IAAI,sBAAsB,KAAK,kBAAkB,KAAK,gBAAgB,IAAI,WAAW,CAAC,CAAC,EAAE;AAC/F,QAAQ,MAAM,OAAO,GAAG,EAAE,CAAC;AAC3B;AACA,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC9D,UAAU,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AACzC,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,MAAM,qBAAqB,GAAGA,OAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACnG;AACA,QAAQ,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC;AACjC,UAAU,CAAC,kBAAkB;AAC7B,YAAY,sBAAsB;AAClC,cAAc,qBAAqB;AACnC,cAAc,oBAAoB,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC;AAC5E,aAAa;AACb,UAAU,EAAE,CAAC;AACb;AACA,QAAQ,QAAQ,GAAG,IAAI,QAAQ;AAC/B,UAAU,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM;AAC3E,YAAY,KAAK,IAAI,KAAK,EAAE,CAAC;AAC7B,YAAY,WAAW,IAAI,WAAW,EAAE,CAAC;AACzC,WAAW,CAAC;AACZ,UAAU,OAAO;AACjB,SAAS,CAAC;AACV,OAAO;AACP;AACA,MAAM,YAAY,GAAG,YAAY,IAAI,MAAM,CAAC;AAC5C;AACA,MAAM,IAAI,YAAY,GAAG,MAAM,SAAS,CAACA,OAAK,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC;AAC1F,QAAQ,QAAQ;AAChB,QAAQ,MAAM;AACd,OAAO,CAAC;AACR;AACA,MAAM,CAAC,gBAAgB,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;AACxD;AACA,MAAM,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACpD,QAAQ,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;AAChC,UAAU,IAAI,EAAE,YAAY;AAC5B,UAAU,OAAO,EAAEO,cAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AACtD,UAAU,MAAM,EAAE,QAAQ,CAAC,MAAM;AACjC,UAAU,UAAU,EAAE,QAAQ,CAAC,UAAU;AACzC,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,WAAW,IAAI,WAAW,EAAE,CAAC;AACnC;AACA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACrF,QAAQ,MAAM,MAAM,CAAC,MAAM;AAC3B,UAAU,IAAIR,YAAU;AACxB,YAAY,eAAe;AAC3B,YAAYA,YAAU,CAAC,WAAW;AAClC,YAAY,MAAM;AAClB,YAAY,OAAO;AACnB,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ;AAC/B,WAAW;AACX,UAAU;AACV,YAAY,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG;AACnC,WAAW;AACX,SAAS,CAAC;AACV,OAAO;AACP;AACA,MAAM,MAAMA,YAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AACxF,KAAK;AACL,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5B;AACO,MAAM,QAAQ,GAAG,CAAC,MAAM,KAAK;AACpC,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;AACzC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;AAC3C,EAAE,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC3C;AACA,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM;AACxB,IAAI,CAAC,GAAG,GAAG;AACX,IAAI,IAAI;AACR,IAAI,MAAM;AACV,IAAI,GAAG,GAAG,SAAS,CAAC;AACpB;AACA,EAAE,OAAO,CAAC,EAAE,EAAE;AACd,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B;AACA,IAAI,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACnF;AACA,IAAI,GAAG,GAAG,MAAM,CAAC;AACjB,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AACF;AACgB,QAAQ;;ACrUxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG;AACtB,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,GAAG,EAAE,UAAU;AACjB,EAAE,KAAK,EAAE;AACT,IAAI,GAAG,EAAEe,QAAqB;AAC9B,GAAG;AACH,CAAC,CAAC;AACF;AACA;AACAd,OAAK,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,KAAK,KAAK;AAC5C,EAAE,IAAI,EAAE,EAAE;AACV,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACnD,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB;AACA,KAAK;AACL,IAAI,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACxD,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,gBAAgB,GAAG,CAAC,OAAO;AACjC,EAAEA,OAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASe,YAAU,CAAC,QAAQ,EAAE,MAAM,EAAE;AACtC,EAAE,QAAQ,GAAGf,OAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC7D;AACA,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;AAC9B,EAAE,IAAI,aAAa,CAAC;AACpB,EAAE,IAAI,OAAO,CAAC;AACd;AACA,EAAE,MAAM,eAAe,GAAG,EAAE,CAAC;AAC7B;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,IAAI,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChC,IAAI,IAAI,EAAE,CAAC;AACX;AACA,IAAI,OAAO,GAAG,aAAa,CAAC;AAC5B;AACA,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE;AAC1C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AAC1E;AACA,MAAM,IAAI,OAAO,KAAK,SAAS,EAAE;AACjC,QAAQ,MAAM,IAAID,YAAU,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,OAAO,KAAKC,OAAK,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACnF,MAAM,MAAM;AACZ,KAAK;AACL;AACA,IAAI,eAAe,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAC7C,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,EAAE;AAChB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAAG;AACvD,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC;AAClB,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AACxB,SAAS,KAAK,KAAK,KAAK,GAAG,qCAAqC,GAAG,+BAA+B,CAAC;AACnG,KAAK,CAAC;AACN;AACA,IAAI,IAAI,CAAC,GAAG,MAAM;AAClB,QAAQ,OAAO,CAAC,MAAM,GAAG,CAAC;AAC1B,UAAU,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5D,UAAU,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxC,QAAQ,yBAAyB,CAAC;AAClC;AACA,IAAI,MAAM,IAAID,YAAU;AACxB,MAAM,CAAC,qDAAqD,CAAC,GAAG,CAAC;AACjE,MAAM,iBAAiB;AACvB,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,CAAC;AACD;AACA;AACA;AACA;AACA,iBAAe;AACf;AACA;AACA;AACA;AACA,cAAEgB,YAAU;AACZ;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,EAAE,aAAa;AACzB,CAAC;;ACxHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,4BAA4B,CAAC,MAAM,EAAE;AAC9C,EAAE,IAAI,MAAM,CAAC,WAAW,EAAE;AAC1B,IAAI,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;AAC1C,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC9C,IAAI,MAAM,IAAIL,eAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC1C,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,eAAe,CAAC,MAAM,EAAE;AAChD,EAAE,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACvC;AACA,EAAE,MAAM,CAAC,OAAO,GAAGH,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrD;AACA;AACA,EAAE,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACpE;AACA,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9D,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;AAC9E,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAIC,UAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAClF;AACA,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI;AAC7B,IAAI,SAAS,mBAAmB,CAAC,QAAQ,EAAE;AAC3C,MAAM,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC3C;AACA;AACA,MAAM,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AACrF;AACA,MAAM,QAAQ,CAAC,OAAO,GAAGD,cAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC7D;AACA,MAAM,OAAO,QAAQ,CAAC;AACtB,KAAK;AACL,IAAI,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACxC,MAAM,IAAI,CAACE,UAAQ,CAAC,MAAM,CAAC,EAAE;AAC7B,QAAQ,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC7C;AACA;AACA,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;AACvC,UAAU,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;AACnD,YAAY,MAAM;AAClB,YAAY,MAAM,CAAC,iBAAiB;AACpC,YAAY,MAAM,CAAC,QAAQ;AAC3B,WAAW,CAAC;AACZ,UAAU,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAGF,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/E,SAAS;AACT,OAAO;AACP;AACA,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpC,KAAK;AACL,GAAG,CAAC;AACJ;;AC5EO,MAAMS,SAAO,GAAG,QAAQ;;ACK/B,MAAMC,YAAU,GAAG,EAAE,CAAC;AACtB;AACA;AACA,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AACrF,EAAEA,YAAU,CAAC,IAAI,CAAC,GAAG,SAAS,SAAS,CAAC,KAAK,EAAE;AAC/C,IAAI,OAAO,OAAO,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;AACtE,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACA,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAA,YAAU,CAAC,YAAY,GAAG,SAAS,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;AAC7E,EAAE,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;AACpC,IAAI;AACJ,MAAM,UAAU;AAChB,MAAMD,SAAO;AACb,MAAM,yBAAyB;AAC/B,MAAM,GAAG;AACT,MAAM,GAAG;AACT,MAAM,IAAI;AACV,OAAO,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,CAAC;AACrC,MAAM;AACN,GAAG;AACH;AACA;AACA,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,KAAK;AAC/B,IAAI,IAAI,SAAS,KAAK,KAAK,EAAE;AAC7B,MAAM,MAAM,IAAIjB,YAAU;AAC1B,QAAQ,aAAa,CAAC,GAAG,EAAE,mBAAmB,IAAI,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;AACnF,QAAQA,YAAU,CAAC,cAAc;AACjC,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE;AAC7C,MAAM,kBAAkB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACrC;AACA,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,aAAa;AACrB,UAAU,GAAG;AACb,UAAU,8BAA8B,GAAG,OAAO,GAAG,yCAAyC;AAC9F,SAAS;AACT,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,OAAO,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;AAC1D,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACAkB,YAAU,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,eAAe,EAAE;AACzD,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,KAAK;AACzB;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,4BAA4B,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;AACzE,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE;AACtD,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACnC,IAAI,MAAM,IAAIlB,YAAU,CAAC,2BAA2B,EAAEA,YAAU,CAAC,oBAAoB,CAAC,CAAC;AACvF,GAAG;AACH,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACtB,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AAClB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAClC,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AACjC,MAAM,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3E,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE;AAC3B,QAAQ,MAAM,IAAIA,YAAU;AAC5B,UAAU,SAAS,GAAG,GAAG,GAAG,WAAW,GAAG,MAAM;AAChD,UAAUA,YAAU,CAAC,oBAAoB;AACzC,SAAS,CAAC;AACV,OAAO;AACP,MAAM,SAAS;AACf,KAAK;AACL,IAAI,IAAI,YAAY,KAAK,IAAI,EAAE;AAC/B,MAAM,MAAM,IAAIA,YAAU,CAAC,iBAAiB,GAAG,GAAG,EAAEA,YAAU,CAAC,cAAc,CAAC,CAAC;AAC/E,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACA,kBAAe;AACf,EAAE,aAAa;AACf,cAAEkB,YAAU;AACZ,CAAC;;ACjGD,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,OAAK,CAAC;AACZ,EAAE,WAAW,CAAC,cAAc,EAAE;AAC9B,IAAI,IAAI,CAAC,QAAQ,GAAG,cAAc,IAAI,EAAE,CAAC;AACzC,IAAI,IAAI,CAAC,YAAY,GAAG;AACxB,MAAM,OAAO,EAAE,IAAIC,oBAAkB,EAAE;AACvC,MAAM,QAAQ,EAAE,IAAIA,oBAAkB,EAAE;AACxC,KAAK,CAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE;AACrC,IAAI,IAAI;AACR,MAAM,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACtD,KAAK,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,KAAK,EAAE;AAChC,QAAQ,IAAI,KAAK,GAAG,EAAE,CAAC;AACvB;AACA,QAAQ,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;AACzF;AACA;AACA,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;AAC1E,QAAQ,IAAI;AACZ,UAAU,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AAC1B,YAAY,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;AAC9B;AACA,WAAW,MAAM,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE;AAC3F,YAAY,GAAG,CAAC,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC;AACtC,WAAW;AACX,SAAS,CAAC,OAAO,CAAC,EAAE;AACpB;AACA,SAAS;AACT,OAAO;AACP;AACA,MAAM,MAAM,GAAG,CAAC;AAChB,KAAK;AACL,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE;AAChC;AACA;AACA,IAAI,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACzC,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;AAC5B,MAAM,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC;AAC/B,KAAK,MAAM;AACX,MAAM,MAAM,GAAG,WAAW,IAAI,EAAE,CAAC;AACjC,KAAK;AACL;AACA,IAAI,MAAM,GAAGR,aAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD;AACA,IAAI,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;AAC/D;AACA,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;AACpC,MAAM,SAAS,CAAC,aAAa;AAC7B,QAAQ,YAAY;AACpB,QAAQ;AACR,UAAU,iBAAiB,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AACxE,UAAU,iBAAiB,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AACxE,UAAU,mBAAmB,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AAC1E,UAAU,+BAA+B,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AACtF,SAAS;AACT,QAAQ,KAAK;AACb,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,IAAI,gBAAgB,IAAI,IAAI,EAAE;AAClC,MAAM,IAAIX,OAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;AAC9C,QAAQ,MAAM,CAAC,gBAAgB,GAAG;AAClC,UAAU,SAAS,EAAE,gBAAgB;AACrC,SAAS,CAAC;AACV,OAAO,MAAM;AACb,QAAQ,SAAS,CAAC,aAAa;AAC/B,UAAU,gBAAgB;AAC1B,UAAU;AACV,YAAY,MAAM,EAAE,UAAU,CAAC,QAAQ;AACvC,YAAY,SAAS,EAAE,UAAU,CAAC,QAAQ;AAC1C,WAAW;AACX,UAAU,IAAI;AACd,SAAS,CAAC;AACV,OAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAE3C,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,KAAK,SAAS,EAAE;AAC9D,MAAM,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AACjE,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACtC,KAAK;AACL;AACA,IAAI,SAAS,CAAC,aAAa;AAC3B,MAAM,MAAM;AACZ,MAAM;AACN,QAAQ,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC/C,QAAQ,aAAa,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC;AAC3D,OAAO;AACP,MAAM,IAAI;AACV,KAAK,CAAC;AACN;AACA;AACA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,EAAE,WAAW,EAAE,CAAC;AACnF;AACA;AACA,IAAI,IAAI,cAAc,GAAG,OAAO,IAAIA,OAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACxF;AACA,IAAI,OAAO;AACX,MAAMA,OAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,KAAK;AAC7F,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/B,OAAO,CAAC,CAAC;AACT;AACA,IAAI,MAAM,CAAC,OAAO,GAAGO,cAAY,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAClE;AACA;AACA,IAAI,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACvC,IAAI,IAAI,8BAA8B,GAAG,IAAI,CAAC;AAC9C,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,0BAA0B,CAAC,WAAW,EAAE;AACvF,MAAM,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,UAAU,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;AAC9F,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,8BAA8B,GAAG,8BAA8B,IAAI,WAAW,CAAC,WAAW,CAAC;AACjG;AACA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,oBAAoB,CAAC;AACvE,MAAM,MAAM,+BAA+B;AAC3C,QAAQ,YAAY,IAAI,YAAY,CAAC,+BAA+B,CAAC;AACrE;AACA,MAAM,IAAI,+BAA+B,EAAE;AAC3C,QAAQ,uBAAuB,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACrF,OAAO,MAAM;AACb,QAAQ,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AAClF,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACxC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,wBAAwB,CAAC,WAAW,EAAE;AACtF,MAAM,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACjF,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,GAAG,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,8BAA8B,EAAE;AACzC,MAAM,MAAM,KAAK,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC5D,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,uBAAuB,CAAC,CAAC;AAChD,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,CAAC;AAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;AACzB;AACA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxC;AACA,MAAM,OAAO,CAAC,GAAG,GAAG,EAAE;AACtB,QAAQ,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,OAAO;AACP;AACA,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK;AACL;AACA,IAAI,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC;AACzC;AACA,IAAI,IAAI,SAAS,GAAG,MAAM,CAAC;AAC3B;AACA,IAAI,OAAO,CAAC,GAAG,GAAG,EAAE;AACpB,MAAM,MAAM,WAAW,GAAG,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,MAAM,MAAM,UAAU,GAAG,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,MAAM,IAAI;AACV,QAAQ,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAC3C,OAAO,CAAC,OAAO,KAAK,EAAE;AACtB,QAAQ,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrC,QAAQ,MAAM;AACd,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI;AACR,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACtD,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnC,KAAK;AACL;AACA,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,GAAG,GAAG,wBAAwB,CAAC,MAAM,CAAC;AAC1C;AACA,IAAI,OAAO,CAAC,GAAG,GAAG,EAAE;AACpB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3F,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,MAAM,GAAGI,aAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzF,IAAI,OAAO,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACtE,GAAG;AACH,CAAC;AACD;AACA;AACAX,OAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,mBAAmB,CAAC,MAAM,EAAE;AACzF;AACA,EAAEkB,OAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,EAAE,MAAM,EAAE;AACnD,IAAI,OAAO,IAAI,CAAC,OAAO;AACvB,MAAMP,aAAW,CAAC,MAAM,IAAI,EAAE,EAAE;AAChC,QAAQ,MAAM;AACd,QAAQ,GAAG;AACX,QAAQ,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,EAAE,IAAI;AACjC,OAAO,CAAC;AACR,KAAK,CAAC;AACN,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACAX,OAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,qBAAqB,CAAC,MAAM,EAAE;AAC/E;AACA;AACA,EAAE,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACtC,IAAI,OAAO,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;AAClD,MAAM,OAAO,IAAI,CAAC,OAAO;AACzB,QAAQW,aAAW,CAAC,MAAM,IAAI,EAAE,EAAE;AAClC,UAAU,MAAM;AAChB,UAAU,OAAO,EAAE,MAAM;AACzB,cAAc;AACd,gBAAgB,cAAc,EAAE,qBAAqB;AACrD,eAAe;AACf,cAAc,EAAE;AAChB,UAAU,GAAG;AACb,UAAU,IAAI;AACd,SAAS,CAAC;AACV,OAAO,CAAC;AACR,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAEO,OAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,kBAAkB,EAAE,CAAC;AACjD;AACA,EAAEA,OAAK,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AACH;AACA,gBAAeA,OAAK;;AClQpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAME,aAAW,CAAC;AAClB,EAAE,WAAW,CAAC,QAAQ,EAAE;AACxB,IAAI,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACxC,MAAM,MAAM,IAAI,SAAS,CAAC,8BAA8B,CAAC,CAAC;AAC1D,KAAK;AACL;AACA,IAAI,IAAI,cAAc,CAAC;AACvB;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,eAAe,CAAC,OAAO,EAAE;AACjE,MAAM,cAAc,GAAG,OAAO,CAAC;AAC/B,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC;AACvB;AACA;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;AAClC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO;AACpC;AACA,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;AACtC;AACA,MAAM,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACtB,QAAQ,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACpC,OAAO;AACP,MAAM,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAC9B,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,WAAW,KAAK;AACzC,MAAM,IAAI,QAAQ,CAAC;AACnB;AACA,MAAM,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AAC/C,QAAQ,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjC,QAAQ,QAAQ,GAAG,OAAO,CAAC;AAC3B,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3B;AACA,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,MAAM,GAAG;AACzC,QAAQ,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACpC,OAAO,CAAC;AACR;AACA,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK,CAAC;AACN;AACA,IAAI,QAAQ,CAAC,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACvD,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;AACxB;AACA,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,KAAK,CAAC,MAAM,GAAG,IAAIV,eAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACjE,MAAM,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACnC,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,MAAM,IAAI,CAAC,MAAM,CAAC;AACxB,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,CAAC,QAAQ,EAAE;AACtB,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrC,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnC,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,QAAQ,EAAE;AACxB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC1B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpD,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACtB,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK;AACL,GAAG;AACH;AACA,EAAE,aAAa,GAAG;AAClB,IAAI,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;AAC7C;AACA,IAAI,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK;AAC3B,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,KAAK,CAAC;AACN;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1B;AACA,IAAI,UAAU,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAClE;AACA,IAAI,OAAO,UAAU,CAAC,MAAM,CAAC;AAC7B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,MAAM,GAAG;AAClB,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,MAAM,KAAK,GAAG,IAAIU,aAAW,CAAC,SAAS,QAAQ,CAAC,CAAC,EAAE;AACvD,MAAM,MAAM,GAAG,CAAC,CAAC;AACjB,KAAK,CAAC,CAAC;AACP,IAAI,OAAO;AACX,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,CAAC;AACN,GAAG;AACH,CAAC;AACD;AACA,sBAAeA,aAAW;;ACpI1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,QAAM,CAAC,QAAQ,EAAE;AACzC,EAAE,OAAO,SAAS,IAAI,CAAC,GAAG,EAAE;AAC5B,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrC,GAAG,CAAC;AACJ;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,cAAY,CAAC,OAAO,EAAE;AAC9C,EAAE,OAAOtB,OAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC;AAClE;;ACbA,MAAMuB,gBAAc,GAAG;AACvB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,EAAE,EAAE,GAAG;AACT,EAAE,OAAO,EAAE,GAAG;AACd,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,2BAA2B,EAAE,GAAG;AAClC,EAAE,SAAS,EAAE,GAAG;AAChB,EAAE,YAAY,EAAE,GAAG;AACnB,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,WAAW,EAAE,GAAG;AAClB,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,gBAAgB,EAAE,GAAG;AACvB,EAAE,KAAK,EAAE,GAAG;AACZ,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,WAAW,EAAE,GAAG;AAClB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,iBAAiB,EAAE,GAAG;AACxB,EAAE,iBAAiB,EAAE,GAAG;AACxB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,YAAY,EAAE,GAAG;AACnB,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,SAAS,EAAE,GAAG;AAChB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,gBAAgB,EAAE,GAAG;AACvB,EAAE,aAAa,EAAE,GAAG;AACpB,EAAE,2BAA2B,EAAE,GAAG;AAClC,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,oBAAoB,EAAE,GAAG;AAC3B,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,iBAAiB,EAAE,GAAG;AACxB,EAAE,SAAS,EAAE,GAAG;AAChB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,gBAAgB,EAAE,GAAG;AACvB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,oBAAoB,EAAE,GAAG;AAC3B,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,2BAA2B,EAAE,GAAG;AAClC,EAAE,0BAA0B,EAAE,GAAG;AACjC,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,uBAAuB,EAAE,GAAG;AAC9B,EAAE,qBAAqB,EAAE,GAAG;AAC5B,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,YAAY,EAAE,GAAG;AACnB,EAAE,WAAW,EAAE,GAAG;AAClB,EAAE,6BAA6B,EAAE,GAAG;AACpC,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,qBAAqB,EAAE,GAAG;AAC5B,CAAC,CAAC;AACF;AACA,MAAM,CAAC,OAAO,CAACA,gBAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACzD,EAAEA,gBAAc,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AAC9B,CAAC,CAAC,CAAC;AACH;AACA,yBAAeA,gBAAc;;ACxD7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,aAAa,EAAE;AACvC,EAAE,MAAM,OAAO,GAAG,IAAIL,OAAK,CAAC,aAAa,CAAC,CAAC;AAC3C,EAAE,MAAM,QAAQ,GAAG,IAAI,CAACA,OAAK,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1D;AACA;AACA,EAAElB,OAAK,CAAC,MAAM,CAAC,QAAQ,EAAEkB,OAAK,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACzE;AACA;AACA,EAAElB,OAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D;AACA;AACA,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,cAAc,EAAE;AACpD,IAAI,OAAO,cAAc,CAACW,aAAW,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;AACtE,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB,CAAC;AACD;AACA;AACA,MAAM,KAAK,GAAG,cAAc,CAACH,UAAQ,CAAC,CAAC;AACvC;AACA;AACA,KAAK,CAAC,KAAK,GAAGU,OAAK,CAAC;AACpB;AACA;AACA,KAAK,CAAC,aAAa,GAAGR,eAAa,CAAC;AACpC,KAAK,CAAC,WAAW,GAAGU,aAAW,CAAC;AAChC,KAAK,CAAC,QAAQ,GAAGX,UAAQ,CAAC;AAC1B,KAAK,CAAC,OAAO,GAAGO,SAAO,CAAC;AACxB,KAAK,CAAC,UAAU,GAAGf,YAAU,CAAC;AAC9B;AACA;AACA,KAAK,CAAC,UAAU,GAAGF,YAAU,CAAC;AAC9B;AACA;AACA,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;AACnC;AACA;AACA,KAAK,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,QAAQ,EAAE;AACnC,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC,CAAC;AACF;AACA,KAAK,CAAC,MAAM,GAAGsB,QAAM,CAAC;AACtB;AACA;AACA,KAAK,CAAC,YAAY,GAAGC,cAAY,CAAC;AAClC;AACA;AACA,KAAK,CAAC,WAAW,GAAGX,aAAW,CAAC;AAChC;AACA,KAAK,CAAC,YAAY,GAAGJ,cAAY,CAAC;AAClC;AACA,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,KAAK,cAAc,CAACP,OAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AACpG;AACA,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;AACvC;AACA,KAAK,CAAC,cAAc,GAAGuB,gBAAc,CAAC;AACtC;AACA,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AACtB;AACA;AACA,gBAAe,KAAK;;ACtFpB;AACA;AACA;AACK,MAAC;AACN,EAAE,KAAK;AACP,EAAE,UAAU;AACZ,EAAE,aAAa;AACf,EAAE,QAAQ;AACV,EAAE,WAAW;AACb,EAAE,OAAO;AACT,EAAE,GAAG;AACL,EAAE,MAAM;AACR,EAAE,YAAY;AACd,EAAE,MAAM;AACR,EAAE,UAAU;AACZ,EAAE,YAAY;AACd,EAAE,cAAc;AAChB,EAAE,UAAU;AACZ,EAAE,UAAU;AACZ,EAAE,WAAW;AACb,CAAC,GAAGC;;;;"} \ No newline at end of file diff --git a/node_modules/axios/dist/esm/axios.min.js b/node_modules/axios/dist/esm/axios.min.js new file mode 100644 index 0000000..88842f9 --- /dev/null +++ b/node_modules/axios/dist/esm/axios.min.js @@ -0,0 +1,3 @@ +/*! Axios v1.13.6 Copyright (c) 2026 Matt Zabriskie and contributors */ +function e(e,t){return function(){return e.apply(t,arguments)}}const{toString:t}=Object.prototype,{getPrototypeOf:n}=Object,{iterator:r,toStringTag:o}=Symbol,s=(i=Object.create(null),e=>{const n=t.call(e);return i[n]||(i[n]=n.slice(8,-1).toLowerCase())});var i;const a=e=>(e=e.toLowerCase(),t=>s(t)===e),c=e=>t=>typeof t===e,{isArray:l}=Array,u=c("undefined");function f(e){return null!==e&&!u(e)&&null!==e.constructor&&!u(e.constructor)&&h(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const d=a("ArrayBuffer");const p=c("string"),h=c("function"),m=c("number"),b=e=>null!==e&&"object"==typeof e,g=e=>{if("object"!==s(e))return!1;const t=n(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||o in e||r in e)},y=a("Date"),w=a("File"),E=a("Blob"),R=a("FileList");const O="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},S=void 0!==O.FormData?O.FormData:void 0,T=a("URLSearchParams"),[A,v,C,N]=["ReadableStream","Request","Response","Headers"].map(a);function _(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,o;if("object"!=typeof e&&(e=[e]),l(e))for(r=0,o=e.length;r0;)if(r=n[o],t===r.toLowerCase())return r;return null}const j="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,P=e=>!u(e)&&e!==j;const U=(F="undefined"!=typeof Uint8Array&&n(Uint8Array),e=>F&&e instanceof F);var F;const L=a("HTMLFormElement"),B=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),D=a("RegExp"),k=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};_(n,(n,o)=>{let s;!1!==(s=t(n,o,e))&&(r[o]=s||n)}),Object.defineProperties(e,r)};const q=a("AsyncFunction"),I=(M="function"==typeof setImmediate,z=h(j.postMessage),M?setImmediate:z?(H=`axios@${Math.random()}`,J=[],j.addEventListener("message",({source:e,data:t})=>{e===j&&t===H&&J.length&&J.shift()()},!1),e=>{J.push(e),j.postMessage(H,"*")}):e=>setTimeout(e));var M,z,H,J;const W="undefined"!=typeof queueMicrotask?queueMicrotask.bind(j):"undefined"!=typeof process&&process.nextTick||I,V={isArray:l,isArrayBuffer:d,isBuffer:f,isFormData:e=>{let t;return e&&(S&&e instanceof S||h(e.append)&&("formdata"===(t=s(e))||"object"===t&&h(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&d(e.buffer),t},isString:p,isNumber:m,isBoolean:e=>!0===e||!1===e,isObject:b,isPlainObject:g,isEmptyObject:e=>{if(!b(e)||f(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(e){return!1}},isReadableStream:A,isRequest:v,isResponse:C,isHeaders:N,isUndefined:u,isDate:y,isFile:w,isReactNativeBlob:e=>!(!e||void 0===e.uri),isReactNative:e=>e&&void 0!==e.getParts,isBlob:E,isRegExp:D,isFunction:h,isStream:e=>b(e)&&h(e.pipe),isURLSearchParams:T,isTypedArray:U,isFileList:R,forEach:_,merge:function e(){const{caseless:t,skipUndefined:n}=P(this)&&this||{},r={},o=(o,s)=>{if("__proto__"===s||"constructor"===s||"prototype"===s)return;const i=t&&x(r,s)||s;g(r[i])&&g(o)?r[i]=e(r[i],o):g(o)?r[i]=e({},o):l(o)?r[i]=o.slice():n&&u(o)||(r[i]=o)};for(let e=0,t=arguments.length;e(_(n,(n,o)=>{r&&h(n)?Object.defineProperty(t,o,{value:e(n,r),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(t,o,{value:n,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:o}),t),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),Object.defineProperty(e.prototype,"constructor",{value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,r,o)=>{let s,i,a;const c={};if(t=t||{},null==e)return t;do{for(s=Object.getOwnPropertyNames(e),i=s.length;i-- >0;)a=s[i],o&&!o(a,e,t)||c[a]||(t[a]=e[a],c[a]=!0);e=!1!==r&&n(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:s,kindOfTest:a,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if(l(e))return e;let t=e.length;if(!m(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[r]).call(e);let o;for(;(o=n.next())&&!o.done;){const n=o.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:L,hasOwnProperty:B,hasOwnProp:B,reduceDescriptors:k,freezeMethods:e=>{k(e,(t,n)=>{if(h(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];h(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))})},toObjectSet:(e,t)=>{const n={},r=e=>{e.forEach(e=>{n[e]=!0})};return l(e)?r(e):r(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n}),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:x,global:j,isContextDefined:P,isSpecCompliantForm:function(e){return!!(e&&h(e.append)&&"FormData"===e[o]&&e[r])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(b(e)){if(t.indexOf(e)>=0)return;if(f(e))return e;if(!("toJSON"in e)){t[r]=e;const o=l(e)?[]:{};return _(e,(e,t)=>{const s=n(e,r+1);!u(s)&&(o[t]=s)}),t[r]=void 0,o}}return e};return n(e,0)},isAsyncFn:q,isThenable:e=>e&&(b(e)||h(e))&&h(e.then)&&h(e.catch),setImmediate:I,asap:W,isIterable:e=>null!=e&&h(e[r])};class $ extends Error{static from(e,t,n,r,o,s){const i=new $(e.message,t||e.code,n,r,o);return i.cause=e,i.name=e.name,null!=e.status&&null==i.status&&(i.status=e.status),s&&Object.assign(i,s),i}constructor(e,t,n,r,o){super(e),Object.defineProperty(this,"message",{value:e,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o,this.status=o.status)}toJSON(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:V.toJSONObject(this.config),code:this.code,status:this.status}}}$.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE",$.ERR_BAD_OPTION="ERR_BAD_OPTION",$.ECONNABORTED="ECONNABORTED",$.ETIMEDOUT="ETIMEDOUT",$.ERR_NETWORK="ERR_NETWORK",$.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS",$.ERR_DEPRECATED="ERR_DEPRECATED",$.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE",$.ERR_BAD_REQUEST="ERR_BAD_REQUEST",$.ERR_CANCELED="ERR_CANCELED",$.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT",$.ERR_INVALID_URL="ERR_INVALID_URL";const K=$;function X(e){return V.isPlainObject(e)||V.isArray(e)}function G(e){return V.endsWith(e,"[]")?e.slice(0,-2):e}function Q(e,t,n){return e?e.concat(t).map(function(e,t){return e=G(e),!n&&t?"["+e+"]":e}).join(n?".":""):t}const Y=V.toFlatObject(V,{},null,function(e){return/^is[A-Z]/.test(e)});function Z(e,t,n){if(!V.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(n=V.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!V.isUndefined(t[e])})).metaTokens,o=n.visitor||l,s=n.dots,i=n.indexes,a=(n.Blob||"undefined"!=typeof Blob&&Blob)&&V.isSpecCompliantForm(t);if(!V.isFunction(o))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(V.isDate(e))return e.toISOString();if(V.isBoolean(e))return e.toString();if(!a&&V.isBlob(e))throw new K("Blob is not supported. Use a Buffer instead.");return V.isArrayBuffer(e)||V.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function l(e,n,o){let a=e;if(V.isReactNative(t)&&V.isReactNativeBlob(e))return t.append(Q(o,n,s),c(e)),!1;if(e&&!o&&"object"==typeof e)if(V.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(V.isArray(e)&&function(e){return V.isArray(e)&&!e.some(X)}(e)||(V.isFileList(e)||V.endsWith(n,"[]"))&&(a=V.toArray(e)))return n=G(n),a.forEach(function(e,r){!V.isUndefined(e)&&null!==e&&t.append(!0===i?Q([n],r,s):null===i?n:n+"[]",c(e))}),!1;return!!X(e)||(t.append(Q(o,n,s),c(e)),!1)}const u=[],f=Object.assign(Y,{defaultVisitor:l,convertValue:c,isVisitable:X});if(!V.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!V.isUndefined(n)){if(-1!==u.indexOf(n))throw Error("Circular reference detected in "+r.join("."));u.push(n),V.forEach(n,function(n,s){!0===(!(V.isUndefined(n)||null===n)&&o.call(t,n,V.isString(s)?s.trim():s,r,f))&&e(n,r?r.concat(s):[s])}),u.pop()}}(e),t}function ee(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return t[e]})}function te(e,t){this._pairs=[],e&&Z(e,this,t)}const ne=te.prototype;function re(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function oe(e,t,n){if(!t)return e;const r=n&&n.encode||re,o=V.isFunction(n)?{serialize:n}:n,s=o&&o.serialize;let i;if(i=s?s(t,o):V.isURLSearchParams(t)?t.toString():new te(t,o).toString(r),i){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}ne.append=function(e,t){this._pairs.push([e,t])},ne.toString=function(e){const t=e?function(t){return e.call(this,t,ee)}:ee;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};const se=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){V.forEach(this.handlers,function(t){null!==t&&e(t)})}},ie={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},ae={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:te,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},ce="undefined"!=typeof window&&"undefined"!=typeof document,le="object"==typeof navigator&&navigator||void 0,ue=ce&&(!le||["ReactNative","NativeScript","NS"].indexOf(le.product)<0),fe="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,de=ce&&window.location.href||"http://localhost",pe={...Object.freeze({__proto__:null,hasBrowserEnv:ce,hasStandardBrowserWebWorkerEnv:fe,hasStandardBrowserEnv:ue,navigator:le,origin:de}),...ae};function he(e){function t(e,n,r,o){let s=e[o++];if("__proto__"===s)return!0;const i=Number.isFinite(+s),a=o>=e.length;if(s=!s&&V.isArray(r)?r.length:s,a)return V.hasOwnProp(r,s)?r[s]=[r[s],n]:r[s]=n,!i;r[s]&&V.isObject(r[s])||(r[s]=[]);return t(e,n,r[s],o)&&V.isArray(r[s])&&(r[s]=function(e){const t={},n=Object.keys(e);let r;const o=n.length;let s;for(r=0;r{t(function(e){return V.matchAll(/\w+|\[(\w*)]/g,e).map(e=>"[]"===e[0]?"":e[1]||e[0])}(e),r,n,0)}),n}return null}const me={transitional:ie,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=V.isObject(e);o&&V.isHTMLForm(e)&&(e=new FormData(e));if(V.isFormData(e))return r?JSON.stringify(he(e)):e;if(V.isArrayBuffer(e)||V.isBuffer(e)||V.isStream(e)||V.isFile(e)||V.isBlob(e)||V.isReadableStream(e))return e;if(V.isArrayBufferView(e))return e.buffer;if(V.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Z(e,new pe.classes.URLSearchParams,{visitor:function(e,t,n,r){return pe.isNode&&V.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)},...t})}(e,this.formSerializer).toString();if((s=V.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Z(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),function(e,t,n){if(V.isString(e))try{return(t||JSON.parse)(e),V.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||me.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(V.isResponse(e)||V.isReadableStream(e))return e;if(e&&V.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e,this.parseReviver)}catch(e){if(n){if("SyntaxError"===e.name)throw K.from(e,K.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:pe.classes.FormData,Blob:pe.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};V.forEach(["delete","get","head","post","put","patch"],e=>{me.headers[e]={}});const be=me,ge=V.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),ye=Symbol("internals");function we(e){return e&&String(e).trim().toLowerCase()}function Ee(e){return!1===e||null==e?e:V.isArray(e)?e.map(Ee):String(e)}function Re(e,t,n,r,o){return V.isFunction(r)?r.call(this,t,n):(o&&(t=n),V.isString(t)?V.isString(r)?-1!==t.indexOf(r):V.isRegExp(r)?r.test(t):void 0:void 0)}class Oe{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=we(t);if(!o)throw new Error("header name must be a non-empty string");const s=V.findKey(r,o);(!s||void 0===r[s]||!0===n||void 0===n&&!1!==r[s])&&(r[s||t]=Ee(e))}const s=(e,t)=>V.forEach(e,(e,n)=>o(e,n,t));if(V.isPlainObject(e)||e instanceof this.constructor)s(e,t);else if(V.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))s((e=>{const t={};let n,r,o;return e&&e.split("\n").forEach(function(e){o=e.indexOf(":"),n=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!n||t[n]&&ge[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t})(e),t);else if(V.isObject(e)&&V.isIterable(e)){let n,r,o={};for(const t of e){if(!V.isArray(t))throw TypeError("Object iterator must return a key-value pair");o[r=t[0]]=(n=o[r])?V.isArray(n)?[...n,t[1]]:[n,t[1]]:t[1]}s(o,t)}else null!=e&&o(t,e,n);return this}get(e,t){if(e=we(e)){const n=V.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(V.isFunction(t))return t.call(this,e,n);if(V.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=we(e)){const n=V.findKey(this,e);return!(!n||void 0===this[n]||t&&!Re(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=we(e)){const o=V.findKey(n,e);!o||t&&!Re(0,n[o],o,t)||(delete n[o],r=!0)}}return V.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const o=t[n];e&&!Re(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return V.forEach(this,(r,o)=>{const s=V.findKey(n,o);if(s)return t[s]=Ee(r),void delete t[o];const i=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,n)=>t.toUpperCase()+n)}(o):String(o).trim();i!==o&&delete t[o],t[i]=Ee(r),n[i]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return V.forEach(this,(n,r)=>{null!=n&&!1!==n&&(t[r]=e&&V.isArray(n)?n.join(", "):n)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+": "+t).join("\n")}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach(e=>n.set(e)),n}static accessor(e){const t=(this[ye]=this[ye]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=we(e);t[r]||(!function(e,t){const n=V.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(e,n,o){return this[r].call(this,t,e,n,o)},configurable:!0})})}(n,e),t[r]=!0)}return V.isArray(e)?e.forEach(r):r(e),this}}Oe.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),V.reduceDescriptors(Oe.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}}),V.freezeMethods(Oe);const Se=Oe;function Te(e,t){const n=this||be,r=t||n,o=Se.from(r.headers);let s=r.data;return V.forEach(e,function(e){s=e.call(n,s,o.normalize(),t?t.status:void 0)}),o.normalize(),s}function Ae(e){return!(!e||!e.__CANCEL__)}const ve=class extends K{constructor(e,t,n){super(null==e?"canceled":e,K.ERR_CANCELED,t,n),this.name="CanceledError",this.__CANCEL__=!0}};function Ce(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new K("Request failed with status code "+n.status,[K.ERR_BAD_REQUEST,K.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}const Ne=(e,t,n=3)=>{let r=0;const o=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o,s=0,i=0;return t=void 0!==t?t:1e3,function(a){const c=Date.now(),l=r[i];o||(o=c),n[s]=a,r[s]=c;let u=i,f=0;for(;u!==s;)f+=n[u++],u%=e;if(s=(s+1)%e,s===i&&(i=(i+1)%e),c-o{o=s,n=null,r&&(clearTimeout(r),r=null),e(...t)};return[(...e)=>{const t=Date.now(),a=t-o;a>=s?i(e,t):(n=e,r||(r=setTimeout(()=>{r=null,i(n)},s-a)))},()=>n&&i(n)]}(n=>{const s=n.loaded,i=n.lengthComputable?n.total:void 0,a=s-r,c=o(a);r=s;e({loaded:s,total:i,progress:i?s/i:void 0,bytes:a,rate:c||void 0,estimated:c&&i&&s<=i?(i-s)/c:void 0,event:n,lengthComputable:null!=i,[t?"download":"upload"]:!0})},n)},_e=(e,t)=>{const n=null!=e;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},xe=e=>(...t)=>V.asap(()=>e(...t)),je=pe.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,pe.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(pe.origin),pe.navigator&&/(msie|trident)/i.test(pe.navigator.userAgent)):()=>!0,Pe=pe.hasStandardBrowserEnv?{write(e,t,n,r,o,s,i){if("undefined"==typeof document)return;const a=[`${e}=${encodeURIComponent(t)}`];V.isNumber(n)&&a.push(`expires=${new Date(n).toUTCString()}`),V.isString(r)&&a.push(`path=${r}`),V.isString(o)&&a.push(`domain=${o}`),!0===s&&a.push("secure"),V.isString(i)&&a.push(`SameSite=${i}`),document.cookie=a.join("; ")},read(e){if("undefined"==typeof document)return null;const t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read:()=>null,remove(){}};function Ue(e,t,n){let r=!("string"==typeof(o=t)&&/^([a-z][a-z\d+\-.]*:)?\/\//i.test(o));var o;return e&&(r||0==n)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const Fe=e=>e instanceof Se?{...e}:e;function Le(e,t){t=t||{};const n={};function r(e,t,n,r){return V.isPlainObject(e)&&V.isPlainObject(t)?V.merge.call({caseless:r},e,t):V.isPlainObject(t)?V.merge({},t):V.isArray(t)?t.slice():t}function o(e,t,n,o){return V.isUndefined(t)?V.isUndefined(e)?void 0:r(void 0,e,0,o):r(e,t,0,o)}function s(e,t){if(!V.isUndefined(t))return r(void 0,t)}function i(e,t){return V.isUndefined(t)?V.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function a(n,o,s){return s in t?r(n,o):s in e?r(void 0,n):void 0}const c={url:s,method:s,data:s,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:a,headers:(e,t,n)=>o(Fe(e),Fe(t),0,!0)};return V.forEach(Object.keys({...e,...t}),function(r){if("__proto__"===r||"constructor"===r||"prototype"===r)return;const s=V.hasOwnProp(c,r)?c[r]:o,i=s(e[r],t[r],r);V.isUndefined(i)&&s!==a||(n[r]=i)}),n}const Be=e=>{const t=Le({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:o,xsrfCookieName:s,headers:i,auth:a}=t;if(t.headers=i=Se.from(i),t.url=oe(Ue(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),a&&i.set("Authorization","Basic "+btoa((a.username||"")+":"+(a.password?unescape(encodeURIComponent(a.password)):""))),V.isFormData(n))if(pe.hasStandardBrowserEnv||pe.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if(V.isFunction(n.getHeaders)){const e=n.getHeaders(),t=["content-type","content-length"];Object.entries(e).forEach(([e,n])=>{t.includes(e.toLowerCase())&&i.set(e,n)})}if(pe.hasStandardBrowserEnv&&(r&&V.isFunction(r)&&(r=r(t)),r||!1!==r&&je(t.url))){const e=o&&s&&Pe.read(s);e&&i.set(o,e)}return t},De="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(t,n){const r=Be(e);let o=r.data;const s=Se.from(r.headers).normalize();let i,a,c,l,u,{responseType:f,onUploadProgress:d,onDownloadProgress:p}=r;function h(){l&&l(),u&&u(),r.cancelToken&&r.cancelToken.unsubscribe(i),r.signal&&r.signal.removeEventListener("abort",i)}let m=new XMLHttpRequest;function b(){if(!m)return;const r=Se.from("getAllResponseHeaders"in m&&m.getAllResponseHeaders());Ce(function(e){t(e),h()},function(e){n(e),h()},{data:f&&"text"!==f&&"json"!==f?m.response:m.responseText,status:m.status,statusText:m.statusText,headers:r,config:e,request:m}),m=null}m.open(r.method.toUpperCase(),r.url,!0),m.timeout=r.timeout,"onloadend"in m?m.onloadend=b:m.onreadystatechange=function(){m&&4===m.readyState&&(0!==m.status||m.responseURL&&0===m.responseURL.indexOf("file:"))&&setTimeout(b)},m.onabort=function(){m&&(n(new K("Request aborted",K.ECONNABORTED,e,m)),m=null)},m.onerror=function(t){const r=t&&t.message?t.message:"Network Error",o=new K(r,K.ERR_NETWORK,e,m);o.event=t||null,n(o),m=null},m.ontimeout=function(){let t=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const o=r.transitional||ie;r.timeoutErrorMessage&&(t=r.timeoutErrorMessage),n(new K(t,o.clarifyTimeoutError?K.ETIMEDOUT:K.ECONNABORTED,e,m)),m=null},void 0===o&&s.setContentType(null),"setRequestHeader"in m&&V.forEach(s.toJSON(),function(e,t){m.setRequestHeader(t,e)}),V.isUndefined(r.withCredentials)||(m.withCredentials=!!r.withCredentials),f&&"json"!==f&&(m.responseType=r.responseType),p&&([c,u]=Ne(p,!0),m.addEventListener("progress",c)),d&&m.upload&&([a,l]=Ne(d),m.upload.addEventListener("progress",a),m.upload.addEventListener("loadend",l)),(r.cancelToken||r.signal)&&(i=t=>{m&&(n(!t||t.type?new ve(null,e,m):t),m.abort(),m=null)},r.cancelToken&&r.cancelToken.subscribe(i),r.signal&&(r.signal.aborted?i():r.signal.addEventListener("abort",i)));const g=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(r.url);g&&-1===pe.protocols.indexOf(g)?n(new K("Unsupported protocol "+g+":",K.ERR_BAD_REQUEST,e)):m.send(o||null)})},ke=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let n,r=new AbortController;const o=function(e){if(!n){n=!0,i();const t=e instanceof Error?e:this.reason;r.abort(t instanceof K?t:new ve(t instanceof Error?t.message:t))}};let s=t&&setTimeout(()=>{s=null,o(new K(`timeout of ${t}ms exceeded`,K.ETIMEDOUT))},t);const i=()=>{e&&(s&&clearTimeout(s),s=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(o):e.removeEventListener("abort",o)}),e=null)};e.forEach(e=>e.addEventListener("abort",o));const{signal:a}=r;return a.unsubscribe=()=>V.asap(i),a}},qe=function*(e,t){let n=e.byteLength;if(!t||n{const o=async function*(e,t){for await(const n of Ie(e))yield*qe(n,t)}(e,t);let s,i=0,a=e=>{s||(s=!0,r&&r(e))};return new ReadableStream({async pull(e){try{const{done:t,value:r}=await o.next();if(t)return a(),void e.close();let s=r.byteLength;if(n){let e=i+=s;n(e)}e.enqueue(new Uint8Array(r))}catch(e){throw a(e),e}},cancel:e=>(a(e),o.return())},{highWaterMark:2})},{isFunction:ze}=V,He=(({Request:e,Response:t})=>({Request:e,Response:t}))(V.global),{ReadableStream:Je,TextEncoder:We}=V.global,Ve=(e,...t)=>{try{return!!e(...t)}catch(e){return!1}},$e=e=>{e=V.merge.call({skipUndefined:!0},He,e);const{fetch:t,Request:n,Response:r}=e,o=t?ze(t):"function"==typeof fetch,s=ze(n),i=ze(r);if(!o)return!1;const a=o&&ze(Je),c=o&&("function"==typeof We?(l=new We,e=>l.encode(e)):async e=>new Uint8Array(await new n(e).arrayBuffer()));var l;const u=s&&a&&Ve(()=>{let e=!1;const t=new n(pe.origin,{body:new Je,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),f=i&&a&&Ve(()=>V.isReadableStream(new r("").body)),d={stream:f&&(e=>e.body)};o&&["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!d[e]&&(d[e]=(t,n)=>{let r=t&&t[e];if(r)return r.call(t);throw new K(`Response type '${e}' is not supported`,K.ERR_NOT_SUPPORT,n)})});const p=async(e,t)=>{const r=V.toFiniteNumber(e.getContentLength());return null==r?(async e=>{if(null==e)return 0;if(V.isBlob(e))return e.size;if(V.isSpecCompliantForm(e)){const t=new n(pe.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return V.isArrayBufferView(e)||V.isArrayBuffer(e)?e.byteLength:(V.isURLSearchParams(e)&&(e+=""),V.isString(e)?(await c(e)).byteLength:void 0)})(t):r};return async e=>{let{url:o,method:i,data:a,signal:c,cancelToken:l,timeout:h,onDownloadProgress:m,onUploadProgress:b,responseType:g,headers:y,withCredentials:w="same-origin",fetchOptions:E}=Be(e),R=t||fetch;g=g?(g+"").toLowerCase():"text";let O=ke([c,l&&l.toAbortSignal()],h),S=null;const T=O&&O.unsubscribe&&(()=>{O.unsubscribe()});let A;try{if(b&&u&&"get"!==i&&"head"!==i&&0!==(A=await p(y,a))){let e,t=new n(o,{method:"POST",body:a,duplex:"half"});if(V.isFormData(a)&&(e=t.headers.get("content-type"))&&y.setContentType(e),t.body){const[e,n]=_e(A,Ne(xe(b)));a=Me(t.body,65536,e,n)}}V.isString(w)||(w=w?"include":"omit");const t=s&&"credentials"in n.prototype,c={...E,signal:O,method:i.toUpperCase(),headers:y.normalize().toJSON(),body:a,duplex:"half",credentials:t?w:void 0};S=s&&new n(o,c);let l=await(s?R(S,E):R(o,c));const h=f&&("stream"===g||"response"===g);if(f&&(m||h&&T)){const e={};["status","statusText","headers"].forEach(t=>{e[t]=l[t]});const t=V.toFiniteNumber(l.headers.get("content-length")),[n,o]=m&&_e(t,Ne(xe(m),!0))||[];l=new r(Me(l.body,65536,n,()=>{o&&o(),T&&T()}),e)}g=g||"text";let v=await d[V.findKey(d,g)||"text"](l,e);return!h&&T&&T(),await new Promise((t,n)=>{Ce(t,n,{data:v,headers:Se.from(l.headers),status:l.status,statusText:l.statusText,config:e,request:S})})}catch(t){if(T&&T(),t&&"TypeError"===t.name&&/Load failed|fetch/i.test(t.message))throw Object.assign(new K("Network Error",K.ERR_NETWORK,e,S,t&&t.response),{cause:t.cause||t});throw K.from(t,t&&t.code,e,S,t&&t.response)}}},Ke=new Map,Xe=e=>{let t=e&&e.env||{};const{fetch:n,Request:r,Response:o}=t,s=[r,o,n];let i,a,c=s.length,l=Ke;for(;c--;)i=s[c],a=l.get(i),void 0===a&&l.set(i,a=c?new Map:$e(t)),l=a;return a};Xe();const Ge={http:null,xhr:De,fetch:{get:Xe}};V.forEach(Ge,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}});const Qe=e=>`- ${e}`,Ye=e=>V.isFunction(e)||null===e||!1===e;const Ze={getAdapter:function(e,t){e=V.isArray(e)?e:[e];const{length:n}=e;let r,o;const s={};for(let i=0;i`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build"));let t=n?e.length>1?"since :\n"+e.map(Qe).join("\n"):" "+Qe(e[0]):"as no adapter specified";throw new K("There is no suitable adapter to dispatch the request "+t,"ERR_NOT_SUPPORT")}return o},adapters:Ge};function et(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new ve(null,e)}function tt(e){et(e),e.headers=Se.from(e.headers),e.data=Te.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return Ze.getAdapter(e.adapter||be.adapter,e)(e).then(function(t){return et(e),t.data=Te.call(e,e.transformResponse,t),t.headers=Se.from(t.headers),t},function(t){return Ae(t)||(et(e),t&&t.response&&(t.response.data=Te.call(e,e.transformResponse,t.response),t.response.headers=Se.from(t.response.headers))),Promise.reject(t)})}const nt="1.13.6",rt={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{rt[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const ot={};rt.transitional=function(e,t,n){function r(e,t){return"[Axios v"+nt+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,o,s)=>{if(!1===e)throw new K(r(o," has been removed"+(t?" in "+t:"")),K.ERR_DEPRECATED);return t&&!ot[o]&&(ot[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,o,s)}},rt.spelling=function(e){return(t,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};const st={assertOptions:function(e,t,n){if("object"!=typeof e)throw new K("options must be an object",K.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const s=r[o],i=t[s];if(i){const t=e[s],n=void 0===t||i(t,s,e);if(!0!==n)throw new K("option "+s+" must be "+n,K.ERR_BAD_OPTION_VALUE);continue}if(!0!==n)throw new K("Unknown option "+s,K.ERR_BAD_OPTION)}},validators:rt},it=st.validators;class at{constructor(e){this.defaults=e||{},this.interceptors={request:new se,response:new se}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t={};Error.captureStackTrace?Error.captureStackTrace(t):t=new Error;const n=t.stack?t.stack.replace(/^.+\n/,""):"";try{e.stack?n&&!String(e.stack).endsWith(n.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+n):e.stack=n}catch(e){}}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Le(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;void 0!==n&&st.assertOptions(n,{silentJSONParsing:it.transitional(it.boolean),forcedJSONParsing:it.transitional(it.boolean),clarifyTimeoutError:it.transitional(it.boolean),legacyInterceptorReqResOrdering:it.transitional(it.boolean)},!1),null!=r&&(V.isFunction(r)?t.paramsSerializer={serialize:r}:st.assertOptions(r,{encode:it.function,serialize:it.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),st.assertOptions(t,{baseUrl:it.spelling("baseURL"),withXsrfToken:it.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=o&&V.merge(o.common,o[t.method]);o&&V.forEach(["delete","get","head","post","put","patch","common"],e=>{delete o[e]}),t.headers=Se.concat(s,o);const i=[];let a=!0;this.interceptors.request.forEach(function(e){if("function"==typeof e.runWhen&&!1===e.runWhen(t))return;a=a&&e.synchronous;const n=t.transitional||ie;n&&n.legacyInterceptorReqResOrdering?i.unshift(e.fulfilled,e.rejected):i.push(e.fulfilled,e.rejected)});const c=[];let l;this.interceptors.response.forEach(function(e){c.push(e.fulfilled,e.rejected)});let u,f=0;if(!a){const e=[tt.bind(this),void 0];for(e.unshift(...i),e.push(...c),u=e.length,l=Promise.resolve(t);f{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null}),this.promise.then=e=>{let t;const r=new Promise(e=>{n.subscribe(e),t=e}).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e(function(e,r,o){n.reason||(n.reason=new ve(e,r,o),t(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let e;return{token:new lt(function(t){e=t}),cancel:e}}}const ut=lt;const ft={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(ft).forEach(([e,t])=>{ft[t]=e});const dt=ft;const pt=function t(n){const r=new ct(n),o=e(ct.prototype.request,r);return V.extend(o,ct.prototype,r,{allOwnKeys:!0}),V.extend(o,r,null,{allOwnKeys:!0}),o.create=function(e){return t(Le(n,e))},o}(be);pt.Axios=ct,pt.CanceledError=ve,pt.CancelToken=ut,pt.isCancel=Ae,pt.VERSION=nt,pt.toFormData=Z,pt.AxiosError=K,pt.Cancel=pt.CanceledError,pt.all=function(e){return Promise.all(e)},pt.spread=function(e){return function(t){return e.apply(null,t)}},pt.isAxiosError=function(e){return V.isObject(e)&&!0===e.isAxiosError},pt.mergeConfig=Le,pt.AxiosHeaders=Se,pt.formToJSON=e=>he(V.isHTMLForm(e)?new FormData(e):e),pt.getAdapter=Ze.getAdapter,pt.HttpStatusCode=dt,pt.default=pt;const ht=pt,{Axios:mt,AxiosError:bt,CanceledError:gt,isCancel:yt,CancelToken:wt,VERSION:Et,all:Rt,Cancel:Ot,isAxiosError:St,spread:Tt,toFormData:At,AxiosHeaders:vt,HttpStatusCode:Ct,formToJSON:Nt,getAdapter:_t,mergeConfig:xt}=ht;export{mt as Axios,bt as AxiosError,vt as AxiosHeaders,Ot as Cancel,wt as CancelToken,gt as CanceledError,Ct as HttpStatusCode,Et as VERSION,Rt as all,ht as default,Nt as formToJSON,_t as getAdapter,St as isAxiosError,yt as isCancel,xt as mergeConfig,Tt as spread,At as toFormData}; +//# sourceMappingURL=axios.min.js.map diff --git a/node_modules/axios/dist/esm/axios.min.js.map b/node_modules/axios/dist/esm/axios.min.js.map new file mode 100644 index 0000000..f43777c --- /dev/null +++ b/node_modules/axios/dist/esm/axios.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"axios.min.js","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/index.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/progressEventReducer.js","../../lib/helpers/speedometer.js","../../lib/helpers/throttle.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/cookies.js","../../lib/core/buildFullPath.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/mergeConfig.js","../../lib/helpers/resolveConfig.js","../../lib/adapters/xhr.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/composeSignals.js","../../lib/helpers/trackStream.js","../../lib/adapters/fetch.js","../../lib/adapters/adapters.js","../../lib/helpers/null.js","../../lib/core/dispatchRequest.js","../../lib/env/data.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../index.js"],"sourcesContent":["'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst { toString } = Object.prototype;\nconst { getPrototypeOf } = Object;\nconst { iterator, toStringTag } = Symbol;\n\nconst kindOf = ((cache) => (thing) => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type;\n};\n\nconst typeOfTest = (type) => (thing) => typeof thing === type;\n\n/**\n * Determine if a value is a non-null object\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst { isArray } = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return (\n val !== null &&\n !isUndefined(val) &&\n val.constructor !== null &&\n !isUndefined(val.constructor) &&\n isFunction(val.constructor.isBuffer) &&\n val.constructor.isBuffer(val)\n );\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && isArrayBuffer(val.buffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = (thing) => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (\n (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(toStringTag in val) &&\n !(iterator in val)\n );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n * \n * @param {*} value The value to test\n * \n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n return !!(value && typeof value.uri !== 'undefined');\n}\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n * \n * @param {*} formData The formData to test\n * \n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') return globalThis;\n if (typeof self !== 'undefined') return self;\n if (typeof window !== 'undefined') return window;\n if (typeof global !== 'undefined') return global;\n return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (FormDataCtor && thing instanceof FormDataCtor) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n 'ReadableStream',\n 'Request',\n 'Response',\n 'Headers',\n].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => {\n return str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n};\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, { allOwnKeys = false } = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n if (isBuffer(obj)) {\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== 'undefined') return globalThis;\n return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global;\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * const result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};\n const result = {};\n const assignValue = (val, key) => {\n // Skip dangerous property names to prevent prototype pollution\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n\n const targetKey = (caseless && findKey(result, key)) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n forEach(\n b,\n (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n value: bind(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(a, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n },\n { allOwnKeys }\n );\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xfeff) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n Object.defineProperty(constructor.prototype, 'constructor', {\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype,\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = ((TypedArray) => {\n // eslint-disable-next-line func-names\n return (thing) => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = (str) => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n ({ hasOwnProperty }) =>\n (obj, prop) =>\n hasOwnProperty.call(obj, prop)\n)(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error(\"Can not rewrite read-only method '\" + name + \"'\");\n };\n }\n });\n};\n\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\n */\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach((value) => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(\n thing &&\n isFunction(thing.append) &&\n thing[toStringTag] === 'FormData' &&\n thing[iterator]\n );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if (!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n thing &&\n (isObject(thing) || isFunction(thing)) &&\n isFunction(thing.then) &&\n isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported\n ? ((token, callbacks) => {\n _global.addEventListener(\n 'message',\n ({ source, data }) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n },\n false\n );\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, '*');\n };\n })(`axios@${Math.random()}`, [])\n : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n typeof queueMicrotask !== 'undefined'\n ? queueMicrotask.bind(_global)\n : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isReactNativeBlob,\n isReactNative,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n\n // Preserve status from the original error if not already set from response\n if (error.status != null && axiosError.status == null) {\n axiosError.status = error.status;\n }\n\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\n\n /**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\n constructor(message, code, config, request, response) {\n super(message);\n \n // Make message enumerable to maintain backward compatibility\n // The native Error constructor sets message as non-enumerable,\n // but axios < v1.13.3 had it as enumerable\n Object.defineProperty(this, 'message', {\n value: message,\n enumerable: true,\n writable: true,\n configurable: true\n });\n \n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path\n .concat(key)\n .map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n })\n .join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(\n options,\n {\n metaTokens: true,\n dots: false,\n indexes: false,\n },\n false,\n function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n }\n );\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob);\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n formData.append(renderKey(path, key, dots), convertValue(value));\n return false;\n }\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)))\n ) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) &&\n formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true\n ? renderKey([key], index, dots)\n : indexes === null\n ? key\n : key + '[]',\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable,\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result =\n !(utils.isUndefined(el) || el === null) &&\n visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00',\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder\n ? function (value) {\n return encoder.call(this, value, encode);\n }\n : encode;\n\n return this._pairs\n .map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '')\n .join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val)\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = (options && options.encode) || encode;\n\n const _options = utils.isFunction(options)\n ? {\n serialize: options,\n }\n : options;\n\n const serializeFn = _options && _options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, _options);\n } else {\n serializedParams = utils.isURLSearchParams(params)\n ? params.toString()\n : new AxiosURLSearchParams(params, _options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n * @param {Object} options The options for the interceptor, synchronous and runWhen\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null,\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false,\n legacyInterceptorReqResOrdering: true,\n};\n","import URLSearchParams from './classes/URLSearchParams.js';\nimport FormData from './classes/FormData.js';\nimport Blob from './classes/Blob.js';\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob,\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data'],\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict';\n\nexport default typeof Blob !== 'undefined' ? Blob : null;\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = (typeof navigator === 'object' && navigator) || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv =\n hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin,\n};\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map((match) => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [\n function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if (\n (isFileList = utils.isFileList(data)) ||\n contentType.indexOf('multipart/form-data') > -1\n ) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? { 'files[]': data } : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n },\n ],\n\n transformResponse: [\n function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (\n data &&\n utils.isString(data) &&\n ((forcedJSONParsing && !this.responseType) || JSONRequested)\n ) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n },\n ],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob,\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': undefined,\n },\n },\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function (value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options,\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age',\n 'authorization',\n 'content-length',\n 'content-type',\n 'etag',\n 'expires',\n 'from',\n 'host',\n 'if-modified-since',\n 'if-unmodified-since',\n 'last-modified',\n 'location',\n 'max-forwards',\n 'proxy-authorization',\n 'referer',\n 'retry-after',\n 'user-agent',\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default (rawHeaders) => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders &&\n rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header\n .trim()\n .toLowerCase()\n .replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach((methodName) => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function (arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true,\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if (\n !key ||\n self[key] === undefined ||\n _rewrite === true ||\n (_rewrite === undefined && self[key] !== false)\n ) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {},\n dest,\n key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[(key = entry[0])] = (dest = obj[key])\n ? utils.isArray(dest)\n ? [...dest, entry[1]]\n : [dest, entry[1]]\n : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(\n key &&\n this[key] !== undefined &&\n (!matcher || matchHeaderValue(this, this[key], key, matcher))\n );\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null &&\n value !== false &&\n (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON())\n .map(([header, value]) => header + ': ' + value)\n .join('\\n');\n }\n\n getSetCookie() {\n return this.get('set-cookie') || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals =\n (this[$internals] =\n this[$internals] =\n {\n accessors: {},\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor([\n 'Content-Type',\n 'Content-Length',\n 'Accept',\n 'Accept-Encoding',\n 'User-Agent',\n 'Authorization',\n]);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n },\n };\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from '../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\n\nclass CanceledError extends AxiosError {\n /**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\n}\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(\n new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][\n Math.floor(response.status / 100) - 4\n ],\n response.config,\n response.request,\n response\n )\n );\n }\n}\n","import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle((e) => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? loaded / total : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true,\n };\n\n listener(data);\n }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [\n (loaded) =>\n throttled[0]({\n lengthComputable,\n total,\n loaded,\n }),\n throttled[1],\n ];\n};\n\nexport const asyncDecorator =\n (fn) =>\n (...args) =>\n utils.asap(() => fn(...args));\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round((bytesCount * 1000) / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if (passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n })(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n )\n : () => true;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n },\n }\n : // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {},\n };\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n if (typeof url !== 'string') {\n return false;\n }\n\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst headersToObject = (thing) => (thing instanceof AxiosHeaders ? { ...thing } : thing);\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({ caseless }, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) =>\n mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n };\n\n utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(\n buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls),\n config.params,\n config.paramsSerializer\n );\n\n // HTTP basic authentication\n if (auth) {\n headers.set(\n 'Authorization',\n 'Basic ' +\n btoa(\n (auth.username || '') +\n ':' +\n (auth.password ? unescape(encodeURIComponent(auth.password)) : '')\n )\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n","import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let { responseType, onUploadProgress, onDownloadProgress } = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData =\n !responseType || responseType === 'text' || responseType === 'json'\n ? request.responseText\n : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request,\n };\n\n settle(\n function _resolve(value) {\n resolve(value);\n done();\n },\n function _reject(err) {\n reject(err);\n done();\n },\n response\n );\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (\n request.status === 0 &&\n !(request.responseURL && request.responseURL.indexOf('file:') === 0)\n ) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout\n ? 'timeout of ' + _config.timeout + 'ms exceeded'\n : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(\n new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request\n )\n );\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = (cancel) => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted\n ? onCanceled()\n : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(\n new AxiosError(\n 'Unsupported protocol ' + protocol + ':',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\n );\n return;\n }\n\n // Send the request\n request.send(requestData || null);\n });\n };\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return (match && match[1]) || '';\n}\n","import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const { length } = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(\n err instanceof AxiosError\n ? err\n : new CanceledError(err instanceof Error ? err.message : err)\n );\n }\n };\n\n let timer =\n timeout &&\n setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach((signal) => {\n signal.unsubscribe\n ? signal.unsubscribe(onabort)\n : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const { signal } = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n};\n\nexport default composeSignals;\n","export const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream(\n {\n async pull(controller) {\n try {\n const { done, value } = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = (bytes += len);\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n },\n },\n {\n highWaterMark: 2,\n }\n );\n};\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n progressEventReducer,\n progressEventDecorator,\n asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\nconst globalFetchAPI = (({ Request, Response }) => ({\n Request,\n Response,\n}))(utils.global);\n\nconst { ReadableStream, TextEncoder } = utils.global;\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false;\n }\n};\n\nconst factory = (env) => {\n env = utils.merge.call(\n {\n skipUndefined: true,\n },\n globalFetchAPI,\n env\n );\n\n const { fetch: envFetch, Request, Response } = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText =\n isFetchSupported &&\n (typeof TextEncoder === 'function'\n ? (\n (encoder) => (str) =>\n encoder.encode(str)\n )(new TextEncoder())\n : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n const supportsRequestStream =\n isRequestSupported &&\n isReadableStreamSupported &&\n test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream =\n isResponseSupported &&\n isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body),\n };\n\n isFetchSupported &&\n (() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n !resolvers[type] &&\n (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(\n `Response type '${type}' is not supported`,\n AxiosError.ERR_NOT_SUPPORT,\n config\n );\n });\n });\n })();\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions,\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals(\n [signal, cancelToken && cancelToken.toAbortSignal()],\n timeout\n );\n\n let request = null;\n\n const unsubscribe =\n composedSignal &&\n composedSignal.unsubscribe &&\n (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress &&\n supportsRequestStream &&\n method !== 'get' &&\n method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: 'half',\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: 'half',\n credentials: isCredentialsSupported ? withCredentials : undefined,\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported\n ? _fetch(request, fetchOptions)\n : _fetch(url, resolvedOptions));\n\n const isStreamResponse =\n supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach((prop) => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] =\n (onDownloadProgress &&\n progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n )) ||\n [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n response,\n config\n );\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request,\n });\n });\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError(\n 'Network Error',\n AxiosError.ERR_NETWORK,\n config,\n request,\n err && err.response\n ),\n {\n cause: err.cause || err,\n }\n );\n }\n\n throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n }\n };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const { fetch, Request, Response } = env;\n const seeds = [Request, Response, fetch];\n\n let len = seeds.length,\n i = len,\n seed,\n target,\n map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n },\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', { value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons).map(\n ([id, state]) =>\n `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length\n ? reasons.length > 1\n ? 'since :\\n' + reasons.map(renderReason).join('\\n')\n : ' ' + renderReason(reasons[0])\n : 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object}\n */\n adapters: knownAdapters,\n};\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from '../adapters/adapters.js';\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(config, config.transformRequest);\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(\n function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, config.transformResponse, response);\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n },\n function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n }\n );\n}\n","export const VERSION = \"1.13.6\";","'use strict';\n\nimport { VERSION } from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return (\n '[Axios v' +\n VERSION +\n \"] Transitional option '\" +\n opt +\n \"'\" +\n desc +\n (message ? '. ' + message : '')\n );\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError(\n 'option ' + opt + ' must be ' + result,\n AxiosError.ERR_BAD_OPTION_VALUE\n );\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\nimport transitionalDefaults from '../defaults/transitional.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager(),\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack;\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const { transitional, paramsSerializer, headers } = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(\n transitional,\n {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean),\n legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n },\n false\n );\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer,\n };\n } else {\n validator.assertOptions(\n paramsSerializer,\n {\n encode: validators.function,\n serialize: validators.function,\n },\n true\n );\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(\n config,\n {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken'),\n },\n true\n );\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(headers.common, headers[config.method]);\n\n headers &&\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => {\n delete headers[method];\n });\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n const transitional = config.transitional || transitionalDefaults;\n const legacyInterceptorReqResOrdering =\n transitional && transitional.legacyInterceptorReqResOrdering;\n\n if (legacyInterceptorReqResOrdering) {\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n } else {\n requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n }\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data,\n })\n );\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n headers: isForm\n ? {\n 'Content-Type': 'multipart/form-data',\n }\n : {},\n url,\n data,\n })\n );\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then((cancel) => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = (onfulfilled) => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise((resolve) => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel,\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport { VERSION } from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from './core/AxiosHeaders.js';\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, { allOwnKeys: true });\n\n // Copy context to instance\n utils.extend(instance, context, null, { allOwnKeys: true });\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = (thing) => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * const args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && payload.isAxiosError === true;\n}\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig,\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig,\n};\n"],"names":["bind","fn","thisArg","apply","arguments","toString","Object","prototype","getPrototypeOf","iterator","toStringTag","Symbol","kindOf","cache","create","thing","str","call","slice","toLowerCase","kindOfTest","type","typeOfTest","isArray","Array","isUndefined","isBuffer","val","constructor","isFunction","isArrayBuffer","isString","isNumber","isObject","isPlainObject","isDate","isFile","isBlob","isFileList","G","globalThis","self","window","global","FormDataCtor","FormData","undefined","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","map","forEach","obj","allOwnKeys","i","l","length","keys","getOwnPropertyNames","len","key","findKey","_key","_global","isContextDefined","context","isTypedArray","TypedArray","Uint8Array","isHTMLForm","hasOwnProperty","prop","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","isAsyncFn","_setImmediate","setImmediateSupported","setImmediate","postMessageSupported","postMessage","token","Math","random","callbacks","addEventListener","source","data","shift","cb","push","setTimeout","asap","queueMicrotask","process","nextTick","utils$1","isFormData","kind","append","isArrayBufferView","result","ArrayBuffer","isView","buffer","isBoolean","isEmptyObject","e","isReactNativeBlob","value","uri","isReactNative","formData","getParts","isStream","pipe","merge","caseless","skipUndefined","this","assignValue","targetKey","extend","a","b","defineProperty","writable","enumerable","configurable","trim","replace","stripBOM","content","charCodeAt","inherits","superConstructor","props","assign","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","position","String","lastIndex","indexOf","toArray","arr","forEachEntry","_iterator","next","done","pair","matchAll","regExp","matches","exec","hasOwnProp","freezeMethods","set","Error","toObjectSet","arrayOrString","delimiter","define","split","toCamelCase","m","p1","p2","toUpperCase","noop","toFiniteNumber","defaultValue","Number","isFinite","isSpecCompliantForm","toJSONObject","stack","visit","target","reducedValue","isThenable","then","catch","isIterable","AxiosError","from","error","code","config","request","response","customProps","axiosError","message","cause","status","super","isAxiosError","toJSON","description","number","fileName","lineNumber","columnNumber","utils","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL","AxiosError$2","isVisitable","removeBrackets","renderKey","path","dots","concat","join","predicates","test","toFormData","options","TypeError","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","JSON","stringify","some","isFlatArray","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","buildURL","url","_encode","_options","serialize","serializeFn","serializedParams","hashmarkIndex","encoder","InterceptorManager$1","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","id","clear","h","transitionalDefaults","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","legacyInterceptorReqResOrdering","platform$1","isBrowser","classes","URLSearchParams","protocols","hasBrowserEnv","document","_navigator","navigator","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","origin","location","href","platform","formDataToJSON","buildPath","isNumericKey","isLast","arrayToObject","entries","parsePropPath","defaults","transitional","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","rawValue","parser","parse","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","parseReviver","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","method","defaults$1","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","substring","parseHeaders","dest","entry","get","tokens","tokensRE","parseTokens","has","matcher","deleted","deleteHeader","normalize","format","normalized","w","char","formatHeader","targets","asStrings","getSetCookie","first","computed","accessor","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","buildAccessors","mapped","headerValue","AxiosHeaders$2","transformData","fns","isCancel","__CANCEL__","CanceledError$2","settle","resolve","reject","floor","progressEventReducer","listener","isDownloadStream","freq","bytesNotified","_speedometer","samplesCount","min","bytes","timestamps","firstSampleTS","head","tail","chunkLength","now","Date","startedAt","bytesCount","passed","round","speedometer","lastArgs","timer","timestamp","threshold","invoke","args","clearTimeout","throttle","loaded","total","lengthComputable","progressBytes","rate","progress","estimated","event","progressEventDecorator","throttled","asyncDecorator","isURLSameOrigin","isMSIE","URL","protocol","host","port","userAgent","cookies","write","expires","domain","secure","sameSite","cookie","toUTCString","read","RegExp","decodeURIComponent","remove","buildFullPath","baseURL","requestedURL","allowAbsoluteUrls","isRelativeUrl","relativeURL","combineURLs","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","configValue","resolveConfig","newConfig","auth","btoa","username","password","unescape","getHeaders","formHeaders","allowedHeaders","includes","xsrfValue","xhrAdapter","XMLHttpRequest","Promise","_config","requestData","requestHeaders","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","unsubscribe","signal","removeEventListener","onloadend","responseHeaders","getAllResponseHeaders","err","responseText","statusText","open","onreadystatechange","readyState","responseURL","onabort","onerror","msg","ontimeout","timeoutErrorMessage","setRequestHeader","upload","cancel","CanceledError","abort","subscribe","aborted","parseProtocol","send","composeSignals$1","signals","Boolean","controller","AbortController","reason","streamChunk","chunk","chunkSize","byteLength","end","pos","readStream","async","stream","asyncIterator","reader","getReader","trackStream","onProgress","onFinish","iterable","readBytes","_onFinish","ReadableStream","pull","close","loadedBytes","enqueue","return","highWaterMark","globalFetchAPI","Request","Response","TextEncoder","factory","fetch","envFetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","arrayBuffer","supportsRequestStream","duplexAccessed","hasContentType","body","duplex","supportsResponseStream","resolvers","res","resolveBodyLength","getContentLength","size","_request","getBodyLength","fetchOptions","_fetch","composedSignal","composeSignals","toAbortSignal","requestContentLength","contentTypeHeader","flush","isCredentialsSupported","resolvedOptions","credentials","isStreamResponse","responseContentLength","responseData","seedCache","Map","getFetch","seeds","seed","knownAdapters","http","xhr","fetchAdapter.getFetch","renderReason","isResolvedHandle","adapters","getAdapter","nameOrAdapter","rejectedReasons","reasons","state","s","throwIfCancellationRequested","throwIfRequested","dispatchRequest","VERSION","validators","deprecatedWarnings","validator","version","formatMessage","opt","desc","opts","console","warn","spelling","correctSpelling","assertOptions","schema","allowUnknown","Axios","instanceConfig","interceptors","InterceptorManager","configOrUrl","dummy","captureStackTrace","boolean","function","baseUrl","withXsrfToken","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","responseInterceptorChain","promise","chain","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","Axios$2","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","splice","c","CancelToken$2","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","WebServerIsDown","ConnectionTimedOut","OriginIsUnreachable","TimeoutOccurred","SslHandshakeFailed","InvalidSslCertificate","HttpStatusCode$2","axios","createInstance","defaultConfig","instance","Cancel","all","promises","spread","callback","payload","formToJSON","default","axios$1"],"mappings":";AASe,SAASA,EAAKC,EAAIC,GAC/B,OAAO,WACL,OAAOD,EAAGE,MAAMD,EAASE,UAC7B,CACA,CCPA,MAAMC,SAAEA,GAAaC,OAAOC,WACtBC,eAAEA,GAAmBF,QACrBG,SAAEA,EAAQC,YAAEA,GAAgBC,OAE5BC,GAAWC,EAGdP,OAAOQ,OAAO,MAHWC,IAC1B,MAAMC,EAAMX,EAASY,KAAKF,GAC1B,OAAOF,EAAMG,KAASH,EAAMG,GAAOA,EAAIE,MAAM,GAAI,GAAGC,iBAFvC,IAAEN,EAKjB,MAAMO,EAAcC,IAClBA,EAAOA,EAAKF,cACJJ,GAAUH,EAAOG,KAAWM,GAGhCC,EAAcD,GAAUN,UAAiBA,IAAUM,GASnDE,QAAEA,GAAYC,MASdC,EAAcH,EAAW,aAS/B,SAASI,EAASC,GAChB,OACU,OAARA,IACCF,EAAYE,IACO,OAApBA,EAAIC,cACHH,EAAYE,EAAIC,cACjBC,EAAWF,EAAIC,YAAYF,WAC3BC,EAAIC,YAAYF,SAASC,EAE7B,CASA,MAAMG,EAAgBV,EAAW,eA0BjC,MAAMW,EAAWT,EAAW,UAQtBO,EAAaP,EAAW,YASxBU,EAAWV,EAAW,UAStBW,EAAYlB,GAAoB,OAAVA,GAAmC,iBAAVA,EAiB/CmB,EAAiBP,IACrB,GAAoB,WAAhBf,EAAOe,GACT,OAAO,EAGT,MAAMpB,EAAYC,EAAemB,GACjC,QACiB,OAAdpB,GACCA,IAAcD,OAAOC,WACgB,OAArCD,OAAOE,eAAeD,IACtBG,KAAeiB,GACflB,KAAYkB,IAgCZQ,EAASf,EAAW,QASpBgB,EAAShB,EAAW,QAkCpBiB,EAASjB,EAAW,QASpBkB,EAAalB,EAAW,YA0B9B,MAAMmB,EAPsB,oBAAfC,WAAmCA,WAC1B,oBAATC,KAA6BA,KAClB,oBAAXC,OAA+BA,OACpB,oBAAXC,OAA+BA,OACnC,GAIHC,OAAqC,IAAfL,EAAEM,SAA2BN,EAAEM,cAAWC,EAsBhEC,EAAoB3B,EAAW,oBAE9B4B,EAAkBC,EAAWC,EAAYC,GAAa,CAC3D,iBACA,UACA,WACA,WACAC,IAAIhC,GA4BN,SAASiC,EAAQC,EAAKrD,GAAIsD,WAAEA,GAAa,GAAU,IAEjD,GAAID,QACF,OAGF,IAAIE,EACAC,EAQJ,GALmB,iBAARH,IAETA,EAAM,CAACA,IAGL/B,EAAQ+B,GAEV,IAAKE,EAAI,EAAGC,EAAIH,EAAII,OAAQF,EAAIC,EAAGD,IACjCvD,EAAGgB,KAAK,KAAMqC,EAAIE,GAAIA,EAAGF,OAEtB,CAEL,GAAI5B,EAAS4B,GACX,OAIF,MAAMK,EAAOJ,EAAajD,OAAOsD,oBAAoBN,GAAOhD,OAAOqD,KAAKL,GAClEO,EAAMF,EAAKD,OACjB,IAAII,EAEJ,IAAKN,EAAI,EAAGA,EAAIK,EAAKL,IACnBM,EAAMH,EAAKH,GACXvD,EAAGgB,KAAK,KAAMqC,EAAIQ,GAAMA,EAAKR,EAEhC,CACH,CAUA,SAASS,EAAQT,EAAKQ,GACpB,GAAIpC,EAAS4B,GACX,OAAO,KAGTQ,EAAMA,EAAI3C,cACV,MAAMwC,EAAOrD,OAAOqD,KAAKL,GACzB,IACIU,EADAR,EAAIG,EAAKD,OAEb,KAAOF,KAAM,GAEX,GADAQ,EAAOL,EAAKH,GACRM,IAAQE,EAAK7C,cACf,OAAO6C,EAGX,OAAO,IACT,CAEA,MAAMC,EAEsB,oBAAfzB,WAAmCA,WACvB,oBAATC,KAAuBA,KAAyB,oBAAXC,OAAyBA,OAASC,OAGjFuB,EAAoBC,IAAa1C,EAAY0C,IAAYA,IAAYF,EA0D3E,MAgJMG,GAAiBC,EAKE,oBAAfC,YAA8B9D,EAAe8D,YAH7CvD,GACCsD,GAActD,aAAiBsD,GAHrB,IAAEA,EAevB,MAiCME,EAAanD,EAAW,mBASxBoD,EAAiB,GAClBA,oBACH,CAAClB,EAAKmB,IACJD,EAAevD,KAAKqC,EAAKmB,GAHN,CAIrBnE,OAAOC,WASHmE,EAAWtD,EAAW,UAEtBuD,EAAoB,CAACrB,EAAKsB,KAC9B,MAAMC,EAAcvE,OAAOwE,0BAA0BxB,GAC/CyB,EAAqB,CAAA,EAE3B1B,EAAQwB,EAAa,CAACG,EAAYC,KAChC,IAAIC,GAC2C,KAA1CA,EAAMN,EAAQI,EAAYC,EAAM3B,MACnCyB,EAAmBE,GAAQC,GAAOF,KAItC1E,OAAO6E,iBAAiB7B,EAAKyB,IAoF/B,MAyCMK,EAAYhE,EAAW,iBAyBvBiE,GAAkBC,EAuBG,mBAAjBC,aAvBqCC,EAuBR3D,EAAWoC,EAAQwB,aAtBpDH,EACKC,aAGFC,GACDE,EAeC,SAASC,KAAKC,WAfRC,EAeoB,GAd3B5B,EAAQ6B,iBACN,UACA,EAAGC,SAAQC,WACLD,IAAW9B,GAAW+B,IAASN,GACjCG,EAAUnC,QAAUmC,EAAUI,OAAVJ,KAGxB,GAGMK,IACNL,EAAUM,KAAKD,GACfjC,EAAQwB,YAAYC,EAAO,OAG9BQ,GAAOE,WAAWF,IAtBH,IAAEZ,EAAuBE,EAMvCE,EAAOG,EAyBf,MAAMQ,EACsB,oBAAnBC,eACHA,eAAetG,KAAKiE,GACA,oBAAZsC,SAA2BA,QAAQC,UAAanB,EAM/CoB,EAAA,CACblF,UACAO,gBACAJ,WACAgF,WA5lBkB3F,IAClB,IAAI4F,EACJ,OAAO5F,IACJ6B,GAAgB7B,aAAiB6B,GAChCf,EAAWd,EAAM6F,UACY,cAA1BD,EAAO/F,EAAOG,KAEL,WAAT4F,GAAqB9E,EAAWd,EAAMV,WAAkC,sBAArBU,EAAMV,cAslBhEwG,kBArxBF,SAA2BlF,GACzB,IAAImF,EAMJ,OAJEA,EADyB,oBAAhBC,aAA+BA,YAAYC,OAC3CD,YAAYC,OAAOrF,GAEnBA,GAAOA,EAAIsF,QAAUnF,EAAcH,EAAIsF,QAE3CH,CACT,EA8wBE/E,WACAC,WACAkF,UAruBiBnG,IAAoB,IAAVA,IAA4B,IAAVA,EAsuB7CkB,WACAC,gBACAiF,cAzsBqBxF,IAErB,IAAKM,EAASN,IAAQD,EAASC,GAC7B,OAAO,EAGT,IACE,OAAmC,IAA5BrB,OAAOqD,KAAKhC,GAAK+B,QAAgBpD,OAAOE,eAAemB,KAASrB,OAAOC,SAC/E,CAAC,MAAO6G,GAEP,OAAO,CACR,GA+rBDpE,mBACAC,YACAC,aACAC,YACA1B,cACAU,SACAC,SACAiF,kBAtqByBC,MACfA,QAA8B,IAAdA,EAAMC,KAsqBhCC,cA3pBqBC,GAAaA,QAAyC,IAAtBA,EAASC,SA4pB9DrF,SACAqC,WACF7C,WAAEA,EACA8F,SApoBgBhG,GAAQM,EAASN,IAAQE,EAAWF,EAAIiG,MAqoBxD7E,oBACAqB,eACA9B,aACAe,UACAwE,MApeF,SAASA,IACP,MAAMC,SAAEA,EAAQC,cAAEA,GAAmB7D,EAAiB8D,OAASA,MAAS,GAClElB,EAAS,CAAA,EACTmB,EAAc,CAACtG,EAAKmC,KAExB,GAAY,cAARA,GAA+B,gBAARA,GAAiC,cAARA,EAClD,OAGF,MAAMoE,EAAaJ,GAAY/D,EAAQ+C,EAAQhD,IAASA,EACpD5B,EAAc4E,EAAOoB,KAAehG,EAAcP,GACpDmF,EAAOoB,GAAaL,EAAMf,EAAOoB,GAAYvG,GACpCO,EAAcP,GACvBmF,EAAOoB,GAAaL,EAAM,CAAE,EAAElG,GACrBJ,EAAQI,GACjBmF,EAAOoB,GAAavG,EAAIT,QACd6G,GAAkBtG,EAAYE,KACxCmF,EAAOoB,GAAavG,IAIxB,IAAK,IAAI6B,EAAI,EAAGC,EAAIrD,UAAUsD,OAAQF,EAAIC,EAAGD,IAC3CpD,UAAUoD,IAAMH,EAAQjD,UAAUoD,GAAIyE,GAExC,OAAOnB,CACT,EA4cEqB,OA/ba,CAACC,EAAGC,EAAGnI,GAAWqD,cAAe,MAC9CF,EACEgF,EACA,CAAC1G,EAAKmC,KACA5D,GAAW2B,EAAWF,GACxBrB,OAAOgI,eAAeF,EAAGtE,EAAK,CAC5BwD,MAAOtH,EAAK2B,EAAKzB,GACjBqI,UAAU,EACVC,YAAY,EACZC,cAAc,IAGhBnI,OAAOgI,eAAeF,EAAGtE,EAAK,CAC5BwD,MAAO3F,EACP4G,UAAU,EACVC,YAAY,EACZC,cAAc,KAIpB,CAAElF,eAEG6E,GA0aPM,KAnlBY1H,GACLA,EAAI0H,KAAO1H,EAAI0H,OAAS1H,EAAI2H,QAAQ,qCAAsC,IAmlBjFC,SAjagBC,IACc,QAA1BA,EAAQC,WAAW,KACrBD,EAAUA,EAAQ3H,MAAM,IAEnB2H,GA8ZPE,SAlZe,CAACnH,EAAaoH,EAAkBC,EAAOpE,KACtDjD,EAAYrB,UAAYD,OAAOQ,OAAOkI,EAAiBzI,UAAWsE,GAClEvE,OAAOgI,eAAe1G,EAAYrB,UAAW,cAAe,CAC1D+G,MAAO1F,EACP2G,UAAU,EACVC,YAAY,EACZC,cAAc,IAEhBnI,OAAOgI,eAAe1G,EAAa,QAAS,CAC1C0F,MAAO0B,EAAiBzI,YAE1B0I,GAAS3I,OAAO4I,OAAOtH,EAAYrB,UAAW0I,IAwY9CE,aA5XmB,CAACC,EAAWC,EAASC,EAAQC,KAChD,IAAIN,EACAzF,EACAiB,EACJ,MAAM+E,EAAS,CAAA,EAIf,GAFAH,EAAUA,GAAW,GAEJ,MAAbD,EAAmB,OAAOC,EAE9B,EAAG,CAGD,IAFAJ,EAAQ3I,OAAOsD,oBAAoBwF,GACnC5F,EAAIyF,EAAMvF,OACHF,KAAM,GACXiB,EAAOwE,EAAMzF,GACP+F,IAAcA,EAAW9E,EAAM2E,EAAWC,IAAcG,EAAO/E,KACnE4E,EAAQ5E,GAAQ2E,EAAU3E,GAC1B+E,EAAO/E,IAAQ,GAGnB2E,GAAuB,IAAXE,GAAoB9I,EAAe4I,EACnD,OAAWA,KAAeE,GAAUA,EAAOF,EAAWC,KAAaD,IAAc9I,OAAOC,WAEtF,OAAO8I,GAsWPzI,SACAQ,aACAqI,SA5Ve,CAACzI,EAAK0I,EAAcC,KACnC3I,EAAM4I,OAAO5I,SACI8B,IAAb6G,GAA0BA,EAAW3I,EAAI0C,UAC3CiG,EAAW3I,EAAI0C,QAEjBiG,GAAYD,EAAahG,OACzB,MAAMmG,EAAY7I,EAAI8I,QAAQJ,EAAcC,GAC5C,OAAsB,IAAfE,GAAoBA,IAAcF,GAsVzCI,QA5UehJ,IACf,IAAKA,EAAO,OAAO,KACnB,GAAIQ,EAAQR,GAAQ,OAAOA,EAC3B,IAAIyC,EAAIzC,EAAM2C,OACd,IAAK1B,EAASwB,GAAI,OAAO,KACzB,MAAMwG,EAAM,IAAIxI,MAAMgC,GACtB,KAAOA,KAAM,GACXwG,EAAIxG,GAAKzC,EAAMyC,GAEjB,OAAOwG,GAoUPC,aAzSmB,CAAC3G,EAAKrD,KACzB,MAEMiK,GAFY5G,GAAOA,EAAI7C,IAEDQ,KAAKqC,GAEjC,IAAIwD,EAEJ,MAAQA,EAASoD,EAAUC,UAAYrD,EAAOsD,MAAM,CAClD,MAAMC,EAAOvD,EAAOQ,MACpBrH,EAAGgB,KAAKqC,EAAK+G,EAAK,GAAIA,EAAK,GAC5B,GAgSDC,SArRe,CAACC,EAAQvJ,KACxB,IAAIwJ,EACJ,MAAMR,EAAM,GAEZ,KAAwC,QAAhCQ,EAAUD,EAAOE,KAAKzJ,KAC5BgJ,EAAI7D,KAAKqE,GAGX,OAAOR,GA8QPzF,aACAC,iBACAkG,WAAYlG,EACZG,oBACAgG,cAnOqBrH,IACrBqB,EAAkBrB,EAAK,CAAC0B,EAAYC,KAElC,GAAIpD,EAAWyB,KAA6D,IAArD,CAAC,YAAa,SAAU,UAAUwG,QAAQ7E,GAC/D,OAAO,EAGT,MAAMqC,EAAQhE,EAAI2B,GAEbpD,EAAWyF,KAEhBtC,EAAWwD,YAAa,EAEpB,aAAcxD,EAChBA,EAAWuD,UAAW,EAInBvD,EAAW4F,MACd5F,EAAW4F,IAAM,KACf,MAAMC,MAAM,qCAAuC5F,EAAO,WAgNhE6F,YAlMkB,CAACC,EAAeC,KAClC,MAAM1H,EAAM,CAAA,EAEN2H,EAAUjB,IACdA,EAAI3G,QAASiE,IACXhE,EAAIgE,IAAS,KAMjB,OAFA/F,EAAQwJ,GAAiBE,EAAOF,GAAiBE,EAAOrB,OAAOmB,GAAeG,MAAMF,IAE7E1H,GAwLP6H,YA9QmBnK,GACZA,EAAIG,cAAcwH,QAAQ,wBAAyB,SAAkByC,EAAGC,EAAIC,GACjF,OAAOD,EAAGE,cAAgBD,CAC9B,GA4QEE,KAtLW,OAuLXC,eArLqB,CAACnE,EAAOoE,IACb,MAATpE,GAAiBqE,OAAOC,SAAUtE,GAASA,GAAUA,EAAQoE,EAqLpE3H,UACApB,OAAQsB,EACRC,mBACA2H,oBA9KF,SAA6B9K,GAC3B,SACEA,GACAc,EAAWd,EAAM6F,SACM,aAAvB7F,EAAML,IACNK,EAAMN,GAEV,EAwKEqL,aAhKoBxI,IACpB,MAAMyI,EAAQ,IAAIvK,MAAM,IAElBwK,EAAQ,CAACjG,EAAQvC,KACrB,GAAIvB,EAAS8D,GAAS,CACpB,GAAIgG,EAAMjC,QAAQ/D,IAAW,EAC3B,OAIF,GAAIrE,EAASqE,GACX,OAAOA,EAGT,KAAM,WAAYA,GAAS,CACzBgG,EAAMvI,GAAKuC,EACX,MAAMkG,EAAS1K,EAAQwE,GAAU,GAAK,CAAA,EAStC,OAPA1C,EAAQ0C,EAAQ,CAACuB,EAAOxD,KACtB,MAAMoI,EAAeF,EAAM1E,EAAO9D,EAAI,IACrC/B,EAAYyK,KAAkBD,EAAOnI,GAAOoI,KAG/CH,EAAMvI,QAAKV,EAEJmJ,CACR,CACF,CAED,OAAOlG,GAGT,OAAOiG,EAAM1I,EAAK,IAiIlB8B,YACA+G,WAjHkBpL,GAClBA,IACCkB,EAASlB,IAAUc,EAAWd,KAC/Bc,EAAWd,EAAMqL,OACjBvK,EAAWd,EAAMsL,OA8GjB9G,aAAcF,EACdgB,OACAiG,WA7DkBvL,GAAmB,MAATA,GAAiBc,EAAWd,EAAMN,KCp1BhE,MAAM8L,UAAmB1B,MACvB,WAAO2B,CAAKC,EAAOC,EAAMC,EAAQC,EAASC,EAAUC,GAClD,MAAMC,EAAa,IAAIR,EAAWE,EAAMO,QAASN,GAAQD,EAAMC,KAAMC,EAAQC,EAASC,GAUtF,OATAE,EAAWE,MAAQR,EACnBM,EAAW9H,KAAOwH,EAAMxH,KAGJ,MAAhBwH,EAAMS,QAAuC,MAArBH,EAAWG,SACrCH,EAAWG,OAAST,EAAMS,QAG5BJ,GAAexM,OAAO4I,OAAO6D,EAAYD,GAClCC,CACR,CAaC,WAAAnL,CAAYoL,EAASN,EAAMC,EAAQC,EAASC,GAC1CM,MAAMH,GAKN1M,OAAOgI,eAAeN,KAAM,UAAW,CACnCV,MAAO0F,EACPxE,YAAY,EACZD,UAAU,EACVE,cAAc,IAGlBT,KAAK/C,KAAO,aACZ+C,KAAKoF,cAAe,EACpBV,IAAS1E,KAAK0E,KAAOA,GACrBC,IAAW3E,KAAK2E,OAASA,GACzBC,IAAY5E,KAAK4E,QAAUA,GACvBC,IACA7E,KAAK6E,SAAWA,EAChB7E,KAAKkF,OAASL,EAASK,OAE5B,CAEH,MAAAG,GACE,MAAO,CAELL,QAAShF,KAAKgF,QACd/H,KAAM+C,KAAK/C,KAEXqI,YAAatF,KAAKsF,YAClBC,OAAQvF,KAAKuF,OAEbC,SAAUxF,KAAKwF,SACfC,WAAYzF,KAAKyF,WACjBC,aAAc1F,KAAK0F,aACnB3B,MAAO/D,KAAK+D,MAEZY,OAAQgB,EAAM7B,aAAa9D,KAAK2E,QAChCD,KAAM1E,KAAK0E,KACXQ,OAAQlF,KAAKkF,OAEhB,EAIHX,EAAWqB,qBAAuB,uBAClCrB,EAAWsB,eAAiB,iBAC5BtB,EAAWuB,aAAe,eAC1BvB,EAAWwB,UAAY,YACvBxB,EAAWyB,YAAc,cACzBzB,EAAW0B,0BAA4B,4BACvC1B,EAAW2B,eAAiB,iBAC5B3B,EAAW4B,iBAAmB,mBAC9B5B,EAAW6B,gBAAkB,kBAC7B7B,EAAW8B,aAAe,eAC1B9B,EAAW+B,gBAAkB,kBAC7B/B,EAAWgC,gBAAkB,kBAE7B,MAAAC,EAAejC,EC3Ef,SAASkC,EAAY1N,GACnB,OAAO4M,EAAMzL,cAAcnB,IAAU4M,EAAMpM,QAAQR,EACrD,CASA,SAAS2N,EAAe5K,GACtB,OAAO6J,EAAMlE,SAAS3F,EAAK,MAAQA,EAAI5C,MAAM,GAAI,GAAK4C,CACxD,CAWA,SAAS6K,EAAUC,EAAM9K,EAAK+K,GAC5B,OAAKD,EACEA,EACJE,OAAOhL,GACPV,IAAI,SAAcsC,EAAOlC,GAGxB,OADAkC,EAAQgJ,EAAehJ,IACfmJ,GAAQrL,EAAI,IAAMkC,EAAQ,IAAMA,CAC9C,GACKqJ,KAAKF,EAAO,IAAM,IARH/K,CASpB,CAaA,MAAMkL,EAAarB,EAAMxE,aAAawE,EAAO,CAAE,EAAE,KAAM,SAAgBlJ,GACrE,MAAO,WAAWwK,KAAKxK,EACzB,GAyBA,SAASyK,EAAW5L,EAAKmE,EAAU0H,GACjC,IAAKxB,EAAM1L,SAASqB,GAClB,MAAM,IAAI8L,UAAU,4BAItB3H,EAAWA,GAAY,IAAyB,SAiBhD,MAAM4H,GAdNF,EAAUxB,EAAMxE,aACdgG,EACA,CACEE,YAAY,EACZR,MAAM,EACNS,SAAS,IAEX,EACA,SAAiBC,EAAQxJ,GAEvB,OAAQ4H,EAAMlM,YAAYsE,EAAOwJ,GAClC,IAGwBF,WAErBG,EAAUL,EAAQK,SAAWC,EAC7BZ,EAAOM,EAAQN,KACfS,EAAUH,EAAQG,QAElBI,GADQP,EAAQQ,MAAyB,oBAATA,MAAwBA,OACrChC,EAAM9B,oBAAoBpE,GAEnD,IAAKkG,EAAM9L,WAAW2N,GACpB,MAAM,IAAIJ,UAAU,8BAGtB,SAASQ,EAAatI,GACpB,GAAc,OAAVA,EAAgB,MAAO,GAE3B,GAAIqG,EAAMxL,OAAOmF,GACf,OAAOA,EAAMuI,cAGf,GAAIlC,EAAMzG,UAAUI,GAClB,OAAOA,EAAMjH,WAGf,IAAKqP,GAAW/B,EAAMtL,OAAOiF,GAC3B,MAAM,IAAIiF,EAAW,gDAGvB,OAAIoB,EAAM7L,cAAcwF,IAAUqG,EAAMvJ,aAAakD,GAC5CoI,GAA2B,mBAATC,KAAsB,IAAIA,KAAK,CAACrI,IAAUwI,OAAOtD,KAAKlF,GAG1EA,CACR,CAYD,SAASmI,EAAenI,EAAOxD,EAAK8K,GAClC,IAAI5E,EAAM1C,EAEV,GAAIqG,EAAMnG,cAAcC,IAAakG,EAAMtG,kBAAkBC,GAE3D,OADAG,EAASb,OAAO+H,EAAUC,EAAM9K,EAAK+K,GAAOe,EAAatI,KAClD,EAGT,GAAIA,IAAUsH,GAAyB,iBAAVtH,EAC3B,GAAIqG,EAAMlE,SAAS3F,EAAK,MAEtBA,EAAMuL,EAAavL,EAAMA,EAAI5C,MAAM,GAAI,GAEvCoG,EAAQyI,KAAKC,UAAU1I,QAClB,GACJqG,EAAMpM,QAAQ+F,IAjHvB,SAAqB0C,GACnB,OAAO2D,EAAMpM,QAAQyI,KAASA,EAAIiG,KAAKxB,EACzC,CA+GiCyB,CAAY5I,KACnCqG,EAAMrL,WAAWgF,IAAUqG,EAAMlE,SAAS3F,EAAK,SAAWkG,EAAM2D,EAAM5D,QAAQzC,IAiBhF,OAdAxD,EAAM4K,EAAe5K,GAErBkG,EAAI3G,QAAQ,SAAc8M,EAAIC,IAC1BzC,EAAMlM,YAAY0O,IAAc,OAAPA,GACzB1I,EAASb,QAEK,IAAZ0I,EACIX,EAAU,CAAC7K,GAAMsM,EAAOvB,GACZ,OAAZS,EACExL,EACAA,EAAM,KACZ8L,EAAaO,GAE3B,IACe,EAIX,QAAI1B,EAAYnH,KAIhBG,EAASb,OAAO+H,EAAUC,EAAM9K,EAAK+K,GAAOe,EAAatI,KAElD,EACR,CAED,MAAMyE,EAAQ,GAERsE,EAAiB/P,OAAO4I,OAAO8F,EAAY,CAC/CS,iBACAG,eACAnB,gBAyBF,IAAKd,EAAM1L,SAASqB,GAClB,MAAM,IAAI8L,UAAU,0BAKtB,OA5BA,SAASkB,EAAMhJ,EAAOsH,GACpB,IAAIjB,EAAMlM,YAAY6F,GAAtB,CAEA,IAA8B,IAA1ByE,EAAMjC,QAAQxC,GAChB,MAAMuD,MAAM,kCAAoC+D,EAAKG,KAAK,MAG5DhD,EAAM5F,KAAKmB,GAEXqG,EAAMtK,QAAQiE,EAAO,SAAc6I,EAAIrM,IAKtB,OAHX6J,EAAMlM,YAAY0O,IAAc,OAAPA,IAC3BX,EAAQvO,KAAKwG,EAAU0I,EAAIxC,EAAM5L,SAAS+B,GAAOA,EAAI4E,OAAS5E,EAAK8K,EAAMyB,KAGzEC,EAAMH,EAAIvB,EAAOA,EAAKE,OAAOhL,GAAO,CAACA,GAE7C,GAEIiI,EAAMwE,KAlB+B,CAmBtC,CAMDD,CAAMhN,GAECmE,CACT,CClOA,SAAS+I,GAAOxP,GACd,MAAMyP,EAAU,CACd,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,IACP,MAAO,MAET,OAAOC,mBAAmB1P,GAAK2H,QAAQ,mBAAoB,SAAkBgI,GAC3E,OAAOF,EAAQE,EACnB,EACA,CAUA,SAASC,GAAqBC,EAAQ1B,GACpCnH,KAAK8I,OAAS,GAEdD,GAAU3B,EAAW2B,EAAQ7I,KAAMmH,EACrC,CAEA,MAAM5O,GAAYqQ,GAAqBrQ,UC5BvC,SAASiQ,GAAO7O,GACd,OAAO+O,mBAAmB/O,GACvBgH,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,IACrB,CAWe,SAASoI,GAASC,EAAKH,EAAQ1B,GAC5C,IAAK0B,EACH,OAAOG,EAGT,MAAMC,EAAW9B,GAAWA,EAAQqB,QAAWA,GAEzCU,EAAWvD,EAAM9L,WAAWsN,GAC9B,CACEgC,UAAWhC,GAEbA,EAEEiC,EAAcF,GAAYA,EAASC,UAEzC,IAAIE,EAUJ,GAPEA,EADED,EACiBA,EAAYP,EAAQK,GAEpBvD,EAAM5K,kBAAkB8N,GACvCA,EAAOxQ,WACP,IAAIuQ,GAAqBC,EAAQK,GAAU7Q,SAAS4Q,GAGtDI,EAAkB,CACpB,MAAMC,EAAgBN,EAAIlH,QAAQ,MAEX,IAAnBwH,IACFN,EAAMA,EAAI9P,MAAM,EAAGoQ,IAErBN,KAA8B,IAAtBA,EAAIlH,QAAQ,KAAc,IAAM,KAAOuH,CAChD,CAED,OAAOL,CACT,CDtBAzQ,GAAUqG,OAAS,SAAgB3B,EAAMqC,GACvCU,KAAK8I,OAAO3K,KAAK,CAAClB,EAAMqC,GAC1B,EAEA/G,GAAUF,SAAW,SAAkBkR,GACrC,MAAMN,EAAUM,EACZ,SAAUjK,GACR,OAAOiK,EAAQtQ,KAAK+G,KAAMV,EAAOkJ,GAClC,EACDA,GAEJ,OAAOxI,KAAK8I,OACT1N,IAAI,SAAciH,GACjB,OAAO4G,EAAQ5G,EAAK,IAAM,IAAM4G,EAAQ5G,EAAK,GAC9C,EAAE,IACF0E,KAAK,IACV,EEYA,MAAAyC,GAnEA,MACE,WAAA5P,GACEoG,KAAKyJ,SAAW,EACjB,CAWD,GAAAC,CAAIC,EAAWC,EAAUzC,GAOvB,OANAnH,KAAKyJ,SAAStL,KAAK,CACjBwL,YACAC,WACAC,cAAa1C,GAAUA,EAAQ0C,YAC/BC,QAAS3C,EAAUA,EAAQ2C,QAAU,OAEhC9J,KAAKyJ,SAAS/N,OAAS,CAC/B,CASD,KAAAqO,CAAMC,GACAhK,KAAKyJ,SAASO,KAChBhK,KAAKyJ,SAASO,GAAM,KAEvB,CAOD,KAAAC,GACMjK,KAAKyJ,WACPzJ,KAAKyJ,SAAW,GAEnB,CAYD,OAAApO,CAAQpD,GACN0N,EAAMtK,QAAQ2E,KAAKyJ,SAAU,SAAwBS,GACzC,OAANA,GACFjS,EAAGiS,EAEX,EACG,GClEYC,GAAA,CACbC,mBAAmB,EACnBC,mBAAmB,EACnBC,qBAAqB,EACrBC,iCAAiC,GCFpBC,GAAA,CACbC,WAAW,EACXC,QAAS,CACXC,gBCJ0C,oBAApBA,gBAAkCA,gBAAkB/B,GDK1E/N,SENmC,oBAAbA,SAA2BA,SAAW,KFO5D8M,KGP+B,oBAATA,KAAuBA,KAAO,MHSlDiD,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAQ,MAAO,SIXhDC,GAAkC,oBAAXnQ,QAA8C,oBAAboQ,SAExDC,GAAmC,iBAAdC,WAA0BA,gBAAclQ,EAmB7DmQ,GACJJ,MACEE,IAAc,CAAC,cAAe,eAAgB,MAAMjJ,QAAQiJ,GAAWG,SAAW,GAWhFC,GAE2B,oBAAtBC,mBAEP3Q,gBAAgB2Q,mBACc,mBAAvB3Q,KAAK4Q,cAIVC,GAAUT,IAAiBnQ,OAAO6Q,SAASC,MAAS,mBCxC3CC,GAAA,0IAEVA,IC2CL,SAASC,GAAejM,GACtB,SAASkM,EAAU/E,EAAMtH,EAAO2E,EAAQmE,GACtC,IAAInL,EAAO2J,EAAKwB,KAEhB,GAAa,cAATnL,EAAsB,OAAO,EAEjC,MAAM2O,EAAejI,OAAOC,UAAU3G,GAChC4O,EAASzD,GAASxB,EAAKlL,OAG7B,GAFAuB,GAAQA,GAAQ0I,EAAMpM,QAAQ0K,GAAUA,EAAOvI,OAASuB,EAEpD4O,EAOF,OANIlG,EAAMjD,WAAWuB,EAAQhH,GAC3BgH,EAAOhH,GAAQ,CAACgH,EAAOhH,GAAOqC,GAE9B2E,EAAOhH,GAAQqC,GAGTsM,EAGL3H,EAAOhH,IAAU0I,EAAM1L,SAASgK,EAAOhH,MAC1CgH,EAAOhH,GAAQ,IASjB,OANe0O,EAAU/E,EAAMtH,EAAO2E,EAAOhH,GAAOmL,IAEtCzC,EAAMpM,QAAQ0K,EAAOhH,MACjCgH,EAAOhH,GA/Cb,SAAuB+E,GACrB,MAAM1G,EAAM,CAAA,EACNK,EAAOrD,OAAOqD,KAAKqG,GACzB,IAAIxG,EACJ,MAAMK,EAAMF,EAAKD,OACjB,IAAII,EACJ,IAAKN,EAAI,EAAGA,EAAIK,EAAKL,IACnBM,EAAMH,EAAKH,GACXF,EAAIQ,GAAOkG,EAAIlG,GAEjB,OAAOR,CACT,CAoCqBwQ,CAAc7H,EAAOhH,MAG9B2O,CACT,CAED,GAAIjG,EAAMjH,WAAWe,IAAakG,EAAM9L,WAAW4F,EAASsM,SAAU,CACpE,MAAMzQ,EAAM,CAAA,EAMZ,OAJAqK,EAAM1D,aAAaxC,EAAU,CAACxC,EAAMqC,KAClCqM,EA1EN,SAAuB1O,GAKrB,OAAO0I,EAAMrD,SAAS,gBAAiBrF,GAAM7B,IAAKuN,GAC5B,OAAbA,EAAM,GAAc,GAAKA,EAAM,IAAMA,EAAM,GAEtD,CAkEgBqD,CAAc/O,GAAOqC,EAAOhE,EAAK,KAGtCA,CACR,CAED,OAAO,IACT,CCzDA,MAAM2Q,GAAW,CACfC,aAAc/B,GAEdgC,QAAS,CAAC,MAAO,OAAQ,SAEzBC,iBAAkB,CAChB,SAA0BpO,EAAMqO,GAC9B,MAAMC,EAAcD,EAAQE,kBAAoB,GAC1CC,EAAqBF,EAAYxK,QAAQ,qBAAuB,EAChE2K,EAAkB9G,EAAM1L,SAAS+D,GAEnCyO,GAAmB9G,EAAMpJ,WAAWyB,KACtCA,EAAO,IAAInD,SAASmD,IAKtB,GAFmB2H,EAAMjH,WAAWV,GAGlC,OAAOwO,EAAqBzE,KAAKC,UAAU0D,GAAe1N,IAASA,EAGrE,GACE2H,EAAM7L,cAAckE,IACpB2H,EAAMjM,SAASsE,IACf2H,EAAMhG,SAAS3B,IACf2H,EAAMvL,OAAO4D,IACb2H,EAAMtL,OAAO2D,IACb2H,EAAM3K,iBAAiBgD,GAEvB,OAAOA,EAET,GAAI2H,EAAM9G,kBAAkBb,GAC1B,OAAOA,EAAKiB,OAEd,GAAI0G,EAAM5K,kBAAkBiD,GAE1B,OADAqO,EAAQK,eAAe,mDAAmD,GACnE1O,EAAK3F,WAGd,IAAIiC,EAEJ,GAAImS,EAAiB,CACnB,GAAIH,EAAYxK,QAAQ,sCAAwC,EAC9D,OCxEK,SAA0B9D,EAAMmJ,GAC7C,OAAOD,EAAWlJ,EAAM,IAAIyN,GAASf,QAAQC,gBAAmB,CAC9DnD,QAAS,SAAUlI,EAAOxD,EAAK8K,EAAM+F,GACnC,OAAIlB,GAASmB,QAAUjH,EAAMjM,SAAS4F,IACpCU,KAAKpB,OAAO9C,EAAKwD,EAAMjH,SAAS,YACzB,GAGFsU,EAAQlF,eAAetP,MAAM6H,KAAM5H,UAC3C,KACE+O,GAEP,CD4DiB0F,CAAiB7O,EAAMgC,KAAK8M,gBAAgBzU,WAGrD,IACGiC,EAAaqL,EAAMrL,WAAW0D,KAC/BsO,EAAYxK,QAAQ,wBAA0B,EAC9C,CACA,MAAMiL,EAAY/M,KAAKgN,KAAOhN,KAAKgN,IAAInS,SAEvC,OAAOqM,EACL5M,EAAa,CAAE,UAAW0D,GAASA,EACnC+O,GAAa,IAAIA,EACjB/M,KAAK8M,eAER,CACF,CAED,OAAIL,GAAmBD,GACrBH,EAAQK,eAAe,oBAAoB,GA5EnD,SAAyBO,EAAUC,EAAQ3D,GACzC,GAAI5D,EAAM5L,SAASkT,GACjB,IAEE,OADCC,GAAUnF,KAAKoF,OAAOF,GAChBtH,EAAMjF,KAAKuM,EACnB,CAAC,MAAO7N,GACP,GAAe,gBAAXA,EAAEnC,KACJ,MAAMmC,CAET,CAGH,OAAQmK,GAAWxB,KAAKC,WAAWiF,EACrC,CAgEeG,CAAgBpP,IAGlBA,CACR,GAGHqP,kBAAmB,CACjB,SAA2BrP,GACzB,MAAMkO,EAAelM,KAAKkM,cAAgBD,GAASC,aAC7C7B,EAAoB6B,GAAgBA,EAAa7B,kBACjDiD,EAAsC,SAAtBtN,KAAKuN,aAE3B,GAAI5H,EAAMzK,WAAW8C,IAAS2H,EAAM3K,iBAAiBgD,GACnD,OAAOA,EAGT,GACEA,GACA2H,EAAM5L,SAASiE,KACbqM,IAAsBrK,KAAKuN,cAAiBD,GAC9C,CACA,MACME,IADoBtB,GAAgBA,EAAa9B,oBACPkD,EAEhD,IACE,OAAOvF,KAAKoF,MAAMnP,EAAMgC,KAAKyN,aAC9B,CAAC,MAAOrO,GACP,GAAIoO,EAAmB,CACrB,GAAe,gBAAXpO,EAAEnC,KACJ,MAAMsH,EAAWC,KAAKpF,EAAGmF,EAAW4B,iBAAkBnG,KAAM,KAAMA,KAAK6E,UAEzE,MAAMzF,CACP,CACF,CACF,CAED,OAAOpB,CACR,GAOH0P,QAAS,EAETC,eAAgB,aAChBC,eAAgB,eAEhBC,kBAAmB,EACnBC,eAAgB,EAEhBd,IAAK,CACHnS,SAAU4Q,GAASf,QAAQ7P,SAC3B8M,KAAM8D,GAASf,QAAQ/C,MAGzBoG,eAAgB,SAAwB7I,GACtC,OAAOA,GAAU,KAAOA,EAAS,GAClC,EAEDmH,QAAS,CACP2B,OAAQ,CACNC,OAAQ,oCACR,oBAAgBnT,KAKtB6K,EAAMtK,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,SAAW6S,IAChEjC,GAASI,QAAQ6B,GAAU,KAG7B,MAAAC,GAAelC,GErKTmC,GAAoBzI,EAAM7C,YAAY,CAC1C,MACA,gBACA,iBACA,eACA,OACA,UACA,OACA,OACA,oBACA,sBACA,gBACA,WACA,eACA,sBACA,UACA,cACA,eClBIuL,GAAa1V,OAAO,aAE1B,SAAS2V,GAAgBC,GACvB,OAAOA,GAAU3M,OAAO2M,GAAQ7N,OAAOvH,aACzC,CAEA,SAASqV,GAAelP,GACtB,OAAc,IAAVA,GAA4B,MAATA,EACdA,EAGFqG,EAAMpM,QAAQ+F,GAASA,EAAMlE,IAAIoT,IAAkB5M,OAAOtC,EACnE,CAgBA,SAASmP,GAAiBtS,EAASmD,EAAOiP,EAAQjN,EAAQoN,GACxD,OAAI/I,EAAM9L,WAAWyH,GACZA,EAAOrI,KAAK+G,KAAMV,EAAOiP,IAG9BG,IACFpP,EAAQiP,GAGL5I,EAAM5L,SAASuF,GAEhBqG,EAAM5L,SAASuH,IACiB,IAA3BhC,EAAMwC,QAAQR,GAGnBqE,EAAMjJ,SAAS4E,GACVA,EAAO2F,KAAK3H,QADrB,OANA,EASF,CAwBA,MAAMqP,GACJ,WAAA/U,CAAYyS,GACVA,GAAWrM,KAAK4C,IAAIyJ,EACrB,CAED,GAAAzJ,CAAI2L,EAAQK,EAAgBC,GAC1B,MAAMpU,EAAOuF,KAEb,SAAS8O,EAAUC,EAAQC,EAASC,GAClC,MAAMC,EAAUZ,GAAgBU,GAEhC,IAAKE,EACH,MAAM,IAAIrM,MAAM,0CAGlB,MAAM/G,EAAM6J,EAAM5J,QAAQtB,EAAMyU,KAG7BpT,QACahB,IAAdL,EAAKqB,KACQ,IAAbmT,QACcnU,IAAbmU,IAAwC,IAAdxU,EAAKqB,MAEhCrB,EAAKqB,GAAOkT,GAAWR,GAAeO,GAEzC,CAED,MAAMI,EAAa,CAAC9C,EAAS4C,IAC3BtJ,EAAMtK,QAAQgR,EAAS,CAAC0C,EAAQC,IAAYF,EAAUC,EAAQC,EAASC,IAEzE,GAAItJ,EAAMzL,cAAcqU,IAAWA,aAAkBvO,KAAKpG,YACxDuV,EAAWZ,EAAQK,QACd,GAAIjJ,EAAM5L,SAASwU,KAAYA,EAASA,EAAO7N,UA5EvB,iCAAiCuG,KA4EoBsH,EA5EX7N,QA6EvEyO,EDpES,CAACC,IACd,MAAMC,EAAS,CAAA,EACf,IAAIvT,EACAnC,EACA6B,EAuBJ,OArBA4T,GACEA,EAAWlM,MAAM,MAAM7H,QAAQ,SAAgBiU,GAC7C9T,EAAI8T,EAAKxN,QAAQ,KACjBhG,EAAMwT,EAAKC,UAAU,EAAG/T,GAAGkF,OAAOvH,cAClCQ,EAAM2V,EAAKC,UAAU/T,EAAI,GAAGkF,QAEvB5E,GAAQuT,EAAOvT,IAAQsS,GAAkBtS,KAIlC,eAARA,EACEuT,EAAOvT,GACTuT,EAAOvT,GAAKqC,KAAKxE,GAEjB0V,EAAOvT,GAAO,CAACnC,GAGjB0V,EAAOvT,GAAOuT,EAAOvT,GAAOuT,EAAOvT,GAAO,KAAOnC,EAAMA,EAE/D,GAES0V,GCyCQG,CAAajB,GAASK,QAC5B,GAAIjJ,EAAM1L,SAASsU,IAAW5I,EAAMrB,WAAWiK,GAAS,CAC7D,IACEkB,EACA3T,EAFER,EAAM,CAAE,EAGZ,IAAK,MAAMoU,KAASnB,EAAQ,CAC1B,IAAK5I,EAAMpM,QAAQmW,GACjB,MAAMtI,UAAU,gDAGlB9L,EAAKQ,EAAM4T,EAAM,KAAQD,EAAOnU,EAAIQ,IAChC6J,EAAMpM,QAAQkW,GACZ,IAAIA,EAAMC,EAAM,IAChB,CAACD,EAAMC,EAAM,IACfA,EAAM,EACX,CAEDP,EAAW7T,EAAKsT,EACtB,MACgB,MAAVL,GAAkBO,EAAUF,EAAgBL,EAAQM,GAGtD,OAAO7O,IACR,CAED,GAAA2P,CAAIpB,EAAQrB,GAGV,GAFAqB,EAASD,GAAgBC,GAEb,CACV,MAAMzS,EAAM6J,EAAM5J,QAAQiE,KAAMuO,GAEhC,GAAIzS,EAAK,CACP,MAAMwD,EAAQU,KAAKlE,GAEnB,IAAKoR,EACH,OAAO5N,EAGT,IAAe,IAAX4N,EACF,OAhIV,SAAqBlU,GACnB,MAAM4W,EAAStX,OAAOQ,OAAO,MACvB+W,EAAW,mCACjB,IAAIlH,EAEJ,KAAQA,EAAQkH,EAASpN,KAAKzJ,IAC5B4W,EAAOjH,EAAM,IAAMA,EAAM,GAG3B,OAAOiH,CACT,CAsHiBE,CAAYxQ,GAGrB,GAAIqG,EAAM9L,WAAWqT,GACnB,OAAOA,EAAOjU,KAAK+G,KAAMV,EAAOxD,GAGlC,GAAI6J,EAAMjJ,SAASwQ,GACjB,OAAOA,EAAOzK,KAAKnD,GAGrB,MAAM,IAAI8H,UAAU,yCACrB,CACF,CACF,CAED,GAAA2I,CAAIxB,EAAQyB,GAGV,GAFAzB,EAASD,GAAgBC,GAEb,CACV,MAAMzS,EAAM6J,EAAM5J,QAAQiE,KAAMuO,GAEhC,SACEzS,QACchB,IAAdkF,KAAKlE,IACHkU,IAAWvB,GAAiBzO,EAAMA,KAAKlE,GAAMA,EAAKkU,GAEvD,CAED,OAAO,CACR,CAED,OAAOzB,EAAQyB,GACb,MAAMvV,EAAOuF,KACb,IAAIiQ,GAAU,EAEd,SAASC,EAAalB,GAGpB,GAFAA,EAAUV,GAAgBU,GAEb,CACX,MAAMlT,EAAM6J,EAAM5J,QAAQtB,EAAMuU,IAE5BlT,GAASkU,IAAWvB,GAAiBhU,EAAMA,EAAKqB,GAAMA,EAAKkU,YACtDvV,EAAKqB,GAEZmU,GAAU,EAEb,CACF,CAQD,OANItK,EAAMpM,QAAQgV,GAChBA,EAAOlT,QAAQ6U,GAEfA,EAAa3B,GAGR0B,CACR,CAED,KAAAhG,CAAM+F,GACJ,MAAMrU,EAAOrD,OAAOqD,KAAKqE,MACzB,IAAIxE,EAAIG,EAAKD,OACTuU,GAAU,EAEd,KAAOzU,KAAK,CACV,MAAMM,EAAMH,EAAKH,GACZwU,IAAWvB,GAAiBzO,EAAMA,KAAKlE,GAAMA,EAAKkU,GAAS,YACvDhQ,KAAKlE,GACZmU,GAAU,EAEb,CAED,OAAOA,CACR,CAED,SAAAE,CAAUC,GACR,MAAM3V,EAAOuF,KACPqM,EAAU,CAAA,EAsBhB,OApBA1G,EAAMtK,QAAQ2E,KAAM,CAACV,EAAOiP,KAC1B,MAAMzS,EAAM6J,EAAM5J,QAAQsQ,EAASkC,GAEnC,GAAIzS,EAGF,OAFArB,EAAKqB,GAAO0S,GAAelP,eACpB7E,EAAK8T,GAId,MAAM8B,EAAaD,EAtLzB,SAAsB7B,GACpB,OAAOA,EACJ7N,OACAvH,cACAwH,QAAQ,kBAAmB,CAAC2P,EAAGC,EAAMvX,IAC7BuX,EAAKhN,cAAgBvK,EAElC,CA+KkCwX,CAAajC,GAAU3M,OAAO2M,GAAQ7N,OAE9D2P,IAAe9B,UACV9T,EAAK8T,GAGd9T,EAAK4V,GAAc7B,GAAelP,GAElC+M,EAAQgE,IAAc,IAGjBrQ,IACR,CAED,MAAA8G,IAAU2J,GACR,OAAOzQ,KAAKpG,YAAYkN,OAAO9G,QAASyQ,EACzC,CAED,MAAApL,CAAOqL,GACL,MAAMpV,EAAMhD,OAAOQ,OAAO,MAQ1B,OANA6M,EAAMtK,QAAQ2E,KAAM,CAACV,EAAOiP,KACjB,MAATjP,IACY,IAAVA,IACChE,EAAIiT,GAAUmC,GAAa/K,EAAMpM,QAAQ+F,GAASA,EAAMyH,KAAK,MAAQzH,KAGnEhE,CACR,CAED,CAAC3C,OAAOF,YACN,OAAOH,OAAOyT,QAAQ/L,KAAKqF,UAAU1M,OAAOF,WAC7C,CAED,QAAAJ,GACE,OAAOC,OAAOyT,QAAQ/L,KAAKqF,UACxBjK,IAAI,EAAEmT,EAAQjP,KAAWiP,EAAS,KAAOjP,GACzCyH,KAAK,KACT,CAED,YAAA4J,GACE,OAAO3Q,KAAK2P,IAAI,eAAiB,EAClC,CAED,IAAKhX,OAAOD,eACV,MAAO,cACR,CAED,WAAO8L,CAAKzL,GACV,OAAOA,aAAiBiH,KAAOjH,EAAQ,IAAIiH,KAAKjH,EACjD,CAED,aAAO+N,CAAO8J,KAAUH,GACtB,MAAMI,EAAW,IAAI7Q,KAAK4Q,GAI1B,OAFAH,EAAQpV,QAAS4I,GAAW4M,EAASjO,IAAIqB,IAElC4M,CACR,CAED,eAAOC,CAASvC,GACd,MAOMwC,GANH/Q,KAAKqO,IACNrO,KAAKqO,IACH,CACE0C,UAAW,CAAE,IAGSA,UACtBxY,EAAYyH,KAAKzH,UAEvB,SAASyY,EAAehC,GACtB,MAAME,EAAUZ,GAAgBU,GAE3B+B,EAAU7B,MAvPrB,SAAwB5T,EAAKiT,GAC3B,MAAM0C,EAAetL,EAAMxC,YAAY,IAAMoL,GAE7C,CAAC,MAAO,MAAO,OAAOlT,QAAS6V,IAC7B5Y,OAAOgI,eAAehF,EAAK4V,EAAaD,EAAc,CACpD3R,MAAO,SAAU6R,EAAMC,EAAMC,GAC3B,OAAOrR,KAAKkR,GAAYjY,KAAK+G,KAAMuO,EAAQ4C,EAAMC,EAAMC,EACxD,EACD5Q,cAAc,KAGpB,CA6OQ6Q,CAAe/Y,EAAWyW,GAC1B+B,EAAU7B,IAAW,EAExB,CAID,OAFAvJ,EAAMpM,QAAQgV,GAAUA,EAAOlT,QAAQ2V,GAAkBA,EAAezC,GAEjEvO,IACR,EAGH2O,GAAamC,SAAS,CACpB,eACA,iBACA,SACA,kBACA,aACA,kBAIFnL,EAAMhJ,kBAAkBgS,GAAapW,UAAW,EAAG+G,SAASxD,KAC1D,IAAIyV,EAASzV,EAAI,GAAGyH,cAAgBzH,EAAI5C,MAAM,GAC9C,MAAO,CACLyW,IAAK,IAAMrQ,EACX,GAAAsD,CAAI4O,GACFxR,KAAKuR,GAAUC,CAChB,KAIL7L,EAAMhD,cAAcgM,IAEpB,MAAA8C,GAAe9C,GCzUA,SAAS+C,GAAcC,EAAK9M,GACzC,MAAMF,EAAS3E,MAAQiM,GACjB9P,EAAU0I,GAAYF,EACtB0H,EAAUsC,GAAanK,KAAKrI,EAAQkQ,SAC1C,IAAIrO,EAAO7B,EAAQ6B,KAQnB,OANA2H,EAAMtK,QAAQsW,EAAK,SAAmB1Z,GACpC+F,EAAO/F,EAAGgB,KAAK0L,EAAQ3G,EAAMqO,EAAQ8D,YAAatL,EAAWA,EAASK,YAASpK,EACnF,GAEEuR,EAAQ8D,YAEDnS,CACT,CCzBe,SAAS4T,GAAStS,GAC/B,SAAUA,IAASA,EAAMuS,WAC3B,CCiBA,MAAAC,GAjBA,cAA4BvN,EAU1B,WAAA3K,CAAYoL,EAASL,EAAQC,GAC3BO,MAAiB,MAAXH,EAAkB,WAAaA,EAAST,EAAW8B,aAAc1B,EAAQC,GAC/E5E,KAAK/C,KAAO,gBACZ+C,KAAK6R,YAAa,CACnB,GCLY,SAASE,GAAOC,EAASC,EAAQpN,GAC9C,MAAMkJ,EAAiBlJ,EAASF,OAAOoJ,eAClClJ,EAASK,QAAW6I,IAAkBA,EAAelJ,EAASK,QAGjE+M,EACE,IAAI1N,EACF,mCAAqCM,EAASK,OAC9C,CAACX,EAAW6B,gBAAiB7B,EAAW4B,kBACtCxI,KAAKuU,MAAMrN,EAASK,OAAS,KAAO,GAEtCL,EAASF,OACTE,EAASD,QACTC,IAVJmN,EAAQnN,EAcZ,CC1BO,MAAMsN,GAAuB,CAACC,EAAUC,EAAkBC,EAAO,KACtE,IAAIC,EAAgB,EACpB,MAAMC,ECER,SAAqBC,EAAcC,GACjCD,EAAeA,GAAgB,GAC/B,MAAME,EAAQ,IAAInZ,MAAMiZ,GAClBG,EAAa,IAAIpZ,MAAMiZ,GAC7B,IAEII,EAFAC,EAAO,EACPC,EAAO,EAKX,OAFAL,OAAc5X,IAAR4X,EAAoBA,EAAM,IAEzB,SAAcM,GACnB,MAAMC,EAAMC,KAAKD,MAEXE,EAAYP,EAAWG,GAExBF,IACHA,EAAgBI,GAGlBN,EAAMG,GAAQE,EACdJ,EAAWE,GAAQG,EAEnB,IAAIzX,EAAIuX,EACJK,EAAa,EAEjB,KAAO5X,IAAMsX,GACXM,GAAcT,EAAMnX,KACpBA,GAAQiX,EASV,GANAK,GAAQA,EAAO,GAAKL,EAEhBK,IAASC,IACXA,GAAQA,EAAO,GAAKN,GAGlBQ,EAAMJ,EAAgBH,EACxB,OAGF,MAAMW,EAASF,GAAaF,EAAME,EAElC,OAAOE,EAAS1V,KAAK2V,MAAoB,IAAbF,EAAqBC,QAAUvY,CAC/D,CACA,CD9CuByY,CAAY,GAAI,KAErC,OEFF,SAAkBtb,EAAIqa,GACpB,IAEIkB,EACAC,EAHAC,EAAY,EACZC,EAAY,IAAOrB,EAIvB,MAAMsB,EAAS,CAACC,EAAMZ,EAAMC,KAAKD,SAC/BS,EAAYT,EACZO,EAAW,KACPC,IACFK,aAAaL,GACbA,EAAQ,MAEVxb,KAAM4b,IAqBR,MAAO,CAlBW,IAAIA,KACpB,MAAMZ,EAAMC,KAAKD,MACXI,EAASJ,EAAMS,EACjBL,GAAUM,EACZC,EAAOC,EAAMZ,IAEbO,EAAWK,EACNJ,IACHA,EAAQrV,WAAW,KACjBqV,EAAQ,KACRG,EAAOJ,IACNG,EAAYN,MAKP,IAAMG,GAAYI,EAAOJ,GAGzC,CFjCSO,CAAU3U,IACf,MAAM4U,EAAS5U,EAAE4U,OACXC,EAAQ7U,EAAE8U,iBAAmB9U,EAAE6U,WAAQnZ,EACvCqZ,EAAgBH,EAASzB,EACzB6B,EAAO5B,EAAa2B,GAG1B5B,EAAgByB,EAchB5B,EAZa,CACX4B,SACAC,QACAI,SAAUJ,EAAQD,EAASC,OAAQnZ,EACnC6X,MAAOwB,EACPC,KAAMA,QAActZ,EACpBwZ,UAAWF,GAAQH,GAVLD,GAAUC,GAUeA,EAAQD,GAAUI,OAAOtZ,EAChEyZ,MAAOnV,EACP8U,iBAA2B,MAATD,EAClB,CAAC5B,EAAmB,WAAa,WAAW,KAI7CC,IAGQkC,GAAyB,CAACP,EAAOQ,KAC5C,MAAMP,EAA4B,MAATD,EAEzB,MAAO,CACJD,GACCS,EAAU,GAAG,CACXP,mBACAD,QACAD,WAEJS,EAAU,KAIDC,GACVzc,GACD,IAAI4b,IACFlO,EAAMtH,KAAK,IAAMpG,KAAM4b,IGhDZc,GAAAlJ,GAASR,sBACpB,EAAEK,EAAQsJ,IAAY5L,IACpBA,EAAM,IAAI6L,IAAI7L,EAAKyC,GAASH,QAG1BA,EAAOwJ,WAAa9L,EAAI8L,UACxBxJ,EAAOyJ,OAAS/L,EAAI+L,OACnBH,GAAUtJ,EAAO0J,OAAShM,EAAIgM,OANnC,CASE,IAAIH,IAAIpJ,GAASH,QACjBG,GAAST,WAAa,kBAAkB/D,KAAKwE,GAAST,UAAUiK,YAElE,KAAM,ECZKC,GAAAzJ,GAASR,sBAEpB,CACE,KAAAkK,CAAMlY,EAAMqC,EAAO8V,EAASxO,EAAMyO,EAAQC,EAAQC,GAChD,GAAwB,oBAAbzK,SAA0B,OAErC,MAAM0K,EAAS,CAAC,GAAGvY,KAAQyL,mBAAmBpJ,MAE1CqG,EAAM3L,SAASob,IACjBI,EAAOrX,KAAK,WAAW,IAAI+U,KAAKkC,GAASK,iBAEvC9P,EAAM5L,SAAS6M,IACjB4O,EAAOrX,KAAK,QAAQyI,KAElBjB,EAAM5L,SAASsb,IACjBG,EAAOrX,KAAK,UAAUkX,MAET,IAAXC,GACFE,EAAOrX,KAAK,UAEVwH,EAAM5L,SAASwb,IACjBC,EAAOrX,KAAK,YAAYoX,KAG1BzK,SAAS0K,OAASA,EAAOzO,KAAK,KAC/B,EAED,IAAA2O,CAAKzY,GACH,GAAwB,oBAAb6N,SAA0B,OAAO,KAC5C,MAAMnC,EAAQmC,SAAS0K,OAAO7M,MAAM,IAAIgN,OAAO,WAAa1Y,EAAO,aACnE,OAAO0L,EAAQiN,mBAAmBjN,EAAM,IAAM,IAC/C,EAED,MAAAkN,CAAO5Y,GACL+C,KAAKmV,MAAMlY,EAAM,GAAIiW,KAAKD,MAAQ,MAAU,IAC7C,GAGH,CACE,KAAAkC,GAAU,EACVO,KAAI,IACK,KAET,MAAAG,GAAW,GC/BF,SAASC,GAAcC,EAASC,EAAcC,GAC3D,IAAIC,ICHe,iBAJiBlN,EDODgN,ICC5B,8BAA8B/O,KAAK+B,IAR7B,IAAuBA,EDQpC,OAAI+M,IAAYG,GAAsC,GAArBD,GEPpB,SAAqBF,EAASI,GAC3C,OAAOA,EACHJ,EAAQpV,QAAQ,SAAU,IAAM,IAAMwV,EAAYxV,QAAQ,OAAQ,IAClEoV,CACN,CFIWK,CAAYL,EAASC,GAEvBA,CACT,CGhBA,MAAMK,GAAmBtd,GAAWA,aAAiB4V,GAAe,IAAK5V,GAAUA,EAWpE,SAASud,GAAYC,EAASC,GAE3CA,EAAUA,GAAW,GACrB,MAAM7R,EAAS,CAAA,EAEf,SAAS8R,EAAexS,EAAQlG,EAAQtB,EAAMqD,GAC5C,OAAI6F,EAAMzL,cAAc+J,IAAW0B,EAAMzL,cAAc6D,GAC9C4H,EAAM9F,MAAM5G,KAAK,CAAE6G,YAAYmE,EAAQlG,GACrC4H,EAAMzL,cAAc6D,GACtB4H,EAAM9F,MAAM,CAAE,EAAE9B,GACd4H,EAAMpM,QAAQwE,GAChBA,EAAO7E,QAET6E,CACR,CAED,SAAS2Y,EAAoBtW,EAAGC,EAAG5D,EAAMqD,GACvC,OAAK6F,EAAMlM,YAAY4G,GAEXsF,EAAMlM,YAAY2G,QAAvB,EACEqW,OAAe3b,EAAWsF,EAAG3D,EAAMqD,GAFnC2W,EAAerW,EAAGC,EAAG5D,EAAMqD,EAIrC,CAGD,SAAS6W,EAAiBvW,EAAGC,GAC3B,IAAKsF,EAAMlM,YAAY4G,GACrB,OAAOoW,OAAe3b,EAAWuF,EAEpC,CAGD,SAASuW,EAAiBxW,EAAGC,GAC3B,OAAKsF,EAAMlM,YAAY4G,GAEXsF,EAAMlM,YAAY2G,QAAvB,EACEqW,OAAe3b,EAAWsF,GAF1BqW,OAAe3b,EAAWuF,EAIpC,CAGD,SAASwW,EAAgBzW,EAAGC,EAAG5D,GAC7B,OAAIA,KAAQ+Z,EACHC,EAAerW,EAAGC,GAChB5D,KAAQ8Z,EACVE,OAAe3b,EAAWsF,QAD5B,CAGR,CAED,MAAM0W,EAAW,CACf9N,IAAK2N,EACLzI,OAAQyI,EACR3Y,KAAM2Y,EACNZ,QAASa,EACTxK,iBAAkBwK,EAClBvJ,kBAAmBuJ,EACnBG,iBAAkBH,EAClBlJ,QAASkJ,EACTI,eAAgBJ,EAChBK,gBAAiBL,EACjBM,cAAeN,EACfzK,QAASyK,EACTrJ,aAAcqJ,EACdjJ,eAAgBiJ,EAChBhJ,eAAgBgJ,EAChBO,iBAAkBP,EAClBQ,mBAAoBR,EACpBS,WAAYT,EACZ/I,iBAAkB+I,EAClB9I,cAAe8I,EACfU,eAAgBV,EAChBW,UAAWX,EACXY,UAAWZ,EACXa,WAAYb,EACZc,YAAad,EACbe,WAAYf,EACZgB,iBAAkBhB,EAClB7I,eAAgB8I,EAChBxK,QAAS,CAACjM,EAAGC,EAAG5D,IACdia,EAAoBL,GAAgBjW,GAAIiW,GAAgBhW,GAAI5D,GAAM,IAUtE,OAPAkJ,EAAMtK,QAAQ/C,OAAOqD,KAAK,IAAK4a,KAAYC,IAAY,SAA4B/Z,GACjF,GAAa,cAATA,GAAiC,gBAATA,GAAmC,cAATA,EAAsB,OAC5E,MAAMoD,EAAQ8F,EAAMjD,WAAWoU,EAAUra,GAAQqa,EAASra,GAAQia,EAC5DmB,EAAchY,EAAM0W,EAAQ9Z,GAAO+Z,EAAQ/Z,GAAOA,GACvDkJ,EAAMlM,YAAYoe,IAAgBhY,IAAUgX,IAAqBlS,EAAOlI,GAAQob,EACrF,GAESlT,CACT,CCjGA,MAAemT,GAACnT,IACd,MAAMoT,EAAYzB,GAAY,CAAE,EAAE3R,GAElC,IAAI3G,KAAEA,EAAIkZ,cAAEA,EAAatJ,eAAEA,EAAcD,eAAEA,EAActB,QAAEA,EAAO2L,KAAEA,GAASD,EAuB7E,GArBAA,EAAU1L,QAAUA,EAAUsC,GAAanK,KAAK6H,GAEhD0L,EAAU/O,IAAMD,GACd+M,GAAciC,EAAUhC,QAASgC,EAAU/O,IAAK+O,EAAU9B,mBAC1DtR,EAAOkE,OACPlE,EAAOoS,kBAILiB,GACF3L,EAAQzJ,IACN,gBACA,SACEqV,MACGD,EAAKE,UAAY,IAChB,KACCF,EAAKG,SAAWC,SAAS1P,mBAAmBsP,EAAKG,WAAa,MAKrExS,EAAMjH,WAAWV,GACnB,GAAIyN,GAASR,uBAAyBQ,GAASN,+BAC7CkB,EAAQK,oBAAe5R,QAClB,GAAI6K,EAAM9L,WAAWmE,EAAKqa,YAAa,CAE5C,MAAMC,EAActa,EAAKqa,aAEnBE,EAAiB,CAAC,eAAgB,kBACxCjgB,OAAOyT,QAAQuM,GAAajd,QAAQ,EAAES,EAAKnC,MACrC4e,EAAeC,SAAS1c,EAAI3C,gBAC9BkT,EAAQzJ,IAAI9G,EAAKnC,IAGtB,CAOH,GAAI8R,GAASR,wBACXiM,GAAiBvR,EAAM9L,WAAWqd,KAAmBA,EAAgBA,EAAca,IAE/Eb,IAAoC,IAAlBA,GAA2BvC,GAAgBoD,EAAU/O,MAAO,CAEhF,MAAMyP,EAAY7K,GAAkBD,GAAkBuH,GAAQQ,KAAK/H,GAE/D8K,GACFpM,EAAQzJ,IAAIgL,EAAgB6K,EAE/B,CAGH,OAAOV,GCvDTW,GAFwD,oBAAnBC,gBAGnC,SAAUhU,GACR,OAAO,IAAIiU,QAAQ,SAA4B5G,EAASC,GACtD,MAAM4G,EAAUf,GAAcnT,GAC9B,IAAImU,EAAcD,EAAQ7a,KAC1B,MAAM+a,EAAiBpK,GAAanK,KAAKqU,EAAQxM,SAAS8D,YAC1D,IACI6I,EACAC,EAAiBC,EACjBC,EAAaC,GAHb7L,aAAEA,EAAY4J,iBAAEA,EAAgBC,mBAAEA,GAAuByB,EAK7D,SAASzW,IACP+W,GAAeA,IACfC,GAAiBA,IAEjBP,EAAQnB,aAAemB,EAAQnB,YAAY2B,YAAYL,GAEvDH,EAAQS,QAAUT,EAAQS,OAAOC,oBAAoB,QAASP,EAC/D,CAED,IAAIpU,EAAU,IAAI+T,eAOlB,SAASa,IACP,IAAK5U,EACH,OAGF,MAAM6U,EAAkB9K,GAAanK,KACnC,0BAA2BI,GAAWA,EAAQ8U,yBAehD3H,GACE,SAAkBzS,GAChB0S,EAAQ1S,GACR8C,GACD,EACD,SAAiBuX,GACf1H,EAAO0H,GACPvX,GACD,EAjBc,CACfpE,KAJCuP,GAAiC,SAAjBA,GAA4C,SAAjBA,EAExC3I,EAAQC,SADRD,EAAQgV,aAIZ1U,OAAQN,EAAQM,OAChB2U,WAAYjV,EAAQiV,WACpBxN,QAASoN,EACT9U,SACAC,YAgBFA,EAAU,IACX,CAxCDA,EAAQkV,KAAKjB,EAAQ3K,OAAO3K,cAAesV,EAAQ7P,KAAK,GAGxDpE,EAAQ8I,QAAUmL,EAAQnL,QAuCtB,cAAe9I,EAEjBA,EAAQ4U,UAAYA,EAGpB5U,EAAQmV,mBAAqB,WACtBnV,GAAkC,IAAvBA,EAAQoV,aASH,IAAnBpV,EAAQM,QACNN,EAAQqV,aAAwD,IAAzCrV,EAAQqV,YAAYnY,QAAQ,WAMvD1D,WAAWob,EACrB,EAIM5U,EAAQsV,QAAU,WACXtV,IAILqN,EAAO,IAAI1N,EAAW,kBAAmBA,EAAWuB,aAAcnB,EAAQC,IAG1EA,EAAU,KAClB,EAGMA,EAAQuV,QAAU,SAAqB5F,GAIrC,MAAM6F,EAAM7F,GAASA,EAAMvP,QAAUuP,EAAMvP,QAAU,gBAC/C2U,EAAM,IAAIpV,EAAW6V,EAAK7V,EAAWyB,YAAarB,EAAQC,GAEhE+U,EAAIpF,MAAQA,GAAS,KACrBtC,EAAO0H,GACP/U,EAAU,IAClB,EAGMA,EAAQyV,UAAY,WAClB,IAAIC,EAAsBzB,EAAQnL,QAC9B,cAAgBmL,EAAQnL,QAAU,cAClC,mBACJ,MAAMxB,EAAe2M,EAAQ3M,cAAgB/B,GACzC0O,EAAQyB,sBACVA,EAAsBzB,EAAQyB,qBAEhCrI,EACE,IAAI1N,EACF+V,EACApO,EAAa5B,oBAAsB/F,EAAWwB,UAAYxB,EAAWuB,aACrEnB,EACAC,IAKJA,EAAU,IAClB,OAGsB9J,IAAhBge,GAA6BC,EAAerM,eAAe,MAGvD,qBAAsB9H,GACxBe,EAAMtK,QAAQ0d,EAAe1T,SAAU,SAA0B1L,EAAKmC,GACpE8I,EAAQ2V,iBAAiBze,EAAKnC,EACxC,GAIWgM,EAAMlM,YAAYof,EAAQ5B,mBAC7BrS,EAAQqS,kBAAoB4B,EAAQ5B,iBAIlC1J,GAAiC,SAAjBA,IAClB3I,EAAQ2I,aAAesL,EAAQtL,cAI7B6J,KACD8B,EAAmBE,GAAiBjH,GAAqBiF,GAAoB,GAC9ExS,EAAQ9G,iBAAiB,WAAYob,IAInC/B,GAAoBvS,EAAQ4V,UAC7BvB,EAAiBE,GAAehH,GAAqBgF,GAEtDvS,EAAQ4V,OAAO1c,iBAAiB,WAAYmb,GAE5CrU,EAAQ4V,OAAO1c,iBAAiB,UAAWqb,KAGzCN,EAAQnB,aAAemB,EAAQS,UAGjCN,EAAcyB,IACP7V,IAGLqN,GAAQwI,GAAUA,EAAOphB,KAAO,IAAIqhB,GAAc,KAAM/V,EAAQC,GAAW6V,GAC3E7V,EAAQ+V,QACR/V,EAAU,OAGZiU,EAAQnB,aAAemB,EAAQnB,YAAYkD,UAAU5B,GACjDH,EAAQS,SACVT,EAAQS,OAAOuB,QACX7B,IACAH,EAAQS,OAAOxb,iBAAiB,QAASkb,KAIjD,MAAMlE,EC3MG,SAAuB9L,GACpC,MAAML,EAAQ,4BAA4BlG,KAAKuG,GAC/C,OAAQL,GAASA,EAAM,IAAO,EAChC,CDwMuBmS,CAAcjC,EAAQ7P,KAEnC8L,IAAsD,IAA1CrJ,GAASb,UAAU9I,QAAQgT,GACzC7C,EACE,IAAI1N,EACF,wBAA0BuQ,EAAW,IACrCvQ,EAAW6B,gBACXzB,IAONC,EAAQmW,KAAKjC,GAAe,KAClC,EACG,EEtKHkC,GAnDuB,CAACC,EAASvN,KAC/B,MAAMhS,OAAEA,GAAYuf,EAAUA,EAAUA,EAAQ3Z,OAAO4Z,SAAW,GAElE,GAAIxN,GAAWhS,EAAQ,CACrB,IAEImf,EAFAM,EAAa,IAAIC,gBAIrB,MAAMlB,EAAU,SAAUmB,GACxB,IAAKR,EAAS,CACZA,GAAU,EACVxB,IACA,MAAMM,EAAM0B,aAAkBxY,MAAQwY,EAASrb,KAAKqb,OACpDF,EAAWR,MACThB,aAAepV,EACXoV,EACA,IAAIe,GAAcf,aAAe9W,MAAQ8W,EAAI3U,QAAU2U,GAE9D,CACP,EAEI,IAAIlG,EACF/F,GACAtP,WAAW,KACTqV,EAAQ,KACRyG,EAAQ,IAAI3V,EAAW,cAAcmJ,eAAsBnJ,EAAWwB,aACrE2H,GAEL,MAAM2L,EAAc,KACd4B,IACFxH,GAASK,aAAaL,GACtBA,EAAQ,KACRwH,EAAQ5f,QAASie,IACfA,EAAOD,YACHC,EAAOD,YAAYa,GACnBZ,EAAOC,oBAAoB,QAASW,KAE1Ce,EAAU,OAIdA,EAAQ5f,QAASie,GAAWA,EAAOxb,iBAAiB,QAASoc,IAE7D,MAAMZ,OAAEA,GAAW6B,EAInB,OAFA7B,EAAOD,YAAc,IAAM1T,EAAMtH,KAAKgb,GAE/BC,CACR,GCpDUgC,GAAc,UAAWC,EAAOC,GAC3C,IAAI3f,EAAM0f,EAAME,WAEhB,IAAKD,GAAa3f,EAAM2f,EAEtB,kBADMD,GAIR,IACIG,EADAC,EAAM,EAGV,KAAOA,EAAM9f,GACX6f,EAAMC,EAAMH,QACND,EAAMriB,MAAMyiB,EAAKD,GACvBC,EAAMD,CAEV,EAQME,GAAaC,gBAAiBC,GAClC,GAAIA,EAAOnjB,OAAOojB,eAEhB,kBADOD,GAIT,MAAME,EAASF,EAAOG,YACtB,IACE,OAAS,CACP,MAAM7Z,KAAEA,EAAI9C,MAAEA,SAAgB0c,EAAOtG,OACrC,GAAItT,EACF,YAEI9C,CACP,CACL,CAAY,cACF0c,EAAOvB,QACd,CACH,EAEayB,GAAc,CAACJ,EAAQN,EAAWW,EAAYC,KACzD,MAAM3jB,EA3BiBojB,gBAAiBQ,EAAUb,GAClD,UAAW,MAAMD,KAASK,GAAWS,SAC5Bf,GAAYC,EAAOC,EAE9B,CAuBmBc,CAAUR,EAAQN,GAEnC,IACIpZ,EADAuQ,EAAQ,EAER4J,EAAand,IACVgD,IACHA,GAAO,EACPga,GAAYA,EAAShd,KAIzB,OAAO,IAAIod,eACT,CACE,UAAMC,CAAKtB,GACT,IACE,MAAM/Y,KAAEA,EAAI9C,MAAEA,SAAgB7G,EAAS0J,OAEvC,GAAIC,EAGF,OAFAma,SACApB,EAAWuB,QAIb,IAAI7gB,EAAMyD,EAAMmc,WAChB,GAAIU,EAAY,CACd,IAAIQ,EAAehK,GAAS9W,EAC5BsgB,EAAWQ,EACZ,CACDxB,EAAWyB,QAAQ,IAAItgB,WAAWgD,GACnC,CAAC,MAAOqa,GAEP,MADA4C,EAAU5C,GACJA,CACP,CACF,EACDc,OAAOY,IACLkB,EAAUlB,GACH5iB,EAASokB,WAGpB,CACEC,cAAe,MCrEfjjB,WAAEA,IAAe8L,EAEjBoX,GAAiB,GAAIC,UAASC,eAAgB,CAClDD,UACAC,aAFqB,CAGnBtX,EAAMhL,SAEJ6hB,eAAEA,GAAcU,YAAEA,IAAgBvX,EAAMhL,OAExCsM,GAAO,CAAChP,KAAO4b,KACnB,IACE,QAAS5b,KAAM4b,EAChB,CAAC,MAAOzU,GACP,OAAO,CACR,GAGG+d,GAAWnQ,IACfA,EAAMrH,EAAM9F,MAAM5G,KAChB,CACE8G,eAAe,GAEjBgd,GACA/P,GAGF,MAAQoQ,MAAOC,EAAQL,QAAEA,EAAOC,SAAEA,GAAajQ,EACzCsQ,EAAmBD,EAAWxjB,GAAWwjB,GAA6B,mBAAVD,MAC5DG,EAAqB1jB,GAAWmjB,GAChCQ,EAAsB3jB,GAAWojB,GAEvC,IAAKK,EACH,OAAO,EAGT,MAAMG,EAA4BH,GAAoBzjB,GAAW2iB,IAE3DkB,EACJJ,IACwB,mBAAhBJ,IAED3T,EAED,IAAI2T,GAFUlkB,GACZuQ,EAAQf,OAAOxP,IAEnB6iB,MAAO7iB,GAAQ,IAAIsD,iBAAiB,IAAI0gB,EAAQhkB,GAAK2kB,gBAJrD,IACGpU,EAKT,MAAMqU,EACJL,GACAE,GACAxW,GAAK,KACH,IAAI4W,GAAiB,EAErB,MAAMC,EAAiB,IAAId,EAAQvR,GAASH,OAAQ,CAClDyS,KAAM,IAAIvB,GACVtO,OAAQ,OACR,UAAI8P,GAEF,OADAH,GAAiB,EACV,MACR,IACAxR,QAAQ0D,IAAI,gBAEf,OAAO8N,IAAmBC,IAGxBG,EACJT,GACAC,GACAxW,GAAK,IAAMtB,EAAM3K,iBAAiB,IAAIiiB,EAAS,IAAIc,OAE/CG,EAAY,CAChBpC,OAAQmC,GAA2B,CAACE,GAAQA,EAAIJ,OAGlDT,GAEI,CAAC,OAAQ,cAAe,OAAQ,WAAY,UAAUjiB,QAAShC,KAC5D6kB,EAAU7kB,KACR6kB,EAAU7kB,GAAQ,CAAC8kB,EAAKxZ,KACvB,IAAIuJ,EAASiQ,GAAOA,EAAI9kB,GAExB,GAAI6U,EACF,OAAOA,EAAOjV,KAAKklB,GAGrB,MAAM,IAAI5Z,EACR,kBAAkBlL,sBAClBkL,EAAW+B,gBACX3B,OAMZ,MA8BMyZ,EAAoBvC,MAAOxP,EAAS0R,KACxC,MAAMriB,EAASiK,EAAMlC,eAAe4I,EAAQgS,oBAE5C,OAAiB,MAAV3iB,EAjCamgB,OAAOkC,IAC3B,GAAY,MAARA,EACF,OAAO,EAGT,GAAIpY,EAAMtL,OAAO0jB,GACf,OAAOA,EAAKO,KAGd,GAAI3Y,EAAM9B,oBAAoBka,GAAO,CACnC,MAAMQ,EAAW,IAAIvB,EAAQvR,GAASH,OAAQ,CAC5C4C,OAAQ,OACR6P,SAEF,aAAcQ,EAASZ,eAAelC,UACvC,CAED,OAAI9V,EAAM9G,kBAAkBkf,IAASpY,EAAM7L,cAAcikB,GAChDA,EAAKtC,YAGV9V,EAAM5K,kBAAkBgjB,KAC1BA,GAAc,IAGZpY,EAAM5L,SAASgkB,UACHL,EAAWK,IAAOtC,gBADlC,IAQwB+C,CAAcT,GAAQriB,GAGhD,OAAOmgB,MAAOlX,IACZ,IAAIqE,IACFA,EAAGkF,OACHA,EAAMlQ,KACNA,EAAIsb,OACJA,EAAM5B,YACNA,EAAWhK,QACXA,EAAO0J,mBACPA,EAAkBD,iBAClBA,EAAgB5J,aAChBA,EAAYlB,QACZA,EAAO4K,gBACPA,EAAkB,cAAawH,aAC/BA,GACE3G,GAAcnT,GAEd+Z,EAASrB,GAAYD,MAEzB7P,EAAeA,GAAgBA,EAAe,IAAIpU,cAAgB,OAElE,IAAIwlB,EAAiBC,GACnB,CAACtF,EAAQ5B,GAAeA,EAAYmH,iBACpCnR,GAGE9I,EAAU,KAEd,MAAMyU,EACJsF,GACAA,EAAetF,aACrB,MACQsF,EAAetF,aAChB,GAEH,IAAIyF,EAEJ,IACE,GACE3H,GACAyG,GACW,QAAX1P,GACW,SAAXA,GACoE,KAAnE4Q,QAA6BV,EAAkB/R,EAASrO,IACzD,CACA,IAMI+gB,EANAR,EAAW,IAAIvB,EAAQhU,EAAK,CAC9BkF,OAAQ,OACR6P,KAAM/f,EACNggB,OAAQ,SASV,GAJIrY,EAAMjH,WAAWV,KAAU+gB,EAAoBR,EAASlS,QAAQsD,IAAI,kBACtEtD,EAAQK,eAAeqS,GAGrBR,EAASR,KAAM,CACjB,MAAO5B,EAAY6C,GAASxK,GAC1BsK,EACA3M,GAAqBuC,GAAeyC,KAGtCnZ,EAAOke,GAAYqC,EAASR,KAjMX,MAiMqC5B,EAAY6C,EACnE,CACF,CAEIrZ,EAAM5L,SAASkd,KAClBA,EAAkBA,EAAkB,UAAY,QAKlD,MAAMgI,EAAyB1B,GAAsB,gBAAiBP,EAAQzkB,UAExE2mB,EAAkB,IACnBT,EACHnF,OAAQqF,EACRzQ,OAAQA,EAAO3K,cACf8I,QAASA,EAAQ8D,YAAY9K,SAC7B0Y,KAAM/f,EACNggB,OAAQ,OACRmB,YAAaF,EAAyBhI,OAAkBnc,GAG1D8J,EAAU2Y,GAAsB,IAAIP,EAAQhU,EAAKkW,GAEjD,IAAIra,QAAkB0Y,EAClBmB,EAAO9Z,EAAS6Z,GAChBC,EAAO1V,EAAKkW,IAEhB,MAAME,EACJnB,IAA4C,WAAjB1Q,GAA8C,aAAjBA,GAE1D,GAAI0Q,IAA2B7G,GAAuBgI,GAAoB/F,GAAe,CACvF,MAAMlS,EAAU,CAAA,EAEhB,CAAC,SAAU,aAAc,WAAW9L,QAASoB,IAC3C0K,EAAQ1K,GAAQoI,EAASpI,KAG3B,MAAM4iB,EAAwB1Z,EAAMlC,eAAeoB,EAASwH,QAAQsD,IAAI,oBAEjEwM,EAAY6C,GAChB5H,GACC5C,GACE6K,EACAlN,GAAqBuC,GAAe0C,IAAqB,KAE7D,GAEFvS,EAAW,IAAIoY,EACbf,GAAYrX,EAASkZ,KAlPJ,MAkP8B5B,EAAY,KACzD6C,GAASA,IACT3F,GAAeA,MAEjBlS,EAEH,CAEDoG,EAAeA,GAAgB,OAE/B,IAAI+R,QAAqBpB,EAAUvY,EAAM5J,QAAQmiB,EAAW3Q,IAAiB,QAC3E1I,EACAF,GAKF,OAFCya,GAAoB/F,GAAeA,UAEvB,IAAIT,QAAQ,CAAC5G,EAASC,KACjCF,GAAOC,EAASC,EAAQ,CACtBjU,KAAMshB,EACNjT,QAASsC,GAAanK,KAAKK,EAASwH,SACpCnH,OAAQL,EAASK,OACjB2U,WAAYhV,EAASgV,WACrBlV,SACAC,aAGL,CAAC,MAAO+U,GAGP,GAFAN,GAAeA,IAEXM,GAAoB,cAAbA,EAAI1c,MAAwB,qBAAqBgK,KAAK0S,EAAI3U,SACnE,MAAM1M,OAAO4I,OACX,IAAIqD,EACF,gBACAA,EAAWyB,YACXrB,EACAC,EACA+U,GAAOA,EAAI9U,UAEb,CACEI,MAAO0U,EAAI1U,OAAS0U,IAK1B,MAAMpV,EAAWC,KAAKmV,EAAKA,GAAOA,EAAIjV,KAAMC,EAAQC,EAAS+U,GAAOA,EAAI9U,SACzE,IAIC0a,GAAY,IAAIC,IAETC,GAAY9a,IACvB,IAAIqI,EAAOrI,GAAUA,EAAOqI,KAAQ,CAAA,EACpC,MAAMoQ,MAAEA,EAAKJ,QAAEA,EAAOC,SAAEA,GAAajQ,EAC/B0S,EAAQ,CAAC1C,EAASC,EAAUG,GAElC,IAEEuC,EACA1b,EAFAzI,EADQkkB,EAAMhkB,OAIdN,EAAMmkB,GAER,KAAO/jB,KACLmkB,EAAOD,EAAMlkB,GACbyI,EAAS7I,EAAIuU,IAAIgQ,QAEN7kB,IAAXmJ,GAAwB7I,EAAIwH,IAAI+c,EAAO1b,EAASzI,EAAI,IAAIgkB,IAAQrC,GAAQnQ,IAExE5R,EAAM6I,EAGR,OAAOA,GAGOwb,KC5ThB,MAAMG,GAAgB,CACpBC,KCfa,KDgBbC,IAAKpH,GACL0E,MAAO,CACLzN,IAAKoQ,KAKTpa,EAAMtK,QAAQukB,GAAe,CAAC3nB,EAAIqH,KAChC,GAAIrH,EAAI,CACN,IACEK,OAAOgI,eAAerI,EAAI,OAAQ,CAAEqH,SACrC,CAAC,MAAOF,GAER,CACD9G,OAAOgI,eAAerI,EAAI,cAAe,CAAEqH,SAC5C,IASH,MAAM0gB,GAAgB3E,GAAW,KAAKA,IAQhC4E,GAAoB9T,GACxBxG,EAAM9L,WAAWsS,IAAwB,OAAZA,IAAgC,IAAZA,EAmEnD,MAAe+T,GAAA,CAKfC,WA5DA,SAAoBD,EAAUvb,GAC5Bub,EAAWva,EAAMpM,QAAQ2mB,GAAYA,EAAW,CAACA,GAEjD,MAAMxkB,OAAEA,GAAWwkB,EACnB,IAAIE,EACAjU,EAEJ,MAAMkU,EAAkB,CAAA,EAExB,IAAK,IAAI7kB,EAAI,EAAGA,EAAIE,EAAQF,IAAK,CAE/B,IAAIwO,EAIJ,GALAoW,EAAgBF,EAAS1kB,GAGzB2Q,EAAUiU,GAELH,GAAiBG,KACpBjU,EAAUyT,IAAe5V,EAAKpI,OAAOwe,IAAgBjnB,oBAErC2B,IAAZqR,GACF,MAAM,IAAI5H,EAAW,oBAAoByF,MAI7C,GAAImC,IAAYxG,EAAM9L,WAAWsS,KAAaA,EAAUA,EAAQwD,IAAIhL,KAClE,MAGF0b,EAAgBrW,GAAM,IAAMxO,GAAK2Q,CAClC,CAED,IAAKA,EAAS,CACZ,MAAMmU,EAAUhoB,OAAOyT,QAAQsU,GAAiBjlB,IAC9C,EAAE4O,EAAIuW,KACJ,WAAWvW,OACA,IAAVuW,EAAkB,sCAAwC,kCAG/D,IAAIC,EAAI9kB,EACJ4kB,EAAQ5kB,OAAS,EACf,YAAc4kB,EAAQllB,IAAI4kB,IAAcjZ,KAAK,MAC7C,IAAMiZ,GAAaM,EAAQ,IAC7B,0BAEJ,MAAM,IAAI/b,EACR,wDAA0Dic,EAC1D,kBAEH,CAED,OAAOrU,CACT,EAgBE+T,SAAUN,IEhHZ,SAASa,GAA6B9b,GAKpC,GAJIA,EAAO+S,aACT/S,EAAO+S,YAAYgJ,mBAGjB/b,EAAO2U,QAAU3U,EAAO2U,OAAOuB,QACjC,MAAM,IAAIH,GAAc,KAAM/V,EAElC,CASe,SAASgc,GAAgBhc,GACtC8b,GAA6B9b,GAE7BA,EAAO0H,QAAUsC,GAAanK,KAAKG,EAAO0H,SAG1C1H,EAAO3G,KAAO0T,GAAczY,KAAK0L,EAAQA,EAAOyH,mBAES,IAArD,CAAC,OAAQ,MAAO,SAAStK,QAAQ6C,EAAOuJ,SAC1CvJ,EAAO0H,QAAQK,eAAe,qCAAqC,GAKrE,OAFgBwT,GAASC,WAAWxb,EAAOwH,SAAWF,GAASE,QAASxH,EAEjEwH,CAAQxH,GAAQP,KACrB,SAA6BS,GAQ3B,OAPA4b,GAA6B9b,GAG7BE,EAAS7G,KAAO0T,GAAczY,KAAK0L,EAAQA,EAAO0I,kBAAmBxI,GAErEA,EAASwH,QAAUsC,GAAanK,KAAKK,EAASwH,SAEvCxH,CACR,EACD,SAA4BwW,GAe1B,OAdKzJ,GAASyJ,KACZoF,GAA6B9b,GAGzB0W,GAAUA,EAAOxW,WACnBwW,EAAOxW,SAAS7G,KAAO0T,GAAczY,KACnC0L,EACAA,EAAO0I,kBACPgO,EAAOxW,UAETwW,EAAOxW,SAASwH,QAAUsC,GAAanK,KAAK6W,EAAOxW,SAASwH,WAIzDuM,QAAQ3G,OAAOoJ,EACvB,EAEL,CC5EO,MAAMuF,GAAU,SCKjBC,GAAa,CAAA,EAGnB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAUxlB,QAAQ,CAAChC,EAAMmC,KAC7EqlB,GAAWxnB,GAAQ,SAAmBN,GACpC,cAAcA,IAAUM,GAAQ,KAAOmC,EAAI,EAAI,KAAO,KAAOnC,CACjE,IAGA,MAAMynB,GAAqB,CAAA,EAW3BD,GAAW3U,aAAe,SAAsB6U,EAAWC,EAAShc,GAClE,SAASic,EAAcC,EAAKC,GAC1B,MACE,WACAP,GACA,0BACAM,EACA,IACAC,GACCnc,EAAU,KAAOA,EAAU,GAE/B,CAGD,MAAO,CAAC1F,EAAO4hB,EAAKE,KAClB,IAAkB,IAAdL,EACF,MAAM,IAAIxc,EACR0c,EAAcC,EAAK,qBAAuBF,EAAU,OAASA,EAAU,KACvEzc,EAAW2B,gBAef,OAXI8a,IAAYF,GAAmBI,KACjCJ,GAAmBI,IAAO,EAE1BG,QAAQC,KACNL,EACEC,EACA,+BAAiCF,EAAU,8CAK1CD,GAAYA,EAAUzhB,EAAO4hB,EAAKE,GAE7C,EAEAP,GAAWU,SAAW,SAAkBC,GACtC,MAAO,CAACliB,EAAO4hB,KAEbG,QAAQC,KAAK,GAAGJ,gCAAkCM,MAC3C,EAEX,EAsCA,MAAeT,GAAA,CACbU,cA3BF,SAAuBta,EAASua,EAAQC,GACtC,GAAuB,iBAAZxa,EACT,MAAM,IAAI5C,EAAW,4BAA6BA,EAAWqB,sBAE/D,MAAMjK,EAAOrD,OAAOqD,KAAKwL,GACzB,IAAI3L,EAAIG,EAAKD,OACb,KAAOF,KAAM,GAAG,CACd,MAAM0lB,EAAMvlB,EAAKH,GACXulB,EAAYW,EAAOR,GACzB,GAAIH,EAAW,CACb,MAAMzhB,EAAQ6H,EAAQ+Z,GAChBpiB,OAAmBhE,IAAVwE,GAAuByhB,EAAUzhB,EAAO4hB,EAAK/Z,GAC5D,IAAe,IAAXrI,EACF,MAAM,IAAIyF,EACR,UAAY2c,EAAM,YAAcpiB,EAChCyF,EAAWqB,sBAGf,QACD,CACD,IAAqB,IAAjB+b,EACF,MAAM,IAAIpd,EAAW,kBAAoB2c,EAAK3c,EAAWsB,eAE5D,CACH,EAIAgb,WAAEA,IChGIA,GAAaE,GAAUF,WAS7B,MAAMe,GACJ,WAAAhoB,CAAYioB,GACV7hB,KAAKiM,SAAW4V,GAAkB,GAClC7hB,KAAK8hB,aAAe,CAClBld,QAAS,IAAImd,GACbld,SAAU,IAAIkd,GAEjB,CAUD,aAAMnd,CAAQod,EAAard,GACzB,IACE,aAAa3E,KAAKue,SAASyD,EAAard,EACzC,CAAC,MAAOgV,GACP,GAAIA,aAAe9W,MAAO,CACxB,IAAIof,EAAQ,CAAA,EAEZpf,MAAMqf,kBAAoBrf,MAAMqf,kBAAkBD,GAAUA,EAAQ,IAAIpf,MAGxE,MAAMkB,EAAQke,EAAMle,MAAQke,EAAMle,MAAMpD,QAAQ,QAAS,IAAM,GAC/D,IACOgZ,EAAI5V,MAGEA,IAAUnC,OAAO+X,EAAI5V,OAAOtC,SAASsC,EAAMpD,QAAQ,YAAa,OACzEgZ,EAAI5V,OAAS,KAAOA,GAHpB4V,EAAI5V,MAAQA,CAKf,CAAC,MAAO3E,GAER,CACF,CAED,MAAMua,CACP,CACF,CAED,QAAA4E,CAASyD,EAAard,GAGO,iBAAhBqd,GACTrd,EAASA,GAAU,IACZqE,IAAMgZ,EAEbrd,EAASqd,GAAe,GAG1Brd,EAAS2R,GAAYtW,KAAKiM,SAAUtH,GAEpC,MAAMuH,aAAEA,EAAY6K,iBAAEA,EAAgB1K,QAAEA,GAAY1H,OAE/B7J,IAAjBoR,GACF6U,GAAUU,cACRvV,EACA,CACE9B,kBAAmByW,GAAW3U,aAAa2U,GAAWsB,SACtD9X,kBAAmBwW,GAAW3U,aAAa2U,GAAWsB,SACtD7X,oBAAqBuW,GAAW3U,aAAa2U,GAAWsB,SACxD5X,gCAAiCsW,GAAW3U,aAAa2U,GAAWsB,WAEtE,GAIoB,MAApBpL,IACEpR,EAAM9L,WAAWkd,GACnBpS,EAAOoS,iBAAmB,CACxB5N,UAAW4N,GAGbgK,GAAUU,cACR1K,EACA,CACEvO,OAAQqY,GAAWuB,SACnBjZ,UAAW0X,GAAWuB,WAExB,SAM2BtnB,IAA7B6J,EAAOsR,yBAEoCnb,IAApCkF,KAAKiM,SAASgK,kBACvBtR,EAAOsR,kBAAoBjW,KAAKiM,SAASgK,kBAEzCtR,EAAOsR,mBAAoB,GAG7B8K,GAAUU,cACR9c,EACA,CACE0d,QAASxB,GAAWU,SAAS,WAC7Be,cAAezB,GAAWU,SAAS,mBAErC,GAIF5c,EAAOuJ,QAAUvJ,EAAOuJ,QAAUlO,KAAKiM,SAASiC,QAAU,OAAO/U,cAGjE,IAAIopB,EAAiBlW,GAAW1G,EAAM9F,MAAMwM,EAAQ2B,OAAQ3B,EAAQ1H,EAAOuJ,SAE3E7B,GACE1G,EAAMtK,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,UAAY6S,WACnE7B,EAAQ6B,KAGnBvJ,EAAO0H,QAAUsC,GAAa7H,OAAOyb,EAAgBlW,GAGrD,MAAMmW,EAA0B,GAChC,IAAIC,GAAiC,EACrCziB,KAAK8hB,aAAald,QAAQvJ,QAAQ,SAAoCqnB,GACpE,GAAmC,mBAAxBA,EAAY5Y,UAA0D,IAAhC4Y,EAAY5Y,QAAQnF,GACnE,OAGF8d,EAAiCA,GAAkCC,EAAY7Y,YAE/E,MAAMqC,EAAevH,EAAOuH,cAAgB/B,GAE1C+B,GAAgBA,EAAa3B,gCAG7BiY,EAAwBG,QAAQD,EAAY/Y,UAAW+Y,EAAY9Y,UAEnE4Y,EAAwBrkB,KAAKukB,EAAY/Y,UAAW+Y,EAAY9Y,SAExE,GAEI,MAAMgZ,EAA2B,GAKjC,IAAIC,EAJJ7iB,KAAK8hB,aAAajd,SAASxJ,QAAQ,SAAkCqnB,GACnEE,EAAyBzkB,KAAKukB,EAAY/Y,UAAW+Y,EAAY9Y,SACvE,GAGI,IACI/N,EADAL,EAAI,EAGR,IAAKinB,EAAgC,CACnC,MAAMK,EAAQ,CAACnC,GAAgB3oB,KAAKgI,WAAOlF,GAO3C,IANAgoB,EAAMH,WAAWH,GACjBM,EAAM3kB,QAAQykB,GACd/mB,EAAMinB,EAAMpnB,OAEZmnB,EAAUjK,QAAQ5G,QAAQrN,GAEnBnJ,EAAIK,GACTgnB,EAAUA,EAAQze,KAAK0e,EAAMtnB,KAAMsnB,EAAMtnB,MAG3C,OAAOqnB,CACR,CAEDhnB,EAAM2mB,EAAwB9mB,OAE9B,IAAIqc,EAAYpT,EAEhB,KAAOnJ,EAAIK,GAAK,CACd,MAAMknB,EAAcP,EAAwBhnB,KACtCwnB,EAAaR,EAAwBhnB,KAC3C,IACEuc,EAAYgL,EAAYhL,EACzB,CAAC,MAAOtT,GACPue,EAAW/pB,KAAK+G,KAAMyE,GACtB,KACD,CACF,CAED,IACEoe,EAAUlC,GAAgB1nB,KAAK+G,KAAM+X,EACtC,CAAC,MAAOtT,GACP,OAAOmU,QAAQ3G,OAAOxN,EACvB,CAKD,IAHAjJ,EAAI,EACJK,EAAM+mB,EAAyBlnB,OAExBF,EAAIK,GACTgnB,EAAUA,EAAQze,KAAKwe,EAAyBpnB,KAAMonB,EAAyBpnB,MAGjF,OAAOqnB,CACR,CAED,MAAAI,CAAOte,GAGL,OAAOoE,GADU+M,IADjBnR,EAAS2R,GAAYtW,KAAKiM,SAAUtH,IACEoR,QAASpR,EAAOqE,IAAKrE,EAAOsR,mBACxCtR,EAAOkE,OAAQlE,EAAOoS,iBACjD,EAIHpR,EAAMtK,QAAQ,CAAC,SAAU,MAAO,OAAQ,WAAY,SAA6B6S,GAE/E0T,GAAMrpB,UAAU2V,GAAU,SAAUlF,EAAKrE,GACvC,OAAO3E,KAAK4E,QACV0R,GAAY3R,GAAU,GAAI,CACxBuJ,SACAlF,MACAhL,MAAO2G,GAAU,CAAA,GAAI3G,OAG7B,CACA,GAEA2H,EAAMtK,QAAQ,CAAC,OAAQ,MAAO,SAAU,SAA+B6S,GAGrE,SAASgV,EAAmBC,GAC1B,OAAO,SAAoBna,EAAKhL,EAAM2G,GACpC,OAAO3E,KAAK4E,QACV0R,GAAY3R,GAAU,GAAI,CACxBuJ,SACA7B,QAAS8W,EACL,CACE,eAAgB,uBAElB,CAAE,EACNna,MACAhL,SAGV,CACG,CAED4jB,GAAMrpB,UAAU2V,GAAUgV,IAE1BtB,GAAMrpB,UAAU2V,EAAS,QAAUgV,GAAmB,EACxD,GAEA,MAAAE,GAAexB,GC3Pf,MAAMyB,GACJ,WAAAzpB,CAAY0pB,GACV,GAAwB,mBAAbA,EACT,MAAM,IAAIlc,UAAU,gCAGtB,IAAImc,EAEJvjB,KAAK6iB,QAAU,IAAIjK,QAAQ,SAAyB5G,GAClDuR,EAAiBvR,CACvB,GAEI,MAAMtU,EAAQsC,KAGdA,KAAK6iB,QAAQze,KAAMqW,IACjB,IAAK/c,EAAM8lB,WAAY,OAEvB,IAAIhoB,EAAIkC,EAAM8lB,WAAW9nB,OAEzB,KAAOF,KAAM,GACXkC,EAAM8lB,WAAWhoB,GAAGif,GAEtB/c,EAAM8lB,WAAa,OAIrBxjB,KAAK6iB,QAAQze,KAAQqf,IACnB,IAAIC,EAEJ,MAAMb,EAAU,IAAIjK,QAAS5G,IAC3BtU,EAAMkd,UAAU5I,GAChB0R,EAAW1R,IACV5N,KAAKqf,GAMR,OAJAZ,EAAQpI,OAAS,WACf/c,EAAM2b,YAAYqK,EAC1B,EAEab,GAGTS,EAAS,SAAgBte,EAASL,EAAQC,GACpClH,EAAM2d,SAKV3d,EAAM2d,OAAS,IAAIX,GAAc1V,EAASL,EAAQC,GAClD2e,EAAe7lB,EAAM2d,QAC3B,EACG,CAKD,gBAAAqF,GACE,GAAI1gB,KAAKqb,OACP,MAAMrb,KAAKqb,MAEd,CAMD,SAAAT,CAAUxI,GACJpS,KAAKqb,OACPjJ,EAASpS,KAAKqb,QAIZrb,KAAKwjB,WACPxjB,KAAKwjB,WAAWrlB,KAAKiU,GAErBpS,KAAKwjB,WAAa,CAACpR,EAEtB,CAMD,WAAAiH,CAAYjH,GACV,IAAKpS,KAAKwjB,WACR,OAEF,MAAMpb,EAAQpI,KAAKwjB,WAAW1hB,QAAQsQ,IACvB,IAAXhK,GACFpI,KAAKwjB,WAAWG,OAAOvb,EAAO,EAEjC,CAED,aAAAyW,GACE,MAAM1D,EAAa,IAAIC,gBAEjBT,EAAShB,IACbwB,EAAWR,MAAMhB,IAOnB,OAJA3Z,KAAK4a,UAAUD,GAEfQ,EAAW7B,OAAOD,YAAc,IAAMrZ,KAAKqZ,YAAYsB,GAEhDQ,EAAW7B,MACnB,CAMD,aAAOvb,GACL,IAAI0c,EAIJ,MAAO,CACL/c,MAJY,IAAI2lB,GAAY,SAAkBO,GAC9CnJ,EAASmJ,CACf,GAGMnJ,SAEH,EAGH,MAAAoJ,GAAeR,GCtIf,MAAMS,GAAiB,CACrBC,SAAU,IACVC,mBAAoB,IACpBC,WAAY,IACZC,WAAY,IACZC,GAAI,IACJC,QAAS,IACTC,SAAU,IACVC,4BAA6B,IAC7BC,UAAW,IACXC,aAAc,IACdC,eAAgB,IAChBC,YAAa,IACbC,gBAAiB,IACjBC,OAAQ,IACRC,gBAAiB,IACjBC,iBAAkB,IAClBC,MAAO,IACPC,SAAU,IACVC,YAAa,IACbC,SAAU,IACVC,OAAQ,IACRC,kBAAmB,IACnBC,kBAAmB,IACnBC,WAAY,IACZC,aAAc,IACdC,gBAAiB,IACjBC,UAAW,IACXC,SAAU,IACVC,iBAAkB,IAClBC,cAAe,IACfC,4BAA6B,IAC7BC,eAAgB,IAChBC,SAAU,IACVC,KAAM,IACNC,eAAgB,IAChBC,mBAAoB,IACpBC,gBAAiB,IACjBC,WAAY,IACZC,qBAAsB,IACtBC,oBAAqB,IACrBC,kBAAmB,IACnBC,UAAW,IACXC,mBAAoB,IACpBC,oBAAqB,IACrBC,OAAQ,IACRC,iBAAkB,IAClBC,SAAU,IACVC,gBAAiB,IACjBC,qBAAsB,IACtBC,gBAAiB,IACjBC,4BAA6B,IAC7BC,2BAA4B,IAC5BC,oBAAqB,IACrBC,eAAgB,IAChBC,WAAY,IACZC,mBAAoB,IACpBC,eAAgB,IAChBC,wBAAyB,IACzBC,sBAAuB,IACvBC,oBAAqB,IACrBC,aAAc,IACdC,YAAa,IACbC,8BAA+B,IAC/BC,gBAAiB,IACjBC,mBAAoB,IACpBC,oBAAqB,IACrBC,gBAAiB,IACjBC,mBAAoB,IACpBC,sBAAuB,KAGzB7vB,OAAOyT,QAAQ+X,IAAgBzoB,QAAQ,EAAES,EAAKwD,MAC5CwkB,GAAexkB,GAASxD,IAG1B,MAAAssB,GAAetE,GC9Bf,MAAMuE,GAnBN,SAASC,EAAeC,GACtB,MAAMpsB,EAAU,IAAIylB,GAAM2G,GACpBC,EAAWxwB,EAAK4pB,GAAMrpB,UAAUqM,QAASzI,GAa/C,OAVAwJ,EAAMxF,OAAOqoB,EAAU5G,GAAMrpB,UAAW4D,EAAS,CAAEZ,YAAY,IAG/DoK,EAAMxF,OAAOqoB,EAAUrsB,EAAS,KAAM,CAAEZ,YAAY,IAGpDitB,EAAS1vB,OAAS,SAAgB+oB,GAChC,OAAOyG,EAAehS,GAAYiS,EAAe1G,GACrD,EAES2G,CACT,CAGcF,CAAerc,IAG7Boc,GAAMzG,MAAQA,GAGdyG,GAAM3N,cAAgBA,GACtB2N,GAAMhF,YAAcA,GACpBgF,GAAMzW,SAAWA,GACjByW,GAAMzH,QAAUA,GAChByH,GAAMnhB,WAAaA,EAGnBmhB,GAAM9jB,WAAaA,EAGnB8jB,GAAMI,OAASJ,GAAM3N,cAGrB2N,GAAMK,IAAM,SAAaC,GACvB,OAAO/P,QAAQ8P,IAAIC,EACrB,EAEAN,GAAMO,OC9CS,SAAgBC,GAC7B,OAAO,SAAc7mB,GACnB,OAAO6mB,EAAS1wB,MAAM,KAAM6J,EAChC,CACA,ED6CAqmB,GAAMjjB,aE7DS,SAAsB0jB,GACnC,OAAOnjB,EAAM1L,SAAS6uB,KAAqC,IAAzBA,EAAQ1jB,YAC5C,EF8DAijB,GAAM/R,YAAcA,GAEpB+R,GAAM1Z,aAAeA,GAErB0Z,GAAMU,WAAchwB,GAAU2S,GAAe/F,EAAMpJ,WAAWxD,GAAS,IAAI8B,SAAS9B,GAASA,GAE7FsvB,GAAMlI,WAAaD,GAASC,WAE5BkI,GAAMvE,eAAiBA,GAEvBuE,GAAMW,QAAUX,GAGhB,MAAAY,GAAeZ,IGnFTzG,MACJA,GAAKrd,WACLA,GAAUmW,cACVA,GAAa9I,SACbA,GAAQyR,YACRA,GAAWzC,QACXA,GAAO8H,IACPA,GAAGD,OACHA,GAAMrjB,aACNA,GAAYwjB,OACZA,GAAM1hB,WACNA,GAAUyH,aACVA,GAAYmV,eACZA,GAAciF,WACdA,GAAU5I,WACVA,GAAU7J,YACVA,IACE+R"} \ No newline at end of file diff --git a/node_modules/axios/dist/node/axios.cjs b/node_modules/axios/dist/node/axios.cjs new file mode 100644 index 0000000..388ce82 --- /dev/null +++ b/node_modules/axios/dist/node/axios.cjs @@ -0,0 +1,5643 @@ +/*! Axios v1.13.6 Copyright (c) 2026 Matt Zabriskie and contributors */ +'use strict'; + +const FormData$1 = require('form-data'); +const crypto = require('crypto'); +const url = require('url'); +const proxyFromEnv = require('proxy-from-env'); +const http = require('http'); +const https = require('https'); +const http2 = require('http2'); +const util = require('util'); +const followRedirects = require('follow-redirects'); +const zlib = require('zlib'); +const stream = require('stream'); +const events = require('events'); + +function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } + +const FormData__default = /*#__PURE__*/_interopDefaultLegacy(FormData$1); +const crypto__default = /*#__PURE__*/_interopDefaultLegacy(crypto); +const url__default = /*#__PURE__*/_interopDefaultLegacy(url); +const proxyFromEnv__default = /*#__PURE__*/_interopDefaultLegacy(proxyFromEnv); +const http__default = /*#__PURE__*/_interopDefaultLegacy(http); +const https__default = /*#__PURE__*/_interopDefaultLegacy(https); +const http2__default = /*#__PURE__*/_interopDefaultLegacy(http2); +const util__default = /*#__PURE__*/_interopDefaultLegacy(util); +const followRedirects__default = /*#__PURE__*/_interopDefaultLegacy(followRedirects); +const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib); +const stream__default = /*#__PURE__*/_interopDefaultLegacy(stream); + +/** + * Create a bound version of a function with a specified `this` context + * + * @param {Function} fn - The function to bind + * @param {*} thisArg - The value to be passed as the `this` parameter + * @returns {Function} A new function that will call the original function with the specified `this` context + */ +function bind(fn, thisArg) { + return function wrap() { + return fn.apply(thisArg, arguments); + }; +} + +// utils is a library of generic helper functions non-specific to axios + +const { toString } = Object.prototype; +const { getPrototypeOf } = Object; +const { iterator, toStringTag } = Symbol; + +const kindOf = ((cache) => (thing) => { + const str = toString.call(thing); + return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); +})(Object.create(null)); + +const kindOfTest = (type) => { + type = type.toLowerCase(); + return (thing) => kindOf(thing) === type; +}; + +const typeOfTest = (type) => (thing) => typeof thing === type; + +/** + * Determine if a value is a non-null object + * + * @param {Object} val The value to test + * + * @returns {boolean} True if value is an Array, otherwise false + */ +const { isArray } = Array; + +/** + * Determine if a value is undefined + * + * @param {*} val The value to test + * + * @returns {boolean} True if the value is undefined, otherwise false + */ +const isUndefined = typeOfTest('undefined'); + +/** + * Determine if a value is a Buffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return ( + val !== null && + !isUndefined(val) && + val.constructor !== null && + !isUndefined(val.constructor) && + isFunction$1(val.constructor.isBuffer) && + val.constructor.isBuffer(val) + ); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +const isArrayBuffer = kindOfTest('ArrayBuffer'); + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + let result; + if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) { + result = ArrayBuffer.isView(val); + } else { + result = val && val.buffer && isArrayBuffer(val.buffer); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a String, otherwise false + */ +const isString = typeOfTest('string'); + +/** + * Determine if a value is a Function + * + * @param {*} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +const isFunction$1 = typeOfTest('function'); + +/** + * Determine if a value is a Number + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Number, otherwise false + */ +const isNumber = typeOfTest('number'); + +/** + * Determine if a value is an Object + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an Object, otherwise false + */ +const isObject = (thing) => thing !== null && typeof thing === 'object'; + +/** + * Determine if a value is a Boolean + * + * @param {*} thing The value to test + * @returns {boolean} True if value is a Boolean, otherwise false + */ +const isBoolean = (thing) => thing === true || thing === false; + +/** + * Determine if a value is a plain Object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a plain Object, otherwise false + */ +const isPlainObject = (val) => { + if (kindOf(val) !== 'object') { + return false; + } + + const prototype = getPrototypeOf(val); + return ( + (prototype === null || + prototype === Object.prototype || + Object.getPrototypeOf(prototype) === null) && + !(toStringTag in val) && + !(iterator in val) + ); +}; + +/** + * Determine if a value is an empty object (safely handles Buffers) + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an empty object, otherwise false + */ +const isEmptyObject = (val) => { + // Early return for non-objects or Buffers to prevent RangeError + if (!isObject(val) || isBuffer(val)) { + return false; + } + + try { + return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype; + } catch (e) { + // Fallback for any other objects that might cause RangeError with Object.keys() + return false; + } +}; + +/** + * Determine if a value is a Date + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Date, otherwise false + */ +const isDate = kindOfTest('Date'); + +/** + * Determine if a value is a File + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFile = kindOfTest('File'); + +/** + * Determine if a value is a React Native Blob + * React Native "blob": an object with a `uri` attribute. Optionally, it can + * also have a `name` and `type` attribute to specify filename and content type + * + * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71 + * + * @param {*} value The value to test + * + * @returns {boolean} True if value is a React Native Blob, otherwise false + */ +const isReactNativeBlob = (value) => { + return !!(value && typeof value.uri !== 'undefined'); +}; + +/** + * Determine if environment is React Native + * ReactNative `FormData` has a non-standard `getParts()` method + * + * @param {*} formData The formData to test + * + * @returns {boolean} True if environment is React Native, otherwise false + */ +const isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined'; + +/** + * Determine if a value is a Blob + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Blob, otherwise false + */ +const isBlob = kindOfTest('Blob'); + +/** + * Determine if a value is a FileList + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFileList = kindOfTest('FileList'); + +/** + * Determine if a value is a Stream + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Stream, otherwise false + */ +const isStream = (val) => isObject(val) && isFunction$1(val.pipe); + +/** + * Determine if a value is a FormData + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an FormData, otherwise false + */ +function getGlobal() { + if (typeof globalThis !== 'undefined') return globalThis; + if (typeof self !== 'undefined') return self; + if (typeof window !== 'undefined') return window; + if (typeof global !== 'undefined') return global; + return {}; +} + +const G = getGlobal(); +const FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined; + +const isFormData = (thing) => { + let kind; + return thing && ( + (FormDataCtor && thing instanceof FormDataCtor) || ( + isFunction$1(thing.append) && ( + (kind = kindOf(thing)) === 'formdata' || + // detect form-data instance + (kind === 'object' && isFunction$1(thing.toString) && thing.toString() === '[object FormData]') + ) + ) + ); +}; + +/** + * Determine if a value is a URLSearchParams object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +const isURLSearchParams = kindOfTest('URLSearchParams'); + +const [isReadableStream, isRequest, isResponse, isHeaders] = [ + 'ReadableStream', + 'Request', + 'Response', + 'Headers', +].map(kindOfTest); + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * + * @returns {String} The String freed of excess whitespace + */ +const trim = (str) => { + return str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); +}; +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + * + * @param {Object} [options] + * @param {Boolean} [options.allOwnKeys = false] + * @returns {any} + */ +function forEach(obj, fn, { allOwnKeys = false } = {}) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + let i; + let l; + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Buffer check + if (isBuffer(obj)) { + return; + } + + // Iterate over object keys + const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); + const len = keys.length; + let key; + + for (i = 0; i < len; i++) { + key = keys[i]; + fn.call(null, obj[key], key, obj); + } + } +} + +/** + * Finds a key in an object, case-insensitive, returning the actual key name. + * Returns null if the object is a Buffer or if no match is found. + * + * @param {Object} obj - The object to search. + * @param {string} key - The key to find (case-insensitive). + * @returns {?string} The actual key name if found, otherwise null. + */ +function findKey(obj, key) { + if (isBuffer(obj)) { + return null; + } + + key = key.toLowerCase(); + const keys = Object.keys(obj); + let i = keys.length; + let _key; + while (i-- > 0) { + _key = keys[i]; + if (key === _key.toLowerCase()) { + return _key; + } + } + return null; +} + +const _global = (() => { + /*eslint no-undef:0*/ + if (typeof globalThis !== 'undefined') return globalThis; + return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global; +})(); + +const isContextDefined = (context) => !isUndefined(context) && context !== _global; + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * const result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + const { caseless, skipUndefined } = (isContextDefined(this) && this) || {}; + const result = {}; + const assignValue = (val, key) => { + // Skip dangerous property names to prevent prototype pollution + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return; + } + + const targetKey = (caseless && findKey(result, key)) || key; + if (isPlainObject(result[targetKey]) && isPlainObject(val)) { + result[targetKey] = merge(result[targetKey], val); + } else if (isPlainObject(val)) { + result[targetKey] = merge({}, val); + } else if (isArray(val)) { + result[targetKey] = val.slice(); + } else if (!skipUndefined || !isUndefined(val)) { + result[targetKey] = val; + } + }; + + for (let i = 0, l = arguments.length; i < l; i++) { + arguments[i] && forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * + * @param {Object} [options] + * @param {Boolean} [options.allOwnKeys] + * @returns {Object} The resulting value of object a + */ +const extend = (a, b, thisArg, { allOwnKeys } = {}) => { + forEach( + b, + (val, key) => { + if (thisArg && isFunction$1(val)) { + Object.defineProperty(a, key, { + value: bind(val, thisArg), + writable: true, + enumerable: true, + configurable: true, + }); + } else { + Object.defineProperty(a, key, { + value: val, + writable: true, + enumerable: true, + configurable: true, + }); + } + }, + { allOwnKeys } + ); + return a; +}; + +/** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * + * @returns {string} content value without BOM + */ +const stripBOM = (content) => { + if (content.charCodeAt(0) === 0xfeff) { + content = content.slice(1); + } + return content; +}; + +/** + * Inherit the prototype methods from one constructor into another + * @param {function} constructor + * @param {function} superConstructor + * @param {object} [props] + * @param {object} [descriptors] + * + * @returns {void} + */ +const inherits = (constructor, superConstructor, props, descriptors) => { + constructor.prototype = Object.create(superConstructor.prototype, descriptors); + Object.defineProperty(constructor.prototype, 'constructor', { + value: constructor, + writable: true, + enumerable: false, + configurable: true, + }); + Object.defineProperty(constructor, 'super', { + value: superConstructor.prototype, + }); + props && Object.assign(constructor.prototype, props); +}; + +/** + * Resolve object with deep prototype chain to a flat object + * @param {Object} sourceObj source object + * @param {Object} [destObj] + * @param {Function|Boolean} [filter] + * @param {Function} [propFilter] + * + * @returns {Object} + */ +const toFlatObject = (sourceObj, destObj, filter, propFilter) => { + let props; + let i; + let prop; + const merged = {}; + + destObj = destObj || {}; + // eslint-disable-next-line no-eq-null,eqeqeq + if (sourceObj == null) return destObj; + + do { + props = Object.getOwnPropertyNames(sourceObj); + i = props.length; + while (i-- > 0) { + prop = props[i]; + if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { + destObj[prop] = sourceObj[prop]; + merged[prop] = true; + } + } + sourceObj = filter !== false && getPrototypeOf(sourceObj); + } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); + + return destObj; +}; + +/** + * Determines whether a string ends with the characters of a specified string + * + * @param {String} str + * @param {String} searchString + * @param {Number} [position= 0] + * + * @returns {boolean} + */ +const endsWith = (str, searchString, position) => { + str = String(str); + if (position === undefined || position > str.length) { + position = str.length; + } + position -= searchString.length; + const lastIndex = str.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; +}; + +/** + * Returns new array from array like object or null if failed + * + * @param {*} [thing] + * + * @returns {?Array} + */ +const toArray = (thing) => { + if (!thing) return null; + if (isArray(thing)) return thing; + let i = thing.length; + if (!isNumber(i)) return null; + const arr = new Array(i); + while (i-- > 0) { + arr[i] = thing[i]; + } + return arr; +}; + +/** + * Checking if the Uint8Array exists and if it does, it returns a function that checks if the + * thing passed in is an instance of Uint8Array + * + * @param {TypedArray} + * + * @returns {Array} + */ +// eslint-disable-next-line func-names +const isTypedArray = ((TypedArray) => { + // eslint-disable-next-line func-names + return (thing) => { + return TypedArray && thing instanceof TypedArray; + }; +})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); + +/** + * For each entry in the object, call the function with the key and value. + * + * @param {Object} obj - The object to iterate over. + * @param {Function} fn - The function to call for each entry. + * + * @returns {void} + */ +const forEachEntry = (obj, fn) => { + const generator = obj && obj[iterator]; + + const _iterator = generator.call(obj); + + let result; + + while ((result = _iterator.next()) && !result.done) { + const pair = result.value; + fn.call(obj, pair[0], pair[1]); + } +}; + +/** + * It takes a regular expression and a string, and returns an array of all the matches + * + * @param {string} regExp - The regular expression to match against. + * @param {string} str - The string to search. + * + * @returns {Array} + */ +const matchAll = (regExp, str) => { + let matches; + const arr = []; + + while ((matches = regExp.exec(str)) !== null) { + arr.push(matches); + } + + return arr; +}; + +/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ +const isHTMLForm = kindOfTest('HTMLFormElement'); + +const toCamelCase = (str) => { + return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { + return p1.toUpperCase() + p2; + }); +}; + +/* Creating a function that will check if an object has a property. */ +const hasOwnProperty = ( + ({ hasOwnProperty }) => + (obj, prop) => + hasOwnProperty.call(obj, prop) +)(Object.prototype); + +/** + * Determine if a value is a RegExp object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a RegExp object, otherwise false + */ +const isRegExp = kindOfTest('RegExp'); + +const reduceDescriptors = (obj, reducer) => { + const descriptors = Object.getOwnPropertyDescriptors(obj); + const reducedDescriptors = {}; + + forEach(descriptors, (descriptor, name) => { + let ret; + if ((ret = reducer(descriptor, name, obj)) !== false) { + reducedDescriptors[name] = ret || descriptor; + } + }); + + Object.defineProperties(obj, reducedDescriptors); +}; + +/** + * Makes all methods read-only + * @param {Object} obj + */ + +const freezeMethods = (obj) => { + reduceDescriptors(obj, (descriptor, name) => { + // skip restricted props in strict mode + if (isFunction$1(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { + return false; + } + + const value = obj[name]; + + if (!isFunction$1(value)) return; + + descriptor.enumerable = false; + + if ('writable' in descriptor) { + descriptor.writable = false; + return; + } + + if (!descriptor.set) { + descriptor.set = () => { + throw Error("Can not rewrite read-only method '" + name + "'"); + }; + } + }); +}; + +/** + * Converts an array or a delimited string into an object set with values as keys and true as values. + * Useful for fast membership checks. + * + * @param {Array|string} arrayOrString - The array or string to convert. + * @param {string} delimiter - The delimiter to use if input is a string. + * @returns {Object} An object with keys from the array or string, values set to true. + */ +const toObjectSet = (arrayOrString, delimiter) => { + const obj = {}; + + const define = (arr) => { + arr.forEach((value) => { + obj[value] = true; + }); + }; + + isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); + + return obj; +}; + +const noop = () => {}; + +const toFiniteNumber = (value, defaultValue) => { + return value != null && Number.isFinite((value = +value)) ? value : defaultValue; +}; + +/** + * If the thing is a FormData object, return true, otherwise return false. + * + * @param {unknown} thing - The thing to check. + * + * @returns {boolean} + */ +function isSpecCompliantForm(thing) { + return !!( + thing && + isFunction$1(thing.append) && + thing[toStringTag] === 'FormData' && + thing[iterator] + ); +} + +/** + * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers. + * + * @param {Object} obj - The object to convert. + * @returns {Object} The JSON-compatible object. + */ +const toJSONObject = (obj) => { + const stack = new Array(10); + + const visit = (source, i) => { + if (isObject(source)) { + if (stack.indexOf(source) >= 0) { + return; + } + + //Buffer check + if (isBuffer(source)) { + return source; + } + + if (!('toJSON' in source)) { + stack[i] = source; + const target = isArray(source) ? [] : {}; + + forEach(source, (value, key) => { + const reducedValue = visit(value, i + 1); + !isUndefined(reducedValue) && (target[key] = reducedValue); + }); + + stack[i] = undefined; + + return target; + } + } + + return source; + }; + + return visit(obj, 0); +}; + +/** + * Determines if a value is an async function. + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is an async function, otherwise false. + */ +const isAsyncFn = kindOfTest('AsyncFunction'); + +/** + * Determines if a value is thenable (has then and catch methods). + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is thenable, otherwise false. + */ +const isThenable = (thing) => + thing && + (isObject(thing) || isFunction$1(thing)) && + isFunction$1(thing.then) && + isFunction$1(thing.catch); + +// original code +// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34 + +/** + * Provides a cross-platform setImmediate implementation. + * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout. + * + * @param {boolean} setImmediateSupported - Whether setImmediate is supported. + * @param {boolean} postMessageSupported - Whether postMessage is supported. + * @returns {Function} A function to schedule a callback asynchronously. + */ +const _setImmediate = ((setImmediateSupported, postMessageSupported) => { + if (setImmediateSupported) { + return setImmediate; + } + + return postMessageSupported + ? ((token, callbacks) => { + _global.addEventListener( + 'message', + ({ source, data }) => { + if (source === _global && data === token) { + callbacks.length && callbacks.shift()(); + } + }, + false + ); + + return (cb) => { + callbacks.push(cb); + _global.postMessage(token, '*'); + }; + })(`axios@${Math.random()}`, []) + : (cb) => setTimeout(cb); +})(typeof setImmediate === 'function', isFunction$1(_global.postMessage)); + +/** + * Schedules a microtask or asynchronous callback as soon as possible. + * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate. + * + * @type {Function} + */ +const asap = + typeof queueMicrotask !== 'undefined' + ? queueMicrotask.bind(_global) + : (typeof process !== 'undefined' && process.nextTick) || _setImmediate; + +// ********************* + +const isIterable = (thing) => thing != null && isFunction$1(thing[iterator]); + +const utils$1 = { + isArray, + isArrayBuffer, + isBuffer, + isFormData, + isArrayBufferView, + isString, + isNumber, + isBoolean, + isObject, + isPlainObject, + isEmptyObject, + isReadableStream, + isRequest, + isResponse, + isHeaders, + isUndefined, + isDate, + isFile, + isReactNativeBlob, + isReactNative, + isBlob, + isRegExp, + isFunction: isFunction$1, + isStream, + isURLSearchParams, + isTypedArray, + isFileList, + forEach, + merge, + extend, + trim, + stripBOM, + inherits, + toFlatObject, + kindOf, + kindOfTest, + endsWith, + toArray, + forEachEntry, + matchAll, + isHTMLForm, + hasOwnProperty, + hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection + reduceDescriptors, + freezeMethods, + toObjectSet, + toCamelCase, + noop, + toFiniteNumber, + findKey, + global: _global, + isContextDefined, + isSpecCompliantForm, + toJSONObject, + isAsyncFn, + isThenable, + setImmediate: _setImmediate, + asap, + isIterable, +}; + +class AxiosError extends Error { + static from(error, code, config, request, response, customProps) { + const axiosError = new AxiosError(error.message, code || error.code, config, request, response); + axiosError.cause = error; + axiosError.name = error.name; + + // Preserve status from the original error if not already set from response + if (error.status != null && axiosError.status == null) { + axiosError.status = error.status; + } + + customProps && Object.assign(axiosError, customProps); + return axiosError; + } + + /** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [config] The config. + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * + * @returns {Error} The created error. + */ + constructor(message, code, config, request, response) { + super(message); + + // Make message enumerable to maintain backward compatibility + // The native Error constructor sets message as non-enumerable, + // but axios < v1.13.3 had it as enumerable + Object.defineProperty(this, 'message', { + value: message, + enumerable: true, + writable: true, + configurable: true + }); + + this.name = 'AxiosError'; + this.isAxiosError = true; + code && (this.code = code); + config && (this.config = config); + request && (this.request = request); + if (response) { + this.response = response; + this.status = response.status; + } + } + + toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: utils$1.toJSONObject(this.config), + code: this.code, + status: this.status, + }; + } +} + +// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated. +AxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE'; +AxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION'; +AxiosError.ECONNABORTED = 'ECONNABORTED'; +AxiosError.ETIMEDOUT = 'ETIMEDOUT'; +AxiosError.ERR_NETWORK = 'ERR_NETWORK'; +AxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS'; +AxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED'; +AxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE'; +AxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST'; +AxiosError.ERR_CANCELED = 'ERR_CANCELED'; +AxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT'; +AxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL'; + +const AxiosError$1 = AxiosError; + +/** + * Determines if the given thing is a array or js object. + * + * @param {string} thing - The object or array to be visited. + * + * @returns {boolean} + */ +function isVisitable(thing) { + return utils$1.isPlainObject(thing) || utils$1.isArray(thing); +} + +/** + * It removes the brackets from the end of a string + * + * @param {string} key - The key of the parameter. + * + * @returns {string} the key without the brackets. + */ +function removeBrackets(key) { + return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key; +} + +/** + * It takes a path, a key, and a boolean, and returns a string + * + * @param {string} path - The path to the current key. + * @param {string} key - The key of the current object being iterated over. + * @param {string} dots - If true, the key will be rendered with dots instead of brackets. + * + * @returns {string} The path to the current key. + */ +function renderKey(path, key, dots) { + if (!path) return key; + return path + .concat(key) + .map(function each(token, i) { + // eslint-disable-next-line no-param-reassign + token = removeBrackets(token); + return !dots && i ? '[' + token + ']' : token; + }) + .join(dots ? '.' : ''); +} + +/** + * If the array is an array and none of its elements are visitable, then it's a flat array. + * + * @param {Array} arr - The array to check + * + * @returns {boolean} + */ +function isFlatArray(arr) { + return utils$1.isArray(arr) && !arr.some(isVisitable); +} + +const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { + return /^is[A-Z]/.test(prop); +}); + +/** + * Convert a data object to FormData + * + * @param {Object} obj + * @param {?Object} [formData] + * @param {?Object} [options] + * @param {Function} [options.visitor] + * @param {Boolean} [options.metaTokens = true] + * @param {Boolean} [options.dots = false] + * @param {?Boolean} [options.indexes = false] + * + * @returns {Object} + **/ + +/** + * It converts an object into a FormData object + * + * @param {Object} obj - The object to convert to form data. + * @param {string} formData - The FormData object to append to. + * @param {Object} options + * + * @returns + */ +function toFormData(obj, formData, options) { + if (!utils$1.isObject(obj)) { + throw new TypeError('target must be an object'); + } + + // eslint-disable-next-line no-param-reassign + formData = formData || new (FormData__default["default"] || FormData)(); + + // eslint-disable-next-line no-param-reassign + options = utils$1.toFlatObject( + options, + { + metaTokens: true, + dots: false, + indexes: false, + }, + false, + function defined(option, source) { + // eslint-disable-next-line no-eq-null,eqeqeq + return !utils$1.isUndefined(source[option]); + } + ); + + const metaTokens = options.metaTokens; + // eslint-disable-next-line no-use-before-define + const visitor = options.visitor || defaultVisitor; + const dots = options.dots; + const indexes = options.indexes; + const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob); + const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); + + if (!utils$1.isFunction(visitor)) { + throw new TypeError('visitor must be a function'); + } + + function convertValue(value) { + if (value === null) return ''; + + if (utils$1.isDate(value)) { + return value.toISOString(); + } + + if (utils$1.isBoolean(value)) { + return value.toString(); + } + + if (!useBlob && utils$1.isBlob(value)) { + throw new AxiosError$1('Blob is not supported. Use a Buffer instead.'); + } + + if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { + return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); + } + + return value; + } + + /** + * Default visitor. + * + * @param {*} value + * @param {String|Number} key + * @param {Array} path + * @this {FormData} + * + * @returns {boolean} return true to visit the each prop of the value recursively + */ + function defaultVisitor(value, key, path) { + let arr = value; + + if (utils$1.isReactNative(formData) && utils$1.isReactNativeBlob(value)) { + formData.append(renderKey(path, key, dots), convertValue(value)); + return false; + } + + if (value && !path && typeof value === 'object') { + if (utils$1.endsWith(key, '{}')) { + // eslint-disable-next-line no-param-reassign + key = metaTokens ? key : key.slice(0, -2); + // eslint-disable-next-line no-param-reassign + value = JSON.stringify(value); + } else if ( + (utils$1.isArray(value) && isFlatArray(value)) || + ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))) + ) { + // eslint-disable-next-line no-param-reassign + key = removeBrackets(key); + + arr.forEach(function each(el, index) { + !(utils$1.isUndefined(el) || el === null) && + formData.append( + // eslint-disable-next-line no-nested-ternary + indexes === true + ? renderKey([key], index, dots) + : indexes === null + ? key + : key + '[]', + convertValue(el) + ); + }); + return false; + } + } + + if (isVisitable(value)) { + return true; + } + + formData.append(renderKey(path, key, dots), convertValue(value)); + + return false; + } + + const stack = []; + + const exposedHelpers = Object.assign(predicates, { + defaultVisitor, + convertValue, + isVisitable, + }); + + function build(value, path) { + if (utils$1.isUndefined(value)) return; + + if (stack.indexOf(value) !== -1) { + throw Error('Circular reference detected in ' + path.join('.')); + } + + stack.push(value); + + utils$1.forEach(value, function each(el, key) { + const result = + !(utils$1.isUndefined(el) || el === null) && + visitor.call(formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers); + + if (result === true) { + build(el, path ? path.concat(key) : [key]); + } + }); + + stack.pop(); + } + + if (!utils$1.isObject(obj)) { + throw new TypeError('data must be an object'); + } + + build(obj); + + return formData; +} + +/** + * It encodes a string by replacing all characters that are not in the unreserved set with + * their percent-encoded equivalents + * + * @param {string} str - The string to encode. + * + * @returns {string} The encoded string. + */ +function encode$1(str) { + const charMap = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+', + '%00': '\x00', + }; + return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { + return charMap[match]; + }); +} + +/** + * It takes a params object and converts it to a FormData object + * + * @param {Object} params - The parameters to be converted to a FormData object. + * @param {Object} options - The options object passed to the Axios constructor. + * + * @returns {void} + */ +function AxiosURLSearchParams(params, options) { + this._pairs = []; + + params && toFormData(params, this, options); +} + +const prototype = AxiosURLSearchParams.prototype; + +prototype.append = function append(name, value) { + this._pairs.push([name, value]); +}; + +prototype.toString = function toString(encoder) { + const _encode = encoder + ? function (value) { + return encoder.call(this, value, encode$1); + } + : encode$1; + + return this._pairs + .map(function each(pair) { + return _encode(pair[0]) + '=' + _encode(pair[1]); + }, '') + .join('&'); +}; + +/** + * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their + * URI encoded counterparts + * + * @param {string} val The value to be encoded. + * + * @returns {string} The encoded value. + */ +function encode(val) { + return encodeURIComponent(val) + .replace(/%3A/gi, ':') + .replace(/%24/g, '$') + .replace(/%2C/gi, ',') + .replace(/%20/g, '+'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @param {?(object|Function)} options + * + * @returns {string} The formatted url + */ +function buildURL(url, params, options) { + if (!params) { + return url; + } + + const _encode = (options && options.encode) || encode; + + const _options = utils$1.isFunction(options) + ? { + serialize: options, + } + : options; + + const serializeFn = _options && _options.serialize; + + let serializedParams; + + if (serializeFn) { + serializedParams = serializeFn(params, _options); + } else { + serializedParams = utils$1.isURLSearchParams(params) + ? params.toString() + : new AxiosURLSearchParams(params, _options).toString(_encode); + } + + if (serializedParams) { + const hashmarkIndex = url.indexOf('#'); + + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +} + +class InterceptorManager { + constructor() { + this.handlers = []; + } + + /** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * @param {Object} options The options for the interceptor, synchronous and runWhen + * + * @return {Number} An ID used to remove interceptor later + */ + use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled, + rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null, + }); + return this.handlers.length - 1; + } + + /** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + * + * @returns {void} + */ + eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } + } + + /** + * Clear all interceptors from the stack + * + * @returns {void} + */ + clear() { + if (this.handlers) { + this.handlers = []; + } + } + + /** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + * + * @returns {void} + */ + forEach(fn) { + utils$1.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); + } +} + +const InterceptorManager$1 = InterceptorManager; + +const transitionalDefaults = { + silentJSONParsing: true, + forcedJSONParsing: true, + clarifyTimeoutError: false, + legacyInterceptorReqResOrdering: true, +}; + +const URLSearchParams = url__default["default"].URLSearchParams; + +const ALPHA = 'abcdefghijklmnopqrstuvwxyz'; + +const DIGIT = '0123456789'; + +const ALPHABET = { + DIGIT, + ALPHA, + ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT, +}; + +const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { + let str = ''; + const { length } = alphabet; + const randomValues = new Uint32Array(size); + crypto__default["default"].randomFillSync(randomValues); + for (let i = 0; i < size; i++) { + str += alphabet[randomValues[i] % length]; + } + + return str; +}; + +const platform$1 = { + isNode: true, + classes: { + URLSearchParams, + FormData: FormData__default["default"], + Blob: (typeof Blob !== 'undefined' && Blob) || null, + }, + ALPHABET, + generateString, + protocols: ['http', 'https', 'file', 'data'], +}; + +const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; + +const _navigator = (typeof navigator === 'object' && navigator) || undefined; + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + * + * @returns {boolean} + */ +const hasStandardBrowserEnv = + hasBrowserEnv && + (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0); + +/** + * Determine if we're running in a standard browser webWorker environment + * + * Although the `isStandardBrowserEnv` method indicates that + * `allows axios to run in a web worker`, the WebWorker will still be + * filtered out due to its judgment standard + * `typeof window !== 'undefined' && typeof document !== 'undefined'`. + * This leads to a problem when axios post `FormData` in webWorker + */ +const hasStandardBrowserWebWorkerEnv = (() => { + return ( + typeof WorkerGlobalScope !== 'undefined' && + // eslint-disable-next-line no-undef + self instanceof WorkerGlobalScope && + typeof self.importScripts === 'function' + ); +})(); + +const origin = (hasBrowserEnv && window.location.href) || 'http://localhost'; + +const utils = /*#__PURE__*/Object.freeze({ + __proto__: null, + hasBrowserEnv: hasBrowserEnv, + hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, + hasStandardBrowserEnv: hasStandardBrowserEnv, + navigator: _navigator, + origin: origin +}); + +const platform = { + ...utils, + ...platform$1, +}; + +function toURLEncodedForm(data, options) { + return toFormData(data, new platform.classes.URLSearchParams(), { + visitor: function (value, key, path, helpers) { + if (platform.isNode && utils$1.isBuffer(value)) { + this.append(key, value.toString('base64')); + return false; + } + + return helpers.defaultVisitor.apply(this, arguments); + }, + ...options, + }); +} + +/** + * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] + * + * @param {string} name - The name of the property to get. + * + * @returns An array of strings. + */ +function parsePropPath(name) { + // foo[x][y][z] + // foo.x.y.z + // foo-x-y-z + // foo x y z + return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map((match) => { + return match[0] === '[]' ? '' : match[1] || match[0]; + }); +} + +/** + * Convert an array to an object. + * + * @param {Array} arr - The array to convert to an object. + * + * @returns An object with the same keys and values as the array. + */ +function arrayToObject(arr) { + const obj = {}; + const keys = Object.keys(arr); + let i; + const len = keys.length; + let key; + for (i = 0; i < len; i++) { + key = keys[i]; + obj[key] = arr[key]; + } + return obj; +} + +/** + * It takes a FormData object and returns a JavaScript object + * + * @param {string} formData The FormData object to convert to JSON. + * + * @returns {Object | null} The converted object. + */ +function formDataToJSON(formData) { + function buildPath(path, value, target, index) { + let name = path[index++]; + + if (name === '__proto__') return true; + + const isNumericKey = Number.isFinite(+name); + const isLast = index >= path.length; + name = !name && utils$1.isArray(target) ? target.length : name; + + if (isLast) { + if (utils$1.hasOwnProp(target, name)) { + target[name] = [target[name], value]; + } else { + target[name] = value; + } + + return !isNumericKey; + } + + if (!target[name] || !utils$1.isObject(target[name])) { + target[name] = []; + } + + const result = buildPath(path, value, target[name], index); + + if (result && utils$1.isArray(target[name])) { + target[name] = arrayToObject(target[name]); + } + + return !isNumericKey; + } + + if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { + const obj = {}; + + utils$1.forEachEntry(formData, (name, value) => { + buildPath(parsePropPath(name), value, obj, 0); + }); + + return obj; + } + + return null; +} + +/** + * It takes a string, tries to parse it, and if it fails, it returns the stringified version + * of the input + * + * @param {any} rawValue - The value to be stringified. + * @param {Function} parser - A function that parses a string into a JavaScript object. + * @param {Function} encoder - A function that takes a value and returns a string. + * + * @returns {string} A stringified version of the rawValue. + */ +function stringifySafely(rawValue, parser, encoder) { + if (utils$1.isString(rawValue)) { + try { + (parser || JSON.parse)(rawValue); + return utils$1.trim(rawValue); + } catch (e) { + if (e.name !== 'SyntaxError') { + throw e; + } + } + } + + return (encoder || JSON.stringify)(rawValue); +} + +const defaults = { + transitional: transitionalDefaults, + + adapter: ['xhr', 'http', 'fetch'], + + transformRequest: [ + function transformRequest(data, headers) { + const contentType = headers.getContentType() || ''; + const hasJSONContentType = contentType.indexOf('application/json') > -1; + const isObjectPayload = utils$1.isObject(data); + + if (isObjectPayload && utils$1.isHTMLForm(data)) { + data = new FormData(data); + } + + const isFormData = utils$1.isFormData(data); + + if (isFormData) { + return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; + } + + if ( + utils$1.isArrayBuffer(data) || + utils$1.isBuffer(data) || + utils$1.isStream(data) || + utils$1.isFile(data) || + utils$1.isBlob(data) || + utils$1.isReadableStream(data) + ) { + return data; + } + if (utils$1.isArrayBufferView(data)) { + return data.buffer; + } + if (utils$1.isURLSearchParams(data)) { + headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); + return data.toString(); + } + + let isFileList; + + if (isObjectPayload) { + if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { + return toURLEncodedForm(data, this.formSerializer).toString(); + } + + if ( + (isFileList = utils$1.isFileList(data)) || + contentType.indexOf('multipart/form-data') > -1 + ) { + const _FormData = this.env && this.env.FormData; + + return toFormData( + isFileList ? { 'files[]': data } : data, + _FormData && new _FormData(), + this.formSerializer + ); + } + } + + if (isObjectPayload || hasJSONContentType) { + headers.setContentType('application/json', false); + return stringifySafely(data); + } + + return data; + }, + ], + + transformResponse: [ + function transformResponse(data) { + const transitional = this.transitional || defaults.transitional; + const forcedJSONParsing = transitional && transitional.forcedJSONParsing; + const JSONRequested = this.responseType === 'json'; + + if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) { + return data; + } + + if ( + data && + utils$1.isString(data) && + ((forcedJSONParsing && !this.responseType) || JSONRequested) + ) { + const silentJSONParsing = transitional && transitional.silentJSONParsing; + const strictJSONParsing = !silentJSONParsing && JSONRequested; + + try { + return JSON.parse(data, this.parseReviver); + } catch (e) { + if (strictJSONParsing) { + if (e.name === 'SyntaxError') { + throw AxiosError$1.from(e, AxiosError$1.ERR_BAD_RESPONSE, this, null, this.response); + } + throw e; + } + } + } + + return data; + }, + ], + + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + maxBodyLength: -1, + + env: { + FormData: platform.classes.FormData, + Blob: platform.classes.Blob, + }, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + }, + + headers: { + common: { + Accept: 'application/json, text/plain, */*', + 'Content-Type': undefined, + }, + }, +}; + +utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { + defaults.headers[method] = {}; +}); + +const defaults$1 = defaults; + +// RawAxiosHeaders whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +const ignoreDuplicateOf = utils$1.toObjectSet([ + 'age', + 'authorization', + 'content-length', + 'content-type', + 'etag', + 'expires', + 'from', + 'host', + 'if-modified-since', + 'if-unmodified-since', + 'last-modified', + 'location', + 'max-forwards', + 'proxy-authorization', + 'referer', + 'retry-after', + 'user-agent', +]); + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} rawHeaders Headers needing to be parsed + * + * @returns {Object} Headers parsed into an object + */ +const parseHeaders = (rawHeaders) => { + const parsed = {}; + let key; + let val; + let i; + + rawHeaders && + rawHeaders.split('\n').forEach(function parser(line) { + i = line.indexOf(':'); + key = line.substring(0, i).trim().toLowerCase(); + val = line.substring(i + 1).trim(); + + if (!key || (parsed[key] && ignoreDuplicateOf[key])) { + return; + } + + if (key === 'set-cookie') { + if (parsed[key]) { + parsed[key].push(val); + } else { + parsed[key] = [val]; + } + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + }); + + return parsed; +}; + +const $internals = Symbol('internals'); + +function normalizeHeader(header) { + return header && String(header).trim().toLowerCase(); +} + +function normalizeValue(value) { + if (value === false || value == null) { + return value; + } + + return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); +} + +function parseTokens(str) { + const tokens = Object.create(null); + const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; + let match; + + while ((match = tokensRE.exec(str))) { + tokens[match[1]] = match[2]; + } + + return tokens; +} + +const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); + +function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { + if (utils$1.isFunction(filter)) { + return filter.call(this, value, header); + } + + if (isHeaderNameFilter) { + value = header; + } + + if (!utils$1.isString(value)) return; + + if (utils$1.isString(filter)) { + return value.indexOf(filter) !== -1; + } + + if (utils$1.isRegExp(filter)) { + return filter.test(value); + } +} + +function formatHeader(header) { + return header + .trim() + .toLowerCase() + .replace(/([a-z\d])(\w*)/g, (w, char, str) => { + return char.toUpperCase() + str; + }); +} + +function buildAccessors(obj, header) { + const accessorName = utils$1.toCamelCase(' ' + header); + + ['get', 'set', 'has'].forEach((methodName) => { + Object.defineProperty(obj, methodName + accessorName, { + value: function (arg1, arg2, arg3) { + return this[methodName].call(this, header, arg1, arg2, arg3); + }, + configurable: true, + }); + }); +} + +class AxiosHeaders { + constructor(headers) { + headers && this.set(headers); + } + + set(header, valueOrRewrite, rewrite) { + const self = this; + + function setHeader(_value, _header, _rewrite) { + const lHeader = normalizeHeader(_header); + + if (!lHeader) { + throw new Error('header name must be a non-empty string'); + } + + const key = utils$1.findKey(self, lHeader); + + if ( + !key || + self[key] === undefined || + _rewrite === true || + (_rewrite === undefined && self[key] !== false) + ) { + self[key || _header] = normalizeValue(_value); + } + } + + const setHeaders = (headers, _rewrite) => + utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); + + if (utils$1.isPlainObject(header) || header instanceof this.constructor) { + setHeaders(header, valueOrRewrite); + } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { + setHeaders(parseHeaders(header), valueOrRewrite); + } else if (utils$1.isObject(header) && utils$1.isIterable(header)) { + let obj = {}, + dest, + key; + for (const entry of header) { + if (!utils$1.isArray(entry)) { + throw TypeError('Object iterator must return a key-value pair'); + } + + obj[(key = entry[0])] = (dest = obj[key]) + ? utils$1.isArray(dest) + ? [...dest, entry[1]] + : [dest, entry[1]] + : entry[1]; + } + + setHeaders(obj, valueOrRewrite); + } else { + header != null && setHeader(valueOrRewrite, header, rewrite); + } + + return this; + } + + get(header, parser) { + header = normalizeHeader(header); + + if (header) { + const key = utils$1.findKey(this, header); + + if (key) { + const value = this[key]; + + if (!parser) { + return value; + } + + if (parser === true) { + return parseTokens(value); + } + + if (utils$1.isFunction(parser)) { + return parser.call(this, value, key); + } + + if (utils$1.isRegExp(parser)) { + return parser.exec(value); + } + + throw new TypeError('parser must be boolean|regexp|function'); + } + } + } + + has(header, matcher) { + header = normalizeHeader(header); + + if (header) { + const key = utils$1.findKey(this, header); + + return !!( + key && + this[key] !== undefined && + (!matcher || matchHeaderValue(this, this[key], key, matcher)) + ); + } + + return false; + } + + delete(header, matcher) { + const self = this; + let deleted = false; + + function deleteHeader(_header) { + _header = normalizeHeader(_header); + + if (_header) { + const key = utils$1.findKey(self, _header); + + if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { + delete self[key]; + + deleted = true; + } + } + } + + if (utils$1.isArray(header)) { + header.forEach(deleteHeader); + } else { + deleteHeader(header); + } + + return deleted; + } + + clear(matcher) { + const keys = Object.keys(this); + let i = keys.length; + let deleted = false; + + while (i--) { + const key = keys[i]; + if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { + delete this[key]; + deleted = true; + } + } + + return deleted; + } + + normalize(format) { + const self = this; + const headers = {}; + + utils$1.forEach(this, (value, header) => { + const key = utils$1.findKey(headers, header); + + if (key) { + self[key] = normalizeValue(value); + delete self[header]; + return; + } + + const normalized = format ? formatHeader(header) : String(header).trim(); + + if (normalized !== header) { + delete self[header]; + } + + self[normalized] = normalizeValue(value); + + headers[normalized] = true; + }); + + return this; + } + + concat(...targets) { + return this.constructor.concat(this, ...targets); + } + + toJSON(asStrings) { + const obj = Object.create(null); + + utils$1.forEach(this, (value, header) => { + value != null && + value !== false && + (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); + }); + + return obj; + } + + [Symbol.iterator]() { + return Object.entries(this.toJSON())[Symbol.iterator](); + } + + toString() { + return Object.entries(this.toJSON()) + .map(([header, value]) => header + ': ' + value) + .join('\n'); + } + + getSetCookie() { + return this.get('set-cookie') || []; + } + + get [Symbol.toStringTag]() { + return 'AxiosHeaders'; + } + + static from(thing) { + return thing instanceof this ? thing : new this(thing); + } + + static concat(first, ...targets) { + const computed = new this(first); + + targets.forEach((target) => computed.set(target)); + + return computed; + } + + static accessor(header) { + const internals = + (this[$internals] = + this[$internals] = + { + accessors: {}, + }); + + const accessors = internals.accessors; + const prototype = this.prototype; + + function defineAccessor(_header) { + const lHeader = normalizeHeader(_header); + + if (!accessors[lHeader]) { + buildAccessors(prototype, _header); + accessors[lHeader] = true; + } + } + + utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); + + return this; + } +} + +AxiosHeaders.accessor([ + 'Content-Type', + 'Content-Length', + 'Accept', + 'Accept-Encoding', + 'User-Agent', + 'Authorization', +]); + +// reserved names hotfix +utils$1.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => { + let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` + return { + get: () => value, + set(headerValue) { + this[mapped] = headerValue; + }, + }; +}); + +utils$1.freezeMethods(AxiosHeaders); + +const AxiosHeaders$1 = AxiosHeaders; + +/** + * Transform the data for a request or a response + * + * @param {Array|Function} fns A single function or Array of functions + * @param {?Object} response The response object + * + * @returns {*} The resulting transformed data + */ +function transformData(fns, response) { + const config = this || defaults$1; + const context = response || config; + const headers = AxiosHeaders$1.from(context.headers); + let data = context.data; + + utils$1.forEach(fns, function transform(fn) { + data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); + }); + + headers.normalize(); + + return data; +} + +function isCancel(value) { + return !!(value && value.__CANCEL__); +} + +class CanceledError extends AxiosError$1 { + /** + * A `CanceledError` is an object that is thrown when an operation is canceled. + * + * @param {string=} message The message. + * @param {Object=} config The config. + * @param {Object=} request The request. + * + * @returns {CanceledError} The created error. + */ + constructor(message, config, request) { + super(message == null ? 'canceled' : message, AxiosError$1.ERR_CANCELED, config, request); + this.name = 'CanceledError'; + this.__CANCEL__ = true; + } +} + +const CanceledError$1 = CanceledError; + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + * + * @returns {object} The response. + */ +function settle(resolve, reject, response) { + const validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject( + new AxiosError$1( + 'Request failed with status code ' + response.status, + [AxiosError$1.ERR_BAD_REQUEST, AxiosError$1.ERR_BAD_RESPONSE][ + Math.floor(response.status / 100) - 4 + ], + response.config, + response.request, + response + ) + ); + } +} + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + if (typeof url !== 'string') { + return false; + } + + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); +} + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * + * @returns {string} The combined URL + */ +function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +} + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * + * @returns {string} The combined full path + */ +function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) { + let isRelativeUrl = !isAbsoluteURL(requestedURL); + if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +} + +const VERSION = "1.13.6"; + +function parseProtocol(url) { + const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); + return (match && match[1]) || ''; +} + +const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/; + +/** + * Parse data uri to a Buffer or Blob + * + * @param {String} uri + * @param {?Boolean} asBlob + * @param {?Object} options + * @param {?Function} options.Blob + * + * @returns {Buffer|Blob} + */ +function fromDataURI(uri, asBlob, options) { + const _Blob = (options && options.Blob) || platform.classes.Blob; + const protocol = parseProtocol(uri); + + if (asBlob === undefined && _Blob) { + asBlob = true; + } + + if (protocol === 'data') { + uri = protocol.length ? uri.slice(protocol.length + 1) : uri; + + const match = DATA_URL_PATTERN.exec(uri); + + if (!match) { + throw new AxiosError$1('Invalid URL', AxiosError$1.ERR_INVALID_URL); + } + + const mime = match[1]; + const isBase64 = match[2]; + const body = match[3]; + const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8'); + + if (asBlob) { + if (!_Blob) { + throw new AxiosError$1('Blob is not supported', AxiosError$1.ERR_NOT_SUPPORT); + } + + return new _Blob([buffer], { type: mime }); + } + + return buffer; + } + + throw new AxiosError$1('Unsupported protocol ' + protocol, AxiosError$1.ERR_NOT_SUPPORT); +} + +const kInternals = Symbol('internals'); + +class AxiosTransformStream extends stream__default["default"].Transform { + constructor(options) { + options = utils$1.toFlatObject( + options, + { + maxRate: 0, + chunkSize: 64 * 1024, + minChunkSize: 100, + timeWindow: 500, + ticksRate: 2, + samplesCount: 15, + }, + null, + (prop, source) => { + return !utils$1.isUndefined(source[prop]); + } + ); + + super({ + readableHighWaterMark: options.chunkSize, + }); + + const internals = (this[kInternals] = { + timeWindow: options.timeWindow, + chunkSize: options.chunkSize, + maxRate: options.maxRate, + minChunkSize: options.minChunkSize, + bytesSeen: 0, + isCaptured: false, + notifiedBytesLoaded: 0, + ts: Date.now(), + bytes: 0, + onReadCallback: null, + }); + + this.on('newListener', (event) => { + if (event === 'progress') { + if (!internals.isCaptured) { + internals.isCaptured = true; + } + } + }); + } + + _read(size) { + const internals = this[kInternals]; + + if (internals.onReadCallback) { + internals.onReadCallback(); + } + + return super._read(size); + } + + _transform(chunk, encoding, callback) { + const internals = this[kInternals]; + const maxRate = internals.maxRate; + + const readableHighWaterMark = this.readableHighWaterMark; + + const timeWindow = internals.timeWindow; + + const divider = 1000 / timeWindow; + const bytesThreshold = maxRate / divider; + const minChunkSize = + internals.minChunkSize !== false + ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) + : 0; + + const pushChunk = (_chunk, _callback) => { + const bytes = Buffer.byteLength(_chunk); + internals.bytesSeen += bytes; + internals.bytes += bytes; + + internals.isCaptured && this.emit('progress', internals.bytesSeen); + + if (this.push(_chunk)) { + process.nextTick(_callback); + } else { + internals.onReadCallback = () => { + internals.onReadCallback = null; + process.nextTick(_callback); + }; + } + }; + + const transformChunk = (_chunk, _callback) => { + const chunkSize = Buffer.byteLength(_chunk); + let chunkRemainder = null; + let maxChunkSize = readableHighWaterMark; + let bytesLeft; + let passed = 0; + + if (maxRate) { + const now = Date.now(); + + if (!internals.ts || (passed = now - internals.ts) >= timeWindow) { + internals.ts = now; + bytesLeft = bytesThreshold - internals.bytes; + internals.bytes = bytesLeft < 0 ? -bytesLeft : 0; + passed = 0; + } + + bytesLeft = bytesThreshold - internals.bytes; + } + + if (maxRate) { + if (bytesLeft <= 0) { + // next time window + return setTimeout(() => { + _callback(null, _chunk); + }, timeWindow - passed); + } + + if (bytesLeft < maxChunkSize) { + maxChunkSize = bytesLeft; + } + } + + if (maxChunkSize && chunkSize > maxChunkSize && chunkSize - maxChunkSize > minChunkSize) { + chunkRemainder = _chunk.subarray(maxChunkSize); + _chunk = _chunk.subarray(0, maxChunkSize); + } + + pushChunk( + _chunk, + chunkRemainder + ? () => { + process.nextTick(_callback, null, chunkRemainder); + } + : _callback + ); + }; + + transformChunk(chunk, function transformNextChunk(err, _chunk) { + if (err) { + return callback(err); + } + + if (_chunk) { + transformChunk(_chunk, transformNextChunk); + } else { + callback(null); + } + }); + } +} + +const AxiosTransformStream$1 = AxiosTransformStream; + +const { asyncIterator } = Symbol; + +const readBlob = async function* (blob) { + if (blob.stream) { + yield* blob.stream(); + } else if (blob.arrayBuffer) { + yield await blob.arrayBuffer(); + } else if (blob[asyncIterator]) { + yield* blob[asyncIterator](); + } else { + yield blob; + } +}; + +const readBlob$1 = readBlob; + +const BOUNDARY_ALPHABET = platform.ALPHABET.ALPHA_DIGIT + '-_'; + +const textEncoder = typeof TextEncoder === 'function' ? new TextEncoder() : new util__default["default"].TextEncoder(); + +const CRLF = '\r\n'; +const CRLF_BYTES = textEncoder.encode(CRLF); +const CRLF_BYTES_COUNT = 2; + +class FormDataPart { + constructor(name, value) { + const { escapeName } = this.constructor; + const isStringValue = utils$1.isString(value); + + let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${ + !isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : '' + }${CRLF}`; + + if (isStringValue) { + value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF)); + } else { + headers += `Content-Type: ${value.type || 'application/octet-stream'}${CRLF}`; + } + + this.headers = textEncoder.encode(headers + CRLF); + + this.contentLength = isStringValue ? value.byteLength : value.size; + + this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT; + + this.name = name; + this.value = value; + } + + async *encode() { + yield this.headers; + + const { value } = this; + + if (utils$1.isTypedArray(value)) { + yield value; + } else { + yield* readBlob$1(value); + } + + yield CRLF_BYTES; + } + + static escapeName(name) { + return String(name).replace( + /[\r\n"]/g, + (match) => + ({ + '\r': '%0D', + '\n': '%0A', + '"': '%22', + })[match] + ); + } +} + +const formDataToStream = (form, headersHandler, options) => { + const { + tag = 'form-data-boundary', + size = 25, + boundary = tag + '-' + platform.generateString(size, BOUNDARY_ALPHABET), + } = options || {}; + + if (!utils$1.isFormData(form)) { + throw TypeError('FormData instance required'); + } + + if (boundary.length < 1 || boundary.length > 70) { + throw Error('boundary must be 10-70 characters long'); + } + + const boundaryBytes = textEncoder.encode('--' + boundary + CRLF); + const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF); + let contentLength = footerBytes.byteLength; + + const parts = Array.from(form.entries()).map(([name, value]) => { + const part = new FormDataPart(name, value); + contentLength += part.size; + return part; + }); + + contentLength += boundaryBytes.byteLength * parts.length; + + contentLength = utils$1.toFiniteNumber(contentLength); + + const computedHeaders = { + 'Content-Type': `multipart/form-data; boundary=${boundary}`, + }; + + if (Number.isFinite(contentLength)) { + computedHeaders['Content-Length'] = contentLength; + } + + headersHandler && headersHandler(computedHeaders); + + return stream.Readable.from( + (async function* () { + for (const part of parts) { + yield boundaryBytes; + yield* part.encode(); + } + + yield footerBytes; + })() + ); +}; + +const formDataToStream$1 = formDataToStream; + +class ZlibHeaderTransformStream extends stream__default["default"].Transform { + __transform(chunk, encoding, callback) { + this.push(chunk); + callback(); + } + + _transform(chunk, encoding, callback) { + if (chunk.length !== 0) { + this._transform = this.__transform; + + // Add Default Compression headers if no zlib headers are present + if (chunk[0] !== 120) { + // Hex: 78 + const header = Buffer.alloc(2); + header[0] = 120; // Hex: 78 + header[1] = 156; // Hex: 9C + this.push(header, encoding); + } + } + + this.__transform(chunk, encoding, callback); + } +} + +const ZlibHeaderTransformStream$1 = ZlibHeaderTransformStream; + +const callbackify = (fn, reducer) => { + return utils$1.isAsyncFn(fn) + ? function (...args) { + const cb = args.pop(); + fn.apply(this, args).then((value) => { + try { + reducer ? cb(null, ...reducer(value)) : cb(null, value); + } catch (err) { + cb(err); + } + }, cb); + } + : fn; +}; + +const callbackify$1 = callbackify; + +/** + * Calculate data maxRate + * @param {Number} [samplesCount= 10] + * @param {Number} [min= 1000] + * @returns {Function} + */ +function speedometer(samplesCount, min) { + samplesCount = samplesCount || 10; + const bytes = new Array(samplesCount); + const timestamps = new Array(samplesCount); + let head = 0; + let tail = 0; + let firstSampleTS; + + min = min !== undefined ? min : 1000; + + return function push(chunkLength) { + const now = Date.now(); + + const startedAt = timestamps[tail]; + + if (!firstSampleTS) { + firstSampleTS = now; + } + + bytes[head] = chunkLength; + timestamps[head] = now; + + let i = tail; + let bytesCount = 0; + + while (i !== head) { + bytesCount += bytes[i++]; + i = i % samplesCount; + } + + head = (head + 1) % samplesCount; + + if (head === tail) { + tail = (tail + 1) % samplesCount; + } + + if (now - firstSampleTS < min) { + return; + } + + const passed = startedAt && now - startedAt; + + return passed ? Math.round((bytesCount * 1000) / passed) : undefined; + }; +} + +/** + * Throttle decorator + * @param {Function} fn + * @param {Number} freq + * @return {Function} + */ +function throttle(fn, freq) { + let timestamp = 0; + let threshold = 1000 / freq; + let lastArgs; + let timer; + + const invoke = (args, now = Date.now()) => { + timestamp = now; + lastArgs = null; + if (timer) { + clearTimeout(timer); + timer = null; + } + fn(...args); + }; + + const throttled = (...args) => { + const now = Date.now(); + const passed = now - timestamp; + if (passed >= threshold) { + invoke(args, now); + } else { + lastArgs = args; + if (!timer) { + timer = setTimeout(() => { + timer = null; + invoke(lastArgs); + }, threshold - passed); + } + } + }; + + const flush = () => lastArgs && invoke(lastArgs); + + return [throttled, flush]; +} + +const progressEventReducer = (listener, isDownloadStream, freq = 3) => { + let bytesNotified = 0; + const _speedometer = speedometer(50, 250); + + return throttle((e) => { + const loaded = e.loaded; + const total = e.lengthComputable ? e.total : undefined; + const progressBytes = loaded - bytesNotified; + const rate = _speedometer(progressBytes); + const inRange = loaded <= total; + + bytesNotified = loaded; + + const data = { + loaded, + total, + progress: total ? loaded / total : undefined, + bytes: progressBytes, + rate: rate ? rate : undefined, + estimated: rate && total && inRange ? (total - loaded) / rate : undefined, + event: e, + lengthComputable: total != null, + [isDownloadStream ? 'download' : 'upload']: true, + }; + + listener(data); + }, freq); +}; + +const progressEventDecorator = (total, throttled) => { + const lengthComputable = total != null; + + return [ + (loaded) => + throttled[0]({ + lengthComputable, + total, + loaded, + }), + throttled[1], + ]; +}; + +const asyncDecorator = + (fn) => + (...args) => + utils$1.asap(() => fn(...args)); + +/** + * Estimate decoded byte length of a data:// URL *without* allocating large buffers. + * - For base64: compute exact decoded size using length and padding; + * handle %XX at the character-count level (no string allocation). + * - For non-base64: use UTF-8 byteLength of the encoded body as a safe upper bound. + * + * @param {string} url + * @returns {number} + */ +function estimateDataURLDecodedBytes(url) { + if (!url || typeof url !== 'string') return 0; + if (!url.startsWith('data:')) return 0; + + const comma = url.indexOf(','); + if (comma < 0) return 0; + + const meta = url.slice(5, comma); + const body = url.slice(comma + 1); + const isBase64 = /;base64/i.test(meta); + + if (isBase64) { + let effectiveLen = body.length; + const len = body.length; // cache length + + for (let i = 0; i < len; i++) { + if (body.charCodeAt(i) === 37 /* '%' */ && i + 2 < len) { + const a = body.charCodeAt(i + 1); + const b = body.charCodeAt(i + 2); + const isHex = + ((a >= 48 && a <= 57) || (a >= 65 && a <= 70) || (a >= 97 && a <= 102)) && + ((b >= 48 && b <= 57) || (b >= 65 && b <= 70) || (b >= 97 && b <= 102)); + + if (isHex) { + effectiveLen -= 2; + i += 2; + } + } + } + + let pad = 0; + let idx = len - 1; + + const tailIsPct3D = (j) => + j >= 2 && + body.charCodeAt(j - 2) === 37 && // '%' + body.charCodeAt(j - 1) === 51 && // '3' + (body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100); // 'D' or 'd' + + if (idx >= 0) { + if (body.charCodeAt(idx) === 61 /* '=' */) { + pad++; + idx--; + } else if (tailIsPct3D(idx)) { + pad++; + idx -= 3; + } + } + + if (pad === 1 && idx >= 0) { + if (body.charCodeAt(idx) === 61 /* '=' */) { + pad++; + } else if (tailIsPct3D(idx)) { + pad++; + } + } + + const groups = Math.floor(effectiveLen / 4); + const bytes = groups * 3 - (pad || 0); + return bytes > 0 ? bytes : 0; + } + + return Buffer.byteLength(body, 'utf8'); +} + +const zlibOptions = { + flush: zlib__default["default"].constants.Z_SYNC_FLUSH, + finishFlush: zlib__default["default"].constants.Z_SYNC_FLUSH, +}; + +const brotliOptions = { + flush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH, + finishFlush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH, +}; + +const isBrotliSupported = utils$1.isFunction(zlib__default["default"].createBrotliDecompress); + +const { http: httpFollow, https: httpsFollow } = followRedirects__default["default"]; + +const isHttps = /https:?/; + +const supportedProtocols = platform.protocols.map((protocol) => { + return protocol + ':'; +}); + +const flushOnFinish = (stream, [throttled, flush]) => { + stream.on('end', flush).on('error', flush); + + return throttled; +}; + +class Http2Sessions { + constructor() { + this.sessions = Object.create(null); + } + + getSession(authority, options) { + options = Object.assign( + { + sessionTimeout: 1000, + }, + options + ); + + let authoritySessions = this.sessions[authority]; + + if (authoritySessions) { + let len = authoritySessions.length; + + for (let i = 0; i < len; i++) { + const [sessionHandle, sessionOptions] = authoritySessions[i]; + if ( + !sessionHandle.destroyed && + !sessionHandle.closed && + util__default["default"].isDeepStrictEqual(sessionOptions, options) + ) { + return sessionHandle; + } + } + } + + const session = http2__default["default"].connect(authority, options); + + let removed; + + const removeSession = () => { + if (removed) { + return; + } + + removed = true; + + let entries = authoritySessions, + len = entries.length, + i = len; + + while (i--) { + if (entries[i][0] === session) { + if (len === 1) { + delete this.sessions[authority]; + } else { + entries.splice(i, 1); + } + return; + } + } + }; + + const originalRequestFn = session.request; + + const { sessionTimeout } = options; + + if (sessionTimeout != null) { + let timer; + let streamsCount = 0; + + session.request = function () { + const stream = originalRequestFn.apply(this, arguments); + + streamsCount++; + + if (timer) { + clearTimeout(timer); + timer = null; + } + + stream.once('close', () => { + if (!--streamsCount) { + timer = setTimeout(() => { + timer = null; + removeSession(); + }, sessionTimeout); + } + }); + + return stream; + }; + } + + session.once('close', removeSession); + + let entry = [session, options]; + + authoritySessions + ? authoritySessions.push(entry) + : (authoritySessions = this.sessions[authority] = [entry]); + + return session; + } +} + +const http2Sessions = new Http2Sessions(); + +/** + * If the proxy or config beforeRedirects functions are defined, call them with the options + * object. + * + * @param {Object} options - The options object that was passed to the request. + * + * @returns {Object} + */ +function dispatchBeforeRedirect(options, responseDetails) { + if (options.beforeRedirects.proxy) { + options.beforeRedirects.proxy(options); + } + if (options.beforeRedirects.config) { + options.beforeRedirects.config(options, responseDetails); + } +} + +/** + * If the proxy or config afterRedirects functions are defined, call them with the options + * + * @param {http.ClientRequestArgs} options + * @param {AxiosProxyConfig} configProxy configuration from Axios options object + * @param {string} location + * + * @returns {http.ClientRequestArgs} + */ +function setProxy(options, configProxy, location) { + let proxy = configProxy; + if (!proxy && proxy !== false) { + const proxyUrl = proxyFromEnv__default["default"].getProxyForUrl(location); + if (proxyUrl) { + proxy = new URL(proxyUrl); + } + } + if (proxy) { + // Basic proxy authorization + if (proxy.username) { + proxy.auth = (proxy.username || '') + ':' + (proxy.password || ''); + } + + if (proxy.auth) { + // Support proxy auth object form + const validProxyAuth = Boolean(proxy.auth.username || proxy.auth.password); + + if (validProxyAuth) { + proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || ''); + } else if (typeof proxy.auth === 'object') { + throw new AxiosError$1('Invalid proxy authorization', AxiosError$1.ERR_BAD_OPTION, { proxy }); + } + + const base64 = Buffer.from(proxy.auth, 'utf8').toString('base64'); + + options.headers['Proxy-Authorization'] = 'Basic ' + base64; + } + + options.headers.host = options.hostname + (options.port ? ':' + options.port : ''); + const proxyHost = proxy.hostname || proxy.host; + options.hostname = proxyHost; + // Replace 'host' since options is not a URL object + options.host = proxyHost; + options.port = proxy.port; + options.path = location; + if (proxy.protocol) { + options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`; + } + } + + options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) { + // Configure proxy for redirected request, passing the original config proxy to apply + // the exact same logic as if the redirected request was performed by axios directly. + setProxy(redirectOptions, configProxy, redirectOptions.href); + }; +} + +const isHttpAdapterSupported = + typeof process !== 'undefined' && utils$1.kindOf(process) === 'process'; + +// temporary hotfix + +const wrapAsync = (asyncExecutor) => { + return new Promise((resolve, reject) => { + let onDone; + let isDone; + + const done = (value, isRejected) => { + if (isDone) return; + isDone = true; + onDone && onDone(value, isRejected); + }; + + const _resolve = (value) => { + done(value); + resolve(value); + }; + + const _reject = (reason) => { + done(reason, true); + reject(reason); + }; + + asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject); + }); +}; + +const resolveFamily = ({ address, family }) => { + if (!utils$1.isString(address)) { + throw TypeError('address must be a string'); + } + return { + address, + family: family || (address.indexOf('.') < 0 ? 6 : 4), + }; +}; + +const buildAddressEntry = (address, family) => + resolveFamily(utils$1.isObject(address) ? address : { address, family }); + +const http2Transport = { + request(options, cb) { + const authority = + options.protocol + + '//' + + options.hostname + + ':' + + (options.port || (options.protocol === 'https:' ? 443 : 80)); + + const { http2Options, headers } = options; + + const session = http2Sessions.getSession(authority, http2Options); + + const { HTTP2_HEADER_SCHEME, HTTP2_HEADER_METHOD, HTTP2_HEADER_PATH, HTTP2_HEADER_STATUS } = + http2__default["default"].constants; + + const http2Headers = { + [HTTP2_HEADER_SCHEME]: options.protocol.replace(':', ''), + [HTTP2_HEADER_METHOD]: options.method, + [HTTP2_HEADER_PATH]: options.path, + }; + + utils$1.forEach(headers, (header, name) => { + name.charAt(0) !== ':' && (http2Headers[name] = header); + }); + + const req = session.request(http2Headers); + + req.once('response', (responseHeaders) => { + const response = req; //duplex + + responseHeaders = Object.assign({}, responseHeaders); + + const status = responseHeaders[HTTP2_HEADER_STATUS]; + + delete responseHeaders[HTTP2_HEADER_STATUS]; + + response.headers = responseHeaders; + + response.statusCode = +status; + + cb(response); + }); + + return req; + }, +}; + +/*eslint consistent-return:0*/ +const httpAdapter = isHttpAdapterSupported && + function httpAdapter(config) { + return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { + let { data, lookup, family, httpVersion = 1, http2Options } = config; + const { responseType, responseEncoding } = config; + const method = config.method.toUpperCase(); + let isDone; + let rejected = false; + let req; + + httpVersion = +httpVersion; + + if (Number.isNaN(httpVersion)) { + throw TypeError(`Invalid protocol version: '${config.httpVersion}' is not a number`); + } + + if (httpVersion !== 1 && httpVersion !== 2) { + throw TypeError(`Unsupported protocol version '${httpVersion}'`); + } + + const isHttp2 = httpVersion === 2; + + if (lookup) { + const _lookup = callbackify$1(lookup, (value) => (utils$1.isArray(value) ? value : [value])); + // hotfix to support opt.all option which is required for node 20.x + lookup = (hostname, opt, cb) => { + _lookup(hostname, opt, (err, arg0, arg1) => { + if (err) { + return cb(err); + } + + const addresses = utils$1.isArray(arg0) + ? arg0.map((addr) => buildAddressEntry(addr)) + : [buildAddressEntry(arg0, arg1)]; + + opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family); + }); + }; + } + + const abortEmitter = new events.EventEmitter(); + + function abort(reason) { + try { + abortEmitter.emit( + 'abort', + !reason || reason.type ? new CanceledError$1(null, config, req) : reason + ); + } catch (err) { + console.warn('emit error', err); + } + } + + abortEmitter.once('abort', reject); + + const onFinished = () => { + if (config.cancelToken) { + config.cancelToken.unsubscribe(abort); + } + + if (config.signal) { + config.signal.removeEventListener('abort', abort); + } + + abortEmitter.removeAllListeners(); + }; + + if (config.cancelToken || config.signal) { + config.cancelToken && config.cancelToken.subscribe(abort); + if (config.signal) { + config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort); + } + } + + onDone((response, isRejected) => { + isDone = true; + + if (isRejected) { + rejected = true; + onFinished(); + return; + } + + const { data } = response; + + if (data instanceof stream__default["default"].Readable || data instanceof stream__default["default"].Duplex) { + const offListeners = stream__default["default"].finished(data, () => { + offListeners(); + onFinished(); + }); + } else { + onFinished(); + } + }); + + // Parse url + const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); + const parsed = new URL(fullPath, platform.hasBrowserEnv ? platform.origin : undefined); + const protocol = parsed.protocol || supportedProtocols[0]; + + if (protocol === 'data:') { + // Apply the same semantics as HTTP: only enforce if a finite, non-negative cap is set. + if (config.maxContentLength > -1) { + // Use the exact string passed to fromDataURI (config.url); fall back to fullPath if needed. + const dataUrl = String(config.url || fullPath || ''); + const estimated = estimateDataURLDecodedBytes(dataUrl); + + if (estimated > config.maxContentLength) { + return reject( + new AxiosError$1( + 'maxContentLength size of ' + config.maxContentLength + ' exceeded', + AxiosError$1.ERR_BAD_RESPONSE, + config + ) + ); + } + } + + let convertedData; + + if (method !== 'GET') { + return settle(resolve, reject, { + status: 405, + statusText: 'method not allowed', + headers: {}, + config, + }); + } + + try { + convertedData = fromDataURI(config.url, responseType === 'blob', { + Blob: config.env && config.env.Blob, + }); + } catch (err) { + throw AxiosError$1.from(err, AxiosError$1.ERR_BAD_REQUEST, config); + } + + if (responseType === 'text') { + convertedData = convertedData.toString(responseEncoding); + + if (!responseEncoding || responseEncoding === 'utf8') { + convertedData = utils$1.stripBOM(convertedData); + } + } else if (responseType === 'stream') { + convertedData = stream__default["default"].Readable.from(convertedData); + } + + return settle(resolve, reject, { + data: convertedData, + status: 200, + statusText: 'OK', + headers: new AxiosHeaders$1(), + config, + }); + } + + if (supportedProtocols.indexOf(protocol) === -1) { + return reject( + new AxiosError$1('Unsupported protocol ' + protocol, AxiosError$1.ERR_BAD_REQUEST, config) + ); + } + + const headers = AxiosHeaders$1.from(config.headers).normalize(); + + // Set User-Agent (required by some servers) + // See https://github.com/axios/axios/issues/69 + // User-Agent is specified; handle case where no UA header is desired + // Only set header if it hasn't been set in config + headers.set('User-Agent', 'axios/' + VERSION, false); + + const { onUploadProgress, onDownloadProgress } = config; + const maxRate = config.maxRate; + let maxUploadRate = undefined; + let maxDownloadRate = undefined; + + // support for spec compliant FormData objects + if (utils$1.isSpecCompliantForm(data)) { + const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i); + + data = formDataToStream$1( + data, + (formHeaders) => { + headers.set(formHeaders); + }, + { + tag: `axios-${VERSION}-boundary`, + boundary: (userBoundary && userBoundary[1]) || undefined, + } + ); + // support for https://www.npmjs.com/package/form-data api + } else if (utils$1.isFormData(data) && utils$1.isFunction(data.getHeaders)) { + headers.set(data.getHeaders()); + + if (!headers.hasContentLength()) { + try { + const knownLength = await util__default["default"].promisify(data.getLength).call(data); + Number.isFinite(knownLength) && + knownLength >= 0 && + headers.setContentLength(knownLength); + /*eslint no-empty:0*/ + } catch (e) {} + } + } else if (utils$1.isBlob(data) || utils$1.isFile(data)) { + data.size && headers.setContentType(data.type || 'application/octet-stream'); + headers.setContentLength(data.size || 0); + data = stream__default["default"].Readable.from(readBlob$1(data)); + } else if (data && !utils$1.isStream(data)) { + if (Buffer.isBuffer(data)) ; else if (utils$1.isArrayBuffer(data)) { + data = Buffer.from(new Uint8Array(data)); + } else if (utils$1.isString(data)) { + data = Buffer.from(data, 'utf-8'); + } else { + return reject( + new AxiosError$1( + 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', + AxiosError$1.ERR_BAD_REQUEST, + config + ) + ); + } + + // Add Content-Length header if data exists + headers.setContentLength(data.length, false); + + if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) { + return reject( + new AxiosError$1( + 'Request body larger than maxBodyLength limit', + AxiosError$1.ERR_BAD_REQUEST, + config + ) + ); + } + } + + const contentLength = utils$1.toFiniteNumber(headers.getContentLength()); + + if (utils$1.isArray(maxRate)) { + maxUploadRate = maxRate[0]; + maxDownloadRate = maxRate[1]; + } else { + maxUploadRate = maxDownloadRate = maxRate; + } + + if (data && (onUploadProgress || maxUploadRate)) { + if (!utils$1.isStream(data)) { + data = stream__default["default"].Readable.from(data, { objectMode: false }); + } + + data = stream__default["default"].pipeline( + [ + data, + new AxiosTransformStream$1({ + maxRate: utils$1.toFiniteNumber(maxUploadRate), + }), + ], + utils$1.noop + ); + + onUploadProgress && + data.on( + 'progress', + flushOnFinish( + data, + progressEventDecorator( + contentLength, + progressEventReducer(asyncDecorator(onUploadProgress), false, 3) + ) + ) + ); + } + + // HTTP basic authentication + let auth = undefined; + if (config.auth) { + const username = config.auth.username || ''; + const password = config.auth.password || ''; + auth = username + ':' + password; + } + + if (!auth && parsed.username) { + const urlUsername = parsed.username; + const urlPassword = parsed.password; + auth = urlUsername + ':' + urlPassword; + } + + auth && headers.delete('authorization'); + + let path; + + try { + path = buildURL( + parsed.pathname + parsed.search, + config.params, + config.paramsSerializer + ).replace(/^\?/, ''); + } catch (err) { + const customErr = new Error(err.message); + customErr.config = config; + customErr.url = config.url; + customErr.exists = true; + return reject(customErr); + } + + headers.set( + 'Accept-Encoding', + 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), + false + ); + + const options = { + path, + method: method, + headers: headers.toJSON(), + agents: { http: config.httpAgent, https: config.httpsAgent }, + auth, + protocol, + family, + beforeRedirect: dispatchBeforeRedirect, + beforeRedirects: {}, + http2Options, + }; + + // cacheable-lookup integration hotfix + !utils$1.isUndefined(lookup) && (options.lookup = lookup); + + if (config.socketPath) { + options.socketPath = config.socketPath; + } else { + options.hostname = parsed.hostname.startsWith('[') + ? parsed.hostname.slice(1, -1) + : parsed.hostname; + options.port = parsed.port; + setProxy( + options, + config.proxy, + protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path + ); + } + + let transport; + const isHttpsRequest = isHttps.test(options.protocol); + options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; + + if (isHttp2) { + transport = http2Transport; + } else { + if (config.transport) { + transport = config.transport; + } else if (config.maxRedirects === 0) { + transport = isHttpsRequest ? https__default["default"] : http__default["default"]; + } else { + if (config.maxRedirects) { + options.maxRedirects = config.maxRedirects; + } + if (config.beforeRedirect) { + options.beforeRedirects.config = config.beforeRedirect; + } + transport = isHttpsRequest ? httpsFollow : httpFollow; + } + } + + if (config.maxBodyLength > -1) { + options.maxBodyLength = config.maxBodyLength; + } else { + // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited + options.maxBodyLength = Infinity; + } + + if (config.insecureHTTPParser) { + options.insecureHTTPParser = config.insecureHTTPParser; + } + + // Create the request + req = transport.request(options, function handleResponse(res) { + if (req.destroyed) return; + + const streams = [res]; + + const responseLength = utils$1.toFiniteNumber(res.headers['content-length']); + + if (onDownloadProgress || maxDownloadRate) { + const transformStream = new AxiosTransformStream$1({ + maxRate: utils$1.toFiniteNumber(maxDownloadRate), + }); + + onDownloadProgress && + transformStream.on( + 'progress', + flushOnFinish( + transformStream, + progressEventDecorator( + responseLength, + progressEventReducer(asyncDecorator(onDownloadProgress), true, 3) + ) + ) + ); + + streams.push(transformStream); + } + + // decompress the response body transparently if required + let responseStream = res; + + // return the last request in case of redirects + const lastRequest = res.req || req; + + // if decompress disabled we should not decompress + if (config.decompress !== false && res.headers['content-encoding']) { + // if no content, but headers still say that it is encoded, + // remove the header not confuse downstream operations + if (method === 'HEAD' || res.statusCode === 204) { + delete res.headers['content-encoding']; + } + + switch ((res.headers['content-encoding'] || '').toLowerCase()) { + /*eslint default-case:0*/ + case 'gzip': + case 'x-gzip': + case 'compress': + case 'x-compress': + // add the unzipper to the body stream processing pipeline + streams.push(zlib__default["default"].createUnzip(zlibOptions)); + + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + case 'deflate': + streams.push(new ZlibHeaderTransformStream$1()); + + // add the unzipper to the body stream processing pipeline + streams.push(zlib__default["default"].createUnzip(zlibOptions)); + + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + case 'br': + if (isBrotliSupported) { + streams.push(zlib__default["default"].createBrotliDecompress(brotliOptions)); + delete res.headers['content-encoding']; + } + } + } + + responseStream = streams.length > 1 ? stream__default["default"].pipeline(streams, utils$1.noop) : streams[0]; + + const response = { + status: res.statusCode, + statusText: res.statusMessage, + headers: new AxiosHeaders$1(res.headers), + config, + request: lastRequest, + }; + + if (responseType === 'stream') { + response.data = responseStream; + settle(resolve, reject, response); + } else { + const responseBuffer = []; + let totalResponseBytes = 0; + + responseStream.on('data', function handleStreamData(chunk) { + responseBuffer.push(chunk); + totalResponseBytes += chunk.length; + + // make sure the content length is not over the maxContentLength if specified + if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) { + // stream.destroy() emit aborted event before calling reject() on Node.js v16 + rejected = true; + responseStream.destroy(); + abort( + new AxiosError$1( + 'maxContentLength size of ' + config.maxContentLength + ' exceeded', + AxiosError$1.ERR_BAD_RESPONSE, + config, + lastRequest + ) + ); + } + }); + + responseStream.on('aborted', function handlerStreamAborted() { + if (rejected) { + return; + } + + const err = new AxiosError$1( + 'stream has been aborted', + AxiosError$1.ERR_BAD_RESPONSE, + config, + lastRequest + ); + responseStream.destroy(err); + reject(err); + }); + + responseStream.on('error', function handleStreamError(err) { + if (req.destroyed) return; + reject(AxiosError$1.from(err, null, config, lastRequest)); + }); + + responseStream.on('end', function handleStreamEnd() { + try { + let responseData = + responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer); + if (responseType !== 'arraybuffer') { + responseData = responseData.toString(responseEncoding); + if (!responseEncoding || responseEncoding === 'utf8') { + responseData = utils$1.stripBOM(responseData); + } + } + response.data = responseData; + } catch (err) { + return reject(AxiosError$1.from(err, null, config, response.request, response)); + } + settle(resolve, reject, response); + }); + } + + abortEmitter.once('abort', (err) => { + if (!responseStream.destroyed) { + responseStream.emit('error', err); + responseStream.destroy(); + } + }); + }); + + abortEmitter.once('abort', (err) => { + if (req.close) { + req.close(); + } else { + req.destroy(err); + } + }); + + // Handle errors + req.on('error', function handleRequestError(err) { + reject(AxiosError$1.from(err, null, config, req)); + }); + + // set tcp keep alive to prevent drop connection by peer + req.on('socket', function handleRequestSocket(socket) { + // default interval of sending ack packet is 1 minute + socket.setKeepAlive(true, 1000 * 60); + }); + + // Handle request timeout + if (config.timeout) { + // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types. + const timeout = parseInt(config.timeout, 10); + + if (Number.isNaN(timeout)) { + abort( + new AxiosError$1( + 'error trying to parse `config.timeout` to int', + AxiosError$1.ERR_BAD_OPTION_VALUE, + config, + req + ) + ); + + return; + } + + // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system. + // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET. + // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up. + // And then these socket which be hang up will devouring CPU little by little. + // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect. + req.setTimeout(timeout, function handleRequestTimeout() { + if (isDone) return; + let timeoutErrorMessage = config.timeout + ? 'timeout of ' + config.timeout + 'ms exceeded' + : 'timeout exceeded'; + const transitional = config.transitional || transitionalDefaults; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + abort( + new AxiosError$1( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED, + config, + req + ) + ); + }); + } else { + // explicitly reset the socket timeout value for a possible `keep-alive` request + req.setTimeout(0); + } + + // Send the request + if (utils$1.isStream(data)) { + let ended = false; + let errored = false; + + data.on('end', () => { + ended = true; + }); + + data.once('error', (err) => { + errored = true; + req.destroy(err); + }); + + data.on('close', () => { + if (!ended && !errored) { + abort(new CanceledError$1('Request stream has been aborted', config, req)); + } + }); + + data.pipe(req); + } else { + data && req.write(data); + req.end(); + } + }); + }; + +const isURLSameOrigin = platform.hasStandardBrowserEnv + ? ((origin, isMSIE) => (url) => { + url = new URL(url, platform.origin); + + return ( + origin.protocol === url.protocol && + origin.host === url.host && + (isMSIE || origin.port === url.port) + ); + })( + new URL(platform.origin), + platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent) + ) + : () => true; + +const cookies = platform.hasStandardBrowserEnv + ? // Standard browser envs support document.cookie + { + write(name, value, expires, path, domain, secure, sameSite) { + if (typeof document === 'undefined') return; + + const cookie = [`${name}=${encodeURIComponent(value)}`]; + + if (utils$1.isNumber(expires)) { + cookie.push(`expires=${new Date(expires).toUTCString()}`); + } + if (utils$1.isString(path)) { + cookie.push(`path=${path}`); + } + if (utils$1.isString(domain)) { + cookie.push(`domain=${domain}`); + } + if (secure === true) { + cookie.push('secure'); + } + if (utils$1.isString(sameSite)) { + cookie.push(`SameSite=${sameSite}`); + } + + document.cookie = cookie.join('; '); + }, + + read(name) { + if (typeof document === 'undefined') return null; + const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)')); + return match ? decodeURIComponent(match[1]) : null; + }, + + remove(name) { + this.write(name, '', Date.now() - 86400000, '/'); + }, + } + : // Non-standard browser env (web workers, react-native) lack needed support. + { + write() {}, + read() { + return null; + }, + remove() {}, + }; + +const headersToObject = (thing) => (thing instanceof AxiosHeaders$1 ? { ...thing } : thing); + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * + * @returns {Object} New object resulting from merging config2 to config1 + */ +function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + const config = {}; + + function getMergedValue(target, source, prop, caseless) { + if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { + return utils$1.merge.call({ caseless }, target, source); + } else if (utils$1.isPlainObject(source)) { + return utils$1.merge({}, source); + } else if (utils$1.isArray(source)) { + return source.slice(); + } + return source; + } + + function mergeDeepProperties(a, b, prop, caseless) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(a, b, prop, caseless); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(undefined, a, prop, caseless); + } + } + + // eslint-disable-next-line consistent-return + function valueFromConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(undefined, b); + } + } + + // eslint-disable-next-line consistent-return + function defaultToConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(undefined, b); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(undefined, a); + } + } + + // eslint-disable-next-line consistent-return + function mergeDirectKeys(a, b, prop) { + if (prop in config2) { + return getMergedValue(a, b); + } else if (prop in config1) { + return getMergedValue(undefined, a); + } + } + + const mergeMap = { + url: valueFromConfig2, + method: valueFromConfig2, + data: valueFromConfig2, + baseURL: defaultToConfig2, + transformRequest: defaultToConfig2, + transformResponse: defaultToConfig2, + paramsSerializer: defaultToConfig2, + timeout: defaultToConfig2, + timeoutMessage: defaultToConfig2, + withCredentials: defaultToConfig2, + withXSRFToken: defaultToConfig2, + adapter: defaultToConfig2, + responseType: defaultToConfig2, + xsrfCookieName: defaultToConfig2, + xsrfHeaderName: defaultToConfig2, + onUploadProgress: defaultToConfig2, + onDownloadProgress: defaultToConfig2, + decompress: defaultToConfig2, + maxContentLength: defaultToConfig2, + maxBodyLength: defaultToConfig2, + beforeRedirect: defaultToConfig2, + transport: defaultToConfig2, + httpAgent: defaultToConfig2, + httpsAgent: defaultToConfig2, + cancelToken: defaultToConfig2, + socketPath: defaultToConfig2, + responseEncoding: defaultToConfig2, + validateStatus: mergeDirectKeys, + headers: (a, b, prop) => + mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true), + }; + + utils$1.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) { + if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return; + const merge = utils$1.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties; + const configValue = merge(config1[prop], config2[prop], prop); + (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); + }); + + return config; +} + +const resolveConfig = (config) => { + const newConfig = mergeConfig({}, config); + + let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig; + + newConfig.headers = headers = AxiosHeaders$1.from(headers); + + newConfig.url = buildURL( + buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), + config.params, + config.paramsSerializer + ); + + // HTTP basic authentication + if (auth) { + headers.set( + 'Authorization', + 'Basic ' + + btoa( + (auth.username || '') + + ':' + + (auth.password ? unescape(encodeURIComponent(auth.password)) : '') + ) + ); + } + + if (utils$1.isFormData(data)) { + if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { + headers.setContentType(undefined); // browser handles it + } else if (utils$1.isFunction(data.getHeaders)) { + // Node.js FormData (like form-data package) + const formHeaders = data.getHeaders(); + // Only set safe headers to avoid overwriting security headers + const allowedHeaders = ['content-type', 'content-length']; + Object.entries(formHeaders).forEach(([key, val]) => { + if (allowedHeaders.includes(key.toLowerCase())) { + headers.set(key, val); + } + }); + } + } + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + + if (platform.hasStandardBrowserEnv) { + withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig)); + + if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) { + // Add xsrf header + const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); + + if (xsrfValue) { + headers.set(xsrfHeaderName, xsrfValue); + } + } + } + + return newConfig; +}; + +const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; + +const xhrAdapter = isXHRAdapterSupported && + function (config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + const _config = resolveConfig(config); + let requestData = _config.data; + const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize(); + let { responseType, onUploadProgress, onDownloadProgress } = _config; + let onCanceled; + let uploadThrottled, downloadThrottled; + let flushUpload, flushDownload; + + function done() { + flushUpload && flushUpload(); // flush events + flushDownload && flushDownload(); // flush events + + _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); + + _config.signal && _config.signal.removeEventListener('abort', onCanceled); + } + + let request = new XMLHttpRequest(); + + request.open(_config.method.toUpperCase(), _config.url, true); + + // Set the request timeout in MS + request.timeout = _config.timeout; + + function onloadend() { + if (!request) { + return; + } + // Prepare the response + const responseHeaders = AxiosHeaders$1.from( + 'getAllResponseHeaders' in request && request.getAllResponseHeaders() + ); + const responseData = + !responseType || responseType === 'text' || responseType === 'json' + ? request.responseText + : request.response; + const response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config, + request, + }; + + settle( + function _resolve(value) { + resolve(value); + done(); + }, + function _reject(err) { + reject(err); + done(); + }, + response + ); + + // Clean up request + request = null; + } + + if ('onloadend' in request) { + // Use onloadend if available + request.onloadend = onloadend; + } else { + // Listen for ready state to emulate onloadend + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if ( + request.status === 0 && + !(request.responseURL && request.responseURL.indexOf('file:') === 0) + ) { + return; + } + // readystate handler is calling before onerror or ontimeout handlers, + // so we should call onloadend on the next 'tick' + setTimeout(onloadend); + }; + } + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(new AxiosError$1('Request aborted', AxiosError$1.ECONNABORTED, config, request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError(event) { + // Browsers deliver a ProgressEvent in XHR onerror + // (message may be empty; when present, surface it) + // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event + const msg = event && event.message ? event.message : 'Network Error'; + const err = new AxiosError$1(msg, AxiosError$1.ERR_NETWORK, config, request); + // attach the underlying event for consumers who want details + err.event = event || null; + reject(err); + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + let timeoutErrorMessage = _config.timeout + ? 'timeout of ' + _config.timeout + 'ms exceeded' + : 'timeout exceeded'; + const transitional = _config.transitional || transitionalDefaults; + if (_config.timeoutErrorMessage) { + timeoutErrorMessage = _config.timeoutErrorMessage; + } + reject( + new AxiosError$1( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED, + config, + request + ) + ); + + // Clean up request + request = null; + }; + + // Remove Content-Type if data is undefined + requestData === undefined && requestHeaders.setContentType(null); + + // Add headers to the request + if ('setRequestHeader' in request) { + utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { + request.setRequestHeader(key, val); + }); + } + + // Add withCredentials to request if needed + if (!utils$1.isUndefined(_config.withCredentials)) { + request.withCredentials = !!_config.withCredentials; + } + + // Add responseType to request if needed + if (responseType && responseType !== 'json') { + request.responseType = _config.responseType; + } + + // Handle progress if needed + if (onDownloadProgress) { + [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true); + request.addEventListener('progress', downloadThrottled); + } + + // Not all browsers support upload events + if (onUploadProgress && request.upload) { + [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress); + + request.upload.addEventListener('progress', uploadThrottled); + + request.upload.addEventListener('loadend', flushUpload); + } + + if (_config.cancelToken || _config.signal) { + // Handle cancellation + // eslint-disable-next-line func-names + onCanceled = (cancel) => { + if (!request) { + return; + } + reject(!cancel || cancel.type ? new CanceledError$1(null, config, request) : cancel); + request.abort(); + request = null; + }; + + _config.cancelToken && _config.cancelToken.subscribe(onCanceled); + if (_config.signal) { + _config.signal.aborted + ? onCanceled() + : _config.signal.addEventListener('abort', onCanceled); + } + } + + const protocol = parseProtocol(_config.url); + + if (protocol && platform.protocols.indexOf(protocol) === -1) { + reject( + new AxiosError$1( + 'Unsupported protocol ' + protocol + ':', + AxiosError$1.ERR_BAD_REQUEST, + config + ) + ); + return; + } + + // Send the request + request.send(requestData || null); + }); + }; + +const composeSignals = (signals, timeout) => { + const { length } = (signals = signals ? signals.filter(Boolean) : []); + + if (timeout || length) { + let controller = new AbortController(); + + let aborted; + + const onabort = function (reason) { + if (!aborted) { + aborted = true; + unsubscribe(); + const err = reason instanceof Error ? reason : this.reason; + controller.abort( + err instanceof AxiosError$1 + ? err + : new CanceledError$1(err instanceof Error ? err.message : err) + ); + } + }; + + let timer = + timeout && + setTimeout(() => { + timer = null; + onabort(new AxiosError$1(`timeout of ${timeout}ms exceeded`, AxiosError$1.ETIMEDOUT)); + }, timeout); + + const unsubscribe = () => { + if (signals) { + timer && clearTimeout(timer); + timer = null; + signals.forEach((signal) => { + signal.unsubscribe + ? signal.unsubscribe(onabort) + : signal.removeEventListener('abort', onabort); + }); + signals = null; + } + }; + + signals.forEach((signal) => signal.addEventListener('abort', onabort)); + + const { signal } = controller; + + signal.unsubscribe = () => utils$1.asap(unsubscribe); + + return signal; + } +}; + +const composeSignals$1 = composeSignals; + +const streamChunk = function* (chunk, chunkSize) { + let len = chunk.byteLength; + + if (!chunkSize || len < chunkSize) { + yield chunk; + return; + } + + let pos = 0; + let end; + + while (pos < len) { + end = pos + chunkSize; + yield chunk.slice(pos, end); + pos = end; + } +}; + +const readBytes = async function* (iterable, chunkSize) { + for await (const chunk of readStream(iterable)) { + yield* streamChunk(chunk, chunkSize); + } +}; + +const readStream = async function* (stream) { + if (stream[Symbol.asyncIterator]) { + yield* stream; + return; + } + + const reader = stream.getReader(); + try { + for (;;) { + const { done, value } = await reader.read(); + if (done) { + break; + } + yield value; + } + } finally { + await reader.cancel(); + } +}; + +const trackStream = (stream, chunkSize, onProgress, onFinish) => { + const iterator = readBytes(stream, chunkSize); + + let bytes = 0; + let done; + let _onFinish = (e) => { + if (!done) { + done = true; + onFinish && onFinish(e); + } + }; + + return new ReadableStream( + { + async pull(controller) { + try { + const { done, value } = await iterator.next(); + + if (done) { + _onFinish(); + controller.close(); + return; + } + + let len = value.byteLength; + if (onProgress) { + let loadedBytes = (bytes += len); + onProgress(loadedBytes); + } + controller.enqueue(new Uint8Array(value)); + } catch (err) { + _onFinish(err); + throw err; + } + }, + cancel(reason) { + _onFinish(reason); + return iterator.return(); + }, + }, + { + highWaterMark: 2, + } + ); +}; + +const DEFAULT_CHUNK_SIZE = 64 * 1024; + +const { isFunction } = utils$1; + +const globalFetchAPI = (({ Request, Response }) => ({ + Request, + Response, +}))(utils$1.global); + +const { ReadableStream: ReadableStream$1, TextEncoder: TextEncoder$1 } = utils$1.global; + +const test = (fn, ...args) => { + try { + return !!fn(...args); + } catch (e) { + return false; + } +}; + +const factory = (env) => { + env = utils$1.merge.call( + { + skipUndefined: true, + }, + globalFetchAPI, + env + ); + + const { fetch: envFetch, Request, Response } = env; + const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function'; + const isRequestSupported = isFunction(Request); + const isResponseSupported = isFunction(Response); + + if (!isFetchSupported) { + return false; + } + + const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream$1); + + const encodeText = + isFetchSupported && + (typeof TextEncoder$1 === 'function' + ? ( + (encoder) => (str) => + encoder.encode(str) + )(new TextEncoder$1()) + : async (str) => new Uint8Array(await new Request(str).arrayBuffer())); + + const supportsRequestStream = + isRequestSupported && + isReadableStreamSupported && + test(() => { + let duplexAccessed = false; + + const hasContentType = new Request(platform.origin, { + body: new ReadableStream$1(), + method: 'POST', + get duplex() { + duplexAccessed = true; + return 'half'; + }, + }).headers.has('Content-Type'); + + return duplexAccessed && !hasContentType; + }); + + const supportsResponseStream = + isResponseSupported && + isReadableStreamSupported && + test(() => utils$1.isReadableStream(new Response('').body)); + + const resolvers = { + stream: supportsResponseStream && ((res) => res.body), + }; + + isFetchSupported && + (() => { + ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => { + !resolvers[type] && + (resolvers[type] = (res, config) => { + let method = res && res[type]; + + if (method) { + return method.call(res); + } + + throw new AxiosError$1( + `Response type '${type}' is not supported`, + AxiosError$1.ERR_NOT_SUPPORT, + config + ); + }); + }); + })(); + + const getBodyLength = async (body) => { + if (body == null) { + return 0; + } + + if (utils$1.isBlob(body)) { + return body.size; + } + + if (utils$1.isSpecCompliantForm(body)) { + const _request = new Request(platform.origin, { + method: 'POST', + body, + }); + return (await _request.arrayBuffer()).byteLength; + } + + if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) { + return body.byteLength; + } + + if (utils$1.isURLSearchParams(body)) { + body = body + ''; + } + + if (utils$1.isString(body)) { + return (await encodeText(body)).byteLength; + } + }; + + const resolveBodyLength = async (headers, body) => { + const length = utils$1.toFiniteNumber(headers.getContentLength()); + + return length == null ? getBodyLength(body) : length; + }; + + return async (config) => { + let { + url, + method, + data, + signal, + cancelToken, + timeout, + onDownloadProgress, + onUploadProgress, + responseType, + headers, + withCredentials = 'same-origin', + fetchOptions, + } = resolveConfig(config); + + let _fetch = envFetch || fetch; + + responseType = responseType ? (responseType + '').toLowerCase() : 'text'; + + let composedSignal = composeSignals$1( + [signal, cancelToken && cancelToken.toAbortSignal()], + timeout + ); + + let request = null; + + const unsubscribe = + composedSignal && + composedSignal.unsubscribe && + (() => { + composedSignal.unsubscribe(); + }); + + let requestContentLength; + + try { + if ( + onUploadProgress && + supportsRequestStream && + method !== 'get' && + method !== 'head' && + (requestContentLength = await resolveBodyLength(headers, data)) !== 0 + ) { + let _request = new Request(url, { + method: 'POST', + body: data, + duplex: 'half', + }); + + let contentTypeHeader; + + if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) { + headers.setContentType(contentTypeHeader); + } + + if (_request.body) { + const [onProgress, flush] = progressEventDecorator( + requestContentLength, + progressEventReducer(asyncDecorator(onUploadProgress)) + ); + + data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); + } + } + + if (!utils$1.isString(withCredentials)) { + withCredentials = withCredentials ? 'include' : 'omit'; + } + + // Cloudflare Workers throws when credentials are defined + // see https://github.com/cloudflare/workerd/issues/902 + const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype; + + const resolvedOptions = { + ...fetchOptions, + signal: composedSignal, + method: method.toUpperCase(), + headers: headers.normalize().toJSON(), + body: data, + duplex: 'half', + credentials: isCredentialsSupported ? withCredentials : undefined, + }; + + request = isRequestSupported && new Request(url, resolvedOptions); + + let response = await (isRequestSupported + ? _fetch(request, fetchOptions) + : _fetch(url, resolvedOptions)); + + const isStreamResponse = + supportsResponseStream && (responseType === 'stream' || responseType === 'response'); + + if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) { + const options = {}; + + ['status', 'statusText', 'headers'].forEach((prop) => { + options[prop] = response[prop]; + }); + + const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length')); + + const [onProgress, flush] = + (onDownloadProgress && + progressEventDecorator( + responseContentLength, + progressEventReducer(asyncDecorator(onDownloadProgress), true) + )) || + []; + + response = new Response( + trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { + flush && flush(); + unsubscribe && unsubscribe(); + }), + options + ); + } + + responseType = responseType || 'text'; + + let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text']( + response, + config + ); + + !isStreamResponse && unsubscribe && unsubscribe(); + + return await new Promise((resolve, reject) => { + settle(resolve, reject, { + data: responseData, + headers: AxiosHeaders$1.from(response.headers), + status: response.status, + statusText: response.statusText, + config, + request, + }); + }); + } catch (err) { + unsubscribe && unsubscribe(); + + if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) { + throw Object.assign( + new AxiosError$1( + 'Network Error', + AxiosError$1.ERR_NETWORK, + config, + request, + err && err.response + ), + { + cause: err.cause || err, + } + ); + } + + throw AxiosError$1.from(err, err && err.code, config, request, err && err.response); + } + }; +}; + +const seedCache = new Map(); + +const getFetch = (config) => { + let env = (config && config.env) || {}; + const { fetch, Request, Response } = env; + const seeds = [Request, Response, fetch]; + + let len = seeds.length, + i = len, + seed, + target, + map = seedCache; + + while (i--) { + seed = seeds[i]; + target = map.get(seed); + + target === undefined && map.set(seed, (target = i ? new Map() : factory(env))); + + map = target; + } + + return target; +}; + +getFetch(); + +/** + * Known adapters mapping. + * Provides environment-specific adapters for Axios: + * - `http` for Node.js + * - `xhr` for browsers + * - `fetch` for fetch API-based requests + * + * @type {Object} + */ +const knownAdapters = { + http: httpAdapter, + xhr: xhrAdapter, + fetch: { + get: getFetch, + }, +}; + +// Assign adapter names for easier debugging and identification +utils$1.forEach(knownAdapters, (fn, value) => { + if (fn) { + try { + Object.defineProperty(fn, 'name', { value }); + } catch (e) { + // eslint-disable-next-line no-empty + } + Object.defineProperty(fn, 'adapterName', { value }); + } +}); + +/** + * Render a rejection reason string for unknown or unsupported adapters + * + * @param {string} reason + * @returns {string} + */ +const renderReason = (reason) => `- ${reason}`; + +/** + * Check if the adapter is resolved (function, null, or false) + * + * @param {Function|null|false} adapter + * @returns {boolean} + */ +const isResolvedHandle = (adapter) => + utils$1.isFunction(adapter) || adapter === null || adapter === false; + +/** + * Get the first suitable adapter from the provided list. + * Tries each adapter in order until a supported one is found. + * Throws an AxiosError if no adapter is suitable. + * + * @param {Array|string|Function} adapters - Adapter(s) by name or function. + * @param {Object} config - Axios request configuration + * @throws {AxiosError} If no suitable adapter is available + * @returns {Function} The resolved adapter function + */ +function getAdapter(adapters, config) { + adapters = utils$1.isArray(adapters) ? adapters : [adapters]; + + const { length } = adapters; + let nameOrAdapter; + let adapter; + + const rejectedReasons = {}; + + for (let i = 0; i < length; i++) { + nameOrAdapter = adapters[i]; + let id; + + adapter = nameOrAdapter; + + if (!isResolvedHandle(nameOrAdapter)) { + adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; + + if (adapter === undefined) { + throw new AxiosError$1(`Unknown adapter '${id}'`); + } + } + + if (adapter && (utils$1.isFunction(adapter) || (adapter = adapter.get(config)))) { + break; + } + + rejectedReasons[id || '#' + i] = adapter; + } + + if (!adapter) { + const reasons = Object.entries(rejectedReasons).map( + ([id, state]) => + `adapter ${id} ` + + (state === false ? 'is not supported by the environment' : 'is not available in the build') + ); + + let s = length + ? reasons.length > 1 + ? 'since :\n' + reasons.map(renderReason).join('\n') + : ' ' + renderReason(reasons[0]) + : 'as no adapter specified'; + + throw new AxiosError$1( + `There is no suitable adapter to dispatch the request ` + s, + 'ERR_NOT_SUPPORT' + ); + } + + return adapter; +} + +/** + * Exports Axios adapters and utility to resolve an adapter + */ +const adapters = { + /** + * Resolve an adapter from a list of adapter names or functions. + * @type {Function} + */ + getAdapter, + + /** + * Exposes all known adapters + * @type {Object} + */ + adapters: knownAdapters, +}; + +/** + * Throws a `CanceledError` if cancellation has been requested. + * + * @param {Object} config The config that is to be used for the request + * + * @returns {void} + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } + + if (config.signal && config.signal.aborted) { + throw new CanceledError$1(null, config); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * + * @returns {Promise} The Promise to be fulfilled + */ +function dispatchRequest(config) { + throwIfCancellationRequested(config); + + config.headers = AxiosHeaders$1.from(config.headers); + + // Transform request data + config.data = transformData.call(config, config.transformRequest); + + if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { + config.headers.setContentType('application/x-www-form-urlencoded', false); + } + + const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter, config); + + return adapter(config).then( + function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData.call(config, config.transformResponse, response); + + response.headers = AxiosHeaders$1.from(response.headers); + + return response; + }, + function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData.call( + config, + config.transformResponse, + reason.response + ); + reason.response.headers = AxiosHeaders$1.from(reason.response.headers); + } + } + + return Promise.reject(reason); + } + ); +} + +const validators$1 = {}; + +// eslint-disable-next-line func-names +['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { + validators$1[type] = function validator(thing) { + return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; + }; +}); + +const deprecatedWarnings = {}; + +/** + * Transitional option validator + * + * @param {function|boolean?} validator - set to false if the transitional option has been removed + * @param {string?} version - deprecated version / removed since version + * @param {string?} message - some message with additional info + * + * @returns {function} + */ +validators$1.transitional = function transitional(validator, version, message) { + function formatMessage(opt, desc) { + return ( + '[Axios v' + + VERSION + + "] Transitional option '" + + opt + + "'" + + desc + + (message ? '. ' + message : '') + ); + } + + // eslint-disable-next-line func-names + return (value, opt, opts) => { + if (validator === false) { + throw new AxiosError$1( + formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), + AxiosError$1.ERR_DEPRECATED + ); + } + + if (version && !deprecatedWarnings[opt]) { + deprecatedWarnings[opt] = true; + // eslint-disable-next-line no-console + console.warn( + formatMessage( + opt, + ' has been deprecated since v' + version + ' and will be removed in the near future' + ) + ); + } + + return validator ? validator(value, opt, opts) : true; + }; +}; + +validators$1.spelling = function spelling(correctSpelling) { + return (value, opt) => { + // eslint-disable-next-line no-console + console.warn(`${opt} is likely a misspelling of ${correctSpelling}`); + return true; + }; +}; + +/** + * Assert object's properties type + * + * @param {object} options + * @param {object} schema + * @param {boolean?} allowUnknown + * + * @returns {object} + */ + +function assertOptions(options, schema, allowUnknown) { + if (typeof options !== 'object') { + throw new AxiosError$1('options must be an object', AxiosError$1.ERR_BAD_OPTION_VALUE); + } + const keys = Object.keys(options); + let i = keys.length; + while (i-- > 0) { + const opt = keys[i]; + const validator = schema[opt]; + if (validator) { + const value = options[opt]; + const result = value === undefined || validator(value, opt, options); + if (result !== true) { + throw new AxiosError$1( + 'option ' + opt + ' must be ' + result, + AxiosError$1.ERR_BAD_OPTION_VALUE + ); + } + continue; + } + if (allowUnknown !== true) { + throw new AxiosError$1('Unknown option ' + opt, AxiosError$1.ERR_BAD_OPTION); + } + } +} + +const validator = { + assertOptions, + validators: validators$1, +}; + +const validators = validator.validators; + +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + * + * @return {Axios} A new instance of Axios + */ +class Axios { + constructor(instanceConfig) { + this.defaults = instanceConfig || {}; + this.interceptors = { + request: new InterceptorManager$1(), + response: new InterceptorManager$1(), + }; + } + + /** + * Dispatch a request + * + * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) + * @param {?Object} config + * + * @returns {Promise} The Promise to be fulfilled + */ + async request(configOrUrl, config) { + try { + return await this._request(configOrUrl, config); + } catch (err) { + if (err instanceof Error) { + let dummy = {}; + + Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error()); + + // slice off the Error: ... line + const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; + try { + if (!err.stack) { + err.stack = stack; + // match without the 2 top stack lines + } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { + err.stack += '\n' + stack; + } + } catch (e) { + // ignore the case where "stack" is an un-writable property + } + } + + throw err; + } + } + + _request(configOrUrl, config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof configOrUrl === 'string') { + config = config || {}; + config.url = configOrUrl; + } else { + config = configOrUrl || {}; + } + + config = mergeConfig(this.defaults, config); + + const { transitional, paramsSerializer, headers } = config; + + if (transitional !== undefined) { + validator.assertOptions( + transitional, + { + silentJSONParsing: validators.transitional(validators.boolean), + forcedJSONParsing: validators.transitional(validators.boolean), + clarifyTimeoutError: validators.transitional(validators.boolean), + legacyInterceptorReqResOrdering: validators.transitional(validators.boolean), + }, + false + ); + } + + if (paramsSerializer != null) { + if (utils$1.isFunction(paramsSerializer)) { + config.paramsSerializer = { + serialize: paramsSerializer, + }; + } else { + validator.assertOptions( + paramsSerializer, + { + encode: validators.function, + serialize: validators.function, + }, + true + ); + } + } + + // Set config.allowAbsoluteUrls + if (config.allowAbsoluteUrls !== undefined) ; else if (this.defaults.allowAbsoluteUrls !== undefined) { + config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls; + } else { + config.allowAbsoluteUrls = true; + } + + validator.assertOptions( + config, + { + baseUrl: validators.spelling('baseURL'), + withXsrfToken: validators.spelling('withXSRFToken'), + }, + true + ); + + // Set config.method + config.method = (config.method || this.defaults.method || 'get').toLowerCase(); + + // Flatten headers + let contextHeaders = headers && utils$1.merge(headers.common, headers[config.method]); + + headers && + utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => { + delete headers[method]; + }); + + config.headers = AxiosHeaders$1.concat(contextHeaders, headers); + + // filter out skipped interceptors + const requestInterceptorChain = []; + let synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { + return; + } + + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; + + const transitional = config.transitional || transitionalDefaults; + const legacyInterceptorReqResOrdering = + transitional && transitional.legacyInterceptorReqResOrdering; + + if (legacyInterceptorReqResOrdering) { + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + } else { + requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + } + }); + + const responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); + + let promise; + let i = 0; + let len; + + if (!synchronousRequestInterceptors) { + const chain = [dispatchRequest.bind(this), undefined]; + chain.unshift(...requestInterceptorChain); + chain.push(...responseInterceptorChain); + len = chain.length; + + promise = Promise.resolve(config); + + while (i < len) { + promise = promise.then(chain[i++], chain[i++]); + } + + return promise; + } + + len = requestInterceptorChain.length; + + let newConfig = config; + + while (i < len) { + const onFulfilled = requestInterceptorChain[i++]; + const onRejected = requestInterceptorChain[i++]; + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected.call(this, error); + break; + } + } + + try { + promise = dispatchRequest.call(this, newConfig); + } catch (error) { + return Promise.reject(error); + } + + i = 0; + len = responseInterceptorChain.length; + + while (i < len) { + promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); + } + + return promise; + } + + getUri(config) { + config = mergeConfig(this.defaults, config); + const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); + return buildURL(fullPath, config.params, config.paramsSerializer); + } +} + +// Provide aliases for supported request methods +utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function (url, config) { + return this.request( + mergeConfig(config || {}, { + method, + url, + data: (config || {}).data, + }) + ); + }; +}); + +utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + + function generateHTTPMethod(isForm) { + return function httpMethod(url, data, config) { + return this.request( + mergeConfig(config || {}, { + method, + headers: isForm + ? { + 'Content-Type': 'multipart/form-data', + } + : {}, + url, + data, + }) + ); + }; + } + + Axios.prototype[method] = generateHTTPMethod(); + + Axios.prototype[method + 'Form'] = generateHTTPMethod(true); +}); + +const Axios$1 = Axios; + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @param {Function} executor The executor function. + * + * @returns {CancelToken} + */ +class CancelToken { + constructor(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + let resolvePromise; + + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + const token = this; + + // eslint-disable-next-line func-names + this.promise.then((cancel) => { + if (!token._listeners) return; + + let i = token._listeners.length; + + while (i-- > 0) { + token._listeners[i](cancel); + } + token._listeners = null; + }); + + // eslint-disable-next-line func-names + this.promise.then = (onfulfilled) => { + let _resolve; + // eslint-disable-next-line func-names + const promise = new Promise((resolve) => { + token.subscribe(resolve); + _resolve = resolve; + }).then(onfulfilled); + + promise.cancel = function reject() { + token.unsubscribe(_resolve); + }; + + return promise; + }; + + executor(function cancel(message, config, request) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new CanceledError$1(message, config, request); + resolvePromise(token.reason); + }); + } + + /** + * Throws a `CanceledError` if cancellation has been requested. + */ + throwIfRequested() { + if (this.reason) { + throw this.reason; + } + } + + /** + * Subscribe to the cancel signal + */ + + subscribe(listener) { + if (this.reason) { + listener(this.reason); + return; + } + + if (this._listeners) { + this._listeners.push(listener); + } else { + this._listeners = [listener]; + } + } + + /** + * Unsubscribe from the cancel signal + */ + + unsubscribe(listener) { + if (!this._listeners) { + return; + } + const index = this._listeners.indexOf(listener); + if (index !== -1) { + this._listeners.splice(index, 1); + } + } + + toAbortSignal() { + const controller = new AbortController(); + + const abort = (err) => { + controller.abort(err); + }; + + this.subscribe(abort); + + controller.signal.unsubscribe = () => this.unsubscribe(abort); + + return controller.signal; + } + + /** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ + static source() { + let cancel; + const token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token, + cancel, + }; + } +} + +const CancelToken$1 = CancelToken; + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * const args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * + * @returns {Function} + */ +function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +} + +/** + * Determines whether the payload is an error thrown by Axios + * + * @param {*} payload The value to test + * + * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false + */ +function isAxiosError(payload) { + return utils$1.isObject(payload) && payload.isAxiosError === true; +} + +const HttpStatusCode = { + Continue: 100, + SwitchingProtocols: 101, + Processing: 102, + EarlyHints: 103, + Ok: 200, + Created: 201, + Accepted: 202, + NonAuthoritativeInformation: 203, + NoContent: 204, + ResetContent: 205, + PartialContent: 206, + MultiStatus: 207, + AlreadyReported: 208, + ImUsed: 226, + MultipleChoices: 300, + MovedPermanently: 301, + Found: 302, + SeeOther: 303, + NotModified: 304, + UseProxy: 305, + Unused: 306, + TemporaryRedirect: 307, + PermanentRedirect: 308, + BadRequest: 400, + Unauthorized: 401, + PaymentRequired: 402, + Forbidden: 403, + NotFound: 404, + MethodNotAllowed: 405, + NotAcceptable: 406, + ProxyAuthenticationRequired: 407, + RequestTimeout: 408, + Conflict: 409, + Gone: 410, + LengthRequired: 411, + PreconditionFailed: 412, + PayloadTooLarge: 413, + UriTooLong: 414, + UnsupportedMediaType: 415, + RangeNotSatisfiable: 416, + ExpectationFailed: 417, + ImATeapot: 418, + MisdirectedRequest: 421, + UnprocessableEntity: 422, + Locked: 423, + FailedDependency: 424, + TooEarly: 425, + UpgradeRequired: 426, + PreconditionRequired: 428, + TooManyRequests: 429, + RequestHeaderFieldsTooLarge: 431, + UnavailableForLegalReasons: 451, + InternalServerError: 500, + NotImplemented: 501, + BadGateway: 502, + ServiceUnavailable: 503, + GatewayTimeout: 504, + HttpVersionNotSupported: 505, + VariantAlsoNegotiates: 506, + InsufficientStorage: 507, + LoopDetected: 508, + NotExtended: 510, + NetworkAuthenticationRequired: 511, + WebServerIsDown: 521, + ConnectionTimedOut: 522, + OriginIsUnreachable: 523, + TimeoutOccurred: 524, + SslHandshakeFailed: 525, + InvalidSslCertificate: 526, +}; + +Object.entries(HttpStatusCode).forEach(([key, value]) => { + HttpStatusCode[value] = key; +}); + +const HttpStatusCode$1 = HttpStatusCode; + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * + * @returns {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + const context = new Axios$1(defaultConfig); + const instance = bind(Axios$1.prototype.request, context); + + // Copy axios.prototype to instance + utils$1.extend(instance, Axios$1.prototype, context, { allOwnKeys: true }); + + // Copy context to instance + utils$1.extend(instance, context, null, { allOwnKeys: true }); + + // Factory for creating new instances + instance.create = function create(instanceConfig) { + return createInstance(mergeConfig(defaultConfig, instanceConfig)); + }; + + return instance; +} + +// Create the default instance to be exported +const axios = createInstance(defaults$1); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios$1; + +// Expose Cancel & CancelToken +axios.CanceledError = CanceledError$1; +axios.CancelToken = CancelToken$1; +axios.isCancel = isCancel; +axios.VERSION = VERSION; +axios.toFormData = toFormData; + +// Expose AxiosError class +axios.AxiosError = AxiosError$1; + +// alias for CanceledError for backward compatibility +axios.Cancel = axios.CanceledError; + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; + +axios.spread = spread; + +// Expose isAxiosError +axios.isAxiosError = isAxiosError; + +// Expose mergeConfig +axios.mergeConfig = mergeConfig; + +axios.AxiosHeaders = AxiosHeaders$1; + +axios.formToJSON = (thing) => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); + +axios.getAdapter = adapters.getAdapter; + +axios.HttpStatusCode = HttpStatusCode$1; + +axios.default = axios; + +module.exports = axios; +//# sourceMappingURL=axios.cjs.map diff --git a/node_modules/axios/dist/node/axios.cjs.map b/node_modules/axios/dist/node/axios.cjs.map new file mode 100644 index 0000000..738a4d9 --- /dev/null +++ b/node_modules/axios/dist/node/axios.cjs.map @@ -0,0 +1 @@ +{"version":3,"file":"axios.cjs","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/node/classes/URLSearchParams.js","../../lib/platform/node/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../lib/env/data.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/fromDataURI.js","../../lib/helpers/AxiosTransformStream.js","../../lib/helpers/readBlob.js","../../lib/helpers/formDataToStream.js","../../lib/helpers/ZlibHeaderTransformStream.js","../../lib/helpers/callbackify.js","../../lib/helpers/speedometer.js","../../lib/helpers/throttle.js","../../lib/helpers/progressEventReducer.js","../../lib/helpers/estimateDataURLDecodedBytes.js","../../lib/adapters/http.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/cookies.js","../../lib/core/mergeConfig.js","../../lib/helpers/resolveConfig.js","../../lib/adapters/xhr.js","../../lib/helpers/composeSignals.js","../../lib/helpers/trackStream.js","../../lib/adapters/fetch.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js"],"sourcesContent":["'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst { toString } = Object.prototype;\nconst { getPrototypeOf } = Object;\nconst { iterator, toStringTag } = Symbol;\n\nconst kindOf = ((cache) => (thing) => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type;\n};\n\nconst typeOfTest = (type) => (thing) => typeof thing === type;\n\n/**\n * Determine if a value is a non-null object\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst { isArray } = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return (\n val !== null &&\n !isUndefined(val) &&\n val.constructor !== null &&\n !isUndefined(val.constructor) &&\n isFunction(val.constructor.isBuffer) &&\n val.constructor.isBuffer(val)\n );\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && isArrayBuffer(val.buffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = (thing) => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (\n (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(toStringTag in val) &&\n !(iterator in val)\n );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n * \n * @param {*} value The value to test\n * \n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n return !!(value && typeof value.uri !== 'undefined');\n}\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n * \n * @param {*} formData The formData to test\n * \n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') return globalThis;\n if (typeof self !== 'undefined') return self;\n if (typeof window !== 'undefined') return window;\n if (typeof global !== 'undefined') return global;\n return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (FormDataCtor && thing instanceof FormDataCtor) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n 'ReadableStream',\n 'Request',\n 'Response',\n 'Headers',\n].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => {\n return str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n};\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, { allOwnKeys = false } = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n if (isBuffer(obj)) {\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== 'undefined') return globalThis;\n return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global;\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * const result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};\n const result = {};\n const assignValue = (val, key) => {\n // Skip dangerous property names to prevent prototype pollution\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n\n const targetKey = (caseless && findKey(result, key)) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n forEach(\n b,\n (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n value: bind(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(a, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n },\n { allOwnKeys }\n );\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xfeff) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n Object.defineProperty(constructor.prototype, 'constructor', {\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype,\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = ((TypedArray) => {\n // eslint-disable-next-line func-names\n return (thing) => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = (str) => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n ({ hasOwnProperty }) =>\n (obj, prop) =>\n hasOwnProperty.call(obj, prop)\n)(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error(\"Can not rewrite read-only method '\" + name + \"'\");\n };\n }\n });\n};\n\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\n */\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach((value) => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(\n thing &&\n isFunction(thing.append) &&\n thing[toStringTag] === 'FormData' &&\n thing[iterator]\n );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if (!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n thing &&\n (isObject(thing) || isFunction(thing)) &&\n isFunction(thing.then) &&\n isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported\n ? ((token, callbacks) => {\n _global.addEventListener(\n 'message',\n ({ source, data }) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n },\n false\n );\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, '*');\n };\n })(`axios@${Math.random()}`, [])\n : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n typeof queueMicrotask !== 'undefined'\n ? queueMicrotask.bind(_global)\n : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isReactNativeBlob,\n isReactNative,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n\n // Preserve status from the original error if not already set from response\n if (error.status != null && axiosError.status == null) {\n axiosError.status = error.status;\n }\n\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\n\n /**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\n constructor(message, code, config, request, response) {\n super(message);\n \n // Make message enumerable to maintain backward compatibility\n // The native Error constructor sets message as non-enumerable,\n // but axios < v1.13.3 had it as enumerable\n Object.defineProperty(this, 'message', {\n value: message,\n enumerable: true,\n writable: true,\n configurable: true\n });\n \n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path\n .concat(key)\n .map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n })\n .join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(\n options,\n {\n metaTokens: true,\n dots: false,\n indexes: false,\n },\n false,\n function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n }\n );\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob);\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n formData.append(renderKey(path, key, dots), convertValue(value));\n return false;\n }\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)))\n ) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) &&\n formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true\n ? renderKey([key], index, dots)\n : indexes === null\n ? key\n : key + '[]',\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable,\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result =\n !(utils.isUndefined(el) || el === null) &&\n visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00',\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder\n ? function (value) {\n return encoder.call(this, value, encode);\n }\n : encode;\n\n return this._pairs\n .map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '')\n .join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val)\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = (options && options.encode) || encode;\n\n const _options = utils.isFunction(options)\n ? {\n serialize: options,\n }\n : options;\n\n const serializeFn = _options && _options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, _options);\n } else {\n serializedParams = utils.isURLSearchParams(params)\n ? params.toString()\n : new AxiosURLSearchParams(params, _options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n * @param {Object} options The options for the interceptor, synchronous and runWhen\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null,\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false,\n legacyInterceptorReqResOrdering: true,\n};\n","'use strict';\n\nimport url from 'url';\nexport default url.URLSearchParams;\n","import crypto from 'crypto';\nimport URLSearchParams from './classes/URLSearchParams.js';\nimport FormData from './classes/FormData.js';\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz';\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT,\n};\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const { length } = alphabet;\n const randomValues = new Uint32Array(size);\n crypto.randomFillSync(randomValues);\n for (let i = 0; i < size; i++) {\n str += alphabet[randomValues[i] % length];\n }\n\n return str;\n};\n\nexport default {\n isNode: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob: (typeof Blob !== 'undefined' && Blob) || null,\n },\n ALPHABET,\n generateString,\n protocols: ['http', 'https', 'file', 'data'],\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = (typeof navigator === 'object' && navigator) || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv =\n hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin,\n};\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function (value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options,\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map((match) => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [\n function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if (\n (isFileList = utils.isFileList(data)) ||\n contentType.indexOf('multipart/form-data') > -1\n ) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? { 'files[]': data } : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n },\n ],\n\n transformResponse: [\n function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (\n data &&\n utils.isString(data) &&\n ((forcedJSONParsing && !this.responseType) || JSONRequested)\n ) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n },\n ],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob,\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': undefined,\n },\n },\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age',\n 'authorization',\n 'content-length',\n 'content-type',\n 'etag',\n 'expires',\n 'from',\n 'host',\n 'if-modified-since',\n 'if-unmodified-since',\n 'last-modified',\n 'location',\n 'max-forwards',\n 'proxy-authorization',\n 'referer',\n 'retry-after',\n 'user-agent',\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default (rawHeaders) => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders &&\n rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header\n .trim()\n .toLowerCase()\n .replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach((methodName) => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function (arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true,\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if (\n !key ||\n self[key] === undefined ||\n _rewrite === true ||\n (_rewrite === undefined && self[key] !== false)\n ) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {},\n dest,\n key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[(key = entry[0])] = (dest = obj[key])\n ? utils.isArray(dest)\n ? [...dest, entry[1]]\n : [dest, entry[1]]\n : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(\n key &&\n this[key] !== undefined &&\n (!matcher || matchHeaderValue(this, this[key], key, matcher))\n );\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null &&\n value !== false &&\n (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON())\n .map(([header, value]) => header + ': ' + value)\n .join('\\n');\n }\n\n getSetCookie() {\n return this.get('set-cookie') || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals =\n (this[$internals] =\n this[$internals] =\n {\n accessors: {},\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor([\n 'Content-Type',\n 'Content-Length',\n 'Accept',\n 'Accept-Encoding',\n 'User-Agent',\n 'Authorization',\n]);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n },\n };\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from '../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\n\nclass CanceledError extends AxiosError {\n /**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\n}\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(\n new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][\n Math.floor(response.status / 100) - 4\n ],\n response.config,\n response.request,\n response\n )\n );\n }\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n if (typeof url !== 'string') {\n return false;\n }\n\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","export const VERSION = \"1.13.6\";","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return (match && match[1]) || '';\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport parseProtocol from './parseProtocol.js';\nimport platform from '../platform/index.js';\n\nconst DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\\s\\S]*)$/;\n\n/**\n * Parse data uri to a Buffer or Blob\n *\n * @param {String} uri\n * @param {?Boolean} asBlob\n * @param {?Object} options\n * @param {?Function} options.Blob\n *\n * @returns {Buffer|Blob}\n */\nexport default function fromDataURI(uri, asBlob, options) {\n const _Blob = (options && options.Blob) || platform.classes.Blob;\n const protocol = parseProtocol(uri);\n\n if (asBlob === undefined && _Blob) {\n asBlob = true;\n }\n\n if (protocol === 'data') {\n uri = protocol.length ? uri.slice(protocol.length + 1) : uri;\n\n const match = DATA_URL_PATTERN.exec(uri);\n\n if (!match) {\n throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL);\n }\n\n const mime = match[1];\n const isBase64 = match[2];\n const body = match[3];\n const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8');\n\n if (asBlob) {\n if (!_Blob) {\n throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT);\n }\n\n return new _Blob([buffer], { type: mime });\n }\n\n return buffer;\n }\n\n throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT);\n}\n","'use strict';\n\nimport stream from 'stream';\nimport utils from '../utils.js';\n\nconst kInternals = Symbol('internals');\n\nclass AxiosTransformStream extends stream.Transform {\n constructor(options) {\n options = utils.toFlatObject(\n options,\n {\n maxRate: 0,\n chunkSize: 64 * 1024,\n minChunkSize: 100,\n timeWindow: 500,\n ticksRate: 2,\n samplesCount: 15,\n },\n null,\n (prop, source) => {\n return !utils.isUndefined(source[prop]);\n }\n );\n\n super({\n readableHighWaterMark: options.chunkSize,\n });\n\n const internals = (this[kInternals] = {\n timeWindow: options.timeWindow,\n chunkSize: options.chunkSize,\n maxRate: options.maxRate,\n minChunkSize: options.minChunkSize,\n bytesSeen: 0,\n isCaptured: false,\n notifiedBytesLoaded: 0,\n ts: Date.now(),\n bytes: 0,\n onReadCallback: null,\n });\n\n this.on('newListener', (event) => {\n if (event === 'progress') {\n if (!internals.isCaptured) {\n internals.isCaptured = true;\n }\n }\n });\n }\n\n _read(size) {\n const internals = this[kInternals];\n\n if (internals.onReadCallback) {\n internals.onReadCallback();\n }\n\n return super._read(size);\n }\n\n _transform(chunk, encoding, callback) {\n const internals = this[kInternals];\n const maxRate = internals.maxRate;\n\n const readableHighWaterMark = this.readableHighWaterMark;\n\n const timeWindow = internals.timeWindow;\n\n const divider = 1000 / timeWindow;\n const bytesThreshold = maxRate / divider;\n const minChunkSize =\n internals.minChunkSize !== false\n ? Math.max(internals.minChunkSize, bytesThreshold * 0.01)\n : 0;\n\n const pushChunk = (_chunk, _callback) => {\n const bytes = Buffer.byteLength(_chunk);\n internals.bytesSeen += bytes;\n internals.bytes += bytes;\n\n internals.isCaptured && this.emit('progress', internals.bytesSeen);\n\n if (this.push(_chunk)) {\n process.nextTick(_callback);\n } else {\n internals.onReadCallback = () => {\n internals.onReadCallback = null;\n process.nextTick(_callback);\n };\n }\n };\n\n const transformChunk = (_chunk, _callback) => {\n const chunkSize = Buffer.byteLength(_chunk);\n let chunkRemainder = null;\n let maxChunkSize = readableHighWaterMark;\n let bytesLeft;\n let passed = 0;\n\n if (maxRate) {\n const now = Date.now();\n\n if (!internals.ts || (passed = now - internals.ts) >= timeWindow) {\n internals.ts = now;\n bytesLeft = bytesThreshold - internals.bytes;\n internals.bytes = bytesLeft < 0 ? -bytesLeft : 0;\n passed = 0;\n }\n\n bytesLeft = bytesThreshold - internals.bytes;\n }\n\n if (maxRate) {\n if (bytesLeft <= 0) {\n // next time window\n return setTimeout(() => {\n _callback(null, _chunk);\n }, timeWindow - passed);\n }\n\n if (bytesLeft < maxChunkSize) {\n maxChunkSize = bytesLeft;\n }\n }\n\n if (maxChunkSize && chunkSize > maxChunkSize && chunkSize - maxChunkSize > minChunkSize) {\n chunkRemainder = _chunk.subarray(maxChunkSize);\n _chunk = _chunk.subarray(0, maxChunkSize);\n }\n\n pushChunk(\n _chunk,\n chunkRemainder\n ? () => {\n process.nextTick(_callback, null, chunkRemainder);\n }\n : _callback\n );\n };\n\n transformChunk(chunk, function transformNextChunk(err, _chunk) {\n if (err) {\n return callback(err);\n }\n\n if (_chunk) {\n transformChunk(_chunk, transformNextChunk);\n } else {\n callback(null);\n }\n });\n }\n}\n\nexport default AxiosTransformStream;\n","const { asyncIterator } = Symbol;\n\nconst readBlob = async function* (blob) {\n if (blob.stream) {\n yield* blob.stream();\n } else if (blob.arrayBuffer) {\n yield await blob.arrayBuffer();\n } else if (blob[asyncIterator]) {\n yield* blob[asyncIterator]();\n } else {\n yield blob;\n }\n};\n\nexport default readBlob;\n","import util from 'util';\nimport { Readable } from 'stream';\nimport utils from '../utils.js';\nimport readBlob from './readBlob.js';\nimport platform from '../platform/index.js';\n\nconst BOUNDARY_ALPHABET = platform.ALPHABET.ALPHA_DIGIT + '-_';\n\nconst textEncoder = typeof TextEncoder === 'function' ? new TextEncoder() : new util.TextEncoder();\n\nconst CRLF = '\\r\\n';\nconst CRLF_BYTES = textEncoder.encode(CRLF);\nconst CRLF_BYTES_COUNT = 2;\n\nclass FormDataPart {\n constructor(name, value) {\n const { escapeName } = this.constructor;\n const isStringValue = utils.isString(value);\n\n let headers = `Content-Disposition: form-data; name=\"${escapeName(name)}\"${\n !isStringValue && value.name ? `; filename=\"${escapeName(value.name)}\"` : ''\n }${CRLF}`;\n\n if (isStringValue) {\n value = textEncoder.encode(String(value).replace(/\\r?\\n|\\r\\n?/g, CRLF));\n } else {\n headers += `Content-Type: ${value.type || 'application/octet-stream'}${CRLF}`;\n }\n\n this.headers = textEncoder.encode(headers + CRLF);\n\n this.contentLength = isStringValue ? value.byteLength : value.size;\n\n this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT;\n\n this.name = name;\n this.value = value;\n }\n\n async *encode() {\n yield this.headers;\n\n const { value } = this;\n\n if (utils.isTypedArray(value)) {\n yield value;\n } else {\n yield* readBlob(value);\n }\n\n yield CRLF_BYTES;\n }\n\n static escapeName(name) {\n return String(name).replace(\n /[\\r\\n\"]/g,\n (match) =>\n ({\n '\\r': '%0D',\n '\\n': '%0A',\n '\"': '%22',\n })[match]\n );\n }\n}\n\nconst formDataToStream = (form, headersHandler, options) => {\n const {\n tag = 'form-data-boundary',\n size = 25,\n boundary = tag + '-' + platform.generateString(size, BOUNDARY_ALPHABET),\n } = options || {};\n\n if (!utils.isFormData(form)) {\n throw TypeError('FormData instance required');\n }\n\n if (boundary.length < 1 || boundary.length > 70) {\n throw Error('boundary must be 10-70 characters long');\n }\n\n const boundaryBytes = textEncoder.encode('--' + boundary + CRLF);\n const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF);\n let contentLength = footerBytes.byteLength;\n\n const parts = Array.from(form.entries()).map(([name, value]) => {\n const part = new FormDataPart(name, value);\n contentLength += part.size;\n return part;\n });\n\n contentLength += boundaryBytes.byteLength * parts.length;\n\n contentLength = utils.toFiniteNumber(contentLength);\n\n const computedHeaders = {\n 'Content-Type': `multipart/form-data; boundary=${boundary}`,\n };\n\n if (Number.isFinite(contentLength)) {\n computedHeaders['Content-Length'] = contentLength;\n }\n\n headersHandler && headersHandler(computedHeaders);\n\n return Readable.from(\n (async function* () {\n for (const part of parts) {\n yield boundaryBytes;\n yield* part.encode();\n }\n\n yield footerBytes;\n })()\n );\n};\n\nexport default formDataToStream;\n","'use strict';\n\nimport stream from 'stream';\n\nclass ZlibHeaderTransformStream extends stream.Transform {\n __transform(chunk, encoding, callback) {\n this.push(chunk);\n callback();\n }\n\n _transform(chunk, encoding, callback) {\n if (chunk.length !== 0) {\n this._transform = this.__transform;\n\n // Add Default Compression headers if no zlib headers are present\n if (chunk[0] !== 120) {\n // Hex: 78\n const header = Buffer.alloc(2);\n header[0] = 120; // Hex: 78\n header[1] = 156; // Hex: 9C\n this.push(header, encoding);\n }\n }\n\n this.__transform(chunk, encoding, callback);\n }\n}\n\nexport default ZlibHeaderTransformStream;\n","import utils from '../utils.js';\n\nconst callbackify = (fn, reducer) => {\n return utils.isAsyncFn(fn)\n ? function (...args) {\n const cb = args.pop();\n fn.apply(this, args).then((value) => {\n try {\n reducer ? cb(null, ...reducer(value)) : cb(null, value);\n } catch (err) {\n cb(err);\n }\n }, cb);\n }\n : fn;\n};\n\nexport default callbackify;\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round((bytesCount * 1000) / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if (passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle((e) => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? loaded / total : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true,\n };\n\n listener(data);\n }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [\n (loaded) =>\n throttled[0]({\n lengthComputable,\n total,\n loaded,\n }),\n throttled[1],\n ];\n};\n\nexport const asyncDecorator =\n (fn) =>\n (...args) =>\n utils.asap(() => fn(...args));\n","/**\n * Estimate decoded byte length of a data:// URL *without* allocating large buffers.\n * - For base64: compute exact decoded size using length and padding;\n * handle %XX at the character-count level (no string allocation).\n * - For non-base64: use UTF-8 byteLength of the encoded body as a safe upper bound.\n *\n * @param {string} url\n * @returns {number}\n */\nexport default function estimateDataURLDecodedBytes(url) {\n if (!url || typeof url !== 'string') return 0;\n if (!url.startsWith('data:')) return 0;\n\n const comma = url.indexOf(',');\n if (comma < 0) return 0;\n\n const meta = url.slice(5, comma);\n const body = url.slice(comma + 1);\n const isBase64 = /;base64/i.test(meta);\n\n if (isBase64) {\n let effectiveLen = body.length;\n const len = body.length; // cache length\n\n for (let i = 0; i < len; i++) {\n if (body.charCodeAt(i) === 37 /* '%' */ && i + 2 < len) {\n const a = body.charCodeAt(i + 1);\n const b = body.charCodeAt(i + 2);\n const isHex =\n ((a >= 48 && a <= 57) || (a >= 65 && a <= 70) || (a >= 97 && a <= 102)) &&\n ((b >= 48 && b <= 57) || (b >= 65 && b <= 70) || (b >= 97 && b <= 102));\n\n if (isHex) {\n effectiveLen -= 2;\n i += 2;\n }\n }\n }\n\n let pad = 0;\n let idx = len - 1;\n\n const tailIsPct3D = (j) =>\n j >= 2 &&\n body.charCodeAt(j - 2) === 37 && // '%'\n body.charCodeAt(j - 1) === 51 && // '3'\n (body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100); // 'D' or 'd'\n\n if (idx >= 0) {\n if (body.charCodeAt(idx) === 61 /* '=' */) {\n pad++;\n idx--;\n } else if (tailIsPct3D(idx)) {\n pad++;\n idx -= 3;\n }\n }\n\n if (pad === 1 && idx >= 0) {\n if (body.charCodeAt(idx) === 61 /* '=' */) {\n pad++;\n } else if (tailIsPct3D(idx)) {\n pad++;\n }\n }\n\n const groups = Math.floor(effectiveLen / 4);\n const bytes = groups * 3 - (pad || 0);\n return bytes > 0 ? bytes : 0;\n }\n\n return Buffer.byteLength(body, 'utf8');\n}\n","import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport buildURL from '../helpers/buildURL.js';\nimport proxyFromEnv from 'proxy-from-env';\nimport http from 'http';\nimport https from 'https';\nimport http2 from 'http2';\nimport util from 'util';\nimport followRedirects from 'follow-redirects';\nimport zlib from 'zlib';\nimport { VERSION } from '../env/data.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport platform from '../platform/index.js';\nimport fromDataURI from '../helpers/fromDataURI.js';\nimport stream from 'stream';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport AxiosTransformStream from '../helpers/AxiosTransformStream.js';\nimport { EventEmitter } from 'events';\nimport formDataToStream from '../helpers/formDataToStream.js';\nimport readBlob from '../helpers/readBlob.js';\nimport ZlibHeaderTransformStream from '../helpers/ZlibHeaderTransformStream.js';\nimport callbackify from '../helpers/callbackify.js';\nimport {\n progressEventReducer,\n progressEventDecorator,\n asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport estimateDataURLDecodedBytes from '../helpers/estimateDataURLDecodedBytes.js';\n\nconst zlibOptions = {\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH,\n};\n\nconst brotliOptions = {\n flush: zlib.constants.BROTLI_OPERATION_FLUSH,\n finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH,\n};\n\nconst isBrotliSupported = utils.isFunction(zlib.createBrotliDecompress);\n\nconst { http: httpFollow, https: httpsFollow } = followRedirects;\n\nconst isHttps = /https:?/;\n\nconst supportedProtocols = platform.protocols.map((protocol) => {\n return protocol + ':';\n});\n\nconst flushOnFinish = (stream, [throttled, flush]) => {\n stream.on('end', flush).on('error', flush);\n\n return throttled;\n};\n\nclass Http2Sessions {\n constructor() {\n this.sessions = Object.create(null);\n }\n\n getSession(authority, options) {\n options = Object.assign(\n {\n sessionTimeout: 1000,\n },\n options\n );\n\n let authoritySessions = this.sessions[authority];\n\n if (authoritySessions) {\n let len = authoritySessions.length;\n\n for (let i = 0; i < len; i++) {\n const [sessionHandle, sessionOptions] = authoritySessions[i];\n if (\n !sessionHandle.destroyed &&\n !sessionHandle.closed &&\n util.isDeepStrictEqual(sessionOptions, options)\n ) {\n return sessionHandle;\n }\n }\n }\n\n const session = http2.connect(authority, options);\n\n let removed;\n\n const removeSession = () => {\n if (removed) {\n return;\n }\n\n removed = true;\n\n let entries = authoritySessions,\n len = entries.length,\n i = len;\n\n while (i--) {\n if (entries[i][0] === session) {\n if (len === 1) {\n delete this.sessions[authority];\n } else {\n entries.splice(i, 1);\n }\n return;\n }\n }\n };\n\n const originalRequestFn = session.request;\n\n const { sessionTimeout } = options;\n\n if (sessionTimeout != null) {\n let timer;\n let streamsCount = 0;\n\n session.request = function () {\n const stream = originalRequestFn.apply(this, arguments);\n\n streamsCount++;\n\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n\n stream.once('close', () => {\n if (!--streamsCount) {\n timer = setTimeout(() => {\n timer = null;\n removeSession();\n }, sessionTimeout);\n }\n });\n\n return stream;\n };\n }\n\n session.once('close', removeSession);\n\n let entry = [session, options];\n\n authoritySessions\n ? authoritySessions.push(entry)\n : (authoritySessions = this.sessions[authority] = [entry]);\n\n return session;\n }\n}\n\nconst http2Sessions = new Http2Sessions();\n\n/**\n * If the proxy or config beforeRedirects functions are defined, call them with the options\n * object.\n *\n * @param {Object} options - The options object that was passed to the request.\n *\n * @returns {Object}\n */\nfunction dispatchBeforeRedirect(options, responseDetails) {\n if (options.beforeRedirects.proxy) {\n options.beforeRedirects.proxy(options);\n }\n if (options.beforeRedirects.config) {\n options.beforeRedirects.config(options, responseDetails);\n }\n}\n\n/**\n * If the proxy or config afterRedirects functions are defined, call them with the options\n *\n * @param {http.ClientRequestArgs} options\n * @param {AxiosProxyConfig} configProxy configuration from Axios options object\n * @param {string} location\n *\n * @returns {http.ClientRequestArgs}\n */\nfunction setProxy(options, configProxy, location) {\n let proxy = configProxy;\n if (!proxy && proxy !== false) {\n const proxyUrl = proxyFromEnv.getProxyForUrl(location);\n if (proxyUrl) {\n proxy = new URL(proxyUrl);\n }\n }\n if (proxy) {\n // Basic proxy authorization\n if (proxy.username) {\n proxy.auth = (proxy.username || '') + ':' + (proxy.password || '');\n }\n\n if (proxy.auth) {\n // Support proxy auth object form\n const validProxyAuth = Boolean(proxy.auth.username || proxy.auth.password);\n\n if (validProxyAuth) {\n proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || '');\n } else if (typeof proxy.auth === 'object') {\n throw new AxiosError('Invalid proxy authorization', AxiosError.ERR_BAD_OPTION, { proxy });\n }\n\n const base64 = Buffer.from(proxy.auth, 'utf8').toString('base64');\n\n options.headers['Proxy-Authorization'] = 'Basic ' + base64;\n }\n\n options.headers.host = options.hostname + (options.port ? ':' + options.port : '');\n const proxyHost = proxy.hostname || proxy.host;\n options.hostname = proxyHost;\n // Replace 'host' since options is not a URL object\n options.host = proxyHost;\n options.port = proxy.port;\n options.path = location;\n if (proxy.protocol) {\n options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`;\n }\n }\n\n options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) {\n // Configure proxy for redirected request, passing the original config proxy to apply\n // the exact same logic as if the redirected request was performed by axios directly.\n setProxy(redirectOptions, configProxy, redirectOptions.href);\n };\n}\n\nconst isHttpAdapterSupported =\n typeof process !== 'undefined' && utils.kindOf(process) === 'process';\n\n// temporary hotfix\n\nconst wrapAsync = (asyncExecutor) => {\n return new Promise((resolve, reject) => {\n let onDone;\n let isDone;\n\n const done = (value, isRejected) => {\n if (isDone) return;\n isDone = true;\n onDone && onDone(value, isRejected);\n };\n\n const _resolve = (value) => {\n done(value);\n resolve(value);\n };\n\n const _reject = (reason) => {\n done(reason, true);\n reject(reason);\n };\n\n asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject);\n });\n};\n\nconst resolveFamily = ({ address, family }) => {\n if (!utils.isString(address)) {\n throw TypeError('address must be a string');\n }\n return {\n address,\n family: family || (address.indexOf('.') < 0 ? 6 : 4),\n };\n};\n\nconst buildAddressEntry = (address, family) =>\n resolveFamily(utils.isObject(address) ? address : { address, family });\n\nconst http2Transport = {\n request(options, cb) {\n const authority =\n options.protocol +\n '//' +\n options.hostname +\n ':' +\n (options.port || (options.protocol === 'https:' ? 443 : 80));\n\n const { http2Options, headers } = options;\n\n const session = http2Sessions.getSession(authority, http2Options);\n\n const { HTTP2_HEADER_SCHEME, HTTP2_HEADER_METHOD, HTTP2_HEADER_PATH, HTTP2_HEADER_STATUS } =\n http2.constants;\n\n const http2Headers = {\n [HTTP2_HEADER_SCHEME]: options.protocol.replace(':', ''),\n [HTTP2_HEADER_METHOD]: options.method,\n [HTTP2_HEADER_PATH]: options.path,\n };\n\n utils.forEach(headers, (header, name) => {\n name.charAt(0) !== ':' && (http2Headers[name] = header);\n });\n\n const req = session.request(http2Headers);\n\n req.once('response', (responseHeaders) => {\n const response = req; //duplex\n\n responseHeaders = Object.assign({}, responseHeaders);\n\n const status = responseHeaders[HTTP2_HEADER_STATUS];\n\n delete responseHeaders[HTTP2_HEADER_STATUS];\n\n response.headers = responseHeaders;\n\n response.statusCode = +status;\n\n cb(response);\n });\n\n return req;\n },\n};\n\n/*eslint consistent-return:0*/\nexport default isHttpAdapterSupported &&\n function httpAdapter(config) {\n return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) {\n let { data, lookup, family, httpVersion = 1, http2Options } = config;\n const { responseType, responseEncoding } = config;\n const method = config.method.toUpperCase();\n let isDone;\n let rejected = false;\n let req;\n\n httpVersion = +httpVersion;\n\n if (Number.isNaN(httpVersion)) {\n throw TypeError(`Invalid protocol version: '${config.httpVersion}' is not a number`);\n }\n\n if (httpVersion !== 1 && httpVersion !== 2) {\n throw TypeError(`Unsupported protocol version '${httpVersion}'`);\n }\n\n const isHttp2 = httpVersion === 2;\n\n if (lookup) {\n const _lookup = callbackify(lookup, (value) => (utils.isArray(value) ? value : [value]));\n // hotfix to support opt.all option which is required for node 20.x\n lookup = (hostname, opt, cb) => {\n _lookup(hostname, opt, (err, arg0, arg1) => {\n if (err) {\n return cb(err);\n }\n\n const addresses = utils.isArray(arg0)\n ? arg0.map((addr) => buildAddressEntry(addr))\n : [buildAddressEntry(arg0, arg1)];\n\n opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family);\n });\n };\n }\n\n const abortEmitter = new EventEmitter();\n\n function abort(reason) {\n try {\n abortEmitter.emit(\n 'abort',\n !reason || reason.type ? new CanceledError(null, config, req) : reason\n );\n } catch (err) {\n console.warn('emit error', err);\n }\n }\n\n abortEmitter.once('abort', reject);\n\n const onFinished = () => {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(abort);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', abort);\n }\n\n abortEmitter.removeAllListeners();\n };\n\n if (config.cancelToken || config.signal) {\n config.cancelToken && config.cancelToken.subscribe(abort);\n if (config.signal) {\n config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort);\n }\n }\n\n onDone((response, isRejected) => {\n isDone = true;\n\n if (isRejected) {\n rejected = true;\n onFinished();\n return;\n }\n\n const { data } = response;\n\n if (data instanceof stream.Readable || data instanceof stream.Duplex) {\n const offListeners = stream.finished(data, () => {\n offListeners();\n onFinished();\n });\n } else {\n onFinished();\n }\n });\n\n // Parse url\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n const parsed = new URL(fullPath, platform.hasBrowserEnv ? platform.origin : undefined);\n const protocol = parsed.protocol || supportedProtocols[0];\n\n if (protocol === 'data:') {\n // Apply the same semantics as HTTP: only enforce if a finite, non-negative cap is set.\n if (config.maxContentLength > -1) {\n // Use the exact string passed to fromDataURI (config.url); fall back to fullPath if needed.\n const dataUrl = String(config.url || fullPath || '');\n const estimated = estimateDataURLDecodedBytes(dataUrl);\n\n if (estimated > config.maxContentLength) {\n return reject(\n new AxiosError(\n 'maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config\n )\n );\n }\n }\n\n let convertedData;\n\n if (method !== 'GET') {\n return settle(resolve, reject, {\n status: 405,\n statusText: 'method not allowed',\n headers: {},\n config,\n });\n }\n\n try {\n convertedData = fromDataURI(config.url, responseType === 'blob', {\n Blob: config.env && config.env.Blob,\n });\n } catch (err) {\n throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config);\n }\n\n if (responseType === 'text') {\n convertedData = convertedData.toString(responseEncoding);\n\n if (!responseEncoding || responseEncoding === 'utf8') {\n convertedData = utils.stripBOM(convertedData);\n }\n } else if (responseType === 'stream') {\n convertedData = stream.Readable.from(convertedData);\n }\n\n return settle(resolve, reject, {\n data: convertedData,\n status: 200,\n statusText: 'OK',\n headers: new AxiosHeaders(),\n config,\n });\n }\n\n if (supportedProtocols.indexOf(protocol) === -1) {\n return reject(\n new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_BAD_REQUEST, config)\n );\n }\n\n const headers = AxiosHeaders.from(config.headers).normalize();\n\n // Set User-Agent (required by some servers)\n // See https://github.com/axios/axios/issues/69\n // User-Agent is specified; handle case where no UA header is desired\n // Only set header if it hasn't been set in config\n headers.set('User-Agent', 'axios/' + VERSION, false);\n\n const { onUploadProgress, onDownloadProgress } = config;\n const maxRate = config.maxRate;\n let maxUploadRate = undefined;\n let maxDownloadRate = undefined;\n\n // support for spec compliant FormData objects\n if (utils.isSpecCompliantForm(data)) {\n const userBoundary = headers.getContentType(/boundary=([-_\\w\\d]{10,70})/i);\n\n data = formDataToStream(\n data,\n (formHeaders) => {\n headers.set(formHeaders);\n },\n {\n tag: `axios-${VERSION}-boundary`,\n boundary: (userBoundary && userBoundary[1]) || undefined,\n }\n );\n // support for https://www.npmjs.com/package/form-data api\n } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) {\n headers.set(data.getHeaders());\n\n if (!headers.hasContentLength()) {\n try {\n const knownLength = await util.promisify(data.getLength).call(data);\n Number.isFinite(knownLength) &&\n knownLength >= 0 &&\n headers.setContentLength(knownLength);\n /*eslint no-empty:0*/\n } catch (e) {}\n }\n } else if (utils.isBlob(data) || utils.isFile(data)) {\n data.size && headers.setContentType(data.type || 'application/octet-stream');\n headers.setContentLength(data.size || 0);\n data = stream.Readable.from(readBlob(data));\n } else if (data && !utils.isStream(data)) {\n if (Buffer.isBuffer(data)) {\n // Nothing to do...\n } else if (utils.isArrayBuffer(data)) {\n data = Buffer.from(new Uint8Array(data));\n } else if (utils.isString(data)) {\n data = Buffer.from(data, 'utf-8');\n } else {\n return reject(\n new AxiosError(\n 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\n );\n }\n\n // Add Content-Length header if data exists\n headers.setContentLength(data.length, false);\n\n if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) {\n return reject(\n new AxiosError(\n 'Request body larger than maxBodyLength limit',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\n );\n }\n }\n\n const contentLength = utils.toFiniteNumber(headers.getContentLength());\n\n if (utils.isArray(maxRate)) {\n maxUploadRate = maxRate[0];\n maxDownloadRate = maxRate[1];\n } else {\n maxUploadRate = maxDownloadRate = maxRate;\n }\n\n if (data && (onUploadProgress || maxUploadRate)) {\n if (!utils.isStream(data)) {\n data = stream.Readable.from(data, { objectMode: false });\n }\n\n data = stream.pipeline(\n [\n data,\n new AxiosTransformStream({\n maxRate: utils.toFiniteNumber(maxUploadRate),\n }),\n ],\n utils.noop\n );\n\n onUploadProgress &&\n data.on(\n 'progress',\n flushOnFinish(\n data,\n progressEventDecorator(\n contentLength,\n progressEventReducer(asyncDecorator(onUploadProgress), false, 3)\n )\n )\n );\n }\n\n // HTTP basic authentication\n let auth = undefined;\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password || '';\n auth = username + ':' + password;\n }\n\n if (!auth && parsed.username) {\n const urlUsername = parsed.username;\n const urlPassword = parsed.password;\n auth = urlUsername + ':' + urlPassword;\n }\n\n auth && headers.delete('authorization');\n\n let path;\n\n try {\n path = buildURL(\n parsed.pathname + parsed.search,\n config.params,\n config.paramsSerializer\n ).replace(/^\\?/, '');\n } catch (err) {\n const customErr = new Error(err.message);\n customErr.config = config;\n customErr.url = config.url;\n customErr.exists = true;\n return reject(customErr);\n }\n\n headers.set(\n 'Accept-Encoding',\n 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''),\n false\n );\n\n const options = {\n path,\n method: method,\n headers: headers.toJSON(),\n agents: { http: config.httpAgent, https: config.httpsAgent },\n auth,\n protocol,\n family,\n beforeRedirect: dispatchBeforeRedirect,\n beforeRedirects: {},\n http2Options,\n };\n\n // cacheable-lookup integration hotfix\n !utils.isUndefined(lookup) && (options.lookup = lookup);\n\n if (config.socketPath) {\n options.socketPath = config.socketPath;\n } else {\n options.hostname = parsed.hostname.startsWith('[')\n ? parsed.hostname.slice(1, -1)\n : parsed.hostname;\n options.port = parsed.port;\n setProxy(\n options,\n config.proxy,\n protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path\n );\n }\n\n let transport;\n const isHttpsRequest = isHttps.test(options.protocol);\n options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;\n\n if (isHttp2) {\n transport = http2Transport;\n } else {\n if (config.transport) {\n transport = config.transport;\n } else if (config.maxRedirects === 0) {\n transport = isHttpsRequest ? https : http;\n } else {\n if (config.maxRedirects) {\n options.maxRedirects = config.maxRedirects;\n }\n if (config.beforeRedirect) {\n options.beforeRedirects.config = config.beforeRedirect;\n }\n transport = isHttpsRequest ? httpsFollow : httpFollow;\n }\n }\n\n if (config.maxBodyLength > -1) {\n options.maxBodyLength = config.maxBodyLength;\n } else {\n // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited\n options.maxBodyLength = Infinity;\n }\n\n if (config.insecureHTTPParser) {\n options.insecureHTTPParser = config.insecureHTTPParser;\n }\n\n // Create the request\n req = transport.request(options, function handleResponse(res) {\n if (req.destroyed) return;\n\n const streams = [res];\n\n const responseLength = utils.toFiniteNumber(res.headers['content-length']);\n\n if (onDownloadProgress || maxDownloadRate) {\n const transformStream = new AxiosTransformStream({\n maxRate: utils.toFiniteNumber(maxDownloadRate),\n });\n\n onDownloadProgress &&\n transformStream.on(\n 'progress',\n flushOnFinish(\n transformStream,\n progressEventDecorator(\n responseLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true, 3)\n )\n )\n );\n\n streams.push(transformStream);\n }\n\n // decompress the response body transparently if required\n let responseStream = res;\n\n // return the last request in case of redirects\n const lastRequest = res.req || req;\n\n // if decompress disabled we should not decompress\n if (config.decompress !== false && res.headers['content-encoding']) {\n // if no content, but headers still say that it is encoded,\n // remove the header not confuse downstream operations\n if (method === 'HEAD' || res.statusCode === 204) {\n delete res.headers['content-encoding'];\n }\n\n switch ((res.headers['content-encoding'] || '').toLowerCase()) {\n /*eslint default-case:0*/\n case 'gzip':\n case 'x-gzip':\n case 'compress':\n case 'x-compress':\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib.createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'deflate':\n streams.push(new ZlibHeaderTransformStream());\n\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib.createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'br':\n if (isBrotliSupported) {\n streams.push(zlib.createBrotliDecompress(brotliOptions));\n delete res.headers['content-encoding'];\n }\n }\n }\n\n responseStream = streams.length > 1 ? stream.pipeline(streams, utils.noop) : streams[0];\n\n const response = {\n status: res.statusCode,\n statusText: res.statusMessage,\n headers: new AxiosHeaders(res.headers),\n config,\n request: lastRequest,\n };\n\n if (responseType === 'stream') {\n response.data = responseStream;\n settle(resolve, reject, response);\n } else {\n const responseBuffer = [];\n let totalResponseBytes = 0;\n\n responseStream.on('data', function handleStreamData(chunk) {\n responseBuffer.push(chunk);\n totalResponseBytes += chunk.length;\n\n // make sure the content length is not over the maxContentLength if specified\n if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) {\n // stream.destroy() emit aborted event before calling reject() on Node.js v16\n rejected = true;\n responseStream.destroy();\n abort(\n new AxiosError(\n 'maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n lastRequest\n )\n );\n }\n });\n\n responseStream.on('aborted', function handlerStreamAborted() {\n if (rejected) {\n return;\n }\n\n const err = new AxiosError(\n 'stream has been aborted',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n lastRequest\n );\n responseStream.destroy(err);\n reject(err);\n });\n\n responseStream.on('error', function handleStreamError(err) {\n if (req.destroyed) return;\n reject(AxiosError.from(err, null, config, lastRequest));\n });\n\n responseStream.on('end', function handleStreamEnd() {\n try {\n let responseData =\n responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer);\n if (responseType !== 'arraybuffer') {\n responseData = responseData.toString(responseEncoding);\n if (!responseEncoding || responseEncoding === 'utf8') {\n responseData = utils.stripBOM(responseData);\n }\n }\n response.data = responseData;\n } catch (err) {\n return reject(AxiosError.from(err, null, config, response.request, response));\n }\n settle(resolve, reject, response);\n });\n }\n\n abortEmitter.once('abort', (err) => {\n if (!responseStream.destroyed) {\n responseStream.emit('error', err);\n responseStream.destroy();\n }\n });\n });\n\n abortEmitter.once('abort', (err) => {\n if (req.close) {\n req.close();\n } else {\n req.destroy(err);\n }\n });\n\n // Handle errors\n req.on('error', function handleRequestError(err) {\n reject(AxiosError.from(err, null, config, req));\n });\n\n // set tcp keep alive to prevent drop connection by peer\n req.on('socket', function handleRequestSocket(socket) {\n // default interval of sending ack packet is 1 minute\n socket.setKeepAlive(true, 1000 * 60);\n });\n\n // Handle request timeout\n if (config.timeout) {\n // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types.\n const timeout = parseInt(config.timeout, 10);\n\n if (Number.isNaN(timeout)) {\n abort(\n new AxiosError(\n 'error trying to parse `config.timeout` to int',\n AxiosError.ERR_BAD_OPTION_VALUE,\n config,\n req\n )\n );\n\n return;\n }\n\n // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.\n // And timer callback will be fired, and abort() will be invoked before connection, then get \"socket hang up\" and code ECONNRESET.\n // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.\n // And then these socket which be hang up will devouring CPU little by little.\n // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.\n req.setTimeout(timeout, function handleRequestTimeout() {\n if (isDone) return;\n let timeoutErrorMessage = config.timeout\n ? 'timeout of ' + config.timeout + 'ms exceeded'\n : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n abort(\n new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n req\n )\n );\n });\n } else {\n // explicitly reset the socket timeout value for a possible `keep-alive` request\n req.setTimeout(0);\n }\n\n // Send the request\n if (utils.isStream(data)) {\n let ended = false;\n let errored = false;\n\n data.on('end', () => {\n ended = true;\n });\n\n data.once('error', (err) => {\n errored = true;\n req.destroy(err);\n });\n\n data.on('close', () => {\n if (!ended && !errored) {\n abort(new CanceledError('Request stream has been aborted', config, req));\n }\n });\n\n data.pipe(req);\n } else {\n data && req.write(data);\n req.end();\n }\n });\n };\n\nexport const __setProxy = setProxy;\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n })(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n )\n : () => true;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n },\n }\n : // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {},\n };\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst headersToObject = (thing) => (thing instanceof AxiosHeaders ? { ...thing } : thing);\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({ caseless }, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) =>\n mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n };\n\n utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(\n buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls),\n config.params,\n config.paramsSerializer\n );\n\n // HTTP basic authentication\n if (auth) {\n headers.set(\n 'Authorization',\n 'Basic ' +\n btoa(\n (auth.username || '') +\n ':' +\n (auth.password ? unescape(encodeURIComponent(auth.password)) : '')\n )\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n","import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let { responseType, onUploadProgress, onDownloadProgress } = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData =\n !responseType || responseType === 'text' || responseType === 'json'\n ? request.responseText\n : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request,\n };\n\n settle(\n function _resolve(value) {\n resolve(value);\n done();\n },\n function _reject(err) {\n reject(err);\n done();\n },\n response\n );\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (\n request.status === 0 &&\n !(request.responseURL && request.responseURL.indexOf('file:') === 0)\n ) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout\n ? 'timeout of ' + _config.timeout + 'ms exceeded'\n : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(\n new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request\n )\n );\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = (cancel) => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted\n ? onCanceled()\n : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(\n new AxiosError(\n 'Unsupported protocol ' + protocol + ':',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\n );\n return;\n }\n\n // Send the request\n request.send(requestData || null);\n });\n };\n","import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const { length } = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(\n err instanceof AxiosError\n ? err\n : new CanceledError(err instanceof Error ? err.message : err)\n );\n }\n };\n\n let timer =\n timeout &&\n setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach((signal) => {\n signal.unsubscribe\n ? signal.unsubscribe(onabort)\n : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const { signal } = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n};\n\nexport default composeSignals;\n","export const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream(\n {\n async pull(controller) {\n try {\n const { done, value } = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = (bytes += len);\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n },\n },\n {\n highWaterMark: 2,\n }\n );\n};\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n progressEventReducer,\n progressEventDecorator,\n asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\nconst globalFetchAPI = (({ Request, Response }) => ({\n Request,\n Response,\n}))(utils.global);\n\nconst { ReadableStream, TextEncoder } = utils.global;\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false;\n }\n};\n\nconst factory = (env) => {\n env = utils.merge.call(\n {\n skipUndefined: true,\n },\n globalFetchAPI,\n env\n );\n\n const { fetch: envFetch, Request, Response } = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText =\n isFetchSupported &&\n (typeof TextEncoder === 'function'\n ? (\n (encoder) => (str) =>\n encoder.encode(str)\n )(new TextEncoder())\n : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n const supportsRequestStream =\n isRequestSupported &&\n isReadableStreamSupported &&\n test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream =\n isResponseSupported &&\n isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body),\n };\n\n isFetchSupported &&\n (() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n !resolvers[type] &&\n (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(\n `Response type '${type}' is not supported`,\n AxiosError.ERR_NOT_SUPPORT,\n config\n );\n });\n });\n })();\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions,\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals(\n [signal, cancelToken && cancelToken.toAbortSignal()],\n timeout\n );\n\n let request = null;\n\n const unsubscribe =\n composedSignal &&\n composedSignal.unsubscribe &&\n (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress &&\n supportsRequestStream &&\n method !== 'get' &&\n method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: 'half',\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: 'half',\n credentials: isCredentialsSupported ? withCredentials : undefined,\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported\n ? _fetch(request, fetchOptions)\n : _fetch(url, resolvedOptions));\n\n const isStreamResponse =\n supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach((prop) => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] =\n (onDownloadProgress &&\n progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n )) ||\n [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n response,\n config\n );\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request,\n });\n });\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError(\n 'Network Error',\n AxiosError.ERR_NETWORK,\n config,\n request,\n err && err.response\n ),\n {\n cause: err.cause || err,\n }\n );\n }\n\n throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n }\n };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const { fetch, Request, Response } = env;\n const seeds = [Request, Response, fetch];\n\n let len = seeds.length,\n i = len,\n seed,\n target,\n map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n },\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', { value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons).map(\n ([id, state]) =>\n `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length\n ? reasons.length > 1\n ? 'since :\\n' + reasons.map(renderReason).join('\\n')\n : ' ' + renderReason(reasons[0])\n : 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object}\n */\n adapters: knownAdapters,\n};\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from '../adapters/adapters.js';\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(config, config.transformRequest);\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(\n function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, config.transformResponse, response);\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n },\n function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n }\n );\n}\n","'use strict';\n\nimport { VERSION } from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return (\n '[Axios v' +\n VERSION +\n \"] Transitional option '\" +\n opt +\n \"'\" +\n desc +\n (message ? '. ' + message : '')\n );\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError(\n 'option ' + opt + ' must be ' + result,\n AxiosError.ERR_BAD_OPTION_VALUE\n );\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\nimport transitionalDefaults from '../defaults/transitional.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager(),\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack;\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const { transitional, paramsSerializer, headers } = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(\n transitional,\n {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean),\n legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n },\n false\n );\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer,\n };\n } else {\n validator.assertOptions(\n paramsSerializer,\n {\n encode: validators.function,\n serialize: validators.function,\n },\n true\n );\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(\n config,\n {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken'),\n },\n true\n );\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(headers.common, headers[config.method]);\n\n headers &&\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => {\n delete headers[method];\n });\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n const transitional = config.transitional || transitionalDefaults;\n const legacyInterceptorReqResOrdering =\n transitional && transitional.legacyInterceptorReqResOrdering;\n\n if (legacyInterceptorReqResOrdering) {\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n } else {\n requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n }\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data,\n })\n );\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n headers: isForm\n ? {\n 'Content-Type': 'multipart/form-data',\n }\n : {},\n url,\n data,\n })\n );\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then((cancel) => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = (onfulfilled) => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise((resolve) => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel,\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * const args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && payload.isAxiosError === true;\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport { VERSION } from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from './core/AxiosHeaders.js';\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, { allOwnKeys: true });\n\n // Copy context to instance\n utils.extend(instance, context, null, { allOwnKeys: true });\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = (thing) => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios;\n"],"names":["isFunction","utils","PlatformFormData","AxiosError","encode","url","crypto","FormData","platform","defaults","AxiosHeaders","stream","util","readBlob","Readable","zlib","followRedirects","http2","proxyFromEnv","callbackify","EventEmitter","CanceledError","formDataToStream","AxiosTransformStream","https","http","ZlibHeaderTransformStream","ReadableStream","TextEncoder","composeSignals","fetchAdapter.getFetch","validators","InterceptorManager","Axios","CancelToken","HttpStatusCode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE;AAC1C,EAAE,OAAO,SAAS,IAAI,GAAG;AACzB,IAAI,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACxC,GAAG,CAAC;AACJ;;ACTA;AACA;AACA,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;AACtC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;AAClC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;AACzC;AACA,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,KAAK;AACtC,EAAE,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACrE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACxB;AACA,MAAM,UAAU,GAAG,CAAC,IAAI,KAAK;AAC7B,EAAE,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,EAAE,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AAC3C,CAAC,CAAC;AACF;AACA,MAAM,UAAU,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,IAAI,CAAC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,EAAE;AACF,IAAI,GAAG,KAAK,IAAI;AAChB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACrB,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI;AAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;AACjC,IAAIA,YAAU,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC;AACxC,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;AACjC,IAAI;AACJ,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,GAAG,EAAE;AAChC,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;AAChE,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACrC,GAAG,MAAM;AACT,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC5D,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,YAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK;AAC/B,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;AAChC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AACxC,EAAE;AACF,IAAI,CAAC,SAAS,KAAK,IAAI;AACvB,MAAM,SAAS,KAAK,MAAM,CAAC,SAAS;AACpC,MAAM,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,IAAI;AAC/C,IAAI,EAAE,WAAW,IAAI,GAAG,CAAC;AACzB,IAAI,EAAE,QAAQ,IAAI,GAAG,CAAC;AACtB,IAAI;AACJ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK;AAC/B;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACvC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,IAAI;AACN,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC;AAC5F,GAAG,CAAC,OAAO,CAAC,EAAE;AACd;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iBAAiB,GAAG,CAAC,KAAK,KAAK;AACrC,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC;AACvD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,WAAW,CAAC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,IAAIA,YAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,GAAG;AACrB,EAAE,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,OAAO,UAAU,CAAC;AAC3D,EAAE,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,OAAO,IAAI,CAAC;AAC/C,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;AACnD,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;AACnD,EAAE,OAAO,EAAE,CAAC;AACZ,CAAC;AACD;AACA,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;AACtB,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,QAAQ,KAAK,WAAW,GAAG,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC;AAChF;AACA,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK;AAC9B,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,OAAO,KAAK;AACd,IAAI,CAAC,YAAY,IAAI,KAAK,YAAY,YAAY;AAClD,MAAMA,YAAU,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9B,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,UAAU;AAC7C;AACA,SAAS,IAAI,KAAK,QAAQ,IAAIA,YAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,mBAAmB,CAAC;AACrG,OAAO;AACP,KAAK;AACL,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACxD;AACA,MAAM,CAAC,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,GAAG;AAC7D,EAAE,gBAAgB;AAClB,EAAE,SAAS;AACX,EAAE,UAAU;AACZ,EAAE,SAAS;AACX,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK;AACtB,EAAE,OAAO,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC;AACvF,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE;AACvD;AACA,EAAE,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;AAClD,IAAI,OAAO;AACX,GAAG;AACH;AACA,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,CAAC,CAAC;AACR;AACA;AACA,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B;AACA,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAChB,GAAG;AACH;AACA,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AACpB;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC5C,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACpC,KAAK;AACL,GAAG,MAAM;AACT;AACA,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACvB,MAAM,OAAO;AACb,KAAK;AACL;AACA;AACA,IAAI,MAAM,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjF,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAC5B,IAAI,IAAI,GAAG,CAAC;AACZ;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;AAC3B,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;AAC1B,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACtB,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AAClB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,IAAI,GAAG,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AACpC,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD;AACA,MAAM,OAAO,GAAG,CAAC,MAAM;AACvB;AACA,EAAE,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,OAAO,UAAU,CAAC;AAC3D,EAAE,OAAO,OAAO,IAAI,KAAK,WAAW,GAAG,IAAI,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9F,CAAC,GAAG,CAAC;AACL;AACA,MAAM,gBAAgB,GAAG,CAAC,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,OAAO,CAAC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,8BAA8B;AAC5C,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;AAC7E,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAE,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;AACpC;AACA,IAAI,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,WAAW,EAAE;AAC7E,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,MAAM,SAAS,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC;AAChE,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;AAChE,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;AACxD,KAAK,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;AACnC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACzC,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AAC7B,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AACtC,KAAK,MAAM,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AACpD,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;AAC9B,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpD,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AACvD,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK;AACvD,EAAE,OAAO;AACT,IAAI,CAAC;AACL,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;AAClB,MAAM,IAAI,OAAO,IAAIA,YAAU,CAAC,GAAG,CAAC,EAAE;AACtC,QAAQ,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE;AACtC,UAAU,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;AACnC,UAAU,QAAQ,EAAE,IAAI;AACxB,UAAU,UAAU,EAAE,IAAI;AAC1B,UAAU,YAAY,EAAE,IAAI;AAC5B,SAAS,CAAC,CAAC;AACX,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE;AACtC,UAAU,KAAK,EAAE,GAAG;AACpB,UAAU,QAAQ,EAAE,IAAI;AACxB,UAAU,UAAU,EAAE,IAAI;AAC1B,UAAU,YAAY,EAAE,IAAI;AAC5B,SAAS,CAAC,CAAC;AACX,OAAO;AACP,KAAK;AACL,IAAI,EAAE,UAAU,EAAE;AAClB,GAAG,CAAC;AACJ,EAAE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,OAAO,KAAK;AAC9B,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;AACxC,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,KAAK;AACxE,EAAE,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACjF,EAAE,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE;AAC9D,IAAI,KAAK,EAAE,WAAW;AACtB,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,YAAY,EAAE,IAAI;AACtB,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE;AAC9C,IAAI,KAAK,EAAE,gBAAgB,CAAC,SAAS;AACrC,GAAG,CAAC,CAAC;AACL,EAAE,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,KAAK;AACjE,EAAE,IAAI,KAAK,CAAC;AACZ,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC1B;AACA,EAAE,IAAI,SAAS,IAAI,IAAI,EAAE,OAAO,OAAO,CAAC;AACxC;AACA,EAAE,GAAG;AACL,IAAI,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAClD,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AACrB,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACpB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,MAAM,IAAI,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAClF,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACxC,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC5B,OAAO;AACP,KAAK;AACL,IAAI,SAAS,GAAG,MAAM,KAAK,KAAK,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;AAC9D,GAAG,QAAQ,SAAS,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,EAAE;AACnG;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,KAAK;AAClD,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,EAAE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACvD,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;AAC1B,GAAG;AACH,EAAE,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC;AAClC,EAAE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACxD,EAAE,OAAO,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,KAAK,QAAQ,CAAC;AACpD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK;AAC3B,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC;AAC1B,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;AACnC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC;AAChC,EAAE,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AAClB,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,CAAC,UAAU,KAAK;AACtC;AACA,EAAE,OAAO,CAAC,KAAK,KAAK;AACpB,IAAI,OAAO,UAAU,IAAI,KAAK,YAAY,UAAU,CAAC;AACrD,GAAG,CAAC;AACJ,CAAC,EAAE,OAAO,UAAU,KAAK,WAAW,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK;AAClC,EAAE,MAAM,SAAS,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzC;AACA,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC;AACA,EAAE,IAAI,MAAM,CAAC;AACb;AACA,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;AACtD,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9B,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,GAAG;AACH,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK;AAClC,EAAE,IAAI,OAAO,CAAC;AACd,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AACjB;AACA,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE;AAChD,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtB,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF;AACA;AACA,MAAM,UAAU,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACjD;AACA,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK;AAC7B,EAAE,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,uBAAuB,EAAE,SAAS,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;AACzF,IAAI,OAAO,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;AACjC,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF;AACA;AACA,MAAM,cAAc,GAAG;AACvB,EAAE,CAAC,EAAE,cAAc,EAAE;AACrB,EAAE,CAAC,GAAG,EAAE,IAAI;AACZ,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;AAClC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC;AACA,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AAC5C,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;AAC5D,EAAE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAChC;AACA,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK;AAC7C,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,KAAK,EAAE;AAC1D,MAAM,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC;AACnD,KAAK;AACL,GAAG,CAAC,CAAC;AACL;AACA,EAAE,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;AACnD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK;AAC/B,EAAE,iBAAiB,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK;AAC/C;AACA,IAAI,IAAIA,YAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACnF,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL;AACA,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B;AACA,IAAI,IAAI,CAACA,YAAU,CAAC,KAAK,CAAC,EAAE,OAAO;AACnC;AACA,IAAI,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;AAClC;AACA,IAAI,IAAI,UAAU,IAAI,UAAU,EAAE;AAClC,MAAM,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;AAClC,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;AACzB,MAAM,UAAU,CAAC,GAAG,GAAG,MAAM;AAC7B,QAAQ,MAAM,KAAK,CAAC,oCAAoC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;AACvE,OAAO,CAAC;AACR,KAAK;AACL,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,CAAC,aAAa,EAAE,SAAS,KAAK;AAClD,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AACjB;AACA,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK;AAC1B,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC3B,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACxB,KAAK,CAAC,CAAC;AACP,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AAClG;AACA,EAAE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF;AACA,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC;AACtB;AACA,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK;AAChD,EAAE,OAAO,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,YAAY,CAAC;AACnF,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE;AACpC,EAAE,OAAO,CAAC;AACV,IAAI,KAAK;AACT,IAAIA,YAAU,CAAC,KAAK,CAAC,MAAM,CAAC;AAC5B,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,UAAU;AACrC,IAAI,KAAK,CAAC,QAAQ,CAAC;AACnB,GAAG,CAAC;AACJ,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,GAAG,KAAK;AAC9B,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9B;AACA,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK;AAC/B,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC1B,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACtC,QAAQ,OAAO;AACf,OAAO;AACP;AACA;AACA,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC5B,QAAQ,OAAO,MAAM,CAAC;AACtB,OAAO;AACP;AACA,MAAM,IAAI,EAAE,QAAQ,IAAI,MAAM,CAAC,EAAE;AACjC,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC1B,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACjD;AACA,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK;AACxC,UAAU,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;AACrE,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAC7B;AACA,QAAQ,OAAO,MAAM,CAAC;AACtB,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACvB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,KAAK;AACzB,EAAE,KAAK;AACP,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAIA,YAAU,CAAC,KAAK,CAAC,CAAC;AACxC,EAAEA,YAAU,CAAC,KAAK,CAAC,IAAI,CAAC;AACxB,EAAEA,YAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,CAAC,qBAAqB,EAAE,oBAAoB,KAAK;AACxE,EAAE,IAAI,qBAAqB,EAAE;AAC7B,IAAI,OAAO,YAAY,CAAC;AACxB,GAAG;AACH;AACA,EAAE,OAAO,oBAAoB;AAC7B,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,KAAK;AAC7B,QAAQ,OAAO,CAAC,gBAAgB;AAChC,UAAU,SAAS;AACnB,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK;AAChC,YAAY,IAAI,MAAM,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,EAAE;AACtD,cAAc,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;AACtD,aAAa;AACb,WAAW;AACX,UAAU,KAAK;AACf,SAAS,CAAC;AACV;AACA,QAAQ,OAAO,CAAC,EAAE,KAAK;AACvB,UAAU,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7B,UAAU,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC1C,SAAS,CAAC;AACV,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACtC,MAAM,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC,EAAE,OAAO,YAAY,KAAK,UAAU,EAAEA,YAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI;AACV,EAAE,OAAO,cAAc,KAAK,WAAW;AACvC,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC,MAAM,CAAC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,KAAK,aAAa,CAAC;AAC5E;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,IAAIA,YAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3E;AACA,gBAAe;AACf,EAAE,OAAO;AACT,EAAE,aAAa;AACf,EAAE,QAAQ;AACV,EAAE,UAAU;AACZ,EAAE,iBAAiB;AACnB,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,SAAS;AACX,EAAE,QAAQ;AACV,EAAE,aAAa;AACf,EAAE,aAAa;AACf,EAAE,gBAAgB;AAClB,EAAE,SAAS;AACX,EAAE,UAAU;AACZ,EAAE,SAAS;AACX,EAAE,WAAW;AACb,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,iBAAiB;AACnB,EAAE,aAAa;AACf,EAAE,MAAM;AACR,EAAE,QAAQ;AACV,cAAEA,YAAU;AACZ,EAAE,QAAQ;AACV,EAAE,iBAAiB;AACnB,EAAE,YAAY;AACd,EAAE,UAAU;AACZ,EAAE,OAAO;AACT,EAAE,KAAK;AACP,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,YAAY;AACd,EAAE,MAAM;AACR,EAAE,UAAU;AACZ,EAAE,QAAQ;AACV,EAAE,OAAO;AACT,EAAE,YAAY;AACd,EAAE,QAAQ;AACV,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,UAAU,EAAE,cAAc;AAC5B,EAAE,iBAAiB;AACnB,EAAE,aAAa;AACf,EAAE,WAAW;AACb,EAAE,WAAW;AACb,EAAE,IAAI;AACN,EAAE,cAAc;AAChB,EAAE,OAAO;AACT,EAAE,MAAM,EAAE,OAAO;AACjB,EAAE,gBAAgB;AAClB,EAAE,mBAAmB;AACrB,EAAE,YAAY;AACd,EAAE,SAAS;AACX,EAAE,UAAU;AACZ,EAAE,YAAY,EAAE,aAAa;AAC7B,EAAE,IAAI;AACN,EAAE,UAAU;AACZ,CAAC;;ACl5BD,MAAM,UAAU,SAAS,KAAK,CAAC;AAC/B,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE;AACnE,IAAI,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACpG,IAAI,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7B,IAAI,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AACjC;AACA;AACA,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,EAAE;AAC3D,MAAM,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACvC,KAAK;AACL;AACA,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAC1D,IAAI,OAAO,UAAU,CAAC;AACtB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC1D,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;AACrB;AACA;AACA;AACA;AACA,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AAC7C,UAAU,KAAK,EAAE,OAAO;AACxB,UAAU,UAAU,EAAE,IAAI;AAC1B,UAAU,QAAQ,EAAE,IAAI;AACxB,UAAU,YAAY,EAAE,IAAI;AAC5B,OAAO,CAAC,CAAC;AACT;AACA,MAAM,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;AAC/B,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,MAAM,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AACjC,MAAM,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AACvC,MAAM,OAAO,KAAK,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;AAC1C,MAAM,IAAI,QAAQ,EAAE;AACpB,UAAU,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACnC,UAAU,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AACxC,OAAO;AACP,KAAK;AACL;AACA,EAAE,MAAM,GAAG;AACX,IAAI,OAAO;AACX;AACA,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB;AACA,MAAM,WAAW,EAAE,IAAI,CAAC,WAAW;AACnC,MAAM,MAAM,EAAE,IAAI,CAAC,MAAM;AACzB;AACA,MAAM,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC7B,MAAM,UAAU,EAAE,IAAI,CAAC,UAAU;AACjC,MAAM,YAAY,EAAE,IAAI,CAAC,YAAY;AACrC,MAAM,KAAK,EAAE,IAAI,CAAC,KAAK;AACvB;AACA,MAAM,MAAM,EAAEC,OAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7C,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB,MAAM,MAAM,EAAE,IAAI,CAAC,MAAM;AACzB,KAAK,CAAC;AACN,GAAG;AACH,CAAC;AACD;AACA;AACA,UAAU,CAAC,oBAAoB,GAAG,sBAAsB,CAAC;AACzD,UAAU,CAAC,cAAc,GAAG,gBAAgB,CAAC;AAC7C,UAAU,CAAC,YAAY,GAAG,cAAc,CAAC;AACzC,UAAU,CAAC,SAAS,GAAG,WAAW,CAAC;AACnC,UAAU,CAAC,WAAW,GAAG,aAAa,CAAC;AACvC,UAAU,CAAC,yBAAyB,GAAG,2BAA2B,CAAC;AACnE,UAAU,CAAC,cAAc,GAAG,gBAAgB,CAAC;AAC7C,UAAU,CAAC,gBAAgB,GAAG,kBAAkB,CAAC;AACjD,UAAU,CAAC,eAAe,GAAG,iBAAiB,CAAC;AAC/C,UAAU,CAAC,YAAY,GAAG,cAAc,CAAC;AACzC,UAAU,CAAC,eAAe,GAAG,iBAAiB,CAAC;AAC/C,UAAU,CAAC,eAAe,GAAG,iBAAiB,CAAC;AAC/C;AACA,qBAAe,UAAU;;AClFzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,EAAE,OAAOA,OAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAIA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B,EAAE,OAAOA,OAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AACpC,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC;AACxB,EAAE,OAAO,IAAI;AACb,KAAK,MAAM,CAAC,GAAG,CAAC;AAChB,KAAK,GAAG,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE;AACjC;AACA,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AACpC,MAAM,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;AACpD,KAAK,CAAC;AACN,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;AAC3B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,OAAOA,OAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACtD,CAAC;AACD;AACA,MAAM,UAAU,GAAGA,OAAK,CAAC,YAAY,CAACA,OAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE;AAC7E,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC5C,EAAE,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5B,IAAI,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;AACpD,GAAG;AACH;AACA;AACA,EAAE,QAAQ,GAAG,QAAQ,IAAI,KAAKC,4BAAgB,IAAI,QAAQ,GAAG,CAAC;AAC9D;AACA;AACA,EAAE,OAAO,GAAGD,OAAK,CAAC,YAAY;AAC9B,IAAI,OAAO;AACX,IAAI;AACJ,MAAM,UAAU,EAAE,IAAI;AACtB,MAAM,IAAI,EAAE,KAAK;AACjB,MAAM,OAAO,EAAE,KAAK;AACpB,KAAK;AACL,IAAI,KAAK;AACT,IAAI,SAAS,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE;AACrC;AACA,MAAM,OAAO,CAACA,OAAK,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACxC;AACA,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC;AACpD,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC5B,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAClC,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC;AACtE,EAAE,MAAM,OAAO,GAAG,KAAK,IAAIA,OAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAC/D;AACA,EAAE,IAAI,CAACA,OAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AAClC,IAAI,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAC;AACtD,GAAG;AACH;AACA,EAAE,SAAS,YAAY,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC;AAClC;AACA,IAAI,IAAIA,OAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC7B,MAAM,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;AACjC,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAChC,MAAM,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC9B,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,IAAIA,OAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACzC,MAAM,MAAM,IAAIE,YAAU,CAAC,8CAA8C,CAAC,CAAC;AAC3E,KAAK;AACL;AACA,IAAI,IAAIF,OAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAIA,OAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AACjE,MAAM,OAAO,OAAO,IAAI,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5F,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC;AACpB;AACA,IAAI,IAAIA,OAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAIA,OAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AACzE,MAAM,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACvE,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL;AACA,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrD,MAAM,IAAIA,OAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE;AACrC;AACA,QAAQ,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD;AACA,QAAQ,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACtC,OAAO,MAAM;AACb,QAAQ,CAACA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC;AACnD,SAAS,CAACA,OAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAIA,OAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChG,QAAQ;AACR;AACA,QAAQ,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AAClC;AACA,QAAQ,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE;AAC7C,UAAU,EAAEA,OAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;AACjD,YAAY,QAAQ,CAAC,MAAM;AAC3B;AACA,cAAc,OAAO,KAAK,IAAI;AAC9B,kBAAkB,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC;AAC/C,kBAAkB,OAAO,KAAK,IAAI;AAClC,oBAAoB,GAAG;AACvB,oBAAoB,GAAG,GAAG,IAAI;AAC9B,cAAc,YAAY,CAAC,EAAE,CAAC;AAC9B,aAAa,CAAC;AACd,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AAC5B,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACrE;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;AACnD,IAAI,cAAc;AAClB,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,GAAG,CAAC,CAAC;AACL;AACA,EAAE,SAAS,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;AAC9B,IAAI,IAAIA,OAAK,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO;AACzC;AACA,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACrC,MAAM,MAAM,KAAK,CAAC,iCAAiC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,KAAK;AACL;AACA,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtB;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE;AAChD,MAAM,MAAM,MAAM;AAClB,QAAQ,EAAEA,OAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;AAC/C,QAAQ,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAEA,OAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACjG;AACA,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE;AAC3B,QAAQ,KAAK,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;AAChB,GAAG;AACH;AACA,EAAE,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5B,IAAI,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC;AAClD,GAAG;AACH;AACA,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACb;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,QAAM,CAAC,GAAG,EAAE;AACrB,EAAE,MAAM,OAAO,GAAG;AAClB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,KAAK,EAAE,GAAG;AACd,IAAI,KAAK,EAAE,MAAM;AACjB,GAAG,CAAC;AACJ,EAAE,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,SAAS,QAAQ,CAAC,KAAK,EAAE;AACtF,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1B,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE;AAC/C,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AACD;AACA,MAAM,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC;AACjD;AACA,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;AAChD,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;AACA,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,OAAO,EAAE;AAChD,EAAE,MAAM,OAAO,GAAG,OAAO;AACzB,MAAM,UAAU,KAAK,EAAE;AACvB,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAEA,QAAM,CAAC,CAAC;AACjD,OAAO;AACP,MAAMA,QAAM,CAAC;AACb;AACA,EAAE,OAAO,IAAI,CAAC,MAAM;AACpB,KAAK,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE;AAC7B,MAAM,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,KAAK,EAAE,EAAE,CAAC;AACV,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;;ACtDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,CAAC,GAAG,EAAE;AACrB,EAAE,OAAO,kBAAkB,CAAC,GAAG,CAAC;AAChC,KAAK,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AAC1B,KAAK,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACzB,KAAK,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AAC1B,KAAK,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC1B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;AACvD,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC;AACxD;AACA,EAAE,MAAM,QAAQ,GAAGH,OAAK,CAAC,UAAU,CAAC,OAAO,CAAC;AAC5C,MAAM;AACN,QAAQ,SAAS,EAAE,OAAO;AAC1B,OAAO;AACP,MAAM,OAAO,CAAC;AACd;AACA,EAAE,MAAM,WAAW,GAAG,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC;AACrD;AACA,EAAE,IAAI,gBAAgB,CAAC;AACvB;AACA,EAAE,IAAI,WAAW,EAAE;AACnB,IAAI,gBAAgB,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACrD,GAAG,MAAM;AACT,IAAI,gBAAgB,GAAGA,OAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC;AACtD,QAAQ,MAAM,CAAC,QAAQ,EAAE;AACzB,QAAQ,IAAI,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACrE,GAAG;AACH;AACA,EAAE,IAAI,gBAAgB,EAAE;AACxB,IAAI,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3C;AACA,IAAI,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;AAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,gBAAgB,CAAC;AACpE,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb;;AC7DA,MAAM,kBAAkB,CAAC;AACzB,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACvB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE;AACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvB,MAAM,SAAS;AACf,MAAM,QAAQ;AACd,MAAM,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,KAAK;AACxD,MAAM,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI;AAC/C,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACpC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,EAAE,EAAE;AACZ,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;AAC/B,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,MAAM,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACzB,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,CAAC,EAAE,EAAE;AACd,IAAIA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,cAAc,CAAC,CAAC,EAAE;AAC5D,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;AACtB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AACd,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,CAAC;AACD;AACA,6BAAe,kBAAkB;;ACrEjC,6BAAe;AACf,EAAE,iBAAiB,EAAE,IAAI;AACzB,EAAE,iBAAiB,EAAE,IAAI;AACzB,EAAE,mBAAmB,EAAE,KAAK;AAC5B,EAAE,+BAA+B,EAAE,IAAI;AACvC,CAAC;;ACJD,wBAAeI,uBAAG,CAAC,eAAe;;ACClC,MAAM,KAAK,GAAG,4BAA4B,CAAC;AAC3C;AACA,MAAM,KAAK,GAAG,YAAY,CAAC;AAC3B;AACA,MAAM,QAAQ,GAAG;AACjB,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,WAAW,EAAE,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK;AAClD,CAAC,CAAC;AACF;AACA,MAAM,cAAc,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,QAAQ,GAAG,QAAQ,CAAC,WAAW,KAAK;AACvE,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;AAC9B,EAAE,MAAM,YAAY,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,EAAEC,0BAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;AACtC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;AACjC,IAAI,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAC9C,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF;AACA,mBAAe;AACf,EAAE,MAAM,EAAE,IAAI;AACd,EAAE,OAAO,EAAE;AACX,IAAI,eAAe;AACnB,cAAIC,4BAAQ;AACZ,IAAI,IAAI,EAAE,CAAC,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,IAAI;AACvD,GAAG;AACH,EAAE,QAAQ;AACV,EAAE,cAAc;AAChB,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;AAC9C,CAAC;;ACpCD,MAAM,aAAa,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,CAAC;AACvF;AACA,MAAM,UAAU,GAAG,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,SAAS,CAAC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,qBAAqB;AAC3B,EAAE,aAAa;AACf,GAAG,CAAC,UAAU,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8BAA8B,GAAG,CAAC,MAAM;AAC9C,EAAE;AACF,IAAI,OAAO,iBAAiB,KAAK,WAAW;AAC5C;AACA,IAAI,IAAI,YAAY,iBAAiB;AACrC,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU;AAC5C,IAAI;AACJ,CAAC,GAAG,CAAC;AACL;AACA,MAAM,MAAM,GAAG,CAAC,aAAa,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,kBAAkB;;;;;;;;;;;ACxC5E,iBAAe;AACf,EAAE,GAAG,KAAK;AACV,EAAE,GAAGC,UAAQ;AACb,CAAC;;ACAc,SAAS,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE;AACxD,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE;AAClE,IAAI,OAAO,EAAE,UAAU,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;AAClD,MAAM,IAAI,QAAQ,CAAC,MAAM,IAAIP,OAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACpD,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnD,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP;AACA,MAAM,OAAO,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,GAAG,OAAO;AACd,GAAG,CAAC,CAAC;AACL;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B;AACA;AACA;AACA;AACA,EAAE,OAAOA,OAAK,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;AAC9D,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AACzD,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AACjB,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACxB,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,QAAQ,EAAE;AAClC,EAAE,SAAS,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AACjD,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7B;AACA,IAAI,IAAI,IAAI,KAAK,WAAW,EAAE,OAAO,IAAI,CAAC;AAC1C;AACA,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChD,IAAI,MAAM,MAAM,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;AACxC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;AACjE;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;AAC1C,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AAC7C,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAC7B,OAAO;AACP;AACA,MAAM,OAAO,CAAC,YAAY,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AACxD,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACxB,KAAK;AACL;AACA,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/D;AACA,IAAI,IAAI,MAAM,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/C,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,OAAO,CAAC,YAAY,CAAC;AACzB,GAAG;AACH;AACA,EAAE,IAAIA,OAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAIA,OAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACxE,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;AACnB;AACA,IAAIA,OAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;AAClD,MAAM,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACpD,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;AACpD,EAAE,IAAIA,OAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAChC,IAAI,IAAI;AACR,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACvC,MAAM,OAAOA,OAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClC,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE;AACpC,QAAQ,MAAM,CAAC,CAAC;AAChB,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC;AACD;AACA,MAAM,QAAQ,GAAG;AACjB,EAAE,YAAY,EAAE,oBAAoB;AACpC;AACA,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;AACnC;AACA,EAAE,gBAAgB,EAAE;AACpB,IAAI,SAAS,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE;AAC7C,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;AACzD,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9E,MAAM,MAAM,eAAe,GAAGA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnD;AACA,MAAM,IAAI,eAAe,IAAIA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACrD,QAAQ,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClC,OAAO;AACP;AACA,MAAM,MAAM,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAChD;AACA,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,OAAO,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AAChF,OAAO;AACP;AACA,MAAM;AACN,QAAQA,OAAK,CAAC,aAAa,CAAC,IAAI,CAAC;AACjC,QAAQA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5B,QAAQA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5B,QAAQA,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1B,QAAQA,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1B,QAAQA,OAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACpC,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,MAAM,IAAIA,OAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,OAAO;AACP,MAAM,IAAIA,OAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACzC,QAAQ,OAAO,CAAC,cAAc,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;AACzF,QAAQ,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC/B,OAAO;AACP;AACA,MAAM,IAAI,UAAU,CAAC;AACrB;AACA,MAAM,IAAI,eAAe,EAAE;AAC3B,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC,mCAAmC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3E,UAAU,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxE,SAAS;AACT;AACA,QAAQ;AACR,UAAU,CAAC,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9C,UAAU,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACzD,UAAU;AACV,UAAU,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1D;AACA,UAAU,OAAO,UAAU;AAC3B,YAAY,UAAU,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI;AACnD,YAAY,SAAS,IAAI,IAAI,SAAS,EAAE;AACxC,YAAY,IAAI,CAAC,cAAc;AAC/B,WAAW,CAAC;AACZ,SAAS;AACT,OAAO;AACP;AACA,MAAM,IAAI,eAAe,IAAI,kBAAkB,EAAE;AACjD,QAAQ,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAC1D,QAAQ,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AACrC,OAAO;AACP;AACA,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,GAAG;AACH;AACA,EAAE,iBAAiB,EAAE;AACrB,IAAI,SAAS,iBAAiB,CAAC,IAAI,EAAE;AACrC,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC;AACtE,MAAM,MAAM,iBAAiB,GAAG,YAAY,IAAI,YAAY,CAAC,iBAAiB,CAAC;AAC/E,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC;AACzD;AACA,MAAM,IAAIA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAIA,OAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;AAClE,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP;AACA,MAAM;AACN,QAAQ,IAAI;AACZ,QAAQA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5B,SAAS,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,aAAa,CAAC;AACpE,QAAQ;AACR,QAAQ,MAAM,iBAAiB,GAAG,YAAY,IAAI,YAAY,CAAC,iBAAiB,CAAC;AACjF,QAAQ,MAAM,iBAAiB,GAAG,CAAC,iBAAiB,IAAI,aAAa,CAAC;AACtE;AACA,QAAQ,IAAI;AACZ,UAAU,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACrD,SAAS,CAAC,OAAO,CAAC,EAAE;AACpB,UAAU,IAAI,iBAAiB,EAAE;AACjC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE;AAC1C,cAAc,MAAME,YAAU,CAAC,IAAI,CAAC,CAAC,EAAEA,YAAU,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/F,aAAa;AACb,YAAY,MAAM,CAAC,CAAC;AACpB,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,EAAE,CAAC;AACZ;AACA,EAAE,cAAc,EAAE,YAAY;AAC9B,EAAE,cAAc,EAAE,cAAc;AAChC;AACA,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACtB,EAAE,aAAa,EAAE,CAAC,CAAC;AACnB;AACA,EAAE,GAAG,EAAE;AACP,IAAI,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ;AACvC,IAAI,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI;AAC/B,GAAG;AACH;AACA,EAAE,cAAc,EAAE,SAAS,cAAc,CAAC,MAAM,EAAE;AAClD,IAAI,OAAO,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC;AACzC,GAAG;AACH;AACA,EAAE,OAAO,EAAE;AACX,IAAI,MAAM,EAAE;AACZ,MAAM,MAAM,EAAE,mCAAmC;AACjD,MAAM,cAAc,EAAE,SAAS;AAC/B,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF;AACAF,OAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,KAAK;AAC7E,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAChC,CAAC,CAAC,CAAC;AACH;AACA,mBAAe,QAAQ;;ACvKvB;AACA;AACA,MAAM,iBAAiB,GAAGA,OAAK,CAAC,WAAW,CAAC;AAC5C,EAAE,KAAK;AACP,EAAE,eAAe;AACjB,EAAE,gBAAgB;AAClB,EAAE,cAAc;AAChB,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,mBAAmB;AACrB,EAAE,qBAAqB;AACvB,EAAE,eAAe;AACjB,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,qBAAqB;AACvB,EAAE,SAAS;AACX,EAAE,aAAa;AACf,EAAE,YAAY;AACd,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAe,CAAC,UAAU,KAAK;AAC/B,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,IAAI,CAAC,CAAC;AACR;AACA,EAAE,UAAU;AACZ,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE;AACzD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACtD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzC;AACA,MAAM,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3D,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,IAAI,GAAG,KAAK,YAAY,EAAE;AAChC,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;AACzB,UAAU,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,SAAS,MAAM;AACf,UAAU,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AACnE,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;;AC/DD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACvC;AACA,SAAS,eAAe,CAAC,MAAM,EAAE;AACjC,EAAE,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACvD,CAAC;AACD;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,EAAE,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,EAAE;AACxC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,OAAOA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AACD;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,EAAE,MAAM,QAAQ,GAAG,kCAAkC,CAAC;AACtD,EAAE,IAAI,KAAK,CAAC;AACZ;AACA,EAAE,QAAQ,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;AACvC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA,MAAM,iBAAiB,GAAG,CAAC,GAAG,KAAK,gCAAgC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACrF;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE;AAC9E,EAAE,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAChC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,IAAI,kBAAkB,EAAE;AAC1B,IAAI,KAAK,GAAG,MAAM,CAAC;AACnB,GAAG;AACH;AACA,EAAE,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;AACrC;AACA,EAAE,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9B,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,GAAG;AACH;AACA,EAAE,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9B,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,GAAG;AACH,CAAC;AACD;AACA,SAAS,YAAY,CAAC,MAAM,EAAE;AAC9B,EAAE,OAAO,MAAM;AACf,KAAK,IAAI,EAAE;AACX,KAAK,WAAW,EAAE;AAClB,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK;AAClD,MAAM,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC;AACtC,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACA,SAAS,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE;AACrC,EAAE,MAAM,YAAY,GAAGA,OAAK,CAAC,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;AACvD;AACA,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AAChD,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,YAAY,EAAE;AAC1D,MAAM,KAAK,EAAE,UAAU,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrE,OAAO;AACP,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAC,CAAC;AACP,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA,MAAM,YAAY,CAAC;AACnB,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE;AACvC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,SAAS,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAClD,MAAM,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAC/C;AACA,MAAM,IAAI,CAAC,OAAO,EAAE;AACpB,QAAQ,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAClE,OAAO;AACP;AACA,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/C;AACA,MAAM;AACN,QAAQ,CAAC,GAAG;AACZ,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;AAC/B,QAAQ,QAAQ,KAAK,IAAI;AACzB,SAAS,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;AACvD,QAAQ;AACR,QAAQ,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AACtD,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,QAAQ;AACzC,MAAMA,OAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxF;AACA,IAAI,IAAIA,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,YAAY,IAAI,CAAC,WAAW,EAAE;AAC3E,MAAM,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AACzC,KAAK,MAAM,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;AACjG,MAAM,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC;AACvD,KAAK,MAAM,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACnE,MAAM,IAAI,GAAG,GAAG,EAAE;AAClB,QAAQ,IAAI;AACZ,QAAQ,GAAG,CAAC;AACZ,MAAM,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAClC,QAAQ,IAAI,CAACA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACnC,UAAU,MAAM,SAAS,CAAC,8CAA8C,CAAC,CAAC;AAC1E,SAAS;AACT;AACA,QAAQ,GAAG,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC;AAChD,YAAYA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AAC/B,cAAc,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,OAAO;AACP;AACA,MAAM,UAAU,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;AACtC,KAAK,MAAM;AACX,MAAM,MAAM,IAAI,IAAI,IAAI,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACnE,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE;AACtB,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AACrC;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C;AACA,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC;AACA,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,UAAU,OAAO,KAAK,CAAC;AACvB,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,UAAU,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AACpC,SAAS;AACT;AACA,QAAQ,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACtC,UAAU,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/C,SAAS;AACT;AACA,QAAQ,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,UAAU,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,SAAS;AACT;AACA,QAAQ,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;AACtE,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE;AACvB,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AACrC;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C;AACA,MAAM,OAAO,CAAC;AACd,QAAQ,GAAG;AACX,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;AAC/B,SAAS,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACrE,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;AAC1B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC;AACxB;AACA,IAAI,SAAS,YAAY,CAAC,OAAO,EAAE;AACnC,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AACzC;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACjD;AACA,QAAQ,IAAI,GAAG,KAAK,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE;AAClF,UAAU,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B;AACA,UAAU,OAAO,GAAG,IAAI,CAAC;AACzB,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC/B,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACnC,KAAK,MAAM;AACX,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,EAAE,KAAK,CAAC,OAAO,EAAE;AACjB,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACxB,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC;AACxB;AACA,IAAI,OAAO,CAAC,EAAE,EAAE;AAChB,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B,MAAM,IAAI,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;AAC7E,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,EAAE,SAAS,CAAC,MAAM,EAAE;AACpB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;AAC3C,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACjD;AACA,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/E;AACA,MAAM,IAAI,UAAU,KAAK,MAAM,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,OAAO;AACP;AACA,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/C;AACA,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;AACjC,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,GAAG,OAAO,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC;AACrD,GAAG;AACH;AACA,EAAE,MAAM,CAAC,SAAS,EAAE;AACpB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;AAC3C,MAAM,KAAK,IAAI,IAAI;AACnB,QAAQ,KAAK,KAAK,KAAK;AACvB,SAAS,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,IAAIA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;AACrF,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;AACtB,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC5D,GAAG;AACH;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACxC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;AACtD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;AAClB,GAAG;AACH;AACA,EAAE,YAAY,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACxC,GAAG;AACH;AACA,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC,GAAG;AAC7B,IAAI,OAAO,cAAc,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE;AACrB,IAAI,OAAO,KAAK,YAAY,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3D,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC,KAAK,EAAE,GAAG,OAAO,EAAE;AACnC,IAAI,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC;AACA,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD;AACA,IAAI,OAAO,QAAQ,CAAC;AACpB,GAAG;AACH;AACA,EAAE,OAAO,QAAQ,CAAC,MAAM,EAAE;AAC1B,IAAI,MAAM,SAAS;AACnB,OAAO,IAAI,CAAC,UAAU,CAAC;AACvB,MAAM,IAAI,CAAC,UAAU,CAAC;AACtB,QAAQ;AACR,UAAU,SAAS,EAAE,EAAE;AACvB,SAAS,CAAC,CAAC;AACX;AACA,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;AAC1C,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACrC;AACA,IAAI,SAAS,cAAc,CAAC,OAAO,EAAE;AACrC,MAAM,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAC/C;AACA,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AAC/B,QAAQ,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC3C,QAAQ,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;AAClC,OAAO;AACP,KAAK;AACL;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AACpF;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,CAAC;AACD;AACA,YAAY,CAAC,QAAQ,CAAC;AACtB,EAAE,cAAc;AAChB,EAAE,gBAAgB;AAClB,EAAE,QAAQ;AACV,EAAE,iBAAiB;AACnB,EAAE,YAAY;AACd,EAAE,eAAe;AACjB,CAAC,CAAC,CAAC;AACH;AACA;AACAA,OAAK,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK;AACpE,EAAE,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,EAAE,OAAO;AACT,IAAI,GAAG,EAAE,MAAM,KAAK;AACpB,IAAI,GAAG,CAAC,WAAW,EAAE;AACrB,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;AACjC,KAAK;AACL,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACAA,OAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AAClC;AACA,uBAAe,YAAY;;ACjV3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE;AACrD,EAAE,MAAM,MAAM,GAAG,IAAI,IAAIQ,UAAQ,CAAC;AAClC,EAAE,MAAM,OAAO,GAAG,QAAQ,IAAI,MAAM,CAAC;AACrC,EAAE,MAAM,OAAO,GAAGC,cAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACrD,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC1B;AACA,EAAET,OAAK,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,SAAS,CAAC,EAAE,EAAE;AAC5C,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAC9F,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;AACtB;AACA,EAAE,OAAO,IAAI,CAAC;AACd;;ACzBe,SAAS,QAAQ,CAAC,KAAK,EAAE;AACxC,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;AACvC;;ACAA,MAAM,aAAa,SAASE,YAAU,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACxC,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,GAAG,UAAU,GAAG,OAAO,EAAEA,YAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5F,IAAI,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;AAChC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,GAAG;AACH,CAAC;AACD;AACA,wBAAe,aAAa;;ACjB5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC1D,EAAE,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC;AACxD,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9E,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;AACtB,GAAG,MAAM;AACT,IAAI,MAAM;AACV,MAAM,IAAIA,YAAU;AACpB,QAAQ,kCAAkC,GAAG,QAAQ,CAAC,MAAM;AAC5D,QAAQ,CAACA,YAAU,CAAC,eAAe,EAAEA,YAAU,CAAC,gBAAgB,CAAC;AACjE,UAAU,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC;AAC/C,SAAS;AACT,QAAQ,QAAQ,CAAC,MAAM;AACvB,QAAQ,QAAQ,CAAC,OAAO;AACxB,QAAQ,QAAQ;AAChB,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,aAAa,CAAC,GAAG,EAAE;AAC3C;AACA;AACA;AACA,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,OAAO,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjD;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE;AAC1D,EAAE,OAAO,WAAW;AACpB,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AAC3E,MAAM,OAAO,CAAC;AACd;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE;AAChF,EAAE,IAAI,aAAa,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AACnD,EAAE,IAAI,OAAO,KAAK,aAAa,IAAI,iBAAiB,IAAI,KAAK,CAAC,EAAE;AAChE,IAAI,OAAO,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,OAAO,YAAY,CAAC;AACtB;;ACrBO,MAAM,OAAO,GAAG,QAAQ;;ACEhB,SAAS,aAAa,CAAC,GAAG,EAAE;AAC3C,EAAE,MAAM,KAAK,GAAG,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtD,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACnC;;ACCA,MAAM,gBAAgB,GAAG,+CAA+C,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;AAC1D,EAAE,MAAM,KAAK,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AACnE,EAAE,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AACtC;AACA,EAAE,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,EAAE;AACrC,IAAI,MAAM,GAAG,IAAI,CAAC;AAClB,GAAG;AACH;AACA,EAAE,IAAI,QAAQ,KAAK,MAAM,EAAE;AAC3B,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AACjE;AACA,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7C;AACA,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,MAAM,IAAIA,YAAU,CAAC,aAAa,EAAEA,YAAU,CAAC,eAAe,CAAC,CAAC;AACtE,KAAK;AACL;AACA,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC;AACvF;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAI,CAAC,KAAK,EAAE;AAClB,QAAQ,MAAM,IAAIA,YAAU,CAAC,uBAAuB,EAAEA,YAAU,CAAC,eAAe,CAAC,CAAC;AAClF,OAAO;AACP;AACA,MAAM,OAAO,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH;AACA,EAAE,MAAM,IAAIA,YAAU,CAAC,uBAAuB,GAAG,QAAQ,EAAEA,YAAU,CAAC,eAAe,CAAC,CAAC;AACvF;;AC/CA,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACvC;AACA,MAAM,oBAAoB,SAASQ,0BAAM,CAAC,SAAS,CAAC;AACpD,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,OAAO,GAAGV,OAAK,CAAC,YAAY;AAChC,MAAM,OAAO;AACb,MAAM;AACN,QAAQ,OAAO,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,EAAE,GAAG,IAAI;AAC5B,QAAQ,YAAY,EAAE,GAAG;AACzB,QAAQ,UAAU,EAAE,GAAG;AACvB,QAAQ,SAAS,EAAE,CAAC;AACpB,QAAQ,YAAY,EAAE,EAAE;AACxB,OAAO;AACP,MAAM,IAAI;AACV,MAAM,CAAC,IAAI,EAAE,MAAM,KAAK;AACxB,QAAQ,OAAO,CAACA,OAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,OAAO;AACP,KAAK,CAAC;AACN;AACA,IAAI,KAAK,CAAC;AACV,MAAM,qBAAqB,EAAE,OAAO,CAAC,SAAS;AAC9C,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG;AAC1C,MAAM,UAAU,EAAE,OAAO,CAAC,UAAU;AACpC,MAAM,SAAS,EAAE,OAAO,CAAC,SAAS;AAClC,MAAM,OAAO,EAAE,OAAO,CAAC,OAAO;AAC9B,MAAM,YAAY,EAAE,OAAO,CAAC,YAAY;AACxC,MAAM,SAAS,EAAE,CAAC;AAClB,MAAM,UAAU,EAAE,KAAK;AACvB,MAAM,mBAAmB,EAAE,CAAC;AAC5B,MAAM,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;AACpB,MAAM,KAAK,EAAE,CAAC;AACd,MAAM,cAAc,EAAE,IAAI;AAC1B,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,KAAK;AACtC,MAAM,IAAI,KAAK,KAAK,UAAU,EAAE;AAChC,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AACnC,UAAU,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;AACtC,SAAS;AACT,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,KAAK,CAAC,IAAI,EAAE;AACd,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AACvC;AACA,IAAI,IAAI,SAAS,CAAC,cAAc,EAAE;AAClC,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;AACjC,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,GAAG;AACH;AACA,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACxC,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AACvC,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;AACtC;AACA,IAAI,MAAM,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AAC7D;AACA,IAAI,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;AAC5C;AACA,IAAI,MAAM,OAAO,GAAG,IAAI,GAAG,UAAU,CAAC;AACtC,IAAI,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,CAAC;AAC7C,IAAI,MAAM,YAAY;AACtB,MAAM,SAAS,CAAC,YAAY,KAAK,KAAK;AACtC,UAAU,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,cAAc,GAAG,IAAI,CAAC;AACjE,UAAU,CAAC,CAAC;AACZ;AACA,IAAI,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,SAAS,KAAK;AAC7C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC9C,MAAM,SAAS,CAAC,SAAS,IAAI,KAAK,CAAC;AACnC,MAAM,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC;AAC/B;AACA,MAAM,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;AACzE;AACA,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC7B,QAAQ,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACpC,OAAO,MAAM;AACb,QAAQ,SAAS,CAAC,cAAc,GAAG,MAAM;AACzC,UAAU,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC;AAC1C,UAAU,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACtC,SAAS,CAAC;AACV,OAAO;AACP,KAAK,CAAC;AACN;AACA,IAAI,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,SAAS,KAAK;AAClD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM,IAAI,cAAc,GAAG,IAAI,CAAC;AAChC,MAAM,IAAI,YAAY,GAAG,qBAAqB,CAAC;AAC/C,MAAM,IAAI,SAAS,CAAC;AACpB,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC;AACrB;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC/B;AACA,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC,EAAE,KAAK,UAAU,EAAE;AAC1E,UAAU,SAAS,CAAC,EAAE,GAAG,GAAG,CAAC;AAC7B,UAAU,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC;AACvD,UAAU,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;AAC3D,UAAU,MAAM,GAAG,CAAC,CAAC;AACrB,SAAS;AACT;AACA,QAAQ,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC;AACrD,OAAO;AACP;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,IAAI,SAAS,IAAI,CAAC,EAAE;AAC5B;AACA,UAAU,OAAO,UAAU,CAAC,MAAM;AAClC,YAAY,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACpC,WAAW,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;AAClC,SAAS;AACT;AACA,QAAQ,IAAI,SAAS,GAAG,YAAY,EAAE;AACtC,UAAU,YAAY,GAAG,SAAS,CAAC;AACnC,SAAS;AACT,OAAO;AACP;AACA,MAAM,IAAI,YAAY,IAAI,SAAS,GAAG,YAAY,IAAI,SAAS,GAAG,YAAY,GAAG,YAAY,EAAE;AAC/F,QAAQ,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACvD,QAAQ,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAClD,OAAO;AACP;AACA,MAAM,SAAS;AACf,QAAQ,MAAM;AACd,QAAQ,cAAc;AACtB,YAAY,MAAM;AAClB,cAAc,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAChE,aAAa;AACb,YAAY,SAAS;AACrB,OAAO,CAAC;AACR,KAAK,CAAC;AACN;AACA,IAAI,cAAc,CAAC,KAAK,EAAE,SAAS,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE;AACnE,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC7B,OAAO;AACP;AACA,MAAM,IAAI,MAAM,EAAE;AAClB,QAAQ,cAAc,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AACnD,OAAO,MAAM;AACb,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,CAAC;AACD;AACA,+BAAe,oBAAoB;;AC3JnC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;AACjC;AACA,MAAM,QAAQ,GAAG,iBAAiB,IAAI,EAAE;AACxC,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;AACnB,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,GAAG,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AAC/B,IAAI,MAAM,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AACnC,GAAG,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE;AAClC,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;AACjC,GAAG,MAAM;AACT,IAAI,MAAM,IAAI,CAAC;AACf,GAAG;AACH,CAAC,CAAC;AACF;AACA,mBAAe,QAAQ;;ACRvB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;AAC/D;AACA,MAAM,WAAW,GAAG,OAAO,WAAW,KAAK,UAAU,GAAG,IAAI,WAAW,EAAE,GAAG,IAAIW,wBAAI,CAAC,WAAW,EAAE,CAAC;AACnG;AACA,MAAM,IAAI,GAAG,MAAM,CAAC;AACpB,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5C,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B;AACA,MAAM,YAAY,CAAC;AACnB,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;AAC3B,IAAI,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;AAC5C,IAAI,MAAM,aAAa,GAAGX,OAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChD;AACA,IAAI,IAAI,OAAO,GAAG,CAAC,sCAAsC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,MAAM,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAClF,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACd;AACA,IAAI,IAAI,aAAa,EAAE;AACvB,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9E,KAAK,MAAM;AACX,MAAM,OAAO,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,IAAI,0BAA0B,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACpF,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AACtD;AACA,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC;AACvE;AACA,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAC;AAChF;AACA,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,GAAG;AACH;AACA,EAAE,OAAO,MAAM,GAAG;AAClB,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC;AACvB;AACA,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAC3B;AACA,IAAI,IAAIA,OAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AACnC,MAAM,MAAM,KAAK,CAAC;AAClB,KAAK,MAAM;AACX,MAAM,OAAOY,UAAQ,CAAC,KAAK,CAAC,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,MAAM,UAAU,CAAC;AACrB,GAAG;AACH;AACA,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE;AAC1B,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;AAC/B,MAAM,UAAU;AAChB,MAAM,CAAC,KAAK;AACZ,QAAQ,CAAC;AACT,UAAU,IAAI,EAAE,KAAK;AACrB,UAAU,IAAI,EAAE,KAAK;AACrB,UAAU,GAAG,EAAE,KAAK;AACpB,SAAS,EAAE,KAAK,CAAC;AACjB,KAAK,CAAC;AACN,GAAG;AACH,CAAC;AACD;AACA,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,KAAK;AAC5D,EAAE,MAAM;AACR,IAAI,GAAG,GAAG,oBAAoB;AAC9B,IAAI,IAAI,GAAG,EAAE;AACb,IAAI,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC;AAC3E,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;AACpB;AACA,EAAE,IAAI,CAACZ,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC/B,IAAI,MAAM,SAAS,CAAC,4BAA4B,CAAC,CAAC;AAClD,GAAG;AACH;AACA,EAAE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE;AACnD,IAAI,MAAM,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC1D,GAAG;AACH;AACA,EAAE,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC;AACnE,EAAE,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AACxE,EAAE,IAAI,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC;AAC7C;AACA,EAAE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK;AAClE,IAAI,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,IAAI,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC;AAC/B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,aAAa,IAAI,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;AAC3D;AACA,EAAE,aAAa,GAAGA,OAAK,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;AACtD;AACA,EAAE,MAAM,eAAe,GAAG;AAC1B,IAAI,cAAc,EAAE,CAAC,8BAA8B,EAAE,QAAQ,CAAC,CAAC;AAC/D,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACtC,IAAI,eAAe,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC;AACtD,GAAG;AACH;AACA,EAAE,cAAc,IAAI,cAAc,CAAC,eAAe,CAAC,CAAC;AACpD;AACA,EAAE,OAAOa,eAAQ,CAAC,IAAI;AACtB,IAAI,CAAC,mBAAmB;AACxB,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAChC,QAAQ,MAAM,aAAa,CAAC;AAC5B,QAAQ,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AAC7B,OAAO;AACP;AACA,MAAM,MAAM,WAAW,CAAC;AACxB,KAAK,GAAG;AACR,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA,2BAAe,gBAAgB;;ACjH/B,MAAM,yBAAyB,SAASH,0BAAM,CAAC,SAAS,CAAC;AACzD,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACzC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,IAAI,QAAQ,EAAE,CAAC;AACf,GAAG;AACH;AACA,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACxC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;AACzC;AACA;AACA,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC5B;AACA,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACxB,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACpC,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAChD,GAAG;AACH,CAAC;AACD;AACA,oCAAe,yBAAyB;;AC1BxC,MAAM,WAAW,GAAG,CAAC,EAAE,EAAE,OAAO,KAAK;AACrC,EAAE,OAAOV,OAAK,CAAC,SAAS,CAAC,EAAE,CAAC;AAC5B,MAAM,UAAU,GAAG,IAAI,EAAE;AACzB,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC9B,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK;AAC7C,UAAU,IAAI;AACd,YAAY,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACpE,WAAW,CAAC,OAAO,GAAG,EAAE;AACxB,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC;AACpB,WAAW;AACX,SAAS,EAAE,EAAE,CAAC,CAAC;AACf,OAAO;AACP,MAAM,EAAE,CAAC;AACT,CAAC,CAAC;AACF;AACA,sBAAe,WAAW;;ACf1B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,YAAY,EAAE,GAAG,EAAE;AACxC,EAAE,YAAY,GAAG,YAAY,IAAI,EAAE,CAAC;AACpC,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AACxC,EAAE,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAC7C,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;AACf,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;AACf,EAAE,IAAI,aAAa,CAAC;AACpB;AACA,EAAE,GAAG,GAAG,GAAG,KAAK,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC;AACvC;AACA,EAAE,OAAO,SAAS,IAAI,CAAC,WAAW,EAAE;AACpC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC3B;AACA,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,IAAI,IAAI,CAAC,aAAa,EAAE;AACxB,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,KAAK;AACL;AACA,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;AAC9B,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AAC3B;AACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACjB,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;AACvB;AACA,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE;AACvB,MAAM,UAAU,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,YAAY,CAAC;AACrC;AACA,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AACvB,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,YAAY,CAAC;AACvC,KAAK;AACL;AACA,IAAI,IAAI,GAAG,GAAG,aAAa,GAAG,GAAG,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,MAAM,MAAM,GAAG,SAAS,IAAI,GAAG,GAAG,SAAS,CAAC;AAChD;AACA,IAAI,OAAO,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC;AACzE,GAAG,CAAC;AACJ;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE;AAC5B,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;AACpB,EAAE,IAAI,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9B,EAAE,IAAI,QAAQ,CAAC;AACf,EAAE,IAAI,KAAK,CAAC;AACZ;AACA,EAAE,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK;AAC7C,IAAI,SAAS,GAAG,GAAG,CAAC;AACpB,IAAI,QAAQ,GAAG,IAAI,CAAC;AACpB,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;AAC1B,MAAM,KAAK,GAAG,IAAI,CAAC;AACnB,KAAK;AACL,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAChB,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,KAAK;AACjC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC3B,IAAI,MAAM,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC;AACnC,IAAI,IAAI,MAAM,IAAI,SAAS,EAAE;AAC7B,MAAM,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACxB,KAAK,MAAM;AACX,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,IAAI,CAAC,KAAK,EAAE;AAClB,QAAQ,KAAK,GAAG,UAAU,CAAC,MAAM;AACjC,UAAU,KAAK,GAAG,IAAI,CAAC;AACvB,UAAU,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3B,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,CAAC;AAC/B,OAAO;AACP,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,KAAK,GAAG,MAAM,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnD;AACA,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC5B;;ACrCO,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,GAAG,CAAC,KAAK;AAC9E,EAAE,IAAI,aAAa,GAAG,CAAC,CAAC;AACxB,EAAE,MAAM,YAAY,GAAG,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC5C;AACA,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK;AACzB,IAAI,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC5B,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC;AAC3D,IAAI,MAAM,aAAa,GAAG,MAAM,GAAG,aAAa,CAAC;AACjD,IAAI,MAAM,IAAI,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;AAC7C,IAAI,MAAM,OAAO,GAAG,MAAM,IAAI,KAAK,CAAC;AACpC;AACA,IAAI,aAAa,GAAG,MAAM,CAAC;AAC3B;AACA,IAAI,MAAM,IAAI,GAAG;AACjB,MAAM,MAAM;AACZ,MAAM,KAAK;AACX,MAAM,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS;AAClD,MAAM,KAAK,EAAE,aAAa;AAC1B,MAAM,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS;AACnC,MAAM,SAAS,EAAE,IAAI,IAAI,KAAK,IAAI,OAAO,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,IAAI,GAAG,SAAS;AAC/E,MAAM,KAAK,EAAE,CAAC;AACd,MAAM,gBAAgB,EAAE,KAAK,IAAI,IAAI;AACrC,MAAM,CAAC,gBAAgB,GAAG,UAAU,GAAG,QAAQ,GAAG,IAAI;AACtD,KAAK,CAAC;AACN;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnB,GAAG,EAAE,IAAI,CAAC,CAAC;AACX,CAAC,CAAC;AACF;AACO,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK;AAC5D,EAAE,MAAM,gBAAgB,GAAG,KAAK,IAAI,IAAI,CAAC;AACzC;AACA,EAAE,OAAO;AACT,IAAI,CAAC,MAAM;AACX,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC;AACnB,QAAQ,gBAAgB;AACxB,QAAQ,KAAK;AACb,QAAQ,MAAM;AACd,OAAO,CAAC;AACR,IAAI,SAAS,CAAC,CAAC,CAAC;AAChB,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACO,MAAM,cAAc;AAC3B,EAAE,CAAC,EAAE;AACL,EAAE,CAAC,GAAG,IAAI;AACV,IAAIA,OAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;;AClDjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,2BAA2B,CAAC,GAAG,EAAE;AACzD,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AACzC;AACA,EAAE,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACjC,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1B;AACA,EAAE,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACnC,EAAE,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACpC,EAAE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC;AACA,EAAE,IAAI,QAAQ,EAAE;AAChB,IAAI,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;AACnC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAC5B;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAClC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE;AAC9D,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,QAAQ,MAAM,KAAK;AACnB,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;AAChF,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AAClF;AACA,QAAQ,IAAI,KAAK,EAAE;AACnB,UAAU,YAAY,IAAI,CAAC,CAAC;AAC5B,UAAU,CAAC,IAAI,CAAC,CAAC;AACjB,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtB;AACA,IAAI,MAAM,WAAW,GAAG,CAAC,CAAC;AAC1B,MAAM,CAAC,IAAI,CAAC;AACZ,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;AACnC,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;AACnC,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AAChE;AACA,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE;AAClB,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY;AACjD,QAAQ,GAAG,EAAE,CAAC;AACd,QAAQ,GAAG,EAAE,CAAC;AACd,OAAO,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;AACnC,QAAQ,GAAG,EAAE,CAAC;AACd,QAAQ,GAAG,IAAI,CAAC,CAAC;AACjB,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;AAC/B,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY;AACjD,QAAQ,GAAG,EAAE,CAAC;AACd,OAAO,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;AACnC,QAAQ,GAAG,EAAE,CAAC;AACd,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;AAChD,IAAI,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AAC1C,IAAI,OAAO,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzC;;ACxCA,MAAM,WAAW,GAAG;AACpB,EAAE,KAAK,EAAEc,wBAAI,CAAC,SAAS,CAAC,YAAY;AACpC,EAAE,WAAW,EAAEA,wBAAI,CAAC,SAAS,CAAC,YAAY;AAC1C,CAAC,CAAC;AACF;AACA,MAAM,aAAa,GAAG;AACtB,EAAE,KAAK,EAAEA,wBAAI,CAAC,SAAS,CAAC,sBAAsB;AAC9C,EAAE,WAAW,EAAEA,wBAAI,CAAC,SAAS,CAAC,sBAAsB;AACpD,CAAC,CAAC;AACF;AACA,MAAM,iBAAiB,GAAGd,OAAK,CAAC,UAAU,CAACc,wBAAI,CAAC,sBAAsB,CAAC,CAAC;AACxE;AACA,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,GAAGC,mCAAe,CAAC;AACjE;AACA,MAAM,OAAO,GAAG,SAAS,CAAC;AAC1B;AACA,MAAM,kBAAkB,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK;AAChE,EAAE,OAAO,QAAQ,GAAG,GAAG,CAAC;AACxB,CAAC,CAAC,CAAC;AACH;AACA,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK;AACtD,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC7C;AACA,EAAE,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AACF;AACA,MAAM,aAAa,CAAC;AACpB,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxC,GAAG;AACH;AACA,EAAE,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE;AACjC,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM;AAC3B,MAAM;AACN,QAAQ,cAAc,EAAE,IAAI;AAC5B,OAAO;AACP,MAAM,OAAO;AACb,KAAK,CAAC;AACN;AACA,IAAI,IAAI,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACrD;AACA,IAAI,IAAI,iBAAiB,EAAE;AAC3B,MAAM,IAAI,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC;AACzC;AACA,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACpC,QAAQ,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACrE,QAAQ;AACR,UAAU,CAAC,aAAa,CAAC,SAAS;AAClC,UAAU,CAAC,aAAa,CAAC,MAAM;AAC/B,UAAUJ,wBAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC;AACzD,UAAU;AACV,UAAU,OAAO,aAAa,CAAC;AAC/B,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,OAAO,GAAGK,yBAAK,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACtD;AACA,IAAI,IAAI,OAAO,CAAC;AAChB;AACA,IAAI,MAAM,aAAa,GAAG,MAAM;AAChC,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB;AACA,MAAM,IAAI,OAAO,GAAG,iBAAiB;AACrC,QAAQ,GAAG,GAAG,OAAO,CAAC,MAAM;AAC5B,QAAQ,CAAC,GAAG,GAAG,CAAC;AAChB;AACA,MAAM,OAAO,CAAC,EAAE,EAAE;AAClB,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;AACvC,UAAU,IAAI,GAAG,KAAK,CAAC,EAAE;AACzB,YAAY,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC5C,WAAW,MAAM;AACjB,YAAY,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,WAAW;AACX,UAAU,OAAO;AACjB,SAAS;AACT,OAAO;AACP,KAAK,CAAC;AACN;AACA,IAAI,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;AAC9C;AACA,IAAI,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;AACvC;AACA,IAAI,IAAI,cAAc,IAAI,IAAI,EAAE;AAChC,MAAM,IAAI,KAAK,CAAC;AAChB,MAAM,IAAI,YAAY,GAAG,CAAC,CAAC;AAC3B;AACA,MAAM,OAAO,CAAC,OAAO,GAAG,YAAY;AACpC,QAAQ,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAChE;AACA,QAAQ,YAAY,EAAE,CAAC;AACvB;AACA,QAAQ,IAAI,KAAK,EAAE;AACnB,UAAU,YAAY,CAAC,KAAK,CAAC,CAAC;AAC9B,UAAU,KAAK,GAAG,IAAI,CAAC;AACvB,SAAS;AACT;AACA,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;AACnC,UAAU,IAAI,CAAC,EAAE,YAAY,EAAE;AAC/B,YAAY,KAAK,GAAG,UAAU,CAAC,MAAM;AACrC,cAAc,KAAK,GAAG,IAAI,CAAC;AAC3B,cAAc,aAAa,EAAE,CAAC;AAC9B,aAAa,EAAE,cAAc,CAAC,CAAC;AAC/B,WAAW;AACX,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,OAAO,MAAM,CAAC;AACtB,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACzC;AACA,IAAI,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACnC;AACA,IAAI,iBAAiB;AACrB,QAAQ,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,SAAS,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACjE;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,CAAC;AACD;AACA,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,OAAO,EAAE,eAAe,EAAE;AAC1D,EAAE,IAAI,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE;AACrC,IAAI,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3C,GAAG;AACH,EAAE,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE;AACtC,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AAC7D,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE;AAClD,EAAE,IAAI,KAAK,GAAG,WAAW,CAAC;AAC1B,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,EAAE;AACjC,IAAI,MAAM,QAAQ,GAAGC,gCAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAC3D,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChC,KAAK;AACL,GAAG;AACH,EAAE,IAAI,KAAK,EAAE;AACb;AACA,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE;AACxB,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AACzE,KAAK;AACL;AACA,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;AACpB;AACA,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjF;AACA,MAAM,IAAI,cAAc,EAAE;AAC1B,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AACrF,OAAO,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AACjD,QAAQ,MAAM,IAAIf,YAAU,CAAC,6BAA6B,EAAEA,YAAU,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAClG,OAAO;AACP;AACA,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACxE;AACA,MAAM,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC;AACjE,KAAK;AACL;AACA,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;AACvF,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC;AACnD,IAAI,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;AACjC;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;AAC7B,IAAI,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AAC9B,IAAI,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;AAC5B,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE;AACxB,MAAM,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9F,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,GAAG,SAAS,cAAc,CAAC,eAAe,EAAE;AAC3E;AACA;AACA,IAAI,QAAQ,CAAC,eAAe,EAAE,WAAW,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;AACjE,GAAG,CAAC;AACJ,CAAC;AACD;AACA,MAAM,sBAAsB;AAC5B,EAAE,OAAO,OAAO,KAAK,WAAW,IAAIF,OAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;AACxE;AACA;AACA;AACA,MAAM,SAAS,GAAG,CAAC,aAAa,KAAK;AACrC,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1C,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI,MAAM,CAAC;AACf;AACA,IAAI,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK;AACxC,MAAM,IAAI,MAAM,EAAE,OAAO;AACzB,MAAM,MAAM,GAAG,IAAI,CAAC;AACpB,MAAM,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC1C,KAAK,CAAC;AACN;AACA,IAAI,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK;AAChC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;AAClB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;AACrB,KAAK,CAAC;AACN;AACA,IAAI,MAAM,OAAO,GAAG,CAAC,MAAM,KAAK;AAChC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACzB,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;AACrB,KAAK,CAAC;AACN;AACA,IAAI,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,aAAa,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACjG,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF;AACA,MAAM,aAAa,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK;AAC/C,EAAE,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAChC,IAAI,MAAM,SAAS,CAAC,0BAA0B,CAAC,CAAC;AAChD,GAAG;AACH,EAAE,OAAO;AACT,IAAI,OAAO;AACX,IAAI,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxD,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM;AAC1C,EAAE,aAAa,CAACA,OAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AACzE;AACA,MAAM,cAAc,GAAG;AACvB,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE;AACvB,IAAI,MAAM,SAAS;AACnB,MAAM,OAAO,CAAC,QAAQ;AACtB,MAAM,IAAI;AACV,MAAM,OAAO,CAAC,QAAQ;AACtB,MAAM,GAAG;AACT,OAAO,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,KAAK,QAAQ,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;AACnE;AACA,IAAI,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;AAC9C;AACA,IAAI,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACtE;AACA,IAAI,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE;AAC9F,MAAMgB,yBAAK,CAAC,SAAS,CAAC;AACtB;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,MAAM,CAAC,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AAC9D,MAAM,CAAC,mBAAmB,GAAG,OAAO,CAAC,MAAM;AAC3C,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAAI;AACvC,KAAK,CAAC;AACN;AACA,IAAIhB,OAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK;AAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;AAC9D,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC9C;AACA,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,eAAe,KAAK;AAC9C,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAC;AAC3B;AACA,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;AAC3D;AACA,MAAM,MAAM,MAAM,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;AAC1D;AACA,MAAM,OAAO,eAAe,CAAC,mBAAmB,CAAC,CAAC;AAClD;AACA,MAAM,QAAQ,CAAC,OAAO,GAAG,eAAe,CAAC;AACzC;AACA,MAAM,QAAQ,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC;AACpC;AACA,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;AACnB,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,CAAC,CAAC;AACF;AACA;AACA,oBAAe,sBAAsB;AACrC,EAAE,SAAS,WAAW,CAAC,MAAM,EAAE;AAC/B,IAAI,OAAO,SAAS,CAAC,eAAe,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;AACjF,MAAM,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;AAC3E,MAAM,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;AACxD,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AACjD,MAAM,IAAI,MAAM,CAAC;AACjB,MAAM,IAAI,QAAQ,GAAG,KAAK,CAAC;AAC3B,MAAM,IAAI,GAAG,CAAC;AACd;AACA,MAAM,WAAW,GAAG,CAAC,WAAW,CAAC;AACjC;AACA,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AACrC,QAAQ,MAAM,SAAS,CAAC,CAAC,2BAA2B,EAAE,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC7F,OAAO;AACP;AACA,MAAM,IAAI,WAAW,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,EAAE;AAClD,QAAQ,MAAM,SAAS,CAAC,CAAC,8BAA8B,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,OAAO;AACP;AACA,MAAM,MAAM,OAAO,GAAG,WAAW,KAAK,CAAC,CAAC;AACxC;AACA,MAAM,IAAI,MAAM,EAAE;AAClB,QAAQ,MAAM,OAAO,GAAGkB,aAAW,CAAC,MAAM,EAAE,CAAC,KAAK,MAAMlB,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjG;AACA,QAAQ,MAAM,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK;AACxC,UAAU,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK;AACtD,YAAY,IAAI,GAAG,EAAE;AACrB,cAAc,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AAC7B,aAAa;AACb;AACA,YAAY,MAAM,SAAS,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AACjD,gBAAgB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC3D,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAChD;AACA,YAAY,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9F,WAAW,CAAC,CAAC;AACb,SAAS,CAAC;AACV,OAAO;AACP;AACA,MAAM,MAAM,YAAY,GAAG,IAAImB,mBAAY,EAAE,CAAC;AAC9C;AACA,MAAM,SAAS,KAAK,CAAC,MAAM,EAAE;AAC7B,QAAQ,IAAI;AACZ,UAAU,YAAY,CAAC,IAAI;AAC3B,YAAY,OAAO;AACnB,YAAY,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,IAAIC,eAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;AAClF,WAAW,CAAC;AACZ,SAAS,CAAC,OAAO,GAAG,EAAE;AACtB,UAAU,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AAC1C,SAAS;AACT,OAAO;AACP;AACA,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACzC;AACA,MAAM,MAAM,UAAU,GAAG,MAAM;AAC/B,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE;AAChC,UAAU,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAChD,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE;AAC3B,UAAU,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5D,SAAS;AACT;AACA,QAAQ,YAAY,CAAC,kBAAkB,EAAE,CAAC;AAC1C,OAAO,CAAC;AACR;AACA,MAAM,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE;AAC/C,QAAQ,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAClE,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE;AAC3B,UAAU,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC3F,SAAS;AACT,OAAO;AACP;AACA,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,UAAU,KAAK;AACvC,QAAQ,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,QAAQ,IAAI,UAAU,EAAE;AACxB,UAAU,QAAQ,GAAG,IAAI,CAAC;AAC1B,UAAU,UAAU,EAAE,CAAC;AACvB,UAAU,OAAO;AACjB,SAAS;AACT;AACA,QAAQ,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;AAClC;AACA,QAAQ,IAAI,IAAI,YAAYV,0BAAM,CAAC,QAAQ,IAAI,IAAI,YAAYA,0BAAM,CAAC,MAAM,EAAE;AAC9E,UAAU,MAAM,YAAY,GAAGA,0BAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM;AAC3D,YAAY,YAAY,EAAE,CAAC;AAC3B,YAAY,UAAU,EAAE,CAAC;AACzB,WAAW,CAAC,CAAC;AACb,SAAS,MAAM;AACf,UAAU,UAAU,EAAE,CAAC;AACvB,SAAS;AACT,OAAO,CAAC,CAAC;AACT;AACA;AACA,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC3F,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAC7F,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAChE;AACA,MAAM,IAAI,QAAQ,KAAK,OAAO,EAAE;AAChC;AACA,QAAQ,IAAI,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,EAAE;AAC1C;AACA,UAAU,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,QAAQ,IAAI,EAAE,CAAC,CAAC;AAC/D,UAAU,MAAM,SAAS,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;AACjE;AACA,UAAU,IAAI,SAAS,GAAG,MAAM,CAAC,gBAAgB,EAAE;AACnD,YAAY,OAAO,MAAM;AACzB,cAAc,IAAIR,YAAU;AAC5B,gBAAgB,2BAA2B,GAAG,MAAM,CAAC,gBAAgB,GAAG,WAAW;AACnF,gBAAgBA,YAAU,CAAC,gBAAgB;AAC3C,gBAAgB,MAAM;AACtB,eAAe;AACf,aAAa,CAAC;AACd,WAAW;AACX,SAAS;AACT;AACA,QAAQ,IAAI,aAAa,CAAC;AAC1B;AACA,QAAQ,IAAI,MAAM,KAAK,KAAK,EAAE;AAC9B,UAAU,OAAO,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;AACzC,YAAY,MAAM,EAAE,GAAG;AACvB,YAAY,UAAU,EAAE,oBAAoB;AAC5C,YAAY,OAAO,EAAE,EAAE;AACvB,YAAY,MAAM;AAClB,WAAW,CAAC,CAAC;AACb,SAAS;AACT;AACA,QAAQ,IAAI;AACZ,UAAU,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,KAAK,MAAM,EAAE;AAC3E,YAAY,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI;AAC/C,WAAW,CAAC,CAAC;AACb,SAAS,CAAC,OAAO,GAAG,EAAE;AACtB,UAAU,MAAMA,YAAU,CAAC,IAAI,CAAC,GAAG,EAAEA,YAAU,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AACzE,SAAS;AACT;AACA,QAAQ,IAAI,YAAY,KAAK,MAAM,EAAE;AACrC,UAAU,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACnE;AACA,UAAU,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,KAAK,MAAM,EAAE;AAChE,YAAY,aAAa,GAAGF,OAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC1D,WAAW;AACX,SAAS,MAAM,IAAI,YAAY,KAAK,QAAQ,EAAE;AAC9C,UAAU,aAAa,GAAGU,0BAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC9D,SAAS;AACT;AACA,QAAQ,OAAO,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;AACvC,UAAU,IAAI,EAAE,aAAa;AAC7B,UAAU,MAAM,EAAE,GAAG;AACrB,UAAU,UAAU,EAAE,IAAI;AAC1B,UAAU,OAAO,EAAE,IAAID,cAAY,EAAE;AACrC,UAAU,MAAM;AAChB,SAAS,CAAC,CAAC;AACX,OAAO;AACP;AACA,MAAM,IAAI,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AACvD,QAAQ,OAAO,MAAM;AACrB,UAAU,IAAIP,YAAU,CAAC,uBAAuB,GAAG,QAAQ,EAAEA,YAAU,CAAC,eAAe,EAAE,MAAM,CAAC;AAChG,SAAS,CAAC;AACV,OAAO;AACP;AACA,MAAM,MAAM,OAAO,GAAGO,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;AACpE;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC;AAC3D;AACA,MAAM,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;AAC9D,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACrC,MAAM,IAAI,aAAa,GAAG,SAAS,CAAC;AACpC,MAAM,IAAI,eAAe,GAAG,SAAS,CAAC;AACtC;AACA;AACA,MAAM,IAAIT,OAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;AAC3C,QAAQ,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,6BAA6B,CAAC,CAAC;AACnF;AACA,QAAQ,IAAI,GAAGqB,kBAAgB;AAC/B,UAAU,IAAI;AACd,UAAU,CAAC,WAAW,KAAK;AAC3B,YAAY,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACrC,WAAW;AACX,UAAU;AACV,YAAY,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC;AAC5C,YAAY,QAAQ,EAAE,CAAC,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS;AACpE,WAAW;AACX,SAAS,CAAC;AACV;AACA,OAAO,MAAM,IAAIrB,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAIA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAC9E,QAAQ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACvC;AACA,QAAQ,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE;AACzC,UAAU,IAAI;AACd,YAAY,MAAM,WAAW,GAAG,MAAMW,wBAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChF,YAAY,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;AACxC,cAAc,WAAW,IAAI,CAAC;AAC9B,cAAc,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;AACpD;AACA,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;AACxB,SAAS;AACT,OAAO,MAAM,IAAIX,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAIA,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAC3D,QAAQ,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,0BAA0B,CAAC,CAAC;AACrF,QAAQ,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;AACjD,QAAQ,IAAI,GAAGU,0BAAM,CAAC,QAAQ,CAAC,IAAI,CAACE,UAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACpD,OAAO,MAAM,IAAI,IAAI,IAAI,CAACZ,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAChD,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAE1B,MAAM,IAAIA,OAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AAC9C,UAAU,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,SAAS,MAAM,IAAIA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACzC,UAAU,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5C,SAAS,MAAM;AACf,UAAU,OAAO,MAAM;AACvB,YAAY,IAAIE,YAAU;AAC1B,cAAc,mFAAmF;AACjG,cAAcA,YAAU,CAAC,eAAe;AACxC,cAAc,MAAM;AACpB,aAAa;AACb,WAAW,CAAC;AACZ,SAAS;AACT;AACA;AACA,QAAQ,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACrD;AACA,QAAQ,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE;AAC7E,UAAU,OAAO,MAAM;AACvB,YAAY,IAAIA,YAAU;AAC1B,cAAc,8CAA8C;AAC5D,cAAcA,YAAU,CAAC,eAAe;AACxC,cAAc,MAAM;AACpB,aAAa;AACb,WAAW,CAAC;AACZ,SAAS;AACT,OAAO;AACP;AACA,MAAM,MAAM,aAAa,GAAGF,OAAK,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAC7E;AACA,MAAM,IAAIA,OAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAClC,QAAQ,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACrC,OAAO,MAAM;AACb,QAAQ,aAAa,GAAG,eAAe,GAAG,OAAO,CAAC;AAClD,OAAO;AACP;AACA,MAAM,IAAI,IAAI,KAAK,gBAAgB,IAAI,aAAa,CAAC,EAAE;AACvD,QAAQ,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACnC,UAAU,IAAI,GAAGU,0BAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,SAAS;AACT;AACA,QAAQ,IAAI,GAAGA,0BAAM,CAAC,QAAQ;AAC9B,UAAU;AACV,YAAY,IAAI;AAChB,YAAY,IAAIY,sBAAoB,CAAC;AACrC,cAAc,OAAO,EAAEtB,OAAK,CAAC,cAAc,CAAC,aAAa,CAAC;AAC1D,aAAa,CAAC;AACd,WAAW;AACX,UAAUA,OAAK,CAAC,IAAI;AACpB,SAAS,CAAC;AACV;AACA,QAAQ,gBAAgB;AACxB,UAAU,IAAI,CAAC,EAAE;AACjB,YAAY,UAAU;AACtB,YAAY,aAAa;AACzB,cAAc,IAAI;AAClB,cAAc,sBAAsB;AACpC,gBAAgB,aAAa;AAC7B,gBAAgB,oBAAoB,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAChF,eAAe;AACf,aAAa;AACb,WAAW,CAAC;AACZ,OAAO;AACP;AACA;AACA,MAAM,IAAI,IAAI,GAAG,SAAS,CAAC;AAC3B,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;AACvB,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AACpD,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AACpD,QAAQ,IAAI,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;AACzC,OAAO;AACP;AACA,MAAM,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE;AACpC,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5C,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5C,QAAQ,IAAI,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,CAAC;AAC/C,OAAO;AACP;AACA,MAAM,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC9C;AACA,MAAM,IAAI,IAAI,CAAC;AACf;AACA,MAAM,IAAI;AACV,QAAQ,IAAI,GAAG,QAAQ;AACvB,UAAU,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM;AACzC,UAAU,MAAM,CAAC,MAAM;AACvB,UAAU,MAAM,CAAC,gBAAgB;AACjC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7B,OAAO,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACjD,QAAQ,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;AAClC,QAAQ,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACnC,QAAQ,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;AAChC,QAAQ,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;AACjC,OAAO;AACP;AACA,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,iBAAiB;AACzB,QAAQ,yBAAyB,IAAI,iBAAiB,GAAG,MAAM,GAAG,EAAE,CAAC;AACrE,QAAQ,KAAK;AACb,OAAO,CAAC;AACR;AACA,MAAM,MAAM,OAAO,GAAG;AACtB,QAAQ,IAAI;AACZ,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE;AACjC,QAAQ,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE;AACpE,QAAQ,IAAI;AACZ,QAAQ,QAAQ;AAChB,QAAQ,MAAM;AACd,QAAQ,cAAc,EAAE,sBAAsB;AAC9C,QAAQ,eAAe,EAAE,EAAE;AAC3B,QAAQ,YAAY;AACpB,OAAO,CAAC;AACR;AACA;AACA,MAAM,CAACA,OAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAC9D;AACA,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE;AAC7B,QAAQ,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/C,OAAO,MAAM;AACb,QAAQ,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;AAC1D,YAAY,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,YAAY,MAAM,CAAC,QAAQ,CAAC;AAC5B,QAAQ,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACnC,QAAQ,QAAQ;AAChB,UAAU,OAAO;AACjB,UAAU,MAAM,CAAC,KAAK;AACtB,UAAU,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI;AACnG,SAAS,CAAC;AACV,OAAO;AACP;AACA,MAAM,IAAI,SAAS,CAAC;AACpB,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5D,MAAM,OAAO,CAAC,KAAK,GAAG,cAAc,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5E;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,SAAS,GAAG,cAAc,CAAC;AACnC,OAAO,MAAM;AACb,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE;AAC9B,UAAU,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACvC,SAAS,MAAM,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE;AAC9C,UAAU,SAAS,GAAG,cAAc,GAAGuB,yBAAK,GAAGC,wBAAI,CAAC;AACpD,SAAS,MAAM;AACf,UAAU,IAAI,MAAM,CAAC,YAAY,EAAE;AACnC,YAAY,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACvD,WAAW;AACX,UAAU,IAAI,MAAM,CAAC,cAAc,EAAE;AACrC,YAAY,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AACnE,WAAW;AACX,UAAU,SAAS,GAAG,cAAc,GAAG,WAAW,GAAG,UAAU,CAAC;AAChE,SAAS;AACT,OAAO;AACP;AACA,MAAM,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE;AACrC,QAAQ,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrD,OAAO,MAAM;AACb;AACA,QAAQ,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC;AACzC,OAAO;AACP;AACA,MAAM,IAAI,MAAM,CAAC,kBAAkB,EAAE;AACrC,QAAQ,OAAO,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/D,OAAO;AACP;AACA;AACA,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,cAAc,CAAC,GAAG,EAAE;AACpE,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,OAAO;AAClC;AACA,QAAQ,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B;AACA,QAAQ,MAAM,cAAc,GAAGxB,OAAK,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACnF;AACA,QAAQ,IAAI,kBAAkB,IAAI,eAAe,EAAE;AACnD,UAAU,MAAM,eAAe,GAAG,IAAIsB,sBAAoB,CAAC;AAC3D,YAAY,OAAO,EAAEtB,OAAK,CAAC,cAAc,CAAC,eAAe,CAAC;AAC1D,WAAW,CAAC,CAAC;AACb;AACA,UAAU,kBAAkB;AAC5B,YAAY,eAAe,CAAC,EAAE;AAC9B,cAAc,UAAU;AACxB,cAAc,aAAa;AAC3B,gBAAgB,eAAe;AAC/B,gBAAgB,sBAAsB;AACtC,kBAAkB,cAAc;AAChC,kBAAkB,oBAAoB,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACnF,iBAAiB;AACjB,eAAe;AACf,aAAa,CAAC;AACd;AACA,UAAU,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACxC,SAAS;AACT;AACA;AACA,QAAQ,IAAI,cAAc,GAAG,GAAG,CAAC;AACjC;AACA;AACA,QAAQ,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;AAC3C;AACA;AACA,QAAQ,IAAI,MAAM,CAAC,UAAU,KAAK,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;AAC5E;AACA;AACA,UAAU,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;AAC3D,YAAY,OAAO,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACnD,WAAW;AACX;AACA,UAAU,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE;AACvE;AACA,YAAY,KAAK,MAAM,CAAC;AACxB,YAAY,KAAK,QAAQ,CAAC;AAC1B,YAAY,KAAK,UAAU,CAAC;AAC5B,YAAY,KAAK,YAAY;AAC7B;AACA,cAAc,OAAO,CAAC,IAAI,CAACc,wBAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1D;AACA;AACA,cAAc,OAAO,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACrD,cAAc,MAAM;AACpB,YAAY,KAAK,SAAS;AAC1B,cAAc,OAAO,CAAC,IAAI,CAAC,IAAIW,2BAAyB,EAAE,CAAC,CAAC;AAC5D;AACA;AACA,cAAc,OAAO,CAAC,IAAI,CAACX,wBAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1D;AACA;AACA,cAAc,OAAO,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACrD,cAAc,MAAM;AACpB,YAAY,KAAK,IAAI;AACrB,cAAc,IAAI,iBAAiB,EAAE;AACrC,gBAAgB,OAAO,CAAC,IAAI,CAACA,wBAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC;AACzE,gBAAgB,OAAO,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACvD,eAAe;AACf,WAAW;AACX,SAAS;AACT;AACA,QAAQ,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAGJ,0BAAM,CAAC,QAAQ,CAAC,OAAO,EAAEV,OAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAChG;AACA,QAAQ,MAAM,QAAQ,GAAG;AACzB,UAAU,MAAM,EAAE,GAAG,CAAC,UAAU;AAChC,UAAU,UAAU,EAAE,GAAG,CAAC,aAAa;AACvC,UAAU,OAAO,EAAE,IAAIS,cAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAChD,UAAU,MAAM;AAChB,UAAU,OAAO,EAAE,WAAW;AAC9B,SAAS,CAAC;AACV;AACA,QAAQ,IAAI,YAAY,KAAK,QAAQ,EAAE;AACvC,UAAU,QAAQ,CAAC,IAAI,GAAG,cAAc,CAAC;AACzC,UAAU,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC5C,SAAS,MAAM;AACf,UAAU,MAAM,cAAc,GAAG,EAAE,CAAC;AACpC,UAAU,IAAI,kBAAkB,GAAG,CAAC,CAAC;AACrC;AACA,UAAU,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,gBAAgB,CAAC,KAAK,EAAE;AACrE,YAAY,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,YAAY,kBAAkB,IAAI,KAAK,CAAC,MAAM,CAAC;AAC/C;AACA;AACA,YAAY,IAAI,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,IAAI,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,EAAE;AAC9F;AACA,cAAc,QAAQ,GAAG,IAAI,CAAC;AAC9B,cAAc,cAAc,CAAC,OAAO,EAAE,CAAC;AACvC,cAAc,KAAK;AACnB,gBAAgB,IAAIP,YAAU;AAC9B,kBAAkB,2BAA2B,GAAG,MAAM,CAAC,gBAAgB,GAAG,WAAW;AACrF,kBAAkBA,YAAU,CAAC,gBAAgB;AAC7C,kBAAkB,MAAM;AACxB,kBAAkB,WAAW;AAC7B,iBAAiB;AACjB,eAAe,CAAC;AAChB,aAAa;AACb,WAAW,CAAC,CAAC;AACb;AACA,UAAU,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,oBAAoB,GAAG;AACvE,YAAY,IAAI,QAAQ,EAAE;AAC1B,cAAc,OAAO;AACrB,aAAa;AACb;AACA,YAAY,MAAM,GAAG,GAAG,IAAIA,YAAU;AACtC,cAAc,yBAAyB;AACvC,cAAcA,YAAU,CAAC,gBAAgB;AACzC,cAAc,MAAM;AACpB,cAAc,WAAW;AACzB,aAAa,CAAC;AACd,YAAY,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACxC,YAAY,MAAM,CAAC,GAAG,CAAC,CAAC;AACxB,WAAW,CAAC,CAAC;AACb;AACA,UAAU,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,iBAAiB,CAAC,GAAG,EAAE;AACrE,YAAY,IAAI,GAAG,CAAC,SAAS,EAAE,OAAO;AACtC,YAAY,MAAM,CAACA,YAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AACpE,WAAW,CAAC,CAAC;AACb;AACA,UAAU,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,eAAe,GAAG;AAC9D,YAAY,IAAI;AAChB,cAAc,IAAI,YAAY;AAC9B,gBAAgB,cAAc,CAAC,MAAM,KAAK,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAChG,cAAc,IAAI,YAAY,KAAK,aAAa,EAAE;AAClD,gBAAgB,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACvE,gBAAgB,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,KAAK,MAAM,EAAE;AACtE,kBAAkB,YAAY,GAAGF,OAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC9D,iBAAiB;AACjB,eAAe;AACf,cAAc,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC;AAC3C,aAAa,CAAC,OAAO,GAAG,EAAE;AAC1B,cAAc,OAAO,MAAM,CAACE,YAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC5F,aAAa;AACb,YAAY,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC9C,WAAW,CAAC,CAAC;AACb,SAAS;AACT;AACA,QAAQ,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AAC5C,UAAU,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;AACzC,YAAY,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC9C,YAAY,cAAc,CAAC,OAAO,EAAE,CAAC;AACrC,WAAW;AACX,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT;AACA,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AAC1C,QAAQ,IAAI,GAAG,CAAC,KAAK,EAAE;AACvB,UAAU,GAAG,CAAC,KAAK,EAAE,CAAC;AACtB,SAAS,MAAM;AACf,UAAU,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3B,SAAS;AACT,OAAO,CAAC,CAAC;AACT;AACA;AACA,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,kBAAkB,CAAC,GAAG,EAAE;AACvD,QAAQ,MAAM,CAACA,YAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AACxD,OAAO,CAAC,CAAC;AACT;AACA;AACA,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,mBAAmB,CAAC,MAAM,EAAE;AAC5D;AACA,QAAQ,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AAC7C,OAAO,CAAC,CAAC;AACT;AACA;AACA,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;AAC1B;AACA,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACrD;AACA,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AACnC,UAAU,KAAK;AACf,YAAY,IAAIA,YAAU;AAC1B,cAAc,+CAA+C;AAC7D,cAAcA,YAAU,CAAC,oBAAoB;AAC7C,cAAc,MAAM;AACpB,cAAc,GAAG;AACjB,aAAa;AACb,WAAW,CAAC;AACZ;AACA,UAAU,OAAO;AACjB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,oBAAoB,GAAG;AAChE,UAAU,IAAI,MAAM,EAAE,OAAO;AAC7B,UAAU,IAAI,mBAAmB,GAAG,MAAM,CAAC,OAAO;AAClD,cAAc,aAAa,GAAG,MAAM,CAAC,OAAO,GAAG,aAAa;AAC5D,cAAc,kBAAkB,CAAC;AACjC,UAAU,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,oBAAoB,CAAC;AAC3E,UAAU,IAAI,MAAM,CAAC,mBAAmB,EAAE;AAC1C,YAAY,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC7D,WAAW;AACX,UAAU,KAAK;AACf,YAAY,IAAIA,YAAU;AAC1B,cAAc,mBAAmB;AACjC,cAAc,YAAY,CAAC,mBAAmB,GAAGA,YAAU,CAAC,SAAS,GAAGA,YAAU,CAAC,YAAY;AAC/F,cAAc,MAAM;AACpB,cAAc,GAAG;AACjB,aAAa;AACb,WAAW,CAAC;AACZ,SAAS,CAAC,CAAC;AACX,OAAO,MAAM;AACb;AACA,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC1B,OAAO;AACP;AACA;AACA,MAAM,IAAIF,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAChC,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC;AAC1B,QAAQ,IAAI,OAAO,GAAG,KAAK,CAAC;AAC5B;AACA,QAAQ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AAC7B,UAAU,KAAK,GAAG,IAAI,CAAC;AACvB,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AACpC,UAAU,OAAO,GAAG,IAAI,CAAC;AACzB,UAAU,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3B,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM;AAC/B,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE;AAClC,YAAY,KAAK,CAAC,IAAIoB,eAAa,CAAC,iCAAiC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AACrF,WAAW;AACX,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB,OAAO,MAAM;AACb,QAAQ,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC,QAAQ,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;;ACh7BH,wBAAe,QAAQ,CAAC,qBAAqB;AAC7C,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,KAAK;AAClC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1C;AACA,MAAM;AACN,QAAQ,MAAM,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ;AACxC,QAAQ,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;AAChC,SAAS,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC;AAC5C,QAAQ;AACR,KAAK;AACL,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC9B,MAAM,QAAQ,CAAC,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC;AAChF,KAAK;AACL,IAAI,MAAM,IAAI;;ACZd,gBAAe,QAAQ,CAAC,qBAAqB;AAC7C;AACA,IAAI;AACJ,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;AAClE,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,OAAO;AACpD;AACA,QAAQ,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE;AACA,QAAQ,IAAIpB,OAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACrC,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,SAAS;AACT,QAAQ,IAAIA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAClC,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,SAAS;AACT,QAAQ,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1C,SAAS;AACT,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,UAAU,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,SAAS;AACT,QAAQ,IAAIA,OAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACtC,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9C,SAAS;AACT;AACA,QAAQ,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,OAAO;AACP;AACA,MAAM,IAAI,CAAC,IAAI,EAAE;AACjB,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,OAAO,IAAI,CAAC;AACzD,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;AACxF,QAAQ,OAAO,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAC3D,OAAO;AACP;AACA,MAAM,MAAM,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC;AACzD,OAAO;AACP,KAAK;AACL;AACA,IAAI;AACJ,MAAM,KAAK,GAAG,EAAE;AAChB,MAAM,IAAI,GAAG;AACb,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,MAAM,MAAM,GAAG,EAAE;AACjB,KAAK;;AC1CL,MAAM,eAAe,GAAG,CAAC,KAAK,MAAM,KAAK,YAAYS,cAAY,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AACtD;AACA,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC1B,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,SAAS,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC1D,IAAI,IAAIT,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAIA,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AACpE,MAAM,OAAOA,OAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5D,KAAK,MAAM,IAAIA,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AAC5C,MAAM,OAAOA,OAAK,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACrC,KAAK,MAAM,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACtC,MAAM,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH;AACA,EAAE,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;AACrD,IAAI,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAClD,KAAK,MAAM,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AACtC,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC1D,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;AAClC,IAAI,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;AAClC,IAAI,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK,MAAM,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AACtC,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;AACvC,IAAI,IAAI,IAAI,IAAI,OAAO,EAAE;AACzB,MAAM,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,KAAK,MAAM,IAAI,IAAI,IAAI,OAAO,EAAE;AAChC,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,GAAG;AACH;AACA,EAAE,MAAM,QAAQ,GAAG;AACnB,IAAI,GAAG,EAAE,gBAAgB;AACzB,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,iBAAiB,EAAE,gBAAgB;AACvC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,eAAe,EAAE,gBAAgB;AACrC,IAAI,aAAa,EAAE,gBAAgB;AACnC,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,YAAY,EAAE,gBAAgB;AAClC,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,kBAAkB,EAAE,gBAAgB;AACxC,IAAI,UAAU,EAAE,gBAAgB;AAChC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,aAAa,EAAE,gBAAgB;AACnC,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,SAAS,EAAE,gBAAgB;AAC/B,IAAI,SAAS,EAAE,gBAAgB;AAC/B,IAAI,UAAU,EAAE,gBAAgB;AAChC,IAAI,WAAW,EAAE,gBAAgB;AACjC,IAAI,UAAU,EAAE,gBAAgB;AAChC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,cAAc,EAAE,eAAe;AACnC,IAAI,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI;AACxB,MAAM,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;AAC7E,GAAG,CAAC;AACJ;AACA,EAAEA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,EAAE,SAAS,kBAAkB,CAAC,IAAI,EAAE;AAC3F,IAAI,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,WAAW,EAAE,OAAO;AACvF,IAAI,MAAM,KAAK,GAAGA,OAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC;AAC1F,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAClE,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,eAAe,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;AAClG,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB;;ACjGA,sBAAe,CAAC,MAAM,KAAK;AAC3B,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C;AACA,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;AACzF;AACA,EAAE,SAAS,CAAC,OAAO,GAAG,OAAO,GAAGS,cAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3D;AACA,EAAE,SAAS,CAAC,GAAG,GAAG,QAAQ;AAC1B,IAAI,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,iBAAiB,CAAC;AAChF,IAAI,MAAM,CAAC,MAAM;AACjB,IAAI,MAAM,CAAC,gBAAgB;AAC3B,GAAG,CAAC;AACJ;AACA;AACA,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,eAAe;AACrB,MAAM,QAAQ;AACd,QAAQ,IAAI;AACZ,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE;AAC9B,YAAY,GAAG;AACf,aAAa,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;AAC9E,SAAS;AACT,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAE,IAAIT,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC9B,IAAI,IAAI,QAAQ,CAAC,qBAAqB,IAAI,QAAQ,CAAC,8BAA8B,EAAE;AACnF,MAAM,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACxC,KAAK,MAAM,IAAIA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAClD;AACA,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC5C;AACA,MAAM,MAAM,cAAc,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;AAChE,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK;AAC1D,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE;AACxD,UAAU,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,QAAQ,CAAC,qBAAqB,EAAE;AACtC,IAAI,aAAa,IAAIA,OAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;AACnG;AACA,IAAI,IAAI,aAAa,KAAK,aAAa,KAAK,KAAK,IAAI,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE;AACtF;AACA,MAAM,MAAM,SAAS,GAAG,cAAc,IAAI,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACzF;AACA,MAAM,IAAI,SAAS,EAAE;AACrB,QAAQ,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAC/C,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,SAAS,CAAC;AACnB,CAAC;;AC1DD,MAAM,qBAAqB,GAAG,OAAO,cAAc,KAAK,WAAW,CAAC;AACpE;AACA,mBAAe,qBAAqB;AACpC,EAAE,UAAU,MAAM,EAAE;AACpB,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE;AACpE,MAAM,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAC5C,MAAM,IAAI,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;AACrC,MAAM,MAAM,cAAc,GAAGS,cAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;AAC5E,MAAM,IAAI,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;AAC3E,MAAM,IAAI,UAAU,CAAC;AACrB,MAAM,IAAI,eAAe,EAAE,iBAAiB,CAAC;AAC7C,MAAM,IAAI,WAAW,EAAE,aAAa,CAAC;AACrC;AACA,MAAM,SAAS,IAAI,GAAG;AACtB,QAAQ,WAAW,IAAI,WAAW,EAAE,CAAC;AACrC,QAAQ,aAAa,IAAI,aAAa,EAAE,CAAC;AACzC;AACA,QAAQ,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAC3E;AACA,QAAQ,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAClF,OAAO;AACP;AACA,MAAM,IAAI,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;AACzC;AACA,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACpE;AACA;AACA,MAAM,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AACxC;AACA,MAAM,SAAS,SAAS,GAAG;AAC3B,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,UAAU,OAAO;AACjB,SAAS;AACT;AACA,QAAQ,MAAM,eAAe,GAAGA,cAAY,CAAC,IAAI;AACjD,UAAU,uBAAuB,IAAI,OAAO,IAAI,OAAO,CAAC,qBAAqB,EAAE;AAC/E,SAAS,CAAC;AACV,QAAQ,MAAM,YAAY;AAC1B,UAAU,CAAC,YAAY,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,MAAM;AAC7E,cAAc,OAAO,CAAC,YAAY;AAClC,cAAc,OAAO,CAAC,QAAQ,CAAC;AAC/B,QAAQ,MAAM,QAAQ,GAAG;AACzB,UAAU,IAAI,EAAE,YAAY;AAC5B,UAAU,MAAM,EAAE,OAAO,CAAC,MAAM;AAChC,UAAU,UAAU,EAAE,OAAO,CAAC,UAAU;AACxC,UAAU,OAAO,EAAE,eAAe;AAClC,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB,SAAS,CAAC;AACV;AACA,QAAQ,MAAM;AACd,UAAU,SAAS,QAAQ,CAAC,KAAK,EAAE;AACnC,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,WAAW;AACX,UAAU,SAAS,OAAO,CAAC,GAAG,EAAE;AAChC,YAAY,MAAM,CAAC,GAAG,CAAC,CAAC;AACxB,YAAY,IAAI,EAAE,CAAC;AACnB,WAAW;AACX,UAAU,QAAQ;AAClB,SAAS,CAAC;AACV;AACA;AACA,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO;AACP;AACA,MAAM,IAAI,WAAW,IAAI,OAAO,EAAE;AAClC;AACA,QAAQ,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AACtC,OAAO,MAAM;AACb;AACA,QAAQ,OAAO,CAAC,kBAAkB,GAAG,SAAS,UAAU,GAAG;AAC3D,UAAU,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,EAAE;AACpD,YAAY,OAAO;AACnB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,YAAY,OAAO,CAAC,MAAM,KAAK,CAAC;AAChC,YAAY,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChF,YAAY;AACZ,YAAY,OAAO;AACnB,WAAW;AACX;AACA;AACA,UAAU,UAAU,CAAC,SAAS,CAAC,CAAC;AAChC,SAAS,CAAC;AACV,OAAO;AACP;AACA;AACA,MAAM,OAAO,CAAC,OAAO,GAAG,SAAS,WAAW,GAAG;AAC/C,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,UAAU,OAAO;AACjB,SAAS;AACT;AACA,QAAQ,MAAM,CAAC,IAAIP,YAAU,CAAC,iBAAiB,EAAEA,YAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5F;AACA;AACA,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO,CAAC;AACR;AACA;AACA,MAAM,OAAO,CAAC,OAAO,GAAG,SAAS,WAAW,CAAC,KAAK,EAAE;AACpD;AACA;AACA;AACA,QAAQ,MAAM,GAAG,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,eAAe,CAAC;AAC7E,QAAQ,MAAM,GAAG,GAAG,IAAIA,YAAU,CAAC,GAAG,EAAEA,YAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACjF;AACA,QAAQ,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC;AAClC,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO,CAAC;AACR;AACA;AACA,MAAM,OAAO,CAAC,SAAS,GAAG,SAAS,aAAa,GAAG;AACnD,QAAQ,IAAI,mBAAmB,GAAG,OAAO,CAAC,OAAO;AACjD,YAAY,aAAa,GAAG,OAAO,CAAC,OAAO,GAAG,aAAa;AAC3D,YAAY,kBAAkB,CAAC;AAC/B,QAAQ,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,oBAAoB,CAAC;AAC1E,QAAQ,IAAI,OAAO,CAAC,mBAAmB,EAAE;AACzC,UAAU,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;AAC5D,SAAS;AACT,QAAQ,MAAM;AACd,UAAU,IAAIA,YAAU;AACxB,YAAY,mBAAmB;AAC/B,YAAY,YAAY,CAAC,mBAAmB,GAAGA,YAAU,CAAC,SAAS,GAAGA,YAAU,CAAC,YAAY;AAC7F,YAAY,MAAM;AAClB,YAAY,OAAO;AACnB,WAAW;AACX,SAAS,CAAC;AACV;AACA;AACA,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO,CAAC;AACR;AACA;AACA,MAAM,WAAW,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACvE;AACA;AACA,MAAM,IAAI,kBAAkB,IAAI,OAAO,EAAE;AACzC,QAAQF,OAAK,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE;AACnF,UAAU,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7C,SAAS,CAAC,CAAC;AACX,OAAO;AACP;AACA;AACA,MAAM,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;AACvD,QAAQ,OAAO,CAAC,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;AAC5D,OAAO;AACP;AACA;AACA,MAAM,IAAI,YAAY,IAAI,YAAY,KAAK,MAAM,EAAE;AACnD,QAAQ,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;AACpD,OAAO;AACP;AACA;AACA,MAAM,IAAI,kBAAkB,EAAE;AAC9B,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,GAAG,oBAAoB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AAC5F,QAAQ,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;AAChE,OAAO;AACP;AACA;AACA,MAAM,IAAI,gBAAgB,IAAI,OAAO,CAAC,MAAM,EAAE;AAC9C,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AAChF;AACA,QAAQ,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AACrE;AACA,QAAQ,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAChE,OAAO;AACP;AACA,MAAM,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE;AACjD;AACA;AACA,QAAQ,UAAU,GAAG,CAAC,MAAM,KAAK;AACjC,UAAU,IAAI,CAAC,OAAO,EAAE;AACxB,YAAY,OAAO;AACnB,WAAW;AACX,UAAU,MAAM,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,IAAIoB,eAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;AAC7F,UAAU,OAAO,CAAC,KAAK,EAAE,CAAC;AAC1B,UAAU,OAAO,GAAG,IAAI,CAAC;AACzB,SAAS,CAAC;AACV;AACA,QAAQ,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACzE,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;AAC5B,UAAU,OAAO,CAAC,MAAM,CAAC,OAAO;AAChC,cAAc,UAAU,EAAE;AAC1B,cAAc,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACnE,SAAS;AACT,OAAO;AACP;AACA,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAClD;AACA,MAAM,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AACnE,QAAQ,MAAM;AACd,UAAU,IAAIlB,YAAU;AACxB,YAAY,uBAAuB,GAAG,QAAQ,GAAG,GAAG;AACpD,YAAYA,YAAU,CAAC,eAAe;AACtC,YAAY,MAAM;AAClB,WAAW;AACX,SAAS,CAAC;AACV,QAAQ,OAAO;AACf,OAAO;AACP;AACA;AACA,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;AACxC,KAAK,CAAC,CAAC;AACP,GAAG;;ACzNH,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK;AAC7C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACxE;AACA,EAAE,IAAI,OAAO,IAAI,MAAM,EAAE;AACzB,IAAI,IAAI,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;AAC3C;AACA,IAAI,IAAI,OAAO,CAAC;AAChB;AACA,IAAI,MAAM,OAAO,GAAG,UAAU,MAAM,EAAE;AACtC,MAAM,IAAI,CAAC,OAAO,EAAE;AACpB,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,QAAQ,WAAW,EAAE,CAAC;AACtB,QAAQ,MAAM,GAAG,GAAG,MAAM,YAAY,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACnE,QAAQ,UAAU,CAAC,KAAK;AACxB,UAAU,GAAG,YAAYA,YAAU;AACnC,cAAc,GAAG;AACjB,cAAc,IAAIkB,eAAa,CAAC,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC;AACzE,SAAS,CAAC;AACV,OAAO;AACP,KAAK,CAAC;AACN;AACA,IAAI,IAAI,KAAK;AACb,MAAM,OAAO;AACb,MAAM,UAAU,CAAC,MAAM;AACvB,QAAQ,KAAK,GAAG,IAAI,CAAC;AACrB,QAAQ,OAAO,CAAC,IAAIlB,YAAU,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,EAAEA,YAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1F,OAAO,EAAE,OAAO,CAAC,CAAC;AAClB;AACA,IAAI,MAAM,WAAW,GAAG,MAAM;AAC9B,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;AACrC,QAAQ,KAAK,GAAG,IAAI,CAAC;AACrB,QAAQ,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACpC,UAAU,MAAM,CAAC,WAAW;AAC5B,cAAc,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;AACzC,cAAc,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3D,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO;AACP,KAAK,CAAC;AACN;AACA,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3E;AACA,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;AAClC;AACA,IAAI,MAAM,CAAC,WAAW,GAAG,MAAMF,OAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACvD;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,CAAC,CAAC;AACF;AACA,yBAAe,cAAc;;ACvDtB,MAAM,WAAW,GAAG,WAAW,KAAK,EAAE,SAAS,EAAE;AACxD,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;AAC7B;AACA,EAAE,IAAI,CAAC,SAAS,IAAI,GAAG,GAAG,SAAS,EAAE;AACrC,IAAI,MAAM,KAAK,CAAC;AAChB,IAAI,OAAO;AACX,GAAG;AACH;AACA,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;AACd,EAAE,IAAI,GAAG,CAAC;AACV;AACA,EAAE,OAAO,GAAG,GAAG,GAAG,EAAE;AACpB,IAAI,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;AAC1B,IAAI,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,IAAI,GAAG,GAAG,GAAG,CAAC;AACd,GAAG;AACH,CAAC,CAAC;AACF;AACO,MAAM,SAAS,GAAG,iBAAiB,QAAQ,EAAE,SAAS,EAAE;AAC/D,EAAE,WAAW,MAAM,KAAK,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;AAClD,IAAI,OAAO,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACzC,GAAG;AACH,CAAC,CAAC;AACF;AACA,MAAM,UAAU,GAAG,iBAAiB,MAAM,EAAE;AAC5C,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;AACpC,IAAI,OAAO,MAAM,CAAC;AAClB,IAAI,OAAO;AACX,GAAG;AACH;AACA,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AACpC,EAAE,IAAI;AACN,IAAI,SAAS;AACb,MAAM,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;AAClD,MAAM,IAAI,IAAI,EAAE;AAChB,QAAQ,MAAM;AACd,OAAO;AACP,MAAM,MAAM,KAAK,CAAC;AAClB,KAAK;AACL,GAAG,SAAS;AACZ,IAAI,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;AAC1B,GAAG;AACH,CAAC,CAAC;AACF;AACO,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,KAAK;AACxE,EAAE,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAChD;AACA,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK;AACzB,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,MAAM,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9B,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,IAAI,cAAc;AAC3B,IAAI;AACJ,MAAM,MAAM,IAAI,CAAC,UAAU,EAAE;AAC7B,QAAQ,IAAI;AACZ,UAAU,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AACxD;AACA,UAAU,IAAI,IAAI,EAAE;AACpB,YAAY,SAAS,EAAE,CAAC;AACxB,YAAY,UAAU,CAAC,KAAK,EAAE,CAAC;AAC/B,YAAY,OAAO;AACnB,WAAW;AACX;AACA,UAAU,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;AACrC,UAAU,IAAI,UAAU,EAAE;AAC1B,YAAY,IAAI,WAAW,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC;AAC7C,YAAY,UAAU,CAAC,WAAW,CAAC,CAAC;AACpC,WAAW;AACX,UAAU,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,SAAS,CAAC,OAAO,GAAG,EAAE;AACtB,UAAU,SAAS,CAAC,GAAG,CAAC,CAAC;AACzB,UAAU,MAAM,GAAG,CAAC;AACpB,SAAS;AACT,OAAO;AACP,MAAM,MAAM,CAAC,MAAM,EAAE;AACrB,QAAQ,SAAS,CAAC,MAAM,CAAC,CAAC;AAC1B,QAAQ,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC;AACjC,OAAO;AACP,KAAK;AACL,IAAI;AACJ,MAAM,aAAa,EAAE,CAAC;AACtB,KAAK;AACL,GAAG,CAAC;AACJ,CAAC;;AC1ED,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAC;AACrC;AACA,MAAM,EAAE,UAAU,EAAE,GAAGA,OAAK,CAAC;AAC7B;AACA,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;AACpD,EAAE,OAAO;AACT,EAAE,QAAQ;AACV,CAAC,CAAC,EAAEA,OAAK,CAAC,MAAM,CAAC,CAAC;AAClB;AACA,MAAM,kBAAE0B,gBAAc,eAAEC,aAAW,EAAE,GAAG3B,OAAK,CAAC,MAAM,CAAC;AACrD;AACA,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,KAAK;AAC9B,EAAE,IAAI;AACN,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AACzB,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,CAAC,CAAC;AACF;AACA,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK;AACzB,EAAE,GAAG,GAAGA,OAAK,CAAC,KAAK,CAAC,IAAI;AACxB,IAAI;AACJ,MAAM,aAAa,EAAE,IAAI;AACzB,KAAK;AACL,IAAI,cAAc;AAClB,IAAI,GAAG;AACP,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;AACrD,EAAE,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC;AACzF,EAAE,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AACjD,EAAE,MAAM,mBAAmB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnD;AACA,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACzB,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,yBAAyB,GAAG,gBAAgB,IAAI,UAAU,CAAC0B,gBAAc,CAAC,CAAC;AACnF;AACA,EAAE,MAAM,UAAU;AAClB,IAAI,gBAAgB;AACpB,KAAK,OAAOC,aAAW,KAAK,UAAU;AACtC,QAAQ;AACR,UAAU,CAAC,OAAO,KAAK,CAAC,GAAG;AAC3B,YAAY,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AAC/B,UAAU,IAAIA,aAAW,EAAE,CAAC;AAC5B,QAAQ,OAAO,GAAG,KAAK,IAAI,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC7E;AACA,EAAE,MAAM,qBAAqB;AAC7B,IAAI,kBAAkB;AACtB,IAAI,yBAAyB;AAC7B,IAAI,IAAI,CAAC,MAAM;AACf,MAAM,IAAI,cAAc,GAAG,KAAK,CAAC;AACjC;AACA,MAAM,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC1D,QAAQ,IAAI,EAAE,IAAID,gBAAc,EAAE;AAClC,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,IAAI,MAAM,GAAG;AACrB,UAAU,cAAc,GAAG,IAAI,CAAC;AAChC,UAAU,OAAO,MAAM,CAAC;AACxB,SAAS;AACT,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACrC;AACA,MAAM,OAAO,cAAc,IAAI,CAAC,cAAc,CAAC;AAC/C,KAAK,CAAC,CAAC;AACP;AACA,EAAE,MAAM,sBAAsB;AAC9B,IAAI,mBAAmB;AACvB,IAAI,yBAAyB;AAC7B,IAAI,IAAI,CAAC,MAAM1B,OAAK,CAAC,gBAAgB,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D;AACA,EAAE,MAAM,SAAS,GAAG;AACpB,IAAI,MAAM,EAAE,sBAAsB,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC;AACzD,GAAG,CAAC;AACJ;AACA,EAAE,gBAAgB;AAClB,IAAI,CAAC,MAAM;AACX,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC9E,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;AACxB,WAAW,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK;AAC9C,YAAY,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C;AACA,YAAY,IAAI,MAAM,EAAE;AACxB,cAAc,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,aAAa;AACb;AACA,YAAY,MAAM,IAAIE,YAAU;AAChC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC;AACxD,cAAcA,YAAU,CAAC,eAAe;AACxC,cAAc,MAAM;AACpB,aAAa,CAAC;AACd,WAAW,CAAC,CAAC;AACb,OAAO,CAAC,CAAC;AACT,KAAK,GAAG,CAAC;AACT;AACA,EAAE,MAAM,aAAa,GAAG,OAAO,IAAI,KAAK;AACxC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AACtB,MAAM,OAAO,CAAC,CAAC;AACf,KAAK;AACL;AACA,IAAI,IAAIF,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAC5B,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC;AACvB,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;AACzC,MAAM,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpD,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,IAAI;AACZ,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC;AACvD,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAIA,OAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AACpE,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;AACvB,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC9B,MAAM,OAAO,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;AACjD,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,iBAAiB,GAAG,OAAO,OAAO,EAAE,IAAI,KAAK;AACrD,IAAI,MAAM,MAAM,GAAGA,OAAK,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACpE;AACA,IAAI,OAAO,MAAM,IAAI,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACzD,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,OAAO,MAAM,KAAK;AAC3B,IAAI,IAAI;AACR,MAAM,GAAG;AACT,MAAM,MAAM;AACZ,MAAM,IAAI;AACV,MAAM,MAAM;AACZ,MAAM,WAAW;AACjB,MAAM,OAAO;AACb,MAAM,kBAAkB;AACxB,MAAM,gBAAgB;AACtB,MAAM,YAAY;AAClB,MAAM,OAAO;AACb,MAAM,eAAe,GAAG,aAAa;AACrC,MAAM,YAAY;AAClB,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9B;AACA,IAAI,IAAI,MAAM,GAAG,QAAQ,IAAI,KAAK,CAAC;AACnC;AACA,IAAI,YAAY,GAAG,YAAY,GAAG,CAAC,YAAY,GAAG,EAAE,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;AAC7E;AACA,IAAI,IAAI,cAAc,GAAG4B,gBAAc;AACvC,MAAM,CAAC,MAAM,EAAE,WAAW,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;AAC1D,MAAM,OAAO;AACb,KAAK,CAAC;AACN;AACA,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC;AACvB;AACA,IAAI,MAAM,WAAW;AACrB,MAAM,cAAc;AACpB,MAAM,cAAc,CAAC,WAAW;AAChC,OAAO,MAAM;AACb,QAAQ,cAAc,CAAC,WAAW,EAAE,CAAC;AACrC,OAAO,CAAC,CAAC;AACT;AACA,IAAI,IAAI,oBAAoB,CAAC;AAC7B;AACA,IAAI,IAAI;AACR,MAAM;AACN,QAAQ,gBAAgB;AACxB,QAAQ,qBAAqB;AAC7B,QAAQ,MAAM,KAAK,KAAK;AACxB,QAAQ,MAAM,KAAK,MAAM;AACzB,QAAQ,CAAC,oBAAoB,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;AAC7E,QAAQ;AACR,QAAQ,IAAI,QAAQ,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;AACxC,UAAU,MAAM,EAAE,MAAM;AACxB,UAAU,IAAI,EAAE,IAAI;AACpB,UAAU,MAAM,EAAE,MAAM;AACxB,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,IAAI,iBAAiB,CAAC;AAC9B;AACA,QAAQ,IAAI5B,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE;AAClG,UAAU,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;AACpD,SAAS;AACT;AACA,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;AAC3B,UAAU,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,sBAAsB;AAC5D,YAAY,oBAAoB;AAChC,YAAY,oBAAoB,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;AAClE,WAAW,CAAC;AACZ;AACA,UAAU,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACnF,SAAS;AACT,OAAO;AACP;AACA,MAAM,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AAC5C,QAAQ,eAAe,GAAG,eAAe,GAAG,SAAS,GAAG,MAAM,CAAC;AAC/D,OAAO;AACP;AACA;AACA;AACA,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,IAAI,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC;AAC9F;AACA,MAAM,MAAM,eAAe,GAAG;AAC9B,QAAQ,GAAG,YAAY;AACvB,QAAQ,MAAM,EAAE,cAAc;AAC9B,QAAQ,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;AACpC,QAAQ,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE;AAC7C,QAAQ,IAAI,EAAE,IAAI;AAClB,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,WAAW,EAAE,sBAAsB,GAAG,eAAe,GAAG,SAAS;AACzE,OAAO,CAAC;AACR;AACA,MAAM,OAAO,GAAG,kBAAkB,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;AACxE;AACA,MAAM,IAAI,QAAQ,GAAG,OAAO,kBAAkB;AAC9C,UAAU,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC;AACvC,UAAU,MAAM,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;AACxC;AACA,MAAM,MAAM,gBAAgB;AAC5B,QAAQ,sBAAsB,KAAK,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,UAAU,CAAC,CAAC;AAC7F;AACA,MAAM,IAAI,sBAAsB,KAAK,kBAAkB,KAAK,gBAAgB,IAAI,WAAW,CAAC,CAAC,EAAE;AAC/F,QAAQ,MAAM,OAAO,GAAG,EAAE,CAAC;AAC3B;AACA,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC9D,UAAU,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AACzC,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,MAAM,qBAAqB,GAAGA,OAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACnG;AACA,QAAQ,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC;AACjC,UAAU,CAAC,kBAAkB;AAC7B,YAAY,sBAAsB;AAClC,cAAc,qBAAqB;AACnC,cAAc,oBAAoB,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC;AAC5E,aAAa;AACb,UAAU,EAAE,CAAC;AACb;AACA,QAAQ,QAAQ,GAAG,IAAI,QAAQ;AAC/B,UAAU,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM;AAC3E,YAAY,KAAK,IAAI,KAAK,EAAE,CAAC;AAC7B,YAAY,WAAW,IAAI,WAAW,EAAE,CAAC;AACzC,WAAW,CAAC;AACZ,UAAU,OAAO;AACjB,SAAS,CAAC;AACV,OAAO;AACP;AACA,MAAM,YAAY,GAAG,YAAY,IAAI,MAAM,CAAC;AAC5C;AACA,MAAM,IAAI,YAAY,GAAG,MAAM,SAAS,CAACA,OAAK,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC;AAC1F,QAAQ,QAAQ;AAChB,QAAQ,MAAM;AACd,OAAO,CAAC;AACR;AACA,MAAM,CAAC,gBAAgB,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;AACxD;AACA,MAAM,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACpD,QAAQ,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;AAChC,UAAU,IAAI,EAAE,YAAY;AAC5B,UAAU,OAAO,EAAES,cAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AACtD,UAAU,MAAM,EAAE,QAAQ,CAAC,MAAM;AACjC,UAAU,UAAU,EAAE,QAAQ,CAAC,UAAU;AACzC,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,WAAW,IAAI,WAAW,EAAE,CAAC;AACnC;AACA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACrF,QAAQ,MAAM,MAAM,CAAC,MAAM;AAC3B,UAAU,IAAIP,YAAU;AACxB,YAAY,eAAe;AAC3B,YAAYA,YAAU,CAAC,WAAW;AAClC,YAAY,MAAM;AAClB,YAAY,OAAO;AACnB,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ;AAC/B,WAAW;AACX,UAAU;AACV,YAAY,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG;AACnC,WAAW;AACX,SAAS,CAAC;AACV,OAAO;AACP;AACA,MAAM,MAAMA,YAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AACxF,KAAK;AACL,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5B;AACO,MAAM,QAAQ,GAAG,CAAC,MAAM,KAAK;AACpC,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;AACzC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;AAC3C,EAAE,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC3C;AACA,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM;AACxB,IAAI,CAAC,GAAG,GAAG;AACX,IAAI,IAAI;AACR,IAAI,MAAM;AACV,IAAI,GAAG,GAAG,SAAS,CAAC;AACpB;AACA,EAAE,OAAO,CAAC,EAAE,EAAE;AACd,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B;AACA,IAAI,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACnF;AACA,IAAI,GAAG,GAAG,MAAM,CAAC;AACjB,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AACF;AACgB,QAAQ;;ACrUxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG;AACtB,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,GAAG,EAAE,UAAU;AACjB,EAAE,KAAK,EAAE;AACT,IAAI,GAAG,EAAE2B,QAAqB;AAC9B,GAAG;AACH,CAAC,CAAC;AACF;AACA;AACA7B,OAAK,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,KAAK,KAAK;AAC5C,EAAE,IAAI,EAAE,EAAE;AACV,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACnD,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB;AACA,KAAK;AACL,IAAI,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACxD,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,gBAAgB,GAAG,CAAC,OAAO;AACjC,EAAEA,OAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE;AACtC,EAAE,QAAQ,GAAGA,OAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC7D;AACA,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;AAC9B,EAAE,IAAI,aAAa,CAAC;AACpB,EAAE,IAAI,OAAO,CAAC;AACd;AACA,EAAE,MAAM,eAAe,GAAG,EAAE,CAAC;AAC7B;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,IAAI,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChC,IAAI,IAAI,EAAE,CAAC;AACX;AACA,IAAI,OAAO,GAAG,aAAa,CAAC;AAC5B;AACA,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE;AAC1C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AAC1E;AACA,MAAM,IAAI,OAAO,KAAK,SAAS,EAAE;AACjC,QAAQ,MAAM,IAAIE,YAAU,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,OAAO,KAAKF,OAAK,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACnF,MAAM,MAAM;AACZ,KAAK;AACL;AACA,IAAI,eAAe,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAC7C,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,EAAE;AAChB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAAG;AACvD,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC;AAClB,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AACxB,SAAS,KAAK,KAAK,KAAK,GAAG,qCAAqC,GAAG,+BAA+B,CAAC;AACnG,KAAK,CAAC;AACN;AACA,IAAI,IAAI,CAAC,GAAG,MAAM;AAClB,QAAQ,OAAO,CAAC,MAAM,GAAG,CAAC;AAC1B,UAAU,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5D,UAAU,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxC,QAAQ,yBAAyB,CAAC;AAClC;AACA,IAAI,MAAM,IAAIE,YAAU;AACxB,MAAM,CAAC,qDAAqD,CAAC,GAAG,CAAC;AACjE,MAAM,iBAAiB;AACvB,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,CAAC;AACD;AACA;AACA;AACA;AACA,iBAAe;AACf;AACA;AACA;AACA;AACA,EAAE,UAAU;AACZ;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,EAAE,aAAa;AACzB,CAAC;;ACxHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,4BAA4B,CAAC,MAAM,EAAE;AAC9C,EAAE,IAAI,MAAM,CAAC,WAAW,EAAE;AAC1B,IAAI,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;AAC1C,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC9C,IAAI,MAAM,IAAIkB,eAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC1C,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,eAAe,CAAC,MAAM,EAAE;AAChD,EAAE,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACvC;AACA,EAAE,MAAM,CAAC,OAAO,GAAGX,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrD;AACA;AACA,EAAE,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACpE;AACA,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9D,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;AAC9E,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAID,UAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAClF;AACA,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI;AAC7B,IAAI,SAAS,mBAAmB,CAAC,QAAQ,EAAE;AAC3C,MAAM,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC3C;AACA;AACA,MAAM,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AACrF;AACA,MAAM,QAAQ,CAAC,OAAO,GAAGC,cAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC7D;AACA,MAAM,OAAO,QAAQ,CAAC;AACtB,KAAK;AACL,IAAI,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACxC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC7B,QAAQ,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC7C;AACA;AACA,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;AACvC,UAAU,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;AACnD,YAAY,MAAM;AAClB,YAAY,MAAM,CAAC,iBAAiB;AACpC,YAAY,MAAM,CAAC,QAAQ;AAC3B,WAAW,CAAC;AACZ,UAAU,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAGA,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/E,SAAS;AACT,OAAO;AACP;AACA,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpC,KAAK;AACL,GAAG,CAAC;AACJ;;ACvEA,MAAMqB,YAAU,GAAG,EAAE,CAAC;AACtB;AACA;AACA,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AACrF,EAAEA,YAAU,CAAC,IAAI,CAAC,GAAG,SAAS,SAAS,CAAC,KAAK,EAAE;AAC/C,IAAI,OAAO,OAAO,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;AACtE,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACA,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAA,YAAU,CAAC,YAAY,GAAG,SAAS,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;AAC7E,EAAE,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;AACpC,IAAI;AACJ,MAAM,UAAU;AAChB,MAAM,OAAO;AACb,MAAM,yBAAyB;AAC/B,MAAM,GAAG;AACT,MAAM,GAAG;AACT,MAAM,IAAI;AACV,OAAO,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,CAAC;AACrC,MAAM;AACN,GAAG;AACH;AACA;AACA,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,KAAK;AAC/B,IAAI,IAAI,SAAS,KAAK,KAAK,EAAE;AAC7B,MAAM,MAAM,IAAI5B,YAAU;AAC1B,QAAQ,aAAa,CAAC,GAAG,EAAE,mBAAmB,IAAI,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;AACnF,QAAQA,YAAU,CAAC,cAAc;AACjC,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE;AAC7C,MAAM,kBAAkB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACrC;AACA,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,aAAa;AACrB,UAAU,GAAG;AACb,UAAU,8BAA8B,GAAG,OAAO,GAAG,yCAAyC;AAC9F,SAAS;AACT,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,OAAO,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;AAC1D,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA4B,YAAU,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,eAAe,EAAE;AACzD,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,KAAK;AACzB;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,4BAA4B,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;AACzE,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE;AACtD,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACnC,IAAI,MAAM,IAAI5B,YAAU,CAAC,2BAA2B,EAAEA,YAAU,CAAC,oBAAoB,CAAC,CAAC;AACvF,GAAG;AACH,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACtB,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AAClB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAClC,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AACjC,MAAM,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3E,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE;AAC3B,QAAQ,MAAM,IAAIA,YAAU;AAC5B,UAAU,SAAS,GAAG,GAAG,GAAG,WAAW,GAAG,MAAM;AAChD,UAAUA,YAAU,CAAC,oBAAoB;AACzC,SAAS,CAAC;AACV,OAAO;AACP,MAAM,SAAS;AACf,KAAK;AACL,IAAI,IAAI,YAAY,KAAK,IAAI,EAAE;AAC/B,MAAM,MAAM,IAAIA,YAAU,CAAC,iBAAiB,GAAG,GAAG,EAAEA,YAAU,CAAC,cAAc,CAAC,CAAC;AAC/E,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACA,kBAAe;AACf,EAAE,aAAa;AACf,cAAE4B,YAAU;AACZ,CAAC;;ACjGD,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAK,CAAC;AACZ,EAAE,WAAW,CAAC,cAAc,EAAE;AAC9B,IAAI,IAAI,CAAC,QAAQ,GAAG,cAAc,IAAI,EAAE,CAAC;AACzC,IAAI,IAAI,CAAC,YAAY,GAAG;AACxB,MAAM,OAAO,EAAE,IAAIC,oBAAkB,EAAE;AACvC,MAAM,QAAQ,EAAE,IAAIA,oBAAkB,EAAE;AACxC,KAAK,CAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE;AACrC,IAAI,IAAI;AACR,MAAM,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACtD,KAAK,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,KAAK,EAAE;AAChC,QAAQ,IAAI,KAAK,GAAG,EAAE,CAAC;AACvB;AACA,QAAQ,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;AACzF;AACA;AACA,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;AAC1E,QAAQ,IAAI;AACZ,UAAU,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AAC1B,YAAY,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;AAC9B;AACA,WAAW,MAAM,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE;AAC3F,YAAY,GAAG,CAAC,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC;AACtC,WAAW;AACX,SAAS,CAAC,OAAO,CAAC,EAAE;AACpB;AACA,SAAS;AACT,OAAO;AACP;AACA,MAAM,MAAM,GAAG,CAAC;AAChB,KAAK;AACL,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE;AAChC;AACA;AACA,IAAI,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACzC,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;AAC5B,MAAM,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC;AAC/B,KAAK,MAAM;AACX,MAAM,MAAM,GAAG,WAAW,IAAI,EAAE,CAAC;AACjC,KAAK;AACL;AACA,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD;AACA,IAAI,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;AAC/D;AACA,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;AACpC,MAAM,SAAS,CAAC,aAAa;AAC7B,QAAQ,YAAY;AACpB,QAAQ;AACR,UAAU,iBAAiB,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AACxE,UAAU,iBAAiB,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AACxE,UAAU,mBAAmB,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AAC1E,UAAU,+BAA+B,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AACtF,SAAS;AACT,QAAQ,KAAK;AACb,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,IAAI,gBAAgB,IAAI,IAAI,EAAE;AAClC,MAAM,IAAI/B,OAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;AAC9C,QAAQ,MAAM,CAAC,gBAAgB,GAAG;AAClC,UAAU,SAAS,EAAE,gBAAgB;AACrC,SAAS,CAAC;AACV,OAAO,MAAM;AACb,QAAQ,SAAS,CAAC,aAAa;AAC/B,UAAU,gBAAgB;AAC1B,UAAU;AACV,YAAY,MAAM,EAAE,UAAU,CAAC,QAAQ;AACvC,YAAY,SAAS,EAAE,UAAU,CAAC,QAAQ;AAC1C,WAAW;AACX,UAAU,IAAI;AACd,SAAS,CAAC;AACV,OAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAE3C,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,KAAK,SAAS,EAAE;AAC9D,MAAM,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AACjE,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACtC,KAAK;AACL;AACA,IAAI,SAAS,CAAC,aAAa;AAC3B,MAAM,MAAM;AACZ,MAAM;AACN,QAAQ,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC/C,QAAQ,aAAa,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC;AAC3D,OAAO;AACP,MAAM,IAAI;AACV,KAAK,CAAC;AACN;AACA;AACA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,EAAE,WAAW,EAAE,CAAC;AACnF;AACA;AACA,IAAI,IAAI,cAAc,GAAG,OAAO,IAAIA,OAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACxF;AACA,IAAI,OAAO;AACX,MAAMA,OAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,KAAK;AAC7F,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/B,OAAO,CAAC,CAAC;AACT;AACA,IAAI,MAAM,CAAC,OAAO,GAAGS,cAAY,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAClE;AACA;AACA,IAAI,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACvC,IAAI,IAAI,8BAA8B,GAAG,IAAI,CAAC;AAC9C,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,0BAA0B,CAAC,WAAW,EAAE;AACvF,MAAM,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,UAAU,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;AAC9F,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,8BAA8B,GAAG,8BAA8B,IAAI,WAAW,CAAC,WAAW,CAAC;AACjG;AACA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,oBAAoB,CAAC;AACvE,MAAM,MAAM,+BAA+B;AAC3C,QAAQ,YAAY,IAAI,YAAY,CAAC,+BAA+B,CAAC;AACrE;AACA,MAAM,IAAI,+BAA+B,EAAE;AAC3C,QAAQ,uBAAuB,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACrF,OAAO,MAAM;AACb,QAAQ,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AAClF,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACxC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,wBAAwB,CAAC,WAAW,EAAE;AACtF,MAAM,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACjF,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,GAAG,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,8BAA8B,EAAE;AACzC,MAAM,MAAM,KAAK,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC5D,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,uBAAuB,CAAC,CAAC;AAChD,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,CAAC;AAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;AACzB;AACA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxC;AACA,MAAM,OAAO,CAAC,GAAG,GAAG,EAAE;AACtB,QAAQ,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,OAAO;AACP;AACA,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK;AACL;AACA,IAAI,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC;AACzC;AACA,IAAI,IAAI,SAAS,GAAG,MAAM,CAAC;AAC3B;AACA,IAAI,OAAO,CAAC,GAAG,GAAG,EAAE;AACpB,MAAM,MAAM,WAAW,GAAG,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,MAAM,MAAM,UAAU,GAAG,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,MAAM,IAAI;AACV,QAAQ,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAC3C,OAAO,CAAC,OAAO,KAAK,EAAE;AACtB,QAAQ,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrC,QAAQ,MAAM;AACd,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI;AACR,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACtD,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnC,KAAK;AACL;AACA,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,GAAG,GAAG,wBAAwB,CAAC,MAAM,CAAC;AAC1C;AACA,IAAI,OAAO,CAAC,GAAG,GAAG,EAAE;AACpB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3F,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzF,IAAI,OAAO,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACtE,GAAG;AACH,CAAC;AACD;AACA;AACAT,OAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,mBAAmB,CAAC,MAAM,EAAE;AACzF;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,EAAE,MAAM,EAAE;AACnD,IAAI,OAAO,IAAI,CAAC,OAAO;AACvB,MAAM,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE;AAChC,QAAQ,MAAM;AACd,QAAQ,GAAG;AACX,QAAQ,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,EAAE,IAAI;AACjC,OAAO,CAAC;AACR,KAAK,CAAC;AACN,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACAA,OAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,qBAAqB,CAAC,MAAM,EAAE;AAC/E;AACA;AACA,EAAE,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACtC,IAAI,OAAO,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;AAClD,MAAM,OAAO,IAAI,CAAC,OAAO;AACzB,QAAQ,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE;AAClC,UAAU,MAAM;AAChB,UAAU,OAAO,EAAE,MAAM;AACzB,cAAc;AACd,gBAAgB,cAAc,EAAE,qBAAqB;AACrD,eAAe;AACf,cAAc,EAAE;AAChB,UAAU,GAAG;AACb,UAAU,IAAI;AACd,SAAS,CAAC;AACV,OAAO,CAAC;AACR,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,kBAAkB,EAAE,CAAC;AACjD;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AACH;AACA,gBAAe,KAAK;;AClQpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,CAAC;AAClB,EAAE,WAAW,CAAC,QAAQ,EAAE;AACxB,IAAI,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACxC,MAAM,MAAM,IAAI,SAAS,CAAC,8BAA8B,CAAC,CAAC;AAC1D,KAAK;AACL;AACA,IAAI,IAAI,cAAc,CAAC;AACvB;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,eAAe,CAAC,OAAO,EAAE;AACjE,MAAM,cAAc,GAAG,OAAO,CAAC;AAC/B,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC;AACvB;AACA;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;AAClC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO;AACpC;AACA,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;AACtC;AACA,MAAM,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACtB,QAAQ,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACpC,OAAO;AACP,MAAM,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAC9B,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,WAAW,KAAK;AACzC,MAAM,IAAI,QAAQ,CAAC;AACnB;AACA,MAAM,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AAC/C,QAAQ,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjC,QAAQ,QAAQ,GAAG,OAAO,CAAC;AAC3B,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3B;AACA,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,MAAM,GAAG;AACzC,QAAQ,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACpC,OAAO,CAAC;AACR;AACA,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK,CAAC;AACN;AACA,IAAI,QAAQ,CAAC,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACvD,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;AACxB;AACA,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,KAAK,CAAC,MAAM,GAAG,IAAIoB,eAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACjE,MAAM,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACnC,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,MAAM,IAAI,CAAC,MAAM,CAAC;AACxB,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,CAAC,QAAQ,EAAE;AACtB,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrC,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnC,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,QAAQ,EAAE;AACxB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC1B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpD,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACtB,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK;AACL,GAAG;AACH;AACA,EAAE,aAAa,GAAG;AAClB,IAAI,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;AAC7C;AACA,IAAI,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK;AAC3B,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,KAAK,CAAC;AACN;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1B;AACA,IAAI,UAAU,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAClE;AACA,IAAI,OAAO,UAAU,CAAC,MAAM,CAAC;AAC7B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,MAAM,GAAG;AAClB,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,SAAS,QAAQ,CAAC,CAAC,EAAE;AACvD,MAAM,MAAM,GAAG,CAAC,CAAC;AACjB,KAAK,CAAC,CAAC;AACP,IAAI,OAAO;AACX,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,CAAC;AACN,GAAG;AACH,CAAC;AACD;AACA,sBAAe,WAAW;;ACpI1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,MAAM,CAAC,QAAQ,EAAE;AACzC,EAAE,OAAO,SAAS,IAAI,CAAC,GAAG,EAAE;AAC5B,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrC,GAAG,CAAC;AACJ;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,YAAY,CAAC,OAAO,EAAE;AAC9C,EAAE,OAAOpB,OAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC;AAClE;;ACbA,MAAM,cAAc,GAAG;AACvB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,EAAE,EAAE,GAAG;AACT,EAAE,OAAO,EAAE,GAAG;AACd,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,2BAA2B,EAAE,GAAG;AAClC,EAAE,SAAS,EAAE,GAAG;AAChB,EAAE,YAAY,EAAE,GAAG;AACnB,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,WAAW,EAAE,GAAG;AAClB,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,gBAAgB,EAAE,GAAG;AACvB,EAAE,KAAK,EAAE,GAAG;AACZ,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,WAAW,EAAE,GAAG;AAClB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,iBAAiB,EAAE,GAAG;AACxB,EAAE,iBAAiB,EAAE,GAAG;AACxB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,YAAY,EAAE,GAAG;AACnB,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,SAAS,EAAE,GAAG;AAChB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,gBAAgB,EAAE,GAAG;AACvB,EAAE,aAAa,EAAE,GAAG;AACpB,EAAE,2BAA2B,EAAE,GAAG;AAClC,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,oBAAoB,EAAE,GAAG;AAC3B,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,iBAAiB,EAAE,GAAG;AACxB,EAAE,SAAS,EAAE,GAAG;AAChB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,gBAAgB,EAAE,GAAG;AACvB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,oBAAoB,EAAE,GAAG;AAC3B,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,2BAA2B,EAAE,GAAG;AAClC,EAAE,0BAA0B,EAAE,GAAG;AACjC,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,uBAAuB,EAAE,GAAG;AAC9B,EAAE,qBAAqB,EAAE,GAAG;AAC5B,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,YAAY,EAAE,GAAG;AACnB,EAAE,WAAW,EAAE,GAAG;AAClB,EAAE,6BAA6B,EAAE,GAAG;AACpC,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,qBAAqB,EAAE,GAAG;AAC5B,CAAC,CAAC;AACF;AACA,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACzD,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AAC9B,CAAC,CAAC,CAAC;AACH;AACA,yBAAe,cAAc;;ACxD7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,aAAa,EAAE;AACvC,EAAE,MAAM,OAAO,GAAG,IAAIgC,OAAK,CAAC,aAAa,CAAC,CAAC;AAC3C,EAAE,MAAM,QAAQ,GAAG,IAAI,CAACA,OAAK,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1D;AACA;AACA,EAAEhC,OAAK,CAAC,MAAM,CAAC,QAAQ,EAAEgC,OAAK,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACzE;AACA;AACA,EAAEhC,OAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D;AACA;AACA,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,cAAc,EAAE;AACpD,IAAI,OAAO,cAAc,CAAC,WAAW,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;AACtE,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB,CAAC;AACD;AACA;AACK,MAAC,KAAK,GAAG,cAAc,CAACQ,UAAQ,EAAE;AACvC;AACA;AACA,KAAK,CAAC,KAAK,GAAGwB,OAAK,CAAC;AACpB;AACA;AACA,KAAK,CAAC,aAAa,GAAGZ,eAAa,CAAC;AACpC,KAAK,CAAC,WAAW,GAAGa,aAAW,CAAC;AAChC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC1B,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AACxB,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AAC9B;AACA;AACA,KAAK,CAAC,UAAU,GAAG/B,YAAU,CAAC;AAC9B;AACA;AACA,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;AACnC;AACA;AACA,KAAK,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,QAAQ,EAAE;AACnC,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC,CAAC;AACF;AACA,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACtB;AACA;AACA,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;AAClC;AACA;AACA,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;AAChC;AACA,KAAK,CAAC,YAAY,GAAGO,cAAY,CAAC;AAClC;AACA,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,KAAK,cAAc,CAACT,OAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AACpG;AACA,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;AACvC;AACA,KAAK,CAAC,cAAc,GAAGkC,gBAAc,CAAC;AACtC;AACA,KAAK,CAAC,OAAO,GAAG,KAAK;;;;"} \ No newline at end of file diff --git a/node_modules/axios/index.d.cts b/node_modules/axios/index.d.cts new file mode 100644 index 0000000..4c953a0 --- /dev/null +++ b/node_modules/axios/index.d.cts @@ -0,0 +1,716 @@ +interface RawAxiosHeaders { + [key: string]: axios.AxiosHeaderValue; +} + +type MethodsHeaders = Partial< + { + [Key in axios.Method as Lowercase]: AxiosHeaders; + } & { common: AxiosHeaders } +>; + +type AxiosHeaderMatcher = + | string + | RegExp + | ((this: AxiosHeaders, value: string, name: string) => boolean); + +type AxiosHeaderParser = (this: AxiosHeaders, value: axios.AxiosHeaderValue, header: string) => any; + +type CommonRequestHeadersList = + | 'Accept' + | 'Content-Length' + | 'User-Agent' + | 'Content-Encoding' + | 'Authorization'; + +type ContentType = + | axios.AxiosHeaderValue + | 'text/html' + | 'text/plain' + | 'multipart/form-data' + | 'application/json' + | 'application/x-www-form-urlencoded' + | 'application/octet-stream'; + +type CommonResponseHeadersList = + | 'Server' + | 'Content-Type' + | 'Content-Length' + | 'Cache-Control' + | 'Content-Encoding'; + +type BrowserProgressEvent = any; + +declare class AxiosHeaders { + constructor(headers?: RawAxiosHeaders | AxiosHeaders | string); + + [key: string]: any; + + set( + headerName?: string, + value?: axios.AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher + ): AxiosHeaders; + set(headers?: RawAxiosHeaders | AxiosHeaders | string, rewrite?: boolean): AxiosHeaders; + + get(headerName: string, parser: RegExp): RegExpExecArray | null; + get(headerName: string, matcher?: true | AxiosHeaderParser): axios.AxiosHeaderValue; + + has(header: string, matcher?: AxiosHeaderMatcher): boolean; + + delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean; + + clear(matcher?: AxiosHeaderMatcher): boolean; + + normalize(format: boolean): AxiosHeaders; + + concat( + ...targets: Array + ): AxiosHeaders; + + toJSON(asStrings?: boolean): RawAxiosHeaders; + + static from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders; + + static accessor(header: string | string[]): AxiosHeaders; + + static concat( + ...targets: Array + ): AxiosHeaders; + + setContentType(value: ContentType, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getContentType(parser?: RegExp): RegExpExecArray | null; + getContentType(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasContentType(matcher?: AxiosHeaderMatcher): boolean; + + setContentLength( + value: axios.AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher + ): AxiosHeaders; + getContentLength(parser?: RegExp): RegExpExecArray | null; + getContentLength(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasContentLength(matcher?: AxiosHeaderMatcher): boolean; + + setAccept(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getAccept(parser?: RegExp): RegExpExecArray | null; + getAccept(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasAccept(matcher?: AxiosHeaderMatcher): boolean; + + setUserAgent(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getUserAgent(parser?: RegExp): RegExpExecArray | null; + getUserAgent(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasUserAgent(matcher?: AxiosHeaderMatcher): boolean; + + setContentEncoding( + value: axios.AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher + ): AxiosHeaders; + getContentEncoding(parser?: RegExp): RegExpExecArray | null; + getContentEncoding(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasContentEncoding(matcher?: AxiosHeaderMatcher): boolean; + + setAuthorization( + value: axios.AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher + ): AxiosHeaders; + getAuthorization(parser?: RegExp): RegExpExecArray | null; + getAuthorization(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasAuthorization(matcher?: AxiosHeaderMatcher): boolean; + + getSetCookie(): string[]; + + [Symbol.iterator](): IterableIterator<[string, axios.AxiosHeaderValue]>; +} + +declare class AxiosError extends Error { + constructor( + message?: string, + code?: string, + config?: axios.InternalAxiosRequestConfig, + request?: any, + response?: axios.AxiosResponse + ); + + config?: axios.InternalAxiosRequestConfig; + code?: string; + request?: any; + response?: axios.AxiosResponse; + isAxiosError: boolean; + status?: number; + toJSON: () => object; + cause?: Error; + event?: BrowserProgressEvent; + static from( + error: Error | unknown, + code?: string, + config?: axios.InternalAxiosRequestConfig, + request?: any, + response?: axios.AxiosResponse, + customProps?: object + ): AxiosError; + static readonly ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS'; + static readonly ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE'; + static readonly ERR_BAD_OPTION = 'ERR_BAD_OPTION'; + static readonly ERR_NETWORK = 'ERR_NETWORK'; + static readonly ERR_DEPRECATED = 'ERR_DEPRECATED'; + static readonly ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE'; + static readonly ERR_BAD_REQUEST = 'ERR_BAD_REQUEST'; + static readonly ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT'; + static readonly ERR_INVALID_URL = 'ERR_INVALID_URL'; + static readonly ERR_CANCELED = 'ERR_CANCELED'; + static readonly ECONNABORTED = 'ECONNABORTED'; + static readonly ETIMEDOUT = 'ETIMEDOUT'; +} + +declare class CanceledError extends AxiosError {} + +declare class Axios { + constructor(config?: axios.AxiosRequestConfig); + defaults: axios.AxiosDefaults; + interceptors: { + request: axios.AxiosInterceptorManager; + response: axios.AxiosInterceptorManager; + }; + getUri(config?: axios.AxiosRequestConfig): string; + request, D = any>( + config: axios.AxiosRequestConfig + ): Promise; + get, D = any>( + url: string, + config?: axios.AxiosRequestConfig + ): Promise; + delete, D = any>( + url: string, + config?: axios.AxiosRequestConfig + ): Promise; + head, D = any>( + url: string, + config?: axios.AxiosRequestConfig + ): Promise; + options, D = any>( + url: string, + config?: axios.AxiosRequestConfig + ): Promise; + post, D = any>( + url: string, + data?: D, + config?: axios.AxiosRequestConfig + ): Promise; + put, D = any>( + url: string, + data?: D, + config?: axios.AxiosRequestConfig + ): Promise; + patch, D = any>( + url: string, + data?: D, + config?: axios.AxiosRequestConfig + ): Promise; + postForm, D = any>( + url: string, + data?: D, + config?: axios.AxiosRequestConfig + ): Promise; + putForm, D = any>( + url: string, + data?: D, + config?: axios.AxiosRequestConfig + ): Promise; + patchForm, D = any>( + url: string, + data?: D, + config?: axios.AxiosRequestConfig + ): Promise; +} + +declare enum HttpStatusCode { + Continue = 100, + SwitchingProtocols = 101, + Processing = 102, + EarlyHints = 103, + Ok = 200, + Created = 201, + Accepted = 202, + NonAuthoritativeInformation = 203, + NoContent = 204, + ResetContent = 205, + PartialContent = 206, + MultiStatus = 207, + AlreadyReported = 208, + ImUsed = 226, + MultipleChoices = 300, + MovedPermanently = 301, + Found = 302, + SeeOther = 303, + NotModified = 304, + UseProxy = 305, + Unused = 306, + TemporaryRedirect = 307, + PermanentRedirect = 308, + BadRequest = 400, + Unauthorized = 401, + PaymentRequired = 402, + Forbidden = 403, + NotFound = 404, + MethodNotAllowed = 405, + NotAcceptable = 406, + ProxyAuthenticationRequired = 407, + RequestTimeout = 408, + Conflict = 409, + Gone = 410, + LengthRequired = 411, + PreconditionFailed = 412, + PayloadTooLarge = 413, + UriTooLong = 414, + UnsupportedMediaType = 415, + RangeNotSatisfiable = 416, + ExpectationFailed = 417, + ImATeapot = 418, + MisdirectedRequest = 421, + UnprocessableEntity = 422, + Locked = 423, + FailedDependency = 424, + TooEarly = 425, + UpgradeRequired = 426, + PreconditionRequired = 428, + TooManyRequests = 429, + RequestHeaderFieldsTooLarge = 431, + UnavailableForLegalReasons = 451, + InternalServerError = 500, + NotImplemented = 501, + BadGateway = 502, + ServiceUnavailable = 503, + GatewayTimeout = 504, + HttpVersionNotSupported = 505, + VariantAlsoNegotiates = 506, + InsufficientStorage = 507, + LoopDetected = 508, + NotExtended = 510, + NetworkAuthenticationRequired = 511, +} + +type InternalAxiosError = AxiosError; + +declare namespace axios { + type AxiosError = InternalAxiosError; + + type RawAxiosRequestHeaders = Partial< + RawAxiosHeaders & { + [Key in CommonRequestHeadersList]: AxiosHeaderValue; + } & { + 'Content-Type': ContentType; + } + >; + + type AxiosRequestHeaders = RawAxiosRequestHeaders & AxiosHeaders; + + type AxiosHeaderValue = AxiosHeaders | string | string[] | number | boolean | null; + + type RawCommonResponseHeaders = { + [Key in CommonResponseHeadersList]: AxiosHeaderValue; + } & { + 'set-cookie': string[]; + }; + + type RawAxiosResponseHeaders = Partial; + + type AxiosResponseHeaders = RawAxiosResponseHeaders & AxiosHeaders; + + interface AxiosRequestTransformer { + (this: InternalAxiosRequestConfig, data: any, headers: AxiosRequestHeaders): any; + } + + interface AxiosResponseTransformer { + ( + this: InternalAxiosRequestConfig, + data: any, + headers: AxiosResponseHeaders, + status?: number + ): any; + } + + interface AxiosAdapter { + (config: InternalAxiosRequestConfig): AxiosPromise; + } + + interface AxiosBasicCredentials { + username: string; + password: string; + } + + interface AxiosProxyConfig { + host: string; + port: number; + auth?: AxiosBasicCredentials; + protocol?: string; + } + + type Method = + | 'get' + | 'GET' + | 'delete' + | 'DELETE' + | 'head' + | 'HEAD' + | 'options' + | 'OPTIONS' + | 'post' + | 'POST' + | 'put' + | 'PUT' + | 'patch' + | 'PATCH' + | 'purge' + | 'PURGE' + | 'link' + | 'LINK' + | 'unlink' + | 'UNLINK'; + + type ResponseType = 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream' | 'formdata'; + + type responseEncoding = + | 'ascii' + | 'ASCII' + | 'ansi' + | 'ANSI' + | 'binary' + | 'BINARY' + | 'base64' + | 'BASE64' + | 'base64url' + | 'BASE64URL' + | 'hex' + | 'HEX' + | 'latin1' + | 'LATIN1' + | 'ucs-2' + | 'UCS-2' + | 'ucs2' + | 'UCS2' + | 'utf-8' + | 'UTF-8' + | 'utf8' + | 'UTF8' + | 'utf16le' + | 'UTF16LE'; + + interface TransitionalOptions { + silentJSONParsing?: boolean; + forcedJSONParsing?: boolean; + clarifyTimeoutError?: boolean; + legacyInterceptorReqResOrdering?: boolean; + } + + interface GenericAbortSignal { + readonly aborted: boolean; + onabort?: ((...args: any) => any) | null; + addEventListener?: (...args: any) => any; + removeEventListener?: (...args: any) => any; + } + + interface FormDataVisitorHelpers { + defaultVisitor: SerializerVisitor; + convertValue: (value: any) => any; + isVisitable: (value: any) => boolean; + } + + interface SerializerVisitor { + ( + this: GenericFormData, + value: any, + key: string | number, + path: null | Array, + helpers: FormDataVisitorHelpers + ): boolean; + } + + interface SerializerOptions { + visitor?: SerializerVisitor; + dots?: boolean; + metaTokens?: boolean; + indexes?: boolean | null; + } + + // tslint:disable-next-line + interface FormSerializerOptions extends SerializerOptions {} + + interface ParamEncoder { + (value: any, defaultEncoder: (value: any) => any): any; + } + + interface CustomParamsSerializer { + (params: Record, options?: ParamsSerializerOptions): string; + } + + interface ParamsSerializerOptions extends SerializerOptions { + encode?: ParamEncoder; + serialize?: CustomParamsSerializer; + } + + type MaxUploadRate = number; + + type MaxDownloadRate = number; + + interface AxiosProgressEvent { + loaded: number; + total?: number; + progress?: number; + bytes: number; + rate?: number; + estimated?: number; + upload?: boolean; + download?: boolean; + event?: BrowserProgressEvent; + lengthComputable: boolean; + } + + type Milliseconds = number; + + type AxiosAdapterName = 'fetch' | 'xhr' | 'http' | (string & {}); + + type AxiosAdapterConfig = AxiosAdapter | AxiosAdapterName; + + type AddressFamily = 4 | 6 | undefined; + + interface LookupAddressEntry { + address: string; + family?: AddressFamily; + } + + type LookupAddress = string | LookupAddressEntry; + + interface AxiosRequestConfig { + url?: string; + method?: Method | string; + baseURL?: string; + allowAbsoluteUrls?: boolean; + transformRequest?: AxiosRequestTransformer | AxiosRequestTransformer[]; + transformResponse?: AxiosResponseTransformer | AxiosResponseTransformer[]; + headers?: (RawAxiosRequestHeaders & MethodsHeaders) | AxiosHeaders; + params?: any; + paramsSerializer?: ParamsSerializerOptions | CustomParamsSerializer; + data?: D; + timeout?: Milliseconds; + timeoutErrorMessage?: string; + withCredentials?: boolean; + adapter?: AxiosAdapterConfig | AxiosAdapterConfig[]; + auth?: AxiosBasicCredentials; + responseType?: ResponseType; + responseEncoding?: responseEncoding | string; + xsrfCookieName?: string; + xsrfHeaderName?: string; + onUploadProgress?: (progressEvent: AxiosProgressEvent) => void; + onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void; + maxContentLength?: number; + validateStatus?: ((status: number) => boolean) | null; + maxBodyLength?: number; + maxRedirects?: number; + maxRate?: number | [MaxUploadRate, MaxDownloadRate]; + beforeRedirect?: ( + options: Record, + responseDetails: { headers: Record; statusCode: HttpStatusCode } + ) => void; + socketPath?: string | null; + transport?: any; + httpAgent?: any; + httpsAgent?: any; + proxy?: AxiosProxyConfig | false; + cancelToken?: CancelToken; + decompress?: boolean; + transitional?: TransitionalOptions; + signal?: GenericAbortSignal; + insecureHTTPParser?: boolean; + env?: { + FormData?: new (...args: any[]) => object; + fetch?: (input: URL | Request | string, init?: RequestInit) => Promise; + Request?: new (input: URL | Request | string, init?: RequestInit) => Request; + Response?: new ( + body?: ArrayBuffer | ArrayBufferView | Blob | FormData | URLSearchParams | string | null, + init?: ResponseInit + ) => Response; + }; + formSerializer?: FormSerializerOptions; + family?: AddressFamily; + lookup?: + | (( + hostname: string, + options: object, + cb: ( + err: Error | null, + address: LookupAddress | LookupAddress[], + family?: AddressFamily + ) => void + ) => void) + | (( + hostname: string, + options: object + ) => Promise< + | [address: LookupAddressEntry | LookupAddressEntry[], family?: AddressFamily] + | LookupAddress + >); + withXSRFToken?: boolean | ((config: InternalAxiosRequestConfig) => boolean | undefined); + fetchOptions?: + | Omit + | Record; + httpVersion?: 1 | 2; + http2Options?: Record & { + sessionTimeout?: number; + }; + } + + // Alias + type RawAxiosRequestConfig = AxiosRequestConfig; + + interface InternalAxiosRequestConfig extends AxiosRequestConfig { + headers: AxiosRequestHeaders; + } + + interface HeadersDefaults { + common: RawAxiosRequestHeaders; + delete: RawAxiosRequestHeaders; + get: RawAxiosRequestHeaders; + head: RawAxiosRequestHeaders; + post: RawAxiosRequestHeaders; + put: RawAxiosRequestHeaders; + patch: RawAxiosRequestHeaders; + options?: RawAxiosRequestHeaders; + purge?: RawAxiosRequestHeaders; + link?: RawAxiosRequestHeaders; + unlink?: RawAxiosRequestHeaders; + } + + interface AxiosDefaults extends Omit, 'headers'> { + headers: HeadersDefaults; + } + + interface CreateAxiosDefaults extends Omit, 'headers'> { + headers?: RawAxiosRequestHeaders | AxiosHeaders | Partial; + } + + interface AxiosResponse { + data: T; + status: number; + statusText: string; + headers: (H & RawAxiosResponseHeaders) | AxiosResponseHeaders; + config: InternalAxiosRequestConfig; + request?: any; + } + + type AxiosPromise = Promise>; + + interface CancelStatic { + new (message?: string): Cancel; + } + + interface Cancel { + message: string | undefined; + } + + interface Canceler { + (message?: string, config?: AxiosRequestConfig, request?: any): void; + } + + interface CancelTokenStatic { + new (executor: (cancel: Canceler) => void): CancelToken; + source(): CancelTokenSource; + } + + interface CancelToken { + promise: Promise; + reason?: Cancel; + throwIfRequested(): void; + } + + interface CancelTokenSource { + token: CancelToken; + cancel: Canceler; + } + + interface AxiosInterceptorOptions { + synchronous?: boolean; + runWhen?: (config: InternalAxiosRequestConfig) => boolean; + } + + type AxiosInterceptorFulfilled = (value: T) => T | Promise; + type AxiosInterceptorRejected = (error: any) => any; + + type AxiosRequestInterceptorUse = ( + onFulfilled?: AxiosInterceptorFulfilled | null, + onRejected?: AxiosInterceptorRejected | null, + options?: AxiosInterceptorOptions + ) => number; + + type AxiosResponseInterceptorUse = ( + onFulfilled?: AxiosInterceptorFulfilled | null, + onRejected?: AxiosInterceptorRejected | null + ) => number; + + interface AxiosInterceptorHandler { + fulfilled: AxiosInterceptorFulfilled; + rejected?: AxiosInterceptorRejected; + synchronous: boolean; + runWhen?: (config: AxiosRequestConfig) => boolean; + } + + interface AxiosInterceptorManager { + use: V extends AxiosResponse ? AxiosResponseInterceptorUse : AxiosRequestInterceptorUse; + eject(id: number): void; + clear(): void; + handlers?: Array>; + } + + interface AxiosInstance extends Axios { + , D = any>(config: AxiosRequestConfig): Promise; + , D = any>( + url: string, + config?: AxiosRequestConfig + ): Promise; + + create(config?: CreateAxiosDefaults): AxiosInstance; + defaults: Omit & { + headers: HeadersDefaults & { + [key: string]: AxiosHeaderValue; + }; + }; + } + + interface GenericFormData { + append(name: string, value: any, options?: any): any; + } + + interface GenericHTMLFormElement { + name: string; + method: string; + submit(): void; + } + + interface AxiosStatic extends AxiosInstance { + Cancel: CancelStatic; + CancelToken: CancelTokenStatic; + Axios: typeof Axios; + AxiosError: typeof AxiosError; + CanceledError: typeof CanceledError; + HttpStatusCode: typeof HttpStatusCode; + readonly VERSION: string; + isCancel(value: any): value is Cancel; + all(values: Array>): Promise; + spread(callback: (...args: T[]) => R): (array: T[]) => R; + isAxiosError(payload: any): payload is AxiosError; + toFormData( + sourceObj: object, + targetFormData?: GenericFormData, + options?: FormSerializerOptions + ): GenericFormData; + formToJSON(form: GenericFormData | GenericHTMLFormElement): object; + getAdapter(adapters: AxiosAdapterConfig | AxiosAdapterConfig[] | undefined): AxiosAdapter; + AxiosHeaders: typeof AxiosHeaders; + mergeConfig( + config1: AxiosRequestConfig, + config2: AxiosRequestConfig + ): AxiosRequestConfig; + } +} + +declare const axios: axios.AxiosStatic; + +export = axios; diff --git a/node_modules/axios/index.d.ts b/node_modules/axios/index.d.ts new file mode 100644 index 0000000..e9bdcd7 --- /dev/null +++ b/node_modules/axios/index.d.ts @@ -0,0 +1,810 @@ +// TypeScript Version: 4.7 +type StringLiteralsOrString = Literals | (string & {}); + +export type AxiosHeaderValue = + | AxiosHeaders + | string + | string[] + | number + | boolean + | null; + +interface RawAxiosHeaders { + [key: string]: AxiosHeaderValue; +} + +type MethodsHeaders = Partial< + { + [Key in Method as Lowercase]: AxiosHeaders; + } & { common: AxiosHeaders } +>; + +type AxiosHeaderMatcher = + | string + | RegExp + | ((this: AxiosHeaders, value: string, name: string) => boolean); + +type AxiosHeaderParser = ( + this: AxiosHeaders, + value: AxiosHeaderValue, + header: string, +) => any; + +export class AxiosHeaders { + constructor(headers?: RawAxiosHeaders | AxiosHeaders | string); + + [key: string]: any; + + set( + headerName?: string, + value?: AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher, + ): AxiosHeaders; + set( + headers?: RawAxiosHeaders | AxiosHeaders | string, + rewrite?: boolean, + ): AxiosHeaders; + + get(headerName: string, parser: RegExp): RegExpExecArray | null; + get(headerName: string, matcher?: true | AxiosHeaderParser): AxiosHeaderValue; + + has(header: string, matcher?: AxiosHeaderMatcher): boolean; + + delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean; + + clear(matcher?: AxiosHeaderMatcher): boolean; + + normalize(format: boolean): AxiosHeaders; + + concat( + ...targets: Array< + AxiosHeaders | RawAxiosHeaders | string | undefined | null + > + ): AxiosHeaders; + + toJSON(asStrings?: boolean): RawAxiosHeaders; + + static from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders; + + static accessor(header: string | string[]): AxiosHeaders; + + static concat( + ...targets: Array< + AxiosHeaders | RawAxiosHeaders | string | undefined | null + > + ): AxiosHeaders; + + setContentType( + value: ContentType, + rewrite?: boolean | AxiosHeaderMatcher, + ): AxiosHeaders; + getContentType(parser?: RegExp): RegExpExecArray | null; + getContentType(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasContentType(matcher?: AxiosHeaderMatcher): boolean; + + setContentLength( + value: AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher, + ): AxiosHeaders; + getContentLength(parser?: RegExp): RegExpExecArray | null; + getContentLength(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasContentLength(matcher?: AxiosHeaderMatcher): boolean; + + setAccept( + value: AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher, + ): AxiosHeaders; + getAccept(parser?: RegExp): RegExpExecArray | null; + getAccept(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasAccept(matcher?: AxiosHeaderMatcher): boolean; + + setUserAgent( + value: AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher, + ): AxiosHeaders; + getUserAgent(parser?: RegExp): RegExpExecArray | null; + getUserAgent(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasUserAgent(matcher?: AxiosHeaderMatcher): boolean; + + setContentEncoding( + value: AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher, + ): AxiosHeaders; + getContentEncoding(parser?: RegExp): RegExpExecArray | null; + getContentEncoding(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasContentEncoding(matcher?: AxiosHeaderMatcher): boolean; + + setAuthorization( + value: AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher, + ): AxiosHeaders; + getAuthorization(parser?: RegExp): RegExpExecArray | null; + getAuthorization(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasAuthorization(matcher?: AxiosHeaderMatcher): boolean; + + getSetCookie(): string[]; + + [Symbol.iterator](): IterableIterator<[string, AxiosHeaderValue]>; +} + +type CommonRequestHeadersList = + | "Accept" + | "Content-Length" + | "User-Agent" + | "Content-Encoding" + | "Authorization"; + +type ContentType = + | AxiosHeaderValue + | "text/html" + | "text/plain" + | "multipart/form-data" + | "application/json" + | "application/x-www-form-urlencoded" + | "application/octet-stream"; + +export type RawAxiosRequestHeaders = Partial< + RawAxiosHeaders & { + [Key in CommonRequestHeadersList]: AxiosHeaderValue; + } & { + "Content-Type": ContentType; + } +>; + +export type AxiosRequestHeaders = RawAxiosRequestHeaders & AxiosHeaders; + +type CommonResponseHeadersList = + | "Server" + | "Content-Type" + | "Content-Length" + | "Cache-Control" + | "Content-Encoding"; + +type RawCommonResponseHeaders = { + [Key in CommonResponseHeadersList]: AxiosHeaderValue; +} & { + "set-cookie": string[]; +}; + +export type RawAxiosResponseHeaders = Partial< + RawAxiosHeaders & RawCommonResponseHeaders +>; + +export type AxiosResponseHeaders = RawAxiosResponseHeaders & AxiosHeaders; + +export interface AxiosRequestTransformer { + ( + this: InternalAxiosRequestConfig, + data: any, + headers: AxiosRequestHeaders, + ): any; +} + +export interface AxiosResponseTransformer { + ( + this: InternalAxiosRequestConfig, + data: any, + headers: AxiosResponseHeaders, + status?: number, + ): any; +} + +export interface AxiosAdapter { + (config: InternalAxiosRequestConfig): AxiosPromise; +} + +export interface AxiosBasicCredentials { + username: string; + password: string; +} + +export interface AxiosProxyConfig { + host: string; + port: number; + auth?: AxiosBasicCredentials; + protocol?: string; +} + +export enum HttpStatusCode { + Continue = 100, + SwitchingProtocols = 101, + Processing = 102, + EarlyHints = 103, + Ok = 200, + Created = 201, + Accepted = 202, + NonAuthoritativeInformation = 203, + NoContent = 204, + ResetContent = 205, + PartialContent = 206, + MultiStatus = 207, + AlreadyReported = 208, + ImUsed = 226, + MultipleChoices = 300, + MovedPermanently = 301, + Found = 302, + SeeOther = 303, + NotModified = 304, + UseProxy = 305, + Unused = 306, + TemporaryRedirect = 307, + PermanentRedirect = 308, + BadRequest = 400, + Unauthorized = 401, + PaymentRequired = 402, + Forbidden = 403, + NotFound = 404, + MethodNotAllowed = 405, + NotAcceptable = 406, + ProxyAuthenticationRequired = 407, + RequestTimeout = 408, + Conflict = 409, + Gone = 410, + LengthRequired = 411, + PreconditionFailed = 412, + PayloadTooLarge = 413, + UriTooLong = 414, + UnsupportedMediaType = 415, + RangeNotSatisfiable = 416, + ExpectationFailed = 417, + ImATeapot = 418, + MisdirectedRequest = 421, + UnprocessableEntity = 422, + Locked = 423, + FailedDependency = 424, + TooEarly = 425, + UpgradeRequired = 426, + PreconditionRequired = 428, + TooManyRequests = 429, + RequestHeaderFieldsTooLarge = 431, + UnavailableForLegalReasons = 451, + InternalServerError = 500, + NotImplemented = 501, + BadGateway = 502, + ServiceUnavailable = 503, + GatewayTimeout = 504, + HttpVersionNotSupported = 505, + VariantAlsoNegotiates = 506, + InsufficientStorage = 507, + LoopDetected = 508, + NotExtended = 510, + NetworkAuthenticationRequired = 511, +} + +export type Method = + | "get" + | "GET" + | "delete" + | "DELETE" + | "head" + | "HEAD" + | "options" + | "OPTIONS" + | "post" + | "POST" + | "put" + | "PUT" + | "patch" + | "PATCH" + | "purge" + | "PURGE" + | "link" + | "LINK" + | "unlink" + | "UNLINK"; + +export type ResponseType = + | "arraybuffer" + | "blob" + | "document" + | "json" + | "text" + | "stream" + | "formdata"; + +export type responseEncoding = + | "ascii" + | "ASCII" + | "ansi" + | "ANSI" + | "binary" + | "BINARY" + | "base64" + | "BASE64" + | "base64url" + | "BASE64URL" + | "hex" + | "HEX" + | "latin1" + | "LATIN1" + | "ucs-2" + | "UCS-2" + | "ucs2" + | "UCS2" + | "utf-8" + | "UTF-8" + | "utf8" + | "UTF8" + | "utf16le" + | "UTF16LE"; + +export interface TransitionalOptions { + silentJSONParsing?: boolean; + forcedJSONParsing?: boolean; + clarifyTimeoutError?: boolean; + legacyInterceptorReqResOrdering?: boolean; +} + +export interface GenericAbortSignal { + readonly aborted: boolean; + onabort?: ((...args: any) => any) | null; + addEventListener?: (...args: any) => any; + removeEventListener?: (...args: any) => any; +} + +export interface FormDataVisitorHelpers { + defaultVisitor: SerializerVisitor; + convertValue: (value: any) => any; + isVisitable: (value: any) => boolean; +} + +export interface SerializerVisitor { + ( + this: GenericFormData, + value: any, + key: string | number, + path: null | Array, + helpers: FormDataVisitorHelpers, + ): boolean; +} + +export interface SerializerOptions { + visitor?: SerializerVisitor; + dots?: boolean; + metaTokens?: boolean; + indexes?: boolean | null; +} + +// tslint:disable-next-line +export interface FormSerializerOptions extends SerializerOptions {} + +export interface ParamEncoder { + (value: any, defaultEncoder: (value: any) => any): any; +} + +export interface CustomParamsSerializer { + (params: Record, options?: ParamsSerializerOptions): string; +} + +export interface ParamsSerializerOptions extends SerializerOptions { + encode?: ParamEncoder; + serialize?: CustomParamsSerializer; +} + +type MaxUploadRate = number; + +type MaxDownloadRate = number; + +type BrowserProgressEvent = any; + +export interface AxiosProgressEvent { + loaded: number; + total?: number; + progress?: number; + bytes: number; + rate?: number; + estimated?: number; + upload?: boolean; + download?: boolean; + event?: BrowserProgressEvent; + lengthComputable: boolean; +} + +type Milliseconds = number; + +type AxiosAdapterName = StringLiteralsOrString<"xhr" | "http" | "fetch">; + +type AxiosAdapterConfig = AxiosAdapter | AxiosAdapterName; + +export type AddressFamily = 4 | 6 | undefined; + +export interface LookupAddressEntry { + address: string; + family?: AddressFamily; +} + +export type LookupAddress = string | LookupAddressEntry; + +export interface AxiosRequestConfig { + url?: string; + method?: StringLiteralsOrString; + baseURL?: string; + allowAbsoluteUrls?: boolean; + transformRequest?: AxiosRequestTransformer | AxiosRequestTransformer[]; + transformResponse?: AxiosResponseTransformer | AxiosResponseTransformer[]; + headers?: (RawAxiosRequestHeaders & MethodsHeaders) | AxiosHeaders; + params?: any; + paramsSerializer?: ParamsSerializerOptions | CustomParamsSerializer; + data?: D; + timeout?: Milliseconds; + timeoutErrorMessage?: string; + withCredentials?: boolean; + adapter?: AxiosAdapterConfig | AxiosAdapterConfig[]; + auth?: AxiosBasicCredentials; + responseType?: ResponseType; + responseEncoding?: StringLiteralsOrString; + xsrfCookieName?: string; + xsrfHeaderName?: string; + onUploadProgress?: (progressEvent: AxiosProgressEvent) => void; + onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void; + maxContentLength?: number; + validateStatus?: ((status: number) => boolean) | null; + maxBodyLength?: number; + maxRedirects?: number; + maxRate?: number | [MaxUploadRate, MaxDownloadRate]; + beforeRedirect?: ( + options: Record, + responseDetails: { + headers: Record; + statusCode: HttpStatusCode; + }, + ) => void; + socketPath?: string | null; + transport?: any; + httpAgent?: any; + httpsAgent?: any; + proxy?: AxiosProxyConfig | false; + cancelToken?: CancelToken | undefined; + decompress?: boolean; + transitional?: TransitionalOptions; + signal?: GenericAbortSignal; + insecureHTTPParser?: boolean; + env?: { + FormData?: new (...args: any[]) => object; + fetch?: ( + input: URL | Request | string, + init?: RequestInit, + ) => Promise; + Request?: new ( + input: URL | Request | string, + init?: RequestInit, + ) => Request; + Response?: new ( + body?: + | ArrayBuffer + | ArrayBufferView + | Blob + | FormData + | URLSearchParams + | string + | null, + init?: ResponseInit, + ) => Response; + }; + formSerializer?: FormSerializerOptions; + family?: AddressFamily; + lookup?: + | (( + hostname: string, + options: object, + cb: ( + err: Error | null, + address: LookupAddress | LookupAddress[], + family?: AddressFamily, + ) => void, + ) => void) + | (( + hostname: string, + options: object, + ) => Promise< + | [ + address: LookupAddressEntry | LookupAddressEntry[], + family?: AddressFamily, + ] + | LookupAddress + >); + withXSRFToken?: + | boolean + | ((config: InternalAxiosRequestConfig) => boolean | undefined); + parseReviver?: (this: any, key: string, value: any) => any; + fetchOptions?: + | Omit + | Record; + httpVersion?: 1 | 2; + http2Options?: Record & { + sessionTimeout?: number; + }; +} + +// Alias +export type RawAxiosRequestConfig = AxiosRequestConfig; + +export interface InternalAxiosRequestConfig< + D = any, +> extends AxiosRequestConfig { + headers: AxiosRequestHeaders; +} + +export interface HeadersDefaults { + common: RawAxiosRequestHeaders; + delete: RawAxiosRequestHeaders; + get: RawAxiosRequestHeaders; + head: RawAxiosRequestHeaders; + post: RawAxiosRequestHeaders; + put: RawAxiosRequestHeaders; + patch: RawAxiosRequestHeaders; + options?: RawAxiosRequestHeaders; + purge?: RawAxiosRequestHeaders; + link?: RawAxiosRequestHeaders; + unlink?: RawAxiosRequestHeaders; +} + +export interface AxiosDefaults extends Omit< + AxiosRequestConfig, + "headers" +> { + headers: HeadersDefaults; +} + +export interface CreateAxiosDefaults extends Omit< + AxiosRequestConfig, + "headers" +> { + headers?: RawAxiosRequestHeaders | AxiosHeaders | Partial; +} + +export interface AxiosResponse { + data: T; + status: number; + statusText: string; + headers: (H & RawAxiosResponseHeaders) | AxiosResponseHeaders; + config: InternalAxiosRequestConfig; + request?: any; +} + +export class AxiosError extends Error { + constructor( + message?: string, + code?: string, + config?: InternalAxiosRequestConfig, + request?: any, + response?: AxiosResponse, + ); + + config?: InternalAxiosRequestConfig; + code?: string; + request?: any; + response?: AxiosResponse; + isAxiosError: boolean; + status?: number; + toJSON: () => object; + cause?: Error; + event?: BrowserProgressEvent; + static from( + error: Error | unknown, + code?: string, + config?: InternalAxiosRequestConfig, + request?: any, + response?: AxiosResponse, + customProps?: object, + ): AxiosError; + static readonly ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS"; + static readonly ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE"; + static readonly ERR_BAD_OPTION = "ERR_BAD_OPTION"; + static readonly ERR_NETWORK = "ERR_NETWORK"; + static readonly ERR_DEPRECATED = "ERR_DEPRECATED"; + static readonly ERR_BAD_RESPONSE = "ERR_BAD_RESPONSE"; + static readonly ERR_BAD_REQUEST = "ERR_BAD_REQUEST"; + static readonly ERR_NOT_SUPPORT = "ERR_NOT_SUPPORT"; + static readonly ERR_INVALID_URL = "ERR_INVALID_URL"; + static readonly ERR_CANCELED = "ERR_CANCELED"; + static readonly ECONNABORTED = "ECONNABORTED"; + static readonly ETIMEDOUT = "ETIMEDOUT"; +} + +export class CanceledError extends AxiosError { + readonly name: "CanceledError"; +} + +export type AxiosPromise = Promise>; + +export interface CancelStatic { + new (message?: string): Cancel; +} + +export interface Cancel { + message: string | undefined; +} + +export interface Canceler { + (message?: string, config?: AxiosRequestConfig, request?: any): void; +} + +export interface CancelTokenStatic { + new (executor: (cancel: Canceler) => void): CancelToken; + source(): CancelTokenSource; +} + +export interface CancelToken { + promise: Promise; + reason?: Cancel; + throwIfRequested(): void; +} + +export interface CancelTokenSource { + token: CancelToken; + cancel: Canceler; +} + +export interface AxiosInterceptorOptions { + synchronous?: boolean; + runWhen?: (config: InternalAxiosRequestConfig) => boolean; +} + +type AxiosInterceptorFulfilled = (value: T) => T | Promise; +type AxiosInterceptorRejected = (error: any) => any; + +type AxiosRequestInterceptorUse = ( + onFulfilled?: AxiosInterceptorFulfilled | null, + onRejected?: AxiosInterceptorRejected | null, + options?: AxiosInterceptorOptions, +) => number; + +type AxiosResponseInterceptorUse = ( + onFulfilled?: AxiosInterceptorFulfilled | null, + onRejected?: AxiosInterceptorRejected | null, +) => number; + +interface AxiosInterceptorHandler { + fulfilled: AxiosInterceptorFulfilled; + rejected?: AxiosInterceptorRejected; + synchronous: boolean; + runWhen: (config: AxiosRequestConfig) => boolean | null; +} + +export interface AxiosInterceptorManager { + use: V extends AxiosResponse + ? AxiosResponseInterceptorUse + : AxiosRequestInterceptorUse; + eject(id: number): void; + clear(): void; + handlers?: Array>; +} + +export class Axios { + constructor(config?: AxiosRequestConfig); + defaults: AxiosDefaults; + interceptors: { + request: AxiosInterceptorManager; + response: AxiosInterceptorManager; + }; + getUri(config?: AxiosRequestConfig): string; + request, D = any>( + config: AxiosRequestConfig, + ): Promise; + get, D = any>( + url: string, + config?: AxiosRequestConfig, + ): Promise; + delete, D = any>( + url: string, + config?: AxiosRequestConfig, + ): Promise; + head, D = any>( + url: string, + config?: AxiosRequestConfig, + ): Promise; + options, D = any>( + url: string, + config?: AxiosRequestConfig, + ): Promise; + post, D = any>( + url: string, + data?: D, + config?: AxiosRequestConfig, + ): Promise; + put, D = any>( + url: string, + data?: D, + config?: AxiosRequestConfig, + ): Promise; + patch, D = any>( + url: string, + data?: D, + config?: AxiosRequestConfig, + ): Promise; + postForm, D = any>( + url: string, + data?: D, + config?: AxiosRequestConfig, + ): Promise; + putForm, D = any>( + url: string, + data?: D, + config?: AxiosRequestConfig, + ): Promise; + patchForm, D = any>( + url: string, + data?: D, + config?: AxiosRequestConfig, + ): Promise; +} + +export interface AxiosInstance extends Axios { + , D = any>( + config: AxiosRequestConfig, + ): Promise; + , D = any>( + url: string, + config?: AxiosRequestConfig, + ): Promise; + + create(config?: CreateAxiosDefaults): AxiosInstance; + defaults: Omit & { + headers: HeadersDefaults & { + [key: string]: AxiosHeaderValue; + }; + }; +} + +export interface GenericFormData { + append(name: string, value: any, options?: any): any; +} + +export interface GenericHTMLFormElement { + name: string; + method: string; + submit(): void; +} + +export function getAdapter( + adapters: AxiosAdapterConfig | AxiosAdapterConfig[] | undefined, +): AxiosAdapter; + +export function toFormData( + sourceObj: object, + targetFormData?: GenericFormData, + options?: FormSerializerOptions, +): GenericFormData; + +export function formToJSON( + form: GenericFormData | GenericHTMLFormElement, +): object; + +export function isAxiosError( + payload: any, +): payload is AxiosError; + +export function spread(callback: (...args: T[]) => R): (array: T[]) => R; + +export function isCancel(value: any): value is CanceledError; + +export function all(values: Array>): Promise; + +export function mergeConfig( + config1: AxiosRequestConfig, + config2: AxiosRequestConfig, +): AxiosRequestConfig; + +export interface AxiosStatic extends AxiosInstance { + Cancel: CancelStatic; + CancelToken: CancelTokenStatic; + Axios: typeof Axios; + AxiosError: typeof AxiosError; + HttpStatusCode: typeof HttpStatusCode; + readonly VERSION: string; + isCancel: typeof isCancel; + all: typeof all; + spread: typeof spread; + isAxiosError: typeof isAxiosError; + toFormData: typeof toFormData; + formToJSON: typeof formToJSON; + getAdapter: typeof getAdapter; + CanceledError: typeof CanceledError; + AxiosHeaders: typeof AxiosHeaders; + mergeConfig: typeof mergeConfig; +} + +declare const axios: AxiosStatic; + +export default axios; diff --git a/node_modules/axios/index.js b/node_modules/axios/index.js new file mode 100644 index 0000000..7dbe23b --- /dev/null +++ b/node_modules/axios/index.js @@ -0,0 +1,43 @@ +import axios from './lib/axios.js'; + +// This module is intended to unwrap Axios default export as named. +// Keep top-level export same with static properties +// so that it can keep same with es module or cjs +const { + Axios, + AxiosError, + CanceledError, + isCancel, + CancelToken, + VERSION, + all, + Cancel, + isAxiosError, + spread, + toFormData, + AxiosHeaders, + HttpStatusCode, + formToJSON, + getAdapter, + mergeConfig, +} = axios; + +export { + axios as default, + Axios, + AxiosError, + CanceledError, + isCancel, + CancelToken, + VERSION, + all, + Cancel, + isAxiosError, + spread, + toFormData, + AxiosHeaders, + HttpStatusCode, + formToJSON, + getAdapter, + mergeConfig, +}; diff --git a/node_modules/axios/lib/adapters/README.md b/node_modules/axios/lib/adapters/README.md new file mode 100644 index 0000000..8d9dd97 --- /dev/null +++ b/node_modules/axios/lib/adapters/README.md @@ -0,0 +1,36 @@ +# axios // adapters + +The modules under `adapters/` are modules that handle dispatching a request and settling a returned `Promise` once a response is received. + +## Example + +```js +var settle = require('../core/settle'); + +module.exports = function myAdapter(config) { + // At this point: + // - config has been merged with defaults + // - request transformers have already run + // - request interceptors have already run + + // Make the request using config provided + // Upon response settle the Promise + + return new Promise(function (resolve, reject) { + var response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config: config, + request: request, + }; + + settle(resolve, reject, response); + + // From here: + // - response transformers will run + // - response interceptors will run + }); +}; +``` diff --git a/node_modules/axios/lib/adapters/adapters.js b/node_modules/axios/lib/adapters/adapters.js new file mode 100644 index 0000000..5d18745 --- /dev/null +++ b/node_modules/axios/lib/adapters/adapters.js @@ -0,0 +1,130 @@ +import utils from '../utils.js'; +import httpAdapter from './http.js'; +import xhrAdapter from './xhr.js'; +import * as fetchAdapter from './fetch.js'; +import AxiosError from '../core/AxiosError.js'; + +/** + * Known adapters mapping. + * Provides environment-specific adapters for Axios: + * - `http` for Node.js + * - `xhr` for browsers + * - `fetch` for fetch API-based requests + * + * @type {Object} + */ +const knownAdapters = { + http: httpAdapter, + xhr: xhrAdapter, + fetch: { + get: fetchAdapter.getFetch, + }, +}; + +// Assign adapter names for easier debugging and identification +utils.forEach(knownAdapters, (fn, value) => { + if (fn) { + try { + Object.defineProperty(fn, 'name', { value }); + } catch (e) { + // eslint-disable-next-line no-empty + } + Object.defineProperty(fn, 'adapterName', { value }); + } +}); + +/** + * Render a rejection reason string for unknown or unsupported adapters + * + * @param {string} reason + * @returns {string} + */ +const renderReason = (reason) => `- ${reason}`; + +/** + * Check if the adapter is resolved (function, null, or false) + * + * @param {Function|null|false} adapter + * @returns {boolean} + */ +const isResolvedHandle = (adapter) => + utils.isFunction(adapter) || adapter === null || adapter === false; + +/** + * Get the first suitable adapter from the provided list. + * Tries each adapter in order until a supported one is found. + * Throws an AxiosError if no adapter is suitable. + * + * @param {Array|string|Function} adapters - Adapter(s) by name or function. + * @param {Object} config - Axios request configuration + * @throws {AxiosError} If no suitable adapter is available + * @returns {Function} The resolved adapter function + */ +function getAdapter(adapters, config) { + adapters = utils.isArray(adapters) ? adapters : [adapters]; + + const { length } = adapters; + let nameOrAdapter; + let adapter; + + const rejectedReasons = {}; + + for (let i = 0; i < length; i++) { + nameOrAdapter = adapters[i]; + let id; + + adapter = nameOrAdapter; + + if (!isResolvedHandle(nameOrAdapter)) { + adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; + + if (adapter === undefined) { + throw new AxiosError(`Unknown adapter '${id}'`); + } + } + + if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) { + break; + } + + rejectedReasons[id || '#' + i] = adapter; + } + + if (!adapter) { + const reasons = Object.entries(rejectedReasons).map( + ([id, state]) => + `adapter ${id} ` + + (state === false ? 'is not supported by the environment' : 'is not available in the build') + ); + + let s = length + ? reasons.length > 1 + ? 'since :\n' + reasons.map(renderReason).join('\n') + : ' ' + renderReason(reasons[0]) + : 'as no adapter specified'; + + throw new AxiosError( + `There is no suitable adapter to dispatch the request ` + s, + 'ERR_NOT_SUPPORT' + ); + } + + return adapter; +} + +/** + * Exports Axios adapters and utility to resolve an adapter + */ +export default { + /** + * Resolve an adapter from a list of adapter names or functions. + * @type {Function} + */ + getAdapter, + + /** + * Exposes all known adapters + * @type {Object} + */ + adapters: knownAdapters, +}; diff --git a/node_modules/axios/lib/adapters/fetch.js b/node_modules/axios/lib/adapters/fetch.js new file mode 100644 index 0000000..99dedbc --- /dev/null +++ b/node_modules/axios/lib/adapters/fetch.js @@ -0,0 +1,334 @@ +import platform from '../platform/index.js'; +import utils from '../utils.js'; +import AxiosError from '../core/AxiosError.js'; +import composeSignals from '../helpers/composeSignals.js'; +import { trackStream } from '../helpers/trackStream.js'; +import AxiosHeaders from '../core/AxiosHeaders.js'; +import { + progressEventReducer, + progressEventDecorator, + asyncDecorator, +} from '../helpers/progressEventReducer.js'; +import resolveConfig from '../helpers/resolveConfig.js'; +import settle from '../core/settle.js'; + +const DEFAULT_CHUNK_SIZE = 64 * 1024; + +const { isFunction } = utils; + +const globalFetchAPI = (({ Request, Response }) => ({ + Request, + Response, +}))(utils.global); + +const { ReadableStream, TextEncoder } = utils.global; + +const test = (fn, ...args) => { + try { + return !!fn(...args); + } catch (e) { + return false; + } +}; + +const factory = (env) => { + env = utils.merge.call( + { + skipUndefined: true, + }, + globalFetchAPI, + env + ); + + const { fetch: envFetch, Request, Response } = env; + const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function'; + const isRequestSupported = isFunction(Request); + const isResponseSupported = isFunction(Response); + + if (!isFetchSupported) { + return false; + } + + const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream); + + const encodeText = + isFetchSupported && + (typeof TextEncoder === 'function' + ? ( + (encoder) => (str) => + encoder.encode(str) + )(new TextEncoder()) + : async (str) => new Uint8Array(await new Request(str).arrayBuffer())); + + const supportsRequestStream = + isRequestSupported && + isReadableStreamSupported && + test(() => { + let duplexAccessed = false; + + const hasContentType = new Request(platform.origin, { + body: new ReadableStream(), + method: 'POST', + get duplex() { + duplexAccessed = true; + return 'half'; + }, + }).headers.has('Content-Type'); + + return duplexAccessed && !hasContentType; + }); + + const supportsResponseStream = + isResponseSupported && + isReadableStreamSupported && + test(() => utils.isReadableStream(new Response('').body)); + + const resolvers = { + stream: supportsResponseStream && ((res) => res.body), + }; + + isFetchSupported && + (() => { + ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => { + !resolvers[type] && + (resolvers[type] = (res, config) => { + let method = res && res[type]; + + if (method) { + return method.call(res); + } + + throw new AxiosError( + `Response type '${type}' is not supported`, + AxiosError.ERR_NOT_SUPPORT, + config + ); + }); + }); + })(); + + const getBodyLength = async (body) => { + if (body == null) { + return 0; + } + + if (utils.isBlob(body)) { + return body.size; + } + + if (utils.isSpecCompliantForm(body)) { + const _request = new Request(platform.origin, { + method: 'POST', + body, + }); + return (await _request.arrayBuffer()).byteLength; + } + + if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) { + return body.byteLength; + } + + if (utils.isURLSearchParams(body)) { + body = body + ''; + } + + if (utils.isString(body)) { + return (await encodeText(body)).byteLength; + } + }; + + const resolveBodyLength = async (headers, body) => { + const length = utils.toFiniteNumber(headers.getContentLength()); + + return length == null ? getBodyLength(body) : length; + }; + + return async (config) => { + let { + url, + method, + data, + signal, + cancelToken, + timeout, + onDownloadProgress, + onUploadProgress, + responseType, + headers, + withCredentials = 'same-origin', + fetchOptions, + } = resolveConfig(config); + + let _fetch = envFetch || fetch; + + responseType = responseType ? (responseType + '').toLowerCase() : 'text'; + + let composedSignal = composeSignals( + [signal, cancelToken && cancelToken.toAbortSignal()], + timeout + ); + + let request = null; + + const unsubscribe = + composedSignal && + composedSignal.unsubscribe && + (() => { + composedSignal.unsubscribe(); + }); + + let requestContentLength; + + try { + if ( + onUploadProgress && + supportsRequestStream && + method !== 'get' && + method !== 'head' && + (requestContentLength = await resolveBodyLength(headers, data)) !== 0 + ) { + let _request = new Request(url, { + method: 'POST', + body: data, + duplex: 'half', + }); + + let contentTypeHeader; + + if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) { + headers.setContentType(contentTypeHeader); + } + + if (_request.body) { + const [onProgress, flush] = progressEventDecorator( + requestContentLength, + progressEventReducer(asyncDecorator(onUploadProgress)) + ); + + data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); + } + } + + if (!utils.isString(withCredentials)) { + withCredentials = withCredentials ? 'include' : 'omit'; + } + + // Cloudflare Workers throws when credentials are defined + // see https://github.com/cloudflare/workerd/issues/902 + const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype; + + const resolvedOptions = { + ...fetchOptions, + signal: composedSignal, + method: method.toUpperCase(), + headers: headers.normalize().toJSON(), + body: data, + duplex: 'half', + credentials: isCredentialsSupported ? withCredentials : undefined, + }; + + request = isRequestSupported && new Request(url, resolvedOptions); + + let response = await (isRequestSupported + ? _fetch(request, fetchOptions) + : _fetch(url, resolvedOptions)); + + const isStreamResponse = + supportsResponseStream && (responseType === 'stream' || responseType === 'response'); + + if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) { + const options = {}; + + ['status', 'statusText', 'headers'].forEach((prop) => { + options[prop] = response[prop]; + }); + + const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length')); + + const [onProgress, flush] = + (onDownloadProgress && + progressEventDecorator( + responseContentLength, + progressEventReducer(asyncDecorator(onDownloadProgress), true) + )) || + []; + + response = new Response( + trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { + flush && flush(); + unsubscribe && unsubscribe(); + }), + options + ); + } + + responseType = responseType || 'text'; + + let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text']( + response, + config + ); + + !isStreamResponse && unsubscribe && unsubscribe(); + + return await new Promise((resolve, reject) => { + settle(resolve, reject, { + data: responseData, + headers: AxiosHeaders.from(response.headers), + status: response.status, + statusText: response.statusText, + config, + request, + }); + }); + } catch (err) { + unsubscribe && unsubscribe(); + + if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) { + throw Object.assign( + new AxiosError( + 'Network Error', + AxiosError.ERR_NETWORK, + config, + request, + err && err.response + ), + { + cause: err.cause || err, + } + ); + } + + throw AxiosError.from(err, err && err.code, config, request, err && err.response); + } + }; +}; + +const seedCache = new Map(); + +export const getFetch = (config) => { + let env = (config && config.env) || {}; + const { fetch, Request, Response } = env; + const seeds = [Request, Response, fetch]; + + let len = seeds.length, + i = len, + seed, + target, + map = seedCache; + + while (i--) { + seed = seeds[i]; + target = map.get(seed); + + target === undefined && map.set(seed, (target = i ? new Map() : factory(env))); + + map = target; + } + + return target; +}; + +const adapter = getFetch(); + +export default adapter; diff --git a/node_modules/axios/lib/adapters/http.js b/node_modules/axios/lib/adapters/http.js new file mode 100644 index 0000000..20ba3cf --- /dev/null +++ b/node_modules/axios/lib/adapters/http.js @@ -0,0 +1,949 @@ +import utils from '../utils.js'; +import settle from '../core/settle.js'; +import buildFullPath from '../core/buildFullPath.js'; +import buildURL from '../helpers/buildURL.js'; +import proxyFromEnv from 'proxy-from-env'; +import http from 'http'; +import https from 'https'; +import http2 from 'http2'; +import util from 'util'; +import followRedirects from 'follow-redirects'; +import zlib from 'zlib'; +import { VERSION } from '../env/data.js'; +import transitionalDefaults from '../defaults/transitional.js'; +import AxiosError from '../core/AxiosError.js'; +import CanceledError from '../cancel/CanceledError.js'; +import platform from '../platform/index.js'; +import fromDataURI from '../helpers/fromDataURI.js'; +import stream from 'stream'; +import AxiosHeaders from '../core/AxiosHeaders.js'; +import AxiosTransformStream from '../helpers/AxiosTransformStream.js'; +import { EventEmitter } from 'events'; +import formDataToStream from '../helpers/formDataToStream.js'; +import readBlob from '../helpers/readBlob.js'; +import ZlibHeaderTransformStream from '../helpers/ZlibHeaderTransformStream.js'; +import callbackify from '../helpers/callbackify.js'; +import { + progressEventReducer, + progressEventDecorator, + asyncDecorator, +} from '../helpers/progressEventReducer.js'; +import estimateDataURLDecodedBytes from '../helpers/estimateDataURLDecodedBytes.js'; + +const zlibOptions = { + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH, +}; + +const brotliOptions = { + flush: zlib.constants.BROTLI_OPERATION_FLUSH, + finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH, +}; + +const isBrotliSupported = utils.isFunction(zlib.createBrotliDecompress); + +const { http: httpFollow, https: httpsFollow } = followRedirects; + +const isHttps = /https:?/; + +const supportedProtocols = platform.protocols.map((protocol) => { + return protocol + ':'; +}); + +const flushOnFinish = (stream, [throttled, flush]) => { + stream.on('end', flush).on('error', flush); + + return throttled; +}; + +class Http2Sessions { + constructor() { + this.sessions = Object.create(null); + } + + getSession(authority, options) { + options = Object.assign( + { + sessionTimeout: 1000, + }, + options + ); + + let authoritySessions = this.sessions[authority]; + + if (authoritySessions) { + let len = authoritySessions.length; + + for (let i = 0; i < len; i++) { + const [sessionHandle, sessionOptions] = authoritySessions[i]; + if ( + !sessionHandle.destroyed && + !sessionHandle.closed && + util.isDeepStrictEqual(sessionOptions, options) + ) { + return sessionHandle; + } + } + } + + const session = http2.connect(authority, options); + + let removed; + + const removeSession = () => { + if (removed) { + return; + } + + removed = true; + + let entries = authoritySessions, + len = entries.length, + i = len; + + while (i--) { + if (entries[i][0] === session) { + if (len === 1) { + delete this.sessions[authority]; + } else { + entries.splice(i, 1); + } + return; + } + } + }; + + const originalRequestFn = session.request; + + const { sessionTimeout } = options; + + if (sessionTimeout != null) { + let timer; + let streamsCount = 0; + + session.request = function () { + const stream = originalRequestFn.apply(this, arguments); + + streamsCount++; + + if (timer) { + clearTimeout(timer); + timer = null; + } + + stream.once('close', () => { + if (!--streamsCount) { + timer = setTimeout(() => { + timer = null; + removeSession(); + }, sessionTimeout); + } + }); + + return stream; + }; + } + + session.once('close', removeSession); + + let entry = [session, options]; + + authoritySessions + ? authoritySessions.push(entry) + : (authoritySessions = this.sessions[authority] = [entry]); + + return session; + } +} + +const http2Sessions = new Http2Sessions(); + +/** + * If the proxy or config beforeRedirects functions are defined, call them with the options + * object. + * + * @param {Object} options - The options object that was passed to the request. + * + * @returns {Object} + */ +function dispatchBeforeRedirect(options, responseDetails) { + if (options.beforeRedirects.proxy) { + options.beforeRedirects.proxy(options); + } + if (options.beforeRedirects.config) { + options.beforeRedirects.config(options, responseDetails); + } +} + +/** + * If the proxy or config afterRedirects functions are defined, call them with the options + * + * @param {http.ClientRequestArgs} options + * @param {AxiosProxyConfig} configProxy configuration from Axios options object + * @param {string} location + * + * @returns {http.ClientRequestArgs} + */ +function setProxy(options, configProxy, location) { + let proxy = configProxy; + if (!proxy && proxy !== false) { + const proxyUrl = proxyFromEnv.getProxyForUrl(location); + if (proxyUrl) { + proxy = new URL(proxyUrl); + } + } + if (proxy) { + // Basic proxy authorization + if (proxy.username) { + proxy.auth = (proxy.username || '') + ':' + (proxy.password || ''); + } + + if (proxy.auth) { + // Support proxy auth object form + const validProxyAuth = Boolean(proxy.auth.username || proxy.auth.password); + + if (validProxyAuth) { + proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || ''); + } else if (typeof proxy.auth === 'object') { + throw new AxiosError('Invalid proxy authorization', AxiosError.ERR_BAD_OPTION, { proxy }); + } + + const base64 = Buffer.from(proxy.auth, 'utf8').toString('base64'); + + options.headers['Proxy-Authorization'] = 'Basic ' + base64; + } + + options.headers.host = options.hostname + (options.port ? ':' + options.port : ''); + const proxyHost = proxy.hostname || proxy.host; + options.hostname = proxyHost; + // Replace 'host' since options is not a URL object + options.host = proxyHost; + options.port = proxy.port; + options.path = location; + if (proxy.protocol) { + options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`; + } + } + + options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) { + // Configure proxy for redirected request, passing the original config proxy to apply + // the exact same logic as if the redirected request was performed by axios directly. + setProxy(redirectOptions, configProxy, redirectOptions.href); + }; +} + +const isHttpAdapterSupported = + typeof process !== 'undefined' && utils.kindOf(process) === 'process'; + +// temporary hotfix + +const wrapAsync = (asyncExecutor) => { + return new Promise((resolve, reject) => { + let onDone; + let isDone; + + const done = (value, isRejected) => { + if (isDone) return; + isDone = true; + onDone && onDone(value, isRejected); + }; + + const _resolve = (value) => { + done(value); + resolve(value); + }; + + const _reject = (reason) => { + done(reason, true); + reject(reason); + }; + + asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject); + }); +}; + +const resolveFamily = ({ address, family }) => { + if (!utils.isString(address)) { + throw TypeError('address must be a string'); + } + return { + address, + family: family || (address.indexOf('.') < 0 ? 6 : 4), + }; +}; + +const buildAddressEntry = (address, family) => + resolveFamily(utils.isObject(address) ? address : { address, family }); + +const http2Transport = { + request(options, cb) { + const authority = + options.protocol + + '//' + + options.hostname + + ':' + + (options.port || (options.protocol === 'https:' ? 443 : 80)); + + const { http2Options, headers } = options; + + const session = http2Sessions.getSession(authority, http2Options); + + const { HTTP2_HEADER_SCHEME, HTTP2_HEADER_METHOD, HTTP2_HEADER_PATH, HTTP2_HEADER_STATUS } = + http2.constants; + + const http2Headers = { + [HTTP2_HEADER_SCHEME]: options.protocol.replace(':', ''), + [HTTP2_HEADER_METHOD]: options.method, + [HTTP2_HEADER_PATH]: options.path, + }; + + utils.forEach(headers, (header, name) => { + name.charAt(0) !== ':' && (http2Headers[name] = header); + }); + + const req = session.request(http2Headers); + + req.once('response', (responseHeaders) => { + const response = req; //duplex + + responseHeaders = Object.assign({}, responseHeaders); + + const status = responseHeaders[HTTP2_HEADER_STATUS]; + + delete responseHeaders[HTTP2_HEADER_STATUS]; + + response.headers = responseHeaders; + + response.statusCode = +status; + + cb(response); + }); + + return req; + }, +}; + +/*eslint consistent-return:0*/ +export default isHttpAdapterSupported && + function httpAdapter(config) { + return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { + let { data, lookup, family, httpVersion = 1, http2Options } = config; + const { responseType, responseEncoding } = config; + const method = config.method.toUpperCase(); + let isDone; + let rejected = false; + let req; + + httpVersion = +httpVersion; + + if (Number.isNaN(httpVersion)) { + throw TypeError(`Invalid protocol version: '${config.httpVersion}' is not a number`); + } + + if (httpVersion !== 1 && httpVersion !== 2) { + throw TypeError(`Unsupported protocol version '${httpVersion}'`); + } + + const isHttp2 = httpVersion === 2; + + if (lookup) { + const _lookup = callbackify(lookup, (value) => (utils.isArray(value) ? value : [value])); + // hotfix to support opt.all option which is required for node 20.x + lookup = (hostname, opt, cb) => { + _lookup(hostname, opt, (err, arg0, arg1) => { + if (err) { + return cb(err); + } + + const addresses = utils.isArray(arg0) + ? arg0.map((addr) => buildAddressEntry(addr)) + : [buildAddressEntry(arg0, arg1)]; + + opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family); + }); + }; + } + + const abortEmitter = new EventEmitter(); + + function abort(reason) { + try { + abortEmitter.emit( + 'abort', + !reason || reason.type ? new CanceledError(null, config, req) : reason + ); + } catch (err) { + console.warn('emit error', err); + } + } + + abortEmitter.once('abort', reject); + + const onFinished = () => { + if (config.cancelToken) { + config.cancelToken.unsubscribe(abort); + } + + if (config.signal) { + config.signal.removeEventListener('abort', abort); + } + + abortEmitter.removeAllListeners(); + }; + + if (config.cancelToken || config.signal) { + config.cancelToken && config.cancelToken.subscribe(abort); + if (config.signal) { + config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort); + } + } + + onDone((response, isRejected) => { + isDone = true; + + if (isRejected) { + rejected = true; + onFinished(); + return; + } + + const { data } = response; + + if (data instanceof stream.Readable || data instanceof stream.Duplex) { + const offListeners = stream.finished(data, () => { + offListeners(); + onFinished(); + }); + } else { + onFinished(); + } + }); + + // Parse url + const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); + const parsed = new URL(fullPath, platform.hasBrowserEnv ? platform.origin : undefined); + const protocol = parsed.protocol || supportedProtocols[0]; + + if (protocol === 'data:') { + // Apply the same semantics as HTTP: only enforce if a finite, non-negative cap is set. + if (config.maxContentLength > -1) { + // Use the exact string passed to fromDataURI (config.url); fall back to fullPath if needed. + const dataUrl = String(config.url || fullPath || ''); + const estimated = estimateDataURLDecodedBytes(dataUrl); + + if (estimated > config.maxContentLength) { + return reject( + new AxiosError( + 'maxContentLength size of ' + config.maxContentLength + ' exceeded', + AxiosError.ERR_BAD_RESPONSE, + config + ) + ); + } + } + + let convertedData; + + if (method !== 'GET') { + return settle(resolve, reject, { + status: 405, + statusText: 'method not allowed', + headers: {}, + config, + }); + } + + try { + convertedData = fromDataURI(config.url, responseType === 'blob', { + Blob: config.env && config.env.Blob, + }); + } catch (err) { + throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config); + } + + if (responseType === 'text') { + convertedData = convertedData.toString(responseEncoding); + + if (!responseEncoding || responseEncoding === 'utf8') { + convertedData = utils.stripBOM(convertedData); + } + } else if (responseType === 'stream') { + convertedData = stream.Readable.from(convertedData); + } + + return settle(resolve, reject, { + data: convertedData, + status: 200, + statusText: 'OK', + headers: new AxiosHeaders(), + config, + }); + } + + if (supportedProtocols.indexOf(protocol) === -1) { + return reject( + new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_BAD_REQUEST, config) + ); + } + + const headers = AxiosHeaders.from(config.headers).normalize(); + + // Set User-Agent (required by some servers) + // See https://github.com/axios/axios/issues/69 + // User-Agent is specified; handle case where no UA header is desired + // Only set header if it hasn't been set in config + headers.set('User-Agent', 'axios/' + VERSION, false); + + const { onUploadProgress, onDownloadProgress } = config; + const maxRate = config.maxRate; + let maxUploadRate = undefined; + let maxDownloadRate = undefined; + + // support for spec compliant FormData objects + if (utils.isSpecCompliantForm(data)) { + const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i); + + data = formDataToStream( + data, + (formHeaders) => { + headers.set(formHeaders); + }, + { + tag: `axios-${VERSION}-boundary`, + boundary: (userBoundary && userBoundary[1]) || undefined, + } + ); + // support for https://www.npmjs.com/package/form-data api + } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) { + headers.set(data.getHeaders()); + + if (!headers.hasContentLength()) { + try { + const knownLength = await util.promisify(data.getLength).call(data); + Number.isFinite(knownLength) && + knownLength >= 0 && + headers.setContentLength(knownLength); + /*eslint no-empty:0*/ + } catch (e) {} + } + } else if (utils.isBlob(data) || utils.isFile(data)) { + data.size && headers.setContentType(data.type || 'application/octet-stream'); + headers.setContentLength(data.size || 0); + data = stream.Readable.from(readBlob(data)); + } else if (data && !utils.isStream(data)) { + if (Buffer.isBuffer(data)) { + // Nothing to do... + } else if (utils.isArrayBuffer(data)) { + data = Buffer.from(new Uint8Array(data)); + } else if (utils.isString(data)) { + data = Buffer.from(data, 'utf-8'); + } else { + return reject( + new AxiosError( + 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', + AxiosError.ERR_BAD_REQUEST, + config + ) + ); + } + + // Add Content-Length header if data exists + headers.setContentLength(data.length, false); + + if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) { + return reject( + new AxiosError( + 'Request body larger than maxBodyLength limit', + AxiosError.ERR_BAD_REQUEST, + config + ) + ); + } + } + + const contentLength = utils.toFiniteNumber(headers.getContentLength()); + + if (utils.isArray(maxRate)) { + maxUploadRate = maxRate[0]; + maxDownloadRate = maxRate[1]; + } else { + maxUploadRate = maxDownloadRate = maxRate; + } + + if (data && (onUploadProgress || maxUploadRate)) { + if (!utils.isStream(data)) { + data = stream.Readable.from(data, { objectMode: false }); + } + + data = stream.pipeline( + [ + data, + new AxiosTransformStream({ + maxRate: utils.toFiniteNumber(maxUploadRate), + }), + ], + utils.noop + ); + + onUploadProgress && + data.on( + 'progress', + flushOnFinish( + data, + progressEventDecorator( + contentLength, + progressEventReducer(asyncDecorator(onUploadProgress), false, 3) + ) + ) + ); + } + + // HTTP basic authentication + let auth = undefined; + if (config.auth) { + const username = config.auth.username || ''; + const password = config.auth.password || ''; + auth = username + ':' + password; + } + + if (!auth && parsed.username) { + const urlUsername = parsed.username; + const urlPassword = parsed.password; + auth = urlUsername + ':' + urlPassword; + } + + auth && headers.delete('authorization'); + + let path; + + try { + path = buildURL( + parsed.pathname + parsed.search, + config.params, + config.paramsSerializer + ).replace(/^\?/, ''); + } catch (err) { + const customErr = new Error(err.message); + customErr.config = config; + customErr.url = config.url; + customErr.exists = true; + return reject(customErr); + } + + headers.set( + 'Accept-Encoding', + 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), + false + ); + + const options = { + path, + method: method, + headers: headers.toJSON(), + agents: { http: config.httpAgent, https: config.httpsAgent }, + auth, + protocol, + family, + beforeRedirect: dispatchBeforeRedirect, + beforeRedirects: {}, + http2Options, + }; + + // cacheable-lookup integration hotfix + !utils.isUndefined(lookup) && (options.lookup = lookup); + + if (config.socketPath) { + options.socketPath = config.socketPath; + } else { + options.hostname = parsed.hostname.startsWith('[') + ? parsed.hostname.slice(1, -1) + : parsed.hostname; + options.port = parsed.port; + setProxy( + options, + config.proxy, + protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path + ); + } + + let transport; + const isHttpsRequest = isHttps.test(options.protocol); + options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; + + if (isHttp2) { + transport = http2Transport; + } else { + if (config.transport) { + transport = config.transport; + } else if (config.maxRedirects === 0) { + transport = isHttpsRequest ? https : http; + } else { + if (config.maxRedirects) { + options.maxRedirects = config.maxRedirects; + } + if (config.beforeRedirect) { + options.beforeRedirects.config = config.beforeRedirect; + } + transport = isHttpsRequest ? httpsFollow : httpFollow; + } + } + + if (config.maxBodyLength > -1) { + options.maxBodyLength = config.maxBodyLength; + } else { + // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited + options.maxBodyLength = Infinity; + } + + if (config.insecureHTTPParser) { + options.insecureHTTPParser = config.insecureHTTPParser; + } + + // Create the request + req = transport.request(options, function handleResponse(res) { + if (req.destroyed) return; + + const streams = [res]; + + const responseLength = utils.toFiniteNumber(res.headers['content-length']); + + if (onDownloadProgress || maxDownloadRate) { + const transformStream = new AxiosTransformStream({ + maxRate: utils.toFiniteNumber(maxDownloadRate), + }); + + onDownloadProgress && + transformStream.on( + 'progress', + flushOnFinish( + transformStream, + progressEventDecorator( + responseLength, + progressEventReducer(asyncDecorator(onDownloadProgress), true, 3) + ) + ) + ); + + streams.push(transformStream); + } + + // decompress the response body transparently if required + let responseStream = res; + + // return the last request in case of redirects + const lastRequest = res.req || req; + + // if decompress disabled we should not decompress + if (config.decompress !== false && res.headers['content-encoding']) { + // if no content, but headers still say that it is encoded, + // remove the header not confuse downstream operations + if (method === 'HEAD' || res.statusCode === 204) { + delete res.headers['content-encoding']; + } + + switch ((res.headers['content-encoding'] || '').toLowerCase()) { + /*eslint default-case:0*/ + case 'gzip': + case 'x-gzip': + case 'compress': + case 'x-compress': + // add the unzipper to the body stream processing pipeline + streams.push(zlib.createUnzip(zlibOptions)); + + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + case 'deflate': + streams.push(new ZlibHeaderTransformStream()); + + // add the unzipper to the body stream processing pipeline + streams.push(zlib.createUnzip(zlibOptions)); + + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + case 'br': + if (isBrotliSupported) { + streams.push(zlib.createBrotliDecompress(brotliOptions)); + delete res.headers['content-encoding']; + } + } + } + + responseStream = streams.length > 1 ? stream.pipeline(streams, utils.noop) : streams[0]; + + const response = { + status: res.statusCode, + statusText: res.statusMessage, + headers: new AxiosHeaders(res.headers), + config, + request: lastRequest, + }; + + if (responseType === 'stream') { + response.data = responseStream; + settle(resolve, reject, response); + } else { + const responseBuffer = []; + let totalResponseBytes = 0; + + responseStream.on('data', function handleStreamData(chunk) { + responseBuffer.push(chunk); + totalResponseBytes += chunk.length; + + // make sure the content length is not over the maxContentLength if specified + if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) { + // stream.destroy() emit aborted event before calling reject() on Node.js v16 + rejected = true; + responseStream.destroy(); + abort( + new AxiosError( + 'maxContentLength size of ' + config.maxContentLength + ' exceeded', + AxiosError.ERR_BAD_RESPONSE, + config, + lastRequest + ) + ); + } + }); + + responseStream.on('aborted', function handlerStreamAborted() { + if (rejected) { + return; + } + + const err = new AxiosError( + 'stream has been aborted', + AxiosError.ERR_BAD_RESPONSE, + config, + lastRequest + ); + responseStream.destroy(err); + reject(err); + }); + + responseStream.on('error', function handleStreamError(err) { + if (req.destroyed) return; + reject(AxiosError.from(err, null, config, lastRequest)); + }); + + responseStream.on('end', function handleStreamEnd() { + try { + let responseData = + responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer); + if (responseType !== 'arraybuffer') { + responseData = responseData.toString(responseEncoding); + if (!responseEncoding || responseEncoding === 'utf8') { + responseData = utils.stripBOM(responseData); + } + } + response.data = responseData; + } catch (err) { + return reject(AxiosError.from(err, null, config, response.request, response)); + } + settle(resolve, reject, response); + }); + } + + abortEmitter.once('abort', (err) => { + if (!responseStream.destroyed) { + responseStream.emit('error', err); + responseStream.destroy(); + } + }); + }); + + abortEmitter.once('abort', (err) => { + if (req.close) { + req.close(); + } else { + req.destroy(err); + } + }); + + // Handle errors + req.on('error', function handleRequestError(err) { + reject(AxiosError.from(err, null, config, req)); + }); + + // set tcp keep alive to prevent drop connection by peer + req.on('socket', function handleRequestSocket(socket) { + // default interval of sending ack packet is 1 minute + socket.setKeepAlive(true, 1000 * 60); + }); + + // Handle request timeout + if (config.timeout) { + // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types. + const timeout = parseInt(config.timeout, 10); + + if (Number.isNaN(timeout)) { + abort( + new AxiosError( + 'error trying to parse `config.timeout` to int', + AxiosError.ERR_BAD_OPTION_VALUE, + config, + req + ) + ); + + return; + } + + // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system. + // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET. + // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up. + // And then these socket which be hang up will devouring CPU little by little. + // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect. + req.setTimeout(timeout, function handleRequestTimeout() { + if (isDone) return; + let timeoutErrorMessage = config.timeout + ? 'timeout of ' + config.timeout + 'ms exceeded' + : 'timeout exceeded'; + const transitional = config.transitional || transitionalDefaults; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + abort( + new AxiosError( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, + config, + req + ) + ); + }); + } else { + // explicitly reset the socket timeout value for a possible `keep-alive` request + req.setTimeout(0); + } + + // Send the request + if (utils.isStream(data)) { + let ended = false; + let errored = false; + + data.on('end', () => { + ended = true; + }); + + data.once('error', (err) => { + errored = true; + req.destroy(err); + }); + + data.on('close', () => { + if (!ended && !errored) { + abort(new CanceledError('Request stream has been aborted', config, req)); + } + }); + + data.pipe(req); + } else { + data && req.write(data); + req.end(); + } + }); + }; + +export const __setProxy = setProxy; diff --git a/node_modules/axios/lib/adapters/xhr.js b/node_modules/axios/lib/adapters/xhr.js new file mode 100644 index 0000000..1d2c837 --- /dev/null +++ b/node_modules/axios/lib/adapters/xhr.js @@ -0,0 +1,222 @@ +import utils from '../utils.js'; +import settle from '../core/settle.js'; +import transitionalDefaults from '../defaults/transitional.js'; +import AxiosError from '../core/AxiosError.js'; +import CanceledError from '../cancel/CanceledError.js'; +import parseProtocol from '../helpers/parseProtocol.js'; +import platform from '../platform/index.js'; +import AxiosHeaders from '../core/AxiosHeaders.js'; +import { progressEventReducer } from '../helpers/progressEventReducer.js'; +import resolveConfig from '../helpers/resolveConfig.js'; + +const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; + +export default isXHRAdapterSupported && + function (config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + const _config = resolveConfig(config); + let requestData = _config.data; + const requestHeaders = AxiosHeaders.from(_config.headers).normalize(); + let { responseType, onUploadProgress, onDownloadProgress } = _config; + let onCanceled; + let uploadThrottled, downloadThrottled; + let flushUpload, flushDownload; + + function done() { + flushUpload && flushUpload(); // flush events + flushDownload && flushDownload(); // flush events + + _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); + + _config.signal && _config.signal.removeEventListener('abort', onCanceled); + } + + let request = new XMLHttpRequest(); + + request.open(_config.method.toUpperCase(), _config.url, true); + + // Set the request timeout in MS + request.timeout = _config.timeout; + + function onloadend() { + if (!request) { + return; + } + // Prepare the response + const responseHeaders = AxiosHeaders.from( + 'getAllResponseHeaders' in request && request.getAllResponseHeaders() + ); + const responseData = + !responseType || responseType === 'text' || responseType === 'json' + ? request.responseText + : request.response; + const response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config, + request, + }; + + settle( + function _resolve(value) { + resolve(value); + done(); + }, + function _reject(err) { + reject(err); + done(); + }, + response + ); + + // Clean up request + request = null; + } + + if ('onloadend' in request) { + // Use onloadend if available + request.onloadend = onloadend; + } else { + // Listen for ready state to emulate onloadend + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if ( + request.status === 0 && + !(request.responseURL && request.responseURL.indexOf('file:') === 0) + ) { + return; + } + // readystate handler is calling before onerror or ontimeout handlers, + // so we should call onloadend on the next 'tick' + setTimeout(onloadend); + }; + } + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError(event) { + // Browsers deliver a ProgressEvent in XHR onerror + // (message may be empty; when present, surface it) + // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event + const msg = event && event.message ? event.message : 'Network Error'; + const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request); + // attach the underlying event for consumers who want details + err.event = event || null; + reject(err); + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + let timeoutErrorMessage = _config.timeout + ? 'timeout of ' + _config.timeout + 'ms exceeded' + : 'timeout exceeded'; + const transitional = _config.transitional || transitionalDefaults; + if (_config.timeoutErrorMessage) { + timeoutErrorMessage = _config.timeoutErrorMessage; + } + reject( + new AxiosError( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, + config, + request + ) + ); + + // Clean up request + request = null; + }; + + // Remove Content-Type if data is undefined + requestData === undefined && requestHeaders.setContentType(null); + + // Add headers to the request + if ('setRequestHeader' in request) { + utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { + request.setRequestHeader(key, val); + }); + } + + // Add withCredentials to request if needed + if (!utils.isUndefined(_config.withCredentials)) { + request.withCredentials = !!_config.withCredentials; + } + + // Add responseType to request if needed + if (responseType && responseType !== 'json') { + request.responseType = _config.responseType; + } + + // Handle progress if needed + if (onDownloadProgress) { + [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true); + request.addEventListener('progress', downloadThrottled); + } + + // Not all browsers support upload events + if (onUploadProgress && request.upload) { + [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress); + + request.upload.addEventListener('progress', uploadThrottled); + + request.upload.addEventListener('loadend', flushUpload); + } + + if (_config.cancelToken || _config.signal) { + // Handle cancellation + // eslint-disable-next-line func-names + onCanceled = (cancel) => { + if (!request) { + return; + } + reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); + request.abort(); + request = null; + }; + + _config.cancelToken && _config.cancelToken.subscribe(onCanceled); + if (_config.signal) { + _config.signal.aborted + ? onCanceled() + : _config.signal.addEventListener('abort', onCanceled); + } + } + + const protocol = parseProtocol(_config.url); + + if (protocol && platform.protocols.indexOf(protocol) === -1) { + reject( + new AxiosError( + 'Unsupported protocol ' + protocol + ':', + AxiosError.ERR_BAD_REQUEST, + config + ) + ); + return; + } + + // Send the request + request.send(requestData || null); + }); + }; diff --git a/node_modules/axios/lib/axios.js b/node_modules/axios/lib/axios.js new file mode 100644 index 0000000..5a3a876 --- /dev/null +++ b/node_modules/axios/lib/axios.js @@ -0,0 +1,89 @@ +'use strict'; + +import utils from './utils.js'; +import bind from './helpers/bind.js'; +import Axios from './core/Axios.js'; +import mergeConfig from './core/mergeConfig.js'; +import defaults from './defaults/index.js'; +import formDataToJSON from './helpers/formDataToJSON.js'; +import CanceledError from './cancel/CanceledError.js'; +import CancelToken from './cancel/CancelToken.js'; +import isCancel from './cancel/isCancel.js'; +import { VERSION } from './env/data.js'; +import toFormData from './helpers/toFormData.js'; +import AxiosError from './core/AxiosError.js'; +import spread from './helpers/spread.js'; +import isAxiosError from './helpers/isAxiosError.js'; +import AxiosHeaders from './core/AxiosHeaders.js'; +import adapters from './adapters/adapters.js'; +import HttpStatusCode from './helpers/HttpStatusCode.js'; + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * + * @returns {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + const context = new Axios(defaultConfig); + const instance = bind(Axios.prototype.request, context); + + // Copy axios.prototype to instance + utils.extend(instance, Axios.prototype, context, { allOwnKeys: true }); + + // Copy context to instance + utils.extend(instance, context, null, { allOwnKeys: true }); + + // Factory for creating new instances + instance.create = function create(instanceConfig) { + return createInstance(mergeConfig(defaultConfig, instanceConfig)); + }; + + return instance; +} + +// Create the default instance to be exported +const axios = createInstance(defaults); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios; + +// Expose Cancel & CancelToken +axios.CanceledError = CanceledError; +axios.CancelToken = CancelToken; +axios.isCancel = isCancel; +axios.VERSION = VERSION; +axios.toFormData = toFormData; + +// Expose AxiosError class +axios.AxiosError = AxiosError; + +// alias for CanceledError for backward compatibility +axios.Cancel = axios.CanceledError; + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; + +axios.spread = spread; + +// Expose isAxiosError +axios.isAxiosError = isAxiosError; + +// Expose mergeConfig +axios.mergeConfig = mergeConfig; + +axios.AxiosHeaders = AxiosHeaders; + +axios.formToJSON = (thing) => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing); + +axios.getAdapter = adapters.getAdapter; + +axios.HttpStatusCode = HttpStatusCode; + +axios.default = axios; + +// this module should only have a default export +export default axios; diff --git a/node_modules/axios/lib/cancel/CancelToken.js b/node_modules/axios/lib/cancel/CancelToken.js new file mode 100644 index 0000000..357381e --- /dev/null +++ b/node_modules/axios/lib/cancel/CancelToken.js @@ -0,0 +1,135 @@ +'use strict'; + +import CanceledError from './CanceledError.js'; + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @param {Function} executor The executor function. + * + * @returns {CancelToken} + */ +class CancelToken { + constructor(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + let resolvePromise; + + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + const token = this; + + // eslint-disable-next-line func-names + this.promise.then((cancel) => { + if (!token._listeners) return; + + let i = token._listeners.length; + + while (i-- > 0) { + token._listeners[i](cancel); + } + token._listeners = null; + }); + + // eslint-disable-next-line func-names + this.promise.then = (onfulfilled) => { + let _resolve; + // eslint-disable-next-line func-names + const promise = new Promise((resolve) => { + token.subscribe(resolve); + _resolve = resolve; + }).then(onfulfilled); + + promise.cancel = function reject() { + token.unsubscribe(_resolve); + }; + + return promise; + }; + + executor(function cancel(message, config, request) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new CanceledError(message, config, request); + resolvePromise(token.reason); + }); + } + + /** + * Throws a `CanceledError` if cancellation has been requested. + */ + throwIfRequested() { + if (this.reason) { + throw this.reason; + } + } + + /** + * Subscribe to the cancel signal + */ + + subscribe(listener) { + if (this.reason) { + listener(this.reason); + return; + } + + if (this._listeners) { + this._listeners.push(listener); + } else { + this._listeners = [listener]; + } + } + + /** + * Unsubscribe from the cancel signal + */ + + unsubscribe(listener) { + if (!this._listeners) { + return; + } + const index = this._listeners.indexOf(listener); + if (index !== -1) { + this._listeners.splice(index, 1); + } + } + + toAbortSignal() { + const controller = new AbortController(); + + const abort = (err) => { + controller.abort(err); + }; + + this.subscribe(abort); + + controller.signal.unsubscribe = () => this.unsubscribe(abort); + + return controller.signal; + } + + /** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ + static source() { + let cancel; + const token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token, + cancel, + }; + } +} + +export default CancelToken; diff --git a/node_modules/axios/lib/cancel/CanceledError.js b/node_modules/axios/lib/cancel/CanceledError.js new file mode 100644 index 0000000..e769b89 --- /dev/null +++ b/node_modules/axios/lib/cancel/CanceledError.js @@ -0,0 +1,22 @@ +'use strict'; + +import AxiosError from '../core/AxiosError.js'; + +class CanceledError extends AxiosError { + /** + * A `CanceledError` is an object that is thrown when an operation is canceled. + * + * @param {string=} message The message. + * @param {Object=} config The config. + * @param {Object=} request The request. + * + * @returns {CanceledError} The created error. + */ + constructor(message, config, request) { + super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); + this.name = 'CanceledError'; + this.__CANCEL__ = true; + } +} + +export default CanceledError; diff --git a/node_modules/axios/lib/cancel/isCancel.js b/node_modules/axios/lib/cancel/isCancel.js new file mode 100644 index 0000000..a444a12 --- /dev/null +++ b/node_modules/axios/lib/cancel/isCancel.js @@ -0,0 +1,5 @@ +'use strict'; + +export default function isCancel(value) { + return !!(value && value.__CANCEL__); +} diff --git a/node_modules/axios/lib/core/Axios.js b/node_modules/axios/lib/core/Axios.js new file mode 100644 index 0000000..149ed3f --- /dev/null +++ b/node_modules/axios/lib/core/Axios.js @@ -0,0 +1,263 @@ +'use strict'; + +import utils from '../utils.js'; +import buildURL from '../helpers/buildURL.js'; +import InterceptorManager from './InterceptorManager.js'; +import dispatchRequest from './dispatchRequest.js'; +import mergeConfig from './mergeConfig.js'; +import buildFullPath from './buildFullPath.js'; +import validator from '../helpers/validator.js'; +import AxiosHeaders from './AxiosHeaders.js'; +import transitionalDefaults from '../defaults/transitional.js'; + +const validators = validator.validators; + +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + * + * @return {Axios} A new instance of Axios + */ +class Axios { + constructor(instanceConfig) { + this.defaults = instanceConfig || {}; + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager(), + }; + } + + /** + * Dispatch a request + * + * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) + * @param {?Object} config + * + * @returns {Promise} The Promise to be fulfilled + */ + async request(configOrUrl, config) { + try { + return await this._request(configOrUrl, config); + } catch (err) { + if (err instanceof Error) { + let dummy = {}; + + Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error()); + + // slice off the Error: ... line + const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; + try { + if (!err.stack) { + err.stack = stack; + // match without the 2 top stack lines + } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { + err.stack += '\n' + stack; + } + } catch (e) { + // ignore the case where "stack" is an un-writable property + } + } + + throw err; + } + } + + _request(configOrUrl, config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof configOrUrl === 'string') { + config = config || {}; + config.url = configOrUrl; + } else { + config = configOrUrl || {}; + } + + config = mergeConfig(this.defaults, config); + + const { transitional, paramsSerializer, headers } = config; + + if (transitional !== undefined) { + validator.assertOptions( + transitional, + { + silentJSONParsing: validators.transitional(validators.boolean), + forcedJSONParsing: validators.transitional(validators.boolean), + clarifyTimeoutError: validators.transitional(validators.boolean), + legacyInterceptorReqResOrdering: validators.transitional(validators.boolean), + }, + false + ); + } + + if (paramsSerializer != null) { + if (utils.isFunction(paramsSerializer)) { + config.paramsSerializer = { + serialize: paramsSerializer, + }; + } else { + validator.assertOptions( + paramsSerializer, + { + encode: validators.function, + serialize: validators.function, + }, + true + ); + } + } + + // Set config.allowAbsoluteUrls + if (config.allowAbsoluteUrls !== undefined) { + // do nothing + } else if (this.defaults.allowAbsoluteUrls !== undefined) { + config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls; + } else { + config.allowAbsoluteUrls = true; + } + + validator.assertOptions( + config, + { + baseUrl: validators.spelling('baseURL'), + withXsrfToken: validators.spelling('withXSRFToken'), + }, + true + ); + + // Set config.method + config.method = (config.method || this.defaults.method || 'get').toLowerCase(); + + // Flatten headers + let contextHeaders = headers && utils.merge(headers.common, headers[config.method]); + + headers && + utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => { + delete headers[method]; + }); + + config.headers = AxiosHeaders.concat(contextHeaders, headers); + + // filter out skipped interceptors + const requestInterceptorChain = []; + let synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { + return; + } + + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; + + const transitional = config.transitional || transitionalDefaults; + const legacyInterceptorReqResOrdering = + transitional && transitional.legacyInterceptorReqResOrdering; + + if (legacyInterceptorReqResOrdering) { + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + } else { + requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + } + }); + + const responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); + + let promise; + let i = 0; + let len; + + if (!synchronousRequestInterceptors) { + const chain = [dispatchRequest.bind(this), undefined]; + chain.unshift(...requestInterceptorChain); + chain.push(...responseInterceptorChain); + len = chain.length; + + promise = Promise.resolve(config); + + while (i < len) { + promise = promise.then(chain[i++], chain[i++]); + } + + return promise; + } + + len = requestInterceptorChain.length; + + let newConfig = config; + + while (i < len) { + const onFulfilled = requestInterceptorChain[i++]; + const onRejected = requestInterceptorChain[i++]; + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected.call(this, error); + break; + } + } + + try { + promise = dispatchRequest.call(this, newConfig); + } catch (error) { + return Promise.reject(error); + } + + i = 0; + len = responseInterceptorChain.length; + + while (i < len) { + promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); + } + + return promise; + } + + getUri(config) { + config = mergeConfig(this.defaults, config); + const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); + return buildURL(fullPath, config.params, config.paramsSerializer); + } +} + +// Provide aliases for supported request methods +utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function (url, config) { + return this.request( + mergeConfig(config || {}, { + method, + url, + data: (config || {}).data, + }) + ); + }; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + + function generateHTTPMethod(isForm) { + return function httpMethod(url, data, config) { + return this.request( + mergeConfig(config || {}, { + method, + headers: isForm + ? { + 'Content-Type': 'multipart/form-data', + } + : {}, + url, + data, + }) + ); + }; + } + + Axios.prototype[method] = generateHTTPMethod(); + + Axios.prototype[method + 'Form'] = generateHTTPMethod(true); +}); + +export default Axios; diff --git a/node_modules/axios/lib/core/AxiosError.js b/node_modules/axios/lib/core/AxiosError.js new file mode 100644 index 0000000..f28b886 --- /dev/null +++ b/node_modules/axios/lib/core/AxiosError.js @@ -0,0 +1,90 @@ +'use strict'; + +import utils from '../utils.js'; + +class AxiosError extends Error { + static from(error, code, config, request, response, customProps) { + const axiosError = new AxiosError(error.message, code || error.code, config, request, response); + axiosError.cause = error; + axiosError.name = error.name; + + // Preserve status from the original error if not already set from response + if (error.status != null && axiosError.status == null) { + axiosError.status = error.status; + } + + customProps && Object.assign(axiosError, customProps); + return axiosError; + } + + /** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [config] The config. + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * + * @returns {Error} The created error. + */ + constructor(message, code, config, request, response) { + super(message); + + // Make message enumerable to maintain backward compatibility + // The native Error constructor sets message as non-enumerable, + // but axios < v1.13.3 had it as enumerable + Object.defineProperty(this, 'message', { + value: message, + enumerable: true, + writable: true, + configurable: true + }); + + this.name = 'AxiosError'; + this.isAxiosError = true; + code && (this.code = code); + config && (this.config = config); + request && (this.request = request); + if (response) { + this.response = response; + this.status = response.status; + } + } + + toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: utils.toJSONObject(this.config), + code: this.code, + status: this.status, + }; + } +} + +// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated. +AxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE'; +AxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION'; +AxiosError.ECONNABORTED = 'ECONNABORTED'; +AxiosError.ETIMEDOUT = 'ETIMEDOUT'; +AxiosError.ERR_NETWORK = 'ERR_NETWORK'; +AxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS'; +AxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED'; +AxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE'; +AxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST'; +AxiosError.ERR_CANCELED = 'ERR_CANCELED'; +AxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT'; +AxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL'; + +export default AxiosError; diff --git a/node_modules/axios/lib/core/AxiosHeaders.js b/node_modules/axios/lib/core/AxiosHeaders.js new file mode 100644 index 0000000..36f8512 --- /dev/null +++ b/node_modules/axios/lib/core/AxiosHeaders.js @@ -0,0 +1,344 @@ +'use strict'; + +import utils from '../utils.js'; +import parseHeaders from '../helpers/parseHeaders.js'; + +const $internals = Symbol('internals'); + +function normalizeHeader(header) { + return header && String(header).trim().toLowerCase(); +} + +function normalizeValue(value) { + if (value === false || value == null) { + return value; + } + + return utils.isArray(value) ? value.map(normalizeValue) : String(value); +} + +function parseTokens(str) { + const tokens = Object.create(null); + const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; + let match; + + while ((match = tokensRE.exec(str))) { + tokens[match[1]] = match[2]; + } + + return tokens; +} + +const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); + +function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { + if (utils.isFunction(filter)) { + return filter.call(this, value, header); + } + + if (isHeaderNameFilter) { + value = header; + } + + if (!utils.isString(value)) return; + + if (utils.isString(filter)) { + return value.indexOf(filter) !== -1; + } + + if (utils.isRegExp(filter)) { + return filter.test(value); + } +} + +function formatHeader(header) { + return header + .trim() + .toLowerCase() + .replace(/([a-z\d])(\w*)/g, (w, char, str) => { + return char.toUpperCase() + str; + }); +} + +function buildAccessors(obj, header) { + const accessorName = utils.toCamelCase(' ' + header); + + ['get', 'set', 'has'].forEach((methodName) => { + Object.defineProperty(obj, methodName + accessorName, { + value: function (arg1, arg2, arg3) { + return this[methodName].call(this, header, arg1, arg2, arg3); + }, + configurable: true, + }); + }); +} + +class AxiosHeaders { + constructor(headers) { + headers && this.set(headers); + } + + set(header, valueOrRewrite, rewrite) { + const self = this; + + function setHeader(_value, _header, _rewrite) { + const lHeader = normalizeHeader(_header); + + if (!lHeader) { + throw new Error('header name must be a non-empty string'); + } + + const key = utils.findKey(self, lHeader); + + if ( + !key || + self[key] === undefined || + _rewrite === true || + (_rewrite === undefined && self[key] !== false) + ) { + self[key || _header] = normalizeValue(_value); + } + } + + const setHeaders = (headers, _rewrite) => + utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); + + if (utils.isPlainObject(header) || header instanceof this.constructor) { + setHeaders(header, valueOrRewrite); + } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { + setHeaders(parseHeaders(header), valueOrRewrite); + } else if (utils.isObject(header) && utils.isIterable(header)) { + let obj = {}, + dest, + key; + for (const entry of header) { + if (!utils.isArray(entry)) { + throw TypeError('Object iterator must return a key-value pair'); + } + + obj[(key = entry[0])] = (dest = obj[key]) + ? utils.isArray(dest) + ? [...dest, entry[1]] + : [dest, entry[1]] + : entry[1]; + } + + setHeaders(obj, valueOrRewrite); + } else { + header != null && setHeader(valueOrRewrite, header, rewrite); + } + + return this; + } + + get(header, parser) { + header = normalizeHeader(header); + + if (header) { + const key = utils.findKey(this, header); + + if (key) { + const value = this[key]; + + if (!parser) { + return value; + } + + if (parser === true) { + return parseTokens(value); + } + + if (utils.isFunction(parser)) { + return parser.call(this, value, key); + } + + if (utils.isRegExp(parser)) { + return parser.exec(value); + } + + throw new TypeError('parser must be boolean|regexp|function'); + } + } + } + + has(header, matcher) { + header = normalizeHeader(header); + + if (header) { + const key = utils.findKey(this, header); + + return !!( + key && + this[key] !== undefined && + (!matcher || matchHeaderValue(this, this[key], key, matcher)) + ); + } + + return false; + } + + delete(header, matcher) { + const self = this; + let deleted = false; + + function deleteHeader(_header) { + _header = normalizeHeader(_header); + + if (_header) { + const key = utils.findKey(self, _header); + + if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { + delete self[key]; + + deleted = true; + } + } + } + + if (utils.isArray(header)) { + header.forEach(deleteHeader); + } else { + deleteHeader(header); + } + + return deleted; + } + + clear(matcher) { + const keys = Object.keys(this); + let i = keys.length; + let deleted = false; + + while (i--) { + const key = keys[i]; + if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { + delete this[key]; + deleted = true; + } + } + + return deleted; + } + + normalize(format) { + const self = this; + const headers = {}; + + utils.forEach(this, (value, header) => { + const key = utils.findKey(headers, header); + + if (key) { + self[key] = normalizeValue(value); + delete self[header]; + return; + } + + const normalized = format ? formatHeader(header) : String(header).trim(); + + if (normalized !== header) { + delete self[header]; + } + + self[normalized] = normalizeValue(value); + + headers[normalized] = true; + }); + + return this; + } + + concat(...targets) { + return this.constructor.concat(this, ...targets); + } + + toJSON(asStrings) { + const obj = Object.create(null); + + utils.forEach(this, (value, header) => { + value != null && + value !== false && + (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value); + }); + + return obj; + } + + [Symbol.iterator]() { + return Object.entries(this.toJSON())[Symbol.iterator](); + } + + toString() { + return Object.entries(this.toJSON()) + .map(([header, value]) => header + ': ' + value) + .join('\n'); + } + + getSetCookie() { + return this.get('set-cookie') || []; + } + + get [Symbol.toStringTag]() { + return 'AxiosHeaders'; + } + + static from(thing) { + return thing instanceof this ? thing : new this(thing); + } + + static concat(first, ...targets) { + const computed = new this(first); + + targets.forEach((target) => computed.set(target)); + + return computed; + } + + static accessor(header) { + const internals = + (this[$internals] = + this[$internals] = + { + accessors: {}, + }); + + const accessors = internals.accessors; + const prototype = this.prototype; + + function defineAccessor(_header) { + const lHeader = normalizeHeader(_header); + + if (!accessors[lHeader]) { + buildAccessors(prototype, _header); + accessors[lHeader] = true; + } + } + + utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); + + return this; + } +} + +AxiosHeaders.accessor([ + 'Content-Type', + 'Content-Length', + 'Accept', + 'Accept-Encoding', + 'User-Agent', + 'Authorization', +]); + +// reserved names hotfix +utils.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => { + let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` + return { + get: () => value, + set(headerValue) { + this[mapped] = headerValue; + }, + }; +}); + +utils.freezeMethods(AxiosHeaders); + +export default AxiosHeaders; diff --git a/node_modules/axios/lib/core/InterceptorManager.js b/node_modules/axios/lib/core/InterceptorManager.js new file mode 100644 index 0000000..fe10f3d --- /dev/null +++ b/node_modules/axios/lib/core/InterceptorManager.js @@ -0,0 +1,72 @@ +'use strict'; + +import utils from '../utils.js'; + +class InterceptorManager { + constructor() { + this.handlers = []; + } + + /** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * @param {Object} options The options for the interceptor, synchronous and runWhen + * + * @return {Number} An ID used to remove interceptor later + */ + use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled, + rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null, + }); + return this.handlers.length - 1; + } + + /** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + * + * @returns {void} + */ + eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } + } + + /** + * Clear all interceptors from the stack + * + * @returns {void} + */ + clear() { + if (this.handlers) { + this.handlers = []; + } + } + + /** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + * + * @returns {void} + */ + forEach(fn) { + utils.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); + } +} + +export default InterceptorManager; diff --git a/node_modules/axios/lib/core/README.md b/node_modules/axios/lib/core/README.md new file mode 100644 index 0000000..84559ce --- /dev/null +++ b/node_modules/axios/lib/core/README.md @@ -0,0 +1,8 @@ +# axios // core + +The modules found in `core/` should be modules that are specific to the domain logic of axios. These modules would most likely not make sense to be consumed outside of the axios module, as their logic is too specific. Some examples of core modules are: + +- Dispatching requests + - Requests sent via `adapters/` (see lib/adapters/README.md) +- Managing interceptors +- Handling config diff --git a/node_modules/axios/lib/core/buildFullPath.js b/node_modules/axios/lib/core/buildFullPath.js new file mode 100644 index 0000000..3050bd6 --- /dev/null +++ b/node_modules/axios/lib/core/buildFullPath.js @@ -0,0 +1,22 @@ +'use strict'; + +import isAbsoluteURL from '../helpers/isAbsoluteURL.js'; +import combineURLs from '../helpers/combineURLs.js'; + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * + * @returns {string} The combined full path + */ +export default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) { + let isRelativeUrl = !isAbsoluteURL(requestedURL); + if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +} diff --git a/node_modules/axios/lib/core/dispatchRequest.js b/node_modules/axios/lib/core/dispatchRequest.js new file mode 100644 index 0000000..2015b54 --- /dev/null +++ b/node_modules/axios/lib/core/dispatchRequest.js @@ -0,0 +1,77 @@ +'use strict'; + +import transformData from './transformData.js'; +import isCancel from '../cancel/isCancel.js'; +import defaults from '../defaults/index.js'; +import CanceledError from '../cancel/CanceledError.js'; +import AxiosHeaders from '../core/AxiosHeaders.js'; +import adapters from '../adapters/adapters.js'; + +/** + * Throws a `CanceledError` if cancellation has been requested. + * + * @param {Object} config The config that is to be used for the request + * + * @returns {void} + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } + + if (config.signal && config.signal.aborted) { + throw new CanceledError(null, config); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * + * @returns {Promise} The Promise to be fulfilled + */ +export default function dispatchRequest(config) { + throwIfCancellationRequested(config); + + config.headers = AxiosHeaders.from(config.headers); + + // Transform request data + config.data = transformData.call(config, config.transformRequest); + + if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { + config.headers.setContentType('application/x-www-form-urlencoded', false); + } + + const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config); + + return adapter(config).then( + function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData.call(config, config.transformResponse, response); + + response.headers = AxiosHeaders.from(response.headers); + + return response; + }, + function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData.call( + config, + config.transformResponse, + reason.response + ); + reason.response.headers = AxiosHeaders.from(reason.response.headers); + } + } + + return Promise.reject(reason); + } + ); +} diff --git a/node_modules/axios/lib/core/mergeConfig.js b/node_modules/axios/lib/core/mergeConfig.js new file mode 100644 index 0000000..38ac341 --- /dev/null +++ b/node_modules/axios/lib/core/mergeConfig.js @@ -0,0 +1,107 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosHeaders from './AxiosHeaders.js'; + +const headersToObject = (thing) => (thing instanceof AxiosHeaders ? { ...thing } : thing); + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * + * @returns {Object} New object resulting from merging config2 to config1 + */ +export default function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + const config = {}; + + function getMergedValue(target, source, prop, caseless) { + if (utils.isPlainObject(target) && utils.isPlainObject(source)) { + return utils.merge.call({ caseless }, target, source); + } else if (utils.isPlainObject(source)) { + return utils.merge({}, source); + } else if (utils.isArray(source)) { + return source.slice(); + } + return source; + } + + function mergeDeepProperties(a, b, prop, caseless) { + if (!utils.isUndefined(b)) { + return getMergedValue(a, b, prop, caseless); + } else if (!utils.isUndefined(a)) { + return getMergedValue(undefined, a, prop, caseless); + } + } + + // eslint-disable-next-line consistent-return + function valueFromConfig2(a, b) { + if (!utils.isUndefined(b)) { + return getMergedValue(undefined, b); + } + } + + // eslint-disable-next-line consistent-return + function defaultToConfig2(a, b) { + if (!utils.isUndefined(b)) { + return getMergedValue(undefined, b); + } else if (!utils.isUndefined(a)) { + return getMergedValue(undefined, a); + } + } + + // eslint-disable-next-line consistent-return + function mergeDirectKeys(a, b, prop) { + if (prop in config2) { + return getMergedValue(a, b); + } else if (prop in config1) { + return getMergedValue(undefined, a); + } + } + + const mergeMap = { + url: valueFromConfig2, + method: valueFromConfig2, + data: valueFromConfig2, + baseURL: defaultToConfig2, + transformRequest: defaultToConfig2, + transformResponse: defaultToConfig2, + paramsSerializer: defaultToConfig2, + timeout: defaultToConfig2, + timeoutMessage: defaultToConfig2, + withCredentials: defaultToConfig2, + withXSRFToken: defaultToConfig2, + adapter: defaultToConfig2, + responseType: defaultToConfig2, + xsrfCookieName: defaultToConfig2, + xsrfHeaderName: defaultToConfig2, + onUploadProgress: defaultToConfig2, + onDownloadProgress: defaultToConfig2, + decompress: defaultToConfig2, + maxContentLength: defaultToConfig2, + maxBodyLength: defaultToConfig2, + beforeRedirect: defaultToConfig2, + transport: defaultToConfig2, + httpAgent: defaultToConfig2, + httpsAgent: defaultToConfig2, + cancelToken: defaultToConfig2, + socketPath: defaultToConfig2, + responseEncoding: defaultToConfig2, + validateStatus: mergeDirectKeys, + headers: (a, b, prop) => + mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true), + }; + + utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) { + if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return; + const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties; + const configValue = merge(config1[prop], config2[prop], prop); + (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); + }); + + return config; +} diff --git a/node_modules/axios/lib/core/settle.js b/node_modules/axios/lib/core/settle.js new file mode 100644 index 0000000..8629ad0 --- /dev/null +++ b/node_modules/axios/lib/core/settle.js @@ -0,0 +1,31 @@ +'use strict'; + +import AxiosError from './AxiosError.js'; + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + * + * @returns {object} The response. + */ +export default function settle(resolve, reject, response) { + const validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject( + new AxiosError( + 'Request failed with status code ' + response.status, + [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][ + Math.floor(response.status / 100) - 4 + ], + response.config, + response.request, + response + ) + ); + } +} diff --git a/node_modules/axios/lib/core/transformData.js b/node_modules/axios/lib/core/transformData.js new file mode 100644 index 0000000..f22c474 --- /dev/null +++ b/node_modules/axios/lib/core/transformData.js @@ -0,0 +1,28 @@ +'use strict'; + +import utils from '../utils.js'; +import defaults from '../defaults/index.js'; +import AxiosHeaders from '../core/AxiosHeaders.js'; + +/** + * Transform the data for a request or a response + * + * @param {Array|Function} fns A single function or Array of functions + * @param {?Object} response The response object + * + * @returns {*} The resulting transformed data + */ +export default function transformData(fns, response) { + const config = this || defaults; + const context = response || config; + const headers = AxiosHeaders.from(context.headers); + let data = context.data; + + utils.forEach(fns, function transform(fn) { + data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); + }); + + headers.normalize(); + + return data; +} diff --git a/node_modules/axios/lib/defaults/index.js b/node_modules/axios/lib/defaults/index.js new file mode 100644 index 0000000..b83c2c0 --- /dev/null +++ b/node_modules/axios/lib/defaults/index.js @@ -0,0 +1,172 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosError from '../core/AxiosError.js'; +import transitionalDefaults from './transitional.js'; +import toFormData from '../helpers/toFormData.js'; +import toURLEncodedForm from '../helpers/toURLEncodedForm.js'; +import platform from '../platform/index.js'; +import formDataToJSON from '../helpers/formDataToJSON.js'; + +/** + * It takes a string, tries to parse it, and if it fails, it returns the stringified version + * of the input + * + * @param {any} rawValue - The value to be stringified. + * @param {Function} parser - A function that parses a string into a JavaScript object. + * @param {Function} encoder - A function that takes a value and returns a string. + * + * @returns {string} A stringified version of the rawValue. + */ +function stringifySafely(rawValue, parser, encoder) { + if (utils.isString(rawValue)) { + try { + (parser || JSON.parse)(rawValue); + return utils.trim(rawValue); + } catch (e) { + if (e.name !== 'SyntaxError') { + throw e; + } + } + } + + return (encoder || JSON.stringify)(rawValue); +} + +const defaults = { + transitional: transitionalDefaults, + + adapter: ['xhr', 'http', 'fetch'], + + transformRequest: [ + function transformRequest(data, headers) { + const contentType = headers.getContentType() || ''; + const hasJSONContentType = contentType.indexOf('application/json') > -1; + const isObjectPayload = utils.isObject(data); + + if (isObjectPayload && utils.isHTMLForm(data)) { + data = new FormData(data); + } + + const isFormData = utils.isFormData(data); + + if (isFormData) { + return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; + } + + if ( + utils.isArrayBuffer(data) || + utils.isBuffer(data) || + utils.isStream(data) || + utils.isFile(data) || + utils.isBlob(data) || + utils.isReadableStream(data) + ) { + return data; + } + if (utils.isArrayBufferView(data)) { + return data.buffer; + } + if (utils.isURLSearchParams(data)) { + headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); + return data.toString(); + } + + let isFileList; + + if (isObjectPayload) { + if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { + return toURLEncodedForm(data, this.formSerializer).toString(); + } + + if ( + (isFileList = utils.isFileList(data)) || + contentType.indexOf('multipart/form-data') > -1 + ) { + const _FormData = this.env && this.env.FormData; + + return toFormData( + isFileList ? { 'files[]': data } : data, + _FormData && new _FormData(), + this.formSerializer + ); + } + } + + if (isObjectPayload || hasJSONContentType) { + headers.setContentType('application/json', false); + return stringifySafely(data); + } + + return data; + }, + ], + + transformResponse: [ + function transformResponse(data) { + const transitional = this.transitional || defaults.transitional; + const forcedJSONParsing = transitional && transitional.forcedJSONParsing; + const JSONRequested = this.responseType === 'json'; + + if (utils.isResponse(data) || utils.isReadableStream(data)) { + return data; + } + + if ( + data && + utils.isString(data) && + ((forcedJSONParsing && !this.responseType) || JSONRequested) + ) { + const silentJSONParsing = transitional && transitional.silentJSONParsing; + const strictJSONParsing = !silentJSONParsing && JSONRequested; + + try { + return JSON.parse(data, this.parseReviver); + } catch (e) { + if (strictJSONParsing) { + if (e.name === 'SyntaxError') { + throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); + } + throw e; + } + } + } + + return data; + }, + ], + + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + maxBodyLength: -1, + + env: { + FormData: platform.classes.FormData, + Blob: platform.classes.Blob, + }, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + }, + + headers: { + common: { + Accept: 'application/json, text/plain, */*', + 'Content-Type': undefined, + }, + }, +}; + +utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { + defaults.headers[method] = {}; +}); + +export default defaults; diff --git a/node_modules/axios/lib/defaults/transitional.js b/node_modules/axios/lib/defaults/transitional.js new file mode 100644 index 0000000..714b664 --- /dev/null +++ b/node_modules/axios/lib/defaults/transitional.js @@ -0,0 +1,8 @@ +'use strict'; + +export default { + silentJSONParsing: true, + forcedJSONParsing: true, + clarifyTimeoutError: false, + legacyInterceptorReqResOrdering: true, +}; diff --git a/node_modules/axios/lib/env/README.md b/node_modules/axios/lib/env/README.md new file mode 100644 index 0000000..b41baff --- /dev/null +++ b/node_modules/axios/lib/env/README.md @@ -0,0 +1,3 @@ +# axios // env + +The `data.js` file is updated automatically when the package version is upgrading. Please do not edit it manually. diff --git a/node_modules/axios/lib/env/classes/FormData.js b/node_modules/axios/lib/env/classes/FormData.js new file mode 100644 index 0000000..862adb9 --- /dev/null +++ b/node_modules/axios/lib/env/classes/FormData.js @@ -0,0 +1,2 @@ +import _FormData from 'form-data'; +export default typeof FormData !== 'undefined' ? FormData : _FormData; diff --git a/node_modules/axios/lib/env/data.js b/node_modules/axios/lib/env/data.js new file mode 100644 index 0000000..cdea87c --- /dev/null +++ b/node_modules/axios/lib/env/data.js @@ -0,0 +1 @@ +export const VERSION = "1.13.6"; \ No newline at end of file diff --git a/node_modules/axios/lib/helpers/AxiosTransformStream.js b/node_modules/axios/lib/helpers/AxiosTransformStream.js new file mode 100644 index 0000000..96e8acb --- /dev/null +++ b/node_modules/axios/lib/helpers/AxiosTransformStream.js @@ -0,0 +1,156 @@ +'use strict'; + +import stream from 'stream'; +import utils from '../utils.js'; + +const kInternals = Symbol('internals'); + +class AxiosTransformStream extends stream.Transform { + constructor(options) { + options = utils.toFlatObject( + options, + { + maxRate: 0, + chunkSize: 64 * 1024, + minChunkSize: 100, + timeWindow: 500, + ticksRate: 2, + samplesCount: 15, + }, + null, + (prop, source) => { + return !utils.isUndefined(source[prop]); + } + ); + + super({ + readableHighWaterMark: options.chunkSize, + }); + + const internals = (this[kInternals] = { + timeWindow: options.timeWindow, + chunkSize: options.chunkSize, + maxRate: options.maxRate, + minChunkSize: options.minChunkSize, + bytesSeen: 0, + isCaptured: false, + notifiedBytesLoaded: 0, + ts: Date.now(), + bytes: 0, + onReadCallback: null, + }); + + this.on('newListener', (event) => { + if (event === 'progress') { + if (!internals.isCaptured) { + internals.isCaptured = true; + } + } + }); + } + + _read(size) { + const internals = this[kInternals]; + + if (internals.onReadCallback) { + internals.onReadCallback(); + } + + return super._read(size); + } + + _transform(chunk, encoding, callback) { + const internals = this[kInternals]; + const maxRate = internals.maxRate; + + const readableHighWaterMark = this.readableHighWaterMark; + + const timeWindow = internals.timeWindow; + + const divider = 1000 / timeWindow; + const bytesThreshold = maxRate / divider; + const minChunkSize = + internals.minChunkSize !== false + ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) + : 0; + + const pushChunk = (_chunk, _callback) => { + const bytes = Buffer.byteLength(_chunk); + internals.bytesSeen += bytes; + internals.bytes += bytes; + + internals.isCaptured && this.emit('progress', internals.bytesSeen); + + if (this.push(_chunk)) { + process.nextTick(_callback); + } else { + internals.onReadCallback = () => { + internals.onReadCallback = null; + process.nextTick(_callback); + }; + } + }; + + const transformChunk = (_chunk, _callback) => { + const chunkSize = Buffer.byteLength(_chunk); + let chunkRemainder = null; + let maxChunkSize = readableHighWaterMark; + let bytesLeft; + let passed = 0; + + if (maxRate) { + const now = Date.now(); + + if (!internals.ts || (passed = now - internals.ts) >= timeWindow) { + internals.ts = now; + bytesLeft = bytesThreshold - internals.bytes; + internals.bytes = bytesLeft < 0 ? -bytesLeft : 0; + passed = 0; + } + + bytesLeft = bytesThreshold - internals.bytes; + } + + if (maxRate) { + if (bytesLeft <= 0) { + // next time window + return setTimeout(() => { + _callback(null, _chunk); + }, timeWindow - passed); + } + + if (bytesLeft < maxChunkSize) { + maxChunkSize = bytesLeft; + } + } + + if (maxChunkSize && chunkSize > maxChunkSize && chunkSize - maxChunkSize > minChunkSize) { + chunkRemainder = _chunk.subarray(maxChunkSize); + _chunk = _chunk.subarray(0, maxChunkSize); + } + + pushChunk( + _chunk, + chunkRemainder + ? () => { + process.nextTick(_callback, null, chunkRemainder); + } + : _callback + ); + }; + + transformChunk(chunk, function transformNextChunk(err, _chunk) { + if (err) { + return callback(err); + } + + if (_chunk) { + transformChunk(_chunk, transformNextChunk); + } else { + callback(null); + } + }); + } +} + +export default AxiosTransformStream; diff --git a/node_modules/axios/lib/helpers/AxiosURLSearchParams.js b/node_modules/axios/lib/helpers/AxiosURLSearchParams.js new file mode 100644 index 0000000..da63392 --- /dev/null +++ b/node_modules/axios/lib/helpers/AxiosURLSearchParams.js @@ -0,0 +1,62 @@ +'use strict'; + +import toFormData from './toFormData.js'; + +/** + * It encodes a string by replacing all characters that are not in the unreserved set with + * their percent-encoded equivalents + * + * @param {string} str - The string to encode. + * + * @returns {string} The encoded string. + */ +function encode(str) { + const charMap = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+', + '%00': '\x00', + }; + return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { + return charMap[match]; + }); +} + +/** + * It takes a params object and converts it to a FormData object + * + * @param {Object} params - The parameters to be converted to a FormData object. + * @param {Object} options - The options object passed to the Axios constructor. + * + * @returns {void} + */ +function AxiosURLSearchParams(params, options) { + this._pairs = []; + + params && toFormData(params, this, options); +} + +const prototype = AxiosURLSearchParams.prototype; + +prototype.append = function append(name, value) { + this._pairs.push([name, value]); +}; + +prototype.toString = function toString(encoder) { + const _encode = encoder + ? function (value) { + return encoder.call(this, value, encode); + } + : encode; + + return this._pairs + .map(function each(pair) { + return _encode(pair[0]) + '=' + _encode(pair[1]); + }, '') + .join('&'); +}; + +export default AxiosURLSearchParams; diff --git a/node_modules/axios/lib/helpers/HttpStatusCode.js b/node_modules/axios/lib/helpers/HttpStatusCode.js new file mode 100644 index 0000000..b68d08e --- /dev/null +++ b/node_modules/axios/lib/helpers/HttpStatusCode.js @@ -0,0 +1,77 @@ +const HttpStatusCode = { + Continue: 100, + SwitchingProtocols: 101, + Processing: 102, + EarlyHints: 103, + Ok: 200, + Created: 201, + Accepted: 202, + NonAuthoritativeInformation: 203, + NoContent: 204, + ResetContent: 205, + PartialContent: 206, + MultiStatus: 207, + AlreadyReported: 208, + ImUsed: 226, + MultipleChoices: 300, + MovedPermanently: 301, + Found: 302, + SeeOther: 303, + NotModified: 304, + UseProxy: 305, + Unused: 306, + TemporaryRedirect: 307, + PermanentRedirect: 308, + BadRequest: 400, + Unauthorized: 401, + PaymentRequired: 402, + Forbidden: 403, + NotFound: 404, + MethodNotAllowed: 405, + NotAcceptable: 406, + ProxyAuthenticationRequired: 407, + RequestTimeout: 408, + Conflict: 409, + Gone: 410, + LengthRequired: 411, + PreconditionFailed: 412, + PayloadTooLarge: 413, + UriTooLong: 414, + UnsupportedMediaType: 415, + RangeNotSatisfiable: 416, + ExpectationFailed: 417, + ImATeapot: 418, + MisdirectedRequest: 421, + UnprocessableEntity: 422, + Locked: 423, + FailedDependency: 424, + TooEarly: 425, + UpgradeRequired: 426, + PreconditionRequired: 428, + TooManyRequests: 429, + RequestHeaderFieldsTooLarge: 431, + UnavailableForLegalReasons: 451, + InternalServerError: 500, + NotImplemented: 501, + BadGateway: 502, + ServiceUnavailable: 503, + GatewayTimeout: 504, + HttpVersionNotSupported: 505, + VariantAlsoNegotiates: 506, + InsufficientStorage: 507, + LoopDetected: 508, + NotExtended: 510, + NetworkAuthenticationRequired: 511, + WebServerIsDown: 521, + ConnectionTimedOut: 522, + OriginIsUnreachable: 523, + TimeoutOccurred: 524, + SslHandshakeFailed: 525, + InvalidSslCertificate: 526, +}; + +Object.entries(HttpStatusCode).forEach(([key, value]) => { + HttpStatusCode[value] = key; +}); + +export default HttpStatusCode; diff --git a/node_modules/axios/lib/helpers/README.md b/node_modules/axios/lib/helpers/README.md new file mode 100644 index 0000000..4ae3419 --- /dev/null +++ b/node_modules/axios/lib/helpers/README.md @@ -0,0 +1,7 @@ +# axios // helpers + +The modules found in `helpers/` should be generic modules that are _not_ specific to the domain logic of axios. These modules could theoretically be published to npm on their own and consumed by other modules or apps. Some examples of generic modules are things like: + +- Browser polyfills +- Managing cookies +- Parsing HTTP headers diff --git a/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js b/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js new file mode 100644 index 0000000..c588ded --- /dev/null +++ b/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js @@ -0,0 +1,29 @@ +'use strict'; + +import stream from 'stream'; + +class ZlibHeaderTransformStream extends stream.Transform { + __transform(chunk, encoding, callback) { + this.push(chunk); + callback(); + } + + _transform(chunk, encoding, callback) { + if (chunk.length !== 0) { + this._transform = this.__transform; + + // Add Default Compression headers if no zlib headers are present + if (chunk[0] !== 120) { + // Hex: 78 + const header = Buffer.alloc(2); + header[0] = 120; // Hex: 78 + header[1] = 156; // Hex: 9C + this.push(header, encoding); + } + } + + this.__transform(chunk, encoding, callback); + } +} + +export default ZlibHeaderTransformStream; diff --git a/node_modules/axios/lib/helpers/bind.js b/node_modules/axios/lib/helpers/bind.js new file mode 100644 index 0000000..938da5c --- /dev/null +++ b/node_modules/axios/lib/helpers/bind.js @@ -0,0 +1,14 @@ +'use strict'; + +/** + * Create a bound version of a function with a specified `this` context + * + * @param {Function} fn - The function to bind + * @param {*} thisArg - The value to be passed as the `this` parameter + * @returns {Function} A new function that will call the original function with the specified `this` context + */ +export default function bind(fn, thisArg) { + return function wrap() { + return fn.apply(thisArg, arguments); + }; +} diff --git a/node_modules/axios/lib/helpers/buildURL.js b/node_modules/axios/lib/helpers/buildURL.js new file mode 100644 index 0000000..f10e26c --- /dev/null +++ b/node_modules/axios/lib/helpers/buildURL.js @@ -0,0 +1,66 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js'; + +/** + * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their + * URI encoded counterparts + * + * @param {string} val The value to be encoded. + * + * @returns {string} The encoded value. + */ +function encode(val) { + return encodeURIComponent(val) + .replace(/%3A/gi, ':') + .replace(/%24/g, '$') + .replace(/%2C/gi, ',') + .replace(/%20/g, '+'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @param {?(object|Function)} options + * + * @returns {string} The formatted url + */ +export default function buildURL(url, params, options) { + if (!params) { + return url; + } + + const _encode = (options && options.encode) || encode; + + const _options = utils.isFunction(options) + ? { + serialize: options, + } + : options; + + const serializeFn = _options && _options.serialize; + + let serializedParams; + + if (serializeFn) { + serializedParams = serializeFn(params, _options); + } else { + serializedParams = utils.isURLSearchParams(params) + ? params.toString() + : new AxiosURLSearchParams(params, _options).toString(_encode); + } + + if (serializedParams) { + const hashmarkIndex = url.indexOf('#'); + + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +} diff --git a/node_modules/axios/lib/helpers/callbackify.js b/node_modules/axios/lib/helpers/callbackify.js new file mode 100644 index 0000000..e8cea68 --- /dev/null +++ b/node_modules/axios/lib/helpers/callbackify.js @@ -0,0 +1,18 @@ +import utils from '../utils.js'; + +const callbackify = (fn, reducer) => { + return utils.isAsyncFn(fn) + ? function (...args) { + const cb = args.pop(); + fn.apply(this, args).then((value) => { + try { + reducer ? cb(null, ...reducer(value)) : cb(null, value); + } catch (err) { + cb(err); + } + }, cb); + } + : fn; +}; + +export default callbackify; diff --git a/node_modules/axios/lib/helpers/combineURLs.js b/node_modules/axios/lib/helpers/combineURLs.js new file mode 100644 index 0000000..9f04f02 --- /dev/null +++ b/node_modules/axios/lib/helpers/combineURLs.js @@ -0,0 +1,15 @@ +'use strict'; + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * + * @returns {string} The combined URL + */ +export default function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +} diff --git a/node_modules/axios/lib/helpers/composeSignals.js b/node_modules/axios/lib/helpers/composeSignals.js new file mode 100644 index 0000000..04e3012 --- /dev/null +++ b/node_modules/axios/lib/helpers/composeSignals.js @@ -0,0 +1,56 @@ +import CanceledError from '../cancel/CanceledError.js'; +import AxiosError from '../core/AxiosError.js'; +import utils from '../utils.js'; + +const composeSignals = (signals, timeout) => { + const { length } = (signals = signals ? signals.filter(Boolean) : []); + + if (timeout || length) { + let controller = new AbortController(); + + let aborted; + + const onabort = function (reason) { + if (!aborted) { + aborted = true; + unsubscribe(); + const err = reason instanceof Error ? reason : this.reason; + controller.abort( + err instanceof AxiosError + ? err + : new CanceledError(err instanceof Error ? err.message : err) + ); + } + }; + + let timer = + timeout && + setTimeout(() => { + timer = null; + onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT)); + }, timeout); + + const unsubscribe = () => { + if (signals) { + timer && clearTimeout(timer); + timer = null; + signals.forEach((signal) => { + signal.unsubscribe + ? signal.unsubscribe(onabort) + : signal.removeEventListener('abort', onabort); + }); + signals = null; + } + }; + + signals.forEach((signal) => signal.addEventListener('abort', onabort)); + + const { signal } = controller; + + signal.unsubscribe = () => utils.asap(unsubscribe); + + return signal; + } +}; + +export default composeSignals; diff --git a/node_modules/axios/lib/helpers/cookies.js b/node_modules/axios/lib/helpers/cookies.js new file mode 100644 index 0000000..1553fb2 --- /dev/null +++ b/node_modules/axios/lib/helpers/cookies.js @@ -0,0 +1,48 @@ +import utils from '../utils.js'; +import platform from '../platform/index.js'; + +export default platform.hasStandardBrowserEnv + ? // Standard browser envs support document.cookie + { + write(name, value, expires, path, domain, secure, sameSite) { + if (typeof document === 'undefined') return; + + const cookie = [`${name}=${encodeURIComponent(value)}`]; + + if (utils.isNumber(expires)) { + cookie.push(`expires=${new Date(expires).toUTCString()}`); + } + if (utils.isString(path)) { + cookie.push(`path=${path}`); + } + if (utils.isString(domain)) { + cookie.push(`domain=${domain}`); + } + if (secure === true) { + cookie.push('secure'); + } + if (utils.isString(sameSite)) { + cookie.push(`SameSite=${sameSite}`); + } + + document.cookie = cookie.join('; '); + }, + + read(name) { + if (typeof document === 'undefined') return null; + const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)')); + return match ? decodeURIComponent(match[1]) : null; + }, + + remove(name) { + this.write(name, '', Date.now() - 86400000, '/'); + }, + } + : // Non-standard browser env (web workers, react-native) lack needed support. + { + write() {}, + read() { + return null; + }, + remove() {}, + }; diff --git a/node_modules/axios/lib/helpers/deprecatedMethod.js b/node_modules/axios/lib/helpers/deprecatedMethod.js new file mode 100644 index 0000000..ec112de --- /dev/null +++ b/node_modules/axios/lib/helpers/deprecatedMethod.js @@ -0,0 +1,31 @@ +'use strict'; + +/*eslint no-console:0*/ + +/** + * Supply a warning to the developer that a method they are using + * has been deprecated. + * + * @param {string} method The name of the deprecated method + * @param {string} [instead] The alternate method to use if applicable + * @param {string} [docs] The documentation URL to get further details + * + * @returns {void} + */ +export default function deprecatedMethod(method, instead, docs) { + try { + console.warn( + 'DEPRECATED method `' + + method + + '`.' + + (instead ? ' Use `' + instead + '` instead.' : '') + + ' This method will be removed in a future release.' + ); + + if (docs) { + console.warn('For more information about usage see ' + docs); + } + } catch (e) { + /* Ignore */ + } +} diff --git a/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js b/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js new file mode 100644 index 0000000..f29a817 --- /dev/null +++ b/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js @@ -0,0 +1,73 @@ +/** + * Estimate decoded byte length of a data:// URL *without* allocating large buffers. + * - For base64: compute exact decoded size using length and padding; + * handle %XX at the character-count level (no string allocation). + * - For non-base64: use UTF-8 byteLength of the encoded body as a safe upper bound. + * + * @param {string} url + * @returns {number} + */ +export default function estimateDataURLDecodedBytes(url) { + if (!url || typeof url !== 'string') return 0; + if (!url.startsWith('data:')) return 0; + + const comma = url.indexOf(','); + if (comma < 0) return 0; + + const meta = url.slice(5, comma); + const body = url.slice(comma + 1); + const isBase64 = /;base64/i.test(meta); + + if (isBase64) { + let effectiveLen = body.length; + const len = body.length; // cache length + + for (let i = 0; i < len; i++) { + if (body.charCodeAt(i) === 37 /* '%' */ && i + 2 < len) { + const a = body.charCodeAt(i + 1); + const b = body.charCodeAt(i + 2); + const isHex = + ((a >= 48 && a <= 57) || (a >= 65 && a <= 70) || (a >= 97 && a <= 102)) && + ((b >= 48 && b <= 57) || (b >= 65 && b <= 70) || (b >= 97 && b <= 102)); + + if (isHex) { + effectiveLen -= 2; + i += 2; + } + } + } + + let pad = 0; + let idx = len - 1; + + const tailIsPct3D = (j) => + j >= 2 && + body.charCodeAt(j - 2) === 37 && // '%' + body.charCodeAt(j - 1) === 51 && // '3' + (body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100); // 'D' or 'd' + + if (idx >= 0) { + if (body.charCodeAt(idx) === 61 /* '=' */) { + pad++; + idx--; + } else if (tailIsPct3D(idx)) { + pad++; + idx -= 3; + } + } + + if (pad === 1 && idx >= 0) { + if (body.charCodeAt(idx) === 61 /* '=' */) { + pad++; + } else if (tailIsPct3D(idx)) { + pad++; + } + } + + const groups = Math.floor(effectiveLen / 4); + const bytes = groups * 3 - (pad || 0); + return bytes > 0 ? bytes : 0; + } + + return Buffer.byteLength(body, 'utf8'); +} diff --git a/node_modules/axios/lib/helpers/formDataToJSON.js b/node_modules/axios/lib/helpers/formDataToJSON.js new file mode 100644 index 0000000..e8db891 --- /dev/null +++ b/node_modules/axios/lib/helpers/formDataToJSON.js @@ -0,0 +1,95 @@ +'use strict'; + +import utils from '../utils.js'; + +/** + * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] + * + * @param {string} name - The name of the property to get. + * + * @returns An array of strings. + */ +function parsePropPath(name) { + // foo[x][y][z] + // foo.x.y.z + // foo-x-y-z + // foo x y z + return utils.matchAll(/\w+|\[(\w*)]/g, name).map((match) => { + return match[0] === '[]' ? '' : match[1] || match[0]; + }); +} + +/** + * Convert an array to an object. + * + * @param {Array} arr - The array to convert to an object. + * + * @returns An object with the same keys and values as the array. + */ +function arrayToObject(arr) { + const obj = {}; + const keys = Object.keys(arr); + let i; + const len = keys.length; + let key; + for (i = 0; i < len; i++) { + key = keys[i]; + obj[key] = arr[key]; + } + return obj; +} + +/** + * It takes a FormData object and returns a JavaScript object + * + * @param {string} formData The FormData object to convert to JSON. + * + * @returns {Object | null} The converted object. + */ +function formDataToJSON(formData) { + function buildPath(path, value, target, index) { + let name = path[index++]; + + if (name === '__proto__') return true; + + const isNumericKey = Number.isFinite(+name); + const isLast = index >= path.length; + name = !name && utils.isArray(target) ? target.length : name; + + if (isLast) { + if (utils.hasOwnProp(target, name)) { + target[name] = [target[name], value]; + } else { + target[name] = value; + } + + return !isNumericKey; + } + + if (!target[name] || !utils.isObject(target[name])) { + target[name] = []; + } + + const result = buildPath(path, value, target[name], index); + + if (result && utils.isArray(target[name])) { + target[name] = arrayToObject(target[name]); + } + + return !isNumericKey; + } + + if (utils.isFormData(formData) && utils.isFunction(formData.entries)) { + const obj = {}; + + utils.forEachEntry(formData, (name, value) => { + buildPath(parsePropPath(name), value, obj, 0); + }); + + return obj; + } + + return null; +} + +export default formDataToJSON; diff --git a/node_modules/axios/lib/helpers/formDataToStream.js b/node_modules/axios/lib/helpers/formDataToStream.js new file mode 100644 index 0000000..f191e8c --- /dev/null +++ b/node_modules/axios/lib/helpers/formDataToStream.js @@ -0,0 +1,118 @@ +import util from 'util'; +import { Readable } from 'stream'; +import utils from '../utils.js'; +import readBlob from './readBlob.js'; +import platform from '../platform/index.js'; + +const BOUNDARY_ALPHABET = platform.ALPHABET.ALPHA_DIGIT + '-_'; + +const textEncoder = typeof TextEncoder === 'function' ? new TextEncoder() : new util.TextEncoder(); + +const CRLF = '\r\n'; +const CRLF_BYTES = textEncoder.encode(CRLF); +const CRLF_BYTES_COUNT = 2; + +class FormDataPart { + constructor(name, value) { + const { escapeName } = this.constructor; + const isStringValue = utils.isString(value); + + let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${ + !isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : '' + }${CRLF}`; + + if (isStringValue) { + value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF)); + } else { + headers += `Content-Type: ${value.type || 'application/octet-stream'}${CRLF}`; + } + + this.headers = textEncoder.encode(headers + CRLF); + + this.contentLength = isStringValue ? value.byteLength : value.size; + + this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT; + + this.name = name; + this.value = value; + } + + async *encode() { + yield this.headers; + + const { value } = this; + + if (utils.isTypedArray(value)) { + yield value; + } else { + yield* readBlob(value); + } + + yield CRLF_BYTES; + } + + static escapeName(name) { + return String(name).replace( + /[\r\n"]/g, + (match) => + ({ + '\r': '%0D', + '\n': '%0A', + '"': '%22', + })[match] + ); + } +} + +const formDataToStream = (form, headersHandler, options) => { + const { + tag = 'form-data-boundary', + size = 25, + boundary = tag + '-' + platform.generateString(size, BOUNDARY_ALPHABET), + } = options || {}; + + if (!utils.isFormData(form)) { + throw TypeError('FormData instance required'); + } + + if (boundary.length < 1 || boundary.length > 70) { + throw Error('boundary must be 10-70 characters long'); + } + + const boundaryBytes = textEncoder.encode('--' + boundary + CRLF); + const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF); + let contentLength = footerBytes.byteLength; + + const parts = Array.from(form.entries()).map(([name, value]) => { + const part = new FormDataPart(name, value); + contentLength += part.size; + return part; + }); + + contentLength += boundaryBytes.byteLength * parts.length; + + contentLength = utils.toFiniteNumber(contentLength); + + const computedHeaders = { + 'Content-Type': `multipart/form-data; boundary=${boundary}`, + }; + + if (Number.isFinite(contentLength)) { + computedHeaders['Content-Length'] = contentLength; + } + + headersHandler && headersHandler(computedHeaders); + + return Readable.from( + (async function* () { + for (const part of parts) { + yield boundaryBytes; + yield* part.encode(); + } + + yield footerBytes; + })() + ); +}; + +export default formDataToStream; diff --git a/node_modules/axios/lib/helpers/fromDataURI.js b/node_modules/axios/lib/helpers/fromDataURI.js new file mode 100644 index 0000000..989a417 --- /dev/null +++ b/node_modules/axios/lib/helpers/fromDataURI.js @@ -0,0 +1,53 @@ +'use strict'; + +import AxiosError from '../core/AxiosError.js'; +import parseProtocol from './parseProtocol.js'; +import platform from '../platform/index.js'; + +const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/; + +/** + * Parse data uri to a Buffer or Blob + * + * @param {String} uri + * @param {?Boolean} asBlob + * @param {?Object} options + * @param {?Function} options.Blob + * + * @returns {Buffer|Blob} + */ +export default function fromDataURI(uri, asBlob, options) { + const _Blob = (options && options.Blob) || platform.classes.Blob; + const protocol = parseProtocol(uri); + + if (asBlob === undefined && _Blob) { + asBlob = true; + } + + if (protocol === 'data') { + uri = protocol.length ? uri.slice(protocol.length + 1) : uri; + + const match = DATA_URL_PATTERN.exec(uri); + + if (!match) { + throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL); + } + + const mime = match[1]; + const isBase64 = match[2]; + const body = match[3]; + const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8'); + + if (asBlob) { + if (!_Blob) { + throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT); + } + + return new _Blob([buffer], { type: mime }); + } + + return buffer; + } + + throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT); +} diff --git a/node_modules/axios/lib/helpers/isAbsoluteURL.js b/node_modules/axios/lib/helpers/isAbsoluteURL.js new file mode 100644 index 0000000..c461900 --- /dev/null +++ b/node_modules/axios/lib/helpers/isAbsoluteURL.js @@ -0,0 +1,19 @@ +'use strict'; + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +export default function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + if (typeof url !== 'string') { + return false; + } + + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); +} diff --git a/node_modules/axios/lib/helpers/isAxiosError.js b/node_modules/axios/lib/helpers/isAxiosError.js new file mode 100644 index 0000000..ffba610 --- /dev/null +++ b/node_modules/axios/lib/helpers/isAxiosError.js @@ -0,0 +1,14 @@ +'use strict'; + +import utils from '../utils.js'; + +/** + * Determines whether the payload is an error thrown by Axios + * + * @param {*} payload The value to test + * + * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false + */ +export default function isAxiosError(payload) { + return utils.isObject(payload) && payload.isAxiosError === true; +} diff --git a/node_modules/axios/lib/helpers/isURLSameOrigin.js b/node_modules/axios/lib/helpers/isURLSameOrigin.js new file mode 100644 index 0000000..66af274 --- /dev/null +++ b/node_modules/axios/lib/helpers/isURLSameOrigin.js @@ -0,0 +1,16 @@ +import platform from '../platform/index.js'; + +export default platform.hasStandardBrowserEnv + ? ((origin, isMSIE) => (url) => { + url = new URL(url, platform.origin); + + return ( + origin.protocol === url.protocol && + origin.host === url.host && + (isMSIE || origin.port === url.port) + ); + })( + new URL(platform.origin), + platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent) + ) + : () => true; diff --git a/node_modules/axios/lib/helpers/null.js b/node_modules/axios/lib/helpers/null.js new file mode 100644 index 0000000..b9f82c4 --- /dev/null +++ b/node_modules/axios/lib/helpers/null.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line strict +export default null; diff --git a/node_modules/axios/lib/helpers/parseHeaders.js b/node_modules/axios/lib/helpers/parseHeaders.js new file mode 100644 index 0000000..fb0eba4 --- /dev/null +++ b/node_modules/axios/lib/helpers/parseHeaders.js @@ -0,0 +1,69 @@ +'use strict'; + +import utils from '../utils.js'; + +// RawAxiosHeaders whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +const ignoreDuplicateOf = utils.toObjectSet([ + 'age', + 'authorization', + 'content-length', + 'content-type', + 'etag', + 'expires', + 'from', + 'host', + 'if-modified-since', + 'if-unmodified-since', + 'last-modified', + 'location', + 'max-forwards', + 'proxy-authorization', + 'referer', + 'retry-after', + 'user-agent', +]); + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} rawHeaders Headers needing to be parsed + * + * @returns {Object} Headers parsed into an object + */ +export default (rawHeaders) => { + const parsed = {}; + let key; + let val; + let i; + + rawHeaders && + rawHeaders.split('\n').forEach(function parser(line) { + i = line.indexOf(':'); + key = line.substring(0, i).trim().toLowerCase(); + val = line.substring(i + 1).trim(); + + if (!key || (parsed[key] && ignoreDuplicateOf[key])) { + return; + } + + if (key === 'set-cookie') { + if (parsed[key]) { + parsed[key].push(val); + } else { + parsed[key] = [val]; + } + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + }); + + return parsed; +}; diff --git a/node_modules/axios/lib/helpers/parseProtocol.js b/node_modules/axios/lib/helpers/parseProtocol.js new file mode 100644 index 0000000..1ad6658 --- /dev/null +++ b/node_modules/axios/lib/helpers/parseProtocol.js @@ -0,0 +1,6 @@ +'use strict'; + +export default function parseProtocol(url) { + const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); + return (match && match[1]) || ''; +} diff --git a/node_modules/axios/lib/helpers/progressEventReducer.js b/node_modules/axios/lib/helpers/progressEventReducer.js new file mode 100644 index 0000000..d09d753 --- /dev/null +++ b/node_modules/axios/lib/helpers/progressEventReducer.js @@ -0,0 +1,51 @@ +import speedometer from './speedometer.js'; +import throttle from './throttle.js'; +import utils from '../utils.js'; + +export const progressEventReducer = (listener, isDownloadStream, freq = 3) => { + let bytesNotified = 0; + const _speedometer = speedometer(50, 250); + + return throttle((e) => { + const loaded = e.loaded; + const total = e.lengthComputable ? e.total : undefined; + const progressBytes = loaded - bytesNotified; + const rate = _speedometer(progressBytes); + const inRange = loaded <= total; + + bytesNotified = loaded; + + const data = { + loaded, + total, + progress: total ? loaded / total : undefined, + bytes: progressBytes, + rate: rate ? rate : undefined, + estimated: rate && total && inRange ? (total - loaded) / rate : undefined, + event: e, + lengthComputable: total != null, + [isDownloadStream ? 'download' : 'upload']: true, + }; + + listener(data); + }, freq); +}; + +export const progressEventDecorator = (total, throttled) => { + const lengthComputable = total != null; + + return [ + (loaded) => + throttled[0]({ + lengthComputable, + total, + loaded, + }), + throttled[1], + ]; +}; + +export const asyncDecorator = + (fn) => + (...args) => + utils.asap(() => fn(...args)); diff --git a/node_modules/axios/lib/helpers/readBlob.js b/node_modules/axios/lib/helpers/readBlob.js new file mode 100644 index 0000000..87d0ea8 --- /dev/null +++ b/node_modules/axios/lib/helpers/readBlob.js @@ -0,0 +1,15 @@ +const { asyncIterator } = Symbol; + +const readBlob = async function* (blob) { + if (blob.stream) { + yield* blob.stream(); + } else if (blob.arrayBuffer) { + yield await blob.arrayBuffer(); + } else if (blob[asyncIterator]) { + yield* blob[asyncIterator](); + } else { + yield blob; + } +}; + +export default readBlob; diff --git a/node_modules/axios/lib/helpers/resolveConfig.js b/node_modules/axios/lib/helpers/resolveConfig.js new file mode 100644 index 0000000..bf22d59 --- /dev/null +++ b/node_modules/axios/lib/helpers/resolveConfig.js @@ -0,0 +1,70 @@ +import platform from '../platform/index.js'; +import utils from '../utils.js'; +import isURLSameOrigin from './isURLSameOrigin.js'; +import cookies from './cookies.js'; +import buildFullPath from '../core/buildFullPath.js'; +import mergeConfig from '../core/mergeConfig.js'; +import AxiosHeaders from '../core/AxiosHeaders.js'; +import buildURL from './buildURL.js'; + +export default (config) => { + const newConfig = mergeConfig({}, config); + + let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig; + + newConfig.headers = headers = AxiosHeaders.from(headers); + + newConfig.url = buildURL( + buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), + config.params, + config.paramsSerializer + ); + + // HTTP basic authentication + if (auth) { + headers.set( + 'Authorization', + 'Basic ' + + btoa( + (auth.username || '') + + ':' + + (auth.password ? unescape(encodeURIComponent(auth.password)) : '') + ) + ); + } + + if (utils.isFormData(data)) { + if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { + headers.setContentType(undefined); // browser handles it + } else if (utils.isFunction(data.getHeaders)) { + // Node.js FormData (like form-data package) + const formHeaders = data.getHeaders(); + // Only set safe headers to avoid overwriting security headers + const allowedHeaders = ['content-type', 'content-length']; + Object.entries(formHeaders).forEach(([key, val]) => { + if (allowedHeaders.includes(key.toLowerCase())) { + headers.set(key, val); + } + }); + } + } + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + + if (platform.hasStandardBrowserEnv) { + withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig)); + + if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) { + // Add xsrf header + const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); + + if (xsrfValue) { + headers.set(xsrfHeaderName, xsrfValue); + } + } + } + + return newConfig; +}; diff --git a/node_modules/axios/lib/helpers/speedometer.js b/node_modules/axios/lib/helpers/speedometer.js new file mode 100644 index 0000000..566a1ff --- /dev/null +++ b/node_modules/axios/lib/helpers/speedometer.js @@ -0,0 +1,55 @@ +'use strict'; + +/** + * Calculate data maxRate + * @param {Number} [samplesCount= 10] + * @param {Number} [min= 1000] + * @returns {Function} + */ +function speedometer(samplesCount, min) { + samplesCount = samplesCount || 10; + const bytes = new Array(samplesCount); + const timestamps = new Array(samplesCount); + let head = 0; + let tail = 0; + let firstSampleTS; + + min = min !== undefined ? min : 1000; + + return function push(chunkLength) { + const now = Date.now(); + + const startedAt = timestamps[tail]; + + if (!firstSampleTS) { + firstSampleTS = now; + } + + bytes[head] = chunkLength; + timestamps[head] = now; + + let i = tail; + let bytesCount = 0; + + while (i !== head) { + bytesCount += bytes[i++]; + i = i % samplesCount; + } + + head = (head + 1) % samplesCount; + + if (head === tail) { + tail = (tail + 1) % samplesCount; + } + + if (now - firstSampleTS < min) { + return; + } + + const passed = startedAt && now - startedAt; + + return passed ? Math.round((bytesCount * 1000) / passed) : undefined; + }; +} + +export default speedometer; diff --git a/node_modules/axios/lib/helpers/spread.js b/node_modules/axios/lib/helpers/spread.js new file mode 100644 index 0000000..2e72fc8 --- /dev/null +++ b/node_modules/axios/lib/helpers/spread.js @@ -0,0 +1,28 @@ +'use strict'; + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * const args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * + * @returns {Function} + */ +export default function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +} diff --git a/node_modules/axios/lib/helpers/throttle.js b/node_modules/axios/lib/helpers/throttle.js new file mode 100644 index 0000000..fbef472 --- /dev/null +++ b/node_modules/axios/lib/helpers/throttle.js @@ -0,0 +1,44 @@ +/** + * Throttle decorator + * @param {Function} fn + * @param {Number} freq + * @return {Function} + */ +function throttle(fn, freq) { + let timestamp = 0; + let threshold = 1000 / freq; + let lastArgs; + let timer; + + const invoke = (args, now = Date.now()) => { + timestamp = now; + lastArgs = null; + if (timer) { + clearTimeout(timer); + timer = null; + } + fn(...args); + }; + + const throttled = (...args) => { + const now = Date.now(); + const passed = now - timestamp; + if (passed >= threshold) { + invoke(args, now); + } else { + lastArgs = args; + if (!timer) { + timer = setTimeout(() => { + timer = null; + invoke(lastArgs); + }, threshold - passed); + } + } + }; + + const flush = () => lastArgs && invoke(lastArgs); + + return [throttled, flush]; +} + +export default throttle; diff --git a/node_modules/axios/lib/helpers/toFormData.js b/node_modules/axios/lib/helpers/toFormData.js new file mode 100644 index 0000000..014c551 --- /dev/null +++ b/node_modules/axios/lib/helpers/toFormData.js @@ -0,0 +1,241 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosError from '../core/AxiosError.js'; +// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored +import PlatformFormData from '../platform/node/classes/FormData.js'; + +/** + * Determines if the given thing is a array or js object. + * + * @param {string} thing - The object or array to be visited. + * + * @returns {boolean} + */ +function isVisitable(thing) { + return utils.isPlainObject(thing) || utils.isArray(thing); +} + +/** + * It removes the brackets from the end of a string + * + * @param {string} key - The key of the parameter. + * + * @returns {string} the key without the brackets. + */ +function removeBrackets(key) { + return utils.endsWith(key, '[]') ? key.slice(0, -2) : key; +} + +/** + * It takes a path, a key, and a boolean, and returns a string + * + * @param {string} path - The path to the current key. + * @param {string} key - The key of the current object being iterated over. + * @param {string} dots - If true, the key will be rendered with dots instead of brackets. + * + * @returns {string} The path to the current key. + */ +function renderKey(path, key, dots) { + if (!path) return key; + return path + .concat(key) + .map(function each(token, i) { + // eslint-disable-next-line no-param-reassign + token = removeBrackets(token); + return !dots && i ? '[' + token + ']' : token; + }) + .join(dots ? '.' : ''); +} + +/** + * If the array is an array and none of its elements are visitable, then it's a flat array. + * + * @param {Array} arr - The array to check + * + * @returns {boolean} + */ +function isFlatArray(arr) { + return utils.isArray(arr) && !arr.some(isVisitable); +} + +const predicates = utils.toFlatObject(utils, {}, null, function filter(prop) { + return /^is[A-Z]/.test(prop); +}); + +/** + * Convert a data object to FormData + * + * @param {Object} obj + * @param {?Object} [formData] + * @param {?Object} [options] + * @param {Function} [options.visitor] + * @param {Boolean} [options.metaTokens = true] + * @param {Boolean} [options.dots = false] + * @param {?Boolean} [options.indexes = false] + * + * @returns {Object} + **/ + +/** + * It converts an object into a FormData object + * + * @param {Object} obj - The object to convert to form data. + * @param {string} formData - The FormData object to append to. + * @param {Object} options + * + * @returns + */ +function toFormData(obj, formData, options) { + if (!utils.isObject(obj)) { + throw new TypeError('target must be an object'); + } + + // eslint-disable-next-line no-param-reassign + formData = formData || new (PlatformFormData || FormData)(); + + // eslint-disable-next-line no-param-reassign + options = utils.toFlatObject( + options, + { + metaTokens: true, + dots: false, + indexes: false, + }, + false, + function defined(option, source) { + // eslint-disable-next-line no-eq-null,eqeqeq + return !utils.isUndefined(source[option]); + } + ); + + const metaTokens = options.metaTokens; + // eslint-disable-next-line no-use-before-define + const visitor = options.visitor || defaultVisitor; + const dots = options.dots; + const indexes = options.indexes; + const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob); + const useBlob = _Blob && utils.isSpecCompliantForm(formData); + + if (!utils.isFunction(visitor)) { + throw new TypeError('visitor must be a function'); + } + + function convertValue(value) { + if (value === null) return ''; + + if (utils.isDate(value)) { + return value.toISOString(); + } + + if (utils.isBoolean(value)) { + return value.toString(); + } + + if (!useBlob && utils.isBlob(value)) { + throw new AxiosError('Blob is not supported. Use a Buffer instead.'); + } + + if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) { + return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); + } + + return value; + } + + /** + * Default visitor. + * + * @param {*} value + * @param {String|Number} key + * @param {Array} path + * @this {FormData} + * + * @returns {boolean} return true to visit the each prop of the value recursively + */ + function defaultVisitor(value, key, path) { + let arr = value; + + if (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) { + formData.append(renderKey(path, key, dots), convertValue(value)); + return false; + } + + if (value && !path && typeof value === 'object') { + if (utils.endsWith(key, '{}')) { + // eslint-disable-next-line no-param-reassign + key = metaTokens ? key : key.slice(0, -2); + // eslint-disable-next-line no-param-reassign + value = JSON.stringify(value); + } else if ( + (utils.isArray(value) && isFlatArray(value)) || + ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))) + ) { + // eslint-disable-next-line no-param-reassign + key = removeBrackets(key); + + arr.forEach(function each(el, index) { + !(utils.isUndefined(el) || el === null) && + formData.append( + // eslint-disable-next-line no-nested-ternary + indexes === true + ? renderKey([key], index, dots) + : indexes === null + ? key + : key + '[]', + convertValue(el) + ); + }); + return false; + } + } + + if (isVisitable(value)) { + return true; + } + + formData.append(renderKey(path, key, dots), convertValue(value)); + + return false; + } + + const stack = []; + + const exposedHelpers = Object.assign(predicates, { + defaultVisitor, + convertValue, + isVisitable, + }); + + function build(value, path) { + if (utils.isUndefined(value)) return; + + if (stack.indexOf(value) !== -1) { + throw Error('Circular reference detected in ' + path.join('.')); + } + + stack.push(value); + + utils.forEach(value, function each(el, key) { + const result = + !(utils.isUndefined(el) || el === null) && + visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers); + + if (result === true) { + build(el, path ? path.concat(key) : [key]); + } + }); + + stack.pop(); + } + + if (!utils.isObject(obj)) { + throw new TypeError('data must be an object'); + } + + build(obj); + + return formData; +} + +export default toFormData; diff --git a/node_modules/axios/lib/helpers/toURLEncodedForm.js b/node_modules/axios/lib/helpers/toURLEncodedForm.js new file mode 100644 index 0000000..749e13a --- /dev/null +++ b/node_modules/axios/lib/helpers/toURLEncodedForm.js @@ -0,0 +1,19 @@ +'use strict'; + +import utils from '../utils.js'; +import toFormData from './toFormData.js'; +import platform from '../platform/index.js'; + +export default function toURLEncodedForm(data, options) { + return toFormData(data, new platform.classes.URLSearchParams(), { + visitor: function (value, key, path, helpers) { + if (platform.isNode && utils.isBuffer(value)) { + this.append(key, value.toString('base64')); + return false; + } + + return helpers.defaultVisitor.apply(this, arguments); + }, + ...options, + }); +} diff --git a/node_modules/axios/lib/helpers/trackStream.js b/node_modules/axios/lib/helpers/trackStream.js new file mode 100644 index 0000000..c75eace --- /dev/null +++ b/node_modules/axios/lib/helpers/trackStream.js @@ -0,0 +1,89 @@ +export const streamChunk = function* (chunk, chunkSize) { + let len = chunk.byteLength; + + if (!chunkSize || len < chunkSize) { + yield chunk; + return; + } + + let pos = 0; + let end; + + while (pos < len) { + end = pos + chunkSize; + yield chunk.slice(pos, end); + pos = end; + } +}; + +export const readBytes = async function* (iterable, chunkSize) { + for await (const chunk of readStream(iterable)) { + yield* streamChunk(chunk, chunkSize); + } +}; + +const readStream = async function* (stream) { + if (stream[Symbol.asyncIterator]) { + yield* stream; + return; + } + + const reader = stream.getReader(); + try { + for (;;) { + const { done, value } = await reader.read(); + if (done) { + break; + } + yield value; + } + } finally { + await reader.cancel(); + } +}; + +export const trackStream = (stream, chunkSize, onProgress, onFinish) => { + const iterator = readBytes(stream, chunkSize); + + let bytes = 0; + let done; + let _onFinish = (e) => { + if (!done) { + done = true; + onFinish && onFinish(e); + } + }; + + return new ReadableStream( + { + async pull(controller) { + try { + const { done, value } = await iterator.next(); + + if (done) { + _onFinish(); + controller.close(); + return; + } + + let len = value.byteLength; + if (onProgress) { + let loadedBytes = (bytes += len); + onProgress(loadedBytes); + } + controller.enqueue(new Uint8Array(value)); + } catch (err) { + _onFinish(err); + throw err; + } + }, + cancel(reason) { + _onFinish(reason); + return iterator.return(); + }, + }, + { + highWaterMark: 2, + } + ); +}; diff --git a/node_modules/axios/lib/helpers/validator.js b/node_modules/axios/lib/helpers/validator.js new file mode 100644 index 0000000..22798aa --- /dev/null +++ b/node_modules/axios/lib/helpers/validator.js @@ -0,0 +1,110 @@ +'use strict'; + +import { VERSION } from '../env/data.js'; +import AxiosError from '../core/AxiosError.js'; + +const validators = {}; + +// eslint-disable-next-line func-names +['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { + validators[type] = function validator(thing) { + return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; + }; +}); + +const deprecatedWarnings = {}; + +/** + * Transitional option validator + * + * @param {function|boolean?} validator - set to false if the transitional option has been removed + * @param {string?} version - deprecated version / removed since version + * @param {string?} message - some message with additional info + * + * @returns {function} + */ +validators.transitional = function transitional(validator, version, message) { + function formatMessage(opt, desc) { + return ( + '[Axios v' + + VERSION + + "] Transitional option '" + + opt + + "'" + + desc + + (message ? '. ' + message : '') + ); + } + + // eslint-disable-next-line func-names + return (value, opt, opts) => { + if (validator === false) { + throw new AxiosError( + formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), + AxiosError.ERR_DEPRECATED + ); + } + + if (version && !deprecatedWarnings[opt]) { + deprecatedWarnings[opt] = true; + // eslint-disable-next-line no-console + console.warn( + formatMessage( + opt, + ' has been deprecated since v' + version + ' and will be removed in the near future' + ) + ); + } + + return validator ? validator(value, opt, opts) : true; + }; +}; + +validators.spelling = function spelling(correctSpelling) { + return (value, opt) => { + // eslint-disable-next-line no-console + console.warn(`${opt} is likely a misspelling of ${correctSpelling}`); + return true; + }; +}; + +/** + * Assert object's properties type + * + * @param {object} options + * @param {object} schema + * @param {boolean?} allowUnknown + * + * @returns {object} + */ + +function assertOptions(options, schema, allowUnknown) { + if (typeof options !== 'object') { + throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); + } + const keys = Object.keys(options); + let i = keys.length; + while (i-- > 0) { + const opt = keys[i]; + const validator = schema[opt]; + if (validator) { + const value = options[opt]; + const result = value === undefined || validator(value, opt, options); + if (result !== true) { + throw new AxiosError( + 'option ' + opt + ' must be ' + result, + AxiosError.ERR_BAD_OPTION_VALUE + ); + } + continue; + } + if (allowUnknown !== true) { + throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); + } + } +} + +export default { + assertOptions, + validators, +}; diff --git a/node_modules/axios/lib/platform/browser/classes/Blob.js b/node_modules/axios/lib/platform/browser/classes/Blob.js new file mode 100644 index 0000000..9ec4af8 --- /dev/null +++ b/node_modules/axios/lib/platform/browser/classes/Blob.js @@ -0,0 +1,3 @@ +'use strict'; + +export default typeof Blob !== 'undefined' ? Blob : null; diff --git a/node_modules/axios/lib/platform/browser/classes/FormData.js b/node_modules/axios/lib/platform/browser/classes/FormData.js new file mode 100644 index 0000000..f36d31b --- /dev/null +++ b/node_modules/axios/lib/platform/browser/classes/FormData.js @@ -0,0 +1,3 @@ +'use strict'; + +export default typeof FormData !== 'undefined' ? FormData : null; diff --git a/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js b/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js new file mode 100644 index 0000000..b7dae95 --- /dev/null +++ b/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js @@ -0,0 +1,4 @@ +'use strict'; + +import AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js'; +export default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; diff --git a/node_modules/axios/lib/platform/browser/index.js b/node_modules/axios/lib/platform/browser/index.js new file mode 100644 index 0000000..8e5f99c --- /dev/null +++ b/node_modules/axios/lib/platform/browser/index.js @@ -0,0 +1,13 @@ +import URLSearchParams from './classes/URLSearchParams.js'; +import FormData from './classes/FormData.js'; +import Blob from './classes/Blob.js'; + +export default { + isBrowser: true, + classes: { + URLSearchParams, + FormData, + Blob, + }, + protocols: ['http', 'https', 'file', 'blob', 'url', 'data'], +}; diff --git a/node_modules/axios/lib/platform/common/utils.js b/node_modules/axios/lib/platform/common/utils.js new file mode 100644 index 0000000..e4dfe46 --- /dev/null +++ b/node_modules/axios/lib/platform/common/utils.js @@ -0,0 +1,52 @@ +const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; + +const _navigator = (typeof navigator === 'object' && navigator) || undefined; + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + * + * @returns {boolean} + */ +const hasStandardBrowserEnv = + hasBrowserEnv && + (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0); + +/** + * Determine if we're running in a standard browser webWorker environment + * + * Although the `isStandardBrowserEnv` method indicates that + * `allows axios to run in a web worker`, the WebWorker will still be + * filtered out due to its judgment standard + * `typeof window !== 'undefined' && typeof document !== 'undefined'`. + * This leads to a problem when axios post `FormData` in webWorker + */ +const hasStandardBrowserWebWorkerEnv = (() => { + return ( + typeof WorkerGlobalScope !== 'undefined' && + // eslint-disable-next-line no-undef + self instanceof WorkerGlobalScope && + typeof self.importScripts === 'function' + ); +})(); + +const origin = (hasBrowserEnv && window.location.href) || 'http://localhost'; + +export { + hasBrowserEnv, + hasStandardBrowserWebWorkerEnv, + hasStandardBrowserEnv, + _navigator as navigator, + origin, +}; diff --git a/node_modules/axios/lib/platform/index.js b/node_modules/axios/lib/platform/index.js new file mode 100644 index 0000000..e1094ab --- /dev/null +++ b/node_modules/axios/lib/platform/index.js @@ -0,0 +1,7 @@ +import platform from './node/index.js'; +import * as utils from './common/utils.js'; + +export default { + ...utils, + ...platform, +}; diff --git a/node_modules/axios/lib/platform/node/classes/FormData.js b/node_modules/axios/lib/platform/node/classes/FormData.js new file mode 100644 index 0000000..b07f947 --- /dev/null +++ b/node_modules/axios/lib/platform/node/classes/FormData.js @@ -0,0 +1,3 @@ +import FormData from 'form-data'; + +export default FormData; diff --git a/node_modules/axios/lib/platform/node/classes/URLSearchParams.js b/node_modules/axios/lib/platform/node/classes/URLSearchParams.js new file mode 100644 index 0000000..fba5842 --- /dev/null +++ b/node_modules/axios/lib/platform/node/classes/URLSearchParams.js @@ -0,0 +1,4 @@ +'use strict'; + +import url from 'url'; +export default url.URLSearchParams; diff --git a/node_modules/axios/lib/platform/node/index.js b/node_modules/axios/lib/platform/node/index.js new file mode 100644 index 0000000..9979a71 --- /dev/null +++ b/node_modules/axios/lib/platform/node/index.js @@ -0,0 +1,37 @@ +import crypto from 'crypto'; +import URLSearchParams from './classes/URLSearchParams.js'; +import FormData from './classes/FormData.js'; + +const ALPHA = 'abcdefghijklmnopqrstuvwxyz'; + +const DIGIT = '0123456789'; + +const ALPHABET = { + DIGIT, + ALPHA, + ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT, +}; + +const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { + let str = ''; + const { length } = alphabet; + const randomValues = new Uint32Array(size); + crypto.randomFillSync(randomValues); + for (let i = 0; i < size; i++) { + str += alphabet[randomValues[i] % length]; + } + + return str; +}; + +export default { + isNode: true, + classes: { + URLSearchParams, + FormData, + Blob: (typeof Blob !== 'undefined' && Blob) || null, + }, + ALPHABET, + generateString, + protocols: ['http', 'https', 'file', 'data'], +}; diff --git a/node_modules/axios/lib/utils.js b/node_modules/axios/lib/utils.js new file mode 100644 index 0000000..73c4f0d --- /dev/null +++ b/node_modules/axios/lib/utils.js @@ -0,0 +1,919 @@ +'use strict'; + +import bind from './helpers/bind.js'; + +// utils is a library of generic helper functions non-specific to axios + +const { toString } = Object.prototype; +const { getPrototypeOf } = Object; +const { iterator, toStringTag } = Symbol; + +const kindOf = ((cache) => (thing) => { + const str = toString.call(thing); + return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); +})(Object.create(null)); + +const kindOfTest = (type) => { + type = type.toLowerCase(); + return (thing) => kindOf(thing) === type; +}; + +const typeOfTest = (type) => (thing) => typeof thing === type; + +/** + * Determine if a value is a non-null object + * + * @param {Object} val The value to test + * + * @returns {boolean} True if value is an Array, otherwise false + */ +const { isArray } = Array; + +/** + * Determine if a value is undefined + * + * @param {*} val The value to test + * + * @returns {boolean} True if the value is undefined, otherwise false + */ +const isUndefined = typeOfTest('undefined'); + +/** + * Determine if a value is a Buffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return ( + val !== null && + !isUndefined(val) && + val.constructor !== null && + !isUndefined(val.constructor) && + isFunction(val.constructor.isBuffer) && + val.constructor.isBuffer(val) + ); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +const isArrayBuffer = kindOfTest('ArrayBuffer'); + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + let result; + if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) { + result = ArrayBuffer.isView(val); + } else { + result = val && val.buffer && isArrayBuffer(val.buffer); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a String, otherwise false + */ +const isString = typeOfTest('string'); + +/** + * Determine if a value is a Function + * + * @param {*} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +const isFunction = typeOfTest('function'); + +/** + * Determine if a value is a Number + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Number, otherwise false + */ +const isNumber = typeOfTest('number'); + +/** + * Determine if a value is an Object + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an Object, otherwise false + */ +const isObject = (thing) => thing !== null && typeof thing === 'object'; + +/** + * Determine if a value is a Boolean + * + * @param {*} thing The value to test + * @returns {boolean} True if value is a Boolean, otherwise false + */ +const isBoolean = (thing) => thing === true || thing === false; + +/** + * Determine if a value is a plain Object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a plain Object, otherwise false + */ +const isPlainObject = (val) => { + if (kindOf(val) !== 'object') { + return false; + } + + const prototype = getPrototypeOf(val); + return ( + (prototype === null || + prototype === Object.prototype || + Object.getPrototypeOf(prototype) === null) && + !(toStringTag in val) && + !(iterator in val) + ); +}; + +/** + * Determine if a value is an empty object (safely handles Buffers) + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an empty object, otherwise false + */ +const isEmptyObject = (val) => { + // Early return for non-objects or Buffers to prevent RangeError + if (!isObject(val) || isBuffer(val)) { + return false; + } + + try { + return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype; + } catch (e) { + // Fallback for any other objects that might cause RangeError with Object.keys() + return false; + } +}; + +/** + * Determine if a value is a Date + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Date, otherwise false + */ +const isDate = kindOfTest('Date'); + +/** + * Determine if a value is a File + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFile = kindOfTest('File'); + +/** + * Determine if a value is a React Native Blob + * React Native "blob": an object with a `uri` attribute. Optionally, it can + * also have a `name` and `type` attribute to specify filename and content type + * + * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71 + * + * @param {*} value The value to test + * + * @returns {boolean} True if value is a React Native Blob, otherwise false + */ +const isReactNativeBlob = (value) => { + return !!(value && typeof value.uri !== 'undefined'); +} + +/** + * Determine if environment is React Native + * ReactNative `FormData` has a non-standard `getParts()` method + * + * @param {*} formData The formData to test + * + * @returns {boolean} True if environment is React Native, otherwise false + */ +const isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined'; + +/** + * Determine if a value is a Blob + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Blob, otherwise false + */ +const isBlob = kindOfTest('Blob'); + +/** + * Determine if a value is a FileList + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFileList = kindOfTest('FileList'); + +/** + * Determine if a value is a Stream + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Stream, otherwise false + */ +const isStream = (val) => isObject(val) && isFunction(val.pipe); + +/** + * Determine if a value is a FormData + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an FormData, otherwise false + */ +function getGlobal() { + if (typeof globalThis !== 'undefined') return globalThis; + if (typeof self !== 'undefined') return self; + if (typeof window !== 'undefined') return window; + if (typeof global !== 'undefined') return global; + return {}; +} + +const G = getGlobal(); +const FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined; + +const isFormData = (thing) => { + let kind; + return thing && ( + (FormDataCtor && thing instanceof FormDataCtor) || ( + isFunction(thing.append) && ( + (kind = kindOf(thing)) === 'formdata' || + // detect form-data instance + (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]') + ) + ) + ); +}; + +/** + * Determine if a value is a URLSearchParams object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +const isURLSearchParams = kindOfTest('URLSearchParams'); + +const [isReadableStream, isRequest, isResponse, isHeaders] = [ + 'ReadableStream', + 'Request', + 'Response', + 'Headers', +].map(kindOfTest); + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * + * @returns {String} The String freed of excess whitespace + */ +const trim = (str) => { + return str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); +}; +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + * + * @param {Object} [options] + * @param {Boolean} [options.allOwnKeys = false] + * @returns {any} + */ +function forEach(obj, fn, { allOwnKeys = false } = {}) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + let i; + let l; + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Buffer check + if (isBuffer(obj)) { + return; + } + + // Iterate over object keys + const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); + const len = keys.length; + let key; + + for (i = 0; i < len; i++) { + key = keys[i]; + fn.call(null, obj[key], key, obj); + } + } +} + +/** + * Finds a key in an object, case-insensitive, returning the actual key name. + * Returns null if the object is a Buffer or if no match is found. + * + * @param {Object} obj - The object to search. + * @param {string} key - The key to find (case-insensitive). + * @returns {?string} The actual key name if found, otherwise null. + */ +function findKey(obj, key) { + if (isBuffer(obj)) { + return null; + } + + key = key.toLowerCase(); + const keys = Object.keys(obj); + let i = keys.length; + let _key; + while (i-- > 0) { + _key = keys[i]; + if (key === _key.toLowerCase()) { + return _key; + } + } + return null; +} + +const _global = (() => { + /*eslint no-undef:0*/ + if (typeof globalThis !== 'undefined') return globalThis; + return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global; +})(); + +const isContextDefined = (context) => !isUndefined(context) && context !== _global; + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * const result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + const { caseless, skipUndefined } = (isContextDefined(this) && this) || {}; + const result = {}; + const assignValue = (val, key) => { + // Skip dangerous property names to prevent prototype pollution + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return; + } + + const targetKey = (caseless && findKey(result, key)) || key; + if (isPlainObject(result[targetKey]) && isPlainObject(val)) { + result[targetKey] = merge(result[targetKey], val); + } else if (isPlainObject(val)) { + result[targetKey] = merge({}, val); + } else if (isArray(val)) { + result[targetKey] = val.slice(); + } else if (!skipUndefined || !isUndefined(val)) { + result[targetKey] = val; + } + }; + + for (let i = 0, l = arguments.length; i < l; i++) { + arguments[i] && forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * + * @param {Object} [options] + * @param {Boolean} [options.allOwnKeys] + * @returns {Object} The resulting value of object a + */ +const extend = (a, b, thisArg, { allOwnKeys } = {}) => { + forEach( + b, + (val, key) => { + if (thisArg && isFunction(val)) { + Object.defineProperty(a, key, { + value: bind(val, thisArg), + writable: true, + enumerable: true, + configurable: true, + }); + } else { + Object.defineProperty(a, key, { + value: val, + writable: true, + enumerable: true, + configurable: true, + }); + } + }, + { allOwnKeys } + ); + return a; +}; + +/** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * + * @returns {string} content value without BOM + */ +const stripBOM = (content) => { + if (content.charCodeAt(0) === 0xfeff) { + content = content.slice(1); + } + return content; +}; + +/** + * Inherit the prototype methods from one constructor into another + * @param {function} constructor + * @param {function} superConstructor + * @param {object} [props] + * @param {object} [descriptors] + * + * @returns {void} + */ +const inherits = (constructor, superConstructor, props, descriptors) => { + constructor.prototype = Object.create(superConstructor.prototype, descriptors); + Object.defineProperty(constructor.prototype, 'constructor', { + value: constructor, + writable: true, + enumerable: false, + configurable: true, + }); + Object.defineProperty(constructor, 'super', { + value: superConstructor.prototype, + }); + props && Object.assign(constructor.prototype, props); +}; + +/** + * Resolve object with deep prototype chain to a flat object + * @param {Object} sourceObj source object + * @param {Object} [destObj] + * @param {Function|Boolean} [filter] + * @param {Function} [propFilter] + * + * @returns {Object} + */ +const toFlatObject = (sourceObj, destObj, filter, propFilter) => { + let props; + let i; + let prop; + const merged = {}; + + destObj = destObj || {}; + // eslint-disable-next-line no-eq-null,eqeqeq + if (sourceObj == null) return destObj; + + do { + props = Object.getOwnPropertyNames(sourceObj); + i = props.length; + while (i-- > 0) { + prop = props[i]; + if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { + destObj[prop] = sourceObj[prop]; + merged[prop] = true; + } + } + sourceObj = filter !== false && getPrototypeOf(sourceObj); + } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); + + return destObj; +}; + +/** + * Determines whether a string ends with the characters of a specified string + * + * @param {String} str + * @param {String} searchString + * @param {Number} [position= 0] + * + * @returns {boolean} + */ +const endsWith = (str, searchString, position) => { + str = String(str); + if (position === undefined || position > str.length) { + position = str.length; + } + position -= searchString.length; + const lastIndex = str.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; +}; + +/** + * Returns new array from array like object or null if failed + * + * @param {*} [thing] + * + * @returns {?Array} + */ +const toArray = (thing) => { + if (!thing) return null; + if (isArray(thing)) return thing; + let i = thing.length; + if (!isNumber(i)) return null; + const arr = new Array(i); + while (i-- > 0) { + arr[i] = thing[i]; + } + return arr; +}; + +/** + * Checking if the Uint8Array exists and if it does, it returns a function that checks if the + * thing passed in is an instance of Uint8Array + * + * @param {TypedArray} + * + * @returns {Array} + */ +// eslint-disable-next-line func-names +const isTypedArray = ((TypedArray) => { + // eslint-disable-next-line func-names + return (thing) => { + return TypedArray && thing instanceof TypedArray; + }; +})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); + +/** + * For each entry in the object, call the function with the key and value. + * + * @param {Object} obj - The object to iterate over. + * @param {Function} fn - The function to call for each entry. + * + * @returns {void} + */ +const forEachEntry = (obj, fn) => { + const generator = obj && obj[iterator]; + + const _iterator = generator.call(obj); + + let result; + + while ((result = _iterator.next()) && !result.done) { + const pair = result.value; + fn.call(obj, pair[0], pair[1]); + } +}; + +/** + * It takes a regular expression and a string, and returns an array of all the matches + * + * @param {string} regExp - The regular expression to match against. + * @param {string} str - The string to search. + * + * @returns {Array} + */ +const matchAll = (regExp, str) => { + let matches; + const arr = []; + + while ((matches = regExp.exec(str)) !== null) { + arr.push(matches); + } + + return arr; +}; + +/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ +const isHTMLForm = kindOfTest('HTMLFormElement'); + +const toCamelCase = (str) => { + return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { + return p1.toUpperCase() + p2; + }); +}; + +/* Creating a function that will check if an object has a property. */ +const hasOwnProperty = ( + ({ hasOwnProperty }) => + (obj, prop) => + hasOwnProperty.call(obj, prop) +)(Object.prototype); + +/** + * Determine if a value is a RegExp object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a RegExp object, otherwise false + */ +const isRegExp = kindOfTest('RegExp'); + +const reduceDescriptors = (obj, reducer) => { + const descriptors = Object.getOwnPropertyDescriptors(obj); + const reducedDescriptors = {}; + + forEach(descriptors, (descriptor, name) => { + let ret; + if ((ret = reducer(descriptor, name, obj)) !== false) { + reducedDescriptors[name] = ret || descriptor; + } + }); + + Object.defineProperties(obj, reducedDescriptors); +}; + +/** + * Makes all methods read-only + * @param {Object} obj + */ + +const freezeMethods = (obj) => { + reduceDescriptors(obj, (descriptor, name) => { + // skip restricted props in strict mode + if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { + return false; + } + + const value = obj[name]; + + if (!isFunction(value)) return; + + descriptor.enumerable = false; + + if ('writable' in descriptor) { + descriptor.writable = false; + return; + } + + if (!descriptor.set) { + descriptor.set = () => { + throw Error("Can not rewrite read-only method '" + name + "'"); + }; + } + }); +}; + +/** + * Converts an array or a delimited string into an object set with values as keys and true as values. + * Useful for fast membership checks. + * + * @param {Array|string} arrayOrString - The array or string to convert. + * @param {string} delimiter - The delimiter to use if input is a string. + * @returns {Object} An object with keys from the array or string, values set to true. + */ +const toObjectSet = (arrayOrString, delimiter) => { + const obj = {}; + + const define = (arr) => { + arr.forEach((value) => { + obj[value] = true; + }); + }; + + isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); + + return obj; +}; + +const noop = () => {}; + +const toFiniteNumber = (value, defaultValue) => { + return value != null && Number.isFinite((value = +value)) ? value : defaultValue; +}; + +/** + * If the thing is a FormData object, return true, otherwise return false. + * + * @param {unknown} thing - The thing to check. + * + * @returns {boolean} + */ +function isSpecCompliantForm(thing) { + return !!( + thing && + isFunction(thing.append) && + thing[toStringTag] === 'FormData' && + thing[iterator] + ); +} + +/** + * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers. + * + * @param {Object} obj - The object to convert. + * @returns {Object} The JSON-compatible object. + */ +const toJSONObject = (obj) => { + const stack = new Array(10); + + const visit = (source, i) => { + if (isObject(source)) { + if (stack.indexOf(source) >= 0) { + return; + } + + //Buffer check + if (isBuffer(source)) { + return source; + } + + if (!('toJSON' in source)) { + stack[i] = source; + const target = isArray(source) ? [] : {}; + + forEach(source, (value, key) => { + const reducedValue = visit(value, i + 1); + !isUndefined(reducedValue) && (target[key] = reducedValue); + }); + + stack[i] = undefined; + + return target; + } + } + + return source; + }; + + return visit(obj, 0); +}; + +/** + * Determines if a value is an async function. + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is an async function, otherwise false. + */ +const isAsyncFn = kindOfTest('AsyncFunction'); + +/** + * Determines if a value is thenable (has then and catch methods). + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is thenable, otherwise false. + */ +const isThenable = (thing) => + thing && + (isObject(thing) || isFunction(thing)) && + isFunction(thing.then) && + isFunction(thing.catch); + +// original code +// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34 + +/** + * Provides a cross-platform setImmediate implementation. + * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout. + * + * @param {boolean} setImmediateSupported - Whether setImmediate is supported. + * @param {boolean} postMessageSupported - Whether postMessage is supported. + * @returns {Function} A function to schedule a callback asynchronously. + */ +const _setImmediate = ((setImmediateSupported, postMessageSupported) => { + if (setImmediateSupported) { + return setImmediate; + } + + return postMessageSupported + ? ((token, callbacks) => { + _global.addEventListener( + 'message', + ({ source, data }) => { + if (source === _global && data === token) { + callbacks.length && callbacks.shift()(); + } + }, + false + ); + + return (cb) => { + callbacks.push(cb); + _global.postMessage(token, '*'); + }; + })(`axios@${Math.random()}`, []) + : (cb) => setTimeout(cb); +})(typeof setImmediate === 'function', isFunction(_global.postMessage)); + +/** + * Schedules a microtask or asynchronous callback as soon as possible. + * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate. + * + * @type {Function} + */ +const asap = + typeof queueMicrotask !== 'undefined' + ? queueMicrotask.bind(_global) + : (typeof process !== 'undefined' && process.nextTick) || _setImmediate; + +// ********************* + +const isIterable = (thing) => thing != null && isFunction(thing[iterator]); + +export default { + isArray, + isArrayBuffer, + isBuffer, + isFormData, + isArrayBufferView, + isString, + isNumber, + isBoolean, + isObject, + isPlainObject, + isEmptyObject, + isReadableStream, + isRequest, + isResponse, + isHeaders, + isUndefined, + isDate, + isFile, + isReactNativeBlob, + isReactNative, + isBlob, + isRegExp, + isFunction, + isStream, + isURLSearchParams, + isTypedArray, + isFileList, + forEach, + merge, + extend, + trim, + stripBOM, + inherits, + toFlatObject, + kindOf, + kindOfTest, + endsWith, + toArray, + forEachEntry, + matchAll, + isHTMLForm, + hasOwnProperty, + hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection + reduceDescriptors, + freezeMethods, + toObjectSet, + toCamelCase, + noop, + toFiniteNumber, + findKey, + global: _global, + isContextDefined, + isSpecCompliantForm, + toJSONObject, + isAsyncFn, + isThenable, + setImmediate: _setImmediate, + asap, + isIterable, +}; diff --git a/node_modules/axios/package.json b/node_modules/axios/package.json new file mode 100644 index 0000000..7eabb0c --- /dev/null +++ b/node_modules/axios/package.json @@ -0,0 +1,226 @@ +{ + "name": "axios", + "version": "1.13.6", + "description": "Promise based HTTP client for the browser and node.js", + "main": "./index.js", + "module": "./index.js", + "exports": { + ".": { + "types": { + "require": "./index.d.cts", + "default": "./index.d.ts" + }, + "bun": { + "require": "./dist/node/axios.cjs", + "default": "./index.js" + }, + "react-native": { + "require": "./dist/browser/axios.cjs", + "default": "./dist/esm/axios.js" + }, + "browser": { + "require": "./dist/browser/axios.cjs", + "default": "./index.js" + }, + "default": { + "require": "./dist/node/axios.cjs", + "default": "./index.js" + } + }, + "./lib/adapters/http.js": "./lib/adapters/http.js", + "./lib/adapters/xhr.js": "./lib/adapters/xhr.js", + "./unsafe/*": "./lib/*", + "./unsafe/core/settle.js": "./lib/core/settle.js", + "./unsafe/core/buildFullPath.js": "./lib/core/buildFullPath.js", + "./unsafe/helpers/isAbsoluteURL.js": "./lib/helpers/isAbsoluteURL.js", + "./unsafe/helpers/buildURL.js": "./lib/helpers/buildURL.js", + "./unsafe/helpers/combineURLs.js": "./lib/helpers/combineURLs.js", + "./unsafe/adapters/http.js": "./lib/adapters/http.js", + "./unsafe/adapters/xhr.js": "./lib/adapters/xhr.js", + "./unsafe/utils.js": "./lib/utils.js", + "./package.json": "./package.json", + "./dist/browser/axios.cjs": "./dist/browser/axios.cjs", + "./dist/node/axios.cjs": "./dist/node/axios.cjs" + }, + "type": "module", + "types": "index.d.ts", + "scripts": { + "test": "npm run test:node && npm run test:browser && npm run test:package", + "test:node": "npm run test:mocha", + "test:node:coverage": "c8 npm run test:mocha", + "test:browser": "npm run test:karma", + "test:package": "npm run test:eslint && npm run test:exports", + "test:eslint": "node bin/ssl_hotfix.js eslint lib/**/*.js", + "test:mocha": "node bin/ssl_hotfix.js mocha test/unit/**/*.js --timeout 30000 --exit", + "test:exports": "node bin/ssl_hotfix.js mocha test/module/test.js --timeout 30000 --exit", + "test:karma": "node ./bin/run-karma-tests.js", + "test:karma:firefox": "node bin/ssl_hotfix.js cross-env LISTEN_ADDR=:: Browsers=Firefox karma start karma.conf.cjs --single-run", + "test:karma:server": "node bin/ssl_hotfix.js cross-env karma start karma.conf.cjs", + "test:build:version": "node ./bin/check-build-version.js", + "start": "node ./sandbox/server.js", + "preversion": "gulp version", + "version": "npm run build && git add package.json", + "prepublishOnly": "npm run test:build:version", + "build": "gulp clear && cross-env NODE_ENV=production rollup -c -m", + "examples": "node ./examples/server.js", + "fix": "eslint --fix lib/**/*.js", + "prepare": "husky install && npm run prepare:hooks", + "prepare:hooks": "npx husky set .husky/commit-msg \"npx commitlint --edit $1\"" + }, + "repository": { + "type": "git", + "url": "https://github.com/axios/axios.git" + }, + "keywords": [ + "xhr", + "http", + "ajax", + "promise", + "node", + "browser", + "fetch", + "rest", + "api", + "client" + ], + "author": "Matt Zabriskie", + "license": "MIT", + "bugs": { + "url": "https://github.com/axios/axios/issues" + }, + "homepage": "https://axios-http.com", + "devDependencies": { + "@babel/core": "^7.28.6", + "@babel/preset-env": "^7.28.6", + "@commitlint/cli": "^20.3.1", + "@commitlint/config-conventional": "^20.3.1", + "@rollup/plugin-alias": "^5.1.1", + "@rollup/plugin-babel": "^6.1.0", + "@rollup/plugin-commonjs": "^15.1.0", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-multi-entry": "^4.1.0", + "@rollup/plugin-node-resolve": "^9.0.0", + "abortcontroller-polyfill": "^1.7.8", + "auto-changelog": "^2.5.0", + "body-parser": "^1.20.4", + "c8": "^10.1.3", + "chalk": "^5.6.2", + "coveralls": "^3.1.1", + "cross-env": "^7.0.3", + "dev-null": "^0.1.1", + "es6-promise": "^4.2.8", + "eslint": "^8.57.1", + "express": "^4.22.1", + "formdata-node": "^5.0.1", + "formidable": "^2.1.5", + "fs-extra": "^10.1.0", + "get-stream": "^3.0.0", + "gulp": "^4.0.2", + "handlebars": "^4.7.8", + "husky": "^8.0.3", + "istanbul-instrumenter-loader": "^3.0.1", + "jasmine-core": "^2.99.1", + "karma": "^6.4.4", + "karma-chrome-launcher": "^3.2.0", + "karma-firefox-launcher": "^2.1.3", + "karma-jasmine": "^1.1.2", + "karma-jasmine-ajax": "^0.1.13", + "karma-rollup-preprocessor": "^7.0.8", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^4.3.6", + "karma-sinon": "^1.0.5", + "karma-sourcemap-loader": "^0.4.0", + "lint-staged": "^15.2.10", + "memoizee": "^0.4.17", + "minimist": "^1.2.8", + "mocha": "^10.8.2", + "multer": "^1.4.4", + "pacote": "^20.0.0", + "prettier": "^3.8.1", + "pretty-bytes": "^6.1.1", + "rollup": "^2.79.2", + "rollup-plugin-auto-external": "^2.0.0", + "rollup-plugin-bundle-size": "^1.0.3", + "rollup-plugin-terser": "^7.0.2", + "selfsigned": "^3.0.1", + "sinon": "^4.5.0", + "stream-throttle": "^0.1.3", + "string-replace-async": "^3.0.2", + "tar-stream": "^3.1.7", + "typescript": "^4.9.5" + }, + "browser": { + "./dist/node/axios.cjs": "./dist/browser/axios.cjs", + "./lib/adapters/http.js": "./lib/helpers/null.js", + "./lib/platform/node/index.js": "./lib/platform/browser/index.js", + "./lib/platform/node/classes/FormData.js": "./lib/helpers/null.js" + }, + "react-native": { + "./dist/node/axios.cjs": "./dist/browser/axios.cjs", + "./lib/adapters/http.js": "./lib/helpers/null.js", + "./lib/platform/node/index.js": "./lib/platform/browser/index.js", + "./lib/platform/node/classes/FormData.js": "./lib/helpers/null.js" + }, + "jsdelivr": "dist/axios.min.js", + "unpkg": "dist/axios.min.js", + "typings": "./index.d.ts", + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^1.1.0" + }, + "bundlesize": [ + { + "path": "./dist/axios.min.js", + "threshold": "5kB" + } + ], + "contributors": [ + "Matt Zabriskie (https://github.com/mzabriskie)", + "Dmitriy Mozgovoy (https://github.com/DigitalBrainJS)", + "Nick Uraltsev (https://github.com/nickuraltsev)", + "Jay (https://github.com/jasonsaayman)", + "Emily Morehouse (https://github.com/emilyemorehouse)", + "Rubén Norte (https://github.com/rubennorte)", + "Justin Beckwith (https://github.com/JustinBeckwith)", + "Martti Laine (https://github.com/codeclown)", + "Xianming Zhong (https://github.com/chinesedfan)", + "Remco Haszing (https://github.com/remcohaszing)", + "Willian Agostini (https://github.com/WillianAgostini)", + "Rikki Gibson (https://github.com/RikkiGibson)", + "Ben Carp (https://github.com/carpben)" + ], + "sideEffects": false, + "commitlint": { + "rules": { + "header-max-length": [ + 2, + "always", + 130 + ] + }, + "extends": [ + "@commitlint/config-conventional" + ] + }, + "lint-staged": { + "*.{js,cjs,mjs,ts,json,md,yml,yaml}": "prettier --write" + }, + "c8": { + "all": true, + "include": [ + "lib/**/*.js", + "lib/**/*.ts" + ], + "exclude": [ + "test", + "sandbox" + ], + "reporter": [ + "text", + "lcov", + "html" + ], + "report-dir": "./coverage" + } +} \ No newline at end of file diff --git a/node_modules/call-bind-apply-helpers/.eslintrc b/node_modules/call-bind-apply-helpers/.eslintrc new file mode 100644 index 0000000..201e859 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/.eslintrc @@ -0,0 +1,17 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "func-name-matching": 0, + "id-length": 0, + "new-cap": [2, { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + "no-extra-parens": 0, + "no-magic-numbers": 0, + }, +} diff --git a/node_modules/call-bind-apply-helpers/.github/FUNDING.yml b/node_modules/call-bind-apply-helpers/.github/FUNDING.yml new file mode 100644 index 0000000..0011e9d --- /dev/null +++ b/node_modules/call-bind-apply-helpers/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/call-bind-apply-helpers +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/call-bind-apply-helpers/.nycrc b/node_modules/call-bind-apply-helpers/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/node_modules/call-bind-apply-helpers/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/call-bind-apply-helpers/CHANGELOG.md b/node_modules/call-bind-apply-helpers/CHANGELOG.md new file mode 100644 index 0000000..2484942 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/CHANGELOG.md @@ -0,0 +1,30 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.2](https://github.com/ljharb/call-bind-apply-helpers/compare/v1.0.1...v1.0.2) - 2025-02-12 + +### Commits + +- [types] improve inferred types [`e6f9586`](https://github.com/ljharb/call-bind-apply-helpers/commit/e6f95860a3c72879cb861a858cdfb8138fbedec1) +- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/tsconfig`, `@types/tape`, `es-value-fixtures`, `for-each`, `has-strict-mode`, `object-inspect` [`e43d540`](https://github.com/ljharb/call-bind-apply-helpers/commit/e43d5409f97543bfbb11f345d47d8ce4e066d8c1) + +## [v1.0.1](https://github.com/ljharb/call-bind-apply-helpers/compare/v1.0.0...v1.0.1) - 2024-12-08 + +### Commits + +- [types] `reflectApply`: fix types [`4efc396`](https://github.com/ljharb/call-bind-apply-helpers/commit/4efc3965351a4f02cc55e836fa391d3d11ef2ef8) +- [Fix] `reflectApply`: oops, Reflect is not a function [`83cc739`](https://github.com/ljharb/call-bind-apply-helpers/commit/83cc7395de6b79b7730bdf092f1436f0b1263c75) +- [Dev Deps] update `@arethetypeswrong/cli` [`80bd5d3`](https://github.com/ljharb/call-bind-apply-helpers/commit/80bd5d3ae58b4f6b6995ce439dd5a1bcb178a940) + +## v1.0.0 - 2024-12-05 + +### Commits + +- Initial implementation, tests, readme [`7879629`](https://github.com/ljharb/call-bind-apply-helpers/commit/78796290f9b7430c9934d6f33d94ae9bc89fce04) +- Initial commit [`3f1dc16`](https://github.com/ljharb/call-bind-apply-helpers/commit/3f1dc164afc43285631b114a5f9dd9137b2b952f) +- npm init [`081df04`](https://github.com/ljharb/call-bind-apply-helpers/commit/081df048c312fcee400922026f6e97281200a603) +- Only apps should have lockfiles [`5b9ca0f`](https://github.com/ljharb/call-bind-apply-helpers/commit/5b9ca0fe8101ebfaf309c549caac4e0a017ed930) diff --git a/node_modules/call-bind-apply-helpers/LICENSE b/node_modules/call-bind-apply-helpers/LICENSE new file mode 100644 index 0000000..f82f389 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/call-bind-apply-helpers/README.md b/node_modules/call-bind-apply-helpers/README.md new file mode 100644 index 0000000..8fc0dae --- /dev/null +++ b/node_modules/call-bind-apply-helpers/README.md @@ -0,0 +1,62 @@ +# call-bind-apply-helpers [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Helper functions around Function call/apply/bind, for use in `call-bind`. + +The only packages that should likely ever use this package directly are `call-bind` and `get-intrinsic`. +Please use `call-bind` unless you have a very good reason not to. + +## Getting started + +```sh +npm install --save call-bind-apply-helpers +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const callBindBasic = require('call-bind-apply-helpers'); + +function f(a, b) { + assert.equal(this, 1); + assert.equal(a, 2); + assert.equal(b, 3); + assert.equal(arguments.length, 2); +} + +const fBound = callBindBasic([f, 1]); + +delete Function.prototype.call; +delete Function.prototype.bind; + +fBound(2, 3); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/call-bind-apply-helpers +[npm-version-svg]: https://versionbadg.es/ljharb/call-bind-apply-helpers.svg +[deps-svg]: https://david-dm.org/ljharb/call-bind-apply-helpers.svg +[deps-url]: https://david-dm.org/ljharb/call-bind-apply-helpers +[dev-deps-svg]: https://david-dm.org/ljharb/call-bind-apply-helpers/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/call-bind-apply-helpers#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/call-bind-apply-helpers.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/call-bind-apply-helpers.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/call-bind-apply-helpers.svg +[downloads-url]: https://npm-stat.com/charts.html?package=call-bind-apply-helpers +[codecov-image]: https://codecov.io/gh/ljharb/call-bind-apply-helpers/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/call-bind-apply-helpers/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/call-bind-apply-helpers +[actions-url]: https://github.com/ljharb/call-bind-apply-helpers/actions diff --git a/node_modules/call-bind-apply-helpers/actualApply.d.ts b/node_modules/call-bind-apply-helpers/actualApply.d.ts new file mode 100644 index 0000000..b87286a --- /dev/null +++ b/node_modules/call-bind-apply-helpers/actualApply.d.ts @@ -0,0 +1 @@ +export = Reflect.apply; \ No newline at end of file diff --git a/node_modules/call-bind-apply-helpers/actualApply.js b/node_modules/call-bind-apply-helpers/actualApply.js new file mode 100644 index 0000000..ffa5135 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/actualApply.js @@ -0,0 +1,10 @@ +'use strict'; + +var bind = require('function-bind'); + +var $apply = require('./functionApply'); +var $call = require('./functionCall'); +var $reflectApply = require('./reflectApply'); + +/** @type {import('./actualApply')} */ +module.exports = $reflectApply || bind.call($call, $apply); diff --git a/node_modules/call-bind-apply-helpers/applyBind.d.ts b/node_modules/call-bind-apply-helpers/applyBind.d.ts new file mode 100644 index 0000000..d176c1a --- /dev/null +++ b/node_modules/call-bind-apply-helpers/applyBind.d.ts @@ -0,0 +1,19 @@ +import actualApply from './actualApply'; + +type TupleSplitHead = T['length'] extends N + ? T + : T extends [...infer R, any] + ? TupleSplitHead + : never + +type TupleSplitTail = O['length'] extends N + ? T + : T extends [infer F, ...infer R] + ? TupleSplitTail<[...R], N, [...O, F]> + : never + +type TupleSplit = [TupleSplitHead, TupleSplitTail] + +declare function applyBind(...args: TupleSplit, 2>[1]): ReturnType; + +export = applyBind; \ No newline at end of file diff --git a/node_modules/call-bind-apply-helpers/applyBind.js b/node_modules/call-bind-apply-helpers/applyBind.js new file mode 100644 index 0000000..d2b7723 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/applyBind.js @@ -0,0 +1,10 @@ +'use strict'; + +var bind = require('function-bind'); +var $apply = require('./functionApply'); +var actualApply = require('./actualApply'); + +/** @type {import('./applyBind')} */ +module.exports = function applyBind() { + return actualApply(bind, $apply, arguments); +}; diff --git a/node_modules/call-bind-apply-helpers/functionApply.d.ts b/node_modules/call-bind-apply-helpers/functionApply.d.ts new file mode 100644 index 0000000..1f6e11b --- /dev/null +++ b/node_modules/call-bind-apply-helpers/functionApply.d.ts @@ -0,0 +1 @@ +export = Function.prototype.apply; \ No newline at end of file diff --git a/node_modules/call-bind-apply-helpers/functionApply.js b/node_modules/call-bind-apply-helpers/functionApply.js new file mode 100644 index 0000000..c71df9c --- /dev/null +++ b/node_modules/call-bind-apply-helpers/functionApply.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./functionApply')} */ +module.exports = Function.prototype.apply; diff --git a/node_modules/call-bind-apply-helpers/functionCall.d.ts b/node_modules/call-bind-apply-helpers/functionCall.d.ts new file mode 100644 index 0000000..15e93df --- /dev/null +++ b/node_modules/call-bind-apply-helpers/functionCall.d.ts @@ -0,0 +1 @@ +export = Function.prototype.call; \ No newline at end of file diff --git a/node_modules/call-bind-apply-helpers/functionCall.js b/node_modules/call-bind-apply-helpers/functionCall.js new file mode 100644 index 0000000..7a8d873 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/functionCall.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./functionCall')} */ +module.exports = Function.prototype.call; diff --git a/node_modules/call-bind-apply-helpers/index.d.ts b/node_modules/call-bind-apply-helpers/index.d.ts new file mode 100644 index 0000000..541516b --- /dev/null +++ b/node_modules/call-bind-apply-helpers/index.d.ts @@ -0,0 +1,64 @@ +type RemoveFromTuple< + Tuple extends readonly unknown[], + RemoveCount extends number, + Index extends 1[] = [] +> = Index["length"] extends RemoveCount + ? Tuple + : Tuple extends [infer First, ...infer Rest] + ? RemoveFromTuple + : Tuple; + +type ConcatTuples< + Prefix extends readonly unknown[], + Suffix extends readonly unknown[] +> = [...Prefix, ...Suffix]; + +type ExtractFunctionParams = T extends (this: infer TThis, ...args: infer P extends readonly unknown[]) => infer R + ? { thisArg: TThis; params: P; returnType: R } + : never; + +type BindFunction< + T extends (this: any, ...args: any[]) => any, + TThis, + TBoundArgs extends readonly unknown[], + ReceiverBound extends boolean +> = ExtractFunctionParams extends { + thisArg: infer OrigThis; + params: infer P extends readonly unknown[]; + returnType: infer R; +} + ? ReceiverBound extends true + ? (...args: RemoveFromTuple>) => R extends [OrigThis, ...infer Rest] + ? [TThis, ...Rest] // Replace `this` with `thisArg` + : R + : >>( + thisArg: U, + ...args: RemainingArgs + ) => R extends [OrigThis, ...infer Rest] + ? [U, ...ConcatTuples] // Preserve bound args in return type + : R + : never; + +declare function callBind< + const T extends (this: any, ...args: any[]) => any, + Extracted extends ExtractFunctionParams, + const TBoundArgs extends Partial & readonly unknown[], + const TThis extends Extracted["thisArg"] +>( + args: [fn: T, thisArg: TThis, ...boundArgs: TBoundArgs] +): BindFunction; + +declare function callBind< + const T extends (this: any, ...args: any[]) => any, + Extracted extends ExtractFunctionParams, + const TBoundArgs extends Partial & readonly unknown[] +>( + args: [fn: T, ...boundArgs: TBoundArgs] +): BindFunction; + +declare function callBind( + args: [fn: Exclude, ...rest: TArgs] +): never; + +// export as namespace callBind; +export = callBind; diff --git a/node_modules/call-bind-apply-helpers/index.js b/node_modules/call-bind-apply-helpers/index.js new file mode 100644 index 0000000..2f6dab4 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/index.js @@ -0,0 +1,15 @@ +'use strict'; + +var bind = require('function-bind'); +var $TypeError = require('es-errors/type'); + +var $call = require('./functionCall'); +var $actualApply = require('./actualApply'); + +/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */ +module.exports = function callBindBasic(args) { + if (args.length < 1 || typeof args[0] !== 'function') { + throw new $TypeError('a function is required'); + } + return $actualApply(bind, $call, args); +}; diff --git a/node_modules/call-bind-apply-helpers/package.json b/node_modules/call-bind-apply-helpers/package.json new file mode 100644 index 0000000..923b8be --- /dev/null +++ b/node_modules/call-bind-apply-helpers/package.json @@ -0,0 +1,85 @@ +{ + "name": "call-bind-apply-helpers", + "version": "1.0.2", + "description": "Helper functions around Function call/apply/bind, for use in `call-bind`", + "main": "index.js", + "exports": { + ".": "./index.js", + "./actualApply": "./actualApply.js", + "./applyBind": "./applyBind.js", + "./functionApply": "./functionApply.js", + "./functionCall": "./functionCall.js", + "./reflectApply": "./reflectApply.js", + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=auto", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/call-bind-apply-helpers.git" + }, + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/call-bind-apply-helpers/issues" + }, + "homepage": "https://github.com/ljharb/call-bind-apply-helpers#readme", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.3", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/for-each": "^0.3.3", + "@types/function-bind": "^1.1.10", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.8.1", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "es-value-fixtures": "^1.7.1", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.5", + "has-strict-mode": "^1.1.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.4", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/call-bind-apply-helpers/reflectApply.d.ts b/node_modules/call-bind-apply-helpers/reflectApply.d.ts new file mode 100644 index 0000000..6b2ae76 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/reflectApply.d.ts @@ -0,0 +1,3 @@ +declare const reflectApply: false | typeof Reflect.apply; + +export = reflectApply; diff --git a/node_modules/call-bind-apply-helpers/reflectApply.js b/node_modules/call-bind-apply-helpers/reflectApply.js new file mode 100644 index 0000000..3d03caa --- /dev/null +++ b/node_modules/call-bind-apply-helpers/reflectApply.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./reflectApply')} */ +module.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply; diff --git a/node_modules/call-bind-apply-helpers/test/index.js b/node_modules/call-bind-apply-helpers/test/index.js new file mode 100644 index 0000000..1cdc89e --- /dev/null +++ b/node_modules/call-bind-apply-helpers/test/index.js @@ -0,0 +1,63 @@ +'use strict'; + +var callBind = require('../'); +var hasStrictMode = require('has-strict-mode')(); +var forEach = require('for-each'); +var inspect = require('object-inspect'); +var v = require('es-value-fixtures'); + +var test = require('tape'); + +test('callBindBasic', function (t) { + forEach(v.nonFunctions, function (nonFunction) { + t['throws']( + // @ts-expect-error + function () { callBind([nonFunction]); }, + TypeError, + inspect(nonFunction) + ' is not a function' + ); + }); + + var sentinel = { sentinel: true }; + /** @type {(this: T, a: A, b: B) => [T | undefined, A, B]} */ + var func = function (a, b) { + // eslint-disable-next-line no-invalid-this + return [!hasStrictMode && this === global ? undefined : this, a, b]; + }; + t.equal(func.length, 2, 'original function length is 2'); + + /** type {(thisArg: unknown, a: number, b: number) => [unknown, number, number]} */ + var bound = callBind([func]); + /** type {((a: number, b: number) => [typeof sentinel, typeof a, typeof b])} */ + var boundR = callBind([func, sentinel]); + /** type {((b: number) => [typeof sentinel, number, typeof b])} */ + var boundArg = callBind([func, sentinel, /** @type {const} */ (1)]); + + // @ts-expect-error + t.deepEqual(bound(), [undefined, undefined, undefined], 'bound func with no args'); + + // @ts-expect-error + t.deepEqual(func(), [undefined, undefined, undefined], 'unbound func with too few args'); + // @ts-expect-error + t.deepEqual(bound(1, 2), [hasStrictMode ? 1 : Object(1), 2, undefined], 'bound func too few args'); + // @ts-expect-error + t.deepEqual(boundR(), [sentinel, undefined, undefined], 'bound func with receiver, with too few args'); + // @ts-expect-error + t.deepEqual(boundArg(), [sentinel, 1, undefined], 'bound func with receiver and arg, with too few args'); + + t.deepEqual(func(1, 2), [undefined, 1, 2], 'unbound func with right args'); + t.deepEqual(bound(1, 2, 3), [hasStrictMode ? 1 : Object(1), 2, 3], 'bound func with right args'); + t.deepEqual(boundR(1, 2), [sentinel, 1, 2], 'bound func with receiver, with right args'); + t.deepEqual(boundArg(2), [sentinel, 1, 2], 'bound func with receiver and arg, with right arg'); + + // @ts-expect-error + t.deepEqual(func(1, 2, 3), [undefined, 1, 2], 'unbound func with too many args'); + // @ts-expect-error + t.deepEqual(bound(1, 2, 3, 4), [hasStrictMode ? 1 : Object(1), 2, 3], 'bound func with too many args'); + // @ts-expect-error + t.deepEqual(boundR(1, 2, 3), [sentinel, 1, 2], 'bound func with receiver, with too many args'); + // @ts-expect-error + t.deepEqual(boundArg(2, 3), [sentinel, 1, 2], 'bound func with receiver and arg, with too many args'); + + t.end(); +}); diff --git a/node_modules/call-bind-apply-helpers/tsconfig.json b/node_modules/call-bind-apply-helpers/tsconfig.json new file mode 100644 index 0000000..aef9993 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} \ No newline at end of file diff --git a/node_modules/combined-stream/License b/node_modules/combined-stream/License new file mode 100644 index 0000000..4804b7a --- /dev/null +++ b/node_modules/combined-stream/License @@ -0,0 +1,19 @@ +Copyright (c) 2011 Debuggable Limited + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/combined-stream/Readme.md b/node_modules/combined-stream/Readme.md new file mode 100644 index 0000000..9e367b5 --- /dev/null +++ b/node_modules/combined-stream/Readme.md @@ -0,0 +1,138 @@ +# combined-stream + +A stream that emits multiple other streams one after another. + +**NB** Currently `combined-stream` works with streams version 1 only. There is ongoing effort to switch this library to streams version 2. Any help is welcome. :) Meanwhile you can explore other libraries that provide streams2 support with more or less compatibility with `combined-stream`. + +- [combined-stream2](https://www.npmjs.com/package/combined-stream2): A drop-in streams2-compatible replacement for the combined-stream module. + +- [multistream](https://www.npmjs.com/package/multistream): A stream that emits multiple other streams one after another. + +## Installation + +``` bash +npm install combined-stream +``` + +## Usage + +Here is a simple example that shows how you can use combined-stream to combine +two files into one: + +``` javascript +var CombinedStream = require('combined-stream'); +var fs = require('fs'); + +var combinedStream = CombinedStream.create(); +combinedStream.append(fs.createReadStream('file1.txt')); +combinedStream.append(fs.createReadStream('file2.txt')); + +combinedStream.pipe(fs.createWriteStream('combined.txt')); +``` + +While the example above works great, it will pause all source streams until +they are needed. If you don't want that to happen, you can set `pauseStreams` +to `false`: + +``` javascript +var CombinedStream = require('combined-stream'); +var fs = require('fs'); + +var combinedStream = CombinedStream.create({pauseStreams: false}); +combinedStream.append(fs.createReadStream('file1.txt')); +combinedStream.append(fs.createReadStream('file2.txt')); + +combinedStream.pipe(fs.createWriteStream('combined.txt')); +``` + +However, what if you don't have all the source streams yet, or you don't want +to allocate the resources (file descriptors, memory, etc.) for them right away? +Well, in that case you can simply provide a callback that supplies the stream +by calling a `next()` function: + +``` javascript +var CombinedStream = require('combined-stream'); +var fs = require('fs'); + +var combinedStream = CombinedStream.create(); +combinedStream.append(function(next) { + next(fs.createReadStream('file1.txt')); +}); +combinedStream.append(function(next) { + next(fs.createReadStream('file2.txt')); +}); + +combinedStream.pipe(fs.createWriteStream('combined.txt')); +``` + +## API + +### CombinedStream.create([options]) + +Returns a new combined stream object. Available options are: + +* `maxDataSize` +* `pauseStreams` + +The effect of those options is described below. + +### combinedStream.pauseStreams = `true` + +Whether to apply back pressure to the underlaying streams. If set to `false`, +the underlaying streams will never be paused. If set to `true`, the +underlaying streams will be paused right after being appended, as well as when +`delayedStream.pipe()` wants to throttle. + +### combinedStream.maxDataSize = `2 * 1024 * 1024` + +The maximum amount of bytes (or characters) to buffer for all source streams. +If this value is exceeded, `combinedStream` emits an `'error'` event. + +### combinedStream.dataSize = `0` + +The amount of bytes (or characters) currently buffered by `combinedStream`. + +### combinedStream.append(stream) + +Appends the given `stream` to the combinedStream object. If `pauseStreams` is +set to `true, this stream will also be paused right away. + +`streams` can also be a function that takes one parameter called `next`. `next` +is a function that must be invoked in order to provide the `next` stream, see +example above. + +Regardless of how the `stream` is appended, combined-stream always attaches an +`'error'` listener to it, so you don't have to do that manually. + +Special case: `stream` can also be a String or Buffer. + +### combinedStream.write(data) + +You should not call this, `combinedStream` takes care of piping the appended +streams into itself for you. + +### combinedStream.resume() + +Causes `combinedStream` to start drain the streams it manages. The function is +idempotent, and also emits a `'resume'` event each time which usually goes to +the stream that is currently being drained. + +### combinedStream.pause(); + +If `combinedStream.pauseStreams` is set to `false`, this does nothing. +Otherwise a `'pause'` event is emitted, this goes to the stream that is +currently being drained, so you can use it to apply back pressure. + +### combinedStream.end(); + +Sets `combinedStream.writable` to false, emits an `'end'` event, and removes +all streams from the queue. + +### combinedStream.destroy(); + +Same as `combinedStream.end()`, except it emits a `'close'` event instead of +`'end'`. + +## License + +combined-stream is licensed under the MIT license. diff --git a/node_modules/combined-stream/lib/combined_stream.js b/node_modules/combined-stream/lib/combined_stream.js new file mode 100644 index 0000000..125f097 --- /dev/null +++ b/node_modules/combined-stream/lib/combined_stream.js @@ -0,0 +1,208 @@ +var util = require('util'); +var Stream = require('stream').Stream; +var DelayedStream = require('delayed-stream'); + +module.exports = CombinedStream; +function CombinedStream() { + this.writable = false; + this.readable = true; + this.dataSize = 0; + this.maxDataSize = 2 * 1024 * 1024; + this.pauseStreams = true; + + this._released = false; + this._streams = []; + this._currentStream = null; + this._insideLoop = false; + this._pendingNext = false; +} +util.inherits(CombinedStream, Stream); + +CombinedStream.create = function(options) { + var combinedStream = new this(); + + options = options || {}; + for (var option in options) { + combinedStream[option] = options[option]; + } + + return combinedStream; +}; + +CombinedStream.isStreamLike = function(stream) { + return (typeof stream !== 'function') + && (typeof stream !== 'string') + && (typeof stream !== 'boolean') + && (typeof stream !== 'number') + && (!Buffer.isBuffer(stream)); +}; + +CombinedStream.prototype.append = function(stream) { + var isStreamLike = CombinedStream.isStreamLike(stream); + + if (isStreamLike) { + if (!(stream instanceof DelayedStream)) { + var newStream = DelayedStream.create(stream, { + maxDataSize: Infinity, + pauseStream: this.pauseStreams, + }); + stream.on('data', this._checkDataSize.bind(this)); + stream = newStream; + } + + this._handleErrors(stream); + + if (this.pauseStreams) { + stream.pause(); + } + } + + this._streams.push(stream); + return this; +}; + +CombinedStream.prototype.pipe = function(dest, options) { + Stream.prototype.pipe.call(this, dest, options); + this.resume(); + return dest; +}; + +CombinedStream.prototype._getNext = function() { + this._currentStream = null; + + if (this._insideLoop) { + this._pendingNext = true; + return; // defer call + } + + this._insideLoop = true; + try { + do { + this._pendingNext = false; + this._realGetNext(); + } while (this._pendingNext); + } finally { + this._insideLoop = false; + } +}; + +CombinedStream.prototype._realGetNext = function() { + var stream = this._streams.shift(); + + + if (typeof stream == 'undefined') { + this.end(); + return; + } + + if (typeof stream !== 'function') { + this._pipeNext(stream); + return; + } + + var getStream = stream; + getStream(function(stream) { + var isStreamLike = CombinedStream.isStreamLike(stream); + if (isStreamLike) { + stream.on('data', this._checkDataSize.bind(this)); + this._handleErrors(stream); + } + + this._pipeNext(stream); + }.bind(this)); +}; + +CombinedStream.prototype._pipeNext = function(stream) { + this._currentStream = stream; + + var isStreamLike = CombinedStream.isStreamLike(stream); + if (isStreamLike) { + stream.on('end', this._getNext.bind(this)); + stream.pipe(this, {end: false}); + return; + } + + var value = stream; + this.write(value); + this._getNext(); +}; + +CombinedStream.prototype._handleErrors = function(stream) { + var self = this; + stream.on('error', function(err) { + self._emitError(err); + }); +}; + +CombinedStream.prototype.write = function(data) { + this.emit('data', data); +}; + +CombinedStream.prototype.pause = function() { + if (!this.pauseStreams) { + return; + } + + if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause(); + this.emit('pause'); +}; + +CombinedStream.prototype.resume = function() { + if (!this._released) { + this._released = true; + this.writable = true; + this._getNext(); + } + + if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume(); + this.emit('resume'); +}; + +CombinedStream.prototype.end = function() { + this._reset(); + this.emit('end'); +}; + +CombinedStream.prototype.destroy = function() { + this._reset(); + this.emit('close'); +}; + +CombinedStream.prototype._reset = function() { + this.writable = false; + this._streams = []; + this._currentStream = null; +}; + +CombinedStream.prototype._checkDataSize = function() { + this._updateDataSize(); + if (this.dataSize <= this.maxDataSize) { + return; + } + + var message = + 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'; + this._emitError(new Error(message)); +}; + +CombinedStream.prototype._updateDataSize = function() { + this.dataSize = 0; + + var self = this; + this._streams.forEach(function(stream) { + if (!stream.dataSize) { + return; + } + + self.dataSize += stream.dataSize; + }); + + if (this._currentStream && this._currentStream.dataSize) { + this.dataSize += this._currentStream.dataSize; + } +}; + +CombinedStream.prototype._emitError = function(err) { + this._reset(); + this.emit('error', err); +}; diff --git a/node_modules/combined-stream/package.json b/node_modules/combined-stream/package.json new file mode 100644 index 0000000..6982b6d --- /dev/null +++ b/node_modules/combined-stream/package.json @@ -0,0 +1,25 @@ +{ + "author": "Felix Geisendörfer (http://debuggable.com/)", + "name": "combined-stream", + "description": "A stream that emits multiple other streams one after another.", + "version": "1.0.8", + "homepage": "https://github.com/felixge/node-combined-stream", + "repository": { + "type": "git", + "url": "git://github.com/felixge/node-combined-stream.git" + }, + "main": "./lib/combined_stream", + "scripts": { + "test": "node test/run.js" + }, + "engines": { + "node": ">= 0.8" + }, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "devDependencies": { + "far": "~0.0.7" + }, + "license": "MIT" +} diff --git a/node_modules/combined-stream/yarn.lock b/node_modules/combined-stream/yarn.lock new file mode 100644 index 0000000..7edf418 --- /dev/null +++ b/node_modules/combined-stream/yarn.lock @@ -0,0 +1,17 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +far@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/far/-/far-0.0.7.tgz#01c1fd362bcd26ce9cf161af3938aa34619f79a7" + dependencies: + oop "0.0.3" + +oop@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/oop/-/oop-0.0.3.tgz#70fa405a5650891a194fdc82ca68dad6dabf4401" diff --git a/node_modules/delayed-stream/.npmignore b/node_modules/delayed-stream/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/node_modules/delayed-stream/.npmignore @@ -0,0 +1 @@ +test diff --git a/node_modules/delayed-stream/License b/node_modules/delayed-stream/License new file mode 100644 index 0000000..4804b7a --- /dev/null +++ b/node_modules/delayed-stream/License @@ -0,0 +1,19 @@ +Copyright (c) 2011 Debuggable Limited + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/delayed-stream/Makefile b/node_modules/delayed-stream/Makefile new file mode 100644 index 0000000..b4ff85a --- /dev/null +++ b/node_modules/delayed-stream/Makefile @@ -0,0 +1,7 @@ +SHELL := /bin/bash + +test: + @./test/run.js + +.PHONY: test + diff --git a/node_modules/delayed-stream/Readme.md b/node_modules/delayed-stream/Readme.md new file mode 100644 index 0000000..aca36f9 --- /dev/null +++ b/node_modules/delayed-stream/Readme.md @@ -0,0 +1,141 @@ +# delayed-stream + +Buffers events from a stream until you are ready to handle them. + +## Installation + +``` bash +npm install delayed-stream +``` + +## Usage + +The following example shows how to write a http echo server that delays its +response by 1000 ms. + +``` javascript +var DelayedStream = require('delayed-stream'); +var http = require('http'); + +http.createServer(function(req, res) { + var delayed = DelayedStream.create(req); + + setTimeout(function() { + res.writeHead(200); + delayed.pipe(res); + }, 1000); +}); +``` + +If you are not using `Stream#pipe`, you can also manually release the buffered +events by calling `delayedStream.resume()`: + +``` javascript +var delayed = DelayedStream.create(req); + +setTimeout(function() { + // Emit all buffered events and resume underlaying source + delayed.resume(); +}, 1000); +``` + +## Implementation + +In order to use this meta stream properly, here are a few things you should +know about the implementation. + +### Event Buffering / Proxying + +All events of the `source` stream are hijacked by overwriting the `source.emit` +method. Until node implements a catch-all event listener, this is the only way. + +However, delayed-stream still continues to emit all events it captures on the +`source`, regardless of whether you have released the delayed stream yet or +not. + +Upon creation, delayed-stream captures all `source` events and stores them in +an internal event buffer. Once `delayedStream.release()` is called, all +buffered events are emitted on the `delayedStream`, and the event buffer is +cleared. After that, delayed-stream merely acts as a proxy for the underlaying +source. + +### Error handling + +Error events on `source` are buffered / proxied just like any other events. +However, `delayedStream.create` attaches a no-op `'error'` listener to the +`source`. This way you only have to handle errors on the `delayedStream` +object, rather than in two places. + +### Buffer limits + +delayed-stream provides a `maxDataSize` property that can be used to limit +the amount of data being buffered. In order to protect you from bad `source` +streams that don't react to `source.pause()`, this feature is enabled by +default. + +## API + +### DelayedStream.create(source, [options]) + +Returns a new `delayedStream`. Available options are: + +* `pauseStream` +* `maxDataSize` + +The description for those properties can be found below. + +### delayedStream.source + +The `source` stream managed by this object. This is useful if you are +passing your `delayedStream` around, and you still want to access properties +on the `source` object. + +### delayedStream.pauseStream = true + +Whether to pause the underlaying `source` when calling +`DelayedStream.create()`. Modifying this property afterwards has no effect. + +### delayedStream.maxDataSize = 1024 * 1024 + +The amount of data to buffer before emitting an `error`. + +If the underlaying source is emitting `Buffer` objects, the `maxDataSize` +refers to bytes. + +If the underlaying source is emitting JavaScript strings, the size refers to +characters. + +If you know what you are doing, you can set this property to `Infinity` to +disable this feature. You can also modify this property during runtime. + +### delayedStream.dataSize = 0 + +The amount of data buffered so far. + +### delayedStream.readable + +An ECMA5 getter that returns the value of `source.readable`. + +### delayedStream.resume() + +If the `delayedStream` has not been released so far, `delayedStream.release()` +is called. + +In either case, `source.resume()` is called. + +### delayedStream.pause() + +Calls `source.pause()`. + +### delayedStream.pipe(dest) + +Calls `delayedStream.resume()` and then proxies the arguments to `source.pipe`. + +### delayedStream.release() + +Emits and clears all events that have been buffered up so far. This does not +resume the underlaying source, use `delayedStream.resume()` instead. + +## License + +delayed-stream is licensed under the MIT license. diff --git a/node_modules/delayed-stream/lib/delayed_stream.js b/node_modules/delayed-stream/lib/delayed_stream.js new file mode 100644 index 0000000..b38fc85 --- /dev/null +++ b/node_modules/delayed-stream/lib/delayed_stream.js @@ -0,0 +1,107 @@ +var Stream = require('stream').Stream; +var util = require('util'); + +module.exports = DelayedStream; +function DelayedStream() { + this.source = null; + this.dataSize = 0; + this.maxDataSize = 1024 * 1024; + this.pauseStream = true; + + this._maxDataSizeExceeded = false; + this._released = false; + this._bufferedEvents = []; +} +util.inherits(DelayedStream, Stream); + +DelayedStream.create = function(source, options) { + var delayedStream = new this(); + + options = options || {}; + for (var option in options) { + delayedStream[option] = options[option]; + } + + delayedStream.source = source; + + var realEmit = source.emit; + source.emit = function() { + delayedStream._handleEmit(arguments); + return realEmit.apply(source, arguments); + }; + + source.on('error', function() {}); + if (delayedStream.pauseStream) { + source.pause(); + } + + return delayedStream; +}; + +Object.defineProperty(DelayedStream.prototype, 'readable', { + configurable: true, + enumerable: true, + get: function() { + return this.source.readable; + } +}); + +DelayedStream.prototype.setEncoding = function() { + return this.source.setEncoding.apply(this.source, arguments); +}; + +DelayedStream.prototype.resume = function() { + if (!this._released) { + this.release(); + } + + this.source.resume(); +}; + +DelayedStream.prototype.pause = function() { + this.source.pause(); +}; + +DelayedStream.prototype.release = function() { + this._released = true; + + this._bufferedEvents.forEach(function(args) { + this.emit.apply(this, args); + }.bind(this)); + this._bufferedEvents = []; +}; + +DelayedStream.prototype.pipe = function() { + var r = Stream.prototype.pipe.apply(this, arguments); + this.resume(); + return r; +}; + +DelayedStream.prototype._handleEmit = function(args) { + if (this._released) { + this.emit.apply(this, args); + return; + } + + if (args[0] === 'data') { + this.dataSize += args[1].length; + this._checkIfMaxDataSizeExceeded(); + } + + this._bufferedEvents.push(args); +}; + +DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { + if (this._maxDataSizeExceeded) { + return; + } + + if (this.dataSize <= this.maxDataSize) { + return; + } + + this._maxDataSizeExceeded = true; + var message = + 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' + this.emit('error', new Error(message)); +}; diff --git a/node_modules/delayed-stream/package.json b/node_modules/delayed-stream/package.json new file mode 100644 index 0000000..eea3291 --- /dev/null +++ b/node_modules/delayed-stream/package.json @@ -0,0 +1,27 @@ +{ + "author": "Felix Geisendörfer (http://debuggable.com/)", + "contributors": [ + "Mike Atkins " + ], + "name": "delayed-stream", + "description": "Buffers events from a stream until you are ready to handle them.", + "license": "MIT", + "version": "1.0.0", + "homepage": "https://github.com/felixge/node-delayed-stream", + "repository": { + "type": "git", + "url": "git://github.com/felixge/node-delayed-stream.git" + }, + "main": "./lib/delayed_stream", + "engines": { + "node": ">=0.4.0" + }, + "scripts": { + "test": "make test" + }, + "dependencies": {}, + "devDependencies": { + "fake": "0.2.0", + "far": "0.0.1" + } +} diff --git a/node_modules/dunder-proto/.eslintrc b/node_modules/dunder-proto/.eslintrc new file mode 100644 index 0000000..3b5d9e9 --- /dev/null +++ b/node_modules/dunder-proto/.eslintrc @@ -0,0 +1,5 @@ +{ + "root": true, + + "extends": "@ljharb", +} diff --git a/node_modules/dunder-proto/.github/FUNDING.yml b/node_modules/dunder-proto/.github/FUNDING.yml new file mode 100644 index 0000000..8a1d7b0 --- /dev/null +++ b/node_modules/dunder-proto/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/dunder-proto +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/dunder-proto/.nycrc b/node_modules/dunder-proto/.nycrc new file mode 100644 index 0000000..1826526 --- /dev/null +++ b/node_modules/dunder-proto/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/dunder-proto/CHANGELOG.md b/node_modules/dunder-proto/CHANGELOG.md new file mode 100644 index 0000000..9b8b2f8 --- /dev/null +++ b/node_modules/dunder-proto/CHANGELOG.md @@ -0,0 +1,24 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.1](https://github.com/es-shims/dunder-proto/compare/v1.0.0...v1.0.1) - 2024-12-16 + +### Commits + +- [Fix] do not crash when `--disable-proto=throw` [`6c367d9`](https://github.com/es-shims/dunder-proto/commit/6c367d919bc1604778689a297bbdbfea65752847) +- [Tests] ensure noproto tests only use the current version of dunder-proto [`b02365b`](https://github.com/es-shims/dunder-proto/commit/b02365b9cf889c4a2cac7be0c3cfc90a789af36c) +- [Dev Deps] update `@arethetypeswrong/cli`, `@types/tape` [`e3c5c3b`](https://github.com/es-shims/dunder-proto/commit/e3c5c3bd81cf8cef7dff2eca19e558f0e307f666) +- [Deps] update `call-bind-apply-helpers` [`19f1da0`](https://github.com/es-shims/dunder-proto/commit/19f1da028b8dd0d05c85bfd8f7eed2819b686450) + +## v1.0.0 - 2024-12-06 + +### Commits + +- Initial implementation, tests, readme, types [`a5b74b0`](https://github.com/es-shims/dunder-proto/commit/a5b74b0082f5270cb0905cd9a2e533cee7498373) +- Initial commit [`73fb5a3`](https://github.com/es-shims/dunder-proto/commit/73fb5a353b51ac2ab00c9fdeb0114daffd4c07a8) +- npm init [`80152dc`](https://github.com/es-shims/dunder-proto/commit/80152dc98155da4eb046d9f67a87ed96e8280a1d) +- Only apps should have lockfiles [`03e6660`](https://github.com/es-shims/dunder-proto/commit/03e6660a1d70dc401f3e217a031475ec537243dd) diff --git a/node_modules/dunder-proto/LICENSE b/node_modules/dunder-proto/LICENSE new file mode 100644 index 0000000..34995e7 --- /dev/null +++ b/node_modules/dunder-proto/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 ECMAScript Shims + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/dunder-proto/README.md b/node_modules/dunder-proto/README.md new file mode 100644 index 0000000..44b80a2 --- /dev/null +++ b/node_modules/dunder-proto/README.md @@ -0,0 +1,54 @@ +# dunder-proto [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +If available, the `Object.prototype.__proto__` accessor and mutator, call-bound. + +## Getting started + +```sh +npm install --save dunder-proto +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const getDunder = require('dunder-proto/get'); +const setDunder = require('dunder-proto/set'); + +const obj = {}; + +assert.equal('toString' in obj, true); +assert.equal(getDunder(obj), Object.prototype); + +setDunder(obj, null); + +assert.equal('toString' in obj, false); +assert.equal(getDunder(obj), null); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/dunder-proto +[npm-version-svg]: https://versionbadg.es/es-shims/dunder-proto.svg +[deps-svg]: https://david-dm.org/es-shims/dunder-proto.svg +[deps-url]: https://david-dm.org/es-shims/dunder-proto +[dev-deps-svg]: https://david-dm.org/es-shims/dunder-proto/dev-status.svg +[dev-deps-url]: https://david-dm.org/es-shims/dunder-proto#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/dunder-proto.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/dunder-proto.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/dunder-proto.svg +[downloads-url]: https://npm-stat.com/charts.html?package=dunder-proto +[codecov-image]: https://codecov.io/gh/es-shims/dunder-proto/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/es-shims/dunder-proto/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/dunder-proto +[actions-url]: https://github.com/es-shims/dunder-proto/actions diff --git a/node_modules/dunder-proto/get.d.ts b/node_modules/dunder-proto/get.d.ts new file mode 100644 index 0000000..c7e14d2 --- /dev/null +++ b/node_modules/dunder-proto/get.d.ts @@ -0,0 +1,5 @@ +declare function getDunderProto(target: {}): object | null; + +declare const x: false | typeof getDunderProto; + +export = x; \ No newline at end of file diff --git a/node_modules/dunder-proto/get.js b/node_modules/dunder-proto/get.js new file mode 100644 index 0000000..45093df --- /dev/null +++ b/node_modules/dunder-proto/get.js @@ -0,0 +1,30 @@ +'use strict'; + +var callBind = require('call-bind-apply-helpers'); +var gOPD = require('gopd'); + +var hasProtoAccessor; +try { + // eslint-disable-next-line no-extra-parens, no-proto + hasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype; +} catch (e) { + if (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') { + throw e; + } +} + +// eslint-disable-next-line no-extra-parens +var desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__')); + +var $Object = Object; +var $getPrototypeOf = $Object.getPrototypeOf; + +/** @type {import('./get')} */ +module.exports = desc && typeof desc.get === 'function' + ? callBind([desc.get]) + : typeof $getPrototypeOf === 'function' + ? /** @type {import('./get')} */ function getDunder(value) { + // eslint-disable-next-line eqeqeq + return $getPrototypeOf(value == null ? value : $Object(value)); + } + : false; diff --git a/node_modules/dunder-proto/package.json b/node_modules/dunder-proto/package.json new file mode 100644 index 0000000..04a4036 --- /dev/null +++ b/node_modules/dunder-proto/package.json @@ -0,0 +1,76 @@ +{ + "name": "dunder-proto", + "version": "1.0.1", + "description": "If available, the `Object.prototype.__proto__` accessor and mutator, call-bound", + "main": false, + "exports": { + "./get": "./get.js", + "./set": "./set.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/es-shims/dunder-proto.git" + }, + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/es-shims/dunder-proto/issues" + }, + "homepage": "https://github.com/es-shims/dunder-proto#readme", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/tape": "^5.7.0", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "testling": { + "files": "test/index.js" + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/dunder-proto/set.d.ts b/node_modules/dunder-proto/set.d.ts new file mode 100644 index 0000000..16bfdfe --- /dev/null +++ b/node_modules/dunder-proto/set.d.ts @@ -0,0 +1,5 @@ +declare function setDunderProto

    (target: {}, proto: P): P; + +declare const x: false | typeof setDunderProto; + +export = x; \ No newline at end of file diff --git a/node_modules/dunder-proto/set.js b/node_modules/dunder-proto/set.js new file mode 100644 index 0000000..6085b6e --- /dev/null +++ b/node_modules/dunder-proto/set.js @@ -0,0 +1,35 @@ +'use strict'; + +var callBind = require('call-bind-apply-helpers'); +var gOPD = require('gopd'); +var $TypeError = require('es-errors/type'); + +/** @type {{ __proto__?: object | null }} */ +var obj = {}; +try { + obj.__proto__ = null; // eslint-disable-line no-proto +} catch (e) { + if (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') { + throw e; + } +} + +var hasProtoMutator = !('toString' in obj); + +// eslint-disable-next-line no-extra-parens +var desc = gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__')); + +/** @type {import('./set')} */ +module.exports = hasProtoMutator && ( +// eslint-disable-next-line no-extra-parens + (!!desc && typeof desc.set === 'function' && /** @type {import('./set')} */ (callBind([desc.set]))) + || /** @type {import('./set')} */ function setDunder(object, proto) { + // this is node v0.10 or older, which doesn't have Object.setPrototypeOf and has undeniable __proto__ + if (object == null) { // eslint-disable-line eqeqeq + throw new $TypeError('set Object.prototype.__proto__ called on null or undefined'); + } + // eslint-disable-next-line no-proto, no-param-reassign, no-extra-parens + /** @type {{ __proto__?: object | null }} */ (object).__proto__ = proto; + return proto; + } +); diff --git a/node_modules/dunder-proto/test/get.js b/node_modules/dunder-proto/test/get.js new file mode 100644 index 0000000..253f183 --- /dev/null +++ b/node_modules/dunder-proto/test/get.js @@ -0,0 +1,34 @@ +'use strict'; + +var test = require('tape'); + +var getDunderProto = require('../get'); + +test('getDunderProto', { skip: !getDunderProto }, function (t) { + if (!getDunderProto) { + throw 'should never happen; this is just for type narrowing'; // eslint-disable-line no-throw-literal + } + + // @ts-expect-error + t['throws'](function () { getDunderProto(); }, TypeError, 'throws if no argument'); + // @ts-expect-error + t['throws'](function () { getDunderProto(undefined); }, TypeError, 'throws with undefined'); + // @ts-expect-error + t['throws'](function () { getDunderProto(null); }, TypeError, 'throws with null'); + + t.equal(getDunderProto({}), Object.prototype); + t.equal(getDunderProto([]), Array.prototype); + t.equal(getDunderProto(function () {}), Function.prototype); + t.equal(getDunderProto(/./g), RegExp.prototype); + t.equal(getDunderProto(42), Number.prototype); + t.equal(getDunderProto(true), Boolean.prototype); + t.equal(getDunderProto('foo'), String.prototype); + + t.end(); +}); + +test('no dunder proto', { skip: !!getDunderProto }, function (t) { + t.notOk('__proto__' in Object.prototype, 'no __proto__ in Object.prototype'); + + t.end(); +}); diff --git a/node_modules/dunder-proto/test/index.js b/node_modules/dunder-proto/test/index.js new file mode 100644 index 0000000..08ff36f --- /dev/null +++ b/node_modules/dunder-proto/test/index.js @@ -0,0 +1,4 @@ +'use strict'; + +require('./get'); +require('./set'); diff --git a/node_modules/dunder-proto/test/set.js b/node_modules/dunder-proto/test/set.js new file mode 100644 index 0000000..c3bfe4d --- /dev/null +++ b/node_modules/dunder-proto/test/set.js @@ -0,0 +1,50 @@ +'use strict'; + +var test = require('tape'); + +var setDunderProto = require('../set'); + +test('setDunderProto', { skip: !setDunderProto }, function (t) { + if (!setDunderProto) { + throw 'should never happen; this is just for type narrowing'; // eslint-disable-line no-throw-literal + } + + // @ts-expect-error + t['throws'](function () { setDunderProto(); }, TypeError, 'throws if no arguments'); + // @ts-expect-error + t['throws'](function () { setDunderProto(undefined); }, TypeError, 'throws with undefined and nothing'); + // @ts-expect-error + t['throws'](function () { setDunderProto(undefined, undefined); }, TypeError, 'throws with undefined and undefined'); + // @ts-expect-error + t['throws'](function () { setDunderProto(null); }, TypeError, 'throws with null and undefined'); + // @ts-expect-error + t['throws'](function () { setDunderProto(null, undefined); }, TypeError, 'throws with null and undefined'); + + /** @type {{ inherited?: boolean }} */ + var obj = {}; + t.ok('toString' in obj, 'object initially has toString'); + + setDunderProto(obj, null); + t.notOk('toString' in obj, 'object no longer has toString'); + + t.notOk('inherited' in obj, 'object lacks inherited property'); + setDunderProto(obj, { inherited: true }); + t.equal(obj.inherited, true, 'object has inherited property'); + + t.end(); +}); + +test('no dunder proto', { skip: !!setDunderProto }, function (t) { + if ('__proto__' in Object.prototype) { + t['throws']( + // @ts-expect-error + function () { ({}).__proto__ = null; }, // eslint-disable-line no-proto + Error, + 'throws when setting Object.prototype.__proto__' + ); + } else { + t.notOk('__proto__' in Object.prototype, 'no __proto__ in Object.prototype'); + } + + t.end(); +}); diff --git a/node_modules/dunder-proto/tsconfig.json b/node_modules/dunder-proto/tsconfig.json new file mode 100644 index 0000000..dabbe23 --- /dev/null +++ b/node_modules/dunder-proto/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "ES2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/node_modules/es-define-property/.eslintrc b/node_modules/es-define-property/.eslintrc new file mode 100644 index 0000000..46f3b12 --- /dev/null +++ b/node_modules/es-define-property/.eslintrc @@ -0,0 +1,13 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "new-cap": ["error", { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + }, +} diff --git a/node_modules/es-define-property/.github/FUNDING.yml b/node_modules/es-define-property/.github/FUNDING.yml new file mode 100644 index 0000000..4445451 --- /dev/null +++ b/node_modules/es-define-property/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/es-define-property +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/node_modules/es-define-property/.nycrc b/node_modules/es-define-property/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/node_modules/es-define-property/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/es-define-property/CHANGELOG.md b/node_modules/es-define-property/CHANGELOG.md new file mode 100644 index 0000000..5f60cc0 --- /dev/null +++ b/node_modules/es-define-property/CHANGELOG.md @@ -0,0 +1,29 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.1](https://github.com/ljharb/es-define-property/compare/v1.0.0...v1.0.1) - 2024-12-06 + +### Commits + +- [types] use shared tsconfig [`954a663`](https://github.com/ljharb/es-define-property/commit/954a66360326e508a0e5daa4b07493d58f5e110e) +- [actions] split out node 10-20, and 20+ [`3a8e84b`](https://github.com/ljharb/es-define-property/commit/3a8e84b23883f26ff37b3e82ff283834228e18c6) +- [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/get-intrinsic`, `@types/tape`, `auto-changelog`, `gopd`, `tape` [`86ae27b`](https://github.com/ljharb/es-define-property/commit/86ae27bb8cc857b23885136fad9cbe965ae36612) +- [Refactor] avoid using `get-intrinsic` [`02480c0`](https://github.com/ljharb/es-define-property/commit/02480c0353ef6118965282977c3864aff53d98b1) +- [Tests] replace `aud` with `npm audit` [`f6093ff`](https://github.com/ljharb/es-define-property/commit/f6093ff74ab51c98015c2592cd393bd42478e773) +- [Tests] configure testling [`7139e66`](https://github.com/ljharb/es-define-property/commit/7139e66959247a56086d9977359caef27c6849e7) +- [Dev Deps] update `tape` [`b901b51`](https://github.com/ljharb/es-define-property/commit/b901b511a75e001a40ce1a59fef7d9ffcfc87482) +- [Tests] fix types in tests [`469d269`](https://github.com/ljharb/es-define-property/commit/469d269fd141b1e773ec053a9fa35843493583e0) +- [Dev Deps] add missing peer dep [`733acfb`](https://github.com/ljharb/es-define-property/commit/733acfb0c4c96edf337e470b89a25a5b3724c352) + +## v1.0.0 - 2024-02-12 + +### Commits + +- Initial implementation, tests, readme, types [`3e154e1`](https://github.com/ljharb/es-define-property/commit/3e154e11a2fee09127220f5e503bf2c0a31dd480) +- Initial commit [`07d98de`](https://github.com/ljharb/es-define-property/commit/07d98de34a4dc31ff5e83a37c0c3f49e0d85cd50) +- npm init [`c4eb634`](https://github.com/ljharb/es-define-property/commit/c4eb6348b0d3886aac36cef34ad2ee0665ea6f3e) +- Only apps should have lockfiles [`7af86ec`](https://github.com/ljharb/es-define-property/commit/7af86ec1d311ec0b17fdfe616a25f64276903856) diff --git a/node_modules/es-define-property/LICENSE b/node_modules/es-define-property/LICENSE new file mode 100644 index 0000000..f82f389 --- /dev/null +++ b/node_modules/es-define-property/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/es-define-property/README.md b/node_modules/es-define-property/README.md new file mode 100644 index 0000000..9b291bd --- /dev/null +++ b/node_modules/es-define-property/README.md @@ -0,0 +1,49 @@ +# es-define-property [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +`Object.defineProperty`, but not IE 8's broken one. + +## Example + +```js +const assert = require('assert'); + +const $defineProperty = require('es-define-property'); + +if ($defineProperty) { + assert.equal($defineProperty, Object.defineProperty); +} else if (Object.defineProperty) { + assert.equal($defineProperty, false, 'this is IE 8'); +} else { + assert.equal($defineProperty, false, 'this is an ES3 engine'); +} +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/es-define-property +[npm-version-svg]: https://versionbadg.es/ljharb/es-define-property.svg +[deps-svg]: https://david-dm.org/ljharb/es-define-property.svg +[deps-url]: https://david-dm.org/ljharb/es-define-property +[dev-deps-svg]: https://david-dm.org/ljharb/es-define-property/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/es-define-property#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-define-property.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-define-property.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-define-property.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-define-property +[codecov-image]: https://codecov.io/gh/ljharb/es-define-property/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/es-define-property/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/es-define-property +[actions-url]: https://github.com/ljharb/es-define-property/actions diff --git a/node_modules/es-define-property/index.d.ts b/node_modules/es-define-property/index.d.ts new file mode 100644 index 0000000..6012247 --- /dev/null +++ b/node_modules/es-define-property/index.d.ts @@ -0,0 +1,3 @@ +declare const defineProperty: false | typeof Object.defineProperty; + +export = defineProperty; \ No newline at end of file diff --git a/node_modules/es-define-property/index.js b/node_modules/es-define-property/index.js new file mode 100644 index 0000000..e0a2925 --- /dev/null +++ b/node_modules/es-define-property/index.js @@ -0,0 +1,14 @@ +'use strict'; + +/** @type {import('.')} */ +var $defineProperty = Object.defineProperty || false; +if ($defineProperty) { + try { + $defineProperty({}, 'a', { value: 1 }); + } catch (e) { + // IE 8 has a broken defineProperty + $defineProperty = false; + } +} + +module.exports = $defineProperty; diff --git a/node_modules/es-define-property/package.json b/node_modules/es-define-property/package.json new file mode 100644 index 0000000..fbed187 --- /dev/null +++ b/node_modules/es-define-property/package.json @@ -0,0 +1,81 @@ +{ + "name": "es-define-property", + "version": "1.0.1", + "description": "`Object.defineProperty`, but not IE 8's broken one.", + "main": "index.js", + "types": "./index.d.ts", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p .", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-define-property.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "object", + "define", + "property", + "defineProperty", + "Object.defineProperty" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-define-property/issues" + }, + "homepage": "https://github.com/ljharb/es-define-property#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/gopd": "^1.0.3", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "gopd": "^1.2.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} diff --git a/node_modules/es-define-property/test/index.js b/node_modules/es-define-property/test/index.js new file mode 100644 index 0000000..b4b4688 --- /dev/null +++ b/node_modules/es-define-property/test/index.js @@ -0,0 +1,56 @@ +'use strict'; + +var $defineProperty = require('../'); + +var test = require('tape'); +var gOPD = require('gopd'); + +test('defineProperty: supported', { skip: !$defineProperty }, function (t) { + t.plan(4); + + t.equal(typeof $defineProperty, 'function', 'defineProperty is supported'); + if ($defineProperty && gOPD) { // this `if` check is just to shut TS up + /** @type {{ a: number, b?: number, c?: number }} */ + var o = { a: 1 }; + + $defineProperty(o, 'b', { enumerable: true, value: 2 }); + t.deepEqual( + gOPD(o, 'b'), + { + configurable: false, + enumerable: true, + value: 2, + writable: false + }, + 'property descriptor is as expected' + ); + + $defineProperty(o, 'c', { enumerable: false, value: 3, writable: true }); + t.deepEqual( + gOPD(o, 'c'), + { + configurable: false, + enumerable: false, + value: 3, + writable: true + }, + 'property descriptor is as expected' + ); + } + + t.equal($defineProperty, Object.defineProperty, 'defineProperty is Object.defineProperty'); + + t.end(); +}); + +test('defineProperty: not supported', { skip: !!$defineProperty }, function (t) { + t.notOk($defineProperty, 'defineProperty is not supported'); + + t.match( + typeof $defineProperty, + /^(?:undefined|boolean)$/, + '`typeof defineProperty` is `undefined` or `boolean`' + ); + + t.end(); +}); diff --git a/node_modules/es-define-property/tsconfig.json b/node_modules/es-define-property/tsconfig.json new file mode 100644 index 0000000..5a49992 --- /dev/null +++ b/node_modules/es-define-property/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2022", + }, + "exclude": [ + "coverage", + "test/list-exports" + ], +} diff --git a/node_modules/es-errors/.eslintrc b/node_modules/es-errors/.eslintrc new file mode 100644 index 0000000..3b5d9e9 --- /dev/null +++ b/node_modules/es-errors/.eslintrc @@ -0,0 +1,5 @@ +{ + "root": true, + + "extends": "@ljharb", +} diff --git a/node_modules/es-errors/.github/FUNDING.yml b/node_modules/es-errors/.github/FUNDING.yml new file mode 100644 index 0000000..f1b8805 --- /dev/null +++ b/node_modules/es-errors/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/es-errors +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/node_modules/es-errors/CHANGELOG.md b/node_modules/es-errors/CHANGELOG.md new file mode 100644 index 0000000..204a9e9 --- /dev/null +++ b/node_modules/es-errors/CHANGELOG.md @@ -0,0 +1,40 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.3.0](https://github.com/ljharb/es-errors/compare/v1.2.1...v1.3.0) - 2024-02-05 + +### Commits + +- [New] add `EvalError` and `URIError` [`1927627`](https://github.com/ljharb/es-errors/commit/1927627ba68cb6c829d307231376c967db53acdf) + +## [v1.2.1](https://github.com/ljharb/es-errors/compare/v1.2.0...v1.2.1) - 2024-02-04 + +### Commits + +- [Fix] add missing `exports` entry [`5bb5f28`](https://github.com/ljharb/es-errors/commit/5bb5f280f98922701109d6ebb82eea2257cecc7e) + +## [v1.2.0](https://github.com/ljharb/es-errors/compare/v1.1.0...v1.2.0) - 2024-02-04 + +### Commits + +- [New] add `ReferenceError` [`6d8cf5b`](https://github.com/ljharb/es-errors/commit/6d8cf5bbb6f3f598d02cf6f30e468ba2caa8e143) + +## [v1.1.0](https://github.com/ljharb/es-errors/compare/v1.0.0...v1.1.0) - 2024-02-04 + +### Commits + +- [New] add base Error [`2983ab6`](https://github.com/ljharb/es-errors/commit/2983ab65f7bc5441276cb021dc3aa03c78881698) + +## v1.0.0 - 2024-02-03 + +### Commits + +- Initial implementation, tests, readme, type [`8f47631`](https://github.com/ljharb/es-errors/commit/8f476317e9ad76f40ad648081829b1a1a3a1288b) +- Initial commit [`ea5d099`](https://github.com/ljharb/es-errors/commit/ea5d099ef18e550509ab9e2be000526afd81c385) +- npm init [`6f5ebf9`](https://github.com/ljharb/es-errors/commit/6f5ebf9cead474dadd72b9e63dad315820a089ae) +- Only apps should have lockfiles [`e1a0aeb`](https://github.com/ljharb/es-errors/commit/e1a0aeb7b80f5cfc56be54d6b2100e915d47def8) +- [meta] add `sideEffects` flag [`a9c7d46`](https://github.com/ljharb/es-errors/commit/a9c7d460a492f1d8a241c836bc25a322a19cc043) diff --git a/node_modules/es-errors/LICENSE b/node_modules/es-errors/LICENSE new file mode 100644 index 0000000..f82f389 --- /dev/null +++ b/node_modules/es-errors/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/es-errors/README.md b/node_modules/es-errors/README.md new file mode 100644 index 0000000..8dbfacf --- /dev/null +++ b/node_modules/es-errors/README.md @@ -0,0 +1,55 @@ +# es-errors [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +A simple cache for a few of the JS Error constructors. + +## Example + +```js +const assert = require('assert'); + +const Base = require('es-errors'); +const Eval = require('es-errors/eval'); +const Range = require('es-errors/range'); +const Ref = require('es-errors/ref'); +const Syntax = require('es-errors/syntax'); +const Type = require('es-errors/type'); +const URI = require('es-errors/uri'); + +assert.equal(Base, Error); +assert.equal(Eval, EvalError); +assert.equal(Range, RangeError); +assert.equal(Ref, ReferenceError); +assert.equal(Syntax, SyntaxError); +assert.equal(Type, TypeError); +assert.equal(URI, URIError); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/es-errors +[npm-version-svg]: https://versionbadg.es/ljharb/es-errors.svg +[deps-svg]: https://david-dm.org/ljharb/es-errors.svg +[deps-url]: https://david-dm.org/ljharb/es-errors +[dev-deps-svg]: https://david-dm.org/ljharb/es-errors/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/es-errors#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-errors.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-errors.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-errors.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-errors +[codecov-image]: https://codecov.io/gh/ljharb/es-errors/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/es-errors/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/es-errors +[actions-url]: https://github.com/ljharb/es-errors/actions diff --git a/node_modules/es-errors/eval.d.ts b/node_modules/es-errors/eval.d.ts new file mode 100644 index 0000000..e4210e0 --- /dev/null +++ b/node_modules/es-errors/eval.d.ts @@ -0,0 +1,3 @@ +declare const EvalError: EvalErrorConstructor; + +export = EvalError; diff --git a/node_modules/es-errors/eval.js b/node_modules/es-errors/eval.js new file mode 100644 index 0000000..725ccb6 --- /dev/null +++ b/node_modules/es-errors/eval.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./eval')} */ +module.exports = EvalError; diff --git a/node_modules/es-errors/index.d.ts b/node_modules/es-errors/index.d.ts new file mode 100644 index 0000000..69bdbc9 --- /dev/null +++ b/node_modules/es-errors/index.d.ts @@ -0,0 +1,3 @@ +declare const Error: ErrorConstructor; + +export = Error; diff --git a/node_modules/es-errors/index.js b/node_modules/es-errors/index.js new file mode 100644 index 0000000..cc0c521 --- /dev/null +++ b/node_modules/es-errors/index.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('.')} */ +module.exports = Error; diff --git a/node_modules/es-errors/package.json b/node_modules/es-errors/package.json new file mode 100644 index 0000000..ff8c2a5 --- /dev/null +++ b/node_modules/es-errors/package.json @@ -0,0 +1,80 @@ +{ + "name": "es-errors", + "version": "1.3.0", + "description": "A simple cache for a few of the JS Error constructors.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./eval": "./eval.js", + "./range": "./range.js", + "./ref": "./ref.js", + "./syntax": "./syntax.js", + "./type": "./type.js", + "./uri": "./uri.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "aud --production", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-errors.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "error", + "typeerror", + "syntaxerror", + "rangeerror" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-errors/issues" + }, + "homepage": "https://github.com/ljharb/es-errors#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "@types/tape": "^5.6.4", + "aud": "^2.0.4", + "auto-changelog": "^2.4.0", + "eclint": "^2.8.1", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.4", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/es-errors/range.d.ts b/node_modules/es-errors/range.d.ts new file mode 100644 index 0000000..3a12e86 --- /dev/null +++ b/node_modules/es-errors/range.d.ts @@ -0,0 +1,3 @@ +declare const RangeError: RangeErrorConstructor; + +export = RangeError; diff --git a/node_modules/es-errors/range.js b/node_modules/es-errors/range.js new file mode 100644 index 0000000..2044fe0 --- /dev/null +++ b/node_modules/es-errors/range.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./range')} */ +module.exports = RangeError; diff --git a/node_modules/es-errors/ref.d.ts b/node_modules/es-errors/ref.d.ts new file mode 100644 index 0000000..a13107e --- /dev/null +++ b/node_modules/es-errors/ref.d.ts @@ -0,0 +1,3 @@ +declare const ReferenceError: ReferenceErrorConstructor; + +export = ReferenceError; diff --git a/node_modules/es-errors/ref.js b/node_modules/es-errors/ref.js new file mode 100644 index 0000000..d7c430f --- /dev/null +++ b/node_modules/es-errors/ref.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./ref')} */ +module.exports = ReferenceError; diff --git a/node_modules/es-errors/syntax.d.ts b/node_modules/es-errors/syntax.d.ts new file mode 100644 index 0000000..6a0c53c --- /dev/null +++ b/node_modules/es-errors/syntax.d.ts @@ -0,0 +1,3 @@ +declare const SyntaxError: SyntaxErrorConstructor; + +export = SyntaxError; diff --git a/node_modules/es-errors/syntax.js b/node_modules/es-errors/syntax.js new file mode 100644 index 0000000..5f5fdde --- /dev/null +++ b/node_modules/es-errors/syntax.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./syntax')} */ +module.exports = SyntaxError; diff --git a/node_modules/es-errors/test/index.js b/node_modules/es-errors/test/index.js new file mode 100644 index 0000000..1ff0277 --- /dev/null +++ b/node_modules/es-errors/test/index.js @@ -0,0 +1,19 @@ +'use strict'; + +var test = require('tape'); + +var E = require('../'); +var R = require('../range'); +var Ref = require('../ref'); +var S = require('../syntax'); +var T = require('../type'); + +test('errors', function (t) { + t.equal(E, Error); + t.equal(R, RangeError); + t.equal(Ref, ReferenceError); + t.equal(S, SyntaxError); + t.equal(T, TypeError); + + t.end(); +}); diff --git a/node_modules/es-errors/tsconfig.json b/node_modules/es-errors/tsconfig.json new file mode 100644 index 0000000..99dfeb6 --- /dev/null +++ b/node_modules/es-errors/tsconfig.json @@ -0,0 +1,49 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Projects */ + + /* Language and Environment */ + "target": "es5", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": ["types"], /* Specify multiple folders that act like `./node_modules/@types`. */ + "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + + /* JavaScript Support */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ + "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ + + /* Emit */ + "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + "declarationMap": true, /* Create sourcemaps for d.ts files. */ + "noEmit": true, /* Disable emitting files from a compilation. */ + + /* Interop Constraints */ + "allowSyntheticDefaultImports": true, /* Allow `import x from y` when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + + /* Completeness */ + // "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "exclude": [ + "coverage", + ], +} diff --git a/node_modules/es-errors/type.d.ts b/node_modules/es-errors/type.d.ts new file mode 100644 index 0000000..576fb51 --- /dev/null +++ b/node_modules/es-errors/type.d.ts @@ -0,0 +1,3 @@ +declare const TypeError: TypeErrorConstructor + +export = TypeError; diff --git a/node_modules/es-errors/type.js b/node_modules/es-errors/type.js new file mode 100644 index 0000000..9769e44 --- /dev/null +++ b/node_modules/es-errors/type.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./type')} */ +module.exports = TypeError; diff --git a/node_modules/es-errors/uri.d.ts b/node_modules/es-errors/uri.d.ts new file mode 100644 index 0000000..c3261c9 --- /dev/null +++ b/node_modules/es-errors/uri.d.ts @@ -0,0 +1,3 @@ +declare const URIError: URIErrorConstructor; + +export = URIError; diff --git a/node_modules/es-errors/uri.js b/node_modules/es-errors/uri.js new file mode 100644 index 0000000..e9cd1c7 --- /dev/null +++ b/node_modules/es-errors/uri.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./uri')} */ +module.exports = URIError; diff --git a/node_modules/es-object-atoms/.eslintrc b/node_modules/es-object-atoms/.eslintrc new file mode 100644 index 0000000..d90a1bc --- /dev/null +++ b/node_modules/es-object-atoms/.eslintrc @@ -0,0 +1,16 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "eqeqeq": ["error", "allow-null"], + "id-length": "off", + "new-cap": ["error", { + "capIsNewExceptions": [ + "RequireObjectCoercible", + "ToObject", + ], + }], + }, +} diff --git a/node_modules/es-object-atoms/.github/FUNDING.yml b/node_modules/es-object-atoms/.github/FUNDING.yml new file mode 100644 index 0000000..352bfda --- /dev/null +++ b/node_modules/es-object-atoms/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/es-object +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/node_modules/es-object-atoms/CHANGELOG.md b/node_modules/es-object-atoms/CHANGELOG.md new file mode 100644 index 0000000..fdd2abe --- /dev/null +++ b/node_modules/es-object-atoms/CHANGELOG.md @@ -0,0 +1,37 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.1.1](https://github.com/ljharb/es-object-atoms/compare/v1.1.0...v1.1.1) - 2025-01-14 + +### Commits + +- [types] `ToObject`: improve types [`cfe8c8a`](https://github.com/ljharb/es-object-atoms/commit/cfe8c8a105c44820cb22e26f62d12ef0ad9715c8) + +## [v1.1.0](https://github.com/ljharb/es-object-atoms/compare/v1.0.1...v1.1.0) - 2025-01-14 + +### Commits + +- [New] add `isObject` [`51e4042`](https://github.com/ljharb/es-object-atoms/commit/51e4042df722eb3165f40dc5f4bf33d0197ecb07) + +## [v1.0.1](https://github.com/ljharb/es-object-atoms/compare/v1.0.0...v1.0.1) - 2025-01-13 + +### Commits + +- [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/tape`, `auto-changelog`, `tape` [`38ab9eb`](https://github.com/ljharb/es-object-atoms/commit/38ab9eb00b62c2f4668644f5e513d9b414ebd595) +- [types] improve types [`7d1beb8`](https://github.com/ljharb/es-object-atoms/commit/7d1beb887958b78b6a728a210a1c8370ab7e2aa1) +- [Tests] replace `aud` with `npm audit` [`25863ba`](https://github.com/ljharb/es-object-atoms/commit/25863baf99178f1d1ad33d1120498db28631907e) +- [Dev Deps] add missing peer dep [`c012309`](https://github.com/ljharb/es-object-atoms/commit/c0123091287e6132d6f4240496340c427433df28) + +## v1.0.0 - 2024-03-16 + +### Commits + +- Initial implementation, tests, readme, types [`f1499db`](https://github.com/ljharb/es-object-atoms/commit/f1499db7d3e1741e64979c61d645ab3137705e82) +- Initial commit [`99eedc7`](https://github.com/ljharb/es-object-atoms/commit/99eedc7b5fde38a50a28d3c8b724706e3e4c5f6a) +- [meta] rename repo [`fc851fa`](https://github.com/ljharb/es-object-atoms/commit/fc851fa70616d2d182aaf0bd02c2ed7084dea8fa) +- npm init [`b909377`](https://github.com/ljharb/es-object-atoms/commit/b909377c50049bd0ec575562d20b0f9ebae8947f) +- Only apps should have lockfiles [`7249edd`](https://github.com/ljharb/es-object-atoms/commit/7249edd2178c1b9ddfc66ffcc6d07fdf0d28efc1) diff --git a/node_modules/es-object-atoms/LICENSE b/node_modules/es-object-atoms/LICENSE new file mode 100644 index 0000000..f82f389 --- /dev/null +++ b/node_modules/es-object-atoms/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/es-object-atoms/README.md b/node_modules/es-object-atoms/README.md new file mode 100644 index 0000000..447695b --- /dev/null +++ b/node_modules/es-object-atoms/README.md @@ -0,0 +1,63 @@ +# es-object-atoms [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +ES Object-related atoms: Object, ToObject, RequireObjectCoercible. + +## Example + +```js +const assert = require('assert'); + +const $Object = require('es-object-atoms'); +const isObject = require('es-object-atoms/isObject'); +const ToObject = require('es-object-atoms/ToObject'); +const RequireObjectCoercible = require('es-object-atoms/RequireObjectCoercible'); + +assert.equal($Object, Object); +assert.throws(() => ToObject(null), TypeError); +assert.throws(() => ToObject(undefined), TypeError); +assert.throws(() => RequireObjectCoercible(null), TypeError); +assert.throws(() => RequireObjectCoercible(undefined), TypeError); + +assert.equal(isObject(undefined), false); +assert.equal(isObject(null), false); +assert.equal(isObject({}), true); +assert.equal(isObject([]), true); +assert.equal(isObject(function () {}), true); + +assert.deepEqual(RequireObjectCoercible(true), true); +assert.deepEqual(ToObject(true), Object(true)); + +const obj = {}; +assert.equal(RequireObjectCoercible(obj), obj); +assert.equal(ToObject(obj), obj); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/es-object-atoms +[npm-version-svg]: https://versionbadg.es/ljharb/es-object-atoms.svg +[deps-svg]: https://david-dm.org/ljharb/es-object-atoms.svg +[deps-url]: https://david-dm.org/ljharb/es-object-atoms +[dev-deps-svg]: https://david-dm.org/ljharb/es-object-atoms/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/es-object-atoms#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-object-atoms.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-object-atoms.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-object.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-object-atoms +[codecov-image]: https://codecov.io/gh/ljharb/es-object-atoms/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/es-object-atoms/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/es-object-atoms +[actions-url]: https://github.com/ljharb/es-object-atoms/actions diff --git a/node_modules/es-object-atoms/RequireObjectCoercible.d.ts b/node_modules/es-object-atoms/RequireObjectCoercible.d.ts new file mode 100644 index 0000000..7e26c45 --- /dev/null +++ b/node_modules/es-object-atoms/RequireObjectCoercible.d.ts @@ -0,0 +1,3 @@ +declare function RequireObjectCoercible(value: T, optMessage?: string): T; + +export = RequireObjectCoercible; diff --git a/node_modules/es-object-atoms/RequireObjectCoercible.js b/node_modules/es-object-atoms/RequireObjectCoercible.js new file mode 100644 index 0000000..8e191c6 --- /dev/null +++ b/node_modules/es-object-atoms/RequireObjectCoercible.js @@ -0,0 +1,11 @@ +'use strict'; + +var $TypeError = require('es-errors/type'); + +/** @type {import('./RequireObjectCoercible')} */ +module.exports = function RequireObjectCoercible(value) { + if (value == null) { + throw new $TypeError((arguments.length > 0 && arguments[1]) || ('Cannot call method on ' + value)); + } + return value; +}; diff --git a/node_modules/es-object-atoms/ToObject.d.ts b/node_modules/es-object-atoms/ToObject.d.ts new file mode 100644 index 0000000..d6dd302 --- /dev/null +++ b/node_modules/es-object-atoms/ToObject.d.ts @@ -0,0 +1,7 @@ +declare function ToObject(value: number): Number; +declare function ToObject(value: boolean): Boolean; +declare function ToObject(value: string): String; +declare function ToObject(value: bigint): BigInt; +declare function ToObject(value: T): T; + +export = ToObject; diff --git a/node_modules/es-object-atoms/ToObject.js b/node_modules/es-object-atoms/ToObject.js new file mode 100644 index 0000000..2b99a7d --- /dev/null +++ b/node_modules/es-object-atoms/ToObject.js @@ -0,0 +1,10 @@ +'use strict'; + +var $Object = require('./'); +var RequireObjectCoercible = require('./RequireObjectCoercible'); + +/** @type {import('./ToObject')} */ +module.exports = function ToObject(value) { + RequireObjectCoercible(value); + return $Object(value); +}; diff --git a/node_modules/es-object-atoms/index.d.ts b/node_modules/es-object-atoms/index.d.ts new file mode 100644 index 0000000..8bdbfc8 --- /dev/null +++ b/node_modules/es-object-atoms/index.d.ts @@ -0,0 +1,3 @@ +declare const Object: ObjectConstructor; + +export = Object; diff --git a/node_modules/es-object-atoms/index.js b/node_modules/es-object-atoms/index.js new file mode 100644 index 0000000..1d33cef --- /dev/null +++ b/node_modules/es-object-atoms/index.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('.')} */ +module.exports = Object; diff --git a/node_modules/es-object-atoms/isObject.d.ts b/node_modules/es-object-atoms/isObject.d.ts new file mode 100644 index 0000000..43bee3b --- /dev/null +++ b/node_modules/es-object-atoms/isObject.d.ts @@ -0,0 +1,3 @@ +declare function isObject(x: unknown): x is object; + +export = isObject; diff --git a/node_modules/es-object-atoms/isObject.js b/node_modules/es-object-atoms/isObject.js new file mode 100644 index 0000000..ec49bf1 --- /dev/null +++ b/node_modules/es-object-atoms/isObject.js @@ -0,0 +1,6 @@ +'use strict'; + +/** @type {import('./isObject')} */ +module.exports = function isObject(x) { + return !!x && (typeof x === 'function' || typeof x === 'object'); +}; diff --git a/node_modules/es-object-atoms/package.json b/node_modules/es-object-atoms/package.json new file mode 100644 index 0000000..f4cec71 --- /dev/null +++ b/node_modules/es-object-atoms/package.json @@ -0,0 +1,80 @@ +{ + "name": "es-object-atoms", + "version": "1.1.1", + "description": "ES Object-related atoms: Object, ToObject, RequireObjectCoercible", + "main": "index.js", + "exports": { + ".": "./index.js", + "./RequireObjectCoercible": "./RequireObjectCoercible.js", + "./isObject": "./isObject.js", + "./ToObject": "./ToObject.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "npx npm@\">= 10.2\" audit --production", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-object-atoms.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "object", + "toobject", + "coercible" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-object-atoms/issues" + }, + "homepage": "https://github.com/ljharb/es-object-atoms#readme", + "dependencies": { + "es-errors": "^1.3.0" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/tape": "^5.8.1", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "encoding": "^0.1.13", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/es-object-atoms/test/index.js b/node_modules/es-object-atoms/test/index.js new file mode 100644 index 0000000..430b705 --- /dev/null +++ b/node_modules/es-object-atoms/test/index.js @@ -0,0 +1,38 @@ +'use strict'; + +var test = require('tape'); + +var $Object = require('../'); +var isObject = require('../isObject'); +var ToObject = require('../ToObject'); +var RequireObjectCoercible = require('..//RequireObjectCoercible'); + +test('errors', function (t) { + t.equal($Object, Object); + // @ts-expect-error + t['throws'](function () { ToObject(null); }, TypeError); + // @ts-expect-error + t['throws'](function () { ToObject(undefined); }, TypeError); + // @ts-expect-error + t['throws'](function () { RequireObjectCoercible(null); }, TypeError); + // @ts-expect-error + t['throws'](function () { RequireObjectCoercible(undefined); }, TypeError); + + t.deepEqual(RequireObjectCoercible(true), true); + t.deepEqual(ToObject(true), Object(true)); + t.deepEqual(ToObject(42), Object(42)); + var f = function () {}; + t.equal(ToObject(f), f); + + t.equal(isObject(undefined), false); + t.equal(isObject(null), false); + t.equal(isObject({}), true); + t.equal(isObject([]), true); + t.equal(isObject(function () {}), true); + + var obj = {}; + t.equal(RequireObjectCoercible(obj), obj); + t.equal(ToObject(obj), obj); + + t.end(); +}); diff --git a/node_modules/es-object-atoms/tsconfig.json b/node_modules/es-object-atoms/tsconfig.json new file mode 100644 index 0000000..1f73cb7 --- /dev/null +++ b/node_modules/es-object-atoms/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es5", + }, +} diff --git a/node_modules/es-set-tostringtag/.eslintrc b/node_modules/es-set-tostringtag/.eslintrc new file mode 100644 index 0000000..2612ed8 --- /dev/null +++ b/node_modules/es-set-tostringtag/.eslintrc @@ -0,0 +1,13 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "new-cap": [2, { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + }, +} diff --git a/node_modules/es-set-tostringtag/.nycrc b/node_modules/es-set-tostringtag/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/node_modules/es-set-tostringtag/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/es-set-tostringtag/CHANGELOG.md b/node_modules/es-set-tostringtag/CHANGELOG.md new file mode 100644 index 0000000..00bdc03 --- /dev/null +++ b/node_modules/es-set-tostringtag/CHANGELOG.md @@ -0,0 +1,67 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v2.1.0](https://github.com/es-shims/es-set-tostringtag/compare/v2.0.3...v2.1.0) - 2025-01-01 + +### Commits + +- [actions] split out node 10-20, and 20+ [`ede033c`](https://github.com/es-shims/es-set-tostringtag/commit/ede033cc4e506c3966d2d482d4ac5987e329162a) +- [types] use shared config [`28ef164`](https://github.com/es-shims/es-set-tostringtag/commit/28ef164ad7c5bc21837c79f7ef25542a1f258ade) +- [New] add `nonConfigurable` option [`3bee3f0`](https://github.com/es-shims/es-set-tostringtag/commit/3bee3f04caddd318f3932912212ed20b2d62aad7) +- [Fix] validate boolean option argument [`3c8a609`](https://github.com/es-shims/es-set-tostringtag/commit/3c8a609c795a305ccca163f0ff6956caa88cdc0e) +- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/get-intrinsic`, `@types/tape`, `auto-changelog`, `tape` [`501a969`](https://github.com/es-shims/es-set-tostringtag/commit/501a96998484226e07f5ffd447e8f305a998f1d8) +- [Tests] add coverage [`18af289`](https://github.com/es-shims/es-set-tostringtag/commit/18af2897b4e937373c9b8c8831bc338932246470) +- [readme] document `force` option [`bd446a1`](https://github.com/es-shims/es-set-tostringtag/commit/bd446a107b71a2270278442e5124f45590d3ee64) +- [Tests] use `@arethetypeswrong/cli` [`7c2c2fa`](https://github.com/es-shims/es-set-tostringtag/commit/7c2c2fa3cca0f4d263603adb75426b239514598f) +- [Tests] replace `aud` with `npm audit` [`9e372d7`](https://github.com/es-shims/es-set-tostringtag/commit/9e372d7e6db3dab405599a14d9074a99a03b8242) +- [Deps] update `get-intrinsic` [`7df1216`](https://github.com/es-shims/es-set-tostringtag/commit/7df12167295385c2a547410e687cb0c04f3a34b9) +- [Deps] update `hasown` [`993a7d2`](https://github.com/es-shims/es-set-tostringtag/commit/993a7d200e2059fd857ec1a25d0a49c2c34ae6e2) +- [Dev Deps] add missing peer dep [`148ed8d`](https://github.com/es-shims/es-set-tostringtag/commit/148ed8db99a7a94f9af3823fd083e6e437fa1587) + +## [v2.0.3](https://github.com/es-shims/es-set-tostringtag/compare/v2.0.2...v2.0.3) - 2024-02-20 + +### Commits + +- add types [`d538513`](https://github.com/es-shims/es-set-tostringtag/commit/d5385133592a32a0a416cb535327918af7fbc4ad) +- [Deps] update `get-intrinsic`, `has-tostringtag`, `hasown` [`d129b29`](https://github.com/es-shims/es-set-tostringtag/commit/d129b29536bccc8a9d03a47887ca4d1f7ad0c5b9) +- [Dev Deps] update `aud`, `npmignore`, `tape` [`132ed23`](https://github.com/es-shims/es-set-tostringtag/commit/132ed23c964a41ed55e4ab4a5a2c3fe185e821c1) +- [Tests] fix hasOwn require [`f89c831`](https://github.com/es-shims/es-set-tostringtag/commit/f89c831fe5f3edf1f979c597b56fee1be6111f56) + +## [v2.0.2](https://github.com/es-shims/es-set-tostringtag/compare/v2.0.1...v2.0.2) - 2023-10-20 + +### Commits + +- [Refactor] use `hasown` instead of `has` [`0cc6c4e`](https://github.com/es-shims/es-set-tostringtag/commit/0cc6c4e61fd13e8f00b85424ae6e541ebf289e74) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`70e447c`](https://github.com/es-shims/es-set-tostringtag/commit/70e447cf9f82b896ddf359fda0a0498c16cf3ed2) +- [Deps] update `get-intrinsic` [`826aab7`](https://github.com/es-shims/es-set-tostringtag/commit/826aab76180392871c8efa99acc0f0bbf775c64e) + +## [v2.0.1](https://github.com/es-shims/es-set-tostringtag/compare/v2.0.0...v2.0.1) - 2023-01-05 + +### Fixed + +- [Fix] move `has` to prod deps [`#2`](https://github.com/es-shims/es-set-tostringtag/issues/2) + +### Commits + +- [Dev Deps] update `@ljharb/eslint-config` [`b9eecd2`](https://github.com/es-shims/es-set-tostringtag/commit/b9eecd23c10b7b43ba75089ac8ff8cc6b295798b) + +## [v2.0.0](https://github.com/es-shims/es-set-tostringtag/compare/v1.0.0...v2.0.0) - 2022-12-21 + +### Commits + +- [Tests] refactor tests [`168dcfb`](https://github.com/es-shims/es-set-tostringtag/commit/168dcfbb535c279dc48ccdc89419155125aaec18) +- [Breaking] do not set toStringTag if it is already set [`226ab87`](https://github.com/es-shims/es-set-tostringtag/commit/226ab874192c625d9e5f0e599d3f60d2b2aa83b5) +- [New] add `force` option to set even if already set [`1abd4ec`](https://github.com/es-shims/es-set-tostringtag/commit/1abd4ecb282f19718c4518284b0293a343564505) + +## v1.0.0 - 2022-12-21 + +### Commits + +- Initial implementation, tests, readme [`a0e1147`](https://github.com/es-shims/es-set-tostringtag/commit/a0e11473f79a233b46374525c962ea1b4d42418a) +- Initial commit [`ffd4aff`](https://github.com/es-shims/es-set-tostringtag/commit/ffd4afffbeebf29aff0d87a7cfc3f7844e09fe68) +- npm init [`fffe5bd`](https://github.com/es-shims/es-set-tostringtag/commit/fffe5bd1d1146d084730a387a9c672371f4a8fff) +- Only apps should have lockfiles [`d363871`](https://github.com/es-shims/es-set-tostringtag/commit/d36387139465623e161a15dbd39120537f150c62) diff --git a/node_modules/es-set-tostringtag/LICENSE b/node_modules/es-set-tostringtag/LICENSE new file mode 100644 index 0000000..c2a8460 --- /dev/null +++ b/node_modules/es-set-tostringtag/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 ECMAScript Shims + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/es-set-tostringtag/README.md b/node_modules/es-set-tostringtag/README.md new file mode 100644 index 0000000..c27bc9f --- /dev/null +++ b/node_modules/es-set-tostringtag/README.md @@ -0,0 +1,53 @@ +# es-set-tostringtag [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +A helper to optimistically set Symbol.toStringTag, when possible. + +## Example +Most common usage: +```js +var assert = require('assert'); +var setToStringTag = require('es-set-tostringtag'); + +var obj = {}; + +assert.equal(Object.prototype.toString.call(obj), '[object Object]'); + +setToStringTag(obj, 'tagged!'); + +assert.equal(Object.prototype.toString.call(obj), '[object tagged!]'); +``` + +## Options +An optional options argument can be provided as the third argument. The available options are: + +### `force` +If the `force` option is set to `true`, the toStringTag will be set even if it is already set. + +### `nonConfigurable` +If the `nonConfigurable` option is set to `true`, the toStringTag will be defined as non-configurable when possible. + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.com/package/es-set-tostringtag +[npm-version-svg]: https://versionbadg.es/es-shims/es-set-tostringtag.svg +[deps-svg]: https://david-dm.org/es-shims/es-set-tostringtag.svg +[deps-url]: https://david-dm.org/es-shims/es-set-tostringtag +[dev-deps-svg]: https://david-dm.org/es-shims/es-set-tostringtag/dev-status.svg +[dev-deps-url]: https://david-dm.org/es-shims/es-set-tostringtag#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-set-tostringtag.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-set-tostringtag.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-set-tostringtag.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-set-tostringtag +[codecov-image]: https://codecov.io/gh/es-shims/es-set-tostringtag/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/es-shims/es-set-tostringtag/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/es-set-tostringtag +[actions-url]: https://github.com/es-shims/es-set-tostringtag/actions diff --git a/node_modules/es-set-tostringtag/index.d.ts b/node_modules/es-set-tostringtag/index.d.ts new file mode 100644 index 0000000..c9a8fc4 --- /dev/null +++ b/node_modules/es-set-tostringtag/index.d.ts @@ -0,0 +1,10 @@ +declare function setToStringTag( + object: object & { [Symbol.toStringTag]?: unknown }, + value: string | unknown, + options?: { + force?: boolean; + nonConfigurable?: boolean; + }, +): void; + +export = setToStringTag; \ No newline at end of file diff --git a/node_modules/es-set-tostringtag/index.js b/node_modules/es-set-tostringtag/index.js new file mode 100644 index 0000000..6b6b49c --- /dev/null +++ b/node_modules/es-set-tostringtag/index.js @@ -0,0 +1,35 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); + +var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); + +var hasToStringTag = require('has-tostringtag/shams')(); +var hasOwn = require('hasown'); +var $TypeError = require('es-errors/type'); + +var toStringTag = hasToStringTag ? Symbol.toStringTag : null; + +/** @type {import('.')} */ +module.exports = function setToStringTag(object, value) { + var overrideIfSet = arguments.length > 2 && !!arguments[2] && arguments[2].force; + var nonConfigurable = arguments.length > 2 && !!arguments[2] && arguments[2].nonConfigurable; + if ( + (typeof overrideIfSet !== 'undefined' && typeof overrideIfSet !== 'boolean') + || (typeof nonConfigurable !== 'undefined' && typeof nonConfigurable !== 'boolean') + ) { + throw new $TypeError('if provided, the `overrideIfSet` and `nonConfigurable` options must be booleans'); + } + if (toStringTag && (overrideIfSet || !hasOwn(object, toStringTag))) { + if ($defineProperty) { + $defineProperty(object, toStringTag, { + configurable: !nonConfigurable, + enumerable: false, + value: value, + writable: false + }); + } else { + object[toStringTag] = value; // eslint-disable-line no-param-reassign + } + } +}; diff --git a/node_modules/es-set-tostringtag/package.json b/node_modules/es-set-tostringtag/package.json new file mode 100644 index 0000000..277c3e5 --- /dev/null +++ b/node_modules/es-set-tostringtag/package.json @@ -0,0 +1,78 @@ +{ + "name": "es-set-tostringtag", + "version": "2.1.0", + "description": "A helper to optimistically set Symbol.toStringTag, when possible.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@\">= 10.2\" audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/es-shims/es-set-tostringtag.git" + }, + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/es-shims/es-set-tostringtag/issues" + }, + "homepage": "https://github.com/es-shims/es-set-tostringtag#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.2", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/get-intrinsic": "^1.2.3", + "@types/has-symbols": "^1.0.2", + "@types/tape": "^5.8.0", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "testling": { + "files": "./test/index.js" + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} diff --git a/node_modules/es-set-tostringtag/test/index.js b/node_modules/es-set-tostringtag/test/index.js new file mode 100644 index 0000000..f1757b3 --- /dev/null +++ b/node_modules/es-set-tostringtag/test/index.js @@ -0,0 +1,85 @@ +'use strict'; + +var test = require('tape'); +var hasToStringTag = require('has-tostringtag/shams')(); +var hasOwn = require('hasown'); + +var setToStringTag = require('../'); + +test('setToStringTag', function (t) { + t.equal(typeof setToStringTag, 'function', 'is a function'); + + /** @type {{ [Symbol.toStringTag]?: typeof sentinel }} */ + var obj = {}; + var sentinel = {}; + + setToStringTag(obj, sentinel); + + t['throws']( + // @ts-expect-error + function () { setToStringTag(obj, sentinel, { force: 'yes' }); }, + TypeError, + 'throws if options is not an object' + ); + + t.test('has Symbol.toStringTag', { skip: !hasToStringTag }, function (st) { + st.ok(hasOwn(obj, Symbol.toStringTag), 'has toStringTag property'); + + st.equal(obj[Symbol.toStringTag], sentinel, 'toStringTag property is as expected'); + + st.equal(String(obj), '[object Object]', 'toStringTag works'); + + /** @type {{ [Symbol.toStringTag]?: string }} */ + var tagged = {}; + tagged[Symbol.toStringTag] = 'already tagged'; + st.equal(String(tagged), '[object already tagged]', 'toStringTag works'); + + setToStringTag(tagged, 'new tag'); + st.equal(String(tagged), '[object already tagged]', 'toStringTag is unchanged'); + + setToStringTag(tagged, 'new tag', { force: true }); + st.equal(String(tagged), '[object new tag]', 'toStringTag is changed with force: true'); + + st.deepEqual( + Object.getOwnPropertyDescriptor(tagged, Symbol.toStringTag), + { + configurable: true, + enumerable: false, + value: 'new tag', + writable: false + }, + 'has expected property descriptor' + ); + + setToStringTag(tagged, 'new tag', { force: true, nonConfigurable: true }); + st.deepEqual( + Object.getOwnPropertyDescriptor(tagged, Symbol.toStringTag), + { + configurable: false, + enumerable: false, + value: 'new tag', + writable: false + }, + 'is nonconfigurable' + ); + + st.end(); + }); + + t.test('does not have Symbol.toStringTag', { skip: hasToStringTag }, function (st) { + var passed = true; + for (var key in obj) { // eslint-disable-line no-restricted-syntax + if (hasOwn(obj, key)) { + st.fail('object has own key ' + key); + passed = false; + } + } + if (passed) { + st.ok(true, 'object has no enumerable own keys'); + } + + st.end(); + }); + + t.end(); +}); diff --git a/node_modules/es-set-tostringtag/tsconfig.json b/node_modules/es-set-tostringtag/tsconfig.json new file mode 100644 index 0000000..d9a6668 --- /dev/null +++ b/node_modules/es-set-tostringtag/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/node_modules/follow-redirects/LICENSE b/node_modules/follow-redirects/LICENSE new file mode 100644 index 0000000..742cbad --- /dev/null +++ b/node_modules/follow-redirects/LICENSE @@ -0,0 +1,18 @@ +Copyright 2014–present Olivier Lalonde , James Talmage , Ruben Verborgh + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/follow-redirects/README.md b/node_modules/follow-redirects/README.md new file mode 100644 index 0000000..eb869a6 --- /dev/null +++ b/node_modules/follow-redirects/README.md @@ -0,0 +1,155 @@ +## Follow Redirects + +Drop-in replacement for Node's `http` and `https` modules that automatically follows redirects. + +[![npm version](https://img.shields.io/npm/v/follow-redirects.svg)](https://www.npmjs.com/package/follow-redirects) +[![Build Status](https://github.com/follow-redirects/follow-redirects/workflows/CI/badge.svg)](https://github.com/follow-redirects/follow-redirects/actions) +[![Coverage Status](https://coveralls.io/repos/follow-redirects/follow-redirects/badge.svg?branch=master)](https://coveralls.io/r/follow-redirects/follow-redirects?branch=master) +[![npm downloads](https://img.shields.io/npm/dm/follow-redirects.svg)](https://www.npmjs.com/package/follow-redirects) +[![Sponsor on GitHub](https://img.shields.io/static/v1?label=Sponsor&message=%F0%9F%92%96&logo=GitHub)](https://github.com/sponsors/RubenVerborgh) + +`follow-redirects` provides [request](https://nodejs.org/api/http.html#http_http_request_options_callback) and [get](https://nodejs.org/api/http.html#http_http_get_options_callback) + methods that behave identically to those found on the native [http](https://nodejs.org/api/http.html#http_http_request_options_callback) and [https](https://nodejs.org/api/https.html#https_https_request_options_callback) + modules, with the exception that they will seamlessly follow redirects. + +```javascript +const { http, https } = require('follow-redirects'); + +http.get('http://bit.ly/900913', response => { + response.on('data', chunk => { + console.log(chunk); + }); +}).on('error', err => { + console.error(err); +}); +``` + +You can inspect the final redirected URL through the `responseUrl` property on the `response`. +If no redirection happened, `responseUrl` is the original request URL. + +```javascript +const request = https.request({ + host: 'bitly.com', + path: '/UHfDGO', +}, response => { + console.log(response.responseUrl); + // 'http://duckduckgo.com/robots.txt' +}); +request.end(); +``` + +## Options +### Global options +Global options are set directly on the `follow-redirects` module: + +```javascript +const followRedirects = require('follow-redirects'); +followRedirects.maxRedirects = 10; +followRedirects.maxBodyLength = 20 * 1024 * 1024; // 20 MB +``` + +The following global options are supported: + +- `maxRedirects` (default: `21`) – sets the maximum number of allowed redirects; if exceeded, an error will be emitted. + +- `maxBodyLength` (default: 10MB) – sets the maximum size of the request body; if exceeded, an error will be emitted. + +### Per-request options +Per-request options are set by passing an `options` object: + +```javascript +const url = require('url'); +const { http, https } = require('follow-redirects'); + +const options = url.parse('http://bit.ly/900913'); +options.maxRedirects = 10; +options.beforeRedirect = (options, response, request) => { + // Use this to adjust the request options upon redirecting, + // to inspect the latest response headers, + // or to cancel the request by throwing an error + + // response.headers = the redirect response headers + // response.statusCode = the redirect response code (eg. 301, 307, etc.) + + // request.url = the requested URL that resulted in a redirect + // request.headers = the headers in the request that resulted in a redirect + // request.method = the method of the request that resulted in a redirect + if (options.hostname === "example.com") { + options.auth = "user:password"; + } +}; +http.request(options); +``` + +In addition to the [standard HTTP](https://nodejs.org/api/http.html#http_http_request_options_callback) and [HTTPS options](https://nodejs.org/api/https.html#https_https_request_options_callback), +the following per-request options are supported: +- `followRedirects` (default: `true`) – whether redirects should be followed. + +- `maxRedirects` (default: `21`) – sets the maximum number of allowed redirects; if exceeded, an error will be emitted. + +- `maxBodyLength` (default: 10MB) – sets the maximum size of the request body; if exceeded, an error will be emitted. + +- `beforeRedirect` (default: `undefined`) – optionally change the request `options` on redirects, or abort the request by throwing an error. + +- `agents` (default: `undefined`) – sets the `agent` option per protocol, since HTTP and HTTPS use different agents. Example value: `{ http: new http.Agent(), https: new https.Agent() }` + +- `trackRedirects` (default: `false`) – whether to store the redirected response details into the `redirects` array on the response object. + + +### Advanced usage +By default, `follow-redirects` will use the Node.js default implementations +of [`http`](https://nodejs.org/api/http.html) +and [`https`](https://nodejs.org/api/https.html). +To enable features such as caching and/or intermediate request tracking, +you might instead want to wrap `follow-redirects` around custom protocol implementations: + +```javascript +const { http, https } = require('follow-redirects').wrap({ + http: require('your-custom-http'), + https: require('your-custom-https'), +}); +``` + +Such custom protocols only need an implementation of the `request` method. + +## Browser Usage + +Due to the way the browser works, +the `http` and `https` browser equivalents perform redirects by default. + +By requiring `follow-redirects` this way: +```javascript +const http = require('follow-redirects/http'); +const https = require('follow-redirects/https'); +``` +you can easily tell webpack and friends to replace +`follow-redirect` by the built-in versions: + +```json +{ + "follow-redirects/http" : "http", + "follow-redirects/https" : "https" +} +``` + +## Contributing + +Pull Requests are always welcome. Please [file an issue](https://github.com/follow-redirects/follow-redirects/issues) + detailing your proposal before you invest your valuable time. Additional features and bug fixes should be accompanied + by tests. You can run the test suite locally with a simple `npm test` command. + +## Debug Logging + +`follow-redirects` uses the excellent [debug](https://www.npmjs.com/package/debug) for logging. To turn on logging + set the environment variable `DEBUG=follow-redirects` for debug output from just this module. When running the test + suite it is sometimes advantageous to set `DEBUG=*` to see output from the express server as well. + +## Authors + +- [Ruben Verborgh](https://ruben.verborgh.org/) +- [Olivier Lalonde](mailto:olalonde@gmail.com) +- [James Talmage](mailto:james@talmage.io) + +## License + +[MIT License](https://github.com/follow-redirects/follow-redirects/blob/master/LICENSE) diff --git a/node_modules/follow-redirects/debug.js b/node_modules/follow-redirects/debug.js new file mode 100644 index 0000000..decb77d --- /dev/null +++ b/node_modules/follow-redirects/debug.js @@ -0,0 +1,15 @@ +var debug; + +module.exports = function () { + if (!debug) { + try { + /* eslint global-require: off */ + debug = require("debug")("follow-redirects"); + } + catch (error) { /* */ } + if (typeof debug !== "function") { + debug = function () { /* */ }; + } + } + debug.apply(null, arguments); +}; diff --git a/node_modules/follow-redirects/http.js b/node_modules/follow-redirects/http.js new file mode 100644 index 0000000..695e356 --- /dev/null +++ b/node_modules/follow-redirects/http.js @@ -0,0 +1 @@ +module.exports = require("./").http; diff --git a/node_modules/follow-redirects/https.js b/node_modules/follow-redirects/https.js new file mode 100644 index 0000000..d21c921 --- /dev/null +++ b/node_modules/follow-redirects/https.js @@ -0,0 +1 @@ +module.exports = require("./").https; diff --git a/node_modules/follow-redirects/index.js b/node_modules/follow-redirects/index.js new file mode 100644 index 0000000..a30b32c --- /dev/null +++ b/node_modules/follow-redirects/index.js @@ -0,0 +1,686 @@ +var url = require("url"); +var URL = url.URL; +var http = require("http"); +var https = require("https"); +var Writable = require("stream").Writable; +var assert = require("assert"); +var debug = require("./debug"); + +// Preventive platform detection +// istanbul ignore next +(function detectUnsupportedEnvironment() { + var looksLikeNode = typeof process !== "undefined"; + var looksLikeBrowser = typeof window !== "undefined" && typeof document !== "undefined"; + var looksLikeV8 = isFunction(Error.captureStackTrace); + if (!looksLikeNode && (looksLikeBrowser || !looksLikeV8)) { + console.warn("The follow-redirects package should be excluded from browser builds."); + } +}()); + +// Whether to use the native URL object or the legacy url module +var useNativeURL = false; +try { + assert(new URL("")); +} +catch (error) { + useNativeURL = error.code === "ERR_INVALID_URL"; +} + +// URL fields to preserve in copy operations +var preservedUrlFields = [ + "auth", + "host", + "hostname", + "href", + "path", + "pathname", + "port", + "protocol", + "query", + "search", + "hash", +]; + +// Create handlers that pass events from native requests +var events = ["abort", "aborted", "connect", "error", "socket", "timeout"]; +var eventHandlers = Object.create(null); +events.forEach(function (event) { + eventHandlers[event] = function (arg1, arg2, arg3) { + this._redirectable.emit(event, arg1, arg2, arg3); + }; +}); + +// Error types with codes +var InvalidUrlError = createErrorType( + "ERR_INVALID_URL", + "Invalid URL", + TypeError +); +var RedirectionError = createErrorType( + "ERR_FR_REDIRECTION_FAILURE", + "Redirected request failed" +); +var TooManyRedirectsError = createErrorType( + "ERR_FR_TOO_MANY_REDIRECTS", + "Maximum number of redirects exceeded", + RedirectionError +); +var MaxBodyLengthExceededError = createErrorType( + "ERR_FR_MAX_BODY_LENGTH_EXCEEDED", + "Request body larger than maxBodyLength limit" +); +var WriteAfterEndError = createErrorType( + "ERR_STREAM_WRITE_AFTER_END", + "write after end" +); + +// istanbul ignore next +var destroy = Writable.prototype.destroy || noop; + +// An HTTP(S) request that can be redirected +function RedirectableRequest(options, responseCallback) { + // Initialize the request + Writable.call(this); + this._sanitizeOptions(options); + this._options = options; + this._ended = false; + this._ending = false; + this._redirectCount = 0; + this._redirects = []; + this._requestBodyLength = 0; + this._requestBodyBuffers = []; + + // Attach a callback if passed + if (responseCallback) { + this.on("response", responseCallback); + } + + // React to responses of native requests + var self = this; + this._onNativeResponse = function (response) { + try { + self._processResponse(response); + } + catch (cause) { + self.emit("error", cause instanceof RedirectionError ? + cause : new RedirectionError({ cause: cause })); + } + }; + + // Perform the first request + this._performRequest(); +} +RedirectableRequest.prototype = Object.create(Writable.prototype); + +RedirectableRequest.prototype.abort = function () { + destroyRequest(this._currentRequest); + this._currentRequest.abort(); + this.emit("abort"); +}; + +RedirectableRequest.prototype.destroy = function (error) { + destroyRequest(this._currentRequest, error); + destroy.call(this, error); + return this; +}; + +// Writes buffered data to the current native request +RedirectableRequest.prototype.write = function (data, encoding, callback) { + // Writing is not allowed if end has been called + if (this._ending) { + throw new WriteAfterEndError(); + } + + // Validate input and shift parameters if necessary + if (!isString(data) && !isBuffer(data)) { + throw new TypeError("data should be a string, Buffer or Uint8Array"); + } + if (isFunction(encoding)) { + callback = encoding; + encoding = null; + } + + // Ignore empty buffers, since writing them doesn't invoke the callback + // https://github.com/nodejs/node/issues/22066 + if (data.length === 0) { + if (callback) { + callback(); + } + return; + } + // Only write when we don't exceed the maximum body length + if (this._requestBodyLength + data.length <= this._options.maxBodyLength) { + this._requestBodyLength += data.length; + this._requestBodyBuffers.push({ data: data, encoding: encoding }); + this._currentRequest.write(data, encoding, callback); + } + // Error when we exceed the maximum body length + else { + this.emit("error", new MaxBodyLengthExceededError()); + this.abort(); + } +}; + +// Ends the current native request +RedirectableRequest.prototype.end = function (data, encoding, callback) { + // Shift parameters if necessary + if (isFunction(data)) { + callback = data; + data = encoding = null; + } + else if (isFunction(encoding)) { + callback = encoding; + encoding = null; + } + + // Write data if needed and end + if (!data) { + this._ended = this._ending = true; + this._currentRequest.end(null, null, callback); + } + else { + var self = this; + var currentRequest = this._currentRequest; + this.write(data, encoding, function () { + self._ended = true; + currentRequest.end(null, null, callback); + }); + this._ending = true; + } +}; + +// Sets a header value on the current native request +RedirectableRequest.prototype.setHeader = function (name, value) { + this._options.headers[name] = value; + this._currentRequest.setHeader(name, value); +}; + +// Clears a header value on the current native request +RedirectableRequest.prototype.removeHeader = function (name) { + delete this._options.headers[name]; + this._currentRequest.removeHeader(name); +}; + +// Global timeout for all underlying requests +RedirectableRequest.prototype.setTimeout = function (msecs, callback) { + var self = this; + + // Destroys the socket on timeout + function destroyOnTimeout(socket) { + socket.setTimeout(msecs); + socket.removeListener("timeout", socket.destroy); + socket.addListener("timeout", socket.destroy); + } + + // Sets up a timer to trigger a timeout event + function startTimer(socket) { + if (self._timeout) { + clearTimeout(self._timeout); + } + self._timeout = setTimeout(function () { + self.emit("timeout"); + clearTimer(); + }, msecs); + destroyOnTimeout(socket); + } + + // Stops a timeout from triggering + function clearTimer() { + // Clear the timeout + if (self._timeout) { + clearTimeout(self._timeout); + self._timeout = null; + } + + // Clean up all attached listeners + self.removeListener("abort", clearTimer); + self.removeListener("error", clearTimer); + self.removeListener("response", clearTimer); + self.removeListener("close", clearTimer); + if (callback) { + self.removeListener("timeout", callback); + } + if (!self.socket) { + self._currentRequest.removeListener("socket", startTimer); + } + } + + // Attach callback if passed + if (callback) { + this.on("timeout", callback); + } + + // Start the timer if or when the socket is opened + if (this.socket) { + startTimer(this.socket); + } + else { + this._currentRequest.once("socket", startTimer); + } + + // Clean up on events + this.on("socket", destroyOnTimeout); + this.on("abort", clearTimer); + this.on("error", clearTimer); + this.on("response", clearTimer); + this.on("close", clearTimer); + + return this; +}; + +// Proxy all other public ClientRequest methods +[ + "flushHeaders", "getHeader", + "setNoDelay", "setSocketKeepAlive", +].forEach(function (method) { + RedirectableRequest.prototype[method] = function (a, b) { + return this._currentRequest[method](a, b); + }; +}); + +// Proxy all public ClientRequest properties +["aborted", "connection", "socket"].forEach(function (property) { + Object.defineProperty(RedirectableRequest.prototype, property, { + get: function () { return this._currentRequest[property]; }, + }); +}); + +RedirectableRequest.prototype._sanitizeOptions = function (options) { + // Ensure headers are always present + if (!options.headers) { + options.headers = {}; + } + + // Since http.request treats host as an alias of hostname, + // but the url module interprets host as hostname plus port, + // eliminate the host property to avoid confusion. + if (options.host) { + // Use hostname if set, because it has precedence + if (!options.hostname) { + options.hostname = options.host; + } + delete options.host; + } + + // Complete the URL object when necessary + if (!options.pathname && options.path) { + var searchPos = options.path.indexOf("?"); + if (searchPos < 0) { + options.pathname = options.path; + } + else { + options.pathname = options.path.substring(0, searchPos); + options.search = options.path.substring(searchPos); + } + } +}; + + +// Executes the next native request (initial or redirect) +RedirectableRequest.prototype._performRequest = function () { + // Load the native protocol + var protocol = this._options.protocol; + var nativeProtocol = this._options.nativeProtocols[protocol]; + if (!nativeProtocol) { + throw new TypeError("Unsupported protocol " + protocol); + } + + // If specified, use the agent corresponding to the protocol + // (HTTP and HTTPS use different types of agents) + if (this._options.agents) { + var scheme = protocol.slice(0, -1); + this._options.agent = this._options.agents[scheme]; + } + + // Create the native request and set up its event handlers + var request = this._currentRequest = + nativeProtocol.request(this._options, this._onNativeResponse); + request._redirectable = this; + for (var event of events) { + request.on(event, eventHandlers[event]); + } + + // RFC7230§5.3.1: When making a request directly to an origin server, […] + // a client MUST send only the absolute path […] as the request-target. + this._currentUrl = /^\//.test(this._options.path) ? + url.format(this._options) : + // When making a request to a proxy, […] + // a client MUST send the target URI in absolute-form […]. + this._options.path; + + // End a redirected request + // (The first request must be ended explicitly with RedirectableRequest#end) + if (this._isRedirect) { + // Write the request entity and end + var i = 0; + var self = this; + var buffers = this._requestBodyBuffers; + (function writeNext(error) { + // Only write if this request has not been redirected yet + // istanbul ignore else + if (request === self._currentRequest) { + // Report any write errors + // istanbul ignore if + if (error) { + self.emit("error", error); + } + // Write the next buffer if there are still left + else if (i < buffers.length) { + var buffer = buffers[i++]; + // istanbul ignore else + if (!request.finished) { + request.write(buffer.data, buffer.encoding, writeNext); + } + } + // End the request if `end` has been called on us + else if (self._ended) { + request.end(); + } + } + }()); + } +}; + +// Processes a response from the current native request +RedirectableRequest.prototype._processResponse = function (response) { + // Store the redirected response + var statusCode = response.statusCode; + if (this._options.trackRedirects) { + this._redirects.push({ + url: this._currentUrl, + headers: response.headers, + statusCode: statusCode, + }); + } + + // RFC7231§6.4: The 3xx (Redirection) class of status code indicates + // that further action needs to be taken by the user agent in order to + // fulfill the request. If a Location header field is provided, + // the user agent MAY automatically redirect its request to the URI + // referenced by the Location field value, + // even if the specific status code is not understood. + + // If the response is not a redirect; return it as-is + var location = response.headers.location; + if (!location || this._options.followRedirects === false || + statusCode < 300 || statusCode >= 400) { + response.responseUrl = this._currentUrl; + response.redirects = this._redirects; + this.emit("response", response); + + // Clean up + this._requestBodyBuffers = []; + return; + } + + // The response is a redirect, so abort the current request + destroyRequest(this._currentRequest); + // Discard the remainder of the response to avoid waiting for data + response.destroy(); + + // RFC7231§6.4: A client SHOULD detect and intervene + // in cyclical redirections (i.e., "infinite" redirection loops). + if (++this._redirectCount > this._options.maxRedirects) { + throw new TooManyRedirectsError(); + } + + // Store the request headers if applicable + var requestHeaders; + var beforeRedirect = this._options.beforeRedirect; + if (beforeRedirect) { + requestHeaders = Object.assign({ + // The Host header was set by nativeProtocol.request + Host: response.req.getHeader("host"), + }, this._options.headers); + } + + // RFC7231§6.4: Automatic redirection needs to done with + // care for methods not known to be safe, […] + // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change + // the request method from POST to GET for the subsequent request. + var method = this._options.method; + if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" || + // RFC7231§6.4.4: The 303 (See Other) status code indicates that + // the server is redirecting the user agent to a different resource […] + // A user agent can perform a retrieval request targeting that URI + // (a GET or HEAD request if using HTTP) […] + (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) { + this._options.method = "GET"; + // Drop a possible entity and headers related to it + this._requestBodyBuffers = []; + removeMatchingHeaders(/^content-/i, this._options.headers); + } + + // Drop the Host header, as the redirect might lead to a different host + var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers); + + // If the redirect is relative, carry over the host of the last request + var currentUrlParts = parseUrl(this._currentUrl); + var currentHost = currentHostHeader || currentUrlParts.host; + var currentUrl = /^\w+:/.test(location) ? this._currentUrl : + url.format(Object.assign(currentUrlParts, { host: currentHost })); + + // Create the redirected request + var redirectUrl = resolveUrl(location, currentUrl); + debug("redirecting to", redirectUrl.href); + this._isRedirect = true; + spreadUrlObject(redirectUrl, this._options); + + // Drop confidential headers when redirecting to a less secure protocol + // or to a different domain that is not a superdomain + if (redirectUrl.protocol !== currentUrlParts.protocol && + redirectUrl.protocol !== "https:" || + redirectUrl.host !== currentHost && + !isSubdomain(redirectUrl.host, currentHost)) { + removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers); + } + + // Evaluate the beforeRedirect callback + if (isFunction(beforeRedirect)) { + var responseDetails = { + headers: response.headers, + statusCode: statusCode, + }; + var requestDetails = { + url: currentUrl, + method: method, + headers: requestHeaders, + }; + beforeRedirect(this._options, responseDetails, requestDetails); + this._sanitizeOptions(this._options); + } + + // Perform the redirected request + this._performRequest(); +}; + +// Wraps the key/value object of protocols with redirect functionality +function wrap(protocols) { + // Default settings + var exports = { + maxRedirects: 21, + maxBodyLength: 10 * 1024 * 1024, + }; + + // Wrap each protocol + var nativeProtocols = {}; + Object.keys(protocols).forEach(function (scheme) { + var protocol = scheme + ":"; + var nativeProtocol = nativeProtocols[protocol] = protocols[scheme]; + var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol); + + // Executes a request, following redirects + function request(input, options, callback) { + // Parse parameters, ensuring that input is an object + if (isURL(input)) { + input = spreadUrlObject(input); + } + else if (isString(input)) { + input = spreadUrlObject(parseUrl(input)); + } + else { + callback = options; + options = validateUrl(input); + input = { protocol: protocol }; + } + if (isFunction(options)) { + callback = options; + options = null; + } + + // Set defaults + options = Object.assign({ + maxRedirects: exports.maxRedirects, + maxBodyLength: exports.maxBodyLength, + }, input, options); + options.nativeProtocols = nativeProtocols; + if (!isString(options.host) && !isString(options.hostname)) { + options.hostname = "::1"; + } + + assert.equal(options.protocol, protocol, "protocol mismatch"); + debug("options", options); + return new RedirectableRequest(options, callback); + } + + // Executes a GET request, following redirects + function get(input, options, callback) { + var wrappedRequest = wrappedProtocol.request(input, options, callback); + wrappedRequest.end(); + return wrappedRequest; + } + + // Expose the properties on the wrapped protocol + Object.defineProperties(wrappedProtocol, { + request: { value: request, configurable: true, enumerable: true, writable: true }, + get: { value: get, configurable: true, enumerable: true, writable: true }, + }); + }); + return exports; +} + +function noop() { /* empty */ } + +function parseUrl(input) { + var parsed; + // istanbul ignore else + if (useNativeURL) { + parsed = new URL(input); + } + else { + // Ensure the URL is valid and absolute + parsed = validateUrl(url.parse(input)); + if (!isString(parsed.protocol)) { + throw new InvalidUrlError({ input }); + } + } + return parsed; +} + +function resolveUrl(relative, base) { + // istanbul ignore next + return useNativeURL ? new URL(relative, base) : parseUrl(url.resolve(base, relative)); +} + +function validateUrl(input) { + if (/^\[/.test(input.hostname) && !/^\[[:0-9a-f]+\]$/i.test(input.hostname)) { + throw new InvalidUrlError({ input: input.href || input }); + } + if (/^\[/.test(input.host) && !/^\[[:0-9a-f]+\](:\d+)?$/i.test(input.host)) { + throw new InvalidUrlError({ input: input.href || input }); + } + return input; +} + +function spreadUrlObject(urlObject, target) { + var spread = target || {}; + for (var key of preservedUrlFields) { + spread[key] = urlObject[key]; + } + + // Fix IPv6 hostname + if (spread.hostname.startsWith("[")) { + spread.hostname = spread.hostname.slice(1, -1); + } + // Ensure port is a number + if (spread.port !== "") { + spread.port = Number(spread.port); + } + // Concatenate path + spread.path = spread.search ? spread.pathname + spread.search : spread.pathname; + + return spread; +} + +function removeMatchingHeaders(regex, headers) { + var lastValue; + for (var header in headers) { + if (regex.test(header)) { + lastValue = headers[header]; + delete headers[header]; + } + } + return (lastValue === null || typeof lastValue === "undefined") ? + undefined : String(lastValue).trim(); +} + +function createErrorType(code, message, baseClass) { + // Create constructor + function CustomError(properties) { + // istanbul ignore else + if (isFunction(Error.captureStackTrace)) { + Error.captureStackTrace(this, this.constructor); + } + Object.assign(this, properties || {}); + this.code = code; + this.message = this.cause ? message + ": " + this.cause.message : message; + } + + // Attach constructor and set default properties + CustomError.prototype = new (baseClass || Error)(); + Object.defineProperties(CustomError.prototype, { + constructor: { + value: CustomError, + enumerable: false, + }, + name: { + value: "Error [" + code + "]", + enumerable: false, + }, + }); + return CustomError; +} + +function destroyRequest(request, error) { + for (var event of events) { + request.removeListener(event, eventHandlers[event]); + } + request.on("error", noop); + request.destroy(error); +} + +function isSubdomain(subdomain, domain) { + assert(isString(subdomain) && isString(domain)); + var dot = subdomain.length - domain.length - 1; + return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain); +} + +function isString(value) { + return typeof value === "string" || value instanceof String; +} + +function isFunction(value) { + return typeof value === "function"; +} + +function isBuffer(value) { + return typeof value === "object" && ("length" in value); +} + +function isURL(value) { + return URL && value instanceof URL; +} + +// Exports +module.exports = wrap({ http: http, https: https }); +module.exports.wrap = wrap; diff --git a/node_modules/follow-redirects/package.json b/node_modules/follow-redirects/package.json new file mode 100644 index 0000000..a2689fa --- /dev/null +++ b/node_modules/follow-redirects/package.json @@ -0,0 +1,58 @@ +{ + "name": "follow-redirects", + "version": "1.15.11", + "description": "HTTP and HTTPS modules that follow redirects.", + "license": "MIT", + "main": "index.js", + "files": [ + "*.js" + ], + "engines": { + "node": ">=4.0" + }, + "scripts": { + "lint": "eslint *.js test", + "test": "nyc mocha" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/follow-redirects/follow-redirects.git" + }, + "homepage": "https://github.com/follow-redirects/follow-redirects", + "bugs": { + "url": "https://github.com/follow-redirects/follow-redirects/issues" + }, + "keywords": [ + "http", + "https", + "url", + "redirect", + "client", + "location", + "utility" + ], + "author": "Ruben Verborgh (https://ruben.verborgh.org/)", + "contributors": [ + "Olivier Lalonde (http://www.syskall.com)", + "James Talmage " + ], + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "peerDependenciesMeta": { + "debug": { + "optional": true + } + }, + "devDependencies": { + "concat-stream": "^2.0.0", + "eslint": "^5.16.0", + "express": "^4.16.4", + "lolex": "^3.1.0", + "mocha": "^6.0.2", + "nyc": "^14.1.1" + } +} diff --git a/node_modules/form-data/CHANGELOG.md b/node_modules/form-data/CHANGELOG.md new file mode 100644 index 0000000..cd3105e --- /dev/null +++ b/node_modules/form-data/CHANGELOG.md @@ -0,0 +1,659 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v4.0.5](https://github.com/form-data/form-data/compare/v4.0.4...v4.0.5) - 2025-11-17 + +### Commits + +- [Tests] Switch to newer v8 prediction library; enable node 24 testing [`16e0076`](https://github.com/form-data/form-data/commit/16e00765342106876f98a1c9703314006c9e937a) +- [Dev Deps] update `@ljharb/eslint-config`, `eslint` [`5822467`](https://github.com/form-data/form-data/commit/5822467f0ec21f6ad613c1c90856375e498793c7) +- [Fix] set Symbol.toStringTag in the proper place [`76d0dee`](https://github.com/form-data/form-data/commit/76d0dee43933b5e167f7f09e5d9cbbd1cf911aa7) + +## [v4.0.4](https://github.com/form-data/form-data/compare/v4.0.3...v4.0.4) - 2025-07-16 + +### Commits + +- [meta] add `auto-changelog` [`811f682`](https://github.com/form-data/form-data/commit/811f68282fab0315209d0e2d1c44b6c32ea0d479) +- [Tests] handle predict-v8-randomness failures in node < 17 and node > 23 [`1d11a76`](https://github.com/form-data/form-data/commit/1d11a76434d101f22fdb26b8aef8615f28b98402) +- [Fix] Switch to using `crypto` random for boundary values [`3d17230`](https://github.com/form-data/form-data/commit/3d1723080e6577a66f17f163ecd345a21d8d0fd0) +- [Tests] fix linting errors [`5e34080`](https://github.com/form-data/form-data/commit/5e340800b5f8914213e4e0378c084aae71cfd73a) +- [meta] actually ensure the readme backup isn’t published [`316c82b`](https://github.com/form-data/form-data/commit/316c82ba93fd4985af757b771b9a1f26d3b709ef) +- [Dev Deps] update `@ljharb/eslint-config` [`58c25d7`](https://github.com/form-data/form-data/commit/58c25d76406a5b0dfdf54045cf252563f2bbda8d) +- [meta] fix readme capitalization [`2300ca1`](https://github.com/form-data/form-data/commit/2300ca19595b0ee96431e868fe2a40db79e41c61) + +## [v4.0.3](https://github.com/form-data/form-data/compare/v4.0.2...v4.0.3) - 2025-06-05 + +### Fixed + +- [Fix] `append`: avoid a crash on nullish values [`#577`](https://github.com/form-data/form-data/issues/577) + +### Commits + +- [eslint] use a shared config [`426ba9a`](https://github.com/form-data/form-data/commit/426ba9ac440f95d1998dac9a5cd8d738043b048f) +- [eslint] fix some spacing issues [`2094191`](https://github.com/form-data/form-data/commit/20941917f0e9487e68c564ebc3157e23609e2939) +- [Refactor] use `hasown` [`81ab41b`](https://github.com/form-data/form-data/commit/81ab41b46fdf34f5d89d7ff30b513b0925febfaa) +- [Fix] validate boundary type in `setBoundary()` method [`8d8e469`](https://github.com/form-data/form-data/commit/8d8e4693093519f7f18e3c597d1e8df8c493de9e) +- [Tests] add tests to check the behavior of `getBoundary` with non-strings [`837b8a1`](https://github.com/form-data/form-data/commit/837b8a1f7562bfb8bda74f3fc538adb7a5858995) +- [Dev Deps] remove unused deps [`870e4e6`](https://github.com/form-data/form-data/commit/870e4e665935e701bf983a051244ab928e62d58e) +- [meta] remove local commit hooks [`e6e83cc`](https://github.com/form-data/form-data/commit/e6e83ccb545a5619ed6cd04f31d5c2f655eb633e) +- [Dev Deps] update `eslint` [`4066fd6`](https://github.com/form-data/form-data/commit/4066fd6f65992b62fa324a6474a9292a4f88c916) +- [meta] fix scripts to use prepublishOnly [`c4bbb13`](https://github.com/form-data/form-data/commit/c4bbb13c0ef669916657bc129341301b1d331d75) + +## [v4.0.2](https://github.com/form-data/form-data/compare/v4.0.1...v4.0.2) - 2025-02-14 + +### Merged + +- [Fix] set `Symbol.toStringTag` when available [`#573`](https://github.com/form-data/form-data/pull/573) +- [Fix] set `Symbol.toStringTag` when available [`#573`](https://github.com/form-data/form-data/pull/573) +- fix (npmignore): ignore temporary build files [`#532`](https://github.com/form-data/form-data/pull/532) +- fix (npmignore): ignore temporary build files [`#532`](https://github.com/form-data/form-data/pull/532) + +### Fixed + +- [Fix] set `Symbol.toStringTag` when available (#573) [`#396`](https://github.com/form-data/form-data/issues/396) +- [Fix] set `Symbol.toStringTag` when available (#573) [`#396`](https://github.com/form-data/form-data/issues/396) +- [Fix] set `Symbol.toStringTag` when available [`#396`](https://github.com/form-data/form-data/issues/396) + +### Commits + +- Merge tags v2.5.3 and v3.0.3 [`92613b9`](https://github.com/form-data/form-data/commit/92613b9208556eb4ebc482fdf599fae111626fb6) +- [Tests] migrate from travis to GHA [`806eda7`](https://github.com/form-data/form-data/commit/806eda77740e6e3c67c7815afb216f2e1f187ba5) +- [Tests] migrate from travis to GHA [`8fdb3bc`](https://github.com/form-data/form-data/commit/8fdb3bc6b5d001f8909a9fca391d1d1d97ef1d79) +- [Refactor] use `Object.prototype.hasOwnProperty.call` [`7fecefe`](https://github.com/form-data/form-data/commit/7fecefe4ba8f775634aff86a698776ad95ecffb5) +- [Refactor] use `Object.prototype.hasOwnProperty.call` [`6e682d4`](https://github.com/form-data/form-data/commit/6e682d4bd41de7e80de41e3c4ee10f23fcc3dd00) +- [Refactor] use `Object.prototype.hasOwnProperty.call` [`df3c1e6`](https://github.com/form-data/form-data/commit/df3c1e6f0937f47a782dc4573756a54987f31dde) +- [Dev Deps] update `@types/node`, `browserify`, `coveralls`, `cross-spawn`, `eslint`, `formidable`, `in-publish`, `pkgfiles`, `pre-commit`, `puppeteer`, `request`, `tape`, `typescript` [`8261fcb`](https://github.com/form-data/form-data/commit/8261fcb8bf5944d30ae3bd04b91b71d6a9932ef4) +- [Dev Deps] update `@types/node`, `browserify`, `coveralls`, `cross-spawn`, `eslint`, `formidable`, `in-publish`, `pkgfiles`, `pre-commit`, `puppeteer`, `request`, `tape`, `typescript` [`fb66cb7`](https://github.com/form-data/form-data/commit/fb66cb740e29fb170eee947d4be6fdf82d6659af) +- [Dev Deps] update `@types/node`, `browserify`, `coveralls`, `eslint`, `formidable`, `in-publish`, `phantomjs-prebuilt`, `pkgfiles`, `pre-commit`, `request`, `tape`, `typescript` [`819f6b7`](https://github.com/form-data/form-data/commit/819f6b7a543306a891fca37c3a06d0ff4a734422) +- [eslint] clean up ignores [`3217b3d`](https://github.com/form-data/form-data/commit/3217b3ded8e382e51171d5c74c6038a21cc54440) +- [eslint] clean up ignores [`3a9d480`](https://github.com/form-data/form-data/commit/3a9d480232dbcbc07260ad84c3da4975d9a3ae9e) +- [Fix] `Buffer.from` and `Buffer.alloc` require node 4+ [`c499f76`](https://github.com/form-data/form-data/commit/c499f76f1faac1ddbf210c45217038e4c1e02337) +- Only apps should have lockfiles [`b82f590`](https://github.com/form-data/form-data/commit/b82f59093cdbadb4b7ec0922d33ae7ab048b82ff) +- Only apps should have lockfiles [`b170ee2`](https://github.com/form-data/form-data/commit/b170ee2b22b4c695c363b811c0c553d2fb1bbd79) +- [Deps] update `combined-stream`, `mime-types` [`6b1ca1d`](https://github.com/form-data/form-data/commit/6b1ca1dc7362a1b1c3a99a885516cca4b7eb817f) +- [Dev Deps] pin `request` which via `tough-cookie` ^2.4 depends on `psl` [`e5df7f2`](https://github.com/form-data/form-data/commit/e5df7f24383342264bd73dee3274818a40d04065) +- [Deps] update `mime-types` [`5a5bafe`](https://github.com/form-data/form-data/commit/5a5bafee894fead10da49e1fa2b084e17f2e1034) +- Bumped version 2.5.3 [`9457283`](https://github.com/form-data/form-data/commit/9457283e1dce6122adc908fdd7442cfc54cabe7a) +- [Dev Deps] pin `request` which via `tough-cookie` ^2.4 depends on `psl` [`9dbe192`](https://github.com/form-data/form-data/commit/9dbe192be3db215eac4d9c0b980470a5c2c030c6) +- Merge tags v2.5.2 and v3.0.2 [`d53265d`](https://github.com/form-data/form-data/commit/d53265d86c5153f535ec68eb107548b1b2883576) +- Bumped version 2.5.2 [`7020dd4`](https://github.com/form-data/form-data/commit/7020dd4c1260370abc40e86e3dfe49c5d576fbda) +- [Dev Deps] downgrade `cross-spawn` [`3fc1a9b`](https://github.com/form-data/form-data/commit/3fc1a9b62ddf1fe77a2bd6bd3476e4c0a9e01a88) +- fix: move util.isArray to Array.isArray (#564) [`edb555a`](https://github.com/form-data/form-data/commit/edb555a811f6f7e4668db4831551cf41c1de1cac) +- fix: move util.isArray to Array.isArray (#564) [`10418d1`](https://github.com/form-data/form-data/commit/10418d1fe4b0d65fe020eafe3911feb5ad5e2bd6) + +## [v4.0.1](https://github.com/form-data/form-data/compare/v4.0.0...v4.0.1) - 2024-10-10 + +### Commits + +- [Tests] migrate from travis to GHA [`757b4e3`](https://github.com/form-data/form-data/commit/757b4e32e95726aec9bdcc771fb5a3b564d88034) +- [eslint] clean up ignores [`e8f0d80`](https://github.com/form-data/form-data/commit/e8f0d80cd7cd424d1488532621ec40a33218b30b) +- fix (npmignore): ignore temporary build files [`335ad19`](https://github.com/form-data/form-data/commit/335ad19c6e17dc2d7298ffe0e9b37ba63600e94b) +- fix: move util.isArray to Array.isArray [`440d3be`](https://github.com/form-data/form-data/commit/440d3bed752ac2f9213b4c2229dbccefe140e5fa) + +## [v4.0.0](https://github.com/form-data/form-data/compare/v3.0.4...v4.0.0) - 2021-02-15 + +### Merged + +- Handle custom stream [`#382`](https://github.com/form-data/form-data/pull/382) + +### Commits + +- Fix typo [`e705c0a`](https://github.com/form-data/form-data/commit/e705c0a1fdaf90d21501f56460b93e43a18bd435) +- Update README for custom stream behavior [`6dd8624`](https://github.com/form-data/form-data/commit/6dd8624b2999e32768d62752c9aae5845a803b0d) + +## [v3.0.4](https://github.com/form-data/form-data/compare/v3.0.3...v3.0.4) - 2025-07-16 + +### Fixed + +- [Fix] `append`: avoid a crash on nullish values [`#577`](https://github.com/form-data/form-data/issues/577) + +### Commits + +- [eslint] update linting config [`f5e7eb0`](https://github.com/form-data/form-data/commit/f5e7eb024bc3fc7e2074ff80f143a4f4cbc1dbda) +- [meta] add `auto-changelog` [`d2eb290`](https://github.com/form-data/form-data/commit/d2eb290a3e47ed5bcad7020d027daa15b3cf5ef5) +- [Tests] handle predict-v8-randomness failures in node < 17 and node > 23 [`e8c574c`](https://github.com/form-data/form-data/commit/e8c574cb07ff3a0de2ecc0912d783ef22e190c1f) +- [Fix] Switch to using `crypto` random for boundary values [`c6ced61`](https://github.com/form-data/form-data/commit/c6ced61d4fae8f617ee2fd692133ed87baa5d0fd) +- [Refactor] use `hasown` [`1a78b5d`](https://github.com/form-data/form-data/commit/1a78b5dd05e508d67e97764d812ac7c6d92ea88d) +- [Fix] validate boundary type in `setBoundary()` method [`70bbaa0`](https://github.com/form-data/form-data/commit/70bbaa0b395ca0fb975c309de8d7286979254cc4) +- [Tests] add tests to check the behavior of `getBoundary` with non-strings [`b22a64e`](https://github.com/form-data/form-data/commit/b22a64ef94ba4f3f6ff7d1ac72a54cca128567df) +- [meta] actually ensure the readme backup isn’t published [`0150851`](https://github.com/form-data/form-data/commit/01508513ffb26fd662ae7027834b325af8efb9ea) +- [meta] remove local commit hooks [`fc42bb9`](https://github.com/form-data/form-data/commit/fc42bb9315b641bfa6dae51cb4e188a86bb04769) +- [Dev Deps] remove unused deps [`a14d09e`](https://github.com/form-data/form-data/commit/a14d09ea8ed7e0a2e1705269ce6fb54bb7ee6bdb) +- [meta] fix scripts to use prepublishOnly [`11d9f73`](https://github.com/form-data/form-data/commit/11d9f7338f18a59b431832a3562b49baece0a432) +- [meta] fix readme capitalization [`fc38b48`](https://github.com/form-data/form-data/commit/fc38b4834a117a1856f3d877eb2f5b7496a24932) + +## [v3.0.3](https://github.com/form-data/form-data/compare/v3.0.2...v3.0.3) - 2025-02-14 + +### Merged + +- [Fix] set `Symbol.toStringTag` when available [`#573`](https://github.com/form-data/form-data/pull/573) + +### Fixed + +- [Fix] set `Symbol.toStringTag` when available (#573) [`#396`](https://github.com/form-data/form-data/issues/396) + +### Commits + +- [Refactor] use `Object.prototype.hasOwnProperty.call` [`7fecefe`](https://github.com/form-data/form-data/commit/7fecefe4ba8f775634aff86a698776ad95ecffb5) +- [Dev Deps] update `@types/node`, `browserify`, `coveralls`, `cross-spawn`, `eslint`, `formidable`, `in-publish`, `pkgfiles`, `pre-commit`, `puppeteer`, `request`, `tape`, `typescript` [`8261fcb`](https://github.com/form-data/form-data/commit/8261fcb8bf5944d30ae3bd04b91b71d6a9932ef4) +- Only apps should have lockfiles [`b82f590`](https://github.com/form-data/form-data/commit/b82f59093cdbadb4b7ec0922d33ae7ab048b82ff) +- [Dev Deps] pin `request` which via `tough-cookie` ^2.4 depends on `psl` [`e5df7f2`](https://github.com/form-data/form-data/commit/e5df7f24383342264bd73dee3274818a40d04065) +- [Deps] update `mime-types` [`5a5bafe`](https://github.com/form-data/form-data/commit/5a5bafee894fead10da49e1fa2b084e17f2e1034) + +## [v3.0.2](https://github.com/form-data/form-data/compare/v3.0.1...v3.0.2) - 2024-10-10 + +### Merged + +- fix (npmignore): ignore temporary build files [`#532`](https://github.com/form-data/form-data/pull/532) + +### Commits + +- [Tests] migrate from travis to GHA [`8fdb3bc`](https://github.com/form-data/form-data/commit/8fdb3bc6b5d001f8909a9fca391d1d1d97ef1d79) +- [eslint] clean up ignores [`3217b3d`](https://github.com/form-data/form-data/commit/3217b3ded8e382e51171d5c74c6038a21cc54440) +- fix: move util.isArray to Array.isArray (#564) [`edb555a`](https://github.com/form-data/form-data/commit/edb555a811f6f7e4668db4831551cf41c1de1cac) + +## [v3.0.1](https://github.com/form-data/form-data/compare/v3.0.0...v3.0.1) - 2021-02-15 + +### Merged + +- Fix typo: ads -> adds [`#451`](https://github.com/form-data/form-data/pull/451) + +### Commits + +- feat: add setBoundary method [`55d90ce`](https://github.com/form-data/form-data/commit/55d90ce4a4c22b0ea0647991d85cb946dfb7395b) + +## [v3.0.0](https://github.com/form-data/form-data/compare/v2.5.5...v3.0.0) - 2019-11-05 + +### Merged + +- Update Readme.md [`#449`](https://github.com/form-data/form-data/pull/449) +- Update package.json [`#448`](https://github.com/form-data/form-data/pull/448) +- fix memory leak [`#447`](https://github.com/form-data/form-data/pull/447) +- form-data: Replaced PhantomJS Dependency [`#442`](https://github.com/form-data/form-data/pull/442) +- Fix constructor options in Typescript definitions [`#446`](https://github.com/form-data/form-data/pull/446) +- Fix the getHeaders method signatures [`#434`](https://github.com/form-data/form-data/pull/434) +- Update combined-stream (fixes #422) [`#424`](https://github.com/form-data/form-data/pull/424) + +### Fixed + +- Merge pull request #424 from botgram/update-combined-stream [`#422`](https://github.com/form-data/form-data/issues/422) +- Update combined-stream (fixes #422) [`#422`](https://github.com/form-data/form-data/issues/422) + +### Commits + +- Add readable stream options to constructor type [`80c8f74`](https://github.com/form-data/form-data/commit/80c8f746bcf4c0418ae35fbedde12fb8c01e2748) +- Fixed: getHeaders method signatures [`f4ca7f8`](https://github.com/form-data/form-data/commit/f4ca7f8e31f7e07df22c1aeb8e0a32a7055a64ca) +- Pass options to constructor if not used with new [`4bde68e`](https://github.com/form-data/form-data/commit/4bde68e12de1ba90fefad2e7e643f6375b902763) +- Make userHeaders optional [`2b4e478`](https://github.com/form-data/form-data/commit/2b4e4787031490942f2d1ee55c56b85a250875a7) + +## [v2.5.5](https://github.com/form-data/form-data/compare/v2.5.4...v2.5.5) - 2025-07-18 + +### Commits + +- [meta] actually ensure the readme backup isn’t published [`10626c0`](https://github.com/form-data/form-data/commit/10626c0a9b78c7d3fcaa51772265015ee0afc25c) +- [Fix] use proper dependency [`026abe5`](https://github.com/form-data/form-data/commit/026abe5c5c0489d8a2ccb59d5cfd14fb63078377) + +## [v2.5.4](https://github.com/form-data/form-data/compare/v2.5.3...v2.5.4) - 2025-07-17 + +### Fixed + +- [Fix] `append`: avoid a crash on nullish values [`#577`](https://github.com/form-data/form-data/issues/577) + +### Commits + +- [eslint] update linting config [`8bf2492`](https://github.com/form-data/form-data/commit/8bf2492e0555d41ff58fa04c91593af998f87a3c) +- [meta] add `auto-changelog` [`b5101ad`](https://github.com/form-data/form-data/commit/b5101ad3d5f73cfd0143aae3735b92826fd731ea) +- [Tests] handle predict-v8-randomness failures in node < 17 and node > 23 [`0e93122`](https://github.com/form-data/form-data/commit/0e93122358414942393d9c2dc434ae69e58be7c8) +- [Fix] Switch to using `crypto` random for boundary values [`b88316c`](https://github.com/form-data/form-data/commit/b88316c94bb004323669cd3639dc8bb8262539eb) +- [Fix] validate boundary type in `setBoundary()` method [`131ae5e`](https://github.com/form-data/form-data/commit/131ae5efa30b9c608add4faef3befb38aa2e1bf1) +- [Tests] Switch to newer v8 prediction library; enable node 24 testing [`c97cfbe`](https://github.com/form-data/form-data/commit/c97cfbed9eb6d2d4b5d53090f69ded4bf9fd8a21) +- [Refactor] use `hasown` [`97ac9c2`](https://github.com/form-data/form-data/commit/97ac9c208be0b83faeee04bb3faef1ed3474ee4c) +- [meta] remove local commit hooks [`be99d4e`](https://github.com/form-data/form-data/commit/be99d4eea5ce47139c23c1f0914596194019d7fb) +- [Dev Deps] remove unused deps [`ddbc89b`](https://github.com/form-data/form-data/commit/ddbc89b6d6d64f730bcb27cb33b7544068466a05) +- [meta] fix scripts to use prepublishOnly [`e351a97`](https://github.com/form-data/form-data/commit/e351a97e9f6c57c74ffd01625e83b09de805d08a) +- [Dev Deps] remove unused script [`8f23366`](https://github.com/form-data/form-data/commit/8f233664842da5bd605ce85541defc713d1d1e0a) +- [Dev Deps] add missing peer dep [`02ff026`](https://github.com/form-data/form-data/commit/02ff026fda71f9943cfdd5754727c628adb8d135) +- [meta] fix readme capitalization [`2fd5f61`](https://github.com/form-data/form-data/commit/2fd5f61ebfb526cd015fb8e7b8b8c1add4a38872) + +## [v2.5.3](https://github.com/form-data/form-data/compare/v2.5.2...v2.5.3) - 2025-02-14 + +### Merged + +- [Fix] set `Symbol.toStringTag` when available [`#573`](https://github.com/form-data/form-data/pull/573) + +### Fixed + +- [Fix] set `Symbol.toStringTag` when available (#573) [`#396`](https://github.com/form-data/form-data/issues/396) + +### Commits + +- [Refactor] use `Object.prototype.hasOwnProperty.call` [`6e682d4`](https://github.com/form-data/form-data/commit/6e682d4bd41de7e80de41e3c4ee10f23fcc3dd00) +- [Dev Deps] update `@types/node`, `browserify`, `coveralls`, `eslint`, `formidable`, `in-publish`, `phantomjs-prebuilt`, `pkgfiles`, `pre-commit`, `request`, `tape`, `typescript` [`819f6b7`](https://github.com/form-data/form-data/commit/819f6b7a543306a891fca37c3a06d0ff4a734422) +- Only apps should have lockfiles [`b170ee2`](https://github.com/form-data/form-data/commit/b170ee2b22b4c695c363b811c0c553d2fb1bbd79) +- [Deps] update `combined-stream`, `mime-types` [`6b1ca1d`](https://github.com/form-data/form-data/commit/6b1ca1dc7362a1b1c3a99a885516cca4b7eb817f) +- Bumped version 2.5.3 [`9457283`](https://github.com/form-data/form-data/commit/9457283e1dce6122adc908fdd7442cfc54cabe7a) +- [Dev Deps] pin `request` which via `tough-cookie` ^2.4 depends on `psl` [`9dbe192`](https://github.com/form-data/form-data/commit/9dbe192be3db215eac4d9c0b980470a5c2c030c6) + +## [v2.5.2](https://github.com/form-data/form-data/compare/v2.5.1...v2.5.2) - 2024-10-10 + +### Merged + +- fix (npmignore): ignore temporary build files [`#532`](https://github.com/form-data/form-data/pull/532) + +### Commits + +- [Tests] migrate from travis to GHA [`806eda7`](https://github.com/form-data/form-data/commit/806eda77740e6e3c67c7815afb216f2e1f187ba5) +- [eslint] clean up ignores [`3a9d480`](https://github.com/form-data/form-data/commit/3a9d480232dbcbc07260ad84c3da4975d9a3ae9e) +- [Fix] `Buffer.from` and `Buffer.alloc` require node 4+ [`c499f76`](https://github.com/form-data/form-data/commit/c499f76f1faac1ddbf210c45217038e4c1e02337) +- Bumped version 2.5.2 [`7020dd4`](https://github.com/form-data/form-data/commit/7020dd4c1260370abc40e86e3dfe49c5d576fbda) +- [Dev Deps] downgrade `cross-spawn` [`3fc1a9b`](https://github.com/form-data/form-data/commit/3fc1a9b62ddf1fe77a2bd6bd3476e4c0a9e01a88) +- fix: move util.isArray to Array.isArray (#564) [`10418d1`](https://github.com/form-data/form-data/commit/10418d1fe4b0d65fe020eafe3911feb5ad5e2bd6) + +## [v2.5.1](https://github.com/form-data/form-data/compare/v2.5.0...v2.5.1) - 2019-08-28 + +### Merged + +- Fix error in callback signatures [`#435`](https://github.com/form-data/form-data/pull/435) +- -Fixed: Eerror in the documentations as indicated in #439 [`#440`](https://github.com/form-data/form-data/pull/440) +- Add constructor options to TypeScript defs [`#437`](https://github.com/form-data/form-data/pull/437) + +### Commits + +- Add remaining combined-stream options to typedef [`4d41a32`](https://github.com/form-data/form-data/commit/4d41a32c0b3f85f8bbc9cf17df43befd2d5fc305) +- Bumped version 2.5.1 [`8ce81f5`](https://github.com/form-data/form-data/commit/8ce81f56cccf5466363a5eff135ad394a929f59b) +- Bump rimraf to 2.7.1 [`a6bc2d4`](https://github.com/form-data/form-data/commit/a6bc2d4296dbdee5d84cbab7c69bcd0eea7a12e2) + +## [v2.5.0](https://github.com/form-data/form-data/compare/v2.4.0...v2.5.0) - 2019-07-03 + +### Merged + +- - Added: public methods with information and examples to readme [`#429`](https://github.com/form-data/form-data/pull/429) +- chore: move @types/node to devDep [`#431`](https://github.com/form-data/form-data/pull/431) +- Switched windows tests from AppVeyor to Travis [`#430`](https://github.com/form-data/form-data/pull/430) +- feat(typings): migrate TS typings #427 [`#428`](https://github.com/form-data/form-data/pull/428) +- enhance the method of path.basename, handle undefined case [`#421`](https://github.com/form-data/form-data/pull/421) + +### Commits + +- - Added: public methods with information and examples to the readme file. [`21323f3`](https://github.com/form-data/form-data/commit/21323f3b4043a167046a4a2554c5f2825356c423) +- feat(typings): migrate TS typings [`a3c0142`](https://github.com/form-data/form-data/commit/a3c0142ed91b0c7dcaf89c4f618776708f1f70a9) +- - Fixed: Typos [`37350fa`](https://github.com/form-data/form-data/commit/37350fa250782f156a998ec1fa9671866d40ac49) +- Switched to Travis Windows from Appveyor [`fc61c73`](https://github.com/form-data/form-data/commit/fc61c7381fad12662df16dbc3e7621c91b886f03) +- - Fixed: rendering of subheaders [`e93ed8d`](https://github.com/form-data/form-data/commit/e93ed8df9d7f22078bc3a2c24889e9dfa11e192d) +- Updated deps and readme [`e3d8628`](https://github.com/form-data/form-data/commit/e3d8628728f6e4817ab97deeed92f0c822661b89) +- Updated dependencies [`19add50`](https://github.com/form-data/form-data/commit/19add50afb7de66c70d189f422d16f1b886616e2) +- Bumped version to 2.5.0 [`905f173`](https://github.com/form-data/form-data/commit/905f173a3f785e8d312998e765634ee451ca5f42) +- - Fixed: filesize is not a valid option? knownLength should be used for streams [`d88f912`](https://github.com/form-data/form-data/commit/d88f912b75b666b47f8674467516eade69d2d5be) +- Bump notion of modern node to node8 [`508b626`](https://github.com/form-data/form-data/commit/508b626bf1b460d3733d3420dc1cfd001617f6ac) +- enhance the method of path.basename [`faaa68a`](https://github.com/form-data/form-data/commit/faaa68a297be7d4fca0ac4709d5b93afc1f78b5c) + +## [v2.4.0](https://github.com/form-data/form-data/compare/v2.3.2...v2.4.0) - 2019-06-19 + +### Merged + +- Added "getBuffer" method and updated certificates [`#419`](https://github.com/form-data/form-data/pull/419) +- docs(readme): add axios integration document [`#425`](https://github.com/form-data/form-data/pull/425) +- Allow newer versions of combined-stream [`#402`](https://github.com/form-data/form-data/pull/402) + +### Commits + +- Updated: Certificate [`e90a76a`](https://github.com/form-data/form-data/commit/e90a76ab3dcaa63a6f3045f8255bfbb9c25a3e4e) +- Updated build/test/badges [`8512eef`](https://github.com/form-data/form-data/commit/8512eef436e28372f5bc88de3ca76a9cb46e6847) +- Bumped version 2.4.0 [`0f8da06`](https://github.com/form-data/form-data/commit/0f8da06c0b4c997bd2f6b09d78290d339616a950) +- docs(readme): remove unnecessary bracket [`4e3954d`](https://github.com/form-data/form-data/commit/4e3954dde304d27e3b95371d8c78002f3af5d5b2) +- Bumped version to 2.3.3 [`b16916a`](https://github.com/form-data/form-data/commit/b16916a568a0d06f3f8a16c31f9a8b89b7844094) + +## [v2.3.2](https://github.com/form-data/form-data/compare/v2.3.1...v2.3.2) - 2018-02-13 + +### Merged + +- Pulling in fixed combined-stream [`#379`](https://github.com/form-data/form-data/pull/379) + +### Commits + +- All the dev dependencies are breaking in old versions of node :'( [`c7dba6a`](https://github.com/form-data/form-data/commit/c7dba6a139d872d173454845e25e1850ed6b72b4) +- Updated badges [`19b6c7a`](https://github.com/form-data/form-data/commit/19b6c7a8a5c40f47f91c8a8da3e5e4dc3c449fa3) +- Try tests in node@4 [`872a326`](https://github.com/form-data/form-data/commit/872a326ab13e2740b660ff589b75232c3a85fcc9) +- Pull in final version [`9d44871`](https://github.com/form-data/form-data/commit/9d44871073d647995270b19dbc26f65671ce15c7) + +## [v2.3.1](https://github.com/form-data/form-data/compare/v2.3.0...v2.3.1) - 2017-08-24 + +### Commits + +- Updated readme with custom options example [`8e0a569`](https://github.com/form-data/form-data/commit/8e0a5697026016fe171e93bec43c2205279e23ca) +- Added support (tests) for node 8 [`d1d6f4a`](https://github.com/form-data/form-data/commit/d1d6f4ad4670d8ba84cc85b28e522ca0e93eb362) + +## [v2.3.0](https://github.com/form-data/form-data/compare/v2.2.0...v2.3.0) - 2017-08-24 + +### Merged + +- Added custom `options` support [`#368`](https://github.com/form-data/form-data/pull/368) +- Allow form.submit with url string param to use https [`#249`](https://github.com/form-data/form-data/pull/249) +- Proper header production [`#357`](https://github.com/form-data/form-data/pull/357) +- Fix wrong MIME type in example [`#285`](https://github.com/form-data/form-data/pull/285) + +### Commits + +- allow form.submit with url string param to use https [`c0390dc`](https://github.com/form-data/form-data/commit/c0390dcc623e15215308fa2bb0225aa431d9381e) +- update tests for url parsing [`eec0e80`](https://github.com/form-data/form-data/commit/eec0e807889d46697abd39a89ad9bf39996ba787) +- Uses for in to assign properties instead of Object.assign [`f6854ed`](https://github.com/form-data/form-data/commit/f6854edd85c708191bb9c89615a09fd0a9afe518) +- Adds test to check for option override [`61762f2`](https://github.com/form-data/form-data/commit/61762f2c5262e576d6a7f778b4ebab6546ef8582) +- Removes the 2mb maxDataSize limitation [`dc171c3`](https://github.com/form-data/form-data/commit/dc171c3ba49ac9b8813636fd4159d139b812315b) +- Ignore .DS_Store [`e8a05d3`](https://github.com/form-data/form-data/commit/e8a05d33361f7dca8927fe1d96433d049843de24) + +## [v2.2.0](https://github.com/form-data/form-data/compare/v2.1.4...v2.2.0) - 2017-06-11 + +### Merged + +- Filename can be a nested path [`#355`](https://github.com/form-data/form-data/pull/355) + +### Commits + +- Bumped version number. [`d7398c3`](https://github.com/form-data/form-data/commit/d7398c3e7cd81ed12ecc0b84363721bae467db02) + +## [v2.1.4](https://github.com/form-data/form-data/compare/2.1.3...v2.1.4) - 2017-04-08 + +## [2.1.3](https://github.com/form-data/form-data/compare/v2.1.3...2.1.3) - 2017-04-08 + +## [v2.1.3](https://github.com/form-data/form-data/compare/v2.1.2...v2.1.3) - 2017-04-08 + +### Merged + +- toString should output '[object FormData]' [`#346`](https://github.com/form-data/form-data/pull/346) + +## [v2.1.2](https://github.com/form-data/form-data/compare/v2.1.1...v2.1.2) - 2016-11-07 + +### Merged + +- #271 Added check for self and window objects + tests [`#282`](https://github.com/form-data/form-data/pull/282) + +### Commits + +- Added check for self and window objects + tests [`c99e4ec`](https://github.com/form-data/form-data/commit/c99e4ec32cd14d83776f2bdcc5a4e7384131c1b1) + +## [v2.1.1](https://github.com/form-data/form-data/compare/v2.1.0...v2.1.1) - 2016-10-03 + +### Merged + +- Bumped dependencies. [`#270`](https://github.com/form-data/form-data/pull/270) +- Update browser.js shim to use self instead of window [`#267`](https://github.com/form-data/form-data/pull/267) +- Boilerplate code rediction [`#265`](https://github.com/form-data/form-data/pull/265) +- eslint@3.7.0 [`#266`](https://github.com/form-data/form-data/pull/266) + +### Commits + +- code duplicates removed [`e9239fb`](https://github.com/form-data/form-data/commit/e9239fbe7d3c897b29fe3bde857d772469541c01) +- Changed according to requests [`aa99246`](https://github.com/form-data/form-data/commit/aa9924626bd9168334d73fea568c0ad9d8fbaa96) +- chore(package): update eslint to version 3.7.0 [`090a859`](https://github.com/form-data/form-data/commit/090a859835016cab0de49629140499e418db9c3a) + +## [v2.1.0](https://github.com/form-data/form-data/compare/v2.0.0...v2.1.0) - 2016-09-25 + +### Merged + +- Added `hasKnownLength` public method [`#263`](https://github.com/form-data/form-data/pull/263) + +### Commits + +- Added hasKnownLength public method [`655b959`](https://github.com/form-data/form-data/commit/655b95988ef2ed3399f8796b29b2a8673c1df11c) + +## [v2.0.0](https://github.com/form-data/form-data/compare/v1.0.0...v2.0.0) - 2016-09-16 + +### Merged + +- Replaced async with asynckit [`#258`](https://github.com/form-data/form-data/pull/258) +- Pre-release house cleaning [`#247`](https://github.com/form-data/form-data/pull/247) + +### Commits + +- Replaced async with asynckit. Modernized [`1749b78`](https://github.com/form-data/form-data/commit/1749b78d50580fbd080e65c1eb9702ad4f4fc0c0) +- Ignore .bak files [`c08190a`](https://github.com/form-data/form-data/commit/c08190a87d3e22a528b6e32b622193742a4c2672) +- Trying to be more chatty. :) [`c79eabb`](https://github.com/form-data/form-data/commit/c79eabb24eaf761069255a44abf4f540cfd47d40) + +## [v1.0.0](https://github.com/form-data/form-data/compare/v1.0.0-rc4...v1.0.0) - 2016-08-26 + +### Merged + +- Allow custom header fields to be set as an object. [`#190`](https://github.com/form-data/form-data/pull/190) +- v1.0.0-rc4 [`#182`](https://github.com/form-data/form-data/pull/182) +- Avoid undefined variable reference in older browsers [`#176`](https://github.com/form-data/form-data/pull/176) +- More housecleaning [`#164`](https://github.com/form-data/form-data/pull/164) +- More cleanup [`#159`](https://github.com/form-data/form-data/pull/159) +- Added windows testing. Some cleanup. [`#158`](https://github.com/form-data/form-data/pull/158) +- Housecleaning. Added test coverage. [`#156`](https://github.com/form-data/form-data/pull/156) +- Second iteration of cleanup. [`#145`](https://github.com/form-data/form-data/pull/145) + +### Commits + +- Pre-release house cleaning [`440d72b`](https://github.com/form-data/form-data/commit/440d72b5fd44dd132f42598c3183d46e5f35ce71) +- Updated deps, updated docs [`54b6114`](https://github.com/form-data/form-data/commit/54b61143e9ce66a656dd537a1e7b31319a4991be) +- make docs up-to-date [`5e383d7`](https://github.com/form-data/form-data/commit/5e383d7f1466713f7fcef58a6817e0cb466c8ba7) +- Added missing deps [`fe04862`](https://github.com/form-data/form-data/commit/fe04862000b2762245e2db69d5207696a08c1174) + +## [v1.0.0-rc4](https://github.com/form-data/form-data/compare/v1.0.0-rc3...v1.0.0-rc4) - 2016-03-15 + +### Merged + +- Housecleaning, preparing for the release [`#144`](https://github.com/form-data/form-data/pull/144) +- lib: emit error when failing to get length [`#127`](https://github.com/form-data/form-data/pull/127) +- Cleaning up for Codacity 2. [`#143`](https://github.com/form-data/form-data/pull/143) +- Cleaned up codacity concerns. [`#142`](https://github.com/form-data/form-data/pull/142) +- Should throw type error without new operator. [`#129`](https://github.com/form-data/form-data/pull/129) + +### Commits + +- More cleanup [`94b6565`](https://github.com/form-data/form-data/commit/94b6565bb98a387335c72feff5ed5c10da0a7f6f) +- Shuffling things around [`3c2f172`](https://github.com/form-data/form-data/commit/3c2f172eaddf0979b3eef5c73985d1a6fd3eee4a) +- Second iteration of cleanup. [`347c88e`](https://github.com/form-data/form-data/commit/347c88ef9a99a66b9bcf4278497425db2f0182b2) +- Housecleaning [`c335610`](https://github.com/form-data/form-data/commit/c3356100c054a4695e4dec8ed7072775cd745616) +- More housecleaning [`f573321`](https://github.com/form-data/form-data/commit/f573321824aae37ba2052a92cc889d533d9f8fb8) +- Trying to make far run on windows. + cleanup [`e426dfc`](https://github.com/form-data/form-data/commit/e426dfcefb07ee307d8a15dec04044cce62413e6) +- Playing with appveyor [`c9458a7`](https://github.com/form-data/form-data/commit/c9458a7c328782b19859bc1745e7d6b2005ede86) +- Updated dev dependencies. [`ceebe88`](https://github.com/form-data/form-data/commit/ceebe88872bb22da0a5a98daf384e3cc232928d3) +- Replaced win-spawn with cross-spawn [`405a69e`](https://github.com/form-data/form-data/commit/405a69ee34e235ee6561b5ff0140b561be40d1cc) +- Updated readme badges. [`12f282a`](https://github.com/form-data/form-data/commit/12f282a1310fcc2f70cc5669782283929c32a63d) +- Making paths windows friendly. [`f4bddc5`](https://github.com/form-data/form-data/commit/f4bddc5955e2472f8e23c892c9b4d7a08fcb85a3) +- [WIP] trying things for greater sanity [`8ad1f02`](https://github.com/form-data/form-data/commit/8ad1f02b0b3db4a0b00c5d6145ed69bcb7558213) +- Bending under Codacy [`bfff3bb`](https://github.com/form-data/form-data/commit/bfff3bb36052dc83f429949b4e6f9b146a49d996) +- Another attempt to make windows friendly [`f3eb628`](https://github.com/form-data/form-data/commit/f3eb628974ccb91ba0020f41df490207eeed77f6) +- Updated dependencies. [`f73996e`](https://github.com/form-data/form-data/commit/f73996e0508ee2d4b2b376276adfac1de4188ac2) +- Missed travis changes. [`67ee79f`](https://github.com/form-data/form-data/commit/67ee79f964fdabaf300bd41b0af0c1cfaca07687) +- Restructured badges. [`48444a1`](https://github.com/form-data/form-data/commit/48444a1ff156ba2c2c3cfd11047c2f2fd92d4474) +- Add similar type error as the browser for attempting to use form-data without new. [`5711320`](https://github.com/form-data/form-data/commit/5711320fb7c8cc620cfc79b24c7721526e23e539) +- Took out codeclimate-test-reporter [`a7e0c65`](https://github.com/form-data/form-data/commit/a7e0c6522afe85ca9974b0b4e1fca9c77c3e52b1) +- One more [`8e84cff`](https://github.com/form-data/form-data/commit/8e84cff3370526ecd3e175fd98e966242d81993c) + +## [v1.0.0-rc3](https://github.com/form-data/form-data/compare/v1.0.0-rc2...v1.0.0-rc3) - 2015-07-29 + +### Merged + +- House cleaning. Added `pre-commit`. [`#140`](https://github.com/form-data/form-data/pull/140) +- Allow custom content-type without setting a filename. [`#138`](https://github.com/form-data/form-data/pull/138) +- Add node-fetch to alternative submission methods. [`#132`](https://github.com/form-data/form-data/pull/132) +- Update dependencies [`#130`](https://github.com/form-data/form-data/pull/130) +- Switching to container based TravisCI [`#136`](https://github.com/form-data/form-data/pull/136) +- Default content-type to 'application/octect-stream' [`#128`](https://github.com/form-data/form-data/pull/128) +- Allow filename as third option of .append [`#125`](https://github.com/form-data/form-data/pull/125) + +### Commits + +- Allow custom content-type without setting a filename [`c8a77cc`](https://github.com/form-data/form-data/commit/c8a77cc0cf16d15f1ebf25272beaab639ce89f76) +- Fixed ranged test. [`a5ac58c`](https://github.com/form-data/form-data/commit/a5ac58cbafd0909f32fe8301998f689314fd4859) +- Allow filename as third option of #append [`d081005`](https://github.com/form-data/form-data/commit/d0810058c84764b3c463a18b15ebb37864de9260) +- Allow custom content-type without setting a filename [`8cb9709`](https://github.com/form-data/form-data/commit/8cb9709e5f1809cfde0cd707dbabf277138cd771) + +## [v1.0.0-rc2](https://github.com/form-data/form-data/compare/v1.0.0-rc1...v1.0.0-rc2) - 2015-07-21 + +### Merged + +- #109 Append proper line break [`#123`](https://github.com/form-data/form-data/pull/123) +- Add shim for browser (browserify/webpack). [`#122`](https://github.com/form-data/form-data/pull/122) +- Update license field [`#115`](https://github.com/form-data/form-data/pull/115) + +### Commits + +- Add shim for browser. [`87c33f4`](https://github.com/form-data/form-data/commit/87c33f4269a2211938f80ab3e53835362b1afee8) +- Bump version [`a3f5d88`](https://github.com/form-data/form-data/commit/a3f5d8872c810ce240c7d3838c69c3c9fcecc111) + +## [v1.0.0-rc1](https://github.com/form-data/form-data/compare/0.2...v1.0.0-rc1) - 2015-06-13 + +### Merged + +- v1.0.0-rc1 [`#114`](https://github.com/form-data/form-data/pull/114) +- Updated test targets [`#102`](https://github.com/form-data/form-data/pull/102) +- Remove duplicate plus sign [`#94`](https://github.com/form-data/form-data/pull/94) + +### Commits + +- Made https test local. Updated deps. [`afe1959`](https://github.com/form-data/form-data/commit/afe1959ec711f23e57038ab5cb20fedd86271f29) +- Proper self-signed ssl [`4d5ec50`](https://github.com/form-data/form-data/commit/4d5ec50e81109ad2addf3dbb56dc7c134df5ff87) +- Update HTTPS handling for modern days [`2c11b01`](https://github.com/form-data/form-data/commit/2c11b01ce2c06e205c84d7154fa2f27b66c94f3b) +- Made tests more local [`09633fa`](https://github.com/form-data/form-data/commit/09633fa249e7ce3ac581543aafe16ee9039a823b) +- Auto create tmp folder for Formidable [`28714b7`](https://github.com/form-data/form-data/commit/28714b7f71ad556064cdff88fabe6b92bd407ddd) +- remove duplicate plus sign [`36e09c6`](https://github.com/form-data/form-data/commit/36e09c695b0514d91a23f5cd64e6805404776fc7) + +## [0.2](https://github.com/form-data/form-data/compare/0.1.4...0.2) - 2014-12-06 + +### Merged + +- Bumped version [`#96`](https://github.com/form-data/form-data/pull/96) +- Replace mime library. [`#95`](https://github.com/form-data/form-data/pull/95) +- #71 Respect bytes range in a read stream. [`#73`](https://github.com/form-data/form-data/pull/73) + +## [0.1.4](https://github.com/form-data/form-data/compare/0.1.3...0.1.4) - 2014-06-23 + +### Merged + +- Updated version. [`#76`](https://github.com/form-data/form-data/pull/76) +- #71 Respect bytes range in a read stream. [`#75`](https://github.com/form-data/form-data/pull/75) + +## [0.1.3](https://github.com/form-data/form-data/compare/0.1.2...0.1.3) - 2014-06-17 + +### Merged + +- Updated versions. [`#69`](https://github.com/form-data/form-data/pull/69) +- Added custom headers support [`#60`](https://github.com/form-data/form-data/pull/60) +- Added test for Request. Small fixes. [`#56`](https://github.com/form-data/form-data/pull/56) + +### Commits + +- Added test for the custom header functionality [`bd50685`](https://github.com/form-data/form-data/commit/bd506855af62daf728ef1718cae88ed23bb732f3) +- Documented custom headers option [`77a024a`](https://github.com/form-data/form-data/commit/77a024a9375f93c246c35513d80f37d5e11d35ff) +- Removed 0.6 support. [`aee8dce`](https://github.com/form-data/form-data/commit/aee8dce604c595cfaacfc6efb12453d1691ac0d6) + +## [0.1.2](https://github.com/form-data/form-data/compare/0.1.1...0.1.2) - 2013-10-02 + +### Merged + +- Fixed default https port assignment, added tests. [`#52`](https://github.com/form-data/form-data/pull/52) +- #45 Added tests for multi-submit. Updated readme. [`#49`](https://github.com/form-data/form-data/pull/49) +- #47 return request from .submit() [`#48`](https://github.com/form-data/form-data/pull/48) + +### Commits + +- Bumped version. [`2b761b2`](https://github.com/form-data/form-data/commit/2b761b256ae607fc2121621f12c2e1042be26baf) + +## [0.1.1](https://github.com/form-data/form-data/compare/0.1.0...0.1.1) - 2013-08-21 + +### Merged + +- Added license type and reference to package.json [`#46`](https://github.com/form-data/form-data/pull/46) + +### Commits + +- #47 return request from .submit() [`1d61c2d`](https://github.com/form-data/form-data/commit/1d61c2da518bd5e136550faa3b5235bb540f1e06) +- #47 Updated readme. [`e3dae15`](https://github.com/form-data/form-data/commit/e3dae1526bd3c3b9d7aff6075abdaac12c3cc60f) + +## [0.1.0](https://github.com/form-data/form-data/compare/0.0.10...0.1.0) - 2013-07-08 + +### Merged + +- Update master to 0.1.0 [`#44`](https://github.com/form-data/form-data/pull/44) +- 0.1.0 - Added error handling. Streamlined edge cases behavior. [`#43`](https://github.com/form-data/form-data/pull/43) +- Pointed badges back to mothership. [`#39`](https://github.com/form-data/form-data/pull/39) +- Updated node-fake to support 0.11 tests. [`#37`](https://github.com/form-data/form-data/pull/37) +- Updated tests to play nice with 0.10 [`#36`](https://github.com/form-data/form-data/pull/36) +- #32 Added .npmignore [`#34`](https://github.com/form-data/form-data/pull/34) +- Spring cleaning [`#30`](https://github.com/form-data/form-data/pull/30) + +### Commits + +- Added error handling. Streamlined edge cases behavior. [`4da496e`](https://github.com/form-data/form-data/commit/4da496e577cb9bc0fd6c94cbf9333a0082ce353a) +- Made tests more deterministic. [`7fc009b`](https://github.com/form-data/form-data/commit/7fc009b8a2cc9232514a44b2808b9f89ce68f7d2) +- Fixed styling. [`d373b41`](https://github.com/form-data/form-data/commit/d373b417e779024bc3326073e176383cd08c0b18) +- #40 Updated Readme.md regarding getLengthSync() [`efb373f`](https://github.com/form-data/form-data/commit/efb373fd63814d977960e0299d23c92cd876cfef) +- Updated readme. [`527e3a6`](https://github.com/form-data/form-data/commit/527e3a63b032cb6f576f597ad7ff2ebcf8a0b9b4) + +## [0.0.10](https://github.com/form-data/form-data/compare/0.0.9...0.0.10) - 2013-05-08 + +### Commits + +- Updated tests to play nice with 0.10. [`932b39b`](https://github.com/form-data/form-data/commit/932b39b773e49edcb2c5d2e58fe389ab6c42f47c) +- Added dependency tracking. [`3131d7f`](https://github.com/form-data/form-data/commit/3131d7f6996cd519d50547e4de1587fd80d0fa07) + +## 0.0.9 - 2013-04-29 + +### Merged + +- Custom params for form.submit() should cover most edge cases. [`#22`](https://github.com/form-data/form-data/pull/22) +- Updated Readme and version number. [`#20`](https://github.com/form-data/form-data/pull/20) +- Allow custom headers and pre-known length in parts [`#17`](https://github.com/form-data/form-data/pull/17) +- Bumped version number. [`#12`](https://github.com/form-data/form-data/pull/12) +- Fix for #10 [`#11`](https://github.com/form-data/form-data/pull/11) +- Bumped version number. [`#8`](https://github.com/form-data/form-data/pull/8) +- Added support for https destination, http-response and mikeal's request streams. [`#7`](https://github.com/form-data/form-data/pull/7) +- Updated git url. [`#6`](https://github.com/form-data/form-data/pull/6) +- Version bump. [`#5`](https://github.com/form-data/form-data/pull/5) +- Changes to support custom content-type and getLengthSync. [`#4`](https://github.com/form-data/form-data/pull/4) +- make .submit(url) use host from url, not 'localhost' [`#2`](https://github.com/form-data/form-data/pull/2) +- Make package.json JSON [`#1`](https://github.com/form-data/form-data/pull/1) + +### Fixed + +- Add MIT license [`#14`](https://github.com/form-data/form-data/issues/14) + +### Commits + +- Spring cleaning. [`850ba1b`](https://github.com/form-data/form-data/commit/850ba1b649b6856b0fa87bbcb04bc70ece0137a6) +- Added custom request params to form.submit(). Made tests more stable. [`de3502f`](https://github.com/form-data/form-data/commit/de3502f6c4a509f6ed12a7dd9dc2ce9c2e0a8d23) +- Basic form (no files) working [`6ffdc34`](https://github.com/form-data/form-data/commit/6ffdc343e8594cfc2efe1e27653ea39d8980a14e) +- Got initial test to pass [`9a59d08`](https://github.com/form-data/form-data/commit/9a59d08c024479fd3c9d99ba2f0893a47b3980f0) +- Implement initial getLength [`9060c91`](https://github.com/form-data/form-data/commit/9060c91b861a6573b73beddd11e866db422b5830) +- Make getLength work with file streams [`6f6b1e9`](https://github.com/form-data/form-data/commit/6f6b1e9b65951e6314167db33b446351702f5558) +- Implemented a simplistic submit() function [`41e9cc1`](https://github.com/form-data/form-data/commit/41e9cc124124721e53bc1d1459d45db1410c44e6) +- added test for custom headers and content-length in parts (felixge/node-form-data/17) [`b16d14e`](https://github.com/form-data/form-data/commit/b16d14e693670f5d52babec32cdedd1aa07c1aa4) +- Fixed code styling. [`5847424`](https://github.com/form-data/form-data/commit/5847424c666970fc2060acd619e8a78678888a82) +- #29 Added custom filename and content-type options to support identity-less streams. [`adf8b4a`](https://github.com/form-data/form-data/commit/adf8b4a41530795682cd3e35ffaf26b30288ccda) +- Initial Readme and package.json [`8c744e5`](https://github.com/form-data/form-data/commit/8c744e58be4014bdf432e11b718ed87f03e217af) +- allow append() to completely override header and boundary [`3fb2ad4`](https://github.com/form-data/form-data/commit/3fb2ad491f66e4b4ff16130be25b462820b8c972) +- Syntax highlighting [`ab3a6a5`](https://github.com/form-data/form-data/commit/ab3a6a5ed1ab77a2943ce3befcb2bb3cd9ff0330) +- Updated Readme.md [`de8f441`](https://github.com/form-data/form-data/commit/de8f44122ca754cbfedc0d2748e84add5ff0b669) +- Added examples to Readme file. [`c406ac9`](https://github.com/form-data/form-data/commit/c406ac921d299cbc130464ed19338a9ef97cb650) +- pass options.knownLength to set length at beginning, w/o waiting for async size calculation [`e2ac039`](https://github.com/form-data/form-data/commit/e2ac0397ff7c37c3dca74fa9925b55f832e4fa0b) +- Updated dependencies and added test command. [`09bd7cd`](https://github.com/form-data/form-data/commit/09bd7cd86f1ad7a58df1b135eb6eef0d290894b4) +- Bumped version. Updated readme. [`4581140`](https://github.com/form-data/form-data/commit/4581140f322758c6fc92019d342c7d7d6c94af5c) +- Test runner [`1707ebb`](https://github.com/form-data/form-data/commit/1707ebbd180856e6ed44e80c46b02557e2425762) +- Added .npmignore, bumped version. [`2e033e0`](https://github.com/form-data/form-data/commit/2e033e0e4be7c1457be090cd9b2996f19d8fb665) +- FormData.prototype.append takes and passes along options (for header) [`b519203`](https://github.com/form-data/form-data/commit/b51920387ed4da7b4e106fc07b9459f26b5ae2f0) +- Make package.json JSON [`bf1b58d`](https://github.com/form-data/form-data/commit/bf1b58df794b10fda86ed013eb9237b1e5032085) +- Add dependencies to package.json [`7413d0b`](https://github.com/form-data/form-data/commit/7413d0b4cf5546312d47ea426db8180619083974) +- Add convenient submit() interface [`55855e4`](https://github.com/form-data/form-data/commit/55855e4bea14585d4a3faf9e7318a56696adbc7d) +- Fix content type [`08b6ae3`](https://github.com/form-data/form-data/commit/08b6ae337b23ef1ba457ead72c9b133047df213c) +- Combatting travis rvm calls. [`409adfd`](https://github.com/form-data/form-data/commit/409adfd100a3cf4968a632c05ba58d92d262d144) +- Fixed Issue #2 [`b3a5d66`](https://github.com/form-data/form-data/commit/b3a5d661739dcd6921b444b81d5cb3c32fab655d) +- Fix for #10. [`bab70b9`](https://github.com/form-data/form-data/commit/bab70b9e803e17287632762073d227d6c59989e0) +- Trying workarounds for formidable - 0.6 "love". [`25782a3`](https://github.com/form-data/form-data/commit/25782a3f183d9c30668ec2bca6247ed83f10611c) +- change whitespace to conform with felixge's style guide [`9fa34f4`](https://github.com/form-data/form-data/commit/9fa34f433bece85ef73086a874c6f0164ab7f1f6) +- Add async to deps [`b7d1a6b`](https://github.com/form-data/form-data/commit/b7d1a6b10ee74be831de24ed76843e5a6935f155) +- typo [`7860a9c`](https://github.com/form-data/form-data/commit/7860a9c8a582f0745ce0e4a0549f4bffc29c0b50) +- Bumped version. [`fa36c1b`](https://github.com/form-data/form-data/commit/fa36c1b4229c34b85d7efd41908429b6d1da3bfc) +- Updated .gitignore [`de567bd`](https://github.com/form-data/form-data/commit/de567bde620e53b8e9b0ed3506e79491525ec558) +- Don't rely on resume() being called by pipe [`1deae47`](https://github.com/form-data/form-data/commit/1deae47e042bcd170bd5dbe2b4a4fa5356bb8aa2) +- One more wrong content type [`28f166d`](https://github.com/form-data/form-data/commit/28f166d443e2eb77f2559324014670674b97e46e) +- Another typo [`b959b6a`](https://github.com/form-data/form-data/commit/b959b6a2be061cac17f8d329b89cea109f0f32be) +- Typo [`698fa0a`](https://github.com/form-data/form-data/commit/698fa0aa5dbf4eeb77377415acc202a6fbe3f4a2) +- Being simply dumb. [`b614db8`](https://github.com/form-data/form-data/commit/b614db85702061149fbd98418605106975e72ade) +- Fixed typo in the filename. [`30af6be`](https://github.com/form-data/form-data/commit/30af6be13fb0c9e92b32e935317680b9d7599928) diff --git a/node_modules/form-data/License b/node_modules/form-data/License new file mode 100644 index 0000000..c7ff12a --- /dev/null +++ b/node_modules/form-data/License @@ -0,0 +1,19 @@ +Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. diff --git a/node_modules/form-data/README.md b/node_modules/form-data/README.md new file mode 100644 index 0000000..f850e30 --- /dev/null +++ b/node_modules/form-data/README.md @@ -0,0 +1,355 @@ +# Form-Data [![NPM Module](https://img.shields.io/npm/v/form-data.svg)](https://www.npmjs.com/package/form-data) [![Join the chat at https://gitter.im/form-data/form-data](http://form-data.github.io/images/gitterbadge.svg)](https://gitter.im/form-data/form-data) + +A library to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications. + +The API of this library is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd]. + +[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface + +[![Linux Build](https://img.shields.io/travis/form-data/form-data/v4.0.5.svg?label=linux:6.x-12.x)](https://travis-ci.org/form-data/form-data) +[![MacOS Build](https://img.shields.io/travis/form-data/form-data/v4.0.5.svg?label=macos:6.x-12.x)](https://travis-ci.org/form-data/form-data) +[![Windows Build](https://img.shields.io/travis/form-data/form-data/v4.0.5.svg?label=windows:6.x-12.x)](https://travis-ci.org/form-data/form-data) + +[![Coverage Status](https://img.shields.io/coveralls/form-data/form-data/v4.0.5.svg?label=code+coverage)](https://coveralls.io/github/form-data/form-data?branch=master) +[![Dependency Status](https://img.shields.io/david/form-data/form-data.svg)](https://david-dm.org/form-data/form-data) + +## Install + +``` +npm install --save form-data +``` + +## Usage + +In this example we are constructing a form with 3 fields that contain a string, +a buffer and a file stream. + +``` javascript +var FormData = require('form-data'); +var fs = require('fs'); + +var form = new FormData(); +form.append('my_field', 'my value'); +form.append('my_buffer', new Buffer(10)); +form.append('my_file', fs.createReadStream('/foo/bar.jpg')); +``` + +Also you can use http-response stream: + +``` javascript +var FormData = require('form-data'); +var http = require('http'); + +var form = new FormData(); + +http.request('http://nodejs.org/images/logo.png', function (response) { + form.append('my_field', 'my value'); + form.append('my_buffer', new Buffer(10)); + form.append('my_logo', response); +}); +``` + +Or @mikeal's [request](https://github.com/request/request) stream: + +``` javascript +var FormData = require('form-data'); +var request = require('request'); + +var form = new FormData(); + +form.append('my_field', 'my value'); +form.append('my_buffer', new Buffer(10)); +form.append('my_logo', request('http://nodejs.org/images/logo.png')); +``` + +In order to submit this form to a web application, call ```submit(url, [callback])``` method: + +``` javascript +form.submit('http://example.org/', function (err, res) { + // res – response object (http.IncomingMessage) // + res.resume(); +}); + +``` + +For more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods. + +### Custom options + +You can provide custom options, such as `maxDataSize`: + +``` javascript +var FormData = require('form-data'); + +var form = new FormData({ maxDataSize: 20971520 }); +form.append('my_field', 'my value'); +form.append('my_buffer', /* something big */); +``` + +List of available options could be found in [combined-stream](https://github.com/felixge/node-combined-stream/blob/master/lib/combined_stream.js#L7-L15) + +### Alternative submission methods + +You can use node's http client interface: + +``` javascript +var http = require('http'); + +var request = http.request({ + method: 'post', + host: 'example.org', + path: '/upload', + headers: form.getHeaders() +}); + +form.pipe(request); + +request.on('response', function (res) { + console.log(res.statusCode); +}); +``` + +Or if you would prefer the `'Content-Length'` header to be set for you: + +``` javascript +form.submit('example.org/upload', function (err, res) { + console.log(res.statusCode); +}); +``` + +To use custom headers and pre-known length in parts: + +``` javascript +var CRLF = '\r\n'; +var form = new FormData(); + +var options = { + header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF, + knownLength: 1 +}; + +form.append('my_buffer', buffer, options); + +form.submit('http://example.com/', function (err, res) { + if (err) throw err; + console.log('Done'); +}); +``` + +Form-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide "file"-related information manually: + +``` javascript +someModule.stream(function (err, stdout, stderr) { + if (err) throw err; + + var form = new FormData(); + + form.append('file', stdout, { + filename: 'unicycle.jpg', // ... or: + filepath: 'photos/toys/unicycle.jpg', + contentType: 'image/jpeg', + knownLength: 19806 + }); + + form.submit('http://example.com/', function (err, res) { + if (err) throw err; + console.log('Done'); + }); +}); +``` + +The `filepath` property overrides `filename` and may contain a relative path. This is typically used when uploading [multiple files from a directory](https://wicg.github.io/entries-api/#dom-htmlinputelement-webkitdirectory). + +For edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter: + +``` javascript +form.submit({ + host: 'example.com', + path: '/probably.php?extra=params', + auth: 'username:password' +}, function (err, res) { + console.log(res.statusCode); +}); +``` + +In case you need to also send custom HTTP headers with the POST request, you can use the `headers` key in first parameter of `form.submit()`: + +``` javascript +form.submit({ + host: 'example.com', + path: '/surelynot.php', + headers: { 'x-test-header': 'test-header-value' } +}, function (err, res) { + console.log(res.statusCode); +}); +``` + +### Methods + +- [_Void_ append( **String** _field_, **Mixed** _value_ [, **Mixed** _options_] )](https://github.com/form-data/form-data#void-append-string-field-mixed-value--mixed-options-). +- [_Headers_ getHeaders( [**Headers** _userHeaders_] )](https://github.com/form-data/form-data#array-getheaders-array-userheaders-) +- [_String_ getBoundary()](https://github.com/form-data/form-data#string-getboundary) +- [_Void_ setBoundary()](https://github.com/form-data/form-data#void-setboundary) +- [_Buffer_ getBuffer()](https://github.com/form-data/form-data#buffer-getbuffer) +- [_Integer_ getLengthSync()](https://github.com/form-data/form-data#integer-getlengthsync) +- [_Integer_ getLength( **function** _callback_ )](https://github.com/form-data/form-data#integer-getlength-function-callback-) +- [_Boolean_ hasKnownLength()](https://github.com/form-data/form-data#boolean-hasknownlength) +- [_Request_ submit( _params_, **function** _callback_ )](https://github.com/form-data/form-data#request-submit-params-function-callback-) +- [_String_ toString()](https://github.com/form-data/form-data#string-tostring) + +#### _Void_ append( **String** _field_, **Mixed** _value_ [, **Mixed** _options_] ) +Append data to the form. You can submit about any format (string, integer, boolean, buffer, etc.). However, Arrays are not supported and need to be turned into strings by the user. +```javascript +var form = new FormData(); +form.append('my_string', 'my value'); +form.append('my_integer', 1); +form.append('my_boolean', true); +form.append('my_buffer', new Buffer(10)); +form.append('my_array_as_json', JSON.stringify(['bird', 'cute'])); +``` + +You may provide a string for options, or an object. +```javascript +// Set filename by providing a string for options +form.append('my_file', fs.createReadStream('/foo/bar.jpg'), 'bar.jpg'); + +// provide an object. +form.append('my_file', fs.createReadStream('/foo/bar.jpg'), { filename: 'bar.jpg', contentType: 'image/jpeg', knownLength: 19806 }); +``` + +#### _Headers_ getHeaders( [**Headers** _userHeaders_] ) +This method adds the correct `content-type` header to the provided array of `userHeaders`. + +#### _String_ getBoundary() +Return the boundary of the formData. By default, the boundary consists of 26 `-` followed by 24 numbers +for example: +```javascript +--------------------------515890814546601021194782 +``` + +#### _Void_ setBoundary(String _boundary_) +Set the boundary string, overriding the default behavior described above. + +_Note: The boundary must be unique and may not appear in the data._ + +#### _Buffer_ getBuffer() +Return the full formdata request package, as a Buffer. You can insert this Buffer in e.g. Axios to send multipart data. +```javascript +var form = new FormData(); +form.append('my_buffer', Buffer.from([0x4a,0x42,0x20,0x52,0x6f,0x63,0x6b,0x73])); +form.append('my_file', fs.readFileSync('/foo/bar.jpg')); + +axios.post('https://example.com/path/to/api', form.getBuffer(), form.getHeaders()); +``` +**Note:** Because the output is of type Buffer, you can only append types that are accepted by Buffer: *string, Buffer, ArrayBuffer, Array, or Array-like Object*. A ReadStream for example will result in an error. + +#### _Integer_ getLengthSync() +Same as `getLength` but synchronous. + +_Note: getLengthSync __doesn't__ calculate streams length._ + +#### _Integer_ getLength(**function** _callback_ ) +Returns the `Content-Length` async. The callback is used to handle errors and continue once the length has been calculated +```javascript +this.getLength(function (err, length) { + if (err) { + this._error(err); + return; + } + + // add content length + request.setHeader('Content-Length', length); + + ... +}.bind(this)); +``` + +#### _Boolean_ hasKnownLength() +Checks if the length of added values is known. + +#### _Request_ submit(_params_, **function** _callback_ ) +Submit the form to a web application. +```javascript +var form = new FormData(); +form.append('my_string', 'Hello World'); + +form.submit('http://example.com/', function (err, res) { + // res – response object (http.IncomingMessage) // + res.resume(); +} ); +``` + +#### _String_ toString() +Returns the form data as a string. Don't use this if you are sending files or buffers, use `getBuffer()` instead. + +### Integration with other libraries + +#### Request + +Form submission using [request](https://github.com/request/request): + +```javascript +var formData = { + my_field: 'my_value', + my_file: fs.createReadStream(__dirname + '/unicycle.jpg'), +}; + +request.post({url:'http://service.com/upload', formData: formData}, function (err, httpResponse, body) { + if (err) { + return console.error('upload failed:', err); + } + console.log('Upload successful! Server responded with:', body); +}); +``` + +For more details see [request readme](https://github.com/request/request#multipartform-data-multipart-form-uploads). + +#### node-fetch + +You can also submit a form using [node-fetch](https://github.com/bitinn/node-fetch): + +```javascript +var form = new FormData(); + +form.append('a', 1); + +fetch('http://example.com', { method: 'POST', body: form }) + .then(function (res) { + return res.json(); + }).then(function (json) { + console.log(json); + }); +``` + +#### axios + +In Node.js you can post a file using [axios](https://github.com/axios/axios): +```javascript +const form = new FormData(); +const stream = fs.createReadStream(PATH_TO_FILE); + +form.append('image', stream); + +// In Node.js environment you need to set boundary in the header field 'Content-Type' by calling method `getHeaders` +const formHeaders = form.getHeaders(); + +axios.post('http://example.com', form, { + headers: { + ...formHeaders, + }, +}) + .then(response => response) + .catch(error => error) +``` + +## Notes + +- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround. +- ```getLength(cb)``` will send an error as first parameter of callback if stream length cannot be calculated (e.g. send in custom streams w/o using ```knownLength```). +- ```submit``` will not add `content-length` if form length is unknown or not calculable. +- Starting version `2.x` FormData has dropped support for `node@0.10.x`. +- Starting version `3.x` FormData has dropped support for `node@4.x`. + +## License + +Form-Data is released under the [MIT](License) license. diff --git a/node_modules/form-data/index.d.ts b/node_modules/form-data/index.d.ts new file mode 100644 index 0000000..295e9e9 --- /dev/null +++ b/node_modules/form-data/index.d.ts @@ -0,0 +1,62 @@ +// Definitions by: Carlos Ballesteros Velasco +// Leon Yu +// BendingBender +// Maple Miao + +/// +import * as stream from 'stream'; +import * as http from 'http'; + +export = FormData; + +// Extracted because @types/node doesn't export interfaces. +interface ReadableOptions { + highWaterMark?: number; + encoding?: string; + objectMode?: boolean; + read?(this: stream.Readable, size: number): void; + destroy?(this: stream.Readable, error: Error | null, callback: (error: Error | null) => void): void; + autoDestroy?: boolean; +} + +interface Options extends ReadableOptions { + writable?: boolean; + readable?: boolean; + dataSize?: number; + maxDataSize?: number; + pauseStreams?: boolean; +} + +declare class FormData extends stream.Readable { + constructor(options?: Options); + append(key: string, value: any, options?: FormData.AppendOptions | string): void; + getHeaders(userHeaders?: FormData.Headers): FormData.Headers; + submit( + params: string | FormData.SubmitOptions, + callback?: (error: Error | null, response: http.IncomingMessage) => void + ): http.ClientRequest; + getBuffer(): Buffer; + setBoundary(boundary: string): void; + getBoundary(): string; + getLength(callback: (err: Error | null, length: number) => void): void; + getLengthSync(): number; + hasKnownLength(): boolean; +} + +declare namespace FormData { + interface Headers { + [key: string]: any; + } + + interface AppendOptions { + header?: string | Headers; + knownLength?: number; + filename?: string; + filepath?: string; + contentType?: string; + } + + interface SubmitOptions extends http.RequestOptions { + protocol?: 'https:' | 'http:'; + } +} diff --git a/node_modules/form-data/lib/browser.js b/node_modules/form-data/lib/browser.js new file mode 100644 index 0000000..8950a91 --- /dev/null +++ b/node_modules/form-data/lib/browser.js @@ -0,0 +1,4 @@ +'use strict'; + +/* eslint-env browser */ +module.exports = typeof self === 'object' ? self.FormData : window.FormData; diff --git a/node_modules/form-data/lib/form_data.js b/node_modules/form-data/lib/form_data.js new file mode 100644 index 0000000..63a0f01 --- /dev/null +++ b/node_modules/form-data/lib/form_data.js @@ -0,0 +1,494 @@ +'use strict'; + +var CombinedStream = require('combined-stream'); +var util = require('util'); +var path = require('path'); +var http = require('http'); +var https = require('https'); +var parseUrl = require('url').parse; +var fs = require('fs'); +var Stream = require('stream').Stream; +var crypto = require('crypto'); +var mime = require('mime-types'); +var asynckit = require('asynckit'); +var setToStringTag = require('es-set-tostringtag'); +var hasOwn = require('hasown'); +var populate = require('./populate.js'); + +/** + * Create readable "multipart/form-data" streams. + * Can be used to submit forms + * and file uploads to other web applications. + * + * @constructor + * @param {object} options - Properties to be added/overriden for FormData and CombinedStream + */ +function FormData(options) { + if (!(this instanceof FormData)) { + return new FormData(options); + } + + this._overheadLength = 0; + this._valueLength = 0; + this._valuesToMeasure = []; + + CombinedStream.call(this); + + options = options || {}; // eslint-disable-line no-param-reassign + for (var option in options) { // eslint-disable-line no-restricted-syntax + this[option] = options[option]; + } +} + +// make it a Stream +util.inherits(FormData, CombinedStream); + +FormData.LINE_BREAK = '\r\n'; +FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream'; + +FormData.prototype.append = function (field, value, options) { + options = options || {}; // eslint-disable-line no-param-reassign + + // allow filename as single option + if (typeof options === 'string') { + options = { filename: options }; // eslint-disable-line no-param-reassign + } + + var append = CombinedStream.prototype.append.bind(this); + + // all that streamy business can't handle numbers + if (typeof value === 'number' || value == null) { + value = String(value); // eslint-disable-line no-param-reassign + } + + // https://github.com/felixge/node-form-data/issues/38 + if (Array.isArray(value)) { + /* + * Please convert your array into string + * the way web server expects it + */ + this._error(new Error('Arrays are not supported.')); + return; + } + + var header = this._multiPartHeader(field, value, options); + var footer = this._multiPartFooter(); + + append(header); + append(value); + append(footer); + + // pass along options.knownLength + this._trackLength(header, value, options); +}; + +FormData.prototype._trackLength = function (header, value, options) { + var valueLength = 0; + + /* + * used w/ getLengthSync(), when length is known. + * e.g. for streaming directly from a remote server, + * w/ a known file a size, and not wanting to wait for + * incoming file to finish to get its size. + */ + if (options.knownLength != null) { + valueLength += Number(options.knownLength); + } else if (Buffer.isBuffer(value)) { + valueLength = value.length; + } else if (typeof value === 'string') { + valueLength = Buffer.byteLength(value); + } + + this._valueLength += valueLength; + + // @check why add CRLF? does this account for custom/multiple CRLFs? + this._overheadLength += Buffer.byteLength(header) + FormData.LINE_BREAK.length; + + // empty or either doesn't have path or not an http response or not a stream + if (!value || (!value.path && !(value.readable && hasOwn(value, 'httpVersion')) && !(value instanceof Stream))) { + return; + } + + // no need to bother with the length + if (!options.knownLength) { + this._valuesToMeasure.push(value); + } +}; + +FormData.prototype._lengthRetriever = function (value, callback) { + if (hasOwn(value, 'fd')) { + // take read range into a account + // `end` = Infinity –> read file till the end + // + // TODO: Looks like there is bug in Node fs.createReadStream + // it doesn't respect `end` options without `start` options + // Fix it when node fixes it. + // https://github.com/joyent/node/issues/7819 + if (value.end != undefined && value.end != Infinity && value.start != undefined) { + // when end specified + // no need to calculate range + // inclusive, starts with 0 + callback(null, value.end + 1 - (value.start ? value.start : 0)); // eslint-disable-line callback-return + + // not that fast snoopy + } else { + // still need to fetch file size from fs + fs.stat(value.path, function (err, stat) { + if (err) { + callback(err); + return; + } + + // update final size based on the range options + var fileSize = stat.size - (value.start ? value.start : 0); + callback(null, fileSize); + }); + } + + // or http response + } else if (hasOwn(value, 'httpVersion')) { + callback(null, Number(value.headers['content-length'])); // eslint-disable-line callback-return + + // or request stream http://github.com/mikeal/request + } else if (hasOwn(value, 'httpModule')) { + // wait till response come back + value.on('response', function (response) { + value.pause(); + callback(null, Number(response.headers['content-length'])); + }); + value.resume(); + + // something else + } else { + callback('Unknown stream'); // eslint-disable-line callback-return + } +}; + +FormData.prototype._multiPartHeader = function (field, value, options) { + /* + * custom header specified (as string)? + * it becomes responsible for boundary + * (e.g. to handle extra CRLFs on .NET servers) + */ + if (typeof options.header === 'string') { + return options.header; + } + + var contentDisposition = this._getContentDisposition(value, options); + var contentType = this._getContentType(value, options); + + var contents = ''; + var headers = { + // add custom disposition as third element or keep it two elements if not + 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []), + // if no content type. allow it to be empty array + 'Content-Type': [].concat(contentType || []) + }; + + // allow custom headers. + if (typeof options.header === 'object') { + populate(headers, options.header); + } + + var header; + for (var prop in headers) { // eslint-disable-line no-restricted-syntax + if (hasOwn(headers, prop)) { + header = headers[prop]; + + // skip nullish headers. + if (header == null) { + continue; // eslint-disable-line no-restricted-syntax, no-continue + } + + // convert all headers to arrays. + if (!Array.isArray(header)) { + header = [header]; + } + + // add non-empty headers. + if (header.length) { + contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK; + } + } + } + + return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK; +}; + +FormData.prototype._getContentDisposition = function (value, options) { // eslint-disable-line consistent-return + var filename; + + if (typeof options.filepath === 'string') { + // custom filepath for relative paths + filename = path.normalize(options.filepath).replace(/\\/g, '/'); + } else if (options.filename || (value && (value.name || value.path))) { + /* + * custom filename take precedence + * formidable and the browser add a name property + * fs- and request- streams have path property + */ + filename = path.basename(options.filename || (value && (value.name || value.path))); + } else if (value && value.readable && hasOwn(value, 'httpVersion')) { + // or try http response + filename = path.basename(value.client._httpMessage.path || ''); + } + + if (filename) { + return 'filename="' + filename + '"'; + } +}; + +FormData.prototype._getContentType = function (value, options) { + // use custom content-type above all + var contentType = options.contentType; + + // or try `name` from formidable, browser + if (!contentType && value && value.name) { + contentType = mime.lookup(value.name); + } + + // or try `path` from fs-, request- streams + if (!contentType && value && value.path) { + contentType = mime.lookup(value.path); + } + + // or if it's http-reponse + if (!contentType && value && value.readable && hasOwn(value, 'httpVersion')) { + contentType = value.headers['content-type']; + } + + // or guess it from the filepath or filename + if (!contentType && (options.filepath || options.filename)) { + contentType = mime.lookup(options.filepath || options.filename); + } + + // fallback to the default content type if `value` is not simple value + if (!contentType && value && typeof value === 'object') { + contentType = FormData.DEFAULT_CONTENT_TYPE; + } + + return contentType; +}; + +FormData.prototype._multiPartFooter = function () { + return function (next) { + var footer = FormData.LINE_BREAK; + + var lastPart = this._streams.length === 0; + if (lastPart) { + footer += this._lastBoundary(); + } + + next(footer); + }.bind(this); +}; + +FormData.prototype._lastBoundary = function () { + return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK; +}; + +FormData.prototype.getHeaders = function (userHeaders) { + var header; + var formHeaders = { + 'content-type': 'multipart/form-data; boundary=' + this.getBoundary() + }; + + for (header in userHeaders) { // eslint-disable-line no-restricted-syntax + if (hasOwn(userHeaders, header)) { + formHeaders[header.toLowerCase()] = userHeaders[header]; + } + } + + return formHeaders; +}; + +FormData.prototype.setBoundary = function (boundary) { + if (typeof boundary !== 'string') { + throw new TypeError('FormData boundary must be a string'); + } + this._boundary = boundary; +}; + +FormData.prototype.getBoundary = function () { + if (!this._boundary) { + this._generateBoundary(); + } + + return this._boundary; +}; + +FormData.prototype.getBuffer = function () { + var dataBuffer = new Buffer.alloc(0); // eslint-disable-line new-cap + var boundary = this.getBoundary(); + + // Create the form content. Add Line breaks to the end of data. + for (var i = 0, len = this._streams.length; i < len; i++) { + if (typeof this._streams[i] !== 'function') { + // Add content to the buffer. + if (Buffer.isBuffer(this._streams[i])) { + dataBuffer = Buffer.concat([dataBuffer, this._streams[i]]); + } else { + dataBuffer = Buffer.concat([dataBuffer, Buffer.from(this._streams[i])]); + } + + // Add break after content. + if (typeof this._streams[i] !== 'string' || this._streams[i].substring(2, boundary.length + 2) !== boundary) { + dataBuffer = Buffer.concat([dataBuffer, Buffer.from(FormData.LINE_BREAK)]); + } + } + } + + // Add the footer and return the Buffer object. + return Buffer.concat([dataBuffer, Buffer.from(this._lastBoundary())]); +}; + +FormData.prototype._generateBoundary = function () { + // This generates a 50 character boundary similar to those used by Firefox. + + // They are optimized for boyer-moore parsing. + this._boundary = '--------------------------' + crypto.randomBytes(12).toString('hex'); +}; + +// Note: getLengthSync DOESN'T calculate streams length +// As workaround one can calculate file size manually and add it as knownLength option +FormData.prototype.getLengthSync = function () { + var knownLength = this._overheadLength + this._valueLength; + + // Don't get confused, there are 3 "internal" streams for each keyval pair so it basically checks if there is any value added to the form + if (this._streams.length) { + knownLength += this._lastBoundary().length; + } + + // https://github.com/form-data/form-data/issues/40 + if (!this.hasKnownLength()) { + /* + * Some async length retrievers are present + * therefore synchronous length calculation is false. + * Please use getLength(callback) to get proper length + */ + this._error(new Error('Cannot calculate proper length in synchronous way.')); + } + + return knownLength; +}; + +// Public API to check if length of added values is known +// https://github.com/form-data/form-data/issues/196 +// https://github.com/form-data/form-data/issues/262 +FormData.prototype.hasKnownLength = function () { + var hasKnownLength = true; + + if (this._valuesToMeasure.length) { + hasKnownLength = false; + } + + return hasKnownLength; +}; + +FormData.prototype.getLength = function (cb) { + var knownLength = this._overheadLength + this._valueLength; + + if (this._streams.length) { + knownLength += this._lastBoundary().length; + } + + if (!this._valuesToMeasure.length) { + process.nextTick(cb.bind(this, null, knownLength)); + return; + } + + asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function (err, values) { + if (err) { + cb(err); + return; + } + + values.forEach(function (length) { + knownLength += length; + }); + + cb(null, knownLength); + }); +}; + +FormData.prototype.submit = function (params, cb) { + var request; + var options; + var defaults = { method: 'post' }; + + // parse provided url if it's string or treat it as options object + if (typeof params === 'string') { + params = parseUrl(params); // eslint-disable-line no-param-reassign + /* eslint sort-keys: 0 */ + options = populate({ + port: params.port, + path: params.pathname, + host: params.hostname, + protocol: params.protocol + }, defaults); + } else { // use custom params + options = populate(params, defaults); + // if no port provided use default one + if (!options.port) { + options.port = options.protocol === 'https:' ? 443 : 80; + } + } + + // put that good code in getHeaders to some use + options.headers = this.getHeaders(params.headers); + + // https if specified, fallback to http in any other case + if (options.protocol === 'https:') { + request = https.request(options); + } else { + request = http.request(options); + } + + // get content length and fire away + this.getLength(function (err, length) { + if (err && err !== 'Unknown stream') { + this._error(err); + return; + } + + // add content length + if (length) { + request.setHeader('Content-Length', length); + } + + this.pipe(request); + if (cb) { + var onResponse; + + var callback = function (error, responce) { + request.removeListener('error', callback); + request.removeListener('response', onResponse); + + return cb.call(this, error, responce); + }; + + onResponse = callback.bind(this, null); + + request.on('error', callback); + request.on('response', onResponse); + } + }.bind(this)); + + return request; +}; + +FormData.prototype._error = function (err) { + if (!this.error) { + this.error = err; + this.pause(); + this.emit('error', err); + } +}; + +FormData.prototype.toString = function () { + return '[object FormData]'; +}; +setToStringTag(FormData.prototype, 'FormData'); + +// Public API +module.exports = FormData; diff --git a/node_modules/form-data/lib/populate.js b/node_modules/form-data/lib/populate.js new file mode 100644 index 0000000..55ac3bb --- /dev/null +++ b/node_modules/form-data/lib/populate.js @@ -0,0 +1,10 @@ +'use strict'; + +// populates missing values +module.exports = function (dst, src) { + Object.keys(src).forEach(function (prop) { + dst[prop] = dst[prop] || src[prop]; // eslint-disable-line no-param-reassign + }); + + return dst; +}; diff --git a/node_modules/form-data/package.json b/node_modules/form-data/package.json new file mode 100644 index 0000000..f8d6117 --- /dev/null +++ b/node_modules/form-data/package.json @@ -0,0 +1,82 @@ +{ + "author": "Felix Geisendörfer (http://debuggable.com/)", + "name": "form-data", + "description": "A library to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.", + "version": "4.0.5", + "repository": { + "type": "git", + "url": "git://github.com/form-data/form-data.git" + }, + "main": "./lib/form_data", + "browser": "./lib/browser", + "typings": "./index.d.ts", + "scripts": { + "pretest": "npm run lint", + "pretests-only": "rimraf coverage test/tmp", + "tests-only": "istanbul cover test/run.js", + "posttests-only": "istanbul report lcov text", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "lint": "eslint --ext=js,mjs .", + "report": "istanbul report lcov text", + "ci-lint": "is-node-modern 8 && npm run lint || is-node-not-modern 8", + "ci-test": "npm run tests-only && npm run browser && npm run report", + "predebug": "rimraf coverage test/tmp", + "debug": "verbose=1 ./test/run.js", + "browser": "browserify -t browserify-istanbul test/run-browser.js | obake --coverage", + "check": "istanbul check-coverage coverage/coverage*.json", + "files": "pkgfiles --sort=name", + "get-version": "node -e \"console.log(require('./package.json').version)\"", + "update-readme": "sed -i.bak 's/\\/master\\.svg/\\/v'$(npm --silent run get-version)'.svg/g' README.md", + "postupdate-readme": "mv README.md.bak READ.ME.md.bak", + "restore-readme": "mv READ.ME.md.bak README.md", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepack": "npm run update-readme", + "postpack": "npm run restore-readme", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "engines": { + "node": ">= 6" + }, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.4.0", + "auto-changelog": "^2.5.0", + "browserify": "^13.3.0", + "browserify-istanbul": "^2.0.0", + "coveralls": "^3.1.1", + "cross-spawn": "^6.0.6", + "eslint": "^8.57.1", + "fake": "^0.2.2", + "far": "^0.0.7", + "formidable": "^1.2.6", + "in-publish": "^2.0.1", + "is-node-modern": "^1.0.0", + "istanbul": "^0.4.5", + "js-randomness-predictor": "^1.5.5", + "obake": "^0.1.2", + "pkgfiles": "^2.3.2", + "pre-commit": "^1.2.2", + "puppeteer": "^1.20.0", + "request": "~2.87.0", + "rimraf": "^2.7.1", + "semver": "^6.3.1", + "tape": "^5.9.0" + }, + "license": "MIT", + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + } +} diff --git a/node_modules/function-bind/.eslintrc b/node_modules/function-bind/.eslintrc new file mode 100644 index 0000000..71a054f --- /dev/null +++ b/node_modules/function-bind/.eslintrc @@ -0,0 +1,21 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "func-name-matching": 0, + "indent": [2, 4], + "no-new-func": [1], + }, + + "overrides": [ + { + "files": "test/**", + "rules": { + "max-lines-per-function": 0, + "strict": [0] + }, + }, + ], +} diff --git a/node_modules/function-bind/.github/FUNDING.yml b/node_modules/function-bind/.github/FUNDING.yml new file mode 100644 index 0000000..7448219 --- /dev/null +++ b/node_modules/function-bind/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/function-bind +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/function-bind/.github/SECURITY.md b/node_modules/function-bind/.github/SECURITY.md new file mode 100644 index 0000000..82e4285 --- /dev/null +++ b/node_modules/function-bind/.github/SECURITY.md @@ -0,0 +1,3 @@ +# Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. diff --git a/node_modules/function-bind/.nycrc b/node_modules/function-bind/.nycrc new file mode 100644 index 0000000..1826526 --- /dev/null +++ b/node_modules/function-bind/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/function-bind/CHANGELOG.md b/node_modules/function-bind/CHANGELOG.md new file mode 100644 index 0000000..f9e6cc0 --- /dev/null +++ b/node_modules/function-bind/CHANGELOG.md @@ -0,0 +1,136 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.1.2](https://github.com/ljharb/function-bind/compare/v1.1.1...v1.1.2) - 2023-10-12 + +### Merged + +- Point to the correct file [`#16`](https://github.com/ljharb/function-bind/pull/16) + +### Commits + +- [Tests] migrate tests to Github Actions [`4f8b57c`](https://github.com/ljharb/function-bind/commit/4f8b57c02f2011fe9ae353d5e74e8745f0988af8) +- [Tests] remove `jscs` [`90eb2ed`](https://github.com/ljharb/function-bind/commit/90eb2edbeefd5b76cd6c3a482ea3454db169b31f) +- [meta] update `.gitignore` [`53fcdc3`](https://github.com/ljharb/function-bind/commit/53fcdc371cd66634d6e9b71c836a50f437e89fed) +- [Tests] up to `node` `v11.10`, `v10.15`, `v9.11`, `v8.15`, `v6.16`, `v4.9`; use `nvm install-latest-npm`; run audit script in tests [`1fe8f6e`](https://github.com/ljharb/function-bind/commit/1fe8f6e9aed0dfa8d8b3cdbd00c7f5ea0cd2b36e) +- [meta] add `auto-changelog` [`1921fcb`](https://github.com/ljharb/function-bind/commit/1921fcb5b416b63ffc4acad051b6aad5722f777d) +- [Robustness] remove runtime dependency on all builtins except `.apply` [`f743e61`](https://github.com/ljharb/function-bind/commit/f743e61aa6bb2360358c04d4884c9db853d118b7) +- Docs: enable badges; update wording [`503cb12`](https://github.com/ljharb/function-bind/commit/503cb12d998b5f91822776c73332c7adcd6355dd) +- [readme] update badges [`290c5db`](https://github.com/ljharb/function-bind/commit/290c5dbbbda7264efaeb886552a374b869a4bb48) +- [Tests] switch to nyc for coverage [`ea360ba`](https://github.com/ljharb/function-bind/commit/ea360ba907fc2601ed18d01a3827fa2d3533cdf8) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`cae5e9e`](https://github.com/ljharb/function-bind/commit/cae5e9e07a5578dc6df26c03ee22851ce05b943c) +- [meta] add `funding` field; create FUNDING.yml [`c9f4274`](https://github.com/ljharb/function-bind/commit/c9f4274aa80ea3aae9657a3938fdba41a3b04ca6) +- [Tests] fix eslint errors from #15 [`f69aaa2`](https://github.com/ljharb/function-bind/commit/f69aaa2beb2fdab4415bfb885760a699d0b9c964) +- [actions] fix permissions [`99a0cd9`](https://github.com/ljharb/function-bind/commit/99a0cd9f3b5bac223a0d572f081834cd73314be7) +- [meta] use `npmignore` to autogenerate an npmignore file [`f03b524`](https://github.com/ljharb/function-bind/commit/f03b524ca91f75a109a5d062f029122c86ecd1ae) +- [Dev Deps] update `@ljharb/eslint‑config`, `eslint`, `tape` [`7af9300`](https://github.com/ljharb/function-bind/commit/7af930023ae2ce7645489532821e4fbbcd7a2280) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `covert`, `tape` [`64a9127`](https://github.com/ljharb/function-bind/commit/64a9127ab0bd331b93d6572eaf6e9971967fc08c) +- [Tests] use `aud` instead of `npm audit` [`e75069c`](https://github.com/ljharb/function-bind/commit/e75069c50010a8fcce2a9ce2324934c35fdb4386) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`d03555c`](https://github.com/ljharb/function-bind/commit/d03555ca59dea3b71ce710045e4303b9e2619e28) +- [meta] add `safe-publish-latest` [`9c8f809`](https://github.com/ljharb/function-bind/commit/9c8f8092aed027d7e80c94f517aa892385b64f09) +- [Dev Deps] update `@ljharb/eslint-config`, `tape` [`baf6893`](https://github.com/ljharb/function-bind/commit/baf6893e27f5b59abe88bc1995e6f6ed1e527397) +- [meta] create SECURITY.md [`4db1779`](https://github.com/ljharb/function-bind/commit/4db17799f1f28ae294cb95e0081ca2b591c3911b) +- [Tests] add `npm run audit` [`c8b38ec`](https://github.com/ljharb/function-bind/commit/c8b38ec40ed3f85dabdee40ed4148f1748375bc2) +- Revert "Point to the correct file" [`05cdf0f`](https://github.com/ljharb/function-bind/commit/05cdf0fa205c6a3c5ba40bbedd1dfa9874f915c9) + +## [v1.1.1](https://github.com/ljharb/function-bind/compare/v1.1.0...v1.1.1) - 2017-08-28 + +### Commits + +- [Tests] up to `node` `v8`; newer npm breaks on older node; fix scripts [`817f7d2`](https://github.com/ljharb/function-bind/commit/817f7d28470fdbff8ef608d4d565dd4d1430bc5e) +- [Dev Deps] update `eslint`, `jscs`, `tape`, `@ljharb/eslint-config` [`854288b`](https://github.com/ljharb/function-bind/commit/854288b1b6f5c555f89aceb9eff1152510262084) +- [Dev Deps] update `tape`, `jscs`, `eslint`, `@ljharb/eslint-config` [`83e639f`](https://github.com/ljharb/function-bind/commit/83e639ff74e6cd6921285bccec22c1bcf72311bd) +- Only apps should have lockfiles [`5ed97f5`](https://github.com/ljharb/function-bind/commit/5ed97f51235c17774e0832e122abda0f3229c908) +- Use a SPDX-compliant “license†field. [`5feefea`](https://github.com/ljharb/function-bind/commit/5feefea0dc0193993e83e5df01ded424403a5381) + +## [v1.1.0](https://github.com/ljharb/function-bind/compare/v1.0.2...v1.1.0) - 2016-02-14 + +### Commits + +- Update `eslint`, `tape`; use my personal shared `eslint` config [`9c9062a`](https://github.com/ljharb/function-bind/commit/9c9062abbe9dd70b59ea2c3a3c3a81f29b457097) +- Add `npm run eslint` [`dd96c56`](https://github.com/ljharb/function-bind/commit/dd96c56720034a3c1ffee10b8a59a6f7c53e24ad) +- [New] return the native `bind` when available. [`82186e0`](https://github.com/ljharb/function-bind/commit/82186e03d73e580f95ff167e03f3582bed90ed72) +- [Dev Deps] update `tape`, `jscs`, `eslint`, `@ljharb/eslint-config` [`a3dd767`](https://github.com/ljharb/function-bind/commit/a3dd76720c795cb7f4586b0544efabf8aa107b8b) +- Update `eslint` [`3dae2f7`](https://github.com/ljharb/function-bind/commit/3dae2f7423de30a2d20313ddb1edc19660142fe9) +- Update `tape`, `covert`, `jscs` [`a181eee`](https://github.com/ljharb/function-bind/commit/a181eee0cfa24eb229c6e843a971f36e060a2f6a) +- [Tests] up to `node` `v5.6`, `v4.3` [`964929a`](https://github.com/ljharb/function-bind/commit/964929a6a4ddb36fb128de2bcc20af5e4f22e1ed) +- Test up to `io.js` `v2.1` [`2be7310`](https://github.com/ljharb/function-bind/commit/2be7310f2f74886a7124ca925be411117d41d5ea) +- Update `tape`, `jscs`, `eslint`, `@ljharb/eslint-config` [`45f3d68`](https://github.com/ljharb/function-bind/commit/45f3d6865c6ca93726abcef54febe009087af101) +- [Dev Deps] update `tape`, `jscs` [`6e1340d`](https://github.com/ljharb/function-bind/commit/6e1340d94642deaecad3e717825db641af4f8b1f) +- [Tests] up to `io.js` `v3.3`, `node` `v4.1` [`d9bad2b`](https://github.com/ljharb/function-bind/commit/d9bad2b778b1b3a6dd2876087b88b3acf319f8cc) +- Update `eslint` [`935590c`](https://github.com/ljharb/function-bind/commit/935590caa024ab356102e4858e8fc315b2ccc446) +- [Dev Deps] update `jscs`, `eslint`, `@ljharb/eslint-config` [`8c9a1ef`](https://github.com/ljharb/function-bind/commit/8c9a1efd848e5167887aa8501857a0940a480c57) +- Test on `io.js` `v2.2` [`9a3a38c`](https://github.com/ljharb/function-bind/commit/9a3a38c92013aed6e108666e7bd40969b84ac86e) +- Run `travis-ci` tests on `iojs` and `node` v0.12; speed up builds; allow 0.8 failures. [`69afc26`](https://github.com/ljharb/function-bind/commit/69afc2617405b147dd2a8d8ae73ca9e9283f18b4) +- [Dev Deps] Update `tape`, `eslint` [`36c1be0`](https://github.com/ljharb/function-bind/commit/36c1be0ab12b45fe5df6b0fdb01a5d5137fd0115) +- Update `tape`, `jscs` [`98d8303`](https://github.com/ljharb/function-bind/commit/98d8303cd5ca1c6b8f985469f86b0d44d7d45f6e) +- Update `jscs` [`9633a4e`](https://github.com/ljharb/function-bind/commit/9633a4e9fbf82051c240855166e468ba8ba0846f) +- Update `tape`, `jscs` [`c80ef0f`](https://github.com/ljharb/function-bind/commit/c80ef0f46efc9791e76fa50de4414092ac147831) +- Test up to `io.js` `v3.0` [`7e2c853`](https://github.com/ljharb/function-bind/commit/7e2c8537d52ab9cf5a655755561d8917684c0df4) +- Test on `io.js` `v2.4` [`5a199a2`](https://github.com/ljharb/function-bind/commit/5a199a27ba46795ba5eaf0845d07d4b8232895c9) +- Test on `io.js` `v2.3` [`a511b88`](https://github.com/ljharb/function-bind/commit/a511b8896de0bddf3b56862daa416c701f4d0453) +- Fixing a typo from 822b4e1938db02dc9584aa434fd3a45cb20caf43 [`732d6b6`](https://github.com/ljharb/function-bind/commit/732d6b63a9b33b45230e630dbcac7a10855d3266) +- Update `jscs` [`da52a48`](https://github.com/ljharb/function-bind/commit/da52a4886c06d6490f46ae30b15e4163ba08905d) +- Lock covert to v1.0.0. [`d6150fd`](https://github.com/ljharb/function-bind/commit/d6150fda1e6f486718ebdeff823333d9e48e7430) + +## [v1.0.2](https://github.com/ljharb/function-bind/compare/v1.0.1...v1.0.2) - 2014-10-04 + +## [v1.0.1](https://github.com/ljharb/function-bind/compare/v1.0.0...v1.0.1) - 2014-10-03 + +### Merged + +- make CI build faster [`#3`](https://github.com/ljharb/function-bind/pull/3) + +### Commits + +- Using my standard jscs.json [`d8ee94c`](https://github.com/ljharb/function-bind/commit/d8ee94c993eff0a84cf5744fe6a29627f5cffa1a) +- Adding `npm run lint` [`7571ab7`](https://github.com/ljharb/function-bind/commit/7571ab7dfdbd99b25a1dbb2d232622bd6f4f9c10) +- Using consistent indentation [`e91a1b1`](https://github.com/ljharb/function-bind/commit/e91a1b13a61e99ec1e530e299b55508f74218a95) +- Updating jscs [`7e17892`](https://github.com/ljharb/function-bind/commit/7e1789284bc629bc9c1547a61c9b227bbd8c7a65) +- Using consistent quotes [`c50b57f`](https://github.com/ljharb/function-bind/commit/c50b57fcd1c5ec38320979c837006069ebe02b77) +- Adding keywords [`cb94631`](https://github.com/ljharb/function-bind/commit/cb946314eed35f21186a25fb42fc118772f9ee00) +- Directly export a function expression instead of using a declaration, and relying on hoisting. [`5a33c5f`](https://github.com/ljharb/function-bind/commit/5a33c5f45642de180e0d207110bf7d1843ceb87c) +- Naming npm URL and badge in README; use SVG [`2aef8fc`](https://github.com/ljharb/function-bind/commit/2aef8fcb79d54e63a58ae557c4e60949e05d5e16) +- Naming deps URLs in README [`04228d7`](https://github.com/ljharb/function-bind/commit/04228d766670ee45ca24e98345c1f6a7621065b5) +- Naming travis-ci URLs in README; using SVG [`62c810c`](https://github.com/ljharb/function-bind/commit/62c810c2f54ced956cd4d4ab7b793055addfe36e) +- Make sure functions are invoked correctly (also passing coverage tests) [`2b289b4`](https://github.com/ljharb/function-bind/commit/2b289b4dfbf037ffcfa4dc95eb540f6165e9e43a) +- Removing the strict mode pragmas; they make tests fail. [`1aa701d`](https://github.com/ljharb/function-bind/commit/1aa701d199ddc3782476e8f7eef82679be97b845) +- Adding myself as a contributor [`85fd57b`](https://github.com/ljharb/function-bind/commit/85fd57b0860e5a7af42de9a287f3f265fc6d72fc) +- Adding strict mode pragmas [`915b08e`](https://github.com/ljharb/function-bind/commit/915b08e084c86a722eafe7245e21db74aa21ca4c) +- Adding devDeps URLs to README [`4ccc731`](https://github.com/ljharb/function-bind/commit/4ccc73112c1769859e4ca3076caf4086b3cba2cd) +- Fixing the description. [`a7a472c`](https://github.com/ljharb/function-bind/commit/a7a472cf649af515c635cf560fc478fbe48999c8) +- Using a function expression instead of a function declaration. [`b5d3e4e`](https://github.com/ljharb/function-bind/commit/b5d3e4ea6aaffc63888953eeb1fbc7ff45f1fa14) +- Updating tape [`f086be6`](https://github.com/ljharb/function-bind/commit/f086be6029fb56dde61a258c1340600fa174d1e0) +- Updating jscs [`5f9bdb3`](https://github.com/ljharb/function-bind/commit/5f9bdb375ab13ba48f30852aab94029520c54d71) +- Updating jscs [`9b409ba`](https://github.com/ljharb/function-bind/commit/9b409ba6118e23395a4e5d83ef39152aab9d3bfc) +- Run coverage as part of tests. [`8e1b6d4`](https://github.com/ljharb/function-bind/commit/8e1b6d459f047d1bd4fee814e01247c984c80bd0) +- Run linter as part of tests [`c1ca83f`](https://github.com/ljharb/function-bind/commit/c1ca83f832df94587d09e621beba682fabfaa987) +- Updating covert [`701e837`](https://github.com/ljharb/function-bind/commit/701e83774b57b4d3ef631e1948143f43a72f4bb9) + +## [v1.0.0](https://github.com/ljharb/function-bind/compare/v0.2.0...v1.0.0) - 2014-08-09 + +### Commits + +- Make sure old and unstable nodes don't fail Travis [`27adca3`](https://github.com/ljharb/function-bind/commit/27adca34a4ab6ad67b6dfde43942a1b103ce4d75) +- Fixing an issue when the bound function is called as a constructor in ES3. [`e20122d`](https://github.com/ljharb/function-bind/commit/e20122d267d92ce553859b280cbbea5d27c07731) +- Adding `npm run coverage` [`a2e29c4`](https://github.com/ljharb/function-bind/commit/a2e29c4ecaef9e2f6cd1603e868c139073375502) +- Updating tape [`b741168`](https://github.com/ljharb/function-bind/commit/b741168b12b235b1717ff696087645526b69213c) +- Upgrading tape [`63631a0`](https://github.com/ljharb/function-bind/commit/63631a04c7fbe97cc2fa61829cc27246d6986f74) +- Updating tape [`363cb46`](https://github.com/ljharb/function-bind/commit/363cb46dafb23cb3e347729a22f9448051d78464) + +## v0.2.0 - 2014-03-23 + +### Commits + +- Updating test coverage to match es5-shim. [`aa94d44`](https://github.com/ljharb/function-bind/commit/aa94d44b8f9d7f69f10e060db7709aa7a694e5d4) +- initial [`942ee07`](https://github.com/ljharb/function-bind/commit/942ee07e94e542d91798137bc4b80b926137e066) +- Setting the bound function's length properly. [`079f46a`](https://github.com/ljharb/function-bind/commit/079f46a2d3515b7c0b308c2c13fceb641f97ca25) +- Ensuring that some older browsers will throw when given a regex. [`36ac55b`](https://github.com/ljharb/function-bind/commit/36ac55b87f460d4330253c92870aa26fbfe8227f) +- Removing npm scripts that don't have dependencies [`9d2be60`](https://github.com/ljharb/function-bind/commit/9d2be600002cb8bc8606f8f3585ad3e05868c750) +- Updating tape [`297a4ac`](https://github.com/ljharb/function-bind/commit/297a4acc5464db381940aafb194d1c88f4e678f3) +- Skipping length tests for now. [`d9891ea`](https://github.com/ljharb/function-bind/commit/d9891ea4d2aaffa69f408339cdd61ff740f70565) +- don't take my tea [`dccd930`](https://github.com/ljharb/function-bind/commit/dccd930bfd60ea10cb178d28c97550c3bc8c1e07) diff --git a/node_modules/function-bind/LICENSE b/node_modules/function-bind/LICENSE new file mode 100644 index 0000000..62d6d23 --- /dev/null +++ b/node_modules/function-bind/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2013 Raynos. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/node_modules/function-bind/README.md b/node_modules/function-bind/README.md new file mode 100644 index 0000000..814c20b --- /dev/null +++ b/node_modules/function-bind/README.md @@ -0,0 +1,46 @@ +# function-bind [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] + +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Implementation of function.prototype.bind + +Old versions of phantomjs, Internet Explorer < 9, and node < 0.6 don't support `Function.prototype.bind`. + +## Example + +```js +Function.prototype.bind = require("function-bind") +``` + +## Installation + +`npm install function-bind` + +## Contributors + + - Raynos + +## MIT Licenced + +[package-url]: https://npmjs.org/package/function-bind +[npm-version-svg]: https://versionbadg.es/Raynos/function-bind.svg +[deps-svg]: https://david-dm.org/Raynos/function-bind.svg +[deps-url]: https://david-dm.org/Raynos/function-bind +[dev-deps-svg]: https://david-dm.org/Raynos/function-bind/dev-status.svg +[dev-deps-url]: https://david-dm.org/Raynos/function-bind#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/function-bind.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/function-bind.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/function-bind.svg +[downloads-url]: https://npm-stat.com/charts.html?package=function-bind +[codecov-image]: https://codecov.io/gh/Raynos/function-bind/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/Raynos/function-bind/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/Raynos/function-bind +[actions-url]: https://github.com/Raynos/function-bind/actions diff --git a/node_modules/function-bind/implementation.js b/node_modules/function-bind/implementation.js new file mode 100644 index 0000000..fd4384c --- /dev/null +++ b/node_modules/function-bind/implementation.js @@ -0,0 +1,84 @@ +'use strict'; + +/* eslint no-invalid-this: 1 */ + +var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; +var toStr = Object.prototype.toString; +var max = Math.max; +var funcType = '[object Function]'; + +var concatty = function concatty(a, b) { + var arr = []; + + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + + return arr; +}; + +var slicy = function slicy(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; +}; + +var joiny = function (arr, joiner) { + var str = ''; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; +}; + +module.exports = function bind(that) { + var target = this; + if (typeof target !== 'function' || toStr.apply(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slicy(arguments, 1); + + var bound; + var binder = function () { + if (this instanceof bound) { + var result = target.apply( + this, + concatty(args, arguments) + ); + if (Object(result) === result) { + return result; + } + return this; + } + return target.apply( + that, + concatty(args, arguments) + ); + + }; + + var boundLength = max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs[i] = '$' + i; + } + + bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); + + if (target.prototype) { + var Empty = function Empty() {}; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + + return bound; +}; diff --git a/node_modules/function-bind/index.js b/node_modules/function-bind/index.js new file mode 100644 index 0000000..3bb6b96 --- /dev/null +++ b/node_modules/function-bind/index.js @@ -0,0 +1,5 @@ +'use strict'; + +var implementation = require('./implementation'); + +module.exports = Function.prototype.bind || implementation; diff --git a/node_modules/function-bind/package.json b/node_modules/function-bind/package.json new file mode 100644 index 0000000..6185963 --- /dev/null +++ b/node_modules/function-bind/package.json @@ -0,0 +1,87 @@ +{ + "name": "function-bind", + "version": "1.1.2", + "description": "Implementation of Function.prototype.bind", + "keywords": [ + "function", + "bind", + "shim", + "es5" + ], + "author": "Raynos ", + "repository": { + "type": "git", + "url": "https://github.com/Raynos/function-bind.git" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "main": "index", + "homepage": "https://github.com/Raynos/function-bind", + "contributors": [ + { + "name": "Raynos" + }, + { + "name": "Jordan Harband", + "url": "https://github.com/ljharb" + } + ], + "bugs": { + "url": "https://github.com/Raynos/function-bind/issues", + "email": "raynos2@gmail.com" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "aud": "^2.0.3", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.1" + }, + "license": "MIT", + "scripts": { + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepack": "npmignore --auto --commentLines=autogenerated", + "pretest": "npm run lint", + "test": "npm run tests-only", + "posttest": "aud --production", + "tests-only": "nyc tape 'test/**/*.js'", + "lint": "eslint --ext=js,mjs .", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "testling": { + "files": "test/index.js", + "browsers": [ + "ie/8..latest", + "firefox/16..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} diff --git a/node_modules/function-bind/test/.eslintrc b/node_modules/function-bind/test/.eslintrc new file mode 100644 index 0000000..8a56d5b --- /dev/null +++ b/node_modules/function-bind/test/.eslintrc @@ -0,0 +1,9 @@ +{ + "rules": { + "array-bracket-newline": 0, + "array-element-newline": 0, + "max-statements-per-line": [2, { "max": 2 }], + "no-invalid-this": 0, + "no-magic-numbers": 0, + } +} diff --git a/node_modules/function-bind/test/index.js b/node_modules/function-bind/test/index.js new file mode 100644 index 0000000..2edecce --- /dev/null +++ b/node_modules/function-bind/test/index.js @@ -0,0 +1,252 @@ +// jscs:disable requireUseStrict + +var test = require('tape'); + +var functionBind = require('../implementation'); +var getCurrentContext = function () { return this; }; + +test('functionBind is a function', function (t) { + t.equal(typeof functionBind, 'function'); + t.end(); +}); + +test('non-functions', function (t) { + var nonFunctions = [true, false, [], {}, 42, 'foo', NaN, /a/g]; + t.plan(nonFunctions.length); + for (var i = 0; i < nonFunctions.length; ++i) { + try { functionBind.call(nonFunctions[i]); } catch (ex) { + t.ok(ex instanceof TypeError, 'throws when given ' + String(nonFunctions[i])); + } + } + t.end(); +}); + +test('without a context', function (t) { + t.test('binds properly', function (st) { + var args, context; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + context = this; + }) + }; + namespace.func(1, 2, 3); + st.deepEqual(args, [1, 2, 3]); + st.equal(context, getCurrentContext.call()); + st.end(); + }); + + t.test('binds properly, and still supplies bound arguments', function (st) { + var args, context; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + context = this; + }, undefined, 1, 2, 3) + }; + namespace.func(4, 5, 6); + st.deepEqual(args, [1, 2, 3, 4, 5, 6]); + st.equal(context, getCurrentContext.call()); + st.end(); + }); + + t.test('returns properly', function (st) { + var args; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + return this; + }, null) + }; + var context = namespace.func(1, 2, 3); + st.equal(context, getCurrentContext.call(), 'returned context is namespaced context'); + st.deepEqual(args, [1, 2, 3], 'passed arguments are correct'); + st.end(); + }); + + t.test('returns properly with bound arguments', function (st) { + var args; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + return this; + }, null, 1, 2, 3) + }; + var context = namespace.func(4, 5, 6); + st.equal(context, getCurrentContext.call(), 'returned context is namespaced context'); + st.deepEqual(args, [1, 2, 3, 4, 5, 6], 'passed arguments are correct'); + st.end(); + }); + + t.test('called as a constructor', function (st) { + var thunkify = function (value) { + return function () { return value; }; + }; + st.test('returns object value', function (sst) { + var expectedReturnValue = [1, 2, 3]; + var Constructor = functionBind.call(thunkify(expectedReturnValue), null); + var result = new Constructor(); + sst.equal(result, expectedReturnValue); + sst.end(); + }); + + st.test('does not return primitive value', function (sst) { + var Constructor = functionBind.call(thunkify(42), null); + var result = new Constructor(); + sst.notEqual(result, 42); + sst.end(); + }); + + st.test('object from bound constructor is instance of original and bound constructor', function (sst) { + var A = function (x) { + this.name = x || 'A'; + }; + var B = functionBind.call(A, null, 'B'); + + var result = new B(); + sst.ok(result instanceof B, 'result is instance of bound constructor'); + sst.ok(result instanceof A, 'result is instance of original constructor'); + sst.end(); + }); + + st.end(); + }); + + t.end(); +}); + +test('with a context', function (t) { + t.test('with no bound arguments', function (st) { + var args, context; + var boundContext = {}; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + context = this; + }, boundContext) + }; + namespace.func(1, 2, 3); + st.equal(context, boundContext, 'binds a context properly'); + st.deepEqual(args, [1, 2, 3], 'supplies passed arguments'); + st.end(); + }); + + t.test('with bound arguments', function (st) { + var args, context; + var boundContext = {}; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + context = this; + }, boundContext, 1, 2, 3) + }; + namespace.func(4, 5, 6); + st.equal(context, boundContext, 'binds a context properly'); + st.deepEqual(args, [1, 2, 3, 4, 5, 6], 'supplies bound and passed arguments'); + st.end(); + }); + + t.test('returns properly', function (st) { + var boundContext = {}; + var args; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + return this; + }, boundContext) + }; + var context = namespace.func(1, 2, 3); + st.equal(context, boundContext, 'returned context is bound context'); + st.notEqual(context, getCurrentContext.call(), 'returned context is not lexical context'); + st.deepEqual(args, [1, 2, 3], 'passed arguments are correct'); + st.end(); + }); + + t.test('returns properly with bound arguments', function (st) { + var boundContext = {}; + var args; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + return this; + }, boundContext, 1, 2, 3) + }; + var context = namespace.func(4, 5, 6); + st.equal(context, boundContext, 'returned context is bound context'); + st.notEqual(context, getCurrentContext.call(), 'returned context is not lexical context'); + st.deepEqual(args, [1, 2, 3, 4, 5, 6], 'passed arguments are correct'); + st.end(); + }); + + t.test('passes the correct arguments when called as a constructor', function (st) { + var expected = { name: 'Correct' }; + var namespace = { + Func: functionBind.call(function (arg) { + return arg; + }, { name: 'Incorrect' }) + }; + var returned = new namespace.Func(expected); + st.equal(returned, expected, 'returns the right arg when called as a constructor'); + st.end(); + }); + + t.test('has the new instance\'s context when called as a constructor', function (st) { + var actualContext; + var expectedContext = { foo: 'bar' }; + var namespace = { + Func: functionBind.call(function () { + actualContext = this; + }, expectedContext) + }; + var result = new namespace.Func(); + st.equal(result instanceof namespace.Func, true); + st.notEqual(actualContext, expectedContext); + st.end(); + }); + + t.end(); +}); + +test('bound function length', function (t) { + t.test('sets a correct length without thisArg', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }); + st.equal(subject.length, 3); + st.equal(subject(1, 2, 3), 6); + st.end(); + }); + + t.test('sets a correct length with thisArg', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, {}); + st.equal(subject.length, 3); + st.equal(subject(1, 2, 3), 6); + st.end(); + }); + + t.test('sets a correct length without thisArg and first argument', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, undefined, 1); + st.equal(subject.length, 2); + st.equal(subject(2, 3), 6); + st.end(); + }); + + t.test('sets a correct length with thisArg and first argument', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, {}, 1); + st.equal(subject.length, 2); + st.equal(subject(2, 3), 6); + st.end(); + }); + + t.test('sets a correct length without thisArg and too many arguments', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, undefined, 1, 2, 3, 4); + st.equal(subject.length, 0); + st.equal(subject(), 6); + st.end(); + }); + + t.test('sets a correct length with thisArg and too many arguments', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, {}, 1, 2, 3, 4); + st.equal(subject.length, 0); + st.equal(subject(), 6); + st.end(); + }); +}); diff --git a/node_modules/get-intrinsic/.eslintrc b/node_modules/get-intrinsic/.eslintrc new file mode 100644 index 0000000..235fb79 --- /dev/null +++ b/node_modules/get-intrinsic/.eslintrc @@ -0,0 +1,42 @@ +{ + "root": true, + + "extends": "@ljharb", + + "env": { + "es6": true, + "es2017": true, + "es2020": true, + "es2021": true, + "es2022": true, + }, + + "globals": { + "Float16Array": false, + }, + + "rules": { + "array-bracket-newline": 0, + "complexity": 0, + "eqeqeq": [2, "allow-null"], + "func-name-matching": 0, + "id-length": 0, + "max-lines": 0, + "max-lines-per-function": [2, 90], + "max-params": [2, 4], + "max-statements": 0, + "max-statements-per-line": [2, { "max": 2 }], + "multiline-comment-style": 0, + "no-magic-numbers": 0, + "sort-keys": 0, + }, + + "overrides": [ + { + "files": "test/**", + "rules": { + "new-cap": 0, + }, + }, + ], +} diff --git a/node_modules/get-intrinsic/.github/FUNDING.yml b/node_modules/get-intrinsic/.github/FUNDING.yml new file mode 100644 index 0000000..8e8da0d --- /dev/null +++ b/node_modules/get-intrinsic/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/get-intrinsic +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/get-intrinsic/.nycrc b/node_modules/get-intrinsic/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/node_modules/get-intrinsic/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/get-intrinsic/CHANGELOG.md b/node_modules/get-intrinsic/CHANGELOG.md new file mode 100644 index 0000000..ce1dd98 --- /dev/null +++ b/node_modules/get-intrinsic/CHANGELOG.md @@ -0,0 +1,186 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.3.0](https://github.com/ljharb/get-intrinsic/compare/v1.2.7...v1.3.0) - 2025-02-22 + +### Commits + +- [Dev Deps] update `es-abstract`, `es-value-fixtures`, `for-each`, `object-inspect` [`9b61553`](https://github.com/ljharb/get-intrinsic/commit/9b61553c587f1c1edbd435597e88c7d387da97dd) +- [Deps] update `call-bind-apply-helpers`, `es-object-atoms`, `get-proto` [`a341fee`](https://github.com/ljharb/get-intrinsic/commit/a341fee0f39a403b0f0069e82c97642d5eb11043) +- [New] add `Float16Array` [`de22116`](https://github.com/ljharb/get-intrinsic/commit/de22116b492fb989a0341bceb6e573abfaed73dc) + +## [v1.2.7](https://github.com/ljharb/get-intrinsic/compare/v1.2.6...v1.2.7) - 2025-01-02 + +### Commits + +- [Refactor] use `get-proto` directly [`00ab955`](https://github.com/ljharb/get-intrinsic/commit/00ab95546a0980c8ad42a84253daaa8d2adcedf9) +- [Deps] update `math-intrinsics` [`c716cdd`](https://github.com/ljharb/get-intrinsic/commit/c716cdd6bbe36b438057025561b8bb5a879ac8a0) +- [Dev Deps] update `call-bound`, `es-abstract` [`dc648a6`](https://github.com/ljharb/get-intrinsic/commit/dc648a67eb359037dff8d8619bfa71d86debccb1) + +## [v1.2.6](https://github.com/ljharb/get-intrinsic/compare/v1.2.5...v1.2.6) - 2024-12-11 + +### Commits + +- [Refactor] use `math-intrinsics` [`841be86`](https://github.com/ljharb/get-intrinsic/commit/841be8641a9254c4c75483b30c8871b5d5065926) +- [Refactor] use `es-object-atoms` [`42057df`](https://github.com/ljharb/get-intrinsic/commit/42057dfa16f66f64787e66482af381cc6f31d2c1) +- [Deps] update `call-bind-apply-helpers` [`45afa24`](https://github.com/ljharb/get-intrinsic/commit/45afa24a9ee4d6d3c172db1f555b16cb27843ef4) +- [Dev Deps] update `call-bound` [`9cba9c6`](https://github.com/ljharb/get-intrinsic/commit/9cba9c6e70212bc163b7a5529cb25df46071646f) + +## [v1.2.5](https://github.com/ljharb/get-intrinsic/compare/v1.2.4...v1.2.5) - 2024-12-06 + +### Commits + +- [actions] split out node 10-20, and 20+ [`6e2b9dd`](https://github.com/ljharb/get-intrinsic/commit/6e2b9dd23902665681ebe453256ccfe21d7966f0) +- [Refactor] use `dunder-proto` and `call-bind-apply-helpers` instead of `has-proto` [`c095d17`](https://github.com/ljharb/get-intrinsic/commit/c095d179ad0f4fbfff20c8a3e0cb4fe668018998) +- [Refactor] use `gopd` [`9841d5b`](https://github.com/ljharb/get-intrinsic/commit/9841d5b35f7ab4fd2d193f0c741a50a077920e90) +- [Dev Deps] update `@ljharb/eslint-config`, `auto-changelog`, `es-abstract`, `es-value-fixtures`, `gopd`, `mock-property`, `object-inspect`, `tape` [`2d07e01`](https://github.com/ljharb/get-intrinsic/commit/2d07e01310cee2cbaedfead6903df128b1f5d425) +- [Deps] update `gopd`, `has-proto`, `has-symbols`, `hasown` [`974d8bf`](https://github.com/ljharb/get-intrinsic/commit/974d8bf5baad7939eef35c25cc1dd88c10a30fa6) +- [Dev Deps] update `call-bind`, `es-abstract`, `tape` [`df9dde1`](https://github.com/ljharb/get-intrinsic/commit/df9dde178186631ab8a3165ede056549918ce4bc) +- [Refactor] cache `es-define-property` as well [`43ef543`](https://github.com/ljharb/get-intrinsic/commit/43ef543cb02194401420e3a914a4ca9168691926) +- [Deps] update `has-proto`, `has-symbols`, `hasown` [`ad4949d`](https://github.com/ljharb/get-intrinsic/commit/ad4949d5467316505aad89bf75f9417ed782f7af) +- [Tests] use `call-bound` directly [`ad5c406`](https://github.com/ljharb/get-intrinsic/commit/ad5c4069774bfe90e520a35eead5fe5ca9d69e80) +- [Deps] update `has-proto`, `hasown` [`45414ca`](https://github.com/ljharb/get-intrinsic/commit/45414caa312333a2798953682c68f85c550627dd) +- [Tests] replace `aud` with `npm audit` [`18d3509`](https://github.com/ljharb/get-intrinsic/commit/18d3509f79460e7924da70409ee81e5053087523) +- [Deps] update `es-define-property` [`aadaa3b`](https://github.com/ljharb/get-intrinsic/commit/aadaa3b2188d77ad9bff394ce5d4249c49eb21f5) +- [Dev Deps] add missing peer dep [`c296a16`](https://github.com/ljharb/get-intrinsic/commit/c296a16246d0c9a5981944f4cc5cf61fbda0cf6a) + +## [v1.2.4](https://github.com/ljharb/get-intrinsic/compare/v1.2.3...v1.2.4) - 2024-02-05 + +### Commits + +- [Refactor] use all 7 <+ ES6 Errors from `es-errors` [`bcac811`](https://github.com/ljharb/get-intrinsic/commit/bcac811abdc1c982e12abf848a410d6aae148d14) + +## [v1.2.3](https://github.com/ljharb/get-intrinsic/compare/v1.2.2...v1.2.3) - 2024-02-03 + +### Commits + +- [Refactor] use `es-errors`, so things that only need those do not need `get-intrinsic` [`f11db9c`](https://github.com/ljharb/get-intrinsic/commit/f11db9c4fb97d87bbd53d3c73ac6b3db3613ad3b) +- [Dev Deps] update `aud`, `es-abstract`, `mock-property`, `npmignore` [`b7ac7d1`](https://github.com/ljharb/get-intrinsic/commit/b7ac7d1616fefb03877b1aed0c8f8d61aad32b6c) +- [meta] simplify `exports` [`faa0cc6`](https://github.com/ljharb/get-intrinsic/commit/faa0cc618e2830ffb51a8202490b0c215d965cbc) +- [meta] add missing `engines.node` [`774dd0b`](https://github.com/ljharb/get-intrinsic/commit/774dd0b3e8f741c3f05a6322d124d6087f146af1) +- [Dev Deps] update `tape` [`5828e8e`](https://github.com/ljharb/get-intrinsic/commit/5828e8e4a04e69312e87a36c0ea39428a7a4c3d8) +- [Robustness] use null objects for lookups [`eb9a11f`](https://github.com/ljharb/get-intrinsic/commit/eb9a11fa9eb3e13b193fcc05a7fb814341b1a7b7) +- [meta] add `sideEffects` flag [`89bcc7a`](https://github.com/ljharb/get-intrinsic/commit/89bcc7a42e19bf07b7c21e3094d5ab177109e6d2) + +## [v1.2.2](https://github.com/ljharb/get-intrinsic/compare/v1.2.1...v1.2.2) - 2023-10-20 + +### Commits + +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `call-bind`, `es-abstract`, `mock-property`, `object-inspect`, `tape` [`f51bcf2`](https://github.com/ljharb/get-intrinsic/commit/f51bcf26412d58d17ce17c91c9afd0ad271f0762) +- [Refactor] use `hasown` instead of `has` [`18d14b7`](https://github.com/ljharb/get-intrinsic/commit/18d14b799bea6b5765e1cec91890830cbcdb0587) +- [Deps] update `function-bind` [`6e109c8`](https://github.com/ljharb/get-intrinsic/commit/6e109c81e03804cc5e7824fb64353cdc3d8ee2c7) + +## [v1.2.1](https://github.com/ljharb/get-intrinsic/compare/v1.2.0...v1.2.1) - 2023-05-13 + +### Commits + +- [Fix] avoid a crash in envs without `__proto__` [`7bad8d0`](https://github.com/ljharb/get-intrinsic/commit/7bad8d061bf8721733b58b73a2565af2b6756b64) +- [Dev Deps] update `es-abstract` [`c60e6b7`](https://github.com/ljharb/get-intrinsic/commit/c60e6b7b4cf9660c7f27ed970970fd55fac48dc5) + +## [v1.2.0](https://github.com/ljharb/get-intrinsic/compare/v1.1.3...v1.2.0) - 2023-01-19 + +### Commits + +- [actions] update checkout action [`ca6b12f`](https://github.com/ljharb/get-intrinsic/commit/ca6b12f31eaacea4ea3b055e744cd61623385ffb) +- [Dev Deps] update `@ljharb/eslint-config`, `es-abstract`, `object-inspect`, `tape` [`41a3727`](https://github.com/ljharb/get-intrinsic/commit/41a3727d0026fa04273ae216a5f8e12eefd72da8) +- [Fix] ensure `Error.prototype` is undeniable [`c511e97`](https://github.com/ljharb/get-intrinsic/commit/c511e97ae99c764c4524b540dee7a70757af8da3) +- [Dev Deps] update `aud`, `es-abstract`, `tape` [`1bef8a8`](https://github.com/ljharb/get-intrinsic/commit/1bef8a8fd439ebb80863199b6189199e0851ac67) +- [Dev Deps] update `aud`, `es-abstract` [`0d41f16`](https://github.com/ljharb/get-intrinsic/commit/0d41f16bcd500bc28b7bfc98043ebf61ea081c26) +- [New] add `BigInt64Array` and `BigUint64Array` [`a6cca25`](https://github.com/ljharb/get-intrinsic/commit/a6cca25f29635889b7e9bd669baf9e04be90e48c) +- [Tests] use `gopd` [`ecf7722`](https://github.com/ljharb/get-intrinsic/commit/ecf7722240d15cfd16edda06acf63359c10fb9bd) + +## [v1.1.3](https://github.com/ljharb/get-intrinsic/compare/v1.1.2...v1.1.3) - 2022-09-12 + +### Commits + +- [Dev Deps] update `es-abstract`, `es-value-fixtures`, `tape` [`07ff291`](https://github.com/ljharb/get-intrinsic/commit/07ff291816406ebe5a12d7f16965bde0942dd688) +- [Fix] properly check for % signs [`50ac176`](https://github.com/ljharb/get-intrinsic/commit/50ac1760fe99c227e64eabde76e9c0e44cd881b5) + +## [v1.1.2](https://github.com/ljharb/get-intrinsic/compare/v1.1.1...v1.1.2) - 2022-06-08 + +### Fixed + +- [Fix] properly validate against extra % signs [`#16`](https://github.com/ljharb/get-intrinsic/issues/16) + +### Commits + +- [actions] reuse common workflows [`0972547`](https://github.com/ljharb/get-intrinsic/commit/0972547efd0abc863fe4c445a6ca7eb4f8c6901d) +- [meta] use `npmignore` to autogenerate an npmignore file [`5ba0b51`](https://github.com/ljharb/get-intrinsic/commit/5ba0b51d8d8d4f1c31d426d74abc0770fd106bad) +- [actions] use `node/install` instead of `node/run`; use `codecov` action [`c364492`](https://github.com/ljharb/get-intrinsic/commit/c364492af4af51333e6f81c0bf21fd3d602c3661) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `es-abstract`, `object-inspect`, `tape` [`dc04dad`](https://github.com/ljharb/get-intrinsic/commit/dc04dad86f6e5608775a2640cb0db5927ae29ed9) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `es-abstract`, `object-inspect`, `safe-publish-latest`, `tape` [`1c14059`](https://github.com/ljharb/get-intrinsic/commit/1c1405984e86dd2dc9366c15d8a0294a96a146a5) +- [Tests] use `mock-property` [`b396ef0`](https://github.com/ljharb/get-intrinsic/commit/b396ef05bb73b1d699811abd64b0d9b97997fdda) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `object-inspect`, `tape` [`c2c758d`](https://github.com/ljharb/get-intrinsic/commit/c2c758d3b90af4fef0a76910d8d3c292ec8d1d3e) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `es-abstract`, `es-value-fixtures`, `object-inspect`, `tape` [`29e3c09`](https://github.com/ljharb/get-intrinsic/commit/29e3c091c2bf3e17099969847e8729d0e46896de) +- [actions] update codecov uploader [`8cbc141`](https://github.com/ljharb/get-intrinsic/commit/8cbc1418940d7a8941f3a7985cbc4ac095c5e13d) +- [Dev Deps] update `@ljharb/eslint-config`, `es-abstract`, `es-value-fixtures`, `object-inspect`, `tape` [`10b6f5c`](https://github.com/ljharb/get-intrinsic/commit/10b6f5c02593fb3680c581d696ac124e30652932) +- [readme] add github actions/codecov badges [`4e25400`](https://github.com/ljharb/get-intrinsic/commit/4e25400d9f51ae9eb059cbe22d9144e70ea214e8) +- [Tests] use `for-each` instead of `foreach` [`c05b957`](https://github.com/ljharb/get-intrinsic/commit/c05b957ad9a7bc7721af7cc9e9be1edbfe057496) +- [Dev Deps] update `es-abstract` [`29b05ae`](https://github.com/ljharb/get-intrinsic/commit/29b05aec3e7330e9ad0b8e0f685a9112c20cdd97) +- [meta] use `prepublishOnly` script for npm 7+ [`95c285d`](https://github.com/ljharb/get-intrinsic/commit/95c285da810516057d3bbfa871176031af38f05d) +- [Deps] update `has-symbols` [`593cb4f`](https://github.com/ljharb/get-intrinsic/commit/593cb4fb38e7922e40e42c183f45274b636424cd) +- [readme] fix repo URLs [`1c8305b`](https://github.com/ljharb/get-intrinsic/commit/1c8305b5365827c9b6fc785434aac0e1328ff2f5) +- [Deps] update `has-symbols` [`c7138b6`](https://github.com/ljharb/get-intrinsic/commit/c7138b6c6d73132d859471fb8c13304e1e7c8b20) +- [Dev Deps] remove unused `has-bigints` [`bd63aff`](https://github.com/ljharb/get-intrinsic/commit/bd63aff6ad8f3a986c557fcda2914187bdaab359) + +## [v1.1.1](https://github.com/ljharb/get-intrinsic/compare/v1.1.0...v1.1.1) - 2021-02-03 + +### Fixed + +- [meta] export `./package.json` [`#9`](https://github.com/ljharb/get-intrinsic/issues/9) + +### Commits + +- [readme] flesh out the readme; use `evalmd` [`d12f12c`](https://github.com/ljharb/get-intrinsic/commit/d12f12c15345a0a0772cc65a7c64369529abd614) +- [eslint] set up proper globals config [`5a8c098`](https://github.com/ljharb/get-intrinsic/commit/5a8c0984e3319d1ac0e64b102f8ec18b64e79f36) +- [Dev Deps] update `eslint` [`7b9a5c0`](https://github.com/ljharb/get-intrinsic/commit/7b9a5c0d31a90ca1a1234181c74988fb046701cd) + +## [v1.1.0](https://github.com/ljharb/get-intrinsic/compare/v1.0.2...v1.1.0) - 2021-01-25 + +### Fixed + +- [Refactor] delay `Function` eval until syntax-derived values are requested [`#3`](https://github.com/ljharb/get-intrinsic/issues/3) + +### Commits + +- [Tests] migrate tests to Github Actions [`2ab762b`](https://github.com/ljharb/get-intrinsic/commit/2ab762b48164aea8af37a40ba105bbc8246ab8c4) +- [meta] do not publish github action workflow files [`5e7108e`](https://github.com/ljharb/get-intrinsic/commit/5e7108e4768b244d48d9567ba4f8a6cab9c65b8e) +- [Tests] add some coverage [`01ac7a8`](https://github.com/ljharb/get-intrinsic/commit/01ac7a87ac29738567e8524cd8c9e026b1fa8cb3) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `call-bind`, `es-abstract`, `tape`; add `call-bind` [`911b672`](https://github.com/ljharb/get-intrinsic/commit/911b672fbffae433a96924c6ce013585e425f4b7) +- [Refactor] rearrange evalled constructors a bit [`7e7e4bf`](https://github.com/ljharb/get-intrinsic/commit/7e7e4bf583f3799c8ac1c6c5e10d2cb553957347) +- [meta] add Automatic Rebase and Require Allow Edits workflows [`0199968`](https://github.com/ljharb/get-intrinsic/commit/01999687a263ffce0a3cb011dfbcb761754aedbc) + +## [v1.0.2](https://github.com/ljharb/get-intrinsic/compare/v1.0.1...v1.0.2) - 2020-12-17 + +### Commits + +- [Fix] Throw for non‑existent intrinsics [`68f873b`](https://github.com/ljharb/get-intrinsic/commit/68f873b013c732a05ad6f5fc54f697e55515461b) +- [Fix] Throw for non‑existent segments in the intrinsic path [`8325dee`](https://github.com/ljharb/get-intrinsic/commit/8325deee43128f3654d3399aa9591741ebe17b21) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `has-bigints`, `object-inspect` [`0c227a7`](https://github.com/ljharb/get-intrinsic/commit/0c227a7d8b629166f25715fd242553892e458525) +- [meta] do not lint coverage output [`70d2419`](https://github.com/ljharb/get-intrinsic/commit/70d24199b620043cd9110fc5f426d214ebe21dc9) + +## [v1.0.1](https://github.com/ljharb/get-intrinsic/compare/v1.0.0...v1.0.1) - 2020-10-30 + +### Commits + +- [Tests] gather coverage data on every job [`d1d280d`](https://github.com/ljharb/get-intrinsic/commit/d1d280dec714e3f0519cc877dbcb193057d9cac6) +- [Fix] add missing dependencies [`5031771`](https://github.com/ljharb/get-intrinsic/commit/5031771bb1095b38be88ce7c41d5de88718e432e) +- [Tests] use `es-value-fixtures` [`af48765`](https://github.com/ljharb/get-intrinsic/commit/af48765a23c5323fb0b6b38dbf00eb5099c7bebc) + +## v1.0.0 - 2020-10-29 + +### Commits + +- Implementation [`bbce57c`](https://github.com/ljharb/get-intrinsic/commit/bbce57c6f33d05b2d8d3efa273ceeb3ee01127bb) +- Tests [`17b4f0d`](https://github.com/ljharb/get-intrinsic/commit/17b4f0d56dea6b4059b56fc30ef3ee4d9500ebc2) +- Initial commit [`3153294`](https://github.com/ljharb/get-intrinsic/commit/31532948de363b0a27dd9fd4649e7b7028ec4b44) +- npm init [`fb326c4`](https://github.com/ljharb/get-intrinsic/commit/fb326c4d2817c8419ec31de1295f06bb268a7902) +- [meta] add Automatic Rebase and Require Allow Edits workflows [`48862fb`](https://github.com/ljharb/get-intrinsic/commit/48862fb2508c8f6a57968e6d08b7c883afc9d550) +- [meta] add `auto-changelog` [`5f28ad0`](https://github.com/ljharb/get-intrinsic/commit/5f28ad019e060a353d8028f9f2591a9cc93074a1) +- [meta] add "funding"; create `FUNDING.yml` [`c2bbdde`](https://github.com/ljharb/get-intrinsic/commit/c2bbddeba73a875be61484ee4680b129a6d4e0a1) +- [Tests] add `npm run lint` [`0a84b98`](https://github.com/ljharb/get-intrinsic/commit/0a84b98b22b7cf7a748666f705b0003a493c35fd) +- Only apps should have lockfiles [`9586c75`](https://github.com/ljharb/get-intrinsic/commit/9586c75866c1ee678e4d5d4dbbdef6997e511b05) diff --git a/node_modules/get-intrinsic/LICENSE b/node_modules/get-intrinsic/LICENSE new file mode 100644 index 0000000..48f05d0 --- /dev/null +++ b/node_modules/get-intrinsic/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/get-intrinsic/README.md b/node_modules/get-intrinsic/README.md new file mode 100644 index 0000000..3aa0bba --- /dev/null +++ b/node_modules/get-intrinsic/README.md @@ -0,0 +1,71 @@ +# get-intrinsic [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Get and robustly cache all JS language-level intrinsics at first require time. + +See the syntax described [in the JS spec](https://tc39.es/ecma262/#sec-well-known-intrinsic-objects) for reference. + +## Example + +```js +var GetIntrinsic = require('get-intrinsic'); +var assert = require('assert'); + +// static methods +assert.equal(GetIntrinsic('%Math.pow%'), Math.pow); +assert.equal(Math.pow(2, 3), 8); +assert.equal(GetIntrinsic('%Math.pow%')(2, 3), 8); +delete Math.pow; +assert.equal(GetIntrinsic('%Math.pow%')(2, 3), 8); + +// instance methods +var arr = [1]; +assert.equal(GetIntrinsic('%Array.prototype.push%'), Array.prototype.push); +assert.deepEqual(arr, [1]); + +arr.push(2); +assert.deepEqual(arr, [1, 2]); + +GetIntrinsic('%Array.prototype.push%').call(arr, 3); +assert.deepEqual(arr, [1, 2, 3]); + +delete Array.prototype.push; +GetIntrinsic('%Array.prototype.push%').call(arr, 4); +assert.deepEqual(arr, [1, 2, 3, 4]); + +// missing features +delete JSON.parse; // to simulate a real intrinsic that is missing in the environment +assert.throws(() => GetIntrinsic('%JSON.parse%')); +assert.equal(undefined, GetIntrinsic('%JSON.parse%', true)); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/get-intrinsic +[npm-version-svg]: https://versionbadg.es/ljharb/get-intrinsic.svg +[deps-svg]: https://david-dm.org/ljharb/get-intrinsic.svg +[deps-url]: https://david-dm.org/ljharb/get-intrinsic +[dev-deps-svg]: https://david-dm.org/ljharb/get-intrinsic/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/get-intrinsic#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/get-intrinsic.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/get-intrinsic.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/get-intrinsic.svg +[downloads-url]: https://npm-stat.com/charts.html?package=get-intrinsic +[codecov-image]: https://codecov.io/gh/ljharb/get-intrinsic/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/get-intrinsic/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/get-intrinsic +[actions-url]: https://github.com/ljharb/get-intrinsic/actions diff --git a/node_modules/get-intrinsic/index.js b/node_modules/get-intrinsic/index.js new file mode 100644 index 0000000..bd1d94b --- /dev/null +++ b/node_modules/get-intrinsic/index.js @@ -0,0 +1,378 @@ +'use strict'; + +var undefined; + +var $Object = require('es-object-atoms'); + +var $Error = require('es-errors'); +var $EvalError = require('es-errors/eval'); +var $RangeError = require('es-errors/range'); +var $ReferenceError = require('es-errors/ref'); +var $SyntaxError = require('es-errors/syntax'); +var $TypeError = require('es-errors/type'); +var $URIError = require('es-errors/uri'); + +var abs = require('math-intrinsics/abs'); +var floor = require('math-intrinsics/floor'); +var max = require('math-intrinsics/max'); +var min = require('math-intrinsics/min'); +var pow = require('math-intrinsics/pow'); +var round = require('math-intrinsics/round'); +var sign = require('math-intrinsics/sign'); + +var $Function = Function; + +// eslint-disable-next-line consistent-return +var getEvalledConstructor = function (expressionSyntax) { + try { + return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')(); + } catch (e) {} +}; + +var $gOPD = require('gopd'); +var $defineProperty = require('es-define-property'); + +var throwTypeError = function () { + throw new $TypeError(); +}; +var ThrowTypeError = $gOPD + ? (function () { + try { + // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties + arguments.callee; // IE 8 does not throw here + return throwTypeError; + } catch (calleeThrows) { + try { + // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '') + return $gOPD(arguments, 'callee').get; + } catch (gOPDthrows) { + return throwTypeError; + } + } + }()) + : throwTypeError; + +var hasSymbols = require('has-symbols')(); + +var getProto = require('get-proto'); +var $ObjectGPO = require('get-proto/Object.getPrototypeOf'); +var $ReflectGPO = require('get-proto/Reflect.getPrototypeOf'); + +var $apply = require('call-bind-apply-helpers/functionApply'); +var $call = require('call-bind-apply-helpers/functionCall'); + +var needsEval = {}; + +var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array); + +var INTRINSICS = { + __proto__: null, + '%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError, + '%Array%': Array, + '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer, + '%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined, + '%AsyncFromSyncIteratorPrototype%': undefined, + '%AsyncFunction%': needsEval, + '%AsyncGenerator%': needsEval, + '%AsyncGeneratorFunction%': needsEval, + '%AsyncIteratorPrototype%': needsEval, + '%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics, + '%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt, + '%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array, + '%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array, + '%Boolean%': Boolean, + '%DataView%': typeof DataView === 'undefined' ? undefined : DataView, + '%Date%': Date, + '%decodeURI%': decodeURI, + '%decodeURIComponent%': decodeURIComponent, + '%encodeURI%': encodeURI, + '%encodeURIComponent%': encodeURIComponent, + '%Error%': $Error, + '%eval%': eval, // eslint-disable-line no-eval + '%EvalError%': $EvalError, + '%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array, + '%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array, + '%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array, + '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry, + '%Function%': $Function, + '%GeneratorFunction%': needsEval, + '%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array, + '%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array, + '%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array, + '%isFinite%': isFinite, + '%isNaN%': isNaN, + '%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined, + '%JSON%': typeof JSON === 'object' ? JSON : undefined, + '%Map%': typeof Map === 'undefined' ? undefined : Map, + '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()), + '%Math%': Math, + '%Number%': Number, + '%Object%': $Object, + '%Object.getOwnPropertyDescriptor%': $gOPD, + '%parseFloat%': parseFloat, + '%parseInt%': parseInt, + '%Promise%': typeof Promise === 'undefined' ? undefined : Promise, + '%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy, + '%RangeError%': $RangeError, + '%ReferenceError%': $ReferenceError, + '%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect, + '%RegExp%': RegExp, + '%Set%': typeof Set === 'undefined' ? undefined : Set, + '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()), + '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer, + '%String%': String, + '%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined, + '%Symbol%': hasSymbols ? Symbol : undefined, + '%SyntaxError%': $SyntaxError, + '%ThrowTypeError%': ThrowTypeError, + '%TypedArray%': TypedArray, + '%TypeError%': $TypeError, + '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array, + '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray, + '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array, + '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array, + '%URIError%': $URIError, + '%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap, + '%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef, + '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet, + + '%Function.prototype.call%': $call, + '%Function.prototype.apply%': $apply, + '%Object.defineProperty%': $defineProperty, + '%Object.getPrototypeOf%': $ObjectGPO, + '%Math.abs%': abs, + '%Math.floor%': floor, + '%Math.max%': max, + '%Math.min%': min, + '%Math.pow%': pow, + '%Math.round%': round, + '%Math.sign%': sign, + '%Reflect.getPrototypeOf%': $ReflectGPO +}; + +if (getProto) { + try { + null.error; // eslint-disable-line no-unused-expressions + } catch (e) { + // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229 + var errorProto = getProto(getProto(e)); + INTRINSICS['%Error.prototype%'] = errorProto; + } +} + +var doEval = function doEval(name) { + var value; + if (name === '%AsyncFunction%') { + value = getEvalledConstructor('async function () {}'); + } else if (name === '%GeneratorFunction%') { + value = getEvalledConstructor('function* () {}'); + } else if (name === '%AsyncGeneratorFunction%') { + value = getEvalledConstructor('async function* () {}'); + } else if (name === '%AsyncGenerator%') { + var fn = doEval('%AsyncGeneratorFunction%'); + if (fn) { + value = fn.prototype; + } + } else if (name === '%AsyncIteratorPrototype%') { + var gen = doEval('%AsyncGenerator%'); + if (gen && getProto) { + value = getProto(gen.prototype); + } + } + + INTRINSICS[name] = value; + + return value; +}; + +var LEGACY_ALIASES = { + __proto__: null, + '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'], + '%ArrayPrototype%': ['Array', 'prototype'], + '%ArrayProto_entries%': ['Array', 'prototype', 'entries'], + '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'], + '%ArrayProto_keys%': ['Array', 'prototype', 'keys'], + '%ArrayProto_values%': ['Array', 'prototype', 'values'], + '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'], + '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'], + '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'], + '%BooleanPrototype%': ['Boolean', 'prototype'], + '%DataViewPrototype%': ['DataView', 'prototype'], + '%DatePrototype%': ['Date', 'prototype'], + '%ErrorPrototype%': ['Error', 'prototype'], + '%EvalErrorPrototype%': ['EvalError', 'prototype'], + '%Float32ArrayPrototype%': ['Float32Array', 'prototype'], + '%Float64ArrayPrototype%': ['Float64Array', 'prototype'], + '%FunctionPrototype%': ['Function', 'prototype'], + '%Generator%': ['GeneratorFunction', 'prototype'], + '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'], + '%Int8ArrayPrototype%': ['Int8Array', 'prototype'], + '%Int16ArrayPrototype%': ['Int16Array', 'prototype'], + '%Int32ArrayPrototype%': ['Int32Array', 'prototype'], + '%JSONParse%': ['JSON', 'parse'], + '%JSONStringify%': ['JSON', 'stringify'], + '%MapPrototype%': ['Map', 'prototype'], + '%NumberPrototype%': ['Number', 'prototype'], + '%ObjectPrototype%': ['Object', 'prototype'], + '%ObjProto_toString%': ['Object', 'prototype', 'toString'], + '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'], + '%PromisePrototype%': ['Promise', 'prototype'], + '%PromiseProto_then%': ['Promise', 'prototype', 'then'], + '%Promise_all%': ['Promise', 'all'], + '%Promise_reject%': ['Promise', 'reject'], + '%Promise_resolve%': ['Promise', 'resolve'], + '%RangeErrorPrototype%': ['RangeError', 'prototype'], + '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'], + '%RegExpPrototype%': ['RegExp', 'prototype'], + '%SetPrototype%': ['Set', 'prototype'], + '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'], + '%StringPrototype%': ['String', 'prototype'], + '%SymbolPrototype%': ['Symbol', 'prototype'], + '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'], + '%TypedArrayPrototype%': ['TypedArray', 'prototype'], + '%TypeErrorPrototype%': ['TypeError', 'prototype'], + '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'], + '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'], + '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'], + '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'], + '%URIErrorPrototype%': ['URIError', 'prototype'], + '%WeakMapPrototype%': ['WeakMap', 'prototype'], + '%WeakSetPrototype%': ['WeakSet', 'prototype'] +}; + +var bind = require('function-bind'); +var hasOwn = require('hasown'); +var $concat = bind.call($call, Array.prototype.concat); +var $spliceApply = bind.call($apply, Array.prototype.splice); +var $replace = bind.call($call, String.prototype.replace); +var $strSlice = bind.call($call, String.prototype.slice); +var $exec = bind.call($call, RegExp.prototype.exec); + +/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ +var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; +var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */ +var stringToPath = function stringToPath(string) { + var first = $strSlice(string, 0, 1); + var last = $strSlice(string, -1); + if (first === '%' && last !== '%') { + throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`'); + } else if (last === '%' && first !== '%') { + throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`'); + } + var result = []; + $replace(string, rePropName, function (match, number, quote, subString) { + result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match; + }); + return result; +}; +/* end adaptation */ + +var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) { + var intrinsicName = name; + var alias; + if (hasOwn(LEGACY_ALIASES, intrinsicName)) { + alias = LEGACY_ALIASES[intrinsicName]; + intrinsicName = '%' + alias[0] + '%'; + } + + if (hasOwn(INTRINSICS, intrinsicName)) { + var value = INTRINSICS[intrinsicName]; + if (value === needsEval) { + value = doEval(intrinsicName); + } + if (typeof value === 'undefined' && !allowMissing) { + throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); + } + + return { + alias: alias, + name: intrinsicName, + value: value + }; + } + + throw new $SyntaxError('intrinsic ' + name + ' does not exist!'); +}; + +module.exports = function GetIntrinsic(name, allowMissing) { + if (typeof name !== 'string' || name.length === 0) { + throw new $TypeError('intrinsic name must be a non-empty string'); + } + if (arguments.length > 1 && typeof allowMissing !== 'boolean') { + throw new $TypeError('"allowMissing" argument must be a boolean'); + } + + if ($exec(/^%?[^%]*%?$/, name) === null) { + throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name'); + } + var parts = stringToPath(name); + var intrinsicBaseName = parts.length > 0 ? parts[0] : ''; + + var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing); + var intrinsicRealName = intrinsic.name; + var value = intrinsic.value; + var skipFurtherCaching = false; + + var alias = intrinsic.alias; + if (alias) { + intrinsicBaseName = alias[0]; + $spliceApply(parts, $concat([0, 1], alias)); + } + + for (var i = 1, isOwn = true; i < parts.length; i += 1) { + var part = parts[i]; + var first = $strSlice(part, 0, 1); + var last = $strSlice(part, -1); + if ( + ( + (first === '"' || first === "'" || first === '`') + || (last === '"' || last === "'" || last === '`') + ) + && first !== last + ) { + throw new $SyntaxError('property names with quotes must have matching quotes'); + } + if (part === 'constructor' || !isOwn) { + skipFurtherCaching = true; + } + + intrinsicBaseName += '.' + part; + intrinsicRealName = '%' + intrinsicBaseName + '%'; + + if (hasOwn(INTRINSICS, intrinsicRealName)) { + value = INTRINSICS[intrinsicRealName]; + } else if (value != null) { + if (!(part in value)) { + if (!allowMissing) { + throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.'); + } + return void undefined; + } + if ($gOPD && (i + 1) >= parts.length) { + var desc = $gOPD(value, part); + isOwn = !!desc; + + // By convention, when a data property is converted to an accessor + // property to emulate a data property that does not suffer from + // the override mistake, that accessor's getter is marked with + // an `originalValue` property. Here, when we detect this, we + // uphold the illusion by pretending to see that original data + // property, i.e., returning the value rather than the getter + // itself. + if (isOwn && 'get' in desc && !('originalValue' in desc.get)) { + value = desc.get; + } else { + value = value[part]; + } + } else { + isOwn = hasOwn(value, part); + value = value[part]; + } + + if (isOwn && !skipFurtherCaching) { + INTRINSICS[intrinsicRealName] = value; + } + } + } + return value; +}; diff --git a/node_modules/get-intrinsic/package.json b/node_modules/get-intrinsic/package.json new file mode 100644 index 0000000..2828e73 --- /dev/null +++ b/node_modules/get-intrinsic/package.json @@ -0,0 +1,97 @@ +{ + "name": "get-intrinsic", + "version": "1.3.0", + "description": "Get and robustly cache all JS language-level intrinsics at first require time", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/get-intrinsic.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "es", + "js", + "intrinsic", + "getintrinsic", + "es-abstract" + ], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/get-intrinsic/issues" + }, + "homepage": "https://github.com/ljharb/get-intrinsic#readme", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.1", + "auto-changelog": "^2.5.0", + "call-bound": "^1.0.3", + "encoding": "^0.1.13", + "es-abstract": "^1.23.9", + "es-value-fixtures": "^1.7.1", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.5", + "make-async-function": "^1.0.0", + "make-async-generator-function": "^1.0.0", + "make-generator-function": "^2.0.0", + "mock-property": "^1.1.0", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.4", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "testling": { + "files": "test/GetIntrinsic.js" + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/get-intrinsic/test/GetIntrinsic.js b/node_modules/get-intrinsic/test/GetIntrinsic.js new file mode 100644 index 0000000..d9c0f30 --- /dev/null +++ b/node_modules/get-intrinsic/test/GetIntrinsic.js @@ -0,0 +1,274 @@ +'use strict'; + +var GetIntrinsic = require('../'); + +var test = require('tape'); +var forEach = require('for-each'); +var debug = require('object-inspect'); +var generatorFns = require('make-generator-function')(); +var asyncFns = require('make-async-function').list(); +var asyncGenFns = require('make-async-generator-function')(); +var mockProperty = require('mock-property'); + +var callBound = require('call-bound'); +var v = require('es-value-fixtures'); +var $gOPD = require('gopd'); +var DefinePropertyOrThrow = require('es-abstract/2023/DefinePropertyOrThrow'); + +var $isProto = callBound('%Object.prototype.isPrototypeOf%'); + +test('export', function (t) { + t.equal(typeof GetIntrinsic, 'function', 'it is a function'); + t.equal(GetIntrinsic.length, 2, 'function has length of 2'); + + t.end(); +}); + +test('throws', function (t) { + t['throws']( + function () { GetIntrinsic('not an intrinsic'); }, + SyntaxError, + 'nonexistent intrinsic throws a syntax error' + ); + + t['throws']( + function () { GetIntrinsic(''); }, + TypeError, + 'empty string intrinsic throws a type error' + ); + + t['throws']( + function () { GetIntrinsic('.'); }, + SyntaxError, + '"just a dot" intrinsic throws a syntax error' + ); + + t['throws']( + function () { GetIntrinsic('%String'); }, + SyntaxError, + 'Leading % without trailing % throws a syntax error' + ); + + t['throws']( + function () { GetIntrinsic('String%'); }, + SyntaxError, + 'Trailing % without leading % throws a syntax error' + ); + + t['throws']( + function () { GetIntrinsic("String['prototype]"); }, + SyntaxError, + 'Dynamic property access is disallowed for intrinsics (unterminated string)' + ); + + t['throws']( + function () { GetIntrinsic('%Proxy.prototype.undefined%'); }, + TypeError, + "Throws when middle part doesn't exist (%Proxy.prototype.undefined%)" + ); + + t['throws']( + function () { GetIntrinsic('%Array.prototype%garbage%'); }, + SyntaxError, + 'Throws with extra percent signs' + ); + + t['throws']( + function () { GetIntrinsic('%Array.prototype%push%'); }, + SyntaxError, + 'Throws with extra percent signs, even on an existing intrinsic' + ); + + forEach(v.nonStrings, function (nonString) { + t['throws']( + function () { GetIntrinsic(nonString); }, + TypeError, + debug(nonString) + ' is not a String' + ); + }); + + forEach(v.nonBooleans, function (nonBoolean) { + t['throws']( + function () { GetIntrinsic('%', nonBoolean); }, + TypeError, + debug(nonBoolean) + ' is not a Boolean' + ); + }); + + forEach([ + 'toString', + 'propertyIsEnumerable', + 'hasOwnProperty' + ], function (objectProtoMember) { + t['throws']( + function () { GetIntrinsic(objectProtoMember); }, + SyntaxError, + debug(objectProtoMember) + ' is not an intrinsic' + ); + }); + + t.end(); +}); + +test('base intrinsics', function (t) { + t.equal(GetIntrinsic('%Object%'), Object, '%Object% yields Object'); + t.equal(GetIntrinsic('Object'), Object, 'Object yields Object'); + t.equal(GetIntrinsic('%Array%'), Array, '%Array% yields Array'); + t.equal(GetIntrinsic('Array'), Array, 'Array yields Array'); + + t.end(); +}); + +test('dotted paths', function (t) { + t.equal(GetIntrinsic('%Object.prototype.toString%'), Object.prototype.toString, '%Object.prototype.toString% yields Object.prototype.toString'); + t.equal(GetIntrinsic('Object.prototype.toString'), Object.prototype.toString, 'Object.prototype.toString yields Object.prototype.toString'); + t.equal(GetIntrinsic('%Array.prototype.push%'), Array.prototype.push, '%Array.prototype.push% yields Array.prototype.push'); + t.equal(GetIntrinsic('Array.prototype.push'), Array.prototype.push, 'Array.prototype.push yields Array.prototype.push'); + + test('underscore paths are aliases for dotted paths', { skip: !Object.isFrozen || Object.isFrozen(Object.prototype) }, function (st) { + var original = GetIntrinsic('%ObjProto_toString%'); + + forEach([ + '%Object.prototype.toString%', + 'Object.prototype.toString', + '%ObjectPrototype.toString%', + 'ObjectPrototype.toString', + '%ObjProto_toString%', + 'ObjProto_toString' + ], function (name) { + DefinePropertyOrThrow(Object.prototype, 'toString', { + '[[Value]]': function toString() { + return original.apply(this, arguments); + } + }); + st.equal(GetIntrinsic(name), original, name + ' yields original Object.prototype.toString'); + }); + + DefinePropertyOrThrow(Object.prototype, 'toString', { '[[Value]]': original }); + st.end(); + }); + + test('dotted paths cache', { skip: !Object.isFrozen || Object.isFrozen(Object.prototype) }, function (st) { + var original = GetIntrinsic('%Object.prototype.propertyIsEnumerable%'); + + forEach([ + '%Object.prototype.propertyIsEnumerable%', + 'Object.prototype.propertyIsEnumerable', + '%ObjectPrototype.propertyIsEnumerable%', + 'ObjectPrototype.propertyIsEnumerable' + ], function (name) { + var restore = mockProperty(Object.prototype, 'propertyIsEnumerable', { + value: function propertyIsEnumerable() { + return original.apply(this, arguments); + } + }); + st.equal(GetIntrinsic(name), original, name + ' yields cached Object.prototype.propertyIsEnumerable'); + + restore(); + }); + + st.end(); + }); + + test('dotted path reports correct error', function (st) { + st['throws'](function () { + GetIntrinsic('%NonExistentIntrinsic.prototype.property%'); + }, /%NonExistentIntrinsic%/, 'The base intrinsic of %NonExistentIntrinsic.prototype.property% is %NonExistentIntrinsic%'); + + st['throws'](function () { + GetIntrinsic('%NonExistentIntrinsicPrototype.property%'); + }, /%NonExistentIntrinsicPrototype%/, 'The base intrinsic of %NonExistentIntrinsicPrototype.property% is %NonExistentIntrinsicPrototype%'); + + st.end(); + }); + + t.end(); +}); + +test('accessors', { skip: !$gOPD || typeof Map !== 'function' }, function (t) { + var actual = $gOPD(Map.prototype, 'size'); + t.ok(actual, 'Map.prototype.size has a descriptor'); + t.equal(typeof actual.get, 'function', 'Map.prototype.size has a getter function'); + t.equal(GetIntrinsic('%Map.prototype.size%'), actual.get, '%Map.prototype.size% yields the getter for it'); + t.equal(GetIntrinsic('Map.prototype.size'), actual.get, 'Map.prototype.size yields the getter for it'); + + t.end(); +}); + +test('generator functions', { skip: !generatorFns.length }, function (t) { + var $GeneratorFunction = GetIntrinsic('%GeneratorFunction%'); + var $GeneratorFunctionPrototype = GetIntrinsic('%Generator%'); + var $GeneratorPrototype = GetIntrinsic('%GeneratorPrototype%'); + + forEach(generatorFns, function (genFn) { + var fnName = genFn.name; + fnName = fnName ? "'" + fnName + "'" : 'genFn'; + + t.ok(genFn instanceof $GeneratorFunction, fnName + ' instanceof %GeneratorFunction%'); + t.ok($isProto($GeneratorFunctionPrototype, genFn), '%Generator% is prototype of ' + fnName); + t.ok($isProto($GeneratorPrototype, genFn.prototype), '%GeneratorPrototype% is prototype of ' + fnName + '.prototype'); + }); + + t.end(); +}); + +test('async functions', { skip: !asyncFns.length }, function (t) { + var $AsyncFunction = GetIntrinsic('%AsyncFunction%'); + var $AsyncFunctionPrototype = GetIntrinsic('%AsyncFunctionPrototype%'); + + forEach(asyncFns, function (asyncFn) { + var fnName = asyncFn.name; + fnName = fnName ? "'" + fnName + "'" : 'asyncFn'; + + t.ok(asyncFn instanceof $AsyncFunction, fnName + ' instanceof %AsyncFunction%'); + t.ok($isProto($AsyncFunctionPrototype, asyncFn), '%AsyncFunctionPrototype% is prototype of ' + fnName); + }); + + t.end(); +}); + +test('async generator functions', { skip: asyncGenFns.length === 0 }, function (t) { + var $AsyncGeneratorFunction = GetIntrinsic('%AsyncGeneratorFunction%'); + var $AsyncGeneratorFunctionPrototype = GetIntrinsic('%AsyncGenerator%'); + var $AsyncGeneratorPrototype = GetIntrinsic('%AsyncGeneratorPrototype%'); + + forEach(asyncGenFns, function (asyncGenFn) { + var fnName = asyncGenFn.name; + fnName = fnName ? "'" + fnName + "'" : 'asyncGenFn'; + + t.ok(asyncGenFn instanceof $AsyncGeneratorFunction, fnName + ' instanceof %AsyncGeneratorFunction%'); + t.ok($isProto($AsyncGeneratorFunctionPrototype, asyncGenFn), '%AsyncGenerator% is prototype of ' + fnName); + t.ok($isProto($AsyncGeneratorPrototype, asyncGenFn.prototype), '%AsyncGeneratorPrototype% is prototype of ' + fnName + '.prototype'); + }); + + t.end(); +}); + +test('%ThrowTypeError%', function (t) { + var $ThrowTypeError = GetIntrinsic('%ThrowTypeError%'); + + t.equal(typeof $ThrowTypeError, 'function', 'is a function'); + t['throws']( + $ThrowTypeError, + TypeError, + '%ThrowTypeError% throws a TypeError' + ); + + t.end(); +}); + +test('allowMissing', { skip: asyncGenFns.length > 0 }, function (t) { + t['throws']( + function () { GetIntrinsic('%AsyncGeneratorPrototype%'); }, + TypeError, + 'throws when missing' + ); + + t.equal( + GetIntrinsic('%AsyncGeneratorPrototype%', true), + undefined, + 'does not throw when allowMissing' + ); + + t.end(); +}); diff --git a/node_modules/get-proto/.eslintrc b/node_modules/get-proto/.eslintrc new file mode 100644 index 0000000..1d21a8a --- /dev/null +++ b/node_modules/get-proto/.eslintrc @@ -0,0 +1,10 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "id-length": "off", + "sort-keys": "off", + }, +} diff --git a/node_modules/get-proto/.github/FUNDING.yml b/node_modules/get-proto/.github/FUNDING.yml new file mode 100644 index 0000000..93183ef --- /dev/null +++ b/node_modules/get-proto/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/get-proto +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/get-proto/.nycrc b/node_modules/get-proto/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/node_modules/get-proto/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/get-proto/CHANGELOG.md b/node_modules/get-proto/CHANGELOG.md new file mode 100644 index 0000000..5860229 --- /dev/null +++ b/node_modules/get-proto/CHANGELOG.md @@ -0,0 +1,21 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.1](https://github.com/ljharb/get-proto/compare/v1.0.0...v1.0.1) - 2025-01-02 + +### Commits + +- [Fix] for the `Object.getPrototypeOf` window, throw for non-objects [`7fe6508`](https://github.com/ljharb/get-proto/commit/7fe6508b71419ebe1976bedb86001d1feaeaa49a) + +## v1.0.0 - 2025-01-01 + +### Commits + +- Initial implementation, tests, readme, types [`5c70775`](https://github.com/ljharb/get-proto/commit/5c707751e81c3deeb2cf980d185fc7fd43611415) +- Initial commit [`7c65c2a`](https://github.com/ljharb/get-proto/commit/7c65c2ad4e33d5dae2f219ebe1a046ae2256972c) +- npm init [`0b8cf82`](https://github.com/ljharb/get-proto/commit/0b8cf824c9634e4a34ef7dd2a2cdc5be6ac79518) +- Only apps should have lockfiles [`a6d1bff`](https://github.com/ljharb/get-proto/commit/a6d1bffc364f5828377cea7194558b2dbef7aea2) diff --git a/node_modules/get-proto/LICENSE b/node_modules/get-proto/LICENSE new file mode 100644 index 0000000..eeabd1c --- /dev/null +++ b/node_modules/get-proto/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/get-proto/Object.getPrototypeOf.d.ts b/node_modules/get-proto/Object.getPrototypeOf.d.ts new file mode 100644 index 0000000..028b3ff --- /dev/null +++ b/node_modules/get-proto/Object.getPrototypeOf.d.ts @@ -0,0 +1,5 @@ +declare function getProto(object: O): object | null; + +declare const x: typeof getProto | null; + +export = x; \ No newline at end of file diff --git a/node_modules/get-proto/Object.getPrototypeOf.js b/node_modules/get-proto/Object.getPrototypeOf.js new file mode 100644 index 0000000..c2cbbdf --- /dev/null +++ b/node_modules/get-proto/Object.getPrototypeOf.js @@ -0,0 +1,6 @@ +'use strict'; + +var $Object = require('es-object-atoms'); + +/** @type {import('./Object.getPrototypeOf')} */ +module.exports = $Object.getPrototypeOf || null; diff --git a/node_modules/get-proto/README.md b/node_modules/get-proto/README.md new file mode 100644 index 0000000..f8b4cce --- /dev/null +++ b/node_modules/get-proto/README.md @@ -0,0 +1,50 @@ +# get-proto [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Robustly get the [[Prototype]] of an object. Uses the best available method. + +## Getting started + +```sh +npm install --save get-proto +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const getProto = require('get-proto'); + +const a = { a: 1, b: 2, [Symbol.toStringTag]: 'foo' }; +const b = { c: 3, __proto__: a }; + +assert.equal(getProto(b), a); +assert.equal(getProto(a), Object.prototype); +assert.equal(getProto({ __proto__: null }), null); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/get-proto +[npm-version-svg]: https://versionbadg.es/ljharb/get-proto.svg +[deps-svg]: https://david-dm.org/ljharb/get-proto.svg +[deps-url]: https://david-dm.org/ljharb/get-proto +[dev-deps-svg]: https://david-dm.org/ljharb/get-proto/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/get-proto#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/get-proto.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/get-proto.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/get-proto.svg +[downloads-url]: https://npm-stat.com/charts.html?package=get-proto +[codecov-image]: https://codecov.io/gh/ljharb/get-proto/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/get-proto/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/get-proto +[actions-url]: https://github.com/ljharb/get-proto/actions diff --git a/node_modules/get-proto/Reflect.getPrototypeOf.d.ts b/node_modules/get-proto/Reflect.getPrototypeOf.d.ts new file mode 100644 index 0000000..2388fe0 --- /dev/null +++ b/node_modules/get-proto/Reflect.getPrototypeOf.d.ts @@ -0,0 +1,3 @@ +declare const x: typeof Reflect.getPrototypeOf | null; + +export = x; \ No newline at end of file diff --git a/node_modules/get-proto/Reflect.getPrototypeOf.js b/node_modules/get-proto/Reflect.getPrototypeOf.js new file mode 100644 index 0000000..e6c51be --- /dev/null +++ b/node_modules/get-proto/Reflect.getPrototypeOf.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./Reflect.getPrototypeOf')} */ +module.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null; diff --git a/node_modules/get-proto/index.d.ts b/node_modules/get-proto/index.d.ts new file mode 100644 index 0000000..2c021f3 --- /dev/null +++ b/node_modules/get-proto/index.d.ts @@ -0,0 +1,5 @@ +declare function getProto(object: O): object | null; + +declare const x: typeof getProto | null; + +export = x; diff --git a/node_modules/get-proto/index.js b/node_modules/get-proto/index.js new file mode 100644 index 0000000..7e5747b --- /dev/null +++ b/node_modules/get-proto/index.js @@ -0,0 +1,27 @@ +'use strict'; + +var reflectGetProto = require('./Reflect.getPrototypeOf'); +var originalGetProto = require('./Object.getPrototypeOf'); + +var getDunderProto = require('dunder-proto/get'); + +/** @type {import('.')} */ +module.exports = reflectGetProto + ? function getProto(O) { + // @ts-expect-error TS can't narrow inside a closure, for some reason + return reflectGetProto(O); + } + : originalGetProto + ? function getProto(O) { + if (!O || (typeof O !== 'object' && typeof O !== 'function')) { + throw new TypeError('getProto: not an object'); + } + // @ts-expect-error TS can't narrow inside a closure, for some reason + return originalGetProto(O); + } + : getDunderProto + ? function getProto(O) { + // @ts-expect-error TS can't narrow inside a closure, for some reason + return getDunderProto(O); + } + : null; diff --git a/node_modules/get-proto/package.json b/node_modules/get-proto/package.json new file mode 100644 index 0000000..9c35cec --- /dev/null +++ b/node_modules/get-proto/package.json @@ -0,0 +1,81 @@ +{ + "name": "get-proto", + "version": "1.0.1", + "description": "Robustly get the [[Prototype]] of an object", + "main": "index.js", + "exports": { + ".": "./index.js", + "./Reflect.getPrototypeOf": "./Reflect.getPrototypeOf.js", + "./Object.getPrototypeOf": "./Object.getPrototypeOf.js", + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "pretest": "npm run --silent lint", + "test": "npm run tests-only", + "posttest": "npx npm@\">=10.2\" audit --production", + "tests-only": "nyc tape 'test/**/*.js'", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc && attw -P", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/get-proto.git" + }, + "keywords": [ + "get", + "proto", + "prototype", + "getPrototypeOf", + "[[Prototype]]" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/get-proto/issues" + }, + "homepage": "https://github.com/ljharb/get-proto#readme", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.2", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/tape": "^5.8.0", + "auto-changelog": "^2.5.0", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "testling": { + "files": "test/index.js" + } +} diff --git a/node_modules/get-proto/test/index.js b/node_modules/get-proto/test/index.js new file mode 100644 index 0000000..5a2ece2 --- /dev/null +++ b/node_modules/get-proto/test/index.js @@ -0,0 +1,68 @@ +'use strict'; + +var test = require('tape'); + +var getProto = require('../'); + +test('getProto', function (t) { + t.equal(typeof getProto, 'function', 'is a function'); + + t.test('can get', { skip: !getProto }, function (st) { + if (getProto) { // TS doesn't understand tape's skip + var proto = { b: 2 }; + st.equal(getProto(proto), Object.prototype, 'proto: returns the [[Prototype]]'); + + st.test('nullish value', function (s2t) { + // @ts-expect-error + s2t['throws'](function () { return getProto(undefined); }, TypeError, 'undefined is not an object'); + // @ts-expect-error + s2t['throws'](function () { return getProto(null); }, TypeError, 'null is not an object'); + s2t.end(); + }); + + // @ts-expect-error + st['throws'](function () { getProto(true); }, 'throws for true'); + // @ts-expect-error + st['throws'](function () { getProto(false); }, 'throws for false'); + // @ts-expect-error + st['throws'](function () { getProto(42); }, 'throws for 42'); + // @ts-expect-error + st['throws'](function () { getProto(NaN); }, 'throws for NaN'); + // @ts-expect-error + st['throws'](function () { getProto(0); }, 'throws for +0'); + // @ts-expect-error + st['throws'](function () { getProto(-0); }, 'throws for -0'); + // @ts-expect-error + st['throws'](function () { getProto(Infinity); }, 'throws for ∞'); + // @ts-expect-error + st['throws'](function () { getProto(-Infinity); }, 'throws for -∞'); + // @ts-expect-error + st['throws'](function () { getProto(''); }, 'throws for empty string'); + // @ts-expect-error + st['throws'](function () { getProto('foo'); }, 'throws for non-empty string'); + st.equal(getProto(/a/g), RegExp.prototype); + st.equal(getProto(new Date()), Date.prototype); + st.equal(getProto(function () {}), Function.prototype); + st.equal(getProto([]), Array.prototype); + st.equal(getProto({}), Object.prototype); + + var nullObject = { __proto__: null }; + if ('toString' in nullObject) { + st.comment('no null objects in this engine'); + st.equal(getProto(nullObject), Object.prototype, '"null" object has Object.prototype as [[Prototype]]'); + } else { + st.equal(getProto(nullObject), null, 'null object has null [[Prototype]]'); + } + } + + st.end(); + }); + + t.test('can not get', { skip: !!getProto }, function (st) { + st.equal(getProto, null); + + st.end(); + }); + + t.end(); +}); diff --git a/node_modules/get-proto/tsconfig.json b/node_modules/get-proto/tsconfig.json new file mode 100644 index 0000000..60fb90e --- /dev/null +++ b/node_modules/get-proto/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + //"target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/node_modules/gopd/.eslintrc b/node_modules/gopd/.eslintrc new file mode 100644 index 0000000..e2550c0 --- /dev/null +++ b/node_modules/gopd/.eslintrc @@ -0,0 +1,16 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "func-style": [2, "declaration"], + "id-length": 0, + "multiline-comment-style": 0, + "new-cap": [2, { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + }, +} diff --git a/node_modules/gopd/.github/FUNDING.yml b/node_modules/gopd/.github/FUNDING.yml new file mode 100644 index 0000000..94a44a8 --- /dev/null +++ b/node_modules/gopd/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/gopd +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/gopd/CHANGELOG.md b/node_modules/gopd/CHANGELOG.md new file mode 100644 index 0000000..87f5727 --- /dev/null +++ b/node_modules/gopd/CHANGELOG.md @@ -0,0 +1,45 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.2.0](https://github.com/ljharb/gopd/compare/v1.1.0...v1.2.0) - 2024-12-03 + +### Commits + +- [New] add `gOPD` entry point; remove `get-intrinsic` [`5b61232`](https://github.com/ljharb/gopd/commit/5b61232dedea4591a314bcf16101b1961cee024e) + +## [v1.1.0](https://github.com/ljharb/gopd/compare/v1.0.1...v1.1.0) - 2024-11-29 + +### Commits + +- [New] add types [`f585e39`](https://github.com/ljharb/gopd/commit/f585e397886d270e4ba84e53d226e4f9ca2eb0e6) +- [Dev Deps] update `@ljharb/eslint-config`, `auto-changelog`, `tape` [`0b8e4fd`](https://github.com/ljharb/gopd/commit/0b8e4fded64397a7726a9daa144a6cc9a5e2edfa) +- [Dev Deps] update `aud`, `npmignore`, `tape` [`48378b2`](https://github.com/ljharb/gopd/commit/48378b2443f09a4f7efbd0fb6c3ee845a6cabcf3) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`78099ee`](https://github.com/ljharb/gopd/commit/78099eeed41bfdc134c912280483689cc8861c31) +- [Tests] replace `aud` with `npm audit` [`4e0d0ac`](https://github.com/ljharb/gopd/commit/4e0d0ac47619d24a75318a8e1f543ee04b2a2632) +- [meta] add missing `engines.node` [`1443316`](https://github.com/ljharb/gopd/commit/14433165d07835c680155b3dfd62d9217d735eca) +- [Deps] update `get-intrinsic` [`eee5f51`](https://github.com/ljharb/gopd/commit/eee5f51769f3dbaf578b70e2a3199116b01aa670) +- [Deps] update `get-intrinsic` [`550c378`](https://github.com/ljharb/gopd/commit/550c3780e3a9c77b62565712a001b4ed64ea61f5) +- [Dev Deps] add missing peer dep [`8c2ecf8`](https://github.com/ljharb/gopd/commit/8c2ecf848122e4e30abfc5b5086fb48b390dce75) + +## [v1.0.1](https://github.com/ljharb/gopd/compare/v1.0.0...v1.0.1) - 2022-11-01 + +### Commits + +- [Fix] actually export gOPD instead of dP [`4b624bf`](https://github.com/ljharb/gopd/commit/4b624bfbeff788c5e3ff16d9443a83627847234f) + +## v1.0.0 - 2022-11-01 + +### Commits + +- Initial implementation, tests, readme [`0911e01`](https://github.com/ljharb/gopd/commit/0911e012cd642092bd88b732c161c58bf4f20bea) +- Initial commit [`b84e33f`](https://github.com/ljharb/gopd/commit/b84e33f5808a805ac57ff88d4247ad935569acbe) +- [actions] add reusable workflows [`12ae28a`](https://github.com/ljharb/gopd/commit/12ae28ae5f50f86e750215b6e2188901646d0119) +- npm init [`280118b`](https://github.com/ljharb/gopd/commit/280118badb45c80b4483836b5cb5315bddf6e582) +- [meta] add `auto-changelog` [`bb78de5`](https://github.com/ljharb/gopd/commit/bb78de5639a180747fb290c28912beaaf1615709) +- [meta] create FUNDING.yml; add `funding` in package.json [`11c22e6`](https://github.com/ljharb/gopd/commit/11c22e6355bb01f24e7fac4c9bb3055eb5b25002) +- [meta] use `npmignore` to autogenerate an npmignore file [`4f4537a`](https://github.com/ljharb/gopd/commit/4f4537a843b39f698c52f072845092e6fca345bb) +- Only apps should have lockfiles [`c567022`](https://github.com/ljharb/gopd/commit/c567022a18573aa7951cf5399445d9840e23e98b) diff --git a/node_modules/gopd/LICENSE b/node_modules/gopd/LICENSE new file mode 100644 index 0000000..6abfe14 --- /dev/null +++ b/node_modules/gopd/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/gopd/README.md b/node_modules/gopd/README.md new file mode 100644 index 0000000..784e56a --- /dev/null +++ b/node_modules/gopd/README.md @@ -0,0 +1,40 @@ +# gopd [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +`Object.getOwnPropertyDescriptor`, but accounts for IE's broken implementation. + +## Usage + +```javascript +var gOPD = require('gopd'); +var assert = require('assert'); + +if (gOPD) { + assert.equal(typeof gOPD, 'function', 'descriptors supported'); + // use gOPD like Object.getOwnPropertyDescriptor here +} else { + assert.ok(!gOPD, 'descriptors not supported'); +} +``` + +[package-url]: https://npmjs.org/package/gopd +[npm-version-svg]: https://versionbadg.es/ljharb/gopd.svg +[deps-svg]: https://david-dm.org/ljharb/gopd.svg +[deps-url]: https://david-dm.org/ljharb/gopd +[dev-deps-svg]: https://david-dm.org/ljharb/gopd/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/gopd#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/gopd.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/gopd.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/gopd.svg +[downloads-url]: https://npm-stat.com/charts.html?package=gopd +[codecov-image]: https://codecov.io/gh/ljharb/gopd/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/gopd/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/gopd +[actions-url]: https://github.com/ljharb/gopd/actions diff --git a/node_modules/gopd/gOPD.d.ts b/node_modules/gopd/gOPD.d.ts new file mode 100644 index 0000000..def48a3 --- /dev/null +++ b/node_modules/gopd/gOPD.d.ts @@ -0,0 +1 @@ +export = Object.getOwnPropertyDescriptor; diff --git a/node_modules/gopd/gOPD.js b/node_modules/gopd/gOPD.js new file mode 100644 index 0000000..cf9616c --- /dev/null +++ b/node_modules/gopd/gOPD.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./gOPD')} */ +module.exports = Object.getOwnPropertyDescriptor; diff --git a/node_modules/gopd/index.d.ts b/node_modules/gopd/index.d.ts new file mode 100644 index 0000000..e228065 --- /dev/null +++ b/node_modules/gopd/index.d.ts @@ -0,0 +1,5 @@ +declare function gOPD(obj: O, prop: K): PropertyDescriptor | undefined; + +declare const fn: typeof gOPD | undefined | null; + +export = fn; \ No newline at end of file diff --git a/node_modules/gopd/index.js b/node_modules/gopd/index.js new file mode 100644 index 0000000..a4081b0 --- /dev/null +++ b/node_modules/gopd/index.js @@ -0,0 +1,15 @@ +'use strict'; + +/** @type {import('.')} */ +var $gOPD = require('./gOPD'); + +if ($gOPD) { + try { + $gOPD([], 'length'); + } catch (e) { + // IE 8 has a broken gOPD + $gOPD = null; + } +} + +module.exports = $gOPD; diff --git a/node_modules/gopd/package.json b/node_modules/gopd/package.json new file mode 100644 index 0000000..01c5ffa --- /dev/null +++ b/node_modules/gopd/package.json @@ -0,0 +1,77 @@ +{ + "name": "gopd", + "version": "1.2.0", + "description": "`Object.getOwnPropertyDescriptor`, but accounts for IE's broken implementation.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./gOPD": "./gOPD.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "tsc -p . && attw -P", + "lint": "eslint --ext=js,mjs .", + "postlint": "evalmd README.md", + "pretest": "npm run lint", + "tests-only": "tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/gopd.git" + }, + "keywords": [ + "ecmascript", + "javascript", + "getownpropertydescriptor", + "property", + "descriptor" + ], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/gopd/issues" + }, + "homepage": "https://github.com/ljharb/gopd#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.0", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.0", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/gopd/test/index.js b/node_modules/gopd/test/index.js new file mode 100644 index 0000000..6f43453 --- /dev/null +++ b/node_modules/gopd/test/index.js @@ -0,0 +1,36 @@ +'use strict'; + +var test = require('tape'); +var gOPD = require('../'); + +test('gOPD', function (t) { + t.test('supported', { skip: !gOPD }, function (st) { + st.equal(typeof gOPD, 'function', 'is a function'); + + var obj = { x: 1 }; + st.ok('x' in obj, 'property exists'); + + // @ts-expect-error TS can't figure out narrowing from `skip` + var desc = gOPD(obj, 'x'); + st.deepEqual( + desc, + { + configurable: true, + enumerable: true, + value: 1, + writable: true + }, + 'descriptor is as expected' + ); + + st.end(); + }); + + t.test('not supported', { skip: !!gOPD }, function (st) { + st.notOk(gOPD, 'is falsy'); + + st.end(); + }); + + t.end(); +}); diff --git a/node_modules/gopd/tsconfig.json b/node_modules/gopd/tsconfig.json new file mode 100644 index 0000000..d9a6668 --- /dev/null +++ b/node_modules/gopd/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/node_modules/has-symbols/.eslintrc b/node_modules/has-symbols/.eslintrc new file mode 100644 index 0000000..2d9a66a --- /dev/null +++ b/node_modules/has-symbols/.eslintrc @@ -0,0 +1,11 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "max-statements-per-line": [2, { "max": 2 }], + "no-magic-numbers": 0, + "multiline-comment-style": 0, + } +} diff --git a/node_modules/has-symbols/.github/FUNDING.yml b/node_modules/has-symbols/.github/FUNDING.yml new file mode 100644 index 0000000..04cf87e --- /dev/null +++ b/node_modules/has-symbols/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/has-symbols +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/has-symbols/.nycrc b/node_modules/has-symbols/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/node_modules/has-symbols/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/has-symbols/CHANGELOG.md b/node_modules/has-symbols/CHANGELOG.md new file mode 100644 index 0000000..cc3cf83 --- /dev/null +++ b/node_modules/has-symbols/CHANGELOG.md @@ -0,0 +1,91 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.1.0](https://github.com/inspect-js/has-symbols/compare/v1.0.3...v1.1.0) - 2024-12-02 + +### Commits + +- [actions] update workflows [`548c0bf`](https://github.com/inspect-js/has-symbols/commit/548c0bf8c9b1235458df7a1c0490b0064647a282) +- [actions] further shard; update action deps [`bec56bb`](https://github.com/inspect-js/has-symbols/commit/bec56bb0fb44b43a786686b944875a3175cf3ff3) +- [meta] use `npmignore` to autogenerate an npmignore file [`ac81032`](https://github.com/inspect-js/has-symbols/commit/ac81032809157e0a079e5264e9ce9b6f1275777e) +- [New] add types [`6469cbf`](https://github.com/inspect-js/has-symbols/commit/6469cbff1866cfe367b2b3d181d9296ec14b2a3d) +- [actions] update rebase action to use reusable workflow [`9c9d4d0`](https://github.com/inspect-js/has-symbols/commit/9c9d4d0d8938e4b267acdf8e421f4e92d1716d72) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`adb5887`](https://github.com/inspect-js/has-symbols/commit/adb5887ca9444849b08beb5caaa9e1d42320cdfb) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`13ec198`](https://github.com/inspect-js/has-symbols/commit/13ec198ec80f1993a87710af1606a1970b22c7cb) +- [Dev Deps] update `auto-changelog`, `core-js`, `tape` [`941be52`](https://github.com/inspect-js/has-symbols/commit/941be5248387cab1da72509b22acf3fdb223f057) +- [Tests] replace `aud` with `npm audit` [`74f49e9`](https://github.com/inspect-js/has-symbols/commit/74f49e9a9d17a443020784234a1c53ce765b3559) +- [Dev Deps] update `npmignore` [`9c0ac04`](https://github.com/inspect-js/has-symbols/commit/9c0ac0452a834f4c2a4b54044f2d6a89f17e9a70) +- [Dev Deps] add missing peer dep [`52337a5`](https://github.com/inspect-js/has-symbols/commit/52337a5621cced61f846f2afdab7707a8132cc12) + +## [v1.0.3](https://github.com/inspect-js/has-symbols/compare/v1.0.2...v1.0.3) - 2022-03-01 + +### Commits + +- [actions] use `node/install` instead of `node/run`; use `codecov` action [`518b28f`](https://github.com/inspect-js/has-symbols/commit/518b28f6c5a516cbccae30794e40aa9f738b1693) +- [meta] add `bugs` and `homepage` fields; reorder package.json [`c480b13`](https://github.com/inspect-js/has-symbols/commit/c480b13fd6802b557e1cef9749872cb5fdeef744) +- [actions] reuse common workflows [`01d0ee0`](https://github.com/inspect-js/has-symbols/commit/01d0ee0a8d97c0947f5edb73eb722027a77b2b07) +- [actions] update codecov uploader [`6424ebe`](https://github.com/inspect-js/has-symbols/commit/6424ebe86b2c9c7c3d2e9bd4413a4e4f168cb275) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`dfa7e7f`](https://github.com/inspect-js/has-symbols/commit/dfa7e7ff38b594645d8c8222aab895157fa7e282) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `tape` [`0c8d436`](https://github.com/inspect-js/has-symbols/commit/0c8d43685c45189cea9018191d4fd7eca91c9d02) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`9026554`](https://github.com/inspect-js/has-symbols/commit/902655442a1bf88e72b42345494ef0c60f5d36ab) +- [readme] add actions and codecov badges [`eaa9682`](https://github.com/inspect-js/has-symbols/commit/eaa9682f990f481d3acf7a1c7600bec36f7b3adc) +- [Dev Deps] update `eslint`, `tape` [`bc7a3ba`](https://github.com/inspect-js/has-symbols/commit/bc7a3ba46f27b7743f8a2579732d59d1b9ac791e) +- [Dev Deps] update `eslint`, `auto-changelog` [`0ace00a`](https://github.com/inspect-js/has-symbols/commit/0ace00af08a88cdd1e6ce0d60357d941c60c2d9f) +- [meta] use `prepublishOnly` script for npm 7+ [`093f72b`](https://github.com/inspect-js/has-symbols/commit/093f72bc2b0ed00c781f444922a5034257bf561d) +- [Tests] test on all 16 minors [`9b80d3d`](https://github.com/inspect-js/has-symbols/commit/9b80d3d9102529f04c20ec5b1fcc6e38426c6b03) + +## [v1.0.2](https://github.com/inspect-js/has-symbols/compare/v1.0.1...v1.0.2) - 2021-02-27 + +### Fixed + +- [Fix] use a universal way to get the original Symbol [`#11`](https://github.com/inspect-js/has-symbols/issues/11) + +### Commits + +- [Tests] migrate tests to Github Actions [`90ae798`](https://github.com/inspect-js/has-symbols/commit/90ae79820bdfe7bc703d67f5f3c5e205f98556d3) +- [meta] do not publish github action workflow files [`29e60a1`](https://github.com/inspect-js/has-symbols/commit/29e60a1b7c25c7f1acf7acff4a9320d0d10c49b4) +- [Tests] run `nyc` on all tests [`8476b91`](https://github.com/inspect-js/has-symbols/commit/8476b915650d360915abe2522505abf4b0e8f0ae) +- [readme] fix repo URLs, remove defunct badges [`126288e`](https://github.com/inspect-js/has-symbols/commit/126288ecc1797c0a40247a6b78bcb2e0bc5d7036) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `core-js`, `get-own-property-symbols` [`d84bdfa`](https://github.com/inspect-js/has-symbols/commit/d84bdfa48ac5188abbb4904b42614cd6c030940a) +- [Tests] fix linting errors [`0df3070`](https://github.com/inspect-js/has-symbols/commit/0df3070b981b6c9f2ee530c09189a7f5c6def839) +- [actions] add "Allow Edits" workflow [`1e6bc29`](https://github.com/inspect-js/has-symbols/commit/1e6bc29b188f32b9648657b07eda08504be5aa9c) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`36cea2a`](https://github.com/inspect-js/has-symbols/commit/36cea2addd4e6ec435f35a2656b4e9ef82498e9b) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`1278338`](https://github.com/inspect-js/has-symbols/commit/127833801865fbc2cc8979beb9ca869c7bfe8222) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`1493254`](https://github.com/inspect-js/has-symbols/commit/1493254eda13db5fb8fc5e4a3e8324b3d196029d) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `core-js` [`b090bf2`](https://github.com/inspect-js/has-symbols/commit/b090bf214d3679a30edc1e2d729d466ab5183e1d) +- [actions] switch Automatic Rebase workflow to `pull_request_target` event [`4addb7a`](https://github.com/inspect-js/has-symbols/commit/4addb7ab4dc73f927ae99928d68817554fc21dc0) +- [Dev Deps] update `auto-changelog`, `tape` [`81d0baf`](https://github.com/inspect-js/has-symbols/commit/81d0baf3816096a89a8558e8043895f7a7d10d8b) +- [Dev Deps] update `auto-changelog`; add `aud` [`1a4e561`](https://github.com/inspect-js/has-symbols/commit/1a4e5612c25d91c3a03d509721d02630bc4fe3da) +- [readme] remove unused testling URLs [`3000941`](https://github.com/inspect-js/has-symbols/commit/3000941f958046e923ed8152edb1ef4a599e6fcc) +- [Tests] only audit prod deps [`692e974`](https://github.com/inspect-js/has-symbols/commit/692e9743c912410e9440207631a643a34b4741a1) +- [Dev Deps] update `@ljharb/eslint-config` [`51c946c`](https://github.com/inspect-js/has-symbols/commit/51c946c7f6baa793ec5390bb5a45cdce16b4ba76) + +## [v1.0.1](https://github.com/inspect-js/has-symbols/compare/v1.0.0...v1.0.1) - 2019-11-16 + +### Commits + +- [Tests] use shared travis-ci configs [`ce396c9`](https://github.com/inspect-js/has-symbols/commit/ce396c9419ff11c43d0da5d05cdbb79f7fb42229) +- [Tests] up to `node` `v12.4`, `v11.15`, `v10.15`, `v9.11`, `v8.15`, `v7.10`, `v6.17`, `v4.9`; use `nvm install-latest-npm` [`0690732`](https://github.com/inspect-js/has-symbols/commit/0690732801f47ab429f39ba1962f522d5c462d6b) +- [meta] add `auto-changelog` [`2163d0b`](https://github.com/inspect-js/has-symbols/commit/2163d0b7f36343076b8f947cd1667dd1750f26fc) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `core-js`, `safe-publish-latest`, `tape` [`8e0951f`](https://github.com/inspect-js/has-symbols/commit/8e0951f1a7a2e52068222b7bb73511761e6e4d9c) +- [actions] add automatic rebasing / merge commit blocking [`b09cdb7`](https://github.com/inspect-js/has-symbols/commit/b09cdb7cd7ee39e7a769878f56e2d6066f5ccd1d) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `core-js`, `get-own-property-symbols`, `tape` [`1dd42cd`](https://github.com/inspect-js/has-symbols/commit/1dd42cd86183ed0c50f99b1062345c458babca91) +- [meta] create FUNDING.yml [`aa57a17`](https://github.com/inspect-js/has-symbols/commit/aa57a17b19708906d1927f821ea8e73394d84ca4) +- Only apps should have lockfiles [`a2d8bea`](https://github.com/inspect-js/has-symbols/commit/a2d8bea23a97d15c09eaf60f5b107fcf9a4d57aa) +- [Tests] use `npx aud` instead of `nsp` or `npm audit` with hoops [`9e96cb7`](https://github.com/inspect-js/has-symbols/commit/9e96cb783746cbed0c10ef78e599a8eaa7ebe193) +- [meta] add `funding` field [`a0b32cf`](https://github.com/inspect-js/has-symbols/commit/a0b32cf68e803f963c1639b6d47b0a9d6440bab0) +- [Dev Deps] update `safe-publish-latest` [`cb9f0a5`](https://github.com/inspect-js/has-symbols/commit/cb9f0a521a3a1790f1064d437edd33bb6c3d6af0) + +## v1.0.0 - 2016-09-19 + +### Commits + +- Tests. [`ecb6eb9`](https://github.com/inspect-js/has-symbols/commit/ecb6eb934e4883137f3f93b965ba5e0a98df430d) +- package.json [`88a337c`](https://github.com/inspect-js/has-symbols/commit/88a337cee0864a0da35f5d19e69ff0ef0150e46a) +- Initial commit [`42e1e55`](https://github.com/inspect-js/has-symbols/commit/42e1e5502536a2b8ac529c9443984acd14836b1c) +- Initial implementation. [`33f5cc6`](https://github.com/inspect-js/has-symbols/commit/33f5cc6cdff86e2194b081ee842bfdc63caf43fb) +- read me [`01f1170`](https://github.com/inspect-js/has-symbols/commit/01f1170188ff7cb1558aa297f6ba5b516c6d7b0c) diff --git a/node_modules/has-symbols/LICENSE b/node_modules/has-symbols/LICENSE new file mode 100644 index 0000000..df31cbf --- /dev/null +++ b/node_modules/has-symbols/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/has-symbols/README.md b/node_modules/has-symbols/README.md new file mode 100644 index 0000000..33905f0 --- /dev/null +++ b/node_modules/has-symbols/README.md @@ -0,0 +1,46 @@ +# has-symbols [![Version Badge][2]][1] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][5]][6] +[![dev dependency status][7]][8] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][11]][1] + +Determine if the JS environment has Symbol support. Supports spec, or shams. + +## Example + +```js +var hasSymbols = require('has-symbols'); + +hasSymbols() === true; // if the environment has native Symbol support. Not polyfillable, not forgeable. + +var hasSymbolsKinda = require('has-symbols/shams'); +hasSymbolsKinda() === true; // if the environment has a Symbol sham that mostly follows the spec. +``` + +## Supported Symbol shams + - get-own-property-symbols [npm](https://www.npmjs.com/package/get-own-property-symbols) | [github](https://github.com/WebReflection/get-own-property-symbols) + - core-js [npm](https://www.npmjs.com/package/core-js) | [github](https://github.com/zloirock/core-js) + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +[1]: https://npmjs.org/package/has-symbols +[2]: https://versionbadg.es/inspect-js/has-symbols.svg +[5]: https://david-dm.org/inspect-js/has-symbols.svg +[6]: https://david-dm.org/inspect-js/has-symbols +[7]: https://david-dm.org/inspect-js/has-symbols/dev-status.svg +[8]: https://david-dm.org/inspect-js/has-symbols#info=devDependencies +[11]: https://nodei.co/npm/has-symbols.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/has-symbols.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/has-symbols.svg +[downloads-url]: https://npm-stat.com/charts.html?package=has-symbols +[codecov-image]: https://codecov.io/gh/inspect-js/has-symbols/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/inspect-js/has-symbols/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/has-symbols +[actions-url]: https://github.com/inspect-js/has-symbols/actions diff --git a/node_modules/has-symbols/index.d.ts b/node_modules/has-symbols/index.d.ts new file mode 100644 index 0000000..9b98595 --- /dev/null +++ b/node_modules/has-symbols/index.d.ts @@ -0,0 +1,3 @@ +declare function hasNativeSymbols(): boolean; + +export = hasNativeSymbols; \ No newline at end of file diff --git a/node_modules/has-symbols/index.js b/node_modules/has-symbols/index.js new file mode 100644 index 0000000..fa65265 --- /dev/null +++ b/node_modules/has-symbols/index.js @@ -0,0 +1,14 @@ +'use strict'; + +var origSymbol = typeof Symbol !== 'undefined' && Symbol; +var hasSymbolSham = require('./shams'); + +/** @type {import('.')} */ +module.exports = function hasNativeSymbols() { + if (typeof origSymbol !== 'function') { return false; } + if (typeof Symbol !== 'function') { return false; } + if (typeof origSymbol('foo') !== 'symbol') { return false; } + if (typeof Symbol('bar') !== 'symbol') { return false; } + + return hasSymbolSham(); +}; diff --git a/node_modules/has-symbols/package.json b/node_modules/has-symbols/package.json new file mode 100644 index 0000000..d835e20 --- /dev/null +++ b/node_modules/has-symbols/package.json @@ -0,0 +1,111 @@ +{ + "name": "has-symbols", + "version": "1.1.0", + "description": "Determine if the JS environment has Symbol support. Supports spec, or shams.", + "main": "index.js", + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run --silent lint", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "tests-only": "npm run test:stock && npm run test:shams", + "test:stock": "nyc node test", + "test:staging": "nyc node --harmony --es-staging test", + "test:shams": "npm run --silent test:shams:getownpropertysymbols && npm run --silent test:shams:corejs", + "test:shams:corejs": "nyc node test/shams/core-js.js", + "test:shams:getownpropertysymbols": "nyc node test/shams/get-own-property-symbols.js", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && attw -P", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git://github.com/inspect-js/has-symbols.git" + }, + "keywords": [ + "Symbol", + "symbols", + "typeof", + "sham", + "polyfill", + "native", + "core-js", + "ES6" + ], + "author": { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + }, + "contributors": [ + { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + } + ], + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/has-symbols/issues" + }, + "homepage": "https://github.com/ljharb/has-symbols#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.0", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.0", + "@types/core-js": "^2.5.8", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "core-js": "^2.6.12", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "get-own-property-symbols": "^0.9.5", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "testling": { + "files": "test/index.js", + "browsers": [ + "iexplore/6.0..latest", + "firefox/3.0..6.0", + "firefox/15.0..latest", + "firefox/nightly", + "chrome/4.0..10.0", + "chrome/20.0..latest", + "chrome/canary", + "opera/10.0..latest", + "opera/next", + "safari/4.0..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2" + ] + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows", + "types" + ] + } +} diff --git a/node_modules/has-symbols/shams.d.ts b/node_modules/has-symbols/shams.d.ts new file mode 100644 index 0000000..8d0bf24 --- /dev/null +++ b/node_modules/has-symbols/shams.d.ts @@ -0,0 +1,3 @@ +declare function hasSymbolShams(): boolean; + +export = hasSymbolShams; \ No newline at end of file diff --git a/node_modules/has-symbols/shams.js b/node_modules/has-symbols/shams.js new file mode 100644 index 0000000..f97b474 --- /dev/null +++ b/node_modules/has-symbols/shams.js @@ -0,0 +1,45 @@ +'use strict'; + +/** @type {import('./shams')} */ +/* eslint complexity: [2, 18], max-statements: [2, 33] */ +module.exports = function hasSymbols() { + if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; } + if (typeof Symbol.iterator === 'symbol') { return true; } + + /** @type {{ [k in symbol]?: unknown }} */ + var obj = {}; + var sym = Symbol('test'); + var symObj = Object(sym); + if (typeof sym === 'string') { return false; } + + if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; } + if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; } + + // temp disabled per https://github.com/ljharb/object.assign/issues/17 + // if (sym instanceof Symbol) { return false; } + // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4 + // if (!(symObj instanceof Symbol)) { return false; } + + // if (typeof Symbol.prototype.toString !== 'function') { return false; } + // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; } + + var symVal = 42; + obj[sym] = symVal; + for (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop + if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; } + + if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; } + + var syms = Object.getOwnPropertySymbols(obj); + if (syms.length !== 1 || syms[0] !== sym) { return false; } + + if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } + + if (typeof Object.getOwnPropertyDescriptor === 'function') { + // eslint-disable-next-line no-extra-parens + var descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym)); + if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } + } + + return true; +}; diff --git a/node_modules/has-symbols/test/index.js b/node_modules/has-symbols/test/index.js new file mode 100644 index 0000000..352129c --- /dev/null +++ b/node_modules/has-symbols/test/index.js @@ -0,0 +1,22 @@ +'use strict'; + +var test = require('tape'); +var hasSymbols = require('../'); +var runSymbolTests = require('./tests'); + +test('interface', function (t) { + t.equal(typeof hasSymbols, 'function', 'is a function'); + t.equal(typeof hasSymbols(), 'boolean', 'returns a boolean'); + t.end(); +}); + +test('Symbols are supported', { skip: !hasSymbols() }, function (t) { + runSymbolTests(t); + t.end(); +}); + +test('Symbols are not supported', { skip: hasSymbols() }, function (t) { + t.equal(typeof Symbol, 'undefined', 'global Symbol is undefined'); + t.equal(typeof Object.getOwnPropertySymbols, 'undefined', 'Object.getOwnPropertySymbols does not exist'); + t.end(); +}); diff --git a/node_modules/has-symbols/test/shams/core-js.js b/node_modules/has-symbols/test/shams/core-js.js new file mode 100644 index 0000000..1a29024 --- /dev/null +++ b/node_modules/has-symbols/test/shams/core-js.js @@ -0,0 +1,29 @@ +'use strict'; + +var test = require('tape'); + +if (typeof Symbol === 'function' && typeof Symbol() === 'symbol') { + test('has native Symbol support', function (t) { + t.equal(typeof Symbol, 'function'); + t.equal(typeof Symbol(), 'symbol'); + t.end(); + }); + // @ts-expect-error TS is stupid and doesn't know about top level return + return; +} + +var hasSymbols = require('../../shams'); + +test('polyfilled Symbols', function (t) { + /* eslint-disable global-require */ + t.equal(hasSymbols(), false, 'hasSymbols is false before polyfilling'); + require('core-js/fn/symbol'); + require('core-js/fn/symbol/to-string-tag'); + + require('../tests')(t); + + var hasSymbolsAfter = hasSymbols(); + t.equal(hasSymbolsAfter, true, 'hasSymbols is true after polyfilling'); + /* eslint-enable global-require */ + t.end(); +}); diff --git a/node_modules/has-symbols/test/shams/get-own-property-symbols.js b/node_modules/has-symbols/test/shams/get-own-property-symbols.js new file mode 100644 index 0000000..e0296f8 --- /dev/null +++ b/node_modules/has-symbols/test/shams/get-own-property-symbols.js @@ -0,0 +1,29 @@ +'use strict'; + +var test = require('tape'); + +if (typeof Symbol === 'function' && typeof Symbol() === 'symbol') { + test('has native Symbol support', function (t) { + t.equal(typeof Symbol, 'function'); + t.equal(typeof Symbol(), 'symbol'); + t.end(); + }); + // @ts-expect-error TS is stupid and doesn't know about top level return + return; +} + +var hasSymbols = require('../../shams'); + +test('polyfilled Symbols', function (t) { + /* eslint-disable global-require */ + t.equal(hasSymbols(), false, 'hasSymbols is false before polyfilling'); + + require('get-own-property-symbols'); + + require('../tests')(t); + + var hasSymbolsAfter = hasSymbols(); + t.equal(hasSymbolsAfter, true, 'hasSymbols is true after polyfilling'); + /* eslint-enable global-require */ + t.end(); +}); diff --git a/node_modules/has-symbols/test/tests.js b/node_modules/has-symbols/test/tests.js new file mode 100644 index 0000000..66a2cb8 --- /dev/null +++ b/node_modules/has-symbols/test/tests.js @@ -0,0 +1,58 @@ +'use strict'; + +/** @type {(t: import('tape').Test) => false | void} */ +// eslint-disable-next-line consistent-return +module.exports = function runSymbolTests(t) { + t.equal(typeof Symbol, 'function', 'global Symbol is a function'); + + if (typeof Symbol !== 'function') { return false; } + + t.notEqual(Symbol(), Symbol(), 'two symbols are not equal'); + + /* + t.equal( + Symbol.prototype.toString.call(Symbol('foo')), + Symbol.prototype.toString.call(Symbol('foo')), + 'two symbols with the same description stringify the same' + ); + */ + + /* + var foo = Symbol('foo'); + + t.notEqual( + String(foo), + String(Symbol('bar')), + 'two symbols with different descriptions do not stringify the same' + ); + */ + + t.equal(typeof Symbol.prototype.toString, 'function', 'Symbol#toString is a function'); + // t.equal(String(foo), Symbol.prototype.toString.call(foo), 'Symbol#toString equals String of the same symbol'); + + t.equal(typeof Object.getOwnPropertySymbols, 'function', 'Object.getOwnPropertySymbols is a function'); + + /** @type {{ [k in symbol]?: unknown }} */ + var obj = {}; + var sym = Symbol('test'); + var symObj = Object(sym); + t.notEqual(typeof sym, 'string', 'Symbol is not a string'); + t.equal(Object.prototype.toString.call(sym), '[object Symbol]', 'symbol primitive Object#toStrings properly'); + t.equal(Object.prototype.toString.call(symObj), '[object Symbol]', 'symbol primitive Object#toStrings properly'); + + var symVal = 42; + obj[sym] = symVal; + // eslint-disable-next-line no-restricted-syntax, no-unused-vars + for (var _ in obj) { t.fail('symbol property key was found in for..in of object'); } + + t.deepEqual(Object.keys(obj), [], 'no enumerable own keys on symbol-valued object'); + t.deepEqual(Object.getOwnPropertyNames(obj), [], 'no own names on symbol-valued object'); + t.deepEqual(Object.getOwnPropertySymbols(obj), [sym], 'one own symbol on symbol-valued object'); + t.equal(Object.prototype.propertyIsEnumerable.call(obj, sym), true, 'symbol is enumerable'); + t.deepEqual(Object.getOwnPropertyDescriptor(obj, sym), { + configurable: true, + enumerable: true, + value: 42, + writable: true + }, 'property descriptor is correct'); +}; diff --git a/node_modules/has-symbols/tsconfig.json b/node_modules/has-symbols/tsconfig.json new file mode 100644 index 0000000..ba99af4 --- /dev/null +++ b/node_modules/has-symbols/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "ES2021", + "maxNodeModuleJsDepth": 0, + }, + "exclude": [ + "coverage" + ] +} diff --git a/node_modules/has-tostringtag/.eslintrc b/node_modules/has-tostringtag/.eslintrc new file mode 100644 index 0000000..3b5d9e9 --- /dev/null +++ b/node_modules/has-tostringtag/.eslintrc @@ -0,0 +1,5 @@ +{ + "root": true, + + "extends": "@ljharb", +} diff --git a/node_modules/has-tostringtag/.github/FUNDING.yml b/node_modules/has-tostringtag/.github/FUNDING.yml new file mode 100644 index 0000000..7a450e7 --- /dev/null +++ b/node_modules/has-tostringtag/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/has-tostringtag +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/has-tostringtag/.nycrc b/node_modules/has-tostringtag/.nycrc new file mode 100644 index 0000000..1826526 --- /dev/null +++ b/node_modules/has-tostringtag/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/has-tostringtag/CHANGELOG.md b/node_modules/has-tostringtag/CHANGELOG.md new file mode 100644 index 0000000..eb186ec --- /dev/null +++ b/node_modules/has-tostringtag/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.2](https://github.com/inspect-js/has-tostringtag/compare/v1.0.1...v1.0.2) - 2024-02-01 + +### Fixed + +- [Fix] move `has-symbols` back to prod deps [`#3`](https://github.com/inspect-js/has-tostringtag/issues/3) + +## [v1.0.1](https://github.com/inspect-js/has-tostringtag/compare/v1.0.0...v1.0.1) - 2024-02-01 + +### Commits + +- [patch] add types [`9276414`](https://github.com/inspect-js/has-tostringtag/commit/9276414b22fab3eeb234688841722c4be113201f) +- [meta] use `npmignore` to autogenerate an npmignore file [`5c0dcd1`](https://github.com/inspect-js/has-tostringtag/commit/5c0dcd1ff66419562a30d1fd88b966cc36bce5fc) +- [actions] reuse common workflows [`dee9509`](https://github.com/inspect-js/has-tostringtag/commit/dee950904ab5719b62cf8d73d2ac950b09093266) +- [actions] update codecov uploader [`b8cb3a0`](https://github.com/inspect-js/has-tostringtag/commit/b8cb3a0b8ffbb1593012c4c2daa45fb25642825d) +- [Tests] generate coverage [`be5b288`](https://github.com/inspect-js/has-tostringtag/commit/be5b28889e2735cdbcef387f84c2829995f2f05e) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `tape` [`69a0827`](https://github.com/inspect-js/has-tostringtag/commit/69a0827974e9b877b2c75b70b057555da8f25a65) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`4c9e210`](https://github.com/inspect-js/has-tostringtag/commit/4c9e210a5682f0557a3235d36b68ce809d7fb825) +- [actions] update rebase action to use reusable workflow [`ca8dcd3`](https://github.com/inspect-js/has-tostringtag/commit/ca8dcd3a6f3f5805d7e3fd461b654aedba0946e7) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `npmignore`, `tape` [`07f3eaf`](https://github.com/inspect-js/has-tostringtag/commit/07f3eafa45dd98208c94479737da77f9a69b94c4) +- [Deps] update `has-symbols` [`999e009`](https://github.com/inspect-js/has-tostringtag/commit/999e0095a7d1749a58f55472ec8bf8108cdfdcf3) +- [Tests] remove staging tests since they fail on modern node [`9d9526b`](https://github.com/inspect-js/has-tostringtag/commit/9d9526b1dc1ca7f2292b52efda4c3d857b0e39bd) + +## v1.0.0 - 2021-08-05 + +### Commits + +- Tests [`6b6f573`](https://github.com/inspect-js/has-tostringtag/commit/6b6f5734dc2058badb300ff0783efdad95fe1a65) +- Initial commit [`2f8190e`](https://github.com/inspect-js/has-tostringtag/commit/2f8190e799fac32ba9b95a076c0255e01d7ce475) +- [meta] do not publish github action workflow files [`6e08cc4`](https://github.com/inspect-js/has-tostringtag/commit/6e08cc4e0fea7ec71ef66e70734b2af2c4a8b71b) +- readme [`94bed6c`](https://github.com/inspect-js/has-tostringtag/commit/94bed6c9560cbbfda034f8d6c260bb7b0db33c1a) +- npm init [`be67840`](https://github.com/inspect-js/has-tostringtag/commit/be67840ab92ee7adb98bcc65261975543f815fa5) +- Implementation [`c4914ec`](https://github.com/inspect-js/has-tostringtag/commit/c4914ecc51ddee692c85b471ae0a5d8123030fbf) +- [meta] use `auto-changelog` [`4aaf768`](https://github.com/inspect-js/has-tostringtag/commit/4aaf76895ae01d7b739f2b19f967ef2372506cd7) +- Only apps should have lockfiles [`bc4d99e`](https://github.com/inspect-js/has-tostringtag/commit/bc4d99e4bf494afbaa235c5f098df6e642edf724) +- [meta] add `safe-publish-latest` [`6523c05`](https://github.com/inspect-js/has-tostringtag/commit/6523c05c9b87140f3ae74c9daf91633dd9ff4e1f) diff --git a/node_modules/has-tostringtag/LICENSE b/node_modules/has-tostringtag/LICENSE new file mode 100644 index 0000000..7948bc0 --- /dev/null +++ b/node_modules/has-tostringtag/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Inspect JS + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/has-tostringtag/README.md b/node_modules/has-tostringtag/README.md new file mode 100644 index 0000000..67a5e92 --- /dev/null +++ b/node_modules/has-tostringtag/README.md @@ -0,0 +1,46 @@ +# has-tostringtag [![Version Badge][2]][1] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][5]][6] +[![dev dependency status][7]][8] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][11]][1] + +Determine if the JS environment has `Symbol.toStringTag` support. Supports spec, or shams. + +## Example + +```js +var hasSymbolToStringTag = require('has-tostringtag'); + +hasSymbolToStringTag() === true; // if the environment has native Symbol.toStringTag support. Not polyfillable, not forgeable. + +var hasSymbolToStringTagKinda = require('has-tostringtag/shams'); +hasSymbolToStringTagKinda() === true; // if the environment has a Symbol.toStringTag sham that mostly follows the spec. +``` + +## Supported Symbol shams + - get-own-property-symbols [npm](https://www.npmjs.com/package/get-own-property-symbols) | [github](https://github.com/WebReflection/get-own-property-symbols) + - core-js [npm](https://www.npmjs.com/package/core-js) | [github](https://github.com/zloirock/core-js) + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +[1]: https://npmjs.org/package/has-tostringtag +[2]: https://versionbadg.es/inspect-js/has-tostringtag.svg +[5]: https://david-dm.org/inspect-js/has-tostringtag.svg +[6]: https://david-dm.org/inspect-js/has-tostringtag +[7]: https://david-dm.org/inspect-js/has-tostringtag/dev-status.svg +[8]: https://david-dm.org/inspect-js/has-tostringtag#info=devDependencies +[11]: https://nodei.co/npm/has-tostringtag.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/has-tostringtag.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/has-tostringtag.svg +[downloads-url]: https://npm-stat.com/charts.html?package=has-tostringtag +[codecov-image]: https://codecov.io/gh/inspect-js/has-tostringtag/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/inspect-js/has-tostringtag/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/has-tostringtag +[actions-url]: https://github.com/inspect-js/has-tostringtag/actions diff --git a/node_modules/has-tostringtag/index.d.ts b/node_modules/has-tostringtag/index.d.ts new file mode 100644 index 0000000..a61bc60 --- /dev/null +++ b/node_modules/has-tostringtag/index.d.ts @@ -0,0 +1,3 @@ +declare function hasToStringTag(): boolean; + +export = hasToStringTag; diff --git a/node_modules/has-tostringtag/index.js b/node_modules/has-tostringtag/index.js new file mode 100644 index 0000000..77bfa00 --- /dev/null +++ b/node_modules/has-tostringtag/index.js @@ -0,0 +1,8 @@ +'use strict'; + +var hasSymbols = require('has-symbols'); + +/** @type {import('.')} */ +module.exports = function hasToStringTag() { + return hasSymbols() && typeof Symbol.toStringTag === 'symbol'; +}; diff --git a/node_modules/has-tostringtag/package.json b/node_modules/has-tostringtag/package.json new file mode 100644 index 0000000..e5b0300 --- /dev/null +++ b/node_modules/has-tostringtag/package.json @@ -0,0 +1,108 @@ +{ + "name": "has-tostringtag", + "version": "1.0.2", + "author": { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "contributors": [ + { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + } + ], + "description": "Determine if the JS environment has `Symbol.toStringTag` support. Supports spec, or shams.", + "license": "MIT", + "main": "index.js", + "types": "./index.d.ts", + "exports": { + ".": [ + { + "types": "./index.d.ts", + "default": "./index.js" + }, + "./index.js" + ], + "./shams": [ + { + "types": "./shams.d.ts", + "default": "./shams.js" + }, + "./shams.js" + ], + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run --silent lint", + "test": "npm run tests-only", + "posttest": "aud --production", + "tests-only": "npm run test:stock && npm run test:shams", + "test:stock": "nyc node test", + "test:staging": "nyc node --harmony --es-staging test", + "test:shams": "npm run --silent test:shams:getownpropertysymbols && npm run --silent test:shams:corejs", + "test:shams:corejs": "nyc node test/shams/core-js.js", + "test:shams:getownpropertysymbols": "nyc node test/shams/get-own-property-symbols.js", + "lint": "eslint --ext=js,mjs .", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/inspect-js/has-tostringtag.git" + }, + "bugs": { + "url": "https://github.com/inspect-js/has-tostringtag/issues" + }, + "homepage": "https://github.com/inspect-js/has-tostringtag#readme", + "keywords": [ + "javascript", + "ecmascript", + "symbol", + "symbols", + "tostringtag", + "Symbol.toStringTag" + ], + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "@types/has-symbols": "^1.0.2", + "@types/tape": "^5.6.4", + "aud": "^2.0.4", + "auto-changelog": "^2.4.0", + "core-js": "^2.6.12", + "eslint": "=8.8.0", + "get-own-property-symbols": "^0.9.5", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.4", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "dependencies": { + "has-symbols": "^1.0.3" + } +} diff --git a/node_modules/has-tostringtag/shams.d.ts b/node_modules/has-tostringtag/shams.d.ts new file mode 100644 index 0000000..ea4aeec --- /dev/null +++ b/node_modules/has-tostringtag/shams.d.ts @@ -0,0 +1,3 @@ +declare function hasToStringTagShams(): boolean; + +export = hasToStringTagShams; diff --git a/node_modules/has-tostringtag/shams.js b/node_modules/has-tostringtag/shams.js new file mode 100644 index 0000000..809580d --- /dev/null +++ b/node_modules/has-tostringtag/shams.js @@ -0,0 +1,8 @@ +'use strict'; + +var hasSymbols = require('has-symbols/shams'); + +/** @type {import('.')} */ +module.exports = function hasToStringTagShams() { + return hasSymbols() && !!Symbol.toStringTag; +}; diff --git a/node_modules/has-tostringtag/test/index.js b/node_modules/has-tostringtag/test/index.js new file mode 100644 index 0000000..0679afd --- /dev/null +++ b/node_modules/has-tostringtag/test/index.js @@ -0,0 +1,21 @@ +'use strict'; + +var test = require('tape'); +var hasSymbolToStringTag = require('../'); +var runSymbolTests = require('./tests'); + +test('interface', function (t) { + t.equal(typeof hasSymbolToStringTag, 'function', 'is a function'); + t.equal(typeof hasSymbolToStringTag(), 'boolean', 'returns a boolean'); + t.end(); +}); + +test('Symbol.toStringTag exists', { skip: !hasSymbolToStringTag() }, function (t) { + runSymbolTests(t); + t.end(); +}); + +test('Symbol.toStringTag does not exist', { skip: hasSymbolToStringTag() }, function (t) { + t.equal(typeof Symbol === 'undefined' ? 'undefined' : typeof Symbol.toStringTag, 'undefined', 'global Symbol.toStringTag is undefined'); + t.end(); +}); diff --git a/node_modules/has-tostringtag/test/shams/core-js.js b/node_modules/has-tostringtag/test/shams/core-js.js new file mode 100644 index 0000000..7ab214d --- /dev/null +++ b/node_modules/has-tostringtag/test/shams/core-js.js @@ -0,0 +1,31 @@ +'use strict'; + +var test = require('tape'); + +if (typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol') { + test('has native Symbol.toStringTag support', function (t) { + t.equal(typeof Symbol, 'function'); + t.equal(typeof Symbol.toStringTag, 'symbol'); + t.end(); + }); + // @ts-expect-error CJS has top-level return + return; +} + +var hasSymbolToStringTag = require('../../shams'); + +test('polyfilled Symbols', function (t) { + /* eslint-disable global-require */ + t.equal(hasSymbolToStringTag(), false, 'hasSymbolToStringTag is false before polyfilling'); + // @ts-expect-error no types defined + require('core-js/fn/symbol'); + // @ts-expect-error no types defined + require('core-js/fn/symbol/to-string-tag'); + + require('../tests')(t); + + var hasToStringTagAfter = hasSymbolToStringTag(); + t.equal(hasToStringTagAfter, true, 'hasSymbolToStringTag is true after polyfilling'); + /* eslint-enable global-require */ + t.end(); +}); diff --git a/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js b/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js new file mode 100644 index 0000000..c8af44c --- /dev/null +++ b/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js @@ -0,0 +1,30 @@ +'use strict'; + +var test = require('tape'); + +if (typeof Symbol === 'function' && typeof Symbol() === 'symbol') { + test('has native Symbol support', function (t) { + t.equal(typeof Symbol, 'function'); + t.equal(typeof Symbol(), 'symbol'); + t.end(); + }); + // @ts-expect-error CJS has top-level return + return; +} + +var hasSymbolToStringTag = require('../../shams'); + +test('polyfilled Symbols', function (t) { + /* eslint-disable global-require */ + t.equal(hasSymbolToStringTag(), false, 'hasSymbolToStringTag is false before polyfilling'); + + // @ts-expect-error no types defined + require('get-own-property-symbols'); + + require('../tests')(t); + + var hasToStringTagAfter = hasSymbolToStringTag(); + t.equal(hasToStringTagAfter, true, 'hasSymbolToStringTag is true after polyfilling'); + /* eslint-enable global-require */ + t.end(); +}); diff --git a/node_modules/has-tostringtag/test/tests.js b/node_modules/has-tostringtag/test/tests.js new file mode 100644 index 0000000..2aa0d48 --- /dev/null +++ b/node_modules/has-tostringtag/test/tests.js @@ -0,0 +1,15 @@ +'use strict'; + +// eslint-disable-next-line consistent-return +module.exports = /** @type {(t: import('tape').Test) => void | false} */ function runSymbolTests(t) { + t.equal(typeof Symbol, 'function', 'global Symbol is a function'); + t.ok(Symbol.toStringTag, 'Symbol.toStringTag exists'); + + if (typeof Symbol !== 'function' || !Symbol.toStringTag) { return false; } + + /** @type {{ [Symbol.toStringTag]?: 'test'}} */ + var obj = {}; + obj[Symbol.toStringTag] = 'test'; + + t.equal(Object.prototype.toString.call(obj), '[object test]'); +}; diff --git a/node_modules/has-tostringtag/tsconfig.json b/node_modules/has-tostringtag/tsconfig.json new file mode 100644 index 0000000..2002ce5 --- /dev/null +++ b/node_modules/has-tostringtag/tsconfig.json @@ -0,0 +1,49 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + + /* Language and Environment */ + "target": "ESNext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + "typeRoots": ["types"], /* Specify multiple folders that act like './node_modules/@types'. */ + "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + + /* JavaScript Support */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + "maxNodeModuleJsDepth": 0, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + "declarationMap": true, /* Create sourcemaps for d.ts files. */ + "noEmit": true, /* Disable emitting files from a compilation. */ + + /* Interop Constraints */ + "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + + /* Completeness */ + //"skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "exclude": [ + "coverage" + ] +} diff --git a/node_modules/hasown/.eslintrc b/node_modules/hasown/.eslintrc new file mode 100644 index 0000000..3b5d9e9 --- /dev/null +++ b/node_modules/hasown/.eslintrc @@ -0,0 +1,5 @@ +{ + "root": true, + + "extends": "@ljharb", +} diff --git a/node_modules/hasown/.github/FUNDING.yml b/node_modules/hasown/.github/FUNDING.yml new file mode 100644 index 0000000..d68c8b7 --- /dev/null +++ b/node_modules/hasown/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/hasown +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/node_modules/hasown/.nycrc b/node_modules/hasown/.nycrc new file mode 100644 index 0000000..1826526 --- /dev/null +++ b/node_modules/hasown/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/hasown/CHANGELOG.md b/node_modules/hasown/CHANGELOG.md new file mode 100644 index 0000000..2b0a980 --- /dev/null +++ b/node_modules/hasown/CHANGELOG.md @@ -0,0 +1,40 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v2.0.2](https://github.com/inspect-js/hasOwn/compare/v2.0.1...v2.0.2) - 2024-03-10 + +### Commits + +- [types] use shared config [`68e9d4d`](https://github.com/inspect-js/hasOwn/commit/68e9d4dab6facb4f05f02c6baea94a3f2a4e44b2) +- [actions] remove redundant finisher; use reusable workflow [`241a68e`](https://github.com/inspect-js/hasOwn/commit/241a68e13ea1fe52bec5ba7f74144befc31fae7b) +- [Tests] increase coverage [`4125c0d`](https://github.com/inspect-js/hasOwn/commit/4125c0d6121db56ae30e38346dfb0c000b04f0a7) +- [Tests] skip `npm ls` in old node due to TS [`01b9282`](https://github.com/inspect-js/hasOwn/commit/01b92822f9971dea031eafdd14767df41d61c202) +- [types] improve predicate type [`d340f85`](https://github.com/inspect-js/hasOwn/commit/d340f85ce02e286ef61096cbbb6697081d40a12b) +- [Dev Deps] update `tape` [`70089fc`](https://github.com/inspect-js/hasOwn/commit/70089fcf544e64acc024cbe60f5a9b00acad86de) +- [Tests] use `@arethetypeswrong/cli` [`50b272c`](https://github.com/inspect-js/hasOwn/commit/50b272c829f40d053a3dd91c9796e0ac0b2af084) + +## [v2.0.1](https://github.com/inspect-js/hasOwn/compare/v2.0.0...v2.0.1) - 2024-02-10 + +### Commits + +- [types] use a handwritten d.ts file; fix exported type [`012b989`](https://github.com/inspect-js/hasOwn/commit/012b9898ccf91dc441e2ebf594ff70270a5fda58) +- [Dev Deps] update `@types/function-bind`, `@types/mock-property`, `@types/tape`, `aud`, `mock-property`, `npmignore`, `tape`, `typescript` [`977a56f`](https://github.com/inspect-js/hasOwn/commit/977a56f51a1f8b20566f3c471612137894644025) +- [meta] add `sideEffects` flag [`3a60b7b`](https://github.com/inspect-js/hasOwn/commit/3a60b7bf42fccd8c605e5f145a6fcc83b13cb46f) + +## [v2.0.0](https://github.com/inspect-js/hasOwn/compare/v1.0.1...v2.0.0) - 2023-10-19 + +### Commits + +- revamped implementation, tests, readme [`72bf8b3`](https://github.com/inspect-js/hasOwn/commit/72bf8b338e77a638f0a290c63ffaed18339c36b4) +- [meta] revamp package.json [`079775f`](https://github.com/inspect-js/hasOwn/commit/079775fb1ec72c1c6334069593617a0be3847458) +- Only apps should have lockfiles [`6640e23`](https://github.com/inspect-js/hasOwn/commit/6640e233d1bb8b65260880f90787637db157d215) + +## v1.0.1 - 2023-10-10 + +### Commits + +- Initial commit [`8dbfde6`](https://github.com/inspect-js/hasOwn/commit/8dbfde6e8fb0ebb076fab38d138f2984eb340a62) diff --git a/node_modules/hasown/LICENSE b/node_modules/hasown/LICENSE new file mode 100644 index 0000000..0314929 --- /dev/null +++ b/node_modules/hasown/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Jordan Harband and contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/hasown/README.md b/node_modules/hasown/README.md new file mode 100644 index 0000000..f759b8a --- /dev/null +++ b/node_modules/hasown/README.md @@ -0,0 +1,40 @@ +# hasown [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +A robust, ES3 compatible, "has own property" predicate. + +## Example + +```js +const assert = require('assert'); +const hasOwn = require('hasown'); + +assert.equal(hasOwn({}, 'toString'), false); +assert.equal(hasOwn([], 'length'), true); +assert.equal(hasOwn({ a: 42 }, 'a'), true); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/hasown +[npm-version-svg]: https://versionbadg.es/inspect-js/hasown.svg +[deps-svg]: https://david-dm.org/inspect-js/hasOwn.svg +[deps-url]: https://david-dm.org/inspect-js/hasOwn +[dev-deps-svg]: https://david-dm.org/inspect-js/hasOwn/dev-status.svg +[dev-deps-url]: https://david-dm.org/inspect-js/hasOwn#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/hasown.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/hasown.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/hasown.svg +[downloads-url]: https://npm-stat.com/charts.html?package=hasown +[codecov-image]: https://codecov.io/gh/inspect-js/hasOwn/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/inspect-js/hasOwn/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/hasOwn +[actions-url]: https://github.com/inspect-js/hasOwn/actions diff --git a/node_modules/hasown/index.d.ts b/node_modules/hasown/index.d.ts new file mode 100644 index 0000000..aafdf3b --- /dev/null +++ b/node_modules/hasown/index.d.ts @@ -0,0 +1,3 @@ +declare function hasOwn(o: O, p: K): o is O & Record; + +export = hasOwn; diff --git a/node_modules/hasown/index.js b/node_modules/hasown/index.js new file mode 100644 index 0000000..34e6059 --- /dev/null +++ b/node_modules/hasown/index.js @@ -0,0 +1,8 @@ +'use strict'; + +var call = Function.prototype.call; +var $hasOwn = Object.prototype.hasOwnProperty; +var bind = require('function-bind'); + +/** @type {import('.')} */ +module.exports = bind.call(call, $hasOwn); diff --git a/node_modules/hasown/package.json b/node_modules/hasown/package.json new file mode 100644 index 0000000..8502e13 --- /dev/null +++ b/node_modules/hasown/package.json @@ -0,0 +1,92 @@ +{ + "name": "hasown", + "version": "2.0.2", + "description": "A robust, ES3 compatible, \"has own property\" predicate.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "types": "index.d.ts", + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "npm run tsc", + "pretest": "npm run lint", + "tsc": "tsc -p .", + "posttsc": "attw -P", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/inspect-js/hasOwn.git" + }, + "keywords": [ + "has", + "hasOwnProperty", + "hasOwn", + "has-own", + "own", + "has", + "property", + "in", + "javascript", + "ecmascript" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/inspect-js/hasOwn/issues" + }, + "homepage": "https://github.com/inspect-js/hasOwn#readme", + "dependencies": { + "function-bind": "^1.1.2" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.15.1", + "@ljharb/eslint-config": "^21.1.0", + "@ljharb/tsconfig": "^0.2.0", + "@types/function-bind": "^1.1.10", + "@types/mock-property": "^1.0.2", + "@types/tape": "^5.6.4", + "aud": "^2.0.4", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "mock-property": "^1.0.3", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.5", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows", + "test" + ] + } +} diff --git a/node_modules/hasown/tsconfig.json b/node_modules/hasown/tsconfig.json new file mode 100644 index 0000000..0930c56 --- /dev/null +++ b/node_modules/hasown/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "@ljharb/tsconfig", + "exclude": [ + "coverage", + ], +} diff --git a/node_modules/math-intrinsics/.eslintrc b/node_modules/math-intrinsics/.eslintrc new file mode 100644 index 0000000..d90a1bc --- /dev/null +++ b/node_modules/math-intrinsics/.eslintrc @@ -0,0 +1,16 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "eqeqeq": ["error", "allow-null"], + "id-length": "off", + "new-cap": ["error", { + "capIsNewExceptions": [ + "RequireObjectCoercible", + "ToObject", + ], + }], + }, +} diff --git a/node_modules/math-intrinsics/.github/FUNDING.yml b/node_modules/math-intrinsics/.github/FUNDING.yml new file mode 100644 index 0000000..868f4ff --- /dev/null +++ b/node_modules/math-intrinsics/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/math-intrinsics +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/node_modules/math-intrinsics/CHANGELOG.md b/node_modules/math-intrinsics/CHANGELOG.md new file mode 100644 index 0000000..9cf48f5 --- /dev/null +++ b/node_modules/math-intrinsics/CHANGELOG.md @@ -0,0 +1,24 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.1.0](https://github.com/es-shims/math-intrinsics/compare/v1.0.0...v1.1.0) - 2024-12-18 + +### Commits + +- [New] add `round` [`7cfb044`](https://github.com/es-shims/math-intrinsics/commit/7cfb04460c0fbdf1ca101eecbac3f59d11994130) +- [Tests] add attw [`e96be8f`](https://github.com/es-shims/math-intrinsics/commit/e96be8fbf58449eafe976446a0470e6ea561ad8d) +- [Dev Deps] update `@types/tape` [`30d0023`](https://github.com/es-shims/math-intrinsics/commit/30d00234ce8a3fa0094a61cd55d6686eb91e36ec) + +## v1.0.0 - 2024-12-11 + +### Commits + +- Initial implementation, tests, readme, types [`b898caa`](https://github.com/es-shims/math-intrinsics/commit/b898caae94e9994a94a42b8740f7bbcfd0a868fe) +- Initial commit [`02745b0`](https://github.com/es-shims/math-intrinsics/commit/02745b03a62255af8a332771987b55d127538d9c) +- [New] add `constants/maxArrayLength`, `mod` [`b978178`](https://github.com/es-shims/math-intrinsics/commit/b978178a57685bd23ed1c7efe2137f3784f5fcc5) +- npm init [`a39fc57`](https://github.com/es-shims/math-intrinsics/commit/a39fc57e5639a645d0bd52a0dc56202480223be2) +- Only apps should have lockfiles [`9451580`](https://github.com/es-shims/math-intrinsics/commit/94515800fb34db4f3cc7e99290042d45609ac7bd) diff --git a/node_modules/math-intrinsics/LICENSE b/node_modules/math-intrinsics/LICENSE new file mode 100644 index 0000000..34995e7 --- /dev/null +++ b/node_modules/math-intrinsics/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 ECMAScript Shims + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/math-intrinsics/README.md b/node_modules/math-intrinsics/README.md new file mode 100644 index 0000000..4a66dcf --- /dev/null +++ b/node_modules/math-intrinsics/README.md @@ -0,0 +1,50 @@ +# math-intrinsics [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +ES Math-related intrinsics and helpers, robustly cached. + + - `abs` + - `floor` + - `isFinite` + - `isInteger` + - `isNaN` + - `isNegativeZero` + - `max` + - `min` + - `mod` + - `pow` + - `round` + - `sign` + - `constants/maxArrayLength` + - `constants/maxSafeInteger` + - `constants/maxValue` + + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/math-intrinsics +[npm-version-svg]: https://versionbadg.es/es-shims/math-intrinsics.svg +[deps-svg]: https://david-dm.org/es-shims/math-intrinsics.svg +[deps-url]: https://david-dm.org/es-shims/math-intrinsics +[dev-deps-svg]: https://david-dm.org/es-shims/math-intrinsics/dev-status.svg +[dev-deps-url]: https://david-dm.org/es-shims/math-intrinsics#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/math-intrinsics.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/math-intrinsics.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-object.svg +[downloads-url]: https://npm-stat.com/charts.html?package=math-intrinsics +[codecov-image]: https://codecov.io/gh/es-shims/math-intrinsics/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/es-shims/math-intrinsics/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/math-intrinsics +[actions-url]: https://github.com/es-shims/math-intrinsics/actions diff --git a/node_modules/math-intrinsics/abs.d.ts b/node_modules/math-intrinsics/abs.d.ts new file mode 100644 index 0000000..14ad9c6 --- /dev/null +++ b/node_modules/math-intrinsics/abs.d.ts @@ -0,0 +1 @@ +export = Math.abs; \ No newline at end of file diff --git a/node_modules/math-intrinsics/abs.js b/node_modules/math-intrinsics/abs.js new file mode 100644 index 0000000..a751424 --- /dev/null +++ b/node_modules/math-intrinsics/abs.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./abs')} */ +module.exports = Math.abs; diff --git a/node_modules/math-intrinsics/constants/maxArrayLength.d.ts b/node_modules/math-intrinsics/constants/maxArrayLength.d.ts new file mode 100644 index 0000000..b92d46b --- /dev/null +++ b/node_modules/math-intrinsics/constants/maxArrayLength.d.ts @@ -0,0 +1,3 @@ +declare const MAX_ARRAY_LENGTH: 4294967295; + +export = MAX_ARRAY_LENGTH; \ No newline at end of file diff --git a/node_modules/math-intrinsics/constants/maxArrayLength.js b/node_modules/math-intrinsics/constants/maxArrayLength.js new file mode 100644 index 0000000..cfc6aff --- /dev/null +++ b/node_modules/math-intrinsics/constants/maxArrayLength.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./maxArrayLength')} */ +module.exports = 4294967295; // Math.pow(2, 32) - 1; diff --git a/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts b/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts new file mode 100644 index 0000000..fee3f62 --- /dev/null +++ b/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts @@ -0,0 +1,3 @@ +declare const MAX_SAFE_INTEGER: 9007199254740991; + +export = MAX_SAFE_INTEGER; \ No newline at end of file diff --git a/node_modules/math-intrinsics/constants/maxSafeInteger.js b/node_modules/math-intrinsics/constants/maxSafeInteger.js new file mode 100644 index 0000000..b568ad3 --- /dev/null +++ b/node_modules/math-intrinsics/constants/maxSafeInteger.js @@ -0,0 +1,5 @@ +'use strict'; + +/** @type {import('./maxSafeInteger')} */ +// eslint-disable-next-line no-extra-parens +module.exports = /** @type {import('./maxSafeInteger')} */ (Number.MAX_SAFE_INTEGER) || 9007199254740991; // Math.pow(2, 53) - 1; diff --git a/node_modules/math-intrinsics/constants/maxValue.d.ts b/node_modules/math-intrinsics/constants/maxValue.d.ts new file mode 100644 index 0000000..292cb82 --- /dev/null +++ b/node_modules/math-intrinsics/constants/maxValue.d.ts @@ -0,0 +1,3 @@ +declare const MAX_VALUE: 1.7976931348623157e+308; + +export = MAX_VALUE; diff --git a/node_modules/math-intrinsics/constants/maxValue.js b/node_modules/math-intrinsics/constants/maxValue.js new file mode 100644 index 0000000..a2202dc --- /dev/null +++ b/node_modules/math-intrinsics/constants/maxValue.js @@ -0,0 +1,5 @@ +'use strict'; + +/** @type {import('./maxValue')} */ +// eslint-disable-next-line no-extra-parens +module.exports = /** @type {import('./maxValue')} */ (Number.MAX_VALUE) || 1.7976931348623157e+308; diff --git a/node_modules/math-intrinsics/floor.d.ts b/node_modules/math-intrinsics/floor.d.ts new file mode 100644 index 0000000..9265236 --- /dev/null +++ b/node_modules/math-intrinsics/floor.d.ts @@ -0,0 +1 @@ +export = Math.floor; \ No newline at end of file diff --git a/node_modules/math-intrinsics/floor.js b/node_modules/math-intrinsics/floor.js new file mode 100644 index 0000000..ab0e5d7 --- /dev/null +++ b/node_modules/math-intrinsics/floor.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./floor')} */ +module.exports = Math.floor; diff --git a/node_modules/math-intrinsics/isFinite.d.ts b/node_modules/math-intrinsics/isFinite.d.ts new file mode 100644 index 0000000..6daae33 --- /dev/null +++ b/node_modules/math-intrinsics/isFinite.d.ts @@ -0,0 +1,3 @@ +declare function isFinite(x: unknown): x is number | bigint; + +export = isFinite; \ No newline at end of file diff --git a/node_modules/math-intrinsics/isFinite.js b/node_modules/math-intrinsics/isFinite.js new file mode 100644 index 0000000..b201a5a --- /dev/null +++ b/node_modules/math-intrinsics/isFinite.js @@ -0,0 +1,12 @@ +'use strict'; + +var $isNaN = require('./isNaN'); + +/** @type {import('./isFinite')} */ +module.exports = function isFinite(x) { + return (typeof x === 'number' || typeof x === 'bigint') + && !$isNaN(x) + && x !== Infinity + && x !== -Infinity; +}; + diff --git a/node_modules/math-intrinsics/isInteger.d.ts b/node_modules/math-intrinsics/isInteger.d.ts new file mode 100644 index 0000000..13935a8 --- /dev/null +++ b/node_modules/math-intrinsics/isInteger.d.ts @@ -0,0 +1,3 @@ +declare function isInteger(argument: unknown): argument is number; + +export = isInteger; \ No newline at end of file diff --git a/node_modules/math-intrinsics/isInteger.js b/node_modules/math-intrinsics/isInteger.js new file mode 100644 index 0000000..4b1b9a5 --- /dev/null +++ b/node_modules/math-intrinsics/isInteger.js @@ -0,0 +1,16 @@ +'use strict'; + +var $abs = require('./abs'); +var $floor = require('./floor'); + +var $isNaN = require('./isNaN'); +var $isFinite = require('./isFinite'); + +/** @type {import('./isInteger')} */ +module.exports = function isInteger(argument) { + if (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) { + return false; + } + var absValue = $abs(argument); + return $floor(absValue) === absValue; +}; diff --git a/node_modules/math-intrinsics/isNaN.d.ts b/node_modules/math-intrinsics/isNaN.d.ts new file mode 100644 index 0000000..c1d4c55 --- /dev/null +++ b/node_modules/math-intrinsics/isNaN.d.ts @@ -0,0 +1 @@ +export = Number.isNaN; \ No newline at end of file diff --git a/node_modules/math-intrinsics/isNaN.js b/node_modules/math-intrinsics/isNaN.js new file mode 100644 index 0000000..e36475c --- /dev/null +++ b/node_modules/math-intrinsics/isNaN.js @@ -0,0 +1,6 @@ +'use strict'; + +/** @type {import('./isNaN')} */ +module.exports = Number.isNaN || function isNaN(a) { + return a !== a; +}; diff --git a/node_modules/math-intrinsics/isNegativeZero.d.ts b/node_modules/math-intrinsics/isNegativeZero.d.ts new file mode 100644 index 0000000..7ad8819 --- /dev/null +++ b/node_modules/math-intrinsics/isNegativeZero.d.ts @@ -0,0 +1,3 @@ +declare function isNegativeZero(x: unknown): boolean; + +export = isNegativeZero; \ No newline at end of file diff --git a/node_modules/math-intrinsics/isNegativeZero.js b/node_modules/math-intrinsics/isNegativeZero.js new file mode 100644 index 0000000..b69adcc --- /dev/null +++ b/node_modules/math-intrinsics/isNegativeZero.js @@ -0,0 +1,6 @@ +'use strict'; + +/** @type {import('./isNegativeZero')} */ +module.exports = function isNegativeZero(x) { + return x === 0 && 1 / x === 1 / -0; +}; diff --git a/node_modules/math-intrinsics/max.d.ts b/node_modules/math-intrinsics/max.d.ts new file mode 100644 index 0000000..ad6f43e --- /dev/null +++ b/node_modules/math-intrinsics/max.d.ts @@ -0,0 +1 @@ +export = Math.max; \ No newline at end of file diff --git a/node_modules/math-intrinsics/max.js b/node_modules/math-intrinsics/max.js new file mode 100644 index 0000000..edb55df --- /dev/null +++ b/node_modules/math-intrinsics/max.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./max')} */ +module.exports = Math.max; diff --git a/node_modules/math-intrinsics/min.d.ts b/node_modules/math-intrinsics/min.d.ts new file mode 100644 index 0000000..fd90f2d --- /dev/null +++ b/node_modules/math-intrinsics/min.d.ts @@ -0,0 +1 @@ +export = Math.min; \ No newline at end of file diff --git a/node_modules/math-intrinsics/min.js b/node_modules/math-intrinsics/min.js new file mode 100644 index 0000000..5a4a7c7 --- /dev/null +++ b/node_modules/math-intrinsics/min.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./min')} */ +module.exports = Math.min; diff --git a/node_modules/math-intrinsics/mod.d.ts b/node_modules/math-intrinsics/mod.d.ts new file mode 100644 index 0000000..549dbd4 --- /dev/null +++ b/node_modules/math-intrinsics/mod.d.ts @@ -0,0 +1,3 @@ +declare function mod(number: number, modulo: number): number; + +export = mod; \ No newline at end of file diff --git a/node_modules/math-intrinsics/mod.js b/node_modules/math-intrinsics/mod.js new file mode 100644 index 0000000..4a98362 --- /dev/null +++ b/node_modules/math-intrinsics/mod.js @@ -0,0 +1,9 @@ +'use strict'; + +var $floor = require('./floor'); + +/** @type {import('./mod')} */ +module.exports = function mod(number, modulo) { + var remain = number % modulo; + return $floor(remain >= 0 ? remain : remain + modulo); +}; diff --git a/node_modules/math-intrinsics/package.json b/node_modules/math-intrinsics/package.json new file mode 100644 index 0000000..0676273 --- /dev/null +++ b/node_modules/math-intrinsics/package.json @@ -0,0 +1,86 @@ +{ + "name": "math-intrinsics", + "version": "1.1.0", + "description": "ES Math-related intrinsics and helpers, robustly cached.", + "main": false, + "exports": { + "./abs": "./abs.js", + "./floor": "./floor.js", + "./isFinite": "./isFinite.js", + "./isInteger": "./isInteger.js", + "./isNaN": "./isNaN.js", + "./isNegativeZero": "./isNegativeZero.js", + "./max": "./max.js", + "./min": "./min.js", + "./mod": "./mod.js", + "./pow": "./pow.js", + "./sign": "./sign.js", + "./round": "./round.js", + "./constants/maxArrayLength": "./constants/maxArrayLength.js", + "./constants/maxSafeInteger": "./constants/maxSafeInteger.js", + "./constants/maxValue": "./constants/maxValue.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "npx npm@'>= 10.2' audit --production", + "prelint": "evalmd README.md && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc && attw -P", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/es-shims/math-intrinsics.git" + }, + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/es-shims/math-intrinsics/issues" + }, + "homepage": "https://github.com/es-shims/math-intrinsics#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/for-each": "^0.3.3", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.8.0", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "es-value-fixtures": "^1.5.0", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.3", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.3", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/math-intrinsics/pow.d.ts b/node_modules/math-intrinsics/pow.d.ts new file mode 100644 index 0000000..5873c44 --- /dev/null +++ b/node_modules/math-intrinsics/pow.d.ts @@ -0,0 +1 @@ +export = Math.pow; \ No newline at end of file diff --git a/node_modules/math-intrinsics/pow.js b/node_modules/math-intrinsics/pow.js new file mode 100644 index 0000000..c0a4103 --- /dev/null +++ b/node_modules/math-intrinsics/pow.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./pow')} */ +module.exports = Math.pow; diff --git a/node_modules/math-intrinsics/round.d.ts b/node_modules/math-intrinsics/round.d.ts new file mode 100644 index 0000000..da1fde3 --- /dev/null +++ b/node_modules/math-intrinsics/round.d.ts @@ -0,0 +1 @@ +export = Math.round; \ No newline at end of file diff --git a/node_modules/math-intrinsics/round.js b/node_modules/math-intrinsics/round.js new file mode 100644 index 0000000..b792156 --- /dev/null +++ b/node_modules/math-intrinsics/round.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./round')} */ +module.exports = Math.round; diff --git a/node_modules/math-intrinsics/sign.d.ts b/node_modules/math-intrinsics/sign.d.ts new file mode 100644 index 0000000..c49ceca --- /dev/null +++ b/node_modules/math-intrinsics/sign.d.ts @@ -0,0 +1,3 @@ +declare function sign(x: number): number; + +export = sign; \ No newline at end of file diff --git a/node_modules/math-intrinsics/sign.js b/node_modules/math-intrinsics/sign.js new file mode 100644 index 0000000..9e5173c --- /dev/null +++ b/node_modules/math-intrinsics/sign.js @@ -0,0 +1,11 @@ +'use strict'; + +var $isNaN = require('./isNaN'); + +/** @type {import('./sign')} */ +module.exports = function sign(number) { + if ($isNaN(number) || number === 0) { + return number; + } + return number < 0 ? -1 : +1; +}; diff --git a/node_modules/math-intrinsics/test/index.js b/node_modules/math-intrinsics/test/index.js new file mode 100644 index 0000000..0f90a5d --- /dev/null +++ b/node_modules/math-intrinsics/test/index.js @@ -0,0 +1,192 @@ +'use strict'; + +var test = require('tape'); +var v = require('es-value-fixtures'); +var forEach = require('for-each'); +var inspect = require('object-inspect'); + +var abs = require('../abs'); +var floor = require('../floor'); +var isFinite = require('../isFinite'); +var isInteger = require('../isInteger'); +var isNaN = require('../isNaN'); +var isNegativeZero = require('../isNegativeZero'); +var max = require('../max'); +var min = require('../min'); +var mod = require('../mod'); +var pow = require('../pow'); +var round = require('../round'); +var sign = require('../sign'); + +var maxArrayLength = require('../constants/maxArrayLength'); +var maxSafeInteger = require('../constants/maxSafeInteger'); +var maxValue = require('../constants/maxValue'); + +test('abs', function (t) { + t.equal(abs(-1), 1, 'abs(-1) === 1'); + t.equal(abs(+1), 1, 'abs(+1) === 1'); + t.equal(abs(+0), +0, 'abs(+0) === +0'); + t.equal(abs(-0), +0, 'abs(-0) === +0'); + + t.end(); +}); + +test('floor', function (t) { + t.equal(floor(-1.1), -2, 'floor(-1.1) === -2'); + t.equal(floor(+1.1), 1, 'floor(+1.1) === 1'); + t.equal(floor(+0), +0, 'floor(+0) === +0'); + t.equal(floor(-0), -0, 'floor(-0) === -0'); + t.equal(floor(-Infinity), -Infinity, 'floor(-Infinity) === -Infinity'); + t.equal(floor(Number(Infinity)), Number(Infinity), 'floor(+Infinity) === +Infinity'); + t.equal(floor(NaN), NaN, 'floor(NaN) === NaN'); + t.equal(floor(0), +0, 'floor(0) === +0'); + t.equal(floor(-0), -0, 'floor(-0) === -0'); + t.equal(floor(1), 1, 'floor(1) === 1'); + t.equal(floor(-1), -1, 'floor(-1) === -1'); + t.equal(floor(1.1), 1, 'floor(1.1) === 1'); + t.equal(floor(-1.1), -2, 'floor(-1.1) === -2'); + t.equal(floor(maxValue), maxValue, 'floor(maxValue) === maxValue'); + t.equal(floor(maxSafeInteger), maxSafeInteger, 'floor(maxSafeInteger) === maxSafeInteger'); + + t.end(); +}); + +test('isFinite', function (t) { + t.equal(isFinite(0), true, 'isFinite(+0) === true'); + t.equal(isFinite(-0), true, 'isFinite(-0) === true'); + t.equal(isFinite(1), true, 'isFinite(1) === true'); + t.equal(isFinite(Infinity), false, 'isFinite(Infinity) === false'); + t.equal(isFinite(-Infinity), false, 'isFinite(-Infinity) === false'); + t.equal(isFinite(NaN), false, 'isFinite(NaN) === false'); + + forEach(v.nonNumbers, function (nonNumber) { + t.equal(isFinite(nonNumber), false, 'isFinite(' + inspect(nonNumber) + ') === false'); + }); + + t.end(); +}); + +test('isInteger', function (t) { + forEach([].concat( + // @ts-expect-error TS sucks with concat + v.nonNumbers, + v.nonIntegerNumbers + ), function (nonInteger) { + t.equal(isInteger(nonInteger), false, 'isInteger(' + inspect(nonInteger) + ') === false'); + }); + + t.end(); +}); + +test('isNaN', function (t) { + forEach([].concat( + // @ts-expect-error TS sucks with concat + v.nonNumbers, + v.infinities, + v.zeroes, + v.integerNumbers + ), function (nonNaN) { + t.equal(isNaN(nonNaN), false, 'isNaN(' + inspect(nonNaN) + ') === false'); + }); + + t.equal(isNaN(NaN), true, 'isNaN(NaN) === true'); + + t.end(); +}); + +test('isNegativeZero', function (t) { + t.equal(isNegativeZero(-0), true, 'isNegativeZero(-0) === true'); + t.equal(isNegativeZero(+0), false, 'isNegativeZero(+0) === false'); + t.equal(isNegativeZero(1), false, 'isNegativeZero(1) === false'); + t.equal(isNegativeZero(-1), false, 'isNegativeZero(-1) === false'); + t.equal(isNegativeZero(NaN), false, 'isNegativeZero(NaN) === false'); + t.equal(isNegativeZero(Infinity), false, 'isNegativeZero(Infinity) === false'); + t.equal(isNegativeZero(-Infinity), false, 'isNegativeZero(-Infinity) === false'); + + forEach(v.nonNumbers, function (nonNumber) { + t.equal(isNegativeZero(nonNumber), false, 'isNegativeZero(' + inspect(nonNumber) + ') === false'); + }); + + t.end(); +}); + +test('max', function (t) { + t.equal(max(1, 2), 2, 'max(1, 2) === 2'); + t.equal(max(1, 2, 3), 3, 'max(1, 2, 3) === 3'); + t.equal(max(1, 2, 3, 4), 4, 'max(1, 2, 3, 4) === 4'); + t.equal(max(1, 2, 3, 4, 5), 5, 'max(1, 2, 3, 4, 5) === 5'); + t.equal(max(1, 2, 3, 4, 5, 6), 6, 'max(1, 2, 3, 4, 5, 6) === 6'); + t.equal(max(1, 2, 3, 4, 5, 6, 7), 7, 'max(1, 2, 3, 4, 5, 6, 7) === 7'); + + t.end(); +}); + +test('min', function (t) { + t.equal(min(1, 2), 1, 'min(1, 2) === 1'); + t.equal(min(1, 2, 3), 1, 'min(1, 2, 3) === 1'); + t.equal(min(1, 2, 3, 4), 1, 'min(1, 2, 3, 4) === 1'); + t.equal(min(1, 2, 3, 4, 5), 1, 'min(1, 2, 3, 4, 5) === 1'); + t.equal(min(1, 2, 3, 4, 5, 6), 1, 'min(1, 2, 3, 4, 5, 6) === 1'); + + t.end(); +}); + +test('mod', function (t) { + t.equal(mod(1, 2), 1, 'mod(1, 2) === 1'); + t.equal(mod(2, 2), 0, 'mod(2, 2) === 0'); + t.equal(mod(3, 2), 1, 'mod(3, 2) === 1'); + t.equal(mod(4, 2), 0, 'mod(4, 2) === 0'); + t.equal(mod(5, 2), 1, 'mod(5, 2) === 1'); + t.equal(mod(6, 2), 0, 'mod(6, 2) === 0'); + t.equal(mod(7, 2), 1, 'mod(7, 2) === 1'); + t.equal(mod(8, 2), 0, 'mod(8, 2) === 0'); + t.equal(mod(9, 2), 1, 'mod(9, 2) === 1'); + t.equal(mod(10, 2), 0, 'mod(10, 2) === 0'); + t.equal(mod(11, 2), 1, 'mod(11, 2) === 1'); + + t.end(); +}); + +test('pow', function (t) { + t.equal(pow(2, 2), 4, 'pow(2, 2) === 4'); + t.equal(pow(2, 3), 8, 'pow(2, 3) === 8'); + t.equal(pow(2, 4), 16, 'pow(2, 4) === 16'); + t.equal(pow(2, 5), 32, 'pow(2, 5) === 32'); + t.equal(pow(2, 6), 64, 'pow(2, 6) === 64'); + t.equal(pow(2, 7), 128, 'pow(2, 7) === 128'); + t.equal(pow(2, 8), 256, 'pow(2, 8) === 256'); + t.equal(pow(2, 9), 512, 'pow(2, 9) === 512'); + t.equal(pow(2, 10), 1024, 'pow(2, 10) === 1024'); + + t.end(); +}); + +test('round', function (t) { + t.equal(round(1.1), 1, 'round(1.1) === 1'); + t.equal(round(1.5), 2, 'round(1.5) === 2'); + t.equal(round(1.9), 2, 'round(1.9) === 2'); + + t.end(); +}); + +test('sign', function (t) { + t.equal(sign(-1), -1, 'sign(-1) === -1'); + t.equal(sign(+1), +1, 'sign(+1) === +1'); + t.equal(sign(+0), +0, 'sign(+0) === +0'); + t.equal(sign(-0), -0, 'sign(-0) === -0'); + t.equal(sign(NaN), NaN, 'sign(NaN) === NaN'); + t.equal(sign(Infinity), +1, 'sign(Infinity) === +1'); + t.equal(sign(-Infinity), -1, 'sign(-Infinity) === -1'); + t.equal(sign(maxValue), +1, 'sign(maxValue) === +1'); + t.equal(sign(maxSafeInteger), +1, 'sign(maxSafeInteger) === +1'); + + t.end(); +}); + +test('constants', function (t) { + t.equal(typeof maxArrayLength, 'number', 'typeof maxArrayLength === "number"'); + t.equal(typeof maxSafeInteger, 'number', 'typeof maxSafeInteger === "number"'); + t.equal(typeof maxValue, 'number', 'typeof maxValue === "number"'); + + t.end(); +}); diff --git a/node_modules/math-intrinsics/tsconfig.json b/node_modules/math-intrinsics/tsconfig.json new file mode 100644 index 0000000..b131000 --- /dev/null +++ b/node_modules/math-intrinsics/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "@ljharb/tsconfig", +} diff --git a/node_modules/mime-db/HISTORY.md b/node_modules/mime-db/HISTORY.md new file mode 100644 index 0000000..7436f64 --- /dev/null +++ b/node_modules/mime-db/HISTORY.md @@ -0,0 +1,507 @@ +1.52.0 / 2022-02-21 +=================== + + * Add extensions from IANA for more `image/*` types + * Add extension `.asc` to `application/pgp-keys` + * Add extensions to various XML types + * Add new upstream MIME types + +1.51.0 / 2021-11-08 +=================== + + * Add new upstream MIME types + * Mark `image/vnd.microsoft.icon` as compressible + * Mark `image/vnd.ms-dds` as compressible + +1.50.0 / 2021-09-15 +=================== + + * Add deprecated iWorks mime types and extensions + * Add new upstream MIME types + +1.49.0 / 2021-07-26 +=================== + + * Add extension `.trig` to `application/trig` + * Add new upstream MIME types + +1.48.0 / 2021-05-30 +=================== + + * Add extension `.mvt` to `application/vnd.mapbox-vector-tile` + * Add new upstream MIME types + * Mark `text/yaml` as compressible + +1.47.0 / 2021-04-01 +=================== + + * Add new upstream MIME types + * Remove ambigious extensions from IANA for `application/*+xml` types + * Update primary extension to `.es` for `application/ecmascript` + +1.46.0 / 2021-02-13 +=================== + + * Add extension `.amr` to `audio/amr` + * Add extension `.m4s` to `video/iso.segment` + * Add extension `.opus` to `audio/ogg` + * Add new upstream MIME types + +1.45.0 / 2020-09-22 +=================== + + * Add `application/ubjson` with extension `.ubj` + * Add `image/avif` with extension `.avif` + * Add `image/ktx2` with extension `.ktx2` + * Add extension `.dbf` to `application/vnd.dbf` + * Add extension `.rar` to `application/vnd.rar` + * Add extension `.td` to `application/urc-targetdesc+xml` + * Add new upstream MIME types + * Fix extension of `application/vnd.apple.keynote` to be `.key` + +1.44.0 / 2020-04-22 +=================== + + * Add charsets from IANA + * Add extension `.cjs` to `application/node` + * Add new upstream MIME types + +1.43.0 / 2020-01-05 +=================== + + * Add `application/x-keepass2` with extension `.kdbx` + * Add extension `.mxmf` to `audio/mobile-xmf` + * Add extensions from IANA for `application/*+xml` types + * Add new upstream MIME types + +1.42.0 / 2019-09-25 +=================== + + * Add `image/vnd.ms-dds` with extension `.dds` + * Add new upstream MIME types + * Remove compressible from `multipart/mixed` + +1.41.0 / 2019-08-30 +=================== + + * Add new upstream MIME types + * Add `application/toml` with extension `.toml` + * Mark `font/ttf` as compressible + +1.40.0 / 2019-04-20 +=================== + + * Add extensions from IANA for `model/*` types + * Add `text/mdx` with extension `.mdx` + +1.39.0 / 2019-04-04 +=================== + + * Add extensions `.siv` and `.sieve` to `application/sieve` + * Add new upstream MIME types + +1.38.0 / 2019-02-04 +=================== + + * Add extension `.nq` to `application/n-quads` + * Add extension `.nt` to `application/n-triples` + * Add new upstream MIME types + * Mark `text/less` as compressible + +1.37.0 / 2018-10-19 +=================== + + * Add extensions to HEIC image types + * Add new upstream MIME types + +1.36.0 / 2018-08-20 +=================== + + * Add Apple file extensions from IANA + * Add extensions from IANA for `image/*` types + * Add new upstream MIME types + +1.35.0 / 2018-07-15 +=================== + + * Add extension `.owl` to `application/rdf+xml` + * Add new upstream MIME types + - Removes extension `.woff` from `application/font-woff` + +1.34.0 / 2018-06-03 +=================== + + * Add extension `.csl` to `application/vnd.citationstyles.style+xml` + * Add extension `.es` to `application/ecmascript` + * Add new upstream MIME types + * Add `UTF-8` as default charset for `text/turtle` + * Mark all XML-derived types as compressible + +1.33.0 / 2018-02-15 +=================== + + * Add extensions from IANA for `message/*` types + * Add new upstream MIME types + * Fix some incorrect OOXML types + * Remove `application/font-woff2` + +1.32.0 / 2017-11-29 +=================== + + * Add new upstream MIME types + * Update `text/hjson` to registered `application/hjson` + * Add `text/shex` with extension `.shex` + +1.31.0 / 2017-10-25 +=================== + + * Add `application/raml+yaml` with extension `.raml` + * Add `application/wasm` with extension `.wasm` + * Add new `font` type from IANA + * Add new upstream font extensions + * Add new upstream MIME types + * Add extensions for JPEG-2000 images + +1.30.0 / 2017-08-27 +=================== + + * Add `application/vnd.ms-outlook` + * Add `application/x-arj` + * Add extension `.mjs` to `application/javascript` + * Add glTF types and extensions + * Add new upstream MIME types + * Add `text/x-org` + * Add VirtualBox MIME types + * Fix `source` records for `video/*` types that are IANA + * Update `font/opentype` to registered `font/otf` + +1.29.0 / 2017-07-10 +=================== + + * Add `application/fido.trusted-apps+json` + * Add extension `.wadl` to `application/vnd.sun.wadl+xml` + * Add new upstream MIME types + * Add `UTF-8` as default charset for `text/css` + +1.28.0 / 2017-05-14 +=================== + + * Add new upstream MIME types + * Add extension `.gz` to `application/gzip` + * Update extensions `.md` and `.markdown` to be `text/markdown` + +1.27.0 / 2017-03-16 +=================== + + * Add new upstream MIME types + * Add `image/apng` with extension `.apng` + +1.26.0 / 2017-01-14 +=================== + + * Add new upstream MIME types + * Add extension `.geojson` to `application/geo+json` + +1.25.0 / 2016-11-11 +=================== + + * Add new upstream MIME types + +1.24.0 / 2016-09-18 +=================== + + * Add `audio/mp3` + * Add new upstream MIME types + +1.23.0 / 2016-05-01 +=================== + + * Add new upstream MIME types + * Add extension `.3gpp` to `audio/3gpp` + +1.22.0 / 2016-02-15 +=================== + + * Add `text/slim` + * Add extension `.rng` to `application/xml` + * Add new upstream MIME types + * Fix extension of `application/dash+xml` to be `.mpd` + * Update primary extension to `.m4a` for `audio/mp4` + +1.21.0 / 2016-01-06 +=================== + + * Add Google document types + * Add new upstream MIME types + +1.20.0 / 2015-11-10 +=================== + + * Add `text/x-suse-ymp` + * Add new upstream MIME types + +1.19.0 / 2015-09-17 +=================== + + * Add `application/vnd.apple.pkpass` + * Add new upstream MIME types + +1.18.0 / 2015-09-03 +=================== + + * Add new upstream MIME types + +1.17.0 / 2015-08-13 +=================== + + * Add `application/x-msdos-program` + * Add `audio/g711-0` + * Add `image/vnd.mozilla.apng` + * Add extension `.exe` to `application/x-msdos-program` + +1.16.0 / 2015-07-29 +=================== + + * Add `application/vnd.uri-map` + +1.15.0 / 2015-07-13 +=================== + + * Add `application/x-httpd-php` + +1.14.0 / 2015-06-25 +=================== + + * Add `application/scim+json` + * Add `application/vnd.3gpp.ussd+xml` + * Add `application/vnd.biopax.rdf+xml` + * Add `text/x-processing` + +1.13.0 / 2015-06-07 +=================== + + * Add nginx as a source + * Add `application/x-cocoa` + * Add `application/x-java-archive-diff` + * Add `application/x-makeself` + * Add `application/x-perl` + * Add `application/x-pilot` + * Add `application/x-redhat-package-manager` + * Add `application/x-sea` + * Add `audio/x-m4a` + * Add `audio/x-realaudio` + * Add `image/x-jng` + * Add `text/mathml` + +1.12.0 / 2015-06-05 +=================== + + * Add `application/bdoc` + * Add `application/vnd.hyperdrive+json` + * Add `application/x-bdoc` + * Add extension `.rtf` to `text/rtf` + +1.11.0 / 2015-05-31 +=================== + + * Add `audio/wav` + * Add `audio/wave` + * Add extension `.litcoffee` to `text/coffeescript` + * Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data` + * Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install` + +1.10.0 / 2015-05-19 +=================== + + * Add `application/vnd.balsamiq.bmpr` + * Add `application/vnd.microsoft.portable-executable` + * Add `application/x-ns-proxy-autoconfig` + +1.9.1 / 2015-04-19 +================== + + * Remove `.json` extension from `application/manifest+json` + - This is causing bugs downstream + +1.9.0 / 2015-04-19 +================== + + * Add `application/manifest+json` + * Add `application/vnd.micro+json` + * Add `image/vnd.zbrush.pcx` + * Add `image/x-ms-bmp` + +1.8.0 / 2015-03-13 +================== + + * Add `application/vnd.citationstyles.style+xml` + * Add `application/vnd.fastcopy-disk-image` + * Add `application/vnd.gov.sk.xmldatacontainer+xml` + * Add extension `.jsonld` to `application/ld+json` + +1.7.0 / 2015-02-08 +================== + + * Add `application/vnd.gerber` + * Add `application/vnd.msa-disk-image` + +1.6.1 / 2015-02-05 +================== + + * Community extensions ownership transferred from `node-mime` + +1.6.0 / 2015-01-29 +================== + + * Add `application/jose` + * Add `application/jose+json` + * Add `application/json-seq` + * Add `application/jwk+json` + * Add `application/jwk-set+json` + * Add `application/jwt` + * Add `application/rdap+json` + * Add `application/vnd.gov.sk.e-form+xml` + * Add `application/vnd.ims.imsccv1p3` + +1.5.0 / 2014-12-30 +================== + + * Add `application/vnd.oracle.resource+json` + * Fix various invalid MIME type entries + - `application/mbox+xml` + - `application/oscp-response` + - `application/vwg-multiplexed` + - `audio/g721` + +1.4.0 / 2014-12-21 +================== + + * Add `application/vnd.ims.imsccv1p2` + * Fix various invalid MIME type entries + - `application/vnd-acucobol` + - `application/vnd-curl` + - `application/vnd-dart` + - `application/vnd-dxr` + - `application/vnd-fdf` + - `application/vnd-mif` + - `application/vnd-sema` + - `application/vnd-wap-wmlc` + - `application/vnd.adobe.flash-movie` + - `application/vnd.dece-zip` + - `application/vnd.dvb_service` + - `application/vnd.micrografx-igx` + - `application/vnd.sealed-doc` + - `application/vnd.sealed-eml` + - `application/vnd.sealed-mht` + - `application/vnd.sealed-ppt` + - `application/vnd.sealed-tiff` + - `application/vnd.sealed-xls` + - `application/vnd.sealedmedia.softseal-html` + - `application/vnd.sealedmedia.softseal-pdf` + - `application/vnd.wap-slc` + - `application/vnd.wap-wbxml` + - `audio/vnd.sealedmedia.softseal-mpeg` + - `image/vnd-djvu` + - `image/vnd-svf` + - `image/vnd-wap-wbmp` + - `image/vnd.sealed-png` + - `image/vnd.sealedmedia.softseal-gif` + - `image/vnd.sealedmedia.softseal-jpg` + - `model/vnd-dwf` + - `model/vnd.parasolid.transmit-binary` + - `model/vnd.parasolid.transmit-text` + - `text/vnd-a` + - `text/vnd-curl` + - `text/vnd.wap-wml` + * Remove example template MIME types + - `application/example` + - `audio/example` + - `image/example` + - `message/example` + - `model/example` + - `multipart/example` + - `text/example` + - `video/example` + +1.3.1 / 2014-12-16 +================== + + * Fix missing extensions + - `application/json5` + - `text/hjson` + +1.3.0 / 2014-12-07 +================== + + * Add `application/a2l` + * Add `application/aml` + * Add `application/atfx` + * Add `application/atxml` + * Add `application/cdfx+xml` + * Add `application/dii` + * Add `application/json5` + * Add `application/lxf` + * Add `application/mf4` + * Add `application/vnd.apache.thrift.compact` + * Add `application/vnd.apache.thrift.json` + * Add `application/vnd.coffeescript` + * Add `application/vnd.enphase.envoy` + * Add `application/vnd.ims.imsccv1p1` + * Add `text/csv-schema` + * Add `text/hjson` + * Add `text/markdown` + * Add `text/yaml` + +1.2.0 / 2014-11-09 +================== + + * Add `application/cea` + * Add `application/dit` + * Add `application/vnd.gov.sk.e-form+zip` + * Add `application/vnd.tmd.mediaflex.api+xml` + * Type `application/epub+zip` is now IANA-registered + +1.1.2 / 2014-10-23 +================== + + * Rebuild database for `application/x-www-form-urlencoded` change + +1.1.1 / 2014-10-20 +================== + + * Mark `application/x-www-form-urlencoded` as compressible. + +1.1.0 / 2014-09-28 +================== + + * Add `application/font-woff2` + +1.0.3 / 2014-09-25 +================== + + * Fix engine requirement in package + +1.0.2 / 2014-09-25 +================== + + * Add `application/coap-group+json` + * Add `application/dcd` + * Add `application/vnd.apache.thrift.binary` + * Add `image/vnd.tencent.tap` + * Mark all JSON-derived types as compressible + * Update `text/vtt` data + +1.0.1 / 2014-08-30 +================== + + * Fix extension ordering + +1.0.0 / 2014-08-30 +================== + + * Add `application/atf` + * Add `application/merge-patch+json` + * Add `multipart/x-mixed-replace` + * Add `source: 'apache'` metadata + * Add `source: 'iana'` metadata + * Remove badly-assumed charset data diff --git a/node_modules/mime-db/LICENSE b/node_modules/mime-db/LICENSE new file mode 100644 index 0000000..0751cb1 --- /dev/null +++ b/node_modules/mime-db/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015-2022 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/mime-db/README.md b/node_modules/mime-db/README.md new file mode 100644 index 0000000..5a8fcfe --- /dev/null +++ b/node_modules/mime-db/README.md @@ -0,0 +1,100 @@ +# mime-db + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-image]][node-url] +[![Build Status][ci-image]][ci-url] +[![Coverage Status][coveralls-image]][coveralls-url] + +This is a large database of mime types and information about them. +It consists of a single, public JSON file and does not include any logic, +allowing it to remain as un-opinionated as possible with an API. +It aggregates data from the following sources: + +- http://www.iana.org/assignments/media-types/media-types.xhtml +- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types +- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types + +## Installation + +```bash +npm install mime-db +``` + +### Database Download + +If you're crazy enough to use this in the browser, you can just grab the +JSON file using [jsDelivr](https://www.jsdelivr.com/). It is recommended to +replace `master` with [a release tag](https://github.com/jshttp/mime-db/tags) +as the JSON format may change in the future. + +``` +https://cdn.jsdelivr.net/gh/jshttp/mime-db@master/db.json +``` + +## Usage + +```js +var db = require('mime-db') + +// grab data on .js files +var data = db['application/javascript'] +``` + +## Data Structure + +The JSON file is a map lookup for lowercased mime types. +Each mime type has the following properties: + +- `.source` - where the mime type is defined. + If not set, it's probably a custom media type. + - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) + - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml) + - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types) +- `.extensions[]` - known extensions associated with this mime type. +- `.compressible` - whether a file of this type can be gzipped. +- `.charset` - the default charset associated with this type, if any. + +If unknown, every property could be `undefined`. + +## Contributing + +To edit the database, only make PRs against `src/custom-types.json` or +`src/custom-suffix.json`. + +The `src/custom-types.json` file is a JSON object with the MIME type as the +keys and the values being an object with the following keys: + +- `compressible` - leave out if you don't know, otherwise `true`/`false` to + indicate whether the data represented by the type is typically compressible. +- `extensions` - include an array of file extensions that are associated with + the type. +- `notes` - human-readable notes about the type, typically what the type is. +- `sources` - include an array of URLs of where the MIME type and the associated + extensions are sourced from. This needs to be a [primary source](https://en.wikipedia.org/wiki/Primary_source); + links to type aggregating sites and Wikipedia are _not acceptable_. + +To update the build, run `npm run build`. + +### Adding Custom Media Types + +The best way to get new media types included in this library is to register +them with the IANA. The community registration procedure is outlined in +[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types +registered with the IANA are automatically pulled into this library. + +If that is not possible / feasible, they can be added directly here as a +"custom" type. To do this, it is required to have a primary source that +definitively lists the media type. If an extension is going to be listed as +associateed with this media type, the source must definitively link the +media type and extension as well. + +[ci-image]: https://badgen.net/github/checks/jshttp/mime-db/master?label=ci +[ci-url]: https://github.com/jshttp/mime-db/actions?query=workflow%3Aci +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-db/master +[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master +[node-image]: https://badgen.net/npm/node/mime-db +[node-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/mime-db +[npm-url]: https://npmjs.org/package/mime-db +[npm-version-image]: https://badgen.net/npm/v/mime-db diff --git a/node_modules/mime-db/db.json b/node_modules/mime-db/db.json new file mode 100644 index 0000000..eb9c42c --- /dev/null +++ b/node_modules/mime-db/db.json @@ -0,0 +1,8519 @@ +{ + "application/1d-interleaved-parityfec": { + "source": "iana" + }, + "application/3gpdash-qoe-report+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/3gpp-ims+xml": { + "source": "iana", + "compressible": true + }, + "application/3gpphal+json": { + "source": "iana", + "compressible": true + }, + "application/3gpphalforms+json": { + "source": "iana", + "compressible": true + }, + "application/a2l": { + "source": "iana" + }, + "application/ace+cbor": { + "source": "iana" + }, + "application/activemessage": { + "source": "iana" + }, + "application/activity+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-directory+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcost+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcostparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointprop+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointpropparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-error+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamcontrol+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamparams+json": { + "source": "iana", + "compressible": true + }, + "application/aml": { + "source": "iana" + }, + "application/andrew-inset": { + "source": "iana", + "extensions": ["ez"] + }, + "application/applefile": { + "source": "iana" + }, + "application/applixware": { + "source": "apache", + "extensions": ["aw"] + }, + "application/at+jwt": { + "source": "iana" + }, + "application/atf": { + "source": "iana" + }, + "application/atfx": { + "source": "iana" + }, + "application/atom+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atom"] + }, + "application/atomcat+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomcat"] + }, + "application/atomdeleted+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomdeleted"] + }, + "application/atomicmail": { + "source": "iana" + }, + "application/atomsvc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomsvc"] + }, + "application/atsc-dwd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dwd"] + }, + "application/atsc-dynamic-event-message": { + "source": "iana" + }, + "application/atsc-held+xml": { + "source": "iana", + "compressible": true, + "extensions": ["held"] + }, + "application/atsc-rdt+json": { + "source": "iana", + "compressible": true + }, + "application/atsc-rsat+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rsat"] + }, + "application/atxml": { + "source": "iana" + }, + "application/auth-policy+xml": { + "source": "iana", + "compressible": true + }, + "application/bacnet-xdd+zip": { + "source": "iana", + "compressible": false + }, + "application/batch-smtp": { + "source": "iana" + }, + "application/bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/beep+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/calendar+json": { + "source": "iana", + "compressible": true + }, + "application/calendar+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xcs"] + }, + "application/call-completion": { + "source": "iana" + }, + "application/cals-1840": { + "source": "iana" + }, + "application/captive+json": { + "source": "iana", + "compressible": true + }, + "application/cbor": { + "source": "iana" + }, + "application/cbor-seq": { + "source": "iana" + }, + "application/cccex": { + "source": "iana" + }, + "application/ccmp+xml": { + "source": "iana", + "compressible": true + }, + "application/ccxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ccxml"] + }, + "application/cdfx+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cdfx"] + }, + "application/cdmi-capability": { + "source": "iana", + "extensions": ["cdmia"] + }, + "application/cdmi-container": { + "source": "iana", + "extensions": ["cdmic"] + }, + "application/cdmi-domain": { + "source": "iana", + "extensions": ["cdmid"] + }, + "application/cdmi-object": { + "source": "iana", + "extensions": ["cdmio"] + }, + "application/cdmi-queue": { + "source": "iana", + "extensions": ["cdmiq"] + }, + "application/cdni": { + "source": "iana" + }, + "application/cea": { + "source": "iana" + }, + "application/cea-2018+xml": { + "source": "iana", + "compressible": true + }, + "application/cellml+xml": { + "source": "iana", + "compressible": true + }, + "application/cfw": { + "source": "iana" + }, + "application/city+json": { + "source": "iana", + "compressible": true + }, + "application/clr": { + "source": "iana" + }, + "application/clue+xml": { + "source": "iana", + "compressible": true + }, + "application/clue_info+xml": { + "source": "iana", + "compressible": true + }, + "application/cms": { + "source": "iana" + }, + "application/cnrp+xml": { + "source": "iana", + "compressible": true + }, + "application/coap-group+json": { + "source": "iana", + "compressible": true + }, + "application/coap-payload": { + "source": "iana" + }, + "application/commonground": { + "source": "iana" + }, + "application/conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/cose": { + "source": "iana" + }, + "application/cose-key": { + "source": "iana" + }, + "application/cose-key-set": { + "source": "iana" + }, + "application/cpl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cpl"] + }, + "application/csrattrs": { + "source": "iana" + }, + "application/csta+xml": { + "source": "iana", + "compressible": true + }, + "application/cstadata+xml": { + "source": "iana", + "compressible": true + }, + "application/csvm+json": { + "source": "iana", + "compressible": true + }, + "application/cu-seeme": { + "source": "apache", + "extensions": ["cu"] + }, + "application/cwt": { + "source": "iana" + }, + "application/cybercash": { + "source": "iana" + }, + "application/dart": { + "compressible": true + }, + "application/dash+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpd"] + }, + "application/dash-patch+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpp"] + }, + "application/dashdelta": { + "source": "iana" + }, + "application/davmount+xml": { + "source": "iana", + "compressible": true, + "extensions": ["davmount"] + }, + "application/dca-rft": { + "source": "iana" + }, + "application/dcd": { + "source": "iana" + }, + "application/dec-dx": { + "source": "iana" + }, + "application/dialog-info+xml": { + "source": "iana", + "compressible": true + }, + "application/dicom": { + "source": "iana" + }, + "application/dicom+json": { + "source": "iana", + "compressible": true + }, + "application/dicom+xml": { + "source": "iana", + "compressible": true + }, + "application/dii": { + "source": "iana" + }, + "application/dit": { + "source": "iana" + }, + "application/dns": { + "source": "iana" + }, + "application/dns+json": { + "source": "iana", + "compressible": true + }, + "application/dns-message": { + "source": "iana" + }, + "application/docbook+xml": { + "source": "apache", + "compressible": true, + "extensions": ["dbk"] + }, + "application/dots+cbor": { + "source": "iana" + }, + "application/dskpp+xml": { + "source": "iana", + "compressible": true + }, + "application/dssc+der": { + "source": "iana", + "extensions": ["dssc"] + }, + "application/dssc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdssc"] + }, + "application/dvcs": { + "source": "iana" + }, + "application/ecmascript": { + "source": "iana", + "compressible": true, + "extensions": ["es","ecma"] + }, + "application/edi-consent": { + "source": "iana" + }, + "application/edi-x12": { + "source": "iana", + "compressible": false + }, + "application/edifact": { + "source": "iana", + "compressible": false + }, + "application/efi": { + "source": "iana" + }, + "application/elm+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/elm+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.cap+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/emergencycalldata.comment+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.control+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.deviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.ecall.msd": { + "source": "iana" + }, + "application/emergencycalldata.providerinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.serviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.subscriberinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.veds+xml": { + "source": "iana", + "compressible": true + }, + "application/emma+xml": { + "source": "iana", + "compressible": true, + "extensions": ["emma"] + }, + "application/emotionml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["emotionml"] + }, + "application/encaprtp": { + "source": "iana" + }, + "application/epp+xml": { + "source": "iana", + "compressible": true + }, + "application/epub+zip": { + "source": "iana", + "compressible": false, + "extensions": ["epub"] + }, + "application/eshop": { + "source": "iana" + }, + "application/exi": { + "source": "iana", + "extensions": ["exi"] + }, + "application/expect-ct-report+json": { + "source": "iana", + "compressible": true + }, + "application/express": { + "source": "iana", + "extensions": ["exp"] + }, + "application/fastinfoset": { + "source": "iana" + }, + "application/fastsoap": { + "source": "iana" + }, + "application/fdt+xml": { + "source": "iana", + "compressible": true, + "extensions": ["fdt"] + }, + "application/fhir+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fhir+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fido.trusted-apps+json": { + "compressible": true + }, + "application/fits": { + "source": "iana" + }, + "application/flexfec": { + "source": "iana" + }, + "application/font-sfnt": { + "source": "iana" + }, + "application/font-tdpfr": { + "source": "iana", + "extensions": ["pfr"] + }, + "application/font-woff": { + "source": "iana", + "compressible": false + }, + "application/framework-attributes+xml": { + "source": "iana", + "compressible": true + }, + "application/geo+json": { + "source": "iana", + "compressible": true, + "extensions": ["geojson"] + }, + "application/geo+json-seq": { + "source": "iana" + }, + "application/geopackage+sqlite3": { + "source": "iana" + }, + "application/geoxacml+xml": { + "source": "iana", + "compressible": true + }, + "application/gltf-buffer": { + "source": "iana" + }, + "application/gml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["gml"] + }, + "application/gpx+xml": { + "source": "apache", + "compressible": true, + "extensions": ["gpx"] + }, + "application/gxf": { + "source": "apache", + "extensions": ["gxf"] + }, + "application/gzip": { + "source": "iana", + "compressible": false, + "extensions": ["gz"] + }, + "application/h224": { + "source": "iana" + }, + "application/held+xml": { + "source": "iana", + "compressible": true + }, + "application/hjson": { + "extensions": ["hjson"] + }, + "application/http": { + "source": "iana" + }, + "application/hyperstudio": { + "source": "iana", + "extensions": ["stk"] + }, + "application/ibe-key-request+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pkg-reply+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pp-data": { + "source": "iana" + }, + "application/iges": { + "source": "iana" + }, + "application/im-iscomposing+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/index": { + "source": "iana" + }, + "application/index.cmd": { + "source": "iana" + }, + "application/index.obj": { + "source": "iana" + }, + "application/index.response": { + "source": "iana" + }, + "application/index.vnd": { + "source": "iana" + }, + "application/inkml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ink","inkml"] + }, + "application/iotp": { + "source": "iana" + }, + "application/ipfix": { + "source": "iana", + "extensions": ["ipfix"] + }, + "application/ipp": { + "source": "iana" + }, + "application/isup": { + "source": "iana" + }, + "application/its+xml": { + "source": "iana", + "compressible": true, + "extensions": ["its"] + }, + "application/java-archive": { + "source": "apache", + "compressible": false, + "extensions": ["jar","war","ear"] + }, + "application/java-serialized-object": { + "source": "apache", + "compressible": false, + "extensions": ["ser"] + }, + "application/java-vm": { + "source": "apache", + "compressible": false, + "extensions": ["class"] + }, + "application/javascript": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["js","mjs"] + }, + "application/jf2feed+json": { + "source": "iana", + "compressible": true + }, + "application/jose": { + "source": "iana" + }, + "application/jose+json": { + "source": "iana", + "compressible": true + }, + "application/jrd+json": { + "source": "iana", + "compressible": true + }, + "application/jscalendar+json": { + "source": "iana", + "compressible": true + }, + "application/json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["json","map"] + }, + "application/json-patch+json": { + "source": "iana", + "compressible": true + }, + "application/json-seq": { + "source": "iana" + }, + "application/json5": { + "extensions": ["json5"] + }, + "application/jsonml+json": { + "source": "apache", + "compressible": true, + "extensions": ["jsonml"] + }, + "application/jwk+json": { + "source": "iana", + "compressible": true + }, + "application/jwk-set+json": { + "source": "iana", + "compressible": true + }, + "application/jwt": { + "source": "iana" + }, + "application/kpml-request+xml": { + "source": "iana", + "compressible": true + }, + "application/kpml-response+xml": { + "source": "iana", + "compressible": true + }, + "application/ld+json": { + "source": "iana", + "compressible": true, + "extensions": ["jsonld"] + }, + "application/lgr+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lgr"] + }, + "application/link-format": { + "source": "iana" + }, + "application/load-control+xml": { + "source": "iana", + "compressible": true + }, + "application/lost+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lostxml"] + }, + "application/lostsync+xml": { + "source": "iana", + "compressible": true + }, + "application/lpf+zip": { + "source": "iana", + "compressible": false + }, + "application/lxf": { + "source": "iana" + }, + "application/mac-binhex40": { + "source": "iana", + "extensions": ["hqx"] + }, + "application/mac-compactpro": { + "source": "apache", + "extensions": ["cpt"] + }, + "application/macwriteii": { + "source": "iana" + }, + "application/mads+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mads"] + }, + "application/manifest+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["webmanifest"] + }, + "application/marc": { + "source": "iana", + "extensions": ["mrc"] + }, + "application/marcxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mrcx"] + }, + "application/mathematica": { + "source": "iana", + "extensions": ["ma","nb","mb"] + }, + "application/mathml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mathml"] + }, + "application/mathml-content+xml": { + "source": "iana", + "compressible": true + }, + "application/mathml-presentation+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-associated-procedure-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-deregister+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-envelope+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-protection-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-reception-report+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-schedule+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-user-service-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbox": { + "source": "iana", + "extensions": ["mbox"] + }, + "application/media-policy-dataset+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpf"] + }, + "application/media_control+xml": { + "source": "iana", + "compressible": true + }, + "application/mediaservercontrol+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mscml"] + }, + "application/merge-patch+json": { + "source": "iana", + "compressible": true + }, + "application/metalink+xml": { + "source": "apache", + "compressible": true, + "extensions": ["metalink"] + }, + "application/metalink4+xml": { + "source": "iana", + "compressible": true, + "extensions": ["meta4"] + }, + "application/mets+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mets"] + }, + "application/mf4": { + "source": "iana" + }, + "application/mikey": { + "source": "iana" + }, + "application/mipc": { + "source": "iana" + }, + "application/missing-blocks+cbor-seq": { + "source": "iana" + }, + "application/mmt-aei+xml": { + "source": "iana", + "compressible": true, + "extensions": ["maei"] + }, + "application/mmt-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["musd"] + }, + "application/mods+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mods"] + }, + "application/moss-keys": { + "source": "iana" + }, + "application/moss-signature": { + "source": "iana" + }, + "application/mosskey-data": { + "source": "iana" + }, + "application/mosskey-request": { + "source": "iana" + }, + "application/mp21": { + "source": "iana", + "extensions": ["m21","mp21"] + }, + "application/mp4": { + "source": "iana", + "extensions": ["mp4s","m4p"] + }, + "application/mpeg4-generic": { + "source": "iana" + }, + "application/mpeg4-iod": { + "source": "iana" + }, + "application/mpeg4-iod-xmt": { + "source": "iana" + }, + "application/mrb-consumer+xml": { + "source": "iana", + "compressible": true + }, + "application/mrb-publish+xml": { + "source": "iana", + "compressible": true + }, + "application/msc-ivr+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msc-mixer+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msword": { + "source": "iana", + "compressible": false, + "extensions": ["doc","dot"] + }, + "application/mud+json": { + "source": "iana", + "compressible": true + }, + "application/multipart-core": { + "source": "iana" + }, + "application/mxf": { + "source": "iana", + "extensions": ["mxf"] + }, + "application/n-quads": { + "source": "iana", + "extensions": ["nq"] + }, + "application/n-triples": { + "source": "iana", + "extensions": ["nt"] + }, + "application/nasdata": { + "source": "iana" + }, + "application/news-checkgroups": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-groupinfo": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-transmission": { + "source": "iana" + }, + "application/nlsml+xml": { + "source": "iana", + "compressible": true + }, + "application/node": { + "source": "iana", + "extensions": ["cjs"] + }, + "application/nss": { + "source": "iana" + }, + "application/oauth-authz-req+jwt": { + "source": "iana" + }, + "application/oblivious-dns-message": { + "source": "iana" + }, + "application/ocsp-request": { + "source": "iana" + }, + "application/ocsp-response": { + "source": "iana" + }, + "application/octet-stream": { + "source": "iana", + "compressible": false, + "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"] + }, + "application/oda": { + "source": "iana", + "extensions": ["oda"] + }, + "application/odm+xml": { + "source": "iana", + "compressible": true + }, + "application/odx": { + "source": "iana" + }, + "application/oebps-package+xml": { + "source": "iana", + "compressible": true, + "extensions": ["opf"] + }, + "application/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["ogx"] + }, + "application/omdoc+xml": { + "source": "apache", + "compressible": true, + "extensions": ["omdoc"] + }, + "application/onenote": { + "source": "apache", + "extensions": ["onetoc","onetoc2","onetmp","onepkg"] + }, + "application/opc-nodeset+xml": { + "source": "iana", + "compressible": true + }, + "application/oscore": { + "source": "iana" + }, + "application/oxps": { + "source": "iana", + "extensions": ["oxps"] + }, + "application/p21": { + "source": "iana" + }, + "application/p21+zip": { + "source": "iana", + "compressible": false + }, + "application/p2p-overlay+xml": { + "source": "iana", + "compressible": true, + "extensions": ["relo"] + }, + "application/parityfec": { + "source": "iana" + }, + "application/passport": { + "source": "iana" + }, + "application/patch-ops-error+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xer"] + }, + "application/pdf": { + "source": "iana", + "compressible": false, + "extensions": ["pdf"] + }, + "application/pdx": { + "source": "iana" + }, + "application/pem-certificate-chain": { + "source": "iana" + }, + "application/pgp-encrypted": { + "source": "iana", + "compressible": false, + "extensions": ["pgp"] + }, + "application/pgp-keys": { + "source": "iana", + "extensions": ["asc"] + }, + "application/pgp-signature": { + "source": "iana", + "extensions": ["asc","sig"] + }, + "application/pics-rules": { + "source": "apache", + "extensions": ["prf"] + }, + "application/pidf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pidf-diff+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pkcs10": { + "source": "iana", + "extensions": ["p10"] + }, + "application/pkcs12": { + "source": "iana" + }, + "application/pkcs7-mime": { + "source": "iana", + "extensions": ["p7m","p7c"] + }, + "application/pkcs7-signature": { + "source": "iana", + "extensions": ["p7s"] + }, + "application/pkcs8": { + "source": "iana", + "extensions": ["p8"] + }, + "application/pkcs8-encrypted": { + "source": "iana" + }, + "application/pkix-attr-cert": { + "source": "iana", + "extensions": ["ac"] + }, + "application/pkix-cert": { + "source": "iana", + "extensions": ["cer"] + }, + "application/pkix-crl": { + "source": "iana", + "extensions": ["crl"] + }, + "application/pkix-pkipath": { + "source": "iana", + "extensions": ["pkipath"] + }, + "application/pkixcmp": { + "source": "iana", + "extensions": ["pki"] + }, + "application/pls+xml": { + "source": "iana", + "compressible": true, + "extensions": ["pls"] + }, + "application/poc-settings+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/postscript": { + "source": "iana", + "compressible": true, + "extensions": ["ai","eps","ps"] + }, + "application/ppsp-tracker+json": { + "source": "iana", + "compressible": true + }, + "application/problem+json": { + "source": "iana", + "compressible": true + }, + "application/problem+xml": { + "source": "iana", + "compressible": true + }, + "application/provenance+xml": { + "source": "iana", + "compressible": true, + "extensions": ["provx"] + }, + "application/prs.alvestrand.titrax-sheet": { + "source": "iana" + }, + "application/prs.cww": { + "source": "iana", + "extensions": ["cww"] + }, + "application/prs.cyn": { + "source": "iana", + "charset": "7-BIT" + }, + "application/prs.hpub+zip": { + "source": "iana", + "compressible": false + }, + "application/prs.nprend": { + "source": "iana" + }, + "application/prs.plucker": { + "source": "iana" + }, + "application/prs.rdf-xml-crypt": { + "source": "iana" + }, + "application/prs.xsf+xml": { + "source": "iana", + "compressible": true + }, + "application/pskc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["pskcxml"] + }, + "application/pvd+json": { + "source": "iana", + "compressible": true + }, + "application/qsig": { + "source": "iana" + }, + "application/raml+yaml": { + "compressible": true, + "extensions": ["raml"] + }, + "application/raptorfec": { + "source": "iana" + }, + "application/rdap+json": { + "source": "iana", + "compressible": true + }, + "application/rdf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rdf","owl"] + }, + "application/reginfo+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rif"] + }, + "application/relax-ng-compact-syntax": { + "source": "iana", + "extensions": ["rnc"] + }, + "application/remote-printing": { + "source": "iana" + }, + "application/reputon+json": { + "source": "iana", + "compressible": true + }, + "application/resource-lists+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rl"] + }, + "application/resource-lists-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rld"] + }, + "application/rfc+xml": { + "source": "iana", + "compressible": true + }, + "application/riscos": { + "source": "iana" + }, + "application/rlmi+xml": { + "source": "iana", + "compressible": true + }, + "application/rls-services+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rs"] + }, + "application/route-apd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rapd"] + }, + "application/route-s-tsid+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sls"] + }, + "application/route-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rusd"] + }, + "application/rpki-ghostbusters": { + "source": "iana", + "extensions": ["gbr"] + }, + "application/rpki-manifest": { + "source": "iana", + "extensions": ["mft"] + }, + "application/rpki-publication": { + "source": "iana" + }, + "application/rpki-roa": { + "source": "iana", + "extensions": ["roa"] + }, + "application/rpki-updown": { + "source": "iana" + }, + "application/rsd+xml": { + "source": "apache", + "compressible": true, + "extensions": ["rsd"] + }, + "application/rss+xml": { + "source": "apache", + "compressible": true, + "extensions": ["rss"] + }, + "application/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "application/rtploopback": { + "source": "iana" + }, + "application/rtx": { + "source": "iana" + }, + "application/samlassertion+xml": { + "source": "iana", + "compressible": true + }, + "application/samlmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/sarif+json": { + "source": "iana", + "compressible": true + }, + "application/sarif-external-properties+json": { + "source": "iana", + "compressible": true + }, + "application/sbe": { + "source": "iana" + }, + "application/sbml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sbml"] + }, + "application/scaip+xml": { + "source": "iana", + "compressible": true + }, + "application/scim+json": { + "source": "iana", + "compressible": true + }, + "application/scvp-cv-request": { + "source": "iana", + "extensions": ["scq"] + }, + "application/scvp-cv-response": { + "source": "iana", + "extensions": ["scs"] + }, + "application/scvp-vp-request": { + "source": "iana", + "extensions": ["spq"] + }, + "application/scvp-vp-response": { + "source": "iana", + "extensions": ["spp"] + }, + "application/sdp": { + "source": "iana", + "extensions": ["sdp"] + }, + "application/secevent+jwt": { + "source": "iana" + }, + "application/senml+cbor": { + "source": "iana" + }, + "application/senml+json": { + "source": "iana", + "compressible": true + }, + "application/senml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["senmlx"] + }, + "application/senml-etch+cbor": { + "source": "iana" + }, + "application/senml-etch+json": { + "source": "iana", + "compressible": true + }, + "application/senml-exi": { + "source": "iana" + }, + "application/sensml+cbor": { + "source": "iana" + }, + "application/sensml+json": { + "source": "iana", + "compressible": true + }, + "application/sensml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sensmlx"] + }, + "application/sensml-exi": { + "source": "iana" + }, + "application/sep+xml": { + "source": "iana", + "compressible": true + }, + "application/sep-exi": { + "source": "iana" + }, + "application/session-info": { + "source": "iana" + }, + "application/set-payment": { + "source": "iana" + }, + "application/set-payment-initiation": { + "source": "iana", + "extensions": ["setpay"] + }, + "application/set-registration": { + "source": "iana" + }, + "application/set-registration-initiation": { + "source": "iana", + "extensions": ["setreg"] + }, + "application/sgml": { + "source": "iana" + }, + "application/sgml-open-catalog": { + "source": "iana" + }, + "application/shf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["shf"] + }, + "application/sieve": { + "source": "iana", + "extensions": ["siv","sieve"] + }, + "application/simple-filter+xml": { + "source": "iana", + "compressible": true + }, + "application/simple-message-summary": { + "source": "iana" + }, + "application/simplesymbolcontainer": { + "source": "iana" + }, + "application/sipc": { + "source": "iana" + }, + "application/slate": { + "source": "iana" + }, + "application/smil": { + "source": "iana" + }, + "application/smil+xml": { + "source": "iana", + "compressible": true, + "extensions": ["smi","smil"] + }, + "application/smpte336m": { + "source": "iana" + }, + "application/soap+fastinfoset": { + "source": "iana" + }, + "application/soap+xml": { + "source": "iana", + "compressible": true + }, + "application/sparql-query": { + "source": "iana", + "extensions": ["rq"] + }, + "application/sparql-results+xml": { + "source": "iana", + "compressible": true, + "extensions": ["srx"] + }, + "application/spdx+json": { + "source": "iana", + "compressible": true + }, + "application/spirits-event+xml": { + "source": "iana", + "compressible": true + }, + "application/sql": { + "source": "iana" + }, + "application/srgs": { + "source": "iana", + "extensions": ["gram"] + }, + "application/srgs+xml": { + "source": "iana", + "compressible": true, + "extensions": ["grxml"] + }, + "application/sru+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sru"] + }, + "application/ssdl+xml": { + "source": "apache", + "compressible": true, + "extensions": ["ssdl"] + }, + "application/ssml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ssml"] + }, + "application/stix+json": { + "source": "iana", + "compressible": true + }, + "application/swid+xml": { + "source": "iana", + "compressible": true, + "extensions": ["swidtag"] + }, + "application/tamp-apex-update": { + "source": "iana" + }, + "application/tamp-apex-update-confirm": { + "source": "iana" + }, + "application/tamp-community-update": { + "source": "iana" + }, + "application/tamp-community-update-confirm": { + "source": "iana" + }, + "application/tamp-error": { + "source": "iana" + }, + "application/tamp-sequence-adjust": { + "source": "iana" + }, + "application/tamp-sequence-adjust-confirm": { + "source": "iana" + }, + "application/tamp-status-query": { + "source": "iana" + }, + "application/tamp-status-response": { + "source": "iana" + }, + "application/tamp-update": { + "source": "iana" + }, + "application/tamp-update-confirm": { + "source": "iana" + }, + "application/tar": { + "compressible": true + }, + "application/taxii+json": { + "source": "iana", + "compressible": true + }, + "application/td+json": { + "source": "iana", + "compressible": true + }, + "application/tei+xml": { + "source": "iana", + "compressible": true, + "extensions": ["tei","teicorpus"] + }, + "application/tetra_isi": { + "source": "iana" + }, + "application/thraud+xml": { + "source": "iana", + "compressible": true, + "extensions": ["tfi"] + }, + "application/timestamp-query": { + "source": "iana" + }, + "application/timestamp-reply": { + "source": "iana" + }, + "application/timestamped-data": { + "source": "iana", + "extensions": ["tsd"] + }, + "application/tlsrpt+gzip": { + "source": "iana" + }, + "application/tlsrpt+json": { + "source": "iana", + "compressible": true + }, + "application/tnauthlist": { + "source": "iana" + }, + "application/token-introspection+jwt": { + "source": "iana" + }, + "application/toml": { + "compressible": true, + "extensions": ["toml"] + }, + "application/trickle-ice-sdpfrag": { + "source": "iana" + }, + "application/trig": { + "source": "iana", + "extensions": ["trig"] + }, + "application/ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ttml"] + }, + "application/tve-trigger": { + "source": "iana" + }, + "application/tzif": { + "source": "iana" + }, + "application/tzif-leap": { + "source": "iana" + }, + "application/ubjson": { + "compressible": false, + "extensions": ["ubj"] + }, + "application/ulpfec": { + "source": "iana" + }, + "application/urc-grpsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/urc-ressheet+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rsheet"] + }, + "application/urc-targetdesc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["td"] + }, + "application/urc-uisocketdesc+xml": { + "source": "iana", + "compressible": true + }, + "application/vcard+json": { + "source": "iana", + "compressible": true + }, + "application/vcard+xml": { + "source": "iana", + "compressible": true + }, + "application/vemmi": { + "source": "iana" + }, + "application/vividence.scriptfile": { + "source": "apache" + }, + "application/vnd.1000minds.decision-model+xml": { + "source": "iana", + "compressible": true, + "extensions": ["1km"] + }, + "application/vnd.3gpp-prose+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-prose-pc3ch+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-v2x-local-service-information": { + "source": "iana" + }, + "application/vnd.3gpp.5gnas": { + "source": "iana" + }, + "application/vnd.3gpp.access-transfer-events+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.bsf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gmop+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gtpc": { + "source": "iana" + }, + "application/vnd.3gpp.interworking-data": { + "source": "iana" + }, + "application/vnd.3gpp.lpp": { + "source": "iana" + }, + "application/vnd.3gpp.mc-signalling-ear": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-payload": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-signalling": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-floor-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-signed+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-init-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-transmission-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mid-call+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ngap": { + "source": "iana" + }, + "application/vnd.3gpp.pfcp": { + "source": "iana" + }, + "application/vnd.3gpp.pic-bw-large": { + "source": "iana", + "extensions": ["plb"] + }, + "application/vnd.3gpp.pic-bw-small": { + "source": "iana", + "extensions": ["psb"] + }, + "application/vnd.3gpp.pic-bw-var": { + "source": "iana", + "extensions": ["pvb"] + }, + "application/vnd.3gpp.s1ap": { + "source": "iana" + }, + "application/vnd.3gpp.sms": { + "source": "iana" + }, + "application/vnd.3gpp.sms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-ext+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.state-and-event-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ussd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.bcmcsinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.sms": { + "source": "iana" + }, + "application/vnd.3gpp2.tcap": { + "source": "iana", + "extensions": ["tcap"] + }, + "application/vnd.3lightssoftware.imagescal": { + "source": "iana" + }, + "application/vnd.3m.post-it-notes": { + "source": "iana", + "extensions": ["pwn"] + }, + "application/vnd.accpac.simply.aso": { + "source": "iana", + "extensions": ["aso"] + }, + "application/vnd.accpac.simply.imp": { + "source": "iana", + "extensions": ["imp"] + }, + "application/vnd.acucobol": { + "source": "iana", + "extensions": ["acu"] + }, + "application/vnd.acucorp": { + "source": "iana", + "extensions": ["atc","acutc"] + }, + "application/vnd.adobe.air-application-installer-package+zip": { + "source": "apache", + "compressible": false, + "extensions": ["air"] + }, + "application/vnd.adobe.flash.movie": { + "source": "iana" + }, + "application/vnd.adobe.formscentral.fcdt": { + "source": "iana", + "extensions": ["fcdt"] + }, + "application/vnd.adobe.fxp": { + "source": "iana", + "extensions": ["fxp","fxpl"] + }, + "application/vnd.adobe.partial-upload": { + "source": "iana" + }, + "application/vnd.adobe.xdp+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdp"] + }, + "application/vnd.adobe.xfdf": { + "source": "iana", + "extensions": ["xfdf"] + }, + "application/vnd.aether.imp": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata-pagedef": { + "source": "iana" + }, + "application/vnd.afpc.cmoca-cmresource": { + "source": "iana" + }, + "application/vnd.afpc.foca-charset": { + "source": "iana" + }, + "application/vnd.afpc.foca-codedfont": { + "source": "iana" + }, + "application/vnd.afpc.foca-codepage": { + "source": "iana" + }, + "application/vnd.afpc.modca": { + "source": "iana" + }, + "application/vnd.afpc.modca-cmtable": { + "source": "iana" + }, + "application/vnd.afpc.modca-formdef": { + "source": "iana" + }, + "application/vnd.afpc.modca-mediummap": { + "source": "iana" + }, + "application/vnd.afpc.modca-objectcontainer": { + "source": "iana" + }, + "application/vnd.afpc.modca-overlay": { + "source": "iana" + }, + "application/vnd.afpc.modca-pagesegment": { + "source": "iana" + }, + "application/vnd.age": { + "source": "iana", + "extensions": ["age"] + }, + "application/vnd.ah-barcode": { + "source": "iana" + }, + "application/vnd.ahead.space": { + "source": "iana", + "extensions": ["ahead"] + }, + "application/vnd.airzip.filesecure.azf": { + "source": "iana", + "extensions": ["azf"] + }, + "application/vnd.airzip.filesecure.azs": { + "source": "iana", + "extensions": ["azs"] + }, + "application/vnd.amadeus+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.amazon.ebook": { + "source": "apache", + "extensions": ["azw"] + }, + "application/vnd.amazon.mobi8-ebook": { + "source": "iana" + }, + "application/vnd.americandynamics.acc": { + "source": "iana", + "extensions": ["acc"] + }, + "application/vnd.amiga.ami": { + "source": "iana", + "extensions": ["ami"] + }, + "application/vnd.amundsen.maze+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.android.ota": { + "source": "iana" + }, + "application/vnd.android.package-archive": { + "source": "apache", + "compressible": false, + "extensions": ["apk"] + }, + "application/vnd.anki": { + "source": "iana" + }, + "application/vnd.anser-web-certificate-issue-initiation": { + "source": "iana", + "extensions": ["cii"] + }, + "application/vnd.anser-web-funds-transfer-initiation": { + "source": "apache", + "extensions": ["fti"] + }, + "application/vnd.antix.game-component": { + "source": "iana", + "extensions": ["atx"] + }, + "application/vnd.apache.arrow.file": { + "source": "iana" + }, + "application/vnd.apache.arrow.stream": { + "source": "iana" + }, + "application/vnd.apache.thrift.binary": { + "source": "iana" + }, + "application/vnd.apache.thrift.compact": { + "source": "iana" + }, + "application/vnd.apache.thrift.json": { + "source": "iana" + }, + "application/vnd.api+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.aplextor.warrp+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apothekende.reservation+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apple.installer+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpkg"] + }, + "application/vnd.apple.keynote": { + "source": "iana", + "extensions": ["key"] + }, + "application/vnd.apple.mpegurl": { + "source": "iana", + "extensions": ["m3u8"] + }, + "application/vnd.apple.numbers": { + "source": "iana", + "extensions": ["numbers"] + }, + "application/vnd.apple.pages": { + "source": "iana", + "extensions": ["pages"] + }, + "application/vnd.apple.pkpass": { + "compressible": false, + "extensions": ["pkpass"] + }, + "application/vnd.arastra.swi": { + "source": "iana" + }, + "application/vnd.aristanetworks.swi": { + "source": "iana", + "extensions": ["swi"] + }, + "application/vnd.artisan+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.artsquare": { + "source": "iana" + }, + "application/vnd.astraea-software.iota": { + "source": "iana", + "extensions": ["iota"] + }, + "application/vnd.audiograph": { + "source": "iana", + "extensions": ["aep"] + }, + "application/vnd.autopackage": { + "source": "iana" + }, + "application/vnd.avalon+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.avistar+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.balsamiq.bmml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["bmml"] + }, + "application/vnd.balsamiq.bmpr": { + "source": "iana" + }, + "application/vnd.banana-accounting": { + "source": "iana" + }, + "application/vnd.bbf.usp.error": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bekitzur-stech+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bint.med-content": { + "source": "iana" + }, + "application/vnd.biopax.rdf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.blink-idb-value-wrapper": { + "source": "iana" + }, + "application/vnd.blueice.multipass": { + "source": "iana", + "extensions": ["mpm"] + }, + "application/vnd.bluetooth.ep.oob": { + "source": "iana" + }, + "application/vnd.bluetooth.le.oob": { + "source": "iana" + }, + "application/vnd.bmi": { + "source": "iana", + "extensions": ["bmi"] + }, + "application/vnd.bpf": { + "source": "iana" + }, + "application/vnd.bpf3": { + "source": "iana" + }, + "application/vnd.businessobjects": { + "source": "iana", + "extensions": ["rep"] + }, + "application/vnd.byu.uapi+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cab-jscript": { + "source": "iana" + }, + "application/vnd.canon-cpdl": { + "source": "iana" + }, + "application/vnd.canon-lips": { + "source": "iana" + }, + "application/vnd.capasystems-pg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cendio.thinlinc.clientconf": { + "source": "iana" + }, + "application/vnd.century-systems.tcp_stream": { + "source": "iana" + }, + "application/vnd.chemdraw+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cdxml"] + }, + "application/vnd.chess-pgn": { + "source": "iana" + }, + "application/vnd.chipnuts.karaoke-mmd": { + "source": "iana", + "extensions": ["mmd"] + }, + "application/vnd.ciedi": { + "source": "iana" + }, + "application/vnd.cinderella": { + "source": "iana", + "extensions": ["cdy"] + }, + "application/vnd.cirpack.isdn-ext": { + "source": "iana" + }, + "application/vnd.citationstyles.style+xml": { + "source": "iana", + "compressible": true, + "extensions": ["csl"] + }, + "application/vnd.claymore": { + "source": "iana", + "extensions": ["cla"] + }, + "application/vnd.cloanto.rp9": { + "source": "iana", + "extensions": ["rp9"] + }, + "application/vnd.clonk.c4group": { + "source": "iana", + "extensions": ["c4g","c4d","c4f","c4p","c4u"] + }, + "application/vnd.cluetrust.cartomobile-config": { + "source": "iana", + "extensions": ["c11amc"] + }, + "application/vnd.cluetrust.cartomobile-config-pkg": { + "source": "iana", + "extensions": ["c11amz"] + }, + "application/vnd.coffeescript": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet-template": { + "source": "iana" + }, + "application/vnd.collection+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.doc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.next+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.comicbook+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.comicbook-rar": { + "source": "iana" + }, + "application/vnd.commerce-battelle": { + "source": "iana" + }, + "application/vnd.commonspace": { + "source": "iana", + "extensions": ["csp"] + }, + "application/vnd.contact.cmsg": { + "source": "iana", + "extensions": ["cdbcmsg"] + }, + "application/vnd.coreos.ignition+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cosmocaller": { + "source": "iana", + "extensions": ["cmc"] + }, + "application/vnd.crick.clicker": { + "source": "iana", + "extensions": ["clkx"] + }, + "application/vnd.crick.clicker.keyboard": { + "source": "iana", + "extensions": ["clkk"] + }, + "application/vnd.crick.clicker.palette": { + "source": "iana", + "extensions": ["clkp"] + }, + "application/vnd.crick.clicker.template": { + "source": "iana", + "extensions": ["clkt"] + }, + "application/vnd.crick.clicker.wordbank": { + "source": "iana", + "extensions": ["clkw"] + }, + "application/vnd.criticaltools.wbs+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wbs"] + }, + "application/vnd.cryptii.pipe+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.crypto-shade-file": { + "source": "iana" + }, + "application/vnd.cryptomator.encrypted": { + "source": "iana" + }, + "application/vnd.cryptomator.vault": { + "source": "iana" + }, + "application/vnd.ctc-posml": { + "source": "iana", + "extensions": ["pml"] + }, + "application/vnd.ctct.ws+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cups-pdf": { + "source": "iana" + }, + "application/vnd.cups-postscript": { + "source": "iana" + }, + "application/vnd.cups-ppd": { + "source": "iana", + "extensions": ["ppd"] + }, + "application/vnd.cups-raster": { + "source": "iana" + }, + "application/vnd.cups-raw": { + "source": "iana" + }, + "application/vnd.curl": { + "source": "iana" + }, + "application/vnd.curl.car": { + "source": "apache", + "extensions": ["car"] + }, + "application/vnd.curl.pcurl": { + "source": "apache", + "extensions": ["pcurl"] + }, + "application/vnd.cyan.dean.root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cybank": { + "source": "iana" + }, + "application/vnd.cyclonedx+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cyclonedx+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.d2l.coursepackage1p0+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.d3m-dataset": { + "source": "iana" + }, + "application/vnd.d3m-problem": { + "source": "iana" + }, + "application/vnd.dart": { + "source": "iana", + "compressible": true, + "extensions": ["dart"] + }, + "application/vnd.data-vision.rdz": { + "source": "iana", + "extensions": ["rdz"] + }, + "application/vnd.datapackage+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dataresource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dbf": { + "source": "iana", + "extensions": ["dbf"] + }, + "application/vnd.debian.binary-package": { + "source": "iana" + }, + "application/vnd.dece.data": { + "source": "iana", + "extensions": ["uvf","uvvf","uvd","uvvd"] + }, + "application/vnd.dece.ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["uvt","uvvt"] + }, + "application/vnd.dece.unspecified": { + "source": "iana", + "extensions": ["uvx","uvvx"] + }, + "application/vnd.dece.zip": { + "source": "iana", + "extensions": ["uvz","uvvz"] + }, + "application/vnd.denovo.fcselayout-link": { + "source": "iana", + "extensions": ["fe_launch"] + }, + "application/vnd.desmume.movie": { + "source": "iana" + }, + "application/vnd.dir-bi.plate-dl-nosuffix": { + "source": "iana" + }, + "application/vnd.dm.delegation+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dna": { + "source": "iana", + "extensions": ["dna"] + }, + "application/vnd.document+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dolby.mlp": { + "source": "apache", + "extensions": ["mlp"] + }, + "application/vnd.dolby.mobile.1": { + "source": "iana" + }, + "application/vnd.dolby.mobile.2": { + "source": "iana" + }, + "application/vnd.doremir.scorecloud-binary-document": { + "source": "iana" + }, + "application/vnd.dpgraph": { + "source": "iana", + "extensions": ["dpg"] + }, + "application/vnd.dreamfactory": { + "source": "iana", + "extensions": ["dfac"] + }, + "application/vnd.drive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ds-keypoint": { + "source": "apache", + "extensions": ["kpxx"] + }, + "application/vnd.dtg.local": { + "source": "iana" + }, + "application/vnd.dtg.local.flash": { + "source": "iana" + }, + "application/vnd.dtg.local.html": { + "source": "iana" + }, + "application/vnd.dvb.ait": { + "source": "iana", + "extensions": ["ait"] + }, + "application/vnd.dvb.dvbisl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.dvbj": { + "source": "iana" + }, + "application/vnd.dvb.esgcontainer": { + "source": "iana" + }, + "application/vnd.dvb.ipdcdftnotifaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess2": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgpdd": { + "source": "iana" + }, + "application/vnd.dvb.ipdcroaming": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-base": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-enhancement": { + "source": "iana" + }, + "application/vnd.dvb.notif-aggregate-root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-container+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-generic+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-msglist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-response+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-init+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.pfr": { + "source": "iana" + }, + "application/vnd.dvb.service": { + "source": "iana", + "extensions": ["svc"] + }, + "application/vnd.dxr": { + "source": "iana" + }, + "application/vnd.dynageo": { + "source": "iana", + "extensions": ["geo"] + }, + "application/vnd.dzr": { + "source": "iana" + }, + "application/vnd.easykaraoke.cdgdownload": { + "source": "iana" + }, + "application/vnd.ecdis-update": { + "source": "iana" + }, + "application/vnd.ecip.rlp": { + "source": "iana" + }, + "application/vnd.eclipse.ditto+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ecowin.chart": { + "source": "iana", + "extensions": ["mag"] + }, + "application/vnd.ecowin.filerequest": { + "source": "iana" + }, + "application/vnd.ecowin.fileupdate": { + "source": "iana" + }, + "application/vnd.ecowin.series": { + "source": "iana" + }, + "application/vnd.ecowin.seriesrequest": { + "source": "iana" + }, + "application/vnd.ecowin.seriesupdate": { + "source": "iana" + }, + "application/vnd.efi.img": { + "source": "iana" + }, + "application/vnd.efi.iso": { + "source": "iana" + }, + "application/vnd.emclient.accessrequest+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.enliven": { + "source": "iana", + "extensions": ["nml"] + }, + "application/vnd.enphase.envoy": { + "source": "iana" + }, + "application/vnd.eprints.data+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.epson.esf": { + "source": "iana", + "extensions": ["esf"] + }, + "application/vnd.epson.msf": { + "source": "iana", + "extensions": ["msf"] + }, + "application/vnd.epson.quickanime": { + "source": "iana", + "extensions": ["qam"] + }, + "application/vnd.epson.salt": { + "source": "iana", + "extensions": ["slt"] + }, + "application/vnd.epson.ssf": { + "source": "iana", + "extensions": ["ssf"] + }, + "application/vnd.ericsson.quickcall": { + "source": "iana" + }, + "application/vnd.espass-espass+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.eszigno3+xml": { + "source": "iana", + "compressible": true, + "extensions": ["es3","et3"] + }, + "application/vnd.etsi.aoc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.asic-e+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.asic-s+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.cug+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvcommand+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-bc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-cod+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-npvr+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvservice+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsync+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mcid+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mheg5": { + "source": "iana" + }, + "application/vnd.etsi.overload-control-policy-dataset+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.pstn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.sci+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.simservs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.timestamp-token": { + "source": "iana" + }, + "application/vnd.etsi.tsl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.tsl.der": { + "source": "iana" + }, + "application/vnd.eu.kasparian.car+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.eudora.data": { + "source": "iana" + }, + "application/vnd.evolv.ecig.profile": { + "source": "iana" + }, + "application/vnd.evolv.ecig.settings": { + "source": "iana" + }, + "application/vnd.evolv.ecig.theme": { + "source": "iana" + }, + "application/vnd.exstream-empower+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.exstream-package": { + "source": "iana" + }, + "application/vnd.ezpix-album": { + "source": "iana", + "extensions": ["ez2"] + }, + "application/vnd.ezpix-package": { + "source": "iana", + "extensions": ["ez3"] + }, + "application/vnd.f-secure.mobile": { + "source": "iana" + }, + "application/vnd.familysearch.gedcom+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.fastcopy-disk-image": { + "source": "iana" + }, + "application/vnd.fdf": { + "source": "iana", + "extensions": ["fdf"] + }, + "application/vnd.fdsn.mseed": { + "source": "iana", + "extensions": ["mseed"] + }, + "application/vnd.fdsn.seed": { + "source": "iana", + "extensions": ["seed","dataless"] + }, + "application/vnd.ffsns": { + "source": "iana" + }, + "application/vnd.ficlab.flb+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.filmit.zfc": { + "source": "iana" + }, + "application/vnd.fints": { + "source": "iana" + }, + "application/vnd.firemonkeys.cloudcell": { + "source": "iana" + }, + "application/vnd.flographit": { + "source": "iana", + "extensions": ["gph"] + }, + "application/vnd.fluxtime.clip": { + "source": "iana", + "extensions": ["ftc"] + }, + "application/vnd.font-fontforge-sfd": { + "source": "iana" + }, + "application/vnd.framemaker": { + "source": "iana", + "extensions": ["fm","frame","maker","book"] + }, + "application/vnd.frogans.fnc": { + "source": "iana", + "extensions": ["fnc"] + }, + "application/vnd.frogans.ltf": { + "source": "iana", + "extensions": ["ltf"] + }, + "application/vnd.fsc.weblaunch": { + "source": "iana", + "extensions": ["fsc"] + }, + "application/vnd.fujifilm.fb.docuworks": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.docuworks.binder": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.jfi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.fujitsu.oasys": { + "source": "iana", + "extensions": ["oas"] + }, + "application/vnd.fujitsu.oasys2": { + "source": "iana", + "extensions": ["oa2"] + }, + "application/vnd.fujitsu.oasys3": { + "source": "iana", + "extensions": ["oa3"] + }, + "application/vnd.fujitsu.oasysgp": { + "source": "iana", + "extensions": ["fg5"] + }, + "application/vnd.fujitsu.oasysprs": { + "source": "iana", + "extensions": ["bh2"] + }, + "application/vnd.fujixerox.art-ex": { + "source": "iana" + }, + "application/vnd.fujixerox.art4": { + "source": "iana" + }, + "application/vnd.fujixerox.ddd": { + "source": "iana", + "extensions": ["ddd"] + }, + "application/vnd.fujixerox.docuworks": { + "source": "iana", + "extensions": ["xdw"] + }, + "application/vnd.fujixerox.docuworks.binder": { + "source": "iana", + "extensions": ["xbd"] + }, + "application/vnd.fujixerox.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujixerox.hbpl": { + "source": "iana" + }, + "application/vnd.fut-misnet": { + "source": "iana" + }, + "application/vnd.futoin+cbor": { + "source": "iana" + }, + "application/vnd.futoin+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.fuzzysheet": { + "source": "iana", + "extensions": ["fzs"] + }, + "application/vnd.genomatix.tuxedo": { + "source": "iana", + "extensions": ["txd"] + }, + "application/vnd.gentics.grd+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.geo+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.geocube+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.geogebra.file": { + "source": "iana", + "extensions": ["ggb"] + }, + "application/vnd.geogebra.slides": { + "source": "iana" + }, + "application/vnd.geogebra.tool": { + "source": "iana", + "extensions": ["ggt"] + }, + "application/vnd.geometry-explorer": { + "source": "iana", + "extensions": ["gex","gre"] + }, + "application/vnd.geonext": { + "source": "iana", + "extensions": ["gxt"] + }, + "application/vnd.geoplan": { + "source": "iana", + "extensions": ["g2w"] + }, + "application/vnd.geospace": { + "source": "iana", + "extensions": ["g3w"] + }, + "application/vnd.gerber": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt-response": { + "source": "iana" + }, + "application/vnd.gmx": { + "source": "iana", + "extensions": ["gmx"] + }, + "application/vnd.google-apps.document": { + "compressible": false, + "extensions": ["gdoc"] + }, + "application/vnd.google-apps.presentation": { + "compressible": false, + "extensions": ["gslides"] + }, + "application/vnd.google-apps.spreadsheet": { + "compressible": false, + "extensions": ["gsheet"] + }, + "application/vnd.google-earth.kml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["kml"] + }, + "application/vnd.google-earth.kmz": { + "source": "iana", + "compressible": false, + "extensions": ["kmz"] + }, + "application/vnd.gov.sk.e-form+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.gov.sk.e-form+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.gov.sk.xmldatacontainer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.grafeq": { + "source": "iana", + "extensions": ["gqf","gqs"] + }, + "application/vnd.gridmp": { + "source": "iana" + }, + "application/vnd.groove-account": { + "source": "iana", + "extensions": ["gac"] + }, + "application/vnd.groove-help": { + "source": "iana", + "extensions": ["ghf"] + }, + "application/vnd.groove-identity-message": { + "source": "iana", + "extensions": ["gim"] + }, + "application/vnd.groove-injector": { + "source": "iana", + "extensions": ["grv"] + }, + "application/vnd.groove-tool-message": { + "source": "iana", + "extensions": ["gtm"] + }, + "application/vnd.groove-tool-template": { + "source": "iana", + "extensions": ["tpl"] + }, + "application/vnd.groove-vcard": { + "source": "iana", + "extensions": ["vcg"] + }, + "application/vnd.hal+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hal+xml": { + "source": "iana", + "compressible": true, + "extensions": ["hal"] + }, + "application/vnd.handheld-entertainment+xml": { + "source": "iana", + "compressible": true, + "extensions": ["zmm"] + }, + "application/vnd.hbci": { + "source": "iana", + "extensions": ["hbci"] + }, + "application/vnd.hc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hcl-bireports": { + "source": "iana" + }, + "application/vnd.hdt": { + "source": "iana" + }, + "application/vnd.heroku+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hhe.lesson-player": { + "source": "iana", + "extensions": ["les"] + }, + "application/vnd.hl7cda+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.hl7v2+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.hp-hpgl": { + "source": "iana", + "extensions": ["hpgl"] + }, + "application/vnd.hp-hpid": { + "source": "iana", + "extensions": ["hpid"] + }, + "application/vnd.hp-hps": { + "source": "iana", + "extensions": ["hps"] + }, + "application/vnd.hp-jlyt": { + "source": "iana", + "extensions": ["jlt"] + }, + "application/vnd.hp-pcl": { + "source": "iana", + "extensions": ["pcl"] + }, + "application/vnd.hp-pclxl": { + "source": "iana", + "extensions": ["pclxl"] + }, + "application/vnd.httphone": { + "source": "iana" + }, + "application/vnd.hydrostatix.sof-data": { + "source": "iana", + "extensions": ["sfd-hdstx"] + }, + "application/vnd.hyper+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyper-item+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyperdrive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hzn-3d-crossword": { + "source": "iana" + }, + "application/vnd.ibm.afplinedata": { + "source": "iana" + }, + "application/vnd.ibm.electronic-media": { + "source": "iana" + }, + "application/vnd.ibm.minipay": { + "source": "iana", + "extensions": ["mpy"] + }, + "application/vnd.ibm.modcap": { + "source": "iana", + "extensions": ["afp","listafp","list3820"] + }, + "application/vnd.ibm.rights-management": { + "source": "iana", + "extensions": ["irm"] + }, + "application/vnd.ibm.secure-container": { + "source": "iana", + "extensions": ["sc"] + }, + "application/vnd.iccprofile": { + "source": "iana", + "extensions": ["icc","icm"] + }, + "application/vnd.ieee.1905": { + "source": "iana" + }, + "application/vnd.igloader": { + "source": "iana", + "extensions": ["igl"] + }, + "application/vnd.imagemeter.folder+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.imagemeter.image+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.immervision-ivp": { + "source": "iana", + "extensions": ["ivp"] + }, + "application/vnd.immervision-ivu": { + "source": "iana", + "extensions": ["ivu"] + }, + "application/vnd.ims.imsccv1p1": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p2": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p3": { + "source": "iana" + }, + "application/vnd.ims.lis.v2.result+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolconsumerprofile+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy.id+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings.simple+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.informedcontrol.rms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.informix-visionary": { + "source": "iana" + }, + "application/vnd.infotech.project": { + "source": "iana" + }, + "application/vnd.infotech.project+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.innopath.wamp.notification": { + "source": "iana" + }, + "application/vnd.insors.igm": { + "source": "iana", + "extensions": ["igm"] + }, + "application/vnd.intercon.formnet": { + "source": "iana", + "extensions": ["xpw","xpx"] + }, + "application/vnd.intergeo": { + "source": "iana", + "extensions": ["i2g"] + }, + "application/vnd.intertrust.digibox": { + "source": "iana" + }, + "application/vnd.intertrust.nncp": { + "source": "iana" + }, + "application/vnd.intu.qbo": { + "source": "iana", + "extensions": ["qbo"] + }, + "application/vnd.intu.qfx": { + "source": "iana", + "extensions": ["qfx"] + }, + "application/vnd.iptc.g2.catalogitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.conceptitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.knowledgeitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.packageitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.planningitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ipunplugged.rcprofile": { + "source": "iana", + "extensions": ["rcprofile"] + }, + "application/vnd.irepository.package+xml": { + "source": "iana", + "compressible": true, + "extensions": ["irp"] + }, + "application/vnd.is-xpr": { + "source": "iana", + "extensions": ["xpr"] + }, + "application/vnd.isac.fcs": { + "source": "iana", + "extensions": ["fcs"] + }, + "application/vnd.iso11783-10+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.jam": { + "source": "iana", + "extensions": ["jam"] + }, + "application/vnd.japannet-directory-service": { + "source": "iana" + }, + "application/vnd.japannet-jpnstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-payment-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-registration": { + "source": "iana" + }, + "application/vnd.japannet-registration-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-setstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-verification": { + "source": "iana" + }, + "application/vnd.japannet-verification-wakeup": { + "source": "iana" + }, + "application/vnd.jcp.javame.midlet-rms": { + "source": "iana", + "extensions": ["rms"] + }, + "application/vnd.jisp": { + "source": "iana", + "extensions": ["jisp"] + }, + "application/vnd.joost.joda-archive": { + "source": "iana", + "extensions": ["joda"] + }, + "application/vnd.jsk.isdn-ngn": { + "source": "iana" + }, + "application/vnd.kahootz": { + "source": "iana", + "extensions": ["ktz","ktr"] + }, + "application/vnd.kde.karbon": { + "source": "iana", + "extensions": ["karbon"] + }, + "application/vnd.kde.kchart": { + "source": "iana", + "extensions": ["chrt"] + }, + "application/vnd.kde.kformula": { + "source": "iana", + "extensions": ["kfo"] + }, + "application/vnd.kde.kivio": { + "source": "iana", + "extensions": ["flw"] + }, + "application/vnd.kde.kontour": { + "source": "iana", + "extensions": ["kon"] + }, + "application/vnd.kde.kpresenter": { + "source": "iana", + "extensions": ["kpr","kpt"] + }, + "application/vnd.kde.kspread": { + "source": "iana", + "extensions": ["ksp"] + }, + "application/vnd.kde.kword": { + "source": "iana", + "extensions": ["kwd","kwt"] + }, + "application/vnd.kenameaapp": { + "source": "iana", + "extensions": ["htke"] + }, + "application/vnd.kidspiration": { + "source": "iana", + "extensions": ["kia"] + }, + "application/vnd.kinar": { + "source": "iana", + "extensions": ["kne","knp"] + }, + "application/vnd.koan": { + "source": "iana", + "extensions": ["skp","skd","skt","skm"] + }, + "application/vnd.kodak-descriptor": { + "source": "iana", + "extensions": ["sse"] + }, + "application/vnd.las": { + "source": "iana" + }, + "application/vnd.las.las+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.las.las+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lasxml"] + }, + "application/vnd.laszip": { + "source": "iana" + }, + "application/vnd.leap+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.liberty-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.llamagraphics.life-balance.desktop": { + "source": "iana", + "extensions": ["lbd"] + }, + "application/vnd.llamagraphics.life-balance.exchange+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lbe"] + }, + "application/vnd.logipipe.circuit+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.loom": { + "source": "iana" + }, + "application/vnd.lotus-1-2-3": { + "source": "iana", + "extensions": ["123"] + }, + "application/vnd.lotus-approach": { + "source": "iana", + "extensions": ["apr"] + }, + "application/vnd.lotus-freelance": { + "source": "iana", + "extensions": ["pre"] + }, + "application/vnd.lotus-notes": { + "source": "iana", + "extensions": ["nsf"] + }, + "application/vnd.lotus-organizer": { + "source": "iana", + "extensions": ["org"] + }, + "application/vnd.lotus-screencam": { + "source": "iana", + "extensions": ["scm"] + }, + "application/vnd.lotus-wordpro": { + "source": "iana", + "extensions": ["lwp"] + }, + "application/vnd.macports.portpkg": { + "source": "iana", + "extensions": ["portpkg"] + }, + "application/vnd.mapbox-vector-tile": { + "source": "iana", + "extensions": ["mvt"] + }, + "application/vnd.marlin.drm.actiontoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.conftoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.license+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.mdcf": { + "source": "iana" + }, + "application/vnd.mason+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.maxar.archive.3tz+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.maxmind.maxmind-db": { + "source": "iana" + }, + "application/vnd.mcd": { + "source": "iana", + "extensions": ["mcd"] + }, + "application/vnd.medcalcdata": { + "source": "iana", + "extensions": ["mc1"] + }, + "application/vnd.mediastation.cdkey": { + "source": "iana", + "extensions": ["cdkey"] + }, + "application/vnd.meridian-slingshot": { + "source": "iana" + }, + "application/vnd.mfer": { + "source": "iana", + "extensions": ["mwf"] + }, + "application/vnd.mfmp": { + "source": "iana", + "extensions": ["mfm"] + }, + "application/vnd.micro+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.micrografx.flo": { + "source": "iana", + "extensions": ["flo"] + }, + "application/vnd.micrografx.igx": { + "source": "iana", + "extensions": ["igx"] + }, + "application/vnd.microsoft.portable-executable": { + "source": "iana" + }, + "application/vnd.microsoft.windows.thumbnail-cache": { + "source": "iana" + }, + "application/vnd.miele+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.mif": { + "source": "iana", + "extensions": ["mif"] + }, + "application/vnd.minisoft-hp3000-save": { + "source": "iana" + }, + "application/vnd.mitsubishi.misty-guard.trustweb": { + "source": "iana" + }, + "application/vnd.mobius.daf": { + "source": "iana", + "extensions": ["daf"] + }, + "application/vnd.mobius.dis": { + "source": "iana", + "extensions": ["dis"] + }, + "application/vnd.mobius.mbk": { + "source": "iana", + "extensions": ["mbk"] + }, + "application/vnd.mobius.mqy": { + "source": "iana", + "extensions": ["mqy"] + }, + "application/vnd.mobius.msl": { + "source": "iana", + "extensions": ["msl"] + }, + "application/vnd.mobius.plc": { + "source": "iana", + "extensions": ["plc"] + }, + "application/vnd.mobius.txf": { + "source": "iana", + "extensions": ["txf"] + }, + "application/vnd.mophun.application": { + "source": "iana", + "extensions": ["mpn"] + }, + "application/vnd.mophun.certificate": { + "source": "iana", + "extensions": ["mpc"] + }, + "application/vnd.motorola.flexsuite": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.adsi": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.fis": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.gotap": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.kmr": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.ttc": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.wem": { + "source": "iana" + }, + "application/vnd.motorola.iprm": { + "source": "iana" + }, + "application/vnd.mozilla.xul+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xul"] + }, + "application/vnd.ms-3mfdocument": { + "source": "iana" + }, + "application/vnd.ms-artgalry": { + "source": "iana", + "extensions": ["cil"] + }, + "application/vnd.ms-asf": { + "source": "iana" + }, + "application/vnd.ms-cab-compressed": { + "source": "iana", + "extensions": ["cab"] + }, + "application/vnd.ms-color.iccprofile": { + "source": "apache" + }, + "application/vnd.ms-excel": { + "source": "iana", + "compressible": false, + "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] + }, + "application/vnd.ms-excel.addin.macroenabled.12": { + "source": "iana", + "extensions": ["xlam"] + }, + "application/vnd.ms-excel.sheet.binary.macroenabled.12": { + "source": "iana", + "extensions": ["xlsb"] + }, + "application/vnd.ms-excel.sheet.macroenabled.12": { + "source": "iana", + "extensions": ["xlsm"] + }, + "application/vnd.ms-excel.template.macroenabled.12": { + "source": "iana", + "extensions": ["xltm"] + }, + "application/vnd.ms-fontobject": { + "source": "iana", + "compressible": true, + "extensions": ["eot"] + }, + "application/vnd.ms-htmlhelp": { + "source": "iana", + "extensions": ["chm"] + }, + "application/vnd.ms-ims": { + "source": "iana", + "extensions": ["ims"] + }, + "application/vnd.ms-lrm": { + "source": "iana", + "extensions": ["lrm"] + }, + "application/vnd.ms-office.activex+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-officetheme": { + "source": "iana", + "extensions": ["thmx"] + }, + "application/vnd.ms-opentype": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-outlook": { + "compressible": false, + "extensions": ["msg"] + }, + "application/vnd.ms-package.obfuscated-opentype": { + "source": "apache" + }, + "application/vnd.ms-pki.seccat": { + "source": "apache", + "extensions": ["cat"] + }, + "application/vnd.ms-pki.stl": { + "source": "apache", + "extensions": ["stl"] + }, + "application/vnd.ms-playready.initiator+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-powerpoint": { + "source": "iana", + "compressible": false, + "extensions": ["ppt","pps","pot"] + }, + "application/vnd.ms-powerpoint.addin.macroenabled.12": { + "source": "iana", + "extensions": ["ppam"] + }, + "application/vnd.ms-powerpoint.presentation.macroenabled.12": { + "source": "iana", + "extensions": ["pptm"] + }, + "application/vnd.ms-powerpoint.slide.macroenabled.12": { + "source": "iana", + "extensions": ["sldm"] + }, + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { + "source": "iana", + "extensions": ["ppsm"] + }, + "application/vnd.ms-powerpoint.template.macroenabled.12": { + "source": "iana", + "extensions": ["potm"] + }, + "application/vnd.ms-printdevicecapabilities+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-printing.printticket+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-printschematicket+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-project": { + "source": "iana", + "extensions": ["mpp","mpt"] + }, + "application/vnd.ms-tnef": { + "source": "iana" + }, + "application/vnd.ms-windows.devicepairing": { + "source": "iana" + }, + "application/vnd.ms-windows.nwprinting.oob": { + "source": "iana" + }, + "application/vnd.ms-windows.printerpairing": { + "source": "iana" + }, + "application/vnd.ms-windows.wsd.oob": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-resp": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-resp": { + "source": "iana" + }, + "application/vnd.ms-word.document.macroenabled.12": { + "source": "iana", + "extensions": ["docm"] + }, + "application/vnd.ms-word.template.macroenabled.12": { + "source": "iana", + "extensions": ["dotm"] + }, + "application/vnd.ms-works": { + "source": "iana", + "extensions": ["wps","wks","wcm","wdb"] + }, + "application/vnd.ms-wpl": { + "source": "iana", + "extensions": ["wpl"] + }, + "application/vnd.ms-xpsdocument": { + "source": "iana", + "compressible": false, + "extensions": ["xps"] + }, + "application/vnd.msa-disk-image": { + "source": "iana" + }, + "application/vnd.mseq": { + "source": "iana", + "extensions": ["mseq"] + }, + "application/vnd.msign": { + "source": "iana" + }, + "application/vnd.multiad.creator": { + "source": "iana" + }, + "application/vnd.multiad.creator.cif": { + "source": "iana" + }, + "application/vnd.music-niff": { + "source": "iana" + }, + "application/vnd.musician": { + "source": "iana", + "extensions": ["mus"] + }, + "application/vnd.muvee.style": { + "source": "iana", + "extensions": ["msty"] + }, + "application/vnd.mynfc": { + "source": "iana", + "extensions": ["taglet"] + }, + "application/vnd.nacamar.ybrid+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ncd.control": { + "source": "iana" + }, + "application/vnd.ncd.reference": { + "source": "iana" + }, + "application/vnd.nearst.inv+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.nebumind.line": { + "source": "iana" + }, + "application/vnd.nervana": { + "source": "iana" + }, + "application/vnd.netfpx": { + "source": "iana" + }, + "application/vnd.neurolanguage.nlu": { + "source": "iana", + "extensions": ["nlu"] + }, + "application/vnd.nimn": { + "source": "iana" + }, + "application/vnd.nintendo.nitro.rom": { + "source": "iana" + }, + "application/vnd.nintendo.snes.rom": { + "source": "iana" + }, + "application/vnd.nitf": { + "source": "iana", + "extensions": ["ntf","nitf"] + }, + "application/vnd.noblenet-directory": { + "source": "iana", + "extensions": ["nnd"] + }, + "application/vnd.noblenet-sealer": { + "source": "iana", + "extensions": ["nns"] + }, + "application/vnd.noblenet-web": { + "source": "iana", + "extensions": ["nnw"] + }, + "application/vnd.nokia.catalogs": { + "source": "iana" + }, + "application/vnd.nokia.conml+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.conml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.iptv.config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.isds-radio-presets": { + "source": "iana" + }, + "application/vnd.nokia.landmark+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.landmark+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.landmarkcollection+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.n-gage.ac+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ac"] + }, + "application/vnd.nokia.n-gage.data": { + "source": "iana", + "extensions": ["ngdat"] + }, + "application/vnd.nokia.n-gage.symbian.install": { + "source": "iana", + "extensions": ["n-gage"] + }, + "application/vnd.nokia.ncd": { + "source": "iana" + }, + "application/vnd.nokia.pcd+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.pcd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.radio-preset": { + "source": "iana", + "extensions": ["rpst"] + }, + "application/vnd.nokia.radio-presets": { + "source": "iana", + "extensions": ["rpss"] + }, + "application/vnd.novadigm.edm": { + "source": "iana", + "extensions": ["edm"] + }, + "application/vnd.novadigm.edx": { + "source": "iana", + "extensions": ["edx"] + }, + "application/vnd.novadigm.ext": { + "source": "iana", + "extensions": ["ext"] + }, + "application/vnd.ntt-local.content-share": { + "source": "iana" + }, + "application/vnd.ntt-local.file-transfer": { + "source": "iana" + }, + "application/vnd.ntt-local.ogw_remote-access": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_remote": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_tcp_stream": { + "source": "iana" + }, + "application/vnd.oasis.opendocument.chart": { + "source": "iana", + "extensions": ["odc"] + }, + "application/vnd.oasis.opendocument.chart-template": { + "source": "iana", + "extensions": ["otc"] + }, + "application/vnd.oasis.opendocument.database": { + "source": "iana", + "extensions": ["odb"] + }, + "application/vnd.oasis.opendocument.formula": { + "source": "iana", + "extensions": ["odf"] + }, + "application/vnd.oasis.opendocument.formula-template": { + "source": "iana", + "extensions": ["odft"] + }, + "application/vnd.oasis.opendocument.graphics": { + "source": "iana", + "compressible": false, + "extensions": ["odg"] + }, + "application/vnd.oasis.opendocument.graphics-template": { + "source": "iana", + "extensions": ["otg"] + }, + "application/vnd.oasis.opendocument.image": { + "source": "iana", + "extensions": ["odi"] + }, + "application/vnd.oasis.opendocument.image-template": { + "source": "iana", + "extensions": ["oti"] + }, + "application/vnd.oasis.opendocument.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["odp"] + }, + "application/vnd.oasis.opendocument.presentation-template": { + "source": "iana", + "extensions": ["otp"] + }, + "application/vnd.oasis.opendocument.spreadsheet": { + "source": "iana", + "compressible": false, + "extensions": ["ods"] + }, + "application/vnd.oasis.opendocument.spreadsheet-template": { + "source": "iana", + "extensions": ["ots"] + }, + "application/vnd.oasis.opendocument.text": { + "source": "iana", + "compressible": false, + "extensions": ["odt"] + }, + "application/vnd.oasis.opendocument.text-master": { + "source": "iana", + "extensions": ["odm"] + }, + "application/vnd.oasis.opendocument.text-template": { + "source": "iana", + "extensions": ["ott"] + }, + "application/vnd.oasis.opendocument.text-web": { + "source": "iana", + "extensions": ["oth"] + }, + "application/vnd.obn": { + "source": "iana" + }, + "application/vnd.ocf+cbor": { + "source": "iana" + }, + "application/vnd.oci.image.manifest.v1+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oftn.l10n+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessdownload+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessstreaming+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.cspg-hexbinary": { + "source": "iana" + }, + "application/vnd.oipf.dae.svg+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.dae.xhtml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.mippvcontrolmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.pae.gem": { + "source": "iana" + }, + "application/vnd.oipf.spdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.spdlist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.ueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.userprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.olpc-sugar": { + "source": "iana", + "extensions": ["xo"] + }, + "application/vnd.oma-scws-config": { + "source": "iana" + }, + "application/vnd.oma-scws-http-request": { + "source": "iana" + }, + "application/vnd.oma-scws-http-response": { + "source": "iana" + }, + "application/vnd.oma.bcast.associated-procedure-parameter+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.drm-trigger+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.imd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.ltkm": { + "source": "iana" + }, + "application/vnd.oma.bcast.notification+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.provisioningtrigger": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgboot": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgdd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sgdu": { + "source": "iana" + }, + "application/vnd.oma.bcast.simple-symbol-container": { + "source": "iana" + }, + "application/vnd.oma.bcast.smartcard-trigger+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sprov+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.stkm": { + "source": "iana" + }, + "application/vnd.oma.cab-address-book+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-feature-handler+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-pcc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-subs-invite+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-user-prefs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.dcd": { + "source": "iana" + }, + "application/vnd.oma.dcdc": { + "source": "iana" + }, + "application/vnd.oma.dd2+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dd2"] + }, + "application/vnd.oma.drm.risd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.group-usage-list+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+cbor": { + "source": "iana" + }, + "application/vnd.oma.lwm2m+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+tlv": { + "source": "iana" + }, + "application/vnd.oma.pal+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.detailed-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.final-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.groups+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.invocation-descriptor+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.optimized-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.push": { + "source": "iana" + }, + "application/vnd.oma.scidm.messages+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.xcap-directory+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.omads-email+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-file+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-folder+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omaloc-supl-init": { + "source": "iana" + }, + "application/vnd.onepager": { + "source": "iana" + }, + "application/vnd.onepagertamp": { + "source": "iana" + }, + "application/vnd.onepagertamx": { + "source": "iana" + }, + "application/vnd.onepagertat": { + "source": "iana" + }, + "application/vnd.onepagertatp": { + "source": "iana" + }, + "application/vnd.onepagertatx": { + "source": "iana" + }, + "application/vnd.openblox.game+xml": { + "source": "iana", + "compressible": true, + "extensions": ["obgx"] + }, + "application/vnd.openblox.game-binary": { + "source": "iana" + }, + "application/vnd.openeye.oeb": { + "source": "iana" + }, + "application/vnd.openofficeorg.extension": { + "source": "apache", + "extensions": ["oxt"] + }, + "application/vnd.openstreetmap.data+xml": { + "source": "iana", + "compressible": true, + "extensions": ["osm"] + }, + "application/vnd.opentimestamps.ots": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.custom-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawing+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.extended-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["pptx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide": { + "source": "iana", + "extensions": ["sldx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { + "source": "iana", + "extensions": ["ppsx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.template": { + "source": "iana", + "extensions": ["potx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + "source": "iana", + "compressible": false, + "extensions": ["xlsx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { + "source": "iana", + "extensions": ["xltx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.theme+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.themeoverride+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.vmldrawing": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + "source": "iana", + "compressible": false, + "extensions": ["docx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { + "source": "iana", + "extensions": ["dotx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.core-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.relationships+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oracle.resource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.orange.indata": { + "source": "iana" + }, + "application/vnd.osa.netdeploy": { + "source": "iana" + }, + "application/vnd.osgeo.mapguide.package": { + "source": "iana", + "extensions": ["mgp"] + }, + "application/vnd.osgi.bundle": { + "source": "iana" + }, + "application/vnd.osgi.dp": { + "source": "iana", + "extensions": ["dp"] + }, + "application/vnd.osgi.subsystem": { + "source": "iana", + "extensions": ["esa"] + }, + "application/vnd.otps.ct-kip+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oxli.countgraph": { + "source": "iana" + }, + "application/vnd.pagerduty+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.palm": { + "source": "iana", + "extensions": ["pdb","pqa","oprc"] + }, + "application/vnd.panoply": { + "source": "iana" + }, + "application/vnd.paos.xml": { + "source": "iana" + }, + "application/vnd.patentdive": { + "source": "iana" + }, + "application/vnd.patientecommsdoc": { + "source": "iana" + }, + "application/vnd.pawaafile": { + "source": "iana", + "extensions": ["paw"] + }, + "application/vnd.pcos": { + "source": "iana" + }, + "application/vnd.pg.format": { + "source": "iana", + "extensions": ["str"] + }, + "application/vnd.pg.osasli": { + "source": "iana", + "extensions": ["ei6"] + }, + "application/vnd.piaccess.application-licence": { + "source": "iana" + }, + "application/vnd.picsel": { + "source": "iana", + "extensions": ["efif"] + }, + "application/vnd.pmi.widget": { + "source": "iana", + "extensions": ["wg"] + }, + "application/vnd.poc.group-advertisement+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.pocketlearn": { + "source": "iana", + "extensions": ["plf"] + }, + "application/vnd.powerbuilder6": { + "source": "iana", + "extensions": ["pbd"] + }, + "application/vnd.powerbuilder6-s": { + "source": "iana" + }, + "application/vnd.powerbuilder7": { + "source": "iana" + }, + "application/vnd.powerbuilder7-s": { + "source": "iana" + }, + "application/vnd.powerbuilder75": { + "source": "iana" + }, + "application/vnd.powerbuilder75-s": { + "source": "iana" + }, + "application/vnd.preminet": { + "source": "iana" + }, + "application/vnd.previewsystems.box": { + "source": "iana", + "extensions": ["box"] + }, + "application/vnd.proteus.magazine": { + "source": "iana", + "extensions": ["mgz"] + }, + "application/vnd.psfs": { + "source": "iana" + }, + "application/vnd.publishare-delta-tree": { + "source": "iana", + "extensions": ["qps"] + }, + "application/vnd.pvi.ptid1": { + "source": "iana", + "extensions": ["ptid"] + }, + "application/vnd.pwg-multiplexed": { + "source": "iana" + }, + "application/vnd.pwg-xhtml-print+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.qualcomm.brew-app-res": { + "source": "iana" + }, + "application/vnd.quarantainenet": { + "source": "iana" + }, + "application/vnd.quark.quarkxpress": { + "source": "iana", + "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] + }, + "application/vnd.quobject-quoxdocument": { + "source": "iana" + }, + "application/vnd.radisys.moml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-stream+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-base+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-detect+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-group+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-speech+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-transform+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.rainstor.data": { + "source": "iana" + }, + "application/vnd.rapid": { + "source": "iana" + }, + "application/vnd.rar": { + "source": "iana", + "extensions": ["rar"] + }, + "application/vnd.realvnc.bed": { + "source": "iana", + "extensions": ["bed"] + }, + "application/vnd.recordare.musicxml": { + "source": "iana", + "extensions": ["mxl"] + }, + "application/vnd.recordare.musicxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["musicxml"] + }, + "application/vnd.renlearn.rlprint": { + "source": "iana" + }, + "application/vnd.resilient.logic": { + "source": "iana" + }, + "application/vnd.restful+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.rig.cryptonote": { + "source": "iana", + "extensions": ["cryptonote"] + }, + "application/vnd.rim.cod": { + "source": "apache", + "extensions": ["cod"] + }, + "application/vnd.rn-realmedia": { + "source": "apache", + "extensions": ["rm"] + }, + "application/vnd.rn-realmedia-vbr": { + "source": "apache", + "extensions": ["rmvb"] + }, + "application/vnd.route66.link66+xml": { + "source": "iana", + "compressible": true, + "extensions": ["link66"] + }, + "application/vnd.rs-274x": { + "source": "iana" + }, + "application/vnd.ruckus.download": { + "source": "iana" + }, + "application/vnd.s3sms": { + "source": "iana" + }, + "application/vnd.sailingtracker.track": { + "source": "iana", + "extensions": ["st"] + }, + "application/vnd.sar": { + "source": "iana" + }, + "application/vnd.sbm.cid": { + "source": "iana" + }, + "application/vnd.sbm.mid2": { + "source": "iana" + }, + "application/vnd.scribus": { + "source": "iana" + }, + "application/vnd.sealed.3df": { + "source": "iana" + }, + "application/vnd.sealed.csf": { + "source": "iana" + }, + "application/vnd.sealed.doc": { + "source": "iana" + }, + "application/vnd.sealed.eml": { + "source": "iana" + }, + "application/vnd.sealed.mht": { + "source": "iana" + }, + "application/vnd.sealed.net": { + "source": "iana" + }, + "application/vnd.sealed.ppt": { + "source": "iana" + }, + "application/vnd.sealed.tiff": { + "source": "iana" + }, + "application/vnd.sealed.xls": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.html": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.pdf": { + "source": "iana" + }, + "application/vnd.seemail": { + "source": "iana", + "extensions": ["see"] + }, + "application/vnd.seis+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.sema": { + "source": "iana", + "extensions": ["sema"] + }, + "application/vnd.semd": { + "source": "iana", + "extensions": ["semd"] + }, + "application/vnd.semf": { + "source": "iana", + "extensions": ["semf"] + }, + "application/vnd.shade-save-file": { + "source": "iana" + }, + "application/vnd.shana.informed.formdata": { + "source": "iana", + "extensions": ["ifm"] + }, + "application/vnd.shana.informed.formtemplate": { + "source": "iana", + "extensions": ["itp"] + }, + "application/vnd.shana.informed.interchange": { + "source": "iana", + "extensions": ["iif"] + }, + "application/vnd.shana.informed.package": { + "source": "iana", + "extensions": ["ipk"] + }, + "application/vnd.shootproof+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shopkick+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shp": { + "source": "iana" + }, + "application/vnd.shx": { + "source": "iana" + }, + "application/vnd.sigrok.session": { + "source": "iana" + }, + "application/vnd.simtech-mindmapper": { + "source": "iana", + "extensions": ["twd","twds"] + }, + "application/vnd.siren+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.smaf": { + "source": "iana", + "extensions": ["mmf"] + }, + "application/vnd.smart.notebook": { + "source": "iana" + }, + "application/vnd.smart.teacher": { + "source": "iana", + "extensions": ["teacher"] + }, + "application/vnd.snesdev-page-table": { + "source": "iana" + }, + "application/vnd.software602.filler.form+xml": { + "source": "iana", + "compressible": true, + "extensions": ["fo"] + }, + "application/vnd.software602.filler.form-xml-zip": { + "source": "iana" + }, + "application/vnd.solent.sdkm+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sdkm","sdkd"] + }, + "application/vnd.spotfire.dxp": { + "source": "iana", + "extensions": ["dxp"] + }, + "application/vnd.spotfire.sfs": { + "source": "iana", + "extensions": ["sfs"] + }, + "application/vnd.sqlite3": { + "source": "iana" + }, + "application/vnd.sss-cod": { + "source": "iana" + }, + "application/vnd.sss-dtf": { + "source": "iana" + }, + "application/vnd.sss-ntf": { + "source": "iana" + }, + "application/vnd.stardivision.calc": { + "source": "apache", + "extensions": ["sdc"] + }, + "application/vnd.stardivision.draw": { + "source": "apache", + "extensions": ["sda"] + }, + "application/vnd.stardivision.impress": { + "source": "apache", + "extensions": ["sdd"] + }, + "application/vnd.stardivision.math": { + "source": "apache", + "extensions": ["smf"] + }, + "application/vnd.stardivision.writer": { + "source": "apache", + "extensions": ["sdw","vor"] + }, + "application/vnd.stardivision.writer-global": { + "source": "apache", + "extensions": ["sgl"] + }, + "application/vnd.stepmania.package": { + "source": "iana", + "extensions": ["smzip"] + }, + "application/vnd.stepmania.stepchart": { + "source": "iana", + "extensions": ["sm"] + }, + "application/vnd.street-stream": { + "source": "iana" + }, + "application/vnd.sun.wadl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wadl"] + }, + "application/vnd.sun.xml.calc": { + "source": "apache", + "extensions": ["sxc"] + }, + "application/vnd.sun.xml.calc.template": { + "source": "apache", + "extensions": ["stc"] + }, + "application/vnd.sun.xml.draw": { + "source": "apache", + "extensions": ["sxd"] + }, + "application/vnd.sun.xml.draw.template": { + "source": "apache", + "extensions": ["std"] + }, + "application/vnd.sun.xml.impress": { + "source": "apache", + "extensions": ["sxi"] + }, + "application/vnd.sun.xml.impress.template": { + "source": "apache", + "extensions": ["sti"] + }, + "application/vnd.sun.xml.math": { + "source": "apache", + "extensions": ["sxm"] + }, + "application/vnd.sun.xml.writer": { + "source": "apache", + "extensions": ["sxw"] + }, + "application/vnd.sun.xml.writer.global": { + "source": "apache", + "extensions": ["sxg"] + }, + "application/vnd.sun.xml.writer.template": { + "source": "apache", + "extensions": ["stw"] + }, + "application/vnd.sus-calendar": { + "source": "iana", + "extensions": ["sus","susp"] + }, + "application/vnd.svd": { + "source": "iana", + "extensions": ["svd"] + }, + "application/vnd.swiftview-ics": { + "source": "iana" + }, + "application/vnd.sycle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.syft+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.symbian.install": { + "source": "apache", + "extensions": ["sis","sisx"] + }, + "application/vnd.syncml+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["xsm"] + }, + "application/vnd.syncml.dm+wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["bdm"] + }, + "application/vnd.syncml.dm+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["xdm"] + }, + "application/vnd.syncml.dm.notification": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["ddf"] + }, + "application/vnd.syncml.dmtnds+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmtnds+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.syncml.ds.notification": { + "source": "iana" + }, + "application/vnd.tableschema+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tao.intent-module-archive": { + "source": "iana", + "extensions": ["tao"] + }, + "application/vnd.tcpdump.pcap": { + "source": "iana", + "extensions": ["pcap","cap","dmp"] + }, + "application/vnd.think-cell.ppttc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tmd.mediaflex.api+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.tml": { + "source": "iana" + }, + "application/vnd.tmobile-livetv": { + "source": "iana", + "extensions": ["tmo"] + }, + "application/vnd.tri.onesource": { + "source": "iana" + }, + "application/vnd.trid.tpt": { + "source": "iana", + "extensions": ["tpt"] + }, + "application/vnd.triscape.mxs": { + "source": "iana", + "extensions": ["mxs"] + }, + "application/vnd.trueapp": { + "source": "iana", + "extensions": ["tra"] + }, + "application/vnd.truedoc": { + "source": "iana" + }, + "application/vnd.ubisoft.webplayer": { + "source": "iana" + }, + "application/vnd.ufdl": { + "source": "iana", + "extensions": ["ufd","ufdl"] + }, + "application/vnd.uiq.theme": { + "source": "iana", + "extensions": ["utz"] + }, + "application/vnd.umajin": { + "source": "iana", + "extensions": ["umj"] + }, + "application/vnd.unity": { + "source": "iana", + "extensions": ["unityweb"] + }, + "application/vnd.uoml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["uoml"] + }, + "application/vnd.uplanet.alert": { + "source": "iana" + }, + "application/vnd.uplanet.alert-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.channel": { + "source": "iana" + }, + "application/vnd.uplanet.channel-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.list": { + "source": "iana" + }, + "application/vnd.uplanet.list-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.signal": { + "source": "iana" + }, + "application/vnd.uri-map": { + "source": "iana" + }, + "application/vnd.valve.source.material": { + "source": "iana" + }, + "application/vnd.vcx": { + "source": "iana", + "extensions": ["vcx"] + }, + "application/vnd.vd-study": { + "source": "iana" + }, + "application/vnd.vectorworks": { + "source": "iana" + }, + "application/vnd.vel+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.verimatrix.vcas": { + "source": "iana" + }, + "application/vnd.veritone.aion+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.veryant.thin": { + "source": "iana" + }, + "application/vnd.ves.encrypted": { + "source": "iana" + }, + "application/vnd.vidsoft.vidconference": { + "source": "iana" + }, + "application/vnd.visio": { + "source": "iana", + "extensions": ["vsd","vst","vss","vsw"] + }, + "application/vnd.visionary": { + "source": "iana", + "extensions": ["vis"] + }, + "application/vnd.vividence.scriptfile": { + "source": "iana" + }, + "application/vnd.vsf": { + "source": "iana", + "extensions": ["vsf"] + }, + "application/vnd.wap.sic": { + "source": "iana" + }, + "application/vnd.wap.slc": { + "source": "iana" + }, + "application/vnd.wap.wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["wbxml"] + }, + "application/vnd.wap.wmlc": { + "source": "iana", + "extensions": ["wmlc"] + }, + "application/vnd.wap.wmlscriptc": { + "source": "iana", + "extensions": ["wmlsc"] + }, + "application/vnd.webturbo": { + "source": "iana", + "extensions": ["wtb"] + }, + "application/vnd.wfa.dpp": { + "source": "iana" + }, + "application/vnd.wfa.p2p": { + "source": "iana" + }, + "application/vnd.wfa.wsc": { + "source": "iana" + }, + "application/vnd.windows.devicepairing": { + "source": "iana" + }, + "application/vnd.wmc": { + "source": "iana" + }, + "application/vnd.wmf.bootstrap": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica.package": { + "source": "iana" + }, + "application/vnd.wolfram.player": { + "source": "iana", + "extensions": ["nbp"] + }, + "application/vnd.wordperfect": { + "source": "iana", + "extensions": ["wpd"] + }, + "application/vnd.wqd": { + "source": "iana", + "extensions": ["wqd"] + }, + "application/vnd.wrq-hp3000-labelled": { + "source": "iana" + }, + "application/vnd.wt.stf": { + "source": "iana", + "extensions": ["stf"] + }, + "application/vnd.wv.csp+wbxml": { + "source": "iana" + }, + "application/vnd.wv.csp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.wv.ssp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xacml+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.xara": { + "source": "iana", + "extensions": ["xar"] + }, + "application/vnd.xfdl": { + "source": "iana", + "extensions": ["xfdl"] + }, + "application/vnd.xfdl.webform": { + "source": "iana" + }, + "application/vnd.xmi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xmpie.cpkg": { + "source": "iana" + }, + "application/vnd.xmpie.dpkg": { + "source": "iana" + }, + "application/vnd.xmpie.plan": { + "source": "iana" + }, + "application/vnd.xmpie.ppkg": { + "source": "iana" + }, + "application/vnd.xmpie.xlim": { + "source": "iana" + }, + "application/vnd.yamaha.hv-dic": { + "source": "iana", + "extensions": ["hvd"] + }, + "application/vnd.yamaha.hv-script": { + "source": "iana", + "extensions": ["hvs"] + }, + "application/vnd.yamaha.hv-voice": { + "source": "iana", + "extensions": ["hvp"] + }, + "application/vnd.yamaha.openscoreformat": { + "source": "iana", + "extensions": ["osf"] + }, + "application/vnd.yamaha.openscoreformat.osfpvg+xml": { + "source": "iana", + "compressible": true, + "extensions": ["osfpvg"] + }, + "application/vnd.yamaha.remote-setup": { + "source": "iana" + }, + "application/vnd.yamaha.smaf-audio": { + "source": "iana", + "extensions": ["saf"] + }, + "application/vnd.yamaha.smaf-phrase": { + "source": "iana", + "extensions": ["spf"] + }, + "application/vnd.yamaha.through-ngn": { + "source": "iana" + }, + "application/vnd.yamaha.tunnel-udpencap": { + "source": "iana" + }, + "application/vnd.yaoweme": { + "source": "iana" + }, + "application/vnd.yellowriver-custom-menu": { + "source": "iana", + "extensions": ["cmp"] + }, + "application/vnd.youtube.yt": { + "source": "iana" + }, + "application/vnd.zul": { + "source": "iana", + "extensions": ["zir","zirz"] + }, + "application/vnd.zzazz.deck+xml": { + "source": "iana", + "compressible": true, + "extensions": ["zaz"] + }, + "application/voicexml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["vxml"] + }, + "application/voucher-cms+json": { + "source": "iana", + "compressible": true + }, + "application/vq-rtcpxr": { + "source": "iana" + }, + "application/wasm": { + "source": "iana", + "compressible": true, + "extensions": ["wasm"] + }, + "application/watcherinfo+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wif"] + }, + "application/webpush-options+json": { + "source": "iana", + "compressible": true + }, + "application/whoispp-query": { + "source": "iana" + }, + "application/whoispp-response": { + "source": "iana" + }, + "application/widget": { + "source": "iana", + "extensions": ["wgt"] + }, + "application/winhlp": { + "source": "apache", + "extensions": ["hlp"] + }, + "application/wita": { + "source": "iana" + }, + "application/wordperfect5.1": { + "source": "iana" + }, + "application/wsdl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wsdl"] + }, + "application/wspolicy+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wspolicy"] + }, + "application/x-7z-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["7z"] + }, + "application/x-abiword": { + "source": "apache", + "extensions": ["abw"] + }, + "application/x-ace-compressed": { + "source": "apache", + "extensions": ["ace"] + }, + "application/x-amf": { + "source": "apache" + }, + "application/x-apple-diskimage": { + "source": "apache", + "extensions": ["dmg"] + }, + "application/x-arj": { + "compressible": false, + "extensions": ["arj"] + }, + "application/x-authorware-bin": { + "source": "apache", + "extensions": ["aab","x32","u32","vox"] + }, + "application/x-authorware-map": { + "source": "apache", + "extensions": ["aam"] + }, + "application/x-authorware-seg": { + "source": "apache", + "extensions": ["aas"] + }, + "application/x-bcpio": { + "source": "apache", + "extensions": ["bcpio"] + }, + "application/x-bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/x-bittorrent": { + "source": "apache", + "extensions": ["torrent"] + }, + "application/x-blorb": { + "source": "apache", + "extensions": ["blb","blorb"] + }, + "application/x-bzip": { + "source": "apache", + "compressible": false, + "extensions": ["bz"] + }, + "application/x-bzip2": { + "source": "apache", + "compressible": false, + "extensions": ["bz2","boz"] + }, + "application/x-cbr": { + "source": "apache", + "extensions": ["cbr","cba","cbt","cbz","cb7"] + }, + "application/x-cdlink": { + "source": "apache", + "extensions": ["vcd"] + }, + "application/x-cfs-compressed": { + "source": "apache", + "extensions": ["cfs"] + }, + "application/x-chat": { + "source": "apache", + "extensions": ["chat"] + }, + "application/x-chess-pgn": { + "source": "apache", + "extensions": ["pgn"] + }, + "application/x-chrome-extension": { + "extensions": ["crx"] + }, + "application/x-cocoa": { + "source": "nginx", + "extensions": ["cco"] + }, + "application/x-compress": { + "source": "apache" + }, + "application/x-conference": { + "source": "apache", + "extensions": ["nsc"] + }, + "application/x-cpio": { + "source": "apache", + "extensions": ["cpio"] + }, + "application/x-csh": { + "source": "apache", + "extensions": ["csh"] + }, + "application/x-deb": { + "compressible": false + }, + "application/x-debian-package": { + "source": "apache", + "extensions": ["deb","udeb"] + }, + "application/x-dgc-compressed": { + "source": "apache", + "extensions": ["dgc"] + }, + "application/x-director": { + "source": "apache", + "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] + }, + "application/x-doom": { + "source": "apache", + "extensions": ["wad"] + }, + "application/x-dtbncx+xml": { + "source": "apache", + "compressible": true, + "extensions": ["ncx"] + }, + "application/x-dtbook+xml": { + "source": "apache", + "compressible": true, + "extensions": ["dtb"] + }, + "application/x-dtbresource+xml": { + "source": "apache", + "compressible": true, + "extensions": ["res"] + }, + "application/x-dvi": { + "source": "apache", + "compressible": false, + "extensions": ["dvi"] + }, + "application/x-envoy": { + "source": "apache", + "extensions": ["evy"] + }, + "application/x-eva": { + "source": "apache", + "extensions": ["eva"] + }, + "application/x-font-bdf": { + "source": "apache", + "extensions": ["bdf"] + }, + "application/x-font-dos": { + "source": "apache" + }, + "application/x-font-framemaker": { + "source": "apache" + }, + "application/x-font-ghostscript": { + "source": "apache", + "extensions": ["gsf"] + }, + "application/x-font-libgrx": { + "source": "apache" + }, + "application/x-font-linux-psf": { + "source": "apache", + "extensions": ["psf"] + }, + "application/x-font-pcf": { + "source": "apache", + "extensions": ["pcf"] + }, + "application/x-font-snf": { + "source": "apache", + "extensions": ["snf"] + }, + "application/x-font-speedo": { + "source": "apache" + }, + "application/x-font-sunos-news": { + "source": "apache" + }, + "application/x-font-type1": { + "source": "apache", + "extensions": ["pfa","pfb","pfm","afm"] + }, + "application/x-font-vfont": { + "source": "apache" + }, + "application/x-freearc": { + "source": "apache", + "extensions": ["arc"] + }, + "application/x-futuresplash": { + "source": "apache", + "extensions": ["spl"] + }, + "application/x-gca-compressed": { + "source": "apache", + "extensions": ["gca"] + }, + "application/x-glulx": { + "source": "apache", + "extensions": ["ulx"] + }, + "application/x-gnumeric": { + "source": "apache", + "extensions": ["gnumeric"] + }, + "application/x-gramps-xml": { + "source": "apache", + "extensions": ["gramps"] + }, + "application/x-gtar": { + "source": "apache", + "extensions": ["gtar"] + }, + "application/x-gzip": { + "source": "apache" + }, + "application/x-hdf": { + "source": "apache", + "extensions": ["hdf"] + }, + "application/x-httpd-php": { + "compressible": true, + "extensions": ["php"] + }, + "application/x-install-instructions": { + "source": "apache", + "extensions": ["install"] + }, + "application/x-iso9660-image": { + "source": "apache", + "extensions": ["iso"] + }, + "application/x-iwork-keynote-sffkey": { + "extensions": ["key"] + }, + "application/x-iwork-numbers-sffnumbers": { + "extensions": ["numbers"] + }, + "application/x-iwork-pages-sffpages": { + "extensions": ["pages"] + }, + "application/x-java-archive-diff": { + "source": "nginx", + "extensions": ["jardiff"] + }, + "application/x-java-jnlp-file": { + "source": "apache", + "compressible": false, + "extensions": ["jnlp"] + }, + "application/x-javascript": { + "compressible": true + }, + "application/x-keepass2": { + "extensions": ["kdbx"] + }, + "application/x-latex": { + "source": "apache", + "compressible": false, + "extensions": ["latex"] + }, + "application/x-lua-bytecode": { + "extensions": ["luac"] + }, + "application/x-lzh-compressed": { + "source": "apache", + "extensions": ["lzh","lha"] + }, + "application/x-makeself": { + "source": "nginx", + "extensions": ["run"] + }, + "application/x-mie": { + "source": "apache", + "extensions": ["mie"] + }, + "application/x-mobipocket-ebook": { + "source": "apache", + "extensions": ["prc","mobi"] + }, + "application/x-mpegurl": { + "compressible": false + }, + "application/x-ms-application": { + "source": "apache", + "extensions": ["application"] + }, + "application/x-ms-shortcut": { + "source": "apache", + "extensions": ["lnk"] + }, + "application/x-ms-wmd": { + "source": "apache", + "extensions": ["wmd"] + }, + "application/x-ms-wmz": { + "source": "apache", + "extensions": ["wmz"] + }, + "application/x-ms-xbap": { + "source": "apache", + "extensions": ["xbap"] + }, + "application/x-msaccess": { + "source": "apache", + "extensions": ["mdb"] + }, + "application/x-msbinder": { + "source": "apache", + "extensions": ["obd"] + }, + "application/x-mscardfile": { + "source": "apache", + "extensions": ["crd"] + }, + "application/x-msclip": { + "source": "apache", + "extensions": ["clp"] + }, + "application/x-msdos-program": { + "extensions": ["exe"] + }, + "application/x-msdownload": { + "source": "apache", + "extensions": ["exe","dll","com","bat","msi"] + }, + "application/x-msmediaview": { + "source": "apache", + "extensions": ["mvb","m13","m14"] + }, + "application/x-msmetafile": { + "source": "apache", + "extensions": ["wmf","wmz","emf","emz"] + }, + "application/x-msmoney": { + "source": "apache", + "extensions": ["mny"] + }, + "application/x-mspublisher": { + "source": "apache", + "extensions": ["pub"] + }, + "application/x-msschedule": { + "source": "apache", + "extensions": ["scd"] + }, + "application/x-msterminal": { + "source": "apache", + "extensions": ["trm"] + }, + "application/x-mswrite": { + "source": "apache", + "extensions": ["wri"] + }, + "application/x-netcdf": { + "source": "apache", + "extensions": ["nc","cdf"] + }, + "application/x-ns-proxy-autoconfig": { + "compressible": true, + "extensions": ["pac"] + }, + "application/x-nzb": { + "source": "apache", + "extensions": ["nzb"] + }, + "application/x-perl": { + "source": "nginx", + "extensions": ["pl","pm"] + }, + "application/x-pilot": { + "source": "nginx", + "extensions": ["prc","pdb"] + }, + "application/x-pkcs12": { + "source": "apache", + "compressible": false, + "extensions": ["p12","pfx"] + }, + "application/x-pkcs7-certificates": { + "source": "apache", + "extensions": ["p7b","spc"] + }, + "application/x-pkcs7-certreqresp": { + "source": "apache", + "extensions": ["p7r"] + }, + "application/x-pki-message": { + "source": "iana" + }, + "application/x-rar-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["rar"] + }, + "application/x-redhat-package-manager": { + "source": "nginx", + "extensions": ["rpm"] + }, + "application/x-research-info-systems": { + "source": "apache", + "extensions": ["ris"] + }, + "application/x-sea": { + "source": "nginx", + "extensions": ["sea"] + }, + "application/x-sh": { + "source": "apache", + "compressible": true, + "extensions": ["sh"] + }, + "application/x-shar": { + "source": "apache", + "extensions": ["shar"] + }, + "application/x-shockwave-flash": { + "source": "apache", + "compressible": false, + "extensions": ["swf"] + }, + "application/x-silverlight-app": { + "source": "apache", + "extensions": ["xap"] + }, + "application/x-sql": { + "source": "apache", + "extensions": ["sql"] + }, + "application/x-stuffit": { + "source": "apache", + "compressible": false, + "extensions": ["sit"] + }, + "application/x-stuffitx": { + "source": "apache", + "extensions": ["sitx"] + }, + "application/x-subrip": { + "source": "apache", + "extensions": ["srt"] + }, + "application/x-sv4cpio": { + "source": "apache", + "extensions": ["sv4cpio"] + }, + "application/x-sv4crc": { + "source": "apache", + "extensions": ["sv4crc"] + }, + "application/x-t3vm-image": { + "source": "apache", + "extensions": ["t3"] + }, + "application/x-tads": { + "source": "apache", + "extensions": ["gam"] + }, + "application/x-tar": { + "source": "apache", + "compressible": true, + "extensions": ["tar"] + }, + "application/x-tcl": { + "source": "apache", + "extensions": ["tcl","tk"] + }, + "application/x-tex": { + "source": "apache", + "extensions": ["tex"] + }, + "application/x-tex-tfm": { + "source": "apache", + "extensions": ["tfm"] + }, + "application/x-texinfo": { + "source": "apache", + "extensions": ["texinfo","texi"] + }, + "application/x-tgif": { + "source": "apache", + "extensions": ["obj"] + }, + "application/x-ustar": { + "source": "apache", + "extensions": ["ustar"] + }, + "application/x-virtualbox-hdd": { + "compressible": true, + "extensions": ["hdd"] + }, + "application/x-virtualbox-ova": { + "compressible": true, + "extensions": ["ova"] + }, + "application/x-virtualbox-ovf": { + "compressible": true, + "extensions": ["ovf"] + }, + "application/x-virtualbox-vbox": { + "compressible": true, + "extensions": ["vbox"] + }, + "application/x-virtualbox-vbox-extpack": { + "compressible": false, + "extensions": ["vbox-extpack"] + }, + "application/x-virtualbox-vdi": { + "compressible": true, + "extensions": ["vdi"] + }, + "application/x-virtualbox-vhd": { + "compressible": true, + "extensions": ["vhd"] + }, + "application/x-virtualbox-vmdk": { + "compressible": true, + "extensions": ["vmdk"] + }, + "application/x-wais-source": { + "source": "apache", + "extensions": ["src"] + }, + "application/x-web-app-manifest+json": { + "compressible": true, + "extensions": ["webapp"] + }, + "application/x-www-form-urlencoded": { + "source": "iana", + "compressible": true + }, + "application/x-x509-ca-cert": { + "source": "iana", + "extensions": ["der","crt","pem"] + }, + "application/x-x509-ca-ra-cert": { + "source": "iana" + }, + "application/x-x509-next-ca-cert": { + "source": "iana" + }, + "application/x-xfig": { + "source": "apache", + "extensions": ["fig"] + }, + "application/x-xliff+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xlf"] + }, + "application/x-xpinstall": { + "source": "apache", + "compressible": false, + "extensions": ["xpi"] + }, + "application/x-xz": { + "source": "apache", + "extensions": ["xz"] + }, + "application/x-zmachine": { + "source": "apache", + "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] + }, + "application/x400-bp": { + "source": "iana" + }, + "application/xacml+xml": { + "source": "iana", + "compressible": true + }, + "application/xaml+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xaml"] + }, + "application/xcap-att+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xav"] + }, + "application/xcap-caps+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xca"] + }, + "application/xcap-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdf"] + }, + "application/xcap-el+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xel"] + }, + "application/xcap-error+xml": { + "source": "iana", + "compressible": true + }, + "application/xcap-ns+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xns"] + }, + "application/xcon-conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/xcon-conference-info-diff+xml": { + "source": "iana", + "compressible": true + }, + "application/xenc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xenc"] + }, + "application/xhtml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xhtml","xht"] + }, + "application/xhtml-voice+xml": { + "source": "apache", + "compressible": true + }, + "application/xliff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xlf"] + }, + "application/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml","xsl","xsd","rng"] + }, + "application/xml-dtd": { + "source": "iana", + "compressible": true, + "extensions": ["dtd"] + }, + "application/xml-external-parsed-entity": { + "source": "iana" + }, + "application/xml-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/xmpp+xml": { + "source": "iana", + "compressible": true + }, + "application/xop+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xop"] + }, + "application/xproc+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xpl"] + }, + "application/xslt+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xsl","xslt"] + }, + "application/xspf+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xspf"] + }, + "application/xv+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mxml","xhvml","xvml","xvm"] + }, + "application/yang": { + "source": "iana", + "extensions": ["yang"] + }, + "application/yang-data+json": { + "source": "iana", + "compressible": true + }, + "application/yang-data+xml": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+json": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/yin+xml": { + "source": "iana", + "compressible": true, + "extensions": ["yin"] + }, + "application/zip": { + "source": "iana", + "compressible": false, + "extensions": ["zip"] + }, + "application/zlib": { + "source": "iana" + }, + "application/zstd": { + "source": "iana" + }, + "audio/1d-interleaved-parityfec": { + "source": "iana" + }, + "audio/32kadpcm": { + "source": "iana" + }, + "audio/3gpp": { + "source": "iana", + "compressible": false, + "extensions": ["3gpp"] + }, + "audio/3gpp2": { + "source": "iana" + }, + "audio/aac": { + "source": "iana" + }, + "audio/ac3": { + "source": "iana" + }, + "audio/adpcm": { + "source": "apache", + "extensions": ["adp"] + }, + "audio/amr": { + "source": "iana", + "extensions": ["amr"] + }, + "audio/amr-wb": { + "source": "iana" + }, + "audio/amr-wb+": { + "source": "iana" + }, + "audio/aptx": { + "source": "iana" + }, + "audio/asc": { + "source": "iana" + }, + "audio/atrac-advanced-lossless": { + "source": "iana" + }, + "audio/atrac-x": { + "source": "iana" + }, + "audio/atrac3": { + "source": "iana" + }, + "audio/basic": { + "source": "iana", + "compressible": false, + "extensions": ["au","snd"] + }, + "audio/bv16": { + "source": "iana" + }, + "audio/bv32": { + "source": "iana" + }, + "audio/clearmode": { + "source": "iana" + }, + "audio/cn": { + "source": "iana" + }, + "audio/dat12": { + "source": "iana" + }, + "audio/dls": { + "source": "iana" + }, + "audio/dsr-es201108": { + "source": "iana" + }, + "audio/dsr-es202050": { + "source": "iana" + }, + "audio/dsr-es202211": { + "source": "iana" + }, + "audio/dsr-es202212": { + "source": "iana" + }, + "audio/dv": { + "source": "iana" + }, + "audio/dvi4": { + "source": "iana" + }, + "audio/eac3": { + "source": "iana" + }, + "audio/encaprtp": { + "source": "iana" + }, + "audio/evrc": { + "source": "iana" + }, + "audio/evrc-qcp": { + "source": "iana" + }, + "audio/evrc0": { + "source": "iana" + }, + "audio/evrc1": { + "source": "iana" + }, + "audio/evrcb": { + "source": "iana" + }, + "audio/evrcb0": { + "source": "iana" + }, + "audio/evrcb1": { + "source": "iana" + }, + "audio/evrcnw": { + "source": "iana" + }, + "audio/evrcnw0": { + "source": "iana" + }, + "audio/evrcnw1": { + "source": "iana" + }, + "audio/evrcwb": { + "source": "iana" + }, + "audio/evrcwb0": { + "source": "iana" + }, + "audio/evrcwb1": { + "source": "iana" + }, + "audio/evs": { + "source": "iana" + }, + "audio/flexfec": { + "source": "iana" + }, + "audio/fwdred": { + "source": "iana" + }, + "audio/g711-0": { + "source": "iana" + }, + "audio/g719": { + "source": "iana" + }, + "audio/g722": { + "source": "iana" + }, + "audio/g7221": { + "source": "iana" + }, + "audio/g723": { + "source": "iana" + }, + "audio/g726-16": { + "source": "iana" + }, + "audio/g726-24": { + "source": "iana" + }, + "audio/g726-32": { + "source": "iana" + }, + "audio/g726-40": { + "source": "iana" + }, + "audio/g728": { + "source": "iana" + }, + "audio/g729": { + "source": "iana" + }, + "audio/g7291": { + "source": "iana" + }, + "audio/g729d": { + "source": "iana" + }, + "audio/g729e": { + "source": "iana" + }, + "audio/gsm": { + "source": "iana" + }, + "audio/gsm-efr": { + "source": "iana" + }, + "audio/gsm-hr-08": { + "source": "iana" + }, + "audio/ilbc": { + "source": "iana" + }, + "audio/ip-mr_v2.5": { + "source": "iana" + }, + "audio/isac": { + "source": "apache" + }, + "audio/l16": { + "source": "iana" + }, + "audio/l20": { + "source": "iana" + }, + "audio/l24": { + "source": "iana", + "compressible": false + }, + "audio/l8": { + "source": "iana" + }, + "audio/lpc": { + "source": "iana" + }, + "audio/melp": { + "source": "iana" + }, + "audio/melp1200": { + "source": "iana" + }, + "audio/melp2400": { + "source": "iana" + }, + "audio/melp600": { + "source": "iana" + }, + "audio/mhas": { + "source": "iana" + }, + "audio/midi": { + "source": "apache", + "extensions": ["mid","midi","kar","rmi"] + }, + "audio/mobile-xmf": { + "source": "iana", + "extensions": ["mxmf"] + }, + "audio/mp3": { + "compressible": false, + "extensions": ["mp3"] + }, + "audio/mp4": { + "source": "iana", + "compressible": false, + "extensions": ["m4a","mp4a"] + }, + "audio/mp4a-latm": { + "source": "iana" + }, + "audio/mpa": { + "source": "iana" + }, + "audio/mpa-robust": { + "source": "iana" + }, + "audio/mpeg": { + "source": "iana", + "compressible": false, + "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] + }, + "audio/mpeg4-generic": { + "source": "iana" + }, + "audio/musepack": { + "source": "apache" + }, + "audio/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["oga","ogg","spx","opus"] + }, + "audio/opus": { + "source": "iana" + }, + "audio/parityfec": { + "source": "iana" + }, + "audio/pcma": { + "source": "iana" + }, + "audio/pcma-wb": { + "source": "iana" + }, + "audio/pcmu": { + "source": "iana" + }, + "audio/pcmu-wb": { + "source": "iana" + }, + "audio/prs.sid": { + "source": "iana" + }, + "audio/qcelp": { + "source": "iana" + }, + "audio/raptorfec": { + "source": "iana" + }, + "audio/red": { + "source": "iana" + }, + "audio/rtp-enc-aescm128": { + "source": "iana" + }, + "audio/rtp-midi": { + "source": "iana" + }, + "audio/rtploopback": { + "source": "iana" + }, + "audio/rtx": { + "source": "iana" + }, + "audio/s3m": { + "source": "apache", + "extensions": ["s3m"] + }, + "audio/scip": { + "source": "iana" + }, + "audio/silk": { + "source": "apache", + "extensions": ["sil"] + }, + "audio/smv": { + "source": "iana" + }, + "audio/smv-qcp": { + "source": "iana" + }, + "audio/smv0": { + "source": "iana" + }, + "audio/sofa": { + "source": "iana" + }, + "audio/sp-midi": { + "source": "iana" + }, + "audio/speex": { + "source": "iana" + }, + "audio/t140c": { + "source": "iana" + }, + "audio/t38": { + "source": "iana" + }, + "audio/telephone-event": { + "source": "iana" + }, + "audio/tetra_acelp": { + "source": "iana" + }, + "audio/tetra_acelp_bb": { + "source": "iana" + }, + "audio/tone": { + "source": "iana" + }, + "audio/tsvcis": { + "source": "iana" + }, + "audio/uemclip": { + "source": "iana" + }, + "audio/ulpfec": { + "source": "iana" + }, + "audio/usac": { + "source": "iana" + }, + "audio/vdvi": { + "source": "iana" + }, + "audio/vmr-wb": { + "source": "iana" + }, + "audio/vnd.3gpp.iufp": { + "source": "iana" + }, + "audio/vnd.4sb": { + "source": "iana" + }, + "audio/vnd.audiokoz": { + "source": "iana" + }, + "audio/vnd.celp": { + "source": "iana" + }, + "audio/vnd.cisco.nse": { + "source": "iana" + }, + "audio/vnd.cmles.radio-events": { + "source": "iana" + }, + "audio/vnd.cns.anp1": { + "source": "iana" + }, + "audio/vnd.cns.inf1": { + "source": "iana" + }, + "audio/vnd.dece.audio": { + "source": "iana", + "extensions": ["uva","uvva"] + }, + "audio/vnd.digital-winds": { + "source": "iana", + "extensions": ["eol"] + }, + "audio/vnd.dlna.adts": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.1": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.2": { + "source": "iana" + }, + "audio/vnd.dolby.mlp": { + "source": "iana" + }, + "audio/vnd.dolby.mps": { + "source": "iana" + }, + "audio/vnd.dolby.pl2": { + "source": "iana" + }, + "audio/vnd.dolby.pl2x": { + "source": "iana" + }, + "audio/vnd.dolby.pl2z": { + "source": "iana" + }, + "audio/vnd.dolby.pulse.1": { + "source": "iana" + }, + "audio/vnd.dra": { + "source": "iana", + "extensions": ["dra"] + }, + "audio/vnd.dts": { + "source": "iana", + "extensions": ["dts"] + }, + "audio/vnd.dts.hd": { + "source": "iana", + "extensions": ["dtshd"] + }, + "audio/vnd.dts.uhd": { + "source": "iana" + }, + "audio/vnd.dvb.file": { + "source": "iana" + }, + "audio/vnd.everad.plj": { + "source": "iana" + }, + "audio/vnd.hns.audio": { + "source": "iana" + }, + "audio/vnd.lucent.voice": { + "source": "iana", + "extensions": ["lvp"] + }, + "audio/vnd.ms-playready.media.pya": { + "source": "iana", + "extensions": ["pya"] + }, + "audio/vnd.nokia.mobile-xmf": { + "source": "iana" + }, + "audio/vnd.nortel.vbk": { + "source": "iana" + }, + "audio/vnd.nuera.ecelp4800": { + "source": "iana", + "extensions": ["ecelp4800"] + }, + "audio/vnd.nuera.ecelp7470": { + "source": "iana", + "extensions": ["ecelp7470"] + }, + "audio/vnd.nuera.ecelp9600": { + "source": "iana", + "extensions": ["ecelp9600"] + }, + "audio/vnd.octel.sbc": { + "source": "iana" + }, + "audio/vnd.presonus.multitrack": { + "source": "iana" + }, + "audio/vnd.qcelp": { + "source": "iana" + }, + "audio/vnd.rhetorex.32kadpcm": { + "source": "iana" + }, + "audio/vnd.rip": { + "source": "iana", + "extensions": ["rip"] + }, + "audio/vnd.rn-realaudio": { + "compressible": false + }, + "audio/vnd.sealedmedia.softseal.mpeg": { + "source": "iana" + }, + "audio/vnd.vmx.cvsd": { + "source": "iana" + }, + "audio/vnd.wave": { + "compressible": false + }, + "audio/vorbis": { + "source": "iana", + "compressible": false + }, + "audio/vorbis-config": { + "source": "iana" + }, + "audio/wav": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/wave": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/webm": { + "source": "apache", + "compressible": false, + "extensions": ["weba"] + }, + "audio/x-aac": { + "source": "apache", + "compressible": false, + "extensions": ["aac"] + }, + "audio/x-aiff": { + "source": "apache", + "extensions": ["aif","aiff","aifc"] + }, + "audio/x-caf": { + "source": "apache", + "compressible": false, + "extensions": ["caf"] + }, + "audio/x-flac": { + "source": "apache", + "extensions": ["flac"] + }, + "audio/x-m4a": { + "source": "nginx", + "extensions": ["m4a"] + }, + "audio/x-matroska": { + "source": "apache", + "extensions": ["mka"] + }, + "audio/x-mpegurl": { + "source": "apache", + "extensions": ["m3u"] + }, + "audio/x-ms-wax": { + "source": "apache", + "extensions": ["wax"] + }, + "audio/x-ms-wma": { + "source": "apache", + "extensions": ["wma"] + }, + "audio/x-pn-realaudio": { + "source": "apache", + "extensions": ["ram","ra"] + }, + "audio/x-pn-realaudio-plugin": { + "source": "apache", + "extensions": ["rmp"] + }, + "audio/x-realaudio": { + "source": "nginx", + "extensions": ["ra"] + }, + "audio/x-tta": { + "source": "apache" + }, + "audio/x-wav": { + "source": "apache", + "extensions": ["wav"] + }, + "audio/xm": { + "source": "apache", + "extensions": ["xm"] + }, + "chemical/x-cdx": { + "source": "apache", + "extensions": ["cdx"] + }, + "chemical/x-cif": { + "source": "apache", + "extensions": ["cif"] + }, + "chemical/x-cmdf": { + "source": "apache", + "extensions": ["cmdf"] + }, + "chemical/x-cml": { + "source": "apache", + "extensions": ["cml"] + }, + "chemical/x-csml": { + "source": "apache", + "extensions": ["csml"] + }, + "chemical/x-pdb": { + "source": "apache" + }, + "chemical/x-xyz": { + "source": "apache", + "extensions": ["xyz"] + }, + "font/collection": { + "source": "iana", + "extensions": ["ttc"] + }, + "font/otf": { + "source": "iana", + "compressible": true, + "extensions": ["otf"] + }, + "font/sfnt": { + "source": "iana" + }, + "font/ttf": { + "source": "iana", + "compressible": true, + "extensions": ["ttf"] + }, + "font/woff": { + "source": "iana", + "extensions": ["woff"] + }, + "font/woff2": { + "source": "iana", + "extensions": ["woff2"] + }, + "image/aces": { + "source": "iana", + "extensions": ["exr"] + }, + "image/apng": { + "compressible": false, + "extensions": ["apng"] + }, + "image/avci": { + "source": "iana", + "extensions": ["avci"] + }, + "image/avcs": { + "source": "iana", + "extensions": ["avcs"] + }, + "image/avif": { + "source": "iana", + "compressible": false, + "extensions": ["avif"] + }, + "image/bmp": { + "source": "iana", + "compressible": true, + "extensions": ["bmp"] + }, + "image/cgm": { + "source": "iana", + "extensions": ["cgm"] + }, + "image/dicom-rle": { + "source": "iana", + "extensions": ["drle"] + }, + "image/emf": { + "source": "iana", + "extensions": ["emf"] + }, + "image/fits": { + "source": "iana", + "extensions": ["fits"] + }, + "image/g3fax": { + "source": "iana", + "extensions": ["g3"] + }, + "image/gif": { + "source": "iana", + "compressible": false, + "extensions": ["gif"] + }, + "image/heic": { + "source": "iana", + "extensions": ["heic"] + }, + "image/heic-sequence": { + "source": "iana", + "extensions": ["heics"] + }, + "image/heif": { + "source": "iana", + "extensions": ["heif"] + }, + "image/heif-sequence": { + "source": "iana", + "extensions": ["heifs"] + }, + "image/hej2k": { + "source": "iana", + "extensions": ["hej2"] + }, + "image/hsj2": { + "source": "iana", + "extensions": ["hsj2"] + }, + "image/ief": { + "source": "iana", + "extensions": ["ief"] + }, + "image/jls": { + "source": "iana", + "extensions": ["jls"] + }, + "image/jp2": { + "source": "iana", + "compressible": false, + "extensions": ["jp2","jpg2"] + }, + "image/jpeg": { + "source": "iana", + "compressible": false, + "extensions": ["jpeg","jpg","jpe"] + }, + "image/jph": { + "source": "iana", + "extensions": ["jph"] + }, + "image/jphc": { + "source": "iana", + "extensions": ["jhc"] + }, + "image/jpm": { + "source": "iana", + "compressible": false, + "extensions": ["jpm"] + }, + "image/jpx": { + "source": "iana", + "compressible": false, + "extensions": ["jpx","jpf"] + }, + "image/jxr": { + "source": "iana", + "extensions": ["jxr"] + }, + "image/jxra": { + "source": "iana", + "extensions": ["jxra"] + }, + "image/jxrs": { + "source": "iana", + "extensions": ["jxrs"] + }, + "image/jxs": { + "source": "iana", + "extensions": ["jxs"] + }, + "image/jxsc": { + "source": "iana", + "extensions": ["jxsc"] + }, + "image/jxsi": { + "source": "iana", + "extensions": ["jxsi"] + }, + "image/jxss": { + "source": "iana", + "extensions": ["jxss"] + }, + "image/ktx": { + "source": "iana", + "extensions": ["ktx"] + }, + "image/ktx2": { + "source": "iana", + "extensions": ["ktx2"] + }, + "image/naplps": { + "source": "iana" + }, + "image/pjpeg": { + "compressible": false + }, + "image/png": { + "source": "iana", + "compressible": false, + "extensions": ["png"] + }, + "image/prs.btif": { + "source": "iana", + "extensions": ["btif"] + }, + "image/prs.pti": { + "source": "iana", + "extensions": ["pti"] + }, + "image/pwg-raster": { + "source": "iana" + }, + "image/sgi": { + "source": "apache", + "extensions": ["sgi"] + }, + "image/svg+xml": { + "source": "iana", + "compressible": true, + "extensions": ["svg","svgz"] + }, + "image/t38": { + "source": "iana", + "extensions": ["t38"] + }, + "image/tiff": { + "source": "iana", + "compressible": false, + "extensions": ["tif","tiff"] + }, + "image/tiff-fx": { + "source": "iana", + "extensions": ["tfx"] + }, + "image/vnd.adobe.photoshop": { + "source": "iana", + "compressible": true, + "extensions": ["psd"] + }, + "image/vnd.airzip.accelerator.azv": { + "source": "iana", + "extensions": ["azv"] + }, + "image/vnd.cns.inf2": { + "source": "iana" + }, + "image/vnd.dece.graphic": { + "source": "iana", + "extensions": ["uvi","uvvi","uvg","uvvg"] + }, + "image/vnd.djvu": { + "source": "iana", + "extensions": ["djvu","djv"] + }, + "image/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "image/vnd.dwg": { + "source": "iana", + "extensions": ["dwg"] + }, + "image/vnd.dxf": { + "source": "iana", + "extensions": ["dxf"] + }, + "image/vnd.fastbidsheet": { + "source": "iana", + "extensions": ["fbs"] + }, + "image/vnd.fpx": { + "source": "iana", + "extensions": ["fpx"] + }, + "image/vnd.fst": { + "source": "iana", + "extensions": ["fst"] + }, + "image/vnd.fujixerox.edmics-mmr": { + "source": "iana", + "extensions": ["mmr"] + }, + "image/vnd.fujixerox.edmics-rlc": { + "source": "iana", + "extensions": ["rlc"] + }, + "image/vnd.globalgraphics.pgb": { + "source": "iana" + }, + "image/vnd.microsoft.icon": { + "source": "iana", + "compressible": true, + "extensions": ["ico"] + }, + "image/vnd.mix": { + "source": "iana" + }, + "image/vnd.mozilla.apng": { + "source": "iana" + }, + "image/vnd.ms-dds": { + "compressible": true, + "extensions": ["dds"] + }, + "image/vnd.ms-modi": { + "source": "iana", + "extensions": ["mdi"] + }, + "image/vnd.ms-photo": { + "source": "apache", + "extensions": ["wdp"] + }, + "image/vnd.net-fpx": { + "source": "iana", + "extensions": ["npx"] + }, + "image/vnd.pco.b16": { + "source": "iana", + "extensions": ["b16"] + }, + "image/vnd.radiance": { + "source": "iana" + }, + "image/vnd.sealed.png": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.gif": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.jpg": { + "source": "iana" + }, + "image/vnd.svf": { + "source": "iana" + }, + "image/vnd.tencent.tap": { + "source": "iana", + "extensions": ["tap"] + }, + "image/vnd.valve.source.texture": { + "source": "iana", + "extensions": ["vtf"] + }, + "image/vnd.wap.wbmp": { + "source": "iana", + "extensions": ["wbmp"] + }, + "image/vnd.xiff": { + "source": "iana", + "extensions": ["xif"] + }, + "image/vnd.zbrush.pcx": { + "source": "iana", + "extensions": ["pcx"] + }, + "image/webp": { + "source": "apache", + "extensions": ["webp"] + }, + "image/wmf": { + "source": "iana", + "extensions": ["wmf"] + }, + "image/x-3ds": { + "source": "apache", + "extensions": ["3ds"] + }, + "image/x-cmu-raster": { + "source": "apache", + "extensions": ["ras"] + }, + "image/x-cmx": { + "source": "apache", + "extensions": ["cmx"] + }, + "image/x-freehand": { + "source": "apache", + "extensions": ["fh","fhc","fh4","fh5","fh7"] + }, + "image/x-icon": { + "source": "apache", + "compressible": true, + "extensions": ["ico"] + }, + "image/x-jng": { + "source": "nginx", + "extensions": ["jng"] + }, + "image/x-mrsid-image": { + "source": "apache", + "extensions": ["sid"] + }, + "image/x-ms-bmp": { + "source": "nginx", + "compressible": true, + "extensions": ["bmp"] + }, + "image/x-pcx": { + "source": "apache", + "extensions": ["pcx"] + }, + "image/x-pict": { + "source": "apache", + "extensions": ["pic","pct"] + }, + "image/x-portable-anymap": { + "source": "apache", + "extensions": ["pnm"] + }, + "image/x-portable-bitmap": { + "source": "apache", + "extensions": ["pbm"] + }, + "image/x-portable-graymap": { + "source": "apache", + "extensions": ["pgm"] + }, + "image/x-portable-pixmap": { + "source": "apache", + "extensions": ["ppm"] + }, + "image/x-rgb": { + "source": "apache", + "extensions": ["rgb"] + }, + "image/x-tga": { + "source": "apache", + "extensions": ["tga"] + }, + "image/x-xbitmap": { + "source": "apache", + "extensions": ["xbm"] + }, + "image/x-xcf": { + "compressible": false + }, + "image/x-xpixmap": { + "source": "apache", + "extensions": ["xpm"] + }, + "image/x-xwindowdump": { + "source": "apache", + "extensions": ["xwd"] + }, + "message/cpim": { + "source": "iana" + }, + "message/delivery-status": { + "source": "iana" + }, + "message/disposition-notification": { + "source": "iana", + "extensions": [ + "disposition-notification" + ] + }, + "message/external-body": { + "source": "iana" + }, + "message/feedback-report": { + "source": "iana" + }, + "message/global": { + "source": "iana", + "extensions": ["u8msg"] + }, + "message/global-delivery-status": { + "source": "iana", + "extensions": ["u8dsn"] + }, + "message/global-disposition-notification": { + "source": "iana", + "extensions": ["u8mdn"] + }, + "message/global-headers": { + "source": "iana", + "extensions": ["u8hdr"] + }, + "message/http": { + "source": "iana", + "compressible": false + }, + "message/imdn+xml": { + "source": "iana", + "compressible": true + }, + "message/news": { + "source": "iana" + }, + "message/partial": { + "source": "iana", + "compressible": false + }, + "message/rfc822": { + "source": "iana", + "compressible": true, + "extensions": ["eml","mime"] + }, + "message/s-http": { + "source": "iana" + }, + "message/sip": { + "source": "iana" + }, + "message/sipfrag": { + "source": "iana" + }, + "message/tracking-status": { + "source": "iana" + }, + "message/vnd.si.simp": { + "source": "iana" + }, + "message/vnd.wfa.wsc": { + "source": "iana", + "extensions": ["wsc"] + }, + "model/3mf": { + "source": "iana", + "extensions": ["3mf"] + }, + "model/e57": { + "source": "iana" + }, + "model/gltf+json": { + "source": "iana", + "compressible": true, + "extensions": ["gltf"] + }, + "model/gltf-binary": { + "source": "iana", + "compressible": true, + "extensions": ["glb"] + }, + "model/iges": { + "source": "iana", + "compressible": false, + "extensions": ["igs","iges"] + }, + "model/mesh": { + "source": "iana", + "compressible": false, + "extensions": ["msh","mesh","silo"] + }, + "model/mtl": { + "source": "iana", + "extensions": ["mtl"] + }, + "model/obj": { + "source": "iana", + "extensions": ["obj"] + }, + "model/step": { + "source": "iana" + }, + "model/step+xml": { + "source": "iana", + "compressible": true, + "extensions": ["stpx"] + }, + "model/step+zip": { + "source": "iana", + "compressible": false, + "extensions": ["stpz"] + }, + "model/step-xml+zip": { + "source": "iana", + "compressible": false, + "extensions": ["stpxz"] + }, + "model/stl": { + "source": "iana", + "extensions": ["stl"] + }, + "model/vnd.collada+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dae"] + }, + "model/vnd.dwf": { + "source": "iana", + "extensions": ["dwf"] + }, + "model/vnd.flatland.3dml": { + "source": "iana" + }, + "model/vnd.gdl": { + "source": "iana", + "extensions": ["gdl"] + }, + "model/vnd.gs-gdl": { + "source": "apache" + }, + "model/vnd.gs.gdl": { + "source": "iana" + }, + "model/vnd.gtw": { + "source": "iana", + "extensions": ["gtw"] + }, + "model/vnd.moml+xml": { + "source": "iana", + "compressible": true + }, + "model/vnd.mts": { + "source": "iana", + "extensions": ["mts"] + }, + "model/vnd.opengex": { + "source": "iana", + "extensions": ["ogex"] + }, + "model/vnd.parasolid.transmit.binary": { + "source": "iana", + "extensions": ["x_b"] + }, + "model/vnd.parasolid.transmit.text": { + "source": "iana", + "extensions": ["x_t"] + }, + "model/vnd.pytha.pyox": { + "source": "iana" + }, + "model/vnd.rosette.annotated-data-model": { + "source": "iana" + }, + "model/vnd.sap.vds": { + "source": "iana", + "extensions": ["vds"] + }, + "model/vnd.usdz+zip": { + "source": "iana", + "compressible": false, + "extensions": ["usdz"] + }, + "model/vnd.valve.source.compiled-map": { + "source": "iana", + "extensions": ["bsp"] + }, + "model/vnd.vtu": { + "source": "iana", + "extensions": ["vtu"] + }, + "model/vrml": { + "source": "iana", + "compressible": false, + "extensions": ["wrl","vrml"] + }, + "model/x3d+binary": { + "source": "apache", + "compressible": false, + "extensions": ["x3db","x3dbz"] + }, + "model/x3d+fastinfoset": { + "source": "iana", + "extensions": ["x3db"] + }, + "model/x3d+vrml": { + "source": "apache", + "compressible": false, + "extensions": ["x3dv","x3dvz"] + }, + "model/x3d+xml": { + "source": "iana", + "compressible": true, + "extensions": ["x3d","x3dz"] + }, + "model/x3d-vrml": { + "source": "iana", + "extensions": ["x3dv"] + }, + "multipart/alternative": { + "source": "iana", + "compressible": false + }, + "multipart/appledouble": { + "source": "iana" + }, + "multipart/byteranges": { + "source": "iana" + }, + "multipart/digest": { + "source": "iana" + }, + "multipart/encrypted": { + "source": "iana", + "compressible": false + }, + "multipart/form-data": { + "source": "iana", + "compressible": false + }, + "multipart/header-set": { + "source": "iana" + }, + "multipart/mixed": { + "source": "iana" + }, + "multipart/multilingual": { + "source": "iana" + }, + "multipart/parallel": { + "source": "iana" + }, + "multipart/related": { + "source": "iana", + "compressible": false + }, + "multipart/report": { + "source": "iana" + }, + "multipart/signed": { + "source": "iana", + "compressible": false + }, + "multipart/vnd.bint.med-plus": { + "source": "iana" + }, + "multipart/voice-message": { + "source": "iana" + }, + "multipart/x-mixed-replace": { + "source": "iana" + }, + "text/1d-interleaved-parityfec": { + "source": "iana" + }, + "text/cache-manifest": { + "source": "iana", + "compressible": true, + "extensions": ["appcache","manifest"] + }, + "text/calendar": { + "source": "iana", + "extensions": ["ics","ifb"] + }, + "text/calender": { + "compressible": true + }, + "text/cmd": { + "compressible": true + }, + "text/coffeescript": { + "extensions": ["coffee","litcoffee"] + }, + "text/cql": { + "source": "iana" + }, + "text/cql-expression": { + "source": "iana" + }, + "text/cql-identifier": { + "source": "iana" + }, + "text/css": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["css"] + }, + "text/csv": { + "source": "iana", + "compressible": true, + "extensions": ["csv"] + }, + "text/csv-schema": { + "source": "iana" + }, + "text/directory": { + "source": "iana" + }, + "text/dns": { + "source": "iana" + }, + "text/ecmascript": { + "source": "iana" + }, + "text/encaprtp": { + "source": "iana" + }, + "text/enriched": { + "source": "iana" + }, + "text/fhirpath": { + "source": "iana" + }, + "text/flexfec": { + "source": "iana" + }, + "text/fwdred": { + "source": "iana" + }, + "text/gff3": { + "source": "iana" + }, + "text/grammar-ref-list": { + "source": "iana" + }, + "text/html": { + "source": "iana", + "compressible": true, + "extensions": ["html","htm","shtml"] + }, + "text/jade": { + "extensions": ["jade"] + }, + "text/javascript": { + "source": "iana", + "compressible": true + }, + "text/jcr-cnd": { + "source": "iana" + }, + "text/jsx": { + "compressible": true, + "extensions": ["jsx"] + }, + "text/less": { + "compressible": true, + "extensions": ["less"] + }, + "text/markdown": { + "source": "iana", + "compressible": true, + "extensions": ["markdown","md"] + }, + "text/mathml": { + "source": "nginx", + "extensions": ["mml"] + }, + "text/mdx": { + "compressible": true, + "extensions": ["mdx"] + }, + "text/mizar": { + "source": "iana" + }, + "text/n3": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["n3"] + }, + "text/parameters": { + "source": "iana", + "charset": "UTF-8" + }, + "text/parityfec": { + "source": "iana" + }, + "text/plain": { + "source": "iana", + "compressible": true, + "extensions": ["txt","text","conf","def","list","log","in","ini"] + }, + "text/provenance-notation": { + "source": "iana", + "charset": "UTF-8" + }, + "text/prs.fallenstein.rst": { + "source": "iana" + }, + "text/prs.lines.tag": { + "source": "iana", + "extensions": ["dsc"] + }, + "text/prs.prop.logic": { + "source": "iana" + }, + "text/raptorfec": { + "source": "iana" + }, + "text/red": { + "source": "iana" + }, + "text/rfc822-headers": { + "source": "iana" + }, + "text/richtext": { + "source": "iana", + "compressible": true, + "extensions": ["rtx"] + }, + "text/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "text/rtp-enc-aescm128": { + "source": "iana" + }, + "text/rtploopback": { + "source": "iana" + }, + "text/rtx": { + "source": "iana" + }, + "text/sgml": { + "source": "iana", + "extensions": ["sgml","sgm"] + }, + "text/shaclc": { + "source": "iana" + }, + "text/shex": { + "source": "iana", + "extensions": ["shex"] + }, + "text/slim": { + "extensions": ["slim","slm"] + }, + "text/spdx": { + "source": "iana", + "extensions": ["spdx"] + }, + "text/strings": { + "source": "iana" + }, + "text/stylus": { + "extensions": ["stylus","styl"] + }, + "text/t140": { + "source": "iana" + }, + "text/tab-separated-values": { + "source": "iana", + "compressible": true, + "extensions": ["tsv"] + }, + "text/troff": { + "source": "iana", + "extensions": ["t","tr","roff","man","me","ms"] + }, + "text/turtle": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["ttl"] + }, + "text/ulpfec": { + "source": "iana" + }, + "text/uri-list": { + "source": "iana", + "compressible": true, + "extensions": ["uri","uris","urls"] + }, + "text/vcard": { + "source": "iana", + "compressible": true, + "extensions": ["vcard"] + }, + "text/vnd.a": { + "source": "iana" + }, + "text/vnd.abc": { + "source": "iana" + }, + "text/vnd.ascii-art": { + "source": "iana" + }, + "text/vnd.curl": { + "source": "iana", + "extensions": ["curl"] + }, + "text/vnd.curl.dcurl": { + "source": "apache", + "extensions": ["dcurl"] + }, + "text/vnd.curl.mcurl": { + "source": "apache", + "extensions": ["mcurl"] + }, + "text/vnd.curl.scurl": { + "source": "apache", + "extensions": ["scurl"] + }, + "text/vnd.debian.copyright": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.dmclientscript": { + "source": "iana" + }, + "text/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "text/vnd.esmertec.theme-descriptor": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.familysearch.gedcom": { + "source": "iana", + "extensions": ["ged"] + }, + "text/vnd.ficlab.flt": { + "source": "iana" + }, + "text/vnd.fly": { + "source": "iana", + "extensions": ["fly"] + }, + "text/vnd.fmi.flexstor": { + "source": "iana", + "extensions": ["flx"] + }, + "text/vnd.gml": { + "source": "iana" + }, + "text/vnd.graphviz": { + "source": "iana", + "extensions": ["gv"] + }, + "text/vnd.hans": { + "source": "iana" + }, + "text/vnd.hgl": { + "source": "iana" + }, + "text/vnd.in3d.3dml": { + "source": "iana", + "extensions": ["3dml"] + }, + "text/vnd.in3d.spot": { + "source": "iana", + "extensions": ["spot"] + }, + "text/vnd.iptc.newsml": { + "source": "iana" + }, + "text/vnd.iptc.nitf": { + "source": "iana" + }, + "text/vnd.latex-z": { + "source": "iana" + }, + "text/vnd.motorola.reflex": { + "source": "iana" + }, + "text/vnd.ms-mediapackage": { + "source": "iana" + }, + "text/vnd.net2phone.commcenter.command": { + "source": "iana" + }, + "text/vnd.radisys.msml-basic-layout": { + "source": "iana" + }, + "text/vnd.senx.warpscript": { + "source": "iana" + }, + "text/vnd.si.uricatalogue": { + "source": "iana" + }, + "text/vnd.sosi": { + "source": "iana" + }, + "text/vnd.sun.j2me.app-descriptor": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["jad"] + }, + "text/vnd.trolltech.linguist": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.wap.si": { + "source": "iana" + }, + "text/vnd.wap.sl": { + "source": "iana" + }, + "text/vnd.wap.wml": { + "source": "iana", + "extensions": ["wml"] + }, + "text/vnd.wap.wmlscript": { + "source": "iana", + "extensions": ["wmls"] + }, + "text/vtt": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["vtt"] + }, + "text/x-asm": { + "source": "apache", + "extensions": ["s","asm"] + }, + "text/x-c": { + "source": "apache", + "extensions": ["c","cc","cxx","cpp","h","hh","dic"] + }, + "text/x-component": { + "source": "nginx", + "extensions": ["htc"] + }, + "text/x-fortran": { + "source": "apache", + "extensions": ["f","for","f77","f90"] + }, + "text/x-gwt-rpc": { + "compressible": true + }, + "text/x-handlebars-template": { + "extensions": ["hbs"] + }, + "text/x-java-source": { + "source": "apache", + "extensions": ["java"] + }, + "text/x-jquery-tmpl": { + "compressible": true + }, + "text/x-lua": { + "extensions": ["lua"] + }, + "text/x-markdown": { + "compressible": true, + "extensions": ["mkd"] + }, + "text/x-nfo": { + "source": "apache", + "extensions": ["nfo"] + }, + "text/x-opml": { + "source": "apache", + "extensions": ["opml"] + }, + "text/x-org": { + "compressible": true, + "extensions": ["org"] + }, + "text/x-pascal": { + "source": "apache", + "extensions": ["p","pas"] + }, + "text/x-processing": { + "compressible": true, + "extensions": ["pde"] + }, + "text/x-sass": { + "extensions": ["sass"] + }, + "text/x-scss": { + "extensions": ["scss"] + }, + "text/x-setext": { + "source": "apache", + "extensions": ["etx"] + }, + "text/x-sfv": { + "source": "apache", + "extensions": ["sfv"] + }, + "text/x-suse-ymp": { + "compressible": true, + "extensions": ["ymp"] + }, + "text/x-uuencode": { + "source": "apache", + "extensions": ["uu"] + }, + "text/x-vcalendar": { + "source": "apache", + "extensions": ["vcs"] + }, + "text/x-vcard": { + "source": "apache", + "extensions": ["vcf"] + }, + "text/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml"] + }, + "text/xml-external-parsed-entity": { + "source": "iana" + }, + "text/yaml": { + "compressible": true, + "extensions": ["yaml","yml"] + }, + "video/1d-interleaved-parityfec": { + "source": "iana" + }, + "video/3gpp": { + "source": "iana", + "extensions": ["3gp","3gpp"] + }, + "video/3gpp-tt": { + "source": "iana" + }, + "video/3gpp2": { + "source": "iana", + "extensions": ["3g2"] + }, + "video/av1": { + "source": "iana" + }, + "video/bmpeg": { + "source": "iana" + }, + "video/bt656": { + "source": "iana" + }, + "video/celb": { + "source": "iana" + }, + "video/dv": { + "source": "iana" + }, + "video/encaprtp": { + "source": "iana" + }, + "video/ffv1": { + "source": "iana" + }, + "video/flexfec": { + "source": "iana" + }, + "video/h261": { + "source": "iana", + "extensions": ["h261"] + }, + "video/h263": { + "source": "iana", + "extensions": ["h263"] + }, + "video/h263-1998": { + "source": "iana" + }, + "video/h263-2000": { + "source": "iana" + }, + "video/h264": { + "source": "iana", + "extensions": ["h264"] + }, + "video/h264-rcdo": { + "source": "iana" + }, + "video/h264-svc": { + "source": "iana" + }, + "video/h265": { + "source": "iana" + }, + "video/iso.segment": { + "source": "iana", + "extensions": ["m4s"] + }, + "video/jpeg": { + "source": "iana", + "extensions": ["jpgv"] + }, + "video/jpeg2000": { + "source": "iana" + }, + "video/jpm": { + "source": "apache", + "extensions": ["jpm","jpgm"] + }, + "video/jxsv": { + "source": "iana" + }, + "video/mj2": { + "source": "iana", + "extensions": ["mj2","mjp2"] + }, + "video/mp1s": { + "source": "iana" + }, + "video/mp2p": { + "source": "iana" + }, + "video/mp2t": { + "source": "iana", + "extensions": ["ts"] + }, + "video/mp4": { + "source": "iana", + "compressible": false, + "extensions": ["mp4","mp4v","mpg4"] + }, + "video/mp4v-es": { + "source": "iana" + }, + "video/mpeg": { + "source": "iana", + "compressible": false, + "extensions": ["mpeg","mpg","mpe","m1v","m2v"] + }, + "video/mpeg4-generic": { + "source": "iana" + }, + "video/mpv": { + "source": "iana" + }, + "video/nv": { + "source": "iana" + }, + "video/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["ogv"] + }, + "video/parityfec": { + "source": "iana" + }, + "video/pointer": { + "source": "iana" + }, + "video/quicktime": { + "source": "iana", + "compressible": false, + "extensions": ["qt","mov"] + }, + "video/raptorfec": { + "source": "iana" + }, + "video/raw": { + "source": "iana" + }, + "video/rtp-enc-aescm128": { + "source": "iana" + }, + "video/rtploopback": { + "source": "iana" + }, + "video/rtx": { + "source": "iana" + }, + "video/scip": { + "source": "iana" + }, + "video/smpte291": { + "source": "iana" + }, + "video/smpte292m": { + "source": "iana" + }, + "video/ulpfec": { + "source": "iana" + }, + "video/vc1": { + "source": "iana" + }, + "video/vc2": { + "source": "iana" + }, + "video/vnd.cctv": { + "source": "iana" + }, + "video/vnd.dece.hd": { + "source": "iana", + "extensions": ["uvh","uvvh"] + }, + "video/vnd.dece.mobile": { + "source": "iana", + "extensions": ["uvm","uvvm"] + }, + "video/vnd.dece.mp4": { + "source": "iana" + }, + "video/vnd.dece.pd": { + "source": "iana", + "extensions": ["uvp","uvvp"] + }, + "video/vnd.dece.sd": { + "source": "iana", + "extensions": ["uvs","uvvs"] + }, + "video/vnd.dece.video": { + "source": "iana", + "extensions": ["uvv","uvvv"] + }, + "video/vnd.directv.mpeg": { + "source": "iana" + }, + "video/vnd.directv.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dlna.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dvb.file": { + "source": "iana", + "extensions": ["dvb"] + }, + "video/vnd.fvt": { + "source": "iana", + "extensions": ["fvt"] + }, + "video/vnd.hns.video": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsavc": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsmpeg2": { + "source": "iana" + }, + "video/vnd.motorola.video": { + "source": "iana" + }, + "video/vnd.motorola.videop": { + "source": "iana" + }, + "video/vnd.mpegurl": { + "source": "iana", + "extensions": ["mxu","m4u"] + }, + "video/vnd.ms-playready.media.pyv": { + "source": "iana", + "extensions": ["pyv"] + }, + "video/vnd.nokia.interleaved-multimedia": { + "source": "iana" + }, + "video/vnd.nokia.mp4vr": { + "source": "iana" + }, + "video/vnd.nokia.videovoip": { + "source": "iana" + }, + "video/vnd.objectvideo": { + "source": "iana" + }, + "video/vnd.radgamettools.bink": { + "source": "iana" + }, + "video/vnd.radgamettools.smacker": { + "source": "iana" + }, + "video/vnd.sealed.mpeg1": { + "source": "iana" + }, + "video/vnd.sealed.mpeg4": { + "source": "iana" + }, + "video/vnd.sealed.swf": { + "source": "iana" + }, + "video/vnd.sealedmedia.softseal.mov": { + "source": "iana" + }, + "video/vnd.uvvu.mp4": { + "source": "iana", + "extensions": ["uvu","uvvu"] + }, + "video/vnd.vivo": { + "source": "iana", + "extensions": ["viv"] + }, + "video/vnd.youtube.yt": { + "source": "iana" + }, + "video/vp8": { + "source": "iana" + }, + "video/vp9": { + "source": "iana" + }, + "video/webm": { + "source": "apache", + "compressible": false, + "extensions": ["webm"] + }, + "video/x-f4v": { + "source": "apache", + "extensions": ["f4v"] + }, + "video/x-fli": { + "source": "apache", + "extensions": ["fli"] + }, + "video/x-flv": { + "source": "apache", + "compressible": false, + "extensions": ["flv"] + }, + "video/x-m4v": { + "source": "apache", + "extensions": ["m4v"] + }, + "video/x-matroska": { + "source": "apache", + "compressible": false, + "extensions": ["mkv","mk3d","mks"] + }, + "video/x-mng": { + "source": "apache", + "extensions": ["mng"] + }, + "video/x-ms-asf": { + "source": "apache", + "extensions": ["asf","asx"] + }, + "video/x-ms-vob": { + "source": "apache", + "extensions": ["vob"] + }, + "video/x-ms-wm": { + "source": "apache", + "extensions": ["wm"] + }, + "video/x-ms-wmv": { + "source": "apache", + "compressible": false, + "extensions": ["wmv"] + }, + "video/x-ms-wmx": { + "source": "apache", + "extensions": ["wmx"] + }, + "video/x-ms-wvx": { + "source": "apache", + "extensions": ["wvx"] + }, + "video/x-msvideo": { + "source": "apache", + "extensions": ["avi"] + }, + "video/x-sgi-movie": { + "source": "apache", + "extensions": ["movie"] + }, + "video/x-smv": { + "source": "apache", + "extensions": ["smv"] + }, + "x-conference/x-cooltalk": { + "source": "apache", + "extensions": ["ice"] + }, + "x-shader/x-fragment": { + "compressible": true + }, + "x-shader/x-vertex": { + "compressible": true + } +} diff --git a/node_modules/mime-db/index.js b/node_modules/mime-db/index.js new file mode 100644 index 0000000..ec2be30 --- /dev/null +++ b/node_modules/mime-db/index.js @@ -0,0 +1,12 @@ +/*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + */ + +/** + * Module exports. + */ + +module.exports = require('./db.json') diff --git a/node_modules/mime-db/package.json b/node_modules/mime-db/package.json new file mode 100644 index 0000000..32c14b8 --- /dev/null +++ b/node_modules/mime-db/package.json @@ -0,0 +1,60 @@ +{ + "name": "mime-db", + "description": "Media Type Database", + "version": "1.52.0", + "contributors": [ + "Douglas Christopher Wilson ", + "Jonathan Ong (http://jongleberry.com)", + "Robert Kieffer (http://github.com/broofa)" + ], + "license": "MIT", + "keywords": [ + "mime", + "db", + "type", + "types", + "database", + "charset", + "charsets" + ], + "repository": "jshttp/mime-db", + "devDependencies": { + "bluebird": "3.7.2", + "co": "4.6.0", + "cogent": "1.0.1", + "csv-parse": "4.16.3", + "eslint": "7.32.0", + "eslint-config-standard": "15.0.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.1.1", + "eslint-plugin-standard": "4.1.0", + "gnode": "0.1.2", + "media-typer": "1.1.0", + "mocha": "9.2.1", + "nyc": "15.1.0", + "raw-body": "2.5.0", + "stream-to-array": "2.3.0" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "README.md", + "db.json", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "build": "node scripts/build", + "fetch": "node scripts/fetch-apache && gnode scripts/fetch-iana && node scripts/fetch-nginx", + "lint": "eslint .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "update": "npm run fetch && npm run build", + "version": "node scripts/version-history.js && git add HISTORY.md" + } +} diff --git a/node_modules/mime-types/HISTORY.md b/node_modules/mime-types/HISTORY.md new file mode 100644 index 0000000..c5043b7 --- /dev/null +++ b/node_modules/mime-types/HISTORY.md @@ -0,0 +1,397 @@ +2.1.35 / 2022-03-12 +=================== + + * deps: mime-db@1.52.0 + - Add extensions from IANA for more `image/*` types + - Add extension `.asc` to `application/pgp-keys` + - Add extensions to various XML types + - Add new upstream MIME types + +2.1.34 / 2021-11-08 +=================== + + * deps: mime-db@1.51.0 + - Add new upstream MIME types + +2.1.33 / 2021-10-01 +=================== + + * deps: mime-db@1.50.0 + - Add deprecated iWorks mime types and extensions + - Add new upstream MIME types + +2.1.32 / 2021-07-27 +=================== + + * deps: mime-db@1.49.0 + - Add extension `.trig` to `application/trig` + - Add new upstream MIME types + +2.1.31 / 2021-06-01 +=================== + + * deps: mime-db@1.48.0 + - Add extension `.mvt` to `application/vnd.mapbox-vector-tile` + - Add new upstream MIME types + +2.1.30 / 2021-04-02 +=================== + + * deps: mime-db@1.47.0 + - Add extension `.amr` to `audio/amr` + - Remove ambigious extensions from IANA for `application/*+xml` types + - Update primary extension to `.es` for `application/ecmascript` + +2.1.29 / 2021-02-17 +=================== + + * deps: mime-db@1.46.0 + - Add extension `.amr` to `audio/amr` + - Add extension `.m4s` to `video/iso.segment` + - Add extension `.opus` to `audio/ogg` + - Add new upstream MIME types + +2.1.28 / 2021-01-01 +=================== + + * deps: mime-db@1.45.0 + - Add `application/ubjson` with extension `.ubj` + - Add `image/avif` with extension `.avif` + - Add `image/ktx2` with extension `.ktx2` + - Add extension `.dbf` to `application/vnd.dbf` + - Add extension `.rar` to `application/vnd.rar` + - Add extension `.td` to `application/urc-targetdesc+xml` + - Add new upstream MIME types + - Fix extension of `application/vnd.apple.keynote` to be `.key` + +2.1.27 / 2020-04-23 +=================== + + * deps: mime-db@1.44.0 + - Add charsets from IANA + - Add extension `.cjs` to `application/node` + - Add new upstream MIME types + +2.1.26 / 2020-01-05 +=================== + + * deps: mime-db@1.43.0 + - Add `application/x-keepass2` with extension `.kdbx` + - Add extension `.mxmf` to `audio/mobile-xmf` + - Add extensions from IANA for `application/*+xml` types + - Add new upstream MIME types + +2.1.25 / 2019-11-12 +=================== + + * deps: mime-db@1.42.0 + - Add new upstream MIME types + - Add `application/toml` with extension `.toml` + - Add `image/vnd.ms-dds` with extension `.dds` + +2.1.24 / 2019-04-20 +=================== + + * deps: mime-db@1.40.0 + - Add extensions from IANA for `model/*` types + - Add `text/mdx` with extension `.mdx` + +2.1.23 / 2019-04-17 +=================== + + * deps: mime-db@~1.39.0 + - Add extensions `.siv` and `.sieve` to `application/sieve` + - Add new upstream MIME types + +2.1.22 / 2019-02-14 +=================== + + * deps: mime-db@~1.38.0 + - Add extension `.nq` to `application/n-quads` + - Add extension `.nt` to `application/n-triples` + - Add new upstream MIME types + +2.1.21 / 2018-10-19 +=================== + + * deps: mime-db@~1.37.0 + - Add extensions to HEIC image types + - Add new upstream MIME types + +2.1.20 / 2018-08-26 +=================== + + * deps: mime-db@~1.36.0 + - Add Apple file extensions from IANA + - Add extensions from IANA for `image/*` types + - Add new upstream MIME types + +2.1.19 / 2018-07-17 +=================== + + * deps: mime-db@~1.35.0 + - Add extension `.csl` to `application/vnd.citationstyles.style+xml` + - Add extension `.es` to `application/ecmascript` + - Add extension `.owl` to `application/rdf+xml` + - Add new upstream MIME types + - Add UTF-8 as default charset for `text/turtle` + +2.1.18 / 2018-02-16 +=================== + + * deps: mime-db@~1.33.0 + - Add `application/raml+yaml` with extension `.raml` + - Add `application/wasm` with extension `.wasm` + - Add `text/shex` with extension `.shex` + - Add extensions for JPEG-2000 images + - Add extensions from IANA for `message/*` types + - Add new upstream MIME types + - Update font MIME types + - Update `text/hjson` to registered `application/hjson` + +2.1.17 / 2017-09-01 +=================== + + * deps: mime-db@~1.30.0 + - Add `application/vnd.ms-outlook` + - Add `application/x-arj` + - Add extension `.mjs` to `application/javascript` + - Add glTF types and extensions + - Add new upstream MIME types + - Add `text/x-org` + - Add VirtualBox MIME types + - Fix `source` records for `video/*` types that are IANA + - Update `font/opentype` to registered `font/otf` + +2.1.16 / 2017-07-24 +=================== + + * deps: mime-db@~1.29.0 + - Add `application/fido.trusted-apps+json` + - Add extension `.wadl` to `application/vnd.sun.wadl+xml` + - Add extension `.gz` to `application/gzip` + - Add new upstream MIME types + - Update extensions `.md` and `.markdown` to be `text/markdown` + +2.1.15 / 2017-03-23 +=================== + + * deps: mime-db@~1.27.0 + - Add new mime types + - Add `image/apng` + +2.1.14 / 2017-01-14 +=================== + + * deps: mime-db@~1.26.0 + - Add new mime types + +2.1.13 / 2016-11-18 +=================== + + * deps: mime-db@~1.25.0 + - Add new mime types + +2.1.12 / 2016-09-18 +=================== + + * deps: mime-db@~1.24.0 + - Add new mime types + - Add `audio/mp3` + +2.1.11 / 2016-05-01 +=================== + + * deps: mime-db@~1.23.0 + - Add new mime types + +2.1.10 / 2016-02-15 +=================== + + * deps: mime-db@~1.22.0 + - Add new mime types + - Fix extension of `application/dash+xml` + - Update primary extension for `audio/mp4` + +2.1.9 / 2016-01-06 +================== + + * deps: mime-db@~1.21.0 + - Add new mime types + +2.1.8 / 2015-11-30 +================== + + * deps: mime-db@~1.20.0 + - Add new mime types + +2.1.7 / 2015-09-20 +================== + + * deps: mime-db@~1.19.0 + - Add new mime types + +2.1.6 / 2015-09-03 +================== + + * deps: mime-db@~1.18.0 + - Add new mime types + +2.1.5 / 2015-08-20 +================== + + * deps: mime-db@~1.17.0 + - Add new mime types + +2.1.4 / 2015-07-30 +================== + + * deps: mime-db@~1.16.0 + - Add new mime types + +2.1.3 / 2015-07-13 +================== + + * deps: mime-db@~1.15.0 + - Add new mime types + +2.1.2 / 2015-06-25 +================== + + * deps: mime-db@~1.14.0 + - Add new mime types + +2.1.1 / 2015-06-08 +================== + + * perf: fix deopt during mapping + +2.1.0 / 2015-06-07 +================== + + * Fix incorrectly treating extension-less file name as extension + - i.e. `'path/to/json'` will no longer return `application/json` + * Fix `.charset(type)` to accept parameters + * Fix `.charset(type)` to match case-insensitive + * Improve generation of extension to MIME mapping + * Refactor internals for readability and no argument reassignment + * Prefer `application/*` MIME types from the same source + * Prefer any type over `application/octet-stream` + * deps: mime-db@~1.13.0 + - Add nginx as a source + - Add new mime types + +2.0.14 / 2015-06-06 +=================== + + * deps: mime-db@~1.12.0 + - Add new mime types + +2.0.13 / 2015-05-31 +=================== + + * deps: mime-db@~1.11.0 + - Add new mime types + +2.0.12 / 2015-05-19 +=================== + + * deps: mime-db@~1.10.0 + - Add new mime types + +2.0.11 / 2015-05-05 +=================== + + * deps: mime-db@~1.9.1 + - Add new mime types + +2.0.10 / 2015-03-13 +=================== + + * deps: mime-db@~1.8.0 + - Add new mime types + +2.0.9 / 2015-02-09 +================== + + * deps: mime-db@~1.7.0 + - Add new mime types + - Community extensions ownership transferred from `node-mime` + +2.0.8 / 2015-01-29 +================== + + * deps: mime-db@~1.6.0 + - Add new mime types + +2.0.7 / 2014-12-30 +================== + + * deps: mime-db@~1.5.0 + - Add new mime types + - Fix various invalid MIME type entries + +2.0.6 / 2014-12-30 +================== + + * deps: mime-db@~1.4.0 + - Add new mime types + - Fix various invalid MIME type entries + - Remove example template MIME types + +2.0.5 / 2014-12-29 +================== + + * deps: mime-db@~1.3.1 + - Fix missing extensions + +2.0.4 / 2014-12-10 +================== + + * deps: mime-db@~1.3.0 + - Add new mime types + +2.0.3 / 2014-11-09 +================== + + * deps: mime-db@~1.2.0 + - Add new mime types + +2.0.2 / 2014-09-28 +================== + + * deps: mime-db@~1.1.0 + - Add new mime types + - Update charsets + +2.0.1 / 2014-09-07 +================== + + * Support Node.js 0.6 + +2.0.0 / 2014-09-02 +================== + + * Use `mime-db` + * Remove `.define()` + +1.0.2 / 2014-08-04 +================== + + * Set charset=utf-8 for `text/javascript` + +1.0.1 / 2014-06-24 +================== + + * Add `text/jsx` type + +1.0.0 / 2014-05-12 +================== + + * Return `false` for unknown types + * Set charset=utf-8 for `application/json` + +0.1.0 / 2014-05-02 +================== + + * Initial release diff --git a/node_modules/mime-types/LICENSE b/node_modules/mime-types/LICENSE new file mode 100644 index 0000000..0616607 --- /dev/null +++ b/node_modules/mime-types/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/mime-types/README.md b/node_modules/mime-types/README.md new file mode 100644 index 0000000..48d2fb4 --- /dev/null +++ b/node_modules/mime-types/README.md @@ -0,0 +1,113 @@ +# mime-types + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +The ultimate javascript content-type utility. + +Similar to [the `mime@1.x` module](https://www.npmjs.com/package/mime), except: + +- __No fallbacks.__ Instead of naively returning the first available type, + `mime-types` simply returns `false`, so do + `var type = mime.lookup('unrecognized') || 'application/octet-stream'`. +- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`. +- No `.define()` functionality +- Bug fixes for `.lookup(path)` + +Otherwise, the API is compatible with `mime` 1.x. + +## Install + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install mime-types +``` + +## Adding Types + +All mime types are based on [mime-db](https://www.npmjs.com/package/mime-db), +so open a PR there if you'd like to add mime types. + +## API + +```js +var mime = require('mime-types') +``` + +All functions return `false` if input is invalid or not found. + +### mime.lookup(path) + +Lookup the content-type associated with a file. + +```js +mime.lookup('json') // 'application/json' +mime.lookup('.md') // 'text/markdown' +mime.lookup('file.html') // 'text/html' +mime.lookup('folder/file.js') // 'application/javascript' +mime.lookup('folder/.htaccess') // false + +mime.lookup('cats') // false +``` + +### mime.contentType(type) + +Create a full content-type header given a content-type or extension. +When given an extension, `mime.lookup` is used to get the matching +content-type, otherwise the given content-type is used. Then if the +content-type does not already have a `charset` parameter, `mime.charset` +is used to get the default charset and add to the returned content-type. + +```js +mime.contentType('markdown') // 'text/x-markdown; charset=utf-8' +mime.contentType('file.json') // 'application/json; charset=utf-8' +mime.contentType('text/html') // 'text/html; charset=utf-8' +mime.contentType('text/html; charset=iso-8859-1') // 'text/html; charset=iso-8859-1' + +// from a full path +mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8' +``` + +### mime.extension(type) + +Get the default extension for a content-type. + +```js +mime.extension('application/octet-stream') // 'bin' +``` + +### mime.charset(type) + +Lookup the implied default charset of a content-type. + +```js +mime.charset('text/markdown') // 'UTF-8' +``` + +### var type = mime.types[extension] + +A map of content-types by extension. + +### [extensions...] = mime.extensions[type] + +A map of extensions by content-type. + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/jshttp/mime-types/master?label=ci +[ci-url]: https://github.com/jshttp/mime-types/actions/workflows/ci.yml +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-types/master +[coveralls-url]: https://coveralls.io/r/jshttp/mime-types?branch=master +[node-version-image]: https://badgen.net/npm/node/mime-types +[node-version-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/mime-types +[npm-url]: https://npmjs.org/package/mime-types +[npm-version-image]: https://badgen.net/npm/v/mime-types diff --git a/node_modules/mime-types/index.js b/node_modules/mime-types/index.js new file mode 100644 index 0000000..b9f34d5 --- /dev/null +++ b/node_modules/mime-types/index.js @@ -0,0 +1,188 @@ +/*! + * mime-types + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var db = require('mime-db') +var extname = require('path').extname + +/** + * Module variables. + * @private + */ + +var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ +var TEXT_TYPE_REGEXP = /^text\//i + +/** + * Module exports. + * @public + */ + +exports.charset = charset +exports.charsets = { lookup: charset } +exports.contentType = contentType +exports.extension = extension +exports.extensions = Object.create(null) +exports.lookup = lookup +exports.types = Object.create(null) + +// Populate the extensions/types maps +populateMaps(exports.extensions, exports.types) + +/** + * Get the default charset for a MIME type. + * + * @param {string} type + * @return {boolean|string} + */ + +function charset (type) { + if (!type || typeof type !== 'string') { + return false + } + + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + var mime = match && db[match[1].toLowerCase()] + + if (mime && mime.charset) { + return mime.charset + } + + // default text/* to utf-8 + if (match && TEXT_TYPE_REGEXP.test(match[1])) { + return 'UTF-8' + } + + return false +} + +/** + * Create a full Content-Type header given a MIME type or extension. + * + * @param {string} str + * @return {boolean|string} + */ + +function contentType (str) { + // TODO: should this even be in this module? + if (!str || typeof str !== 'string') { + return false + } + + var mime = str.indexOf('/') === -1 + ? exports.lookup(str) + : str + + if (!mime) { + return false + } + + // TODO: use content-type or other module + if (mime.indexOf('charset') === -1) { + var charset = exports.charset(mime) + if (charset) mime += '; charset=' + charset.toLowerCase() + } + + return mime +} + +/** + * Get the default extension for a MIME type. + * + * @param {string} type + * @return {boolean|string} + */ + +function extension (type) { + if (!type || typeof type !== 'string') { + return false + } + + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + + // get extensions + var exts = match && exports.extensions[match[1].toLowerCase()] + + if (!exts || !exts.length) { + return false + } + + return exts[0] +} + +/** + * Lookup the MIME type for a file path/extension. + * + * @param {string} path + * @return {boolean|string} + */ + +function lookup (path) { + if (!path || typeof path !== 'string') { + return false + } + + // get the extension ("ext" or ".ext" or full path) + var extension = extname('x.' + path) + .toLowerCase() + .substr(1) + + if (!extension) { + return false + } + + return exports.types[extension] || false +} + +/** + * Populate the extensions and types maps. + * @private + */ + +function populateMaps (extensions, types) { + // source preference (least -> most) + var preference = ['nginx', 'apache', undefined, 'iana'] + + Object.keys(db).forEach(function forEachMimeType (type) { + var mime = db[type] + var exts = mime.extensions + + if (!exts || !exts.length) { + return + } + + // mime -> extensions + extensions[type] = exts + + // extension -> mime + for (var i = 0; i < exts.length; i++) { + var extension = exts[i] + + if (types[extension]) { + var from = preference.indexOf(db[types[extension]].source) + var to = preference.indexOf(mime.source) + + if (types[extension] !== 'application/octet-stream' && + (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) { + // skip the remapping + continue + } + } + + // set the extension -> mime + types[extension] = type + } + }) +} diff --git a/node_modules/mime-types/package.json b/node_modules/mime-types/package.json new file mode 100644 index 0000000..bbef696 --- /dev/null +++ b/node_modules/mime-types/package.json @@ -0,0 +1,44 @@ +{ + "name": "mime-types", + "description": "The ultimate javascript content-type utility.", + "version": "2.1.35", + "contributors": [ + "Douglas Christopher Wilson ", + "Jeremiah Senkpiel (https://searchbeam.jit.su)", + "Jonathan Ong (http://jongleberry.com)" + ], + "license": "MIT", + "keywords": [ + "mime", + "types" + ], + "repository": "jshttp/mime-types", + "dependencies": { + "mime-db": "1.52.0" + }, + "devDependencies": { + "eslint": "7.32.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.2.0", + "eslint-plugin-standard": "4.1.0", + "mocha": "9.2.2", + "nyc": "15.1.0" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec test/test.js", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/node_modules/proxy-from-env/.eslintrc b/node_modules/proxy-from-env/.eslintrc new file mode 100644 index 0000000..a51449b --- /dev/null +++ b/node_modules/proxy-from-env/.eslintrc @@ -0,0 +1,29 @@ +{ + "env": { + "node": true + }, + "rules": { + "array-bracket-spacing": [2, "never"], + "block-scoped-var": 2, + "brace-style": [2, "1tbs"], + "camelcase": 1, + "computed-property-spacing": [2, "never"], + "curly": 2, + "eol-last": 2, + "eqeqeq": [2, "smart"], + "max-depth": [1, 3], + "max-len": [1, 80], + "max-statements": [1, 15], + "new-cap": 1, + "no-extend-native": 2, + "no-mixed-spaces-and-tabs": 2, + "no-trailing-spaces": 2, + "no-unused-vars": 1, + "no-use-before-define": [2, "nofunc"], + "object-curly-spacing": [2, "never"], + "quotes": [2, "single", "avoid-escape"], + "semi": [2, "always"], + "keyword-spacing": [2, {"before": true, "after": true}], + "space-unary-ops": 2 + } +} diff --git a/node_modules/proxy-from-env/.travis.yml b/node_modules/proxy-from-env/.travis.yml new file mode 100644 index 0000000..64a05f9 --- /dev/null +++ b/node_modules/proxy-from-env/.travis.yml @@ -0,0 +1,10 @@ +language: node_js +node_js: + - node + - lts/* +script: + - npm run lint + # test-coverage will also run the tests, but does not print helpful output upon test failure. + # So we also run the tests separately. + - npm run test + - npm run test-coverage && cat coverage/lcov.info | ./node_modules/.bin/coveralls && rm -rf coverage diff --git a/node_modules/proxy-from-env/LICENSE b/node_modules/proxy-from-env/LICENSE new file mode 100644 index 0000000..8f25097 --- /dev/null +++ b/node_modules/proxy-from-env/LICENSE @@ -0,0 +1,20 @@ +The MIT License + +Copyright (C) 2016-2018 Rob Wu + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/proxy-from-env/README.md b/node_modules/proxy-from-env/README.md new file mode 100644 index 0000000..e82520c --- /dev/null +++ b/node_modules/proxy-from-env/README.md @@ -0,0 +1,131 @@ +# proxy-from-env + +[![Build Status](https://travis-ci.org/Rob--W/proxy-from-env.svg?branch=master)](https://travis-ci.org/Rob--W/proxy-from-env) +[![Coverage Status](https://coveralls.io/repos/github/Rob--W/proxy-from-env/badge.svg?branch=master)](https://coveralls.io/github/Rob--W/proxy-from-env?branch=master) + +`proxy-from-env` is a Node.js package that exports a function (`getProxyForUrl`) +that takes an input URL (a string or +[`url.parse`](https://nodejs.org/docs/latest/api/url.html#url_url_parsing)'s +return value) and returns the desired proxy URL (also a string) based on +standard proxy environment variables. If no proxy is set, an empty string is +returned. + +It is your responsibility to actually proxy the request using the given URL. + +Installation: + +```sh +npm install proxy-from-env +``` + +## Example +This example shows how the data for a URL can be fetched via the +[`http` module](https://nodejs.org/api/http.html), in a proxy-aware way. + +```javascript +var http = require('http'); +var parseUrl = require('url').parse; +var getProxyForUrl = require('proxy-from-env').getProxyForUrl; + +var some_url = 'http://example.com/something'; + +// // Example, if there is a proxy server at 10.0.0.1:1234, then setting the +// // http_proxy environment variable causes the request to go through a proxy. +// process.env.http_proxy = 'http://10.0.0.1:1234'; +// +// // But if the host to be proxied is listed in NO_PROXY, then the request is +// // not proxied (but a direct request is made). +// process.env.no_proxy = 'example.com'; + +var proxy_url = getProxyForUrl(some_url); // <-- Our magic. +if (proxy_url) { + // Should be proxied through proxy_url. + var parsed_some_url = parseUrl(some_url); + var parsed_proxy_url = parseUrl(proxy_url); + // A HTTP proxy is quite simple. It is similar to a normal request, except the + // path is an absolute URL, and the proxied URL's host is put in the header + // instead of the server's actual host. + httpOptions = { + protocol: parsed_proxy_url.protocol, + hostname: parsed_proxy_url.hostname, + port: parsed_proxy_url.port, + path: parsed_some_url.href, + headers: { + Host: parsed_some_url.host, // = host name + optional port. + }, + }; +} else { + // Direct request. + httpOptions = some_url; +} +http.get(httpOptions, function(res) { + var responses = []; + res.on('data', function(chunk) { responses.push(chunk); }); + res.on('end', function() { console.log(responses.join('')); }); +}); + +``` + +## Environment variables +The environment variables can be specified in lowercase or uppercase, with the +lowercase name having precedence over the uppercase variant. A variable that is +not set has the same meaning as a variable that is set but has no value. + +### NO\_PROXY + +`NO_PROXY` is a list of host names (optionally with a port). If the input URL +matches any of the entries in `NO_PROXY`, then the input URL should be fetched +by a direct request (i.e. without a proxy). + +Matching follows the following rules: + +- `NO_PROXY=*` disables all proxies. +- Space and commas may be used to separate the entries in the `NO_PROXY` list. +- If `NO_PROXY` does not contain any entries, then proxies are never disabled. +- If a port is added after the host name, then the ports must match. If the URL + does not have an explicit port name, the protocol's default port is used. +- Generally, the proxy is only disabled if the host name is an exact match for + an entry in the `NO_PROXY` list. The only exceptions are entries that start + with a dot or with a wildcard; then the proxy is disabled if the host name + ends with the entry. + +See `test.js` for examples of what should match and what does not. + +### \*\_PROXY + +The environment variable used for the proxy depends on the protocol of the URL. +For example, `https://example.com` uses the "https" protocol, and therefore the +proxy to be used is `HTTPS_PROXY` (_NOT_ `HTTP_PROXY`, which is _only_ used for +http:-URLs). + +The library is not limited to http(s), other schemes such as +`FTP_PROXY` (ftp:), +`WSS_PROXY` (wss:), +`WS_PROXY` (ws:) +are also supported. + +If present, `ALL_PROXY` is used as fallback if there is no other match. + + +## External resources +The exact way of parsing the environment variables is not codified in any +standard. This library is designed to be compatible with formats as expected by +existing software. +The following resources were used to determine the desired behavior: + +- cURL: + https://curl.haxx.se/docs/manpage.html#ENVIRONMENT + https://github.com/curl/curl/blob/4af40b3646d3b09f68e419f7ca866ff395d1f897/lib/url.c#L4446-L4514 + https://github.com/curl/curl/blob/4af40b3646d3b09f68e419f7ca866ff395d1f897/lib/url.c#L4608-L4638 + +- wget: + https://www.gnu.org/software/wget/manual/wget.html#Proxies + http://git.savannah.gnu.org/cgit/wget.git/tree/src/init.c?id=636a5f9a1c508aa39e35a3a8e9e54520a284d93d#n383 + http://git.savannah.gnu.org/cgit/wget.git/tree/src/retr.c?id=93c1517c4071c4288ba5a4b038e7634e4c6b5482#n1278 + +- W3: + https://www.w3.org/Daemon/User/Proxies/ProxyClients.html + +- Python's urllib: + https://github.com/python/cpython/blob/936135bb97fe04223aa30ca6e98eac8f3ed6b349/Lib/urllib/request.py#L755-L782 + https://github.com/python/cpython/blob/936135bb97fe04223aa30ca6e98eac8f3ed6b349/Lib/urllib/request.py#L2444-L2479 diff --git a/node_modules/proxy-from-env/index.js b/node_modules/proxy-from-env/index.js new file mode 100644 index 0000000..df75004 --- /dev/null +++ b/node_modules/proxy-from-env/index.js @@ -0,0 +1,108 @@ +'use strict'; + +var parseUrl = require('url').parse; + +var DEFAULT_PORTS = { + ftp: 21, + gopher: 70, + http: 80, + https: 443, + ws: 80, + wss: 443, +}; + +var stringEndsWith = String.prototype.endsWith || function(s) { + return s.length <= this.length && + this.indexOf(s, this.length - s.length) !== -1; +}; + +/** + * @param {string|object} url - The URL, or the result from url.parse. + * @return {string} The URL of the proxy that should handle the request to the + * given URL. If no proxy is set, this will be an empty string. + */ +function getProxyForUrl(url) { + var parsedUrl = typeof url === 'string' ? parseUrl(url) : url || {}; + var proto = parsedUrl.protocol; + var hostname = parsedUrl.host; + var port = parsedUrl.port; + if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') { + return ''; // Don't proxy URLs without a valid scheme or host. + } + + proto = proto.split(':', 1)[0]; + // Stripping ports in this way instead of using parsedUrl.hostname to make + // sure that the brackets around IPv6 addresses are kept. + hostname = hostname.replace(/:\d*$/, ''); + port = parseInt(port) || DEFAULT_PORTS[proto] || 0; + if (!shouldProxy(hostname, port)) { + return ''; // Don't proxy URLs that match NO_PROXY. + } + + var proxy = + getEnv('npm_config_' + proto + '_proxy') || + getEnv(proto + '_proxy') || + getEnv('npm_config_proxy') || + getEnv('all_proxy'); + if (proxy && proxy.indexOf('://') === -1) { + // Missing scheme in proxy, default to the requested URL's scheme. + proxy = proto + '://' + proxy; + } + return proxy; +} + +/** + * Determines whether a given URL should be proxied. + * + * @param {string} hostname - The host name of the URL. + * @param {number} port - The effective port of the URL. + * @returns {boolean} Whether the given URL should be proxied. + * @private + */ +function shouldProxy(hostname, port) { + var NO_PROXY = + (getEnv('npm_config_no_proxy') || getEnv('no_proxy')).toLowerCase(); + if (!NO_PROXY) { + return true; // Always proxy if NO_PROXY is not set. + } + if (NO_PROXY === '*') { + return false; // Never proxy if wildcard is set. + } + + return NO_PROXY.split(/[,\s]/).every(function(proxy) { + if (!proxy) { + return true; // Skip zero-length hosts. + } + var parsedProxy = proxy.match(/^(.+):(\d+)$/); + var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy; + var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0; + if (parsedProxyPort && parsedProxyPort !== port) { + return true; // Skip if ports don't match. + } + + if (!/^[.*]/.test(parsedProxyHostname)) { + // No wildcards, so stop proxying if there is an exact match. + return hostname !== parsedProxyHostname; + } + + if (parsedProxyHostname.charAt(0) === '*') { + // Remove leading wildcard. + parsedProxyHostname = parsedProxyHostname.slice(1); + } + // Stop proxying if the hostname ends with the no_proxy host. + return !stringEndsWith.call(hostname, parsedProxyHostname); + }); +} + +/** + * Get the value for an environment variable. + * + * @param {string} key - The name of the environment variable. + * @return {string} The value of the environment variable. + * @private + */ +function getEnv(key) { + return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || ''; +} + +exports.getProxyForUrl = getProxyForUrl; diff --git a/node_modules/proxy-from-env/package.json b/node_modules/proxy-from-env/package.json new file mode 100644 index 0000000..be2b845 --- /dev/null +++ b/node_modules/proxy-from-env/package.json @@ -0,0 +1,34 @@ +{ + "name": "proxy-from-env", + "version": "1.1.0", + "description": "Offers getProxyForUrl to get the proxy URL for a URL, respecting the *_PROXY (e.g. HTTP_PROXY) and NO_PROXY environment variables.", + "main": "index.js", + "scripts": { + "lint": "eslint *.js", + "test": "mocha ./test.js --reporter spec", + "test-coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter spec" + }, + "repository": { + "type": "git", + "url": "https://github.com/Rob--W/proxy-from-env.git" + }, + "keywords": [ + "proxy", + "http_proxy", + "https_proxy", + "no_proxy", + "environment" + ], + "author": "Rob Wu (https://robwu.nl/)", + "license": "MIT", + "bugs": { + "url": "https://github.com/Rob--W/proxy-from-env/issues" + }, + "homepage": "https://github.com/Rob--W/proxy-from-env#readme", + "devDependencies": { + "coveralls": "^3.0.9", + "eslint": "^6.8.0", + "istanbul": "^0.4.5", + "mocha": "^7.1.0" + } +} diff --git a/node_modules/proxy-from-env/test.js b/node_modules/proxy-from-env/test.js new file mode 100644 index 0000000..abf6542 --- /dev/null +++ b/node_modules/proxy-from-env/test.js @@ -0,0 +1,483 @@ +/* eslint max-statements:0 */ +'use strict'; + +var assert = require('assert'); +var parseUrl = require('url').parse; + +var getProxyForUrl = require('./').getProxyForUrl; + +// Runs the callback with process.env temporarily set to env. +function runWithEnv(env, callback) { + var originalEnv = process.env; + process.env = env; + try { + callback(); + } finally { + process.env = originalEnv; + } +} + +// Defines a test case that checks whether getProxyForUrl(input) === expected. +function testProxyUrl(env, expected, input) { + assert(typeof env === 'object' && env !== null); + // Copy object to make sure that the in param does not get modified between + // the call of this function and the use of it below. + env = JSON.parse(JSON.stringify(env)); + + var title = 'getProxyForUrl(' + JSON.stringify(input) + ')' + + ' === ' + JSON.stringify(expected); + + // Save call stack for later use. + var stack = {}; + Error.captureStackTrace(stack, testProxyUrl); + // Only use the last stack frame because that shows where this function is + // called, and that is sufficient for our purpose. No need to flood the logs + // with an uninteresting stack trace. + stack = stack.stack.split('\n', 2)[1]; + + it(title, function() { + var actual; + runWithEnv(env, function() { + actual = getProxyForUrl(input); + }); + if (expected === actual) { + return; // Good! + } + try { + assert.strictEqual(expected, actual); // Create a formatted error message. + // Should not happen because previously we determined expected !== actual. + throw new Error('assert.strictEqual passed. This is impossible!'); + } catch (e) { + // Use the original stack trace, so we can see a helpful line number. + e.stack = e.message + stack; + throw e; + } + }); +} + +describe('getProxyForUrl', function() { + describe('No proxy variables', function() { + var env = {}; + testProxyUrl(env, '', 'http://example.com'); + testProxyUrl(env, '', 'https://example.com'); + testProxyUrl(env, '', 'ftp://example.com'); + }); + + describe('Invalid URLs', function() { + var env = {}; + env.ALL_PROXY = 'http://unexpected.proxy'; + testProxyUrl(env, '', 'bogus'); + testProxyUrl(env, '', '//example.com'); + testProxyUrl(env, '', '://example.com'); + testProxyUrl(env, '', '://'); + testProxyUrl(env, '', '/path'); + testProxyUrl(env, '', ''); + testProxyUrl(env, '', 'http:'); + testProxyUrl(env, '', 'http:/'); + testProxyUrl(env, '', 'http://'); + testProxyUrl(env, '', 'prototype://'); + testProxyUrl(env, '', 'hasOwnProperty://'); + testProxyUrl(env, '', '__proto__://'); + testProxyUrl(env, '', undefined); + testProxyUrl(env, '', null); + testProxyUrl(env, '', {}); + testProxyUrl(env, '', {host: 'x', protocol: 1}); + testProxyUrl(env, '', {host: 1, protocol: 'x'}); + }); + + describe('http_proxy and HTTP_PROXY', function() { + var env = {}; + env.HTTP_PROXY = 'http://http-proxy'; + + testProxyUrl(env, '', 'https://example'); + testProxyUrl(env, 'http://http-proxy', 'http://example'); + testProxyUrl(env, 'http://http-proxy', parseUrl('http://example')); + + // eslint-disable-next-line camelcase + env.http_proxy = 'http://priority'; + testProxyUrl(env, 'http://priority', 'http://example'); + }); + + describe('http_proxy with non-sensical value', function() { + var env = {}; + // Crazy values should be passed as-is. It is the responsibility of the + // one who launches the application that the value makes sense. + // TODO: Should we be stricter and perform validation? + env.HTTP_PROXY = 'Crazy \n!() { ::// }'; + testProxyUrl(env, 'Crazy \n!() { ::// }', 'http://wow'); + + // The implementation assumes that the HTTP_PROXY environment variable is + // somewhat reasonable, and if the scheme is missing, it is added. + // Garbage in, garbage out some would say... + env.HTTP_PROXY = 'crazy without colon slash slash'; + testProxyUrl(env, 'http://crazy without colon slash slash', 'http://wow'); + }); + + describe('https_proxy and HTTPS_PROXY', function() { + var env = {}; + // Assert that there is no fall back to http_proxy + env.HTTP_PROXY = 'http://unexpected.proxy'; + testProxyUrl(env, '', 'https://example'); + + env.HTTPS_PROXY = 'http://https-proxy'; + testProxyUrl(env, 'http://https-proxy', 'https://example'); + + // eslint-disable-next-line camelcase + env.https_proxy = 'http://priority'; + testProxyUrl(env, 'http://priority', 'https://example'); + }); + + describe('ftp_proxy', function() { + var env = {}; + // Something else than http_proxy / https, as a sanity check. + env.FTP_PROXY = 'http://ftp-proxy'; + + testProxyUrl(env, 'http://ftp-proxy', 'ftp://example'); + testProxyUrl(env, '', 'ftps://example'); + }); + + describe('all_proxy', function() { + var env = {}; + env.ALL_PROXY = 'http://catch-all'; + testProxyUrl(env, 'http://catch-all', 'https://example'); + + // eslint-disable-next-line camelcase + env.all_proxy = 'http://priority'; + testProxyUrl(env, 'http://priority', 'https://example'); + }); + + describe('all_proxy without scheme', function() { + var env = {}; + env.ALL_PROXY = 'noscheme'; + testProxyUrl(env, 'http://noscheme', 'http://example'); + testProxyUrl(env, 'https://noscheme', 'https://example'); + + // The module does not impose restrictions on the scheme. + testProxyUrl(env, 'bogus-scheme://noscheme', 'bogus-scheme://example'); + + // But the URL should still be valid. + testProxyUrl(env, '', 'bogus'); + }); + + describe('no_proxy empty', function() { + var env = {}; + env.HTTPS_PROXY = 'http://proxy'; + + // NO_PROXY set but empty. + env.NO_PROXY = ''; + testProxyUrl(env, 'http://proxy', 'https://example'); + + // No entries in NO_PROXY (comma). + env.NO_PROXY = ','; + testProxyUrl(env, 'http://proxy', 'https://example'); + + // No entries in NO_PROXY (whitespace). + env.NO_PROXY = ' '; + testProxyUrl(env, 'http://proxy', 'https://example'); + + // No entries in NO_PROXY (multiple whitespace / commas). + env.NO_PROXY = ',\t,,,\n, ,\r'; + testProxyUrl(env, 'http://proxy', 'https://example'); + }); + + describe('no_proxy=example (single host)', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = 'example'; + testProxyUrl(env, '', 'http://example'); + testProxyUrl(env, '', 'http://example:80'); + testProxyUrl(env, '', 'http://example:0'); + testProxyUrl(env, '', 'http://example:1337'); + testProxyUrl(env, 'http://proxy', 'http://sub.example'); + testProxyUrl(env, 'http://proxy', 'http://prefexample'); + testProxyUrl(env, 'http://proxy', 'http://example.no'); + testProxyUrl(env, 'http://proxy', 'http://a.b.example'); + testProxyUrl(env, 'http://proxy', 'http://host/example'); + }); + + describe('no_proxy=sub.example (subdomain)', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = 'sub.example'; + testProxyUrl(env, 'http://proxy', 'http://example'); + testProxyUrl(env, 'http://proxy', 'http://example:80'); + testProxyUrl(env, 'http://proxy', 'http://example:0'); + testProxyUrl(env, 'http://proxy', 'http://example:1337'); + testProxyUrl(env, '', 'http://sub.example'); + testProxyUrl(env, 'http://proxy', 'http://no.sub.example'); + testProxyUrl(env, 'http://proxy', 'http://sub-example'); + testProxyUrl(env, 'http://proxy', 'http://example.sub'); + }); + + describe('no_proxy=example:80 (host + port)', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = 'example:80'; + testProxyUrl(env, '', 'http://example'); + testProxyUrl(env, '', 'http://example:80'); + testProxyUrl(env, '', 'http://example:0'); + testProxyUrl(env, 'http://proxy', 'http://example:1337'); + testProxyUrl(env, 'http://proxy', 'http://sub.example'); + testProxyUrl(env, 'http://proxy', 'http://prefexample'); + testProxyUrl(env, 'http://proxy', 'http://example.no'); + testProxyUrl(env, 'http://proxy', 'http://a.b.example'); + }); + + describe('no_proxy=.example (host suffix)', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = '.example'; + testProxyUrl(env, 'http://proxy', 'http://example'); + testProxyUrl(env, 'http://proxy', 'http://example:80'); + testProxyUrl(env, 'http://proxy', 'http://example:1337'); + testProxyUrl(env, '', 'http://sub.example'); + testProxyUrl(env, '', 'http://sub.example:80'); + testProxyUrl(env, '', 'http://sub.example:1337'); + testProxyUrl(env, 'http://proxy', 'http://prefexample'); + testProxyUrl(env, 'http://proxy', 'http://example.no'); + testProxyUrl(env, '', 'http://a.b.example'); + }); + + describe('no_proxy=*', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + env.NO_PROXY = '*'; + testProxyUrl(env, '', 'http://example.com'); + }); + + describe('no_proxy=*.example (host suffix with *.)', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = '*.example'; + testProxyUrl(env, 'http://proxy', 'http://example'); + testProxyUrl(env, 'http://proxy', 'http://example:80'); + testProxyUrl(env, 'http://proxy', 'http://example:1337'); + testProxyUrl(env, '', 'http://sub.example'); + testProxyUrl(env, '', 'http://sub.example:80'); + testProxyUrl(env, '', 'http://sub.example:1337'); + testProxyUrl(env, 'http://proxy', 'http://prefexample'); + testProxyUrl(env, 'http://proxy', 'http://example.no'); + testProxyUrl(env, '', 'http://a.b.example'); + }); + + describe('no_proxy=*example (substring suffix)', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = '*example'; + testProxyUrl(env, '', 'http://example'); + testProxyUrl(env, '', 'http://example:80'); + testProxyUrl(env, '', 'http://example:1337'); + testProxyUrl(env, '', 'http://sub.example'); + testProxyUrl(env, '', 'http://sub.example:80'); + testProxyUrl(env, '', 'http://sub.example:1337'); + testProxyUrl(env, '', 'http://prefexample'); + testProxyUrl(env, '', 'http://a.b.example'); + testProxyUrl(env, 'http://proxy', 'http://example.no'); + testProxyUrl(env, 'http://proxy', 'http://host/example'); + }); + + describe('no_proxy=.*example (arbitrary wildcards are NOT supported)', + function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = '.*example'; + testProxyUrl(env, 'http://proxy', 'http://example'); + testProxyUrl(env, 'http://proxy', 'http://sub.example'); + testProxyUrl(env, 'http://proxy', 'http://sub.example'); + testProxyUrl(env, 'http://proxy', 'http://prefexample'); + testProxyUrl(env, 'http://proxy', 'http://x.prefexample'); + testProxyUrl(env, 'http://proxy', 'http://a.b.example'); + }); + + describe('no_proxy=[::1],[::2]:80,10.0.0.1,10.0.0.2:80 (IP addresses)', + function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = '[::1],[::2]:80,10.0.0.1,10.0.0.2:80'; + testProxyUrl(env, '', 'http://[::1]/'); + testProxyUrl(env, '', 'http://[::1]:80/'); + testProxyUrl(env, '', 'http://[::1]:1337/'); + + testProxyUrl(env, '', 'http://[::2]/'); + testProxyUrl(env, '', 'http://[::2]:80/'); + testProxyUrl(env, 'http://proxy', 'http://[::2]:1337/'); + + testProxyUrl(env, '', 'http://10.0.0.1/'); + testProxyUrl(env, '', 'http://10.0.0.1:80/'); + testProxyUrl(env, '', 'http://10.0.0.1:1337/'); + + testProxyUrl(env, '', 'http://10.0.0.2/'); + testProxyUrl(env, '', 'http://10.0.0.2:80/'); + testProxyUrl(env, 'http://proxy', 'http://10.0.0.2:1337/'); + }); + + describe('no_proxy=127.0.0.1/32 (CIDR is NOT supported)', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = '127.0.0.1/32'; + testProxyUrl(env, 'http://proxy', 'http://127.0.0.1'); + testProxyUrl(env, 'http://proxy', 'http://127.0.0.1/32'); + }); + + describe('no_proxy=127.0.0.1 does NOT match localhost', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = '127.0.0.1'; + testProxyUrl(env, '', 'http://127.0.0.1'); + // We're not performing DNS queries, so this shouldn't match. + testProxyUrl(env, 'http://proxy', 'http://localhost'); + }); + + describe('no_proxy with protocols that have a default port', function() { + var env = {}; + env.WS_PROXY = 'http://ws'; + env.WSS_PROXY = 'http://wss'; + env.HTTP_PROXY = 'http://http'; + env.HTTPS_PROXY = 'http://https'; + env.GOPHER_PROXY = 'http://gopher'; + env.FTP_PROXY = 'http://ftp'; + env.ALL_PROXY = 'http://all'; + + env.NO_PROXY = 'xxx:21,xxx:70,xxx:80,xxx:443'; + + testProxyUrl(env, '', 'http://xxx'); + testProxyUrl(env, '', 'http://xxx:80'); + testProxyUrl(env, 'http://http', 'http://xxx:1337'); + + testProxyUrl(env, '', 'ws://xxx'); + testProxyUrl(env, '', 'ws://xxx:80'); + testProxyUrl(env, 'http://ws', 'ws://xxx:1337'); + + testProxyUrl(env, '', 'https://xxx'); + testProxyUrl(env, '', 'https://xxx:443'); + testProxyUrl(env, 'http://https', 'https://xxx:1337'); + + testProxyUrl(env, '', 'wss://xxx'); + testProxyUrl(env, '', 'wss://xxx:443'); + testProxyUrl(env, 'http://wss', 'wss://xxx:1337'); + + testProxyUrl(env, '', 'gopher://xxx'); + testProxyUrl(env, '', 'gopher://xxx:70'); + testProxyUrl(env, 'http://gopher', 'gopher://xxx:1337'); + + testProxyUrl(env, '', 'ftp://xxx'); + testProxyUrl(env, '', 'ftp://xxx:21'); + testProxyUrl(env, 'http://ftp', 'ftp://xxx:1337'); + }); + + describe('no_proxy should not be case-sensitive', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + env.NO_PROXY = 'XXX,YYY,ZzZ'; + + testProxyUrl(env, '', 'http://xxx'); + testProxyUrl(env, '', 'http://XXX'); + testProxyUrl(env, '', 'http://yyy'); + testProxyUrl(env, '', 'http://YYY'); + testProxyUrl(env, '', 'http://ZzZ'); + testProxyUrl(env, '', 'http://zZz'); + }); + + describe('NPM proxy configuration', function() { + describe('npm_config_http_proxy should work', function() { + var env = {}; + // eslint-disable-next-line camelcase + env.npm_config_http_proxy = 'http://http-proxy'; + + testProxyUrl(env, '', 'https://example'); + testProxyUrl(env, 'http://http-proxy', 'http://example'); + + // eslint-disable-next-line camelcase + env.npm_config_http_proxy = 'http://priority'; + testProxyUrl(env, 'http://priority', 'http://example'); + }); + // eslint-disable-next-line max-len + describe('npm_config_http_proxy should take precedence over HTTP_PROXY and npm_config_proxy', function() { + var env = {}; + // eslint-disable-next-line camelcase + env.npm_config_http_proxy = 'http://http-proxy'; + // eslint-disable-next-line camelcase + env.npm_config_proxy = 'http://unexpected-proxy'; + env.HTTP_PROXY = 'http://unexpected-proxy'; + + testProxyUrl(env, 'http://http-proxy', 'http://example'); + }); + describe('npm_config_https_proxy should work', function() { + var env = {}; + // eslint-disable-next-line camelcase + env.npm_config_http_proxy = 'http://unexpected.proxy'; + testProxyUrl(env, '', 'https://example'); + + // eslint-disable-next-line camelcase + env.npm_config_https_proxy = 'http://https-proxy'; + testProxyUrl(env, 'http://https-proxy', 'https://example'); + + // eslint-disable-next-line camelcase + env.npm_config_https_proxy = 'http://priority'; + testProxyUrl(env, 'http://priority', 'https://example'); + }); + // eslint-disable-next-line max-len + describe('npm_config_https_proxy should take precedence over HTTPS_PROXY and npm_config_proxy', function() { + var env = {}; + // eslint-disable-next-line camelcase + env.npm_config_https_proxy = 'http://https-proxy'; + // eslint-disable-next-line camelcase + env.npm_config_proxy = 'http://unexpected-proxy'; + env.HTTPS_PROXY = 'http://unexpected-proxy'; + + testProxyUrl(env, 'http://https-proxy', 'https://example'); + }); + describe('npm_config_proxy should work', function() { + var env = {}; + // eslint-disable-next-line camelcase + env.npm_config_proxy = 'http://http-proxy'; + testProxyUrl(env, 'http://http-proxy', 'http://example'); + testProxyUrl(env, 'http://http-proxy', 'https://example'); + + // eslint-disable-next-line camelcase + env.npm_config_proxy = 'http://priority'; + testProxyUrl(env, 'http://priority', 'http://example'); + testProxyUrl(env, 'http://priority', 'https://example'); + }); + // eslint-disable-next-line max-len + describe('HTTP_PROXY and HTTPS_PROXY should take precedence over npm_config_proxy', function() { + var env = {}; + env.HTTP_PROXY = 'http://http-proxy'; + env.HTTPS_PROXY = 'http://https-proxy'; + // eslint-disable-next-line camelcase + env.npm_config_proxy = 'http://unexpected-proxy'; + testProxyUrl(env, 'http://http-proxy', 'http://example'); + testProxyUrl(env, 'http://https-proxy', 'https://example'); + }); + describe('npm_config_no_proxy should work', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + // eslint-disable-next-line camelcase + env.npm_config_no_proxy = 'example'; + + testProxyUrl(env, '', 'http://example'); + testProxyUrl(env, 'http://proxy', 'http://otherwebsite'); + }); + // eslint-disable-next-line max-len + describe('npm_config_no_proxy should take precedence over NO_PROXY', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + env.NO_PROXY = 'otherwebsite'; + // eslint-disable-next-line camelcase + env.npm_config_no_proxy = 'example'; + + testProxyUrl(env, '', 'http://example'); + testProxyUrl(env, 'http://proxy', 'http://otherwebsite'); + }); + }); +}); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..c6f8f49 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,291 @@ +{ + "name": "e-rights", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "axios": "^1.13.6" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.13.6", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/axios/-/axios-1.13.6.tgz", + "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://artifactory.eeas.europa.eu/artifactory/api/npm/npmjs-virtual/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..7919342 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "axios": "^1.13.6" + } +} diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..9d76545 --- /dev/null +++ b/pom.xml @@ -0,0 +1,109 @@ + + + + 4.0.0 + + + eu.europa.eeas + ananke-tools + 1.9.1 + + + e-rights + 5.0.1 + pom + + e-RIGHTS + EEAS' e-RIGHTS + + + 5.0.1 + 3.6.21 + 1.18.28 + 2.2.37 + 3.11.0 + + + e-rights + ${project.artifactId} + 821955959eb00338d87fa854d4b985a009db79df + + + + + + e-rights-common + e-rights-front-office + e-rights-back-office + + + + + + eu.europa.eeas + e-rights-common + ${e-rights.version} + compile + + + org.projectlombok + lombok + ${lombok.version} + provided + + + org.yaml + snakeyaml + 1.33 + + + + + + + + set-e-rights-version + + + + org.codehaus.mojo + versions-maven-plugin + + + set-version + initialize + + set + + + true + false + ${e-rights-version} + false + + + + set-property + initialize + + set-property + + + true + false + false + ${e-rights-version} + ${project.artifactId}.version + + + + + + + + + + diff --git a/qodana.yaml b/qodana.yaml new file mode 100644 index 0000000..2270886 --- /dev/null +++ b/qodana.yaml @@ -0,0 +1,48 @@ +#-------------------------------------------------------------------------------# +# Qodana analysis is configured by qodana.yaml file # +# https://www.jetbrains.com/help/qodana/qodana-yaml.html # +#-------------------------------------------------------------------------------# + +################################################################################# +# WARNING: Do not store sensitive information in this file, # +# as its contents will be included in the Qodana report. # +################################################################################# +version: "1.0" + +#Specify inspection profile for code analysis +profile: + name: qodana.starter + +#Enable inspections +#include: +# - name: + +#Disable inspections +#exclude: +# - name: +# paths: +# - + +projectJDK: "17" #(Applied in CI/CD pipeline) + +#Execute shell command before Qodana execution (Applied in CI/CD pipeline) +#bootstrap: sh ./prepare-qodana.sh + +#Install IDE plugins before Qodana execution (Applied in CI/CD pipeline) +#plugins: +# - id: #(plugin id can be found at https://plugins.jetbrains.com) + +# Quality gate. Will fail the CI/CD pipeline if any condition is not met +# severityThresholds - configures maximum thresholds for different problem severities +# testCoverageThresholds - configures minimum code coverage on a whole project and newly added code +# Code Coverage is available in Ultimate and Ultimate Plus plans +#failureConditions: +# severityThresholds: +# any: 15 +# critical: 5 +# testCoverageThresholds: +# fresh: 70 +# total: 50 + +#Specify Qodana linter for analysis (Applied in CI/CD pipeline) +linter: jetbrains/qodana-jvm:2025.2 diff --git a/release_notes.txt b/release_notes.txt new file mode 100644 index 0000000..54abce3 --- /dev/null +++ b/release_notes.txt @@ -0,0 +1,62 @@ +2.11 + TUD web services skyscanner +2.10 + edms rest services + ABAC payment fixes + +2.9.2 + Get Bank Accounts from abac using NUP +2.9.1 + Update password for abac local users in PRD + +2.9.0 + ABAC integration + +2.8.0 + New airfright volume ceiling + HOD and EIS options prorata + +2.7.0 + HOD options + New transition status for movement files + Entry into storage + +2.6.0 + Instalation Allowance + Abac Invoice and Payments + +2.5.0 + - Total Reimburment + - Clearing Request +2.4.0 + - Request Resport List + - HoA Access + - improvements in removal grid: + cap parcial and totals + allow modification of total 90% advance + + +2.3.0 + + - Advance Removal Request + - List of empty entitlements + +2.2.1 + - Fix bug uploading Documents + +2.2.0 + - management of TUD requests + - Guidelines + - update ananke 1.8 + +2.1.0 + - management of declaration + - update of declaration + +2.0.0 + -split system in 2 front end back end + -management of entitlements + +1.0.0 + - management of movement file + - list of movement files \ No newline at end of file diff --git a/tmp/pacc_budgetlines.csv b/tmp/pacc_budgetlines.csv new file mode 100644 index 0000000..682caa6 --- /dev/null +++ b/tmp/pacc_budgetlines.csv @@ -0,0 +1,157 @@ +"BUDGET_LINES_SUBPOSTS_MAPPING_ID","BUDGET_LINES","BUDGET_POSITION_BUDGDEL","BUDGET_POSITION_ERIGHTS","FUND_SOURCE","REQUEST_TYPE","STATUTORY_LINK","SUBPOST_CODE","SUBPOST_DESCRIPTION","PERSONNEL_TYPE_ID","LST_CD","SUBPOST_TYPE","MOVEMENT_CONTEXT","COMMITMENT_LVL_4","EARMARKED_FUND","SUMMA_FUND_SOURCE_ID","BUDGET_PERIODS","DEFAULT_EARMARKED_FUND" +10030,"3005.0101RTD","3005.0101RTD","3005.01.01.RTD","IAR1/1","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019176",3,"2025","N" +10033,"3005.0101RTD","3005.0101RTD","3005.01.01.RTD","IAR1/1","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100015905",3,"2026","Y" +10031,"3005.0101RTD","3005.0101RTD","3005.01.01.RTD","IAR1/1","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100015905",3,"2026","Y" +10032,"3005.0101RTD","3005.0101RTD","3005.01.01.RTD","IAR1/1","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100015905",3,"2026","Y" +10034,"3005.0220CNT","3005.02.20.CNT","3005.02.20.CNT","IAR1/1","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100017543",3,"2025","Y" +10035,"3005.0220CNT","3005.02.20.CNT","3005.02.20.CNT","IAR1/1","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100017543",3,"2025","Y" +10039,"3005.0801MAR","3005.0801MAR","3005.08.01.MAR","IAR1/1","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019177",3,"2025","N" +10037,"3005.0801MAR","3005.0801MAR","3005.08.01.MAR","IAR1/1","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019177",3,"2025","N" +10038,"3005.0801MAR","3005.0801MAR","3005.08.01.MAR","IAR1/1","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019177",3,"2025","N" +10045,"3005.1401EST","3005.1401EST","3005.14.01.EST","IAR2/2","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100014840",2,"2026","Y" +10044,"3005.1401EST","3005.1401EST","3005.14.01.EST","IAR2/2","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100014840",2,"2026","Y" +10043,"3005.1401EST","3005.1401EST","3005.14.01.EST","IAR2/2","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100014840",2,"2026","Y" +10052,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019179-24",2,"2024","N" +10077,"3005.1501EST","3005.1501EST","3005.15.01.EST","EARN/N","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100014067",4,"2026","N" +1000844,"3002","3002","3000-C1-EEAS","VOBU","REM","Officials and CA","01","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","MISION","333-MISION",1,"2025","N" +1000744,"3002","3002","3000-C1-EEAS","VOBU","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","MISION","333-MISION",1,"2025","N" +1000944,"3002","3002","3000-C1-EEAS","VOBU","REM","Officials and CA","01","STORAGE OF FURNITURE",1,"FP","STORAGE","","MISION","333-MISION",1,"2025","N" +10097,"3005.1601EST","3005.1601EST","3005.16.01.EST","IAR2/2","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100015578",2,"2026","Y" +10098,"3005.1601EST","3005.1601EST","3005.16.01.EST","IAR2/2","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100015578",2,"2026","Y" +10099,"3005.1601EST","3005.1601EST","3005.16.01.EST","IAR2/2","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100015578",2,"2026","Y" +10100,"3005.1601NEA","3005.1601NEA","3005.16.01.NEA","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100018576",2,"2025","Y" +10101,"3005.1601NEA","3005.1601NEA","3005.16.01.NEA","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100018576",2,"2025","Y" +10102,"3005.1601NEA","3005.1601NEA","3005.16.01.NEA","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100018576",2,"2025","Y" +10106,"3005.16T4MEN","3005.16T4MEN","3005.16.T4.MEN","EARN/N","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100014075",4,"2026","Y" +10108,"3005.16T4MEN","3005.16T4MEN","3005.16.T4.MEN","EARN/N","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100014075",4,"2026","Y" +10107,"3005.16T4MEN","3005.16T4MEN","3005.16.T4.MEN","EARN/N","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100014075",4,"2026","Y" +10110,"3005.16T4NEA-R0","3005.16T4NEA","3005.16.T4.MEN-R0","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100017541",4,"2025","Y" +10109,"3005.16T4NEA-R0","3005.16T4NEA","3005.16.T4.MEN-R0","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100017541",4,"2025","Y" +10111,"3005.16T4NEA-R0","3005.16T4NEA","3005.16.T4.MEN-R0","EARN/N","REM","Officials and CA","03","EXPAT STAFF - STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100017541",4,"2025","Y" +10103,"3005.16T3INT","3005.16T3INT","3005.16.T3.INT","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019024",4,"2025","Y" +10104,"3005.16T3INT","3005.16T3INT","3005.16.T3.INT","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019024",4,"2025","Y" +10105,"3005.16T3INT","3005.16T3INT","3005.16.T3.INT","EARN/N","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019024",4,"2025","Y" +10113,"3005.16T4NEA","3005.16T4NEA","3005.16.T4.NEA","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019002",4,"2025","N" +10114,"3005.16T4NEA","3005.16T4NEA","3005.16.T4.NEA","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019002",4,"2025","N" +10112,"3005.16T4NEA","3005.16T4NEA","3005.16.T4.NEA","EARN/N","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019002",4,"2025","N" +10116,"3005.16T4NEA","3005.16T4NEA","3005.16.T4.NEA","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100017541",4,"2025","Y" +10115,"3005.16T4NEA","3005.16T4NEA","3005.16.T4.NEA","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100017541",4,"2025","Y" +10117,"3005.16T4NEA","3005.16T4NEA","3005.16.T4.NEA","EARN/N","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100017541",4,"2025","Y" +10118,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019001",4,"2025","N" +10119,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019001",4,"2025","N" +10120,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019001",4,"2025","N" +10036,"3005.0220CNT","3005.02.20.CNT","3005.02.20.CNT","IAR1/1","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100017543",3,"2025","Y" +10123,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100017540",4,"2025","N" +10121,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100017540",4,"2025","N" +10122,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100017540",4,"2025","N" +10125,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100014123",4,"2026","Y" +10126,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100014123",4,"2026","Y" +10124,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100014123",4,"2026","Y" +10024,"3002","3002","3002-C1-EEAS","VOBU","REM","CA","08","STORAGE OF FURNITURE",106,"CA","STORAGE","","A6004","3100019148-25-CA",1,"2025","N" +10041,"3005.0801MAR","3005.0801MAR","3005.08.01.MAR","IAR1/1","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100015936",3,"2026","Y" +10040,"3005.0801MAR","3005.0801MAR","3005.08.01.MAR","IAR1/1","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100015936",3,"2026","Y" +10042,"3005.0801MAR","3005.0801MAR","3005.08.01.MAR","IAR1/1","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100015936",3,"2026","Y" +10068,"3005.1401NEA","3005.1401NEA","3005.14.01.NEA","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100018644",2,"2025","Y" +10067,"3005.1401NEA","3005.1401NEA","3005.14.01.NEA","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100018644",2,"2025","Y" +10069,"3005.1401NEA","3005.1401NEA","3005.14.01.NEA","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100018644",2,"2025","Y" +10047,"3005.1401FPI","3005.1401FPI","3005.14.01.FPI","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019178",2,"2024","N" +10046,"3005.1401FPI","3005.1401FPI","3005.14.01.FPI","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019178",2,"2024","N" +10048,"3005.1401FPI","3005.1401FPI","3005.14.01.FPI","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019178",2,"2024","N" +10002,"3002","3002","3000-C1-EEAS","VOBU","TUD","Officials","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","A6004","3100019148-25-FP",1,"2025","N" +10001,"3002","3002","3000-C1-EEAS","VOBU","REM","Officials","03","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","A6004","3100019148-25-FP",1,"2025","N" +10003,"3002","3002","3000-C1-EEAS","VOBU","REM","Officials","04","STORAGE OF FURNITURE",1,"FP","STORAGE","","A6004","3100019148-25-FP",1,"2025","N" +10005,"3002","3002","3000-C1-EEAS","VOBU","TUD","CA","05","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",106,"CA","PERSONAL","","A6004","3100019148-25-CA",1,"2025","N" +10004,"3002","3002","3000-C1-EEAS","VOBU","REM","CA","07","COST OF REMOVAL AND INSURANCE OF REMOVAL",106,"CA","PERSONAL","","A6004","3100019148-25-CA",1,"2025","N" +10006,"3002","3002","3000-C1-EEAS","VOBU","REM","CA","08","STORAGE OF FURNITURE",106,"CA","STORAGE","","A6004","3100019148-25-CA",1,"2025","N" +10007,"3002","3002","3000-C1-EEAS","VOBU","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100012523",1,"2026","Y" +10076,"3005.1501EST","3005.1501EST","3005.15.01.EST","EARN/N","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100014067",4,"2026","N" +10078,"3005.1501EST","3005.1501EST","3005.15.01.EST","EARN/N","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100014067",4,"2026","N" +10131,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.NEA","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019025",4,"2025","N" +10132,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.NEA","EARN/N","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019025",4,"2025","N" +10130,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.NEA","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019025",4,"2025","N" +10133,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.NEA","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100017542",4,"2025","Y" +10134,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.NEA","EARN/N","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100017542",4,"2025","Y" +10135,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.NEA","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100017542",4,"2025","Y" +10136,"3005.16T6INT","3005.16T6INT","3005.16.T6.INT","EARN/N","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","NO_EARMARKED_FUND",4,"2026","Y" +10138,"3005.16T6INT","3005.16T6INT","3005.16.T6.INT","EARN/N","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","NO_EARMARKED_FUND",4,"2026","Y" +10137,"3005.16T6INT","3005.16T6INT","3005.16.T6.INT","EARN/N","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","NO_EARMARKED_FUND",4,"2026","Y" +10053,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019179-24",2,"2024","N" +10054,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019179-24",2,"2024","N" +10060,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019179-25",2,"2025","N" +10059,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019179-25",2,"2025","N" +10058,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019179-25",2,"2025","N" +10050,"3005.1401FPI","3005.1401FPI","3005.14.01.FPI","IAR2/2","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100014878",2,"2026","Y" +10049,"3005.1401FPI","3005.1401FPI","3005.14.01.FPI","IAR2/2","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100014878",2,"2026","Y" +10051,"3005.1401FPI","3005.1401FPI","3005.14.01.FPI","IAR2/2","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100014878",2,"2026","Y" +10056,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100015311",2,"2026","Y" +10055,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100015311",2,"2026","Y" +10057,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100015311",2,"2026","Y" +10061,"3005.1401MEN","3005.1401MEN","3005.14.01.MEN","IAR2/2","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100015495",2,"2026","Y" +10062,"3005.1401MEN","3005.1401MEN","3005.14.01.MEN","IAR2/2","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100015495",2,"2026","Y" +10063,"3005.1401MEN","3005.1401MEN","3005.14.01.MEN","IAR2/2","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100015495",2,"2026","Y" +10064,"3005.1401NEA","3005.1401NEA","3005.14.01.NEA","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019180",2,"2025","N" +10066,"3005.1401NEA","3005.1401NEA","3005.14.01.NEA","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019180",2,"2025","N" +10065,"3005.1401NEA","3005.1401NEA","3005.14.01.NEA","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019180",2,"2025","N" +10072,"3005.1501AGR","3005.1501AGR","3005.15.01.AGR","IAR2/2","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100015517",2,"2026","Y" +10070,"3005.1501AGR","3005.1501AGR","3005.15.01.AGR","IAR2/2","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100015517",2,"2026","Y" +10071,"3005.1501AGR","3005.1501AGR","3005.15.01.AGR","IAR2/2","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100015517",2,"2026","Y" +10084,"3005.1501NEA","3005.1501NEA","3005.15.01.NEA","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019173-25",2,"2025","Y" +10082,"3005.1501NEA","3005.1501NEA","3005.15.01.NEA","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019173-25",2,"2025","Y" +10083,"3005.1501NEA","3005.1501NEA","3005.15.01.NEA","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019173-25",2,"2025","Y" +10128,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.MEN","EARN/N","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","NO_EARMARKED_FUND",4,"2026","Y" +10127,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.MEN","EARN/N","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","NO_EARMARKED_FUND",4,"2026","Y" +10129,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.MEN","EARN/N","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","NO_EARMARKED_FUND",4,"2026","Y" +10143,"3005.2001INT","3005.2001INT","3005.20.01.INT","IAR1/1","TUD","Officials","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3104","3100019175",3,"2025","N" +10142,"3005.2001INT","3005.2001INT","3005.20.01.INT","IAR1/1","REM","Officials","03","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3104","3100019175",3,"2025","N" +10144,"3005.2001INT","3005.2001INT","3005.20.01.INT","IAR1/1","REM","Officials","04","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3104","3100019175",3,"2025","N" +10016,"3002","3002","3001-C1-EEAS","VOBU","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100012523",1,"2026","Y" +10012,"3002","3002","3001-C1-EEAS","VOBU","REM","Officials","04","STORAGE OF FURNITURE",1,"FP","STORAGE","","A6004","3100019148-25-FP",1,"2025","N" +10011,"3002","3002","3001-C1-EEAS","VOBU","TUD","Officials","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","A6004","3100019148-25-FP",1,"2025","N" +10010,"3002","3002","3001-C1-EEAS","VOBU","REM","Officials","03","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","A6004","3100019148-25-FP",1,"2025","N" +10015,"3002","3002","3001-C1-EEAS","VOBU","REM","CA","08","STORAGE OF FURNITURE",106,"CA","STORAGE","","A6004","3100019148-25-CA",1,"2025","N" +10013,"3002","3002","3001-C1-EEAS","VOBU","REM","CA","07","COST OF REMOVAL AND INSURANCE OF REMOVAL",106,"CA","PERSONAL","","A6004","3100019148-25-CA",1,"2025","N" +10014,"3002","3002","3001-C1-EEAS","VOBU","TUD","CA","05","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",106,"CA","PERSONAL","","A6004","3100019148-25-CA",1,"2025","N" +10139,"3005.2001INT","3005.2001INT","3005.20.01.INT","IAR1/1","TUD","Officials","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100014169",3,"2026","Y" +10140,"3005.2001INT","3005.2001INT","3005.20.01.INT","IAR1/1","REM","Officials","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100014169",3,"2026","Y" +10141,"3005.2001INT","3005.2001INT","3005.20.01.INT","IAR1/1","REM","Officials","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100014169",3,"2026","Y" +10145,"3005.2002INT","3005.2002INT","3005.20.02.INT","IAR1/1","TUD","CA","05","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",106,"CA","PERSONAL","","B3203","3100019183",3,"2025","N" +10146,"3005.2002INT","3005.2002INT","3005.20.02.INT","IAR1/1","REM","CA","07","COST OF REMOVAL AND INSURANCE OF REMOVAL",106,"CA","PERSONAL","","B3203","3100019183",3,"2025","N" +10147,"3005.2002INT","3005.2002INT","3005.20.02.INT","IAR1/1","REM","CA","08","STORAGE OF FURNITURE",106,"CA","STORAGE","","B3203","3100019183",3,"2025","N" +10148,"3005.2002INT","3005.2002INT","3005.20.02.INT","IAR1/1","REM","CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",106,"CA","PERSONAL","","ROTCST","3100014517",3,"2026","Y" +10149,"3005.2002INT","3005.2002INT","3005.20.02.INT","IAR1/1","REM","CA","52","STORAGE OF FURNITURE",106,"CA","STORAGE","","ROTCST","3100014517",3,"2026","Y" +10150,"3005.2002INT","3005.2002INT","3005.20.02.INT","IAR1/1","TUD","CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",106,"CA","PERSONAL","","ROTCST","3100014517",3,"2026","Y" +10151,"3005.2003OLA","3005.2003OLA","3005.20.03.OLA","IAR1/1","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100017567",3,"2025","Y" +10152,"3005.2003OLA","3005.2003OLA","3005.20.03.OLA","IAR1/1","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100017567",3,"2025","Y" +10153,"3005.2003OLA","3005.2003OLA","3005.20.03.OLA","IAR1/1","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100017567",3,"2025","Y" +10008,"3002","3002","3000-C1-EEAS","VOBU","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100012523",1,"2026","Y" +10009,"3002","3002","3000-C1-EEAS","VOBU","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100012523",1,"2026","Y" +10086,"3005.1501NEA","3005.1501NEA","3005.15.01.NEA","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019173-24",2,"2024","N" +10085,"3005.1501NEA","3005.1501NEA","3005.15.01.NEA","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019173-24",2,"2024","N" +10087,"3005.1501NEA","3005.1501NEA","3005.15.01.NEA","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019173-24",2,"2024","N" +10089,"3005.15.01.NEA-RO","3005.1501NEA","3005.15.01.NEA.R0","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019003",4,"2025","Y" +10088,"3005.15.01.NEA-RO","3005.1501NEA","3005.15.01.NEA.R0","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019003",4,"2025","Y" +10090,"3005.15.01.NEA-RO","3005.1501NEA","3005.15.01.NEA.R0","EARN/N","REM","Officials and CA","03","EXPAT STAFF - STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019003",4,"2025","Y" +10091,"3005.1502EST","3005.1502EST","3005.15.02.EST","IAR2/2","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100015565",2,"2026","Y" +10092,"3005.1502EST","3005.1502EST","3005.15.02.EST","IAR2/2","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100015565",2,"2026","Y" +10093,"3005.1502EST","3005.1502EST","3005.15.02.EST","IAR2/2","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100015565",2,"2026","Y" +10094,"3005.1502NEA","3005.1502NEA","3005.15.02.NEA","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100018735",2,"2025","Y" +10095,"3005.1502NEA","3005.1502NEA","3005.15.02.NEA","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100018735",2,"2025","Y" +10096,"3005.1502NEA","3005.1502NEA","3005.15.02.NEA","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100018735",2,"2025","Y" +10079,"3005.15.01.EST.R0","3005.1501NEA","3005.15.01.EST.R0","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019174",4,"2025","Y" +10080,"3005.15.01.EST.R0","3005.1501NEA","3005.15.01.EST.R0","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019174",4,"2025","Y" +10081,"3005.15.01.EST.R0","3005.1501NEA","3005.15.01.EST.R0","EARN/N","REM","Officials and CA","03","EXPAT STAFF - STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019174",4,"2025","Y" +10074,"3005.1501EST","3005.1501EST","3005.15.01.EST","IAR2/2","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100015551",2,"2026","Y" +10073,"3005.1501EST","3005.1501EST","3005.15.01.EST","IAR2/2","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100015551",2,"2026","Y" +10075,"3005.1501EST","3005.1501EST","3005.15.01.EST","IAR2/2","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100015551",2,"2026","Y" +10017,"3002","3002","3001-C1-EEAS","VOBU","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100012523",1,"2026","Y" +10018,"3002","3002","3001-C1-EEAS","VOBU","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100012523",1,"2026","Y" +10020,"3002","3002","3002-C1-EEAS","VOBU","REM","Officials","03","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","A6004","3100019148-25-FP",1,"2025","N" +10021,"3002","3002","3002-C1-EEAS","VOBU","REM","Officials","04","STORAGE OF FURNITURE",1,"FP","STORAGE","","A6004","3100019148-25-FP",1,"2025","N" +10019,"3002","3002","3002-C1-EEAS","VOBU","TUD","Officials","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","A6004","3100019148-25-FP",1,"2025","N" +10022,"3002","3002","3002-C1-EEAS","VOBU","TUD","CA","05","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",106,"CA","PERSONAL","","A6004","3100019148-25-CA",1,"2025","N" +10023,"3002","3002","3002-C1-EEAS","VOBU","REM","CA","07","COST OF REMOVAL AND INSURANCE OF REMOVAL",106,"CA","PERSONAL","","A6004","3100019148-25-CA",1,"2025","N" +10026,"3002","3002","3002-C1-EEAS","VOBU","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100012523",1,"2026","Y" +10025,"3002","3002","3002-C1-EEAS","VOBU","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100012523",1,"2026","Y" +10027,"3002","3002","3002-C1-EEAS","VOBU","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100012523",1,"2026","Y" +10028,"3005.0101RTD","3005.0101RTD","3005.01.01.RTD","IAR1/1","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019176",3,"2025","N" +10029,"3005.0101RTD","3005.0101RTD","3005.01.01.RTD","IAR1/1","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019176",3,"2025","N" diff --git a/tmp/prd_budgetlines.csv b/tmp/prd_budgetlines.csv new file mode 100644 index 0000000..ab2ed7c --- /dev/null +++ b/tmp/prd_budgetlines.csv @@ -0,0 +1,154 @@ +"BUDGET_LINES_SUBPOSTS_MAPPING_ID","BUDGET_LINES","BUDGET_POSITION_BUDGDEL","BUDGET_POSITION_ERIGHTS","FUND_SOURCE","REQUEST_TYPE","STATUTORY_LINK","SUBPOST_CODE","SUBPOST_DESCRIPTION","PERSONNEL_TYPE_ID","LST_CD","SUBPOST_TYPE","MOVEMENT_CONTEXT","COMMITMENT_LVL_4","EARMARKED_FUND","SUMMA_FUND_SOURCE_ID","BUDGET_PERIODS","DEFAULT_EARMARKED_FUND" +10030,"3005.0101RTD","3005.0101RTD","3005.01.01.RTD","IAR1/1","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019176",3,"2025","N" +10033,"3005.0101RTD","3005.0101RTD","3005.01.01.RTD","IAR1/1","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100015905",3,"2026","Y" +10031,"3005.0101RTD","3005.0101RTD","3005.01.01.RTD","IAR1/1","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100015905",3,"2026","Y" +10032,"3005.0101RTD","3005.0101RTD","3005.01.01.RTD","IAR1/1","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100015905",3,"2026","Y" +10034,"3005.0220CNT","3005.02.20.CNT","3005.02.20.CNT","IAR1/1","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100017543",3,"2025","Y" +10035,"3005.0220CNT","3005.02.20.CNT","3005.02.20.CNT","IAR1/1","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100017543",3,"2025","Y" +10039,"3005.0801MAR","3005.0801MAR","3005.08.01.MAR","IAR1/1","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019177",3,"2025","N" +10037,"3005.0801MAR","3005.0801MAR","3005.08.01.MAR","IAR1/1","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019177",3,"2025","N" +10038,"3005.0801MAR","3005.0801MAR","3005.08.01.MAR","IAR1/1","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019177",3,"2025","N" +10045,"3005.1401EST","3005.1401EST","3005.14.01.EST","IAR2/2","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100014840",2,"2026","Y" +10044,"3005.1401EST","3005.1401EST","3005.14.01.EST","IAR2/2","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100014840",2,"2026","Y" +10043,"3005.1401EST","3005.1401EST","3005.14.01.EST","IAR2/2","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100014840",2,"2026","Y" +10052,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019179-24",2,"2024","N" +10077,"3005.1501EST","3005.1501EST","3005.15.01.EST","EARN/N","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100014067",4,"2026","N" +10097,"3005.1601EST","3005.1601EST","3005.16.01.EST","IAR2/2","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100015578",2,"2026","Y" +10098,"3005.1601EST","3005.1601EST","3005.16.01.EST","IAR2/2","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100015578",2,"2026","Y" +10099,"3005.1601EST","3005.1601EST","3005.16.01.EST","IAR2/2","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100015578",2,"2026","Y" +10100,"3005.1601NEA","3005.1601NEA","3005.16.01.NEA","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100018576",2,"2025","Y" +10101,"3005.1601NEA","3005.1601NEA","3005.16.01.NEA","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100018576",2,"2025","Y" +10102,"3005.1601NEA","3005.1601NEA","3005.16.01.NEA","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100018576",2,"2025","Y" +10106,"3005.16T4MEN","3005.16T4MEN","3005.16.T4.MEN","EARN/N","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100014075",4,"2026","Y" +10108,"3005.16T4MEN","3005.16T4MEN","3005.16.T4.MEN","EARN/N","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100014075",4,"2026","Y" +10107,"3005.16T4MEN","3005.16T4MEN","3005.16.T4.MEN","EARN/N","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100014075",4,"2026","Y" +10110,"3005.16T4NEA-R0","3005.16T4NEA","3005.16.T4.MEN-R0","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100017541",4,"2025","Y" +10109,"3005.16T4NEA-R0","3005.16T4NEA","3005.16.T4.MEN-R0","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100017541",4,"2025","Y" +10111,"3005.16T4NEA-R0","3005.16T4NEA","3005.16.T4.MEN-R0","EARN/N","REM","Officials and CA","03","EXPAT STAFF - STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100017541",4,"2025","Y" +10103,"3005.16T3INT","3005.16T3INT","3005.16.T3.INT","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019024",4,"2025","Y" +10104,"3005.16T3INT","3005.16T3INT","3005.16.T3.INT","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019024",4,"2025","Y" +10105,"3005.16T3INT","3005.16T3INT","3005.16.T3.INT","EARN/N","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019024",4,"2025","Y" +10113,"3005.16T4NEA","3005.16T4NEA","3005.16.T4.NEA","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019002",4,"2025","N" +10114,"3005.16T4NEA","3005.16T4NEA","3005.16.T4.NEA","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019002",4,"2025","N" +10112,"3005.16T4NEA","3005.16T4NEA","3005.16.T4.NEA","EARN/N","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019002",4,"2025","N" +10116,"3005.16T4NEA","3005.16T4NEA","3005.16.T4.NEA","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100017541",4,"2025","Y" +10115,"3005.16T4NEA","3005.16T4NEA","3005.16.T4.NEA","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100017541",4,"2025","Y" +10117,"3005.16T4NEA","3005.16T4NEA","3005.16.T4.NEA","EARN/N","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100017541",4,"2025","Y" +10118,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019001",4,"2025","N" +10119,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019001",4,"2025","N" +10120,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019001",4,"2025","N" +10036,"3005.0220CNT","3005.02.20.CNT","3005.02.20.CNT","IAR1/1","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100017543",3,"2025","Y" +10123,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100017540",4,"2025","N" +10121,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100017540",4,"2025","N" +10122,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100017540",4,"2025","N" +10125,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100014123",4,"2026","Y" +10126,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100014123",4,"2026","Y" +10124,"3005.16T5INT","3005.16T5INT","3005.16.T5.INT","EARN/N","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100014123",4,"2026","Y" +10024,"3002","3002","3002-C1-EEAS","VOBU","REM","CA","08","STORAGE OF FURNITURE",106,"CA","STORAGE","","A6004","3100019148-25-CA",1,"2025","N" +10041,"3005.0801MAR","3005.0801MAR","3005.08.01.MAR","IAR1/1","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100015936",3,"2026","Y" +10040,"3005.0801MAR","3005.0801MAR","3005.08.01.MAR","IAR1/1","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100015936",3,"2026","Y" +10042,"3005.0801MAR","3005.0801MAR","3005.08.01.MAR","IAR1/1","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100015936",3,"2026","Y" +10068,"3005.1401NEA","3005.1401NEA","3005.14.01.NEA","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100018644",2,"2025","Y" +10067,"3005.1401NEA","3005.1401NEA","3005.14.01.NEA","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100018644",2,"2025","Y" +10069,"3005.1401NEA","3005.1401NEA","3005.14.01.NEA","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100018644",2,"2025","Y" +10047,"3005.1401FPI","3005.1401FPI","3005.14.01.FPI","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019178",2,"2024","N" +10046,"3005.1401FPI","3005.1401FPI","3005.14.01.FPI","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019178",2,"2024","N" +10048,"3005.1401FPI","3005.1401FPI","3005.14.01.FPI","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019178",2,"2024","N" +10002,"3002","3002","3000-C1-EEAS","VOBU","TUD","Officials","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","A6004","3100019148-25-FP",1,"2025","N" +10001,"3002","3002","3000-C1-EEAS","VOBU","REM","Officials","03","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","A6004","3100019148-25-FP",1,"2025","N" +10003,"3002","3002","3000-C1-EEAS","VOBU","REM","Officials","04","STORAGE OF FURNITURE",1,"FP","STORAGE","","A6004","3100019148-25-FP",1,"2025","N" +10005,"3002","3002","3000-C1-EEAS","VOBU","TUD","CA","05","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",106,"CA","PERSONAL","","A6004","3100019148-25-CA",1,"2025","N" +10004,"3002","3002","3000-C1-EEAS","VOBU","REM","CA","07","COST OF REMOVAL AND INSURANCE OF REMOVAL",106,"CA","PERSONAL","","A6004","3100019148-25-CA",1,"2025","N" +10006,"3002","3002","3000-C1-EEAS","VOBU","REM","CA","08","STORAGE OF FURNITURE",106,"CA","STORAGE","","A6004","3100019148-25-CA",1,"2025","N" +10007,"3002","3002","3000-C1-EEAS","VOBU","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100012523",1,"2026","Y" +10076,"3005.1501EST","3005.1501EST","3005.15.01.EST","EARN/N","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100014067",4,"2026","N" +10078,"3005.1501EST","3005.1501EST","3005.15.01.EST","EARN/N","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100014067",4,"2026","N" +10131,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.NEA","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019025",4,"2025","N" +10132,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.NEA","EARN/N","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019025",4,"2025","N" +10130,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.NEA","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019025",4,"2025","N" +10133,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.NEA","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100017542",4,"2025","Y" +10134,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.NEA","EARN/N","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100017542",4,"2025","Y" +10135,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.NEA","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100017542",4,"2025","Y" +10136,"3005.16T6INT","3005.16T6INT","3005.16.T6.INT","EARN/N","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","NO_EARMARKED_FUND",4,"2026","Y" +10138,"3005.16T6INT","3005.16T6INT","3005.16.T6.INT","EARN/N","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","NO_EARMARKED_FUND",4,"2026","Y" +10137,"3005.16T6INT","3005.16T6INT","3005.16.T6.INT","EARN/N","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","NO_EARMARKED_FUND",4,"2026","Y" +10053,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019179-24",2,"2024","N" +10054,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019179-24",2,"2024","N" +10060,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019179-25",2,"2025","N" +10059,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019179-25",2,"2025","N" +10058,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019179-25",2,"2025","N" +10050,"3005.1401FPI","3005.1401FPI","3005.14.01.FPI","IAR2/2","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100014878",2,"2026","Y" +10049,"3005.1401FPI","3005.1401FPI","3005.14.01.FPI","IAR2/2","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100014878",2,"2026","Y" +10051,"3005.1401FPI","3005.1401FPI","3005.14.01.FPI","IAR2/2","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100014878",2,"2026","Y" +10056,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100015311",2,"2026","Y" +10055,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100015311",2,"2026","Y" +10057,"3005.1401INT","3005.1401INT","3005.14.01.INT","IAR2/2","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100015311",2,"2026","Y" +10061,"3005.1401MEN","3005.1401MEN","3005.14.01.MEN","IAR2/2","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100015495",2,"2026","Y" +10062,"3005.1401MEN","3005.1401MEN","3005.14.01.MEN","IAR2/2","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100015495",2,"2026","Y" +10063,"3005.1401MEN","3005.1401MEN","3005.14.01.MEN","IAR2/2","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100015495",2,"2026","Y" +10064,"3005.1401NEA","3005.1401NEA","3005.14.01.NEA","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019180",2,"2025","N" +10066,"3005.1401NEA","3005.1401NEA","3005.14.01.NEA","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019180",2,"2025","N" +10065,"3005.1401NEA","3005.1401NEA","3005.14.01.NEA","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019180",2,"2025","N" +10072,"3005.1501AGR","3005.1501AGR","3005.15.01.AGR","IAR2/2","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100015517",2,"2026","Y" +10070,"3005.1501AGR","3005.1501AGR","3005.15.01.AGR","IAR2/2","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100015517",2,"2026","Y" +10071,"3005.1501AGR","3005.1501AGR","3005.15.01.AGR","IAR2/2","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100015517",2,"2026","Y" +10084,"3005.1501NEA","3005.1501NEA","3005.15.01.NEA","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019173-25",2,"2025","Y" +10082,"3005.1501NEA","3005.1501NEA","3005.15.01.NEA","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019173-25",2,"2025","Y" +10083,"3005.1501NEA","3005.1501NEA","3005.15.01.NEA","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019173-25",2,"2025","Y" +10128,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.MEN","EARN/N","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","NO_EARMARKED_FUND",4,"2026","Y" +10127,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.MEN","EARN/N","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","NO_EARMARKED_FUND",4,"2026","Y" +10129,"3005.16T5NEA","3005.16T5NEA","3005.16.T5.MEN","EARN/N","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","NO_EARMARKED_FUND",4,"2026","Y" +10143,"3005.2001INT","3005.2001INT","3005.20.01.INT","IAR1/1","TUD","Officials","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3104","3100019175",3,"2025","N" +10142,"3005.2001INT","3005.2001INT","3005.20.01.INT","IAR1/1","REM","Officials","03","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3104","3100019175",3,"2025","N" +10144,"3005.2001INT","3005.2001INT","3005.20.01.INT","IAR1/1","REM","Officials","04","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3104","3100019175",3,"2025","N" +10016,"3002","3002","3001-C1-EEAS","VOBU","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100012523",1,"2026","Y" +10012,"3002","3002","3001-C1-EEAS","VOBU","REM","Officials","04","STORAGE OF FURNITURE",1,"FP","STORAGE","","A6004","3100019148-25-FP",1,"2025","N" +10011,"3002","3002","3001-C1-EEAS","VOBU","TUD","Officials","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","A6004","3100019148-25-FP",1,"2025","N" +10010,"3002","3002","3001-C1-EEAS","VOBU","REM","Officials","03","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","A6004","3100019148-25-FP",1,"2025","N" +10015,"3002","3002","3001-C1-EEAS","VOBU","REM","CA","08","STORAGE OF FURNITURE",106,"CA","STORAGE","","A6004","3100019148-25-CA",1,"2025","N" +10013,"3002","3002","3001-C1-EEAS","VOBU","REM","CA","07","COST OF REMOVAL AND INSURANCE OF REMOVAL",106,"CA","PERSONAL","","A6004","3100019148-25-CA",1,"2025","N" +10014,"3002","3002","3001-C1-EEAS","VOBU","TUD","CA","05","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",106,"CA","PERSONAL","","A6004","3100019148-25-CA",1,"2025","N" +10139,"3005.2001INT","3005.2001INT","3005.20.01.INT","IAR1/1","TUD","Officials","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100014169",3,"2026","Y" +10140,"3005.2001INT","3005.2001INT","3005.20.01.INT","IAR1/1","REM","Officials","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100014169",3,"2026","Y" +10141,"3005.2001INT","3005.2001INT","3005.20.01.INT","IAR1/1","REM","Officials","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100014169",3,"2026","Y" +10145,"3005.2002INT","3005.2002INT","3005.20.02.INT","IAR1/1","TUD","CA","05","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",106,"CA","PERSONAL","","B3203","3100019183",3,"2025","N" +10146,"3005.2002INT","3005.2002INT","3005.20.02.INT","IAR1/1","REM","CA","07","COST OF REMOVAL AND INSURANCE OF REMOVAL",106,"CA","PERSONAL","","B3203","3100019183",3,"2025","N" +10147,"3005.2002INT","3005.2002INT","3005.20.02.INT","IAR1/1","REM","CA","08","STORAGE OF FURNITURE",106,"CA","STORAGE","","B3203","3100019183",3,"2025","N" +10148,"3005.2002INT","3005.2002INT","3005.20.02.INT","IAR1/1","REM","CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",106,"CA","PERSONAL","","ROTCST","3100014517",3,"2026","Y" +10149,"3005.2002INT","3005.2002INT","3005.20.02.INT","IAR1/1","REM","CA","52","STORAGE OF FURNITURE",106,"CA","STORAGE","","ROTCST","3100014517",3,"2026","Y" +10150,"3005.2002INT","3005.2002INT","3005.20.02.INT","IAR1/1","TUD","CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",106,"CA","PERSONAL","","ROTCST","3100014517",3,"2026","Y" +10151,"3005.2003OLA","3005.2003OLA","3005.20.03.OLA","IAR1/1","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100017567",3,"2025","Y" +10152,"3005.2003OLA","3005.2003OLA","3005.20.03.OLA","IAR1/1","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100017567",3,"2025","Y" +10153,"3005.2003OLA","3005.2003OLA","3005.20.03.OLA","IAR1/1","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100017567",3,"2025","Y" +10008,"3002","3002","3000-C1-EEAS","VOBU","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100012523",1,"2026","Y" +10009,"3002","3002","3000-C1-EEAS","VOBU","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100012523",1,"2026","Y" +10086,"3005.1501NEA","3005.1501NEA","3005.15.01.NEA","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019173-24",2,"2024","N" +10085,"3005.1501NEA","3005.1501NEA","3005.15.01.NEA","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019173-24",2,"2024","N" +10087,"3005.1501NEA","3005.1501NEA","3005.15.01.NEA","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019173-24",2,"2024","N" +10089,"3005.15.01.NEA-RO","3005.1501NEA","3005.15.01.NEA.R0","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019003",4,"2025","Y" +10088,"3005.15.01.NEA-RO","3005.1501NEA","3005.15.01.NEA.R0","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019003",4,"2025","Y" +10090,"3005.15.01.NEA-RO","3005.1501NEA","3005.15.01.NEA.R0","EARN/N","REM","Officials and CA","03","EXPAT STAFF - STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019003",4,"2025","Y" +10091,"3005.1502EST","3005.1502EST","3005.15.02.EST","IAR2/2","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100015565",2,"2026","Y" +10092,"3005.1502EST","3005.1502EST","3005.15.02.EST","IAR2/2","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100015565",2,"2026","Y" +10093,"3005.1502EST","3005.1502EST","3005.15.02.EST","IAR2/2","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100015565",2,"2026","Y" +10094,"3005.1502NEA","3005.1502NEA","3005.15.02.NEA","IAR2/2","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100018735",2,"2025","Y" +10095,"3005.1502NEA","3005.1502NEA","3005.15.02.NEA","IAR2/2","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100018735",2,"2025","Y" +10096,"3005.1502NEA","3005.1502NEA","3005.15.02.NEA","IAR2/2","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100018735",2,"2025","Y" +10079,"3005.15.01.EST.R0","3005.1501NEA","3005.15.01.EST.R0","EARN/N","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019174",4,"2025","Y" +10080,"3005.15.01.EST.R0","3005.1501NEA","3005.15.01.EST.R0","EARN/N","REM","Officials and CA","02","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","B3401","3100019174",4,"2025","Y" +10081,"3005.15.01.EST.R0","3005.1501NEA","3005.15.01.EST.R0","EARN/N","REM","Officials and CA","03","EXPAT STAFF - STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019174",4,"2025","Y" +10074,"3005.1501EST","3005.1501EST","3005.15.01.EST","IAR2/2","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100015551",2,"2026","Y" +10073,"3005.1501EST","3005.1501EST","3005.15.01.EST","IAR2/2","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100015551",2,"2026","Y" +10075,"3005.1501EST","3005.1501EST","3005.15.01.EST","IAR2/2","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100015551",2,"2026","Y" +10017,"3002","3002","3001-C1-EEAS","VOBU","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100012523",1,"2026","Y" +10018,"3002","3002","3001-C1-EEAS","VOBU","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100012523",1,"2026","Y" +10020,"3002","3002","3002-C1-EEAS","VOBU","REM","Officials","03","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","A6004","3100019148-25-FP",1,"2025","N" +10021,"3002","3002","3002-C1-EEAS","VOBU","REM","Officials","04","STORAGE OF FURNITURE",1,"FP","STORAGE","","A6004","3100019148-25-FP",1,"2025","N" +10019,"3002","3002","3002-C1-EEAS","VOBU","TUD","Officials","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","A6004","3100019148-25-FP",1,"2025","N" +10022,"3002","3002","3002-C1-EEAS","VOBU","TUD","CA","05","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",106,"CA","PERSONAL","","A6004","3100019148-25-CA",1,"2025","N" +10023,"3002","3002","3002-C1-EEAS","VOBU","REM","CA","07","COST OF REMOVAL AND INSURANCE OF REMOVAL",106,"CA","PERSONAL","","A6004","3100019148-25-CA",1,"2025","N" +10026,"3002","3002","3002-C1-EEAS","VOBU","REM","Officials and CA","50","COST OF REMOVAL AND INSURANCE OF REMOVAL",1,"FP","PERSONAL","","ROTCST","3100012523",1,"2026","Y" +10025,"3002","3002","3002-C1-EEAS","VOBU","TUD","Officials and CA","51","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","ROTCST","3100012523",1,"2026","Y" +10027,"3002","3002","3002-C1-EEAS","VOBU","REM","Officials and CA","52","STORAGE OF FURNITURE",1,"FP","STORAGE","","ROTCST","3100012523",1,"2026","Y" +10028,"3005.0101RTD","3005.0101RTD","3005.01.01.RTD","IAR1/1","REM","Officials and CA","03","STORAGE OF FURNITURE",1,"FP","STORAGE","","B3401","3100019176",3,"2025","N" +10029,"3005.0101RTD","3005.0101RTD","3005.01.01.RTD","IAR1/1","TUD","Officials and CA","01","TRAVEL COSTS FOR THE PURPOSE OF ROTATION",1,"FP","PERSONAL","","B3401","3100019176",3,"2025","N"